Marco's Web Center

Menu for Development

Site Menu
Object Pascal Handbook
Delphi Handbooks Collection
Mastering Borland Delphi 2005
(Old) White Papers
(Old)Tools
(Old) Conferences

My Other Sites
Italian Site (www.marcocantu.it)
the delphi search

Spirit of delphi

Advertising
Home My Blog Books Object Pascal Marco

Home: Code Repository: Mastering Delphi 5

Project TOTAL

Project Structure


TOTAL.DPR

program Total;

uses
  Forms,
  TotalF in 'TotalF.pas' {SearchForm};

{$R *.RES}

begin
  Application.CreateForm(TSearchForm, SearchForm);
  Application.Run;
end.

TOTALF.PAS

unit TotalF;

interface

uses
  SysUtils, Windows, Messages, Classes, Graphics, Controls,
  StdCtrls, Forms, DBCtrls, DB, Buttons, DBTables, Mask, ExtCtrls,
  Dialogs, Spin, DBActns, ActnList, ImgList, ComCtrls, ToolWin;

type
  TSearchForm = class(TForm)
    DataSource1: TDataSource;
    Table1: TTable;
    Table1EmpNo: TIntegerField;
    Table1LastName: TStringField;
    Table1FirstName: TStringField;
    Table1PhoneExt: TStringField;
    Table1HireDate: TDateTimeField;
    Table1Salary: TCurrencyField;
    ScrollBox: TScrollBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    EditEmpNo: TDBEdit;
    EditLastName: TDBEdit;
    EditFirstName: TDBEdit;
    EditPhoneExt: TDBEdit;
    EditHireDate: TDBEdit;
    EditSalary: TDBEdit;
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    ToolButton5: TToolButton;
    Edit1: TEdit;
    ToolButton7: TToolButton;
    ToolButton6: TToolButton;
    ActionList: TActionList;
    DataSetFirst1: TDataSetFirst;
    DataSetLast1: TDataSetLast;
    DataSetNext1: TDataSetNext;
    DataSetPrior1: TDataSetPrior;
    ActionGoto: TAction;
    ActionGoNear: TAction;
    ImageList: TImageList;
    ToolButton8: TToolButton;
    SpinEdit1: TSpinEdit;
    ToolButton9: TToolButton;
    ToolButton10: TToolButton;
    ActionTotal: TAction;
    ActionIncrease: TAction;
    procedure FormCreate(Sender: TObject);
    procedure ActionIncreaseExecute(Sender: TObject);
    procedure ActionTotalExecute(Sender: TObject);
    procedure ActionGoNearExecute(Sender: TObject);
    procedure ActionGotoExecute(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  SearchForm: TSearchForm;

implementation

{$R *.DFM}

procedure TSearchForm.FormCreate(Sender: TObject);
begin
  Table1.IndexFieldNames := 'LastName';
  Table1.First;
end;

procedure TSearchForm.ActionIncreaseExecute(Sender: TObject);
var
  Bookmark: TBookmarkStr;
  Total: Real;
begin
  // store the current position in a bookmark
  Bookmark := Table1.Bookmark;
  Table1.DisableControls;
  Total := 0;
  try
    Table1.First;
    while not Table1.EOF do
    begin
      // start edit mode
      Table1.Edit;
      Table1Salary.Value := Round (Table1Salary.Value *
        SpinEdit1.Value) / 100;
      Total := Total + Table1Salary.Value;
      Table1.Next;
    end;
  finally
    // go back to the bookmark
    Table1.Bookmark := Bookmark;
    Table1.EnableControls;
  end;
  MessageDlg ('Sum of new salaries is ' +
    Format ('%m', [Total]), mtInformation, [mbOk], 0);
end;

procedure TSearchForm.ActionTotalExecute(Sender: TObject);
var
  Bookmark: TBookmarkStr;
  Total: Real;
begin
  // store the current position in a bookmark
  Bookmark := Table1.Bookmark;
  Table1.DisableControls;
  Total := 0;
  try
    Table1.First;
    while not Table1.EOF do
    begin
      Total := Total + Table1Salary.Value;
      Table1.Next;
    end;
  finally
    // go back to the bookmark
    Table1.Bookmark := Bookmark;
    Table1.EnableControls;
  end;
  MessageDlg ('Sum of new salaries is ' +
    Format ('%m', [Total]), mtInformation, [mbOk], 0);
end;

procedure TSearchForm.ActionGoNearExecute(Sender: TObject);
begin
  // short-hand
  {Table1.FindNearest ([EditName.Text]);}

  // alternative code:
  Table1.SetKey;
  Table1 ['LastName'] := Edit1.Text;
  Table1.GotoNearest;
end;

procedure TSearchForm.ActionGotoExecute(Sender: TObject);
begin
  // locate
  if not Table1.Locate ('LastName', Edit1.Text, []) then
    MessageDlg ('Name not found', mtError, [mbOk], 0);

  // short-hand
{  if not Table1.FindKey ([EditName.Text]) then
    MessageDlg ('Name not found', mtError, [mbOk], 0); }

  // alternative code:
  {Table1.SetKey;
  Table1 ['LastName'] := EditName.Text;
  Table1.KeyFieldCount := 1;
  if not Table1.GotoKey then
    MessageDlg ('Name not found', mtError, [mbOk], 0); }
end;

end.

TOTALF.DFM

object SearchForm: TSearchForm
  Left = 263
  Top = 149
  Width = 491
  Height = 187
  Caption = 'Table Search'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clBlack
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = True
  Position = poScreenCenter
  OnCreate = FormCreate
  PixelsPerInch = 96
  TextHeight = 13
  object ScrollBox: TScrollBox
    Left = 0
    Top = 27
    Width = 483
    Height = 133
    HorzScrollBar.Margin = 6
    VertScrollBar.Margin = 6
    Align = alClient
    BorderStyle = bsNone
    TabOrder = 0
    object Label1: TLabel
      Left = 230
      Top = 17
      Width = 60
      Height = 13
      Alignment = taRightJustify
      AutoSize = False
      Caption = '&Emp No'
      FocusControl = EditEmpNo
    end
    object Label2: TLabel
      Left = 14
      Top = 15
      Width = 60
      Height = 13
      Alignment = taRightJustify
      AutoSize = False
      Caption = '&Last Name'
      FocusControl = EditLastName
    end
    object Label3: TLabel
      Left = 14
      Top = 36
      Width = 60
      Height = 13
      Alignment = taRightJustify
      AutoSize = False
      Caption = '&First Name'
      FocusControl = EditFirstName
    end
    object Label4: TLabel
      Left = 14
      Top = 58
      Width = 60
      Height = 13
      Alignment = taRightJustify
      AutoSize = False
      Caption = '&Phone Ext'
      FocusControl = EditPhoneExt
    end
    object Label5: TLabel
      Left = 230
      Top = 39
      Width = 60
      Height = 13
      Alignment = taRightJustify
      AutoSize = False
      Caption = '&Hire Date'
      FocusControl = EditHireDate
    end
    object Label6: TLabel
      Left = 14
      Top = 79
      Width = 60
      Height = 13
      Alignment = taRightJustify
      AutoSize = False
      Caption = '&Salary'
      FocusControl = EditSalary
    end
    object EditEmpNo: TDBEdit
      Left = 296
      Top = 14
      Width = 57
      Height = 21
      DataField = 'EmpNo'
      DataSource = DataSource1
      TabOrder = 0
    end
    object EditLastName: TDBEdit
      Left = 80
      Top = 12
      Width = 97
      Height = 21
      DataField = 'LastName'
      DataSource = DataSource1
      TabOrder = 1
    end
    object EditFirstName: TDBEdit
      Left = 80
      Top = 33
      Width = 97
      Height = 21
      DataField = 'FirstName'
      DataSource = DataSource1
      TabOrder = 2
    end
    object EditPhoneExt: TDBEdit
      Left = 80
      Top = 55
      Width = 97
      Height = 21
      DataField = 'PhoneExt'
      DataSource = DataSource1
      TabOrder = 3
    end
    object EditHireDate: TDBEdit
      Left = 296
      Top = 36
      Width = 57
      Height = 21
      DataField = 'HireDate'
      DataSource = DataSource1
      TabOrder = 4
    end
    object EditSalary: TDBEdit
      Left = 80
      Top = 76
      Width = 97
      Height = 21
      DataField = 'Salary'
      DataSource = DataSource1
      TabOrder = 5
    end
  end
  object ToolBar1: TToolBar
    Left = 0
    Top = 0
    Width = 483
    Height = 27
    Caption = 'ToolBar1'
    EdgeBorders = [ebTop, ebBottom]
    Flat = True
    Images = ImageList
    ParentShowHint = False
    ShowHint = True
    TabOrder = 1
    object ToolButton1: TToolButton
      Left = 0
      Top = 0
      Action = DataSetFirst1
      Caption = 'ToolButton1'
    end
    object ToolButton2: TToolButton
      Left = 23
      Top = 0
      Action = DataSetPrior1
      Caption = 'ToolButton2'
    end
    object ToolButton3: TToolButton
      Left = 46
      Top = 0
      Action = DataSetNext1
      Caption = 'ToolButton3'
    end
    object ToolButton4: TToolButton
      Left = 69
      Top = 0
      Action = DataSetLast1
      Caption = 'ToolButton4'
    end
    object ToolButton5: TToolButton
      Left = 92
      Top = 0
      Width = 8
      Caption = 'ToolButton5'
      ImageIndex = 3
      Style = tbsSeparator
    end
    object Edit1: TEdit
      Left = 100
      Top = 0
      Width = 137
      Height = 22
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clBlack
      Font.Height = -11
      Font.Name = 'MS Sans Serif'
      Font.Style = []
      ParentFont = False
      TabOrder = 0
      Text = 'Williams'
    end
    object ToolButton7: TToolButton
      Left = 237
      Top = 0
      Action = ActionGoto
      Caption = 'ToolButton7'
    end
    object ToolButton6: TToolButton
      Left = 260
      Top = 0
      Action = ActionGoNear
      Caption = 'ToolButton6'
    end
    object ToolButton8: TToolButton
      Left = 283
      Top = 0
      Width = 8
      Caption = 'ToolButton8'
      ImageIndex = 6
      Style = tbsSeparator
    end
    object ToolButton10: TToolButton
      Left = 291
      Top = 0
      Action = ActionTotal
    end
    object SpinEdit1: TSpinEdit
      Left = 314
      Top = 0
      Width = 49
      Height = 22
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clBlack
      Font.Height = -11
      Font.Name = 'MS Sans Serif'
      Font.Style = []
      Increment = 5
      MaxValue = 200
      MinValue = 50
      ParentFont = False
      TabOrder = 1
      Value = 105
    end
    object ToolButton9: TToolButton
      Left = 363
      Top = 0
      Action = ActionIncrease
    end
  end
  object DataSource1: TDataSource
    DataSet = Table1
    Left = 263
    Top = 109
  end
  object Table1: TTable
    Active = True
    DatabaseName = 'DBDEMOS'
    TableName = 'employee.db'
    Left = 316
    Top = 109
    object Table1EmpNo: TIntegerField
      FieldName = 'EmpNo'
    end
    object Table1LastName: TStringField
      FieldName = 'LastName'
    end
    object Table1FirstName: TStringField
      FieldName = 'FirstName'
      Size = 15
    end
    object Table1PhoneExt: TStringField
      FieldName = 'PhoneExt'
      Size = 4
    end
    object Table1HireDate: TDateTimeField
      FieldName = 'HireDate'
    end
    object Table1Salary: TCurrencyField
      FieldName = 'Salary'
    end
  end
  object ActionList: TActionList
    Images = ImageList
    Left = 214
    Top = 111
    object DataSetFirst1: TDataSetFirst
      Category = 'Dataset'
      Caption = '&First'
      Hint = 'First'
      ImageIndex = 0
    end
    object DataSetLast1: TDataSetLast
      Category = 'Dataset'
      Caption = '&Last'
      Hint = 'Last'
      ImageIndex = 1
    end
    object DataSetNext1: TDataSetNext
      Category = 'Dataset'
      Caption = '&Next'
      Hint = 'Next'
      ImageIndex = 2
    end
    object DataSetPrior1: TDataSetPrior
      Category = 'Dataset'
      Caption = '&Prior'
      Hint = 'Prior'
      ImageIndex = 3
    end
    object ActionGoto: TAction
      Caption = '&Goto'
      Hint = 'Goto'
      ImageIndex = 4
      OnExecute = ActionGotoExecute
    end
    object ActionGoNear: TAction
      Caption = 'Go &Near'
      Hint = 'Go Near'
      ImageIndex = 5
      OnExecute = ActionGoNearExecute
    end
    object ActionTotal: TAction
      Caption = '&Total'
      Hint = 'Total'
      ImageIndex = 6
      OnExecute = ActionTotalExecute
    end
    object ActionIncrease: TAction
      Caption = '&Increase'
      Hint = 'Increase'
      ImageIndex = 7
      OnExecute = ActionIncreaseExecute
    end
  end
  object ImageList: TImageList
    Left = 24
    Top = 112
    Bitmap = {
      494C010108000900040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
      0000000000003600000028000000400000003000000001001800000000000024
      0000000000000000000000000000000000008BC75F5E5B8BE55DC21C00558BEC
      83C4E0536A00FF35D080E14CE85C9401008D45E050E83F8B01008D55E052E813
      7F01005985C0741BE8FF8A01008BD8E8628B0100FF35D080E14CE8349401008B
      C3EB2AFF7518FF7514FF7510FF750CFF7508E89BFAFEFF8BD866FF0DB496E14C
      FF35D080E14CE8089401008BC35B8BE55DC21400558BEC81C48CF9FFFF535657
      8B75086A00FF35D080E14CE8DD9301006A00FF35CC80E14CE8D09301008D858C
      F9FFFF50E8B08A01008D958CF9FFFF52E881B7D0663B8C535D01000075266685
      C076150FB7C8668B544DB90FB7C8663B944B3D030000750C40663B85D1FDFFFF
      72C4EB71668B8347010000668945FE83FE057505BE0100000083FE01740B83FE
      04740666BF0130EB4C837D1800741583FE01751066837DFE0074098B4518C700
      01000000837D0C00742B66837DFE007416FF75085653FF7520FF751C6A00E81E
      1200008BF8EB0EFF750856536A00E8591400008BF866FF0DB496E14CFF35CC80
      E14CE88C940100FF35D080E14CE88194010045FC50668B9305010000526A0053
      8B4D08518B01FF90840000006685C00F85CF0000008D957CFCFFFF52668B4DFC
      518B4508508B10FF52506685C00F85B10000006683BDD5FDFFFF000F85A30000
      00668B8DC3FDFFFF663B8B470100000F858F000000668B85C9FDFFFF663B834D
      010000757F668B55B3663B93370300007572668B8DC7FDFFFF663B8B4B010000
      7562668B85C5FDFFFF663B83490100007552668B95D1FDFFFF663B9355010000
      754233C0EB330FB7D0668B8C55D9FDFFFF0F4CE8B59601008D855CFCFFFF50E8
      958D01008D955CFCFFFF52E8668101005985C07427FF7508E8A8E0FFFF8BF8FF
      35CC80E14CE889960100FF35D080E14CE87E9601008BC7E9F8010000837D1800
      74078B551833C9890A837D180074078B451833D2891083FE01744D8D4DFC5166
      8B8305010000506A00538B5508528B0AFF91840000008BF86685C0740B6681FF
      022F0F858D0100008D957CFCFFFF52668B4DFC518B4508508B10FF52508D9D7C
      FCFFFFE9FC00000083FE010F85F30000008D0083C40CC745EC01000000EB3A85
      C074360FB7432C506A000FB7D70355F852E87821010083C40C0FB74B2C5168FF
      0000000FB7C70345F450E85F21010083C40CC745EC0100000066037B2C66FF45
      F2668B55F2663B96D40000000F8225FFFFFF837DEC0074148B4DF8898E850100
      008B45F4898689010000EB12FF75F8E8E796010059FF75F4E8DE9601005933C0
      5F5E5B8BE55DC2080000558BEC81C45CFCFFFF5356578B5D148B751033FF6A00
      FF35D080E14CE8C29601006A00FF35CC80E1F4E85622010083C40C33C9894DEC
      8B86960000008B808501000085C0741AC745EC01000000668B55FC52500FB74D
      FE034DF851E88807010033FF66C745F20000E9CA0000008B86960000008B5868
      0FB745F20FB79446D60000004A6BCA3E03D90FB745F20FBF8446640100006681
      7B220101755985C074320FB7532C526A000FB7CF034DF851E8D121010083C40C
      0FB7432C5033D28A5508520FB7CF034DF451E8B721010083C40CEB1A0FB7432C
      5033D28A5508520FB7CF034DF851E89B2101BEC400000083BECC000000007407
      33C0E9F9010000807D08FF750B85FF750733C0E9E801000083BE850100000075
      0983BE8901000000740733C0E9CF010000668B96F8000000668955FE8B8E9600
      0000668B81F8000000668945FC668B5DFE66035DFC0FB7C350E8719801005989
      45F885C0750966B80125E9910100000FB7D35268FF000000FF75F8E88E220100
      83C40C85FF74340FB7CB51E83F980100598945F485C07512FF75F8E83B980100
      5966B80125E9560100000FB7D3526A00FF750000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000F06685C074048BC6EB0C8B9B9200000085DB75E133C05F5E5B595DC20400
      558BEC83C4EC5356578B750C33C08945F48B0000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      00000000000000007F7F7F0000000000000000007F7F7F000000000000000000
      7F7F7F0000000000000000007F7F7F0000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      00000000000000007F7F7F0000007F7F7F0000007F7F7F0000007F7F7F000000
      7F7F7F0000007F7F7F0000007F7F7F0000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      00007F7F7F7F7F7F000000000000000000000000000000000000000000000000
      000000000000000000000000000000000000FFFF0000000000000000FFFFFFFF
      FF00FFFFFFFFFF00FFFF00000000000000000000000000000000000000000000
      000000000000FFFF000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      000000000000000000000000000000000000FFFF0000000000FFFFFFFFFF00FF
      FFFFFFFF00000000000000000000000000000000000000000000000000000000
      0000000000000000000000FFFF0000000000000000FFFFFFFFFF00FFFFFFFFFF
      00FFFF0000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      00000000007F7F7F0000000000FF0000FF000000000000000000000000000000
      0000000000000000000000000000FF0000FFFFFF00000000FFFFFF00FFFFFFFF
      FF00FFFFFFFFFF00FFFFFFFFFF00000000000000000000000000000000000000
      0000000000000000000000FFFF0000000000FFFFFFFFFF00FFFFFFFFFF000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      00000000000000000000000000000000000000FF000000000000000000000000
      0000000000000000000000FF000000000000FFFF0000000000FFFFFFFFFF00FF
      FFFFFFFF00000000000000000000000000000000000000000000000000000000
      0000000000000000000000FFFF00000000FFFFFF00FFFFFFFFFF00FFFFFFFFFF
      00FFFFFFFFFF0000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      00007F7F7F7F7F7F0000007F7F7F7F7F7F7F7F7F0000FF7F7F7F7F7F7F7F7F7F
      7F7F7F7F7F7F0000FF7F7F7F7F7F7F7F7F7FFFFF00000000FFFFFF00FFFFFFFF
      FF00FFFFFFFFFF00FFFFFFFFFF00FFFFFFFFFF00FFFF0000000000000000FF00
      00FF000000000000000000FFFF0000000000FFFFFFFFFF00FFFFFFFFFF000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      00000000000000000000000000000000000000000000FF000000000000000000
      0000000000000000FF000000000000000000FFFF0000000000FFFFFFFFFF0000
      000000000000000000000000000000000000000000000000000000000000FF00
      00FF000000000000000000FFFF00000000FFFFFF00FFFFFFFFFF00FFFFFFFFFF
      00FFFFFFFFFF00FFFFFFFFFF00FFFF0000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      00000000007F7F7F0000000000000000000000000000000000FF000000000000
      0000000000FF00000000000000000000000000000000000000000000FFFFFFFF
      FF00FFFF00000000000000000000000000000000000000000000000000000000
      0000000000000000000000FFFF0000000000FFFFFFFFFF000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      00000000000000000000000000000000000000000000000000000000FF0000FF
      0000FF0000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      000000000000000000000000000000000000000000FFFFFFFFFF00FFFF000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      00007F7F7F7F7F7F0000007F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F
      7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F0000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      00000000007F7F7F000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      00007F7F7F7F7F7F0000007F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F
      7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F0000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000008080
      8000000000000000000000000000000000000080808000000000000000000000
      0000000000000000000000000000808080000000000000000000000000000000
      0000008080800000000000000000000000000000000000000000000000000000
      0000000080808000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000808080
      0000000000000000000000000000000000000000000000000000000000008080
      8000000000000000000000000080808000000000000000000000000000000000
      0000000000000000000000000000000000000000808080000000000000000000
      0000008080800000000000000000000000000000000000000000000000000000
      0000000000000000000080808000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000808080000000000000
      0000000000000000000000000000000000000000000000000000000000008080
      8000000000000080808000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000808080000000
      0000008080800000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000080808000000000000000000000000000
      0000000000000000000000000000000000808080000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000008080
      8080808000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      8080808080800000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000008080
      8000000000000080808000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000808080000000
      0000008080800000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000080808000000000000000000000000000
      0000000000000000000000000000000000808080000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000008080
      8000000000000000000000000080808000000000000000000000000000000000
      0000000000000000000000000000000000000000808080000000000000000000
      0000008080800000000000000000000000000000000000000000000000000000
      0000000000000000000080808000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000808080000000000000
      0000000000000000000000000000000000000000000000000000000000008080
      8000000000000000000000000000000000000080808000000000000000000000
      0000000000000000000000000000808080000000000000000000000000000000
      0000008080800000000000000000000000000000000000000000000000000000
      0000000080808000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000808080
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      0000000000000000000000000000000000000000000000000000000000000000
      000000000000000000000000000000000000424D3E000000000000003E000000
      2800000040000000300000000100010000000000800100000000000000000000
      000000000000000000000000FFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFF00000000
      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
      FF0000FF0000FFFFFFFFFF0000FF0000FFFFFFFFFFFFDDDDFFF8FFFFFFFFD555
      20F81FFFC0070000007F041FE7E7DFFF007C000FF3F787FC003C000FF9F7DBFB
      000F0007FCFF000000040001FE7FDDF7000C0000FF3F9EEF01FF0001FE7FDF1F
      E3FC003FFCFF0000FFFCFC7FF9F7DFFFFFFFFFFFF3F79FFFFFF8FFFFE7E7DFFF
      FFF8FFFFC0070000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E7E7E7F9FFFF9F
      E787E1E7F87FFE1FE607E067F81FF81FE007E007F80FF01FE607E067F81FF81F
      E787E1E7F87FFE1FE7E7E7E7F9FFFF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000
      000000000000}
  end
end