From 09777af5463f6ac2566cefbfa15a3fcaf87fc0ea Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Fri, 14 Nov 2014 13:48:30 +0000 Subject: [PATCH] fpspreadsheet: Add actions for number format, word wrap and text direction. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3724 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- .../fpspreadsheet/examples/fpsctrls/main.lfm | 1476 ++++++++++++++++- .../fpspreadsheet/examples/fpsctrls/main.pas | 56 + .../examples/fpsctrls_no_install/main.lfm | 101 +- .../examples/fpsctrls_no_install/main.pas | 191 +++ components/fpspreadsheet/fpsactions.pas | 228 ++- components/fpspreadsheet/fpsutils.pas | 7 +- 6 files changed, 2030 insertions(+), 29 deletions(-) diff --git a/components/fpspreadsheet/examples/fpsctrls/main.lfm b/components/fpspreadsheet/examples/fpsctrls/main.lfm index 6f793427e..7b210ad68 100644 --- a/components/fpspreadsheet/examples/fpsctrls/main.lfm +++ b/components/fpspreadsheet/examples/fpsctrls/main.lfm @@ -4,7 +4,7 @@ object Form1: TForm1 Top = 242 Width = 925 Caption = 'Form1' - ClientHeight = 580 + ClientHeight = 575 ClientWidth = 925 Menu = MainMenu LCLVersion = '1.3' @@ -29,7 +29,7 @@ object Form1: TForm1 end object CellIndicator: TsCellIndicator Left = 95 - Height = 23 + Height = 28 Top = 9 Width = 80 TabOrder = 1 @@ -38,7 +38,7 @@ object Form1: TForm1 end object CellEdit: TsCellEdit Left = 184 - Height = 23 + Height = 28 Top = 9 Width = 731 Anchors = [akTop, akLeft, akRight] @@ -49,7 +49,7 @@ object Form1: TForm1 end object WorkbookTabControl: TsWorkbookTabControl Left = 0 - Height = 512 + Height = 507 Top = 68 Width = 672 TabIndex = 0 @@ -61,8 +61,8 @@ object Form1: TForm1 WorkbookSource = WorkbookSource object WorksheetGrid: TsWorksheetGrid Left = 2 - Height = 487 - Top = 23 + Height = 477 + Top = 28 Width = 668 FrozenCols = 0 FrozenRows = 0 @@ -115,7 +115,7 @@ object Form1: TForm1 end object InspectorTabControl: TTabControl Left = 677 - Height = 512 + Height = 507 Top = 68 Width = 248 OnChange = InspectorTabControlChange @@ -130,8 +130,8 @@ object Form1: TForm1 TabOrder = 2 object Inspector: TsSpreadsheetInspector Left = 2 - Height = 487 - Top = 23 + Height = 477 + Top = 28 Width = 244 Align = alClient RowCount = 25 @@ -143,7 +143,7 @@ object Form1: TForm1 'Options=boAutoCalc, boCalcBeforeSaving, boReadFormulas' 'FormatSettings=' ' ThousandSeparator=.' - ' DecimalSeparator=.' + ' DecimalSeparator=,' ' ListSeparator=;' ' DateSeparator=.' ' TimeSeparator=:' @@ -169,14 +169,14 @@ object Form1: TForm1 WorkbookSource = WorkbookSource Mode = imWorkbook ColWidths = ( - 111 - 112 + 109 + 110 ) end end object Splitter1: TSplitter Left = 672 - Height = 512 + Height = 507 Top = 68 Width = 5 Align = alRight @@ -214,7 +214,7 @@ object Form1: TForm1 Style = tbsDivider end object ToolButton5: TToolButton - Left = 323 + Left = 491 Top = 2 Action = AcFileExit end @@ -300,6 +300,51 @@ object Form1: TForm1 Caption = 'ToolButton19' Style = tbsDivider end + object ToolButton20: TToolButton + Left = 323 + Top = 2 + Caption = 'ToolButton20' + DropdownMenu = PuNumFormat + ImageIndex = 15 + Style = tbsDropDown + end + object ToolButton21: TToolButton + Left = 381 + Top = 2 + Caption = 'ToolButton21' + DropdownMenu = PuCurrencyFormat + ImageIndex = 17 + Style = tbsDropDown + end + object ToolButton22: TToolButton + Left = 358 + Top = 2 + Action = AcNumFormatPercentage + end + object ToolButton23: TToolButton + Left = 486 + Height = 22 + Top = 2 + Width = 5 + Caption = 'ToolButton23' + Style = tbsDivider + end + object ToolButton24: TToolButton + Left = 416 + Top = 2 + Caption = 'ToolButton24' + DropdownMenu = PuDateFormat + ImageIndex = 18 + Style = tbsDropDown + end + object ToolButton25: TToolButton + Left = 451 + Top = 2 + Caption = 'ToolButton25' + DropdownMenu = PuTimeFormat + ImageIndex = 19 + Style = tbsDropDown + end end object WorkbookSource: TsWorkbookSource AutoDetectFormat = False @@ -426,12 +471,149 @@ object Form1: TForm1 ImageIndex = 10 HorAlignment = haRight end + object AcWordWrap: TsWordwrapAction + Category = 'FPSpreadsheet' + WorkbookSource = WorkbookSource + Caption = 'AcWordWrap' + Hint = 'Word-wrapped text' + end + object AcTextRotHor: TsTextRotationAction + Category = 'FPSpreadsheet' + WorkbookSource = WorkbookSource + Caption = 'AcTextRotHor' + end + object AcTextRot90CW: TsTextRotationAction + Category = 'FPSpreadsheet' + WorkbookSource = WorkbookSource + Caption = '90° clockwise' + Hint = '90° clockwise rotated text' + TextRotation = rt90DegreeClockwiseRotation + end + object AcTextRot90CCW: TsTextRotationAction + Category = 'FPSpreadsheet' + WorkbookSource = WorkbookSource + Caption = '90° counter-clockwise' + Hint = '90° counter-clockwise rotated text' + TextRotation = rt90DegreeCounterClockwiseRotation + end + object AcTextRotStacked: TsTextRotationAction + Category = 'FPSpreadsheet' + WorkbookSource = WorkbookSource + Caption = 'Stacked' + Hint = 'Vertically stacked horizontal letters' + TextRotation = rtStacked + end + object AcNumFormatGeneral: TsNumberFormatAction + Category = 'FPSpreadsheet' + WorkbookSource = WorkbookSource + Caption = 'Number format' + Hint = 'Number format' + end + object AcNumFormatFixed: TsNumberFormatAction + Category = 'FPSpreadsheet' + WorkbookSource = WorkbookSource + Caption = 'Fixed' + Hint = 'Fixed decimals format' + NumberFormat = nfFixed + end + object AcNumFormatFixedTh: TsNumberFormatAction + Category = 'FPSpreadsheet' + WorkbookSource = WorkbookSource + Caption = 'Fixed w/thousand separator' + Hint = 'Fixed decimal count with thousand separator' + NumberFormat = nfFixedTh + end + object AcNumFormatPercentage: TsNumberFormatAction + Category = 'FPSpreadsheet' + WorkbookSource = WorkbookSource + Caption = 'Percent' + Hint = 'Percent format' + ImageIndex = 16 + NumberFormat = nfPercentage + end + object AcNumFormatCurrency: TsNumberFormatAction + Category = 'FPSpreadsheet' + WorkbookSource = WorkbookSource + Caption = 'Currency' + Hint = 'Currency format' + NumberFormat = nfCurrency + end + object AcNumFormatCurrencyRed: TsNumberFormatAction + Category = 'FPSpreadsheet' + WorkbookSource = WorkbookSource + Caption = 'Currency (red)' + Hint = 'Currency format (negative values in red)' + NumberFormat = nfCurrencyRed + end + object AcNumFormatExp: TsNumberFormatAction + Category = 'FPSpreadsheet' + WorkbookSource = WorkbookSource + Caption = 'Exponential' + Hint = 'Exponential format' + NumberFormat = nfExp + end + object AcNumFormatDateTime: TsNumberFormatAction + Category = 'FPSpreadsheet' + WorkbookSource = WorkbookSource + Caption = 'Date/time' + Hint = 'Date and time' + NumberFormat = nfShortDateTime + end + object AcNumFormatLongDate: TsNumberFormatAction + Category = 'FPSpreadsheet' + WorkbookSource = WorkbookSource + Caption = 'Long date' + Hint = 'Long date format' + NumberFormat = nfLongDate + end + object AcNumFormatShortDate: TsNumberFormatAction + Category = 'FPSpreadsheet' + WorkbookSource = WorkbookSource + Caption = 'Short date' + Hint = 'Short date format' + NumberFormat = nfShortDate + end + object AcNumFormatLongTime: TsNumberFormatAction + Category = 'FPSpreadsheet' + WorkbookSource = WorkbookSource + Caption = 'Long time' + Hint = 'Long time foramt' + NumberFormat = nfLongTime + end + object AcNumFormatShortTime: TsNumberFormatAction + Category = 'FPSpreadsheet' + WorkbookSource = WorkbookSource + Caption = 'Short time' + Hint = 'Short time format' + NumberFormat = nfShortTime + end + object AcNumFormatLongTimeAM: TsNumberFormatAction + Category = 'FPSpreadsheet' + WorkbookSource = WorkbookSource + Caption = 'Long time AM/PM' + Hint = 'Long 12-hour time format' + NumberFormat = nfLongTimeAM + end + object AcNumFormatShortTimeAM: TsNumberFormatAction + Category = 'FPSpreadsheet' + WorkbookSource = WorkbookSource + Caption = 'Short time AM/PM' + Hint = 'Short 12-hour time format' + NumberFormat = nfShortTimeAM + end + object AcNumFormatTimeInterval: TsNumberFormatAction + Category = 'FPSpreadsheet' + WorkbookSource = WorkbookSource + Caption = 'Time interval' + Hint = 'Time interval format' + NumberFormat = nfTimeInterval + end end object ImageList: TImageList left = 432 top = 249 Bitmap = { - 4C690E0000001000000010000000003F9300003F9300003F9300003F9424003F + 4C69320000001000000010000000003F9300003F9300003F9300003F9424003F 948A003E93CC004095CC004095CC004095CC004095CC004095CC004095CC0040 95CC004095CC00409599003F9400003F9300003F9324003F938A0E4B9CD33F76 C0EC5D90D4FF3365A9FFA0A0A0FFA9A9A9FFA9A9A9FFAAAAAAFFACACACFFAEAE @@ -879,6 +1061,1158 @@ object Form1: TForm1 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00D8874040D88B4385DA8E4994D989438FD8844090D884419AD373 + 3A8ACC62320DC95B2E01FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00D7833E53E2A76CDEE9BC91FFE7BA8FFFE7B78BFFE2A471FBD67E + 42B6CB5C2F0AFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00D67D3B1CDD9656BAE3A973F2E1A873F5E1A471F7D3773E98CB5F + 3008FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00D4793C77E2A670F7DA8847ADD67E43A0E4AE82FFCF6D3A99FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00D1713822DE9B63E2DC965EDFCF693554CF693580E2A97CFFD16C3AA5FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00D06A + 3503D78042AADF9F6AF7CD663466C95D2F0ACC613388E1A679FFD57A44D2C24A + 2706FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00CF6A + 365CDF9D68F6DA8B52D1CB5F314EC7592E2ACD6737A0E1A67AFFD88653F2BF46 + 250DFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00CC633215DB93 + 5EEAE2A779FFD8834AD3CF6A3AB2CE6839B5D57A45D8E3A881FFD98656F9BE41 + 231BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00CB5D3001D3743F9BE2A9 + 7CFFCC663799FFFFFF00FFFFFF00FFFFFF00CC6337B1DFA077FFDA895AFFBB3E + 2222FFFFFF00FFFFFF00FFFFFF00FFFFFF00CA5C2F0ACB5F3044E1A475FFDA8C + 58ECC6522C3DFFFFFF00FFFFFF00BF452413C348277FDC966BFFDB8F60FFBD3F + 2154B6381E02FFFFFF00FFFFFF00FFFFFF00CE6838AEDA8F5DFEDB9060FFD783 + 50EDC4502B8DBD422310BC3F222AC34D2BA2D07142EAD67E51FFD57C4DFFC655 + 31BDB6391D31FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00010101000101 + 0100010101000101012B010101AC0101012B010101000101012B010101AC0101 + 012BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00010101000101 + 01000101010001010160010101A6010101000101010001010160010101A60101 + 0100FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00010101000101 + 010001010100010101A9010101620101010001010100010101A9010101620101 + 0100FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000101012E0101 + 01B5010101B5010101B5010101B5010101B5010101B5010101B5010101B50101 + 01B5FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00010101000101 + 010001010166010101B1010101000101010001010166010101B1010101000101 + 0100FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00010101000101 + 0100010101B5010101690101010001010100010101B501010169010101000101 + 0100FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00010101C30101 + 01C3010101C3010101C3010101C3010101C3010101C3010101C3010101C30101 + 0131FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00010101000101 + 016F010101BE01010100010101000101016F010101BE01010100010101000101 + 0100FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00010101000101 + 01C7010101730101010001010100010101C70101017301010100010101000101 + 0100FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000003A0000 + 00E400000039000000000000003A000000E40000003900000000010101000101 + 0100FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0001010100010101560101 + 01AC010101560101010001010100010101410101019601010100010101000101 + 0100FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000101012C010101AF0101 + 0100010101AF0101012C010101000101019A0101014201010100010101000101 + 0100FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000101012D010101B40101 + 0100010101B40101012D010101440101019D0101010001010100010101000101 + 0100FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00010101000101015D0101 + 01B90101015D01010100010101A2010101460101010001010100010101000101 + 0100FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0001010100010101000101 + 01000101010001010148010101A70101010001010160010101BF010101600101 + 0100FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0001010100010101000101 + 010001010100010101AD0101014A01010132010101C501010100010101C50101 + 0132FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0001010100010101000101 + 01000101014E010101B30101010001010133010101CC01010100010101CC0101 + 0133FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000 + 0000000000C600000054000000000000000000000070000000E1000000700000 + 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF001FD1F9241ECFF8E41ECEF7FC1CCCF6FF1CCAF5F81BC8F4CE1BC6F44FFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF001ECFF7F3A2E7FBFFD3F6FFFFC7F4FFFFBBF1FFFFA2E9FBFF1AC3F2DCFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF001CCCF6FFD6F7FFFFBCEFFFFFABEBFFFF9AE6FFFFA7EDFDFF18BFF0FFFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF001CC9F4FFBAF0FDFFAAEAFEFFA2E9FEFF79DDFBFF7BDFFBFF17BBEDFFFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF001BC6F3FF87E2FAFF40CBF5FF34C4F3FF25BAF1FF5CCDF6FF17B7EBFFFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0019C3F1FFA2E9FCFF69D9FAFF51D2F9FF3EC9F7FF5ACCF5FF15B3E8FFFFFF + FF00FFFFFF00FFFFFF00FFFFFF001ECEF80E1DCCF7E41BCAF6FC1BC8F5FF1AC5 + F4F81AC2F2FF79DCF8FF3CC7F4FF30BFF3FF23B5F0FF6CD7F9FF14AFE5FFFFFF + FF00FFFFFF00FFFFFF00FFFFFF001CCBF68891E1FAFFDFF8FFFFD7F7FFFFCCF4 + FFFFA9E9FAFF2AC2F0FF64D6F9FF4CCFF8FF3BC6F6FF68D6F9FF14AAE2FFFFFF + FF00FFFFFF00FFFFFF00FFFFFF001BC8F4FFDAF7FEFFD1F4FFFFC3F1FFFFB7EE + FFFFBFF2FEFF17B7EBFF3AC4F3FF2DBBF2FF20B0EFFF51C7F4FF12A5DFFFFFFF + FF00FFFFFF00FFFFFF00FFFFFF001BC4F1FFCFF5FEFFC3F0FEFFBDEFFEFFA2E7 + FCFF99E8FCFF15B3E7FF5ED3F9FF48CCF8FF36C2F5FF61D3F8FF12A1DCFFFFFF + FF00FFFFFF00FFFFFF00FFFFFF0019C0EFFFAAEAFBFF78DAF8FF61D4F6FF44CD + F5FF66DBF8FF14ADE4FF36C1F2FF2BB7F1FF1AB1F2FF1BB7F4FF14B3F1FF13AF + F0FF13ACEDF811A8EACE11A5E84F18BBECFFBDEFFCFF99E3FBFF89DFFAFF74D9 + F9FF63DAF8FF13A8E0FF5BD2F9FF44C9F7FF16B5F1FFC2F0FDFFCEF4FFFFC6F4 + FFFFB8EFFEFF89E0F6FF109EE2DC16B7E9FFBFF1FDFF74D9F7FF5BD1F6FF44CB + F5FF8EE6FCFF12A2DCFF47C7F4FF2EB6F1FF13AFEEFFD6F7FFFFBDEFFFFFABEB + FFFF9FE7FFFFAEF0FEFF0F98DCFF16B2E6A98EDDF4FF9EE6FCFF85DEFAFF7BDD + FAFF6CD3F2FF24A9DFFF61D1F1FF72DEF9FF2CB6ECFF7EDAF5FFB5EEFEFFA7EB + FEFF8FE3FBFF58CFF1FF0E91D6A914ADE2705FCBEDFF8AE0F6FF88E3F9FF6FDA + F4FF47C1E6FF1099D5BC1097D4CC0F93D3F91099D9E24AC3ECFF72DAF5FF71DE + F7FF57D3F3FF39B8E5FF0D8AD17013A8DE0013A4DC8711A1DACC119ED7F9119A + D5CC1097D3871094D121FFFFFF00FFFFFF00109CDE210F98DA870E93D7CC0E8F + D4F90D8BD1CC0D89CE870D85CC21FFFFFF000101E4000101AC00000000370000 + 005F000000370101AC000101E5000101E5000101AC00000000370000005F0000 + 00370101AC000101E400FFFFFF00FFFFFF000101E4820101E4AC000095CCD6D6 + D6FF000095CC0101E4AC0101E4AC0101E4AC0101E4AC000095CCD6D6D6FF0000 + 95CC0101E4AC0101E482FFFFFF00FFFFFF000101DDB28383FFFF3D3DD5FFB1B1 + B1FF3D3DD5FF7E7EFFFF7E7EFFFF7E7EFFFF7E7EFFFF3D3DD5FFB1B1B1FF3D3D + D5FF8383FFFF0101DDB2FFFFFF00FFFFFF000101D5B97777FDFF2F2FC1FF1111 + 88FF2F2FC1FF6E6EFBFF6E6EFBFF6E6EFBFF6E6EFBFF2F2FC1FF111188FF2F2F + C1FF7777FDFF0101D5B9FFFFFF00FFFFFF000000CBC26D6DFBFFD7D7FBFFA1A1 + ECFFA8A8F1FFC4C4E8FF6464F5FF6464F5FF6464F5FF5C5CEFFF4E4EE4FF5C5C + EFFF6D6DFBFF0000CBC2FFFFFF00FFFFFF000000C3C96363F8FF4646DEFF5050 + E7FF5050E7FF4646DEFF5A5AF0FF5A5AF0FF5A5AF0FF5A5AF0FF5A5AF0FF5A5A + F0FF6363F8FF0000C3C9FFFFFF00FFFFFF0000002872FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFF00002872FFFFFF00FFFFFF0000002775FEFEFDFFFDFDFBFFFDFD + FBFFFDFDFBFFFDFDFBFFFDFDFBFFFDFDFBFFFDFDFBFFFDFDFBFFFDFDFBFFFDFD + FBFFFEFEFDFF00002775FFFFFF00FFFFFF0000002678FDFDF9FFFAFAF7FFFAFA + F7FFFAFAF7FFFAFAF7FFFAFAF7FFFAFAF7FFFAFAF7FFFAFAF7FFFAFAF7FFFAFA + F7FFFDFDF9FF00002678FFFFFF00FFFFFF000000267BFBFBF5FFF7F7F1FFF7F7 + F1FFF7F7F1FFF7F7F1FFF7F7F1FFF7F7F1FFF7F7F1FFF7F7F1FFF7F7F1FFF7F7 + F1FFFBFBF5FF0000267BFFFFFF00FFFFFF000000257FFAFAF1FFF3F3EBFFF3F3 + EBFFF3F3EBFFF3F3EBFFF3F3EBFFF3F3EBFFF3F3EBFFF3F3EBFFF3F3EBFFF3F3 + EBFFFAFAF1FF0000257FFFFFFF00FFFFFF0000002482F8F8EDFFEFEFE6FFEFEF + E6FFEFEFE6FFEFEFE6FFEFEFE6FFEFEFE6FFEFEFE6FFEFEFE6FFEFEFE6FFEFEF + E6FFF8F8EDFF00002482FFFFFF00FFFFFF0000002386F6F6E9FFECECE0FFECEC + E0FFECECE0FFECECE0FFECECE0FFECECE0FFECECE0FFECECE0FFECECE0FFECEC + E0FFF6F6E9FF00002386FFFFFF00FFFFFF000101228DF5F5E6FFE9E9DAFFE9E9 + DAFFE9E9DAFFE9E9DAFFE9E9DAFFE9E9DAFFE9E9DAFFE9E9DAFFE9E9DAFFE9E9 + DAFFF5F5E6FF0101228DFFFFFF00FFFFFF0001011F9AF9F9E9FFF3F3E3FFF3F3 + E3FFF3F3E3FFF3F3E3FFF3F3E3FFF3F3E3FFF3F3E3FFF3F3E3FFF3F3E3FFF3F3 + E3FFF9F9E9FF01011F9AFFFFFF00FFFFFF0001011D7C01011DA501011DA50101 + 1DA501011DA501011DA501011DA501011DA501011DA501011DA501011DA50101 + 1DA501011DA501011D7CFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004E4E4E0050505000535353005454 + 540D5555553755555553555555625555556255555553555555375454540D5353 + 5300505050004E4E4E00FFFFFF00FFFFFF004E4E4E0050505000535353286262 + 60699F9F96AAD7D7CCDFECECE5F8ECECE5F8D7D7CCDF9F9F96AA626260695353 + 5328505050004E4E4E00FFFFFF00FFFFFF004E4E4E005050502868686578CECE + BFE3E7E7DBFFF1F1EBFFC1C1BEFFF1F1EBFFF1F1EBFFE7E7DBFFCECEBFE36969 + 6678505050284E4E4E00FFFFFF00FFFFFF004D4D4D0E5D5D5B6CCDCDBFE3E0E0 + D0FFF0F0E9FFF1F1EBFF8C8C8CFFF1F1EBFFF1F1EBFFF0F0E9FFE0E0D0FFCFCF + C2E35E5E5C6C4D4D4D0EFFFFFF00FFFFFF004A4A4A3A9A9A90ACDDDDCCFFE6E6 + DAFFF1F1EBFFF1F1EBFF848484FFF1F1EBFFF1F1EBFFF1F1EBFFE6E6DAFFDFDF + CEFF9D9D96AC4A4A4A3AFFFFFF00FFFFFF004646465ACBCBBDE1DDDDCCFFDDDD + CCFFDDDDCCFFDDDDCCFF5C5C5CFFDDDDCCFFDDDDCCFFDDDDCCFFDDDDCCFFDDDD + CCFFD2D2C7E14646465AFFFFFF00FFFFFF004242426BDBDBCCF8DDDDCCFFDDDD + CCFFF1F1EBFFF1F1EBFF4F4F4FFFF1F1EBFFF1F1EBFFF1F1EBFFEFEFE7FFDDDD + CCFFE2E2D6F84242426BFFFFFF00FFFFFF003E3E3E6DDDDDCEF8DDDDCCFFF1F1 + EBFFF1F1EBFF353535FF777777FF484848FF555555FF626262FF6E6E6EFFA9A9 + A0FFE5E5D9F83E3E3E6DFFFFFF00FFFFFF003A3A3A5ECECEC2E2DDDDCCFFF1F1 + EBFFF1F1EBFFDFDFDCFF383838FFDFDFDCFFDFDFDCFFDFDFDCFFDFDFDBFFD9D9 + CCFFD7D7CFE23A3A3A5EFFFFFF00FFFFFF003535353F94948EB3E0E0D0FFEFEF + E7FFF1F1EBFFF1F1EBFFDFDFDCFFF1F1EBFFF1F1EBFFF1F1EBFFEFEFE7FFE2E2 + D3FF9B9B99B33535353FFFFFFF00FFFFFF003232321044444377D4D4CAE6EDED + E4FFF1F1EBFFF1F1EBFFF1F1EBFFF1F1EBFFF1F1EBFFF1F1EBFFEDEDE5FFDADA + D5E64545457732323210FFFFFF00FFFFFF00303030002C2C2C2F4B4B4A89DADA + D5E6F3F3EEFFF1F1EBFFF1F1EBFFF1F1EBFFF1F1EBFFF3F3EEFFDEDEDBE64C4C + 4C892C2C2C2F30303000FFFFFF00FFFFFF00303030002A2A2A001C1C1C322F2F + 2F818D8D8CBBD9D9D7E6F3F3EFF9F3F3F0F9DADAD8E68E8E8EBB303030811C1C + 1C322A2A2A0030303000FFFFFF00FFFFFF00303030002A2A2A001A1A1A000F0F + 0F120C0C0C4A0C0C0C720C0C0C860C0C0C860C0C0C720C0C0C4A0F0F0F121A1A + 1A002A2A2A0030303000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF007F7F554D7F7F55667F7F55667F7F55667F7F + 55667F7F55667F7F55667F7F55667F7F55667F7F55667F7F55667F7F55667F7F + 55667F7F55667F7F55667F7F554D7D7D5367FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFF7D7D53677A7A5168FFFFFEFFFFCC44FFFECB43FFFDCA + 42FFFCC941FFFAC73FFFF8C53DFFF6C33CFFF5C23AFFF3C038FFF1BE36FFF0BD + 35FFEFBC34FFFFFFFEFF7A7A516877774E6AFEFEFCFFFFCC44FFFFEE88FFFDCA + 42FFFCEB85FFFBEA84FFF8C53DFFF6E57FFFF4E37DFFF3C038FFF1E07AFFEFDE + 78FFEFBC34FFFEFEFCFF77774E6A73734B6BFDFDF9FFFFCC44FFFECB43FFF5CE + 64FFEBD285FFE9D083FFE7CE81FFE5CC80FFE4CB7EFFE2C97CFFE0C77AFFDFC6 + 79FFDEC578FFFDFDF9FF73734B6B6F6F476DFCFCF7FFFFCC44FFFFEE88FFECD2 + 86FFFCFCFAFFFCFCFAFFD6D6C5FFFCFCFAFFFCFCFAFFD1D1C0FFFCFCFAFFFCFC + FAFFCDCDBCFFFCFCF7FF6F6F476D6B6B446EFBFBF4FFFFCC44FFFECB43FFECD2 + 86FFDADAC9FFD8D8C7FFE98361FFE98361FFE98361FFE98361FFE98361FFE983 + 61FFE98361FFFBFBF4FF6B6B446E67674070F9F9F1FFFFCC44FFFFEE88FFECD2 + 86FFF9F9F5FFF9F9F5FFC86442FFF9F9F5FFF9F9F5FFD1D1C0FFF9F9F5FFF9F9 + F5FFC86442FFF9F9F1FF6767407063633C72F8F8EEFFFFCC44FFFECB43FFECD2 + 86FFDADAC9FFD8D8C7FFAD4826FFD4D4C3FFD3D3C2FFD9D9CAFFCFCFBEFFCECE + BDFFAD4826FFF8F8EEFF63633C725E5E3873F7F7EBFFFFCC44FFFFEE88FFECD2 + 86FFF7F7F1FFF7F7F1FFB84927FFF7F7F1FFF7F7F1FFD1D1C0FFF7F7F1FFF7F7 + F1FFB84927FFF7F7EBFF5E5E38735A5A3475F6F6E9FFFFCC44FFFECB43FFECD2 + 86FFDADAC9FFD8D8C7FFDA5B39FFDA5B39FFDA5B39FFDA5B39FFDA5B39FFDA5B + 39FFDA5B39FFF6F6E9FF5A5A347555553077F5F5E6FFFFCC44FFFFEE88FFECD2 + 86FFF5F5EEFFF5F5EEFFD6D6C5FFF5F5EEFFF5F5EEFFD1D1C0FFF5F5EEFFF5F5 + EEFFCDCDBCFFF5F5E6FF555530774D4D297AF4F4E4FFFFCC44FFFECB43FFECD2 + 86FFDADAC9FFD8D8C7FFD6D6C5FFD4D4C3FFD3D3C2FFD1D1C0FFCFCFBEFFCECE + BDFFCDCDBCFFF4F4E4FF4D4D297A3A3A1881F9F9E9FFF3F3E2FFF3F3E2FFF3F3 + E2FFF3F3E2FFF3F3E2FFF3F3E2FFF3F3E2FFF3F3E2FFF3F3E2FFF3F3E2FFF3F3 + E2FFF3F3E2FFF9F9E9FF3A3A18812D2D0D652B2B0B872B2B0B872B2B0B872B2B + 0B872B2B0B872B2B0B872B2B0B872B2B0B872B2B0B872B2B0B872B2B0B872B2B + 0B872B2B0B872B2B0B872D2D0D65FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00CC812900D58A3000DD923600E4993B00E99E + 3F48E99E3F99E89D3E00E89D3E00DB903500DB903500DB903500DB903500E297 + 3A00E79C3E00E99E3F99FFFFFF00CC812900D58A3000DD923600E3983B48E499 + 3BCCE4993BCCE4993B00DB903400DB903500DB903500DB903500DB903500DF94 + 3700E3983B7AE4993BCCFFFFFF00CC812900D58A3000DC913648DD9236CCFFE5 + 99FFDD9236CCD98E3300D78C3100DB903504DB903511DB903528DB903547DD92 + 368DE4A148CDDD9236B6FFFFFF00CC812900D4892F48D58A30CCFFE599FFFCD7 + 8BFFD58A30CCD58A30CCD58A30CCD68C32CDDA933BD1DF9E47D7E6AC57E0F3C2 + 73F1EDB968EBD58A308DFFFFFF00CB802848CC8129CCFFE397FFF4BE72FFF6C6 + 7AFFF8CE82FFF8CD81FFF8CC80FFF7CB7FFFF7C87CFFF6C478FFF5C074FFF3C1 + 74FCD48F3AD3CD822A35FFFFFF00C27722CCFDDF93FFEFB468FFEFB468FFEFB4 + 68FFEFB468FFEBB061FFE3A754FFDA9E49FFD59843FFD29541FFD69D4AFCCC8B + 38DDC2772279C67B2500FFFFFF00BA6F1C48B96E1BCCFAD68AFFEEB266FFF1B8 + 67FFF0B956FFECB240FFEBAF3BFFEAAD38FFE5A736F9D89833ECC17A23D3B96E + 1B79BD731E0ABF752000FFFFFF00B96E1B00B0651548AF6414CCFACC6CFFFCBD + 2CFFAF6414CCAF6414CCAF6414CCAF6414CBAF6414B6AF64148DB0651535B66B + 1900BD731E00BF752000FFFFFF00B96E1B00AF641400A75C0E48A65B0DCCFFC3 + 32FFA65B0DCCAB601100AD621200AD621200AD621200AD621200AF641400B66B + 1900BD731E00BF752000FFFFFF00B96E1B00AF641400A65B0D00A05509489F54 + 08CC9F5408CC9F540800A95E0F00AD621200AD621200AD621200AF641400B66B + 1900BD731E00BF752000FFFFFF00B96E1B00AF641400A65B0D009F5408009A4F + 04489A4F04999A4F04009A4F0400AD621200AD621200AD621200AF641400B66B + 1900BD731E00BF752000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0086C38BF582C0870EFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF0084C28AF596CD9BFF80BE85FF79B97E0EFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0083C188F594CD9AFFB3E2B7FF93CB98FF77B77CFF70B2 + 740EFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0082C087F594CC99FFB2E2B7FFA3DCAAFFB0E0B6FF8CC692FF6EB1 + 73FF66AB6B0EFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0081BF86F593CC98FFB1E1B7FFA3DBA9FF9BD8A2FF73B477FFAFDFB4FF87C3 + 8CFF65AA69FF5DA4610EFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007FBE + 85F592CB97FFB1E1B6FF85C38AFF80C185FF99D7A0FF98D79FFF9FD9A5FFACDF + B2FF7DBB81FF58A05CF6FFFFFF00FFFFFF00FFFFFF00FFFFFF007EBD83F691CA + 96FFB1E0B6FFD9F3DDFFF7FCF8FFA4D0A7FF7EC084FF9FD9A5FFACDEB2FF7BBB + 80FF569F5AFBFFFFFF00FFFFFF00FFFFFF008EC993257DBC82FA90C995FFB0E0 + B6FF85C28AFFF7FCF8FF95C297FFDDEEDFFF82C287FFABDEB1FF7BBA7FFF58A0 + 5CFF59A15DFF539C5704FFFFFF008DC9937D7DBB82FF8FC894FFB0E0B6FFA2DA + A8FF7FC185FFA4D0A7FFDDEEDFFF80B883FFABDEB1FF7AB97FFF569F5AFFC4E7 + C8FF78B87CFF4E995284FFFFFF007BBB80FF8EC893FFAFDFB5FFA1DAA7FF98D7 + 9FFF97D69EFF7EC083FF82C187FFABDDB0FF79B97DFF63AE67FFC4E7C8FFC1E4 + C4FFB9E0BEFF4F9A53FF459249117FBD84A07FBD84FF97CE9CFFADDFB3FF6FB3 + 74FF96D59DFF9DD8A3FFAADDB0FF78B87CFF72BA76FFC3E7C8FFB2DAB5FF69B8 + 6EF8569E59FF45914873418F44327FBE84197BBB80FF77B77CFF91CB97FFABDE + B1FF9CD7A2FFAADDB0FF77B77CFF60AC65FFAED8B2FF8BC491FF4C9750B94894 + 4C9144914822FFFFFF00FFFFFF00FFFFFF0075B67A9B9CCDA0FF6FB273FF8DC7 + 92FFAADCAFFF76B67BFF519B55FF77B77BFF509A53DD4B964F4247934B29FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF006FB274277CBB81FCB7DEBBFF67AC + 6CFF75B67AFF4E9851FE539C57B84F99537AFFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF006AAE6E0565AA69AF60A665FD6BAE + 6FFF4C9750FB529C56344E995222FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0060A664315BA25FCC569F + 5A4BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0003030360030303BE03030360FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00030303C1030303C1030303C1FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0003030395030303C6030303C6FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF000303030002020266020202CCFFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0002020200020202B802020283FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0001010172010101E00101011CFFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000004D0000000D000000670000 + 000D000000670000000D000000670000000D000000670000000D000000670000 + 000D0000004DFFFFFF00FFFFFF00FFFFFF000000000E00000000000000000000 + 000000000000000000000000000D000000000000000000000000000000000000 + 00000000000DFFFFFF00FFFFFF00FFFFFF000000006B00000000000000000000 + 000000000000000000000000006B000000000000000000000000000000000000 + 00000000006BFFFFFF00FFFFFF00FFFFFF000000000E00000000000000000000 + 000000000000000000000000000E000000000000000000000000000000000000 + 00000000000EFFFFFF00FFFFFF00FFFFFF000000007100000000000000000000 + 0000000000000000000000000071000000000000000000000000000000000000 + 000000000071FFFFFF00FFFFFF00FFFFFF000000000F00000000000000000000 + 000000000000000000000000000F000000000000000000000000000000000000 + 00000000000FFFFFFF00FFFFFF00FFFFFF00000000780000000F000000780000 + 000F000000780000000F000000780000000F000000780000000F000000780000 + 000F00000078FFFFFF00FFFFFF00FFFFFF000000001000000000000000000000 + 0000000000000000000000000010000000000000000000000000000000000000 + 000000000010FFFFFF00FFFFFF00FFFFFF000000008000000000000000000000 + 0000000000000000000000000080000000000000000000000000000000000000 + 000000000080FFFFFF00FFFFFF00FFFFFF000000001100000000010101000101 + 0100010101000000000000000011000000000101010001010100010101000000 + 000000000011FFFFFF00FFFFFF00FFFFFF000101018901010100010101000101 + 0100010101000101010001010189010101000101010001010100010101000101 + 010001010189FFFFFF00FFFFFF00FFFFFF000101011401010100010101000101 + 0100010101000101010001010113010101000101010001010100010101000101 + 010001010113FFFFFF00FFFFFF00FFFFFF000101017B01010115010101A40101 + 0115010101A401010115010101A401010115010101A401010115010101A40101 + 01150101017BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0001010181010101AC010101AC0101 + 01AC010101AC010101AC010101AC010101AC010101AC010101AC010101AC0101 + 01AC01010181FFFFFF00FFFFFF00FFFFFF00010101AE01010100010101000101 + 01000101010001010100010101AE010101000101010001010100010101000101 + 0100010101AEFFFFFF00FFFFFF00FFFFFF00010101B001010100010101000101 + 01000101010001010100010101B0010101000101010001010100010101000101 + 0100010101B0FFFFFF00FFFFFF00FFFFFF00010101B301010100010101000101 + 01000101010001010100010101B3010101000101010001010100010101000101 + 0100010101B3FFFFFF00FFFFFF00FFFFFF00010101B601010100010101000101 + 01000101010001010100010101B6010101000101010001010100010101000101 + 0100010101B6FFFFFF00FFFFFF00FFFFFF00010101B901010100010101000101 + 01000101010001010100010101B9010101000101010001010100010101000101 + 0100010101B9FFFFFF00FFFFFF00FFFFFF00010101BC010101BC010101BC0101 + 01BC010101BC010101BC0101018E010101BC010101BC010101BC010101BC0101 + 01BC010101BCFFFFFF00FFFFFF00FFFFFF00010101C001010100010101000101 + 01000101010001010100010101C0010101000101010001010100010101000101 + 0100010101C0FFFFFF00FFFFFF00FFFFFF00010101C401010100010101000101 + 01000101010001010100010101C4010101000101010001010100010101000101 + 0100010101C4FFFFFF00FFFFFF00FFFFFF00010101C701010100010101000101 + 01000101010001010100010101C7010101000101010001010100010101000101 + 0100010101C7FFFFFF00FFFFFF00FFFFFF00010101CC01010100010101000000 + 00000101010001010100010101CC010101000101010000000000010101000101 + 0100010101CCFFFFFF00FFFFFF00FFFFFF00000000D900000000000000000000 + 00000000000000000000000000D9000000000000000000000000000000000000 + 0000000000D9FFFFFF00FFFFFF00FFFFFF00000000AC000000E6000000E60000 + 00E6000000E6000000E6000000E6000000E6000000E6000000E6000000E60000 + 00E6000000ACFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000004D0000000D000000670000 + 000D000000670000000D000000670000000D000000670000000D000000670000 + 000D0000004DFFFFFF00FFFFFF00FFFFFF000000000E00000000000000000000 + 000000000000000000000000000D000000000000000000000000000000000000 + 00000000000DFFFFFF00FFFFFF00FFFFFF000000006B00000000000000000000 + 000000000000000000000000006B000000000000000000000000000000000000 + 00000000006BFFFFFF00FFFFFF00FFFFFF000000000E00000000000000000000 + 000000000000000000000000000E000000000000000000000000000000000000 + 00000000000EFFFFFF00FFFFFF00FFFFFF000000007100000000000000000000 + 0000000000000000000000000071000000000000000000000000000000000000 + 000000000071FFFFFF00FFFFFF00FFFFFF000000000F00000000000000000000 + 000000000000000000000000000F000000000000000000000000000000000000 + 00000000000FFFFFFF00FFFFFF00FFFFFF00000000780000000F000000780000 + 000F000000780000000F000000780000000F000000780000000F000000780000 + 000F00000078FFFFFF00FFFFFF00FFFFFF000000001000000000000000000000 + 0000000000000000000000000010000000000000000000000000000000000000 + 000000000010FFFFFF00FFFFFF00FFFFFF000000008000000000000000000000 + 0000000000000000000000000080000000000000000000000000000000000000 + 000000000080FFFFFF00FFFFFF00FFFFFF000000001100000000000000000000 + 0000000000000000000000000011000000000000000000000000000000000000 + 000000000011FFFFFF00FFFFFF00FFFFFF000101018901010100000000000000 + 0000000000000101010001010189010101000000000000000000000000000101 + 010001010189FFFFFF00FFFFFF00FFFFFF000101011400000000000000000000 + 0000000000000000000001010113010101000000000000000000000000000000 + 000001010113FFFFFF00FFFFFF00FFFFFF00000000AC000000E6000000E60000 + 00E6000000E6000000E6000000E6000000E6000000E6000000E6000000E60000 + 00E6000000ACFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000004D0000000D000000670000 + 000D000000670000000D000000670000000D000000670000000D000000670000 + 000D0000004DFFFFFF00FFFFFF00FFFFFF000000000E00000000000000000000 + 000000000000000000000000000D000000000000000000000000000000000000 + 00000000000DFFFFFF00FFFFFF00FFFFFF000000006B00000000000000000000 + 000000000000000000000000006B000000000000000000000000000000000000 + 00000000006BFFFFFF00FFFFFF00FFFFFF000000000E00000000000000000000 + 000000000000000000000000000E000000000000000000000000000000000000 + 00000000000EFFFFFF00FFFFFF00FFFFFF000000007100000000000000000000 + 0000000000000000000000000071000000000000000000000000000000000000 + 000000000071FFFFFF00FFFFFF00FFFFFF000000000F00000000000000000000 + 000000000000000000000000000F000000000000000000000000000000000000 + 00000000000FFFFFFF00FFFFFF00FFFFFF00000000780000000F000000780000 + 000F000000780000000F000000780000000F000000780000000F000000780000 + 000F00000078FFFFFF00FFFFFF00FFFFFF000000001000000000000000000000 + 0000000000000000000000000010000000000000000000000000000000000000 + 000000000010FFFFFF00FFFFFF00FFFFFF000000008000000000010101000101 + 0100010101000000000000000080000000000101010001010100010101000000 + 000000000080FFFFFF00FFFFFF00FFFFFF000101011101010100010101000101 + 0100010101000101010001010111010101000101010001010100010101000101 + 010001010111FFFFFF00FFFFFF00FFFFFF00010101CC010101CC010101CC0101 + 01CC010101CC010101CC010101CC010101CC010101CC010101CC010101CC0101 + 01CC010101CCFFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF00FFFFFF00FFFFFF00000000AC000000E6000000E60000 + 00E6000000E6000000E6000000E6000000E6000000E6000000E6000000E60000 + 00E6000000ACFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000004D0000000D000000670000 + 000D000000670000000D000000670000000D000000670000000D000000670000 + 000D0000004DFFFFFF00FFFFFF00FFFFFF000000000E00000000000000000000 + 000000000000000000000000000D000000000000000000000000000000000000 + 00000000000DFFFFFF00FFFFFF00FFFFFF000000006B00000000000000000000 + 000000000000000000000000006B000000000000000000000000000000000000 + 00000000006BFFFFFF00FFFFFF00FFFFFF000000000E00000000000000000000 + 000000000000000000000000000E000000000000000000000000000000000000 + 00000000000EFFFFFF00FFFFFF00FFFFFF000000007100000000000000000000 + 0000000000000000000000000071000000000000000000000000000000000000 + 000000000071FFFFFF00FFFFFF00FFFFFF000000000F00000000000000000000 + 000000000000000000000000000F000000000000000000000000000000000000 + 00000000000FFFFFFF00FFFFFF00FFFFFF00000000780000000F000000780000 + 000F000000780000000F000000780000000F000000780000000F000000780000 + 000F00000078FFFFFF00FFFFFF00FFFFFF000000001000000000000000000000 + 0000000000000000000000000010000000000000000000000000000000000000 + 000000000010FFFFFF00FFFFFF00FFFFFF000000008000000000000000000000 + 0000000000000000000000000080000000000000000000000000000000000000 + 000000000080FFFFFF00FFFFFF00FFFFFF000000001100000000000000000000 + 0000000000000000000000000011000000000000000000000000000000000000 + 000000000011FFFFFF00FFFFFF00FFFFFF000101018900000000000000000000 + 0000000000000000000001010189000000000000000000000000000000000000 + 000001010189FFFFFF00FFFFFF00FFFFFF00000000D9000000D9000000D90000 + 00D9000000D9000000D9000000D9000000D9000000D9000000D9000000D90000 + 00D9000000D9FFFFFF00FFFFFF00FFFFFF00000000AC000000E6000000E60000 + 00E6000000E6000000E6000000E6000000E6000000E6000000E6000000E60000 + 00E6000000ACFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 + 000001535F0001A6BE0001A6BE0051515100515151000101E5000101E5160101 + D1000000B3000000B3000000B300000000000000000000000000003E530001A6 + BE0001A6BE0001A6BE0001A6BE0051515100515151000101E53C0101E1AE0101 + CF870000B3000000B3000000B300003E5300003E5300007CA500007CA50001A6 + BE0001A6BE0001A6BE0001A6BE0051515100505050264141416F7575FEFF4747 + E2E90000AE440000AE000000AE00007CA500007CA500007CA500007CA50001A6 + BE0001A6BE0001A6BE0001A6BE00505050264141416FFDFDFDFFACACACD50000 + AAC40000A5000000A5000000A500007CA500007CA500007CA500007CA50001A6 + BE0001A6BE0001A6BE0001A5BD3F019AB2B452C6D7FF33AABCF0090909880101 + 7C000000A0000000A0000000A000007CA500007CA500007CA500007CA50001A6 + BE0001A6BE0001A5BD3F019AB2B47BE8F9FF50C1D4EA006F86C3041E24000202 + 52000000A0000000A0000000A000007CA500007CA500007CA500007CA50001A6 + BE0001A5BD3F019AB2B47BE8F9FF50C1D4EA006F86C3006A8000023641000202 + 52000000A0000000500000000000007CA500007CA500007CA500007CA50001A5 + BD3F019AB2B47BE8F9FF50C1D4EA006F86C3006A800000687E00023641000101 + 290000000000000000000000000000749A0000749A0000759C000078A01E0D7A + 9D7D66DDEEFF34A2B6E8006F86C3006A800000687E0000343F00000000000000 + 0000000000000000000000000000006C8F00006C8F00006E9201016C8F82CCEE + FFFF015672A00150697A01647B0000343F000000000000000000000000000000 + 000000000000000000000000000001688900016889000165868CA6D5E6FF0152 + 6CA7013B4E490127340000000000000000000000000000000000000000000000 + 00000000000000000000000000004D33800000000000000000FF014F68AA013B + 4E2B00000077000000EA000000D9000000C3000000AA0000008D0000006F0000 + 0052000000370000001E0000000C9966FF009865FF004B3280004B58B300925F + FF00482F8000472D8000452C8000442B80004329800041288000402780003F26 + 80003E2580003D2480003C2380009966FF009865FFFF9663FFFF9461FFFF925F + FFFF905DFFFF8D5AFFFF8A57FFFF8855FFFF8552FFFF824FFFFF804DFFFF7E4B + FFFF7C49FFFF7A47FFFF7845FFC09966FFFF9865FFFF9663FFFF9461FFFF925F + FFFF905DFFFF8D5AFFFF8A57FFFF8855FFFF8552FFFF824FFFFF804DFFFF7E4B + FFFF7C49FFFF7A47FFFF7845FFFF9966FF009865FFFF9663FFFF9461FFFF925F + FFFF905DFFFF8D5AFFFF8A57FFFF8855FFFF8552FFFF824FFFFF804DFFFF7E4B + FFFF7C49FFFF7A47FFFF7845FFC0FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0001010181010101AC010101AC0101 + 01AC010101AC010101AC010101AC010101AC010101AC010101AC010101AC0101 + 01AC01010181FFFFFF00FFFFFF00FFFFFF000101010001010100010101000101 + 0100010101000101010001010100010101000101010001010100010101000101 + 010001010100FFFFFF00FFFFFF00FFFFFF000101010001010100010101000101 + 0100010101000101010001010100010101000101010001010100010101000101 + 010001010100FFFFFF00FFFFFF00FFFFFF00010101B501010109010101B50101 + 0109010101B501010109010101B501010109010101B501010109010101B50101 + 0109010101B5FFFFFF00FFFFFF00FFFFFF000101010001010100010101000101 + 0100010101000101010001010100010101000101010001010100010101000101 + 010001010100FFFFFF00FFFFFF00FFFFFF000101010001010100010101000101 + 0100010101000101010001010100010101000101010001010100010101000101 + 010001010100FFFFFF00FFFFFF00FFFFFF00010101C3010101C3010101C30101 + 019301010100010101C3010101C3010101C30101010001010193010101C30101 + 01C3010101C3FFFFFF00FFFFFF00FFFFFF000101010001010100010101000101 + 0100010101000101010001010100010101000101010001010100010101000101 + 010001010100FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF00FFFFFF00FFFFFF00000000AA0000000C000000E40000 + 00E4000000E40000000C000000E40000000C000000E4000000E4000000E40000 + 000C000000AAFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00010101810101012B000000330000 + 000D000000670000000D000000670000000D000000670000000D000000670000 + 000D0000004DFFFFFF00FFFFFF00FFFFFF000101012C010101AE0101012C0101 + 0100000000000000000000000000000000000000000000000000000000000000 + 00000000000DFFFFFF00FFFFFF00FFFFFF00000000360101012C010101B00101 + 012C010101000101010000000000000000000000000000000000000000000000 + 00000000006BFFFFFF00FFFFFF00FFFFFF000000000E010101000101012D0101 + 01B30101012D0101010001010100010101000000000000000000000000000000 + 00000000000EFFFFFF00FFFFFF00FFFFFF000000007100000000010101000101 + 012E010101B60101012E01010100010101000101010000000000000000000000 + 000000000071FFFFFF00FFFFFF00FFFFFF000000000F00000000010101000101 + 01000101012E010101B90101012F010101000101010001010100000000000000 + 00000000000FFFFFFF00FFFFFF00FFFFFF000000007800000000000000000101 + 0100010101000101012F010101BC010101300101010001010100000000000000 + 000000000078FFFFFF00FFFFFF00FFFFFF000000001000000000000000000101 + 0100010101000101010001010130010101C00101013101010100010101000000 + 000000000010FFFFFF00FFFFFF00FFFFFF000000008000000000000000000000 + 000001010100010101000101010001010131010101C401010132010101000000 + 000000000080FFFFFF00FFFFFF00FFFFFF000000001100000000010101000101 + 01000101010001010100010101000101010001010132010101C7010101320000 + 000000000011FFFFFF00FFFFFF00FFFFFF000101018901010100010101000101 + 0100010101000101010001010100010101000101010001010133010101CC0000 + 003401010145FFFFFF00FFFFFF00FFFFFF000101011401010100010101000101 + 0100010101000101010001010100010101000101010001010100010101360000 + 00D901010138FFFFFF00FFFFFF00FFFFFF000101017B01010115010101A40101 + 0115010101A401010115010101A401010115010101A401010115010101540101 + 0139000000ACFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000004D0000000D000000670000 + 000D000000670000000D000000670000000D000000670000000D000000670000 + 000D0000004DFFFFFF00FFFFFF00FFFFFF000000000E00000000000000000000 + 000000000000000000000000000D000000000000000000000000000000000000 + 000000000013FFFFFF00FFFFFF00FFFFFF000000006B00000000000000000000 + 000000000000000000000000006B000000000101650001013000000000000000 + 00000000006BFFFFFF00FFFFFF00FFFFFF000000000E00000000000000000000 + 000001525E002B2B2B0016164F0E0101A9000101C9000101BD00000000000000 + 000000000024FFFFFF00FFFFFF00FFFFFF000000007100000000000000000000 + 000001A3BB00555555002B2B9D390101DEAF0101C6400101BD00010101000000 + 000000000073FFFFFF00FFFFFF00FFFFFF000000000F00000000000000000000 + 000001A3BB005454542438386F7C8080FFFF0101B1C101015600010101000101 + 01000101013CFFFFFF00FFFFFF00FFFFFF00000000780000000F000000780129 + 2F0F01A2BA3F4A4A4A6CF7F7F7FF1A1A468E00009F460101012E0101015A0101 + 015901010183FFFFFF00FFFFFF00FFFFFF000000001001292F0001525E0001A2 + BA3F0197B0B579E6F7FF2222227D1212122E00009C0001010100010101000101 + 01000101015EFFFFFF00FFFFFF00FFFFFF000000008001525E0001A2BA3F0197 + B0B579E6F7FF017E95BE053E49410808080001014F0001010100010101000101 + 01000101019BFFFFFF00FFFFFF00FFFFFF0000202B1101A2BA3F0197B0B579E6 + F7FF017E95BE0072894401010151010101000101010001010100010101000101 + 010001010189FFFFFF00FFFFFF00FFFFFF00007EA7260197B0B579E6F7FF017E + 95BE0072894401394400010101B5010101000101010000000000010101000101 + 0100010101B9FFFFFF00FFFFFF00FFFFFF00016D917FD9F4FFFF017E95BE0056 + 6744001C220000000000000000D0000000000000000000000000000000000000 + 0000000000C2FFFFFF00FFFFFF00FFFFFF00000000FF014F68AB015F773D0000 + 0074000000E6000000E6000000E6000000E6000000E6000000E6000000E60000 + 00E6000000ACFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000004D0000000D000000670000 + 000D000000670000000D000000670000000D000000670000000D000000670000 + 000D0000004DFFFFFF00FFFFFF00FFFFFF000000000E00000000000000000000 + 000000000000000000000000000D000000000000000000000000000000000000 + 00000000000DFFFFFF00FFFFFF00FFFFFF000000006B00000000000000000000 + 000000000000000000000000006B000000000000000000000000000000000000 + 00000000006BFFFFFF00FFFFFF00FFFFFF000000000E00000000010101000101 + 010001010100000000000000000E000000000101010001010100010101000000 + 00000000000EFFFFFF00FFFFFF00FFFFFF000000007100000000010101000101 + 0100010101000000000000000071000000000101010001010100010101000000 + 000000000071FFFFFF00FFFFFF00FFFFFF000101010F01010100010101000101 + 010001010100010101000101010F010101000101010001010100010101000101 + 01000101010FFFFFFF00FFFFFF00FFFFFF00010101BC010101BC010101BC0101 + 01BC010101BC010101BC010101BC010101BC010101BC010101BC010101BC0101 + 01BC010101BCFFFFFF00FFFFFF00FFFFFF000101011001010100010101000101 + 0100010101000101010001010110010101000101010001010100010101000101 + 010001010110FFFFFF00FFFFFF00FFFFFF000000008000000000010101000101 + 0100010101000000000000000080000000000101010001010100010101000000 + 000000000080FFFFFF00FFFFFF00FFFFFF000000001100000000010101000101 + 0100010101000000000000000011000000000101010001010100010101000000 + 000000000011FFFFFF00FFFFFF00FFFFFF000101018901010100010101000101 + 0100010101000101010001010189010101000101010001010100010101000101 + 010001010189FFFFFF00FFFFFF00FFFFFF000101011401010100010101000101 + 0100010101000101010001010113010101000101010001010100010101000101 + 010001010113FFFFFF00FFFFFF00FFFFFF000101017B01010115010101A40101 + 0115010101A401010115010101A401010115010101A401010115010101A40101 + 01150101017BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0001010181010101AC010101AC0101 + 01AC010101AC010101AC010101AC010101AC010101AC010101AC010101AC0101 + 01AC01010181FFFFFF00FFFFFF00FFFFFF000101010E01010100010101000101 + 010001010100010101000101010D010101000101010001010100010101000101 + 01000101010DFFFFFF00FFFFFF00FFFFFF000000006B00000000010101000101 + 010001010100000000000000006B000000000101010001010100010101000000 + 00000000006BFFFFFF00FFFFFF00FFFFFF000000000E00000000010101000101 + 010001010100000000000000000E000000000101010001010100010101000000 + 00000000000EFFFFFF00FFFFFF00FFFFFF000000007100000000010101000101 + 0100010101000000000000000071000000000101010001010100010101000000 + 000000000071FFFFFF00FFFFFF00FFFFFF000101010F01010100010101000101 + 010001010100010101000101010F010101000101010001010100010101000101 + 01000101010FFFFFFF00FFFFFF00FFFFFF00010101BC010101BC010101BC0101 + 01BC010101BC010101BC010101BC010101BC010101BC010101BC010101BC0101 + 01BC010101BCFFFFFF00FFFFFF00FFFFFF000101011001010100010101000101 + 0100010101000101010001010110010101000101010001010100010101000101 + 010001010110FFFFFF00FFFFFF00FFFFFF000000008000000000010101000101 + 0100010101000000000000000080000000000101010001010100010101000000 + 000000000080FFFFFF00FFFFFF00FFFFFF000000001100000000010101000101 + 0100010101000000000000000011000000000000000001010100010101000000 + 000000000011FFFFFF00FFFFFF00FFFFFF000101018901010100000000000000 + 0000000000000101010001010189010101000000000000000000000000000101 + 010001010189FFFFFF00FFFFFF00FFFFFF000101011400000000000000000000 + 0000000000000000000001010113010101000000000000000000000000000000 + 000001010113FFFFFF00FFFFFF00FFFFFF00000000AC000000E6000000E60000 + 00E6000000E6000000E6000000E6000000E6000000E6000000E6000000E60000 + 00E6000000ACFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000004D0000000D000000670000 + 000D000000670101010D010101AC0000000D000000670000000D000000670000 + 000D0000004DFFFFFF00FFFFFF00FFFFFF000000000E00000000000000000000 + 00000000000001010100010101AE010101000000000000000000000000000000 + 00000000000DFFFFFF00FFFFFF00FFFFFF000000006B00000000000000000000 + 00000101010001010100010101B0010101000101010000000000000000000000 + 00000000006BFFFFFF00FFFFFF00FFFFFF000000000E00000000010101000101 + 01000101010001010100010101B3010101000101010001010100010101000000 + 00000000000EFFFFFF00FFFFFF00FFFFFF000000007100000000010101000101 + 01000101010001010100010101B6010101000101010001010100010101000000 + 000000000071FFFFFF00FFFFFF00FFFFFF000101010F01010100010101000101 + 01000101010001010100010101B9010101000101010001010100010101000101 + 01000101010FFFFFFF00FFFFFF00FFFFFF00010101BC010101BC010101BC0101 + 01BC010101BC010101BC0101018E010101BC010101BC010101BC010101BC0101 + 01BC010101BCFFFFFF00FFFFFF00FFFFFF000101011001010100010101000101 + 01000101010001010100010101C0010101000101010001010100010101000101 + 010001010110FFFFFF00FFFFFF00FFFFFF000000008000000000010101000101 + 01000101010001010100010101C4010101000101010001010100010101000000 + 000000000080FFFFFF00FFFFFF00FFFFFF000000001100000000010101000101 + 01000101010001010100010101C7010101000101010001010100010101000000 + 000000000011FFFFFF00FFFFFF00FFFFFF000101018901010100010101000101 + 01000101010001010100010101CC010101000101010001010100010101000101 + 010001010189FFFFFF00FFFFFF00FFFFFF000101011401010100010101000101 + 01000101010001010100000000D9010101000101010001010100010101000101 + 010001010113FFFFFF00FFFFFF00FFFFFF000101017B01010115010101A40101 + 0115010101A401010115000000E601010115010101A401010115010101A40101 + 01150101017BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00010101810000000D000000670000 + 000D000000670000000D000000670000000D000000670000000D000000670000 + 000D0000004DFFFFFF00FFFFFF00FFFFFF00010101AE01010100000000000000 + 000000000000000000000000000D000000000000000000000000000000000000 + 00000000000DFFFFFF00FFFFFF00FFFFFF00010101B001010100010101000000 + 000000000000000000000000006B000000000000000000000000000000000000 + 00000000006BFFFFFF00FFFFFF00FFFFFF00010101B301010100010101000101 + 010000000000000000000000000E000000000000000000000000000000000000 + 00000000000EFFFFFF00FFFFFF00FFFFFF00010101B601010100010101000000 + 0000000000000000000000000071000000000000000000000000000000000000 + 000000000071FFFFFF00FFFFFF00FFFFFF00010101B901010100000000000000 + 000000000000000000000000000F000000000000000000000000000000000000 + 00000000000FFFFFFF00FFFFFF00FFFFFF00010101BC0000000F000000780000 + 000F000000780000000F000000780000000F000000780000000F000000780000 + 000F00000078FFFFFF00FFFFFF00FFFFFF00010101C001010100000000000000 + 0000000000000000000000000010000000000000000000000000000000000000 + 000000000010FFFFFF00FFFFFF00FFFFFF00010101C401010100010101000000 + 0000000000000000000000000080000000000000000000000000000000000000 + 000000000080FFFFFF00FFFFFF00FFFFFF00010101C701010100010101000101 + 0100010101000000000000000011000000000101010001010100010101000000 + 000000000011FFFFFF00FFFFFF00FFFFFF00010101CC01010100010101000101 + 0100010101000101010001010189010101000101010001010100010101000101 + 010001010189FFFFFF00FFFFFF00FFFFFF00000000D901010100010101000101 + 0100010101000101010001010113010101000101010001010100010101000101 + 010001010113FFFFFF00FFFFFF00FFFFFF00000000AC01010115010101A40101 + 0115010101A401010115010101A401010115010101A401010115010101A40101 + 01150101017BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0001010181010101AC010101AC0101 + 01AC010101AC010101AC010101AC010101AC010101AC010101AC010101AC0101 + 01AC01010181FFFFFF00FFFFFF00FFFFFF00010101AE01010100010101000101 + 010001010100010101000101010D010101000101010001010100010101000101 + 0100010101AEFFFFFF00FFFFFF00FFFFFF00010101B001010100010101000101 + 010001010100000000000000006B000000000101010001010100010101000101 + 0100010101B0FFFFFF00FFFFFF00FFFFFF00010101B301010100010101000101 + 010001010100000000000000000E000000000000000001010100010101000101 + 0100010101B3FFFFFF00FFFFFF00FFFFFF00010101B601010100010101000000 + 0000000000000000000000000071000000000000000000000000010101000101 + 0100010101B6FFFFFF00FFFFFF00FFFFFF00010101B901010100000000000000 + 000000000000000000000000000F000000000000000000000000000000000101 + 0100010101B9FFFFFF00FFFFFF00FFFFFF00010101BC0000000F000000780000 + 000F000000780000000F000000780000000F000000780000000F000000780101 + 010F010101BCFFFFFF00FFFFFF00FFFFFF00010101C001010100000000000000 + 0000000000000000000000000010000000000000000000000000000000000101 + 0100010101C0FFFFFF00FFFFFF00FFFFFF00010101C401010100010101000000 + 0000000000000000000000000080000000000000000000000000010101000101 + 0100010101C4FFFFFF00FFFFFF00FFFFFF00010101C701010100010101000101 + 0100000000000000000000000011000000000000000001010100010101000101 + 0100010101C7FFFFFF00FFFFFF00FFFFFF00010101CC01010100010101000000 + 0000000000000101010001010189010101000000000000000000010101000101 + 0100010101CCFFFFFF00FFFFFF00FFFFFF00000000D900000000000000000000 + 0000000000000000000001010113010101000000000000000000000000000000 + 0000000000D9FFFFFF00FFFFFF00FFFFFF00000000AC000000E6000000E60000 + 00E6000000E6000000E6000000E6000000E6000000E6000000E6000000E60000 + 00E6000000ACFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0001010181010101AC010101AC0101 + 01AC010101AC010101AC010101AC010101AC010101AC010101AC010101AC0101 + 01AC01010181FFFFFF00FFFFFF00FFFFFF00010101AE010101AE010101AE0101 + 01AE010101AE010101AE010101AE010101AE010101AE010101AE010101AE0101 + 01AE010101AEFFFFFF00FFFFFF00FFFFFF00010101B0010101B0010101000101 + 010001010100010101000000006B010101000101010001010100010101000101 + 01B0010101B0FFFFFF00FFFFFF00FFFFFF00010101B3010101B3010101000101 + 010001010100010101000000000E000000000101010001010100010101000101 + 01B3010101B3FFFFFF00FFFFFF00FFFFFF00010101B6010101B6010101000101 + 0100000000000000000000000071000000000000000001010100010101000101 + 01B6010101B6FFFFFF00FFFFFF00FFFFFF00010101B9010101B9010101000000 + 000000000000000000000000000F000000000000000000000000010101000101 + 01B9010101B9FFFFFF00FFFFFF00FFFFFF00010101BC010101BC000000780000 + 000F000000780000000F000000780000000F000000780000000F000000780101 + 01BC010101BCFFFFFF00FFFFFF00FFFFFF00010101C0010101C0010101000000 + 0000000000000000000000000010000000000000000000000000010101000101 + 01C0010101C0FFFFFF00FFFFFF00FFFFFF00010101C4010101C4010101000101 + 0100000000000000000000000080000000000000000001010100010101000101 + 01C4010101C4FFFFFF00FFFFFF00FFFFFF00010101C7010101C7010101000101 + 0100000000000000000000000011000000000000000001010100010101000101 + 01C7010101C7FFFFFF00FFFFFF00FFFFFF00010101CC010101CC010101000000 + 0000000000000000000001010189000000000000000000000000010101000101 + 01CC010101CCFFFFFF00FFFFFF00FFFFFF00000000D9000000D9000000D90000 + 00D9000000D9000000D9000000D9000000D9000000D9000000D9000000D90000 + 00D9000000D9FFFFFF00FFFFFF00FFFFFF00000000AC000000E6000000E60000 + 00E6000000E6000000E6000000E6000000E6000000E6000000E6000000E60000 + 00E6000000ACFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000004D0000000D000000670000 + 000D000000670000000D000000670000000D000000670000000D000000670101 + 010D01010181FFFFFF00FFFFFF00FFFFFF000000000E00000000000000000000 + 000000000000000000000000000D000000000000000000000000000000000101 + 0100010101AEFFFFFF00FFFFFF00FFFFFF000000006B00000000000000000000 + 000000000000000000000000006B000000000000000000000000010101000101 + 0100010101B0FFFFFF00FFFFFF00FFFFFF000000000E00000000000000000000 + 000000000000000000000000000E000000000000000001010100010101000101 + 0100010101B3FFFFFF00FFFFFF00FFFFFF000000007100000000000000000000 + 0000000000000000000000000071000000000000000000000000010101000101 + 0100010101B6FFFFFF00FFFFFF00FFFFFF000000000F00000000000000000000 + 000000000000000000000000000F000000000000000000000000000000000101 + 0100010101B9FFFFFF00FFFFFF00FFFFFF00000000780000000F000000780000 + 000F000000780000000F000000780000000F000000780000000F000000780101 + 010F010101BCFFFFFF00FFFFFF00FFFFFF000000001000000000000000000000 + 0000000000000000000000000010000000000000000000000000000000000101 + 0100010101C0FFFFFF00FFFFFF00FFFFFF000000008000000000000000000000 + 0000000000000000000000000080000000000000000000000000010101000101 + 0100010101C4FFFFFF00FFFFFF00FFFFFF000000001100000000010101000101 + 0100010101000000000000000011000000000101010001010100010101000101 + 0100010101C7FFFFFF00FFFFFF00FFFFFF000101018901010100010101000101 + 0100010101000101010001010189010101000101010001010100010101000101 + 0100010101CCFFFFFF00FFFFFF00FFFFFF000101011401010100010101000101 + 0100010101000101010001010113010101000101010001010100010101000101 + 0100000000D9FFFFFF00FFFFFF00FFFFFF000101017B01010115010101A40101 + 0115010101A401010115010101A401010115010101A401010115010101A40101 + 0115000000ACFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0001010181010101AC010101AC0101 + 01AC010101AC010101AC010101AC010101AC010101AC010101AC010101AC0101 + 01AC01010181FFFFFF00FFFFFF00FFFFFF000101010E01010100010101000101 + 010001010100010101000101010D010101000101010001010100010101000101 + 01000101010DFFFFFF00FFFFFF00FFFFFF000000006B00000000010101000101 + 010001010100000000000000006B000000000101010001010100010101000000 + 00000000006BFFFFFF00FFFFFF00FFFFFF000000000E00000000010101000101 + 010001010100000000000000000E000000000000000001010100010101000000 + 00000000000EFFFFFF00FFFFFF00FFFFFF000000007100000000000000000000 + 0000000000000000000000000071000000000000000000000000000000000000 + 000000000071FFFFFF00FFFFFF00FFFFFF000000000F00000000000000000000 + 000000000000000000000000000F000000000000000000000000000000000000 + 00000000000FFFFFFF00FFFFFF00FFFFFF00000000780000000F000000780000 + 000F000000780000000F000000780000000F000000780000000F000000780000 + 000F00000078FFFFFF00FFFFFF00FFFFFF000000001000000000000000000000 + 0000000000000000000000000010000000000000000000000000000000000000 + 000000000010FFFFFF00FFFFFF00FFFFFF000000008000000000000000000000 + 0000000000000000000000000080000000000000000000000000000000000000 + 000000000080FFFFFF00FFFFFF00FFFFFF000000001100000000010101000101 + 0100010101000000000000000011000000000101010001010100010101000000 + 000000000011FFFFFF00FFFFFF00FFFFFF000101018901010100010101000101 + 0100010101000101010001010189010101000101010001010100010101000101 + 010001010189FFFFFF00FFFFFF00FFFFFF000101011401010100010101000101 + 0100010101000101010001010113010101000101010001010100010101000101 + 010001010113FFFFFF00FFFFFF00FFFFFF000101017B01010115010101A40101 + 0115010101A401010115010101A401010115010101A401010115010101A40101 + 01150101017BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0001010181010101AC010101AC0101 + 01AC010101AC010101AC010101AC010101AC010101AC010101AC010101AC0101 + 01AC01010181FFFFFF00FFFFFF00FFFFFF000101010E01010100010101000101 + 010001010100010101000101010D010101000101010001010100010101000101 + 01000101010DFFFFFF00FFFFFF00FFFFFF000000006B00000000010101000101 + 010001010100000000000000006B000000000101010001010100010101000000 + 00000000006BFFFFFF00FFFFFF00FFFFFF000000000E00000000010101000101 + 010001010100000000000000000E000000000000000001010100010101000000 + 00000000000EFFFFFF00FFFFFF00FFFFFF000000007100000000000000000000 + 0000000000000000000000000071000000000000000000000000000000000000 + 000000000071FFFFFF00FFFFFF00FFFFFF000000000F00000000000000000000 + 000000000000000000000000000F000000000000000000000000000000000000 + 00000000000FFFFFFF00FFFFFF00FFFFFF00000000780000000F000000780000 + 000F000000780000000F000000780000000F000000780000000F000000780000 + 000F00000078FFFFFF00FFFFFF00FFFFFF000000001000000000000000000000 + 0000000000000000000000000010000000000000000000000000000000000000 + 000000000010FFFFFF00FFFFFF00FFFFFF000000008000000000000000000000 + 0000000000000000000000000080000000000000000000000000000000000000 + 000000000080FFFFFF00FFFFFF00FFFFFF000000001100000000000000000000 + 0000000000000000000000000011000000000000000000000000000000000000 + 000000000011FFFFFF00FFFFFF00FFFFFF000101018901010100000000000000 + 0000000000000101010001010189010101000000000000000000000000000101 + 010001010189FFFFFF00FFFFFF00FFFFFF000101011400000000000000000000 + 0000000000000000000001010113010101000000000000000000000000000000 + 000001010113FFFFFF00FFFFFF00FFFFFF00000000AC000000E6000000E60000 + 00E6000000E6000000E6000000E6000000E6000000E6000000E6000000E60000 + 00E6000000ACFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0001010181010101AC010101AC0101 + 01AC010101AC010101AC010101AC010101AC010101AC010101AC010101AC0101 + 01AC01010181FFFFFF00FFFFFF00FFFFFF000101010E01010100010101000101 + 010001010100010101000101010D010101000101010001010100010101000101 + 01000101010DFFFFFF00FFFFFF00FFFFFF000000006B00000000010101000101 + 010001010100000000000000006B000000000101010001010100010101000000 + 00000000006BFFFFFF00FFFFFF00FFFFFF000000000E00000000010101000101 + 010001010100000000000000000E000000000000000001010100010101000000 + 00000000000EFFFFFF00FFFFFF00FFFFFF000000007100000000000000000000 + 0000000000000000000000000071000000000000000000000000000000000000 + 000000000071FFFFFF00FFFFFF00FFFFFF000000000F00000000000000000000 + 000000000000000000000000000F000000000000000000000000000000000000 + 00000000000FFFFFFF00FFFFFF00FFFFFF00000000780000000F000000780000 + 000F000000780000000F000000780000000F000000780000000F000000780000 + 000F00000078FFFFFF00FFFFFF00FFFFFF000000001000000000000000000000 + 0000000000000000000000000010000000000000000000000000000000000000 + 000000000010FFFFFF00FFFFFF00FFFFFF000000008000000000010101000101 + 0100010101000000000000000080000000000101010001010100010101000000 + 000000000080FFFFFF00FFFFFF00FFFFFF000101011101010100010101000101 + 0100010101000101010001010111010101000101010001010100010101000101 + 010001010111FFFFFF00FFFFFF00FFFFFF00010101CC010101CC010101CC0101 + 01CC010101CC010101CC010101CC010101CC010101CC010101CC010101CC0101 + 01CC010101CCFFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF00FFFFFF00FFFFFF00000000AC000000E6000000E60000 + 00E6000000E6000000E6000000E6000000E6000000E6000000E6000000E60000 + 00E6000000ACFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0001010181010101AC010101AC0101 + 01AC010101AC010101AC010101AC010101AC010101AC010101AC010101AC0101 + 01AC01010181FFFFFF00FFFFFF00FFFFFF000101010E01010100010101000101 + 010001010100010101000101010D010101000101010001010100010101000101 + 01000101010DFFFFFF00FFFFFF00FFFFFF000000006B00000000010101000101 + 010001010100000000000000006B000000000101010001010100010101000000 + 00000000006BFFFFFF00FFFFFF00FFFFFF000000000E00000000010101000101 + 010001010100000000000000000E000000000000000001010100010101000000 + 00000000000EFFFFFF00FFFFFF00FFFFFF000000007100000000000000000000 + 0000000000000000000000000071000000000000000000000000000000000000 + 000000000071FFFFFF00FFFFFF00FFFFFF000000000F00000000000000000000 + 000000000000000000000000000F000000000000000000000000000000000000 + 00000000000FFFFFFF00FFFFFF00FFFFFF00000000780000000F000000780000 + 000F000000780000000F000000780000000F000000780000000F000000780000 + 000F00000078FFFFFF00FFFFFF00FFFFFF000000001000000000000000000000 + 0000000000000000000000000010000000000000000000000000000000000000 + 000000000010FFFFFF00FFFFFF00FFFFFF000000008000000000000000000000 + 0000000000000000000000000080000000000000000000000000000000000000 + 000000000080FFFFFF00FFFFFF00FFFFFF000000001100000000000000000000 + 0000000000000000000000000011000000000000000000000000000000000000 + 000000000011FFFFFF00FFFFFF00FFFFFF000101018900000000000000000000 + 0000000000000000000001010189000000000000000000000000000000000000 + 000001010189FFFFFF00FFFFFF00FFFFFF00000000D9000000D9000000D90000 + 00D9000000D9000000D9000000D9000000D9000000D9000000D9000000D90000 + 00D9000000D9FFFFFF00FFFFFF00FFFFFF00000000AC000000E6000000E60000 + 00E6000000E6000000E6000000E6000000E6000000E6000000E6000000E60000 + 00E6000000ACFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000004D0000000D000000670000 + 000D000000670000000D000000670000000D000000670000000D000000330101 + 012B01010181FFFFFF00FFFFFF00FFFFFF000000000E00000000000000000000 + 00000000000000000000000000000000000000000000010101000101012C0101 + 01AE0101012CFFFFFF00FFFFFF00FFFFFF000000006B00000000000000000000 + 000000000000000000000000000001010100010101000101012C010101B00101 + 012C00000036FFFFFF00FFFFFF00FFFFFF000000000E00000000000000000000 + 0000000000000101010001010100010101000101012D010101B30101012D0101 + 01000000000EFFFFFF00FFFFFF00FFFFFF000000007100000000000000000000 + 00000101010001010100010101000101012E010101B60101012E010101000000 + 000000000071FFFFFF00FFFFFF00FFFFFF000000000F00000000000000000101 + 010001010100010101000101012F010101B90101012E01010100010101000000 + 00000000000FFFFFFF00FFFFFF00FFFFFF000000007800000000000000000101 + 01000101010001010130010101BC0101012F0101010001010100000000000000 + 000000000078FFFFFF00FFFFFF00FFFFFF000000001000000000010101000101 + 010001010131010101C001010130010101000101010001010100000000000000 + 000000000010FFFFFF00FFFFFF00FFFFFF000000008000000000010101000101 + 0132010101C40101013101010100010101000101010000000000000000000000 + 000000000080FFFFFF00FFFFFF00FFFFFF000000001100000000010101320101 + 01C7010101320101010001010100010101000101010001010100010101000000 + 000000000011FFFFFF00FFFFFF00FFFFFF000101014500000034010101CC0101 + 0133010101000101010001010100010101000101010001010100010101000101 + 010001010189FFFFFF00FFFFFF00FFFFFF0001010138000000D9010101360101 + 0100010101000101010001010100010101000101010001010100010101000101 + 010001010113FFFFFF00FFFFFF00FFFFFF00000000AC01010139010101540101 + 0115010101A401010115010101A401010115010101A401010115010101A40101 + 01150101017BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000004D0000000D000000670000 + 000D000000670101010D010101AC0000000D000000670000000D000000670000 + 000D0000004DFFFFFF00FFFFFF00FFFFFF000000000E00000000000000000000 + 00000000000001010100010101AE010101000000000000000000000000000000 + 00000000000DFFFFFF00FFFFFF00FFFFFF000000006B00000000000000000000 + 00000101010001010100010101B0010101000101010000000000000000000000 + 00000000006BFFFFFF00FFFFFF00FFFFFF000000000E00000000000000000101 + 01000101010001010100010101B3010101000101010001010100000000000000 + 00000000000EFFFFFF00FFFFFF00FFFFFF000000007100000000000000000000 + 00000101010001010100010101B6010101000101010000000000000000000000 + 000000000071FFFFFF00FFFFFF00FFFFFF000000000F00000000000000000000 + 00000000000001010100010101B9010101000000000000000000000000000000 + 00000000000FFFFFFF00FFFFFF00FFFFFF00000000780000000F000000780000 + 000F000000780101010F010101BC0000000F000000780000000F000000780000 + 000F00000078FFFFFF00FFFFFF00FFFFFF000000001000000000000000000000 + 00000000000001010100010101C0010101000000000000000000000000000000 + 000000000010FFFFFF00FFFFFF00FFFFFF000000008000000000000000000000 + 00000101010001010100010101C4010101000101010000000000000000000000 + 000000000080FFFFFF00FFFFFF00FFFFFF000000001100000000010101000101 + 01000101010001010100010101C7010101000101010001010100010101000000 + 000000000011FFFFFF00FFFFFF00FFFFFF000101018901010100010101000101 + 01000101010001010100010101CC010101000101010001010100010101000101 + 010001010189FFFFFF00FFFFFF00FFFFFF000101011401010100010101000101 + 01000101010001010100000000D9010101000101010001010100010101000101 + 010001010113FFFFFF00FFFFFF00FFFFFF000101017B01010115010101A40101 + 0115010101A401010115000000E601010115010101A401010115010101A40101 + 01150101017BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00010101810000000D000000670000 + 000D000000670101010D010101AC0000000D000000670000000D000000670101 + 010D01010181FFFFFF00FFFFFF00FFFFFF00010101AE01010100000000000000 + 00000000000001010100010101AE010101000000000000000000000000000101 + 0100010101AEFFFFFF00FFFFFF00FFFFFF00010101B001010100010101000000 + 00000101010001010100010101B0010101000101010000000000010101000101 + 0100010101B0FFFFFF00FFFFFF00FFFFFF00010101B301010100010101000101 + 01000101010001010100010101B3010101000101010001010100010101000101 + 0100010101B3FFFFFF00FFFFFF00FFFFFF00010101B601010100010101000000 + 00000101010001010100010101B6010101000101010000000000010101000101 + 0100010101B6FFFFFF00FFFFFF00FFFFFF00010101B901010100000000000000 + 00000000000001010100010101B9010101000000000000000000000000000101 + 0100010101B9FFFFFF00FFFFFF00FFFFFF00010101BC0000000F000000780000 + 000F000000780101010F010101BC0000000F000000780000000F000000780101 + 010F010101BCFFFFFF00FFFFFF00FFFFFF00010101C001010100000000000000 + 00000000000001010100010101C0010101000000000000000000000000000101 + 0100010101C0FFFFFF00FFFFFF00FFFFFF00010101C401010100010101000000 + 00000101010001010100010101C4010101000101010000000000010101000101 + 0100010101C4FFFFFF00FFFFFF00FFFFFF00010101C701010100010101000101 + 01000101010001010100010101C7010101000101010001010100010101000101 + 0100010101C7FFFFFF00FFFFFF00FFFFFF00010101CC01010100010101000101 + 01000101010001010100010101CC010101000101010001010100010101000101 + 0100010101CCFFFFFF00FFFFFF00FFFFFF00000000D901010100010101000101 + 01000101010001010100000000D9010101000101010001010100010101000101 + 0100000000D9FFFFFF00FFFFFF00FFFFFF00000000AC01010115010101A40101 + 0115010101A401010115000000E601010115010101A401010115010101A40101 + 0115000000ACFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0001010181010101AC010101AC0101 + 01AC010101AC010101AC010101AC010101AC010101AC010101AC010101AC0101 + 01AC01010181FFFFFF00FFFFFF00FFFFFF000101010001010100010101000101 + 0100010101000101010001010100010101000101010001010100010101000101 + 010001010100FFFFFF00FFFFFF00FFFFFF000101010001010100010101000101 + 0100010101000101010001010100010101000101010001010100010101000101 + 010001010100FFFFFF00FFFFFF00FFFFFF00010101B5010101B5010101B50101 + 01B5010101B5010101B5010101B5010101B5010101B5010101B5010101B50101 + 01B5010101B5FFFFFF00FFFFFF00FFFFFF00010101BA010101BA010101BA0101 + 01BA010101BA010101BA010101BA010101BA010101BA010101BA010101BA0101 + 01BA010101BAFFFFFF00FFFFFF00FFFFFF000101010001010100010101000101 + 0100010101000101010001010100010101000101010001010100010101000101 + 010001010100FFFFFF00FFFFFF00FFFFFF000101010001010100010101000101 + 0100010101000101010001010100010101000101010001010100010101000101 + 010001010100FFFFFF00FFFFFF00FFFFFF00010101C8010101C8010101C80101 + 01C8010101C8010101C8010101C8010101C8010101C8010101C8010101C80101 + 01C8010101C8FFFFFF00FFFFFF00FFFFFF00010101D1010101D1010101D10101 + 01D1010101D1010101D1010101D1010101D1010101D1010101D1010101D10101 + 01D1010101D1FFFFFF00FFFFFF00FFFFFF00000000AA000000E4000000E40000 + 00E4000000E4000000E4000000E4000000E4000000E4000000E4000000E40000 + 00E4000000AAFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00016395000163940001629300016192000162 + 930001629300016394000000000001334C00016597000164960001639400003A + 8C00003E9248003C8FCC00378A48016395000163940001629300016192000162 + 930001629300016394000000000001334C390165969C0164959C0163943E0039 + 8B48003688CC5285C9FF002E7ECC016395000163940001629300016192000162 + 93000162930001639400000000240000006788CCDDFF87CBDDFF016091AF0030 + 80CC3F72B6FF002774CC00247048016395000163940001629300016192000162 + 9300016293100162936D00000069DDDCDCFF949494FF70B4D6FF80C4DBFF015C + 8DB2001A63CC0013584800226E00016395050163941401629328016192410161 + 9277106C9AAB4B9BBADB79B9D5FC919191FFD9D4D4FF8D8D8DFF68ACCEFF74B8 + D4FF015887B4015686400155840001629383126D9BB82078A2C33385ABD058A2 + C0E774B9D1FB6EACCCFF669DC8FF83C7DAFF888888FFD3CACAFF838383FF60A4 + C6FF63A7C9FF015382A5015281000160913E015E8FB16AAEC9FF66A8C5FF5692 + B8FF4B80AFFF5D97BFFF77B9D2FF669DC8FF7BBAD5FF7E7E7EFFCEC0C0FF7979 + 79FF5588BBFF014F7EA6014E7D00015F9000002B5548002B55CC336898FF508C + B3FF69ABC8FF67A7C6FF4D80B3FF71B1CEFF6EA9CDFF6CA3CEFF6D6D6DFFAA99 + 99FF010101A5014C7A42014B7A00015F9000002B55000157873F015585B65FA1 + C0FF3F79A3FF4278A7FF66A6C5FF619DC2FF5E95C1FF74B4D1FF6598CBFF0101 + 01AB0101013C014B7900014B7A00015F9000002B550001568600002B5548002B + 55CC4F8DB3FF68ACC8FF4880ACFF5087B3FF6AAAC8FF5588BBFF00416EC1003E + 6A4401010100014B7900014B7A00015F9000002B550001568600002B5500014D + 7C41014B79BB3A719FFF386F9DFF5F9FC0FF4578ABFF003763C600356046003C + 680001010100014B7900014B7A00015F9000002B550001568600002B5500014C + 7B00002B5548002B55CC5494B7FF34679AFF00305ACA002D584800335E00003C + 680001010100014B7900014B7A00015F9000002B550001568600002B5500014C + 7B00002B550000315C47002D57CC002C56CC002B5548002C570000335E00003C + 680001010100014B7900014B7A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008AA8 + BF427EABC6BD78B3CDED7BB8D0FA7AB4CDFA71A9C4E8719DB9B07A99B039FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0086AAC29678BA + D2F9C8D9E3FFDDE7EAFFEEF1F1FFECF0F0FFD2E0E4FFA8C4D2FF679CB8F46C8F + A97DFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0085A8C09197CCDCFFE1EB + EEFFEEE1D9FFDFBEACFFD5AD96FFD4AA92FFDCB7A3FFE8DACEFFC6D9DFFF689B + B6FF64859F75FFFFFF00FFFFFF00FFFFFF0088A3B93C74B3CCFADFE9ECFFE6CF + C2FFDFBFAEFFF1E3DCFFF3F1ECFFF4F1EBFFF1E2D9FFDCBAA3FFDEC1AFFFB7CF + D8FF5883A4F56A869B31FFFFFF00FFFFFF0077A1BCB6B7CFDBFFEDE0D7FFDEBD + AAFFFFFFFFFFF0F0EEFFE7E5DAFFFFFFF7FFFFFFF7FFFFFEF3FFDCB498FFE1D1 + C4FF73A4BBFF597C98A3FFFFFF00FFFFFF006DA2BEE7D3E1E6FFDBB9A4FFF1E3 + D6FFFEFBF5FFF5F5F3FF9F9E95FFF0F0E9FFF8F8F2FFBEB9ADFFF0DAC2FFD1A7 + 8BFFA9CAD3FF537B9BDFFFFFFF00FFFFFF006CA1BDF7E4ECEEFFD1A58AFFFAF6 + E9FFFDF8EEFFFFFFF9FF818079FFB1AEA4FF817F77FFC9C6BAFFFAF0D3FFC995 + 72FFC9DFE2FF547B9EF6FFFFFF00FFFFFF00679AB8F7DDEAECFFCF9F81FFFAF3 + E2FFFDF6E9FFF2F0E3FF8D8C84FF817F77FFD2CFC2FFFFFBEBFFFAECCCFFC790 + 6DFFC1DDE1FF53799DF6FFFFFF00FFFFFF005E8EADDEB7D3DDFFD1AA90FFF0DB + C1FFFFF7E6FFFAF2E3FFC5C0B6FFF1EDDEFFFFFCE8FFFFF5DFFFEFD4AFFFC99B + 7BFF92C2D0FF507595E2FFFFFF00FFFFFF005E85A09F78A9C0FFDAD1C6FFD9AA + 88FFFFFEEBFFFFFAEEFFFFFDF2FFFFFEF2FFFFFCEFFFFFFDEBFFD9A37AFFCBC6 + B9FF5894B1FF547490AAFFFFFF00FFFFFF006B879D305782A2F6A2CCD8FFCDB7 + A5FFD8AA89FFEFDFCFFFFAF6F3FFFAF5F3FFEFDFD1FFD7A785FFC3AC98FF82BD + CEFF4D7194F7627B9135FFFFFF00FFFFFF00FFFFFF0061819A785588A6FF96C8 + D6FFCCCABFFFC89F86FFC59276FFC49073FFC49A80FFC3C4B9FF7DBDCDFF4777 + 98FF5A778F80FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005D7C957D5078 + 9AF35A97B1FF85BDCEFFA4D6DEFFA0D5DEFF7BB9CBFF4F8CABFF4D7294F45976 + 8F82FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00617D + 9536537591A74E7293E14D7497F64D7497F64E7293E1527490A95E7A9137FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00 } end @@ -908,6 +2242,118 @@ object Form1: TForm1 Action = acRenameWorksheet end end + object MenuItem9: TMenuItem + Caption = 'Cell' + object MenuItem10: TMenuItem + Caption = 'Number format' + object MenuItem12: TMenuItem + Action = AcNumFormatFixed + AutoCheck = True + end + object MenuItem11: TMenuItem + Action = AcNumFormatFixedTh + AutoCheck = True + end + object MenuItem13: TMenuItem + Caption = '-' + end + object MenuItem14: TMenuItem + Action = AcNumFormatPercentage + AutoCheck = True + end + object MenuItem15: TMenuItem + Caption = '-' + end + object MenuItem17: TMenuItem + Action = AcNumFormatCurrency + AutoCheck = True + end + object MenuItem16: TMenuItem + Action = AcNumFormatCurrencyRed + AutoCheck = True + end + end + end + end + end + object PuNumFormat: TPopupMenu + left = 141 + top = 402 + object MenuItem19: TMenuItem + Action = AcNumFormatGeneral + AutoCheck = True + end + object MenuItem18: TMenuItem + Caption = '-' + end + object MenuItem6: TMenuItem + Action = AcNumFormatFixed + AutoCheck = True + end + object MenuItem5: TMenuItem + Action = AcNumFormatFixedTh + AutoCheck = True + end + object MenuItem20: TMenuItem + Caption = '-' + end + object MenuItem21: TMenuItem + Action = AcNumFormatExp + AutoCheck = True + end + end + object PuCurrencyFormat: TPopupMenu + left = 141 + top = 464 + object MenuItem7: TMenuItem + Action = AcNumFormatCurrency + AutoCheck = True + end + object MenuItem8: TMenuItem + Action = AcNumFormatCurrencyRed + AutoCheck = True + end + end + object PuDateFormat: TPopupMenu + left = 300 + top = 402 + object MenuItem22: TMenuItem + Action = AcNumFormatDateTime + AutoCheck = True + end + object MenuItem23: TMenuItem + Caption = '-' + end + object MenuItem24: TMenuItem + Action = AcNumFormatLongDate + AutoCheck = True + end + object MenuItem25: TMenuItem + Action = AcNumFormatShortDate + AutoCheck = True + end + end + object PuTimeFormat: TPopupMenu + left = 300 + top = 464 + object MenuItem26: TMenuItem + Action = AcNumFormatLongTime + AutoCheck = True + end + object MenuItem27: TMenuItem + Action = AcNumFormatShortTime + AutoCheck = True + end + object MenuItem28: TMenuItem + Caption = '-' + end + object MenuItem29: TMenuItem + Action = AcNumFormatLongTimeAM + AutoCheck = True + end + object MenuItem30: TMenuItem + Action = AcNumFormatShortTimeAM + AutoCheck = True end end end diff --git a/components/fpspreadsheet/examples/fpsctrls/main.pas b/components/fpspreadsheet/examples/fpsctrls/main.pas index c94cfe16c..c61583281 100644 --- a/components/fpspreadsheet/examples/fpsctrls/main.pas +++ b/components/fpspreadsheet/examples/fpsctrls/main.pas @@ -20,9 +20,35 @@ type ImageList: TImageList; MainMenu: TMainMenu; MenuItem1: TMenuItem; + MenuItem10: TMenuItem; + MenuItem11: TMenuItem; + MenuItem12: TMenuItem; + MenuItem13: TMenuItem; + MenuItem14: TMenuItem; + MenuItem15: TMenuItem; + MenuItem16: TMenuItem; + MenuItem17: TMenuItem; + MenuItem18: TMenuItem; + MenuItem19: TMenuItem; MenuItem2: TMenuItem; + MenuItem20: TMenuItem; + MenuItem21: TMenuItem; + MenuItem22: TMenuItem; + MenuItem23: TMenuItem; + MenuItem24: TMenuItem; + MenuItem25: TMenuItem; + MenuItem26: TMenuItem; + MenuItem27: TMenuItem; + MenuItem28: TMenuItem; + MenuItem29: TMenuItem; MenuItem3: TMenuItem; + MenuItem30: TMenuItem; MenuItem4: TMenuItem; + MenuItem5: TMenuItem; + MenuItem6: TMenuItem; + MenuItem7: TMenuItem; + MenuItem8: TMenuItem; + MenuItem9: TMenuItem; MnuFile: TMenuItem; MnuWorksheet: TMenuItem; MnuAddSheet: TMenuItem; @@ -40,6 +66,30 @@ type AcHorAlignLeft: TsHorAlignmentAction; AcHorAlignCenter: TsHorAlignmentAction; AcHorAlignRight: TsHorAlignmentAction; + AcTextRotHor: TsTextRotationAction; + AcTextRot90CW: TsTextRotationAction; + AcTextRot90CCW: TsTextRotationAction; + AcTextRotStacked: TsTextRotationAction; + AcWordWrap: TsWordwrapAction; + AcNumFormatFixed: TsNumberFormatAction; + AcNumFormatFixedTh: TsNumberFormatAction; + AcNumFormatPercentage: TsNumberFormatAction; + AcNumFormatCurrency: TsNumberFormatAction; + AcNumFormatCurrencyRed: TsNumberFormatAction; + PuTimeFormat: TPopupMenu; + PuDateFormat: TPopupMenu; + PuCurrencyFormat: TPopupMenu; + PuNumFormat: TPopupMenu; + AcNumFormatGeneral: TsNumberFormatAction; + AcNumFormatExp: TsNumberFormatAction; + AcNumFormatDateTime: TsNumberFormatAction; + AcNumFormatLongDate: TsNumberFormatAction; + AcNumFormatShortDate: TsNumberFormatAction; + AcNumFormatLongTime: TsNumberFormatAction; + AcNumFormatShortTime: TsNumberFormatAction; + AcNumFormatLongTimeAM: TsNumberFormatAction; + AcNumFormatShortTimeAM: TsNumberFormatAction; + AcNumFormatTimeInterval: TsNumberFormatAction; ToolButton11: TToolButton; ToolButton12: TToolButton; ToolButton13: TToolButton; @@ -61,6 +111,12 @@ type ToolButton1: TToolButton; ToolButton10: TToolButton; ToolButton2: TToolButton; + ToolButton20: TToolButton; + ToolButton21: TToolButton; + ToolButton22: TToolButton; + ToolButton23: TToolButton; + ToolButton24: TToolButton; + ToolButton25: TToolButton; ToolButton3: TToolButton; ToolButton4: TToolButton; ToolButton5: TToolButton; diff --git a/components/fpspreadsheet/examples/fpsctrls_no_install/main.lfm b/components/fpspreadsheet/examples/fpsctrls_no_install/main.lfm index 7d1c16dd8..c2e1d6c49 100644 --- a/components/fpspreadsheet/examples/fpsctrls_no_install/main.lfm +++ b/components/fpspreadsheet/examples/fpsctrls_no_install/main.lfm @@ -4,7 +4,7 @@ object Form1: TForm1 Top = 177 Width = 874 Caption = 'Form1' - ClientHeight = 508 + ClientHeight = 503 ClientWidth = 874 Menu = MainMenu OnCreate = FormCreate @@ -126,10 +126,10 @@ object Form1: TForm1 end object CbLoader: TComboBox Left = 104 - Height = 23 + Height = 28 Top = 8 Width = 148 - ItemHeight = 15 + ItemHeight = 20 ItemIndex = 1 Items.Strings = ( 'Workbook' @@ -142,16 +142,16 @@ object Form1: TForm1 end object Label1: TLabel Left = 13 - Height = 15 + Height = 20 Top = 11 - Width = 58 + Width = 73 Caption = 'Loaded by:' ParentColor = False end end object InspectorTabControl: TTabControl Left = 577 - Height = 408 + Height = 403 Top = 100 Width = 297 OnChange = InspectorTabControlChange @@ -167,7 +167,7 @@ object Form1: TForm1 end object Splitter1: TSplitter Left = 572 - Height = 408 + Height = 403 Top = 100 Width = 5 Align = alRight @@ -328,6 +328,93 @@ object Form1: TForm1 Caption = 'New Item21' end end + object MnuTextRotation: TMenuItem + Caption = 'Text rotation' + object MnuTextRotHor: TMenuItem + Caption = 'New Item24' + end + object MnuTextRot90CW: TMenuItem + Caption = 'New Item25' + end + object MnuTextRot90CCW: TMenuItem + Caption = 'New Item26' + end + object MnuTextRotStacked: TMenuItem + Caption = 'New Item27' + end + end + object MnuNumberFormat: TMenuItem + Caption = 'Number format' + object MnuNumFormatGeneral: TMenuItem + Caption = 'New Item29' + end + object MenuItem3: TMenuItem + Caption = '-' + end + object MnuNumFormatFixed: TMenuItem + Caption = 'New Item31' + end + object MnuNumFormatFixedTh: TMenuItem + Caption = 'New Item32' + end + object MnuNumFormatExp: TMenuItem + Caption = 'New Item33' + end + object MnuNumFormatPercentage: TMenuItem + Caption = 'New Item34' + end + object MenuItem8: TMenuItem + Caption = '-' + end + object MnuNumFormatCurrency: TMenuItem + Caption = 'New Item36' + end + object MnuNumFormatCurrencyRed: TMenuItem + Caption = 'New Item37' + end + object MenuItem4: TMenuItem + Caption = '-' + end + object MnuNumFormatShortDateTime: TMenuItem + Caption = 'New Item39' + end + object MenuItem2: TMenuItem + Caption = '-' + end + object MnuNumFormatLongDate: TMenuItem + Caption = 'New Item41' + end + object MnuNumFormatShortDate: TMenuItem + Caption = 'New Item42' + end + object MenuItem1: TMenuItem + Caption = '-' + end + object MnuNumFormatLongTime: TMenuItem + Caption = 'New Item44' + end + object MnuNumFormatShortTime: TMenuItem + Caption = 'New Item45' + end + object MenuItem5: TMenuItem + Caption = '-' + end + object MnuNumFormatLongTimeAM: TMenuItem + Caption = 'New Item47' + end + object MnuNumFormatShortTimeAM: TMenuItem + Caption = 'New Item48' + end + object MenuItem6: TMenuItem + Caption = '-' + end + object MnuNumFormatTimeInterval: TMenuItem + Caption = 'New Item50' + end + end + object MnuWordwrap: TMenuItem + Caption = 'New Item23' + end end end end diff --git a/components/fpspreadsheet/examples/fpsctrls_no_install/main.pas b/components/fpspreadsheet/examples/fpsctrls_no_install/main.pas index 1ac7d258d..35e56c5ff 100644 --- a/components/fpspreadsheet/examples/fpsctrls_no_install/main.pas +++ b/components/fpspreadsheet/examples/fpsctrls_no_install/main.pas @@ -21,6 +21,35 @@ type ImageList1: TImageList; Label1: TLabel; MainMenu: TMainMenu; + MenuItem1: TMenuItem; + MenuItem5: TMenuItem; + MenuItem6: TMenuItem; + MnuNumFormatTimeInterval: TMenuItem; + MnuNumFormatLongTimeAM: TMenuItem; + MnuNumFormatShortTimeAM: TMenuItem; + MnuNumFormatLongTime: TMenuItem; + MnuNumFormatShortTime: TMenuItem; + MnuNumFormatShortDateTime: TMenuItem; + MenuItem2: TMenuItem; + MnuNumFormatLongDate: TMenuItem; + MnuNumFormatShortDate: TMenuItem; + MnuNumFormatCurrency: TMenuItem; + MnuNumFormatCurrencyRed: TMenuItem; + MenuItem4: TMenuItem; + MnuNumberFormat: TMenuItem; + MnuNumFormatGeneral: TMenuItem; + MenuItem3: TMenuItem; + MnuNumFormatFixed: TMenuItem; + MnuNumFormatFixedTh: TMenuItem; + MnuNumFormatExp: TMenuItem; + MnuNumFormatPercentage: TMenuItem; + MenuItem8: TMenuItem; + MnuTextRotHor: TMenuItem; + MnuTextRot90CW: TMenuItem; + MnuTextRot90CCW: TMenuItem; + MnuTextRotStacked: TMenuItem; + MnuTextRotation: TMenuItem; + MnuWordwrap: TMenuItem; MnuVertAlignTop: TMenuItem; MnuVertAlignCenter: TMenuItem; MnuVertAlignBottom: TMenuItem; @@ -295,6 +324,168 @@ begin MnuVertAlignBottom.Action := actn; TbVertAlignBottom.Action := Actn; + { Text rotation } + actn := TsTextRotationAction.Create(self); + with TsTextRotationAction(actn) do begin + ActionList := self.ActionList; + WorkbookSource := Self.WorkbookSource; + TextRotation := trHorizontal; + end; + MnuTextRotHor.Action := actn; + + actn := TsTextRotationAction.Create(self); + with TsTextRotationAction(actn) do begin + ActionList := self.ActionList; + WorkbookSource := Self.WorkbookSource; + TextRotation := rt90DegreeClockwiseRotation; + end; + MnuTextRot90CW.Action := actn; + + actn := TsTextRotationAction.Create(self); + with TsTextRotationAction(actn) do begin + ActionList := self.ActionList; + WorkbookSource := Self.WorkbookSource; + TextRotation := rt90DegreeCounterClockwiseRotation; + end; + MnuTextRot90CCW.Action := actn; + + actn := TsTextRotationAction.Create(self); + with TsTextRotationAction(actn) do begin + ActionList := self.ActionList; + WorkbookSource := Self.WorkbookSource; + TextRotation := rtStacked; + end; + MnuTextRotStacked.Action := actn; + + { Word wrap } + actn := TsWordwrapAction.Create(self); + with TsWordwrapAction(actn) do begin + ActionList := self.ActionList; + WorkbookSource := Self.WorkbookSource; + Wordwrap := false; + end; + MnuWordwrap.Action := actn; + + { Number format } + actn := TsNumberFormatAction.Create(self); + with TsNumberFormatAction(actn) do begin + ActionList := self.ActionList; + WorkbookSource := Self.WorkbookSource; + NumberFormat := nfGeneral; + end; + MnuNumFormatGeneral.Action := actn; + + actn := TsNumberFormatAction.Create(self); + with TsNumberFormatAction(actn) do begin + ActionList := self.ActionList; + WorkbookSource := Self.WorkbookSource; + NumberFormat := nfFixed; + end; + MnuNumFormatFixed.Action := actn; + + actn := TsNumberFormatAction.Create(self); + with TsNumberFormatAction(actn) do begin + ActionList := self.ActionList; + WorkbookSource := Self.WorkbookSource; + NumberFormat := nfFixedTh; + end; + MnuNumFormatFixedTh.Action := actn; + + actn := TsNumberFormatAction.Create(self); + with TsNumberFormatAction(actn) do begin + ActionList := self.ActionList; + WorkbookSource := Self.WorkbookSource; + NumberFormat := nfExp; + end; + MnuNumFormatExp.Action := actn; + + actn := TsNumberFormatAction.Create(self); + with TsNumberFormatAction(actn) do begin + ActionList := self.ActionList; + WorkbookSource := Self.WorkbookSource; + NumberFormat := nfPercentage; + end; + MnuNumFormatPercentage.Action := actn; + + actn := TsNumberFormatAction.Create(self); + with TsNumberFormatAction(actn) do begin + ActionList := self.ActionList; + WorkbookSource := Self.WorkbookSource; + NumberFormat := nfCurrency; + end; + MnuNumFormatCurrency.Action := actn; + + actn := TsNumberFormatAction.Create(self); + with TsNumberFormatAction(actn) do begin + ActionList := self.ActionList; + WorkbookSource := Self.WorkbookSource; + NumberFormat := nfCurrencyRed; + end; + MnuNumFormatCurrencyRed.Action := actn; + + actn := TsNumberFormatAction.Create(self); + with TsNumberFormatAction(actn) do begin + ActionList := self.ActionList; + WorkbookSource := Self.WorkbookSource; + NumberFormat := nfShortDateTime; + end; + MnuNumFormatShortDateTime.Action := actn; + + actn := TsNumberFormatAction.Create(self); + with TsNumberFormatAction(actn) do begin + ActionList := self.ActionList; + WorkbookSource := Self.WorkbookSource; + NumberFormat := nfLongDate; + end; + MnuNumFormatLongDate.Action := actn; + + actn := TsNumberFormatAction.Create(self); + with TsNumberFormatAction(actn) do begin + ActionList := self.ActionList; + WorkbookSource := Self.WorkbookSource; + NumberFormat := nfShortDate; + end; + MnuNumFormatShortDate.Action := actn; + + actn := TsNumberFormatAction.Create(self); + with TsNumberFormatAction(actn) do begin + ActionList := self.ActionList; + WorkbookSource := Self.WorkbookSource; + NumberFormat := nfLongTime; + end; + MnuNumFormatLongTime.Action := actn; + + actn := TsNumberFormatAction.Create(self); + with TsNumberFormatAction(actn) do begin + ActionList := self.ActionList; + WorkbookSource := Self.WorkbookSource; + NumberFormat := nfShortTime; + end; + MnuNumFormatShortTime.Action := actn; + + actn := TsNumberFormatAction.Create(self); + with TsNumberFormatAction(actn) do begin + ActionList := self.ActionList; + WorkbookSource := Self.WorkbookSource; + NumberFormat := nfLongTimeAM; + end; + MnuNumFormatLongTimeAM.Action := actn; + + actn := TsNumberFormatAction.Create(self); + with TsNumberFormatAction(actn) do begin + ActionList := self.ActionList; + WorkbookSource := Self.WorkbookSource; + NumberFormat := nfShortTimeAM; + end; + MnuNumFormatShortTimeAM.Action := actn; + + actn := TsNumberFormatAction.Create(self); + with TsNumberFormatAction(actn) do begin + ActionList := self.ActionList; + WorkbookSource := Self.WorkbookSource; + NumberFormat := nfTimeInterval; + end; + MnuNumFormatTimeInterval.Action := actn; end; procedure TForm1.InspectorTabControlChange(Sender: TObject); diff --git a/components/fpspreadsheet/fpsactions.pas b/components/fpspreadsheet/fpsactions.pas index d61706a65..b9f91952e 100644 --- a/components/fpspreadsheet/fpsactions.pas +++ b/components/fpspreadsheet/fpsactions.pas @@ -133,7 +133,8 @@ type public constructor Create(AOwner: TComponent); override; published - property FontStyle: TsFontStyle read FFontStyle write SetFontStyle; + property FontStyle: TsFontStyle + read FFontStyle write SetFontStyle; end; @@ -149,7 +150,8 @@ type public constructor Create(AOwner: TComponent); override; published - property HorAlignment: TsHorAlignment read FHorAlign write SetHorAlign; + property HorAlignment: TsHorAlignment + read FHorAlign write SetHorAlign default haDefault; end; @@ -165,24 +167,83 @@ type public constructor Create(AOwner: TComponent); override; published - property VertAlignment: TsVertAlignment read FVertAlign write SetVertAlign; + property VertAlignment: TsVertAlignment + read FVertAlign write SetVertAlign default vaDefault; end; + { TsTextRotationAction } + + TsTextRotationAction = class(TsCellFormatAction) + private + FTextRotation: TsTextRotation; + procedure SetTextRotation(AValue: TsTextRotation); + protected + procedure ApplyFormatToCell(ACell: PCell); override; + procedure ExtractFromCell(ACell: PCell); override; + public + constructor Create(AOwner: TComponent); override; + published + property TextRotation: TsTextRotation + read FTextRotation write SetTextRotation default trHorizontal; + end; + + + { TsWordwrapAction } + + TsWordwrapAction = class(TsCellFormatAction) + private + function GetWordwrap: Boolean; + procedure SetWordwrap(AValue: Boolean); + protected + procedure ApplyFormatToCell(ACell: PCell); override; + procedure ExtractFromCell(ACell: PCell); override; + public + constructor Create(AOwner: TComponent); override; + published + property Wordwrap: boolean + read GetWordwrap write SetWordwrap default false; + end; + + + { TsNumberFormatAction } + + TsNumberFormatAction = class(TsCellFormatAction) + private + FNumberFormat: TsNumberFormat; + FNumberFormatStr: string; + procedure SetNumberFormat(AValue: TsNumberFormat); + procedure SetNumberFormatStr(AValue: String); + protected + procedure ApplyFormatToCell(ACell: PCell); override; + procedure ExtractFromCell(ACell: PCell); override; + public + constructor Create(AOwner: TComponent); override; + published + property NumberFormat: TsNumberFormat + read FNumberFormat write SetNumberFormat default nfGeneral; + property NumberFormatString: string + read FNumberFormatStr write SetNumberFormatStr; + end; + procedure Register; implementation uses - Dialogs; + Dialogs, + fpsutils; procedure Register; begin RegisterActions('FPSpreadsheet', [ + // Worksheet-releated actions TsWorksheetAddAction, TsWorksheetDeleteAction, TsWorksheetRenameAction, + // Cell or cell range formatting actions TsFontStyleAction, - TsHorAlignmentAction, TsVertAlignmentAction + TsHorAlignmentAction, TsVertAlignmentAction, + TsTextRotationAction, TsWordWrapAction, TsNumberFormatAction ], nil); end; @@ -550,4 +611,161 @@ begin end; +{ TsTextRotationAction } + +constructor TsTextRotationAction.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + GroupIndex := 1411141108; // Date/time when this was written + AutoCheck := true; +end; + +procedure TsTextRotationAction.ApplyFormatToCell(ACell: PCell); +begin + if Checked then + Worksheet.WriteTextRotation(ACell, FTextRotation) + else + Worksheet.WriteTextRotation(ACell, trHorizontal); +end; + +procedure TsTextRotationAction.ExtractFromCell(ACell: PCell); +begin + if (ACell = nil) or not (uffTextRotation in ACell^.UsedFormattingFields) then + Checked := false + else + Checked := ACell^.TextRotation = FTextRotation; +end; + +procedure TsTextRotationAction.SetTextRotation(AValue: TsTextRotation); +begin + FTextRotation := AValue; + case FTextRotation of + trHorizontal: + begin Caption := 'Horizontal'; Hint := 'Horizontal text'; end; + rt90DegreeClockwiseRotation: + begin Caption := '90° clockwise'; Hint := '90° clockwise rotated text'; end; + rt90DegreeCounterClockwiseRotation: + begin Caption := '90° counter-clockwise'; Hint := '90° counter-clockwise rotated text'; end; + rtStacked: + begin Caption := 'Stacked'; Hint := 'Vertically stacked horizontal letters'; end; + end; +end; + + +{ TsWordwrapAction } + +constructor TsWordwrapAction.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + AutoCheck := true; + Caption := 'Word-wrap'; + Hint := 'Word-wrapped text'; +end; + +procedure TsWordwrapAction.ApplyFormatToCell(ACell: PCell); +begin + Worksheet.WriteWordwrap(ACell, Checked); +end; + +procedure TsWordwrapAction.ExtractFromCell(ACell: PCell); +begin + Checked := (ACell <> nil) and (uffWordwrap in ACell^.UsedFormattingFields); +end; + +function TsWordwrapAction.GetWordwrap: Boolean; +begin + Result := Checked; +end; + +procedure TsWordwrapAction.SetWordwrap(AValue: Boolean); +begin + Checked := AValue; +end; + + +{ TsNumberFormatAction } + +constructor TsNumberFormatAction.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + GroupIndex := 1411141258; // Date/time when this was written + AutoCheck := true; + Caption := 'Number format'; + Hint := 'Number format'; +end; + +procedure TsNumberFormatAction.ApplyFormatToCell(ACell: PCell); +var + nf: TsNumberFormat; + nfstr: String; +begin + if Checked then + begin + nf := FNumberFormat; + nfstr := FNumberFormatStr; + end else + begin + nf := nfGeneral; + nfstr := ''; + end; + if IsDateTimeFormat(nf) then + Worksheet.WriteDateTimeFormat(ACell, nf, nfstr) + else + Worksheet.WriteNumberFormat(ACell, nf, nfstr); +end; + +procedure TsNumberFormatAction.ExtractFromCell(ACell: PCell); +begin + if (ACell = nil) or not (uffNumberFormat in ACell^.UsedFormattingFields) then + Checked := false + else + Checked := (ACell^.NumberFormat = FNumberFormat) + and (ACell^.NumberFormatStr = FNumberFormatStr); +end; + +procedure TsNumberFormatAction.SetNumberFormat(AValue: TsNumberFormat); +begin + FNumberFormat := AValue; + case FNumberFormat of + nfGeneral: + begin Caption := 'General'; Hint := 'General format'; end; + nfFixed: + begin Caption := 'Fixed'; Hint := 'Fixed decimals format'; end; + nfFixedTh: + begin Caption := 'Fixed w/thousand separator'; Hint := 'Fixed decimal count with thousand separator'; end; + nfExp: + begin Caption := 'Exponential'; Hint := 'Exponential format'; end; + nfPercentage: + begin Caption := 'Percent'; Hint := 'Percent format'; end; + nfCurrency: + begin Caption := 'Currency'; Hint := 'Currency format'; end; + nfCurrencyRed: + begin Caption := 'Currency (red)'; Hint := 'Currency format (negative values in red)'; end; + nfShortDateTime: + begin Caption := 'Date/time'; Hint := 'Date and time'; end; + nfShortDate: + begin Caption := 'Short date'; Hint := 'Short date format'; end; + nfLongDate: + begin Caption := 'Long date'; Hint := 'Long date format'; end; + nfShortTime: + begin Caption := 'Short time'; Hint := 'Short time format'; end; + nfLongTime: + begin Caption := 'Long time'; Hint := 'Long time foramt'; end; + nfShortTimeAM: + begin Caption := 'Short time AM/PM'; Hint := 'Short 12-hour time format'; end; + nfLongTimeAM: + begin Caption := 'Long time AM/PM'; Hint := 'Long 12-hour time format'; end; + nfTimeInterval: + begin Caption := 'Time interval'; Hint := 'Time interval format'; end; + nfCustom: + begin Caption := 'Custom'; Hint := 'User-defined custom format'; end; + end; +end; + +procedure TsNumberFormatAction.SetNumberFormatStr(AValue: String); +begin + FNumberFormatStr := AValue; +end; + + end. diff --git a/components/fpspreadsheet/fpsutils.pas b/components/fpspreadsheet/fpsutils.pas index 9d1a20538..faca49594 100644 --- a/components/fpspreadsheet/fpsutils.pas +++ b/components/fpspreadsheet/fpsutils.pas @@ -1094,8 +1094,11 @@ begin nfPercentage: Result := '0' + decs + '%'; nfCurrency, nfCurrencyRed: - raise Exception.Create('BuildNumberFormatString: Use BuildCurrencyFormatString '+ - 'to create a format string for currency values.'); + Result := BuildCurrencyFormatString(nfdDefault, ANumberFormat, AFormatSettings, + ADecimals, AFormatSettings.CurrencyFormat, AFormatSettings.NegCurrFormat, + AFormatSettings.CurrencyString); +// raise Exception.Create('BuildNumberFormatString: Use BuildCurrencyFormatString '+ +// 'to create a format string for currency values.'); nfShortDateTime, nfShortDate, nfLongDate, nfShortTime, nfLongTime, nfShortTimeAM, nfLongTimeAM, nfTimeInterval: raise Exception.Create('BuildNumberFormatString: Use BuildDateTimeFormatSstring '+