#!/bin/sh # MetaCard 2.4 stack # The following is not ASCII text, # so now would be a good time to q out of more exec mc $0 "$@"  CryptDivsion!ˆ ,global buttonLoc on preopenStack --show field "data" --pr myglobalNames() set the alwaysBuffer of this stack to true Set the toolTipDelay to 500 go to card 2 end preopenStack on ct put empty into field "data" end ct on pr temp put temp & return after field "data" end pr on setUP put "38,401" into buttonLoc[1] put "76,401" into buttonLoc[2] put "114,401" into buttonLoc[3] put "152,401"into buttonLoc[4] put "190,401"into buttonLoc[5] put "229,401"into buttonLoc[6] put "268,401"into buttonLoc[7] put "305,401"into buttonLoc[8] put "343,401"into buttonLoc[9] put "380,401"into buttonLoc[10] set the textStyle of field "divisor" to expanded set the textStyle of field "dividend" to expanded set the textStyle of field "quotient" to expanded set the textStyle of field "subtracts1" to "expanded" set the textStyle of field "subtracts2" to "expanded" set the textStyle of field "subtracts3" to "expanded" set the textStyle of field "subtracts4" to "expanded" set the textStyle of field "products1" to "expanded,underline" set the textStyle of field "products2" to "expanded,underline" set the textStyle of field "products3" to "expanded,underline" set the textStyle of field "products4" to "expanded,underline" end setUp function myGlobalNames put globalNames() into temp repeat with i = 1 to the number of items in temp put item i of temp into oneWord if "rev" is not in oneWord then put oneWord & return after results end repeat return results end myGlobalNames wÜÜÜÜÜÜffffff’’’’’’white€€€€€€¬¬¬¬¬¬€Xk<Ą revstackfalse ’’’’3 UMonacoUMonacoUMonacoUArialUarielUarielUarialUarialUCourierUcourierUcourierUmonacoUmonaco UTimes New Roman$UTimes New Roman$UArial UArial WGeneva UGenevaUArialUArialWArialWGeneva UGeneva WGeneva UTimes UTimes WTimesUTimesWTimesUTimesWTimesWmonacoWArial UGenevaUArial WTimesumonacoumonacoWGenevaUGenevaUTimes New RomanUTimes New Roman UTimes New Roman WTimes New Roman UGeneva WGenevaWTimes New RomanWTimes New RomanUTimes New RomanWTimes HurleyBar cREVGeneral bookmarks handlerList&preopenStack ct pr setUP myGlobalNamesscriptSelectionchar 193 to 192 prevHandlerct tempScript­

global buttonLoc

on preopenStack

--show field "data"

--pr myglobalNames()

set the alwaysBuffer of this stack to true

Set the toolTipDelay to 500

go to card 2

end preopenStack

on ct

put empty into field "data"

end ct

on pr temp

put temp & return after field "data"

end pr

on setUP

put "38,401" into buttonLoc[1]

put "76,401" into buttonLoc[2]

put "114,401" into buttonLoc[3]

put "152,401"into buttonLoc[4]

put "190,401"into buttonLoc[5]

put "229,401"into buttonLoc[6]

put "268,401"into buttonLoc[7]

put "305,401"into buttonLoc[8]

put "343,401"into buttonLoc[9]

put "380,401"into buttonLoc[10]

set the textStyle of field "divisor" to expanded

set the textStyle of field "dividend" to expanded

set the textStyle of field "quotient" to expanded

set the textStyle of field "subtracts1" to "expanded"

set the textStyle of field "subtracts2" to "expanded"

set the textStyle of field "subtracts3" to "expanded"

set the textStyle of field "subtracts4" to "expanded"

set the textStyle of field "products1" to "expanded,underline"

set the textStyle of field "products2" to "expanded,underline"

set the textStyle of field "products3" to "expanded,underline"

set the textStyle of field "products4" to "expanded,underline"

end setUp

function myGlobalNames

put globalNames() into temp

repeat with i = 1 to the number of items in temp

put item i of temp into oneWord

if "rev" is not in oneWord then put oneWord & return after results

end repeat

return results

end myGlobalNames

script& card id 1062 P%oglobal puzzleFields,divisor,dividend,quotient,products, subtracts,alphaList,problemList,fieldListNames,alphaNumbers,dx,dy on preopencard choose the browse tool DoPickANewProblem hide field "all correct" hide field "about" hide button "Thank you" put "divisor,dividend,quotient, products,subtracts" into puzzleFields end preopencard function begin put -260 into dx put -30 into dy put (a,b,c,d,e,f,g,h,i,j) into buttonList put "divisor,dividend,quotient,products, subtracts" into problemList put "Zero,One,Two,Three,Four,Five,Six,Seven,Eight,Nine" into fieldListNames pickNumber put 4965 into divisor put 8212049 into dividend put trunc(dividend/divisor) into quotient put dividend - divisor*quotient into remainder repeat with i = 1 to the number of chars in quotient put char i of quotient into temp put (temp * divisor) into item i of products end repeat put i into numberOfProducts put remainder into item 1 of subtracts repeat with i = 1 to numberOfProducts-1 put item i of subtracts into temp if i is not 1 then delete last char of temp put temp + item (numberOfProducts-i+1) of products into item i+1 of subtracts end repeat put reverseItems(subtracts) into subtracts if not allThere(divisor,dividend, quotient,products, subtracts) then beep return false else return true end if end begin on finishBegin -- put "A,B,C,D,E,F,G,H,I,J" into alphaList -- put randomizeList(alphaList) into alphaList put "H,D,E,A,C,J,F,I,B,G" into alphaList repeat with i = 1 to 10 put item i of alphaList & i-1 into item i of alphaNumbers end repeat assignLetters refreshScreen choose the browse tool end finishBegin on makeChange letter,numb repeat with i = 1 to the number of chars in divisor if char i of divisor = letter then put numb into char i of divisor end repeat repeat with i = 1 to the number of chars in dividend if char i of dividend = letter then put numb into char i of dividend end repeat repeat with i = 1 to the number of chars in quotient if char i of quotient = letter then put numb into char i of quotient end repeat repeat with i = 1 to the number of chars in products if char i of products = letter then put numb into char i of products end repeat repeat with i = 1 to the number of chars in subtracts if char i of subtracts = letter then put numb into char i of subtracts end repeat if Finished() then show field "All correct" refreshScreen end makeChange on startOver beep 2 send mouseUP to button "Pick a new problem" end startOver function finished repeat with i = 1 to 10 if the loc of button item i of alphaList is not within the rect of field item i of fieldListNames then return false end if end repeat return true end finished on assignLetters put (divisor,dividend,quotient) into paramList put alphaList into temp put paramList into temp2 repeat with j = 1 to the number of items in paramlist repeat with i = 1 to the number of chars in item j of paramList put item (1 + char i of item j of paramList)of alphaList into char i of item j of results end repeat end repeat put item 1 of results into divisor put item 2 of results into dividend put item 3 of results into quotient put empty into results repeat with j = 1 to the number of items in subtracts repeat with i = 1 to the number of chars in item j of subtracts put item (1 + char i of item j of subtracts)of alphaList into char i of item j of results end repeat end repeat put results into subtracts put empty into results repeat with j = 1 to the number of items in products repeat with i = 1 to the number of chars in item j of products put item (1 + char i of item j of products)of alphaList into char i of item j of results end repeat end repeat put results into products end assignLetters on refreshScreen put divisor into field "divisor" put dividend into field "dividend" put quotient into field "quotient" repeat with i = 1 to the number of chars in quotient put "subtracts"&i into temp put item i of subtracts into field temp end repeat repeat with i = 1 to the number of chars in quotient put "products" & i into temp put item i of products into field temp end repeat repeat with i = 1 to the number of fields put the short name of field i into temp delete the last char of temp if temp is in puzzleFields then repeat with j = 1 to the number of chars in field i if char j of field i is a number then set the foregroundcolor of char j of field i to red end repeat end if end repeat end refreshScreen on pickNumber put randomInRange(1000,9999) into divisor put randomInRange(1000000,9999999) into dividend put trunc(dividend/divisor) into quotient if "0" is in quotient then pickNumber if the number of chars in quotient < 4 then pickNumber end pickNumber function allThere x put the paramcount into n repeat with i = 1 to n repeat with j = 1 to the number of chars in param(i) put char j of param(i) after temp end repeat end repeat repeat with i = 1 to 10 if i-1 is in temp then next repeat else return false end if end repeat return true end allThere function reverseItems list put the number of items in list into n repeat with i = 1 to n put item n - i + 1 of list into item i of results end repeat return results end reverseItems function randomInRange n,m return random(m-n+1) + n -1 end randomInRange on ct put empty into field "data" end ct function randomizeList list repeat with i = 1 to 10 put random(the number of items in list) into n put item n of list into item i of results delete item n of list end repeat return results end randomizeList on clearFields -- repeat with i = 1 to 5 -- put empty into item i of list -- end repeat -- repeat with i = 1 to the number of fields -- put empty into field i -- set the textalign of field i to right -- end repeat end clearFields function randomList put "0,1,2,3,4,5,6,7,8,9" into list repeat with i = 1 to 10 put random(the number of items in list) into n put n into item i of results delete item n of list end repeat return results end randomList on checkInput who, lineUpPosition put the short name of who into who --pr "NOw who = " & who put "Zero,One,Two,Three,Four,Five,Six,Seven,Eight,Nine" into fieldListNames put the mouseLoc into startLoc repeat while the mouse is down set the loc of button who to the mouseLoc end repeat put the loc of button who into stopLoc put getFieldNumber(startLoc) into startFieldNumber put getFieldName(startLoc) into startFieldName put getFieldNumber(stopLoc) into stopFieldNumber put getFieldName(stopLoc) into stopFieldName if startFieldNumber is not empty then put startFieldNumber into startChar else put who into startChar end if if stopFieldNumber is not empty then put stopFieldNumber into stopChar else put empty into stopChar end if if the highlight of button "Error checking" is true then if stopChar is a number and item 1+stopChar of alphaList is not who then beep set the loc of button who to lineUpPosition makeChange startChar, who exit checkInput end if end if if stopFieldNumber is empty then set the loc of button who to lineUpPosition put who into stopChar else put stopFieldNumber into stopChar set the loc of button who to the loc of field item stopChar + 1 of fieldListNames end if makeChange startChar,stopChar end checkInput function getFieldName where if item 2 of where > bottom of field "zero" then repeat with i = 1 to 10 if where is within the rect of field item i of fieldListNames then return the name of field item i of fieldListNames end if end repeat end if return empty end getFieldName function getFieldNumber where --pr where repeat with i = 1 to 10 put the rect of field item i of fieldListNames into temp put fieldListNames into temp2 if where is within the rect of field item i of fieldListNames then return i-1 end if end repeat return empty end getFieldNumber on dopickanewproblem hide field "all correct" hide field "All correct" show field "data" set the loc of button "a" to "38,401" set the loc of button "b" to "76,401" set the loc of button "c" to "114,401" set the loc of button "d" to "152,401" set the loc of button "e" to "190,401" set the loc of button "f" to "229,401" set the loc of button "g" to "268,401" set the loc of button "h" to "305,401" set the loc of button "i" to "343,401" set the loc of button "j" to "380,401" repeat until begin() is true end repeat finishBegin end dopickanewproblem on opencard set the scroll of field "data" to 0 hide field "all correct" hide field "All correct" show field "data" set the loc of button "a" to "38,401" set the loc of button "b" to "76,401" set the loc of button "c" to "114,401" set the loc of button "d" to "152,401" set the loc of button "e" to "190,401" set the loc of button "f" to "229,401" set the loc of button "g" to "268,401" set the loc of button "h" to "305,401" set the loc of button "i" to "343,401" set the loc of button "j" to "380,401" repeat until begin() is true end repeat finishBegin end opencard ’’’’’’’’’’€<Ą cREVGeneralscriptChecksum–ōćųaB lĘÅŠ§p bookmarks handlerListšpreopencard begin finishBegin makeChange startOver finished assignLetters refreshScreen pickNumber allThere reverseItems randomInRange ct randomizeList clearFields randomList checkInput getFieldName getFieldNumber dopickanewproblem opencardscriptSelectionchar 1403 to 1494 prevHandler preopencard tempScriptscript/ķ

global puzzleFields,divisor,dividend,quotient,products, subtracts,alphaList,problemList,fieldListNames,alphaNumbers,dx,dy

on preopencard

choose the browse tool

DoPickANewProblem

hide field "all correct"

hide field "about"

hide button "Thank you"

put "divisor,dividend,quotient, products,subtracts" into puzzleFields

end preopencard

function begin

put -260 into dx

put -30 into dy

put (a,b,c,d,e,f,g,h,i,j) into buttonList

put "divisor,dividend,quotient,products, subtracts" into problemList

put "Zero,One,Two,Three,Four,Five,Six,Seven,Eight,Nine" into fieldListNames

pickNumber

put 4965 into divisor

put 8212049 into dividend

put trunc(dividend/divisor) into quotient

put dividend - divisor*quotient into remainder

repeat with i = 1 to the number of chars in quotient

put char i of quotient into temp

put (temp * divisor) into item i of products

end repeat

put i into numberOfProducts

put remainder into item 1 of subtracts

repeat with i = 1 to numberOfProducts-1

put item i of subtracts into temp

if i is not 1 then delete last char of temp

put temp + item (numberOfProducts-i+1) of products into item i+1 of subtracts

end repeat

put reverseItems(subtracts) into subtracts

if not allThere(divisor,dividend, quotient,products, subtracts) then

beep

return false

else

return true

end if

end begin

on finishBegin

-- put "A,B,C,D,E,F,G,H,I,J" into alphaList

-- put randomizeList(alphaList) into alphaList

put "H,D,E,A,C,J,F,I,B,G" into alphaList

repeat with i = 1 to 10

put item i of alphaList & i-1 into item i of alphaNumbers

end repeat

assignLetters

refreshScreen

choose the browse tool

end finishBegin

on makeChange letter,numb

repeat with i = 1 to the number of chars in divisor

if char i of divisor = letter then put numb into char i of divisor

end repeat

repeat with i = 1 to the number of chars in dividend

if char i of dividend = letter then put numb into char i of dividend

end repeat

repeat with i = 1 to the number of chars in quotient

if char i of quotient = letter then put numb into char i of quotient

end repeat

repeat with i = 1 to the number of chars in products

if char i of products = letter then put numb into char i of products

end repeat

repeat with i = 1 to the number of chars in subtracts

if char i of subtracts = letter then put numb into char i of subtracts

end repeat

if Finished() then show field "All correct"

refreshScreen

end makeChange

on startOver

beep 2

send mouseUP to button "Pick a new problem"

end startOver

function finished

repeat with i = 1 to 10

if the loc of button item i of alphaList is not within the rect of field item i of fieldListNames

then

return false

end if

end repeat

return true

end finished

on assignLetters

put (divisor,dividend,quotient) into paramList

put alphaList into temp

put paramList into temp2

repeat with j = 1 to the number of items in paramlist

repeat with i = 1 to the number of chars in item j of paramList

put item (1 + char i of item j of paramList)of alphaList into char i of item j of results

end repeat

end repeat

put item 1 of results into divisor

put item 2 of results into dividend

put item 3 of results into quotient

put empty into results

repeat with j = 1 to the number of items in subtracts

repeat with i = 1 to the number of chars in item j of subtracts

put item (1 + char i of item j of subtracts)of alphaList into char i of item j of results

end repeat

end repeat

put results into subtracts

put empty into results

repeat with j = 1 to the number of items in products

repeat with i = 1 to the number of chars in item j of products

put item (1 + char i of item j of products)of alphaList into char i of item j of results

end repeat

end repeat

put results into products

end assignLetters

on refreshScreen

put divisor into field "divisor"

put dividend into field "dividend"

put quotient into field "quotient"

repeat with i = 1 to the number of chars in quotient

put "subtracts"&i into temp

put item i of subtracts into field temp

end repeat

repeat with i = 1 to the number of chars in quotient

put "products" & i into temp

put item i of products into field temp

end repeat

repeat with i = 1 to the number of fields

put the short name of field i into temp

delete the last char of temp

if temp is in puzzleFields then

repeat with j = 1 to the number of chars in field i

if char j of field i is a number then set the foregroundcolor of char j of field i to red

end repeat

end if

end repeat

end refreshScreen

on pickNumber

put randomInRange(1000,9999) into divisor

put randomInRange(1000000,9999999) into dividend

put trunc(dividend/divisor) into quotient

if "0" is in quotient then pickNumber

if the number of chars in quotient < 4 then pickNumber

end pickNumber

function allThere x

put the paramcount into n

repeat with i = 1 to n

repeat with j = 1 to the number of chars in param(i)

put char j of param(i) after temp

end repeat

end repeat

repeat with i = 1 to 10

if i-1 is in temp then

next repeat

else

return false

end if

end repeat

return true

end allThere

function reverseItems list

put the number of items in list into n

repeat with i = 1 to n

put item n - i + 1 of list into item i of results

end repeat

return results

end reverseItems

function randomInRange n,m

return random(m-n+1) + n -1

end randomInRange

on ct

put empty into field "data"

end ct

function randomizeList list

repeat with i = 1 to 10

put random(the number of items in list) into n

put item n of list into item i of results

delete item n of list

end repeat

return results

end randomizeList

on clearFields

-- repeat with i = 1 to 5

-- put empty into item i of list

-- end repeat

-- repeat with i = 1 to the number of fields

-- put empty into field i

-- set the textalign of field i to right

-- end repeat

end clearFields

function randomList

put "0,1,2,3,4,5,6,7,8,9" into list

repeat with i = 1 to 10

put random(the number of items in list) into n

put n into item i of results

delete item n of list

end repeat

return results

end randomList

on checkInput who, lineUpPosition

put the short name of who into who

--pr "NOw who = " & who

put "Zero,One,Two,Three,Four,Five,Six,Seven,Eight,Nine" into fieldListNames

put the mouseLoc into startLoc

repeat while the mouse is down

set the loc of button who to the mouseLoc

end repeat

put the loc of button who into stopLoc

put getFieldNumber(startLoc) into startFieldNumber

put getFieldName(startLoc) into startFieldName

put getFieldNumber(stopLoc) into stopFieldNumber

put getFieldName(stopLoc) into stopFieldName

if startFieldNumber is not empty then

put startFieldNumber into startChar

else

put who into startChar

end if

if stopFieldNumber is not empty then

put stopFieldNumber into stopChar

else

put empty into stopChar

end if

if the highlight of button "Error checking" is true then

if stopChar is a number and item 1+stopChar of alphaList is not who then

beep

set the loc of button who to lineUpPosition

makeChange startChar, who

exit checkInput

end if

end if

if stopFieldNumber is empty then

set the loc of button who to lineUpPosition

put who into stopChar

else

put stopFieldNumber into stopChar

set the loc of button who to the loc of field item stopChar + 1 of fieldListNames

end if

makeChange startChar,stopChar

end checkInput

function getFieldName where

if item 2 of where > bottom of field "zero" then

repeat with i = 1 to 10

if where is within the rect of field item i of fieldListNames then

return the name of field item i of fieldListNames

end if

end repeat

end if

return empty

end getFieldName

function getFieldNumber where

--pr where

repeat with i = 1 to 10

put the rect of field item i of fieldListNames into temp

put fieldListNames into temp2

if where is within the rect of field item i of fieldListNames then

return i-1

end if

end repeat

return empty

end getFieldNumber

on dopickanewproblem

hide field "all correct"

hide field "All correct"

show field "data"

set the loc of button "a" to "38,401"

set the loc of button "b" to "76,401"

set the loc of button "c" to "114,401"

set the loc of button "d" to "152,401"

set the loc of button "e" to "190,401"

set the loc of button "f" to "229,401"

set the loc of button "g" to "268,401"

set the loc of button "h" to "305,401"

set the loc of button "i" to "343,401"

set the loc of button "j" to "380,401"

repeat until begin() is true

end repeat

finishBegin

end dopickanewproblem

on opencard

set the scroll of field "data" to 0

hide field "all correct"

hide field "All correct"

show field "data"

set the loc of button "a" to "38,401"

set the loc of button "b" to "76,401"

set the loc of button "c" to "114,401"

set the loc of button "d" to "152,401"

set the loc of button "e" to "190,401"

set the loc of button "f" to "229,401"

set the loc of button "g" to "268,401"

set the loc of button "h" to "305,401"

set the loc of button "i" to "343,401"

set the loc of button "j" to "380,401"

repeat until begin() is true

end repeat

finishBegin

end opencard

'()*+,-./0123456789:;<=>?@ABCDEFGHIJQRSTUVWXYZ[\^`gpqrwxyz~ź card id 1002 P$§global divisor,dividend,quotient,products, subtracts,alphaList,problemList,fieldListNames,alphaNumbers,dx,dy global buttonLoc,puzzleFields global originalDivisor,originalDividend,originalQuotient,originalProducts, originaSubtracts global originalAlphaDivisor,originalAlphaDividend,originalAlphaQuotient,originalAlphaSubtracts,originalAlphaProducts on giveAnswer put originalDivisor into divisor put originalDividend into dividend put originalQuotient into quotient put originalProducts into products put originaSubtracts into subtracts refreshScreen end giveAnswer on startOver put originalAlphaDivisor into divisor put originalAlphaDividend into dividend put originalAlphaQuotient into quotient put originalAlphaSubtracts into subtracts put originalAlphaProducts into products refreshScreen end startOver on preopencard choose the browse tool put "divisor,dividend,quotient,products,subtracts" into puzzleFields send mouseUp to button "Pick a new problem" setup hide field "data" end preopencard function begin --ct put -260 into dx put -30 into dy put (a,b,c,d,e,f,g,h,i,j) into buttonList -- pr buttonList put "divisor,dividend,quotient,products, subtracts" into problemList put "Zero,One,Two,Three,Four,Five,Six,Seven,Eight,Nine" into fieldListNames pickNumber put dividend - divisor*quotient into remainder repeat with i = 1 to the number of chars in quotient put char i of quotient into temp put (temp * divisor) into item i of products --pr item i of products end repeat put i into numberOfProducts put remainder into item 1 of subtracts repeat with i = 1 to numberOfProducts-1 put item i of subtracts into temp if i is not 1 then delete last char of temp put temp + item (numberOfProducts-i+1) of products into item i+1 of subtracts --pr "Item of subtracts = " &&item i+1 of subtracts end repeat put reverseItems(subtracts) into subtracts if not allThere(divisor,dividend, quotient,products, subtracts) then --beep return false else put divisor into originalDivisor put dividend into originalDividend put quotient into originalQuotient put products into originalProducts put subtracts into originaSubtracts return true end if end begin on finishBegin put "A,B,C,D,E,F,G,H,I,J" into alphaList put randomizeList(alphaList) into alphaList repeat with i = 1 to 10 put item i of alphaList & i-1 into item i of alphaNumbers end repeat assignLetters refreshScreen choose the browse tool end finishBegin on makeChange letter,numb repeat with i = 1 to the number of chars in divisor if char i of divisor = letter then put numb into char i of divisor end repeat repeat with i = 1 to the number of chars in dividend if char i of dividend = letter then put numb into char i of dividend end repeat repeat with i = 1 to the number of chars in quotient if char i of quotient = letter then put numb into char i of quotient end repeat repeat with i = 1 to the number of chars in products if char i of products = letter then put numb into char i of products end repeat repeat with i = 1 to the number of chars in subtracts if char i of subtracts = letter then put numb into char i of subtracts end repeat if Finished() then show field "All correct" refreshScreen end makeChange on startOver --beep 2 send mouseUP to button "Pick a new problem" end startOver function finished repeat with i = 1 to 10 --pr "Item i of alphaList = " && item i of alphaList if the loc of button item i of alphaList is not within the rect of field item i of fieldListNames then return false end if end repeat return true end finished on assignLetters put (divisor,dividend,quotient) into paramList put alphaList into temp put paramList into temp2 repeat with j = 1 to the number of items in paramlist repeat with i = 1 to the number of chars in item j of paramList put item (1 + char i of item j of paramList)of alphaList into char i of item j of results end repeat end repeat put item 1 of results into divisor put item 2 of results into dividend put item 3 of results into quotient put empty into results repeat with j = 1 to the number of items in subtracts repeat with i = 1 to the number of chars in item j of subtracts put item (1 + char i of item j of subtracts)of alphaList into char i of item j of results end repeat end repeat put results into subtracts put empty into results repeat with j = 1 to the number of items in products repeat with i = 1 to the number of chars in item j of products put item (1 + char i of item j of products)of alphaList into char i of item j of results end repeat end repeat put results into products put divisor into originalAlphaDivisor put dividend into originalAlphaDividend put quotient into originalAlphaQuotient put subtracts into originalAlphaSubtracts put products into originalAlphaProducts end assignLetters on refreshScreen lock screen put divisor into field "divisor" --set the textStyle of field "divisor" to expanded put dividend into field "dividend" --set the textStyle of field "dividend" to expanded put quotient into field "quotient" --set the textStyle of field "quotient" to expanded repeat with i = 1 to the number of chars in quotient put "subtracts"&i into temp put item i of subtracts into field temp -- set the textStyle of field temp to "expanded" end repeat repeat with i = 1 to the number of chars in quotient put "products" & i into temp put item i of products into field temp --set the textStyle of field temp to "expanded,underline" end repeat repeat with i = 1 to the number of fields put the short name of field i into temp delete the last char of temp if temp is in puzzleFields then repeat with j = 1 to the number of chars in field i if char j of field i is a number then set the foregroundcolor of char j of field i to red end repeat end if end repeat unlock screen end refreshScreen on pickNumber put randomInRange(1000,9999) into divisor put randomInRange(1000000,9999999) into dividend put trunc(dividend/divisor) into quotient if "0" is in quotient then pickNumber if the number of chars in quotient < 4 then pickNumber end pickNumber function allThere x put the paramcount into n repeat with i = 1 to n repeat with j = 1 to the number of chars in param(i) put char j of param(i) after temp end repeat end repeat repeat with i = 1 to 10 if i-1 is in temp then next repeat else return false end if end repeat return true end allThere function reverseItems list put the number of items in list into n repeat with i = 1 to n put item n - i + 1 of list into item i of results end repeat return results end reverseItems function randomInRange n,m return random(m-n+1) + n -1 end randomInRange on ct put empty into field "data" end ct function randomizeList list repeat with i = 1 to 10 put random(the number of items in list) into n put item n of list into item i of results delete item n of list end repeat return results end randomizeList function randomList put "0,1,2,3,4,5,6,7,8,9" into list repeat with i = 1 to 10 put random(the number of items in list) into n put n into item i of results delete item n of list end repeat return results end randomList on checkInput who, lineUpPosition,startLoc,stopLoc put the short name of who into who put "Zero,One,Two,Three,Four,Five,Six,Seven,Eight,Nine" into fieldListNames put getFieldNumber(startLoc) into startFieldNumber put getFieldName(startLoc) into startFieldName put getFieldNumber(stopLoc) into stopFieldNumber put getFieldName(stopLoc) into stopFieldName if startFieldNumber is not empty then put startFieldNumber into startChar else put who into startChar end if if stopFieldNumber is not empty then put stopFieldNumber into stopChar else put empty into stopChar end if if the highlight of button "Error checking" is true then if stopChar is a number and item 1+stopChar of alphaList is not who then beep set the loc of button who to lineUpPosition makeChange startChar, who exit checkInput end if end if if stopFieldNumber is empty then set the loc of button who to lineUpPosition put who into stopChar else put stopFieldNumber into stopChar set the loc of button who to the loc of field item stopChar + 1 of fieldListNames end if makeChange startChar,stopChar end checkInput function getFieldName where if item 2 of where > bottom of field "zero" then repeat with i = 1 to 10 if where is within the rect of field item i of fieldListNames then return the name of field item i of fieldListNames end if end repeat end if return empty end getFieldName function getFieldNumber where repeat with i = 1 to 10 put the rect of field item i of fieldListNames into temp put fieldListNames into temp2 if where is within the rect of field item i of fieldListNames then return i-1 end if end repeat return empty end getFieldNumber ffff’’’’’’€<Ą cREVGeneralscriptChecksumœ¾ŻP{EǵCüĘ1YAłž bookmarks handlerListŽgiveAnswer startOver preopencard begin finishBegin makeChange startOver finished assignLetters refreshScreen pickNumber allThere reverseItems randomInRange ct randomizeList randomList checkInput getFieldName getFieldNumberscriptSelectionchar 9383 to 9382 prevHandler finishBegin tempScriptscript2ø

global divisor,dividend,quotient,products, subtracts,alphaList,problemList,fieldListNames,alphaNumbers,dx,dy

global buttonLoc,puzzleFields

global originalDivisor,originalDividend,originalQuotient,originalProducts, originaSubtracts

global originalAlphaDivisor,originalAlphaDividend,originalAlphaQuotient,originalAlphaSubtracts,originalAlphaProducts

on giveAnswer

put originalDivisor into divisor

put originalDividend into dividend

put originalQuotient into quotient

put originalProducts into products

put originaSubtracts into subtracts

refreshScreen

end giveAnswer

on startOver

put originalAlphaDivisor into divisor

put originalAlphaDividend into dividend

put originalAlphaQuotient into quotient

put originalAlphaSubtracts into subtracts

put originalAlphaProducts into products

refreshScreen

end startOver

on preopencard

choose the browse tool

put "divisor,dividend,quotient,products,subtracts" into puzzleFields

send mouseUp to button "Pick a new problem"

setup

hide field "data"

end preopencard

function begin

--ct

put -260 into dx

put -30 into dy

put (a,b,c,d,e,f,g,h,i,j) into buttonList

-- pr buttonList

put "divisor,dividend,quotient,products, subtracts" into problemList

put "Zero,One,Two,Three,Four,Five,Six,Seven,Eight,Nine" into fieldListNames

pickNumber

put dividend - divisor*quotient into remainder

repeat with i = 1 to the number of chars in quotient

put char i of quotient into temp

put (temp * divisor) into item i of products

--pr item i of products

end repeat

put i into numberOfProducts

put remainder into item 1 of subtracts

repeat with i = 1 to numberOfProducts-1

put item i of subtracts into temp

if i is not 1 then delete last char of temp

put temp + item (numberOfProducts-i+1) of products into item i+1 of subtracts

--pr "Item of subtracts = " &&item i+1 of subtracts

end repeat

put reverseItems(subtracts) into subtracts

if not allThere(divisor,dividend, quotient,products, subtracts) then

--beep

return false

else

put divisor into originalDivisor

put dividend into originalDividend

put quotient into originalQuotient

put products into originalProducts

put subtracts into originaSubtracts

return true

end if

end begin

on finishBegin

put "A,B,C,D,E,F,G,H,I,J" into alphaList

put randomizeList(alphaList) into alphaList

repeat with i = 1 to 10

put item i of alphaList & i-1 into item i of alphaNumbers

end repeat

assignLetters

refreshScreen

choose the browse tool

end finishBegin

on makeChange letter,numb

repeat with i = 1 to the number of chars in divisor

if char i of divisor = letter then put numb into char i of divisor

end repeat

repeat with i = 1 to the number of chars in dividend

if char i of dividend = letter then put numb into char i of dividend

end repeat

repeat with i = 1 to the number of chars in quotient

if char i of quotient = letter then put numb into char i of quotient

end repeat

repeat with i = 1 to the number of chars in products

if char i of products = letter then put numb into char i of products

end repeat

repeat with i = 1 to the number of chars in subtracts

if char i of subtracts = letter then put numb into char i of subtracts

end repeat

if Finished() then show field "All correct"

refreshScreen

end makeChange

on startOver

--beep 2

send mouseUP to button "Pick a new problem"

end startOver

function finished

repeat with i = 1 to 10

--pr "Item i of alphaList = " && item i of alphaList

if the loc of button item i of alphaList is not within the rect of field item i of fieldListNames

then

return false

end if

end repeat

return true

end finished

on assignLetters

put (divisor,dividend,quotient) into paramList

put alphaList into temp

put paramList into temp2

repeat with j = 1 to the number of items in paramlist

repeat with i = 1 to the number of chars in item j of paramList

put item (1 + char i of item j of paramList)of alphaList into char i of item j of results

end repeat

end repeat

put item 1 of results into divisor

put item 2 of results into dividend

put item 3 of results into quotient

put empty into results

repeat with j = 1 to the number of items in subtracts

repeat with i = 1 to the number of chars in item j of subtracts

put item (1 + char i of item j of subtracts)of alphaList into char i of item j of results

end repeat

end repeat

put results into subtracts

put empty into results

repeat with j = 1 to the number of items in products

repeat with i = 1 to the number of chars in item j of products

put item (1 + char i of item j of products)of alphaList into char i of item j of results

end repeat

end repeat

put results into products

put divisor into originalAlphaDivisor

put dividend into originalAlphaDividend

put quotient into originalAlphaQuotient

put subtracts into originalAlphaSubtracts

put products into originalAlphaProducts

end assignLetters

on refreshScreen

lock screen

put divisor into field "divisor"

--set the textStyle of field "divisor" to expanded

put dividend into field "dividend"

--set the textStyle of field "dividend" to expanded

put quotient into field "quotient"

--set the textStyle of field "quotient" to expanded

repeat with i = 1 to the number of chars in quotient

put "subtracts"&i into temp

put item i of subtracts into field temp

-- set the textStyle of field temp to "expanded"

end repeat

repeat with i = 1 to the number of chars in quotient

put "products" & i into temp

put item i of products into field temp

--set the textStyle of field temp to "expanded,underline"

end repeat

repeat with i = 1 to the number of fields

put the short name of field i into temp

delete the last char of temp

if temp is in puzzleFields then

repeat with j = 1 to the number of chars in field i

if char j of field i is a number then set the foregroundcolor of char j of field i to red

end repeat

end if

end repeat

unlock screen

end refreshScreen

on pickNumber

put randomInRange(1000,9999) into divisor

put randomInRange(1000000,9999999) into dividend

put trunc(dividend/divisor) into quotient

if "0" is in quotient then pickNumber

if the number of chars in quotient < 4 then pickNumber

end pickNumber

function allThere x

put the paramcount into n

repeat with i = 1 to n

repeat with j = 1 to the number of chars in param(i)

put char j of param(i) after temp

end repeat

end repeat

repeat with i = 1 to 10

if i-1 is in temp then

next repeat

else

return false

end if

end repeat

return true

end allThere

function reverseItems list

put the number of items in list into n

repeat with i = 1 to n

put item n - i + 1 of list into item i of results

end repeat

return results

end reverseItems

function randomInRange n,m

return random(m-n+1) + n -1

end randomInRange

on ct

put empty into field "data"

end ct

function randomizeList list

repeat with i = 1 to 10

put random(the number of items in list) into n

put item n of list into item i of results

delete item n of list

end repeat

return results

end randomizeList

function randomList

put "0,1,2,3,4,5,6,7,8,9" into list

repeat with i = 1 to 10

put random(the number of items in list) into n

put n into item i of results

delete item n of list

end repeat

return results

end randomList

on checkInput who, lineUpPosition,startLoc,stopLoc

put the short name of who into who

put "Zero,One,Two,Three,Four,Five,Six,Seven,Eight,Nine" into fieldListNames

put getFieldNumber(startLoc) into startFieldNumber

put getFieldName(startLoc) into startFieldName

put getFieldNumber(stopLoc) into stopFieldNumber

put getFieldName(stopLoc) into stopFieldName

if startFieldNumber is not empty then

put startFieldNumber into startChar

else

put who into startChar

end if

if stopFieldNumber is not empty then

put stopFieldNumber into stopChar

else

put empty into stopChar

end if

if the highlight of button "Error checking" is true then

if stopChar is a number and item 1+stopChar of alphaList is not who then

beep

set the loc of button who to lineUpPosition

makeChange startChar, who

exit checkInput

end if

end if

if stopFieldNumber is empty then

set the loc of button who to lineUpPosition

put who into stopChar

else

put stopFieldNumber into stopChar

set the loc of button who to the loc of field item stopChar + 1 of fieldListNames

end if

makeChange startChar,stopChar

end checkInput

function getFieldName where

if item 2 of where > bottom of field "zero" then

repeat with i = 1 to 10

if where is within the rect of field item i of fieldListNames then

return the name of field item i of fieldListNames

end if

end repeat

end if

return empty

end getFieldName

function getFieldNumber where

repeat with i = 1 to 10

put the rect of field item i of fieldListNames into temp

put fieldListNames into temp2

if where is within the rect of field item i of fieldListNames then

return i-1

end if

end repeat

return empty

end getFieldNumber

     üėīšńņóōõö÷ųłśżž’"hmnuv{ėPick a new problemąE«yon mouseUp hide field "All correct" hide field "data" set the loc of button "a" to "38,401" set the loc of button "b" to "76,401" set the loc of button "c" to "114,401" set the loc of button "d" to "152,401" set the loc of button "e" to "190,401" set the loc of button "f" to "229,401" set the loc of button "g" to "268,401" set the loc of button "h" to "305,401" set the loc of button "i" to "343,401" set the loc of button "j" to "380,401" repeat until begin() is true end repeat finishBegin end mouseUp Black™™’’€Fx‡! cREVGeneralscriptChecksumō9ėÖ ³­Oqˆ‹łæČ˜ bookmarks revUniqueID 1006004324296 handlerListmouseUpscriptSelectionchar 12 to 523 prevHandlermouseUp tempScriptscriptķ

on mouseUp

hide field "All correct"

hide field "data"

set the loc of button "a" to "38,401"

set the loc of button "b" to "76,401"

set the loc of button "c" to "114,401"

set the loc of button "d" to "152,401"

set the loc of button "e" to "190,401"

set the loc of button "f" to "229,401"

set the loc of button "g" to "268,401"

set the loc of button "h" to "305,401"

set the loc of button "i" to "343,401"

set the loc of button "j" to "380,401"

repeat until begin() is true

end repeat

finishBegin

end mouseUp

īdivisor,% black’’’’’’€@L@T$selectfalse foregroundblack cREVGeneral revUniqueID 1006133593056 ź DAGJ š dividend,% black’’’’’’€@ Br(selectfalse foregroundblack cREVGeneral revUniqueID 1006133622128 ź IIJGAAC ń quotient,% black’’’’’’€@³&^ selectfalse foregroundblack cREVGeneral revUniqueID 1006133622128 ź BJEE ņ products1,& black’’’’’’€@’ZT&selectfalse foregroundblack cREVGeneral revUniqueID 1006133663179 ź IJIB ó subtracts1,% black’’’’’’€@œvY&selectfalse foregroundblack cREVGeneral revUniqueID 1006133663179 ź CFHAōNew Graphic 1KBlack’’’’’’€™Fp›`ŸHH cREVGeneral revUniqueID 1006133943436 õ products2,& black’’’’’’€@šŽ\(selectfalse foregroundblack cREVGeneral revUniqueID 1006133663179 ź DAGJ ö products3,& black’’’’’’€@²¾T(selectfalse foregroundblack cREVGeneral revUniqueID 1006133663179 ź BADEE ÷ products4,& black’’’’’’€@¾ōX*selectfalse foregroundblack cREVGeneral revUniqueID 1006133663179 ź BADEE ų subtracts2,% black’’’’’’€@±ØT&selectfalse foregroundblack cREVGeneral revUniqueID 1006133663179 ź BBHGA ł subtracts3,% black’’’’’’€@ĀŚT&selectfalse foregroundblack cREVGeneral revUniqueID 1006133663179 ź BFFEC ś subtracts4,% black’’’’’’€@ÅR"selectfalse foregroundblack cREVGeneral revUniqueID 1006133663179 ź BGAJFąE«qYglobal dx,dy local lineUpPosition,startLoc on mouseDown put "489,431" into lineUpPosition add dx to item 1 of lineUpPosition add dy to item 2 of lineUpPosition put the loc of me into startLoc grab me end mouseDown on mouseUP put the loc of me into stopLoc checkInput the name of me, lineUpPosition,startLoc,stopLoc end mouseUP Black’’red’’red€Õ‚  cREVGeneral revUniqueID 1006184846525 DąE«qWglobal dx,dy local lineUpPosition,startLoc on mouseDown put "412,431" into lineUpPosition add dx to item 1 of lineUpPosition add dy to item 2 of lineUpPosition put the loc of me into startLoc grab me end mouseDown on mouseUP put the loc of me into stopLoc checkInput the name of me, lineUpPosition,startLoc,stopLoc end mouseUP Black’’red’’red€ˆ‚  cREVGeneral revUniqueID 1006184846525 EąE«qYglobal dx,dy local lineUpPosition,startLoc on mouseDown put "450,431" into lineUpPosition add dx to item 1 of lineUpPosition add dy to item 2 of lineUpPosition put the loc of me into startLoc grab me end mouseDown on mouseUP put the loc of me into stopLoc checkInput the name of me, lineUpPosition,startLoc,stopLoc end mouseUP Black’’red’’red€®‚  cREVGeneral revUniqueID 1006184846525 bookmarks handlerListmouseDown mouseUP tempScript prevHandler mouseDownscriptSelection char 44 to 55script ’BąE«qYglobal dx,dy local lineUpPosition,startLoc on mouseDown put "336,431" into lineUpPosition add dx to item 1 of lineUpPosition add dy to item 2 of lineUpPosition put the loc of me into startLoc grab me end mouseDown on mouseUP put the loc of me into stopLoc checkInput the name of me, lineUpPosition,startLoc,stopLoc end mouseUP Black’’red’’red€<‚  cREVGeneral revUniqueID 1006184846525 žCąE«qYglobal dx,dy local lineUpPosition,startLoc on mouseDown put "374,431" into lineUpPosition add dx to item 1 of lineUpPosition add dy to item 2 of lineUpPosition put the loc of me into startLoc grab me end mouseDown on mouseUP put the loc of me into stopLoc checkInput the name of me, lineUpPosition,startLoc,stopLoc end mouseUP Black’’red’’red€b‚  cREVGeneral revUniqueID 1006184846525 żAąE‹qYglobal dx,dy local lineUpPosition,startLoc on mouseDown put "298,431" into lineUpPosition add dx to item 1 of lineUpPosition add dy to item 2 of lineUpPosition put the loc of me into startLoc grab me end mouseDown on mouseUP put the loc of me into stopLoc checkInput the name of me, lineUpPosition,startLoc,stopLoc end mouseUP ’’’’red€‚  cREVGeneral revUniqueID 1006184846525 IąE«qYglobal dx,dy local lineUpPosition,startLoc on mouseDown put "603,431" into lineUpPosition add dx to item 1 of lineUpPosition add dy to item 2 of lineUpPosition put the loc of me into startLoc grab me end mouseDown on mouseUP put the loc of me into stopLoc checkInput the name of me, lineUpPosition,startLoc,stopLoc end mouseUP Black’’red’’red€G‚  cREVGeneral revUniqueID 1006184846525 HąE«qZglobal dx,dy local lineUpPosition,startLoc on mouseDown put "565,431" into lineUpPosition add dx to item 1 of lineUpPosition add dy to item 2 of lineUpPosition put the loc of me into startLoc grab me end mouseDown on mouseUP put the loc of me into stopLoc checkInput the name of me, lineUpPosition,startLoc,stopLoc end mouseUP Black’’red’’red€!‚  cREVGeneral bookmarks revUniqueID 1006184846525 handlerListmouseDown mouseUPscriptSelection char 56 to 55 prevHandler mouseDown tempScriptscript GąE«qYglobal dx,dy local lineUpPosition,startLoc on mouseDown put "528,431" into lineUpPosition add dx to item 1 of lineUpPosition add dy to item 2 of lineUpPosition put the loc of me into startLoc grab me end mouseDown on mouseUP put the loc of me into stopLoc checkInput the name of me, lineUpPosition,startLoc,stopLoc end mouseUP Black’’red’’red€ü‚  cREVGeneral revUniqueID 1006184846525 JąE«qYglobal dx,dy local lineUpPosition,startLoc on mouseDown put "640,431" into lineUpPosition add dx to item 1 of lineUpPosition add dy to item 2 of lineUpPosition put the loc of me into startLoc grab me end mouseDown on mouseUP put the loc of me into stopLoc checkInput the name of me, lineUpPosition,startLoc,stopLoc end mouseUP Black’’red’’red€m‚ cREVGeneral revUniqueID 1006184846525 Error checking`E© Black’’ööšš€JPz( cREVGeneral revUniqueID 1006326623675  I need helpąE«y `global divisor,dividend,quotient,products, subtracts,alphaList,problemList,fieldListNames,alphaNumbers global alphaNumbers, local fieldTemp,buttonLoc on mouseUp global alphaList -- ct -- pr alphaList if the visible of field "ALL CORRECT" IS TRUE THEN EXIT TO METACARD put "zero,one,two,three,four,five,six,seven,eight,nine" into fieldTemp put "38,401" into buttonLoc[a] put "76,401" into buttonLoc[b] put "114,401" into buttonLoc[c] put "152,401" into buttonLoc[d] put "190,401" into buttonLoc[e] put "229,401" into buttonLoc[f] put "268,401" into buttonLoc[g] put "305,401" into buttonLoc[h] put "343,401" into buttonLoc[i] put "380,401" into buttonLoc[j] --checkForAllFull if checkForError() is true then exit to metacard repeat put random(10) into fieldNumber put item fieldNumber of fieldListNames into whichField if thisIsAnEmptyField(whichField)then exit repeat end repeat set the loc of button item fieldNumber of alphaList to the loc of field whichField --pr "Field number = " & fieldNumber --pr "alpha List = " & alphaList put the name of button item fieldNumber of alphaList into who makeChange the short name of who, fieldNumber-1 end mouseUp function getTheField temp repeat with i = 1 to 10 if temp is within the rect of field item i of fieldTemp then return i end repeat end getTheField function checkForError repeat with i = 1 to 10 if the top of button item i of alphalist > the bottom of field "one" then next repeat if the loc of button item i of alphaList is not within the rect of field item i of fieldTemp then put getTheField(the loc of button item i of alphaList) into fromWhichNumberField set the loc of button item i of alphaList to buttonLoc[item i of alphaList] put item i of alphaList into who --pr "Who = " & who&& "Number = " & fromWhichNumberField makeChange fromWhichNumberField-1, who return true end if end repeat return false end checkForError on checkForAllFull repeat with i = 1 to 10 put the top of button item i of alphaList into topOfButton put the bottom of field "one" into bottomOfField if topOfButton < bottomOfField then next repeat else exit repeat end if end repeat if i = 10 then exit to metacard end checkForAllFull function thisIsAnEmptyField temp repeat with i = 1 to 10 put the loc of button item i of alphaList into buttonLocations put the rect of field temp into fieldRec if buttonLocations is within fieldRec then return false end if end repeat return true end thisIsAnEmptyField ™™€Fž‡! cREVGeneral revUniqueID 1006329440303  All correct#h black’’’’33€B’.selectfalse foregroundblack cREVGeneral revUniqueID 1006356820490 ź All correct! @black  Six' hblack’’’’€łb selectfalse textAllingncenter foregroundblack cREVGeneral revUniqueID 1006184428179 ź 6 @black  Seven' hblack’’’’€b selectfalse textAllingncenter foregroundblack cREVGeneral revUniqueID 1006184428179 ź 7 @black Eight' hblack’’’’€Db selectfalse textAllingncenter foregroundblack cREVGeneral revUniqueID 1006184428179 ź 8 @black Nine' hblack’’’’€jb selectfalse textAllingncenter foregroundblack cREVGeneral revUniqueID 1006184428179 ź 9 @black  Four' hblack’’’’€­b selectfalse textAllingncenter foregroundblack cREVGeneral revUniqueID 1006184428179 ź 4 @black  Five' hblack’’’’€Ób selectfalse textAllingncenter foregroundblack cREVGeneral revUniqueID 1006184428179 ź 5 @black  Three' hblack’’’’Ą@‡b selectfalse textAllingncenter foregroundblack cREVGeneral revUniqueID 1006184428179 ź 3 @black Two' hblack’’’’€bb selectfalse textAllingncenter foregroundblack cREVGeneral revUniqueID 1006184428179 ź 2 @black One' hblack’’’’€<b selectfalse textAllingncenter foregroundblack cREVGeneral revUniqueID 1006184428179 ź 1 @black üZero' hblack’’’’€b selectfalse foregroundblack cREVGeneral revUniqueID 1006184428179 ź 0 @black "data†!`black€L\č foregroundblack cREVGeneral revUniqueID 1006469116429 ź global dx,dy local lineUpPosition,startLoc on mouseDown $ put "603,431" into lineUpPosition  @’’red  @’’red   % add dx to item 1 of lineUpPosition  @’’red  % add dy to item 2 of lineUpPosition  @’’red  # put the loc of me into startLoc grab me end mouseDown  on mouseUP " put the loc of me into stopLoc = checkInput the name of me, lineUpPosition,startLoc,stopLoc end mouseUP %`KMę 'Three' h’’’’Ą@ˆ` selectfalse textAllingncenter cREVGeneral revUniqueID 1006184428179 & 3 (Two' `’’’’€c` selectfalse textAllingncenter cREVGeneral revUniqueID 1006184428179 & 2 )Nine' `’’’’€k` selectfalse textAllingncenter cREVGeneral revUniqueID 1006184428179 & 9 *Eight' `’’’’€E` selectfalse textAllingncenter cREVGeneral revUniqueID 1006184428179 & 8 +Seven' `’’’’€` selectfalse textAllingncenter cREVGeneral revUniqueID 1006184428179 & 7 ,Six' `’’’’€ś` selectfalse textAllingncenter cREVGeneral revUniqueID 1006184428179 & 6 -Five' `’’’’€Ō` selectfalse textAllingncenter cREVGeneral revUniqueID 1006184428179 & 5 .Four' `’’’’€®` selectfalse textAllingncenter cREVGeneral revUniqueID 1006184428179 & 4 /One' `’’’’€=` selectfalse textAllingncenter cREVGeneral revUniqueID 1006184428179 & 1 0Zero' `’’’’€` selectfalse cREVGeneral revUniqueID 1006184428179 & 01Pick a new problemąE«yjon mouseEnter lock screen show field "Define" put "This button generates a new puzzle. It randomly picks a four digit number and a 7 digit as divisor and dividend." into field "define" put " It then works out the problem to determine whether all digits from 0 to 9 are present." after field "define" put " If so the problem is then displayed." after field "define" put return & "(Disabled for this help card.)" after field "define" set the height of field "define" to the formattedHeight of field "define" unlock screen end mouseEnter on mouseLeave hide field "define" end mouseLeave Black33’’™™€—x~  cREVGeneralscriptChecksum‘>Ż»ģ@Æ=KEŗ:°ģ bookmarks revUniqueID 1006004324296 handlerListmouseEnter mouseLeavescriptSelectionchar 538 to 537 prevHandler mouseEnter tempScriptscript Ą

on mouseEnter

lock screen

show field "Define"

put "This button generates a new puzzle. It randomly picks a four digit number and a 7 digit as divisor and dividend." into field "define"

put " It then works out the problem to determine whether all digits from 0 to 9 are present." after field "define"

put " If so the problem is then displayed." after field "define"

put return & "(Disabled for this help card.)" after field "define"

set the height of field "define" to the formattedHeight of field "define"

unlock screen

end mouseEnter

on mouseLeave

hide field "define"

end mouseLeave

2divisor, Black’’’’’’€@—BT$selectfalse cREVGeneral revUniqueID 1006133593056 & CGFJ 3 dividend, Black’’’’’’€@čDr(selectfalse cREVGeneral revUniqueID 1006133622128 & BEDEHCG 4 quotient, Black’’’’’’€@ś(^ selectfalse cREVGeneral revUniqueID 1006133622128 & DFJA 5 products1, Black’’’’’’€@Ū]T&selectfalse cREVGeneral revUniqueID 1006133663179 & CGFJ 6 subtracts1, Black’’’’’’€@ķxS&selectfalse cREVGeneral revUniqueID 1006133663179 & AECIH7New Graphic 1KBlack’’’’’’€äHpębźJRJ cREVGeneral revUniqueID 1006133943436 8 products2, Black’’’’’’€@ńP(selectfalse cREVGeneral revUniqueID 1006133663179 & EGIGH 9 products3, Black’’’’’’€@żĄT(selectfalse cREVGeneral revUniqueID 1006133663179 & ECBEJ : products4, Black’’’’’’€@÷X*selectfalse cREVGeneral revUniqueID 1006133663179 & DCBGJ ; subtracts2, Black’’’’’’€@üŖT&selectfalse cREVGeneral revUniqueID 1006133663179 & EFBHC < subtracts3, Black’’’’’’€@ ÜT&selectfalse cREVGeneral revUniqueID 1006133663179 & DGIGG = subtracts4, Black’’’’’’€@ R"selectfalse cREVGeneral revUniqueID 1006133663179 & CGHC>AąE‹qĄlocal fieldList global dx,dy on mouseDown put "298,431" into lineUpPosition add dx to item 1 of lineUpPosition add dy to item 2 of lineUpPosition checkInput the name of me, lineUpPosition end mouseDown --on mouseDown -- --ct -- --put "Zero,One,Two,Three,Four,Five,Six,Seven,Eight,Nine" into fieldList -- put "298,431" into lineUpPosition -- checkInput the name of me, lineUpPosition -- exit mouseDown -- put the mouseLoc into startLoc -- repeat while the mouse is down -- set the loc of me to the mouseLoc -- end repeat -- put the mouseLoc into stopLoc -- -- put getFieldNumber(startLoc) into startField -- -- if startField is not empty then -- put startField into startChar -- else -- put the short name of me into startChar -- end if -- pr "Start field = " && startField&& "Start char =" && startChar -- -- put getFieldNumber(stopLoc) into stopField -- if stopField is empty then -- set the loc of me to lineUpPosition -- put the short name of me into stopChar -- else -- put stopField into stopChar -- set the loc of me to the loc of field item stopChar + 1 of fieldList -- end if -- pr "Stop field = " & stopField& "StopChar = " && stopChar -- pr -- makeChange startChar,stopChar --end mouseDown -- --function getFieldNumber where -- repeat with i = 1 to 10 -- if where is within the rect of field item i of fieldList then -- return i-1 -- end if -- end repeat -- return empty --end getFieldNumber ’’red€‚  cREVGeneral revUniqueID 1006184846525 ?CąE«qÄglobal dx,dy on mouseDown put "374,431" into lineUpPosition add dx to item 1 of lineUpPosition add dy to item 2 of lineUpPosition checkInput the name of me, lineUpPosition end mouseDown Black’’red€b‚  cREVGeneral revUniqueID 1006184846525 @BąE«qÄglobal dx,dy on mouseDown put "336,431" into lineUpPosition add dx to item 1 of lineUpPosition add dy to item 2 of lineUpPosition checkInput the name of me, lineUpPosition end mouseDown Black’’red€<‚  cREVGeneral revUniqueID 1006184846525 AGąE«qĘ global dx,dy on mouseDown put "528,431" into lineUpPosition add dx to item 1 of lineUpPosition add dy to item 2 of lineUpPosition checkInput the name of me, lineUpPosition end mouseDown Black’’red€ü‚  cREVGeneral revUniqueID 1006184846525 BHąE«qĘ global dx,dy on mouseDown put "565,431" into lineUpPosition add dx to item 1 of lineUpPosition add dy to item 2 of lineUpPosition checkInput the name of me, lineUpPosition end mouseDown Black’’red€!‚  cREVGeneral revUniqueID 1006184846525 CIąE«qĘ global dx,dy on mouseDown put "603,431" into lineUpPosition add dx to item 1 of lineUpPosition add dy to item 2 of lineUpPosition checkInput the name of me, lineUpPosition end mouseDown Black’’red€G‚  cREVGeneral revUniqueID 1006184846525 DEąE«qÅ global dx,dy on mouseDown put "450,431" into lineUpPosition add dx to item 1 of lineUpPosition add dy to item 2 of lineUpPosition checkInput the name of me, lineUpPosition end mouseDown Black’’red€®‚  cREVGeneral revUniqueID 1006184846525 EDąE«qĀglobal dx,dy on mouseDown put "412,431" into lineUpPosition add dx to item 1 of lineUpPosition add dy to item 2 of lineUpPosition checkInput the name of me, lineUpPosition end mouseDown Black’’red€ˆ‚  cREVGeneral revUniqueID 1006184846525 FFąE«qÅ global dx,dy on mouseDown put "489,431" into lineUpPosition add dx to item 1 of lineUpPosition add dy to item 2 of lineUpPosition checkInput the name of me, lineUpPosition end mouseDown Black’’red€Õ‚  cREVGeneral revUniqueID 1006184846525 GJąE«qĘ global dx,dy on mouseDown put "640,431" into lineUpPosition add dx to item 1 of lineUpPosition add dy to item 2 of lineUpPosition checkInput the name of me, lineUpPosition end mouseDown Black’’red€m‚ cREVGeneral revUniqueID 1006184846525 HError checking`E©2on mouseEnter lock screen show field "Define" put "If this box is checked, you will be protected from making an error. " into field "define" set the height of field "define" to the formattedHeight of field "define" unlock screen end mouseEnter on mouseLeave hide field "define" end mouseLeave Black’’ööšš€œPz& cREVGeneralscriptChecksumš0 ó-ó¬‹ęŽĀ Lά bookmarks revUniqueID 1006326623675 handlerListmouseEnter mouseLeavescriptSelectionchar 239 to 238 prevHandler mouseEnter tempScriptscriptū

on mouseEnter

lock screen

show field "Define"

put "If this box is checked, you will be protected from making an error. " into field "define"

set the height of field "define" to the formattedHeight of field "define"

unlock screen

end mouseEnter

on mouseLeave

hide field "define"

end mouseLeave

I I need helpąE«y»on mouseEnter lock screen show field "Define" put "This button this will first remove existing errors, one by one, or, if it finds none,it will uncode the letters for you, one by one. " into field "define" put return & "(Disabled for this help card.)" after field "define" set the height of field "define" to the formattedHeight of field "define" unlock screen end mouseEnter on mouseLeave hide field "define" end mouseLeave 33’’™™€—ž~  cREVGeneralscriptChecksum ’? ¬cŻqĶ^Kšūv bookmarks revUniqueID 1006329440303 handlerListmouseEnter mouseLeavescriptSelectionchar 361 to 374 prevHandler mouseEnter tempScriptscript¬

on mouseEnter

lock screen

show field "Define"

put "This button this will first remove existing errors, one by one, or, if it finds none,it will uncode the letters for you, one by one. " into field "define"

put return & "(Disabled for this help card.)" after field "define"

set the height of field "define" to the formattedHeight of field "define"

unlock screen

end mouseEnter

on mouseLeave

hide field "define"

end mouseLeave

Jdata†ix‰on mouseUp put the clicktext into what switch what case "D" move button "D" from the loc of button d to the loc of field "one" makeChange d,1 break case "H" move button "H" from the loc of button h to the loc of field "zero" makeChange h,0 break case "J" move button "J" from the loc of button j to the loc of field "five" makeChange j,5 break case "G" move button "G" from the loc of button g to the loc of field "nine" makeChange g,9 break case "C" move button "C" from the loc of button c to the loc of field "four" makeChange c,4 break end switch end mouseUp 33’’33€ hāč cREVGeneral revUniqueID 1006469116429 & ōYour task is to decipher the code by which the long division problem has been encripted. Each letter in the puzzle represents a different number, the same number throughout the puzzle. From the letter configuration, you must decipher the code. @ó § Substitutions are made by dragging the red letter buttons to the appropriate yellow number-fields. (To make corrections, just pick up the button and reposition it.) @¦ Ē You have two assistants. By setting the "Error checking" box you will not be allowed to make an error. And if you are lost, you may click on the "I need help" button; this will first remove existing errors, one by one, or, if it finds none,it will uncode the letters for you, one by one. The "I give up" button displays the solution and the "Reset" button restores the orignal problem. (These buttons have been deac- tivated for this instruction card.) @Ę   Analysis Of This Puzzle @  @ ćFirst we notice that CGFJ in line 3 is the same as the divisor. Therefore D in line 1 must be 1. (Click on the red letters.) Next we notice in lines 4, 5 and 6 that H minus H is equal to H. Therefore H must be 0. But if H is 0, then J in line 1 must be 5. In lines 6,7 and 8 we see that B - B = G. But G cannot be 0 since H is 0. The only option is that 1 was borrowed in the previous subtraction and G is therefore 9. In line 10, C is 4. And the rest is relatively straightforward. @J @2’’J @’’K @L| @2’’Č @’’É @Ź @2’’é @ź§ @2’’‘ @’ @2’’Æ @°2 s In the beginning there will be puzzles which appear hopeless. Sometimes you will need to make an assumption, for example, some digit in the quotient must be small if it is to yield a four digit number when multiplying the quotient. You will discover many tricks as you gain experience and eventually you will seldom find a puzzle which does not yield to your ingenuity.  qK `Ūię Q New Field 1+€f Selection Descriptionfalse cREVGeneral revUniqueID 1006523997257 & 10 @ R New Field 1+€c,$Selection Descriptionfalse cREVGeneral revUniqueID 1006523997257 & 1 @ S New Field 1+€fą Selection Descriptionfalse cREVGeneral revUniqueID 1006523997257 & 8 @ T New Field 1k€fĆ Selection Descriptionfalse cREVGeneral revUniqueID 1006523997257 & 7 @ U New Field 1+€f¬ Selection Descriptionfalse cREVGeneral revUniqueID 1006523997257 & 6 @ V New Field 1+€f” Selection Descriptionfalse cREVGeneral revUniqueID 1006523997257 & 5 @ W New Field 1+€f| Selection Descriptionfalse cREVGeneral revUniqueID 1006523997257 & 4 @ X New Field 1+€f_ Selection Descriptionfalse cREVGeneral revUniqueID 1006523997257 & 3 @ Y New Field 1+€fHSelection Descriptionfalse cREVGeneral revUniqueID 1006523997257 & 2 @ [ New Field 1+€fų  cREVGeneral revUniqueID 1006523997257 & 9 @ Z New Field 1+€]*0Selection Descriptionfalse cREVGeneral revUniqueID 1006523997257 & Line @ No. @\Reset this screenąE«w]on mouseUp dopickanewproblem end mouseUp on mouseEnter lock screen show field "Define" put "Click this button to restore this card to it original state. " into field "define" set the height of field "define" to the formattedHeight of field "define" unlock screen end mouseEnter on mouseLeave hide field "define" end mouseLeave ĢĢĢĢ€¬Vx( cREVGeneralscriptChecksum{ޠܶńėĒG“gsi bookmarks revUniqueID 1006530238693 handlerListmouseUp mouseEnter mouseLeavescriptSelectionchar 281 to 280 prevHandlermouseUp tempScriptscriptm

on mouseUp

dopickanewproblem

end mouseUp

on mouseEnter

lock screen

show field "Define"

put "Click this button to restore this card to it original state. " into field "define"

set the height of field "define" to the formattedHeight of field "define"

unlock screen

end mouseEnter

on mouseLeave

hide field "define"

end mouseLeave

^ New Field 2+`’’€2˜* cREVGeneral revUniqueID 1006530977828 & @ CryptDivision @ `Go to puzzle cardąE«wNon mouseUp go to next card end mouseUp on mouseEnter lock screen show field "Define" put "Click this button to return to the puzzle card. " into field "define" set the height of field "define" to the formattedHeight of field "define" unlock screen end mouseEnter on mouseLeave hide field "define" end mouseLeave ’’’’’’3333€«.x( cREVGeneralscriptChecksum™īWÉQ;‰…ų`Ń—mć bookmarks revUniqueID 1006552535120 handlerListmouseUp mouseEnter mouseLeavescriptSelectionchar 266 to 265 prevHandlermouseUp tempScriptscriptA

on mouseUp

go to next card

end mouseUp

on mouseEnter

lock screen

show field "Define"

put "Click this button to return to the puzzle card. " into field "define"

set the height of field "define" to the formattedHeight of field "define"

unlock screen

end mouseEnter

on mouseLeave

hide field "define"

end mouseLeave

g All correct#h black’’’’33€’ü†.selectfalse foregroundblack cREVGeneral revUniqueID 1006356820490 & All correct! @black h HurleyBarIon menupick end menupick €’ż’ūI cREVGeneraliFilečŋU-on menupick close this stack end menupick €’’&Quit/Q cREVGeneral jHelpčŋU%--The following menuPick handler was generated by the Menu Manager. on menuPick pWhich switch pWhich case "Help" go to card 1 break case "About Cryptdivision" show field "about" show button "Thank you" show graphic "NameGraphic" break end switch end menuPick € ’’"Selection Descriptionfalse&Help - &About Cryptdivision cREVGeneralscriptChecksumWüe÷æk×ŲÄĪtb bookmarks handlerListmenuPickscriptSelectionchar 256 to 255 prevHandlermenuPick tempScriptscriptŻ

--The following menuPick handler was generated by the Menu Manager.

on menuPick pWhich

switch pWhich

case "Help"

go to card 1

break

case "About Cryptdivision"

show field "about"

show button "Thank you"

show graphic "NameGraphic"

break

end switch

end menuPick

 mAbout#h+’’’’€"&  cREVGeneral revUniqueID 1008776295495 ź Cryptdivision is shareware. @, &If you enjoy this puzzle, please send @,% #a donation of $10 to the author. @," $If you feel this program is without @,# redeeming social value, @, )you are a person without discrimination; @,( &as a penalty, send $15 to the author. @,%  Jim Hurley @, 15281 Kimblerly Ct. @, Nevada City, CA 95959, USA @,  jhurley@infostations.com @,  n Thank YouąE£y.fon mouseUP hide button "Thank you" hide field "about" hide graphic "nameGraphic" end mouseUP Ąj|Selection Descriptionfalse cREVGeneralscriptChecksumrM 0Ø#1ąi¦! ŗ bookmarks revUniqueID 1008776599606 handlerListmouseUPscriptSelection char 89 to 88 prevHandlermouseUP tempScriptscript¬

on mouseUP

hide button "Thank you"

hide field "about"

hide graphic "nameGraphic"

end mouseUP

pAboutc`’’’’€48Ä cREVGeneral revUniqueID 1008776295495 & Cryptdivision is freeware. @ -However, if you feel this program is without @, redeeming social value, @ )you are a person without discrimination; @( &as a penalty, send $10 to the author. @%  Jim Hurley @ 15281 Kimblerly Ct. @ Nevada City, CA 95959, USA @  jhurley@infostations.com @  q Thank YouąE£y.fon mouseUP hide button "Thank you" hide field "about" hide graphic "namegraphic" end mouseUP Ą€Ņ|Selection Descriptionfalse cREVGeneralscriptChecksumøƒĢĄąģö¤Ļ„'C‡‡Ę bookmarks revUniqueID 1008776599606 handlerListmouseUPscriptSelection char 89 to 88 prevHandlermouseUP tempScriptscript¬

on mouseUP

hide button "Thank you"

hide field "about"

hide graphic "namegraphic"

end mouseUP

r revLibrariesAaon preOpenBackGround repeat with i = 1 to the number of btns in me insert script of btn i of me into back end repeat revDBInit end preOpenBackGround on revDBInit if there is a stack "revPreferences" then put the cREVDBCode of stack "revPreferences" into tDBCode put the cREVDBName of stack "revPreferences" into tDBName else put the cREVDBCode of me into tDBCode put the cREVDBName of me into tDBName end if if tDBCode is not empty then try do "get revdb_init(" & quote & tDBName & quote & comma & quote & tDBCode & quote & ")" end try end if end revDBInit €Ļ9nd cREVDBCode4742 cREVDBName jameshurley cREVGeneralscriptChecksumŒä&aāĪß&~ĢŽ Ł’Š bookmarks revUniqueID 969975272287 handlerListpreOpenBackGround revDBInitscriptSelection char 21 to 20 prevHandlerpreOpenBackGround tempScriptscript

on preOpenBackGround

repeat with i = 1 to the number of btns in me

insert script of btn i of me into back

end repeat

revDBInit

end preOpenBackGround

on revDBInit

if there is a stack "revPreferences" then

put the cREVDBCode of stack "revPreferences" into tDBCode

put the cREVDBName of stack "revPreferences" into tDBName

else

put the cREVDBCode of me into tDBCode

put the cREVDBName of me into tDBName

end if

if tDBCode is not empty then

try

do "get revdb_init(" & quote & tDBName & quote & comma & quote & tDBCode & quote & ")"

end try

end if

end revDBInit

srevProfileBackąE‹p3---------------------------------------- Profile managment libraries ---------------------------------------- on revSetCardProfile pWhich, pWhichStack lock screen if pWhichStack is not empty then set the defaultStack to pWhichStack else set the defaultStack to the topStack set the defaultStack to the topStack repeat with i = 1 to the number of controls put the id of control i & cr after tList end repeat delete last char of tList repeat for each line l in tList set the cREVGeneral[profile] of control id l to pWhich end repeat set the cREVGeneral[profile] of this cd to pWhich unlock screen end revSetCardProfile on revSetStackProfile pWhich, pWhichStack lock screen if pWhichStack is not empty then set the defaultStack to pWhichStack else set the defaultStack to the topStack set the defaultStack to the topStack repeat with x = 1 to the number of cds put empty into tList repeat with i = 1 to the number of controls on cd x put the id of control i of cd x & cr after tList end repeat delete last char of tList repeat for each line l in tList set the cREVGeneral[profile] of control id l of cd x to pWhich end repeat set the cREVGeneral[profile] of cd x to pWhich end repeat set the cREVGeneral[profile] of this stack to pWhich unlock screen end revSetStackProfile on revSetStackFileProfile pWhich, pWhichSTack lock screen if pWhichStack is not empty then set the defaultStack to pWhichStack else set the defaultStack to the topStack put the mainStack of this stack into tMainStackName put tMainStackName & cr & the subStacks of stack tMainStackName into tStacksList if charToNum(last char of tStacksList) is 10 then delete last char of tStacksList repeat for each line l in tStacksList set the cREVGeneral[profile] of stack l to pWhich repeat with x = 1 to the number of cds in stack l set the cREVGeneral[profile] of cd x of stack l to pWhich put empty into tList repeat with i = 1 to the number of controls on cd x of stack l put the id of control i of cd x of stack l & cr after tList end repeat delete last char of tList repeat for each line y in tList -- answer "preparing to set profile" && i && the name of control i of cd x of stack l && "card " & x && cr & l & cr & pWhich set the cREVGeneral[profile] of control id y of cd x of stack l to pWhich end repeat end repeat end repeat unlock screen end revSetStackFileProfile on revNewProfile pWhichProfile, pWhichObject global gREVTemplateMasterName if pWhichObject is empty then put (the selObj) into tObjectsList else put pWhichObject into tObjectsList repeat for each line l in tObjectsList if pWhichProfile is among the lines of the cREVGeneral[profileList] of l or pWhichProfile is the cREVGeneral[masterName] of l or pWhichProfile is "Master" then --Profile already exists exit revNewProfile end if end repeat put pWhichProfile into tProfile replace space with empty in tProfile repeat for each line l in tObjectsList if the cREVGeneral[profileList] of l is empty then set the cREVGeneral[profileList] of l to pWhichProfile if the cREVGeneral[masterName] of l is empty then if gREVTemplateMasterName is not empty then set the cREVGeneral[masterName] of l to gREVTemplateMasterName else set the cREVGeneral[masterName] of l to "Master" end if else set the cREVGeneral[profileList] of l to the cREVGeneral[profileList] of l & cr & pWhichProfile end if end repeat end revNewProfile function revUpdateProfileListings global gREVTemplateMasterName put empty into tProfilesList repeat for each line l in (the selObj) put the cREVGeneral[profileList] of l & cr after tProfilesList switch case the cREVGeneral[masterName] of l is not empty put the cREVGeneral[masterName] of l & space & cr after tProfilesList break case gREVTemplateMasterName is not empty put gREVTemplateMasterName & space & cr after tProfilesList break default put "Master" & space & cr after tProfilesList break end switch end repeat delete last char of tProfilesList sort tProfilesList put empty into tFinalList repeat for each line l in tProfilesList if l is not among the lines of tFinalList then put l & cr after tFinalList end repeat delete last char of tFinalList repeat for each line l in (the selObj) repeat with i = 1 to the number of lines in tFinalList if word 1 of line i of tFinalList is not among the lines of the cREVGeneral[profileList] of l and word 1 of line i of tFinalList is not the cREVGeneral[masterName] of l and char 1 to 3 of line i of tFinalList is not " " then put " " before line i of tFinalList end repeat end repeat sort lines of tFinalList descending return tFinalList end revUpdateProfileListings function revReturnCurrentProfile pObjects global gREVTemplateMasterName put empty into tVar if pObjects is empty then put (the selObj) into pObjects repeat for each line l in pObjects if tVar is empty then put the cREVGeneral[profile] of l into tVar if tVar is empty then put "Master" into tVar end if if tVar is "Master" then if the cREVGeneral[masterName] of l is not empty then put the cREVGeneral[masterName] of l into tVar else if gREVTemplateMasterName is not empty then put gREVTemplateMasterName into tVar end if else put the cREVGeneral[profile] of l into tProfile if tProfile is empty then put "Master" into tProfile if tProfile is "Master" and the cREVGeneral[masterName] of l is not empty then put the cREVGeneral[masterName] of l into tProfile if tProfile is not tVar then return space end if end repeat if tVar is empty then return "Master" else return tVar end revReturnCurrentProfile function revCurrentProfileTypes pObjects put 0 into tMasterProfiles put 0 into tStandardProfiles repeat for each line l in pObjects put the cREVGeneral["profile"] of l into tProfile if tProfile is "Master" or tProfile is empty then add 1 to tMasterProfiles else add 1 to tStandardProfiles end repeat put the num of lines in pObjects into tNumObjects switch case tMasterProfiles is tNumObjects return "Master" break case tStandardProfiles is tNumObjects return "Standard" break default return "Mixed" end switch end revCurrentProfileTypes ---------------------------------------- end of Profile management libraries ---------------------------------------- €Ō=d cREVGeneralscriptChecksumó–ī`V”Ļó%@Uqęö bookmarks revUniqueID 969975157480 handlerList‘revSetCardProfile revSetStackProfile revSetStackFileProfile revNewProfile revUpdateProfileListings revReturnCurrentProfile revCurrentProfileTypesscriptSelectionchar 6127 to 6126 prevHandlerrevUpdateProfileListings tempScriptscript t revCommonąE‹p6function revTargetStack pWhich if pWhich is not empty and there is a pWhich then put the long id of pWhich into tParse else put the long id of the target into tParse get wordOffset("stack",tParse) put word (it) to (it+1) of tParse into tStackName put the short name of tStackName into tStackName return tStackName end revTargetstack on revGoURL pWhich put false into tNT if (the platform is "Win32") and (word 1 of the systemVersion is "Windows") then set the shellCommand to "command.com" else if the platform is "Win32" then set the shellCommand to "cmd.exe" put true into tNT end if if the platform is "Win32" then set the hideConsoleWindows to true put word 1 of queryRegistry("hkey_local_machine\software\classes\http\shell\open\command\") into tWebBrowserPath if not tNT then get shell(tWebBrowserPath && quote & pWhich & quote) else get shell(tWebBrowserPath) else if the platform is "MacOS" then do ("open location" && quote & pWhich & quote) as appleScript else get shell("netscape" && quote & pWhich & quote) end if end revGoURL getProp cREVGeneral[pWhichProp] pWhichProfile put the long id of the target into tTarget if pWhichProp is "revUniqueID" and the cREVGeneral[revUniqueID] of tTarget is empty then set the cREVGeneral[revUniqueID] of tTarget to the milliseconds return the cREVGeneral[revUniqueID] of tTarget else if pWhichProp is "revUniqueID" then return the cREVGeneral[revUniqueID] of tTarget end if if pWhichProp is not "profile" then if not gREVSuppressMessages or (gREVSuppressMessages and revOKTarget()) then pass cREVGeneral put the cREVGeneral["profile"] of tTarget into tProfile if tProfile is empty or tProfile is the cREVGeneral[masterName] of tTarget then put "Master" into tProfile return tProfile end cREVGeneral setProp cREVGeneral[pWhichProp] pWhichProfile put the long id of the target into tTarget if pWhichProp is not "profile" and pWhichProp is not "inLineImages" and pWhichProp is not "virtualWidth" and pWhichProp is not "virtualHeight" then pass cREVGeneral if pWhichProp is "virtualWidth" then put the cREVGeneral[virtualWidth] of tTarget into tOriginalWidth set the cREVGeneral[virtualWidth] of tTarget to pWhichProfile put tOriginalWidth - pWhichProfile into tDifference put the rect of stack revTargetStack() into tRect put item 3 of tRect + tDifference into item 3 of tRect set the rect of stack revtargetStack() to tRect exit cREVGeneral end if if pWhichProp is "virtualHeight" then put the cREVGeneral[virtualHeight] of tTarget into tOriginalHeight set the cREVGeneral[virtualHeight] of tTarget to pWhichProfile put tOriginalHeight - pWhichProfile into tDifference put the rect of stack revTargetStack() into tRect put item 4 of tRect + tDifference into item 4 of tRect set the rect of stack revtargetStack() to tRect exit cREVGeneral end if --inline images next if pWhichProp is "inLineImages" then if pWhichProfile is true then lock messages lock screen set the lockLocation of the templateGroup to true set the rect of the templateGroup to item 1 to 2 of the rect of tTarget,item 3 of the rect of tTarget-the scrollbarWidth of tTarget,item 4 of the rect of tTarget set the name of the templateGroup to the short name of tTarget&"images"&the number of this cd create group reset the templateGroup put the short name of tTarget & "images"&the number of this cd into tGroupName --now pad the group so it can scroll reset the templateGraphic set the style of the templateGraphic to "line" set the lineSize of the templateGraphic to 0 set the topLeft of the templateGraphic to the topLeft of tTarget create grc in group tGroupName reset the templateGraphic set the scroll of group tGroupName to 0 set the scroll of tTarget to 0 set the cREVGeneral["preInlineText"&the number of this cd] of tTarget to the text of tTarget set the itemDel to "/" put 0 into tSubtract repeat if tFinalExit then exit repeat put 0 into tLineCount set the scroll of group tGroupName to 0 set the scroll of tTarget to 0 repeat for each line l in the text of tTarget put true into tFinalExit add 1 to tLineCount if item 2 of l is "*IMAGEFILE*" then do "put empty into line tLineCount of" && tTarget reset the templateImage set the fileName of the templateImage to item 3 to -1 of l put the short name of tTarget into tFieldName put (the formattedHeight of line 1 to tLineCount of fld tFieldName + the top of tTarget) into tTop set the width of the templateImage to the formattedWidth of the templateImage put the formattedHeight of the templateImage into tImageHeight set the height of the templateImage to tImageHeight set the lockLoc of the templateImage to true set the topLeft of the templateImage to the left of tTarget+8,tTop-tSubtract create image in group tGroupName put 0 into tNewLines repeat add 1 to tNewLines put cr after line tLineCount of the target if the formattedHeight of line tLineCount to tLineCount+tNewLines of fld tFieldName >= tImageHeight then exit repeat end repeat put cr after line tLineCount of the target put false into tFinalExit exit repeat end if if item 2 of l is "*IMAGEID*" then do "put empty into line tLineCount of" && tTarget reset the templateButton set the showName of the templateButton to false set the showBorder of the templateButton to false set the traversalOn of the templateButton to false set the autoHilite of the templateButton to false set icon of the templateButton to item 3 to -1 of l put the short name of tTarget into tFieldName put (the formattedHeight of line 1 to tLineCount of fld tFieldName + the top of tTarget) into tTop set the width of the templateButton to the formattedWidth of the templateButton put the formattedHeight of the templateButton into tImageHeight set the height of the templateButton to tImageHeight set the lockLoc of the templateButton to true set the topLeft of the templateButton to the left of tTarget+8,tTop-tSubtract create button in group tGroupName put 0 into tNewLines repeat add 1 to tNewLines put cr after line tLineCount of the target if the formattedHeight of line tLineCount to tLineCount+tNewLines of fld tFieldName >= tImageHeight then exit repeat end repeat put cr after line tLineCount of the target put false into tFinalExit exit repeat end if end repeat put 30 into tSubtract end repeat reset the templateButton reset the templateImage --now pad the group so it can scroll put the formattedHeight of fld tFieldName into tFieldHeight reset the templateGraphic set the style of the templateGraphic to "line" set the lineSize of the templateGraphic to 0 set the topLeft of the templateGraphic to the left of tTarget,tFieldHeight+the top of tTarget create grc in group tGroupName reset the templateGraphic set the scroll of group tGroupName to 0 set the scroll of the target to 0 unlock screen unlock messages else delete group (the short name of tTarget&"images"&the number of this cd) set the text of tTarget to the cREVGeneral["preInlineText"&the number of this cd] of tTarget set the cREVGeneral["preInlineText"&the number of this cd] of tTarget to empty end if set the cREVGEneral["inLineImages"&the number of this cd] of tTarget to pWhichProfile exit cREVGeneral end if global gREVProfileReadOnly, gREVAutoCreateProfiles lock screen lock messages put the customPropertySet of tTarget into tReturnSet set the cREVGeometryCache[order] of this cd to empty if pWhichProfile is not empty and pWhichprofile is not "master" and pWhichProfile is not the cREVGeneral[masterName] of tTarget and pWhichProfile is not among the lines of the cREVGeneral[profileList] of tTarget then if gREVAutoCreateProfiles then revNewProfile pWhichProfile, tTarget unlock screen unlock messages exit cREVGeneral end if if the cREVGeneral[profile] of tTarget is "Master" or the cREVGeneral[profile] of tTarget is empty or the cREVGeneral[profile] of tTarget is the cREVGeneral[masterName] of tTarget then --its in master, going out if not gREVProfileReadOnly then set the customPropertySet of tTarget to cREVTempMaster put the properties of tTarget into tTempArray set the customProperties of tTarget to tTempArray end if else --its another profile, going into or through master set the customPropertySet of tTarget to "cREVMaster" if the customKeys[cREVMaster] of tTarget is not empty then put the customProperties of tTarget into tCurrentMasterArray if not gREVProfileReadOnly then set the customPropertySet of tTarget to "cREVTempMaster" put the customProperties of tTarget into tTempMasterArray put the properties of tTarget into tCurrentPropertiesArray --compare the temporary master with the current properties --any changes: --the original tempMaster value gets added to the current master array --and the new value gets created in the current profile array put keys(tCurrentPropertiesArray) into tCurrentPropertyKeys set the caseSensitive to true repeat for each line l in tCurrentPropertyKeys if tTempMasterArray[l] is not tCurrentPropertiesArray[l] then put tTempMasterArray[l] into tCurrentMasterArray[l] put tCurrentPropertiesArray[l] into tProfileArray[l] end if end repeat --transfer the current profile array to the object set the customPropertySet of tTarget to "cREVDiverged" & the cREVGeneral[profile] of tTarget set the customProperties of tTarget to tProfileArray --now transfer the current master array to the master profile set the customPropertySet of tTarget to cREVMaster set the customProperties of tTarget to tCurrentMasterArray end if set the properties of tTarget to tCurrentMasterArray set the cREVGeneral[profile] of tTarget to "Master" end if if pWhichProfile is not empty and pWhichProfile is not "master" and pWhichProfile is not the cREVGeneral[masterName] of tTarget then set the cREVGeneral[profile] of tTarget to pWhichProfile set the customPropertySet of tTarget to "cREVDiverged"&pWhichProfile if the customKeys of tTarget is not empty then put the customProperties of tTarget into tTempArray1 set the properties of tTarget to tTempArray1 end if set the customPropertySet of tTarget to tReturnSet unlock screen unlock messages end cREVGeneral function revAppVersion return "1.1" end revAppVersion function revLoadedStacks pWhich global gREVShowStacks put the mainStacks into tMainStacks switch pWhich case "all" break case "preference" if not gREVShowStacks then put revFilterStacksList(tMainStacks) into tMainStacks --filters Revolution stacks break default put revFilterStacksList(tMainStacks) into tMainStacks end switch put empty into tStacksInMemory repeat for each line l in tMainStacks if the substacks of stack l is empty then put l & cr after tStacksInMemory else put l & cr & the substacks of stack l & cr after tStacksInMemory end repeat delete last char of tStacksInMemory return tStacksInMemory end revLoadedStacks function revFilterStacksList pStacks global gREVPassMode --hack to deal with modes on startup repeat for each line l in pStacks if char 1 to 3 of l is not "rev" and l is not among the items of "Message Box,Home,answer dialog,ask dialog,script debugger,file selector" or (the mode of stack l is 1 and not gREVPassMode) then put l & cr after tReturnValue end repeat delete last char of tReturnValue put false into gREVPassMode return tReturnValue end revFilterStacksList --Path Conversion Functions function revUnixFromMacPath thePath if char 1 of thePath is colon then -- relative path repeat while char 1 of thePath is colon delete char 1 of thePath add 1 to numberOfLevels -- keep track end repeat if numberOfLevels is 1 then put ".:" before thePath else -- more than one level repeat for (numberOfLevels - 1) times put "..:" before thePath end repeat end if else -- absolute path put colon before thePath end if replace colon with linefeed in thePath replace "/" with colon in thePath replace linefeed with "/" in thePath return thePath end revUnixFromMacPath function revMacFromUnixPath thePath replace colon with linefeed in thePath if char 1 of thePath is "/" then delete char 1 of thePath replace "/" with colon in thePath replace linefeed with "/" in thePath if char 1 to 2 of thePath is ".:" then delete char 1 of thePath else if char 1 to 3 of thePath is "..:" then -- relative path repeat while char 1 to 3 of thePath is "..:" delete char 1 to 3 of thePath add 1 to numberOfLevels end repeat repeat for numberOfLevels + 1 times put ":" before thePath end repeat end if return thePath end revMacFromUnixPath €Ó…f cREVGeneralscriptChecksumē–ŠĄåƒUŗJX”fŠ8 bookmarks revUniqueID 969975831067 handlerListŸrevTargetStack revGoURL cREVGeneral[pWhichProp] cREVGeneral[pWhichProp] revAppVersion revLoadedStacks revFilterStacksList revUnixFromMacPath revMacFromUnixPathscriptSelectionchar 997 to 996 prevHandlerrevGoURL tempScriptscript?2

function revTargetStack pWhich

if pWhich is not empty and there is a pWhich then put the long id of pWhich into tParse

else put the long id of the target into tParse

get wordOffset("stack",tParse)

put word (it) to (it+1) of tParse into tStackName

put the short name of tStackName into tStackName

return tStackName

end revTargetstack

on revGoURL pWhich

put false into tNT

if (the platform is "Win32") and (word 1 of the systemVersion is "Windows") then

set the shellCommand to "command.com"

else if the platform is "Win32" then

set the shellCommand to "cmd.exe"

put true into tNT

end if

if the platform is "Win32" then

set the hideConsoleWindows to true

put word 1 of queryRegistry("hkey_local_machine\software\classes\http\shell\open\command\") into tWebBrowserPath

if not tNT then get shell(tWebBrowserPath && quote & pWhich & quote)

else get shell(tWebBrowserPath)

else if the platform is "MacOS" then

do ("open location" && quote & pWhich & quote) as appleScript

else

get shell("netscape" && quote & pWhich & quote)

end if

end revGoURL

getProp cREVGeneral[pWhichProp] pWhichProfile

put the long id of the target into tTarget

if pWhichProp is "revUniqueID" and the cREVGeneral[revUniqueID] of tTarget is empty then

set the cREVGeneral[revUniqueID] of tTarget to the milliseconds

return the cREVGeneral[revUniqueID] of tTarget

else if pWhichProp is "revUniqueID" then

return the cREVGeneral[revUniqueID] of tTarget

end if

if pWhichProp is not "profile" then if not gREVSuppressMessages or (gREVSuppressMessages and revOKTarget()) then pass cREVGeneral

put the cREVGeneral["profile"] of tTarget into tProfile

if tProfile is empty or tProfile is the cREVGeneral[masterName] of tTarget then put "Master" into tProfile

return tProfile

end cREVGeneral

setProp cREVGeneral[pWhichProp] pWhichProfile

put the long id of the target into tTarget

if pWhichProp is not "profile" and pWhichProp is not "inLineImages" and pWhichProp is not "virtualWidth" and pWhichProp is not "virtualHeight" then pass cREVGeneral

if pWhichProp is "virtualWidth" then

put the cREVGeneral[virtualWidth] of tTarget into tOriginalWidth

set the cREVGeneral[virtualWidth] of tTarget to pWhichProfile

put tOriginalWidth - pWhichProfile into tDifference

put the rect of stack revTargetStack() into tRect

put item 3 of tRect + tDifference into item 3 of tRect

set the rect of stack revtargetStack() to tRect

exit cREVGeneral

end if

if pWhichProp is "virtualHeight" then

put the cREVGeneral[virtualHeight] of tTarget into tOriginalHeight

set the cREVGeneral[virtualHeight] of tTarget to pWhichProfile

put tOriginalHeight - pWhichProfile into tDifference

put the rect of stack revTargetStack() into tRect

put item 4 of tRect + tDifference into item 4 of tRect

set the rect of stack revtargetStack() to tRect

exit cREVGeneral

end if

--inline images next

if pWhichProp is "inLineImages" then

if pWhichProfile is true then

lock messages

lock screen

set the lockLocation of the templateGroup to true

set the rect of the templateGroup to item 1 to 2 of the rect of tTarget,item 3 of the rect of tTarget-the scrollbarWidth of tTarget,item 4 of the rect of tTarget

set the name of the templateGroup to the short name of tTarget&"images"&the number of this cd

create group

reset the templateGroup

put the short name of tTarget & "images"&the number of this cd into tGroupName

--now pad the group so it can scroll

reset the templateGraphic

set the style of the templateGraphic to "line"

set the lineSize of the templateGraphic to 0

set the topLeft of the templateGraphic to the topLeft of tTarget

create grc in group tGroupName

reset the templateGraphic

set the scroll of group tGroupName to 0

set the scroll of tTarget to 0

set the cREVGeneral["preInlineText"&the number of this cd] of tTarget to the text of tTarget

set the itemDel to "/"

put 0 into tSubtract

repeat

if tFinalExit then exit repeat

put 0 into tLineCount

set the scroll of group tGroupName to 0

set the scroll of tTarget to 0

repeat for each line l in the text of tTarget

put true into tFinalExit

add 1 to tLineCount

if item 2 of l is "*IMAGEFILE*" then

do "put empty into line tLineCount of" && tTarget

reset the templateImage

set the fileName of the templateImage to item 3 to -1 of l

put the short name of tTarget into tFieldName

put (the formattedHeight of line 1 to tLineCount of fld tFieldName + the top of tTarget) into tTop

set the width of the templateImage to the formattedWidth of the templateImage

put the formattedHeight of the templateImage into tImageHeight

set the height of the templateImage to tImageHeight

set the lockLoc of the templateImage to true

set the topLeft of the templateImage to the left of tTarget+8,tTop-tSubtract

create image in group tGroupName

put 0 into tNewLines

repeat

add 1 to tNewLines

put cr after line tLineCount of the target

if the formattedHeight of line tLineCount to tLineCount+tNewLines of fld tFieldName >= tImageHeight then exit repeat

end repeat

put cr after line tLineCount of the target

put false into tFinalExit

exit repeat

end if

if item 2 of l is "*IMAGEID*" then

do "put empty into line tLineCount of" && tTarget

reset the templateButton

set the showName of the templateButton to false

set the showBorder of the templateButton to false

set the traversalOn of the templateButton to false

set the autoHilite of the templateButton to false

set icon of the templateButton to item 3 to -1 of l

put the short name of tTarget into tFieldName

put (the formattedHeight of line 1 to tLineCount of fld tFieldName + the top of tTarget) into tTop

set the width of the templateButton to the formattedWidth of the templateButton

put the formattedHeight of the templateButton into tImageHeight

set the height of the templateButton to tImageHeight

set the lockLoc of the templateButton to true

set the topLeft of the templateButton to the left of tTarget+8,tTop-tSubtract

create button in group tGroupName

put 0 into tNewLines

repeat

add 1 to tNewLines

put cr after line tLineCount of the target

if the formattedHeight of line tLineCount to tLineCount+tNewLines of fld tFieldName >= tImageHeight then exit repeat

end repeat

put cr after line tLineCount of the target

put false into tFinalExit

exit repeat

end if

end repeat

put 30 into tSubtract

end repeat

reset the templateButton

reset the templateImage

--now pad the group so it can scroll

put the formattedHeight of fld tFieldName into tFieldHeight

reset the templateGraphic

set the style of the templateGraphic to "line"

set the lineSize of the templateGraphic to 0

set the topLeft of the templateGraphic to the left of tTarget,tFieldHeight+the top of tTarget

create grc in group tGroupName

reset the templateGraphic

set the scroll of group tGroupName to 0

set the scroll of the target to 0

unlock screen

unlock messages

else

delete group (the short name of tTarget&"images"&the number of this cd)

set the text of tTarget to the cREVGeneral["preInlineText"&the number of this cd] of tTarget

set the cREVGeneral["preInlineText"&the number of this cd] of tTarget to empty

end if

set the cREVGEneral["inLineImages"&the number of this cd] of tTarget to pWhichProfile

exit cREVGeneral

end if

global gREVProfileReadOnly, gREVAutoCreateProfiles

lock screen

lock messages

put the customPropertySet of tTarget into tReturnSet

set the cREVGeometryCache[order] of this cd to empty

if pWhichProfile is not empty and pWhichprofile is not "master" and pWhichProfile is not the cREVGeneral[masterName] of tTarget and pWhichProfile is not among the lines of the cREVGeneral[profileList] of tTarget then

if gREVAutoCreateProfiles then revNewProfile pWhichProfile, tTarget

unlock screen

unlock messages

exit cREVGeneral

end if

if the cREVGeneral[profile] of tTarget is "Master" or the cREVGeneral[profile] of tTarget is empty or the cREVGeneral[profile] of tTarget is the cREVGeneral[masterName] of tTarget then

--its in master, going out

if not gREVProfileReadOnly then

set the customPropertySet of tTarget to cREVTempMaster

put the properties of tTarget into tTempArray

set the customProperties of tTarget to tTempArray

end if

else

--its another profile, going into or through master

set the customPropertySet of tTarget to "cREVMaster"

if the customKeys[cREVMaster] of tTarget is not empty then put the customProperties of tTarget into tCurrentMasterArray

if not gREVProfileReadOnly then

set the customPropertySet of tTarget to "cREVTempMaster"

put the customProperties of tTarget into tTempMasterArray

put the properties of tTarget into tCurrentPropertiesArray

--compare the temporary master with the current properties

--any changes:

--the original tempMaster value gets added to the current master array

--and the new value gets created in the current profile array

put keys(tCurrentPropertiesArray) into tCurrentPropertyKeys

set the caseSensitive to true

repeat for each line l in tCurrentPropertyKeys

if tTempMasterArray[l] is not tCurrentPropertiesArray[l] then

put tTempMasterArray[l] into tCurrentMasterArray[l]

put tCurrentPropertiesArray[l] into tProfileArray[l]

end if

end repeat

--transfer the current profile array to the object

set the customPropertySet of tTarget to "cREVDiverged" & the cREVGeneral[profile] of tTarget

set the customProperties of tTarget to tProfileArray

--now transfer the current master array to the master profile

set the customPropertySet of tTarget to cREVMaster

set the customProperties of tTarget to tCurrentMasterArray

end if

set the properties of tTarget to tCurrentMasterArray

set the cREVGeneral[profile] of tTarget to "Master"

end if

if pWhichProfile is not empty and pWhichProfile is not "master" and pWhichProfile is not the cREVGeneral[masterName] of tTarget then

set the cREVGeneral[profile] of tTarget to pWhichProfile

set the customPropertySet of tTarget to "cREVDiverged"&pWhichProfile

if the customKeys of tTarget is not empty then put the customProperties of tTarget into tTempArray1

set the properties of tTarget to tTempArray1

end if

set the customPropertySet of tTarget to tReturnSet

unlock screen

unlock messages

end cREVGeneral

function revAppVersion

return "1.1B1"

end revAppVersion

function revLoadedStacks pWhich

global gREVShowStacks

put the mainStacks into tMainStacks

switch pWhich

case "all"

break

case "preference"

if not gREVShowStacks

then put revFilterStacksList(tMainStacks) into tMainStacks --filters Revolution stacks

break

default

put revFilterStacksList(tMainStacks) into tMainStacks

end switch

put empty into tStacksInMemory

repeat for each line l in tMainStacks

if the substacks of stack l is empty

then put l & cr after tStacksInMemory

else put l & cr & the substacks of stack l & cr after tStacksInMemory

end repeat

delete last char of tStacksInMemory

return tStacksInMemory

end revLoadedStacks

function revFilterStacksList pStacks

global gREVPassMode --hack to deal with modes on startup

repeat for each line l in pStacks

if char 1 to 3 of l is not "rev" and l is not among the items of "Message Box,Home,answer dialog,ask dialog,script debugger,file selector" or (the mode of stack l is 1 and not gREVPassMode) then put l & cr after tReturnValue

end repeat

delete last char of tReturnValue

put false into gREVPassMode

return tReturnValue

end revFilterStacksList

--Path Conversion Functions

function revUnixFromMacPath thePath

if char 1 of thePath is colon then -- relative path

repeat while char 1 of thePath is colon

delete char 1 of thePath

add 1 to numberOfLevels -- keep track

end repeat

if numberOfLevels is 1 then

put ".:" before thePath

else -- more than one level

repeat for (numberOfLevels - 1) times

put "..:" before thePath

end repeat

end if

else -- absolute path

put colon before thePath

end if

replace colon with linefeed in thePath

replace "/" with colon in thePath

replace linefeed with "/" in thePath

return thePath

end revUnixFromMacPath

function revMacFromUnixPath thePath

replace colon with linefeed in thePath

if char 1 of thePath is "/" then delete char 1 of thePath

replace "/" with colon in thePath

replace linefeed with "/" in thePath

if char 1 to 2 of thePath is ".:" then delete char 1 of thePath

else if char 1 to 3 of thePath is "..:" then -- relative path

repeat while char 1 to 3 of thePath is "..:"

delete char 1 to 3 of thePath

add 1 to numberOfLevels

end repeat

repeat for numberOfLevels + 1 times

put ":" before thePath

end repeat

end if

return thePath

end revMacFromUnixPath

u I give upąE«yšon mouseUp hide field "All correct" hide field "data" set the loc of button "a" to "38,401" set the loc of button "b" to "76,401" set the loc of button "c" to "114,401" set the loc of button "d" to "152,401" set the loc of button "e" to "190,401" set the loc of button "f" to "229,401" set the loc of button "g" to "268,401" set the loc of button "h" to "305,401" set the loc of button "i" to "343,401" set the loc of button "j" to "380,401" giveAnswer end mouseUp ’’33€Fć! cREVGeneralscriptChecksumqĢ<†ļ–“=€j‹+ bookmarks revUniqueID 1008916338433 handlerListmouseUpscriptSelection char 61 to 60 prevHandlermouseUp tempScriptscriptŁ

on mouseUp

hide field "All correct"

hide field "data"

set the loc of button "a" to "38,401"

set the loc of button "b" to "76,401"

set the loc of button "c" to "114,401"

set the loc of button "d" to "152,401"

set the loc of button "e" to "190,401"

set the loc of button "f" to "229,401"

set the loc of button "g" to "268,401"

set the loc of button "h" to "305,401"

set the loc of button "i" to "343,401"

set the loc of button "j" to "380,401"

giveAnswer

end mouseUp

vReset this problemąE«yļon mouseUp hide field "All correct" hide field "data" set the loc of button "a" to "38,401" set the loc of button "b" to "76,401" set the loc of button "c" to "114,401" set the loc of button "d" to "152,401" set the loc of button "e" to "190,401" set the loc of button "f" to "229,401" set the loc of button "g" to "268,401" set the loc of button "h" to "305,401" set the loc of button "i" to "343,401" set the loc of button "j" to "380,401" startover end mouseUp ĢĢ33ĢĢ€Fź‡! cREVGeneralscriptChecksumwļ\ū})>ā0i†čJŲ|Į bookmarks revUniqueID 1008916457180 handlerListmouseUpscriptSelectionchar 469 to 468 prevHandlermouseUp tempScriptķ

on mouseUp

hide field "All correct"

hide field "data"

set the loc of button "a" to "38,401"

set the loc of button "b" to "76,401"

set the loc of button "c" to "114,401"

set the loc of button "d" to "152,401"

set the loc of button "e" to "190,401"

set the loc of button "f" to "229,401"

set the loc of button "g" to "268,401"

set the loc of button "h" to "305,401"

set the loc of button "i" to "343,401"

set the loc of button "j" to "380,401"

startover

end mouseUp

scriptõ

on mouseUp

hide field "All correct"

hide field "data"

set the loc of button "a" to "38,401"

set the loc of button "b" to "76,401"

set the loc of button "c" to "114,401"

set the loc of button "d" to "152,401"

set the loc of button "e" to "190,401"

set the loc of button "f" to "229,401"

set the loc of button "g" to "268,401"

set the loc of button "h" to "305,401"

set the loc of button "i" to "343,401"

set the loc of button "j" to "380,401"

startover

end mouseUp

w I give upąE«ykon mouseEnter lock screen show field "Define" put "This button will provide you with the solution. " into field "define" put return & "(Disabled for this help card.)" after field "define" set the height of field "define" to the formattedHeight of field "define" unlock screen end mouseEnter on mouseLeave hide field "define" end mouseLeave ’’33€—Ä~  cREVGeneralscriptChecksumœø_.”ŽmŒ#J‰į ˜† bookmarks revUniqueID 1008916338433 handlerListmouseEnter mouseLeavescriptSelection char 17 to 16 prevHandlermouseUp tempScriptscriptq

on mouseEnter

lock screen

show field "Define"

put "This button will provide you with the solution. " into field "define"

put return & "(Disabled for this help card.)" after field "define"

set the height of field "define" to the formattedHeight of field "define"

unlock screen

end mouseEnter

on mouseLeave

hide field "define"

end mouseLeave

xReset this problemąE«yfon mouseEnter lock screen show field "Define" put "This button restores the original problem. " into field "define" put return & "(Disabled for this help card.)" after field "define" set the height of field "define" to the formattedHeight of field "define" unlock screen end mouseEnter on mouseLeave hide field "define" end mouseLeave ĢĢ33ĢĢ€—ź~  cREVGeneralscriptChecksum ‰k‘ė»Ōe˜s’ēŃLÜ bookmarks revUniqueID 1008916457180 handlerListmouseEnter mouseLeavescriptSelectionchar 290 to 289 prevHandlermouseUp tempScriptscriptl

on mouseEnter

lock screen

show field "Define"

put "This button restores the original problem. " into field "define"

put return & "(Disabled for this help card.)" after field "define"

set the height of field "define" to the formattedHeight of field "define"

unlock screen

end mouseEnter

on mouseLeave

hide field "define"

end mouseLeave

yDefine!h'’’ĢĢ€`Ģ2heigh cREVGeneral revUniqueID 1009034622285 & 1Click this button to return to the puzzle card. zButtonsAndFieldsąA«„on mouseEnter lock screen show field "Define" put "Drag these red letter buttons to the yellow number fields. They may be repositioned to make corrections. " into field "define" put return & "(Disabled for this help card.)" after field "define" set the height of field "define" to the formattedHeight of field "define" unlock screen end mouseEnter on mouseLeave hide field "define" end mouseLeave €T’Z cREVGeneralscriptChecksum<‚śŚšs‚CĢ”œ+Öš bookmarks revUniqueID 1009037298797 handlerListmouseEnter mouseLeavescriptSelection char 17 to 16 prevHandler mouseEnter tempScriptscript«

on mouseEnter

lock screen

show field "Define"

put "Drag these red letter buttons to the yellow number fields. They may be repositioned to make corrections. " into field "define"

put return & "(Disabled for this help card.)" after field "define"

set the height of field "define" to the formattedHeight of field "define"

unlock screen

end mouseEnter

on mouseLeave

hide field "define"

end mouseLeave

{ NameGraphicCF€š©5œŗ¢«Ķ« cREVGeneral revUniqueID 1009213207279~ NameGraphicCF€·„5¹•æ†ź† cREVGeneral revUniqueID 1009213207279  New Field 1)€d¢ė cREVGeneral revUniqueID 1041634343133 ź %Drag letters to the correct numbers. @$ revMacCursorsˆݧž ’’’’ UGenevaź @§žėģ @§žī @§žš @§ž ņ @§ž õ @§ž÷ @§žł @§žū @§žż @§ž’ @§ž @§ž @§ž @§žn @§ž @§ž ė New Field 1 € T4 cREVGeneral revUniqueID 962367357173 ID 1 is pointer use systempaint bucket.gif€ D’’’’’’KGP€‚@‚ ‚`‚ ‚0‚(‚$‚<&‚^_‚O;‚'³‚ć‚ Ƃƒ‚‚:€‚Ą‚Ą‚Ђ؂؂! ‚0Ą‚@‚ ƒƒ‡P€‚@‚ ‚ą‚ą‚š‚ų‚ü‚?ž‚’‚ū‚?ó‚ć‚Ƃƒ‚‚ hand.gif D’’’’’’KGEƒƒƒƒƒĄ‚ 0‚‚‚‚‚‚‚‚š‚š†9„ƒƒƒƒƒĄ‚ š‚ š‚š‚š‚š‚ąŽFƒƒƒƒƒĄ‚š‚ų‚ų‚ų‚ų‚ų‚š‚š‚š† pencil.gif D’’’’’’KGBƒ€‚€‚ ƒ ƒƒƒ$ƒ$ƒHƒHƒ°ƒƒąƒĄƒ€ƒ2„ƒƒƒƒ ƒ ƒƒƒ0ƒ0ƒ@ƒ`Bƒ€‚€‚ƒƒƒƒ<ƒ<ƒxƒxƒšƒšƒąƒĄƒ€ƒ eyedropper.gif D’’’’’’KGB…ƒ>ƒ>ƒžƒü‚0‚0‚@‚€‚ƒ&ƒLƒ˜ƒ°ƒąƒ(™Ą‚Ą‚€‚ƒ ƒƒ0ƒ`ƒ@‡B…ƒ>ƒ>ƒžƒü‚š‚š‚Ą‚€‚ƒ>ƒ|ƒųƒšƒąƒc16€ D’’’’’’88KĄ‚š‚!ų‚Aü‚Aü‚ž‚ž‚’ž‚’‚’‚‚‚?‚0‚Ą†2„ƒƒ>ƒ>ƒ~ƒ~ˆüƒüƒųƒųƒšƒĄŠB ĄšD?ų‚ ü’żüP’ž‚ ’ž ’ž ’ž‚’žü’żü?ųBš Ą„c17 D’’’’’’88IĄ‚0‚ ‚p‚x<‚ü~‚‚ž‚’ž‚‚ž‚ü~‚x<‚p‚ ‚0‚Ą†<„Ą‚š‚ą‚Ą‚€‚‡ƒ€‚Ą‚ą‚š‚ĄŠAĄŌšą?ųü’żüP’ž‚ ’ž ’ž ’ž‚’žü’żü?ųBš Ą„c18 D’’’’’’88KĄ‚0‚?‚‚‚’‚’‚’ž‚ž‚ž‚Aü‚Aü‚!ų‚š‚Ą†2…Ąƒšƒųƒųƒüƒü†~ƒ~ƒ>ƒ>ƒƒ‹B ĄšD?ų‚ ü’żüP’ž‚ ’ž ’ž ’ž‚’žü’żü?ųBš Ą„c19 D’’’’’’88KĄ‚š‚?ų‚_ō‚O䂇‚ƒ‚‚‚ƒ‚‚‡Ā‚Oä‚_ō‚?ų‚š‚Ą†-Œ ‚0‚x<‚‚|‚~ü‚‚|‚x<‚0‚ ’B ĄšD?ų‚ ü’żüP’ž‚ ’ž ’ž ’ž‚’žü’żü?ųBš Ą„c20 D’’’’’’88KĄ‚š‚!ų‚Aü‚Aü‚ž‚ž‚’ž‚’‚’‚‚‚?‚0‚Ą†2„ƒƒ>ƒ>ƒ~ƒ~ˆüƒüƒųƒųƒšƒĄŠB ĄšD?ų‚ ü’żüP’ž‚ ’ž ’ž ’ž‚’žü’żü?ųBš Ą„c21 D’’’’’’88IĄ‚0‚ ‚p‚x<‚ü~‚‚ž‚’ž‚‚ž‚ü~‚x<‚p‚ ‚0‚Ą†<„Ą‚š‚ą‚Ą‚€‚‡ƒ€‚Ą‚ą‚š‚ĄŠB ĄšD?ų‚ ü’żüP’ž‚ ’ž ’ž ’ž‚’žü’żü?ųBš Ą„c22 D’’’’’’88KĄ‚0‚?‚‚‚’‚’‚’ž‚ž‚ž‚Aü‚Aü‚!ų‚š‚Ą†2…Ąƒšƒųƒųƒüƒü†~ƒ~ƒ>ƒ>ƒƒ‹B ĄšD?ų‚ ü’żüP’ž‚ ’ž ’ž ’ž‚’žü’żü?ųBš Ą„c23 D’’’’’’88KĄ‚š‚?ų‚_ō‚O䂇‚ƒ‚‚‚ƒ‚‚‡Ā‚Oä‚_ō‚?ų‚š‚Ą†-Œ ‚0‚x<‚‚|‚~ü‚‚|‚x<‚0‚ ’B ĄšD?ų‚ ü’żüP’ž‚ ’ž ’ž ’ž‚’žü’żü?ųBš Ą„nhdividecursor.gif D’’’’’’KG201582P€‚Ą‚ `‚ ‚ą‚’ž‚€‚’ž‚’ž‚€‚’ž‚ą‚ ‚ `‚Ą‚€‚0„ƒ€‚Ą‚‡üŠü†ƒĄ‚€‚‡P€‚Ą‚ą‚ą‚ą‚’ž‚’ž‚’ž‚’ž‚’ž‚’ž‚ą‚ą‚ą‚Ą‚€‚vdividecursor.gif D’’’’’’KG201578Ką‚ ‚ ‚ ‚=¼‚m¶‚ͳ‚…”‚ͳ‚m¶‚=¼‚ ‚ ‚ ‚ą†C„@‚@‚@‚@‚H‚2L‚z^‚2L‚H‚@‚@‚@‚@ŠHą‚ą‚ą‚ą‚?ü‚ž‚‚’‚‚’‚‚’‚ž‚?ü‚ą‚ą‚ą‚ą†textdragmac.gif D’’’’’’€KQ:Ąƒ ƒƒˆƒ„ƒ‚ƒƒ‚€‚€@‚ƒĄ‚’ƒ©ƒɃ‹D„@ƒ`ƒpƒxƒ|ƒ~ƒƒ€‚|ƒl@‚F ‚@‚‚ ‚@‚* ‚IĄƒąƒšƒųƒüƒžƒ’ƒ’€‚’Ą‚’Ą‚ž@‚ļ ‚Ļ@‚& ‚@‚* ‚ cREVGeneral revUniqueID 1002913836773textdragcopymac.gif D’’’’’’€K)?Ąƒ ƒ<‚ˆ$‚„ē‚‚‚‚‚€ē‚€d‚ƒü‚’ƒ©ƒɃ‹H„@ƒ`ƒp‚x‚|~‚‚~‚‚˜‚|ƒl@‚F ‚@‚‚ ‚@‚* ‚LĄƒąƒš<‚ų<‚ü’‚ž’‚‚’‚‚’‚’ü‚’ü‚ž@‚ļ ‚Ļ@‚& ‚@‚* ‚ cREVGeneral revUniqueID 1002913845385