[Back to WIN-OS2 SWAG index] [Back to Main SWAG index] [Original]

    { PURPOSE  :  Demonstrate how to smoothly drag a bitmap across an application.

      AUTHOR   :  Michael Vincze (mav@asd470.dseg.ti.com)

      REFERENCE:  Microsoft vendor note 4-10.zip (ftp.uu.net
                  /vendor/microsoft/developer-network)

      DATE     :  07/25/93
    }

    program DragBmp;

    uses
      DragUnit,
      DragBmp_,
      WinTypes,
      WinProcs,
      OWindows,
      ODialogs;

    {$R DragBmp }

    const
      ApplicationName: PChar = 'Bitmap Drag';

    type
      TDragBmpApplication = object (TApplication)
        procedure InitMainWindow; virtual;
        end;

      PDragBmpWindow = ^TDragBmpWindow;
      TDragBmpWindow = object (TWindow)
        bImageDrawn: boolean; { has the image been drawn?     }
        bSelected  : boolean; { has the image been selected?  }
        hbmImg     : HBITMAP; { handles to image and backdrop }
        hbmbk      : HBITMAP;

        constructor Init (AParent: PWindowsObject; ATitle: PChar);
        procedure   SetupWindow; virtual;
        destructor  Done; virtual;
        procedure   GetWindowClass (var AWndClass: TWndClass); virtual;

        procedure   WMLButtonDown    (var Msg: TMessage); virtual wm_First + wm_LButtonDown;
        procedure   WMMouseMove      (var Msg: TMessage); virtual wm_First + wm_MouseMove;
        procedure   WMLButtonUp      (var Msg: TMessage); virtual wm_First + wm_LButtonUp;
        procedure   WMPaint          (var Msg: TMessage); virtual wm_First + wm_Paint;

        procedure   CMDrawBmp        (var Msg: TMessage); virtual cm_First + cm_DrawBmp;
        procedure   CMAbout          (var Msg: TMessage); virtual cm_First + cm_About;
        end;

    procedure TDragBmpApplication.InitMainWindow;
    begin
    MainWindow := New (PDragBmpWindow, Init (nil, ApplicationName));
    end;

    constructor TDragBmpWindow.Init (AParent: PWindowsObject; ATitle: PChar);
    begin
    inherited Init (AParent, ATitle);
    Attr.Menu   := LoadMenu   (hInstance, 'Main');
    hbmImg      := LoadBitmap (hInstance, 'Object');
    hbmBk       := LoadBitmap (hInstance, 'BackGround');
    bImageDrawn := False;
    bSelected   := False;
    end;

    destructor TDragBmpWindow.Done;
    begin
    inherited Done;
    if hbmImg <> 0 then
      begin
      if bImageDrawn = TRUE then
        DeleteImage
      else
        DeleteObject (hbmImg);
      end;
    if hbmBk <> 0 then
      DeleteObject (hbmBk);
    end;

    procedure TDragBmpWindow.GetWindowClass (var AWndClass : TWndClass);
    begin
    inherited GetWindowClass (AWndClass);
    AWndClass.HIcon := LoadIcon (HInstance, ApplicationName);
    end;

    procedure TDragBmpWindow.SetupWindow;
    begin
    inherited SetupWindow;
    end;

    procedure  TDragBmpWindow.WMLButtonDown (var Msg: TMessage);
    begin
    if bImageDrawn = TRUE then
      begin
      bSelected := IsSelected (LOWORD (Msg.lParam), HIWORD(Msg.lParam));
      if bSelected = TRUE then
        BeginDrag (HWindow, LOWORD (Msg.lParam), HIWORD (Msg.lParam));
      end;
    end;

    procedure  TDragBmpWindow.WMMouseMove (var Msg: TMessage);
    begin
    if bSelected = TRUE then
      Drag (HWindow, LOWORD (Msg.lParam), HIWORD (Msg.lParam));
    end;

    procedure  TDragBmpWindow.WMLButtonUp (var Msg: TMessage);
    begin
    if bSelected = TRUE then
      begin
      EndDrag (HWindow, LOWORD (Msg.lParam), HIWORD (Msg.lParam));
      bSelected := FALSE;
      end;
    end;

    procedure  TDragBmpWindow.WMPaint (var Msg: TMessage);
    var
      ps: TPaintStruct;
    begin
    BeginPaint (hWindow, ps);

    if hbmBk <> 0 then
      DrawBackdrop (ps.hdc, hbmBk);

    if bImageDrawn = TRUE then
      DrawImage (ps.hdc);

    EndPaint (hWindow, ps)
    end;

    procedure TDragBmpWindow.CMDrawBmp (var Msg: TMessage);
    var
      Menu: HMenu;
      Rect : TRect;
    begin
    { Initialize image info }
    bImageDrawn := TRUE;
    InitImageInfo (hWindow, hbmImg, 100, 100);

    { Once drawn, disable and gray this menuitem }
    Menu := GetMenu (hWindow);
    EnableMenuItem (Menu, cm_DrawBmp, MF_BYCOMMAND or MF_DISABLED or MF_GRAYED);
    DrawMenuBar (hWindow);
    end;

    procedure TDragBmpWindow.CMAbout (var Msg: TMessage);
    begin
    Application^.ExecDialog (New (PDialog, Init (@Self, 'About')));
    end;

    var
      Application:TDragBmpApplication;

    begin
    Application.Init (ApplicationName);
    Application.Run;
    Application.Done;
    end.

    ---------- CUT HERE ---------- DRAGUNIT.PAS ----------

    { ****************************************************************************
      File: DragUnit.pas

      Purpose: Contains bitmap dragging routines.

      Functions:
        InitImageInfo()
        DrawImage()
        DeleteImage()
        DrawBackdrop()
        IsSelected()
        BeginDrag()
        Drag()
        EndDrag()

      Development Team:
        Michael Vincze
        Patrick Schreiber

      Written by Vincze International.
      Adopted from Microsoft Product Support Services, Windows Developer Support

      COPYRIGHT:

        (C) Copyright Vincze International, 1993.
        (C) Copyright Microsoft Corp. 1993.  All rights reserved.

        You have a royalty-free right to use, modify, reproduce and
        distribute the Sample Files (and/or any modified version) in
        any way you find useful, provided that you agree that
        Vincze International and Microsoft have no warranty obligations
        or liability for any Sample Application Files which are modified.

      ****************************************************************************  }

    unit DragUnit;

    interface

    uses
      WinTypes,
      WinProcs;

    { force C types }
    type
      POINT  = TPoint;
      RECT   = TRect;
      BITMAP = TBitmap;
      BOOL   = boolean;

    procedure InitImageInfo (hWnd_: HWND; hbm: HBITMAP; nX, nY: integer);
    procedure DeleteImage;
    function  IsSelected (nX, nY: integer): BOOL;
    procedure BeginDrag (hWnd_: HWND; nX, nY: integer);
    procedure Drag (hwnd_: HWND; nX, nY: integer);
    procedure EndDrag (hwnd_: HWND; nX, nY: integer);
    procedure DrawBackdrop (hdc_: HDC; hbm: HBITMAP);
    procedure DrawImage (hdc_: HDC);

    implementation

    { Image data structure }
    type
      IMAGE= record
        bmX     : integer;  { Bitmap origin           }
        bmY     : integer;  { Bitmap origin           }
        bmWidth : integer;  { Bitmap width            }
        bmHeight: integer;  { Bitmap height           }
        hbmImage: HBITMAP;  { Image's bitmap          }
        hbmBkg  : HBITMAP;  { What's behind our image }
        end;

    { Global variables to this unit }
    var
      domino  : IMAGE;    { Image's info                    }
      rcClient: RECT;     { Client area bounding rectangle  }
      xPrev   : integer;  { Previous mouse position         }
      yPrev   : integer;

    { ****************************************************************************
      Function: InitImageInfo()

      Purpose:  Initialize info for our object.

      Parameters:
        HDC  hdc_   - Handle to window dc
        int  nX     - X-coordinate of object origin
        int  nY     - Y-coordinate of object origin

      Returns:
        No return value.

      Comments:

      History:  Date       Author      Reason
                3/9/92     PES         Created
                7/23/93    MAV         Corrected rect_.right and rect_.bottom to
                                       reflect the actual update rectangle.
      ****************************************************************************  }

    procedure InitImageInfo (hWnd_: HWND; hbm: HBITMAP; nX, nY: integer);
    var
      hdc_,             { Handles to window and memory dcs  }
      hdcMem : HDC;
      hbmNew,           { Handles to bitmaps                }
      hbmPrev: HBITMAP;
      bm     : BITMAP;  { BITMAP data structure             }
      rect_  : RECT;    { Invalid rectangle                 }
    begin
    { Get window and memory dcs }
    hdc_   := GetDC (hWnd_);
    hdcMem := CreateCompatibleDC (hdc_);

    { Get width and height of bitmap }
    GetObject (hbm, sizeof (BITMAP), @bm);

    { Initialize image's info and store rect for updating }
    rect_.left      := nX;
    rect_.top       := nY;
    rect_.right     := nX + bm.bmWidth;
    rect_.bottom    := nY + bm.bmHeight;
    domino.bmX      := nX;
    domino.bmY      := nY;
    domino.bmWidth  := bm.bmWidth;
    domino.bmHeight := bm.bmHeight;
    domino.hbmImage := hbm;

    { Create and select a new bitmap to store our background }
    hbmNew  := CreateCompatibleBitmap (hdc_, bm.bmWidth, bm.bmHeight);
    hbmPrev := SelectObject (hdcMem, hbmNew);

    { Get the background from the screen }
    BitBlt (hdcMem, 0, 0, domino.bmWidth, domino.bmHeight,
            hdc_, domino.bmX, domino.bmY, SRCCOPY);

    { Tidy up }
    SelectObject (hdcMem, hbmPrev);
    DeleteDC (hdcMem);
    ReleaseDC (hWnd_, hdc_);

    { Store the new background bitmap }
    domino.hbmBkg := hbmNew;

    { Update client area where image is }
    InvalidateRect (hWnd_, @rect_, FALSE);
    UpdateWindow (hWnd_);
    end;

    {****************************************************************************
      Function: DeleteImage()

      Purpose:  Delete image and background bitmaps.

      Parameters:
        None.

      Returns:
        No return value.

      Comments:

      History:  Date       Author      Reason
                3/9/92     PES         Created

      **************************************************************************** }
    procedure DeleteImage;
    begin
    if domino.hbmImage <> 0 then DeleteObject (domino.hbmImage);
    if domino.hbmBkg   <> 0 then DeleteObject (domino.hbmBkg);
    end;

    { ****************************************************************************
      Function: DrawImage()

      Purpose:  Draws image at it's current position.

      Parameters:
        HDC hdc_    - Handle to window dc

      Returns:
        No return value.

      Comments:

      History:  Date       Author      Reason
                3/9/92     PES         Created

      **************************************************************************** }
    procedure DrawImage (hdc_: HDC);
    var
      hdcMem : HDC;     { Handle to memory dc       }
      hbmPrev: HBITMAP; { Handle to previous bitmap }
    begin
    { Create a memory dc and select our object's bitmap into it }
    hdcMem  := CreateCompatibleDC (hdc_);
    hbmPrev := SelectObject (hdcMem, domino.hbmImage);

    { BitBlt it to the screen }
    BitBlt (hdc_, domino.bmX, domino.bmY, domino.bmWidth, domino.bmHeight,
            hdcMem, 0, 0, SRCCOPY);

    { Tidy up }
    SelectObject (hdcMem, hbmPrev);
    DeleteDC (hdcMem);
    end;

    { ****************************************************************************
      Function: DrawBackdrop()

      Purpose:  Draws the backdrop bitmap so we know this bitmap dragging
                technique really works for any background.

      Parameters:
        HDC hdc_    - Handle to window dc
        HBITMAP hbm - Handle to backdrop bitmap

      Returns:
        No return value.

      Comments:

      History:  Date       Author      Reason
                3/9/92     PES         Created

      **************************************************************************** }
    procedure DrawBackdrop (hdc_: HDC; hbm: HBITMAP);
    var
      hdcMem : HDC;     { Handle to memry dc        }
      hbmPrev: HBITMAP; { Handle to previous bitmap }
      bm     : BITMAP;  { BITMAP data structure     }
    begin
    { Get dimensions of backdrop bitmap }
    GetObject (hbm, sizeof (BITMAP), @bm);

    { Create a memory dc and select our backdrop's bitmap into it }
    hdcMem  := CreateCompatibleDC (hdc_);
    hbmPrev := SelectObject (hdcMem, hbm);

    { BitBlt it to the upper-left part of client area }
    BitBlt (hdc_, 0, 0, bm.bmWidth, bm.bmHeight, hdcMem, 0, 0, SRCCOPY);

    { Tidy up }
    SelectObject (hdcMem, hbmPrev);
    DeleteDC (hdcMem);
    end;

    { ****************************************************************************
      Function: IsSelected()

      Purpose:  Specifies whether our image has been selected for dragging.

      Parameters:
        WORD wX     - X-coordinate of mouse position
        WORD wY     - Y-coordinate of mouse position

      Returns:
        Returns TRUE if specified point is in object's bounding rectangle,
        FALSE otherwise.

      Comments:

      History:  Date       Author      Reason
                3/9/92     PES         Created

      **************************************************************************** }

    function IsSelected (nX, nY: integer): BOOL;
    var
      pt   : POINT; { POINT data structure  }
      rect_: RECT;  { RECT data structure   }
    begin
    { Current mouse position }
    pt.x := nX;
    pt.y := nY;

    { Current bitmap position }
    rect_.left   := domino.bmX;
    rect_.top    := domino.bmY;
    rect_.right  := domino.bmX + domino.bmWidth - 1;
    rect_.bottom := domino.bmY + domino.bmHeight - 1;

    { Return TRUE if pt in rect of image }
    IsSelected := PtInRect (rect_, pt);
    end;

    { ****************************************************************************
      Function: BeginDrag()

      Purpose:  Starts the bitmap dragging process.

      Parameters:
        HWND hWnd_  - Handle to window
        int  nX     - X-coordinate of mouse position
        int  nY     - Y-coordinate of mouse position

      Returns:
        No return value.

      Comments:

      History:  Date       Author      Reason
                3/9/92     PES         Created

      **************************************************************************** }
    procedure BeginDrag (hWnd_: HWND; nX, nY: integer);
    begin
    { Get all mouse messages }
    SetCapture (hWnd_);

    { Save previous mouse position }
    xPrev := nX;
    yPrev := nY;

    { Get client area rect }
    GetClientRect (hWnd_, rcClient);
    end;

    { ****************************************************************************
      Function: Drag()

      Purpose:  Perform the bitmap dragging.

      Parameters:
        HWND hWnd_  - Handle to window
        int  nX     - X-coordinate of mouse position
        int  nY     - Y-coordinate of mouse position

      Returns:
        No return value.

      Comments:

      History:  Date       Author      Reason
                3/9/92     PES         Created

      **************************************************************************** }
    procedure Drag (hwnd_: HWND; nX, nY: integer);
    var
      hdc_,               { Handles to dcs            }
      hdcMem   : HDC;
      hdcNewBkg,          { Handles to dcs            }
      hdcOldBkg: HDC;
      hbmNew,             { Handles to bitmaps        }
      hbmNPrev : HBITMAP;
      hbmOPrev,           { Handles to bitmaps        }
      hbmPrev,
      hbmTemp  : HBITMAP;
      dx,                 { Mouse delta x and delta y }
      dy       : integer;
    begin
    { Get window and memory dcs for our BitBlt'ing }
    hdc_      := GetDC (hWnd_);
    hdcMem    := CreateCompatibleDC (hdc_);
    hdcNewBkg := CreateCompatibleDC (hdc_);
    hdcOldBkg := CreateCompatibleDC (hdc_);

    { Create a temp bitmap for our new background }
    hbmNew    := CreateCompatibleBitmap (hdc_, domino.bmWidth, domino.bmHeight);

    { Select our bitmaps }
    hbmPrev  := SelectObject (hdcMem, domino.hbmImage);
    hbmNPrev := SelectObject (hdcNewBkg, hbmNew);
    hbmOPrev := SelectObject (hdcOldBkg, domino.hbmBkg);

    { Calculate delta x and delta y }
    dx:= xPrev - nX;
    dy:= yPrev - nY;

    { Save previous mouse position }
    xPrev:= nX;
    yPrev:= nY;

    { Update image's position }
    dec (domino.bmX, dx);
    dec (domino.bmY, dy);

    { Copy screen to new background }
    BitBlt (hdcNewBkg, 0, 0, domino.bmWidth, domino.bmHeight,
            hdc_, domino.bmX, domino.bmY, SRCCOPY);

    { Replace part of new bkg with old background }
    BitBlt (hdcNewBkg, dx, dy, domino.bmWidth, domino.bmHeight,
            hdcOldBkg, 0, 0, SRCCOPY);

    { Copy image to old background }
    BitBlt (hdcOldBkg, -dx, -dy, domino.bmWidth, domino.bmHeight,
            hdcMem, 0, 0, SRCCOPY);

    { Copy image to screen }
    BitBlt (hdc_, domino.bmX, domino.bmY, domino.bmWidth, domino.bmHeight,
            hdcMem, 0, 0, SRCCOPY);

    { Copy old background to screen }
    BitBlt(hdc_, domino.bmX+dx, domino.bmY+dy, domino.bmWidth, domino.bmHeight,
           hdcOldBkg, 0, 0, SRCCOPY);

    { Tidy up }
    SelectObject (hdcMem, hbmPrev);
    SelectObject (hdcNewBkg, hbmNPrev);
    SelectObject (hdcOldBkg, hbmOPrev);

    { Swap old with new background }
    hbmTemp       := domino.hbmBkg;
    domino.hbmBkg := hbmNew;
    hbmNew        := hbmTemp;
    DeleteObject (hbmNew);

    { Tidy up some more }
    DeleteDC (hdcMem);
    DeleteDC (hdcNewBkg);
    DeleteDC (hdcOldBkg);
    ReleaseDC (hWnd_, hdc_);
    end;

    { ****************************************************************************
      Function: EndDrag()

      Purpose:  Ends the bitmap dragging process.

      Parameters:
        HWND hWnd_  - Handle to window
        int  nX     - X-coordinate of mouse position
        int  nY     - Y-coordinate of mouse position

      Returns:
        No return value.

      Comments:

      History:  Date       Author      Reason
                3/9/92     PES         Created
                3/12/92    PES         Added code to restrict domino to visible
                                       area of screen.

      **************************************************************************** }
    procedure EndDrag (hwnd_: HWND; nX, nY: integer);
    var
      hdc_,               { Handles to dcs                  }
      hdcMem: HDC;
      hdcNewBkg,          { Handles to dcs                  }
      hdcOldBkg: HDC;
      hbmNew,             { Handles to bitmaps              }
      hbmNPrev : HBITMAP;
      hbmOPrev,           { Handles to dcs                  }
      hbmPrev,
      hbmTemp  : HBITMAP;
      dx,                 { Delta x and delta y of mouse    }
      dy       : integer;
      x,                  { X and y for position correction }
      y        : integer;
    begin
    { Calculate delta x and delta y }
    dx:= xPrev - nX;
    dy:= yPrev - nY;

    { Check if we've moved since last time  }
    if (dx <> 0) or (dy <> 0) then
      begin
      { Get window and memory dcs }
      hdc_      := GetDC (hWnd_);
      hdcMem    := CreateCompatibleDC (hdc_);
      hdcNewBkg := CreateCompatibleDC (hdc_);
      hdcOldBkg := CreateCompatibleDC (hdc_);

      { Create a temp bitmap for our new background }
      hbmNew    := CreateCompatibleBitmap (hdc_, domino.bmWidth, domino.bmHeight);

      { Select our bitmaps }
      hbmPrev   := SelectObject (hdcMem, domino.hbmImage);
      hbmNPrev  := SelectObject (hdcNewBkg, hbmNew);
      hbmOPrev  := SelectObject (hdcOldBkg, domino.hbmBkg);

      { Update bitmap's position }
      dec (domino.bmX, dx);
      dec (domino.bmY, dy);

      { Copy screen to new background }
      BitBlt (hdcNewBkg, 0, 0, domino.bmWidth, domino.bmHeight,
              hdc_, domino.bmX, domino.bmY, SRCCOPY);

      { Replace part of new bkg with old background }
      BitBlt (hdcNewBkg, dx, dy, domino.bmWidth, domino.bmHeight,
              hdcOldBkg, 0, 0, SRCCOPY);

      { Copy image to old background }
      BitBlt (hdcOldBkg, -dx, -dy, domino.bmWidth, domino.bmHeight,
              hdcMem, 0, 0, SRCCOPY);

      { Copy image to screen }
      BitBlt (hdc_, domino.bmX, domino.bmY, domino.bmWidth, domino.bmHeight,
              hdcMem, 0, 0, SRCCOPY);

      { Copy old background to screen }
      BitBlt (hdc_, domino.bmX + dx, domino.bmY + dy,
              domino.bmWidth, domino.bmHeight,
              hdcOldBkg, 0, 0, SRCCOPY);

      { Clean up }
      SelectObject (hdcMem, hbmPrev);
      SelectObject (hdcNewBkg, hbmNPrev);
      SelectObject (hdcOldBkg, hbmOPrev);

      { Swap old with new background }
      hbmTemp       := domino.hbmBkg;
      domino.hbmBkg := hbmNew;
      hbmNew        := hbmTemp;
      DeleteObject (hbmNew);

      { Tidy up }
      DeleteDC (hdcMem);
      DeleteDC (hdcNewBkg);
      DeleteDC (hdcOldBkg);
      ReleaseDC (hWnd_, hdc_);
      end;

    { Reset previous mouse position }
    xPrev:= 0;
    yPrev:= 0;

    { Release mouse capture }
    ReleaseCapture;

    { Make sure our domino stays completely visible }
    if domino.bmX < 0 then
      x:= 0
    else if domino.bmX + domino.bmWidth > rcClient.right then
      x:= rcClient.right - domino.bmWidth
    else
      x:= domino.bmX;

    if domino.bmY < 0 then
      y:= 0
    else if domino.bmY + domino.bmHeight > rcClient.bottom then
      y:= rcClient.bottom - domino.bmHeight
    else
      y:= domino.bmY;

    if (x <> domino.bmX) or (y <> domino.bmY) then
      begin
      xPrev:= domino.bmX;
      yPrev:= domino.bmY;
      Drag (hWnd_, x, y);
      xPrev := 0;
      yPrev := 0;
      end;
    end;

    end.

    ---------- CUT HERE ---------- DRAGBMP_.PAS ----------

    unit DragBmp_;

    interface

    { menu IDs }
    const
      cm_DrawBmp = 101;
      cm_About   = 102;

    implementation
    end.

    ---------- CUT HERE ---------- DRAGBMP.RC ----------

    BACKGROUND BITMAP
    BEGIN
            '42 4D BE 25 00 00 00 00 00 00 3E 00 00 00 28 00'
            '00 00 40 01 00 00 F0 00 00 00 01 00 01 00 00 00'
            '00 00 80 25 00 00 00 00 00 00 00 00 00 00 00 00'
            '00 00 00 00 00 00 00 00 00 00 FF FF FF 00 48 55'
            '48 95 56 BE B6 EB 6D AB 62 20 44 91 5B AE B7 6F'
            'D7 FB 7B B6 B6 EF 5D 55 57 5A AB 6A 89 5A 4A 49'
            '49 56 B6 D2 24 B5 92 84 92 6A AD E9 ED B6 9A 54'
            '08 DA 91 24 F5 75 AD 5B 7D 56 D6 ED FF FE FB DA'
            'DA B5 AD 4A 72 24 94 AA 92 A9 4A AC C9 4A 24 29'
            '24 85 59 4F BB 65 75 D5 55 05 26 49 56 DB 76 F6'
            'D7 FD BD BB 6D DD EE B5 B5 56 52 B4 85 49 4A 91'
            '55 56 B5 52 12 B5 D1 4A 49 2A A7 7B 6E DD AA 5A'
            'A2 54 48 92 B9 AE DB AD FE D7 77 6E FF BB DD EB'
            '55 B5 AD 49 28 52 15 AA AA A9 56 AD 45 6B 02 10'
            '92 49 5A D6 DB B7 55 A2 8C 95 52 24 67 75 AD 77'
            'B5 BD ED DB DD F7 7B 56 AB 6A 5A B2 52 88 A8 25'
            '55 55 55 52 AB 4A A4 A5 24 B4 A5 2D B6 6D 76 5D'
            '51 22 84 88 DA DB 7B DD 6F 6B 5A AF 7B BF D6 DA'
            'D6 8D B5 4C 85 23 2A DA AA AA AA AD 44 B5 09 09'
            '49 01 5A DB 6D DB 4D E6 AD 4A 29 23 35 AE D6 97'
            'FD DE EF FA F6 ED 7D 95 2D 72 AA B1 28 4C 45 25'
            '55 55 56 A9 53 4D 52 52 24 56 A5 55 DB 76 F5 19'
            '52 55 4A 48 6B 7B B5 FA AB 75 BD 6F DF FF EB 76'
            'DA 8D 55 4A 53 11 12 D5 52 8A B5 56 A6 BA 88 94'
            '89 91 5A AB 36 DD AA F6 AE 82 90 92 9A D6 6F 2F'
            'FE EF 6B DD 7D AD DE AA B5 7A AA B4 84 24 6A 2A'
            'AD 7D 4A AA C9 52 21 21 B2 25 26 AA ED AB 5B 45'
            '51 55 25 24 2B B5 DA FB 6B D5 DE BB F7 FF B5 55'
            '49 95 6D 49 29 69 89 55 52 81 B5 2D B6 AD 4A 4A'
            '04 94 98 AB 5B 7E F6 BA AE A5 49 49 55 5F 77 56'
            'DE BF 75 D7 6F 7D 6E D5 B6 6A D2 AA 4A 02 52 AA'
            'AD 5E 4A DB 49 73 10 94 A9 22 63 AA B6 D5 AA CD'
            '52 AA 92 12 2E EA DA F5 75 EA AF 7E FD EB D9 2E'
            '49 AA AD 54 90 AD 25 55 52 A1 B5 35 B7 AE 45 21'
            '24 48 94 55 6D BE ED 32 AD 55 B4 A5 5B BB B7 AF'
            'EF 5D F5 D5 D7 DF 76 D1 B7 55 53 52 25 20 8A 4A'
            'AD 5E A2 EB 49 55 28 4A 49 93 2A A2 CB 6B 9A ED'
            '6A AA 42 88 35 6E ED 6A D5 F7 5F 7F FF 7E D9 2E'
            'AA B5 AD 44 48 4A 28 B5 52 A1 5D 56 B7 6A 82 92'
            '92 24 55 2D 3E DE F5 95 9B 55 B4 22 AA DB 9B 5D'
            'BF 6D F5 EB 5E F5 AA D3 55 4B 5A A8 95 92 D2 8A'
            'AA 8A A3 AD 6A AD 24 24 48 8A A9 52 D5 75 AB 6A'
            '74 AA 49 54 57 B6 76 F7 75 DB 5F 5F FB DF 75 2E'
            'AA B6 A5 51 20 24 05 55 25 55 5D 55 4D 55 49 49'
            '13 34 92 49 2A AF 5A 55 8B 5D B4 81 2C D5 DD AD'
            'EE B5 F5 F6 B7 76 D2 DA AA D5 5A 82 4A 92 AA 55'
            '52 AA AB AA BB AD 92 5A 64 41 24 94 D5 F6 F5 DB'
            '75 6A CA 34 5B 6F 6B 7B 5B EF 6F 5F FD DD A5 53'
            '55 2A A7 24 94 49 6A AA AD 55 77 6D 64 5A A4 80'
            '89 2A 89 21 2E AD 96 AA 96 95 3A 82 B5 BA DD D6'
            'F6 BA DA F5 6F 77 4D AD 56 D5 5C 49 21 92 95 55'
            '52 AA DE DA DF B5 09 2B 52 94 52 4A 51 5B 69 55'
            '69 6A C5 68 2A 56 B7 35 5D DB B7 AF DD DD 55 56'
            'A9 5A AB 12 4A 25 55 55 55 54 B5 95 A5 6B 52 48'
            '24 41 14 98 AD 6E B6 AA 96 AD BA 95 4B B5 DA EE'
            'F3 76 ED 7B BB 77 AB 59 56 A5 B4 A4 94 95 55 55'
            '52 AB EF 7A BA AC 94 92 89 16 A9 23 43 5B CA DB'
            '6A A9 4B 70 2C 66 B7 5B AE AD 5B D7 76 CE AA B7'
            '6D 5B 4D 09 21 55 55 55 55 55 7A D6 D6 EB 21 24'
            '52 68 22 48 3C D6 35 24 AD 56 B4 EA 93 DD 6A F6'
            'FB FB F7 7E ED BD 56 D4 C9 6A B2 52 4A 2A AA AA'
            'AA AA EF AB AB 55 4A 49 94 82 CC 95 43 2D EA DB'
            '52 F9 AB F0 2C A5 BF 4D B6 AD 5E D7 DB 6D AD 2B'
            '36 D5 48 88 92 AA AA D5 55 55 DA AE 5A D6 A4 92'
            '22 55 11 21 1C D7 55 B6 DD 87 6D E5 5B 5D 6D FB'
            '6B F7 F5 FE BD DB 5A DE CA AA B2 21 25 55 55 2A'
            'A9 56 FF 59 E6 BB 11 24 89 24 4A 4A 61 2A AB 24'
            'A3 79 4B D8 55 6A DB 2E DF 5D 6F DD F7 6E D5 31'
            '35 55 84 96 52 AA AA D5 52 A9 B5 57 5D 65 44 49'
            '34 89 B2 99 0B 5D B6 DB 5E 96 B7 B2 AA D5 B6 E9'
            'AA F7 DF B7 DD B5 AA EE D6 AA 51 20 C5 55 55 2A'
            'AD 57 FE DA 6A DF A9 92 42 52 04 22 54 5B 6A B6'
            'A9 69 EF 68 B5 16 6D BF 7F AE FA FE BA DE AD 52'
            'A9 52 84 95 2A AA AA D5 52 AB 7B 35 D5 A8 02 24'
            '94 94 A9 48 A2 AA 95 A9 56 B7 1E F5 4A ED DB 65'
            'D5 7D BF D5 F7 75 6A AD 56 AE 29 25 55 55 55 55'
            '55 6E F6 EE AA 57 54 89 31 21 22 9B 15 95 6E 57'
            'BA CA FB E8 B5 2A AE DD 7F DB F7 7F AD D6 D5 55'
            'AA A0 42 48 4A AA AA AA AA 9B ED 59 57 DA 85 22'
            '46 4A 4A 20 64 25 A9 DA 55 BD B7 DA 6A D5 59 B7'
            'DA FF 6D EB 7B 6D AA EA 54 94 94 93 5A 95 55 55'
            '55 57 BD D7 DA 35 28 4D 10 91 54 CA 89 9A 56 B5'
            'AB 53 7F 74 95 AA B7 6D 77 BA FF 5E EE DA AD 15'
            'AA A9 25 24 A5 55 55 AD 52 BE F6 9A 35 EB 52 90'
            '6A 25 12 12 22 25 AD 56 B6 AE DE FD 65 2A AD DB'
            'DE F7 DB FB DB B6 B2 EA B5 22 48 49 5A AA AA 52'
            'AA 6D ED 75 D6 96 84 4A 82 C9 64 A4 D5 5A A9 AA'
            'D5 59 7B EA 9A D5 55 36 BB ED BE B6 B6 6D 6D 2B'
            '49 48 92 92 A5 55 55 AD 55 DB BF D6 B5 6D 51 12'
            '54 12 09 92 04 8B 57 6D 5A B7 DF DE A5 2A AB EB'
            'EF BF FB ED EB D2 D2 D4 B2 11 24 A5 5A AA AA 52'
            'AA 37 FD 35 6A B3 0A 64 92 A5 52 24 A9 24 AA 9A'
            'A5 D5 7F BD 5A D5 56 5F BD 7B 77 5B 5E AE AD AB'
            '44 A2 49 0A A5 55 55 AE AB EF 6A DA D6 CE A0 89'
            '24 94 A4 89 24 AB 5D 75 DF 2D DB 77 45 2B 2D D7'
            '77 EE EE F5 F5 59 55 54 91 04 92 55 5A AA AA B1'
            '54 3E FF B5 99 B9 09 22 49 21 09 32 49 05 62 AA'
            'A8 DB 7F DE DA D4 EA BE EE DB FD AF AA D6 DA AB'
            '46 49 25 2A AA AA AD 4E AB FB DD 6B 77 57 92 4C'
            '92 4A 52 44 A4 6A 9D AB 57 2D DB FF A5 2B 15 6D'
            'FB FF D7 7B 6D AB 55 54 98 92 48 A5 55 55 52 B1'
            '55 6F BB 96 A9 AA 24 91 24 94 94 91 12 83 65 6D'
            '5A F6 BF B5 54 D4 AA DB DF BA BD EE DB 54 B5 55'
            '22 24 92 5A AA AA AD 4E AA DE FE 6D 57 75 49 4A'
            '49 21 21 26 49 5C 9A 9A B5 4B FB 7F D5 29 55 77'
            'B6 F7 F7 55 B6 AB 55 54 94 89 34 A5 55 55 69 B2'
            'AA BD EB AA DA CD 92 24 92 4A 4A 48 A4 13 6B 75'
            '6A BD 77 FF AA A2 2A DD 7F EE EE FF 69 56 AA A9'
            '21 12 41 49 5A AA 96 4D 6B FB BE D5 B5 BB 24 91'
            '24 92 92 92 49 6D 4A AA D5 D7 DF EB 54 4A D5 B7'
            'EE BD DD AA D6 AC D5 52 4A 24 95 56 A5 55 69 B5'
            '56 F7 FD AD 2B 52 89 26 49 24 24 45 12 82 B5 55'
            'AB 34 BD DF EA 95 29 6F 7D F7 B5 7B A9 B3 5A A4'
            '90 49 22 A9 5A AA 96 AA AD DF 6B 52 ED EE 12 48'
            '92 49 51 2A 49 2D 4D 6B 56 EF F7 FF 95 35 56 BD'
            'EF BE EF D6 B7 4E A5 49 24 92 4D 56 A5 55 6D 55'
            '53 BE FE AD 55 19 24 92 24 92 4A 88 92 52 B5 96'
            'AD 5A BD AF 68 44 A9 5B DE F5 B9 6D AA B4 DA 92'
            '49 24 92 A9 5A AA A9 6A EF 75 ED 69 AA F7 49 24'
            'C9 24 92 52 34 85 4A 6D 5A B5 F7 FE AE B3 56 BF'
            '7D EF 6F BB 55 6B 29 24 92 49 25 46 AA B5 56 95'
            '16 FF DD 96 B5 94 94 49 12 49 24 94 C1 2A B5 DA'
            'B5 E7 6F BF D1 4C A9 76 FB BD DA ED 5A 94 D2 49'
            '48 92 4A A9 55 4B 69 6A ED D6 FB 75 4B 6B 22 92'
            '44 92 49 21 15 45 56 2B 6B 5D FE F6 AE 91 56 CF'
            'EF FB 77 B6 B5 6B 24 92 22 26 95 56 AA B4 96 D5'
            '5B 7F DE AA B6 9E 54 24 99 24 92 4A A4 9A A9 D4'
            'D6 B7 6D FF D5 57 54 BE DF 56 AD 6D 6A D4 D9 24'
            '89 48 2A AA AA AB 6A A5 D7 FD B5 55 55 71 02 C9'
            '22 49 A4 92 49 29 56 5B AC ED DF B7 AA A8 2B 5D'
            'FA FD FB D9 AD AB 22 49 22 25 54 A5 55 55 55 5E'
            '1E EB FD AA AA AE 54 12 48 92 12 24 92 42 A9 B5'
            '5B 9B 7B 7F 55 55 D4 AB DF EB AE B7 52 56 49 2A'
            '4C 92 AB 5A AA AA AA A1 F5 DF EB 77 55 55 89 44'
            '9B 24 A4 C9 24 95 56 A6 B5 76 B7 F6 BA AA 13 5F'
            'BB 5F 75 EA AD A8 92 40 91 24 54 A5 55 55 55 5E'
            '5F FF 5E A8 AD 6A 22 5A 20 49 89 12 49 24 AA D9'
            '4A DD FE EF E6 D5 6C AB 7F F6 DF 55 5A 55 24 95'
            '24 49 4B 5A AA AA A5 A1 AB BA F2 D7 55 AA 48 81'
            '4A 92 34 A4 92 49 55 2E F5 B7 6F DF D9 AA 93 3F'
            'F5 5D B6 EB 55 D4 49 24 49 55 54 A5 55 55 5A 5E'
            '7F 77 DF 29 5A 55 11 2A 52 24 82 49 24 92 AA D1'
            '97 6D DD FE B7 55 24 C7 6F FB 6C 96 AA 29 A2 49'
            '92 84 95 4A AA AA A5 A1 D6 EF 7A F6 A5 AA A6 44'
            '84 A9 28 92 49 25 55 2F 6C DB 7B AF EA AA AB 3E'
            'FF D6 DB ED 55 C4 14 94 24 29 55 55 55 2B 5B 5F'
            '7F FD F5 95 5A B5 08 99 2A 42 4B 24 92 49 2A D9'
            '57 B6 DF 7E DD 55 54 4B DA BD B6 AA B2 29 41 22'
            '89 4A AA AA AA D4 AA A2 D5 DB EF 6A B5 4A 52 22'
            '49 16 90 49 24 92 55 36 DC ED BB FD B2 B5 52 B7'
            'FF AB 6D 5B 44 8A 2B 48 B2 55 55 55 55 2B 55 5D'
            'BF BF BA AA A5 B5 85 54 92 50 2A 92 49 24 8A D5'
            'AB 96 F6 D7 EE A6 94 8B B5 76 B5 A4 A9 50 C8 12'
            '84 AA AA AA AA D6 AA A5 7B 77 76 D6 DB 4A 28 49'
            '24 A5 52 48 92 49 29 2A 55 7B AF FF B9 59 62 27'
            '7F DD DD 5B 51 05 12 A4 A9 53 55 55 55 2C B5 5B'
            'F7 FE DD AD 2A B5 42 92 49 09 24 93 24 92 52 EB'
            'AD AD 7D BF 76 B6 9D 4A ED 77 76 B5 56 48 45 29'
            '22 AC AA A5 5A D3 4A B6 EE D7 FB 5A D5 4A 2D 24'
            '92 52 49 24 69 45 25 2C B7 6B D7 F7 E9 D5 62 BB'
            'DF ED A9 AA A0 92 98 4A 55 53 55 5A A5 2C B5 AB'
            'DB FE B6 D5 5A B5 40 49 24 94 A2 49 02 2A 5A DB'
            '6C DD 7F 6E DF 2A 9D 45 FD 5B 77 55 55 24 A2 94'
            'AA 96 B6 A5 5A D3 56 AF 7F B7 FD 35 65 4B 95 92'
            '49 21 0C 92 AC C0 42 A5 AB B7 DD FF FA DD 61 2B'
            'BB F6 4C AA A4 49 14 A5 55 6D 49 55 55 2D 69 5A'
            'F6 FE FB EA 9A B6 24 24 92 4A 51 24 21 15 95 5D'
            '5E ED 7B BF B7 32 8A 4B 77 EB FB 5A A9 22 49 1A'
            '25 AA B6 AA AA DA 96 B7 EF B7 D6 95 65 69 49 49'
            '22 42 19 25 59 80 85 4B 57 6F BB FF F5 BA C2 57'
            '77 EC 99 55 48 92 29 4A AA DA 92 AA AA 5A D2 B5'
            'ED FD F7 D5 35 6C 92 92 4C 94 A2 48 42 2B 2A BA'
            'BD DA F7 7F 6E 65 14 96 EF D7 F6 B5 52 44 92 34'
            '4B 55 6D 55 55 B5 2D 6F DF 6F AD 2A CA D3 24 49'
            '21 25 88 92 94 88 45 56 D3 37 AF ED D9 DA 65 2D'
            'BE BD 4A AA A5 29 44 AA B4 AA A9 55 6A AA D5 BD'
            'BB FB 7A D5 B5 AE 49 12 4A 48 33 44 A1 32 AA A9'
            '5E ED 7E DF F6 AA 88 57 7D D2 B5 55 48 42 29 48'
            '4B 55 56 AA 95 55 55 5B F6 DF F7 AB 4B 51 92 A4'
            '94 92 84 15 16 45 0A B7 B5 BB DD FF 6B 55 25 4D'
            'DB FF D6 EA 92 98 8A 35 B6 AA A9 55 6A AA AB 77'
            'BF F6 ED 56 B6 AE 24 49 21 24 52 A8 48 88 4A AA'
            '6B 57 7B BE DD B5 52 97 36 AA 29 15 24 A2 11 6A'
            '55 55 56 AA AA AA D6 DF 6D BF DA A9 55 55 49 12'
            '4A 49 88 92 A2 32 95 6D D6 BE D7 7D F6 CA 88 2A'
            'DF FD D6 EA 51 09 2E D5 AA AA A9 55 55 55 2D BE'
            'FB EE F3 56 AA A9 92 54 90 92 33 24 94 C4 A5 4A'
            'AD ED BF F7 AD BE B3 4B BB F7 4D 14 A6 54 52 AA'
            '55 55 56 AA AA AA D5 75 DF 7D DE AD 6A B6 24 C2'
            '23 24 84 49 25 11 0A BB 5B 5B 76 EF FB 51 44 55'
            '6E AC BA F5 08 91 0D 55 AA AA A9 55 55 55 AB EF'
            'B7 DF B5 6A DB 49 49 19 6C 49 29 12 48 56 6A D5'
            '76 D7 ED BE AD EE A9 0A BF FB 55 0A 52 24 AA AB'
            '55 55 56 AA AA AD 5D 5E FE FA F6 D5 24 B7 92 42'
            '01 12 52 64 92 80 85 AA CD BE 5F FF FB 55 52 AB'
            '5B F5 AA F4 A4 D1 35 56 AA AA A9 45 53 5A AB FB'
            'ED B7 ED AA DB 6A 34 94 D2 66 A4 89 24 B5 2A AD'
            'BB 6D FB 6D D6 DD A8 24 B7 6E 55 09 09 0A 4A B5'
            '55 55 57 5A AC 55 55 B7 BF FF DA 55 55 55 41 29'
            '14 88 49 52 49 04 4B 5B 56 DB 56 FF BD B2 43 4B'
            '6E F9 AA F4 52 A0 B5 6A AA AA A8 A5 53 A9 6F 6F'
            '7B 6E B5 D6 AA AB 2B 52 45 22 92 24 92 49 54 B5'
            '6D B5 FD DB 6B 6D B4 2A AB EE B5 09 94 2A 5B 55'
            '55 55 57 4A AC 56 DA FD F7 FD E6 99 55 54 44 24'
            'A8 4D 24 8A 44 B2 8B 6A BB 5F 57 BF FE DB 4A D5'
            '57 F9 4A F2 21 44 B6 AB 6A AA A9 55 53 AA 97 DF'
            'EF 6F BD 66 AA B7 99 49 12 D0 49 50 99 04 2A AB'
            '56 EA FE FE A9 76 A9 2A AD D6 B5 04 96 91 49 5A'
            '95 55 56 AA A4 55 7D BB 5E FD EA 9A D5 68 A2 92'
            '42 05 92 25 22 49 55 56 F5 BF AD F5 FF AD 5A 95'
            '53 79 55 69 48 24 BF 65 6A AA A9 25 4B 2A AB F7'
            'FB D7 9A B5 2D 4F 4C 24 AC AC 24 8A 48 B2 4B 6D'
            '2F 55 7B DF AA F9 A5 6A 6E F6 D5 8A 22 89 4A DA'
            'AA AA 96 C8 98 55 6E BE DF 7F 75 6A D2 B1 91 49'
            '11 21 49 50 92 84 96 AA EA FF AE BA FE B7 5A 95'
            '93 E9 2A 30 94 B2 B6 AB 55 55 69 13 65 AA DB ED'
            'F5 FD DA D5 5D 6E 2A 22 42 4A 92 26 A5 29 29 5B'
            '5D AA FB F7 AB ED B5 6A 6D 36 D1 45 49 05 4D D6'
            'AA AA 95 74 94 15 6F FF DF D7 B5 AA A2 D2 A8 CC'
            'AC 94 24 88 08 42 56 AA B7 7F AE BD 7E DB 6A AA'
            'D6 E9 2A 91 22 52 BB 6D 55 54 AA 81 21 4A BF 5B'
            'B7 BF 6B 56 DD AD 55 11 09 21 49 25 52 95 4A BB'
            '6D DB 7D FB AD B6 DB 55 9D 55 55 26 4C 95 56 BA'
            'BA AB 54 AA 4A 5A EA FF 7E FA DC A9 25 55 2A 4A'
            '52 4A 24 48 94 A2 5D 65 5B 76 AB 76 FB 5D B4 AA'
            '6A 94 AA A8 91 22 AC D5 65 54 A9 48 92 A5 BF FB'
            'ED EF A3 56 DB 5B 54 A4 A4 98 C9 B3 21 14 AA DA'
            'F6 ED FD ED 96 FB 6B 55 DA 23 2A 45 24 55 53 B6'
            'DA A9 56 93 24 4D 77 D7 5F DF BE B5 55 64 AA 91'
            '09 23 12 04 5A 49 52 AB 4D 97 57 7B 7D B6 DE AA'
            '54 89 55 12 49 85 5D 6D AB 55 29 48 51 5A EE BE'
            'FD BA 65 4A AA 9B 49 4A 52 48 44 AA 80 A2 5D 56'
            'BB 7D FD F6 D7 6D B5 55 95 22 14 A8 92 2A E7 5B'
            '6C AA 55 25 26 85 DD FB AB F7 DA B5 55 76 92 24'
            '92 92 99 49 2B 49 A2 DA D6 D7 56 ED BD D7 6D AA'
            '74 45 CA 93 25 57 1A EE AB 55 42 4A 48 3A BF D7'
            'FF BE B5 55 69 A5 24 91 24 25 23 32 48 12 5D AB'
            '5D BD FB D9 6A BE DB 55 89 08 15 44 48 28 EF 59'
            '5A A8 AC 94 D2 CB FB BE AF 75 EA AA 97 5A 49 24'
            '49 4C 94 84 92 E5 A5 5A B7 57 FF FF DF FF FE FF'
            'FE 52 FE BD 12 D7 FF D7 B5 55 D1 21 E5 35 77 FF'
            'FA EF 55 55 6D 53 12 49 B2 51 29 29 64 FA 5A B7'
            'EC FD 7F FF EF FF FD FF FF 87 FF 9A 65 5F FF FA'
            '6A AB E4 4A F2 CB FF FF DF BA EA AA A9 6E 64 92'
            '4C 84 A2 52 09 E1 66 C9 FB 97 EE B5 4E A6 CA C4'
            '55 5F EA FC 0A BF ED 7D D5 55 A1 92 E1 36 EF 6B'
            'F6 EF AA AA D6 D2 09 26 91 2A 89 04 D4 EA 99 37'
            'D6 FD 5B D6 A5 DD B6 19 AA 3F 41 5A 95 7F 5A D7'
            '6A 8B 82 25 D8 CB F5 D5 6D BA 55 55 2A AD 52 48'
            '22 49 36 69 2B F9 66 CF A9 AB F6 FB 42 B7 6C 22'
            '28 F8 14 98 95 7A B7 5A 95 33 D0 89 E0 35 FA BE'
            'DF FF EA AA D5 55 88 92 AC 92 40 92 C5 C4 59 BB'
            'B9 7F 6D D6 01 DA D0 08 90 FA A0 23 25 F5 60 35'
            '6A 47 A1 53 98 CB 6F 01 F9 6A B6 AD 5A AA 32 A5'
            '21 24 95 44 19 BA 27 57 54 D6 DB 2C 03 37 A0 3B'
            '48 E0 00 18 52 F6 C0 2A D4 AF 08 87 E4 35 FC 00'
            'D8 FF E9 52 A6 B5 44 8C 4A 4D 24 29 A3 C4 58 AF'
            '78 BD 6F F8 16 FD 40 4C 11 CA 80 BE A1 ED 00 D7'
            '45 57 50 2B 98 57 F6 0F BC ED 56 AD 59 6B 91 32'
            'A4 90 89 4A 17 94 27 57 A4 55 BB A4 2D B3 40 9E'
            'D1 D0 01 59 59 DA 85 BC C4 86 94 4B 74 2B 6C 3B'
            'FA 5B E9 5A B6 D6 26 84 92 25 32 A0 A7 6A 18 DE'
            'DC 3A EF FC 3B 7E C5 2D 21 C2 0A 1E E5 B5 0B 7B'
            '92 2F 20 97 4A 56 F8 37 D6 7E B6 D5 65 6A 48 29'
            '21 4A 44 15 2F 95 27 BF 36 6F B7 68 6A F5 40 4E'
            'D3 A4 00 BD 1B CB 06 9D 60 DE 48 2F B4 2F EC 6F'
            'FE 2B EA AA DA 96 95 62 4A 59 11 45 57 AA 1A 2E'
            'EC 1A DF 54 4F BE 82 9D 23 88 12 3A E3 B6 14 FE'
            '81 0C 92 27 5B 15 D8 7B AA 3E D5 55 26 F5 21 0C'
            '91 02 66 AA 27 55 95 DF 5B 37 77 F4 7A 75 84 AE'
            'D3 50 04 5D 43 EC 17 AD 50 5D 24 4F 66 2F BC 5E'
            'DE 1D AA AA DA 8D 4A 51 22 68 88 48 9F 2A 0A 5E'
            'B6 3D DF EC 2D F2 45 1D 23 42 28 BA A3 4A 2A 6E'
            'A0 9C 4A 1E 9D 1B F6 FF F6 37 F5 55 55 7A 99 24'
            '94 8B 25 93 4E D5 85 BD 6D 0F 77 B4 57 72 80 AE'
            'D3 94 01 3A C3 BC 2D DD 28 3A 99 0D 6D 0F 5F FA'
            'AC 3D 4A AA AB A5 22 49 21 20 52 24 5D 2F 4B 5D'
            '5F 1E DF EC 7D 7D 05 5D 23 40 2A 5D A3 A2 16 AD'
            '40 7C AC 1E D6 96 FD F7 FC 37 F5 6A AC 5B D4 92'
            '4A 4D 09 52 9E 52 8D 7B B5 9D F7 58 2A F2 42 AE'
            'D3 94 00 BB 43 DE 1B 5C 90 B9 09 1D 25 8D F7 DD'
            '58 6D 4A 95 7B EA 09 24 94 91 6A A5 3D B3 42 BE'
            '67 0B DF 74 6D BC 85 5D B3 20 12 5E A3 34 34 BF'
            '20 3A 4E 1A E7 4B DF FB 70 7B F5 6A C5 2B A2 49'
            '21 24 11 2C 9A 63 45 7D C6 87 B7 A8 5B 71 04 DD'
            '23 84 05 5A C3 EA 0B 6C 48 72 85 3D 43 4F BF 5F'
            'A0 EF 4A 95 BA D6 2C 92 4C 8D A6 A2 3D 91 A2 F5'
            '23 CF 7F EC 36 B4 43 3E D3 28 10 5A A3 96 36 DE'
            '90 F4 46 BA A2 83 7B EA 81 DA F5 6B 4B 6D 41 24'
            '92 50 10 49 7A 61 62 FA E3 46 EF 58 6D 7A 84 CD'
            '53 80 22 BF 43 6A 0C AC 40 6A 87 76 C3 66 F7 5C'
            '03 BF D2 AC B6 92 14 49 21 25 65 52 B5 81 C1 7B'
            '43 C5 BF 34 5A B0 83 3E A1 2A 04 BA C3 DA 3B 5E'
            '88 F1 02 7B 43 C5 FD F0 0D 76 AD 5B AD 7D A5 92'
            '4C 89 0A 45 72 61 B3 E6 83 A7 FF EC 35 35 04 6E'
            'D1 40 29 7D 23 94 14 DD 10 E4 87 B4 85 A3 6E A0'
            '3B ED F2 A4 6A C2 28 24 91 32 52 AA 7D 81 C0 FD'
            '45 C3 7F 58 5F FA 43 DD 21 88 02 DE E1 F6 2B BC'
            '20 D5 0B 5B 03 A1 FB 80 7F BF 45 5B DB 3F 45 49'
            '22 44 A4 45 72 42 F1 F2 83 F1 FF 94 77 F0 84 2E'
            'C1 92 15 B9 82 D5 2D 7A 41 D2 05 AA 85 F3 77 03'
            'FE FD F9 65 14 D2 A9 2A 4C 91 0A 94 F5 81 51 ED'
            '05 B3 6D 7C 2F 25 23 DD 50 A0 13 5F 61 AD 1A BC'
            '91 ED 0B 55 07 D1 FA 0E BC EB 42 9E FB AD 12 40'
            '91 2A A9 53 F2 46 D1 D5 86 E1 FD D0 52 4A 54 3D'
            'A1 4A 04 BC 82 DA 13 79 21 92 15 B6 0A D1 EF 0D'
            'FA 3F F5 69 45 36 44 95 A2 A4 92 04 C5 85 ED AB'
            '0B D8 DA DC 54 98 8B FD 40 00 4B FB 61 35 CD F4'
            '43 AC 0B CD 07 F9 7B 9B EE 3D 49 56 BA E9 D9 24'
            '16 49 24 B3 DD 01 7B DA 0E F9 FF B4 21 22 44 FA'
            '90 AA BF D4 A2 EB 3F E1 3F D3 3F B9 8F D6 F7 7F'
            'DC 2B F2 DA D7 56 02 49 40 92 49 45 E2 87 73 D3'
            '19 F8 B4 6C 4A 44 83 A5 A0 00 2F AB C1 56 FF 94'
            '3F AD 1D 56 9F FE BE DE B6 3F D5 55 AA AD 54 92'
            '5D 24 92 AB AD 0C BD AE 17 74 7F D8 52 89 44 5A'
            '41 49 55 2C A1 6C 8A A2 39 52 9B 65 5E DB AD B5'
            'EA 2E AA B6 B5 52 92 44 81 49 29 27 D2 0B 5B B4'
            '1D EC EE B4 24 32 83 B5 82 12 56 DB A2 DB 75 88'
            '04 AD 45 9D 63 76 9B 7E BC 3D F5 4A D6 ED 24 92'
            '52 52 45 4B A6 0A B5 54 2B 7C 7D AC 49 44 84 AA'
            '00 80 2D 1D 21 A4 14 00 13 5A 82 AA C1 DD 8E EB'
            '8A 2F CA B6 AA 95 49 24 95 08 94 A7 94 15 7A A8'
            '16 FA 5B F8 52 50 83 40 00 2B 40 1A E1 5B 80 00'
            '00 00 04 00 02 00 0B 80 00 3D B5 55 55 6A 92 49'
            '20 B3 2A AF 4A 1B 5D 54 3B D6 7F 54 24 97 85 58'
            '11 40 A8 1B 42 AD 50 01 58 00 02 00 01 00 06 A0'
            '0E 3B 55 6A AB AB 24 92 4D 44 55 57 54 0A BD B4'
            '6E BE 37 F5 49 50 2A B3 22 17 52 BE A1 D2 A4 92'
            '44 B5 56 D5 DB 77 5D F7 5D EF EA 95 74 54 89 24'
            '90 91 2A A7 4C 36 CF 50 5B FE 1F EA AA 25 52 AD'
            '44 41 6E FD 62 2D AA 28 9B 4A AD AB 76 DD F7 BE'
            'FB BA B5 6A AB AB 32 49 23 2A 95 4E A0 0A BE A8'
            '36 BD 3F B5 50 CA AA B2 10 8E 91 9A C1 D5 50 83'
            '2A B5 59 56 AB BB AE F5 B7 EF EA D6 D4 6C 44 93'
            '48 44 6A AF 5C 3D 5D 50 6D DB 17 EC A5 12 4A AD'
            '45 11 6F FD A2 55 AA 58 55 55 A7 54 EE F7 7B EF'
            'EF 7D 95 A9 35 93 91 48 15 29 95 1D 40 52 FD 60'
            'DB 7E 9F B2 59 4C AA B2 10 2E D2 FD 41 B5 41 02'
            'AA AA 5A 6F BB AA D7 5B 5E DB 7B 56 DA 6D AA 92'
            'B2 4A 52 BE 58 2D 9D 90 B6 DD 97 EC 22 31 45 68'
            '82 55 AD D3 A3 4B 54 55 55 55 AD D5 6D 7F BE F6'
            'FB F6 D4 AA A4 AA 52 A4 80 B2 AD 7D A0 53 7B 61'
            '6D BF 0E 9A 09 46 AA 82 24 AA 56 EE 42 B6 81 12'
            'AA AA B2 A5 D7 D6 ED DF AF BD AB 55 59 55 A4 89'
            '2D 45 52 BA 50 AE BC 90 B6 FD CB EC 14 A9 4A A5'
            '48 55 A9 79 A1 55 2A 45 55 55 4D 5E BD 7D DF 7D'
            'FD 67 35 5A A5 55 89 32 49 15 95 FD AC 77 F3 6F'
            'DB FF 77 40 25 24 95 48 01 B6 B6 B6 A2 AA 40 9A'
            'AB 55 BB AB EB D7 7B F7 57 DC EE A5 5A 56 B2 44'
            '92 6A 2B FA 5C CF FD 5F 6F FE D5 D0 0C 92 46 91'
            '52 54 D5 69 41 55 15 25 54 AA 55 56 DF 7D D6 AD'
            'FD 77 51 5A A5 29 45 11 24 95 55 D5 A2 2E DA AA'
            'B7 ED B5 22 52 49 19 22 05 AB 2A 96 A2 A8 40 4A'
            'AB 55 AA AD B6 CA BD FB D7 AD AE B5 5A 56 B4 B5'
            '4A 22 AA AA 5D 0B 55 5D DC BB 6C DC 89 24 66 88'
            '51 54 D5 69 A2 A5 14 95 54 AA 55 5B 6D BF F7 AF'
            'BE FA B2 AA AA AA 49 02 11 4C 49 24 A5 16 AA EB'
            '0B D6 D8 21 B4 92 8A 50 85 55 AA 96 41 48 41 2A'
            'AB 55 B5 56 DB 55 5D FF 7B AB 6E D5 76 95 B2 58'
            'AC 51 12 40 00 0A 80 00 0E 80 00 6A 01 24 54 82'
            '2B 6B 55 69 A2 92 8A 55 55 5A 6D BD B6 FF F7 BA'
            'EF 76 D5 2A 8A AA 04 A5 21 8A A4 90 00 15 00 00'
            '05 E0 00 14 AA 4A 96 B4 0A 96 AA 96 42 A4 10 AA'
            'AA A5 D3 6B 5D D5 BE F7 DE DD 2A D5 75 45 69 09'
            '4A 24 2D 65 AB 6E D5 AF AF 5E D4 69 48 AA A9 80'
            '55 6D 55 6D A2 A9 25 56 AD 5A AE DA F7 BF 7B DF'
            'FD B2 F5 2A 96 AB 92 56 11 49 D2 14 55 49 2B 7D'
            '7A E9 A9 54 95 55 56 68 96 D2 AA AA 52 42 49 29'
            '52 AB 35 B7 AD 6D F7 7D 5B 6D 96 D5 6A D4 24 90'
            'A2 5A 15 C5 AA B6 EC DB EF BF 2A 2B 22 AA AD 81'
            '2D 2D 55 55 AD 28 92 56 AD 54 EB 6D 7B DB EF FB'
            'F5 B5 69 2A D5 93 49 25 2C 81 64 2A AA B5 53 BE'
            'BD 6A D8 AC AC 55 4A 2A 5A EA AA AA 52 42 24 A9'
            'D2 AB AE DB AE BF BE EF DF 6B 56 D6 96 6C 24 4A'
            '41 2A 95 45 55 BA AE F7 FB DB 65 13 51 AA BA 80'
            '25 55 55 55 AC 94 89 56 2E AD 35 B6 FB F5 6D DE'
            'BA D6 AA AD 69 DB 49 98 92 52 2A 95 56 C5 55 BE'
            'F6 B6 94 2C AA 6B 52 28 DA AA B2 AA 51 21 24 A9'
            'D1 5A ED 6D B6 AF FF BB F7 9A D5 2A 96 52 92 23'
            '24 84 C0 35 6D 3A EB 6D AD ED 61 5B 55 AC AD 41'
            '2A D5 4D 55 A4 94 49 56 AE EB 5B DB 6D FD DA FE'
            'AD 75 36 D5 6D EE 34 88 49 2A 2B 42 92 C5 96 FF'
            'FB 5A 8A 14 AA 53 54 0A 55 AA B1 56 4A 42 92 D5'
            '51 9A B6 B6 DB BB 7F D7 FB 4A C9 5A A9 55 41 35'
            '13 48 94 95 6E BB 6D DA B6 B6 B5 2B 55 AC B5 50'
            'AB 55 46 AC 91 28 25 2A AF 66 ED ED 77 77 D7 7D'
            'AE B5 B6 A5 57 DA 96 41 60 15 52 25 51 56 9B BF'
            'ED ED 44 14 EA 53 54 04 5A AA A9 59 24 82 92 D5'
            '52 5D 5B 5B DE EE FE FF 79 6B 4D 5A AA B3 50 AA'
            '0D 69 24 94 AE A5 76 FB BB 5A 39 57 95 AC AA A8'
            'ED 55 4A A2 4A 24 45 2D 2D A9 D6 D6 BB DD DD EB'
            'D7 56 B2 A5 55 AE A5 09 51 02 49 63 D2 DA AD EF'
            '6A D5 82 09 6A 53 58 01 93 6A 92 A8 91 49 1A DA'
            'F5 57 3D BD F7 7F B7 DF 74 AD 4D 5A D7 75 54 52'
            '42 55 2A 08 2D 35 5B BE DF BA 34 9E 95 AC D1 29'
            '6D 52 A4 93 4A 22 A5 55 2A BA E7 6B 6E F5 FF BE'
            'CB 72 B5 65 2D DB 69 A4 94 92 48 D5 D2 CA B6 FB'
            'B5 65 4A 23 7A B3 2A 42 9A A5 0A A4 24 8A 4A AA'
            'D3 55 BE DE DD EF DD 7B B6 CD 4A 8A DB 2E 94 09'
            '29 24 93 22 2D B5 6B F7 6B 5A A8 8C A5 4C E0 89'
            '6A AA B2 12 D1 24 95 55 6E D7 6D B5 BB DF BB F6'
            'CD 32 B5 6B 56 F5 6A B2 42 49 24 4A D5 4A DF AE'
            'DE E5 55 13 5A B3 0A 12 D5 A4 84 A4 04 51 2D 56'
            '95 3A DB 6E EF BD 77 EF BA ED 4A 94 AD AD 55 44'
            '90 92 4A 91 2A B5 B7 7D B5 9B 28 2A EB 4D 60 4D'
            'AA 29 29 29 AA 8A 52 D9 6A D7 56 DB BB 7B EF 5B'
            '55 53 5A AB 57 5B AA 91 2D 44 92 56 D5 4D 2E FB'
            '6F 75 55 45 54 B5 04 91 55 D2 52 42 20 22 AD 26'
            'D5 6C FD B6 EE F7 FE FE AA AC A5 56 BC F6 AA A6'
            '41 29 4A A1 2A B2 F5 EF 5A AA 2A 12 AB 6A 49 2E'
            'AA 24 84 94 8A 95 52 DA AD 9B 97 6D BB EF 5D EB'
            '55 D3 52 55 6B AD 55 48 92 4A 24 4A AA AD 9F DA'
            'F5 D4 D4 A5 D6 94 90 51 55 49 29 25 21 2A AD B5'
            '53 76 FA D7 6F DE FB BE AB 2C 95 AA AD 6B BB 55'
            '24 90 C9 52 55 73 7B BF 5F 2B 2A 0A 2D 75 22 AE'
            'A4 92 4A 48 4C 55 55 26 AE AD AF BD DE BD EF 6D'
            '56 D3 2B 56 DB 5D 64 B2 49 25 12 45 AA 8E B7 7A'
            'EA D8 A8 A1 DA 94 84 51 49 24 90 92 A2 AA DA DA'
            'B5 5B 75 6B 7D FB BD FA AD 2C AA AD B6 EB DB 4D'
            '52 49 65 2A 55 68 EF F7 BB 52 2A 0A B5 6A 49 AA'
            '95 49 25 24 09 55 25 B5 6A F6 AE DD D7 F7 F7 D5'
            '5A D2 55 55 6D B6 A6 B5 40 92 08 49 AA B7 5D 6D'
            '6E A4 D4 91 4A A9 10 55 21 24 49 49 56 AA DA 4A'
            'AB 4D 7B B7 7F 5F 5F BA B5 55 AD 6D B7 6D 5D 4A'
            'AD 24 A3 4A 95 59 6B FF DA A9 29 24 B5 54 41 15'
            '4A 49 92 22 4D 55 15 B5 5D 7B D6 ED FE FA FA E5'
            '55 94 52 9B 6C CB B2 BD 4A 49 4C 15 2A A6 BF ED'
            '6D 92 55 49 55 52 92 69 14 92 24 88 BA AA EA AB'
            '6A AD 7D BB ED EF EF D5 6A 2B AD F6 DB BE 6D 52'
            'B0 D2 11 69 55 59 EF 5F DA 24 A8 12 AA D4 40 96'
            'B1 24 89 22 A5 55 15 54 D5 EB D7 57 5B BF BF AA'
            '95 54 6A 9D B6 D5 D5 AD 4E 08 A5 04 AA B6 9A FD'
            '74 C9 5A A4 57 55 12 2A 46 49 34 89 5A AA AA AB'
            'AB 3E BA FE FF FD 7A A5 6A AB D5 73 6D 6A 56 B3'
            'B0 A5 88 51 55 45 77 FB A9 12 A4 91 2C A8 40 54'
            '90 92 42 23 6B 55 55 55 36 E5 EF AD F7 6B F7 AA'
            'D5 54 95 AE B5 DD AA AE 4D 52 35 A6 AA BA DF D6'
            'F2 44 B9 24 AB 52 88 95 25 24 94 8A 54 AD 35 6A'
            'EB 5F 55 7B AE FF DF 55 AA 5B 6E B5 DB 2A 5D 69'
            'B2 08 82 09 45 4A AA BF A4 99 44 A9 15 54 11 55'
            '4C 49 29 25 AB 52 CA 97 56 EA FF D7 7F EE BC AB'
            '55 A5 55 6F 6D F5 6A D6 6D 55 28 B5 2A B5 BF FE'
            'D1 22 B9 42 4E A1 20 08 91 92 42 4A 76 AD 35 6A'
            'AD BF 55 BE DD DD FB AA AA 5A AD DA B7 4A D5 AD'
            'D2 A1 4A 82 55 4B 57 F5 64 49 52 94 95 5A 42 53'
            '24 24 94 95 C9 55 4A DA D7 6D FF 6D BB BF EE B5'
            '55 2A DA B6 EC B5 5B 5A AA 8A 11 2C AA B4 BE AF'
            'A8 92 A9 29 2A A0 84 94 49 49 2A 2A B6 AA B6 A3'
            '5C DB 55 DA FF 7B BD 4A AA 56 B5 AD AB D6 AA 55'
            '55 54 AA 41 55 4B 6D FE C1 25 72 52 65 4A 28 21'
            '12 22 61 5B 4D 55 49 5E B3 B5 FE B7 DB F7 7A B5'
            '54 A9 4B 76 DD 54 B5 B5 DB 51 25 1A AA 96 DB F5'
            '92 4A AA A4 8A D0 80 8A 66 CD 0A 26 BA AA 36 A9'
            '6E DF 5B ED B6 EE D5 4A A9 56 B6 CD B6 A9 CA 66'
            '24 A6 48 A1 55 65 37 AF 24 12 D2 99 55 45 11 12'
            '88 10 54 DA D5 6A C9 56 D5 72 F6 BB 6F DF F5 B6'
            'AA 35 6D BB 69 AA 35 DD DB 50 92 16 A4 9A EF 7A'
            '88 A5 29 22 15 10 22 24 52 A5 A1 2A AA A5 2A AB'
            '5B DF AD D6 BD 7A AE A9 54 CA DB 6E DF 54 D6 AA'
            'AD 55 25 69 5B 65 5A EF 21 0A F2 48 AA 45 40 49'
            '24 94 0A DB 55 4D 55 54 B6 B5 7B 6B EB F7 D5 56'
            'B1 35 B6 D5 B4 A9 6D 55 52 AA 48 02 44 9A B7 DA'
            '4A 25 44 93 2A 88 05 12 89 21 55 B5 5B 5A AA AB'
            '6D EF AE BE BF EF 7A E9 46 4E ED BD 6B 52 AA DA'
            'BB 54 92 D4 95 45 6D B6 A0 4A B1 24 56 11 10 24'
            '52 4A 49 56 E4 B5 55 AD DB BA FD D3 EA DE CB 16'
            'B8 B5 9B 6B D5 54 55 35 D6 BB 25 2A AA B5 5B 6C'
            '89 11 46 4A EC A2 24 AA 94 94 96 A9 1B AA AA 5A'
            'B7 6F AB 7E BF BD B6 E9 42 4B 76 D6 AE A1 6A E6'
            'AD 64 CA D5 55 35 77 DB 22 45 A8 B5 15 04 41 00'
            '42 21 29 B7 F5 55 55 D5 AE D5 7E AB F6 EB 6D 56'
            '94 BE DB 7D B5 4A 55 9D 52 DB 35 2A AA AA AD 74'
            '88 0A D5 4A EC 50 88 2A 98 CA 57 6A 46 AA AA 57'
            '7D BF D5 F6 AD 7E D2 A9 A5 55 B6 CA 6A A2 D5 69'
            'BD A6 D6 D5 55 55 7F DA 21 51 42 B5 1A 02 11 42'
            '23 12 AA AD BD 5B 55 AA DB 55 7F 5D DB EB AF 56'
            '48 AB 6D BB D5 2C 2B 57 57 5D A8 95 4A A5 AB 74'
            '8A 05 D5 4A F4 A4 42 14 C8 45 55 52 C9 A4 B5 5E'
            'B6 FF D5 F7 76 BE B5 69 92 BE DB 56 AA C2 D6 DA'
            'B4 6A 37 6A B5 5A 5F A9 20 AA A2 B5 28 08 84 22'
            '15 9A B6 EF 36 5B 4A A9 ED 55 BE AA DD EB 6A 96'
            '25 6B B6 F5 55 15 6D 55 63 D5 E9 55 4A A5 B6 F4'
            '4A 01 C9 56 D2 A1 10 48 A4 25 4D 54 D5 B6 BB 57'
            '5B FF 75 EF B7 BE CD 69 4A DA 6D AD AA AA 92 AA'
            'DD 2B 56 AA B5 55 4F D1 10 AB B4 A9 54 04 24 8B'
            '49 5A BA AB 6D 65 44 AA EE AA EF 5A ED 75 B5 96'
            '15 B7 DB 55 55 55 6D 5D A2 D6 AA D5 4A AA B6 A4'
            '4A 01 41 56 A9 48 81 10 13 25 55 DD 92 9A BB 6F'
            'BB FF DA EF B7 E6 56 68 AB 6D 76 5A AA 85 D5 63'
            '5D 6D 55 5A B6 A5 2D EA A0 AA D5 29 42 11 14 25'
            '54 5A AA AA 6D 6A CA A9 6E B5 B5 BB 5D 5D D9 95'
            '12 DB 4D EB 55 5A AA DE 6D A9 BA A5 6A D2 CB 58'
            '0A 01 AB 56 99 42 21 49 2A A6 B3 55 D5 AB 35 5F'
            'DD EF 5F 6E F7 EA 97 6A 2D B5 FA 54 AA A5 56 A9'
            'D3 57 55 DA D5 2D 35 E2 A0 AA C4 A9 64 08 44 12'
            '52 59 4E D6 9B 4C D6 B2 BA BA F5 DD 6E B5 74 A8'
            '53 6F 2B AA AA 95 AD 56 95 6C B6 AA AA D2 D7 54'
            '0A 01 AB 64 D1 51 09 45 14 A6 B5 2D 6A BB A9 6F'
            'F7 D7 AF 7B DD 55 AB 22 AE DA EC D5 55 AA B2 D9'
            '7A D3 65 55 56 AD 2A D1 50 96 CA 49 8A 02 50 08'
            'A5 59 6A D9 55 54 56 DB AD 7A FA D5 7B EE 56 D4'
            '55 B5 AB 29 6A 56 4D 37 A5 AD 5D 5B A9 4A D5 AA'
            '02 21 95 92 20 54 02 B2 2A A7 55 56 D5 AB AA B7'
            '7B EF AF BF EE B5 D5 21 2B 6F 55 D2 95 AD B2 C9'
            '5A 56 D2 EA 76 B5 56 58 54 85 6A 49 44 81 54 84'
            'AA 58 AA B5 AA B5 6D DE FF DD 7B 6A DD AA 2A 4A'
            '56 DA AE 29 6A A9 6D B7 6D E9 6D 55 8D CA A9 A2'
            '80 09 97 22 29 2A 00 29 55 A7 56 CA 57 4A 9B 6D'
            'EE BB D6 BF BB 6D DA 91 5B AD 59 D3 5B 56 93 5A'
            '52 96 9B DB 79 3D 56 A8 29 52 E8 56 82 40 A9 55'
            '2A 5A B5 35 AC BB 76 BB DD EF 7E F5 76 AA 35 24'
            'B6 FB B6 04 A4 AA 6C A5 DF 6D 6A 2A A6 D2 AD 52'
            '82 05 AA 80 28 A9 02 28 55 A4 AA EA DB 56 AD D7'
            'BB BE AD AF ED 5B EA 4D 2D 95 54 AB 5B 55 53 5A'
            '95 6D DB 4D 5B 57 9A AA 22 0A D2 24 A0 81 48 57'
            '95 2D 4A D6 9B 57 76 DF F7 BB 5F 7F B6 EA 55 24'
            '15 A9 32 65 35 5A AE B7 76 D6 AD B9 6A A8 65 51'
            '44 51 54 89 0A 14 12 AC 32 AA B5 A9 75 6C AD BB'
            '6F 7F FA D5 6D 55 B4 49 FF 76 C4 8A C9 A5 51 64'
            'AA A9 53 66 D6 D7 DE A4 08 84 E5 20 21 21 44 5B'
            '4A 52 AB 56 AA AB DB 57 FE EB 6F BF DA AB 4A AA'
            '2A AD 29 55 37 5A AE 9B 55 56 AE 99 95 2A 29 4A'
            'A1 11 C8 05 44 4A 11 6E A5 AD 4A AD 52 DA 36 FE'
            'ED DF FA EC B5 D6 B5 11 D6 EA E2 4A EA AB D1 6A'
            'AD AA D9 77 7A F5 D6 91 04 22 B5 50 2A 90 A4 DA'
            '9A 12 B5 59 6F A7 ED B7 DF BF 57 5B DB 2D 48 44'
            '3D 95 0C 95 15 54 2F 56 DA 56 A6 AA A7 46 3A A4'
            '48 85 C0 04 80 25 09 B5 42 ED 4B 56 D4 5D 5B 6D'
            'BA FA FD FE B6 DA B5 A9 EB 6A A1 2A EA AB D2 D5'
            '55 AD 5D D5 5A BD E5 49 11 10 AA A1 52 88 53 6B'
            'A9 12 B5 69 AB B6 B2 DF FF F7 DF 55 ED 35 64 0A'
            'B6 AD 14 95 55 56 AC 9A AA 5A AA AB 6A CA 5A 92'
            '42 23 C0 04 04 22 84 D6 44 AD 4B 57 5D 6B AF 7B'
            '77 AF 7A FD 5A EA 89 51 6D 59 65 2A 95 54 53 65'
            '55 F5 55 5C D6 B5 AE A4 94 44 95 09 51 48 2B AD'
            'AA 92 B6 AA 6B 4D 75 B7 EE FE F7 57 B3 55 72 4A'
            'CA B2 08 55 6A EB AE DA DB 0A BB 6B AD D6 D1 49'
            '40 89 C0 22 02 22 84 B5 49 2D 55 55 D4 76 AE EE'
            'DD BD ED FA EE AA 84 91 BB 64 A2 AA AD 16 51 25'
            'A4 F5 64 D5 59 2D 3E 93 15 11 0A 48 A4 84 1B DB'
            '52 52 AA AE 97 DD D9 BF FF EB BF 6F 54 D4 AA 4B'
            '54 C9 4C 95 52 ED 6E DB 5B 2A DB AA B6 DA E2 A4'
            '40 22 D0 02 09 29 26 2A A4 8D 56 D9 6C B3 6F 7D'
            'BB 7F 75 DA DB 55 A1 2A AB 92 11 35 6D 12 92 AA'
            'A6 D5 95 56 A9 B5 9D 49 2A 85 02 50 52 42 49 D6'
            'A9 32 55 56 DB 6E B5 EB F7 DB EF 77 AA AA 0A 4A'
            'AD 24 A4 C2 92 ED 6D 55 5A AB 6A B9 D7 56 6A 92'
            '80 10 A4 02 85 14 96 BA D2 4D AA A9 A5 55 DB 5F'
            'BE FF 7A DD 55 49 52 9D 5A 49 4A 15 6D 12 55 AA'
            'B5 5A AD 67 3A AD D5 54 54 45 08 A4 10 22 2D 55'
            'A8 B2 5B 57 5E EE AE FF 77 AA EF B6 AA B2 54 35'
            '54 92 24 AA 92 AD AA 56 A5 55 52 DA D5 6A 9A A2'
            '80 90 52 00 A5 48 91 AA A5 8D A4 AD 69 5B 7B B5'
            'ED FF DA ED D5 44 81 6A A9 24 89 55 6D 5A D5 A9'
            '5A AA AD 55 B5 95 75 49 29 02 80 02 08 15 2F 6A'
            'A8 22 5B 5A 96 AC D2 EF BF AD B7 BA 8A A9 2A AD'
            '52 49 52 95 55 53 2A 56 A5 75 55 B6 AB 7D A5 54'
            '42 28 14 54 51 20 52 95 B5 5D B6 B5 7B 77 AF BF'
            '7B 7B 6D 6B 55 22 49 5A AC 92 14 2B AA AC D5 A9'
            '5A 8A AA 55 6A A3 5A 92 88 41 20 80 82 4A AD 6B'
            '61 25 25 65 94 AD 5B 7A F7 EF FF DE AA 89 12 B5'
            '51 24 A2 D4 55 53 55 57 6B 75 55 EA D7 5E A6 A4'
            '52 92 40 01 14 92 55 56 BA 5A DA 9B 6B DB B6 F7'
            'EF 7A BA B5 55 24 69 55 24 49 49 2B AA A6 AA A8'
            '94 AA AD 17 AC B5 59 49 80 00 85 14 21 24 AA AD'
            '6A AA AB 76 AD 36 6D EF DE EF F7 ED 52 49 82 BB'
            '59 93 12 54 AA AD 55 57 6B 55 5A EC 5B 6A B7 54'
            '55 55 08 20 8A 49 55 69 54 55 56 A5 5A ED DB DE'
            'BB DE AE DA AC 94 2A A4 42 24 66 AB 55 5A AB 59'
            '54 A5 55 5B B4 DD 69 51 00 00 10 81 10 92 AA D6'
            'ED 6A AD 5D 75 9B 6F BD FF 75 FD AA A1 21 49 7A'
            '95 49 09 6A AD 55 54 A6 AB 5A AA A5 6B AA D6 AA'
            '52 52 21 04 25 25 55 A9 99 15 B2 EA C6 76 DB 7B'
            'EA FF 5B 5A AA 8A 92 A5 28 12 AA 95 52 AA D7 5A'
            'D4 B5 55 5E B5 55 A9 54 C4 84 84 09 49 4A AB 57'
            '6E 6A 6D 95 BD DD B6 EF 5F ED F6 F5 58 22 25 5A'
            '42 B5 55 76 AD 55 A8 B5 2B 6A AA E9 EE B5 57 55'
            '11 20 20 10 12 15 56 AA BA 95 D6 6B 52 53 6B FB'
            'FD DB 5D AA C2 8C 8A EA 99 4A A5 89 55 5A 57 6A'
            'D5 55 55 57 5A AB 59 54 44 45 01 25 44 AA AD 6D'
            '55 76 99 DE AD BE DD DF 6B 7F F7 6D 14 51 35 50'
            '42 B5 5A 76 AA A5 A9 55 36 AA AA AA D5 D6 B6 D5'
            '91 08 44 00 11 25 5A 95 AE 89 77 28 B6 6B B7 B7'
            'FF D6 DC D2 D1 04 45 55 15 4A A5 95 55 5B 56 AA'
            'E9 55 56 DD BB 2D 6B 2A 24 51 08 2A A4 4A B5 6A'
            'B5 76 CA D7 69 DA 6D 7E AE FD AB AD 04 52 D5 69'
            '6A B5 5B 6A B6 AA AA D5 56 D6 AA A2 D6 FA D4 D4'
            '89 04 00 80 09 95 2A AB 65 8D B5 5A D6 A7 DB ED'
            'FD 57 7E D5 51 04 0A C2 15 4A A4 95 55 55 55 2A'
            'AA 99 55 5F AD 8B 5B 55 22 10 21 2A A2 2A D5 56'
            '9E 77 56 B5 2D 5D 76 FF FB FD D5 2A 82 29 AA 95'
            '6A B5 5B 6A AA B5 AA D5 55 66 AA A5 5B 7A AA AA'
            '48 40 44 00 09 55 56 ED 71 DD 6D 6A F5 AA AD DB'
            'AE AA BA D4 24 4A 2A A4 95 4A AA 96 D5 4A 55 AA'
            'AA 9A B5 5A B6 A6 D5 54 92 84 80 55 52 55 B9 2A'
            'AF 57 5A D5 8A B5 EB BF 7D FF EF 55 4A 91 4A 89'
            '6A B5 55 6D 2D B5 56 55 6A B5 4A A5 CD 5D 56 AB'
            '44 08 04 80 04 AB 46 D5 52 BA F5 AB 7B 4B 5F 7B'
            'DA AB 5A AA 10 24 2A B2 95 4A B7 5A DA 4B A9 AA'
            'D5 6A B5 5B 7B B9 AD 52 11 20 89 15 29 5A BD AA'
            'ED 6F AB 54 A6 B6 B6 F7 7F FE F5 55 45 49 55 04'
            '6A B5 A8 A5 55 B6 56 AD AA D5 6A AA 95 67 5A AD'
            'A4 09 10 20 42 A5 51 56 95 59 7E AF 59 55 6D EE'
            'FB AB A6 A8 28 12 55 52 95 4B 57 5A AA AD'
    END

    OBJECT BITMAP
    BEGIN
            '42 4D 26 05 00 00 00 00 00 00 76 00 00 00 28 00'
            '00 00 28 00 00 00 3C 00 00 00 01 00 04 00 00 00'
            '00 00 B0 04 00 00 00 00 00 00 00 00 00 00 00 00'
            '00 00 00 00 00 00 00 00 00 00 00 00 BF 00 00 BF'
            '00 00 00 BF BF 00 BF 00 00 00 BF 00 BF 00 BF BF'
            '00 00 C0 C0 C0 00 80 80 80 00 00 00 FF 00 00 FF'
            '00 00 00 FF FF 00 FF 00 00 00 FF 00 FF 00 FF FF'
            '00 00 FF FF FF 00 00 00 00 00 00 00 00 00 00 00'
            '00 00 00 00 00 00 00 00 00 00 0B BB BB BB BB BB'
            'BB BB BB BB BB BB BB BB BB BB BB BB BB B0 0B BB'
            'BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB'
            'BB B0 0B BB BB BB BB BB BB BB BB BB BB BB BB BB'
            'BB BB BB BB BB B0 0B BB BB BB BB BB BB BB BB BB'
            'BB BB BB BB BB BB BB BB BB B0 0B BB BB BB BB BB'
            'BB BB BB BB BB BB BB BB BB BB BB BB BB B0 0B BB'
            'BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB'
            'BB B0 0B BB BB BB BB 00 00 BB BB BB BB BB BB BB'
            'BB BB BB BB BB B0 0B BB BB BB B0 00 00 0B BB BB'
            'BB BB BB BB BB BB BB BB BB B0 0B BB BB BB 00 00'
            '00 00 BB BB BB BB BB BB BB BB BB BB BB B0 0B BB'
            'BB B0 00 00 00 00 0B BB BB BB BB BB BB BB BB BB'
            'BB B0 0B BB BB B0 00 00 00 00 0B BB BB BB BB BB'
            'BB BB BB BB BB B0 0B BB BB B0 00 00 00 00 0B BB'
            'BB BB BB BB BB BB BB BB BB B0 0B BB BB B0 00 00'
            '00 00 0B BB BB BB BB BB BB BB BB BB BB B0 0B BB'
            'BB BB 00 00 00 00 BB BB BB BB BB BB BB BB BB BB'
            'BB B0 0B BB BB BB B0 00 00 0B BB BB BB BB BB BB'
            'BB BB BB BB BB B0 0B BB BB BB BB 00 00 BB BB BB'
            'BB BB BB BB BB BB BB BB BB B0 0B BB BB BB BB BB'
            'BB BB BB BB BB BB BB BB BB BB BB BB BB B0 0B BB'
            'BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB'
            'BB B0 0B BB BB BB BB BB BB BB BB BB BB BB BB BB'
            'BB BB BB BB BB B0 0B BB BB BB BB BB BB BB BB BB'
            'BB BB BB BB BB BB BB BB BB B0 0B BB BB BB BB BB'
            'BB BB BB BB BB BB BB BB BB BB BB BB BB B0 0B BB'
            'BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB'
            'BB B0 0B BB BB BB BB BB BB BB BB BB BB BB BB BB'
            'BB BB BB BB BB B0 0B BB BB BB BB BB BB BB BB BB'
            'BB BB BB BB BB BB BB BB BB B0 0B BB BB BB BB BB'
            'BB BB BB 00 00 BB BB BB BB BB BB BB BB B0 0B BB'
            'BB BB BB BB BB BB B0 00 00 0B BB BB BB BB BB BB'
            'BB B0 0B BB BB BB BB BB BB BB 00 00 00 00 BB BB'
            'BB BB BB BB BB B0 0B BB BB BB BB BB BB B0 00 00'
            '00 00 0B BB BB BB BB BB BB B0 0B BB BB BB BB BB'
            'BB B0 00 00 00 00 0B BB BB BB BB BB BB B0 0B BB'
            'BB BB BB BB BB B0 00 00 00 00 0B BB BB BB BB BB'
            'BB B0 0B BB BB BB BB BB BB B0 00 00 00 00 0B BB'
            'BB BB BB BB BB B0 0B BB BB BB BB BB BB BB 00 00'
            '00 00 BB BB BB BB BB BB BB B0 0B BB BB BB BB BB'
            'BB BB B0 00 00 0B BB BB BB BB BB BB BB B0 0B BB'
            'BB BB BB BB BB BB BB 00 00 BB BB BB BB BB BB BB'
            'BB B0 0B BB BB BB BB BB BB BB BB BB BB BB BB BB'
            'BB BB BB BB BB B0 0B BB BB BB BB BB BB BB BB BB'
            'BB BB BB BB BB BB BB BB BB B0 0B BB BB BB BB BB'
            'BB BB BB BB BB BB BB BB BB BB BB BB BB B0 0B BB'
            'BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB'
            'BB B0 0B BB BB BB BB BB BB BB BB BB BB BB BB BB'
            'BB BB BB BB BB B0 0B BB BB BB BB BB BB BB BB BB'
            'BB BB BB BB BB BB BB BB BB B0 0B BB BB BB BB BB'
            'BB BB BB BB BB BB BB BB BB BB BB BB BB B0 0B BB'
            'BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB'
            'BB B0 0B BB BB BB BB BB BB BB BB BB BB BB BB 00'
            '00 BB BB BB BB B0 0B BB BB BB BB BB BB BB BB BB'
            'BB BB B0 00 00 0B BB BB BB B0 0B BB BB BB BB BB'
            'BB BB BB BB BB BB 00 00 00 00 BB BB BB B0 0B BB'
            'BB BB BB BB BB BB BB BB BB B0 00 00 00 00 0B BB'
            'BB B0 0B BB BB BB BB BB BB BB BB BB BB B0 00 00'
            '00 00 0B BB BB B0 0B BB BB BB BB BB BB BB BB BB'
            'BB B0 00 00 00 00 0B BB BB B0 0B BB BB BB BB BB'
            'BB BB BB BB BB B0 00 00 00 00 0B BB BB B0 0B BB'
            'BB BB BB BB BB BB BB BB BB BB 00 00 00 00 BB BB'
            'BB B0 0B BB BB BB BB BB BB BB BB BB BB BB B0 00'
            '00 0B BB BB BB B0 0B BB BB BB BB BB BB BB BB BB'
            'BB BB BB 00 00 BB BB BB BB B0 0B BB BB BB BB BB'
            'BB BB BB BB BB BB BB BB BB BB BB BB BB B0 0B BB'
            'BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB'
            'BB B0 0B BB BB BB BB BB BB BB BB BB BB BB BB BB'
            'BB BB BB BB BB B0 0B BB BB BB BB BB BB BB BB BB'
            'BB BB BB BB BB BB BB BB BB B0 0B BB BB BB BB BB'
            'BB BB BB BB BB BB BB BB BB BB BB BB BB B0 0B BB'
            'BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB'
            'BB B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
            '00 00 00 00 00 00'
    END

    MAIN MENU
    BEGIN
            MENUITEM "&About...", 102
            MENUITEM "Draw Image", 101
    END

    ABOUT DIALOG 41, 33, 146, 132
    STYLE DS_LOCALEDIT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
    CAPTION "About"
    FONT 8, "Helv"
    BEGIN
            CONTROL "Bitmap Dragging Sample", -1, "STATIC", SS_CENTER | WS_CHILD | WS_VISIBLE, 0, 6, 144, 8
            CONTROL "Purpose: Demonstrates smooth bitmap dragging.  Select ""Draw Image"" to draw the domino, then drag it around using the mouse.", 103, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 6, 19, 136, 42
            CONTROL "Written by: Michael Vincze", 101, "STATIC", SS_CENTER | WS_CHILD | WS_VISIBLE | WS_GROUP, 0, 65, 146, 9
            CONTROL "Adapted from: Patrick Schreier of", -1, "STATIC", SS_CENTER | WS_CHILD | WS_VISIBLE, 2, 75, 144, 8
            CONTROL "Microsoft Windows Developer Support", -1, "STATIC", SS_CENTER | WS_CHILD | WS_VISIBLE, 2, 85, 144, 8
            CONTROL "Copyright \251 1993 Vincze International", 102, "STATIC", SS_CENTER | WS_CHILD | WS_VISIBLE | WS_GROUP, 0, 95, 146, 8
            CONTROL "Portions Copyright \251 1992 Microsoft Corp.", 102, "STATIC", SS_CENTER | WS_CHILD | WS_VISIBLE | WS_GROUP, 0, 105, 146, 8
            CONTROL "OK", 1, "BUTTON", BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 57, 115, 32, 14
    END

    APPLICATION ICON
    BEGIN
            '00 00 01 00 01 00 20 20 10 00 00 00 00 00 E8 02'
            '00 00 16 00 00 00 28 00 00 00 20 00 00 00 40 00'
            '00 00 01 00 04 00 00 00 00 00 00 02 00 00 00 00'
            '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
            '00 00 00 00 BF 00 00 BF 00 00 00 BF BF 00 BF 00'
            '00 00 BF 00 BF 00 BF BF 00 00 C0 C0 C0 00 80 80'
            '80 00 00 00 FF 00 00 FF 00 00 00 FF FF 00 FF 00'
            '00 00 FF 00 FF 00 FF FF 00 00 FF FF FF 00 00 00'
            '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
            'BB BB BB BB BB BB BB BB BB BB 00 00 00 00 00 00'
            'BB 30 00 0B BB BB BB BB BB BB 03 00 00 00 00 00'
            'B3 00 00 00 BB BB BB BB BB BB 03 30 00 00 00 00'
            'B3 00 00 00 BB BB BB BB BB BB 03 33 00 00 00 00'
            'B3 00 00 00 BB BB BB BB BB BB 03 33 00 00 00 00'
            'B3 00 00 00 BB BB BB BB BB BB 03 33 00 00 00 00'
            'BB 30 00 03 BB BB BB BB BB BB 03 33 00 00 00 00'
            'BB B3 33 3B BB BB BB BB BB BB 03 33 00 00 00 00'
            'BB BB BB BB BB BB BB BB BB BB 03 33 00 00 00 00'
            'BB BB BB BB BB BB BB BB BB BB 03 33 00 00 00 00'
            'BB BB BB B3 00 00 BB BB BB BB 03 33 00 00 00 00'
            'BB BB BB 30 00 00 0B BB BB BB 03 33 00 00 00 00'
            'BB BB BB 30 00 00 0B BB BB BB 03 33 00 00 00 00'
            'BB BB BB 30 00 00 0B BB BB BB 03 33 00 00 00 00'
            'BB BB BB 30 00 00 0B BB BB BB 03 33 00 00 00 00'
            'BB BB BB B3 00 00 3B BB BB BB 03 33 00 00 00 00'
            'BB BB BB BB 33 33 BB BB BB BB 03 33 00 00 00 00'
            'BB BB BB BB BB BB BB BB BB BB 03 33 00 00 00 00'
            'BB BB BB BB BB BB BB BB BB BB 03 33 00 00 00 00'
            'BB BB BB BB BB BB 30 00 0B BB 03 33 00 00 00 00'
            'BB BB BB BB BB B3 00 00 00 BB 03 33 00 00 00 00'
            'BB BB BB BB BB B3 00 00 00 BB 03 33 00 00 00 00'
            'BB BB BB BB BB B3 00 00 00 BB 03 33 00 00 00 00'
            'BB BB BB BB BB B3 00 00 00 BB 03 33 00 00 00 00'
            'BB BB BB BB BB BB 30 00 03 BB 03 33 00 00 00 00'
            'BB BB BB BB BB BB B3 33 3B BB 03 33 00 00 00 00'
            '00 00 00 00 00 00 00 00 00 00 03 33 00 00 00 00'
            '0B BB BB BB BB

[Back to WIN-OS2 SWAG index] [Back to Main SWAG index] [Original]