
<SCRIPT LANGUAGE="VBScript">
<!--

'The naming conventions for each of the areas where
' cards can play are:
'	
'	Shuffle Stack		Place where cards are ALL face down 
'				 and the user can click to put cards into
'				 play. Both 3 card and 1 card deal are supported.
'				 (to change number of cards played
'				  change the value of gCOUNTDEAL)
'				 There is only 1 Shuffle Stack.
'
'	Discard Stack		Place where cards are face up
'				 and can be dragged to an Ace Stack
'				 or a Card Stack. There is only 1 Discard Stack.
'
'	Ace Stack		Place where cards of the same suit
'				 are piled, starting with the Ace and Ending
'				 with the King. When all kings are showing
'				 the game is over and the animation begins.
'				 There are 4 Ace Stacks.
'
'	Card Stack		Place where cards are piled, alternating the
'				 the suit and in descending order.
'				 There are 7 card stacks.

'The following global variables are used for this application.
'Before each variable is information explaining how to use it,
'as well as explanatory text on the question that the variable 
'answers (Boolean) or a statement describing the variable's use.
'
'The variable naming conventions used in this
' application are represented by: [g][r]vartypeVarName
' Where:
'	 [g]		Denotes it as a global variable.
'	 [r]		Denotes it as an array (region).
'	 vartype	One of the values specified below.
'	 VarName	Name of variable, starting each word 
'			 with a capital letter.
'			Using a VARNAME in ALL uppercase
'			will denote it as a constant value.
'
' vartype can be:
'	d	Decimal number, numeric and non-integer.
'	b	Boolean.
'	int	Integer.
'	inc	Incrementer (Used when doing things, like animations
'				 in steps or increments).
'	str	String.
'	obj	Object or Control.
'	
'	NOTE: Since all data types in VBScript are Variants,
'	this variable convention is for documentation and
'	to help you with debugging and programming.
'

'Are we in debug mode?
dim gbDebug

'Did the mouseup event happen so 
' we can stop dragging a card?
dim gbMouseUp

'Number of MouseMove(s) to skip before actually
' redrawing a card (makes the drag seem faster).
dim gintDragSkip

'Did the user want to End the game?
dim gbEndGame

'Done with bouncing all cards off screen.
dim gbAnimationDone 

'Was the background clicked during card animation?
dim gbLeaveEarly

'Number of moves the card will take to get to the ace
' Stack during animation
dim gincCardMoveSteps

'Current card being moved.
dim gobjCurMoveCard

'Amount to move left of card on each step.
dim gincEndLeft

'Amount to move top of card on each step.
dim gincEndTop

'Order the suits appear on the Ace Stacks.
dim gstrSuitOrder

'Stack the cards are currently being moved to
dim gintCurStackToMove

'Done moving cards to Ace Stack.
dim gbCardMoveDone 

'Is the shuffling done yet?
dim gbShuffleDone

'The array to hold the randomly shuffled cards.
dim grintShuffled(52)

'Number of times to go into the random sequence.
dim gRNDCOUNT

'For the End game
'Each card that is currently bouncing and the 
' top and left value for each.
dim grCardBouncing(4,3)

'Which cards are done moving.
dim gbDoneMoving(4)

'Friction and gravity valued applied to each bounce.
dim gdFriction
dim gdGravity

'Used for the count of cards to deal.
dim gCOUNTDEAL

'Number of cards moved to Discard Stack when a user clicks the
' Shuffle Stack.  Needed to determine how many cards should
' be showing on the Discard Stack.
dim gintCountDiscarded

'Stack the card is being moved from.
dim gintSrcStack

'Used during animation. These variables
' store the starting position of each card and
' the End points of where the card
' should End up after being moved.
dim gdStartTop, gdStartLeft
dim gdCardTop, gdCardLeft
dim gdOffsetTop

'Card being moved.
dim gintMoveCardInx

'Number of total cards being moved during a mouse
' drag, i.e., moving cards from one stack to another.
dim gintCountMoving

'Holds all the cards of the deck.
dim grobjAllCards(52) 

'Is the card face up?
dim grbCardShowing(52)

'Current deck being displayed.
dim gintCurDeck

'Current deck being displayed in the dialog.
dim gintTempCurDeck

'Holds all the card backs to be displayed later.
dim grobjCardDeck(12)

'Used when comparing with a King or Ace.
dim gACE 
dim gKING

'Starting index into stack array of Shuffle Stack.
dim gintShuffleStackInx

'Starting index into stack array of Discard Stack.
dim gintDiscardStackInx

'Starting index into stack array of first Ace Stack
dim gintAceStackStartInx 

'This encompasses all 7 Card Stacks, 4 Ace Stacks,
' Shuffle Stack and Discard Stack.
'This array contains 30 items in each stack because 28 is 
' the maximum number of cards that could be in one stack
' plus two spaces for other info.
' The first dimension of the array determines which
' stack to use and the second dimension is what is on
' the stack. The first element in each stack is the
' stack object, the second element is the count of 
' elements and the third element onward is where the cards are stored.
dim grobjAllCardStacks(13,30) 

'Value of the bottom of the stack, empty stack.
dim gstrBOTTOMOFSTACK 

'Count of the total number of stacks used.
dim gintCountAllStacks

'Total number of card stacks (7).
dim gintCountCardStacks

'Number of pixels used between each card when
' being drawn.
dim gintCardOffset

-->
</SCRIPT>
<SCRIPT LANGUAGE="VBScript">
<!--
'**********************************************
'* Name: DebugPrint
'**********************************************
'* Description:
'*	Provides a utility Function that displays
'*	 the string sent to it in a debug
'*	 "window." Currently, a listbox control
'*	 is used to display debug output.
'*	 Feel free to call this Function during
'*	 debugging. 
'*	NOTE: Does depEnd on the existence of a 
'*	 listbox with the ID of lstDebugPrint
'**********************************************
'* Parameters:
'*	str		String displayed to debug window
'**********************************************
Sub DebugPrint(str)
	If gbDebug then
		lstDebugPrint.additem str
	END IF
End Sub 'DebugPrint

'**********************************************
'* Name: OnLoad event for ActiveX Layout
'**********************************************
'* Description:
'*	Sets up the default values and
'*	 calls startgame to get things going.
'**********************************************
'* Parameters:
'*	None
'**********************************************
Sub Form_OnLoad()
	'Turn debug mode off
	gbDebug = false
	'Allow the user a checkbox for changing debug mode
	chkDebug.value = gbDebug
	
	Form.DrawBuffer = "256000"
	gACE = 1
	gKING = 13
	gCOUNTDEAL = 3

	gdFriction = 2
	gdGravity = 9.8

  	gstrBOTTOMOFSTACK = "BOS"

	'Spacing when drawing a card
	gintCardOffset = 11
  
	gintShuffleStackInx = 12
	gintDiscardStackInx = 13
  	gintCountCardStacks = 7
	gintAceStackStartInx = gintCountCardStacks+1

	gintCountAllStacks = 13

	AceImage1.Picture = AceImage3.Picture
	AceImage2.Picture = AceImage3.Picture
	AceImage4.Picture = AceImage3.Picture
	AceImage1.visible = true
	AceImage2.visible = true
	AceImage3.visible = true
	AceImage4.visible = true

	StartGame  
End Sub 'Form_OnLoad

'**********************************************
'* Name: StartGame
'**********************************************
'* Description:
'*	Gets the game going by setting up
'*	 the card back and shuffling and dealing 
'*	 the cards.
'**********************************************
'* Parameters:
'*	None
'**********************************************
Sub StartGame
	gbEndGame = False
	'Values used during animation
	gintDragSkip = 3
	gbCardMoveDone = True
	tmEndAnimation.enabled = false
	tmEndCardMove.enabled = false
	gincCardMoveSteps = 0
	gincEndLeft = 0
	gincEndTop = 0
	gintCountMoving = 0

	LoadCards

 	if gintCurDeck > -1 or gintCurDeck < -12 then
		ChangeTheDeck -1
	end if

	gRNDCOUNT = 500

	DealCards
End Sub 'StartGame

'**********************************************
'* Name: LoadCard
'**********************************************
'* Description:
'*	Loads all the arrays with the card objects.
'*	Initializes grbCardShowing.
'*	Applies default values to the stacks.
'**********************************************
'* Parameters:
'*	None
'**********************************************
Sub LoadCards
	'Could also use a control array here but this
	' code loads the card objects into the array
	set grobjAllCards(1) = Card1H
	set grobjAllCards(2) = Card2H
	set grobjAllCards(3) = Card3H
	set grobjAllCards(4) = Card4H
	set grobjAllCards(5) = Card5H
	set grobjAllCards(6) = Card6H
	set grobjAllCards(7) = Card7H
	set grobjAllCards(8) = Card8H
	set grobjAllCards(9) = Card9H
	set grobjAllCards(10) = Card10H
	set grobjAllCards(11) = Card11H
	set grobjAllCards(12) = Card12H
	set grobjAllCards(13) = Card13H
	set grobjAllCards(14) = Card1D
	set grobjAllCards(15) = Card2D
	set grobjAllCards(16) = Card3D
	set grobjAllCards(17) = Card4D
	set grobjAllCards(18) = Card5D
	set grobjAllCards(19) = Card6D
	set grobjAllCards(20) = Card7D
	set grobjAllCards(21) = Card8D
	set grobjAllCards(22) = Card9D
	set grobjAllCards(23) = Card10D
	set grobjAllCards(24) = Card11D
	set grobjAllCards(25) = Card12D
	set grobjAllCards(26) = Card13D
	set grobjAllCards(27) = Card1C
	set grobjAllCards(28) = Card2C
	set grobjAllCards(29) = Card3C
	set grobjAllCards(30) = Card4C
	set grobjAllCards(31) = Card5C
	set grobjAllCards(32) = Card6C
	set grobjAllCards(33) = Card7C
	set grobjAllCards(34) = Card8C
	set grobjAllCards(35) = Card9C
	set grobjAllCards(36) = Card10C
	set grobjAllCards(37) = Card11C
	set grobjAllCards(38) = Card12C
	set grobjAllCards(39) = Card13C
	set grobjAllCards(40) = Card1S
	set grobjAllCards(41) = Card2S
	set grobjAllCards(42) = Card3S
	set grobjAllCards(43) = Card4S
	set grobjAllCards(44) = Card5S
	set grobjAllCards(45) = Card6S
	set grobjAllCards(46) = Card7S
	set grobjAllCards(47) = Card8S
	set grobjAllCards(48) = Card9S
	set grobjAllCards(49) = Card10S
	set grobjAllCards(50) = Card11S
	set grobjAllCards(51) = Card12S
	set grobjAllCards(52) = Card13S


	'Make all cards transparent
	ClearAllCards

	'Load up the card stacks
	set grobjAllCardStacks(gintShuffleStackInx,1)= Shuffle
	set grobjAllCardStacks(gintDiscardStackInx,1)= Discard

	set grobjAllCardStacks(1,1) = Stack1
	set grobjAllCardStacks(2,1) = Stack2
	set grobjAllCardStacks(3,1) = Stack3
	set grobjAllCardStacks(4,1) = Stack4
	set grobjAllCardStacks(5,1) = Stack5
	set grobjAllCardStacks(6,1) = Stack6
	set grobjAllCardStacks(7,1) = Stack7

	for inx = 1 to gintCountAllStacks
		grobjAllCardStacks(inx,2) = 0
	next 

	set grobjAllCardStacks(gintAceStackStartInx,1) = Ace1
	set grobjAllCardStacks(gintAceStackStartInx+1,1) = Ace2
	set grobjAllCardStacks(gintAceStackStartInx+2,1) = Ace3
	set grobjAllCardStacks(gintAceStackStartInx+3,1) = Ace4


	'Setup initial stack size by setting to the size of a card object.
	' Don't use default Discard Stack because is hardcoded.
	for inx = 1 to gintCountAllStacks - 1
		grobjAllCardStacks(inx,1).height = grobjAllCards(1).height
		grobjAllCardStacks(inx,1).width = grobjAllCards(1).width
	next

	set grobjCardDeck(1) = CardDeck1
	set grobjCardDeck(2) = CardDeck2
	set grobjCardDeck(3) = CardDeck3
	set grobjCardDeck(4) = CardDeck4
	set grobjCardDeck(5) = CardDeck5
	set grobjCardDeck(6) = CardDeck6
	set grobjCardDeck(7) = CardDeck7
	set grobjCardDeck(8) = CardDeck8
	set grobjCardDeck(9) = CardDeck9
	set grobjCardDeck(10) = CardDeck10
	set grobjCardDeck(11) = CardDeck11
	set grobjCardDeck(12) = CardDeck12

End Sub 'LoadCard

'**********************************************
'* Name: ChangeTheDeck
'**********************************************
'* Description:
'*	Changes the current deck being used.
'**********************************************
'* Parameters:
'*	DeckID	New card deck to be displayed.
'*			Current value of deck is stored
'*			in gintCurDeck.
'**********************************************
Sub ChangeTheDeck (DeckID)
	'The deck back didn't change so don't redo it.
	If gintCurDeck = DeckID then
		exit Sub
	End If
	'Deck is new, let's change all the cards that need it.
	gintCurDeck = DeckID

	for StackInx = 1 to gintCountAllStacks
		for inner = 1 to intCountOnStack(StackInx)
			strCard = strGetStackElement(StackInx,inner)
			intCardInx = intGetCardIndex(strCard)
			If not grbCardShowing(intCardInx) then
				'Redraw the cards that are not face up.
				DrawCard intCardInx
			End If
		next
	next 
End Sub 'ChangeTheDeck

'**********************************************
'* Name: ClearAllCards
'**********************************************
'* Description:
'*	Sets all card objects to their transparent
'*	 value.
'**********************************************
'* Parameters:
'*	None
'**********************************************
Sub ClearAllCards
	for inx = 1 to 52
		grobjAllCards(inx).Suite = 0
		grobjAllCards(inx).Visible = True
	next 
End Sub 'ClearAllCards

'**********************************************
'* Name: Push
'**********************************************
'* Description:
'*	Pushes (adds) a card object to a stack.
'**********************************************
'* Parameters:
'*	intStack	Stack to add card to
'*	strCard	Card to add
'**********************************************
Sub Push(intStack, strCard)
	dim intNewSize

	If gstrBOTTOMOFSTACK <> strTopOfStack(intStack) then
		grobjAllCardStacks(intStack,1).height = grobjAllCardStacks(intStack,1).height + intGetVertOffset(intStack)
'		grobjAllCardStacks(intStack,1).width = grobjAllCardStacks(intStack,1).width + intGetHorzOffset(intStack)
	End If

	intNewSize = grobjAllCardStacks(intStack,2)+1
	grobjAllCardStacks(intStack,2) = intNewSize
	grobjAllCardStacks(intStack,intNewSize+2) = strCard

	'This makes all cards but the top two invisible so drawing of the stack
	' is much faster
	if intNewSize > 2 and _
	   (intStack >= gintAceStackStartInx and intStack <= gintAceStackStartInx+3) then
		CardIndex = intGetCardIndex(grobjAllCardStacks(intStack,intNewSize+2-2))
		grobjAllCards(CardIndex).suite = 0
	end if

End Sub 'Push	


'**********************************************
'* Name: strPop
'**********************************************
'* Description:
'*	Returns the string representation of
'*	 the card at the top of the stack and
'*	 removes it from the top.
'**********************************************
'* Parameters:
'*	intStack	Stack to strPop card off of
'**********************************************
Function strPop(intStack)
	strCard = strTopOfStack(intStack)

	If gstrBOTTOMOFSTACK = strCard then
		strPop = gstrBOTTOMOFSTACK
		exit Function
	End If

	pos = grobjAllCardStacks(intStack,2)

	'This unhides the cards that were hidden in Sub Push
	if pos > 2 and _
	   (intStack >= gintAceStackStartInx and intStack <= gintAceStackStartInx+3) then
		CardIndex = intGetCardIndex(grobjAllCardStacks(intStack,pos+2-2))
		grobjAllCards(CardIndex).suite = (CardIndex \ 13) + 1
	end if

	strPop = grobjAllCardStacks(intStack,pos+2)
	grobjAllCardStacks(intStack,2) = pos-1

	grobjAllCardStacks(intStack,1).height = grobjAllCardStacks(intStack,1).height - intGetVertOffset(intStack)
'	grobjAllCardStacks(intStack,1).width = grobjAllCardStacks(intStack,1).width - intGetHorzOffset(intStack)

End Function 'Pop

'**********************************************
'* Name: strGetStackElement
'**********************************************
'* Description:
'*	Internal Stack function used to get
'*	 elements that are not on the top or the
'*	 bottom of the stack.
'**********************************************
'* Parameters:
'*	intStack	Stack to get it from
'*	intElement	Position of element
'**********************************************
Function strGetStackElement(intStack,intElement)
	strGetStackElement = gstrBOTTOMOFSTACK
	If Element <= intCountOnStack(intStack) then
		strGetStackElement = grobjAllCardStacks(intStack,intElement+2)
	End If
End Function 'strGetStackElement

'**********************************************
'* Name: strTopOfStack
'**********************************************
'* Description:
'*	Returns the string value of the card
'*	on the top of the stack. Does NOT
'*	remove the card from the stack.
'**********************************************
'* Parameters:
'*	intStack	Stack to get card from
'**********************************************
Function strTopOfStack(intStack)
	strTopOfStack = gstrBOTTOMOFSTACK
	If 0 < intCountOnStack(intStack) then
		Pos = intCountOnStack(intStack)
		strTopOfStack = grobjAllCardStacks(intStack,Pos+2)
	End If
End Function 'strTopOfStack

'**********************************************
'* Name: strGenerateCard
'**********************************************
'* Description:
'*	Generates a card randomly. If the deck has
'*	 not been shuffled yet, they will be.
'**********************************************
'* Parameters:
'*	intCardCount	Card to get
'**********************************************
Function strGenerateCard(intCardCount)
	dim rSorted(52)
	'Shuffle the stack if not already done.
	If not gbShuffleDone then
		Randomize 
		'Go a random number of elements into the sequence.
		for inx = 1 to (gRNDCOUNT * rnd())
		next

		'Load the unsorted array.
		for inx = 1 to 52
			rSorted(inx-1) = inx
		next

		'Load a shuffled card into the array.
		for inx = 0 to 51
			random = cint(rnd() * (51 - inx))
			grintShuffled(inx+1) = rSorted(random)
			rSorted(random) = rSorted(51 - inx)
		next
		gbShuffleDone = true
	End If
	intCardNum = grintShuffled(intCardCount)
	strGenerateCard = strInxToCard(intCardNum)
End Function 'strGenerateCard

'**********************************************
'* Name: strInxToCard
'**********************************************
'* Description:
'*	Converts a card number (index) to its
'*	 string representation.
'**********************************************
'* Parameters:
'*	intCardNum	Value of card
'**********************************************
Function strInxToCard(intCardNum)
	inxSuit = 0
	
	intCurCardNum = intCardNum
	while 13 < intCurCardNum
		intCurCardNum = intCurCardNum - 13
		inxSuit = inxSuit + 1
	wEnd
	Select Case inxSuit
'Clubs, Spades, Hearts and Diamonds is the current order
' of Suits.
'Order in Card.ocx is dependent on suit order.
	case 0
		strSuit = "C"
	case 1
		strSuit = "S"
	case 2
		strSuit = "H"
	case 3
		strSuit = "D"
	case Else
		debugPrint "Error (strInxToCard): attempting to increment suit past last one"
	End select

	strCurCard = intCurCardNum & strSuit
	strInxToCard = strCurCard
End Function 'strInxToCard

'**********************************************
'* Name: strGetCardSuit
'**********************************************
'* Description:
'*	Returns the suit of a card.
'**********************************************
'* Parameters:
'*	strCard	Card to get the suit of.
'**********************************************
Function strGetCardSuit(strCard)
	strGetCardSuit = ""
	If "" = strCard then
		exit Function
	End If

	strGetCardSuit = right(strCard,1)
End Function 'strGetCardSuit

'**********************************************
'* Name: intGetCardIndex
'**********************************************
'* Description:
'*	Returns the position, (index) into the
'* 	 AllCards array of where the card is.
'**********************************************
'* Parameters:
'*	strCard	Card to find index of.
'**********************************************
Function intGetCardIndex(strCard)
	If "" = strCard or gstrBOTTOMOFSTACK = strCard then
		intGetCardIndex = -1
		exit Function
	End If
	strSuit = right(strCard,1)
'Order in Card.ocx is dependent on suit order.
	Select case strSuit
	case "H"
		Offset = 26
	case "D"
		Offset = 39
	case "S"
		Offset = 13
	case "C"
		Offset = 0
	End Select

	intGetCardIndex = Offset + intCardVal(strCard)
End Function 'intGetCardIndex

'**********************************************
'* Name: intCardVal
'**********************************************
'* Description:
'*	Returns the numeric value of a given card,
'*	 independent of suit.
'*	 Ex: 10 of Hearts is "10H" and the value
'*	 returned would be 10.
'**********************************************
'* Parameters:
'*	strCard	Card to get value of.
'**********************************************
Function intCardVal(strCard)
	dim tmpVal
	If "" = strCard or gstrBOTTOMOFSTACK = strCard then
		tmpVal = -1
	Else
		tmpVal = left(strCard,len(strCard) -1)
	End If
	intCardVal = cint(tmpVal)
End Function 'intCardVal

'**********************************************
'* Name: bSameSuit
'**********************************************
'* Description:
'*	Returns:
'* 	  True	if cards are the same suit.
'*	  False	if suits are different.
'**********************************************
'* Parameters:
'*	strCard1	First card.
'*	strCard2	Card to compare against first card.
'**********************************************
Function bSameSuit(strCard1,strCard2)
	'Get the values of both cards.
	strSuit1 = strGetCardSuit(strCard1)
	strSuit2 = strGetCardSuit(strCard2)
	
	bSameSuit = (strSuit1 = strSuit2)
End Function 'bSameSuit

'**********************************************
'* Name: bSameColor
'**********************************************
'* Description:
'*	Returns:
'*		True	if cards are the same color.
'*		False	if cards are different color.
'**********************************************
'* Parameters:
'*	strCard1	First card.
'*	strCard2	Card to compare against first card.
'**********************************************
Function bSameColor(strCard1,strCard2)

	strSuit1 = strGetCardSuit(strCard1)
	strSuit2 = strGetCardSuit(strCard2)

	'Are they the same suit?
	If (strSuit1 = strSuit2) then
		bSameColor = True
		exit Function
	End If
	'Since both cards don't match suit
	' check the other suit of that color.
	Select Case strSuit1
	case "H"
		bSameColor = (strSuit2 = "D")
	case "D"
		bSameColor = (strSuit2 = "H")
	case "S"
		bSameColor = (strSuit2 = "C")
	case "C"
		bSameColor = (strSuit2 = "S")
	End select

End Function 'bSameColor

'**********************************************
'* Name: intGetHorzOffset
'**********************************************
'* Description:
'*	Returns the current horizontal offset
'*	in pixels when drawing the cards on a stack.
'**********************************************
'* Parameters:
'*	intStack	Stack to draw.
'**********************************************
Function intGetHorzOffset(intStack)
	intGetHorzOffset = 0
	'Only the Discard Stack has a horizontal offset.
	If (gintDiscardStackInx = intStack) then
		intGetHorzOffset = gintCardOffset
	End If
End Function 'intGetHorzOffset

'**********************************************
'* Name: intGetVertOffset
'**********************************************
'* Description:
'*	Returns the vertical offset, used during
'*	drawing a stack, for a particular stack.
'**********************************************
'* Parameters:
'*	intStack	Stack to return Vertical
'*			 offset for.
'**********************************************
Function intGetVertOffset(intStack)
	intGetVertOffset = gintCardOffset
	'HARDCODE ASSUMPTION: ALL Stacks above gintAceStackStartInx WILL have a vert offset of 0
	If (gintAceStackStartInx <= intStack) then
		intGetVertOffset = 0
	End If
End Function 'intGetVertOffset

'**********************************************
'* Name: DrawDiscardStack
'**********************************************
'* Description:
'*	The Discard Stack is drawn in this routine
'*	because it is a special case of the draw
'*	routine. The difference being that all 
'*	other stacks draw ALL cards with an offset
'*	and the discard ONLY draws the cards on
'*	the top of its pile with an offset.
'**********************************************
'* Parameters:
'*	None
'**********************************************
Sub DrawDiscardStack
	dim intStartOffset
	dim intStackSize
	dim intCountPiles
	dim intRemainder

	'Default Offset Values
	intHorzOffset = intGetHorzOffset(gintDiscardStackInx)
	intVertOffset = intGetVertOffset(gintDiscardStackInx)

	intStackSize = intCountOnStack(gintDiscardStackInx)

	'See if less than three cards were transferred to Discard Stack.
	intStartOffset = (intStackSize - gintCountDiscarded)

	'Draw all underneath cards that won't have an offset.
	for inx = 0 to intStartOffset - 1
		strCard = grobjAllCardStacks(gintDiscardStackInx,inx + 3)
		CardIndex = intGetCardIndex(strCard)
		grobjAllCards(CardIndex).top = grobjAllCardStacks(gintDiscardStackInx,1).top 
		grobjAllCards(CardIndex).left = grobjAllCardStacks(gintDiscardStackInx,1).left 
		DrawCard CardIndex
	next 
	OffsetInx = 0
	'Draw the cards at the top of the Discard Stack.
	for inx = intStartOffset to intStackSize - 1
		strCard = grobjAllCardStacks(gintDiscardStackInx,inx + 3)
		CardIndex = intGetCardIndex(strCard)
		grobjAllCards(CardIndex).top = grobjAllCardStacks(gintDiscardStackInx,1).top  + (OffsetInx * intVertOffset)
		grobjAllCards(CardIndex).left = grobjAllCardStacks(gintDiscardStackInx,1).left + (OffsetInx * intHorzOffset)
		DrawCard CardIndex
		OffsetInx = OffsetInx + 1
		'Bring that card to top of pile.
		grobjAllCards(CardIndex).ZOrder(0)
	next
	'Make sure to bring hotspot stack to top of z order so it can get events.
	grobjAllCardStacks(gintDiscardStackInx,1).ZOrder(0)

End Sub 'DrawDiscardStack

'**********************************************
'* Name: DrawCard
'**********************************************
'* Description:
'*	Here we draw a card based on the index
'*	sent in.
'*	NOTE: if Card.ocx changes it will most likely
'*	effect code here.
'**********************************************
'* Parameters:
'*	intCardIndex	Index into card array of
'*				 card being drawn.
'**********************************************
Sub DrawCard (CardIndex)
	If True = grbCardShowing(CardIndex) then

		'Calculate which suit it was so we
		' can change it back.
		inxSuit = (CardIndex \ 13)
		inxCard = CardIndex - (inxSuit*13)
		If (0 <> inxCard) then
			inxSuit = inxSuit + 1
		Else
			inxCard = 13
		End If
		grobjAllCards(CardIndex).Number= inxCard
	Else
		'Cards are face down, let's use the current deck.
		inxSuit = gintCurDeck
	End If
	grobjAllCards(CardIndex).Suite= inxSuit
End Sub 'DrawCard

'**********************************************
'* Name: DrawStack
'**********************************************
'* Description:
'*	Draws a specific stack by getting the correct
'*	 offset and then calling DrawCard.
'**********************************************
'* Parameters:
'*	intStack	Stack to draw.
'**********************************************
Sub DrawStack (intStack)

	'Default Offset Values
	intHorzOffset = intGetHorzOffset(intStack)
	intVertOffset = intGetVertOffset(intStack)
	If 0 = intCountOnStack(intStack) then Exit Sub

	If (gintDiscardStackInx = intStack) then
		DrawDiscardStack
		exit Sub
	End If

	for inx = 1 to intCountOnStack(intStack)
	'This cycles through all the cards in the stack applying an offset.
		strCard = grobjAllCardStacks(intStack,inx + 2)
		intCardIndex = intGetCardIndex(strCard)
		grobjAllCards(intCardIndex).top = grobjAllCardStacks(intStack,1).top + ((inx-1) * intVertOffset)
		grobjAllCards(intCardIndex).left = grobjAllCardStacks(intStack,1).left + ((inx-1) * intHorzOffset)

		DrawCard intCardIndex
	next
	If (0 < intCardIndex) then 
		grobjAllCards(intCardIndex).ZOrder(0)
		grobjAllCardStacks(intStack,1).ZOrder(0)
	End If
End Sub 'DrawStack

'**********************************************
'* Name: DealCards
'**********************************************
'* Description:
'*	Here we deal the cards to each of the
'*	7 card stacks and put the rest into
'*	the Shuffle Stack.
'**********************************************
'* Parameters:
'*	NONE
'**********************************************
Sub DealCards
	'The first time calling GenerateCard we have
	' to be sure it shuffles the deck.
	gbShuffleDone = false
	intCardCount = 1

	'This set of loops will deal the cards
	' needed to the 7 stacks.
	for inxStack = 1 to gintCountCardStacks
		For inx = 1 to inxStack
			strCard = strGenerateCard(intCardCount)
			'Push on the new card.
			Push inxStack,strCard
			intCardInx = intGetCardIndex(strCard)
			grbCardShowing(intCardInx) = False
			intCardCount = intCardCount +1
			grobjAllCards(intCardInx).Zorder(0)
		next 
		'Only show the top card on the stack.
		grbCardShowing(intCardInx) = True
		DrawStack inxStack
	next 

	'Give the rest to the Shuffle Stack.
	for Card = intCardCount to 52
		strCard = strGenerateCard(Card)
		push gintShuffleStackInx, strCard
		intCardInx = intGetCardIndex(strCard)
		grbCardShowing(intCardInx) = false
		grobjAllCards(intCardInx).Zorder(0)
	next
	DrawStack gintShuffleStackInx
End Sub 'DealCards

'**********************************************
'* Name: DoDblClick
'**********************************************
'* Description:
'*	Here is where all double-clicking of
'* 	 a card is processed. The double-click
'*	 allows a card to be put on an Ace Stack,
'*	 if the move is valid, with the 
'*	 top card on the stack clicked.
'**********************************************
'* Parameters:
'*	intStack	The stack that was double-clicked.
'**********************************************
Sub DoDblClick(intStack)
	'If Valid Move then move it.
	intAceInx = gintAceStackStartInx
	bMoved = false

	strCard = strTopOfStack(intStack)
	If (gstrBOTTOMOFSTACK = strCard) then Exit Sub

	'Until we find a valid move or run out of Ace Stacks to check.
	While intAceInx < gintAceStackStartInx + 4 and not bMoved
		bMoved = bIsLegalMove(intStack,intAceInx,strCard)
		intAceInx = intAceInx + 1
	wEnd

	If bMoved then
		gintSrcStack = intStack
		MoveCard intAceInx -1
	End If
	'Turn off the moving of a card.
	gintMoveCardInx = -1
End Sub 'DoDblClick

'**********************************************
'* Name: ShuffleClicked
'**********************************************
'* Description:
'*	When the Shuffle Stack is clicked we
'*	must either put some cards on the
'*	Discard Stack, or if the Shuffle Stack is empty
'*	move all the cards from the Discard Stack.
'**********************************************
'* Parameters:
'*	intStack	Should be the Shuffle Stack.
'**********************************************
Sub ShuffleClicked(intStack)
	dim strCard
	dim inx
	'Do we actually have cards to move?
	If gstrBOTTOMOFSTACK <> strTopOfStack(intStack) then
		inx = 0
		strCard = strPop(intStack)
		'Move cards to Discard Stack until we are out of cards or
		' hit the number we wanted to move.
		while (gCOUNTDEAL > inx) and (gstrBOTTOMOFSTACK <> strCard)
			Push gintDiscardStackInx, strCard
			intCardInx = intGetCardIndex(strCard)
			If -1 <> intCardInx then grbCardShowing(intCardInx) = True
			inx = inx + 1
			strCard = strPop(intStack)
		Wend
		If (gCOUNTDEAL = inx ) and (gstrBOTTOMOFSTACK <> strCard) then Push intStack,strCard
		gintCountDiscarded = inx
	Else
		'No more to move so let's move discard back to shuffle.
		for inx = 1 to intCountOnStack(gintDiscardStackInx)
			strCard = strPop(gintDiscardStackInx)
			Push intStack,strCard
			intCardInx = intGetCardIndex(strCard)
			grbCardShowing(intCardInx) = False
		next 
		DrawStack intStack
		gintCountDiscarded = 0
	End If
	DrawStack gintDiscardStackInx
End Sub 'ShuffleClicked

'**********************************************
'* Name: intCountOnStack
'**********************************************
'* Description:
'*	Returns number of elements on stack given.
'**********************************************
'* Parameters:
'*	intStack	Stack to get number from.
'**********************************************
Function intCountonStack(intStack)
	intCountOnStack = grobjAllCardStacks(intStack,2)
End Function

'**********************************************
'* Name: SetMoveStartValues
'**********************************************
'* Description:
'*	This is the first function called in the 
'*	 action of moving a card. This is where
'*	 the MouseDown events call to so stated
'*	 variables can be initialized.
'*	 Also the top and left start positions
'*	 are set up here for the card drag.
'*	
'**********************************************
'* Parameters:
'*	intStack	Stack moving from
'*	x		Start left mouse position
'*	y		Start top mouse position
'**********************************************
Sub SetMoveStartValues (intStack,x,y)

	dim intCount

	CardMoving = strTopOfStack(intStack)
	If gstrBOTTOMOFSTACK <>  CardMoving then
		intCardInx = intGetCardIndex(CardMoving)
		If not grbCardShowing(intCardInx) then
			'Card was on the stack but not visible, so
			' make it visible and exit the move.
			gintMoveCardInx = -1
			grbCardShowing(intCardInx) = True
			DrawCard intCardInx
			exit Sub
		End If
	Else
		gintMoveCardInx = -1
		Exit Sub
	End If

	'If this isn't from an Ace Stack. then we must calculate
	' which card it is on that stack,
	If (gintAceStackStartInx > intStack) then
		intCount = intCountOnStack(intStack)
		'Calculate card position using default offset amount.
		' No need to check horizontal offset because we wouldn't
		' get this event unless we were already in the stack.
		ClickedCard = (Y \ intGetVertOffset(intStack)) + 1
		If ClickedCard > intCount then
			ClickedCard = intCount
		End If
		'Number of cards we are moving.
		gintCountMoving = (intCount - ClickedCard) + 1

		CardMoving = strGetStackElement(intStack,ClickedCard)
	Else
		'Can only move the top element on an Ace Stack.
		CardMoving = strTopOfStack(intStack)
		If (gstrBOTTOMOFSTACK = CardMoving) then
			gintMoveCardInx = -1
			exit Sub
		End If
		gintCountMoving = 1
	End If
		
	gintMoveCardInx = intGetCardIndex(CardMoving)

	If not grbCardShowing(gintMoveCardInx) then
		gintMoveCardInx = -1
		exit Sub
	End If
		
	'Save the stack it came from.
	gintSrcStack = intStack

	'Save starting values for the card to be used in
	' DragCard.
	gdCardTop = grobjAllCards(gintMoveCardInx).top 
   	gdCardLeft = grobjAllCards(gintMoveCardInx).left 

	intStackSize = intCountOnStack(intStack)
	for inx =  (intStackSize - gintCountMoving)+ 1 to intStackSize
		'Move the card to top of z order
		intCardInx = intGetCardIndex(strGetStackElement(intStack,inx))
		grobjAllCards(intCardInx).ZOrder(0)
	next 

	gdOffsetTop = intGetVertOffset(intStack) * intCountOnStack(intStack)
	gdStartTop = y
	gdStartLeft = x

End Sub 'SetMoveStartValues

'**********************************************
'* Name: DragCard
'**********************************************
'* Description:
'*	This is where a card is dragged.  Drag stops
'*	when a MouseUp event is fired.
'**********************************************
'* Parameters:
'*	intStack	Stack moving from
'*	x		Start left mouse position.
'*	y		Start top mouse position.
'**********************************************
Sub DragCard (intStack,x,y)
	'Move Top of intStack
	dim cntCard

	If gintMoveCardInx = -1 then Exit Sub

	'DragSkip is used to ignore a number of 
	' MouseMove events. This is done so
	' we won't be overdrawing the card
	' when a draw really isn't necessary.
	' It will also make the drag appear to be
	' more responsive

	gintDragSkip = gintDragSkip - 1
	If gintDragSkip <> 0 then exit Sub
	gintDragSkip = 3

	intStackSize = intCountOnStack(intStack)
	cntCard = 0
	'Figure out new top and left.
	MyTop = grobjAllCards(gintMoveCardInx).top
	MyLeft = grobjAllCards(gintMoveCardInx).left
	for inx =  (intStackSize - gintCountMoving) + 1 to intStackSize
		intCardInx = intGetCardIndex(strGetStackElement(intStack,inx))
		'Apply new values to cards below current one, being sure to maintain offset.
		grobjAllCards(intCardInx).top =  MyTop + (y - gdStartTop) + (cntCard * intGetVertOffset(intStack))
   		grobjAllCards(intCardInx).left = MyLeft +  (x - gdStartLeft)
		cntCard = cntCard + 1
	next 

	gdStartTop = y
	gdStartLeft = x
End Sub 'DragCard

'**********************************************
'* Name: SetMouseUp
'**********************************************
'* Description:
'*	Tells the move operation that MouseUp has
'*	happened. Will take care of seeing if 
'*	card was dropped in a movable place and
'*	if so, moves the card. If not in a valid
'*	place then the card is returned to the start
'*	stack.
'**********************************************
'* Parameters:
'*	intStack		Stack moving from.
'*	x		Start left mouse position.
'*	y		Start top mouse position.
'**********************************************
Sub SetMouseUp (intStack, x,y)
	If gintMoveCardInx = -1 then exit Sub

	'Calculate the screen coordinates based on the x and y.
	ScrnX = X + grobjAllCardStacks(intStack,1).left
	ScrnY = Y + grobjAllCardStacks(intStack,1).top
	inxStack = 1
	bHit = False
	while (inxStack <= gintCountAllStacks) and Not bHit
		set pCurStack = grobjAllCardStacks(inxStack,1)

		'Hit testing to see if we dropped it on a stack.
		If ScrnX >= pCurStack.left and ScrnX <= (pCurStack.Left + pCurStack.Width) then
			If ScrnY >= pCurStack.Top and ScrnY <= (pCurStack.Top + pCurStack.Height) then
				bHit = True
			End If
		End If
		inxStack = inxStack + 1
	wEnd
	If inxStack > gintCountAllStacks then
		'Move it Back.
		MoveCard gintSrcStack
	Else
		'Move it for real.
		MoveCard inxStack-1
	End If
End Sub 'SetMouseUp

'**********************************************
'* Name: bIsLegalMove
'**********************************************
'* Description:
'*	Returns:
'*	 True 	Move from Src to Dest is valid.
'*	 False	Not valid to move from Src to Dest.
'*
'* 	Move is valid to a card stack when:
'*	  Card moving is one less and different color.
'*	Move is valid to an Ace Stack when:
'*	  Card moving is one greater and same suit.
'*	Moves are valid between card stacks and
'*	from ace and Discard Stack to card stack.
'*
'* 	Not valid:
'*	  Ace or Card stack to Discard Stack
'*	  if card not face up.
'**********************************************
'* Parameters:
'*	intSrcStack	Stack coming from.
'*	intDestStack	Stack going to.
'*	strCard		Card being moved.
'**********************************************
Function bIsLegalMove(intSrcStack,intDestStack, strCard)
	dim intCard
	dim intCardInx

	bIsLegalMove = False
	'Can put a card anywhere we want in debug mode.
	If gbDebug then	
		bIsLegalMove = gbDebug
		exit Function
	End If
	if gintCountMoving > 1 and (intDestStack >= gintAceStackStartInx and intDestStack <= (gintAceStackStartInx + 3)) then
		exit function
	end if

	intCardInx = intGetCardIndex(strCard)
	If -1 = intCardInx then exit Function

	'Not valid, not visible.
	If not grbCardShowing(intCardInx) then Exit Function

	'Nothing moves to the Discard Stack (Not Valid).
	If gintDiscardStackInx = intDestStack then exit Function

	'Get card on top of destination for testing.
	DestCard = strTopOfStack(intDestStack)
	intCard = intCardVal(strCard)
	If gintAceStackStartInx <= intDestStack then
		'Move to Ace intStack?
		If (gstrBOTTOMOFSTACK = DestCard) then
			'Can move to empty Ace Stack if card is an Ace.
			bIsLegalMove = (gACE = intCard)
		Else
			bIsLegalMove = (bSameSuit (strCard,DestCard) and (intCard - 1 = intCardVal(DestCard)))
		End If
	Else 'Move to CardStack
		If (gstrBOTTOMOFSTACK = DestCard) then
			'Can move to empty card stack if card is a King.
			bIsLegalMove = (gKING = intCard)
		Else
			bIsLegalMove = ((Not bSameColor(strCard,DestCard)) and (intCard + 1 = intCardVal(DestCard)))
		End If
	End If
End Function

'**********************************************
'* Name: tmNewCard_Timer
'**********************************************
'* Description:
'*	Here is where a new card is assigned to 
'*	 the animation routine when the last one
'*	 has finished moving to the Ace Stack.
'**********************************************
'* Parameters:
'*	None
'**********************************************
Sub tmNewCard_Timer()
	If gbCardMoveDone then
		'Turn off all timers until we get a new card assigned.
		tmNewCard.enabled = false
		gbCardMoveDone = false
		'Our Start Case.
		If gintCurStackToMove = 0 then
			gintCurStackToMove = gintAceStackStartInx
		Else
			gobjCurMoveCard.left = grobjAllCardStacks(gintCurStackToMove,1).left
			gobjCurMoveCard.top = grobjAllCardStacks(gintCurStackToMove,1).top
		End If

		'See if cards are already on the Ace Stack.
		strCard = strTopOfStack(gintCurStackToMove)
		intCard = intCardVal(strCard)
		If -1 = intCard then
			intCard = gACE
		Else
			'Already have cards on the stack, let's pile the rest on.
			If 13 = intCard then gintCurStackToMove = gintCurStackToMove + 1
			intCard = intCard + 1
			While (intCard = 14) and (gintCurStackToMove <> gintAceStackStartInx + 4)
				strCard = strTopOfStack(gintCurStackToMove)
				If gstrBOTTOMOFSTACK = strCard then
					intCard = gACE
				Else
					intCard = intCardVal(strCard)
				End If
			Wend
		End If
		'We are done moving. Call end-game animation to bounce cards away
		If (gintCurStackToMove =  gintAceStackStartInx + 4) then
			SeeIfGameOver gintAceStackStartInx
			exit Sub
		End If

		'Current suit that is moving.
		CurMoveSuit = mid(gstrSuitOrder,((gintCurStackToMove - gintAceStackStartInx) + 1),1)

		'Move the card to the destination.
		strCard = intCard & CurMoveSuit
		push gintCurStackToMove,strCard

		'Get next card.
		intCardInx = intGetCardIndex(strCard)
		set gobjCurMoveCard = grobjAllCards(intCardInx)

		grbCardShowing(intCardInx) = True
		gobjCurMoveCard.ZOrder(0)
		DrawCard intCardInx
		

		'Figure out increments for moving it.
		gincCardMoveSteps = 5
		gincEndLeft = ((gobjCurMoveCard.left - grobjAllCardStacks(gintCurStackToMove,1).Left) \ gincCardMoveSteps)
		gincEndTop = ((gobjCurMoveCard.Top - grobjAllCardStacks(gintCurStackToMove,1).Top) \ gincCardMoveSteps)
	
		'Start the moving of the new card.
		tmEndCardMove.enabled = true
	End If
End Sub 'tmNewCard_Timer

'**********************************************
'* Name: tmEndCardMove_Timer
'**********************************************
'* Description:
'*	Here is where the actual moving of a 
'*	card to its Ace Stack happens after the
'*	user clicks End_The_Game.
'**********************************************
'* Parameters:
'*	None
'**********************************************
Sub tmEndCardMove_Timer()
	If (gincCardMoveSteps =  0) then
		'If card has completed moving, get a new one.
		gbCardMoveDone = true
		tmEndCardMove.enabled = false
		tmNewCard.enabled = true
		exit Sub
	End If

	'Not done yet, move it another increment.
	gincCardMoveSteps = gincCardMoveSteps - 1
	gobjCurMoveCard.left = gobjCurMoveCard.left - gincEndLeft
	gobjCurMoveCard.top = gobjCurMoveCard.top - gincEndTop
End Sub 'tmEndCardMove_Timer

'**********************************************
'* Name: EndTheGame
'**********************************************
'* Description:
'*	When a user clicks End the Game, this is where
'*	the whole process of moving
'*	those cards is started.
'**********************************************
'* Parameters:
'*	None
'**********************************************
Sub EndTheGame()
	'Remove ALL cards from the card stacks.
	for inx = 1 to gintCountCardStacks
		strCard = strPop(inx)
		while (strCard <> gstrBOTTOMOFSTACK)
			strCard = strPop(inx)
		Wend
	next

	gstrSuitOrder = ""
	'Figure out the order the suits are placed on the Ace Stack.
	' gstrSuitOrder holds the order.
	for inx = gintAceStackStartInx to gintAceStackStartInx + 3	
		strCard = strTopOfStack(inx)
		If strCard <> gstrBOTTOMOFSTACK then
			gstrSuitOrder = gstrSuitOrder & strGetCardSuit(strCard)
		Else
			gstrSuitOrder = gstrSuitOrder & " "
		End If
	next 
	curSuit = "C"
	'Default order is CSHD if no cards are have been played on an Ace Stack.
	' If cards are already displayed then figure out which ones we are missing
	' and add them to the spaces in the string.
	for inx = 1 to 4
		If instr(gstrSuitOrder,curSuit) = 0 then
			blank = instr(gstrSuitOrder," ")
			gstrSuitOrder = left(gstrSuitOrder,blank - 1) & curSuit & mid(gstrSuitOrder,blank+1)
		End If
		Select Case curSuit
		Case "C"
			curSuit = "S"
		Case "S"
			curSuit = "H"
		case "H"
			curSuit = "D"
		End select
	next

	gintCurStackToMove = 0
	gbCardMoveDone = true

	'Set up and start the timers to move the first
	' card.
	tmNewCard.Interval = 1
	tmNewCard.Enabled = true

	tmEndCardMove.interval = 1

End Sub 'EndTheGame

'**********************************************
'* Name: SeeIfGameOver
'**********************************************
'* Description:
'*	This is the place to see if all
'*	 the Kings are placed on their proper
'*	 Ace Stack and, if so, start the animation.
'**********************************************
'* Parameters:
'*	intStack		Stack to test.
'**********************************************
Sub SeeIfGameOver(intStack)
	If (gintAceStackStartInx > intStack) or (gintAceStackStartInx+4 < intStack) then
		exit Sub
	End If
	bWon = true
	inx = gintAceStackStartInx
	'Go until we don't see a king or we tested the last
	' Ace Stack.
	while bWon and inx < gintAceStackStartInx + 4
		strCard = strTopOfStack(inx)
		If (gstrBOTTOMOFSTACK <> strCard) then
			bWon = (gKING = intCardVal(strCard))
		Else
			bWon = False
		End If
		inx = inx + 1
	wEnd 

	If not bWon then exit Sub

	'We WON!! Let's initialize for animation.
	gCardCount = 52
	tmEndAnimation.interval = 4
	gbAnimationDone = false

	'Moving all four cards.
	for inx = 0 to 3
		gbDoneMoving(inx) = true
	next
	Randomize
	gbLeaveEarly = False

	tmEndAnimation.enabled = true

End Sub 'SeeIfGameOver

'**********************************************
'* Name: tmEndAnimation_Timer
'**********************************************
'* Description:
'*	Here is where all of the work for the 
'*	bouncing cards animation takes place.
'**********************************************
'* Parameters:
'**********************************************
Sub tmEndAnimation_Timer()
	dim objCard
' inc-/decrement position
	If gbAnimationDone or gbLeaveEarly then
		'User wanted to exit early or animation finished.
		tmEndAnimation.enabled = false
		gbAnimationDone = True
		msgbox "You Won !!!",0,"ActiveX Solitaire"
		ClearAllCards
		exit Sub
	End If
	gbAnimationDone = true
	for inx = 0 to 3
		'See if one of the 4 cards is done so we can assign another one.
		If gbDoneMoving(inx) then
			'Get next card.
			strCard = strPop(inx + gintAceStackStartInx)
			If (gstrBOTTOMOFSTACK <> strCard) then
				intCardInx = intGetCardIndex(strCard)
				set grCardBouncing(inx,1) = grobjAllCards(intCardInx)
					'The following random is subtracted by half the range so 
					' both positive and negative directions can be generated.
				grCardBouncing(inx,2) = (rnd() * 10) - 5	'Vertical
				grCardBouncing(inx,3) = (rnd() * 30) - 15	'Horizontal
				gbDoneMoving(inx) = false
			Else
			'Hit bottom of stack, no more bouncing.
				grCardBouncing(inx,1) = 0
			End If
		End If

		'Figure out effect of gravity.
		grCardBouncing(inx,2) = grCardBouncing(inx,2) + (gdGravity * (tmEndAnimation.interval/100))
		If not gbDoneMoving(inx) then
			set objCard = grCardBouncing(inx,1)
			'Get new position.
			objCard.left = objCard.left + grCardBouncing(inx,3)
			objCard.top = objCard.top +  grCardBouncing(inx,2)

			'check for border bounce,
			gbDoneMoving(inx) = (objCard.left >= Form.Width) or (objCard.left + objCard.Width <= 0)
			gbDoneMoving(inx) = gbDoneMoving(inx) or (objCard.top > Form.height) or ((objCard.top + objCard.height) < 0)

			'Here's the friction and direction change if necessary.
			If (grCardBouncing(inx,1).top <= 0) then 
				grCardBouncing(inx,2) = -1 * (grCardBouncing(inx,2) + gdFriction)
			elseif (objCard.top + objCard.height) >= Form.Height then 
				grCardBouncing(inx,2) = (gdFriction - (grCardBouncing(inx,2)))
			End If
		End If
		gbAnimationDone = (gbAnimationDone and gbDoneMoving(inx) and (gstrBOTTOMOFSTACK = strTopOfStack(inx + gintAceStackStartInx)))
	next 
End Sub 'tmEndAnimation_timer

'**********************************************
'* Name: MoveCard
'**********************************************
'* Description:
'*	This is where a card move actually is
'* 	 done. For the source stack, it relies
'*	 on gintSrcStack.
'**********************************************
'* Parameters:
'*	intDestStack	Destination stack
'**********************************************
Sub MoveCard (intDestStack)
	'See If Card hit a different intStack.
	'If not, hit other intStack or legal drop, then move back to original intStack.
	intStackSize = intCountOnStack(gintSrcStack)
	intTopOfMove = (intStackSize - gintCountMoving)+ 1

	'Move from Src to Dest.
	If (gintSrcStack <> intDestStack) then 
		strCard = strGetStackElement(gintSrcStack,intTopOfMove)

		'See if it is legal to do this move.
		If bIsLegalMove(gintSrcStack,intDestStack,strCard) then
			for inx =  (intStackSize - gintCountMoving)+ 1 to intStackSize
			'Yes, let's move all the cards to the new stack.
				strCard = strGetStackElement(gintSrcStack,inx)
				Push intDestStack,strCard
			next 
			'However many moved must be removed from the source.
			for inx = 1 to gintCountMoving
				strCard = strPop(gintSrcStack)
			next
			grobjAllCardStacks(intDestStack,1).Zorder(0)
			DrawStack intDestStack

			'After that move, let's see if it is the last.
			SeeIfGameOver intDestStack
			exit Sub
		End If
	End If
	cntCard = 0
	'Source and destination were the same, let's move cards back.
	for inx =  intTopOfMove to intStackSize
		intCardInx = intGetCardIndex(strGetStackElement(gintSrcStack,inx))
		grobjAllCards(intCardInx).top = gdCardTop + (cntCard * intGetVertOffset(intStack))
  			grobjAllCards(intCardInx).left = gdCardLeft
		cntCard = cntCard + 1
	next 
	grobjAllCardStacks(gintSrcStack,1).Zorder(0)
End Sub 'MoveCard
-->
</SCRIPT>
<SCRIPT LANGUAGE="VBScript">
<!--
'**********************************************
'* Name: Discard Stack Mouse events
'**********************************************
'* Description:
'*	These events will handle the moving
'*	of cards from the Discard Stack to either
'*	the Ace Stack or a card stack.
'**********************************************
Sub Discard_DblClick(Cancel)
   DoDblClick gintDiscardStackInx
End Sub
Sub Discard_MouseDown(ByVal Button, ByVal Shift, ByVal X, ByVal Y)
	If 1 <> Button then exit Sub
	gbMouseUp = false
	SetMoveStartValues gintDiscardStackInx,x,y
End Sub

Sub Discard_MouseMove(Button, Shift, X, Y)
	If (1 <> Button) or gbMouseUp then exit Sub

	DragCard gintDiscardStackInx,x,y
End Sub

Sub Discard_MouseUp(Button, Shift, X, Y)
	gbMouseUp = True
	SetMouseUp gintDiscardStackInx,x,y
End Sub

-->
</SCRIPT>
<SCRIPT LANGUAGE="VBScript">
<!--
'**********************************************
'* Name: Shuffle Stack Mouse events
'**********************************************
'* Description:
'*	These events will handle the moving
'*	of cards from the Shuffle Stack to the
'*	Discard Stack..
'**********************************************
Sub Shuffle_MouseDown(ByVal Button, ByVal Shift, ByVal X, ByVal Y)
	ShuffleClicked(gintShuffleStackInx)
End Sub
-->
</SCRIPT>
<SCRIPT LANGUAGE="VBScript">
<!--
'**********************************************
'* Name: Ace Stack mouse events
'**********************************************
'* Description:
'*	These mouse events for all the Ace Stacks
'*	will handle moving cards from an ace
'*	stack back to a card stack ONLY.
'**********************************************
Sub Ace1_MouseDown(ByVal Button, ByVal Shift, ByVal X, ByVal Y)
	If 1 <> Button then exit Sub
	gbMouseUp = false
	SetMoveStartValues gintCountCardStacks + 1,x,y
End Sub

Sub Ace1_MouseMove(Button, Shift, X, Y)
	If (1 <> Button) or gbMouseUp then exit Sub
	DragCard gintCountCardStacks + 1,x,y
End Sub

Sub Ace1_MouseUp(Button, Shift, X, Y)
	gbMouseUp = True
	SetMouseUp gintCountCardStacks + 1,x,y
End Sub

-->
</SCRIPT>
<SCRIPT LANGUAGE="VBScript">
<!--
Sub Ace2_MouseDown(ByVal Button, ByVal Shift, ByVal X, ByVal Y)
	If 1 <> Button then exit Sub
	gbMouseUp = false
	SetMoveStartValues gintCountCardStacks + 2,x,y
End Sub

Sub Ace2_MouseMove(Button, Shift, X, Y)
	If (1 <> Button) or gbMouseUp then exit Sub
	DragCard gintCountCardStacks + 2,x,y
End Sub

Sub Ace2_MouseUp(Button, Shift, X, Y)
	gbMouseUp = True
	SetMouseUp gintCountCardStacks + 2,x,y
End Sub

-->
</SCRIPT>
<SCRIPT LANGUAGE="VBScript">
<!--
Sub Ace3_MouseDown(ByVal Button, ByVal Shift, ByVal X, ByVal Y)
	If 1 <> Button then exit Sub
	gbMouseUp = false
	SetMoveStartValues gintCountCardStacks + 3,x,y
End Sub

Sub Ace3_MouseMove(Button, Shift, X, Y)
	If (1 <> Button) or gbMouseUp then exit Sub
	DragCard gintCountCardStacks + 3,x,y
End Sub

Sub Ace3_MouseUp(Button, Shift, X, Y)
	gbMouseUp = True
	SetMouseUp gintCountCardStacks + 3,x,y
End Sub

-->
</SCRIPT>
<SCRIPT LANGUAGE="VBScript">
<!--
Sub Ace4_MouseDown(ByVal Button, ByVal Shift, ByVal X, ByVal Y)
	If 1 <> Button then exit Sub
	gbMouseUp = false
	SetMoveStartValues gintCountCardStacks + 4,x,y
End Sub

Sub Ace4_MouseMove(Button, Shift, X, Y)
	If (1 <> Button) or gbMouseUp then exit Sub
	DragCard gintCountCardStacks + 4,x,y
End Sub

Sub Ace4_MouseUp(Button, Shift, X, Y)
	gbMouseUp = True
	SetMouseUp gintCountCardStacks + 4,x,y
End Sub

-->
</SCRIPT>
<SCRIPT LANGUAGE="VBScript">
<!--
'**********************************************
'* Name: Card stack mouse events
'**********************************************
'* Description:
'*	These events will handle the moving
'*	of cards from one stack to another, from
'*	the Discard Stack to the card stacks or from
'*	an Ace Stack to a card stack.
'**********************************************

Sub Stack7_DblClick(Cancel)
   DoDblClick 7
End Sub
Sub Stack7_MouseDown(ByVal Button, ByVal Shift, ByVal X, ByVal Y)
	If 1 <> Button then exit Sub
	gbMouseUp = false
	SetMoveStartValues 7,x,y
End Sub

Sub Stack7_MouseMove(Button, Shift, X, Y)
	If (1 <> Button) or gbMouseUp then exit Sub
	DragCard 7,x,y
End Sub

Sub Stack7_MouseUp(Button, Shift, X, Y)
	gbMouseUp = True
	SetMouseUp 7,x,y
End Sub

-->
</SCRIPT>
<SCRIPT LANGUAGE="VBScript">
<!--
Sub Stack6_DblClick(Cancel)
   DoDblClick 6
End Sub
Sub Stack6_MouseDown(ByVal Button, ByVal Shift, ByVal X, ByVal Y)
	If 1 <> Button then exit Sub
	gbMouseUp = false
	SetMoveStartValues 6,x,y
End Sub

Sub Stack6_MouseMove(Button, Shift, X, Y)
	If (1 <> Button) or gbMouseUp then exit Sub
	DragCard 6,x,y
End Sub

Sub Stack6_MouseUp(Button, Shift, X, Y)
	gbMouseUp = True
	SetMouseUp 6,x,y
End Sub

-->
</SCRIPT>
<SCRIPT LANGUAGE="VBScript">
<!--
Sub Stack5_DblClick(Cancel)
   DoDblClick 5
End Sub
Sub Stack5_MouseUp(Button, Shift, X, Y)
	gbMouseUp = True
	SetMouseUp 5,x,y
End Sub
Sub Stack5_MouseDown(ByVal Button, ByVal Shift, ByVal X, ByVal Y)
	If 1 <> Button then exit Sub
	gbMouseUp = false
	SetMoveStartValues 5,x,y
End Sub
Sub Stack5_MouseMove(Button, Shift, X, Y)
	If (1 <> Button) or gbMouseUp then exit Sub
	DragCard 5,x,y
End Sub
-->
</SCRIPT>
<SCRIPT LANGUAGE="VBScript">
<!--
Sub Stack4_DblClick(Cancel)
   DoDblClick 4
End Sub
Sub Stack4_MouseDown(ByVal Button, ByVal Shift, ByVal X, ByVal Y)
	If 1 <> Button then exit Sub
	gbMouseUp = false
	SetMoveStartValues 4,x,y
End Sub
Sub Stack4_MouseMove(Button, Shift, X, Y)
	If (1 <> Button) or gbMouseUp then exit Sub
	DragCard 4,x,y
End Sub
Sub Stack4_MouseUp(Button, Shift, X, Y)
	gbMouseUp = True
	SetMouseUp 4,x,y
End Sub
-->
</SCRIPT>
<SCRIPT LANGUAGE="VBScript">
<!--
Sub Stack3_DblClick(Cancel)
   DoDblClick 3
End Sub
Sub Stack3_MouseDown(ByVal Button, ByVal Shift, ByVal X, ByVal Y)
	If 1 <> Button then exit Sub
	gbMouseUp = false
	SetMoveStartValues 3,x,y
End Sub
Sub Stack3_MouseMove(Button, Shift, X, Y)
	If (1 <> Button) or gbMouseUp then exit Sub
	DragCard 3,x,y
End Sub
Sub Stack3_MouseUp(Button, Shift, X, Y)
	gbMouseUp = True
	SetMouseUp 3,x,y
End Sub
-->
</SCRIPT>
<SCRIPT LANGUAGE="VBScript">
<!--
Sub Stack2_DblClick(Cancel)
   DoDblClick 2
End Sub
Sub Stack2_MouseDown(ByVal Button, ByVal Shift, ByVal X, ByVal Y)
	If 1 <> Button then exit Sub
	gbMouseUp = false
	SetMoveStartValues 2,x,y
End Sub
Sub Stack2_MouseMove(Button, Shift, X, Y)
	If (1 <> Button) or gbMouseUp then exit Sub
	DragCard 2,x,y
End Sub
Sub Stack2_MouseUp(Button, Shift, X, Y)
	gbMouseUp = True
	SetMouseUp 2,x,y
End Sub
-->
</SCRIPT>
<SCRIPT LANGUAGE="VBScript">
<!--
Sub Stack1_DblClick(Cancel)
   DoDblClick 1
End Sub
Sub Stack1_MouseUp(Button, Shift, X, Y)
	gbMouseUp = True
	SetMouseUp 1,x,y
End Sub
Sub Stack1_MouseDown(ByVal Button, ByVal Shift, ByVal X, ByVal Y)
	If 1 <> Button then exit Sub
	gbMouseUp = false
	SetMoveStartValues 1,x,y
End Sub
Sub Stack1_MouseMove(Button, Shift, X, Y)
	If (1 <> Button) or gbMouseUp then exit Sub
	DragCard 1,x,y
End Sub
-->
</SCRIPT>
<SCRIPT LANGUAGE="VBScript">
<!--
Sub chkDebug_Click()
	lstDebugPrint.Visible = chkDebug.Value
	gbDebug = chkDebug.value
End Sub
-->
</SCRIPT>
<SCRIPT LANGUAGE="VBScript">
<!--
'**********************************************
'* Name: cmdHelp_Click
'**********************************************
'* Description:
'*	User clicks this button to display instructions
'*	on how to play the game.
'**********************************************
sub cmdHelp_Click()
	dim n
	n = chr(13)&chr(10)
MsgBox _
"Begin play by double-clicking any aces on top of the seven row stacks to move " & _
"them to the spaces at the top right of the screen and then making any other " & _
"plays available on the board." &n&n& _
"You will be building two kinds of stacks: row stacks (7 vertical stacks in the middle) and suit stacks (4 stacks at upper right). " & _
"To free up cards that you need to build the suit stacks, you build row stacks.  " & _
"To move a card or a stack of cards from one row stack to another, drag it. " & _
"To move a card to a suit stack, double-click it. " & _
"When you have made all the available plays on the board, click the deck (upper left) to begin turning over cards. The card that is face up on top of the deck is always available for play." &n&n& _
"The object of the game is to use all the cards in the deck to build up the four suit stacks from ace to king.", 0, "ActiveX Solitaire Help"
end sub
'**********************************************
'* Name: cmdEndGame_Click
'**********************************************
'* Description:
'*	User clicks this button to end the game
'**********************************************
Sub cmdEndGame_Click()
	If not gbEndGame then
		EndTheGame
		gbEndGame = True
	End If
End Sub
'Check box for debug mode
Sub UpDebug_Click()
	If not gbEndGame then
		chkDebug.visible = not chkdebug.visible
	End If
End Sub
-->
</SCRIPT>
<SCRIPT LANGUAGE="VBScript">
<!--
'**********************************************
'* Name: cmdNewDeck_Click
'**********************************************
'* Description:
'*	User clicks this button to pop up the
'*	dialog that allows the user to
'*	choose a different deck.
'**********************************************
sub cmdNewDeck_Click()
	CardDeckClick(-gintCurDeck)
	CardDeckOnOff(true)
end sub 'cmdNewDeck_Click
'**********************************************
'* Name: CardDeckOk_Click
'**********************************************
'* Description:
'*	Routine called when user clicks the ok
'*	button in the CardDeck dialog. The routine
'*	will store the new deck choice and close
'*	the dialog.
'**********************************************
sub CardDeckOk_Click()
	ChangeTheDeck gintTempCurDeck
	CardDeckOnOff(false)
end sub 
'**********************************************
'* Name: CardDeckCancel_Click 
'**********************************************
'* Description:
'*	Called to close the card back dialog
'*	and the NOT change the value of the 
'*	current deck
'**********************************************
sub CardDeckCancel_Click()
	CardDeckOnOff(false)
end sub
'**********************************************
'* Name: CardDeckClick
'**********************************************
'* Description:
'*	Moves the "selection" square in the Deck
'*	back dialog to visually show the user
'*	which card back is choosen
'**********************************************
'*	Parameters:
'*	intCardNum	Deck that is choosen by the user
'**********************************************
sub CardDeckClick(intCardnum)
	gintTempCurDeck = -intCardnum
	CardDeckSelector.Left = grobjCardDeck(intCardnum).Left - 4
	CardDeckSelector.Top = grobjCardDeck(intCardnum).Top - 4
end sub

sub CardDeck1_Click:	CardDeckClick 1:	end sub
sub CardDeck2_Click:	CardDeckClick 2:	end sub
sub CardDeck3_Click:	CardDeckClick 3:	end sub
sub CardDeck4_Click:	CardDeckClick 4:	end sub
sub CardDeck5_Click:	CardDeckClick 5:	end sub
sub CardDeck6_Click:	CardDeckClick 6:	end sub
sub CardDeck7_Click:	CardDeckClick 7:	end sub
sub CardDeck8_Click:	CardDeckClick 8:	end sub
sub CardDeck9_Click:	CardDeckClick 9:	end sub
sub CardDeck10_Click:	CardDeckClick 10:	end sub
sub CardDeck11_Click:	CardDeckClick 11:	end sub
sub CardDeck12_Click:	CardDeckClick 12:	end sub

'**********************************************
'* Name: CardDeckOnOff
'**********************************************
'* Description:
'*	Displays or hides the dialog with the
'*	card backs depending on the parameter.
'**********************************************
'*	Parameters:
'*	bSwitch	True = Show dialog
'*			False = Hide dialog
'**********************************************
sub CardDeckOnOff(bSwitch)
	if( bSwitch = true ) then
		bSwitchz = 0
	else
		bSwitchz = 1
	end if
	CardDeckMouseBlock.Zorder(bSwitchz):	CardDeckMouseBlock.Visible = bSwitch
	CardDeckBack.Zorder(bSwitchz):		CardDeckBack.Visible = bSwitch
	CardDeckSelector.Zorder(bSwitchz):	CardDeckSelector.Visible = bSwitch
	for t = 1 to 12
		grobjCardDeck(t).Zorder(bSwitchz): 	grobjCardDeck(t).Visible = bSwitch
	next
	CardDeckOk.Zorder(bSwitchz):		CardDeckOk.Visible = bSwitch
	CardDeckCancel.Zorder(bSwitchz):		CardDeckCancel.Visible = bSwitch	
end sub
-->
</SCRIPT>
<SCRIPT LANGUAGE="VBScript">
<!--
'New deal.
Sub cmdNewDeal_Click()
	StartGame
End Sub
-->
</SCRIPT>
<SCRIPT LANGUAGE="VBScript">
<!--
'Click on the background when the end animation is running
' to stop the animation and bring up the You Won dialog.
Sub EndGameClick_MouseDown(Button, Shift, X, Y)
	If gbEndGame then
		gbLeaveEarly = true
	End If
End Sub
-->
</SCRIPT>
<SCRIPT LANGUAGE="VBScript">
<!--
'Changes the number of cards that are dealt from
' the Shuffle Stack to the Discard Stack
Sub cmdChangeDeal_Click()
	if( gCOUNTDEAL = 1 ) then
		gCOUNTDEAL = 3
		cmdChangeDeal.Caption = "Change to Draw 1"
	else
		gCOUNTDEAL = 1 
		cmdChangeDeal.Caption = "Change to Draw 3"
	end if
end sub
-->
</SCRIPT>
<DIV BACKGROUND="#8000" ID="Form" STYLE="LAYOUT:FIXED;WIDTH:450pt;HEIGHT:444pt;">
    <OBJECT ID="CardDeckMouseBlock"
     CLASSID="CLSID:978C9E23-D4B0-11CE-BF2D-00AA003F40D0" STYLE="TOP:-1pt;LEFT:-2pt;WIDTH:590pt;HEIGHT:362pt;DISPLAY:NONE;ZINDEX:0;">
        <PARAM NAME="BackColor" VALUE="32768">
        <PARAM NAME="VariousPropertyBits" VALUE="8388627">
        <PARAM NAME="Size" VALUE="20814;12771">
        <PARAM NAME="FontCharSet" VALUE="0">
        <PARAM NAME="FontPitchAndFamily" VALUE="2">
        <PARAM NAME="FontWeight" VALUE="0">
    </OBJECT>
    <OBJECT ID="CardDeckBack"
     CLASSID="CLSID:D7053240-CE69-11CD-A777-00DD01143C57" STYLE="TOP:68pt;LEFT:13pt;WIDTH:420pt;HEIGHT:223pt;TABINDEX:2;DISPLAY:NONE;ZINDEX:1;">
        <PARAM NAME="VariousPropertyBits" VALUE="25">
        <PARAM NAME="Size" VALUE="14817;7867">
        <PARAM NAME="FontEffects" VALUE="1073750016">
        <PARAM NAME="FontCharSet" VALUE="0">
        <PARAM NAME="FontPitchAndFamily" VALUE="2">
        <PARAM NAME="ParagraphAlign" VALUE="3">
        <PARAM NAME="FontWeight" VALUE="0">
    </OBJECT>
    <OBJECT ID="EndGameClick"
     CLASSID="CLSID:978C9E23-D4B0-11CE-BF2D-00AA003F40D0" STYLE="TOP:0pt;LEFT:0pt;WIDTH:644pt;HEIGHT:440pt;ZINDEX:2;">
        <PARAM NAME="BackColor" VALUE="32768">
        <PARAM NAME="VariousPropertyBits" VALUE="8388627">
        <PARAM NAME="Size" VALUE="22719;15522">
        <PARAM NAME="FontCharSet" VALUE="0">
        <PARAM NAME="FontPitchAndFamily" VALUE="2">
    </OBJECT>
    <OBJECT ID="CardDeckSelector"
     CLASSID="CLSID:978C9E23-D4B0-11CE-BF2D-00AA003F40D0" STYLE="TOP:57pt;LEFT:91pt;WIDTH:65pt;HEIGHT:82pt;DISPLAY:NONE;ZINDEX:4;">
        <PARAM NAME="ForeColor" VALUE="0">
        <PARAM NAME="BackColor" VALUE="0">
        <PARAM NAME="Size" VALUE="2328;2928">
        <PARAM NAME="FontCharSet" VALUE="0">
        <PARAM NAME="FontPitchAndFamily" VALUE="2">
        <PARAM NAME="FontWeight" VALUE="0">
    </OBJECT>
    <OBJECT ID="tmEndAnimation"
     CLASSID="CLSID:59CCB4A0-727D-11CF-AC36-00AA00A47DD2"
     CODEBASE="ietimer.ocx"
     STYLE="TOP:469pt;LEFT:-17pt;WIDTH:25pt;HEIGHT:17pt;TABINDEX:0;ZINDEX:4;">
        <PARAM NAME="_ExtentX" VALUE="873">
        <PARAM NAME="_ExtentY" VALUE="609">
    </OBJECT>

    <OBJECT ID="Card1H"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:15pt;LEFT:124pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:1;ZINDEX:5;"
	CODEBASE="card.ocx#version=1,0,0,5">   
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Ace3"
     CLASSID="CLSID:2B32FBC2-A8F1-11CF-93EE-00AA00C08FDF" STYLE="TOP:32pt;LEFT:396pt;WIDTH:54pt;HEIGHT:72pt;ZINDEX:6;">
        <PARAM NAME="VariousPropertyBits" VALUE="8388627">
        <PARAM NAME="Size" VALUE="1905;2540">
    </OBJECT>
    <OBJECT ID="AceImage3"
     CLASSID="CLSID:4C599241-6926-101B-9992-00000B65C6F9"
     DATA="DATA:application/x-oleobject;BASE64,QZJZTCZpGxCZkgAAC2XG+QACGAA0DgAAAIAAAAAA//8AAAAAVwcAAOwJAACw
gWfaSsLPEbWEAKoApx0abHQAAOcBAABHSUY4OWFHAGAAkf8A////AIAAAAAA
AAAALAAAAABHAGAAAAL/TISpy+0PozCH2ouz3rzbOVVGKJbkSaFjyq6u2SLe
TNe13F7kl+05j/G9Pjib8WjDqWCvpTP3bMaEyKo1VQTqetxgd+vFXsdkJfQs
TTPXUVGWDE/uqPSv9v7Lj97xfses1iaIxobG54cYdFgXBuaIN/RzmEh5EDIY
SIhZ6DJZiZjF+KhXAllKmvCpupfZyvm6eUm12pfaaCqKayc5SwsHCKsp7Brl
6TsWuhu5fMqci9V7fAUcOxxMzCoNuqjc7P3sTKS9jV1+fS477pd8i9oN/m2s
bkRtXW1eHD0vB9///i9mX5lL9griGyZP4Ax2o8K1c9jQkj6FHuodvIguG8Uq
wLYi+nv4zU7CjRssZsR4byTJHnMAenSJS+VKHQRRGjzpZuJMRR9fguxpaSe9
mjjvFdUodGHLnzDd/ZSZ1KTRqQahCu2oi6lWn0iT/iFK1WY5qzsZZuV6NqZO
r0GPij1JdiZWp2jppo27UurNsNfwkjRrNzBEtWyVvuWbcq3XuYMFh9zatjAH
vYf3GlIcdWndxpzjYb4K1nLlVn43Mn68GfXdz2VDj3bLpDRFwJ2BOj4tmQcI
0bCrnZAAPLhwCQYKAAA7AA==
"
     STYLE="TOP:32pt;LEFT:396pt;WIDTH:54pt;HEIGHT:72pt;ZINDEX:99;DISPLAY:NONE">
    </OBJECT>
    <OBJECT ID="Ace1"
     CLASSID="CLSID:2B32FBC2-A8F1-11CF-93EE-00AA00C08FDF" STYLE="TOP:32pt;LEFT:264pt;WIDTH:54pt;HEIGHT:72pt;ZINDEX:8;">
        <PARAM NAME="VariousPropertyBits" VALUE="8388627">
        <PARAM NAME="Size" VALUE="1905;2540">
    </OBJECT>
    <OBJECT ID="AceImage1"
     CLASSID="CLSID:4C599241-6926-101B-9992-00000B65C6F9" 
	STYLE="TOP:32pt;LEFT:264pt;WIDTH:54pt;HEIGHT:72pt;ZINDEX:100;DISPLAY:NONE">
        <PARAM NAME="AutoSize" VALUE="-1">
        <PARAM NAME="BackColor" VALUE="32768">
        <PARAM NAME="BorderStyle" VALUE="0">
        <PARAM NAME="Size" VALUE="2328;2910">
        <PARAM NAME="PictureAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Ace2"
     CLASSID="CLSID:2B32FBC2-A8F1-11CF-93EE-00AA00C08FDF" STYLE="TOP:32pt;LEFT:330pt;WIDTH:54pt;HEIGHT:72pt;ZINDEX:10;">
        <PARAM NAME="VariousPropertyBits" VALUE="8388627">
        <PARAM NAME="Size" VALUE="1905;2540">
    </OBJECT>
    <OBJECT ID="AceImage2"
     CLASSID="CLSID:4C599241-6926-101B-9992-00000B65C6F9" 
	STYLE="TOP:32pt;LEFT:330pt;WIDTH:54pt;HEIGHT:72pt;ZINDEX:100;DISPLAY:NONE">
        <PARAM NAME="AutoSize" VALUE="-1">
        <PARAM NAME="BackColor" VALUE="32768">
        <PARAM NAME="BorderStyle" VALUE="0">
        <PARAM NAME="Size" VALUE="2328;2910">
        <PARAM NAME="PictureAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Ace4"
     CLASSID="CLSID:2B32FBC2-A8F1-11CF-93EE-00AA00C08FDF" STYLE="TOP:32pt;LEFT:198pt;WIDTH:54pt;HEIGHT:72pt;ZINDEX:12;">
        <PARAM NAME="VariousPropertyBits" VALUE="8388627">
        <PARAM NAME="Size" VALUE="1905;2540">
    </OBJECT>
    <OBJECT ID="AceImage4"
     CLASSID="CLSID:4C599241-6926-101B-9992-00000B65C6F9" 
	STYLE="TOP:32pt;LEFT:198pt;WIDTH:54pt;HEIGHT:72pt;ZINDEX:100;DISPLAY:NONE">
        <PARAM NAME="AutoSize" VALUE="-1">
        <PARAM NAME="BackColor" VALUE="32768">
        <PARAM NAME="BorderStyle" VALUE="0">
        <PARAM NAME="Size" VALUE="2328;2910">
        <PARAM NAME="PictureAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="ShuffleImage"
     CLASSID="CLSID:4C599241-6926-101B-9992-00000B65C6F9"
     DATA="DATA:application/x-oleobject;BASE64,QZJZTCZpGxCZkgAAC2XG+QACGAA0DgAAAIAAAAAA//8AAAAAVwcAAOwJAACw
gWfaSsLPEbWEAKoApx0abHQAAMsBAABHSUY4OWFHAGAAkf8A////AP8AAIAA
AAAALAAAAABHAGAAAAL/lIapy+0P4zCH2ouz3rzbOXniSI5Iiabpqbauxr7y
G882Wt+6l+9+1vsJDcHhr2jcIZO3JXPmfNJC0iO1qrxim1pb4AsGW2/hsvnL
nZ3XZmi3xI63XVGN/D5fvT34flhVd+E3iIazZ9eX4VcSKIAn8mhyKBinIic5
UtmiyTNJwbnJJhIlSrbW2VGqowrjefrzurEUC3vGgcTqk/txSCvky7th+zQM
tAf8W3xRpMzUTBGEPIQcnVf1fPCGnYRdXbblaA3dJW0E3LPtLJ6Nkc69jr4u
9Rz/DR5uH0yZv0VPLk8M3j9+WPy1A6iOILt9f+4ZZCjGocCDCKc9hFiooDxv
pA01KlyIMQC4btrc6SKJ6KNFlcxMmgKIq+IqhDFlqklX06aLXeM4lLtZ0cnP
nSaFDk3BU5/PpChAtYLENFPUnlCPCptKlc8dEpFQSe1KcSsmOIQIGUJaNtFZ
tGmdjrXUVufTF3Eztmi01Kybk1jX3rOB9+8tT4LfFqZD+HCHwIqXJW48F7Ie
yYAeU1Z62XBmr5tHWd7MmDKIzjzGSTiNOnUEAwUAADsA
"
     STYLE="TOP:32pt;LEFT:0pt;WIDTH:53pt;HEIGHT:72pt;ZINDEX:97;">
    </OBJECT>
    <OBJECT ID="Stack1"
     CLASSID="CLSID:2B32FBC2-A8F1-11CF-93EE-00AA00C08FDF" STYLE="TOP:131pt;LEFT:0pt;WIDTH:54pt;HEIGHT:72pt;ZINDEX:15;">
        <PARAM NAME="VariousPropertyBits" VALUE="8388627">
        <PARAM NAME="Size" VALUE="1905;2540">
    </OBJECT>
    <OBJECT ID="Stack2"
     CLASSID="CLSID:2B32FBC2-A8F1-11CF-93EE-00AA00C08FDF" STYLE="TOP:131pt;LEFT:66pt;WIDTH:54pt;HEIGHT:72pt;ZINDEX:15;">
        <PARAM NAME="VariousPropertyBits" VALUE="8388627">
        <PARAM NAME="Size" VALUE="1905;2540">
    </OBJECT>
    <OBJECT ID="Stack3"
     CLASSID="CLSID:2B32FBC2-A8F1-11CF-93EE-00AA00C08FDF" STYLE="TOP:131pt;LEFT:132pt;WIDTH:54pt;HEIGHT:72pt;ZINDEX:16;">
        <PARAM NAME="VariousPropertyBits" VALUE="8388627">
        <PARAM NAME="Size" VALUE="1905;2540">
    </OBJECT>
    <OBJECT ID="Stack4"
     CLASSID="CLSID:2B32FBC2-A8F1-11CF-93EE-00AA00C08FDF" STYLE="TOP:131pt;LEFT:198pt;WIDTH:54pt;HEIGHT:72pt;ZINDEX:17;">
        <PARAM NAME="VariousPropertyBits" VALUE="8388627">
        <PARAM NAME="Size" VALUE="1905;2540">
    </OBJECT>
    <OBJECT ID="Stack5"
     CLASSID="CLSID:2B32FBC2-A8F1-11CF-93EE-00AA00C08FDF" STYLE="TOP:131pt;LEFT:264pt;WIDTH:54pt;HEIGHT:72pt;ZINDEX:18;">
        <PARAM NAME="VariousPropertyBits" VALUE="8388627">
        <PARAM NAME="Size" VALUE="1905;2540">
    </OBJECT>
    <OBJECT ID="Stack6"
     CLASSID="CLSID:2B32FBC2-A8F1-11CF-93EE-00AA00C08FDF" STYLE="TOP:131pt;LEFT:330pt;WIDTH:54pt;HEIGHT:72pt;ZINDEX:19;">
        <PARAM NAME="VariousPropertyBits" VALUE="8388627">
        <PARAM NAME="Size" VALUE="1905;2540">
    </OBJECT>
    <OBJECT ID="Stack7"
     CLASSID="CLSID:2B32FBC2-A8F1-11CF-93EE-00AA00C08FDF" STYLE="TOP:131pt;LEFT:396pt;WIDTH:54pt;HEIGHT:72pt;ZINDEX:20;">
        <PARAM NAME="VariousPropertyBits" VALUE="8388627">
        <PARAM NAME="Size" VALUE="1905;2540">
    </OBJECT>
    <OBJECT ID="Discard"
     CLASSID="CLSID:2B32FBC2-A8F1-11CF-93EE-00AA00C08FDF" STYLE="TOP:32pt;LEFT:74pt;WIDTH:74pt;HEIGHT:72pt;ZINDEX:22;">
        <PARAM NAME="VariousPropertyBits" VALUE="8388627">
        <PARAM NAME="Size" VALUE="2611;2540">
    </OBJECT>
    <OBJECT ID="Shuffle"
     CLASSID="CLSID:2B32FBC2-A8F1-11CF-93EE-00AA00C08FDF" STYLE="TOP:32pt;LEFT:0pt;WIDTH:54pt;HEIGHT:72pt;ZINDEX:23;">
        <PARAM NAME="VariousPropertyBits" VALUE="8388627">
        <PARAM NAME="Size" VALUE="1905;2540">
    </OBJECT>
    <OBJECT ID="tmEndCardMove"
     CLASSID="CLSID:59CCB4A0-727D-11CF-AC36-00AA00A47DD2" STYLE="TOP:469pt;LEFT:16pt;WIDTH:25pt;HEIGHT:17pt;TABINDEX:4;ZINDEX:24;">
        <PARAM NAME="_ExtentX" VALUE="873">
        <PARAM NAME="_ExtentY" VALUE="609">
    </OBJECT>
    <OBJECT ID="tmNewCard"
     CLASSID="CLSID:59CCB4A0-727D-11CF-AC36-00AA00A47DD2" STYLE="TOP:469pt;LEFT:49pt;WIDTH:25pt;HEIGHT:17pt;TABINDEX:44;ZINDEX:25;">
        <PARAM NAME="_ExtentX" VALUE="873">
        <PARAM NAME="_ExtentY" VALUE="609">
    </OBJECT>
    <OBJECT ID="HiddenCardLabel"
     CLASSID="CLSID:978C9E23-D4B0-11CE-BF2D-00AA003F40D0" STYLE="TOP:15pt;LEFT:487pt;WIDTH:107pt;HEIGHT:8pt;DISPLAY:NONE;ZINDEX:26;">
        <PARAM NAME="BackColor" VALUE="32768">
        <PARAM NAME="Caption" VALUE="All the cards are betwen this lable and the check box">
        <PARAM NAME="Size" VALUE="3775;282">
        <PARAM NAME="FontCharSet" VALUE="0">
        <PARAM NAME="FontPitchAndFamily" VALUE="2">
        <PARAM NAME="FontWeight" VALUE="0">
    </OBJECT>
    <OBJECT ID="chkDebug"
     CLASSID="CLSID:8BD21D40-EC42-11CE-9E0D-00AA006002F3" STYLE="TOP:15pt;LEFT:8pt;WIDTH:57pt;HEIGHT:12pt;TABINDEX:5;DISPLAY:NONE;ZINDEX:27;">
        <PARAM NAME="BackColor" VALUE="2000000000">
        <PARAM NAME="ForeColor" VALUE="100">
        <PARAM NAME="DisplayStyle" VALUE="4">
        <PARAM NAME="Size" VALUE="2011;423">
        <PARAM NAME="Caption" VALUE="Debug">
        <PARAM NAME="Accelerator" VALUE="68">
        <PARAM NAME="FontCharSet" VALUE="0">
        <PARAM NAME="FontPitchAndFamily" VALUE="2">
        <PARAM NAME="FontWeight" VALUE="0">
    </OBJECT>
    <OBJECT ID="cmdNewDeal"
     CLASSID="CLSID:978C9E23-D4B0-11CE-BF2D-00AA003F40D0" STYLE="TOP:1pt;LEFT:120pt;WIDTH:50pt;HEIGHT:17pt;ZINDEX:78;">
        <PARAM NAME="ForeColor" VALUE="65280">
        <PARAM NAME="BackColor" VALUE="32768">
        <PARAM NAME="VariousPropertyBits" VALUE="8388627">
        <PARAM NAME="Caption" VALUE="New Game">
        <PARAM NAME="Size" VALUE="1746;600">
        <PARAM NAME="FontName" VALUE="Arial">
        <PARAM NAME="FontEffects" VALUE="1073741828">
        <PARAM NAME="FontHeight" VALUE="180">
        <PARAM NAME="FontCharSet" VALUE="0">
        <PARAM NAME="FontPitchAndFamily" VALUE="2">
        <PARAM NAME="ParagraphAlign" VALUE="3">
        <PARAM NAME="FontWeight" VALUE="0">
    </OBJECT>
    <OBJECT ID="cmdNewDeck"
     CLASSID="CLSID:978C9E23-D4B0-11CE-BF2D-00AA003F40D0" STYLE="TOP:1pt;LEFT:173pt;WIDTH:83pt;HEIGHT:17pt;ZINDEX:79;">
        <PARAM NAME="ForeColor" VALUE="65280">
        <PARAM NAME="BackColor" VALUE="32768">
        <PARAM NAME="VariousPropertyBits" VALUE="8388627">
        <PARAM NAME="Caption" VALUE="Select New Deck">
        <PARAM NAME="Size" VALUE="2910;600">
        <PARAM NAME="FontName" VALUE="Arial">
        <PARAM NAME="FontEffects" VALUE="1073741828">
        <PARAM NAME="FontHeight" VALUE="180">
        <PARAM NAME="FontCharSet" VALUE="0">
        <PARAM NAME="FontPitchAndFamily" VALUE="2">
        <PARAM NAME="ParagraphAlign" VALUE="3">
        <PARAM NAME="FontWeight" VALUE="0">
    </OBJECT>
    <OBJECT ID="cmdChangeDeal"
     CLASSID="CLSID:978C9E23-D4B0-11CE-BF2D-00AA003F40D0" STYLE="TOP:1pt;LEFT:256pt;WIDTH:83pt;HEIGHT:17pt;ZINDEX:80;">
        <PARAM NAME="ForeColor" VALUE="65280">
        <PARAM NAME="BackColor" VALUE="32768">
        <PARAM NAME="VariousPropertyBits" VALUE="8388627">
        <PARAM NAME="Caption" VALUE="Change to Draw 1">
        <PARAM NAME="Size" VALUE="2911;600">
        <PARAM NAME="FontName" VALUE="Arial">
        <PARAM NAME="FontEffects" VALUE="1073741828">
        <PARAM NAME="FontHeight" VALUE="180">
        <PARAM NAME="FontCharSet" VALUE="0">
        <PARAM NAME="FontPitchAndFamily" VALUE="2">
        <PARAM NAME="ParagraphAlign" VALUE="3">
        <PARAM NAME="FontWeight" VALUE="0">
    </OBJECT>
    <OBJECT ID="cmdEndGame"
     CLASSID="CLSID:978C9E23-D4B0-11CE-BF2D-00AA003F40D0" STYLE="TOP:1pt;LEFT:346pt;WIDTH:66pt;HEIGHT:17pt;ZINDEX:81;">
        <PARAM NAME="ForeColor" VALUE="65280">
        <PARAM NAME="BackColor" VALUE="32768">
        <PARAM NAME="VariousPropertyBits" VALUE="8388627">
        <PARAM NAME="Caption" VALUE="End the Game">
        <PARAM NAME="Size" VALUE="2328;600">
        <PARAM NAME="FontName" VALUE="Arial">
        <PARAM NAME="FontEffects" VALUE="1073741828">
        <PARAM NAME="FontHeight" VALUE="180">
        <PARAM NAME="FontCharSet" VALUE="0">
        <PARAM NAME="FontPitchAndFamily" VALUE="2">
        <PARAM NAME="ParagraphAlign" VALUE="3">
        <PARAM NAME="FontWeight" VALUE="0">
    </OBJECT>
    <OBJECT ID="cmdHelp"
     CLASSID="CLSID:978C9E23-D4B0-11CE-BF2D-00AA003F40D0" STYLE="TOP:1pt;LEFT:414pt;WIDTH:33pt;HEIGHT:17pt;ZINDEX:81;">
        <PARAM NAME="ForeColor" VALUE="65280">
        <PARAM NAME="BackColor" VALUE="32768">
        <PARAM NAME="VariousPropertyBits" VALUE="8388627">
        <PARAM NAME="Caption" VALUE="Help">
        <PARAM NAME="Size" VALUE="2328;600">
        <PARAM NAME="FontName" VALUE="Arial">
        <PARAM NAME="FontEffects" VALUE="1073741828">
        <PARAM NAME="FontHeight" VALUE="180">
        <PARAM NAME="FontCharSet" VALUE="0">
        <PARAM NAME="FontPitchAndFamily" VALUE="2">
        <PARAM NAME="ParagraphAlign" VALUE="3">
        <PARAM NAME="FontWeight" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card2H"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:190pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:11;ZINDEX:32;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card3H"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:247pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:12;ZINDEX:33;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card4H"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:132pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:13;ZINDEX:34;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card5H"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:198pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:14;ZINDEX:35;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card6H"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:256pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:15;ZINDEX:36;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card7H"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:140pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:16;ZINDEX:37;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card8H"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:206pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:17;ZINDEX:38;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card9H"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:264pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:18;ZINDEX:39;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card10H"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:148pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:19;ZINDEX:40;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card11H"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:214pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:20;ZINDEX:41;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card12H"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:272pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:21;ZINDEX:42;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card13H"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:140pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:22;ZINDEX:43;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card1D"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:206pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:23;ZINDEX:44;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card2D"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:264pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:24;ZINDEX:45;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card3D"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:148pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:25;ZINDEX:46;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card4D"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:214pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:26;ZINDEX:47;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card5D"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:272pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:27;ZINDEX:48;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card6D"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:157pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:28;ZINDEX:49;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card7D"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:223pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:29;ZINDEX:50;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card8D"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:280pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:30;ZINDEX:51;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card9D"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:165pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:31;ZINDEX:52;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card10D"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:231pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:32;ZINDEX:53;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card11D"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:289pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:33;ZINDEX:54;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card12D"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:289pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:37;ZINDEX:55;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card13D"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:289pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:42;ZINDEX:56;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card1C"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:289pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:46;ZINDEX:57;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card2C"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:289pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:47;ZINDEX:58;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card3C"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:289pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:50;ZINDEX:59;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card4C"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:289pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:51;ZINDEX:60;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card5C"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:289pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:55;ZINDEX:61;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card6C"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:289pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:56;ZINDEX:62;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card7C"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:289pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:59;ZINDEX:63;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card8C"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:289pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:60;ZINDEX:64;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card9C"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:289pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:66;ZINDEX:65;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card10C"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:289pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:68;ZINDEX:66;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card11C"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:289pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:76;ZINDEX:67;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card12C"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:289pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:80;ZINDEX:68;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card13C"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:289pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:86;ZINDEX:69;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card1S"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:289pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:88;ZINDEX:70;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card2S"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:289pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:91;ZINDEX:71;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card3S"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:289pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:92;ZINDEX:72;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card4S"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:289pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:90;ZINDEX:73;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card5S"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:289pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:82;ZINDEX:74;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card6S"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:289pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:70;ZINDEX:75;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card7S"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:289pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:61;ZINDEX:76;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card8S"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:289pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:57;ZINDEX:77;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card9S"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:289pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:52;ZINDEX:78;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card10S"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:289pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:48;ZINDEX:79;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card11S"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:289pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:43;ZINDEX:80;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card12S"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:289pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:38;ZINDEX:81;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="Card13S"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:-41pt;LEFT:289pt;WIDTH:54pt;HEIGHT:72pt;TABINDEX:34;ZINDEX:82;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
	<PARAM NAME="CardAlignment" VALUE="0">
    </OBJECT>
    <OBJECT ID="CardDeck1"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:76pt;LEFT:30pt;WIDTH:58pt;HEIGHT:74pt;TABINDEX:63;DISPLAY:NONE;ZINDEX:83;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
        <PARAM NAME="Suite" VALUE="-1">
    </OBJECT>
    <OBJECT ID="CardDeck2"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:76pt;LEFT:96pt;WIDTH:58pt;HEIGHT:74pt;TABINDEX:65;DISPLAY:NONE;ZINDEX:84;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
        <PARAM NAME="Suite" VALUE="-2">
    </OBJECT>
    <OBJECT ID="CardDeck3"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:76pt;LEFT:162pt;WIDTH:58pt;HEIGHT:74pt;TABINDEX:67;DISPLAY:NONE;ZINDEX:85;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
        <PARAM NAME="Suite" VALUE="-3">
    </OBJECT>
    <OBJECT ID="CardDeck4"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:76pt;LEFT:228pt;WIDTH:58pt;HEIGHT:74pt;TABINDEX:69;DISPLAY:NONE;ZINDEX:86;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
        <PARAM NAME="Suite" VALUE="-4">
    </OBJECT>
    <OBJECT ID="CardDeck5"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:76pt;LEFT:294pt;WIDTH:58pt;HEIGHT:74pt;TABINDEX:71;DISPLAY:NONE;ZINDEX:87;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
        <PARAM NAME="Suite" VALUE="-5">
    </OBJECT>
    <OBJECT ID="CardDeck6"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:76pt;LEFT:360pt;WIDTH:58pt;HEIGHT:74pt;TABINDEX:73;DISPLAY:NONE;ZINDEX:88;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
        <PARAM NAME="Suite" VALUE="-6">
    </OBJECT>
    <OBJECT ID="CardDeck7"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:158pt;LEFT:30pt;WIDTH:58pt;HEIGHT:74pt;TABINDEX:75;DISPLAY:NONE;ZINDEX:89;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
        <PARAM NAME="Suite" VALUE="-7">
    </OBJECT>
    <OBJECT ID="CardDeck8"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:158pt;LEFT:96pt;WIDTH:58pt;HEIGHT:74pt;TABINDEX:77;DISPLAY:NONE;ZINDEX:90;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
        <PARAM NAME="Suite" VALUE="-8">
    </OBJECT>
    <OBJECT ID="CardDeck9"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:158pt;LEFT:162pt;WIDTH:58pt;HEIGHT:74pt;TABINDEX:79;DISPLAY:NONE;ZINDEX:91;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
        <PARAM NAME="Suite" VALUE="-9">
    </OBJECT>
    <OBJECT ID="CardDeck10"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:158pt;LEFT:228pt;WIDTH:58pt;HEIGHT:74pt;TABINDEX:81;DISPLAY:NONE;ZINDEX:92;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
        <PARAM NAME="Suite" VALUE="-10">
    </OBJECT>
    <OBJECT ID="CardDeck11"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:158pt;LEFT:294pt;WIDTH:58pt;HEIGHT:74pt;TABINDEX:83;DISPLAY:NONE;ZINDEX:93;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
        <PARAM NAME="Suite" VALUE="-11">
    </OBJECT>
    <OBJECT ID="CardDeck12"
     CLASSID="CLSID:55707B23-FF82-11CF-BB32-142A04C10000" STYLE="TOP:158pt;LEFT:360pt;WIDTH:58pt;HEIGHT:74pt;TABINDEX:85;DISPLAY:NONE;ZINDEX:94;">
        <PARAM NAME="_ExtentX" VALUE="2037">
        <PARAM NAME="_ExtentY" VALUE="2619">
        <PARAM NAME="Suite" VALUE="-12">
    </OBJECT>
    <OBJECT ID="CardDeckOk"
     CLASSID="CLSID:D7053240-CE69-11CD-A777-00DD01143C57" STYLE="TOP:249pt;LEFT:121pt;WIDTH:91pt;HEIGHT:25pt;TABINDEX:87;DISPLAY:NONE;ZINDEX:95;">
        <PARAM NAME="Caption" VALUE="OK">
        <PARAM NAME="Size" VALUE="3210;882">
        <PARAM NAME="Accelerator" VALUE="79">
        <PARAM NAME="FontCharSet" VALUE="0">
        <PARAM NAME="FontPitchAndFamily" VALUE="2">
        <PARAM NAME="ParagraphAlign" VALUE="3">
        <PARAM NAME="FontWeight" VALUE="0">
    </OBJECT>
    <OBJECT ID="CardDeckCancel"
     CLASSID="CLSID:D7053240-CE69-11CD-A777-00DD01143C57" STYLE="TOP:249pt;LEFT:236pt;WIDTH:91pt;HEIGHT:25pt;TABINDEX:89;DISPLAY:NONE;ZINDEX:96;">
        <PARAM NAME="Caption" VALUE="Cancel">
        <PARAM NAME="Size" VALUE="3210;882">
        <PARAM NAME="Accelerator" VALUE="67">
        <PARAM NAME="FontCharSet" VALUE="0">
        <PARAM NAME="FontPitchAndFamily" VALUE="2">
        <PARAM NAME="ParagraphAlign" VALUE="3">
        <PARAM NAME="FontWeight" VALUE="0">
    </OBJECT>
    <OBJECT ID="lstDebugPrint"
     CLASSID="CLSID:8BD21D20-EC42-11CE-9E0D-00AA006002F3" STYLE="TOP:23pt;LEFT:132pt;WIDTH:122pt;HEIGHT:66pt;TABINDEX:9;DISPLAY:NONE;ZINDEX:97;">
        <PARAM NAME="BackColor" VALUE="16777215">
        <PARAM NAME="ScrollBars" VALUE="3">
        <PARAM NAME="DisplayStyle" VALUE="2">
        <PARAM NAME="Size" VALUE="4304;2328">
        <PARAM NAME="MatchEntry" VALUE="0">
        <PARAM NAME="FontCharSet" VALUE="0">
        <PARAM NAME="FontPitchAndFamily" VALUE="2">
        <PARAM NAME="FontWeight" VALUE="0">
    </OBJECT>
    <OBJECT ID="TitleBanner"
     CLASSID="CLSID:4C599241-6926-101B-9992-00000B65C6F9"
     DATA="DATA:application/x-oleobject;BASE64,QZJZTCZpGxCZkgAAC2XG+QACGAC4BgAAAIAAAACAAAAAA///nAwAANwBAACw
gWfaSsLPEbWEAKoApx0abHQAAFUCAABHSUY4OWF6ABIAov8A////AIAAAGsA
AEoAADEAABgAABAAAAAALAAAAAB6ABIAAAP/GLrc/jDKSau9VQgc9OZa4z3C
YH5TGFoj1xTHkBHKcbiCzeTFM9hAmeS3ORgUAppE52L8YpQcLankwD68B+FA
0PyOkm2HIJNKqE0Gl0shphc/4aHnyAlrt2VV4X5XCgVxIgRkfAZsJgGJcFiE
AyiKbIAQYgyBC1R3bokDh1UDBYV8Qo+EH4RdEXF2DFswknNkbGx8Bxuuh2AL
NjARVyQwr0oER3Y5sZGANmVQTzpfMLoObKwKW8w9m7YBc7s0xEKHkK+QDVtz
dwqH4XlsW7fbgpEy7wEwjyVQAfUOlWYd+vbJmBTAAJ1u9o7I2xfQXkMtQPTx
YxhpA0GEiwBa7JEF/+CnhwBJ6WPSAEo1alCuePllzcYeCEkObaOloJcYVguR
COiFU98qDRMXvIooI2etDX2gGAQYkRecNXSiiOtTgwaibfxARaThhtiupgid
cBlA5hrDcvvAFNAV40etE/g+/KAhro6oBe/WijWxTW9BOnMfudH7T0qJw+X+
IVGap0OBIlMCzpHYWJFcWmZF0KzZY/OkmyZDVwFNb1tFTOlqVg7JzXQvbVic
qj7VjObcOmEdFola7yq8lk+5bjOgS97tvQ0EBQNlAN5jgpFMMwxktuPiqJhk
ErLxwZPWosMPztk59pyMpQu/kN1s7aWiS0lcyjVI9k6S1Ocet++HHdPQVCJI
CCMXHaJ08hh5BpiQSiGgQPLEJX5EKOGEFFZo4YUYWpAAADsAAAA=
"
     STYLE="TOP:0pt;LEFT:0pt;WIDTH:92pt;HEIGHT:14pt;ZINDEX:98;">
    </OBJECT>
</DIV>
