--- a/branches/PackMLState/Main_Escape_PLC/Plc Logic/Application/Function Blocks/Puzzle/LaserStateMachine/svnobj
+++ b/branches/PackMLState/Main_Escape_PLC/Plc Logic/Application/Function Blocks/Puzzle/LaserStateMachine/svnobj
@@ -1,7 +1,6 @@
-Gx_lšH!0…jüo“/¼I;íß
-малSystem.StringL{6f9dac99-8de1-4efc-8465-68ac443b7d08}SpecialFuncL{0db3d7bb-cde0-4416-9a7b-ce49a0124323}NoneImplementationL{3b83b776-fb25-43b8-99f2-3c507c9143fc}TextDocument	L{f3878285-8e4f-490b-bb1b-9acbb7eb04db}
+Gx_l0I!0…jüo“/ù¥eu+WÿôSystem.StringL{6f9dac99-8de1-4efc-8465-68ac443b7d08}SpecialFuncL{0db3d7bb-cde0-4416-9a7b-ce49a0124323}NoneImplementationL{3b83b776-fb25-43b8-99f2-3c507c9143fc}TextDocument	L{f3878285-8e4f-490b-bb1b-9acbb7eb04db}
 TextLinesL{a5de0b0b-1cb5-4913-ac21-9d70293ec00d}Id
longTagText$IF NOT xInit THEN	N	UM				(		sName := 'Normal Operation', ì							dwSupportedStates := PACK_ML.State.All - PACK_ML.State.Suspending - PACK_ML.State.Suspended - PACK_ML.State.UnSuspending - PACK_ML.Holding - PACK_ML.Held - PACK_ML.UnHolding, Ô							dwAllowsLeavingFromStates := PACK_ML.State.Stopped OR PACK_ML.State.Aborted OR PACK_ML.State.Idle, Ö							dwAllowsEnteringIntoStates := PACK_ML.State.Stopped OR PACK_ML.State.Aborted OR PACK_ML.State.Idle, \							eInitialState := PACK_ML.State.Aborted,0							xActive := TRUE);	xInit := TRUE;	END_IF4IF Client.bReadyToPLC THEN:	CASE Client.iCommandToPLC OF"	0 : 	//Handshake	1 : 	//Lock’		IF SysStrCmp(Client.sCommandToPLC, Client.LockCommands[0]) =  0 THEN;		 2			Lock_CO_Match := TRUE;!			"˜		ELSIF SysStrCmp(Client.sCommandToPLC, Client.LockCommands[1]) =  0 THEN	;	#2			//Second Lock Function$
-			;	%		END_IF&	2 : 	//Key		'	3 : 	//IO(	4 : 	//Media)	5 : 	//Hint*	6 : 	//State	+l		IF SysStrCmp(Client.sCommandToPLC, 'SC') =  0 THEN		,&			StateComplete();-x		ELSIF SysStrCmp(Client.sCommandToPLC, 'Start') =  0 THEN		.			Start();/v		ELSIF SysStrCmp(Client.sCommandToPLC, 'Stop') =  0 THEN		0			Stop();1x		ELSIF SysStrCmp(Client.sCommandToPLC, 'Reset') =  0 THEN		2			Reset();3x		ELSIF SysStrCmp(Client.sCommandToPLC, 'Abort') =  0 THEN		4			Abort();5x		ELSIF SysStrCmp(Client.sCommandToPLC, 'Clear') =  0 THEN		6			Clear();7v		ELSIF SysStrCmp(Client.sCommandToPLC, 'Hold') =  0 THEN		8			Hold();9z		ELSIF SysStrCmp(Client.sCommandToPLC, 'UnHold') =  0 THEN		:			Unhold();	;|		ELSIF SysStrCmp(Client.sCommandToPLC, 'Suspend') =  0 THEN		<			Suspend();=€		ELSIF SysStrCmp(Client.sCommandToPLC, 'UnSuspend') =  0 THEN		>			UnSuspend();?		@	END_CASEA6	Client.iCommandToPLC := 0;B8	Client.sCommandToPLC := '';C:	Client.bReadyToPLC := FALSE;D.CASE UM.CurrentState OFE,PACK_ML.State.Stopped:F;G,PACK_ML.State.Aborted:H&PACK_ML.State.Idle:I0PACK_ML.State.Complete :J.PACK_ML.State.Execute :KD	IF puzzleTimer.iProcess = 25 THENL@		IF Client.ActualStep < 30 THENMÊ			SendCommand(Command := CommandType.Hint ,Value := 'Enable the cabinet with PACKML, look up.');				N	END_IF	OD	IF puzzleTimer.iProcess = 30 THENPˆ			SendCommand(Command := CommandType.Media ,Value := 'PACKML');				Q	END_IFRD	IF puzzleTimer.iProcess = 50 THENSB		IF Client.ActualStep >= 30 THENTè			SendCommand(Command := CommandType.Hint ,Value := 'Enable the drives and positon them in the Automation Suite.');U		ELSE			V8    		overrideStart := TRUE;W		END_IF	XD	IF puzzleTimer.iProcess = 75 THENY–		SendCommand(Command := CommandType.Media ,Value := 'Automation Suite');		Z4	CASE Client.ActualStep OF[	0: // aborted\J		LaserGamePuzzle := PACK_ML.Aborted;]6		DO_Reset_Light := bl.OUT;^”		IF DI_Reset AND NOT DI_Auto_Hand_Switch AND DI_NoodstopCabinet THEN					_6			Client.ActualStep := 10;`6			DO_Reset_Light := FALSE;a:			DO_Spanning_Light := TRUE;b	10:	// StoppedcJ		LaserGamePuzzle := PACK_ML.Stopped;d6		DO_Storing_Light := TRUE;e€		IF (overrideStart OR DI_Init )AND NOT DI_Auto_Hand_Switch THENf6			Client.ActualStep := 20;g6			DO_HintLaser_ON := TRUE;h@			DO_Storing_Light := FALSE;			i		END_IF		jB		IF NOT DI_NoodstopCabinet THEN;k4			Client.ActualStep := 0;l8			DO_HintLaser_ON := FALSE;m<			DO_Spanning_Light := FALSE;n<			DO_Storing_Light := FALSE;	o	20: // IdlepD		LaserGamePuzzle := PACK_ML.Idle;qB		DO_In_Bedrijf_Light := bl2.OUT;r		IF (DI_Start_Switch AND NOT DI_Auto_Hand_Switch) OR overrideStart THENs<    		overrideStart := FALSE;	t>			DO_In_Bedrijf_Light	:= TRUE;u0			DO_Laser_ON := TRUE;	v8			Client.ActualStep := 30;	w¸			SendCommand(Command:= CommandType.Key, Value:= Client.KeyCommands[0]);	// cabinet enabledx*		IF NOT DI_Stop THENy:			Client.ActualStep := 10;		zB			DO_In_Bedrijf_Light := FALSE;	{F		IF NOT DI_NoodstopCabinet THEN;		|	30: // Execute}J		LaserGamePuzzle := PACK_ML.Execute;~:		ton(PT := T#2M,IN := TRUE);J		IF Lock_CO_Match THEN				//OR ton.Q€(			StateComplete();	8			DO_Laser_ON := FALSE;				‚@			DO_In_Bedrijf_Light := FALSE;ƒ8			Client.ActualStep := 0;		„	END_CASE …^	DO_Auto_Hand_Light := NOT DI_Auto_Hand_Switch;†R	Client.Progress := puzzleTimer.iProcess;‡ ˆ2PACK_ML.State.Resetting :‰6    overrideStart := FALSE;Š>	LaserGamePuzzle := PACK_ML.No;‹.	Client.Progress := 0;	Œ<	DO_In_Bedrijf_Light := FALSE;6	DO_Storing_Light := FALSE;Ž8	DO_Spanning_Light := FALSE;:	DO_Auto_Hand_Light := FALSE;2	DO_Reset_Light := FALSE;‘,	DO_Laser_ON := FALSE;’4	DO_HintLaser_ON := FALSE;“0	Lock_CO_Match := FALSE;”:	KEY_puzzleFinished := FALSE;•"	StateComplete();–0PACK_ML.State.Starting :—6PACK_ML.State.Completing :	˜0	Client.Progress := 100;™0PACK_ML.State.Aborting :š4	DO_Storing_Light := TRUE;›.PACK_ML.State.Stopping:œ6	DO_Spanning_Light := TRUE;0PACK_ML.State.Clearing :žEND_CASEŸfIF NOT (DI_EmergencyGF AND NOT DI_EmergencyFF) THEN (	// Emergency Abort.¡	Abort();	¢END_IF £LClient.ActualState := UM.CurrentState;¤>messageQueue(Client := Client);¥äpuzzleTimer(xStartTimer := UM.CurrentState = PACK_ML.State.Execute ,xPauseTimer := ,xStopTimer:= NOT (UM.CurrentState = PACK_ML.State.Execute),tMaxPuzzleTime := Client.Duration);¦FIF puzzleTimer.iProcess >= 100 THEN§	//Stop();¨rbl(ENABLE := TRUE,TIMELOW := T#250MS,TIMEHIGH:= T#500MS);©tbl2(ENABLE := TRUE,TIMELOW := T#500MS,TIMEHIGH:= T#500MS);ªInterface«L{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}¬@FUNCTION_BLOCK LaserStateMachine­VAR_IN_OUT®.	Client : PuzzleClient;¯END_VAR°VAR±8	UM					: PACK_ML.UnitMode; ²l	xInit				: BOOL := FALSE; // Flag for initialization	³<	puzzleTimer 		: PuzzleTimer;	´"	bl 					: blink;µ"	bl2 				: blink;¶ 	ton 				: TON;	·8	KEY_puzzleFinished 	: BOOL;¸2	Key_CO_Panel_On		: BOOL;¹.	overrideStart		: BOOL;º.	Lock_CO_Match		: BOOL;»L	//DI_NoodstopCabinet	: BOOL	:= TRUE ;¼:	messageQueue : MessageQueue;½"UniqueIdGenerator¾618¿POULevelÀL{8e575c5b-1d37-49c6-941b-5c0ec7874787}ÁStandard ChildObjectGuidsÃ8System.Collections.ArrayListÄ,AddAttributeSubsequentÅboolÐÐ-ÐÐ	E
-îÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­lÚÐ-ÐÐ
­eÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ŽÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­”ÚÐ-ÐÐ
­®ÚÐ-ÐÐ
­–ÚÐ-ÐÐ
­µÚÐ-ÐÐ
­´ÚÐ- ÐÐ
­÷ÚÐ-!ÐÐ
­¶ÚÐ-"ÐÐ
­·ÚÐ-#ÐÐ
­øÚÐ-$ÐÐ
­¯ÚÐ-%ÐÐ
­©ÚÐ-&ÐÐ
­üÚÐ-ÐÐ
­ªÚÐ-'ÐÐ
­«ÚÐ-(ÐÐ
­¬ÚÐ-)ÐÐ
­­ÚÐ-*ÐÐ
­¹ÚÐ-+ÐÐ
­ºÚÐ-,ÐÐ
­»ÚÐ--ÐÐ
­¾ÚÐ-.ÐÐ
­¿ÚÐ-/ÐÐ
­ÀÚÐ-0ÐÐ
­ÁÚÐ-1ÐÐ
­ÂÚÐ-2ÐÐ
­ÃÚÐ-3ÐÐ
­ÄÚÐ-4ÐÐ
­ÅÚÐ-5ÐÐ
­ÆÚÐ-6ÐÐ
­ÇÚÐ-7ÐÐ
­ÈÚÐ-8ÐÐ
­ÉÚÐ-9ÐÐ
­ÎÚÐ-:ÐÐ
­ÏÚÐ-;ÐÐ
­ÐÚÐ-<ÐÐ
­ÑÚÐ-=ÐÐ
­¼ÚÐ->ÐÐ
­¸ÚÐ-%ÐÐ
­½ÚÐ-?ÐÐ
­—ÚÐ-@ÐÐ
­ÓÚÐ-ÐÐ
­ÕÚÐ-AÐÐ
­ÖÚÐ-BÐÐ
­×ÚÐ-CÐÐ
­•ÚÐ-ÐÐ
­‘ÚÐ-ÐÐ
­’ÚÐ-ÐÐ
­“ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-DÐÐ
­ÚÐ-EÐÐ
­uÚÐ-FÐÐ
­ÚÐ-GÐÐ
­vÚÐ-FÐÐ
­ÚÐ-HÐÐ
­wÚÐ-FÐÐ
­ ÚÐ-IÐÐ
­¦ÚÐ-FÐÐ
­ŸÚÐ-JÐÐ
­7ÚÐ-ÐÐ
­2ÚÐ-KÐÐ
­EÚÐ-LÐÐ
­HÚÐ-MÐÐ
­GÚÐ-%ÐÐ
­4ÚÐ-NÐÐ
­[ÚÐ-OÐÐ
­\ÚÐ-LÐÐ
­]ÚÐ-PÐÐ
­^ÚÐ-%ÐÐ
­ZÚÐ-QÐÐ
­8ÚÐ-RÐÐ
­KÚÐ-SÐÐ
­_ÚÐ-TÐÐ
­LÚÐ-UÐÐ
­iÚÐ-VÐÐ
­cÚÐ-TÐÐ
­UÚÐ-WÐÐ
­TÚÐ-!ÐÐ
­?ÚÐ-QÐÐ
­@ÚÐ-XÐÐ
­AÚÐ-YÐÐ
­>ÚÐ-QÐÐ
­0ÚÐ-ÐÐ
­rÚÐ-ÐÐ
­üÚÐ-ZÐÐ
­FÚÐ-[ÐÐ
­ÚÐ-\ÐÐ
­IÚÐ-]ÐÐ
­PÚÐ-^ÐÐ
­QÚÐ-_ÐÐ
­sÚÐ-`ÐÐ
­&ÚÐ-aÐÐ
­RÚÐ-%ÐÐ
­SÚÐ-bÐÐ
­
-ÚÐ-cÐÐ
­"ÚÐ-dÐÐ
­tÚÐ-eÐÐ
­]ÚÐ-fÐÐ
­êÚÐ-gÐÐ
­ÍÚÐ-hÐÐ
­ªÚÐ-iÐÐ
­ðÚÐ-jÐÐ
­ôÚÐ-kÐÐ
­õÚÐ-lÐÐ
­(ÚÐ-mÐÐ
­#ÚÐ-nÐÐ
­óÚÐ-%ÐÐ
­ñÚÐ-?ÐÐ
­YÚÐ-oÐÐ
­ÚÐ-pÐÐ
­´ÚÐ-qÐÐ
­ÙÚÐ-?ÐÐ
­ÚÚÐ-?ÐÐ
­\ÚÐ-rÐÐ
­gÚÐ-sÐÐ
­ÝÚÐ-tÐÐ
­”ÚÐ-uÐÐ
­aÚÐ-vÐÐ
­£ÚÐ-wÐÐ
­¬ÚÐ-%ÐÐ
­­ÚÐ-xÐÐ
­±ÚÐ-yÐÐ
­²ÚÐ-zÐÐ
­ìÚÐ-lÐÐ
­`ÚÐ-%ÐÐ
­÷ÚÐ-{ÐÐ
­$ÚÐ-zÐÐ
­øÚÐ-kÐÐ
­ùÚÐ-lÐÐ
­)ÚÐ-mÐÐ
­ûÚÐ-lÐÐ
­öÚÐ-%ÐÐ
­bÚÐ-|ÐÐ
­ÚÐ-}ÐÐ
­¹ÚÐ-~ÐÐ
­„ÚÐ-ÐÐ
­˜ÚÐ-€ÐÐ
­jÚÐ-ÐÐ
­fÚÐ-%ÐÐ
­ÓÚÐ-ÐÐ
­ÔÚÐ-xÐÐ
­ÕÚÐ-yÐÐ
­ÖÚÐ-‚ÐÐ
­ëÚÐ-lÐÐ
­ÒÚÐ-WÐÐ
­ÚÐ-jÐÐ
­ÚÐ-ƒÐÐ
­%ÚÐ-zÐÐ
­ÚÐ-lÐÐ
­*ÚÐ-mÐÐ
­ÚÐ-lÐÐ
­JÚÐ-%ÐÐ
­GÚÐ-„ÐÐ
­‡ÚÐ-…ÐÐ
­³ÚÐ-ÐÐ
­áÚÐ-ÐÐ
­âÚÐ-ÐÐ
­àÚÐ-†ÐÐ
­ŠÚÐ-‡ÐÐ
­‰ÚÐ-ÐÐ
­çÚÐ-ˆÐÐ
­eÚÐ-‰ÐÐ
­+ÚÐ-ŠÐÐ
­þÚÐ-‹ÐÐ
­ÚÐ-ŒÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ŽÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-‘ÐÐ
­
ÚÐ-’ÐÐ
­ÚÐ-“ÐÐ
­¾ÚÐ-”ÐÐ
­ÜÚÐ-•ÐÐ
­ÚÐ-–ÐÐ
­;ÚÐ-•ÐÐ
­ãÚÐ-—ÐÐ
­fÚÐ-‰ÐÐ
­RÚÐ-˜ÐÐ
­SÚÐ-‘ÐÐ
­<ÚÐ-•ÐÐ
­.ÚÐ-™ÐÐ
­ÚÐ-ŒÐÐ
­ÚÐ-šÐÐ
­ÚÐ-ŽÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-‘ÐÐ
­¿ÚÐ-’ÐÐ
­=ÚÐ-•ÐÐ
­åÚÐ-›ÐÐ
­,ÚÐ-ŠÐÐ
­WÚÐ-˜ÐÐ
­ÚÐ-ŒÐÐ
­ÚÐ-šÐÐ
­ÚÐ-œÐÐ
­ÚÐ-ÐÐ
­ ÚÐ-ÐÐ
­!ÚÐ-‘ÐÐ
­·ÚÐ-’ÐÐ
­RÚÐ-“ÐÐ
­>ÚÐ-•ÐÐ
­[ÚÐ-ÐÐ
­?ÚÐ-•ÐÐ
­	ÚÐ-žÐÐ
­gÚÐ-ÐÐ
­€ÚÐ-ŸÐÐ
­ÚÐ- ÐÐ
­ÚÐ-¡ÐÐ
­hÚÐ-¢ÐÐ
­ÚÐ-ÐÐ
­PÚÐ-£ÐÐ
­QÚÐ-ÐÐ
­fÚÐ-¤ÐÐ
­(ÚÐ-ÐÐ
­)ÚÐ-¥ÐÐ
­1ÚÐ-ÐÐ
­0ÚÐ-¦ÐÐ
­2ÚÐ-§ÐÐ
­3ÚÐ-ÐÐ
­+ÚÐ-ÐÐ
­NÚÐ-ÐÐ
­#ÚÐ-¨ÐÐ
­¶ÚÐ-©Ъ«Ð	E
+			;	%		END_IF&	2 : 	//Key		'	3 : 	//IO(	4 : 	//Media)	5 : 	//Hint*	6 : 	//State	+l		IF SysStrCmp(Client.sCommandToPLC, 'SC') =  0 THEN		,&			StateComplete();-x		ELSIF SysStrCmp(Client.sCommandToPLC, 'Start') =  0 THEN		.			Start();/v		ELSIF SysStrCmp(Client.sCommandToPLC, 'Stop') =  0 THEN		0			Stop();1x		ELSIF SysStrCmp(Client.sCommandToPLC, 'Reset') =  0 THEN		2			Reset();3x		ELSIF SysStrCmp(Client.sCommandToPLC, 'Abort') =  0 THEN		4			Abort();5x		ELSIF SysStrCmp(Client.sCommandToPLC, 'Clear') =  0 THEN		6			Clear();7v		ELSIF SysStrCmp(Client.sCommandToPLC, 'Hold') =  0 THEN		8			Hold();9z		ELSIF SysStrCmp(Client.sCommandToPLC, 'UnHold') =  0 THEN		:			Unhold();	;|		ELSIF SysStrCmp(Client.sCommandToPLC, 'Suspend') =  0 THEN		<			Suspend();=€		ELSIF SysStrCmp(Client.sCommandToPLC, 'UnSuspend') =  0 THEN		>			UnSuspend();?		@	END_CASEA6	Client.iCommandToPLC := 0;B8	Client.sCommandToPLC := '';C:	Client.bReadyToPLC := FALSE;D.CASE UM.CurrentState OFE,PACK_ML.State.Stopped:F;G,PACK_ML.State.Aborted:H&PACK_ML.State.Idle:I0PACK_ML.State.Complete :J.PACK_ML.State.Execute :KD	IF puzzleTimer.iProcess = 25 THENL@		IF Client.ActualStep < 30 THENMÊ			SendCommand(Command := CommandType.Hint ,Value := 'Enable the cabinet with PACKML, look up.');				N	END_IF	OD	IF puzzleTimer.iProcess = 30 THENPˆ			SendCommand(Command := CommandType.Media ,Value := 'PACKML');				Q	END_IFRD	IF puzzleTimer.iProcess = 50 THENSB		IF Client.ActualStep >= 30 THENTè			SendCommand(Command := CommandType.Hint ,Value := 'Enable the drives and positon them in the Automation Suite.');U		ELSE			V8    		overrideStart := TRUE;W		END_IF	XD	IF puzzleTimer.iProcess = 75 THENY–		SendCommand(Command := CommandType.Media ,Value := 'Automation Suite');		Z4	CASE Client.ActualStep OF[	0: // aborted\J		LaserGamePuzzle := PACK_ML.Aborted;]6		DO_Reset_Light := bl.OUT;^”		IF DI_Reset AND NOT DI_Auto_Hand_Switch AND DI_NoodstopCabinet THEN					_6			Client.ActualStep := 10;`6			DO_Reset_Light := FALSE;a:			DO_Spanning_Light := TRUE;b	10:	// StoppedcJ		LaserGamePuzzle := PACK_ML.Stopped;d6		DO_Storing_Light := TRUE;e€		IF (overrideStart OR DI_Init )AND NOT DI_Auto_Hand_Switch THENf6			Client.ActualStep := 20;g6			DO_HintLaser_ON := TRUE;h@			DO_Storing_Light := FALSE;			i		END_IF		jB		IF NOT DI_NoodstopCabinet THEN;k4			Client.ActualStep := 0;l8			DO_HintLaser_ON := FALSE;m<			DO_Spanning_Light := FALSE;n<			DO_Storing_Light := FALSE;	o	20: // IdlepD		LaserGamePuzzle := PACK_ML.Idle;qB		DO_In_Bedrijf_Light := bl2.OUT;r		IF (DI_Start_Switch AND NOT DI_Auto_Hand_Switch) OR overrideStart THENs<    		overrideStart := FALSE;	t>			DO_In_Bedrijf_Light	:= TRUE;u0			DO_Laser_ON := TRUE;	v8			Client.ActualStep := 30;	w¸			SendCommand(Command:= CommandType.Key, Value:= Client.KeyCommands[0]);	// cabinet enabledx*		IF NOT DI_Stop THENy:			Client.ActualStep := 10;		zB			DO_In_Bedrijf_Light := FALSE;	{F		IF NOT DI_NoodstopCabinet THEN;		|	30: // Execute}J		LaserGamePuzzle := PACK_ML.Execute;~:		ton(PT := T#2M,IN := TRUE);J		IF Lock_CO_Match THEN				//OR ton.Q€(			StateComplete();	8			DO_Laser_ON := FALSE;				‚@			DO_In_Bedrijf_Light := FALSE;ƒ8			Client.ActualStep := 0;		„	END_CASE …^	DO_Auto_Hand_Light := NOT DI_Auto_Hand_Switch;†R	Client.Progress := puzzleTimer.iProcess;‡ ˆ2PACK_ML.State.Resetting :‰6    overrideStart := FALSE;Š>	LaserGamePuzzle := PACK_ML.No;‹.	Client.Progress := 0;	Œ<	DO_In_Bedrijf_Light := FALSE;6	DO_Storing_Light := FALSE;Ž8	DO_Spanning_Light := FALSE;:	DO_Auto_Hand_Light := FALSE;2	DO_Reset_Light := FALSE;‘,	DO_Laser_ON := FALSE;’4	DO_HintLaser_ON := FALSE;“0	Lock_CO_Match := FALSE;”:	KEY_puzzleFinished := FALSE;•"	StateComplete();–0PACK_ML.State.Starting :—6PACK_ML.State.Completing :	˜0	Client.Progress := 100;™0PACK_ML.State.Aborting :š4	DO_Storing_Light := TRUE;›.PACK_ML.State.Stopping:œ6	DO_Spanning_Light := TRUE;0PACK_ML.State.Clearing :žEND_CASEŸfIF NOT (DI_EmergencyGF AND NOT DI_EmergencyFF) THEN (	// Emergency Abort.¡	Abort();	¢END_IF £LClient.ActualState := UM.CurrentState;¤>messageQueue(Client := Client);¥äpuzzleTimer(xStartTimer := UM.CurrentState = PACK_ML.State.Execute ,xPauseTimer := ,xStopTimer:= NOT (UM.CurrentState = PACK_ML.State.Execute),tMaxPuzzleTime := Client.Duration);¦FIF puzzleTimer.iProcess >= 100 THEN§	//Stop();¨rbl(ENABLE := TRUE,TIMELOW := T#250MS,TIMEHIGH:= T#500MS);©tbl2(ENABLE := TRUE,TIMELOW := T#500MS,TIMEHIGH:= T#500MS);ªInterface«L{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}¬@FUNCTION_BLOCK LaserStateMachine­VAR_IN_OUT®.	Client : PuzzleClient;¯END_VAR°VAR±8	UM					: PACK_ML.UnitMode; ²l	xInit				: BOOL := FALSE; // Flag for initialization	³<	puzzleTimer 		: PuzzleTimer;	´"	bl 					: blink;µ"	bl2 				: blink;¶ 	ton 				: TON;	·8	KEY_puzzleFinished 	: BOOL;¸2	Key_CO_Panel_On		: BOOL;¹.	overrideStart		: BOOL;º.	Lock_CO_Match		: BOOL;»L	//DI_NoodstopCabinet	: BOOL	:= TRUE ;¼:	messageQueue : MessageQueue;½"UniqueIdGenerator¾626¿POULevelÀL{8e575c5b-1d37-49c6-941b-5c0ec7874787}ÁStandard ChildObjectGuidsÃ8System.Collections.ArrayListÄ,AddAttributeSubsequentÅboolÐÐ-ÐÐ	E
+ôÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­lÚÐ-ÐÐ
­eÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ŽÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­”ÚÐ-ÐÐ
­®ÚÐ-ÐÐ
­–ÚÐ-ÐÐ
­µÚÐ-ÐÐ
­´ÚÐ- ÐÐ
­÷ÚÐ-!ÐÐ
­¶ÚÐ-"ÐÐ
­·ÚÐ-#ÐÐ
­øÚÐ-$ÐÐ
­¯ÚÐ-%ÐÐ
­©ÚÐ-&ÐÐ
­üÚÐ-ÐÐ
­ªÚÐ-'ÐÐ
­«ÚÐ-(ÐÐ
­¬ÚÐ-)ÐÐ
­­ÚÐ-*ÐÐ
­¹ÚÐ-+ÐÐ
­ºÚÐ-,ÐÐ
­»ÚÐ--ÐÐ
­¾ÚÐ-.ÐÐ
­¿ÚÐ-/ÐÐ
­ÀÚÐ-0ÐÐ
­ÁÚÐ-1ÐÐ
­ÂÚÐ-2ÐÐ
­ÃÚÐ-3ÐÐ
­ÄÚÐ-4ÐÐ
­ÅÚÐ-5ÐÐ
­ÆÚÐ-6ÐÐ
­ÇÚÐ-7ÐÐ
­ÈÚÐ-8ÐÐ
­ÉÚÐ-9ÐÐ
­ÎÚÐ-:ÐÐ
­ÏÚÐ-;ÐÐ
­ÐÚÐ-<ÐÐ
­ÑÚÐ-=ÐÐ
­¼ÚÐ->ÐÐ
­¸ÚÐ-%ÐÐ
­½ÚÐ-?ÐÐ
­—ÚÐ-@ÐÐ
­ÓÚÐ-ÐÐ
­ÕÚÐ-AÐÐ
­ÖÚÐ-BÐÐ
­×ÚÐ-CÐÐ
­•ÚÐ-ÐÐ
­‘ÚÐ-ÐÐ
­’ÚÐ-ÐÐ
­“ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-DÐÐ
­ÚÐ-EÐÐ
­uÚÐ-FÐÐ
­ÚÐ-GÐÐ
­vÚÐ-FÐÐ
­ÚÐ-HÐÐ
­wÚÐ-FÐÐ
­ ÚÐ-IÐÐ
­¦ÚÐ-FÐÐ
­ŸÚÐ-JÐÐ
­7ÚÐ-ÐÐ
­2ÚÐ-KÐÐ
­EÚÐ-LÐÐ
­HÚÐ-MÐÐ
­GÚÐ-%ÐÐ
­4ÚÐ-NÐÐ
­[ÚÐ-OÐÐ
­\ÚÐ-LÐÐ
­]ÚÐ-PÐÐ
­^ÚÐ-%ÐÐ
­ZÚÐ-QÐÐ
­8ÚÐ-RÐÐ
­KÚÐ-SÐÐ
­_ÚÐ-TÐÐ
­LÚÐ-UÐÐ
­iÚÐ-VÐÐ
­cÚÐ-TÐÐ
­UÚÐ-WÐÐ
­TÚÐ-!ÐÐ
­?ÚÐ-QÐÐ
­@ÚÐ-XÐÐ
­AÚÐ-YÐÐ
­>ÚÐ-QÐÐ
­0ÚÐ-ÐÐ
­rÚÐ-ÐÐ
­üÚÐ-ZÐÐ
­FÚÐ-[ÐÐ
­ÚÐ-\ÐÐ
­IÚÐ-]ÐÐ
­PÚÐ-^ÐÐ
­QÚÐ-_ÐÐ
­sÚÐ-`ÐÐ
­&ÚÐ-aÐÐ
­RÚÐ-%ÐÐ
­SÚÐ-bÐÐ
­
+ÚÐ-cÐÐ
­"ÚÐ-dÐÐ
­tÚÐ-eÐÐ
­]ÚÐ-fÐÐ
­êÚÐ-gÐÐ
­ÍÚÐ-hÐÐ
­ªÚÐ-iÐÐ
­ðÚÐ-jÐÐ
­ôÚÐ-kÐÐ
­õÚÐ-lÐÐ
­(ÚÐ-mÐÐ
­#ÚÐ-nÐÐ
­óÚÐ-%ÐÐ
­ñÚÐ-?ÐÐ
­YÚÐ-oÐÐ
­ÚÐ-pÐÐ
­´ÚÐ-qÐÐ
­ÙÚÐ-?ÐÐ
­ÚÚÐ-?ÐÐ
­\ÚÐ-rÐÐ
­gÚÐ-sÐÐ
­ÝÚÐ-tÐÐ
­”ÚÐ-uÐÐ
­aÚÐ-vÐÐ
­£ÚÐ-wÐÐ
­¬ÚÐ-%ÐÐ
­­ÚÐ-xÐÐ
­±ÚÐ-yÐÐ
­²ÚÐ-zÐÐ
­ìÚÐ-lÐÐ
­`ÚÐ-%ÐÐ
­÷ÚÐ-{ÐÐ
­$ÚÐ-zÐÐ
­øÚÐ-kÐÐ
­ùÚÐ-lÐÐ
­)ÚÐ-mÐÐ
­ûÚÐ-lÐÐ
­öÚÐ-%ÐÐ
­bÚÐ-|ÐÐ
­ÚÐ-}ÐÐ
­¹ÚÐ-~ÐÐ
­„ÚÐ-ÐÐ
­˜ÚÐ-€ÐÐ
­jÚÐ-ÐÐ
­fÚÐ-%ÐÐ
­ÓÚÐ-ÐÐ
­ÔÚÐ-xÐÐ
­ÕÚÐ-yÐÐ
­ÖÚÐ-‚ÐÐ
­ëÚÐ-lÐÐ
­ÒÚÐ-WÐÐ
­ÚÐ-jÐÐ
­ÚÐ-ƒÐÐ
­%ÚÐ-zÐÐ
­ÚÐ-lÐÐ
­*ÚÐ-mÐÐ
­ÚÐ-lÐÐ
­JÚÐ-%ÐÐ
­GÚÐ-„ÐÐ
­‡ÚÐ-…ÐÐ
­³ÚÐ-ÐÐ
­áÚÐ-ÐÐ
­âÚÐ-ÐÐ
­àÚÐ-†ÐÐ
­ŠÚÐ-‡ÐÐ
­‰ÚÐ-ÐÐ
­çÚÐ-ˆÐÐ
­eÚÐ-‰ÐÐ
­+ÚÐ-ŠÐÐ
­þÚÐ-‹ÐÐ
­ÚÐ-ŒÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ŽÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-‘ÐÐ
­
ÚÐ-’ÐÐ
­ÚÐ-“ÐÐ
­¾ÚÐ-”ÐÐ
­ÜÚÐ-•ÐÐ
­ÚÐ-–ÐÐ
­;ÚÐ-•ÐÐ
­ãÚÐ-—ÐÐ
­fÚÐ-‰ÐÐ
­RÚÐ-˜ÐÐ
­kÚÐ-ŒÐÐ
­lÚÐ-ÐÐ
­mÚÐ-ŽÐÐ
­nÚÐ-ÐÐ
­oÚÐ-ÐÐ
­pÚÐ-‘ÐÐ
­qÚÐ-’ÐÐ
­<ÚÐ-•ÐÐ
­.ÚÐ-™ÐÐ
­ÚÐ-ŒÐÐ
­ÚÐ-šÐÐ
­ÚÐ-ŽÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-‘ÐÐ
­¿ÚÐ-’ÐÐ
­=ÚÐ-•ÐÐ
­åÚÐ-›ÐÐ
­,ÚÐ-ŠÐÐ
­WÚÐ-˜ÐÐ
­ÚÐ-ŒÐÐ
­ÚÐ-šÐÐ
­ÚÐ-œÐÐ
­ÚÐ-ÐÐ
­ ÚÐ-ÐÐ
­!ÚÐ-‘ÐÐ
­·ÚÐ-’ÐÐ
­RÚÐ-“ÐÐ
­>ÚÐ-•ÐÐ
­[ÚÐ-ÐÐ
­?ÚÐ-•ÐÐ
­	ÚÐ-žÐÐ
­gÚÐ-ÐÐ
­€ÚÐ-ŸÐÐ
­ÚÐ- ÐÐ
­ÚÐ-¡ÐÐ
­hÚÐ-¢ÐÐ
­ÚÐ-ÐÐ
­PÚÐ-£ÐÐ
­QÚÐ-ÐÐ
­fÚÐ-¤ÐÐ
­(ÚÐ-ÐÐ
­)ÚÐ-¥ÐÐ
­1ÚÐ-ÐÐ
­0ÚÐ-¦ÐÐ
­2ÚÐ-§ÐÐ
­3ÚÐ-ÐÐ
­+ÚÐ-ÐÐ
­NÚÐ-ÐÐ
­#ÚÐ-¨ÐÐ
­¶ÚÐ-©Ъ«Ð	E
 ÐÐ
­ÚÐ-¬ÐÐ
­ÚÐ-­ÐÐ
­ÚÐ-®ÐÐ
­ÚÐ-¯ÐÐ
­ÚÐ-°ÐÐ
­ÚÐ-±ÐÐ
­ÚÐ-²ÐÐ
­%ÚÐ-³ÐÐ
­LÚÐ-´ÐÐ
­•ÚÐ-µÐÐ
­»ÚÐ-¶ÐÐ
­¥ÚÐ-·ÐÐ
­þÚÐ-¸ÐÐ
­dÚÐ-¹ÐÐ
­ýÚÐ-ºÐÐ
­MÚÐ-»ÐÐ
­MÚÐ-ÐÐ
­NÚÐ-ÐÐ
­OÚÐ-¼ÐÐ
­ÚÐ-¯ÐÐ
­ÚÐ-н-¾пÀ-ÁÂÃÐÄÅ­
\ No newline at end of file