#!/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€€€€€€ŹŹŹŹŹŹ€Xr<Ŕ 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& 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 ˙˙˙˙˙˙˙˙˙˙€<Ŕ cREVGeneral'()*+,-./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˙˙˙˙˙˙€<Ŕ cREVGeneral     üëîđńňóôőö÷řůúýţ˙"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‡! cREVGeneral revUniqueID 1006004324296 îdivisor,% black˙˙˙˙˙˙€@L@T$selectfalse foregroundblack cREVGeneral revUniqueID 1006133593056 ę EBJC đ dividend,% black˙˙˙˙˙˙€@ Br(selectfalse foregroundblack cREVGeneral revUniqueID 1006133622128 ę IBECBDE ń quotient,% black˙˙˙˙˙˙€@ł&^ selectfalse foregroundblack cREVGeneral revUniqueID 1006133622128 ę FEED ň products1,& black˙˙˙˙˙˙€@’ZT&selectfalse foregroundblack cREVGeneral revUniqueID 1006133663179 ę IAAE ó subtracts1,% black˙˙˙˙˙˙€@œvY&selectfalse foregroundblack cREVGeneral revUniqueID 1006133663179 ę DAEBôNew Graphic 1KBlack˙˙˙˙˙˙€™Fp›`ŸHH cREVGeneral revUniqueID 1006133943436 ő products2,& black˙˙˙˙˙˙€@šŽ\(selectfalse foregroundblack cREVGeneral revUniqueID 1006133663179 ę HCJI ö products3,& black˙˙˙˙˙˙€@˛žT(selectfalse foregroundblack cREVGeneral revUniqueID 1006133663179 ę HCJI ÷ products4,& black˙˙˙˙˙˙€@žôX*selectfalse foregroundblack cREVGeneral revUniqueID 1006133663179 ę ADEEC ř subtracts2,% black˙˙˙˙˙˙€@ą¨T&selectfalse foregroundblack cREVGeneral revUniqueID 1006133663179 ę BAGD ů subtracts3,% black˙˙˙˙˙˙€@ÂÚT&selectfalse foregroundblack cREVGeneral revUniqueID 1006133663179 ę ABIIE ú subtracts4,% black˙˙˙˙˙˙€@ĹR"selectfalse foregroundblack cREVGeneral revUniqueID 1006133663179 ę ADHIFŕ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 ˙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 revUniqueID 1006184846525 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~  cREVGeneral revUniqueID 1006004324296 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& cREVGeneral revUniqueID 1006326623675 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˙˙™™€—ž~  cREVGeneral revUniqueID 1006329440303 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.    RK `Ű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( cREVGeneral revUniqueID 1006530238693 ^ 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( cREVGeneral revUniqueID 1006552535120 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 cREVGeneral  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 cREVGeneral revUniqueID 1008776599606 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 cREVGeneral revUniqueID 1008776599606 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 cREVGeneral revUniqueID 969975272287srevProfileBackŕ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 cREVGeneral revUniqueID 969975157480 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 cREVGeneral revUniqueID 969975831067 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ć! cREVGeneral revUniqueID 1008916338433 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ę‡! cREVGeneral revUniqueID 1008916457180 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€—Ä~  cREVGeneral revUniqueID 1008916338433 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Ě̀—ę~  cREVGeneral revUniqueID 1008916457180 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 cREVGeneral revUniqueID 1009037298797 { 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