DIRECTORY HandCoding, HandCodingPseudos, HandCodingSupport, HandCodingComforts, DragOpsCross, DragOpsCrossUtils, LizardHeart, LizardTweaker, IO, ViewerIO; GenDFN: CEDAR PROGRAM IMPORTS HandCoding, HandCodingPseudos, HandCodingSupport, HandCodingComforts, DragOpsCrossUtils, LizardHeart, LizardTweaker, IO, ViewerIO = { fdfnImpl: HandCodingComforts.DataLabel; oname: INT = 0; cSIZEname: INT = HandCodingComforts.SizeOfINT; ochildren: INT = oname + cSIZEname; cSIZEchildren: INT = HandCodingComforts.SizeOfLongPointer; ocyclehead: INT = ochildren + cSIZEchildren; cSIZEcyclehead: INT = HandCodingComforts.SizeOfLongPointer; ocnext: INT = ocyclehead + cSIZEcyclehead; cSIZEcnext: INT = HandCodingComforts.SizeOfLongPointer; onlnext: INT = ocnext + cSIZEcnext; cSIZEnlnext: INT = HandCodingComforts.SizeOfLongPointer; otoporder: INT = onlnext + cSIZEnlnext; cSIZEtoporder: INT = HandCodingComforts.SizeOfINT; cSIZEnlType: INT = otoporder + cSIZEtoporder; cSIZEnlTypeRef: INT = HandCodingComforts.SizeOfLongPointer; oarcChildp: INT = 0; cSIZEarcChildp: INT = HandCodingComforts.SizeOfLongPointer; oarcChildlist: INT = oarcChildp + cSIZEarcChildp; cSIZEarcChildlist: INT = HandCodingComforts.SizeOfLongPointer; cSIZEarcType: INT = oarcChildlist + cSIZEarcChildlist; cSIZEarcTypeRef: INT = HandCodingComforts.SizeOfLongPointer; cDFNNaN: INT = 0; cDFNBusy: INT = -1; onlentryp: INT = 0; cSIZEnlentryp: INT = HandCodingComforts.SizeOfLongPointer; ocycletop: INT = onlentryp + cSIZEnlentryp; cSIZEcycletop: INT = HandCodingComforts.SizeOfINT; cSIZEdfnstruct: INT = ocycletop + cSIZEcycletop; cSIZEdfntype: INT = cSIZEdfnstruct; cDFNMaxDepth: INT = 100; cnlMax: INT = 101; carcMax: INT = 600; oFirst: INT = 0; odfnCounter: INT = oFirst; cSIZEdfnCounter: INT = HandCodingComforts.SizeOfINT; odfnDepth: INT = odfnCounter + cSIZEdfnCounter; cSIZEdfnDepth: INT = HandCodingComforts.SizeOfINT; onlAvail: INT = odfnDepth + cSIZEdfnDepth; cSIZEnlAvail: INT = HandCodingComforts.SizeOfINT; oarcAvail: INT = onlAvail + cSIZEnlAvail; cSIZEarcAvail: INT = HandCodingComforts.SizeOfINT; onodeWorld: INT = oarcAvail + cSIZEarcAvail; cSIZEnodeWorld: INT = HandCodingComforts.SizeOfLongPointer; odfnStack: INT = onodeWorld + cSIZEnodeWorld; cSIZEdfnStack: INT = cDFNMaxDepth * cSIZEdfntype; onlZone: INT = odfnStack + cSIZEdfnStack; cSIZEnlZone: INT = cnlMax * cSIZEnlType; oarcZone: INT = onlZone + cSIZEnlZone; cSIZEarcZone: INT = carcMax * cSIZEarcType; oLast: INT = oarcZone + cSIZEarcZone; out: ViewerIO.STREAM _ NIL; lDepthFirstNumber: HandCodingPseudos.Label; DepthFirstNumber: HandCodingComforts.Proc = { rparentp: HandCoding.RegSpec = HandCoding.reg0; lreturn: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCodingComforts.Prologue["dfnImpl.DepthFirstNumber", lDepthFirstNumber, 1]; { lcontinue: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRn [rparentp]; HandCodingComforts.iLFC [ldfnNumbered]; HandCodingComforts.iJNEj [HandCodingComforts.TRUEByte, lcontinue]; HandCodingComforts.LoadConstant [HandCodingComforts.TRUEValue]; HandCodingComforts.iJB [lreturn]; HandCodingPseudos.SetLabel[lcontinue]; }; { lcontinue: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRn [rparentp]; HandCodingComforts.iLFC [ldfnBusy]; HandCodingComforts.iJNEj [HandCodingComforts.TRUEByte, lcontinue]; HandCoding.drLRn [rparentp]; HandCodingComforts.iLFC [ldfnFindcycle]; HandCodingComforts.iJB [lreturn]; HandCodingPseudos.SetLabel[lcontinue]; }; { lcontinue: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRn [rparentp]; HandCodingComforts.iLFC [ldfnPreVisit]; HandCodingComforts.iJEQj [HandCodingComforts.TRUEByte, lcontinue]; HandCodingComforts.LoadConstant [HandCodingComforts.FALSEValue]; HandCodingComforts.iJB [lreturn]; HandCodingPseudos.SetLabel[lcontinue]; }; { rarcp: HandCoding.RegSpec = HandCoding.reg1; lagain: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; ltest: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRIn [rparentp, ochildren]; -- HandCoding.drMove [rarcp, HandCoding.popSrc]; HandCodingComforts.iJB [ltest]; HandCodingPseudos.SetLabel[lagain]; { lcontinue: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRIn [rarcp, oarcChildp]; HandCodingComforts.iLFC [lDepthFirstNumber]; HandCodingComforts.iJEQj [HandCodingComforts.TRUEByte, lcontinue]; HandCodingComforts.LoadConstant [HandCodingComforts.FALSEValue]; HandCodingComforts.iJB [lreturn]; HandCodingPseudos.SetLabel[lcontinue]; }; HandCoding.drRRI [rarcp, rarcp, oarcChildlist]; HandCodingPseudos.SetLabel[ltest]; HandCodingComforts.iRJNEj [HandCodingComforts.ShortNIL, rarcp, lagain]; HandCoding.drDIS []; }; { lcontinue: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRn [rparentp]; HandCodingComforts.iLFC [ldfnPostVisit]; HandCodingComforts.iJEQj [HandCodingComforts.TRUEByte, lcontinue]; HandCodingComforts.LoadConstant [HandCodingComforts.FALSEValue]; HandCodingComforts.iJB [lreturn]; HandCodingPseudos.SetLabel[lcontinue]; }; HandCodingComforts.LoadConstant [HandCodingComforts.TRUEValue]; HandCodingComforts.iJB [lreturn]; HandCodingPseudos.SetLabel[lreturn]; HandCoding.drSRn [HandCoding.reg0]; HandCodingPseudos.ProcedureExit[1]; }; ldfnPreVisit: HandCodingPseudos.Label; dfnPreVisit: HandCodingComforts.Proc = { rparentp: HandCoding.RegSpec = HandCoding.reg0; lreturn: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCodingComforts.Prologue["dfnImpl.dfnPreVisit", ldfnPreVisit, 1]; { rdfnImpl: HandCoding.RegSpec = HandCoding.reg1; HandCoding.drLIQB [fdfnImpl]; -- HandCoding.drMove [rdfnImpl, HandCoding.popSrc]; HandCoding.drLRIn [rdfnImpl, odfnDepth]; HandCoding.drADDB [1]; HandCoding.drSRIn [rdfnImpl, odfnDepth]; { lcontinue: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLIB [cDFNMaxDepth]; HandCoding.drLRIn [rdfnImpl, odfnDepth]; HandCodingComforts.iRJLTj [HandCodingComforts.ShortpopSrc, HandCoding.belowSrcPop, lcontinue]; -- HandCoding.drLRIn [rdfnImpl, oformat1]; -- HandCodingComforts.LoadConstant [HandCodingComforts.ConstantNIL]; -- HandCodingComforts.LoadConstant [HandCodingComforts.ConstantNIL]; -- HandCodingComforts.LoadConstant [HandCodingComforts.ConstantNIL]; -- HandCodingComforts.LoadConstant [HandCodingComforts.ConstantNIL]; -- HandCodingComforts.iDFC [lCmdIOOut]; HandCodingComforts.LoadConstant [HandCodingComforts.FALSEValue]; HandCodingComforts.iJB [lreturn]; HandCodingPseudos.SetLabel[lcontinue]; }; HandCoding.drLRn [rdfnImpl]; HandCoding.drADDB [odfnStack]; HandCoding.drLRIn [rdfnImpl, odfnDepth]; HandCoding.drQADD [topAtop, HandCoding.topSrc]; HandCoding.drADD []; HandCoding.drLRn [rparentp]; HandCoding.drWSB [onlentryp]; HandCoding.drLRn [rdfnImpl]; HandCoding.drADDB [odfnStack]; HandCoding.drLRIn [rdfnImpl, odfnDepth]; HandCoding.drQADD [topAtop, HandCoding.topSrc]; HandCoding.drADD []; HandCoding.drLRIn [rdfnImpl, odfnDepth]; HandCoding.drWSB [ocycletop]; HandCoding.drLRn [rparentp]; HandCodingComforts.LoadConstant [cDFNBusy]; HandCoding.drWSB [otoporder]; HandCodingComforts.LoadConstant [HandCodingComforts.TRUEValue]; HandCodingComforts.iJB [lreturn]; HandCodingPseudos.SetLabel[lreturn]; HandCoding.drSRn [HandCoding.reg0]; HandCodingPseudos.ProcedureExit[1]; }; }; ldfnNumbered: HandCodingPseudos.Label; dfnNumbered: HandCodingComforts.Proc = { rchildp: HandCoding.RegSpec = HandCoding.reg0; lreturn: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCodingComforts.Prologue["dfnImpl.dfnNumbered", ldfnNumbered, 1]; { lelse: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRIn [rchildp, otoporder]; HandCodingComforts.iJEQj [cDFNNaN, lelse]; HandCoding.drLRIn [rchildp, otoporder]; HandCodingComforts.iRJEQj [HandCodingComforts.ShortpopSrc, HandCodingComforts.ConstantMinus1, lelse]; HandCodingComforts.LoadConstant [HandCodingComforts.TRUEValue]; HandCodingComforts.iJB [lreturn]; HandCodingPseudos.SetLabel[lelse]; HandCodingComforts.LoadConstant [HandCodingComforts.FALSEValue]; HandCodingComforts.iJB [lreturn]; }; HandCodingPseudos.SetLabel[lreturn]; HandCoding.drSRn [HandCoding.reg0]; HandCodingPseudos.ProcedureExit[1]; }; ldfnBusy: HandCodingPseudos.Label; dfnBusy: HandCodingComforts.Proc = { rchildp: HandCoding.RegSpec = HandCoding.reg0; lreturn: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCodingComforts.Prologue["dfnImpl.dfnBusy", ldfnBusy, 1]; { lequalDFNNaN: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRIn [rchildp, otoporder]; HandCodingComforts.iJEQj [cDFNNaN, lequalDFNNaN]; HandCodingComforts.LoadConstant [HandCodingComforts.TRUEValue]; HandCodingComforts.iJB [lreturn]; HandCodingPseudos.SetLabel[lequalDFNNaN]; HandCodingComforts.LoadConstant [HandCodingComforts.FALSEValue]; HandCodingComforts.iJB [lreturn]; }; HandCodingPseudos.SetLabel[lreturn]; HandCoding.drSRn [HandCoding.reg0]; HandCodingPseudos.ProcedureExit[1]; }; ldfnFindcycle: HandCodingPseudos.Label; dfnFindcycle: HandCodingComforts.Proc = { rchildp: HandCoding.RegSpec = HandCoding.reg0; rresult: HandCoding.RegSpec = HandCoding.reg1; rdfnImpl: HandCoding.RegSpec = HandCoding.reg2; lreturn: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCodingComforts.Prologue["dfnImpl.dfnFindcycle", ldfnFindcycle, 1]; HandCodingComforts.LoadConstant [HandCodingComforts.FALSEValue]; -- HandCoding.drMove [rresult, HandCoding.popSrc]; HandCoding.drLIQB [fdfnImpl]; -- HandCoding.drMove [rdfnImpl, HandCoding.popSrc]; { rcycletop: HandCoding.RegSpec = HandCoding.reg3; rcycleheadp: HandCoding.RegSpec = HandCoding.reg4; rtailp: HandCoding.RegSpec = HandCoding.reg5; HandCodingComforts.LoadConstant [0]; -- HandCoding.drMove [rcycletop, HandCoding.popSrc]; HandCodingComforts.LoadConstant [HandCodingComforts.NILValue]; -- HandCoding.drMove [rcycleheadp, HandCoding.popSrc]; HandCodingComforts.LoadConstant [HandCodingComforts.NILValue]; -- HandCoding.drMove [tailp, HandCoding.popSrc]; { lafter: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; lagain: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; rinitial: HandCoding.RegSpec = HandCoding.reg6; HandCoding.drLRIn [rdfnImpl, odfnDepth]; -- HandCoding.drMove [rinitial, HandCoding.popSrc]; HandCodingComforts.iRJGTj [HandCodingComforts.Short0, rinitial, lafter]; HandCoding.drROR [rcycletop, rinitial, HandCodingComforts.Constant0]; HandCodingPseudos.SetLabel[lagain]; HandCoding.drLRn [rdfnImpl]; HandCoding.drADDB [odfnStack]; HandCoding.drLRn [rcycletop]; HandCoding.drQADD [topAtop, HandCoding.topSrc]; HandCoding.drADD []; HandCoding.drRB [onlentryp]; HandCoding.drSRn [rcycleheadp]; { lcontinue: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRn [rchildp]; HandCodingComforts.iRJNEj [HandCodingComforts.ShortpopSrc, rcycleheadp, lcontinue]; HandCodingComforts.iJB [lafter]; HandCodingPseudos.SetLabel[lcontinue]; }; { lcontinue: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRIn [rchildp, ocyclehead]; HandCodingComforts.iRJEQj [HandCodingComforts.ShortpopSrc, rchildp, lcontinue]; HandCoding.drLRIn [rchildp, ocyclehead]; HandCodingComforts.iRJNEj [HandCodingComforts.ShortpopSrc, rcycleheadp, lcontinue]; HandCodingComforts.iJB [lafter]; HandCodingPseudos.SetLabel[lcontinue]; }; HandCodingComforts.iRJGEj [HandCodingComforts.Short0, rcycletop, lafter]; HandCoding.drRSUB [rcycletop, rcycletop, HandCodingComforts.Constant1]; HandCodingComforts.iJB [lagain]; HandCodingPseudos.SetLabel[lafter]; HandCoding.drDIS []; }; { lcontinue: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCodingComforts.iRJLTj [HandCodingComforts.Short0, rcycletop, lcontinue]; HandCoding.drROR [rresult, HandCodingComforts.ConstantFALSE, HandCodingComforts.Constant0]; HandCodingComforts.iJB [lreturn]; HandCodingPseudos.SetLabel[lcontinue]; }; { lelse: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; lcontinue: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRIn [rdfnImpl, odfnDepth]; HandCodingComforts.iRJNEj [HandCodingComforts.ShortpopSrc, rcycletop, lelse]; HandCoding.drLRn [rchildp]; HandCodingComforts.iLFC [ldfnSelfCycle]; HandCoding.drSRn [rresult]; HandCodingComforts.iJB [lcontinue]; HandCodingPseudos.SetLabel[lelse]; { ltest: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; lagain: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drROR [rtailp, rcycleheadp, HandCodingComforts.Constant0]; HandCodingComforts.iJB [ltest]; HandCodingPseudos.SetLabel[lagain]; HandCoding.drRRI [rtailp, rtailp, ocnext]; HandCodingPseudos.SetLabel[ltest]; HandCoding.drLRIn [rtailp, ocnext]; HandCodingComforts.iJNEj [HandCodingComforts.NILValue, lagain]; }; { lcontinue: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRIn [rcycleheadp, ocyclehead]; HandCodingComforts.iRJEQj [HandCodingComforts.ShortpopSrc, rcycleheadp, lcontinue]; HandCoding.drRRI [rcycleheadp, rcycleheadp, ocyclehead]; HandCodingPseudos.SetLabel[lcontinue]; }; { lafter: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; lagain: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; rinitial: HandCoding.RegSpec = HandCoding.reg6; ritermination: HandCoding.RegSpec = HandCoding.reg7; rindex: HandCoding.RegSpec = HandCoding.reg8; HandCoding.drLRn [rcycletop]; HandCoding.drADDB [1]; -- HandCoding.drMove [rinitial, HandCoding.popSrc]; HandCoding.drLRIn [rdfnImpl, odfnDepth]; -- HandCoding.drMove [ritermination, HandCoding.popSrc]; HandCoding.drLRn [rinitial]; HandCodingComforts.iRJGTj [HandCodingComforts.ShortpopSrc, ritermination, lafter]; HandCoding.drLRn [rinitial]; -- HandCoding.drMove [rindex, HandCoding.popSrc]; HandCodingPseudos.SetLabel[lagain]; HandCoding.drLRn [rdfnImpl]; HandCoding.drADDB [odfnStack]; HandCoding.drRADD [HandCoding.pushDst, rindex, rindex]; HandCoding.drADD []; HandCoding.drRB [onlentryp]; HandCoding.drSRn [rchildp]; { lelse: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; lcontinue: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRIn [rchildp, ocyclehead]; HandCodingComforts.iRJNEj [HandCodingComforts.ShortpopSrc, rchildp, lelse]; HandCodingComforts.iWRI [rtailp, ocnext, rchildp]; HandCodingComforts.iWRI [rchildp, ocyclehead, rcycleheadp]; { ltest: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; lagain: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drROR [rtailp, rchildp, HandCodingComforts.Constant0]; HandCodingComforts.iJB [ltest]; HandCodingPseudos.SetLabel[lagain]; HandCoding.drLRIn [rtailp, ocnext]; HandCoding.drLRn [rcycleheadp]; HandCoding.drWSB [ocyclehead]; HandCoding.drRRI [rtailp, rtailp, ocnext]; HandCodingPseudos.SetLabel[ltest]; HandCoding.drLRIn [rtailp, ocnext]; HandCodingComforts.iJNEj [HandCodingComforts.NILByte, lagain]; }; HandCodingComforts.iJB [lcontinue]; HandCodingPseudos.SetLabel[lelse]; { lcontinue: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRIn [rchildp, ocyclehead]; HandCodingComforts.iRJEQj [HandCodingComforts.ShortpopSrc, rcycleheadp, lcontinue]; HandCodingPseudos.SetLabel[lcontinue]; }; HandCodingPseudos.SetLabel[lcontinue]; }; HandCoding.drLRn [rindex]; HandCodingComforts.iRJGEj [HandCodingComforts.ShortpopSrc, ritermination, lafter]; HandCoding.drRADD [rindex, rindex, HandCodingComforts.Constant1]; HandCodingComforts.iJB [lagain]; HandCodingPseudos.SetLabel[lafter]; }; HandCoding.drROR [rresult,HandCodingComforts.ConstantTRUE,HandCodingComforts.Constant0]; HandCodingPseudos.SetLabel[lcontinue]; }; HandCodingPseudos.SetLabel[lreturn]; HandCoding.drROR [HandCoding.reg0, rresult, HandCodingComforts.Constant0]; HandCodingPseudos.ProcedureExit[1]; }; }; ldfnSelfCycle: HandCodingPseudos.Label; dfnSelfCycle: HandCodingComforts.Proc = { rparentp: HandCoding.RegSpec = HandCoding.reg0; lreturn: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCodingComforts.Prologue["dfnImpl.dfnSelfCycle", ldfnSelfCycle, 1]; HandCodingComforts.LoadConstant [HandCodingComforts.TRUEByte]; HandCodingComforts.iJB [lreturn]; HandCodingPseudos.SetLabel[lreturn]; HandCoding.drSRn [HandCoding.reg0]; HandCodingPseudos.ProcedureExit[1]; }; ldfnPostVisit: HandCodingPseudos.Label; dfnPostVisit: HandCodingComforts.Proc = { rparentp: HandCoding.RegSpec = HandCoding.reg0; rdfnImpl: HandCoding.RegSpec = HandCoding.reg1; lreturn: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCodingComforts.Prologue["dfnImpl.dfnPostVisit", ldfnPostVisit, 1]; HandCoding.drLIQB [fdfnImpl]; -- HandCoding.drMove [rdfnImpl, HandCoding.popSrc]; { lelse: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; lcontinue: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRIn [rparentp, ocyclehead]; HandCodingComforts.iRJNEj [HandCodingComforts.ShortpopSrc, rparentp, lelse]; HandCoding.drLRIn [rdfnImpl, odfnCounter]; HandCoding.drADDB [1]; HandCoding.drSRIn [rdfnImpl, odfnCounter]; { rmemberp: HandCoding.RegSpec = HandCoding.reg2; ltest: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; lagain: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRn [rparentp]; -- HandCoding.drMove [rmemberp, HandCoding.popSrc]; HandCodingPseudos.SetLabel[lagain]; HandCoding.drLRIn [rdfnImpl, odfnCounter]; HandCoding.drSRIn [rmemberp, otoporder]; HandCoding.drRRI [rmemberp, rmemberp, ocnext]; HandCodingPseudos.SetLabel[ltest]; HandCodingComforts.iRJNEj [HandCodingComforts.ShortNIL, rmemberp, lagain]; HandCoding.drDIS []; }; HandCodingComforts.iJB [lcontinue]; HandCodingPseudos.SetLabel[lelse]; HandCodingPseudos.SetLabel[lcontinue]; }; HandCoding.drLRIn [rdfnImpl, odfnDepth]; HandCoding.drSUBB [1]; HandCoding.drSRIn [rdfnImpl, odfnDepth]; HandCodingComforts.LoadConstant [HandCodingComforts.TRUEByte]; HandCodingComforts.iJB [lreturn]; HandCodingPseudos.SetLabel[lreturn]; HandCoding.drSRn [HandCoding.reg0]; HandCodingPseudos.ProcedureExit[1]; }; lprintname: HandCodingPseudos.Label; printname: HandCodingComforts.Proc = { rnlentryp: HandCoding.RegSpec = HandCoding.reg0; lreturn: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCodingComforts.Prologue["dfnImpl.printname", lprintname, 1]; HandCoding.drLRIn [rnlentryp, oname]; HandCodingComforts.iJB [lreturn]; HandCodingPseudos.SetLabel[lreturn]; HandCoding.drSRn [HandCoding.reg0]; HandCodingPseudos.ProcedureExit[1]; }; lAddNode: HandCodingPseudos.Label; AddNode: HandCodingComforts.Proc = { rname: HandCoding.RegSpec = HandCoding.reg0; rdfnImpl: HandCoding.RegSpec = HandCoding.reg1; lreturn: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCodingComforts.Prologue["dfnImpl.AddNode", lAddNode, 1]; HandCoding.drLIQB [fdfnImpl]; -- HandCoding.drMove [rdfnImpl, HandCoding.popSrc]; { rnode: HandCoding.RegSpec = HandCoding.reg2; HandCoding.drLRn [rdfnImpl]; HandCoding.drADDDB [onlZone]; HandCoding.drLRIn [rdfnImpl, onlAvail]; HandCoding.drLIB [cSIZEnlType]; HandCodingComforts.iDFC [HandCodingPseudos.GetGlobalLabel["Basics.MixedMultiply"]]; HandCoding.drADD []; -- HandCoding.drMove [rnode, HandCoding.popSrc]; HandCoding.drLRIn [rdfnImpl, onlAvail]; HandCoding.drADDB [1]; HandCoding.drSRIn [rdfnImpl, onlAvail]; HandCodingComforts.iWRI [rnode, oname, rname]; HandCodingComforts.LoadConstant [HandCodingComforts.NILValue]; HandCoding.drSRIn [rnode, ochildren]; HandCodingComforts.iWRI [rnode, ocyclehead, rnode]; HandCodingComforts.LoadConstant [HandCodingComforts.NILValue]; HandCoding.drSRIn [rnode, ocnext]; HandCoding.drLRIn [rdfnImpl, onodeWorld]; HandCoding.drSRIn [rnode, onlnext]; HandCodingComforts.LoadConstant [0]; HandCoding.drSRIn [rnode, otoporder]; HandCodingComforts.iWRI [rdfnImpl, onodeWorld, rnode]; HandCoding.drLRn [rnode]; HandCodingComforts.iJB [lreturn]; }; HandCodingPseudos.SetLabel[lreturn]; HandCoding.drSRn [HandCoding.reg0]; HandCodingPseudos.ProcedureExit[1]; }; lNodeLookup: HandCodingPseudos.Label; NodeLookup: HandCodingComforts.Proc = { rname: HandCoding.RegSpec = HandCoding.reg0; rdfnImpl: HandCoding.RegSpec = HandCoding.reg1; lreturn: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCodingComforts.Prologue["dfnImpl.NodeLookup", lNodeLookup, 1]; HandCoding.drLIQB [fdfnImpl]; -- HandCoding.drMove [rdfnImpl, HandCoding.popSrc]; { rnodep: HandCoding.RegSpec = HandCoding.reg2; lagain: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; ltest: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRIn [rdfnImpl, onodeWorld]; -- HandCoding.drMove [rnodep, HandCoding.popSrc]; HandCodingComforts.iJB [ltest]; HandCodingPseudos.SetLabel[lagain]; { lcontinue: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRIn [rnodep, oname]; HandCodingComforts.iRJNEj [HandCodingComforts.ShortpopSrc, rname, lcontinue]; HandCoding.drLRn [rnodep]; HandCodingComforts.iJB [lreturn]; HandCodingPseudos.SetLabel[lcontinue]; }; HandCoding.drRRI [rnodep, rnodep, onlnext]; HandCodingPseudos.SetLabel[ltest]; HandCodingComforts.iRJNEj [HandCodingComforts.ShortNIL, rnodep, lagain]; HandCoding.drDIS []; }; HandCodingComforts.LoadConstant [HandCodingComforts.NILValue]; HandCodingComforts.iJB [lreturn]; HandCodingPseudos.SetLabel[lreturn]; HandCoding.drSRn [HandCoding.reg0]; HandCodingPseudos.ProcedureExit[1]; }; lAddArc: HandCodingPseudos.Label; AddArc: HandCodingComforts.Proc = { rfrom: HandCoding.RegSpec = HandCoding.reg0; rto: HandCoding.RegSpec = HandCoding.reg1; rdfnImpl: HandCoding.RegSpec = HandCoding.reg2; lreturn: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCodingComforts.Prologue["dfnImpl.AddArc", lAddArc, 2]; HandCoding.drLIQB [fdfnImpl]; -- HandCoding.drMove [rdfnImpl, HandCoding.popSrc]; { rfromNode: HandCoding.RegSpec = HandCoding.reg3; rtoNode: HandCoding.RegSpec = HandCoding.reg4; HandCoding.drLRn [rfrom]; HandCodingComforts.iLFC [lNodeLookup]; -- HandCoding.drMove [rfromNode, HandCoding.popSrc]; HandCoding.drLRn [rto]; HandCodingComforts.iLFC [lNodeLookup]; -- HandCoding.drMove [rtoNode, HandCoding.popSrc]; { lcontinue: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCodingComforts.iRJEQj [HandCodingComforts.ShortNIL, rfromNode, lcontinue]; HandCodingComforts.iRJEQj [HandCodingComforts.ShortNIL, rtoNode, lcontinue]; { rarcp: HandCoding.RegSpec = HandCoding.reg5; HandCoding.drLRn [rdfnImpl]; HandCoding.drADDDB [oarcZone]; HandCoding.drLRIn [rdfnImpl, oarcAvail]; HandCoding.drQADD [topAtop, HandCoding.topSrc]; HandCoding.drADD []; -- HandCoding.drMove [rarcp, HandCoding.popSrc]; HandCoding.drLRIn [rdfnImpl, oarcAvail]; HandCoding.drADDB [1]; HandCoding.drSRIn [rdfnImpl, oarcAvail]; HandCodingComforts.iWRI [rarcp, oarcChildp, rtoNode]; HandCoding.drLRIn [rfromNode, ochildren]; HandCoding.drSRIn [rarcp, oarcChildlist]; HandCodingComforts.iWRI [rfromNode, ochildren, rarcp]; HandCoding.drLRn [rarcp]; HandCodingComforts.iJB [lreturn]; HandCodingPseudos.SetLabel[lcontinue]; }; }; HandCodingComforts.LoadConstant [HandCodingComforts.NILValue]; HandCodingComforts.iJB [lreturn]; }; HandCodingPseudos.SetLabel[lreturn]; HandCoding.drSRn [HandCoding.reg0]; HandCodingPseudos.ProcedureExit[1]; }; lPrintNode: HandCodingPseudos.Label; PrintNode: HandCodingComforts.Proc = { rnodep: HandCoding.RegSpec = HandCoding.reg0; HandCodingComforts.Prologue["dfnImpl.PrintNode", lPrintNode, 1]; HandCoding.drLRIn [rnodep, oname]; HandCodingSupport.OQBcommon[x060b, DragOpsCrossUtils.IntToWord[1]]; HandCoding.drDIS []; HandCoding.drLRIn [rnodep, otoporder]; HandCodingSupport.OQBcommon[x060b, DragOpsCrossUtils.IntToWord[0]]; HandCoding.drDIS []; HandCodingPseudos.ProcedureExit[0]; }; lPrintArc: HandCodingPseudos.Label; PrintArc: HandCodingComforts.Proc = { rarcp: HandCoding.RegSpec = HandCoding.reg0; HandCodingComforts.Prologue["dfnImpl.PrintArc", lPrintArc, 1]; HandCoding.drLRIn [rarcp, oarcChildp]; HandCodingComforts.iLFC [lPrintNode]; HandCodingPseudos.ProcedureExit[0]; }; lPrintNodeWorld: HandCodingPseudos.Label; PrintNodeWorld: HandCodingComforts.Proc = { rdfnImpl: HandCoding.RegSpec = HandCoding.reg0; HandCodingComforts.Prologue["dfnImpl.PrintNodeWorld", lPrintNodeWorld, 0]; HandCoding.drLIQB [fdfnImpl]; -- HandCoding.drMove [rdfnImpl, HandCoding.popSrc]; { rnodep: HandCoding.RegSpec = HandCoding.reg1; lagain: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; ltest: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCoding.drLRIn [rdfnImpl, onodeWorld]; -- HandCoding.drMove [rnodep, HandCoding.popSrc]; HandCodingComforts.iJB [ltest]; HandCodingPseudos.SetLabel[lagain]; HandCoding.drLRn [rnodep]; HandCodingComforts.iLFC [lPrintNode]; HandCoding.drRRI [rnodep, rnodep, onlnext]; HandCodingPseudos.SetLabel[ltest]; HandCodingComforts.iRJNEj [HandCodingComforts.ShortNIL, rnodep, lagain]; HandCoding.drDIS []; }; HandCodingPseudos.ProcedureExit[0]; }; lDoIt: HandCodingPseudos.Label; DoIt: HandCodingComforts.Proc = { rresult: HandCoding.RegSpec = HandCoding.reg0; lreturn: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; lStartHere: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; lStopHere: HandCodingPseudos.Label = HandCodingPseudos.GenLabel[]; HandCodingComforts.Prologue["dfnImpl.DoIt", lDoIt, 0]; HandCoding.drLIB [ 1]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 2]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 3]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 4]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 5]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 6]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 7]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 8]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 9]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 10]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 11]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 12]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 13]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 14]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 15]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 16]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 17]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 18]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 19]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 20]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 21]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 22]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 23]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 24]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 25]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 26]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 27]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 28]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 29]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 30]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 31]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 32]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 33]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 34]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 35]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 36]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 37]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 38]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 39]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 40]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 41]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 42]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 43]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 44]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 45]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 46]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 47]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 48]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 49]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 50]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 51]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 52]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 53]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 54]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 55]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 56]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 57]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 58]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 59]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 60]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 61]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 62]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 63]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 64]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 65]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 66]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 67]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 68]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 69]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 70]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 71]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 72]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 73]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 74]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 75]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 76]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 77]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 78]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 79]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 80]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 81]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 82]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 83]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 84]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 85]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 86]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 87]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 88]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 89]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 90]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 91]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 92]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 93]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 94]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 95]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 96]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 97]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 98]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 99]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [100]; HandCodingComforts.iLFC [lAddNode]; HandCoding.drDIS []; HandCoding.drLIB [ 1]; HandCoding.drLIB [ 2]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 1]; HandCoding.drLIB [ 3]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 1]; HandCoding.drLIB [ 4]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 1]; HandCoding.drLIB [ 5]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 2]; HandCoding.drLIB [ 6]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 2]; HandCoding.drLIB [ 7]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 4]; HandCoding.drLIB [ 8]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 4]; HandCoding.drLIB [ 9]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 4]; HandCoding.drLIB [ 10]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 4]; HandCoding.drLIB [ 11]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 5]; HandCoding.drLIB [ 12]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 5]; HandCoding.drLIB [ 12]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 5]; HandCoding.drLIB [ 13]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 5]; HandCoding.drLIB [ 14]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 5]; HandCoding.drLIB [ 15]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 6]; HandCoding.drLIB [ 16]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 6]; HandCoding.drLIB [ 17]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 7]; HandCoding.drLIB [ 18]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 7]; HandCoding.drLIB [ 4]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 8]; HandCoding.drLIB [ 19]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 8]; HandCoding.drLIB [ 20]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 8]; HandCoding.drLIB [ 13]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 8]; HandCoding.drLIB [ 21]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 8]; HandCoding.drLIB [ 22]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 9]; HandCoding.drLIB [ 23]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 9]; HandCoding.drLIB [ 6]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 10]; HandCoding.drLIB [ 24]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 10]; HandCoding.drLIB [ 25]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 10]; HandCoding.drLIB [ 26]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 10]; HandCoding.drLIB [ 27]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 10]; HandCoding.drLIB [ 4]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 11]; HandCoding.drLIB [ 21]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 11]; HandCoding.drLIB [ 27]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 11]; HandCoding.drLIB [ 9]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 12]; HandCoding.drLIB [ 28]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 12]; HandCoding.drLIB [ 29]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 12]; HandCoding.drLIB [ 30]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 12]; HandCoding.drLIB [ 31]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 13]; HandCoding.drLIB [ 32]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 13]; HandCoding.drLIB [ 33]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 13]; HandCoding.drLIB [ 34]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 13]; HandCoding.drLIB [ 35]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 13]; HandCoding.drLIB [ 36]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 15]; HandCoding.drLIB [ 7]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 16]; HandCoding.drLIB [ 37]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 16]; HandCoding.drLIB [ 33]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 16]; HandCoding.drLIB [ 38]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 16]; HandCoding.drLIB [ 39]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 17]; HandCoding.drLIB [ 40]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 17]; HandCoding.drLIB [ 41]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 18]; HandCoding.drLIB [ 24]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 18]; HandCoding.drLIB [ 42]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 19]; HandCoding.drLIB [ 43]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 19]; HandCoding.drLIB [ 20]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 19]; HandCoding.drLIB [ 25]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 19]; HandCoding.drLIB [ 44]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 20]; HandCoding.drLIB [ 45]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 20]; HandCoding.drLIB [ 46]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 20]; HandCoding.drLIB [ 26]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 22]; HandCoding.drLIB [ 40]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 22]; HandCoding.drLIB [ 47]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 22]; HandCoding.drLIB [ 34]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 22]; HandCoding.drLIB [ 48]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 22]; HandCoding.drLIB [ 49]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 22]; HandCoding.drLIB [ 12]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 23]; HandCoding.drLIB [ 33]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 23]; HandCoding.drLIB [ 50]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 23]; HandCoding.drLIB [ 41]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 24]; HandCoding.drLIB [ 51]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 24]; HandCoding.drLIB [ 52]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 24]; HandCoding.drLIB [ 53]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 24]; HandCoding.drLIB [ 11]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 25]; HandCoding.drLIB [ 4]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 26]; HandCoding.drLIB [ 29]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 26]; HandCoding.drLIB [ 54]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 26]; HandCoding.drLIB [ 12]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 27]; HandCoding.drLIB [ 55]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 27]; HandCoding.drLIB [ 56]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 27]; HandCoding.drLIB [ 57]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 28]; HandCoding.drLIB [ 58]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 28]; HandCoding.drLIB [ 38]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 28]; HandCoding.drLIB [ 59]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 28]; HandCoding.drLIB [ 52]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 29]; HandCoding.drLIB [ 32]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 29]; HandCoding.drLIB [ 60]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 29]; HandCoding.drLIB [ 47]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 29]; HandCoding.drLIB [ 61]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 29]; HandCoding.drLIB [ 50]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 29]; HandCoding.drLIB [ 21]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 30]; HandCoding.drLIB [ 62]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 30]; HandCoding.drLIB [ 63]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 30]; HandCoding.drLIB [ 64]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 31]; HandCoding.drLIB [ 33]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 31]; HandCoding.drLIB [ 65]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 31]; HandCoding.drLIB [ 46]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 31]; HandCoding.drLIB [ 63]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 31]; HandCoding.drLIB [ 40]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 31]; HandCoding.drLIB [ 8]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 32]; HandCoding.drLIB [ 45]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 32]; HandCoding.drLIB [ 66]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 32]; HandCoding.drLIB [ 20]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 33]; HandCoding.drLIB [ 53]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 33]; HandCoding.drLIB [ 67]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 33]; HandCoding.drLIB [ 28]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 34]; HandCoding.drLIB [ 47]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 34]; HandCoding.drLIB [ 39]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 34]; HandCoding.drLIB [ 38]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 34]; HandCoding.drLIB [ 57]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 34]; HandCoding.drLIB [ 68]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 35]; HandCoding.drLIB [ 69]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 35]; HandCoding.drLIB [ 45]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 35]; HandCoding.drLIB [ 40]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 35]; HandCoding.drLIB [ 70]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 35]; HandCoding.drLIB [ 71]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 36]; HandCoding.drLIB [ 42]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 36]; HandCoding.drLIB [ 64]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 36]; HandCoding.drLIB [ 61]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 36]; HandCoding.drLIB [ 48]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 36]; HandCoding.drLIB [ 63]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 36]; HandCoding.drLIB [ 13]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 37]; HandCoding.drLIB [ 72]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 37]; HandCoding.drLIB [ 45]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 37]; HandCoding.drLIB [ 16]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 38]; HandCoding.drLIB [ 23]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 39]; HandCoding.drLIB [ 73]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 39]; HandCoding.drLIB [ 74]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 39]; HandCoding.drLIB [ 75]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 39]; HandCoding.drLIB [ 76]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 40]; HandCoding.drLIB [ 44]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 40]; HandCoding.drLIB [ 53]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 40]; HandCoding.drLIB [ 63]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 40]; HandCoding.drLIB [ 77]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 42]; HandCoding.drLIB [ 78]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 42]; HandCoding.drLIB [ 79]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 42]; HandCoding.drLIB [ 80]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 43]; HandCoding.drLIB [ 81]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 43]; HandCoding.drLIB [ 50]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 43]; HandCoding.drLIB [ 66]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 43]; HandCoding.drLIB [ 50]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 43]; HandCoding.drLIB [ 82]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 44]; HandCoding.drLIB [ 49]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 44]; HandCoding.drLIB [ 73]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 44]; HandCoding.drLIB [ 57]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 44]; HandCoding.drLIB [ 76]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 44]; HandCoding.drLIB [ 81]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 44]; HandCoding.drLIB [ 10]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 45]; HandCoding.drLIB [ 11]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 46]; HandCoding.drLIB [ 83]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 46]; HandCoding.drLIB [ 2]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 47]; HandCoding.drLIB [ 79]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 47]; HandCoding.drLIB [ 84]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 47]; HandCoding.drLIB [ 73]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 48]; HandCoding.drLIB [ 61]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 48]; HandCoding.drLIB [ 85]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 48]; HandCoding.drLIB [ 69]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 48]; HandCoding.drLIB [ 35]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 49]; HandCoding.drLIB [ 44]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 50]; HandCoding.drLIB [ 21]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 52]; HandCoding.drLIB [ 71]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 52]; HandCoding.drLIB [ 86]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 54]; HandCoding.drLIB [ 87]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 54]; HandCoding.drLIB [ 84]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 54]; HandCoding.drLIB [ 68]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 54]; HandCoding.drLIB [ 83]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 54]; HandCoding.drLIB [ 71]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 55]; HandCoding.drLIB [ 63]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 55]; HandCoding.drLIB [ 88]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 55]; HandCoding.drLIB [ 69]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 56]; HandCoding.drLIB [ 82]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 56]; HandCoding.drLIB [ 89]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 56]; HandCoding.drLIB [ 38]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 57]; HandCoding.drLIB [ 78]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 57]; HandCoding.drLIB [ 84]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 57]; HandCoding.drLIB [ 20]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 59]; HandCoding.drLIB [ 90]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 59]; HandCoding.drLIB [ 91]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 60]; HandCoding.drLIB [ 92]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 61]; HandCoding.drLIB [ 86]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 62]; HandCoding.drLIB [ 65]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 62]; HandCoding.drLIB [ 86]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 62]; HandCoding.drLIB [ 20]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 63]; HandCoding.drLIB [ 80]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 63]; HandCoding.drLIB [ 22]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 64]; HandCoding.drLIB [ 88]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 65]; HandCoding.drLIB [ 93]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 65]; HandCoding.drLIB [ 75]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 65]; HandCoding.drLIB [ 69]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 65]; HandCoding.drLIB [ 67]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 65]; HandCoding.drLIB [ 85]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 65]; HandCoding.drLIB [ 13]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 66]; HandCoding.drLIB [ 72]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 66]; HandCoding.drLIB [ 49]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 67]; HandCoding.drLIB [ 83]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 67]; HandCoding.drLIB [ 90]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 67]; HandCoding.drLIB [ 94]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 67]; HandCoding.drLIB [ 91]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 67]; HandCoding.drLIB [ 20]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 68]; HandCoding.drLIB [ 92]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 68]; HandCoding.drLIB [ 79]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 68]; HandCoding.drLIB [ 69]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 68]; HandCoding.drLIB [ 73]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 68]; HandCoding.drLIB [ 95]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 68]; HandCoding.drLIB [ 19]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 69]; HandCoding.drLIB [ 79]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 70]; HandCoding.drLIB [ 88]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 70]; HandCoding.drLIB [ 61]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 71]; HandCoding.drLIB [ 95]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 71]; HandCoding.drLIB [ 2]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 72]; HandCoding.drLIB [ 61]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 73]; HandCoding.drLIB [ 75]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 73]; HandCoding.drLIB [ 67]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 74]; HandCoding.drLIB [ 93]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 74]; HandCoding.drLIB [ 88]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 74]; HandCoding.drLIB [ 90]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 75]; HandCoding.drLIB [ 85]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 75]; HandCoding.drLIB [ 96]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 75]; HandCoding.drLIB [ 96]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 75]; HandCoding.drLIB [ 29]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 76]; HandCoding.drLIB [ 49]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 77]; HandCoding.drLIB [ 97]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 77]; HandCoding.drLIB [ 95]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 77]; HandCoding.drLIB [ 94]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 77]; HandCoding.drLIB [ 83]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 77]; HandCoding.drLIB [ 76]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 78]; HandCoding.drLIB [ 95]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 78]; HandCoding.drLIB [ 92]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 78]; HandCoding.drLIB [ 85]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 78]; HandCoding.drLIB [ 93]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 79]; HandCoding.drLIB [ 89]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 79]; HandCoding.drLIB [ 80]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 80]; HandCoding.drLIB [ 91]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 80]; HandCoding.drLIB [ 83]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 83]; HandCoding.drLIB [ 98]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 83]; HandCoding.drLIB [ 93]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 84]; HandCoding.drLIB [ 91]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 84]; HandCoding.drLIB [ 87]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 84]; HandCoding.drLIB [ 97]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 84]; HandCoding.drLIB [ 94]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 85]; HandCoding.drLIB [ 96]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 86]; HandCoding.drLIB [ 91]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 86]; HandCoding.drLIB [ 96]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 86]; HandCoding.drLIB [ 88]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 86]; HandCoding.drLIB [ 97]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 86]; HandCoding.drLIB [ 92]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 87]; HandCoding.drLIB [ 98]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 87]; HandCoding.drLIB [ 95]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 87]; HandCoding.drLIB [ 99]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 87]; HandCoding.drLIB [ 95]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 87]; HandCoding.drLIB [ 22]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 88]; HandCoding.drLIB [ 22]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 89]; HandCoding.drLIB [ 99]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 89]; HandCoding.drLIB [ 90]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 89]; HandCoding.drLIB [ 96]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 89]; HandCoding.drLIB [ 92]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 89]; HandCoding.drLIB [ 93]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 90]; HandCoding.drLIB [ 92]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 91]; HandCoding.drLIB [ 2]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 92]; HandCoding.drLIB [ 32]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 93]; HandCoding.drLIB [ 96]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 93]; HandCoding.drLIB [ 96]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 93]; HandCoding.drLIB [ 97]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 93]; HandCoding.drLIB [ 97]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 93]; HandCoding.drLIB [ 95]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 94]; HandCoding.drLIB [ 99]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 94]; HandCoding.drLIB [ 97]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 94]; HandCoding.drLIB [100]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 94]; HandCoding.drLIB [ 95]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 94]; HandCoding.drLIB [ 98]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 95]; HandCoding.drLIB [ 96]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 95]; HandCoding.drLIB [ 97]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 95]; HandCoding.drLIB [ 98]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 95]; HandCoding.drLIB [ 8]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 96]; HandCoding.drLIB [ 99]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 96]; HandCoding.drLIB [ 97]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 96]; HandCoding.drLIB [ 33]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 97]; HandCoding.drLIB [ 99]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 97]; HandCoding.drLIB [ 53]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 98]; HandCoding.drLIB [ 99]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [ 99]; HandCoding.drLIB [ 86]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCoding.drLIB [100]; HandCoding.drLIB [ 37]; HandCodingComforts.iLFC [lAddArc]; HandCoding.drDIS []; HandCodingPseudos.SetLabel[lStartHere]; HandCodingPseudos.MakeLabelGlobal["dfnImpl.StartHere", lStartHere]; HandCodingComforts.LoadConstant [1]; HandCodingComforts.iLFC [lNodeLookup]; HandCodingComforts.iLFC [lDepthFirstNumber]; HandCoding.drSRn [rresult]; HandCodingPseudos.SetLabel[lStopHere]; HandCodingPseudos.MakeLabelGlobal["dfnImpl.StopHere", lStopHere]; HandCodingComforts.iLFC [lPrintNodeWorld]; HandCodingPseudos.SetLabel[lreturn]; -- HandCoding.drROR [HandCoding.reg0, rresult, HandCodingComforts.Constant0]; HandCodingPseudos.ProcedureExit[0]; }; lInitializeDfnImplGlobalFrame: HandCodingPseudos.Label; InitializeDfnImplGlobalFrame: HandCodingComforts.Proc = { rdfnImpl: HandCoding.RegSpec = HandCoding.reg0; HandCodingComforts.Prologue["dfnImpl.InitializeDfnImplGlobalFrame", lInitializeDfnImplGlobalFrame, 0]; HandCoding.drLIQB [fdfnImpl]; -- HandCoding.drMove [rdfnImpl, HandCoding.popSrc]; HandCodingComforts.LoadConstant [0]; HandCoding.drSRIn [rdfnImpl, odfnDepth]; HandCodingComforts.LoadConstant [0]; HandCoding.drSRIn [rdfnImpl, odfnCounter]; HandCodingComforts.LoadConstant [0]; HandCoding.drSRIn [rdfnImpl, onlAvail]; HandCodingComforts.LoadConstant [0]; HandCoding.drSRIn [rdfnImpl, oarcAvail]; HandCodingComforts.LoadConstant [HandCodingComforts.NILValue]; HandCoding.drSRIn [rdfnImpl, onodeWorld]; HandCodingPseudos.ProcedureExit[0]; }; PrintINT: LizardTweaker.OpcodeHandler = { operand: INT = DragOpsCrossUtils.WordToInt[rest]; SELECT operand FROM 0 => { regS: DragOpsCross.ProcessorRegister = LizardHeart.WordToReg[processor.regs[ifuS]]; StackS: DragOpsCross.Word _ processor.regs[regS]; IF out # NIL THEN IO.PutF[out, " %5g\n", [integer[DragOpsCrossUtils.WordToInt[StackS]]] ]; }; 1 => { regS: DragOpsCross.ProcessorRegister = LizardHeart.WordToReg[processor.regs[ifuS]]; StackS: DragOpsCross.Word _ processor.regs[regS]; IF out # NIL THEN IO.PutF[out, " %5g ", [integer[DragOpsCrossUtils.WordToInt[StackS]]] ]; }; ENDCASE; }; All: PROC = { area: HandCodingSupport.Area _ HandCodingSupport.GetCurrentArea[]; lDepthFirstNumber _ HandCodingPseudos.GenLabel[]; ldfnPreVisit _ HandCodingPseudos.GenLabel[]; ldfnNumbered _ HandCodingPseudos.GenLabel[]; ldfnBusy _ HandCodingPseudos.GenLabel[]; ldfnFindcycle _ HandCodingPseudos.GenLabel[]; ldfnSelfCycle _ HandCodingPseudos.GenLabel[]; ldfnPostVisit _ HandCodingPseudos.GenLabel[]; lprintname _ HandCodingPseudos.GenLabel[]; lAddNode _ HandCodingPseudos.GenLabel[]; lNodeLookup _ HandCodingPseudos.GenLabel[]; lAddArc _ HandCodingPseudos.GenLabel[]; lPrintNode _ HandCodingPseudos.GenLabel[]; lPrintArc _ HandCodingPseudos.GenLabel[]; lPrintNodeWorld _ HandCodingPseudos.GenLabel[]; lDoIt _ HandCodingPseudos.GenLabel[]; lInitializeDfnImplGlobalFrame _ HandCodingPseudos.GenLabel[]; fdfnImpl _ DragOpsCrossUtils.BytePCToWordAddress[ [DragOpsCrossUtils.CardToWord[ HandCodingSupport.ReserveData[oLast]]]].addr; HandCodingComforts.iLFC [lInitializeDfnImplGlobalFrame]; HandCodingComforts.iLFC [lDoIt]; HandCodingPseudos.Halt[0]; InitializeDfnImplGlobalFrame[]; DepthFirstNumber[]; dfnPreVisit[]; dfnNumbered[]; dfnBusy[]; dfnFindcycle[]; dfnSelfCycle[]; dfnPostVisit[]; printname[]; AddNode[]; NodeLookup[]; AddArc[]; PrintNode[]; PrintNodeWorld[]; DoIt[]; LizardTweaker.Register[x060b, PrintINT]; out _ ViewerIO.CreateViewerStreams[name: "GenDFN.log"].out; }; }. *DGenDFN.mesa Peter Kessler, February 20, 1986 5:39:19 pm PST static char sccsid[] = "@(#)dfn.c 5.1 (Berkeley) 6/4/85"; Russ Atkinson (RRA) September 15, 1986 11:42:16 pm PDT DIRECTORY CmdIO USING [Out], Rope USING [ROPE, Equal]; dfnImpl: -- CEDAR -- PROGRAM IMPORTS CmdIO, Rope EXPORTS dfn this is the label for the global frame (in data space). nlType: TYPE = -- a node (an entry in the namelist) RECORD[ name, -- for identification children: arcTypeRef, -- list of arcs to children cyclehead: nlTypeRef, -- pointer to the head of this cycle, or pointer to self cnext: nlTypeRef, -- pointer to next member of cycle nlnext: nlTypeRef, -- chain of all the nl entries toporder: dfnNumber -- topological ordering number ]; nlTypeRef: TYPE = LONG POINTER TO nlType; arcType: TYPE = -- an arc RECORD[ arcChildp: nlTypeRef, -- pointer to the child of this arc arcChildlist: arcTypeRef -- chain of children of this parent ]; arcTypeRef: TYPE = LONG POINTER TO arcType; dfnNumber: TYPE = INT _ DFNNaN; DFNNaN: dfnNumber = 0; -- used to mark depth first numbers that aren't set yet. DFNBusy: dfn.dfnNumber = -1; -- used to mark depth-first numbers that are being set. dfnstruct: TYPE = RECORD[ -- elements of the depth first numbering stack. nlentryp: dfn.nlTypeRef, cycletop: INT ]; dfntype: TYPE = dfnstruct; -- what is it about C that requires this separate type declaration? -- not wanting to type `struct dfnstruct' as a type. DFNMaxDepth: INT = 100; -- the maximum depth of the depth first numbering stack. nlMax: INT = 101; arcMax: INT = 600; I have sorted the entries in the global frame to put the long ones out past what can be accessed with AlphaZ offsets. This code still assumes that procedures that access things in the global frame load the address of the global frame into a register and use LRI with an AlphaZ offset to fetch the datum. That is LIQB @GlobalFrame SR rGlobalFramePointer ... LRI rGlobalFramePointer, oVariableOffset If the offset doesn't fit in an AlphaZ, the fetch becomes LR rGlobalFramePointer LIQB oVariableOffset RX An alternative is to have the loader be smart enough to fill in LIQB's with relative addresses, not just absolutes, and then one could use LIQB @GlobalFrame+oVariableOffset RB 0 As it turns out, all the offsets that don't fit in AlphaZ's are offsets of arrays, which get added to the address of the global frame (this could be avoided by the smarter loader) and so can just use ADDDB's instead of ADDB's. If frames get bigger than 65K, ADDDB won't work either, and we'll have to fall back on LIQB;ADD. The point is to track that the register with the address of the global frame is a (load time) constant, and have the loader do the add at load time. dfnCounter: dfn.dfnNumber _ dfn.DFNNaN; dfnDepth: INT _ 0; nlAvail: INT [0 .. nlMax) _ 0; arcAvail: INT [0 .. arcMax) _ 0; nodeWorld: dfn.nlTypeRef _ NIL; dfnStack: ARRAY [0 .. DFNMaxDepth) OF dfntype; nlZone: ARRAY [0 .. nlMax) OF dfn.nlType; arcZone: ARRAY [0 .. arcMax) OF dfn.arcType; DepthFirstNumber: PROC [parentp: dfn.nlTypeRef] RETURNS [BOOL] = { IF dfnNumbered[childp: parentp] THEN { -- if we're already numbered, no need to look any furthur. RETURN [TRUE]; }; previous two instructions could be RJNE Stack[S], Constants[TRUE], continue IF dfnBusy[childp: parentp] THEN { -- if we're already busy, must be a cycle RETURN [dfnFindcycle[parentp]]; }; -- visit yourself before your children IF NOT dfnPreVisit[parentp: parentp] THEN { RETURN [FALSE]; }; previous two instructions could be RJNE Stack[S], Constants[TRUE], continue -- visit children FOR arcp: dfn.arcTypeRef _ parentp^.children, arcp^.arcChildlist WHILE arcp # NIL DO IF NOT DepthFirstNumber[parentp: arcp^.arcChildp] THEN { RETURN [FALSE]; }; ENDLOOP; -- visit yourself after your children IF NOT dfnPostVisit[parentp: parentp] THEN { RETURN [FALSE]; }; RETURN [TRUE]; }; dfnPreVisit: PROC [parentp: dfn.nlTypeRef] RETURNS [BOOL] = { -- push a parent onto the stack and mark it busy dfnDepth _ dfnDepth + 1; IF dfnDepth >= DFNMaxDepth THEN { CmdIO.Out["[dfn] out of my depth [dfnStack overflow]\n"]; RETURN [FALSE]; }; dfnStack[dfnDepth].nlentryp _ parentp; replace a call to Basics.MixedMultiply HandCoding.drLIB [cSIZEdfntype]; HandCodingComforts.iDFC [HandCodingPseudos.GetGlobalLabel["Basics.MixedMultiply"]]; dfnStack[dfnDepth].cycletop _ dfnDepth; replace a call to Basics.MixedMultiply HandCoding.drLIB [cSIZEdfntype]; HandCodingComforts.iDFC [HandCodingPseudos.GetGlobalLabel["Basics.MixedMultiply"]]; parentp^.toporder _ DFNBusy; RETURN [TRUE]; }; dfnNumbered: PROC [childp: dfn.nlTypeRef] RETURNS [BOOL] = { -- are we already numbered? RETURN [childp^.toporder # dfn.DFNNaN AND childp^.toporder # DFNBusy]; }; dfnBusy: PROC [childp: dfn.nlTypeRef] RETURNS [BOOL] = { -- are we already busy? RETURN [childp^.toporder # dfn.DFNNaN]; }; dfnFindcycle: PROC [childp: dfn.nlTypeRef] RETURNS [result: BOOL] = { result is computed into rresult and at lreturn it is copied to Locals[0]. cycletop: INT; cycleheadp: dfn.nlTypeRef; tailp: dfn.nlTypeRef; FOR cycletop DECREASING IN (0 .. dfnDepth] DO cycleheadp _ dfnStack[cycletop].nlentryp; replace a call to Basics.MixedMultiply HandCoding.drLIB [cSIZEdfntype]; HandCodingComforts.iDFC [HandCodingPseudos.GetGlobalLabel["Basics.MixedMultiply"]]; IF childp = cycleheadp THEN EXIT; IF childp^.cyclehead # childp AND childp^.cyclehead = cycleheadp THEN EXIT; ENDLOOP; IF cycletop <= 0 THEN { -- CmdIO.Out["[dfnFindcycle] couldn't find head of cycle\n"]; RETURN [FALSE]; this is longer, but faster than, HandCodingComforts.LoadConstant [HandCodingComforts.FALSEValue]; HandCoding.drSRn [rresult]; }; IF cycletop = dfnDepth THEN { -- this is previous function, e.g. this calls itself: sort of boring result _ dfnSelfCycle[childp]; }; ELSE { -- glom intervening functions that aren't already glommed into this cycle. -- things have been glommed when their cyclehead field points to the head of the cycle they are glommed into. FOR tailp _ cycleheadp, tailp^.cnext WHILE tailp^.cnext # NIL DO NULL; ENDLOOP; -- if what we think is the top of the cycle has a cyclehead field, then it's not really the head of the cycle, which is really what we want IF cycleheadp^.cyclehead # cycleheadp THEN { cycleheadp _ cycleheadp^.cyclehead; }; FOR index: INT IN [cycletop + 1 .. dfnDepth] DO childp _ dfnStack[index].nlentryp; replace a call to Basics.MixedMultiply HandCoding.drLRn [rindex]; HandCoding.drLIB [cSIZEdfntype]; HandCodingComforts.iDFC [HandCodingPseudos.GetGlobalLabel["Basics.MixedMultiply"]]; IF childp^.cyclehead = childp THEN { -- not yet glommed anywhere, glom it -- and fix any children it has glommed tailp^.cnext _ childp; childp^.cyclehead _ cycleheadp; FOR tailp _ childp, tailp^.cnext WHILE tailp^.cnext # NIL DO tailp^.cnext^.cyclehead _ cycleheadp; ENDLOOP; }; ELSE { IF childp^.cyclehead # cycleheadp -- firewall -- THEN { -- CmdIO.Out["[dfnBusy] glommed, but not to cyclehead\n"]; NULL; }; }; ENDLOOP; result _ TRUE; }; }; dfnSelfCycle: PROC [parentp: dfn.nlTypeRef] RETURNS [BOOL] = { -- deal with self-cycles -- since we are taking out self-cycles elsewhere no need for the special case, here. NULL; RETURN [TRUE]; }; dfnPostVisit: PROC [parentp: dfn.nlTypeRef] RETURNS [BOOL] = { -- visit a node after all its children and pop it off the stack -- number functions and things in their cycles unless the function is itself part of a cycle IF parentp^.cyclehead = parentp THEN { dfnCounter _ dfnCounter + 1; FOR memberp: dfn.nlTypeRef _ parentp, memberp^.cnext WHILE memberp # NIL DO memberp^.toporder _ dfnCounter; ENDLOOP; }; ELSE { NULL; }; dfnDepth _ dfnDepth - 1; RETURN [TRUE]; }; printname: PROC [nlentryp: dfn.nlTypeRef] RETURNS [Rope.ROPE] = { -- pretend this guy returns INTs RETURN [nlentryp^.name]; }; -- *** stuff for using the interpreter to run this *** AddNode: PROC [name: Rope.ROPE] RETURNS [dfn.nlTypeRef] = { node: dfn.nlTypeRef _ @nlZone[nlAvail]; nlAvail _ nlAvail + 1; node^.name _ name; node^.children _ NIL; node^.cyclehead _ node; node^.cnext _ NIL; node^.nlnext _ nodeWorld; node^.toporder _ DFNNaN; nodeWorld _ node; RETURN [node]; }; NodeLookup: PROC [name: Rope.ROPE] RETURNS [dfn.nlTypeRef] = { FOR nodep: dfn.nlTypeRef _ nodeWorld, nodep^.nlnext WHILE nodep # NIL DO IF name.Equal[nodep^.name] THEN RETURN [nodep]; what about the DIScard of rnodep? don't really need it. ENDLOOP; RETURN [NIL]; }; AddArc: PROC [from: Rope.ROPE, to: Rope.ROPE] RETURNS [dfn.arcTypeRef] = { fromNode: dfn.nlTypeRef _ NodeLookup[from]; toNode: dfn.nlTypeRef _ NodeLookup[to]; IF fromNode # NIL AND toNode # NIL THEN { arcp: dfn.arcTypeRef _ @arcZone[arcAvail]; replace a call to Basics.MixedMultiply HandCoding.drLIB [cSIZEarcType]; HandCodingComforts.iDFC [HandCodingPseudos.GetGlobalLabel["Basics.MixedMultiply"]]; arcAvail _ arcAvail + 1; arcp^.arcChildp _ toNode; arcp^.arcChildlist _ fromNode^.children; fromNode^.children _ arcp; RETURN [arcp]; }; RETURN [NIL]; the existence of LC[0..7] implies that constants that can be loaded with LIB, LIDB, and LIQB should be in Constants[8..11]. Except that there is the tiny operand mode, which references Constants[0] and Constants[1]. }; PrintNode: PROC [nodep: dfn.nlTypeRef] RETURNS [] = { CmdIO.Out["%g: %g\n", [rope[nodep^.name]], [integer[nodep^.toporder]]]; print an INT from the top of the stack without a \n print an INT from the top of the stack with a \n }; PrintArc: PROC [arcp: dfn.arcTypeRef] RETURNS [] = { PrintNode[arcp^.arcChildp]; }; PrintNodeWorld: PROC [] RETURNS [] = { FOR nodep: dfn.nlTypeRef _ nodeWorld, nodep^.nlnext WHILE nodep # NIL DO PrintNode[nodep]; ENDLOOP; }; DoIt: PROC [] RETURNS [result: BOOL] = { -- Build the world -- Number the nodes result _ DepthFirstNumber[NodeLookup["foo"]]; -- And check the result PrintNodeWorld; }; -- procedures for running the simulator dfnDepth: INT _ 0; dfnCounter: dfn.dfnNumber _ dfn.DFNNaN; nlAvail: INT [0 .. nlMax) _ 0; missing the bounds checks on assignments to nlAvail. arcAvail: INT [0 .. arcMax) _ 0; missing the bounds checks on assignments to arcAvail. nodeWorld: dfn.nlTypeRef _ NIL; [data: REF ANY, processor: LizardHeart.Processor, inst: DragOpsCross.Inst, rest: DragOpsCross.Word] RETURNS [normal: BOOL _ FALSE] print top of stack with a \n print top of stack without a \n This procedure must be named ``All''. During loading, this procedure is called to allocate data and instruction space. Instruction space is initialized by generating instructions, some of which are a procedure that initializes the data space during execution. Execution begins at the first instruction generated. Since this procedure controls code generation, it gets to generate those first instructions. Allocate the global frame Generate the body of the module Now generate the instructions Extras needed for debugging Κ15•StyleDefπBeginStyle (Cedar) AttachStyle (asmStandard) "indent for assembler source stuff" { docStandard 6.75 in lineLength "Helvetica" family 8 pt size 3.0 in leftIndent .75 in tabStops } ScreenRule (asmStandard) "indent for assembler source stuff" { docStandard 6.75 in lineLength "Helvetica" family 2.5 in leftIndent .75 in tabStops } PrintRule (asm) "inline instructions" { asmStandard bold face 0.5 in restIndent isComment { bold+italic face 0.5 in bigger leftIndent 0.5 in restIndent } .cvx .if } StyleRule (label) "inline instruction labels" { asmStandard bold face 0.5 in smaller leftIndent 1.5 in restIndent } StyleRule (dragop) "dragon opcodes" { standard "Helvetica" family nestingLevel 1 .eq .not {CodeIndent bigger leftIndent} .cvx .if isComment { italic face 0.5 in bigger leftIndent 0.5 in restIndent } .cvx .if } StyleRule EndStyle˜šœ ™ Jšœ/™/Jšœ9™9Icode™6—˜šΟk ™ Jšœœ™Jšœœœ ™—š ˜ Jšœ‚˜‚J˜ J™——JšΠlnœΟcΠckŸœ™dragopšžœ ˜Jšœ œ™š˜Jšœt˜tJšœ ˜ —Jšœ˜J˜šœ'˜'L™7—šœœŸ$™3šœ™šœ Ÿ™"Lšœœ˜Lšœ.˜.—šœŸ™3Lšœ œ˜#Lšœ:˜:—šœŸ8™PLšœ œ˜,Lšœ;˜;—šœŸ"™7Lšœœ˜*Lšœ7˜7—šœŸ™4Lšœ œ˜#Lšœ8˜8—šœŸ™4Lšœ œ˜'Lšœ2˜2—™Lšœ œ˜-———š œ œœœœ™)Lšœ;˜;—J˜šœ œŸ ™šœ™šœŸ#™;Lšœ œ˜Lšœ;˜;—šœŸ#™=Lšœœ˜1Lšœ>˜>—šœ™Lšœœ%˜6———šœ œœ ™+Lšœ<˜<—J˜Jšœ œœ ™šœŸ8™RLšœ œ˜—J˜šœŸ7™UJšœ œ˜—J˜šœ œœŸ/™K™Lšœ œ˜Lšœ:˜:—šœ ™ Lšœ œ˜+Lšœ2˜2—šœ™Lšœœ˜0——J˜šœ œ ™JšœC™CJšœ4™4Lšœœ˜#—J˜šœ œ Ÿ8™SLšœœ˜—šœœ™Lšœœ˜—šœœ™Lšœ œ˜—J˜™ΉL™L™L™L™(—™9L™L™L™—™ŠL™!L™—L™ΪL˜J™šœ'™'Lšœ œ ˜Lšœ4˜4—šœ œ™Lšœ œ!˜/Lšœ2˜2—J™šœ œ™Lšœ œ˜*Lšœ1˜1—šœ œ™ Lšœ œ˜)Lšœ2˜2—J™šœœ™Lšœ œ˜,Lšœ;˜;—J˜šœ œœ ™.Lšœ œ˜-Lšœœ˜1—šœœœ ™)Lšœ œ˜)Lšœ œ˜(—arrayšœ œœ ™,Lšœ œ˜&Lšœœ˜+—L˜Lšœ%˜%L˜Jšœœœ˜J˜JšΟnœœœœ™BLšœ+˜+šœ-˜-Lšœ/˜/Lšœ@˜@LšœN˜NJ˜šœœ™&Jšœ:™:Jšœœ™J™L˜LšœB˜BLšœ˜Lšœ'˜'LšœB˜Bšœ?˜?L™"L™(—Lšœ!˜!Lšœ&˜&L˜—šœœ™"Jšœ)™)Jšœ™J™L˜LšœB˜BLšœ˜Lšœ#˜#LšœB˜BLšœ˜Lšœ(˜(Lšœ!˜!Lšœ&˜&L˜—Jšœ&™&šœœœ™+Jšœœ™J™L˜LšœB˜BLšœ˜Lšœ'˜'LšœB˜Bšœ@˜@L™"L™(—Lšœ!˜!Lšœ&˜&L˜—Jšœ™šœ>œœ™Tšœœ,œ™8Jšœœ™J™—Jšœ™L˜Lšœ-˜-Lšœ?˜?Lšœ>˜>Lšœ(˜(Lšœ0˜0Lšœ˜šœ#˜#L˜LšœB˜BLšœ&˜&Lšœ,˜,šœB˜BLšœ@˜@Lšœ!˜!—Lšœ&˜&L˜—Lšœ/˜/Lšœ"˜"LšœG˜GLšœ˜L˜—Jšœ%™%šœœ œ™,Jšœœ™J™L˜LšœB˜BLšœ˜Lšœ(˜(šœB˜BLšœ@˜@Lšœ!˜!—Lšœ&˜&L˜—šœœ™Lšœ?˜?Lšœ!˜!—™Lšœ$˜$Lšœ#˜#Lšœ#˜#—L˜—J˜Jš‘ œœœœ™=Lšœ&˜&šœ(˜(Lšœ/˜/Lšœ@˜@LšœD˜DL˜Lšœ/˜/Lšœ˜Lšœ3˜3Jšœ0™0™Lšœ(˜(Lšœ˜Lšœ(˜(—šœœ™!L˜LšœB˜BLšœ ˜ Lšœ(˜(šœ^˜^™9Lšœ*˜*LšœD˜DLšœD˜DLšœD˜DLšœD˜DLšœ'˜'—Jšœœ™Lšœ@˜@Lšœ!˜!—™Lšœ&˜&—L˜—™&Lšœ˜Lšœ˜Lšœ(˜(Lšœ/˜/Lšœ&™&Lšœ ™ LšœS™SLšœ˜Lšœ˜Lšœ˜—™'Lšœ˜Lšœ˜Lšœ(˜(Lšœ/˜/Lšœ&™&Lšœ ™ LšœS™SLšœ˜Lšœ(˜(Lšœ˜—™Lšœ˜Lšœ+˜+Lšœ˜—šœœ™Lšœ?˜?Lšœ!˜!—™Lšœ$˜$Lšœ#˜#Lšœ#˜#L˜—L˜—J˜š‘ œœœœ™˜>Lšœ'˜'Lšœ*˜*Lšœ'˜'Lšœe˜eLšœ?˜?Lšœ!˜!Lšœ"˜"Lšœ@˜@Lšœ!˜!L˜—™Lšœ$˜$Lšœ#˜#Lšœ#˜#—L˜—J˜š‘œœœœ™8Jšœ™—Lšœ"˜"šœ$˜$Lšœ.˜.Lšœ@˜@Lšœ<˜<šœ!™'L˜LšœE˜ELšœ'˜'Lšœ1˜1Lšœ?˜?Lšœ!˜!Lšœ)˜)Lšœ@˜@Lšœ!˜!L˜—™Lšœ$˜$Lšœ#˜#Lšœ#˜#—L˜—J˜Jš‘ œœœ œ™ELšœ'˜'šœ)˜)Lšœ.˜.šœ.˜.L™I—Lšœ/˜/Lšœ@˜@LšœF˜FLšœ@˜@Lšœ2˜2Lšœ˜Lšœ3˜3˜šœ œ™Lšœ0˜0—™Lšœ2˜2—šœ™Lšœ-˜-Lšœ$˜$Lšœ4˜4Lšœ>˜>Lšœ6˜6Lšœ>˜>Lšœ0˜0—J˜šœ  œœ™-L˜Lšœ?˜?Lšœ?˜?Lšœ/˜/Lšœ(˜(Lšœ3˜3LšœH˜HLšœE˜ELšœ#˜#™)Lšœ˜Lšœ˜Lšœ˜Lšœ/˜/Lšœ&™&Lšœ ™ LšœS™SLšœ˜Lšœ˜Lšœ˜—šœœœ™!J˜LšœB˜BLšœ˜LšœS˜SLšœ ˜ Lšœ&˜&L˜—šœœ œœ™KJ˜LšœB˜BLšœ(˜(LšœO˜OLšœ(˜(LšœS˜SLšœ ˜ Lšœ&˜&L˜—šœ™LšœI˜ILšœG˜GLšœ ˜ Lšœ#˜#—Lšœ˜L˜—šœœ™L˜LšœB˜BLšœL˜LJ™=šœœ™šœ[˜[L™!Lšœ@™@Lšœ™—Lšœ!˜!—™Lšœ&˜&—L˜—šœ™L˜Lšœ>˜>LšœB˜BLšœ(˜(LšœM˜Mšœ™JšœD™Dšœ™Lšœ˜Lšœ(˜(Lšœ˜Lšœ#˜#—J™—šœ™Lšœ"˜"JšœJ™JJšœm™mšœ"œœ™@L˜Lšœ>˜>Lšœ?˜?LšœE˜ELšœ˜Lšœ#˜#Jšœ™Jšœ™Lšœ*˜*Lšœ"˜"Lšœ#˜#Lšœ?˜?L˜—Jšœ‹™‹šœ$œ™,L˜LšœB˜BLšœ,˜,LšœS˜S™#Lšœ8˜8—J™Lšœ&˜&L˜—šœœœ™/L˜Lšœ?˜?Lšœ?˜?Lšœ/˜/Lšœ4˜4Lšœ-˜-Lšœ˜Lšœ˜Lšœ3˜3Lšœ(˜(Lšœ8˜8Lšœ˜LšœR˜RLšœ˜Lšœ1˜1Lšœ#˜#™"Lšœ˜Lšœ˜Lšœ7˜7Lšœ&™&Lšœ™Lšœ ™ LšœS™SLšœ˜Lšœ˜Lšœ˜—šœ™J˜Lšœ>˜>LšœB˜BLšœ(˜(LšœK˜Kšœ™J™$J™&™Lšœ2˜2—™Lšœ;˜;—šœœœ™˜>Lšœ?˜?LšœA˜ALšœ˜Lšœ#˜#™%Lšœ#˜#Lšœ˜Lšœ˜—šœ™Lšœ*˜*Lšœ"˜"Lšœ#˜#Lšœ>˜>—L˜—™Lšœ#˜#——šœ™Lšœ"˜"šœŸœœ™7J˜LšœB˜BLšœ(˜(LšœS˜SJ™:Jšœ™™Lšœ&˜&—L˜—J™Lšœ&˜&—L˜—šœ™Lšœ˜LšœR˜RLšœA˜ALšœ ˜ —Lšœ#˜#L˜—šœ œ™LšœX˜X—™Lšœ&˜&——L˜—™Lšœ$˜$LšœJ˜JLšœ#˜#——L˜L˜—J˜š‘ œœœœ™>Jšœ™JšœT™T—Lšœ'˜'šœ)˜)Lšœ/˜/Lšœ@˜@LšœF˜FJšœ™šœœ™Lšœ>˜>Lšœ!˜!—™Lšœ$˜$Lšœ#˜#Lšœ#˜#—L˜—J˜š‘ œœœœ™>Jšœ?™?—Lšœ'˜'šœ)˜)Lšœ/˜/Lšœ/˜/Lšœ@˜@LšœF˜FLšœ˜Lšœ3˜3JšœY™\šœ™L˜Lšœ>˜>LšœB˜BLšœ)˜)LšœL˜Lšœ™™Lšœ*˜*Lšœ˜Lšœ*˜*—šœ2œ œ™KL˜Lšœ0˜0Lšœ>˜>Lšœ?˜?Lšœ˜Lšœ3˜3Lšœ#˜#™Lšœ*˜*Lšœ(˜(—šœ™Lšœ.˜.Lšœ"˜"LšœJ˜J—Lšœ˜J˜—™Lšœ#˜#——šœ™Lšœ"˜"Jš™J™Lšœ&˜&—L˜—™Lšœ(˜(Lšœ˜Lšœ(˜(—šœœ™Lšœ>˜>Lšœ!˜!—™Lšœ$˜$Lšœ#˜#Lšœ#˜#—L˜—J˜š‘ œœœœ™AJ™ —Lšœ$˜$šœ&˜&Lšœ0˜0Lšœ@˜@Lšœ@˜@šœ™Lšœ%˜%Lšœ!˜!—™Lšœ$˜$Lšœ#˜#Lšœ#˜#—L˜—J˜J™6J˜Jš‘œœ œœ™;Lšœ"˜"šœ$˜$Lšœ,˜,Lšœ/˜/Lšœ@˜@Lšœ<˜˜>Lšœ%˜%—™Lšœ3˜3—šœ™Lšœ>˜>Lšœ"˜"—™Lšœ)˜)Lšœ#˜#—šœ™Lšœ$˜$Lšœ%˜%—™Lšœ6˜6—šœ™Lšœ˜Lšœ!˜!—™J˜—Lšœ$˜$Lšœ#˜#Lšœ#˜#L˜—J˜Jš‘ œœ œœ™>Lšœ%˜%šœ'˜'Lšœ,˜,Lšœ/˜/Lšœ@˜@LšœB˜BLšœ˜Lšœ3˜3šœ1œ œ™HL˜Lšœ.˜.Lšœ?˜?Lšœ>˜>Lšœ)˜)Lšœ1˜1Lšœ˜Lšœ#˜#šœ™L˜LšœB˜BLšœ"˜"LšœM˜Mšœ ™Lšœ˜šœ!˜!L™8——Lšœ&˜&L˜—šœ™Lšœ+˜+Lšœ"˜"LšœH˜H—Lšœ˜L˜—šœœ™ Lšœ>˜>Lšœ!˜!—J™Lšœ$˜$Lšœ#˜#Lšœ#˜#L˜—J˜Jš ‘œœ œ œœ™JLšœ!˜!šœ#˜#Lšœ,˜,Lšœ*˜*Lšœ/˜/Lšœ@˜@Lšœ:˜:Lšœ˜Lšœ3˜3˜Lšœ0˜0Lšœ.˜.—šœ+™+Lšœ˜Lšœ&˜&Lšœ4˜4—šœ'™'Lšœ˜Lšœ&˜&Lšœ2˜2—š œ œœ œœ™)L˜LšœB˜BLšœN˜NLšœL˜Lšœ*™*L˜Lšœ,˜,Lšœ˜Lšœ˜Lšœ(˜(Lšœ/˜/Lšœ&™&Lšœ ™ LšœS™SLšœ˜Lšœ0˜0—™Lšœ(˜(Lšœ˜Lšœ(˜(—™Lšœ5˜5—™(Lšœ)˜)Lšœ)˜)—™Lšœ6˜6—šœ™Lšœ˜Lšœ!˜!—™Lšœ&˜&L˜—L˜—šœœ™ šœ>˜>LšœΟdœΏ™Ψ—Lšœ!˜!—™L˜Lšœ$˜$Lšœ#˜#Lšœ#˜#L˜——J˜Jš‘ œœœ™5Lšœ$˜$šœ&˜&Lšœ-˜-Lšœ@˜@šœG™GLšœ"˜"šœC˜CL™3—Lšœ˜Lšœ&˜&šœC˜CL™0—Lšœ˜—™Lšœ#˜#L˜——J˜Jš‘œœœ™4Lšœ#˜#šœ%˜%Lšœ,˜,Lšœ>˜>™Lšœ&˜&Lšœ%˜%—™Lšœ#˜#L˜——J˜Jš‘œœœ™&Lšœ)˜)šœ+˜+Lšœ/˜/LšœJ˜JLšœ˜Lšœ3˜3šœ1œ œ™HL˜Lšœ.˜.Lšœ?˜?Lšœ>˜>Lšœ)˜)Lšœ1˜1Lšœ˜Lšœ#˜#™Lšœ˜Lšœ%˜%—šœ™Lšœ+˜+Lšœ"˜"LšœH˜H—Lšœ˜L˜—™Lšœ#˜#L˜——J˜Jš‘œœœ œ™(Lšœ˜šœ!˜!Lšœ.˜.Lšœ@˜@LšœC˜CLšœB˜BLšœ6˜6J™J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜#J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J˜J˜J˜"J˜J™Lšœ'˜'LšœC˜C™-Lšœ$˜$Lšœ&˜&Lšœ,˜,Lšœ˜—Lšœ&˜&LšœA˜AJ™šœ™Lšœ*˜*—™Lšœ$˜$LšœM˜MLšœ#˜#—L˜—J™L™'Lšœ7˜7š‘œ˜9Lšœ/˜/Lšœf˜fLšœ˜Lšœ3˜3šœ œ™Lšœ$˜$Lšœ(˜(—šœ'™'Lšœ$˜$Lšœ*˜*—šœ œ™Lšœ$˜$šœ'˜'L™4——šœ œ™ Lšœ$˜$šœ(˜(Lšœ5™5——šœœ™Lšœ>˜>Lšœ)˜)—Lšœ#˜#L˜—J˜š‘œ!˜)Kš ‚™‚Kšœ œ%˜1šœ ˜˜J™KšœS˜SKšœ1˜1šœœ˜KšœH˜H—K˜—˜J™KšœS˜SKšœ1˜1šœœ˜KšœG˜G—K˜—Kšœ˜—K˜K˜—š‘œœ˜ J™%™PJ™Œ—J™’JšœB˜BJšœ1˜1Jšœ,˜,Jšœ,˜,Jšœ(˜(Jšœ-˜-Jšœ-˜-Jšœ-˜-Jšœ*˜*Jšœ(˜(Jšœ+˜+Jšœ'˜'Jšœ*˜*Jšœ)˜)Jšœ/˜/Jšœ%˜%Jšœ=˜=™šœ1˜1šœ˜Jšœ-˜-———™Jšœ8˜8Jšœ ˜ Jšœ˜—™Jšœ˜Jšœ˜Jšœ˜Jšœ˜Jšœ ˜ Jšœ˜Jšœ˜Jšœ˜Jšœ ˜ Jšœ ˜ Jšœ ˜ Jšœ ˜ J˜ J˜Jšœ˜—™Kšœ(˜(Kšœ;˜;—J˜—Jšœ˜—J˜J˜—…—€\