InitialObjectDescriptor {
  objectDescriptorID 1
  ODProfileLevelIndication 1
  sceneProfileLevelIndication 1
  audioProfileLevelIndication 1
  visualProfileLevelIndication 1
  graphicsProfileLevelIndication 1

  esdescr [
    ES_Descriptor {
      es_id 1
      decConfigDescr DecoderConfigDescriptor {
				streamType 3
				decSpecificInfo BIFSv2Config {
				  isCommandStream true
				  pixelMetric true
				  pixelWidth 400
				  pixelHeight 400
				}
      }
    }
  ]
}

OrderedGroup {
	children [
		Background2D {
			backColor 1 1 1
		}
  WorldInfo {
   info [
    "GPAC Regression Tests" "$Date: 2007-07-27 09:46:09 $ - $Revision: 1.2 $" "(C) 2002-2004 GPAC Team"
    ]
   title "Othello using BIFS and ECMAScript"
  }
		DEF TimeOutSensor TimeSensor {
			enabled FALSE
			cycleInterval 0.15
		}			
		Transform2D {
			translation 0 180
			children [
				DEF StartTS TouchSensor {}
				Shape {
					geometry Rectangle { size 100 25 }
					appearance Appearance { material Material2D { emissiveColor 0.5 0.5 0.5 filled TRUE } }
				}
				Shape { 
					appearance Appearance { 
						material Material2D { 
							filled TRUE
							emissiveColor 1 0 0					
						}
					}
					geometry Text { 
						string [ "Start Game" ]
						fontStyle FontStyle {
							size 20			
							justify ["MIDDLE" "MIDDLE"]
						}
					}
				}
			]
		}
		Switch {
			whichChoice -1
			choice [
				DEF BlankPiece Transform2D {
					children [
						DEF BackRectangle Shape {
							geometry DEF R Rectangle { size 42 42 }
							appearance Appearance { 
								material Material2D { 
									filled TRUE 
									emissiveColor 0 0.5 0.5
								}
							}
						}	
						Shape {
							geometry DEF C Circle { radius 18 }
							appearance Appearance { 
								material Material2D { 
									filled TRUE 
									emissiveColor 0 0.5 0.5
								}
							}
						}
					]
				}
				DEF WhitePiece Transform2D {
					children [
						USE BackRectangle
						DEF WhiteC Shape {
							geometry USE C
							appearance Appearance { 
								material Material2D { 
									filled TRUE 
									emissiveColor 1 1 1 
								} 
							}
						}
					]
				}
				DEF WhiteTransPiece Transform2D {
					children [
						USE BackRectangle
						USE WhiteC
					]
				}
				DEF BlackPiece Transform2D {
					children [
						USE BackRectangle 
						DEF BlackC Shape {
							geometry USE C
							appearance Appearance { 
								material Material2D { 
									filled TRUE 
									emissiveColor 0 0 0 
								} 
							}
						}
					]
				}
				DEF BlackTransPiece Transform2D {
					children [
						USE BackRectangle 	
						USE BlackC
					]
				}
				DEF Trans1 Transform2D {
					children [
						USE BackRectangle 	
						Shape {
							geometry Text {
								string [ "1" ]
								fontStyle DEF TFS FontStyle {
									size 20
									justify [ "MIDDLE" "MIDDLE" ]
								}
							}
							appearance DEF TA Appearance { 
								material Material2D { 
									filled TRUE 
									emissiveColor 0 1 0 
								} 
							}
						}
					]
				}
				DEF Trans2 Transform2D {
					children [
						USE BackRectangle 	
						Shape {
							geometry Text {
								string [ "2" ]
								fontStyle USE TFS
							}
							appearance USE TA 
						}
					]
				}
				DEF Trans3 Transform2D {
					children [
						USE BackRectangle 	
						Shape {
							geometry Text {
								string [ "3" ]
								fontStyle USE TFS
							}
							appearance USE TA 
						}
					]
				}
				DEF Trans4 Transform2D {
					children [
						USE BackRectangle 	
						Shape {
							geometry Text {
								string [ "4" ]
								fontStyle USE TFS
							}
							appearance USE TA 
						}
					]
				}
				DEF Trans5 Transform2D {
					children [
						USE BackRectangle 	
						Shape {
							geometry Text {
								string [ "5" ]
								fontStyle USE TFS
							}
							appearance USE TA 
						}
					]
				}
				DEF Trans6 Transform2D {
					children [
						USE BackRectangle 	
						Shape {
							geometry Text {
								string [ "6" ]
								fontStyle USE TFS
							}
							appearance USE TA 
						}
					]
				}
				DEF Trans7 Transform2D {
					children [
						USE BackRectangle 	
						Shape {
							geometry Text {
								string [ "7" ]
								fontStyle USE TFS
							}
							appearance USE TA 
						}
					]
				}
				DEF Trans8 Transform2D {
					children [
						USE BackRectangle 	
						Shape {
							geometry Text {
								string [ "8" ]
								fontStyle USE TFS
							}
							appearance USE TA 
						}
					]
				}
				DEF Trans9 Transform2D {
					children [
						USE BackRectangle 	
						Shape {
							geometry Text {
								string [ "9" ]
								fontStyle USE TFS
							}
							appearance USE TA 
						}
					]
				}
				DEF Trans10 Transform2D {
					children [
						USE BackRectangle 	
						Shape {
							geometry Text {
								string [ "10" ]
								fontStyle USE TFS
							}
							appearance USE TA 
						}
					]
				}
				DEF Trans11 Transform2D {
					children [
						USE BackRectangle 	
						Shape {
							geometry Text {
								string [ "11" ]
								fontStyle USE TFS
							}
							appearance USE TA 
						}
					]
				}
				DEF Trans12 Transform2D {
					children [
						USE BackRectangle 	
						Shape {
							geometry Text {
								string [ "12" ]
								fontStyle USE TFS
							}
							appearance USE TA 
						}
					]
				}
				DEF Trans13 Transform2D {
					children [
						USE BackRectangle 	
						Shape {
							geometry Text {
								string [ "13" ]
								fontStyle USE TFS
							}
							appearance USE TA 
						}
					]
				}
				DEF Trans14 Transform2D {
					children [
						USE BackRectangle 	
						Shape {
							geometry Text {
								string [ "14" ]
								fontStyle USE TFS
							}
							appearance USE TA 
						}
					]
				}
				DEF Trans15 Transform2D {
					children [
						USE BackRectangle 	
						Shape {
							geometry Text {
								string [ "15" ]
								fontStyle USE TFS
							}
							appearance USE TA 
						}
					]
				}
				DEF Trans16 Transform2D {
					children [
						USE BackRectangle 	
						Shape {
							geometry Text {
								string [ "16" ]
								fontStyle USE TFS
							}
							appearance USE TA 
						}
					]
				}
				DEF Trans17 Transform2D {
					children [
						USE BackRectangle 	
						Shape {
							geometry Text {
								string [ "17" ]
								fontStyle USE TFS
							}
							appearance USE TA 
						}
					]
				}
				DEF Trans18 Transform2D {
					children [
						USE BackRectangle 	
						Shape {
							geometry Text {
								string [ "18" ]
								fontStyle USE TFS
							}
							appearance USE TA 
						}
					]
				}
				DEF Trans19 Transform2D {
					children [
						USE BackRectangle 	
						Shape {
							geometry Text {
								string [ "19" ]
								fontStyle USE TFS
							}
							appearance USE TA 
						}
					]
				}
				DEF Trans20 Transform2D {
					children [
						USE BackRectangle 	
						Shape {
							geometry Text {
								string [ "20" ]
								fontStyle USE TFS
							}
							appearance USE TA 
						}
					]
				}
				DEF Trans21 Transform2D {
					children [
						USE BackRectangle 	
						Shape {
							geometry Text {
								string [ "21" ]
								fontStyle USE TFS
							}
							appearance USE TA 
						}
					]
				}
				
			]
		}
		DEF Board Form {
			size 345 345
			groups [ 
				 1 -1  2 -1  3 -1  4 -1  5 -1  6 -1  7 -1  8 -1 
				 9 -1 10 -1 11 -1 12 -1 13 -1 14 -1 15 -1 16 -1 
				17 -1 18 -1 19 -1 20 -1 21 -1 22 -1 23 -1 24 -1
				25 -1 26 -1 27 -1 28 -1 29 -1 30 -1 31 -1 32 -1
				33 -1 34 -1 35 -1 36 -1 37 -1 38 -1 39 -1 40 -1
				41 -1 42 -1 43 -1 44 -1 45 -1 46 -1 47 -1 48 -1
				49 -1 50 -1 51 -1 52 -1 53 -1 54 -1 55 -1 56 -1
				57 -1 58 -1 59 -1 60 -1 61 -1 62 -1 63 -1 64 -1
				 1  2  3  4  5  6  7  8 -1 
				 9 10 11 12 13 14 15 16 -1
				17 18 19 20 21 22 23 24 -1
				25 26 27 28 29 30 31 32 -1
				33 34 35 36 37 38 39 40 -1
				41 42 43 44 45 46 47 48 -1
				49 50 51 52 53 54 55 56 -1
				57 58 59 60 61 62 63 64 -1
			]
			groupsIndex [ 
				 1  2  3  4  5  6  7  8 -1 
				 9 10 11 12 13 14 15 16 -1
				17 18 19 20 21 22 23 24 -1
				25 26 27 28 29 30 31 32 -1
				33 34 35 36 37 38 39 40 -1
				41 42 43 44 45 46 47 48 -1
				49 50 51 52 53 54 55 56 -1
				57 58 59 60 61 62 63 64 -1
				65 66 67 68 69 70 71 72 -1
			]
			constraints [ 
				"SHin" 
				"SHin" 
				"SHin" 
				"SHin" 
				"SHin" 
				"SHin" 
				"SHin" 
				"SHin" 
				"SVin" 
			]
			children [
				Transform2D {
					children [
						DEF TS00 TouchSensor {}
						USE BlankPiece
						DEF V00_Over Valuator {}
						DEF V00_Out Valuator {}
						DEF V00_Click Valuator {}
						DEF C00_Over Conditional {
							buffer {
								REPLACE V00_Over.inSFVec2f BY 0 0 
							}
						}
						DEF C00_Out Conditional {
							buffer {
								REPLACE V00_Out.inSFVec2f BY 0 0
							}
						}
						DEF C00_Click Conditional {
							buffer {
								REPLACE V00_Click.inSFVec2f BY 0 0
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS01 TouchSensor {}
						USE BlankPiece
						DEF V01_Over Valuator {}
						DEF V01_Out Valuator {}
						DEF V01_Click Valuator {}
						DEF C01_Over Conditional {
							buffer {
								REPLACE V01_Over.inSFVec2f BY 0 1 
							}
						}
						DEF C01_Out Conditional {
							buffer {
								REPLACE V01_Out.inSFVec2f BY 0 1
							}
						}
						DEF C01_Click Conditional {
							buffer {
								REPLACE V01_Click.inSFVec2f BY 0 1
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS02 TouchSensor {}
						USE BlankPiece
						DEF V02_Over Valuator {}
						DEF V02_Out Valuator {}
						DEF V02_Click Valuator {}
						DEF C02_Over Conditional {
							buffer {
								REPLACE V02_Over.inSFVec2f BY 0 2 
							}
						}
						DEF C02_Out Conditional {
							buffer {
								REPLACE V02_Out.inSFVec2f BY 0 2
							}
						}
						DEF C02_Click Conditional {
							buffer {
								REPLACE V02_Click.inSFVec2f BY 0 2
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS03 TouchSensor {}
						USE BlankPiece
						DEF V03_Over Valuator {}
						DEF V03_Out Valuator {}
						DEF V03_Click Valuator {}
						DEF C03_Over Conditional {
							buffer {
								REPLACE V03_Over.inSFVec2f BY 0 3 
							}
						}
						DEF C03_Out Conditional {
							buffer {
								REPLACE V03_Out.inSFVec2f BY 0 3
							}
						}
						DEF C03_Click Conditional {
							buffer {
								REPLACE V03_Click.inSFVec2f BY 0 3
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS04 TouchSensor {}
						USE BlankPiece
						DEF V04_Over Valuator {}
						DEF V04_Out Valuator {}
						DEF V04_Click Valuator {}
						DEF C04_Over Conditional {
							buffer {
								REPLACE V04_Over.inSFVec2f BY 0 4 
							}
						}
						DEF C04_Out Conditional {
							buffer {
								REPLACE V04_Out.inSFVec2f BY 0 4
							}
						}
						DEF C04_Click Conditional {
							buffer {
								REPLACE V04_Click.inSFVec2f BY 0 4
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS05 TouchSensor {}
						USE BlankPiece
						DEF V05_Over Valuator {}
						DEF V05_Out Valuator {}
						DEF V05_Click Valuator {}
						DEF C05_Over Conditional {
							buffer {
								REPLACE V05_Over.inSFVec2f BY 0 5 
							}
						}
						DEF C05_Out Conditional {
							buffer {
								REPLACE V05_Out.inSFVec2f BY 0 5
							}
						}
						DEF C05_Click Conditional {
							buffer {
								REPLACE V05_Click.inSFVec2f BY 0 5
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS06 TouchSensor {}
						USE BlankPiece
						DEF V06_Over Valuator {}
						DEF V06_Out Valuator {}
						DEF V06_Click Valuator {}
						DEF C06_Over Conditional {
							buffer {
								REPLACE V06_Over.inSFVec2f BY 0 6 
							}
						}
						DEF C06_Out Conditional {
							buffer {
								REPLACE V06_Out.inSFVec2f BY 0 6
							}
						}
						DEF C06_Click Conditional {
							buffer {
								REPLACE V06_Click.inSFVec2f BY 0 6
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS07 TouchSensor {}
						USE BlankPiece
						DEF V07_Over Valuator {}
						DEF V07_Out Valuator {}
						DEF V07_Click Valuator {}
						DEF C07_Over Conditional {
							buffer {
								REPLACE V07_Over.inSFVec2f BY 0 7 
							}
						}
						DEF C07_Out Conditional {
							buffer {
								REPLACE V07_Out.inSFVec2f BY 0 7
							}
						}
						DEF C07_Click Conditional {
							buffer {
								REPLACE V07_Click.inSFVec2f BY 0 7
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS10 TouchSensor {}
						USE BlankPiece
						DEF V10_Over Valuator {}
						DEF V10_Out Valuator {}
						DEF V10_Click Valuator {}
						DEF C10_Over Conditional {
							buffer {
								REPLACE V10_Over.inSFVec2f BY 1 0 
							}
						}
						DEF C10_Out Conditional {
							buffer {
								REPLACE V10_Out.inSFVec2f BY 1 0
							}
						}
						DEF C10_Click Conditional {
							buffer {
								REPLACE V10_Click.inSFVec2f BY 1 0
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS11 TouchSensor {}
						USE BlankPiece
						DEF V11_Over Valuator {}
						DEF V11_Out Valuator {}
						DEF V11_Click Valuator {}
						DEF C11_Over Conditional {
							buffer {
								REPLACE V11_Over.inSFVec2f BY 1 1 
							}
						}
						DEF C11_Out Conditional {
							buffer {
								REPLACE V11_Out.inSFVec2f BY 1 1
							}
						}
						DEF C11_Click Conditional {
							buffer {
								REPLACE V11_Click.inSFVec2f BY 1 1
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS12 TouchSensor {}
						USE BlankPiece
						DEF V12_Over Valuator {}
						DEF V12_Out Valuator {}
						DEF V12_Click Valuator {}
						DEF C12_Over Conditional {
							buffer {
								REPLACE V12_Over.inSFVec2f BY 1 2 
							}
						}
						DEF C12_Out Conditional {
							buffer {
								REPLACE V12_Out.inSFVec2f BY 1 2
							}
						}
						DEF C12_Click Conditional {
							buffer {
								REPLACE V12_Click.inSFVec2f BY 1 2
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS13 TouchSensor {}
						USE BlankPiece
						DEF V13_Over Valuator {}
						DEF V13_Out Valuator {}
						DEF V13_Click Valuator {}
						DEF C13_Over Conditional {
							buffer {
								REPLACE V13_Over.inSFVec2f BY 1 3 
							}
						}
						DEF C13_Out Conditional {
							buffer {
								REPLACE V13_Out.inSFVec2f BY 1 3
							}
						}
						DEF C13_Click Conditional {
							buffer {
								REPLACE V13_Click.inSFVec2f BY 1 3
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS14 TouchSensor {}
						USE BlankPiece
						DEF V14_Over Valuator {}
						DEF V14_Out Valuator {}
						DEF V14_Click Valuator {}
						DEF C14_Over Conditional {
							buffer {
								REPLACE V14_Over.inSFVec2f BY 1 4 
							}
						}
						DEF C14_Out Conditional {
							buffer {
								REPLACE V14_Out.inSFVec2f BY 1 4
							}
						}
						DEF C14_Click Conditional {
							buffer {
								REPLACE V14_Click.inSFVec2f BY 1 4
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS15 TouchSensor {}
						USE BlankPiece
						DEF V15_Over Valuator {}
						DEF V15_Out Valuator {}
						DEF V15_Click Valuator {}
						DEF C15_Over Conditional {
							buffer {
								REPLACE V15_Over.inSFVec2f BY 1 5 
							}
						}
						DEF C15_Out Conditional {
							buffer {
								REPLACE V15_Out.inSFVec2f BY 1 5
							}
						}
						DEF C15_Click Conditional {
							buffer {
								REPLACE V15_Click.inSFVec2f BY 1 5
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS16 TouchSensor {}
						USE BlankPiece
						DEF V16_Over Valuator {}
						DEF V16_Out Valuator {}
						DEF V16_Click Valuator {}
						DEF C16_Over Conditional {
							buffer {
								REPLACE V16_Over.inSFVec2f BY 1 6 
							}
						}
						DEF C16_Out Conditional {
							buffer {
								REPLACE V16_Out.inSFVec2f BY 1 6
							}
						}
						DEF C16_Click Conditional {
							buffer {
								REPLACE V16_Click.inSFVec2f BY 1 6
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS17 TouchSensor {}
						USE BlankPiece
						DEF V17_Over Valuator {}
						DEF V17_Out Valuator {}
						DEF V17_Click Valuator {}
						DEF C17_Over Conditional {
							buffer {
								REPLACE V17_Over.inSFVec2f BY 1 7 
							}
						}
						DEF C17_Out Conditional {
							buffer {
								REPLACE V17_Out.inSFVec2f BY 1 7
							}
						}
						DEF C17_Click Conditional {
							buffer {
								REPLACE V17_Click.inSFVec2f BY 1 7
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS20 TouchSensor {}
						USE BlankPiece
						DEF V20_Over Valuator {}
						DEF V20_Out Valuator {}
						DEF V20_Click Valuator {}
						DEF C20_Over Conditional {
							buffer {
								REPLACE V20_Over.inSFVec2f BY 2 0 
							}
						}
						DEF C20_Out Conditional {
							buffer {
								REPLACE V20_Out.inSFVec2f BY 2 0
							}
						}
						DEF C20_Click Conditional {
							buffer {
								REPLACE V20_Click.inSFVec2f BY 2 0
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS21 TouchSensor {}
						USE BlankPiece
						DEF V21_Over Valuator {}
						DEF V21_Out Valuator {}
						DEF V21_Click Valuator {}
						DEF C21_Over Conditional {
							buffer {
								REPLACE V21_Over.inSFVec2f BY 2 1 
							}
						}
						DEF C21_Out Conditional {
							buffer {
								REPLACE V21_Out.inSFVec2f BY 2 1
							}
						}
						DEF C21_Click Conditional {
							buffer {
								REPLACE V21_Click.inSFVec2f BY 2 1
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS22 TouchSensor {}
						USE BlankPiece
						DEF V22_Over Valuator {}
						DEF V22_Out Valuator {}
						DEF V22_Click Valuator {}
						DEF C22_Over Conditional {
							buffer {
								REPLACE V22_Over.inSFVec2f BY 2 2 
							}
						}
						DEF C22_Out Conditional {
							buffer {
								REPLACE V22_Out.inSFVec2f BY 2 2
							}
						}
						DEF C22_Click Conditional {
							buffer {
								REPLACE V22_Click.inSFVec2f BY 2 2
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS23 TouchSensor {}
						USE BlankPiece
						DEF V23_Over Valuator {}
						DEF V23_Out Valuator {}
						DEF V23_Click Valuator {}
						DEF C23_Over Conditional {
							buffer {
								REPLACE V23_Over.inSFVec2f BY 2 3 
							}
						}
						DEF C23_Out Conditional {
							buffer {
								REPLACE V23_Out.inSFVec2f BY 2 3
							}
						}
						DEF C23_Click Conditional {
							buffer {
								REPLACE V23_Click.inSFVec2f BY 2 3
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS24 TouchSensor {}
						USE BlankPiece
						DEF V24_Over Valuator {}
						DEF V24_Out Valuator {}
						DEF V24_Click Valuator {}
						DEF C24_Over Conditional {
							buffer {
								REPLACE V24_Over.inSFVec2f BY 2 4 
							}
						}
						DEF C24_Out Conditional {
							buffer {
								REPLACE V24_Out.inSFVec2f BY 2 4
							}
						}
						DEF C24_Click Conditional {
							buffer {
								REPLACE V24_Click.inSFVec2f BY 2 4
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS25 TouchSensor {}
						USE BlankPiece
						DEF V25_Over Valuator {}
						DEF V25_Out Valuator {}
						DEF V25_Click Valuator {}
						DEF C25_Over Conditional {
							buffer {
								REPLACE V25_Over.inSFVec2f BY 2 5 
							}
						}
						DEF C25_Out Conditional {
							buffer {
								REPLACE V25_Out.inSFVec2f BY 2 5
							}
						}
						DEF C25_Click Conditional {
							buffer {
								REPLACE V25_Click.inSFVec2f BY 2 5
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS26 TouchSensor {}
						USE BlankPiece
						DEF V26_Over Valuator {}
						DEF V26_Out Valuator {}
						DEF V26_Click Valuator {}
						DEF C26_Over Conditional {
							buffer {
								REPLACE V26_Over.inSFVec2f BY 2 6 
							}
						}
						DEF C26_Out Conditional {
							buffer {
								REPLACE V26_Out.inSFVec2f BY 2 6
							}
						}
						DEF C26_Click Conditional {
							buffer {
								REPLACE V26_Click.inSFVec2f BY 2 6
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS27 TouchSensor {}
						USE BlankPiece
						DEF V27_Over Valuator {}
						DEF V27_Out Valuator {}
						DEF V27_Click Valuator {}
						DEF C27_Over Conditional {
							buffer {
								REPLACE V27_Over.inSFVec2f BY 2 7 
							}
						}
						DEF C27_Out Conditional {
							buffer {
								REPLACE V27_Out.inSFVec2f BY 2 7
							}
						}
						DEF C27_Click Conditional {
							buffer {
								REPLACE V27_Click.inSFVec2f BY 2 7
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS30 TouchSensor {}
						USE BlankPiece
						DEF V30_Over Valuator {}
						DEF V30_Out Valuator {}
						DEF V30_Click Valuator {}
						DEF C30_Over Conditional {
							buffer {
								REPLACE V30_Over.inSFVec2f BY 3 0 
							}
						}
						DEF C30_Out Conditional {
							buffer {
								REPLACE V30_Out.inSFVec2f BY 3 0
							}
						}
						DEF C30_Click Conditional {
							buffer {
								REPLACE V30_Click.inSFVec2f BY 3 0
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS31 TouchSensor {}
						USE BlankPiece
						DEF V31_Over Valuator {}
						DEF V31_Out Valuator {}
						DEF V31_Click Valuator {}
						DEF C31_Over Conditional {
							buffer {
								REPLACE V31_Over.inSFVec2f BY 3 1 
							}
						}
						DEF C31_Out Conditional {
							buffer {
								REPLACE V31_Out.inSFVec2f BY 3 1
							}
						}
						DEF C31_Click Conditional {
							buffer {
								REPLACE V31_Click.inSFVec2f BY 3 1
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS32 TouchSensor {}
						USE BlankPiece
						DEF V32_Over Valuator {}
						DEF V32_Out Valuator {}
						DEF V32_Click Valuator {}
						DEF C32_Over Conditional {
							buffer {
								REPLACE V32_Over.inSFVec2f BY 3 2 
							}
						}
						DEF C32_Out Conditional {
							buffer {
								REPLACE V32_Out.inSFVec2f BY 3 2
							}
						}
						DEF C32_Click Conditional {
							buffer {
								REPLACE V32_Click.inSFVec2f BY 3 2
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS33 TouchSensor {}
						USE WhitePiece
						DEF V33_Over Valuator {}
						DEF V33_Out Valuator {}
						DEF V33_Click Valuator {}
						DEF C33_Over Conditional {
							buffer {
								REPLACE V33_Over.inSFVec2f BY 3 3 
							}
						}
						DEF C33_Out Conditional {
							buffer {
								REPLACE V33_Out.inSFVec2f BY 3 3
							}
						}
						DEF C33_Click Conditional {
							buffer {
								REPLACE V33_Click.inSFVec2f BY 3 3
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS34 TouchSensor {}
						USE BlackPiece
						DEF V34_Over Valuator {}
						DEF V34_Out Valuator {}
						DEF V34_Click Valuator {}
						DEF C34_Over Conditional {
							buffer {
								REPLACE V34_Over.inSFVec2f BY 3 4 
							}
						}
						DEF C34_Out Conditional {
							buffer {
								REPLACE V34_Out.inSFVec2f BY 3 4
							}
						}
						DEF C34_Click Conditional {
							buffer {
								REPLACE V34_Click.inSFVec2f BY 3 4
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS35 TouchSensor {}
						USE BlankPiece
						DEF V35_Over Valuator {}
						DEF V35_Out Valuator {}
						DEF V35_Click Valuator {}
						DEF C35_Over Conditional {
							buffer {
								REPLACE V35_Over.inSFVec2f BY 3 5 
							}
						}
						DEF C35_Out Conditional {
							buffer {
								REPLACE V35_Out.inSFVec2f BY 3 5
							}
						}
						DEF C35_Click Conditional {
							buffer {
								REPLACE V35_Click.inSFVec2f BY 3 5
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS36 TouchSensor {}
						USE BlankPiece
						DEF V36_Over Valuator {}
						DEF V36_Out Valuator {}
						DEF V36_Click Valuator {}
						DEF C36_Over Conditional {
							buffer {
								REPLACE V36_Over.inSFVec2f BY 3 6 
							}
						}
						DEF C36_Out Conditional {
							buffer {
								REPLACE V36_Out.inSFVec2f BY 3 6
							}
						}
						DEF C36_Click Conditional {
							buffer {
								REPLACE V36_Click.inSFVec2f BY 3 6
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS37 TouchSensor {}
						USE BlankPiece
						DEF V37_Over Valuator {}
						DEF V37_Out Valuator {}
						DEF V37_Click Valuator {}
						DEF C37_Over Conditional {
							buffer {
								REPLACE V37_Over.inSFVec2f BY 3 7 
							}
						}
						DEF C37_Out Conditional {
							buffer {
								REPLACE V37_Out.inSFVec2f BY 3 7
							}
						}
						DEF C37_Click Conditional {
							buffer {
								REPLACE V37_Click.inSFVec2f BY 3 7
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS40 TouchSensor {}
						USE BlankPiece
						DEF V40_Over Valuator {}
						DEF V40_Out Valuator {}
						DEF V40_Click Valuator {}
						DEF C40_Over Conditional {
							buffer {
								REPLACE V40_Over.inSFVec2f BY 4 0 
							}
						}
						DEF C40_Out Conditional {
							buffer {
								REPLACE V40_Out.inSFVec2f BY 4 0
							}
						}
						DEF C40_Click Conditional {
							buffer {
								REPLACE V40_Click.inSFVec2f BY 4 0
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS41 TouchSensor {}
						USE BlankPiece
						DEF V41_Over Valuator {}
						DEF V41_Out Valuator {}
						DEF V41_Click Valuator {}
						DEF C41_Over Conditional {
							buffer {
								REPLACE V41_Over.inSFVec2f BY 4 1 
							}
						}
						DEF C41_Out Conditional {
							buffer {
								REPLACE V41_Out.inSFVec2f BY 4 1
							}
						}
						DEF C41_Click Conditional {
							buffer {
								REPLACE V41_Click.inSFVec2f BY 4 1
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS42 TouchSensor {}
						USE BlankPiece
						DEF V42_Over Valuator {}
						DEF V42_Out Valuator {}
						DEF V42_Click Valuator {}
						DEF C42_Over Conditional {
							buffer {
								REPLACE V42_Over.inSFVec2f BY 4 2 
							}
						}
						DEF C42_Out Conditional {
							buffer {
								REPLACE V42_Out.inSFVec2f BY 4 2
							}
						}
						DEF C42_Click Conditional {
							buffer {
								REPLACE V42_Click.inSFVec2f BY 4 2
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS43 TouchSensor {}
						USE BlackPiece
						DEF V43_Over Valuator {}
						DEF V43_Out Valuator {}
						DEF V43_Click Valuator {}
						DEF C43_Over Conditional {
							buffer {
								REPLACE V43_Over.inSFVec2f BY 4 3 
							}
						}
						DEF C43_Out Conditional {
							buffer {
								REPLACE V43_Out.inSFVec2f BY 4 3
							}
						}
						DEF C43_Click Conditional {
							buffer {
								REPLACE V43_Click.inSFVec2f BY 4 3
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS44 TouchSensor {}
						USE WhitePiece
						DEF V44_Over Valuator {}
						DEF V44_Out Valuator {}
						DEF V44_Click Valuator {}
						DEF C44_Over Conditional {
							buffer {
								REPLACE V44_Over.inSFVec2f BY 4 4 
							}
						}
						DEF C44_Out Conditional {
							buffer {
								REPLACE V44_Out.inSFVec2f BY 4 4
							}
						}
						DEF C44_Click Conditional {
							buffer {
								REPLACE V44_Click.inSFVec2f BY 4 4
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS45 TouchSensor {}
						USE BlankPiece
						DEF V45_Over Valuator {}
						DEF V45_Out Valuator {}
						DEF V45_Click Valuator {}
						DEF C45_Over Conditional {
							buffer {
								REPLACE V45_Over.inSFVec2f BY 4 5 
							}
						}
						DEF C45_Out Conditional {
							buffer {
								REPLACE V45_Out.inSFVec2f BY 4 5
							}
						}
						DEF C45_Click Conditional {
							buffer {
								REPLACE V45_Click.inSFVec2f BY 4 5
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS46 TouchSensor {}
						USE BlankPiece
						DEF V46_Over Valuator {}
						DEF V46_Out Valuator {}
						DEF V46_Click Valuator {}
						DEF C46_Over Conditional {
							buffer {
								REPLACE V46_Over.inSFVec2f BY 4 6 
							}
						}
						DEF C46_Out Conditional {
							buffer {
								REPLACE V46_Out.inSFVec2f BY 4 6
							}
						}
						DEF C46_Click Conditional {
							buffer {
								REPLACE V46_Click.inSFVec2f BY 4 6
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS47 TouchSensor {}
						USE BlankPiece
						DEF V47_Over Valuator {}
						DEF V47_Out Valuator {}
						DEF V47_Click Valuator {}
						DEF C47_Over Conditional {
							buffer {
								REPLACE V47_Over.inSFVec2f BY 4 7 
							}
						}
						DEF C47_Out Conditional {
							buffer {
								REPLACE V47_Out.inSFVec2f BY 4 7
							}
						}
						DEF C47_Click Conditional {
							buffer {
								REPLACE V47_Click.inSFVec2f BY 4 7
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS50 TouchSensor {}
						USE BlankPiece
						DEF V50_Over Valuator {}
						DEF V50_Out Valuator {}
						DEF V50_Click Valuator {}
						DEF C50_Over Conditional {
							buffer {
								REPLACE V50_Over.inSFVec2f BY 5 0 
							}
						}
						DEF C50_Out Conditional {
							buffer {
								REPLACE V50_Out.inSFVec2f BY 5 0
							}
						}
						DEF C50_Click Conditional {
							buffer {
								REPLACE V50_Click.inSFVec2f BY 5 0
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS51 TouchSensor {}
						USE BlankPiece
						DEF V51_Over Valuator {}
						DEF V51_Out Valuator {}
						DEF V51_Click Valuator {}
						DEF C51_Over Conditional {
							buffer {
								REPLACE V51_Over.inSFVec2f BY 5 1 
							}
						}
						DEF C51_Out Conditional {
							buffer {
								REPLACE V51_Out.inSFVec2f BY 5 1
							}
						}
						DEF C51_Click Conditional {
							buffer {
								REPLACE V51_Click.inSFVec2f BY 5 1
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS52 TouchSensor {}
						USE BlankPiece
						DEF V52_Over Valuator {}
						DEF V52_Out Valuator {}
						DEF V52_Click Valuator {}
						DEF C52_Over Conditional {
							buffer {
								REPLACE V52_Over.inSFVec2f BY 5 2 
							}
						}
						DEF C52_Out Conditional {
							buffer {
								REPLACE V52_Out.inSFVec2f BY 5 2
							}
						}
						DEF C52_Click Conditional {
							buffer {
								REPLACE V52_Click.inSFVec2f BY 5 2
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS53 TouchSensor {}
						USE BlankPiece
						DEF V53_Over Valuator {}
						DEF V53_Out Valuator {}
						DEF V53_Click Valuator {}
						DEF C53_Over Conditional {
							buffer {
								REPLACE V53_Over.inSFVec2f BY 5 3 
							}
						}
						DEF C53_Out Conditional {
							buffer {
								REPLACE V53_Out.inSFVec2f BY 5 3
							}
						}
						DEF C53_Click Conditional {
							buffer {
								REPLACE V53_Click.inSFVec2f BY 5 3
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS54 TouchSensor {}
						USE BlankPiece
						DEF V54_Over Valuator {}
						DEF V54_Out Valuator {}
						DEF V54_Click Valuator {}
						DEF C54_Over Conditional {
							buffer {
								REPLACE V54_Over.inSFVec2f BY 5 4 
							}
						}
						DEF C54_Out Conditional {
							buffer {
								REPLACE V54_Out.inSFVec2f BY 5 4
							}
						}
						DEF C54_Click Conditional {
							buffer {
								REPLACE V54_Click.inSFVec2f BY 5 4
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS55 TouchSensor {}
						USE BlankPiece
						DEF V55_Over Valuator {}
						DEF V55_Out Valuator {}
						DEF V55_Click Valuator {}
						DEF C55_Over Conditional {
							buffer {
								REPLACE V55_Over.inSFVec2f BY 5 5 
							}
						}
						DEF C55_Out Conditional {
							buffer {
								REPLACE V55_Out.inSFVec2f BY 5 5
							}
						}
						DEF C55_Click Conditional {
							buffer {
								REPLACE V55_Click.inSFVec2f BY 5 5
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS56 TouchSensor {}
						USE BlankPiece
						DEF V56_Over Valuator {}
						DEF V56_Out Valuator {}
						DEF V56_Click Valuator {}
						DEF C56_Over Conditional {
							buffer {
								REPLACE V56_Over.inSFVec2f BY 5 6 
							}
						}
						DEF C56_Out Conditional {
							buffer {
								REPLACE V56_Out.inSFVec2f BY 5 6
							}
						}
						DEF C56_Click Conditional {
							buffer {
								REPLACE V56_Click.inSFVec2f BY 5 6
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS57 TouchSensor {}
						USE BlankPiece
						DEF V57_Over Valuator {}
						DEF V57_Out Valuator {}
						DEF V57_Click Valuator {}
						DEF C57_Over Conditional {
							buffer {
								REPLACE V57_Over.inSFVec2f BY 5 7 
							}
						}
						DEF C57_Out Conditional {
							buffer {
								REPLACE V57_Out.inSFVec2f BY 5 7
							}
						}
						DEF C57_Click Conditional {
							buffer {
								REPLACE V57_Click.inSFVec2f BY 5 7
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS60 TouchSensor {}
						USE BlankPiece
						DEF V60_Over Valuator {}
						DEF V60_Out Valuator {}
						DEF V60_Click Valuator {}
						DEF C60_Over Conditional {
							buffer {
								REPLACE V60_Over.inSFVec2f BY 6 0 
							}
						}
						DEF C60_Out Conditional {
							buffer {
								REPLACE V60_Out.inSFVec2f BY 6 0
							}
						}
						DEF C60_Click Conditional {
							buffer {
								REPLACE V60_Click.inSFVec2f BY 6 0
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS61 TouchSensor {}
						USE BlankPiece
						DEF V61_Over Valuator {}
						DEF V61_Out Valuator {}
						DEF V61_Click Valuator {}
						DEF C61_Over Conditional {
							buffer {
								REPLACE V61_Over.inSFVec2f BY 6 1 
							}
						}
						DEF C61_Out Conditional {
							buffer {
								REPLACE V61_Out.inSFVec2f BY 6 1
							}
						}
						DEF C61_Click Conditional {
							buffer {
								REPLACE V61_Click.inSFVec2f BY 6 1
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS62 TouchSensor {}
						USE BlankPiece
						DEF V62_Over Valuator {}
						DEF V62_Out Valuator {}
						DEF V62_Click Valuator {}
						DEF C62_Over Conditional {
							buffer {
								REPLACE V62_Over.inSFVec2f BY 6 2 
							}
						}
						DEF C62_Out Conditional {
							buffer {
								REPLACE V62_Out.inSFVec2f BY 6 2
							}
						}
						DEF C62_Click Conditional {
							buffer {
								REPLACE V62_Click.inSFVec2f BY 6 2
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS63 TouchSensor {}
						USE BlankPiece
						DEF V63_Over Valuator {}
						DEF V63_Out Valuator {}
						DEF V63_Click Valuator {}
						DEF C63_Over Conditional {
							buffer {
								REPLACE V63_Over.inSFVec2f BY 6 3 
							}
						}
						DEF C63_Out Conditional {
							buffer {
								REPLACE V63_Out.inSFVec2f BY 6 3
							}
						}
						DEF C63_Click Conditional {
							buffer {
								REPLACE V63_Click.inSFVec2f BY 6 3
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS64 TouchSensor {}
						USE BlankPiece
						DEF V64_Over Valuator {}
						DEF V64_Out Valuator {}
						DEF V64_Click Valuator {}
						DEF C64_Over Conditional {
							buffer {
								REPLACE V64_Over.inSFVec2f BY 6 4 
							}
						}
						DEF C64_Out Conditional {
							buffer {
								REPLACE V64_Out.inSFVec2f BY 6 4
							}
						}
						DEF C64_Click Conditional {
							buffer {
								REPLACE V64_Click.inSFVec2f BY 6 4
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS65 TouchSensor {}
						USE BlankPiece
						DEF V65_Over Valuator {}
						DEF V65_Out Valuator {}
						DEF V65_Click Valuator {}
						DEF C65_Over Conditional {
							buffer {
								REPLACE V65_Over.inSFVec2f BY 6 5 
							}
						}
						DEF C65_Out Conditional {
							buffer {
								REPLACE V65_Out.inSFVec2f BY 6 5
							}
						}
						DEF C65_Click Conditional {
							buffer {
								REPLACE V65_Click.inSFVec2f BY 6 5
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS66 TouchSensor {}
						USE BlankPiece
						DEF V66_Over Valuator {}
						DEF V66_Out Valuator {}
						DEF V66_Click Valuator {}
						DEF C66_Over Conditional {
							buffer {
								REPLACE V66_Over.inSFVec2f BY 6 6 
							}
						}
						DEF C66_Out Conditional {
							buffer {
								REPLACE V66_Out.inSFVec2f BY 6 6
							}
						}
						DEF C66_Click Conditional {
							buffer {
								REPLACE V66_Click.inSFVec2f BY 6 6
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS67 TouchSensor {}
						USE BlankPiece
						DEF V67_Over Valuator {}
						DEF V67_Out Valuator {}
						DEF V67_Click Valuator {}
						DEF C67_Over Conditional {
							buffer {
								REPLACE V67_Over.inSFVec2f BY 6 7 
							}
						}
						DEF C67_Out Conditional {
							buffer {
								REPLACE V67_Out.inSFVec2f BY 6 7
							}
						}
						DEF C67_Click Conditional {
							buffer {
								REPLACE V67_Click.inSFVec2f BY 6 7
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS70 TouchSensor {}
						USE BlankPiece
						DEF V70_Over Valuator {}
						DEF V70_Out Valuator {}
						DEF V70_Click Valuator {}
						DEF C70_Over Conditional {
							buffer {
								REPLACE V70_Over.inSFVec2f BY 7 0 
							}
						}
						DEF C70_Out Conditional {
							buffer {
								REPLACE V70_Out.inSFVec2f BY 7 0
							}
						}
						DEF C70_Click Conditional {
							buffer {
								REPLACE V70_Click.inSFVec2f BY 7 0
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS71 TouchSensor {}
						USE BlankPiece
						DEF V71_Over Valuator {}
						DEF V71_Out Valuator {}
						DEF V71_Click Valuator {}
						DEF C71_Over Conditional {
							buffer {
								REPLACE V71_Over.inSFVec2f BY 7 1 
							}
						}
						DEF C71_Out Conditional {
							buffer {
								REPLACE V71_Out.inSFVec2f BY 7 1
							}
						}
						DEF C71_Click Conditional {
							buffer {
								REPLACE V71_Click.inSFVec2f BY 7 1
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS72 TouchSensor {}
						USE BlankPiece
						DEF V72_Over Valuator {}
						DEF V72_Out Valuator {}
						DEF V72_Click Valuator {}
						DEF C72_Over Conditional {
							buffer {
								REPLACE V72_Over.inSFVec2f BY 7 2 
							}
						}
						DEF C72_Out Conditional {
							buffer {
								REPLACE V72_Out.inSFVec2f BY 7 2
							}
						}
						DEF C72_Click Conditional {
							buffer {
								REPLACE V72_Click.inSFVec2f BY 7 2
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS73 TouchSensor {}
						USE BlankPiece
						DEF V73_Over Valuator {}
						DEF V73_Out Valuator {}
						DEF V73_Click Valuator {}
						DEF C73_Over Conditional {
							buffer {
								REPLACE V73_Over.inSFVec2f BY 7 3 
							}
						}
						DEF C73_Out Conditional {
							buffer {
								REPLACE V73_Out.inSFVec2f BY 7 3
							}
						}
						DEF C73_Click Conditional {
							buffer {
								REPLACE V73_Click.inSFVec2f BY 7 3
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS74 TouchSensor {}
						USE BlankPiece
						DEF V74_Over Valuator {}
						DEF V74_Out Valuator {}
						DEF V74_Click Valuator {}
						DEF C74_Over Conditional {
							buffer {
								REPLACE V74_Over.inSFVec2f BY 7 4 
							}
						}
						DEF C74_Out Conditional {
							buffer {
								REPLACE V74_Out.inSFVec2f BY 7 4
							}
						}
						DEF C74_Click Conditional {
							buffer {
								REPLACE V74_Click.inSFVec2f BY 7 4
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS75 TouchSensor {}
						USE BlankPiece
						DEF V75_Over Valuator {}
						DEF V75_Out Valuator {}
						DEF V75_Click Valuator {}
						DEF C75_Over Conditional {
							buffer {
								REPLACE V75_Over.inSFVec2f BY 7 5 
							}
						}
						DEF C75_Out Conditional {
							buffer {
								REPLACE V75_Out.inSFVec2f BY 7 5
							}
						}
						DEF C75_Click Conditional {
							buffer {
								REPLACE V75_Click.inSFVec2f BY 7 5
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS76 TouchSensor {}
						USE BlankPiece
						DEF V76_Over Valuator {}
						DEF V76_Out Valuator {}
						DEF V76_Click Valuator {}
						DEF C76_Over Conditional {
							buffer {
								REPLACE V76_Over.inSFVec2f BY 7 6 
							}
						}
						DEF C76_Out Conditional {
							buffer {
								REPLACE V76_Out.inSFVec2f BY 7 6
							}
						}
						DEF C76_Click Conditional {
							buffer {
								REPLACE V76_Click.inSFVec2f BY 7 6
							}
						}
					]
				}
				Transform2D {
					children [
						DEF TS77 TouchSensor {}
						USE BlankPiece
						DEF V77_Over Valuator {}
						DEF V77_Out Valuator {}
						DEF V77_Click Valuator {}
						DEF C77_Over Conditional {
							buffer {
								REPLACE V77_Over.inSFVec2f BY 7 7 
							}
						}
						DEF C77_Out Conditional {
							buffer {
								REPLACE V77_Out.inSFVec2f BY 7 7
							}
						}
						DEF C77_Click Conditional {
							buffer {
								REPLACE V77_Click.inSFVec2f BY 7 7
							}
						}
					]
				}
			]
		}
		DEF SC Script { 
eventIn SFBool startGame
eventIn SFVec2f mouseOver
eventIn SFVec2f mouseOut
eventIn SFVec2f click			
eventIn SFBool timeOut

field SFNode timer USE TimeOutSensor

# some internal global variables
field MFNode picture [ 
	USE BlankPiece
	USE WhitePiece
	USE BlackPiece
	USE WhiteTransPiece
	USE BlackTransPiece
	USE Trans1
	USE Trans2
	USE Trans3
	USE Trans4
	USE Trans5
	USE Trans6
	USE Trans7
	USE Trans8
	USE Trans9
	USE Trans10
	USE Trans11
	USE Trans12
	USE Trans13
	USE Trans14
	USE Trans15
	USE Trans16
	USE Trans17
	USE Trans18
	USE Trans19
	USE Trans20
	USE Trans21
]
field SFNode images USE Board

			url "javascript:
// JavaScript Othello Game
// Copyright (c) 2000, 2001 Kelly Yancey <kbyanc@posi.net>
// All rights reserved.
//
// Redistribution and use in source form, with or without modification, is
// permitted provided that the following conditions are met:
// 1. Redistributions of source code must retain the above copyright
//    notice, this list of conditions and the following disclaimer,
//    without modification, immediately at the beginning of the file.
// 2. All advertising materials mentioning features or use of this software
//    must display the following acknowledgement:
//      This product includes software developed by Kelly Yancey     
//    and a reference to the URL http://www.posi.net/software/othello/
// 3. The name of the author may not be used to endorse or promote products
//    derived from this software without specific prior written permission.
//    
// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  
// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT  
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

// picture numbers
function initialize() {
EMPTY = 0;		// empty square
WHITE = 1;		// white piece
BLACK = 2;		// black piece
WHITETRANS = 3;		// white transparent cursor piece
BLACKTRANS = 4;		// black transparent cursor piece
NUMBASE = 5;		// beginning of numeric pictures

// size of the pictures used to represent pieces (all pictures must be the same size)
piecewidth = 42;
pieceheight = 42;

// size of the board
width = 8;
height = 8;

// player settings
human = BLACK;
showcursor = true;	// display cursor showing user where they can go
showflips = false;	// display counts showing how many pieces they can flip by putting a piece in a given square

// AI settings
weightsquares = 1;	// whether AI prefers squares that yield higher flip counts
edgesensitive = 1;	// whether AI is sensitive to the importance of edge squares

// some internal global variables
board = new Array(width);
score = new Array();
turn = BLACK;


human = BLACK;
showcursor = true;
showflips = true;
weightsquares = true;
edgesensitive = true;

InitializeBoard();

Play(0);

}

function piece(x,y) {
// object definition for 'piece' type
	this.imagenum = x * width + y;
    this.player = EMPTY;
    // how many pieces each player could flip by taking this square
    this.flips = new Array();
    this.flips[WHITE] = 0;
    this.flips[BLACK] = 0;
    // how valuable this location is to each player
    this.value = new Array();
    this.value[WHITE] = 0;
    this.value[BLACK] = 0;
}


function SetPieceImage(x, y, src) {
// routine to set the image associated with the given piece
    if(images.children[board[x][y].imagenum].children[1] != src) {
		// we explicitely check to see if we are changing the image source to prevent
		// unnecessary redrawing of images which do not change
		images.children[board[x][y].imagenum].children[1] = src;
    }
}

function InitializeBoard() {
// routine to initialize the state of the game and draw the board
    // build the board array
    for(x = 0; x < width; x++)
	board[x] = new Array (height);

    for(y = 0; y < height; y++) {
	for(x = 0; x < width; x++) {
	    // place initial pieces
	    if((x == 3 && y == 3) || (x == 4 && y == 4)) player = WHITE;
	    else if((x == 3 && y == 4) || (x == 4 && y == 3)) player = BLACK;
	    else player = EMPTY;
	    board[x][y] = new piece(x,y);
	    board[x][y].player = player;
	}
    }
    // initialize scores
    score[WHITE] = 2;
    score[BLACK] = 2;
}

function ResetBoard() {
// routine to reset all of the pieces on the board

    // reset the board
    for(y = 0; y < height; y++) {
	for(x = 0; x < width; x++) {
	    board[x][y].player = EMPTY;
	    SetPieceImage(x, y, picture[EMPTY]);
	}
    }

    // reset scores
    score[WHITE] = 0;
    score[BLACK] = 0;

    // put initial pieces back on the board
    RawPutPiece(3, 3, WHITE);
    RawPutPiece(4, 4, WHITE);
    RawPutPiece(3, 4, BLACK);
    RawPutPiece(4, 3, BLACK);

    turn = BLACK;
}

function NumFlips(x, y, player) {
    count = 0;

    for(deltay = -1; deltay <= 1; deltay++) {
	for(deltax = -1; deltax <= 1; deltax++) {
	    for(distance = 1;; distance++) {
		posx = x + (distance * deltax);
		posy = y + (distance * deltay);
		// stop if we go off the board
		if(posx < 0 || posx >= width || posy < 0 || posy >= height)
		    break;
		// stop when we reach an empty square
		if(board[posx][posy].player == EMPTY)
		    break;
		// only update the flip count when we reach another of the
		// player's pieces
		if(board[posx][posy].player == player) {
		    count += distance - 1;
		    break;
		}
	    }
	}
    }
    return(count);
}

function CalcFlipCounts() {
    
    for(y = 0; y < height; y++) {
	for(x = 0; x < width; x++) {
	    board[x][y].flips[WHITE] = 0;
	    board[x][y].flips[BLACK] = 0;

	    if(board[x][y].player != EMPTY) continue;

	    board[x][y].flips[WHITE] = NumFlips(x, y, WHITE);
	    board[x][y].flips[BLACK] = NumFlips(x, y, BLACK);
	}
    }
}

function RawPutPiece(x, y, player) {
    other = OtherPlayer(player);
    if(board[x][y].player == other) score[other]--;
	
    board[x][y].player = player;
    SetPieceImage(x, y, picture[player]);
    score[player]++;
}

function FlipPieces(x, y, player) {
    count = 0;

    // put a piece down at the desired location
    RawPutPiece(x, y, player);

    for(deltay = -1; deltay <= 1; deltay++) {
	for(deltax = -1; deltax <= 1; deltax++) {
	    for(distance = 1;; distance++) {
		posx = x + (distance * deltax);
		posy = y + (distance * deltay);
		// stop if we go off the board
		if(posx < 0 || posx >= width || posy < 0 || posy >= height)
		    break;
		// stop when we reach an empty square
		if(board[posx][posy].player == EMPTY)
		    break;
		if(board[posx][posy].player == player) {
		    // backtrack, flipping pieces
		    for(distance--; distance > 0; distance--) {
			posx = x + (distance * deltax);
			posy = y + (distance * deltay);
			RawPutPiece(posx, posy, player);
		    }
		    break;
		}
	    }
	}
    }
    return(count);
}

function AnyMoves(player) {
    
    for(y = 0; y < height; y++) {
	for(x = 0; x < width; x++) {
	    if(board[x][y].player != EMPTY) continue;
	    if(NumFlips(x, y, player) > 0) return(true);
	}
    }
    return(false);
}

function CanPutPiece(x, y, player) {
// determine whether the player can put a piece at the given position
    if(turn != player)
	return(false);
    if(board[x][y].player != EMPTY)
	return(false);
    return(NumFlips(x, y, player) > 0);
}

function CheckPutPiece(x, y) {    
    if(! showcursor) return;
    if(! CanPutPiece(x, y, human)) return;
    if(human == WHITE) over = WHITETRANS;
    else over = BLACKTRANS;

    SetPieceImage(x, y, picture[over]);
}

function RestorePiece(x, y) {
    if(showflips && RawShowFlipCount(x, y, human)) return;
    SetPieceImage(x, y, picture[board[x][y].player]);
}

function PutPiece(x, y, timestamp) {
    if(! CanPutPiece(x, y, human)) return;

    FlipPieces(x, y, human);
    DoneTurn(timestamp);
}

function RawShowFlipCount(x, y, player) {
    if(board[x][y].player != EMPTY) return(false);
    if((flips = board[x][y].flips[player]) == 0) return(false);
    SetPieceImage(x, y, picture[NUMBASE + flips]);
    return(true);
}

function ShowFlipCounts(player) {
    
    CalcFlipCounts();
    for(y = 0; y < height; y++) {
	for(x = 0; x < width; x++) {
	    RawShowFlipCount(x, y, player);
	}
    }
}

function HideFlipCounts() {
    
    for(y = 0; y < height; y++) {
	for(x = 0; x < width; x++) {
	    if(board[x][y].player == EMPTY) 
		SetPieceImage(x, y, picture[EMPTY]);
	}
    }
}

function OtherPlayer(player) {
    return((player == WHITE)? BLACK: WHITE);
}

function DoneTurn(timestamp) {
	moves = AnyMoves(turn);
	turn = OtherPlayer(turn);

    // check whether the new player has any moves
    if(! AnyMoves(turn)) {
    	if(! moves) return(GameOver());
    	
    	// XXX inform user the player has no move
    	// and switch players again
    	turn = OtherPlayer(turn);
    }

    // add a slight delay before the computer takes it's turn so game feels
    // 'warmer'; when computer is playing itself, add larger delay so user
    // can watch
    if(turn != human) {
    	HideFlipCounts();
    	timer.cycleInterval = ((human == EMPTY)? 1: 0.150);
    	timer.startTime = timestamp;
    	timer.enabled = true;
    } else if(showflips) ShowFlipCounts(human);
}
 
function Rate(x, y, player) {
    
    if(board[x][y].player != EMPTY) return(0);
    if(x < 0 || x >= width || y < 0 || y >= height) return(0);

    rating = board[x][y].flips[player];

    if(! weightsquares)
	rating = (rating > 0)? 1: 0;

    if(edgesensitive && rating > 0) {
	// increase all non-zero weightings by 3 so we have room
	// to wait 'less ideal' squares below the baseline
	rating += 10;

	// raise edge ratings 4 points, corners are raised 8
	if(x == 0 || x == width - 1) rating += 4;
	if(y == 0 || y == height - 1) rating += 4;
	// lower next-to-edge ratings by 5 points, next-to-corner by 10
	if(x == 1 || x == width - 2) rating -= 5;
	if(y == 1 || y == height - 2) rating -= 5;

	// we cannot rule out a move because of bad location; we must
	// always go somewhere
	if(rating < 1) rating = 1;
    }
    return(rating);
}

function OthelloAI(player, timestamp) {
    best = 0;
    numbest = 0;
    
    // rank each position on the board by the potential flip count
    CalcFlipCounts();

    // apply AI rating algorithm
    for(y = 0; y < height; y++) {
	for(x = 0; x < width; x++) {
	    rating = Rate(x, y, player);

	    // store the rating back into the board
	    board[x][y].value[player] = rating;

	    if(rating == best)
		numbest++;
	    else if(rating > best) {
		best = rating;
		numbest = 1;
	    }
	}
    }

    while(numbest > 0) {
	// pick a square to put our piece
	pick = Math.floor(Math.random() * numbest);
	count = 0;
	for(y = 0; y < height; y++) {
	    for(x = 0; x < width; x++) {
		rating = board[x][y].value[player];
		if(rating == best) {
		    if(count == pick) {
			FlipPieces(x, y, player);
			DoneTurn(timestamp);
			return;
		    }
		    else count++;
		}
	    }
	}
    }

    // if we make it here, then there was nowhere to go
    DoneTurn(timestamp);
}

function Play(timestamp) {
    // black always goes first
    if(human != BLACK)
	OthelloAI(BLACK,timestamp);
    else if(showflips)
	ShowFlipCounts(human);
}

function GameOver() {
    turn = EMPTY;
}

function timeOut(value, timestamp) {	
	if (!value) {
		OthelloAI(turn, timestamp);
	}
}

function startGame(value,timestamp) {	
	if (value) {
		Play(timestamp);
	}
}

function click(value, timestamp) {
	PutPiece(value.x, value.y, timestamp);
}

function mouseOver(value) {
	CheckPutPiece(value.x, value.y);
}

function mouseOut(value) {
	RestorePiece(value.x, value.y);
}	
 
			
			"
		}		
	]
}
ROUTE StartTS.isActive TO SC.startGame
ROUTE TimeOutSensor.isActive TO SC.timeOut

ROUTE TS00.isActive TO C00_Click.activate
ROUTE TS00.isOver TO C00_Over.activate
ROUTE TS00.isOver TO C00_Out.reverseActivate
ROUTE V00_Over.outSFVec2f TO SC.mouseOver
ROUTE V00_Out.outSFVec2f TO SC.mouseOut
ROUTE V00_Click.outSFVec2f TO SC.click
ROUTE TS01.isActive TO C01_Click.activate
ROUTE TS01.isOver TO C01_Over.activate
ROUTE TS01.isOver TO C01_Out.reverseActivate
ROUTE V01_Over.outSFVec2f TO SC.mouseOver
ROUTE V01_Out.outSFVec2f TO SC.mouseOut
ROUTE V01_Click.outSFVec2f TO SC.click
ROUTE TS02.isActive TO C02_Click.activate
ROUTE TS02.isOver TO C02_Over.activate
ROUTE TS02.isOver TO C02_Out.reverseActivate
ROUTE V02_Over.outSFVec2f TO SC.mouseOver
ROUTE V02_Out.outSFVec2f TO SC.mouseOut
ROUTE V02_Click.outSFVec2f TO SC.click
ROUTE TS03.isActive TO C03_Click.activate
ROUTE TS03.isOver TO C03_Over.activate
ROUTE TS03.isOver TO C03_Out.reverseActivate
ROUTE V03_Over.outSFVec2f TO SC.mouseOver
ROUTE V03_Out.outSFVec2f TO SC.mouseOut
ROUTE V03_Click.outSFVec2f TO SC.click
ROUTE TS04.isActive TO C04_Click.activate
ROUTE TS04.isOver TO C04_Over.activate
ROUTE TS04.isOver TO C04_Out.reverseActivate
ROUTE V04_Over.outSFVec2f TO SC.mouseOver
ROUTE V04_Out.outSFVec2f TO SC.mouseOut
ROUTE V04_Click.outSFVec2f TO SC.click
ROUTE TS05.isActive TO C05_Click.activate
ROUTE TS05.isOver TO C05_Over.activate
ROUTE TS05.isOver TO C05_Out.reverseActivate
ROUTE V05_Over.outSFVec2f TO SC.mouseOver
ROUTE V05_Out.outSFVec2f TO SC.mouseOut
ROUTE V05_Click.outSFVec2f TO SC.click
ROUTE TS06.isActive TO C06_Click.activate
ROUTE TS06.isOver TO C06_Over.activate
ROUTE TS06.isOver TO C06_Out.reverseActivate
ROUTE V06_Over.outSFVec2f TO SC.mouseOver
ROUTE V06_Out.outSFVec2f TO SC.mouseOut
ROUTE V06_Click.outSFVec2f TO SC.click
ROUTE TS07.isActive TO C07_Click.activate
ROUTE TS07.isOver TO C07_Over.activate
ROUTE TS07.isOver TO C07_Out.reverseActivate
ROUTE V07_Over.outSFVec2f TO SC.mouseOver
ROUTE V07_Out.outSFVec2f TO SC.mouseOut
ROUTE V07_Click.outSFVec2f TO SC.click
ROUTE TS10.isActive TO C10_Click.activate
ROUTE TS10.isOver TO C10_Over.activate
ROUTE TS10.isOver TO C10_Out.reverseActivate
ROUTE V10_Over.outSFVec2f TO SC.mouseOver
ROUTE V10_Out.outSFVec2f TO SC.mouseOut
ROUTE V10_Click.outSFVec2f TO SC.click
ROUTE TS11.isActive TO C11_Click.activate
ROUTE TS11.isOver TO C11_Over.activate
ROUTE TS11.isOver TO C11_Out.reverseActivate
ROUTE V11_Over.outSFVec2f TO SC.mouseOver
ROUTE V11_Out.outSFVec2f TO SC.mouseOut
ROUTE V11_Click.outSFVec2f TO SC.click
ROUTE TS12.isActive TO C12_Click.activate
ROUTE TS12.isOver TO C12_Over.activate
ROUTE TS12.isOver TO C12_Out.reverseActivate
ROUTE V12_Over.outSFVec2f TO SC.mouseOver
ROUTE V12_Out.outSFVec2f TO SC.mouseOut
ROUTE V12_Click.outSFVec2f TO SC.click
ROUTE TS13.isActive TO C13_Click.activate
ROUTE TS13.isOver TO C13_Over.activate
ROUTE TS13.isOver TO C13_Out.reverseActivate
ROUTE V13_Over.outSFVec2f TO SC.mouseOver
ROUTE V13_Out.outSFVec2f TO SC.mouseOut
ROUTE V13_Click.outSFVec2f TO SC.click
ROUTE TS14.isActive TO C14_Click.activate
ROUTE TS14.isOver TO C14_Over.activate
ROUTE TS14.isOver TO C14_Out.reverseActivate
ROUTE V14_Over.outSFVec2f TO SC.mouseOver
ROUTE V14_Out.outSFVec2f TO SC.mouseOut
ROUTE V14_Click.outSFVec2f TO SC.click
ROUTE TS15.isActive TO C15_Click.activate
ROUTE TS15.isOver TO C15_Over.activate
ROUTE TS15.isOver TO C15_Out.reverseActivate
ROUTE V15_Over.outSFVec2f TO SC.mouseOver
ROUTE V15_Out.outSFVec2f TO SC.mouseOut
ROUTE V15_Click.outSFVec2f TO SC.click
ROUTE TS16.isActive TO C16_Click.activate
ROUTE TS16.isOver TO C16_Over.activate
ROUTE TS16.isOver TO C16_Out.reverseActivate
ROUTE V16_Over.outSFVec2f TO SC.mouseOver
ROUTE V16_Out.outSFVec2f TO SC.mouseOut
ROUTE V16_Click.outSFVec2f TO SC.click
ROUTE TS17.isActive TO C17_Click.activate
ROUTE TS17.isOver TO C17_Over.activate
ROUTE TS17.isOver TO C17_Out.reverseActivate
ROUTE V17_Over.outSFVec2f TO SC.mouseOver
ROUTE V17_Out.outSFVec2f TO SC.mouseOut
ROUTE V17_Click.outSFVec2f TO SC.click
ROUTE TS20.isActive TO C20_Click.activate
ROUTE TS20.isOver TO C20_Over.activate
ROUTE TS20.isOver TO C20_Out.reverseActivate
ROUTE V20_Over.outSFVec2f TO SC.mouseOver
ROUTE V20_Out.outSFVec2f TO SC.mouseOut
ROUTE V20_Click.outSFVec2f TO SC.click
ROUTE TS21.isActive TO C21_Click.activate
ROUTE TS21.isOver TO C21_Over.activate
ROUTE TS21.isOver TO C21_Out.reverseActivate
ROUTE V21_Over.outSFVec2f TO SC.mouseOver
ROUTE V21_Out.outSFVec2f TO SC.mouseOut
ROUTE V21_Click.outSFVec2f TO SC.click
ROUTE TS22.isActive TO C22_Click.activate
ROUTE TS22.isOver TO C22_Over.activate
ROUTE TS22.isOver TO C22_Out.reverseActivate
ROUTE V22_Over.outSFVec2f TO SC.mouseOver
ROUTE V22_Out.outSFVec2f TO SC.mouseOut
ROUTE V22_Click.outSFVec2f TO SC.click
ROUTE TS23.isActive TO C23_Click.activate
ROUTE TS23.isOver TO C23_Over.activate
ROUTE TS23.isOver TO C23_Out.reverseActivate
ROUTE V23_Over.outSFVec2f TO SC.mouseOver
ROUTE V23_Out.outSFVec2f TO SC.mouseOut
ROUTE V23_Click.outSFVec2f TO SC.click
ROUTE TS24.isActive TO C24_Click.activate
ROUTE TS24.isOver TO C24_Over.activate
ROUTE TS24.isOver TO C24_Out.reverseActivate
ROUTE V24_Over.outSFVec2f TO SC.mouseOver
ROUTE V24_Out.outSFVec2f TO SC.mouseOut
ROUTE V24_Click.outSFVec2f TO SC.click
ROUTE TS25.isActive TO C25_Click.activate
ROUTE TS25.isOver TO C25_Over.activate
ROUTE TS25.isOver TO C25_Out.reverseActivate
ROUTE V25_Over.outSFVec2f TO SC.mouseOver
ROUTE V25_Out.outSFVec2f TO SC.mouseOut
ROUTE V25_Click.outSFVec2f TO SC.click
ROUTE TS26.isActive TO C26_Click.activate
ROUTE TS26.isOver TO C26_Over.activate
ROUTE TS26.isOver TO C26_Out.reverseActivate
ROUTE V26_Over.outSFVec2f TO SC.mouseOver
ROUTE V26_Out.outSFVec2f TO SC.mouseOut
ROUTE V26_Click.outSFVec2f TO SC.click
ROUTE TS27.isActive TO C27_Click.activate
ROUTE TS27.isOver TO C27_Over.activate
ROUTE TS27.isOver TO C27_Out.reverseActivate
ROUTE V27_Over.outSFVec2f TO SC.mouseOver
ROUTE V27_Out.outSFVec2f TO SC.mouseOut
ROUTE V27_Click.outSFVec2f TO SC.click
ROUTE TS30.isActive TO C30_Click.activate
ROUTE TS30.isOver TO C30_Over.activate
ROUTE TS30.isOver TO C30_Out.reverseActivate
ROUTE V30_Over.outSFVec2f TO SC.mouseOver
ROUTE V30_Out.outSFVec2f TO SC.mouseOut
ROUTE V30_Click.outSFVec2f TO SC.click
ROUTE TS31.isActive TO C31_Click.activate
ROUTE TS31.isOver TO C31_Over.activate
ROUTE TS31.isOver TO C31_Out.reverseActivate
ROUTE V31_Over.outSFVec2f TO SC.mouseOver
ROUTE V31_Out.outSFVec2f TO SC.mouseOut
ROUTE V31_Click.outSFVec2f TO SC.click
ROUTE TS32.isActive TO C32_Click.activate
ROUTE TS32.isOver TO C32_Over.activate
ROUTE TS32.isOver TO C32_Out.reverseActivate
ROUTE V32_Over.outSFVec2f TO SC.mouseOver
ROUTE V32_Out.outSFVec2f TO SC.mouseOut
ROUTE V32_Click.outSFVec2f TO SC.click
ROUTE TS33.isActive TO C33_Click.activate
ROUTE TS33.isOver TO C33_Over.activate
ROUTE TS33.isOver TO C33_Out.reverseActivate
ROUTE V33_Over.outSFVec2f TO SC.mouseOver
ROUTE V33_Out.outSFVec2f TO SC.mouseOut
ROUTE V33_Click.outSFVec2f TO SC.click
ROUTE TS34.isActive TO C34_Click.activate
ROUTE TS34.isOver TO C34_Over.activate
ROUTE TS34.isOver TO C34_Out.reverseActivate
ROUTE V34_Over.outSFVec2f TO SC.mouseOver
ROUTE V34_Out.outSFVec2f TO SC.mouseOut
ROUTE V34_Click.outSFVec2f TO SC.click
ROUTE TS35.isActive TO C35_Click.activate
ROUTE TS35.isOver TO C35_Over.activate
ROUTE TS35.isOver TO C35_Out.reverseActivate
ROUTE V35_Over.outSFVec2f TO SC.mouseOver
ROUTE V35_Out.outSFVec2f TO SC.mouseOut
ROUTE V35_Click.outSFVec2f TO SC.click
ROUTE TS36.isActive TO C36_Click.activate
ROUTE TS36.isOver TO C36_Over.activate
ROUTE TS36.isOver TO C36_Out.reverseActivate
ROUTE V36_Over.outSFVec2f TO SC.mouseOver
ROUTE V36_Out.outSFVec2f TO SC.mouseOut
ROUTE V36_Click.outSFVec2f TO SC.click
ROUTE TS37.isActive TO C37_Click.activate
ROUTE TS37.isOver TO C37_Over.activate
ROUTE TS37.isOver TO C37_Out.reverseActivate
ROUTE V37_Over.outSFVec2f TO SC.mouseOver
ROUTE V37_Out.outSFVec2f TO SC.mouseOut
ROUTE V37_Click.outSFVec2f TO SC.click
ROUTE TS40.isActive TO C40_Click.activate
ROUTE TS40.isOver TO C40_Over.activate
ROUTE TS40.isOver TO C40_Out.reverseActivate
ROUTE V40_Over.outSFVec2f TO SC.mouseOver
ROUTE V40_Out.outSFVec2f TO SC.mouseOut
ROUTE V40_Click.outSFVec2f TO SC.click
ROUTE TS41.isActive TO C41_Click.activate
ROUTE TS41.isOver TO C41_Over.activate
ROUTE TS41.isOver TO C41_Out.reverseActivate
ROUTE V41_Over.outSFVec2f TO SC.mouseOver
ROUTE V41_Out.outSFVec2f TO SC.mouseOut
ROUTE V41_Click.outSFVec2f TO SC.click
ROUTE TS42.isActive TO C42_Click.activate
ROUTE TS42.isOver TO C42_Over.activate
ROUTE TS42.isOver TO C42_Out.reverseActivate
ROUTE V42_Over.outSFVec2f TO SC.mouseOver
ROUTE V42_Out.outSFVec2f TO SC.mouseOut
ROUTE V42_Click.outSFVec2f TO SC.click
ROUTE TS43.isActive TO C43_Click.activate
ROUTE TS43.isOver TO C43_Over.activate
ROUTE TS43.isOver TO C43_Out.reverseActivate
ROUTE V43_Over.outSFVec2f TO SC.mouseOver
ROUTE V43_Out.outSFVec2f TO SC.mouseOut
ROUTE V43_Click.outSFVec2f TO SC.click
ROUTE TS44.isActive TO C44_Click.activate
ROUTE TS44.isOver TO C44_Over.activate
ROUTE TS44.isOver TO C44_Out.reverseActivate
ROUTE V44_Over.outSFVec2f TO SC.mouseOver
ROUTE V44_Out.outSFVec2f TO SC.mouseOut
ROUTE V44_Click.outSFVec2f TO SC.click
ROUTE TS45.isActive TO C45_Click.activate
ROUTE TS45.isOver TO C45_Over.activate
ROUTE TS45.isOver TO C45_Out.reverseActivate
ROUTE V45_Over.outSFVec2f TO SC.mouseOver
ROUTE V45_Out.outSFVec2f TO SC.mouseOut
ROUTE V45_Click.outSFVec2f TO SC.click
ROUTE TS46.isActive TO C46_Click.activate
ROUTE TS46.isOver TO C46_Over.activate
ROUTE TS46.isOver TO C46_Out.reverseActivate
ROUTE V46_Over.outSFVec2f TO SC.mouseOver
ROUTE V46_Out.outSFVec2f TO SC.mouseOut
ROUTE V46_Click.outSFVec2f TO SC.click
ROUTE TS47.isActive TO C47_Click.activate
ROUTE TS47.isOver TO C47_Over.activate
ROUTE TS47.isOver TO C47_Out.reverseActivate
ROUTE V47_Over.outSFVec2f TO SC.mouseOver
ROUTE V47_Out.outSFVec2f TO SC.mouseOut
ROUTE V47_Click.outSFVec2f TO SC.click
ROUTE TS50.isActive TO C50_Click.activate
ROUTE TS50.isOver TO C50_Over.activate
ROUTE TS50.isOver TO C50_Out.reverseActivate
ROUTE V50_Over.outSFVec2f TO SC.mouseOver
ROUTE V50_Out.outSFVec2f TO SC.mouseOut
ROUTE V50_Click.outSFVec2f TO SC.click
ROUTE TS51.isActive TO C51_Click.activate
ROUTE TS51.isOver TO C51_Over.activate
ROUTE TS51.isOver TO C51_Out.reverseActivate
ROUTE V51_Over.outSFVec2f TO SC.mouseOver
ROUTE V51_Out.outSFVec2f TO SC.mouseOut
ROUTE V51_Click.outSFVec2f TO SC.click
ROUTE TS52.isActive TO C52_Click.activate
ROUTE TS52.isOver TO C52_Over.activate
ROUTE TS52.isOver TO C52_Out.reverseActivate
ROUTE V52_Over.outSFVec2f TO SC.mouseOver
ROUTE V52_Out.outSFVec2f TO SC.mouseOut
ROUTE V52_Click.outSFVec2f TO SC.click
ROUTE TS53.isActive TO C53_Click.activate
ROUTE TS53.isOver TO C53_Over.activate
ROUTE TS53.isOver TO C53_Out.reverseActivate
ROUTE V53_Over.outSFVec2f TO SC.mouseOver
ROUTE V53_Out.outSFVec2f TO SC.mouseOut
ROUTE V53_Click.outSFVec2f TO SC.click
ROUTE TS54.isActive TO C54_Click.activate
ROUTE TS54.isOver TO C54_Over.activate
ROUTE TS54.isOver TO C54_Out.reverseActivate
ROUTE V54_Over.outSFVec2f TO SC.mouseOver
ROUTE V54_Out.outSFVec2f TO SC.mouseOut
ROUTE V54_Click.outSFVec2f TO SC.click
ROUTE TS55.isActive TO C55_Click.activate
ROUTE TS55.isOver TO C55_Over.activate
ROUTE TS55.isOver TO C55_Out.reverseActivate
ROUTE V55_Over.outSFVec2f TO SC.mouseOver
ROUTE V55_Out.outSFVec2f TO SC.mouseOut
ROUTE V55_Click.outSFVec2f TO SC.click
ROUTE TS56.isActive TO C56_Click.activate
ROUTE TS56.isOver TO C56_Over.activate
ROUTE TS56.isOver TO C56_Out.reverseActivate
ROUTE V56_Over.outSFVec2f TO SC.mouseOver
ROUTE V56_Out.outSFVec2f TO SC.mouseOut
ROUTE V56_Click.outSFVec2f TO SC.click
ROUTE TS57.isActive TO C57_Click.activate
ROUTE TS57.isOver TO C57_Over.activate
ROUTE TS57.isOver TO C57_Out.reverseActivate
ROUTE V57_Over.outSFVec2f TO SC.mouseOver
ROUTE V57_Out.outSFVec2f TO SC.mouseOut
ROUTE V57_Click.outSFVec2f TO SC.click
ROUTE TS60.isActive TO C60_Click.activate
ROUTE TS60.isOver TO C60_Over.activate
ROUTE TS60.isOver TO C60_Out.reverseActivate
ROUTE V60_Over.outSFVec2f TO SC.mouseOver
ROUTE V60_Out.outSFVec2f TO SC.mouseOut
ROUTE V60_Click.outSFVec2f TO SC.click
ROUTE TS61.isActive TO C61_Click.activate
ROUTE TS61.isOver TO C61_Over.activate
ROUTE TS61.isOver TO C61_Out.reverseActivate
ROUTE V61_Over.outSFVec2f TO SC.mouseOver
ROUTE V61_Out.outSFVec2f TO SC.mouseOut
ROUTE V61_Click.outSFVec2f TO SC.click
ROUTE TS62.isActive TO C62_Click.activate
ROUTE TS62.isOver TO C62_Over.activate
ROUTE TS62.isOver TO C62_Out.reverseActivate
ROUTE V62_Over.outSFVec2f TO SC.mouseOver
ROUTE V62_Out.outSFVec2f TO SC.mouseOut
ROUTE V62_Click.outSFVec2f TO SC.click
ROUTE TS63.isActive TO C63_Click.activate
ROUTE TS63.isOver TO C63_Over.activate
ROUTE TS63.isOver TO C63_Out.reverseActivate
ROUTE V63_Over.outSFVec2f TO SC.mouseOver
ROUTE V63_Out.outSFVec2f TO SC.mouseOut
ROUTE V63_Click.outSFVec2f TO SC.click
ROUTE TS64.isActive TO C64_Click.activate
ROUTE TS64.isOver TO C64_Over.activate
ROUTE TS64.isOver TO C64_Out.reverseActivate
ROUTE V64_Over.outSFVec2f TO SC.mouseOver
ROUTE V64_Out.outSFVec2f TO SC.mouseOut
ROUTE V64_Click.outSFVec2f TO SC.click
ROUTE TS65.isActive TO C65_Click.activate
ROUTE TS65.isOver TO C65_Over.activate
ROUTE TS65.isOver TO C65_Out.reverseActivate
ROUTE V65_Over.outSFVec2f TO SC.mouseOver
ROUTE V65_Out.outSFVec2f TO SC.mouseOut
ROUTE V65_Click.outSFVec2f TO SC.click
ROUTE TS66.isActive TO C66_Click.activate
ROUTE TS66.isOver TO C66_Over.activate
ROUTE TS66.isOver TO C66_Out.reverseActivate
ROUTE V66_Over.outSFVec2f TO SC.mouseOver
ROUTE V66_Out.outSFVec2f TO SC.mouseOut
ROUTE V66_Click.outSFVec2f TO SC.click
ROUTE TS67.isActive TO C67_Click.activate
ROUTE TS67.isOver TO C67_Over.activate
ROUTE TS67.isOver TO C67_Out.reverseActivate
ROUTE V67_Over.outSFVec2f TO SC.mouseOver
ROUTE V67_Out.outSFVec2f TO SC.mouseOut
ROUTE V67_Click.outSFVec2f TO SC.click
ROUTE TS70.isActive TO C70_Click.activate
ROUTE TS70.isOver TO C70_Over.activate
ROUTE TS70.isOver TO C70_Out.reverseActivate
ROUTE V70_Over.outSFVec2f TO SC.mouseOver
ROUTE V70_Out.outSFVec2f TO SC.mouseOut
ROUTE V70_Click.outSFVec2f TO SC.click
ROUTE TS71.isActive TO C71_Click.activate
ROUTE TS71.isOver TO C71_Over.activate
ROUTE TS71.isOver TO C71_Out.reverseActivate
ROUTE V71_Over.outSFVec2f TO SC.mouseOver
ROUTE V71_Out.outSFVec2f TO SC.mouseOut
ROUTE V71_Click.outSFVec2f TO SC.click
ROUTE TS72.isActive TO C72_Click.activate
ROUTE TS72.isOver TO C72_Over.activate
ROUTE TS72.isOver TO C72_Out.reverseActivate
ROUTE V72_Over.outSFVec2f TO SC.mouseOver
ROUTE V72_Out.outSFVec2f TO SC.mouseOut
ROUTE V72_Click.outSFVec2f TO SC.click
ROUTE TS73.isActive TO C73_Click.activate
ROUTE TS73.isOver TO C73_Over.activate
ROUTE TS73.isOver TO C73_Out.reverseActivate
ROUTE V73_Over.outSFVec2f TO SC.mouseOver
ROUTE V73_Out.outSFVec2f TO SC.mouseOut
ROUTE V73_Click.outSFVec2f TO SC.click
ROUTE TS74.isActive TO C74_Click.activate
ROUTE TS74.isOver TO C74_Over.activate
ROUTE TS74.isOver TO C74_Out.reverseActivate
ROUTE V74_Over.outSFVec2f TO SC.mouseOver
ROUTE V74_Out.outSFVec2f TO SC.mouseOut
ROUTE V74_Click.outSFVec2f TO SC.click
ROUTE TS75.isActive TO C75_Click.activate
ROUTE TS75.isOver TO C75_Over.activate
ROUTE TS75.isOver TO C75_Out.reverseActivate
ROUTE V75_Over.outSFVec2f TO SC.mouseOver
ROUTE V75_Out.outSFVec2f TO SC.mouseOut
ROUTE V75_Click.outSFVec2f TO SC.click
ROUTE TS76.isActive TO C76_Click.activate
ROUTE TS76.isOver TO C76_Over.activate
ROUTE TS76.isOver TO C76_Out.reverseActivate
ROUTE V76_Over.outSFVec2f TO SC.mouseOver
ROUTE V76_Out.outSFVec2f TO SC.mouseOut
ROUTE V76_Click.outSFVec2f TO SC.click
ROUTE TS77.isActive TO C77_Click.activate
ROUTE TS77.isOver TO C77_Over.activate
ROUTE TS77.isOver TO C77_Out.reverseActivate
ROUTE V77_Over.outSFVec2f TO SC.mouseOver
ROUTE V77_Out.outSFVec2f TO SC.mouseOut
ROUTE V77_Click.outSFVec2f TO SC.click
