﻿ACTIONSCRIPT (AS3) FOR FLASH #268344
https://swfchan.com/54/268344/

//b2CircleDef (Box2D.Collision.Shapes.b2CircleDef)
package Box2D.Collision.Shapes {
	import Box2D.Common.Math.*;

	public class b2CircleDef extends b2ShapeDef {

		public var radius:Number;
		public var localPosition:b2Vec2;

		public function b2CircleDef(){
			localPosition = new b2Vec2(0, 0);
			super();
			type = b2Shape.e_circleShape;
			radius = 1;
		}
	}
}//package Box2D.Collision.Shapes 

****************

//b2CircleShape (Box2D.Collision.Shapes.b2CircleShape)
package Box2D.Collision.Shapes {
	import Box2D.Collision.*;
	import Box2D.Dynamics.*;
	import Box2D.Common.Math.*;
	import Box2D.Common.*;

	public class b2CircleShape extends b2Shape {

		public var m_localPosition:b2Vec2;
		public var m_radius:Number;

		public function b2CircleShape(_arg1:b2ShapeDef){
			m_localPosition = new b2Vec2();
			super(_arg1);
			var _local2:b2CircleDef = (_arg1 as b2CircleDef);
			m_type = e_circleShape;
			m_localPosition.SetV(_local2.localPosition);
			m_radius = _local2.radius;
		}
		override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{
			var _local10:Number;
			var _local6:b2Mat22 = _arg1.R;
			var _local7:Number = (_arg1.position.x + ((_local6.col1.x * m_localPosition.x) + (_local6.col2.x * m_localPosition.y)));
			var _local8:Number = (_arg1.position.x + ((_local6.col1.y * m_localPosition.x) + (_local6.col2.y * m_localPosition.y)));
			var _local9:Number = (_arg4.p1.x - _local7);
			_local10 = (_arg4.p1.y - _local8);
			var _local11:Number = (((_local9 * _local9) + (_local10 * _local10)) - (m_radius * m_radius));
			if (_local11 < 0){
				return (false);
			};
			var _local12:Number = (_arg4.p2.x - _arg4.p1.x);
			var _local13:Number = (_arg4.p2.y - _arg4.p1.y);
			var _local14:Number = ((_local9 * _local12) + (_local10 * _local13));
			var _local15:Number = ((_local12 * _local12) + (_local13 * _local13));
			var _local16:Number = ((_local14 * _local14) - (_local15 * _local11));
			if ((((_local16 < 0)) || ((_local15 < Number.MIN_VALUE)))){
				return (false);
			};
			var _local17:Number = -((_local14 + Math.sqrt(_local16)));
			if ((((0 <= _local17)) && ((_local17 <= (_arg5 * _local15))))){
				_local17 = (_local17 / _local15);
				_arg2[0] = _local17;
				_arg3.x = (_local9 + (_local17 * _local12));
				_arg3.y = (_local10 + (_local17 * _local13));
				_arg3.Normalize();
				return (true);
			};
			return (false);
		}
		public function GetLocalPosition():b2Vec2{
			return (m_localPosition);
		}
		public function GetRadius():Number{
			return (m_radius);
		}
		override public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{
			var _local4:b2Mat22;
			_local4 = _arg2.R;
			var _local5:Number = (_arg2.position.x + ((_local4.col1.x * m_localPosition.x) + (_local4.col2.x * m_localPosition.y)));
			var _local6:Number = (_arg2.position.y + ((_local4.col1.y * m_localPosition.x) + (_local4.col2.y * m_localPosition.y)));
			_local4 = _arg3.R;
			var _local7:Number = (_arg3.position.x + ((_local4.col1.x * m_localPosition.x) + (_local4.col2.x * m_localPosition.y)));
			var _local8:Number = (_arg3.position.y + ((_local4.col1.y * m_localPosition.x) + (_local4.col2.y * m_localPosition.y)));
			_arg1.lowerBound.Set((((_local5 < _local7)) ? _local5 : _local7 - m_radius), (((_local6 < _local8)) ? _local6 : _local8 - m_radius));
			_arg1.upperBound.Set((((_local5 > _local7)) ? _local5 : _local7 + m_radius), (((_local6 > _local8)) ? _local6 : _local8 + m_radius));
		}
		override public function ComputeMass(_arg1:b2MassData):void{
			_arg1.mass = (((m_density * b2Settings.b2_pi) * m_radius) * m_radius);
			_arg1.center.SetV(m_localPosition);
			_arg1.I = (_arg1.mass * (((0.5 * m_radius) * m_radius) + ((m_localPosition.x * m_localPosition.x) + (m_localPosition.y * m_localPosition.y))));
		}
		override public function UpdateSweepRadius(_arg1:b2Vec2):void{
			var _local2:Number = (m_localPosition.x - _arg1.x);
			var _local3:Number = (m_localPosition.y - _arg1.y);
			_local2 = Math.sqrt(((_local2 * _local2) + (_local3 * _local3)));
			m_sweepRadius = ((_local2 + m_radius) - b2Settings.b2_toiSlop);
		}
		override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{
			var _local3:b2Mat22 = _arg2.R;
			var _local4:Number = (_arg2.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y)));
			var _local5:Number = (_arg2.position.y + ((_local3.col1.y * m_localPosition.x) + (_local3.col2.y * m_localPosition.y)));
			_arg1.lowerBound.Set((_local4 - m_radius), (_local5 - m_radius));
			_arg1.upperBound.Set((_local4 + m_radius), (_local5 + m_radius));
		}
		override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{
			var _local3:b2Mat22 = _arg1.R;
			var _local4:Number = (_arg1.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y)));
			var _local5:Number = (_arg1.position.y + ((_local3.col1.y * m_localPosition.x) + (_local3.col2.y * m_localPosition.y)));
			_local4 = (_arg2.x - _local4);
			_local5 = (_arg2.y - _local5);
			return ((((_local4 * _local4) + (_local5 * _local5)) <= (m_radius * m_radius)));
		}

	}
}//package Box2D.Collision.Shapes 

****************

//b2FilterData (Box2D.Collision.Shapes.b2FilterData)
package Box2D.Collision.Shapes {

	public class b2FilterData {

		public var maskBits:uint;// = 0xFFFF
		public var groupIndex:int;// = 0
		public var categoryBits:uint;// = 1

		public function Copy():b2FilterData{
			var _local1:b2FilterData = new b2FilterData();
			_local1.categoryBits = categoryBits;
			_local1.maskBits = maskBits;
			_local1.groupIndex = groupIndex;
			return (_local1);
		}

	}
}//package Box2D.Collision.Shapes 

****************

//b2MassData (Box2D.Collision.Shapes.b2MassData)
package Box2D.Collision.Shapes {
	import Box2D.Common.Math.*;

	public class b2MassData {

		public var mass:Number;// = 0
		public var center:b2Vec2;
		public var I:Number;// = 0

		public function b2MassData(){
			center = new b2Vec2(0, 0);
			super();
		}
	}
}//package Box2D.Collision.Shapes 

****************

//b2PolygonDef (Box2D.Collision.Shapes.b2PolygonDef)
package Box2D.Collision.Shapes {
	import Box2D.Common.Math.*;
	import Box2D.Common.*;

	public class b2PolygonDef extends b2ShapeDef {

		public var vertices:Array;
		public var vertexCount:int;

		private static var s_mat:b2Mat22 = new b2Mat22();

		public function b2PolygonDef(){
			vertices = new Array(b2Settings.b2_maxPolygonVertices);
			super();
			type = b2Shape.e_polygonShape;
			vertexCount = 0;
			var _local1:int;
			while (_local1 < b2Settings.b2_maxPolygonVertices) {
				vertices[_local1] = new b2Vec2();
				_local1++;
			};
		}
		public function SetAsOrientedBox(_arg1:Number, _arg2:Number, _arg3:b2Vec2=null, _arg4:Number=0):void{
			var _local5:b2Vec2;
			var _local6:b2Mat22;
			var _local7:int;
			vertexCount = 4;
			vertices[0].Set(-(_arg1), -(_arg2));
			vertices[1].Set(_arg1, -(_arg2));
			vertices[2].Set(_arg1, _arg2);
			vertices[3].Set(-(_arg1), _arg2);
			if (_arg3){
				_local5 = _arg3;
				_local6 = s_mat;
				_local6.Set(_arg4);
				_local7 = 0;
				while (_local7 < vertexCount) {
					_arg3 = vertices[_local7];
					_arg1 = (_local5.x + ((_local6.col1.x * _arg3.x) + (_local6.col2.x * _arg3.y)));
					_arg3.y = (_local5.y + ((_local6.col1.y * _arg3.x) + (_local6.col2.y * _arg3.y)));
					_arg3.x = _arg1;
					_local7++;
				};
			};
		}
		public function SetAsBox(_arg1:Number, _arg2:Number):void{
			vertexCount = 4;
			vertices[0].Set(-(_arg1), -(_arg2));
			vertices[1].Set(_arg1, -(_arg2));
			vertices[2].Set(_arg1, _arg2);
			vertices[3].Set(-(_arg1), _arg2);
		}

	}
}//package Box2D.Collision.Shapes 

****************

//b2PolygonShape (Box2D.Collision.Shapes.b2PolygonShape)
package Box2D.Collision.Shapes {
	import Box2D.Collision.*;
	import Box2D.Dynamics.*;
	import Box2D.Common.Math.*;
	import Box2D.Common.*;

	public class b2PolygonShape extends b2Shape {

		public var m_coreVertices:Array;
		public var m_vertices:Array;
		private var s_supportVec:b2Vec2;
		public var m_centroid:b2Vec2;
		public var m_normals:Array;
		public var m_obb:b2OBB;
		public var m_vertexCount:int;

		private static var s_computeMat:b2Mat22 = new b2Mat22();
		private static var s_sweptAABB1:b2AABB = new b2AABB();
		private static var s_sweptAABB2:b2AABB = new b2AABB();

		public function b2PolygonShape(_arg1:b2ShapeDef){
			var _local3:int;
			var _local6:Number;
			var _local7:Number;
			var _local8:Number;
			var _local9:Number;
			var _local10:Number;
			var _local11:Number;
			var _local12:Number;
			var _local13:Number;
			var _local14:Number;
			var _local15:Number;
			var _local16:Number;
			var _local17:Number;
			s_supportVec = new b2Vec2();
			m_obb = new b2OBB();
			m_vertices = new Array(b2Settings.b2_maxPolygonVertices);
			m_normals = new Array(b2Settings.b2_maxPolygonVertices);
			m_coreVertices = new Array(b2Settings.b2_maxPolygonVertices);
			super(_arg1);
			m_type = e_polygonShape;
			var _local2:b2PolygonDef = (_arg1 as b2PolygonDef);
			m_vertexCount = _local2.vertexCount;
			var _local4:int = _local3;
			var _local5:int = _local3;
			_local3 = 0;
			while (_local3 < m_vertexCount) {
				m_vertices[_local3] = _local2.vertices[_local3].Copy();
				_local3++;
			};
			_local3 = 0;
			while (_local3 < m_vertexCount) {
				_local4 = _local3;
				_local5 = (((_local3 + 1) < m_vertexCount)) ? (_local3 + 1) : 0;
				_local6 = (m_vertices[_local5].x - m_vertices[_local4].x);
				_local7 = (m_vertices[_local5].y - m_vertices[_local4].y);
				_local8 = Math.sqrt(((_local6 * _local6) + (_local7 * _local7)));
				m_normals[_local3] = new b2Vec2((_local7 / _local8), (-(_local6) / _local8));
				_local3++;
			};
			m_centroid = ComputeCentroid(_local2.vertices, _local2.vertexCount);
			ComputeOBB(m_obb, m_vertices, m_vertexCount);
			_local3 = 0;
			while (_local3 < m_vertexCount) {
				_local4 = (((_local3 - 1) >= 0)) ? (_local3 - 1) : (m_vertexCount - 1);
				_local5 = _local3;
				_local9 = m_normals[_local4].x;
				_local10 = m_normals[_local4].y;
				_local11 = m_normals[_local5].x;
				_local12 = m_normals[_local5].y;
				_local13 = (m_vertices[_local3].x - m_centroid.x);
				_local14 = (m_vertices[_local3].y - m_centroid.y);
				_local15 = (((_local9 * _local13) + (_local10 * _local14)) - b2Settings.b2_toiSlop);
				_local16 = (((_local11 * _local13) + (_local12 * _local14)) - b2Settings.b2_toiSlop);
				_local17 = (1 / ((_local9 * _local12) - (_local10 * _local11)));
				m_coreVertices[_local3] = new b2Vec2(((_local17 * ((_local12 * _local15) - (_local10 * _local16))) + m_centroid.x), ((_local17 * ((_local9 * _local16) - (_local11 * _local15))) + m_centroid.y));
				_local3++;
			};
		}
		override public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{
			var _local4:b2AABB = s_sweptAABB1;
			var _local5:b2AABB = s_sweptAABB2;
			ComputeAABB(_local4, _arg2);
			ComputeAABB(_local5, _arg3);
			_arg1.lowerBound.Set(((_local4.lowerBound.x < _local5.lowerBound.x)) ? _local4.lowerBound.x : _local5.lowerBound.x, ((_local4.lowerBound.y < _local5.lowerBound.y)) ? _local4.lowerBound.y : _local5.lowerBound.y);
			_arg1.upperBound.Set(((_local4.upperBound.x > _local5.upperBound.x)) ? _local4.upperBound.x : _local5.upperBound.x, ((_local4.upperBound.y > _local5.upperBound.y)) ? _local4.upperBound.y : _local5.upperBound.y);
		}
		public function GetVertices():Array{
			return (m_vertices);
		}
		public function GetCoreVertices():Array{
			return (m_coreVertices);
		}
		public function GetCentroid():b2Vec2{
			return (m_centroid);
		}
		public function GetOBB():b2OBB{
			return (m_obb);
		}
		public function GetFirstVertex(_arg1:b2XForm):b2Vec2{
			return (b2Math.b2MulX(_arg1, m_coreVertices[0]));
		}
		public function Centroid(_arg1:b2XForm):b2Vec2{
			return (b2Math.b2MulX(_arg1, m_centroid));
		}
		override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{
			var _local8:Number;
			var _local9:Number;
			var _local10:b2Mat22;
			var _local11:b2Vec2;
			var _local20:Number;
			var _local21:Number;
			var _local6:Number = 0;
			var _local7:Number = _arg5;
			_local8 = (_arg4.p1.x - _arg1.position.x);
			_local9 = (_arg4.p1.y - _arg1.position.y);
			_local10 = _arg1.R;
			var _local12:Number = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y));
			var _local13:Number = ((_local8 * _local10.col2.x) + (_local9 * _local10.col2.y));
			_local8 = (_arg4.p2.x - _arg1.position.x);
			_local9 = (_arg4.p2.y - _arg1.position.y);
			_local10 = _arg1.R;
			var _local14:Number = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y));
			var _local15:Number = ((_local8 * _local10.col2.x) + (_local9 * _local10.col2.y));
			var _local16:Number = (_local14 - _local12);
			var _local17:Number = (_local15 - _local13);
			var _local18 = -1;
			var _local19:int;
			while (_local19 < m_vertexCount) {
				_local11 = m_vertices[_local19];
				_local8 = (_local11.x - _local12);
				_local9 = (_local11.y - _local13);
				_local11 = m_normals[_local19];
				_local20 = ((_local11.x * _local8) + (_local11.y * _local9));
				_local21 = ((_local11.x * _local16) + (_local11.y * _local17));
				if ((((_local21 < 0)) && ((_local20 < (_local6 * _local21))))){
					_local6 = (_local20 / _local21);
					_local18 = _local19;
				} else {
					if ((((_local21 > 0)) && ((_local20 < (_local7 * _local21))))){
						_local7 = (_local20 / _local21);
					};
				};
				if (_local7 < _local6){
					return (false);
				};
				_local19++;
			};
			if (_local18 >= 0){
				_arg2[0] = _local6;
				_local10 = _arg1.R;
				_local11 = m_normals[_local18];
				_arg3.x = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y));
				_arg3.y = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y));
				return (true);
			};
			return (false);
		}
		override public function ComputeMass(_arg1:b2MassData):void{
			var _local10:b2Vec2;
			var _local11:b2Vec2;
			var _local12:Number;
			var _local13:Number;
			var _local14:Number;
			var _local15:Number;
			var _local16:Number;
			var _local17:Number;
			var _local18:Number;
			var _local19:Number;
			var _local20:Number;
			var _local21:Number;
			var _local22:Number;
			var _local23:Number;
			var _local24:Number;
			var _local25:Number;
			var _local2:Number = 0;
			var _local3:Number = 0;
			var _local4:Number = 0;
			var _local5:Number = 0;
			var _local6:Number = 0;
			var _local7:Number = 0;
			var _local8:Number = (1 / 3);
			var _local9:int;
			while (_local9 < m_vertexCount) {
				_local10 = m_vertices[_local9];
				_local11 = (((_local9 + 1) < m_vertexCount)) ? m_vertices[int((_local9 + 1))] : m_vertices[0];
				_local12 = (_local10.x - _local6);
				_local13 = (_local10.y - _local7);
				_local14 = (_local11.x - _local6);
				_local15 = (_local11.y - _local7);
				_local16 = ((_local12 * _local15) - (_local13 * _local14));
				_local17 = (0.5 * _local16);
				_local4 = (_local4 + _local17);
				_local2 = (_local2 + ((_local17 * _local8) * ((_local6 + _local10.x) + _local11.x)));
				_local3 = (_local3 + ((_local17 * _local8) * ((_local7 + _local10.y) + _local11.y)));
				_local18 = _local6;
				_local19 = _local7;
				_local20 = _local12;
				_local21 = _local13;
				_local22 = _local14;
				_local23 = _local15;
				_local24 = ((_local8 * ((0.25 * (((_local20 * _local20) + (_local22 * _local20)) + (_local22 * _local22))) + ((_local18 * _local20) + (_local18 * _local22)))) + ((0.5 * _local18) * _local18));
				_local25 = ((_local8 * ((0.25 * (((_local21 * _local21) + (_local23 * _local21)) + (_local23 * _local23))) + ((_local19 * _local21) + (_local19 * _local23)))) + ((0.5 * _local19) * _local19));
				_local5 = (_local5 + (_local16 * (_local24 + _local25)));
				_local9++;
			};
			_arg1.mass = (m_density * _local4);
			_local2 = (_local2 * (1 / _local4));
			_local3 = (_local3 * (1 / _local4));
			_arg1.center.Set(_local2, _local3);
			_arg1.I = (m_density * _local5);
		}
		public function GetNormals():Array{
			return (m_normals);
		}
		public function Support(_arg1:b2XForm, _arg2:Number, _arg3:Number):b2Vec2{
			var _local4:b2Vec2;
			var _local5:b2Mat22;
			var _local11:Number;
			_local5 = _arg1.R;
			var _local6:Number = ((_arg2 * _local5.col1.x) + (_arg3 * _local5.col1.y));
			var _local7:Number = ((_arg2 * _local5.col2.x) + (_arg3 * _local5.col2.y));
			var _local8:int;
			_local4 = m_coreVertices[0];
			var _local9:Number = ((_local4.x * _local6) + (_local4.y * _local7));
			var _local10 = 1;
			while (_local10 < m_vertexCount) {
				_local4 = m_coreVertices[_local10];
				_local11 = ((_local4.x * _local6) + (_local4.y * _local7));
				if (_local11 > _local9){
					_local8 = _local10;
					_local9 = _local11;
				};
				_local10++;
			};
			_local5 = _arg1.R;
			_local4 = m_coreVertices[_local8];
			s_supportVec.x = (_arg1.position.x + ((_local5.col1.x * _local4.x) + (_local5.col2.x * _local4.y)));
			s_supportVec.y = (_arg1.position.y + ((_local5.col1.y * _local4.x) + (_local5.col2.y * _local4.y)));
			return (s_supportVec);
		}
		public function GetVertexCount():int{
			return (m_vertexCount);
		}
		override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{
			var _local3:b2Mat22;
			var _local4:b2Vec2;
			var _local5:b2Mat22 = s_computeMat;
			_local3 = _arg2.R;
			_local4 = m_obb.R.col1;
			_local5.col1.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y));
			_local5.col1.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y));
			_local4 = m_obb.R.col2;
			_local5.col2.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y));
			_local5.col2.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y));
			_local5.Abs();
			var _local6:b2Mat22 = _local5;
			_local4 = m_obb.extents;
			var _local7:Number = ((_local6.col1.x * _local4.x) + (_local6.col2.x * _local4.y));
			var _local8:Number = ((_local6.col1.y * _local4.x) + (_local6.col2.y * _local4.y));
			_local3 = _arg2.R;
			_local4 = m_obb.center;
			var _local9:Number = (_arg2.position.x + ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)));
			var _local10:Number = (_arg2.position.y + ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)));
			_arg1.lowerBound.Set((_local9 - _local7), (_local10 - _local8));
			_arg1.upperBound.Set((_local9 + _local7), (_local10 + _local8));
		}
		override public function UpdateSweepRadius(_arg1:b2Vec2):void{
			var _local2:b2Vec2;
			var _local4:Number;
			var _local5:Number;
			m_sweepRadius = 0;
			var _local3:int;
			while (_local3 < m_vertexCount) {
				_local2 = m_coreVertices[_local3];
				_local4 = (_local2.x - _arg1.x);
				_local5 = (_local2.y - _arg1.y);
				_local4 = Math.sqrt(((_local4 * _local4) + (_local5 * _local5)));
				if (_local4 > m_sweepRadius){
					m_sweepRadius = _local4;
				};
				_local3++;
			};
		}
		override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{
			var _local3:b2Vec2;
			var _local10:Number;
			var _local4:b2Mat22 = _arg1.R;
			var _local5:Number = (_arg2.x - _arg1.position.x);
			var _local6:Number = (_arg2.y - _arg1.position.y);
			var _local7:Number = ((_local5 * _local4.col1.x) + (_local6 * _local4.col1.y));
			var _local8:Number = ((_local5 * _local4.col2.x) + (_local6 * _local4.col2.y));
			var _local9:int;
			while (_local9 < m_vertexCount) {
				_local3 = m_vertices[_local9];
				_local5 = (_local7 - _local3.x);
				_local6 = (_local8 - _local3.y);
				_local3 = m_normals[_local9];
				_local10 = ((_local3.x * _local5) + (_local3.y * _local6));
				if (_local10 > 0){
					return (false);
				};
				_local9++;
			};
			return (true);
		}

		public static function ComputeCentroid(_arg1:Array, _arg2:int):b2Vec2{
			var _local3:b2Vec2;
			var _local7:Number;
			var _local9:b2Vec2;
			var _local10:b2Vec2;
			var _local11:Number;
			var _local12:Number;
			var _local13:Number;
			var _local14:Number;
			var _local15:Number;
			var _local16:Number;
			_local3 = new b2Vec2();
			var _local4:Number = 0;
			var _local5:Number = 0;
			var _local6:Number = 0;
			_local7 = (1 / 3);
			var _local8:int;
			while (_local8 < _arg2) {
				_local9 = _arg1[_local8];
				_local10 = (((_local8 + 1) < _arg2)) ? _arg1[int((_local8 + 1))] : _arg1[0];
				_local11 = (_local9.x - _local5);
				_local12 = (_local9.y - _local6);
				_local13 = (_local10.x - _local5);
				_local14 = (_local10.y - _local6);
				_local15 = ((_local11 * _local14) - (_local12 * _local13));
				_local16 = (0.5 * _local15);
				_local4 = (_local4 + _local16);
				_local3.x = (_local3.x + ((_local16 * _local7) * ((_local5 + _local9.x) + _local10.x)));
				_local3.y = (_local3.y + ((_local16 * _local7) * ((_local6 + _local9.y) + _local10.y)));
				_local8++;
			};
			_local3.x = (_local3.x * (1 / _local4));
			_local3.y = (_local3.y * (1 / _local4));
			return (_local3);
		}
		public static function ComputeOBB(_arg1:b2OBB, _arg2:Array, _arg3:int):void{
			var _local4:int;
			var _local7:b2Vec2;
			var _local8:Number;
			var _local9:Number;
			var _local10:Number;
			var _local11:Number;
			var _local12:Number;
			var _local13:Number;
			var _local14:Number;
			var _local15:Number;
			var _local16:Number;
			var _local17:int;
			var _local18:Number;
			var _local19:Number;
			var _local20:Number;
			var _local21:Number;
			var _local22:Number;
			var _local23:Number;
			var _local24:Number;
			var _local25:b2Mat22;
			var _local5:Array = new Array((b2Settings.b2_maxPolygonVertices + 1));
			_local4 = 0;
			while (_local4 < _arg3) {
				_local5[_local4] = _arg2[_local4];
				_local4++;
			};
			_local5[_arg3] = _local5[0];
			var _local6:Number = Number.MAX_VALUE;
			_local4 = 1;
			while (_local4 <= _arg3) {
				_local7 = _local5[int((_local4 - 1))];
				_local8 = (_local5[_local4].x - _local7.x);
				_local9 = (_local5[_local4].y - _local7.y);
				_local10 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9)));
				_local8 = (_local8 / _local10);
				_local9 = (_local9 / _local10);
				_local11 = -(_local9);
				_local12 = _local8;
				_local13 = Number.MAX_VALUE;
				_local14 = Number.MAX_VALUE;
				_local15 = -(Number.MAX_VALUE);
				_local16 = -(Number.MAX_VALUE);
				_local17 = 0;
				while (_local17 < _arg3) {
					_local19 = (_local5[_local17].x - _local7.x);
					_local20 = (_local5[_local17].y - _local7.y);
					_local21 = ((_local8 * _local19) + (_local9 * _local20));
					_local22 = ((_local11 * _local19) + (_local12 * _local20));
					if (_local21 < _local13){
						_local13 = _local21;
					};
					if (_local22 < _local14){
						_local14 = _local22;
					};
					if (_local21 > _local15){
						_local15 = _local21;
					};
					if (_local22 > _local16){
						_local16 = _local22;
					};
					_local17++;
				};
				_local18 = ((_local15 - _local13) * (_local16 - _local14));
				if (_local18 < (0.95 * _local6)){
					_local6 = _local18;
					_arg1.R.col1.x = _local8;
					_arg1.R.col1.y = _local9;
					_arg1.R.col2.x = _local11;
					_arg1.R.col2.y = _local12;
					_local23 = (0.5 * (_local13 + _local15));
					_local24 = (0.5 * (_local14 + _local16));
					_local25 = _arg1.R;
					_arg1.center.x = (_local7.x + ((_local25.col1.x * _local23) + (_local25.col2.x * _local24)));
					_arg1.center.y = (_local7.y + ((_local25.col1.y * _local23) + (_local25.col2.y * _local24)));
					_arg1.extents.x = (0.5 * (_local15 - _local13));
					_arg1.extents.y = (0.5 * (_local16 - _local14));
				};
				_local4++;
			};
		}

	}
}//package Box2D.Collision.Shapes 

****************

//b2Shape (Box2D.Collision.Shapes.b2Shape)
package Box2D.Collision.Shapes {
	import Box2D.Collision.*;
	import Box2D.Dynamics.*;
	import Box2D.Common.Math.*;

	public class b2Shape {

		public var m_next:b2Shape;
		public var m_type:int;
		public var m_sweepRadius:Number;
		public var m_density:Number;
		public var m_filter:b2FilterData;
		public var m_friction:Number;
		public var m_isSensor:Boolean;
		public var m_restitution:Number;
		public var m_userData;
		public var m_proxyId:uint;
		public var m_body:b2Body;

		public static const e_polygonShape:int = 1;
		public static const e_unknownShape:int = -1;
		public static const e_circleShape:int = 0;
		public static const e_shapeTypeCount:int = 2;

		private static var s_resetAABB:b2AABB = new b2AABB();
		private static var s_syncAABB:b2AABB = new b2AABB();
		private static var s_proxyAABB:b2AABB = new b2AABB();

		public function b2Shape(_arg1:b2ShapeDef){
			m_userData = _arg1.userData;
			m_friction = _arg1.friction;
			m_restitution = _arg1.restitution;
			m_density = _arg1.density;
			m_body = null;
			m_sweepRadius = 0;
			m_next = null;
			m_proxyId = b2Pair.b2_nullProxy;
			m_filter = _arg1.filter.Copy();
			m_isSensor = _arg1.isSensor;
		}
		public function SetUserData(_arg1):void{
			m_userData = _arg1;
		}
		public function GetSweepRadius():Number{
			return (m_sweepRadius);
		}
		public function GetNext():b2Shape{
			return (m_next);
		}
		public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{
		}
		public function GetType():int{
			return (m_type);
		}
		public function GetRestitution():Number{
			return (m_restitution);
		}
		public function GetFriction():Number{
			return (m_friction);
		}
		public function GetFilterData():b2FilterData{
			return (m_filter.Copy());
		}
		public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{
			return (false);
		}
		public function RefilterProxy(_arg1:b2BroadPhase, _arg2:b2XForm):void{
			if (m_proxyId == b2Pair.b2_nullProxy){
				return;
			};
			_arg1.DestroyProxy(m_proxyId);
			var _local3:b2AABB = s_resetAABB;
			ComputeAABB(_local3, _arg2);
			var _local4:Boolean = _arg1.InRange(_local3);
			if (_local4){
				m_proxyId = _arg1.CreateProxy(_local3, this);
			} else {
				m_proxyId = b2Pair.b2_nullProxy;
			};
		}
		public function SetFilterData(_arg1:b2FilterData):void{
			m_filter = _arg1.Copy();
		}
		public function GetUserData(){
			return (m_userData);
		}
		public function Synchronize(_arg1:b2BroadPhase, _arg2:b2XForm, _arg3:b2XForm):Boolean{
			if (m_proxyId == b2Pair.b2_nullProxy){
				return (false);
			};
			var _local4:b2AABB = s_syncAABB;
			ComputeSweptAABB(_local4, _arg2, _arg3);
			if (_arg1.InRange(_local4)){
				_arg1.MoveProxy(m_proxyId, _local4);
				return (true);
			};
			return (false);
		}
		public function ComputeMass(_arg1:b2MassData):void{
		}
		public function IsSensor():Boolean{
			return (m_isSensor);
		}
		public function DestroyProxy(_arg1:b2BroadPhase):void{
			if (m_proxyId != b2Pair.b2_nullProxy){
				_arg1.DestroyProxy(m_proxyId);
				m_proxyId = b2Pair.b2_nullProxy;
			};
		}
		public function UpdateSweepRadius(_arg1:b2Vec2):void{
		}
		public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{
		}
		public function GetBody():b2Body{
			return (m_body);
		}
		public function CreateProxy(_arg1:b2BroadPhase, _arg2:b2XForm):void{
			var _local3:b2AABB = s_proxyAABB;
			ComputeAABB(_local3, _arg2);
			var _local4:Boolean = _arg1.InRange(_local3);
			if (_local4){
				m_proxyId = _arg1.CreateProxy(_local3, this);
			} else {
				m_proxyId = b2Pair.b2_nullProxy;
			};
		}
		public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{
			return (false);
		}

		public static function Destroy(_arg1:b2Shape, _arg2):void{
		}
		public static function Create(_arg1:b2ShapeDef, _arg2):b2Shape{
			switch (_arg1.type){
				case e_circleShape:
					return (new b2CircleShape(_arg1));
				case e_polygonShape:
					return (new b2PolygonShape(_arg1));
				default:
					return (null);
			};
		}

	}
}//package Box2D.Collision.Shapes 

****************

//b2ShapeDef (Box2D.Collision.Shapes.b2ShapeDef)
package Box2D.Collision.Shapes {

	public class b2ShapeDef {

		public var friction:Number;// = 0.2
		public var isSensor:Boolean;// = false
		public var density:Number;// = 0
		public var restitution:Number;// = 0
		public var userData;// = null
		public var filter:b2FilterData;
		public var type:int;// = -1

		public function b2ShapeDef(){
			filter = new b2FilterData();
			super();
		}
	}
}//package Box2D.Collision.Shapes 

****************

//b2AABB (Box2D.Collision.b2AABB)
package Box2D.Collision {
	import Box2D.Common.Math.*;

	public class b2AABB {

		public var upperBound:b2Vec2;
		public var lowerBound:b2Vec2;

		public function b2AABB(){
			lowerBound = new b2Vec2();
			upperBound = new b2Vec2();
			super();
		}
		public function IsValid():Boolean{
			var _local1:Number = (upperBound.x - lowerBound.x);
			var _local2:Number = (upperBound.y - lowerBound.y);
			var _local3:Boolean = (((_local1 >= 0)) && ((_local2 >= 0)));
			_local3 = ((((_local3) && (lowerBound.IsValid()))) && (upperBound.IsValid()));
			return (_local3);
		}

	}
}//package Box2D.Collision 

****************

//b2Bound (Box2D.Collision.b2Bound)
package Box2D.Collision {

	public class b2Bound {

		public var value:uint;
		public var proxyId:uint;
		public var stabbingCount:uint;

		public function Swap(_arg1:b2Bound):void{
			var _local2:uint = value;
			var _local3:uint = proxyId;
			var _local4:uint = stabbingCount;
			value = _arg1.value;
			proxyId = _arg1.proxyId;
			stabbingCount = _arg1.stabbingCount;
			_arg1.value = _local2;
			_arg1.proxyId = _local3;
			_arg1.stabbingCount = _local4;
		}
		public function IsLower():Boolean{
			return (((value & 1) == 0));
		}
		public function IsUpper():Boolean{
			return (((value & 1) == 1));
		}

	}
}//package Box2D.Collision 

****************

//b2BoundValues (Box2D.Collision.b2BoundValues)
package Box2D.Collision {

	public class b2BoundValues {

		public var lowerValues:Array;
		public var upperValues:Array;

		public function b2BoundValues(){
			lowerValues = [0, 0];
			upperValues = [0, 0];
			super();
		}
	}
}//package Box2D.Collision 

****************

//b2BroadPhase (Box2D.Collision.b2BroadPhase)
package Box2D.Collision {
	import Box2D.Common.Math.*;
	import Box2D.Common.*;

	public class b2BroadPhase {

		public var m_bounds:Array;
		public var m_quantizationFactor:b2Vec2;
		public var m_worldAABB:b2AABB;
		public var m_freeProxy:uint;
		public var m_proxyCount:int;
		public var m_proxyPool:Array;
		public var m_queryResultCount:int;
		public var m_pairManager:b2PairManager;
		public var m_timeStamp:uint;
		public var m_queryResults:Array;

		public static const b2_nullEdge:uint = 0xFFFF;
		public static const b2_invalid:uint = 0xFFFF;

		public static var s_validate:Boolean = false;

		public function b2BroadPhase(_arg1:b2AABB, _arg2:b2PairCallback){
			var _local3:int;
			var _local5:Number;
			var _local6:b2Proxy;
			var _local7:int;
			m_pairManager = new b2PairManager();
			m_proxyPool = new Array(b2Settings.b2_maxPairs);
			m_bounds = new Array((2 * b2Settings.b2_maxProxies));
			m_queryResults = new Array(b2Settings.b2_maxProxies);
			m_quantizationFactor = new b2Vec2();
			super();
			m_pairManager.Initialize(this, _arg2);
			m_worldAABB = _arg1;
			m_proxyCount = 0;
			_local3 = 0;
			while (_local3 < b2Settings.b2_maxProxies) {
				m_queryResults[_local3] = 0;
				_local3++;
			};
			m_bounds = new Array(2);
			_local3 = 0;
			while (_local3 < 2) {
				m_bounds[_local3] = new Array((2 * b2Settings.b2_maxProxies));
				_local7 = 0;
				while (_local7 < (2 * b2Settings.b2_maxProxies)) {
					m_bounds[_local3][_local7] = new b2Bound();
					_local7++;
				};
				_local3++;
			};
			var _local4:Number = (_arg1.upperBound.x - _arg1.lowerBound.x);
			_local5 = (_arg1.upperBound.y - _arg1.lowerBound.y);
			m_quantizationFactor.x = (b2Settings.USHRT_MAX / _local4);
			m_quantizationFactor.y = (b2Settings.USHRT_MAX / _local5);
			_local3 = 0;
			while (_local3 < (b2Settings.b2_maxProxies - 1)) {
				_local6 = new b2Proxy();
				m_proxyPool[_local3] = _local6;
				_local6.SetNext((_local3 + 1));
				_local6.timeStamp = 0;
				_local6.overlapCount = b2_invalid;
				_local6.userData = null;
				_local3++;
			};
			_local6 = new b2Proxy();
			m_proxyPool[int((b2Settings.b2_maxProxies - 1))] = _local6;
			_local6.SetNext(b2Pair.b2_nullProxy);
			_local6.timeStamp = 0;
			_local6.overlapCount = b2_invalid;
			_local6.userData = null;
			m_freeProxy = 0;
			m_timeStamp = 1;
			m_queryResultCount = 0;
		}
		public function QueryAABB(_arg1:b2AABB, _arg2, _arg3:int):int{
			var _local6:uint;
			var _local7:uint;
			var _local12:b2Proxy;
			var _local4:Array = new Array();
			var _local5:Array = new Array();
			ComputeBounds(_local4, _local5, _arg1);
			var _local8:Array = [_local6];
			var _local9:Array = [_local7];
			Query(_local8, _local9, _local4[0], _local5[0], m_bounds[0], (2 * m_proxyCount), 0);
			Query(_local8, _local9, _local4[1], _local5[1], m_bounds[1], (2 * m_proxyCount), 1);
			var _local10:int;
			var _local11:int;
			while ((((_local11 < m_queryResultCount)) && ((_local10 < _arg3)))) {
				_local12 = m_proxyPool[m_queryResults[_local11]];
				_arg2[_local11] = _local12.userData;
				_local11++;
				_local10++;
			};
			m_queryResultCount = 0;
			IncrementTimeStamp();
			return (_local10);
		}
		public function Commit():void{
			m_pairManager.Commit();
		}
		public function GetProxy(_arg1:int):b2Proxy{
			var _local2:b2Proxy = m_proxyPool[_arg1];
			if ((((_arg1 == b2Pair.b2_nullProxy)) || ((_local2.IsValid() == false)))){
				return (null);
			};
			return (_local2);
		}
		private function IncrementTimeStamp():void{
			var _local1:uint;
			if (m_timeStamp == b2Settings.USHRT_MAX){
				_local1 = 0;
				while (_local1 < b2Settings.b2_maxProxies) {
					(m_proxyPool[_local1] as b2Proxy).timeStamp = 0;
					_local1++;
				};
				m_timeStamp = 1;
			} else {
				m_timeStamp++;
			};
		}
		private function Query(_arg1:Array, _arg2:Array, _arg3:uint, _arg4:uint, _arg5:Array, _arg6:uint, _arg7:int):void{
			var _local10:b2Bound;
			var _local12:int;
			var _local13:int;
			var _local14:b2Proxy;
			var _local8:uint = BinarySearch(_arg5, _arg6, _arg3);
			var _local9:uint = BinarySearch(_arg5, _arg6, _arg4);
			var _local11:uint = _local8;
			while (_local11 < _local9) {
				_local10 = _arg5[_local11];
				if (_local10.IsLower()){
					IncrementOverlapCount(_local10.proxyId);
				};
				_local11++;
			};
			if (_local8 > 0){
				_local12 = (_local8 - 1);
				_local10 = _arg5[_local12];
				_local13 = _local10.stabbingCount;
				while (_local13) {
					_local10 = _arg5[_local12];
					if (_local10.IsLower()){
						_local14 = m_proxyPool[_local10.proxyId];
						if (_local8 <= _local14.upperBounds[_arg7]){
							IncrementOverlapCount(_local10.proxyId);
							_local13--;
						};
					};
					_local12--;
				};
			};
			_arg1[0] = _local8;
			_arg2[0] = _local9;
		}
		private function TestOverlapValidate(_arg1:b2Proxy, _arg2:b2Proxy):Boolean{
			var _local4:Array;
			var _local5:b2Bound;
			var _local6:b2Bound;
			var _local3:int;
			while (_local3 < 2) {
				_local4 = m_bounds[_local3];
				_local5 = _local4[_arg1.lowerBounds[_local3]];
				_local6 = _local4[_arg2.upperBounds[_local3]];
				if (_local5.value > _local6.value){
					return (false);
				};
				_local5 = _local4[_arg1.upperBounds[_local3]];
				_local6 = _local4[_arg2.lowerBounds[_local3]];
				if (_local5.value < _local6.value){
					return (false);
				};
				_local3++;
			};
			return (true);
		}
		private function ComputeBounds(_arg1:Array, _arg2:Array, _arg3:b2AABB):void{
			var _local4:Number = _arg3.lowerBound.x;
			var _local5:Number = _arg3.lowerBound.y;
			_local4 = b2Math.b2Min(_local4, m_worldAABB.upperBound.x);
			_local5 = b2Math.b2Min(_local5, m_worldAABB.upperBound.y);
			_local4 = b2Math.b2Max(_local4, m_worldAABB.lowerBound.x);
			_local5 = b2Math.b2Max(_local5, m_worldAABB.lowerBound.y);
			var _local6:Number = _arg3.upperBound.x;
			var _local7:Number = _arg3.upperBound.y;
			_local6 = b2Math.b2Min(_local6, m_worldAABB.upperBound.x);
			_local7 = b2Math.b2Min(_local7, m_worldAABB.upperBound.y);
			_local6 = b2Math.b2Max(_local6, m_worldAABB.lowerBound.x);
			_local7 = b2Math.b2Max(_local7, m_worldAABB.lowerBound.y);
			_arg1[0] = (uint((m_quantizationFactor.x * (_local4 - m_worldAABB.lowerBound.x))) & (b2Settings.USHRT_MAX - 1));
			_arg2[0] = ((uint((m_quantizationFactor.x * (_local6 - m_worldAABB.lowerBound.x))) & 0xFFFF) | 1);
			_arg1[1] = (uint((m_quantizationFactor.y * (_local5 - m_worldAABB.lowerBound.y))) & (b2Settings.USHRT_MAX - 1));
			_arg2[1] = ((uint((m_quantizationFactor.y * (_local7 - m_worldAABB.lowerBound.y))) & 0xFFFF) | 1);
		}
		public function CreateProxy(_arg1:b2AABB, _arg2):uint{
			var _local3:uint;
			var _local4:b2Proxy;
			var _local11:Array;
			var _local12:uint;
			var _local13:uint;
			var _local14:Array;
			var _local15:Array;
			var _local16:Array;
			var _local17:int;
			var _local18:int;
			var _local19:b2Bound;
			var _local20:b2Bound;
			var _local21:b2Bound;
			var _local22:int;
			var _local23:b2Proxy;
			var _local5:uint = m_freeProxy;
			_local4 = m_proxyPool[_local5];
			m_freeProxy = _local4.GetNext();
			_local4.overlapCount = 0;
			_local4.userData = _arg2;
			var _local6:uint = (2 * m_proxyCount);
			var _local7:Array = new Array();
			var _local8:Array = new Array();
			ComputeBounds(_local7, _local8, _arg1);
			var _local9:int;
			while (_local9 < 2) {
				_local11 = m_bounds[_local9];
				_local14 = [_local12];
				_local15 = [_local13];
				Query(_local14, _local15, _local7[_local9], _local8[_local9], _local11, _local6, _local9);
				_local12 = _local14[0];
				_local13 = _local15[0];
				_local16 = new Array();
				_local18 = (_local6 - _local13);
				_local17 = 0;
				while (_local17 < _local18) {
					_local16[_local17] = new b2Bound();
					_local19 = _local16[_local17];
					_local20 = _local11[int((_local13 + _local17))];
					_local19.value = _local20.value;
					_local19.proxyId = _local20.proxyId;
					_local19.stabbingCount = _local20.stabbingCount;
					_local17++;
				};
				_local18 = _local16.length;
				_local22 = (_local13 + 2);
				_local17 = 0;
				while (_local17 < _local18) {
					_local20 = _local16[_local17];
					_local19 = _local11[int((_local22 + _local17))];
					_local19.value = _local20.value;
					_local19.proxyId = _local20.proxyId;
					_local19.stabbingCount = _local20.stabbingCount;
					_local17++;
				};
				_local16 = new Array();
				_local18 = (_local13 - _local12);
				_local17 = 0;
				while (_local17 < _local18) {
					_local16[_local17] = new b2Bound();
					_local19 = _local16[_local17];
					_local20 = _local11[int((_local12 + _local17))];
					_local19.value = _local20.value;
					_local19.proxyId = _local20.proxyId;
					_local19.stabbingCount = _local20.stabbingCount;
					_local17++;
				};
				_local18 = _local16.length;
				_local22 = (_local12 + 1);
				_local17 = 0;
				while (_local17 < _local18) {
					_local20 = _local16[_local17];
					_local19 = _local11[int((_local22 + _local17))];
					_local19.value = _local20.value;
					_local19.proxyId = _local20.proxyId;
					_local19.stabbingCount = _local20.stabbingCount;
					_local17++;
				};
				_local13++;
				_local19 = _local11[_local12];
				_local20 = _local11[_local13];
				_local19.value = _local7[_local9];
				_local19.proxyId = _local5;
				_local20.value = _local8[_local9];
				_local20.proxyId = _local5;
				_local21 = _local11[int((_local12 - 1))];
				_local19.stabbingCount = ((_local12 == 0)) ? 0 : _local21.stabbingCount;
				_local21 = _local11[int((_local13 - 1))];
				_local20.stabbingCount = _local21.stabbingCount;
				_local3 = _local12;
				while (_local3 < _local13) {
					_local21 = _local11[_local3];
					_local21.stabbingCount++;
					_local3++;
				};
				_local3 = _local12;
				while (_local3 < (_local6 + 2)) {
					_local19 = _local11[_local3];
					_local23 = m_proxyPool[_local19.proxyId];
					if (_local19.IsLower()){
						_local23.lowerBounds[_local9] = _local3;
					} else {
						_local23.upperBounds[_local9] = _local3;
					};
					_local3++;
				};
				_local9++;
			};
			m_proxyCount++;
			var _local10:int;
			while (_local10 < m_queryResultCount) {
				m_pairManager.AddBufferedPair(_local5, m_queryResults[_local10]);
				_local10++;
			};
			m_pairManager.Commit();
			m_queryResultCount = 0;
			IncrementTimeStamp();
			return (_local5);
		}
		public function DestroyProxy(_arg1:uint):void{
			var _local2:b2Bound;
			var _local3:b2Bound;
			var _local8:Array;
			var _local9:uint;
			var _local10:uint;
			var _local11:uint;
			var _local12:uint;
			var _local13:Array;
			var _local14:int;
			var _local15:int;
			var _local16:int;
			var _local17:uint;
			var _local18:int;
			var _local19:b2Proxy;
			var _local4:b2Proxy = m_proxyPool[_arg1];
			var _local5:int = (2 * m_proxyCount);
			var _local6:int;
			while (_local6 < 2) {
				_local8 = m_bounds[_local6];
				_local9 = _local4.lowerBounds[_local6];
				_local10 = _local4.upperBounds[_local6];
				_local2 = _local8[_local9];
				_local11 = _local2.value;
				_local3 = _local8[_local10];
				_local12 = _local3.value;
				_local13 = new Array();
				_local15 = ((_local10 - _local9) - 1);
				_local14 = 0;
				while (_local14 < _local15) {
					_local13[_local14] = new b2Bound();
					_local2 = _local13[_local14];
					_local3 = _local8[int(((_local9 + 1) + _local14))];
					_local2.value = _local3.value;
					_local2.proxyId = _local3.proxyId;
					_local2.stabbingCount = _local3.stabbingCount;
					_local14++;
				};
				_local15 = _local13.length;
				_local16 = _local9;
				_local14 = 0;
				while (_local14 < _local15) {
					_local3 = _local13[_local14];
					_local2 = _local8[int((_local16 + _local14))];
					_local2.value = _local3.value;
					_local2.proxyId = _local3.proxyId;
					_local2.stabbingCount = _local3.stabbingCount;
					_local14++;
				};
				_local13 = new Array();
				_local15 = ((_local5 - _local10) - 1);
				_local14 = 0;
				while (_local14 < _local15) {
					_local13[_local14] = new b2Bound();
					_local2 = _local13[_local14];
					_local3 = _local8[int(((_local10 + 1) + _local14))];
					_local2.value = _local3.value;
					_local2.proxyId = _local3.proxyId;
					_local2.stabbingCount = _local3.stabbingCount;
					_local14++;
				};
				_local15 = _local13.length;
				_local16 = (_local10 - 1);
				_local14 = 0;
				while (_local14 < _local15) {
					_local3 = _local13[_local14];
					_local2 = _local8[int((_local16 + _local14))];
					_local2.value = _local3.value;
					_local2.proxyId = _local3.proxyId;
					_local2.stabbingCount = _local3.stabbingCount;
					_local14++;
				};
				_local15 = (_local5 - 2);
				_local17 = _local9;
				while (_local17 < _local15) {
					_local2 = _local8[_local17];
					_local19 = m_proxyPool[_local2.proxyId];
					if (_local2.IsLower()){
						_local19.lowerBounds[_local6] = _local17;
					} else {
						_local19.upperBounds[_local6] = _local17;
					};
					_local17++;
				};
				_local15 = (_local10 - 1);
				_local18 = _local9;
				while (_local18 < _local15) {
					_local2 = _local8[_local18];
					_local2.stabbingCount--;
					_local18++;
				};
				Query([0], [0], _local11, _local12, _local8, (_local5 - 2), _local6);
				_local6++;
			};
			var _local7:int;
			while (_local7 < m_queryResultCount) {
				m_pairManager.RemoveBufferedPair(_arg1, m_queryResults[_local7]);
				_local7++;
			};
			m_pairManager.Commit();
			m_queryResultCount = 0;
			IncrementTimeStamp();
			_local4.userData = null;
			_local4.overlapCount = b2_invalid;
			_local4.lowerBounds[0] = b2_invalid;
			_local4.lowerBounds[1] = b2_invalid;
			_local4.upperBounds[0] = b2_invalid;
			_local4.upperBounds[1] = b2_invalid;
			_local4.SetNext(m_freeProxy);
			m_freeProxy = _arg1;
			m_proxyCount--;
		}
		public function TestOverlap(_arg1:b2BoundValues, _arg2:b2Proxy):Boolean{
			var _local4:Array;
			var _local5:b2Bound;
			var _local3:int;
			while (_local3 < 2) {
				_local4 = m_bounds[_local3];
				_local5 = _local4[_arg2.upperBounds[_local3]];
				if (_arg1.lowerValues[_local3] > _local5.value){
					return (false);
				};
				_local5 = _local4[_arg2.lowerBounds[_local3]];
				if (_arg1.upperValues[_local3] < _local5.value){
					return (false);
				};
				_local3++;
			};
			return (true);
		}
		public function Validate():void{
			var _local1:b2Pair;
			var _local2:b2Proxy;
			var _local3:b2Proxy;
			var _local4:Boolean;
			var _local6:b2Bound;
			var _local7:uint;
			var _local8:uint;
			var _local9:uint;
			var _local10:b2Bound;
			var _local5:int;
			while (_local5 < 2) {
				_local6 = m_bounds[_local5];
				_local7 = (2 * m_proxyCount);
				_local8 = 0;
				_local9 = 0;
				while (_local9 < _local7) {
					_local10 = _local6[_local9];
					if (_local10.IsLower() == true){
						_local8++;
					} else {
						_local8--;
					};
					_local9++;
				};
				_local5++;
			};
		}
		private function IncrementOverlapCount(_arg1:uint):void{
			var _local2:b2Proxy = m_proxyPool[_arg1];
			if (_local2.timeStamp < m_timeStamp){
				_local2.timeStamp = m_timeStamp;
				_local2.overlapCount = 1;
			} else {
				_local2.overlapCount = 2;
				m_queryResults[m_queryResultCount] = _arg1;
				m_queryResultCount++;
			};
		}
		public function InRange(_arg1:b2AABB):Boolean{
			var _local2:Number;
			var _local3:Number;
			var _local4:Number;
			var _local5:Number;
			_local2 = _arg1.lowerBound.x;
			_local3 = _arg1.lowerBound.y;
			_local2 = (_local2 - m_worldAABB.upperBound.x);
			_local3 = (_local3 - m_worldAABB.upperBound.y);
			_local4 = m_worldAABB.lowerBound.x;
			_local5 = m_worldAABB.lowerBound.y;
			_local4 = (_local4 - _arg1.upperBound.x);
			_local5 = (_local5 - _arg1.upperBound.y);
			_local2 = b2Math.b2Max(_local2, _local4);
			_local3 = b2Math.b2Max(_local3, _local5);
			return ((b2Math.b2Max(_local2, _local3) < 0));
		}
		public function MoveProxy(_arg1:uint, _arg2:b2AABB):void{
			var _local3:Array;
			var _local4:int;
			var _local5:uint;
			var _local6:uint;
			var _local7:b2Bound;
			var _local8:b2Bound;
			var _local9:b2Bound;
			var _local10:uint;
			var _local11:b2Proxy;
			var _local16:Array;
			var _local17:uint;
			var _local18:uint;
			var _local19:uint;
			var _local20:uint;
			var _local21:int;
			var _local22:int;
			var _local23:uint;
			var _local24:b2Proxy;
			if ((((_arg1 == b2Pair.b2_nullProxy)) || ((b2Settings.b2_maxProxies <= _arg1)))){
				return;
			};
			if (_arg2.IsValid() == false){
				return;
			};
			var _local12:uint = (2 * m_proxyCount);
			var _local13:b2Proxy = m_proxyPool[_arg1];
			var _local14:b2BoundValues = new b2BoundValues();
			ComputeBounds(_local14.lowerValues, _local14.upperValues, _arg2);
			var _local15:b2BoundValues = new b2BoundValues();
			_local5 = 0;
			while (_local5 < 2) {
				_local7 = m_bounds[_local5][_local13.lowerBounds[_local5]];
				_local15.lowerValues[_local5] = _local7.value;
				_local7 = m_bounds[_local5][_local13.upperBounds[_local5]];
				_local15.upperValues[_local5] = _local7.value;
				_local5++;
			};
			_local5 = 0;
			while (_local5 < 2) {
				_local16 = m_bounds[_local5];
				_local17 = _local13.lowerBounds[_local5];
				_local18 = _local13.upperBounds[_local5];
				_local19 = _local14.lowerValues[_local5];
				_local20 = _local14.upperValues[_local5];
				_local7 = _local16[_local17];
				_local21 = (_local19 - _local7.value);
				_local7.value = _local19;
				_local7 = _local16[_local18];
				_local22 = (_local20 - _local7.value);
				_local7.value = _local20;
				if (_local21 < 0){
					_local6 = _local17;
					while ((((_local6 > 0)) && ((_local19 < (_local16[int((_local6 - 1))] as b2Bound).value)))) {
						_local7 = _local16[_local6];
						_local8 = _local16[int((_local6 - 1))];
						_local23 = _local8.proxyId;
						_local24 = m_proxyPool[_local8.proxyId];
						_local8.stabbingCount++;
						if (_local8.IsUpper() == true){
							if (TestOverlap(_local14, _local24)){
								m_pairManager.AddBufferedPair(_arg1, _local23);
							};
							_local3 = _local24.upperBounds;
							_local4 = _local3[_local5];
							_local4++;
							_local3[_local5] = _local4;
							_local7.stabbingCount++;
						} else {
							_local3 = _local24.lowerBounds;
							_local4 = _local3[_local5];
							_local4++;
							_local3[_local5] = _local4;
							_local7.stabbingCount--;
						};
						_local3 = _local13.lowerBounds;
						_local4 = _local3[_local5];
						_local4--;
						_local3[_local5] = _local4;
						_local7.Swap(_local8);
						_local6--;
					};
				};
				if (_local22 > 0){
					_local6 = _local18;
					while ((((_local6 < (_local12 - 1))) && (((_local16[int((_local6 + 1))] as b2Bound).value <= _local20)))) {
						_local7 = _local16[_local6];
						_local9 = _local16[int((_local6 + 1))];
						_local10 = _local9.proxyId;
						_local11 = m_proxyPool[_local10];
						_local9.stabbingCount++;
						if (_local9.IsLower() == true){
							if (TestOverlap(_local14, _local11)){
								m_pairManager.AddBufferedPair(_arg1, _local10);
							};
							_local3 = _local11.lowerBounds;
							_local4 = _local3[_local5];
							_local4--;
							_local3[_local5] = _local4;
							_local7.stabbingCount++;
						} else {
							_local3 = _local11.upperBounds;
							_local4 = _local3[_local5];
							_local4--;
							_local3[_local5] = _local4;
							_local7.stabbingCount--;
						};
						_local3 = _local13.upperBounds;
						_local4 = _local3[_local5];
						_local4++;
						_local3[_local5] = _local4;
						_local7.Swap(_local9);
						_local6++;
					};
				};
				if (_local21 > 0){
					_local6 = _local17;
					while ((((_local6 < (_local12 - 1))) && (((_local16[int((_local6 + 1))] as b2Bound).value <= _local19)))) {
						_local7 = _local16[_local6];
						_local9 = _local16[int((_local6 + 1))];
						_local10 = _local9.proxyId;
						_local11 = m_proxyPool[_local10];
						_local9.stabbingCount--;
						if (_local9.IsUpper()){
							if (TestOverlap(_local15, _local11)){
								m_pairManager.RemoveBufferedPair(_arg1, _local10);
							};
							_local3 = _local11.upperBounds;
							_local4 = _local3[_local5];
							_local4--;
							_local3[_local5] = _local4;
							_local7.stabbingCount--;
						} else {
							_local3 = _local11.lowerBounds;
							_local4 = _local3[_local5];
							_local4--;
							_local3[_local5] = _local4;
							_local7.stabbingCount++;
						};
						_local3 = _local13.lowerBounds;
						_local4 = _local3[_local5];
						_local4++;
						_local3[_local5] = _local4;
						_local7.Swap(_local9);
						_local6++;
					};
				};
				if (_local22 < 0){
					_local6 = _local18;
					while ((((_local6 > 0)) && ((_local20 < (_local16[int((_local6 - 1))] as b2Bound).value)))) {
						_local7 = _local16[_local6];
						_local8 = _local16[int((_local6 - 1))];
						_local23 = _local8.proxyId;
						_local24 = m_proxyPool[_local23];
						_local8.stabbingCount--;
						if (_local8.IsLower() == true){
							if (TestOverlap(_local15, _local24)){
								m_pairManager.RemoveBufferedPair(_arg1, _local23);
							};
							_local3 = _local24.lowerBounds;
							_local4 = _local3[_local5];
							_local4++;
							_local3[_local5] = _local4;
							_local7.stabbingCount--;
						} else {
							_local3 = _local24.upperBounds;
							_local4 = _local3[_local5];
							_local4++;
							_local3[_local5] = _local4;
							_local7.stabbingCount++;
						};
						_local3 = _local13.upperBounds;
						_local4 = _local3[_local5];
						_local4--;
						_local3[_local5] = _local4;
						_local7.Swap(_local8);
						_local6--;
					};
				};
				_local5++;
			};
		}

		public static function BinarySearch(_arg1:Array, _arg2:int, _arg3:uint):uint{
			var _local6:int;
			var _local7:b2Bound;
			var _local4:int;
			var _local5:int = (_arg2 - 1);
			while (_local4 <= _local5) {
				_local6 = ((_local4 + _local5) / 2);
				_local7 = _arg1[_local6];
				if (_local7.value > _arg3){
					_local5 = (_local6 - 1);
				} else {
					if (_local7.value < _arg3){
						_local4 = (_local6 + 1);
					} else {
						return (uint(_local6));
					};
				};
			};
			return (uint(_local4));
		}

	}
}//package Box2D.Collision 

****************

//b2BufferedPair (Box2D.Collision.b2BufferedPair)
package Box2D.Collision {

	public class b2BufferedPair {

		public var proxyId1:uint;
		public var proxyId2:uint;

	}
}//package Box2D.Collision 

****************

//b2Collision (Box2D.Collision.b2Collision)
package Box2D.Collision {
	import Box2D.Collision.Shapes.*;
	import Box2D.Common.Math.*;
	import Box2D.Common.*;

	public class b2Collision {

		public static const b2_nullFeature:uint = 0xFF;

		private static var b2CollidePolyTempVec:b2Vec2 = new b2Vec2();

		public static function EdgeSeparation(_arg1:b2PolygonShape, _arg2:b2XForm, _arg3:int, _arg4:b2PolygonShape, _arg5:b2XForm):Number{
			var _local11:b2Mat22;
			var _local12:b2Vec2;
			var _local25:Number;
			var _local6:int = _arg1.m_vertexCount;
			var _local7:Array = _arg1.m_vertices;
			var _local8:Array = _arg1.m_normals;
			var _local9:int = _arg4.m_vertexCount;
			var _local10:Array = _arg4.m_vertices;
			_local11 = _arg2.R;
			_local12 = _local8[_arg3];
			var _local13:Number = ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y));
			var _local14:Number = ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y));
			_local11 = _arg5.R;
			var _local15:Number = ((_local11.col1.x * _local13) + (_local11.col1.y * _local14));
			var _local16:Number = ((_local11.col2.x * _local13) + (_local11.col2.y * _local14));
			var _local17:int;
			var _local18:Number = Number.MAX_VALUE;
			var _local19:int;
			while (_local19 < _local9) {
				_local12 = _local10[_local19];
				_local25 = ((_local12.x * _local15) + (_local12.y * _local16));
				if (_local25 < _local18){
					_local18 = _local25;
					_local17 = _local19;
				};
				_local19++;
			};
			_local12 = _local7[_arg3];
			_local11 = _arg2.R;
			var _local20:Number = (_arg2.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y)));
			var _local21:Number = (_arg2.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y)));
			_local12 = _local10[_local17];
			_local11 = _arg5.R;
			var _local22:Number = (_arg5.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y)));
			var _local23:Number = (_arg5.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y)));
			_local22 = (_local22 - _local20);
			_local23 = (_local23 - _local21);
			var _local24:Number = ((_local22 * _local13) + (_local23 * _local14));
			return (_local24);
		}
		public static function b2TestOverlap(_arg1:b2AABB, _arg2:b2AABB):Boolean{
			var _local3:b2Vec2 = _arg2.lowerBound;
			var _local4:b2Vec2 = _arg1.upperBound;
			var _local5:Number = (_local3.x - _local4.x);
			var _local6:Number = (_local3.y - _local4.y);
			_local3 = _arg1.lowerBound;
			_local4 = _arg2.upperBound;
			var _local7:Number = (_local3.x - _local4.x);
			var _local8:Number = (_local3.y - _local4.y);
			if ((((_local5 > 0)) || ((_local6 > 0)))){
				return (false);
			};
			if ((((_local7 > 0)) || ((_local8 > 0)))){
				return (false);
			};
			return (true);
		}
		public static function FindIncidentEdge(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:int, _arg5:b2PolygonShape, _arg6:b2XForm):void{
			var _local12:b2Mat22;
			var _local13:b2Vec2;
			var _local20:ClipVertex;
			var _local23:Number;
			var _local7:int = _arg2.m_vertexCount;
			var _local8:Array = _arg2.m_normals;
			var _local9:int = _arg5.m_vertexCount;
			var _local10:Array = _arg5.m_vertices;
			var _local11:Array = _arg5.m_normals;
			_local12 = _arg3.R;
			_local13 = _local8[_arg4];
			var _local14:Number = ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y));
			var _local15:Number = ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y));
			_local12 = _arg6.R;
			var _local16:Number = ((_local12.col1.x * _local14) + (_local12.col1.y * _local15));
			_local15 = ((_local12.col2.x * _local14) + (_local12.col2.y * _local15));
			_local14 = _local16;
			var _local17:int;
			var _local18:Number = Number.MAX_VALUE;
			var _local19:int;
			while (_local19 < _local9) {
				_local13 = _local11[_local19];
				_local23 = ((_local14 * _local13.x) + (_local15 * _local13.y));
				if (_local23 < _local18){
					_local18 = _local23;
					_local17 = _local19;
				};
				_local19++;
			};
			var _local21:int = _local17;
			var _local22:int = (((_local21 + 1) < _local9)) ? (_local21 + 1) : 0;
			_local20 = _arg1[0];
			_local13 = _local10[_local21];
			_local12 = _arg6.R;
			_local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y)));
			_local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y)));
			_local20.id.features.referenceEdge = _arg4;
			_local20.id.features.incidentEdge = _local21;
			_local20.id.features.incidentVertex = 0;
			_local20 = _arg1[1];
			_local13 = _local10[_local22];
			_local12 = _arg6.R;
			_local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y)));
			_local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y)));
			_local20.id.features.referenceEdge = _arg4;
			_local20.id.features.incidentEdge = _local22;
			_local20.id.features.incidentVertex = 1;
		}
		public static function b2CollidePolygons(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2PolygonShape, _arg5:b2XForm):void{
			var _local6:ClipVertex;
			var _local13:b2PolygonShape;
			var _local14:b2PolygonShape;
			var _local17:int;
			var _local18:uint;
			var _local34:int;
			var _local37:b2Vec2;
			var _local38:Number;
			var _local39:b2ManifoldPoint;
			_arg1.pointCount = 0;
			var _local7:int;
			var _local8:Array = [_local7];
			var _local9:Number = FindMaxSeparation(_local8, _arg2, _arg3, _arg4, _arg5);
			_local7 = _local8[0];
			if (_local9 > 0){
				return;
			};
			var _local10:int;
			var _local11:Array = [_local10];
			var _local12:Number = FindMaxSeparation(_local11, _arg4, _arg5, _arg2, _arg3);
			_local10 = _local11[0];
			if (_local12 > 0){
				return;
			};
			var _local15:b2XForm = new b2XForm();
			var _local16:b2XForm = new b2XForm();
			var _local19:Number = 0.98;
			var _local20:Number = 0.001;
			if (_local12 > ((_local19 * _local9) + _local20)){
				_local13 = _arg4;
				_local14 = _arg2;
				_local15.Set(_arg5);
				_local16.Set(_arg3);
				_local17 = _local10;
				_local18 = 1;
			} else {
				_local13 = _arg2;
				_local14 = _arg4;
				_local15.Set(_arg3);
				_local16.Set(_arg5);
				_local17 = _local7;
				_local18 = 0;
			};
			var _local21:Array = [new ClipVertex(), new ClipVertex()];
			FindIncidentEdge(_local21, _local13, _local15, _local17, _local14, _local16);
			var _local22:int = _local13.m_vertexCount;
			var _local23:Array = _local13.m_vertices;
			var _local24:b2Vec2 = _local23[_local17];
			var _local25:b2Vec2 = _local24.Copy();
			if ((_local17 + 1) < _local22){
				_local24 = _local23[int((_local17 + 1))];
				_local37 = _local24.Copy();
			} else {
				_local24 = _local23[0];
				_local37 = _local24.Copy();
			};
			var _local26:b2Vec2 = b2Math.SubtractVV(_local37, _local25);
			var _local27:b2Vec2 = b2Math.b2MulMV(_local15.R, b2Math.SubtractVV(_local37, _local25));
			_local27.Normalize();
			var _local28:b2Vec2 = b2Math.b2CrossVF(_local27, 1);
			_local25 = b2Math.b2MulX(_local15, _local25);
			_local37 = b2Math.b2MulX(_local15, _local37);
			var _local29:Number = b2Math.b2Dot(_local28, _local25);
			var _local30:Number = -(b2Math.b2Dot(_local27, _local25));
			var _local31:Number = b2Math.b2Dot(_local27, _local37);
			var _local32:Array = [new ClipVertex(), new ClipVertex()];
			var _local33:Array = [new ClipVertex(), new ClipVertex()];
			_local34 = ClipSegmentToLine(_local32, _local21, _local27.Negative(), _local30);
			if (_local34 < 2){
				return;
			};
			_local34 = ClipSegmentToLine(_local33, _local32, _local27, _local31);
			if (_local34 < 2){
				return;
			};
			_arg1.normal = (_local18) ? _local28.Negative() : _local28.Copy();
			var _local35:int;
			var _local36:int;
			while (_local36 < b2Settings.b2_maxManifoldPoints) {
				_local6 = _local33[_local36];
				_local38 = (b2Math.b2Dot(_local28, _local6.v) - _local29);
				if (_local38 <= 0){
					_local39 = _arg1.points[_local35];
					_local39.separation = _local38;
					_local39.localPoint1 = b2Math.b2MulXT(_arg3, _local6.v);
					_local39.localPoint2 = b2Math.b2MulXT(_arg5, _local6.v);
					_local39.id.key = _local6.id._key;
					_local39.id.features.flip = _local18;
					_local35++;
				};
				_local36++;
			};
			_arg1.pointCount = _local35;
		}
		public static function FindMaxSeparation(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2PolygonShape, _arg5:b2XForm):Number{
			var _local8:b2Vec2;
			var _local9:b2Mat22;
			var _local22:int;
			var _local23:Number;
			var _local24:int;
			var _local25:Number;
			var _local6:int = _arg2.m_vertexCount;
			var _local7:Array = _arg2.m_normals;
			_local9 = _arg5.R;
			_local8 = _arg4.m_centroid;
			var _local10:Number = (_arg5.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y)));
			var _local11:Number = (_arg5.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y)));
			_local9 = _arg3.R;
			_local8 = _arg2.m_centroid;
			_local10 = (_local10 - (_arg3.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y))));
			_local11 = (_local11 - (_arg3.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y))));
			var _local12:Number = ((_local10 * _arg3.R.col1.x) + (_local11 * _arg3.R.col1.y));
			var _local13:Number = ((_local10 * _arg3.R.col2.x) + (_local11 * _arg3.R.col2.y));
			var _local14:int;
			var _local15:Number = -(Number.MAX_VALUE);
			var _local16:int;
			while (_local16 < _local6) {
				_local8 = _local7[_local16];
				_local25 = ((_local8.x * _local12) + (_local8.y * _local13));
				if (_local25 > _local15){
					_local15 = _local25;
					_local14 = _local16;
				};
				_local16++;
			};
			var _local17:Number = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5);
			if (_local17 > 0){
				return (_local17);
			};
			var _local18:int = (((_local14 - 1) >= 0)) ? (_local14 - 1) : (_local6 - 1);
			var _local19:Number = EdgeSeparation(_arg2, _arg3, _local18, _arg4, _arg5);
			if (_local19 > 0){
				return (_local19);
			};
			var _local20:int = (((_local14 + 1) < _local6)) ? (_local14 + 1) : 0;
			var _local21:Number = EdgeSeparation(_arg2, _arg3, _local20, _arg4, _arg5);
			if (_local21 > 0){
				return (_local21);
			};
			if ((((_local19 > _local17)) && ((_local19 > _local21)))){
				_local24 = -1;
				_local22 = _local18;
				_local23 = _local19;
			} else {
				if (_local21 > _local17){
					_local24 = 1;
					_local22 = _local20;
					_local23 = _local21;
				} else {
					_arg1[0] = _local14;
					return (_local17);
				};
			};
			while (true) {
				if (_local24 == -1){
					_local14 = (((_local22 - 1) >= 0)) ? (_local22 - 1) : (_local6 - 1);
				} else {
					_local14 = (((_local22 + 1) < _local6)) ? (_local22 + 1) : 0;
				};
				_local17 = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5);
				if (_local17 > 0){
					return (_local17);
				};
				if (_local17 > _local23){
					_local22 = _local14;
					_local23 = _local17;
				} else {
					break;
				};
			};
			_arg1[0] = _local22;
			return (_local23);
		}
		public static function ClipSegmentToLine(_arg1:Array, _arg2:Array, _arg3:b2Vec2, _arg4:Number):int{
			var _local5:ClipVertex;
			var _local6:int;
			var _local7:b2Vec2;
			var _local8:b2Vec2;
			var _local9:Number;
			var _local11:Number;
			var _local12:b2Vec2;
			var _local13:ClipVertex;
			_local6 = 0;
			_local5 = _arg2[0];
			_local7 = _local5.v;
			_local5 = _arg2[1];
			_local8 = _local5.v;
			_local9 = (b2Math.b2Dot(_arg3, _local7) - _arg4);
			var _local10:Number = (b2Math.b2Dot(_arg3, _local8) - _arg4);
			if (_local9 <= 0){
				var _temp1 = _local6;
				_local6 = (_local6 + 1);
				var _local14 = _temp1;
				_arg1[_local14] = _arg2[0];
			};
			if (_local10 <= 0){
				var _temp2 = _local6;
				_local6 = (_local6 + 1);
				_local14 = _temp2;
				_arg1[_local14] = _arg2[1];
			};
			if ((_local9 * _local10) < 0){
				_local11 = (_local9 / (_local9 - _local10));
				_local5 = _arg1[_local6];
				_local12 = _local5.v;
				_local12.x = (_local7.x + (_local11 * (_local8.x - _local7.x)));
				_local12.y = (_local7.y + (_local11 * (_local8.y - _local7.y)));
				_local5 = _arg1[_local6];
				if (_local9 > 0){
					_local13 = _arg2[0];
					_local5.id = _local13.id;
				} else {
					_local13 = _arg2[1];
					_local5.id = _local13.id;
				};
				_local6++;
			};
			return (_local6);
		}
		public static function b2CollideCircles(_arg1:b2Manifold, _arg2:b2CircleShape, _arg3:b2XForm, _arg4:b2CircleShape, _arg5:b2XForm):void{
			var _local6:b2Mat22;
			var _local7:b2Vec2;
			var _local18:Number;
			var _local24:Number;
			var _local25:Number;
			_arg1.pointCount = 0;
			_local6 = _arg3.R;
			_local7 = _arg2.m_localPosition;
			var _local8:Number = (_arg3.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y)));
			var _local9:Number = (_arg3.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y)));
			_local6 = _arg5.R;
			_local7 = _arg4.m_localPosition;
			var _local10:Number = (_arg5.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y)));
			var _local11:Number = (_arg5.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y)));
			var _local12:Number = (_local10 - _local8);
			var _local13:Number = (_local11 - _local9);
			var _local14:Number = ((_local12 * _local12) + (_local13 * _local13));
			var _local15:Number = _arg2.m_radius;
			var _local16:Number = _arg4.m_radius;
			var _local17:Number = (_local15 + _local16);
			if (_local14 > (_local17 * _local17)){
				return;
			};
			if (_local14 < Number.MIN_VALUE){
				_local18 = -(_local17);
				_arg1.normal.Set(0, 1);
			} else {
				_local24 = Math.sqrt(_local14);
				_local18 = (_local24 - _local17);
				_local25 = (1 / _local24);
				_arg1.normal.x = (_local25 * _local12);
				_arg1.normal.y = (_local25 * _local13);
			};
			_arg1.pointCount = 1;
			var _local19:b2ManifoldPoint = _arg1.points[0];
			_local19.id.key = 0;
			_local19.separation = _local18;
			_local8 = (_local8 + (_local15 * _arg1.normal.x));
			_local9 = (_local9 + (_local15 * _arg1.normal.y));
			_local10 = (_local10 - (_local16 * _arg1.normal.x));
			_local11 = (_local11 - (_local16 * _arg1.normal.y));
			var _local20:Number = (0.5 * (_local8 + _local10));
			var _local21:Number = (0.5 * (_local9 + _local11));
			var _local22:Number = (_local20 - _arg3.position.x);
			var _local23:Number = (_local21 - _arg3.position.y);
			_local19.localPoint1.x = ((_local22 * _arg3.R.col1.x) + (_local23 * _arg3.R.col1.y));
			_local19.localPoint1.y = ((_local22 * _arg3.R.col2.x) + (_local23 * _arg3.R.col2.y));
			_local22 = (_local20 - _arg5.position.x);
			_local23 = (_local21 - _arg5.position.y);
			_local19.localPoint2.x = ((_local22 * _arg5.R.col1.x) + (_local23 * _arg5.R.col1.y));
			_local19.localPoint2.y = ((_local22 * _arg5.R.col2.x) + (_local23 * _arg5.R.col2.y));
		}
		public static function b2CollidePolygonAndCircle(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2CircleShape, _arg5:b2XForm):void{
			var _local6:b2ManifoldPoint;
			var _local7:Number;
			var _local8:Number;
			var _local9:Number;
			var _local10:Number;
			var _local11:b2Vec2;
			var _local12:b2Mat22;
			var _local17:Number;
			var _local32:Number;
			var _local33:Number;
			var _local34:Number;
			_arg1.pointCount = 0;
			_local12 = _arg5.R;
			_local11 = _arg4.m_localPosition;
			var _local13:Number = (_arg5.position.x + ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y)));
			var _local14:Number = (_arg5.position.y + ((_local12.col1.y * _local11.x) + (_local12.col2.y * _local11.y)));
			_local7 = (_local13 - _arg3.position.x);
			_local8 = (_local14 - _arg3.position.y);
			_local12 = _arg3.R;
			var _local15:Number = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y));
			var _local16:Number = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y));
			var _local18:int;
			var _local19:Number = -(Number.MAX_VALUE);
			var _local20:Number = _arg4.m_radius;
			var _local21:int = _arg2.m_vertexCount;
			var _local22:Array = _arg2.m_vertices;
			var _local23:Array = _arg2.m_normals;
			var _local24:int;
			while (_local24 < _local21) {
				_local11 = _local22[_local24];
				_local7 = (_local15 - _local11.x);
				_local8 = (_local16 - _local11.y);
				_local11 = _local23[_local24];
				_local34 = ((_local11.x * _local7) + (_local11.y * _local8));
				if (_local34 > _local20){
					return;
				};
				if (_local34 > _local19){
					_local19 = _local34;
					_local18 = _local24;
				};
				_local24++;
			};
			if (_local19 < Number.MIN_VALUE){
				_arg1.pointCount = 1;
				_local11 = _local23[_local18];
				_local12 = _arg3.R;
				_arg1.normal.x = ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y));
				_arg1.normal.y = ((_local12.col1.y * _local11.x) + (_local12.col2.y * _local11.y));
				_local6 = _arg1.points[0];
				_local6.id.features.incidentEdge = _local18;
				_local6.id.features.incidentVertex = b2_nullFeature;
				_local6.id.features.referenceEdge = 0;
				_local6.id.features.flip = 0;
				_local9 = (_local13 - (_local20 * _arg1.normal.x));
				_local10 = (_local14 - (_local20 * _arg1.normal.y));
				_local7 = (_local9 - _arg3.position.x);
				_local8 = (_local10 - _arg3.position.y);
				_local12 = _arg3.R;
				_local6.localPoint1.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y));
				_local6.localPoint1.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y));
				_local7 = (_local9 - _arg5.position.x);
				_local8 = (_local10 - _arg5.position.y);
				_local12 = _arg5.R;
				_local6.localPoint2.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y));
				_local6.localPoint2.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y));
				_local6.separation = (_local19 - _local20);
				return;
			};
			var _local25:int = _local18;
			var _local26:int = (((_local25 + 1) < _local21)) ? (_local25 + 1) : 0;
			_local11 = _local22[_local25];
			var _local27:b2Vec2 = _local22[_local26];
			var _local28:Number = (_local27.x - _local11.x);
			var _local29:Number = (_local27.y - _local11.y);
			var _local30:Number = Math.sqrt(((_local28 * _local28) + (_local29 * _local29)));
			_local28 = (_local28 / _local30);
			_local29 = (_local29 / _local30);
			_local7 = (_local15 - _local11.x);
			_local8 = (_local16 - _local11.y);
			var _local31:Number = ((_local7 * _local28) + (_local8 * _local29));
			_local6 = _arg1.points[0];
			if (_local31 <= 0){
				_local32 = _local11.x;
				_local33 = _local11.y;
				_local6.id.features.incidentEdge = b2_nullFeature;
				_local6.id.features.incidentVertex = _local25;
			} else {
				if (_local31 >= _local30){
					_local32 = _local27.x;
					_local33 = _local27.y;
					_local6.id.features.incidentEdge = b2_nullFeature;
					_local6.id.features.incidentVertex = _local26;
				} else {
					_local32 = ((_local28 * _local31) + _local11.x);
					_local33 = ((_local29 * _local31) + _local11.y);
					_local6.id.features.incidentEdge = _local18;
					_local6.id.features.incidentVertex = 0;
				};
			};
			_local7 = (_local15 - _local32);
			_local8 = (_local16 - _local33);
			_local17 = Math.sqrt(((_local7 * _local7) + (_local8 * _local8)));
			_local7 = (_local7 / _local17);
			_local8 = (_local8 / _local17);
			if (_local17 > _local20){
				return;
			};
			_arg1.pointCount = 1;
			_local12 = _arg3.R;
			_arg1.normal.x = ((_local12.col1.x * _local7) + (_local12.col2.x * _local8));
			_arg1.normal.y = ((_local12.col1.y * _local7) + (_local12.col2.y * _local8));
			_local9 = (_local13 - (_local20 * _arg1.normal.x));
			_local10 = (_local14 - (_local20 * _arg1.normal.y));
			_local7 = (_local9 - _arg3.position.x);
			_local8 = (_local10 - _arg3.position.y);
			_local12 = _arg3.R;
			_local6.localPoint1.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y));
			_local6.localPoint1.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y));
			_local7 = (_local9 - _arg5.position.x);
			_local8 = (_local10 - _arg5.position.y);
			_local12 = _arg5.R;
			_local6.localPoint2.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y));
			_local6.localPoint2.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y));
			_local6.separation = (_local17 - _local20);
			_local6.id.features.referenceEdge = 0;
			_local6.id.features.flip = 0;
		}

	}
}//package Box2D.Collision 

****************

//b2ContactID (Box2D.Collision.b2ContactID)
package Box2D.Collision {

	public class b2ContactID {

		public var _key:uint;
		public var features:Features;

		public function b2ContactID(){
			features = new Features();
			super();
			features._m_id = this;
		}
		public function Set(_arg1:b2ContactID):void{
			key = _arg1._key;
		}
		public function Copy():b2ContactID{
			var _local1:b2ContactID = new b2ContactID();
			_local1.key = key;
			return (_local1);
		}
		public function set key(_arg1:uint):void{
			_key = _arg1;
			features._referenceEdge = (_key & 0xFF);
			features._incidentEdge = (((_key & 0xFF00) >> 8) & 0xFF);
			features._incidentVertex = (((_key & 0xFF0000) >> 16) & 0xFF);
			features._flip = (((_key & 4278190080) >> 24) & 0xFF);
		}
		public function get key():uint{
			return (_key);
		}

	}
}//package Box2D.Collision 

****************

//b2ContactPoint (Box2D.Collision.b2ContactPoint)
package Box2D.Collision {
	import Box2D.Collision.Shapes.*;
	import Box2D.Common.Math.*;

	public class b2ContactPoint {

		public var friction:Number;
		public var separation:Number;
		public var normal:b2Vec2;
		public var position:b2Vec2;
		public var restitution:Number;
		public var shape1:b2Shape;
		public var shape2:b2Shape;
		public var id:b2ContactID;
		public var velocity:b2Vec2;

		public function b2ContactPoint(){
			position = new b2Vec2();
			velocity = new b2Vec2();
			normal = new b2Vec2();
			id = new b2ContactID();
			super();
		}
	}
}//package Box2D.Collision 

****************

//b2Distance (Box2D.Collision.b2Distance)
package Box2D.Collision {
	import Box2D.Collision.Shapes.*;
	import Box2D.Common.Math.*;
	import Box2D.Common.*;

	public class b2Distance {

		private static var s_p2s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()];
		private static var s_p1s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()];
		private static var s_points:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()];
		private static var gPoint:b2Point = new b2Point();
		public static var g_GJK_Iterations:int = 0;

		public static function InPoints(_arg1:b2Vec2, _arg2:Array, _arg3:int):Boolean{
			var _local6:b2Vec2;
			var _local7:Number;
			var _local8:Number;
			var _local9:Number;
			var _local10:Number;
			var _local4:Number = (100 * Number.MIN_VALUE);
			var _local5:int;
			while (_local5 < _arg3) {
				_local6 = _arg2[_local5];
				_local7 = Math.abs((_arg1.x - _local6.x));
				_local8 = Math.abs((_arg1.y - _local6.y));
				_local9 = Math.max(Math.abs(_arg1.x), Math.abs(_local6.x));
				_local10 = Math.max(Math.abs(_arg1.y), Math.abs(_local6.y));
				if ((((_local7 < (_local4 * (_local9 + 1)))) && ((_local8 < (_local4 * (_local10 + 1)))))){
					return (true);
				};
				_local5++;
			};
			return (false);
		}
		public static function DistanceGeneric(_arg1:b2Vec2, _arg2:b2Vec2, _arg3, _arg4:b2XForm, _arg5, _arg6:b2XForm):Number{
			var _local7:b2Vec2;
			var _local15:Number;
			var _local16:Number;
			var _local17:b2Vec2;
			var _local18:b2Vec2;
			var _local19:Number;
			var _local20:Number;
			var _local21:Number;
			var _local22:Number;
			var _local23:int;
			var _local8:Array = s_p1s;
			var _local9:Array = s_p2s;
			var _local10:Array = s_points;
			var _local11:int;
			_arg1.SetV(_arg3.GetFirstVertex(_arg4));
			_arg2.SetV(_arg5.GetFirstVertex(_arg6));
			var _local12:Number = 0;
			var _local13 = 20;
			var _local14:int;
			while (_local14 < _local13) {
				_local15 = (_arg2.x - _arg1.x);
				_local16 = (_arg2.y - _arg1.y);
				_local17 = _arg3.Support(_arg4, _local15, _local16);
				_local18 = _arg5.Support(_arg6, -(_local15), -(_local16));
				_local12 = ((_local15 * _local15) + (_local16 * _local16));
				_local19 = (_local18.x - _local17.x);
				_local20 = (_local18.y - _local17.y);
				_local21 = ((_local15 * _local19) + (_local16 * _local20));
				if ((_local12 - ((_local15 * _local19) + (_local16 * _local20))) <= (0.01 * _local12)){
					if (_local11 == 0){
						_arg1.SetV(_local17);
						_arg2.SetV(_local18);
					};
					g_GJK_Iterations = _local14;
					return (Math.sqrt(_local12));
				};
				switch (_local11){
					case 0:
						_local7 = _local8[0];
						_local7.SetV(_local17);
						_local7 = _local9[0];
						_local7.SetV(_local18);
						_local7 = _local10[0];
						_local7.x = _local19;
						_local7.y = _local20;
						_arg1.SetV(_local8[0]);
						_arg2.SetV(_local9[0]);
						_local11++;
						break;
					case 1:
						_local7 = _local8[1];
						_local7.SetV(_local17);
						_local7 = _local9[1];
						_local7.SetV(_local18);
						_local7 = _local10[1];
						_local7.x = _local19;
						_local7.y = _local20;
						_local11 = ProcessTwo(_arg1, _arg2, _local8, _local9, _local10);
						break;
					case 2:
						_local7 = _local8[2];
						_local7.SetV(_local17);
						_local7 = _local9[2];
						_local7.SetV(_local18);
						_local7 = _local10[2];
						_local7.x = _local19;
						_local7.y = _local20;
						_local11 = ProcessThree(_arg1, _arg2, _local8, _local9, _local10);
						break;
				};
				if (_local11 == 3){
					g_GJK_Iterations = _local14;
					return (0);
				};
				_local22 = -(Number.MAX_VALUE);
				_local23 = 0;
				while (_local23 < _local11) {
					_local7 = _local10[_local23];
					_local22 = b2Math.b2Max(_local22, ((_local7.x * _local7.x) + (_local7.y * _local7.y)));
					_local23++;
				};
				if ((((_local11 == 3)) || ((_local12 <= ((100 * Number.MIN_VALUE) * _local22))))){
					g_GJK_Iterations = _local14;
					_local15 = (_arg2.x - _arg1.x);
					_local16 = (_arg2.y - _arg1.y);
					_local12 = ((_local15 * _local15) + (_local16 * _local16));
					return (Math.sqrt(_local12));
				};
				_local14++;
			};
			g_GJK_Iterations = _local13;
			return (Math.sqrt(_local12));
		}
		public static function DistanceCC(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2CircleShape, _arg4:b2XForm, _arg5:b2CircleShape, _arg6:b2XForm):Number{
			var _local7:b2Mat22;
			var _local8:b2Vec2;
			var _local19:Number;
			var _local20:Number;
			_local7 = _arg4.R;
			_local8 = _arg3.m_localPosition;
			var _local9:Number = (_arg4.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y)));
			var _local10:Number = (_arg4.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y)));
			_local7 = _arg6.R;
			_local8 = _arg5.m_localPosition;
			var _local11:Number = (_arg6.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y)));
			var _local12:Number = (_arg6.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y)));
			var _local13:Number = (_local11 - _local9);
			var _local14:Number = (_local12 - _local10);
			var _local15:Number = ((_local13 * _local13) + (_local14 * _local14));
			var _local16:Number = (_arg3.m_radius - b2Settings.b2_toiSlop);
			var _local17:Number = (_arg5.m_radius - b2Settings.b2_toiSlop);
			var _local18:Number = (_local16 + _local17);
			if (_local15 > (_local18 * _local18)){
				_local19 = Math.sqrt(((_local13 * _local13) + (_local14 * _local14)));
				_local13 = (_local13 / _local19);
				_local14 = (_local14 / _local19);
				_local20 = (_local19 - _local18);
				_arg1.x = (_local9 + (_local16 * _local13));
				_arg1.y = (_local10 + (_local16 * _local14));
				_arg2.x = (_local11 - (_local17 * _local13));
				_arg2.y = (_local12 - (_local17 * _local14));
				return (_local20);
			};
			if (_local15 > (Number.MIN_VALUE * Number.MIN_VALUE)){
				_local19 = Math.sqrt(((_local13 * _local13) + (_local14 * _local14)));
				_local13 = (_local13 / _local19);
				_local14 = (_local14 / _local19);
				_arg1.x = (_local9 + (_local16 * _local13));
				_arg1.y = (_local10 + (_local16 * _local14));
				_arg2.x = _arg1.x;
				_arg2.y = _arg1.y;
				return (0);
			};
			_arg1.x = _local9;
			_arg1.y = _local10;
			_arg2.x = _arg1.x;
			_arg2.y = _arg1.y;
			return (0);
		}
		public static function ProcessThree(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:Array, _arg4:Array, _arg5:Array):int{
			var _local6:b2Vec2;
			var _local7:b2Vec2;
			var _local8:b2Vec2;
			var _local9:b2Vec2;
			var _local10:b2Vec2;
			var _local11:b2Vec2;
			var _local12:b2Vec2;
			var _local13:b2Vec2;
			var _local35:Number;
			_local6 = _arg5[0];
			_local7 = _arg5[1];
			_local8 = _arg5[2];
			_local9 = _arg3[0];
			_local10 = _arg3[1];
			_local11 = _arg3[2];
			_local12 = _arg4[0];
			_local13 = _arg4[1];
			var _local14:b2Vec2 = _arg4[2];
			var _local15:Number = _local6.x;
			var _local16:Number = _local6.y;
			var _local17:Number = _local7.x;
			var _local18:Number = _local7.y;
			var _local19:Number = _local8.x;
			var _local20:Number = _local8.y;
			var _local21:Number = (_local17 - _local15);
			var _local22:Number = (_local18 - _local16);
			var _local23:Number = (_local19 - _local15);
			var _local24:Number = (_local20 - _local16);
			var _local25:Number = (_local19 - _local17);
			var _local26:Number = (_local20 - _local18);
			var _local27:Number = -(((_local15 * _local21) + (_local16 * _local22)));
			var _local28:Number = ((_local17 * _local21) + (_local18 * _local22));
			var _local29:Number = -(((_local15 * _local23) + (_local16 * _local24)));
			var _local30:Number = ((_local19 * _local23) + (_local20 * _local24));
			var _local31:Number = -(((_local17 * _local25) + (_local18 * _local26)));
			var _local32:Number = ((_local19 * _local25) + (_local20 * _local26));
			if ((((_local30 <= 0)) && ((_local32 <= 0)))){
				_arg1.SetV(_local11);
				_arg2.SetV(_local14);
				_local9.SetV(_local11);
				_local12.SetV(_local14);
				_local6.SetV(_local8);
				return (1);
			};
			var _local33:Number = ((_local21 * _local24) - (_local22 * _local23));
			var _local34:Number = (_local33 * ((_local15 * _local18) - (_local16 * _local17)));
			var _local36:Number = (_local33 * ((_local17 * _local20) - (_local18 * _local19)));
			if ((((((((_local36 <= 0)) && ((_local31 >= 0)))) && ((_local32 >= 0)))) && (((_local31 + _local32) > 0)))){
				_local35 = (_local31 / (_local31 + _local32));
				_arg1.x = (_local10.x + (_local35 * (_local11.x - _local10.x)));
				_arg1.y = (_local10.y + (_local35 * (_local11.y - _local10.y)));
				_arg2.x = (_local13.x + (_local35 * (_local14.x - _local13.x)));
				_arg2.y = (_local13.y + (_local35 * (_local14.y - _local13.y)));
				_local9.SetV(_local11);
				_local12.SetV(_local14);
				_local6.SetV(_local8);
				return (2);
			};
			var _local37:Number = (_local33 * ((_local19 * _local16) - (_local20 * _local15)));
			if ((((((((_local37 <= 0)) && ((_local29 >= 0)))) && ((_local30 >= 0)))) && (((_local29 + _local30) > 0)))){
				_local35 = (_local29 / (_local29 + _local30));
				_arg1.x = (_local9.x + (_local35 * (_local11.x - _local9.x)));
				_arg1.y = (_local9.y + (_local35 * (_local11.y - _local9.y)));
				_arg2.x = (_local12.x + (_local35 * (_local14.x - _local12.x)));
				_arg2.y = (_local12.y + (_local35 * (_local14.y - _local12.y)));
				_local10.SetV(_local11);
				_local13.SetV(_local14);
				_local7.SetV(_local8);
				return (2);
			};
			var _local38:Number = ((_local36 + _local37) + _local34);
			_local38 = (1 / _local38);
			var _local39:Number = (_local36 * _local38);
			var _local40:Number = (_local37 * _local38);
			var _local41:Number = ((1 - _local39) - _local40);
			_arg1.x = (((_local39 * _local9.x) + (_local40 * _local10.x)) + (_local41 * _local11.x));
			_arg1.y = (((_local39 * _local9.y) + (_local40 * _local10.y)) + (_local41 * _local11.y));
			_arg2.x = (((_local39 * _local12.x) + (_local40 * _local13.x)) + (_local41 * _local14.x));
			_arg2.y = (((_local39 * _local12.y) + (_local40 * _local13.y)) + (_local41 * _local14.y));
			return (3);
		}
		public static function DistancePC(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2PolygonShape, _arg4:b2XForm, _arg5:b2CircleShape, _arg6:b2XForm):Number{
			var _local7:b2Mat22;
			var _local8:b2Vec2;
			var _local12:Number;
			var _local13:Number;
			var _local14:Number;
			var _local9:b2Point = gPoint;
			_local8 = _arg5.m_localPosition;
			_local7 = _arg6.R;
			_local9.p.x = (_arg6.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y)));
			_local9.p.y = (_arg6.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y)));
			var _local10:Number = DistanceGeneric(_arg1, _arg2, _arg3, _arg4, _local9, b2Math.b2XForm_identity);
			var _local11:Number = (_arg5.m_radius - b2Settings.b2_toiSlop);
			if (_local10 > _local11){
				_local10 = (_local10 - _local11);
				_local12 = (_arg2.x - _arg1.x);
				_local13 = (_arg2.y - _arg1.y);
				_local14 = Math.sqrt(((_local12 * _local12) + (_local13 * _local13)));
				_local12 = (_local12 / _local14);
				_local13 = (_local13 / _local14);
				_arg2.x = (_arg2.x - (_local11 * _local12));
				_arg2.y = (_arg2.y - (_local11 * _local13));
			} else {
				_local10 = 0;
				_arg2.x = _arg1.x;
				_arg2.y = _arg1.y;
			};
			return (_local10);
		}
		public static function Distance(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Shape, _arg4:b2XForm, _arg5:b2Shape, _arg6:b2XForm):Number{
			var _local7:int = _arg3.m_type;
			var _local8:int = _arg5.m_type;
			if ((((_local7 == b2Shape.e_circleShape)) && ((_local8 == b2Shape.e_circleShape)))){
				return (DistanceCC(_arg1, _arg2, (_arg3 as b2CircleShape), _arg4, (_arg5 as b2CircleShape), _arg6));
			};
			if ((((_local7 == b2Shape.e_polygonShape)) && ((_local8 == b2Shape.e_circleShape)))){
				return (DistancePC(_arg1, _arg2, (_arg3 as b2PolygonShape), _arg4, (_arg5 as b2CircleShape), _arg6));
			};
			if ((((_local7 == b2Shape.e_circleShape)) && ((_local8 == b2Shape.e_polygonShape)))){
				return (DistancePC(_arg2, _arg1, (_arg5 as b2PolygonShape), _arg6, (_arg3 as b2CircleShape), _arg4));
			};
			if ((((_local7 == b2Shape.e_polygonShape)) && ((_local8 == b2Shape.e_polygonShape)))){
				return (DistanceGeneric(_arg1, _arg2, (_arg3 as b2PolygonShape), _arg4, (_arg5 as b2PolygonShape), _arg6));
			};
			return (0);
		}
		public static function ProcessTwo(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:Array, _arg4:Array, _arg5:Array):int{
			var _local9:b2Vec2;
			var _local10:b2Vec2;
			var _local11:b2Vec2;
			var _local17:Number;
			var _local6:b2Vec2 = _arg5[0];
			var _local7:b2Vec2 = _arg5[1];
			var _local8:b2Vec2 = _arg3[0];
			_local9 = _arg3[1];
			_local10 = _arg4[0];
			_local11 = _arg4[1];
			var _local12:Number = -(_local7.x);
			var _local13:Number = -(_local7.y);
			var _local14:Number = (_local6.x - _local7.x);
			var _local15:Number = (_local6.y - _local7.y);
			var _local16:Number = Math.sqrt(((_local14 * _local14) + (_local15 * _local15)));
			_local14 = (_local14 / _local16);
			_local15 = (_local15 / _local16);
			_local17 = ((_local12 * _local14) + (_local13 * _local15));
			if ((((_local17 <= 0)) || ((_local16 < Number.MIN_VALUE)))){
				_arg1.SetV(_local9);
				_arg2.SetV(_local11);
				_local8.SetV(_local9);
				_local10.SetV(_local11);
				_local6.SetV(_local7);
				return (1);
			};
			_local17 = (_local17 / _local16);
			_arg1.x = (_local9.x + (_local17 * (_local8.x - _local9.x)));
			_arg1.y = (_local9.y + (_local17 * (_local8.y - _local9.y)));
			_arg2.x = (_local11.x + (_local17 * (_local10.x - _local11.x)));
			_arg2.y = (_local11.y + (_local17 * (_local10.y - _local11.y)));
			return (2);
		}

	}
}//package Box2D.Collision 

****************

//b2Manifold (Box2D.Collision.b2Manifold)
package Box2D.Collision {
	import Box2D.Common.Math.*;
	import Box2D.Common.*;

	public class b2Manifold {

		public var pointCount:int;// = 0
		public var normal:b2Vec2;
		public var points:Array;

		public function b2Manifold(){
			points = new Array(b2Settings.b2_maxManifoldPoints);
			var _local1:int;
			while (_local1 < b2Settings.b2_maxManifoldPoints) {
				points[_local1] = new b2ManifoldPoint();
				_local1++;
			};
			normal = new b2Vec2();
		}
		public function Set(_arg1:b2Manifold):void{
			pointCount = _arg1.pointCount;
			var _local2:int;
			while (_local2 < b2Settings.b2_maxManifoldPoints) {
				(points[_local2] as b2ManifoldPoint).Set(_arg1.points[_local2]);
				_local2++;
			};
			normal.SetV(_arg1.normal);
		}
		public function Reset():void{
			var _local1:int;
			while (_local1 < b2Settings.b2_maxManifoldPoints) {
				(points[_local1] as b2ManifoldPoint).Reset();
				_local1++;
			};
			normal.SetZero();
			pointCount = 0;
		}

	}
}//package Box2D.Collision 

****************

//b2ManifoldPoint (Box2D.Collision.b2ManifoldPoint)
package Box2D.Collision {
	import Box2D.Common.Math.*;

	public class b2ManifoldPoint {

		public var separation:Number;
		public var localPoint2:b2Vec2;
		public var normalImpulse:Number;
		public var tangentImpulse:Number;
		public var localPoint1:b2Vec2;
		public var id:b2ContactID;

		public function b2ManifoldPoint(){
			localPoint1 = new b2Vec2();
			localPoint2 = new b2Vec2();
			id = new b2ContactID();
			super();
		}
		public function Set(_arg1:b2ManifoldPoint):void{
			localPoint1.SetV(_arg1.localPoint1);
			localPoint2.SetV(_arg1.localPoint2);
			separation = _arg1.separation;
			normalImpulse = _arg1.normalImpulse;
			tangentImpulse = _arg1.tangentImpulse;
			id.key = _arg1.id.key;
		}
		public function Reset():void{
			localPoint1.SetZero();
			localPoint2.SetZero();
			separation = 0;
			normalImpulse = 0;
			tangentImpulse = 0;
			id.key = 0;
		}

	}
}//package Box2D.Collision 

****************

//b2OBB (Box2D.Collision.b2OBB)
package Box2D.Collision {
	import Box2D.Common.Math.*;

	public class b2OBB {

		public var R:b2Mat22;
		public var center:b2Vec2;
		public var extents:b2Vec2;

		public function b2OBB(){
			R = new b2Mat22();
			center = new b2Vec2();
			extents = new b2Vec2();
			super();
		}
	}
}//package Box2D.Collision 

****************

//b2Pair (Box2D.Collision.b2Pair)
package Box2D.Collision {
	import Box2D.Common.*;

	public class b2Pair {

		public var proxyId1:uint;
		public var userData;// = null
		public var proxyId2:uint;
		public var status:uint;
		public var next:uint;

		public static var e_pairFinal:uint = 4;
		public static var b2_tableMask:int = (b2_tableCapacity - 1);
		public static var e_pairRemoved:uint = 2;
		public static var b2_nullPair:uint = b2Settings.USHRT_MAX;
		public static var e_pairBuffered:uint = 1;
		public static var b2_nullProxy:uint = b2Settings.USHRT_MAX;
		public static var b2_tableCapacity:int = b2Settings.b2_maxPairs;

		public function SetBuffered():void{
			status = (status | e_pairBuffered);
		}
		public function IsBuffered():Boolean{
			return (((status & e_pairBuffered) == e_pairBuffered));
		}
		public function IsFinal():Boolean{
			return (((status & e_pairFinal) == e_pairFinal));
		}
		public function ClearRemoved():void{
			status = (status & ~(e_pairRemoved));
		}
		public function SetFinal():void{
			status = (status | e_pairFinal);
		}
		public function IsRemoved():Boolean{
			return (((status & e_pairRemoved) == e_pairRemoved));
		}
		public function ClearBuffered():void{
			status = (status & ~(e_pairBuffered));
		}
		public function SetRemoved():void{
			status = (status | e_pairRemoved);
		}

	}
}//package Box2D.Collision 

****************

//b2PairCallback (Box2D.Collision.b2PairCallback)
package Box2D.Collision {

	public class b2PairCallback {

		public function PairRemoved(_arg1, _arg2, _arg3):void{
		}
		public function PairAdded(_arg1, _arg2){
			return (null);
		}

	}
}//package Box2D.Collision 

****************

//b2PairManager (Box2D.Collision.b2PairManager)
package Box2D.Collision {
	import Box2D.Common.Math.*;
	import Box2D.Common.*;

	public class b2PairManager {

		public var m_pairCount:int;
		public var m_pairBuffer:Array;
		public var m_hashTable:Array;
		public var m_callback:b2PairCallback;
		public var m_pairs:Array;
		public var m_pairBufferCount:int;
		public var m_broadPhase:b2BroadPhase;
		public var m_freePair:uint;

		public function b2PairManager(){
			var _local1:uint;
			super();
			m_hashTable = new Array(b2Pair.b2_tableCapacity);
			_local1 = 0;
			while (_local1 < b2Pair.b2_tableCapacity) {
				m_hashTable[_local1] = b2Pair.b2_nullPair;
				_local1++;
			};
			m_pairs = new Array(b2Settings.b2_maxPairs);
			_local1 = 0;
			while (_local1 < b2Settings.b2_maxPairs) {
				m_pairs[_local1] = new b2Pair();
				_local1++;
			};
			m_pairBuffer = new Array(b2Settings.b2_maxPairs);
			_local1 = 0;
			while (_local1 < b2Settings.b2_maxPairs) {
				m_pairBuffer[_local1] = new b2BufferedPair();
				_local1++;
			};
			_local1 = 0;
			while (_local1 < b2Settings.b2_maxPairs) {
				m_pairs[_local1].proxyId1 = b2Pair.b2_nullProxy;
				m_pairs[_local1].proxyId2 = b2Pair.b2_nullProxy;
				m_pairs[_local1].userData = null;
				m_pairs[_local1].status = 0;
				m_pairs[_local1].next = (_local1 + 1);
				_local1++;
			};
			m_pairs[int((b2Settings.b2_maxPairs - 1))].next = b2Pair.b2_nullPair;
			m_pairCount = 0;
			m_pairBufferCount = 0;
		}
		private function FindHash(_arg1:uint, _arg2:uint, _arg3:uint):b2Pair{
			var _local4:b2Pair;
			var _local5:uint = m_hashTable[_arg3];
			_local4 = m_pairs[_local5];
			while (((!((_local5 == b2Pair.b2_nullPair))) && ((Equals(_local4, _arg1, _arg2) == false)))) {
				_local5 = _local4.next;
				_local4 = m_pairs[_local5];
			};
			if (_local5 == b2Pair.b2_nullPair){
				return (null);
			};
			return (_local4);
		}
		private function Find(_arg1:uint, _arg2:uint):b2Pair{
			var _local4:uint;
			if (_arg1 > _arg2){
				_local4 = _arg1;
				_arg1 = _arg2;
				_arg2 = _local4;
			};
			var _local3:uint = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask);
			return (FindHash(_arg1, _arg2, _local3));
		}
		private function ValidateBuffer():void{
		}
		public function Commit():void{
			var _local1:b2BufferedPair;
			var _local2:int;
			var _local5:b2Pair;
			var _local6:b2Proxy;
			var _local7:b2Proxy;
			var _local3:int;
			var _local4:Array = m_broadPhase.m_proxyPool;
			_local2 = 0;
			while (_local2 < m_pairBufferCount) {
				_local1 = m_pairBuffer[_local2];
				_local5 = Find(_local1.proxyId1, _local1.proxyId2);
				_local5.ClearBuffered();
				_local6 = _local4[_local5.proxyId1];
				_local7 = _local4[_local5.proxyId2];
				if (_local5.IsRemoved()){
					if (_local5.IsFinal() == true){
						m_callback.PairRemoved(_local6.userData, _local7.userData, _local5.userData);
					};
					_local1 = m_pairBuffer[_local3];
					_local1.proxyId1 = _local5.proxyId1;
					_local1.proxyId2 = _local5.proxyId2;
					_local3++;
				} else {
					if (_local5.IsFinal() == false){
						_local5.userData = m_callback.PairAdded(_local6.userData, _local7.userData);
						_local5.SetFinal();
					};
				};
				_local2++;
			};
			_local2 = 0;
			while (_local2 < _local3) {
				_local1 = m_pairBuffer[_local2];
				RemovePair(_local1.proxyId1, _local1.proxyId2);
				_local2++;
			};
			m_pairBufferCount = 0;
			if (b2BroadPhase.s_validate){
				ValidateTable();
			};
		}
		public function RemoveBufferedPair(_arg1:int, _arg2:int):void{
			var _local3:b2BufferedPair;
			var _local4:b2Pair = Find(_arg1, _arg2);
			if (_local4 == null){
				return;
			};
			if (_local4.IsBuffered() == false){
				_local4.SetBuffered();
				_local3 = m_pairBuffer[m_pairBufferCount];
				_local3.proxyId1 = _local4.proxyId1;
				_local3.proxyId2 = _local4.proxyId2;
				m_pairBufferCount++;
			};
			_local4.SetRemoved();
			if (b2BroadPhase.s_validate){
				ValidateBuffer();
			};
		}
		private function RemovePair(_arg1:uint, _arg2:uint){
			var _local3:b2Pair;
			var _local7:uint;
			var _local8:uint;
			var _local9:*;
			if (_arg1 > _arg2){
				_local7 = _arg1;
				_arg1 = _arg2;
				_arg2 = _local7;
			};
			var _local4:uint = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask);
			var _local5:uint = m_hashTable[_local4];
			var _local6:b2Pair;
			while (_local5 != b2Pair.b2_nullPair) {
				if (Equals(m_pairs[_local5], _arg1, _arg2)){
					_local8 = _local5;
					_local3 = m_pairs[_local5];
					if (_local6){
						_local6.next = _local3.next;
					} else {
						m_hashTable[_local4] = _local3.next;
					};
					_local3 = m_pairs[_local8];
					_local9 = _local3.userData;
					_local3.next = m_freePair;
					_local3.proxyId1 = b2Pair.b2_nullProxy;
					_local3.proxyId2 = b2Pair.b2_nullProxy;
					_local3.userData = null;
					_local3.status = 0;
					m_freePair = _local8;
					m_pairCount--;
					return (_local9);
				} else {
					_local6 = m_pairs[_local5];
					_local5 = _local6.next;
				};
			};
			return (null);
		}
		public function Initialize(_arg1:b2BroadPhase, _arg2:b2PairCallback):void{
			m_broadPhase = _arg1;
			m_callback = _arg2;
		}
		public function AddBufferedPair(_arg1:int, _arg2:int):void{
			var _local3:b2BufferedPair;
			var _local4:b2Pair = AddPair(_arg1, _arg2);
			if (_local4.IsBuffered() == false){
				_local4.SetBuffered();
				_local3 = m_pairBuffer[m_pairBufferCount];
				_local3.proxyId1 = _local4.proxyId1;
				_local3.proxyId2 = _local4.proxyId2;
				m_pairBufferCount++;
			};
			_local4.ClearRemoved();
			if (b2BroadPhase.s_validate){
				ValidateBuffer();
			};
		}
		private function AddPair(_arg1:uint, _arg2:uint):b2Pair{
			var _local6:uint;
			if (_arg1 > _arg2){
				_local6 = _arg1;
				_arg1 = _arg2;
				_arg2 = _local6;
			};
			var _local3:uint = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask);
			var _local4 = FindHash(_arg1, _arg2, _local3);
			if (_local4 != null){
				return (_local4);
			};
			var _local5:uint = m_freePair;
			_local4 = m_pairs[_local5];
			m_freePair = _local4.next;
			_local4.proxyId1 = _arg1;
			_local4.proxyId2 = _arg2;
			_local4.status = 0;
			_local4.userData = null;
			_local4.next = m_hashTable[_local3];
			m_hashTable[_local3] = _local5;
			m_pairCount++;
			return (_local4);
		}
		private function ValidateTable():void{
		}

		public static function EqualsPair(_arg1:b2BufferedPair, _arg2:b2BufferedPair):Boolean{
			return ((((_arg1.proxyId1 == _arg2.proxyId1)) && ((_arg1.proxyId2 == _arg2.proxyId2))));
		}
		public static function Hash(_arg1:uint, _arg2:uint):uint{
			var _local3:uint = (((_arg2 << 16) & 4294901760) | _arg1);
			_local3 = (~(_local3) + ((_local3 << 15) & 4294934528));
			_local3 = (_local3 ^ ((_local3 >> 12) & 1048575));
			_local3 = (_local3 + ((_local3 << 2) & 4294967292));
			_local3 = (_local3 ^ ((_local3 >> 4) & 268435455));
			_local3 = (_local3 * 2057);
			_local3 = (_local3 ^ ((_local3 >> 16) & 0xFFFF));
			return (_local3);
		}
		public static function Equals(_arg1:b2Pair, _arg2:uint, _arg3:uint):Boolean{
			return ((((_arg1.proxyId1 == _arg2)) && ((_arg1.proxyId2 == _arg3))));
		}

	}
}//package Box2D.Collision 

****************

//b2Point (Box2D.Collision.b2Point)
package Box2D.Collision {
	import Box2D.Common.Math.*;

	public class b2Point {

		public var p:b2Vec2;

		public function b2Point(){
			p = new b2Vec2();
			super();
		}
		public function GetFirstVertex(_arg1:b2XForm):b2Vec2{
			return (p);
		}
		public function Support(_arg1:b2XForm, _arg2:Number, _arg3:Number):b2Vec2{
			return (p);
		}

	}
}//package Box2D.Collision 

****************

//b2Proxy (Box2D.Collision.b2Proxy)
package Box2D.Collision {

	public class b2Proxy {

		public var overlapCount:uint;
		public var userData;// = null
		public var lowerBounds:Array;
		public var upperBounds:Array;
		public var timeStamp:uint;

		public function b2Proxy(){
			lowerBounds = [uint(0), uint(0)];
			upperBounds = [uint(0), uint(0)];
			super();
		}
		public function GetNext():uint{
			return (lowerBounds[0]);
		}
		public function IsValid():Boolean{
			return (!((overlapCount == b2BroadPhase.b2_invalid)));
		}
		public function SetNext(_arg1:uint):void{
			lowerBounds[0] = (_arg1 & 0xFFFF);
		}

	}
}//package Box2D.Collision 

****************

//b2Segment (Box2D.Collision.b2Segment)
package Box2D.Collision {
	import Box2D.Common.Math.*;
	import Box2D.Common.*;

	public class b2Segment {

		public var p1:b2Vec2;
		public var p2:b2Vec2;

		public function b2Segment(){
			p1 = new b2Vec2();
			p2 = new b2Vec2();
			super();
		}
		public function TestSegment(_arg1:Array, _arg2:b2Vec2, _arg3:b2Segment, _arg4:Number):Boolean{
			var _local14:Number;
			var _local15:Number;
			var _local16:Number;
			var _local17:Number;
			var _local18:Number;
			var _local5:b2Vec2 = _arg3.p1;
			var _local6:Number = (_arg3.p2.x - _local5.x);
			var _local7:Number = (_arg3.p2.y - _local5.y);
			var _local8:Number = (p2.x - p1.x);
			var _local9:Number = (p2.y - p1.y);
			var _local10:Number = _local9;
			var _local11:Number = -(_local8);
			var _local12:Number = (100 * Number.MIN_VALUE);
			var _local13:Number = -(((_local6 * _local10) + (_local7 * _local11)));
			if (_local13 > _local12){
				_local14 = (_local5.x - p1.x);
				_local15 = (_local5.y - p1.y);
				_local16 = ((_local14 * _local10) + (_local15 * _local11));
				if ((((0 <= _local16)) && ((_local16 <= (_arg4 * _local13))))){
					_local17 = ((-(_local7) * _local15) + (_local7 * _local14));
					if (((((-(_local12) * _local13) <= _local17)) && ((_local17 <= (_local13 * (1 + _local12)))))){
						_local16 = (_local16 / _local13);
						_local18 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11)));
						_local10 = (_local10 / _local18);
						_local11 = (_local11 / _local18);
						_arg1[0] = _local16;
						_arg2.Set(_local10, _local11);
						return (true);
					};
				};
			};
			return (false);
		}

	}
}//package Box2D.Collision 

****************

//b2TimeOfImpact (Box2D.Collision.b2TimeOfImpact)
package Box2D.Collision {
	import Box2D.Collision.Shapes.*;
	import Box2D.Common.Math.*;
	import Box2D.Common.*;

	public class b2TimeOfImpact {

		public static var s_xf1:b2XForm = new b2XForm();
		public static var s_xf2:b2XForm = new b2XForm();
		public static var s_p1:b2Vec2 = new b2Vec2();
		public static var s_p2:b2Vec2 = new b2Vec2();

		public static function TimeOfImpact(_arg1:b2Shape, _arg2:b2Sweep, _arg3:b2Shape, _arg4:b2Sweep):Number{
			var _local5:Number;
			var _local6:Number;
			var _local25:Number;
			var _local26:b2XForm;
			var _local27:b2XForm;
			var _local28:Number;
			var _local29:Number;
			var _local30:Number;
			var _local31:Number;
			var _local7:Number = _arg1.m_sweepRadius;
			var _local8:Number = _arg3.m_sweepRadius;
			var _local9:Number = _arg2.t0;
			var _local10:Number = (_arg2.c.x - _arg2.c0.x);
			var _local11:Number = (_arg2.c.y - _arg2.c0.y);
			var _local12:Number = (_arg4.c.x - _arg4.c0.x);
			var _local13:Number = (_arg4.c.y - _arg4.c0.y);
			var _local14:Number = (_arg2.a - _arg2.a0);
			var _local15:Number = (_arg4.a - _arg4.a0);
			var _local16:Number = 0;
			var _local17:b2Vec2 = s_p1;
			var _local18:b2Vec2 = s_p2;
			var _local19 = 20;
			var _local20:int;
			var _local21:Number = 0;
			var _local22:Number = 0;
			var _local23:Number = 0;
			var _local24:Number = 0;
			while (true) {
				_local25 = (((1 - _local16) * _local9) + _local16);
				_local26 = s_xf1;
				_local27 = s_xf2;
				_arg2.GetXForm(_local26, _local25);
				_arg4.GetXForm(_local27, _local25);
				_local23 = b2Distance.Distance(_local17, _local18, _arg1, _local26, _arg3, _local27);
				if (_local20 == 0){
					if (_local23 > (2 * b2Settings.b2_toiSlop)){
						_local24 = (1.5 * b2Settings.b2_toiSlop);
					} else {
						_local5 = (0.05 * b2Settings.b2_toiSlop);
						_local6 = (_local23 - (0.5 * b2Settings.b2_toiSlop));
						_local24 = ((_local5 > _local6)) ? _local5 : _local6;
					};
				};
				if (((((_local23 - _local24) < (0.05 * b2Settings.b2_toiSlop))) || ((_local20 == _local19)))){
					break;
				};
				_local21 = (_local18.x - _local17.x);
				_local22 = (_local18.y - _local17.y);
				_local28 = Math.sqrt(((_local21 * _local21) + (_local22 * _local22)));
				_local21 = (_local21 / _local28);
				_local22 = (_local22 / _local28);
				_local29 = ((((_local21 * (_local10 - _local12)) + (_local22 * (_local11 - _local13))) + (((_local14 < 0)) ? -(_local14) : _local14 * _local7)) + (((_local15 < 0)) ? -(_local15) : _local15 * _local8));
				if (_local29 == 0){
					_local16 = 1;
					break;
				};
				_local30 = ((_local23 - _local24) / _local29);
				_local31 = (_local16 + _local30);
				if ((((_local31 < 0)) || ((1 < _local31)))){
					_local16 = 1;
					break;
				};
				if (_local31 < ((1 + (100 * Number.MIN_VALUE)) * _local16)){
					break;
				};
				_local16 = _local31;
				_local20++;
			};
			return (_local16);
		}

	}
}//package Box2D.Collision 

****************

//ClipVertex (Box2D.Collision.ClipVertex)
package Box2D.Collision {
	import Box2D.Common.Math.*;

	public class ClipVertex {

		public var id:b2ContactID;
		public var v:b2Vec2;

		public function ClipVertex(){
			v = new b2Vec2();
			id = new b2ContactID();
			super();
		}
	}
}//package Box2D.Collision 

****************

//Features (Box2D.Collision.Features)
package Box2D.Collision {

	public class Features {

		public var _referenceEdge:int;
		public var _incidentEdge:int;
		public var _flip:int;
		public var _incidentVertex:int;
		public var _m_id:b2ContactID;

		public function get referenceEdge():int{
			return (_referenceEdge);
		}
		public function set incidentVertex(_arg1:int):void{
			_incidentVertex = _arg1;
			_m_id._key = ((_m_id._key & 4278255615) | ((_incidentVertex << 16) & 0xFF0000));
		}
		public function get flip():int{
			return (_flip);
		}
		public function get incidentEdge():int{
			return (_incidentEdge);
		}
		public function set referenceEdge(_arg1:int):void{
			_referenceEdge = _arg1;
			_m_id._key = ((_m_id._key & 4294967040) | (_referenceEdge & 0xFF));
		}
		public function get incidentVertex():int{
			return (_incidentVertex);
		}
		public function set flip(_arg1:int):void{
			_flip = _arg1;
			_m_id._key = ((_m_id._key & 0xFFFFFF) | ((_flip << 24) & 4278190080));
		}
		public function set incidentEdge(_arg1:int):void{
			_incidentEdge = _arg1;
			_m_id._key = ((_m_id._key & 4294902015) | ((_incidentEdge << 8) & 0xFF00));
		}

	}
}//package Box2D.Collision 

****************

//b2Mat22 (Box2D.Common.Math.b2Mat22)
package Box2D.Common.Math {

	public class b2Mat22 {

		public var col1:b2Vec2;
		public var col2:b2Vec2;

		public function b2Mat22(_arg1:Number=0, _arg2:b2Vec2=null, _arg3:b2Vec2=null){
			var _local4:Number;
			var _local5:Number;
			col1 = new b2Vec2();
			col2 = new b2Vec2();
			super();
			if (((!((_arg2 == null))) && (!((_arg3 == null))))){
				col1.SetV(_arg2);
				col2.SetV(_arg3);
			} else {
				_local4 = Math.cos(_arg1);
				_local5 = Math.sin(_arg1);
				col1.x = _local4;
				col2.x = -(_local5);
				col1.y = _local5;
				col2.y = _local4;
			};
		}
		public function SetIdentity():void{
			col1.x = 1;
			col2.x = 0;
			col1.y = 0;
			col2.y = 1;
		}
		public function SetVV(_arg1:b2Vec2, _arg2:b2Vec2):void{
			col1.SetV(_arg1);
			col2.SetV(_arg2);
		}
		public function Set(_arg1:Number):void{
			var _local2:Number;
			_local2 = Math.cos(_arg1);
			var _local3:Number = Math.sin(_arg1);
			col1.x = _local2;
			col2.x = -(_local3);
			col1.y = _local3;
			col2.y = _local2;
		}
		public function SetZero():void{
			col1.x = 0;
			col2.x = 0;
			col1.y = 0;
			col2.y = 0;
		}
		public function SetM(_arg1:b2Mat22):void{
			col1.SetV(_arg1.col1);
			col2.SetV(_arg1.col2);
		}
		public function AddM(_arg1:b2Mat22):void{
			col1.x = (col1.x + _arg1.col1.x);
			col1.y = (col1.y + _arg1.col1.y);
			col2.x = (col2.x + _arg1.col2.x);
			col2.y = (col2.y + _arg1.col2.y);
		}
		public function Abs():void{
			col1.Abs();
			col2.Abs();
		}
		public function Copy():b2Mat22{
			return (new b2Mat22(0, col1, col2));
		}
		public function Invert(_arg1:b2Mat22):b2Mat22{
			var _local2:Number;
			var _local4:Number;
			var _local6:Number;
			_local2 = col1.x;
			var _local3:Number = col2.x;
			_local4 = col1.y;
			var _local5:Number = col2.y;
			_local6 = ((_local2 * _local5) - (_local3 * _local4));
			_local6 = (1 / _local6);
			_arg1.col1.x = (_local6 * _local5);
			_arg1.col2.x = (-(_local6) * _local3);
			_arg1.col1.y = (-(_local6) * _local4);
			_arg1.col2.y = (_local6 * _local2);
			return (_arg1);
		}
		public function GetAngle():Number{
			return (Math.atan2(col1.y, col1.x));
		}
		public function Solve(_arg1:b2Vec2, _arg2:Number, _arg3:Number):b2Vec2{
			var _local4:Number = col1.x;
			var _local5:Number = col2.x;
			var _local6:Number = col1.y;
			var _local7:Number = col2.y;
			var _local8:Number = ((_local4 * _local7) - (_local5 * _local6));
			_local8 = (1 / _local8);
			_arg1.x = (_local8 * ((_local7 * _arg2) - (_local5 * _arg3)));
			_arg1.y = (_local8 * ((_local4 * _arg3) - (_local6 * _arg2)));
			return (_arg1);
		}

	}
}//package Box2D.Common.Math 

****************

//b2Math (Box2D.Common.Math.b2Math)
package Box2D.Common.Math {

	public class b2Math {

		public static const b2Mat22_identity:b2Mat22 = new b2Mat22(0, new b2Vec2(1, 0), new b2Vec2(0, 1));
		public static const b2XForm_identity:b2XForm = new b2XForm(b2Vec2_zero, b2Mat22_identity);
		public static const b2Vec2_zero:b2Vec2 = new b2Vec2(0, 0);

		public static function b2CrossVF(_arg1:b2Vec2, _arg2:Number):b2Vec2{
			var _local3:b2Vec2 = new b2Vec2((_arg2 * _arg1.y), (-(_arg2) * _arg1.x));
			return (_local3);
		}
		public static function AddVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{
			var _local3:b2Vec2 = new b2Vec2((_arg1.x + _arg2.x), (_arg1.y + _arg2.y));
			return (_local3);
		}
		public static function b2IsValid(_arg1:Number):Boolean{
			return (isFinite(_arg1));
		}
		public static function b2MinV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{
			var _local3:b2Vec2 = new b2Vec2(b2Min(_arg1.x, _arg2.x), b2Min(_arg1.y, _arg2.y));
			return (_local3);
		}
		public static function b2MulX(_arg1:b2XForm, _arg2:b2Vec2):b2Vec2{
			var _local3:b2Vec2;
			_local3 = b2MulMV(_arg1.R, _arg2);
			_local3.x = (_local3.x + _arg1.position.x);
			_local3.y = (_local3.y + _arg1.position.y);
			return (_local3);
		}
		public static function b2DistanceSquared(_arg1:b2Vec2, _arg2:b2Vec2):Number{
			var _local3:Number = (_arg1.x - _arg2.x);
			var _local4:Number = (_arg1.y - _arg2.y);
			return (((_local3 * _local3) + (_local4 * _local4)));
		}
		public static function b2Swap(_arg1:Array, _arg2:Array):void{
			var _local3:* = _arg1[0];
			_arg1[0] = _arg2[0];
			_arg2[0] = _local3;
		}
		public static function b2AbsM(_arg1:b2Mat22):b2Mat22{
			var _local2:b2Mat22 = new b2Mat22(0, b2AbsV(_arg1.col1), b2AbsV(_arg1.col2));
			return (_local2);
		}
		public static function SubtractVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{
			var _local3:b2Vec2 = new b2Vec2((_arg1.x - _arg2.x), (_arg1.y - _arg2.y));
			return (_local3);
		}
		public static function b2MulXT(_arg1:b2XForm, _arg2:b2Vec2):b2Vec2{
			var _local3:b2Vec2;
			var _local4:Number;
			_local3 = SubtractVV(_arg2, _arg1.position);
			_local4 = ((_local3.x * _arg1.R.col1.x) + (_local3.y * _arg1.R.col1.y));
			_local3.y = ((_local3.x * _arg1.R.col2.x) + (_local3.y * _arg1.R.col2.y));
			_local3.x = _local4;
			return (_local3);
		}
		public static function b2Abs(_arg1:Number):Number{
			return (((_arg1 > 0)) ? _arg1 : -(_arg1));
		}
		public static function b2Clamp(_arg1:Number, _arg2:Number, _arg3:Number):Number{
			return (b2Max(_arg2, b2Min(_arg1, _arg3)));
		}
		public static function b2AbsV(_arg1:b2Vec2):b2Vec2{
			var _local2:b2Vec2 = new b2Vec2(b2Abs(_arg1.x), b2Abs(_arg1.y));
			return (_local2);
		}
		public static function MulFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{
			var _local3:b2Vec2 = new b2Vec2((_arg1 * _arg2.x), (_arg1 * _arg2.y));
			return (_local3);
		}
		public static function b2CrossVV(_arg1:b2Vec2, _arg2:b2Vec2):Number{
			return (((_arg1.x * _arg2.y) - (_arg1.y * _arg2.x)));
		}
		public static function b2Dot(_arg1:b2Vec2, _arg2:b2Vec2):Number{
			return (((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y)));
		}
		public static function b2CrossFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{
			var _local3:b2Vec2 = new b2Vec2((-(_arg1) * _arg2.y), (_arg1 * _arg2.x));
			return (_local3);
		}
		public static function AddMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{
			var _local3:b2Mat22 = new b2Mat22(0, AddVV(_arg1.col1, _arg2.col1), AddVV(_arg1.col2, _arg2.col2));
			return (_local3);
		}
		public static function b2Distance(_arg1:b2Vec2, _arg2:b2Vec2):Number{
			var _local3:Number = (_arg1.x - _arg2.x);
			var _local4:Number = (_arg1.y - _arg2.y);
			return (Math.sqrt(((_local3 * _local3) + (_local4 * _local4))));
		}
		public static function b2MulTMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{
			var _local3:b2Vec2 = new b2Vec2(b2Dot(_arg1.col1, _arg2.col1), b2Dot(_arg1.col2, _arg2.col1));
			var _local4:b2Vec2 = new b2Vec2(b2Dot(_arg1.col1, _arg2.col2), b2Dot(_arg1.col2, _arg2.col2));
			var _local5:b2Mat22 = new b2Mat22(0, _local3, _local4);
			return (_local5);
		}
		public static function b2MaxV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{
			var _local3:b2Vec2 = new b2Vec2(b2Max(_arg1.x, _arg2.x), b2Max(_arg1.y, _arg2.y));
			return (_local3);
		}
		public static function b2IsPowerOfTwo(_arg1:uint):Boolean{
			var _local2:Boolean = (((_arg1 > 0)) && (((_arg1 & (_arg1 - 1)) == 0)));
			return (_local2);
		}
		public static function b2ClampV(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Vec2):b2Vec2{
			return (b2MaxV(_arg2, b2MinV(_arg1, _arg3)));
		}
		public static function b2RandomRange(_arg1:Number, _arg2:Number):Number{
			var _local3:Number = Math.random();
			_local3 = (((_arg2 - _arg1) * _local3) + _arg1);
			return (_local3);
		}
		public static function b2MulTMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{
			var _local3:b2Vec2 = new b2Vec2(b2Dot(_arg2, _arg1.col1), b2Dot(_arg2, _arg1.col2));
			return (_local3);
		}
		public static function b2Min(_arg1:Number, _arg2:Number):Number{
			return (((_arg1 < _arg2)) ? _arg1 : _arg2);
		}
		public static function b2Random():Number{
			return (((Math.random() * 2) - 1));
		}
		public static function b2MulMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{
			var _local3:b2Mat22 = new b2Mat22(0, b2MulMV(_arg1, _arg2.col1), b2MulMV(_arg1, _arg2.col2));
			return (_local3);
		}
		public static function b2NextPowerOfTwo(_arg1:uint):uint{
			_arg1 = (_arg1 | ((_arg1 >> 1) & 2147483647));
			_arg1 = (_arg1 | ((_arg1 >> 2) & 1073741823));
			_arg1 = (_arg1 | ((_arg1 >> 4) & 268435455));
			_arg1 = (_arg1 | ((_arg1 >> 8) & 0xFFFFFF));
			_arg1 = (_arg1 | ((_arg1 >> 16) & 0xFFFF));
			return ((_arg1 + 1));
		}
		public static function b2Max(_arg1:Number, _arg2:Number):Number{
			return (((_arg1 > _arg2)) ? _arg1 : _arg2);
		}
		public static function b2MulMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{
			var _local3:b2Vec2 = new b2Vec2(((_arg1.col1.x * _arg2.x) + (_arg1.col2.x * _arg2.y)), ((_arg1.col1.y * _arg2.x) + (_arg1.col2.y * _arg2.y)));
			return (_local3);
		}

	}
}//package Box2D.Common.Math 

****************

//b2Sweep (Box2D.Common.Math.b2Sweep)
package Box2D.Common.Math {

	public class b2Sweep {

		public var localCenter:b2Vec2;
		public var a:Number;
		public var c:b2Vec2;
		public var a0:Number;
		public var c0:b2Vec2;
		public var t0:Number;

		public function b2Sweep(){
			localCenter = new b2Vec2();
			c0 = new b2Vec2();
			c = new b2Vec2();
			super();
		}
		public function Advance(_arg1:Number):void{
			var _local2:Number;
			if ((((t0 < _arg1)) && (((1 - t0) > Number.MIN_VALUE)))){
				_local2 = ((_arg1 - t0) / (1 - t0));
				c0.x = (((1 - _local2) * c0.x) + (_local2 * c.x));
				c0.y = (((1 - _local2) * c0.y) + (_local2 * c.y));
				a0 = (((1 - _local2) * a0) + (_local2 * a));
				t0 = _arg1;
			};
		}
		public function GetXForm(_arg1:b2XForm, _arg2:Number):void{
			var _local4:Number;
			var _local5:Number;
			if ((1 - t0) > Number.MIN_VALUE){
				_local4 = ((_arg2 - t0) / (1 - t0));
				_arg1.position.x = (((1 - _local4) * c0.x) + (_local4 * c.x));
				_arg1.position.y = (((1 - _local4) * c0.y) + (_local4 * c.y));
				_local5 = (((1 - _local4) * a0) + (_local4 * a));
				_arg1.R.Set(_local5);
			} else {
				_arg1.position.SetV(c);
				_arg1.R.Set(a);
			};
			var _local3:b2Mat22 = _arg1.R;
			_arg1.position.x = (_arg1.position.x - ((_local3.col1.x * localCenter.x) + (_local3.col2.x * localCenter.y)));
			_arg1.position.y = (_arg1.position.y - ((_local3.col1.y * localCenter.x) + (_local3.col2.y * localCenter.y)));
		}

	}
}//package Box2D.Common.Math 

****************

//b2Vec2 (Box2D.Common.Math.b2Vec2)
package Box2D.Common.Math {

	public class b2Vec2 {

		public var y:Number;
		public var x:Number;

		public function b2Vec2(_arg1:Number=0, _arg2:Number=0):void{
			x = _arg1;
			y = _arg2;
		}
		public function Add(_arg1:b2Vec2):void{
			x = (x + _arg1.x);
			y = (y + _arg1.y);
		}
		public function Set(_arg1:Number=0, _arg2:Number=0):void{
			x = _arg1;
			y = _arg2;
		}
		public function Multiply(_arg1:Number):void{
			x = (x * _arg1);
			y = (y * _arg1);
		}
		public function Length():Number{
			return (Math.sqrt(((x * x) + (y * y))));
		}
		public function LengthSquared():Number{
			return (((x * x) + (y * y)));
		}
		public function MulM(_arg1:b2Mat22):void{
			var _local2:Number = x;
			x = ((_arg1.col1.x * _local2) + (_arg1.col2.x * y));
			y = ((_arg1.col1.y * _local2) + (_arg1.col2.y * y));
		}
		public function SetZero():void{
			x = 0;
			y = 0;
		}
		public function MinV(_arg1:b2Vec2):void{
			x = ((x < _arg1.x)) ? x : _arg1.x;
			y = ((y < _arg1.y)) ? y : _arg1.y;
		}
		public function Normalize():Number{
			var _local1:Number = Math.sqrt(((x * x) + (y * y)));
			if (_local1 < Number.MIN_VALUE){
				return (0);
			};
			var _local2:Number = (1 / _local1);
			x = (x * _local2);
			y = (y * _local2);
			return (_local1);
		}
		public function CrossVF(_arg1:Number):void{
			var _local2:Number = x;
			x = (_arg1 * y);
			y = (-(_arg1) * _local2);
		}
		public function MaxV(_arg1:b2Vec2):void{
			x = ((x > _arg1.x)) ? x : _arg1.x;
			y = ((y > _arg1.y)) ? y : _arg1.y;
		}
		public function SetV(_arg1:b2Vec2):void{
			x = _arg1.x;
			y = _arg1.y;
		}
		public function Negative():b2Vec2{
			return (new b2Vec2(-(x), -(y)));
		}
		public function CrossFV(_arg1:Number):void{
			var _local2:Number = x;
			x = (-(_arg1) * y);
			y = (_arg1 * _local2);
		}
		public function Abs():void{
			if (x < 0){
				x = -(x);
			};
			if (y < 0){
				y = -(y);
			};
		}
		public function Subtract(_arg1:b2Vec2):void{
			x = (x - _arg1.x);
			y = (y - _arg1.y);
		}
		public function Copy():b2Vec2{
			return (new b2Vec2(x, y));
		}
		public function MulTM(_arg1:b2Mat22):void{
			var _local2:Number = b2Math.b2Dot(this, _arg1.col1);
			y = b2Math.b2Dot(this, _arg1.col2);
			x = _local2;
		}
		public function IsValid():Boolean{
			return (((b2Math.b2IsValid(x)) && (b2Math.b2IsValid(y))));
		}

		public static function Make(_arg1:Number, _arg2:Number):b2Vec2{
			return (new b2Vec2(_arg1, _arg2));
		}

	}
}//package Box2D.Common.Math 

****************

//b2XForm (Box2D.Common.Math.b2XForm)
package Box2D.Common.Math {

	public class b2XForm {

		public var position:b2Vec2;
		public var R:b2Mat22;

		public function b2XForm(_arg1:b2Vec2=null, _arg2:b2Mat22=null):void{
			position = new b2Vec2();
			R = new b2Mat22();
			super();
			if (_arg1){
				position.SetV(_arg1);
				R.SetM(_arg2);
			};
		}
		public function Initialize(_arg1:b2Vec2, _arg2:b2Mat22):void{
			position.SetV(_arg1);
			R.SetM(_arg2);
		}
		public function Set(_arg1:b2XForm):void{
			position.SetV(_arg1.position);
			R.SetM(_arg1.R);
		}
		public function SetIdentity():void{
			position.SetZero();
			R.SetIdentity();
		}

	}
}//package Box2D.Common.Math 

****************

//b2Color (Box2D.Common.b2Color)
package Box2D.Common {
	import Box2D.Common.Math.*;

	public class b2Color {

		private var _r:uint;// = 0
		private var _g:uint;// = 0
		private var _b:uint;// = 0

		public function b2Color(_arg1:Number, _arg2:Number, _arg3:Number){
			_r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1)));
			_g = uint((0xFF * b2Math.b2Clamp(_arg2, 0, 1)));
			_b = uint((0xFF * b2Math.b2Clamp(_arg3, 0, 1)));
		}
		public function Set(_arg1:Number, _arg2:Number, _arg3:Number):void{
			_r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1)));
			_g = uint((0xFF * b2Math.b2Clamp(_arg2, 0, 1)));
			_b = uint((0xFF * b2Math.b2Clamp(_arg3, 0, 1)));
		}
		public function set b(_arg1:Number):void{
			_b = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1)));
		}
		public function get color():uint{
			return (((_r | (_g << 8)) | (_b << 16)));
		}
		public function set r(_arg1:Number):void{
			_r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1)));
		}
		public function set g(_arg1:Number):void{
			_g = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1)));
		}

	}
}//package Box2D.Common 

****************

//b2Settings (Box2D.Common.b2Settings)
package Box2D.Common {
	import Box2D.Common.Math.*;

	public class b2Settings {

		public static const b2_angularSleepTolerance:Number = 0.0111111111111111;
		public static const b2_linearSleepTolerance:Number = 0.01;
		public static const b2_angularSlop:Number = 0.0349065850398866;
		public static const b2_linearSlop:Number = 0.005;
		public static const b2_pi:Number = 3.14159265358979;
		public static const b2_maxProxies:int = 0x0200;
		public static const b2_maxAngularVelocitySquared:Number = 62500;
		public static const b2_maxPolygonVertices:int = 8;
		public static const b2_velocityThreshold:Number = 1;
		public static const b2_contactBaumgarte:Number = 0.2;
		public static const b2_maxPairs:int = 4096;
		public static const b2_maxTOIContactsPerIsland:int = 32;
		public static const b2_timeToSleep:Number = 0.5;
		public static const b2_maxManifoldPoints:int = 2;
		public static const b2_maxAngularVelocity:Number = 250;
		public static const b2_maxAngularCorrection:Number = 0.139626340159546;
		public static const USHRT_MAX:int = 0xFFFF;
		public static const b2_maxLinearVelocity:Number = 200;
		public static const b2_maxLinearCorrection:Number = 0.2;
		public static const b2_toiSlop:Number = 0.04;
		public static const b2_maxLinearVelocitySquared:Number = 40000;

		public static function b2Assert(_arg1:Boolean):void{
			var _local2:b2Vec2;
			if (!_arg1){
				_local2.x++;
			};
		}

	}
}//package Box2D.Common 

****************

//b2CircleContact (Box2D.Dynamics.Contacts.b2CircleContact)
package Box2D.Dynamics.Contacts {
	import Box2D.Collision.*;
	import Box2D.Collision.Shapes.*;
	import Box2D.Dynamics.*;
	import Box2D.Common.Math.*;
	import Box2D.Common.*;

	public class b2CircleContact extends b2Contact {

		private var m_manifolds:Array;
		public var m_manifold:b2Manifold;
		private var m0:b2Manifold;

		private static const s_evalCP:b2ContactPoint = new b2ContactPoint();

		public function b2CircleContact(_arg1:b2Shape, _arg2:b2Shape){
			m_manifolds = [new b2Manifold()];
			m0 = new b2Manifold();
			super(_arg1, _arg2);
			m_manifold = m_manifolds[0];
			m_manifold.pointCount = 0;
			var _local3:b2ManifoldPoint = m_manifold.points[0];
			_local3.normalImpulse = 0;
			_local3.tangentImpulse = 0;
		}
		override public function Evaluate(_arg1:b2ContactListener):void{
			var _local2:b2Vec2;
			var _local3:b2Vec2;
			var _local4:b2ManifoldPoint;
			var _local8:b2ManifoldPoint;
			var _local5:b2Body = m_shape1.m_body;
			var _local6:b2Body = m_shape2.m_body;
			m0.Set(m_manifold);
			b2Collision.b2CollideCircles(m_manifold, (m_shape1 as b2CircleShape), _local5.m_xf, (m_shape2 as b2CircleShape), _local6.m_xf);
			var _local7:b2ContactPoint = s_evalCP;
			_local7.shape1 = m_shape1;
			_local7.shape2 = m_shape2;
			_local7.friction = m_friction;
			_local7.restitution = m_restitution;
			if (m_manifold.pointCount > 0){
				m_manifoldCount = 1;
				_local8 = m_manifold.points[0];
				if (m0.pointCount == 0){
					_local8.normalImpulse = 0;
					_local8.tangentImpulse = 0;
					if (_arg1){
						_local7.position = _local5.GetWorldPoint(_local8.localPoint1);
						_local2 = _local5.GetLinearVelocityFromLocalPoint(_local8.localPoint1);
						_local3 = _local6.GetLinearVelocityFromLocalPoint(_local8.localPoint2);
						_local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y));
						_local7.normal.SetV(m_manifold.normal);
						_local7.separation = _local8.separation;
						_local7.id.key = _local8.id._key;
						_arg1.Add(_local7);
					};
				} else {
					_local4 = m0.points[0];
					_local8.normalImpulse = _local4.normalImpulse;
					_local8.tangentImpulse = _local4.tangentImpulse;
					if (_arg1){
						_local7.position = _local5.GetWorldPoint(_local8.localPoint1);
						_local2 = _local5.GetLinearVelocityFromLocalPoint(_local8.localPoint1);
						_local3 = _local6.GetLinearVelocityFromLocalPoint(_local8.localPoint2);
						_local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y));
						_local7.normal.SetV(m_manifold.normal);
						_local7.separation = _local8.separation;
						_local7.id.key = _local8.id._key;
						_arg1.Persist(_local7);
					};
				};
			} else {
				m_manifoldCount = 0;
				if ((((m0.pointCount > 0)) && (_arg1))){
					_local4 = m0.points[0];
					_local7.position = _local5.GetWorldPoint(_local4.localPoint1);
					_local2 = _local5.GetLinearVelocityFromLocalPoint(_local4.localPoint1);
					_local3 = _local6.GetLinearVelocityFromLocalPoint(_local4.localPoint2);
					_local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y));
					_local7.normal.SetV(m0.normal);
					_local7.separation = _local4.separation;
					_local7.id.key = _local4.id._key;
					_arg1.Remove(_local7);
				};
			};
		}
		override public function GetManifolds():Array{
			return (m_manifolds);
		}

		public static function Destroy(_arg1:b2Contact, _arg2):void{
		}
		public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{
			return (new b2CircleContact(_arg1, _arg2));
		}

	}
}//package Box2D.Dynamics.Contacts 

****************

//b2Contact (Box2D.Dynamics.Contacts.b2Contact)
package Box2D.Dynamics.Contacts {
	import Box2D.Collision.*;
	import Box2D.Collision.Shapes.*;
	import Box2D.Dynamics.*;
	import Box2D.Common.Math.*;
	import Box2D.Common.*;

	public class b2Contact {

		public var m_shape1:b2Shape;
		public var m_shape2:b2Shape;
		public var m_prev:b2Contact;
		public var m_toi:Number;
		public var m_next:b2Contact;
		public var m_friction:Number;
		public var m_manifoldCount:int;
		public var m_node1:b2ContactEdge;
		public var m_node2:b2ContactEdge;
		public var m_restitution:Number;
		public var m_flags:uint;

		public static var e_toiFlag:uint = 8;
		public static var e_nonSolidFlag:uint = 1;
		public static var e_slowFlag:uint = 2;
		public static var e_islandFlag:uint = 4;
		public static var s_registers:Array;
		public static var s_initialized:Boolean = false;

		public function b2Contact(_arg1:b2Shape=null, _arg2:b2Shape=null){
			m_node1 = new b2ContactEdge();
			m_node2 = new b2ContactEdge();
			super();
			m_flags = 0;
			if (((!(_arg1)) || (!(_arg2)))){
				m_shape1 = null;
				m_shape2 = null;
				return;
			};
			if (((_arg1.IsSensor()) || (_arg2.IsSensor()))){
				m_flags = (m_flags | e_nonSolidFlag);
			};
			m_shape1 = _arg1;
			m_shape2 = _arg2;
			m_manifoldCount = 0;
			m_friction = Math.sqrt((m_shape1.m_friction * m_shape2.m_friction));
			m_restitution = b2Math.b2Max(m_shape1.m_restitution, m_shape2.m_restitution);
			m_prev = null;
			m_next = null;
			m_node1.contact = null;
			m_node1.prev = null;
			m_node1.next = null;
			m_node1.other = null;
			m_node2.contact = null;
			m_node2.prev = null;
			m_node2.next = null;
			m_node2.other = null;
		}
		public function IsSolid():Boolean{
			return (((m_flags & e_nonSolidFlag) == 0));
		}
		public function GetShape1():b2Shape{
			return (m_shape1);
		}
		public function GetShape2():b2Shape{
			return (m_shape2);
		}
		public function GetNext():b2Contact{
			return (m_next);
		}
		public function GetManifoldCount():int{
			return (m_manifoldCount);
		}
		public function GetManifolds():Array{
			return (null);
		}
		public function Update(_arg1:b2ContactListener):void{
			var _local2:int = m_manifoldCount;
			Evaluate(_arg1);
			var _local3:int = m_manifoldCount;
			var _local4:b2Body = m_shape1.m_body;
			var _local5:b2Body = m_shape2.m_body;
			if ((((_local3 == 0)) && ((_local2 > 0)))){
				_local4.WakeUp();
				_local5.WakeUp();
			};
			if (((((((_local4.IsStatic()) || (_local4.IsBullet()))) || (_local5.IsStatic()))) || (_local5.IsBullet()))){
				m_flags = (m_flags & ~(e_slowFlag));
			} else {
				m_flags = (m_flags | e_slowFlag);
			};
		}
		public function Evaluate(_arg1:b2ContactListener):void{
		}

		public static function InitializeRegisters():void{
			var _local2:int;
			s_registers = new Array(b2Shape.e_shapeTypeCount);
			var _local1:int;
			while (_local1 < b2Shape.e_shapeTypeCount) {
				s_registers[_local1] = new Array(b2Shape.e_shapeTypeCount);
				_local2 = 0;
				while (_local2 < b2Shape.e_shapeTypeCount) {
					s_registers[_local1][_local2] = new b2ContactRegister();
					_local2++;
				};
				_local1++;
			};
			AddType(b2CircleContact.Create, b2CircleContact.Destroy, b2Shape.e_circleShape, b2Shape.e_circleShape);
			AddType(b2PolyAndCircleContact.Create, b2PolyAndCircleContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_circleShape);
			AddType(b2PolygonContact.Create, b2PolygonContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_polygonShape);
		}
		public static function Destroy(_arg1:b2Contact, _arg2):void{
			if (_arg1.m_manifoldCount > 0){
				_arg1.m_shape1.m_body.WakeUp();
				_arg1.m_shape2.m_body.WakeUp();
			};
			var _local3:int = _arg1.m_shape1.m_type;
			var _local4:int = _arg1.m_shape2.m_type;
			var _local5:b2ContactRegister = s_registers[_local3][_local4];
			var _local6:Function = _local5.destroyFcn;
			_local6(_arg1, _arg2);
		}
		public static function AddType(_arg1:Function, _arg2:Function, _arg3:int, _arg4:int):void{
			s_registers[_arg3][_arg4].createFcn = _arg1;
			s_registers[_arg3][_arg4].destroyFcn = _arg2;
			s_registers[_arg3][_arg4].primary = true;
			if (_arg3 != _arg4){
				s_registers[_arg4][_arg3].createFcn = _arg1;
				s_registers[_arg4][_arg3].destroyFcn = _arg2;
				s_registers[_arg4][_arg3].primary = false;
			};
		}
		public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{
			var _local8:b2Contact;
			var _local9:int;
			var _local10:b2Manifold;
			if (s_initialized == false){
				InitializeRegisters();
				s_initialized = true;
			};
			var _local4:int = _arg1.m_type;
			var _local5:int = _arg2.m_type;
			var _local6:b2ContactRegister = s_registers[_local4][_local5];
			var _local7:Function = _local6.createFcn;
			if (_local7 != null){
				if (_local6.primary){
					return (_local7(_arg1, _arg2, _arg3));
				};
				_local8 = _local7(_arg2, _arg1, _arg3);
				_local9 = 0;
				while (_local9 < _local8.m_manifoldCount) {
					_local10 = _local8.GetManifolds()[_local9];
					_local8.GetManifolds()[_local9].normal = _local10.normal.Negative();
					_local9++;
				};
				return (_local8);
				//unresolved jump
			};
			return (null);
		}

	}
}//package Box2D.Dynamics.Contacts 

****************

//b2ContactConstraint (Box2D.Dynamics.Contacts.b2ContactConstraint)
package Box2D.Dynamics.Contacts {
	import Box2D.Collision.*;
	import Box2D.Dynamics.*;
	import Box2D.Common.Math.*;
	import Box2D.Common.*;

	public class b2ContactConstraint {

		public var points:Array;
		public var normal:b2Vec2;
		public var restitution:Number;
		public var body1:b2Body;
		public var manifold:b2Manifold;
		public var body2:b2Body;
		public var friction:Number;
		public var pointCount:int;

		public function b2ContactConstraint(){
			normal = new b2Vec2();
			super();
			points = new Array(b2Settings.b2_maxManifoldPoints);
			var _local1:int;
			while (_local1 < b2Settings.b2_maxManifoldPoints) {
				points[_local1] = new b2ContactConstraintPoint();
				_local1++;
			};
		}
	}
}//package Box2D.Dynamics.Contacts 

****************

//b2ContactConstraintPoint (Box2D.Dynamics.Contacts.b2ContactConstraintPoint)
package Box2D.Dynamics.Contacts {
	import Box2D.Common.Math.*;

	public class b2ContactConstraintPoint {

		public var r2:b2Vec2;
		public var separation:Number;
		public var positionImpulse:Number;
		public var normalImpulse:Number;
		public var tangentMass:Number;
		public var equalizedMass:Number;
		public var tangentImpulse:Number;
		public var localAnchor1:b2Vec2;
		public var localAnchor2:b2Vec2;
		public var normalMass:Number;
		public var velocityBias:Number;
		public var r1:b2Vec2;

		public function b2ContactConstraintPoint(){
			localAnchor1 = new b2Vec2();
			localAnchor2 = new b2Vec2();
			r1 = new b2Vec2();
			r2 = new b2Vec2();
			super();
		}
	}
}//package Box2D.Dynamics.Contacts 

****************

//b2ContactEdge (Box2D.Dynamics.Contacts.b2ContactEdge)
package Box2D.Dynamics.Contacts {
	import Box2D.Dynamics.*;

	public class b2ContactEdge {

		public var other:b2Body;
		public var prev:b2ContactEdge;
		public var contact:b2Contact;
		public var next:b2ContactEdge;

	}
}//package Box2D.Dynamics.Contacts 

****************

//b2ContactRegister (Box2D.Dynamics.Contacts.b2ContactRegister)
package Box2D.Dynamics.Contacts {

	public class b2ContactRegister {

		public var primary:Boolean;
		public var createFcn:Function;
		public var destroyFcn:Function;

	}
}//package Box2D.Dynamics.Contacts 

****************

//b2ContactResult (Box2D.Dynamics.Contacts.b2ContactResult)
package Box2D.Dynamics.Contacts {
	import Box2D.Collision.*;
	import Box2D.Collision.Shapes.*;
	import Box2D.Common.Math.*;

	public class b2ContactResult {

		public var position:b2Vec2;
		public var shape1:b2Shape;
		public var shape2:b2Shape;
		public var normalImpulse:Number;
		public var normal:b2Vec2;
		public var tangentImpulse:Number;
		public var id:b2ContactID;

		public function b2ContactResult(){
			position = new b2Vec2();
			normal = new b2Vec2();
			id = new b2ContactID();
			super();
		}
	}
}//package Box2D.Dynamics.Contacts 

****************

//b2ContactSolver (Box2D.Dynamics.Contacts.b2ContactSolver)
package Box2D.Dynamics.Contacts {
	import Box2D.Collision.*;
	import Box2D.Dynamics.*;
	import Box2D.Common.Math.*;
	import Box2D.Common.*;

	public class b2ContactSolver {

		public var m_constraintCount:int;
		public var m_constraints:Array;
		public var m_allocator;
		public var m_step:b2TimeStep;

		public function b2ContactSolver(_arg1:b2TimeStep, _arg2:Array, _arg3:int, _arg4){
			var _local5:b2Contact;
			var _local6:int;
			var _local7:b2Vec2;
			var _local8:b2Mat22;
			var _local10:b2Body;
			var _local11:b2Body;
			var _local12:int;
			var _local13:Array;
			var _local14:Number;
			var _local15:Number;
			var _local16:Number;
			var _local17:Number;
			var _local18:Number;
			var _local19:Number;
			var _local20:Number;
			var _local21:Number;
			var _local22:int;
			var _local23:b2Manifold;
			var _local24:Number;
			var _local25:Number;
			var _local26:b2ContactConstraint;
			var _local27:uint;
			var _local28:b2ManifoldPoint;
			var _local29:b2ContactConstraintPoint;
			var _local30:Number;
			var _local31:Number;
			var _local32:Number;
			var _local33:Number;
			var _local34:Number;
			var _local35:Number;
			var _local36:Number;
			var _local37:Number;
			var _local38:Number;
			var _local39:Number;
			var _local40:Number;
			var _local41:Number;
			var _local42:Number;
			var _local43:Number;
			var _local44:Number;
			var _local45:Number;
			var _local46:Number;
			var _local47:Number;
			m_step = new b2TimeStep();
			m_constraints = new Array();
			super();
			m_step.dt = _arg1.dt;
			m_step.inv_dt = _arg1.inv_dt;
			m_step.maxIterations = _arg1.maxIterations;
			m_allocator = _arg4;
			m_constraintCount = 0;
			_local6 = 0;
			while (_local6 < _arg3) {
				_local5 = _arg2[_local6];
				m_constraintCount = (m_constraintCount + _local5.m_manifoldCount);
				_local6++;
			};
			_local6 = 0;
			while (_local6 < m_constraintCount) {
				m_constraints[_local6] = new b2ContactConstraint();
				_local6++;
			};
			var _local9:int;
			_local6 = 0;
			while (_local6 < _arg3) {
				_local5 = _arg2[_local6];
				_local10 = _local5.m_shape1.m_body;
				_local11 = _local5.m_shape2.m_body;
				_local12 = _local5.m_manifoldCount;
				_local13 = _local5.GetManifolds();
				_local14 = _local5.m_friction;
				_local15 = _local5.m_restitution;
				_local16 = _local10.m_linearVelocity.x;
				_local17 = _local10.m_linearVelocity.y;
				_local18 = _local11.m_linearVelocity.x;
				_local19 = _local11.m_linearVelocity.y;
				_local20 = _local10.m_angularVelocity;
				_local21 = _local11.m_angularVelocity;
				_local22 = 0;
				while (_local22 < _local12) {
					_local23 = _local13[_local22];
					_local24 = _local23.normal.x;
					_local25 = _local23.normal.y;
					_local26 = m_constraints[_local9];
					_local26.body1 = _local10;
					_local26.body2 = _local11;
					_local26.manifold = _local23;
					_local26.normal.x = _local24;
					_local26.normal.y = _local25;
					_local26.pointCount = _local23.pointCount;
					_local26.friction = _local14;
					_local26.restitution = _local15;
					_local27 = 0;
					while (_local27 < _local26.pointCount) {
						_local28 = _local23.points[_local27];
						_local29 = _local26.points[_local27];
						_local29.normalImpulse = _local28.normalImpulse;
						_local29.tangentImpulse = _local28.tangentImpulse;
						_local29.separation = _local28.separation;
						_local29.positionImpulse = 0;
						_local29.localAnchor1.SetV(_local28.localPoint1);
						_local29.localAnchor2.SetV(_local28.localPoint2);
						_local8 = _local10.m_xf.R;
						_local32 = (_local28.localPoint1.x - _local10.m_sweep.localCenter.x);
						_local33 = (_local28.localPoint1.y - _local10.m_sweep.localCenter.y);
						_local30 = ((_local8.col1.x * _local32) + (_local8.col2.x * _local33));
						_local33 = ((_local8.col1.y * _local32) + (_local8.col2.y * _local33));
						_local32 = _local30;
						_local29.r1.Set(_local32, _local33);
						_local8 = _local11.m_xf.R;
						_local34 = (_local28.localPoint2.x - _local11.m_sweep.localCenter.x);
						_local35 = (_local28.localPoint2.y - _local11.m_sweep.localCenter.y);
						_local30 = ((_local8.col1.x * _local34) + (_local8.col2.x * _local35));
						_local35 = ((_local8.col1.y * _local34) + (_local8.col2.y * _local35));
						_local34 = _local30;
						_local29.r2.Set(_local34, _local35);
						_local36 = ((_local32 * _local32) + (_local33 * _local33));
						_local37 = ((_local34 * _local34) + (_local35 * _local35));
						_local38 = ((_local32 * _local24) + (_local33 * _local25));
						_local39 = ((_local34 * _local24) + (_local35 * _local25));
						_local40 = (_local10.m_invMass + _local11.m_invMass);
						_local40 = (_local40 + ((_local10.m_invI * (_local36 - (_local38 * _local38))) + (_local11.m_invI * (_local37 - (_local39 * _local39)))));
						_local29.normalMass = (1 / _local40);
						_local41 = ((_local10.m_mass * _local10.m_invMass) + (_local11.m_mass * _local11.m_invMass));
						_local41 = (_local41 + (((_local10.m_mass * _local10.m_invI) * (_local36 - (_local38 * _local38))) + ((_local11.m_mass * _local11.m_invI) * (_local37 - (_local39 * _local39)))));
						_local29.equalizedMass = (1 / _local41);
						_local42 = _local25;
						_local43 = -(_local24);
						_local44 = ((_local32 * _local42) + (_local33 * _local43));
						_local45 = ((_local34 * _local42) + (_local35 * _local43));
						_local46 = (_local10.m_invMass + _local11.m_invMass);
						_local46 = (_local46 + ((_local10.m_invI * (_local36 - (_local44 * _local44))) + (_local11.m_invI * (_local37 - (_local45 * _local45)))));
						_local29.tangentMass = (1 / _local46);
						_local29.velocityBias = 0;
						if (_local29.separation > 0){
							_local29.velocityBias = (-60 * _local29.separation);
						};
						_local30 = (((_local18 + (-(_local21) * _local35)) - _local16) - (-(_local20) * _local33));
						_local31 = (((_local19 + (_local21 * _local34)) - _local17) - (_local20 * _local32));
						_local47 = ((_local26.normal.x * _local30) + (_local26.normal.y * _local31));
						if (_local47 < -(b2Settings.b2_velocityThreshold)){
							_local29.velocityBias = (_local29.velocityBias + (-(_local26.restitution) * _local47));
						};
						_local27++;
					};
					_local9++;
					_local22++;
				};
				_local6++;
			};
		}
		public function InitVelocityConstraints(_arg1:b2TimeStep):void{
			var _local2:b2Vec2;
			var _local3:b2Vec2;
			var _local4:b2Mat22;
			var _local6:b2ContactConstraint;
			var _local7:b2Body;
			var _local8:b2Body;
			var _local9:Number;
			var _local10:Number;
			var _local11:Number;
			var _local12:Number;
			var _local13:Number;
			var _local14:Number;
			var _local15:Number;
			var _local16:Number;
			var _local17:Number;
			var _local18:int;
			var _local19:int;
			var _local20:b2ContactConstraintPoint;
			var _local21:Number;
			var _local22:Number;
			var _local23:b2ContactConstraintPoint;
			var _local5:int;
			while (_local5 < m_constraintCount) {
				_local6 = m_constraints[_local5];
				_local7 = _local6.body1;
				_local8 = _local6.body2;
				_local9 = _local7.m_invMass;
				_local10 = _local7.m_invI;
				_local11 = _local8.m_invMass;
				_local12 = _local8.m_invI;
				_local13 = _local6.normal.x;
				_local14 = _local6.normal.y;
				_local15 = _local14;
				_local16 = -(_local13);
				if (_arg1.warmStarting){
					_local19 = _local6.pointCount;
					_local18 = 0;
					while (_local18 < _local19) {
						_local20 = _local6.points[_local18];
						_local6.points[_local18].normalImpulse = (_local20.normalImpulse * _arg1.dtRatio);
						_local20.tangentImpulse = (_local20.tangentImpulse * _arg1.dtRatio);
						_local21 = ((_local20.normalImpulse * _local13) + (_local20.tangentImpulse * _local15));
						_local22 = ((_local20.normalImpulse * _local14) + (_local20.tangentImpulse * _local16));
						_local7.m_angularVelocity = (_local7.m_angularVelocity - (_local10 * ((_local20.r1.x * _local22) - (_local20.r1.y * _local21))));
						_local7.m_linearVelocity.x = (_local7.m_linearVelocity.x - (_local9 * _local21));
						_local7.m_linearVelocity.y = (_local7.m_linearVelocity.y - (_local9 * _local22));
						_local8.m_angularVelocity = (_local8.m_angularVelocity + (_local12 * ((_local20.r2.x * _local22) - (_local20.r2.y * _local21))));
						_local8.m_linearVelocity.x = (_local8.m_linearVelocity.x + (_local11 * _local21));
						_local8.m_linearVelocity.y = (_local8.m_linearVelocity.y + (_local11 * _local22));
						_local18++;
					};
				} else {
					_local19 = _local6.pointCount;
					_local18 = 0;
					while (_local18 < _local19) {
						_local23 = _local6.points[_local18];
						_local23.normalImpulse = 0;
						_local23.tangentImpulse = 0;
						_local18++;
					};
				};
				_local5++;
			};
		}
		public function SolvePositionConstraints(_arg1:Number):Boolean{
			var _local3:b2Mat22;
			var _local4:b2Vec2;
			var _local6:b2ContactConstraint;
			var _local7:b2Body;
			var _local8:b2Body;
			var _local9:b2Vec2;
			var _local10:Number;
			var _local11:b2Vec2;
			var _local12:Number;
			var _local13:Number;
			var _local14:Number;
			var _local15:Number;
			var _local16:Number;
			var _local17:Number;
			var _local18:Number;
			var _local19:int;
			var _local20:int;
			var _local21:b2ContactConstraintPoint;
			var _local22:Number;
			var _local23:Number;
			var _local24:Number;
			var _local25:Number;
			var _local26:Number;
			var _local27:Number;
			var _local28:Number;
			var _local29:Number;
			var _local30:Number;
			var _local31:Number;
			var _local32:Number;
			var _local33:Number;
			var _local34:Number;
			var _local35:Number;
			var _local36:Number;
			var _local37:Number;
			var _local38:Number;
			var _local2:Number = 0;
			var _local5:int;
			while (_local5 < m_constraintCount) {
				_local6 = m_constraints[_local5];
				_local7 = _local6.body1;
				_local8 = _local6.body2;
				_local9 = _local7.m_sweep.c;
				_local10 = _local7.m_sweep.a;
				_local11 = _local8.m_sweep.c;
				_local12 = _local8.m_sweep.a;
				_local13 = (_local7.m_mass * _local7.m_invMass);
				_local14 = (_local7.m_mass * _local7.m_invI);
				_local15 = (_local8.m_mass * _local8.m_invMass);
				_local16 = (_local8.m_mass * _local8.m_invI);
				_local17 = _local6.normal.x;
				_local18 = _local6.normal.y;
				_local19 = _local6.pointCount;
				_local20 = 0;
				while (_local20 < _local19) {
					_local21 = _local6.points[_local20];
					_local3 = _local7.m_xf.R;
					_local4 = _local7.m_sweep.localCenter;
					_local22 = (_local21.localAnchor1.x - _local4.x);
					_local23 = (_local21.localAnchor1.y - _local4.y);
					_local26 = ((_local3.col1.x * _local22) + (_local3.col2.x * _local23));
					_local23 = ((_local3.col1.y * _local22) + (_local3.col2.y * _local23));
					_local22 = _local26;
					_local3 = _local8.m_xf.R;
					_local4 = _local8.m_sweep.localCenter;
					_local24 = (_local21.localAnchor2.x - _local4.x);
					_local25 = (_local21.localAnchor2.y - _local4.y);
					_local26 = ((_local3.col1.x * _local24) + (_local3.col2.x * _local25));
					_local25 = ((_local3.col1.y * _local24) + (_local3.col2.y * _local25));
					_local24 = _local26;
					_local27 = (_local9.x + _local22);
					_local28 = (_local9.y + _local23);
					_local29 = (_local11.x + _local24);
					_local30 = (_local11.y + _local25);
					_local31 = (_local29 - _local27);
					_local32 = (_local30 - _local28);
					_local33 = (((_local31 * _local17) + (_local32 * _local18)) + _local21.separation);
					_local2 = b2Math.b2Min(_local2, _local33);
					_local34 = (_arg1 * b2Math.b2Clamp((_local33 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0));
					_local35 = (-(_local21.equalizedMass) * _local34);
					_local36 = _local21.positionImpulse;
					_local21.positionImpulse = b2Math.b2Max((_local36 + _local35), 0);
					_local35 = (_local21.positionImpulse - _local36);
					_local37 = (_local35 * _local17);
					_local38 = (_local35 * _local18);
					_local9.x = (_local9.x - (_local13 * _local37));
					_local9.y = (_local9.y - (_local13 * _local38));
					_local10 = (_local10 - (_local14 * ((_local22 * _local38) - (_local23 * _local37))));
					_local7.m_sweep.a = _local10;
					_local7.SynchronizeTransform();
					_local11.x = (_local11.x + (_local15 * _local37));
					_local11.y = (_local11.y + (_local15 * _local38));
					_local12 = (_local12 + (_local16 * ((_local24 * _local38) - (_local25 * _local37))));
					_local8.m_sweep.a = _local12;
					_local8.SynchronizeTransform();
					_local20++;
				};
				_local5++;
			};
			return ((_local2 >= (-1.5 * b2Settings.b2_linearSlop)));
		}
		public function SolveVelocityConstraints():void{
			var _local1:int;
			var _local2:b2ContactConstraintPoint;
			var _local3:Number;
			var _local4:Number;
			var _local5:Number;
			var _local6:Number;
			var _local7:Number;
			var _local8:Number;
			var _local9:Number;
			var _local10:Number;
			var _local11:Number;
			var _local12:Number;
			var _local13:Number;
			var _local14:Number;
			var _local15:Number;
			var _local16:Number;
			var _local17:b2Mat22;
			var _local18:b2Vec2;
			var _local20:b2ContactConstraint;
			var _local21:b2Body;
			var _local22:b2Body;
			var _local23:Number;
			var _local24:Number;
			var _local25:b2Vec2;
			var _local26:b2Vec2;
			var _local27:Number;
			var _local28:Number;
			var _local29:Number;
			var _local30:Number;
			var _local31:Number;
			var _local32:Number;
			var _local33:Number;
			var _local34:Number;
			var _local35:Number;
			var _local36:Number;
			var _local37:int;
			var _local38:Number;
			var _local19:int;
			while (_local19 < m_constraintCount) {
				_local20 = m_constraints[_local19];
				_local21 = _local20.body1;
				_local22 = _local20.body2;
				_local23 = _local21.m_angularVelocity;
				_local24 = _local22.m_angularVelocity;
				_local25 = _local21.m_linearVelocity;
				_local26 = _local22.m_linearVelocity;
				_local27 = _local21.m_invMass;
				_local28 = _local21.m_invI;
				_local29 = _local22.m_invMass;
				_local30 = _local22.m_invI;
				_local31 = _local20.normal.x;
				_local32 = _local20.normal.y;
				_local33 = _local32;
				_local34 = -(_local31);
				_local35 = _local20.friction;
				_local37 = _local20.pointCount;
				_local1 = 0;
				while (_local1 < _local37) {
					_local2 = _local20.points[_local1];
					_local7 = (((_local26.x + (-(_local24) * _local2.r2.y)) - _local25.x) - (-(_local23) * _local2.r1.y));
					_local8 = (((_local26.y + (_local24 * _local2.r2.x)) - _local25.y) - (_local23 * _local2.r1.x));
					_local9 = ((_local7 * _local31) + (_local8 * _local32));
					_local11 = (-(_local2.normalMass) * (_local9 - _local2.velocityBias));
					_local10 = ((_local7 * _local33) + (_local8 * _local34));
					_local12 = (_local2.tangentMass * -(_local10));
					_local13 = b2Math.b2Max((_local2.normalImpulse + _local11), 0);
					_local11 = (_local13 - _local2.normalImpulse);
					_local38 = (_local35 * _local2.normalImpulse);
					_local14 = b2Math.b2Clamp((_local2.tangentImpulse + _local12), -(_local38), _local38);
					_local12 = (_local14 - _local2.tangentImpulse);
					_local15 = ((_local11 * _local31) + (_local12 * _local33));
					_local16 = ((_local11 * _local32) + (_local12 * _local34));
					_local25.x = (_local25.x - (_local27 * _local15));
					_local25.y = (_local25.y - (_local27 * _local16));
					_local23 = (_local23 - (_local28 * ((_local2.r1.x * _local16) - (_local2.r1.y * _local15))));
					_local26.x = (_local26.x + (_local29 * _local15));
					_local26.y = (_local26.y + (_local29 * _local16));
					_local24 = (_local24 + (_local30 * ((_local2.r2.x * _local16) - (_local2.r2.y * _local15))));
					_local2.normalImpulse = _local13;
					_local2.tangentImpulse = _local14;
					_local1++;
				};
				_local21.m_angularVelocity = _local23;
				_local22.m_angularVelocity = _local24;
				_local19++;
			};
		}
		public function FinalizeVelocityConstraints():void{
			var _local2:b2ContactConstraint;
			var _local3:b2Manifold;
			var _local4:int;
			var _local5:b2ManifoldPoint;
			var _local6:b2ContactConstraintPoint;
			var _local1:int;
			while (_local1 < m_constraintCount) {
				_local2 = m_constraints[_local1];
				_local3 = _local2.manifold;
				_local4 = 0;
				while (_local4 < _local2.pointCount) {
					_local5 = _local3.points[_local4];
					_local6 = _local2.points[_local4];
					_local5.normalImpulse = _local6.normalImpulse;
					_local5.tangentImpulse = _local6.tangentImpulse;
					_local4++;
				};
				_local1++;
			};
		}

	}
}//package Box2D.Dynamics.Contacts 

****************

//b2NullContact (Box2D.Dynamics.Contacts.b2NullContact)
package Box2D.Dynamics.Contacts {
	import Box2D.Dynamics.*;

	public class b2NullContact extends b2Contact {

		override public function Evaluate(_arg1:b2ContactListener):void{
		}
		override public function GetManifolds():Array{
			return (null);
		}

	}
}//package Box2D.Dynamics.Contacts 

****************

//b2PolyAndCircleContact (Box2D.Dynamics.Contacts.b2PolyAndCircleContact)
package Box2D.Dynamics.Contacts {
	import Box2D.Collision.*;
	import Box2D.Collision.Shapes.*;
	import Box2D.Dynamics.*;
	import Box2D.Common.Math.*;
	import Box2D.Common.*;

	public class b2PolyAndCircleContact extends b2Contact {

		private var m_manifolds:Array;
		public var m_manifold:b2Manifold;
		private var m0:b2Manifold;

		private static const s_evalCP:b2ContactPoint = new b2ContactPoint();

		public function b2PolyAndCircleContact(_arg1:b2Shape, _arg2:b2Shape){
			m_manifolds = [new b2Manifold()];
			m0 = new b2Manifold();
			super(_arg1, _arg2);
			m_manifold = m_manifolds[0];
			b2Settings.b2Assert((m_shape1.m_type == b2Shape.e_polygonShape));
			b2Settings.b2Assert((m_shape2.m_type == b2Shape.e_circleShape));
			m_manifold.pointCount = 0;
			var _local3:b2ManifoldPoint = m_manifold.points[0];
			_local3.normalImpulse = 0;
			_local3.tangentImpulse = 0;
		}
		override public function Evaluate(_arg1:b2ContactListener):void{
			var _local2:int;
			var _local3:b2Vec2;
			var _local4:b2Vec2;
			var _local5:b2ManifoldPoint;
			var _local10:b2ManifoldPoint;
			var _local11:Boolean;
			var _local12:uint;
			var _local13:int;
			var _local6:b2Body = m_shape1.m_body;
			var _local7:b2Body = m_shape2.m_body;
			m0.Set(m_manifold);
			b2Collision.b2CollidePolygonAndCircle(m_manifold, (m_shape1 as b2PolygonShape), _local6.m_xf, (m_shape2 as b2CircleShape), _local7.m_xf);
			var _local8:Array = [false, false];
			var _local9:b2ContactPoint = s_evalCP;
			_local9.shape1 = m_shape1;
			_local9.shape2 = m_shape2;
			_local9.friction = m_friction;
			_local9.restitution = m_restitution;
			if (m_manifold.pointCount > 0){
				_local2 = 0;
				while (_local2 < m_manifold.pointCount) {
					_local10 = m_manifold.points[_local2];
					_local10.normalImpulse = 0;
					_local10.tangentImpulse = 0;
					_local11 = false;
					_local12 = _local10.id._key;
					_local13 = 0;
					while (_local13 < m0.pointCount) {
						if (_local8[_local13] == true){
						} else {
							_local5 = m0.points[_local13];
							if (_local5.id._key == _local12){
								_local8[_local13] = true;
								_local10.normalImpulse = _local5.normalImpulse;
								_local10.tangentImpulse = _local5.tangentImpulse;
								_local11 = true;
								if (_arg1 != null){
									_local9.position = _local6.GetWorldPoint(_local10.localPoint1);
									_local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint1);
									_local4 = _local7.GetLinearVelocityFromLocalPoint(_local10.localPoint2);
									_local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y));
									_local9.normal.SetV(m_manifold.normal);
									_local9.separation = _local10.separation;
									_local9.id.key = _local12;
									_arg1.Persist(_local9);
								};
								break;
							};
						};
						_local13++;
					};
					if ((((_local11 == false)) && (!((_arg1 == null))))){
						_local9.position = _local6.GetWorldPoint(_local10.localPoint1);
						_local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint1);
						_local4 = _local7.GetLinearVelocityFromLocalPoint(_local10.localPoint2);
						_local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y));
						_local9.normal.SetV(m_manifold.normal);
						_local9.separation = _local10.separation;
						_local9.id.key = _local12;
						_arg1.Add(_local9);
					};
					_local2++;
				};
				m_manifoldCount = 1;
			} else {
				m_manifoldCount = 0;
			};
			if (_arg1 == null){
				return;
			};
			_local2 = 0;
			while (_local2 < m0.pointCount) {
				if (_local8[_local2]){
				} else {
					_local5 = m0.points[_local2];
					_local9.position = _local6.GetWorldPoint(_local5.localPoint1);
					_local3 = _local6.GetLinearVelocityFromLocalPoint(_local5.localPoint1);
					_local4 = _local7.GetLinearVelocityFromLocalPoint(_local5.localPoint2);
					_local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y));
					_local9.normal.SetV(m0.normal);
					_local9.separation = _local5.separation;
					_local9.id.key = _local5.id._key;
					_arg1.Remove(_local9);
				};
				_local2++;
			};
		}
		override public function GetManifolds():Array{
			return (m_manifolds);
		}

		public static function Destroy(_arg1:b2Contact, _arg2):void{
		}
		public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{
			return (new b2PolyAndCircleContact(_arg1, _arg2));
		}

	}
}//package Box2D.Dynamics.Contacts 

****************

//b2PolygonContact (Box2D.Dynamics.Contacts.b2PolygonContact)
package Box2D.Dynamics.Contacts {
	import Box2D.Collision.*;
	import Box2D.Collision.Shapes.*;
	import Box2D.Dynamics.*;
	import Box2D.Common.Math.*;
	import Box2D.Common.*;

	public class b2PolygonContact extends b2Contact {

		private var m_manifolds:Array;
		private var m0:b2Manifold;
		public var m_manifold:b2Manifold;

		private static const s_evalCP:b2ContactPoint = new b2ContactPoint();

		public function b2PolygonContact(_arg1:b2Shape, _arg2:b2Shape):void{
			m0 = new b2Manifold();
			m_manifolds = [new b2Manifold()];
			super(_arg1, _arg2);
			m_manifold = m_manifolds[0];
			m_manifold.pointCount = 0;
		}
		override public function Evaluate(_arg1:b2ContactListener):void{
			var _local2:b2Vec2;
			var _local3:b2Vec2;
			var _local4:b2ManifoldPoint;
			var _local7:b2ContactPoint;
			var _local8:int;
			var _local10:b2ManifoldPoint;
			var _local11:Boolean;
			var _local12:uint;
			var _local13:int;
			var _local5:b2Body = m_shape1.m_body;
			var _local6:b2Body = m_shape2.m_body;
			m0.Set(m_manifold);
			b2Collision.b2CollidePolygons(m_manifold, (m_shape1 as b2PolygonShape), _local5.m_xf, (m_shape2 as b2PolygonShape), _local6.m_xf);
			var _local9:Array = [false, false];
			_local7 = s_evalCP;
			_local7.shape1 = m_shape1;
			_local7.shape2 = m_shape2;
			_local7.friction = m_friction;
			_local7.restitution = m_restitution;
			if (m_manifold.pointCount > 0){
				_local8 = 0;
				while (_local8 < m_manifold.pointCount) {
					_local10 = m_manifold.points[_local8];
					_local10.normalImpulse = 0;
					_local10.tangentImpulse = 0;
					_local11 = false;
					_local12 = _local10.id._key;
					_local13 = 0;
					while (_local13 < m0.pointCount) {
						if (_local9[_local13] == true){
						} else {
							_local4 = m0.points[_local13];
							if (_local4.id._key == _local12){
								_local9[_local13] = true;
								_local10.normalImpulse = _local4.normalImpulse;
								_local10.tangentImpulse = _local4.tangentImpulse;
								_local11 = true;
								if (_arg1 != null){
									_local7.position = _local5.GetWorldPoint(_local10.localPoint1);
									_local2 = _local5.GetLinearVelocityFromLocalPoint(_local10.localPoint1);
									_local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint2);
									_local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y));
									_local7.normal.SetV(m_manifold.normal);
									_local7.separation = _local10.separation;
									_local7.id.key = _local12;
									_arg1.Persist(_local7);
								};
								break;
							};
						};
						_local13++;
					};
					if ((((_local11 == false)) && (!((_arg1 == null))))){
						_local7.position = _local5.GetWorldPoint(_local10.localPoint1);
						_local2 = _local5.GetLinearVelocityFromLocalPoint(_local10.localPoint1);
						_local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint2);
						_local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y));
						_local7.normal.SetV(m_manifold.normal);
						_local7.separation = _local10.separation;
						_local7.id.key = _local12;
						_arg1.Add(_local7);
					};
					_local8++;
				};
				m_manifoldCount = 1;
			} else {
				m_manifoldCount = 0;
			};
			if (_arg1 == null){
				return;
			};
			_local8 = 0;
			while (_local8 < m0.pointCount) {
				if (_local9[_local8]){
				} else {
					_local4 = m0.points[_local8];
					_local7.position = _local5.GetWorldPoint(_local4.localPoint1);
					_local2 = _local5.GetLinearVelocityFromLocalPoint(_local4.localPoint1);
					_local3 = _local6.GetLinearVelocityFromLocalPoint(_local4.localPoint2);
					_local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y));
					_local7.normal.SetV(m0.normal);
					_local7.separation = _local4.separation;
					_local7.id.key = _local4.id._key;
					_arg1.Remove(_local7);
				};
				_local8++;
			};
		}
		override public function GetManifolds():Array{
			return (m_manifolds);
		}

		public static function Destroy(_arg1:b2Contact, _arg2):void{
		}
		public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{
			return (new b2PolygonContact(_arg1, _arg2));
		}

	}
}//package Box2D.Dynamics.Contacts 

****************

//b2DistanceJoint (Box2D.Dynamics.Joints.b2DistanceJoint)
package Box2D.Dynamics.Joints {
	import Box2D.Dynamics.*;
	import Box2D.Common.Math.*;
	import Box2D.Common.*;

	public class b2DistanceJoint extends b2Joint {

		public var m_localAnchor1:b2Vec2;
		public var m_localAnchor2:b2Vec2;
		public var m_bias:Number;
		public var m_gamma:Number;
		public var m_u:b2Vec2;
		public var m_mass:Number;
		public var m_impulse:Number;
		public var m_dampingRatio:Number;
		public var m_frequencyHz:Number;
		public var m_length:Number;

		public function b2DistanceJoint(_arg1:b2DistanceJointDef){
			var _local2:b2Mat22;
			var _local3:Number;
			var _local4:Number;
			m_localAnchor1 = new b2Vec2();
			m_localAnchor2 = new b2Vec2();
			m_u = new b2Vec2();
			super(_arg1);
			m_localAnchor1.SetV(_arg1.localAnchor1);
			m_localAnchor2.SetV(_arg1.localAnchor2);
			m_length = _arg1.length;
			m_frequencyHz = _arg1.frequencyHz;
			m_dampingRatio = _arg1.dampingRatio;
			m_impulse = 0;
			m_gamma = 0;
			m_bias = 0;
			m_inv_dt = 0;
		}
		override public function GetAnchor1():b2Vec2{
			return (m_body1.GetWorldPoint(m_localAnchor1));
		}
		override public function GetAnchor2():b2Vec2{
			return (m_body2.GetWorldPoint(m_localAnchor2));
		}
		override public function InitVelocityConstraints(_arg1:b2TimeStep):void{
			var _local2:b2Mat22;
			var _local3:Number;
			var _local4:b2Body;
			var _local5:b2Body;
			var _local6:Number;
			var _local8:Number;
			var _local14:Number;
			var _local15:Number;
			var _local16:Number;
			var _local17:Number;
			var _local18:Number;
			var _local19:Number;
			m_inv_dt = _arg1.inv_dt;
			_local4 = m_body1;
			_local5 = m_body2;
			_local2 = _local4.m_xf.R;
			_local6 = (m_localAnchor1.x - _local4.m_sweep.localCenter.x);
			var _local7:Number = (m_localAnchor1.y - _local4.m_sweep.localCenter.y);
			_local3 = ((_local2.col1.x * _local6) + (_local2.col2.x * _local7));
			_local7 = ((_local2.col1.y * _local6) + (_local2.col2.y * _local7));
			_local6 = _local3;
			_local2 = _local5.m_xf.R;
			_local8 = (m_localAnchor2.x - _local5.m_sweep.localCenter.x);
			var _local9:Number = (m_localAnchor2.y - _local5.m_sweep.localCenter.y);
			_local3 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9));
			_local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9));
			_local8 = _local3;
			m_u.x = (((_local5.m_sweep.c.x + _local8) - _local4.m_sweep.c.x) - _local6);
			m_u.y = (((_local5.m_sweep.c.y + _local9) - _local4.m_sweep.c.y) - _local7);
			var _local10:Number = Math.sqrt(((m_u.x * m_u.x) + (m_u.y * m_u.y)));
			if (_local10 > b2Settings.b2_linearSlop){
				m_u.Multiply((1 / _local10));
			} else {
				m_u.SetZero();
			};
			var _local11:Number = ((_local6 * m_u.y) - (_local7 * m_u.x));
			var _local12:Number = ((_local8 * m_u.y) - (_local9 * m_u.x));
			var _local13:Number = (((_local4.m_invMass + ((_local4.m_invI * _local11) * _local11)) + _local5.m_invMass) + ((_local5.m_invI * _local12) * _local12));
			m_mass = (1 / _local13);
			if (m_frequencyHz > 0){
				_local14 = (_local10 - m_length);
				_local15 = ((2 * Math.PI) * m_frequencyHz);
				_local16 = (((2 * m_mass) * m_dampingRatio) * _local15);
				_local17 = ((m_mass * _local15) * _local15);
				m_gamma = (1 / (_arg1.dt * (_local16 + (_arg1.dt * _local17))));
				m_bias = (((_local14 * _arg1.dt) * _local17) * m_gamma);
				m_mass = (1 / (_local13 + m_gamma));
			};
			if (_arg1.warmStarting){
				m_impulse = (m_impulse * _arg1.dtRatio);
				_local18 = (m_impulse * m_u.x);
				_local19 = (m_impulse * m_u.y);
				_local4.m_linearVelocity.x = (_local4.m_linearVelocity.x - (_local4.m_invMass * _local18));
				_local4.m_linearVelocity.y = (_local4.m_linearVelocity.y - (_local4.m_invMass * _local19));
				_local4.m_angularVelocity = (_local4.m_angularVelocity - (_local4.m_invI * ((_local6 * _local19) - (_local7 * _local18))));
				_local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + (_local5.m_invMass * _local18));
				_local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + (_local5.m_invMass * _local19));
				_local5.m_angularVelocity = (_local5.m_angularVelocity + (_local5.m_invI * ((_local8 * _local19) - (_local9 * _local18))));
			} else {
				m_impulse = 0;
			};
		}
		override public function GetReactionTorque():Number{
			return (0);
		}
		override public function GetReactionForce():b2Vec2{
			var _local1:b2Vec2 = new b2Vec2();
			_local1.SetV(m_u);
			_local1.Multiply((m_inv_dt * m_impulse));
			return (_local1);
		}
		override public function SolvePositionConstraints():Boolean{
			var _local1:b2Mat22;
			if (m_frequencyHz > 0){
				return (true);
			};
			var _local2:b2Body = m_body1;
			var _local3:b2Body = m_body2;
			_local1 = _local2.m_xf.R;
			var _local4:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x);
			var _local5:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y);
			var _local6:Number = ((_local1.col1.x * _local4) + (_local1.col2.x * _local5));
			_local5 = ((_local1.col1.y * _local4) + (_local1.col2.y * _local5));
			_local4 = _local6;
			_local1 = _local3.m_xf.R;
			var _local7:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x);
			var _local8:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y);
			_local6 = ((_local1.col1.x * _local7) + (_local1.col2.x * _local8));
			_local8 = ((_local1.col1.y * _local7) + (_local1.col2.y * _local8));
			_local7 = _local6;
			var _local9:Number = (((_local3.m_sweep.c.x + _local7) - _local2.m_sweep.c.x) - _local4);
			var _local10:Number = (((_local3.m_sweep.c.y + _local8) - _local2.m_sweep.c.y) - _local5);
			var _local11:Number = Math.sqrt(((_local9 * _local9) + (_local10 * _local10)));
			_local9 = (_local9 / _local11);
			_local10 = (_local10 / _local11);
			var _local12:Number = (_local11 - m_length);
			_local12 = b2Math.b2Clamp(_local12, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection);
			var _local13:Number = (-(m_mass) * _local12);
			m_u.Set(_local9, _local10);
			var _local14:Number = (_local13 * m_u.x);
			var _local15:Number = (_local13 * m_u.y);
			_local2.m_sweep.c.x = (_local2.m_sweep.c.x - (_local2.m_invMass * _local14));
			_local2.m_sweep.c.y = (_local2.m_sweep.c.y - (_local2.m_invMass * _local15));
			_local2.m_sweep.a = (_local2.m_sweep.a - (_local2.m_invI * ((_local4 * _local15) - (_local5 * _local14))));
			_local3.m_sweep.c.x = (_local3.m_sweep.c.x + (_local3.m_invMass * _local14));
			_local3.m_sweep.c.y = (_local3.m_sweep.c.y + (_local3.m_invMass * _local15));
			_local3.m_sweep.a = (_local3.m_sweep.a + (_local3.m_invI * ((_local7 * _local15) - (_local8 * _local14))));
			_local2.SynchronizeTransform();
			_local3.SynchronizeTransform();
			return ((b2Math.b2Abs(_local12) < b2Settings.b2_linearSlop));
		}
		override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{
			var _local2:b2Mat22;
			var _local3:b2Body = m_body1;
			var _local4:b2Body = m_body2;
			_local2 = _local3.m_xf.R;
			var _local5:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x);
			var _local6:Number = (m_localAnchor1.y - _local3.m_sweep.localCenter.y);
			var _local7:Number = ((_local2.col1.x * _local5) + (_local2.col2.x * _local6));
			_local6 = ((_local2.col1.y * _local5) + (_local2.col2.y * _local6));
			_local5 = _local7;
			_local2 = _local4.m_xf.R;
			var _local8:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x);
			var _local9:Number = (m_localAnchor2.y - _local4.m_sweep.localCenter.y);
			_local7 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9));
			_local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9));
			_local8 = _local7;
			var _local10:Number = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local6));
			var _local11:Number = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local5));
			var _local12:Number = (_local4.m_linearVelocity.x + (-(_local4.m_angularVelocity) * _local9));
			var _local13:Number = (_local4.m_linearVelocity.y + (_local4.m_angularVelocity * _local8));
			var _local14:Number = ((m_u.x * (_local12 - _local10)) + (m_u.y * (_local13 - _local11)));
			var _local15:Number = (-(m_mass) * ((_local14 + m_bias) + (m_gamma * m_impulse)));
			m_impulse = (m_impulse + _local15);
			var _local16:Number = (_local15 * m_u.x);
			var _local17:Number = (_local15 * m_u.y);
			_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x - (_local3.m_invMass * _local16));
			_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y - (_local3.m_invMass * _local17));
			_local3.m_angularVelocity = (_local3.m_angularVelocity - (_local3.m_invI * ((_local5 * _local17) - (_local6 * _local16))));
			_local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + (_local4.m_invMass * _local16));
			_local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + (_local4.m_invMass * _local17));
			_local4.m_angularVelocity = (_local4.m_angularVelocity + (_local4.m_invI * ((_local8 * _local17) - (_local9 * _local16))));
		}

	}
}//package Box2D.Dynamics.Joints 

****************

//b2DistanceJointDef (Box2D.Dynamics.Joints.b2DistanceJointDef)
package Box2D.Dynamics.Joints {
	import Box2D.Dynamics.*;
	import Box2D.Common.Math.*;

	public class b2DistanceJointDef extends b2JointDef {

		public var localAnchor1:b2Vec2;
		public var length:Number;
		public var dampingRatio:Number;
		public var localAnchor2:b2Vec2;
		public var frequencyHz:Number;

		public function b2DistanceJointDef(){
			localAnchor1 = new b2Vec2();
			localAnchor2 = new b2Vec2();
			super();
			type = b2Joint.e_distanceJoint;
			length = 1;
			frequencyHz = 0;
			dampingRatio = 0;
		}
		public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{
			body1 = _arg1;
			body2 = _arg2;
			localAnchor1.SetV(body1.GetLocalPoint(_arg3));
			localAnchor2.SetV(body2.GetLocalPoint(_arg4));
			var _local5:Number = (_arg4.x - _arg3.x);
			var _local6:Number = (_arg4.y - _arg3.y);
			length = Math.sqrt(((_local5 * _local5) + (_local6 * _local6)));
			frequencyHz = 0;
			dampingRatio = 0;
		}

	}
}//package Box2D.Dynamics.Joints 

****************

//b2GearJoint (Box2D.Dynamics.Joints.b2GearJoint)
package Box2D.Dynamics.Joints {
	import Box2D.Dynamics.*;
	import Box2D.Common.Math.*;
	import Box2D.Common.*;

	public class b2GearJoint extends b2Joint {

		public var m_ground2:b2Body;
		public var m_groundAnchor1:b2Vec2;
		public var m_groundAnchor2:b2Vec2;
		public var m_localAnchor1:b2Vec2;
		public var m_localAnchor2:b2Vec2;
		public var m_ratio:Number;
		public var m_revolute2:b2RevoluteJoint;
		public var m_force:Number;
		public var m_mass:Number;
		public var m_prismatic2:b2PrismaticJoint;
		public var m_ground1:b2Body;
		public var m_revolute1:b2RevoluteJoint;
		public var m_prismatic1:b2PrismaticJoint;
		public var m_constant:Number;
		public var m_J:b2Jacobian;

		public function b2GearJoint(_arg1:b2GearJointDef){
			var _local4:Number;
			var _local5:Number;
			m_groundAnchor1 = new b2Vec2();
			m_groundAnchor2 = new b2Vec2();
			m_localAnchor1 = new b2Vec2();
			m_localAnchor2 = new b2Vec2();
			m_J = new b2Jacobian();
			super(_arg1);
			var _local2:int = _arg1.joint1.m_type;
			var _local3:int = _arg1.joint2.m_type;
			m_revolute1 = null;
			m_prismatic1 = null;
			m_revolute2 = null;
			m_prismatic2 = null;
			m_ground1 = _arg1.joint1.m_body1;
			m_body1 = _arg1.joint1.m_body2;
			if (_local2 == b2Joint.e_revoluteJoint){
				m_revolute1 = (_arg1.joint1 as b2RevoluteJoint);
				m_groundAnchor1.SetV(m_revolute1.m_localAnchor1);
				m_localAnchor1.SetV(m_revolute1.m_localAnchor2);
				_local4 = m_revolute1.GetJointAngle();
			} else {
				m_prismatic1 = (_arg1.joint1 as b2PrismaticJoint);
				m_groundAnchor1.SetV(m_prismatic1.m_localAnchor1);
				m_localAnchor1.SetV(m_prismatic1.m_localAnchor2);
				_local4 = m_prismatic1.GetJointTranslation();
			};
			m_ground2 = _arg1.joint2.m_body1;
			m_body2 = _arg1.joint2.m_body2;
			if (_local3 == b2Joint.e_revoluteJoint){
				m_revolute2 = (_arg1.joint2 as b2RevoluteJoint);
				m_groundAnchor2.SetV(m_revolute2.m_localAnchor1);
				m_localAnchor2.SetV(m_revolute2.m_localAnchor2);
				_local5 = m_revolute2.GetJointAngle();
			} else {
				m_prismatic2 = (_arg1.joint2 as b2PrismaticJoint);
				m_groundAnchor2.SetV(m_prismatic2.m_localAnchor1);
				m_localAnchor2.SetV(m_prismatic2.m_localAnchor2);
				_local5 = m_prismatic2.GetJointTranslation();
			};
			m_ratio = _arg1.ratio;
			m_constant = (_local4 + (m_ratio * _local5));
			m_force = 0;
		}
		override public function GetAnchor1():b2Vec2{
			return (m_body1.GetWorldPoint(m_localAnchor1));
		}
		override public function GetAnchor2():b2Vec2{
			return (m_body2.GetWorldPoint(m_localAnchor2));
		}
		override public function InitVelocityConstraints(_arg1:b2TimeStep):void{
			var _local6:Number;
			var _local7:Number;
			var _local8:Number;
			var _local9:Number;
			var _local10:b2Mat22;
			var _local11:b2Vec2;
			var _local12:Number;
			var _local13:Number;
			var _local15:Number;
			var _local2:b2Body = m_ground1;
			var _local3:b2Body = m_ground2;
			var _local4:b2Body = m_body1;
			var _local5:b2Body = m_body2;
			var _local14:Number = 0;
			m_J.SetZero();
			if (m_revolute1){
				m_J.angular1 = -1;
				_local14 = (_local14 + _local4.m_invI);
			} else {
				_local10 = _local2.m_xf.R;
				_local11 = m_prismatic1.m_localXAxis1;
				_local6 = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y));
				_local7 = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y));
				_local10 = _local4.m_xf.R;
				_local8 = (m_localAnchor1.x - _local4.m_sweep.localCenter.x);
				_local9 = (m_localAnchor1.y - _local4.m_sweep.localCenter.y);
				_local13 = ((_local10.col1.x * _local8) + (_local10.col2.x * _local9));
				_local9 = ((_local10.col1.y * _local8) + (_local10.col2.y * _local9));
				_local8 = _local13;
				_local12 = ((_local8 * _local7) - (_local9 * _local6));
				m_J.linear1.Set(-(_local6), -(_local7));
				m_J.angular1 = -(_local12);
				_local14 = (_local14 + (_local4.m_invMass + ((_local4.m_invI * _local12) * _local12)));
			};
			if (m_revolute2){
				m_J.angular2 = -(m_ratio);
				_local14 = (_local14 + ((m_ratio * m_ratio) * _local5.m_invI));
			} else {
				_local10 = _local3.m_xf.R;
				_local11 = m_prismatic2.m_localXAxis1;
				_local6 = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y));
				_local7 = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y));
				_local10 = _local5.m_xf.R;
				_local8 = (m_localAnchor2.x - _local5.m_sweep.localCenter.x);
				_local9 = (m_localAnchor2.y - _local5.m_sweep.localCenter.y);
				_local13 = ((_local10.col1.x * _local8) + (_local10.col2.x * _local9));
				_local9 = ((_local10.col1.y * _local8) + (_local10.col2.y * _local9));
				_local8 = _local13;
				_local12 = ((_local8 * _local7) - (_local9 * _local6));
				m_J.linear2.Set((-(m_ratio) * _local6), (-(m_ratio) * _local7));
				m_J.angular2 = (-(m_ratio) * _local12);
				_local14 = (_local14 + ((m_ratio * m_ratio) * (_local5.m_invMass + ((_local5.m_invI * _local12) * _local12))));
			};
			m_mass = (1 / _local14);
			if (_arg1.warmStarting){
				_local15 = (_arg1.dt * m_force);
				_local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + ((_local4.m_invMass * _local15) * m_J.linear1.x));
				_local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + ((_local4.m_invMass * _local15) * m_J.linear1.y));
				_local4.m_angularVelocity = (_local4.m_angularVelocity + ((_local4.m_invI * _local15) * m_J.angular1));
				_local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + ((_local5.m_invMass * _local15) * m_J.linear2.x));
				_local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + ((_local5.m_invMass * _local15) * m_J.linear2.y));
				_local5.m_angularVelocity = (_local5.m_angularVelocity + ((_local5.m_invI * _local15) * m_J.angular2));
			} else {
				m_force = 0;
			};
		}
		override public function GetReactionTorque():Number{
			var _local1:b2Mat22 = m_body2.m_xf.R;
			var _local2:Number = (m_localAnchor1.x - m_body2.m_sweep.localCenter.x);
			var _local3:Number = (m_localAnchor1.y - m_body2.m_sweep.localCenter.y);
			var _local4:Number = ((_local1.col1.x * _local2) + (_local1.col2.x * _local3));
			_local3 = ((_local1.col1.y * _local2) + (_local1.col2.y * _local3));
			_local2 = _local4;
			_local4 = ((m_force * m_J.angular2) - ((_local2 * (m_force * m_J.linear2.y)) - (_local3 * (m_force * m_J.linear2.x))));
			return (_local4);
		}
		override public function GetReactionForce():b2Vec2{
			var _local1:b2Vec2 = new b2Vec2((m_force * m_J.linear2.x), (m_force * m_J.linear2.y));
			return (_local1);
		}
		override public function SolvePositionConstraints():Boolean{
			var _local4:Number;
			var _local5:Number;
			var _local1:Number = 0;
			var _local2:b2Body = m_body1;
			var _local3:b2Body = m_body2;
			if (m_revolute1){
				_local4 = m_revolute1.GetJointAngle();
			} else {
				_local4 = m_prismatic1.GetJointTranslation();
			};
			if (m_revolute2){
				_local5 = m_revolute2.GetJointAngle();
			} else {
				_local5 = m_prismatic2.GetJointTranslation();
			};
			var _local6:Number = (m_constant - (_local4 + (m_ratio * _local5)));
			var _local7:Number = (-(m_mass) * _local6);
			_local2.m_sweep.c.x = (_local2.m_sweep.c.x + ((_local2.m_invMass * _local7) * m_J.linear1.x));
			_local2.m_sweep.c.y = (_local2.m_sweep.c.y + ((_local2.m_invMass * _local7) * m_J.linear1.y));
			_local2.m_sweep.a = (_local2.m_sweep.a + ((_local2.m_invI * _local7) * m_J.angular1));
			_local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local3.m_invMass * _local7) * m_J.linear2.x));
			_local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local3.m_invMass * _local7) * m_J.linear2.y));
			_local3.m_sweep.a = (_local3.m_sweep.a + ((_local3.m_invI * _local7) * m_J.angular2));
			_local2.SynchronizeTransform();
			_local3.SynchronizeTransform();
			return ((_local1 < b2Settings.b2_linearSlop));
		}
		public function GetRatio():Number{
			return (m_ratio);
		}
		override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{
			var _local2:b2Body = m_body1;
			var _local3:b2Body = m_body2;
			var _local4:Number = m_J.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity);
			var _local5:Number = ((-(_arg1.inv_dt) * m_mass) * _local4);
			m_force = (m_force + _local5);
			var _local6:Number = (_arg1.dt * _local5);
			_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local2.m_invMass * _local6) * m_J.linear1.x));
			_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local2.m_invMass * _local6) * m_J.linear1.y));
			_local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local2.m_invI * _local6) * m_J.angular1));
			_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local3.m_invMass * _local6) * m_J.linear2.x));
			_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local3.m_invMass * _local6) * m_J.linear2.y));
			_local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _local6) * m_J.angular2));
		}

	}
}//package Box2D.Dynamics.Joints 

****************

//b2GearJointDef (Box2D.Dynamics.Joints.b2GearJointDef)
package Box2D.Dynamics.Joints {

	public class b2GearJointDef extends b2JointDef {

		public var joint1:b2Joint;
		public var joint2:b2Joint;
		public var ratio:Number;

		public function b2GearJointDef(){
			type = b2Joint.e_gearJoint;
			joint1 = null;
			joint2 = null;
			ratio = 1;
		}
	}
}//package Box2D.Dynamics.Joints 

****************

//b2Jacobian (Box2D.Dynamics.Joints.b2Jacobian)
package Box2D.Dynamics.Joints {
	import Box2D.Common.Math.*;

	public class b2Jacobian {

		public var linear1:b2Vec2;
		public var linear2:b2Vec2;
		public var angular1:Number;
		public var angular2:Number;

		public function b2Jacobian(){
			linear1 = new b2Vec2();
			linear2 = new b2Vec2();
			super();
		}
		public function Set(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):void{
			linear1.SetV(_arg1);
			angular1 = _arg2;
			linear2.SetV(_arg3);
			angular2 = _arg4;
		}
		public function SetZero():void{
			linear1.SetZero();
			angular1 = 0;
			linear2.SetZero();
			angular2 = 0;
		}
		public function Compute(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):Number{
			return ((((((linear1.x * _arg1.x) + (linear1.y * _arg1.y)) + (angular1 * _arg2)) + ((linear2.x * _arg3.x) + (linear2.y * _arg3.y))) + (angular2 * _arg4)));
		}

	}
}//package Box2D.Dynamics.Joints 

****************

//b2Joint (Box2D.Dynamics.Joints.b2Joint)
package Box2D.Dynamics.Joints {
	import Box2D.Dynamics.*;
	import Box2D.Common.Math.*;

	public class b2Joint {

		public var m_islandFlag:Boolean;
		public var m_body1:b2Body;
		public var m_prev:b2Joint;
		public var m_next:b2Joint;
		public var m_type:int;
		public var m_collideConnected:Boolean;
		public var m_node1:b2JointEdge;
		public var m_node2:b2JointEdge;
		public var m_inv_dt:Number;
		public var m_userData;
		public var m_body2:b2Body;

		public static const e_unknownJoint:int = 0;
		public static const e_inactiveLimit:int = 0;
		public static const e_atUpperLimit:int = 2;
		public static const e_atLowerLimit:int = 1;
		public static const e_gearJoint:int = 6;
		public static const e_revoluteJoint:int = 1;
		public static const e_equalLimits:int = 3;
		public static const e_distanceJoint:int = 3;
		public static const e_pulleyJoint:int = 4;
		public static const e_prismaticJoint:int = 2;
		public static const e_mouseJoint:int = 5;

		public function b2Joint(_arg1:b2JointDef){
			m_node1 = new b2JointEdge();
			m_node2 = new b2JointEdge();
			super();
			m_type = _arg1.type;
			m_prev = null;
			m_next = null;
			m_body1 = _arg1.body1;
			m_body2 = _arg1.body2;
			m_collideConnected = _arg1.collideConnected;
			m_islandFlag = false;
			m_userData = _arg1.userData;
		}
		public function GetBody2():b2Body{
			return (m_body2);
		}
		public function GetAnchor1():b2Vec2{
			return (null);
		}
		public function GetAnchor2():b2Vec2{
			return (null);
		}
		public function GetNext():b2Joint{
			return (m_next);
		}
		public function GetType():int{
			return (m_type);
		}
		public function InitVelocityConstraints(_arg1:b2TimeStep):void{
		}
		public function GetReactionTorque():Number{
			return (0);
		}
		public function GetUserData(){
			return (m_userData);
		}
		public function GetReactionForce():b2Vec2{
			return (null);
		}
		public function SolvePositionConstraints():Boolean{
			return (false);
		}
		public function SetUserData(_arg1):void{
			m_userData = _arg1;
		}
		public function GetBody1():b2Body{
			return (m_body1);
		}
		public function SolveVelocityConstraints(_arg1:b2TimeStep):void{
		}
		public function InitPositionConstraints():void{
		}

		public static function Destroy(_arg1:b2Joint, _arg2):void{
		}
		public static function Create(_arg1:b2JointDef, _arg2):b2Joint{
			var _local3:b2Joint;
			switch (_arg1.type){
				case e_distanceJoint:
					_local3 = new b2DistanceJoint((_arg1 as b2DistanceJointDef));
					break;
				case e_mouseJoint:
					_local3 = new b2MouseJoint((_arg1 as b2MouseJointDef));
					break;
				case e_prismaticJoint:
					_local3 = new b2PrismaticJoint((_arg1 as b2PrismaticJointDef));
					break;
				case e_revoluteJoint:
					_local3 = new b2RevoluteJoint((_arg1 as b2RevoluteJointDef));
					break;
				case e_pulleyJoint:
					_local3 = new b2PulleyJoint((_arg1 as b2PulleyJointDef));
					break;
				case e_gearJoint:
					_local3 = new b2GearJoint((_arg1 as b2GearJointDef));
					break;
				default:
					break;
			};
			return (_local3);
		}

	}
}//package Box2D.Dynamics.Joints 

****************

//b2JointDef (Box2D.Dynamics.Joints.b2JointDef)
package Box2D.Dynamics.Joints {
	import Box2D.Dynamics.*;

	public class b2JointDef {

		public var body2:b2Body;
		public var type:int;
		public var userData;
		public var collideConnected:Boolean;
		public var body1:b2Body;

		public function b2JointDef(){
			type = b2Joint.e_unknownJoint;
			userData = null;
			body1 = null;
			body2 = null;
			collideConnected = false;
		}
	}
}//package Box2D.Dynamics.Joints 

****************

//b2JointEdge (Box2D.Dynamics.Joints.b2JointEdge)
package Box2D.Dynamics.Joints {
	import Box2D.Dynamics.*;

	public class b2JointEdge {

		public var other:b2Body;
		public var next:b2JointEdge;
		public var prev:b2JointEdge;
		public var joint:b2Joint;

	}
}//package Box2D.Dynamics.Joints 

****************

//b2MouseJoint (Box2D.Dynamics.Joints.b2MouseJoint)
package Box2D.Dynamics.Joints {
	import Box2D.Dynamics.*;
	import Box2D.Common.Math.*;
	import Box2D.Common.*;

	public class b2MouseJoint extends b2Joint {

		private var K1:b2Mat22;
		private var K:b2Mat22;
		public var m_beta:Number;
		public var m_mass:b2Mat22;
		private var K2:b2Mat22;
		public var m_target:b2Vec2;
		public var m_gamma:Number;
		public var m_impulse:b2Vec2;
		public var m_C:b2Vec2;
		public var m_localAnchor:b2Vec2;
		public var m_maxForce:Number;

		public function b2MouseJoint(_arg1:b2MouseJointDef){
			var _local3:Number;
			K = new b2Mat22();
			K1 = new b2Mat22();
			K2 = new b2Mat22();
			m_localAnchor = new b2Vec2();
			m_target = new b2Vec2();
			m_impulse = new b2Vec2();
			m_mass = new b2Mat22();
			m_C = new b2Vec2();
			super(_arg1);
			m_target.SetV(_arg1.target);
			var _local2:Number = (m_target.x - m_body2.m_xf.position.x);
			_local3 = (m_target.y - m_body2.m_xf.position.y);
			var _local4:b2Mat22 = m_body2.m_xf.R;
			m_localAnchor.x = ((_local2 * _local4.col1.x) + (_local3 * _local4.col1.y));
			m_localAnchor.y = ((_local2 * _local4.col2.x) + (_local3 * _local4.col2.y));
			m_maxForce = _arg1.maxForce;
			m_impulse.SetZero();
			var _local5:Number = m_body2.m_mass;
			var _local6:Number = ((2 * b2Settings.b2_pi) * _arg1.frequencyHz);
			var _local7:Number = (((2 * _local5) * _arg1.dampingRatio) * _local6);
			var _local8:Number = ((_arg1.timeStep * _local5) * (_local6 * _local6));
			m_gamma = (1 / (_local7 + _local8));
			m_beta = (_local8 / (_local7 + _local8));
		}
		public function SetTarget(_arg1:b2Vec2):void{
			if (m_body2.IsSleeping()){
				m_body2.WakeUp();
			};
			m_target = _arg1;
		}
		override public function GetAnchor2():b2Vec2{
			return (m_body2.GetWorldPoint(m_localAnchor));
		}
		override public function InitVelocityConstraints(_arg1:b2TimeStep):void{
			var _local2:b2Body;
			var _local3:b2Mat22;
			var _local4:Number;
			var _local5:Number;
			var _local7:Number;
			var _local8:Number;
			_local2 = m_body2;
			_local3 = _local2.m_xf.R;
			_local4 = (m_localAnchor.x - _local2.m_sweep.localCenter.x);
			_local5 = (m_localAnchor.y - _local2.m_sweep.localCenter.y);
			var _local6:Number = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5));
			_local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5));
			_local4 = _local6;
			_local7 = _local2.m_invMass;
			_local8 = _local2.m_invI;
			K1.col1.x = _local7;
			K1.col2.x = 0;
			K1.col1.y = 0;
			K1.col2.y = _local7;
			K2.col1.x = ((_local8 * _local5) * _local5);
			K2.col2.x = ((-(_local8) * _local4) * _local5);
			K2.col1.y = ((-(_local8) * _local4) * _local5);
			K2.col2.y = ((_local8 * _local4) * _local4);
			K.SetM(K1);
			K.AddM(K2);
			K.col1.x = (K.col1.x + m_gamma);
			K.col2.y = (K.col2.y + m_gamma);
			K.Invert(m_mass);
			m_C.x = ((_local2.m_sweep.c.x + _local4) - m_target.x);
			m_C.y = ((_local2.m_sweep.c.y + _local5) - m_target.y);
			_local2.m_angularVelocity = (_local2.m_angularVelocity * 0.98);
			var _local9:Number = (_arg1.dt * m_impulse.x);
			var _local10:Number = (_arg1.dt * m_impulse.y);
			_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local7 * _local9));
			_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local7 * _local10));
			_local2.m_angularVelocity = (_local2.m_angularVelocity + (_local8 * ((_local4 * _local10) - (_local5 * _local9))));
		}
		override public function GetAnchor1():b2Vec2{
			return (m_target);
		}
		override public function GetReactionTorque():Number{
			return (0);
		}
		override public function GetReactionForce():b2Vec2{
			return (m_impulse);
		}
		override public function SolvePositionConstraints():Boolean{
			return (true);
		}
		override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{
			var _local3:b2Mat22;
			var _local4:Number;
			var _local5:Number;
			var _local2:b2Body = m_body2;
			_local3 = _local2.m_xf.R;
			var _local6:Number = (m_localAnchor.x - _local2.m_sweep.localCenter.x);
			var _local7:Number = (m_localAnchor.y - _local2.m_sweep.localCenter.y);
			_local4 = ((_local3.col1.x * _local6) + (_local3.col2.x * _local7));
			_local7 = ((_local3.col1.y * _local6) + (_local3.col2.y * _local7));
			_local6 = _local4;
			var _local8:Number = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local7));
			var _local9:Number = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local6));
			_local3 = m_mass;
			_local4 = ((_local8 + ((m_beta * _arg1.inv_dt) * m_C.x)) + ((m_gamma * _arg1.dt) * m_impulse.x));
			_local5 = ((_local9 + ((m_beta * _arg1.inv_dt) * m_C.y)) + ((m_gamma * _arg1.dt) * m_impulse.y));
			var _local10:Number = (-(_arg1.inv_dt) * ((_local3.col1.x * _local4) + (_local3.col2.x * _local5)));
			var _local11:Number = (-(_arg1.inv_dt) * ((_local3.col1.y * _local4) + (_local3.col2.y * _local5)));
			var _local12:Number = m_impulse.x;
			var _local13:Number = m_impulse.y;
			m_impulse.x = (m_impulse.x + _local10);
			m_impulse.y = (m_impulse.y + _local11);
			var _local14:Number = m_impulse.Length();
			if (_local14 > m_maxForce){
				m_impulse.Multiply((m_maxForce / _local14));
			};
			_local10 = (m_impulse.x - _local12);
			_local11 = (m_impulse.y - _local13);
			var _local15:Number = (_arg1.dt * _local10);
			var _local16:Number = (_arg1.dt * _local11);
			_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local15));
			_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local16));
			_local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local6 * _local16) - (_local7 * _local15))));
		}

	}
}//package Box2D.Dynamics.Joints 

****************

//b2MouseJointDef (Box2D.Dynamics.Joints.b2MouseJointDef)
package Box2D.Dynamics.Joints {
	import Box2D.Common.Math.*;

	public class b2MouseJointDef extends b2JointDef {

		public var timeStep:Number;
		public var target:b2Vec2;
		public var maxForce:Number;
		public var dampingRatio:Number;
		public var frequencyHz:Number;

		public function b2MouseJointDef(){
			target = new b2Vec2();
			super();
			type = b2Joint.e_mouseJoint;
			maxForce = 0;
			frequencyHz = 5;
			dampingRatio = 0.7;
			timeStep = (1 / 60);
		}
	}
}//package Box2D.Dynamics.Joints 

****************

//b2PrismaticJoint (Box2D.Dynamics.Joints.b2PrismaticJoint)
package Box2D.Dynamics.Joints {
	import Box2D.Dynamics.*;
	import Box2D.Common.Math.*;
	import Box2D.Common.*;

	public class b2PrismaticJoint extends b2Joint {

		public var m_limitForce:Number;
		public var m_lowerTranslation:Number;
		public var m_localXAxis1:b2Vec2;
		public var m_refAngle:Number;
		public var m_torque:Number;
		public var m_motorForce:Number;
		public var m_enableLimit:Boolean;
		public var m_angularMass:Number;
		public var m_maxMotorForce:Number;
		public var m_localYAxis1:b2Vec2;
		public var m_force:Number;
		public var m_motorMass:Number;
		public var m_upperTranslation:Number;
		public var m_localAnchor1:b2Vec2;
		public var m_localAnchor2:b2Vec2;
		public var m_limitState:int;
		public var m_linearMass:Number;
		public var m_motorJacobian:b2Jacobian;
		public var m_limitPositionImpulse:Number;
		public var m_motorSpeed:Number;
		public var m_enableMotor:Boolean;
		public var m_linearJacobian:b2Jacobian;

		public function b2PrismaticJoint(_arg1:b2PrismaticJointDef){
			var _local2:b2Mat22;
			var _local3:Number;
			var _local4:Number;
			m_localAnchor1 = new b2Vec2();
			m_localAnchor2 = new b2Vec2();
			m_localXAxis1 = new b2Vec2();
			m_localYAxis1 = new b2Vec2();
			m_linearJacobian = new b2Jacobian();
			m_motorJacobian = new b2Jacobian();
			super(_arg1);
			m_localAnchor1.SetV(_arg1.localAnchor1);
			m_localAnchor2.SetV(_arg1.localAnchor2);
			m_localXAxis1.SetV(_arg1.localAxis1);
			m_localYAxis1.x = -(m_localXAxis1.y);
			m_localYAxis1.y = m_localXAxis1.x;
			m_refAngle = _arg1.referenceAngle;
			m_linearJacobian.SetZero();
			m_linearMass = 0;
			m_force = 0;
			m_angularMass = 0;
			m_torque = 0;
			m_motorJacobian.SetZero();
			m_motorMass = 0;
			m_motorForce = 0;
			m_limitForce = 0;
			m_limitPositionImpulse = 0;
			m_lowerTranslation = _arg1.lowerTranslation;
			m_upperTranslation = _arg1.upperTranslation;
			m_maxMotorForce = _arg1.maxMotorForce;
			m_motorSpeed = _arg1.motorSpeed;
			m_enableLimit = _arg1.enableLimit;
			m_enableMotor = _arg1.enableMotor;
		}
		override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{
			var _local8:Number;
			var _local15:Number;
			var _local16:Number;
			var _local17:Number;
			var _local18:Number;
			var _local19:Number;
			var _local2:b2Body = m_body1;
			var _local3:b2Body = m_body2;
			var _local4:Number = _local2.m_invMass;
			var _local5:Number = _local3.m_invMass;
			var _local6:Number = _local2.m_invI;
			var _local7:Number = _local3.m_invI;
			var _local9:Number = m_linearJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity);
			var _local10:Number = ((-(_arg1.inv_dt) * m_linearMass) * _local9);
			m_force = (m_force + _local10);
			var _local11:Number = (_arg1.dt * _local10);
			_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_linearJacobian.linear1.x));
			_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_linearJacobian.linear1.y));
			_local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_linearJacobian.angular1));
			_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_linearJacobian.linear2.x));
			_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_linearJacobian.linear2.y));
			_local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_linearJacobian.angular2));
			var _local12:Number = (_local3.m_angularVelocity - _local2.m_angularVelocity);
			var _local13:Number = ((-(_arg1.inv_dt) * m_angularMass) * _local12);
			m_torque = (m_torque + _local13);
			var _local14:Number = (_arg1.dt * _local13);
			_local2.m_angularVelocity = (_local2.m_angularVelocity - (_local6 * _local14));
			_local3.m_angularVelocity = (_local3.m_angularVelocity + (_local7 * _local14));
			if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){
				_local15 = (m_motorJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity) - m_motorSpeed);
				_local16 = ((-(_arg1.inv_dt) * m_motorMass) * _local15);
				_local17 = m_motorForce;
				m_motorForce = b2Math.b2Clamp((m_motorForce + _local16), -(m_maxMotorForce), m_maxMotorForce);
				_local16 = (m_motorForce - _local17);
				_local11 = (_arg1.dt * _local16);
				_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_motorJacobian.linear1.x));
				_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_motorJacobian.linear1.y));
				_local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_motorJacobian.angular1));
				_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_motorJacobian.linear2.x));
				_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_motorJacobian.linear2.y));
				_local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_motorJacobian.angular2));
			};
			if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){
				_local18 = m_motorJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity);
				_local19 = ((-(_arg1.inv_dt) * m_motorMass) * _local18);
				if (m_limitState == e_equalLimits){
					m_limitForce = (m_limitForce + _local19);
				} else {
					if (m_limitState == e_atLowerLimit){
						_local8 = m_limitForce;
						m_limitForce = b2Math.b2Max((m_limitForce + _local19), 0);
						_local19 = (m_limitForce - _local8);
					} else {
						if (m_limitState == e_atUpperLimit){
							_local8 = m_limitForce;
							m_limitForce = b2Math.b2Min((m_limitForce + _local19), 0);
							_local19 = (m_limitForce - _local8);
						};
					};
				};
				_local11 = (_arg1.dt * _local19);
				_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_motorJacobian.linear1.x));
				_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_motorJacobian.linear1.y));
				_local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_motorJacobian.angular1));
				_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_motorJacobian.linear2.x));
				_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_motorJacobian.linear2.y));
				_local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_motorJacobian.angular2));
			};
		}
		override public function GetAnchor1():b2Vec2{
			return (m_body1.GetWorldPoint(m_localAnchor1));
		}
		override public function GetAnchor2():b2Vec2{
			return (m_body2.GetWorldPoint(m_localAnchor2));
		}
		public function GetUpperLimit():Number{
			return (m_upperTranslation);
		}
		public function GetLowerLimit():Number{
			return (m_lowerTranslation);
		}
		public function EnableMotor(_arg1:Boolean):void{
			m_enableMotor = _arg1;
		}
		public function GetJointTranslation():Number{
			var _local3:b2Mat22;
			var _local1:b2Body = m_body1;
			var _local2:b2Body = m_body2;
			var _local4:b2Vec2 = _local1.GetWorldPoint(m_localAnchor1);
			var _local5:b2Vec2 = _local2.GetWorldPoint(m_localAnchor2);
			var _local6:Number = (_local5.x - _local4.x);
			var _local7:Number = (_local5.y - _local4.y);
			var _local8:b2Vec2 = _local1.GetWorldVector(m_localXAxis1);
			var _local9:Number = ((_local8.x * _local6) + (_local8.y * _local7));
			return (_local9);
		}
		public function GetMotorSpeed():Number{
			return (m_motorSpeed);
		}
		override public function GetReactionForce():b2Vec2{
			var _local1:b2Mat22 = m_body1.m_xf.R;
			var _local2:Number = (m_limitForce * ((_local1.col1.x * m_localXAxis1.x) + (_local1.col2.x * m_localXAxis1.y)));
			var _local3:Number = (m_limitForce * ((_local1.col1.y * m_localXAxis1.x) + (_local1.col2.y * m_localXAxis1.y)));
			var _local4:Number = (m_force * ((_local1.col1.x * m_localYAxis1.x) + (_local1.col2.x * m_localYAxis1.y)));
			var _local5:Number = (m_force * ((_local1.col1.y * m_localYAxis1.x) + (_local1.col2.y * m_localYAxis1.y)));
			return (new b2Vec2(((m_limitForce * _local2) + (m_force * _local4)), ((m_limitForce * _local3) + (m_force * _local5))));
		}
		override public function SolvePositionConstraints():Boolean{
			var _local1:Number;
			var _local2:Number;
			var _local9:b2Mat22;
			var _local10:Number;
			var _local29:Number;
			var _local30:Number;
			var _local31:Number;
			var _local32:Number;
			var _local3:b2Body = m_body1;
			var _local4:b2Body = m_body2;
			var _local5:Number = _local3.m_invMass;
			var _local6:Number = _local4.m_invMass;
			var _local7:Number = _local3.m_invI;
			var _local8:Number = _local4.m_invI;
			_local9 = _local3.m_xf.R;
			var _local11:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x);
			var _local12:Number = (m_localAnchor1.y - _local3.m_sweep.localCenter.y);
			_local10 = ((_local9.col1.x * _local11) + (_local9.col2.x * _local12));
			_local12 = ((_local9.col1.y * _local11) + (_local9.col2.y * _local12));
			_local11 = _local10;
			_local9 = _local4.m_xf.R;
			var _local13:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x);
			var _local14:Number = (m_localAnchor2.y - _local4.m_sweep.localCenter.y);
			_local10 = ((_local9.col1.x * _local13) + (_local9.col2.x * _local14));
			_local14 = ((_local9.col1.y * _local13) + (_local9.col2.y * _local14));
			_local13 = _local10;
			var _local15:Number = (_local3.m_sweep.c.x + _local11);
			var _local16:Number = (_local3.m_sweep.c.y + _local12);
			var _local17:Number = (_local4.m_sweep.c.x + _local13);
			var _local18:Number = (_local4.m_sweep.c.y + _local14);
			var _local19:Number = (_local17 - _local15);
			var _local20:Number = (_local18 - _local16);
			_local9 = _local3.m_xf.R;
			var _local21:Number = ((_local9.col1.x * m_localYAxis1.x) + (_local9.col2.x * m_localYAxis1.y));
			var _local22:Number = ((_local9.col1.y * m_localYAxis1.x) + (_local9.col2.y * m_localYAxis1.y));
			var _local23:Number = ((_local21 * _local19) + (_local22 * _local20));
			_local23 = b2Math.b2Clamp(_local23, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection);
			var _local24:Number = (-(m_linearMass) * _local23);
			_local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local5 * _local24) * m_linearJacobian.linear1.x));
			_local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local5 * _local24) * m_linearJacobian.linear1.y));
			_local3.m_sweep.a = (_local3.m_sweep.a + ((_local7 * _local24) * m_linearJacobian.angular1));
			_local4.m_sweep.c.x = (_local4.m_sweep.c.x + ((_local6 * _local24) * m_linearJacobian.linear2.x));
			_local4.m_sweep.c.y = (_local4.m_sweep.c.y + ((_local6 * _local24) * m_linearJacobian.linear2.y));
			_local4.m_sweep.a = (_local4.m_sweep.a + ((_local8 * _local24) * m_linearJacobian.angular2));
			var _local25:Number = b2Math.b2Abs(_local23);
			var _local26:Number = ((_local4.m_sweep.a - _local3.m_sweep.a) - m_refAngle);
			_local26 = b2Math.b2Clamp(_local26, -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection);
			var _local27:Number = (-(m_angularMass) * _local26);
			_local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * _local27));
			_local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * _local27));
			_local3.SynchronizeTransform();
			_local4.SynchronizeTransform();
			var _local28:Number = b2Math.b2Abs(_local26);
			if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){
				_local9 = _local3.m_xf.R;
				_local11 = (m_localAnchor1.x - _local3.m_sweep.localCenter.x);
				_local12 = (m_localAnchor1.y - _local3.m_sweep.localCenter.y);
				_local10 = ((_local9.col1.x * _local11) + (_local9.col2.x * _local12));
				_local12 = ((_local9.col1.y * _local11) + (_local9.col2.y * _local12));
				_local11 = _local10;
				_local9 = _local4.m_xf.R;
				_local13 = (m_localAnchor2.x - _local4.m_sweep.localCenter.x);
				_local14 = (m_localAnchor2.y - _local4.m_sweep.localCenter.y);
				_local10 = ((_local9.col1.x * _local13) + (_local9.col2.x * _local14));
				_local14 = ((_local9.col1.y * _local13) + (_local9.col2.y * _local14));
				_local13 = _local10;
				_local15 = (_local3.m_sweep.c.x + _local11);
				_local16 = (_local3.m_sweep.c.y + _local12);
				_local17 = (_local4.m_sweep.c.x + _local13);
				_local18 = (_local4.m_sweep.c.y + _local14);
				_local19 = (_local17 - _local15);
				_local20 = (_local18 - _local16);
				_local9 = _local3.m_xf.R;
				_local29 = ((_local9.col1.x * m_localXAxis1.x) + (_local9.col2.x * m_localXAxis1.y));
				_local30 = ((_local9.col1.y * m_localXAxis1.x) + (_local9.col2.y * m_localXAxis1.y));
				_local31 = ((_local29 * _local19) + (_local30 * _local20));
				_local32 = 0;
				if (m_limitState == e_equalLimits){
					_local1 = b2Math.b2Clamp(_local31, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection);
					_local32 = (-(m_motorMass) * _local1);
					_local25 = b2Math.b2Max(_local25, b2Math.b2Abs(_local26));
				} else {
					if (m_limitState == e_atLowerLimit){
						_local1 = (_local31 - m_lowerTranslation);
						_local25 = b2Math.b2Max(_local25, -(_local1));
						_local1 = b2Math.b2Clamp((_local1 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0);
						_local32 = (-(m_motorMass) * _local1);
						_local2 = m_limitPositionImpulse;
						m_limitPositionImpulse = b2Math.b2Max((m_limitPositionImpulse + _local32), 0);
						_local32 = (m_limitPositionImpulse - _local2);
					} else {
						if (m_limitState == e_atUpperLimit){
							_local1 = (_local31 - m_upperTranslation);
							_local25 = b2Math.b2Max(_local25, _local1);
							_local1 = b2Math.b2Clamp((_local1 - b2Settings.b2_linearSlop), 0, b2Settings.b2_maxLinearCorrection);
							_local32 = (-(m_motorMass) * _local1);
							_local2 = m_limitPositionImpulse;
							m_limitPositionImpulse = b2Math.b2Min((m_limitPositionImpulse + _local32), 0);
							_local32 = (m_limitPositionImpulse - _local2);
						};
					};
				};
				_local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local5 * _local32) * m_motorJacobian.linear1.x));
				_local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local5 * _local32) * m_motorJacobian.linear1.y));
				_local3.m_sweep.a = (_local3.m_sweep.a + ((_local7 * _local32) * m_motorJacobian.angular1));
				_local4.m_sweep.c.x = (_local4.m_sweep.c.x + ((_local6 * _local32) * m_motorJacobian.linear2.x));
				_local4.m_sweep.c.y = (_local4.m_sweep.c.y + ((_local6 * _local32) * m_motorJacobian.linear2.y));
				_local4.m_sweep.a = (_local4.m_sweep.a + ((_local8 * _local32) * m_motorJacobian.angular2));
				_local3.SynchronizeTransform();
				_local4.SynchronizeTransform();
			};
			return ((((_local25 <= b2Settings.b2_linearSlop)) && ((_local28 <= b2Settings.b2_angularSlop))));
		}
		public function SetMotorSpeed(_arg1:Number):void{
			m_motorSpeed = _arg1;
		}
		public function GetJointSpeed():Number{
			var _local3:b2Mat22;
			var _local1:b2Body = m_body1;
			var _local2:b2Body = m_body2;
			_local3 = _local1.m_xf.R;
			var _local4:Number = (m_localAnchor1.x - _local1.m_sweep.localCenter.x);
			var _local5:Number = (m_localAnchor1.y - _local1.m_sweep.localCenter.y);
			var _local6:Number = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5));
			_local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5));
			_local4 = _local6;
			_local3 = _local2.m_xf.R;
			var _local7:Number = (m_localAnchor2.x - _local2.m_sweep.localCenter.x);
			var _local8:Number = (m_localAnchor2.y - _local2.m_sweep.localCenter.y);
			_local6 = ((_local3.col1.x * _local7) + (_local3.col2.x * _local8));
			_local8 = ((_local3.col1.y * _local7) + (_local3.col2.y * _local8));
			_local7 = _local6;
			var _local9:Number = (_local1.m_sweep.c.x + _local4);
			var _local10:Number = (_local1.m_sweep.c.y + _local5);
			var _local11:Number = (_local2.m_sweep.c.x + _local7);
			var _local12:Number = (_local2.m_sweep.c.y + _local8);
			var _local13:Number = (_local11 - _local9);
			var _local14:Number = (_local12 - _local10);
			var _local15:b2Vec2 = _local1.GetWorldVector(m_localXAxis1);
			var _local16:b2Vec2 = _local1.m_linearVelocity;
			var _local17:b2Vec2 = _local2.m_linearVelocity;
			var _local18:Number = _local1.m_angularVelocity;
			var _local19:Number = _local2.m_angularVelocity;
			var _local20:Number = (((_local13 * (-(_local18) * _local15.y)) + (_local14 * (_local18 * _local15.x))) + ((_local15.x * (((_local17.x + (-(_local19) * _local8)) - _local16.x) - (-(_local18) * _local5))) + (_local15.y * (((_local17.y + (_local19 * _local7)) - _local16.y) - (_local18 * _local4)))));
			return (_local20);
		}
		override public function InitVelocityConstraints(_arg1:b2TimeStep):void{
			var _local4:b2Mat22;
			var _local5:Number;
			var _local18:Number;
			var _local19:Number;
			var _local20:Number;
			var _local21:Number;
			var _local22:Number;
			var _local23:Number;
			var _local24:Number;
			var _local25:Number;
			var _local26:Number;
			var _local27:Number;
			var _local28:Number;
			var _local2:b2Body = m_body1;
			var _local3:b2Body = m_body2;
			_local4 = _local2.m_xf.R;
			var _local6:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x);
			var _local7:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y);
			_local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7));
			_local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7));
			_local6 = _local5;
			_local4 = _local3.m_xf.R;
			var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x);
			var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y);
			_local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9));
			_local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9));
			_local8 = _local5;
			var _local10:Number = _local2.m_invMass;
			var _local11:Number = _local3.m_invMass;
			var _local12:Number = _local2.m_invI;
			var _local13:Number = _local3.m_invI;
			_local4 = _local2.m_xf.R;
			var _local14:Number = ((_local4.col1.x * m_localYAxis1.x) + (_local4.col2.x * m_localYAxis1.y));
			var _local15:Number = ((_local4.col1.y * m_localYAxis1.x) + (_local4.col2.y * m_localYAxis1.y));
			var _local16:Number = ((_local3.m_sweep.c.x + _local8) - _local2.m_sweep.c.x);
			var _local17:Number = ((_local3.m_sweep.c.y + _local9) - _local2.m_sweep.c.y);
			m_linearJacobian.linear1.x = -(_local14);
			m_linearJacobian.linear1.y = -(_local15);
			m_linearJacobian.linear2.x = _local14;
			m_linearJacobian.linear2.y = _local15;
			m_linearJacobian.angular1 = -(((_local16 * _local15) - (_local17 * _local14)));
			m_linearJacobian.angular2 = ((_local8 * _local15) - (_local9 * _local14));
			m_linearMass = (((_local10 + ((_local12 * m_linearJacobian.angular1) * m_linearJacobian.angular1)) + _local11) + ((_local13 * m_linearJacobian.angular2) * m_linearJacobian.angular2));
			m_linearMass = (1 / m_linearMass);
			m_angularMass = (_local12 + _local13);
			if (m_angularMass > Number.MIN_VALUE){
				m_angularMass = (1 / m_angularMass);
			};
			if (((m_enableLimit) || (m_enableMotor))){
				_local4 = _local2.m_xf.R;
				_local18 = ((_local4.col1.x * m_localXAxis1.x) + (_local4.col2.x * m_localXAxis1.y));
				_local19 = ((_local4.col1.y * m_localXAxis1.x) + (_local4.col2.y * m_localXAxis1.y));
				m_motorJacobian.linear1.x = -(_local18);
				m_motorJacobian.linear1.y = -(_local19);
				m_motorJacobian.linear2.x = _local18;
				m_motorJacobian.linear2.y = _local19;
				m_motorJacobian.angular1 = -(((_local16 * _local19) - (_local17 * _local18)));
				m_motorJacobian.angular2 = ((_local8 * _local19) - (_local9 * _local18));
				m_motorMass = (((_local10 + ((_local12 * m_motorJacobian.angular1) * m_motorJacobian.angular1)) + _local11) + ((_local13 * m_motorJacobian.angular2) * m_motorJacobian.angular2));
				m_motorMass = (1 / m_motorMass);
				if (m_enableLimit){
					_local20 = (_local16 - _local6);
					_local21 = (_local17 - _local7);
					_local22 = ((_local18 * _local20) + (_local19 * _local21));
					if (b2Math.b2Abs((m_upperTranslation - m_lowerTranslation)) < (2 * b2Settings.b2_linearSlop)){
						m_limitState = e_equalLimits;
					} else {
						if (_local22 <= m_lowerTranslation){
							if (m_limitState != e_atLowerLimit){
								m_limitForce = 0;
							};
							m_limitState = e_atLowerLimit;
						} else {
							if (_local22 >= m_upperTranslation){
								if (m_limitState != e_atUpperLimit){
									m_limitForce = 0;
								};
								m_limitState = e_atUpperLimit;
							} else {
								m_limitState = e_inactiveLimit;
								m_limitForce = 0;
							};
						};
					};
				};
			};
			if (m_enableMotor == false){
				m_motorForce = 0;
			};
			if (m_enableLimit == false){
				m_limitForce = 0;
			};
			if (_arg1.warmStarting){
				_local23 = (_arg1.dt * ((m_force * m_linearJacobian.linear1.x) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear1.x)));
				_local24 = (_arg1.dt * ((m_force * m_linearJacobian.linear1.y) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear1.y)));
				_local25 = (_arg1.dt * ((m_force * m_linearJacobian.linear2.x) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear2.x)));
				_local26 = (_arg1.dt * ((m_force * m_linearJacobian.linear2.y) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear2.y)));
				_local27 = (_arg1.dt * (((m_force * m_linearJacobian.angular1) - m_torque) + ((m_motorForce + m_limitForce) * m_motorJacobian.angular1)));
				_local28 = (_arg1.dt * (((m_force * m_linearJacobian.angular2) + m_torque) + ((m_motorForce + m_limitForce) * m_motorJacobian.angular2)));
				_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local10 * _local23));
				_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local10 * _local24));
				_local2.m_angularVelocity = (_local2.m_angularVelocity + (_local12 * _local27));
				_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local11 * _local25));
				_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local11 * _local26));
				_local3.m_angularVelocity = (_local3.m_angularVelocity + (_local13 * _local28));
			} else {
				m_force = 0;
				m_torque = 0;
				m_limitForce = 0;
				m_motorForce = 0;
			};
			m_limitPositionImpulse = 0;
		}
		public function GetMotorForce():Number{
			return (m_motorForce);
		}
		public function EnableLimit(_arg1:Boolean):void{
			m_enableLimit = _arg1;
		}
		public function SetMaxMotorForce(_arg1:Number):void{
			m_maxMotorForce = _arg1;
		}
		override public function GetReactionTorque():Number{
			return (m_torque);
		}
		public function IsLimitEnabled():Boolean{
			return (m_enableLimit);
		}
		public function IsMotorEnabled():Boolean{
			return (m_enableMotor);
		}
		public function SetLimits(_arg1:Number, _arg2:Number):void{
			m_lowerTranslation = _arg1;
			m_upperTranslation = _arg2;
		}

	}
}//package Box2D.Dynamics.Joints 

****************

//b2PrismaticJointDef (Box2D.Dynamics.Joints.b2PrismaticJointDef)
package Box2D.Dynamics.Joints {
	import Box2D.Dynamics.*;
	import Box2D.Common.Math.*;

	public class b2PrismaticJointDef extends b2JointDef {

		public var motorSpeed:Number;
		public var localAxis1:b2Vec2;
		public var referenceAngle:Number;
		public var upperTranslation:Number;
		public var localAnchor1:b2Vec2;
		public var localAnchor2:b2Vec2;
		public var enableLimit:Boolean;
		public var enableMotor:Boolean;
		public var maxMotorForce:Number;
		public var lowerTranslation:Number;

		public function b2PrismaticJointDef(){
			localAnchor1 = new b2Vec2();
			localAnchor2 = new b2Vec2();
			localAxis1 = new b2Vec2();
			super();
			type = b2Joint.e_prismaticJoint;
			localAxis1.Set(1, 0);
			referenceAngle = 0;
			enableLimit = false;
			lowerTranslation = 0;
			upperTranslation = 0;
			enableMotor = false;
			maxMotorForce = 0;
			motorSpeed = 0;
		}
		public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{
			body1 = _arg1;
			body2 = _arg2;
			localAnchor1 = body1.GetLocalPoint(_arg3);
			localAnchor2 = body2.GetLocalPoint(_arg3);
			localAxis1 = body1.GetLocalVector(_arg4);
			referenceAngle = (body2.GetAngle() - body1.GetAngle());
		}

	}
}//package Box2D.Dynamics.Joints 

****************

//b2PulleyJoint (Box2D.Dynamics.Joints.b2PulleyJoint)
package Box2D.Dynamics.Joints {
	import Box2D.Dynamics.*;
	import Box2D.Common.Math.*;
	import Box2D.Common.*;

	public class b2PulleyJoint extends b2Joint {

		public var m_limitState1:int;
		public var m_limitState2:int;
		public var m_ground:b2Body;
		public var m_maxLength2:Number;
		public var m_maxLength1:Number;
		public var m_limitPositionImpulse1:Number;
		public var m_limitPositionImpulse2:Number;
		public var m_force:Number;
		public var m_constant:Number;
		public var m_positionImpulse:Number;
		public var m_state:int;
		public var m_ratio:Number;
		public var m_groundAnchor1:b2Vec2;
		public var m_groundAnchor2:b2Vec2;
		public var m_localAnchor1:b2Vec2;
		public var m_localAnchor2:b2Vec2;
		public var m_limitMass1:Number;
		public var m_limitMass2:Number;
		public var m_pulleyMass:Number;
		public var m_u1:b2Vec2;
		public var m_limitForce1:Number;
		public var m_limitForce2:Number;
		public var m_u2:b2Vec2;

		public static const b2_minPulleyLength:Number = 2;

		public function b2PulleyJoint(_arg1:b2PulleyJointDef){
			var _local2:b2Mat22;
			var _local3:Number;
			var _local4:Number;
			m_groundAnchor1 = new b2Vec2();
			m_groundAnchor2 = new b2Vec2();
			m_localAnchor1 = new b2Vec2();
			m_localAnchor2 = new b2Vec2();
			m_u1 = new b2Vec2();
			m_u2 = new b2Vec2();
			super(_arg1);
			m_ground = m_body1.m_world.m_groundBody;
			m_groundAnchor1.x = (_arg1.groundAnchor1.x - m_ground.m_xf.position.x);
			m_groundAnchor1.y = (_arg1.groundAnchor1.y - m_ground.m_xf.position.y);
			m_groundAnchor2.x = (_arg1.groundAnchor2.x - m_ground.m_xf.position.x);
			m_groundAnchor2.y = (_arg1.groundAnchor2.y - m_ground.m_xf.position.y);
			m_localAnchor1.SetV(_arg1.localAnchor1);
			m_localAnchor2.SetV(_arg1.localAnchor2);
			m_ratio = _arg1.ratio;
			m_constant = (_arg1.length1 + (m_ratio * _arg1.length2));
			m_maxLength1 = b2Math.b2Min(_arg1.maxLength1, (m_constant - (m_ratio * b2_minPulleyLength)));
			m_maxLength2 = b2Math.b2Min(_arg1.maxLength2, ((m_constant - b2_minPulleyLength) / m_ratio));
			m_force = 0;
			m_limitForce1 = 0;
			m_limitForce2 = 0;
		}
		public function GetGroundAnchor2():b2Vec2{
			var _local1:b2Vec2 = m_ground.m_xf.position.Copy();
			_local1.Add(m_groundAnchor2);
			return (_local1);
		}
		override public function GetAnchor1():b2Vec2{
			return (m_body1.GetWorldPoint(m_localAnchor1));
		}
		override public function GetAnchor2():b2Vec2{
			return (m_body2.GetWorldPoint(m_localAnchor2));
		}
		override public function GetReactionForce():b2Vec2{
			var _local1:b2Vec2 = m_u2.Copy();
			_local1.Multiply(m_force);
			return (_local1);
		}
		override public function SolvePositionConstraints():Boolean{
			var _local3:b2Mat22;
			var _local8:Number;
			var _local9:Number;
			var _local10:Number;
			var _local11:Number;
			var _local12:Number;
			var _local13:Number;
			var _local14:Number;
			var _local15:Number;
			var _local16:Number;
			var _local17:Number;
			var _local18:Number;
			var _local19:Number;
			var _local20:Number;
			var _local21:Number;
			var _local22:Number;
			var _local1:b2Body = m_body1;
			var _local2:b2Body = m_body2;
			var _local4:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x);
			var _local5:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y);
			var _local6:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x);
			var _local7:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y);
			var _local23:Number = 0;
			if (m_state == e_atUpperLimit){
				_local3 = _local1.m_xf.R;
				_local8 = (m_localAnchor1.x - _local1.m_sweep.localCenter.x);
				_local9 = (m_localAnchor1.y - _local1.m_sweep.localCenter.y);
				_local22 = ((_local3.col1.x * _local8) + (_local3.col2.x * _local9));
				_local9 = ((_local3.col1.y * _local8) + (_local3.col2.y * _local9));
				_local8 = _local22;
				_local3 = _local2.m_xf.R;
				_local10 = (m_localAnchor2.x - _local2.m_sweep.localCenter.x);
				_local11 = (m_localAnchor2.y - _local2.m_sweep.localCenter.y);
				_local22 = ((_local3.col1.x * _local10) + (_local3.col2.x * _local11));
				_local11 = ((_local3.col1.y * _local10) + (_local3.col2.y * _local11));
				_local10 = _local22;
				_local12 = (_local1.m_sweep.c.x + _local8);
				_local13 = (_local1.m_sweep.c.y + _local9);
				_local14 = (_local2.m_sweep.c.x + _local10);
				_local15 = (_local2.m_sweep.c.y + _local11);
				m_u1.Set((_local12 - _local4), (_local13 - _local5));
				m_u2.Set((_local14 - _local6), (_local15 - _local7));
				_local16 = m_u1.Length();
				_local17 = m_u2.Length();
				if (_local16 > b2Settings.b2_linearSlop){
					m_u1.Multiply((1 / _local16));
				} else {
					m_u1.SetZero();
				};
				if (_local17 > b2Settings.b2_linearSlop){
					m_u2.Multiply((1 / _local17));
				} else {
					m_u2.SetZero();
				};
				_local18 = ((m_constant - _local16) - (m_ratio * _local17));
				_local23 = b2Math.b2Max(_local23, -(_local18));
				_local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0);
				_local19 = (-(m_pulleyMass) * _local18);
				_local20 = m_positionImpulse;
				m_positionImpulse = b2Math.b2Max(0, (m_positionImpulse + _local19));
				_local19 = (m_positionImpulse - _local20);
				_local12 = (-(_local19) * m_u1.x);
				_local13 = (-(_local19) * m_u1.y);
				_local14 = ((-(m_ratio) * _local19) * m_u2.x);
				_local15 = ((-(m_ratio) * _local19) * m_u2.y);
				_local1.m_sweep.c.x = (_local1.m_sweep.c.x + (_local1.m_invMass * _local12));
				_local1.m_sweep.c.y = (_local1.m_sweep.c.y + (_local1.m_invMass * _local13));
				_local1.m_sweep.a = (_local1.m_sweep.a + (_local1.m_invI * ((_local8 * _local13) - (_local9 * _local12))));
				_local2.m_sweep.c.x = (_local2.m_sweep.c.x + (_local2.m_invMass * _local14));
				_local2.m_sweep.c.y = (_local2.m_sweep.c.y + (_local2.m_invMass * _local15));
				_local2.m_sweep.a = (_local2.m_sweep.a + (_local2.m_invI * ((_local10 * _local15) - (_local11 * _local14))));
				_local1.SynchronizeTransform();
				_local2.SynchronizeTransform();
			};
			if (m_limitState1 == e_atUpperLimit){
				_local3 = _local1.m_xf.R;
				_local8 = (m_localAnchor1.x - _local1.m_sweep.localCenter.x);
				_local9 = (m_localAnchor1.y - _local1.m_sweep.localCenter.y);
				_local22 = ((_local3.col1.x * _local8) + (_local3.col2.x * _local9));
				_local9 = ((_local3.col1.y * _local8) + (_local3.col2.y * _local9));
				_local8 = _local22;
				_local12 = (_local1.m_sweep.c.x + _local8);
				_local13 = (_local1.m_sweep.c.y + _local9);
				m_u1.Set((_local12 - _local4), (_local13 - _local5));
				_local16 = m_u1.Length();
				if (_local16 > b2Settings.b2_linearSlop){
					m_u1.x = (m_u1.x * (1 / _local16));
					m_u1.y = (m_u1.y * (1 / _local16));
				} else {
					m_u1.SetZero();
				};
				_local18 = (m_maxLength1 - _local16);
				_local23 = b2Math.b2Max(_local23, -(_local18));
				_local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0);
				_local19 = (-(m_limitMass1) * _local18);
				_local21 = m_limitPositionImpulse1;
				m_limitPositionImpulse1 = b2Math.b2Max(0, (m_limitPositionImpulse1 + _local19));
				_local19 = (m_limitPositionImpulse1 - _local21);
				_local12 = (-(_local19) * m_u1.x);
				_local13 = (-(_local19) * m_u1.y);
				_local1.m_sweep.c.x = (_local1.m_sweep.c.x + (_local1.m_invMass * _local12));
				_local1.m_sweep.c.y = (_local1.m_sweep.c.y + (_local1.m_invMass * _local13));
				_local1.m_sweep.a = (_local1.m_sweep.a + (_local1.m_invI * ((_local8 * _local13) - (_local9 * _local12))));
				_local1.SynchronizeTransform();
			};
			if (m_limitState2 == e_atUpperLimit){
				_local3 = _local2.m_xf.R;
				_local10 = (m_localAnchor2.x - _local2.m_sweep.localCenter.x);
				_local11 = (m_localAnchor2.y - _local2.m_sweep.localCenter.y);
				_local22 = ((_local3.col1.x * _local10) + (_local3.col2.x * _local11));
				_local11 = ((_local3.col1.y * _local10) + (_local3.col2.y * _local11));
				_local10 = _local22;
				_local14 = (_local2.m_sweep.c.x + _local10);
				_local15 = (_local2.m_sweep.c.y + _local11);
				m_u2.Set((_local14 - _local6), (_local15 - _local7));
				_local17 = m_u2.Length();
				if (_local17 > b2Settings.b2_linearSlop){
					m_u2.x = (m_u2.x * (1 / _local17));
					m_u2.y = (m_u2.y * (1 / _local17));
				} else {
					m_u2.SetZero();
				};
				_local18 = (m_maxLength2 - _local17);
				_local23 = b2Math.b2Max(_local23, -(_local18));
				_local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0);
				_local19 = (-(m_limitMass2) * _local18);
				_local21 = m_limitPositionImpulse2;
				m_limitPositionImpulse2 = b2Math.b2Max(0, (m_limitPositionImpulse2 + _local19));
				_local19 = (m_limitPositionImpulse2 - _local21);
				_local14 = (-(_local19) * m_u2.x);
				_local15 = (-(_local19) * m_u2.y);
				_local2.m_sweep.c.x = (_local2.m_sweep.c.x + (_local2.m_invMass * _local14));
				_local2.m_sweep.c.y = (_local2.m_sweep.c.y + (_local2.m_invMass * _local15));
				_local2.m_sweep.a = (_local2.m_sweep.a + (_local2.m_invI * ((_local10 * _local15) - (_local11 * _local14))));
				_local2.SynchronizeTransform();
			};
			return ((_local23 < b2Settings.b2_linearSlop));
		}
		override public function InitVelocityConstraints(_arg1:b2TimeStep):void{
			var _local4:b2Mat22;
			var _local23:Number;
			var _local24:Number;
			var _local25:Number;
			var _local26:Number;
			var _local2:b2Body = m_body1;
			var _local3:b2Body = m_body2;
			_local4 = _local2.m_xf.R;
			var _local5:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x);
			var _local6:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y);
			var _local7:Number = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6));
			_local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6));
			_local5 = _local7;
			_local4 = _local3.m_xf.R;
			var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x);
			var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y);
			_local7 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9));
			_local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9));
			_local8 = _local7;
			var _local10:Number = (_local2.m_sweep.c.x + _local5);
			var _local11:Number = (_local2.m_sweep.c.y + _local6);
			var _local12:Number = (_local3.m_sweep.c.x + _local8);
			var _local13:Number = (_local3.m_sweep.c.y + _local9);
			var _local14:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x);
			var _local15:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y);
			var _local16:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x);
			var _local17:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y);
			m_u1.Set((_local10 - _local14), (_local11 - _local15));
			m_u2.Set((_local12 - _local16), (_local13 - _local17));
			var _local18:Number = m_u1.Length();
			var _local19:Number = m_u2.Length();
			if (_local18 > b2Settings.b2_linearSlop){
				m_u1.Multiply((1 / _local18));
			} else {
				m_u1.SetZero();
			};
			if (_local19 > b2Settings.b2_linearSlop){
				m_u2.Multiply((1 / _local19));
			} else {
				m_u2.SetZero();
			};
			var _local20:Number = ((m_constant - _local18) - (m_ratio * _local19));
			if (_local20 > 0){
				m_state = e_inactiveLimit;
				m_force = 0;
			} else {
				m_state = e_atUpperLimit;
				m_positionImpulse = 0;
			};
			if (_local18 < m_maxLength1){
				m_limitState1 = e_inactiveLimit;
				m_limitForce1 = 0;
			} else {
				m_limitState1 = e_atUpperLimit;
				m_limitPositionImpulse1 = 0;
			};
			if (_local19 < m_maxLength2){
				m_limitState2 = e_inactiveLimit;
				m_limitForce2 = 0;
			} else {
				m_limitState2 = e_atUpperLimit;
				m_limitPositionImpulse2 = 0;
			};
			var _local21:Number = ((_local5 * m_u1.y) - (_local6 * m_u1.x));
			var _local22:Number = ((_local8 * m_u2.y) - (_local9 * m_u2.x));
			m_limitMass1 = (_local2.m_invMass + ((_local2.m_invI * _local21) * _local21));
			m_limitMass2 = (_local3.m_invMass + ((_local3.m_invI * _local22) * _local22));
			m_pulleyMass = (m_limitMass1 + ((m_ratio * m_ratio) * m_limitMass2));
			m_limitMass1 = (1 / m_limitMass1);
			m_limitMass2 = (1 / m_limitMass2);
			m_pulleyMass = (1 / m_pulleyMass);
			if (_arg1.warmStarting){
				_local23 = ((_arg1.dt * (-(m_force) - m_limitForce1)) * m_u1.x);
				_local24 = ((_arg1.dt * (-(m_force) - m_limitForce1)) * m_u1.y);
				_local25 = ((_arg1.dt * ((-(m_ratio) * m_force) - m_limitForce2)) * m_u2.x);
				_local26 = ((_arg1.dt * ((-(m_ratio) * m_force) - m_limitForce2)) * m_u2.y);
				_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local23));
				_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local24));
				_local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local24) - (_local6 * _local23))));
				_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local25));
				_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local26));
				_local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local26) - (_local9 * _local25))));
			} else {
				m_force = 0;
				m_limitForce1 = 0;
				m_limitForce2 = 0;
			};
		}
		override public function GetReactionTorque():Number{
			return (0);
		}
		public function GetRatio():Number{
			return (m_ratio);
		}
		override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{
			var _local4:b2Mat22;
			var _local10:Number;
			var _local11:Number;
			var _local12:Number;
			var _local13:Number;
			var _local14:Number;
			var _local15:Number;
			var _local16:Number;
			var _local17:Number;
			var _local18:Number;
			var _local19:Number;
			var _local20:Number;
			var _local2:b2Body = m_body1;
			var _local3:b2Body = m_body2;
			_local4 = _local2.m_xf.R;
			var _local5:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x);
			var _local6:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y);
			var _local7:Number = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6));
			_local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6));
			_local5 = _local7;
			_local4 = _local3.m_xf.R;
			var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x);
			var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y);
			_local7 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9));
			_local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9));
			_local8 = _local7;
			if (m_state == e_atUpperLimit){
				_local10 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local6));
				_local11 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local5));
				_local12 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9));
				_local13 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8));
				_local18 = (-(((m_u1.x * _local10) + (m_u1.y * _local11))) - (m_ratio * ((m_u2.x * _local12) + (m_u2.y * _local13))));
				_local19 = ((-(_arg1.inv_dt) * m_pulleyMass) * _local18);
				_local20 = m_force;
				m_force = b2Math.b2Max(0, (m_force + _local19));
				_local19 = (m_force - _local20);
				_local14 = ((-(_arg1.dt) * _local19) * m_u1.x);
				_local15 = ((-(_arg1.dt) * _local19) * m_u1.y);
				_local16 = (((-(_arg1.dt) * m_ratio) * _local19) * m_u2.x);
				_local17 = (((-(_arg1.dt) * m_ratio) * _local19) * m_u2.y);
				_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local14));
				_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local15));
				_local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local15) - (_local6 * _local14))));
				_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local16));
				_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local17));
				_local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local17) - (_local9 * _local16))));
			};
			if (m_limitState1 == e_atUpperLimit){
				_local10 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local6));
				_local11 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local5));
				_local18 = -(((m_u1.x * _local10) + (m_u1.y * _local11)));
				_local19 = ((-(_arg1.inv_dt) * m_limitMass1) * _local18);
				_local20 = m_limitForce1;
				m_limitForce1 = b2Math.b2Max(0, (m_limitForce1 + _local19));
				_local19 = (m_limitForce1 - _local20);
				_local14 = ((-(_arg1.dt) * _local19) * m_u1.x);
				_local15 = ((-(_arg1.dt) * _local19) * m_u1.y);
				_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local14));
				_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local15));
				_local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local15) - (_local6 * _local14))));
			};
			if (m_limitState2 == e_atUpperLimit){
				_local12 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9));
				_local13 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8));
				_local18 = -(((m_u2.x * _local12) + (m_u2.y * _local13)));
				_local19 = ((-(_arg1.inv_dt) * m_limitMass2) * _local18);
				_local20 = m_limitForce2;
				m_limitForce2 = b2Math.b2Max(0, (m_limitForce2 + _local19));
				_local19 = (m_limitForce2 - _local20);
				_local16 = ((-(_arg1.dt) * _local19) * m_u2.x);
				_local17 = ((-(_arg1.dt) * _local19) * m_u2.y);
				_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local16));
				_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local17));
				_local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local17) - (_local9 * _local16))));
			};
		}
		public function GetLength1():Number{
			var _local1:b2Vec2 = m_body1.GetWorldPoint(m_localAnchor1);
			var _local2:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x);
			var _local3:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y);
			var _local4:Number = (_local1.x - _local2);
			var _local5:Number = (_local1.y - _local3);
			return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5))));
		}
		public function GetLength2():Number{
			var _local1:b2Vec2 = m_body2.GetWorldPoint(m_localAnchor2);
			var _local2:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x);
			var _local3:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y);
			var _local4:Number = (_local1.x - _local2);
			var _local5:Number = (_local1.y - _local3);
			return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5))));
		}
		public function GetGroundAnchor1():b2Vec2{
			var _local1:b2Vec2 = m_ground.m_xf.position.Copy();
			_local1.Add(m_groundAnchor1);
			return (_local1);
		}

	}
}//package Box2D.Dynamics.Joints 

****************

//b2PulleyJointDef (Box2D.Dynamics.Joints.b2PulleyJointDef)
package Box2D.Dynamics.Joints {
	import Box2D.Dynamics.*;
	import Box2D.Common.Math.*;

	public class b2PulleyJointDef extends b2JointDef {

		public var maxLength1:Number;
		public var maxLength2:Number;
		public var length1:Number;
		public var localAnchor1:b2Vec2;
		public var localAnchor2:b2Vec2;
		public var groundAnchor1:b2Vec2;
		public var groundAnchor2:b2Vec2;
		public var ratio:Number;
		public var length2:Number;

		public function b2PulleyJointDef(){
			groundAnchor1 = new b2Vec2();
			groundAnchor2 = new b2Vec2();
			localAnchor1 = new b2Vec2();
			localAnchor2 = new b2Vec2();
			super();
			type = b2Joint.e_pulleyJoint;
			groundAnchor1.Set(-1, 1);
			groundAnchor2.Set(1, 1);
			localAnchor1.Set(-1, 0);
			localAnchor2.Set(1, 0);
			length1 = 0;
			maxLength1 = 0;
			length2 = 0;
			maxLength2 = 0;
			ratio = 1;
			collideConnected = true;
		}
		public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2, _arg5:b2Vec2, _arg6:b2Vec2, _arg7:Number):void{
			body1 = _arg1;
			body2 = _arg2;
			groundAnchor1.SetV(_arg3);
			groundAnchor2.SetV(_arg4);
			localAnchor1 = body1.GetLocalPoint(_arg5);
			localAnchor2 = body2.GetLocalPoint(_arg6);
			var _local8:Number = (_arg5.x - _arg3.x);
			var _local9:Number = (_arg5.y - _arg3.y);
			length1 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9)));
			var _local10:Number = (_arg6.x - _arg4.x);
			var _local11:Number = (_arg6.y - _arg4.y);
			length2 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11)));
			ratio = _arg7;
			var _local12:Number = (length1 + (ratio * length2));
			maxLength1 = (_local12 - (ratio * b2PulleyJoint.b2_minPulleyLength));
			maxLength2 = ((_local12 - b2PulleyJoint.b2_minPulleyLength) / ratio);
		}

	}
}//package Box2D.Dynamics.Joints 

****************

//b2RevoluteJoint (Box2D.Dynamics.Joints.b2RevoluteJoint)
package Box2D.Dynamics.Joints {
	import Box2D.Dynamics.*;
	import Box2D.Common.Math.*;
	import Box2D.Common.*;

	public class b2RevoluteJoint extends b2Joint {

		public var m_limitForce:Number;
		public var m_pivotMass:b2Mat22;
		public var m_motorForce:Number;
		public var m_enableLimit:Boolean;
		public var m_limitState:int;
		public var m_motorMass:Number;
		public var m_localAnchor1:b2Vec2;
		public var m_localAnchor2:b2Vec2;
		private var K1:b2Mat22;
		private var K2:b2Mat22;
		private var K3:b2Mat22;
		private var K:b2Mat22;
		public var m_pivotForce:b2Vec2;
		public var m_enableMotor:Boolean;
		public var m_referenceAngle:Number;
		public var m_limitPositionImpulse:Number;
		public var m_motorSpeed:Number;
		public var m_upperAngle:Number;
		public var m_lowerAngle:Number;
		public var m_maxMotorTorque:Number;

		public static var tImpulse:b2Vec2 = new b2Vec2();

		public function b2RevoluteJoint(_arg1:b2RevoluteJointDef){
			K = new b2Mat22();
			K1 = new b2Mat22();
			K2 = new b2Mat22();
			K3 = new b2Mat22();
			m_localAnchor1 = new b2Vec2();
			m_localAnchor2 = new b2Vec2();
			m_pivotForce = new b2Vec2();
			m_pivotMass = new b2Mat22();
			super(_arg1);
			m_localAnchor1.SetV(_arg1.localAnchor1);
			m_localAnchor2.SetV(_arg1.localAnchor2);
			m_referenceAngle = _arg1.referenceAngle;
			m_pivotForce.Set(0, 0);
			m_motorForce = 0;
			m_limitForce = 0;
			m_limitPositionImpulse = 0;
			m_lowerAngle = _arg1.lowerAngle;
			m_upperAngle = _arg1.upperAngle;
			m_maxMotorTorque = _arg1.maxMotorTorque;
			m_motorSpeed = _arg1.motorSpeed;
			m_enableLimit = _arg1.enableLimit;
			m_enableMotor = _arg1.enableMotor;
		}
		override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{
			var _local4:b2Mat22;
			var _local5:Number;
			var _local10:Number;
			var _local16:Number;
			var _local17:Number;
			var _local18:Number;
			var _local19:Number;
			var _local20:Number;
			var _local21:Number;
			var _local2:b2Body = m_body1;
			var _local3:b2Body = m_body2;
			_local4 = _local2.m_xf.R;
			var _local6:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x);
			var _local7:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y);
			_local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7));
			_local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7));
			_local6 = _local5;
			_local4 = _local3.m_xf.R;
			var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x);
			var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y);
			_local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9));
			_local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9));
			_local8 = _local5;
			var _local11:Number = (((_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)) - _local2.m_linearVelocity.x) - (-(_local2.m_angularVelocity) * _local7));
			var _local12:Number = (((_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)) - _local2.m_linearVelocity.y) - (_local2.m_angularVelocity * _local6));
			var _local13:Number = (-(_arg1.inv_dt) * ((m_pivotMass.col1.x * _local11) + (m_pivotMass.col2.x * _local12)));
			var _local14:Number = (-(_arg1.inv_dt) * ((m_pivotMass.col1.y * _local11) + (m_pivotMass.col2.y * _local12)));
			m_pivotForce.x = (m_pivotForce.x + _local13);
			m_pivotForce.y = (m_pivotForce.y + _local14);
			var _local15:Number = (_arg1.dt * _local13);
			_local16 = (_arg1.dt * _local14);
			_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - (_local2.m_invMass * _local15));
			_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - (_local2.m_invMass * _local16));
			_local2.m_angularVelocity = (_local2.m_angularVelocity - (_local2.m_invI * ((_local6 * _local16) - (_local7 * _local15))));
			_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local15));
			_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local16));
			_local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local16) - (_local9 * _local15))));
			if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){
				_local17 = ((_local3.m_angularVelocity - _local2.m_angularVelocity) - m_motorSpeed);
				_local18 = ((-(_arg1.inv_dt) * m_motorMass) * _local17);
				_local19 = m_motorForce;
				m_motorForce = b2Math.b2Clamp((m_motorForce + _local18), -(m_maxMotorTorque), m_maxMotorTorque);
				_local18 = (m_motorForce - _local19);
				_local2.m_angularVelocity = (_local2.m_angularVelocity - ((_local2.m_invI * _arg1.dt) * _local18));
				_local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _arg1.dt) * _local18));
			};
			if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){
				_local20 = (_local3.m_angularVelocity - _local2.m_angularVelocity);
				_local21 = ((-(_arg1.inv_dt) * m_motorMass) * _local20);
				if (m_limitState == e_equalLimits){
					m_limitForce = (m_limitForce + _local21);
				} else {
					if (m_limitState == e_atLowerLimit){
						_local10 = m_limitForce;
						m_limitForce = b2Math.b2Max((m_limitForce + _local21), 0);
						_local21 = (m_limitForce - _local10);
					} else {
						if (m_limitState == e_atUpperLimit){
							_local10 = m_limitForce;
							m_limitForce = b2Math.b2Min((m_limitForce + _local21), 0);
							_local21 = (m_limitForce - _local10);
						};
					};
				};
				_local2.m_angularVelocity = (_local2.m_angularVelocity - ((_local2.m_invI * _arg1.dt) * _local21));
				_local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _arg1.dt) * _local21));
			};
		}
		override public function GetAnchor1():b2Vec2{
			return (m_body1.GetWorldPoint(m_localAnchor1));
		}
		override public function GetAnchor2():b2Vec2{
			return (m_body2.GetWorldPoint(m_localAnchor2));
		}
		public function GetUpperLimit():Number{
			return (m_upperAngle);
		}
		public function GetLowerLimit():Number{
			return (m_lowerAngle);
		}
		public function EnableMotor(_arg1:Boolean):void{
			m_enableMotor = _arg1;
		}
		public function GetMotorSpeed():Number{
			return (m_motorSpeed);
		}
		override public function GetReactionForce():b2Vec2{
			return (m_pivotForce);
		}
		override public function SolvePositionConstraints():Boolean{
			var _local1:Number;
			var _local2:Number;
			var _local6:b2Mat22;
			var _local25:Number;
			var _local26:Number;
			var _local3:b2Body = m_body1;
			var _local4:b2Body = m_body2;
			var _local5:Number = 0;
			_local6 = _local3.m_xf.R;
			var _local7:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x);
			var _local8:Number = (m_localAnchor1.y - _local3.m_sweep.localCenter.y);
			var _local9:Number = ((_local6.col1.x * _local7) + (_local6.col2.x * _local8));
			_local8 = ((_local6.col1.y * _local7) + (_local6.col2.y * _local8));
			_local7 = _local9;
			_local6 = _local4.m_xf.R;
			var _local10:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x);
			var _local11:Number = (m_localAnchor2.y - _local4.m_sweep.localCenter.y);
			_local9 = ((_local6.col1.x * _local10) + (_local6.col2.x * _local11));
			_local11 = ((_local6.col1.y * _local10) + (_local6.col2.y * _local11));
			_local10 = _local9;
			var _local12:Number = (_local3.m_sweep.c.x + _local7);
			var _local13:Number = (_local3.m_sweep.c.y + _local8);
			var _local14:Number = (_local4.m_sweep.c.x + _local10);
			var _local15:Number = (_local4.m_sweep.c.y + _local11);
			var _local16:Number = (_local14 - _local12);
			var _local17:Number = (_local15 - _local13);
			_local5 = Math.sqrt(((_local16 * _local16) + (_local17 * _local17)));
			var _local18:Number = _local3.m_invMass;
			var _local19:Number = _local4.m_invMass;
			var _local20:Number = _local3.m_invI;
			var _local21:Number = _local4.m_invI;
			K1.col1.x = (_local18 + _local19);
			K1.col2.x = 0;
			K1.col1.y = 0;
			K1.col2.y = (_local18 + _local19);
			K2.col1.x = ((_local20 * _local8) * _local8);
			K2.col2.x = ((-(_local20) * _local7) * _local8);
			K2.col1.y = ((-(_local20) * _local7) * _local8);
			K2.col2.y = ((_local20 * _local7) * _local7);
			K3.col1.x = ((_local21 * _local11) * _local11);
			K3.col2.x = ((-(_local21) * _local10) * _local11);
			K3.col1.y = ((-(_local21) * _local10) * _local11);
			K3.col2.y = ((_local21 * _local10) * _local10);
			K.SetM(K1);
			K.AddM(K2);
			K.AddM(K3);
			K.Solve(tImpulse, -(_local16), -(_local17));
			var _local22:Number = tImpulse.x;
			var _local23:Number = tImpulse.y;
			_local3.m_sweep.c.x = (_local3.m_sweep.c.x - (_local3.m_invMass * _local22));
			_local3.m_sweep.c.y = (_local3.m_sweep.c.y - (_local3.m_invMass * _local23));
			_local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * ((_local7 * _local23) - (_local8 * _local22))));
			_local4.m_sweep.c.x = (_local4.m_sweep.c.x + (_local4.m_invMass * _local22));
			_local4.m_sweep.c.y = (_local4.m_sweep.c.y + (_local4.m_invMass * _local23));
			_local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * ((_local10 * _local23) - (_local11 * _local22))));
			_local3.SynchronizeTransform();
			_local4.SynchronizeTransform();
			var _local24:Number = 0;
			if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){
				_local25 = ((_local4.m_sweep.a - _local3.m_sweep.a) - m_referenceAngle);
				_local26 = 0;
				if (m_limitState == e_equalLimits){
					_local2 = b2Math.b2Clamp(_local25, -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection);
					_local26 = (-(m_motorMass) * _local2);
					_local24 = b2Math.b2Abs(_local2);
				} else {
					if (m_limitState == e_atLowerLimit){
						_local2 = (_local25 - m_lowerAngle);
						_local24 = b2Math.b2Max(0, -(_local2));
						_local2 = b2Math.b2Clamp((_local2 + b2Settings.b2_angularSlop), -(b2Settings.b2_maxAngularCorrection), 0);
						_local26 = (-(m_motorMass) * _local2);
						_local1 = m_limitPositionImpulse;
						m_limitPositionImpulse = b2Math.b2Max((m_limitPositionImpulse + _local26), 0);
						_local26 = (m_limitPositionImpulse - _local1);
					} else {
						if (m_limitState == e_atUpperLimit){
							_local2 = (_local25 - m_upperAngle);
							_local24 = b2Math.b2Max(0, _local2);
							_local2 = b2Math.b2Clamp((_local2 - b2Settings.b2_angularSlop), 0, b2Settings.b2_maxAngularCorrection);
							_local26 = (-(m_motorMass) * _local2);
							_local1 = m_limitPositionImpulse;
							m_limitPositionImpulse = b2Math.b2Min((m_limitPositionImpulse + _local26), 0);
							_local26 = (m_limitPositionImpulse - _local1);
						};
					};
				};
				_local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * _local26));
				_local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * _local26));
				_local3.SynchronizeTransform();
				_local4.SynchronizeTransform();
			};
			return ((((_local5 <= b2Settings.b2_linearSlop)) && ((_local24 <= b2Settings.b2_angularSlop))));
		}
		public function SetMotorSpeed(_arg1:Number):void{
			m_motorSpeed = _arg1;
		}
		public function GetJointSpeed():Number{
			return ((m_body2.m_angularVelocity - m_body1.m_angularVelocity));
		}
		public function SetMaxMotorTorque(_arg1:Number):void{
			m_maxMotorTorque = _arg1;
		}
		public function GetJointAngle():Number{
			return (((m_body2.m_sweep.a - m_body1.m_sweep.a) - m_referenceAngle));
		}
		public function GetMotorTorque():Number{
			return (m_motorForce);
		}
		override public function InitVelocityConstraints(_arg1:b2TimeStep):void{
			var _local2:b2Body;
			var _local3:b2Body;
			var _local4:b2Mat22;
			var _local5:Number;
			var _local7:Number;
			var _local14:Number;
			_local2 = m_body1;
			_local3 = m_body2;
			_local4 = _local2.m_xf.R;
			var _local6:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x);
			_local7 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y);
			_local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7));
			_local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7));
			_local6 = _local5;
			_local4 = _local3.m_xf.R;
			var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x);
			var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y);
			_local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9));
			_local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9));
			_local8 = _local5;
			var _local10:Number = _local2.m_invMass;
			var _local11:Number = _local3.m_invMass;
			var _local12:Number = _local2.m_invI;
			var _local13:Number = _local3.m_invI;
			K1.col1.x = (_local10 + _local11);
			K1.col2.x = 0;
			K1.col1.y = 0;
			K1.col2.y = (_local10 + _local11);
			K2.col1.x = ((_local12 * _local7) * _local7);
			K2.col2.x = ((-(_local12) * _local6) * _local7);
			K2.col1.y = ((-(_local12) * _local6) * _local7);
			K2.col2.y = ((_local12 * _local6) * _local6);
			K3.col1.x = ((_local13 * _local9) * _local9);
			K3.col2.x = ((-(_local13) * _local8) * _local9);
			K3.col1.y = ((-(_local13) * _local8) * _local9);
			K3.col2.y = ((_local13 * _local8) * _local8);
			K.SetM(K1);
			K.AddM(K2);
			K.AddM(K3);
			K.Invert(m_pivotMass);
			m_motorMass = (1 / (_local12 + _local13));
			if (m_enableMotor == false){
				m_motorForce = 0;
			};
			if (m_enableLimit){
				_local14 = ((_local3.m_sweep.a - _local2.m_sweep.a) - m_referenceAngle);
				if (b2Math.b2Abs((m_upperAngle - m_lowerAngle)) < (2 * b2Settings.b2_angularSlop)){
					m_limitState = e_equalLimits;
				} else {
					if (_local14 <= m_lowerAngle){
						if (m_limitState != e_atLowerLimit){
							m_limitForce = 0;
						};
						m_limitState = e_atLowerLimit;
					} else {
						if (_local14 >= m_upperAngle){
							if (m_limitState != e_atUpperLimit){
								m_limitForce = 0;
							};
							m_limitState = e_atUpperLimit;
						} else {
							m_limitState = e_inactiveLimit;
							m_limitForce = 0;
						};
					};
				};
			} else {
				m_limitForce = 0;
			};
			if (_arg1.warmStarting){
				_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - ((_arg1.dt * _local10) * m_pivotForce.x));
				_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - ((_arg1.dt * _local10) * m_pivotForce.y));
				_local2.m_angularVelocity = (_local2.m_angularVelocity - ((_arg1.dt * _local12) * ((((_local6 * m_pivotForce.y) - (_local7 * m_pivotForce.x)) + m_motorForce) + m_limitForce)));
				_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_arg1.dt * _local11) * m_pivotForce.x));
				_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_arg1.dt * _local11) * m_pivotForce.y));
				_local3.m_angularVelocity = (_local3.m_angularVelocity + ((_arg1.dt * _local13) * ((((_local8 * m_pivotForce.y) - (_local9 * m_pivotForce.x)) + m_motorForce) + m_limitForce)));
			} else {
				m_pivotForce.SetZero();
				m_motorForce = 0;
				m_limitForce = 0;
			};
			m_limitPositionImpulse = 0;
		}
		public function EnableLimit(_arg1:Boolean):void{
			m_enableLimit = _arg1;
		}
		override public function GetReactionTorque():Number{
			return (m_limitForce);
		}
		public function IsLimitEnabled():Boolean{
			return (m_enableLimit);
		}
		public function IsMotorEnabled():Boolean{
			return (m_enableMotor);
		}
		public function SetLimits(_arg1:Number, _arg2:Number):void{
			m_lowerAngle = _arg1;
			m_upperAngle = _arg2;
		}

	}
}//package Box2D.Dynamics.Joints 

****************

//b2RevoluteJointDef (Box2D.Dynamics.Joints.b2RevoluteJointDef)
package Box2D.Dynamics.Joints {
	import Box2D.Dynamics.*;
	import Box2D.Common.Math.*;

	public class b2RevoluteJointDef extends b2JointDef {

		public var upperAngle:Number;
		public var enableMotor:Boolean;
		public var referenceAngle:Number;
		public var motorSpeed:Number;
		public var localAnchor1:b2Vec2;
		public var localAnchor2:b2Vec2;
		public var enableLimit:Boolean;
		public var lowerAngle:Number;
		public var maxMotorTorque:Number;

		public function b2RevoluteJointDef(){
			localAnchor1 = new b2Vec2();
			localAnchor2 = new b2Vec2();
			super();
			type = b2Joint.e_revoluteJoint;
			localAnchor1.Set(0, 0);
			localAnchor2.Set(0, 0);
			referenceAngle = 0;
			lowerAngle = 0;
			upperAngle = 0;
			maxMotorTorque = 0;
			motorSpeed = 0;
			enableLimit = false;
			enableMotor = false;
		}
		public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2):void{
			body1 = _arg1;
			body2 = _arg2;
			localAnchor1 = body1.GetLocalPoint(_arg3);
			localAnchor2 = body2.GetLocalPoint(_arg3);
			referenceAngle = (body2.GetAngle() - body1.GetAngle());
		}

	}
}//package Box2D.Dynamics.Joints 

****************

//b2Body (Box2D.Dynamics.b2Body)
package Box2D.Dynamics {
	import Box2D.Dynamics.Contacts.*;
	import Box2D.Collision.Shapes.*;
	import Box2D.Common.Math.*;
	import Box2D.Dynamics.Joints.*;

	public class b2Body {

		public var m_next:b2Body;
		public var m_xf:b2XForm;
		public var m_contactList:b2ContactEdge;
		public var m_angularVelocity:Number;
		public var m_shapeList:b2Shape;
		public var m_force:b2Vec2;
		public var m_mass:Number;
		public var m_sweep:b2Sweep;
		public var m_torque:Number;
		public var m_userData;
		public var m_flags:uint;
		public var m_world:b2World;
		public var m_prev:b2Body;
		public var m_invMass:Number;
		public var m_type:int;
		public var m_linearDamping:Number;
		public var m_shapeCount:int;
		public var m_angularDamping:Number;
		public var m_invI:Number;
		public var m_linearVelocity:b2Vec2;
		public var m_sleepTime:Number;
		public var m_jointList:b2JointEdge;
		public var m_I:Number;

		public static var e_fixedRotationFlag:uint = 64;
		public static var e_frozenFlag:uint = 2;
		public static var e_maxTypes:uint = 3;
		public static var e_sleepFlag:uint = 8;
		private static var s_massData:b2MassData = new b2MassData();
		public static var e_bulletFlag:uint = 32;
		public static var e_staticType:uint = 1;
		public static var e_islandFlag:uint = 4;
		public static var e_allowSleepFlag:uint = 16;
		private static var s_xf1:b2XForm = new b2XForm();
		public static var e_dynamicType:uint = 2;

		public function b2Body(_arg1:b2BodyDef, _arg2:b2World){
			m_xf = new b2XForm();
			m_sweep = new b2Sweep();
			m_linearVelocity = new b2Vec2();
			m_force = new b2Vec2();
			super();
			m_flags = 0;
			if (_arg1.isBullet){
				m_flags = (m_flags | e_bulletFlag);
			};
			if (_arg1.fixedRotation){
				m_flags = (m_flags | e_fixedRotationFlag);
			};
			if (_arg1.allowSleep){
				m_flags = (m_flags | e_allowSleepFlag);
			};
			if (_arg1.isSleeping){
				m_flags = (m_flags | e_sleepFlag);
			};
			m_world = _arg2;
			m_xf.position.SetV(_arg1.position);
			m_xf.R.Set(_arg1.angle);
			m_sweep.localCenter.SetV(_arg1.massData.center);
			m_sweep.t0 = 1;
			m_sweep.a0 = (m_sweep.a = _arg1.angle);
			var _local3:b2Mat22 = m_xf.R;
			var _local4:b2Vec2 = m_sweep.localCenter;
			m_sweep.c.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y));
			m_sweep.c.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y));
			m_sweep.c.x = (m_sweep.c.x + m_xf.position.x);
			m_sweep.c.y = (m_sweep.c.y + m_xf.position.y);
			m_sweep.c0.SetV(m_sweep.c);
			m_jointList = null;
			m_contactList = null;
			m_prev = null;
			m_next = null;
			m_linearDamping = _arg1.linearDamping;
			m_angularDamping = _arg1.angularDamping;
			m_force.Set(0, 0);
			m_torque = 0;
			m_linearVelocity.SetZero();
			m_angularVelocity = 0;
			m_sleepTime = 0;
			m_invMass = 0;
			m_I = 0;
			m_invI = 0;
			m_mass = _arg1.massData.mass;
			if (m_mass > 0){
				m_invMass = (1 / m_mass);
			};
			if ((m_flags & b2Body.e_fixedRotationFlag) == 0){
				m_I = _arg1.massData.I;
			};
			if (m_I > 0){
				m_invI = (1 / m_I);
			};
			if ((((m_invMass == 0)) && ((m_invI == 0)))){
				m_type = e_staticType;
			} else {
				m_type = e_dynamicType;
			};
			m_userData = _arg1.userData;
			m_shapeList = null;
			m_shapeCount = 0;
		}
		public function GetLinearVelocityFromWorldPoint(_arg1:b2Vec2):b2Vec2{
			return (new b2Vec2((m_linearVelocity.x + (m_angularVelocity * (_arg1.y - m_sweep.c.y))), (m_linearVelocity.x - (m_angularVelocity * (_arg1.x - m_sweep.c.x)))));
		}
		public function SetLinearVelocity(_arg1:b2Vec2):void{
			m_linearVelocity.SetV(_arg1);
		}
		public function WakeUp():void{
			m_flags = (m_flags & ~(e_sleepFlag));
			m_sleepTime = 0;
		}
		public function GetLocalCenter():b2Vec2{
			return (m_sweep.localCenter);
		}
		public function ApplyTorque(_arg1:Number):void{
			if (IsSleeping()){
				WakeUp();
			};
			m_torque = (m_torque + _arg1);
		}
		public function IsFrozen():Boolean{
			return (((m_flags & e_frozenFlag) == e_frozenFlag));
		}
		public function IsDynamic():Boolean{
			return ((m_type == e_dynamicType));
		}
		public function GetLinearVelocity():b2Vec2{
			return (m_linearVelocity);
		}
		public function SynchronizeTransform():void{
			m_xf.R.Set(m_sweep.a);
			var _local1:b2Mat22 = m_xf.R;
			var _local2:b2Vec2 = m_sweep.localCenter;
			m_xf.position.x = (m_sweep.c.x - ((_local1.col1.x * _local2.x) + (_local1.col2.x * _local2.y)));
			m_xf.position.y = (m_sweep.c.y - ((_local1.col1.y * _local2.x) + (_local1.col2.y * _local2.y)));
		}
		public function GetInertia():Number{
			return (m_I);
		}
		public function IsSleeping():Boolean{
			return (((m_flags & e_sleepFlag) == e_sleepFlag));
		}
		public function SetMassFromShapes():void{
			var _local1:b2Shape;
			if (m_world.m_lock == true){
				return;
			};
			m_mass = 0;
			m_invMass = 0;
			m_I = 0;
			m_invI = 0;
			var _local2:Number = 0;
			var _local3:Number = 0;
			var _local4:b2MassData = s_massData;
			_local1 = m_shapeList;
			while (_local1) {
				_local1.ComputeMass(_local4);
				m_mass = (m_mass + _local4.mass);
				_local2 = (_local2 + (_local4.mass * _local4.center.x));
				_local3 = (_local3 + (_local4.mass * _local4.center.y));
				m_I = (m_I + _local4.I);
				_local1 = _local1.m_next;
			};
			if (m_mass > 0){
				m_invMass = (1 / m_mass);
				_local2 = (_local2 * m_invMass);
				_local3 = (_local3 * m_invMass);
			};
			if ((((m_I > 0)) && (((m_flags & e_fixedRotationFlag) == 0)))){
				m_I = (m_I - (m_mass * ((_local2 * _local2) + (_local3 * _local3))));
				m_invI = (1 / m_I);
			} else {
				m_I = 0;
				m_invI = 0;
			};
			m_sweep.localCenter.Set(_local2, _local3);
			var _local5:b2Mat22 = m_xf.R;
			var _local6:b2Vec2 = m_sweep.localCenter;
			m_sweep.c.x = ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y));
			m_sweep.c.y = ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y));
			m_sweep.c.x = (m_sweep.c.x + m_xf.position.x);
			m_sweep.c.y = (m_sweep.c.y + m_xf.position.y);
			m_sweep.c0.SetV(m_sweep.c);
			_local1 = m_shapeList;
			while (_local1) {
				_local1.UpdateSweepRadius(m_sweep.localCenter);
				_local1 = _local1.m_next;
			};
			var _local7:int = m_type;
			if ((((m_invMass == 0)) && ((m_invI == 0)))){
				m_type = e_staticType;
			} else {
				m_type = e_dynamicType;
			};
			if (_local7 != m_type){
				_local1 = m_shapeList;
				while (_local1) {
					_local1.RefilterProxy(m_world.m_broadPhase, m_xf);
					_local1 = _local1.m_next;
				};
			};
		}
		public function PutToSleep():void{
			m_flags = (m_flags | e_sleepFlag);
			m_sleepTime = 0;
			m_linearVelocity.SetZero();
			m_angularVelocity = 0;
			m_force.SetZero();
			m_torque = 0;
		}
		public function GetJointList():b2JointEdge{
			return (m_jointList);
		}
		public function SetXForm(_arg1:b2Vec2, _arg2:Number):Boolean{
			var _local3:b2Shape;
			var _local7:Boolean;
			if (m_world.m_lock == true){
				return (true);
			};
			if (IsFrozen()){
				return (false);
			};
			m_xf.R.Set(_arg2);
			m_xf.position.SetV(_arg1);
			var _local4:b2Mat22 = m_xf.R;
			var _local5:b2Vec2 = m_sweep.localCenter;
			m_sweep.c.x = ((_local4.col1.x * _local5.x) + (_local4.col2.x * _local5.y));
			m_sweep.c.y = ((_local4.col1.y * _local5.x) + (_local4.col2.y * _local5.y));
			m_sweep.c.x = (m_sweep.c.x + m_xf.position.x);
			m_sweep.c.y = (m_sweep.c.y + m_xf.position.y);
			m_sweep.c0.SetV(m_sweep.c);
			m_sweep.a0 = (m_sweep.a = _arg2);
			var _local6:Boolean;
			_local3 = m_shapeList;
			while (_local3) {
				_local7 = _local3.Synchronize(m_world.m_broadPhase, m_xf, m_xf);
				if (_local7 == false){
					_local6 = true;
					break;
				};
				_local3 = _local3.m_next;
			};
			if (_local6 == true){
				m_flags = (m_flags | e_frozenFlag);
				m_linearVelocity.SetZero();
				m_angularVelocity = 0;
				_local3 = m_shapeList;
				while (_local3) {
					_local3.DestroyProxy(m_world.m_broadPhase);
					_local3 = _local3.m_next;
				};
				return (false);
			};
			m_world.m_broadPhase.Commit();
			return (true);
		}
		public function GetLocalPoint(_arg1:b2Vec2):b2Vec2{
			return (b2Math.b2MulXT(m_xf, _arg1));
		}
		public function ApplyForce(_arg1:b2Vec2, _arg2:b2Vec2):void{
			if (IsSleeping()){
				WakeUp();
			};
			m_force.x = (m_force.x + _arg1.x);
			m_force.y = (m_force.y + _arg1.y);
			m_torque = (m_torque + (((_arg2.x - m_sweep.c.x) * _arg1.y) - ((_arg2.y - m_sweep.c.y) * _arg1.x)));
		}
		public function SynchronizeShapes():Boolean{
			var _local4:b2Shape;
			var _local1:b2XForm = s_xf1;
			_local1.R.Set(m_sweep.a0);
			var _local2:b2Mat22 = _local1.R;
			var _local3:b2Vec2 = m_sweep.localCenter;
			_local1.position.x = (m_sweep.c0.x - ((_local2.col1.x * _local3.x) + (_local2.col2.x * _local3.y)));
			_local1.position.y = (m_sweep.c0.y - ((_local2.col1.y * _local3.x) + (_local2.col2.y * _local3.y)));
			var _local5:Boolean;
			_local4 = m_shapeList;
			while (_local4) {
				_local5 = _local4.Synchronize(m_world.m_broadPhase, _local1, m_xf);
				if (_local5 == false){
					break;
				};
				_local4 = _local4.m_next;
			};
			if (_local5 == false){
				m_flags = (m_flags | e_frozenFlag);
				m_linearVelocity.SetZero();
				m_angularVelocity = 0;
				_local4 = m_shapeList;
				while (_local4) {
					_local4.DestroyProxy(m_world.m_broadPhase);
					_local4 = _local4.m_next;
				};
				return (false);
			};
			return (true);
		}
		public function GetAngle():Number{
			return (m_sweep.a);
		}
		public function GetXForm():b2XForm{
			return (m_xf);
		}
		public function GetLinearVelocityFromLocalPoint(_arg1:b2Vec2):b2Vec2{
			var _local2:b2Mat22 = m_xf.R;
			var _local3:b2Vec2 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y)));
			_local3.x = (_local3.x + m_xf.position.x);
			_local3.y = (_local3.y + m_xf.position.y);
			return (new b2Vec2((m_linearVelocity.x + (m_angularVelocity * (_local3.y - m_sweep.c.y))), (m_linearVelocity.x - (m_angularVelocity * (_local3.x - m_sweep.c.x)))));
		}
		public function GetNext():b2Body{
			return (m_next);
		}
		public function GetMass():Number{
			return (m_mass);
		}
		public function ApplyImpulse(_arg1:b2Vec2, _arg2:b2Vec2):void{
			if (IsSleeping()){
				WakeUp();
			};
			m_linearVelocity.x = (m_linearVelocity.x + (m_invMass * _arg1.x));
			m_linearVelocity.y = (m_linearVelocity.y + (m_invMass * _arg1.y));
			m_angularVelocity = (m_angularVelocity + (m_invI * (((_arg2.x - m_sweep.c.x) * _arg1.y) - ((_arg2.y - m_sweep.c.y) * _arg1.x))));
		}
		public function GetAngularVelocity():Number{
			return (m_angularVelocity);
		}
		public function SetAngularVelocity(_arg1:Number):void{
			m_angularVelocity = _arg1;
		}
		public function SetMass(_arg1:b2MassData):void{
			var _local2:b2Shape;
			if (m_world.m_lock == true){
				return;
			};
			m_invMass = 0;
			m_I = 0;
			m_invI = 0;
			m_mass = _arg1.mass;
			if (m_mass > 0){
				m_invMass = (1 / m_mass);
			};
			if ((m_flags & b2Body.e_fixedRotationFlag) == 0){
				m_I = _arg1.I;
			};
			if (m_I > 0){
				m_invI = (1 / m_I);
			};
			m_sweep.localCenter.SetV(_arg1.center);
			var _local3:b2Mat22 = m_xf.R;
			var _local4:b2Vec2 = m_sweep.localCenter;
			m_sweep.c.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y));
			m_sweep.c.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y));
			m_sweep.c.x = (m_sweep.c.x + m_xf.position.x);
			m_sweep.c.y = (m_sweep.c.y + m_xf.position.y);
			m_sweep.c0.SetV(m_sweep.c);
			_local2 = m_shapeList;
			while (_local2) {
				_local2.UpdateSweepRadius(m_sweep.localCenter);
				_local2 = _local2.m_next;
			};
			var _local5:int = m_type;
			if ((((m_invMass == 0)) && ((m_invI == 0)))){
				m_type = e_staticType;
			} else {
				m_type = e_dynamicType;
			};
			if (_local5 != m_type){
				_local2 = m_shapeList;
				while (_local2) {
					_local2.RefilterProxy(m_world.m_broadPhase, m_xf);
					_local2 = _local2.m_next;
				};
			};
		}
		public function IsStatic():Boolean{
			return ((m_type == e_staticType));
		}
		public function GetWorldVector(_arg1:b2Vec2):b2Vec2{
			return (b2Math.b2MulMV(m_xf.R, _arg1));
		}
		public function GetShapeList():b2Shape{
			return (m_shapeList);
		}
		public function Advance(_arg1:Number):void{
			m_sweep.Advance(_arg1);
			m_sweep.c.SetV(m_sweep.c0);
			m_sweep.a = m_sweep.a0;
			SynchronizeTransform();
		}
		public function SetBullet(_arg1:Boolean):void{
			if (_arg1){
				m_flags = (m_flags | e_bulletFlag);
			} else {
				m_flags = (m_flags & ~(e_bulletFlag));
			};
		}
		public function CreateShape(_arg1:b2ShapeDef):b2Shape{
			var _local2:b2Shape;
			if (m_world.m_lock == true){
				return (null);
			};
			_local2 = b2Shape.Create(_arg1, m_world.m_blockAllocator);
			_local2.m_next = m_shapeList;
			m_shapeList = _local2;
			m_shapeCount++;
			_local2.m_body = this;
			_local2.CreateProxy(m_world.m_broadPhase, m_xf);
			_local2.UpdateSweepRadius(m_sweep.localCenter);
			return (_local2);
		}
		public function IsConnected(_arg1:b2Body):Boolean{
			var _local2:b2JointEdge = m_jointList;
			while (_local2) {
				if (_local2.other == _arg1){
					return ((_local2.joint.m_collideConnected == false));
				};
				_local2 = _local2.next;
			};
			return (false);
		}
		public function DestroyShape(_arg1:b2Shape):void{
			if (m_world.m_lock == true){
				return;
			};
			_arg1.DestroyProxy(m_world.m_broadPhase);
			var _local2:b2Shape = m_shapeList;
			var _local3:b2Shape;
			var _local4:Boolean;
			while (_local2 != null) {
				if (_local2 == _arg1){
					if (_local3){
						_local3.m_next = _arg1.m_next;
					} else {
						m_shapeList = _arg1.m_next;
					};
					_local4 = true;
					break;
				};
				_local3 = _local2;
				_local2 = _local2.m_next;
			};
			_arg1.m_body = null;
			_arg1.m_next = null;
			m_shapeCount--;
			b2Shape.Destroy(_arg1, m_world.m_blockAllocator);
		}
		public function GetUserData(){
			return (m_userData);
		}
		public function IsBullet():Boolean{
			return (((m_flags & e_bulletFlag) == e_bulletFlag));
		}
		public function GetWorldCenter():b2Vec2{
			return (m_sweep.c);
		}
		public function AllowSleeping(_arg1:Boolean):void{
			if (_arg1){
				m_flags = (m_flags | e_allowSleepFlag);
			} else {
				m_flags = (m_flags & ~(e_allowSleepFlag));
				WakeUp();
			};
		}
		public function SetUserData(_arg1):void{
			m_userData = _arg1;
		}
		public function GetLocalVector(_arg1:b2Vec2):b2Vec2{
			return (b2Math.b2MulTMV(m_xf.R, _arg1));
		}
		public function GetWorldPoint(_arg1:b2Vec2):b2Vec2{
			var _local2:b2Mat22 = m_xf.R;
			var _local3:b2Vec2 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y)));
			_local3.x = (_local3.x + m_xf.position.x);
			_local3.y = (_local3.y + m_xf.position.y);
			return (_local3);
		}
		public function GetWorld():b2World{
			return (m_world);
		}
		public function GetPosition():b2Vec2{
			return (m_xf.position);
		}

	}
}//package Box2D.Dynamics 

****************

//b2BodyDef (Box2D.Dynamics.b2BodyDef)
package Box2D.Dynamics {
	import Box2D.Collision.Shapes.*;
	import Box2D.Common.Math.*;

	public class b2BodyDef {

		public var angularDamping:Number;
		public var angle:Number;
		public var isSleeping:Boolean;
		public var position:b2Vec2;
		public var isBullet:Boolean;
		public var allowSleep:Boolean;
		public var userData;
		public var fixedRotation:Boolean;
		public var linearDamping:Number;
		public var massData:b2MassData;

		public function b2BodyDef(){
			massData = new b2MassData();
			position = new b2Vec2();
			super();
			massData.center.SetZero();
			massData.mass = 0;
			massData.I = 0;
			userData = null;
			position.Set(0, 0);
			angle = 0;
			linearDamping = 0;
			angularDamping = 0;
			allowSleep = true;
			isSleeping = false;
			fixedRotation = false;
			isBullet = false;
		}
	}
}//package Box2D.Dynamics 

****************

//b2BoundaryListener (Box2D.Dynamics.b2BoundaryListener)
package Box2D.Dynamics {

	public class b2BoundaryListener {

		public function Violation(_arg1:b2Body):void{
		}

	}
}//package Box2D.Dynamics 

****************

//b2ContactFilter (Box2D.Dynamics.b2ContactFilter)
package Box2D.Dynamics {
	import Box2D.Collision.Shapes.*;

	public class b2ContactFilter {

		public static var b2_defaultFilter:b2ContactFilter = new (b2ContactFilter);
;

		public function ShouldCollide(_arg1:b2Shape, _arg2:b2Shape):Boolean{
			var _local3:b2FilterData = _arg1.GetFilterData();
			var _local4:b2FilterData = _arg2.GetFilterData();
			if ((((_local3.groupIndex == _local4.groupIndex)) && (!((_local3.groupIndex == 0))))){
				return ((_local3.groupIndex > 0));
			};
			var _local5:Boolean = ((!(((_local3.maskBits & _local4.categoryBits) == 0))) && (!(((_local3.categoryBits & _local4.maskBits) == 0))));
			return (_local5);
		}

	}
}//package Box2D.Dynamics 

****************

//b2ContactListener (Box2D.Dynamics.b2ContactListener)
package Box2D.Dynamics {
	import Box2D.Collision.*;
	import Box2D.Dynamics.Contacts.*;

	public class b2ContactListener {

		public function Add(_arg1:b2ContactPoint):void{
		}
		public function Remove(_arg1:b2ContactPoint):void{
		}
		public function Persist(_arg1:b2ContactPoint):void{
		}
		public function Result(_arg1:b2ContactResult):void{
		}

	}
}//package Box2D.Dynamics 

****************

//b2ContactManager (Box2D.Dynamics.b2ContactManager)
package Box2D.Dynamics {
	import Box2D.Collision.*;
	import Box2D.Dynamics.Contacts.*;
	import Box2D.Collision.Shapes.*;
	import Box2D.Common.Math.*;
	import Box2D.Common.*;

	public class b2ContactManager extends b2PairCallback {

		public var m_world:b2World;
		public var m_destroyImmediate:Boolean;
		public var m_nullContact:b2NullContact;

		private static const s_evalCP:b2ContactPoint = new b2ContactPoint();

		public function b2ContactManager(){
			m_nullContact = new b2NullContact();
			super();
			m_world = null;
			m_destroyImmediate = false;
		}
		override public function PairRemoved(_arg1, _arg2, _arg3):void{
			if (_arg3 == null){
				return;
			};
			var _local4:b2Contact = (_arg3 as b2Contact);
			if (_local4 == m_nullContact){
				return;
			};
			Destroy(_local4);
		}
		public function Destroy(_arg1:b2Contact):void{
			var _local7:b2Body;
			var _local8:b2Body;
			var _local9:Array;
			var _local10:b2ContactPoint;
			var _local11:int;
			var _local12:b2Manifold;
			var _local13:int;
			var _local14:b2ManifoldPoint;
			var _local15:b2Vec2;
			var _local16:b2Vec2;
			var _local2:b2Shape = _arg1.m_shape1;
			var _local3:b2Shape = _arg1.m_shape2;
			var _local4:int = _arg1.m_manifoldCount;
			if ((((_local4 > 0)) && (m_world.m_contactListener))){
				_local7 = _local2.m_body;
				_local8 = _local3.m_body;
				_local9 = _arg1.GetManifolds();
				_local10 = s_evalCP;
				_local10.shape1 = _arg1.m_shape1;
				_local10.shape2 = _arg1.m_shape1;
				_local10.friction = _arg1.m_friction;
				_local10.restitution = _arg1.m_restitution;
				_local11 = 0;
				while (_local11 < _local4) {
					_local12 = _local9[_local11];
					_local10.normal.SetV(_local12.normal);
					_local13 = 0;
					while (_local13 < _local12.pointCount) {
						_local14 = _local12.points[_local13];
						_local10.position = _local7.GetWorldPoint(_local14.localPoint1);
						_local15 = _local7.GetLinearVelocityFromLocalPoint(_local14.localPoint1);
						_local16 = _local8.GetLinearVelocityFromLocalPoint(_local14.localPoint2);
						_local10.velocity.Set((_local16.x - _local15.x), (_local16.y - _local15.y));
						_local10.separation = _local14.separation;
						_local10.id.key = _local14.id._key;
						m_world.m_contactListener.Remove(_local10);
						_local13++;
					};
					_local11++;
				};
			};
			if (_arg1.m_prev){
				_arg1.m_prev.m_next = _arg1.m_next;
			};
			if (_arg1.m_next){
				_arg1.m_next.m_prev = _arg1.m_prev;
			};
			if (_arg1 == m_world.m_contactList){
				m_world.m_contactList = _arg1.m_next;
			};
			var _local5:b2Body = _local2.m_body;
			var _local6:b2Body = _local3.m_body;
			if (_arg1.m_node1.prev){
				_arg1.m_node1.prev.next = _arg1.m_node1.next;
			};
			if (_arg1.m_node1.next){
				_arg1.m_node1.next.prev = _arg1.m_node1.prev;
			};
			if (_arg1.m_node1 == _local5.m_contactList){
				_local5.m_contactList = _arg1.m_node1.next;
			};
			if (_arg1.m_node2.prev){
				_arg1.m_node2.prev.next = _arg1.m_node2.next;
			};
			if (_arg1.m_node2.next){
				_arg1.m_node2.next.prev = _arg1.m_node2.prev;
			};
			if (_arg1.m_node2 == _local6.m_contactList){
				_local6.m_contactList = _arg1.m_node2.next;
			};
			b2Contact.Destroy(_arg1, m_world.m_blockAllocator);
			m_world.m_contactCount--;
		}
		override public function PairAdded(_arg1, _arg2){
			var _local3:b2Shape = (_arg1 as b2Shape);
			var _local4:b2Shape = (_arg2 as b2Shape);
			var _local5:b2Body = _local3.m_body;
			var _local6:b2Body = _local4.m_body;
			if (((_local5.IsStatic()) && (_local6.IsStatic()))){
				return (m_nullContact);
			};
			if (_local3.m_body == _local4.m_body){
				return (m_nullContact);
			};
			if (_local6.IsConnected(_local5)){
				return (m_nullContact);
			};
			if (((!((m_world.m_contactFilter == null))) && ((m_world.m_contactFilter.ShouldCollide(_local3, _local4) == false)))){
				return (m_nullContact);
			};
			var _local7:b2Contact = b2Contact.Create(_local3, _local4, m_world.m_blockAllocator);
			if (_local7 == null){
				return (m_nullContact);
			};
			_local3 = _local7.m_shape1;
			_local4 = _local7.m_shape2;
			_local5 = _local3.m_body;
			_local6 = _local4.m_body;
			_local7.m_prev = null;
			_local7.m_next = m_world.m_contactList;
			if (m_world.m_contactList != null){
				m_world.m_contactList.m_prev = _local7;
			};
			m_world.m_contactList = _local7;
			_local7.m_node1.contact = _local7;
			_local7.m_node1.other = _local6;
			_local7.m_node1.prev = null;
			_local7.m_node1.next = _local5.m_contactList;
			if (_local5.m_contactList != null){
				_local5.m_contactList.prev = _local7.m_node1;
			};
			_local5.m_contactList = _local7.m_node1;
			_local7.m_node2.contact = _local7;
			_local7.m_node2.other = _local5;
			_local7.m_node2.prev = null;
			_local7.m_node2.next = _local6.m_contactList;
			if (_local6.m_contactList != null){
				_local6.m_contactList.prev = _local7.m_node2;
			};
			_local6.m_contactList = _local7.m_node2;
			m_world.m_contactCount++;
			return (_local7);
		}
		public function Collide():void{
			var _local2:b2Body;
			var _local3:b2Body;
			var _local1:b2Contact = m_world.m_contactList;
			while (_local1) {
				_local2 = _local1.m_shape1.m_body;
				_local3 = _local1.m_shape2.m_body;
				if (((_local2.IsSleeping()) && (_local3.IsSleeping()))){
				} else {
					_local1.Update(m_world.m_contactListener);
				};
				_local1 = _local1.m_next;
			};
		}

	}
}//package Box2D.Dynamics 

****************

//b2DebugDraw (Box2D.Dynamics.b2DebugDraw)
package Box2D.Dynamics {
	import flash.display.*;
	import Box2D.Collision.*;
	import Box2D.Dynamics.Contacts.*;
	import Box2D.Collision.Shapes.*;
	import Box2D.Common.Math.*;
	import Box2D.Common.*;

	public class b2DebugDraw {

		public var m_xformScale:Number;// = 1
		public var m_fillAlpha:Number;// = 1
		public var m_alpha:Number;// = 1
		public var m_drawFlags:uint;
		public var m_lineThickness:Number;// = 1
		public var m_drawScale:Number;// = 1
		public var m_sprite:Sprite;

		public static var e_coreShapeBit:uint = 4;
		public static var e_shapeBit:uint = 1;
		public static var e_centerOfMassBit:uint = 64;
		public static var e_aabbBit:uint = 8;
		public static var e_obbBit:uint = 16;
		public static var e_pairBit:uint = 32;
		public static var e_jointBit:uint = 2;

		public function b2DebugDraw(){
			m_drawFlags = 0;
		}
		public function ClearFlags(_arg1:uint):void{
			m_drawFlags = (m_drawFlags & ~(_arg1));
		}
		public function SetFlags(_arg1:uint):void{
			m_drawFlags = _arg1;
		}
		public function AppendFlags(_arg1:uint):void{
			m_drawFlags = (m_drawFlags | _arg1);
		}
		public function DrawSegment(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Color):void{
			m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha);
			m_sprite.graphics.moveTo((_arg1.x * m_drawScale), (_arg1.y * m_drawScale));
			m_sprite.graphics.lineTo((_arg2.x * m_drawScale), (_arg2.y * m_drawScale));
		}
		public function DrawSolidPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{
			m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha);
			m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale));
			m_sprite.graphics.beginFill(_arg3.color, m_fillAlpha);
			var _local4 = 1;
			while (_local4 < _arg2) {
				m_sprite.graphics.lineTo((_arg1[_local4].x * m_drawScale), (_arg1[_local4].y * m_drawScale));
				_local4++;
			};
			m_sprite.graphics.lineTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale));
			m_sprite.graphics.endFill();
		}
		public function DrawCircle(_arg1:b2Vec2, _arg2:Number, _arg3:b2Color):void{
			m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha);
			m_sprite.graphics.drawCircle((_arg1.x * m_drawScale), (_arg1.y * m_drawScale), (_arg2 * m_drawScale));
		}
		public function DrawPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{
			m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha);
			m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale));
			var _local4 = 1;
			while (_local4 < _arg2) {
				m_sprite.graphics.lineTo((_arg1[_local4].x * m_drawScale), (_arg1[_local4].y * m_drawScale));
				_local4++;
			};
			m_sprite.graphics.lineTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale));
		}
		public function DrawSolidCircle(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:b2Color):void{
			m_sprite.graphics.lineStyle(m_lineThickness, _arg4.color, m_alpha);
			m_sprite.graphics.moveTo(0, 0);
			m_sprite.graphics.beginFill(_arg4.color, m_fillAlpha);
			m_sprite.graphics.drawCircle((_arg1.x * m_drawScale), (_arg1.y * m_drawScale), (_arg2 * m_drawScale));
			m_sprite.graphics.endFill();
			m_sprite.graphics.moveTo((_arg1.x * m_drawScale), (_arg1.y * m_drawScale));
			m_sprite.graphics.lineTo(((_arg1.x + (_arg3.x * _arg2)) * m_drawScale), ((_arg1.y + (_arg3.y * _arg2)) * m_drawScale));
		}
		public function GetFlags():uint{
			return (m_drawFlags);
		}
		public function DrawXForm(_arg1:b2XForm):void{
			m_sprite.graphics.lineStyle(m_lineThickness, 0xFF0000, m_alpha);
			m_sprite.graphics.moveTo((_arg1.position.x * m_drawScale), (_arg1.position.y * m_drawScale));
			m_sprite.graphics.lineTo(((_arg1.position.x + (m_xformScale * _arg1.R.col1.x)) * m_drawScale), ((_arg1.position.y + (m_xformScale * _arg1.R.col1.y)) * m_drawScale));
			m_sprite.graphics.lineStyle(m_lineThickness, 0xFF00, m_alpha);
			m_sprite.graphics.moveTo((_arg1.position.x * m_drawScale), (_arg1.position.y * m_drawScale));
			m_sprite.graphics.lineTo(((_arg1.position.x + (m_xformScale * _arg1.R.col2.x)) * m_drawScale), ((_arg1.position.y + (m_xformScale * _arg1.R.col2.y)) * m_drawScale));
		}

	}
}//package Box2D.Dynamics 

****************

//b2DestructionListener (Box2D.Dynamics.b2DestructionListener)
package Box2D.Dynamics {
	import Box2D.Collision.Shapes.*;
	import Box2D.Dynamics.Joints.*;

	public class b2DestructionListener {

		public function SayGoodbyeShape(_arg1:b2Shape):void{
		}
		public function SayGoodbyeJoint(_arg1:b2Joint):void{
		}

	}
}//package Box2D.Dynamics 

****************

//b2Island (Box2D.Dynamics.b2Island)
package Box2D.Dynamics {
	import Box2D.Collision.*;
	import Box2D.Dynamics.Contacts.*;
	import Box2D.Common.Math.*;
	import Box2D.Dynamics.Joints.*;
	import Box2D.Common.*;

	public class b2Island {

		public var m_listener:b2ContactListener;
		public var m_positionIterationCount:int;
		public var m_bodyCapacity:int;
		public var m_bodies:Array;
		public var m_joints:Array;
		public var m_jointCapacity:int;
		public var m_contactCount:int;
		public var m_contacts:Array;
		public var m_contactCapacity:int;
		public var m_jointCount:int;
		public var m_allocator;
		public var m_bodyCount:int;

		private static var s_reportCR:b2ContactResult = new b2ContactResult();

		public function b2Island(_arg1:int, _arg2:int, _arg3:int, _arg4, _arg5:b2ContactListener){
			var _local6:int;
			super();
			m_bodyCapacity = _arg1;
			m_contactCapacity = _arg2;
			m_jointCapacity = _arg3;
			m_bodyCount = 0;
			m_contactCount = 0;
			m_jointCount = 0;
			m_allocator = _arg4;
			m_listener = _arg5;
			m_bodies = new Array(_arg1);
			_local6 = 0;
			while (_local6 < _arg1) {
				m_bodies[_local6] = null;
				_local6++;
			};
			m_contacts = new Array(_arg2);
			_local6 = 0;
			while (_local6 < _arg2) {
				m_contacts[_local6] = null;
				_local6++;
			};
			m_joints = new Array(_arg3);
			_local6 = 0;
			while (_local6 < _arg3) {
				m_joints[_local6] = null;
				_local6++;
			};
			m_positionIterationCount = 0;
		}
		public function AddBody(_arg1:b2Body):void{
			var _local2 = m_bodyCount++;
			m_bodies[_local2] = _arg1;
		}
		public function AddJoint(_arg1:b2Joint):void{
			var _local2 = m_jointCount++;
			m_joints[_local2] = _arg1;
		}
		public function Report(_arg1:Array):void{
			var _local2:b2Mat22;
			var _local3:b2Vec2;
			var _local5:b2Contact;
			var _local6:b2ContactConstraint;
			var _local7:b2ContactResult;
			var _local8:b2Body;
			var _local9:int;
			var _local10:Array;
			var _local11:int;
			var _local12:b2Manifold;
			var _local13:int;
			var _local14:b2ManifoldPoint;
			var _local15:b2ContactConstraintPoint;
			if (m_listener == null){
				return;
			};
			var _local4:int;
			while (_local4 < m_contactCount) {
				_local5 = m_contacts[_local4];
				_local6 = _arg1[_local4];
				_local7 = s_reportCR;
				_local7.shape1 = _local5.m_shape1;
				_local7.shape2 = _local5.m_shape2;
				_local8 = _local7.shape1.m_body;
				_local9 = _local5.m_manifoldCount;
				_local10 = _local5.GetManifolds();
				_local11 = 0;
				while (_local11 < _local9) {
					_local12 = _local10[_local11];
					_local7.normal.SetV(_local12.normal);
					_local13 = 0;
					while (_local13 < _local12.pointCount) {
						_local14 = _local12.points[_local13];
						_local15 = _local6.points[_local13];
						_local7.position = _local8.GetWorldPoint(_local14.localPoint1);
						_local7.normalImpulse = _local15.normalImpulse;
						_local7.tangentImpulse = _local15.tangentImpulse;
						_local7.id.key = _local14.id.key;
						m_listener.Result(_local7);
						_local13++;
					};
					_local11++;
				};
				_local4++;
			};
		}
		public function AddContact(_arg1:b2Contact):void{
			var _local2 = m_contactCount++;
			m_contacts[_local2] = _arg1;
		}
		public function Solve(_arg1:b2TimeStep, _arg2:b2Vec2, _arg3:Boolean, _arg4:Boolean):void{
			var _local5:int;
			var _local6:b2Body;
			var _local7:b2Joint;
			var _local9:int;
			var _local10:Boolean;
			var _local11:Boolean;
			var _local12:Boolean;
			var _local13:Number;
			var _local14:Number;
			var _local15:Number;
			_local5 = 0;
			while (_local5 < m_bodyCount) {
				_local6 = m_bodies[_local5];
				if (_local6.IsStatic()){
				} else {
					_local6.m_linearVelocity.x = (_local6.m_linearVelocity.x + (_arg1.dt * (_arg2.x + (_local6.m_invMass * _local6.m_force.x))));
					_local6.m_linearVelocity.y = (_local6.m_linearVelocity.y + (_arg1.dt * (_arg2.y + (_local6.m_invMass * _local6.m_force.y))));
					_local6.m_angularVelocity = (_local6.m_angularVelocity + ((_arg1.dt * _local6.m_invI) * _local6.m_torque));
					_local6.m_force.SetZero();
					_local6.m_torque = 0;
					_local6.m_linearVelocity.Multiply(b2Math.b2Clamp((1 - (_arg1.dt * _local6.m_linearDamping)), 0, 1));
					_local6.m_angularVelocity = (_local6.m_angularVelocity * b2Math.b2Clamp((1 - (_arg1.dt * _local6.m_angularDamping)), 0, 1));
					if (_local6.m_linearVelocity.LengthSquared() > b2Settings.b2_maxLinearVelocitySquared){
						_local6.m_linearVelocity.Normalize();
						_local6.m_linearVelocity.x = (_local6.m_linearVelocity.x * b2Settings.b2_maxLinearVelocity);
						_local6.m_linearVelocity.y = (_local6.m_linearVelocity.y * b2Settings.b2_maxLinearVelocity);
					};
					if ((_local6.m_angularVelocity * _local6.m_angularVelocity) > b2Settings.b2_maxAngularVelocitySquared){
						if (_local6.m_angularVelocity < 0){
							_local6.m_angularVelocity = -(b2Settings.b2_maxAngularVelocity);
						} else {
							_local6.m_angularVelocity = b2Settings.b2_maxAngularVelocity;
						};
					};
				};
				_local5++;
			};
			var _local8:b2ContactSolver = new b2ContactSolver(_arg1, m_contacts, m_contactCount, m_allocator);
			_local8.InitVelocityConstraints(_arg1);
			_local5 = 0;
			while (_local5 < m_jointCount) {
				_local7 = m_joints[_local5];
				_local7.InitVelocityConstraints(_arg1);
				_local5++;
			};
			_local5 = 0;
			while (_local5 < _arg1.maxIterations) {
				_local8.SolveVelocityConstraints();
				_local9 = 0;
				while (_local9 < m_jointCount) {
					_local7 = m_joints[_local9];
					_local7.SolveVelocityConstraints(_arg1);
					_local9++;
				};
				_local5++;
			};
			_local8.FinalizeVelocityConstraints();
			_local5 = 0;
			while (_local5 < m_bodyCount) {
				_local6 = m_bodies[_local5];
				if (_local6.IsStatic()){
				} else {
					_local6.m_sweep.c0.SetV(_local6.m_sweep.c);
					_local6.m_sweep.a0 = _local6.m_sweep.a;
					_local6.m_sweep.c.x = (_local6.m_sweep.c.x + (_arg1.dt * _local6.m_linearVelocity.x));
					_local6.m_sweep.c.y = (_local6.m_sweep.c.y + (_arg1.dt * _local6.m_linearVelocity.y));
					_local6.m_sweep.a = (_local6.m_sweep.a + (_arg1.dt * _local6.m_angularVelocity));
					_local6.SynchronizeTransform();
				};
				_local5++;
			};
			if (_arg3){
				_local5 = 0;
				while (_local5 < m_jointCount) {
					_local7 = m_joints[_local5];
					_local7.InitPositionConstraints();
					_local5++;
				};
				m_positionIterationCount = 0;
				while (m_positionIterationCount < _arg1.maxIterations) {
					_local10 = _local8.SolvePositionConstraints(b2Settings.b2_contactBaumgarte);
					_local11 = true;
					_local5 = 0;
					while (_local5 < m_jointCount) {
						_local7 = m_joints[_local5];
						_local12 = _local7.SolvePositionConstraints();
						_local11 = ((_local11) && (_local12));
						_local5++;
					};
					if (((_local10) && (_local11))){
						break;
					};
					m_positionIterationCount++;
				};
			};
			Report(_local8.m_constraints);
			if (_arg4){
				_local13 = Number.MAX_VALUE;
				_local14 = (b2Settings.b2_linearSleepTolerance * b2Settings.b2_linearSleepTolerance);
				_local15 = (b2Settings.b2_angularSleepTolerance * b2Settings.b2_angularSleepTolerance);
				_local5 = 0;
				while (_local5 < m_bodyCount) {
					_local6 = m_bodies[_local5];
					if (_local6.m_invMass == 0){
					} else {
						if ((_local6.m_flags & b2Body.e_allowSleepFlag) == 0){
							_local6.m_sleepTime = 0;
							_local13 = 0;
						};
						if (((((((_local6.m_flags & b2Body.e_allowSleepFlag) == 0)) || (((_local6.m_angularVelocity * _local6.m_angularVelocity) > _local15)))) || ((b2Math.b2Dot(_local6.m_linearVelocity, _local6.m_linearVelocity) > _local14)))){
							_local6.m_sleepTime = 0;
							_local13 = 0;
						} else {
							_local6.m_sleepTime = (_local6.m_sleepTime + _arg1.dt);
							_local13 = b2Math.b2Min(_local13, _local6.m_sleepTime);
						};
					};
					_local5++;
				};
				if (_local13 >= b2Settings.b2_timeToSleep){
					_local5 = 0;
					while (_local5 < m_bodyCount) {
						_local6 = m_bodies[_local5];
						m_bodies[_local5].m_flags = (_local6.m_flags | b2Body.e_sleepFlag);
						_local6.m_linearVelocity.SetZero();
						_local6.m_angularVelocity = 0;
						_local5++;
					};
				};
			};
		}
		public function Clear():void{
			m_bodyCount = 0;
			m_contactCount = 0;
			m_jointCount = 0;
		}
		public function SolveTOI(_arg1:b2TimeStep):void{
			var _local2:int;
			var _local5:b2Body;
			var _local6:Boolean;
			var _local3:b2ContactSolver = new b2ContactSolver(_arg1, m_contacts, m_contactCount, m_allocator);
			_local2 = 0;
			while (_local2 < _arg1.maxIterations) {
				_local3.SolveVelocityConstraints();
				_local2++;
			};
			_local2 = 0;
			while (_local2 < m_bodyCount) {
				_local5 = m_bodies[_local2];
				if (_local5.IsStatic()){
				} else {
					_local5.m_sweep.c0.SetV(_local5.m_sweep.c);
					_local5.m_sweep.a0 = _local5.m_sweep.a;
					_local5.m_sweep.c.x = (_local5.m_sweep.c.x + (_arg1.dt * _local5.m_linearVelocity.x));
					_local5.m_sweep.c.y = (_local5.m_sweep.c.y + (_arg1.dt * _local5.m_linearVelocity.y));
					_local5.m_sweep.a = (_local5.m_sweep.a + (_arg1.dt * _local5.m_angularVelocity));
					_local5.SynchronizeTransform();
				};
				_local2++;
			};
			var _local4:Number = 0.75;
			_local2 = 0;
			while (_local2 < _arg1.maxIterations) {
				_local6 = _local3.SolvePositionConstraints(_local4);
				if (_local6){
					break;
				};
				_local2++;
			};
			Report(_local3.m_constraints);
		}

	}
}//package Box2D.Dynamics 

****************

//b2TimeStep (Box2D.Dynamics.b2TimeStep)
package Box2D.Dynamics {

	public class b2TimeStep {

		public var warmStarting:Boolean;
		public var positionCorrection:Boolean;
		public var dt:Number;
		public var maxIterations:int;
		public var dtRatio:Number;
		public var inv_dt:Number;

	}
}//package Box2D.Dynamics 

****************

//b2World (Box2D.Dynamics.b2World)
package Box2D.Dynamics {
	import Box2D.Collision.*;
	import Box2D.Dynamics.Contacts.*;
	import Box2D.Collision.Shapes.*;
	import Box2D.Common.Math.*;
	import Box2D.Dynamics.Joints.*;
	import Box2D.Common.*;

	public class b2World {

		public var m_inv_dt0:Number;
		public var m_boundaryListener:b2BoundaryListener;
		public var m_contactList:b2Contact;
		public var m_blockAllocator;
		public var m_contactListener:b2ContactListener;
		public var m_allowSleep:Boolean;
		public var m_broadPhase:b2BroadPhase;
		public var m_destructionListener:b2DestructionListener;
		public var m_jointCount:int;
		public var m_bodyCount:int;
		public var m_lock:Boolean;
		public var m_positionIterationCount:int;
		public var m_groundBody:b2Body;
		public var m_contactCount:int;
		public var m_debugDraw:b2DebugDraw;
		public var m_contactFilter:b2ContactFilter;
		public var m_bodyList:b2Body;
		public var m_stackAllocator;
		public var m_jointList:b2Joint;
		public var m_gravity:b2Vec2;
		public var m_contactManager:b2ContactManager;

		private static var s_jointColor:b2Color = new b2Color(0.5, 0.8, 0.8);
		public static var m_continuousPhysics:Boolean;
		public static var m_warmStarting:Boolean;
		private static var s_coreColor:b2Color = new b2Color(0.9, 0.6, 0.6);
		public static var m_positionCorrection:Boolean;
		private static var s_xf:b2XForm = new b2XForm();

		public function b2World(_arg1:b2AABB, _arg2:b2Vec2, _arg3:Boolean){
			m_contactManager = new b2ContactManager();
			super();
			m_destructionListener = null;
			m_boundaryListener = null;
			m_contactFilter = b2ContactFilter.b2_defaultFilter;
			m_contactListener = null;
			m_debugDraw = null;
			m_bodyList = null;
			m_contactList = null;
			m_jointList = null;
			m_bodyCount = 0;
			m_contactCount = 0;
			m_jointCount = 0;
			m_positionCorrection = true;
			m_warmStarting = true;
			m_continuousPhysics = true;
			m_allowSleep = _arg3;
			m_gravity = _arg2;
			m_lock = false;
			m_inv_dt0 = 0;
			m_contactManager.m_world = this;
			m_broadPhase = new b2BroadPhase(_arg1, m_contactManager);
			var _local4:b2BodyDef = new b2BodyDef();
			m_groundBody = CreateBody(_local4);
		}
		public function DrawJoint(_arg1:b2Joint):void{
			var _local11:b2PulleyJoint;
			var _local12:b2Vec2;
			var _local13:b2Vec2;
			var _local2:b2Body = _arg1.m_body1;
			var _local3:b2Body = _arg1.m_body2;
			var _local4:b2XForm = _local2.m_xf;
			var _local5:b2XForm = _local3.m_xf;
			var _local6:b2Vec2 = _local4.position;
			var _local7:b2Vec2 = _local5.position;
			var _local8:b2Vec2 = _arg1.GetAnchor1();
			var _local9:b2Vec2 = _arg1.GetAnchor2();
			var _local10:b2Color = s_jointColor;
			switch (_arg1.m_type){
				case b2Joint.e_distanceJoint:
					m_debugDraw.DrawSegment(_local8, _local9, _local10);
					break;
				case b2Joint.e_pulleyJoint:
					_local11 = (_arg1 as b2PulleyJoint);
					_local12 = _local11.GetGroundAnchor1();
					_local13 = _local11.GetGroundAnchor2();
					m_debugDraw.DrawSegment(_local12, _local8, _local10);
					m_debugDraw.DrawSegment(_local13, _local9, _local10);
					m_debugDraw.DrawSegment(_local12, _local13, _local10);
					break;
				case b2Joint.e_mouseJoint:
					m_debugDraw.DrawSegment(_local8, _local9, _local10);
					break;
				default:
					if (_local2 != m_groundBody){
						m_debugDraw.DrawSegment(_local6, _local8, _local10);
					};
					m_debugDraw.DrawSegment(_local8, _local9, _local10);
					if (_local3 != m_groundBody){
						m_debugDraw.DrawSegment(_local7, _local9, _local10);
					};
			};
		}
		public function Refilter(_arg1:b2Shape):void{
			_arg1.RefilterProxy(m_broadPhase, _arg1.m_body.m_xf);
		}
		public function SetDebugDraw(_arg1:b2DebugDraw):void{
			m_debugDraw = _arg1;
		}
		public function SetContinuousPhysics(_arg1:Boolean):void{
			m_continuousPhysics = _arg1;
		}
		public function GetProxyCount():int{
			return (m_broadPhase.m_proxyCount);
		}
		public function DrawDebugData():void{
			var _local2:int;
			var _local3:b2Body;
			var _local4:b2Shape;
			var _local5:b2Joint;
			var _local6:b2BroadPhase;
			var _local11:b2XForm;
			var _local15:Boolean;
			var _local16:uint;
			var _local17:b2Pair;
			var _local18:b2Proxy;
			var _local19:b2Proxy;
			var _local20:b2Vec2;
			var _local21:b2Vec2;
			var _local22:b2Proxy;
			var _local23:b2PolygonShape;
			var _local24:b2OBB;
			var _local25:b2Vec2;
			var _local26:b2Mat22;
			var _local27:b2Vec2;
			var _local28:Number;
			if (m_debugDraw == null){
				return;
			};
			m_debugDraw.m_sprite.graphics.clear();
			var _local1:uint = m_debugDraw.GetFlags();
			var _local7:b2Vec2 = new b2Vec2();
			var _local8:b2Vec2 = new b2Vec2();
			var _local9:b2Vec2 = new b2Vec2();
			var _local10:b2Color = new b2Color(0, 0, 0);
			var _local12:b2AABB = new b2AABB();
			var _local13:b2AABB = new b2AABB();
			var _local14:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2(), new b2Vec2()];
			if ((_local1 & b2DebugDraw.e_shapeBit)){
				_local15 = ((_local1 & b2DebugDraw.e_coreShapeBit) == b2DebugDraw.e_coreShapeBit);
				_local3 = m_bodyList;
				while (_local3) {
					_local11 = _local3.m_xf;
					_local4 = _local3.GetShapeList();
					while (_local4) {
						if (_local3.IsStatic()){
							DrawShape(_local4, _local11, new b2Color(0.5, 0.9, 0.5), _local15);
						} else {
							if (_local3.IsSleeping()){
								DrawShape(_local4, _local11, new b2Color(0.5, 0.5, 0.9), _local15);
							} else {
								DrawShape(_local4, _local11, new b2Color(0.9, 0.9, 0.9), _local15);
							};
						};
						_local4 = _local4.m_next;
					};
					_local3 = _local3.m_next;
				};
			};
			if ((_local1 & b2DebugDraw.e_jointBit)){
				_local5 = m_jointList;
				while (_local5) {
					DrawJoint(_local5);
					_local5 = _local5.m_next;
				};
			};
			if ((_local1 & b2DebugDraw.e_pairBit)){
				_local6 = m_broadPhase;
				_local7.Set((1 / _local6.m_quantizationFactor.x), (1 / _local6.m_quantizationFactor.y));
				_local10.Set(0.9, 0.9, 0.3);
				_local2 = 0;
				while (_local2 < b2Pair.b2_tableCapacity) {
					_local16 = _local6.m_pairManager.m_hashTable[_local2];
					while (_local16 != b2Pair.b2_nullPair) {
						_local17 = _local6.m_pairManager.m_pairs[_local16];
						_local18 = _local6.m_proxyPool[_local17.proxyId1];
						_local19 = _local6.m_proxyPool[_local17.proxyId2];
						_local12.lowerBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local18.lowerBounds[0]].value));
						_local12.lowerBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local18.lowerBounds[1]].value));
						_local12.upperBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local18.upperBounds[0]].value));
						_local12.upperBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local18.upperBounds[1]].value));
						_local13.lowerBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local19.lowerBounds[0]].value));
						_local13.lowerBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local19.lowerBounds[1]].value));
						_local13.upperBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local19.upperBounds[0]].value));
						_local13.upperBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local19.upperBounds[1]].value));
						_local8.x = (0.5 * (_local12.lowerBound.x + _local12.upperBound.x));
						_local8.y = (0.5 * (_local12.lowerBound.y + _local12.upperBound.y));
						_local9.x = (0.5 * (_local13.lowerBound.x + _local13.upperBound.x));
						_local9.y = (0.5 * (_local13.lowerBound.y + _local13.upperBound.y));
						m_debugDraw.DrawSegment(_local8, _local9, _local10);
						_local16 = _local17.next;
					};
					_local2++;
				};
			};
			if ((_local1 & b2DebugDraw.e_aabbBit)){
				_local6 = m_broadPhase;
				_local20 = _local6.m_worldAABB.lowerBound;
				_local21 = _local6.m_worldAABB.upperBound;
				_local7.Set((1 / _local6.m_quantizationFactor.x), (1 / _local6.m_quantizationFactor.y));
				_local10.Set(0.9, 0.3, 0.9);
				_local2 = 0;
				while (_local2 < b2Settings.b2_maxProxies) {
					_local22 = _local6.m_proxyPool[_local2];
					if (_local22.IsValid() == false){
					} else {
						_local12.lowerBound.x = (_local20.x + (_local7.x * _local6.m_bounds[0][_local22.lowerBounds[0]].value));
						_local12.lowerBound.y = (_local20.y + (_local7.y * _local6.m_bounds[1][_local22.lowerBounds[1]].value));
						_local12.upperBound.x = (_local20.x + (_local7.x * _local6.m_bounds[0][_local22.upperBounds[0]].value));
						_local12.upperBound.y = (_local20.y + (_local7.y * _local6.m_bounds[1][_local22.upperBounds[1]].value));
						_local14[0].Set(_local12.lowerBound.x, _local12.lowerBound.y);
						_local14[1].Set(_local12.upperBound.x, _local12.lowerBound.y);
						_local14[2].Set(_local12.upperBound.x, _local12.upperBound.y);
						_local14[3].Set(_local12.lowerBound.x, _local12.upperBound.y);
						m_debugDraw.DrawPolygon(_local14, 4, _local10);
					};
					_local2++;
				};
				_local14[0].Set(_local20.x, _local20.y);
				_local14[1].Set(_local21.x, _local20.y);
				_local14[2].Set(_local21.x, _local21.y);
				_local14[3].Set(_local20.x, _local21.y);
				m_debugDraw.DrawPolygon(_local14, 4, new b2Color(0.3, 0.9, 0.9));
			};
			if ((_local1 & b2DebugDraw.e_obbBit)){
				_local10.Set(0.5, 0.3, 0.5);
				_local3 = m_bodyList;
				while (_local3) {
					_local11 = _local3.m_xf;
					_local4 = _local3.GetShapeList();
					while (_local4) {
						if (_local4.m_type != b2Shape.e_polygonShape){
						} else {
							_local23 = (_local4 as b2PolygonShape);
							_local24 = _local23.GetOBB();
							_local25 = _local24.extents;
							_local14[0].Set(-(_local25.x), -(_local25.y));
							_local14[1].Set(_local25.x, -(_local25.y));
							_local14[2].Set(_local25.x, _local25.y);
							_local14[3].Set(-(_local25.x), _local25.y);
							_local2 = 0;
							while (_local2 < 4) {
								_local26 = _local24.R;
								_local27 = _local14[_local2];
								_local28 = (_local24.center.x + ((_local26.col1.x * _local27.x) + (_local26.col2.x * _local27.y)));
								_local14[_local2].y = (_local24.center.y + ((_local26.col1.y * _local27.x) + (_local26.col2.y * _local27.y)));
								_local14[_local2].x = _local28;
								_local26 = _local11.R;
								_local28 = (_local11.position.x + ((_local26.col1.x * _local27.x) + (_local26.col2.x * _local27.y)));
								_local14[_local2].y = (_local11.position.y + ((_local26.col1.y * _local27.x) + (_local26.col2.y * _local27.y)));
								_local14[_local2].x = _local28;
								_local2++;
							};
							m_debugDraw.DrawPolygon(_local14, 4, _local10);
						};
						_local4 = _local4.m_next;
					};
					_local3 = _local3.m_next;
				};
			};
			if ((_local1 & b2DebugDraw.e_centerOfMassBit)){
				_local3 = m_bodyList;
				while (_local3) {
					_local11 = s_xf;
					_local11.R = _local3.m_xf.R;
					_local11.position = _local3.GetWorldCenter();
					m_debugDraw.DrawXForm(_local11);
					_local3 = _local3.m_next;
				};
			};
		}
		public function DestroyBody(_arg1:b2Body):void{
			var _local4:b2JointEdge;
			var _local5:b2Shape;
			if (m_lock == true){
				return;
			};
			var _local2:b2JointEdge = _arg1.m_jointList;
			while (_local2) {
				_local4 = _local2;
				_local2 = _local2.next;
				if (m_destructionListener){
					m_destructionListener.SayGoodbyeJoint(_local4.joint);
				};
				DestroyJoint(_local4.joint);
			};
			var _local3:b2Shape = _arg1.m_shapeList;
			while (_local3) {
				_local5 = _local3;
				_local3 = _local3.m_next;
				if (m_destructionListener){
					m_destructionListener.SayGoodbyeShape(_local5);
				};
				_local5.DestroyProxy(m_broadPhase);
				b2Shape.Destroy(_local5, m_blockAllocator);
			};
			if (_arg1.m_prev){
				_arg1.m_prev.m_next = _arg1.m_next;
			};
			if (_arg1.m_next){
				_arg1.m_next.m_prev = _arg1.m_prev;
			};
			if (_arg1 == m_bodyList){
				m_bodyList = _arg1.m_next;
			};
			m_bodyCount--;
		}
		public function SetContactFilter(_arg1:b2ContactFilter):void{
			m_contactFilter = _arg1;
		}
		public function GetGroundBody():b2Body{
			return (m_groundBody);
		}
		public function DrawShape(_arg1:b2Shape, _arg2:b2XForm, _arg3:b2Color, _arg4:Boolean):void{
			var _local6:b2CircleShape;
			var _local7:b2Vec2;
			var _local8:Number;
			var _local9:b2Vec2;
			var _local10:int;
			var _local11:b2PolygonShape;
			var _local12:int;
			var _local13:Array;
			var _local14:Array;
			var _local15:Array;
			var _local5:b2Color = s_coreColor;
			switch (_arg1.m_type){
				case b2Shape.e_circleShape:
					_local6 = (_arg1 as b2CircleShape);
					_local7 = b2Math.b2MulX(_arg2, _local6.m_localPosition);
					_local8 = _local6.m_radius;
					_local9 = _arg2.R.col1;
					m_debugDraw.DrawSolidCircle(_local7, _local8, _local9, _arg3);
					if (_arg4){
						m_debugDraw.DrawCircle(_local7, (_local8 - b2Settings.b2_toiSlop), _local5);
					};
					break;
				case b2Shape.e_polygonShape:
					_local11 = (_arg1 as b2PolygonShape);
					_local12 = _local11.GetVertexCount();
					_local13 = _local11.GetVertices();
					_local14 = new Array(b2Settings.b2_maxPolygonVertices);
					_local10 = 0;
					while (_local10 < _local12) {
						_local14[_local10] = b2Math.b2MulX(_arg2, _local13[_local10]);
						_local10++;
					};
					m_debugDraw.DrawSolidPolygon(_local14, _local12, _arg3);
					if (_arg4){
						_local15 = _local11.GetCoreVertices();
						_local10 = 0;
						while (_local10 < _local12) {
							_local14[_local10] = b2Math.b2MulX(_arg2, _local15[_local10]);
							_local10++;
						};
						m_debugDraw.DrawPolygon(_local14, _local12, _local5);
					};
					break;
			};
		}
		public function GetContactCount():int{
			return (m_contactCount);
		}
		public function Solve(_arg1:b2TimeStep):void{
			var _local2:b2Body;
			var _local9:int;
			var _local10:int;
			var _local11:b2Body;
			var _local12:b2ContactEdge;
			var _local13:b2JointEdge;
			var _local14:Boolean;
			m_positionIterationCount = 0;
			var _local3:b2Island = new b2Island(m_bodyCount, m_contactCount, m_jointCount, m_stackAllocator, m_contactListener);
			_local2 = m_bodyList;
			while (_local2) {
				_local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag));
				_local2 = _local2.m_next;
			};
			var _local4:b2Contact = m_contactList;
			while (_local4) {
				_local4.m_flags = (_local4.m_flags & ~(b2Contact.e_islandFlag));
				_local4 = _local4.m_next;
			};
			var _local5:b2Joint = m_jointList;
			while (_local5) {
				_local5.m_islandFlag = false;
				_local5 = _local5.m_next;
			};
			var _local6:int = m_bodyCount;
			var _local7:Array = new Array(_local6);
			var _local8:b2Body = m_bodyList;
			while (_local8) {
				if ((_local8.m_flags & ((b2Body.e_islandFlag | b2Body.e_sleepFlag) | b2Body.e_frozenFlag))){
				} else {
					if (_local8.IsStatic()){
					} else {
						_local3.Clear();
						_local9 = 0;
						var _temp1 = _local9;
						_local9 = (_local9 + 1);
						var _local15 = _temp1;
						_local7[_local15] = _local8;
						_local8.m_flags = (_local8.m_flags | b2Body.e_islandFlag);
						while (_local9 > 0) {
							--_local9;
							_local2 = _local7[_local9];
							_local3.AddBody(_local2);
							_local2.m_flags = (_local2.m_flags & ~(b2Body.e_sleepFlag));
							if (_local2.IsStatic()){
							} else {
								_local12 = _local2.m_contactList;
								while (_local12) {
									if ((_local12.contact.m_flags & (b2Contact.e_islandFlag | b2Contact.e_nonSolidFlag))){
									} else {
										if (_local12.contact.m_manifoldCount == 0){
										} else {
											_local3.AddContact(_local12.contact);
											_local12.contact.m_flags = (_local12.contact.m_flags | b2Contact.e_islandFlag);
											_local11 = _local12.other;
											if ((_local11.m_flags & b2Body.e_islandFlag)){
											} else {
												var _temp2 = _local9;
												_local9 = (_local9 + 1);
												var _local16 = _temp2;
												_local7[_local16] = _local11;
												_local11.m_flags = (_local11.m_flags | b2Body.e_islandFlag);
											};
										};
									};
									_local12 = _local12.next;
								};
								_local13 = _local2.m_jointList;
								while (_local13) {
									if (_local13.joint.m_islandFlag == true){
									} else {
										_local3.AddJoint(_local13.joint);
										_local13.joint.m_islandFlag = true;
										_local11 = _local13.other;
										if ((_local11.m_flags & b2Body.e_islandFlag)){
										} else {
											var _temp3 = _local9;
											_local9 = (_local9 + 1);
											_local16 = _temp3;
											_local7[_local16] = _local11;
											_local11.m_flags = (_local11.m_flags | b2Body.e_islandFlag);
										};
									};
									_local13 = _local13.next;
								};
							};
						};
						_local3.Solve(_arg1, m_gravity, m_positionCorrection, m_allowSleep);
						if (_local3.m_positionIterationCount > m_positionIterationCount){
							m_positionIterationCount = _local3.m_positionIterationCount;
						};
						_local10 = 0;
						while (_local10 < _local3.m_bodyCount) {
							_local2 = _local3.m_bodies[_local10];
							if (_local2.IsStatic()){
								_local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag));
							};
							_local10++;
						};
					};
				};
				_local8 = _local8.m_next;
			};
			_local2 = m_bodyList;
			while (_local2) {
				if ((_local2.m_flags & (b2Body.e_sleepFlag | b2Body.e_frozenFlag))){
				} else {
					if (_local2.IsStatic()){
					} else {
						_local14 = _local2.SynchronizeShapes();
						if ((((_local14 == false)) && (!((m_boundaryListener == null))))){
							m_boundaryListener.Violation(_local2);
						};
					};
				};
				_local2 = _local2.m_next;
			};
			m_broadPhase.Commit();
		}
		public function Query(_arg1:b2AABB, _arg2:Array, _arg3:int):int{
			var _local4:Array = new Array(_arg3);
			var _local5:int = m_broadPhase.QueryAABB(_arg1, _local4, _arg3);
			var _local6:int;
			while (_local6 < _local5) {
				_arg2[_local6] = _local4[_local6];
				_local6++;
			};
			return (_local5);
		}
		public function SetGravity(_arg1:b2Vec2):void{
			m_gravity = _arg1;
		}
		public function SolveTOI(_arg1:b2TimeStep):void{
			var _local2:b2Body;
			var _local3:b2Shape;
			var _local4:b2Shape;
			var _local5:b2Body;
			var _local6:b2Body;
			var _local7:b2ContactEdge;
			var _local11:b2Contact;
			var _local12:b2Contact;
			var _local13:Number;
			var _local14:b2Body;
			var _local15:int;
			var _local16:b2TimeStep;
			var _local17:int;
			var _local18:Number;
			var _local19:Number;
			var _local20:b2Body;
			var _local21:Boolean;
			var _local8:b2Island = new b2Island(m_bodyCount, b2Settings.b2_maxTOIContactsPerIsland, 0, m_stackAllocator, m_contactListener);
			var _local9:int = m_bodyCount;
			var _local10:Array = new Array(_local9);
			_local2 = m_bodyList;
			while (_local2) {
				_local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag));
				_local2.m_sweep.t0 = 0;
				_local2 = _local2.m_next;
			};
			_local11 = m_contactList;
			while (_local11) {
				_local11.m_flags = (_local11.m_flags & ~((b2Contact.e_toiFlag | b2Contact.e_islandFlag)));
				_local11 = _local11.m_next;
			};
			while (true) {
				_local12 = null;
				_local13 = 1;
				_local11 = m_contactList;
				for (;_local11;(_local11 = _local11.m_next)) {
					if ((_local11.m_flags & (b2Contact.e_slowFlag | b2Contact.e_nonSolidFlag))){
					} else {
						_local18 = 1;
						if ((_local11.m_flags & b2Contact.e_toiFlag)){
							_local18 = _local11.m_toi;
						} else {
							_local3 = _local11.m_shape1;
							_local4 = _local11.m_shape2;
							_local5 = _local3.m_body;
							_local6 = _local4.m_body;
							if (((((_local5.IsStatic()) || (_local5.IsSleeping()))) && (((_local6.IsStatic()) || (_local6.IsSleeping()))))){
								continue;
							};
							_local19 = _local5.m_sweep.t0;
							if (_local5.m_sweep.t0 < _local6.m_sweep.t0){
								_local19 = _local6.m_sweep.t0;
								_local5.m_sweep.Advance(_local19);
							} else {
								if (_local6.m_sweep.t0 < _local5.m_sweep.t0){
									_local19 = _local5.m_sweep.t0;
									_local6.m_sweep.Advance(_local19);
								};
							};
							_local18 = b2TimeOfImpact.TimeOfImpact(_local11.m_shape1, _local5.m_sweep, _local11.m_shape2, _local6.m_sweep);
							if ((((_local18 > 0)) && ((_local18 < 1)))){
								_local18 = (((1 - _local18) * _local19) + _local18);
								if (_local18 > 1){
									_local18 = 1;
								};
							};
							_local11.m_toi = _local18;
							_local11.m_flags = (_local11.m_flags | b2Contact.e_toiFlag);
						};
						if ((((Number.MIN_VALUE < _local18)) && ((_local18 < _local13)))){
							_local12 = _local11;
							_local13 = _local18;
						};
					};
				};
				if ((((_local12 == null)) || (((1 - (100 * Number.MIN_VALUE)) < _local13)))){
					break;
				};
				_local3 = _local12.m_shape1;
				_local4 = _local12.m_shape2;
				_local5 = _local3.m_body;
				_local6 = _local4.m_body;
				_local5.Advance(_local13);
				_local6.Advance(_local13);
				_local12.Update(m_contactListener);
				_local12.m_flags = (_local12.m_flags & ~(b2Contact.e_toiFlag));
				if (_local12.m_manifoldCount == 0){
				} else {
					_local14 = _local5;
					if (_local14.IsStatic()){
						_local14 = _local6;
					};
					_local8.Clear();
					_local15 = 0;
					var _temp1 = _local15;
					_local15 = (_local15 + 1);
					var _local22 = _temp1;
					_local10[_local22] = _local14;
					_local14.m_flags = (_local14.m_flags | b2Body.e_islandFlag);
					while (_local15 > 0) {
						--_local15;
						_local2 = _local10[_local15];
						_local8.AddBody(_local2);
						_local2.m_flags = (_local2.m_flags & ~(b2Body.e_sleepFlag));
						if (_local2.IsStatic()){
						} else {
							_local7 = _local2.m_contactList;
							while (_local7) {
								if (_local8.m_contactCount == _local8.m_contactCapacity){
								} else {
									if ((_local7.contact.m_flags & ((b2Contact.e_islandFlag | b2Contact.e_slowFlag) | b2Contact.e_nonSolidFlag))){
									} else {
										if (_local7.contact.m_manifoldCount == 0){
										} else {
											_local8.AddContact(_local7.contact);
											_local7.contact.m_flags = (_local7.contact.m_flags | b2Contact.e_islandFlag);
											_local20 = _local7.other;
											if ((_local20.m_flags & b2Body.e_islandFlag)){
											} else {
												if (_local20.IsStatic() == false){
													_local20.Advance(_local13);
													_local20.WakeUp();
												};
												var _temp2 = _local15;
												_local15 = (_local15 + 1);
												var _local23 = _temp2;
												_local10[_local23] = _local20;
												_local20.m_flags = (_local20.m_flags | b2Body.e_islandFlag);
											};
										};
									};
								};
								_local7 = _local7.next;
							};
						};
					};
					_local16 = new b2TimeStep();
					_local16.dt = ((1 - _local13) * _arg1.dt);
					_local16.inv_dt = (1 / _local16.dt);
					_local16.maxIterations = _arg1.maxIterations;
					_local8.SolveTOI(_local16);
					_local17 = 0;
					while (_local17 < _local8.m_bodyCount) {
						_local2 = _local8.m_bodies[_local17];
						_local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag));
						if ((_local2.m_flags & (b2Body.e_sleepFlag | b2Body.e_frozenFlag))){
						} else {
							if (_local2.IsStatic()){
							} else {
								_local21 = _local2.SynchronizeShapes();
								if ((((_local21 == false)) && (!((m_boundaryListener == null))))){
									m_boundaryListener.Violation(_local2);
								};
								_local7 = _local2.m_contactList;
								while (_local7) {
									_local7.contact.m_flags = (_local7.contact.m_flags & ~(b2Contact.e_toiFlag));
									_local7 = _local7.next;
								};
							};
						};
						_local17++;
					};
					_local17 = 0;
					while (_local17 < _local8.m_contactCount) {
						_local11 = _local8.m_contacts[_local17];
						_local8.m_contacts[_local17].m_flags = (_local11.m_flags & ~((b2Contact.e_toiFlag | b2Contact.e_islandFlag)));
						_local17++;
					};
					m_broadPhase.Commit();
				};
			};
		}
		public function GetJointList():b2Joint{
			return (m_jointList);
		}
		public function GetBodyList():b2Body{
			return (m_bodyList);
		}
		public function GetPairCount():int{
			return (m_broadPhase.m_pairManager.m_pairCount);
		}
		public function Validate():void{
			m_broadPhase.Validate();
		}
		public function SetWarmStarting(_arg1:Boolean):void{
			m_warmStarting = _arg1;
		}
		public function SetPositionCorrection(_arg1:Boolean):void{
			m_positionCorrection = _arg1;
		}
		public function CreateJoint(_arg1:b2JointDef):b2Joint{
			var _local3:b2Body;
			var _local4:b2Shape;
			var _local2:b2Joint = b2Joint.Create(_arg1, m_blockAllocator);
			_local2.m_prev = null;
			_local2.m_next = m_jointList;
			if (m_jointList){
				m_jointList.m_prev = _local2;
			};
			m_jointList = _local2;
			m_jointCount++;
			_local2.m_node1.joint = _local2;
			_local2.m_node1.other = _local2.m_body2;
			_local2.m_node1.prev = null;
			_local2.m_node1.next = _local2.m_body1.m_jointList;
			if (_local2.m_body1.m_jointList){
				_local2.m_body1.m_jointList.prev = _local2.m_node1;
			};
			_local2.m_body1.m_jointList = _local2.m_node1;
			_local2.m_node2.joint = _local2;
			_local2.m_node2.other = _local2.m_body1;
			_local2.m_node2.prev = null;
			_local2.m_node2.next = _local2.m_body2.m_jointList;
			if (_local2.m_body2.m_jointList){
				_local2.m_body2.m_jointList.prev = _local2.m_node2;
			};
			_local2.m_body2.m_jointList = _local2.m_node2;
			if (_arg1.collideConnected == false){
				_local3 = ((_arg1.body1.m_shapeCount < _arg1.body2.m_shapeCount)) ? _arg1.body1 : _arg1.body2;
				_local4 = _local3.m_shapeList;
				while (_local4) {
					_local4.RefilterProxy(m_broadPhase, _local3.m_xf);
					_local4 = _local4.m_next;
				};
			};
			return (_local2);
		}
		public function DestroyJoint(_arg1:b2Joint):void{
			var _local5:b2Body;
			var _local6:b2Shape;
			var _local2:Boolean = _arg1.m_collideConnected;
			if (_arg1.m_prev){
				_arg1.m_prev.m_next = _arg1.m_next;
			};
			if (_arg1.m_next){
				_arg1.m_next.m_prev = _arg1.m_prev;
			};
			if (_arg1 == m_jointList){
				m_jointList = _arg1.m_next;
			};
			var _local3:b2Body = _arg1.m_body1;
			var _local4:b2Body = _arg1.m_body2;
			_local3.WakeUp();
			_local4.WakeUp();
			if (_arg1.m_node1.prev){
				_arg1.m_node1.prev.next = _arg1.m_node1.next;
			};
			if (_arg1.m_node1.next){
				_arg1.m_node1.next.prev = _arg1.m_node1.prev;
			};
			if (_arg1.m_node1 == _local3.m_jointList){
				_local3.m_jointList = _arg1.m_node1.next;
			};
			_arg1.m_node1.prev = null;
			_arg1.m_node1.next = null;
			if (_arg1.m_node2.prev){
				_arg1.m_node2.prev.next = _arg1.m_node2.next;
			};
			if (_arg1.m_node2.next){
				_arg1.m_node2.next.prev = _arg1.m_node2.prev;
			};
			if (_arg1.m_node2 == _local4.m_jointList){
				_local4.m_jointList = _arg1.m_node2.next;
			};
			_arg1.m_node2.prev = null;
			_arg1.m_node2.next = null;
			b2Joint.Destroy(_arg1, m_blockAllocator);
			m_jointCount--;
			if (_local2 == false){
				_local5 = ((_local3.m_shapeCount < _local4.m_shapeCount)) ? _local3 : _local4;
				_local6 = _local5.m_shapeList;
				while (_local6) {
					_local6.RefilterProxy(m_broadPhase, _local5.m_xf);
					_local6 = _local6.m_next;
				};
			};
		}
		public function SetContactListener(_arg1:b2ContactListener):void{
			m_contactListener = _arg1;
		}
		public function CreateBody(_arg1:b2BodyDef):b2Body{
			if (m_lock == true){
				return (null);
			};
			var _local2:b2Body = new b2Body(_arg1, this);
			_local2.m_prev = null;
			_local2.m_next = m_bodyList;
			if (m_bodyList){
				m_bodyList.m_prev = _local2;
			};
			m_bodyList = _local2;
			m_bodyCount++;
			return (_local2);
		}
		public function SetBoundaryListener(_arg1:b2BoundaryListener):void{
			m_boundaryListener = _arg1;
		}
		public function SetDestructionListener(_arg1:b2DestructionListener):void{
			m_destructionListener = _arg1;
		}
		public function Step(_arg1:Number, _arg2:int):void{
			m_lock = true;
			var _local3:b2TimeStep = new b2TimeStep();
			_local3.dt = _arg1;
			_local3.maxIterations = _arg2;
			if (_arg1 > 0){
				_local3.inv_dt = (1 / _arg1);
			} else {
				_local3.inv_dt = 0;
			};
			_local3.dtRatio = (m_inv_dt0 * _arg1);
			_local3.positionCorrection = m_positionCorrection;
			_local3.warmStarting = m_warmStarting;
			m_contactManager.Collide();
			if (_local3.dt > 0){
				Solve(_local3);
			};
			if (((m_continuousPhysics) && ((_local3.dt > 0)))){
				SolveTOI(_local3);
			};
			DrawDebugData();
			m_inv_dt0 = _local3.inv_dt;
			m_lock = false;
		}
		public function GetBodyCount():int{
			return (m_bodyCount);
		}
		public function GetJointCount():int{
			return (m_jointCount);
		}

	}
}//package Box2D.Dynamics 

****************

//Running_4 (Character_fla.Running_4)
package Character_fla {
	import flash.display.*;

	public dynamic class Running_4 extends MovieClip {

		public var left:MovieClip;

	}
}//package Character_fla 

****************

//CampaignInfo (com.google.analytics.campaign.CampaignInfo)
package com.google.analytics.campaign {
	import com.google.analytics.utils.*;

	public class CampaignInfo {

		private var _new:Boolean;
		private var _empty:Boolean;

		public function CampaignInfo(_arg1:Boolean=true, _arg2:Boolean=false){
			_empty = _arg1;
			_new = _arg2;
		}
		public function toURLString():String{
			var _local1:Variables = toVariables();
			return (_local1.toString());
		}
		public function isNew():Boolean{
			return (_new);
		}
		public function get utmcn():String{
			return ("1");
		}
		public function isEmpty():Boolean{
			return (_empty);
		}
		public function toVariables():Variables{
			var _local1:Variables = new Variables();
			_local1.URIencode = true;
			if (((!(isEmpty())) && (isNew()))){
				_local1.utmcn = utmcn;
			};
			if (((!(isEmpty())) && (!(isNew())))){
				_local1.utmcr = utmcr;
			};
			return (_local1);
		}
		public function get utmcr():String{
			return ("1");
		}

	}
}//package com.google.analytics.campaign 

****************

//CampaignKey (com.google.analytics.campaign.CampaignKey)
package com.google.analytics.campaign {

	public class CampaignKey {

		public var UCMD:String;// = "utm_medium"
		public var UCID:String;// = "utm_id"
		public var UCTR:String;// = "utm_term"
		public var UCSR:String;// = "utm_source"
		public var UCNO:String;// = "utm_nooverride"
		public var UCCN:String;// = "utm_campaign"
		public var UGCLID:String;// = "gclid"
		public var UCCT:String;// = "utm_content"

	}
}//package com.google.analytics.campaign 

****************

//CampaignManager (com.google.analytics.campaign.CampaignManager)
package com.google.analytics.campaign {
	import com.google.analytics.core.*;
	import com.google.analytics.v4.*;
	import com.google.analytics.debug.*;
	import com.google.analytics.utils.*;

	public class CampaignManager {

		private var _config:Configuration;
		private var _domainHash:Number;
		private var _debug:DebugConfiguration;
		private var _timeStamp:Number;
		private var _referrer:String;
		private var _buffer:Buffer;

		public static const trackingDelimiter:String = "|";

		public function CampaignManager(_arg1:Configuration, _arg2:DebugConfiguration, _arg3:Buffer, _arg4:Number, _arg5:String, _arg6:Number){
			_config = _arg1;
			_debug = _arg2;
			_buffer = _arg3;
			_domainHash = _arg4;
			_referrer = _arg5;
			_timeStamp = _arg6;
		}
		public function getCampaignInformation(_arg1:String, _arg2:Boolean):CampaignInfo{
			var _local4:CampaignTracker;
			var _local8:CampaignTracker;
			var _local9:int;
			var _local3:CampaignInfo = new CampaignInfo();
			var _local5:Boolean;
			var _local6:Boolean;
			var _local7:int;
			if (((_config.allowLinker) && (_buffer.isGenuine()))){
				if (!_buffer.hasUTMZ()){
					return (_local3);
				};
			};
			_local4 = getTrackerFromSearchString(_arg1);
			if (isValid(_local4)){
				_local6 = hasNoOverride(_arg1);
				if (((_local6) && (!(_buffer.hasUTMZ())))){
					return (_local3);
				};
			};
			if (!isValid(_local4)){
				_local4 = getOrganicCampaign();
				if (((!(_buffer.hasUTMZ())) && (isIgnoredKeyword(_local4)))){
					return (_local3);
				};
			};
			if (((!(isValid(_local4))) && (_arg2))){
				_local4 = getReferrerCampaign();
				if (((!(_buffer.hasUTMZ())) && (isIgnoredReferral(_local4)))){
					return (_local3);
				};
			};
			if (!isValid(_local4)){
				if (((!(_buffer.hasUTMZ())) && (_arg2))){
					_local4 = getDirectCampaign();
				};
			};
			if (!isValid(_local4)){
				return (_local3);
			};
			if (((_buffer.hasUTMZ()) && (!(_buffer.utmz.isEmpty())))){
				_local8 = new CampaignTracker();
				_local8.fromTrackerString(_buffer.utmz.campaignTracking);
				_local5 = (_local8.toTrackerString() == _local4.toTrackerString());
				_local7 = _buffer.utmz.responseCount;
			};
			if (((!(_local5)) || (_arg2))){
				_local9 = _buffer.utma.sessionCount;
				_local7++;
				if (_local9 == 0){
					_local9 = 1;
				};
				_buffer.utmz.domainHash = _domainHash;
				_buffer.utmz.campaignCreation = _timeStamp;
				_buffer.utmz.campaignSessions = _local9;
				_buffer.utmz.responseCount = _local7;
				_buffer.utmz.campaignTracking = _local4.toTrackerString();
				_debug.info(_buffer.utmz.toString(), VisualDebugMode.geek);
				_local3 = new CampaignInfo(false, true);
			} else {
				_local3 = new CampaignInfo(false, false);
			};
			return (_local3);
		}
		public function hasNoOverride(_arg1:String):Boolean{
			var _local2:CampaignKey = _config.campaignKey;
			if (_arg1 == ""){
				return (false);
			};
			var _local3:Variables = new Variables(_arg1);
			var _local4 = "";
			if (_local3.hasOwnProperty(_local2.UCNO)){
				_local4 = _local3[_local2.UCNO];
				switch (_local4){
					case "1":
						return (true);
					case "":
					case "0":
					default:
						return (false);
				};
			};
			return (false);
		}
		public function getTrackerFromSearchString(_arg1:String):CampaignTracker{
			var _local2:CampaignTracker = getOrganicCampaign();
			var _local3:CampaignTracker = new CampaignTracker();
			var _local4:CampaignKey = _config.campaignKey;
			if (_arg1 == ""){
				return (_local3);
			};
			var _local5:Variables = new Variables(_arg1);
			if (_local5.hasOwnProperty(_local4.UCID)){
				_local3.id = _local5[_local4.UCID];
			};
			if (_local5.hasOwnProperty(_local4.UCSR)){
				_local3.source = _local5[_local4.UCSR];
			};
			if (_local5.hasOwnProperty(_local4.UGCLID)){
				_local3.clickId = _local5[_local4.UGCLID];
			};
			if (_local5.hasOwnProperty(_local4.UCCN)){
				_local3.name = _local5[_local4.UCCN];
			} else {
				_local3.name = "(not set)";
			};
			if (_local5.hasOwnProperty(_local4.UCMD)){
				_local3.medium = _local5[_local4.UCMD];
			} else {
				_local3.medium = "(not set)";
			};
			if (_local5.hasOwnProperty(_local4.UCTR)){
				_local3.term = _local5[_local4.UCTR];
			} else {
				if (((_local2) && (!((_local2.term == ""))))){
					_local3.term = _local2.term;
				};
			};
			if (_local5.hasOwnProperty(_local4.UCCT)){
				_local3.content = _local5[_local4.UCCT];
			};
			return (_local3);
		}
		public function getOrganicCampaign():CampaignTracker{
			var _local1:CampaignTracker;
			var _local4:Array;
			var _local5:OrganicReferrer;
			var _local6:String;
			if (((isInvalidReferrer(_referrer)) || (isFromGoogleCSE(_referrer, _config)))){
				return (_local1);
			};
			var _local2:URL = new URL(_referrer);
			var _local3 = "";
			if (_local2.hostName != ""){
				if (_local2.hostName.indexOf(".") > -1){
					_local4 = _local2.hostName.split(".");
					switch (_local4.length){
						case 2:
							_local3 = _local4[0];
							break;
						case 3:
							_local3 = _local4[1];
							break;
					};
				};
			};
			if (_config.organic.match(_local3)){
				_local5 = _config.organic.getReferrerByName(_local3);
				_local6 = _config.organic.getKeywordValue(_local5, _local2.search);
				_local1 = new CampaignTracker();
				_local1.source = _local5.engine;
				_local1.name = "(organic)";
				_local1.medium = "organic";
				_local1.term = _local6;
			};
			return (_local1);
		}
		public function getDirectCampaign():CampaignTracker{
			var _local1:CampaignTracker = new CampaignTracker();
			_local1.source = "(direct)";
			_local1.name = "(direct)";
			_local1.medium = "(none)";
			return (_local1);
		}
		public function isIgnoredKeyword(_arg1:CampaignTracker):Boolean{
			if (((_arg1) && ((_arg1.medium == "organic")))){
				return (_config.organic.isIgnoredKeyword(_arg1.term));
			};
			return (false);
		}
		public function isIgnoredReferral(_arg1:CampaignTracker):Boolean{
			if (((_arg1) && ((_arg1.medium == "referral")))){
				return (_config.organic.isIgnoredReferral(_arg1.source));
			};
			return (false);
		}
		public function isValid(_arg1:CampaignTracker):Boolean{
			if (((_arg1) && (_arg1.isValid()))){
				return (true);
			};
			return (false);
		}
		public function getReferrerCampaign():CampaignTracker{
			var _local1:CampaignTracker;
			if (((isInvalidReferrer(_referrer)) || (isFromGoogleCSE(_referrer, _config)))){
				return (_local1);
			};
			var _local2:URL = new URL(_referrer);
			var _local3:String = _local2.hostName;
			var _local4:String = _local2.path;
			if (_local3.indexOf("www.") == 0){
				_local3 = _local3.substr(4);
			};
			_local1 = new CampaignTracker();
			_local1.source = _local3;
			_local1.name = "(referral)";
			_local1.medium = "referral";
			_local1.content = _local4;
			return (_local1);
		}

		public static function isInvalidReferrer(_arg1:String):Boolean{
			var _local2:URL;
			if ((((((_arg1 == "")) || ((_arg1 == "-")))) || ((_arg1 == "0")))){
				return (true);
			};
			if (_arg1.indexOf("://") > -1){
				_local2 = new URL(_arg1);
				if ((((_local2.protocol == Protocols.file)) || ((_local2.protocol == Protocols.none)))){
					return (true);
				};
			};
			return (false);
		}
		public static function isFromGoogleCSE(_arg1:String, _arg2:Configuration):Boolean{
			var _local3:URL = new URL(_arg1);
			if (_local3.hostName.indexOf(_arg2.google) > -1){
				if (_local3.search.indexOf((_arg2.googleSearchParam + "=")) > -1){
					if (_local3.path == ("/" + _arg2.googleCsePath)){
						return (true);
					};
				};
			};
			return (false);
		}

	}
}//package com.google.analytics.campaign 

****************

//CampaignTracker (com.google.analytics.campaign.CampaignTracker)
package com.google.analytics.campaign {
	import com.google.analytics.utils.*;

	public class CampaignTracker {

		public var content:String;
		public var source:String;
		public var clickId:String;
		public var name:String;
		public var term:String;
		public var medium:String;
		public var id:String;

		public function CampaignTracker(_arg1:String="", _arg2:String="", _arg3:String="", _arg4:String="", _arg5:String="", _arg6:String="", _arg7:String=""){
			this.id = _arg1;
			this.source = _arg2;
			this.clickId = _arg3;
			this.name = _arg4;
			this.medium = _arg5;
			this.term = _arg6;
			this.content = _arg7;
		}
		public function isValid():Boolean{
			if (((((!((id == ""))) || (!((source == ""))))) || (!((clickId == ""))))){
				return (true);
			};
			return (false);
		}
		public function toTrackerString():String{
			var _local1:Array = [];
			_addIfNotEmpty(_local1, "utmcsr=", source);
			_addIfNotEmpty(_local1, "utmccn=", name);
			_addIfNotEmpty(_local1, "utmcmd=", medium);
			_addIfNotEmpty(_local1, "utmctr=", term);
			_addIfNotEmpty(_local1, "utmcct=", content);
			_addIfNotEmpty(_local1, "utmcid=", id);
			_addIfNotEmpty(_local1, "utmgclid=", clickId);
			return (_local1.join(CampaignManager.trackingDelimiter));
		}
		private function _addIfNotEmpty(_arg1:Array, _arg2:String, _arg3:String):void{
			if (_arg3 != ""){
				_arg3 = _arg3.split("+").join("%20");
				_arg3 = _arg3.split(" ").join("%20");
				_arg1.push((_arg2 + _arg3));
			};
		}
		public function fromTrackerString(_arg1:String):void{
			var _local2:String = _arg1.split(CampaignManager.trackingDelimiter).join("&");
			var _local3:Variables = new Variables(_local2);
			if (_local3.hasOwnProperty("utmcid")){
				this.id = _local3["utmcid"];
			};
			if (_local3.hasOwnProperty("utmcsr")){
				this.source = _local3["utmcsr"];
			};
			if (_local3.hasOwnProperty("utmccn")){
				this.name = _local3["utmccn"];
			};
			if (_local3.hasOwnProperty("utmcmd")){
				this.medium = _local3["utmcmd"];
			};
			if (_local3.hasOwnProperty("utmctr")){
				this.term = _local3["utmctr"];
			};
			if (_local3.hasOwnProperty("utmcct")){
				this.content = _local3["utmcct"];
			};
			if (_local3.hasOwnProperty("utmgclid")){
				this.clickId = _local3["utmgclid"];
			};
		}

	}
}//package com.google.analytics.campaign 

****************

//BrowserInfo (com.google.analytics.core.BrowserInfo)
package com.google.analytics.core {
	import com.google.analytics.v4.*;
	import com.google.analytics.utils.*;

	public class BrowserInfo {

		private var _config:Configuration;
		private var _info:Environment;

		public function BrowserInfo(_arg1:Configuration, _arg2:Environment){
			_config = _arg1;
			_info = _arg2;
		}
		public function get utmul():String{
			return (_info.language.toLowerCase());
		}
		public function get utmje():String{
			return ("0");
		}
		public function toURLString():String{
			var _local1:Variables = toVariables();
			return (_local1.toString());
		}
		public function get utmsr():String{
			return (((_info.screenWidth + "x") + _info.screenHeight));
		}
		public function get utmfl():String{
			var _local1:Version;
			if (_config.detectFlash){
				_local1 = _info.flashVersion;
				return (((((_local1.major + ".") + _local1.minor) + " r") + _local1.build));
			};
			return ("-");
		}
		public function get utmcs():String{
			return (_info.languageEncoding);
		}
		public function toVariables():Variables{
			var _local1:Variables = new Variables();
			_local1.URIencode = true;
			_local1.utmcs = utmcs;
			_local1.utmsr = utmsr;
			_local1.utmsc = utmsc;
			_local1.utmul = utmul;
			_local1.utmje = utmje;
			_local1.utmfl = utmfl;
			return (_local1);
		}
		public function get utmsc():String{
			return ((_info.screenColorDepth + "-bit"));
		}

	}
}//package com.google.analytics.core 

****************

//Buffer (com.google.analytics.core.Buffer)
package com.google.analytics.core {
	import flash.events.*;
	import com.google.analytics.v4.*;
	import com.google.analytics.debug.*;
	import flash.net.*;
	import com.google.analytics.data.*;

	public dynamic class Buffer {

		private var _SO:SharedObject;
		private var _OBJ:Object;
		private var _utma:UTMA;
		private var _utmb:UTMB;
		private var _utmc:UTMC;
		private var _debug:DebugConfiguration;
		private var _utmk:UTMK;
		private var _config:Configuration;
		private var _utmv:UTMV;
		private var _utmz:UTMZ;
		private var _volatile:Boolean;

		public function Buffer(_arg1:Configuration, _arg2:DebugConfiguration, _arg3:Boolean=false, _arg4:Object=null){
			var _local5:Boolean;
			var _local6:String;
			super();
			_config = _arg1;
			_debug = _arg2;
			UTMB.defaultTimespan = _config.sessionTimeout;
			UTMZ.defaultTimespan = _config.conversionTimeout;
			if (!_arg3){
				_SO = SharedObject.getLocal(_config.cookieName, _config.cookiePath);
				_local5 = false;
				if (_SO.data.utma){
					if (!hasUTMA()){
						_createUMTA();
					};
					_utma.fromSharedObject(_SO.data.utma);
					if (_debug.verbose){
						_debug.info(("found: " + _utma.toString(true)), VisualDebugMode.geek);
					};
					if (_utma.isExpired()){
						if (_debug.verbose){
							_debug.warning("UTMA has expired", VisualDebugMode.advanced);
						};
						_clearUTMA();
						_local5 = true;
					};
				};
				if (_SO.data.utmb){
					if (!hasUTMB()){
						_createUMTB();
					};
					_utmb.fromSharedObject(_SO.data.utmb);
					if (_debug.verbose){
						_debug.info(("found: " + _utmb.toString(true)), VisualDebugMode.geek);
					};
					if (_utmb.isExpired()){
						if (_debug.verbose){
							_debug.warning("UTMB has expired", VisualDebugMode.advanced);
						};
						_clearUTMB();
						_local5 = true;
					};
				};
				if (_SO.data.utmc){
					delete _SO.data.utmc;
					_local5 = true;
				};
				if (_SO.data.utmk){
					if (!hasUTMK()){
						_createUMTK();
					};
					_utmk.fromSharedObject(_SO.data.utmk);
					if (_debug.verbose){
						_debug.info(("found: " + _utmk.toString()), VisualDebugMode.geek);
					};
				};
				if (_SO.data.utmv){
					if (!hasUTMV()){
						_createUMTV();
					};
					_utmv.fromSharedObject(_SO.data.utmv);
					if (_debug.verbose){
						_debug.info(("found: " + _utmv.toString(true)), VisualDebugMode.geek);
					};
					if (_utmv.isExpired()){
						if (_debug.verbose){
							_debug.warning("UTMV has expired", VisualDebugMode.advanced);
						};
						_clearUTMV();
						_local5 = true;
					};
				};
				if (_SO.data.utmz){
					if (!hasUTMZ()){
						_createUMTZ();
					};
					_utmz.fromSharedObject(_SO.data.utmz);
					if (_debug.verbose){
						_debug.info(("found: " + _utmz.toString(true)), VisualDebugMode.geek);
					};
					if (_utmz.isExpired()){
						if (_debug.verbose){
							_debug.warning("UTMZ has expired", VisualDebugMode.advanced);
						};
						_clearUTMZ();
						_local5 = true;
					};
				};
				if (_local5){
					save();
				};
			} else {
				_OBJ = new Object();
				if (_arg4){
					for (_local6 in _arg4) {
						_OBJ[_local6] = _arg4[_local6];
					};
				};
			};
			_volatile = _arg3;
		}
		public function clearCookies():void{
			utma.reset();
			utmb.reset();
			utmc.reset();
			utmz.reset();
			utmv.reset();
			utmk.reset();
		}
		public function save():void{
			var flushStatus:String;
			if (!isVolatile()){
				flushStatus = null;
				try {
					flushStatus = _SO.flush();
				} catch(e:Error) {
					_debug.warning("Error...Could not write SharedObject to disk");
				};
				switch (flushStatus){
					case SharedObjectFlushStatus.PENDING:
						_debug.info("Requesting permission to save object...");
						_SO.addEventListener(NetStatusEvent.NET_STATUS, _onFlushStatus);
						break;
					case SharedObjectFlushStatus.FLUSHED:
						_debug.info("Value flushed to disk.");
						break;
				};
			};
		}
		public function get utmv():UTMV{
			if (!hasUTMV()){
				_createUMTV();
			};
			return (_utmv);
		}
		public function get utmz():UTMZ{
			if (!hasUTMZ()){
				_createUMTZ();
			};
			return (_utmz);
		}
		public function hasUTMA():Boolean{
			if (_utma){
				return (true);
			};
			return (false);
		}
		public function hasUTMB():Boolean{
			if (_utmb){
				return (true);
			};
			return (false);
		}
		public function hasUTMC():Boolean{
			if (_utmc){
				return (true);
			};
			return (false);
		}
		public function isGenuine():Boolean{
			if (!hasUTMK()){
				return (true);
			};
			return ((utmk.hash == generateCookiesHash()));
		}
		public function resetCurrentSession():void{
			_clearUTMB();
			_clearUTMC();
			save();
		}
		public function hasUTMK():Boolean{
			if (_utmk){
				return (true);
			};
			return (false);
		}
		public function generateCookiesHash():Number{
			var _local1 = "";
			_local1 = (_local1 + utma.valueOf());
			_local1 = (_local1 + utmb.valueOf());
			_local1 = (_local1 + utmc.valueOf());
			_local1 = (_local1 + utmz.valueOf());
			_local1 = (_local1 + utmv.valueOf());
			return (Utils.generateHash(_local1));
		}
		private function _createUMTB():void{
			_utmb = new UTMB();
			_utmb.proxy = this;
		}
		private function _createUMTC():void{
			_utmc = new UTMC();
		}
		private function _createUMTA():void{
			_utma = new UTMA();
			_utma.proxy = this;
		}
		public function hasUTMV():Boolean{
			if (_utmv){
				return (true);
			};
			return (false);
		}
		private function _createUMTK():void{
			_utmk = new UTMK();
			_utmk.proxy = this;
		}
		public function hasUTMZ():Boolean{
			if (_utmz){
				return (true);
			};
			return (false);
		}
		private function _createUMTV():void{
			_utmv = new UTMV();
			_utmv.proxy = this;
		}
		private function _onFlushStatus(_arg1:NetStatusEvent):void{
			_debug.info("User closed permission dialog...");
			switch (_arg1.info.code){
				case "SharedObject.Flush.Success":
					_debug.info("User granted permission -- value saved.");
					break;
				case "SharedObject.Flush.Failed":
					_debug.info("User denied permission -- value not saved.");
					break;
			};
			_SO.removeEventListener(NetStatusEvent.NET_STATUS, _onFlushStatus);
		}
		private function _createUMTZ():void{
			_utmz = new UTMZ();
			_utmz.proxy = this;
		}
		public function updateUTMA(_arg1:Number):void{
			if (_debug.verbose){
				_debug.info((("updateUTMA( " + _arg1) + " )"), VisualDebugMode.advanced);
			};
			if (!utma.isEmpty()){
				if (isNaN(utma.sessionCount)){
					utma.sessionCount = 1;
				} else {
					utma.sessionCount = (utma.sessionCount + 1);
				};
				utma.lastTime = utma.currentTime;
				utma.currentTime = _arg1;
			};
		}
		private function _clearUTMA():void{
			_utma = null;
			if (!isVolatile()){
				_SO.data.utma = null;
				delete _SO.data.utma;
			};
		}
		private function _clearUTMC():void{
			_utmc = null;
		}
		private function _clearUTMB():void{
			_utmb = null;
			if (!isVolatile()){
				_SO.data.utmb = null;
				delete _SO.data.utmb;
			};
		}
		public function update(_arg1:String, _arg2):void{
			if (isVolatile()){
				_OBJ[_arg1] = _arg2;
			} else {
				_SO.data[_arg1] = _arg2;
			};
		}
		private function _clearUTMZ():void{
			_utmz = null;
			if (!isVolatile()){
				_SO.data.utmz = null;
				delete _SO.data.utmz;
			};
		}
		private function _clearUTMV():void{
			_utmv = null;
			if (!isVolatile()){
				_SO.data.utmv = null;
				delete _SO.data.utmv;
			};
		}
		public function isVolatile():Boolean{
			return (_volatile);
		}
		public function get utma():UTMA{
			if (!hasUTMA()){
				_createUMTA();
			};
			return (_utma);
		}
		public function get utmb():UTMB{
			if (!hasUTMB()){
				_createUMTB();
			};
			return (_utmb);
		}
		public function get utmc():UTMC{
			if (!hasUTMC()){
				_createUMTC();
			};
			return (_utmc);
		}
		public function get utmk():UTMK{
			if (!hasUTMK()){
				_createUMTK();
			};
			return (_utmk);
		}

	}
}//package com.google.analytics.core 

****************

//DocumentInfo (com.google.analytics.core.DocumentInfo)
package com.google.analytics.core {
	import com.google.analytics.v4.*;
	import com.google.analytics.external.*;
	import com.google.analytics.utils.*;

	public class DocumentInfo {

		private var _pageURL:String;
		private var _utmr:String;
		private var _config:Configuration;
		private var _adSense:AdSenseGlobals;
		private var _info:Environment;

		public function DocumentInfo(_arg1:Configuration, _arg2:Environment, _arg3:String, _arg4:String=null, _arg5:AdSenseGlobals=null){
			_config = _arg1;
			_info = _arg2;
			_utmr = _arg3;
			_pageURL = _arg4;
			_adSense = _arg5;
		}
		public function get utmr():String{
			if (!_utmr){
				return ("-");
			};
			return (_utmr);
		}
		public function toURLString():String{
			var _local1:Variables = toVariables();
			return (_local1.toString());
		}
		private function _renderPageURL(_arg1:String=""):String{
			var _local2:String = _info.locationPath;
			var _local3:String = _info.locationSearch;
			if (((!(_arg1)) || ((_arg1 == "")))){
				_arg1 = (_local2 + unescape(_local3));
			};
			return (_arg1);
		}
		public function get utmp():String{
			return (_renderPageURL(_pageURL));
		}
		public function get utmhid():String{
			return (String(_generateHitId()));
		}
		private function _generateHitId():Number{
			var _local1:Number;
			if (((_adSense.hid) && (!((_adSense.hid == ""))))){
				_local1 = Number(_adSense.hid);
			} else {
				_local1 = Math.round((Math.random() * 2147483647));
				_adSense.hid = String(_local1);
			};
			return (_local1);
		}
		public function toVariables():Variables{
			var _local1:Variables = new Variables();
			_local1.URIencode = true;
			if (((_config.detectTitle) && (!((utmdt == ""))))){
				_local1.utmdt = utmdt;
			};
			_local1.utmhid = utmhid;
			_local1.utmr = utmr;
			_local1.utmp = utmp;
			return (_local1);
		}
		public function get utmdt():String{
			return (_info.documentTitle);
		}

	}
}//package com.google.analytics.core 

****************

//Domain (com.google.analytics.core.Domain)
package com.google.analytics.core {
	import com.google.analytics.debug.*;

	public class Domain {

		private var _mode:DomainNameMode;
		private var _debug:DebugConfiguration;
		private var _name:String;

		public function Domain(_arg1:DomainNameMode=null, _arg2:String="", _arg3:DebugConfiguration=null){
			_debug = _arg3;
			if (_arg1 == null){
				_arg1 = DomainNameMode.auto;
			};
			_mode = _arg1;
			if (_arg1 == DomainNameMode.custom){
				this.name = _arg2;
			} else {
				_name = _arg2;
			};
		}
		public function get mode():DomainNameMode{
			return (_mode);
		}
		public function set mode(_arg1:DomainNameMode):void{
			_mode = _arg1;
			if (_mode == DomainNameMode.none){
				_name = "";
			};
		}
		public function get name():String{
			return (_name);
		}
		public function set name(_arg1:String):void{
			if (((!((_arg1.charAt(0) == "."))) && (_debug))){
				_debug.warning(("missing leading period \".\", cookie will only be accessible on " + _arg1), VisualDebugMode.geek);
			};
			_name = _arg1;
		}

	}
}//package com.google.analytics.core 

****************

//DomainNameMode (com.google.analytics.core.DomainNameMode)
package com.google.analytics.core {

	public class DomainNameMode {

		private var _value:int;
		private var _name:String;

		public static const custom:DomainNameMode = new DomainNameMode(2, "custom");
;
		public static const none:DomainNameMode = new DomainNameMode(0, "none");
;
		public static const auto:DomainNameMode = new DomainNameMode(1, "auto");
;

		public function DomainNameMode(_arg1:int=0, _arg2:String=""){
			_value = _arg1;
			_name = _arg2;
		}
		public function valueOf():int{
			return (_value);
		}
		public function toString():String{
			return (_name);
		}

	}
}//package com.google.analytics.core 

****************

//EventInfo (com.google.analytics.core.EventInfo)
package com.google.analytics.core {
	import com.google.analytics.utils.*;
	import com.google.analytics.data.*;

	public class EventInfo {

		private var _ext10:X10;
		private var _isEventHit:Boolean;
		private var _x10:X10;

		public function EventInfo(_arg1:Boolean, _arg2:X10, _arg3:X10=null){
			_isEventHit = _arg1;
			_x10 = _arg2;
			_ext10 = _arg3;
		}
		public function toURLString():String{
			var _local1:Variables = toVariables();
			return (_local1.toString());
		}
		public function get utmt():String{
			return ("event");
		}
		public function get utme():String{
			return (_x10.renderMergedUrlString(_ext10));
		}
		public function toVariables():Variables{
			var _local1:Variables = new Variables();
			_local1.URIencode = true;
			if (_isEventHit){
				_local1.utmt = utmt;
			};
			_local1.utme = utme;
			return (_local1);
		}

	}
}//package com.google.analytics.core 

****************

//EventTracker (com.google.analytics.core.EventTracker)
package com.google.analytics.core {
	import com.google.analytics.v4.*;

	public class EventTracker {

		private var _parent:GoogleAnalyticsAPI;
		public var name:String;

		public function EventTracker(_arg1:String, _arg2:GoogleAnalyticsAPI){
			this.name = _arg1;
			_parent = _arg2;
		}
		public function trackEvent(_arg1:String, _arg2:String=null, _arg3:Number=NaN):Boolean{
			return (_parent.trackEvent(name, _arg1, _arg2, _arg3));
		}

	}
}//package com.google.analytics.core 

****************

//ga_internal (com.google.analytics.core.ga_internal)
package com.google.analytics.core {

	public namespace ga_internal;
}//package com.google.analytics.core 

****************

//GIFRequest (com.google.analytics.core.GIFRequest)
package com.google.analytics.core {
	import flash.events.*;
	import flash.display.*;
	import com.google.analytics.v4.*;
	import com.google.analytics.debug.*;
	import flash.net.*;
	import com.google.analytics.utils.*;
	import flash.system.*;

	public class GIFRequest {

		private var _info:Environment;
		private var _count:int;
		private var _utmac:String;
		private var _alertcount:int;
		private var _debug:DebugConfiguration;
		private var _lastRequest:URLRequest;
		private var _buffer:Buffer;
		private var _config:Configuration;
		private var _requests:Array;

		public function GIFRequest(_arg1:Configuration, _arg2:DebugConfiguration, _arg3:Buffer, _arg4:Environment){
			_config = _arg1;
			_debug = _arg2;
			_buffer = _arg3;
			_info = _arg4;
			_count = 0;
			_alertcount = 0;
			_requests = [];
		}
		public function get utmn():String{
			return ((Utils.generate32bitRandom() as String));
		}
		public function onIOError(_arg1:IOErrorEvent):void{
			var _local2:String = _lastRequest.url;
			var _local3:String = String((_requests.length - 1));
			var _local4 = (("Gif Request #" + _local3) + " failed");
			if (_debug.GIFRequests){
				if (!_debug.verbose){
					if (_local2.indexOf("?") > -1){
						_local2 = _local2.split("?")[0];
					};
					_local2 = _shortenURL(_local2);
				};
				if (int(_debug.mode) > int(VisualDebugMode.basic)){
					_local4 = (_local4 + ((" \"" + _local2) + "\" does not exists or is unreachable"));
				};
				_debug.failure(_local4);
			} else {
				_debug.warning(_local4);
			};
			_removeListeners(_arg1.target);
		}
		public function send(_arg1:String, _arg2:Variables=null, _arg3:Boolean=false, _arg4:Boolean=false):void{
			var _local5:String;
			var _local6:URLRequest;
			var _local7:URLRequest;
			_utmac = _arg1;
			if (!_arg2){
				_arg2 = new Variables();
			};
			_arg2.URIencode = false;
			_arg2.pre = ["utmwv", "utmn", "utmhn", "utmt", "utme", "utmcs", "utmsr", "utmsc", "utmul", "utmje", "utmfl", "utmdt", "utmhid", "utmr", "utmp"];
			_arg2.post = ["utmcc"];
			if (_debug.verbose){
				_debug.info(((("tracking: " + _buffer.utmb.trackCount) + "/") + _config.trackingLimitPerSession), VisualDebugMode.geek);
			};
			if ((((_buffer.utmb.trackCount < _config.trackingLimitPerSession)) || (_arg3))){
				if (_arg4){
					updateToken();
				};
				if (((((_arg3) || (!(_arg4)))) || ((_buffer.utmb.token >= 1)))){
					if (((!(_arg3)) && (_arg4))){
						_buffer.utmb.token = (_buffer.utmb.token - 1);
					};
					_buffer.utmb.trackCount = (_buffer.utmb.trackCount + 1);
					if (_debug.verbose){
						_debug.info(_buffer.utmb.toString(), VisualDebugMode.geek);
					};
					_arg2.utmwv = utmwv;
					_arg2.utmn = Utils.generate32bitRandom();
					if (_info.domainName != ""){
						_arg2.utmhn = _info.domainName;
					};
					if (_config.sampleRate < 1){
						_arg2.utmsp = (_config.sampleRate * 100);
					};
					if ((((_config.serverMode == ServerOperationMode.local)) || ((_config.serverMode == ServerOperationMode.both)))){
						_local5 = _info.locationSWFPath;
						if (_local5.lastIndexOf("/") > 0){
							_local5 = _local5.substring(0, _local5.lastIndexOf("/"));
						};
						_local6 = new URLRequest();
						if (_config.localGIFpath.indexOf("http") == 0){
							_local6.url = _config.localGIFpath;
						} else {
							_local6.url = (_local5 + _config.localGIFpath);
						};
						_local6.url = (_local6.url + ("?" + _arg2.toString()));
						if (((_debug.active) && (_debug.GIFRequests))){
							_debugSend(_local6);
						} else {
							sendRequest(_local6);
						};
					};
					if ((((_config.serverMode == ServerOperationMode.remote)) || ((_config.serverMode == ServerOperationMode.both)))){
						_local7 = new URLRequest();
						if (_info.protocol == Protocols.HTTPS){
							_local7.url = _config.secureRemoteGIFpath;
						} else {
							if (_info.protocol == Protocols.HTTP){
								_local7.url = _config.remoteGIFpath;
							} else {
								_local7.url = _config.remoteGIFpath;
							};
						};
						_arg2.utmac = utmac;
						_arg2.utmcc = encodeURIComponent(utmcc);
						_local7.url = (_local7.url + ("?" + _arg2.toString()));
						if (((_debug.active) && (_debug.GIFRequests))){
							_debugSend(_local7);
						} else {
							sendRequest(_local7);
						};
					};
				};
			};
		}
		public function onSecurityError(_arg1:SecurityErrorEvent):void{
			if (_debug.GIFRequests){
				_debug.failure(_arg1.text);
			};
		}
		public function get utmsp():String{
			return (((_config.sampleRate * 100) as String));
		}
		public function get utmcc():String{
			var _local1:Array = [];
			if (_buffer.hasUTMA()){
				_local1.push((_buffer.utma.toURLString() + ";"));
			};
			if (_buffer.hasUTMZ()){
				_local1.push((_buffer.utmz.toURLString() + ";"));
			};
			if (_buffer.hasUTMV()){
				_local1.push((_buffer.utmv.toURLString() + ";"));
			};
			return (_local1.join("+"));
		}
		public function get utmac():String{
			return (_utmac);
		}
		public function get utmwv():String{
			return (_config.version);
		}
		public function sendRequest(_arg1:URLRequest):void{
			var request = _arg1;
			var loader:Loader = new Loader();
			loader.name = String(_count++);
			var context:LoaderContext = new LoaderContext(false);
			loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
			_lastRequest = request;
			_requests[loader.name] = new RequestObject(request);
			try {
				loader.load(request, context);
			} catch(e:Error) {
				_debug.failure("\"Loader.load()\" could not instanciate Gif Request");
			};
		}
		private function _removeListeners(_arg1:Object):void{
			_arg1.removeEventListener(IOErrorEvent.IO_ERROR, onIOError);
			_arg1.removeEventListener(Event.COMPLETE, onComplete);
		}
		public function updateToken():void{
			var _local2:Number;
			var _local1:Number = new Date().getTime();
			_local2 = ((_local1 - _buffer.utmb.lastTime) * (_config.tokenRate / 1000));
			if (_debug.verbose){
				_debug.info(("tokenDelta: " + _local2), VisualDebugMode.geek);
			};
			if (_local2 >= 1){
				_buffer.utmb.token = Math.min(Math.floor((_buffer.utmb.token + _local2)), _config.bucketCapacity);
				_buffer.utmb.lastTime = _local1;
				if (_debug.verbose){
					_debug.info(_buffer.utmb.toString(), VisualDebugMode.geek);
				};
			};
		}
		public function get utmhn():String{
			return (_info.domainName);
		}
		private function _shortenURL(_arg1:String):String{
			var _local2:Array;
			if (_arg1.length > 60){
				_local2 = _arg1.split("/");
				while (_arg1.length > 60) {
					_local2.shift();
					_arg1 = ("../" + _local2.join("/"));
				};
			};
			return (_arg1);
		}
		private function _debugSend(_arg1:URLRequest):void{
			var _local3:String;
			var _local2 = "";
			switch (_debug.mode){
				case VisualDebugMode.geek:
					_local2 = ((("Gif Request #" + _alertcount) + ":\n") + _arg1.url);
					break;
				case VisualDebugMode.advanced:
					_local3 = _arg1.url;
					if (_local3.indexOf("?") > -1){
						_local3 = _local3.split("?")[0];
					};
					_local3 = _shortenURL(_local3);
					_local2 = (((("Send Gif Request #" + _alertcount) + ":\n") + _local3) + " ?");
					break;
				case VisualDebugMode.basic:
				default:
					_local2 = (((("Send " + _config.serverMode.toString()) + " Gif Request #") + _alertcount) + " ?");
			};
			_debug.alertGifRequest(_local2, _arg1, this);
			_alertcount++;
		}
		public function onComplete(_arg1:Event):void{
			var _local2:String = _arg1.target.loader.name;
			_requests[_local2].complete();
			var _local3 = (("Gif Request #" + _local2) + " sent");
			var _local4:String = _requests[_local2].request.url;
			if (_debug.GIFRequests){
				if (!_debug.verbose){
					if (_local4.indexOf("?") > -1){
						_local4 = _local4.split("?")[0];
					};
					_local4 = _shortenURL(_local4);
				};
				if (int(_debug.mode) > int(VisualDebugMode.basic)){
					_local3 = (_local3 + ((" to \"" + _local4) + "\""));
				};
				_debug.success(_local3);
			} else {
				_debug.info(_local3);
			};
			_removeListeners(_arg1.target);
		}

	}
}//package com.google.analytics.core 

****************

//IdleTimer (com.google.analytics.core.IdleTimer)
package com.google.analytics.core {
	import flash.events.*;
	import flash.display.*;
	import flash.utils.*;
	import com.google.analytics.v4.*;
	import com.google.analytics.debug.*;

	public class IdleTimer {

		private var _stage:Stage;
		private var _loop:Timer;
		private var _lastMove:int;
		private var _inactivity:Number;
		private var _debug:DebugConfiguration;
		private var _session:Timer;
		private var _buffer:Buffer;

		public function IdleTimer(_arg1:Configuration, _arg2:DebugConfiguration, _arg3:DisplayObject, _arg4:Buffer){
			var _local5:Number = _arg1.idleLoop;
			var _local6:Number = _arg1.idleTimeout;
			var _local7:Number = _arg1.sessionTimeout;
			_loop = new Timer((_local5 * 1000));
			_session = new Timer((_local7 * 1000), 1);
			_debug = _arg2;
			_stage = _arg3.stage;
			_buffer = _arg4;
			_lastMove = getTimer();
			_inactivity = (_local6 * 1000);
			_loop.addEventListener(TimerEvent.TIMER, checkForIdle);
			_session.addEventListener(TimerEvent.TIMER_COMPLETE, endSession);
			_stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
			_debug.info(((((("delay: " + _local5) + "sec , inactivity: ") + _local6) + "sec, sessionTimeout: ") + _local7), VisualDebugMode.geek);
			_loop.start();
		}
		private function onMouseMove(_arg1:MouseEvent):void{
			_lastMove = getTimer();
			if (_session.running){
				_debug.info("session timer reset", VisualDebugMode.geek);
				_session.reset();
			};
		}
		public function endSession(_arg1:TimerEvent):void{
			_session.removeEventListener(TimerEvent.TIMER_COMPLETE, endSession);
			_debug.info("session timer end session", VisualDebugMode.geek);
			_session.reset();
			_buffer.resetCurrentSession();
			_debug.info(_buffer.utmb.toString(), VisualDebugMode.geek);
			_debug.info(_buffer.utmc.toString(), VisualDebugMode.geek);
			_session.addEventListener(TimerEvent.TIMER_COMPLETE, endSession);
		}
		public function checkForIdle(_arg1:TimerEvent):void{
			var _local2:int = getTimer();
			if ((_local2 - _lastMove) >= _inactivity){
				if (!_session.running){
					_debug.info("session timer start", VisualDebugMode.geek);
					_session.start();
				};
			};
		}

	}
}//package com.google.analytics.core 

****************

//Organic (com.google.analytics.core.Organic)
package com.google.analytics.core {
	import com.google.analytics.utils.*;

	public class Organic {

		private var _sourcesCache:Array;
		private var _sourcesEngine:Array;
		private var _ignoredKeywords:Array;
		private var _ignoredReferralsCache:Object;
		private var _ignoredReferrals:Array;
		private var _ignoredKeywordsCache:Object;
		private var _sources:Array;

		public static var throwErrors:Boolean = false;

		public function Organic(){
			_sources = [];
			_sourcesCache = [];
			_sourcesEngine = [];
			_ignoredReferrals = [];
			_ignoredReferralsCache = {};
			_ignoredKeywords = [];
			_ignoredKeywordsCache = {};
		}
		public function isIgnoredKeyword(_arg1:String):Boolean{
			if (_ignoredKeywordsCache.hasOwnProperty(_arg1)){
				return (true);
			};
			return (false);
		}
		public function getKeywordValue(_arg1:OrganicReferrer, _arg2:String):String{
			var _local3:String = _arg1.keyword;
			return (getKeywordValueFromPath(_local3, _arg2));
		}
		public function isIgnoredReferral(_arg1:String):Boolean{
			if (_ignoredReferralsCache.hasOwnProperty(_arg1)){
				return (true);
			};
			return (false);
		}
		public function clear():void{
			clearEngines();
			clearIgnoredReferrals();
			clearIgnoredKeywords();
		}
		public function get count():int{
			return (_sources.length);
		}
		public function get ignoredKeywordsCount():int{
			return (_ignoredKeywords.length);
		}
		public function match(_arg1:String):Boolean{
			if (_arg1 == ""){
				return (false);
			};
			_arg1 = _arg1.toLowerCase();
			if (_sourcesEngine[_arg1] != undefined){
				return (true);
			};
			return (false);
		}
		public function clearIgnoredKeywords():void{
			_ignoredKeywords = [];
			_ignoredKeywordsCache = {};
		}
		public function addSource(_arg1:String, _arg2:String):void{
			var _local3:OrganicReferrer = new OrganicReferrer(_arg1, _arg2);
			if (_sourcesCache[_local3.toString()] == undefined){
				_sources.push(_local3);
				_sourcesCache[_local3.toString()] = (_sources.length - 1);
				if (_sourcesEngine[_local3.engine] == undefined){
					_sourcesEngine[_local3.engine] = [(_sources.length - 1)];
				} else {
					_sourcesEngine[_local3.engine].push((_sources.length - 1));
				};
			} else {
				if (throwErrors){
					throw (new Error((_local3.toString() + " already exists, we don't add it.")));
				};
			};
		}
		public function clearEngines():void{
			_sources = [];
			_sourcesCache = [];
			_sourcesEngine = [];
		}
		public function get ignoredReferralsCount():int{
			return (_ignoredReferrals.length);
		}
		public function addIgnoredReferral(_arg1:String):void{
			if (_ignoredReferralsCache[_arg1] == undefined){
				_ignoredReferrals.push(_arg1);
				_ignoredReferralsCache[_arg1] = (_ignoredReferrals.length - 1);
			} else {
				if (throwErrors){
					throw (new Error((("\"" + _arg1) + "\" already exists, we don't add it.")));
				};
			};
		}
		public function clearIgnoredReferrals():void{
			_ignoredReferrals = [];
			_ignoredReferralsCache = {};
		}
		public function getReferrerByName(_arg1:String):OrganicReferrer{
			var _local2:int;
			if (match(_arg1)){
				_local2 = _sourcesEngine[_arg1][0];
				return (_sources[_local2]);
			};
			return (null);
		}
		public function addIgnoredKeyword(_arg1:String):void{
			if (_ignoredKeywordsCache[_arg1] == undefined){
				_ignoredKeywords.push(_arg1);
				_ignoredKeywordsCache[_arg1] = (_ignoredKeywords.length - 1);
			} else {
				if (throwErrors){
					throw (new Error((("\"" + _arg1) + "\" already exists, we don't add it.")));
				};
			};
		}
		public function get sources():Array{
			return (_sources);
		}

		public static function getKeywordValueFromPath(_arg1:String, _arg2:String):String{
			var _local3:String;
			var _local4:Variables;
			if (_arg2.indexOf((_arg1 + "=")) > -1){
				if (_arg2.charAt(0) == "?"){
					_arg2 = _arg2.substr(1);
				};
				_arg2 = _arg2.split("+").join("%20");
				_local4 = new Variables(_arg2);
				_local3 = _local4[_arg1];
			};
			return (_local3);
		}

	}
}//package com.google.analytics.core 

****************

//OrganicReferrer (com.google.analytics.core.OrganicReferrer)
package com.google.analytics.core {

	public class OrganicReferrer {

		private var _engine:String;
		private var _keyword:String;

		public function OrganicReferrer(_arg1:String, _arg2:String){
			this.engine = _arg1;
			this.keyword = _arg2;
		}
		public function get keyword():String{
			return (_keyword);
		}
		public function get engine():String{
			return (_engine);
		}
		public function set engine(_arg1:String):void{
			_engine = _arg1.toLowerCase();
		}
		public function toString():String{
			return (((engine + "?") + keyword));
		}
		public function set keyword(_arg1:String):void{
			_keyword = _arg1.toLowerCase();
		}

	}
}//package com.google.analytics.core 

****************

//RequestObject (com.google.analytics.core.RequestObject)
package com.google.analytics.core {
	import flash.utils.*;
	import flash.net.*;

	public class RequestObject {

		public var start:int;
		public var end:int;
		public var request:URLRequest;

		public function RequestObject(_arg1:URLRequest){
			start = getTimer();
			this.request = _arg1;
		}
		public function hasCompleted():Boolean{
			return ((end > 0));
		}
		public function toString():String{
			var _local1:Array = [];
			_local1.push((("duration: " + duration) + "ms"));
			_local1.push(("url: " + request.url));
			return ((("{ " + _local1.join(", ")) + " }"));
		}
		public function complete():void{
			end = getTimer();
		}
		public function get duration():int{
			if (!hasCompleted()){
				return (0);
			};
			return ((end - start));
		}

	}
}//package com.google.analytics.core 

****************

//ServerOperationMode (com.google.analytics.core.ServerOperationMode)
package com.google.analytics.core {

	public class ServerOperationMode {

		private var _value:int;
		private var _name:String;

		public static const both:ServerOperationMode = new ServerOperationMode(2, "both");
;
		public static const remote:ServerOperationMode = new ServerOperationMode(1, "remote");
;
		public static const local:ServerOperationMode = new ServerOperationMode(0, "local");
;

		public function ServerOperationMode(_arg1:int=0, _arg2:String=""){
			_value = _arg1;
			_name = _arg2;
		}
		public function valueOf():int{
			return (_value);
		}
		public function toString():String{
			return (_name);
		}

	}
}//package com.google.analytics.core 

****************

//TrackerCache (com.google.analytics.core.TrackerCache)
package com.google.analytics.core {
	import com.google.analytics.v4.*;
	import flash.errors.*;

	public class TrackerCache implements GoogleAnalyticsAPI {

		public var tracker:GoogleAnalyticsAPI;
		private var _ar:Array;

		public static var CACHE_THROW_ERROR:Boolean;

		public function TrackerCache(_arg1:GoogleAnalyticsAPI=null){
			this.tracker = _arg1;
			_ar = [];
		}
		public function size():uint{
			return (_ar.length);
		}
		public function flush():void{
			var _local1:Object;
			var _local2:String;
			var _local3:Array;
			var _local4:int;
			var _local5:int;
			if (tracker == null){
				return;
			};
			if (size() > 0){
				_local4 = _ar.length;
				while (_local5 < _local4) {
					_local1 = _ar.shift();
					_local2 = (_local1.name as String);
					_local3 = (_local1.args as Array);
					if (((!((_local2 == null))) && ((_local2 in tracker)))){
						(tracker[_local2] as Function).apply(tracker, _local3);
					};
					_local5++;
				};
			};
		}
		public function enqueue(_arg1:String, ... _args):Boolean{
			if (_arg1 == null){
				return (false);
			};
			_ar.push({name:_arg1, args:_args});
			return (true);
		}
		public function link(_arg1:String, _arg2:Boolean=false):void{
			enqueue("link", _arg1, _arg2);
		}
		public function addOrganic(_arg1:String, _arg2:String):void{
			enqueue("addOrganic", _arg1, _arg2);
		}
		public function setAllowLinker(_arg1:Boolean):void{
			enqueue("setAllowLinker", _arg1);
		}
		public function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{
			enqueue("trackEvent", _arg1, _arg2, _arg3, _arg4);
			return (true);
		}
		public function getClientInfo():Boolean{
			if (CACHE_THROW_ERROR){
				throw (new IllegalOperationError("The tracker is not ready and you can use the 'getClientInfo' method for the moment."));
			};
			return (false);
		}
		public function trackTrans():void{
			enqueue("trackTrans");
		}
		public function trackPageview(_arg1:String=""):void{
			enqueue("trackPageview", _arg1);
		}
		public function setClientInfo(_arg1:Boolean):void{
			enqueue("setClientInfo", _arg1);
		}
		public function linkByPost(_arg1:Object, _arg2:Boolean=false):void{
			enqueue("linkByPost", _arg1, _arg2);
		}
		public function setCookieTimeout(_arg1:int):void{
			enqueue("setCookieTimeout", _arg1);
		}
		public function isEmpty():Boolean{
			return ((_ar.length == 0));
		}
		public function getDetectTitle():Boolean{
			if (CACHE_THROW_ERROR){
				throw (new IllegalOperationError("The tracker is not ready and you can use the 'getDetectTitle' method for the moment."));
			};
			return (false);
		}
		public function resetSession():void{
			enqueue("resetSession");
		}
		public function setDetectFlash(_arg1:Boolean):void{
			enqueue("setDetectFlash", _arg1);
		}
		public function clear():void{
			_ar = [];
		}
		public function setCampNameKey(_arg1:String):void{
			enqueue("setCampNameKey", _arg1);
		}
		public function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void{
			enqueue("addItem", _arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
		}
		public function createEventTracker(_arg1:String):EventTracker{
			if (CACHE_THROW_ERROR){
				throw (new IllegalOperationError("The tracker is not ready and you can use the 'createEventTracker' method for the moment."));
			};
			return (null);
		}
		public function setVar(_arg1:String):void{
			enqueue("setVar", _arg1);
		}
		public function clearIgnoredOrganic():void{
			enqueue("clearIgnoredOrganic");
		}
		public function setDomainName(_arg1:String):void{
			enqueue("setDomainName", _arg1);
		}
		public function setCampSourceKey(_arg1:String):void{
			enqueue("setCampSourceKey", _arg1);
		}
		public function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object{
			if (CACHE_THROW_ERROR){
				throw (new IllegalOperationError("The tracker is not ready and you can use the 'addTrans' method for the moment."));
			};
			return (null);
		}
		public function setCampContentKey(_arg1:String):void{
			enqueue("setCampContentKey", _arg1);
		}
		public function setLocalServerMode():void{
			enqueue("setLocalServerMode");
		}
		public function getLocalGifPath():String{
			if (CACHE_THROW_ERROR){
				throw (new IllegalOperationError("The tracker is not ready and you can use the 'getLocalGifPath' method for the moment."));
			};
			return ("");
		}
		public function setAllowAnchor(_arg1:Boolean):void{
			enqueue("setAllowAnchor", _arg1);
		}
		public function clearIgnoredRef():void{
			enqueue("clearIgnoredRef");
		}
		public function setLocalGifPath(_arg1:String):void{
			enqueue("setLocalGifPath", _arg1);
		}
		public function getVersion():String{
			if (CACHE_THROW_ERROR){
				throw (new IllegalOperationError("The tracker is not ready and you can use the 'getVersion' method for the moment."));
			};
			return ("");
		}
		public function setCookiePath(_arg1:String):void{
			enqueue("setCookiePath", _arg1);
		}
		public function setSampleRate(_arg1:Number):void{
			enqueue("setSampleRate", _arg1);
		}
		public function setDetectTitle(_arg1:Boolean):void{
			enqueue("setDetectTitle", _arg1);
		}
		public function setAllowHash(_arg1:Boolean):void{
			enqueue("setAllowHash", _arg1);
		}
		public function addIgnoredOrganic(_arg1:String):void{
			enqueue("addIgnoredOrganic", _arg1);
		}
		public function setCampNOKey(_arg1:String):void{
			enqueue("setCampNOKey", _arg1);
		}
		public function getServiceMode():ServerOperationMode{
			if (CACHE_THROW_ERROR){
				throw (new IllegalOperationError("The tracker is not ready and you can use the 'getServiceMode' method for the moment."));
			};
			return (null);
		}
		public function setLocalRemoteServerMode():void{
			enqueue("setLocalRemoteServerMode");
		}
		public function cookiePathCopy(_arg1:String):void{
			enqueue("cookiePathCopy", _arg1);
		}
		public function getDetectFlash():Boolean{
			if (CACHE_THROW_ERROR){
				throw (new IllegalOperationError("The tracker is not ready and you can use the 'getDetectFlash' method for the moment."));
			};
			return (false);
		}
		public function setCampaignTrack(_arg1:Boolean):void{
			enqueue("setCampaignTrack", _arg1);
		}
		public function clearOrganic():void{
			enqueue("clearOrganic");
		}
		public function setCampTermKey(_arg1:String):void{
			enqueue("setCampTermKey", _arg1);
		}
		public function addIgnoredRef(_arg1:String):void{
			enqueue("addIgnoredRef", _arg1);
		}
		public function setCampMediumKey(_arg1:String):void{
			enqueue("setCampMediumKey", _arg1);
		}
		public function setSessionTimeout(_arg1:int):void{
			enqueue("setSessionTimeout", _arg1);
		}
		public function setRemoteServerMode():void{
			enqueue("setRemoteServerMode");
		}
		public function element(){
			return (_ar[0]);
		}
		public function getAccount():String{
			if (CACHE_THROW_ERROR){
				throw (new IllegalOperationError("The tracker is not ready and you can use the 'getAccount' method for the moment."));
			};
			return ("");
		}

	}
}//package com.google.analytics.core 

****************

//TrackerMode (com.google.analytics.core.TrackerMode)
package com.google.analytics.core {

	public class TrackerMode {

		public static const BRIDGE:String = "Bridge";
		public static const AS3:String = "AS3";

	}
}//package com.google.analytics.core 

****************

//Utils (com.google.analytics.core.Utils)
package com.google.analytics.core {

	public class Utils {

		public static function trim(_arg1:String, _arg2:Boolean=false):String{
			var _local5:int;
			var _local6:int;
			var _local7:int;
			if (_arg1 == ""){
				return ("");
			};
			var _local3:Array = [" ", "\n", "\r", "\t"];
			var _local4:String = _arg1;
			if (_arg2){
				_local5 = 0;
				while ((((_local5 < _local3.length)) && ((_local4.indexOf(_local3[_local5]) > -1)))) {
					_local4 = _local4.split(_local3[_local5]).join("");
					_local5++;
				};
			} else {
				_local6 = 0;
				while ((((_local6 < _local4.length)) && ((_local3.indexOf(_local4.charAt(_local6)) > -1)))) {
					_local6++;
				};
				_local4 = _local4.substr(_local6);
				_local7 = (_local4.length - 1);
				while ((((_local7 >= 0)) && ((_local3.indexOf(_local4.charAt(_local7)) > -1)))) {
					_local7--;
				};
				_local4 = _local4.substring(0, (_local7 + 1));
			};
			return (_local4);
		}
		public static function generateHash(_arg1:String):int{
			var _local4:int;
			var _local5:int;
			var _local2 = 1;
			var _local3:int;
			if (((!((_arg1 == null))) && (!((_arg1 == ""))))){
				_local2 = 0;
				_local4 = (_arg1.length - 1);
				while (_local4 >= 0) {
					_local5 = _arg1.charCodeAt(_local4);
					_local2 = ((((_local2 << 6) & 268435455) + _local5) + (_local5 << 14));
					_local3 = (_local2 & 266338304);
					if (_local3 != 0){
						_local2 = (_local2 ^ (_local3 >> 21));
					};
					_local4--;
				};
			};
			return (_local2);
		}
		public static function generate32bitRandom():int{
			return (Math.round((Math.random() * 2147483647)));
		}
		public static function validateAccount(_arg1:String):Boolean{
			var _local2:RegExp = /^UA-[0-9]*-[0-9]*$/;
			return (_local2.test(_arg1));
		}

	}
}//package com.google.analytics.core 

****************

//Cookie (com.google.analytics.data.Cookie)
package com.google.analytics.data {

	public interface Cookie {

		function fromSharedObject(_arg1:Object):void;
		function toURLString():String;
		function get creation():Date;
		function toSharedObject():Object;
		function isExpired():Boolean;
		function set creation(_arg1:Date):void;
		function set expiration(_arg1:Date):void;
		function get expiration():Date;

	}
}//package com.google.analytics.data 

****************

//UTMA (com.google.analytics.data.UTMA)
package com.google.analytics.data {
	import com.google.analytics.utils.*;

	public class UTMA extends UTMCookie {

		private var _sessionId:Number;
		private var _domainHash:Number;
		private var _firstTime:Number;
		private var _currentTime:Number;
		private var _lastTime:Number;
		private var _sessionCount:Number;

		public function UTMA(_arg1:Number=NaN, _arg2:Number=NaN, _arg3:Number=NaN, _arg4:Number=NaN, _arg5:Number=NaN, _arg6:Number=NaN){
			super("utma", "__utma", ["domainHash", "sessionId", "firstTime", "lastTime", "currentTime", "sessionCount"], (Timespan.twoyears * 1000));
			this.domainHash = _arg1;
			this.sessionId = _arg2;
			this.firstTime = _arg3;
			this.lastTime = _arg4;
			this.currentTime = _arg5;
			this.sessionCount = _arg6;
		}
		public function get lastTime():Number{
			return (_lastTime);
		}
		public function set lastTime(_arg1:Number):void{
			_lastTime = _arg1;
			update();
		}
		public function set currentTime(_arg1:Number):void{
			_currentTime = _arg1;
			update();
		}
		public function get sessionId():Number{
			return (_sessionId);
		}
		public function get sessionCount():Number{
			return (_sessionCount);
		}
		public function get firstTime():Number{
			return (_firstTime);
		}
		public function get currentTime():Number{
			return (_currentTime);
		}
		public function set domainHash(_arg1:Number):void{
			_domainHash = _arg1;
			update();
		}
		public function set sessionId(_arg1:Number):void{
			_sessionId = _arg1;
			update();
		}
		public function set sessionCount(_arg1:Number):void{
			_sessionCount = _arg1;
			update();
		}
		public function get domainHash():Number{
			return (_domainHash);
		}
		public function set firstTime(_arg1:Number):void{
			_firstTime = _arg1;
			update();
		}

	}
}//package com.google.analytics.data 

****************

//UTMB (com.google.analytics.data.UTMB)
package com.google.analytics.data {
	import com.google.analytics.utils.*;

	public class UTMB extends UTMCookie {

		private var _trackCount:Number;
		private var _lastTime:Number;
		private var _domainHash:Number;
		private var _token:Number;

		public static var defaultTimespan:Number = Timespan.thirtyminutes;

		public function UTMB(_arg1:Number=NaN, _arg2:Number=NaN, _arg3:Number=NaN, _arg4:Number=NaN){
			super("utmb", "__utmb", ["domainHash", "trackCount", "token", "lastTime"], (defaultTimespan * 1000));
			this.domainHash = _arg1;
			this.trackCount = _arg2;
			this.token = _arg3;
			this.lastTime = _arg4;
		}
		public function set token(_arg1:Number):void{
			_token = _arg1;
			update();
		}
		public function set trackCount(_arg1:Number):void{
			_trackCount = _arg1;
			update();
		}
		public function get lastTime():Number{
			return (_lastTime);
		}
		public function set domainHash(_arg1:Number):void{
			_domainHash = _arg1;
			update();
		}
		public function set lastTime(_arg1:Number):void{
			_lastTime = _arg1;
			update();
		}
		public function get domainHash():Number{
			return (_domainHash);
		}
		public function get token():Number{
			return (_token);
		}
		public function get trackCount():Number{
			return (_trackCount);
		}

	}
}//package com.google.analytics.data 

****************

//UTMC (com.google.analytics.data.UTMC)
package com.google.analytics.data {

	public class UTMC extends UTMCookie {

		private var _domainHash:Number;

		public function UTMC(_arg1:Number=NaN){
			super("utmc", "__utmc", ["domainHash"]);
			this.domainHash = _arg1;
		}
		public function get domainHash():Number{
			return (_domainHash);
		}
		public function set domainHash(_arg1:Number):void{
			_domainHash = _arg1;
			update();
		}

	}
}//package com.google.analytics.data 

****************

//UTMCookie (com.google.analytics.data.UTMCookie)
package com.google.analytics.data {
	import com.google.analytics.core.*;

	public class UTMCookie implements Cookie {

		protected var inURL:String;
		protected var name:String;
		private var _creation:Date;
		private var _expiration:Date;
		public var proxy:Buffer;
		protected var fields:Array;
		private var _timespan:Number;

		public function UTMCookie(_arg1:String, _arg2:String, _arg3:Array, _arg4:Number=0){
			this.name = _arg1;
			this.inURL = _arg2;
			this.fields = _arg3;
			_timestamp(_arg4);
		}
		public function isEmpty():Boolean{
			var _local2:String;
			var _local1:int;
			var _local3:int;
			while (_local3 < fields.length) {
				_local2 = fields[_local3];
				if ((((this[_local2] is Number)) && (isNaN(this[_local2])))){
					_local1++;
				} else {
					if ((((this[_local2] is String)) && ((this[_local2] == "")))){
						_local1++;
					};
				};
				_local3++;
			};
			if (_local1 == fields.length){
				return (true);
			};
			return (false);
		}
		public function resetTimestamp(_arg1:Number=NaN):void{
			if (!isNaN(_arg1)){
				_timespan = _arg1;
			};
			_creation = null;
			_expiration = null;
			_timestamp(_timespan);
		}
		protected function update():void{
			resetTimestamp();
			if (proxy){
				proxy.update(name, toSharedObject());
			};
		}
		public function reset():void{
			var _local1:String;
			var _local2:int;
			while (_local2 < fields.length) {
				_local1 = fields[_local2];
				if ((this[_local1] is Number)){
					this[_local1] = NaN;
				} else {
					if ((this[_local1] is String)){
						this[_local1] = "";
					};
				};
				_local2++;
			};
			resetTimestamp();
			update();
		}
		public function fromSharedObject(_arg1:Object):void{
			var _local2:String;
			var _local3:int = fields.length;
			var _local4:int;
			while (_local4 < _local3) {
				_local2 = fields[_local4];
				if (_arg1[_local2]){
					this[_local2] = _arg1[_local2];
				};
				_local4++;
			};
			if (_arg1.creation){
				this.creation = _arg1.creation;
			};
			if (_arg1.expiration){
				this.expiration = _arg1.expiration;
			};
		}
		private function _timestamp(_arg1:Number):void{
			creation = new Date();
			_timespan = _arg1;
			if (_arg1 > 0){
				expiration = new Date((creation.valueOf() + _arg1));
			};
		}
		public function isExpired():Boolean{
			var _local1:Date = new Date();
			var _local2:Number = (expiration.valueOf() - _local1.valueOf());
			if (_local2 <= 0){
				return (true);
			};
			return (false);
		}
		public function set expiration(_arg1:Date):void{
			_expiration = _arg1;
		}
		public function get creation():Date{
			return (_creation);
		}
		public function valueOf():String{
			var _local2:String;
			var _local3:*;
			var _local1:Array = [];
			var _local4:int;
			while (_local4 < fields.length) {
				_local2 = fields[_local4];
				_local3 = this[_local2];
				if ((_local3 is String)){
					if (_local3 == ""){
						_local3 = "-";
						_local1.push(_local3);
					} else {
						_local1.push(_local3);
					};
				} else {
					if ((_local3 is Number)){
						if (_local3 == 0){
							_local1.push(_local3);
						} else {
							if (isNaN(_local3)){
								_local3 = "-";
								_local1.push(_local3);
							} else {
								_local1.push(_local3);
							};
						};
					};
				};
				_local4++;
			};
			return (("" + _local1.join(".")));
		}
		public function toURLString():String{
			return (((inURL + "=") + valueOf()));
		}
		public function get expiration():Date{
			if (_expiration){
				return (_expiration);
			};
			return (new Date((new Date().valueOf() + 1000)));
		}
		public function toSharedObject():Object{
			var _local2:String;
			var _local3:*;
			var _local1:Object = {};
			var _local4:int;
			for (;_local4 < fields.length;_local4++) {
				_local2 = fields[_local4];
				_local3 = this[_local2];
				if ((_local3 is String)){
					_local1[_local2] = _local3;
				} else {
					if (_local3 == 0){
						_local1[_local2] = _local3;
					} else {
						if (isNaN(_local3)){
							continue;
						} else {
							_local1[_local2] = _local3;
						};
					};
				};
			};
			_local1.creation = creation;
			_local1.expiration = expiration;
			return (_local1);
		}
		public function toString(_arg1:Boolean=false):String{
			var _local3:String;
			var _local4:*;
			var _local2:Array = [];
			var _local5:int = fields.length;
			var _local6:int;
			for (;_local6 < _local5;_local6++) {
				_local3 = fields[_local6];
				_local4 = this[_local3];
				if ((_local4 is String)){
					_local2.push((((_local3 + ": \"") + _local4) + "\""));
				} else {
					if (_local4 == 0){
						_local2.push(((_local3 + ": ") + _local4));
					} else {
						if (isNaN(_local4)){
							continue;
						} else {
							_local2.push(((_local3 + ": ") + _local4));
						};
					};
				};
			};
			var _local7 = (((name.toUpperCase() + " {") + _local2.join(", ")) + "}");
			if (_arg1){
				_local7 = (_local7 + (((" creation:" + creation) + ", expiration:") + expiration));
			};
			return (_local7);
		}
		public function set creation(_arg1:Date):void{
			_creation = _arg1;
		}

	}
}//package com.google.analytics.data 

****************

//UTMK (com.google.analytics.data.UTMK)
package com.google.analytics.data {

	public class UTMK extends UTMCookie {

		private var _hash:Number;

		public function UTMK(_arg1:Number=NaN){
			super("utmk", "__utmk", ["hash"]);
			this.hash = _arg1;
		}
		public function set hash(_arg1:Number):void{
			_hash = _arg1;
			update();
		}
		public function get hash():Number{
			return (_hash);
		}

	}
}//package com.google.analytics.data 

****************

//UTMV (com.google.analytics.data.UTMV)
package com.google.analytics.data {
	import com.google.analytics.utils.*;

	public class UTMV extends UTMCookie {

		private var _domainHash:Number;
		private var _value:String;

		public function UTMV(_arg1:Number=NaN, _arg2:String=""){
			super("utmv", "__utmv", ["domainHash", "value"], (Timespan.twoyears * 1000));
			this.domainHash = _arg1;
			this.value = _arg2;
		}
		override public function toURLString():String{
			return (((inURL + "=") + encodeURI(valueOf())));
		}
		public function get value():String{
			return (_value);
		}
		public function get domainHash():Number{
			return (_domainHash);
		}
		public function set domainHash(_arg1:Number):void{
			_domainHash = _arg1;
			update();
		}
		public function set value(_arg1:String):void{
			_value = _arg1;
			update();
		}

	}
}//package com.google.analytics.data 

****************

//UTMZ (com.google.analytics.data.UTMZ)
package com.google.analytics.data {
	import com.google.analytics.utils.*;

	public class UTMZ extends UTMCookie {

		private var _campaignTracking:String;
		private var _campaignCreation:Number;
		private var _responseCount:Number;
		private var _domainHash:Number;
		private var _campaignSessions:Number;

		public static var defaultTimespan:Number = Timespan.sixmonths;

		public function UTMZ(_arg1:Number=NaN, _arg2:Number=NaN, _arg3:Number=NaN, _arg4:Number=NaN, _arg5:String=""){
			super("utmz", "__utmz", ["domainHash", "campaignCreation", "campaignSessions", "responseCount", "campaignTracking"], (defaultTimespan * 1000));
			this.domainHash = _arg1;
			this.campaignCreation = _arg2;
			this.campaignSessions = _arg3;
			this.responseCount = _arg4;
			this.campaignTracking = _arg5;
		}
		public function set responseCount(_arg1:Number):void{
			_responseCount = _arg1;
			update();
		}
		public function set domainHash(_arg1:Number):void{
			_domainHash = _arg1;
			update();
		}
		public function set campaignCreation(_arg1:Number):void{
			_campaignCreation = _arg1;
			update();
		}
		public function get campaignTracking():String{
			return (_campaignTracking);
		}
		public function get campaignSessions():Number{
			return (_campaignSessions);
		}
		public function get domainHash():Number{
			return (_domainHash);
		}
		public function get responseCount():Number{
			return (_responseCount);
		}
		public function get campaignCreation():Number{
			return (_campaignCreation);
		}
		public function set campaignSessions(_arg1:Number):void{
			_campaignSessions = _arg1;
			update();
		}
		public function set campaignTracking(_arg1:String):void{
			_campaignTracking = _arg1;
			update();
		}

	}
}//package com.google.analytics.data 

****************

//X10 (com.google.analytics.data.X10)
package com.google.analytics.data {

	public class X10 {

		private var _delimEnd:String;// = ")"
		private var _minimum:int;
		private var _delimSet:String;// = "*"
		private var _escapeChar:String;// = "'"
		private var _delimBegin:String;// = "("
		private var _delimNumValue:String;// = "!"
		private var _key:String;// = "k"
		private var _set:Array;
		private var _hasData:int;
		private var _escapeCharMap:Object;
		private var _projectData:Object;
		private var _value:String;// = "v"

		public function X10(){
			_set = [_key, _value];
			super();
			_projectData = {};
			_escapeCharMap = {};
			_escapeCharMap[_escapeChar] = "'0";
			_escapeCharMap[_delimEnd] = "'1";
			_escapeCharMap[_delimSet] = "'2";
			_escapeCharMap[_delimNumValue] = "'3";
			_minimum = 1;
		}
		private function _setInternal(_arg1:Number, _arg2:String, _arg3:Number, _arg4:String):void{
			if (!hasProject(_arg1)){
				_projectData[_arg1] = {};
			};
			if (_projectData[_arg1][_arg2] == undefined){
				_projectData[_arg1][_arg2] = [];
			};
			_projectData[_arg1][_arg2][_arg3] = _arg4;
			_hasData = (_hasData + 1);
		}
		private function _renderProject(_arg1:Object):String{
			var _local4:int;
			var _local5:Array;
			var _local2 = "";
			var _local3:Boolean;
			var _local6:int = _set.length;
			_local4 = 0;
			while (_local4 < _local6) {
				_local5 = _arg1[_set[_local4]];
				if (_local5){
					if (_local3){
						_local2 = (_local2 + _set[_local4]);
					};
					_local2 = (_local2 + _renderDataType(_local5));
					_local3 = false;
				} else {
					_local3 = true;
				};
				_local4++;
			};
			return (_local2);
		}
		public function hasProject(_arg1:Number):Boolean{
			return (_projectData[_arg1]);
		}
		public function clearKey(_arg1:Number):void{
			_clearInternal(_arg1, _key);
		}
		private function _renderDataType(_arg1:Array):String{
			var _local3:String;
			var _local4:int;
			var _local2:Array = [];
			_local4 = 0;
			while (_local4 < _arg1.length) {
				if (_arg1[_local4] != undefined){
					_local3 = "";
					if (((!((_local4 == _minimum))) && ((_arg1[(_local4 - 1)] == undefined)))){
						_local3 = (_local3 + _local4.toString());
						_local3 = (_local3 + _delimNumValue);
					};
					_local3 = (_local3 + _escapeExtensibleValue(_arg1[_local4]));
					_local2.push(_local3);
				};
				_local4++;
			};
			return (((_delimBegin + _local2.join(_delimSet)) + _delimEnd));
		}
		public function getKey(_arg1:Number, _arg2:Number):String{
			return ((_getInternal(_arg1, _key, _arg2) as String));
		}
		public function hasData():Boolean{
			return ((_hasData > 0));
		}
		public function renderMergedUrlString(_arg1:X10=null):String{
			var _local3:String;
			if (!_arg1){
				return (renderUrlString());
			};
			var _local2:Array = [_arg1.renderUrlString()];
			for (_local3 in _projectData) {
				if (((hasProject(Number(_local3))) && (!(_arg1.hasProject(Number(_local3)))))){
					_local2.push((_local3 + _renderProject(_projectData[_local3])));
				};
			};
			return (_local2.join(""));
		}
		public function setValue(_arg1:Number, _arg2:Number, _arg3:Number):Boolean{
			if (((((!((Math.round(_arg3) == _arg3))) || (isNaN(_arg3)))) || ((_arg3 == Infinity)))){
				return (false);
			};
			_setInternal(_arg1, _value, _arg2, _arg3.toString());
			return (true);
		}
		public function renderUrlString():String{
			var _local2:String;
			var _local1:Array = [];
			for (_local2 in _projectData) {
				if (hasProject(Number(_local2))){
					_local1.push((_local2 + _renderProject(_projectData[_local2])));
				};
			};
			return (_local1.join(""));
		}
		private function _getInternal(_arg1:Number, _arg2:String, _arg3:Number):Object{
			if (((hasProject(_arg1)) && (!((_projectData[_arg1][_arg2] == undefined))))){
				return (_projectData[_arg1][_arg2][_arg3]);
			};
			return (undefined);
		}
		public function setKey(_arg1:Number, _arg2:Number, _arg3:String):Boolean{
			_setInternal(_arg1, _key, _arg2, _arg3);
			return (true);
		}
		public function clearValue(_arg1:Number):void{
			_clearInternal(_arg1, _value);
		}
		private function _clearInternal(_arg1:Number, _arg2:String):void{
			var _local3:Boolean;
			var _local4:int;
			var _local5:int;
			if (((hasProject(_arg1)) && (!((_projectData[_arg1][_arg2] == undefined))))){
				_projectData[_arg1][_arg2] = undefined;
				_local3 = true;
				_local5 = _set.length;
				_local4 = 0;
				while (_local4 < _local5) {
					if (_projectData[_arg1][_set[_local4]] != undefined){
						_local3 = false;
						break;
					};
					_local4++;
				};
				if (_local3){
					_projectData[_arg1] = undefined;
					_hasData = (_hasData - 1);
				};
			};
		}
		public function getValue(_arg1:Number, _arg2:Number){
			var _local3:* = _getInternal(_arg1, _value, _arg2);
			if (_local3 == null){
				return (null);
			};
			return (Number(_local3));
		}
		private function _escapeExtensibleValue(_arg1:String):String{
			var _local3:int;
			var _local4:String;
			var _local5:String;
			var _local2 = "";
			_local3 = 0;
			while (_local3 < _arg1.length) {
				_local4 = _arg1.charAt(_local3);
				_local5 = _escapeCharMap[_local4];
				if (_local5){
					_local2 = (_local2 + _local5);
				} else {
					_local2 = (_local2 + _local4);
				};
				_local3++;
			};
			return (_local2);
		}

	}
}//package com.google.analytics.data 

****************

//_Style (com.google.analytics.debug._Style)
package com.google.analytics.debug {
	import flash.text.*;
	import flash.net.*;

	public class _Style {

		public var failureColor:uint;
		public var borderColor:uint;
		public var backgroundColor:uint;
		private var _sheet:StyleSheet;
		public var roundedCorner:uint;
		public var warningColor:uint;
		public var infoColor:uint;
		public var alertColor:uint;
		public var successColor:uint;
		private var _loader:URLLoader;
		private var _defaultSheet:String;

		public function _Style(){
			_sheet = new StyleSheet();
			_loader = new URLLoader();
			_init();
		}
		private function _parseSheet(_arg1:String):void{
			_sheet.parseCSS(_arg1);
		}
		public function get sheet():StyleSheet{
			return (_sheet);
		}
		private function _init():void{
			_defaultSheet = "";
			_defaultSheet = (_defaultSheet + "a{text-decoration: underline;}\n");
			_defaultSheet = (_defaultSheet + ".uiLabel{color: #000000;font-family: Arial;font-size: 12;margin-left: 2;margin-right: 2;}\n");
			_defaultSheet = (_defaultSheet + ".uiWarning{color: #ffffff;font-family: Arial;font-size: 14;font-weight: bold;margin-left: 6;margin-right: 6;}\n");
			_defaultSheet = (_defaultSheet + ".uiAlert{color: #ffffff;font-family: Arial;font-size: 14;font-weight: bold;margin-left: 6;margin-right: 6;}\n");
			_defaultSheet = (_defaultSheet + ".uiInfo{color: #000000;font-family: Arial;font-size: 14;font-weight: bold;margin-left: 6;margin-right: 6;}\n");
			_defaultSheet = (_defaultSheet + ".uiSuccess{color: #ffffff;font-family: Arial;font-size: 12;font-weight: bold;margin-left: 6;margin-right: 6;}\n");
			_defaultSheet = (_defaultSheet + ".uiFailure{color: #ffffff;font-family: Arial;font-size: 12;font-weight: bold;margin-left: 6;margin-right: 6;}\n");
			_defaultSheet = (_defaultSheet + ".uiAlertAction{color: #ffffff;text-align: center;font-family: Arial;font-size: 12;font-weight: bold;margin-left: 6;margin-right: 6;}\n");
			_defaultSheet = (_defaultSheet + ".uiAlertTitle{color: #ffffff;font-family: Arial;font-size: 16;font-weight: bold;margin-left: 6;margin-right: 6;}\n");
			_defaultSheet = (_defaultSheet + "\n");
			roundedCorner = 6;
			backgroundColor = 0xCCCCCC;
			borderColor = 0x555555;
			infoColor = 16777113;
			alertColor = 0xFFCC00;
			warningColor = 0xCC0000;
			successColor = 0xFF00;
			failureColor = 0xFF0000;
			_parseSheet(_defaultSheet);
		}

	}
}//package com.google.analytics.debug 

****************

//Alert (com.google.analytics.debug.Alert)
package com.google.analytics.debug {
	import flash.events.*;

	public class Alert extends Label {

		public var autoClose:Boolean;// = true
		public var actionOnNextLine:Boolean;// = true
		private var _actions:Array;

		public function Alert(_arg1:String, _arg2:Array, _arg3:String="uiAlert", _arg4:uint=0, _arg5:Align=null, _arg6:Boolean=false, _arg7:Boolean=true){
			if (_arg4 == 0){
				_arg4 = Style.alertColor;
			};
			if (_arg5 == null){
				_arg5 = Align.center;
			};
			super(_arg1, _arg3, _arg4, _arg5, _arg6);
			this.selectable = true;
			super.mouseChildren = true;
			this.buttonMode = true;
			this.mouseEnabled = true;
			this.useHandCursor = true;
			this.actionOnNextLine = _arg7;
			_actions = [];
			var _local8:int;
			while (_local8 < _arg2.length) {
				_arg2[_local8].container = this;
				_actions.push(_arg2[_local8]);
				_local8++;
			};
		}
		private function _defineActions():void{
			var _local3:AlertAction;
			var _local1 = "";
			if (actionOnNextLine){
				_local1 = (_local1 + "\n");
			} else {
				_local1 = (_local1 + " |");
			};
			_local1 = (_local1 + " ");
			var _local2:Array = [];
			var _local4:int;
			while (_local4 < _actions.length) {
				_local3 = _actions[_local4];
				_local2.push((((("<a href=\"event:" + _local3.activator) + "\">") + _local3.name) + "</a>"));
				_local4++;
			};
			_local1 = (_local1 + _local2.join(" | "));
			appendText(_local1, "uiAlertAction");
		}
		protected function isValidAction(_arg1:String):Boolean{
			var _local2:int;
			while (_local2 < _actions.length) {
				if (_arg1 == _actions[_local2].activator){
					return (true);
				};
				_local2++;
			};
			return (false);
		}
		override protected function layout():void{
			super.layout();
			_defineActions();
		}
		protected function getAction(_arg1:String):AlertAction{
			var _local2:int;
			while (_local2 < _actions.length) {
				if (_arg1 == _actions[_local2].activator){
					return (_actions[_local2]);
				};
				_local2++;
			};
			return (null);
		}
		protected function spaces(_arg1:int):String{
			var _local2 = "";
			var _local3 = "  		";
			var _local4:int;
			while (_local4 < (_arg1 + 1)) {
				_local2 = (_local2 + _local3);
				_local4++;
			};
			return (_local2);
		}
		override public function onLink(_arg1:TextEvent):void{
			var _local2:AlertAction;
			if (isValidAction(_arg1.text)){
				_local2 = getAction(_arg1.text);
				if (_local2){
					_local2.execute();
				};
			};
			if (autoClose){
				close();
			};
		}
		public function close():void{
			if (parent != null){
				parent.removeChild(this);
			};
		}

	}
}//package com.google.analytics.debug 

****************

//AlertAction (com.google.analytics.debug.AlertAction)
package com.google.analytics.debug {

	public class AlertAction {

		public var container:Alert;
		private var _callback;
		public var activator:String;
		public var name:String;

		public function AlertAction(_arg1:String, _arg2:String, _arg3){
			this.name = _arg1;
			this.activator = _arg2;
			_callback = _arg3;
		}
		public function execute():void{
			if (_callback){
				if ((_callback is Function)){
					(_callback as Function)();
				} else {
					if ((_callback is String)){
						var _local1 = container;
						_local1[_callback]();
					};
				};
			};
		}

	}
}//package com.google.analytics.debug 

****************

//Align (com.google.analytics.debug.Align)
package com.google.analytics.debug {

	public class Align {

		private var _value:int;
		private var _name:String;

		public static const bottomRight:Align = new Align(18, "bottomRight");
;
		public static const right:Align = new Align(16, "right");
;
		public static const left:Align = new Align(32, "left");
;
		public static const topRight:Align = new Align(17, "topRight");
;
		public static const bottom:Align = new Align(2, "bottom");
;
		public static const bottomLeft:Align = new Align(34, "bottomLeft");
;
		public static const topLeft:Align = new Align(33, "topLeft");
;
		public static const center:Align = new Align(0x0100, "center");
;
		public static const none:Align = new Align(0, "none");
;
		public static const top:Align = new Align(1, "top");
;

		public function Align(_arg1:int=0, _arg2:String=""){
			_value = _arg1;
			_name = _arg2;
		}
		public function valueOf():int{
			return (_value);
		}
		public function toString():String{
			return (_name);
		}

	}
}//package com.google.analytics.debug 

****************

//Background (com.google.analytics.debug.Background)
package com.google.analytics.debug {
	import flash.display.*;

	public class Background {

		public static function drawRounded(_arg1, _arg2:Graphics, _arg3:uint=0, _arg4:uint=0):void{
			var _local5:uint;
			var _local6:uint;
			var _local7:uint = Style.roundedCorner;
			if ((((_arg3 > 0)) && ((_arg4 > 0)))){
				_local5 = _arg3;
				_local6 = _arg4;
			} else {
				_local5 = _arg1.width;
				_local6 = _arg1.height;
			};
			if (((_arg1.stickToEdge) && (!((_arg1.alignement == Align.none))))){
				switch (_arg1.alignement){
					case Align.top:
						_arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, 0, _local7, _local7);
						break;
					case Align.topLeft:
						_arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, 0, 0, _local7);
						break;
					case Align.topRight:
						_arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, 0, _local7, 0);
						break;
					case Align.bottom:
						_arg2.drawRoundRectComplex(0, 0, _local5, _local6, _local7, _local7, 0, 0);
						break;
					case Align.bottomLeft:
						_arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, _local7, 0, 0);
						break;
					case Align.bottomRight:
						_arg2.drawRoundRectComplex(0, 0, _local5, _local6, _local7, 0, 0, 0);
						break;
					case Align.left:
						_arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, _local7, 0, _local7);
						break;
					case Align.right:
						_arg2.drawRoundRectComplex(0, 0, _local5, _local6, _local7, 0, _local7, 0);
						break;
					case Align.center:
						_arg2.drawRoundRect(0, 0, _local5, _local6, _local7, _local7);
						break;
				};
			} else {
				_arg2.drawRoundRect(0, 0, _local5, _local6, _local7, _local7);
			};
		}

	}
}//package com.google.analytics.debug 

****************

//Debug (com.google.analytics.debug.Debug)
package com.google.analytics.debug {
	import flash.events.*;
	import flash.ui.*;

	public class Debug extends Label {

		private var _lines:Array;
		private var _preferredForcedWidth:uint;// = 540
		private var _linediff:int;// = 0
		public var maxLines:uint;// = 16

		public static var count:uint = 0;

		public function Debug(_arg1:uint=0, _arg2:Align=null, _arg3:Boolean=false){
			if (_arg2 == null){
				_arg2 = Align.bottom;
			};
			super("", "uiLabel", _arg1, _arg2, _arg3);
			this.name = ("Debug" + count++);
			_lines = [];
			selectable = true;
			addEventListener(KeyboardEvent.KEY_DOWN, onKey);
		}
		public function writeBold(_arg1:String):void{
			write(_arg1, true);
		}
		private function _getLinesToDisplay(_arg1:int=0):Array{
			var _local2:Array;
			var _local3:uint;
			var _local4:uint;
			if ((_lines.length - 1) > maxLines){
				if ((_linediff <= 0)){
					_linediff = (_linediff + _arg1);
				} else {
					if ((((_linediff > 0)) && ((_arg1 < 0)))){
						_linediff = (_linediff + _arg1);
					};
				};
				_local3 = ((_lines.length - maxLines) + _linediff);
				_local4 = (_local3 + maxLines);
				_local2 = _lines.slice(_local3, _local4);
			} else {
				_local2 = _lines;
			};
			return (_local2);
		}
		private function onKey(_arg1:KeyboardEvent=null):void{
			var _local2:Array;
			switch (_arg1.keyCode){
				case Keyboard.DOWN:
					_local2 = _getLinesToDisplay(1);
					break;
				case Keyboard.UP:
					_local2 = _getLinesToDisplay(-1);
					break;
				default:
					_local2 = null;
			};
			if (_local2 == null){
				return;
			};
			text = _local2.join("\n");
		}
		override public function get forcedWidth():uint{
			if (this.parent){
				if (UISprite(this.parent).forcedWidth > _preferredForcedWidth){
					return (_preferredForcedWidth);
				};
				return (UISprite(this.parent).forcedWidth);
				//unresolved jump
			};
			return (super.forcedWidth);
		}
		public function write(_arg1:String, _arg2:Boolean=false):void{
			var _local3:Array;
			if (_arg1.indexOf("") > -1){
				_local3 = _arg1.split("\n");
			} else {
				_local3 = [_arg1];
			};
			var _local4 = "";
			var _local5 = "";
			if (_arg2){
				_local4 = "<b>";
				_local5 = "</b>";
			};
			var _local6:int;
			while (_local6 < _local3.length) {
				_lines.push(((_local4 + _local3[_local6]) + _local5));
				_local6++;
			};
			var _local7:Array = _getLinesToDisplay();
			text = _local7.join("\n");
		}
		public function close():void{
			dispose();
		}
		override protected function dispose():void{
			removeEventListener(KeyboardEvent.KEY_DOWN, onKey);
			super.dispose();
		}

	}
}//package com.google.analytics.debug 

****************

//DebugConfiguration (com.google.analytics.debug.DebugConfiguration)
package com.google.analytics.debug {
	import flash.utils.*;
	import com.google.analytics.core.*;
	import flash.net.*;
	import flash.ui.*;

	public class DebugConfiguration {

		public var showHideKey:Number;
		private var _mode:VisualDebugMode;
		private var _verbose:Boolean;// = false
		public var destroyKey:Number;
		public var GIFRequests:Boolean;// = false
		public var showInfos:Boolean;// = true
		public var infoTimeout:Number;// = 1000
		public var minimizedOnStart:Boolean;// = false
		private var _active:Boolean;// = false
		public var traceOutput:Boolean;// = false
		public var layout:ILayout;
		public var warningTimeout:Number;// = 1500
		public var javascript:Boolean;// = false
		public var showWarnings:Boolean;// = true
		private var _visualInitialized:Boolean;// = false

		public function DebugConfiguration(){
			_mode = VisualDebugMode.basic;
			showHideKey = Keyboard.SPACE;
			destroyKey = Keyboard.BACKSPACE;
			super();
		}
		public function get verbose():Boolean{
			return (_verbose);
		}
		public function set verbose(_arg1:Boolean):void{
			_verbose = _arg1;
		}
		public function set mode(_arg1):void{
			if ((_arg1 is String)){
				switch (_arg1){
					case "geek":
						_arg1 = VisualDebugMode.geek;
						break;
					case "advanced":
						_arg1 = VisualDebugMode.advanced;
						break;
					case "basic":
					default:
						_arg1 = VisualDebugMode.basic;
				};
			};
			_mode = _arg1;
		}
		public function success(_arg1:String):void{
			if (layout){
				layout.createSuccessAlert(_arg1);
			};
			if (traceOutput){
				trace((("[+] " + _arg1) + " !!"));
			};
		}
		public function get active():Boolean{
			return (_active);
		}
		private function _initializeVisual():void{
			if (layout){
				layout.init();
				_visualInitialized = true;
			};
		}
		private function _destroyVisual():void{
			if (((layout) && (_visualInitialized))){
				layout.destroy();
			};
		}
		public function warning(_arg1:String, _arg2:VisualDebugMode=null):void{
			if (_filter(_arg2)){
				return;
			};
			if (((layout) && (showWarnings))){
				layout.createWarning(_arg1);
			};
			if (traceOutput){
				trace((("## " + _arg1) + " ##"));
			};
		}
		private function _filter(_arg1:VisualDebugMode=null):Boolean{
			return (((_arg1) && ((int(_arg1) >= int(this.mode)))));
		}
		public function failure(_arg1:String):void{
			if (layout){
				layout.createFailureAlert(_arg1);
			};
			if (traceOutput){
				trace((("[-] " + _arg1) + " !!"));
			};
		}
		public function get mode(){
			return (_mode);
		}
		public function set active(_arg1:Boolean):void{
			_active = _arg1;
			if (_active){
				_initializeVisual();
			} else {
				_destroyVisual();
			};
		}
		protected function trace(_arg1:String):void{
			var _local7:Array;
			var _local8:int;
			var _local2:Array = [];
			var _local3 = "";
			var _local4 = "";
			if (this.mode == VisualDebugMode.geek){
				_local3 = (getTimer() + " - ");
				_local4 = (new Array(_local3.length).join(" ") + " ");
			};
			if (_arg1.indexOf("\n") > -1){
				_local7 = _arg1.split("\n");
				_local8 = 0;
				while (_local8 < _local7.length) {
					if (_local7[_local8] == ""){
					} else {
						if (_local8 == 0){
							_local2.push((_local3 + _local7[_local8]));
						} else {
							_local2.push((_local4 + _local7[_local8]));
						};
					};
					_local8++;
				};
			} else {
				_local2.push((_local3 + _arg1));
			};
			var _local5:int = _local2.length;
			var _local6:int;
			while (_local6 < _local5) {
				trace(_local2[_local6]);
				_local6++;
			};
		}
		public function alert(_arg1:String):void{
			if (layout){
				layout.createAlert(_arg1);
			};
			if (traceOutput){
				trace((("!! " + _arg1) + " !!"));
			};
		}
		public function info(_arg1:String, _arg2:VisualDebugMode=null):void{
			if (_filter(_arg2)){
				return;
			};
			if (((layout) && (showInfos))){
				layout.createInfo(_arg1);
			};
			if (traceOutput){
				trace(_arg1);
			};
		}
		public function alertGifRequest(_arg1:String, _arg2:URLRequest, _arg3:GIFRequest):void{
			if (layout){
				layout.createGIFRequestAlert(_arg1, _arg2, _arg3);
			};
			if (traceOutput){
				trace(((">> " + _arg1) + " <<"));
			};
		}

	}
}//package com.google.analytics.debug 

****************

//FailureAlert (com.google.analytics.debug.FailureAlert)
package com.google.analytics.debug {

	public class FailureAlert extends Alert {

		public function FailureAlert(_arg1:DebugConfiguration, _arg2:String, _arg3:Array){
			var _local4:Align = Align.bottomLeft;
			var _local5:Boolean;
			var _local6:Boolean;
			if (_arg1.verbose){
				_arg2 = ((("<u><span class=\"uiAlertTitle\">Failure</span>" + spaces(18)) + "</u>\n\n") + _arg2);
				_local4 = Align.center;
				_local5 = false;
				_local6 = true;
			};
			super(_arg2, _arg3, "uiFailure", Style.failureColor, _local4, _local5, _local6);
		}
	}
}//package com.google.analytics.debug 

****************

//GIFRequestAlert (com.google.analytics.debug.GIFRequestAlert)
package com.google.analytics.debug {

	public class GIFRequestAlert extends Alert {

		public function GIFRequestAlert(_arg1:String, _arg2:Array){
			super(_arg1, _arg2);
		}
	}
}//package com.google.analytics.debug 

****************

//ILayout (com.google.analytics.debug.ILayout)
package com.google.analytics.debug {
	import flash.display.*;
	import com.google.analytics.core.*;
	import flash.net.*;

	public interface ILayout {

		function createAlert(_arg1:String):void;
		function addToStage(_arg1:DisplayObject):void;
		function createGIFRequestAlert(_arg1:String, _arg2:URLRequest, _arg3:GIFRequest):void;
		function createWarning(_arg1:String):void;
		function createPanel(_arg1:String, _arg2:uint, _arg3:uint):void;
		function createInfo(_arg1:String):void;
		function createFailureAlert(_arg1:String):void;
		function addToPanel(_arg1:String, _arg2:DisplayObject):void;
		function init():void;
		function createSuccessAlert(_arg1:String):void;
		function createVisualDebug():void;
		function destroy():void;
		function bringToFront(_arg1:DisplayObject):void;
		function isAvailable():Boolean;

	}
}//package com.google.analytics.debug 

****************

//Info (com.google.analytics.debug.Info)
package com.google.analytics.debug {
	import flash.events.*;
	import flash.utils.*;

	public class Info extends Label {

		private var _timer:Timer;

		public function Info(_arg1:String="", _arg2:uint=3000){
			super(_arg1, "uiInfo", Style.infoColor, Align.top, true);
			if (_arg2 > 0){
				_timer = new Timer(_arg2, 1);
				_timer.start();
				_timer.addEventListener(TimerEvent.TIMER_COMPLETE, onComplete, false, 0, true);
			};
		}
		public function close():void{
			if (parent != null){
				parent.removeChild(this);
			};
		}
		override public function onLink(_arg1:TextEvent):void{
			switch (_arg1.text){
				case "hide":
					close();
					break;
			};
		}
		public function onComplete(_arg1:TimerEvent):void{
			close();
		}

	}
}//package com.google.analytics.debug 

****************

//Label (com.google.analytics.debug.Label)
package com.google.analytics.debug {
	import flash.events.*;
	import flash.display.*;
	import flash.text.*;

	public class Label extends UISprite {

		private var _color:uint;
		private var _background:Shape;
		private var _textField:TextField;
		public var stickToEdge:Boolean;
		private var _text:String;
		protected var selectable:Boolean;
		private var _tag:String;

		public static var count:uint = 0;

		public function Label(_arg1:String="", _arg2:String="uiLabel", _arg3:uint=0, _arg4:Align=null, _arg5:Boolean=false){
			this.name = ("Label" + count++);
			selectable = false;
			_background = new Shape();
			_textField = new TextField();
			_text = _arg1;
			_tag = _arg2;
			if (_arg4 == null){
				_arg4 = Align.none;
			};
			this.alignement = _arg4;
			this.stickToEdge = _arg5;
			if (_arg3 == 0){
				_arg3 = Style.backgroundColor;
			};
			_color = _arg3;
			_textField.addEventListener(TextEvent.LINK, onLink);
		}
		public function get tag():String{
			return (_tag);
		}
		private function _draw():void{
			var _local1:Graphics = _background.graphics;
			_local1.clear();
			_local1.beginFill(_color);
			var _local2:uint = _textField.width;
			var _local3:uint = _textField.height;
			if (forcedWidth > 0){
				_local2 = forcedWidth;
			};
			Background.drawRounded(this, _local1, _local2, _local3);
			_local1.endFill();
		}
		public function get text():String{
			return (_textField.text);
		}
		public function appendText(_arg1:String, _arg2:String=""):void{
			if (_arg1 == ""){
				return;
			};
			if (_arg2 == ""){
				_arg2 = tag;
			};
			_textField.htmlText = (_textField.htmlText + (((("<span class=\"" + _arg2) + "\">") + _arg1) + "</span>"));
			_text = (_text + _arg1);
			_draw();
			resize();
		}
		public function set text(_arg1:String):void{
			if (_arg1 == ""){
				_arg1 = _text;
			};
			_textField.htmlText = (((("<span class=\"" + tag) + "\">") + _arg1) + "</span>");
			_text = _arg1;
			_draw();
			resize();
		}
		override protected function layout():void{
			_textField.type = TextFieldType.DYNAMIC;
			_textField.autoSize = TextFieldAutoSize.LEFT;
			_textField.background = false;
			_textField.selectable = selectable;
			_textField.multiline = true;
			_textField.styleSheet = Style.sheet;
			this.text = _text;
			addChild(_background);
			addChild(_textField);
		}
		public function set tag(_arg1:String):void{
			_tag = _arg1;
			text = "";
		}
		public function onLink(_arg1:TextEvent):void{
		}
		override protected function dispose():void{
			_textField.removeEventListener(TextEvent.LINK, onLink);
			super.dispose();
		}

	}
}//package com.google.analytics.debug 

****************

//Layout (com.google.analytics.debug.Layout)
package com.google.analytics.debug {
	import flash.events.*;
	import flash.display.*;
	import com.google.analytics.core.*;
	import flash.net.*;
	import com.google.analytics.*;

	public class Layout implements ILayout {

		private var _display:DisplayObject;
		private var _infoQueue:Array;
		private var _maxCharPerLine:int;// = 85
		private var _hasInfo:Boolean;
		private var _warningQueue:Array;
		private var _hasDebug:Boolean;
		private var _hasWarning:Boolean;
		private var _mainPanel:Panel;
		private var _GRAlertQueue:Array;
		private var _debug:DebugConfiguration;
		public var visualDebug:Debug;
		private var _hasGRAlert:Boolean;

		public function Layout(_arg1:DebugConfiguration, _arg2:DisplayObject){
			_display = _arg2;
			_debug = _arg1;
			_hasWarning = false;
			_hasInfo = false;
			_hasDebug = false;
			_hasGRAlert = false;
			_warningQueue = [];
			_infoQueue = [];
			_GRAlertQueue = [];
		}
		private function onKey(_arg1:KeyboardEvent=null):void{
			switch (_arg1.keyCode){
				case _debug.showHideKey:
					_mainPanel.visible = !(_mainPanel.visible);
					break;
				case _debug.destroyKey:
					destroy();
					break;
			};
		}
		public function createWarning(_arg1:String):void{
			if (((_hasWarning) || (!(isAvailable())))){
				_warningQueue.push(_arg1);
				return;
			};
			_arg1 = _filterMaxChars(_arg1);
			_hasWarning = true;
			var _local2:Warning = new Warning(_arg1, _debug.warningTimeout);
			addToPanel("analytics", _local2);
			_local2.addEventListener(Event.REMOVED_FROM_STAGE, _clearWarning, false, 0, true);
			if (_hasDebug){
				visualDebug.writeBold(_arg1);
			};
		}
		public function bringToFront(_arg1:DisplayObject):void{
			_display.stage.setChildIndex(_arg1, (_display.stage.numChildren - 1));
		}
		public function createFailureAlert(_arg1:String):void{
			var _local2:AlertAction;
			if (_debug.verbose){
				_arg1 = _filterMaxChars(_arg1);
				_local2 = new AlertAction("Close", "close", "close");
			} else {
				_local2 = new AlertAction("X", "close", "close");
			};
			var _local3:Alert = new FailureAlert(_debug, _arg1, [_local2]);
			addToPanel("analytics", _local3);
			if (_hasDebug){
				if (_debug.verbose){
					_arg1 = _arg1.split("\n").join("");
					_arg1 = _filterMaxChars(_arg1, 66);
				};
				visualDebug.writeBold(_arg1);
			};
		}
		public function init():void{
			var _local1 = 10;
			var _local2:uint = (_display.stage.stageWidth - (_local1 * 2));
			var _local3:uint = (_display.stage.stageHeight - (_local1 * 2));
			var _local4:Panel = new Panel("analytics", _local2, _local3);
			_local4.alignement = Align.top;
			_local4.stickToEdge = false;
			_local4.title = ("Google Analytics v" + GATracker.version);
			_mainPanel = _local4;
			addToStage(_local4);
			bringToFront(_local4);
			if (_debug.minimizedOnStart){
				_mainPanel.onToggle();
			};
			createVisualDebug();
			_display.stage.addEventListener(KeyboardEvent.KEY_DOWN, onKey, false, 0, true);
		}
		public function addToPanel(_arg1:String, _arg2:DisplayObject):void{
			var _local4:Panel;
			var _local3:DisplayObject = _display.stage.getChildByName(_arg1);
			if (_local3){
				_local4 = (_local3 as Panel);
				_local4.addData(_arg2);
			} else {
				trace((("panel \"" + _arg1) + "\" not found"));
			};
		}
		private function _clearInfo(_arg1:Event):void{
			_hasInfo = false;
			if (_infoQueue.length > 0){
				createInfo(_infoQueue.shift());
			};
		}
		private function _filterMaxChars(_arg1:String, _arg2:int=0):String{
			var _local6:String;
			var _local3 = "\n";
			var _local4:Array = [];
			var _local5:Array = _arg1.split(_local3);
			if (_arg2 == 0){
				_arg2 = _maxCharPerLine;
			};
			var _local7:int;
			while (_local7 < _local5.length) {
				_local6 = _local5[_local7];
				while (_local6.length > _arg2) {
					_local4.push(_local6.substr(0, _arg2));
					_local6 = _local6.substring(_arg2);
				};
				_local4.push(_local6);
				_local7++;
			};
			return (_local4.join(_local3));
		}
		private function _clearGRAlert(_arg1:Event):void{
			_hasGRAlert = false;
			if (_GRAlertQueue.length > 0){
				createGIFRequestAlert.apply(this, _GRAlertQueue.shift());
			};
		}
		public function createSuccessAlert(_arg1:String):void{
			var _local2:AlertAction;
			if (_debug.verbose){
				_arg1 = _filterMaxChars(_arg1);
				_local2 = new AlertAction("Close", "close", "close");
			} else {
				_local2 = new AlertAction("X", "close", "close");
			};
			var _local3:Alert = new SuccessAlert(_debug, _arg1, [_local2]);
			addToPanel("analytics", _local3);
			if (_hasDebug){
				if (_debug.verbose){
					_arg1 = _arg1.split("\n").join("");
					_arg1 = _filterMaxChars(_arg1, 66);
				};
				visualDebug.writeBold(_arg1);
			};
		}
		public function isAvailable():Boolean{
			return (!((_display.stage == null)));
		}
		public function createAlert(_arg1:String):void{
			_arg1 = _filterMaxChars(_arg1);
			var _local2:Alert = new Alert(_arg1, [new AlertAction("Close", "close", "close")]);
			addToPanel("analytics", _local2);
			if (_hasDebug){
				visualDebug.writeBold(_arg1);
			};
		}
		public function createInfo(_arg1:String):void{
			if (((_hasInfo) || (!(isAvailable())))){
				_infoQueue.push(_arg1);
				return;
			};
			_arg1 = _filterMaxChars(_arg1);
			_hasInfo = true;
			var _local2:Info = new Info(_arg1, _debug.infoTimeout);
			addToPanel("analytics", _local2);
			_local2.addEventListener(Event.REMOVED_FROM_STAGE, _clearInfo, false, 0, true);
			if (_hasDebug){
				visualDebug.write(_arg1);
			};
		}
		public function createGIFRequestAlert(_arg1:String, _arg2:URLRequest, _arg3:GIFRequest):void{
			var message = _arg1;
			var request = _arg2;
			var ref = _arg3;
			if (_hasGRAlert){
				_GRAlertQueue.push([message, request, ref]);
				return;
			};
			_hasGRAlert = true;
			var f:Function = function ():void{
				ref.sendRequest(request);
			};
			message = _filterMaxChars(message);
			var gra:GIFRequestAlert = new GIFRequestAlert(message, [new AlertAction("OK", "ok", f), new AlertAction("Cancel", "cancel", "close")]);
			addToPanel("analytics", gra);
			gra.addEventListener(Event.REMOVED_FROM_STAGE, _clearGRAlert, false, 0, true);
			if (_hasDebug){
				if (_debug.verbose){
					message = message.split("\n").join("");
					message = _filterMaxChars(message, 66);
				};
				visualDebug.write(message);
			};
		}
		public function createVisualDebug():void{
			if (!visualDebug){
				visualDebug = new Debug();
				visualDebug.alignement = Align.bottom;
				visualDebug.stickToEdge = true;
				addToPanel("analytics", visualDebug);
				_hasDebug = true;
			};
		}
		public function addToStage(_arg1:DisplayObject):void{
			_display.stage.addChild(_arg1);
		}
		private function _clearWarning(_arg1:Event):void{
			_hasWarning = false;
			if (_warningQueue.length > 0){
				createWarning(_warningQueue.shift());
			};
		}
		public function createPanel(_arg1:String, _arg2:uint, _arg3:uint):void{
			var _local4:Panel = new Panel(_arg1, _arg2, _arg3);
			_local4.alignement = Align.center;
			_local4.stickToEdge = false;
			addToStage(_local4);
			bringToFront(_local4);
		}
		public function destroy():void{
			_mainPanel.close();
			_debug.layout = null;
		}

	}
}//package com.google.analytics.debug 

****************

//Margin (com.google.analytics.debug.Margin)
package com.google.analytics.debug {

	public class Margin {

		public var top:int;
		public var left:int;
		public var bottom:int;
		public var right:int;

		public function Margin(_arg1:int=0, _arg2:int=0, _arg3:int=0, _arg4:int=0){
			this.top = _arg1;
			this.bottom = _arg2;
			this.left = _arg3;
			this.right = _arg4;
		}
	}
}//package com.google.analytics.debug 

****************

//Panel (com.google.analytics.debug.Panel)
package com.google.analytics.debug {
	import flash.events.*;
	import flash.display.*;

	public class Panel extends UISprite {

		private var _savedH:uint;
		private var _data:UISprite;
		private var _mask:Sprite;
		private var _background:Shape;
		private var _savedW:uint;
		private var _stickToEdge:Boolean;
		private var _border:Shape;
		private var _borderColor:uint;
		protected var baseAlpha:Number;
		private var _backgroundColor:uint;
		private var _title:Label;
		private var _colapsed:Boolean;
		private var _name:String;

		public function Panel(_arg1:String, _arg2:uint, _arg3:uint, _arg4:uint=0, _arg5:uint=0, _arg6:Number=0.3, _arg7:Align=null, _arg8:Boolean=false){
			_name = _arg1;
			this.name = _arg1;
			this.mouseEnabled = false;
			_colapsed = false;
			forcedWidth = _arg2;
			forcedHeight = _arg3;
			this.baseAlpha = _arg6;
			_background = new Shape();
			_data = new UISprite();
			_data.forcedWidth = _arg2;
			_data.forcedHeight = _arg3;
			_data.mouseEnabled = false;
			_title = new Label(_arg1, "uiLabel", 0xFFFFFF, Align.topLeft, _arg8);
			_title.buttonMode = true;
			_title.margin.top = 0.6;
			_title.margin.left = 0.6;
			_title.addEventListener(MouseEvent.CLICK, onToggle);
			_title.mouseChildren = false;
			_border = new Shape();
			_mask = new Sprite();
			_mask.useHandCursor = false;
			_mask.mouseEnabled = false;
			_mask.mouseChildren = false;
			if (_arg7 == null){
				_arg7 = Align.none;
			};
			this.alignement = _arg7;
			this.stickToEdge = _arg8;
			if (_arg4 == 0){
				_arg4 = Style.backgroundColor;
			};
			_backgroundColor = _arg4;
			if (_arg5 == 0){
				_arg5 = Style.borderColor;
			};
			_borderColor = _arg5;
		}
		public function get stickToEdge():Boolean{
			return (_stickToEdge);
		}
		public function onToggle(_arg1:MouseEvent=null):void{
			if (_colapsed){
				_data.visible = true;
			} else {
				_data.visible = false;
			};
			_colapsed = !(_colapsed);
			_update();
			resize();
		}
		public function set stickToEdge(_arg1:Boolean):void{
			_stickToEdge = _arg1;
			_title.stickToEdge = _arg1;
		}
		override protected function dispose():void{
			_title.removeEventListener(MouseEvent.CLICK, onToggle);
			super.dispose();
		}
		private function _draw():void{
			var _local1:uint;
			var _local2:uint;
			if (((_savedW) && (_savedH))){
				forcedWidth = _savedW;
				forcedHeight = _savedH;
			};
			if (!_colapsed){
				_local1 = forcedWidth;
				_local2 = forcedHeight;
			} else {
				_local1 = _title.width;
				_local2 = _title.height;
				_savedW = forcedWidth;
				_savedH = forcedHeight;
				forcedWidth = _local1;
				forcedHeight = _local2;
			};
			var _local3:Graphics = _background.graphics;
			_local3.clear();
			_local3.beginFill(_backgroundColor);
			Background.drawRounded(this, _local3, _local1, _local2);
			_local3.endFill();
			var _local4:Graphics = _data.graphics;
			_local4.clear();
			_local4.beginFill(_backgroundColor, 0);
			Background.drawRounded(this, _local4, _local1, _local2);
			_local4.endFill();
			var _local5:Graphics = _border.graphics;
			_local5.clear();
			_local5.lineStyle(0.1, _borderColor);
			Background.drawRounded(this, _local5, _local1, _local2);
			_local5.endFill();
			var _local6:Graphics = _mask.graphics;
			_local6.clear();
			_local6.beginFill(_backgroundColor);
			Background.drawRounded(this, _local6, (_local1 + 1), (_local2 + 1));
			_local6.endFill();
		}
		public function get title():String{
			return (_title.text);
		}
		private function _update():void{
			_draw();
			if (baseAlpha < 1){
				_background.alpha = baseAlpha;
				_border.alpha = baseAlpha;
			};
		}
		public function addData(_arg1:DisplayObject):void{
			_data.addChild(_arg1);
		}
		override protected function layout():void{
			_update();
			addChild(_background);
			addChild(_data);
			addChild(_title);
			addChild(_border);
			addChild(_mask);
			mask = _mask;
		}
		public function set title(_arg1:String):void{
			_title.text = _arg1;
		}
		public function close():void{
			dispose();
			if (parent != null){
				parent.removeChild(this);
			};
		}

	}
}//package com.google.analytics.debug 

****************

//Style (com.google.analytics.debug.Style)
package com.google.analytics.debug {

	public const Style:_Style = new _Style();
}//package com.google.analytics.debug 

****************

//SuccessAlert (com.google.analytics.debug.SuccessAlert)
package com.google.analytics.debug {

	public class SuccessAlert extends Alert {

		public function SuccessAlert(_arg1:DebugConfiguration, _arg2:String, _arg3:Array){
			var _local4:Align = Align.bottomLeft;
			var _local5:Boolean;
			var _local6:Boolean;
			if (_arg1.verbose){
				_arg2 = ((("<u><span class=\"uiAlertTitle\">Success</span>" + spaces(18)) + "</u>\n\n") + _arg2);
				_local4 = Align.center;
				_local5 = false;
				_local6 = true;
			};
			super(_arg2, _arg3, "uiSuccess", Style.successColor, _local4, _local5, _local6);
		}
	}
}//package com.google.analytics.debug 

****************

//UISprite (com.google.analytics.debug.UISprite)
package com.google.analytics.debug {
	import flash.events.*;
	import flash.display.*;

	public class UISprite extends Sprite {

		private var _forcedWidth:uint;
		public var margin:Margin;
		protected var alignTarget:DisplayObject;
		protected var listenResize:Boolean;
		public var alignement:Align;
		private var _forcedHeight:uint;

		public function UISprite(_arg1:DisplayObject=null){
			listenResize = false;
			alignement = Align.none;
			this.alignTarget = _arg1;
			margin = new Margin();
			addEventListener(Event.ADDED_TO_STAGE, _onAddedToStage);
			addEventListener(Event.REMOVED_FROM_STAGE, _onRemovedFromStage);
		}
		public function get forcedHeight():uint{
			if (_forcedHeight){
				return (_forcedHeight);
			};
			return (height);
		}
		private function _onAddedToStage(_arg1:Event):void{
			layout();
			resize();
		}
		protected function dispose():void{
			var _local1:DisplayObject;
			var _local2:int;
			while (_local2 < numChildren) {
				_local1 = getChildAt(_local2);
				if (_local1){
					removeChild(_local1);
				};
				_local2++;
			};
		}
		public function set forcedHeight(_arg1:uint):void{
			_forcedHeight = _arg1;
		}
		public function set forcedWidth(_arg1:uint):void{
			_forcedWidth = _arg1;
		}
		protected function layout():void{
		}
		public function get forcedWidth():uint{
			if (_forcedWidth){
				return (_forcedWidth);
			};
			return (width);
		}
		public function alignTo(_arg1:Align, _arg2:DisplayObject=null):void{
			var _local3:uint;
			var _local4:uint;
			var _local5:uint;
			var _local6:uint;
			var _local7:UISprite;
			if (_arg2 == null){
				if ((parent is Stage)){
					_arg2 = this.stage;
				} else {
					_arg2 = parent;
				};
			};
			if (_arg2 == this.stage){
				if (this.stage == null){
					return;
				};
				_local3 = this.stage.stageHeight;
				_local4 = this.stage.stageWidth;
				_local5 = 0;
				_local6 = 0;
			} else {
				_local7 = (_arg2 as UISprite);
				if (_local7.forcedHeight){
					_local3 = _local7.forcedHeight;
				} else {
					_local3 = _local7.height;
				};
				if (_local7.forcedWidth){
					_local4 = _local7.forcedWidth;
				} else {
					_local4 = _local7.width;
				};
				_local5 = 0;
				_local6 = 0;
			};
			switch (_arg1){
				case Align.top:
					x = ((_local4 / 2) - (forcedWidth / 2));
					y = (_local6 + margin.top);
					break;
				case Align.bottom:
					x = ((_local4 / 2) - (forcedWidth / 2));
					y = (((_local6 + _local3) - forcedHeight) - margin.bottom);
					break;
				case Align.left:
					x = (_local5 + margin.left);
					y = ((_local3 / 2) - (forcedHeight / 2));
					break;
				case Align.right:
					x = (((_local5 + _local4) - forcedWidth) - margin.right);
					y = ((_local3 / 2) - (forcedHeight / 2));
					break;
				case Align.center:
					x = ((_local4 / 2) - (forcedWidth / 2));
					y = ((_local3 / 2) - (forcedHeight / 2));
					break;
				case Align.topLeft:
					x = (_local5 + margin.left);
					y = (_local6 + margin.top);
					break;
				case Align.topRight:
					x = (((_local5 + _local4) - forcedWidth) - margin.right);
					y = (_local6 + margin.top);
					break;
				case Align.bottomLeft:
					x = (_local5 + margin.left);
					y = (((_local6 + _local3) - forcedHeight) - margin.bottom);
					break;
				case Align.bottomRight:
					x = (((_local5 + _local4) - forcedWidth) - margin.right);
					y = (((_local6 + _local3) - forcedHeight) - margin.bottom);
					break;
			};
			if (((!(listenResize)) && (!((_arg1 == Align.none))))){
				_arg2.addEventListener(Event.RESIZE, onResize, false, 0, true);
				listenResize = true;
			};
			this.alignement = _arg1;
			this.alignTarget = _arg2;
		}
		private function _onRemovedFromStage(_arg1:Event):void{
			removeEventListener(Event.ADDED_TO_STAGE, _onAddedToStage);
			removeEventListener(Event.REMOVED_FROM_STAGE, _onRemovedFromStage);
			dispose();
		}
		public function resize():void{
			if (alignement != Align.none){
				alignTo(alignement, alignTarget);
			};
		}
		protected function onResize(_arg1:Event):void{
			resize();
		}

	}
}//package com.google.analytics.debug 

****************

//VisualDebugMode (com.google.analytics.debug.VisualDebugMode)
package com.google.analytics.debug {

	public class VisualDebugMode {

		private var _value:int;
		private var _name:String;

		public static const advanced:VisualDebugMode = new VisualDebugMode(1, "advanced");
;
		public static const geek:VisualDebugMode = new VisualDebugMode(2, "geek");
;
		public static const basic:VisualDebugMode = new VisualDebugMode(0, "basic");
;

		public function VisualDebugMode(_arg1:int=0, _arg2:String=""){
			_value = _arg1;
			_name = _arg2;
		}
		public function valueOf():int{
			return (_value);
		}
		public function toString():String{
			return (_name);
		}

	}
}//package com.google.analytics.debug 

****************

//Warning (com.google.analytics.debug.Warning)
package com.google.analytics.debug {
	import flash.events.*;
	import flash.utils.*;

	public class Warning extends Label {

		private var _timer:Timer;

		public function Warning(_arg1:String="", _arg2:uint=3000){
			super(_arg1, "uiWarning", Style.warningColor, Align.top, false);
			margin.top = 32;
			if (_arg2 > 0){
				_timer = new Timer(_arg2, 1);
				_timer.start();
				_timer.addEventListener(TimerEvent.TIMER_COMPLETE, onComplete, false, 0, true);
			};
		}
		public function close():void{
			if (parent != null){
				parent.removeChild(this);
			};
		}
		override public function onLink(_arg1:TextEvent):void{
			switch (_arg1.text){
				case "hide":
					close();
					break;
			};
		}
		public function onComplete(_arg1:TimerEvent):void{
			close();
		}

	}
}//package com.google.analytics.debug 

****************

//AnalyticsEvent (com.google.analytics.events.AnalyticsEvent)
package com.google.analytics.events {
	import flash.events.*;
	import com.google.analytics.*;

	public class AnalyticsEvent extends Event {

		public var tracker:AnalyticsTracker;

		public static const READY:String = "ready";

		public function AnalyticsEvent(_arg1:String, _arg2:AnalyticsTracker, _arg3:Boolean=false, _arg4:Boolean=false){
			super(_arg1, _arg3, _arg4);
			this.tracker = _arg2;
		}
		override public function clone():Event{
			return (new AnalyticsEvent(type, tracker, bubbles, cancelable));
		}

	}
}//package com.google.analytics.events 

****************

//AdSenseGlobals (com.google.analytics.external.AdSenseGlobals)
package com.google.analytics.external {
	import com.google.analytics.debug.*;

	public class AdSenseGlobals extends JavascriptProxy {

		private var _gaGlobalVerified:Boolean;// = false

		public static var gaGlobal_js:XML = <script>
            <![CDATA[
                function()
                {
                    try
                    {
                        gaGlobal
                    }
                    catch(e)
                    {
                        gaGlobal = {} ;
                    }
                }
            ]]>
        </script>
		;

		public function AdSenseGlobals(_arg1:DebugConfiguration){
			super(_arg1);
		}
		public function set vid(_arg1:String):void{
			if (!isAvailable()){
				return;
			};
			_verify();
			setProperty("gaGlobal.vid", _arg1);
		}
		public function get hid():String{
			if (!isAvailable()){
				return (null);
			};
			_verify();
			return (getProperty("gaGlobal.hid"));
		}
		public function set hid(_arg1:String):void{
			if (!isAvailable()){
				return;
			};
			_verify();
			setProperty("gaGlobal.hid", _arg1);
		}
		public function get dh():String{
			if (!isAvailable()){
				return (null);
			};
			_verify();
			return (getProperty("gaGlobal.dh"));
		}
		public function get sid():String{
			if (!isAvailable()){
				return (null);
			};
			_verify();
			return (getProperty("gaGlobal.sid"));
		}
		public function get vid():String{
			if (!isAvailable()){
				return (null);
			};
			_verify();
			return (getProperty("gaGlobal.vid"));
		}
		private function _verify():void{
			if (!_gaGlobalVerified){
				executeBlock(gaGlobal_js);
				_gaGlobalVerified = true;
			};
		}
		public function set sid(_arg1:String):void{
			if (!isAvailable()){
				return;
			};
			_verify();
			setProperty("gaGlobal.sid", _arg1);
		}
		public function get gaGlobal():Object{
			if (!isAvailable()){
				return (null);
			};
			_verify();
			return (getProperty("gaGlobal"));
		}

	}
}//package com.google.analytics.external 

****************

//HTMLDOM (com.google.analytics.external.HTMLDOM)
package com.google.analytics.external {
	import com.google.analytics.debug.*;

	public class HTMLDOM extends JavascriptProxy {

		private var _referrer:String;
		private var _language:String;
		private var _host:String;
		private var _pathname:String;
		private var _location:String;
		private var _search:String;
		private var _characterSet:String;
		private var _title:String;
		private var _protocol:String;
		private var _colorDepth:String;

		public static var cache_properties_js:XML = <script>
            <![CDATA[
                    function()
                    {
                        var obj = {};
                            obj.host         = document.location.host;
                            obj.language     = navigator.language ? navigator.language : navigator.browserLanguage;
                            obj.characterSet = document.characterSet ? document.characterSet : document.charset;
                            obj.colorDepth   = window.screen.colorDepth;
                            obj.location     = document.location.toString();
                            obj.pathname     = document.location.pathname;
                            obj.protocol     = document.location.protocol;
                            obj.search       = document.location.search;
                            obj.referrer     = document.referrer;
                            obj.title        = document.title;
                        
                        return obj;
                    }
                ]]>
         </script>
		;

		public function HTMLDOM(_arg1:DebugConfiguration){
			super(_arg1);
		}
		public function get search():String{
			if (_search){
				return (_search);
			};
			if (!isAvailable()){
				return (null);
			};
			_search = getProperty("document.location.search");
			return (_search);
		}
		public function get location():String{
			if (_location){
				return (_location);
			};
			if (!isAvailable()){
				return (null);
			};
			_location = getPropertyString("document.location");
			return (_location);
		}
		public function get pathname():String{
			if (_pathname){
				return (_pathname);
			};
			if (!isAvailable()){
				return (null);
			};
			_pathname = getProperty("document.location.pathname");
			return (_pathname);
		}
		public function cacheProperties():void{
			if (!isAvailable()){
				return;
			};
			var _local1:Object = call(cache_properties_js);
			if (_local1){
				_host = _local1.host;
				_language = _local1.language;
				_characterSet = _local1.characterSet;
				_colorDepth = _local1.colorDepth;
				_location = _local1.location;
				_pathname = _local1.pathname;
				_protocol = _local1.protocol;
				_search = _local1.search;
				_referrer = _local1.referrer;
				_title = _local1.title;
			};
		}
		public function get language():String{
			if (_language){
				return (_language);
			};
			if (!isAvailable()){
				return (null);
			};
			var _local1:String = getProperty("navigator.language");
			if (_local1 == null){
				_local1 = getProperty("navigator.browserLanguage");
			};
			_language = _local1;
			return (_language);
		}
		public function get colorDepth():String{
			if (_colorDepth){
				return (_colorDepth);
			};
			if (!isAvailable()){
				return (null);
			};
			_colorDepth = getProperty("window.screen.colorDepth");
			return (_colorDepth);
		}
		public function get referrer():String{
			if (_referrer){
				return (_referrer);
			};
			if (!isAvailable()){
				return (null);
			};
			_referrer = getProperty("document.referrer");
			return (_referrer);
		}
		public function get protocol():String{
			if (_protocol){
				return (_protocol);
			};
			if (!isAvailable()){
				return (null);
			};
			_protocol = getProperty("document.location.protocol");
			return (_protocol);
		}
		public function get host():String{
			if (_host){
				return (_host);
			};
			if (!isAvailable()){
				return (null);
			};
			_host = getProperty("document.location.host");
			return (_host);
		}
		public function get characterSet():String{
			if (_characterSet){
				return (_characterSet);
			};
			if (!isAvailable()){
				return (null);
			};
			var _local1:String = getProperty("document.characterSet");
			if (_local1 == null){
				_local1 = getProperty("document.charset");
			};
			_characterSet = _local1;
			return (_characterSet);
		}
		public function get title():String{
			if (_title){
				return (_title);
			};
			if (!isAvailable()){
				return (null);
			};
			_title = getProperty("document.title");
			return (_title);
		}

	}
}//package com.google.analytics.external 

****************

//JavascriptProxy (com.google.analytics.external.JavascriptProxy)
package com.google.analytics.external {
	import com.google.analytics.debug.*;
	import flash.system.*;
	import flash.external.*;

	public class JavascriptProxy {

		private var _notAvailableWarning:Boolean;// = true
		private var _debug:DebugConfiguration;

		public static var setProperty_js:XML = <script>
                <![CDATA[
                    function( path , value )
                    {
                        var paths;
                        var prop;
                        if( path.indexOf(".") > 0 )
                        {
                            paths = path.split(".");
                            prop  = paths.pop() ;
                        }
                        else
                        {
                            paths = [];
                            prop  = path;
                        }
                        var target = window ;
                        var len    = paths.length ;
                        for( var i = 0 ; i < len ; i++ )
                        {
                            target = target[ paths[i] ] ;
                        }
                        
                        target[ prop ] = value ;
                    }
                ]]>
            </script>
		;
		public static var hasProperty_js:XML = <script>
                <![CDATA[
                    function( path )
                    {
                        var paths;
                        if( path.indexOf(".") > 0 )
                        {
                            paths = path.split(".");
                        }
                        else
                        {
                            paths = [path];
                        }
                        var target = window ;
                        var len    = paths.length ;
                        for( var i = 0 ; i < len ; i++ )
                        {
                            target = target[ paths[i] ] ;
                        }
                        if( target )
                        {
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                ]]>
            </script>
		;
		public static var setPropertyRef_js:XML = <script>
                <![CDATA[
                    function( path , target )
                    {
                        var paths;
                        var prop;
                        if( path.indexOf(".") > 0 )
                        {
                            paths = path.split(".");
                            prop  = paths.pop() ;
                        }
                        else
                        {
                            paths = [];
                            prop  = path;
                        }
                        alert( "paths:"+paths.length+", prop:"+prop );
                        var targets;
                        var name;
                        if( target.indexOf(".") > 0 )
                        {
                            targets = target.split(".");
                            name    = targets.pop();
                        }
                        else
                        {
                            targets = [];
                            name    = target;
                        }
                        alert( "targets:"+targets.length+", name:"+name );
                        var root = window;
                        var len  = paths.length;
                        for( var i = 0 ; i < len ; i++ )
                        {
                            root = root[ paths[i] ] ;
                        }
                        var ref   = window;
                        var depth = targets.length;
                        for( var j = 0 ; j < depth ; j++ )
                        {
                            ref = ref[ targets[j] ] ;
                        }
                        root[ prop ] = ref[name] ;
                    }
                ]]>
            </script>
		;

		public function JavascriptProxy(_arg1:DebugConfiguration){
			_debug = _arg1;
		}
		public function getProperty(_arg1:String){
			return (call((_arg1 + ".valueOf")));
		}
		public function hasProperty(_arg1:String):Boolean{
			return (call(hasProperty_js, _arg1));
		}
		public function setProperty(_arg1:String, _arg2):void{
			call(setProperty_js, _arg1, _arg2);
		}
		public function executeBlock(_arg1:String):void{
			var data = _arg1;
			if (isAvailable()){
				try {
					ExternalInterface.call(data);
				} catch(e:SecurityError) {
					if (_debug.javascript){
						_debug.warning("ExternalInterface is not allowed.\nEnsure that allowScriptAccess is set to \"always\" in the Flash embed HTML.");
					};
				} catch(e:Error) {
					if (_debug.javascript){
						_debug.warning(("ExternalInterface failed to make the call\nreason: " + e.message));
					};
				};
			};
		}
		public function getPropertyString(_arg1:String):String{
			return (call((_arg1 + ".toString")));
		}
		public function setPropertyByReference(_arg1:String, _arg2:String):void{
			call(setPropertyRef_js, _arg1, _arg2);
		}
		public function call(_arg1:String, ... _args){
			var output:String;
			var functionName = _arg1;
			var args = _args;
			if (isAvailable()){
				try {
					if (((_debug.javascript) && (_debug.verbose))){
						output = "";
						output = ("Flash->JS: " + functionName);
						output = (output + "( ");
						if (args.length > 0){
							output = (output + args.join(","));
						};
						output = (output + " )");
						_debug.info(output);
					};
					args.unshift(functionName);
					return (ExternalInterface.call.apply(ExternalInterface, args));
				} catch(e:SecurityError) {
					if (_debug.javascript){
						_debug.warning("ExternalInterface is not allowed.\nEnsure that allowScriptAccess is set to \"always\" in the Flash embed HTML.");
					};
				} catch(e:Error) {
					if (_debug.javascript){
						_debug.warning(("ExternalInterface failed to make the call\nreason: " + e.message));
					};
				};
			};
			return (null);
		}
		public function isAvailable():Boolean{
			var _local1:Boolean = ExternalInterface.available;
			if (((_local1) && ((Capabilities.playerType == "External")))){
				_local1 = false;
			};
			if (((((!(_local1)) && (_debug.javascript))) && (_notAvailableWarning))){
				_debug.warning("ExternalInterface is not available.");
				_notAvailableWarning = false;
			};
			return (_local1);
		}

	}
}//package com.google.analytics.external 

****************

//Environment (com.google.analytics.utils.Environment)
package com.google.analytics.utils {
	import com.google.analytics.debug.*;
	import com.google.analytics.external.*;
	import flash.system.*;

	public class Environment {

		private var _dom:HTMLDOM;
		private var _appName:String;
		private var _debug:DebugConfiguration;
		private var _appVersion:Version;
		private var _url:String;
		private var _protocol:Protocols;
		private var _userAgent:UserAgent;

		public function Environment(_arg1:String="", _arg2:String="", _arg3:String="", _arg4:DebugConfiguration=null, _arg5:HTMLDOM=null){
			var _local6:Version;
			super();
			if (_arg2 == ""){
				if (isAIR()){
					_arg2 = "AIR";
				} else {
					_arg2 = "Flash";
				};
			};
			if (_arg3 == ""){
				_local6 = flashVersion;
			} else {
				_local6 = Version.fromString(_arg3);
			};
			_url = _arg1;
			_appName = _arg2;
			_appVersion = _local6;
			_debug = _arg4;
			_dom = _arg5;
		}
		public function isAIR():Boolean{
			return ((((playerType == "Desktop")) && ((Security.sandboxType.toString() == "application"))));
		}
		public function get screenWidth():Number{
			return (Capabilities.screenResolutionX);
		}
		public function get playerType():String{
			return (Capabilities.playerType);
		}
		public function get locationSearch():String{
			var _local1:String = _dom.search;
			if (_local1){
				return (_local1);
			};
			return ("");
		}
		public function get protocol():Protocols{
			if (!_protocol){
				_findProtocol();
			};
			return (_protocol);
		}
		public function get flashVersion():Version{
			var _local1:Version = Version.fromString(Capabilities.version.split(" ")[1], ",");
			return (_local1);
		}
		public function get userAgent():UserAgent{
			if (!_userAgent){
				_userAgent = new UserAgent(this, appName, appVersion.toString(4));
			};
			return (_userAgent);
		}
		public function get languageEncoding():String{
			var _local1:String;
			if (System.useCodePage){
				_local1 = _dom.characterSet;
				if (_local1){
					return (_local1);
				};
				return ("-");
			};
			return ("UTF-8");
		}
		public function get appName():String{
			return (_appName);
		}
		public function get screenColorDepth():String{
			var _local1:String;
			switch (Capabilities.screenColor){
				case "bw":
					_local1 = "1";
					break;
				case "gray":
					_local1 = "2";
					break;
				case "color":
				default:
					_local1 = "24";
			};
			var _local2:String = _dom.colorDepth;
			if (_local2){
				_local1 = _local2;
			};
			return (_local1);
		}
		private function _findProtocol():void{
			var _local4:String;
			var _local5:String;
			var _local1:Protocols = Protocols.none;
			if (_url != ""){
				_local4 = _url.toLowerCase();
				_local5 = _local4.substr(0, 5);
				switch (_local5){
					case "file:":
						_local1 = Protocols.file;
						break;
					case "http:":
						_local1 = Protocols.HTTP;
						break;
					case "https":
						if (_local4.charAt(5) == ":"){
							_local1 = Protocols.HTTPS;
						};
						break;
					default:
						_protocol = Protocols.none;
				};
			};
			var _local2:String = _dom.protocol;
			var _local3:String = (_local1.toString() + ":").toLowerCase();
			if (((((_local2) && (!((_local2 == _local3))))) && (_debug))){
				_debug.warning(((("Protocol mismatch: SWF=" + _local3) + ", DOM=") + _local2));
			};
			_protocol = _local1;
		}
		public function get locationSWFPath():String{
			return (_url);
		}
		public function get platform():String{
			var _local1:String = Capabilities.manufacturer;
			return (_local1.split("Adobe ")[1]);
		}
		public function get operatingSystem():String{
			return (Capabilities.os);
		}
		public function set appName(_arg1:String):void{
			_appName = _arg1;
			userAgent.applicationProduct = _arg1;
		}
		function set url(_arg1:String):void{
			_url = _arg1;
		}
		public function get referrer():String{
			var _local1:String = _dom.referrer;
			if (_local1){
				return (_local1);
			};
			if (protocol == Protocols.file){
				return ("localhost");
			};
			return ("");
		}
		public function isInHTML():Boolean{
			return ((Capabilities.playerType == "PlugIn"));
		}
		public function get language():String{
			var _local1:String = _dom.language;
			var _local2:String = Capabilities.language;
			if (_local1){
				if ((((_local1.length > _local2.length)) && ((_local1.substr(0, _local2.length) == _local2)))){
					_local2 = _local1;
				};
			};
			return (_local2);
		}
		public function get domainName():String{
			var _local1:String;
			var _local2:String;
			var _local3:int;
			if ((((protocol == Protocols.HTTP)) || ((protocol == Protocols.HTTPS)))){
				_local1 = _url.toLowerCase();
				if (protocol == Protocols.HTTP){
					_local2 = _local1.split("http://").join("");
				} else {
					if (protocol == Protocols.HTTPS){
						_local2 = _local1.split("https://").join("");
					};
				};
				_local3 = _local2.indexOf("/");
				if (_local3 > -1){
					_local2 = _local2.substring(0, _local3);
				};
				return (_local2);
			};
			if (protocol == Protocols.file){
				return ("localhost");
			};
			return ("");
		}
		public function set userAgent(_arg1:UserAgent):void{
			_userAgent = _arg1;
		}
		public function set appVersion(_arg1:Version):void{
			_appVersion = _arg1;
			userAgent.applicationVersion = _arg1.toString(4);
		}
		public function get screenHeight():Number{
			return (Capabilities.screenResolutionY);
		}
		public function get locationPath():String{
			var _local1:String = _dom.pathname;
			if (_local1){
				return (_local1);
			};
			return ("");
		}
		public function get documentTitle():String{
			var _local1:String = _dom.title;
			if (_local1){
				return (_local1);
			};
			return ("");
		}
		public function get appVersion():Version{
			return (_appVersion);
		}

	}
}//package com.google.analytics.utils 

****************

//Protocols (com.google.analytics.utils.Protocols)
package com.google.analytics.utils {

	public class Protocols {

		private var _value:int;
		private var _name:String;

		public static const none:Protocols = new Protocols(0, "none");
;
		public static const HTTPS:Protocols = new Protocols(3, "HTTPS");
;
		public static const file:Protocols = new Protocols(1, "file");
;
		public static const HTTP:Protocols = new Protocols(2, "HTTP");
;

		public function Protocols(_arg1:int=0, _arg2:String=""){
			_value = _arg1;
			_name = _arg2;
		}
		public function valueOf():int{
			return (_value);
		}
		public function toString():String{
			return (_name);
		}

	}
}//package com.google.analytics.utils 

****************

//Timespan (com.google.analytics.utils.Timespan)
package com.google.analytics.utils {

	public class Timespan {

		public static var sixmonths:Number = 15768000;
		public static var twoyears:Number = 63072000;
		public static var thirtyminutes:Number = 1800;

	}
}//package com.google.analytics.utils 

****************

//URL (com.google.analytics.utils.URL)
package com.google.analytics.utils {

	public class URL {

		private var _url:String;

		public function URL(_arg1:String=""){
			_url = _arg1.toLowerCase();
		}
		public function get domain():String{
			var _local1:Array;
			if (((!((hostName == ""))) && ((hostName.indexOf(".") > -1)))){
				_local1 = hostName.split(".");
				switch (_local1.length){
					case 2:
						return (hostName);
					case 3:
						if (_local1[1] == "co"){
							return (hostName);
						};
						_local1.shift();
						return (_local1.join("."));
					case 4:
						_local1.shift();
						return (_local1.join("."));
				};
			};
			return ("");
		}
		public function get path():String{
			var _local1:String = _url;
			if (_local1.indexOf("://") > -1){
				_local1 = _local1.split("://")[1];
			};
			if (_local1.indexOf(hostName) == 0){
				_local1 = _local1.substr(hostName.length);
			};
			if (_local1.indexOf("?") > -1){
				_local1 = _local1.split("?")[0];
			};
			if (_local1.charAt(0) != "/"){
				_local1 = ("/" + _local1);
			};
			return (_local1);
		}
		public function get protocol():Protocols{
			var _local1:String = _url.split("://")[0];
			switch (_local1){
				case "file":
					return (Protocols.file);
				case "http":
					return (Protocols.HTTP);
				case "https":
					return (Protocols.HTTPS);
				default:
					return (Protocols.none);
			};
		}
		public function get hostName():String{
			var _local1:String = _url;
			if (_local1.indexOf("://") > -1){
				_local1 = _local1.split("://")[1];
			};
			if (_local1.indexOf("/") > -1){
				_local1 = _local1.split("/")[0];
			};
			if (_local1.indexOf("?") > -1){
				_local1 = _local1.split("?")[0];
			};
			if ((((protocol == Protocols.file)) || ((protocol == Protocols.none)))){
				return ("");
			};
			return (_local1);
		}
		public function get subDomain():String{
			if (((!((domain == ""))) && (!((domain == hostName))))){
				return (hostName.split(("." + domain)).join(""));
			};
			return ("");
		}
		public function get search():String{
			var _local1:String = _url;
			if (_local1.indexOf("://") > -1){
				_local1 = _local1.split("://")[1];
			};
			if (_local1.indexOf(hostName) == 0){
				_local1 = _local1.substr(hostName.length);
			};
			if (_local1.indexOf("?") > -1){
				_local1 = _local1.split("?")[1];
			} else {
				_local1 = "";
			};
			return (_local1);
		}

	}
}//package com.google.analytics.utils 

****************

//UserAgent (com.google.analytics.utils.UserAgent)
package com.google.analytics.utils {
	import com.google.analytics.core.*;
	import flash.system.*;

	public class UserAgent {

		private var _localInfo:Environment;
		private var _applicationProduct:String;
		private var _version:Version;

		public static var minimal:Boolean = false;

		public function UserAgent(_arg1:Environment, _arg2:String="", _arg3:String=""){
			_localInfo = _arg1;
			applicationProduct = _arg2;
			_version = Version.fromString(_arg3);
		}
		public function get tamarinProductToken():String{
			if (UserAgent.minimal){
				return ("");
			};
			if (System.vmVersion){
				return (("Tamarin/" + Utils.trim(System.vmVersion, true)));
			};
			return ("");
		}
		public function get applicationVersion():String{
			return (_version.toString(2));
		}
		public function get vendorProductToken():String{
			var _local1 = "";
			if (_localInfo.isAIR()){
				_local1 = (_local1 + "AIR");
			} else {
				_local1 = (_local1 + "FlashPlayer");
			};
			_local1 = (_local1 + "/");
			_local1 = (_local1 + _version.toString(3));
			return (_local1);
		}
		public function toString():String{
			var _local1 = "";
			_local1 = (_local1 + applicationProductToken);
			if (applicationComment != ""){
				_local1 = (_local1 + (" " + applicationComment));
			};
			if (tamarinProductToken != ""){
				_local1 = (_local1 + (" " + tamarinProductToken));
			};
			if (vendorProductToken != ""){
				_local1 = (_local1 + (" " + vendorProductToken));
			};
			return (_local1);
		}
		public function get applicationComment():String{
			var _local1:Array = [];
			_local1.push(_localInfo.platform);
			_local1.push(_localInfo.playerType);
			if (!UserAgent.minimal){
				_local1.push(_localInfo.operatingSystem);
				_local1.push(_localInfo.language);
			};
			if (Capabilities.isDebugger){
				_local1.push("DEBUG");
			};
			if (_local1.length > 0){
				return ((("(" + _local1.join("; ")) + ")"));
			};
			return ("");
		}
		public function set applicationVersion(_arg1:String):void{
			_version = Version.fromString(_arg1);
		}
		public function get applicationProductToken():String{
			var _local1:String = applicationProduct;
			if (applicationVersion != ""){
				_local1 = (_local1 + ("/" + applicationVersion));
			};
			return (_local1);
		}
		public function set applicationProduct(_arg1:String):void{
			_applicationProduct = _arg1;
		}
		public function get applicationProduct():String{
			return (_applicationProduct);
		}

	}
}//package com.google.analytics.utils 

****************

//Variables (com.google.analytics.utils.Variables)
package com.google.analytics.utils {
	import flash.net.*;

	public dynamic class Variables {

		public var post:Array;
		public var URIencode:Boolean;
		public var pre:Array;
		public var sort:Boolean;// = true

		public function Variables(_arg1:String=null, _arg2:Array=null, _arg3:Array=null){
			pre = [];
			post = [];
			super();
			if (_arg1){
				decode(_arg1);
			};
			if (_arg2){
				this.pre = _arg2;
			};
			if (_arg3){
				this.post = _arg3;
			};
		}
		private function _join(_arg1:Variables):void{
			var _local2:String;
			if (!_arg1){
				return;
			};
			for (_local2 in _arg1) {
				this[_local2] = _arg1[_local2];
			};
		}
		public function join(... _args):void{
			var _local2:int = _args.length;
			var _local3:int;
			while (_local3 < _local2) {
				if (!(_args[_local3] is Variables)){
				} else {
					_join(_args[_local3]);
				};
				_local3++;
			};
		}
		public function toString():String{
			var _local2:String;
			var _local3:String;
			var _local4:String;
			var _local5:int;
			var _local6:int;
			var _local7:String;
			var _local8:String;
			var _local1:Array = [];
			for (_local3 in this) {
				_local2 = this[_local3];
				if (URIencode){
					_local2 = encodeURI(_local2);
				};
				_local1.push(((_local3 + "=") + _local2));
			};
			if (sort){
				_local1.sort();
			};
			if (pre.length > 0){
				pre.reverse();
				_local5 = 0;
				while (_local5 < pre.length) {
					_local7 = pre[_local5];
					_local6 = 0;
					while (_local6 < _local1.length) {
						_local4 = _local1[_local6];
						if (_local4.indexOf(_local7) == 0){
							_local1.unshift(_local1.splice(_local6, 1)[0]);
						};
						_local6++;
					};
					_local5++;
				};
				pre.reverse();
			};
			if (post.length > 0){
				_local5 = 0;
				while (_local5 < post.length) {
					_local8 = post[_local5];
					_local6 = 0;
					while (_local6 < _local1.length) {
						_local4 = _local1[_local6];
						if (_local4.indexOf(_local8) == 0){
							_local1.push(_local1.splice(_local6, 1)[0]);
						};
						_local6++;
					};
					_local5++;
				};
			};
			return (_local1.join("&"));
		}
		public function decode(_arg1:String):void{
			var _local2:Array;
			var _local3:String;
			var _local4:String;
			var _local5:String;
			var _local6:Array;
			if (_arg1 == ""){
				return;
			};
			if (_arg1.indexOf("&") > -1){
				_local2 = _arg1.split("&");
			} else {
				_local2 = [_arg1];
			};
			var _local7:int;
			while (_local7 < _local2.length) {
				_local3 = _local2[_local7];
				if (_local3.indexOf("=") > -1){
					_local6 = _local3.split("=");
					_local4 = _local6[0];
					_local5 = decodeURI(_local6[1]);
					this[_local4] = _local5;
				};
				_local7++;
			};
		}
		public function toURLVariables():URLVariables{
			var _local2:String;
			var _local1:URLVariables = new URLVariables();
			for (_local2 in this) {
				_local1[_local2] = this[_local2];
			};
			return (_local1);
		}

	}
}//package com.google.analytics.utils 

****************

//Version (com.google.analytics.utils.Version)
package com.google.analytics.utils {

	public class Version {

		private var _revision:uint;
		private var _maxBuild:uint;// = 0xFF
		private var _maxMinor:uint;// = 15
		private var _maxMajor:uint;// = 15
		private var _separator:String;// = "."
		private var _maxRevision:uint;// = 0xFFFF
		private var _build:uint;
		private var _major:uint;
		private var _minor:uint;

		public function Version(_arg1:uint=0, _arg2:uint=0, _arg3:uint=0, _arg4:uint=0){
			var _local5:Version;
			super();
			if ((((((((_arg1 > _maxMajor)) && ((_arg2 == 0)))) && ((_arg3 == 0)))) && ((_arg4 == 0)))){
				_local5 = Version.fromNumber(_arg1);
				_arg1 = _local5.major;
				_arg2 = _local5.minor;
				_arg3 = _local5.build;
				_arg4 = _local5.revision;
			};
			this.major = _arg1;
			this.minor = _arg2;
			this.build = _arg3;
			this.revision = _arg4;
		}
		public function toString(_arg1:int=0):String{
			var _local2:Array;
			if ((((_arg1 <= 0)) || ((_arg1 > 4)))){
				_arg1 = getFields();
			};
			switch (_arg1){
				case 1:
					_local2 = [major];
					break;
				case 2:
					_local2 = [major, minor];
					break;
				case 3:
					_local2 = [major, minor, build];
					break;
				case 4:
				default:
					_local2 = [major, minor, build, revision];
			};
			return (_local2.join(_separator));
		}
		public function set revision(_arg1:uint):void{
			_revision = Math.min(_arg1, _maxRevision);
		}
		public function get revision():uint{
			return (_revision);
		}
		public function set build(_arg1:uint):void{
			_build = Math.min(_arg1, _maxBuild);
		}
		public function set minor(_arg1:uint):void{
			_minor = Math.min(_arg1, _maxMinor);
		}
		public function get build():uint{
			return (_build);
		}
		public function set major(_arg1:uint):void{
			_major = Math.min(_arg1, _maxMajor);
		}
		public function get minor():uint{
			return (_minor);
		}
		private function getFields():int{
			var _local1 = 4;
			if (revision == 0){
				_local1--;
			};
			if ((((_local1 == 3)) && ((build == 0)))){
				_local1--;
			};
			if ((((_local1 == 2)) && ((minor == 0)))){
				_local1--;
			};
			return (_local1);
		}
		public function valueOf():uint{
			return (((((major << 28) | (minor << 24)) | (build << 16)) | revision));
		}
		public function get major():uint{
			return (_major);
		}
		public function equals(_arg1):Boolean{
			if (!(_arg1 is Version)){
				return (false);
			};
			if ((((((((_arg1.major == major)) && ((_arg1.minor == minor)))) && ((_arg1.build == build)))) && ((_arg1.revision == revision)))){
				return (true);
			};
			return (false);
		}

		public static function fromString(_arg1:String="", _arg2:String="."):Version{
			var _local4:Array;
			var _local3:Version = new (Version);
			if ((((_arg1 == "")) || ((_arg1 == null)))){
				return (_local3);
			};
			if (_arg1.indexOf(_arg2) > -1){
				_local4 = _arg1.split(_arg2);
				_local3.major = parseInt(_local4[0]);
				_local3.minor = parseInt(_local4[1]);
				_local3.build = parseInt(_local4[2]);
				_local3.revision = parseInt(_local4[3]);
			} else {
				_local3.major = parseInt(_arg1);
			};
			return (_local3);
		}
		public static function fromNumber(_arg1:Number=0):Version{
			var _local2:Version = new (Version);
			if (((((((((((isNaN(_arg1)) || ((_arg1 == 0)))) || ((_arg1 < 0)))) || ((_arg1 == Number.MAX_VALUE)))) || ((_arg1 == Number.POSITIVE_INFINITY)))) || ((_arg1 == Number.NEGATIVE_INFINITY)))){
				return (_local2);
			};
			_local2.major = (_arg1 >>> 28);
			_local2.minor = ((_arg1 & 251658240) >>> 24);
			_local2.build = ((_arg1 & 0xFF0000) >>> 16);
			_local2.revision = (_arg1 & 0xFFFF);
			return (_local2);
		}

	}
}//package com.google.analytics.utils 

****************

//Bridge (com.google.analytics.v4.Bridge)
package com.google.analytics.v4 {
	import com.google.analytics.core.*;
	import com.google.analytics.debug.*;
	import com.google.analytics.external.*;

	public class Bridge implements GoogleAnalyticsAPI {

		private var _debug:DebugConfiguration;
		private var _proxy:JavascriptProxy;
		private var _jsContainer:String;// = "_GATracker"
		private var _hasGATracker:Boolean;// = false
		private var _account:String;

		private static var _linkTrackingObject_js:XML = <script>
            <![CDATA[
                function( container , target )
                {
                    var targets ;
                    var name ;
                    if( target.indexOf(".") > 0 )
                    {
                        targets = target.split(".");
                        name    = targets.pop();
                    }
                    else
                    {
                        targets = [];
                        name    = target;
                    }
                    var ref   = window;
                    var depth = targets.length;
                    for( var j = 0 ; j < depth ; j++ )
                    {
                        ref = ref[ targets[j] ] ;
                    }
                    window[container][target] = ref[name] ;
                }
            ]]>
        </script>
		;
		private static var _createTrackingObject_js:XML = <script>
            <![CDATA[
                function( acct )
                {
                    _GATracker[acct] = _gat._getTracker(acct);
                }
            ]]>
        </script>
		;
		private static var _injectTrackingObject_js:XML = <script>
            <![CDATA[
                function()
                {
                    try 
                    {
                        _GATracker
                    }
                    catch(e) 
                    {
                        _GATracker = {};
                    }
                }
            ]]>
        </script>
		;
		private static var _checkGAJS_js:XML = <script>
            <![CDATA[
                function()
                {
                    if( _gat && _gat._getTracker )
                    {
                        return true;
                    }
                    return false;
                }
            ]]>
        </script>
		;
		private static var _checkValidTrackingObject_js:XML = <script>
            <![CDATA[
                function(acct)
                {
                    if( _GATracker[acct] && (_GATracker[acct]._getAccount) )
                    {
                        return true ;
                    }
                    else
                    {
                        return false;
                    }
                }
            ]]>
        </script>
		;

		public function Bridge(_arg1:String, _arg2:DebugConfiguration, _arg3:JavascriptProxy){
			var _local4:String;
			var _local5:String;
			var _local6:String;
			super();
			_account = _arg1;
			_debug = _arg2;
			_proxy = _arg3;
			if (!_checkGAJS()){
				_local4 = "";
				_local4 = (_local4 + "ga.js not found, be sure to check if\n");
				_local4 = (_local4 + "<script src=\"http://www.google-analytics.com/ga.js\"></script>\n");
				_local4 = (_local4 + "is included in the HTML.");
				_debug.warning(_local4);
				throw (new Error(_local4));
			};
			if (!_hasGATracker){
				if (((_debug.javascript) && (_debug.verbose))){
					_local5 = "";
					_local5 = (_local5 + "The Google Analytics tracking code was not found on the container page\n");
					_local5 = (_local5 + "we create it");
					_debug.info(_local5, VisualDebugMode.advanced);
				};
				_injectTrackingObject();
			};
			if (Utils.validateAccount(_arg1)){
				_createTrackingObject(_arg1);
			} else {
				if (_checkTrackingObject(_arg1)){
					_linkTrackingObject(_arg1);
				} else {
					_local6 = "";
					_local6 = (_local6 + (("JS Object \"" + _arg1) + "\" doesn't exist in DOM\n"));
					_local6 = (_local6 + "Bridge object not created.");
					_debug.warning(_local6);
					throw (new Error(_local6));
				};
			};
		}
		public function link(_arg1:String, _arg2:Boolean=false):void{
			_debug.info((((("link( " + _arg1) + ", ") + _arg2) + " )"));
			_call("_link", _arg1, _arg2);
		}
		public function addOrganic(_arg1:String, _arg2:String):void{
			_debug.info((("addOrganic( " + [_arg1, _arg2].join(", ")) + " )"));
			_call("_addOrganic", _arg1);
		}
		public function setAllowLinker(_arg1:Boolean):void{
			_debug.info((("setAllowLinker( " + _arg1) + " )"));
			_call("_setAllowLinker", _arg1);
		}
		private function _linkTrackingObject(_arg1:String):void{
			_proxy.call(_linkTrackingObject_js, _jsContainer, _arg1);
		}
		public function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{
			var _local5 = 2;
			if (((_arg3) && (!((_arg3 == ""))))){
				_local5 = 3;
			};
			if ((((_local5 == 3)) && (!(isNaN(_arg4))))){
				_local5 = 4;
			};
			switch (_local5){
				case 4:
					_debug.info((("trackEvent( " + [_arg1, _arg2, _arg3, _arg4].join(", ")) + " )"));
					return (_call("_trackEvent", _arg1, _arg2, _arg3, _arg4));
				case 3:
					_debug.info((("trackEvent( " + [_arg1, _arg2, _arg3].join(", ")) + " )"));
					return (_call("_trackEvent", _arg1, _arg2, _arg3));
				case 2:
				default:
					_debug.info((("trackEvent( " + [_arg1, _arg2].join(", ")) + " )"));
					return (_call("_trackEvent", _arg1, _arg2));
			};
		}
		public function setClientInfo(_arg1:Boolean):void{
			_debug.info((("setClientInfo( " + _arg1) + " )"));
			_call("_setClientInfo", _arg1);
		}
		public function trackTrans():void{
			_debug.info("trackTrans()");
			_call("_trackTrans");
		}
		public function setCookieTimeout(_arg1:int):void{
			_debug.info((("setCookieTimeout( " + _arg1) + " )"));
			_call("_setCookieTimeout", _arg1);
		}
		public function trackPageview(_arg1:String=""):void{
			_debug.info((("trackPageview( " + _arg1) + " )"));
			_call("_trackPageview", _arg1);
		}
		public function getClientInfo():Boolean{
			_debug.info("getClientInfo()");
			return (_call("_getClientInfo"));
		}
		private function _checkValidTrackingObject(_arg1:String):Boolean{
			return (_proxy.call(_checkValidTrackingObject_js, _arg1));
		}
		private function _checkGAJS():Boolean{
			return (_proxy.call(_checkGAJS_js));
		}
		public function linkByPost(_arg1:Object, _arg2:Boolean=false):void{
			_debug.warning((((("linkByPost( " + _arg1) + ", ") + _arg2) + " ) not implemented"));
		}
		private function _call(_arg1:String, ... _args){
			_args.unshift(((((("window." + _jsContainer) + "[\"") + _account) + "\"].") + _arg1));
			return (_proxy.call.apply(_proxy, _args));
		}
		public function hasGAJS():Boolean{
			return (_checkGAJS());
		}
		private function _checkTrackingObject(_arg1:String):Boolean{
			var _local2:Boolean = _proxy.hasProperty(_arg1);
			var _local3:Boolean = _proxy.hasProperty((_arg1 + "._getAccount"));
			return (((_local2) && (_local3)));
		}
		public function resetSession():void{
			_debug.warning("resetSession() not implemented");
		}
		public function getDetectTitle():Boolean{
			_debug.info("getDetectTitle()");
			return (_call("_getDetectTitle"));
		}
		public function setCampNameKey(_arg1:String):void{
			_debug.info((("setCampNameKey( " + _arg1) + " )"));
			_call("_setCampNameKey", _arg1);
		}
		public function setDetectFlash(_arg1:Boolean):void{
			_debug.info((("setDetectFlash( " + _arg1) + " )"));
			_call("_setDetectFlash", _arg1);
		}
		public function createEventTracker(_arg1:String):EventTracker{
			_debug.info((("createEventTracker( " + _arg1) + " )"));
			return (new EventTracker(_arg1, this));
		}
		public function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void{
			_debug.info((("addItem( " + [_arg1, _arg2, _arg3, _arg4, _arg5, _arg6].join(", ")) + " )"));
			_call("_addItem", _arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
		}
		public function clearIgnoredOrganic():void{
			_debug.info("clearIgnoredOrganic()");
			_call("_clearIgnoreOrganic");
		}
		public function setVar(_arg1:String):void{
			_debug.info((("setVar( " + _arg1) + " )"));
			_call("_setVar", _arg1);
		}
		public function setDomainName(_arg1:String):void{
			_debug.info((("setDomainName( " + _arg1) + " )"));
			_call("_setDomainName", _arg1);
		}
		public function hasTrackingAccount(_arg1:String):Boolean{
			if (Utils.validateAccount(_arg1)){
				return (_checkValidTrackingObject(_arg1));
			};
			return (_checkTrackingObject(_arg1));
		}
		public function setCampSourceKey(_arg1:String):void{
			_debug.info((("setCampSourceKey( " + _arg1) + " )"));
			_call("_setCampSourceKey", _arg1);
		}
		public function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object{
			_debug.info((("addTrans( " + [_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8].join(", ")) + " )"));
			_call("_addTrans", _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			return (null);
		}
		public function setCampContentKey(_arg1:String):void{
			_debug.info((("setCampContentKey( " + _arg1) + " )"));
			_call("_setCampContentKey", _arg1);
		}
		public function setLocalServerMode():void{
			_debug.info("setLocalServerMode()");
			_call("_setLocalServerMode");
		}
		public function getLocalGifPath():String{
			_debug.info("getLocalGifPath()");
			return (_call("_getLocalGifPath"));
		}
		public function clearIgnoredRef():void{
			_debug.info("clearIgnoredRef()");
			_call("_clearIgnoreRef");
		}
		public function setAllowAnchor(_arg1:Boolean):void{
			_debug.info((("setAllowAnchor( " + _arg1) + " )"));
			_call("_setAllowAnchor", _arg1);
		}
		public function setLocalGifPath(_arg1:String):void{
			_debug.info((("setLocalGifPath( " + _arg1) + " )"));
			_call("_setLocalGifPath", _arg1);
		}
		public function getVersion():String{
			_debug.info("getVersion()");
			return (_call("_getVersion"));
		}
		private function _injectTrackingObject():void{
			_proxy.executeBlock(_injectTrackingObject_js);
			_hasGATracker = true;
		}
		public function setCookiePath(_arg1:String):void{
			_debug.info((("setCookiePath( " + _arg1) + " )"));
			_call("_setCookiePath", _arg1);
		}
		public function setSampleRate(_arg1:Number):void{
			_debug.info((("setSampleRate( " + _arg1) + " )"));
			_call("_setSampleRate", _arg1);
		}
		public function setAllowHash(_arg1:Boolean):void{
			_debug.info((("setAllowHash( " + _arg1) + " )"));
			_call("_setAllowHash", _arg1);
		}
		public function addIgnoredOrganic(_arg1:String):void{
			_debug.info((("addIgnoredOrganic( " + _arg1) + " )"));
			_call("_addIgnoredOrganic", _arg1);
		}
		public function setCampNOKey(_arg1:String):void{
			_debug.info((("setCampNOKey( " + _arg1) + " )"));
			_call("_setCampNOKey", _arg1);
		}
		public function cookiePathCopy(_arg1:String):void{
			_debug.info((("cookiePathCopy( " + _arg1) + " )"));
			_call("_cookiePathCopy", _arg1);
		}
		public function setLocalRemoteServerMode():void{
			_debug.info("setLocalRemoteServerMode()");
			_call("_setLocalRemoteServerMode");
		}
		public function getServiceMode():ServerOperationMode{
			_debug.info("getServiceMode()");
			return (_call("_getServiceMode"));
		}
		public function setDetectTitle(_arg1:Boolean):void{
			_debug.info((("setDetectTitle( " + _arg1) + " )"));
			_call("_setDetectTitle", _arg1);
		}
		private function _createTrackingObject(_arg1:String):void{
			_proxy.call(_createTrackingObject_js, _arg1);
		}
		public function setCampaignTrack(_arg1:Boolean):void{
			_debug.info((("setCampaignTrack( " + _arg1) + " )"));
			_call("_setCampaignTrack", _arg1);
		}
		public function clearOrganic():void{
			_debug.info("clearOrganic()");
			_call("_clearOrganic");
		}
		public function setCampTermKey(_arg1:String):void{
			_debug.info((("setCampTermKey( " + _arg1) + " )"));
			_call("_setCampTermKey", _arg1);
		}
		public function getDetectFlash():Boolean{
			_debug.info("getDetectFlash()");
			return (_call("_getDetectFlash"));
		}
		public function setCampMediumKey(_arg1:String):void{
			_debug.info((("setCampMediumKey( " + _arg1) + " )"));
			_call("_setCampMediumKey", _arg1);
		}
		public function addIgnoredRef(_arg1:String):void{
			_debug.info((("addIgnoredRef( " + _arg1) + " )"));
			_call("_addIgnoredRef", _arg1);
		}
		public function setSessionTimeout(_arg1:int):void{
			_debug.info((("setSessionTimeout( " + _arg1) + " )"));
			_call("_setSessionTimeout", _arg1);
		}
		public function setRemoteServerMode():void{
			_debug.info("setRemoteServerMode()");
			_call("_setRemoteServerMode");
		}
		public function getAccount():String{
			_debug.info("getAccount()");
			return (_call("_getAccount"));
		}

	}
}//package com.google.analytics.v4 

****************

//Configuration (com.google.analytics.v4.Configuration)
package com.google.analytics.v4 {
	import com.google.analytics.core.*;
	import com.google.analytics.debug.*;
	import com.google.analytics.utils.*;
	import com.google.analytics.campaign.*;

	public class Configuration {

		public var serverMode:ServerOperationMode;
		public var detectFlash:Boolean;// = true
		public var hasSiteOverlay:Boolean;// = false
		public var allowLocalTracking:Boolean;// = true
		public var secureRemoteGIFpath:String;// = "https://ssl.google-analytics.com/__utm.gif"
		private var _version:String;// = "4.3as"
		public var allowDomainHash:Boolean;// = true
		public var detectClientInfo:Boolean;// = true
		public var idleLoop:Number;// = 30
		public var isTrackOutboundSubdomains:Boolean;// = false
		public var cookiePath:String;// = "/"
		public var transactionFieldDelim:String;// = "|"
		private var _organic:Organic;
		private var _cookieName:String;// = "analytics"
		public var campaignKey:CampaignKey;
		public var google:String;// = "google"
		public var googleCsePath:String;// = "cse"
		public var bucketCapacity:Number;// = 10
		private var _sampleRate:Number;// = 1
		public var remoteGIFpath:String;// = "http://www.google-analytics.com/__utm.gif"
		public var googleSearchParam:String;// = "q"
		public var allowLinker:Boolean;// = false
		public var maxOutboundLinkExamined:Number;// = 1000
		private var _debug:DebugConfiguration;
		public var allowAnchor:Boolean;// = false
		private var _domain:Domain;
		private var _trackingLimitPerSession:int;// = 500
		public var tokenCliff:int;// = 10
		public var sessionTimeout:Number;
		public var idleTimeout:Number;// = 60
		public var campaignTracking:Boolean;// = true
		public var domainName:String;// = ""
		public var detectTitle:Boolean;// = true
		public var tokenRate:Number;// = 0.2
		public var conversionTimeout:Number;
		public var localGIFpath:String;// = "/__utm.gif"

		public function Configuration(_arg1:DebugConfiguration=null){
			_organic = new Organic();
			conversionTimeout = Timespan.sixmonths;
			sessionTimeout = Timespan.thirtyminutes;
			campaignKey = new CampaignKey();
			serverMode = ServerOperationMode.remote;
			super();
			_debug = _arg1;
			_domain = new Domain(DomainNameMode.auto, "", _debug);
			serverMode = ServerOperationMode.remote;
			_initOrganicSources();
		}
		public function get organic():Organic{
			return (_organic);
		}
		public function get cookieName():String{
			return (_cookieName);
		}
		public function get trackingLimitPerSession():int{
			return (_trackingLimitPerSession);
		}
		private function _initOrganicSources():void{
			addOrganicSource(google, googleSearchParam);
			addOrganicSource("yahoo", "p");
			addOrganicSource("msn", "q");
			addOrganicSource("aol", "query");
			addOrganicSource("aol", "encquery");
			addOrganicSource("lycos", "query");
			addOrganicSource("ask", "q");
			addOrganicSource("altavista", "q");
			addOrganicSource("netscape", "query");
			addOrganicSource("cnn", "query");
			addOrganicSource("looksmart", "qt");
			addOrganicSource("about", "terms");
			addOrganicSource("mamma", "query");
			addOrganicSource("alltheweb", "q");
			addOrganicSource("gigablast", "q");
			addOrganicSource("voila", "rdata");
			addOrganicSource("virgilio", "qs");
			addOrganicSource("live", "q");
			addOrganicSource("baidu", "wd");
			addOrganicSource("alice", "qs");
			addOrganicSource("yandex", "text");
			addOrganicSource("najdi", "q");
			addOrganicSource("aol", "q");
			addOrganicSource("club-internet", "q");
			addOrganicSource("mama", "query");
			addOrganicSource("seznam", "q");
			addOrganicSource("search", "q");
			addOrganicSource("wp", "szukaj");
			addOrganicSource("onet", "qt");
			addOrganicSource("netsprint", "q");
			addOrganicSource("google.interia", "q");
			addOrganicSource("szukacz", "q");
			addOrganicSource("yam", "k");
			addOrganicSource("pchome", "q");
			addOrganicSource("kvasir", "searchExpr");
			addOrganicSource("sesam", "q");
			addOrganicSource("ozu", "q");
			addOrganicSource("terra", "query");
			addOrganicSource("nostrum", "query");
			addOrganicSource("mynet", "q");
			addOrganicSource("ekolay", "q");
			addOrganicSource("search.ilse", "search_for");
		}
		public function get sampleRate():Number{
			return (_sampleRate);
		}
		public function addOrganicSource(_arg1:String, _arg2:String):void{
			var engine = _arg1;
			var keyword = _arg2;
			try {
				_organic.addSource(engine, keyword);
			} catch(e:Error) {
				if (((_debug) && (_debug.active))){
					_debug.warning(e.message);
				};
			};
		}
		public function get domain():Domain{
			return (_domain);
		}
		public function set sampleRate(_arg1:Number):void{
			if (_arg1 <= 0){
				_arg1 = 0.1;
			};
			if (_arg1 > 1){
				_arg1 = 1;
			};
			_arg1 = Number(_arg1.toFixed(2));
			_sampleRate = _arg1;
		}
		public function get version():String{
			return (_version);
		}

	}
}//package com.google.analytics.v4 

****************

//GoogleAnalyticsAPI (com.google.analytics.v4.GoogleAnalyticsAPI)
package com.google.analytics.v4 {
	import com.google.analytics.core.*;

	public interface GoogleAnalyticsAPI {

		function setCampSourceKey(_arg1:String):void;
		function getServiceMode():ServerOperationMode;
		function resetSession():void;
		function setLocalServerMode():void;
		function setCampContentKey(_arg1:String):void;
		function addOrganic(_arg1:String, _arg2:String):void;
		function setDetectFlash(_arg1:Boolean):void;
		function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object;
		function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean;
		function setCampTermKey(_arg1:String):void;
		function setCampNameKey(_arg1:String):void;
		function addIgnoredOrganic(_arg1:String):void;
		function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void;
		function setAllowLinker(_arg1:Boolean):void;
		function getClientInfo():Boolean;
		function getDetectFlash():Boolean;
		function setCampaignTrack(_arg1:Boolean):void;
		function createEventTracker(_arg1:String):EventTracker;
		function setCookieTimeout(_arg1:int):void;
		function setAllowAnchor(_arg1:Boolean):void;
		function trackTrans():void;
		function clearOrganic():void;
		function trackPageview(_arg1:String=""):void;
		function setLocalGifPath(_arg1:String):void;
		function getVersion():String;
		function getLocalGifPath():String;
		function setVar(_arg1:String):void;
		function clearIgnoredOrganic():void;
		function setCampMediumKey(_arg1:String):void;
		function addIgnoredRef(_arg1:String):void;
		function setClientInfo(_arg1:Boolean):void;
		function setCookiePath(_arg1:String):void;
		function setSampleRate(_arg1:Number):void;
		function setSessionTimeout(_arg1:int):void;
		function setRemoteServerMode():void;
		function clearIgnoredRef():void;
		function setDomainName(_arg1:String):void;
		function setDetectTitle(_arg1:Boolean):void;
		function setAllowHash(_arg1:Boolean):void;
		function getAccount():String;
		function linkByPost(_arg1:Object, _arg2:Boolean=false):void;
		function link(_arg1:String, _arg2:Boolean=false):void;
		function setCampNOKey(_arg1:String):void;
		function setLocalRemoteServerMode():void;
		function cookiePathCopy(_arg1:String):void;
		function getDetectTitle():Boolean;

	}
}//package com.google.analytics.v4 

****************

//Tracker (com.google.analytics.v4.Tracker)
package com.google.analytics.v4 {
	import com.google.analytics.core.*;
	import com.google.analytics.debug.*;
	import com.google.analytics.external.*;
	import com.google.analytics.utils.*;
	import com.google.analytics.data.*;
	import com.google.analytics.campaign.*;

	public class Tracker implements GoogleAnalyticsAPI {

		private const EVENT_TRACKER_LABEL_KEY_NUM:int = 3;
		private const EVENT_TRACKER_VALUE_VALUE_NUM:int = 1;
		private const EVENT_TRACKER_PROJECT_ID:int = 5;
		private const EVENT_TRACKER_OBJECT_NAME_KEY_NUM:int = 1;
		private const EVENT_TRACKER_TYPE_KEY_NUM:int = 2;

		private var _adSense:AdSenseGlobals;
		private var _eventTracker:X10;
		private var _noSessionInformation:Boolean;// = false
		private var _browserInfo:BrowserInfo;
		private var _debug:DebugConfiguration;
		private var _isNewVisitor:Boolean;// = false
		private var _buffer:Buffer;
		private var _config:Configuration;
		private var _x10Module:X10;
		private var _campaign:CampaignManager;
		private var _formatedReferrer:String;
		private var _timeStamp:Number;
		private var _info:Environment;
		private var _domainHash:Number;
		private var _campaignInfo:CampaignInfo;
		private var _gifRequest:GIFRequest;
		private var _hasInitData:Boolean;// = false
		private var _account:String;

		public function Tracker(_arg1:String, _arg2:Configuration, _arg3:DebugConfiguration, _arg4:Environment, _arg5:Buffer, _arg6:GIFRequest, _arg7:AdSenseGlobals){
			var _local8:String;
			super();
			_account = _arg1;
			_config = _arg2;
			_debug = _arg3;
			_info = _arg4;
			_buffer = _arg5;
			_gifRequest = _arg6;
			_adSense = _arg7;
			if (!Utils.validateAccount(_arg1)){
				_local8 = (("Account \"" + _arg1) + "\" is not valid.");
				_debug.warning(_local8);
				throw (new Error(_local8));
			};
			_initData();
		}
		private function _doTracking():Boolean{
			if (((((!((_info.protocol == Protocols.file))) && (!((_info.protocol == Protocols.none))))) && (_isNotGoogleSearch()))){
				return (true);
			};
			if (_config.allowLocalTracking){
				return (true);
			};
			return (false);
		}
		public function addOrganic(_arg1:String, _arg2:String):void{
			_debug.info((("addOrganic( " + [_arg1, _arg2].join(", ")) + " )"));
			_config.organic.addSource(_arg1, _arg2);
		}
		public function setAllowLinker(_arg1:Boolean):void{
			_config.allowLinker = _arg1;
			_debug.info((("setAllowLinker( " + _config.allowLinker) + " )"));
		}
		public function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{
			var _local5:Boolean;
			var _local6 = 2;
			if (((!((_arg1 == ""))) && (!((_arg2 == ""))))){
				_eventTracker.clearKey(EVENT_TRACKER_PROJECT_ID);
				_eventTracker.clearValue(EVENT_TRACKER_PROJECT_ID);
				_local5 = _eventTracker.setKey(EVENT_TRACKER_PROJECT_ID, EVENT_TRACKER_OBJECT_NAME_KEY_NUM, _arg1);
				_local5 = _eventTracker.setKey(EVENT_TRACKER_PROJECT_ID, EVENT_TRACKER_TYPE_KEY_NUM, _arg2);
				if (((_arg3) && (!((_arg3 == ""))))){
					_local5 = _eventTracker.setKey(EVENT_TRACKER_PROJECT_ID, EVENT_TRACKER_LABEL_KEY_NUM, _arg3);
					_local6 = 3;
					if (!isNaN(_arg4)){
						_local5 = _eventTracker.setValue(EVENT_TRACKER_PROJECT_ID, EVENT_TRACKER_VALUE_VALUE_NUM, _arg4);
						_local6 = 4;
					};
				};
				if (_local5){
					_debug.info(((("valid event tracking call\ncategory: " + _arg1) + "\naction: ") + _arg2), VisualDebugMode.geek);
					_sendXEvent(_eventTracker);
				};
			} else {
				_debug.warning(((("event tracking call is not valid, failed!\ncategory: " + _arg1) + "\naction: ") + _arg2), VisualDebugMode.geek);
				_local5 = false;
			};
			switch (_local6){
				case 4:
					_debug.info((("trackEvent( " + [_arg1, _arg2, _arg3, _arg4].join(", ")) + " )"));
					break;
				case 3:
					_debug.info((("trackEvent( " + [_arg1, _arg2, _arg3].join(", ")) + " )"));
					break;
				case 2:
				default:
					_debug.info((("trackEvent( " + [_arg1, _arg2].join(", ")) + " )"));
			};
			return (_local5);
		}
		public function trackPageview(_arg1:String=""):void{
			_debug.info((("trackPageview( " + _arg1) + " )"));
			if (_doTracking()){
				_initData();
				_trackMetrics(_arg1);
				_noSessionInformation = false;
			} else {
				_debug.warning((("trackPageview( " + _arg1) + " ) failed"));
			};
		}
		public function setCookieTimeout(_arg1:int):void{
			_config.conversionTimeout = _arg1;
			_debug.info((("setCookieTimeout( " + _config.conversionTimeout) + " )"));
		}
		public function trackTrans():void{
			_debug.warning("trackTrans() not implemented");
		}
		public function setClientInfo(_arg1:Boolean):void{
			_config.detectClientInfo = _arg1;
			_debug.info((("setClientInfo( " + _config.detectClientInfo) + " )"));
		}
		public function linkByPost(_arg1:Object, _arg2:Boolean=false):void{
			_debug.warning((("linkByPost( " + [_arg1, _arg2].join(", ")) + " ) not implemented"));
		}
		private function _initData():void{
			var _local1:String;
			var _local2:String;
			if (!_hasInitData){
				_updateDomainName();
				_domainHash = _getDomainHash();
				_timeStamp = Math.round((new Date().getTime() / 1000));
				if (_debug.verbose){
					_local1 = "";
					_local1 = (_local1 + "_initData 0");
					_local1 = (_local1 + ("\ndomain name: " + _config.domainName));
					_local1 = (_local1 + ("\ndomain hash: " + _domainHash));
					_local1 = (_local1 + (((("\ntimestamp:   " + _timeStamp) + " (") + new Date((_timeStamp * 1000))) + ")"));
					_debug.info(_local1, VisualDebugMode.geek);
				};
			};
			if (_doTracking()){
				_handleCookie();
			};
			if (!_hasInitData){
				if (_doTracking()){
					_formatedReferrer = _formatReferrer();
					_browserInfo = new BrowserInfo(_config, _info);
					_debug.info(("browserInfo: " + _browserInfo.toURLString()), VisualDebugMode.advanced);
					if (_config.campaignTracking){
						_campaign = new CampaignManager(_config, _debug, _buffer, _domainHash, _formatedReferrer, _timeStamp);
						_campaignInfo = _campaign.getCampaignInformation(_info.locationSearch, _noSessionInformation);
						_debug.info(("campaignInfo: " + _campaignInfo.toURLString()), VisualDebugMode.advanced);
					};
				};
				_x10Module = new X10();
				_eventTracker = new X10();
				_hasInitData = true;
			};
			if (_config.hasSiteOverlay){
				_debug.warning("Site Overlay is not supported");
			};
			if (_debug.verbose){
				_local2 = "";
				_local2 = (_local2 + "_initData (misc)");
				_local2 = (_local2 + ("\nflash version: " + _info.flashVersion.toString(4)));
				_local2 = (_local2 + ("\nprotocol: " + _info.protocol));
				_local2 = (_local2 + (("\ndefault domain name (auto): \"" + _info.domainName) + "\""));
				_local2 = (_local2 + ("\nlanguage: " + _info.language));
				_local2 = (_local2 + ("\ndomain hash: " + _getDomainHash()));
				_local2 = (_local2 + ("\nuser-agent: " + _info.userAgent));
				_debug.info(_local2, VisualDebugMode.geek);
			};
		}
		public function getDetectTitle():Boolean{
			_debug.info("getDetectTitle()");
			return (_config.detectTitle);
		}
		public function resetSession():void{
			_debug.info("resetSession()");
			_buffer.resetCurrentSession();
		}
		public function getClientInfo():Boolean{
			_debug.info("getClientInfo()");
			return (_config.detectClientInfo);
		}
		private function _sendXEvent(_arg1:X10=null):void{
			var _local2:Variables;
			var _local3:EventInfo;
			var _local4:Variables;
			var _local5:Variables;
			_initData();
			if (_takeSample()){
				_local2 = new Variables();
				_local2.URIencode = true;
				_local3 = new EventInfo(true, _x10Module, _arg1);
				_local4 = _local3.toVariables();
				_local5 = _renderMetricsSearchVariables();
				_local2.join(_local4, _local5);
				_gifRequest.send(_account, _local2, false, true);
			};
		}
		public function setDetectFlash(_arg1:Boolean):void{
			_config.detectFlash = _arg1;
			_debug.info((("setDetectFlash( " + _config.detectFlash) + " )"));
		}
		public function setCampNameKey(_arg1:String):void{
			_config.campaignKey.UCCN = _arg1;
			var _local2 = (("setCampNameKey( " + _config.campaignKey.UCCN) + " )");
			if (_debug.mode == VisualDebugMode.geek){
				_debug.info((_local2 + " [UCCN]"));
			} else {
				_debug.info(_local2);
			};
		}
		private function _formatReferrer():String{
			var _local2:String;
			var _local3:URL;
			var _local4:URL;
			var _local1:String = _info.referrer;
			if ((((_local1 == "")) || ((_local1 == "localhost")))){
				_local1 = "-";
			} else {
				_local2 = _info.domainName;
				_local3 = new URL(_local1);
				_local4 = new URL(("http://" + _local2));
				if (_local3.hostName == _local2){
					return ("-");
				};
				if (_local4.domain == _local3.domain){
					if (_local4.subDomain != _local3.subDomain){
						_local1 = "0";
					};
				};
				if ((((_local1.charAt(0) == "[")) && (_local1.charAt((_local1.length - 1))))){
					_local1 = "-";
				};
			};
			_debug.info(("formated referrer: " + _local1), VisualDebugMode.advanced);
			return (_local1);
		}
		private function _visitCode():Number{
			if (_debug.verbose){
				_debug.info(("visitCode: " + _buffer.utma.sessionId), VisualDebugMode.geek);
			};
			return (_buffer.utma.sessionId);
		}
		public function createEventTracker(_arg1:String):EventTracker{
			_debug.info((("createEventTracker( " + _arg1) + " )"));
			return (new EventTracker(_arg1, this));
		}
		public function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void{
			_debug.warning((("addItem( " + [_arg1, _arg2, _arg3, _arg4, _arg5, _arg6].join(", ")) + " ) not implemented"));
		}
		public function clearIgnoredOrganic():void{
			_debug.info("clearIgnoredOrganic()");
			_config.organic.clearIgnoredKeywords();
		}
		public function setVar(_arg1:String):void{
			var _local2:Variables;
			if (((!((_arg1 == ""))) && (_isNotGoogleSearch()))){
				_initData();
				_buffer.utmv.domainHash = _domainHash;
				_buffer.utmv.value = _arg1;
				if (_debug.verbose){
					_debug.info(_buffer.utmv.toString(), VisualDebugMode.geek);
				};
				_debug.info((("setVar( " + _arg1) + " )"));
				if (_takeSample()){
					_local2 = new Variables();
					_local2.utmt = "var";
					_gifRequest.send(_account, _local2);
				};
			} else {
				_debug.warning((("setVar \"" + _arg1) + "\" is ignored"));
			};
		}
		public function setDomainName(_arg1:String):void{
			if (_arg1 == "auto"){
				_config.domain.mode = DomainNameMode.auto;
			} else {
				if (_arg1 == "none"){
					_config.domain.mode = DomainNameMode.none;
				} else {
					_config.domain.mode = DomainNameMode.custom;
					_config.domain.name = _arg1;
				};
			};
			_updateDomainName();
			_debug.info((("setDomainName( " + _config.domainName) + " )"));
		}
		private function _updateDomainName():void{
			var _local1:String;
			if (_config.domain.mode == DomainNameMode.auto){
				_local1 = _info.domainName;
				if (_local1.substring(0, 4) == "www."){
					_local1 = _local1.substring(4);
				};
				_config.domain.name = _local1;
			};
			_config.domainName = _config.domain.name.toLowerCase();
			_debug.info(("domain name: " + _config.domainName), VisualDebugMode.advanced);
		}
		public function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object{
			_debug.warning((("addTrans( " + [_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8].join(", ")) + " ) not implemented"));
			return (null);
		}
		private function _renderMetricsSearchVariables(_arg1:String=""):Variables{
			var _local4:Variables;
			var _local2:Variables = new Variables();
			_local2.URIencode = true;
			var _local3:DocumentInfo = new DocumentInfo(_config, _info, _formatedReferrer, _arg1, _adSense);
			_debug.info(("docInfo: " + _local3.toURLString()), VisualDebugMode.geek);
			if (_config.campaignTracking){
				_local4 = _campaignInfo.toVariables();
			};
			var _local5:Variables = _browserInfo.toVariables();
			_local2.join(_local3.toVariables(), _local5, _local4);
			return (_local2);
		}
		public function setCampContentKey(_arg1:String):void{
			_config.campaignKey.UCCT = _arg1;
			var _local2 = (("setCampContentKey( " + _config.campaignKey.UCCT) + " )");
			if (_debug.mode == VisualDebugMode.geek){
				_debug.info((_local2 + " [UCCT]"));
			} else {
				_debug.info(_local2);
			};
		}
		private function _handleCookie():void{
			var _local1:String;
			var _local2:String;
			var _local3:Array;
			var _local4:String;
			if (_config.allowLinker){
			};
			if (((_buffer.hasUTMA()) && (!(_buffer.utma.isEmpty())))){
				if (((!(_buffer.hasUTMB())) || (!(_buffer.hasUTMC())))){
					_buffer.updateUTMA(_timeStamp);
					_noSessionInformation = true;
				};
				if (_debug.verbose){
					_debug.info(("from cookie " + _buffer.utma.toString()), VisualDebugMode.geek);
				};
			} else {
				_debug.info("create a new utma", VisualDebugMode.advanced);
				_buffer.utma.domainHash = _domainHash;
				_buffer.utma.sessionId = _getUniqueSessionId();
				_buffer.utma.firstTime = _timeStamp;
				_buffer.utma.lastTime = _timeStamp;
				_buffer.utma.currentTime = _timeStamp;
				_buffer.utma.sessionCount = 1;
				if (_debug.verbose){
					_debug.info(_buffer.utma.toString(), VisualDebugMode.geek);
				};
				_noSessionInformation = true;
				_isNewVisitor = true;
			};
			if (((_adSense.gaGlobal) && ((_adSense.dh == String(_domainHash))))){
				if (_adSense.sid){
					_buffer.utma.currentTime = Number(_adSense.sid);
					if (_debug.verbose){
						_local1 = "";
						_local1 = (_local1 + "AdSense sid found\n");
						_local1 = (_local1 + (((("Override currentTime(" + _buffer.utma.currentTime) + ") from AdSense sid(") + Number(_adSense.sid)) + ")"));
						_debug.info(_local1, VisualDebugMode.geek);
					};
				};
				if (_isNewVisitor){
					if (_adSense.sid){
						_buffer.utma.lastTime = Number(_adSense.sid);
						if (_debug.verbose){
							_local2 = "";
							_local2 = (_local2 + "AdSense sid found (new visitor)\n");
							_local2 = (_local2 + (((("Override lastTime(" + _buffer.utma.lastTime) + ") from AdSense sid(") + Number(_adSense.sid)) + ")"));
							_debug.info(_local2, VisualDebugMode.geek);
						};
					};
					if (_adSense.vid){
						_local3 = _adSense.vid.split(".");
						_buffer.utma.sessionId = Number(_local3[0]);
						_buffer.utma.firstTime = Number(_local3[1]);
						if (_debug.verbose){
							_local4 = "";
							_local4 = (_local4 + "AdSense vid found (new visitor)\n");
							_local4 = (_local4 + (((("Override sessionId(" + _buffer.utma.sessionId) + ") from AdSense vid(") + Number(_local3[0])) + ")\n"));
							_local4 = (_local4 + (((("Override firstTime(" + _buffer.utma.firstTime) + ") from AdSense vid(") + Number(_local3[1])) + ")"));
							_debug.info(_local4, VisualDebugMode.geek);
						};
					};
					if (_debug.verbose){
						_debug.info(("AdSense modified : " + _buffer.utma.toString()), VisualDebugMode.geek);
					};
				};
			};
			_buffer.utmb.domainHash = _domainHash;
			if (isNaN(_buffer.utmb.trackCount)){
				_buffer.utmb.trackCount = 0;
			};
			if (isNaN(_buffer.utmb.token)){
				_buffer.utmb.token = _config.tokenCliff;
			};
			if (isNaN(_buffer.utmb.lastTime)){
				_buffer.utmb.lastTime = _buffer.utma.currentTime;
			};
			_buffer.utmc.domainHash = _domainHash;
			if (_debug.verbose){
				_debug.info(_buffer.utmb.toString(), VisualDebugMode.advanced);
				_debug.info(_buffer.utmc.toString(), VisualDebugMode.advanced);
			};
		}
		public function setLocalServerMode():void{
			_config.serverMode = ServerOperationMode.local;
			_debug.info("setLocalServerMode()");
		}
		public function clearIgnoredRef():void{
			_debug.info("clearIgnoredRef()");
			_config.organic.clearIgnoredReferrals();
		}
		public function setCampSourceKey(_arg1:String):void{
			_config.campaignKey.UCSR = _arg1;
			var _local2 = (("setCampSourceKey( " + _config.campaignKey.UCSR) + " )");
			if (_debug.mode == VisualDebugMode.geek){
				_debug.info((_local2 + " [UCSR]"));
			} else {
				_debug.info(_local2);
			};
		}
		public function getLocalGifPath():String{
			_debug.info("getLocalGifPath()");
			return (_config.localGIFpath);
		}
		public function setLocalGifPath(_arg1:String):void{
			_config.localGIFpath = _arg1;
			_debug.info((("setLocalGifPath( " + _config.localGIFpath) + " )"));
		}
		public function getVersion():String{
			_debug.info("getVersion()");
			return (_config.version);
		}
		public function setAllowAnchor(_arg1:Boolean):void{
			_config.allowAnchor = _arg1;
			_debug.info((("setAllowAnchor( " + _config.allowAnchor) + " )"));
		}
		private function _isNotGoogleSearch():Boolean{
			var _local1:String = _config.domainName;
			var _local2 = (_local1.indexOf("www.google.") < 0);
			var _local3 = (_local1.indexOf(".google.") < 0);
			var _local4 = (_local1.indexOf("google.") < 0);
			var _local5 = (_local1.indexOf("google.org") > -1);
			return (((((((((_local2) || (_local3))) || (_local4))) || (!((_config.cookiePath == "/"))))) || (_local5)));
		}
		public function setSampleRate(_arg1:Number):void{
			if (_arg1 < 0){
				_debug.warning("sample rate can not be negative, ignoring value.");
			} else {
				_config.sampleRate = _arg1;
			};
			_debug.info((("setSampleRate( " + _config.sampleRate) + " )"));
		}
		private function _takeSample():Boolean{
			if (_debug.verbose){
				_debug.info((((("takeSample: (" + (_visitCode() % 10000)) + ") < (") + (_config.sampleRate * 10000)) + ")"), VisualDebugMode.geek);
			};
			return (((_visitCode() % 10000) < (_config.sampleRate * 10000)));
		}
		public function setCookiePath(_arg1:String):void{
			_config.cookiePath = _arg1;
			_debug.info((("setCookiePath( " + _config.cookiePath) + " )"));
		}
		public function setAllowHash(_arg1:Boolean):void{
			_config.allowDomainHash = _arg1;
			_debug.info((("setAllowHash( " + _config.allowDomainHash) + " )"));
		}
		private function _generateUserDataHash():Number{
			var _local1 = "";
			_local1 = (_local1 + _info.appName);
			_local1 = (_local1 + _info.appVersion);
			_local1 = (_local1 + _info.language);
			_local1 = (_local1 + _info.platform);
			_local1 = (_local1 + _info.userAgent.toString());
			_local1 = (_local1 + (((_info.screenWidth + "x") + _info.screenHeight) + _info.screenColorDepth));
			_local1 = (_local1 + _info.referrer);
			return (Utils.generateHash(_local1));
		}
		public function setCampNOKey(_arg1:String):void{
			_config.campaignKey.UCNO = _arg1;
			var _local2 = (("setCampNOKey( " + _config.campaignKey.UCNO) + " )");
			if (_debug.mode == VisualDebugMode.geek){
				_debug.info((_local2 + " [UCNO]"));
			} else {
				_debug.info(_local2);
			};
		}
		public function addIgnoredOrganic(_arg1:String):void{
			_debug.info((("addIgnoredOrganic( " + _arg1) + " )"));
			_config.organic.addIgnoredKeyword(_arg1);
		}
		public function setLocalRemoteServerMode():void{
			_config.serverMode = ServerOperationMode.both;
			_debug.info("setLocalRemoteServerMode()");
		}
		public function cookiePathCopy(_arg1:String):void{
			_debug.warning((("cookiePathCopy( " + _arg1) + " ) not implemented"));
		}
		public function setDetectTitle(_arg1:Boolean):void{
			_config.detectTitle = _arg1;
			_debug.info((("setDetectTitle( " + _config.detectTitle) + " )"));
		}
		public function setCampTermKey(_arg1:String):void{
			_config.campaignKey.UCTR = _arg1;
			var _local2 = (("setCampTermKey( " + _config.campaignKey.UCTR) + " )");
			if (_debug.mode == VisualDebugMode.geek){
				_debug.info((_local2 + " [UCTR]"));
			} else {
				_debug.info(_local2);
			};
		}
		public function getServiceMode():ServerOperationMode{
			_debug.info("getServiceMode()");
			return (_config.serverMode);
		}
		private function _trackMetrics(_arg1:String=""):void{
			var _local2:Variables;
			var _local3:Variables;
			var _local4:Variables;
			var _local5:EventInfo;
			if (_takeSample()){
				_local2 = new Variables();
				_local2.URIencode = true;
				if (((_x10Module) && (_x10Module.hasData()))){
					_local5 = new EventInfo(false, _x10Module);
					_local3 = _local5.toVariables();
				};
				_local4 = _renderMetricsSearchVariables(_arg1);
				_local2.join(_local3, _local4);
				_gifRequest.send(_account, _local2);
			};
		}
		public function setCampaignTrack(_arg1:Boolean):void{
			_config.campaignTracking = _arg1;
			_debug.info((("setCampaignTrack( " + _config.campaignTracking) + " )"));
		}
		public function addIgnoredRef(_arg1:String):void{
			_debug.info((("addIgnoredRef( " + _arg1) + " )"));
			_config.organic.addIgnoredReferral(_arg1);
		}
		public function clearOrganic():void{
			_debug.info("clearOrganic()");
			_config.organic.clearEngines();
		}
		public function getDetectFlash():Boolean{
			_debug.info("getDetectFlash()");
			return (_config.detectFlash);
		}
		public function setCampMediumKey(_arg1:String):void{
			_config.campaignKey.UCMD = _arg1;
			var _local2 = (("setCampMediumKey( " + _config.campaignKey.UCMD) + " )");
			if (_debug.mode == VisualDebugMode.geek){
				_debug.info((_local2 + " [UCMD]"));
			} else {
				_debug.info(_local2);
			};
		}
		private function _getUniqueSessionId():Number{
			var _local1:Number = ((Utils.generate32bitRandom() ^ _generateUserDataHash()) * 2147483647);
			_debug.info(("Session ID: " + _local1), VisualDebugMode.geek);
			return (_local1);
		}
		private function _getDomainHash():Number{
			if (((((!(_config.domainName)) || ((_config.domainName == "")))) || ((_config.domain.mode == DomainNameMode.none)))){
				_config.domainName = "";
				return (1);
			};
			_updateDomainName();
			if (_config.allowDomainHash){
				return (Utils.generateHash(_config.domainName));
			};
			return (1);
		}
		public function setSessionTimeout(_arg1:int):void{
			_config.sessionTimeout = _arg1;
			_debug.info((("setSessionTimeout( " + _config.sessionTimeout) + " )"));
		}
		public function getAccount():String{
			_debug.info("getAccount()");
			return (_account);
		}
		public function link(_arg1:String, _arg2:Boolean=false):void{
			_debug.warning((("link( " + [_arg1, _arg2].join(", ")) + " ) not implemented"));
		}
		public function setRemoteServerMode():void{
			_config.serverMode = ServerOperationMode.remote;
			_debug.info("setRemoteServerMode()");
		}

	}
}//package com.google.analytics.v4 

****************

//AnalyticsTracker (com.google.analytics.AnalyticsTracker)
package com.google.analytics {
	import flash.events.*;
	import com.google.analytics.v4.*;
	import com.google.analytics.debug.*;

	public interface AnalyticsTracker extends GoogleAnalyticsAPI, IEventDispatcher {

		function set account(_arg1:String):void;
		function get config():Configuration;
		function get mode():String;
		function set config(_arg1:Configuration):void;
		function set mode(_arg1:String):void;
		function set debug(_arg1:DebugConfiguration):void;
		function get visualDebug():Boolean;
		function get account():String;
		function set visualDebug(_arg1:Boolean):void;
		function isReady():Boolean;
		function get debug():DebugConfiguration;

	}
}//package com.google.analytics 

****************

//API (com.google.analytics.API)
package com.google.analytics {
	import com.google.analytics.utils.*;

	public class API {

		public static var version:Version = new Version();

		version.major = 1;
		version.minor = 0;
		version.build = 1;
		version.revision = "$Rev: 319 $ ".split(" ")[1];
	}
}//package com.google.analytics 

****************

//GATracker (com.google.analytics.GATracker)
package com.google.analytics {
	import flash.events.*;
	import flash.display.*;
	import com.google.analytics.core.*;
	import com.google.analytics.v4.*;
	import com.google.analytics.debug.*;
	import com.google.analytics.external.*;
	import com.google.analytics.utils.*;
	import com.google.analytics.events.*;

	public class GATracker implements AnalyticsTracker {

		private var _adSense:AdSenseGlobals;
		private var _env:Environment;
		private var _visualDebug:Boolean;
		private var _idleTimer:IdleTimer;
		private var _debug:DebugConfiguration;
		private var _buffer:Buffer;
		private var _config:Configuration;
		private var _mode:String;
		private var _display:DisplayObject;
		private var _jsproxy:JavascriptProxy;
		private var _dom:HTMLDOM;
		private var _eventDispatcher:EventDispatcher;
		private var _ready:Boolean;// = false
		private var _gifRequest:GIFRequest;
		private var _account:String;
		private var _tracker:GoogleAnalyticsAPI;

		public static var version:Version = API.version;
		public static var autobuild:Boolean = true;

		public function GATracker(_arg1:DisplayObject, _arg2:String, _arg3:String="AS3", _arg4:Boolean=false, _arg5:Configuration=null, _arg6:DebugConfiguration=null){
			_display = _arg1;
			_eventDispatcher = new EventDispatcher(this);
			_tracker = new TrackerCache();
			this.account = _arg2;
			this.mode = _arg3;
			this.visualDebug = _arg4;
			if (!_arg6){
				this.debug = new DebugConfiguration();
			};
			if (!_arg5){
				this.config = new Configuration(_arg6);
			};
			if (autobuild){
				_factory();
			};
		}
		public function link(_arg1:String, _arg2:Boolean=false):void{
			_tracker.link(_arg1, _arg2);
		}
		public function addOrganic(_arg1:String, _arg2:String):void{
			_tracker.addOrganic(_arg1, _arg2);
		}
		public function setAllowLinker(_arg1:Boolean):void{
			_tracker.setAllowLinker(_arg1);
		}
		public function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{
			return (_tracker.trackEvent(_arg1, _arg2, _arg3, _arg4));
		}
		public function setCookieTimeout(_arg1:int):void{
			_tracker.setCookieTimeout(_arg1);
		}
		public function trackTrans():void{
			_tracker.trackTrans();
		}
		public function getClientInfo():Boolean{
			return (_tracker.getClientInfo());
		}
		public function trackPageview(_arg1:String=""):void{
			_tracker.trackPageview(_arg1);
		}
		public function setClientInfo(_arg1:Boolean):void{
			_tracker.setClientInfo(_arg1);
		}
		public function get account():String{
			return (_account);
		}
		public function linkByPost(_arg1:Object, _arg2:Boolean=false):void{
			_tracker.linkByPost(_arg1, _arg2);
		}
		public function getDetectTitle():Boolean{
			return (_tracker.getDetectTitle());
		}
		public function dispatchEvent(_arg1:Event):Boolean{
			return (_eventDispatcher.dispatchEvent(_arg1));
		}
		public function get config():Configuration{
			return (_config);
		}
		public function set mode(_arg1:String):void{
			_mode = _arg1;
		}
		public function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{
			_eventDispatcher.removeEventListener(_arg1, _arg2, _arg3);
		}
		public function setDetectFlash(_arg1:Boolean):void{
			_tracker.setDetectFlash(_arg1);
		}
		public function resetSession():void{
			_tracker.resetSession();
		}
		public function setCampNameKey(_arg1:String):void{
			_tracker.setCampNameKey(_arg1);
		}
		public function get debug():DebugConfiguration{
			return (_debug);
		}
		public function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void{
			_tracker.addItem(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
		}
		private function _bridgeFactory():GoogleAnalyticsAPI{
			debug.info(((("GATracker (Bridge) v" + version) + "\naccount: ") + account));
			return (new Bridge(account, _debug, _jsproxy));
		}
		public function clearIgnoredOrganic():void{
			_tracker.clearIgnoredOrganic();
		}
		public function set account(_arg1:String):void{
			_account = _arg1;
		}
		public function setVar(_arg1:String):void{
			_tracker.setVar(_arg1);
		}
		public function build():void{
			if (!isReady()){
				_factory();
			};
		}
		public function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{
			_eventDispatcher.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5);
		}
		public function setDomainName(_arg1:String):void{
			_tracker.setDomainName(_arg1);
		}
		public function createEventTracker(_arg1:String):EventTracker{
			return (_tracker.createEventTracker(_arg1));
		}
		public function setCampSourceKey(_arg1:String):void{
			_tracker.setCampSourceKey(_arg1);
		}
		public function set config(_arg1:Configuration):void{
			_config = _arg1;
		}
		public function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object{
			return (_tracker.addTrans(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8));
		}
		public function setCampContentKey(_arg1:String):void{
			_tracker.setCampContentKey(_arg1);
		}
		public function willTrigger(_arg1:String):Boolean{
			return (_eventDispatcher.willTrigger(_arg1));
		}
		public function setLocalServerMode():void{
			_tracker.setLocalServerMode();
		}
		public function getLocalGifPath():String{
			return (_tracker.getLocalGifPath());
		}
		public function setAllowAnchor(_arg1:Boolean):void{
			_tracker.setAllowAnchor(_arg1);
		}
		public function clearIgnoredRef():void{
			_tracker.clearIgnoredRef();
		}
		public function isReady():Boolean{
			return (_ready);
		}
		public function get mode():String{
			return (_mode);
		}
		public function set debug(_arg1:DebugConfiguration):void{
			_debug = _arg1;
		}
		public function setLocalGifPath(_arg1:String):void{
			_tracker.setLocalGifPath(_arg1);
		}
		public function getVersion():String{
			return (_tracker.getVersion());
		}
		public function setSampleRate(_arg1:Number):void{
			_tracker.setSampleRate(_arg1);
		}
		public function setCookiePath(_arg1:String):void{
			_tracker.setCookiePath(_arg1);
		}
		public function setAllowHash(_arg1:Boolean):void{
			_tracker.setAllowHash(_arg1);
		}
		public function addIgnoredOrganic(_arg1:String):void{
			_tracker.addIgnoredOrganic(_arg1);
		}
		public function setLocalRemoteServerMode():void{
			_tracker.setLocalRemoteServerMode();
		}
		public function cookiePathCopy(_arg1:String):void{
			_tracker.cookiePathCopy(_arg1);
		}
		private function _factory():void{
			var _local1:GoogleAnalyticsAPI;
			_jsproxy = new JavascriptProxy(debug);
			if (visualDebug){
				debug.layout = new Layout(debug, _display);
				debug.active = visualDebug;
			};
			var _local2:TrackerCache = (_tracker as TrackerCache);
			switch (mode){
				case TrackerMode.BRIDGE:
					_local1 = _bridgeFactory();
					break;
				case TrackerMode.AS3:
				default:
					_local1 = _trackerFactory();
			};
			if (!_local2.isEmpty()){
				_local2.tracker = _local1;
				_local2.flush();
			};
			_tracker = _local1;
			_ready = true;
			dispatchEvent(new AnalyticsEvent(AnalyticsEvent.READY, this));
		}
		public function setCampTermKey(_arg1:String):void{
			_tracker.setCampTermKey(_arg1);
		}
		private function _trackerFactory():GoogleAnalyticsAPI{
			debug.info(((("GATracker (AS3) v" + version) + "\naccount: ") + account));
			_adSense = new AdSenseGlobals(debug);
			_dom = new HTMLDOM(debug);
			_dom.cacheProperties();
			_env = new Environment("", "", "", debug, _dom);
			_buffer = new Buffer(config, debug, false);
			_gifRequest = new GIFRequest(config, debug, _buffer, _env);
			_idleTimer = new IdleTimer(config, debug, _display, _buffer);
			_env.url = _display.stage.loaderInfo.url;
			return (new Tracker(account, config, debug, _env, _buffer, _gifRequest, _adSense));
		}
		public function setCampNOKey(_arg1:String):void{
			_tracker.setCampNOKey(_arg1);
		}
		public function setDetectTitle(_arg1:Boolean):void{
			_tracker.setDetectTitle(_arg1);
		}
		public function getServiceMode():ServerOperationMode{
			return (_tracker.getServiceMode());
		}
		public function clearOrganic():void{
			_tracker.clearOrganic();
		}
		public function setCampaignTrack(_arg1:Boolean):void{
			_tracker.setCampaignTrack(_arg1);
		}
		public function addIgnoredRef(_arg1:String):void{
			_tracker.addIgnoredRef(_arg1);
		}
		public function set visualDebug(_arg1:Boolean):void{
			_visualDebug = _arg1;
		}
		public function setCampMediumKey(_arg1:String):void{
			_tracker.setCampMediumKey(_arg1);
		}
		public function getDetectFlash():Boolean{
			return (_tracker.getDetectFlash());
		}
		public function get visualDebug():Boolean{
			return (_visualDebug);
		}
		public function hasEventListener(_arg1:String):Boolean{
			return (_eventDispatcher.hasEventListener(_arg1));
		}
		public function getAccount():String{
			return (_tracker.getAccount());
		}
		public function setSessionTimeout(_arg1:int):void{
			_tracker.setSessionTimeout(_arg1);
		}
		public function setRemoteServerMode():void{
			_tracker.setRemoteServerMode();
		}

	}
	var _local1:* = ServerOperationMode;
	return (_local1);
}//package com.google.analytics 

****************

//IAutomationObject (mx.automation.IAutomationObject)
package mx.automation {
	import flash.events.*;

	public interface IAutomationObject {

		function createAutomationIDPart(_arg1:IAutomationObject):Object;
		function get automationName():String;
		function get showInAutomationHierarchy():Boolean;
		function set automationName(_arg1:String):void;
		function getAutomationChildAt(_arg1:int):IAutomationObject;
		function get automationDelegate():Object;
		function get automationTabularData():Object;
		function resolveAutomationIDPart(_arg1:Object):Array;
		function replayAutomatableEvent(_arg1:Event):Boolean;
		function set automationDelegate(_arg1:Object):void;
		function get automationValue():Array;
		function get numAutomationChildren():int;
		function set showInAutomationHierarchy(_arg1:Boolean):void;

	}
}//package mx.automation 

****************

//BindabilityInfo (mx.binding.BindabilityInfo)
package mx.binding {
	import mx.events.*;

	public class BindabilityInfo {

		private var classChangeEvents:Object;
		private var typeDescription:XML;
		private var childChangeEvents:Object;

		public static const METHOD:String = "method";
		public static const ACCESSOR:String = "accessor";
		public static const CHANGE_EVENT:String = "ChangeEvent";
		public static const NON_COMMITTING_CHANGE_EVENT:String = "NonCommittingChangeEvent";
		public static const BINDABLE:String = "Bindable";
		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const MANAGED:String = "Managed";

		public function BindabilityInfo(_arg1:XML){
			childChangeEvents = {};
			super();
			this.typeDescription = _arg1;
		}
		private function addChangeEvents(_arg1:XMLList, _arg2:Object, _arg3:Boolean):void{
			var _local4:XML;
			var _local5:XMLList;
			var _local6:String;
			for each (_local4 in _arg1) {
				_local5 = _local4.arg;
				if (_local5.length() > 0){
					_local6 = _local5[0].@value;
					_arg2[_local6] = _arg3;
				} else {
					trace((("warning: unconverted Bindable metadata in class '" + typeDescription.@name) + "'"));
				};
			};
		}
		private function getClassChangeEvents():Object{
			if (!classChangeEvents){
				classChangeEvents = {};
				addBindabilityEvents(typeDescription.metadata, classChangeEvents);
				if (typeDescription.metadata.(@name == MANAGED).length() > 0){
					classChangeEvents[PropertyChangeEvent.PROPERTY_CHANGE] = true;
				};
			};
			return (classChangeEvents);
		}
		private function addBindabilityEvents(_arg1:XMLList, _arg2:Object):void{
			var metadata = _arg1;
			var eventListObj = _arg2;
			addChangeEvents(metadata.(@name == BINDABLE), eventListObj, true);
			addChangeEvents(metadata.(@name == CHANGE_EVENT), eventListObj, true);
			addChangeEvents(metadata.(@name == NON_COMMITTING_CHANGE_EVENT), eventListObj, false);
		}
		private function copyProps(_arg1:Object, _arg2:Object):Object{
			var _local3:String;
			for (_local3 in _arg1) {
				_arg2[_local3] = _arg1[_local3];
			};
			return (_arg2);
		}
		public function getChangeEvents(_arg1:String):Object{
			var childDesc:XMLList;
			var numChildren:int;
			var childName = _arg1;
			var changeEvents:Object = childChangeEvents[childName];
			if (!changeEvents){
				changeEvents = copyProps(getClassChangeEvents(), {});
				childDesc = (typeDescription.accessor.(@name == childName) + typeDescription.method.(@name == childName));
				numChildren = childDesc.length();
				if (numChildren == 0){
					if (!typeDescription.@dynamic){
						trace((((("warning: no describeType entry for '" + childName) + "' on non-dynamic type '") + typeDescription.@name) + "'"));
					};
				} else {
					if (numChildren > 1){
						trace(((((("warning: multiple describeType entries for '" + childName) + "' on type '") + typeDescription.@name) + "':\n") + childDesc));
					};
					addBindabilityEvents(childDesc.metadata, changeEvents);
				};
				childChangeEvents[childName] = changeEvents;
			};
			return (changeEvents);
		}

	}
}//package mx.binding 

****************

//Binding (mx.binding.Binding)
package mx.binding {
	import flash.utils.*;
	import mx.collections.errors.*;

	public class Binding {

		mx_internal var destFunc:Function;
		mx_internal var srcFunc:Function;
		mx_internal var destString:String;
		mx_internal var document:Object;
		private var hasHadValue:Boolean;
		mx_internal var disabledRequests:Dictionary;
		mx_internal var isExecuting:Boolean;
		mx_internal var isHandlingEvent:Boolean;
		public var twoWayCounterpart:Binding;
		private var wrappedFunctionSuccessful:Boolean;
		mx_internal var _isEnabled:Boolean;
		public var uiComponentWatcher:int;
		private var lastValue:Object;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function Binding(_arg1:Object, _arg2:Function, _arg3:Function, _arg4:String){
			this.document = _arg1;
			this.srcFunc = _arg2;
			this.destFunc = _arg3;
			this.destString = _arg4;
			_isEnabled = true;
			isExecuting = false;
			isHandlingEvent = false;
			hasHadValue = false;
			uiComponentWatcher = -1;
			BindingManager.addBinding(_arg1, _arg4, this);
		}
		private function registerDisabledExecute(_arg1:Object):void{
			if (_arg1 != null){
				disabledRequests = ((disabledRequests)!=null) ? disabledRequests : new Dictionary(true);
				disabledRequests[_arg1] = true;
			};
		}
		protected function wrapFunctionCall(_arg1:Object, _arg2:Function, _arg3:Object=null, ... _args):Object{
			var result:Object;
			var thisArg = _arg1;
			var wrappedFunction = _arg2;
			var object = _arg3;
			var args = _args;
			wrappedFunctionSuccessful = false;
			try {
				result = wrappedFunction.apply(thisArg, args);
				wrappedFunctionSuccessful = true;
				return (result);
			} catch(itemPendingError:ItemPendingError) {
				itemPendingError.addResponder(new EvalBindingResponder(this, object));
				if (BindingManager.debugDestinationStrings[destString]){
					trace(((("Binding: destString = " + destString) + ", error = ") + itemPendingError));
				};
			} catch(rangeError:RangeError) {
				if (BindingManager.debugDestinationStrings[destString]){
					trace(((("Binding: destString = " + destString) + ", error = ") + rangeError));
				};
			} catch(error:Error) {
				if (((((((((!((error.errorID == 1006))) && (!((error.errorID == 1009))))) && (!((error.errorID == 1010))))) && (!((error.errorID == 1055))))) && (!((error.errorID == 1069))))){
					throw (error);
				} else {
					if (BindingManager.debugDestinationStrings[destString]){
						trace(((("Binding: destString = " + destString) + ", error = ") + error));
					};
				};
			};
			return (null);
		}
		public function watcherFired(_arg1:Boolean, _arg2:int):void{
			var commitEvent = _arg1;
			var cloneIndex = _arg2;
			if (isHandlingEvent){
				return;
			};
			try {
				isHandlingEvent = true;
				execute(cloneIndex);
			} finally {
				isHandlingEvent = false;
			};
		}
		private function nodeSeqEqual(_arg1:XMLList, _arg2:XMLList):Boolean{
			var _local4:uint;
			var _local3:uint = _arg1.length();
			if (_local3 == _arg2.length()){
				_local4 = 0;
				while ((((_local4 < _local3)) && ((_arg1[_local4] === _arg2[_local4])))) {
					_local4++;
				};
				return ((_local4 == _local3));
				//unresolved jump
			};
			return (false);
		}
		mx_internal function set isEnabled(_arg1:Boolean):void{
			_isEnabled = _arg1;
			if (_arg1){
				processDisabledRequests();
			};
		}
		private function processDisabledRequests():void{
			var _local1:Object;
			if (disabledRequests != null){
				for (_local1 in disabledRequests) {
					execute(_local1);
				};
				disabledRequests = null;
			};
		}
		public function execute(_arg1:Object=null):void{
			var o = _arg1;
			if (!isEnabled){
				if (o != null){
					registerDisabledExecute(o);
				};
				return;
			};
			if (((isExecuting) || (((twoWayCounterpart) && (twoWayCounterpart.isExecuting))))){
				hasHadValue = true;
				return;
			};
			try {
				isExecuting = true;
				wrapFunctionCall(this, innerExecute, o);
			} finally {
				isExecuting = false;
			};
		}
		mx_internal function get isEnabled():Boolean{
			return (_isEnabled);
		}
		private function innerExecute():void{
			var _local1:Object = wrapFunctionCall(document, srcFunc);
			if (BindingManager.debugDestinationStrings[destString]){
				trace(((("Binding: destString = " + destString) + ", srcFunc result = ") + _local1));
			};
			if (((hasHadValue) || (wrappedFunctionSuccessful))){
				if (((!((((((lastValue is XML)) && (lastValue.hasComplexContent()))) && ((lastValue === _local1))))) && (!((((((((lastValue is XMLList)) && (lastValue.hasComplexContent()))) && ((_local1 is XMLList)))) && (nodeSeqEqual((lastValue as XMLList), (_local1 as XMLList)))))))){
					destFunc.call(document, _local1);
					lastValue = _local1;
					hasHadValue = true;
				};
			};
		}

	}
}//package mx.binding 

****************

//BindingManager (mx.binding.BindingManager)
package mx.binding {

	public class BindingManager {

		mx_internal static const VERSION:String = "3.5.0.12683";

		static var debugDestinationStrings:Object = {};

		public static function executeBindings(_arg1:Object, _arg2:String, _arg3:Object):void{
			var _local4:String;
			if (((!(_arg2)) || ((_arg2 == "")))){
				return;
			};
			if (((((((_arg1) && ((((_arg1 is IBindingClient)) || (_arg1.hasOwnProperty("_bindingsByDestination")))))) && (_arg1._bindingsByDestination))) && (_arg1._bindingsBeginWithWord[getFirstWord(_arg2)]))){
				for (_local4 in _arg1._bindingsByDestination) {
					if (_local4.charAt(0) == _arg2.charAt(0)){
						if ((((((_local4.indexOf((_arg2 + ".")) == 0)) || ((_local4.indexOf((_arg2 + "[")) == 0)))) || ((_local4 == _arg2)))){
							_arg1._bindingsByDestination[_local4].execute(_arg3);
						};
					};
				};
			};
		}
		public static function addBinding(_arg1:Object, _arg2:String, _arg3:Binding):void{
			if (!_arg1._bindingsByDestination){
				_arg1._bindingsByDestination = {};
				_arg1._bindingsBeginWithWord = {};
			};
			_arg1._bindingsByDestination[_arg2] = _arg3;
			_arg1._bindingsBeginWithWord[getFirstWord(_arg2)] = true;
		}
		public static function debugBinding(_arg1:String):void{
			debugDestinationStrings[_arg1] = true;
		}
		private static function getFirstWord(_arg1:String):String{
			var _local2:int = _arg1.indexOf(".");
			var _local3:int = _arg1.indexOf("[");
			if (_local2 == _local3){
				return (_arg1);
			};
			var _local4:int = Math.min(_local2, _local3);
			if (_local4 == -1){
				_local4 = Math.max(_local2, _local3);
			};
			return (_arg1.substr(0, _local4));
		}
		public static function setEnabled(_arg1:Object, _arg2:Boolean):void{
			var _local3:Array;
			var _local4:uint;
			var _local5:Binding;
			if ((((_arg1 is IBindingClient)) && (_arg1._bindings))){
				_local3 = (_arg1._bindings as Array);
				_local4 = 0;
				while (_local4 < _local3.length) {
					_local5 = _local3[_local4];
					_local5.isEnabled = _arg2;
					_local4++;
				};
			};
		}

	}
}//package mx.binding 

****************

//EvalBindingResponder (mx.binding.EvalBindingResponder)
package mx.binding {
	import mx.rpc.*;

	public class EvalBindingResponder implements IResponder {

		private var binding:Binding;
		private var object:Object;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function EvalBindingResponder(_arg1:Binding, _arg2:Object){
			this.binding = _arg1;
			this.object = _arg2;
		}
		public function fault(_arg1:Object):void{
		}
		public function result(_arg1:Object):void{
			binding.execute(object);
		}

	}
}//package mx.binding 

****************

//IBindingClient (mx.binding.IBindingClient)
package mx.binding {

	public interface IBindingClient {

	}
}//package mx.binding 

****************

//CollectionViewError (mx.collections.errors.CollectionViewError)
package mx.collections.errors {

	public class CollectionViewError extends Error {

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function CollectionViewError(_arg1:String){
			super(_arg1);
		}
	}
}//package mx.collections.errors 

****************

//CursorError (mx.collections.errors.CursorError)
package mx.collections.errors {

	public class CursorError extends Error {

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function CursorError(_arg1:String){
			super(_arg1);
		}
	}
}//package mx.collections.errors 

****************

//ItemPendingError (mx.collections.errors.ItemPendingError)
package mx.collections.errors {
	import mx.rpc.*;

	public class ItemPendingError extends Error {

		private var _responders:Array;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function ItemPendingError(_arg1:String){
			super(_arg1);
		}
		public function get responders():Array{
			return (_responders);
		}
		public function addResponder(_arg1:IResponder):void{
			if (!_responders){
				_responders = [];
			};
			_responders.push(_arg1);
		}

	}
}//package mx.collections.errors 

****************

//SortError (mx.collections.errors.SortError)
package mx.collections.errors {

	public class SortError extends Error {

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function SortError(_arg1:String){
			super(_arg1);
		}
	}
}//package mx.collections.errors 

****************

//ArrayCollection (mx.collections.ArrayCollection)
package mx.collections {
	import flash.utils.*;

	public class ArrayCollection extends ListCollectionView implements IExternalizable {

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function ArrayCollection(_arg1:Array=null){
			this.source = _arg1;
		}
		public function set source(_arg1:Array):void{
			list = new ArrayList(_arg1);
		}
		public function readExternal(_arg1:IDataInput):void{
			if ((list is IExternalizable)){
				IExternalizable(list).readExternal(_arg1);
			} else {
				source = (_arg1.readObject() as Array);
			};
		}
		public function writeExternal(_arg1:IDataOutput):void{
			if ((list is IExternalizable)){
				IExternalizable(list).writeExternal(_arg1);
			} else {
				_arg1.writeObject(source);
			};
		}
		public function get source():Array{
			if (((list) && ((list is ArrayList)))){
				return (ArrayList(list).source);
			};
			return (null);
		}

	}
}//package mx.collections 

****************

//ArrayList (mx.collections.ArrayList)
package mx.collections {
	import mx.core.*;
	import mx.events.*;
	import flash.events.*;
	import mx.resources.*;
	import flash.utils.*;
	import mx.utils.*;

	public class ArrayList extends EventDispatcher implements IList, IExternalizable, IPropertyChangeNotifier {

		private var _source:Array;
		private var _dispatchEvents:int;// = 0
		private var _uid:String;
		private var resourceManager:IResourceManager;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function ArrayList(_arg1:Array=null){
			resourceManager = ResourceManager.getInstance();
			super();
			disableEvents();
			this.source = _arg1;
			enableEvents();
			_uid = UIDUtil.createUID();
		}
		public function addAll(_arg1:IList):void{
			addAllAt(_arg1, length);
		}
		public function readExternal(_arg1:IDataInput):void{
			source = _arg1.readObject();
		}
		private function internalDispatchEvent(_arg1:String, _arg2:Object=null, _arg3:int=-1):void{
			var _local4:CollectionEvent;
			var _local5:PropertyChangeEvent;
			if (_dispatchEvents == 0){
				if (hasEventListener(CollectionEvent.COLLECTION_CHANGE)){
					_local4 = new CollectionEvent(CollectionEvent.COLLECTION_CHANGE);
					_local4.kind = _arg1;
					_local4.items.push(_arg2);
					_local4.location = _arg3;
					dispatchEvent(_local4);
				};
				if (((hasEventListener(PropertyChangeEvent.PROPERTY_CHANGE)) && ((((_arg1 == CollectionEventKind.ADD)) || ((_arg1 == CollectionEventKind.REMOVE)))))){
					_local5 = new PropertyChangeEvent(PropertyChangeEvent.PROPERTY_CHANGE);
					_local5.property = _arg3;
					if (_arg1 == CollectionEventKind.ADD){
						_local5.newValue = _arg2;
					} else {
						_local5.oldValue = _arg2;
					};
					dispatchEvent(_local5);
				};
			};
		}
		public function removeAll():void{
			var _local1:int;
			var _local2:int;
			if (length > 0){
				_local1 = length;
				_local2 = 0;
				while (_local2 < _local1) {
					stopTrackUpdates(source[_local2]);
					_local2++;
				};
				source.splice(0, length);
				internalDispatchEvent(CollectionEventKind.RESET);
			};
		}
		public function getItemIndex(_arg1:Object):int{
			return (ArrayUtil.getItemIndex(_arg1, source));
		}
		public function removeItemAt(_arg1:int):Object{
			var _local3:String;
			if ((((_arg1 < 0)) || ((_arg1 >= length)))){
				_local3 = resourceManager.getString("collections", "outOfBounds", [_arg1]);
				throw (new RangeError(_local3));
			};
			var _local2:Object = source.splice(_arg1, 1)[0];
			stopTrackUpdates(_local2);
			internalDispatchEvent(CollectionEventKind.REMOVE, _local2, _arg1);
			return (_local2);
		}
		public function addAllAt(_arg1:IList, _arg2:int):void{
			var _local3:int = _arg1.length;
			var _local4:int;
			while (_local4 < _local3) {
				this.addItemAt(_arg1.getItemAt(_local4), (_local4 + _arg2));
				_local4++;
			};
		}
		public function itemUpdated(_arg1:Object, _arg2:Object=null, _arg3:Object=null, _arg4:Object=null):void{
			var _local5:PropertyChangeEvent = new PropertyChangeEvent(PropertyChangeEvent.PROPERTY_CHANGE);
			_local5.kind = PropertyChangeEventKind.UPDATE;
			_local5.source = _arg1;
			_local5.property = _arg2;
			_local5.oldValue = _arg3;
			_local5.newValue = _arg4;
			itemUpdateHandler(_local5);
		}
		public function get uid():String{
			return (_uid);
		}
		public function writeExternal(_arg1:IDataOutput):void{
			_arg1.writeObject(_source);
		}
		public function addItem(_arg1:Object):void{
			addItemAt(_arg1, length);
		}
		public function toArray():Array{
			return (source.concat());
		}
		public function get source():Array{
			return (_source);
		}
		public function getItemAt(_arg1:int, _arg2:int=0):Object{
			var _local3:String;
			if ((((_arg1 < 0)) || ((_arg1 >= length)))){
				_local3 = resourceManager.getString("collections", "outOfBounds", [_arg1]);
				throw (new RangeError(_local3));
			};
			return (source[_arg1]);
		}
		public function set uid(_arg1:String):void{
			_uid = _arg1;
		}
		public function setItemAt(_arg1:Object, _arg2:int):Object{
			var _local4:String;
			var _local5:Boolean;
			var _local6:Boolean;
			var _local7:PropertyChangeEvent;
			var _local8:CollectionEvent;
			if ((((_arg2 < 0)) || ((_arg2 >= length)))){
				_local4 = resourceManager.getString("collections", "outOfBounds", [_arg2]);
				throw (new RangeError(_local4));
			};
			var _local3:Object = source[_arg2];
			source[_arg2] = _arg1;
			stopTrackUpdates(_local3);
			startTrackUpdates(_arg1);
			if (_dispatchEvents == 0){
				_local5 = hasEventListener(CollectionEvent.COLLECTION_CHANGE);
				_local6 = hasEventListener(PropertyChangeEvent.PROPERTY_CHANGE);
				if (((_local5) || (_local6))){
					_local7 = new PropertyChangeEvent(PropertyChangeEvent.PROPERTY_CHANGE);
					_local7.kind = PropertyChangeEventKind.UPDATE;
					_local7.oldValue = _local3;
					_local7.newValue = _arg1;
					_local7.property = _arg2;
				};
				if (_local5){
					_local8 = new CollectionEvent(CollectionEvent.COLLECTION_CHANGE);
					_local8.kind = CollectionEventKind.REPLACE;
					_local8.location = _arg2;
					_local8.items.push(_local7);
					dispatchEvent(_local8);
				};
				if (_local6){
					dispatchEvent(_local7);
				};
			};
			return (_local3);
		}
		public function get length():int{
			if (source){
				return (source.length);
			};
			return (0);
		}
		private function disableEvents():void{
			_dispatchEvents--;
		}
		protected function itemUpdateHandler(_arg1:PropertyChangeEvent):void{
			var _local2:PropertyChangeEvent;
			var _local3:uint;
			internalDispatchEvent(CollectionEventKind.UPDATE, _arg1);
			if ((((_dispatchEvents == 0)) && (hasEventListener(PropertyChangeEvent.PROPERTY_CHANGE)))){
				_local2 = PropertyChangeEvent(_arg1.clone());
				_local3 = getItemIndex(_arg1.target);
				_local2.property = ((_local3.toString() + ".") + _arg1.property);
				dispatchEvent(_local2);
			};
		}
		public function addItemAt(_arg1:Object, _arg2:int):void{
			var _local3:String;
			if ((((_arg2 < 0)) || ((_arg2 > length)))){
				_local3 = resourceManager.getString("collections", "outOfBounds", [_arg2]);
				throw (new RangeError(_local3));
			};
			source.splice(_arg2, 0, _arg1);
			startTrackUpdates(_arg1);
			internalDispatchEvent(CollectionEventKind.ADD, _arg1, _arg2);
		}
		public function removeItem(_arg1:Object):Boolean{
			var _local2:int = getItemIndex(_arg1);
			var _local3 = (_local2 >= 0);
			if (_local3){
				removeItemAt(_local2);
			};
			return (_local3);
		}
		protected function stopTrackUpdates(_arg1:Object):void{
			if (((_arg1) && ((_arg1 is IEventDispatcher)))){
				IEventDispatcher(_arg1).removeEventListener(PropertyChangeEvent.PROPERTY_CHANGE, itemUpdateHandler);
			};
		}
		protected function startTrackUpdates(_arg1:Object):void{
			if (((_arg1) && ((_arg1 is IEventDispatcher)))){
				IEventDispatcher(_arg1).addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, itemUpdateHandler, false, 0, true);
			};
		}
		override public function toString():String{
			if (source){
				return (source.toString());
			};
			return (getQualifiedClassName(this));
		}
		private function enableEvents():void{
			_dispatchEvents++;
			if (_dispatchEvents > 0){
				_dispatchEvents = 0;
			};
		}
		public function set source(_arg1:Array):void{
			var _local2:int;
			var _local3:int;
			var _local4:CollectionEvent;
			if (((_source) && (_source.length))){
				_local3 = _source.length;
				_local2 = 0;
				while (_local2 < _local3) {
					stopTrackUpdates(_source[_local2]);
					_local2++;
				};
			};
			_source = (_arg1) ? _arg1 : [];
			_local3 = _source.length;
			_local2 = 0;
			while (_local2 < _local3) {
				startTrackUpdates(_source[_local2]);
				_local2++;
			};
			if (_dispatchEvents == 0){
				_local4 = new CollectionEvent(CollectionEvent.COLLECTION_CHANGE);
				_local4.kind = CollectionEventKind.RESET;
				dispatchEvent(_local4);
			};
		}

	}
}//package mx.collections 

****************

//CursorBookmark (mx.collections.CursorBookmark)
package mx.collections {

	public class CursorBookmark {

		private var _value:Object;

		mx_internal static const VERSION:String = "3.5.0.12683";

		private static var _first:CursorBookmark;
		private static var _last:CursorBookmark;
		private static var _current:CursorBookmark;

		public function CursorBookmark(_arg1:Object){
			_value = _arg1;
		}
		public function get value():Object{
			return (_value);
		}
		public function getViewIndex():int{
			return (-1);
		}

		public static function get LAST():CursorBookmark{
			if (!_last){
				_last = new CursorBookmark("${L}");
			};
			return (_last);
		}
		public static function get FIRST():CursorBookmark{
			if (!_first){
				_first = new CursorBookmark("${F}");
			};
			return (_first);
		}
		public static function get CURRENT():CursorBookmark{
			if (!_current){
				_current = new CursorBookmark("${C}");
			};
			return (_current);
		}

	}
}//package mx.collections 

****************

//ICollectionView (mx.collections.ICollectionView)
package mx.collections {
	import flash.events.*;

	public interface ICollectionView extends IEventDispatcher {

		function set filterFunction(_arg1:Function):void;
		function enableAutoUpdate():void;
		function get length():int;
		function disableAutoUpdate():void;
		function itemUpdated(_arg1:Object, _arg2:Object=null, _arg3:Object=null, _arg4:Object=null):void;
		function get filterFunction():Function;
		function createCursor():IViewCursor;
		function refresh():Boolean;
		function set sort(_arg1:Sort):void;
		function get sort():Sort;
		function contains(_arg1:Object):Boolean;

	}
}//package mx.collections 

****************

//IList (mx.collections.IList)
package mx.collections {
	import flash.events.*;

	public interface IList extends IEventDispatcher {

		function addItem(_arg1:Object):void;
		function get length():int;
		function addItemAt(_arg1:Object, _arg2:int):void;
		function itemUpdated(_arg1:Object, _arg2:Object=null, _arg3:Object=null, _arg4:Object=null):void;
		function getItemIndex(_arg1:Object):int;
		function removeItemAt(_arg1:int):Object;
		function getItemAt(_arg1:int, _arg2:int=0):Object;
		function removeAll():void;
		function toArray():Array;
		function setItemAt(_arg1:Object, _arg2:int):Object;

	}
}//package mx.collections 

****************

//ItemResponder (mx.collections.ItemResponder)
package mx.collections {
	import mx.rpc.*;

	public class ItemResponder implements IResponder {

		private var _faultHandler:Function;
		private var _token:Object;
		private var _resultHandler:Function;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function ItemResponder(_arg1:Function, _arg2:Function, _arg3:Object=null){
			_resultHandler = _arg1;
			_faultHandler = _arg2;
			_token = _arg3;
		}
		public function result(_arg1:Object):void{
			_resultHandler(_arg1, _token);
		}
		public function fault(_arg1:Object):void{
			_faultHandler(_arg1, _token);
		}

	}
}//package mx.collections 

****************

//IViewCursor (mx.collections.IViewCursor)
package mx.collections {
	import flash.events.*;

	public interface IViewCursor extends IEventDispatcher {

		function get current():Object;
		function moveNext():Boolean;
		function get view():ICollectionView;
		function movePrevious():Boolean;
		function remove():Object;
		function findLast(_arg1:Object):Boolean;
		function get beforeFirst():Boolean;
		function get afterLast():Boolean;
		function findAny(_arg1:Object):Boolean;
		function get bookmark():CursorBookmark;
		function findFirst(_arg1:Object):Boolean;
		function seek(_arg1:CursorBookmark, _arg2:int=0, _arg3:int=0):void;
		function insert(_arg1:Object):void;

	}
}//package mx.collections 

****************

//ListCollectionView (mx.collections.ListCollectionView)
package mx.collections {
	import mx.core.*;
	import mx.events.*;
	import flash.events.*;
	import mx.resources.*;
	import flash.utils.*;
	import mx.utils.*;
	import mx.collections.errors.*;

	public class ListCollectionView extends Proxy implements ICollectionView, IList, IMXMLObject {

		private var autoUpdateCounter:int;
		private var _list:IList;
		private var _filterFunction:Function;
		protected var localIndex:Array;
		mx_internal var dispatchResetEvent:Boolean;// = true
		private var pendingUpdates:Array;
		private var resourceManager:IResourceManager;
		private var eventDispatcher:EventDispatcher;
		private var revision:int;
		private var _sort:Sort;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function ListCollectionView(_arg1:IList=null){
			resourceManager = ResourceManager.getInstance();
			super();
			eventDispatcher = new EventDispatcher(this);
			this.list = _arg1;
		}
		private function handlePendingUpdates():void{
			var _local1:Array;
			var _local2:CollectionEvent;
			var _local3:int;
			var _local4:CollectionEvent;
			var _local5:int;
			if (pendingUpdates){
				_local1 = pendingUpdates;
				pendingUpdates = null;
				_local3 = 0;
				while (_local3 < _local1.length) {
					_local4 = _local1[_local3];
					if (_local4.kind == CollectionEventKind.UPDATE){
						if (!_local2){
							_local2 = _local4;
						} else {
							_local5 = 0;
							while (_local5 < _local4.items.length) {
								_local2.items.push(_local4.items[_local5]);
								_local5++;
							};
						};
					} else {
						listChangeHandler(_local4);
					};
					_local3++;
				};
				if (_local2){
					listChangeHandler(_local2);
				};
			};
		}
		private function replaceItemsInView(_arg1:Array, _arg2:int, _arg3:Boolean=true):void{
			var _local4:int;
			var _local5:Array;
			var _local6:Array;
			var _local7:int;
			var _local8:PropertyChangeEvent;
			var _local9:CollectionEvent;
			if (localIndex){
				_local4 = _arg1.length;
				_local5 = [];
				_local6 = [];
				_local7 = 0;
				while (_local7 < _local4) {
					_local8 = _arg1[_local7];
					_local5.push(_local8.oldValue);
					_local6.push(_local8.newValue);
					_local7++;
				};
				removeItemsFromView(_local5, _arg2, _arg3);
				addItemsToView(_local6, _arg2, _arg3);
			} else {
				_local9 = new CollectionEvent(CollectionEvent.COLLECTION_CHANGE);
				_local9.kind = CollectionEventKind.REPLACE;
				_local9.location = _arg2;
				_local9.items = _arg1;
				dispatchEvent(_local9);
			};
		}
		private function getFilteredItemIndex(_arg1:Object):int{
			var _local4:Object;
			var _local5:int;
			var _local6:int;
			var _local2:int = list.getItemIndex(_arg1);
			if (_local2 == 0){
				return (0);
			};
			var _local3:int = (_local2 - 1);
			while (_local3 >= 0) {
				_local4 = list.getItemAt(_local3);
				if (filterFunction(_local4)){
					_local5 = localIndex.length;
					_local6 = 0;
					while (_local6 < _local5) {
						if (localIndex[_local6] == _local4){
							return ((_local6 + 1));
						};
						_local6++;
					};
				};
				_local3--;
			};
			return (0);
		}
		public function willTrigger(_arg1:String):Boolean{
			return (eventDispatcher.willTrigger(_arg1));
		}
		mx_internal function findItem(_arg1:Object, _arg2:String, _arg3:Boolean=false):int{
			var _local4:String;
			if (!sort){
				_local4 = resourceManager.getString("collections", "itemNotFound");
				throw (new CollectionViewError(_local4));
			};
			if (localIndex.length == 0){
				return ((_arg3) ? 0 : -1);
			};
			return (sort.findItem(localIndex, _arg1, _arg2, _arg3));
		}
		public function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{
			eventDispatcher.removeEventListener(_arg1, _arg2, _arg3);
		}
		override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextName(_arg1:int):String{
			return ((_arg1 - 1).toString());
		}
		public function removeAll():void{
			var _local2:int;
			var _local1:int = length;
			if (_local1 > 0){
				if (localIndex){
					_local2 = (_local1 - 1);
					while (_local2 >= 0) {
						removeItemAt(_local2);
						_local2--;
					};
				} else {
					list.removeAll();
				};
			};
		}
		override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function hasProperty(_arg1):Boolean{
			var n:Number;
			var name = _arg1;
			if ((name is QName)){
				name = name.localName;
			};
			var index = -1;
			try {
				n = parseInt(String(name));
				if (!isNaN(n)){
					index = int(n);
				};
			} catch(e:Error) {
			};
			if (index == -1){
				return (false);
			};
			return ((((index >= 0)) && ((index < length))));
		}
		public function addAllAt(_arg1:IList, _arg2:int):void{
			var _local3:int = _arg1.length;
			var _local4:int;
			while (_local4 < _local3) {
				this.addItemAt(_arg1.getItemAt(_local4), (_local4 + _arg2));
				_local4++;
			};
		}
		public function getItemAt(_arg1:int, _arg2:int=0):Object{
			var _local3:String;
			if ((((_arg1 < 0)) || ((_arg1 >= length)))){
				_local3 = resourceManager.getString("collections", "outOfBounds", [_arg1]);
				throw (new RangeError(_local3));
			};
			if (localIndex){
				return (localIndex[_arg1]);
			};
			if (list){
				return (list.getItemAt(_arg1, _arg2));
			};
			return (null);
		}
		private function moveItemInView(_arg1:Object, _arg2:Boolean=true, _arg3:Array=null):void{
			var _local4:int;
			var _local5:int;
			var _local6:int;
			var _local7:CollectionEvent;
			if (localIndex){
				_local4 = -1;
				_local5 = 0;
				while (_local5 < localIndex.length) {
					if (localIndex[_local5] == _arg1){
						_local4 = _local5;
						break;
					};
					_local5++;
				};
				if (_local4 > -1){
					localIndex.splice(_local4, 1);
				};
				_local6 = addItemsToView([_arg1], _local4, false);
				if (_arg2){
					_local7 = new CollectionEvent(CollectionEvent.COLLECTION_CHANGE);
					_local7.items.push(_arg1);
					if (((((_arg3) && ((_local6 == _local4)))) && ((_local6 > -1)))){
						_arg3.push(_arg1);
						return;
					};
					if ((((_local6 > -1)) && ((_local4 > -1)))){
						_local7.kind = CollectionEventKind.MOVE;
						_local7.location = _local6;
						_local7.oldLocation = _local4;
					} else {
						if (_local6 > -1){
							_local7.kind = CollectionEventKind.ADD;
							_local7.location = _local6;
						} else {
							if (_local4 > -1){
								_local7.kind = CollectionEventKind.REMOVE;
								_local7.location = _local4;
							} else {
								_arg2 = false;
							};
						};
					};
					if (_arg2){
						dispatchEvent(_local7);
					};
				};
			};
		}
		public function contains(_arg1:Object):Boolean{
			return (!((getItemIndex(_arg1) == -1)));
		}
		public function get sort():Sort{
			return (_sort);
		}
		private function removeItemsFromView(_arg1:Array, _arg2:int, _arg3:Boolean=true):void{
			var _local6:int;
			var _local7:Object;
			var _local8:int;
			var _local9:CollectionEvent;
			var _local4:Array = (localIndex) ? [] : _arg1;
			var _local5:int = _arg2;
			if (localIndex){
				_local6 = 0;
				while (_local6 < _arg1.length) {
					_local7 = _arg1[_local6];
					_local8 = getItemIndex(_local7);
					if (_local8 > -1){
						localIndex.splice(_local8, 1);
						_local4.push(_local7);
						_local5 = _local8;
					};
					_local6++;
				};
			};
			if (((_arg3) && ((_local4.length > 0)))){
				_local9 = new CollectionEvent(CollectionEvent.COLLECTION_CHANGE);
				_local9.kind = CollectionEventKind.REMOVE;
				_local9.location = (((!(localIndex)) || ((_local4.length == 1)))) ? _local5 : -1;
				_local9.items = _local4;
				dispatchEvent(_local9);
			};
		}
		public function get list():IList{
			return (_list);
		}
		public function addItemAt(_arg1:Object, _arg2:int):void{
			var _local4:String;
			if ((((((_arg2 < 0)) || (!(list)))) || ((_arg2 > length)))){
				_local4 = resourceManager.getString("collections", "outOfBounds", [_arg2]);
				throw (new RangeError(_local4));
			};
			var _local3:int = _arg2;
			if (((localIndex) && (sort))){
				_local3 = list.length;
			} else {
				if (((localIndex) && (!((filterFunction == null))))){
					if (_local3 == localIndex.length){
						_local3 = list.length;
					} else {
						_local3 = list.getItemIndex(localIndex[_arg2]);
					};
				};
			};
			list.addItemAt(_arg1, _local3);
		}
		public function itemUpdated(_arg1:Object, _arg2:Object=null, _arg3:Object=null, _arg4:Object=null):void{
			list.itemUpdated(_arg1, _arg2, _arg3, _arg4);
		}
		private function populateLocalIndex():void{
			if (list){
				localIndex = list.toArray();
			} else {
				localIndex = [];
			};
		}
		private function handlePropertyChangeEvents(_arg1:Array):void{
			var _local3:Array;
			var _local4:Object;
			var _local5:int;
			var _local6:Array;
			var _local7:int;
			var _local8:PropertyChangeEvent;
			var _local9:Object;
			var _local10:Boolean;
			var _local11:int;
			var _local12:int;
			var _local13:int;
			var _local14:int;
			var _local15:CollectionEvent;
			var _local2:Array = _arg1;
			if (((sort) || (!((filterFunction == null))))){
				_local3 = [];
				_local5 = 0;
				while (_local5 < _arg1.length) {
					_local8 = _arg1[_local5];
					if (_local8.target){
						_local9 = _local8.target;
						_local10 = !((_local8.target == _local8.source));
					} else {
						_local9 = _local8.source;
						_local10 = false;
					};
					_local11 = 0;
					while (_local11 < _local3.length) {
						if (_local3[_local11].item == _local9){
							_arg1 = _local3[_local11].events;
							_local12 = _arg1.length;
							_local13 = 0;
							while (_local13 < _local12) {
								if (_arg1[_local13].property != _local8.property){
									_arg1.push(_local8);
									break;
								};
								_local13++;
							};
							break;
						};
						_local11++;
					};
					if (_local11 < _local3.length){
						_local4 = _local3[_local11];
					} else {
						_local4 = {item:_local9, move:_local10, events:[_local8]};
						_local3.push(_local4);
					};
					_local4.move = ((((((_local4.move) || (filterFunction))) || (!(_local8.property)))) || (((sort) && (sort.propertyAffectsSort(String(_local8.property))))));
					_local5++;
				};
				_local2 = [];
				_local5 = 0;
				while (_local5 < _local3.length) {
					_local4 = _local3[_local5];
					if (_local4.move){
						moveItemInView(_local4.item, _local4.item, _local2);
					} else {
						_local2.push(_local4.item);
					};
					_local5++;
				};
				_local6 = [];
				_local7 = 0;
				while (_local7 < _local2.length) {
					_local14 = 0;
					while (_local14 < _local3.length) {
						if (_local2[_local7] == _local3[_local14].item){
							_local6 = _local6.concat(_local3[_local14].events);
						};
						_local14++;
					};
					_local7++;
				};
				_local2 = _local6;
			};
			if (_local2.length > 0){
				_local15 = new CollectionEvent(CollectionEvent.COLLECTION_CHANGE);
				_local15.kind = CollectionEventKind.UPDATE;
				_local15.items = _local2;
				dispatchEvent(_local15);
			};
		}
		public function set sort(_arg1:Sort):void{
			_sort = _arg1;
			dispatchEvent(new Event("sortChanged"));
		}
		override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextValue(_arg1:int){
			return (getItemAt((_arg1 - 1)));
		}
		public function setItemAt(_arg1:Object, _arg2:int):Object{
			var _local4:String;
			var _local5:Object;
			if ((((((_arg2 < 0)) || (!(list)))) || ((_arg2 >= length)))){
				_local4 = resourceManager.getString("collections", "outOfBounds", [_arg2]);
				throw (new RangeError(_local4));
			};
			var _local3:int = _arg2;
			if (localIndex){
				if (_arg2 > localIndex.length){
					_local3 = list.length;
				} else {
					_local5 = localIndex[_arg2];
					_local3 = list.getItemIndex(_local5);
				};
			};
			return (list.setItemAt(_arg1, _local3));
		}
		mx_internal function getBookmark(_arg1:int):ListCollectionViewBookmark{
			var value:Object;
			var message:String;
			var index = _arg1;
			if ((((index < 0)) || ((index > length)))){
				message = resourceManager.getString("collections", "invalidIndex", [index]);
				throw (new CollectionViewError(message));
			};
			try {
				value = getItemAt(index);
			} catch(e:Error) {
				value = null;
			};
			return (new ListCollectionViewBookmark(value, this, revision, index));
		}
		private function addItemsToView(_arg1:Array, _arg2:int, _arg3:Boolean=true):int{
			var _local7:int;
			var _local8:int;
			var _local9:Object;
			var _local10:String;
			var _local11:CollectionEvent;
			var _local4:Array = (localIndex) ? [] : _arg1;
			var _local5:int = _arg2;
			var _local6:Boolean;
			if (localIndex){
				_local7 = _arg2;
				_local8 = 0;
				while (_local8 < _arg1.length) {
					_local9 = _arg1[_local8];
					if ((((filterFunction == null)) || (filterFunction(_local9)))){
						if (sort){
							_local7 = findItem(_local9, Sort.ANY_INDEX_MODE, true);
							if (_local6){
								_local5 = _local7;
								_local6 = false;
							};
						} else {
							_local7 = getFilteredItemIndex(_local9);
							if (_local6){
								_local5 = _local7;
								_local6 = false;
							};
						};
						if (((((sort) && (sort.unique))) && ((sort.compareFunction(_local9, localIndex[_local7]) == 0)))){
							_local10 = resourceManager.getString("collections", "incorrectAddition");
							throw (new CollectionViewError(_local10));
						};
						var _temp1 = _local7;
						_local7 = (_local7 + 1);
						localIndex.splice(_temp1, 0, _local9);
						_local4.push(_local9);
					} else {
						_local5 = -1;
					};
					_local8++;
				};
			};
			if (((localIndex) && ((_local4.length > 1)))){
				_local5 = -1;
			};
			if (((_arg3) && ((_local4.length > 0)))){
				_local11 = new CollectionEvent(CollectionEvent.COLLECTION_CHANGE);
				_local11.kind = CollectionEventKind.ADD;
				_local11.location = _local5;
				_local11.items = _local4;
				dispatchEvent(_local11);
			};
			return (_local5);
		}
		public function addAll(_arg1:IList):void{
			addAllAt(_arg1, length);
		}
		public function set list(_arg1:IList):void{
			var _local2:Boolean;
			var _local3:Boolean;
			if (_list != _arg1){
				if (_list){
					_list.removeEventListener(CollectionEvent.COLLECTION_CHANGE, listChangeHandler);
					_local2 = (_list.length > 0);
				};
				_list = _arg1;
				if (_list){
					_list.addEventListener(CollectionEvent.COLLECTION_CHANGE, listChangeHandler, false, 0, true);
					_local3 = (_list.length > 0);
				};
				if (((_local2) || (_local3))){
					reset();
				};
				dispatchEvent(new Event("listChanged"));
			};
		}
		public function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{
			eventDispatcher.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5);
		}
		public function dispatchEvent(_arg1:Event):Boolean{
			return (eventDispatcher.dispatchEvent(_arg1));
		}
		public function getItemIndex(_arg1:Object):int{
			var _local2:int;
			var _local3:int;
			var _local4:int;
			var _local5:int;
			if (sort){
				_local3 = sort.findItem(localIndex, _arg1, Sort.FIRST_INDEX_MODE);
				if (_local3 == -1){
					return (-1);
				};
				_local4 = sort.findItem(localIndex, _arg1, Sort.LAST_INDEX_MODE);
				_local2 = _local3;
				while (_local2 <= _local4) {
					if (localIndex[_local2] == _arg1){
						return (_local2);
					};
					_local2++;
				};
				return (-1);
			} else {
				if (filterFunction != null){
					_local5 = localIndex.length;
					_local2 = 0;
					while (_local2 < _local5) {
						if (localIndex[_local2] == _arg1){
							return (_local2);
						};
						_local2++;
					};
					return (-1);
				};
			};
			return (list.getItemIndex(_arg1));
		}
		mx_internal function getLocalItemIndex(_arg1:Object):int{
			var _local2:int;
			var _local3:int = localIndex.length;
			_local2 = 0;
			while (_local2 < _local3) {
				if (localIndex[_local2] == _arg1){
					return (_local2);
				};
				_local2++;
			};
			return (-1);
		}
		override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(_arg1){
			var n:Number;
			var message:String;
			var name = _arg1;
			if ((name is QName)){
				name = name.localName;
			};
			var index = -1;
			try {
				n = parseInt(String(name));
				if (!isNaN(n)){
					index = int(n);
				};
			} catch(e:Error) {
			};
			if (index == -1){
				message = resourceManager.getString("collections", "unknownProperty", [name]);
				throw (new Error(message));
			};
			return (getItemAt(index));
		}
		public function enableAutoUpdate():void{
			if (autoUpdateCounter > 0){
				autoUpdateCounter--;
				if (autoUpdateCounter == 0){
					handlePendingUpdates();
				};
			};
		}
		mx_internal function reset():void{
			var _local1:CollectionEvent;
			internalRefresh(false);
			if (dispatchResetEvent){
				_local1 = new CollectionEvent(CollectionEvent.COLLECTION_CHANGE);
				_local1.kind = CollectionEventKind.RESET;
				dispatchEvent(_local1);
			};
		}
		public function toArray():Array{
			var _local1:Array;
			if (localIndex){
				_local1 = localIndex.concat();
			} else {
				_local1 = list.toArray();
			};
			return (_local1);
		}
		public function removeItemAt(_arg1:int):Object{
			var _local3:String;
			var _local4:Object;
			if ((((_arg1 < 0)) || ((_arg1 >= length)))){
				_local3 = resourceManager.getString("collections", "outOfBounds", [_arg1]);
				throw (new RangeError(_local3));
			};
			var _local2:int = _arg1;
			if (localIndex){
				_local4 = localIndex[_arg1];
				_local2 = list.getItemIndex(_local4);
			};
			return (list.removeItemAt(_local2));
		}
		override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function callProperty(_arg1, ... _args){
			return (null);
		}
		public function initialized(_arg1:Object, _arg2:String):void{
			refresh();
		}
		override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function setProperty(_arg1, _arg2):void{
			var n:Number;
			var message:String;
			var name = _arg1;
			var value = _arg2;
			if ((name is QName)){
				name = name.localName;
			};
			var index = -1;
			try {
				n = parseInt(String(name));
				if (!isNaN(n)){
					index = int(n);
				};
			} catch(e:Error) {
			};
			if (index == -1){
				message = resourceManager.getString("collections", "unknownProperty", [name]);
				throw (new Error(message));
			};
			setItemAt(value, index);
		}
		public function addItem(_arg1:Object):void{
			addItemAt(_arg1, length);
		}
		private function internalRefresh(_arg1:Boolean):Boolean{
			var tmp:Array;
			var len:int;
			var i:int;
			var item:Object;
			var refreshEvent:CollectionEvent;
			var dispatch = _arg1;
			if (((sort) || (!((filterFunction == null))))){
				try {
					populateLocalIndex();
				} catch(pending:ItemPendingError) {
					pending.addResponder(new ItemResponder(function (_arg1:Object, _arg2:Object=null):void{
						internalRefresh(dispatch);
					}, function (_arg1:Object, _arg2:Object=null):void{
					}));
					return (false);
				};
				if (filterFunction != null){
					tmp = [];
					len = localIndex.length;
					i = 0;
					while (i < len) {
						item = localIndex[i];
						if (filterFunction(item)){
							tmp.push(item);
						};
						i = (i + 1);
					};
					localIndex = tmp;
				};
				if (sort){
					sort.sort(localIndex);
					dispatch = true;
				};
			} else {
				if (localIndex){
					localIndex = null;
				};
			};
			revision++;
			pendingUpdates = null;
			if (dispatch){
				refreshEvent = new CollectionEvent(CollectionEvent.COLLECTION_CHANGE);
				refreshEvent.kind = CollectionEventKind.REFRESH;
				dispatchEvent(refreshEvent);
			};
			return (true);
		}
		public function set filterFunction(_arg1:Function):void{
			_filterFunction = _arg1;
			dispatchEvent(new Event("filterFunctionChanged"));
		}
		mx_internal function getBookmarkIndex(_arg1:CursorBookmark):int{
			var bm:ListCollectionViewBookmark;
			var message:String;
			var bookmark = _arg1;
			if (((!((bookmark is ListCollectionViewBookmark))) || (!((ListCollectionViewBookmark(bookmark).view == this))))){
				message = resourceManager.getString("collections", "bookmarkNotFound");
				throw (new CollectionViewError(message));
			};
			bm = ListCollectionViewBookmark(bookmark);
			if (bm.viewRevision != revision){
				if ((((((bm.index < 0)) || ((bm.index >= length)))) || (!((getItemAt(bm.index) == bm.value))))){
					try {
						bm.index = getItemIndex(bm.value);
					} catch(e:SortError) {
						bm.index = getLocalItemIndex(bm.value);
					};
				};
				bm.viewRevision = revision;
			};
			return (bm.index);
		}
		public function refresh():Boolean{
			return (internalRefresh(true));
		}
		public function get filterFunction():Function{
			return (_filterFunction);
		}
		public function createCursor():IViewCursor{
			return (new ListCollectionViewCursor(this));
		}
		public function hasEventListener(_arg1:String):Boolean{
			return (eventDispatcher.hasEventListener(_arg1));
		}
		public function get length():int{
			if (localIndex){
				return (localIndex.length);
			};
			if (list){
				return (list.length);
			};
			return (0);
		}
		override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextNameIndex(_arg1:int):int{
			return (((_arg1 < length)) ? (_arg1 + 1) : 0);
		}
		public function disableAutoUpdate():void{
			autoUpdateCounter++;
		}
		public function toString():String{
			if (localIndex){
				return (ObjectUtil.toString(localIndex));
			};
			if (((list) && (Object(list).toString))){
				return (Object(list).toString());
			};
			return (getQualifiedClassName(this));
		}
		private function listChangeHandler(_arg1:CollectionEvent):void{
			if (autoUpdateCounter > 0){
				if (!pendingUpdates){
					pendingUpdates = [];
				};
				pendingUpdates.push(_arg1);
			} else {
				switch (_arg1.kind){
					case CollectionEventKind.ADD:
						addItemsToView(_arg1.items, _arg1.location);
						break;
					case CollectionEventKind.RESET:
						reset();
						break;
					case CollectionEventKind.REMOVE:
						removeItemsFromView(_arg1.items, _arg1.location);
						break;
					case CollectionEventKind.REPLACE:
						replaceItemsInView(_arg1.items, _arg1.location);
						break;
					case CollectionEventKind.UPDATE:
						handlePropertyChangeEvents(_arg1.items);
						break;
					default:
						dispatchEvent(_arg1);
				};
			};
		}

	}
}//package mx.collections 

import mx.events.*;
import flash.events.*;
import mx.resources.*;
import mx.collections.errors.*;

class ListCollectionViewBookmark extends CursorBookmark {

	mx_internal var viewRevision:int;
	mx_internal var index:int;
	mx_internal var view:ListCollectionView;

	private function ListCollectionViewBookmark(_arg1:Object, _arg2:ListCollectionView, _arg3:int, _arg4:int){
		super(_arg1);
		this.view = _arg2;
		this.viewRevision = _arg3;
		this.index = _arg4;
	}
	override public function getViewIndex():int{
		return (view.getBookmarkIndex(this));
	}

}
class ListCollectionViewCursor extends EventDispatcher implements IViewCursor {

	private var _view:ListCollectionView;
	private var invalid:Boolean;
	private var resourceManager:IResourceManager;
	private var currentIndex:int;
	private var currentValue:Object;

	private static const BEFORE_FIRST_INDEX:int = -1;
	private static const AFTER_LAST_INDEX:int = -2;

	private function ListCollectionViewCursor(_arg1:ListCollectionView){
		var view = _arg1;
		resourceManager = ResourceManager.getInstance();
		super();
		_view = view;
		_view.addEventListener(CollectionEvent.COLLECTION_CHANGE, collectionEventHandler, false, 0, true);
		currentIndex = ((view.length > 0)) ? 0 : AFTER_LAST_INDEX;
		if (currentIndex == 0){
			try {
				setCurrent(view.getItemAt(0), false);
			} catch(e:ItemPendingError) {
				currentIndex = BEFORE_FIRST_INDEX;
				setCurrent(null, false);
			};
		};
	}
	public function findAny(_arg1:Object):Boolean{
		var index:int;
		var values = _arg1;
		checkValid();
		var lcView:ListCollectionView = ListCollectionView(view);
		try {
			index = lcView.findItem(values, Sort.ANY_INDEX_MODE);
		} catch(e:SortError) {
			throw (new CursorError(e.message));
		};
		if (index > -1){
			currentIndex = index;
			setCurrent(lcView.getItemAt(currentIndex));
		};
		return ((index > -1));
	}
	public function remove():Object{
		var oldIndex:int;
		var message:String;
		if (((beforeFirst) || (afterLast))){
			message = resourceManager.getString("collections", "invalidRemove");
			throw (new CursorError(message));
		};
		oldIndex = currentIndex;
		currentIndex++;
		if (currentIndex >= view.length){
			currentIndex = AFTER_LAST_INDEX;
			setCurrent(null);
		} else {
			try {
				setCurrent(ListCollectionView(view).getItemAt(currentIndex));
			} catch(e:ItemPendingError) {
				setCurrent(null, false);
				ListCollectionView(view).removeItemAt(oldIndex);
				throw (e);
			};
		};
		var removed:Object = ListCollectionView(view).removeItemAt(oldIndex);
		return (removed);
	}
	private function setCurrent(_arg1:Object, _arg2:Boolean=true):void{
		currentValue = _arg1;
		if (_arg2){
			dispatchEvent(new FlexEvent(FlexEvent.CURSOR_UPDATE));
		};
	}
	public function seek(_arg1:CursorBookmark, _arg2:int=0, _arg3:int=0):void{
		var message:String;
		var bookmark = _arg1;
		var offset = _arg2;
		var prefetch = _arg3;
		checkValid();
		if (view.length == 0){
			currentIndex = AFTER_LAST_INDEX;
			setCurrent(null, false);
			return;
		};
		var newIndex:int = currentIndex;
		if (bookmark == CursorBookmark.FIRST){
			newIndex = 0;
		} else {
			if (bookmark == CursorBookmark.LAST){
				newIndex = (view.length - 1);
			} else {
				if (bookmark != CursorBookmark.CURRENT){
					try {
						newIndex = ListCollectionView(view).getBookmarkIndex(bookmark);
						if (newIndex < 0){
							setCurrent(null);
							message = resourceManager.getString("collections", "bookmarkInvalid");
							throw (new CursorError(message));
						};
					} catch(bmError:CollectionViewError) {
						message = resourceManager.getString("collections", "bookmarkInvalid");
						throw (new CursorError(message));
					};
				};
			};
		};
		newIndex = (newIndex + offset);
		var newCurrent:Object;
		if (newIndex >= view.length){
			currentIndex = AFTER_LAST_INDEX;
		} else {
			if (newIndex < 0){
				currentIndex = BEFORE_FIRST_INDEX;
			} else {
				newCurrent = ListCollectionView(view).getItemAt(newIndex, prefetch);
				currentIndex = newIndex;
			};
		};
		setCurrent(newCurrent);
	}
	public function insert(_arg1:Object):void{
		var _local2:int;
		var _local3:String;
		if (afterLast){
			_local2 = view.length;
		} else {
			if (beforeFirst){
				if (view.length > 0){
					_local3 = resourceManager.getString("collections", "invalidInsert");
					throw (new CursorError(_local3));
				};
				_local2 = 0;
			} else {
				_local2 = currentIndex;
			};
		};
		ListCollectionView(view).addItemAt(_arg1, _local2);
	}
	public function get afterLast():Boolean{
		checkValid();
		return ((((currentIndex == AFTER_LAST_INDEX)) || ((view.length == 0))));
	}
	private function checkValid():void{
		var _local1:String;
		if (invalid){
			_local1 = resourceManager.getString("collections", "invalidCursor");
			throw (new CursorError(_local1));
		};
	}
	private function collectionEventHandler(_arg1:CollectionEvent):void{
		var event = _arg1;
		switch (event.kind){
			case CollectionEventKind.ADD:
				if (event.location <= currentIndex){
					currentIndex = (currentIndex + event.items.length);
				};
				break;
			case CollectionEventKind.REMOVE:
				if (event.location < currentIndex){
					currentIndex = (currentIndex - event.items.length);
				} else {
					if (event.location == currentIndex){
						if (currentIndex < view.length){
							try {
								setCurrent(ListCollectionView(view).getItemAt(currentIndex));
							} catch(error:ItemPendingError) {
								setCurrent(null, false);
							};
						} else {
							currentIndex = AFTER_LAST_INDEX;
							setCurrent(null);
						};
					};
				};
				break;
			case CollectionEventKind.MOVE:
				if (event.oldLocation == currentIndex){
					currentIndex = event.location;
				} else {
					if (event.oldLocation < currentIndex){
						currentIndex = (currentIndex - event.items.length);
					};
					if (event.location <= currentIndex){
						currentIndex = (currentIndex + event.items.length);
					};
				};
				break;
			case CollectionEventKind.REFRESH:
				if (!((beforeFirst) || (afterLast))){
					try {
						currentIndex = ListCollectionView(view).getItemIndex(currentValue);
					} catch(e:SortError) {
						if (ListCollectionView(view).sort){
							currentIndex = ListCollectionView(view).getLocalItemIndex(currentValue);
						};
					};
					if (currentIndex == -1){
						setCurrent(null);
					};
				};
				break;
			case CollectionEventKind.REPLACE:
				if (event.location == currentIndex){
					try {
						setCurrent(ListCollectionView(view).getItemAt(currentIndex));
					} catch(error:ItemPendingError) {
						setCurrent(null, false);
					};
				};
				break;
			case CollectionEventKind.RESET:
				currentIndex = BEFORE_FIRST_INDEX;
				setCurrent(null);
				break;
		};
	}
	public function moveNext():Boolean{
		if (afterLast){
			return (false);
		};
		var _local1:int = (beforeFirst) ? 0 : (currentIndex + 1);
		if (_local1 >= view.length){
			_local1 = AFTER_LAST_INDEX;
			setCurrent(null);
		} else {
			setCurrent(ListCollectionView(view).getItemAt(_local1));
		};
		currentIndex = _local1;
		return (!(afterLast));
	}
	public function get view():ICollectionView{
		checkValid();
		return (_view);
	}
	public function movePrevious():Boolean{
		if (beforeFirst){
			return (false);
		};
		var _local1:int = (afterLast) ? (view.length - 1) : (currentIndex - 1);
		if (_local1 == -1){
			_local1 = BEFORE_FIRST_INDEX;
			setCurrent(null);
		} else {
			setCurrent(ListCollectionView(view).getItemAt(_local1));
		};
		currentIndex = _local1;
		return (!(beforeFirst));
	}
	public function findLast(_arg1:Object):Boolean{
		var index:int;
		var values = _arg1;
		checkValid();
		var lcView:ListCollectionView = ListCollectionView(view);
		try {
			index = lcView.findItem(values, Sort.LAST_INDEX_MODE);
		} catch(sortError:SortError) {
			throw (new CursorError(sortError.message));
		};
		if (index > -1){
			currentIndex = index;
			setCurrent(lcView.getItemAt(currentIndex));
		};
		return ((index > -1));
	}
	public function get beforeFirst():Boolean{
		checkValid();
		return ((((currentIndex == BEFORE_FIRST_INDEX)) || ((view.length == 0))));
	}
	public function get bookmark():CursorBookmark{
		checkValid();
		if ((((view.length == 0)) || (beforeFirst))){
			return (CursorBookmark.FIRST);
		};
		if (afterLast){
			return (CursorBookmark.LAST);
		};
		return (ListCollectionView(view).getBookmark(currentIndex));
	}
	public function findFirst(_arg1:Object):Boolean{
		var index:int;
		var values = _arg1;
		checkValid();
		var lcView:ListCollectionView = ListCollectionView(view);
		try {
			index = lcView.findItem(values, Sort.FIRST_INDEX_MODE);
		} catch(sortError:SortError) {
			throw (new CursorError(sortError.message));
		};
		if (index > -1){
			currentIndex = index;
			setCurrent(lcView.getItemAt(currentIndex));
		};
		return ((index > -1));
	}
	public function get current():Object{
		checkValid();
		return (currentValue);
	}

}

****************

//Sort (mx.collections.Sort)
package mx.collections {
	import flash.events.*;
	import mx.resources.*;
	import mx.utils.*;
	import mx.collections.errors.*;

	public class Sort extends EventDispatcher {

		private var noFieldsDescending:Boolean;// = false
		private var usingCustomCompareFunction:Boolean;
		private var defaultEmptyField:SortField;
		private var _fields:Array;
		private var _compareFunction:Function;
		private var _unique:Boolean;
		private var fieldList:Array;
		private var resourceManager:IResourceManager;

		public static const ANY_INDEX_MODE:String = "any";
		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const LAST_INDEX_MODE:String = "last";
		public static const FIRST_INDEX_MODE:String = "first";

		public function Sort(){
			resourceManager = ResourceManager.getInstance();
			fieldList = [];
			super();
		}
		public function get unique():Boolean{
			return (_unique);
		}
		public function get compareFunction():Function{
			return ((usingCustomCompareFunction) ? _compareFunction : internalCompare);
		}
		public function set unique(_arg1:Boolean):void{
			_unique = _arg1;
		}
		public function sort(_arg1:Array):void{
			var fixedCompareFunction:Function;
			var message:String;
			var uniqueRet1:Object;
			var fields:Array;
			var i:int;
			var sortArgs:Object;
			var uniqueRet2:Object;
			var items = _arg1;
			if (((!(items)) || ((items.length <= 1)))){
				return;
			};
			if (usingCustomCompareFunction){
				fixedCompareFunction = function (_arg1:Object, _arg2:Object):int{
					return (compareFunction(_arg1, _arg2, _fields));
				};
				if (unique){
					uniqueRet1 = items.sort(fixedCompareFunction, Array.UNIQUESORT);
					if (uniqueRet1 == 0){
						message = resourceManager.getString("collections", "nonUnique");
						throw (new SortError(message));
					};
				} else {
					items.sort(fixedCompareFunction);
				};
			} else {
				fields = this.fields;
				if (((fields) && ((fields.length > 0)))){
					sortArgs = initSortFields(items[0], true);
					if (unique){
						if (((sortArgs) && ((fields.length == 1)))){
							uniqueRet2 = items.sortOn(sortArgs.fields[0], (sortArgs.options[0] | Array.UNIQUESORT));
						} else {
							uniqueRet2 = items.sort(internalCompare, Array.UNIQUESORT);
						};
						if (uniqueRet2 == 0){
							message = resourceManager.getString("collections", "nonUnique");
							throw (new SortError(message));
						};
					} else {
						if (sortArgs){
							items.sortOn(sortArgs.fields, sortArgs.options);
						} else {
							items.sort(internalCompare);
						};
					};
				} else {
					items.sort(internalCompare);
				};
			};
		}
		public function propertyAffectsSort(_arg1:String):Boolean{
			var _local3:SortField;
			if (((usingCustomCompareFunction) || (!(fields)))){
				return (true);
			};
			var _local2:int;
			while (_local2 < fields.length) {
				_local3 = fields[_local2];
				if ((((_local3.name == _arg1)) || (_local3.usingCustomCompareFunction))){
					return (true);
				};
				_local2++;
			};
			return (false);
		}
		private function internalCompare(_arg1:Object, _arg2:Object, _arg3:Array=null):int{
			var _local5:int;
			var _local6:int;
			var _local7:SortField;
			var _local4:int;
			if (!_fields){
				_local4 = noFieldsCompare(_arg1, _arg2);
			} else {
				_local5 = 0;
				_local6 = (_arg3) ? _arg3.length : _fields.length;
				while ((((_local4 == 0)) && ((_local5 < _local6)))) {
					_local7 = SortField(_fields[_local5]);
					_local4 = _local7.internalCompare(_arg1, _arg2);
					_local5++;
				};
			};
			return (_local4);
		}
		public function reverse():void{
			var _local1:int;
			if (fields){
				_local1 = 0;
				while (_local1 < fields.length) {
					SortField(fields[_local1]).reverse();
					_local1++;
				};
			};
			noFieldsDescending = !(noFieldsDescending);
		}
		private function noFieldsCompare(_arg1:Object, _arg2:Object, _arg3:Array=null):int{
			var message:String;
			var a = _arg1;
			var b = _arg2;
			var fields = _arg3;
			if (!defaultEmptyField){
				defaultEmptyField = new SortField();
				try {
					defaultEmptyField.initCompare(a);
				} catch(e:SortError) {
					message = resourceManager.getString("collections", "noComparator", [a]);
					throw (new SortError(message));
				};
			};
			var result:int = defaultEmptyField.compareFunction(a, b);
			if (noFieldsDescending){
				result = (result * -1);
			};
			return (result);
		}
		public function findItem(_arg1:Array, _arg2:Object, _arg3:String, _arg4:Boolean=false, _arg5:Function=null):int{
			var compareForFind:Function;
			var fieldsForCompare:Array;
			var message:String;
			var index:int;
			var fieldName:String;
			var hadPreviousFieldName:Boolean;
			var i:int;
			var hasFieldName:Boolean;
			var objIndex:int;
			var match:Boolean;
			var prevCompare:int;
			var nextCompare:int;
			var items = _arg1;
			var values = _arg2;
			var mode = _arg3;
			var returnInsertionIndex = _arg4;
			var compareFunction = _arg5;
			if (!items){
				message = resourceManager.getString("collections", "noItems");
				throw (new SortError(message));
			};
			if (items.length == 0){
				return ((returnInsertionIndex) ? 1 : -1);
			};
			if (compareFunction == null){
				compareForFind = this.compareFunction;
				if (((values) && ((fieldList.length > 0)))){
					fieldsForCompare = [];
					hadPreviousFieldName = true;
					i = 0;
					while (i < fieldList.length) {
						fieldName = fieldList[i];
						if (fieldName){
							try {
								hasFieldName = !((values[fieldName] === undefined));
							} catch(e:Error) {
								hasFieldName = false;
							};
							if (hasFieldName){
								if (!hadPreviousFieldName){
									message = resourceManager.getString("collections", "findCondition", [fieldName]);
									throw (new SortError(message));
								};
								fieldsForCompare.push(fieldName);
							} else {
								hadPreviousFieldName = false;
							};
						} else {
							fieldsForCompare.push(null);
						};
						i = (i + 1);
					};
					if (fieldsForCompare.length == 0){
						message = resourceManager.getString("collections", "findRestriction");
						throw (new SortError(message));
					};
					try {
						initSortFields(items[0]);
					} catch(initSortError:SortError) {
					};
				};
			} else {
				compareForFind = compareFunction;
			};
			var found:Boolean;
			var objFound:Boolean;
			index = 0;
			var lowerBound:int;
			var upperBound:int = (items.length - 1);
			var obj:Object;
			var direction = 1;
			while (((!(objFound)) && ((lowerBound <= upperBound)))) {
				index = Math.round(((lowerBound + upperBound) / 2));
				obj = items[index];
				direction = (fieldsForCompare) ? compareForFind(values, obj, fieldsForCompare) : compareForFind(values, obj);
				switch (direction){
					case -1:
						upperBound = (index - 1);
						break;
					case 0:
						objFound = true;
						switch (mode){
							case ANY_INDEX_MODE:
								found = true;
								break;
							case FIRST_INDEX_MODE:
								found = (index == lowerBound);
								objIndex = (index - 1);
								match = true;
								while (((((match) && (!(found)))) && ((objIndex >= lowerBound)))) {
									obj = items[objIndex];
									prevCompare = (fieldsForCompare) ? compareForFind(values, obj, fieldsForCompare) : compareForFind(values, obj);
									match = (prevCompare == 0);
									if (((!(match)) || (((match) && ((objIndex == lowerBound)))))){
										found = true;
										index = (objIndex + (match) ? 0 : 1);
									};
									objIndex = (objIndex - 1);
								};
								break;
							case LAST_INDEX_MODE:
								found = (index == upperBound);
								objIndex = (index + 1);
								match = true;
								while (((((match) && (!(found)))) && ((objIndex <= upperBound)))) {
									obj = items[objIndex];
									nextCompare = (fieldsForCompare) ? compareForFind(values, obj, fieldsForCompare) : compareForFind(values, obj);
									match = (nextCompare == 0);
									if (((!(match)) || (((match) && ((objIndex == upperBound)))))){
										found = true;
										index = (objIndex - (match) ? 0 : 1);
									};
									objIndex = (objIndex + 1);
								};
								break;
							default:
								message = resourceManager.getString("collections", "unknownMode");
								throw (new SortError(message));
						};
						break;
					case 1:
						lowerBound = (index + 1);
						break;
				};
			};
			if (((!(found)) && (!(returnInsertionIndex)))){
				return (-1);
			};
			return (((direction)>0) ? (index + 1) : index);
		}
		private function initSortFields(_arg1:Object, _arg2:Boolean=false):Object{
			var _local4:int;
			var _local5:SortField;
			var _local6:int;
			var _local3:Object;
			_local4 = 0;
			while (_local4 < fields.length) {
				SortField(fields[_local4]).initCompare(_arg1);
				_local4++;
			};
			if (_arg2){
				_local3 = {fields:[], options:[]};
				_local4 = 0;
				while (_local4 < fields.length) {
					_local5 = fields[_local4];
					_local6 = _local5.getArraySortOnOptions();
					if (_local6 == -1){
						return (null);
					};
					_local3.fields.push(_local5.name);
					_local3.options.push(_local6);
					_local4++;
				};
			};
			return (_local3);
		}
		public function set fields(_arg1:Array):void{
			var _local2:SortField;
			var _local3:int;
			_fields = _arg1;
			fieldList = [];
			if (_fields){
				_local3 = 0;
				while (_local3 < _fields.length) {
					_local2 = SortField(_fields[_local3]);
					fieldList.push(_local2.name);
					_local3++;
				};
			};
			dispatchEvent(new Event("fieldsChanged"));
		}
		public function get fields():Array{
			return (_fields);
		}
		public function set compareFunction(_arg1:Function):void{
			_compareFunction = _arg1;
			usingCustomCompareFunction = !((_compareFunction == null));
		}
		override public function toString():String{
			return (ObjectUtil.toString(this));
		}

	}
}//package mx.collections 

****************

//SortField (mx.collections.SortField)
package mx.collections {
	import flash.events.*;
	import mx.resources.*;
	import mx.utils.*;
	import mx.collections.errors.*;

	public class SortField extends EventDispatcher {

		private var _caseInsensitive:Boolean;
		private var _numeric:Object;
		private var _descending:Boolean;
		private var _compareFunction:Function;
		private var _usingCustomCompareFunction:Boolean;
		private var _name:String;
		private var resourceManager:IResourceManager;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function SortField(_arg1:String=null, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:Object=null){
			resourceManager = ResourceManager.getInstance();
			super();
			_name = _arg1;
			_caseInsensitive = _arg2;
			_descending = _arg3;
			_numeric = _arg4;
			_compareFunction = stringCompare;
		}
		public function get caseInsensitive():Boolean{
			return (_caseInsensitive);
		}
		mx_internal function get usingCustomCompareFunction():Boolean{
			return (_usingCustomCompareFunction);
		}
		public function set caseInsensitive(_arg1:Boolean):void{
			if (_arg1 != _caseInsensitive){
				_caseInsensitive = _arg1;
				dispatchEvent(new Event("caseInsensitiveChanged"));
			};
		}
		public function get name():String{
			return (_name);
		}
		public function get numeric():Object{
			return (_numeric);
		}
		public function set name(_arg1:String):void{
			_name = _arg1;
			dispatchEvent(new Event("nameChanged"));
		}
		private function numericCompare(_arg1:Object, _arg2:Object):int{
			var fa:Number;
			var fb:Number;
			var a = _arg1;
			var b = _arg2;
			try {
				fa = ((_name == null)) ? Number(a) : Number(a[_name]);
			} catch(error:Error) {
			};
			try {
				fb = ((_name == null)) ? Number(b) : Number(b[_name]);
			} catch(error:Error) {
			};
			return (ObjectUtil.numericCompare(fa, fb));
		}
		public function set numeric(_arg1:Object):void{
			if (_numeric != _arg1){
				_numeric = _arg1;
				dispatchEvent(new Event("numericChanged"));
			};
		}
		private function stringCompare(_arg1:Object, _arg2:Object):int{
			var fa:String;
			var fb:String;
			var a = _arg1;
			var b = _arg2;
			try {
				fa = ((_name == null)) ? String(a) : String(a[_name]);
			} catch(error:Error) {
			};
			try {
				fb = ((_name == null)) ? String(b) : String(b[_name]);
			} catch(error:Error) {
			};
			return (ObjectUtil.stringCompare(fa, fb, _caseInsensitive));
		}
		public function get compareFunction():Function{
			return (_compareFunction);
		}
		public function reverse():void{
			descending = !(descending);
		}
		mx_internal function getArraySortOnOptions():int{
			if (((((((usingCustomCompareFunction) || ((name == null)))) || ((_compareFunction == xmlCompare)))) || ((_compareFunction == dateCompare)))){
				return (-1);
			};
			var _local1:int;
			if (caseInsensitive){
				_local1 = (_local1 | Array.CASEINSENSITIVE);
			};
			if (descending){
				_local1 = (_local1 | Array.DESCENDING);
			};
			if ((((numeric == true)) || ((_compareFunction == numericCompare)))){
				_local1 = (_local1 | Array.NUMERIC);
			};
			return (_local1);
		}
		private function dateCompare(_arg1:Object, _arg2:Object):int{
			var fa:Date;
			var fb:Date;
			var a = _arg1;
			var b = _arg2;
			try {
				fa = ((_name == null)) ? (a as Date) : (a[_name] as Date);
			} catch(error:Error) {
			};
			try {
				fb = ((_name == null)) ? (b as Date) : (b[_name] as Date);
			} catch(error:Error) {
			};
			return (ObjectUtil.dateCompare(fa, fb));
		}
		mx_internal function internalCompare(_arg1:Object, _arg2:Object):int{
			var _local3:int = compareFunction(_arg1, _arg2);
			if (descending){
				_local3 = (_local3 * -1);
			};
			return (_local3);
		}
		override public function toString():String{
			return (ObjectUtil.toString(this));
		}
		private function nullCompare(_arg1:Object, _arg2:Object):int{
			var value:Object;
			var left:Object;
			var right:Object;
			var message:String;
			var a = _arg1;
			var b = _arg2;
			var found:Boolean;
			if ((((a == null)) && ((b == null)))){
				return (0);
			};
			if (_name){
				try {
					left = a[_name];
				} catch(error:Error) {
				};
				try {
					right = b[_name];
				} catch(error:Error) {
				};
			};
			if ((((left == null)) && ((right == null)))){
				return (0);
			};
			if ((((left == null)) && (!(_name)))){
				left = a;
			};
			if ((((right == null)) && (!(_name)))){
				right = b;
			};
			var typeLeft = typeof(left);
			var typeRight = typeof(right);
			if ((((typeLeft == "string")) || ((typeRight == "string")))){
				found = true;
				_compareFunction = stringCompare;
			} else {
				if ((((typeLeft == "object")) || ((typeRight == "object")))){
					if ((((left is Date)) || ((right is Date)))){
						found = true;
						_compareFunction = dateCompare;
					};
				} else {
					if ((((typeLeft == "xml")) || ((typeRight == "xml")))){
						found = true;
						_compareFunction = xmlCompare;
					} else {
						if ((((((((typeLeft == "number")) || ((typeRight == "number")))) || ((typeLeft == "boolean")))) || ((typeRight == "boolean")))){
							found = true;
							_compareFunction = numericCompare;
						};
					};
				};
			};
			if (found){
				return (_compareFunction(left, right));
			};
			message = resourceManager.getString("collections", "noComparatorSortField", [name]);
			throw (new SortError(message));
		}
		public function set descending(_arg1:Boolean):void{
			if (_descending != _arg1){
				_descending = _arg1;
				dispatchEvent(new Event("descendingChanged"));
			};
		}
		mx_internal function initCompare(_arg1:Object):void{
			var value:Object;
			var typ:String;
			var test:String;
			var obj = _arg1;
			if (!usingCustomCompareFunction){
				if (numeric == true){
					_compareFunction = numericCompare;
				} else {
					if (((caseInsensitive) || ((numeric == false)))){
						_compareFunction = stringCompare;
					} else {
						if (_name){
							try {
								value = obj[_name];
							} catch(error:Error) {
							};
						};
						if (value == null){
							value = obj;
						};
						typ = typeof(value);
						switch (typ){
							case "string":
								_compareFunction = stringCompare;
								break;
							case "object":
								if ((value is Date)){
									_compareFunction = dateCompare;
								} else {
									_compareFunction = stringCompare;
									try {
										test = value.toString();
									} catch(error2:Error) {
									};
									if (((!(test)) || ((test == "[object Object]")))){
										_compareFunction = nullCompare;
									};
								};
								break;
							case "xml":
								_compareFunction = xmlCompare;
								break;
							case "boolean":
							case "number":
								_compareFunction = numericCompare;
								break;
						};
					};
				};
			};
		}
		public function get descending():Boolean{
			return (_descending);
		}
		public function set compareFunction(_arg1:Function):void{
			_compareFunction = _arg1;
			_usingCustomCompareFunction = !((_arg1 == null));
		}
		private function xmlCompare(_arg1:Object, _arg2:Object):int{
			var sa:String;
			var sb:String;
			var a = _arg1;
			var b = _arg2;
			try {
				sa = ((_name == null)) ? a.toString() : a[_name].toString();
			} catch(error:Error) {
			};
			try {
				sb = ((_name == null)) ? b.toString() : b[_name].toString();
			} catch(error:Error) {
			};
			if (numeric == true){
				return (ObjectUtil.numericCompare(parseFloat(sa), parseFloat(sb)));
			};
			return (ObjectUtil.stringCompare(sa, sb, _caseInsensitive));
		}

	}
}//package mx.collections 

****************

//ConstraintError (mx.containers.errors.ConstraintError)
package mx.containers.errors {

	public class ConstraintError extends Error {

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function ConstraintError(_arg1:String){
			super(_arg1);
		}
	}
}//package mx.containers.errors 

****************

//ApplicationLayout (mx.containers.utilityClasses.ApplicationLayout)
package mx.containers.utilityClasses {
	import mx.core.*;

	public class ApplicationLayout extends BoxLayout {

		mx_internal static const VERSION:String = "3.5.0.12683";

		override public function updateDisplayList(_arg1:Number, _arg2:Number):void{
			var _local4:Number;
			var _local5:Number;
			var _local6:Number;
			var _local7:Number;
			var _local8:int;
			var _local9:int;
			var _local10:IFlexDisplayObject;
			super.updateDisplayList(_arg1, _arg2);
			var _local3:Container = super.target;
			if (((((_local3.horizontalScrollBar) && ((getHorizontalAlignValue() > 0)))) || (((_local3.verticalScrollBar) && ((getVerticalAlignValue() > 0)))))){
				_local4 = _local3.getStyle("paddingLeft");
				_local5 = _local3.getStyle("paddingTop");
				_local6 = 0;
				_local7 = 0;
				_local8 = _local3.numChildren;
				_local9 = 0;
				while (_local9 < _local8) {
					_local10 = IFlexDisplayObject(_local3.getChildAt(_local9));
					if (_local10.x < _local4){
						_local6 = Math.max(_local6, (_local4 - _local10.x));
					};
					if (_local10.y < _local5){
						_local7 = Math.max(_local7, (_local5 - _local10.y));
					};
					_local9++;
				};
				if (((!((_local6 == 0))) || (!((_local7 == 0))))){
					_local9 = 0;
					while (_local9 < _local8) {
						_local10 = IFlexDisplayObject(_local3.getChildAt(_local9));
						IFlexDisplayObject(_local3.getChildAt(_local9)).move((_local10.x + _local6), (_local10.y + _local7));
						_local9++;
					};
				};
			};
		}

	}
}//package mx.containers.utilityClasses 

****************

//BoxLayout (mx.containers.utilityClasses.BoxLayout)
package mx.containers.utilityClasses {
	import mx.core.*;
	import mx.controls.scrollClasses.*;
	import mx.containers.*;

	public class BoxLayout extends Layout {

		public var direction:String;// = "vertical"

		mx_internal static const VERSION:String = "3.5.0.12683";

		private function isVertical():Boolean{
			return (!((direction == BoxDirection.HORIZONTAL)));
		}
		mx_internal function getHorizontalAlignValue():Number{
			var _local1:String = target.getStyle("horizontalAlign");
			if (_local1 == "center"){
				return (0.5);
			};
			if (_local1 == "right"){
				return (1);
			};
			return (0);
		}
		override public function updateDisplayList(_arg1:Number, _arg2:Number):void{
			var _local16:Number;
			var _local17:int;
			var _local18:Number;
			var _local19:Number;
			var _local20:Number;
			var _local21:int;
			var _local22:IUIComponent;
			var _local23:IUIComponent;
			var _local24:Number;
			var _local25:Number;
			var _local26:Number;
			var _local27:Number;
			var _local3:Container = super.target;
			var _local4:int = _local3.numChildren;
			if (_local4 == 0){
				return;
			};
			var _local5:EdgeMetrics = _local3.viewMetricsAndPadding;
			var _local6:Number = _local3.getStyle("paddingLeft");
			var _local7:Number = _local3.getStyle("paddingTop");
			var _local8:Number = getHorizontalAlignValue();
			var _local9:Number = getVerticalAlignValue();
			var _local10:Number = ((((_local3.scaleX > 0)) && (!((_local3.scaleX == 1))))) ? (_local3.minWidth / Math.abs(_local3.scaleX)) : _local3.minWidth;
			var _local11:Number = ((((_local3.scaleY > 0)) && (!((_local3.scaleY == 1))))) ? (_local3.minHeight / Math.abs(_local3.scaleY)) : _local3.minHeight;
			var _local12:Number = ((Math.max(_arg1, _local10) - _local5.right) - _local5.left);
			var _local13:Number = ((Math.max(_arg2, _local11) - _local5.bottom) - _local5.top);
			var _local14:ScrollBar = _local3.horizontalScrollBar;
			var _local15:ScrollBar = _local3.verticalScrollBar;
			if (_local4 == 1){
				_local23 = IUIComponent(_local3.getChildAt(0));
				_local24 = _local23.percentWidth;
				_local25 = _local23.percentHeight;
				if (_local24){
					_local26 = Math.max(_local23.minWidth, Math.min(_local23.maxWidth, ((_local24)>=100) ? _local12 : ((_local12 * _local24) / 100)));
				} else {
					_local26 = _local23.getExplicitOrMeasuredWidth();
				};
				if (_local25){
					_local27 = Math.max(_local23.minHeight, Math.min(_local23.maxHeight, ((_local25)>=100) ? _local13 : ((_local13 * _local25) / 100)));
				} else {
					_local27 = _local23.getExplicitOrMeasuredHeight();
				};
				if ((((_local23.scaleX == 1)) && ((_local23.scaleY == 1)))){
					_local23.setActualSize(Math.floor(_local26), Math.floor(_local27));
				} else {
					_local23.setActualSize(_local26, _local27);
				};
				if (((!((_local15 == null))) && ((_local3.verticalScrollPolicy == ScrollPolicy.AUTO)))){
					_local12 = (_local12 + _local15.minWidth);
				};
				if (((!((_local14 == null))) && ((_local3.horizontalScrollPolicy == ScrollPolicy.AUTO)))){
					_local13 = (_local13 + _local14.minHeight);
				};
				_local20 = (((_local12 - _local23.width) * _local8) + _local6);
				_local19 = (((_local13 - _local23.height) * _local9) + _local7);
				_local23.move(Math.floor(_local20), Math.floor(_local19));
			} else {
				if (isVertical()){
					_local16 = _local3.getStyle("verticalGap");
					_local17 = _local4;
					_local21 = 0;
					while (_local21 < _local4) {
						if (!IUIComponent(_local3.getChildAt(_local21)).includeInLayout){
							_local17--;
						};
						_local21++;
					};
					_local18 = Flex.flexChildHeightsProportionally(_local3, (_local13 - ((_local17 - 1) * _local16)), _local12);
					if (((!((_local14 == null))) && ((_local3.horizontalScrollPolicy == ScrollPolicy.AUTO)))){
						_local18 = (_local18 + _local14.minHeight);
					};
					if (((!((_local15 == null))) && ((_local3.verticalScrollPolicy == ScrollPolicy.AUTO)))){
						_local12 = (_local12 + _local15.minWidth);
					};
					_local19 = (_local7 + (_local18 * _local9));
					_local21 = 0;
					while (_local21 < _local4) {
						_local22 = IUIComponent(_local3.getChildAt(_local21));
						_local20 = (((_local12 - _local22.width) * _local8) + _local6);
						_local22.move(Math.floor(_local20), Math.floor(_local19));
						if (_local22.includeInLayout){
							_local19 = (_local19 + (_local22.height + _local16));
						};
						_local21++;
					};
				} else {
					_local16 = _local3.getStyle("horizontalGap");
					_local17 = _local4;
					_local21 = 0;
					while (_local21 < _local4) {
						if (!IUIComponent(_local3.getChildAt(_local21)).includeInLayout){
							_local17--;
						};
						_local21++;
					};
					_local18 = Flex.flexChildWidthsProportionally(_local3, (_local12 - ((_local17 - 1) * _local16)), _local13);
					if (((!((_local14 == null))) && ((_local3.horizontalScrollPolicy == ScrollPolicy.AUTO)))){
						_local13 = (_local13 + _local14.minHeight);
					};
					if (((!((_local15 == null))) && ((_local3.verticalScrollPolicy == ScrollPolicy.AUTO)))){
						_local18 = (_local18 + _local15.minWidth);
					};
					_local20 = (_local6 + (_local18 * _local8));
					_local21 = 0;
					while (_local21 < _local4) {
						_local22 = IUIComponent(_local3.getChildAt(_local21));
						_local19 = (((_local13 - _local22.height) * _local9) + _local7);
						_local22.move(Math.floor(_local20), Math.floor(_local19));
						if (_local22.includeInLayout){
							_local20 = (_local20 + (_local22.width + _local16));
						};
						_local21++;
					};
				};
			};
		}
		mx_internal function getVerticalAlignValue():Number{
			var _local1:String = target.getStyle("verticalAlign");
			if (_local1 == "middle"){
				return (0.5);
			};
			if (_local1 == "bottom"){
				return (1);
			};
			return (0);
		}
		mx_internal function heightPadding(_arg1:Number):Number{
			var _local2:EdgeMetrics = target.viewMetricsAndPadding;
			var _local3:Number = (_local2.top + _local2.bottom);
			if ((((_arg1 > 1)) && (isVertical()))){
				_local3 = (_local3 + (target.getStyle("verticalGap") * (_arg1 - 1)));
			};
			return (_local3);
		}
		mx_internal function widthPadding(_arg1:Number):Number{
			var _local2:EdgeMetrics = target.viewMetricsAndPadding;
			var _local3:Number = (_local2.left + _local2.right);
			if ((((_arg1 > 1)) && ((isVertical() == false)))){
				_local3 = (_local3 + (target.getStyle("horizontalGap") * (_arg1 - 1)));
			};
			return (_local3);
		}
		override public function measure():void{
			var _local1:Container;
			var _local10:Number;
			var _local11:Number;
			var _local12:IUIComponent;
			var _local13:Number;
			var _local14:Number;
			_local1 = super.target;
			var _local2:Boolean = isVertical();
			var _local3:Number = 0;
			var _local4:Number = 0;
			var _local5:Number = 0;
			var _local6:Number = 0;
			var _local7:int = _local1.numChildren;
			var _local8:int = _local7;
			var _local9:int;
			while (_local9 < _local7) {
				_local12 = IUIComponent(_local1.getChildAt(_local9));
				if (!_local12.includeInLayout){
					_local8--;
				} else {
					_local13 = _local12.getExplicitOrMeasuredWidth();
					_local14 = _local12.getExplicitOrMeasuredHeight();
					if (_local2){
						_local3 = Math.max((isNaN(_local12.percentWidth)) ? _local13 : _local12.minWidth, _local3);
						_local5 = Math.max(_local13, _local5);
						_local4 = (_local4 + (isNaN(_local12.percentHeight)) ? _local14 : _local12.minHeight);
						_local6 = (_local6 + _local14);
					} else {
						_local3 = (_local3 + (isNaN(_local12.percentWidth)) ? _local13 : _local12.minWidth);
						_local5 = (_local5 + _local13);
						_local4 = Math.max((isNaN(_local12.percentHeight)) ? _local14 : _local12.minHeight, _local4);
						_local6 = Math.max(_local14, _local6);
					};
				};
				_local9++;
			};
			_local10 = widthPadding(_local8);
			_local11 = heightPadding(_local8);
			_local1.measuredMinWidth = (_local3 + _local10);
			_local1.measuredMinHeight = (_local4 + _local11);
			_local1.measuredWidth = (_local5 + _local10);
			_local1.measuredHeight = (_local6 + _local11);
		}

	}
}//package mx.containers.utilityClasses 

****************

//CanvasLayout (mx.containers.utilityClasses.CanvasLayout)
package mx.containers.utilityClasses {
	import mx.core.*;
	import mx.events.*;
	import flash.display.*;
	import flash.geom.*;
	import flash.utils.*;
	import mx.containers.errors.*;

	public class CanvasLayout extends Layout {

		private var colSpanChildren:Array;
		private var constraintRegionsInUse:Boolean;// = false
		private var rowSpanChildren:Array;
		private var constraintCache:Dictionary;
		private var _contentArea:Rectangle;

		mx_internal static const VERSION:String = "3.5.0.12683";

		private static var r:Rectangle = new Rectangle();

		public function CanvasLayout(){
			colSpanChildren = [];
			rowSpanChildren = [];
			constraintCache = new Dictionary(true);
			super();
		}
		private function parseConstraints(_arg1:IUIComponent=null):ChildConstraintInfo{
			var _local3:Number;
			var _local4:Number;
			var _local5:Number;
			var _local6:Number;
			var _local7:Number;
			var _local8:Number;
			var _local9:Number;
			var _local10:String;
			var _local11:String;
			var _local12:String;
			var _local13:String;
			var _local14:String;
			var _local15:String;
			var _local16:String;
			var _local17:Array;
			var _local18:int;
			var _local30:ConstraintColumn;
			var _local31:Boolean;
			var _local32:ConstraintRow;
			var _local2:LayoutConstraints = getLayoutConstraints(_arg1);
			if (!_local2){
				return (null);
			};
			while (true) {
				_local17 = parseConstraintExp(_local2.left);
				if (!_local17){
					_local3 = NaN;
				} else {
					if (_local17.length == 1){
						_local3 = Number(_local17[0]);
					} else {
						_local10 = _local17[0];
						_local3 = _local17[1];
					};
				};
				_local17 = parseConstraintExp(_local2.right);
				if (!_local17){
					_local4 = NaN;
				} else {
					if (_local17.length == 1){
						_local4 = Number(_local17[0]);
					} else {
						_local11 = _local17[0];
						_local4 = _local17[1];
					};
				};
				_local17 = parseConstraintExp(_local2.horizontalCenter);
				if (!_local17){
					_local5 = NaN;
				} else {
					if (_local17.length == 1){
						_local5 = Number(_local17[0]);
					} else {
						_local12 = _local17[0];
						_local5 = _local17[1];
					};
				};
				_local17 = parseConstraintExp(_local2.top);
				if (!_local17){
					_local6 = NaN;
				} else {
					if (_local17.length == 1){
						_local6 = Number(_local17[0]);
					} else {
						_local13 = _local17[0];
						_local6 = _local17[1];
					};
				};
				_local17 = parseConstraintExp(_local2.bottom);
				if (!_local17){
					_local7 = NaN;
				} else {
					if (_local17.length == 1){
						_local7 = Number(_local17[0]);
					} else {
						_local14 = _local17[0];
						_local7 = _local17[1];
					};
				};
				_local17 = parseConstraintExp(_local2.verticalCenter);
				if (!_local17){
					_local8 = NaN;
				} else {
					if (_local17.length == 1){
						_local8 = Number(_local17[0]);
					} else {
						_local15 = _local17[0];
						_local8 = _local17[1];
					};
				};
				_local17 = parseConstraintExp(_local2.baseline);
				if (!_local17){
					_local9 = NaN;
				} else {
					if (_local17.length == 1){
						_local9 = Number(_local17[0]);
					} else {
						_local16 = _local17[0];
						_local9 = _local17[1];
					};
				};
				break;
			};
			var _local19:ContentColumnChild = new ContentColumnChild();
			var _local20:Boolean;
			var _local21:Number = 0;
			var _local22:Number = 0;
			var _local23:Number = 0;
			_local18 = 0;
			while (_local18 < IConstraintLayout(target).constraintColumns.length) {
				_local30 = IConstraintLayout(target).constraintColumns[_local18];
				if (_local30.mx_internal::contentSize){
					if (_local30.id == _local10){
						_local19.leftCol = _local30;
						_local19.leftOffset = _local3;
						_local21 = _local18;
						_local19.left = _local21;
						_local20 = true;
					};
					if (_local30.id == _local11){
						_local19.rightCol = _local30;
						_local19.rightOffset = _local4;
						_local22 = (_local18 + 1);
						_local19.right = _local22;
						_local20 = true;
					};
					if (_local30.id == _local12){
						_local19.hcCol = _local30;
						_local19.hcOffset = _local5;
						_local23 = (_local18 + 1);
						_local19.hc = _local23;
						_local20 = true;
					};
				};
				_local18++;
			};
			if (_local20){
				_local19.child = _arg1;
				if (((((((_local19.leftCol) && (!(_local19.rightCol)))) || (((_local19.rightCol) && (!(_local19.leftCol)))))) || (_local19.hcCol))){
					_local19.span = 1;
				} else {
					_local19.span = (_local22 - _local21);
				};
				_local31 = false;
				_local18 = 0;
				while (_local18 < colSpanChildren.length) {
					if (_local19.child == colSpanChildren[_local18].child){
						_local31 = true;
						break;
					};
					_local18++;
				};
				if (!_local31){
					colSpanChildren.push(_local19);
				};
			};
			_local20 = false;
			var _local24:ContentRowChild = new ContentRowChild();
			var _local25:Number = 0;
			var _local26:Number = 0;
			var _local27:Number = 0;
			var _local28:Number = 0;
			_local18 = 0;
			while (_local18 < IConstraintLayout(target).constraintRows.length) {
				_local32 = IConstraintLayout(target).constraintRows[_local18];
				if (_local32.mx_internal::contentSize){
					if (_local32.id == _local13){
						_local24.topRow = _local32;
						_local24.topOffset = _local6;
						_local25 = _local18;
						_local24.top = _local25;
						_local20 = true;
					};
					if (_local32.id == _local14){
						_local24.bottomRow = _local32;
						_local24.bottomOffset = _local7;
						_local26 = (_local18 + 1);
						_local24.bottom = _local26;
						_local20 = true;
					};
					if (_local32.id == _local15){
						_local24.vcRow = _local32;
						_local24.vcOffset = _local8;
						_local27 = (_local18 + 1);
						_local24.vc = _local27;
						_local20 = true;
					};
					if (_local32.id == _local16){
						_local24.baselineRow = _local32;
						_local24.baselineOffset = _local9;
						_local28 = (_local18 + 1);
						_local24.baseline = _local28;
						_local20 = true;
					};
				};
				_local18++;
			};
			if (_local20){
				_local24.child = _arg1;
				if (((((((((_local24.topRow) && (!(_local24.bottomRow)))) || (((_local24.bottomRow) && (!(_local24.topRow)))))) || (_local24.vcRow))) || (_local24.baselineRow))){
					_local24.span = 1;
				} else {
					_local24.span = (_local26 - _local25);
				};
				_local31 = false;
				_local18 = 0;
				while (_local18 < rowSpanChildren.length) {
					if (_local24.child == rowSpanChildren[_local18].child){
						_local31 = true;
						break;
					};
					_local18++;
				};
				if (!_local31){
					rowSpanChildren.push(_local24);
				};
			};
			var _local29:ChildConstraintInfo = new ChildConstraintInfo(_local3, _local4, _local5, _local6, _local7, _local8, _local9, _local10, _local11, _local12, _local13, _local14, _local15, _local16);
			constraintCache[_arg1] = _local29;
			return (_local29);
		}
		private function bound(_arg1:Number, _arg2:Number, _arg3:Number):Number{
			if (_arg1 < _arg2){
				_arg1 = _arg2;
			} else {
				if (_arg1 > _arg3){
					_arg1 = _arg3;
				} else {
					_arg1 = Math.floor(_arg1);
				};
			};
			return (_arg1);
		}
		private function shareRowSpace(_arg1:ContentRowChild, _arg2:Number):Number{
			var _local11:Number;
			var _local12:Number;
			var _local13:Number;
			var _local3:ConstraintRow = _arg1.topRow;
			var _local4:ConstraintRow = _arg1.bottomRow;
			var _local5:IUIComponent = _arg1.child;
			var _local6:Number = 0;
			var _local7:Number = 0;
			var _local8:Number = (_arg1.topOffset) ? _arg1.topOffset : 0;
			var _local9:Number = (_arg1.bottomOffset) ? _arg1.bottomOffset : 0;
			if (((_local3) && (_local3.height))){
				_local6 = (_local6 + _local3.height);
			} else {
				if (((_local4) && (!(_local3)))){
					_local3 = IConstraintLayout(target).constraintRows[(_arg1.bottom - 2)];
					if (((_local3) && (_local3.height))){
						_local6 = (_local6 + _local3.height);
					};
				};
			};
			if (((_local4) && (_local4.height))){
				_local7 = (_local7 + _local4.height);
			} else {
				if (((_local3) && (!(_local4)))){
					_local4 = IConstraintLayout(target).constraintRows[(_arg1.top + 1)];
					if (((_local4) && (_local4.height))){
						_local7 = (_local7 + _local4.height);
					};
				};
			};
			if (((_local3) && (isNaN(_local3.height)))){
				_local3.setActualHeight(Math.max(0, _local3.maxHeight));
			};
			if (((_local4) && (isNaN(_local4.height)))){
				_local4.setActualHeight(Math.max(0, _local4.height));
			};
			var _local10:Number = _local5.getExplicitOrMeasuredHeight();
			if (_local10){
				if (!_arg1.topRow){
					if (_local10 > _local6){
						_local12 = ((_local10 - _local6) + _local9);
					} else {
						_local12 = (_local10 + _local9);
					};
				};
				if (!_arg1.bottomRow){
					if (_local10 > _local7){
						_local11 = ((_local10 - _local7) + _local8);
					} else {
						_local11 = (_local10 + _local8);
					};
				};
				if (((_arg1.topRow) && (_arg1.bottomRow))){
					_local13 = (_local10 / Number(_arg1.span));
					if ((_local13 + _local8) < _local6){
						_local11 = _local6;
						_local12 = ((_local10 - (_local6 - _local8)) + _local9);
					} else {
						_local11 = (_local13 + _local8);
					};
					if ((_local13 + _local9) < _local7){
						_local12 = _local7;
						_local11 = ((_local10 - (_local7 - _local9)) + _local8);
					} else {
						_local12 = (_local13 + _local9);
					};
				};
				_local12 = bound(_local12, _local4.minHeight, _local4.maxHeight);
				_local4.setActualHeight(_local12);
				_arg2 = (_arg2 - _local12);
				_local11 = bound(_local11, _local3.minHeight, _local3.maxHeight);
				_local3.setActualHeight(_local11);
				_arg2 = (_arg2 - _local11);
			};
			return (_arg2);
		}
		private function parseConstraintExp(_arg1:String):Array{
			if (!_arg1){
				return (null);
			};
			var _local2:String = _arg1.replace(/:/g, " ");
			var _local3:Array = _local2.split(/\s+/);
			return (_local3);
		}
		private function measureColumnsAndRows():void{
			var _local3:int;
			var _local4:int;
			var _local13:ConstraintColumn;
			var _local14:ConstraintRow;
			var _local15:Number;
			var _local16:Number;
			var _local17:Number;
			var _local18:Number;
			var _local19:ContentColumnChild;
			var _local20:ContentRowChild;
			var _local1:Array = IConstraintLayout(target).constraintColumns;
			var _local2:Array = IConstraintLayout(target).constraintRows;
			if ((((!(_local2.length) > 0)) && ((!(_local1.length) > 0)))){
				constraintRegionsInUse = false;
				return;
			};
			constraintRegionsInUse = true;
			var _local5:Number = 0;
			var _local6:Number = 0;
			var _local7:EdgeMetrics = Container(target).viewMetrics;
			var _local8:Number = ((Container(target).width - _local7.left) - _local7.right);
			var _local9:Number = ((Container(target).height - _local7.top) - _local7.bottom);
			var _local10:Array = [];
			var _local11:Array = [];
			var _local12:Array = [];
			if (_local1.length > 0){
				_local3 = 0;
				while (_local3 < _local1.length) {
					_local13 = _local1[_local3];
					if (!isNaN(_local13.percentWidth)){
						_local11.push(_local13);
					} else {
						if (((!(isNaN(_local13.width))) && (!(_local13.mx_internal::contentSize)))){
							_local10.push(_local13);
						} else {
							_local12.push(_local13);
							_local13.mx_internal::contentSize = true;
						};
					};
					_local3++;
				};
				_local3 = 0;
				while (_local3 < _local10.length) {
					_local13 = ConstraintColumn(_local10[_local3]);
					_local8 = (_local8 - _local13.width);
					_local3++;
				};
				if (_local12.length > 0){
					if (colSpanChildren.length > 0){
						colSpanChildren.sortOn("span");
						_local4 = 0;
						while (_local4 < colSpanChildren.length) {
							_local19 = colSpanChildren[_local4];
							if (_local19.span == 1){
								if (_local19.hcCol){
									_local13 = ConstraintColumn(_local1[_local1.indexOf(_local19.hcCol)]);
								} else {
									if (_local19.leftCol){
										_local13 = ConstraintColumn(_local1[_local1.indexOf(_local19.leftCol)]);
									} else {
										if (_local19.rightCol){
											_local13 = ConstraintColumn(_local1[_local1.indexOf(_local19.rightCol)]);
										};
									};
								};
								_local16 = _local19.child.getExplicitOrMeasuredWidth();
								if (_local19.hcOffset){
									_local16 = (_local16 + _local19.hcOffset);
								} else {
									if (_local19.leftOffset){
										_local16 = (_local16 + _local19.leftOffset);
									};
									if (_local19.rightOffset){
										_local16 = (_local16 + _local19.rightOffset);
									};
								};
								if (!isNaN(_local13.width)){
									_local16 = Math.max(_local13.width, _local16);
								};
								_local16 = bound(_local16, _local13.minWidth, _local13.maxWidth);
								_local13.setActualWidth(_local16);
								_local8 = (_local8 - _local13.width);
							} else {
								_local8 = shareColumnSpace(_local19, _local8);
							};
							_local4++;
						};
						colSpanChildren = [];
					};
					_local3 = 0;
					while (_local3 < _local12.length) {
						_local13 = _local12[_local3];
						if (!_local13.width){
							_local16 = bound(0, _local13.minWidth, 0);
							_local13.setActualWidth(_local16);
						};
						_local3++;
					};
				};
				_local18 = _local8;
				_local3 = 0;
				while (_local3 < _local11.length) {
					_local13 = ConstraintColumn(_local11[_local3]);
					if (_local18 <= 0){
						_local16 = 0;
					} else {
						_local16 = Math.round(((_local18 * _local13.percentWidth) / 100));
					};
					_local16 = bound(_local16, _local13.minWidth, _local13.maxWidth);
					_local13.setActualWidth(_local16);
					_local8 = (_local8 - _local16);
					_local3++;
				};
				_local3 = 0;
				while (_local3 < _local1.length) {
					_local13 = ConstraintColumn(_local1[_local3]);
					_local13.x = _local5;
					_local5 = (_local5 + _local13.width);
					_local3++;
				};
			};
			_local10 = [];
			_local11 = [];
			_local12 = [];
			if (_local2.length > 0){
				_local3 = 0;
				while (_local3 < _local2.length) {
					_local14 = _local2[_local3];
					if (!isNaN(_local14.percentHeight)){
						_local11.push(_local14);
					} else {
						if (((!(isNaN(_local14.height))) && (!(_local14.mx_internal::contentSize)))){
							_local10.push(_local14);
						} else {
							_local12.push(_local14);
							_local14.mx_internal::contentSize = true;
						};
					};
					_local3++;
				};
				_local3 = 0;
				while (_local3 < _local10.length) {
					_local14 = ConstraintRow(_local10[_local3]);
					_local9 = (_local9 - _local14.height);
					_local3++;
				};
				if (_local12.length > 0){
					if (rowSpanChildren.length > 0){
						rowSpanChildren.sortOn("span");
						_local4 = 0;
						while (_local4 < rowSpanChildren.length) {
							_local20 = rowSpanChildren[_local4];
							if (_local20.span == 1){
								if (_local20.vcRow){
									_local14 = ConstraintRow(_local2[_local2.indexOf(_local20.vcRow)]);
								} else {
									if (_local20.baselineRow){
										_local14 = ConstraintRow(_local2[_local2.indexOf(_local20.baselineRow)]);
									} else {
										if (_local20.topRow){
											_local14 = ConstraintRow(_local2[_local2.indexOf(_local20.topRow)]);
										} else {
											if (_local20.bottomRow){
												_local14 = ConstraintRow(_local2[_local2.indexOf(_local20.bottomRow)]);
											};
										};
									};
								};
								_local17 = _local20.child.getExplicitOrMeasuredHeight();
								if (_local20.baselineOffset){
									_local17 = (_local17 + _local20.baselineOffset);
								} else {
									if (_local20.vcOffset){
										_local17 = (_local17 + _local20.vcOffset);
									} else {
										if (_local20.topOffset){
											_local17 = (_local17 + _local20.topOffset);
										};
										if (_local20.bottomOffset){
											_local17 = (_local17 + _local20.bottomOffset);
										};
									};
								};
								if (!isNaN(_local14.height)){
									_local17 = Math.max(_local14.height, _local17);
								};
								_local17 = bound(_local17, _local14.minHeight, _local14.maxHeight);
								_local14.setActualHeight(_local17);
								_local9 = (_local9 - _local14.height);
							} else {
								_local9 = shareRowSpace(_local20, _local9);
							};
							_local4++;
						};
						rowSpanChildren = [];
					};
					_local3 = 0;
					while (_local3 < _local12.length) {
						_local14 = ConstraintRow(_local12[_local3]);
						if (!_local14.height){
							_local17 = bound(0, _local14.minHeight, 0);
							_local14.setActualHeight(_local17);
						};
						_local3++;
					};
				};
				_local18 = _local9;
				_local3 = 0;
				while (_local3 < _local11.length) {
					_local14 = ConstraintRow(_local11[_local3]);
					if (_local18 <= 0){
						_local17 = 0;
					} else {
						_local17 = Math.round(((_local18 * _local14.percentHeight) / 100));
					};
					_local17 = bound(_local17, _local14.minHeight, _local14.maxHeight);
					_local14.setActualHeight(_local17);
					_local9 = (_local9 - _local17);
					_local3++;
				};
				_local3 = 0;
				while (_local3 < _local2.length) {
					_local14 = _local2[_local3];
					_local14.y = _local6;
					_local6 = (_local6 + _local14.height);
					_local3++;
				};
			};
		}
		private function child_moveHandler(_arg1:MoveEvent):void{
			if ((_arg1.target is IUIComponent)){
				if (!IUIComponent(_arg1.target).includeInLayout){
					return;
				};
			};
			var _local2:Container = super.target;
			if (_local2){
				_local2.invalidateSize();
				_local2.invalidateDisplayList();
				_contentArea = null;
			};
		}
		private function applyAnchorStylesDuringMeasure(_arg1:IUIComponent, _arg2:Rectangle):void{
			var _local13:int;
			var _local3:IConstraintClient = (_arg1 as IConstraintClient);
			if (!_local3){
				return;
			};
			var _local4:ChildConstraintInfo = constraintCache[_local3];
			if (!_local4){
				_local4 = parseConstraints(_arg1);
			};
			var _local5:Number = _local4.left;
			var _local6:Number = _local4.right;
			var _local7:Number = _local4.hc;
			var _local8:Number = _local4.top;
			var _local9:Number = _local4.bottom;
			var _local10:Number = _local4.vc;
			var _local11:Array = IConstraintLayout(target).constraintColumns;
			var _local12:Array = IConstraintLayout(target).constraintRows;
			var _local14:Number = 0;
			if (!(_local11.length) > 0){
				if (!isNaN(_local7)){
					_arg2.x = Math.round((((target.width - _arg1.width) / 2) + _local7));
				} else {
					if (((!(isNaN(_local5))) && (!(isNaN(_local6))))){
						_arg2.x = _local5;
						_arg2.width = (_arg2.width + _local6);
					} else {
						if (!isNaN(_local5)){
							_arg2.x = _local5;
						} else {
							if (!isNaN(_local6)){
								_arg2.x = 0;
								_arg2.width = (_arg2.width + _local6);
							};
						};
					};
				};
			} else {
				_arg2.x = 0;
				_local13 = 0;
				while (_local13 < _local11.length) {
					_local14 = (_local14 + ConstraintColumn(_local11[_local13]).width);
					_local13++;
				};
				_arg2.width = _local14;
			};
			if (!(_local12.length) > 0){
				if (!isNaN(_local10)){
					_arg2.y = Math.round((((target.height - _arg1.height) / 2) + _local10));
				} else {
					if (((!(isNaN(_local8))) && (!(isNaN(_local9))))){
						_arg2.y = _local8;
						_arg2.height = (_arg2.height + _local9);
					} else {
						if (!isNaN(_local8)){
							_arg2.y = _local8;
						} else {
							if (!isNaN(_local9)){
								_arg2.y = 0;
								_arg2.height = (_arg2.height + _local9);
							};
						};
					};
				};
			} else {
				_local14 = 0;
				_arg2.y = 0;
				_local13 = 0;
				while (_local13 < _local12.length) {
					_local14 = (_local14 + ConstraintRow(_local12[_local13]).height);
					_local13++;
				};
				_arg2.height = _local14;
			};
		}
		override public function measure():void{
			var _local1:Container;
			var _local5:EdgeMetrics;
			var _local6:Rectangle;
			var _local7:IUIComponent;
			var _local8:ConstraintColumn;
			var _local9:ConstraintRow;
			_local1 = super.target;
			var _local2:Number = 0;
			var _local3:Number = 0;
			var _local4:Number = 0;
			_local5 = _local1.viewMetrics;
			_local4 = 0;
			while (_local4 < _local1.numChildren) {
				_local7 = (_local1.getChildAt(_local4) as IUIComponent);
				parseConstraints(_local7);
				_local4++;
			};
			_local4 = 0;
			while (_local4 < IConstraintLayout(_local1).constraintColumns.length) {
				_local8 = IConstraintLayout(_local1).constraintColumns[_local4];
				if (_local8.mx_internal::contentSize){
					_local8.mx_internal::_width = NaN;
				};
				_local4++;
			};
			_local4 = 0;
			while (_local4 < IConstraintLayout(_local1).constraintRows.length) {
				_local9 = IConstraintLayout(_local1).constraintRows[_local4];
				if (_local9.mx_internal::contentSize){
					_local9.mx_internal::_height = NaN;
				};
				_local4++;
			};
			measureColumnsAndRows();
			_contentArea = null;
			_local6 = measureContentArea();
			_local1.measuredWidth = ((_local6.width + _local5.left) + _local5.right);
			_local1.measuredHeight = ((_local6.height + _local5.top) + _local5.bottom);
		}
		private function target_childRemoveHandler(_arg1:ChildExistenceChangedEvent):void{
			DisplayObject(_arg1.relatedObject).removeEventListener(MoveEvent.MOVE, child_moveHandler);
			delete constraintCache[_arg1.relatedObject];
		}
		override public function set target(_arg1:Container):void{
			var _local3:int;
			var _local4:int;
			var _local2:Container = super.target;
			if (_arg1 != _local2){
				if (_local2){
					_local2.removeEventListener(ChildExistenceChangedEvent.CHILD_ADD, target_childAddHandler);
					_local2.removeEventListener(ChildExistenceChangedEvent.CHILD_REMOVE, target_childRemoveHandler);
					_local4 = _local2.numChildren;
					_local3 = 0;
					while (_local3 < _local4) {
						DisplayObject(_local2.getChildAt(_local3)).removeEventListener(MoveEvent.MOVE, child_moveHandler);
						_local3++;
					};
				};
				if (_arg1){
					_arg1.addEventListener(ChildExistenceChangedEvent.CHILD_ADD, target_childAddHandler);
					_arg1.addEventListener(ChildExistenceChangedEvent.CHILD_REMOVE, target_childRemoveHandler);
					_local4 = _arg1.numChildren;
					_local3 = 0;
					while (_local3 < _local4) {
						DisplayObject(_arg1.getChildAt(_local3)).addEventListener(MoveEvent.MOVE, child_moveHandler);
						_local3++;
					};
				};
				super.target = _arg1;
			};
		}
		private function measureContentArea():Rectangle{
			var _local1:int;
			var _local3:Array;
			var _local4:Array;
			var _local5:IUIComponent;
			var _local6:LayoutConstraints;
			var _local7:Number;
			var _local8:Number;
			var _local9:Number;
			var _local10:Number;
			var _local11:Number;
			var _local12:Number;
			if (_contentArea){
				return (_contentArea);
			};
			_contentArea = new Rectangle();
			var _local2:int = target.numChildren;
			if ((((_local2 == 0)) && (constraintRegionsInUse))){
				_local3 = IConstraintLayout(target).constraintColumns;
				_local4 = IConstraintLayout(target).constraintRows;
				if (_local3.length > 0){
					_contentArea.right = (_local3[(_local3.length - 1)].x + _local3[(_local3.length - 1)].width);
				} else {
					_contentArea.right = 0;
				};
				if (_local4.length > 0){
					_contentArea.bottom = (_local4[(_local4.length - 1)].y + _local4[(_local4.length - 1)].height);
				} else {
					_contentArea.bottom = 0;
				};
			};
			_local1 = 0;
			while (_local1 < _local2) {
				_local5 = (target.getChildAt(_local1) as IUIComponent);
				_local6 = getLayoutConstraints(_local5);
				if (!_local5.includeInLayout){
				} else {
					_local7 = _local5.x;
					_local8 = _local5.y;
					_local9 = _local5.getExplicitOrMeasuredWidth();
					_local10 = _local5.getExplicitOrMeasuredHeight();
					if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0){
						if (((!(isNaN(_local5.percentWidth))) || (((((_local6) && (!(isNaN(_local6.left))))) && (!(isNaN(_local6.right))))))){
							_local9 = _local5.minWidth;
						};
					} else {
						if (((!(isNaN(_local5.percentWidth))) || (((((((_local6) && (!(isNaN(_local6.left))))) && (!(isNaN(_local6.right))))) && (isNaN(_local5.explicitWidth)))))){
							_local9 = _local5.minWidth;
						};
					};
					if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0){
						if (((!(isNaN(_local5.percentHeight))) || (((((_local6) && (!(isNaN(_local6.top))))) && (!(isNaN(_local6.bottom))))))){
							_local10 = _local5.minHeight;
						};
					} else {
						if (((!(isNaN(_local5.percentHeight))) || (((((((_local6) && (!(isNaN(_local6.top))))) && (!(isNaN(_local6.bottom))))) && (isNaN(_local5.explicitHeight)))))){
							_local10 = _local5.minHeight;
						};
					};
					r.x = _local7;
					r.y = _local8;
					r.width = _local9;
					r.height = _local10;
					applyAnchorStylesDuringMeasure(_local5, r);
					_local7 = r.x;
					_local8 = r.y;
					_local9 = r.width;
					_local10 = r.height;
					if (isNaN(_local7)){
						_local7 = _local5.x;
					};
					if (isNaN(_local8)){
						_local8 = _local5.y;
					};
					_local11 = _local7;
					_local12 = _local8;
					if (isNaN(_local9)){
						_local9 = _local5.width;
					};
					if (isNaN(_local10)){
						_local10 = _local5.height;
					};
					_local11 = (_local11 + _local9);
					_local12 = (_local12 + _local10);
					_contentArea.right = Math.max(_contentArea.right, _local11);
					_contentArea.bottom = Math.max(_contentArea.bottom, _local12);
				};
				_local1++;
			};
			return (_contentArea);
		}
		private function shareColumnSpace(_arg1:ContentColumnChild, _arg2:Number):Number{
			var _local11:Number;
			var _local12:Number;
			var _local13:Number;
			var _local3:ConstraintColumn = _arg1.leftCol;
			var _local4:ConstraintColumn = _arg1.rightCol;
			var _local5:IUIComponent = _arg1.child;
			var _local6:Number = 0;
			var _local7:Number = 0;
			var _local8:Number = (_arg1.rightOffset) ? _arg1.rightOffset : 0;
			var _local9:Number = (_arg1.leftOffset) ? _arg1.leftOffset : 0;
			if (((_local3) && (_local3.width))){
				_local6 = (_local6 + _local3.width);
			} else {
				if (((_local4) && (!(_local3)))){
					_local3 = IConstraintLayout(target).constraintColumns[(_arg1.right - 2)];
					if (((_local3) && (_local3.width))){
						_local6 = (_local6 + _local3.width);
					};
				};
			};
			if (((_local4) && (_local4.width))){
				_local7 = (_local7 + _local4.width);
			} else {
				if (((_local3) && (!(_local4)))){
					_local4 = IConstraintLayout(target).constraintColumns[(_arg1.left + 1)];
					if (((_local4) && (_local4.width))){
						_local7 = (_local7 + _local4.width);
					};
				};
			};
			if (((_local3) && (isNaN(_local3.width)))){
				_local3.setActualWidth(Math.max(0, _local3.maxWidth));
			};
			if (((_local4) && (isNaN(_local4.width)))){
				_local4.setActualWidth(Math.max(0, _local4.maxWidth));
			};
			var _local10:Number = _local5.getExplicitOrMeasuredWidth();
			if (_local10){
				if (!_arg1.leftCol){
					if (_local10 > _local6){
						_local12 = ((_local10 - _local6) + _local8);
					} else {
						_local12 = (_local10 + _local8);
					};
				};
				if (!_arg1.rightCol){
					if (_local10 > _local7){
						_local11 = ((_local10 - _local7) + _local9);
					} else {
						_local11 = (_local10 + _local9);
					};
				};
				if (((_arg1.leftCol) && (_arg1.rightCol))){
					_local13 = (_local10 / Number(_arg1.span));
					if ((_local13 + _local9) < _local6){
						_local11 = _local6;
						_local12 = ((_local10 - (_local6 - _local9)) + _local8);
					} else {
						_local11 = (_local13 + _local9);
					};
					if ((_local13 + _local8) < _local7){
						_local12 = _local7;
						_local11 = ((_local10 - (_local7 - _local8)) + _local9);
					} else {
						_local12 = (_local13 + _local8);
					};
				};
				_local11 = bound(_local11, _local3.minWidth, _local3.maxWidth);
				_local3.setActualWidth(_local11);
				_arg2 = (_arg2 - _local11);
				_local12 = bound(_local12, _local4.minWidth, _local4.maxWidth);
				_local4.setActualWidth(_local12);
				_arg2 = (_arg2 - _local12);
			};
			return (_arg2);
		}
		private function getLayoutConstraints(_arg1:IUIComponent):LayoutConstraints{
			var _local2:IConstraintClient = (_arg1 as IConstraintClient);
			if (!_local2){
				return (null);
			};
			var _local3:LayoutConstraints = new LayoutConstraints();
			_local3.baseline = _local2.getConstraintValue("baseline");
			_local3.bottom = _local2.getConstraintValue("bottom");
			_local3.horizontalCenter = _local2.getConstraintValue("horizontalCenter");
			_local3.left = _local2.getConstraintValue("left");
			_local3.right = _local2.getConstraintValue("right");
			_local3.top = _local2.getConstraintValue("top");
			_local3.verticalCenter = _local2.getConstraintValue("verticalCenter");
			return (_local3);
		}
		override public function updateDisplayList(_arg1:Number, _arg2:Number):void{
			var _local3:int;
			var _local4:IUIComponent;
			var _local10:ConstraintColumn;
			var _local11:ConstraintRow;
			var _local5:Container = super.target;
			var _local6:int = _local5.numChildren;
			_local5.mx_internal::doingLayout = false;
			var _local7:EdgeMetrics = _local5.viewMetrics;
			_local5.mx_internal::doingLayout = true;
			var _local8:Number = ((_arg1 - _local7.left) - _local7.right);
			var _local9:Number = ((_arg2 - _local7.top) - _local7.bottom);
			if ((((IConstraintLayout(_local5).constraintColumns.length > 0)) || ((IConstraintLayout(_local5).constraintRows.length > 0)))){
				constraintRegionsInUse = true;
			};
			if (constraintRegionsInUse){
				_local3 = 0;
				while (_local3 < _local6) {
					_local4 = (_local5.getChildAt(_local3) as IUIComponent);
					parseConstraints(_local4);
					_local3++;
				};
				_local3 = 0;
				while (_local3 < IConstraintLayout(_local5).constraintColumns.length) {
					_local10 = IConstraintLayout(_local5).constraintColumns[_local3];
					if (_local10.mx_internal::contentSize){
						_local10.mx_internal::_width = NaN;
					};
					_local3++;
				};
				_local3 = 0;
				while (_local3 < IConstraintLayout(_local5).constraintRows.length) {
					_local11 = IConstraintLayout(_local5).constraintRows[_local3];
					if (_local11.mx_internal::contentSize){
						_local11.mx_internal::_height = NaN;
					};
					_local3++;
				};
				measureColumnsAndRows();
			};
			_local3 = 0;
			while (_local3 < _local6) {
				_local4 = (_local5.getChildAt(_local3) as IUIComponent);
				applyAnchorStylesDuringUpdateDisplayList(_local8, _local9, _local4);
				_local3++;
			};
		}
		private function applyAnchorStylesDuringUpdateDisplayList(_arg1:Number, _arg2:Number, _arg3:IUIComponent=null):void{
			var _local20:int;
			var _local21:Number;
			var _local22:Number;
			var _local23:Number;
			var _local24:Number;
			var _local25:String;
			var _local34:Number;
			var _local35:Number;
			var _local36:Number;
			var _local37:Number;
			var _local38:Number;
			var _local39:Boolean;
			var _local40:Boolean;
			var _local41:Boolean;
			var _local42:ConstraintColumn;
			var _local43:Boolean;
			var _local44:Boolean;
			var _local45:Boolean;
			var _local46:Boolean;
			var _local47:ConstraintRow;
			var _local4:IConstraintClient = (_arg3 as IConstraintClient);
			if (!_local4){
				return;
			};
			var _local5:ChildConstraintInfo = parseConstraints(_arg3);
			var _local6:Number = _local5.left;
			var _local7:Number = _local5.right;
			var _local8:Number = _local5.hc;
			var _local9:Number = _local5.top;
			var _local10:Number = _local5.bottom;
			var _local11:Number = _local5.vc;
			var _local12:Number = _local5.baseline;
			var _local13:String = _local5.leftBoundary;
			var _local14:String = _local5.rightBoundary;
			var _local15:String = _local5.hcBoundary;
			var _local16:String = _local5.topBoundary;
			var _local17:String = _local5.bottomBoundary;
			var _local18:String = _local5.vcBoundary;
			var _local19:String = _local5.baselineBoundary;
			var _local26:Boolean;
			var _local27:Boolean;
			var _local28:Boolean = ((((!(_local15)) && (!(_local13)))) && (!(_local14)));
			var _local29:Boolean = ((((((!(_local18)) && (!(_local16)))) && (!(_local17)))) && (!(_local19)));
			var _local30:Number = 0;
			var _local31:Number = _arg1;
			var _local32:Number = 0;
			var _local33:Number = _arg2;
			if (!_local28){
				_local39 = (_local13) ? true : false;
				_local40 = (_local14) ? true : false;
				_local41 = (_local15) ? true : false;
				_local20 = 0;
				while (_local20 < IConstraintLayout(target).constraintColumns.length) {
					_local42 = ConstraintColumn(IConstraintLayout(target).constraintColumns[_local20]);
					if (_local39){
						if (_local13 == _local42.id){
							_local30 = _local42.x;
							_local39 = false;
						};
					};
					if (_local40){
						if (_local14 == _local42.id){
							_local31 = (_local42.x + _local42.width);
							_local40 = false;
						};
					};
					if (_local41){
						if (_local15 == _local42.id){
							_local35 = _local42.width;
							_local37 = _local42.x;
							_local41 = false;
						};
					};
					_local20++;
				};
				if (_local39){
					_local25 = resourceManager.getString("containers", "columnNotFound", [_local13]);
					throw (new ConstraintError(_local25));
				};
				if (_local40){
					_local25 = resourceManager.getString("containers", "columnNotFound", [_local14]);
					throw (new ConstraintError(_local25));
				};
				if (_local41){
					_local25 = resourceManager.getString("containers", "columnNotFound", [_local15]);
					throw (new ConstraintError(_local25));
				};
			} else {
				if (!_local28){
					_local25 = resourceManager.getString("containers", "noColumnsFound");
					throw (new ConstraintError(_local25));
				};
			};
			_arg1 = Math.round((_local31 - _local30));
			if (((!(isNaN(_local6))) && (!(isNaN(_local7))))){
				_local21 = ((_arg1 - _local6) - _local7);
				if (_local21 < _arg3.minWidth){
					_local21 = _arg3.minWidth;
				};
			} else {
				if (!isNaN(_arg3.percentWidth)){
					_local21 = ((_arg3.percentWidth / 100) * _arg1);
					_local21 = bound(_local21, _arg3.minWidth, _arg3.maxWidth);
					_local26 = true;
				} else {
					_local21 = _arg3.getExplicitOrMeasuredWidth();
				};
			};
			if (((!(_local29)) && ((IConstraintLayout(target).constraintRows.length > 0)))){
				_local43 = (_local16) ? true : false;
				_local44 = (_local17) ? true : false;
				_local45 = (_local18) ? true : false;
				_local46 = (_local19) ? true : false;
				_local20 = 0;
				while (_local20 < IConstraintLayout(target).constraintRows.length) {
					_local47 = ConstraintRow(IConstraintLayout(target).constraintRows[_local20]);
					if (_local43){
						if (_local16 == _local47.id){
							_local32 = _local47.y;
							_local43 = false;
						};
					};
					if (_local44){
						if (_local17 == _local47.id){
							_local33 = (_local47.y + _local47.height);
							_local44 = false;
						};
					};
					if (_local45){
						if (_local18 == _local47.id){
							_local34 = _local47.height;
							_local36 = _local47.y;
							_local45 = false;
						};
					};
					if (_local46){
						if (_local19 == _local47.id){
							_local38 = _local47.y;
							_local46 = false;
						};
					};
					_local20++;
				};
				if (_local43){
					_local25 = resourceManager.getString("containers", "rowNotFound", [_local16]);
					throw (new ConstraintError(_local25));
				};
				if (_local44){
					_local25 = resourceManager.getString("containers", "rowNotFound", [_local17]);
					throw (new ConstraintError(_local25));
				};
				if (_local45){
					_local25 = resourceManager.getString("containers", "rowNotFound", [_local18]);
					throw (new ConstraintError(_local25));
				};
				if (_local46){
					_local25 = resourceManager.getString("containers", "rowNotFound", [_local19]);
					throw (new ConstraintError(_local25));
				};
			} else {
				if (((!(_local29)) && (!((IConstraintLayout(target).constraintRows.length > 0))))){
					_local25 = resourceManager.getString("containers", "noRowsFound");
					throw (new ConstraintError(_local25));
				};
			};
			_arg2 = Math.round((_local33 - _local32));
			if (((!(isNaN(_local9))) && (!(isNaN(_local10))))){
				_local22 = ((_arg2 - _local9) - _local10);
				if (_local22 < _arg3.minHeight){
					_local22 = _arg3.minHeight;
				};
			} else {
				if (!isNaN(_arg3.percentHeight)){
					_local22 = ((_arg3.percentHeight / 100) * _arg2);
					_local22 = bound(_local22, _arg3.minHeight, _arg3.maxHeight);
					_local27 = true;
				} else {
					_local22 = _arg3.getExplicitOrMeasuredHeight();
				};
			};
			if (!isNaN(_local8)){
				if (_local15){
					_local23 = Math.round(((((_local35 - _local21) / 2) + _local8) + _local37));
				} else {
					_local23 = Math.round((((_arg1 - _local21) / 2) + _local8));
				};
			} else {
				if (!isNaN(_local6)){
					if (_local13){
						_local23 = (_local30 + _local6);
					} else {
						_local23 = _local6;
					};
				} else {
					if (!isNaN(_local7)){
						if (_local14){
							_local23 = ((_local31 - _local7) - _local21);
						} else {
							_local23 = ((_arg1 - _local7) - _local21);
						};
					};
				};
			};
			if (!isNaN(_local12)){
				if (_local19){
					_local24 = ((_local38 - _arg3.baselinePosition) + _local12);
				} else {
					_local24 = _local12;
				};
			};
			if (!isNaN(_local11)){
				if (_local18){
					_local24 = Math.round(((((_local34 - _local22) / 2) + _local11) + _local36));
				} else {
					_local24 = Math.round((((_arg2 - _local22) / 2) + _local11));
				};
			} else {
				if (!isNaN(_local9)){
					if (_local16){
						_local24 = (_local32 + _local9);
					} else {
						_local24 = _local9;
					};
				} else {
					if (!isNaN(_local10)){
						if (_local17){
							_local24 = ((_local33 - _local10) - _local22);
						} else {
							_local24 = ((_arg2 - _local10) - _local22);
						};
					};
				};
			};
			_local23 = (isNaN(_local23)) ? _arg3.x : _local23;
			_local24 = (isNaN(_local24)) ? _arg3.y : _local24;
			_arg3.move(_local23, _local24);
			if (_local26){
				if ((_local23 + _local21) > _arg1){
					_local21 = Math.max((_arg1 - _local23), _arg3.minWidth);
				};
			};
			if (_local27){
				if ((_local24 + _local22) > _arg2){
					_local22 = Math.max((_arg2 - _local24), _arg3.minHeight);
				};
			};
			if (((!(isNaN(_local21))) && (!(isNaN(_local22))))){
				_arg3.setActualSize(_local21, _local22);
			};
		}
		private function target_childAddHandler(_arg1:ChildExistenceChangedEvent):void{
			DisplayObject(_arg1.relatedObject).addEventListener(MoveEvent.MOVE, child_moveHandler);
		}

	}
}//package mx.containers.utilityClasses 

import mx.core.*;

class LayoutConstraints {

	public var baseline;
	public var left;
	public var bottom;
	public var top;
	public var horizontalCenter;
	public var verticalCenter;
	public var right;

	private function LayoutConstraints():void{
	}
}
class ChildConstraintInfo {

	public var baseline:Number;
	public var left:Number;
	public var baselineBoundary:String;
	public var leftBoundary:String;
	public var hcBoundary:String;
	public var top:Number;
	public var right:Number;
	public var topBoundary:String;
	public var rightBoundary:String;
	public var bottom:Number;
	public var vc:Number;
	public var bottomBoundary:String;
	public var vcBoundary:String;
	public var hc:Number;

	private function ChildConstraintInfo(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:String=null, _arg9:String=null, _arg10:String=null, _arg11:String=null, _arg12:String=null, _arg13:String=null, _arg14:String=null):void{
		this.left = _arg1;
		this.right = _arg2;
		this.hc = _arg3;
		this.top = _arg4;
		this.bottom = _arg5;
		this.vc = _arg6;
		this.baseline = _arg7;
		this.leftBoundary = _arg8;
		this.rightBoundary = _arg9;
		this.hcBoundary = _arg10;
		this.topBoundary = _arg11;
		this.bottomBoundary = _arg12;
		this.vcBoundary = _arg13;
		this.baselineBoundary = _arg14;
	}
}
class ContentColumnChild {

	public var rightCol:ConstraintColumn;
	public var hcCol:ConstraintColumn;
	public var left:Number;
	public var child:IUIComponent;
	public var rightOffset:Number;
	public var span:Number;
	public var hcOffset:Number;
	public var leftCol:ConstraintColumn;
	public var leftOffset:Number;
	public var hc:Number;
	public var right:Number;

	private function ContentColumnChild():void{
	}
}
class ContentRowChild {

	public var topRow:ConstraintRow;
	public var topOffset:Number;
	public var baseline:Number;
	public var baselineRow:ConstraintRow;
	public var span:Number;
	public var top:Number;
	public var vcOffset:Number;
	public var child:IUIComponent;
	public var bottomOffset:Number;
	public var bottom:Number;
	public var vc:Number;
	public var bottomRow:ConstraintRow;
	public var vcRow:ConstraintRow;
	public var baselineOffset:Number;

	private function ContentRowChild():void{
	}
}

****************

//ConstraintColumn (mx.containers.utilityClasses.ConstraintColumn)
package mx.containers.utilityClasses {
	import mx.core.*;
	import flash.events.*;

	public class ConstraintColumn extends EventDispatcher implements IMXMLObject {

		private var _container:IInvalidating;
		private var _explicitMinWidth:Number;
		mx_internal var _width:Number;
		mx_internal var contentSize:Boolean;// = false
		private var _percentWidth:Number;
		private var _explicitWidth:Number;
		private var _explicitMaxWidth:Number;
		private var _x:Number;
		private var _id:String;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function get container():IInvalidating{
			return (_container);
		}
		public function get width():Number{
			return (_width);
		}
		public function get percentWidth():Number{
			return (_percentWidth);
		}
		public function set container(_arg1:IInvalidating):void{
			_container = _arg1;
		}
		public function set maxWidth(_arg1:Number):void{
			if (_explicitMaxWidth != _arg1){
				_explicitMaxWidth = _arg1;
				if (container){
					container.invalidateSize();
					container.invalidateDisplayList();
				};
				dispatchEvent(new Event("maxWidthChanged"));
			};
		}
		public function set width(_arg1:Number):void{
			if (explicitWidth != _arg1){
				explicitWidth = _arg1;
				if (_width != _arg1){
					_width = _arg1;
					if (container){
						container.invalidateSize();
						container.invalidateDisplayList();
					};
					dispatchEvent(new Event("widthChanged"));
				};
			};
		}
		public function get maxWidth():Number{
			return (_explicitMaxWidth);
		}
		public function get minWidth():Number{
			return (_explicitMinWidth);
		}
		public function get id():String{
			return (_id);
		}
		public function initialized(_arg1:Object, _arg2:String):void{
			this.id = _arg2;
			if (((!(this.width)) && (!(this.percentWidth)))){
				contentSize = true;
			};
		}
		public function set explicitWidth(_arg1:Number):void{
			if (_explicitWidth == _arg1){
				return;
			};
			if (!isNaN(_arg1)){
				_percentWidth = NaN;
			};
			_explicitWidth = _arg1;
			if (container){
				container.invalidateSize();
				container.invalidateDisplayList();
			};
			dispatchEvent(new Event("explicitWidthChanged"));
		}
		public function setActualWidth(_arg1:Number):void{
			if (_width != _arg1){
				_width = _arg1;
				dispatchEvent(new Event("widthChanged"));
			};
		}
		public function set minWidth(_arg1:Number):void{
			if (_explicitMinWidth != _arg1){
				_explicitMinWidth = _arg1;
				if (container){
					container.invalidateSize();
					container.invalidateDisplayList();
				};
				dispatchEvent(new Event("minWidthChanged"));
			};
		}
		public function set percentWidth(_arg1:Number):void{
			if (_percentWidth == _arg1){
				return;
			};
			if (!isNaN(_arg1)){
				_explicitWidth = NaN;
			};
			_percentWidth = _arg1;
			if (container){
				container.invalidateSize();
				container.invalidateDisplayList();
			};
			dispatchEvent(new Event("percentWidthChanged"));
		}
		public function set x(_arg1:Number):void{
			if (_arg1 != _x){
				_x = _arg1;
				dispatchEvent(new Event("xChanged"));
			};
		}
		public function get explicitWidth():Number{
			return (_explicitWidth);
		}
		public function set id(_arg1:String):void{
			_id = _arg1;
		}
		public function get x():Number{
			return (_x);
		}

	}
}//package mx.containers.utilityClasses 

****************

//ConstraintRow (mx.containers.utilityClasses.ConstraintRow)
package mx.containers.utilityClasses {
	import mx.core.*;
	import flash.events.*;

	public class ConstraintRow extends EventDispatcher implements IMXMLObject {

		private var _container:IInvalidating;
		mx_internal var _height:Number;
		private var _explicitMinHeight:Number;
		private var _y:Number;
		private var _percentHeight:Number;
		private var _explicitMaxHeight:Number;
		mx_internal var contentSize:Boolean;// = false
		private var _explicitHeight:Number;
		private var _id:String;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function get container():IInvalidating{
			return (_container);
		}
		public function set container(_arg1:IInvalidating):void{
			_container = _arg1;
		}
		public function set y(_arg1:Number):void{
			if (_arg1 != _y){
				_y = _arg1;
				dispatchEvent(new Event("yChanged"));
			};
		}
		public function set height(_arg1:Number):void{
			if (explicitHeight != _arg1){
				explicitHeight = _arg1;
				if (_height != _arg1){
					_height = _arg1;
					if (container){
						container.invalidateSize();
						container.invalidateDisplayList();
					};
					dispatchEvent(new Event("heightChanged"));
				};
			};
		}
		public function set maxHeight(_arg1:Number):void{
			if (_explicitMaxHeight != _arg1){
				_explicitMaxHeight = _arg1;
				if (container){
					container.invalidateSize();
					container.invalidateDisplayList();
				};
				dispatchEvent(new Event("maxHeightChanged"));
			};
		}
		public function setActualHeight(_arg1:Number):void{
			if (_height != _arg1){
				_height = _arg1;
				dispatchEvent(new Event("heightChanged"));
			};
		}
		public function get minHeight():Number{
			return (_explicitMinHeight);
		}
		public function get id():String{
			return (_id);
		}
		public function set percentHeight(_arg1:Number):void{
			if (_percentHeight == _arg1){
				return;
			};
			if (!isNaN(_arg1)){
				_explicitHeight = NaN;
			};
			_percentHeight = _arg1;
			if (container){
				container.invalidateSize();
				container.invalidateDisplayList();
			};
		}
		public function initialized(_arg1:Object, _arg2:String):void{
			this.id = _arg2;
			if (((!(this.height)) && (!(this.percentHeight)))){
				contentSize = true;
			};
		}
		public function get percentHeight():Number{
			return (_percentHeight);
		}
		public function get height():Number{
			return (_height);
		}
		public function get maxHeight():Number{
			return (_explicitMaxHeight);
		}
		public function set minHeight(_arg1:Number):void{
			if (_explicitMinHeight != _arg1){
				_explicitMinHeight = _arg1;
				if (container){
					container.invalidateSize();
					container.invalidateDisplayList();
				};
				dispatchEvent(new Event("minHeightChanged"));
			};
		}
		public function set id(_arg1:String):void{
			_id = _arg1;
		}
		public function get y():Number{
			return (_y);
		}
		public function get explicitHeight():Number{
			return (_explicitHeight);
		}
		public function set explicitHeight(_arg1:Number):void{
			if (_explicitHeight == _arg1){
				return;
			};
			if (!isNaN(_arg1)){
				_percentHeight = NaN;
			};
			_explicitHeight = _arg1;
			if (container){
				container.invalidateSize();
				container.invalidateDisplayList();
			};
			dispatchEvent(new Event("explicitHeightChanged"));
		}

	}
}//package mx.containers.utilityClasses 

****************

//Flex (mx.containers.utilityClasses.Flex)
package mx.containers.utilityClasses {
	import mx.core.*;

	public class Flex {

		mx_internal static const VERSION:String = "3.5.0.12683";

		public static function flexChildWidthsProportionally(_arg1:Container, _arg2:Number, _arg3:Number):Number{
			var _local6:Array;
			var _local7:FlexChildInfo;
			var _local8:IUIComponent;
			var _local9:int;
			var _local11:Number;
			var _local12:Number;
			var _local13:Number;
			var _local14:Number;
			var _local4:Number = _arg2;
			var _local5:Number = 0;
			_local6 = [];
			var _local10:int = _arg1.numChildren;
			_local9 = 0;
			while (_local9 < _local10) {
				_local8 = IUIComponent(_arg1.getChildAt(_local9));
				_local11 = _local8.percentWidth;
				_local12 = _local8.percentHeight;
				if (((!(isNaN(_local12))) && (_local8.includeInLayout))){
					_local13 = Math.max(_local8.minHeight, Math.min(_local8.maxHeight, ((_local12)>=100) ? _arg3 : ((_arg3 * _local12) / 100)));
				} else {
					_local13 = _local8.getExplicitOrMeasuredHeight();
				};
				if (((!(isNaN(_local11))) && (_local8.includeInLayout))){
					_local5 = (_local5 + _local11);
					_local7 = new FlexChildInfo();
					_local7.percent = _local11;
					_local7.min = _local8.minWidth;
					_local7.max = _local8.maxWidth;
					_local7.height = _local13;
					_local7.child = _local8;
					_local6.push(_local7);
				} else {
					_local14 = _local8.getExplicitOrMeasuredWidth();
					if ((((_local8.scaleX == 1)) && ((_local8.scaleY == 1)))){
						_local8.setActualSize(Math.floor(_local14), Math.floor(_local13));
					} else {
						_local8.setActualSize(_local14, _local13);
					};
					if (_local8.includeInLayout){
						_local4 = (_local4 - _local8.width);
					};
				};
				_local9++;
			};
			if (_local5){
				_local4 = flexChildrenProportionally(_arg2, _local4, _local5, _local6);
				_local10 = _local6.length;
				_local9 = 0;
				while (_local9 < _local10) {
					_local7 = _local6[_local9];
					_local8 = _local7.child;
					if ((((_local8.scaleX == 1)) && ((_local8.scaleY == 1)))){
						_local8.setActualSize(Math.floor(_local7.size), Math.floor(_local7.height));
					} else {
						_local8.setActualSize(_local7.size, _local7.height);
					};
					_local9++;
				};
				if (FlexVersion.compatibilityVersion >= FlexVersion.VERSION_3_0){
					distributeExtraWidth(_arg1, _arg2);
				};
			};
			return (_local4);
		}
		public static function distributeExtraHeight(_arg1:Container, _arg2:Number):void{
			var _local5:int;
			var _local6:Number;
			var _local9:IUIComponent;
			var _local10:Number;
			var _local11:Number;
			var _local3:int = _arg1.numChildren;
			var _local4:Boolean;
			var _local7:Number = _arg2;
			var _local8:Number = 0;
			_local5 = 0;
			while (_local5 < _local3) {
				_local9 = IUIComponent(_arg1.getChildAt(_local5));
				if (!_local9.includeInLayout){
				} else {
					_local10 = _local9.height;
					_local6 = _local9.percentHeight;
					_local8 = (_local8 + _local10);
					if (!isNaN(_local6)){
						_local11 = Math.ceil(((_local6 / 100) * _arg2));
						if (_local11 > _local10){
							_local4 = true;
						};
					};
				};
				_local5++;
			};
			if (!_local4){
				return;
			};
			_local7 = (_local7 - _local8);
			var _local12:Boolean;
			while (((_local12) && ((_local7 > 0)))) {
				_local12 = false;
				_local5 = 0;
				while (_local5 < _local3) {
					_local9 = IUIComponent(_arg1.getChildAt(_local5));
					_local10 = _local9.height;
					_local6 = _local9.percentHeight;
					if (((((!(isNaN(_local6))) && (_local9.includeInLayout))) && ((_local10 < _local9.maxHeight)))){
						_local11 = Math.ceil(((_local6 / 100) * _arg2));
						if (_local11 > _local10){
							_local9.setActualSize(_local9.width, (_local10 + 1));
							_local7--;
							_local12 = true;
							if (_local7 == 0){
								return;
							};
						};
					};
					_local5++;
				};
			};
		}
		public static function distributeExtraWidth(_arg1:Container, _arg2:Number):void{
			var _local5:int;
			var _local6:Number;
			var _local9:IUIComponent;
			var _local10:Number;
			var _local11:Number;
			var _local3:int = _arg1.numChildren;
			var _local4:Boolean;
			var _local7:Number = _arg2;
			var _local8:Number = 0;
			_local5 = 0;
			while (_local5 < _local3) {
				_local9 = IUIComponent(_arg1.getChildAt(_local5));
				if (!_local9.includeInLayout){
				} else {
					_local10 = _local9.width;
					_local6 = _local9.percentWidth;
					_local8 = (_local8 + _local10);
					if (!isNaN(_local6)){
						_local11 = Math.ceil(((_local6 / 100) * _arg2));
						if (_local11 > _local10){
							_local4 = true;
						};
					};
				};
				_local5++;
			};
			if (!_local4){
				return;
			};
			_local7 = (_local7 - _local8);
			var _local12:Boolean;
			while (((_local12) && ((_local7 > 0)))) {
				_local12 = false;
				_local5 = 0;
				while (_local5 < _local3) {
					_local9 = IUIComponent(_arg1.getChildAt(_local5));
					_local10 = _local9.width;
					_local6 = _local9.percentWidth;
					if (((((!(isNaN(_local6))) && (_local9.includeInLayout))) && ((_local10 < _local9.maxWidth)))){
						_local11 = Math.ceil(((_local6 / 100) * _arg2));
						if (_local11 > _local10){
							_local9.setActualSize((_local10 + 1), _local9.height);
							_local7--;
							_local12 = true;
							if (_local7 == 0){
								return;
							};
						};
					};
					_local5++;
				};
			};
		}
		public static function flexChildrenProportionally(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Array):Number{
			var _local6:Number;
			var _local7:Boolean;
			var _local9:*;
			var _local10:*;
			var _local11:*;
			var _local12:*;
			var _local13:*;
			var _local14:*;
			var _local5:int = _arg4.length;
			var _local8:Number = (_arg2 - ((_arg1 * _arg3) / 100));
			if (_local8 > 0){
				_arg2 = (_arg2 - _local8);
			};
			do  {
				_local6 = 0;
				_local7 = true;
				_local9 = (_arg2 / _arg3);
				_local10 = 0;
				while (_local10 < _local5) {
					_local11 = _arg4[_local10];
					_local12 = (_local11.percent * _local9);
					if (_local12 < _local11.min){
						_local13 = _local11.min;
						_local11.size = _local13;
						--_local5;
						_arg4[_local10] = _arg4[_local5];
						_arg4[_local5] = _local11;
						_arg3 = (_arg3 - _local11.percent);
						_arg2 = (_arg2 - _local13);
						_local7 = false;
						break;
					} else {
						if (_local12 > _local11.max){
							_local14 = _local11.max;
							_local11.size = _local14;
							--_local5;
							_arg4[_local10] = _arg4[_local5];
							_arg4[_local5] = _local11;
							_arg3 = (_arg3 - _local11.percent);
							_arg2 = (_arg2 - _local14);
							_local7 = false;
							break;
						} else {
							_local11.size = _local12;
							_local6 = (_local6 + _local12);
						};
					};
					_local10++;
				};
			} while (!(_local7));
			return (Math.max(0, Math.floor((_arg2 - _local6))));
		}
		public static function flexChildHeightsProportionally(_arg1:Container, _arg2:Number, _arg3:Number):Number{
			var _local7:FlexChildInfo;
			var _local8:IUIComponent;
			var _local9:int;
			var _local11:Number;
			var _local12:Number;
			var _local13:Number;
			var _local14:Number;
			var _local4:Number = _arg2;
			var _local5:Number = 0;
			var _local6:Array = [];
			var _local10:int = _arg1.numChildren;
			_local9 = 0;
			while (_local9 < _local10) {
				_local8 = IUIComponent(_arg1.getChildAt(_local9));
				_local11 = _local8.percentWidth;
				_local12 = _local8.percentHeight;
				if (((!(isNaN(_local11))) && (_local8.includeInLayout))){
					_local13 = Math.max(_local8.minWidth, Math.min(_local8.maxWidth, ((_local11)>=100) ? _arg3 : ((_arg3 * _local11) / 100)));
				} else {
					_local13 = _local8.getExplicitOrMeasuredWidth();
				};
				if (((!(isNaN(_local12))) && (_local8.includeInLayout))){
					_local5 = (_local5 + _local12);
					_local7 = new FlexChildInfo();
					_local7.percent = _local12;
					_local7.min = _local8.minHeight;
					_local7.max = _local8.maxHeight;
					_local7.width = _local13;
					_local7.child = _local8;
					_local6.push(_local7);
				} else {
					_local14 = _local8.getExplicitOrMeasuredHeight();
					if ((((_local8.scaleX == 1)) && ((_local8.scaleY == 1)))){
						_local8.setActualSize(Math.floor(_local13), Math.floor(_local14));
					} else {
						_local8.setActualSize(_local13, _local14);
					};
					if (_local8.includeInLayout){
						_local4 = (_local4 - _local8.height);
					};
				};
				_local9++;
			};
			if (_local5){
				_local4 = flexChildrenProportionally(_arg2, _local4, _local5, _local6);
				_local10 = _local6.length;
				_local9 = 0;
				while (_local9 < _local10) {
					_local7 = _local6[_local9];
					_local8 = _local7.child;
					if ((((_local8.scaleX == 1)) && ((_local8.scaleY == 1)))){
						_local8.setActualSize(Math.floor(_local7.width), Math.floor(_local7.size));
					} else {
						_local8.setActualSize(_local7.width, _local7.size);
					};
					_local9++;
				};
				if (FlexVersion.compatibilityVersion >= FlexVersion.VERSION_3_0){
					distributeExtraHeight(_arg1, _arg2);
				};
			};
			return (_local4);
		}

	}
}//package mx.containers.utilityClasses 

****************

//FlexChildInfo (mx.containers.utilityClasses.FlexChildInfo)
package mx.containers.utilityClasses {
	import mx.core.*;

	public class FlexChildInfo {

		public var flex:Number;// = 0
		public var preferred:Number;// = 0
		public var percent:Number;
		public var width:Number;
		public var height:Number;
		public var size:Number;// = 0
		public var max:Number;
		public var min:Number;
		public var child:IUIComponent;

		mx_internal static const VERSION:String = "3.5.0.12683";

	}
}//package mx.containers.utilityClasses 

****************

//IConstraintLayout (mx.containers.utilityClasses.IConstraintLayout)
package mx.containers.utilityClasses {

	public interface IConstraintLayout {

		function get constraintColumns():Array;
		function set constraintRows(_arg1:Array):void;
		function get constraintRows():Array;
		function set constraintColumns(_arg1:Array):void;

	}
}//package mx.containers.utilityClasses 

****************

//Layout (mx.containers.utilityClasses.Layout)
package mx.containers.utilityClasses {
	import mx.core.*;
	import mx.resources.*;

	public class Layout {

		private var _target:Container;
		protected var resourceManager:IResourceManager;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function Layout(){
			resourceManager = ResourceManager.getInstance();
			super();
		}
		public function get target():Container{
			return (_target);
		}
		public function set target(_arg1:Container):void{
			_target = _arg1;
		}
		public function measure():void{
		}
		public function updateDisplayList(_arg1:Number, _arg2:Number):void{
		}

	}
}//package mx.containers.utilityClasses 

****************

//BoxDirection (mx.containers.BoxDirection)
package mx.containers {

	public final class BoxDirection {

		public static const HORIZONTAL:String = "horizontal";
		public static const VERTICAL:String = "vertical";
		mx_internal static const VERSION:String = "3.5.0.12683";

	}
}//package mx.containers 

****************

//DataGridListData (mx.controls.dataGridClasses.DataGridListData)
package mx.controls.dataGridClasses {
	import mx.core.*;
	import mx.controls.listClasses.*;

	public class DataGridListData extends BaseListData {

		public var dataField:String;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function DataGridListData(_arg1:String, _arg2:String, _arg3:int, _arg4:String, _arg5:IUIComponent, _arg6:int=0){
			super(_arg1, _arg4, _arg5, _arg6, _arg3);
			this.dataField = _arg2;
		}
	}
}//package mx.controls.dataGridClasses 

****************

//BaseListData (mx.controls.listClasses.BaseListData)
package mx.controls.listClasses {
	import mx.core.*;

	public class BaseListData {

		private var _uid:String;
		public var owner:IUIComponent;
		public var label:String;
		public var rowIndex:int;
		public var columnIndex:int;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function BaseListData(_arg1:String, _arg2:String, _arg3:IUIComponent, _arg4:int=0, _arg5:int=0){
			this.label = _arg1;
			this.uid = _arg2;
			this.owner = _arg3;
			this.rowIndex = _arg4;
			this.columnIndex = _arg5;
		}
		public function set uid(_arg1:String):void{
			_uid = _arg1;
		}
		public function get uid():String{
			return (_uid);
		}

	}
}//package mx.controls.listClasses 

****************

//IDropInListItemRenderer (mx.controls.listClasses.IDropInListItemRenderer)
package mx.controls.listClasses {

	public interface IDropInListItemRenderer {

		function get listData():BaseListData;
		function set listData(_arg1:BaseListData):void;

	}
}//package mx.controls.listClasses 

****************

//IListItemRenderer (mx.controls.listClasses.IListItemRenderer)
package mx.controls.listClasses {
	import mx.core.*;
	import flash.events.*;
	import mx.managers.*;
	import mx.styles.*;

	public interface IListItemRenderer extends IDataRenderer, IEventDispatcher, IFlexDisplayObject, ILayoutManagerClient, ISimpleStyleClient, IUIComponent {

	}
}//package mx.controls.listClasses 

****************

//ScrollBar (mx.controls.scrollClasses.ScrollBar)
package mx.controls.scrollClasses {
	import mx.core.*;
	import mx.events.*;
	import flash.events.*;
	import flash.display.*;
	import flash.geom.*;
	import mx.styles.*;
	import mx.controls.*;
	import flash.utils.*;
	import flash.ui.*;

	public class ScrollBar extends UIComponent {

		private var _direction:String;// = "vertical"
		private var _pageScrollSize:Number;// = 0
		mx_internal var scrollTrack:Button;
		mx_internal var downArrow:Button;
		mx_internal var scrollThumb:ScrollThumb;
		private var trackScrollRepeatDirection:int;
		private var _minScrollPosition:Number;// = 0
		private var trackPosition:Number;
		private var _pageSize:Number;// = 0
		mx_internal var _minHeight:Number;// = 32
		private var _maxScrollPosition:Number;// = 0
		private var trackScrollTimer:Timer;
		mx_internal var upArrow:Button;
		private var _lineScrollSize:Number;// = 1
		private var _scrollPosition:Number;// = 0
		private var trackScrolling:Boolean;// = false
		mx_internal var isScrolling:Boolean;
		mx_internal var oldPosition:Number;
		mx_internal var _minWidth:Number;// = 16

		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const THICKNESS:Number = 16;

		override public function set enabled(_arg1:Boolean):void{
			super.enabled = _arg1;
			invalidateDisplayList();
		}
		public function set lineScrollSize(_arg1:Number):void{
			_lineScrollSize = _arg1;
		}
		public function get minScrollPosition():Number{
			return (_minScrollPosition);
		}
		mx_internal function dispatchScrollEvent(_arg1:Number, _arg2:String):void{
			var _local3:ScrollEvent = new ScrollEvent(ScrollEvent.SCROLL);
			_local3.detail = _arg2;
			_local3.position = scrollPosition;
			_local3.delta = (scrollPosition - _arg1);
			_local3.direction = direction;
			dispatchEvent(_local3);
		}
		private function downArrow_buttonDownHandler(_arg1:FlexEvent):void{
			if (isNaN(oldPosition)){
				oldPosition = scrollPosition;
			};
			lineScroll(1);
		}
		private function scrollTrack_mouseDownHandler(_arg1:MouseEvent):void{
			if (!(((_arg1.target == this)) || ((_arg1.target == scrollTrack)))){
				return;
			};
			trackScrolling = true;
			var _local2:DisplayObject = systemManager.getSandboxRoot();
			_local2.addEventListener(MouseEvent.MOUSE_UP, scrollTrack_mouseUpHandler, true);
			_local2.addEventListener(MouseEvent.MOUSE_MOVE, scrollTrack_mouseMoveHandler, true);
			_local2.addEventListener(SandboxMouseEvent.MOUSE_UP_SOMEWHERE, scrollTrack_mouseLeaveHandler);
			systemManager.deployMouseShields(true);
			var _local3:Point = new Point(_arg1.localX, _arg1.localY);
			_local3 = _arg1.target.localToGlobal(_local3);
			_local3 = globalToLocal(_local3);
			trackPosition = _local3.y;
			if (isNaN(oldPosition)){
				oldPosition = scrollPosition;
			};
			trackScrollRepeatDirection = (((scrollThumb.y + scrollThumb.height) < _local3.y)) ? 1 : ((scrollThumb.y > _local3.y)) ? -1 : 0;
			pageScroll(trackScrollRepeatDirection);
			if (!trackScrollTimer){
				trackScrollTimer = new Timer(getStyle("repeatDelay"), 1);
				trackScrollTimer.addEventListener(TimerEvent.TIMER, trackScrollTimerHandler);
			} else {
				trackScrollTimer.delay = getStyle("repeatDelay");
				trackScrollTimer.repeatCount = 1;
			};
			trackScrollTimer.start();
		}
		public function set minScrollPosition(_arg1:Number):void{
			_minScrollPosition = _arg1;
			invalidateDisplayList();
		}
		public function get scrollPosition():Number{
			return (_scrollPosition);
		}
		mx_internal function get linePlusDetail():String{
			return (((direction == ScrollBarDirection.VERTICAL)) ? ScrollEventDetail.LINE_DOWN : ScrollEventDetail.LINE_RIGHT);
		}
		public function get maxScrollPosition():Number{
			return (_maxScrollPosition);
		}
		protected function get thumbStyleFilters():Object{
			return (null);
		}
		override public function set doubleClickEnabled(_arg1:Boolean):void{
		}
		public function get lineScrollSize():Number{
			return (_lineScrollSize);
		}
		mx_internal function get virtualHeight():Number{
			return (unscaledHeight);
		}
		public function set scrollPosition(_arg1:Number):void{
			var _local2:Number;
			var _local3:Number;
			var _local4:Number;
			_scrollPosition = _arg1;
			if (scrollThumb){
				if (!cacheAsBitmap){
					cacheHeuristic = (scrollThumb.cacheHeuristic = true);
				};
				if (!isScrolling){
					_arg1 = Math.min(_arg1, maxScrollPosition);
					_arg1 = Math.max(_arg1, minScrollPosition);
					_local2 = (maxScrollPosition - minScrollPosition);
					_local3 = ((((_local2 == 0)) || (isNaN(_local2)))) ? 0 : ((((_arg1 - minScrollPosition) * (trackHeight - scrollThumb.height)) / _local2) + trackY);
					_local4 = (((virtualWidth - scrollThumb.width) / 2) + getStyle("thumbOffset"));
					scrollThumb.move(Math.round(_local4), Math.round(_local3));
				};
			};
		}
		protected function get downArrowStyleFilters():Object{
			return (null);
		}
		public function get pageSize():Number{
			return (_pageSize);
		}
		public function set pageScrollSize(_arg1:Number):void{
			_pageScrollSize = _arg1;
		}
		public function set maxScrollPosition(_arg1:Number):void{
			_maxScrollPosition = _arg1;
			invalidateDisplayList();
		}
		mx_internal function pageScroll(_arg1:int):void{
			var _local4:Number;
			var _local5:String;
			var _local2:Number = ((_pageScrollSize)!=0) ? _pageScrollSize : pageSize;
			var _local3:Number = (_scrollPosition + (_arg1 * _local2));
			if (_local3 > maxScrollPosition){
				_local3 = maxScrollPosition;
			} else {
				if (_local3 < minScrollPosition){
					_local3 = minScrollPosition;
				};
			};
			if (_local3 != scrollPosition){
				_local4 = scrollPosition;
				scrollPosition = _local3;
				_local5 = ((_arg1 < 0)) ? pageMinusDetail : pagePlusDetail;
				dispatchScrollEvent(_local4, _local5);
			};
		}
		override protected function createChildren():void{
			super.createChildren();
			if (!scrollTrack){
				scrollTrack = new Button();
				scrollTrack.focusEnabled = false;
				scrollTrack.skinName = "trackSkin";
				scrollTrack.upSkinName = "trackUpSkin";
				scrollTrack.overSkinName = "trackOverSkin";
				scrollTrack.downSkinName = "trackDownSkin";
				scrollTrack.disabledSkinName = "trackDisabledSkin";
				if ((scrollTrack is ISimpleStyleClient)){
					ISimpleStyleClient(scrollTrack).styleName = this;
				};
				addChild(scrollTrack);
				scrollTrack.validateProperties();
			};
			if (!upArrow){
				upArrow = new Button();
				upArrow.enabled = false;
				upArrow.autoRepeat = true;
				upArrow.focusEnabled = false;
				upArrow.upSkinName = "upArrowUpSkin";
				upArrow.overSkinName = "upArrowOverSkin";
				upArrow.downSkinName = "upArrowDownSkin";
				upArrow.disabledSkinName = "upArrowDisabledSkin";
				upArrow.skinName = "upArrowSkin";
				upArrow.upIconName = "";
				upArrow.overIconName = "";
				upArrow.downIconName = "";
				upArrow.disabledIconName = "";
				addChild(upArrow);
				upArrow.styleName = new StyleProxy(this, upArrowStyleFilters);
				upArrow.validateProperties();
				upArrow.addEventListener(FlexEvent.BUTTON_DOWN, upArrow_buttonDownHandler);
			};
			if (!downArrow){
				downArrow = new Button();
				downArrow.enabled = false;
				downArrow.autoRepeat = true;
				downArrow.focusEnabled = false;
				downArrow.upSkinName = "downArrowUpSkin";
				downArrow.overSkinName = "downArrowOverSkin";
				downArrow.downSkinName = "downArrowDownSkin";
				downArrow.disabledSkinName = "downArrowDisabledSkin";
				downArrow.skinName = "downArrowSkin";
				downArrow.upIconName = "";
				downArrow.overIconName = "";
				downArrow.downIconName = "";
				downArrow.disabledIconName = "";
				addChild(downArrow);
				downArrow.styleName = new StyleProxy(this, downArrowStyleFilters);
				downArrow.validateProperties();
				downArrow.addEventListener(FlexEvent.BUTTON_DOWN, downArrow_buttonDownHandler);
			};
		}
		private function scrollTrack_mouseOverHandler(_arg1:MouseEvent):void{
			if (!(((_arg1.target == this)) || ((_arg1.target == scrollTrack)))){
				return;
			};
			if (trackScrolling){
				trackScrollTimer.start();
			};
		}
		private function get minDetail():String{
			return (((direction == ScrollBarDirection.VERTICAL)) ? ScrollEventDetail.AT_TOP : ScrollEventDetail.AT_LEFT);
		}
		mx_internal function isScrollBarKey(_arg1:uint):Boolean{
			var _local2:Number;
			if (_arg1 == Keyboard.HOME){
				if (scrollPosition != 0){
					_local2 = scrollPosition;
					scrollPosition = 0;
					dispatchScrollEvent(_local2, minDetail);
				};
				return (true);
			} else {
				if (_arg1 == Keyboard.END){
					if (scrollPosition < maxScrollPosition){
						_local2 = scrollPosition;
						scrollPosition = maxScrollPosition;
						dispatchScrollEvent(_local2, maxDetail);
					};
					return (true);
				};
			};
			return (false);
		}
		mx_internal function get lineMinusDetail():String{
			return (((direction == ScrollBarDirection.VERTICAL)) ? ScrollEventDetail.LINE_UP : ScrollEventDetail.LINE_LEFT);
		}
		mx_internal function get pageMinusDetail():String{
			return (((direction == ScrollBarDirection.VERTICAL)) ? ScrollEventDetail.PAGE_UP : ScrollEventDetail.PAGE_LEFT);
		}
		private function get maxDetail():String{
			return (((direction == ScrollBarDirection.VERTICAL)) ? ScrollEventDetail.AT_BOTTOM : ScrollEventDetail.AT_RIGHT);
		}
		private function scrollTrack_mouseLeaveHandler(_arg1:Event):void{
			trackScrolling = false;
			var _local2:DisplayObject = systemManager.getSandboxRoot();
			_local2.removeEventListener(MouseEvent.MOUSE_UP, scrollTrack_mouseUpHandler, true);
			_local2.removeEventListener(MouseEvent.MOUSE_MOVE, scrollTrack_mouseMoveHandler, true);
			_local2.removeEventListener(SandboxMouseEvent.MOUSE_UP_SOMEWHERE, scrollTrack_mouseLeaveHandler);
			systemManager.deployMouseShields(false);
			if (trackScrollTimer){
				trackScrollTimer.reset();
			};
			if (_arg1.target != scrollTrack){
				return;
			};
			var _local3:String = ((oldPosition > scrollPosition)) ? pageMinusDetail : pagePlusDetail;
			dispatchScrollEvent(oldPosition, _local3);
			oldPosition = NaN;
		}
		protected function get upArrowStyleFilters():Object{
			return (null);
		}
		private function get trackHeight():Number{
			return ((virtualHeight - (upArrow.getExplicitOrMeasuredHeight() + downArrow.getExplicitOrMeasuredHeight())));
		}
		public function get pageScrollSize():Number{
			return (_pageScrollSize);
		}
		override protected function measure():void{
			super.measure();
			upArrow.validateSize();
			downArrow.validateSize();
			scrollTrack.validateSize();
			if (FlexVersion.compatibilityVersion >= FlexVersion.VERSION_3_0){
				_minWidth = (scrollThumb) ? scrollThumb.getExplicitOrMeasuredWidth() : 0;
				_minWidth = Math.max(scrollTrack.getExplicitOrMeasuredWidth(), upArrow.getExplicitOrMeasuredWidth(), downArrow.getExplicitOrMeasuredWidth(), _minWidth);
			} else {
				_minWidth = upArrow.getExplicitOrMeasuredWidth();
			};
			_minHeight = (upArrow.getExplicitOrMeasuredHeight() + downArrow.getExplicitOrMeasuredHeight());
		}
		mx_internal function lineScroll(_arg1:int):void{
			var _local4:Number;
			var _local5:String;
			var _local2:Number = _lineScrollSize;
			var _local3:Number = (_scrollPosition + (_arg1 * _local2));
			if (_local3 > maxScrollPosition){
				_local3 = maxScrollPosition;
			} else {
				if (_local3 < minScrollPosition){
					_local3 = minScrollPosition;
				};
			};
			if (_local3 != scrollPosition){
				_local4 = scrollPosition;
				scrollPosition = _local3;
				_local5 = ((_arg1 < 0)) ? lineMinusDetail : linePlusDetail;
				dispatchScrollEvent(_local4, _local5);
			};
		}
		public function setScrollProperties(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number=0):void{
			var _local5:Number;
			this.pageSize = _arg1;
			_pageScrollSize = ((_arg4)>0) ? _arg4 : _arg1;
			this.minScrollPosition = Math.max(_arg2, 0);
			this.maxScrollPosition = Math.max(_arg3, 0);
			_scrollPosition = Math.max(this.minScrollPosition, _scrollPosition);
			_scrollPosition = Math.min(this.maxScrollPosition, _scrollPosition);
			if (((((this.maxScrollPosition - this.minScrollPosition) > 0)) && (enabled))){
				upArrow.enabled = true;
				downArrow.enabled = true;
				scrollTrack.enabled = true;
				addEventListener(MouseEvent.MOUSE_DOWN, scrollTrack_mouseDownHandler);
				addEventListener(MouseEvent.MOUSE_OVER, scrollTrack_mouseOverHandler);
				addEventListener(MouseEvent.MOUSE_OUT, scrollTrack_mouseOutHandler);
				if (!scrollThumb){
					scrollThumb = new ScrollThumb();
					scrollThumb.focusEnabled = false;
					addChildAt(scrollThumb, getChildIndex(downArrow));
					scrollThumb.styleName = new StyleProxy(this, thumbStyleFilters);
					scrollThumb.upSkinName = "thumbUpSkin";
					scrollThumb.overSkinName = "thumbOverSkin";
					scrollThumb.downSkinName = "thumbDownSkin";
					scrollThumb.iconName = "thumbIcon";
					scrollThumb.skinName = "thumbSkin";
				};
				_local5 = ((trackHeight < 0)) ? 0 : Math.round(((_arg1 / ((this.maxScrollPosition - this.minScrollPosition) + _arg1)) * trackHeight));
				if (_local5 < scrollThumb.minHeight){
					if (trackHeight < scrollThumb.minHeight){
						scrollThumb.visible = false;
					} else {
						_local5 = scrollThumb.minHeight;
						scrollThumb.visible = true;
						scrollThumb.setActualSize(scrollThumb.measuredWidth, scrollThumb.minHeight);
					};
				} else {
					scrollThumb.visible = true;
					scrollThumb.setActualSize(scrollThumb.measuredWidth, _local5);
				};
				scrollThumb.setRange((upArrow.getExplicitOrMeasuredHeight() + 0), ((virtualHeight - downArrow.getExplicitOrMeasuredHeight()) - scrollThumb.height), this.minScrollPosition, this.maxScrollPosition);
				scrollPosition = Math.max(Math.min(scrollPosition, this.maxScrollPosition), this.minScrollPosition);
			} else {
				upArrow.enabled = false;
				downArrow.enabled = false;
				scrollTrack.enabled = false;
				if (scrollThumb){
					scrollThumb.visible = false;
				};
			};
		}
		private function trackScrollTimerHandler(_arg1:Event):void{
			if (trackScrollRepeatDirection == 1){
				if ((scrollThumb.y + scrollThumb.height) > trackPosition){
					return;
				};
			};
			if (trackScrollRepeatDirection == -1){
				if (scrollThumb.y < trackPosition){
					return;
				};
			};
			pageScroll(trackScrollRepeatDirection);
			if (((trackScrollTimer) && ((trackScrollTimer.repeatCount == 1)))){
				trackScrollTimer.delay = getStyle("repeatInterval");
				trackScrollTimer.repeatCount = 0;
			};
		}
		private function upArrow_buttonDownHandler(_arg1:FlexEvent):void{
			if (isNaN(oldPosition)){
				oldPosition = scrollPosition;
			};
			lineScroll(-1);
		}
		public function set pageSize(_arg1:Number):void{
			_pageSize = _arg1;
		}
		private function get trackY():Number{
			return (upArrow.getExplicitOrMeasuredHeight());
		}
		private function scrollTrack_mouseOutHandler(_arg1:MouseEvent):void{
			if (trackScrolling){
				trackScrollTimer.stop();
			};
		}
		private function scrollTrack_mouseUpHandler(_arg1:MouseEvent):void{
			scrollTrack_mouseLeaveHandler(_arg1);
		}
		private function scrollTrack_mouseMoveHandler(_arg1:MouseEvent):void{
			var _local2:Point;
			if (trackScrolling){
				_local2 = new Point(_arg1.stageX, _arg1.stageY);
				_local2 = globalToLocal(_local2);
				trackPosition = _local2.y;
			};
		}
		override protected function updateDisplayList(_arg1:Number, _arg2:Number):void{
			if ($height == 1){
				return;
			};
			if (!upArrow){
				return;
			};
			super.updateDisplayList(_arg1, _arg2);
			if (cacheAsBitmap){
				cacheHeuristic = (scrollThumb.cacheHeuristic = false);
			};
			upArrow.setActualSize(upArrow.getExplicitOrMeasuredWidth(), upArrow.getExplicitOrMeasuredHeight());
			if (FlexVersion.compatibilityVersion >= FlexVersion.VERSION_3_0){
				upArrow.move(((virtualWidth - upArrow.width) / 2), 0);
			} else {
				upArrow.move(0, 0);
			};
			scrollTrack.setActualSize(scrollTrack.getExplicitOrMeasuredWidth(), virtualHeight);
			if (FlexVersion.compatibilityVersion >= FlexVersion.VERSION_3_0){
				scrollTrack.x = ((virtualWidth - scrollTrack.width) / 2);
			};
			scrollTrack.y = 0;
			downArrow.setActualSize(downArrow.getExplicitOrMeasuredWidth(), downArrow.getExplicitOrMeasuredHeight());
			if (FlexVersion.compatibilityVersion >= FlexVersion.VERSION_3_0){
				downArrow.move(((virtualWidth - downArrow.width) / 2), (virtualHeight - downArrow.getExplicitOrMeasuredHeight()));
			} else {
				downArrow.move(0, (virtualHeight - downArrow.getExplicitOrMeasuredHeight()));
			};
			setScrollProperties(pageSize, minScrollPosition, maxScrollPosition, _pageScrollSize);
			scrollPosition = _scrollPosition;
		}
		mx_internal function get pagePlusDetail():String{
			return (((direction == ScrollBarDirection.VERTICAL)) ? ScrollEventDetail.PAGE_DOWN : ScrollEventDetail.PAGE_RIGHT);
		}
		mx_internal function get virtualWidth():Number{
			return (unscaledWidth);
		}
		public function set direction(_arg1:String):void{
			_direction = _arg1;
			invalidateSize();
			invalidateDisplayList();
			dispatchEvent(new Event("directionChanged"));
		}
		public function get direction():String{
			return (_direction);
		}

	}
}//package mx.controls.scrollClasses 

****************

//ScrollBarDirection (mx.controls.scrollClasses.ScrollBarDirection)
package mx.controls.scrollClasses {

	public final class ScrollBarDirection {

		public static const HORIZONTAL:String = "horizontal";
		public static const VERTICAL:String = "vertical";
		mx_internal static const VERSION:String = "3.5.0.12683";

	}
}//package mx.controls.scrollClasses 

****************

//ScrollThumb (mx.controls.scrollClasses.ScrollThumb)
package mx.controls.scrollClasses {
	import mx.events.*;
	import flash.events.*;
	import flash.geom.*;
	import mx.controls.*;

	public class ScrollThumb extends Button {

		private var lastY:Number;
		private var datamin:Number;
		private var ymax:Number;
		private var ymin:Number;
		private var datamax:Number;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function ScrollThumb(){
			explicitMinHeight = 10;
			stickyHighlighting = true;
		}
		private function stopDragThumb():void{
			var _local1:ScrollBar = ScrollBar(parent);
			_local1.isScrolling = false;
			_local1.dispatchScrollEvent(_local1.oldPosition, ScrollEventDetail.THUMB_POSITION);
			_local1.oldPosition = NaN;
			systemManager.getSandboxRoot().removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler, true);
		}
		override protected function mouseDownHandler(_arg1:MouseEvent):void{
			super.mouseDownHandler(_arg1);
			var _local2:ScrollBar = ScrollBar(parent);
			_local2.oldPosition = _local2.scrollPosition;
			lastY = _arg1.localY;
			systemManager.getSandboxRoot().addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler, true);
		}
		private function mouseMoveHandler(_arg1:MouseEvent):void{
			if (ymin == ymax){
				return;
			};
			var _local2:Point = new Point(_arg1.stageX, _arg1.stageY);
			_local2 = globalToLocal(_local2);
			var _local3:Number = (_local2.y - lastY);
			_local3 = (_local3 + y);
			if (_local3 < ymin){
				_local3 = ymin;
			} else {
				if (_local3 > ymax){
					_local3 = ymax;
				};
			};
			var _local4:ScrollBar = ScrollBar(parent);
			_local4.isScrolling = true;
			$y = _local3;
			var _local5:Number = _local4.scrollPosition;
			var _local6:Number = (Math.round((((datamax - datamin) * (y - ymin)) / (ymax - ymin))) + datamin);
			_local4.scrollPosition = _local6;
			_local4.dispatchScrollEvent(_local5, ScrollEventDetail.THUMB_TRACK);
			_arg1.updateAfterEvent();
		}
		override mx_internal function buttonReleased():void{
			super.buttonReleased();
			stopDragThumb();
		}
		mx_internal function setRange(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):void{
			this.ymin = _arg1;
			this.ymax = _arg2;
			this.datamin = _arg3;
			this.datamax = _arg4;
		}

	}
}//package mx.controls.scrollClasses 

****************

//Button (mx.controls.Button)
package mx.controls {
	import mx.core.*;
	import mx.events.*;
	import flash.events.*;
	import flash.display.*;
	import mx.managers.*;
	import mx.styles.*;
	import flash.text.*;
	import flash.utils.*;
	import mx.controls.listClasses.*;
	import flash.ui.*;
	import mx.controls.dataGridClasses.*;

	public class Button extends UIComponent implements IDataRenderer, IDropInListItemRenderer, IFocusManagerComponent, IListItemRenderer, IFontContextComponent, IButton {

		mx_internal var _emphasized:Boolean;// = false
		mx_internal var extraSpacing:Number;// = 20
		private var icons:Array;
		public var selectedField:String;// = null
		private var labelChanged:Boolean;// = false
		private var skinMeasuredWidth:Number;
		mx_internal var checkedDefaultSkin:Boolean;// = false
		private var autoRepeatTimer:Timer;
		mx_internal var disabledIconName:String;// = "disabledIcon"
		mx_internal var disabledSkinName:String;// = "disabledSkin"
		mx_internal var checkedDefaultIcon:Boolean;// = false
		public var stickyHighlighting:Boolean;// = false
		private var enabledChanged:Boolean;// = false
		mx_internal var selectedUpIconName:String;// = "selectedUpIcon"
		mx_internal var selectedUpSkinName:String;// = "selectedUpSkin"
		mx_internal var upIconName:String;// = "upIcon"
		mx_internal var upSkinName:String;// = "upSkin"
		mx_internal var centerContent:Boolean;// = true
		mx_internal var buttonOffset:Number;// = 0
		private var skinMeasuredHeight:Number;
		private var oldUnscaledWidth:Number;
		mx_internal var downIconName:String;// = "downIcon"
		mx_internal var _labelPlacement:String;// = "right"
		mx_internal var downSkinName:String;// = "downSkin"
		mx_internal var _toggle:Boolean;// = false
		private var _phase:String;// = "up"
		private var toolTipSet:Boolean;// = false
		private var _data:Object;
		mx_internal var currentIcon:IFlexDisplayObject;
		mx_internal var currentSkin:IFlexDisplayObject;
		mx_internal var overIconName:String;// = "overIcon"
		mx_internal var selectedDownIconName:String;// = "selectedDownIcon"
		mx_internal var overSkinName:String;// = "overSkin"
		mx_internal var iconName:String;// = "icon"
		mx_internal var skinName:String;// = "skin"
		mx_internal var selectedDownSkinName:String;// = "selectedDownSkin"
		private var skins:Array;
		private var selectedSet:Boolean;
		private var _autoRepeat:Boolean;// = false
		private var styleChangedFlag:Boolean;// = true
		mx_internal var selectedOverIconName:String;// = "selectedOverIcon"
		private var _listData:BaseListData;
		mx_internal var selectedOverSkinName:String;// = "selectedOverSkin"
		protected var textField:IUITextField;
		private var labelSet:Boolean;
		mx_internal var defaultIconUsesStates:Boolean;// = false
		mx_internal var defaultSkinUsesStates:Boolean;// = false
		mx_internal var toggleChanged:Boolean;// = false
		private var emphasizedChanged:Boolean;// = false
		private var _label:String;// = ""
		mx_internal var _selected:Boolean;// = false
		mx_internal var selectedDisabledIconName:String;// = "selectedDisabledIcon"
		mx_internal var selectedDisabledSkinName:String;// = "selectedDisabledSkin"

		mx_internal static const VERSION:String = "3.5.0.12683";

		mx_internal static var createAccessibilityImplementation:Function;
		mx_internal static var TEXT_WIDTH_PADDING:Number = 6;

		public function Button(){
			skins = [];
			icons = [];
			super();
			mouseChildren = false;
			addEventListener(MouseEvent.ROLL_OVER, rollOverHandler);
			addEventListener(MouseEvent.ROLL_OUT, rollOutHandler);
			addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
			addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
			addEventListener(MouseEvent.CLICK, clickHandler);
		}
		private function previousVersion_measure():void{
			var bm:EdgeMetrics;
			var lineMetrics:TextLineMetrics;
			var paddingLeft:Number;
			var paddingRight:Number;
			var paddingTop:Number;
			var paddingBottom:Number;
			var horizontalGap:Number;
			super.measure();
			var textWidth:Number = 0;
			var textHeight:Number = 0;
			if (label){
				lineMetrics = measureText(label);
				textWidth = lineMetrics.width;
				textHeight = lineMetrics.height;
				paddingLeft = getStyle("paddingLeft");
				paddingRight = getStyle("paddingRight");
				paddingTop = getStyle("paddingTop");
				paddingBottom = getStyle("paddingBottom");
				textWidth = (textWidth + ((paddingLeft + paddingRight) + getStyle("textIndent")));
				textHeight = (textHeight + (paddingTop + paddingBottom));
			};
			try {
				bm = currentSkin["borderMetrics"];
			} catch(e:Error) {
				bm = new EdgeMetrics(3, 3, 3, 3);
			};
			var tempCurrentIcon:IFlexDisplayObject = getCurrentIcon();
			var iconWidth:Number = (tempCurrentIcon) ? tempCurrentIcon.width : 0;
			var iconHeight:Number = (tempCurrentIcon) ? tempCurrentIcon.height : 0;
			var w:Number = 0;
			var h:Number = 0;
			if ((((labelPlacement == ButtonLabelPlacement.LEFT)) || ((labelPlacement == ButtonLabelPlacement.RIGHT)))){
				w = (textWidth + iconWidth);
				if (iconWidth != 0){
					horizontalGap = getStyle("horizontalGap");
					w = (w + (horizontalGap - 2));
				};
				h = Math.max(textHeight, (iconHeight + 6));
			} else {
				w = Math.max(textWidth, iconWidth);
				h = (textHeight + iconHeight);
				if (iconHeight != 0){
					h = (h + getStyle("verticalGap"));
				};
			};
			if (bm){
				w = (w + (bm.left + bm.right));
				h = (h + (bm.top + bm.bottom));
			};
			if (((label) && (!((label.length == 0))))){
				w = (w + extraSpacing);
			} else {
				w = (w + 6);
			};
			if (((currentSkin) && (((isNaN(skinMeasuredWidth)) || (isNaN(skinMeasuredHeight)))))){
				skinMeasuredWidth = currentSkin.measuredWidth;
				skinMeasuredHeight = currentSkin.measuredHeight;
			};
			if (!isNaN(skinMeasuredWidth)){
				w = Math.max(skinMeasuredWidth, w);
			};
			if (!isNaN(skinMeasuredHeight)){
				h = Math.max(skinMeasuredHeight, h);
			};
			measuredMinWidth = (measuredWidth = w);
			measuredMinHeight = (measuredHeight = h);
		}
		public function get label():String{
			return (_label);
		}
		mx_internal function getCurrentIconName():String{
			var _local1:String;
			if (!enabled){
				_local1 = (selected) ? selectedDisabledIconName : disabledIconName;
			} else {
				if (phase == ButtonPhase.UP){
					_local1 = (selected) ? selectedUpIconName : upIconName;
				} else {
					if (phase == ButtonPhase.OVER){
						_local1 = (selected) ? selectedOverIconName : overIconName;
					} else {
						if (phase == ButtonPhase.DOWN){
							_local1 = (selected) ? selectedDownIconName : downIconName;
						};
					};
				};
			};
			return (_local1);
		}
		protected function mouseUpHandler(_arg1:MouseEvent):void{
			if (!enabled){
				return;
			};
			phase = ButtonPhase.OVER;
			buttonReleased();
			if (!toggle){
				_arg1.updateAfterEvent();
			};
		}
		override protected function adjustFocusRect(_arg1:DisplayObject=null):void{
			super.adjustFocusRect((currentSkin) ? this : DisplayObject(currentIcon));
		}
		mx_internal function set phase(_arg1:String):void{
			_phase = _arg1;
			invalidateSize();
			invalidateDisplayList();
		}
		mx_internal function viewIconForPhase(_arg1:String):IFlexDisplayObject{
			var _local3:IFlexDisplayObject;
			var _local4:Boolean;
			var _local5:String;
			var _local2:Class = Class(getStyle(_arg1));
			if (!_local2){
				_local2 = Class(getStyle(iconName));
				if (defaultIconUsesStates){
					_arg1 = iconName;
				};
				if (((!(checkedDefaultIcon)) && (_local2))){
					_local3 = IFlexDisplayObject(new (_local2));
					if (((!((_local3 is IProgrammaticSkin))) && ((_local3 is IStateClient)))){
						defaultIconUsesStates = true;
						_arg1 = iconName;
					};
					if (_local3){
						checkedDefaultIcon = true;
					};
				};
			};
			_local3 = IFlexDisplayObject(getChildByName(_arg1));
			if (_local3 == null){
				if (_local2 != null){
					_local3 = IFlexDisplayObject(new (_local2));
					_local3.name = _arg1;
					if ((_local3 is ISimpleStyleClient)){
						ISimpleStyleClient(_local3).styleName = this;
					};
					addChild(DisplayObject(_local3));
					_local4 = false;
					if ((_local3 is IInvalidating)){
						IInvalidating(_local3).validateNow();
						_local4 = true;
					} else {
						if ((_local3 is IProgrammaticSkin)){
							IProgrammaticSkin(_local3).validateDisplayList();
							_local4 = true;
						};
					};
					if (((_local3) && ((_local3 is IUIComponent)))){
						IUIComponent(_local3).enabled = enabled;
					};
					if (_local4){
						_local3.setActualSize(_local3.measuredWidth, _local3.measuredHeight);
					};
					icons.push(_local3);
				};
			};
			if (currentIcon != null){
				currentIcon.visible = false;
			};
			currentIcon = _local3;
			if (((defaultIconUsesStates) && ((currentIcon is IStateClient)))){
				_local5 = "";
				if (!enabled){
					_local5 = (selected) ? "selectedDisabled" : "disabled";
				} else {
					if (phase == ButtonPhase.UP){
						_local5 = (selected) ? "selectedUp" : "up";
					} else {
						if (phase == ButtonPhase.OVER){
							_local5 = (selected) ? "selectedOver" : "over";
						} else {
							if (phase == ButtonPhase.DOWN){
								_local5 = (selected) ? "selectedDown" : "down";
							};
						};
					};
				};
				IStateClient(currentIcon).currentState = _local5;
			};
			if (currentIcon != null){
				currentIcon.visible = true;
			};
			return (_local3);
		}
		mx_internal function viewSkinForPhase(_arg1:String, _arg2:String):void{
			var _local4:IFlexDisplayObject;
			var _local5:Number;
			var _local6:ISimpleStyleClient;
			var _local3:Class = Class(getStyle(_arg1));
			if (!_local3){
				_local3 = Class(getStyle(skinName));
				if (defaultSkinUsesStates){
					_arg1 = skinName;
				};
				if (((!(checkedDefaultSkin)) && (_local3))){
					_local4 = IFlexDisplayObject(new (_local3));
					if (((!((_local4 is IProgrammaticSkin))) && ((_local4 is IStateClient)))){
						defaultSkinUsesStates = true;
						_arg1 = skinName;
					};
					if (_local4){
						checkedDefaultSkin = true;
					};
				};
			};
			_local4 = IFlexDisplayObject(getChildByName(_arg1));
			if (!_local4){
				if (_local3){
					_local4 = IFlexDisplayObject(new (_local3));
					_local4.name = _arg1;
					_local6 = (_local4 as ISimpleStyleClient);
					if (_local6){
						_local6.styleName = this;
					};
					addChild(DisplayObject(_local4));
					_local4.setActualSize(unscaledWidth, unscaledHeight);
					if ((((_local4 is IInvalidating)) && (initialized))){
						IInvalidating(_local4).validateNow();
					} else {
						if ((((_local4 is IProgrammaticSkin)) && (initialized))){
							IProgrammaticSkin(_local4).validateDisplayList();
						};
					};
					skins.push(_local4);
				};
			};
			if (currentSkin){
				currentSkin.visible = false;
			};
			currentSkin = _local4;
			if (((defaultSkinUsesStates) && ((currentSkin is IStateClient)))){
				IStateClient(currentSkin).currentState = _arg2;
			};
			if (currentSkin){
				currentSkin.visible = true;
			};
			if (enabled){
				if (phase == ButtonPhase.OVER){
					_local5 = textField.getStyle("textRollOverColor");
				} else {
					if (phase == ButtonPhase.DOWN){
						_local5 = textField.getStyle("textSelectedColor");
					} else {
						_local5 = textField.getStyle("color");
					};
				};
				textField.setColor(_local5);
			};
		}
		mx_internal function getTextField():IUITextField{
			return (textField);
		}
		protected function rollOverHandler(_arg1:MouseEvent):void{
			if (phase == ButtonPhase.UP){
				if (_arg1.buttonDown){
					return;
				};
				phase = ButtonPhase.OVER;
				_arg1.updateAfterEvent();
			} else {
				if (phase == ButtonPhase.OVER){
					phase = ButtonPhase.DOWN;
					_arg1.updateAfterEvent();
					if (autoRepeatTimer){
						autoRepeatTimer.start();
					};
				};
			};
		}
		override protected function createChildren():void{
			super.createChildren();
			if (!textField){
				textField = IUITextField(createInFontContext(UITextField));
				textField.styleName = this;
				addChild(DisplayObject(textField));
			};
		}
		mx_internal function setSelected(_arg1:Boolean, _arg2:Boolean=false):void{
			if (_selected != _arg1){
				_selected = _arg1;
				invalidateDisplayList();
				if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0){
					if (toggle){
						dispatchEvent(new Event(Event.CHANGE));
					};
				} else {
					if (((toggle) && (!(_arg2)))){
						dispatchEvent(new Event(Event.CHANGE));
					};
				};
				dispatchEvent(new FlexEvent(FlexEvent.VALUE_COMMIT));
			};
		}
		private function autoRepeatTimer_timerDelayHandler(_arg1:Event):void{
			if (!enabled){
				return;
			};
			dispatchEvent(new FlexEvent(FlexEvent.BUTTON_DOWN));
			if (autoRepeat){
				autoRepeatTimer.reset();
				autoRepeatTimer.removeEventListener(TimerEvent.TIMER, autoRepeatTimer_timerDelayHandler);
				autoRepeatTimer.delay = getStyle("repeatInterval");
				autoRepeatTimer.addEventListener(TimerEvent.TIMER, autoRepeatTimer_timerHandler);
				autoRepeatTimer.start();
			};
		}
		public function get autoRepeat():Boolean{
			return (_autoRepeat);
		}
		public function set selected(_arg1:Boolean):void{
			selectedSet = true;
			setSelected(_arg1, true);
		}
		override protected function focusOutHandler(_arg1:FocusEvent):void{
			super.focusOutHandler(_arg1);
			if (phase != ButtonPhase.UP){
				phase = ButtonPhase.UP;
			};
		}
		public function get labelPlacement():String{
			return (_labelPlacement);
		}
		public function set autoRepeat(_arg1:Boolean):void{
			_autoRepeat = _arg1;
			if (_arg1){
				autoRepeatTimer = new Timer(1);
			} else {
				autoRepeatTimer = null;
			};
		}
		mx_internal function changeIcons():void{
			var _local1:int = icons.length;
			var _local2:int;
			while (_local2 < _local1) {
				removeChild(icons[_local2]);
				_local2++;
			};
			icons = [];
			checkedDefaultIcon = false;
			defaultIconUsesStates = false;
		}
		public function set data(_arg1:Object):void{
			var _local2:*;
			var _local3:*;
			_data = _arg1;
			if (((((_listData) && ((_listData is DataGridListData)))) && (!((DataGridListData(_listData).dataField == null))))){
				_local2 = _data[DataGridListData(_listData).dataField];
				_local3 = "";
			} else {
				if (_listData){
					if (selectedField){
						_local2 = _data[selectedField];
					};
					_local3 = _listData.label;
				} else {
					_local2 = _data;
				};
			};
			if (((!((_local2 === undefined))) && (!(selectedSet)))){
				selected = (_local2 as Boolean);
				selectedSet = false;
			};
			if (((!((_local3 === undefined))) && (!(labelSet)))){
				label = _local3;
				labelSet = false;
			};
			dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
		}
		mx_internal function getCurrentIcon():IFlexDisplayObject{
			var _local1:String = getCurrentIconName();
			if (!_local1){
				return (null);
			};
			return (viewIconForPhase(_local1));
		}
		public function get fontContext():IFlexModuleFactory{
			return (moduleFactory);
		}
		public function get emphasized():Boolean{
			return (_emphasized);
		}
		public function get listData():BaseListData{
			return (_listData);
		}
		mx_internal function layoutContents(_arg1:Number, _arg2:Number, _arg3:Boolean):void{
			var _local20:TextLineMetrics;
			var _local28:MoveEvent;
			if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0){
				previousVersion_layoutContents(_arg1, _arg2, _arg3);
				return;
			};
			var _local4:Number = 0;
			var _local5:Number = 0;
			var _local6:Number = 0;
			var _local7:Number = 0;
			var _local8:Number = 0;
			var _local9:Number = 0;
			var _local10:Number = 0;
			var _local11:Number = 0;
			var _local12:Number = 0;
			var _local13:Number = 0;
			var _local14:Number = getStyle("paddingLeft");
			var _local15:Number = getStyle("paddingRight");
			var _local16:Number = getStyle("paddingTop");
			var _local17:Number = getStyle("paddingBottom");
			var _local18:Number = 0;
			var _local19:Number = 0;
			if (label){
				_local20 = measureText(label);
				_local18 = (_local20.width + TEXT_WIDTH_PADDING);
				_local19 = (_local20.height + UITextField.TEXT_HEIGHT_PADDING);
			} else {
				_local20 = measureText("Wj");
				_local19 = (_local20.height + UITextField.TEXT_HEIGHT_PADDING);
			};
			var _local21:Number = (_arg3) ? buttonOffset : 0;
			var _local22:String = getStyle("textAlign");
			var _local23:Number = _arg1;
			var _local24:Number = _arg2;
			var _local25:EdgeMetrics = (((((currentSkin) && ((currentSkin is IBorder)))) && (!((currentSkin is IFlexAsset))))) ? IBorder(currentSkin).borderMetrics : null;
			if (_local25){
				_local23 = (_local23 - (_local25.left + _local25.right));
				_local24 = (_local24 - (_local25.top + _local25.bottom));
			};
			if (currentIcon){
				_local8 = currentIcon.width;
				_local9 = currentIcon.height;
			};
			if ((((labelPlacement == ButtonLabelPlacement.LEFT)) || ((labelPlacement == ButtonLabelPlacement.RIGHT)))){
				_local12 = getStyle("horizontalGap");
				if ((((_local8 == 0)) || ((_local18 == 0)))){
					_local12 = 0;
				};
				if (_local18 > 0){
					_local4 = Math.max(Math.min(((((_local23 - _local8) - _local12) - _local14) - _local15), _local18), 0);
					textField.width = _local4;
				} else {
					_local4 = 0;
					textField.width = _local4;
				};
				_local5 = Math.min(_local24, _local19);
				textField.height = _local5;
				if (_local22 == "left"){
					_local6 = (_local6 + _local14);
				} else {
					if (_local22 == "right"){
						_local6 = (_local6 + ((((_local23 - _local4) - _local8) - _local12) - _local15));
					} else {
						_local6 = (_local6 + (((((((_local23 - _local4) - _local8) - _local12) - _local14) - _local15) / 2) + _local14));
					};
				};
				if (labelPlacement == ButtonLabelPlacement.RIGHT){
					_local6 = (_local6 + (_local8 + _local12));
					_local10 = (_local6 - (_local8 + _local12));
				} else {
					_local10 = ((_local6 + _local4) + _local12);
				};
				_local11 = (((((_local24 - _local9) - _local16) - _local17) / 2) + _local16);
				_local7 = (((((_local24 - _local5) - _local16) - _local17) / 2) + _local16);
			} else {
				_local13 = getStyle("verticalGap");
				if ((((_local9 == 0)) || ((label == "")))){
					_local13 = 0;
				};
				if (_local18 > 0){
					_local4 = Math.max(((_local23 - _local14) - _local15), 0);
					textField.width = _local4;
					_local5 = Math.min(((((_local24 - _local9) - _local16) - _local17) - _local13), _local19);
					textField.height = _local5;
				} else {
					_local4 = 0;
					textField.width = _local4;
					_local5 = 0;
					textField.height = _local5;
				};
				_local6 = _local14;
				if (_local22 == "left"){
					_local10 = (_local10 + _local14);
				} else {
					if (_local22 == "right"){
						_local10 = (_local10 + Math.max(((_local23 - _local8) - _local15), _local14));
					} else {
						_local10 = (_local10 + (((((_local23 - _local8) - _local14) - _local15) / 2) + _local14));
					};
				};
				if (labelPlacement == ButtonLabelPlacement.TOP){
					_local7 = (_local7 + (((((((_local24 - _local5) - _local9) - _local16) - _local17) - _local13) / 2) + _local16));
					_local11 = (_local11 + ((_local7 + _local5) + _local13));
				} else {
					_local11 = (_local11 + (((((((_local24 - _local5) - _local9) - _local16) - _local17) - _local13) / 2) + _local16));
					_local7 = (_local7 + ((_local11 + _local9) + _local13));
				};
			};
			var _local26:Number = _local21;
			var _local27:Number = _local21;
			if (_local25){
				_local26 = (_local26 + _local25.left);
				_local27 = (_local27 + _local25.top);
			};
			textField.x = Math.round((_local6 + _local26));
			textField.y = Math.round((_local7 + _local27));
			if (currentIcon){
				_local10 = (_local10 + _local26);
				_local11 = (_local11 + _local27);
				_local28 = new MoveEvent(MoveEvent.MOVE);
				_local28.oldX = currentIcon.x;
				_local28.oldY = currentIcon.y;
				currentIcon.x = Math.round(_local10);
				currentIcon.y = Math.round(_local11);
				currentIcon.dispatchEvent(_local28);
			};
			if (currentSkin){
				setChildIndex(DisplayObject(currentSkin), (numChildren - 1));
			};
			if (currentIcon){
				setChildIndex(DisplayObject(currentIcon), (numChildren - 1));
			};
			if (textField){
				setChildIndex(DisplayObject(textField), (numChildren - 1));
			};
		}
		protected function mouseDownHandler(_arg1:MouseEvent):void{
			if (!enabled){
				return;
			};
			systemManager.getSandboxRoot().addEventListener(MouseEvent.MOUSE_UP, systemManager_mouseUpHandler, true);
			systemManager.getSandboxRoot().addEventListener(SandboxMouseEvent.MOUSE_UP_SOMEWHERE, stage_mouseLeaveHandler);
			buttonPressed();
			_arg1.updateAfterEvent();
		}
		override protected function keyDownHandler(_arg1:KeyboardEvent):void{
			if (!enabled){
				return;
			};
			if (_arg1.keyCode == Keyboard.SPACE){
				buttonPressed();
			};
		}
		protected function rollOutHandler(_arg1:MouseEvent):void{
			if (phase == ButtonPhase.OVER){
				phase = ButtonPhase.UP;
				_arg1.updateAfterEvent();
			} else {
				if ((((phase == ButtonPhase.DOWN)) && (!(stickyHighlighting)))){
					phase = ButtonPhase.OVER;
					_arg1.updateAfterEvent();
					if (autoRepeatTimer){
						autoRepeatTimer.stop();
					};
				};
			};
		}
		mx_internal function get phase():String{
			return (_phase);
		}
		override public function set enabled(_arg1:Boolean):void{
			if (super.enabled == _arg1){
				return;
			};
			super.enabled = _arg1;
			enabledChanged = true;
			invalidateProperties();
			invalidateDisplayList();
		}
		override protected function measure():void{
			var _local9:TextLineMetrics;
			if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0){
				previousVersion_measure();
				return;
			};
			super.measure();
			var _local1:Number = 0;
			var _local2:Number = 0;
			if (label){
				_local9 = measureText(label);
				_local1 = (_local9.width + TEXT_WIDTH_PADDING);
				_local2 = (_local9.height + UITextField.TEXT_HEIGHT_PADDING);
			};
			var _local3:IFlexDisplayObject = getCurrentIcon();
			var _local4:Number = (_local3) ? _local3.width : 0;
			var _local5:Number = (_local3) ? _local3.height : 0;
			var _local6:Number = 0;
			var _local7:Number = 0;
			if ((((labelPlacement == ButtonLabelPlacement.LEFT)) || ((labelPlacement == ButtonLabelPlacement.RIGHT)))){
				_local6 = (_local1 + _local4);
				if (((_local1) && (_local4))){
					_local6 = (_local6 + getStyle("horizontalGap"));
				};
				_local7 = Math.max(_local2, _local5);
			} else {
				_local6 = Math.max(_local1, _local4);
				_local7 = (_local2 + _local5);
				if (((_local2) && (_local5))){
					_local7 = (_local7 + getStyle("verticalGap"));
				};
			};
			if (((_local1) || (_local4))){
				_local6 = (_local6 + (getStyle("paddingLeft") + getStyle("paddingRight")));
				_local7 = (_local7 + (getStyle("paddingTop") + getStyle("paddingBottom")));
			};
			var _local8:EdgeMetrics = (((((currentSkin) && ((currentSkin is IBorder)))) && (!((currentSkin is IFlexAsset))))) ? IBorder(currentSkin).borderMetrics : null;
			if (_local8){
				_local6 = (_local6 + (_local8.left + _local8.right));
				_local7 = (_local7 + (_local8.top + _local8.bottom));
			};
			if (((currentSkin) && (((isNaN(skinMeasuredWidth)) || (isNaN(skinMeasuredHeight)))))){
				skinMeasuredWidth = currentSkin.measuredWidth;
				skinMeasuredHeight = currentSkin.measuredHeight;
			};
			if (!isNaN(skinMeasuredWidth)){
				_local6 = Math.max(skinMeasuredWidth, _local6);
			};
			if (!isNaN(skinMeasuredHeight)){
				_local7 = Math.max(skinMeasuredHeight, _local7);
			};
			measuredMinWidth = (measuredWidth = _local6);
			measuredMinHeight = (measuredHeight = _local7);
		}
		public function get toggle():Boolean{
			return (_toggle);
		}
		mx_internal function buttonReleased():void{
			systemManager.getSandboxRoot().removeEventListener(MouseEvent.MOUSE_UP, systemManager_mouseUpHandler, true);
			systemManager.getSandboxRoot().removeEventListener(SandboxMouseEvent.MOUSE_UP_SOMEWHERE, stage_mouseLeaveHandler);
			if (autoRepeatTimer){
				autoRepeatTimer.removeEventListener(TimerEvent.TIMER, autoRepeatTimer_timerDelayHandler);
				autoRepeatTimer.removeEventListener(TimerEvent.TIMER, autoRepeatTimer_timerHandler);
				autoRepeatTimer.reset();
			};
		}
		mx_internal function buttonPressed():void{
			phase = ButtonPhase.DOWN;
			dispatchEvent(new FlexEvent(FlexEvent.BUTTON_DOWN));
			if (autoRepeat){
				autoRepeatTimer.delay = getStyle("repeatDelay");
				autoRepeatTimer.addEventListener(TimerEvent.TIMER, autoRepeatTimer_timerDelayHandler);
				autoRepeatTimer.start();
			};
		}
		override protected function keyUpHandler(_arg1:KeyboardEvent):void{
			if (!enabled){
				return;
			};
			if (_arg1.keyCode == Keyboard.SPACE){
				buttonReleased();
				if (phase == ButtonPhase.DOWN){
					dispatchEvent(new MouseEvent(MouseEvent.CLICK));
				};
				phase = ButtonPhase.UP;
			};
		}
		public function get selected():Boolean{
			return (_selected);
		}
		public function set labelPlacement(_arg1:String):void{
			_labelPlacement = _arg1;
			invalidateSize();
			invalidateDisplayList();
			dispatchEvent(new Event("labelPlacementChanged"));
		}
		protected function clickHandler(_arg1:MouseEvent):void{
			if (!enabled){
				_arg1.stopImmediatePropagation();
				return;
			};
			if (toggle){
				setSelected(!(selected));
				_arg1.updateAfterEvent();
			};
		}
		override protected function initializeAccessibility():void{
			if (Button.createAccessibilityImplementation != null){
				Button.createAccessibilityImplementation(this);
			};
		}
		public function set toggle(_arg1:Boolean):void{
			_toggle = _arg1;
			toggleChanged = true;
			invalidateProperties();
			invalidateDisplayList();
			dispatchEvent(new Event("toggleChanged"));
		}
		override public function get baselinePosition():Number{
			var _local1:String;
			var _local2:TextLineMetrics;
			if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0){
				_local1 = label;
				if (!_local1){
					_local1 = "Wj";
				};
				validateNow();
				if (((!(label)) && ((((labelPlacement == ButtonLabelPlacement.TOP)) || ((labelPlacement == ButtonLabelPlacement.BOTTOM)))))){
					_local2 = measureText(_local1);
					return ((((measuredHeight - _local2.height) / 2) + _local2.ascent));
				};
				return ((textField.y + measureText(_local1).ascent));
			};
			if (!validateBaselinePosition()){
				return (NaN);
			};
			return ((textField.y + textField.baselinePosition));
		}
		public function get data():Object{
			return (_data);
		}
		public function set fontContext(_arg1:IFlexModuleFactory):void{
			this.moduleFactory = _arg1;
		}
		mx_internal function viewSkin():void{
			var _local1:String;
			var _local2:String;
			if (!enabled){
				_local1 = (selected) ? selectedDisabledSkinName : disabledSkinName;
				_local2 = (selected) ? "selectedDisabled" : "disabled";
			} else {
				if (phase == ButtonPhase.UP){
					_local1 = (selected) ? selectedUpSkinName : upSkinName;
					_local2 = (selected) ? "selectedUp" : "up";
				} else {
					if (phase == ButtonPhase.OVER){
						_local1 = (selected) ? selectedOverSkinName : overSkinName;
						_local2 = (selected) ? "selectedOver" : "over";
					} else {
						if (phase == ButtonPhase.DOWN){
							_local1 = (selected) ? selectedDownSkinName : downSkinName;
							_local2 = (selected) ? "selectedDown" : "down";
						};
					};
				};
			};
			viewSkinForPhase(_local1, _local2);
		}
		override public function styleChanged(_arg1:String):void{
			styleChangedFlag = true;
			super.styleChanged(_arg1);
			if (((!(_arg1)) || ((_arg1 == "styleName")))){
				changeSkins();
				changeIcons();
				if (initialized){
					viewSkin();
					viewIcon();
				};
			} else {
				if (_arg1.toLowerCase().indexOf("skin") != -1){
					changeSkins();
				} else {
					if (_arg1.toLowerCase().indexOf("icon") != -1){
						changeIcons();
						invalidateSize();
					};
				};
			};
		}
		public function set emphasized(_arg1:Boolean):void{
			_emphasized = _arg1;
			emphasizedChanged = true;
			invalidateDisplayList();
		}
		mx_internal function viewIcon():void{
			var _local1:String = getCurrentIconName();
			viewIconForPhase(_local1);
		}
		override public function set toolTip(_arg1:String):void{
			super.toolTip = _arg1;
			if (_arg1){
				toolTipSet = true;
			} else {
				toolTipSet = false;
				invalidateDisplayList();
			};
		}
		override protected function commitProperties():void{
			super.commitProperties();
			if (((hasFontContextChanged()) && (!((textField == null))))){
				removeChild(DisplayObject(textField));
				textField = null;
			};
			if (!textField){
				textField = IUITextField(createInFontContext(UITextField));
				textField.styleName = this;
				addChild(DisplayObject(textField));
				enabledChanged = true;
				toggleChanged = true;
			};
			if (!initialized){
				viewSkin();
				viewIcon();
			};
			if (enabledChanged){
				textField.enabled = enabled;
				if (((currentIcon) && ((currentIcon is IUIComponent)))){
					IUIComponent(currentIcon).enabled = enabled;
				};
				enabledChanged = false;
			};
			if (toggleChanged){
				if (!toggle){
					selected = false;
				};
				toggleChanged = false;
			};
		}
		mx_internal function changeSkins():void{
			var _local1:int = skins.length;
			var _local2:int;
			while (_local2 < _local1) {
				removeChild(skins[_local2]);
				_local2++;
			};
			skins = [];
			skinMeasuredWidth = NaN;
			skinMeasuredHeight = NaN;
			checkedDefaultSkin = false;
			defaultSkinUsesStates = false;
			if (((initialized) && ((FlexVersion.compatibilityVersion >= FlexVersion.VERSION_3_0)))){
				viewSkin();
				invalidateSize();
			};
		}
		private function autoRepeatTimer_timerHandler(_arg1:Event):void{
			if (!enabled){
				return;
			};
			dispatchEvent(new FlexEvent(FlexEvent.BUTTON_DOWN));
		}
		private function previousVersion_layoutContents(_arg1:Number, _arg2:Number, _arg3:Boolean):void{
			var _local20:TextLineMetrics;
			var _local28:Number;
			var _local29:MoveEvent;
			var _local4:Number = 0;
			var _local5:Number = 0;
			var _local6:Number = 0;
			var _local7:Number = 0;
			var _local8:Number = 0;
			var _local9:Number = 0;
			var _local10:Number = 0;
			var _local11:Number = 0;
			var _local12:Number = 2;
			var _local13:Number = 2;
			var _local14:Number = getStyle("paddingLeft");
			var _local15:Number = getStyle("paddingRight");
			var _local16:Number = getStyle("paddingTop");
			var _local17:Number = getStyle("paddingBottom");
			var _local18:Number = 0;
			var _local19:Number = 0;
			if (label){
				_local20 = measureText(label);
				if (_local20.width > 0){
					_local18 = (((_local14 + _local15) + getStyle("textIndent")) + _local20.width);
				};
				_local19 = _local20.height;
			} else {
				_local20 = measureText("Wj");
				_local19 = _local20.height;
			};
			var _local21:Number = (_arg3) ? buttonOffset : 0;
			var _local22:String = getStyle("textAlign");
			var _local23:EdgeMetrics = (((currentSkin) && ((currentSkin is IRectangularBorder)))) ? IRectangularBorder(currentSkin).borderMetrics : null;
			var _local24:Number = _arg1;
			var _local25:Number = ((_arg2 - _local16) - _local17);
			if (_local23){
				_local24 = (_local24 - (_local23.left + _local23.right));
				_local25 = (_local25 - (_local23.top + _local23.bottom));
			};
			if (currentIcon){
				_local8 = currentIcon.width;
				_local9 = currentIcon.height;
			};
			if ((((labelPlacement == ButtonLabelPlacement.LEFT)) || ((labelPlacement == ButtonLabelPlacement.RIGHT)))){
				_local12 = getStyle("horizontalGap");
				if ((((_local8 == 0)) || ((_local18 == 0)))){
					_local12 = 0;
				};
				if (_local18 > 0){
					_local4 = Math.max(((((_local24 - _local8) - _local12) - _local14) - _local15), 0);
					textField.width = _local4;
				} else {
					_local4 = 0;
					textField.width = _local4;
				};
				_local5 = Math.min((_local25 + 2), (_local19 + UITextField.TEXT_HEIGHT_PADDING));
				textField.height = _local5;
				if (labelPlacement == ButtonLabelPlacement.RIGHT){
					_local6 = (_local8 + _local12);
					if (centerContent){
						if (_local22 == "left"){
							_local6 = (_local6 + _local14);
						} else {
							if (_local22 == "right"){
								_local6 = (_local6 + ((((_local24 - _local4) - _local8) - _local12) - _local14));
							} else {
								_local28 = ((((_local24 - _local4) - _local8) - _local12) / 2);
								_local6 = (_local6 + Math.max(_local28, _local14));
							};
						};
					};
					_local10 = (_local6 - (_local8 + _local12));
					if (!centerContent){
						_local6 = (_local6 + _local14);
					};
				} else {
					_local6 = ((((_local24 - _local4) - _local8) - _local12) - _local15);
					if (centerContent){
						if (_local22 == "left"){
							_local6 = 2;
						} else {
							if (_local22 == "right"){
								_local6--;
							} else {
								if (_local6 > 0){
									_local6 = (_local6 / 2);
								};
							};
						};
					};
					_local10 = ((_local6 + _local4) + _local12);
				};
				_local7 = 0;
				_local11 = _local7;
				if (centerContent){
					_local11 = (Math.round(((_local25 - _local9) / 2)) + _local16);
					_local7 = (Math.round(((_local25 - _local5) / 2)) + _local16);
				} else {
					_local7 = (_local7 + (Math.max(0, ((_local25 - _local5) / 2)) + _local16));
					_local11 = (_local11 + (Math.max(0, (((_local25 - _local9) / 2) - 1)) + _local16));
				};
			} else {
				_local13 = getStyle("verticalGap");
				if ((((_local9 == 0)) || ((_local19 == 0)))){
					_local13 = 0;
				};
				if (_local18 > 0){
					_local4 = Math.min(_local24, (_local18 + UITextField.TEXT_WIDTH_PADDING));
					textField.width = _local4;
					_local5 = Math.min(((_local25 - _local9) + 1), (_local19 + 5));
					textField.height = _local5;
				} else {
					_local4 = 0;
					textField.width = _local4;
					_local5 = 0;
					textField.height = _local5;
				};
				_local6 = ((_local24 - _local4) / 2);
				_local10 = ((_local24 - _local8) / 2);
				if (labelPlacement == ButtonLabelPlacement.TOP){
					_local7 = (((_local25 - _local5) - _local9) - _local13);
					if (((centerContent) && ((_local7 > 0)))){
						_local7 = (_local7 / 2);
					};
					_local7 = (_local7 + _local16);
					_local11 = (((_local7 + _local5) + _local13) - 3);
				} else {
					_local7 = ((_local9 + _local13) + _local16);
					if (centerContent){
						_local7 = (_local7 + (((((_local25 - _local5) - _local9) - _local13) / 2) + 1));
					};
					_local11 = (((_local7 - _local9) - _local13) + 3);
				};
			};
			var _local26:Number = _local21;
			var _local27:Number = _local21;
			if (_local23){
				_local26 = (_local26 + _local23.left);
				_local27 = (_local27 + _local23.top);
			};
			textField.x = (_local6 + _local26);
			textField.y = (_local7 + _local27);
			if (currentIcon){
				_local10 = (_local10 + _local26);
				_local11 = (_local11 + _local27);
				_local29 = new MoveEvent(MoveEvent.MOVE);
				_local29.oldX = currentIcon.x;
				_local29.oldY = currentIcon.y;
				currentIcon.x = Math.round(_local10);
				currentIcon.y = Math.round(_local11);
				currentIcon.dispatchEvent(_local29);
			};
			if (currentSkin){
				setChildIndex(DisplayObject(currentSkin), (numChildren - 1));
			};
			if (currentIcon){
				setChildIndex(DisplayObject(currentIcon), (numChildren - 1));
			};
			if (textField){
				setChildIndex(DisplayObject(textField), (numChildren - 1));
			};
		}
		private function systemManager_mouseUpHandler(_arg1:MouseEvent):void{
			if (contains(DisplayObject(_arg1.target))){
				return;
			};
			phase = ButtonPhase.UP;
			buttonReleased();
			_arg1.updateAfterEvent();
		}
		public function set label(_arg1:String):void{
			labelSet = true;
			if (_label != _arg1){
				_label = _arg1;
				labelChanged = true;
				invalidateSize();
				invalidateDisplayList();
				dispatchEvent(new Event("labelChanged"));
			};
		}
		override protected function updateDisplayList(_arg1:Number, _arg2:Number):void{
			var _local5:IFlexDisplayObject;
			var _local6:Boolean;
			super.updateDisplayList(_arg1, _arg2);
			if (emphasizedChanged){
				changeSkins();
				emphasizedChanged = false;
			};
			var _local3:int = skins.length;
			var _local4:int;
			while (_local4 < _local3) {
				_local5 = IFlexDisplayObject(skins[_local4]);
				_local5.setActualSize(_arg1, _arg2);
				_local4++;
			};
			viewSkin();
			viewIcon();
			layoutContents(_arg1, _arg2, (phase == ButtonPhase.DOWN));
			if ((((((((oldUnscaledWidth > _arg1)) || (!((textField.text == label))))) || (labelChanged))) || (styleChangedFlag))){
				textField.text = label;
				_local6 = textField.truncateToFit();
				if (!toolTipSet){
					if (_local6){
						super.toolTip = label;
					} else {
						super.toolTip = null;
					};
				};
				styleChangedFlag = false;
				labelChanged = false;
			};
			oldUnscaledWidth = _arg1;
		}
		private function stage_mouseLeaveHandler(_arg1:Event):void{
			phase = ButtonPhase.UP;
			buttonReleased();
		}
		public function set listData(_arg1:BaseListData):void{
			_listData = _arg1;
		}

	}
}//package mx.controls 

****************

//ButtonLabelPlacement (mx.controls.ButtonLabelPlacement)
package mx.controls {

	public final class ButtonLabelPlacement {

		public static const TOP:String = "top";
		public static const LEFT:String = "left";
		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const BOTTOM:String = "bottom";
		public static const RIGHT:String = "right";

	}
}//package mx.controls 

****************

//ButtonPhase (mx.controls.ButtonPhase)
package mx.controls {

	public final class ButtonPhase {

		public static const DOWN:String = "down";
		public static const OVER:String = "over";
		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const UP:String = "up";

	}
}//package mx.controls 

****************

//HScrollBar (mx.controls.HScrollBar)
package mx.controls {
	import mx.controls.scrollClasses.*;
	import flash.ui.*;

	public class HScrollBar extends ScrollBar {

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function HScrollBar(){
			super.direction = ScrollBarDirection.HORIZONTAL;
			scaleX = -1;
			rotation = -90;
		}
		override mx_internal function get virtualHeight():Number{
			return (unscaledWidth);
		}
		override protected function measure():void{
			super.measure();
			measuredWidth = _minHeight;
			measuredHeight = _minWidth;
		}
		override public function get minHeight():Number{
			return (_minWidth);
		}
		override mx_internal function get virtualWidth():Number{
			return (unscaledHeight);
		}
		override public function get minWidth():Number{
			return (_minHeight);
		}
		override mx_internal function isScrollBarKey(_arg1:uint):Boolean{
			if (_arg1 == Keyboard.LEFT){
				lineScroll(-1);
				return (true);
			};
			if (_arg1 == Keyboard.RIGHT){
				lineScroll(1);
				return (true);
			};
			return (super.isScrollBarKey(_arg1));
		}
		override public function set direction(_arg1:String):void{
		}

	}
}//package mx.controls 

****************

//IFlexContextMenu (mx.controls.IFlexContextMenu)
package mx.controls {
	import flash.display.*;

	public interface IFlexContextMenu {

		function setContextMenu(_arg1:InteractiveObject):void;
		function unsetContextMenu(_arg1:InteractiveObject):void;

	}
}//package mx.controls 

****************

//Label (mx.controls.Label)
package mx.controls {
	import mx.core.*;
	import mx.events.*;
	import flash.events.*;
	import flash.display.*;
	import flash.geom.*;
	import flash.text.*;
	import mx.controls.listClasses.*;

	public class Label extends UIComponent implements IDataRenderer, IDropInListItemRenderer, IListItemRenderer, IFontContextComponent {

		private var _selectable:Boolean;// = false
		private var _text:String;// = ""
		private var _data:Object;
		mx_internal var htmlTextChanged:Boolean;// = false
		private var _tabIndex:int;// = -1
		private var styleSheetChanged:Boolean;// = false
		private var explicitHTMLText:String;// = null
		private var _textWidth:Number;
		private var enabledChanged:Boolean;// = false
		private var condenseWhiteChanged:Boolean;// = false
		private var _listData:BaseListData;
		protected var textField:IUITextField;
		private var _htmlText:String;// = ""
		private var _condenseWhite:Boolean;// = false
		private var _textHeight:Number;
		private var _styleSheet:StyleSheet;
		mx_internal var textChanged:Boolean;// = false
		public var truncateToFit:Boolean;// = true
		private var textSet:Boolean;
		private var selectableChanged:Boolean;
		private var toolTipSet:Boolean;// = false

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function Label(){
			tabChildren = true;
		}
		override public function set enabled(_arg1:Boolean):void{
			if (_arg1 == enabled){
				return;
			};
			super.enabled = _arg1;
			enabledChanged = true;
			invalidateProperties();
		}
		private function textField_textFieldStyleChangeHandler(_arg1:Event):void{
			textFieldChanged(true);
		}
		override public function get baselinePosition():Number{
			var _local1:String;
			var _local2:TextLineMetrics;
			if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0){
				if (!textField){
					return (NaN);
				};
				validateNow();
				_local1 = (isHTML) ? explicitHTMLText : text;
				if (_local1 == ""){
					_local1 = " ";
				};
				_local2 = (isHTML) ? measureHTMLText(_local1) : measureText(_local1);
				return ((textField.y + _local2.ascent));
			};
			if (!validateBaselinePosition()){
				return (NaN);
			};
			return ((textField.y + textField.baselinePosition));
		}
		private function textField_textModifiedHandler(_arg1:Event):void{
			textFieldChanged(false);
		}
		public function set condenseWhite(_arg1:Boolean):void{
			if (_arg1 == _condenseWhite){
				return;
			};
			_condenseWhite = _arg1;
			condenseWhiteChanged = true;
			if (isHTML){
				htmlTextChanged = true;
			};
			invalidateProperties();
			invalidateSize();
			invalidateDisplayList();
			dispatchEvent(new Event("condenseWhiteChanged"));
		}
		public function get textWidth():Number{
			return (_textWidth);
		}
		override protected function createChildren():void{
			super.createChildren();
			if (!textField){
				createTextField(-1);
			};
		}
		mx_internal function getTextField():IUITextField{
			return (textField);
		}
		private function measureTextFieldBounds(_arg1:String):Rectangle{
			var _local2:TextLineMetrics = (isHTML) ? measureHTMLText(_arg1) : measureText(_arg1);
			return (new Rectangle(0, 0, (_local2.width + UITextField.TEXT_WIDTH_PADDING), (_local2.height + UITextField.TEXT_HEIGHT_PADDING)));
		}
		mx_internal function getMinimumText(_arg1:String):String{
			if (((!(_arg1)) || ((_arg1.length < 2)))){
				_arg1 = "Wj";
			};
			return (_arg1);
		}
		private function textFieldChanged(_arg1:Boolean):void{
			var _local2:Boolean;
			var _local3:Boolean;
			if (!_arg1){
				_local2 = !((_text == textField.text));
				_text = textField.text;
			};
			_local3 = !((_htmlText == textField.htmlText));
			_htmlText = textField.htmlText;
			if (_local2){
				dispatchEvent(new FlexEvent(FlexEvent.VALUE_COMMIT));
			};
			if (_local3){
				dispatchEvent(new Event("htmlTextChanged"));
			};
			_textWidth = textField.textWidth;
			_textHeight = textField.textHeight;
		}
		public function get data():Object{
			return (_data);
		}
		public function get text():String{
			return (_text);
		}
		public function get textHeight():Number{
			return (_textHeight);
		}
		public function get styleSheet():StyleSheet{
			return (_styleSheet);
		}
		public function set selectable(_arg1:Boolean):void{
			if (_arg1 == selectable){
				return;
			};
			_selectable = _arg1;
			selectableChanged = true;
			invalidateProperties();
		}
		override public function get tabIndex():int{
			return (_tabIndex);
		}
		public function set fontContext(_arg1:IFlexModuleFactory):void{
			this.moduleFactory = _arg1;
		}
		mx_internal function removeTextField():void{
			if (textField){
				textField.removeEventListener("textFieldStyleChange", textField_textFieldStyleChangeHandler);
				textField.removeEventListener("textInsert", textField_textModifiedHandler);
				textField.removeEventListener("textReplace", textField_textModifiedHandler);
				removeChild(DisplayObject(textField));
				textField = null;
			};
		}
		override public function set toolTip(_arg1:String):void{
			super.toolTip = _arg1;
			toolTipSet = !((_arg1 == null));
		}
		mx_internal function createTextField(_arg1:int):void{
			if (!textField){
				textField = IUITextField(createInFontContext(UITextField));
				textField.enabled = enabled;
				textField.ignorePadding = true;
				textField.selectable = selectable;
				textField.styleName = this;
				textField.addEventListener("textFieldStyleChange", textField_textFieldStyleChangeHandler);
				textField.addEventListener("textInsert", textField_textModifiedHandler);
				textField.addEventListener("textReplace", textField_textModifiedHandler);
				if (_arg1 == -1){
					addChild(DisplayObject(textField));
				} else {
					addChildAt(DisplayObject(textField), _arg1);
				};
			};
		}
		override protected function commitProperties():void{
			super.commitProperties();
			if (((hasFontContextChanged()) && (!((textField == null))))){
				removeTextField();
				condenseWhiteChanged = true;
				enabledChanged = true;
				selectableChanged = true;
				textChanged = true;
			};
			if (!textField){
				createTextField(-1);
			};
			if (condenseWhiteChanged){
				textField.condenseWhite = _condenseWhite;
				condenseWhiteChanged = false;
			};
			textField.tabIndex = tabIndex;
			if (enabledChanged){
				textField.enabled = enabled;
				enabledChanged = false;
			};
			if (selectableChanged){
				textField.selectable = _selectable;
				selectableChanged = false;
			};
			if (styleSheetChanged){
				textField.styleSheet = _styleSheet;
				styleSheetChanged = false;
			};
			if (((textChanged) || (htmlTextChanged))){
				if (isHTML){
					textField.htmlText = explicitHTMLText;
				} else {
					textField.text = _text;
				};
				textFieldChanged(false);
				textChanged = false;
				htmlTextChanged = false;
			};
		}
		public function get condenseWhite():Boolean{
			return (_condenseWhite);
		}
		public function set listData(_arg1:BaseListData):void{
			_listData = _arg1;
		}
		private function get isHTML():Boolean{
			return (!((explicitHTMLText == null)));
		}
		public function get selectable():Boolean{
			return (_selectable);
		}
		public function set text(_arg1:String):void{
			textSet = true;
			if (!_arg1){
				_arg1 = "";
			};
			if (((!(isHTML)) && ((_arg1 == _text)))){
				return;
			};
			_text = _arg1;
			textChanged = true;
			_htmlText = null;
			explicitHTMLText = null;
			invalidateProperties();
			invalidateSize();
			invalidateDisplayList();
			dispatchEvent(new FlexEvent(FlexEvent.VALUE_COMMIT));
		}
		public function set data(_arg1:Object):void{
			var _local2:*;
			_data = _arg1;
			if (_listData){
				_local2 = _listData.label;
			} else {
				if (_data != null){
					if ((_data is String)){
						_local2 = String(_data);
					} else {
						_local2 = _data.toString();
					};
				};
			};
			if (((!((_local2 === undefined))) && (!(textSet)))){
				text = _local2;
				textSet = false;
			};
			dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
		}
		override protected function measure():void{
			super.measure();
			var _local1:String = (isHTML) ? explicitHTMLText : text;
			_local1 = getMinimumText(_local1);
			var _local2:Rectangle = measureTextFieldBounds(_local1);
			measuredMinWidth = (measuredWidth = ((_local2.width + getStyle("paddingLeft")) + getStyle("paddingRight")));
			measuredMinHeight = (measuredHeight = ((_local2.height + getStyle("paddingTop")) + getStyle("paddingBottom")));
		}
		public function get fontContext():IFlexModuleFactory{
			return (moduleFactory);
		}
		public function get listData():BaseListData{
			return (_listData);
		}
		public function set styleSheet(_arg1:StyleSheet):void{
			_styleSheet = _arg1;
			styleSheetChanged = true;
			htmlTextChanged = true;
			invalidateProperties();
		}
		public function set htmlText(_arg1:String):void{
			textSet = true;
			if (!_arg1){
				_arg1 = "";
			};
			if (((isHTML) && ((_arg1 == explicitHTMLText)))){
				return;
			};
			_htmlText = _arg1;
			htmlTextChanged = true;
			_text = null;
			explicitHTMLText = _arg1;
			invalidateProperties();
			invalidateSize();
			invalidateDisplayList();
			dispatchEvent(new Event("htmlTextChanged"));
		}
		override protected function updateDisplayList(_arg1:Number, _arg2:Number):void{
			var _local9:Boolean;
			super.updateDisplayList(_arg1, _arg2);
			var _local3:Number = getStyle("paddingLeft");
			var _local4:Number = getStyle("paddingTop");
			var _local5:Number = getStyle("paddingRight");
			var _local6:Number = getStyle("paddingBottom");
			textField.setActualSize(((_arg1 - _local3) - _local5), ((_arg2 - _local4) - _local6));
			textField.x = _local3;
			textField.y = _local4;
			var _local7:String = (isHTML) ? explicitHTMLText : text;
			var _local8:Rectangle = measureTextFieldBounds(_local7);
			if (truncateToFit){
				if (isHTML){
					_local9 = (_local8.width > textField.width);
				} else {
					textField.text = _text;
					_local9 = textField.truncateToFit();
				};
				if (!toolTipSet){
					super.toolTip = (_local9) ? text : null;
				};
			};
		}
		public function get htmlText():String{
			return (_htmlText);
		}
		public function getLineMetrics(_arg1:int):TextLineMetrics{
			return ((textField) ? textField.getLineMetrics(_arg1) : null);
		}
		override public function set tabIndex(_arg1:int):void{
			_tabIndex = _arg1;
			invalidateProperties();
		}

	}
}//package mx.controls 

****************

//Text (mx.controls.Text)
package mx.controls {
	import mx.core.*;
	import mx.events.*;

	public class Text extends Label {

		private var widthChanged:Boolean;// = true
		private var lastUnscaledWidth:Number;// = NAN

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function Text(){
			selectable = true;
			truncateToFit = false;
			addEventListener(FlexEvent.UPDATE_COMPLETE, updateCompleteHandler);
		}
		private function measureUsingWidth(_arg1:Number):void{
			var _local6:Boolean;
			var _local2:Number = getStyle("paddingLeft");
			var _local3:Number = getStyle("paddingTop");
			var _local4:Number = getStyle("paddingRight");
			var _local5:Number = getStyle("paddingBottom");
			textField.validateNow();
			textField.autoSize = "left";
			if (!isNaN(_arg1)){
				textField.width = ((_arg1 - _local2) - _local4);
				measuredWidth = (Math.ceil(textField.textWidth) + UITextField.TEXT_WIDTH_PADDING);
				measuredHeight = (Math.ceil(textField.textHeight) + UITextField.TEXT_HEIGHT_PADDING);
			} else {
				_local6 = textField.wordWrap;
				textField.wordWrap = false;
				measuredWidth = (Math.ceil(textField.textWidth) + UITextField.TEXT_WIDTH_PADDING);
				measuredHeight = (Math.ceil(textField.textHeight) + UITextField.TEXT_HEIGHT_PADDING);
				textField.wordWrap = _local6;
			};
			textField.autoSize = "none";
			measuredWidth = (measuredWidth + (_local2 + _local4));
			measuredHeight = (measuredHeight + (_local3 + _local5));
			if (isNaN(explicitWidth)){
				measuredMinWidth = DEFAULT_MEASURED_MIN_WIDTH;
				measuredMinHeight = DEFAULT_MEASURED_MIN_HEIGHT;
			} else {
				measuredMinWidth = measuredWidth;
				measuredMinHeight = measuredHeight;
			};
		}
		override public function set percentWidth(_arg1:Number):void{
			if (_arg1 != percentWidth){
				widthChanged = true;
				invalidateProperties();
				invalidateSize();
			};
			super.percentWidth = _arg1;
		}
		override public function set explicitWidth(_arg1:Number):void{
			if (_arg1 != explicitWidth){
				widthChanged = true;
				invalidateProperties();
				invalidateSize();
			};
			super.explicitWidth = _arg1;
		}
		private function updateCompleteHandler(_arg1:FlexEvent):void{
			lastUnscaledWidth = NaN;
		}
		override protected function childrenCreated():void{
			super.childrenCreated();
			textField.wordWrap = true;
			textField.multiline = true;
			textField.mouseWheelEnabled = false;
		}
		override protected function commitProperties():void{
			super.commitProperties();
			if (widthChanged){
				textField.wordWrap = ((((!(isNaN(explicitWidth))) || (!(isNaN(explicitMaxWidth))))) || (!(isNaN(percentWidth))));
				widthChanged = false;
			};
		}
		override public function set maxWidth(_arg1:Number):void{
			if (_arg1 != maxWidth){
				widthChanged = true;
				invalidateProperties();
				invalidateSize();
			};
			super.maxWidth = _arg1;
		}
		override protected function updateDisplayList(_arg1:Number, _arg2:Number):void{
			var _local7:Boolean;
			if (isSpecialCase()){
				_local7 = ((isNaN(lastUnscaledWidth)) || (!((lastUnscaledWidth == _arg1))));
				lastUnscaledWidth = _arg1;
				if (_local7){
					invalidateSize();
					return;
				};
			};
			var _local3:Number = getStyle("paddingLeft");
			var _local4:Number = getStyle("paddingTop");
			var _local5:Number = getStyle("paddingRight");
			var _local6:Number = getStyle("paddingBottom");
			textField.setActualSize(((_arg1 - _local3) - _local5), ((_arg2 - _local4) - _local6));
			textField.x = _local3;
			textField.y = _local4;
			if (Math.floor(width) < Math.floor(measuredWidth)){
				textField.wordWrap = true;
			};
		}
		override protected function measure():void{
			var _local1:Number;
			if (isSpecialCase()){
				if (!isNaN(lastUnscaledWidth)){
					measureUsingWidth(lastUnscaledWidth);
				} else {
					measuredWidth = 0;
					measuredHeight = 0;
				};
				return;
			};
			if (!isNaN(explicitWidth)){
				_local1 = explicitWidth;
			} else {
				if (!isNaN(explicitMaxWidth)){
					_local1 = explicitMaxWidth;
				};
			};
			measureUsingWidth(_local1);
		}
		private function isSpecialCase():Boolean{
			var _local1:Number = getStyle("left");
			var _local2:Number = getStyle("right");
			return (((((((!(isNaN(percentWidth))) || (((!(isNaN(_local1))) && (!(isNaN(_local2))))))) && (isNaN(explicitHeight)))) && (isNaN(percentHeight))));
		}

	}
}//package mx.controls 

****************

//ToolTip (mx.controls.ToolTip)
package mx.controls {
	import mx.core.*;
	import flash.display.*;
	import mx.styles.*;
	import flash.text.*;

	public class ToolTip extends UIComponent implements IToolTip, IFontContextComponent {

		private var textChanged:Boolean;
		private var _text:String;
		protected var textField:IUITextField;
		mx_internal var border:IFlexDisplayObject;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public static var maxWidth:Number = 300;

		public function ToolTip(){
			mouseEnabled = false;
		}
		public function set fontContext(_arg1:IFlexModuleFactory):void{
			this.moduleFactory = _arg1;
		}
		override public function styleChanged(_arg1:String):void{
			super.styleChanged(_arg1);
			if ((((((_arg1 == "borderStyle")) || ((_arg1 == "styleName")))) || ((_arg1 == null)))){
				invalidateDisplayList();
			};
		}
		override protected function commitProperties():void{
			var _local1:int;
			var _local2:TextFormat;
			super.commitProperties();
			if (((hasFontContextChanged()) && (!((textField == null))))){
				_local1 = getChildIndex(DisplayObject(textField));
				removeTextField();
				createTextField(_local1);
				invalidateSize();
				textChanged = true;
			};
			if (textChanged){
				_local2 = textField.getTextFormat();
				_local2.leftMargin = 0;
				_local2.rightMargin = 0;
				textField.defaultTextFormat = _local2;
				textField.text = _text;
				textChanged = false;
			};
		}
		mx_internal function getTextField():IUITextField{
			return (textField);
		}
		override protected function createChildren():void{
			var _local1:Class;
			super.createChildren();
			if (!border){
				_local1 = getStyle("borderSkin");
				border = new (_local1);
				if ((border is ISimpleStyleClient)){
					ISimpleStyleClient(border).styleName = this;
				};
				addChild(DisplayObject(border));
			};
			createTextField(-1);
		}
		override protected function measure():void{
			var _local7:Number;
			super.measure();
			var _local1:EdgeMetrics = borderMetrics;
			var _local2:Number = (_local1.left + getStyle("paddingLeft"));
			var _local3:Number = (_local1.top + getStyle("paddingTop"));
			var _local4:Number = (_local1.right + getStyle("paddingRight"));
			var _local5:Number = (_local1.bottom + getStyle("paddingBottom"));
			var _local6:Number = (_local2 + _local4);
			_local7 = (_local3 + _local5);
			textField.wordWrap = false;
			if ((textField.textWidth + _local6) > ToolTip.maxWidth){
				textField.width = (ToolTip.maxWidth - _local6);
				textField.wordWrap = true;
			};
			measuredWidth = (textField.width + _local6);
			measuredHeight = (textField.height + _local7);
		}
		public function get fontContext():IFlexModuleFactory{
			return (moduleFactory);
		}
		public function set text(_arg1:String):void{
			_text = _arg1;
			textChanged = true;
			invalidateProperties();
			invalidateSize();
			invalidateDisplayList();
		}
		public function get text():String{
			return (_text);
		}
		mx_internal function removeTextField():void{
			if (textField){
				removeChild(DisplayObject(textField));
				textField = null;
			};
		}
		mx_internal function createTextField(_arg1:int):void{
			if (!textField){
				textField = IUITextField(createInFontContext(UITextField));
				textField.autoSize = TextFieldAutoSize.LEFT;
				textField.mouseEnabled = false;
				textField.multiline = true;
				textField.selectable = false;
				textField.wordWrap = false;
				textField.styleName = this;
				if (_arg1 == -1){
					addChild(DisplayObject(textField));
				} else {
					addChildAt(DisplayObject(textField), _arg1);
				};
			};
		}
		override protected function updateDisplayList(_arg1:Number, _arg2:Number):void{
			super.updateDisplayList(_arg1, _arg2);
			var _local3:EdgeMetrics = borderMetrics;
			var _local4:Number = (_local3.left + getStyle("paddingLeft"));
			var _local5:Number = (_local3.top + getStyle("paddingTop"));
			var _local6:Number = (_local3.right + getStyle("paddingRight"));
			var _local7:Number = (_local3.bottom + getStyle("paddingBottom"));
			var _local8:Number = (_local4 + _local6);
			var _local9:Number = (_local5 + _local7);
			border.setActualSize(_arg1, _arg2);
			textField.move(_local4, _local5);
			textField.setActualSize((_arg1 - _local8), (_arg2 - _local9));
		}
		private function get borderMetrics():EdgeMetrics{
			if ((border is IRectangularBorder)){
				return (IRectangularBorder(border).borderMetrics);
			};
			return (EdgeMetrics.EMPTY);
		}

	}
}//package mx.controls 

****************

//VScrollBar (mx.controls.VScrollBar)
package mx.controls {
	import mx.controls.scrollClasses.*;
	import flash.ui.*;

	public class VScrollBar extends ScrollBar {

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function VScrollBar(){
			super.direction = ScrollBarDirection.VERTICAL;
		}
		override protected function measure():void{
			super.measure();
			measuredWidth = _minWidth;
			measuredHeight = _minHeight;
		}
		override public function get minHeight():Number{
			return (_minHeight);
		}
		override mx_internal function isScrollBarKey(_arg1:uint):Boolean{
			if (_arg1 == Keyboard.UP){
				lineScroll(-1);
				return (true);
			};
			if (_arg1 == Keyboard.DOWN){
				lineScroll(1);
				return (true);
			};
			if (_arg1 == Keyboard.PAGE_UP){
				pageScroll(-1);
				return (true);
			};
			if (_arg1 == Keyboard.PAGE_DOWN){
				pageScroll(1);
				return (true);
			};
			return (super.isScrollBarKey(_arg1));
		}
		override public function get minWidth():Number{
			return (_minWidth);
		}
		override public function set direction(_arg1:String):void{
		}

	}
}//package mx.controls 

****************

//Application (mx.core.Application)
package mx.core {
	import mx.events.*;
	import flash.events.*;
	import flash.display.*;
	import mx.managers.*;
	import mx.styles.*;
	import mx.effects.*;
	import flash.utils.*;
	import flash.net.*;
	import mx.containers.utilityClasses.*;
	import flash.ui.*;
	import flash.system.*;
	import flash.external.*;

	public class Application extends LayoutContainer {

		public var preloader:Object;
		public var pageTitle:String;
		private var resizeWidth:Boolean;// = true
		private var _applicationViewMetrics:EdgeMetrics;
		mx_internal var _parameters:Object;
		private var processingCreationQueue:Boolean;// = false
		private var resizeHandlerAdded:Boolean;// = false
		public var scriptRecursionLimit:int;
		private var preloadObj:Object;
		public var usePreloader:Boolean;
		mx_internal var _url:String;
		private var _viewSourceURL:String;
		public var resetHistory:Boolean;// = true
		public var historyManagementEnabled:Boolean;// = true
		public var scriptTimeLimit:Number;
		public var frameRate:Number;
		private var creationQueue:Array;
		private var resizeHeight:Boolean;// = true
		public var controlBar:IUIComponent;
		private var viewSourceCMI:ContextMenuItem;

		mx_internal static const VERSION:String = "3.5.0.12683";

		mx_internal static var useProgressiveLayout:Boolean = false;

		public function Application(){
			creationQueue = [];
			name = "application";
			UIComponentGlobals.layoutManager = ILayoutManager(Singleton.getInstance("mx.managers::ILayoutManager"));
			UIComponentGlobals.layoutManager.usePhasedInstantiation = true;
			if (!ApplicationGlobals.application){
				ApplicationGlobals.application = this;
			};
			super();
			layoutObject = new ApplicationLayout();
			layoutObject.target = this;
			boxLayoutClass = ApplicationLayout;
			showInAutomationHierarchy = true;
		}
		public function set viewSourceURL(_arg1:String):void{
			_viewSourceURL = _arg1;
		}
		override public function set enabled(_arg1:Boolean):void{
			super.enabled = _arg1;
			if (controlBar){
				controlBar.enabled = _arg1;
			};
		}
		override public function prepareToPrint(_arg1:IFlexDisplayObject):Object{
			var _local2:Object = {};
			if (_arg1 == this){
				_local2.width = width;
				_local2.height = height;
				_local2.verticalScrollPosition = verticalScrollPosition;
				_local2.horizontalScrollPosition = horizontalScrollPosition;
				_local2.horizontalScrollBarVisible = !((horizontalScrollBar == null));
				_local2.verticalScrollBarVisible = !((verticalScrollBar == null));
				_local2.whiteBoxVisible = !((whiteBox == null));
				setActualSize(measuredWidth, measuredHeight);
				horizontalScrollPosition = 0;
				verticalScrollPosition = 0;
				if (horizontalScrollBar){
					horizontalScrollBar.visible = false;
				};
				if (verticalScrollBar){
					verticalScrollBar.visible = false;
				};
				if (whiteBox){
					whiteBox.visible = false;
				};
				updateDisplayList(unscaledWidth, unscaledHeight);
			};
			_local2.scrollRect = super.prepareToPrint(_arg1);
			return (_local2);
		}
		override protected function measure():void{
			var _local2:Number;
			super.measure();
			var _local1:EdgeMetrics = borderMetrics;
			if (((controlBar) && (controlBar.includeInLayout))){
				_local2 = ((controlBar.getExplicitOrMeasuredWidth() + _local1.left) + _local1.right);
				measuredWidth = Math.max(measuredWidth, _local2);
				measuredMinWidth = Math.max(measuredMinWidth, _local2);
			};
		}
		override public function getChildIndex(_arg1:DisplayObject):int{
			if (((controlBar) && ((_arg1 == controlBar)))){
				return (-1);
			};
			return (super.getChildIndex(_arg1));
		}
		private function resizeHandler(_arg1:Event):void{
			var _local2:Number;
			var _local3:Number;
			if (resizeWidth){
				if (isNaN(percentWidth)){
					_local2 = DisplayObject(systemManager).width;
				} else {
					super.percentWidth = Math.max(percentWidth, 0);
					super.percentWidth = Math.min(percentWidth, 100);
					_local2 = ((percentWidth * screen.width) / 100);
				};
				if (!isNaN(explicitMaxWidth)){
					_local2 = Math.min(_local2, explicitMaxWidth);
				};
				if (!isNaN(explicitMinWidth)){
					_local2 = Math.max(_local2, explicitMinWidth);
				};
			} else {
				_local2 = width;
			};
			if (resizeHeight){
				if (isNaN(percentHeight)){
					_local3 = DisplayObject(systemManager).height;
				} else {
					super.percentHeight = Math.max(percentHeight, 0);
					super.percentHeight = Math.min(percentHeight, 100);
					_local3 = ((percentHeight * screen.height) / 100);
				};
				if (!isNaN(explicitMaxHeight)){
					_local3 = Math.min(_local3, explicitMaxHeight);
				};
				if (!isNaN(explicitMinHeight)){
					_local3 = Math.max(_local3, explicitMinHeight);
				};
			} else {
				_local3 = height;
			};
			if (((!((_local2 == width))) || (!((_local3 == height))))){
				invalidateProperties();
				invalidateSize();
			};
			setActualSize(_local2, _local3);
			invalidateDisplayList();
		}
		private function initManagers(_arg1:ISystemManager):void{
			if (_arg1.isTopLevel()){
				focusManager = new FocusManager(this);
				_arg1.activate(this);
			};
		}
		override public function initialize():void{
			var _local2:Object;
			var _local1:ISystemManager = systemManager;
			_url = _local1.loaderInfo.url;
			_parameters = _local1.loaderInfo.parameters;
			initManagers(_local1);
			_descriptor = null;
			if (documentDescriptor){
				creationPolicy = documentDescriptor.properties.creationPolicy;
				if ((((creationPolicy == null)) || ((creationPolicy.length == 0)))){
					creationPolicy = ContainerCreationPolicy.AUTO;
				};
				_local2 = documentDescriptor.properties;
				if (_local2.width != null){
					width = _local2.width;
					delete _local2.width;
				};
				if (_local2.height != null){
					height = _local2.height;
					delete _local2.height;
				};
				documentDescriptor.events = null;
			};
			initContextMenu();
			super.initialize();
			addEventListener(Event.ADDED, addedHandler);
			if (((_local1.isTopLevelRoot()) && ((Capabilities.isDebugger == true)))){
				setInterval(debugTickler, 1500);
			};
		}
		override public function set percentHeight(_arg1:Number):void{
			super.percentHeight = _arg1;
			invalidateDisplayList();
		}
		override public function set percentWidth(_arg1:Number):void{
			super.percentWidth = _arg1;
			invalidateDisplayList();
		}
		override public function get id():String{
			if (((((!(super.id)) && ((this == Application.application)))) && (ExternalInterface.available))){
				return (ExternalInterface.objectID);
			};
			return (super.id);
		}
		override mx_internal function setUnscaledWidth(_arg1:Number):void{
			invalidateProperties();
			super.setUnscaledWidth(_arg1);
		}
		private function doNextQueueItem(_arg1:FlexEvent=null):void{
			processingCreationQueue = true;
			Application.useProgressiveLayout = true;
			callLater(processNextQueueItem);
		}
		private function addedHandler(_arg1:Event):void{
			if ((((_arg1.target == this)) && ((creationQueue.length > 0)))){
				doNextQueueItem();
			};
		}
		public function get viewSourceURL():String{
			return (_viewSourceURL);
		}
		override mx_internal function get usePadding():Boolean{
			return (!((layout == ContainerLayout.ABSOLUTE)));
		}
		override mx_internal function setUnscaledHeight(_arg1:Number):void{
			invalidateProperties();
			super.setUnscaledHeight(_arg1);
		}
		private function debugTickler():void{
			var _local1:int;
		}
		override public function styleChanged(_arg1:String):void{
			super.styleChanged(_arg1);
			if ((((_arg1 == "backgroundColor")) && ((getStyle("backgroundImage") == getStyle("defaultBackgroundImage"))))){
				clearStyle("backgroundImage");
			};
		}
		override protected function layoutChrome(_arg1:Number, _arg2:Number):void{
			super.layoutChrome(_arg1, _arg2);
			if (!doingLayout){
				createBorder();
			};
			var _local3:EdgeMetrics = borderMetrics;
			var _local4:Number = getStyle("borderThickness");
			var _local5:EdgeMetrics = new EdgeMetrics();
			_local5.left = (_local3.left - _local4);
			_local5.top = (_local3.top - _local4);
			_local5.right = (_local3.right - _local4);
			_local5.bottom = (_local3.bottom - _local4);
			if (((controlBar) && (controlBar.includeInLayout))){
				if ((controlBar is IInvalidating)){
					IInvalidating(controlBar).invalidateDisplayList();
				};
				controlBar.setActualSize((width - (_local5.left + _local5.right)), controlBar.getExplicitOrMeasuredHeight());
				controlBar.move(_local5.left, _local5.top);
			};
		}
		protected function menuItemSelectHandler(_arg1:Event):void{
			navigateToURL(new URLRequest(_viewSourceURL), "_blank");
		}
		private function printCreationQueue():void{
			var _local4:Object;
			var _local1 = "";
			var _local2:Number = creationQueue.length;
			var _local3:int;
			while (_local3 < _local2) {
				_local4 = creationQueue[_local3];
				_local1 = (_local1 + (((((" [" + _local3) + "] ") + _local4.id) + " ") + _local4.index));
				_local3++;
			};
		}
		override protected function resourcesChanged():void{
			super.resourcesChanged();
			if (viewSourceCMI){
				viewSourceCMI.caption = resourceManager.getString("core", "viewSource");
			};
		}
		override protected function commitProperties():void{
			super.commitProperties();
			resizeWidth = isNaN(explicitWidth);
			resizeHeight = isNaN(explicitHeight);
			if (((resizeWidth) || (resizeHeight))){
				resizeHandler(new Event(Event.RESIZE));
				if (!resizeHandlerAdded){
					systemManager.addEventListener(Event.RESIZE, resizeHandler, false, 0, true);
					resizeHandlerAdded = true;
				};
			} else {
				if (resizeHandlerAdded){
					systemManager.removeEventListener(Event.RESIZE, resizeHandler);
					resizeHandlerAdded = false;
				};
			};
		}
		override public function set toolTip(_arg1:String):void{
		}
		public function addToCreationQueue(_arg1:Object, _arg2:int=-1, _arg3:Function=null, _arg4:IFlexDisplayObject=null):void{
			var _local8:int;
			var _local9:int;
			var _local10:int;
			var _local12:int;
			var _local5:int = creationQueue.length;
			var _local6:Object = {};
			var _local7:Boolean;
			_local6.id = _arg1;
			_local6.parent = _arg4;
			_local6.callbackFunc = _arg3;
			_local6.index = _arg2;
			var _local11:int;
			while (_local11 < _local5) {
				_local9 = creationQueue[_local11].index;
				_local10 = (creationQueue[_local11].parent) ? creationQueue[_local11].parent.nestLevel : 0;
				if (_local6.index != -1){
					if ((((_local9 == -1)) || ((_local6.index < _local9)))){
						_local8 = _local11;
						_local7 = true;
						break;
					};
				} else {
					_local12 = (_local6.parent) ? _local6.parent.nestLevel : 0;
					if ((((_local9 == -1)) && ((_local10 < _local12)))){
						_local8 = _local11;
						_local7 = true;
						break;
					};
				};
				_local11++;
			};
			if (!_local7){
				creationQueue.push(_local6);
				_local7 = true;
			} else {
				creationQueue.splice(_local8, 0, _local6);
			};
			if (((initialized) && (!(processingCreationQueue)))){
				doNextQueueItem();
			};
		}
		override mx_internal function initThemeColor():Boolean{
			var _local2:Object;
			var _local3:Number;
			var _local4:Number;
			var _local5:CSSStyleDeclaration;
			var _local1:Boolean = super.initThemeColor();
			if (!_local1){
				_local5 = StyleManager.getStyleDeclaration("global");
				if (_local5){
					_local2 = _local5.getStyle("themeColor");
					_local3 = _local5.getStyle("rollOverColor");
					_local4 = _local5.getStyle("selectionColor");
				};
				if (((((_local2) && (isNaN(_local3)))) && (isNaN(_local4)))){
					setThemeColor(_local2);
				};
				_local1 = true;
			};
			return (_local1);
		}
		mx_internal function dockControlBar(_arg1:IUIComponent, _arg2:Boolean):void{
			var controlBar = _arg1;
			var dock = _arg2;
			if (dock){
				try {
					removeChild(DisplayObject(controlBar));
				} catch(e:Error) {
					return;
				};
				rawChildren.addChildAt(DisplayObject(controlBar), firstChildIndex);
				setControlBar(controlBar);
			} else {
				try {
					rawChildren.removeChild(DisplayObject(controlBar));
				} catch(e:Error) {
					return;
				};
				setControlBar(null);
				addChildAt(DisplayObject(controlBar), 0);
			};
		}
		override public function get viewMetrics():EdgeMetrics{
			if (!_applicationViewMetrics){
				_applicationViewMetrics = new EdgeMetrics();
			};
			var _local1:EdgeMetrics = _applicationViewMetrics;
			var _local2:EdgeMetrics = super.viewMetrics;
			var _local3:Number = getStyle("borderThickness");
			_local1.left = _local2.left;
			_local1.top = _local2.top;
			_local1.right = _local2.right;
			_local1.bottom = _local2.bottom;
			if (((controlBar) && (controlBar.includeInLayout))){
				_local1.top = (_local1.top - _local3);
				_local1.top = (_local1.top + Math.max(controlBar.getExplicitOrMeasuredHeight(), _local3));
			};
			return (_local1);
		}
		override public function finishPrint(_arg1:Object, _arg2:IFlexDisplayObject):void{
			if (_arg2 == this){
				setActualSize(_arg1.width, _arg1.height);
				if (horizontalScrollBar){
					horizontalScrollBar.visible = _arg1.horizontalScrollBarVisible;
				};
				if (verticalScrollBar){
					verticalScrollBar.visible = _arg1.verticalScrollBarVisible;
				};
				if (whiteBox){
					whiteBox.visible = _arg1.whiteBoxVisible;
				};
				horizontalScrollPosition = _arg1.horizontalScrollPosition;
				verticalScrollPosition = _arg1.verticalScrollPosition;
				updateDisplayList(unscaledWidth, unscaledHeight);
			};
			super.finishPrint(_arg1.scrollRect, _arg2);
		}
		private function processNextQueueItem():void{
			var queueItem:Object;
			var nextChild:IUIComponent;
			if (EffectManager.effectsPlaying.length > 0){
				callLater(processNextQueueItem);
			} else {
				if (creationQueue.length > 0){
					queueItem = creationQueue.shift();
					try {
						nextChild = ((queueItem.id is String)) ? document[queueItem.id] : queueItem.id;
						if ((nextChild is Container)){
							Container(nextChild).createComponentsFromDescriptors(true);
						};
						if ((((nextChild is Container)) && ((Container(nextChild).creationPolicy == ContainerCreationPolicy.QUEUED)))){
							doNextQueueItem();
						} else {
							nextChild.addEventListener("childrenCreationComplete", doNextQueueItem);
						};
					} catch(e:Error) {
						processNextQueueItem();
					};
				} else {
					processingCreationQueue = false;
					Application.useProgressiveLayout = false;
				};
			};
		}
		override public function set label(_arg1:String):void{
		}
		public function get parameters():Object{
			return (_parameters);
		}
		public function get url():String{
			return (_url);
		}
		private function initContextMenu():void{
			var _local2:String;
			if (flexContextMenu != null){
				if ((systemManager is InteractiveObject)){
					InteractiveObject(systemManager).contextMenu = contextMenu;
				};
				return;
			};
			var _local1:ContextMenu = new ContextMenu();
			_local1.hideBuiltInItems();
			_local1.builtInItems.print = true;
			if (_viewSourceURL){
				_local2 = resourceManager.getString("core", "viewSource");
				viewSourceCMI = new ContextMenuItem(_local2, true);
				viewSourceCMI.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, menuItemSelectHandler);
				_local1.customItems.push(viewSourceCMI);
			};
			contextMenu = _local1;
			if ((systemManager is InteractiveObject)){
				InteractiveObject(systemManager).contextMenu = _local1;
			};
		}
		override public function set icon(_arg1:Class):void{
		}
		override protected function updateDisplayList(_arg1:Number, _arg2:Number):void{
			super.updateDisplayList(_arg1, _arg2);
			createBorder();
		}
		private function setControlBar(_arg1:IUIComponent):void{
			if (_arg1 == controlBar){
				return;
			};
			if (((controlBar) && ((controlBar is IStyleClient)))){
				IStyleClient(controlBar).clearStyle("cornerRadius");
				IStyleClient(controlBar).clearStyle("docked");
			};
			controlBar = _arg1;
			if (((controlBar) && ((controlBar is IStyleClient)))){
				IStyleClient(controlBar).setStyle("cornerRadius", 0);
				IStyleClient(controlBar).setStyle("docked", true);
			};
			invalidateSize();
			invalidateDisplayList();
			invalidateViewMetricsAndPadding();
		}
		override public function set tabIndex(_arg1:int):void{
		}

		public static function get application():Object{
			return (ApplicationGlobals.application);
		}

	}
}//package mx.core 

****************

//ApplicationGlobals (mx.core.ApplicationGlobals)
package mx.core {

	public class ApplicationGlobals {

		public static var application:Object;

	}
}//package mx.core 

****************

//BitmapAsset (mx.core.BitmapAsset)
package mx.core {
	import flash.display.*;

	public class BitmapAsset extends FlexBitmap implements IFlexAsset, IFlexDisplayObject {

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function BitmapAsset(_arg1:BitmapData=null, _arg2:String="auto", _arg3:Boolean=false){
			super(_arg1, _arg2, _arg3);
		}
		public function get measuredWidth():Number{
			if (bitmapData){
				return (bitmapData.width);
			};
			return (0);
		}
		public function get measuredHeight():Number{
			if (bitmapData){
				return (bitmapData.height);
			};
			return (0);
		}
		public function setActualSize(_arg1:Number, _arg2:Number):void{
			width = _arg1;
			height = _arg2;
		}
		public function move(_arg1:Number, _arg2:Number):void{
			this.x = _arg1;
			this.y = _arg2;
		}

	}
}//package mx.core 

****************

//ByteArrayAsset (mx.core.ByteArrayAsset)
package mx.core {
	import flash.utils.*;

	public class ByteArrayAsset extends ByteArray implements IFlexAsset {

		mx_internal static const VERSION:String = "3.5.0.12683";

	}
}//package mx.core 

****************

//ComponentDescriptor (mx.core.ComponentDescriptor)
package mx.core {

	public class ComponentDescriptor {

		public var events:Object;
		public var type:Class;
		public var document:Object;
		private var _properties:Object;
		public var propertiesFactory:Function;
		public var id:String;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function ComponentDescriptor(_arg1:Object){
			var _local2:String;
			super();
			for (_local2 in _arg1) {
				this[_local2] = _arg1[_local2];
			};
		}
		public function toString():String{
			return (("ComponentDescriptor_" + id));
		}
		public function invalidateProperties():void{
			_properties = null;
		}
		public function get properties():Object{
			var _local1:Array;
			var _local2:int;
			var _local3:int;
			if (_properties){
				return (_properties);
			};
			if (propertiesFactory != null){
				_properties = propertiesFactory.call(document);
			};
			if (_properties){
				_local1 = _properties.childDescriptors;
				if (_local1){
					_local2 = _local1.length;
					_local3 = 0;
					while (_local3 < _local2) {
						_local1[_local3].document = document;
						_local3++;
					};
				};
			} else {
				_properties = {};
			};
			return (_properties);
		}

	}
}//package mx.core 

****************

//Container (mx.core.Container)
package mx.core {
	import mx.events.*;
	import flash.events.*;
	import flash.display.*;
	import mx.managers.*;
	import flash.geom.*;
	import mx.styles.*;
	import mx.controls.*;
	import flash.text.*;
	import mx.graphics.*;
	import mx.controls.scrollClasses.*;
	import mx.binding.*;
	import flash.utils.*;
	import mx.controls.listClasses.*;
	import flash.ui.*;

	public class Container extends UIComponent implements IContainer, IDataRenderer, IFocusManagerContainer, IListItemRenderer, IRawChildrenContainer {

		private var forceLayout:Boolean;// = false
		private var _numChildrenCreated:int;// = -1
		private var _horizontalLineScrollSize:Number;// = 5
		mx_internal var border:IFlexDisplayObject;
		protected var actualCreationPolicy:String;
		private var _viewMetricsAndPadding:EdgeMetrics;
		private var _creatingContentPane:Boolean;// = false
		private var _childRepeaters:Array;
		private var scrollableWidth:Number;// = 0
		private var _childDescriptors:Array;
		private var _rawChildren:ContainerRawChildrenList;
		private var _data:Object;
		private var _verticalPageScrollSize:Number;// = 0
		private var _viewMetrics:EdgeMetrics;
		private var _verticalScrollBar:ScrollBar;
		private var scrollPropertiesChanged:Boolean;// = false
		private var changedStyles:String;// = null
		private var scrollPositionChanged:Boolean;// = true
		private var _defaultButton:IFlexDisplayObject;
		private var mouseEventReferenceCount:int;// = 0
		private var _focusPane:Sprite;
		protected var whiteBox:Shape;
		private var _forceClippingCount:int;
		private var _horizontalPageScrollSize:Number;// = 0
		private var _creationPolicy:String;
		private var _creationIndex:int;// = -1
		private var _clipContent:Boolean;// = true
		private var _verticalScrollPosition:Number;// = 0
		private var _autoLayout:Boolean;// = true
		private var _icon:Class;// = null
		mx_internal var doingLayout:Boolean;// = false
		private var _horizontalScrollBar:ScrollBar;
		private var numChildrenBefore:int;
		private var viewableHeight:Number;// = 0
		private var viewableWidth:Number;// = 0
		mx_internal var contentPane:Sprite;// = null
		private var _createdComponents:Array;
		private var _firstChildIndex:int;// = 0
		private var scrollableHeight:Number;// = 0
		private var _verticalLineScrollSize:Number;// = 5
		private var _horizontalScrollPosition:Number;// = 0
		mx_internal var _horizontalScrollPolicy:String;// = "auto"
		private var verticalScrollPositionPending:Number;
		mx_internal var _verticalScrollPolicy:String;// = "auto"
		private var horizontalScrollPositionPending:Number;
		mx_internal var _numChildren:int;// = 0
		private var recursionFlag:Boolean;// = true
		private var _label:String;// = ""
		mx_internal var blocker:Sprite;

		mx_internal static const VERSION:String = "3.5.0.12683";
		private static const MULTIPLE_PROPERTIES:String = "<MULTIPLE>";

		public function Container(){
			tabChildren = true;
			tabEnabled = false;
			showInAutomationHierarchy = false;
		}
		public function set verticalScrollPolicy(_arg1:String):void{
			if (_verticalScrollPolicy != _arg1){
				_verticalScrollPolicy = _arg1;
				invalidateDisplayList();
				dispatchEvent(new Event("verticalScrollPolicyChanged"));
			};
		}
		private function createContentPaneAndScrollbarsIfNeeded():Boolean{
			var _local1:Rectangle;
			var _local2:Boolean;
			if (_clipContent){
				_local1 = getScrollableRect();
				_local2 = createScrollbarsIfNeeded(_local1);
				if (border){
					updateBackgroundImageRect();
				};
				return (_local2);
				//unresolved jump
			};
			_local2 = createOrDestroyScrollbars(false, false, false);
			_local1 = getScrollableRect();
			scrollableWidth = _local1.right;
			scrollableHeight = _local1.bottom;
			if (((_local2) && (border))){
				updateBackgroundImageRect();
			};
			return (_local2);
		}
		override protected function initializationComplete():void{
		}
		mx_internal function rawChildren_getObjectsUnderPoint(_arg1:Point):Array{
			return (super.getObjectsUnderPoint(_arg1));
		}
		public function set creatingContentPane(_arg1:Boolean):void{
			_creatingContentPane = _arg1;
		}
		public function set clipContent(_arg1:Boolean):void{
			if (_clipContent != _arg1){
				_clipContent = _arg1;
				invalidateDisplayList();
			};
		}
		protected function scrollChildren():void{
			if (!contentPane){
				return;
			};
			var _local1:EdgeMetrics = viewMetrics;
			var _local2:Number = 0;
			var _local3:Number = 0;
			var _local4:Number = ((unscaledWidth - _local1.left) - _local1.right);
			var _local5:Number = ((unscaledHeight - _local1.top) - _local1.bottom);
			if (_clipContent){
				_local2 = (_local2 + _horizontalScrollPosition);
				if (horizontalScrollBar){
					_local4 = viewableWidth;
				};
				_local3 = (_local3 + _verticalScrollPosition);
				if (verticalScrollBar){
					_local5 = viewableHeight;
				};
			} else {
				_local4 = scrollableWidth;
				_local5 = scrollableHeight;
			};
			var _local6:Rectangle = getScrollableRect();
			if ((((((((((((((_local2 == 0)) && ((_local3 == 0)))) && ((_local4 >= _local6.right)))) && ((_local5 >= _local6.bottom)))) && ((_local6.left >= 0)))) && ((_local6.top >= 0)))) && ((_forceClippingCount <= 0)))){
				contentPane.scrollRect = null;
				contentPane.opaqueBackground = null;
				contentPane.cacheAsBitmap = false;
			} else {
				contentPane.scrollRect = new Rectangle(_local2, _local3, _local4, _local5);
			};
			if (focusPane){
				focusPane.scrollRect = contentPane.scrollRect;
			};
			if (((((border) && ((border is IRectangularBorder)))) && (IRectangularBorder(border).hasBackgroundImage))){
				IRectangularBorder(border).layoutBackgroundImage();
			};
		}
		override public function set doubleClickEnabled(_arg1:Boolean):void{
			var _local2:int;
			var _local3:int;
			var _local4:InteractiveObject;
			super.doubleClickEnabled = _arg1;
			if (contentPane){
				_local2 = contentPane.numChildren;
				_local3 = 0;
				while (_local3 < _local2) {
					_local4 = (contentPane.getChildAt(_local3) as InteractiveObject);
					if (_local4){
						_local4.doubleClickEnabled = _arg1;
					};
					_local3++;
				};
			};
		}
		override public function notifyStyleChangeInChildren(_arg1:String, _arg2:Boolean):void{
			var _local5:ISimpleStyleClient;
			var _local3:int = super.numChildren;
			var _local4:int;
			while (_local4 < _local3) {
				if (((((contentPane) || ((_local4 < _firstChildIndex)))) || ((_local4 >= (_firstChildIndex + _numChildren))))){
					_local5 = (super.getChildAt(_local4) as ISimpleStyleClient);
					if (_local5){
						_local5.styleChanged(_arg1);
						if ((_local5 is IStyleClient)){
							IStyleClient(_local5).notifyStyleChangeInChildren(_arg1, _arg2);
						};
					};
				};
				_local4++;
			};
			if (_arg2){
				changedStyles = (((!((changedStyles == null))) || ((_arg1 == null)))) ? MULTIPLE_PROPERTIES : _arg1;
				invalidateProperties();
			};
		}
		mx_internal function get createdComponents():Array{
			return (_createdComponents);
		}
		public function get childDescriptors():Array{
			return (_childDescriptors);
		}
		override public function get contentMouseY():Number{
			if (contentPane){
				return (contentPane.mouseY);
			};
			return (super.contentMouseY);
		}
		mx_internal function get childRepeaters():Array{
			return (_childRepeaters);
		}
		override public function contains(_arg1:DisplayObject):Boolean{
			if (contentPane){
				return (contentPane.contains(_arg1));
			};
			return (super.contains(_arg1));
		}
		override public function get contentMouseX():Number{
			if (contentPane){
				return (contentPane.mouseX);
			};
			return (super.contentMouseX);
		}
		mx_internal function set createdComponents(_arg1:Array):void{
			_createdComponents = _arg1;
		}
		public function get horizontalScrollBar():ScrollBar{
			return (_horizontalScrollBar);
		}
		override public function validateSize(_arg1:Boolean=false):void{
			var _local2:int;
			var _local3:int;
			var _local4:DisplayObject;
			if ((((autoLayout == false)) && ((forceLayout == false)))){
				if (_arg1){
					_local2 = super.numChildren;
					_local3 = 0;
					while (_local3 < _local2) {
						_local4 = super.getChildAt(_local3);
						if ((_local4 is ILayoutManagerClient)){
							ILayoutManagerClient(_local4).validateSize(true);
						};
						_local3++;
					};
				};
				adjustSizesForScaleChanges();
			} else {
				super.validateSize(_arg1);
			};
		}
		public function get rawChildren():IChildList{
			if (!_rawChildren){
				_rawChildren = new ContainerRawChildrenList(this);
			};
			return (_rawChildren);
		}
		override public function getChildAt(_arg1:int):DisplayObject{
			if (contentPane){
				return (contentPane.getChildAt(_arg1));
			};
			return (super.getChildAt((_firstChildIndex + _arg1)));
		}
		override protected function attachOverlay():void{
			rawChildren_addChild(overlay);
		}
		override public function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{
			super.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5);
			if ((((((((((((((((_arg1 == MouseEvent.CLICK)) || ((_arg1 == MouseEvent.DOUBLE_CLICK)))) || ((_arg1 == MouseEvent.MOUSE_DOWN)))) || ((_arg1 == MouseEvent.MOUSE_MOVE)))) || ((_arg1 == MouseEvent.MOUSE_OVER)))) || ((_arg1 == MouseEvent.MOUSE_OUT)))) || ((_arg1 == MouseEvent.MOUSE_UP)))) || ((_arg1 == MouseEvent.MOUSE_WHEEL)))){
				if ((((mouseEventReferenceCount < 2147483647)) && ((mouseEventReferenceCount++ == 0)))){
					setStyle("mouseShield", true);
					setStyle("mouseShieldChildren", true);
				};
			};
		}
		override public function localToContent(_arg1:Point):Point{
			if (!contentPane){
				return (_arg1);
			};
			_arg1 = localToGlobal(_arg1);
			return (globalToContent(_arg1));
		}
		public function executeChildBindings(_arg1:Boolean):void{
			var _local4:IUIComponent;
			var _local2:int = numChildren;
			var _local3:int;
			while (_local3 < _local2) {
				_local4 = IUIComponent(getChildAt(_local3));
				if ((_local4 is IDeferredInstantiationUIComponent)){
					IDeferredInstantiationUIComponent(_local4).executeBindings(_arg1);
				};
				_local3++;
			};
		}
		protected function createBorder():void{
			var _local1:Class;
			if (((!(border)) && (isBorderNeeded()))){
				_local1 = getStyle("borderSkin");
				if (_local1 != null){
					border = new (_local1);
					border.name = "border";
					if ((border is IUIComponent)){
						IUIComponent(border).enabled = enabled;
					};
					if ((border is ISimpleStyleClient)){
						ISimpleStyleClient(border).styleName = this;
					};
					rawChildren.addChildAt(DisplayObject(border), 0);
					invalidateDisplayList();
				};
			};
		}
		public function get verticalScrollPosition():Number{
			if (!isNaN(verticalScrollPositionPending)){
				return (verticalScrollPositionPending);
			};
			return (_verticalScrollPosition);
		}
		public function get horizontalScrollPosition():Number{
			if (!isNaN(horizontalScrollPositionPending)){
				return (horizontalScrollPositionPending);
			};
			return (_horizontalScrollPosition);
		}
		protected function layoutChrome(_arg1:Number, _arg2:Number):void{
			if (border){
				updateBackgroundImageRect();
				border.move(0, 0);
				border.setActualSize(_arg1, _arg2);
			};
		}
		mx_internal function set childRepeaters(_arg1:Array):void{
			_childRepeaters = _arg1;
		}
		override public function get focusPane():Sprite{
			return (_focusPane);
		}
		public function set creationIndex(_arg1:int):void{
			_creationIndex = _arg1;
		}
		public function get viewMetrics():EdgeMetrics{
			var _local1:EdgeMetrics = borderMetrics;
			var _local2:Boolean = ((!((verticalScrollBar == null))) && (((doingLayout) || ((verticalScrollPolicy == ScrollPolicy.ON)))));
			var _local3:Boolean = ((!((horizontalScrollBar == null))) && (((doingLayout) || ((horizontalScrollPolicy == ScrollPolicy.ON)))));
			if (((!(_local2)) && (!(_local3)))){
				return (_local1);
			};
			if (!_viewMetrics){
				_viewMetrics = _local1.clone();
			} else {
				_viewMetrics.left = _local1.left;
				_viewMetrics.right = _local1.right;
				_viewMetrics.top = _local1.top;
				_viewMetrics.bottom = _local1.bottom;
			};
			if (_local2){
				_viewMetrics.right = (_viewMetrics.right + verticalScrollBar.minWidth);
			};
			if (_local3){
				_viewMetrics.bottom = (_viewMetrics.bottom + horizontalScrollBar.minHeight);
			};
			return (_viewMetrics);
		}
		public function set verticalScrollBar(_arg1:ScrollBar):void{
			_verticalScrollBar = _arg1;
		}
		public function set verticalScrollPosition(_arg1:Number):void{
			if (_verticalScrollPosition == _arg1){
				return;
			};
			_verticalScrollPosition = _arg1;
			scrollPositionChanged = true;
			if (!initialized){
				verticalScrollPositionPending = _arg1;
			};
			invalidateDisplayList();
			dispatchEvent(new Event("viewChanged"));
		}
		mx_internal function $addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{
			super.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5);
		}
		private function createOrDestroyScrollbars(_arg1:Boolean, _arg2:Boolean, _arg3:Boolean):Boolean{
			var _local5:IFocusManager;
			var _local6:String;
			var _local7:String;
			var _local8:Graphics;
			var _local4:Boolean;
			if (((((_arg1) || (_arg2))) || (_arg3))){
				createContentPane();
			};
			if (_arg1){
				if (!horizontalScrollBar){
					horizontalScrollBar = new HScrollBar();
					horizontalScrollBar.name = "horizontalScrollBar";
					_local6 = getStyle("horizontalScrollBarStyleName");
					if (((_local6) && ((horizontalScrollBar is ISimpleStyleClient)))){
						ISimpleStyleClient(horizontalScrollBar).styleName = _local6;
					};
					rawChildren.addChild(DisplayObject(horizontalScrollBar));
					horizontalScrollBar.lineScrollSize = horizontalLineScrollSize;
					horizontalScrollBar.pageScrollSize = horizontalPageScrollSize;
					horizontalScrollBar.addEventListener(ScrollEvent.SCROLL, horizontalScrollBar_scrollHandler);
					horizontalScrollBar.enabled = enabled;
					if ((horizontalScrollBar is IInvalidating)){
						IInvalidating(horizontalScrollBar).validateNow();
					};
					invalidateDisplayList();
					invalidateViewMetricsAndPadding();
					_local4 = true;
					if (!verticalScrollBar){
						addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
					};
				};
			} else {
				if (horizontalScrollBar){
					horizontalScrollBar.removeEventListener(ScrollEvent.SCROLL, horizontalScrollBar_scrollHandler);
					rawChildren.removeChild(DisplayObject(horizontalScrollBar));
					horizontalScrollBar = null;
					viewableWidth = (scrollableWidth = 0);
					if (_horizontalScrollPosition != 0){
						_horizontalScrollPosition = 0;
						scrollPositionChanged = true;
					};
					invalidateDisplayList();
					invalidateViewMetricsAndPadding();
					_local4 = true;
					_local5 = focusManager;
					if (((!(verticalScrollBar)) && (((!(_local5)) || (!((_local5.getFocus() == this))))))){
						removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
					};
				};
			};
			if (_arg2){
				if (!verticalScrollBar){
					verticalScrollBar = new VScrollBar();
					verticalScrollBar.name = "verticalScrollBar";
					_local7 = getStyle("verticalScrollBarStyleName");
					if (((_local7) && ((verticalScrollBar is ISimpleStyleClient)))){
						ISimpleStyleClient(verticalScrollBar).styleName = _local7;
					};
					rawChildren.addChild(DisplayObject(verticalScrollBar));
					verticalScrollBar.lineScrollSize = verticalLineScrollSize;
					verticalScrollBar.pageScrollSize = verticalPageScrollSize;
					verticalScrollBar.addEventListener(ScrollEvent.SCROLL, verticalScrollBar_scrollHandler);
					verticalScrollBar.enabled = enabled;
					if ((verticalScrollBar is IInvalidating)){
						IInvalidating(verticalScrollBar).validateNow();
					};
					invalidateDisplayList();
					invalidateViewMetricsAndPadding();
					_local4 = true;
					if (!horizontalScrollBar){
						addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
					};
					addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler);
				};
			} else {
				if (verticalScrollBar){
					verticalScrollBar.removeEventListener(ScrollEvent.SCROLL, verticalScrollBar_scrollHandler);
					rawChildren.removeChild(DisplayObject(verticalScrollBar));
					verticalScrollBar = null;
					viewableHeight = (scrollableHeight = 0);
					if (_verticalScrollPosition != 0){
						_verticalScrollPosition = 0;
						scrollPositionChanged = true;
					};
					invalidateDisplayList();
					invalidateViewMetricsAndPadding();
					_local4 = true;
					_local5 = focusManager;
					if (((!(horizontalScrollBar)) && (((!(_local5)) || (!((_local5.getFocus() == this))))))){
						removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
					};
					removeEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler);
				};
			};
			if (((horizontalScrollBar) && (verticalScrollBar))){
				if (!whiteBox){
					whiteBox = new FlexShape();
					whiteBox.name = "whiteBox";
					_local8 = whiteBox.graphics;
					_local8.beginFill(0xFFFFFF);
					_local8.drawRect(0, 0, verticalScrollBar.minWidth, horizontalScrollBar.minHeight);
					_local8.endFill();
					rawChildren.addChild(whiteBox);
				};
			} else {
				if (whiteBox){
					rawChildren.removeChild(whiteBox);
					whiteBox = null;
				};
			};
			return (_local4);
		}
		override protected function keyDownHandler(_arg1:KeyboardEvent):void{
			var _local3:String;
			var _local4:Number;
			var _local2:Object = getFocus();
			if ((_local2 is TextField)){
				return;
			};
			if (verticalScrollBar){
				_local3 = ScrollEventDirection.VERTICAL;
				_local4 = verticalScrollPosition;
				switch (_arg1.keyCode){
					case Keyboard.DOWN:
						verticalScrollPosition = (verticalScrollPosition + verticalLineScrollSize);
						dispatchScrollEvent(_local3, _local4, verticalScrollPosition, ScrollEventDetail.LINE_DOWN);
						_arg1.stopPropagation();
						break;
					case Keyboard.UP:
						verticalScrollPosition = (verticalScrollPosition - verticalLineScrollSize);
						dispatchScrollEvent(_local3, _local4, verticalScrollPosition, ScrollEventDetail.LINE_UP);
						_arg1.stopPropagation();
						break;
					case Keyboard.PAGE_UP:
						verticalScrollPosition = (verticalScrollPosition - verticalPageScrollSize);
						dispatchScrollEvent(_local3, _local4, verticalScrollPosition, ScrollEventDetail.PAGE_UP);
						_arg1.stopPropagation();
						break;
					case Keyboard.PAGE_DOWN:
						verticalScrollPosition = (verticalScrollPosition + verticalPageScrollSize);
						dispatchScrollEvent(_local3, _local4, verticalScrollPosition, ScrollEventDetail.PAGE_DOWN);
						_arg1.stopPropagation();
						break;
					case Keyboard.HOME:
						verticalScrollPosition = verticalScrollBar.minScrollPosition;
						dispatchScrollEvent(_local3, _local4, verticalScrollPosition, ScrollEventDetail.AT_TOP);
						_arg1.stopPropagation();
						break;
					case Keyboard.END:
						verticalScrollPosition = verticalScrollBar.maxScrollPosition;
						dispatchScrollEvent(_local3, _local4, verticalScrollPosition, ScrollEventDetail.AT_BOTTOM);
						_arg1.stopPropagation();
						break;
				};
			};
			if (horizontalScrollBar){
				_local3 = ScrollEventDirection.HORIZONTAL;
				_local4 = horizontalScrollPosition;
				switch (_arg1.keyCode){
					case Keyboard.LEFT:
						horizontalScrollPosition = (horizontalScrollPosition - horizontalLineScrollSize);
						dispatchScrollEvent(_local3, _local4, horizontalScrollPosition, ScrollEventDetail.LINE_LEFT);
						_arg1.stopPropagation();
						break;
					case Keyboard.RIGHT:
						horizontalScrollPosition = (horizontalScrollPosition + horizontalLineScrollSize);
						dispatchScrollEvent(_local3, _local4, horizontalScrollPosition, ScrollEventDetail.LINE_RIGHT);
						_arg1.stopPropagation();
						break;
				};
			};
		}
		public function get icon():Class{
			return (_icon);
		}
		private function createOrDestroyBlocker():void{
			var _local1:DisplayObject;
			var _local2:ISystemManager;
			if (enabled){
				if (blocker){
					rawChildren.removeChild(blocker);
					blocker = null;
				};
			} else {
				if (!blocker){
					blocker = new FlexSprite();
					blocker.name = "blocker";
					blocker.mouseEnabled = true;
					rawChildren.addChild(blocker);
					blocker.addEventListener(MouseEvent.CLICK, blocker_clickHandler);
					_local1 = (focusManager) ? DisplayObject(focusManager.getFocus()) : null;
					while (_local1) {
						if (_local1 == this){
							_local2 = systemManager;
							if (((_local2) && (_local2.stage))){
								_local2.stage.focus = null;
							};
							break;
						};
						_local1 = _local1.parent;
					};
				};
			};
		}
		private function horizontalScrollBar_scrollHandler(_arg1:Event):void{
			var _local2:Number;
			if ((_arg1 is ScrollEvent)){
				_local2 = horizontalScrollPosition;
				horizontalScrollPosition = horizontalScrollBar.scrollPosition;
				dispatchScrollEvent(ScrollEventDirection.HORIZONTAL, _local2, horizontalScrollPosition, ScrollEvent(_arg1).detail);
			};
		}
		public function createComponentFromDescriptor(_arg1:ComponentDescriptor, _arg2:Boolean):IFlexDisplayObject{
			var _local7:String;
			var _local10:IRepeaterClient;
			var _local11:IStyleClient;
			var _local12:String;
			var _local13:String;
			var _local3:UIComponentDescriptor = UIComponentDescriptor(_arg1);
			var _local4:Object = _local3.properties;
			if (((((((!((numChildrenBefore == 0))) || (!((numChildrenCreated == -1))))) && ((_local3.instanceIndices == null)))) && (hasChildMatchingDescriptor(_local3)))){
				return (null);
			};
			UIComponentGlobals.layoutManager.usePhasedInstantiation = true;
			var _local5:Class = _local3.type;
			var _local6:IDeferredInstantiationUIComponent = new (_local5);
			_local6.id = _local3.id;
			if (((_local6.id) && (!((_local6.id == ""))))){
				_local6.name = _local6.id;
			};
			_local6.descriptor = _local3;
			if (((_local4.childDescriptors) && ((_local6 is Container)))){
				Container(_local6)._childDescriptors = _local4.childDescriptors;
				delete _local4.childDescriptors;
			};
			for (_local7 in _local4) {
				_local6[_local7] = _local4[_local7];
			};
			if ((_local6 is Container)){
				Container(_local6).recursionFlag = _arg2;
			};
			if (_local3.instanceIndices){
				if ((_local6 is IRepeaterClient)){
					_local10 = IRepeaterClient(_local6);
					_local10.instanceIndices = _local3.instanceIndices;
					_local10.repeaters = _local3.repeaters;
					_local10.repeaterIndices = _local3.repeaterIndices;
				};
			};
			if ((_local6 is IStyleClient)){
				_local11 = IStyleClient(_local6);
				if (_local3.stylesFactory != null){
					if (!_local11.styleDeclaration){
						_local11.styleDeclaration = new CSSStyleDeclaration();
					};
					_local11.styleDeclaration.factory = _local3.stylesFactory;
				};
			};
			var _local8:Object = _local3.events;
			if (_local8){
				for (_local12 in _local8) {
					_local13 = _local8[_local12];
					_local6.addEventListener(_local12, _local3.document[_local13]);
				};
			};
			var _local9:Array = _local3.effects;
			if (_local9){
				_local6.registerEffects(_local9);
			};
			if ((_local6 is IRepeaterClient)){
				IRepeaterClient(_local6).initializeRepeaterArrays(this);
			};
			_local6.createReferenceOnParentDocument(IFlexDisplayObject(_local3.document));
			if (!_local6.document){
				_local6.document = _local3.document;
			};
			if ((_local6 is IRepeater)){
				if (!childRepeaters){
					childRepeaters = [];
				};
				childRepeaters.push(_local6);
				_local6.executeBindings();
				IRepeater(_local6).initializeRepeater(this, _arg2);
			} else {
				addChild(DisplayObject(_local6));
				_local6.executeBindings();
				if ((((creationPolicy == ContainerCreationPolicy.QUEUED)) || ((creationPolicy == ContainerCreationPolicy.NONE)))){
					_local6.addEventListener(FlexEvent.CREATION_COMPLETE, creationCompleteHandler);
				};
			};
			return (_local6);
		}
		override public function set enabled(_arg1:Boolean):void{
			super.enabled = _arg1;
			if (horizontalScrollBar){
				horizontalScrollBar.enabled = _arg1;
			};
			if (verticalScrollBar){
				verticalScrollBar.enabled = _arg1;
			};
			invalidateProperties();
		}
		public function set horizontalScrollBar(_arg1:ScrollBar):void{
			_horizontalScrollBar = _arg1;
		}
		mx_internal function get usePadding():Boolean{
			return (true);
		}
		override public function get baselinePosition():Number{
			var _local2:IUIComponent;
			if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0){
				if ((((getStyle("verticalAlign") == "top")) && ((numChildren > 0)))){
					_local2 = (getChildAt(0) as IUIComponent);
					if (_local2){
						return ((_local2.y + _local2.baselinePosition));
					};
				};
				return (super.baselinePosition);
			};
			if (!validateBaselinePosition()){
				return (NaN);
			};
			var _local1:TextLineMetrics = measureText("Wj");
			if (height < (((2 * viewMetrics.top) + 4) + _local1.ascent)){
				return (int((height + ((_local1.ascent - height) / 2))));
			};
			return (((viewMetrics.top + 2) + _local1.ascent));
		}
		override public function getChildByName(_arg1:String):DisplayObject{
			var _local2:DisplayObject;
			var _local3:int;
			if (contentPane){
				return (contentPane.getChildByName(_arg1));
			};
			_local2 = super.getChildByName(_arg1);
			if (!_local2){
				return (null);
			};
			_local3 = (super.getChildIndex(_local2) - _firstChildIndex);
			if ((((_local3 < 0)) || ((_local3 >= _numChildren)))){
				return (null);
			};
			return (_local2);
		}
		public function get verticalLineScrollSize():Number{
			return (_verticalLineScrollSize);
		}
		public function get horizontalScrollPolicy():String{
			return (_horizontalScrollPolicy);
		}
		mx_internal function $removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{
			super.removeEventListener(_arg1, _arg2, _arg3);
		}
		public function get maxVerticalScrollPosition():Number{
			return ((verticalScrollBar) ? verticalScrollBar.maxScrollPosition : Math.max((scrollableHeight - viewableHeight), 0));
		}
		public function set horizontalScrollPosition(_arg1:Number):void{
			if (_horizontalScrollPosition == _arg1){
				return;
			};
			_horizontalScrollPosition = _arg1;
			scrollPositionChanged = true;
			if (!initialized){
				horizontalScrollPositionPending = _arg1;
			};
			invalidateDisplayList();
			dispatchEvent(new Event("viewChanged"));
		}
		mx_internal function invalidateViewMetricsAndPadding():void{
			_viewMetricsAndPadding = null;
		}
		public function get horizontalLineScrollSize():Number{
			return (_horizontalLineScrollSize);
		}
		override public function set focusPane(_arg1:Sprite):void{
			var _local2:Boolean = invalidateSizeFlag;
			var _local3:Boolean = invalidateDisplayListFlag;
			invalidateSizeFlag = true;
			invalidateDisplayListFlag = true;
			if (_arg1){
				rawChildren.addChild(_arg1);
				_arg1.x = 0;
				_arg1.y = 0;
				_arg1.scrollRect = null;
				_focusPane = _arg1;
			} else {
				rawChildren.removeChild(_focusPane);
				_focusPane = null;
			};
			if (((_arg1) && (contentPane))){
				_arg1.x = contentPane.x;
				_arg1.y = contentPane.y;
				_arg1.scrollRect = contentPane.scrollRect;
			};
			invalidateSizeFlag = _local2;
			invalidateDisplayListFlag = _local3;
		}
		private function updateBackgroundImageRect():void{
			var _local1:IRectangularBorder = (border as IRectangularBorder);
			if (!_local1){
				return;
			};
			if ((((viewableWidth == 0)) && ((viewableHeight == 0)))){
				_local1.backgroundImageBounds = null;
				return;
			};
			var _local2:EdgeMetrics = viewMetrics;
			var _local3:Number = (viewableWidth) ? viewableWidth : ((unscaledWidth - _local2.left) - _local2.right);
			var _local4:Number = (viewableHeight) ? viewableHeight : ((unscaledHeight - _local2.top) - _local2.bottom);
			if (getStyle("backgroundAttachment") == "fixed"){
				_local1.backgroundImageBounds = new Rectangle(_local2.left, _local2.top, _local3, _local4);
			} else {
				_local1.backgroundImageBounds = new Rectangle(_local2.left, _local2.top, Math.max(scrollableWidth, _local3), Math.max(scrollableHeight, _local4));
			};
		}
		private function blocker_clickHandler(_arg1:Event):void{
			_arg1.stopPropagation();
		}
		private function mouseWheelHandler(_arg1:MouseEvent):void{
			var _local2:int;
			var _local3:int;
			var _local4:Number;
			var _local5:Number;
			if (verticalScrollBar){
				_arg1.stopPropagation();
				_local2 = ((_arg1.delta <= 0)) ? 1 : -1;
				_local3 = (verticalScrollBar) ? verticalScrollBar.lineScrollSize : 1;
				_local4 = Math.max(Math.abs(_arg1.delta), _local3);
				_local5 = verticalScrollPosition;
				verticalScrollPosition = (verticalScrollPosition + ((3 * _local4) * _local2));
				dispatchScrollEvent(ScrollEventDirection.VERTICAL, _local5, verticalScrollPosition, ((_arg1.delta <= 0)) ? ScrollEventDetail.LINE_UP : ScrollEventDetail.LINE_DOWN);
			};
		}
		public function get defaultButton():IFlexDisplayObject{
			return (_defaultButton);
		}
		mx_internal function createContentPane():void{
			var _local3:int;
			var _local5:IUIComponent;
			if (contentPane){
				return;
			};
			creatingContentPane = true;
			var _local1:int = numChildren;
			var _local2:Sprite = new FlexSprite();
			_local2.name = "contentPane";
			_local2.tabChildren = true;
			if (border){
				_local3 = (rawChildren.getChildIndex(DisplayObject(border)) + 1);
				if ((((border is IRectangularBorder)) && (IRectangularBorder(border).hasBackgroundImage))){
					_local3++;
				};
			} else {
				_local3 = 0;
			};
			rawChildren.addChildAt(_local2, _local3);
			var _local4:int;
			while (_local4 < _local1) {
				_local5 = IUIComponent(super.getChildAt(_firstChildIndex));
				_local2.addChild(DisplayObject(_local5));
				_local5.parentChanged(_local2);
				_numChildren--;
				_local4++;
			};
			contentPane = _local2;
			creatingContentPane = false;
			contentPane.visible = true;
		}
		public function set verticalPageScrollSize(_arg1:Number):void{
			scrollPropertiesChanged = true;
			_verticalPageScrollSize = _arg1;
			invalidateDisplayList();
			dispatchEvent(new Event("verticalPageScrollSizeChanged"));
		}
		mx_internal function setDocumentDescriptor(_arg1:UIComponentDescriptor):void{
			var _local2:String;
			if (processedDescriptors){
				return;
			};
			if (((_documentDescriptor) && (_documentDescriptor.properties.childDescriptors))){
				if (_arg1.properties.childDescriptors){
					_local2 = resourceManager.getString("core", "multipleChildSets_ClassAndSubclass");
					throw (new Error(_local2));
				};
			} else {
				_documentDescriptor = _arg1;
				_documentDescriptor.document = this;
			};
		}
		private function verticalScrollBar_scrollHandler(_arg1:Event):void{
			var _local2:Number;
			if ((_arg1 is ScrollEvent)){
				_local2 = verticalScrollPosition;
				verticalScrollPosition = verticalScrollBar.scrollPosition;
				dispatchScrollEvent(ScrollEventDirection.VERTICAL, _local2, verticalScrollPosition, ScrollEvent(_arg1).detail);
			};
		}
		public function get creationPolicy():String{
			return (_creationPolicy);
		}
		public function set icon(_arg1:Class):void{
			_icon = _arg1;
			dispatchEvent(new Event("iconChanged"));
		}
		private function dispatchScrollEvent(_arg1:String, _arg2:Number, _arg3:Number, _arg4:String):void{
			var _local5:ScrollEvent = new ScrollEvent(ScrollEvent.SCROLL);
			_local5.direction = _arg1;
			_local5.position = _arg3;
			_local5.delta = (_arg3 - _arg2);
			_local5.detail = _arg4;
			dispatchEvent(_local5);
		}
		public function get label():String{
			return (_label);
		}
		public function get verticalScrollPolicy():String{
			return (_verticalScrollPolicy);
		}
		public function get borderMetrics():EdgeMetrics{
			return ((((border) && ((border is IRectangularBorder)))) ? IRectangularBorder(border).borderMetrics : EdgeMetrics.EMPTY);
		}
		private function creationCompleteHandler(_arg1:FlexEvent):void{
			numChildrenCreated--;
			if (numChildrenCreated <= 0){
				dispatchEvent(new FlexEvent("childrenCreationComplete"));
			};
		}
		override public function contentToLocal(_arg1:Point):Point{
			if (!contentPane){
				return (_arg1);
			};
			_arg1 = contentToGlobal(_arg1);
			return (globalToLocal(_arg1));
		}
		override public function removeChild(_arg1:DisplayObject):DisplayObject{
			var _local2:int;
			var _local3:int;
			if ((((_arg1 is IDeferredInstantiationUIComponent)) && (IDeferredInstantiationUIComponent(_arg1).descriptor))){
				if (createdComponents){
					_local2 = createdComponents.length;
					_local3 = 0;
					while (_local3 < _local2) {
						if (createdComponents[_local3] === _arg1){
							createdComponents.splice(_local3, 1);
						};
						_local3++;
					};
				};
			};
			removingChild(_arg1);
			if ((((_arg1 is UIComponent)) && (UIComponent(_arg1).isDocument))){
				BindingManager.setEnabled(_arg1, false);
			};
			if (contentPane){
				contentPane.removeChild(_arg1);
			} else {
				$removeChild(_arg1);
			};
			childRemoved(_arg1);
			return (_arg1);
		}
		final mx_internal function get $numChildren():int{
			return (super.numChildren);
		}
		mx_internal function get numRepeaters():int{
			return ((childRepeaters) ? childRepeaters.length : 0);
		}
		mx_internal function set numChildrenCreated(_arg1:int):void{
			_numChildrenCreated = _arg1;
		}
		public function get creatingContentPane():Boolean{
			return (_creatingContentPane);
		}
		public function get clipContent():Boolean{
			return (_clipContent);
		}
		mx_internal function rawChildren_getChildIndex(_arg1:DisplayObject):int{
			return (super.getChildIndex(_arg1));
		}
		override public function regenerateStyleCache(_arg1:Boolean):void{
			var _local2:int;
			var _local3:int;
			var _local4:DisplayObject;
			super.regenerateStyleCache(_arg1);
			if (contentPane){
				_local2 = contentPane.numChildren;
				_local3 = 0;
				while (_local3 < _local2) {
					_local4 = getChildAt(_local3);
					if (((_arg1) && ((_local4 is UIComponent)))){
						if (UIComponent(_local4).inheritingStyles != UIComponent.STYLE_UNINITIALIZED){
							UIComponent(_local4).regenerateStyleCache(_arg1);
						};
					} else {
						if ((((_local4 is IUITextField)) && (IUITextField(_local4).inheritingStyles))){
							StyleProtoChain.initTextField(IUITextField(_local4));
						};
					};
					_local3++;
				};
			};
		}
		override public function getChildIndex(_arg1:DisplayObject):int{
			var _local2:int;
			if (contentPane){
				return (contentPane.getChildIndex(_arg1));
			};
			_local2 = (super.getChildIndex(_arg1) - _firstChildIndex);
			return (_local2);
		}
		mx_internal function rawChildren_contains(_arg1:DisplayObject):Boolean{
			return (super.contains(_arg1));
		}
		mx_internal function getScrollableRect():Rectangle{
			var _local9:DisplayObject;
			var _local1:Number = 0;
			var _local2:Number = 0;
			var _local3:Number = 0;
			var _local4:Number = 0;
			var _local5:int = numChildren;
			var _local6:int;
			while (_local6 < _local5) {
				_local9 = getChildAt(_local6);
				if ((((_local9 is IUIComponent)) && (!(IUIComponent(_local9).includeInLayout)))){
				} else {
					_local1 = Math.min(_local1, _local9.x);
					_local2 = Math.min(_local2, _local9.y);
					if (!isNaN(_local9.width)){
						_local3 = Math.max(_local3, (_local9.x + _local9.width));
					};
					if (!isNaN(_local9.height)){
						_local4 = Math.max(_local4, (_local9.y + _local9.height));
					};
				};
				_local6++;
			};
			var _local7:EdgeMetrics = viewMetrics;
			var _local8:Rectangle = new Rectangle();
			_local8.left = _local1;
			_local8.top = _local2;
			_local8.right = _local3;
			_local8.bottom = _local4;
			if (usePadding){
				_local8.right = (_local8.right + getStyle("paddingRight"));
				_local8.bottom = (_local8.bottom + getStyle("paddingBottom"));
			};
			return (_local8);
		}
		override protected function createChildren():void{
			var _local1:Application;
			super.createChildren();
			createBorder();
			createOrDestroyScrollbars((horizontalScrollPolicy == ScrollPolicy.ON), (verticalScrollPolicy == ScrollPolicy.ON), (((horizontalScrollPolicy == ScrollPolicy.ON)) || ((verticalScrollPolicy == ScrollPolicy.ON))));
			if (creationPolicy != null){
				actualCreationPolicy = creationPolicy;
			} else {
				if ((parent is Container)){
					if (Container(parent).actualCreationPolicy == ContainerCreationPolicy.QUEUED){
						actualCreationPolicy = ContainerCreationPolicy.AUTO;
					} else {
						actualCreationPolicy = Container(parent).actualCreationPolicy;
					};
				};
			};
			if (actualCreationPolicy == ContainerCreationPolicy.NONE){
				actualCreationPolicy = ContainerCreationPolicy.AUTO;
			} else {
				if (actualCreationPolicy == ContainerCreationPolicy.QUEUED){
					_local1 = (parentApplication) ? Application(parentApplication) : Application(Application.application);
					_local1.addToCreationQueue(this, creationIndex, null, this);
				} else {
					if (recursionFlag){
						createComponentsFromDescriptors();
					};
				};
			};
			if (autoLayout == false){
				forceLayout = true;
			};
			UIComponentGlobals.layoutManager.addEventListener(FlexEvent.UPDATE_COMPLETE, layoutCompleteHandler, false, 0, true);
		}
		override public function executeBindings(_arg1:Boolean=false):void{
			var _local2:Object = (((descriptor) && (descriptor.document))) ? descriptor.document : parentDocument;
			BindingManager.executeBindings(_local2, id, this);
			if (_arg1){
				executeChildBindings(_arg1);
			};
		}
		override public function setChildIndex(_arg1:DisplayObject, _arg2:int):void{
			var _local3:int;
			var _local4:int = _local3;
			var _local5:int = _arg2;
			if (contentPane){
				contentPane.setChildIndex(_arg1, _arg2);
				if (((_autoLayout) || (forceLayout))){
					invalidateDisplayList();
				};
			} else {
				_local3 = super.getChildIndex(_arg1);
				_arg2 = (_arg2 + _firstChildIndex);
				if (_arg2 == _local3){
					return;
				};
				super.setChildIndex(_arg1, _arg2);
				invalidateDisplayList();
				_local4 = (_local3 - _firstChildIndex);
				_local5 = (_arg2 - _firstChildIndex);
			};
			var _local6:IndexChangedEvent = new IndexChangedEvent(IndexChangedEvent.CHILD_INDEX_CHANGE);
			_local6.relatedObject = _arg1;
			_local6.oldIndex = _local4;
			_local6.newIndex = _local5;
			dispatchEvent(_local6);
			dispatchEvent(new Event("childrenChanged"));
		}
		override public function globalToContent(_arg1:Point):Point{
			if (contentPane){
				return (contentPane.globalToLocal(_arg1));
			};
			return (globalToLocal(_arg1));
		}
		mx_internal function rawChildren_removeChild(_arg1:DisplayObject):DisplayObject{
			var _local2:int = rawChildren_getChildIndex(_arg1);
			return (rawChildren_removeChildAt(_local2));
		}
		mx_internal function rawChildren_setChildIndex(_arg1:DisplayObject, _arg2:int):void{
			var _local3:int = super.getChildIndex(_arg1);
			super.setChildIndex(_arg1, _arg2);
			if ((((_local3 < _firstChildIndex)) && ((_arg2 >= _firstChildIndex)))){
				_firstChildIndex--;
			} else {
				if ((((_local3 >= _firstChildIndex)) && ((_arg2 <= _firstChildIndex)))){
					_firstChildIndex++;
				};
			};
			dispatchEvent(new Event("childrenChanged"));
		}
		public function set verticalLineScrollSize(_arg1:Number):void{
			scrollPropertiesChanged = true;
			_verticalLineScrollSize = _arg1;
			invalidateDisplayList();
			dispatchEvent(new Event("verticalLineScrollSizeChanged"));
		}
		mx_internal function rawChildren_getChildAt(_arg1:int):DisplayObject{
			return (super.getChildAt(_arg1));
		}
		public function get creationIndex():int{
			return (_creationIndex);
		}
		public function get verticalScrollBar():ScrollBar{
			return (_verticalScrollBar);
		}
		public function get viewMetricsAndPadding():EdgeMetrics{
			if (((((_viewMetricsAndPadding) && (((!(horizontalScrollBar)) || ((horizontalScrollPolicy == ScrollPolicy.ON)))))) && (((!(verticalScrollBar)) || ((verticalScrollPolicy == ScrollPolicy.ON)))))){
				return (_viewMetricsAndPadding);
			};
			if (!_viewMetricsAndPadding){
				_viewMetricsAndPadding = new EdgeMetrics();
			};
			var _local1:EdgeMetrics = _viewMetricsAndPadding;
			var _local2:EdgeMetrics = viewMetrics;
			_local1.left = (_local2.left + getStyle("paddingLeft"));
			_local1.right = (_local2.right + getStyle("paddingRight"));
			_local1.top = (_local2.top + getStyle("paddingTop"));
			_local1.bottom = (_local2.bottom + getStyle("paddingBottom"));
			return (_local1);
		}
		override public function addChild(_arg1:DisplayObject):DisplayObject{
			return (addChildAt(_arg1, numChildren));
		}
		public function set horizontalPageScrollSize(_arg1:Number):void{
			scrollPropertiesChanged = true;
			_horizontalPageScrollSize = _arg1;
			invalidateDisplayList();
			dispatchEvent(new Event("horizontalPageScrollSizeChanged"));
		}
		override mx_internal function childAdded(_arg1:DisplayObject):void{
			dispatchEvent(new Event("childrenChanged"));
			var _local2:ChildExistenceChangedEvent = new ChildExistenceChangedEvent(ChildExistenceChangedEvent.CHILD_ADD);
			_local2.relatedObject = _arg1;
			dispatchEvent(_local2);
			_arg1.dispatchEvent(new FlexEvent(FlexEvent.ADD));
			super.childAdded(_arg1);
		}
		public function set horizontalScrollPolicy(_arg1:String):void{
			if (_horizontalScrollPolicy != _arg1){
				_horizontalScrollPolicy = _arg1;
				invalidateDisplayList();
				dispatchEvent(new Event("horizontalScrollPolicyChanged"));
			};
		}
		private function layoutCompleteHandler(_arg1:FlexEvent):void{
			UIComponentGlobals.layoutManager.removeEventListener(FlexEvent.UPDATE_COMPLETE, layoutCompleteHandler);
			forceLayout = false;
			var _local2:Boolean;
			if (!isNaN(horizontalScrollPositionPending)){
				if (horizontalScrollPositionPending < 0){
					horizontalScrollPositionPending = 0;
				} else {
					if (horizontalScrollPositionPending > maxHorizontalScrollPosition){
						horizontalScrollPositionPending = maxHorizontalScrollPosition;
					};
				};
				if (((horizontalScrollBar) && (!((horizontalScrollBar.scrollPosition == horizontalScrollPositionPending))))){
					_horizontalScrollPosition = horizontalScrollPositionPending;
					horizontalScrollBar.scrollPosition = horizontalScrollPositionPending;
					_local2 = true;
				};
				horizontalScrollPositionPending = NaN;
			};
			if (!isNaN(verticalScrollPositionPending)){
				if (verticalScrollPositionPending < 0){
					verticalScrollPositionPending = 0;
				} else {
					if (verticalScrollPositionPending > maxVerticalScrollPosition){
						verticalScrollPositionPending = maxVerticalScrollPosition;
					};
				};
				if (((verticalScrollBar) && (!((verticalScrollBar.scrollPosition == verticalScrollPositionPending))))){
					_verticalScrollPosition = verticalScrollPositionPending;
					verticalScrollBar.scrollPosition = verticalScrollPositionPending;
					_local2 = true;
				};
				verticalScrollPositionPending = NaN;
			};
			if (_local2){
				scrollChildren();
			};
		}
		public function createComponentsFromDescriptors(_arg1:Boolean=true):void{
			var _local4:IFlexDisplayObject;
			numChildrenBefore = numChildren;
			createdComponents = [];
			var _local2:int = (childDescriptors) ? childDescriptors.length : 0;
			var _local3:int;
			while (_local3 < _local2) {
				_local4 = createComponentFromDescriptor(childDescriptors[_local3], _arg1);
				createdComponents.push(_local4);
				_local3++;
			};
			if ((((creationPolicy == ContainerCreationPolicy.QUEUED)) || ((creationPolicy == ContainerCreationPolicy.NONE)))){
				UIComponentGlobals.layoutManager.usePhasedInstantiation = false;
			};
			numChildrenCreated = (numChildren - numChildrenBefore);
			processedDescriptors = true;
		}
		override mx_internal function fillOverlay(_arg1:UIComponent, _arg2:uint, _arg3:RoundedRectangle=null):void{
			var _local4:EdgeMetrics = viewMetrics;
			var _local5:Number = 0;
			if (!_arg3){
				_arg3 = new RoundedRectangle(_local4.left, _local4.top, ((unscaledWidth - _local4.right) - _local4.left), ((unscaledHeight - _local4.bottom) - _local4.top), _local5);
			};
			if (((((((((isNaN(_arg3.x)) || (isNaN(_arg3.y)))) || (isNaN(_arg3.width)))) || (isNaN(_arg3.height)))) || (isNaN(_arg3.cornerRadius)))){
				return;
			};
			var _local6:Graphics = _arg1.graphics;
			_local6.clear();
			_local6.beginFill(_arg2);
			_local6.drawRoundRect(_arg3.x, _arg3.y, _arg3.width, _arg3.height, (_arg3.cornerRadius * 2), (_arg3.cornerRadius * 2));
			_local6.endFill();
		}
		override public function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{
			super.removeEventListener(_arg1, _arg2, _arg3);
			if ((((((((((((((((_arg1 == MouseEvent.CLICK)) || ((_arg1 == MouseEvent.DOUBLE_CLICK)))) || ((_arg1 == MouseEvent.MOUSE_DOWN)))) || ((_arg1 == MouseEvent.MOUSE_MOVE)))) || ((_arg1 == MouseEvent.MOUSE_OVER)))) || ((_arg1 == MouseEvent.MOUSE_OUT)))) || ((_arg1 == MouseEvent.MOUSE_UP)))) || ((_arg1 == MouseEvent.MOUSE_WHEEL)))){
				if ((((mouseEventReferenceCount > 0)) && ((--mouseEventReferenceCount == 0)))){
					setStyle("mouseShield", false);
					setStyle("mouseShieldChildren", false);
				};
			};
		}
		mx_internal function rawChildren_removeChildAt(_arg1:int):DisplayObject{
			var _local2:DisplayObject = super.getChildAt(_arg1);
			super.removingChild(_local2);
			$removeChildAt(_arg1);
			super.childRemoved(_local2);
			if ((((_firstChildIndex < _arg1)) && ((_arg1 < (_firstChildIndex + _numChildren))))){
				_numChildren--;
			} else {
				if ((((_numChildren == 0)) || ((_arg1 < _firstChildIndex)))){
					_firstChildIndex--;
				};
			};
			invalidateSize();
			invalidateDisplayList();
			dispatchEvent(new Event("childrenChanged"));
			return (_local2);
		}
		public function set data(_arg1:Object):void{
			_data = _arg1;
			dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
			invalidateDisplayList();
		}
		override public function removeChildAt(_arg1:int):DisplayObject{
			return (removeChild(getChildAt(_arg1)));
		}
		private function isBorderNeeded():Boolean{
			var c:Class = getStyle("borderSkin");
			try {
				if (c != getDefinitionByName("mx.skins.halo::HaloBorder")){
					return (true);
				};
			} catch(e:Error) {
				return (true);
			};
			var v:Object = getStyle("borderStyle");
			if (v){
				if (((!((v == "none"))) || ((((v == "none")) && (getStyle("mouseShield")))))){
					return (true);
				};
			};
			v = getStyle("backgroundColor");
			if (((!((v === null))) && (!((v === ""))))){
				return (true);
			};
			v = getStyle("backgroundImage");
			return (((!((v == null))) && (!((v == "")))));
		}
		public function set autoLayout(_arg1:Boolean):void{
			var _local2:IInvalidating;
			_autoLayout = _arg1;
			if (_arg1){
				invalidateSize();
				invalidateDisplayList();
				_local2 = (parent as IInvalidating);
				if (_local2){
					_local2.invalidateSize();
					_local2.invalidateDisplayList();
				};
			};
		}
		public function get verticalPageScrollSize():Number{
			return (_verticalPageScrollSize);
		}
		public function getChildren():Array{
			var _local1:Array = [];
			var _local2:int = numChildren;
			var _local3:int;
			while (_local3 < _local2) {
				_local1.push(getChildAt(_local3));
				_local3++;
			};
			return (_local1);
		}
		override public function addChildAt(_arg1:DisplayObject, _arg2:int):DisplayObject{
			var _local3:DisplayObjectContainer = _arg1.parent;
			if (((_local3) && (!((_local3 is Loader))))){
				if (_local3 == this){
					_arg2 = ((_arg2)==numChildren) ? (_arg2 - 1) : _arg2;
				};
				_local3.removeChild(_arg1);
			};
			addingChild(_arg1);
			if (contentPane){
				contentPane.addChildAt(_arg1, _arg2);
			} else {
				$addChildAt(_arg1, (_firstChildIndex + _arg2));
			};
			childAdded(_arg1);
			if ((((_arg1 is UIComponent)) && (UIComponent(_arg1).isDocument))){
				BindingManager.setEnabled(_arg1, true);
			};
			return (_arg1);
		}
		private function createScrollbarsIfNeeded(_arg1:Rectangle):Boolean{
			var _local2:Number = _arg1.right;
			var _local3:Number = _arg1.bottom;
			var _local4:Number = unscaledWidth;
			var _local5:Number = unscaledHeight;
			var _local6:Boolean = (((_arg1.left < 0)) || ((_arg1.top < 0)));
			var _local7:EdgeMetrics = viewMetrics;
			if (scaleX != 1){
				_local4 = (_local4 + (1 / Math.abs(scaleX)));
			};
			if (scaleY != 1){
				_local5 = (_local5 + (1 / Math.abs(scaleY)));
			};
			_local4 = Math.floor(_local4);
			_local5 = Math.floor(_local5);
			_local2 = Math.floor(_local2);
			_local3 = Math.floor(_local3);
			if (((horizontalScrollBar) && (!((horizontalScrollPolicy == ScrollPolicy.ON))))){
				_local5 = (_local5 - horizontalScrollBar.minHeight);
			};
			if (((verticalScrollBar) && (!((verticalScrollPolicy == ScrollPolicy.ON))))){
				_local4 = (_local4 - verticalScrollBar.minWidth);
			};
			_local4 = (_local4 - (_local7.left + _local7.right));
			_local5 = (_local5 - (_local7.top + _local7.bottom));
			var _local8 = (horizontalScrollPolicy == ScrollPolicy.ON);
			var _local9 = (verticalScrollPolicy == ScrollPolicy.ON);
			var _local10:Boolean = ((((((((((_local8) || (_local9))) || (_local6))) || (!((overlay == null))))) || ((_local7.left > 0)))) || ((_local7.top > 0)));
			if (_local4 < _local2){
				_local10 = true;
				if ((((((horizontalScrollPolicy == ScrollPolicy.AUTO)) && ((((unscaledHeight - _local7.top) - _local7.bottom) >= 18)))) && ((((unscaledWidth - _local7.left) - _local7.right) >= 32)))){
					_local8 = true;
				};
			};
			if (_local5 < _local3){
				_local10 = true;
				if ((((((verticalScrollPolicy == ScrollPolicy.AUTO)) && ((((unscaledWidth - _local7.left) - _local7.right) >= 18)))) && ((((unscaledHeight - _local7.top) - _local7.bottom) >= 32)))){
					_local9 = true;
				};
			};
			if (((((((((((((((_local8) && (_local9))) && ((horizontalScrollPolicy == ScrollPolicy.AUTO)))) && ((verticalScrollPolicy == ScrollPolicy.AUTO)))) && (horizontalScrollBar))) && (verticalScrollBar))) && (((_local4 + verticalScrollBar.minWidth) >= _local2)))) && (((_local5 + horizontalScrollBar.minHeight) >= _local3)))){
				_local9 = false;
				_local8 = _local9;
			} else {
				if (((((((((_local8) && (!(_local9)))) && (verticalScrollBar))) && ((horizontalScrollPolicy == ScrollPolicy.AUTO)))) && (((_local4 + verticalScrollBar.minWidth) >= _local2)))){
					_local8 = false;
				};
			};
			var _local11:Boolean = createOrDestroyScrollbars(_local8, _local9, _local10);
			if (((((!((scrollableWidth == _local2))) || (!((viewableWidth == _local4))))) || (_local11))){
				if (horizontalScrollBar){
					horizontalScrollBar.setScrollProperties(_local4, 0, (_local2 - _local4), horizontalPageScrollSize);
					scrollPositionChanged = true;
				};
				viewableWidth = _local4;
				scrollableWidth = _local2;
			};
			if (((((!((scrollableHeight == _local3))) || (!((viewableHeight == _local5))))) || (_local11))){
				if (verticalScrollBar){
					verticalScrollBar.setScrollProperties(_local5, 0, (_local3 - _local5), verticalPageScrollSize);
					scrollPositionChanged = true;
				};
				viewableHeight = _local5;
				scrollableHeight = _local3;
			};
			return (_local11);
		}
		override mx_internal function removingChild(_arg1:DisplayObject):void{
			super.removingChild(_arg1);
			_arg1.dispatchEvent(new FlexEvent(FlexEvent.REMOVE));
			var _local2:ChildExistenceChangedEvent = new ChildExistenceChangedEvent(ChildExistenceChangedEvent.CHILD_REMOVE);
			_local2.relatedObject = _arg1;
			dispatchEvent(_local2);
		}
		mx_internal function get numChildrenCreated():int{
			return (_numChildrenCreated);
		}
		private function hasChildMatchingDescriptor(_arg1:UIComponentDescriptor):Boolean{
			var _local4:int;
			var _local5:IUIComponent;
			var _local2:String = _arg1.id;
			if (((((!((_local2 == null))) && ((_local2 in document)))) && ((document[_local2] == null)))){
				return (false);
			};
			var _local3:int = numChildren;
			_local4 = 0;
			while (_local4 < _local3) {
				_local5 = IUIComponent(getChildAt(_local4));
				if ((((_local5 is IDeferredInstantiationUIComponent)) && ((IDeferredInstantiationUIComponent(_local5).descriptor == _arg1)))){
					return (true);
				};
				_local4++;
			};
			if (childRepeaters){
				_local3 = childRepeaters.length;
				_local4 = 0;
				while (_local4 < _local3) {
					if (IDeferredInstantiationUIComponent(childRepeaters[_local4]).descriptor == _arg1){
						return (true);
					};
					_local4++;
				};
			};
			return (false);
		}
		mx_internal function rawChildren_getChildByName(_arg1:String):DisplayObject{
			return (super.getChildByName(_arg1));
		}
		override public function validateDisplayList():void{
			var _local1:EdgeMetrics;
			var _local2:Number;
			var _local3:Number;
			var _local4:Object;
			var _local5:Number;
			var _local6:Number;
			var _local7:Number;
			if (((_autoLayout) || (forceLayout))){
				doingLayout = true;
				super.validateDisplayList();
				doingLayout = false;
			} else {
				layoutChrome(unscaledWidth, unscaledHeight);
			};
			invalidateDisplayListFlag = true;
			if (createContentPaneAndScrollbarsIfNeeded()){
				if (((_autoLayout) || (forceLayout))){
					doingLayout = true;
					super.validateDisplayList();
					doingLayout = false;
				};
				createContentPaneAndScrollbarsIfNeeded();
			};
			if (clampScrollPositions()){
				scrollChildren();
			};
			if (contentPane){
				_local1 = viewMetrics;
				if (overlay){
					overlay.x = 0;
					overlay.y = 0;
					overlay.width = unscaledWidth;
					overlay.height = unscaledHeight;
				};
				if (((horizontalScrollBar) || (verticalScrollBar))){
					if (((verticalScrollBar) && ((verticalScrollPolicy == ScrollPolicy.ON)))){
						_local1.right = (_local1.right - verticalScrollBar.minWidth);
					};
					if (((horizontalScrollBar) && ((horizontalScrollPolicy == ScrollPolicy.ON)))){
						_local1.bottom = (_local1.bottom - horizontalScrollBar.minHeight);
					};
					if (horizontalScrollBar){
						_local2 = ((unscaledWidth - _local1.left) - _local1.right);
						if (verticalScrollBar){
							_local2 = (_local2 - verticalScrollBar.minWidth);
						};
						horizontalScrollBar.setActualSize(_local2, horizontalScrollBar.minHeight);
						horizontalScrollBar.move(_local1.left, ((unscaledHeight - _local1.bottom) - horizontalScrollBar.minHeight));
					};
					if (verticalScrollBar){
						_local3 = ((unscaledHeight - _local1.top) - _local1.bottom);
						if (horizontalScrollBar){
							_local3 = (_local3 - horizontalScrollBar.minHeight);
						};
						verticalScrollBar.setActualSize(verticalScrollBar.minWidth, _local3);
						verticalScrollBar.move(((unscaledWidth - _local1.right) - verticalScrollBar.minWidth), _local1.top);
					};
					if (whiteBox){
						whiteBox.x = verticalScrollBar.x;
						whiteBox.y = horizontalScrollBar.y;
					};
				};
				contentPane.x = _local1.left;
				contentPane.y = _local1.top;
				if (focusPane){
					focusPane.x = _local1.left;
					focusPane.y = _local1.top;
				};
				scrollChildren();
			};
			invalidateDisplayListFlag = false;
			if (blocker){
				_local1 = viewMetrics;
				_local4 = (enabled) ? null : getStyle("backgroundDisabledColor");
				if ((((_local4 === null)) || (isNaN(Number(_local4))))){
					_local4 = getStyle("backgroundColor");
				};
				if ((((_local4 === null)) || (isNaN(Number(_local4))))){
					_local4 = 0xFFFFFF;
				};
				_local5 = getStyle("disabledOverlayAlpha");
				if (isNaN(_local5)){
					_local5 = 0.6;
				};
				blocker.x = _local1.left;
				blocker.y = _local1.top;
				_local6 = (unscaledWidth - (_local1.left + _local1.right));
				_local7 = (unscaledHeight - (_local1.top + _local1.bottom));
				blocker.graphics.clear();
				blocker.graphics.beginFill(uint(_local4), _local5);
				blocker.graphics.drawRect(0, 0, _local6, _local7);
				blocker.graphics.endFill();
				rawChildren.setChildIndex(blocker, (rawChildren.numChildren - 1));
			};
		}
		public function set horizontalLineScrollSize(_arg1:Number):void{
			scrollPropertiesChanged = true;
			_horizontalLineScrollSize = _arg1;
			invalidateDisplayList();
			dispatchEvent(new Event("horizontalLineScrollSizeChanged"));
		}
		mx_internal function rawChildren_addChildAt(_arg1:DisplayObject, _arg2:int):DisplayObject{
			if ((((_firstChildIndex < _arg2)) && ((_arg2 < ((_firstChildIndex + _numChildren) + 1))))){
				_numChildren++;
			} else {
				if (_arg2 <= _firstChildIndex){
					_firstChildIndex++;
				};
			};
			super.addingChild(_arg1);
			$addChildAt(_arg1, _arg2);
			super.childAdded(_arg1);
			dispatchEvent(new Event("childrenChanged"));
			return (_arg1);
		}
		override public function initialize():void{
			var _local1:*;
			var _local2:String;
			if (((((isDocument) && (documentDescriptor))) && (!(processedDescriptors)))){
				_local1 = documentDescriptor.properties;
				if (((_local1) && (_local1.childDescriptors))){
					if (_childDescriptors){
						_local2 = resourceManager.getString("core", "multipleChildSets_ClassAndInstance");
						throw (new Error(_local2));
					};
					_childDescriptors = _local1.childDescriptors;
				};
			};
			super.initialize();
		}
		mx_internal function set forceClipping(_arg1:Boolean):void{
			if (_clipContent){
				if (_arg1){
					_forceClippingCount++;
				} else {
					_forceClippingCount--;
				};
				createContentPane();
				scrollChildren();
			};
		}
		public function removeAllChildren():void{
			while (numChildren > 0) {
				removeChildAt(0);
			};
		}
		override public function contentToGlobal(_arg1:Point):Point{
			if (contentPane){
				return (contentPane.localToGlobal(_arg1));
			};
			return (localToGlobal(_arg1));
		}
		public function get horizontalPageScrollSize():Number{
			return (_horizontalPageScrollSize);
		}
		override mx_internal function childRemoved(_arg1:DisplayObject):void{
			super.childRemoved(_arg1);
			invalidateSize();
			invalidateDisplayList();
			if (!contentPane){
				_numChildren--;
				if (_numChildren == 0){
					_firstChildIndex = super.numChildren;
				};
			};
			if (((contentPane) && (!(autoLayout)))){
				forceLayout = true;
				UIComponentGlobals.layoutManager.addEventListener(FlexEvent.UPDATE_COMPLETE, layoutCompleteHandler, false, 0, true);
			};
			dispatchEvent(new Event("childrenChanged"));
		}
		public function set defaultButton(_arg1:IFlexDisplayObject):void{
			_defaultButton = _arg1;
			ContainerGlobals.focusedContainer = null;
		}
		public function get data():Object{
			return (_data);
		}
		override public function get numChildren():int{
			return ((contentPane) ? contentPane.numChildren : _numChildren);
		}
		public function get autoLayout():Boolean{
			return (_autoLayout);
		}
		override public function styleChanged(_arg1:String):void{
			var _local3:String;
			var _local4:String;
			var _local2:Boolean = (((_arg1 == null)) || ((_arg1 == "styleName")));
			if (((_local2) || (StyleManager.isSizeInvalidatingStyle(_arg1)))){
				invalidateDisplayList();
			};
			if (((_local2) || ((_arg1 == "borderSkin")))){
				if (border){
					rawChildren.removeChild(DisplayObject(border));
					border = null;
					createBorder();
				};
			};
			if (((((((((((_local2) || ((_arg1 == "borderStyle")))) || ((_arg1 == "backgroundColor")))) || ((_arg1 == "backgroundImage")))) || ((_arg1 == "mouseShield")))) || ((_arg1 == "mouseShieldChildren")))){
				createBorder();
			};
			super.styleChanged(_arg1);
			if (((_local2) || (StyleManager.isSizeInvalidatingStyle(_arg1)))){
				invalidateViewMetricsAndPadding();
			};
			if (((_local2) || ((_arg1 == "horizontalScrollBarStyleName")))){
				if (((horizontalScrollBar) && ((horizontalScrollBar is ISimpleStyleClient)))){
					_local3 = getStyle("horizontalScrollBarStyleName");
					ISimpleStyleClient(horizontalScrollBar).styleName = _local3;
				};
			};
			if (((_local2) || ((_arg1 == "verticalScrollBarStyleName")))){
				if (((verticalScrollBar) && ((verticalScrollBar is ISimpleStyleClient)))){
					_local4 = getStyle("verticalScrollBarStyleName");
					ISimpleStyleClient(verticalScrollBar).styleName = _local4;
				};
			};
		}
		override protected function commitProperties():void{
			var _local1:String;
			super.commitProperties();
			if (changedStyles){
				_local1 = ((changedStyles == MULTIPLE_PROPERTIES)) ? null : changedStyles;
				super.notifyStyleChangeInChildren(_local1, true);
				changedStyles = null;
			};
			createOrDestroyBlocker();
		}
		override public function finishPrint(_arg1:Object, _arg2:IFlexDisplayObject):void{
			if (_arg1){
				contentPane.scrollRect = Rectangle(_arg1);
			};
			super.finishPrint(_arg1, _arg2);
		}
		public function get maxHorizontalScrollPosition():Number{
			return ((horizontalScrollBar) ? horizontalScrollBar.maxScrollPosition : Math.max((scrollableWidth - viewableWidth), 0));
		}
		public function set creationPolicy(_arg1:String):void{
			_creationPolicy = _arg1;
			setActualCreationPolicies(_arg1);
		}
		public function set label(_arg1:String):void{
			_label = _arg1;
			dispatchEvent(new Event("labelChanged"));
		}
		private function clampScrollPositions():Boolean{
			var _local1:Boolean;
			if (_horizontalScrollPosition < 0){
				_horizontalScrollPosition = 0;
				_local1 = true;
			} else {
				if (_horizontalScrollPosition > maxHorizontalScrollPosition){
					_horizontalScrollPosition = maxHorizontalScrollPosition;
					_local1 = true;
				};
			};
			if (((horizontalScrollBar) && (!((horizontalScrollBar.scrollPosition == _horizontalScrollPosition))))){
				horizontalScrollBar.scrollPosition = _horizontalScrollPosition;
			};
			if (_verticalScrollPosition < 0){
				_verticalScrollPosition = 0;
				_local1 = true;
			} else {
				if (_verticalScrollPosition > maxVerticalScrollPosition){
					_verticalScrollPosition = maxVerticalScrollPosition;
					_local1 = true;
				};
			};
			if (((verticalScrollBar) && (!((verticalScrollBar.scrollPosition == _verticalScrollPosition))))){
				verticalScrollBar.scrollPosition = _verticalScrollPosition;
			};
			return (_local1);
		}
		override public function prepareToPrint(_arg1:IFlexDisplayObject):Object{
			var _local2:Rectangle = (((contentPane) && (contentPane.scrollRect))) ? contentPane.scrollRect : null;
			if (_local2){
				contentPane.scrollRect = null;
			};
			super.prepareToPrint(_arg1);
			return (_local2);
		}
		mx_internal function get firstChildIndex():int{
			return (_firstChildIndex);
		}
		mx_internal function rawChildren_addChild(_arg1:DisplayObject):DisplayObject{
			if (_numChildren == 0){
				_firstChildIndex++;
			};
			super.addingChild(_arg1);
			$addChild(_arg1);
			super.childAdded(_arg1);
			dispatchEvent(new Event("childrenChanged"));
			return (_arg1);
		}
		override protected function updateDisplayList(_arg1:Number, _arg2:Number):void{
			var _local3:Object;
			var _local4:Number;
			super.updateDisplayList(_arg1, _arg2);
			layoutChrome(_arg1, _arg2);
			if (scrollPositionChanged){
				clampScrollPositions();
				scrollChildren();
				scrollPositionChanged = false;
			};
			if (scrollPropertiesChanged){
				if (horizontalScrollBar){
					horizontalScrollBar.lineScrollSize = horizontalLineScrollSize;
					horizontalScrollBar.pageScrollSize = horizontalPageScrollSize;
				};
				if (verticalScrollBar){
					verticalScrollBar.lineScrollSize = verticalLineScrollSize;
					verticalScrollBar.pageScrollSize = verticalPageScrollSize;
				};
				scrollPropertiesChanged = false;
			};
			if (((contentPane) && (contentPane.scrollRect))){
				_local3 = (enabled) ? null : getStyle("backgroundDisabledColor");
				if ((((_local3 === null)) || (isNaN(Number(_local3))))){
					_local3 = getStyle("backgroundColor");
				};
				_local4 = getStyle("backgroundAlpha");
				if (((((((!(_clipContent)) || (isNaN(Number(_local3))))) || ((_local3 === "")))) || (((!(((horizontalScrollBar) || (verticalScrollBar)))) && (!(cacheAsBitmap)))))){
					_local3 = null;
				} else {
					if (((getStyle("backgroundImage")) || (getStyle("background")))){
						_local3 = null;
					} else {
						if (_local4 != 1){
							_local3 = null;
						};
					};
				};
				contentPane.opaqueBackground = _local3;
				contentPane.cacheAsBitmap = !((_local3 == null));
			};
		}
		override mx_internal function addingChild(_arg1:DisplayObject):void{
			var _local2:IUIComponent = IUIComponent(_arg1);
			super.addingChild(_arg1);
			invalidateSize();
			invalidateDisplayList();
			if (!contentPane){
				if (_numChildren == 0){
					_firstChildIndex = super.numChildren;
				};
				_numChildren++;
			};
			if (((contentPane) && (!(autoLayout)))){
				forceLayout = true;
				UIComponentGlobals.layoutManager.addEventListener(FlexEvent.UPDATE_COMPLETE, layoutCompleteHandler, false, 0, true);
			};
		}
		mx_internal function setActualCreationPolicies(_arg1:String):void{
			var _local5:IFlexDisplayObject;
			var _local6:Container;
			actualCreationPolicy = _arg1;
			var _local2:String = _arg1;
			if (_arg1 == ContainerCreationPolicy.QUEUED){
				_local2 = ContainerCreationPolicy.AUTO;
			};
			var _local3:int = numChildren;
			var _local4:int;
			while (_local4 < _local3) {
				_local5 = IFlexDisplayObject(getChildAt(_local4));
				if ((_local5 is Container)){
					_local6 = Container(_local5);
					if (_local6.creationPolicy == null){
						_local6.setActualCreationPolicies(_local2);
					};
				};
				_local4++;
			};
		}

	}
}//package mx.core 

****************

//ContainerCreationPolicy (mx.core.ContainerCreationPolicy)
package mx.core {

	public final class ContainerCreationPolicy {

		public static const ALL:String = "all";
		public static const QUEUED:String = "queued";
		public static const NONE:String = "none";
		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const AUTO:String = "auto";

	}
}//package mx.core 

****************

//ContainerGlobals (mx.core.ContainerGlobals)
package mx.core {
	import flash.display.*;
	import mx.managers.*;

	public class ContainerGlobals {

		public static var focusedContainer:InteractiveObject;

		public static function checkFocus(_arg1:InteractiveObject, _arg2:InteractiveObject):void{
			var _local6:IFocusManager;
			var _local7:IButton;
			var _local3:InteractiveObject = _arg2;
			var _local4:InteractiveObject = _arg2;
			var _local5:IUIComponent;
			if (((!((_arg2 == null))) && ((_arg1 == _arg2)))){
				return;
			};
			while (_local4) {
				if (_local4.parent){
					_local3 = _local4.parent;
				} else {
					_local3 = null;
				};
				if ((_local4 is IUIComponent)){
					_local5 = IUIComponent(_local4);
				};
				_local4 = _local3;
				if (((((_local4) && ((_local4 is IContainer)))) && (IContainer(_local4).defaultButton))){
					break;
				};
			};
			if (((!((ContainerGlobals.focusedContainer == _local4))) || ((((ContainerGlobals.focusedContainer == null)) && ((_local4 == null)))))){
				if (!_local4){
					_local4 = InteractiveObject(_local5);
				};
				if (((_local4) && ((_local4 is IContainer)))){
					_local6 = IContainer(_local4).focusManager;
					if (!_local6){
						return;
					};
					_local7 = (IContainer(_local4).defaultButton as IButton);
					if (_local7){
						ContainerGlobals.focusedContainer = InteractiveObject(_local4);
						_local6.defaultButton = (_local7 as IButton);
					} else {
						ContainerGlobals.focusedContainer = InteractiveObject(_local4);
						_local6.defaultButton = null;
					};
				};
			};
		}

	}
}//package mx.core 

****************

//ContainerLayout (mx.core.ContainerLayout)
package mx.core {

	public final class ContainerLayout {

		public static const HORIZONTAL:String = "horizontal";
		public static const VERTICAL:String = "vertical";
		public static const ABSOLUTE:String = "absolute";
		mx_internal static const VERSION:String = "3.5.0.12683";

	}
}//package mx.core 

****************

//ContainerRawChildrenList (mx.core.ContainerRawChildrenList)
package mx.core {
	import flash.display.*;
	import flash.geom.*;

	public class ContainerRawChildrenList implements IChildList {

		private var owner:Container;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function ContainerRawChildrenList(_arg1:Container){
			this.owner = _arg1;
		}
		public function addChild(_arg1:DisplayObject):DisplayObject{
			return (owner.rawChildren_addChild(_arg1));
		}
		public function getChildIndex(_arg1:DisplayObject):int{
			return (owner.rawChildren_getChildIndex(_arg1));
		}
		public function setChildIndex(_arg1:DisplayObject, _arg2:int):void{
			owner.rawChildren_setChildIndex(_arg1, _arg2);
		}
		public function getChildByName(_arg1:String):DisplayObject{
			return (owner.rawChildren_getChildByName(_arg1));
		}
		public function removeChildAt(_arg1:int):DisplayObject{
			return (owner.rawChildren_removeChildAt(_arg1));
		}
		public function get numChildren():int{
			return (owner.$numChildren);
		}
		public function addChildAt(_arg1:DisplayObject, _arg2:int):DisplayObject{
			return (owner.rawChildren_addChildAt(_arg1, _arg2));
		}
		public function getObjectsUnderPoint(_arg1:Point):Array{
			return (owner.rawChildren_getObjectsUnderPoint(_arg1));
		}
		public function contains(_arg1:DisplayObject):Boolean{
			return (owner.rawChildren_contains(_arg1));
		}
		public function removeChild(_arg1:DisplayObject):DisplayObject{
			return (owner.rawChildren_removeChild(_arg1));
		}
		public function getChildAt(_arg1:int):DisplayObject{
			return (owner.rawChildren_getChildAt(_arg1));
		}

	}
}//package mx.core 

****************

//DragSource (mx.core.DragSource)
package mx.core {

	public class DragSource {

		private var formatHandlers:Object;
		private var dataHolder:Object;
		private var _formats:Array;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function DragSource(){
			dataHolder = {};
			formatHandlers = {};
			_formats = [];
			super();
		}
		public function hasFormat(_arg1:String):Boolean{
			var _local2:int = _formats.length;
			var _local3:int;
			while (_local3 < _local2) {
				if (_formats[_local3] == _arg1){
					return (true);
				};
				_local3++;
			};
			return (false);
		}
		public function addData(_arg1:Object, _arg2:String):void{
			_formats.push(_arg2);
			dataHolder[_arg2] = _arg1;
		}
		public function dataForFormat(_arg1:String):Object{
			var _local2:Object = dataHolder[_arg1];
			if (_local2){
				return (_local2);
			};
			if (formatHandlers[_arg1]){
				return (formatHandlers[_arg1]());
			};
			return (null);
		}
		public function addHandler(_arg1:Function, _arg2:String):void{
			_formats.push(_arg2);
			formatHandlers[_arg2] = _arg1;
		}
		public function get formats():Array{
			return (_formats);
		}

	}
}//package mx.core 

****************

//EdgeMetrics (mx.core.EdgeMetrics)
package mx.core {

	public class EdgeMetrics {

		public var top:Number;
		public var left:Number;
		public var bottom:Number;
		public var right:Number;

		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const EMPTY:EdgeMetrics = new EdgeMetrics(0, 0, 0, 0);
;

		public function EdgeMetrics(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0){
			this.left = _arg1;
			this.top = _arg2;
			this.right = _arg3;
			this.bottom = _arg4;
		}
		public function clone():EdgeMetrics{
			return (new EdgeMetrics(left, top, right, bottom));
		}

	}
}//package mx.core 

****************

//EmbeddedFont (mx.core.EmbeddedFont)
package mx.core {

	public class EmbeddedFont {

		private var _fontName:String;
		private var _fontStyle:String;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function EmbeddedFont(_arg1:String, _arg2:Boolean, _arg3:Boolean){
			_fontName = _arg1;
			_fontStyle = EmbeddedFontRegistry.getFontStyle(_arg2, _arg3);
		}
		public function get fontStyle():String{
			return (_fontStyle);
		}
		public function get fontName():String{
			return (_fontName);
		}

	}
}//package mx.core 

****************

//EmbeddedFontRegistry (mx.core.EmbeddedFontRegistry)
package mx.core {
	import flash.utils.*;
	import flash.text.*;

	public class EmbeddedFontRegistry implements IEmbeddedFontRegistry {

		mx_internal static const VERSION:String = "3.5.0.12683";

		private static var fonts:Object = {};
		private static var instance:IEmbeddedFontRegistry;

		public function getAssociatedModuleFactory(_arg1:EmbeddedFont, _arg2:IFlexModuleFactory):IFlexModuleFactory{
			var _local4:int;
			var _local5:Object;
			var _local3:Dictionary = fonts[createFontKey(_arg1)];
			if (_local3){
				_local4 = _local3[_arg2];
				if (_local4){
					return (_arg2);
				};
				for (_local5 in _local3) {
					return ((_local5 as IFlexModuleFactory));
				};
			};
			return (null);
		}
		public function deregisterFont(_arg1:EmbeddedFont, _arg2:IFlexModuleFactory):void{
			var _local5:int;
			var _local6:Object;
			var _local3:String = createFontKey(_arg1);
			var _local4:Dictionary = fonts[_local3];
			if (_local4 != null){
				delete _local4[_arg2];
				_local5 = 0;
				for (_local6 in _local4) {
					_local5++;
				};
				if (_local5 == 0){
					delete fonts[_local3];
				};
			};
		}
		public function getFonts():Array{
			var _local2:String;
			var _local1:Array = [];
			for (_local2 in fonts) {
				_local1.push(createEmbeddedFont(_local2));
			};
			return (_local1);
		}
		public function registerFont(_arg1:EmbeddedFont, _arg2:IFlexModuleFactory):void{
			var _local3:String = createFontKey(_arg1);
			var _local4:Dictionary = fonts[_local3];
			if (!_local4){
				_local4 = new Dictionary(true);
				fonts[_local3] = _local4;
			};
			_local4[_arg2] = 1;
		}

		public static function registerFonts(_arg1:Object, _arg2:IFlexModuleFactory):void{
			var _local4:Object;
			var _local5:Object;
			var _local6:String;
			var _local7:Boolean;
			var _local8:Boolean;
			var _local3:IEmbeddedFontRegistry = IEmbeddedFontRegistry(Singleton.getInstance("mx.core::IEmbeddedFontRegistry"));
			for (_local4 in _arg1) {
				_local5 = _arg1[_local4];
				for (_local6 in _local5) {
					if (_local5[_local6] == false){
					} else {
						if (_local6 == "regular"){
							_local7 = false;
							_local8 = false;
						} else {
							if (_local6 == "boldItalic"){
								_local7 = true;
								_local8 = true;
							} else {
								if (_local6 == "bold"){
									_local7 = true;
									_local8 = false;
								} else {
									if (_local6 == "italic"){
										_local7 = false;
										_local8 = true;
									};
								};
							};
						};
						_local3.registerFont(new EmbeddedFont(String(_local4), _local7, _local8), _arg2);
					};
				};
			};
		}
		public static function getInstance():IEmbeddedFontRegistry{
			if (!instance){
				instance = new (EmbeddedFontRegistry);
			};
			return (instance);
		}
		public static function getFontStyle(_arg1:Boolean, _arg2:Boolean):String{
			var _local3:String = FontStyle.REGULAR;
			if (((_arg1) && (_arg2))){
				_local3 = FontStyle.BOLD_ITALIC;
			} else {
				if (_arg1){
					_local3 = FontStyle.BOLD;
				} else {
					if (_arg2){
						_local3 = FontStyle.ITALIC;
					};
				};
			};
			return (_local3);
		}
		private static function createFontKey(_arg1:EmbeddedFont):String{
			return ((_arg1.fontName + _arg1.fontStyle));
		}
		private static function createEmbeddedFont(_arg1:String):EmbeddedFont{
			var _local2:String;
			var _local3:Boolean;
			var _local4:Boolean;
			var _local5:int = endsWith(_arg1, FontStyle.REGULAR);
			if (_local5 > 0){
				_local2 = _arg1.substring(0, _local5);
				return (new EmbeddedFont(_local2, false, false));
			};
			_local5 = endsWith(_arg1, FontStyle.BOLD);
			if (_local5 > 0){
				_local2 = _arg1.substring(0, _local5);
				return (new EmbeddedFont(_local2, true, false));
			};
			_local5 = endsWith(_arg1, FontStyle.BOLD_ITALIC);
			if (_local5 > 0){
				_local2 = _arg1.substring(0, _local5);
				return (new EmbeddedFont(_local2, true, true));
			};
			_local5 = endsWith(_arg1, FontStyle.ITALIC);
			if (_local5 > 0){
				_local2 = _arg1.substring(0, _local5);
				return (new EmbeddedFont(_local2, false, true));
			};
			return (new EmbeddedFont("", false, false));
		}
		private static function endsWith(_arg1:String, _arg2:String):int{
			var _local3:int = _arg1.lastIndexOf(_arg2);
			if ((((_local3 > 0)) && (((_local3 + _arg2.length) == _arg1.length)))){
				return (_local3);
			};
			return (-1);
		}

	}
}//package mx.core 

****************

//EventPriority (mx.core.EventPriority)
package mx.core {

	public final class EventPriority {

		public static const DEFAULT:int = 0;
		public static const BINDING:int = 100;
		public static const DEFAULT_HANDLER:int = -50;
		public static const EFFECT:int = -100;
		public static const CURSOR_MANAGEMENT:int = 200;
		mx_internal static const VERSION:String = "3.5.0.12683";

	}
}//package mx.core 

****************

//FlexBitmap (mx.core.FlexBitmap)
package mx.core {
	import flash.display.*;
	import mx.utils.*;

	public class FlexBitmap extends Bitmap {

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function FlexBitmap(_arg1:BitmapData=null, _arg2:String="auto", _arg3:Boolean=false){
			var bitmapData = _arg1;
			var pixelSnapping = _arg2;
			var smoothing = _arg3;
			super(bitmapData, pixelSnapping, smoothing);
			try {
				name = NameUtil.createUniqueName(this);
			} catch(e:Error) {
			};
		}
		override public function toString():String{
			return (NameUtil.displayObjectToString(this));
		}

	}
}//package mx.core 

****************

//FlexLoader (mx.core.FlexLoader)
package mx.core {
	import flash.display.*;
	import mx.utils.*;

	public class FlexLoader extends Loader {

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function FlexLoader(){
			super();
			try {
				name = NameUtil.createUniqueName(this);
			} catch(e:Error) {
			};
		}
		override public function toString():String{
			return (NameUtil.displayObjectToString(this));
		}

	}
}//package mx.core 

****************

//FlexMovieClip (mx.core.FlexMovieClip)
package mx.core {
	import flash.display.*;
	import mx.utils.*;

	public class FlexMovieClip extends MovieClip {

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function FlexMovieClip(){
			super();
			try {
				name = NameUtil.createUniqueName(this);
			} catch(e:Error) {
			};
		}
		override public function toString():String{
			return (NameUtil.displayObjectToString(this));
		}

	}
}//package mx.core 

****************

//FlexShape (mx.core.FlexShape)
package mx.core {
	import flash.display.*;
	import mx.utils.*;

	public class FlexShape extends Shape {

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function FlexShape(){
			super();
			try {
				name = NameUtil.createUniqueName(this);
			} catch(e:Error) {
			};
		}
		override public function toString():String{
			return (NameUtil.displayObjectToString(this));
		}

	}
}//package mx.core 

****************

//FlexSprite (mx.core.FlexSprite)
package mx.core {
	import flash.display.*;
	import mx.utils.*;

	public class FlexSprite extends Sprite {

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function FlexSprite(){
			super();
			try {
				name = NameUtil.createUniqueName(this);
			} catch(e:Error) {
			};
		}
		override public function toString():String{
			return (NameUtil.displayObjectToString(this));
		}

	}
}//package mx.core 

****************

//FlexTextField (mx.core.FlexTextField)
package mx.core {
	import flash.text.*;
	import mx.utils.*;

	public class FlexTextField extends TextField {

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function FlexTextField(){
			super();
			try {
				name = NameUtil.createUniqueName(this);
			} catch(e:Error) {
			};
		}
		override public function toString():String{
			return (NameUtil.displayObjectToString(this));
		}

	}
}//package mx.core 

****************

//FlexVersion (mx.core.FlexVersion)
package mx.core {
	import mx.resources.*;

	public class FlexVersion {

		public static const VERSION_2_0_1:uint = 33554433;
		public static const CURRENT_VERSION:uint = 50331648;
		public static const VERSION_3_0:uint = 50331648;
		public static const VERSION_2_0:uint = 33554432;
		public static const VERSION_ALREADY_READ:String = "versionAlreadyRead";
		public static const VERSION_ALREADY_SET:String = "versionAlreadySet";
		mx_internal static const VERSION:String = "3.5.0.12683";

		private static var compatibilityVersionChanged:Boolean = false;
		private static var _compatibilityErrorFunction:Function;
		private static var _compatibilityVersion:uint = 50331648;
		private static var compatibilityVersionRead:Boolean = false;

		mx_internal static function changeCompatibilityVersionString(_arg1:String):void{
			var _local2:Array = _arg1.split(".");
			var _local3:uint = parseInt(_local2[0]);
			var _local4:uint = parseInt(_local2[1]);
			var _local5:uint = parseInt(_local2[2]);
			_compatibilityVersion = (((_local3 << 24) + (_local4 << 16)) + _local5);
		}
		public static function set compatibilityVersion(_arg1:uint):void{
			var _local2:String;
			if (_arg1 == _compatibilityVersion){
				return;
			};
			if (compatibilityVersionChanged){
				if (compatibilityErrorFunction == null){
					_local2 = ResourceManager.getInstance().getString("core", VERSION_ALREADY_SET);
					throw (new Error(_local2));
				};
				compatibilityErrorFunction(_arg1, VERSION_ALREADY_SET);
			};
			if (compatibilityVersionRead){
				if (compatibilityErrorFunction == null){
					_local2 = ResourceManager.getInstance().getString("core", VERSION_ALREADY_READ);
					throw (new Error(_local2));
				};
				compatibilityErrorFunction(_arg1, VERSION_ALREADY_READ);
			};
			_compatibilityVersion = _arg1;
			compatibilityVersionChanged = true;
		}
		public static function get compatibilityVersion():uint{
			compatibilityVersionRead = true;
			return (_compatibilityVersion);
		}
		public static function set compatibilityErrorFunction(_arg1:Function):void{
			_compatibilityErrorFunction = _arg1;
		}
		public static function set compatibilityVersionString(_arg1:String):void{
			var _local2:Array = _arg1.split(".");
			var _local3:uint = parseInt(_local2[0]);
			var _local4:uint = parseInt(_local2[1]);
			var _local5:uint = parseInt(_local2[2]);
			compatibilityVersion = (((_local3 << 24) + (_local4 << 16)) + _local5);
		}
		public static function get compatibilityErrorFunction():Function{
			return (_compatibilityErrorFunction);
		}
		public static function get compatibilityVersionString():String{
			var _local1:uint = ((compatibilityVersion >> 24) & 0xFF);
			var _local2:uint = ((compatibilityVersion >> 16) & 0xFF);
			var _local3:uint = (compatibilityVersion & 0xFFFF);
			return (((((_local1.toString() + ".") + _local2.toString()) + ".") + _local3.toString()));
		}

	}
}//package mx.core 

****************

//IBorder (mx.core.IBorder)
package mx.core {

	public interface IBorder {

		function get borderMetrics():EdgeMetrics;

	}
}//package mx.core 

****************

//IButton (mx.core.IButton)
package mx.core {

	public interface IButton extends IUIComponent {

		function get emphasized():Boolean;
		function set emphasized(_arg1:Boolean):void;
		function callLater(_arg1:Function, _arg2:Array=null):void;

	}
}//package mx.core 

****************

//IChildList (mx.core.IChildList)
package mx.core {
	import flash.display.*;
	import flash.geom.*;

	public interface IChildList {

		function get numChildren():int;
		function removeChild(_arg1:DisplayObject):DisplayObject;
		function getChildByName(_arg1:String):DisplayObject;
		function removeChildAt(_arg1:int):DisplayObject;
		function getChildIndex(_arg1:DisplayObject):int;
		function addChildAt(_arg1:DisplayObject, _arg2:int):DisplayObject;
		function getObjectsUnderPoint(_arg1:Point):Array;
		function setChildIndex(_arg1:DisplayObject, _arg2:int):void;
		function getChildAt(_arg1:int):DisplayObject;
		function addChild(_arg1:DisplayObject):DisplayObject;
		function contains(_arg1:DisplayObject):Boolean;

	}
}//package mx.core 

****************

//IConstraintClient (mx.core.IConstraintClient)
package mx.core {

	public interface IConstraintClient {

		function setConstraintValue(_arg1:String, _arg2):void;
		function getConstraintValue(_arg1:String);

	}
}//package mx.core 

****************

//IContainer (mx.core.IContainer)
package mx.core {
	import flash.display.*;
	import mx.managers.*;
	import flash.geom.*;
	import flash.text.*;
	import flash.media.*;

	public interface IContainer extends IUIComponent {

		function set hitArea(_arg1:Sprite):void;
		function swapChildrenAt(_arg1:int, _arg2:int):void;
		function getChildByName(_arg1:String):DisplayObject;
		function get doubleClickEnabled():Boolean;
		function get graphics():Graphics;
		function get useHandCursor():Boolean;
		function addChildAt(_arg1:DisplayObject, _arg2:int):DisplayObject;
		function set mouseChildren(_arg1:Boolean):void;
		function set creatingContentPane(_arg1:Boolean):void;
		function get textSnapshot():TextSnapshot;
		function getChildIndex(_arg1:DisplayObject):int;
		function set doubleClickEnabled(_arg1:Boolean):void;
		function getObjectsUnderPoint(_arg1:Point):Array;
		function get creatingContentPane():Boolean;
		function setChildIndex(_arg1:DisplayObject, _arg2:int):void;
		function get soundTransform():SoundTransform;
		function set useHandCursor(_arg1:Boolean):void;
		function get numChildren():int;
		function contains(_arg1:DisplayObject):Boolean;
		function get verticalScrollPosition():Number;
		function set defaultButton(_arg1:IFlexDisplayObject):void;
		function swapChildren(_arg1:DisplayObject, _arg2:DisplayObject):void;
		function set horizontalScrollPosition(_arg1:Number):void;
		function get focusManager():IFocusManager;
		function startDrag(_arg1:Boolean=false, _arg2:Rectangle=null):void;
		function set mouseEnabled(_arg1:Boolean):void;
		function getChildAt(_arg1:int):DisplayObject;
		function set soundTransform(_arg1:SoundTransform):void;
		function get tabChildren():Boolean;
		function get tabIndex():int;
		function set focusRect(_arg1:Object):void;
		function get hitArea():Sprite;
		function get mouseChildren():Boolean;
		function removeChildAt(_arg1:int):DisplayObject;
		function get defaultButton():IFlexDisplayObject;
		function stopDrag():void;
		function set tabEnabled(_arg1:Boolean):void;
		function get horizontalScrollPosition():Number;
		function get focusRect():Object;
		function get viewMetrics():EdgeMetrics;
		function set verticalScrollPosition(_arg1:Number):void;
		function get dropTarget():DisplayObject;
		function get mouseEnabled():Boolean;
		function set tabChildren(_arg1:Boolean):void;
		function set buttonMode(_arg1:Boolean):void;
		function get tabEnabled():Boolean;
		function get buttonMode():Boolean;
		function removeChild(_arg1:DisplayObject):DisplayObject;
		function set tabIndex(_arg1:int):void;
		function addChild(_arg1:DisplayObject):DisplayObject;
		function areInaccessibleObjectsUnderPoint(_arg1:Point):Boolean;

	}
}//package mx.core 

****************

//IDataRenderer (mx.core.IDataRenderer)
package mx.core {

	public interface IDataRenderer {

		function get data():Object;
		function set data(_arg1:Object):void;

	}
}//package mx.core 

****************

//IDeferredInstantiationUIComponent (mx.core.IDeferredInstantiationUIComponent)
package mx.core {

	public interface IDeferredInstantiationUIComponent extends IUIComponent {

		function set cacheHeuristic(_arg1:Boolean):void;
		function createReferenceOnParentDocument(_arg1:IFlexDisplayObject):void;
		function get cachePolicy():String;
		function set id(_arg1:String):void;
		function registerEffects(_arg1:Array):void;
		function executeBindings(_arg1:Boolean=false):void;
		function get id():String;
		function deleteReferenceOnParentDocument(_arg1:IFlexDisplayObject):void;
		function set descriptor(_arg1:UIComponentDescriptor):void;
		function get descriptor():UIComponentDescriptor;

	}
}//package mx.core 

****************

//IEmbeddedFontRegistry (mx.core.IEmbeddedFontRegistry)
package mx.core {

	public interface IEmbeddedFontRegistry {

		function getAssociatedModuleFactory(_arg1:EmbeddedFont, _arg2:IFlexModuleFactory):IFlexModuleFactory;
		function registerFont(_arg1:EmbeddedFont, _arg2:IFlexModuleFactory):void;
		function deregisterFont(_arg1:EmbeddedFont, _arg2:IFlexModuleFactory):void;
		function getFonts():Array;

	}
}//package mx.core 

****************

//IFlexAsset (mx.core.IFlexAsset)
package mx.core {

	public interface IFlexAsset {

	}
}//package mx.core 

****************

//IFlexDisplayObject (mx.core.IFlexDisplayObject)
package mx.core {
	import flash.display.*;
	import flash.geom.*;
	import flash.events.*;
	import flash.accessibility.*;

	public interface IFlexDisplayObject extends IBitmapDrawable, IEventDispatcher {

		function get visible():Boolean;
		function get rotation():Number;
		function localToGlobal(_arg1:Point):Point;
		function get name():String;
		function set width(_arg1:Number):void;
		function get measuredHeight():Number;
		function get blendMode():String;
		function get scale9Grid():Rectangle;
		function set name(_arg1:String):void;
		function set scaleX(_arg1:Number):void;
		function set scaleY(_arg1:Number):void;
		function get measuredWidth():Number;
		function get accessibilityProperties():AccessibilityProperties;
		function set scrollRect(_arg1:Rectangle):void;
		function get cacheAsBitmap():Boolean;
		function globalToLocal(_arg1:Point):Point;
		function get height():Number;
		function set blendMode(_arg1:String):void;
		function get parent():DisplayObjectContainer;
		function getBounds(_arg1:DisplayObject):Rectangle;
		function get opaqueBackground():Object;
		function set scale9Grid(_arg1:Rectangle):void;
		function setActualSize(_arg1:Number, _arg2:Number):void;
		function set alpha(_arg1:Number):void;
		function set accessibilityProperties(_arg1:AccessibilityProperties):void;
		function get width():Number;
		function hitTestPoint(_arg1:Number, _arg2:Number, _arg3:Boolean=false):Boolean;
		function set cacheAsBitmap(_arg1:Boolean):void;
		function get scaleX():Number;
		function get scaleY():Number;
		function get scrollRect():Rectangle;
		function get mouseX():Number;
		function get mouseY():Number;
		function set height(_arg1:Number):void;
		function set mask(_arg1:DisplayObject):void;
		function getRect(_arg1:DisplayObject):Rectangle;
		function get alpha():Number;
		function set transform(_arg1:Transform):void;
		function move(_arg1:Number, _arg2:Number):void;
		function get loaderInfo():LoaderInfo;
		function get root():DisplayObject;
		function hitTestObject(_arg1:DisplayObject):Boolean;
		function set opaqueBackground(_arg1:Object):void;
		function set visible(_arg1:Boolean):void;
		function get mask():DisplayObject;
		function set x(_arg1:Number):void;
		function set y(_arg1:Number):void;
		function get transform():Transform;
		function set filters(_arg1:Array):void;
		function get x():Number;
		function get y():Number;
		function get filters():Array;
		function set rotation(_arg1:Number):void;
		function get stage():Stage;

	}
}//package mx.core 

****************

//IFlexModule (mx.core.IFlexModule)
package mx.core {

	public interface IFlexModule {

		function set moduleFactory(_arg1:IFlexModuleFactory):void;
		function get moduleFactory():IFlexModuleFactory;

	}
}//package mx.core 

****************

//IFlexModuleFactory (mx.core.IFlexModuleFactory)
package mx.core {
	import flash.utils.*;

	public interface IFlexModuleFactory {

		function get preloadedRSLs():Dictionary;
		function allowInsecureDomain(... _args):void;
		function create(... _args):Object;
		function allowDomain(... _args):void;
		function info():Object;

	}
}//package mx.core 

****************

//IFontContextComponent (mx.core.IFontContextComponent)
package mx.core {

	public interface IFontContextComponent {

		function get fontContext():IFlexModuleFactory;
		function set fontContext(_arg1:IFlexModuleFactory):void;

	}
}//package mx.core 

****************

//IIMESupport (mx.core.IIMESupport)
package mx.core {

	public interface IIMESupport {

		function set imeMode(_arg1:String):void;
		function get imeMode():String;

	}
}//package mx.core 

****************

//IInvalidating (mx.core.IInvalidating)
package mx.core {

	public interface IInvalidating {

		function validateNow():void;
		function invalidateSize():void;
		function invalidateDisplayList():void;
		function invalidateProperties():void;

	}
}//package mx.core 

****************

//IMXMLObject (mx.core.IMXMLObject)
package mx.core {

	public interface IMXMLObject {

		function initialized(_arg1:Object, _arg2:String):void;

	}
}//package mx.core 

****************

//IProgrammaticSkin (mx.core.IProgrammaticSkin)
package mx.core {

	public interface IProgrammaticSkin {

		function validateNow():void;
		function validateDisplayList():void;

	}
}//package mx.core 

****************

//IPropertyChangeNotifier (mx.core.IPropertyChangeNotifier)
package mx.core {
	import flash.events.*;

	public interface IPropertyChangeNotifier extends IEventDispatcher, IUID {

	}
}//package mx.core 

****************

//IRawChildrenContainer (mx.core.IRawChildrenContainer)
package mx.core {

	public interface IRawChildrenContainer {

		function get rawChildren():IChildList;

	}
}//package mx.core 

****************

//IRectangularBorder (mx.core.IRectangularBorder)
package mx.core {
	import flash.geom.*;

	public interface IRectangularBorder extends IBorder {

		function get backgroundImageBounds():Rectangle;
		function get hasBackgroundImage():Boolean;
		function set backgroundImageBounds(_arg1:Rectangle):void;
		function layoutBackgroundImage():void;

	}
}//package mx.core 

****************

//IRepeater (mx.core.IRepeater)
package mx.core {

	public interface IRepeater {

		function get container():IContainer;
		function set startingIndex(_arg1:int):void;
		function get startingIndex():int;
		function set recycleChildren(_arg1:Boolean):void;
		function get currentItem():Object;
		function get count():int;
		function get recycleChildren():Boolean;
		function executeChildBindings():void;
		function set dataProvider(_arg1:Object):void;
		function initializeRepeater(_arg1:IContainer, _arg2:Boolean):void;
		function get currentIndex():int;
		function get dataProvider():Object;
		function set count(_arg1:int):void;

	}
}//package mx.core 

****************

//IRepeaterClient (mx.core.IRepeaterClient)
package mx.core {

	public interface IRepeaterClient {

		function get instanceIndices():Array;
		function set instanceIndices(_arg1:Array):void;
		function get isDocument():Boolean;
		function set repeaters(_arg1:Array):void;
		function initializeRepeaterArrays(_arg1:IRepeaterClient):void;
		function get repeaters():Array;
		function set repeaterIndices(_arg1:Array):void;
		function get repeaterIndices():Array;

	}
}//package mx.core 

****************

//IStateClient (mx.core.IStateClient)
package mx.core {

	public interface IStateClient {

		function get currentState():String;
		function set currentState(_arg1:String):void;

	}
}//package mx.core 

****************

//ISWFBridgeGroup (mx.core.ISWFBridgeGroup)
package mx.core {
	import flash.events.*;

	public interface ISWFBridgeGroup {

		function getChildBridgeProvider(_arg1:IEventDispatcher):ISWFBridgeProvider;
		function removeChildBridge(_arg1:IEventDispatcher):void;
		function get parentBridge():IEventDispatcher;
		function addChildBridge(_arg1:IEventDispatcher, _arg2:ISWFBridgeProvider):void;
		function set parentBridge(_arg1:IEventDispatcher):void;
		function containsBridge(_arg1:IEventDispatcher):Boolean;
		function getChildBridges():Array;

	}
}//package mx.core 

****************

//ISWFBridgeProvider (mx.core.ISWFBridgeProvider)
package mx.core {
	import flash.events.*;

	public interface ISWFBridgeProvider {

		function get childAllowsParent():Boolean;
		function get swfBridge():IEventDispatcher;
		function get parentAllowsChild():Boolean;

	}
}//package mx.core 

****************

//ISWFLoader (mx.core.ISWFLoader)
package mx.core {
	import flash.geom.*;

	public interface ISWFLoader extends ISWFBridgeProvider {

		function getVisibleApplicationRect(_arg1:Boolean=false):Rectangle;
		function set loadForCompatibility(_arg1:Boolean):void;
		function get loadForCompatibility():Boolean;

	}
}//package mx.core 

****************

//ITextFieldFactory (mx.core.ITextFieldFactory)
package mx.core {
	import flash.text.*;

	public interface ITextFieldFactory {

		function createTextField(_arg1:IFlexModuleFactory):TextField;

	}
}//package mx.core 

****************

//IToggleButton (mx.core.IToggleButton)
package mx.core {

	public interface IToggleButton {

	}
}//package mx.core 

****************

//IToolTip (mx.core.IToolTip)
package mx.core {
	import flash.geom.*;

	public interface IToolTip extends IUIComponent {

		function set text(_arg1:String):void;
		function get screen():Rectangle;
		function get text():String;

	}
}//package mx.core 

****************

//IUIComponent (mx.core.IUIComponent)
package mx.core {
	import flash.display.*;
	import mx.managers.*;

	public interface IUIComponent extends IFlexDisplayObject {

		function set focusPane(_arg1:Sprite):void;
		function get enabled():Boolean;
		function set enabled(_arg1:Boolean):void;
		function set isPopUp(_arg1:Boolean):void;
		function get explicitMinHeight():Number;
		function get percentWidth():Number;
		function get isPopUp():Boolean;
		function get owner():DisplayObjectContainer;
		function get percentHeight():Number;
		function get baselinePosition():Number;
		function owns(_arg1:DisplayObject):Boolean;
		function initialize():void;
		function get maxWidth():Number;
		function get minWidth():Number;
		function getExplicitOrMeasuredWidth():Number;
		function get explicitMaxWidth():Number;
		function get explicitMaxHeight():Number;
		function set percentHeight(_arg1:Number):void;
		function get minHeight():Number;
		function set percentWidth(_arg1:Number):void;
		function get document():Object;
		function get focusPane():Sprite;
		function getExplicitOrMeasuredHeight():Number;
		function set tweeningProperties(_arg1:Array):void;
		function set explicitWidth(_arg1:Number):void;
		function set measuredMinHeight(_arg1:Number):void;
		function get explicitMinWidth():Number;
		function get tweeningProperties():Array;
		function get maxHeight():Number;
		function set owner(_arg1:DisplayObjectContainer):void;
		function set includeInLayout(_arg1:Boolean):void;
		function setVisible(_arg1:Boolean, _arg2:Boolean=false):void;
		function parentChanged(_arg1:DisplayObjectContainer):void;
		function get explicitWidth():Number;
		function get measuredMinHeight():Number;
		function set measuredMinWidth(_arg1:Number):void;
		function set explicitHeight(_arg1:Number):void;
		function get includeInLayout():Boolean;
		function get measuredMinWidth():Number;
		function get explicitHeight():Number;
		function set systemManager(_arg1:ISystemManager):void;
		function set document(_arg1:Object):void;
		function get systemManager():ISystemManager;

	}
}//package mx.core 

****************

//IUID (mx.core.IUID)
package mx.core {

	public interface IUID {

		function get uid():String;
		function set uid(_arg1:String):void;

	}
}//package mx.core 

****************

//IUITextField (mx.core.IUITextField)
package mx.core {
	import flash.display.*;
	import mx.managers.*;
	import flash.geom.*;
	import mx.styles.*;
	import flash.text.*;

	public interface IUITextField extends IIMESupport, IFlexModule, IInvalidating, ISimpleStyleClient, IToolTipManagerClient, IUIComponent {

		function replaceText(_arg1:int, _arg2:int, _arg3:String):void;
		function get doubleClickEnabled():Boolean;
		function get nestLevel():int;
		function get caretIndex():int;
		function set doubleClickEnabled(_arg1:Boolean):void;
		function get maxScrollH():int;
		function set nestLevel(_arg1:int):void;
		function get numLines():int;
		function get scrollH():int;
		function setColor(_arg1:uint):void;
		function get maxScrollV():int;
		function getImageReference(_arg1:String):DisplayObject;
		function get scrollV():int;
		function get border():Boolean;
		function get text():String;
		function get styleSheet():StyleSheet;
		function getCharBoundaries(_arg1:int):Rectangle;
		function get background():Boolean;
		function set scrollH(_arg1:int):void;
		function getFirstCharInParagraph(_arg1:int):int;
		function get type():String;
		function replaceSelectedText(_arg1:String):void;
		function set borderColor(_arg1:uint):void;
		function get alwaysShowSelection():Boolean;
		function get sharpness():Number;
		function get tabIndex():int;
		function get textColor():uint;
		function set defaultTextFormat(_arg1:TextFormat):void;
		function get condenseWhite():Boolean;
		function get displayAsPassword():Boolean;
		function get autoSize():String;
		function setSelection(_arg1:int, _arg2:int):void;
		function set scrollV(_arg1:int):void;
		function set useRichTextClipboard(_arg1:Boolean):void;
		function get selectionBeginIndex():int;
		function get selectable():Boolean;
		function set border(_arg1:Boolean):void;
		function set multiline(_arg1:Boolean):void;
		function set background(_arg1:Boolean):void;
		function set embedFonts(_arg1:Boolean):void;
		function set text(_arg1:String):void;
		function get selectionEndIndex():int;
		function set mouseWheelEnabled(_arg1:Boolean):void;
		function appendText(_arg1:String):void;
		function get antiAliasType():String;
		function set styleSheet(_arg1:StyleSheet):void;
		function set nonInheritingStyles(_arg1:Object):void;
		function set textColor(_arg1:uint):void;
		function get wordWrap():Boolean;
		function getLineIndexAtPoint(_arg1:Number, _arg2:Number):int;
		function get htmlText():String;
		function set tabIndex(_arg1:int):void;
		function get thickness():Number;
		function getLineIndexOfChar(_arg1:int):int;
		function get bottomScrollV():int;
		function set restrict(_arg1:String):void;
		function set alwaysShowSelection(_arg1:Boolean):void;
		function getTextFormat(_arg1:int=-1, _arg2:int=-1):TextFormat;
		function set sharpness(_arg1:Number):void;
		function set type(_arg1:String):void;
		function setTextFormat(_arg1:TextFormat, _arg2:int=-1, _arg3:int=-1):void;
		function set gridFitType(_arg1:String):void;
		function getUITextFormat():UITextFormat;
		function set inheritingStyles(_arg1:Object):void;
		function setFocus():void;
		function get borderColor():uint;
		function set condenseWhite(_arg1:Boolean):void;
		function get textWidth():Number;
		function getLineOffset(_arg1:int):int;
		function set displayAsPassword(_arg1:Boolean):void;
		function set autoSize(_arg1:String):void;
		function get defaultTextFormat():TextFormat;
		function get useRichTextClipboard():Boolean;
		function get nonZeroTextHeight():Number;
		function set backgroundColor(_arg1:uint):void;
		function get embedFonts():Boolean;
		function set selectable(_arg1:Boolean):void;
		function get multiline():Boolean;
		function set maxChars(_arg1:int):void;
		function get textHeight():Number;
		function get nonInheritingStyles():Object;
		function getLineText(_arg1:int):String;
		function set focusRect(_arg1:Object):void;
		function get mouseWheelEnabled():Boolean;
		function get restrict():String;
		function getParagraphLength(_arg1:int):int;
		function set mouseEnabled(_arg1:Boolean):void;
		function get gridFitType():String;
		function get inheritingStyles():Object;
		function set ignorePadding(_arg1:Boolean):void;
		function set antiAliasType(_arg1:String):void;
		function get backgroundColor():uint;
		function getCharIndexAtPoint(_arg1:Number, _arg2:Number):int;
		function set tabEnabled(_arg1:Boolean):void;
		function get maxChars():int;
		function get focusRect():Object;
		function get ignorePadding():Boolean;
		function get mouseEnabled():Boolean;
		function get length():int;
		function set wordWrap(_arg1:Boolean):void;
		function get tabEnabled():Boolean;
		function set thickness(_arg1:Number):void;
		function getLineLength(_arg1:int):int;
		function truncateToFit(_arg1:String=null):Boolean;
		function set htmlText(_arg1:String):void;
		function getLineMetrics(_arg1:int):TextLineMetrics;
		function getStyle(_arg1:String);

	}
}//package mx.core 

****************

//LayoutContainer (mx.core.LayoutContainer)
package mx.core {
	import flash.events.*;
	import mx.containers.utilityClasses.*;
	import mx.containers.*;

	public class LayoutContainer extends Container implements IConstraintLayout {

		private var _constraintColumns:Array;
		protected var layoutObject:Layout;
		private var _layout:String;// = "vertical"
		private var processingCreationQueue:Boolean;// = false
		protected var boxLayoutClass:Class;
		private var resizeHandlerAdded:Boolean;// = false
		private var preloadObj:Object;
		private var creationQueue:Array;
		private var _constraintRows:Array;
		protected var canvasLayoutClass:Class;

		mx_internal static const VERSION:String = "3.5.0.12683";

		mx_internal static var useProgressiveLayout:Boolean = false;

		public function LayoutContainer(){
			layoutObject = new BoxLayout();
			canvasLayoutClass = CanvasLayout;
			boxLayoutClass = BoxLayout;
			creationQueue = [];
			_constraintColumns = [];
			_constraintRows = [];
			super();
			layoutObject.target = this;
		}
		public function get constraintColumns():Array{
			return (_constraintColumns);
		}
		override mx_internal function get usePadding():Boolean{
			return (!((layout == ContainerLayout.ABSOLUTE)));
		}
		override protected function layoutChrome(_arg1:Number, _arg2:Number):void{
			super.layoutChrome(_arg1, _arg2);
			if (!doingLayout){
				createBorder();
			};
		}
		public function set constraintColumns(_arg1:Array):void{
			var _local2:int;
			var _local3:int;
			if (_arg1 != _constraintColumns){
				_local2 = _arg1.length;
				_local3 = 0;
				while (_local3 < _local2) {
					ConstraintColumn(_arg1[_local3]).container = this;
					_local3++;
				};
				_constraintColumns = _arg1;
				invalidateSize();
				invalidateDisplayList();
			};
		}
		public function set layout(_arg1:String):void{
			if (_layout != _arg1){
				_layout = _arg1;
				if (layoutObject){
					layoutObject.target = null;
				};
				if (_layout == ContainerLayout.ABSOLUTE){
					layoutObject = new canvasLayoutClass();
				} else {
					layoutObject = new boxLayoutClass();
					if (_layout == ContainerLayout.VERTICAL){
						BoxLayout(layoutObject).direction = BoxDirection.VERTICAL;
					} else {
						BoxLayout(layoutObject).direction = BoxDirection.HORIZONTAL;
					};
				};
				if (layoutObject){
					layoutObject.target = this;
				};
				invalidateSize();
				invalidateDisplayList();
				dispatchEvent(new Event("layoutChanged"));
			};
		}
		public function get constraintRows():Array{
			return (_constraintRows);
		}
		override protected function measure():void{
			super.measure();
			layoutObject.measure();
		}
		override protected function updateDisplayList(_arg1:Number, _arg2:Number):void{
			super.updateDisplayList(_arg1, _arg2);
			layoutObject.updateDisplayList(_arg1, _arg2);
			createBorder();
		}
		public function get layout():String{
			return (_layout);
		}
		public function set constraintRows(_arg1:Array):void{
			var _local2:int;
			var _local3:int;
			if (_arg1 != _constraintRows){
				_local2 = _arg1.length;
				_local3 = 0;
				while (_local3 < _local2) {
					ConstraintRow(_arg1[_local3]).container = this;
					_local3++;
				};
				_constraintRows = _arg1;
				invalidateSize();
				invalidateDisplayList();
			};
		}

	}
}//package mx.core 

****************

//MovieClipAsset (mx.core.MovieClipAsset)
package mx.core {

	public class MovieClipAsset extends FlexMovieClip implements IFlexAsset, IFlexDisplayObject, IBorder {

		private var _measuredHeight:Number;
		private var _measuredWidth:Number;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function MovieClipAsset(){
			_measuredWidth = width;
			_measuredHeight = height;
		}
		public function get measuredWidth():Number{
			return (_measuredWidth);
		}
		public function get measuredHeight():Number{
			return (_measuredHeight);
		}
		public function setActualSize(_arg1:Number, _arg2:Number):void{
			width = _arg1;
			height = _arg2;
		}
		public function move(_arg1:Number, _arg2:Number):void{
			this.x = _arg1;
			this.y = _arg2;
		}
		public function get borderMetrics():EdgeMetrics{
			if (scale9Grid == null){
				return (EdgeMetrics.EMPTY);
			};
			return (new EdgeMetrics(scale9Grid.left, scale9Grid.top, Math.ceil((measuredWidth - scale9Grid.right)), Math.ceil((measuredHeight - scale9Grid.bottom))));
		}

	}
}//package mx.core 

****************

//MovieClipLoaderAsset (mx.core.MovieClipLoaderAsset)
package mx.core {
	import flash.events.*;
	import flash.display.*;
	import flash.utils.*;
	import flash.system.*;

	public class MovieClipLoaderAsset extends MovieClipAsset implements IFlexAsset, IFlexDisplayObject {

		protected var initialHeight:Number;// = 0
		private var loader:Loader;// = null
		private var initialized:Boolean;// = false
		protected var initialWidth:Number;// = 0
		private var requestedHeight:Number;
		private var requestedWidth:Number;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function MovieClipLoaderAsset(){
			var _local1:LoaderContext = new LoaderContext();
			_local1.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain);
			if (("allowLoadBytesCodeExecution" in _local1)){
				_local1["allowLoadBytesCodeExecution"] = true;
			};
			loader = new Loader();
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
			loader.loadBytes(movieClipData, _local1);
			addChild(loader);
		}
		override public function get width():Number{
			if (!initialized){
				return (initialWidth);
			};
			return (super.width);
		}
		override public function set width(_arg1:Number):void{
			if (!initialized){
				requestedWidth = _arg1;
			} else {
				loader.width = _arg1;
			};
		}
		override public function get measuredHeight():Number{
			return (initialHeight);
		}
		private function completeHandler(_arg1:Event):void{
			initialized = true;
			initialWidth = loader.width;
			initialHeight = loader.height;
			if (!isNaN(requestedWidth)){
				loader.width = requestedWidth;
			};
			if (!isNaN(requestedHeight)){
				loader.height = requestedHeight;
			};
			dispatchEvent(_arg1);
		}
		override public function set height(_arg1:Number):void{
			if (!initialized){
				requestedHeight = _arg1;
			} else {
				loader.height = _arg1;
			};
		}
		override public function get measuredWidth():Number{
			return (initialWidth);
		}
		override public function get height():Number{
			if (!initialized){
				return (initialHeight);
			};
			return (super.height);
		}
		public function get movieClipData():ByteArray{
			return (null);
		}

	}
}//package mx.core 

****************

//mx_internal (mx.core.mx_internal)
package mx.core {

	public namespace mx_internal = "http://www.adobe.com/2006/flex/mx/internal";
}//package mx.core 

****************

//ResourceModuleRSLItem (mx.core.ResourceModuleRSLItem)
package mx.core {
	import flash.events.*;
	import mx.events.*;
	import mx.resources.*;

	public class ResourceModuleRSLItem extends RSLItem {

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function ResourceModuleRSLItem(_arg1:String){
			super(_arg1);
		}
		private function resourceErrorHandler(_arg1:ResourceEvent):void{
			var _local2:IOErrorEvent = new IOErrorEvent(IOErrorEvent.IO_ERROR);
			_local2.text = _arg1.errorText;
			super.itemErrorHandler(_local2);
		}
		override public function load(_arg1:Function, _arg2:Function, _arg3:Function, _arg4:Function, _arg5:Function):void{
			chainedProgressHandler = _arg1;
			chainedCompleteHandler = _arg2;
			chainedIOErrorHandler = _arg3;
			chainedSecurityErrorHandler = _arg4;
			chainedRSLErrorHandler = _arg5;
			var _local6:IResourceManager = ResourceManager.getInstance();
			var _local7:IEventDispatcher = _local6.loadResourceModule(url);
			_local7.addEventListener(ResourceEvent.PROGRESS, itemProgressHandler);
			_local7.addEventListener(ResourceEvent.COMPLETE, itemCompleteHandler);
			_local7.addEventListener(ResourceEvent.ERROR, resourceErrorHandler);
		}

	}
}//package mx.core 

****************

//RSLItem (mx.core.RSLItem)
package mx.core {
	import flash.display.*;
	import flash.events.*;
	import mx.events.*;
	import flash.system.*;
	import flash.net.*;
	import mx.utils.*;

	public class RSLItem {

		protected var chainedSecurityErrorHandler:Function;
		public var total:uint;// = 0
		public var loaded:uint;// = 0
		private var completed:Boolean;// = false
		protected var chainedRSLErrorHandler:Function;
		protected var chainedIOErrorHandler:Function;
		protected var chainedCompleteHandler:Function;
		private var errorText:String;
		protected var chainedProgressHandler:Function;
		public var urlRequest:URLRequest;
		public var rootURL:String;
		protected var url:String;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function RSLItem(_arg1:String, _arg2:String=null){
			this.url = _arg1;
			this.rootURL = _arg2;
		}
		public function itemProgressHandler(_arg1:ProgressEvent):void{
			loaded = _arg1.bytesLoaded;
			total = _arg1.bytesTotal;
			if (chainedProgressHandler != null){
				chainedProgressHandler(_arg1);
			};
		}
		public function itemErrorHandler(_arg1:ErrorEvent):void{
			errorText = decodeURI(_arg1.text);
			completed = true;
			loaded = 0;
			total = 0;
			trace(errorText);
			if ((((_arg1.type == IOErrorEvent.IO_ERROR)) && (!((chainedIOErrorHandler == null))))){
				chainedIOErrorHandler(_arg1);
			} else {
				if ((((_arg1.type == SecurityErrorEvent.SECURITY_ERROR)) && (!((chainedSecurityErrorHandler == null))))){
					chainedSecurityErrorHandler(_arg1);
				} else {
					if ((((_arg1.type == RSLEvent.RSL_ERROR)) && (!((chainedRSLErrorHandler == null))))){
						chainedRSLErrorHandler(_arg1);
					};
				};
			};
		}
		public function load(_arg1:Function, _arg2:Function, _arg3:Function, _arg4:Function, _arg5:Function):void{
			var _local7:LoaderContext;
			chainedProgressHandler = _arg1;
			chainedCompleteHandler = _arg2;
			chainedIOErrorHandler = _arg3;
			chainedSecurityErrorHandler = _arg4;
			chainedRSLErrorHandler = _arg5;
			var _local6:Loader = new Loader();
			_local7 = new LoaderContext();
			urlRequest = new URLRequest(LoaderUtil.createAbsoluteURL(rootURL, url));
			_local6.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, itemProgressHandler);
			_local6.contentLoaderInfo.addEventListener(Event.COMPLETE, itemCompleteHandler);
			_local6.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, itemErrorHandler);
			_local6.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, itemErrorHandler);
			_local7.applicationDomain = ApplicationDomain.currentDomain;
			_local6.load(urlRequest, _local7);
		}
		public function itemCompleteHandler(_arg1:Event):void{
			completed = true;
			if (chainedCompleteHandler != null){
				chainedCompleteHandler(_arg1);
			};
		}

	}
}//package mx.core 

****************

//RSLListLoader (mx.core.RSLListLoader)
package mx.core {
	import flash.events.*;

	public class RSLListLoader {

		private var chainedSecurityErrorHandler:Function;
		private var chainedIOErrorHandler:Function;
		private var rslList:Array;
		private var chainedRSLErrorHandler:Function;
		private var chainedCompleteHandler:Function;
		private var currentIndex:int;// = 0
		private var chainedProgressHandler:Function;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function RSLListLoader(_arg1:Array){
			rslList = [];
			super();
			this.rslList = _arg1;
		}
		private function loadNext():void{
			if (!isDone()){
				currentIndex++;
				if (currentIndex < rslList.length){
					rslList[currentIndex].load(chainedProgressHandler, listCompleteHandler, listIOErrorHandler, listSecurityErrorHandler, chainedRSLErrorHandler);
				};
			};
		}
		public function getIndex():int{
			return (currentIndex);
		}
		public function load(_arg1:Function, _arg2:Function, _arg3:Function, _arg4:Function, _arg5:Function):void{
			chainedProgressHandler = _arg1;
			chainedCompleteHandler = _arg2;
			chainedIOErrorHandler = _arg3;
			chainedSecurityErrorHandler = _arg4;
			chainedRSLErrorHandler = _arg5;
			currentIndex = -1;
			loadNext();
		}
		private function listCompleteHandler(_arg1:Event):void{
			if (chainedCompleteHandler != null){
				chainedCompleteHandler(_arg1);
			};
			loadNext();
		}
		public function isDone():Boolean{
			return ((currentIndex >= rslList.length));
		}
		private function listSecurityErrorHandler(_arg1:Event):void{
			if (chainedSecurityErrorHandler != null){
				chainedSecurityErrorHandler(_arg1);
			};
		}
		public function getItemCount():int{
			return (rslList.length);
		}
		public function getItem(_arg1:int):RSLItem{
			if ((((_arg1 < 0)) || ((_arg1 >= rslList.length)))){
				return (null);
			};
			return (rslList[_arg1]);
		}
		private function listIOErrorHandler(_arg1:Event):void{
			if (chainedIOErrorHandler != null){
				chainedIOErrorHandler(_arg1);
			};
		}

	}
}//package mx.core 

****************

//ScrollPolicy (mx.core.ScrollPolicy)
package mx.core {

	public final class ScrollPolicy {

		public static const AUTO:String = "auto";
		public static const ON:String = "on";
		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const OFF:String = "off";

	}
}//package mx.core 

****************

//Singleton (mx.core.Singleton)
package mx.core {

	public class Singleton {

		mx_internal static const VERSION:String = "3.5.0.12683";

		private static var classMap:Object = {};

		public static function registerClass(_arg1:String, _arg2:Class):void{
			var _local3:Class = classMap[_arg1];
			if (!_local3){
				classMap[_arg1] = _arg2;
			};
		}
		public static function getClass(_arg1:String):Class{
			return (classMap[_arg1]);
		}
		public static function getInstance(_arg1:String):Object{
			var _local2:Class = classMap[_arg1];
			if (!_local2){
				throw (new Error((("No class registered for interface '" + _arg1) + "'.")));
			};
			return (_local2["getInstance"]());
		}

	}
}//package mx.core 

****************

//SoundAsset (mx.core.SoundAsset)
package mx.core {
	import flash.media.*;

	public class SoundAsset extends Sound implements IFlexAsset {

		mx_internal static const VERSION:String = "3.5.0.12683";

	}
}//package mx.core 

****************

//SpriteAsset (mx.core.SpriteAsset)
package mx.core {

	public class SpriteAsset extends FlexSprite implements IFlexAsset, IFlexDisplayObject, IBorder {

		private var _measuredHeight:Number;
		private var _measuredWidth:Number;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function SpriteAsset(){
			_measuredWidth = width;
			_measuredHeight = height;
		}
		public function get measuredWidth():Number{
			return (_measuredWidth);
		}
		public function get measuredHeight():Number{
			return (_measuredHeight);
		}
		public function setActualSize(_arg1:Number, _arg2:Number):void{
			width = _arg1;
			height = _arg2;
		}
		public function move(_arg1:Number, _arg2:Number):void{
			this.x = _arg1;
			this.y = _arg2;
		}
		public function get borderMetrics():EdgeMetrics{
			if (scale9Grid == null){
				return (EdgeMetrics.EMPTY);
			};
			return (new EdgeMetrics(scale9Grid.left, scale9Grid.top, Math.ceil((measuredWidth - scale9Grid.right)), Math.ceil((measuredHeight - scale9Grid.bottom))));
		}

	}
}//package mx.core 

****************

//SWFBridgeGroup (mx.core.SWFBridgeGroup)
package mx.core {
	import flash.utils.*;
	import mx.managers.*;
	import flash.events.*;

	public class SWFBridgeGroup implements ISWFBridgeGroup {

		private var _parentBridge:IEventDispatcher;
		private var _childBridges:Dictionary;
		private var _groupOwner:ISystemManager;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function SWFBridgeGroup(_arg1:ISystemManager){
			_groupOwner = _arg1;
		}
		public function getChildBridgeProvider(_arg1:IEventDispatcher):ISWFBridgeProvider{
			if (!_childBridges){
				return (null);
			};
			return (ISWFBridgeProvider(_childBridges[_arg1]));
		}
		public function removeChildBridge(_arg1:IEventDispatcher):void{
			var _local2:Object;
			if (((!(_childBridges)) || (!(_arg1)))){
				return;
			};
			for (_local2 in _childBridges) {
				if (_local2 == _arg1){
					delete _childBridges[_local2];
				};
			};
		}
		public function get parentBridge():IEventDispatcher{
			return (_parentBridge);
		}
		public function containsBridge(_arg1:IEventDispatcher):Boolean{
			var _local2:Object;
			if (((parentBridge) && ((parentBridge == _arg1)))){
				return (true);
			};
			for (_local2 in _childBridges) {
				if (_arg1 == _local2){
					return (true);
				};
			};
			return (false);
		}
		public function set parentBridge(_arg1:IEventDispatcher):void{
			_parentBridge = _arg1;
		}
		public function addChildBridge(_arg1:IEventDispatcher, _arg2:ISWFBridgeProvider):void{
			if (!_childBridges){
				_childBridges = new Dictionary();
			};
			_childBridges[_arg1] = _arg2;
		}
		public function getChildBridges():Array{
			var _local2:Object;
			var _local1:Array = [];
			for (_local2 in _childBridges) {
				_local1.push(_local2);
			};
			return (_local1);
		}

	}
}//package mx.core 

****************

//TextFieldFactory (mx.core.TextFieldFactory)
package mx.core {
	import flash.utils.*;
	import flash.text.*;

	public class TextFieldFactory implements ITextFieldFactory {

		private var textFields:Dictionary;

		mx_internal static const VERSION:String = "3.5.0.12683";

		private static var instance:ITextFieldFactory;

		public function TextFieldFactory(){
			textFields = new Dictionary(true);
			super();
		}
		public function createTextField(_arg1:IFlexModuleFactory):TextField{
			var _local4:Object;
			var _local2:TextField;
			var _local3:Dictionary = textFields[_arg1];
			if (_local3){
				for (_local4 in _local3) {
					_local2 = TextField(_local4);
					break;
				};
			};
			if (!_local2){
				if (_arg1){
					_local2 = TextField(_arg1.create("flash.text.TextField"));
				} else {
					_local2 = new TextField();
				};
				if (!_local3){
					_local3 = new Dictionary(true);
				};
				_local3[_local2] = 1;
				textFields[_arg1] = _local3;
			};
			return (_local2);
		}

		public static function getInstance():ITextFieldFactory{
			if (!instance){
				instance = new (TextFieldFactory);
			};
			return (instance);
		}

	}
}//package mx.core 

****************

//UIComponent (mx.core.UIComponent)
package mx.core {
	import mx.events.*;
	import mx.automation.*;
	import flash.events.*;
	import flash.display.*;
	import mx.managers.*;
	import mx.resources.*;
	import flash.geom.*;
	import mx.styles.*;
	import mx.controls.*;
	import flash.text.*;
	import mx.states.*;
	import mx.effects.*;
	import mx.graphics.*;
	import mx.binding.*;
	import flash.utils.*;
	import mx.utils.*;
	import mx.validators.*;
	import flash.system.*;
	import mx.modules.*;

	public class UIComponent extends FlexSprite implements IAutomationObject, IChildList, IDeferredInstantiationUIComponent, IFlexDisplayObject, IFlexModule, IInvalidating, ILayoutManagerClient, IPropertyChangeNotifier, IRepeaterClient, ISimpleStyleClient, IStyleClient, IToolTipManagerClient, IUIComponent, IValidatorListener, IStateClient, IConstraintClient {

		private var cachedEmbeddedFont:EmbeddedFont;// = null
		private var errorStringChanged:Boolean;// = false
		mx_internal var overlay:UIComponent;
		mx_internal var automaticRadioButtonGroups:Object;
		private var _currentState:String;
		private var _isPopUp:Boolean;
		private var _repeaters:Array;
		private var _systemManager:ISystemManager;
		private var _measuredWidth:Number;// = 0
		private var methodQueue:Array;
		mx_internal var _width:Number;
		private var _tweeningProperties:Array;
		private var _validationSubField:String;
		private var _endingEffectInstances:Array;
		mx_internal var saveBorderColor:Boolean;// = true
		mx_internal var overlayColor:uint;
		mx_internal var overlayReferenceCount:int;// = 0
		private var hasFontContextBeenSaved:Boolean;// = false
		private var _repeaterIndices:Array;
		private var oldExplicitWidth:Number;
		mx_internal var _descriptor:UIComponentDescriptor;
		private var _initialized:Boolean;// = false
		private var _focusEnabled:Boolean;// = true
		private var cacheAsBitmapCount:int;// = 0
		private var errorArray:Array;
		private var requestedCurrentState:String;
		private var listeningForRender:Boolean;// = false
		mx_internal var invalidateDisplayListFlag:Boolean;// = false
		private var oldScaleX:Number;// = 1
		private var oldScaleY:Number;// = 1
		mx_internal var _explicitMaxHeight:Number;
		mx_internal var invalidatePropertiesFlag:Boolean;// = false
		private var hasFocusRect:Boolean;// = false
		mx_internal var invalidateSizeFlag:Boolean;// = false
		private var _scaleX:Number;// = 1
		private var _scaleY:Number;// = 1
		private var _styleDeclaration:CSSStyleDeclaration;
		private var _resourceManager:IResourceManager;
		mx_internal var _affectedProperties:Object;
		mx_internal var _documentDescriptor:UIComponentDescriptor;
		private var _processedDescriptors:Boolean;// = false
		mx_internal var origBorderColor:Number;
		private var _focusManager:IFocusManager;
		private var _cachePolicy:String;// = "auto"
		private var _measuredHeight:Number;// = 0
		private var _id:String;
		private var _owner:DisplayObjectContainer;
		public var transitions:Array;
		mx_internal var _parent:DisplayObjectContainer;
		private var _measuredMinWidth:Number;// = 0
		private var oldMinWidth:Number;
		private var _explicitWidth:Number;
		private var _enabled:Boolean;// = false
		public var states:Array;
		private var _mouseFocusEnabled:Boolean;// = true
		private var oldHeight:Number;// = 0
		private var _currentStateChanged:Boolean;
		private var cachedTextFormat:UITextFormat;
		mx_internal var _height:Number;
		private var _automationDelegate:IAutomationObject;
		private var _percentWidth:Number;
		private var _automationName:String;// = null
		private var _isEffectStarted:Boolean;// = false
		private var _styleName:Object;
		private var lastUnscaledWidth:Number;
		mx_internal var _document:Object;
		mx_internal var _errorString:String;// = ""
		private var oldExplicitHeight:Number;
		private var _nestLevel:int;// = 0
		private var _systemManagerDirty:Boolean;// = false
		private var _explicitHeight:Number;
		mx_internal var _toolTip:String;
		private var _filters:Array;
		private var _focusPane:Sprite;
		private var playStateTransition:Boolean;// = true
		private var _nonInheritingStyles:Object;
		private var _showInAutomationHierarchy:Boolean;// = true
		private var _moduleFactory:IFlexModuleFactory;
		private var preventDrawFocus:Boolean;// = false
		private var oldX:Number;// = 0
		private var oldY:Number;// = 0
		private var _instanceIndices:Array;
		private var errorObjectArray:Array;
		private var _visible:Boolean;// = true
		private var _inheritingStyles:Object;
		private var _includeInLayout:Boolean;// = true
		mx_internal var _effectsStarted:Array;
		mx_internal var _explicitMinWidth:Number;
		private var lastUnscaledHeight:Number;
		mx_internal var _explicitMaxWidth:Number;
		private var _measuredMinHeight:Number;// = 0
		private var _uid:String;
		private var _currentTransitionEffect:IEffect;
		private var _updateCompletePendingFlag:Boolean;// = false
		private var oldMinHeight:Number;
		private var _flexContextMenu:IFlexContextMenu;
		mx_internal var _explicitMinHeight:Number;
		private var _percentHeight:Number;
		private var oldEmbeddedFontContext:IFlexModuleFactory;// = null
		private var oldWidth:Number;// = 0

		public static const DEFAULT_MEASURED_WIDTH:Number = 160;
		public static const DEFAULT_MAX_WIDTH:Number = 10000;
		public static const DEFAULT_MEASURED_MIN_HEIGHT:Number = 22;
		public static const DEFAULT_MAX_HEIGHT:Number = 10000;
		public static const DEFAULT_MEASURED_HEIGHT:Number = 22;
		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const DEFAULT_MEASURED_MIN_WIDTH:Number = 40;

		mx_internal static var dispatchEventHook:Function;
		private static var fakeMouseY:QName = new QName(mx_internal, "_mouseY");
		mx_internal static var createAccessibilityImplementation:Function;
		mx_internal static var STYLE_UNINITIALIZED:Object = {};
		private static var fakeMouseX:QName = new QName(mx_internal, "_mouseX");
		private static var _embeddedFontRegistry:IEmbeddedFontRegistry;

		public function UIComponent(){
			methodQueue = [];
			_resourceManager = ResourceManager.getInstance();
			_inheritingStyles = UIComponent.STYLE_UNINITIALIZED;
			_nonInheritingStyles = UIComponent.STYLE_UNINITIALIZED;
			states = [];
			transitions = [];
			_effectsStarted = [];
			_affectedProperties = {};
			_endingEffectInstances = [];
			super();
			focusRect = false;
			tabEnabled = (this is IFocusManagerComponent);
			tabChildren = false;
			enabled = true;
			$visible = false;
			addEventListener(Event.ADDED, addedHandler);
			addEventListener(Event.REMOVED, removedHandler);
			if ((this is IFocusManagerComponent)){
				addEventListener(FocusEvent.FOCUS_IN, focusInHandler);
				addEventListener(FocusEvent.FOCUS_OUT, focusOutHandler);
				addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
				addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
			};
			resourcesChanged();
			resourceManager.addEventListener(Event.CHANGE, resourceManager_changeHandler, false, 0, true);
			_width = super.width;
			_height = super.height;
		}
		override public function get filters():Array{
			return ((_filters) ? _filters : super.filters);
		}
		public function get toolTip():String{
			return (_toolTip);
		}
		private function transition_effectEndHandler(_arg1:EffectEvent):void{
			_currentTransitionEffect = null;
		}
		public function get nestLevel():int{
			return (_nestLevel);
		}
		protected function adjustFocusRect(_arg1:DisplayObject=null):void{
			var _local4:Number;
			var _local5:Number;
			var _local6:Point;
			var _local7:Number;
			if (!_arg1){
				_arg1 = this;
			};
			if (((isNaN(_arg1.width)) || (isNaN(_arg1.height)))){
				return;
			};
			var _local2:IFocusManager = focusManager;
			if (!_local2){
				return;
			};
			var _local3:IFlexDisplayObject = IFlexDisplayObject(getFocusObject());
			if (_local3){
				if (((errorString) && (!((errorString == ""))))){
					_local4 = getStyle("errorColor");
				} else {
					_local4 = getStyle("themeColor");
				};
				_local5 = getStyle("focusThickness");
				if ((_local3 is IStyleClient)){
					IStyleClient(_local3).setStyle("focusColor", _local4);
				};
				_local3.setActualSize((_arg1.width + (2 * _local5)), (_arg1.height + (2 * _local5)));
				if (rotation){
					_local7 = ((rotation * Math.PI) / 180);
					_local6 = new Point((_arg1.x - (_local5 * (Math.cos(_local7) - Math.sin(_local7)))), (_arg1.y - (_local5 * (Math.cos(_local7) + Math.sin(_local7)))));
					DisplayObject(_local3).rotation = rotation;
				} else {
					_local6 = new Point((_arg1.x - _local5), (_arg1.y - _local5));
				};
				if (_arg1.parent == this){
					_local6.x = (_local6.x + x);
					_local6.y = (_local6.y + y);
				};
				_local6 = parent.localToGlobal(_local6);
				_local6 = parent.globalToLocal(_local6);
				_local3.move(_local6.x, _local6.y);
				if ((_local3 is IInvalidating)){
					IInvalidating(_local3).validateNow();
				} else {
					if ((_local3 is IProgrammaticSkin)){
						IProgrammaticSkin(_local3).validateNow();
					};
				};
			};
		}
		mx_internal function setUnscaledWidth(_arg1:Number):void{
			var _local2:Number = (_arg1 * Math.abs(oldScaleX));
			if (_explicitWidth == _local2){
				return;
			};
			if (!isNaN(_local2)){
				_percentWidth = NaN;
			};
			_explicitWidth = _local2;
			invalidateSize();
			var _local3:IInvalidating = (parent as IInvalidating);
			if (((_local3) && (includeInLayout))){
				_local3.invalidateSize();
				_local3.invalidateDisplayList();
			};
		}
		private function isOnDisplayList():Boolean{
			var p:DisplayObjectContainer;
			try {
				p = (_parent) ? _parent : super.parent;
			} catch(e:SecurityError) {
				return (true);
			};
			return ((p) ? true : false);
		}
		public function set nestLevel(_arg1:int):void{
			var _local2:IChildList;
			var _local3:int;
			var _local4:int;
			var _local5:ILayoutManagerClient;
			var _local6:IUITextField;
			if ((((_arg1 > 1)) && (!((_nestLevel == _arg1))))){
				_nestLevel = _arg1;
				updateCallbacks();
				_local2 = ((this is IRawChildrenContainer)) ? IRawChildrenContainer(this).rawChildren : IChildList(this);
				_local3 = _local2.numChildren;
				_local4 = 0;
				while (_local4 < _local3) {
					_local5 = (_local2.getChildAt(_local4) as ILayoutManagerClient);
					if (_local5){
						_local5.nestLevel = (_arg1 + 1);
					} else {
						_local6 = (_local2.getChildAt(_local4) as IUITextField);
						if (_local6){
							_local6.nestLevel = (_arg1 + 1);
						};
					};
					_local4++;
				};
			};
		}
		public function getExplicitOrMeasuredHeight():Number{
			return ((isNaN(explicitHeight)) ? measuredHeight : explicitHeight);
		}
		private function callLaterDispatcher(_arg1:Event):void{
			var callLaterErrorEvent:DynamicEvent;
			var event = _arg1;
			UIComponentGlobals.callLaterDispatcherCount++;
			if (!UIComponentGlobals.catchCallLaterExceptions){
				callLaterDispatcher2(event);
			} else {
				try {
					callLaterDispatcher2(event);
				} catch(e:Error) {
					callLaterErrorEvent = new DynamicEvent("callLaterError");
					callLaterErrorEvent.error = e;
					systemManager.dispatchEvent(callLaterErrorEvent);
				};
			};
			UIComponentGlobals.callLaterDispatcherCount--;
		}
		public function getStyle(_arg1:String){
			return ((StyleManager.inheritingStyles[_arg1]) ? _inheritingStyles[_arg1] : _nonInheritingStyles[_arg1]);
		}
		final mx_internal function get $width():Number{
			return (super.width);
		}
		public function get className():String{
			var _local1:String = getQualifiedClassName(this);
			var _local2:int = _local1.indexOf("::");
			if (_local2 != -1){
				_local1 = _local1.substr((_local2 + 2));
			};
			return (_local1);
		}
		public function verticalGradientMatrix(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Matrix{
			UIComponentGlobals.tempMatrix.createGradientBox(_arg3, _arg4, (Math.PI / 2), _arg1, _arg2);
			return (UIComponentGlobals.tempMatrix);
		}
		public function setCurrentState(_arg1:String, _arg2:Boolean=true):void{
			if (((!((_arg1 == currentState))) && (!(((isBaseState(_arg1)) && (isBaseState(currentState))))))){
				requestedCurrentState = _arg1;
				playStateTransition = _arg2;
				if (initialized){
					commitCurrentState();
				} else {
					_currentStateChanged = true;
					addEventListener(FlexEvent.CREATION_COMPLETE, creationCompleteHandler);
				};
			};
		}
		private function getBaseStates(_arg1:State):Array{
			var _local2:Array = [];
			while (((_arg1) && (_arg1.basedOn))) {
				_local2.push(_arg1.basedOn);
				_arg1 = getState(_arg1.basedOn);
			};
			return (_local2);
		}
		public function set minHeight(_arg1:Number):void{
			if (explicitMinHeight == _arg1){
				return;
			};
			explicitMinHeight = _arg1;
		}
		protected function isOurFocus(_arg1:DisplayObject):Boolean{
			return ((_arg1 == this));
		}
		public function get errorString():String{
			return (_errorString);
		}
		mx_internal function setUnscaledHeight(_arg1:Number):void{
			var _local2:Number = (_arg1 * Math.abs(oldScaleY));
			if (_explicitHeight == _local2){
				return;
			};
			if (!isNaN(_local2)){
				_percentHeight = NaN;
			};
			_explicitHeight = _local2;
			invalidateSize();
			var _local3:IInvalidating = (parent as IInvalidating);
			if (((_local3) && (includeInLayout))){
				_local3.invalidateSize();
				_local3.invalidateDisplayList();
			};
		}
		public function get automationName():String{
			if (_automationName){
				return (_automationName);
			};
			if (automationDelegate){
				return (automationDelegate.automationName);
			};
			return ("");
		}
		final mx_internal function set $width(_arg1:Number):void{
			super.width = _arg1;
		}
		public function getVisibleRect(_arg1:DisplayObject=null):Rectangle{
			if (!_arg1){
				_arg1 = DisplayObject(systemManager);
			};
			var _local2:DisplayObject = ($parent) ? $parent : parent;
			if (!_local2){
				return (new Rectangle());
			};
			var _local3:Point = new Point(x, y);
			_local3 = _local2.localToGlobal(_local3);
			var _local4:Rectangle = new Rectangle(_local3.x, _local3.y, width, height);
			var _local5:DisplayObject = this;
			var _local6:Rectangle = new Rectangle();
			do  {
				if ((_local5 is UIComponent)){
					if (UIComponent(_local5).$parent){
						_local5 = UIComponent(_local5).$parent;
					} else {
						_local5 = UIComponent(_local5).parent;
					};
				} else {
					_local5 = _local5.parent;
				};
				if (((_local5) && (_local5.scrollRect))){
					_local6 = _local5.scrollRect.clone();
					_local3 = _local5.localToGlobal(_local6.topLeft);
					_local6.x = _local3.x;
					_local6.y = _local3.y;
					_local4 = _local4.intersection(_local6);
				};
			} while (((_local5) && (!((_local5 == _arg1)))));
			return (_local4);
		}
		public function invalidateDisplayList():void{
			if (!invalidateDisplayListFlag){
				invalidateDisplayListFlag = true;
				if (((isOnDisplayList()) && (UIComponentGlobals.layoutManager))){
					UIComponentGlobals.layoutManager.invalidateDisplayList(this);
				};
			};
		}
		mx_internal function initThemeColor():Boolean{
			var _local2:Object;
			var _local3:Number;
			var _local4:Number;
			var _local5:Object;
			var _local6:Array;
			var _local7:int;
			var _local8:CSSStyleDeclaration;
			var _local1:Object = _styleName;
			if (_styleDeclaration){
				_local2 = _styleDeclaration.getStyle("themeColor");
				_local3 = _styleDeclaration.getStyle("rollOverColor");
				_local4 = _styleDeclaration.getStyle("selectionColor");
			};
			if ((((((_local2 === null)) || (!(StyleManager.isValidStyleValue(_local2))))) && (((_local1) && (!((_local1 is ISimpleStyleClient))))))){
				_local5 = ((_local1 is String)) ? StyleManager.getStyleDeclaration(("." + _local1)) : _local1;
				if (_local5){
					_local2 = _local5.getStyle("themeColor");
					_local3 = _local5.getStyle("rollOverColor");
					_local4 = _local5.getStyle("selectionColor");
				};
			};
			if ((((_local2 === null)) || (!(StyleManager.isValidStyleValue(_local2))))){
				_local6 = getClassStyleDeclarations();
				_local7 = 0;
				while (_local7 < _local6.length) {
					_local8 = _local6[_local7];
					if (_local8){
						_local2 = _local8.getStyle("themeColor");
						_local3 = _local8.getStyle("rollOverColor");
						_local4 = _local8.getStyle("selectionColor");
					};
					if (((!((_local2 === null))) && (StyleManager.isValidStyleValue(_local2)))){
						break;
					};
					_local7++;
				};
			};
			if (((((((!((_local2 === null))) && (StyleManager.isValidStyleValue(_local2)))) && (isNaN(_local3)))) && (isNaN(_local4)))){
				setThemeColor(_local2);
				return (true);
			};
			return (((((((!((_local2 === null))) && (StyleManager.isValidStyleValue(_local2)))) && (!(isNaN(_local3))))) && (!(isNaN(_local4)))));
		}
		override public function get scaleX():Number{
			return (_scaleX);
		}
		public function get uid():String{
			if (!_uid){
				_uid = toString();
			};
			return (_uid);
		}
		override public function get mouseX():Number{
			if (((((!(root)) || ((root is Stage)))) || ((root[fakeMouseX] === undefined)))){
				return (super.mouseX);
			};
			return (globalToLocal(new Point(root[fakeMouseX], 0)).x);
		}
		override public function stopDrag():void{
			super.stopDrag();
			invalidateProperties();
			dispatchEvent(new Event("xChanged"));
			dispatchEvent(new Event("yChanged"));
		}
		public function get focusPane():Sprite{
			return (_focusPane);
		}
		public function set tweeningProperties(_arg1:Array):void{
			_tweeningProperties = _arg1;
		}
		public function horizontalGradientMatrix(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Matrix{
			UIComponentGlobals.tempMatrix.createGradientBox(_arg3, _arg4, 0, _arg1, _arg2);
			return (UIComponentGlobals.tempMatrix);
		}
		public function get isDocument():Boolean{
			return ((document == this));
		}
		public function set validationSubField(_arg1:String):void{
			_validationSubField = _arg1;
		}
		override public function get scaleY():Number{
			return (_scaleY);
		}
		protected function keyDownHandler(_arg1:KeyboardEvent):void{
		}
		protected function createInFontContext(_arg1:Class):Object{
			hasFontContextBeenSaved = true;
			var _local2:String = StringUtil.trimArrayElements(getStyle("fontFamily"), ",");
			var _local3:String = getStyle("fontWeight");
			var _local4:String = getStyle("fontStyle");
			var _local5 = (_local3 == "bold");
			var _local6 = (_local4 == "italic");
			oldEmbeddedFontContext = getFontContext(_local2, _local5, _local6);
			var _local7:Object = createInModuleContext((oldEmbeddedFontContext) ? oldEmbeddedFontContext : moduleFactory, getQualifiedClassName(_arg1));
			if (_local7 == null){
				_local7 = new (_arg1);
			};
			return (_local7);
		}
		public function get screen():Rectangle{
			var _local1:ISystemManager = systemManager;
			return ((_local1) ? _local1.screen : null);
		}
		protected function focusInHandler(_arg1:FocusEvent):void{
			var _local2:IFocusManager;
			if (isOurFocus(DisplayObject(_arg1.target))){
				_local2 = focusManager;
				if (((_local2) && (_local2.showFocusIndicator))){
					drawFocus(true);
				};
				ContainerGlobals.checkFocus(_arg1.relatedObject, this);
			};
		}
		public function hasFontContextChanged():Boolean{
			if (!hasFontContextBeenSaved){
				return (false);
			};
			var _local1:String = StringUtil.trimArrayElements(getStyle("fontFamily"), ",");
			var _local2:String = getStyle("fontWeight");
			var _local3:String = getStyle("fontStyle");
			var _local4 = (_local2 == "bold");
			var _local5 = (_local3 == "italic");
			var _local6:EmbeddedFont = getEmbeddedFont(_local1, _local4, _local5);
			var _local7:IFlexModuleFactory = embeddedFontRegistry.getAssociatedModuleFactory(_local6, moduleFactory);
			return (!((_local7 == oldEmbeddedFontContext)));
		}
		public function get explicitHeight():Number{
			return (_explicitHeight);
		}
		override public function get x():Number{
			return (super.x);
		}
		override public function get y():Number{
			return (super.y);
		}
		override public function get visible():Boolean{
			return (_visible);
		}
		mx_internal function addOverlay(_arg1:uint, _arg2:RoundedRectangle=null):void{
			if (!overlay){
				overlayColor = _arg1;
				overlay = new UIComponent();
				overlay.name = "overlay";
				overlay.$visible = true;
				fillOverlay(overlay, _arg1, _arg2);
				attachOverlay();
				if (!_arg2){
					addEventListener(ResizeEvent.RESIZE, overlay_resizeHandler);
				};
				overlay.x = 0;
				overlay.y = 0;
				invalidateDisplayList();
				overlayReferenceCount = 1;
			} else {
				overlayReferenceCount++;
			};
			dispatchEvent(new ChildExistenceChangedEvent(ChildExistenceChangedEvent.OVERLAY_CREATED, true, false, overlay));
		}
		public function get percentWidth():Number{
			return (_percentWidth);
		}
		public function set explicitMinHeight(_arg1:Number):void{
			if (_explicitMinHeight == _arg1){
				return;
			};
			_explicitMinHeight = _arg1;
			invalidateSize();
			var _local2:IInvalidating = (parent as IInvalidating);
			if (_local2){
				_local2.invalidateSize();
				_local2.invalidateDisplayList();
			};
			dispatchEvent(new Event("explicitMinHeightChanged"));
		}
		public function set automationName(_arg1:String):void{
			_automationName = _arg1;
		}
		public function get mouseFocusEnabled():Boolean{
			return (_mouseFocusEnabled);
		}
		mx_internal function getEmbeddedFont(_arg1:String, _arg2:Boolean, _arg3:Boolean):EmbeddedFont{
			if (cachedEmbeddedFont){
				if ((((cachedEmbeddedFont.fontName == _arg1)) && ((cachedEmbeddedFont.fontStyle == EmbeddedFontRegistry.getFontStyle(_arg2, _arg3))))){
					return (cachedEmbeddedFont);
				};
			};
			cachedEmbeddedFont = new EmbeddedFont(_arg1, _arg2, _arg3);
			return (cachedEmbeddedFont);
		}
		public function stylesInitialized():void{
		}
		public function set errorString(_arg1:String):void{
			var _local2:String = _errorString;
			_errorString = _arg1;
			ToolTipManager.registerErrorString(this, _local2, _arg1);
			errorStringChanged = true;
			invalidateProperties();
			dispatchEvent(new Event("errorStringChanged"));
		}
		public function getExplicitOrMeasuredWidth():Number{
			return ((isNaN(explicitWidth)) ? measuredWidth : explicitWidth);
		}
		final mx_internal function set $height(_arg1:Number):void{
			super.height = _arg1;
		}
		protected function keyUpHandler(_arg1:KeyboardEvent):void{
		}
		final mx_internal function $removeChild(_arg1:DisplayObject):DisplayObject{
			return (super.removeChild(_arg1));
		}
		override public function set scaleX(_arg1:Number):void{
			if (_scaleX == _arg1){
				return;
			};
			_scaleX = _arg1;
			invalidateProperties();
			invalidateSize();
			dispatchEvent(new Event("scaleXChanged"));
		}
		override public function set scaleY(_arg1:Number):void{
			if (_scaleY == _arg1){
				return;
			};
			_scaleY = _arg1;
			invalidateProperties();
			invalidateSize();
			dispatchEvent(new Event("scaleYChanged"));
		}
		public function set uid(_arg1:String):void{
			this._uid = _arg1;
		}
		public function createAutomationIDPart(_arg1:IAutomationObject):Object{
			if (automationDelegate){
				return (automationDelegate.createAutomationIDPart(_arg1));
			};
			return (null);
		}
		public function getAutomationChildAt(_arg1:int):IAutomationObject{
			if (automationDelegate){
				return (automationDelegate.getAutomationChildAt(_arg1));
			};
			return (null);
		}
		mx_internal function get isEffectStarted():Boolean{
			return (_isEffectStarted);
		}
		override public function get parent():DisplayObjectContainer{
			try {
				return ((_parent) ? _parent : super.parent);
			} catch(e:SecurityError) {
			};
			return (null);
		}
		override public function get mouseY():Number{
			if (((((!(root)) || ((root is Stage)))) || ((root[fakeMouseY] === undefined)))){
				return (super.mouseY);
			};
			return (globalToLocal(new Point(0, root[fakeMouseY])).y);
		}
		public function setActualSize(_arg1:Number, _arg2:Number):void{
			var _local3:Boolean;
			if (_width != _arg1){
				_width = _arg1;
				dispatchEvent(new Event("widthChanged"));
				_local3 = true;
			};
			if (_height != _arg2){
				_height = _arg2;
				dispatchEvent(new Event("heightChanged"));
				_local3 = true;
			};
			if (_local3){
				invalidateDisplayList();
				dispatchResizeEvent();
			};
		}
		private function focusObj_resizeHandler(_arg1:ResizeEvent):void{
			adjustFocusRect();
		}
		mx_internal function adjustSizesForScaleChanges():void{
			var _local3:Number;
			var _local1:Number = scaleX;
			var _local2:Number = scaleY;
			if (_local1 != oldScaleX){
				_local3 = Math.abs((_local1 / oldScaleX));
				if (explicitMinWidth){
					explicitMinWidth = (explicitMinWidth * _local3);
				};
				if (!isNaN(explicitWidth)){
					explicitWidth = (explicitWidth * _local3);
				};
				if (explicitMaxWidth){
					explicitMaxWidth = (explicitMaxWidth * _local3);
				};
				oldScaleX = _local1;
			};
			if (_local2 != oldScaleY){
				_local3 = Math.abs((_local2 / oldScaleY));
				if (explicitMinHeight){
					explicitMinHeight = (explicitMinHeight * _local3);
				};
				if (explicitHeight){
					explicitHeight = (explicitHeight * _local3);
				};
				if (explicitMaxHeight){
					explicitMaxHeight = (explicitMaxHeight * _local3);
				};
				oldScaleY = _local2;
			};
		}
		public function set focusPane(_arg1:Sprite):void{
			if (_arg1){
				addChild(_arg1);
				_arg1.x = 0;
				_arg1.y = 0;
				_arg1.scrollRect = null;
				_focusPane = _arg1;
			} else {
				removeChild(_focusPane);
				_focusPane.mask = null;
				_focusPane = null;
			};
		}
		public function determineTextFormatFromStyles():UITextFormat{
			var _local2:String;
			var _local1:UITextFormat = cachedTextFormat;
			if (!_local1){
				_local2 = StringUtil.trimArrayElements(_inheritingStyles.fontFamily, ",");
				_local1 = new UITextFormat(getNonNullSystemManager(), _local2);
				_local1.moduleFactory = moduleFactory;
				_local1.align = _inheritingStyles.textAlign;
				_local1.bold = (_inheritingStyles.fontWeight == "bold");
				_local1.color = (enabled) ? _inheritingStyles.color : _inheritingStyles.disabledColor;
				_local1.font = _local2;
				_local1.indent = _inheritingStyles.textIndent;
				_local1.italic = (_inheritingStyles.fontStyle == "italic");
				_local1.kerning = _inheritingStyles.kerning;
				_local1.leading = _nonInheritingStyles.leading;
				_local1.leftMargin = _nonInheritingStyles.paddingLeft;
				_local1.letterSpacing = _inheritingStyles.letterSpacing;
				_local1.rightMargin = _nonInheritingStyles.paddingRight;
				_local1.size = _inheritingStyles.fontSize;
				_local1.underline = (_nonInheritingStyles.textDecoration == "underline");
				_local1.antiAliasType = _inheritingStyles.fontAntiAliasType;
				_local1.gridFitType = _inheritingStyles.fontGridFitType;
				_local1.sharpness = _inheritingStyles.fontSharpness;
				_local1.thickness = _inheritingStyles.fontThickness;
				cachedTextFormat = _local1;
			};
			return (_local1);
		}
		public function validationResultHandler(_arg1:ValidationResultEvent):void{
			var _local3:String;
			var _local4:ValidationResult;
			var _local5:int;
			if (errorObjectArray === null){
				errorObjectArray = new Array();
				errorArray = new Array();
			};
			var _local2:int = errorObjectArray.indexOf(_arg1.target);
			if (_arg1.type == ValidationResultEvent.VALID){
				if (_local2 != -1){
					errorObjectArray.splice(_local2, 1);
					errorArray.splice(_local2, 1);
					errorString = errorArray.join("\n");
					if (errorArray.length == 0){
						dispatchEvent(new FlexEvent(FlexEvent.VALID));
					};
				};
			} else {
				if (((((!((validationSubField == null))) && (!((validationSubField == ""))))) && (_arg1.results))){
					_local5 = 0;
					while (_local5 < _arg1.results.length) {
						_local4 = _arg1.results[_local5];
						if (_local4.subField == validationSubField){
							if (_local4.isError){
								_local3 = _local4.errorMessage;
							} else {
								if (_local2 != -1){
									errorObjectArray.splice(_local2, 1);
									errorArray.splice(_local2, 1);
									errorString = errorArray.join("\n");
									if (errorArray.length == 0){
										dispatchEvent(new FlexEvent(FlexEvent.VALID));
									};
								};
							};
							break;
						};
						_local5++;
					};
				} else {
					if (((_arg1.results) && ((_arg1.results.length > 0)))){
						_local3 = _arg1.results[0].errorMessage;
					};
				};
				if (((((_local3) && (!((_local2 == -1))))) && (!((errorArray[_local2] == _local3))))){
					errorArray[_local2] = _local3;
					errorString = errorArray.join("\n");
					dispatchEvent(new FlexEvent(FlexEvent.INVALID));
				} else {
					if (((_local3) && ((_local2 == -1)))){
						errorObjectArray.push(_arg1.target);
						errorArray.push(_local3);
						errorString = errorArray.join("\n");
						dispatchEvent(new FlexEvent(FlexEvent.INVALID));
					};
				};
			};
		}
		public function invalidateProperties():void{
			if (!invalidatePropertiesFlag){
				invalidatePropertiesFlag = true;
				if (((parent) && (UIComponentGlobals.layoutManager))){
					UIComponentGlobals.layoutManager.invalidateProperties(this);
				};
			};
		}
		public function get inheritingStyles():Object{
			return (_inheritingStyles);
		}
		private function focusObj_scrollHandler(_arg1:Event):void{
			adjustFocusRect();
		}
		final mx_internal function get $x():Number{
			return (super.x);
		}
		final mx_internal function get $y():Number{
			return (super.y);
		}
		public function setConstraintValue(_arg1:String, _arg2):void{
			setStyle(_arg1, _arg2);
		}
		protected function resourcesChanged():void{
		}
		public function registerEffects(_arg1:Array):void{
			var _local4:String;
			var _local2:int = _arg1.length;
			var _local3:int;
			while (_local3 < _local2) {
				_local4 = EffectManager.getEventForEffectTrigger(_arg1[_local3]);
				if (((!((_local4 == null))) && (!((_local4 == ""))))){
					addEventListener(_local4, EffectManager.eventHandler, false, EventPriority.EFFECT);
				};
				_local3++;
			};
		}
		public function get explicitMinWidth():Number{
			return (_explicitMinWidth);
		}
		private function filterChangeHandler(_arg1:Event):void{
			super.filters = _filters;
		}
		override public function set visible(_arg1:Boolean):void{
			setVisible(_arg1);
		}
		public function set explicitHeight(_arg1:Number):void{
			if (_explicitHeight == _arg1){
				return;
			};
			if (!isNaN(_arg1)){
				_percentHeight = NaN;
			};
			_explicitHeight = _arg1;
			invalidateSize();
			var _local2:IInvalidating = (parent as IInvalidating);
			if (((_local2) && (includeInLayout))){
				_local2.invalidateSize();
				_local2.invalidateDisplayList();
			};
			dispatchEvent(new Event("explicitHeightChanged"));
		}
		override public function set x(_arg1:Number):void{
			if (super.x == _arg1){
				return;
			};
			super.x = _arg1;
			invalidateProperties();
			dispatchEvent(new Event("xChanged"));
		}
		public function set showInAutomationHierarchy(_arg1:Boolean):void{
			_showInAutomationHierarchy = _arg1;
		}
		override public function set y(_arg1:Number):void{
			if (super.y == _arg1){
				return;
			};
			super.y = _arg1;
			invalidateProperties();
			dispatchEvent(new Event("yChanged"));
		}
		private function resourceManager_changeHandler(_arg1:Event):void{
			resourcesChanged();
		}
		public function set systemManager(_arg1:ISystemManager):void{
			_systemManager = _arg1;
			_systemManagerDirty = false;
		}
		mx_internal function getFocusObject():DisplayObject{
			var _local1:IFocusManager = focusManager;
			if (((!(_local1)) || (!(_local1.focusPane)))){
				return (null);
			};
			return (((_local1.focusPane.numChildren == 0)) ? null : _local1.focusPane.getChildAt(0));
		}
		public function set percentWidth(_arg1:Number):void{
			if (_percentWidth == _arg1){
				return;
			};
			if (!isNaN(_arg1)){
				_explicitWidth = NaN;
			};
			_percentWidth = _arg1;
			var _local2:IInvalidating = (parent as IInvalidating);
			if (_local2){
				_local2.invalidateSize();
				_local2.invalidateDisplayList();
			};
		}
		public function get moduleFactory():IFlexModuleFactory{
			return (_moduleFactory);
		}
		override public function addChild(_arg1:DisplayObject):DisplayObject{
			var _local2:DisplayObjectContainer = _arg1.parent;
			if (((_local2) && (!((_local2 is Loader))))){
				_local2.removeChild(_arg1);
			};
			var _local3:int = (((overlayReferenceCount) && (!((_arg1 == overlay))))) ? Math.max(0, (super.numChildren - 1)) : super.numChildren;
			addingChild(_arg1);
			$addChildAt(_arg1, _local3);
			childAdded(_arg1);
			return (_arg1);
		}
		public function get document():Object{
			return (_document);
		}
		public function set mouseFocusEnabled(_arg1:Boolean):void{
			_mouseFocusEnabled = _arg1;
		}
		final mx_internal function $addChild(_arg1:DisplayObject):DisplayObject{
			return (super.addChild(_arg1));
		}
		mx_internal function setThemeColor(_arg1:Object):void{
			var _local2:Number;
			if ((_local2 is String)){
				_local2 = parseInt(String(_arg1));
			} else {
				_local2 = Number(_arg1);
			};
			if (isNaN(_local2)){
				_local2 = StyleManager.getColorName(_arg1);
			};
			var _local3:Number = ColorUtil.adjustBrightness2(_local2, 50);
			var _local4:Number = ColorUtil.adjustBrightness2(_local2, 70);
			setStyle("selectionColor", _local3);
			setStyle("rollOverColor", _local4);
		}
		public function get explicitMaxWidth():Number{
			return (_explicitMaxWidth);
		}
		public function get id():String{
			return (_id);
		}
		override public function get height():Number{
			return (_height);
		}
		public function set minWidth(_arg1:Number):void{
			if (explicitMinWidth == _arg1){
				return;
			};
			explicitMinWidth = _arg1;
		}
		public function set currentState(_arg1:String):void{
			setCurrentState(_arg1, true);
		}
		public function executeBindings(_arg1:Boolean=false):void{
			var _local2:Object = (((descriptor) && (descriptor.document))) ? descriptor.document : parentDocument;
			BindingManager.executeBindings(_local2, id, this);
		}
		public function replayAutomatableEvent(_arg1:Event):Boolean{
			if (automationDelegate){
				return (automationDelegate.replayAutomatableEvent(_arg1));
			};
			return (false);
		}
		mx_internal function getFontContext(_arg1:String, _arg2:Boolean, _arg3:Boolean):IFlexModuleFactory{
			return (embeddedFontRegistry.getAssociatedModuleFactory(getEmbeddedFont(_arg1, _arg2, _arg3), moduleFactory));
		}
		public function get instanceIndex():int{
			return ((_instanceIndices) ? _instanceIndices[(_instanceIndices.length - 1)] : -1);
		}
		public function set measuredWidth(_arg1:Number):void{
			_measuredWidth = _arg1;
		}
		public function effectFinished(_arg1:IEffectInstance):void{
			_endingEffectInstances.push(_arg1);
			invalidateProperties();
			UIComponentGlobals.layoutManager.addEventListener(FlexEvent.UPDATE_COMPLETE, updateCompleteHandler, false, 0, true);
		}
		public function getRepeaterItem(_arg1:int=-1):Object{
			var _local2:Array = repeaters;
			if (_local2.length == 0){
				return (null);
			};
			if (_arg1 == -1){
				_arg1 = (_local2.length - 1);
			};
			return (_local2[_arg1].getItemAt(repeaterIndices[_arg1]));
		}
		mx_internal function set isEffectStarted(_arg1:Boolean):void{
			_isEffectStarted = _arg1;
		}
		mx_internal function fillOverlay(_arg1:UIComponent, _arg2:uint, _arg3:RoundedRectangle=null):void{
			if (!_arg3){
				_arg3 = new RoundedRectangle(0, 0, unscaledWidth, unscaledHeight, 0);
			};
			var _local4:Graphics = _arg1.graphics;
			_local4.clear();
			_local4.beginFill(_arg2);
			_local4.drawRoundRect(_arg3.x, _arg3.y, _arg3.width, _arg3.height, (_arg3.cornerRadius * 2), (_arg3.cornerRadius * 2));
			_local4.endFill();
		}
		public function get instanceIndices():Array{
			return ((_instanceIndices) ? _instanceIndices.slice(0) : null);
		}
		mx_internal function childAdded(_arg1:DisplayObject):void{
			if ((_arg1 is UIComponent)){
				if (!UIComponent(_arg1).initialized){
					UIComponent(_arg1).initialize();
				};
			} else {
				if ((_arg1 is IUIComponent)){
					IUIComponent(_arg1).initialize();
				};
			};
		}
		public function globalToContent(_arg1:Point):Point{
			return (globalToLocal(_arg1));
		}
		mx_internal function removingChild(_arg1:DisplayObject):void{
		}
		mx_internal function getEffectsForProperty(_arg1:String):Array{
			return (((_affectedProperties[_arg1])!=undefined) ? _affectedProperties[_arg1] : []);
		}
		override public function removeChildAt(_arg1:int):DisplayObject{
			var _local2:DisplayObject = getChildAt(_arg1);
			removingChild(_local2);
			$removeChild(_local2);
			childRemoved(_local2);
			return (_local2);
		}
		protected function measure():void{
			measuredMinWidth = 0;
			measuredMinHeight = 0;
			measuredWidth = 0;
			measuredHeight = 0;
		}
		public function set owner(_arg1:DisplayObjectContainer):void{
			_owner = _arg1;
		}
		mx_internal function getNonNullSystemManager():ISystemManager{
			var _local1:ISystemManager = systemManager;
			if (!_local1){
				_local1 = ISystemManager(SystemManager.getSWFRoot(this));
			};
			if (!_local1){
				return (SystemManagerGlobals.topLevelSystemManagers[0]);
			};
			return (_local1);
		}
		protected function get unscaledWidth():Number{
			return ((width / Math.abs(scaleX)));
		}
		public function set processedDescriptors(_arg1:Boolean):void{
			_processedDescriptors = _arg1;
			if (_arg1){
				dispatchEvent(new FlexEvent(FlexEvent.INITIALIZE));
			};
		}
		private function processEffectFinished(_arg1:Array):void{
			var _local3:int;
			var _local4:IEffectInstance;
			var _local5:IEffectInstance;
			var _local6:Array;
			var _local7:int;
			var _local8:String;
			var _local9:int;
			var _local2:int = (_effectsStarted.length - 1);
			while (_local2 >= 0) {
				_local3 = 0;
				while (_local3 < _arg1.length) {
					_local4 = _arg1[_local3];
					if (_local4 == _effectsStarted[_local2]){
						_local5 = _effectsStarted[_local2];
						_effectsStarted.splice(_local2, 1);
						_local6 = _local5.effect.getAffectedProperties();
						_local7 = 0;
						while (_local7 < _local6.length) {
							_local8 = _local6[_local7];
							if (_affectedProperties[_local8] != undefined){
								_local9 = 0;
								while (_local9 < _affectedProperties[_local8].length) {
									if (_affectedProperties[_local8][_local9] == _local4){
										_affectedProperties[_local8].splice(_local9, 1);
										break;
									};
									_local9++;
								};
								if (_affectedProperties[_local8].length == 0){
									delete _affectedProperties[_local8];
								};
							};
							_local7++;
						};
						break;
					};
					_local3++;
				};
				_local2--;
			};
			isEffectStarted = ((_effectsStarted.length > 0)) ? true : false;
			if (((_local4) && (_local4.hideFocusRing))){
				preventDrawFocus = false;
			};
		}
		private function commitCurrentState():void{
			var _local3:StateChangeEvent;
			var _local1:IEffect = (playStateTransition) ? getTransition(_currentState, requestedCurrentState) : null;
			var _local2:String = findCommonBaseState(_currentState, requestedCurrentState);
			var _local4:String = (_currentState) ? _currentState : "";
			var _local5:State = getState(requestedCurrentState);
			if (_currentTransitionEffect){
				_currentTransitionEffect.end();
			};
			initializeState(requestedCurrentState);
			if (_local1){
				_local1.captureStartValues();
			};
			_local3 = new StateChangeEvent(StateChangeEvent.CURRENT_STATE_CHANGING);
			_local3.oldState = _local4;
			_local3.newState = (requestedCurrentState) ? requestedCurrentState : "";
			dispatchEvent(_local3);
			if (isBaseState(_currentState)){
				dispatchEvent(new FlexEvent(FlexEvent.EXIT_STATE));
			};
			removeState(_currentState, _local2);
			_currentState = requestedCurrentState;
			if (isBaseState(currentState)){
				dispatchEvent(new FlexEvent(FlexEvent.ENTER_STATE));
			} else {
				applyState(_currentState, _local2);
			};
			_local3 = new StateChangeEvent(StateChangeEvent.CURRENT_STATE_CHANGE);
			_local3.oldState = _local4;
			_local3.newState = (_currentState) ? _currentState : "";
			dispatchEvent(_local3);
			if (_local1){
				UIComponentGlobals.layoutManager.validateNow();
				_currentTransitionEffect = _local1;
				_local1.addEventListener(EffectEvent.EFFECT_END, transition_effectEndHandler);
				_local1.play();
			};
		}
		public function get includeInLayout():Boolean{
			return (_includeInLayout);
		}
		private function dispatchResizeEvent():void{
			var _local1:ResizeEvent = new ResizeEvent(ResizeEvent.RESIZE);
			_local1.oldWidth = oldWidth;
			_local1.oldHeight = oldHeight;
			dispatchEvent(_local1);
			oldWidth = width;
			oldHeight = height;
		}
		public function set maxWidth(_arg1:Number):void{
			if (explicitMaxWidth == _arg1){
				return;
			};
			explicitMaxWidth = _arg1;
		}
		public function validateDisplayList():void{
			var _local1:ISystemManager;
			var _local2:Number;
			var _local3:Number;
			if (invalidateDisplayListFlag){
				_local1 = (parent as ISystemManager);
				if (_local1){
					if ((((_local1 is SystemManagerProxy)) || ((((_local1 == systemManager.topLevelSystemManager)) && (!((_local1.document == this))))))){
						setActualSize(getExplicitOrMeasuredWidth(), getExplicitOrMeasuredHeight());
					};
				};
				_local2 = ((scaleX == 0)) ? 0 : (width / scaleX);
				_local3 = ((scaleY == 0)) ? 0 : (height / scaleY);
				if (Math.abs((_local2 - lastUnscaledWidth)) < 1E-5){
					_local2 = lastUnscaledWidth;
				};
				if (Math.abs((_local3 - lastUnscaledHeight)) < 1E-5){
					_local3 = lastUnscaledHeight;
				};
				updateDisplayList(_local2, _local3);
				lastUnscaledWidth = _local2;
				lastUnscaledHeight = _local3;
				invalidateDisplayListFlag = false;
			};
		}
		public function contentToGlobal(_arg1:Point):Point{
			return (localToGlobal(_arg1));
		}
		public function resolveAutomationIDPart(_arg1:Object):Array{
			if (automationDelegate){
				return (automationDelegate.resolveAutomationIDPart(_arg1));
			};
			return ([]);
		}
		public function set inheritingStyles(_arg1:Object):void{
			_inheritingStyles = _arg1;
		}
		public function setFocus():void{
			var _local1:ISystemManager = systemManager;
			if (((_local1) && (((_local1.stage) || (_local1.useSWFBridge()))))){
				if (UIComponentGlobals.callLaterDispatcherCount == 0){
					_local1.stage.focus = this;
					UIComponentGlobals.nextFocusObject = null;
				} else {
					UIComponentGlobals.nextFocusObject = this;
					_local1.addEventListener(FlexEvent.ENTER_FRAME, setFocusLater);
				};
			} else {
				UIComponentGlobals.nextFocusObject = this;
				callLater(setFocusLater);
			};
		}
		private function getTransition(_arg1:String, _arg2:String):IEffect{
			var _local6:Transition;
			var _local3:IEffect;
			var _local4:int;
			if (!transitions){
				return (null);
			};
			if (!_arg1){
				_arg1 = "";
			};
			if (!_arg2){
				_arg2 = "";
			};
			var _local5:int;
			while (_local5 < transitions.length) {
				_local6 = transitions[_local5];
				if ((((((_local6.fromState == "*")) && ((_local6.toState == "*")))) && ((_local4 < 1)))){
					_local3 = _local6.effect;
					_local4 = 1;
				} else {
					if ((((((_local6.fromState == _arg1)) && ((_local6.toState == "*")))) && ((_local4 < 2)))){
						_local3 = _local6.effect;
						_local4 = 2;
					} else {
						if ((((((_local6.fromState == "*")) && ((_local6.toState == _arg2)))) && ((_local4 < 3)))){
							_local3 = _local6.effect;
							_local4 = 3;
						} else {
							if ((((((_local6.fromState == _arg1)) && ((_local6.toState == _arg2)))) && ((_local4 < 4)))){
								_local3 = _local6.effect;
								_local4 = 4;
								break;
							};
						};
					};
				};
				_local5++;
			};
			return (_local3);
		}
		public function set initialized(_arg1:Boolean):void{
			_initialized = _arg1;
			if (_arg1){
				setVisible(_visible, true);
				dispatchEvent(new FlexEvent(FlexEvent.CREATION_COMPLETE));
			};
		}
		final mx_internal function set $y(_arg1:Number):void{
			super.y = _arg1;
		}
		public function owns(_arg1:DisplayObject):Boolean{
			var child = _arg1;
			var childList:IChildList = ((this is IRawChildrenContainer)) ? IRawChildrenContainer(this).rawChildren : IChildList(this);
			if (childList.contains(child)){
				return (true);
			};
			try {
				while (((child) && (!((child == this))))) {
					if ((child is IUIComponent)){
						child = IUIComponent(child).owner;
					} else {
						child = child.parent;
					};
				};
			} catch(e:SecurityError) {
				return (false);
			};
			return ((child == this));
		}
		public function setVisible(_arg1:Boolean, _arg2:Boolean=false):void{
			_visible = _arg1;
			if (!initialized){
				return;
			};
			if ($visible == _arg1){
				return;
			};
			$visible = _arg1;
			if (!_arg2){
				dispatchEvent(new FlexEvent((_arg1) ? FlexEvent.SHOW : FlexEvent.HIDE));
			};
		}
		final mx_internal function $addChildAt(_arg1:DisplayObject, _arg2:int):DisplayObject{
			return (super.addChildAt(_arg1, _arg2));
		}
		public function deleteReferenceOnParentDocument(_arg1:IFlexDisplayObject):void{
			var _local2:Array;
			var _local3:Object;
			var _local4:Array;
			var _local5:int;
			var _local6:int;
			var _local7:int;
			var _local8:Object;
			var _local9:PropertyChangeEvent;
			if (((id) && (!((id == ""))))){
				_local2 = _instanceIndices;
				if (!_local2){
					_arg1[id] = null;
				} else {
					_local3 = _arg1[id];
					if (!_local3){
						return;
					};
					_local4 = [];
					_local4.push(_local3);
					_local5 = _local2.length;
					_local6 = 0;
					while (_local6 < (_local5 - 1)) {
						_local8 = _local3[_local2[_local6]];
						if (!_local8){
							return;
						};
						_local3 = _local8;
						_local4.push(_local3);
						_local6++;
					};
					_local3.splice(_local2[(_local5 - 1)], 1);
					_local7 = (_local4.length - 1);
					while (_local7 > 0) {
						if (_local4[_local7].length == 0){
							_local4[(_local7 - 1)].splice(_local2[_local7], 1);
						};
						_local7--;
					};
					if ((((_local4.length > 0)) && ((_local4[0].length == 0)))){
						_arg1[id] = null;
					} else {
						_local9 = PropertyChangeEvent.createUpdateEvent(_arg1, id, _arg1[id], _arg1[id]);
						_arg1.dispatchEvent(_local9);
					};
				};
			};
		}
		public function get nonInheritingStyles():Object{
			return (_nonInheritingStyles);
		}
		public function effectStarted(_arg1:IEffectInstance):void{
			var _local4:String;
			_effectsStarted.push(_arg1);
			var _local2:Array = _arg1.effect.getAffectedProperties();
			var _local3:int;
			while (_local3 < _local2.length) {
				_local4 = _local2[_local3];
				if (_affectedProperties[_local4] == undefined){
					_affectedProperties[_local4] = [];
				};
				_affectedProperties[_local4].push(_arg1);
				_local3++;
			};
			isEffectStarted = true;
			if (_arg1.hideFocusRing){
				preventDrawFocus = true;
				drawFocus(false);
			};
		}
		final mx_internal function set $x(_arg1:Number):void{
			super.x = _arg1;
		}
		private function applyState(_arg1:String, _arg2:String):void{
			var _local4:Array;
			var _local5:int;
			var _local3:State = getState(_arg1);
			if (_arg1 == _arg2){
				return;
			};
			if (_local3){
				if (_local3.basedOn != _arg2){
					applyState(_local3.basedOn, _arg2);
				};
				_local4 = _local3.overrides;
				_local5 = 0;
				while (_local5 < _local4.length) {
					_local4[_local5].apply(this);
					_local5++;
				};
				_local3.dispatchEnterState();
			};
		}
		protected function commitProperties():void{
			var _local1:Number;
			var _local2:Number;
			if (_scaleX != oldScaleX){
				_local1 = Math.abs((_scaleX / oldScaleX));
				if (!isNaN(explicitMinWidth)){
					explicitMinWidth = (explicitMinWidth * _local1);
				};
				if (!isNaN(explicitWidth)){
					explicitWidth = (explicitWidth * _local1);
				};
				if (!isNaN(explicitMaxWidth)){
					explicitMaxWidth = (explicitMaxWidth * _local1);
				};
				_width = (_width * _local1);
				super.scaleX = (oldScaleX = _scaleX);
			};
			if (_scaleY != oldScaleY){
				_local2 = Math.abs((_scaleY / oldScaleY));
				if (!isNaN(explicitMinHeight)){
					explicitMinHeight = (explicitMinHeight * _local2);
				};
				if (!isNaN(explicitHeight)){
					explicitHeight = (explicitHeight * _local2);
				};
				if (!isNaN(explicitMaxHeight)){
					explicitMaxHeight = (explicitMaxHeight * _local2);
				};
				_height = (_height * _local2);
				super.scaleY = (oldScaleY = _scaleY);
			};
			if (((!((x == oldX))) || (!((y == oldY))))){
				dispatchMoveEvent();
			};
			if (((!((width == oldWidth))) || (!((height == oldHeight))))){
				dispatchResizeEvent();
			};
			if (errorStringChanged){
				errorStringChanged = false;
				setBorderColorForErrorString();
			};
		}
		public function get percentHeight():Number{
			return (_percentHeight);
		}
		override public function get width():Number{
			return (_width);
		}
		final mx_internal function get $parent():DisplayObjectContainer{
			return (super.parent);
		}
		public function set explicitMinWidth(_arg1:Number):void{
			if (_explicitMinWidth == _arg1){
				return;
			};
			_explicitMinWidth = _arg1;
			invalidateSize();
			var _local2:IInvalidating = (parent as IInvalidating);
			if (_local2){
				_local2.invalidateSize();
				_local2.invalidateDisplayList();
			};
			dispatchEvent(new Event("explicitMinWidthChanged"));
		}
		public function get isPopUp():Boolean{
			return (_isPopUp);
		}
		private function measureSizes():Boolean{
			var _local2:Number;
			var _local3:Number;
			var _local4:Number;
			var _local5:Number;
			var _local1:Boolean;
			if (!invalidateSizeFlag){
				return (_local1);
			};
			if (((isNaN(explicitWidth)) || (isNaN(explicitHeight)))){
				_local4 = Math.abs(scaleX);
				_local5 = Math.abs(scaleY);
				if (_local4 != 1){
					_measuredMinWidth = (_measuredMinWidth / _local4);
					_measuredWidth = (_measuredWidth / _local4);
				};
				if (_local5 != 1){
					_measuredMinHeight = (_measuredMinHeight / _local5);
					_measuredHeight = (_measuredHeight / _local5);
				};
				measure();
				invalidateSizeFlag = false;
				if (((!(isNaN(explicitMinWidth))) && ((measuredWidth < explicitMinWidth)))){
					measuredWidth = explicitMinWidth;
				};
				if (((!(isNaN(explicitMaxWidth))) && ((measuredWidth > explicitMaxWidth)))){
					measuredWidth = explicitMaxWidth;
				};
				if (((!(isNaN(explicitMinHeight))) && ((measuredHeight < explicitMinHeight)))){
					measuredHeight = explicitMinHeight;
				};
				if (((!(isNaN(explicitMaxHeight))) && ((measuredHeight > explicitMaxHeight)))){
					measuredHeight = explicitMaxHeight;
				};
				if (_local4 != 1){
					_measuredMinWidth = (_measuredMinWidth * _local4);
					_measuredWidth = (_measuredWidth * _local4);
				};
				if (_local5 != 1){
					_measuredMinHeight = (_measuredMinHeight * _local5);
					_measuredHeight = (_measuredHeight * _local5);
				};
			} else {
				invalidateSizeFlag = false;
				_measuredMinWidth = 0;
				_measuredMinHeight = 0;
			};
			adjustSizesForScaleChanges();
			if (isNaN(oldMinWidth)){
				oldMinWidth = (isNaN(explicitMinWidth)) ? measuredMinWidth : explicitMinWidth;
				oldMinHeight = (isNaN(explicitMinHeight)) ? measuredMinHeight : explicitMinHeight;
				oldExplicitWidth = (isNaN(explicitWidth)) ? measuredWidth : explicitWidth;
				oldExplicitHeight = (isNaN(explicitHeight)) ? measuredHeight : explicitHeight;
				_local1 = true;
			} else {
				_local3 = (isNaN(explicitMinWidth)) ? measuredMinWidth : explicitMinWidth;
				if (_local3 != oldMinWidth){
					oldMinWidth = _local3;
					_local1 = true;
				};
				_local3 = (isNaN(explicitMinHeight)) ? measuredMinHeight : explicitMinHeight;
				if (_local3 != oldMinHeight){
					oldMinHeight = _local3;
					_local1 = true;
				};
				_local3 = (isNaN(explicitWidth)) ? measuredWidth : explicitWidth;
				if (_local3 != oldExplicitWidth){
					oldExplicitWidth = _local3;
					_local1 = true;
				};
				_local3 = (isNaN(explicitHeight)) ? measuredHeight : explicitHeight;
				if (_local3 != oldExplicitHeight){
					oldExplicitHeight = _local3;
					_local1 = true;
				};
			};
			return (_local1);
		}
		public function get automationTabularData():Object{
			if (automationDelegate){
				return (automationDelegate.automationTabularData);
			};
			return (null);
		}
		public function validateNow():void{
			UIComponentGlobals.layoutManager.validateClient(this);
		}
		public function finishPrint(_arg1:Object, _arg2:IFlexDisplayObject):void{
		}
		public function get repeaters():Array{
			return ((_repeaters) ? _repeaters.slice(0) : []);
		}
		private function dispatchMoveEvent():void{
			var _local1:MoveEvent = new MoveEvent(MoveEvent.MOVE);
			_local1.oldX = oldX;
			_local1.oldY = oldY;
			dispatchEvent(_local1);
			oldX = x;
			oldY = y;
		}
		public function drawFocus(_arg1:Boolean):void{
			var _local4:DisplayObjectContainer;
			var _local5:Class;
			if (!parent){
				return;
			};
			var _local2:DisplayObject = getFocusObject();
			var _local3:Sprite = (focusManager) ? focusManager.focusPane : null;
			if (((_arg1) && (!(preventDrawFocus)))){
				_local4 = _local3.parent;
				if (_local4 != parent){
					if (_local4){
						if ((_local4 is ISystemManager)){
							ISystemManager(_local4).focusPane = null;
						} else {
							IUIComponent(_local4).focusPane = null;
						};
					};
					if ((parent is ISystemManager)){
						ISystemManager(parent).focusPane = _local3;
					} else {
						IUIComponent(parent).focusPane = _local3;
					};
				};
				_local5 = getStyle("focusSkin");
				if (((_local2) && (!((_local2 is _local5))))){
					_local3.removeChild(_local2);
					_local2 = null;
				};
				if (!_local2){
					_local2 = new (_local5);
					_local2.name = "focus";
					_local3.addChild(_local2);
				};
				if ((_local2 is ILayoutManagerClient)){
					ILayoutManagerClient(_local2).nestLevel = nestLevel;
				};
				if ((_local2 is ISimpleStyleClient)){
					ISimpleStyleClient(_local2).styleName = this;
				};
				addEventListener(MoveEvent.MOVE, focusObj_moveHandler, true);
				addEventListener(MoveEvent.MOVE, focusObj_moveHandler);
				addEventListener(ResizeEvent.RESIZE, focusObj_resizeHandler, true);
				addEventListener(ResizeEvent.RESIZE, focusObj_resizeHandler);
				addEventListener(Event.REMOVED, focusObj_removedHandler, true);
				_local2.visible = true;
				hasFocusRect = true;
				adjustFocusRect();
			} else {
				if (hasFocusRect){
					hasFocusRect = false;
					if (_local2){
						_local2.visible = false;
						if ((_local2 is ISimpleStyleClient)){
							ISimpleStyleClient(_local2).styleName = null;
						};
					};
					removeEventListener(MoveEvent.MOVE, focusObj_moveHandler);
					removeEventListener(MoveEvent.MOVE, focusObj_moveHandler, true);
					removeEventListener(ResizeEvent.RESIZE, focusObj_resizeHandler, true);
					removeEventListener(ResizeEvent.RESIZE, focusObj_resizeHandler);
					removeEventListener(Event.REMOVED, focusObj_removedHandler, true);
				};
			};
		}
		public function get flexContextMenu():IFlexContextMenu{
			return (_flexContextMenu);
		}
		private function get indexedID():String{
			var _local1:String = id;
			var _local2:Array = instanceIndices;
			if (_local2){
				_local1 = (_local1 + (("[" + _local2.join("][")) + "]"));
			};
			return (_local1);
		}
		public function get measuredMinHeight():Number{
			return (_measuredMinHeight);
		}
		mx_internal function addingChild(_arg1:DisplayObject):void{
			if ((((_arg1 is IUIComponent)) && (!(IUIComponent(_arg1).document)))){
				IUIComponent(_arg1).document = (document) ? document : ApplicationGlobals.application;
			};
			if ((((_arg1 is UIComponent)) && ((UIComponent(_arg1).moduleFactory == null)))){
				if (moduleFactory != null){
					UIComponent(_arg1).moduleFactory = moduleFactory;
				} else {
					if ((((document is IFlexModule)) && (!((document.moduleFactory == null))))){
						UIComponent(_arg1).moduleFactory = document.moduleFactory;
					} else {
						if ((((parent is UIComponent)) && (!((UIComponent(parent).moduleFactory == null))))){
							UIComponent(_arg1).moduleFactory = UIComponent(parent).moduleFactory;
						};
					};
				};
			};
			if ((((((_arg1 is IFontContextComponent)) && ((!(_arg1) is UIComponent)))) && ((IFontContextComponent(_arg1).fontContext == null)))){
				IFontContextComponent(_arg1).fontContext = moduleFactory;
			};
			if ((_arg1 is IUIComponent)){
				IUIComponent(_arg1).parentChanged(this);
			};
			if ((_arg1 is ILayoutManagerClient)){
				ILayoutManagerClient(_arg1).nestLevel = (nestLevel + 1);
			} else {
				if ((_arg1 is IUITextField)){
					IUITextField(_arg1).nestLevel = (nestLevel + 1);
				};
			};
			if ((_arg1 is InteractiveObject)){
				if (doubleClickEnabled){
					InteractiveObject(_arg1).doubleClickEnabled = true;
				};
			};
			if ((_arg1 is IStyleClient)){
				IStyleClient(_arg1).regenerateStyleCache(true);
			} else {
				if ((((_arg1 is IUITextField)) && (IUITextField(_arg1).inheritingStyles))){
					StyleProtoChain.initTextField(IUITextField(_arg1));
				};
			};
			if ((_arg1 is ISimpleStyleClient)){
				ISimpleStyleClient(_arg1).styleChanged(null);
			};
			if ((_arg1 is IStyleClient)){
				IStyleClient(_arg1).notifyStyleChangeInChildren(null, true);
			};
			if ((_arg1 is UIComponent)){
				UIComponent(_arg1).initThemeColor();
			};
			if ((_arg1 is UIComponent)){
				UIComponent(_arg1).stylesInitialized();
			};
		}
		public function set repeaterIndices(_arg1:Array):void{
			_repeaterIndices = _arg1;
		}
		protected function initializationComplete():void{
			processedDescriptors = true;
		}
		public function set moduleFactory(_arg1:IFlexModuleFactory):void{
			var _local4:UIComponent;
			var _local2:int = numChildren;
			var _local3:int;
			while (_local3 < _local2) {
				_local4 = (getChildAt(_local3) as UIComponent);
				if (!_local4){
				} else {
					if ((((_local4.moduleFactory == null)) || ((_local4.moduleFactory == _moduleFactory)))){
						_local4.moduleFactory = _arg1;
					};
				};
				_local3++;
			};
			_moduleFactory = _arg1;
		}
		private function focusObj_removedHandler(_arg1:Event):void{
			if (_arg1.target != this){
				return;
			};
			var _local2:DisplayObject = getFocusObject();
			if (_local2){
				_local2.visible = false;
			};
		}
		mx_internal function updateCallbacks():void{
			if (invalidateDisplayListFlag){
				UIComponentGlobals.layoutManager.invalidateDisplayList(this);
			};
			if (invalidateSizeFlag){
				UIComponentGlobals.layoutManager.invalidateSize(this);
			};
			if (invalidatePropertiesFlag){
				UIComponentGlobals.layoutManager.invalidateProperties(this);
			};
			if (((systemManager) && (((_systemManager.stage) || (_systemManager.useSWFBridge()))))){
				if ((((methodQueue.length > 0)) && (!(listeningForRender)))){
					_systemManager.addEventListener(FlexEvent.RENDER, callLaterDispatcher);
					_systemManager.addEventListener(FlexEvent.ENTER_FRAME, callLaterDispatcher);
					listeningForRender = true;
				};
				if (_systemManager.stage){
					_systemManager.stage.invalidate();
				};
			};
		}
		public function set styleDeclaration(_arg1:CSSStyleDeclaration):void{
			_styleDeclaration = _arg1;
		}
		override public function set doubleClickEnabled(_arg1:Boolean):void{
			var _local2:IChildList;
			var _local4:InteractiveObject;
			super.doubleClickEnabled = _arg1;
			if ((this is IRawChildrenContainer)){
				_local2 = IRawChildrenContainer(this).rawChildren;
			} else {
				_local2 = IChildList(this);
			};
			var _local3:int;
			while (_local3 < _local2.numChildren) {
				_local4 = (_local2.getChildAt(_local3) as InteractiveObject);
				if (_local4){
					_local4.doubleClickEnabled = _arg1;
				};
				_local3++;
			};
		}
		public function prepareToPrint(_arg1:IFlexDisplayObject):Object{
			return (null);
		}
		public function get minHeight():Number{
			if (!isNaN(explicitMinHeight)){
				return (explicitMinHeight);
			};
			return (measuredMinHeight);
		}
		public function notifyStyleChangeInChildren(_arg1:String, _arg2:Boolean):void{
			var _local5:ISimpleStyleClient;
			cachedTextFormat = null;
			var _local3:int = numChildren;
			var _local4:int;
			while (_local4 < _local3) {
				_local5 = (getChildAt(_local4) as ISimpleStyleClient);
				if (_local5){
					_local5.styleChanged(_arg1);
					if ((_local5 is IStyleClient)){
						IStyleClient(_local5).notifyStyleChangeInChildren(_arg1, _arg2);
					};
				};
				_local4++;
			};
		}
		public function get contentMouseX():Number{
			return (mouseX);
		}
		public function get contentMouseY():Number{
			return (mouseY);
		}
		public function get tweeningProperties():Array{
			return (_tweeningProperties);
		}
		public function set explicitMaxWidth(_arg1:Number):void{
			if (_explicitMaxWidth == _arg1){
				return;
			};
			_explicitMaxWidth = _arg1;
			invalidateSize();
			var _local2:IInvalidating = (parent as IInvalidating);
			if (_local2){
				_local2.invalidateSize();
				_local2.invalidateDisplayList();
			};
			dispatchEvent(new Event("explicitMaxWidthChanged"));
		}
		public function set document(_arg1:Object):void{
			var _local4:IUIComponent;
			var _local2:int = numChildren;
			var _local3:int;
			while (_local3 < _local2) {
				_local4 = (getChildAt(_local3) as IUIComponent);
				if (!_local4){
				} else {
					if ((((_local4.document == _document)) || ((_local4.document == ApplicationGlobals.application)))){
						_local4.document = _arg1;
					};
				};
				_local3++;
			};
			_document = _arg1;
		}
		public function validateSize(_arg1:Boolean=false):void{
			var _local2:int;
			var _local3:DisplayObject;
			var _local4:Boolean;
			var _local5:IInvalidating;
			if (_arg1){
				_local2 = 0;
				while (_local2 < numChildren) {
					_local3 = getChildAt(_local2);
					if ((_local3 is ILayoutManagerClient)){
						(_local3 as ILayoutManagerClient).validateSize(true);
					};
					_local2++;
				};
			};
			if (invalidateSizeFlag){
				_local4 = measureSizes();
				if (((_local4) && (includeInLayout))){
					invalidateDisplayList();
					_local5 = (parent as IInvalidating);
					if (_local5){
						_local5.invalidateSize();
						_local5.invalidateDisplayList();
					};
				};
			};
		}
		public function get validationSubField():String{
			return (_validationSubField);
		}
		override public function dispatchEvent(_arg1:Event):Boolean{
			if (dispatchEventHook != null){
				dispatchEventHook(_arg1, this);
			};
			return (super.dispatchEvent(_arg1));
		}
		public function set id(_arg1:String):void{
			_id = _arg1;
		}
		private function overlay_resizeHandler(_arg1:Event):void{
			fillOverlay(overlay, overlayColor, null);
		}
		public function set updateCompletePendingFlag(_arg1:Boolean):void{
			_updateCompletePendingFlag = _arg1;
		}
		final mx_internal function get $height():Number{
			return (super.height);
		}
		protected function attachOverlay():void{
			addChild(overlay);
		}
		public function get explicitMinHeight():Number{
			return (_explicitMinHeight);
		}
		override public function set height(_arg1:Number):void{
			var _local2:IInvalidating;
			if (explicitHeight != _arg1){
				explicitHeight = _arg1;
				invalidateSize();
			};
			if (_height != _arg1){
				invalidateProperties();
				invalidateDisplayList();
				_local2 = (parent as IInvalidating);
				if (((_local2) && (includeInLayout))){
					_local2.invalidateSize();
					_local2.invalidateDisplayList();
				};
				_height = _arg1;
				dispatchEvent(new Event("heightChanged"));
			};
		}
		public function get numAutomationChildren():int{
			if (automationDelegate){
				return (automationDelegate.numAutomationChildren);
			};
			return (0);
		}
		public function get parentApplication():Object{
			var _local2:UIComponent;
			var _local1:Object = systemManager.document;
			if (_local1 == this){
				_local2 = (_local1.systemManager.parent as UIComponent);
				_local1 = (_local2) ? _local2.systemManager.document : null;
			};
			return (_local1);
		}
		public function get repeaterIndex():int{
			return ((_repeaterIndices) ? _repeaterIndices[(_repeaterIndices.length - 1)] : -1);
		}
		private function removeState(_arg1:String, _arg2:String):void{
			var _local4:Array;
			var _local5:int;
			var _local3:State = getState(_arg1);
			if (_arg1 == _arg2){
				return;
			};
			if (_local3){
				_local3.dispatchExitState();
				_local4 = _local3.overrides;
				_local5 = _local4.length;
				while (_local5) {
					_local4[(_local5 - 1)].remove(this);
					_local5--;
				};
				if (_local3.basedOn != _arg2){
					removeState(_local3.basedOn, _arg2);
				};
			};
		}
		public function setStyle(_arg1:String, _arg2):void{
			if (_arg1 == "styleName"){
				styleName = _arg2;
				return;
			};
			if (EffectManager.getEventForEffectTrigger(_arg1) != ""){
				EffectManager.setStyle(_arg1, this);
			};
			var _local3:Boolean = StyleManager.isInheritingStyle(_arg1);
			var _local4 = !((inheritingStyles == UIComponent.STYLE_UNINITIALIZED));
			var _local5 = !((getStyle(_arg1) == _arg2));
			if (!_styleDeclaration){
				_styleDeclaration = new CSSStyleDeclaration();
				_styleDeclaration.setStyle(_arg1, _arg2);
				if (_local4){
					regenerateStyleCache(_local3);
				};
			} else {
				_styleDeclaration.setStyle(_arg1, _arg2);
			};
			if (((_local4) && (_local5))){
				styleChanged(_arg1);
				notifyStyleChangeInChildren(_arg1, _local3);
			};
		}
		public function get showInAutomationHierarchy():Boolean{
			return (_showInAutomationHierarchy);
		}
		public function get systemManager():ISystemManager{
			var _local1:DisplayObject;
			var _local2:DisplayObjectContainer;
			var _local3:IUIComponent;
			if (((!(_systemManager)) || (_systemManagerDirty))){
				_local1 = root;
				if ((_systemManager is SystemManagerProxy)){
				} else {
					if (((_local1) && (!((_local1 is Stage))))){
						_systemManager = (_local1 as ISystemManager);
					} else {
						if (_local1){
							_systemManager = (Stage(_local1).getChildAt(0) as ISystemManager);
						} else {
							_local2 = parent;
							while (_local2) {
								_local3 = (_local2 as IUIComponent);
								if (_local3){
									_systemManager = _local3.systemManager;
									break;
								} else {
									if ((_local2 is ISystemManager)){
										_systemManager = (_local2 as ISystemManager);
										break;
									};
								};
								_local2 = _local2.parent;
							};
						};
					};
				};
				_systemManagerDirty = false;
			};
			return (_systemManager);
		}
		public function localToContent(_arg1:Point):Point{
			return (_arg1);
		}
		private function isBaseState(_arg1:String):Boolean{
			return (((!(_arg1)) || ((_arg1 == ""))));
		}
		public function set enabled(_arg1:Boolean):void{
			_enabled = _arg1;
			cachedTextFormat = null;
			invalidateDisplayList();
			dispatchEvent(new Event("enabledChanged"));
		}
		public function set focusEnabled(_arg1:Boolean):void{
			_focusEnabled = _arg1;
		}
		public function get minWidth():Number{
			if (!isNaN(explicitMinWidth)){
				return (explicitMinWidth);
			};
			return (measuredMinWidth);
		}
		private function setFocusLater(_arg1:Event=null):void{
			var _local2:ISystemManager = systemManager;
			if (((_local2) && (_local2.stage))){
				_local2.stage.removeEventListener(Event.ENTER_FRAME, setFocusLater);
				if (UIComponentGlobals.nextFocusObject){
					_local2.stage.focus = UIComponentGlobals.nextFocusObject;
				};
				UIComponentGlobals.nextFocusObject = null;
			};
		}
		public function get currentState():String{
			return ((_currentStateChanged) ? requestedCurrentState : _currentState);
		}
		public function initializeRepeaterArrays(_arg1:IRepeaterClient):void{
			if (((((((_arg1) && (_arg1.instanceIndices))) && (((!(_arg1.isDocument)) || (!((_arg1 == descriptor.document))))))) && (!(_instanceIndices)))){
				_instanceIndices = _arg1.instanceIndices;
				_repeaters = _arg1.repeaters;
				_repeaterIndices = _arg1.repeaterIndices;
			};
		}
		public function get baselinePosition():Number{
			if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0){
				return (NaN);
			};
			if (!validateBaselinePosition()){
				return (NaN);
			};
			var _local1:TextLineMetrics = measureText("Wj");
			if (height < ((2 + _local1.ascent) + 2)){
				return (int((height + ((_local1.ascent - height) / 2))));
			};
			return ((2 + _local1.ascent));
		}
		public function get measuredWidth():Number{
			return (_measuredWidth);
		}
		public function set instanceIndices(_arg1:Array):void{
			_instanceIndices = _arg1;
		}
		public function set cachePolicy(_arg1:String):void{
			if (_cachePolicy != _arg1){
				_cachePolicy = _arg1;
				if (_arg1 == UIComponentCachePolicy.OFF){
					cacheAsBitmap = false;
				} else {
					if (_arg1 == UIComponentCachePolicy.ON){
						cacheAsBitmap = true;
					} else {
						cacheAsBitmap = (cacheAsBitmapCount > 0);
					};
				};
			};
		}
		public function get automationValue():Array{
			if (automationDelegate){
				return (automationDelegate.automationValue);
			};
			return ([]);
		}
		private function addedHandler(_arg1:Event):void{
			var event = _arg1;
			if (event.eventPhase != EventPhase.AT_TARGET){
				return;
			};
			try {
				if ((((parent is IContainer)) && (IContainer(parent).creatingContentPane))){
					event.stopImmediatePropagation();
					return;
				};
			} catch(error:SecurityError) {
			};
		}
		public function parentChanged(_arg1:DisplayObjectContainer):void{
			if (!_arg1){
				_parent = null;
				_nestLevel = 0;
			} else {
				if ((_arg1 is IStyleClient)){
					_parent = _arg1;
				} else {
					if ((_arg1 is ISystemManager)){
						_parent = _arg1;
					} else {
						_parent = _arg1.parent;
					};
				};
			};
		}
		public function get owner():DisplayObjectContainer{
			return ((_owner) ? _owner : parent);
		}
		public function get processedDescriptors():Boolean{
			return (_processedDescriptors);
		}
		override public function addChildAt(_arg1:DisplayObject, _arg2:int):DisplayObject{
			var _local3:DisplayObjectContainer = _arg1.parent;
			if (((_local3) && (!((_local3 is Loader))))){
				_local3.removeChild(_arg1);
			};
			if (((overlayReferenceCount) && (!((_arg1 == overlay))))){
				_arg2 = Math.min(_arg2, Math.max(0, (super.numChildren - 1)));
			};
			addingChild(_arg1);
			$addChildAt(_arg1, _arg2);
			childAdded(_arg1);
			return (_arg1);
		}
		public function get maxWidth():Number{
			return ((isNaN(explicitMaxWidth)) ? DEFAULT_MAX_WIDTH : explicitMaxWidth);
		}
		override public function set alpha(_arg1:Number):void{
			super.alpha = _arg1;
			dispatchEvent(new Event("alphaChanged"));
		}
		private function removedHandler(_arg1:Event):void{
			var event = _arg1;
			if (event.eventPhase != EventPhase.AT_TARGET){
				return;
			};
			try {
				if ((((parent is IContainer)) && (IContainer(parent).creatingContentPane))){
					event.stopImmediatePropagation();
					return;
				};
			} catch(error:SecurityError) {
			};
			_systemManagerDirty = true;
		}
		public function callLater(_arg1:Function, _arg2:Array=null):void{
			methodQueue.push(new MethodQueueElement(_arg1, _arg2));
			var _local3:ISystemManager = systemManager;
			if (((_local3) && (((_local3.stage) || (_local3.useSWFBridge()))))){
				if (!listeningForRender){
					_local3.addEventListener(FlexEvent.RENDER, callLaterDispatcher);
					_local3.addEventListener(FlexEvent.ENTER_FRAME, callLaterDispatcher);
					listeningForRender = true;
				};
				if (_local3.stage){
					_local3.stage.invalidate();
				};
			};
		}
		public function get initialized():Boolean{
			return (_initialized);
		}
		private function callLaterDispatcher2(_arg1:Event):void{
			var _local6:MethodQueueElement;
			if (UIComponentGlobals.callLaterSuspendCount > 0){
				return;
			};
			var _local2:ISystemManager = systemManager;
			if (((((_local2) && (((_local2.stage) || (_local2.useSWFBridge()))))) && (listeningForRender))){
				_local2.removeEventListener(FlexEvent.RENDER, callLaterDispatcher);
				_local2.removeEventListener(FlexEvent.ENTER_FRAME, callLaterDispatcher);
				listeningForRender = false;
			};
			var _local3:Array = methodQueue;
			methodQueue = [];
			var _local4:int = _local3.length;
			var _local5:int;
			while (_local5 < _local4) {
				_local6 = MethodQueueElement(_local3[_local5]);
				_local6.method.apply(null, _local6.args);
				_local5++;
			};
		}
		public function measureHTMLText(_arg1:String):TextLineMetrics{
			return (determineTextFormatFromStyles().measureHTMLText(_arg1));
		}
		public function set descriptor(_arg1:UIComponentDescriptor):void{
			_descriptor = _arg1;
		}
		private function getState(_arg1:String):State{
			if (((!(states)) || (isBaseState(_arg1)))){
				return (null);
			};
			var _local2:int;
			while (_local2 < states.length) {
				if (states[_local2].name == _arg1){
					return (states[_local2]);
				};
				_local2++;
			};
			var _local3:String = resourceManager.getString("core", "stateUndefined", [_arg1]);
			throw (new ArgumentError(_local3));
		}
		public function validateProperties():void{
			if (invalidatePropertiesFlag){
				commitProperties();
				invalidatePropertiesFlag = false;
			};
		}
		mx_internal function get documentDescriptor():UIComponentDescriptor{
			return (_documentDescriptor);
		}
		public function set includeInLayout(_arg1:Boolean):void{
			var _local2:IInvalidating;
			if (_includeInLayout != _arg1){
				_includeInLayout = _arg1;
				_local2 = (parent as IInvalidating);
				if (_local2){
					_local2.invalidateSize();
					_local2.invalidateDisplayList();
				};
				dispatchEvent(new Event("includeInLayoutChanged"));
			};
		}
		public function getClassStyleDeclarations():Array{
			var myApplicationDomain:ApplicationDomain;
			var cache:Array;
			var myRoot:DisplayObject;
			var s:CSSStyleDeclaration;
			var factory:IFlexModuleFactory = ModuleManager.getAssociatedFactory(this);
			if (factory != null){
				myApplicationDomain = ApplicationDomain(factory.info()["currentDomain"]);
			} else {
				myRoot = SystemManager.getSWFRoot(this);
				if (!myRoot){
					return ([]);
				};
				myApplicationDomain = myRoot.loaderInfo.applicationDomain;
			};
			var className:String = getQualifiedClassName(this);
			className = className.replace("::", ".");
			cache = StyleManager.typeSelectorCache[className];
			if (cache){
				return (cache);
			};
			var decls:Array = [];
			var classNames:Array = [];
			var caches:Array = [];
			var declcache:Array = [];
			while (((((!((className == null))) && (!((className == "mx.core.UIComponent"))))) && (!((className == "mx.core.UITextField"))))) {
				cache = StyleManager.typeSelectorCache[className];
				if (cache){
					decls = decls.concat(cache);
					break;
				};
				s = StyleManager.getStyleDeclaration(className);
				if (s){
					decls.unshift(s);
					classNames.push(className);
					caches.push(classNames);
					declcache.push(decls);
					decls = [];
					classNames = [];
				} else {
					classNames.push(className);
				};
				try {
					className = getQualifiedSuperclassName(myApplicationDomain.getDefinition(className));
					className = className.replace("::", ".");
				} catch(e:ReferenceError) {
					className = null;
				};
			};
			caches.push(classNames);
			declcache.push(decls);
			decls = [];
			while (caches.length) {
				classNames = caches.pop();
				decls = decls.concat(declcache.pop());
				while (classNames.length) {
					StyleManager.typeSelectorCache[classNames.pop()] = decls;
				};
			};
			return (decls);
		}
		public function set measuredMinWidth(_arg1:Number):void{
			_measuredMinWidth = _arg1;
		}
		private function initializeState(_arg1:String):void{
			var _local2:State = getState(_arg1);
			while (_local2) {
				_local2.initialize();
				_local2 = getState(_local2.basedOn);
			};
		}
		mx_internal function initProtoChain():void{
			var _local1:CSSStyleDeclaration;
			var _local7:Object;
			var _local8:CSSStyleDeclaration;
			if (styleName){
				if ((styleName is CSSStyleDeclaration)){
					_local1 = CSSStyleDeclaration(styleName);
				} else {
					if ((((styleName is IFlexDisplayObject)) || ((styleName is IStyleClient)))){
						StyleProtoChain.initProtoChainForUIComponentStyleName(this);
						return;
					};
					if ((styleName is String)){
						_local1 = StyleManager.getStyleDeclaration(("." + styleName));
					};
				};
			};
			var _local2:Object = StyleManager.stylesRoot;
			if (((_local2) && (_local2.effects))){
				registerEffects(_local2.effects);
			};
			var _local3:IStyleClient = (parent as IStyleClient);
			if (_local3){
				_local7 = _local3.inheritingStyles;
				if (_local7 == UIComponent.STYLE_UNINITIALIZED){
					_local7 = _local2;
				};
			} else {
				if (isPopUp){
					if ((((((FlexVersion.compatibilityVersion >= FlexVersion.VERSION_3_0)) && (_owner))) && ((_owner is IStyleClient)))){
						_local7 = IStyleClient(_owner).inheritingStyles;
					} else {
						_local7 = ApplicationGlobals.application.inheritingStyles;
					};
				} else {
					_local7 = StyleManager.stylesRoot;
				};
			};
			var _local4:Array = getClassStyleDeclarations();
			var _local5:int = _local4.length;
			var _local6:int;
			while (_local6 < _local5) {
				_local8 = _local4[_local6];
				_local7 = _local8.addStyleToProtoChain(_local7, this);
				_local2 = _local8.addStyleToProtoChain(_local2, this);
				if (_local8.effects){
					registerEffects(_local8.effects);
				};
				_local6++;
			};
			if (_local1){
				_local7 = _local1.addStyleToProtoChain(_local7, this);
				_local2 = _local1.addStyleToProtoChain(_local2, this);
				if (_local1.effects){
					registerEffects(_local1.effects);
				};
			};
			inheritingStyles = (_styleDeclaration) ? _styleDeclaration.addStyleToProtoChain(_local7, this) : _local7;
			nonInheritingStyles = (_styleDeclaration) ? _styleDeclaration.addStyleToProtoChain(_local2, this) : _local2;
		}
		public function get repeaterIndices():Array{
			return ((_repeaterIndices) ? _repeaterIndices.slice() : []);
		}
		override public function removeChild(_arg1:DisplayObject):DisplayObject{
			removingChild(_arg1);
			$removeChild(_arg1);
			childRemoved(_arg1);
			return (_arg1);
		}
		private function focusObj_moveHandler(_arg1:MoveEvent):void{
			adjustFocusRect();
		}
		public function get styleDeclaration():CSSStyleDeclaration{
			return (_styleDeclaration);
		}
		override public function get doubleClickEnabled():Boolean{
			return (super.doubleClickEnabled);
		}
		public function contentToLocal(_arg1:Point):Point{
			return (_arg1);
		}
		private function creationCompleteHandler(_arg1:FlexEvent):void{
			if (_currentStateChanged){
				_currentStateChanged = false;
				commitCurrentState();
				validateNow();
			};
			removeEventListener(FlexEvent.CREATION_COMPLETE, creationCompleteHandler);
		}
		public function set measuredHeight(_arg1:Number):void{
			_measuredHeight = _arg1;
		}
		protected function createChildren():void{
		}
		public function get activeEffects():Array{
			return (_effectsStarted);
		}
		override public function setChildIndex(_arg1:DisplayObject, _arg2:int):void{
			if (((overlayReferenceCount) && (!((_arg1 == overlay))))){
				_arg2 = Math.min(_arg2, Math.max(0, (super.numChildren - 2)));
			};
			super.setChildIndex(_arg1, _arg2);
		}
		public function regenerateStyleCache(_arg1:Boolean):void{
			var _local5:DisplayObject;
			initProtoChain();
			var _local2:IChildList = ((this is IRawChildrenContainer)) ? IRawChildrenContainer(this).rawChildren : IChildList(this);
			var _local3:int = _local2.numChildren;
			var _local4:int;
			while (_local4 < _local3) {
				_local5 = _local2.getChildAt(_local4);
				if ((_local5 is IStyleClient)){
					if (IStyleClient(_local5).inheritingStyles != UIComponent.STYLE_UNINITIALIZED){
						IStyleClient(_local5).regenerateStyleCache(_arg1);
					};
				} else {
					if ((_local5 is IUITextField)){
						if (IUITextField(_local5).inheritingStyles){
							StyleProtoChain.initTextField(IUITextField(_local5));
						};
					};
				};
				_local4++;
			};
		}
		public function get updateCompletePendingFlag():Boolean{
			return (_updateCompletePendingFlag);
		}
		protected function focusOutHandler(_arg1:FocusEvent):void{
			if (isOurFocus(DisplayObject(_arg1.target))){
				drawFocus(false);
			};
		}
		public function getFocus():InteractiveObject{
			var _local1:ISystemManager = systemManager;
			if (!_local1){
				return (null);
			};
			if (UIComponentGlobals.nextFocusObject){
				return (UIComponentGlobals.nextFocusObject);
			};
			return (_local1.stage.focus);
		}
		public function endEffectsStarted():void{
			var _local1:int = _effectsStarted.length;
			var _local2:int;
			while (_local2 < _local1) {
				_effectsStarted[_local2].end();
				_local2++;
			};
		}
		protected function get unscaledHeight():Number{
			return ((height / Math.abs(scaleY)));
		}
		public function get enabled():Boolean{
			return (_enabled);
		}
		public function get focusEnabled():Boolean{
			return (_focusEnabled);
		}
		override public function set cacheAsBitmap(_arg1:Boolean):void{
			super.cacheAsBitmap = _arg1;
			cacheAsBitmapCount = (_arg1) ? 1 : 0;
		}
		mx_internal function removeOverlay():void{
			if ((((((overlayReferenceCount > 0)) && ((--overlayReferenceCount == 0)))) && (overlay))){
				removeEventListener("resize", overlay_resizeHandler);
				if (super.getChildByName("overlay")){
					$removeChild(overlay);
				};
				overlay = null;
			};
		}
		public function set cacheHeuristic(_arg1:Boolean):void{
			if (_cachePolicy == UIComponentCachePolicy.AUTO){
				if (_arg1){
					cacheAsBitmapCount++;
				} else {
					if (cacheAsBitmapCount != 0){
						cacheAsBitmapCount--;
					};
				};
				super.cacheAsBitmap = !((cacheAsBitmapCount == 0));
			};
		}
		public function get cachePolicy():String{
			return (_cachePolicy);
		}
		public function set maxHeight(_arg1:Number):void{
			if (explicitMaxHeight == _arg1){
				return;
			};
			explicitMaxHeight = _arg1;
		}
		public function getConstraintValue(_arg1:String){
			return (getStyle(_arg1));
		}
		public function set focusManager(_arg1:IFocusManager):void{
			_focusManager = _arg1;
		}
		public function clearStyle(_arg1:String):void{
			setStyle(_arg1, undefined);
		}
		public function get descriptor():UIComponentDescriptor{
			return (_descriptor);
		}
		public function set nonInheritingStyles(_arg1:Object):void{
			_nonInheritingStyles = _arg1;
		}
		public function get cursorManager():ICursorManager{
			var _local2:ICursorManager;
			var _local1:DisplayObject = parent;
			while (_local1) {
				if ((((_local1 is IUIComponent)) && (("cursorManager" in _local1)))){
					_local2 = _local1["cursorManager"];
					return (_local2);
				};
				_local1 = _local1.parent;
			};
			return (CursorManager.getInstance());
		}
		public function set automationDelegate(_arg1:Object):void{
			_automationDelegate = (_arg1 as IAutomationObject);
		}
		public function get measuredMinWidth():Number{
			return (_measuredMinWidth);
		}
		public function createReferenceOnParentDocument(_arg1:IFlexDisplayObject):void{
			var _local2:Array;
			var _local3:Object;
			var _local4:int;
			var _local5:int;
			var _local6:PropertyChangeEvent;
			var _local7:Object;
			if (((id) && (!((id == ""))))){
				_local2 = _instanceIndices;
				if (!_local2){
					_arg1[id] = this;
				} else {
					_local3 = _arg1[id];
					if (!(_local3 is Array)){
						_local3 = (_arg1[id] = []);
					};
					_local4 = _local2.length;
					_local5 = 0;
					while (_local5 < (_local4 - 1)) {
						_local7 = _local3[_local2[_local5]];
						if (!(_local7 is Array)){
							_local7 = (_local3[_local2[_local5]] = []);
						};
						_local3 = _local7;
						_local5++;
					};
					_local3[_local2[(_local4 - 1)]] = this;
					_local6 = PropertyChangeEvent.createUpdateEvent(_arg1, id, _arg1[id], _arg1[id]);
					_arg1.dispatchEvent(_local6);
				};
			};
		}
		public function get repeater():IRepeater{
			return ((_repeaters) ? _repeaters[(_repeaters.length - 1)] : null);
		}
		public function set isPopUp(_arg1:Boolean):void{
			_isPopUp = _arg1;
		}
		public function get measuredHeight():Number{
			return (_measuredHeight);
		}
		public function initialize():void{
			if (initialized){
				return;
			};
			dispatchEvent(new FlexEvent(FlexEvent.PREINITIALIZE));
			createChildren();
			childrenCreated();
			initializeAccessibility();
			initializationComplete();
		}
		override public function set width(_arg1:Number):void{
			var _local2:IInvalidating;
			if (explicitWidth != _arg1){
				explicitWidth = _arg1;
				invalidateSize();
			};
			if (_width != _arg1){
				invalidateProperties();
				invalidateDisplayList();
				_local2 = (parent as IInvalidating);
				if (((_local2) && (includeInLayout))){
					_local2.invalidateSize();
					_local2.invalidateDisplayList();
				};
				_width = _arg1;
				dispatchEvent(new Event("widthChanged"));
			};
		}
		public function set percentHeight(_arg1:Number):void{
			if (_percentHeight == _arg1){
				return;
			};
			if (!isNaN(_arg1)){
				_explicitHeight = NaN;
			};
			_percentHeight = _arg1;
			var _local2:IInvalidating = (parent as IInvalidating);
			if (_local2){
				_local2.invalidateSize();
				_local2.invalidateDisplayList();
			};
		}
		final mx_internal function set $visible(_arg1:Boolean):void{
			super.visible = _arg1;
		}
		private function findCommonBaseState(_arg1:String, _arg2:String):String{
			var _local3:State = getState(_arg1);
			var _local4:State = getState(_arg2);
			if (((!(_local3)) || (!(_local4)))){
				return ("");
			};
			if (((isBaseState(_local3.basedOn)) && (isBaseState(_local4.basedOn)))){
				return ("");
			};
			var _local5:Array = getBaseStates(_local3);
			var _local6:Array = getBaseStates(_local4);
			var _local7 = "";
			while (_local5[(_local5.length - 1)] == _local6[(_local6.length - 1)]) {
				_local7 = _local5.pop();
				_local6.pop();
				if (((!(_local5.length)) || (!(_local6.length)))){
					break;
				};
			};
			if (((_local5.length) && ((_local5[(_local5.length - 1)] == _local4.name)))){
				_local7 = _local4.name;
			} else {
				if (((_local6.length) && ((_local6[(_local6.length - 1)] == _local3.name)))){
					_local7 = _local3.name;
				};
			};
			return (_local7);
		}
		mx_internal function childRemoved(_arg1:DisplayObject):void{
			if ((_arg1 is IUIComponent)){
				if (IUIComponent(_arg1).document != _arg1){
					IUIComponent(_arg1).document = null;
				};
				IUIComponent(_arg1).parentChanged(null);
			};
		}
		final mx_internal function $removeChildAt(_arg1:int):DisplayObject{
			return (super.removeChildAt(_arg1));
		}
		public function get maxHeight():Number{
			return ((isNaN(explicitMaxHeight)) ? DEFAULT_MAX_HEIGHT : explicitMaxHeight);
		}
		protected function initializeAccessibility():void{
			if (UIComponent.createAccessibilityImplementation != null){
				UIComponent.createAccessibilityImplementation(this);
			};
		}
		public function set explicitMaxHeight(_arg1:Number):void{
			if (_explicitMaxHeight == _arg1){
				return;
			};
			_explicitMaxHeight = _arg1;
			invalidateSize();
			var _local2:IInvalidating = (parent as IInvalidating);
			if (_local2){
				_local2.invalidateSize();
				_local2.invalidateDisplayList();
			};
			dispatchEvent(new Event("explicitMaxHeightChanged"));
		}
		public function get focusManager():IFocusManager{
			if (_focusManager){
				return (_focusManager);
			};
			var _local1:DisplayObject = parent;
			while (_local1) {
				if ((_local1 is IFocusManagerContainer)){
					return (IFocusManagerContainer(_local1).focusManager);
				};
				_local1 = _local1.parent;
			};
			return (null);
		}
		public function set styleName(_arg1:Object):void{
			if (_styleName === _arg1){
				return;
			};
			_styleName = _arg1;
			if (inheritingStyles == UIComponent.STYLE_UNINITIALIZED){
				return;
			};
			regenerateStyleCache(true);
			initThemeColor();
			styleChanged("styleName");
			notifyStyleChangeInChildren("styleName", true);
		}
		public function get automationDelegate():Object{
			return (_automationDelegate);
		}
		protected function get resourceManager():IResourceManager{
			return (_resourceManager);
		}
		mx_internal function validateBaselinePosition():Boolean{
			var _local1:Number;
			var _local2:Number;
			if (!parent){
				return (false);
			};
			if ((((width == 0)) && ((height == 0)))){
				validateNow();
				_local1 = getExplicitOrMeasuredWidth();
				_local2 = getExplicitOrMeasuredHeight();
				setActualSize(_local1, _local2);
			};
			validateNow();
			return (true);
		}
		mx_internal function cancelAllCallLaters():void{
			var _local1:ISystemManager = systemManager;
			if (((_local1) && (((_local1.stage) || (_local1.useSWFBridge()))))){
				if (listeningForRender){
					_local1.removeEventListener(FlexEvent.RENDER, callLaterDispatcher);
					_local1.removeEventListener(FlexEvent.ENTER_FRAME, callLaterDispatcher);
					listeningForRender = false;
				};
			};
			methodQueue.splice(0);
		}
		private function updateCompleteHandler(_arg1:FlexEvent):void{
			UIComponentGlobals.layoutManager.removeEventListener(FlexEvent.UPDATE_COMPLETE, updateCompleteHandler);
			processEffectFinished(_endingEffectInstances);
			_endingEffectInstances = [];
		}
		public function styleChanged(_arg1:String):void{
			if ((((this is IFontContextComponent)) && (hasFontContextChanged()))){
				invalidateProperties();
			};
			if (((((!(_arg1)) || ((_arg1 == "styleName")))) || (StyleManager.isSizeInvalidatingStyle(_arg1)))){
				invalidateSize();
			};
			if (((((!(_arg1)) || ((_arg1 == "styleName")))) || ((_arg1 == "themeColor")))){
				initThemeColor();
			};
			invalidateDisplayList();
			if ((parent is IInvalidating)){
				if (StyleManager.isParentSizeInvalidatingStyle(_arg1)){
					IInvalidating(parent).invalidateSize();
				};
				if (StyleManager.isParentDisplayListInvalidatingStyle(_arg1)){
					IInvalidating(parent).invalidateDisplayList();
				};
			};
		}
		final mx_internal function get $visible():Boolean{
			return (super.visible);
		}
		public function drawRoundRect(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null, _arg6:Object=null, _arg7:Object=null, _arg8:Object=null, _arg9:String=null, _arg10:Array=null, _arg11:Object=null):void{
			var _local13:Number;
			var _local14:Array;
			var _local15:Matrix;
			var _local16:Object;
			var _local12:Graphics = graphics;
			if (((!(_arg3)) || (!(_arg4)))){
				return;
			};
			if (_arg6 !== null){
				if ((_arg6 is Array)){
					if ((_arg7 is Array)){
						_local14 = (_arg7 as Array);
					} else {
						_local14 = [_arg7, _arg7];
					};
					if (!_arg10){
						_arg10 = [0, 0xFF];
					};
					_local15 = null;
					if (_arg8){
						if ((_arg8 is Matrix)){
							_local15 = Matrix(_arg8);
						} else {
							_local15 = new Matrix();
							if ((_arg8 is Number)){
								_local15.createGradientBox(_arg3, _arg4, ((Number(_arg8) * Math.PI) / 180), _arg1, _arg2);
							} else {
								_local15.createGradientBox(_arg8.w, _arg8.h, _arg8.r, _arg8.x, _arg8.y);
							};
						};
					};
					if (_arg9 == GradientType.RADIAL){
						_local12.beginGradientFill(GradientType.RADIAL, (_arg6 as Array), _local14, _arg10, _local15);
					} else {
						_local12.beginGradientFill(GradientType.LINEAR, (_arg6 as Array), _local14, _arg10, _local15);
					};
				} else {
					_local12.beginFill(Number(_arg6), Number(_arg7));
				};
			};
			if (!_arg5){
				_local12.drawRect(_arg1, _arg2, _arg3, _arg4);
			} else {
				if ((_arg5 is Number)){
					_local13 = (Number(_arg5) * 2);
					_local12.drawRoundRect(_arg1, _arg2, _arg3, _arg4, _local13, _local13);
				} else {
					GraphicsUtil.drawRoundRectComplex(_local12, _arg1, _arg2, _arg3, _arg4, _arg5.tl, _arg5.tr, _arg5.bl, _arg5.br);
				};
			};
			if (_arg11){
				_local16 = _arg11.r;
				if ((_local16 is Number)){
					_local13 = (Number(_local16) * 2);
					_local12.drawRoundRect(_arg11.x, _arg11.y, _arg11.w, _arg11.h, _local13, _local13);
				} else {
					GraphicsUtil.drawRoundRectComplex(_local12, _arg11.x, _arg11.y, _arg11.w, _arg11.h, _local16.tl, _local16.tr, _local16.bl, _local16.br);
				};
			};
			if (_arg6 !== null){
				_local12.endFill();
			};
		}
		public function move(_arg1:Number, _arg2:Number):void{
			var _local3:Boolean;
			if (_arg1 != super.x){
				super.x = _arg1;
				dispatchEvent(new Event("xChanged"));
				_local3 = true;
			};
			if (_arg2 != super.y){
				super.y = _arg2;
				dispatchEvent(new Event("yChanged"));
				_local3 = true;
			};
			if (_local3){
				dispatchMoveEvent();
			};
		}
		public function set toolTip(_arg1:String):void{
			var _local2:String = _toolTip;
			_toolTip = _arg1;
			ToolTipManager.registerToolTip(this, _local2, _arg1);
			dispatchEvent(new Event("toolTipChanged"));
		}
		public function set repeaters(_arg1:Array):void{
			_repeaters = _arg1;
		}
		public function get explicitMaxHeight():Number{
			return (_explicitMaxHeight);
		}
		public function measureText(_arg1:String):TextLineMetrics{
			return (determineTextFormatFromStyles().measureText(_arg1));
		}
		public function get styleName():Object{
			return (_styleName);
		}
		protected function createInModuleContext(_arg1:IFlexModuleFactory, _arg2:String):Object{
			var _local3:Object;
			if (_arg1){
				_local3 = _arg1.create(_arg2);
			};
			return (_local3);
		}
		public function get parentDocument():Object{
			var _local1:IUIComponent;
			var _local2:ISystemManager;
			if (document == this){
				_local1 = (parent as IUIComponent);
				if (_local1){
					return (_local1.document);
				};
				_local2 = (parent as ISystemManager);
				if (_local2){
					return (_local2.document);
				};
				return (null);
				//unresolved jump
			};
			return (document);
		}
		protected function childrenCreated():void{
			invalidateProperties();
			invalidateSize();
			invalidateDisplayList();
		}
		public function set flexContextMenu(_arg1:IFlexContextMenu):void{
			if (_flexContextMenu){
				_flexContextMenu.unsetContextMenu(this);
			};
			_flexContextMenu = _arg1;
			if (_arg1 != null){
				_flexContextMenu.setContextMenu(this);
			};
		}
		public function set explicitWidth(_arg1:Number):void{
			if (_explicitWidth == _arg1){
				return;
			};
			if (!isNaN(_arg1)){
				_percentWidth = NaN;
			};
			_explicitWidth = _arg1;
			invalidateSize();
			var _local2:IInvalidating = (parent as IInvalidating);
			if (((_local2) && (includeInLayout))){
				_local2.invalidateSize();
				_local2.invalidateDisplayList();
			};
			dispatchEvent(new Event("explicitWidthChanged"));
		}
		private function setBorderColorForErrorString():void{
			if (((!(_errorString)) || ((_errorString.length == 0)))){
				if (!isNaN(origBorderColor)){
					setStyle("borderColor", origBorderColor);
					saveBorderColor = true;
				};
			} else {
				if (saveBorderColor){
					saveBorderColor = false;
					origBorderColor = getStyle("borderColor");
				};
				setStyle("borderColor", getStyle("errorColor"));
			};
			styleChanged("themeColor");
			var _local1:IFocusManager = focusManager;
			var _local2:DisplayObject = (_local1) ? DisplayObject(_local1.getFocus()) : null;
			if (((((_local1) && (_local1.showFocusIndicator))) && ((_local2 == this)))){
				drawFocus(true);
			};
		}
		public function get explicitWidth():Number{
			return (_explicitWidth);
		}
		public function invalidateSize():void{
			if (!invalidateSizeFlag){
				invalidateSizeFlag = true;
				if (((parent) && (UIComponentGlobals.layoutManager))){
					UIComponentGlobals.layoutManager.invalidateSize(this);
				};
			};
		}
		public function set measuredMinHeight(_arg1:Number):void{
			_measuredMinHeight = _arg1;
		}
		protected function updateDisplayList(_arg1:Number, _arg2:Number):void{
		}
		override public function set filters(_arg1:Array):void{
			var _local2:int;
			var _local3:int;
			var _local4:IEventDispatcher;
			if (_filters){
				_local2 = _filters.length;
				_local3 = 0;
				while (_local3 < _local2) {
					_local4 = (_filters[_local3] as IEventDispatcher);
					if (_local4){
						_local4.removeEventListener("change", filterChangeHandler);
					};
					_local3++;
				};
			};
			_filters = _arg1;
			if (_filters){
				_local2 = _filters.length;
				_local3 = 0;
				while (_local3 < _local2) {
					_local4 = (_filters[_local3] as IEventDispatcher);
					if (_local4){
						_local4.addEventListener("change", filterChangeHandler);
					};
					_local3++;
				};
			};
			super.filters = _filters;
		}

		private static function get embeddedFontRegistry():IEmbeddedFontRegistry{
			if (!_embeddedFontRegistry){
				_embeddedFontRegistry = IEmbeddedFontRegistry(Singleton.getInstance("mx.core::IEmbeddedFontRegistry"));
			};
			return (_embeddedFontRegistry);
		}
		public static function resumeBackgroundProcessing():void{
			var _local1:ISystemManager;
			if (UIComponentGlobals.callLaterSuspendCount > 0){
				UIComponentGlobals.callLaterSuspendCount--;
				if (UIComponentGlobals.callLaterSuspendCount == 0){
					_local1 = SystemManagerGlobals.topLevelSystemManagers[0];
					if (((_local1) && (_local1.stage))){
						_local1.stage.invalidate();
					};
				};
			};
		}
		public static function suspendBackgroundProcessing():void{
			UIComponentGlobals.callLaterSuspendCount++;
		}

	}
}//package mx.core 

class MethodQueueElement {

	public var method:Function;
	public var args:Array;

	private function MethodQueueElement(_arg1:Function, _arg2:Array=null){
		this.method = _arg1;
		this.args = _arg2;
	}
}

****************

//UIComponentCachePolicy (mx.core.UIComponentCachePolicy)
package mx.core {

	public final class UIComponentCachePolicy {

		public static const AUTO:String = "auto";
		public static const ON:String = "on";
		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const OFF:String = "off";

	}
}//package mx.core 

****************

//UIComponentDescriptor (mx.core.UIComponentDescriptor)
package mx.core {

	public class UIComponentDescriptor extends ComponentDescriptor {

		mx_internal var instanceIndices:Array;
		public var stylesFactory:Function;
		public var effects:Array;
		mx_internal var repeaters:Array;
		mx_internal var repeaterIndices:Array;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function UIComponentDescriptor(_arg1:Object){
			super(_arg1);
		}
		override public function toString():String{
			return (("UIComponentDescriptor_" + id));
		}

	}
}//package mx.core 

****************

//UIComponentGlobals (mx.core.UIComponentGlobals)
package mx.core {
	import flash.display.*;
	import mx.managers.*;
	import flash.geom.*;

	public class UIComponentGlobals {

		mx_internal static var callLaterSuspendCount:int = 0;
		mx_internal static var layoutManager:ILayoutManager;
		mx_internal static var nextFocusObject:InteractiveObject;
		mx_internal static var designTime:Boolean = false;
		mx_internal static var tempMatrix:Matrix = new Matrix();
		mx_internal static var callLaterDispatcherCount:int = 0;
		private static var _catchCallLaterExceptions:Boolean = false;

		public static function set catchCallLaterExceptions(_arg1:Boolean):void{
			_catchCallLaterExceptions = _arg1;
		}
		public static function get designMode():Boolean{
			return (designTime);
		}
		public static function set designMode(_arg1:Boolean):void{
			designTime = _arg1;
		}
		public static function get catchCallLaterExceptions():Boolean{
			return (_catchCallLaterExceptions);
		}

	}
}//package mx.core 

****************

//UITextField (mx.core.UITextField)
package mx.core {
	import mx.automation.*;
	import flash.events.*;
	import flash.display.*;
	import mx.managers.*;
	import mx.resources.*;
	import mx.styles.*;
	import flash.text.*;
	import flash.utils.*;
	import mx.utils.*;

	public class UITextField extends FlexTextField implements IAutomationObject, IIMESupport, IFlexModule, IInvalidating, ISimpleStyleClient, IToolTipManagerClient, IUITextField {

		private var _enabled:Boolean;// = true
		private var untruncatedText:String;
		private var cachedEmbeddedFont:EmbeddedFont;// = null
		private var cachedTextFormat:TextFormat;
		private var _automationDelegate:IAutomationObject;
		private var _automationName:String;
		private var _styleName:Object;
		private var _document:Object;
		mx_internal var _toolTip:String;
		private var _nestLevel:int;// = 0
		private var _explicitHeight:Number;
		private var _moduleFactory:IFlexModuleFactory;
		private var _initialized:Boolean;// = false
		private var _nonInheritingStyles:Object;
		private var _inheritingStyles:Object;
		private var _includeInLayout:Boolean;// = true
		private var invalidateDisplayListFlag:Boolean;// = true
		mx_internal var explicitColor:uint;// = 4294967295
		private var _processedDescriptors:Boolean;// = true
		private var _updateCompletePendingFlag:Boolean;// = false
		private var explicitHTMLText:String;// = null
		mx_internal var _parent:DisplayObjectContainer;
		private var _imeMode:String;// = null
		private var resourceManager:IResourceManager;
		mx_internal var styleChangedFlag:Boolean;// = true
		private var _ignorePadding:Boolean;// = true
		private var _owner:DisplayObjectContainer;
		private var _explicitWidth:Number;

		mx_internal static const TEXT_WIDTH_PADDING:int = 5;
		mx_internal static const TEXT_HEIGHT_PADDING:int = 4;
		mx_internal static const VERSION:String = "3.5.0.12683";

		private static var truncationIndicatorResource:String;
		private static var _embeddedFontRegistry:IEmbeddedFontRegistry;
		mx_internal static var debuggingBorders:Boolean = false;

		public function UITextField(){
			resourceManager = ResourceManager.getInstance();
			_inheritingStyles = UIComponent.STYLE_UNINITIALIZED;
			_nonInheritingStyles = UIComponent.STYLE_UNINITIALIZED;
			super();
			super.text = "";
			focusRect = false;
			selectable = false;
			tabEnabled = false;
			if (debuggingBorders){
				border = true;
			};
			if (!truncationIndicatorResource){
				truncationIndicatorResource = resourceManager.getString("core", "truncationIndicator");
			};
			addEventListener(Event.CHANGE, changeHandler);
			addEventListener("textFieldStyleChange", textFieldStyleChangeHandler);
			resourceManager.addEventListener(Event.CHANGE, resourceManager_changeHandler, false, 0, true);
		}
		public function set imeMode(_arg1:String):void{
			_imeMode = _arg1;
		}
		public function get nestLevel():int{
			return (_nestLevel);
		}
		private function textFieldStyleChangeHandler(_arg1:Event):void{
			if (explicitHTMLText != null){
				super.htmlText = explicitHTMLText;
			};
		}
		public function truncateToFit(_arg1:String=null):Boolean{
			var _local4:String;
			if (!_arg1){
				_arg1 = truncationIndicatorResource;
			};
			validateNow();
			var _local2:String = super.text;
			untruncatedText = _local2;
			var _local3:Number = width;
			if (((!((_local2 == ""))) && (((textWidth + TEXT_WIDTH_PADDING) > (_local3 + 1E-14))))){
				var _local5 = _local2;
				super.text = _local5;
				_local4 = _local5;
				_local2.slice(0, Math.floor(((_local3 / (textWidth + TEXT_WIDTH_PADDING)) * _local2.length)));
				while ((((_local4.length > 1)) && (((textWidth + TEXT_WIDTH_PADDING) > _local3)))) {
					_local4 = _local4.slice(0, -1);
					super.text = (_local4 + _arg1);
				};
				return (true);
			};
			return (false);
		}
		public function set nestLevel(_arg1:int):void{
			if ((((_arg1 > 1)) && (!((_nestLevel == _arg1))))){
				_nestLevel = _arg1;
				StyleProtoChain.initTextField(this);
				styleChangedFlag = true;
				validateNow();
			};
		}
		public function get minHeight():Number{
			return (0);
		}
		public function getExplicitOrMeasuredHeight():Number{
			return ((isNaN(explicitHeight)) ? measuredHeight : explicitHeight);
		}
		public function getStyle(_arg1:String){
			if (StyleManager.inheritingStyles[_arg1]){
				return ((inheritingStyles) ? inheritingStyles[_arg1] : IStyleClient(parent).getStyle(_arg1));
				//unresolved jump
			};
			return ((nonInheritingStyles) ? nonInheritingStyles[_arg1] : IStyleClient(parent).getStyle(_arg1));
		}
		public function get className():String{
			var _local1:String = getQualifiedClassName(this);
			var _local2:int = _local1.indexOf("::");
			if (_local2 != -1){
				_local1 = _local1.substr((_local2 + 2));
			};
			return (_local1);
		}
		public function setColor(_arg1:uint):void{
			explicitColor = _arg1;
			styleChangedFlag = true;
			invalidateDisplayListFlag = true;
			validateNow();
		}
		override public function replaceText(_arg1:int, _arg2:int, _arg3:String):void{
			super.replaceText(_arg1, _arg2, _arg3);
			dispatchEvent(new Event("textReplace"));
		}
		private function creatingSystemManager():ISystemManager{
			return ((((!((moduleFactory == null))) && ((moduleFactory is ISystemManager)))) ? ISystemManager(moduleFactory) : systemManager);
		}
		public function set document(_arg1:Object):void{
			_document = _arg1;
		}
		public function get automationName():String{
			if (_automationName){
				return (_automationName);
			};
			if (automationDelegate){
				return (automationDelegate.automationName);
			};
			return ("");
		}
		public function get explicitMinHeight():Number{
			return (NaN);
		}
		public function get focusPane():Sprite{
			return (null);
		}
		public function getTextStyles():TextFormat{
			var _local1:TextFormat = new TextFormat();
			_local1.align = getStyle("textAlign");
			_local1.bold = (getStyle("fontWeight") == "bold");
			if (enabled){
				if (explicitColor == StyleManager.NOT_A_COLOR){
					_local1.color = getStyle("color");
				} else {
					_local1.color = explicitColor;
				};
			} else {
				_local1.color = getStyle("disabledColor");
			};
			_local1.font = StringUtil.trimArrayElements(getStyle("fontFamily"), ",");
			_local1.indent = getStyle("textIndent");
			_local1.italic = (getStyle("fontStyle") == "italic");
			_local1.kerning = getStyle("kerning");
			_local1.leading = getStyle("leading");
			_local1.leftMargin = (ignorePadding) ? 0 : getStyle("paddingLeft");
			_local1.letterSpacing = getStyle("letterSpacing");
			_local1.rightMargin = (ignorePadding) ? 0 : getStyle("paddingRight");
			_local1.size = getStyle("fontSize");
			_local1.underline = (getStyle("textDecoration") == "underline");
			cachedTextFormat = _local1;
			return (_local1);
		}
		override public function set text(_arg1:String):void{
			if (!_arg1){
				_arg1 = "";
			};
			if (((!(isHTML)) && ((super.text == _arg1)))){
				return;
			};
			super.text = _arg1;
			explicitHTMLText = null;
			if (invalidateDisplayListFlag){
				validateNow();
			};
		}
		public function getExplicitOrMeasuredWidth():Number{
			return ((isNaN(explicitWidth)) ? measuredWidth : explicitWidth);
		}
		public function get showInAutomationHierarchy():Boolean{
			return (true);
		}
		public function set automationName(_arg1:String):void{
			_automationName = _arg1;
		}
		public function get systemManager():ISystemManager{
			var _local2:IUIComponent;
			var _local1:DisplayObject = parent;
			while (_local1) {
				_local2 = (_local1 as IUIComponent);
				if (_local2){
					return (_local2.systemManager);
				};
				_local1 = _local1.parent;
			};
			return (null);
		}
		public function setStyle(_arg1:String, _arg2):void{
		}
		public function get percentWidth():Number{
			return (NaN);
		}
		public function get explicitHeight():Number{
			return (_explicitHeight);
		}
		public function get baselinePosition():Number{
			var _local1:TextLineMetrics;
			if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0){
				_local1 = getLineMetrics(0);
				return (((height - 4) - _local1.descent));
			};
			if (!parent){
				return (NaN);
			};
			var _local2 = (text == "");
			if (_local2){
				super.text = "Wj";
			};
			_local1 = getLineMetrics(0);
			if (_local2){
				super.text = "";
			};
			return ((2 + _local1.ascent));
		}
		public function set enabled(_arg1:Boolean):void{
			mouseEnabled = _arg1;
			_enabled = _arg1;
			styleChanged("color");
		}
		public function get minWidth():Number{
			return (0);
		}
		public function get automationValue():Array{
			if (automationDelegate){
				return (automationDelegate.automationValue);
			};
			return ([""]);
		}
		public function get tweeningProperties():Array{
			return (null);
		}
		public function get measuredWidth():Number{
			validateNow();
			if (!stage){
				return ((textWidth + TEXT_WIDTH_PADDING));
			};
			return (((textWidth * transform.concatenatedMatrix.d) + TEXT_WIDTH_PADDING));
		}
		public function set tweeningProperties(_arg1:Array):void{
		}
		public function createAutomationIDPart(_arg1:IAutomationObject):Object{
			return (null);
		}
		override public function get parent():DisplayObjectContainer{
			return ((_parent) ? _parent : super.parent);
		}
		public function set updateCompletePendingFlag(_arg1:Boolean):void{
			_updateCompletePendingFlag = _arg1;
		}
		public function setActualSize(_arg1:Number, _arg2:Number):void{
			if (width != _arg1){
				width = _arg1;
			};
			if (height != _arg2){
				height = _arg2;
			};
		}
		public function get numAutomationChildren():int{
			return (0);
		}
		public function set focusPane(_arg1:Sprite):void{
		}
		public function getAutomationChildAt(_arg1:int):IAutomationObject{
			return (null);
		}
		public function get inheritingStyles():Object{
			return (_inheritingStyles);
		}
		public function get owner():DisplayObjectContainer{
			return ((_owner) ? _owner : parent);
		}
		public function parentChanged(_arg1:DisplayObjectContainer):void{
			if (!_arg1){
				_parent = null;
				_nestLevel = 0;
			} else {
				if ((_arg1 is IStyleClient)){
					_parent = _arg1;
				} else {
					if ((_arg1 is SystemManager)){
						_parent = _arg1;
					} else {
						_parent = _arg1.parent;
					};
				};
			};
		}
		public function get processedDescriptors():Boolean{
			return (_processedDescriptors);
		}
		public function get maxWidth():Number{
			return (UIComponent.DEFAULT_MAX_WIDTH);
		}
		private function getEmbeddedFont(_arg1:String, _arg2:Boolean, _arg3:Boolean):EmbeddedFont{
			if (cachedEmbeddedFont){
				if ((((cachedEmbeddedFont.fontName == _arg1)) && ((cachedEmbeddedFont.fontStyle == EmbeddedFontRegistry.getFontStyle(_arg2, _arg3))))){
					return (cachedEmbeddedFont);
				};
			};
			cachedEmbeddedFont = new EmbeddedFont(_arg1, _arg2, _arg3);
			return (cachedEmbeddedFont);
		}
		public function get initialized():Boolean{
			return (_initialized);
		}
		public function invalidateDisplayList():void{
			invalidateDisplayListFlag = true;
		}
		public function invalidateProperties():void{
		}
		override public function insertXMLText(_arg1:int, _arg2:int, _arg3:String, _arg4:Boolean=false):void{
			super.insertXMLText(_arg1, _arg2, _arg3, _arg4);
			dispatchEvent(new Event("textInsert"));
		}
		public function set includeInLayout(_arg1:Boolean):void{
			var _local2:IInvalidating;
			if (_includeInLayout != _arg1){
				_includeInLayout = _arg1;
				_local2 = (parent as IInvalidating);
				if (_local2){
					_local2.invalidateSize();
					_local2.invalidateDisplayList();
				};
			};
		}
		override public function set htmlText(_arg1:String):void{
			if (!_arg1){
				_arg1 = "";
			};
			if (((isHTML) && ((super.htmlText == _arg1)))){
				return;
			};
			if (((cachedTextFormat) && ((styleSheet == null)))){
				defaultTextFormat = cachedTextFormat;
			};
			super.htmlText = _arg1;
			explicitHTMLText = _arg1;
			if (invalidateDisplayListFlag){
				validateNow();
			};
		}
		public function set showInAutomationHierarchy(_arg1:Boolean):void{
		}
		private function resourceManager_changeHandler(_arg1:Event):void{
			truncationIndicatorResource = resourceManager.getString("core", "truncationIndicator");
			if (untruncatedText != null){
				super.text = untruncatedText;
				truncateToFit();
			};
		}
		public function set measuredMinWidth(_arg1:Number):void{
		}
		public function set explicitHeight(_arg1:Number):void{
			_explicitHeight = _arg1;
		}
		public function get explicitMinWidth():Number{
			return (NaN);
		}
		public function set percentWidth(_arg1:Number):void{
		}
		public function get imeMode():String{
			return (_imeMode);
		}
		public function get moduleFactory():IFlexModuleFactory{
			return (_moduleFactory);
		}
		public function set systemManager(_arg1:ISystemManager):void{
		}
		public function get explicitMaxWidth():Number{
			return (NaN);
		}
		public function get document():Object{
			return (_document);
		}
		public function get updateCompletePendingFlag():Boolean{
			return (_updateCompletePendingFlag);
		}
		public function replayAutomatableEvent(_arg1:Event):Boolean{
			if (automationDelegate){
				return (automationDelegate.replayAutomatableEvent(_arg1));
			};
			return (false);
		}
		public function get enabled():Boolean{
			return (_enabled);
		}
		public function set owner(_arg1:DisplayObjectContainer):void{
			_owner = _arg1;
		}
		public function get automationTabularData():Object{
			return (null);
		}
		public function set nonInheritingStyles(_arg1:Object):void{
			_nonInheritingStyles = _arg1;
		}
		public function get includeInLayout():Boolean{
			return (_includeInLayout);
		}
		public function get measuredMinWidth():Number{
			return (0);
		}
		public function set isPopUp(_arg1:Boolean):void{
		}
		public function set automationDelegate(_arg1:Object):void{
			_automationDelegate = (_arg1 as IAutomationObject);
		}
		public function get measuredHeight():Number{
			validateNow();
			if (!stage){
				return ((textHeight + TEXT_HEIGHT_PADDING));
			};
			return (((textHeight * transform.concatenatedMatrix.a) + TEXT_HEIGHT_PADDING));
		}
		public function set processedDescriptors(_arg1:Boolean):void{
			_processedDescriptors = _arg1;
		}
		public function setFocus():void{
			systemManager.stage.focus = this;
		}
		public function initialize():void{
		}
		public function set percentHeight(_arg1:Number):void{
		}
		public function resolveAutomationIDPart(_arg1:Object):Array{
			return ([]);
		}
		public function set inheritingStyles(_arg1:Object):void{
			_inheritingStyles = _arg1;
		}
		public function getUITextFormat():UITextFormat{
			validateNow();
			var _local1:UITextFormat = new UITextFormat(creatingSystemManager());
			_local1.moduleFactory = moduleFactory;
			_local1.copyFrom(getTextFormat());
			_local1.antiAliasType = antiAliasType;
			_local1.gridFitType = gridFitType;
			_local1.sharpness = sharpness;
			_local1.thickness = thickness;
			return (_local1);
		}
		private function changeHandler(_arg1:Event):void{
			explicitHTMLText = null;
		}
		public function set initialized(_arg1:Boolean):void{
			_initialized = _arg1;
		}
		public function get nonZeroTextHeight():Number{
			var _local1:Number;
			if (super.text == ""){
				super.text = "Wj";
				_local1 = textHeight;
				super.text = "";
				return (_local1);
			};
			return (textHeight);
		}
		public function owns(_arg1:DisplayObject):Boolean{
			return ((_arg1 == this));
		}
		override public function setTextFormat(_arg1:TextFormat, _arg2:int=-1, _arg3:int=-1):void{
			if (styleSheet){
				return;
			};
			super.setTextFormat(_arg1, _arg2, _arg3);
			dispatchEvent(new Event("textFormatChange"));
		}
		public function get nonInheritingStyles():Object{
			return (_nonInheritingStyles);
		}
		public function setVisible(_arg1:Boolean, _arg2:Boolean=false):void{
			this.visible = _arg1;
		}
		public function get maxHeight():Number{
			return (UIComponent.DEFAULT_MAX_HEIGHT);
		}
		public function get automationDelegate():Object{
			return (_automationDelegate);
		}
		public function get isPopUp():Boolean{
			return (false);
		}
		public function set ignorePadding(_arg1:Boolean):void{
			_ignorePadding = _arg1;
			styleChanged(null);
		}
		public function set styleName(_arg1:Object):void{
			if (_styleName === _arg1){
				return;
			};
			_styleName = _arg1;
			if (parent){
				StyleProtoChain.initTextField(this);
				styleChanged("styleName");
			};
		}
		public function styleChanged(_arg1:String):void{
			styleChangedFlag = true;
			if (!invalidateDisplayListFlag){
				invalidateDisplayListFlag = true;
				if (("callLater" in parent)){
					Object(parent).callLater(validateNow);
				};
			};
		}
		public function get percentHeight():Number{
			return (NaN);
		}
		private function get isHTML():Boolean{
			return (!((explicitHTMLText == null)));
		}
		public function get explicitMaxHeight():Number{
			return (NaN);
		}
		public function get styleName():Object{
			return (_styleName);
		}
		public function set explicitWidth(_arg1:Number):void{
			_explicitWidth = _arg1;
		}
		public function validateNow():void{
			var _local1:TextFormat;
			var _local2:EmbeddedFont;
			var _local3:IFlexModuleFactory;
			var _local4:ISystemManager;
			if (!parent){
				return;
			};
			if (((!(isNaN(explicitWidth))) && (!((super.width == explicitWidth))))){
				super.width = ((explicitWidth)>4) ? explicitWidth : 4;
			};
			if (((!(isNaN(explicitHeight))) && (!((super.height == explicitHeight))))){
				super.height = explicitHeight;
			};
			if (styleChangedFlag){
				_local1 = getTextStyles();
				if (_local1.font){
					_local2 = getEmbeddedFont(_local1.font, _local1.bold, _local1.italic);
					_local3 = embeddedFontRegistry.getAssociatedModuleFactory(_local2, moduleFactory);
					if (_local3 != null){
						embedFonts = true;
					} else {
						_local4 = creatingSystemManager();
						embedFonts = ((!((_local4 == null))) && (_local4.isFontFaceEmbedded(_local1)));
					};
				} else {
					embedFonts = getStyle("embedFonts");
				};
				if (getStyle("fontAntiAliasType") != undefined){
					antiAliasType = getStyle("fontAntiAliasType");
					gridFitType = getStyle("fontGridFitType");
					sharpness = getStyle("fontSharpness");
					thickness = getStyle("fontThickness");
				};
				if (!styleSheet){
					super.setTextFormat(_local1);
					defaultTextFormat = _local1;
				};
				dispatchEvent(new Event("textFieldStyleChange"));
			};
			styleChangedFlag = false;
			invalidateDisplayListFlag = false;
		}
		public function set toolTip(_arg1:String):void{
			var _local2:String = _toolTip;
			_toolTip = _arg1;
			ToolTipManager.registerToolTip(this, _local2, _arg1);
		}
		public function move(_arg1:Number, _arg2:Number):void{
			if (this.x != _arg1){
				this.x = _arg1;
			};
			if (this.y != _arg2){
				this.y = _arg2;
			};
		}
		public function get toolTip():String{
			return (_toolTip);
		}
		public function get ignorePadding():Boolean{
			return (_ignorePadding);
		}
		public function get explicitWidth():Number{
			return (_explicitWidth);
		}
		public function invalidateSize():void{
			invalidateDisplayListFlag = true;
		}
		public function set measuredMinHeight(_arg1:Number):void{
		}
		public function get measuredMinHeight():Number{
			return (0);
		}
		public function set moduleFactory(_arg1:IFlexModuleFactory):void{
			_moduleFactory = _arg1;
		}

		private static function get embeddedFontRegistry():IEmbeddedFontRegistry{
			if (!_embeddedFontRegistry){
				_embeddedFontRegistry = IEmbeddedFontRegistry(Singleton.getInstance("mx.core::IEmbeddedFontRegistry"));
			};
			return (_embeddedFontRegistry);
		}

	}
}//package mx.core 

****************

//UITextFormat (mx.core.UITextFormat)
package mx.core {
	import mx.managers.*;
	import flash.text.*;

	public class UITextFormat extends TextFormat {

		private var systemManager:ISystemManager;
		public var sharpness:Number;
		public var gridFitType:String;
		public var antiAliasType:String;
		public var thickness:Number;
		private var cachedEmbeddedFont:EmbeddedFont;// = null
		private var _moduleFactory:IFlexModuleFactory;

		mx_internal static const VERSION:String = "3.5.0.12683";

		private static var _embeddedFontRegistry:IEmbeddedFontRegistry;
		private static var _textFieldFactory:ITextFieldFactory;

		public function UITextFormat(_arg1:ISystemManager, _arg2:String=null, _arg3:Object=null, _arg4:Object=null, _arg5:Object=null, _arg6:Object=null, _arg7:Object=null, _arg8:String=null, _arg9:String=null, _arg10:String=null, _arg11:Object=null, _arg12:Object=null, _arg13:Object=null, _arg14:Object=null){
			this.systemManager = _arg1;
			super(_arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, _arg11, _arg12, _arg13, _arg14);
		}
		public function set moduleFactory(_arg1:IFlexModuleFactory):void{
			_moduleFactory = _arg1;
		}
		mx_internal function copyFrom(_arg1:TextFormat):void{
			font = _arg1.font;
			size = _arg1.size;
			color = _arg1.color;
			bold = _arg1.bold;
			italic = _arg1.italic;
			underline = _arg1.underline;
			url = _arg1.url;
			target = _arg1.target;
			align = _arg1.align;
			leftMargin = _arg1.leftMargin;
			rightMargin = _arg1.rightMargin;
			indent = _arg1.indent;
			leading = _arg1.leading;
			letterSpacing = _arg1.letterSpacing;
			blockIndent = _arg1.blockIndent;
			bullet = _arg1.bullet;
			display = _arg1.display;
			indent = _arg1.indent;
			kerning = _arg1.kerning;
			tabStops = _arg1.tabStops;
		}
		private function getEmbeddedFont(_arg1:String, _arg2:Boolean, _arg3:Boolean):EmbeddedFont{
			if (cachedEmbeddedFont){
				if ((((cachedEmbeddedFont.fontName == _arg1)) && ((cachedEmbeddedFont.fontStyle == EmbeddedFontRegistry.getFontStyle(_arg2, _arg3))))){
					return (cachedEmbeddedFont);
				};
			};
			cachedEmbeddedFont = new EmbeddedFont(_arg1, _arg2, _arg3);
			return (cachedEmbeddedFont);
		}
		public function measureText(_arg1:String, _arg2:Boolean=true):TextLineMetrics{
			return (measure(_arg1, false, _arg2));
		}
		private function measure(_arg1:String, _arg2:Boolean, _arg3:Boolean):TextLineMetrics{
			if (!_arg1){
				_arg1 = "";
			};
			var _local4:Boolean;
			var _local5:IFlexModuleFactory = embeddedFontRegistry.getAssociatedModuleFactory(getEmbeddedFont(font, bold, italic), moduleFactory);
			_local4 = !((_local5 == null));
			if (_local5 == null){
				_local5 = systemManager;
			};
			var _local6:TextField;
			_local6 = TextField(textFieldFactory.createTextField(_local5));
			if (_arg2){
				_local6.htmlText = "";
			} else {
				_local6.text = "";
			};
			_local6.defaultTextFormat = this;
			if (font){
				_local6.embedFonts = ((_local4) || (((!((systemManager == null))) && (systemManager.isFontFaceEmbedded(this)))));
			} else {
				_local6.embedFonts = false;
			};
			_local6.antiAliasType = antiAliasType;
			_local6.gridFitType = gridFitType;
			_local6.sharpness = sharpness;
			_local6.thickness = thickness;
			if (_arg2){
				_local6.htmlText = _arg1;
			} else {
				_local6.text = _arg1;
			};
			var _local7:TextLineMetrics = _local6.getLineMetrics(0);
			if (indent != null){
				_local7.width = (_local7.width + indent);
			};
			if (_arg3){
				_local7.width = Math.ceil(_local7.width);
				_local7.height = Math.ceil(_local7.height);
			};
			return (_local7);
		}
		public function measureHTMLText(_arg1:String, _arg2:Boolean=true):TextLineMetrics{
			return (measure(_arg1, true, _arg2));
		}
		public function get moduleFactory():IFlexModuleFactory{
			return (_moduleFactory);
		}

		private static function get embeddedFontRegistry():IEmbeddedFontRegistry{
			if (!_embeddedFontRegistry){
				_embeddedFontRegistry = IEmbeddedFontRegistry(Singleton.getInstance("mx.core::IEmbeddedFontRegistry"));
			};
			return (_embeddedFontRegistry);
		}
		private static function get textFieldFactory():ITextFieldFactory{
			if (!_textFieldFactory){
				_textFieldFactory = ITextFieldFactory(Singleton.getInstance("mx.core::ITextFieldFactory"));
			};
			return (_textFieldFactory);
		}

	}
}//package mx.core 

****************

//AddRemoveEffectTargetFilter (mx.effects.effectClasses.AddRemoveEffectTargetFilter)
package mx.effects.effectClasses {
	import mx.effects.*;

	public class AddRemoveEffectTargetFilter extends EffectTargetFilter {

		public var add:Boolean;// = true

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function AddRemoveEffectTargetFilter(){
			filterProperties = ["parent"];
		}
		override protected function defaultFilterFunction(_arg1:Array, _arg2:Object):Boolean{
			var _local5:PropertyChanges;
			var _local3:int = _arg1.length;
			var _local4:int;
			while (_local4 < _local3) {
				_local5 = _arg1[_local4];
				if (_local5.target == _arg2){
					if (add){
						return ((((_local5.start["parent"] == null)) && (!((_local5.end["parent"] == null)))));
					};
					return (((!((_local5.start["parent"] == null))) && ((_local5.end["parent"] == null))));
				};
				_local4++;
			};
			return (false);
		}

	}
}//package mx.effects.effectClasses 

****************

//HideShowEffectTargetFilter (mx.effects.effectClasses.HideShowEffectTargetFilter)
package mx.effects.effectClasses {
	import mx.effects.*;

	public class HideShowEffectTargetFilter extends EffectTargetFilter {

		public var show:Boolean;// = true

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function HideShowEffectTargetFilter(){
			filterProperties = ["visible"];
		}
		override protected function defaultFilterFunction(_arg1:Array, _arg2:Object):Boolean{
			var _local5:PropertyChanges;
			var _local3:int = _arg1.length;
			var _local4:int;
			while (_local4 < _local3) {
				_local5 = _arg1[_local4];
				if (_local5.target == _arg2){
					return ((_local5.end["visible"] == show));
				};
				_local4++;
			};
			return (false);
		}

	}
}//package mx.effects.effectClasses 

****************

//PropertyChanges (mx.effects.effectClasses.PropertyChanges)
package mx.effects.effectClasses {

	public class PropertyChanges {

		public var target:Object;
		public var start:Object;
		public var end:Object;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function PropertyChanges(_arg1:Object){
			end = {};
			start = {};
			super();
			this.target = _arg1;
		}
	}
}//package mx.effects.effectClasses 

****************

//TweenEffectInstance (mx.effects.effectClasses.TweenEffectInstance)
package mx.effects.effectClasses {
	import mx.core.*;
	import mx.events.*;
	import mx.effects.*;

	public class TweenEffectInstance extends EffectInstance {

		private var _seekTime:Number;// = 0
		public var easingFunction:Function;
		public var tween:Tween;
		mx_internal var needToLayout:Boolean;// = false

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function TweenEffectInstance(_arg1:Object){
			super(_arg1);
		}
		override public function stop():void{
			super.stop();
			if (tween){
				tween.stop();
			};
		}
		mx_internal function applyTweenStartValues():void{
			if (duration > 0){
				onTweenUpdate(tween.getCurrentValue(0));
			};
		}
		override public function get playheadTime():Number{
			if (tween){
				return ((tween.playheadTime + super.playheadTime));
			};
			return (0);
		}
		protected function createTween(_arg1:Object, _arg2:Object, _arg3:Object, _arg4:Number=-1, _arg5:Number=-1):Tween{
			var _local6:Tween = new Tween(_arg1, _arg2, _arg3, _arg4, _arg5);
			_local6.addEventListener(TweenEvent.TWEEN_START, tweenEventHandler);
			_local6.addEventListener(TweenEvent.TWEEN_UPDATE, tweenEventHandler);
			_local6.addEventListener(TweenEvent.TWEEN_END, tweenEventHandler);
			if (easingFunction != null){
				_local6.easingFunction = easingFunction;
			};
			if (_seekTime > 0){
				_local6.seek(_seekTime);
			};
			_local6.playReversed = playReversed;
			return (_local6);
		}
		private function tweenEventHandler(_arg1:TweenEvent):void{
			dispatchEvent(_arg1);
		}
		override public function end():void{
			stopRepeat = true;
			if (delayTimer){
				delayTimer.reset();
			};
			if (tween){
				tween.endTween();
				tween = null;
			};
		}
		override public function reverse():void{
			super.reverse();
			if (tween){
				tween.reverse();
			};
			super.playReversed = !(playReversed);
		}
		override mx_internal function set playReversed(_arg1:Boolean):void{
			super.playReversed = _arg1;
			if (tween){
				tween.playReversed = _arg1;
			};
		}
		override public function resume():void{
			super.resume();
			if (tween){
				tween.resume();
			};
		}
		public function onTweenEnd(_arg1:Object):void{
			onTweenUpdate(_arg1);
			tween = null;
			if (needToLayout){
				UIComponentGlobals.layoutManager.validateNow();
			};
			finishRepeat();
		}
		public function onTweenUpdate(_arg1:Object):void{
		}
		override public function pause():void{
			super.pause();
			if (tween){
				tween.pause();
			};
		}
		public function seek(_arg1:Number):void{
			if (tween){
				tween.seek(_arg1);
			} else {
				_seekTime = _arg1;
			};
		}

	}
}//package mx.effects.effectClasses 

****************

//ZoomInstance (mx.effects.effectClasses.ZoomInstance)
package mx.effects.effectClasses {
	import mx.events.*;
	import flash.events.*;
	import mx.effects.*;

	public class ZoomInstance extends TweenEffectInstance {

		private var newY:Number;
		public var originY:Number;
		private var origX:Number;
		private var origY:Number;
		public var originX:Number;
		private var origPercentHeight:Number;
		public var zoomWidthFrom:Number;
		public var zoomWidthTo:Number;
		private var newX:Number;
		public var captureRollEvents:Boolean;
		private var origPercentWidth:Number;
		public var zoomHeightFrom:Number;
		private var origScaleX:Number;
		public var zoomHeightTo:Number;
		private var origScaleY:Number;
		private var scaledOriginX:Number;
		private var scaledOriginY:Number;
		private var show:Boolean;// = true
		private var _mouseHasMoved:Boolean;// = false

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function ZoomInstance(_arg1:Object){
			super(_arg1);
		}
		override public function finishEffect():void{
			if (captureRollEvents){
				target.removeEventListener(MouseEvent.ROLL_OVER, mouseEventHandler, false);
				target.removeEventListener(MouseEvent.ROLL_OUT, mouseEventHandler, false);
				target.removeEventListener(MouseEvent.MOUSE_MOVE, mouseEventHandler, false);
			};
			super.finishEffect();
		}
		private function getScaleFromWidth(_arg1:Number):Number{
			return ((_arg1 / (target.width / Math.abs(target.scaleX))));
		}
		override public function initEffect(_arg1:Event):void{
			super.initEffect(_arg1);
			if ((((_arg1.type == FlexEvent.HIDE)) || ((_arg1.type == Event.REMOVED)))){
				show = false;
			};
		}
		private function getScaleFromHeight(_arg1:Number):Number{
			return ((_arg1 / (target.height / Math.abs(target.scaleY))));
		}
		private function applyPropertyChanges():void{
			var _local2:Boolean;
			var _local3:Boolean;
			var _local1:PropertyChanges = propertyChanges;
			if (_local1){
				_local2 = false;
				_local3 = false;
				if (_local1.end["scaleX"] !== undefined){
					zoomWidthFrom = (isNaN(zoomWidthFrom)) ? target.scaleX : zoomWidthFrom;
					zoomWidthTo = (isNaN(zoomWidthTo)) ? _local1.end["scaleX"] : zoomWidthTo;
					_local3 = true;
				};
				if (_local1.end["scaleY"] !== undefined){
					zoomHeightFrom = (isNaN(zoomHeightFrom)) ? target.scaleY : zoomHeightFrom;
					zoomHeightTo = (isNaN(zoomHeightTo)) ? _local1.end["scaleY"] : zoomHeightTo;
					_local3 = true;
				};
				if (_local3){
					return;
				};
				if (_local1.end["width"] !== undefined){
					zoomWidthFrom = (isNaN(zoomWidthFrom)) ? getScaleFromWidth(target.width) : zoomWidthFrom;
					zoomWidthTo = (isNaN(zoomWidthTo)) ? getScaleFromWidth(_local1.end["width"]) : zoomWidthTo;
					_local2 = true;
				};
				if (_local1.end["height"] !== undefined){
					zoomHeightFrom = (isNaN(zoomHeightFrom)) ? getScaleFromHeight(target.height) : zoomHeightFrom;
					zoomHeightTo = (isNaN(zoomHeightTo)) ? getScaleFromHeight(_local1.end["height"]) : zoomHeightTo;
					_local2 = true;
				};
				if (_local2){
					return;
				};
				if (_local1.end["visible"] !== undefined){
					show = _local1.end["visible"];
				};
			};
		}
		private function mouseEventHandler(_arg1:MouseEvent):void{
			if (_arg1.type == MouseEvent.MOUSE_MOVE){
				_mouseHasMoved = true;
			} else {
				if ((((_arg1.type == MouseEvent.ROLL_OUT)) || ((_arg1.type == MouseEvent.ROLL_OVER)))){
					if (!_mouseHasMoved){
						_arg1.stopImmediatePropagation();
					};
					_mouseHasMoved = false;
				};
			};
		}
		override public function play():void{
			super.play();
			applyPropertyChanges();
			if (((((((isNaN(zoomWidthFrom)) && (isNaN(zoomWidthTo)))) && (isNaN(zoomHeightFrom)))) && (isNaN(zoomHeightTo)))){
				if (show){
					zoomWidthFrom = (zoomHeightFrom = 0);
					zoomWidthTo = target.scaleX;
					zoomHeightTo = target.scaleY;
				} else {
					zoomWidthFrom = target.scaleX;
					zoomHeightFrom = target.scaleY;
					zoomWidthTo = (zoomHeightTo = 0);
				};
			} else {
				if (((isNaN(zoomWidthFrom)) && (isNaN(zoomWidthTo)))){
					zoomWidthFrom = (zoomWidthTo = target.scaleX);
				} else {
					if (((isNaN(zoomHeightFrom)) && (isNaN(zoomHeightTo)))){
						zoomHeightFrom = (zoomHeightTo = target.scaleY);
					};
				};
				if (isNaN(zoomWidthFrom)){
					zoomWidthFrom = target.scaleX;
				} else {
					if (isNaN(zoomWidthTo)){
						zoomWidthTo = ((zoomWidthFrom)==1) ? 0 : 1;
					};
				};
				if (isNaN(zoomHeightFrom)){
					zoomHeightFrom = target.scaleY;
				} else {
					if (isNaN(zoomHeightTo)){
						zoomHeightTo = ((zoomHeightFrom)==1) ? 0 : 1;
					};
				};
			};
			if (zoomWidthFrom < 0.01){
				zoomWidthFrom = 0.01;
			};
			if (zoomWidthTo < 0.01){
				zoomWidthTo = 0.01;
			};
			if (zoomHeightFrom < 0.01){
				zoomHeightFrom = 0.01;
			};
			if (zoomHeightTo < 0.01){
				zoomHeightTo = 0.01;
			};
			origScaleX = target.scaleX;
			origScaleY = target.scaleY;
			newX = (origX = target.x);
			newY = (origY = target.y);
			if (isNaN(originX)){
				scaledOriginX = (target.width / 2);
			} else {
				scaledOriginX = (originX * origScaleX);
			};
			if (isNaN(originY)){
				scaledOriginY = (target.height / 2);
			} else {
				scaledOriginY = (originY * origScaleY);
			};
			scaledOriginX = Number(scaledOriginX.toFixed(1));
			scaledOriginY = Number(scaledOriginY.toFixed(1));
			origPercentWidth = target.percentWidth;
			if (!isNaN(origPercentWidth)){
				target.width = target.width;
			};
			origPercentHeight = target.percentHeight;
			if (!isNaN(origPercentHeight)){
				target.height = target.height;
			};
			tween = createTween(this, [zoomWidthFrom, zoomHeightFrom], [zoomWidthTo, zoomHeightTo], duration);
			if (captureRollEvents){
				target.addEventListener(MouseEvent.ROLL_OVER, mouseEventHandler, false);
				target.addEventListener(MouseEvent.ROLL_OUT, mouseEventHandler, false);
				target.addEventListener(MouseEvent.MOUSE_MOVE, mouseEventHandler, false);
			};
		}
		override public function onTweenEnd(_arg1:Object):void{
			var _local2:Number;
			var _local3:Number;
			if (!isNaN(origPercentWidth)){
				_local2 = target.width;
				target.percentWidth = origPercentWidth;
				if (((target.parent) && ((target.parent.autoLayout == false)))){
					target._width = _local2;
				};
			};
			if (!isNaN(origPercentHeight)){
				_local3 = target.height;
				target.percentHeight = origPercentHeight;
				if (((target.parent) && ((target.parent.autoLayout == false)))){
					target._height = _local3;
				};
			};
			super.onTweenEnd(_arg1);
			if (hideOnEffectEnd){
				EffectManager.suspendEventHandling();
				target.scaleX = origScaleX;
				target.scaleY = origScaleY;
				target.move(origX, origY);
				EffectManager.resumeEventHandling();
			};
		}
		override public function onTweenUpdate(_arg1:Object):void{
			EffectManager.suspendEventHandling();
			if (Math.abs((newX - target.x)) > 0.1){
				origX = (origX + (Number(target.x.toFixed(1)) - newX));
			};
			if (Math.abs((newY - target.y)) > 0.1){
				origY = (origY + (Number(target.y.toFixed(1)) - newY));
			};
			target.scaleX = _arg1[0];
			target.scaleY = _arg1[1];
			var _local2:Number = (_arg1[0] / origScaleX);
			var _local3:Number = (_arg1[1] / origScaleY);
			var _local4:Number = (scaledOriginX * _local2);
			var _local5:Number = (scaledOriginY * _local3);
			newX = ((scaledOriginX - _local4) + origX);
			newY = ((scaledOriginY - _local5) + origY);
			newX = Number(newX.toFixed(1));
			newY = Number(newY.toFixed(1));
			target.move(newX, newY);
			if (tween){
				tween.needToLayout = true;
			} else {
				needToLayout = true;
			};
			EffectManager.resumeEventHandling();
		}

	}
}//package mx.effects.effectClasses 

****************

//Effect (mx.effects.Effect)
package mx.effects {
	import mx.core.*;
	import mx.events.*;
	import flash.events.*;
	import mx.managers.*;
	import mx.effects.effectClasses.*;
	import flash.utils.*;

	public class Effect extends EventDispatcher implements IEffect {

		private var _perElementOffset:Number;// = 0
		private var _hideFocusRing:Boolean;// = false
		private var _customFilter:EffectTargetFilter;
		public var repeatCount:int;// = 1
		public var suspendBackgroundProcessing:Boolean;// = false
		public var startDelay:int;// = 0
		private var _relevantProperties:Array;
		private var _callValidateNow:Boolean;// = false
		mx_internal var applyActualDimensions:Boolean;// = true
		private var _filter:String;
		private var _triggerEvent:Event;
		private var _effectTargetHost:IEffectTargetHost;
		mx_internal var durationExplicitlySet:Boolean;// = false
		public var repeatDelay:int;// = 0
		private var _targets:Array;
		mx_internal var propertyChangesArray:Array;
		mx_internal var filterObject:EffectTargetFilter;
		protected var endValuesCaptured:Boolean;// = false
		public var instanceClass:Class;
		private var _duration:Number;// = 500
		private var isPaused:Boolean;// = false
		private var _relevantStyles:Array;
		private var _instances:Array;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function Effect(_arg1:Object=null){
			_instances = [];
			instanceClass = IEffectInstance;
			_relevantStyles = [];
			_targets = [];
			super();
			this.target = _arg1;
		}
		public function get targets():Array{
			return (_targets);
		}
		public function set targets(_arg1:Array):void{
			var _local2:int = _arg1.length;
			var _local3:int = (_local2 - 1);
			while (_local3 > 0) {
				if (_arg1[_local3] == null){
					_arg1.splice(_local3, 1);
				};
				_local3--;
			};
			_targets = _arg1;
		}
		public function set hideFocusRing(_arg1:Boolean):void{
			_hideFocusRing = _arg1;
		}
		public function get hideFocusRing():Boolean{
			return (_hideFocusRing);
		}
		public function stop():void{
			var _local3:IEffectInstance;
			var _local1:int = _instances.length;
			var _local2:int = _local1;
			while (_local2 >= 0) {
				_local3 = IEffectInstance(_instances[_local2]);
				if (_local3){
					_local3.stop();
				};
				_local2--;
			};
		}
		public function captureStartValues():void{
			if (targets.length > 0){
				propertyChangesArray = captureValues(null, true);
				_callValidateNow = true;
			};
			endValuesCaptured = false;
		}
		mx_internal function captureValues(_arg1:Array, _arg2:Boolean):Array{
			var _local3:int;
			var _local4:int;
			var _local6:Object;
			var _local7:Object;
			var _local8:int;
			var _local9:int;
			if (!_arg1){
				_arg1 = [];
				_local3 = targets.length;
				_local4 = 0;
				while (_local4 < _local3) {
					_arg1.push(new PropertyChanges(targets[_local4]));
					_local4++;
				};
			};
			var _local5:Array = (filterObject) ? mergeArrays(relevantProperties, filterObject.filterProperties) : relevantProperties;
			if (((_local5) && ((_local5.length > 0)))){
				_local3 = _arg1.length;
				_local4 = 0;
				while (_local4 < _local3) {
					_local7 = _arg1[_local4].target;
					_local6 = (_arg2) ? _arg1[_local4].start : _arg1[_local4].end;
					_local8 = _local5.length;
					_local9 = 0;
					while (_local9 < _local8) {
						_local6[_local5[_local9]] = getValueFromTarget(_local7, _local5[_local9]);
						_local9++;
					};
					_local4++;
				};
			};
			var _local10:Array = (filterObject) ? mergeArrays(relevantStyles, filterObject.filterStyles) : relevantStyles;
			if (((_local10) && ((_local10.length > 0)))){
				_local3 = _arg1.length;
				_local4 = 0;
				while (_local4 < _local3) {
					_local7 = _arg1[_local4].target;
					_local6 = (_arg2) ? _arg1[_local4].start : _arg1[_local4].end;
					_local8 = _local10.length;
					_local9 = 0;
					while (_local9 < _local8) {
						_local6[_local10[_local9]] = _local7.getStyle(_local10[_local9]);
						_local9++;
					};
					_local4++;
				};
			};
			return (_arg1);
		}
		protected function getValueFromTarget(_arg1:Object, _arg2:String){
			if ((_arg2 in _arg1)){
				return (_arg1[_arg2]);
			};
			return (undefined);
		}
		public function set target(_arg1:Object):void{
			_targets.splice(0);
			if (_arg1){
				_targets[0] = _arg1;
			};
		}
		public function get className():String{
			var _local1:String = getQualifiedClassName(this);
			var _local2:int = _local1.indexOf("::");
			if (_local2 != -1){
				_local1 = _local1.substr((_local2 + 2));
			};
			return (_local1);
		}
		public function set perElementOffset(_arg1:Number):void{
			_perElementOffset = _arg1;
		}
		public function resume():void{
			var _local1:int;
			var _local2:int;
			if (((isPlaying) && (isPaused))){
				isPaused = false;
				_local1 = _instances.length;
				_local2 = 0;
				while (_local2 < _local1) {
					IEffectInstance(_instances[_local2]).resume();
					_local2++;
				};
			};
		}
		public function set duration(_arg1:Number):void{
			durationExplicitlySet = true;
			_duration = _arg1;
		}
		public function play(_arg1:Array=null, _arg2:Boolean=false):Array{
			var _local6:IEffectInstance;
			if ((((_arg1 == null)) && (!((propertyChangesArray == null))))){
				if (_callValidateNow){
					LayoutManager.getInstance().validateNow();
				};
				if (!endValuesCaptured){
					propertyChangesArray = captureValues(propertyChangesArray, false);
				};
				propertyChangesArray = stripUnchangedValues(propertyChangesArray);
				applyStartValues(propertyChangesArray, this.targets);
			};
			var _local3:Array = createInstances(_arg1);
			var _local4:int = _local3.length;
			var _local5:int;
			while (_local5 < _local4) {
				_local6 = IEffectInstance(_local3[_local5]);
				Object(_local6).playReversed = _arg2;
				_local6.startEffect();
				_local5++;
			};
			return (_local3);
		}
		public function captureEndValues():void{
			propertyChangesArray = captureValues(propertyChangesArray, false);
			endValuesCaptured = true;
		}
		protected function filterInstance(_arg1:Array, _arg2:Object):Boolean{
			if (filterObject){
				return (filterObject.filterInstance(_arg1, effectTargetHost, _arg2));
			};
			return (true);
		}
		public function get customFilter():EffectTargetFilter{
			return (_customFilter);
		}
		public function get effectTargetHost():IEffectTargetHost{
			return (_effectTargetHost);
		}
		public function set relevantProperties(_arg1:Array):void{
			_relevantProperties = _arg1;
		}
		public function captureMoreStartValues(_arg1:Array):void{
			var _local2:Array;
			if (_arg1.length > 0){
				_local2 = captureValues(null, true);
				propertyChangesArray = propertyChangesArray.concat(_local2);
			};
		}
		public function deleteInstance(_arg1:IEffectInstance):void{
			EventDispatcher(_arg1).removeEventListener(EffectEvent.EFFECT_START, effectStartHandler);
			EventDispatcher(_arg1).removeEventListener(EffectEvent.EFFECT_END, effectEndHandler);
			var _local2:int = _instances.length;
			var _local3:int;
			while (_local3 < _local2) {
				if (_instances[_local3] === _arg1){
					_instances.splice(_local3, 1);
				};
				_local3++;
			};
		}
		public function get filter():String{
			return (_filter);
		}
		public function set triggerEvent(_arg1:Event):void{
			_triggerEvent = _arg1;
		}
		public function get target():Object{
			if (_targets.length > 0){
				return (_targets[0]);
			};
			return (null);
		}
		public function get duration():Number{
			return (_duration);
		}
		public function set customFilter(_arg1:EffectTargetFilter):void{
			_customFilter = _arg1;
			filterObject = _arg1;
		}
		public function get perElementOffset():Number{
			return (_perElementOffset);
		}
		public function set effectTargetHost(_arg1:IEffectTargetHost):void{
			_effectTargetHost = _arg1;
		}
		public function get isPlaying():Boolean{
			return (((_instances) && ((_instances.length > 0))));
		}
		protected function effectEndHandler(_arg1:EffectEvent):void{
			var _local2:IEffectInstance = IEffectInstance(_arg1.effectInstance);
			deleteInstance(_local2);
			dispatchEvent(_arg1);
		}
		public function get relevantProperties():Array{
			if (_relevantProperties){
				return (_relevantProperties);
			};
			return (getAffectedProperties());
		}
		public function createInstance(_arg1:Object=null):IEffectInstance{
			var _local6:int;
			var _local7:int;
			if (!_arg1){
				_arg1 = this.target;
			};
			var _local2:IEffectInstance;
			var _local3:PropertyChanges;
			var _local4:Boolean;
			var _local5:Boolean;
			if (propertyChangesArray){
				_local5 = true;
				_local4 = filterInstance(propertyChangesArray, _arg1);
			};
			if (_local4){
				_local2 = IEffectInstance(new instanceClass(_arg1));
				initInstance(_local2);
				if (_local5){
					_local6 = propertyChangesArray.length;
					_local7 = 0;
					while (_local7 < _local6) {
						if (propertyChangesArray[_local7].target == _arg1){
							_local2.propertyChanges = propertyChangesArray[_local7];
						};
						_local7++;
					};
				};
				EventDispatcher(_local2).addEventListener(EffectEvent.EFFECT_START, effectStartHandler);
				EventDispatcher(_local2).addEventListener(EffectEvent.EFFECT_END, effectEndHandler);
				_instances.push(_local2);
				if (triggerEvent){
					_local2.initEffect(triggerEvent);
				};
			};
			return (_local2);
		}
		protected function effectStartHandler(_arg1:EffectEvent):void{
			dispatchEvent(_arg1);
		}
		public function getAffectedProperties():Array{
			return ([]);
		}
		public function set relevantStyles(_arg1:Array):void{
			_relevantStyles = _arg1;
		}
		public function get triggerEvent():Event{
			return (_triggerEvent);
		}
		protected function applyValueToTarget(_arg1:Object, _arg2:String, _arg3, _arg4:Object):void{
			var target = _arg1;
			var property = _arg2;
			var value = _arg3;
			var props = _arg4;
			if ((property in target)){
				try {
					if (((((applyActualDimensions) && ((target is IFlexDisplayObject)))) && ((property == "height")))){
						target.setActualSize(target.width, value);
					} else {
						if (((((applyActualDimensions) && ((target is IFlexDisplayObject)))) && ((property == "width")))){
							target.setActualSize(value, target.height);
						} else {
							target[property] = value;
						};
					};
				} catch(e:Error) {
				};
			};
		}
		protected function initInstance(_arg1:IEffectInstance):void{
			_arg1.duration = duration;
			Object(_arg1).durationExplicitlySet = durationExplicitlySet;
			_arg1.effect = this;
			_arg1.effectTargetHost = effectTargetHost;
			_arg1.hideFocusRing = hideFocusRing;
			_arg1.repeatCount = repeatCount;
			_arg1.repeatDelay = repeatDelay;
			_arg1.startDelay = startDelay;
			_arg1.suspendBackgroundProcessing = suspendBackgroundProcessing;
		}
		mx_internal function applyStartValues(_arg1:Array, _arg2:Array):void{
			var _local6:int;
			var _local7:int;
			var _local8:Object;
			var _local9:Boolean;
			var _local3:Array = relevantProperties;
			var _local4:int = _arg1.length;
			var _local5:int;
			while (_local5 < _local4) {
				_local8 = _arg1[_local5].target;
				_local9 = false;
				_local6 = _arg2.length;
				_local7 = 0;
				while (_local7 < _local6) {
					if (_arg2[_local7] == _local8){
						_local9 = filterInstance(_arg1, _local8);
						break;
					};
					_local7++;
				};
				if (_local9){
					_local6 = _local3.length;
					_local7 = 0;
					while (_local7 < _local6) {
						if ((((_local3[_local7] in _arg1[_local5].start)) && ((_local3[_local7] in _local8)))){
							applyValueToTarget(_local8, _local3[_local7], _arg1[_local5].start[_local3[_local7]], _arg1[_local5].start);
						};
						_local7++;
					};
					_local6 = relevantStyles.length;
					_local7 = 0;
					while (_local7 < _local6) {
						if ((relevantStyles[_local7] in _arg1[_local5].start)){
							_local8.setStyle(relevantStyles[_local7], _arg1[_local5].start[relevantStyles[_local7]]);
						};
						_local7++;
					};
				};
				_local5++;
			};
		}
		public function end(_arg1:IEffectInstance=null):void{
			var _local2:int;
			var _local3:int;
			var _local4:IEffectInstance;
			if (_arg1){
				_arg1.end();
			} else {
				_local2 = _instances.length;
				_local3 = _local2;
				while (_local3 >= 0) {
					_local4 = IEffectInstance(_instances[_local3]);
					if (_local4){
						_local4.end();
					};
					_local3--;
				};
			};
		}
		public function get relevantStyles():Array{
			return (_relevantStyles);
		}
		public function createInstances(_arg1:Array=null):Array{
			var _local6:IEffectInstance;
			if (!_arg1){
				_arg1 = this.targets;
			};
			var _local2:Array = [];
			var _local3:int = _arg1.length;
			var _local4:Number = 0;
			var _local5:int;
			while (_local5 < _local3) {
				_local6 = createInstance(_arg1[_local5]);
				if (_local6){
					_local6.startDelay = (_local6.startDelay + _local4);
					_local4 = (_local4 + perElementOffset);
					_local2.push(_local6);
				};
				_local5++;
			};
			triggerEvent = null;
			return (_local2);
		}
		public function pause():void{
			var _local1:int;
			var _local2:int;
			if (((isPlaying) && (!(isPaused)))){
				isPaused = true;
				_local1 = _instances.length;
				_local2 = 0;
				while (_local2 < _local1) {
					IEffectInstance(_instances[_local2]).pause();
					_local2++;
				};
			};
		}
		public function set filter(_arg1:String):void{
			if (!customFilter){
				_filter = _arg1;
				switch (_arg1){
					case "add":
					case "remove":
						filterObject = new AddRemoveEffectTargetFilter();
						AddRemoveEffectTargetFilter(filterObject).add = (_arg1 == "add");
						break;
					case "hide":
					case "show":
						filterObject = new HideShowEffectTargetFilter();
						HideShowEffectTargetFilter(filterObject).show = (_arg1 == "show");
						break;
					case "move":
						filterObject = new EffectTargetFilter();
						filterObject.filterProperties = ["x", "y"];
						break;
					case "resize":
						filterObject = new EffectTargetFilter();
						filterObject.filterProperties = ["width", "height"];
						break;
					case "addItem":
						filterObject = new EffectTargetFilter();
						filterObject.requiredSemantics = {added:true};
						break;
					case "removeItem":
						filterObject = new EffectTargetFilter();
						filterObject.requiredSemantics = {removed:true};
						break;
					case "replacedItem":
						filterObject = new EffectTargetFilter();
						filterObject.requiredSemantics = {replaced:true};
						break;
					case "replacementItem":
						filterObject = new EffectTargetFilter();
						filterObject.requiredSemantics = {replacement:true};
						break;
					default:
						filterObject = null;
						break;
				};
			};
		}
		public function reverse():void{
			var _local1:int;
			var _local2:int;
			if (isPlaying){
				_local1 = _instances.length;
				_local2 = 0;
				while (_local2 < _local1) {
					IEffectInstance(_instances[_local2]).reverse();
					_local2++;
				};
			};
		}

		private static function mergeArrays(_arg1:Array, _arg2:Array):Array{
			var _local3:int;
			var _local4:Boolean;
			var _local5:int;
			if (_arg2){
				_local3 = 0;
				while (_local3 < _arg2.length) {
					_local4 = true;
					_local5 = 0;
					while (_local5 < _arg1.length) {
						if (_arg1[_local5] == _arg2[_local3]){
							_local4 = false;
							break;
						};
						_local5++;
					};
					if (_local4){
						_arg1.push(_arg2[_local3]);
					};
					_local3++;
				};
			};
			return (_arg1);
		}
		private static function stripUnchangedValues(_arg1:Array):Array{
			var _local3:Object;
			var _local2:int;
			while (_local2 < _arg1.length) {
				for (_local3 in _arg1[_local2].start) {
					if ((((_arg1[_local2].start[_local3] == _arg1[_local2].end[_local3])) || ((((((((typeof(_arg1[_local2].start[_local3]) == "number")) && ((typeof(_arg1[_local2].end[_local3]) == "number")))) && (isNaN(_arg1[_local2].start[_local3])))) && (isNaN(_arg1[_local2].end[_local3])))))){
						delete _arg1[_local2].start[_local3];
						delete _arg1[_local2].end[_local3];
					};
				};
				_local2++;
			};
			return (_arg1);
		}

	}
}//package mx.effects 

****************

//EffectInstance (mx.effects.EffectInstance)
package mx.effects {
	import mx.core.*;
	import mx.events.*;
	import flash.events.*;
	import mx.effects.effectClasses.*;
	import flash.utils.*;

	public class EffectInstance extends EventDispatcher implements IEffectInstance {

		private var _hideFocusRing:Boolean;
		private var delayStartTime:Number;// = 0
		mx_internal var stopRepeat:Boolean;// = false
		private var playCount:int;// = 0
		private var _repeatCount:int;// = 0
		private var _suspendBackgroundProcessing:Boolean;// = false
		mx_internal var delayTimer:Timer;
		private var _triggerEvent:Event;
		private var _effectTargetHost:IEffectTargetHost;
		mx_internal var parentCompositeEffectInstance:EffectInstance;
		mx_internal var durationExplicitlySet:Boolean;// = false
		private var _effect:IEffect;
		private var _target:Object;
		mx_internal var hideOnEffectEnd:Boolean;// = false
		private var _startDelay:int;// = 0
		private var delayElapsedTime:Number;// = 0
		private var _repeatDelay:int;// = 0
		private var _propertyChanges:PropertyChanges;
		private var _duration:Number;// = 500
		private var _playReversed:Boolean;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function EffectInstance(_arg1:Object){
			this.target = _arg1;
		}
		public function get playheadTime():Number{
			return ((((Math.max((playCount - 1), 0) * duration) + (Math.max((playCount - 2), 0) * repeatDelay)) + (playReversed) ? 0 : startDelay));
		}
		public function get hideFocusRing():Boolean{
			return (_hideFocusRing);
		}
		public function stop():void{
			if (delayTimer){
				delayTimer.reset();
			};
			stopRepeat = true;
			finishEffect();
		}
		public function finishEffect():void{
			playCount = 0;
			dispatchEvent(new EffectEvent(EffectEvent.EFFECT_END, false, false, this));
			if (target){
				target.dispatchEvent(new EffectEvent(EffectEvent.EFFECT_END, false, false, this));
			};
			if ((target is UIComponent)){
				UIComponent(target).effectFinished(this);
			};
			EffectManager.effectFinished(this);
		}
		public function set hideFocusRing(_arg1:Boolean):void{
			_hideFocusRing = _arg1;
		}
		public function finishRepeat():void{
			if (((((!(stopRepeat)) && (!((playCount == 0))))) && ((((playCount < repeatCount)) || ((repeatCount == 0)))))){
				if (repeatDelay > 0){
					delayTimer = new Timer(repeatDelay, 1);
					delayStartTime = getTimer();
					delayTimer.addEventListener(TimerEvent.TIMER, delayTimerHandler);
					delayTimer.start();
				} else {
					play();
				};
			} else {
				finishEffect();
			};
		}
		mx_internal function get playReversed():Boolean{
			return (_playReversed);
		}
		public function set effect(_arg1:IEffect):void{
			_effect = _arg1;
		}
		public function get className():String{
			var _local1:String = getQualifiedClassName(this);
			var _local2:int = _local1.indexOf("::");
			if (_local2 != -1){
				_local1 = _local1.substr((_local2 + 2));
			};
			return (_local1);
		}
		public function set duration(_arg1:Number):void{
			durationExplicitlySet = true;
			_duration = _arg1;
		}
		mx_internal function set playReversed(_arg1:Boolean):void{
			_playReversed = _arg1;
		}
		public function resume():void{
			if (((((delayTimer) && (!(delayTimer.running)))) && (!(isNaN(delayElapsedTime))))){
				delayTimer.delay = (playReversed) ? delayElapsedTime : (delayTimer.delay - delayElapsedTime);
				delayTimer.start();
			};
		}
		public function get propertyChanges():PropertyChanges{
			return (_propertyChanges);
		}
		public function set target(_arg1:Object):void{
			_target = _arg1;
		}
		public function get repeatCount():int{
			return (_repeatCount);
		}
		mx_internal function playWithNoDuration():void{
			duration = 0;
			repeatCount = 1;
			repeatDelay = 0;
			startDelay = 0;
			startEffect();
		}
		public function get startDelay():int{
			return (_startDelay);
		}
		mx_internal function get actualDuration():Number{
			var _local1:Number = NaN;
			if (repeatCount > 0){
				_local1 = (((duration * repeatCount) + ((repeatDelay * repeatCount) - 1)) + startDelay);
			};
			return (_local1);
		}
		public function play():void{
			playCount++;
			dispatchEvent(new EffectEvent(EffectEvent.EFFECT_START, false, false, this));
			if (target){
				target.dispatchEvent(new EffectEvent(EffectEvent.EFFECT_START, false, false, this));
			};
		}
		public function get suspendBackgroundProcessing():Boolean{
			return (_suspendBackgroundProcessing);
		}
		public function get effectTargetHost():IEffectTargetHost{
			return (_effectTargetHost);
		}
		public function set repeatDelay(_arg1:int):void{
			_repeatDelay = _arg1;
		}
		public function set propertyChanges(_arg1:PropertyChanges):void{
			_propertyChanges = _arg1;
		}
		mx_internal function eventHandler(_arg1:Event):void{
			if ((((_arg1.type == FlexEvent.SHOW)) && ((hideOnEffectEnd == true)))){
				hideOnEffectEnd = false;
				_arg1.target.removeEventListener(FlexEvent.SHOW, eventHandler);
			};
		}
		public function set repeatCount(_arg1:int):void{
			_repeatCount = _arg1;
		}
		private function delayTimerHandler(_arg1:TimerEvent):void{
			delayTimer.reset();
			delayStartTime = NaN;
			delayElapsedTime = NaN;
			play();
		}
		public function set suspendBackgroundProcessing(_arg1:Boolean):void{
			_suspendBackgroundProcessing = _arg1;
		}
		public function set triggerEvent(_arg1:Event):void{
			_triggerEvent = _arg1;
		}
		public function set startDelay(_arg1:int):void{
			_startDelay = _arg1;
		}
		public function get effect():IEffect{
			return (_effect);
		}
		public function set effectTargetHost(_arg1:IEffectTargetHost):void{
			_effectTargetHost = _arg1;
		}
		public function get target():Object{
			return (_target);
		}
		public function startEffect():void{
			EffectManager.effectStarted(this);
			if ((target is UIComponent)){
				UIComponent(target).effectStarted(this);
			};
			if ((((startDelay > 0)) && (!(playReversed)))){
				delayTimer = new Timer(startDelay, 1);
				delayStartTime = getTimer();
				delayTimer.addEventListener(TimerEvent.TIMER, delayTimerHandler);
				delayTimer.start();
			} else {
				play();
			};
		}
		public function get repeatDelay():int{
			return (_repeatDelay);
		}
		public function get duration():Number{
			if (((!(durationExplicitlySet)) && (parentCompositeEffectInstance))){
				return (parentCompositeEffectInstance.duration);
			};
			return (_duration);
		}
		public function initEffect(_arg1:Event):void{
			triggerEvent = _arg1;
			switch (_arg1.type){
				case "resizeStart":
				case "resizeEnd":
					if (!durationExplicitlySet){
						duration = 250;
					};
					break;
				case FlexEvent.HIDE:
					target.setVisible(true, true);
					hideOnEffectEnd = true;
					target.addEventListener(FlexEvent.SHOW, eventHandler);
					break;
			};
		}
		public function get triggerEvent():Event{
			return (_triggerEvent);
		}
		public function end():void{
			if (delayTimer){
				delayTimer.reset();
			};
			stopRepeat = true;
			finishEffect();
		}
		public function reverse():void{
			if (repeatCount > 0){
				playCount = ((repeatCount - playCount) + 1);
			};
		}
		public function pause():void{
			if (((((delayTimer) && (delayTimer.running))) && (!(isNaN(delayStartTime))))){
				delayTimer.stop();
				delayElapsedTime = (getTimer() - delayStartTime);
			};
		}

	}
}//package mx.effects 

****************

//EffectManager (mx.effects.EffectManager)
package mx.effects {
	import mx.core.*;
	import mx.events.*;
	import flash.events.*;
	import flash.display.*;
	import mx.resources.*;
	import flash.utils.*;

	public class EffectManager extends EventDispatcher {

		mx_internal static const VERSION:String = "3.5.0.12683";

		private static var _resourceManager:IResourceManager;
		private static var effects:Dictionary = new Dictionary(true);
		mx_internal static var effectsPlaying:Array = [];
		private static var targetsInfo:Array = [];
		private static var effectTriggersForEvent:Object = {};
		mx_internal static var lastEffectCreated:Effect;
		private static var eventHandlingSuspendCount:Number = 0;
		private static var eventsForEffectTriggers:Object = {};

		public static function suspendEventHandling():void{
			eventHandlingSuspendCount++;
		}
		mx_internal static function registerEffectTrigger(_arg1:String, _arg2:String):void{
			var _local3:Number;
			if (_arg1 != ""){
				if (_arg2 == ""){
					_local3 = _arg1.length;
					if ((((_local3 > 6)) && ((_arg1.substring((_local3 - 6)) == "Effect")))){
						_arg2 = _arg1.substring(0, (_local3 - 6));
					};
				};
				if (_arg2 != ""){
					effectTriggersForEvent[_arg2] = _arg1;
					eventsForEffectTriggers[_arg1] = _arg2;
				};
			};
		}
		private static function removedEffectHandler(_arg1:DisplayObject, _arg2:DisplayObjectContainer, _arg3:int, _arg4:Event):void{
			suspendEventHandling();
			_arg2.addChildAt(_arg1, _arg3);
			resumeEventHandling();
			createAndPlayEffect(_arg4, _arg1);
		}
		private static function createAndPlayEffect(_arg1:Event, _arg2:Object):void{
			var _local4:int;
			var _local5:int;
			var _local6:int;
			var _local7:int;
			var _local9:String;
			var _local10:String;
			var _local11:Array;
			var _local12:Array;
			var _local13:Array;
			var _local14:Array;
			var _local15:EffectInstance;
			var _local3:Effect = createEffectForType(_arg2, _arg1.type);
			if (!_local3){
				return;
			};
			if ((((_local3 is Zoom)) && ((_arg1.type == MoveEvent.MOVE)))){
				_local9 = resourceManager.getString("effects", "incorrectTrigger");
				throw (new Error(_local9));
			};
			if (_arg2.initialized == false){
				_local10 = _arg1.type;
				if ((((((((((_local10 == MoveEvent.MOVE)) || ((_local10 == ResizeEvent.RESIZE)))) || ((_local10 == FlexEvent.SHOW)))) || ((_local10 == FlexEvent.HIDE)))) || ((_local10 == Event.CHANGE)))){
					_local3 = null;
					return;
				};
			};
			if ((_local3.target is IUIComponent)){
				_local11 = IUIComponent(_local3.target).tweeningProperties;
				if (((_local11) && ((_local11.length > 0)))){
					_local12 = _local3.getAffectedProperties();
					_local4 = _local11.length;
					_local6 = _local12.length;
					_local5 = 0;
					while (_local5 < _local4) {
						_local7 = 0;
						while (_local7 < _local6) {
							if (_local11[_local5] == _local12[_local7]){
								_local3 = null;
								return;
							};
							_local7++;
						};
						_local5++;
					};
				};
			};
			if ((((_local3.target is UIComponent)) && (UIComponent(_local3.target).isEffectStarted))){
				_local13 = _local3.getAffectedProperties();
				_local5 = 0;
				while (_local5 < _local13.length) {
					_local14 = _local3.target.getEffectsForProperty(_local13[_local5]);
					if (_local14.length > 0){
						if (_arg1.type == ResizeEvent.RESIZE){
							return;
						};
						_local7 = 0;
						while (_local7 < _local14.length) {
							_local15 = _local14[_local7];
							if ((((_arg1.type == FlexEvent.SHOW)) && (_local15.hideOnEffectEnd))){
								_local15.target.removeEventListener(FlexEvent.SHOW, _local15.eventHandler);
								_local15.hideOnEffectEnd = false;
							};
							_local15.end();
							_local7++;
						};
					};
					_local5++;
				};
			};
			_local3.triggerEvent = _arg1;
			_local3.addEventListener(EffectEvent.EFFECT_END, EffectManager.effectEndHandler);
			lastEffectCreated = _local3;
			var _local8:Array = _local3.play();
			_local4 = _local8.length;
			_local5 = 0;
			while (_local5 < _local4) {
				effectsPlaying.push(new EffectNode(_local3, _local8[_local5]));
				_local5++;
			};
			if (_local3.suspendBackgroundProcessing){
				UIComponent.suspendBackgroundProcessing();
			};
		}
		public static function endEffectsForTarget(_arg1:IUIComponent):void{
			var _local4:EffectInstance;
			var _local2:int = effectsPlaying.length;
			var _local3:int = (_local2 - 1);
			while (_local3 >= 0) {
				_local4 = effectsPlaying[_local3].instance;
				if (_local4.target == _arg1){
					_local4.end();
				};
				_local3--;
			};
		}
		private static function cacheOrUncacheTargetAsBitmap(_arg1:IUIComponent, _arg2:Boolean=true, _arg3:Boolean=true):void{
			var _local4:int;
			var _local5:int;
			var _local6:Object;
			_local4 = targetsInfo.length;
			_local5 = 0;
			while (_local5 < _local4) {
				if (targetsInfo[_local5].target == _arg1){
					_local6 = targetsInfo[_local5];
					break;
				};
				_local5++;
			};
			if (!_local6){
				_local6 = {target:_arg1, bitmapEffectsCount:0, vectorEffectsCount:0};
				targetsInfo.push(_local6);
			};
			if (_arg2){
				if (_arg3){
					_local6.bitmapEffectsCount++;
					if ((((_local6.vectorEffectsCount == 0)) && ((_arg1 is IDeferredInstantiationUIComponent)))){
						IDeferredInstantiationUIComponent(_arg1).cacheHeuristic = true;
					};
				} else {
					if ((((((_local6.vectorEffectsCount++ == 0)) && ((_arg1 is IDeferredInstantiationUIComponent)))) && ((IDeferredInstantiationUIComponent(_arg1).cachePolicy == UIComponentCachePolicy.AUTO)))){
						_arg1.cacheAsBitmap = false;
					};
				};
			} else {
				if (_arg3){
					if (_local6.bitmapEffectsCount != 0){
						_local6.bitmapEffectsCount--;
					};
					if ((_arg1 is IDeferredInstantiationUIComponent)){
						IDeferredInstantiationUIComponent(_arg1).cacheHeuristic = false;
					};
				} else {
					if (_local6.vectorEffectsCount != 0){
						if ((((--_local6.vectorEffectsCount == 0)) && (!((_local6.bitmapEffectsCount == 0))))){
							_local4 = _local6.bitmapEffectsCount;
							_local5 = 0;
							while (_local5 < _local4) {
								if ((_arg1 is IDeferredInstantiationUIComponent)){
									IDeferredInstantiationUIComponent(_arg1).cacheHeuristic = true;
								};
								_local5++;
							};
						};
					};
				};
				if ((((_local6.bitmapEffectsCount == 0)) && ((_local6.vectorEffectsCount == 0)))){
					_local4 = targetsInfo.length;
					_local5 = 0;
					while (_local5 < _local4) {
						if (targetsInfo[_local5].target == _arg1){
							targetsInfo.splice(_local5, 1);
							break;
						};
						_local5++;
					};
				};
			};
		}
		mx_internal static function eventHandler(_arg1:Event):void{
			var _local2:FocusEvent;
			var _local3:DisplayObject;
			var _local4:int;
			var _local5:DisplayObjectContainer;
			var _local6:int;
			if (!(_arg1.currentTarget is IFlexDisplayObject)){
				return;
			};
			if (eventHandlingSuspendCount > 0){
				return;
			};
			if ((((_arg1 is FocusEvent)) && ((((_arg1.type == FocusEvent.FOCUS_OUT)) || ((_arg1.type == FocusEvent.FOCUS_IN)))))){
				_local2 = FocusEvent(_arg1);
				if (((_local2.relatedObject) && (((_local2.currentTarget.contains(_local2.relatedObject)) || ((_local2.currentTarget == _local2.relatedObject)))))){
					return;
				};
			};
			if ((((((_arg1.type == Event.ADDED)) || ((_arg1.type == Event.REMOVED)))) && (!((_arg1.target == _arg1.currentTarget))))){
				return;
			};
			if (_arg1.type == Event.REMOVED){
				if ((_arg1.target is UIComponent)){
					if (UIComponent(_arg1.target).initialized == false){
						return;
					};
					if (UIComponent(_arg1.target).isEffectStarted){
						_local4 = 0;
						while (_local4 < UIComponent(_arg1.target)._effectsStarted.length) {
							if (UIComponent(_arg1.target)._effectsStarted[_local4].triggerEvent.type == Event.REMOVED){
								return;
							};
							_local4++;
						};
					};
				};
				_local3 = (_arg1.target as DisplayObject);
				if (_local3 != null){
					_local5 = (_local3.parent as DisplayObjectContainer);
					if (_local5 != null){
						_local6 = _local5.getChildIndex(_local3);
						if (_local6 >= 0){
							if ((_local3 is UIComponent)){
								UIComponent(_local3).callLater(removedEffectHandler, [_local3, _local5, _local6, _arg1]);
							};
						};
					};
				};
			} else {
				createAndPlayEffect(_arg1, _arg1.currentTarget);
			};
		}
		mx_internal static function endBitmapEffect(_arg1:IUIComponent):void{
			cacheOrUncacheTargetAsBitmap(_arg1, false, true);
		}
		private static function animateSameProperty(_arg1:Effect, _arg2:Effect, _arg3:EffectInstance):Boolean{
			var _local4:Array;
			var _local5:Array;
			var _local6:int;
			var _local7:int;
			var _local8:int;
			var _local9:int;
			if (_arg1.target == _arg3.target){
				_local4 = _arg1.getAffectedProperties();
				_local5 = _arg2.getAffectedProperties();
				_local6 = _local4.length;
				_local7 = _local5.length;
				_local8 = 0;
				while (_local8 < _local6) {
					_local9 = 0;
					while (_local9 < _local7) {
						if (_local4[_local8] == _local5[_local9]){
							return (true);
						};
						_local9++;
					};
					_local8++;
				};
			};
			return (false);
		}
		mx_internal static function effectFinished(_arg1:EffectInstance):void{
			delete effects[_arg1];
		}
		mx_internal static function effectsInEffect():Boolean{
			var _local1:*;
			for (_local1 in effects) {
				return (true);
			};
			return (false);
		}
		mx_internal static function effectEndHandler(_arg1:EffectEvent):void{
			var _local5:DisplayObject;
			var _local6:DisplayObjectContainer;
			var _local2:IEffectInstance = _arg1.effectInstance;
			var _local3:int = effectsPlaying.length;
			var _local4:int = (_local3 - 1);
			while (_local4 >= 0) {
				if (effectsPlaying[_local4].instance == _local2){
					effectsPlaying.splice(_local4, 1);
					break;
				};
				_local4--;
			};
			if (Object(_local2).hideOnEffectEnd == true){
				_local2.target.removeEventListener(FlexEvent.SHOW, Object(_local2).eventHandler);
				_local2.target.setVisible(false, true);
			};
			if (((_local2.triggerEvent) && ((_local2.triggerEvent.type == Event.REMOVED)))){
				_local5 = (_local2.target as DisplayObject);
				if (_local5 != null){
					_local6 = (_local5.parent as DisplayObjectContainer);
					if (_local6 != null){
						suspendEventHandling();
						_local6.removeChild(_local5);
						resumeEventHandling();
					};
				};
			};
			if (_local2.suspendBackgroundProcessing){
				UIComponent.resumeBackgroundProcessing();
			};
		}
		mx_internal static function startBitmapEffect(_arg1:IUIComponent):void{
			cacheOrUncacheTargetAsBitmap(_arg1, true, true);
		}
		mx_internal static function setStyle(_arg1:String, _arg2):void{
			var _local3:String = eventsForEffectTriggers[_arg1];
			if (((!((_local3 == null))) && (!((_local3 == ""))))){
				_arg2.addEventListener(_local3, EffectManager.eventHandler, false, EventPriority.EFFECT);
			};
		}
		mx_internal static function getEventForEffectTrigger(_arg1:String):String{
			var effectTrigger = _arg1;
			if (eventsForEffectTriggers){
				try {
					return (eventsForEffectTriggers[effectTrigger]);
				} catch(e:Error) {
					return ("");
				};
			};
			return ("");
		}
		mx_internal static function createEffectForType(_arg1:Object, _arg2:String):Effect{
			var cls:Class;
			var effectObj:Effect;
			var doc:Object;
			var target = _arg1;
			var type = _arg2;
			var trigger:String = effectTriggersForEvent[type];
			if (trigger == ""){
				trigger = (type + "Effect");
			};
			var value:Object = target.getStyle(trigger);
			if (!value){
				return (null);
			};
			if ((value is Class)){
				cls = Class(value);
				return (new cls(target));
			};
			try {
				if ((value is String)){
					doc = target.parentDocument;
					if (!doc){
						doc = ApplicationGlobals.application;
					};
					effectObj = doc[value];
				} else {
					if ((value is Effect)){
						effectObj = Effect(value);
					};
				};
				if (effectObj){
					effectObj.target = target;
					return (effectObj);
				};
			} catch(e:Error) {
			};
			var effectClass:Class = Class(target.systemManager.getDefinitionByName(("mx.effects." + value)));
			if (effectClass){
				return (new effectClass(target));
			};
			return (null);
		}
		mx_internal static function effectStarted(_arg1:EffectInstance):void{
			effects[_arg1] = 1;
		}
		public static function resumeEventHandling():void{
			eventHandlingSuspendCount--;
		}
		mx_internal static function startVectorEffect(_arg1:IUIComponent):void{
			cacheOrUncacheTargetAsBitmap(_arg1, true, false);
		}
		mx_internal static function endVectorEffect(_arg1:IUIComponent):void{
			cacheOrUncacheTargetAsBitmap(_arg1, false, false);
		}
		private static function get resourceManager():IResourceManager{
			if (!_resourceManager){
				_resourceManager = ResourceManager.getInstance();
			};
			return (_resourceManager);
		}

	}
}//package mx.effects 

class EffectNode {

	public var factory:Effect;
	public var instance:EffectInstance;

	private function EffectNode(_arg1:Effect, _arg2:EffectInstance){
		this.factory = _arg1;
		this.instance = _arg2;
	}
}

****************

//EffectTargetFilter (mx.effects.EffectTargetFilter)
package mx.effects {
	import mx.effects.effectClasses.*;

	public class EffectTargetFilter {

		public var filterFunction:Function;
		public var filterStyles:Array;
		public var filterProperties:Array;
		public var requiredSemantics:Object;// = null

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function EffectTargetFilter(){
			filterFunction = defaultFilterFunctionEx;
			filterProperties = [];
			filterStyles = [];
			super();
		}
		protected function defaultFilterFunctionEx(_arg1:Array, _arg2:IEffectTargetHost, _arg3:Object):Boolean{
			var _local4:String;
			if (requiredSemantics){
				for (_local4 in requiredSemantics) {
					if (!_arg2){
						return (false);
					};
					if (_arg2.getRendererSemanticValue(_arg3, _local4) != requiredSemantics[_local4]){
						return (false);
					};
				};
				return (true);
			};
			return (defaultFilterFunction(_arg1, _arg3));
		}
		protected function defaultFilterFunction(_arg1:Array, _arg2:Object):Boolean{
			var _local5:PropertyChanges;
			var _local6:Array;
			var _local7:int;
			var _local8:int;
			var _local3:int = _arg1.length;
			var _local4:int;
			while (_local4 < _local3) {
				_local5 = _arg1[_local4];
				if (_local5.target == _arg2){
					_local6 = filterProperties.concat(filterStyles);
					_local7 = _local6.length;
					_local8 = 0;
					while (_local8 < _local7) {
						if (((!((_local5.start[_local6[_local8]] === undefined))) && (!((_local5.end[_local6[_local8]] == _local5.start[_local6[_local8]]))))){
							return (true);
						};
						_local8++;
					};
				};
				_local4++;
			};
			return (false);
		}
		public function filterInstance(_arg1:Array, _arg2:IEffectTargetHost, _arg3:Object):Boolean{
			if (filterFunction.length == 2){
				return (filterFunction(_arg1, _arg3));
			};
			return (filterFunction(_arg1, _arg2, _arg3));
		}

	}
}//package mx.effects 

****************

//IAbstractEffect (mx.effects.IAbstractEffect)
package mx.effects {
	import flash.events.*;

	public interface IAbstractEffect extends IEventDispatcher {

	}
}//package mx.effects 

****************

//IEffect (mx.effects.IEffect)
package mx.effects {
	import flash.events.*;

	public interface IEffect extends IAbstractEffect {

		function captureMoreStartValues(_arg1:Array):void;
		function get triggerEvent():Event;
		function set targets(_arg1:Array):void;
		function captureStartValues():void;
		function get hideFocusRing():Boolean;
		function get customFilter():EffectTargetFilter;
		function get effectTargetHost():IEffectTargetHost;
		function set triggerEvent(_arg1:Event):void;
		function set hideFocusRing(_arg1:Boolean):void;
		function captureEndValues():void;
		function get target():Object;
		function set customFilter(_arg1:EffectTargetFilter):void;
		function get duration():Number;
		function get perElementOffset():Number;
		function get targets():Array;
		function set effectTargetHost(_arg1:IEffectTargetHost):void;
		function get relevantStyles():Array;
		function set relevantProperties(_arg1:Array):void;
		function set target(_arg1:Object):void;
		function get className():String;
		function get isPlaying():Boolean;
		function deleteInstance(_arg1:IEffectInstance):void;
		function set duration(_arg1:Number):void;
		function createInstances(_arg1:Array=null):Array;
		function end(_arg1:IEffectInstance=null):void;
		function set perElementOffset(_arg1:Number):void;
		function resume():void;
		function stop():void;
		function set filter(_arg1:String):void;
		function createInstance(_arg1:Object=null):IEffectInstance;
		function play(_arg1:Array=null, _arg2:Boolean=false):Array;
		function pause():void;
		function get relevantProperties():Array;
		function get filter():String;
		function reverse():void;
		function getAffectedProperties():Array;
		function set relevantStyles(_arg1:Array):void;

	}
}//package mx.effects 

****************

//IEffectInstance (mx.effects.IEffectInstance)
package mx.effects {
	import flash.events.*;
	import mx.effects.effectClasses.*;

	public interface IEffectInstance {

		function get playheadTime():Number;
		function get triggerEvent():Event;
		function set triggerEvent(_arg1:Event):void;
		function get hideFocusRing():Boolean;
		function initEffect(_arg1:Event):void;
		function set startDelay(_arg1:int):void;
		function get effectTargetHost():IEffectTargetHost;
		function finishEffect():void;
		function set hideFocusRing(_arg1:Boolean):void;
		function finishRepeat():void;
		function set repeatDelay(_arg1:int):void;
		function get effect():IEffect;
		function startEffect():void;
		function get duration():Number;
		function get target():Object;
		function get startDelay():int;
		function stop():void;
		function set effectTargetHost(_arg1:IEffectTargetHost):void;
		function set propertyChanges(_arg1:PropertyChanges):void;
		function set effect(_arg1:IEffect):void;
		function get className():String;
		function set duration(_arg1:Number):void;
		function set target(_arg1:Object):void;
		function end():void;
		function resume():void;
		function get propertyChanges():PropertyChanges;
		function set repeatCount(_arg1:int):void;
		function reverse():void;
		function get repeatCount():int;
		function pause():void;
		function get repeatDelay():int;
		function set suspendBackgroundProcessing(_arg1:Boolean):void;
		function play():void;
		function get suspendBackgroundProcessing():Boolean;

	}
}//package mx.effects 

****************

//IEffectTargetHost (mx.effects.IEffectTargetHost)
package mx.effects {

	public interface IEffectTargetHost {

		function unconstrainRenderer(_arg1:Object):void;
		function removeDataEffectItem(_arg1:Object):void;
		function getRendererSemanticValue(_arg1:Object, _arg2:String):Object;
		function addDataEffectItem(_arg1:Object):void;

	}
}//package mx.effects 

****************

//Tween (mx.effects.Tween)
package mx.effects {
	import mx.core.*;
	import mx.events.*;
	import flash.events.*;
	import flash.utils.*;

	public class Tween extends EventDispatcher {

		private var started:Boolean;// = false
		private var previousUpdateTime:Number;
		public var duration:Number;// = 3000
		private var id:int;
		private var arrayMode:Boolean;
		private var _isPlaying:Boolean;// = true
		private var startValue:Object;
		public var listener:Object;
		private var userEquation:Function;
		mx_internal var needToLayout:Boolean;// = false
		private var updateFunction:Function;
		private var _doSeek:Boolean;// = false
		mx_internal var startTime:Number;
		private var endFunction:Function;
		private var endValue:Object;
		private var _doReverse:Boolean;// = false
		private var _playheadTime:Number;// = 0
		private var _invertValues:Boolean;// = false
		private var maxDelay:Number;// = 87.5

		mx_internal static const VERSION:String = "3.5.0.12683";

		private static var timer:Timer = null;
		private static var interval:Number = 10;
		mx_internal static var activeTweens:Array = [];
		mx_internal static var intervalTime:Number = NAN;

		public function Tween(_arg1:Object, _arg2:Object, _arg3:Object, _arg4:Number=-1, _arg5:Number=-1, _arg6:Function=null, _arg7:Function=null){
			userEquation = defaultEasingFunction;
			super();
			if (!_arg1){
				return;
			};
			if ((_arg2 is Array)){
				arrayMode = true;
			};
			this.listener = _arg1;
			this.startValue = _arg2;
			this.endValue = _arg3;
			if (((!(isNaN(_arg4))) && (!((_arg4 == -1))))){
				this.duration = _arg4;
			};
			if (((!(isNaN(_arg5))) && (!((_arg5 == -1))))){
				maxDelay = (1000 / _arg5);
			};
			this.updateFunction = _arg6;
			this.endFunction = _arg7;
			if (_arg4 == 0){
				id = -1;
				endTween();
			} else {
				Tween.addTween(this);
			};
		}
		mx_internal function get playheadTime():Number{
			return (_playheadTime);
		}
		public function stop():void{
			if (id >= 0){
				Tween.removeTweenAt(id);
			};
		}
		mx_internal function get playReversed():Boolean{
			return (_invertValues);
		}
		mx_internal function set playReversed(_arg1:Boolean):void{
			_invertValues = _arg1;
		}
		public function resume():void{
			_isPlaying = true;
			startTime = (intervalTime - _playheadTime);
			if (_doReverse){
				reverse();
				_doReverse = false;
			};
		}
		public function setTweenHandlers(_arg1:Function, _arg2:Function):void{
			this.updateFunction = _arg1;
			this.endFunction = _arg2;
		}
		private function defaultEasingFunction(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
			return ((((_arg3 / 2) * (Math.sin((Math.PI * ((_arg1 / _arg4) - 0.5))) + 1)) + _arg2));
		}
		public function set easingFunction(_arg1:Function):void{
			userEquation = _arg1;
		}
		public function endTween():void{
			var _local1:TweenEvent = new TweenEvent(TweenEvent.TWEEN_END);
			var _local2:Object = getCurrentValue(duration);
			_local1.value = _local2;
			dispatchEvent(_local1);
			if (endFunction != null){
				endFunction(_local2);
			} else {
				listener.onTweenEnd(_local2);
			};
			if (id >= 0){
				Tween.removeTweenAt(id);
			};
		}
		public function reverse():void{
			if (_isPlaying){
				_doReverse = false;
				seek((duration - _playheadTime));
				_invertValues = !(_invertValues);
			} else {
				_doReverse = !(_doReverse);
			};
		}
		mx_internal function getCurrentValue(_arg1:Number):Object{
			var _local2:Array;
			var _local3:int;
			var _local4:int;
			if (duration == 0){
				return (endValue);
			};
			if (_invertValues){
				_arg1 = (duration - _arg1);
			};
			if (arrayMode){
				_local2 = [];
				_local3 = startValue.length;
				_local4 = 0;
				while (_local4 < _local3) {
					_local2[_local4] = userEquation(_arg1, startValue[_local4], (endValue[_local4] - startValue[_local4]), duration);
					_local4++;
				};
				return (_local2);
				//unresolved jump
			};
			return (userEquation(_arg1, startValue, (Number(endValue) - Number(startValue)), duration));
		}
		mx_internal function doInterval():Boolean{
			var _local2:Number;
			var _local3:Object;
			var _local4:TweenEvent;
			var _local5:TweenEvent;
			var _local1:Boolean;
			previousUpdateTime = intervalTime;
			if (((_isPlaying) || (_doSeek))){
				_local2 = (intervalTime - startTime);
				_playheadTime = _local2;
				_local3 = getCurrentValue(_local2);
				if ((((_local2 >= duration)) && (!(_doSeek)))){
					endTween();
					_local1 = true;
				} else {
					if (!started){
						_local5 = new TweenEvent(TweenEvent.TWEEN_START);
						dispatchEvent(_local5);
						started = true;
					};
					_local4 = new TweenEvent(TweenEvent.TWEEN_UPDATE);
					_local4.value = _local3;
					dispatchEvent(_local4);
					if (updateFunction != null){
						updateFunction(_local3);
					} else {
						listener.onTweenUpdate(_local3);
					};
				};
				_doSeek = false;
			};
			return (_local1);
		}
		public function pause():void{
			_isPlaying = false;
		}
		public function seek(_arg1:Number):void{
			var _local2:Number = intervalTime;
			previousUpdateTime = _local2;
			startTime = (_local2 - _arg1);
			_doSeek = true;
		}

		mx_internal static function removeTween(_arg1:Tween):void{
			removeTweenAt(_arg1.id);
		}
		private static function addTween(_arg1:Tween):void{
			_arg1.id = activeTweens.length;
			activeTweens.push(_arg1);
			if (!timer){
				timer = new Timer(interval);
				timer.addEventListener(TimerEvent.TIMER, timerHandler);
				timer.start();
			} else {
				timer.start();
			};
			if (isNaN(intervalTime)){
				intervalTime = getTimer();
			};
			_arg1.startTime = (_arg1.previousUpdateTime = intervalTime);
		}
		private static function timerHandler(_arg1:TimerEvent):void{
			var _local6:Tween;
			var _local2:Boolean;
			var _local3:Number = intervalTime;
			intervalTime = getTimer();
			var _local4:int = activeTweens.length;
			var _local5:int = _local4;
			while (_local5 >= 0) {
				_local6 = Tween(activeTweens[_local5]);
				if (_local6){
					_local6.needToLayout = false;
					_local6.doInterval();
					if (_local6.needToLayout){
						_local2 = true;
					};
				};
				_local5--;
			};
			if (_local2){
				UIComponentGlobals.layoutManager.validateNow();
			};
			_arg1.updateAfterEvent();
		}
		private static function removeTweenAt(_arg1:int):void{
			var _local4:Tween;
			if ((((_arg1 >= activeTweens.length)) || ((_arg1 < 0)))){
				return;
			};
			activeTweens.splice(_arg1, 1);
			var _local2:int = activeTweens.length;
			var _local3:int = _arg1;
			while (_local3 < _local2) {
				_local4 = Tween(activeTweens[_local3]);
				_local4.id--;
				_local3++;
			};
			if (_local2 == 0){
				intervalTime = NaN;
				timer.reset();
			};
		}

	}
}//package mx.effects 

****************

//TweenEffect (mx.effects.TweenEffect)
package mx.effects {
	import mx.events.*;
	import flash.events.*;
	import mx.effects.effectClasses.*;

	public class TweenEffect extends Effect {

		public var easingFunction:Function;// = null

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function TweenEffect(_arg1:Object=null){
			super(_arg1);
			instanceClass = TweenEffectInstance;
		}
		protected function tweenEventHandler(_arg1:TweenEvent):void{
			dispatchEvent(_arg1);
		}
		override protected function initInstance(_arg1:IEffectInstance):void{
			super.initInstance(_arg1);
			TweenEffectInstance(_arg1).easingFunction = easingFunction;
			EventDispatcher(_arg1).addEventListener(TweenEvent.TWEEN_START, tweenEventHandler);
			EventDispatcher(_arg1).addEventListener(TweenEvent.TWEEN_UPDATE, tweenEventHandler);
			EventDispatcher(_arg1).addEventListener(TweenEvent.TWEEN_END, tweenEventHandler);
		}

	}
}//package mx.effects 

****************

//Zoom (mx.effects.Zoom)
package mx.effects {
	import mx.effects.effectClasses.*;

	public class Zoom extends TweenEffect {

		public var zoomHeightFrom:Number;
		public var zoomWidthTo:Number;
		public var originX:Number;
		public var zoomHeightTo:Number;
		public var originY:Number;
		public var captureRollEvents:Boolean;
		public var zoomWidthFrom:Number;

		mx_internal static const VERSION:String = "3.5.0.12683";

		private static var AFFECTED_PROPERTIES:Array = ["scaleX", "scaleY", "x", "y", "width", "height"];

		public function Zoom(_arg1:Object=null){
			super(_arg1);
			instanceClass = ZoomInstance;
			applyActualDimensions = false;
			relevantProperties = ["scaleX", "scaleY", "width", "height", "visible"];
		}
		override protected function initInstance(_arg1:IEffectInstance):void{
			var _local2:ZoomInstance;
			super.initInstance(_arg1);
			_local2 = ZoomInstance(_arg1);
			_local2.zoomWidthFrom = zoomWidthFrom;
			_local2.zoomWidthTo = zoomWidthTo;
			_local2.zoomHeightFrom = zoomHeightFrom;
			_local2.zoomHeightTo = zoomHeightTo;
			_local2.originX = originX;
			_local2.originY = originY;
			_local2.captureRollEvents = captureRollEvents;
		}
		override public function getAffectedProperties():Array{
			return (AFFECTED_PROPERTIES);
		}

	}
}//package mx.effects 

****************

//ChildExistenceChangedEvent (mx.events.ChildExistenceChangedEvent)
package mx.events {
	import flash.events.*;
	import flash.display.*;

	public class ChildExistenceChangedEvent extends Event {

		public var relatedObject:DisplayObject;

		public static const CHILD_REMOVE:String = "childRemove";
		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const OVERLAY_CREATED:String = "overlayCreated";
		public static const CHILD_ADD:String = "childAdd";

		public function ChildExistenceChangedEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:DisplayObject=null){
			super(_arg1, _arg2, _arg3);
			this.relatedObject = _arg4;
		}
		override public function clone():Event{
			return (new ChildExistenceChangedEvent(type, bubbles, cancelable, relatedObject));
		}

	}
}//package mx.events 

****************

//CollectionEvent (mx.events.CollectionEvent)
package mx.events {
	import flash.events.*;

	public class CollectionEvent extends Event {

		public var kind:String;
		public var location:int;
		public var items:Array;
		public var oldLocation:int;

		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const COLLECTION_CHANGE:String = "collectionChange";

		public function CollectionEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:String=null, _arg5:int=-1, _arg6:int=-1, _arg7:Array=null){
			super(_arg1, _arg2, _arg3);
			this.kind = _arg4;
			this.location = _arg5;
			this.oldLocation = _arg6;
			this.items = (_arg7) ? _arg7 : [];
		}
		override public function toString():String{
			return (formatToString("CollectionEvent", "kind", "location", "oldLocation", "type", "bubbles", "cancelable", "eventPhase"));
		}
		override public function clone():Event{
			return (new CollectionEvent(type, bubbles, cancelable, kind, location, oldLocation, items));
		}

	}
}//package mx.events 

****************

//CollectionEventKind (mx.events.CollectionEventKind)
package mx.events {

	public final class CollectionEventKind {

		public static const ADD:String = "add";
		public static const REMOVE:String = "remove";
		public static const UPDATE:String = "update";
		public static const MOVE:String = "move";
		mx_internal static const EXPAND:String = "expand";
		public static const REPLACE:String = "replace";
		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const REFRESH:String = "refresh";
		public static const RESET:String = "reset";

	}
}//package mx.events 

****************

//DragEvent (mx.events.DragEvent)
package mx.events {
	import mx.core.*;
	import flash.events.*;

	public class DragEvent extends MouseEvent {

		public var draggedItem:Object;
		public var action:String;
		public var dragInitiator:IUIComponent;
		public var dragSource:DragSource;

		public static const DRAG_DROP:String = "dragDrop";
		public static const DRAG_COMPLETE:String = "dragComplete";
		public static const DRAG_EXIT:String = "dragExit";
		public static const DRAG_ENTER:String = "dragEnter";
		public static const DRAG_START:String = "dragStart";
		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const DRAG_OVER:String = "dragOver";

		public function DragEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=true, _arg4:IUIComponent=null, _arg5:DragSource=null, _arg6:String=null, _arg7:Boolean=false, _arg8:Boolean=false, _arg9:Boolean=false){
			super(_arg1, _arg2, _arg3);
			this.dragInitiator = _arg4;
			this.dragSource = _arg5;
			this.action = _arg6;
			this.ctrlKey = _arg7;
			this.altKey = _arg8;
			this.shiftKey = _arg9;
		}
		override public function clone():Event{
			var _local1:DragEvent = new DragEvent(type, bubbles, cancelable, dragInitiator, dragSource, action, ctrlKey, altKey, shiftKey);
			_local1.relatedObject = this.relatedObject;
			_local1.localX = this.localX;
			_local1.localY = this.localY;
			return (_local1);
		}

	}
}//package mx.events 

****************

//DynamicEvent (mx.events.DynamicEvent)
package mx.events {
	import flash.events.*;

	public dynamic class DynamicEvent extends Event {

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function DynamicEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){
			super(_arg1, _arg2, _arg3);
		}
		override public function clone():Event{
			var _local2:String;
			var _local1:DynamicEvent = new DynamicEvent(type, bubbles, cancelable);
			for (_local2 in this) {
				_local1[_local2] = this[_local2];
			};
			return (_local1);
		}

	}
}//package mx.events 

****************

//EffectEvent (mx.events.EffectEvent)
package mx.events {
	import flash.events.*;
	import mx.effects.*;

	public class EffectEvent extends Event {

		public var effectInstance:IEffectInstance;

		public static const EFFECT_START:String = "effectStart";
		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const EFFECT_END:String = "effectEnd";

		public function EffectEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:IEffectInstance=null){
			super(_arg1, _arg2, _arg3);
			this.effectInstance = _arg4;
		}
		override public function clone():Event{
			return (new EffectEvent(type, bubbles, cancelable, effectInstance));
		}

	}
}//package mx.events 

****************

//EventListenerRequest (mx.events.EventListenerRequest)
package mx.events {
	import mx.core.*;
	import flash.events.*;

	public class EventListenerRequest extends SWFBridgeRequest {

		private var _priority:int;
		private var _useWeakReference:Boolean;
		private var _eventType:String;
		private var _useCapture:Boolean;

		public static const REMOVE_EVENT_LISTENER_REQUEST:String = "removeEventListenerRequest";
		public static const ADD_EVENT_LISTENER_REQUEST:String = "addEventListenerRequest";
		mx_internal static const VERSION:String = "3.5.0.12683";

		public function EventListenerRequest(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=true, _arg4:String=null, _arg5:Boolean=false, _arg6:int=0, _arg7:Boolean=false){
			super(_arg1, false, false);
			_eventType = _arg4;
			_useCapture = _arg5;
			_priority = _arg6;
			_useWeakReference = _arg7;
		}
		public function get priority():int{
			return (_priority);
		}
		public function get useWeakReference():Boolean{
			return (_useWeakReference);
		}
		public function get eventType():String{
			return (_eventType);
		}
		override public function clone():Event{
			return (new EventListenerRequest(type, bubbles, cancelable, eventType, useCapture, priority, useWeakReference));
		}
		public function get useCapture():Boolean{
			return (_useCapture);
		}

		public static function marshal(_arg1:Event):EventListenerRequest{
			var _local2:Object = _arg1;
			return (new EventListenerRequest(_local2.type, _local2.bubbles, _local2.cancelable, _local2.eventType, _local2.useCapture, _local2.priority, _local2.useWeakReference));
		}

	}
}//package mx.events 

****************

//FlexChangeEvent (mx.events.FlexChangeEvent)
package mx.events {
	import mx.core.*;
	import flash.events.*;

	public class FlexChangeEvent extends Event {

		public var data:Object;

		public static const REMOVE_CHILD_BRIDGE:String = "removeChildBridge";
		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const ADD_CHILD_BRIDGE:String = "addChildBridge";

		public function FlexChangeEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:Object=null){
			super(_arg1, _arg2, _arg3);
			this.data = _arg4;
		}
		override public function clone():Event{
			return (new FlexChangeEvent(type, bubbles, cancelable, data));
		}

	}
}//package mx.events 

****************

//FlexEvent (mx.events.FlexEvent)
package mx.events {
	import mx.core.*;
	import flash.events.*;

	public class FlexEvent extends Event {

		public static const ADD:String = "add";
		public static const TRANSFORM_CHANGE:String = "transformChange";
		public static const ENTER_FRAME:String = "flexEventEnterFrame";
		public static const INIT_COMPLETE:String = "initComplete";
		public static const REMOVE:String = "remove";
		public static const BUTTON_DOWN:String = "buttonDown";
		public static const EXIT_STATE:String = "exitState";
		public static const CREATION_COMPLETE:String = "creationComplete";
		public static const REPEAT:String = "repeat";
		public static const LOADING:String = "loading";
		public static const RENDER:String = "flexEventRender";
		public static const REPEAT_START:String = "repeatStart";
		public static const INITIALIZE:String = "initialize";
		public static const ENTER_STATE:String = "enterState";
		public static const URL_CHANGED:String = "urlChanged";
		public static const REPEAT_END:String = "repeatEnd";
		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const HIDE:String = "hide";
		public static const ENTER:String = "enter";
		public static const PRELOADER_DONE:String = "preloaderDone";
		public static const CURSOR_UPDATE:String = "cursorUpdate";
		public static const PREINITIALIZE:String = "preinitialize";
		public static const INVALID:String = "invalid";
		public static const IDLE:String = "idle";
		public static const VALID:String = "valid";
		public static const DATA_CHANGE:String = "dataChange";
		public static const APPLICATION_COMPLETE:String = "applicationComplete";
		public static const VALUE_COMMIT:String = "valueCommit";
		public static const UPDATE_COMPLETE:String = "updateComplete";
		public static const INIT_PROGRESS:String = "initProgress";
		public static const SHOW:String = "show";

		public function FlexEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){
			super(_arg1, _arg2, _arg3);
		}
		override public function clone():Event{
			return (new FlexEvent(type, bubbles, cancelable));
		}

	}
}//package mx.events 

****************

//FlexMouseEvent (mx.events.FlexMouseEvent)
package mx.events {
	import flash.events.*;
	import flash.display.*;

	public class FlexMouseEvent extends MouseEvent {

		public static const MOUSE_DOWN_OUTSIDE:String = "mouseDownOutside";
		public static const MOUSE_WHEEL_OUTSIDE:String = "mouseWheelOutside";
		mx_internal static const VERSION:String = "3.5.0.12683";

		public function FlexMouseEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:Number=0, _arg5:Number=0, _arg6:InteractiveObject=null, _arg7:Boolean=false, _arg8:Boolean=false, _arg9:Boolean=false, _arg10:Boolean=false, _arg11:int=0){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, _arg11);
		}
		override public function clone():Event{
			return (new FlexMouseEvent(type, bubbles, cancelable, localX, localY, relatedObject, ctrlKey, altKey, shiftKey, buttonDown, delta));
		}

	}
}//package mx.events 

****************

//FocusRequestDirection (mx.events.FocusRequestDirection)
package mx.events {

	public final class FocusRequestDirection {

		public static const BACKWARD:String = "backward";
		public static const FORWARD:String = "forward";
		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const BOTTOM:String = "bottom";
		public static const TOP:String = "top";

	}
}//package mx.events 

****************

//IndexChangedEvent (mx.events.IndexChangedEvent)
package mx.events {
	import flash.events.*;
	import flash.display.*;

	public class IndexChangedEvent extends Event {

		public var newIndex:Number;
		public var triggerEvent:Event;
		public var relatedObject:DisplayObject;
		public var oldIndex:Number;

		public static const HEADER_SHIFT:String = "headerShift";
		public static const CHANGE:String = "change";
		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const CHILD_INDEX_CHANGE:String = "childIndexChange";

		public function IndexChangedEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:DisplayObject=null, _arg5:Number=-1, _arg6:Number=-1, _arg7:Event=null){
			super(_arg1, _arg2, _arg3);
			this.relatedObject = _arg4;
			this.oldIndex = _arg5;
			this.newIndex = _arg6;
			this.triggerEvent = _arg7;
		}
		override public function clone():Event{
			return (new IndexChangedEvent(type, bubbles, cancelable, relatedObject, oldIndex, newIndex, triggerEvent));
		}

	}
}//package mx.events 

****************

//InterManagerRequest (mx.events.InterManagerRequest)
package mx.events {
	import mx.core.*;
	import flash.events.*;

	public class InterManagerRequest extends Event {

		public var value:Object;
		public var name:String;

		public static const TOOLTIP_MANAGER_REQUEST:String = "tooltipManagerRequest";
		public static const SYSTEM_MANAGER_REQUEST:String = "systemManagerRequest";
		public static const INIT_MANAGER_REQUEST:String = "initManagerRequest";
		public static const DRAG_MANAGER_REQUEST:String = "dragManagerRequest";
		public static const CURSOR_MANAGER_REQUEST:String = "cursorManagerRequest";
		mx_internal static const VERSION:String = "3.5.0.12683";

		public function InterManagerRequest(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:String=null, _arg5:Object=null){
			super(_arg1, _arg2, _arg3);
			this.name = _arg4;
			this.value = _arg5;
		}
		override public function clone():Event{
			var _local1:InterManagerRequest = new InterManagerRequest(type, bubbles, cancelable, name, value);
			return (_local1);
		}

	}
}//package mx.events 

****************

//InvalidateRequestData (mx.events.InvalidateRequestData)
package mx.events {
	import mx.core.*;

	public final class InvalidateRequestData {

		public static const SIZE:uint = 4;
		public static const PROPERTIES:uint = 2;
		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const DISPLAY_LIST:uint = 1;

	}
}//package mx.events 

****************

//ModuleEvent (mx.events.ModuleEvent)
package mx.events {
	import mx.core.*;
	import flash.events.*;
	import mx.modules.*;

	public class ModuleEvent extends ProgressEvent {

		public var errorText:String;
		private var _module:IModuleInfo;

		public static const READY:String = "ready";
		public static const ERROR:String = "error";
		public static const PROGRESS:String = "progress";
		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const SETUP:String = "setup";
		public static const UNLOAD:String = "unload";

		public function ModuleEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:uint=0, _arg5:uint=0, _arg6:String=null, _arg7:IModuleInfo=null){
			super(_arg1, _arg2, _arg3, _arg4, _arg5);
			this.errorText = _arg6;
			this._module = _arg7;
		}
		public function get module():IModuleInfo{
			if (_module){
				return (_module);
			};
			return ((target as IModuleInfo));
		}
		override public function clone():Event{
			return (new ModuleEvent(type, bubbles, cancelable, bytesLoaded, bytesTotal, errorText, module));
		}

	}
}//package mx.events 

****************

//MoveEvent (mx.events.MoveEvent)
package mx.events {
	import flash.events.*;

	public class MoveEvent extends Event {

		public var oldX:Number;
		public var oldY:Number;

		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const MOVE:String = "move";

		public function MoveEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:Number=NaN, _arg5:Number=NaN){
			super(_arg1, _arg2, _arg3);
			this.oldX = _arg4;
			this.oldY = _arg5;
		}
		override public function clone():Event{
			return (new MoveEvent(type, bubbles, cancelable, oldX, oldY));
		}

	}
}//package mx.events 

****************

//PropertyChangeEvent (mx.events.PropertyChangeEvent)
package mx.events {
	import flash.events.*;

	public class PropertyChangeEvent extends Event {

		public var newValue:Object;
		public var kind:String;
		public var property:Object;
		public var oldValue:Object;
		public var source:Object;

		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const PROPERTY_CHANGE:String = "propertyChange";

		public function PropertyChangeEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:String=null, _arg5:Object=null, _arg6:Object=null, _arg7:Object=null, _arg8:Object=null){
			super(_arg1, _arg2, _arg3);
			this.kind = _arg4;
			this.property = _arg5;
			this.oldValue = _arg6;
			this.newValue = _arg7;
			this.source = _arg8;
		}
		override public function clone():Event{
			return (new PropertyChangeEvent(type, bubbles, cancelable, kind, property, oldValue, newValue, source));
		}

		public static function createUpdateEvent(_arg1:Object, _arg2:Object, _arg3:Object, _arg4:Object):PropertyChangeEvent{
			var _local5:PropertyChangeEvent = new PropertyChangeEvent(PROPERTY_CHANGE);
			_local5.kind = PropertyChangeEventKind.UPDATE;
			_local5.oldValue = _arg3;
			_local5.newValue = _arg4;
			_local5.source = _arg1;
			_local5.property = _arg2;
			return (_local5);
		}

	}
}//package mx.events 

****************

//PropertyChangeEventKind (mx.events.PropertyChangeEventKind)
package mx.events {

	public final class PropertyChangeEventKind {

		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const UPDATE:String = "update";
		public static const DELETE:String = "delete";

	}
}//package mx.events 

****************

//ResizeEvent (mx.events.ResizeEvent)
package mx.events {
	import flash.events.*;

	public class ResizeEvent extends Event {

		public var oldHeight:Number;
		public var oldWidth:Number;

		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const RESIZE:String = "resize";

		public function ResizeEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:Number=NaN, _arg5:Number=NaN){
			super(_arg1, _arg2, _arg3);
			this.oldWidth = _arg4;
			this.oldHeight = _arg5;
		}
		override public function clone():Event{
			return (new ResizeEvent(type, bubbles, cancelable, oldWidth, oldHeight));
		}

	}
}//package mx.events 

****************

//ResourceEvent (mx.events.ResourceEvent)
package mx.events {
	import mx.core.*;
	import flash.events.*;

	public class ResourceEvent extends ProgressEvent {

		public var errorText:String;

		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const COMPLETE:String = "complete";
		public static const PROGRESS:String = "progress";
		public static const ERROR:String = "error";

		public function ResourceEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:uint=0, _arg5:uint=0, _arg6:String=null){
			super(_arg1, _arg2, _arg3, _arg4, _arg5);
			this.errorText = _arg6;
		}
		override public function clone():Event{
			return (new ResourceEvent(type, bubbles, cancelable, bytesLoaded, bytesTotal, errorText));
		}

	}
}//package mx.events 

****************

//RSLEvent (mx.events.RSLEvent)
package mx.events {
	import flash.display.*;
	import mx.core.*;
	import flash.events.*;
	import flash.net.*;

	public class RSLEvent extends ProgressEvent {

		public var loaderInfo:LoaderInfo;
		public var errorText:String;
		public var rslIndex:int;
		public var rslTotal:int;
		public var url:URLRequest;

		public static const RSL_PROGRESS:String = "rslProgress";
		public static const RSL_ERROR:String = "rslError";
		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const RSL_COMPLETE:String = "rslComplete";

		public function RSLEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:int=-1, _arg5:int=-1, _arg6:int=-1, _arg7:int=-1, _arg8:URLRequest=null, _arg9:String=null){
			super(_arg1, _arg2, _arg3, _arg4, _arg5);
			this.rslIndex = _arg6;
			this.rslTotal = _arg7;
			this.url = _arg8;
			this.errorText = _arg9;
		}
		override public function clone():Event{
			return (new RSLEvent(type, bubbles, cancelable, bytesLoaded, bytesTotal, rslIndex, rslTotal, url, errorText));
		}

	}
}//package mx.events 

****************

//SandboxMouseEvent (mx.events.SandboxMouseEvent)
package mx.events {
	import mx.core.*;
	import flash.events.*;

	public class SandboxMouseEvent extends Event {

		public var buttonDown:Boolean;
		public var altKey:Boolean;
		public var ctrlKey:Boolean;
		public var shiftKey:Boolean;

		public static const CLICK_SOMEWHERE:String = "clickSomewhere";
		public static const MOUSE_UP_SOMEWHERE:String = "mouseUpSomewhere";
		public static const DOUBLE_CLICK_SOMEWHERE:String = "coubleClickSomewhere";
		public static const MOUSE_WHEEL_SOMEWHERE:String = "mouseWheelSomewhere";
		public static const MOUSE_DOWN_SOMEWHERE:String = "mouseDownSomewhere";
		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const MOUSE_MOVE_SOMEWHERE:String = "mouseMoveSomewhere";

		public function SandboxMouseEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:Boolean=false, _arg5:Boolean=false, _arg6:Boolean=false, _arg7:Boolean=false){
			super(_arg1, _arg2, _arg3);
			this.ctrlKey = _arg4;
			this.altKey = _arg5;
			this.shiftKey = _arg6;
			this.buttonDown = _arg7;
		}
		override public function clone():Event{
			return (new SandboxMouseEvent(type, bubbles, cancelable, ctrlKey, altKey, shiftKey, buttonDown));
		}

		public static function marshal(_arg1:Event):SandboxMouseEvent{
			var _local2:Object = _arg1;
			return (new SandboxMouseEvent(_local2.type, _local2.bubbles, _local2.cancelable, _local2.ctrlKey, _local2.altKey, _local2.shiftKey, _local2.buttonDown));
		}

	}
}//package mx.events 

****************

//ScrollEvent (mx.events.ScrollEvent)
package mx.events {
	import flash.events.*;

	public class ScrollEvent extends Event {

		public var detail:String;
		public var delta:Number;
		public var position:Number;
		public var direction:String;

		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const SCROLL:String = "scroll";

		public function ScrollEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:String=null, _arg5:Number=NaN, _arg6:String=null, _arg7:Number=NaN){
			super(_arg1, _arg2, _arg3);
			this.detail = _arg4;
			this.position = _arg5;
			this.direction = _arg6;
			this.delta = _arg7;
		}
		override public function clone():Event{
			return (new ScrollEvent(type, bubbles, cancelable, detail, position, direction, delta));
		}

	}
}//package mx.events 

****************

//ScrollEventDetail (mx.events.ScrollEventDetail)
package mx.events {

	public final class ScrollEventDetail {

		public static const LINE_UP:String = "lineUp";
		public static const AT_RIGHT:String = "atRight";
		public static const PAGE_UP:String = "pageUp";
		public static const LINE_DOWN:String = "lineDown";
		public static const PAGE_DOWN:String = "pageDown";
		public static const AT_LEFT:String = "atLeft";
		public static const PAGE_RIGHT:String = "pageRight";
		public static const THUMB_POSITION:String = "thumbPosition";
		public static const AT_TOP:String = "atTop";
		public static const LINE_LEFT:String = "lineLeft";
		public static const AT_BOTTOM:String = "atBottom";
		public static const LINE_RIGHT:String = "lineRight";
		public static const THUMB_TRACK:String = "thumbTrack";
		public static const PAGE_LEFT:String = "pageLeft";
		mx_internal static const VERSION:String = "3.5.0.12683";

	}
}//package mx.events 

****************

//ScrollEventDirection (mx.events.ScrollEventDirection)
package mx.events {

	public final class ScrollEventDirection {

		public static const HORIZONTAL:String = "horizontal";
		public static const VERTICAL:String = "vertical";
		mx_internal static const VERSION:String = "3.5.0.12683";

	}
}//package mx.events 

****************

//StateChangeEvent (mx.events.StateChangeEvent)
package mx.events {
	import flash.events.*;

	public class StateChangeEvent extends Event {

		public var newState:String;
		public var oldState:String;

		public static const CURRENT_STATE_CHANGING:String = "currentStateChanging";
		public static const CURRENT_STATE_CHANGE:String = "currentStateChange";
		mx_internal static const VERSION:String = "3.5.0.12683";

		public function StateChangeEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:String=null, _arg5:String=null){
			super(_arg1, _arg2, _arg3);
			this.oldState = _arg4;
			this.newState = _arg5;
		}
		override public function clone():Event{
			return (new StateChangeEvent(type, bubbles, cancelable, oldState, newState));
		}

	}
}//package mx.events 

****************

//StyleEvent (mx.events.StyleEvent)
package mx.events {
	import mx.core.*;
	import flash.events.*;

	public class StyleEvent extends ProgressEvent {

		public var errorText:String;

		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const COMPLETE:String = "complete";
		public static const PROGRESS:String = "progress";
		public static const ERROR:String = "error";

		public function StyleEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:uint=0, _arg5:uint=0, _arg6:String=null){
			super(_arg1, _arg2, _arg3, _arg4, _arg5);
			this.errorText = _arg6;
		}
		override public function clone():Event{
			return (new StyleEvent(type, bubbles, cancelable, bytesLoaded, bytesTotal, errorText));
		}

	}
}//package mx.events 

****************

//SWFBridgeEvent (mx.events.SWFBridgeEvent)
package mx.events {
	import mx.core.*;
	import flash.events.*;

	public class SWFBridgeEvent extends Event {

		public var data:Object;

		public static const BRIDGE_FOCUS_MANAGER_ACTIVATE:String = "bridgeFocusManagerActivate";
		public static const BRIDGE_WINDOW_ACTIVATE:String = "bridgeWindowActivate";
		public static const BRIDGE_WINDOW_DEACTIVATE:String = "brdigeWindowDeactivate";
		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const BRIDGE_NEW_APPLICATION:String = "bridgeNewApplication";
		public static const BRIDGE_APPLICATION_UNLOADING:String = "bridgeApplicationUnloading";
		public static const BRIDGE_APPLICATION_ACTIVATE:String = "bridgeApplicationActivate";

		public function SWFBridgeEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:Object=null){
			super(_arg1, _arg2, _arg3);
			this.data = _arg4;
		}
		override public function clone():Event{
			return (new SWFBridgeEvent(type, bubbles, cancelable, data));
		}

		public static function marshal(_arg1:Event):SWFBridgeEvent{
			var _local2:Object = _arg1;
			return (new SWFBridgeEvent(_local2.type, _local2.bubbles, _local2.cancelable, _local2.data));
		}

	}
}//package mx.events 

****************

//SWFBridgeRequest (mx.events.SWFBridgeRequest)
package mx.events {
	import mx.core.*;
	import flash.events.*;

	public class SWFBridgeRequest extends Event {

		public var requestor:IEventDispatcher;
		public var data:Object;

		public static const SHOW_MOUSE_CURSOR_REQUEST:String = "showMouseCursorRequest";
		public static const DEACTIVATE_POP_UP_REQUEST:String = "deactivatePopUpRequest";
		public static const SET_ACTUAL_SIZE_REQUEST:String = "setActualSizeRequest";
		public static const MOVE_FOCUS_REQUEST:String = "moveFocusRequest";
		public static const GET_VISIBLE_RECT_REQUEST:String = "getVisibleRectRequest";
		public static const ADD_POP_UP_PLACE_HOLDER_REQUEST:String = "addPopUpPlaceHolderRequest";
		public static const REMOVE_POP_UP_PLACE_HOLDER_REQUEST:String = "removePopUpPlaceHolderRequest";
		public static const RESET_MOUSE_CURSOR_REQUEST:String = "resetMouseCursorRequest";
		public static const ADD_POP_UP_REQUEST:String = "addPopUpRequest";
		public static const GET_SIZE_REQUEST:String = "getSizeRequest";
		public static const SHOW_MODAL_WINDOW_REQUEST:String = "showModalWindowRequest";
		public static const ACTIVATE_FOCUS_REQUEST:String = "activateFocusRequest";
		public static const DEACTIVATE_FOCUS_REQUEST:String = "deactivateFocusRequest";
		public static const HIDE_MOUSE_CURSOR_REQUEST:String = "hideMouseCursorRequest";
		public static const ACTIVATE_POP_UP_REQUEST:String = "activatePopUpRequest";
		public static const IS_BRIDGE_CHILD_REQUEST:String = "isBridgeChildRequest";
		public static const CAN_ACTIVATE_POP_UP_REQUEST:String = "canActivateRequestPopUpRequest";
		public static const HIDE_MODAL_WINDOW_REQUEST:String = "hideModalWindowRequest";
		public static const INVALIDATE_REQUEST:String = "invalidateRequest";
		public static const SET_SHOW_FOCUS_INDICATOR_REQUEST:String = "setShowFocusIndicatorRequest";
		public static const CREATE_MODAL_WINDOW_REQUEST:String = "createModalWindowRequest";
		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const REMOVE_POP_UP_REQUEST:String = "removePopUpRequest";

		public function SWFBridgeRequest(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:IEventDispatcher=null, _arg5:Object=null){
			super(_arg1, _arg2, _arg3);
			this.requestor = _arg4;
			this.data = _arg5;
		}
		override public function clone():Event{
			return (new SWFBridgeRequest(type, bubbles, cancelable, requestor, data));
		}

		public static function marshal(_arg1:Event):SWFBridgeRequest{
			var _local2:Object = _arg1;
			return (new SWFBridgeRequest(_local2.type, _local2.bubbles, _local2.cancelable, _local2.requestor, _local2.data));
		}

	}
}//package mx.events 

****************

//ToolTipEvent (mx.events.ToolTipEvent)
package mx.events {
	import mx.core.*;
	import flash.events.*;

	public class ToolTipEvent extends Event {

		public var toolTip:IToolTip;

		public static const TOOL_TIP_SHOWN:String = "toolTipShown";
		public static const TOOL_TIP_CREATE:String = "toolTipCreate";
		public static const TOOL_TIP_SHOW:String = "toolTipShow";
		public static const TOOL_TIP_HIDE:String = "toolTipHide";
		public static const TOOL_TIP_END:String = "toolTipEnd";
		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const TOOL_TIP_START:String = "toolTipStart";

		public function ToolTipEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:IToolTip=null){
			super(_arg1, _arg2, _arg3);
			this.toolTip = _arg4;
		}
		override public function clone():Event{
			return (new ToolTipEvent(type, bubbles, cancelable, toolTip));
		}

	}
}//package mx.events 

****************

//TweenEvent (mx.events.TweenEvent)
package mx.events {
	import flash.events.*;

	public class TweenEvent extends Event {

		public var value:Object;

		public static const TWEEN_END:String = "tweenEnd";
		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const TWEEN_UPDATE:String = "tweenUpdate";
		public static const TWEEN_START:String = "tweenStart";

		public function TweenEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:Object=null){
			super(_arg1, _arg2, _arg3);
			this.value = _arg4;
		}
		override public function clone():Event{
			return (new TweenEvent(type, bubbles, cancelable, value));
		}

	}
}//package mx.events 

****************

//ValidationResultEvent (mx.events.ValidationResultEvent)
package mx.events {
	import flash.events.*;

	public class ValidationResultEvent extends Event {

		public var results:Array;
		public var field:String;

		public static const INVALID:String = "invalid";
		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const VALID:String = "valid";

		public function ValidationResultEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:String=null, _arg5:Array=null){
			super(_arg1, _arg2, _arg3);
			this.field = _arg4;
			this.results = _arg5;
		}
		public function get message():String{
			var _local1 = "";
			var _local2:int = results.length;
			var _local3:int;
			while (_local3 < _local2) {
				if (results[_local3].isError){
					_local1 = (_local1 + ((_local1 == "")) ? "" : "\n");
					_local1 = (_local1 + results[_local3].errorMessage);
				};
				_local3++;
			};
			return (_local1);
		}
		override public function clone():Event{
			return (new ValidationResultEvent(type, bubbles, cancelable, field, results));
		}

	}
}//package mx.events 

****************

//RectangularDropShadow (mx.graphics.RectangularDropShadow)
package mx.graphics {
	import flash.display.*;
	import flash.geom.*;
	import mx.core.*;
	import mx.utils.*;
	import flash.filters.*;

	public class RectangularDropShadow {

		private var leftShadow:BitmapData;
		private var _tlRadius:Number;// = 0
		private var _trRadius:Number;// = 0
		private var _angle:Number;// = 45
		private var topShadow:BitmapData;
		private var _distance:Number;// = 4
		private var rightShadow:BitmapData;
		private var _alpha:Number;// = 0.4
		private var shadow:BitmapData;
		private var _brRadius:Number;// = 0
		private var _blRadius:Number;// = 0
		private var _color:int;// = 0
		private var bottomShadow:BitmapData;
		private var changed:Boolean;// = true

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function get blRadius():Number{
			return (_blRadius);
		}
		public function set brRadius(_arg1:Number):void{
			if (_brRadius != _arg1){
				_brRadius = _arg1;
				changed = true;
			};
		}
		public function set color(_arg1:int):void{
			if (_color != _arg1){
				_color = _arg1;
				changed = true;
			};
		}
		public function drawShadow(_arg1:Graphics, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number):void{
			var _local15:Number;
			var _local16:Number;
			var _local17:Number;
			var _local18:Number;
			var _local19:Number;
			var _local20:Number;
			var _local21:Number;
			var _local22:Number;
			if (changed){
				createShadowBitmaps();
				changed = false;
			};
			_arg4 = Math.ceil(_arg4);
			_arg5 = Math.ceil(_arg5);
			var _local6:int = (leftShadow) ? leftShadow.width : 0;
			var _local7:int = (rightShadow) ? rightShadow.width : 0;
			var _local8:int = (topShadow) ? topShadow.height : 0;
			var _local9:int = (bottomShadow) ? bottomShadow.height : 0;
			var _local10:int = (_local6 + _local7);
			var _local11:int = (_local8 + _local9);
			var _local12:Number = ((_arg5 + _local11) / 2);
			var _local13:Number = ((_arg4 + _local10) / 2);
			var _local14:Matrix = new Matrix();
			if (((leftShadow) || (topShadow))){
				_local15 = Math.min((tlRadius + _local10), _local13);
				_local16 = Math.min((tlRadius + _local11), _local12);
				_local14.tx = (_arg2 - _local6);
				_local14.ty = (_arg3 - _local8);
				_arg1.beginBitmapFill(shadow, _local14);
				_arg1.drawRect((_arg2 - _local6), (_arg3 - _local8), _local15, _local16);
				_arg1.endFill();
			};
			if (((rightShadow) || (topShadow))){
				_local17 = Math.min((trRadius + _local10), _local13);
				_local18 = Math.min((trRadius + _local11), _local12);
				_local14.tx = (((_arg2 + _arg4) + _local7) - shadow.width);
				_local14.ty = (_arg3 - _local8);
				_arg1.beginBitmapFill(shadow, _local14);
				_arg1.drawRect((((_arg2 + _arg4) + _local7) - _local17), (_arg3 - _local8), _local17, _local18);
				_arg1.endFill();
			};
			if (((leftShadow) || (bottomShadow))){
				_local19 = Math.min((blRadius + _local10), _local13);
				_local20 = Math.min((blRadius + _local11), _local12);
				_local14.tx = (_arg2 - _local6);
				_local14.ty = (((_arg3 + _arg5) + _local9) - shadow.height);
				_arg1.beginBitmapFill(shadow, _local14);
				_arg1.drawRect((_arg2 - _local6), (((_arg3 + _arg5) + _local9) - _local20), _local19, _local20);
				_arg1.endFill();
			};
			if (((rightShadow) || (bottomShadow))){
				_local21 = Math.min((brRadius + _local10), _local13);
				_local22 = Math.min((brRadius + _local11), _local12);
				_local14.tx = (((_arg2 + _arg4) + _local7) - shadow.width);
				_local14.ty = (((_arg3 + _arg5) + _local9) - shadow.height);
				_arg1.beginBitmapFill(shadow, _local14);
				_arg1.drawRect((((_arg2 + _arg4) + _local7) - _local21), (((_arg3 + _arg5) + _local9) - _local22), _local21, _local22);
				_arg1.endFill();
			};
			if (leftShadow){
				_local14.tx = (_arg2 - _local6);
				_local14.ty = 0;
				_arg1.beginBitmapFill(leftShadow, _local14);
				_arg1.drawRect((_arg2 - _local6), ((_arg3 - _local8) + _local16), _local6, ((((_arg5 + _local8) + _local9) - _local16) - _local20));
				_arg1.endFill();
			};
			if (rightShadow){
				_local14.tx = (_arg2 + _arg4);
				_local14.ty = 0;
				_arg1.beginBitmapFill(rightShadow, _local14);
				_arg1.drawRect((_arg2 + _arg4), ((_arg3 - _local8) + _local18), _local7, ((((_arg5 + _local8) + _local9) - _local18) - _local22));
				_arg1.endFill();
			};
			if (topShadow){
				_local14.tx = 0;
				_local14.ty = (_arg3 - _local8);
				_arg1.beginBitmapFill(topShadow, _local14);
				_arg1.drawRect(((_arg2 - _local6) + _local15), (_arg3 - _local8), ((((_arg4 + _local6) + _local7) - _local15) - _local17), _local8);
				_arg1.endFill();
			};
			if (bottomShadow){
				_local14.tx = 0;
				_local14.ty = (_arg3 + _arg5);
				_arg1.beginBitmapFill(bottomShadow, _local14);
				_arg1.drawRect(((_arg2 - _local6) + _local19), (_arg3 + _arg5), ((((_arg4 + _local6) + _local7) - _local19) - _local21), _local9);
				_arg1.endFill();
			};
		}
		public function get brRadius():Number{
			return (_brRadius);
		}
		public function get angle():Number{
			return (_angle);
		}
		private function createShadowBitmaps():void{
			var _local1:Number = ((Math.max(tlRadius, blRadius) + (2 * distance)) + Math.max(trRadius, brRadius));
			var _local2:Number = ((Math.max(tlRadius, trRadius) + (2 * distance)) + Math.max(blRadius, brRadius));
			if ((((_local1 < 0)) || ((_local2 < 0)))){
				return;
			};
			var _local3:Shape = new FlexShape();
			var _local4:Graphics = _local3.graphics;
			_local4.beginFill(0xFFFFFF);
			GraphicsUtil.drawRoundRectComplex(_local4, 0, 0, _local1, _local2, tlRadius, trRadius, blRadius, brRadius);
			_local4.endFill();
			var _local5:BitmapData = new BitmapData(_local1, _local2, true, 0);
			_local5.draw(_local3, new Matrix());
			var _local6:DropShadowFilter = new DropShadowFilter(distance, angle, color, alpha);
			_local6.knockout = true;
			var _local7:Rectangle = new Rectangle(0, 0, _local1, _local2);
			var _local8:Rectangle = _local5.generateFilterRect(_local7, _local6);
			var _local9:Number = (_local7.left - _local8.left);
			var _local10:Number = (_local8.right - _local7.right);
			var _local11:Number = (_local7.top - _local8.top);
			var _local12:Number = (_local8.bottom - _local7.bottom);
			shadow = new BitmapData(_local8.width, _local8.height);
			shadow.applyFilter(_local5, _local7, new Point(_local9, _local11), _local6);
			var _local13:Point = new Point(0, 0);
			var _local14:Rectangle = new Rectangle();
			if (_local9 > 0){
				_local14.x = 0;
				_local14.y = ((tlRadius + _local11) + _local12);
				_local14.width = _local9;
				_local14.height = 1;
				leftShadow = new BitmapData(_local9, 1);
				leftShadow.copyPixels(shadow, _local14, _local13);
			} else {
				leftShadow = null;
			};
			if (_local10 > 0){
				_local14.x = (shadow.width - _local10);
				_local14.y = ((trRadius + _local11) + _local12);
				_local14.width = _local10;
				_local14.height = 1;
				rightShadow = new BitmapData(_local10, 1);
				rightShadow.copyPixels(shadow, _local14, _local13);
			} else {
				rightShadow = null;
			};
			if (_local11 > 0){
				_local14.x = ((tlRadius + _local9) + _local10);
				_local14.y = 0;
				_local14.width = 1;
				_local14.height = _local11;
				topShadow = new BitmapData(1, _local11);
				topShadow.copyPixels(shadow, _local14, _local13);
			} else {
				topShadow = null;
			};
			if (_local12 > 0){
				_local14.x = ((blRadius + _local9) + _local10);
				_local14.y = (shadow.height - _local12);
				_local14.width = 1;
				_local14.height = _local12;
				bottomShadow = new BitmapData(1, _local12);
				bottomShadow.copyPixels(shadow, _local14, _local13);
			} else {
				bottomShadow = null;
			};
		}
		public function get alpha():Number{
			return (_alpha);
		}
		public function get color():int{
			return (_color);
		}
		public function set angle(_arg1:Number):void{
			if (_angle != _arg1){
				_angle = _arg1;
				changed = true;
			};
		}
		public function set trRadius(_arg1:Number):void{
			if (_trRadius != _arg1){
				_trRadius = _arg1;
				changed = true;
			};
		}
		public function set tlRadius(_arg1:Number):void{
			if (_tlRadius != _arg1){
				_tlRadius = _arg1;
				changed = true;
			};
		}
		public function get trRadius():Number{
			return (_trRadius);
		}
		public function set distance(_arg1:Number):void{
			if (_distance != _arg1){
				_distance = _arg1;
				changed = true;
			};
		}
		public function get distance():Number{
			return (_distance);
		}
		public function get tlRadius():Number{
			return (_tlRadius);
		}
		public function set alpha(_arg1:Number):void{
			if (_alpha != _arg1){
				_alpha = _arg1;
				changed = true;
			};
		}
		public function set blRadius(_arg1:Number):void{
			if (_blRadius != _arg1){
				_blRadius = _arg1;
				changed = true;
			};
		}

	}
}//package mx.graphics 

****************

//RoundedRectangle (mx.graphics.RoundedRectangle)
package mx.graphics {
	import flash.geom.*;
	import mx.core.*;

	public class RoundedRectangle extends Rectangle {

		public var cornerRadius:Number;// = 0

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function RoundedRectangle(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0, _arg5:Number=0){
			super(_arg1, _arg2, _arg3, _arg4);
			this.cornerRadius = _arg5;
		}
	}
}//package mx.graphics 

****************

//PriorityQueue (mx.managers.layoutClasses.PriorityQueue)
package mx.managers.layoutClasses {
	import mx.core.*;
	import flash.display.*;
	import mx.managers.*;

	public class PriorityQueue {

		private var maxPriority:int;// = -1
		private var arrayOfArrays:Array;
		private var minPriority:int;// = 0

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function PriorityQueue(){
			arrayOfArrays = [];
			super();
		}
		public function addObject(_arg1:Object, _arg2:int):void{
			if (!arrayOfArrays[_arg2]){
				arrayOfArrays[_arg2] = [];
			};
			arrayOfArrays[_arg2].push(_arg1);
			if (maxPriority < minPriority){
				minPriority = (maxPriority = _arg2);
			} else {
				if (_arg2 < minPriority){
					minPriority = _arg2;
				};
				if (_arg2 > maxPriority){
					maxPriority = _arg2;
				};
			};
		}
		public function removeSmallest():Object{
			var _local1:Object;
			if (minPriority <= maxPriority){
				while (((!(arrayOfArrays[minPriority])) || ((arrayOfArrays[minPriority].length == 0)))) {
					minPriority++;
					if (minPriority > maxPriority){
						return (null);
					};
				};
				_local1 = arrayOfArrays[minPriority].shift();
				while (((!(arrayOfArrays[minPriority])) || ((arrayOfArrays[minPriority].length == 0)))) {
					minPriority++;
					if (minPriority > maxPriority){
						break;
					};
				};
			};
			return (_local1);
		}
		public function removeLargestChild(_arg1:ILayoutManagerClient):Object{
			var _local5:int;
			var _local2:Object;
			var _local3:int = maxPriority;
			var _local4:int = _arg1.nestLevel;
			while (_local4 <= _local3) {
				if (((arrayOfArrays[_local3]) && ((arrayOfArrays[_local3].length > 0)))){
					_local5 = 0;
					while (_local5 < arrayOfArrays[_local3].length) {
						if (contains(DisplayObject(_arg1), arrayOfArrays[_local3][_local5])){
							_local2 = arrayOfArrays[_local3][_local5];
							arrayOfArrays[_local3].splice(_local5, 1);
							return (_local2);
						};
						_local5++;
					};
					_local3--;
				} else {
					if (_local3 == maxPriority){
						maxPriority--;
					};
					_local3--;
					if (_local3 < _local4){
						break;
					};
				};
			};
			return (_local2);
		}
		public function isEmpty():Boolean{
			return ((minPriority > maxPriority));
		}
		public function removeLargest():Object{
			var _local1:Object;
			if (minPriority <= maxPriority){
				while (((!(arrayOfArrays[maxPriority])) || ((arrayOfArrays[maxPriority].length == 0)))) {
					maxPriority--;
					if (maxPriority < minPriority){
						return (null);
					};
				};
				_local1 = arrayOfArrays[maxPriority].shift();
				while (((!(arrayOfArrays[maxPriority])) || ((arrayOfArrays[maxPriority].length == 0)))) {
					maxPriority--;
					if (maxPriority < minPriority){
						break;
					};
				};
			};
			return (_local1);
		}
		public function removeSmallestChild(_arg1:ILayoutManagerClient):Object{
			var _local4:int;
			var _local2:Object;
			var _local3:int = _arg1.nestLevel;
			while (_local3 <= maxPriority) {
				if (((arrayOfArrays[_local3]) && ((arrayOfArrays[_local3].length > 0)))){
					_local4 = 0;
					while (_local4 < arrayOfArrays[_local3].length) {
						if (contains(DisplayObject(_arg1), arrayOfArrays[_local3][_local4])){
							_local2 = arrayOfArrays[_local3][_local4];
							arrayOfArrays[_local3].splice(_local4, 1);
							return (_local2);
						};
						_local4++;
					};
					_local3++;
				} else {
					if (_local3 == minPriority){
						minPriority++;
					};
					_local3++;
					if (_local3 > maxPriority){
						break;
					};
				};
			};
			return (_local2);
		}
		public function removeAll():void{
			arrayOfArrays.splice(0);
			minPriority = 0;
			maxPriority = -1;
		}
		private function contains(_arg1:DisplayObject, _arg2:DisplayObject):Boolean{
			var _local3:IChildList;
			if ((_arg1 is IRawChildrenContainer)){
				_local3 = IRawChildrenContainer(_arg1).rawChildren;
				return (_local3.contains(_arg2));
			};
			if ((_arg1 is DisplayObjectContainer)){
				return (DisplayObjectContainer(_arg1).contains(_arg2));
			};
			return ((_arg1 == _arg2));
		}

	}
}//package mx.managers.layoutClasses 

****************

//EventProxy (mx.managers.systemClasses.EventProxy)
package mx.managers.systemClasses {
	import mx.managers.*;
	import flash.events.*;
	import mx.events.*;
	import mx.utils.*;

	public class EventProxy extends EventDispatcher {

		private var systemManager:ISystemManager;

		public function EventProxy(_arg1:ISystemManager){
			this.systemManager = _arg1;
		}
		public function marshalListener(_arg1:Event):void{
			var _local2:MouseEvent;
			var _local3:SandboxMouseEvent;
			if ((_arg1 is MouseEvent)){
				_local2 = (_arg1 as MouseEvent);
				_local3 = new SandboxMouseEvent(EventUtil.mouseEventMap[_arg1.type], false, false, _local2.ctrlKey, _local2.altKey, _local2.shiftKey, _local2.buttonDown);
				systemManager.dispatchEventFromSWFBridges(_local3, null, true, true);
			} else {
				if (_arg1.type == Event.MOUSE_LEAVE){
					_local3 = new SandboxMouseEvent(SandboxMouseEvent.MOUSE_UP_SOMEWHERE);
					systemManager.dispatchEventFromSWFBridges(_local3, null, true, true);
					systemManager.dispatchEvent(_local3);
				};
			};
		}

	}
}//package mx.managers.systemClasses 

****************

//PlaceholderData (mx.managers.systemClasses.PlaceholderData)
package mx.managers.systemClasses {
	import flash.events.*;

	public class PlaceholderData {

		public var bridge:IEventDispatcher;
		public var data:Object;
		public var id:String;

		public function PlaceholderData(_arg1:String, _arg2:IEventDispatcher, _arg3:Object){
			this.id = _arg1;
			this.bridge = _arg2;
			this.data = _arg3;
		}
	}
}//package mx.managers.systemClasses 

****************

//RemotePopUp (mx.managers.systemClasses.RemotePopUp)
package mx.managers.systemClasses {

	public class RemotePopUp {

		public var window:Object;
		public var bridge:Object;

		public function RemotePopUp(_arg1:Object, _arg2:Object){
			this.window = _arg1;
			this.bridge = _arg2;
		}
	}
}//package mx.managers.systemClasses 

****************

//CursorManager (mx.managers.CursorManager)
package mx.managers {
	import mx.core.*;

	public class CursorManager {

		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const NO_CURSOR:int = 0;

		private static var _impl:ICursorManager;
		private static var implClassDependency:CursorManagerImpl;

		public static function set currentCursorYOffset(_arg1:Number):void{
			impl.currentCursorYOffset = _arg1;
		}
		mx_internal static function registerToUseBusyCursor(_arg1:Object):void{
			impl.registerToUseBusyCursor(_arg1);
		}
		public static function get currentCursorID():int{
			return (impl.currentCursorID);
		}
		public static function getInstance():ICursorManager{
			return (impl);
		}
		public static function removeBusyCursor():void{
			impl.removeBusyCursor();
		}
		public static function setCursor(_arg1:Class, _arg2:int=2, _arg3:Number=0, _arg4:Number=0):int{
			return (impl.setCursor(_arg1, _arg2, _arg3, _arg4));
		}
		public static function set currentCursorID(_arg1:int):void{
			impl.currentCursorID = _arg1;
		}
		mx_internal static function unRegisterToUseBusyCursor(_arg1:Object):void{
			impl.unRegisterToUseBusyCursor(_arg1);
		}
		private static function get impl():ICursorManager{
			if (!_impl){
				_impl = ICursorManager(Singleton.getInstance("mx.managers::ICursorManager"));
			};
			return (_impl);
		}
		public static function removeAllCursors():void{
			impl.removeAllCursors();
		}
		public static function setBusyCursor():void{
			impl.setBusyCursor();
		}
		public static function showCursor():void{
			impl.showCursor();
		}
		public static function hideCursor():void{
			impl.hideCursor();
		}
		public static function removeCursor(_arg1:int):void{
			impl.removeCursor(_arg1);
		}
		public static function get currentCursorXOffset():Number{
			return (impl.currentCursorXOffset);
		}
		public static function get currentCursorYOffset():Number{
			return (impl.currentCursorYOffset);
		}
		public static function set currentCursorXOffset(_arg1:Number):void{
			impl.currentCursorXOffset = _arg1;
		}

	}
}//package mx.managers 

****************

//CursorManagerImpl (mx.managers.CursorManagerImpl)
package mx.managers {
	import mx.core.*;
	import mx.events.*;
	import flash.events.*;
	import flash.display.*;
	import flash.geom.*;
	import mx.styles.*;
	import flash.text.*;
	import flash.ui.*;

	public class CursorManagerImpl implements ICursorManager {

		private var showSystemCursor:Boolean;// = false
		private var nextCursorID:int;// = 1
		private var systemManager:ISystemManager;// = null
		private var cursorList:Array;
		private var _currentCursorYOffset:Number;// = 0
		private var cursorHolder:Sprite;
		private var currentCursor:DisplayObject;
		private var sandboxRoot:IEventDispatcher;// = null
		private var showCustomCursor:Boolean;// = false
		private var listenForContextMenu:Boolean;// = false
		private var customCursorLeftStage:Boolean;// = false
		private var _currentCursorID:int;// = 0
		private var initialized:Boolean;// = false
		private var overTextField:Boolean;// = false
		private var _currentCursorXOffset:Number;// = 0
		private var busyCursorList:Array;
		private var overLink:Boolean;// = false
		private var sourceArray:Array;

		mx_internal static const VERSION:String = "3.5.0.12683";

		private static var instance:ICursorManager;

		public function CursorManagerImpl(_arg1:ISystemManager=null){
			cursorList = [];
			busyCursorList = [];
			sourceArray = [];
			super();
			if (((instance) && (!(_arg1)))){
				throw (new Error("Instance already exists."));
			};
			if (_arg1){
				this.systemManager = (_arg1 as ISystemManager);
			} else {
				this.systemManager = (SystemManagerGlobals.topLevelSystemManagers[0] as ISystemManager);
			};
			sandboxRoot = this.systemManager.getSandboxRoot();
			sandboxRoot.addEventListener(InterManagerRequest.CURSOR_MANAGER_REQUEST, marshalCursorManagerHandler, false, 0, true);
			var _local2:InterManagerRequest = new InterManagerRequest(InterManagerRequest.CURSOR_MANAGER_REQUEST);
			_local2.name = "update";
			sandboxRoot.dispatchEvent(_local2);
		}
		private function mouseOverHandler(_arg1:MouseEvent):void{
			sandboxRoot.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
			mouseMoveHandler(_arg1);
		}
		public function set currentCursorYOffset(_arg1:Number):void{
			var _local2:InterManagerRequest;
			_currentCursorYOffset = _arg1;
			if (!cursorHolder){
				_local2 = new InterManagerRequest(InterManagerRequest.CURSOR_MANAGER_REQUEST);
				_local2.name = "currentCursorYOffset";
				_local2.value = currentCursorYOffset;
				sandboxRoot.dispatchEvent(_local2);
			};
		}
		public function get currentCursorXOffset():Number{
			return (_currentCursorXOffset);
		}
		public function removeCursor(_arg1:int):void{
			var _local2:Object;
			var _local3:InterManagerRequest;
			var _local4:CursorQueueItem;
			if (((initialized) && (!(cursorHolder)))){
				_local3 = new InterManagerRequest(InterManagerRequest.CURSOR_MANAGER_REQUEST);
				_local3.name = "removeCursor";
				_local3.value = _arg1;
				sandboxRoot.dispatchEvent(_local3);
				return;
			};
			for (_local2 in cursorList) {
				_local4 = cursorList[_local2];
				if (_local4.cursorID == _arg1){
					cursorList.splice(_local2, 1);
					showCurrentCursor();
					break;
				};
			};
		}
		public function get currentCursorID():int{
			return (_currentCursorID);
		}
		private function removeContextMenuHandlers():void{
			var _local1:InteractiveObject;
			var _local2:InteractiveObject;
			if (listenForContextMenu){
				_local1 = (systemManager.document as InteractiveObject);
				_local2 = (systemManager as InteractiveObject);
				if (((_local1) && (_local1.contextMenu))){
					_local1.contextMenu.removeEventListener(ContextMenuEvent.MENU_SELECT, contextMenu_menuSelectHandler, true);
				};
				if (((_local2) && (_local2.contextMenu))){
					_local2.contextMenu.removeEventListener(ContextMenuEvent.MENU_SELECT, contextMenu_menuSelectHandler, true);
				};
				listenForContextMenu = false;
			};
		}
		private function marshalMouseMoveHandler(_arg1:Event):void{
			var _local2:SWFBridgeRequest;
			var _local3:IEventDispatcher;
			if (cursorHolder.visible){
				cursorHolder.visible = false;
				_local2 = new SWFBridgeRequest(SWFBridgeRequest.SHOW_MOUSE_CURSOR_REQUEST);
				if (systemManager.useSWFBridge()){
					_local3 = systemManager.swfBridgeGroup.parentBridge;
				} else {
					_local3 = systemManager;
				};
				_local2.requestor = _local3;
				_local3.dispatchEvent(_local2);
				if (_local2.data){
					Mouse.show();
				};
			};
		}
		public function set currentCursorID(_arg1:int):void{
			var _local2:InterManagerRequest;
			_currentCursorID = _arg1;
			if (!cursorHolder){
				_local2 = new InterManagerRequest(InterManagerRequest.CURSOR_MANAGER_REQUEST);
				_local2.name = "currentCursorID";
				_local2.value = currentCursorID;
				sandboxRoot.dispatchEvent(_local2);
			};
		}
		private function priorityCompare(_arg1:CursorQueueItem, _arg2:CursorQueueItem):int{
			if (_arg1.priority < _arg2.priority){
				return (-1);
			};
			if (_arg1.priority == _arg2.priority){
				return (0);
			};
			return (1);
		}
		private function mouseOutHandler(_arg1:MouseEvent):void{
			if ((((_arg1.relatedObject == null)) && ((cursorList.length > 0)))){
				customCursorLeftStage = true;
				hideCursor();
				Mouse.show();
			};
		}
		public function setBusyCursor():void{
			var _local3:InterManagerRequest;
			if (((initialized) && (!(cursorHolder)))){
				_local3 = new InterManagerRequest(InterManagerRequest.CURSOR_MANAGER_REQUEST);
				_local3.name = "setBusyCursor";
				sandboxRoot.dispatchEvent(_local3);
				return;
			};
			var _local1:CSSStyleDeclaration = StyleManager.getStyleDeclaration("CursorManager");
			var _local2:Class = _local1.getStyle("busyCursor");
			busyCursorList.push(setCursor(_local2, CursorManagerPriority.LOW));
		}
		private function findSource(_arg1:Object):int{
			var _local2:int = sourceArray.length;
			var _local3:int;
			while (_local3 < _local2) {
				if (sourceArray[_local3] === _arg1){
					return (_local3);
				};
				_local3++;
			};
			return (-1);
		}
		private function showCurrentCursor():void{
			var _local1:CursorQueueItem;
			var _local2:InterManagerRequest;
			var _local3:Point;
			if (cursorList.length > 0){
				if (!initialized){
					cursorHolder = new FlexSprite();
					cursorHolder.name = "cursorHolder";
					cursorHolder.mouseEnabled = false;
					cursorHolder.mouseChildren = false;
					systemManager.addChildToSandboxRoot("cursorChildren", cursorHolder);
					initialized = true;
					_local2 = new InterManagerRequest(InterManagerRequest.CURSOR_MANAGER_REQUEST);
					_local2.name = "initialized";
					sandboxRoot.dispatchEvent(_local2);
				};
				_local1 = cursorList[0];
				if (currentCursorID == CursorManager.NO_CURSOR){
					Mouse.hide();
				};
				if (_local1.cursorID != currentCursorID){
					if (cursorHolder.numChildren > 0){
						cursorHolder.removeChildAt(0);
					};
					currentCursor = new _local1.cursorClass();
					if (currentCursor){
						if ((currentCursor is InteractiveObject)){
							InteractiveObject(currentCursor).mouseEnabled = false;
						};
						if ((currentCursor is DisplayObjectContainer)){
							DisplayObjectContainer(currentCursor).mouseChildren = false;
						};
						cursorHolder.addChild(currentCursor);
						addContextMenuHandlers();
						if ((systemManager is SystemManager)){
							_local3 = new Point((SystemManager(systemManager).mouseX + _local1.x), (SystemManager(systemManager).mouseY + _local1.y));
							_local3 = SystemManager(systemManager).localToGlobal(_local3);
							_local3 = cursorHolder.parent.globalToLocal(_local3);
							cursorHolder.x = _local3.x;
							cursorHolder.y = _local3.y;
						} else {
							if ((systemManager is DisplayObject)){
								_local3 = new Point((DisplayObject(systemManager).mouseX + _local1.x), (DisplayObject(systemManager).mouseY + _local1.y));
								_local3 = DisplayObject(systemManager).localToGlobal(_local3);
								_local3 = cursorHolder.parent.globalToLocal(_local3);
								cursorHolder.x = (DisplayObject(systemManager).mouseX + _local1.x);
								cursorHolder.y = (DisplayObject(systemManager).mouseY + _local1.y);
							} else {
								cursorHolder.x = _local1.x;
								cursorHolder.y = _local1.y;
							};
						};
						if (systemManager.useSWFBridge()){
							sandboxRoot.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler, true, EventPriority.CURSOR_MANAGEMENT);
						} else {
							systemManager.stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler, true, EventPriority.CURSOR_MANAGEMENT);
						};
						sandboxRoot.addEventListener(SandboxMouseEvent.MOUSE_MOVE_SOMEWHERE, marshalMouseMoveHandler, false, EventPriority.CURSOR_MANAGEMENT);
						if (systemManager.useSWFBridge()){
							sandboxRoot.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, true, EventPriority.CURSOR_MANAGEMENT);
						} else {
							systemManager.stage.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, true, EventPriority.CURSOR_MANAGEMENT);
						};
					};
					currentCursorID = _local1.cursorID;
					currentCursorXOffset = _local1.x;
					currentCursorYOffset = _local1.y;
				};
			} else {
				showCustomCursor = false;
				if (currentCursorID != CursorManager.NO_CURSOR){
					currentCursorID = CursorManager.NO_CURSOR;
					currentCursorXOffset = 0;
					currentCursorYOffset = 0;
					cursorHolder.removeChild(currentCursor);
					removeSystemManagerHandlers();
					removeContextMenuHandlers();
				};
				Mouse.show();
			};
		}
		public function get currentCursorYOffset():Number{
			return (_currentCursorYOffset);
		}
		private function contextMenu_menuSelectHandler(_arg1:ContextMenuEvent):void{
			showCustomCursor = true;
			sandboxRoot.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
		}
		public function hideCursor():void{
			var _local1:InterManagerRequest;
			if (cursorHolder){
				cursorHolder.visible = false;
			} else {
				_local1 = new InterManagerRequest(InterManagerRequest.CURSOR_MANAGER_REQUEST);
				_local1.name = "hideCursor";
				sandboxRoot.dispatchEvent(_local1);
			};
		}
		public function showCursor():void{
			var _local1:InterManagerRequest;
			if (cursorHolder){
				cursorHolder.visible = true;
			} else {
				_local1 = new InterManagerRequest(InterManagerRequest.CURSOR_MANAGER_REQUEST);
				_local1.name = "showCursor";
				sandboxRoot.dispatchEvent(_local1);
			};
		}
		private function marshalCursorManagerHandler(_arg1:Event):void{
			var _local3:InterManagerRequest;
			if ((_arg1 is InterManagerRequest)){
				return;
			};
			var _local2:Object = _arg1;
			switch (_local2.name){
				case "initialized":
					initialized = _local2.value;
					break;
				case "currentCursorID":
					_currentCursorID = _local2.value;
					break;
				case "currentCursorXOffset":
					_currentCursorXOffset = _local2.value;
					break;
				case "currentCursorYOffset":
					_currentCursorYOffset = _local2.value;
					break;
				case "showCursor":
					if (cursorHolder){
						cursorHolder.visible = true;
					};
					break;
				case "hideCursor":
					if (cursorHolder){
						cursorHolder.visible = false;
					};
					break;
				case "setCursor":
					if (cursorHolder){
						_local2.value = setCursor.apply(this, _local2.value);
					};
					break;
				case "removeCursor":
					if (cursorHolder){
						removeCursor.apply(this, [_local2.value]);
					};
					break;
				case "removeAllCursors":
					if (cursorHolder){
						removeAllCursors();
					};
					break;
				case "setBusyCursor":
					if (cursorHolder){
						setBusyCursor();
					};
					break;
				case "removeBusyCursor":
					if (cursorHolder){
						removeBusyCursor();
					};
					break;
				case "registerToUseBusyCursor":
					if (cursorHolder){
						registerToUseBusyCursor.apply(this, _local2.value);
					};
					break;
				case "unRegisterToUseBusyCursor":
					if (cursorHolder){
						unRegisterToUseBusyCursor.apply(this, _local2.value);
					};
					break;
				case "update":
					if (cursorHolder){
						_local3 = new InterManagerRequest(InterManagerRequest.CURSOR_MANAGER_REQUEST);
						_local3.name = "initialized";
						_local3.value = true;
						sandboxRoot.dispatchEvent(_local3);
						_local3 = new InterManagerRequest(InterManagerRequest.CURSOR_MANAGER_REQUEST);
						_local3.name = "currentCursorID";
						_local3.value = currentCursorID;
						sandboxRoot.dispatchEvent(_local3);
						_local3 = new InterManagerRequest(InterManagerRequest.CURSOR_MANAGER_REQUEST);
						_local3.name = "currentCursorXOffset";
						_local3.value = currentCursorXOffset;
						sandboxRoot.dispatchEvent(_local3);
						_local3 = new InterManagerRequest(InterManagerRequest.CURSOR_MANAGER_REQUEST);
						_local3.name = "currentCursorYOffset";
						_local3.value = currentCursorYOffset;
						sandboxRoot.dispatchEvent(_local3);
					};
			};
		}
		public function removeAllCursors():void{
			var _local1:InterManagerRequest;
			if (((initialized) && (!(cursorHolder)))){
				_local1 = new InterManagerRequest(InterManagerRequest.CURSOR_MANAGER_REQUEST);
				_local1.name = "removeAllCursors";
				sandboxRoot.dispatchEvent(_local1);
				return;
			};
			cursorList.splice(0);
			showCurrentCursor();
		}
		private function completeHandler(_arg1:Event):void{
			var _local2:int = findSource(_arg1.target);
			if (_local2 != -1){
				sourceArray.splice(_local2, 1);
				removeBusyCursor();
			};
		}
		public function removeBusyCursor():void{
			var _local1:InterManagerRequest;
			if (((initialized) && (!(cursorHolder)))){
				_local1 = new InterManagerRequest(InterManagerRequest.CURSOR_MANAGER_REQUEST);
				_local1.name = "removeBusyCursor";
				sandboxRoot.dispatchEvent(_local1);
				return;
			};
			if (busyCursorList.length > 0){
				removeCursor(int(busyCursorList.pop()));
			};
		}
		private function addContextMenuHandlers():void{
			var _local1:InteractiveObject;
			var _local2:InteractiveObject;
			if (!listenForContextMenu){
				_local1 = (systemManager.document as InteractiveObject);
				_local2 = (systemManager as InteractiveObject);
				if (((_local1) && (_local1.contextMenu))){
					_local1.contextMenu.addEventListener(ContextMenuEvent.MENU_SELECT, contextMenu_menuSelectHandler, true, EventPriority.CURSOR_MANAGEMENT);
					listenForContextMenu = true;
				};
				if (((_local2) && (_local2.contextMenu))){
					_local2.contextMenu.addEventListener(ContextMenuEvent.MENU_SELECT, contextMenu_menuSelectHandler, true, EventPriority.CURSOR_MANAGEMENT);
					listenForContextMenu = true;
				};
			};
		}
		public function setCursor(_arg1:Class, _arg2:int=2, _arg3:Number=0, _arg4:Number=0):int{
			var _local7:InterManagerRequest;
			if (((initialized) && (!(cursorHolder)))){
				_local7 = new InterManagerRequest(InterManagerRequest.CURSOR_MANAGER_REQUEST);
				_local7.name = "setCursor";
				_local7.value = [_arg1, _arg2, _arg3, _arg4];
				sandboxRoot.dispatchEvent(_local7);
				return ((_local7.value as int));
			};
			var _local5:int = nextCursorID++;
			var _local6:CursorQueueItem = new CursorQueueItem();
			_local6.cursorID = _local5;
			_local6.cursorClass = _arg1;
			_local6.priority = _arg2;
			_local6.x = _arg3;
			_local6.y = _arg4;
			if (systemManager){
				_local6.systemManager = systemManager;
			} else {
				_local6.systemManager = ApplicationGlobals.application.systemManager;
			};
			cursorList.push(_local6);
			cursorList.sort(priorityCompare);
			showCurrentCursor();
			return (_local5);
		}
		private function progressHandler(_arg1:ProgressEvent):void{
			var _local2:int = findSource(_arg1.target);
			if (_local2 == -1){
				sourceArray.push(_arg1.target);
				setBusyCursor();
			};
		}
		private function removeSystemManagerHandlers():void{
			if (systemManager.useSWFBridge()){
				sandboxRoot.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler, true);
			} else {
				systemManager.stage.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler, true);
			};
			sandboxRoot.removeEventListener(SandboxMouseEvent.MOUSE_MOVE_SOMEWHERE, marshalMouseMoveHandler, false);
			if (systemManager.useSWFBridge()){
				sandboxRoot.removeEventListener(MouseEvent.MOUSE_OUT, mouseMoveHandler, true);
			} else {
				systemManager.stage.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, true);
			};
		}
		public function registerToUseBusyCursor(_arg1:Object):void{
			var _local2:InterManagerRequest;
			if (((initialized) && (!(cursorHolder)))){
				_local2 = new InterManagerRequest(InterManagerRequest.CURSOR_MANAGER_REQUEST);
				_local2.name = "registerToUseBusyCursor";
				_local2.value = _arg1;
				sandboxRoot.dispatchEvent(_local2);
				return;
			};
			if (((_arg1) && ((_arg1 is EventDispatcher)))){
				_arg1.addEventListener(ProgressEvent.PROGRESS, progressHandler);
				_arg1.addEventListener(Event.COMPLETE, completeHandler);
				_arg1.addEventListener(IOErrorEvent.IO_ERROR, completeHandler);
			};
		}
		private function mouseMoveHandler(_arg1:MouseEvent):void{
			var _local4:SWFBridgeRequest;
			var _local5:IEventDispatcher;
			var _local2:Point = new Point(_arg1.stageX, _arg1.stageY);
			_local2 = cursorHolder.parent.globalToLocal(_local2);
			_local2.x = (_local2.x + currentCursorXOffset);
			_local2.y = (_local2.y + currentCursorYOffset);
			cursorHolder.x = _local2.x;
			cursorHolder.y = _local2.y;
			var _local3:Object = _arg1.target;
			if (((((!(overTextField)) && ((_local3 is TextField)))) && ((_local3.type == TextFieldType.INPUT)))){
				overTextField = true;
				showSystemCursor = true;
			} else {
				if (((overTextField) && (!((((_local3 is TextField)) && ((_local3.type == TextFieldType.INPUT))))))){
					overTextField = false;
					showCustomCursor = true;
				} else {
					showCustomCursor = true;
				};
			};
			if (showSystemCursor){
				showSystemCursor = false;
				cursorHolder.visible = false;
				Mouse.show();
			};
			if (showCustomCursor){
				showCustomCursor = false;
				cursorHolder.visible = true;
				Mouse.hide();
				_local4 = new SWFBridgeRequest(SWFBridgeRequest.HIDE_MOUSE_CURSOR_REQUEST);
				if (systemManager.useSWFBridge()){
					_local5 = systemManager.swfBridgeGroup.parentBridge;
				} else {
					_local5 = systemManager;
				};
				_local4.requestor = _local5;
				_local5.dispatchEvent(_local4);
			};
		}
		public function unRegisterToUseBusyCursor(_arg1:Object):void{
			var _local2:InterManagerRequest;
			if (((initialized) && (!(cursorHolder)))){
				_local2 = new InterManagerRequest(InterManagerRequest.CURSOR_MANAGER_REQUEST);
				_local2.name = "unRegisterToUseBusyCursor";
				_local2.value = _arg1;
				sandboxRoot.dispatchEvent(_local2);
				return;
			};
			if (((_arg1) && ((_arg1 is EventDispatcher)))){
				_arg1.removeEventListener(ProgressEvent.PROGRESS, progressHandler);
				_arg1.removeEventListener(Event.COMPLETE, completeHandler);
				_arg1.removeEventListener(IOErrorEvent.IO_ERROR, completeHandler);
			};
		}
		public function set currentCursorXOffset(_arg1:Number):void{
			var _local2:InterManagerRequest;
			_currentCursorXOffset = _arg1;
			if (!cursorHolder){
				_local2 = new InterManagerRequest(InterManagerRequest.CURSOR_MANAGER_REQUEST);
				_local2.name = "currentCursorXOffset";
				_local2.value = currentCursorXOffset;
				sandboxRoot.dispatchEvent(_local2);
			};
		}

		public static function getInstance():ICursorManager{
			if (!instance){
				instance = new (CursorManagerImpl);
			};
			return (instance);
		}

	}
}//package mx.managers 

class CursorQueueItem {

	public var priority:int;// = 2
	public var cursorClass:Class;// = null
	public var cursorID:int;// = 0
	public var x:Number;
	public var y:Number;
	public var systemManager:ISystemManager;

	mx_internal static const VERSION:String = "3.5.0.12683";

	private function CursorQueueItem(){
	}
}

****************

//CursorManagerPriority (mx.managers.CursorManagerPriority)
package mx.managers {

	public final class CursorManagerPriority {

		public static const HIGH:int = 1;
		public static const MEDIUM:int = 2;
		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const LOW:int = 3;

	}
}//package mx.managers 

****************

//FocusManager (mx.managers.FocusManager)
package mx.managers {
	import mx.core.*;
	import mx.events.*;
	import flash.events.*;
	import flash.display.*;
	import flash.text.*;
	import flash.ui.*;
	import flash.system.*;

	public class FocusManager implements IFocusManager {

		private var lastActiveFocusManager:FocusManager;
		private var _showFocusIndicator:Boolean;// = false
		private var focusableCandidates:Array;
		private var LARGE_TAB_INDEX:int;// = 99999
		private var browserFocusComponent:InteractiveObject;
		private var calculateCandidates:Boolean;// = true
		private var _lastFocus:IFocusManagerComponent;
		private var lastAction:String;
		private var focusSetLocally:Boolean;
		private var focusableObjects:Array;
		private var swfBridgeGroup:SWFBridgeGroup;
		private var defButton:IButton;
		private var _form:IFocusManagerContainer;
		private var popup:Boolean;
		private var focusChanged:Boolean;
		private var _defaultButtonEnabled:Boolean;// = true
		private var activated:Boolean;// = false
		private var _defaultButton:IButton;
		private var fauxFocus:DisplayObject;
		private var _focusPane:Sprite;
		private var skipBridge:IEventDispatcher;
		public var browserMode:Boolean;

		mx_internal static const VERSION:String = "3.5.0.12683";
		private static const FROM_INDEX_UNSPECIFIED:int = -2;

		public function FocusManager(_arg1:IFocusManagerContainer, _arg2:Boolean=false){
			var sm:ISystemManager;
			var bridge:IEventDispatcher;
			var container = _arg1;
			var popup = _arg2;
			super();
			this.popup = popup;
			browserMode = (((Capabilities.playerType == "ActiveX")) && (!(popup)));
			container.focusManager = this;
			_form = container;
			focusableObjects = [];
			focusPane = new FlexSprite();
			focusPane.name = "focusPane";
			addFocusables(DisplayObject(container));
			container.addEventListener(Event.ADDED, addedHandler);
			container.addEventListener(Event.REMOVED, removedHandler);
			container.addEventListener(FlexEvent.SHOW, showHandler);
			container.addEventListener(FlexEvent.HIDE, hideHandler);
			if ((container.systemManager is SystemManager)){
				if (container != SystemManager(container.systemManager).application){
					container.addEventListener(FlexEvent.CREATION_COMPLETE, creationCompleteHandler);
				};
			};
			try {
				container.systemManager.addFocusManager(container);
				sm = form.systemManager;
				swfBridgeGroup = new SWFBridgeGroup(sm);
				if (!popup){
					swfBridgeGroup.parentBridge = sm.swfBridgeGroup.parentBridge;
				};
				if (sm.useSWFBridge()){
					sm.addEventListener(SWFBridgeEvent.BRIDGE_APPLICATION_UNLOADING, removeFromParentBridge);
					bridge = swfBridgeGroup.parentBridge;
					if (bridge){
						bridge.addEventListener(SWFBridgeRequest.MOVE_FOCUS_REQUEST, focusRequestMoveHandler);
						bridge.addEventListener(SWFBridgeRequest.SET_SHOW_FOCUS_INDICATOR_REQUEST, setShowFocusIndicatorRequestHandler);
					};
					if (((bridge) && (!((form.systemManager is SystemManagerProxy))))){
						bridge.addEventListener(SWFBridgeRequest.ACTIVATE_FOCUS_REQUEST, focusRequestActivateHandler);
						bridge.addEventListener(SWFBridgeRequest.DEACTIVATE_FOCUS_REQUEST, focusRequestDeactivateHandler);
						bridge.addEventListener(SWFBridgeEvent.BRIDGE_FOCUS_MANAGER_ACTIVATE, bridgeEventActivateHandler);
					};
					container.addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
				};
			} catch(e:Error) {
			};
		}
		private function dispatchSetShowFocusIndicatorRequest(_arg1:Boolean, _arg2:IEventDispatcher):void{
			var _local3:SWFBridgeRequest = new SWFBridgeRequest(SWFBridgeRequest.SET_SHOW_FOCUS_INDICATOR_REQUEST, false, false, null, _arg1);
			dispatchEventFromSWFBridges(_local3, _arg2);
		}
		private function creationCompleteHandler(_arg1:FlexEvent):void{
			var _local2:DisplayObject = DisplayObject(form);
			if (((((_local2.parent) && (_local2.visible))) && (!(activated)))){
				form.systemManager.activate(form);
			};
		}
		private function addFocusables(_arg1:DisplayObject, _arg2:Boolean=false):void{
			var addToFocusables:Boolean;
			var focusable:IFocusManagerComponent;
			var doc:DisplayObjectContainer;
			var rawChildren:IChildList;
			var i:int;
			var o = _arg1;
			var skipTopLevel = _arg2;
			if ((((o is IFocusManagerComponent)) && (!(skipTopLevel)))){
				addToFocusables = false;
				if ((o is IFocusManagerComponent)){
					focusable = IFocusManagerComponent(o);
					if (focusable.focusEnabled){
						if (((focusable.tabEnabled) && (isTabVisible(o)))){
							addToFocusables = true;
						};
					};
				};
				if (addToFocusables){
					if (focusableObjects.indexOf(o) == -1){
						focusableObjects.push(o);
						calculateCandidates = true;
					};
					o.addEventListener("tabEnabledChange", tabEnabledChangeHandler);
					o.addEventListener("tabIndexChange", tabIndexChangeHandler);
				};
			};
			if ((o is DisplayObjectContainer)){
				doc = DisplayObjectContainer(o);
				o.addEventListener("tabChildrenChange", tabChildrenChangeHandler);
				if (doc.tabChildren){
					if ((o is IRawChildrenContainer)){
						rawChildren = IRawChildrenContainer(o).rawChildren;
						i = 0;
						while (i < rawChildren.numChildren) {
							try {
								addFocusables(rawChildren.getChildAt(i));
							} catch(error:SecurityError) {
							};
							i = (i + 1);
						};
					} else {
						i = 0;
						while (i < doc.numChildren) {
							try {
								addFocusables(doc.getChildAt(i));
							} catch(error:SecurityError) {
							};
							i = (i + 1);
						};
					};
				};
			};
		}
		private function tabEnabledChangeHandler(_arg1:Event):void{
			calculateCandidates = true;
			var _local2:InteractiveObject = InteractiveObject(_arg1.target);
			var _local3:int = focusableObjects.length;
			var _local4:int;
			while (_local4 < _local3) {
				if (focusableObjects[_local4] == _local2){
					break;
				};
				_local4++;
			};
			if (_local2.tabEnabled){
				if ((((_local4 == _local3)) && (isTabVisible(_local2)))){
					if (focusableObjects.indexOf(_local2) == -1){
						focusableObjects.push(_local2);
					};
				};
			} else {
				if (_local4 < _local3){
					focusableObjects.splice(_local4, 1);
				};
			};
		}
		private function mouseFocusChangeHandler(_arg1:FocusEvent):void{
			var _local2:TextField;
			if ((((((_arg1.relatedObject == null)) && (("isRelatedObjectInaccessible" in _arg1)))) && ((_arg1["isRelatedObjectInaccessible"] == true)))){
				return;
			};
			if ((_arg1.relatedObject is TextField)){
				_local2 = (_arg1.relatedObject as TextField);
				if ((((_local2.type == "input")) || (_local2.selectable))){
					return;
				};
			};
			_arg1.preventDefault();
		}
		public function addSWFBridge(_arg1:IEventDispatcher, _arg2:DisplayObject):void{
			if (!_arg2){
				return;
			};
			var _local3:ISystemManager = _form.systemManager;
			if (focusableObjects.indexOf(_arg2) == -1){
				focusableObjects.push(_arg2);
				calculateCandidates = true;
			};
			swfBridgeGroup.addChildBridge(_arg1, ISWFBridgeProvider(_arg2));
			_arg1.addEventListener(SWFBridgeRequest.MOVE_FOCUS_REQUEST, focusRequestMoveHandler);
			_arg1.addEventListener(SWFBridgeRequest.SET_SHOW_FOCUS_INDICATOR_REQUEST, setShowFocusIndicatorRequestHandler);
			_arg1.addEventListener(SWFBridgeEvent.BRIDGE_FOCUS_MANAGER_ACTIVATE, bridgeEventActivateHandler);
		}
		private function getChildIndex(_arg1:DisplayObjectContainer, _arg2:DisplayObject):int{
			var parent = _arg1;
			var child = _arg2;
			try {
				return (parent.getChildIndex(child));
			} catch(e:Error) {
				if ((parent is IRawChildrenContainer)){
					return (IRawChildrenContainer(parent).rawChildren.getChildIndex(child));
				};
				throw (e);
			};
			throw (new Error("FocusManager.getChildIndex failed"));
		}
		private function bridgeEventActivateHandler(_arg1:Event):void{
			if ((_arg1 is SWFBridgeEvent)){
				return;
			};
			lastActiveFocusManager = null;
			_lastFocus = null;
			dispatchActivatedFocusManagerEvent(IEventDispatcher(_arg1.target));
		}
		private function focusOutHandler(_arg1:FocusEvent):void{
			var _local2:InteractiveObject = InteractiveObject(_arg1.target);
		}
		private function isValidFocusCandidate(_arg1:DisplayObject, _arg2:String):Boolean{
			var _local3:IFocusManagerGroup;
			if (!isEnabledAndVisible(_arg1)){
				return (false);
			};
			if ((_arg1 is IFocusManagerGroup)){
				_local3 = IFocusManagerGroup(_arg1);
				if (_arg2 == _local3.groupName){
					return (false);
				};
			};
			return (true);
		}
		private function defaultButtonKeyHandler(_arg1:KeyboardEvent):void{
			var _local2:ISystemManager = form.systemManager;
			if (_local2.isDisplayObjectInABridgedApplication(DisplayObject(_arg1.target))){
				return;
			};
			if (((((((defaultButtonEnabled) && ((_arg1.keyCode == Keyboard.ENTER)))) && (defaultButton))) && (defButton.enabled))){
				sendDefaultButtonEvent();
			};
		}
		private function removeFocusables(_arg1:DisplayObject, _arg2:Boolean):void{
			var _local3:int;
			if ((_arg1 is DisplayObjectContainer)){
				if (!_arg2){
					_arg1.removeEventListener("tabChildrenChange", tabChildrenChangeHandler);
				};
				_local3 = 0;
				while (_local3 < focusableObjects.length) {
					if (isParent(DisplayObjectContainer(_arg1), focusableObjects[_local3])){
						if (focusableObjects[_local3] == _lastFocus){
							_lastFocus.drawFocus(false);
							_lastFocus = null;
						};
						focusableObjects[_local3].removeEventListener("tabEnabledChange", tabEnabledChangeHandler);
						focusableObjects[_local3].removeEventListener("tabIndexChange", tabIndexChangeHandler);
						focusableObjects.splice(_local3, 1);
						_local3--;
						focusableCandidates = [];
						calculateCandidates = true;
					};
					_local3++;
				};
			};
		}
		private function addedHandler(_arg1:Event):void{
			var _local2:DisplayObject = DisplayObject(_arg1.target);
			if (_local2.stage){
				addFocusables(DisplayObject(_arg1.target));
			};
		}
		private function tabChildrenChangeHandler(_arg1:Event):void{
			if (_arg1.target != _arg1.currentTarget){
				return;
			};
			calculateCandidates = true;
			var _local2:DisplayObjectContainer = DisplayObjectContainer(_arg1.target);
			if (_local2.tabChildren){
				addFocusables(_local2, true);
			} else {
				removeFocusables(_local2, true);
			};
		}
		private function sortByDepth(_arg1:DisplayObject, _arg2:DisplayObject):Number{
			var _local5:int;
			var _local6:String;
			var _local7:String;
			var _local3 = "";
			var _local4 = "";
			var _local8 = "0000";
			var _local9:DisplayObject = DisplayObject(_arg1);
			var _local10:DisplayObject = DisplayObject(_arg2);
			while (((!((_local9 == DisplayObject(form)))) && (_local9.parent))) {
				_local5 = getChildIndex(_local9.parent, _local9);
				_local6 = _local5.toString(16);
				if (_local6.length < 4){
					_local7 = (_local8.substring(0, (4 - _local6.length)) + _local6);
				};
				_local3 = (_local7 + _local3);
				_local9 = _local9.parent;
			};
			while (((!((_local10 == DisplayObject(form)))) && (_local10.parent))) {
				_local5 = getChildIndex(_local10.parent, _local10);
				_local6 = _local5.toString(16);
				if (_local6.length < 4){
					_local7 = (_local8.substring(0, (4 - _local6.length)) + _local6);
				};
				_local4 = (_local7 + _local4);
				_local10 = _local10.parent;
			};
			return (((_local3 > _local4)) ? 1 : ((_local3 < _local4)) ? -1 : 0);
		}
		mx_internal function sendDefaultButtonEvent():void{
			defButton.dispatchEvent(new MouseEvent("click"));
		}
		public function getFocus():IFocusManagerComponent{
			var _local1:InteractiveObject = form.systemManager.stage.focus;
			return (findFocusManagerComponent(_local1));
		}
		private function deactivateHandler(_arg1:Event):void{
		}
		private function setFocusToBottom():void{
			setFocusToNextIndex(focusableObjects.length, true);
		}
		private function tabIndexChangeHandler(_arg1:Event):void{
			calculateCandidates = true;
		}
		private function sortFocusableObjects():void{
			var _local3:InteractiveObject;
			focusableCandidates = [];
			var _local1:int = focusableObjects.length;
			var _local2:int;
			while (_local2 < _local1) {
				_local3 = focusableObjects[_local2];
				if (((((_local3.tabIndex) && (!(isNaN(Number(_local3.tabIndex)))))) && ((_local3.tabIndex > 0)))){
					sortFocusableObjectsTabIndex();
					return;
				};
				focusableCandidates.push(_local3);
				_local2++;
			};
			focusableCandidates.sort(sortByDepth);
		}
		private function keyFocusChangeHandler(_arg1:FocusEvent):void{
			var _local2:ISystemManager = form.systemManager;
			if (_local2.isDisplayObjectInABridgedApplication(DisplayObject(_arg1.target))){
				return;
			};
			showFocusIndicator = true;
			focusChanged = false;
			if ((((_arg1.keyCode == Keyboard.TAB)) && (!(_arg1.isDefaultPrevented())))){
				if (browserFocusComponent){
					if (browserFocusComponent.tabIndex == LARGE_TAB_INDEX){
						browserFocusComponent.tabIndex = -1;
					};
					browserFocusComponent = null;
					if (SystemManager(form.systemManager).useSWFBridge()){
						moveFocusToParent(_arg1.shiftKey);
						if (focusChanged){
							_arg1.preventDefault();
						};
					};
					return;
				};
				setFocusToNextObject(_arg1);
				if (focusChanged){
					_arg1.preventDefault();
				};
			};
		}
		private function getNextFocusManagerComponent2(_arg1:Boolean=false, _arg2:DisplayObject=null, _arg3:int=-2):FocusInfo{
			var _local10:DisplayObject;
			var _local11:String;
			var _local12:IFocusManagerGroup;
			if (focusableObjects.length == 0){
				return (null);
			};
			if (calculateCandidates){
				sortFocusableObjects();
				calculateCandidates = false;
			};
			var _local4:int = _arg3;
			if (_arg3 == FROM_INDEX_UNSPECIFIED){
				_local10 = _arg2;
				if (!_local10){
					_local10 = form.systemManager.stage.focus;
				};
				_local10 = DisplayObject(findFocusManagerComponent2(InteractiveObject(_local10)));
				_local11 = "";
				if ((_local10 is IFocusManagerGroup)){
					_local12 = IFocusManagerGroup(_local10);
					_local11 = _local12.groupName;
				};
				_local4 = getIndexOfFocusedObject(_local10);
			};
			var _local5:Boolean;
			var _local6:int = _local4;
			if (_local4 == -1){
				if (_arg1){
					_local4 = focusableCandidates.length;
				};
				_local5 = true;
			};
			var _local7:int = getIndexOfNextObject(_local4, _arg1, _local5, _local11);
			var _local8:Boolean;
			if (_arg1){
				if (_local7 >= _local4){
					_local8 = true;
				};
			} else {
				if (_local7 <= _local4){
					_local8 = true;
				};
			};
			var _local9:FocusInfo = new FocusInfo();
			_local9.displayObject = findFocusManagerComponent2(focusableCandidates[_local7]);
			_local9.wrapped = _local8;
			return (_local9);
		}
		private function getIndexOfFocusedObject(_arg1:DisplayObject):int{
			var _local4:IUIComponent;
			if (!_arg1){
				return (-1);
			};
			var _local2:int = focusableCandidates.length;
			var _local3:int;
			_local3 = 0;
			while (_local3 < _local2) {
				if (focusableCandidates[_local3] == _arg1){
					return (_local3);
				};
				_local3++;
			};
			_local3 = 0;
			while (_local3 < _local2) {
				_local4 = (focusableCandidates[_local3] as IUIComponent);
				if (((_local4) && (_local4.owns(_arg1)))){
					return (_local3);
				};
				_local3++;
			};
			return (-1);
		}
		private function focusRequestActivateHandler(_arg1:Event):void{
			skipBridge = IEventDispatcher(_arg1.target);
			activate();
			skipBridge = null;
		}
		private function removeFromParentBridge(_arg1:Event):void{
			var _local3:IEventDispatcher;
			var _local2:ISystemManager = form.systemManager;
			if (_local2.useSWFBridge()){
				_local2.removeEventListener(SWFBridgeEvent.BRIDGE_APPLICATION_UNLOADING, removeFromParentBridge);
				_local3 = swfBridgeGroup.parentBridge;
				if (_local3){
					_local3.removeEventListener(SWFBridgeRequest.MOVE_FOCUS_REQUEST, focusRequestMoveHandler);
					_local3.removeEventListener(SWFBridgeRequest.SET_SHOW_FOCUS_INDICATOR_REQUEST, setShowFocusIndicatorRequestHandler);
				};
				if (((_local3) && (!((form.systemManager is SystemManagerProxy))))){
					_local3.removeEventListener(SWFBridgeRequest.ACTIVATE_FOCUS_REQUEST, focusRequestActivateHandler);
					_local3.removeEventListener(SWFBridgeRequest.DEACTIVATE_FOCUS_REQUEST, focusRequestDeactivateHandler);
					_local3.removeEventListener(SWFBridgeEvent.BRIDGE_FOCUS_MANAGER_ACTIVATE, bridgeEventActivateHandler);
				};
			};
		}
		private function getParentBridge():IEventDispatcher{
			if (swfBridgeGroup){
				return (swfBridgeGroup.parentBridge);
			};
			return (null);
		}
		private function setFocusToComponent(_arg1:Object, _arg2:Boolean):void{
			var _local3:SWFBridgeRequest;
			var _local4:IEventDispatcher;
			focusChanged = false;
			if (_arg1){
				if ((((_arg1 is ISWFLoader)) && (ISWFLoader(_arg1).swfBridge))){
					_local3 = new SWFBridgeRequest(SWFBridgeRequest.MOVE_FOCUS_REQUEST, false, true, null, (_arg2) ? FocusRequestDirection.BOTTOM : FocusRequestDirection.TOP);
					_local4 = ISWFLoader(_arg1).swfBridge;
					if (_local4){
						_local4.dispatchEvent(_local3);
						focusChanged = _local3.data;
					};
				} else {
					if ((_arg1 is IFocusManagerComplexComponent)){
						IFocusManagerComplexComponent(_arg1).assignFocus((_arg2) ? "bottom" : "top");
						focusChanged = true;
					} else {
						if ((_arg1 is IFocusManagerComponent)){
							setFocus(IFocusManagerComponent(_arg1));
							focusChanged = true;
						};
					};
				};
			};
		}
		private function focusRequestMoveHandler(_arg1:Event):void{
			var _local3:DisplayObject;
			if ((_arg1 is SWFBridgeRequest)){
				return;
			};
			focusSetLocally = false;
			var _local2:SWFBridgeRequest = SWFBridgeRequest.marshal(_arg1);
			if ((((_local2.data == FocusRequestDirection.TOP)) || ((_local2.data == FocusRequestDirection.BOTTOM)))){
				if (focusableObjects.length == 0){
					moveFocusToParent(((_local2.data == FocusRequestDirection.TOP)) ? false : true);
					_arg1["data"] = focusChanged;
					return;
				};
				if (_local2.data == FocusRequestDirection.TOP){
					setFocusToTop();
				} else {
					setFocusToBottom();
				};
				_arg1["data"] = focusChanged;
			} else {
				_local3 = DisplayObject(_form.systemManager.swfBridgeGroup.getChildBridgeProvider(IEventDispatcher(_arg1.target)));
				moveFocus((_local2.data as String), _local3);
				_arg1["data"] = focusChanged;
			};
			if (focusSetLocally){
				dispatchActivatedFocusManagerEvent(null);
				lastActiveFocusManager = this;
			};
		}
		public function get nextTabIndex():int{
			return ((getMaxTabIndex() + 1));
		}
		private function dispatchActivatedFocusManagerEvent(_arg1:IEventDispatcher=null):void{
			if (lastActiveFocusManager == this){
				return;
			};
			var _local2:SWFBridgeEvent = new SWFBridgeEvent(SWFBridgeEvent.BRIDGE_FOCUS_MANAGER_ACTIVATE);
			dispatchEventFromSWFBridges(_local2, _arg1);
		}
		private function focusRequestDeactivateHandler(_arg1:Event):void{
			skipBridge = IEventDispatcher(_arg1.target);
			deactivate();
			skipBridge = null;
		}
		public function get focusPane():Sprite{
			return (_focusPane);
		}
		private function keyDownHandler(_arg1:KeyboardEvent):void{
			var _local3:DisplayObject;
			var _local4:String;
			var _local5:int;
			var _local6:int;
			var _local7:IFocusManagerGroup;
			var _local2:ISystemManager = form.systemManager;
			if (_local2.isDisplayObjectInABridgedApplication(DisplayObject(_arg1.target))){
				return;
			};
			if ((_local2 is SystemManager)){
				SystemManager(_local2).idleCounter = 0;
			};
			if (_arg1.keyCode == Keyboard.TAB){
				lastAction = "KEY";
				if (calculateCandidates){
					sortFocusableObjects();
					calculateCandidates = false;
				};
			};
			if (browserMode){
				if ((((_arg1.keyCode == Keyboard.TAB)) && ((focusableCandidates.length > 0)))){
					_local3 = fauxFocus;
					if (!_local3){
						_local3 = form.systemManager.stage.focus;
					};
					_local3 = DisplayObject(findFocusManagerComponent2(InteractiveObject(_local3)));
					_local4 = "";
					if ((_local3 is IFocusManagerGroup)){
						_local7 = IFocusManagerGroup(_local3);
						_local4 = _local7.groupName;
					};
					_local5 = getIndexOfFocusedObject(_local3);
					_local6 = getIndexOfNextObject(_local5, _arg1.shiftKey, false, _local4);
					if (_arg1.shiftKey){
						if (_local6 >= _local5){
							browserFocusComponent = getBrowserFocusComponent(_arg1.shiftKey);
							if (browserFocusComponent.tabIndex == -1){
								browserFocusComponent.tabIndex = 0;
							};
						};
					} else {
						if (_local6 <= _local5){
							browserFocusComponent = getBrowserFocusComponent(_arg1.shiftKey);
							if (browserFocusComponent.tabIndex == -1){
								browserFocusComponent.tabIndex = LARGE_TAB_INDEX;
							};
						};
					};
				};
			};
		}
		private function mouseDownHandler(_arg1:MouseEvent):void{
			if (_arg1.isDefaultPrevented()){
				return;
			};
			var _local2:ISystemManager = form.systemManager;
			var _local3:DisplayObject = getTopLevelFocusTarget(InteractiveObject(_arg1.target));
			if (!_local3){
				return;
			};
			showFocusIndicator = false;
			if (((((!((_local3 == _lastFocus))) || ((lastAction == "ACTIVATE")))) && (!((_local3 is TextField))))){
				setFocus(IFocusManagerComponent(_local3));
			} else {
				if (_lastFocus){
					if (((((!(_lastFocus)) && ((_local3 is IEventDispatcher)))) && (SystemManager(form.systemManager).useSWFBridge()))){
						IEventDispatcher(_local3).dispatchEvent(new FocusEvent(FocusEvent.FOCUS_IN));
					};
				};
			};
			lastAction = "MOUSEDOWN";
			dispatchActivatedFocusManagerEvent(null);
			lastActiveFocusManager = this;
		}
		private function focusInHandler(_arg1:FocusEvent):void{
			var _local4:IButton;
			var _local2:InteractiveObject = InteractiveObject(_arg1.target);
			var _local3:ISystemManager = form.systemManager;
			if (_local3.isDisplayObjectInABridgedApplication(DisplayObject(_arg1.target))){
				return;
			};
			if (isParent(DisplayObjectContainer(form), _local2)){
				_lastFocus = findFocusManagerComponent(InteractiveObject(_local2));
				if ((((_lastFocus is IButton)) && (!((_lastFocus is IToggleButton))))){
					_local4 = (_lastFocus as IButton);
					if (defButton){
						defButton.emphasized = false;
						defButton = _local4;
						_local4.emphasized = true;
					};
				} else {
					if (((defButton) && (!((defButton == _defaultButton))))){
						defButton.emphasized = false;
						defButton = _defaultButton;
						if (_defaultButton){
							_defaultButton.emphasized = true;
						};
					};
				};
			};
		}
		public function toString():String{
			return ((Object(form).toString() + ".focusManager"));
		}
		public function deactivate():void{
			var _local1:ISystemManager = form.systemManager;
			if (_local1){
				if (_local1.isTopLevelRoot()){
					_local1.stage.removeEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, mouseFocusChangeHandler);
					_local1.stage.removeEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocusChangeHandler);
					_local1.stage.removeEventListener(Event.ACTIVATE, activateHandler);
					_local1.stage.removeEventListener(Event.DEACTIVATE, deactivateHandler);
				} else {
					_local1.removeEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, mouseFocusChangeHandler);
					_local1.removeEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocusChangeHandler);
					_local1.removeEventListener(Event.ACTIVATE, activateHandler);
					_local1.removeEventListener(Event.DEACTIVATE, deactivateHandler);
				};
			};
			form.removeEventListener(FocusEvent.FOCUS_IN, focusInHandler, true);
			form.removeEventListener(FocusEvent.FOCUS_OUT, focusOutHandler, true);
			form.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
			form.removeEventListener(KeyboardEvent.KEY_DOWN, defaultButtonKeyHandler);
			form.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, true);
			activated = false;
			dispatchEventFromSWFBridges(new SWFBridgeRequest(SWFBridgeRequest.DEACTIVATE_FOCUS_REQUEST), skipBridge);
		}
		private function findFocusManagerComponent2(_arg1:InteractiveObject):DisplayObject{
			var o = _arg1;
			try {
				while (o) {
					if ((((((o is IFocusManagerComponent)) && (IFocusManagerComponent(o).focusEnabled))) || ((o is ISWFLoader)))){
						return (o);
					};
					o = o.parent;
				};
			} catch(error:SecurityError) {
			};
			return (null);
		}
		private function getIndexOfNextObject(_arg1:int, _arg2:Boolean, _arg3:Boolean, _arg4:String):int{
			var _local7:DisplayObject;
			var _local8:IFocusManagerGroup;
			var _local9:int;
			var _local10:DisplayObject;
			var _local11:IFocusManagerGroup;
			var _local5:int = focusableCandidates.length;
			var _local6:int = _arg1;
			while (true) {
				if (_arg2){
					_arg1--;
				} else {
					_arg1++;
				};
				if (_arg3){
					if (((_arg2) && ((_arg1 < 0)))){
						break;
					};
					if (((!(_arg2)) && ((_arg1 == _local5)))){
						break;
					};
				} else {
					_arg1 = ((_arg1 + _local5) % _local5);
					if (_local6 == _arg1){
						break;
					};
					if (_local6 == -1){
						_local6 = _arg1;
					};
				};
				if (isValidFocusCandidate(focusableCandidates[_arg1], _arg4)){
					_local7 = DisplayObject(findFocusManagerComponent2(focusableCandidates[_arg1]));
					if ((_local7 is IFocusManagerGroup)){
						_local8 = IFocusManagerGroup(_local7);
						_local9 = 0;
						while (_local9 < focusableCandidates.length) {
							_local10 = focusableCandidates[_local9];
							if ((_local10 is IFocusManagerGroup)){
								_local11 = IFocusManagerGroup(_local10);
								if ((((_local11.groupName == _local8.groupName)) && (_local11.selected))){
									if (((!((InteractiveObject(_local10).tabIndex == InteractiveObject(_local7).tabIndex))) && (!(_local8.selected)))){
										return (getIndexOfNextObject(_arg1, _arg2, _arg3, _arg4));
									};
									_arg1 = _local9;
									break;
								};
							};
							_local9++;
						};
					};
					return (_arg1);
				};
			};
			return (_arg1);
		}
		public function moveFocus(_arg1:String, _arg2:DisplayObject=null):void{
			if (_arg1 == FocusRequestDirection.TOP){
				setFocusToTop();
				return;
			};
			if (_arg1 == FocusRequestDirection.BOTTOM){
				setFocusToBottom();
				return;
			};
			var _local3:KeyboardEvent = new KeyboardEvent(KeyboardEvent.KEY_DOWN);
			_local3.keyCode = Keyboard.TAB;
			_local3.shiftKey = ((_arg1)==FocusRequestDirection.FORWARD) ? false : true;
			fauxFocus = _arg2;
			keyDownHandler(_local3);
			var _local4:FocusEvent = new FocusEvent(FocusEvent.KEY_FOCUS_CHANGE);
			_local4.keyCode = Keyboard.TAB;
			_local4.shiftKey = ((_arg1)==FocusRequestDirection.FORWARD) ? false : true;
			keyFocusChangeHandler(_local4);
			fauxFocus = null;
		}
		private function getMaxTabIndex():int{
			var _local4:Number;
			var _local1:Number = 0;
			var _local2:int = focusableObjects.length;
			var _local3:int;
			while (_local3 < _local2) {
				_local4 = focusableObjects[_local3].tabIndex;
				if (!isNaN(_local4)){
					_local1 = Math.max(_local1, _local4);
				};
				_local3++;
			};
			return (_local1);
		}
		private function isParent(_arg1:DisplayObjectContainer, _arg2:DisplayObject):Boolean{
			if ((_arg1 is IRawChildrenContainer)){
				return (IRawChildrenContainer(_arg1).rawChildren.contains(_arg2));
			};
			return (_arg1.contains(_arg2));
		}
		private function showHandler(_arg1:Event):void{
			form.systemManager.activate(form);
		}
		mx_internal function set form(_arg1:IFocusManagerContainer):void{
			_form = _arg1;
		}
		public function setFocus(_arg1:IFocusManagerComponent):void{
			_arg1.setFocus();
			focusSetLocally = true;
		}
		public function findFocusManagerComponent(_arg1:InteractiveObject):IFocusManagerComponent{
			return ((findFocusManagerComponent2(_arg1) as IFocusManagerComponent));
		}
		public function removeSWFBridge(_arg1:IEventDispatcher):void{
			var _local4:int;
			var _local2:ISystemManager = _form.systemManager;
			var _local3:DisplayObject = DisplayObject(swfBridgeGroup.getChildBridgeProvider(_arg1));
			if (_local3){
				_local4 = focusableObjects.indexOf(_local3);
				if (_local4 != -1){
					focusableObjects.splice(_local4, 1);
					calculateCandidates = true;
				};
			} else {
				throw (new Error());
			};
			_arg1.removeEventListener(SWFBridgeRequest.MOVE_FOCUS_REQUEST, focusRequestMoveHandler);
			_arg1.removeEventListener(SWFBridgeRequest.SET_SHOW_FOCUS_INDICATOR_REQUEST, setShowFocusIndicatorRequestHandler);
			_arg1.removeEventListener(SWFBridgeEvent.BRIDGE_FOCUS_MANAGER_ACTIVATE, bridgeEventActivateHandler);
			swfBridgeGroup.removeChildBridge(_arg1);
		}
		private function sortFocusableObjectsTabIndex():void{
			var _local3:IFocusManagerComponent;
			focusableCandidates = [];
			var _local1:int = focusableObjects.length;
			var _local2:int;
			while (_local2 < _local1) {
				_local3 = (focusableObjects[_local2] as IFocusManagerComponent);
				if (((((((_local3) && (_local3.tabIndex))) && (!(isNaN(Number(_local3.tabIndex)))))) || ((focusableObjects[_local2] is ISWFLoader)))){
					focusableCandidates.push(focusableObjects[_local2]);
				};
				_local2++;
			};
			focusableCandidates.sort(sortByTabIndex);
		}
		public function set defaultButton(_arg1:IButton):void{
			var _local2:IButton = (_arg1) ? IButton(_arg1) : null;
			if (_local2 != _defaultButton){
				if (_defaultButton){
					_defaultButton.emphasized = false;
				};
				if (defButton){
					defButton.emphasized = false;
				};
				_defaultButton = _local2;
				if (((((_lastFocus) && ((_lastFocus is IButton)))) && (!((_lastFocus is IToggleButton))))){
					defButton = (_lastFocus as IButton);
					defButton.emphasized = true;
				} else {
					defButton = _local2;
					if (_local2){
						_local2.emphasized = true;
					};
				};
			};
		}
		private function setFocusToNextObject(_arg1:FocusEvent):void{
			focusChanged = false;
			if (focusableObjects.length == 0){
				return;
			};
			var _local2:FocusInfo = getNextFocusManagerComponent2(_arg1.shiftKey, fauxFocus);
			if (((!(popup)) && (((_local2.wrapped) || (!(_local2.displayObject)))))){
				if (getParentBridge()){
					moveFocusToParent(_arg1.shiftKey);
					return;
				};
			};
			if (!_local2.displayObject){
				_arg1.preventDefault();
				return;
			};
			setFocusToComponent(_local2.displayObject, _arg1.shiftKey);
		}
		private function getTopLevelFocusTarget(_arg1:InteractiveObject):InteractiveObject{
			while (_arg1 != InteractiveObject(form)) {
				if ((((((((_arg1 is IFocusManagerComponent)) && (IFocusManagerComponent(_arg1).focusEnabled))) && (IFocusManagerComponent(_arg1).mouseFocusEnabled))) && (((_arg1 is IUIComponent)) ? IUIComponent(_arg1).enabled : true))){
					return (_arg1);
				};
				if ((_arg1.parent is ISWFLoader)){
					if (ISWFLoader(_arg1.parent).swfBridge){
						return (null);
					};
				};
				_arg1 = _arg1.parent;
				if (_arg1 == null){
					break;
				};
			};
			return (null);
		}
		private function addedToStageHandler(_arg1:Event):void{
			_form.removeEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
			if (focusableObjects.length == 0){
				addFocusables(DisplayObject(_form));
				calculateCandidates = true;
			};
		}
		private function hideHandler(_arg1:Event):void{
			form.systemManager.deactivate(form);
		}
		private function isEnabledAndVisible(_arg1:DisplayObject):Boolean{
			var _local2:DisplayObjectContainer = DisplayObject(form).parent;
			while (_arg1 != _local2) {
				if ((_arg1 is IUIComponent)){
					if (!IUIComponent(_arg1).enabled){
						return (false);
					};
				};
				if (!_arg1.visible){
					return (false);
				};
				_arg1 = _arg1.parent;
			};
			return (true);
		}
		public function hideFocus():void{
			if (showFocusIndicator){
				showFocusIndicator = false;
				if (_lastFocus){
					_lastFocus.drawFocus(false);
				};
			};
		}
		private function getBrowserFocusComponent(_arg1:Boolean):InteractiveObject{
			var _local3:int;
			var _local2:InteractiveObject = form.systemManager.stage.focus;
			if (!_local2){
				_local3 = (_arg1) ? 0 : (focusableCandidates.length - 1);
				_local2 = focusableCandidates[_local3];
			};
			return (_local2);
		}
		public function get showFocusIndicator():Boolean{
			return (_showFocusIndicator);
		}
		private function moveFocusToParent(_arg1:Boolean):Boolean{
			var _local2:SWFBridgeRequest = new SWFBridgeRequest(SWFBridgeRequest.MOVE_FOCUS_REQUEST, false, true, null, (_arg1) ? FocusRequestDirection.BACKWARD : FocusRequestDirection.FORWARD);
			var _local3:IEventDispatcher = _form.systemManager.swfBridgeGroup.parentBridge;
			_local3.dispatchEvent(_local2);
			focusChanged = _local2.data;
			return (focusChanged);
		}
		public function set focusPane(_arg1:Sprite):void{
			_focusPane = _arg1;
		}
		mx_internal function get form():IFocusManagerContainer{
			return (_form);
		}
		private function removedHandler(_arg1:Event):void{
			var _local2:int;
			var _local3:DisplayObject = DisplayObject(_arg1.target);
			if ((_local3 is IFocusManagerComponent)){
				_local2 = 0;
				while (_local2 < focusableObjects.length) {
					if (_local3 == focusableObjects[_local2]){
						if (_local3 == _lastFocus){
							_lastFocus.drawFocus(false);
							_lastFocus = null;
						};
						_local3.removeEventListener("tabEnabledChange", tabEnabledChangeHandler);
						_local3.removeEventListener("tabIndexChange", tabIndexChangeHandler);
						focusableObjects.splice(_local2, 1);
						focusableCandidates = [];
						calculateCandidates = true;
						break;
					};
					_local2++;
				};
			};
			removeFocusables(_local3, false);
		}
		private function dispatchEventFromSWFBridges(_arg1:Event, _arg2:IEventDispatcher=null):void{
			var _local3:Event;
			var _local7:IEventDispatcher;
			var _local4:ISystemManager = form.systemManager;
			if (!popup){
				_local7 = swfBridgeGroup.parentBridge;
				if (((_local7) && (!((_local7 == _arg2))))){
					_local3 = _arg1.clone();
					if ((_local3 is SWFBridgeRequest)){
						SWFBridgeRequest(_local3).requestor = _local7;
					};
					_local7.dispatchEvent(_local3);
				};
			};
			var _local5:Array = swfBridgeGroup.getChildBridges();
			var _local6:int;
			while (_local6 < _local5.length) {
				if (_local5[_local6] != _arg2){
					_local3 = _arg1.clone();
					if ((_local3 is SWFBridgeRequest)){
						SWFBridgeRequest(_local3).requestor = IEventDispatcher(_local5[_local6]);
					};
					IEventDispatcher(_local5[_local6]).dispatchEvent(_local3);
				};
				_local6++;
			};
		}
		public function get defaultButton():IButton{
			return (_defaultButton);
		}
		private function activateHandler(_arg1:Event):void{
			if (((_lastFocus) && (!(browserMode)))){
				_lastFocus.setFocus();
			};
			lastAction = "ACTIVATE";
		}
		public function showFocus():void{
			if (!showFocusIndicator){
				showFocusIndicator = true;
				if (_lastFocus){
					_lastFocus.drawFocus(true);
				};
			};
		}
		public function getNextFocusManagerComponent(_arg1:Boolean=false):IFocusManagerComponent{
			return ((getNextFocusManagerComponent2(_arg1, fauxFocus).displayObject as IFocusManagerComponent));
		}
		private function setShowFocusIndicatorRequestHandler(_arg1:Event):void{
			if ((_arg1 is SWFBridgeRequest)){
				return;
			};
			var _local2:SWFBridgeRequest = SWFBridgeRequest.marshal(_arg1);
			_showFocusIndicator = _local2.data;
			dispatchSetShowFocusIndicatorRequest(_showFocusIndicator, IEventDispatcher(_arg1.target));
		}
		private function setFocusToTop():void{
			setFocusToNextIndex(-1, false);
		}
		private function isTabVisible(_arg1:DisplayObject):Boolean{
			var _local2:DisplayObject = DisplayObject(form.systemManager);
			if (!_local2){
				return (false);
			};
			var _local3:DisplayObjectContainer = _arg1.parent;
			while (((_local3) && (!((_local3 == _local2))))) {
				if (!_local3.tabChildren){
					return (false);
				};
				_local3 = _local3.parent;
			};
			return (true);
		}
		mx_internal function get lastFocus():IFocusManagerComponent{
			return (_lastFocus);
		}
		public function set defaultButtonEnabled(_arg1:Boolean):void{
			_defaultButtonEnabled = _arg1;
		}
		public function get defaultButtonEnabled():Boolean{
			return (_defaultButtonEnabled);
		}
		public function set showFocusIndicator(_arg1:Boolean):void{
			var _local2 = !((_showFocusIndicator == _arg1));
			_showFocusIndicator = _arg1;
			if (((((_local2) && (!(popup)))) && (form.systemManager.swfBridgeGroup))){
				dispatchSetShowFocusIndicatorRequest(_arg1, null);
			};
		}
		private function sortByTabIndex(_arg1:InteractiveObject, _arg2:InteractiveObject):int{
			var _local3:int = _arg1.tabIndex;
			var _local4:int = _arg2.tabIndex;
			if (_local3 == -1){
				_local3 = int.MAX_VALUE;
			};
			if (_local4 == -1){
				_local4 = int.MAX_VALUE;
			};
			return (((_local3 > _local4)) ? 1 : ((_local3 < _local4)) ? -1 : sortByDepth(DisplayObject(_arg1), DisplayObject(_arg2)));
		}
		public function activate():void{
			if (activated){
				return;
			};
			var _local1:ISystemManager = form.systemManager;
			if (_local1){
				if (_local1.isTopLevelRoot()){
					_local1.stage.addEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, mouseFocusChangeHandler, false, 0, true);
					_local1.stage.addEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocusChangeHandler, false, 0, true);
					_local1.stage.addEventListener(Event.ACTIVATE, activateHandler, false, 0, true);
					_local1.stage.addEventListener(Event.DEACTIVATE, deactivateHandler, false, 0, true);
				} else {
					_local1.addEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, mouseFocusChangeHandler, false, 0, true);
					_local1.addEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocusChangeHandler, false, 0, true);
					_local1.addEventListener(Event.ACTIVATE, activateHandler, false, 0, true);
					_local1.addEventListener(Event.DEACTIVATE, deactivateHandler, false, 0, true);
				};
			};
			form.addEventListener(FocusEvent.FOCUS_IN, focusInHandler, true);
			form.addEventListener(FocusEvent.FOCUS_OUT, focusOutHandler, true);
			form.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
			form.addEventListener(KeyboardEvent.KEY_DOWN, defaultButtonKeyHandler);
			form.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, true);
			activated = true;
			if (_lastFocus){
				setFocus(_lastFocus);
			};
			dispatchEventFromSWFBridges(new SWFBridgeRequest(SWFBridgeRequest.ACTIVATE_FOCUS_REQUEST), skipBridge);
		}
		private function setFocusToNextIndex(_arg1:int, _arg2:Boolean):void{
			if (focusableObjects.length == 0){
				return;
			};
			if (calculateCandidates){
				sortFocusableObjects();
				calculateCandidates = false;
			};
			var _local3:FocusInfo = getNextFocusManagerComponent2(_arg2, null, _arg1);
			if (((!(popup)) && (_local3.wrapped))){
				if (getParentBridge()){
					moveFocusToParent(_arg2);
					return;
				};
			};
			setFocusToComponent(_local3.displayObject, _arg2);
		}

	}
}//package mx.managers 

import flash.display.*;

class FocusInfo {

	public var displayObject:DisplayObject;
	public var wrapped:Boolean;

	private function FocusInfo(){
	}
}

****************

//ICursorManager (mx.managers.ICursorManager)
package mx.managers {

	public interface ICursorManager {

		function removeAllCursors():void;
		function set currentCursorYOffset(_arg1:Number):void;
		function removeBusyCursor():void;
		function unRegisterToUseBusyCursor(_arg1:Object):void;
		function hideCursor():void;
		function get currentCursorID():int;
		function registerToUseBusyCursor(_arg1:Object):void;
		function setBusyCursor():void;
		function showCursor():void;
		function set currentCursorID(_arg1:int):void;
		function setCursor(_arg1:Class, _arg2:int=2, _arg3:Number=0, _arg4:Number=0):int;
		function removeCursor(_arg1:int):void;
		function get currentCursorXOffset():Number;
		function get currentCursorYOffset():Number;
		function set currentCursorXOffset(_arg1:Number):void;

	}
}//package mx.managers 

****************

//IFocusManager (mx.managers.IFocusManager)
package mx.managers {
	import flash.display.*;
	import mx.core.*;
	import flash.events.*;

	public interface IFocusManager {

		function get focusPane():Sprite;
		function getFocus():IFocusManagerComponent;
		function deactivate():void;
		function set defaultButton(_arg1:IButton):void;
		function set focusPane(_arg1:Sprite):void;
		function set showFocusIndicator(_arg1:Boolean):void;
		function moveFocus(_arg1:String, _arg2:DisplayObject=null):void;
		function addSWFBridge(_arg1:IEventDispatcher, _arg2:DisplayObject):void;
		function removeSWFBridge(_arg1:IEventDispatcher):void;
		function get defaultButtonEnabled():Boolean;
		function findFocusManagerComponent(_arg1:InteractiveObject):IFocusManagerComponent;
		function get nextTabIndex():int;
		function get defaultButton():IButton;
		function get showFocusIndicator():Boolean;
		function setFocus(_arg1:IFocusManagerComponent):void;
		function activate():void;
		function showFocus():void;
		function set defaultButtonEnabled(_arg1:Boolean):void;
		function hideFocus():void;
		function getNextFocusManagerComponent(_arg1:Boolean=false):IFocusManagerComponent;

	}
}//package mx.managers 

****************

//IFocusManagerComplexComponent (mx.managers.IFocusManagerComplexComponent)
package mx.managers {

	public interface IFocusManagerComplexComponent extends IFocusManagerComponent {

		function assignFocus(_arg1:String):void;
		function get hasFocusableContent():Boolean;

	}
}//package mx.managers 

****************

//IFocusManagerComponent (mx.managers.IFocusManagerComponent)
package mx.managers {

	public interface IFocusManagerComponent {

		function set focusEnabled(_arg1:Boolean):void;
		function drawFocus(_arg1:Boolean):void;
		function setFocus():void;
		function get focusEnabled():Boolean;
		function get tabEnabled():Boolean;
		function get tabIndex():int;
		function get mouseFocusEnabled():Boolean;

	}
}//package mx.managers 

****************

//IFocusManagerContainer (mx.managers.IFocusManagerContainer)
package mx.managers {
	import flash.display.*;
	import flash.events.*;

	public interface IFocusManagerContainer extends IEventDispatcher {

		function set focusManager(_arg1:IFocusManager):void;
		function get focusManager():IFocusManager;
		function get systemManager():ISystemManager;
		function contains(_arg1:DisplayObject):Boolean;

	}
}//package mx.managers 

****************

//IFocusManagerGroup (mx.managers.IFocusManagerGroup)
package mx.managers {

	public interface IFocusManagerGroup {

		function get groupName():String;
		function get selected():Boolean;
		function set groupName(_arg1:String):void;
		function set selected(_arg1:Boolean):void;

	}
}//package mx.managers 

****************

//ILayoutManager (mx.managers.ILayoutManager)
package mx.managers {
	import flash.events.*;

	public interface ILayoutManager extends IEventDispatcher {

		function validateNow():void;
		function validateClient(_arg1:ILayoutManagerClient, _arg2:Boolean=false):void;
		function isInvalid():Boolean;
		function invalidateDisplayList(_arg1:ILayoutManagerClient):void;
		function set usePhasedInstantiation(_arg1:Boolean):void;
		function invalidateSize(_arg1:ILayoutManagerClient):void;
		function get usePhasedInstantiation():Boolean;
		function invalidateProperties(_arg1:ILayoutManagerClient):void;

	}
}//package mx.managers 

****************

//ILayoutManagerClient (mx.managers.ILayoutManagerClient)
package mx.managers {
	import flash.events.*;

	public interface ILayoutManagerClient extends IEventDispatcher {

		function get updateCompletePendingFlag():Boolean;
		function set updateCompletePendingFlag(_arg1:Boolean):void;
		function set initialized(_arg1:Boolean):void;
		function validateProperties():void;
		function validateDisplayList():void;
		function get nestLevel():int;
		function get initialized():Boolean;
		function get processedDescriptors():Boolean;
		function validateSize(_arg1:Boolean=false):void;
		function set nestLevel(_arg1:int):void;
		function set processedDescriptors(_arg1:Boolean):void;

	}
}//package mx.managers 

****************

//ISystemManager (mx.managers.ISystemManager)
package mx.managers {
	import flash.display.*;
	import flash.geom.*;
	import mx.core.*;
	import flash.text.*;
	import flash.events.*;

	public interface ISystemManager extends IEventDispatcher, IChildList, IFlexModuleFactory {

		function set focusPane(_arg1:Sprite):void;
		function get toolTipChildren():IChildList;
		function useSWFBridge():Boolean;
		function isFontFaceEmbedded(_arg1:TextFormat):Boolean;
		function deployMouseShields(_arg1:Boolean):void;
		function get rawChildren():IChildList;
		function get topLevelSystemManager():ISystemManager;
		function dispatchEventFromSWFBridges(_arg1:Event, _arg2:IEventDispatcher=null, _arg3:Boolean=false, _arg4:Boolean=false):void;
		function getSandboxRoot():DisplayObject;
		function get swfBridgeGroup():ISWFBridgeGroup;
		function removeFocusManager(_arg1:IFocusManagerContainer):void;
		function addChildToSandboxRoot(_arg1:String, _arg2:DisplayObject):void;
		function get document():Object;
		function get focusPane():Sprite;
		function get loaderInfo():LoaderInfo;
		function addChildBridge(_arg1:IEventDispatcher, _arg2:DisplayObject):void;
		function getTopLevelRoot():DisplayObject;
		function removeChildBridge(_arg1:IEventDispatcher):void;
		function isDisplayObjectInABridgedApplication(_arg1:DisplayObject):Boolean;
		function get popUpChildren():IChildList;
		function get screen():Rectangle;
		function removeChildFromSandboxRoot(_arg1:String, _arg2:DisplayObject):void;
		function getDefinitionByName(_arg1:String):Object;
		function activate(_arg1:IFocusManagerContainer):void;
		function deactivate(_arg1:IFocusManagerContainer):void;
		function get cursorChildren():IChildList;
		function set document(_arg1:Object):void;
		function get embeddedFontList():Object;
		function set numModalWindows(_arg1:int):void;
		function isTopLevel():Boolean;
		function isTopLevelRoot():Boolean;
		function get numModalWindows():int;
		function addFocusManager(_arg1:IFocusManagerContainer):void;
		function get stage():Stage;
		function getVisibleApplicationRect(_arg1:Rectangle=null):Rectangle;

	}
}//package mx.managers 

****************

//IToolTipManager2 (mx.managers.IToolTipManager2)
package mx.managers {
	import mx.core.*;
	import flash.display.*;
	import mx.effects.*;

	public interface IToolTipManager2 {

		function registerToolTip(_arg1:DisplayObject, _arg2:String, _arg3:String):void;
		function get enabled():Boolean;
		function set enabled(_arg1:Boolean):void;
		function get scrubDelay():Number;
		function set hideEffect(_arg1:IAbstractEffect):void;
		function createToolTip(_arg1:String, _arg2:Number, _arg3:Number, _arg4:String=null, _arg5:IUIComponent=null):IToolTip;
		function set scrubDelay(_arg1:Number):void;
		function set hideDelay(_arg1:Number):void;
		function get currentTarget():DisplayObject;
		function set showDelay(_arg1:Number):void;
		function get showDelay():Number;
		function get showEffect():IAbstractEffect;
		function get hideDelay():Number;
		function get currentToolTip():IToolTip;
		function get hideEffect():IAbstractEffect;
		function set currentToolTip(_arg1:IToolTip):void;
		function get toolTipClass():Class;
		function registerErrorString(_arg1:DisplayObject, _arg2:String, _arg3:String):void;
		function destroyToolTip(_arg1:IToolTip):void;
		function set toolTipClass(_arg1:Class):void;
		function sizeTip(_arg1:IToolTip):void;
		function set currentTarget(_arg1:DisplayObject):void;
		function set showEffect(_arg1:IAbstractEffect):void;

	}
}//package mx.managers 

****************

//IToolTipManagerClient (mx.managers.IToolTipManagerClient)
package mx.managers {
	import mx.core.*;

	public interface IToolTipManagerClient extends IFlexDisplayObject {

		function get toolTip():String;
		function set toolTip(_arg1:String):void;

	}
}//package mx.managers 

****************

//LayoutManager (mx.managers.LayoutManager)
package mx.managers {
	import mx.core.*;
	import mx.events.*;
	import flash.events.*;
	import flash.display.*;
	import mx.managers.layoutClasses.*;

	public class LayoutManager extends EventDispatcher implements ILayoutManager {

		private var invalidateClientPropertiesFlag:Boolean;// = false
		private var invalidateDisplayListQueue:PriorityQueue;
		private var updateCompleteQueue:PriorityQueue;
		private var invalidateDisplayListFlag:Boolean;// = false
		private var invalidateClientSizeFlag:Boolean;// = false
		private var invalidateSizeQueue:PriorityQueue;
		private var originalFrameRate:Number;
		private var invalidatePropertiesFlag:Boolean;// = false
		private var invalidatePropertiesQueue:PriorityQueue;
		private var invalidateSizeFlag:Boolean;// = false
		private var callLaterPending:Boolean;// = false
		private var _usePhasedInstantiation:Boolean;// = false
		private var callLaterObject:UIComponent;
		private var targetLevel:int;// = 2147483647

		mx_internal static const VERSION:String = "3.5.0.12683";

		private static var instance:LayoutManager;

		public function LayoutManager(){
			updateCompleteQueue = new PriorityQueue();
			invalidatePropertiesQueue = new PriorityQueue();
			invalidateSizeQueue = new PriorityQueue();
			invalidateDisplayListQueue = new PriorityQueue();
			super();
		}
		public function set usePhasedInstantiation(_arg1:Boolean):void{
			var sm:ISystemManager;
			var stage:Stage;
			var value = _arg1;
			if (_usePhasedInstantiation != value){
				_usePhasedInstantiation = value;
				try {
					sm = SystemManagerGlobals.topLevelSystemManagers[0];
					stage = SystemManagerGlobals.topLevelSystemManagers[0].stage;
					if (stage){
						if (value){
							originalFrameRate = stage.frameRate;
							stage.frameRate = 1000;
						} else {
							stage.frameRate = originalFrameRate;
						};
					};
				} catch(e:SecurityError) {
				};
			};
		}
		private function waitAFrame():void{
			callLaterObject.callLater(doPhasedInstantiation);
		}
		public function validateClient(_arg1:ILayoutManagerClient, _arg2:Boolean=false):void{
			var _local3:ILayoutManagerClient;
			var _local4:int;
			var _local5:Boolean;
			var _local6:int = targetLevel;
			if (targetLevel == int.MAX_VALUE){
				targetLevel = _arg1.nestLevel;
			};
			while (!(_local5)) {
				_local5 = true;
				_local3 = ILayoutManagerClient(invalidatePropertiesQueue.removeSmallestChild(_arg1));
				while (_local3) {
					_local3.validateProperties();
					if (!_local3.updateCompletePendingFlag){
						updateCompleteQueue.addObject(_local3, _local3.nestLevel);
						_local3.updateCompletePendingFlag = true;
					};
					_local3 = ILayoutManagerClient(invalidatePropertiesQueue.removeSmallestChild(_arg1));
				};
				if (invalidatePropertiesQueue.isEmpty()){
					invalidatePropertiesFlag = false;
					invalidateClientPropertiesFlag = false;
				};
				_local3 = ILayoutManagerClient(invalidateSizeQueue.removeLargestChild(_arg1));
				while (_local3) {
					_local3.validateSize();
					if (!_local3.updateCompletePendingFlag){
						updateCompleteQueue.addObject(_local3, _local3.nestLevel);
						_local3.updateCompletePendingFlag = true;
					};
					if (invalidateClientPropertiesFlag){
						_local3 = ILayoutManagerClient(invalidatePropertiesQueue.removeSmallestChild(_arg1));
						if (_local3){
							invalidatePropertiesQueue.addObject(_local3, _local3.nestLevel);
							_local5 = false;
							break;
						};
					};
					_local3 = ILayoutManagerClient(invalidateSizeQueue.removeLargestChild(_arg1));
				};
				if (invalidateSizeQueue.isEmpty()){
					invalidateSizeFlag = false;
					invalidateClientSizeFlag = false;
				};
				if (!_arg2){
					_local3 = ILayoutManagerClient(invalidateDisplayListQueue.removeSmallestChild(_arg1));
					while (_local3) {
						_local3.validateDisplayList();
						if (!_local3.updateCompletePendingFlag){
							updateCompleteQueue.addObject(_local3, _local3.nestLevel);
							_local3.updateCompletePendingFlag = true;
						};
						if (invalidateClientPropertiesFlag){
							_local3 = ILayoutManagerClient(invalidatePropertiesQueue.removeSmallestChild(_arg1));
							if (_local3){
								invalidatePropertiesQueue.addObject(_local3, _local3.nestLevel);
								_local5 = false;
								break;
							};
						};
						if (invalidateClientSizeFlag){
							_local3 = ILayoutManagerClient(invalidateSizeQueue.removeLargestChild(_arg1));
							if (_local3){
								invalidateSizeQueue.addObject(_local3, _local3.nestLevel);
								_local5 = false;
								break;
							};
						};
						_local3 = ILayoutManagerClient(invalidateDisplayListQueue.removeSmallestChild(_arg1));
					};
					if (invalidateDisplayListQueue.isEmpty()){
						invalidateDisplayListFlag = false;
					};
				};
			};
			if (_local6 == int.MAX_VALUE){
				targetLevel = int.MAX_VALUE;
				if (!_arg2){
					_local3 = ILayoutManagerClient(updateCompleteQueue.removeLargestChild(_arg1));
					while (_local3) {
						if (!_local3.initialized){
							_local3.initialized = true;
						};
						_local3.dispatchEvent(new FlexEvent(FlexEvent.UPDATE_COMPLETE));
						_local3.updateCompletePendingFlag = false;
						_local3 = ILayoutManagerClient(updateCompleteQueue.removeLargestChild(_arg1));
					};
				};
			};
		}
		private function validateProperties():void{
			var _local1:ILayoutManagerClient = ILayoutManagerClient(invalidatePropertiesQueue.removeSmallest());
			while (_local1) {
				_local1.validateProperties();
				if (!_local1.updateCompletePendingFlag){
					updateCompleteQueue.addObject(_local1, _local1.nestLevel);
					_local1.updateCompletePendingFlag = true;
				};
				_local1 = ILayoutManagerClient(invalidatePropertiesQueue.removeSmallest());
			};
			if (invalidatePropertiesQueue.isEmpty()){
				invalidatePropertiesFlag = false;
			};
		}
		public function invalidateProperties(_arg1:ILayoutManagerClient):void{
			if (((!(invalidatePropertiesFlag)) && (ApplicationGlobals.application.systemManager))){
				invalidatePropertiesFlag = true;
				if (!callLaterPending){
					if (!callLaterObject){
						callLaterObject = new UIComponent();
						callLaterObject.systemManager = ApplicationGlobals.application.systemManager;
						callLaterObject.callLater(waitAFrame);
					} else {
						callLaterObject.callLater(doPhasedInstantiation);
					};
					callLaterPending = true;
				};
			};
			if (targetLevel <= _arg1.nestLevel){
				invalidateClientPropertiesFlag = true;
			};
			invalidatePropertiesQueue.addObject(_arg1, _arg1.nestLevel);
		}
		public function invalidateDisplayList(_arg1:ILayoutManagerClient):void{
			if (((!(invalidateDisplayListFlag)) && (ApplicationGlobals.application.systemManager))){
				invalidateDisplayListFlag = true;
				if (!callLaterPending){
					if (!callLaterObject){
						callLaterObject = new UIComponent();
						callLaterObject.systemManager = ApplicationGlobals.application.systemManager;
						callLaterObject.callLater(waitAFrame);
					} else {
						callLaterObject.callLater(doPhasedInstantiation);
					};
					callLaterPending = true;
				};
			} else {
				if (((!(invalidateDisplayListFlag)) && (!(ApplicationGlobals.application.systemManager)))){
				};
			};
			invalidateDisplayListQueue.addObject(_arg1, _arg1.nestLevel);
		}
		private function validateDisplayList():void{
			var _local1:ILayoutManagerClient = ILayoutManagerClient(invalidateDisplayListQueue.removeSmallest());
			while (_local1) {
				_local1.validateDisplayList();
				if (!_local1.updateCompletePendingFlag){
					updateCompleteQueue.addObject(_local1, _local1.nestLevel);
					_local1.updateCompletePendingFlag = true;
				};
				_local1 = ILayoutManagerClient(invalidateDisplayListQueue.removeSmallest());
			};
			if (invalidateDisplayListQueue.isEmpty()){
				invalidateDisplayListFlag = false;
			};
		}
		public function validateNow():void{
			var _local1:int;
			if (!usePhasedInstantiation){
				_local1 = 0;
				while (((callLaterPending) && ((_local1 < 100)))) {
					doPhasedInstantiation();
				};
			};
		}
		private function validateSize():void{
			var _local1:ILayoutManagerClient = ILayoutManagerClient(invalidateSizeQueue.removeLargest());
			while (_local1) {
				_local1.validateSize();
				if (!_local1.updateCompletePendingFlag){
					updateCompleteQueue.addObject(_local1, _local1.nestLevel);
					_local1.updateCompletePendingFlag = true;
				};
				_local1 = ILayoutManagerClient(invalidateSizeQueue.removeLargest());
			};
			if (invalidateSizeQueue.isEmpty()){
				invalidateSizeFlag = false;
			};
		}
		private function doPhasedInstantiation():void{
			var _local1:ILayoutManagerClient;
			if (usePhasedInstantiation){
				if (invalidatePropertiesFlag){
					validateProperties();
					ApplicationGlobals.application.dispatchEvent(new Event("validatePropertiesComplete"));
				} else {
					if (invalidateSizeFlag){
						validateSize();
						ApplicationGlobals.application.dispatchEvent(new Event("validateSizeComplete"));
					} else {
						if (invalidateDisplayListFlag){
							validateDisplayList();
							ApplicationGlobals.application.dispatchEvent(new Event("validateDisplayListComplete"));
						};
					};
				};
			} else {
				if (invalidatePropertiesFlag){
					validateProperties();
				};
				if (invalidateSizeFlag){
					validateSize();
				};
				if (invalidateDisplayListFlag){
					validateDisplayList();
				};
			};
			if (((((invalidatePropertiesFlag) || (invalidateSizeFlag))) || (invalidateDisplayListFlag))){
				callLaterObject.callLater(doPhasedInstantiation);
			} else {
				usePhasedInstantiation = false;
				callLaterPending = false;
				_local1 = ILayoutManagerClient(updateCompleteQueue.removeLargest());
				while (_local1) {
					if (((!(_local1.initialized)) && (_local1.processedDescriptors))){
						_local1.initialized = true;
					};
					_local1.dispatchEvent(new FlexEvent(FlexEvent.UPDATE_COMPLETE));
					_local1.updateCompletePendingFlag = false;
					_local1 = ILayoutManagerClient(updateCompleteQueue.removeLargest());
				};
				dispatchEvent(new FlexEvent(FlexEvent.UPDATE_COMPLETE));
			};
		}
		public function isInvalid():Boolean{
			return (((((invalidatePropertiesFlag) || (invalidateSizeFlag))) || (invalidateDisplayListFlag)));
		}
		public function get usePhasedInstantiation():Boolean{
			return (_usePhasedInstantiation);
		}
		public function invalidateSize(_arg1:ILayoutManagerClient):void{
			if (((!(invalidateSizeFlag)) && (ApplicationGlobals.application.systemManager))){
				invalidateSizeFlag = true;
				if (!callLaterPending){
					if (!callLaterObject){
						callLaterObject = new UIComponent();
						callLaterObject.systemManager = ApplicationGlobals.application.systemManager;
						callLaterObject.callLater(waitAFrame);
					} else {
						callLaterObject.callLater(doPhasedInstantiation);
					};
					callLaterPending = true;
				};
			};
			if (targetLevel <= _arg1.nestLevel){
				invalidateClientSizeFlag = true;
			};
			invalidateSizeQueue.addObject(_arg1, _arg1.nestLevel);
		}

		public static function getInstance():LayoutManager{
			if (!instance){
				instance = new (LayoutManager);
			};
			return (instance);
		}

	}
}//package mx.managers 

****************

//PopUpManagerChildList (mx.managers.PopUpManagerChildList)
package mx.managers {
	import mx.core.*;

	public final class PopUpManagerChildList {

		public static const PARENT:String = "parent";
		public static const APPLICATION:String = "application";
		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const POPUP:String = "popup";

	}
}//package mx.managers 

****************

//SystemChildrenList (mx.managers.SystemChildrenList)
package mx.managers {
	import flash.display.*;
	import flash.geom.*;
	import mx.core.*;

	public class SystemChildrenList implements IChildList {

		private var lowerBoundReference:QName;
		private var upperBoundReference:QName;
		private var owner:SystemManager;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function SystemChildrenList(_arg1:SystemManager, _arg2:QName, _arg3:QName){
			this.owner = _arg1;
			this.lowerBoundReference = _arg2;
			this.upperBoundReference = _arg3;
		}
		public function getChildAt(_arg1:int):DisplayObject{
			var _local2:DisplayObject = owner.mx_internal::rawChildren_getChildAt((owner[lowerBoundReference] + _arg1));
			return (_local2);
		}
		public function getChildByName(_arg1:String):DisplayObject{
			return (owner.mx_internal::rawChildren_getChildByName(_arg1));
		}
		public function removeChildAt(_arg1:int):DisplayObject{
			var _local2:DisplayObject = owner.mx_internal::rawChildren_removeChildAt((_arg1 + owner[lowerBoundReference]));
			var _local3 = owner;
			var _local4 = upperBoundReference;
			var _local5 = (_local3[_local4] - 1);
			_local3[_local4] = _local5;
			return (_local2);
		}
		public function getChildIndex(_arg1:DisplayObject):int{
			var _local2:int = owner.mx_internal::rawChildren_getChildIndex(_arg1);
			_local2 = (_local2 - owner[lowerBoundReference]);
			return (_local2);
		}
		public function addChildAt(_arg1:DisplayObject, _arg2:int):DisplayObject{
			var _local3 = owner;
			_local3.mx_internal::rawChildren_addChildAt(_arg1, (owner[lowerBoundReference] + _arg2));
			_local3 = owner;
			var _local4 = upperBoundReference;
			var _local5 = (_local3[_local4] + 1);
			_local3[_local4] = _local5;
			return (_arg1);
		}
		public function getObjectsUnderPoint(_arg1:Point):Array{
			return (owner.mx_internal::rawChildren_getObjectsUnderPoint(_arg1));
		}
		public function setChildIndex(_arg1:DisplayObject, _arg2:int):void{
			var _local3 = owner;
			_local3.mx_internal::rawChildren_setChildIndex(_arg1, (owner[lowerBoundReference] + _arg2));
		}
		public function get numChildren():int{
			return ((owner[upperBoundReference] - owner[lowerBoundReference]));
		}
		public function contains(_arg1:DisplayObject):Boolean{
			var _local2:int;
			if (((!((_arg1 == owner))) && (owner.mx_internal::rawChildren_contains(_arg1)))){
				while (_arg1.parent != owner) {
					_arg1 = _arg1.parent;
				};
				_local2 = owner.mx_internal::rawChildren_getChildIndex(_arg1);
				if ((((_local2 >= owner[lowerBoundReference])) && ((_local2 < owner[upperBoundReference])))){
					return (true);
				};
			};
			return (false);
		}
		public function removeChild(_arg1:DisplayObject):DisplayObject{
			var _local2:int = owner.mx_internal::rawChildren_getChildIndex(_arg1);
			if ((((owner[lowerBoundReference] <= _local2)) && ((_local2 < owner[upperBoundReference])))){
				var _local3 = owner;
				_local3.mx_internal::rawChildren_removeChild(_arg1);
				_local3 = owner;
				var _local4 = upperBoundReference;
				var _local5 = (_local3[_local4] - 1);
				_local3[_local4] = _local5;
			};
			return (_arg1);
		}
		public function addChild(_arg1:DisplayObject):DisplayObject{
			var _local2 = owner;
			_local2.mx_internal::rawChildren_addChildAt(_arg1, owner[upperBoundReference]);
			_local2 = owner;
			var _local3 = upperBoundReference;
			var _local4 = (_local2[_local3] + 1);
			_local2[_local3] = _local4;
			return (_arg1);
		}

	}
}//package mx.managers 

****************

//SystemManager (mx.managers.SystemManager)
package mx.managers {
	import flash.utils.*;
	import flash.display.*;
	import flash.geom.*;
	import mx.core.*;
	import flash.text.*;
	import flash.events.*;
	import mx.managers.systemClasses.*;
	import mx.events.*;
	import mx.styles.*;
	import flash.system.*;
	import mx.resources.*;
	import mx.preloaders.*;
	import mx.utils.*;
	import mx.messaging.config.*;

	public class SystemManager extends MovieClip implements IChildList, IFlexDisplayObject, IFlexModuleFactory, ISystemManager, ISWFBridgeProvider {

		private var _stage:Stage;
		mx_internal var nestLevel:int;// = 0
		private var currentSandboxEvent:Event;
		private var forms:Array;
		private var mouseCatcher:Sprite;
		private var _height:Number;
		private var preloader:Preloader;
		private var lastFrame:int;
		private var _document:Object;
		private var strongReferenceProxies:Dictionary;
		private var _rawChildren:SystemRawChildrenList;
		private var _topLevelSystemManager:ISystemManager;
		private var _toolTipIndex:int;// = 0
		private var _bridgeToFocusManager:Dictionary;
		private var _explicitHeight:Number;
		private var idToPlaceholder:Object;
		private var _swfBridgeGroup:ISWFBridgeGroup;
		private var _toolTipChildren:SystemChildrenList;
		private var form:Object;
		private var _width:Number;
		private var initialized:Boolean;// = false
		private var _focusPane:Sprite;
		private var _fontList:Object;// = null
		private var isStageRoot:Boolean;// = true
		private var _popUpChildren:SystemChildrenList;
		private var _topMostIndex:int;// = 0
		private var nextFrameTimer:Timer;// = null
		mx_internal var topLevel:Boolean;// = true
		private var weakReferenceProxies:Dictionary;
		private var _cursorIndex:int;// = 0
		private var isBootstrapRoot:Boolean;// = false
		mx_internal var _mouseY;
		private var _numModalWindows:int;// = 0
		mx_internal var _mouseX;
		private var _screen:Rectangle;
		mx_internal var idleCounter:int;// = 0
		private var _cursorChildren:SystemChildrenList;
		private var initCallbackFunctions:Array;
		private var _noTopMostIndex:int;// = 0
		private var _applicationIndex:int;// = 1
		private var isDispatchingResizeEvent:Boolean;
		private var idleTimer:Timer;
		private var doneExecutingInitCallbacks:Boolean;// = false
		private var _explicitWidth:Number;
		private var eventProxy:EventProxy;
		mx_internal var topLevelWindow:IUIComponent;

		private static const IDLE_THRESHOLD:Number = 1000;
		private static const IDLE_INTERVAL:Number = 100;
		mx_internal static const VERSION:String = "3.5.0.12683";

		mx_internal static var lastSystemManager:SystemManager;
		mx_internal static var allSystemManagers:Dictionary = new Dictionary(true);

		public function SystemManager(){
			initCallbackFunctions = [];
			forms = [];
			weakReferenceProxies = new Dictionary(true);
			strongReferenceProxies = new Dictionary(false);
			super();
			if (stage){
				stage.scaleMode = StageScaleMode.NO_SCALE;
				stage.align = StageAlign.TOP_LEFT;
			};
			if ((((SystemManagerGlobals.topLevelSystemManagers.length > 0)) && (!(stage)))){
				topLevel = false;
			};
			if (!stage){
				isStageRoot = false;
			};
			if (topLevel){
				SystemManagerGlobals.topLevelSystemManagers.push(this);
			};
			lastSystemManager = this;
			var _local1:Array = info()["compiledLocales"];
			ResourceBundle.locale = (((!((_local1 == null))) && ((_local1.length > 0)))) ? _local1[0] : "en_US";
			executeCallbacks();
			stop();
			if (((topLevel) && (!((currentFrame == 1))))){
				throw (new Error((("The SystemManager constructor was called when the currentFrame was at " + currentFrame) + " Please add this SWF to bug 129782.")));
			};
			if (((root) && (root.loaderInfo))){
				root.loaderInfo.addEventListener(Event.INIT, initHandler);
			};
		}
		private function removeEventListenerFromSandboxes(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:IEventDispatcher=null):void{
			var _local8:int;
			if (!swfBridgeGroup){
				return;
			};
			var _local5:EventListenerRequest = new EventListenerRequest(EventListenerRequest.REMOVE_EVENT_LISTENER_REQUEST, false, false, _arg1, _arg3);
			var _local6:IEventDispatcher = swfBridgeGroup.parentBridge;
			if (((_local6) && (!((_local6 == _arg4))))){
				_local6.removeEventListener(_arg1, _arg2, _arg3);
			};
			var _local7:Array = swfBridgeGroup.getChildBridges();
			while (_local8 < _local7.length) {
				if (_local7[_local8] != _arg4){
					IEventDispatcher(_local7[_local8]).removeEventListener(_arg1, _arg2, _arg3);
				};
				_local8++;
			};
			dispatchEventFromSWFBridges(_local5, _arg4);
		}
		mx_internal function addingChild(_arg1:DisplayObject):void{
			var _local4:DisplayObjectContainer;
			var _local2 = 1;
			if (((!(topLevel)) && (parent))){
				_local4 = parent.parent;
				while (_local4) {
					if ((_local4 is ILayoutManagerClient)){
						_local2 = (ILayoutManagerClient(_local4).nestLevel + 1);
						break;
					};
					_local4 = _local4.parent;
				};
			};
			nestLevel = _local2;
			if ((_arg1 is IUIComponent)){
				IUIComponent(_arg1).systemManager = this;
			};
			var _local3:Class = Class(getDefinitionByName("mx.core.UIComponent"));
			if ((((_arg1 is IUIComponent)) && (!(IUIComponent(_arg1).document)))){
				IUIComponent(_arg1).document = document;
			};
			if ((_arg1 is ILayoutManagerClient)){
				ILayoutManagerClient(_arg1).nestLevel = (nestLevel + 1);
			};
			if ((_arg1 is InteractiveObject)){
				if (doubleClickEnabled){
					InteractiveObject(_arg1).doubleClickEnabled = true;
				};
			};
			if ((_arg1 is IUIComponent)){
				IUIComponent(_arg1).parentChanged(this);
			};
			if ((_arg1 is IStyleClient)){
				IStyleClient(_arg1).regenerateStyleCache(true);
			};
			if ((_arg1 is ISimpleStyleClient)){
				ISimpleStyleClient(_arg1).styleChanged(null);
			};
			if ((_arg1 is IStyleClient)){
				IStyleClient(_arg1).notifyStyleChangeInChildren(null, true);
			};
			if (((_local3) && ((_arg1 is _local3)))){
				_local3(_arg1).initThemeColor();
			};
			if (((_local3) && ((_arg1 is _local3)))){
				_local3(_arg1).stylesInitialized();
			};
		}
		private function dispatchEventToOtherSystemManagers(_arg1:Event):void{
			SystemManagerGlobals.dispatchingEventToOtherSystemManagers = true;
			var _local2:Array = SystemManagerGlobals.topLevelSystemManagers;
			var _local3:int = _local2.length;
			var _local4:int;
			while (_local4 < _local3) {
				if (_local2[_local4] != this){
					_local2[_local4].dispatchEvent(_arg1);
				};
				_local4++;
			};
			SystemManagerGlobals.dispatchingEventToOtherSystemManagers = false;
		}
		private function idleTimer_timerHandler(_arg1:TimerEvent):void{
			idleCounter++;
			if ((idleCounter * IDLE_INTERVAL) > IDLE_THRESHOLD){
				dispatchEvent(new FlexEvent(FlexEvent.IDLE));
			};
		}
		private function initManagerHandler(_arg1:Event):void{
			var event = _arg1;
			if (!SystemManagerGlobals.dispatchingEventToOtherSystemManagers){
				dispatchEventToOtherSystemManagers(event);
			};
			if ((event is InterManagerRequest)){
				return;
			};
			var name:String = event["name"];
			try {
				Singleton.getInstance(name);
			} catch(e:Error) {
			};
		}
		mx_internal function rawChildren_getObjectsUnderPoint(_arg1:Point):Array{
			return (super.getObjectsUnderPoint(_arg1));
		}
		public function get preloadedRSLs():Dictionary{
			return (null);
		}
		private function getSizeRequestHandler(_arg1:Event):void{
			var _local2:Object = Object(_arg1);
			_local2.data = {width:measuredWidth, height:measuredHeight};
		}
		private function beforeUnloadHandler(_arg1:Event):void{
			var _local2:DisplayObject;
			if (((topLevel) && (stage))){
				_local2 = getSandboxRoot();
				if (_local2 != this){
					_local2.removeEventListener(Event.RESIZE, Stage_resizeHandler);
				};
			};
			removeParentBridgeListeners();
			dispatchEvent(_arg1);
		}
		public function getExplicitOrMeasuredHeight():Number{
			return ((isNaN(explicitHeight)) ? measuredHeight : explicitHeight);
		}
		private function getVisibleRectRequestHandler(_arg1:Event):void{
			var _local5:Rectangle;
			var _local7:Point;
			var _local8:IEventDispatcher;
			if ((_arg1 is SWFBridgeRequest)){
				return;
			};
			var _local2:SWFBridgeRequest = SWFBridgeRequest.marshal(_arg1);
			var _local3:Rectangle = Rectangle(_local2.data);
			var _local4:DisplayObject = DisplayObject(swfBridgeGroup.getChildBridgeProvider(_local2.requestor));
			var _local6:Boolean;
			if (!DisplayObjectContainer(document).contains(_local4)){
				_local6 = false;
			};
			if ((_local4 is ISWFLoader)){
				_local5 = ISWFLoader(_local4).getVisibleApplicationRect();
			} else {
				_local5 = _local4.getBounds(this);
				_local7 = localToGlobal(_local5.topLeft);
				_local5.x = _local7.x;
				_local5.y = _local7.y;
			};
			_local3 = _local3.intersection(_local5);
			_local2.data = _local3;
			if (((_local6) && (useSWFBridge()))){
				_local8 = swfBridgeGroup.parentBridge;
				_local2.requestor = _local8;
				_local8.dispatchEvent(_local2);
			};
			Object(_arg1).data = _local2.data;
		}
		mx_internal function notifyStyleChangeInChildren(_arg1:String, _arg2:Boolean):void{
			var _local6:IStyleClient;
			var _local3:Boolean;
			var _local4:int = rawChildren.numChildren;
			var _local5:int;
			while (_local5 < _local4) {
				_local6 = (rawChildren.getChildAt(_local5) as IStyleClient);
				if (_local6){
					_local6.styleChanged(_arg1);
					_local6.notifyStyleChangeInChildren(_arg1, _arg2);
				};
				if (isTopLevelWindow(DisplayObject(_local6))){
					_local3 = true;
				};
				_local4 = rawChildren.numChildren;
				_local5++;
			};
			if (((!(_local3)) && ((topLevelWindow is IStyleClient)))){
				IStyleClient(topLevelWindow).styleChanged(_arg1);
				IStyleClient(topLevelWindow).notifyStyleChangeInChildren(_arg1, _arg2);
			};
		}
		private function addEventListenerToOtherSystemManagers(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{
			var _local6:Array = SystemManagerGlobals.topLevelSystemManagers;
			if (_local6.length < 2){
				return;
			};
			SystemManagerGlobals.changingListenersInOtherSystemManagers = true;
			var _local7:int = _local6.length;
			var _local8:int;
			while (_local8 < _local7) {
				if (_local6[_local8] != this){
					_local6[_local8].addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5);
				};
				_local8++;
			};
			SystemManagerGlobals.changingListenersInOtherSystemManagers = false;
		}
		private function initHandler(_arg1:Event):void{
			var bridgeEvent:SWFBridgeEvent;
			var event = _arg1;
			if (!isStageRoot){
				if (root.loaderInfo.parentAllowsChild){
					try {
						if (((!(parent.dispatchEvent(new Event("mx.managers.SystemManager.isBootstrapRoot", false, true)))) || (!(root.loaderInfo.sharedEvents.hasEventListener(SWFBridgeEvent.BRIDGE_NEW_APPLICATION))))){
							isBootstrapRoot = true;
						};
					} catch(e:Error) {
					};
				};
			};
			allSystemManagers[this] = this.loaderInfo.url;
			root.loaderInfo.removeEventListener(Event.INIT, initHandler);
			if (useSWFBridge()){
				swfBridgeGroup = new SWFBridgeGroup(this);
				swfBridgeGroup.parentBridge = loaderInfo.sharedEvents;
				addParentBridgeListeners();
				bridgeEvent = new SWFBridgeEvent(SWFBridgeEvent.BRIDGE_NEW_APPLICATION);
				bridgeEvent.data = swfBridgeGroup.parentBridge;
				swfBridgeGroup.parentBridge.dispatchEvent(bridgeEvent);
				addEventListener(SWFBridgeRequest.ADD_POP_UP_PLACE_HOLDER_REQUEST, addPlaceholderPopupRequestHandler);
				root.loaderInfo.addEventListener(Event.UNLOAD, unloadHandler, false, 0, true);
			};
			var sbRoot:DisplayObject = getSandboxRoot();
			sbRoot.addEventListener(InterManagerRequest.INIT_MANAGER_REQUEST, initManagerHandler, false, 0, true);
			if (sbRoot == this){
				addEventListener(InterManagerRequest.SYSTEM_MANAGER_REQUEST, systemManagerHandler);
				addEventListener(InterManagerRequest.DRAG_MANAGER_REQUEST, multiWindowRedispatcher);
				addEventListener("dispatchDragEvent", multiWindowRedispatcher);
				addEventListener(SWFBridgeRequest.ADD_POP_UP_REQUEST, addPopupRequestHandler);
				addEventListener(SWFBridgeRequest.REMOVE_POP_UP_REQUEST, removePopupRequestHandler);
				addEventListener(SWFBridgeRequest.ADD_POP_UP_PLACE_HOLDER_REQUEST, addPlaceholderPopupRequestHandler);
				addEventListener(SWFBridgeRequest.REMOVE_POP_UP_PLACE_HOLDER_REQUEST, removePlaceholderPopupRequestHandler);
				addEventListener(SWFBridgeEvent.BRIDGE_WINDOW_ACTIVATE, activateFormSandboxEventHandler);
				addEventListener(SWFBridgeEvent.BRIDGE_WINDOW_DEACTIVATE, deactivateFormSandboxEventHandler);
				addEventListener(SWFBridgeRequest.HIDE_MOUSE_CURSOR_REQUEST, hideMouseCursorRequestHandler);
				addEventListener(SWFBridgeRequest.SHOW_MOUSE_CURSOR_REQUEST, showMouseCursorRequestHandler);
				addEventListener(SWFBridgeRequest.RESET_MOUSE_CURSOR_REQUEST, resetMouseCursorRequestHandler);
			};
			var docFrame:int = ((totalFrames)==1) ? 0 : 1;
			addEventListener(Event.ENTER_FRAME, docFrameListener);
			initialize();
		}
		mx_internal function findFocusManagerContainer(_arg1:SystemManagerProxy):IFocusManagerContainer{
			var _local5:DisplayObject;
			var _local2:IChildList = _arg1.rawChildren;
			var _local3:int = _local2.numChildren;
			var _local4:int;
			while (_local4 < _local3) {
				_local5 = _local2.getChildAt(_local4);
				if ((_local5 is IFocusManagerContainer)){
					return (IFocusManagerContainer(_local5));
				};
				_local4++;
			};
			return (null);
		}
		private function addPlaceholderPopupRequestHandler(_arg1:Event):void{
			var _local3:RemotePopUp;
			var _local2:SWFBridgeRequest = SWFBridgeRequest.marshal(_arg1);
			if (((!((_arg1.target == this))) && ((_arg1 is SWFBridgeRequest)))){
				return;
			};
			if (!forwardPlaceholderRequest(_local2, true)){
				_local3 = new RemotePopUp(_local2.data.placeHolderId, _local2.requestor);
				forms.push(_local3);
			};
		}
		override public function contains(_arg1:DisplayObject):Boolean{
			var _local2:int;
			var _local3:int;
			var _local4:DisplayObject;
			if (super.contains(_arg1)){
				if (_arg1.parent == this){
					_local2 = super.getChildIndex(_arg1);
					if (_local2 < noTopMostIndex){
						return (true);
					};
				} else {
					_local3 = 0;
					while (_local3 < noTopMostIndex) {
						_local4 = super.getChildAt(_local3);
						if ((_local4 is IRawChildrenContainer)){
							if (IRawChildrenContainer(_local4).rawChildren.contains(_arg1)){
								return (true);
							};
						};
						if ((_local4 is DisplayObjectContainer)){
							if (DisplayObjectContainer(_local4).contains(_arg1)){
								return (true);
							};
						};
						_local3++;
					};
				};
			};
			return (false);
		}
		private function modalWindowRequestHandler(_arg1:Event):void{
			if ((_arg1 is SWFBridgeRequest)){
				return;
			};
			var _local2:SWFBridgeRequest = SWFBridgeRequest.marshal(_arg1);
			if (!preProcessModalWindowRequest(_local2, getSandboxRoot())){
				return;
			};
			Singleton.getInstance("mx.managers::IPopUpManager");
			dispatchEvent(_local2);
		}
		private function activateApplicationSandboxEventHandler(_arg1:Event):void{
			if (!isTopLevelRoot()){
				swfBridgeGroup.parentBridge.dispatchEvent(_arg1);
				return;
			};
			activateForm(document);
		}
		public function getDefinitionByName(_arg1:String):Object{
			var _local3:Object;
			var _local2:ApplicationDomain = (((!(topLevel)) && ((parent is Loader)))) ? Loader(parent).contentLoaderInfo.applicationDomain : (info()["currentDomain"] as ApplicationDomain);
			if (_local2.hasDefinition(_arg1)){
				_local3 = _local2.getDefinition(_arg1);
			};
			return (_local3);
		}
		public function removeChildFromSandboxRoot(_arg1:String, _arg2:DisplayObject):void{
			var _local3:InterManagerRequest;
			if (getSandboxRoot() == this){
				this[_arg1].removeChild(_arg2);
			} else {
				removingChild(_arg2);
				_local3 = new InterManagerRequest(InterManagerRequest.SYSTEM_MANAGER_REQUEST);
				_local3.name = (_arg1 + ".removeChild");
				_local3.value = _arg2;
				getSandboxRoot().dispatchEvent(_local3);
				childRemoved(_arg2);
			};
		}
		private function removeEventListenerFromOtherSystemManagers(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{
			var _local4:Array = SystemManagerGlobals.topLevelSystemManagers;
			if (_local4.length < 2){
				return;
			};
			SystemManagerGlobals.changingListenersInOtherSystemManagers = true;
			var _local5:int = _local4.length;
			var _local6:int;
			while (_local6 < _local5) {
				if (_local4[_local6] != this){
					_local4[_local6].removeEventListener(_arg1, _arg2, _arg3);
				};
				_local6++;
			};
			SystemManagerGlobals.changingListenersInOtherSystemManagers = false;
		}
		public function get embeddedFontList():Object{
			var _local1:Object;
			var _local2:String;
			var _local3:Object;
			if (_fontList == null){
				_fontList = {};
				_local1 = info()["fonts"];
				for (_local2 in _local1) {
					_fontList[_local2] = _local1[_local2];
				};
				if (((!(topLevel)) && (_topLevelSystemManager))){
					_local3 = _topLevelSystemManager.embeddedFontList;
					for (_local2 in _local3) {
						_fontList[_local2] = _local3[_local2];
					};
				};
			};
			return (_fontList);
		}
		mx_internal function set cursorIndex(_arg1:int):void{
			var _local2:int = (_arg1 - _cursorIndex);
			_cursorIndex = _arg1;
		}
		mx_internal function addChildBridgeListeners(_arg1:IEventDispatcher):void{
			if (((!(topLevel)) && (topLevelSystemManager))){
				SystemManager(topLevelSystemManager).addChildBridgeListeners(_arg1);
				return;
			};
			_arg1.addEventListener(SWFBridgeRequest.ADD_POP_UP_REQUEST, addPopupRequestHandler);
			_arg1.addEventListener(SWFBridgeRequest.REMOVE_POP_UP_REQUEST, removePopupRequestHandler);
			_arg1.addEventListener(SWFBridgeRequest.ADD_POP_UP_PLACE_HOLDER_REQUEST, addPlaceholderPopupRequestHandler);
			_arg1.addEventListener(SWFBridgeRequest.REMOVE_POP_UP_PLACE_HOLDER_REQUEST, removePlaceholderPopupRequestHandler);
			_arg1.addEventListener(SWFBridgeEvent.BRIDGE_WINDOW_ACTIVATE, activateFormSandboxEventHandler);
			_arg1.addEventListener(SWFBridgeEvent.BRIDGE_WINDOW_DEACTIVATE, deactivateFormSandboxEventHandler);
			_arg1.addEventListener(SWFBridgeEvent.BRIDGE_APPLICATION_ACTIVATE, activateApplicationSandboxEventHandler);
			_arg1.addEventListener(EventListenerRequest.ADD_EVENT_LISTENER_REQUEST, eventListenerRequestHandler, false, 0, true);
			_arg1.addEventListener(EventListenerRequest.REMOVE_EVENT_LISTENER_REQUEST, eventListenerRequestHandler, false, 0, true);
			_arg1.addEventListener(SWFBridgeRequest.CREATE_MODAL_WINDOW_REQUEST, modalWindowRequestHandler);
			_arg1.addEventListener(SWFBridgeRequest.SHOW_MODAL_WINDOW_REQUEST, modalWindowRequestHandler);
			_arg1.addEventListener(SWFBridgeRequest.HIDE_MODAL_WINDOW_REQUEST, modalWindowRequestHandler);
			_arg1.addEventListener(SWFBridgeRequest.GET_VISIBLE_RECT_REQUEST, getVisibleRectRequestHandler);
			_arg1.addEventListener(SWFBridgeRequest.HIDE_MOUSE_CURSOR_REQUEST, hideMouseCursorRequestHandler);
			_arg1.addEventListener(SWFBridgeRequest.SHOW_MOUSE_CURSOR_REQUEST, showMouseCursorRequestHandler);
			_arg1.addEventListener(SWFBridgeRequest.RESET_MOUSE_CURSOR_REQUEST, resetMouseCursorRequestHandler);
		}
		public function set document(_arg1:Object):void{
			_document = _arg1;
		}
		override public function getChildAt(_arg1:int):DisplayObject{
			return (super.getChildAt((applicationIndex + _arg1)));
		}
		public function get rawChildren():IChildList{
			if (!_rawChildren){
				_rawChildren = new SystemRawChildrenList(this);
			};
			return (_rawChildren);
		}
		private function findLastActiveForm(_arg1:Object):Object{
			var _local2:int = forms.length;
			var _local3:int = (forms.length - 1);
			while (_local3 >= 0) {
				if (((!((forms[_local3] == _arg1))) && (canActivatePopUp(forms[_local3])))){
					return (forms[_local3]);
				};
				_local3--;
			};
			return (null);
		}
		private function multiWindowRedispatcher(_arg1:Event):void{
			if (!SystemManagerGlobals.dispatchingEventToOtherSystemManagers){
				dispatchEventToOtherSystemManagers(_arg1);
			};
		}
		public function deployMouseShields(_arg1:Boolean):void{
			var _local2:InterManagerRequest = new InterManagerRequest(InterManagerRequest.DRAG_MANAGER_REQUEST, false, false, "mouseShield", _arg1);
			getSandboxRoot().dispatchEvent(_local2);
		}
		override public function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{
			var actualType:String;
			var type = _arg1;
			var listener = _arg2;
			var useCapture = _arg3;
			var priority = _arg4;
			var useWeakReference = _arg5;
			if ((((type == FlexEvent.RENDER)) || ((type == FlexEvent.ENTER_FRAME)))){
				if (type == FlexEvent.RENDER){
					type = Event.RENDER;
				} else {
					type = Event.ENTER_FRAME;
				};
				try {
					if (stage){
						stage.addEventListener(type, listener, useCapture, priority, useWeakReference);
					} else {
						super.addEventListener(type, listener, useCapture, priority, useWeakReference);
					};
				} catch(error:SecurityError) {
					super.addEventListener(type, listener, useCapture, priority, useWeakReference);
				};
				if (((stage) && ((type == Event.RENDER)))){
					stage.invalidate();
				};
				return;
			};
			if ((((((((((type == MouseEvent.MOUSE_MOVE)) || ((type == MouseEvent.MOUSE_UP)))) || ((type == MouseEvent.MOUSE_DOWN)))) || ((type == Event.ACTIVATE)))) || ((type == Event.DEACTIVATE)))){
				try {
					if (stage){
						stage.addEventListener(type, stageEventHandler, false, 0, true);
					};
				} catch(error:SecurityError) {
				};
			};
			if (type == SandboxMouseEvent.MOUSE_UP_SOMEWHERE){
				try {
					if (stage){
						stage.addEventListener(Event.MOUSE_LEAVE, mouseLeaveHandler, false, 0, true);
					} else {
						super.addEventListener(Event.MOUSE_LEAVE, mouseLeaveHandler, false, 0, true);
					};
				} catch(error:SecurityError) {
					super.addEventListener(Event.MOUSE_LEAVE, mouseLeaveHandler, false, 0, true);
				};
			};
			if (((hasSWFBridges()) || ((SystemManagerGlobals.topLevelSystemManagers.length > 1)))){
				if (!eventProxy){
					eventProxy = new EventProxy(this);
				};
				actualType = EventUtil.sandboxMouseEventMap[type];
				if (actualType){
					if (isTopLevelRoot()){
						stage.addEventListener(MouseEvent.MOUSE_MOVE, resetMouseCursorTracking, true, (EventPriority.CURSOR_MANAGEMENT + 1), true);
						addEventListenerToSandboxes(SandboxMouseEvent.MOUSE_MOVE_SOMEWHERE, resetMouseCursorTracking, true, (EventPriority.CURSOR_MANAGEMENT + 1), true);
					} else {
						super.addEventListener(MouseEvent.MOUSE_MOVE, resetMouseCursorTracking, true, (EventPriority.CURSOR_MANAGEMENT + 1), true);
					};
					addEventListenerToSandboxes(type, sandboxMouseListener, useCapture, priority, useWeakReference);
					if (!SystemManagerGlobals.changingListenersInOtherSystemManagers){
						addEventListenerToOtherSystemManagers(type, otherSystemManagerMouseListener, useCapture, priority, useWeakReference);
					};
					if (getSandboxRoot() == this){
						super.addEventListener(actualType, eventProxy.marshalListener, useCapture, priority, useWeakReference);
						if (actualType == MouseEvent.MOUSE_UP){
							try {
								if (stage){
									stage.addEventListener(Event.MOUSE_LEAVE, eventProxy.marshalListener, useCapture, priority, useWeakReference);
								} else {
									super.addEventListener(Event.MOUSE_LEAVE, eventProxy.marshalListener, useCapture, priority, useWeakReference);
								};
							} catch(e:SecurityError) {
								super.addEventListener(Event.MOUSE_LEAVE, eventProxy.marshalListener, useCapture, priority, useWeakReference);
							};
						};
					};
					super.addEventListener(type, listener, false, priority, useWeakReference);
					return;
				};
			};
			if ((((type == FlexEvent.IDLE)) && (!(idleTimer)))){
				idleTimer = new Timer(IDLE_INTERVAL);
				idleTimer.addEventListener(TimerEvent.TIMER, idleTimer_timerHandler);
				idleTimer.start();
				addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler, true);
				addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler, true);
			};
			super.addEventListener(type, listener, useCapture, priority, useWeakReference);
		}
		private function activateForm(_arg1:Object):void{
			var _local2:IFocusManagerContainer;
			if (form){
				if (((!((form == _arg1))) && ((forms.length > 1)))){
					if (isRemotePopUp(form)){
						if (!areRemotePopUpsEqual(form, _arg1)){
							deactivateRemotePopUp(form);
						};
					} else {
						_local2 = IFocusManagerContainer(form);
						_local2.focusManager.deactivate();
					};
				};
			};
			form = _arg1;
			if (isRemotePopUp(_arg1)){
				activateRemotePopUp(_arg1);
			} else {
				if (_arg1.focusManager){
					_arg1.focusManager.activate();
				};
			};
			updateLastActiveForm();
		}
		public function removeFocusManager(_arg1:IFocusManagerContainer):void{
			var _local2:int = forms.length;
			var _local3:int;
			while (_local3 < _local2) {
				if (forms[_local3] == _arg1){
					if (form == _arg1){
						deactivate(_arg1);
					};
					dispatchDeactivatedWindowEvent(DisplayObject(_arg1));
					forms.splice(_local3, 1);
					return;
				};
				_local3++;
			};
		}
		private function mouseMoveHandler(_arg1:MouseEvent):void{
			idleCounter = 0;
		}
		private function getSandboxScreen():Rectangle{
			var _local2:Rectangle;
			var _local3:DisplayObject;
			var _local4:InterManagerRequest;
			var _local1:DisplayObject = getSandboxRoot();
			if (_local1 == this){
				_local2 = new Rectangle(0, 0, width, height);
			} else {
				if (_local1 == topLevelSystemManager){
					_local3 = DisplayObject(topLevelSystemManager);
					_local2 = new Rectangle(0, 0, _local3.width, _local3.height);
				} else {
					_local4 = new InterManagerRequest(InterManagerRequest.SYSTEM_MANAGER_REQUEST, false, false, "screen");
					_local1.dispatchEvent(_local4);
					_local2 = Rectangle(_local4.value);
				};
			};
			return (_local2);
		}
		public function get focusPane():Sprite{
			return (_focusPane);
		}
		override public function get mouseX():Number{
			if (_mouseX === undefined){
				return (super.mouseX);
			};
			return (_mouseX);
		}
		private function mouseDownHandler(_arg1:MouseEvent):void{
			var _local3:int;
			var _local4:DisplayObject;
			var _local5:Boolean;
			var _local6:int;
			var _local7:Object;
			var _local8:int;
			var _local9:int;
			var _local10:int;
			var _local11:IChildList;
			var _local12:DisplayObject;
			var _local13:Boolean;
			var _local14:int;
			idleCounter = 0;
			var _local2:IEventDispatcher = getSWFBridgeOfDisplayObject((_arg1.target as DisplayObject));
			if (((_local2) && ((bridgeToFocusManager[_local2] == document.focusManager)))){
				if (isTopLevelRoot()){
					activateForm(document);
				} else {
					dispatchActivatedApplicationEvent();
				};
				return;
			};
			if (numModalWindows == 0){
				if (((!(isTopLevelRoot())) || ((forms.length > 1)))){
					_local3 = forms.length;
					_local4 = DisplayObject(_arg1.target);
					_local5 = document.rawChildren.contains(_local4);
					while (_local4) {
						_local6 = 0;
						while (_local6 < _local3) {
							_local7 = (isRemotePopUp(forms[_local6])) ? forms[_local6].window : forms[_local6];
							if (_local7 == _local4){
								_local8 = 0;
								if (((((!((_local4 == form))) && ((_local4 is IFocusManagerContainer)))) || (((!(isTopLevelRoot())) && ((_local4 == form)))))){
									if (isTopLevelRoot()){
										activate(IFocusManagerContainer(_local4));
									};
									if (_local4 == document){
										dispatchActivatedApplicationEvent();
									} else {
										if ((_local4 is DisplayObject)){
											dispatchActivatedWindowEvent(DisplayObject(_local4));
										};
									};
								};
								if (popUpChildren.contains(_local4)){
									_local11 = popUpChildren;
								} else {
									_local11 = this;
								};
								_local9 = _local11.getChildIndex(_local4);
								_local10 = _local9;
								_local3 = forms.length;
								_local8 = 0;
								for (;_local8 < _local3;_local8++) {
									_local13 = isRemotePopUp(forms[_local8]);
									if (_local13){
										if ((forms[_local8].window is String)){
											continue;
										};
										_local12 = forms[_local8].window;
									} else {
										_local12 = forms[_local8];
									};
									if (_local13){
										_local14 = getChildListIndex(_local11, _local12);
										if (_local14 > _local9){
											_local10 = Math.max(_local14, _local10);
										};
									} else {
										if (_local11.contains(_local12)){
											if (_local11.getChildIndex(_local12) > _local9){
												_local10 = Math.max(_local11.getChildIndex(_local12), _local10);
											};
										};
									};
								};
								if ((((_local10 > _local9)) && (!(_local5)))){
									_local11.setChildIndex(_local4, _local10);
								};
								return;
							};
							_local6++;
						};
						_local4 = _local4.parent;
					};
				} else {
					dispatchActivatedApplicationEvent();
				};
			};
		}
		public function allowInsecureDomain(... _args):void{
		}
		private function removePopupRequestHandler(_arg1:Event):void{
			var _local3:SWFBridgeRequest;
			var _local2:SWFBridgeRequest = SWFBridgeRequest.marshal(_arg1);
			if (((swfBridgeGroup.parentBridge) && (SecurityUtil.hasMutualTrustBetweenParentAndChild(this)))){
				_local2.requestor = swfBridgeGroup.parentBridge;
				getSandboxRoot().dispatchEvent(_local2);
				return;
			};
			if (popUpChildren.contains(_local2.data.window)){
				popUpChildren.removeChild(_local2.data.window);
			} else {
				removeChild(DisplayObject(_local2.data.window));
			};
			if (_local2.data.modal){
				numModalWindows--;
			};
			removeRemotePopUp(new RemotePopUp(_local2.data.window, _local2.requestor));
			if (((!(isTopLevelRoot())) && (swfBridgeGroup))){
				_local3 = new SWFBridgeRequest(SWFBridgeRequest.REMOVE_POP_UP_PLACE_HOLDER_REQUEST, false, false, _local2.requestor, {placeHolderId:NameUtil.displayObjectToString(_local2.data.window)});
				dispatchEvent(_local3);
			};
		}
		public function addChildBridge(_arg1:IEventDispatcher, _arg2:DisplayObject):void{
			var _local3:IFocusManager;
			var _local4:DisplayObject = _arg2;
			while (_local4) {
				if ((_local4 is IFocusManagerContainer)){
					_local3 = IFocusManagerContainer(_local4).focusManager;
					break;
				};
				_local4 = _local4.parent;
			};
			if (!_local3){
				return;
			};
			if (!swfBridgeGroup){
				swfBridgeGroup = new SWFBridgeGroup(this);
			};
			swfBridgeGroup.addChildBridge(_arg1, ISWFBridgeProvider(_arg2));
			_local3.addSWFBridge(_arg1, _arg2);
			if (!bridgeToFocusManager){
				bridgeToFocusManager = new Dictionary();
			};
			bridgeToFocusManager[_arg1] = _local3;
			addChildBridgeListeners(_arg1);
			dispatchEvent(new FlexChangeEvent(FlexChangeEvent.ADD_CHILD_BRIDGE, false, false, _arg1));
		}
		public function get screen():Rectangle{
			if (!_screen){
				Stage_resizeHandler();
			};
			if (!isStageRoot){
				Stage_resizeHandler();
			};
			return (_screen);
		}
		private function resetMouseCursorRequestHandler(_arg1:Event):void{
			var _local3:IEventDispatcher;
			if (((!(isTopLevelRoot())) && ((_arg1 is SWFBridgeRequest)))){
				return;
			};
			var _local2:SWFBridgeRequest = SWFBridgeRequest.marshal(_arg1);
			if (!isTopLevelRoot()){
				_local3 = swfBridgeGroup.parentBridge;
				_local2.requestor = _local3;
				_local3.dispatchEvent(_local2);
			} else {
				if (eventProxy){
					SystemManagerGlobals.showMouseCursor = true;
				};
			};
		}
		private function preloader_rslCompleteHandler(_arg1:RSLEvent):void{
			if (_arg1.loaderInfo){
				preloadedRSLs[_arg1.loaderInfo] = _arg1.url.url;
			};
		}
		mx_internal function set topMostIndex(_arg1:int):void{
			var _local2:int = (_arg1 - _topMostIndex);
			_topMostIndex = _arg1;
			toolTipIndex = (toolTipIndex + _local2);
		}
		mx_internal function docFrameHandler(_arg1:Event=null):void{
			var _local3:TextFieldFactory;
			var _local5:int;
			var _local6:int;
			var _local7:Class;
			Singleton.registerClass("mx.managers::IBrowserManager", Class(getDefinitionByName("mx.managers::BrowserManagerImpl")));
			Singleton.registerClass("mx.managers::ICursorManager", Class(getDefinitionByName("mx.managers::CursorManagerImpl")));
			Singleton.registerClass("mx.managers::IHistoryManager", Class(getDefinitionByName("mx.managers::HistoryManagerImpl")));
			Singleton.registerClass("mx.managers::ILayoutManager", Class(getDefinitionByName("mx.managers::LayoutManager")));
			Singleton.registerClass("mx.managers::IPopUpManager", Class(getDefinitionByName("mx.managers::PopUpManagerImpl")));
			Singleton.registerClass("mx.managers::IToolTipManager2", Class(getDefinitionByName("mx.managers::ToolTipManagerImpl")));
			var _local2:Class;
			_local2 = Class(getDefinitionByName("mx.managers::NativeDragManagerImpl"));
			if (_local2 == null){
				_local2 = Class(getDefinitionByName("mx.managers::DragManagerImpl"));
			};
			Singleton.registerClass("mx.managers::IDragManager", _local2);
			Singleton.registerClass("mx.core::ITextFieldFactory", Class(getDefinitionByName("mx.core::TextFieldFactory")));
			executeCallbacks();
			doneExecutingInitCallbacks = true;
			var _local4:Array = info()["mixins"];
			if (((_local4) && ((_local4.length > 0)))){
				_local5 = _local4.length;
				_local6 = 0;
				while (_local6 < _local5) {
					_local7 = Class(getDefinitionByName(_local4[_local6]));
					var _local8 = _local7;
					_local8["init"](this);
					_local6++;
				};
			};
			installCompiledResourceBundles();
			initializeTopLevelWindow(null);
			deferredNextFrame();
		}
		public function get explicitHeight():Number{
			return (_explicitHeight);
		}
		public function get preloaderBackgroundSize():String{
			return (info()["backgroundSize"]);
		}
		public function isTopLevel():Boolean{
			return (topLevel);
		}
		override public function get mouseY():Number{
			if (_mouseY === undefined){
				return (super.mouseY);
			};
			return (_mouseY);
		}
		public function getExplicitOrMeasuredWidth():Number{
			return ((isNaN(explicitWidth)) ? measuredWidth : explicitWidth);
		}
		public function deactivate(_arg1:IFocusManagerContainer):void{
			deactivateForm(Object(_arg1));
		}
		private function preProcessModalWindowRequest(_arg1:SWFBridgeRequest, _arg2:DisplayObject):Boolean{
			var _local3:IEventDispatcher;
			var _local4:ISWFLoader;
			var _local5:Rectangle;
			if (_arg1.data.skip){
				_arg1.data.skip = false;
				if (useSWFBridge()){
					_local3 = swfBridgeGroup.parentBridge;
					_arg1.requestor = _local3;
					_local3.dispatchEvent(_arg1);
				};
				return (false);
			};
			if (this != _arg2){
				if ((((_arg1.type == SWFBridgeRequest.CREATE_MODAL_WINDOW_REQUEST)) || ((_arg1.type == SWFBridgeRequest.SHOW_MODAL_WINDOW_REQUEST)))){
					_local4 = (swfBridgeGroup.getChildBridgeProvider(_arg1.requestor) as ISWFLoader);
					if (_local4){
						_local5 = ISWFLoader(_local4).getVisibleApplicationRect();
						_arg1.data.excludeRect = _local5;
						if (!DisplayObjectContainer(document).contains(DisplayObject(_local4))){
							_arg1.data.useExclude = false;
						};
					};
				};
				_local3 = swfBridgeGroup.parentBridge;
				_arg1.requestor = _local3;
				if (_arg1.type == SWFBridgeRequest.HIDE_MODAL_WINDOW_REQUEST){
					_arg2.dispatchEvent(_arg1);
				} else {
					_local3.dispatchEvent(_arg1);
				};
				return (false);
			};
			_arg1.data.skip = false;
			return (true);
		}
		private function resetMouseCursorTracking(_arg1:Event):void{
			var _local2:SWFBridgeRequest;
			var _local3:IEventDispatcher;
			if (isTopLevelRoot()){
				SystemManagerGlobals.showMouseCursor = true;
			} else {
				if (swfBridgeGroup.parentBridge){
					_local2 = new SWFBridgeRequest(SWFBridgeRequest.RESET_MOUSE_CURSOR_REQUEST);
					_local3 = swfBridgeGroup.parentBridge;
					_local2.requestor = _local3;
					_local3.dispatchEvent(_local2);
				};
			};
		}
		mx_internal function addParentBridgeListeners():void{
			if (((!(topLevel)) && (topLevelSystemManager))){
				SystemManager(topLevelSystemManager).addParentBridgeListeners();
				return;
			};
			var _local1:IEventDispatcher = swfBridgeGroup.parentBridge;
			_local1.addEventListener(SWFBridgeRequest.SET_ACTUAL_SIZE_REQUEST, setActualSizeRequestHandler);
			_local1.addEventListener(SWFBridgeRequest.GET_SIZE_REQUEST, getSizeRequestHandler);
			_local1.addEventListener(SWFBridgeRequest.ACTIVATE_POP_UP_REQUEST, activateRequestHandler);
			_local1.addEventListener(SWFBridgeRequest.DEACTIVATE_POP_UP_REQUEST, deactivateRequestHandler);
			_local1.addEventListener(SWFBridgeRequest.IS_BRIDGE_CHILD_REQUEST, isBridgeChildHandler);
			_local1.addEventListener(EventListenerRequest.ADD_EVENT_LISTENER_REQUEST, eventListenerRequestHandler);
			_local1.addEventListener(EventListenerRequest.REMOVE_EVENT_LISTENER_REQUEST, eventListenerRequestHandler);
			_local1.addEventListener(SWFBridgeRequest.CAN_ACTIVATE_POP_UP_REQUEST, canActivateHandler);
			_local1.addEventListener(SWFBridgeEvent.BRIDGE_APPLICATION_UNLOADING, beforeUnloadHandler);
		}
		public function get swfBridgeGroup():ISWFBridgeGroup{
			if (topLevel){
				return (_swfBridgeGroup);
			};
			if (topLevelSystemManager){
				return (topLevelSystemManager.swfBridgeGroup);
			};
			return (null);
		}
		override public function getChildByName(_arg1:String):DisplayObject{
			return (super.getChildByName(_arg1));
		}
		public function get measuredWidth():Number{
			return ((topLevelWindow) ? topLevelWindow.getExplicitOrMeasuredWidth() : loaderInfo.width);
		}
		public function removeChildBridge(_arg1:IEventDispatcher):void{
			dispatchEvent(new FlexChangeEvent(FlexChangeEvent.REMOVE_CHILD_BRIDGE, false, false, _arg1));
			var _local2:IFocusManager = IFocusManager(bridgeToFocusManager[_arg1]);
			_local2.removeSWFBridge(_arg1);
			swfBridgeGroup.removeChildBridge(_arg1);
			delete bridgeToFocusManager[_arg1];
			removeChildBridgeListeners(_arg1);
		}
		mx_internal function removeChildBridgeListeners(_arg1:IEventDispatcher):void{
			if (((!(topLevel)) && (topLevelSystemManager))){
				SystemManager(topLevelSystemManager).removeChildBridgeListeners(_arg1);
				return;
			};
			_arg1.removeEventListener(SWFBridgeRequest.ADD_POP_UP_REQUEST, addPopupRequestHandler);
			_arg1.removeEventListener(SWFBridgeRequest.REMOVE_POP_UP_REQUEST, removePopupRequestHandler);
			_arg1.removeEventListener(SWFBridgeRequest.ADD_POP_UP_PLACE_HOLDER_REQUEST, addPlaceholderPopupRequestHandler);
			_arg1.removeEventListener(SWFBridgeRequest.REMOVE_POP_UP_PLACE_HOLDER_REQUEST, removePlaceholderPopupRequestHandler);
			_arg1.removeEventListener(SWFBridgeEvent.BRIDGE_WINDOW_ACTIVATE, activateFormSandboxEventHandler);
			_arg1.removeEventListener(SWFBridgeEvent.BRIDGE_WINDOW_DEACTIVATE, deactivateFormSandboxEventHandler);
			_arg1.removeEventListener(SWFBridgeEvent.BRIDGE_APPLICATION_ACTIVATE, activateApplicationSandboxEventHandler);
			_arg1.removeEventListener(EventListenerRequest.ADD_EVENT_LISTENER_REQUEST, eventListenerRequestHandler);
			_arg1.removeEventListener(EventListenerRequest.REMOVE_EVENT_LISTENER_REQUEST, eventListenerRequestHandler);
			_arg1.removeEventListener(SWFBridgeRequest.CREATE_MODAL_WINDOW_REQUEST, modalWindowRequestHandler);
			_arg1.removeEventListener(SWFBridgeRequest.SHOW_MODAL_WINDOW_REQUEST, modalWindowRequestHandler);
			_arg1.removeEventListener(SWFBridgeRequest.HIDE_MODAL_WINDOW_REQUEST, modalWindowRequestHandler);
			_arg1.removeEventListener(SWFBridgeRequest.GET_VISIBLE_RECT_REQUEST, getVisibleRectRequestHandler);
			_arg1.removeEventListener(SWFBridgeRequest.HIDE_MOUSE_CURSOR_REQUEST, hideMouseCursorRequestHandler);
			_arg1.removeEventListener(SWFBridgeRequest.SHOW_MOUSE_CURSOR_REQUEST, showMouseCursorRequestHandler);
			_arg1.removeEventListener(SWFBridgeRequest.RESET_MOUSE_CURSOR_REQUEST, resetMouseCursorRequestHandler);
		}
		override public function addChildAt(_arg1:DisplayObject, _arg2:int):DisplayObject{
			noTopMostIndex++;
			var _local3:DisplayObjectContainer = _arg1.parent;
			if (_local3){
				_local3.removeChild(_arg1);
			};
			return (rawChildren_addChildAt(_arg1, (applicationIndex + _arg2)));
		}
		private function Stage_resizeHandler(_arg1:Event=null):void{
			var m:Number;
			var n:Number;
			var sandboxScreen:Rectangle;
			var event = _arg1;
			if (isDispatchingResizeEvent){
				return;
			};
			var w:Number = 0;
			var h:Number = 0;
			try {
				m = loaderInfo.width;
				n = loaderInfo.height;
			} catch(error:Error) {
				if (!_screen){
					_screen = new Rectangle();
				};
				return;
			};
			var align:String = StageAlign.TOP_LEFT;
			try {
				if (stage){
					w = stage.stageWidth;
					h = stage.stageHeight;
					align = stage.align;
				};
			} catch(error:SecurityError) {
				sandboxScreen = getSandboxScreen();
				w = sandboxScreen.width;
				h = sandboxScreen.height;
			};
			var x:Number = ((m - w) / 2);
			var y:Number = ((n - h) / 2);
			if (align == StageAlign.TOP){
				y = 0;
			} else {
				if (align == StageAlign.BOTTOM){
					y = (n - h);
				} else {
					if (align == StageAlign.LEFT){
						x = 0;
					} else {
						if (align == StageAlign.RIGHT){
							x = (m - w);
						} else {
							if ((((align == StageAlign.TOP_LEFT)) || ((align == "LT")))){
								y = 0;
								x = 0;
							} else {
								if (align == StageAlign.TOP_RIGHT){
									y = 0;
									x = (m - w);
								} else {
									if (align == StageAlign.BOTTOM_LEFT){
										y = (n - h);
										x = 0;
									} else {
										if (align == StageAlign.BOTTOM_RIGHT){
											y = (n - h);
											x = (m - w);
										};
									};
								};
							};
						};
					};
				};
			};
			if (!_screen){
				_screen = new Rectangle();
			};
			_screen.x = x;
			_screen.y = y;
			_screen.width = w;
			_screen.height = h;
			if (isStageRoot){
				_width = stage.stageWidth;
				_height = stage.stageHeight;
			};
			if (event){
				resizeMouseCatcher();
				isDispatchingResizeEvent = true;
				dispatchEvent(event);
				isDispatchingResizeEvent = false;
			};
		}
		public function get swfBridge():IEventDispatcher{
			if (swfBridgeGroup){
				return (swfBridgeGroup.parentBridge);
			};
			return (null);
		}
		private function findRemotePopUp(_arg1:Object, _arg2:IEventDispatcher):RemotePopUp{
			var _local5:RemotePopUp;
			var _local3:int = forms.length;
			var _local4:int;
			while (_local4 < _local3) {
				if (isRemotePopUp(forms[_local4])){
					_local5 = RemotePopUp(forms[_local4]);
					if ((((_local5.window == _arg1)) && ((_local5.bridge == _arg2)))){
						return (_local5);
					};
				};
				_local4++;
			};
			return (null);
		}
		public function info():Object{
			return ({});
		}
		mx_internal function get toolTipIndex():int{
			return (_toolTipIndex);
		}
		public function setActualSize(_arg1:Number, _arg2:Number):void{
			if (isStageRoot){
				return;
			};
			_width = _arg1;
			_height = _arg2;
			if (mouseCatcher){
				mouseCatcher.width = _arg1;
				mouseCatcher.height = _arg2;
			};
			dispatchEvent(new Event(Event.RESIZE));
		}
		private function removePlaceholderPopupRequestHandler(_arg1:Event):void{
			var _local3:int;
			var _local4:int;
			var _local2:SWFBridgeRequest = SWFBridgeRequest.marshal(_arg1);
			if (!forwardPlaceholderRequest(_local2, false)){
				_local3 = forms.length;
				_local4 = 0;
				while (_local4 < _local3) {
					if (isRemotePopUp(forms[_local4])){
						if ((((forms[_local4].window == _local2.data.placeHolderId)) && ((forms[_local4].bridge == _local2.requestor)))){
							forms.splice(_local4, 1);
							break;
						};
					};
					_local4++;
				};
			};
		}
		public function set focusPane(_arg1:Sprite):void{
			if (_arg1){
				addChild(_arg1);
				_arg1.x = 0;
				_arg1.y = 0;
				_arg1.scrollRect = null;
				_focusPane = _arg1;
			} else {
				removeChild(_focusPane);
				_focusPane = null;
			};
		}
		mx_internal function removeParentBridgeListeners():void{
			if (((!(topLevel)) && (topLevelSystemManager))){
				SystemManager(topLevelSystemManager).removeParentBridgeListeners();
				return;
			};
			var _local1:IEventDispatcher = swfBridgeGroup.parentBridge;
			_local1.removeEventListener(SWFBridgeRequest.SET_ACTUAL_SIZE_REQUEST, setActualSizeRequestHandler);
			_local1.removeEventListener(SWFBridgeRequest.GET_SIZE_REQUEST, getSizeRequestHandler);
			_local1.removeEventListener(SWFBridgeRequest.ACTIVATE_POP_UP_REQUEST, activateRequestHandler);
			_local1.removeEventListener(SWFBridgeRequest.DEACTIVATE_POP_UP_REQUEST, deactivateRequestHandler);
			_local1.removeEventListener(SWFBridgeRequest.IS_BRIDGE_CHILD_REQUEST, isBridgeChildHandler);
			_local1.removeEventListener(EventListenerRequest.ADD_EVENT_LISTENER_REQUEST, eventListenerRequestHandler);
			_local1.removeEventListener(EventListenerRequest.REMOVE_EVENT_LISTENER_REQUEST, eventListenerRequestHandler);
			_local1.removeEventListener(SWFBridgeRequest.CAN_ACTIVATE_POP_UP_REQUEST, canActivateHandler);
			_local1.removeEventListener(SWFBridgeEvent.BRIDGE_APPLICATION_UNLOADING, beforeUnloadHandler);
		}
		override public function get parent():DisplayObjectContainer{
			try {
				return (super.parent);
			} catch(e:SecurityError) {
			};
			return (null);
		}
		private function eventListenerRequestHandler(_arg1:Event):void{
			var _local2:String;
			if ((_arg1 is EventListenerRequest)){
				return;
			};
			var _local3:EventListenerRequest = EventListenerRequest.marshal(_arg1);
			if (_arg1.type == EventListenerRequest.ADD_EVENT_LISTENER_REQUEST){
				if (!eventProxy){
					eventProxy = new EventProxy(this);
				};
				_local2 = EventUtil.sandboxMouseEventMap[_local3.eventType];
				if (_local2){
					if (isTopLevelRoot()){
						stage.addEventListener(MouseEvent.MOUSE_MOVE, resetMouseCursorTracking, true, (EventPriority.CURSOR_MANAGEMENT + 1), true);
					} else {
						super.addEventListener(MouseEvent.MOUSE_MOVE, resetMouseCursorTracking, true, (EventPriority.CURSOR_MANAGEMENT + 1), true);
					};
					addEventListenerToSandboxes(_local3.eventType, sandboxMouseListener, true, _local3.priority, _local3.useWeakReference, (_arg1.target as IEventDispatcher));
					addEventListenerToOtherSystemManagers(_local3.eventType, otherSystemManagerMouseListener, true, _local3.priority, _local3.useWeakReference);
					if (getSandboxRoot() == this){
						if (((isTopLevelRoot()) && ((((_local2 == MouseEvent.MOUSE_UP)) || ((_local2 == MouseEvent.MOUSE_MOVE)))))){
							stage.addEventListener(_local2, eventProxy.marshalListener, false, _local3.priority, _local3.useWeakReference);
						};
						super.addEventListener(_local2, eventProxy.marshalListener, true, _local3.priority, _local3.useWeakReference);
					};
				};
			} else {
				if (_arg1.type == EventListenerRequest.REMOVE_EVENT_LISTENER_REQUEST){
					_local2 = EventUtil.sandboxMouseEventMap[_local3.eventType];
					if (_local2){
						removeEventListenerFromOtherSystemManagers(_local3.eventType, otherSystemManagerMouseListener, true);
						removeEventListenerFromSandboxes(_local3.eventType, sandboxMouseListener, true, (_arg1.target as IEventDispatcher));
						if (getSandboxRoot() == this){
							if (((isTopLevelRoot()) && ((((_local2 == MouseEvent.MOUSE_UP)) || ((_local2 == MouseEvent.MOUSE_MOVE)))))){
								stage.removeEventListener(_local2, eventProxy.marshalListener);
							};
							super.removeEventListener(_local2, eventProxy.marshalListener, true);
						};
					};
				};
			};
		}
		mx_internal function set applicationIndex(_arg1:int):void{
			_applicationIndex = _arg1;
		}
		private function showMouseCursorRequestHandler(_arg1:Event):void{
			var _local3:IEventDispatcher;
			if (((!(isTopLevelRoot())) && ((_arg1 is SWFBridgeRequest)))){
				return;
			};
			var _local2:SWFBridgeRequest = SWFBridgeRequest.marshal(_arg1);
			if (!isTopLevelRoot()){
				_local3 = swfBridgeGroup.parentBridge;
				_local2.requestor = _local3;
				_local3.dispatchEvent(_local2);
				Object(_arg1).data = _local2.data;
			} else {
				if (eventProxy){
					Object(_arg1).data = SystemManagerGlobals.showMouseCursor;
				};
			};
		}
		public function get childAllowsParent():Boolean{
			try {
				return (loaderInfo.childAllowsParent);
			} catch(error:Error) {
			};
			return (false);
		}
		public function dispatchEventFromSWFBridges(_arg1:Event, _arg2:IEventDispatcher=null, _arg3:Boolean=false, _arg4:Boolean=false):void{
			var _local5:Event;
			if (_arg4){
				dispatchEventToOtherSystemManagers(_arg1);
			};
			if (!swfBridgeGroup){
				return;
			};
			_local5 = _arg1.clone();
			if (_arg3){
				currentSandboxEvent = _local5;
			};
			var _local6:IEventDispatcher = swfBridgeGroup.parentBridge;
			if (((_local6) && (!((_local6 == _arg2))))){
				if ((_local5 is SWFBridgeRequest)){
					SWFBridgeRequest(_local5).requestor = _local6;
				};
				_local6.dispatchEvent(_local5);
			};
			var _local7:Array = swfBridgeGroup.getChildBridges();
			var _local8:int;
			while (_local8 < _local7.length) {
				if (_local7[_local8] != _arg2){
					_local5 = _arg1.clone();
					if (_arg3){
						currentSandboxEvent = _local5;
					};
					if ((_local5 is SWFBridgeRequest)){
						SWFBridgeRequest(_local5).requestor = IEventDispatcher(_local7[_local8]);
					};
					IEventDispatcher(_local7[_local8]).dispatchEvent(_local5);
				};
				_local8++;
			};
			currentSandboxEvent = null;
		}
		private function setActualSizeRequestHandler(_arg1:Event):void{
			var _local2:Object = Object(_arg1);
			setActualSize(_local2.data.width, _local2.data.height);
		}
		private function executeCallbacks():void{
			var _local1:Function;
			if (((!(parent)) && (parentAllowsChild))){
				return;
			};
			while (initCallbackFunctions.length > 0) {
				_local1 = initCallbackFunctions.shift();
				_local1(this);
			};
		}
		private function addPlaceholderId(_arg1:String, _arg2:String, _arg3:IEventDispatcher, _arg4:Object):void{
			if (!_arg3){
				throw (new Error());
			};
			if (!idToPlaceholder){
				idToPlaceholder = [];
			};
			idToPlaceholder[_arg1] = new PlaceholderData(_arg2, _arg3, _arg4);
		}
		private function canActivateHandler(_arg1:Event):void{
			var _local3:SWFBridgeRequest;
			var _local6:PlaceholderData;
			var _local7:RemotePopUp;
			var _local8:SystemManagerProxy;
			var _local9:IFocusManagerContainer;
			var _local10:IEventDispatcher;
			var _local2:Object = Object(_arg1);
			var _local4:Object = _local2.data;
			var _local5:String;
			if ((_local2.data is String)){
				_local6 = idToPlaceholder[_local2.data];
				_local4 = _local6.data;
				_local5 = _local6.id;
				if (_local5 == null){
					_local7 = findRemotePopUp(_local4, _local6.bridge);
					if (_local7){
						_local3 = new SWFBridgeRequest(SWFBridgeRequest.CAN_ACTIVATE_POP_UP_REQUEST, false, false, IEventDispatcher(_local7.bridge), _local7.window);
						if (_local7.bridge){
							_local7.bridge.dispatchEvent(_local3);
							_local2.data = _local3.data;
						};
						return;
					};
				};
			};
			if ((_local4 is SystemManagerProxy)){
				_local8 = SystemManagerProxy(_local4);
				_local9 = findFocusManagerContainer(_local8);
				_local2.data = ((((_local8) && (_local9))) && (canActivateLocalComponent(_local9)));
			} else {
				if ((_local4 is IFocusManagerContainer)){
					_local2.data = canActivateLocalComponent(_local4);
				} else {
					if ((_local4 is IEventDispatcher)){
						_local10 = IEventDispatcher(_local4);
						_local3 = new SWFBridgeRequest(SWFBridgeRequest.CAN_ACTIVATE_POP_UP_REQUEST, false, false, _local10, _local5);
						if (_local10){
							_local10.dispatchEvent(_local3);
							_local2.data = _local3.data;
						};
					} else {
						throw (new Error());
					};
				};
			};
		}
		private function docFrameListener(_arg1:Event):void{
			if (currentFrame == 2){
				removeEventListener(Event.ENTER_FRAME, docFrameListener);
				if (totalFrames > 2){
					addEventListener(Event.ENTER_FRAME, extraFrameListener);
				};
				docFrameHandler();
			};
		}
		public function get popUpChildren():IChildList{
			if (!topLevel){
				return (_topLevelSystemManager.popUpChildren);
			};
			if (!_popUpChildren){
				_popUpChildren = new SystemChildrenList(this, new QName(mx_internal, "noTopMostIndex"), new QName(mx_internal, "topMostIndex"));
			};
			return (_popUpChildren);
		}
		private function addEventListenerToSandboxes(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false, _arg6:IEventDispatcher=null):void{
			var _local10:int;
			var _local11:IEventDispatcher;
			if (!swfBridgeGroup){
				return;
			};
			var _local7:EventListenerRequest = new EventListenerRequest(EventListenerRequest.ADD_EVENT_LISTENER_REQUEST, false, false, _arg1, _arg3, _arg4, _arg5);
			var _local8:IEventDispatcher = swfBridgeGroup.parentBridge;
			if (((_local8) && (!((_local8 == _arg6))))){
				_local8.addEventListener(_arg1, _arg2, false, _arg4, _arg5);
			};
			var _local9:Array = swfBridgeGroup.getChildBridges();
			while (_local10 < _local9.length) {
				_local11 = IEventDispatcher(_local9[_local10]);
				if (_local11 != _arg6){
					_local11.addEventListener(_arg1, _arg2, false, _arg4, _arg5);
				};
				_local10++;
			};
			dispatchEventFromSWFBridges(_local7, _arg6);
		}
		private function forwardFormEvent(_arg1:SWFBridgeEvent):Boolean{
			var _local3:DisplayObject;
			if (isTopLevelRoot()){
				return (false);
			};
			var _local2:IEventDispatcher = swfBridgeGroup.parentBridge;
			if (_local2){
				_local3 = getSandboxRoot();
				_arg1.data.notifier = _local2;
				if (_local3 == this){
					if (!(_arg1.data.window is String)){
						_arg1.data.window = NameUtil.displayObjectToString(DisplayObject(_arg1.data.window));
					} else {
						_arg1.data.window = ((NameUtil.displayObjectToString(DisplayObject(this)) + ".") + _arg1.data.window);
					};
					_local2.dispatchEvent(_arg1);
				} else {
					if ((_arg1.data.window is String)){
						_arg1.data.window = ((NameUtil.displayObjectToString(DisplayObject(this)) + ".") + _arg1.data.window);
					};
					_local3.dispatchEvent(_arg1);
				};
			};
			return (true);
		}
		public function set explicitHeight(_arg1:Number):void{
			_explicitHeight = _arg1;
		}
		override public function removeChild(_arg1:DisplayObject):DisplayObject{
			noTopMostIndex--;
			return (rawChildren_removeChild(_arg1));
		}
		mx_internal function rawChildren_removeChild(_arg1:DisplayObject):DisplayObject{
			removingChild(_arg1);
			super.removeChild(_arg1);
			childRemoved(_arg1);
			return (_arg1);
		}
		final mx_internal function get $numChildren():int{
			return (super.numChildren);
		}
		public function get toolTipChildren():IChildList{
			if (!topLevel){
				return (_topLevelSystemManager.toolTipChildren);
			};
			if (!_toolTipChildren){
				_toolTipChildren = new SystemChildrenList(this, new QName(mx_internal, "topMostIndex"), new QName(mx_internal, "toolTipIndex"));
			};
			return (_toolTipChildren);
		}
		public function create(... _args):Object{
			var _local4:String;
			var _local5:int;
			var _local6:int;
			var _local2:String = info()["mainClassName"];
			if (_local2 == null){
				_local4 = loaderInfo.loaderURL;
				_local5 = _local4.lastIndexOf(".");
				_local6 = _local4.lastIndexOf("/");
				_local2 = _local4.substring((_local6 + 1), _local5);
			};
			var _local3:Class = Class(getDefinitionByName(_local2));
			return ((_local3) ? new (_local3) : null);
		}
		override public function get stage():Stage{
			var _local2:DisplayObject;
			if (_stage){
				return (_stage);
			};
			var _local1:Stage = super.stage;
			if (_local1){
				_stage = _local1;
				return (_local1);
			};
			if (((!(topLevel)) && (_topLevelSystemManager))){
				_stage = _topLevelSystemManager.stage;
				return (_stage);
			};
			if (((!(isStageRoot)) && (topLevel))){
				_local2 = getTopLevelRoot();
				if (_local2){
					_stage = _local2.stage;
					return (_stage);
				};
			};
			return (null);
		}
		override public function addChild(_arg1:DisplayObject):DisplayObject{
			var _local2:int = numChildren;
			if (_arg1.parent == this){
				_local2--;
			};
			return (addChildAt(_arg1, _local2));
		}
		private function removeRemotePopUp(_arg1:RemotePopUp):void{
			var _local2:int = forms.length;
			var _local3:int;
			while (_local3 < _local2) {
				if (isRemotePopUp(forms[_local3])){
					if ((((forms[_local3].window == _arg1.window)) && ((forms[_local3].bridge == _arg1.bridge)))){
						if (forms[_local3] == _arg1){
							deactivateForm(_arg1);
						};
						forms.splice(_local3, 1);
						break;
					};
				};
				_local3++;
			};
		}
		private function deactivateRemotePopUp(_arg1:Object):void{
			var _local2:SWFBridgeRequest = new SWFBridgeRequest(SWFBridgeRequest.DEACTIVATE_POP_UP_REQUEST, false, false, _arg1.bridge, _arg1.window);
			var _local3:Object = _arg1.bridge;
			if (_local3){
				_local3.dispatchEvent(_local2);
			};
		}
		override public function getChildIndex(_arg1:DisplayObject):int{
			return ((super.getChildIndex(_arg1) - applicationIndex));
		}
		mx_internal function rawChildren_getChildIndex(_arg1:DisplayObject):int{
			return (super.getChildIndex(_arg1));
		}
		public function activate(_arg1:IFocusManagerContainer):void{
			activateForm(_arg1);
		}
		public function getSandboxRoot():DisplayObject{
			var parent:DisplayObject;
			var lastParent:DisplayObject;
			var loader:Loader;
			var loaderInfo:LoaderInfo;
			var sm:ISystemManager = this;
			try {
				if (sm.topLevelSystemManager){
					sm = sm.topLevelSystemManager;
				};
				parent = DisplayObject(sm).parent;
				if ((parent is Stage)){
					return (DisplayObject(sm));
				};
				if (((parent) && (!(parent.dispatchEvent(new Event("mx.managers.SystemManager.isBootstrapRoot", false, true)))))){
					return (this);
				};
				lastParent = this;
				while (parent) {
					if ((parent is Stage)){
						return (lastParent);
					};
					if (!parent.dispatchEvent(new Event("mx.managers.SystemManager.isBootstrapRoot", false, true))){
						return (lastParent);
					};
					if ((parent is Loader)){
						loader = Loader(parent);
						loaderInfo = loader.contentLoaderInfo;
						if (!loaderInfo.childAllowsParent){
							return (loaderInfo.content);
						};
					};
					if (parent.hasEventListener(InterManagerRequest.SYSTEM_MANAGER_REQUEST)){
						lastParent = parent;
					};
					parent = parent.parent;
				};
			} catch(error:Error) {
			};
			return (((lastParent)!=null) ? lastParent : DisplayObject(sm));
		}
		private function deferredNextFrame():void{
			if ((currentFrame + 1) > totalFrames){
				return;
			};
			if ((currentFrame + 1) <= framesLoaded){
				nextFrame();
			} else {
				nextFrameTimer = new Timer(100);
				nextFrameTimer.addEventListener(TimerEvent.TIMER, nextFrameTimerHandler);
				nextFrameTimer.start();
			};
		}
		mx_internal function get cursorIndex():int{
			return (_cursorIndex);
		}
		mx_internal function rawChildren_contains(_arg1:DisplayObject):Boolean{
			return (super.contains(_arg1));
		}
		override public function setChildIndex(_arg1:DisplayObject, _arg2:int):void{
			super.setChildIndex(_arg1, (applicationIndex + _arg2));
		}
		public function get document():Object{
			return (_document);
		}
		private function resizeMouseCatcher():void{
			var g:Graphics;
			var s:Rectangle;
			if (mouseCatcher){
				try {
					g = mouseCatcher.graphics;
					s = screen;
					g.clear();
					g.beginFill(0, 0);
					g.drawRect(0, 0, s.width, s.height);
					g.endFill();
				} catch(e:SecurityError) {
				};
			};
		}
		private function extraFrameListener(_arg1:Event):void{
			if (lastFrame == currentFrame){
				return;
			};
			lastFrame = currentFrame;
			if ((currentFrame + 1) > totalFrames){
				removeEventListener(Event.ENTER_FRAME, extraFrameListener);
			};
			extraFrameHandler();
		}
		private function addPopupRequestHandler(_arg1:Event):void{
			var _local3:Boolean;
			var _local4:IChildList;
			var _local6:ISWFBridgeProvider;
			var _local7:SWFBridgeRequest;
			if (((!((_arg1.target == this))) && ((_arg1 is SWFBridgeRequest)))){
				return;
			};
			var _local2:SWFBridgeRequest = SWFBridgeRequest.marshal(_arg1);
			if (_arg1.target != this){
				_local6 = swfBridgeGroup.getChildBridgeProvider(IEventDispatcher(_arg1.target));
				if (!SecurityUtil.hasMutualTrustBetweenParentAndChild(_local6)){
					return;
				};
			};
			if (((swfBridgeGroup.parentBridge) && (SecurityUtil.hasMutualTrustBetweenParentAndChild(this)))){
				_local2.requestor = swfBridgeGroup.parentBridge;
				getSandboxRoot().dispatchEvent(_local2);
				return;
			};
			if (((!(_local2.data.childList)) || ((_local2.data.childList == PopUpManagerChildList.PARENT)))){
				_local3 = ((_local2.data.parent) && (popUpChildren.contains(_local2.data.parent)));
			} else {
				_local3 = (_local2.data.childList == PopUpManagerChildList.POPUP);
			};
			_local4 = (_local3) ? popUpChildren : this;
			_local4.addChild(DisplayObject(_local2.data.window));
			if (_local2.data.modal){
				numModalWindows++;
			};
			var _local5:RemotePopUp = new RemotePopUp(_local2.data.window, _local2.requestor);
			forms.push(_local5);
			if (((!(isTopLevelRoot())) && (swfBridgeGroup))){
				_local7 = new SWFBridgeRequest(SWFBridgeRequest.ADD_POP_UP_PLACE_HOLDER_REQUEST, false, false, _local2.requestor, {window:_local2.data.window});
				_local7.data.placeHolderId = NameUtil.displayObjectToString(DisplayObject(_local2.data.window));
				dispatchEvent(_local7);
			};
		}
		override public function get height():Number{
			return (_height);
		}
		mx_internal function rawChildren_getChildAt(_arg1:int):DisplayObject{
			return (super.getChildAt(_arg1));
		}
		private function systemManagerHandler(_arg1:Event):void{
			if (_arg1["name"] == "sameSandbox"){
				_arg1["value"] = (currentSandboxEvent == _arg1["value"]);
				return;
			};
			if (_arg1["name"] == "hasSWFBridges"){
				_arg1["value"] = hasSWFBridges();
				return;
			};
			if ((_arg1 is InterManagerRequest)){
				return;
			};
			var _local2:String = _arg1["name"];
			switch (_local2){
				case "popUpChildren.addChild":
					popUpChildren.addChild(_arg1["value"]);
					break;
				case "popUpChildren.removeChild":
					popUpChildren.removeChild(_arg1["value"]);
					break;
				case "cursorChildren.addChild":
					cursorChildren.addChild(_arg1["value"]);
					break;
				case "cursorChildren.removeChild":
					cursorChildren.removeChild(_arg1["value"]);
					break;
				case "toolTipChildren.addChild":
					toolTipChildren.addChild(_arg1["value"]);
					break;
				case "toolTipChildren.removeChild":
					toolTipChildren.removeChild(_arg1["value"]);
					break;
				case "screen":
					_arg1["value"] = screen;
					break;
				case "application":
					_arg1["value"] = application;
					break;
				case "isTopLevelRoot":
					_arg1["value"] = isTopLevelRoot();
					break;
				case "getVisibleApplicationRect":
					_arg1["value"] = getVisibleApplicationRect();
					break;
				case "bringToFront":
					if (_arg1["value"].topMost){
						popUpChildren.setChildIndex(DisplayObject(_arg1["value"].popUp), (popUpChildren.numChildren - 1));
					} else {
						setChildIndex(DisplayObject(_arg1["value"].popUp), (numChildren - 1));
					};
					break;
			};
		}
		private function activateRemotePopUp(_arg1:Object):void{
			var _local2:SWFBridgeRequest = new SWFBridgeRequest(SWFBridgeRequest.ACTIVATE_POP_UP_REQUEST, false, false, _arg1.bridge, _arg1.window);
			var _local3:Object = _arg1.bridge;
			if (_local3){
				_local3.dispatchEvent(_local2);
			};
		}
		mx_internal function set noTopMostIndex(_arg1:int):void{
			var _local2:int = (_arg1 - _noTopMostIndex);
			_noTopMostIndex = _arg1;
			topMostIndex = (topMostIndex + _local2);
		}
		override public function getObjectsUnderPoint(_arg1:Point):Array{
			var _local5:DisplayObject;
			var _local6:Array;
			var _local2:Array = [];
			var _local3:int = topMostIndex;
			var _local4:int;
			while (_local4 < _local3) {
				_local5 = super.getChildAt(_local4);
				if ((_local5 is DisplayObjectContainer)){
					_local6 = DisplayObjectContainer(_local5).getObjectsUnderPoint(_arg1);
					if (_local6){
						_local2 = _local2.concat(_local6);
					};
				};
				_local4++;
			};
			return (_local2);
		}
		mx_internal function get topMostIndex():int{
			return (_topMostIndex);
		}
		mx_internal function regenerateStyleCache(_arg1:Boolean):void{
			var _local5:IStyleClient;
			var _local2:Boolean;
			var _local3:int = rawChildren.numChildren;
			var _local4:int;
			while (_local4 < _local3) {
				_local5 = (rawChildren.getChildAt(_local4) as IStyleClient);
				if (_local5){
					_local5.regenerateStyleCache(_arg1);
				};
				if (isTopLevelWindow(DisplayObject(_local5))){
					_local2 = true;
				};
				_local3 = rawChildren.numChildren;
				_local4++;
			};
			if (((!(_local2)) && ((topLevelWindow is IStyleClient)))){
				IStyleClient(topLevelWindow).regenerateStyleCache(_arg1);
			};
		}
		public function addFocusManager(_arg1:IFocusManagerContainer):void{
			forms.push(_arg1);
		}
		private function deactivateFormSandboxEventHandler(_arg1:Event):void{
			if ((_arg1 is SWFBridgeRequest)){
				return;
			};
			var _local2:SWFBridgeEvent = SWFBridgeEvent.marshal(_arg1);
			if (!forwardFormEvent(_local2)){
				if (((((isRemotePopUp(form)) && ((RemotePopUp(form).window == _local2.data.window)))) && ((RemotePopUp(form).bridge == _local2.data.notifier)))){
					deactivateForm(form);
				};
			};
		}
		public function set swfBridgeGroup(_arg1:ISWFBridgeGroup):void{
			if (topLevel){
				_swfBridgeGroup = _arg1;
			} else {
				if (topLevelSystemManager){
					SystemManager(topLevelSystemManager).swfBridgeGroup = _arg1;
				};
			};
		}
		mx_internal function rawChildren_setChildIndex(_arg1:DisplayObject, _arg2:int):void{
			super.setChildIndex(_arg1, _arg2);
		}
		private function mouseUpHandler(_arg1:MouseEvent):void{
			idleCounter = 0;
		}
		mx_internal function childAdded(_arg1:DisplayObject):void{
			_arg1.dispatchEvent(new FlexEvent(FlexEvent.ADD));
			if ((_arg1 is IUIComponent)){
				IUIComponent(_arg1).initialize();
			};
		}
		public function isFontFaceEmbedded(_arg1:TextFormat):Boolean{
			var _local6:Font;
			var _local7:String;
			var _local2:String = _arg1.font;
			var _local3:Array = Font.enumerateFonts();
			var _local4:int;
			while (_local4 < _local3.length) {
				_local6 = Font(_local3[_local4]);
				if (_local6.fontName == _local2){
					_local7 = "regular";
					if (((_arg1.bold) && (_arg1.italic))){
						_local7 = "boldItalic";
					} else {
						if (_arg1.bold){
							_local7 = "bold";
						} else {
							if (_arg1.italic){
								_local7 = "italic";
							};
						};
					};
					if (_local6.fontStyle == _local7){
						return (true);
					};
				};
				_local4++;
			};
			if (((((!(_local2)) || (!(embeddedFontList)))) || (!(embeddedFontList[_local2])))){
				return (false);
			};
			var _local5:Object = embeddedFontList[_local2];
			return (!(((((((_arg1.bold) && (!(_local5.bold)))) || (((_arg1.italic) && (!(_local5.italic)))))) || (((((!(_arg1.bold)) && (!(_arg1.italic)))) && (!(_local5.regular)))))));
		}
		private function forwardPlaceholderRequest(_arg1:SWFBridgeRequest, _arg2:Boolean):Boolean{
			if (isTopLevelRoot()){
				return (false);
			};
			var _local3:Object;
			var _local4:String;
			if (_arg1.data.window){
				_local3 = _arg1.data.window;
				_arg1.data.window = null;
			} else {
				_local3 = _arg1.requestor;
				_local4 = _arg1.data.placeHolderId;
				_arg1.data.placeHolderId = ((NameUtil.displayObjectToString(this) + ".") + _arg1.data.placeHolderId);
			};
			if (_arg2){
				addPlaceholderId(_arg1.data.placeHolderId, _local4, _arg1.requestor, _local3);
			} else {
				removePlaceholderId(_arg1.data.placeHolderId);
			};
			var _local5:DisplayObject = getSandboxRoot();
			var _local6:IEventDispatcher = swfBridgeGroup.parentBridge;
			_arg1.requestor = _local6;
			if (_local5 == this){
				_local6.dispatchEvent(_arg1);
			} else {
				_local5.dispatchEvent(_arg1);
			};
			return (true);
		}
		public function getTopLevelRoot():DisplayObject{
			var sm:ISystemManager;
			var parent:DisplayObject;
			var lastParent:DisplayObject;
			try {
				sm = this;
				if (sm.topLevelSystemManager){
					sm = sm.topLevelSystemManager;
				};
				parent = DisplayObject(sm).parent;
				lastParent = parent;
				while (parent) {
					if ((parent is Stage)){
						return (lastParent);
					};
					lastParent = parent;
					parent = parent.parent;
				};
			} catch(error:SecurityError) {
			};
			return (null);
		}
		override public function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{
			var actualType:String;
			var type = _arg1;
			var listener = _arg2;
			var useCapture = _arg3;
			if ((((type == FlexEvent.RENDER)) || ((type == FlexEvent.ENTER_FRAME)))){
				if (type == FlexEvent.RENDER){
					type = Event.RENDER;
				} else {
					type = Event.ENTER_FRAME;
				};
				try {
					if (stage){
						stage.removeEventListener(type, listener, useCapture);
					};
				} catch(error:SecurityError) {
				};
				super.removeEventListener(type, listener, useCapture);
				return;
			};
			if (((hasSWFBridges()) || ((SystemManagerGlobals.topLevelSystemManagers.length > 1)))){
				actualType = EventUtil.sandboxMouseEventMap[type];
				if (actualType){
					if ((((getSandboxRoot() == this)) && (eventProxy))){
						super.removeEventListener(actualType, eventProxy.marshalListener, useCapture);
						if (actualType == MouseEvent.MOUSE_UP){
							try {
								if (stage){
									stage.removeEventListener(Event.MOUSE_LEAVE, eventProxy.marshalListener, useCapture);
								};
							} catch(e:SecurityError) {
							};
							super.removeEventListener(Event.MOUSE_LEAVE, eventProxy.marshalListener, useCapture);
						};
					};
					if (!SystemManagerGlobals.changingListenersInOtherSystemManagers){
						removeEventListenerFromOtherSystemManagers(type, otherSystemManagerMouseListener, useCapture);
					};
					removeEventListenerFromSandboxes(type, sandboxMouseListener, useCapture);
					super.removeEventListener(type, listener, false);
					return;
				};
			};
			if (type == FlexEvent.IDLE){
				super.removeEventListener(type, listener, useCapture);
				if (((!(hasEventListener(FlexEvent.IDLE))) && (idleTimer))){
					idleTimer.stop();
					idleTimer = null;
					removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
					removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
				};
			} else {
				super.removeEventListener(type, listener, useCapture);
			};
			if ((((((((((type == MouseEvent.MOUSE_MOVE)) || ((type == MouseEvent.MOUSE_UP)))) || ((type == MouseEvent.MOUSE_DOWN)))) || ((type == Event.ACTIVATE)))) || ((type == Event.DEACTIVATE)))){
				if (!hasEventListener(type)){
					try {
						if (stage){
							stage.removeEventListener(type, stageEventHandler, false);
						};
					} catch(error:SecurityError) {
					};
				};
			};
			if (type == SandboxMouseEvent.MOUSE_UP_SOMEWHERE){
				if (!hasEventListener(SandboxMouseEvent.MOUSE_UP_SOMEWHERE)){
					try {
						if (stage){
							stage.removeEventListener(Event.MOUSE_LEAVE, mouseLeaveHandler);
						};
					} catch(error:SecurityError) {
					};
					super.removeEventListener(Event.MOUSE_LEAVE, mouseLeaveHandler);
				};
			};
		}
		private function extraFrameHandler(_arg1:Event=null):void{
			var _local3:Class;
			var _local2:Object = info()["frames"];
			if (((_local2) && (_local2[currentLabel]))){
				_local3 = Class(getDefinitionByName(_local2[currentLabel]));
				var _local4 = _local3;
				_local4["frame"](this);
			};
			deferredNextFrame();
		}
		public function isTopLevelRoot():Boolean{
			return (((isStageRoot) || (isBootstrapRoot)));
		}
		public function get application():IUIComponent{
			return (IUIComponent(_document));
		}
		override public function removeChildAt(_arg1:int):DisplayObject{
			noTopMostIndex--;
			return (rawChildren_removeChildAt((applicationIndex + _arg1)));
		}
		mx_internal function rawChildren_removeChildAt(_arg1:int):DisplayObject{
			var _local2:DisplayObject = super.getChildAt(_arg1);
			removingChild(_local2);
			super.removeChildAt(_arg1);
			childRemoved(_local2);
			return (_local2);
		}
		private function getSWFBridgeOfDisplayObject(_arg1:DisplayObject):IEventDispatcher{
			var _local2:SWFBridgeRequest;
			var _local3:Array;
			var _local4:int;
			var _local5:int;
			var _local6:IEventDispatcher;
			var _local7:ISWFBridgeProvider;
			if (swfBridgeGroup){
				_local2 = new SWFBridgeRequest(SWFBridgeRequest.IS_BRIDGE_CHILD_REQUEST, false, false, null, _arg1);
				_local3 = swfBridgeGroup.getChildBridges();
				_local4 = _local3.length;
				_local5 = 0;
				while (_local5 < _local4) {
					_local6 = IEventDispatcher(_local3[_local5]);
					_local7 = swfBridgeGroup.getChildBridgeProvider(_local6);
					if (SecurityUtil.hasMutualTrustBetweenParentAndChild(_local7)){
						_local6.dispatchEvent(_local2);
						if (_local2.data == true){
							return (_local6);
						};
						_local2.data = _arg1;
					};
					_local5++;
				};
			};
			return (null);
		}
		private function deactivateRequestHandler(_arg1:Event):void{
			var _local5:PlaceholderData;
			var _local6:RemotePopUp;
			var _local7:SystemManagerProxy;
			var _local8:IFocusManagerContainer;
			var _local2:SWFBridgeRequest = SWFBridgeRequest.marshal(_arg1);
			var _local3:Object = _local2.data;
			var _local4:String;
			if ((_local2.data is String)){
				_local5 = idToPlaceholder[_local2.data];
				_local3 = _local5.data;
				_local4 = _local5.id;
				if (_local4 == null){
					_local6 = findRemotePopUp(_local3, _local5.bridge);
					if (_local6){
						deactivateRemotePopUp(_local6);
						return;
					};
				};
			};
			if ((_local3 is SystemManagerProxy)){
				_local7 = SystemManagerProxy(_local3);
				_local8 = findFocusManagerContainer(_local7);
				if (((_local7) && (_local8))){
					_local7.deactivateByProxy(_local8);
				};
			} else {
				if ((_local3 is IFocusManagerContainer)){
					IFocusManagerContainer(_local3).focusManager.deactivate();
				} else {
					if ((_local3 is IEventDispatcher)){
						_local2.data = _local4;
						_local2.requestor = IEventDispatcher(_local3);
						IEventDispatcher(_local3).dispatchEvent(_local2);
						return;
					};
					throw (new Error());
				};
			};
		}
		private function installCompiledResourceBundles():void{
			var _local1:Object = this.info();
			var _local2:ApplicationDomain = (((!(topLevel)) && ((parent is Loader)))) ? Loader(parent).contentLoaderInfo.applicationDomain : _local1["currentDomain"];
			var _local3:Array = _local1["compiledLocales"];
			var _local4:Array = _local1["compiledResourceBundleNames"];
			var _local5:IResourceManager = ResourceManager.getInstance();
			_local5.installCompiledResourceBundles(_local2, _local3, _local4);
			if (!_local5.localeChain){
				_local5.initializeLocaleChain(_local3);
			};
		}
		private function deactivateForm(_arg1:Object):void{
			if (form){
				if ((((form == _arg1)) && ((forms.length > 1)))){
					if (isRemotePopUp(form)){
						deactivateRemotePopUp(form);
					} else {
						form.focusManager.deactivate();
					};
					form = findLastActiveForm(_arg1);
					if (form){
						if (isRemotePopUp(form)){
							activateRemotePopUp(form);
						} else {
							form.focusManager.activate();
						};
					};
				};
			};
		}
		private function unloadHandler(_arg1:Event):void{
			dispatchEvent(_arg1);
		}
		mx_internal function removingChild(_arg1:DisplayObject):void{
			_arg1.dispatchEvent(new FlexEvent(FlexEvent.REMOVE));
		}
		mx_internal function get applicationIndex():int{
			return (_applicationIndex);
		}
		mx_internal function set toolTipIndex(_arg1:int):void{
			var _local2:int = (_arg1 - _toolTipIndex);
			_toolTipIndex = _arg1;
			cursorIndex = (cursorIndex + _local2);
		}
		private function hasSWFBridges():Boolean{
			if (swfBridgeGroup){
				return (true);
			};
			return (false);
		}
		private function updateLastActiveForm():void{
			var _local1:int = forms.length;
			if (_local1 < 2){
				return;
			};
			var _local2 = -1;
			var _local3:int;
			while (_local3 < _local1) {
				if (areFormsEqual(form, forms[_local3])){
					_local2 = _local3;
					break;
				};
				_local3++;
			};
			if (_local2 >= 0){
				forms.splice(_local2, 1);
				forms.push(form);
			};
		}
		mx_internal function set bridgeToFocusManager(_arg1:Dictionary):void{
			if (topLevel){
				_bridgeToFocusManager = _arg1;
			} else {
				if (topLevelSystemManager){
					SystemManager(topLevelSystemManager).bridgeToFocusManager = _arg1;
				};
			};
		}
		public function get cursorChildren():IChildList{
			if (!topLevel){
				return (_topLevelSystemManager.cursorChildren);
			};
			if (!_cursorChildren){
				_cursorChildren = new SystemChildrenList(this, new QName(mx_internal, "toolTipIndex"), new QName(mx_internal, "cursorIndex"));
			};
			return (_cursorChildren);
		}
		private function sandboxMouseListener(_arg1:Event):void{
			if ((_arg1 is SandboxMouseEvent)){
				return;
			};
			var _local2:Event = SandboxMouseEvent.marshal(_arg1);
			dispatchEventFromSWFBridges(_local2, (_arg1.target as IEventDispatcher));
			var _local3:InterManagerRequest = new InterManagerRequest(InterManagerRequest.SYSTEM_MANAGER_REQUEST);
			_local3.name = "sameSandbox";
			_local3.value = _arg1;
			getSandboxRoot().dispatchEvent(_local3);
			if (!_local3.value){
				dispatchEvent(_local2);
			};
		}
		public function get preloaderBackgroundImage():Object{
			return (info()["backgroundImage"]);
		}
		public function set numModalWindows(_arg1:int):void{
			_numModalWindows = _arg1;
		}
		public function get preloaderBackgroundAlpha():Number{
			return (info()["backgroundAlpha"]);
		}
		mx_internal function rawChildren_getChildByName(_arg1:String):DisplayObject{
			return (super.getChildByName(_arg1));
		}
		private function dispatchInvalidateRequest():void{
			var _local1:IEventDispatcher = swfBridgeGroup.parentBridge;
			var _local2:SWFBridgeRequest = new SWFBridgeRequest(SWFBridgeRequest.INVALIDATE_REQUEST, false, false, _local1, (InvalidateRequestData.SIZE | InvalidateRequestData.DISPLAY_LIST));
			_local1.dispatchEvent(_local2);
		}
		public function allowDomain(... _args):void{
		}
		public function get preloaderBackgroundColor():uint{
			var _local1:* = info()["backgroundColor"];
			if (_local1 == undefined){
				return (StyleManager.NOT_A_COLOR);
			};
			return (StyleManager.getColorName(_local1));
		}
		public function getVisibleApplicationRect(_arg1:Rectangle=null):Rectangle{
			var _local2:Rectangle;
			var _local3:Point;
			var _local4:IEventDispatcher;
			var _local5:SWFBridgeRequest;
			if (!_arg1){
				_arg1 = getBounds(DisplayObject(this));
				_local2 = screen;
				_local3 = new Point(Math.max(0, _arg1.x), Math.max(0, _arg1.y));
				_local3 = localToGlobal(_local3);
				_arg1.x = _local3.x;
				_arg1.y = _local3.y;
				_arg1.width = _local2.width;
				_arg1.height = _local2.height;
			};
			if (useSWFBridge()){
				_local4 = swfBridgeGroup.parentBridge;
				_local5 = new SWFBridgeRequest(SWFBridgeRequest.GET_VISIBLE_RECT_REQUEST, false, false, _local4, _arg1);
				_local4.dispatchEvent(_local5);
				_arg1 = Rectangle(_local5.data);
			};
			return (_arg1);
		}
		public function get topLevelSystemManager():ISystemManager{
			if (topLevel){
				return (this);
			};
			return (_topLevelSystemManager);
		}
		private function appCreationCompleteHandler(_arg1:FlexEvent):void{
			var _local2:DisplayObjectContainer;
			if (((!(topLevel)) && (parent))){
				_local2 = parent.parent;
				while (_local2) {
					if ((_local2 is IInvalidating)){
						IInvalidating(_local2).invalidateSize();
						IInvalidating(_local2).invalidateDisplayList();
						return;
					};
					_local2 = _local2.parent;
				};
			};
			if (((topLevel) && (useSWFBridge()))){
				dispatchInvalidateRequest();
			};
		}
		public function addChildToSandboxRoot(_arg1:String, _arg2:DisplayObject):void{
			var _local3:InterManagerRequest;
			if (getSandboxRoot() == this){
				this[_arg1].addChild(_arg2);
			} else {
				addingChild(_arg2);
				_local3 = new InterManagerRequest(InterManagerRequest.SYSTEM_MANAGER_REQUEST);
				_local3.name = (_arg1 + ".addChild");
				_local3.value = _arg2;
				getSandboxRoot().dispatchEvent(_local3);
				childAdded(_arg2);
			};
		}
		private function dispatchDeactivatedWindowEvent(_arg1:DisplayObject):void{
			var _local3:DisplayObject;
			var _local4:Boolean;
			var _local5:SWFBridgeEvent;
			var _local2:IEventDispatcher = (swfBridgeGroup) ? swfBridgeGroup.parentBridge : null;
			if (_local2){
				_local3 = getSandboxRoot();
				_local4 = !((_local3 == this));
				_local5 = new SWFBridgeEvent(SWFBridgeEvent.BRIDGE_WINDOW_DEACTIVATE, false, false, {notifier:_local2, window:(_local4) ? _arg1 : NameUtil.displayObjectToString(_arg1)});
				if (_local4){
					_local3.dispatchEvent(_local5);
				} else {
					_local2.dispatchEvent(_local5);
				};
			};
		}
		private function isBridgeChildHandler(_arg1:Event):void{
			if ((_arg1 is SWFBridgeRequest)){
				return;
			};
			var _local2:Object = Object(_arg1);
			_local2.data = ((_local2.data) && (rawChildren.contains((_local2.data as DisplayObject))));
		}
		public function get measuredHeight():Number{
			return ((topLevelWindow) ? topLevelWindow.getExplicitOrMeasuredHeight() : loaderInfo.height);
		}
		private function activateRequestHandler(_arg1:Event):void{
			var _local5:PlaceholderData;
			var _local6:RemotePopUp;
			var _local7:SystemManagerProxy;
			var _local8:IFocusManagerContainer;
			var _local2:SWFBridgeRequest = SWFBridgeRequest.marshal(_arg1);
			var _local3:Object = _local2.data;
			var _local4:String;
			if ((_local2.data is String)){
				_local5 = idToPlaceholder[_local2.data];
				_local3 = _local5.data;
				_local4 = _local5.id;
				if (_local4 == null){
					_local6 = findRemotePopUp(_local3, _local5.bridge);
					if (_local6){
						activateRemotePopUp(_local6);
						return;
					};
				};
			};
			if ((_local3 is SystemManagerProxy)){
				_local7 = SystemManagerProxy(_local3);
				_local8 = findFocusManagerContainer(_local7);
				if (((_local7) && (_local8))){
					_local7.activateByProxy(_local8);
				};
			} else {
				if ((_local3 is IFocusManagerContainer)){
					IFocusManagerContainer(_local3).focusManager.activate();
				} else {
					if ((_local3 is IEventDispatcher)){
						_local2.data = _local4;
						_local2.requestor = IEventDispatcher(_local3);
						IEventDispatcher(_local3).dispatchEvent(_local2);
					} else {
						throw (new Error());
					};
				};
			};
		}
		mx_internal function rawChildren_addChildAt(_arg1:DisplayObject, _arg2:int):DisplayObject{
			addingChild(_arg1);
			super.addChildAt(_arg1, _arg2);
			childAdded(_arg1);
			return (_arg1);
		}
		mx_internal function initialize():void{
			var _local6:int;
			var _local7:int;
			var _local9:EmbeddedFontRegistry;
			var _local13:Class;
			var _local14:Object;
			var _local15:RSLItem;
			if (isStageRoot){
				_width = stage.stageWidth;
				_height = stage.stageHeight;
			} else {
				_width = loaderInfo.width;
				_height = loaderInfo.height;
			};
			preloader = new Preloader();
			preloader.addEventListener(FlexEvent.INIT_PROGRESS, preloader_initProgressHandler);
			preloader.addEventListener(FlexEvent.PRELOADER_DONE, preloader_preloaderDoneHandler);
			preloader.addEventListener(RSLEvent.RSL_COMPLETE, preloader_rslCompleteHandler);
			if (!_popUpChildren){
				_popUpChildren = new SystemChildrenList(this, new QName(mx_internal, "noTopMostIndex"), new QName(mx_internal, "topMostIndex"));
			};
			_popUpChildren.addChild(preloader);
			var _local1:Array = info()["rsls"];
			var _local2:Array = info()["cdRsls"];
			var _local3:Boolean;
			if (info()["usePreloader"] != undefined){
				_local3 = info()["usePreloader"];
			};
			var _local4:Class = (info()["preloader"] as Class);
			if (((_local3) && (!(_local4)))){
				_local4 = DownloadProgressBar;
			};
			var _local5:Array = [];
			if (((_local2) && ((_local2.length > 0)))){
				_local13 = Class(getDefinitionByName("mx.core::CrossDomainRSLItem"));
				_local6 = _local2.length;
				_local7 = 0;
				while (_local7 < _local6) {
					_local14 = new _local13(_local2[_local7]["rsls"], _local2[_local7]["policyFiles"], _local2[_local7]["digests"], _local2[_local7]["types"], _local2[_local7]["isSigned"], LoaderUtil.normalizeURL(this.loaderInfo));
					_local5.push(_local14);
					_local7++;
				};
			};
			if (((!((_local1 == null))) && ((_local1.length > 0)))){
				_local6 = _local1.length;
				_local7 = 0;
				while (_local7 < _local6) {
					_local15 = new RSLItem(_local1[_local7].url, LoaderUtil.normalizeURL(this.loaderInfo));
					_local5.push(_local15);
					_local7++;
				};
			};
			Singleton.registerClass("mx.resources::IResourceManager", Class(getDefinitionByName("mx.resources::ResourceManagerImpl")));
			var _local8:IResourceManager = ResourceManager.getInstance();
			Singleton.registerClass("mx.core::IEmbeddedFontRegistry", Class(getDefinitionByName("mx.core::EmbeddedFontRegistry")));
			Singleton.registerClass("mx.styles::IStyleManager", Class(getDefinitionByName("mx.styles::StyleManagerImpl")));
			Singleton.registerClass("mx.styles::IStyleManager2", Class(getDefinitionByName("mx.styles::StyleManagerImpl")));
			var _local10:String = loaderInfo.parameters["localeChain"];
			if (((!((_local10 == null))) && (!((_local10 == ""))))){
				_local8.localeChain = _local10.split(",");
			};
			var _local11:String = loaderInfo.parameters["resourceModuleURLs"];
			var _local12:Array = (_local11) ? _local11.split(",") : null;
			preloader.initialize(_local3, _local4, preloaderBackgroundColor, preloaderBackgroundAlpha, preloaderBackgroundImage, preloaderBackgroundSize, (isStageRoot) ? stage.stageWidth : loaderInfo.width, (isStageRoot) ? stage.stageHeight : loaderInfo.height, null, null, _local5, _local12);
		}
		public function useSWFBridge():Boolean{
			if (isStageRoot){
				return (false);
			};
			if (((!(topLevel)) && (topLevelSystemManager))){
				return (topLevelSystemManager.useSWFBridge());
			};
			var sbRoot:DisplayObject = getSandboxRoot();
			if (((topLevel) && (!((sbRoot == this))))){
				return (true);
			};
			if (sbRoot == this){
				try {
					root.loaderInfo.parentAllowsChild;
					if (((parentAllowsChild) && (childAllowsParent))){
						try {
							if (!parent.dispatchEvent(new Event("mx.managers.SystemManager.isStageRoot", false, true))){
								return (true);
							};
						} catch(e:Error) {
						};
					} else {
						return (true);
					};
				} catch(e1:Error) {
					return (false);
				};
			};
			return (false);
		}
		mx_internal function childRemoved(_arg1:DisplayObject):void{
			if ((_arg1 is IUIComponent)){
				IUIComponent(_arg1).parentChanged(null);
			};
		}
		final mx_internal function $removeChildAt(_arg1:int):DisplayObject{
			return (super.removeChildAt(_arg1));
		}
		private function canActivatePopUp(_arg1:Object):Boolean{
			var _local2:RemotePopUp;
			var _local3:SWFBridgeRequest;
			if (isRemotePopUp(_arg1)){
				_local2 = RemotePopUp(_arg1);
				_local3 = new SWFBridgeRequest(SWFBridgeRequest.CAN_ACTIVATE_POP_UP_REQUEST, false, false, null, _local2.window);
				IEventDispatcher(_local2.bridge).dispatchEvent(_local3);
				return (_local3.data);
			};
			if (canActivateLocalComponent(_arg1)){
				return (true);
			};
			return (false);
		}
		mx_internal function get noTopMostIndex():int{
			return (_noTopMostIndex);
		}
		override public function get numChildren():int{
			return ((noTopMostIndex - applicationIndex));
		}
		private function canActivateLocalComponent(_arg1:Object):Boolean{
			if ((((((((_arg1 is Sprite)) && ((_arg1 is IUIComponent)))) && (Sprite(_arg1).visible))) && (IUIComponent(_arg1).enabled))){
				return (true);
			};
			return (false);
		}
		private function preloader_preloaderDoneHandler(_arg1:Event):void{
			var _local2:IUIComponent = topLevelWindow;
			preloader.removeEventListener(FlexEvent.PRELOADER_DONE, preloader_preloaderDoneHandler);
			preloader.removeEventListener(RSLEvent.RSL_COMPLETE, preloader_rslCompleteHandler);
			_popUpChildren.removeChild(preloader);
			preloader = null;
			mouseCatcher = new FlexSprite();
			mouseCatcher.name = "mouseCatcher";
			noTopMostIndex++;
			super.addChildAt(mouseCatcher, 0);
			resizeMouseCatcher();
			if (!topLevel){
				mouseCatcher.visible = false;
				mask = mouseCatcher;
			};
			noTopMostIndex++;
			super.addChildAt(DisplayObject(_local2), 1);
			_local2.dispatchEvent(new FlexEvent(FlexEvent.APPLICATION_COMPLETE));
			dispatchEvent(new FlexEvent(FlexEvent.APPLICATION_COMPLETE));
		}
		private function initializeTopLevelWindow(_arg1:Event):void{
			var _local2:IUIComponent;
			var _local3:DisplayObjectContainer;
			var _local4:ISystemManager;
			var _local5:DisplayObject;
			initialized = true;
			if (((!(parent)) && (parentAllowsChild))){
				return;
			};
			if (!topLevel){
				if (!parent){
					return;
				};
				_local3 = parent.parent;
				if (!_local3){
					return;
				};
				while (_local3) {
					if ((_local3 is IUIComponent)){
						_local4 = IUIComponent(_local3).systemManager;
						if (((_local4) && (!(_local4.isTopLevel())))){
							_local4 = _local4.topLevelSystemManager;
						};
						_topLevelSystemManager = _local4;
						break;
					};
					_local3 = _local3.parent;
				};
			};
			if (((isTopLevelRoot()) || ((getSandboxRoot() == this)))){
				addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler, true);
			};
			if (((isTopLevelRoot()) && (stage))){
				stage.addEventListener(Event.RESIZE, Stage_resizeHandler, false, 0, true);
			} else {
				if (((topLevel) && (stage))){
					_local5 = getSandboxRoot();
					if (_local5 != this){
						_local5.addEventListener(Event.RESIZE, Stage_resizeHandler, false, 0, true);
					};
				};
			};
			_local2 = (topLevelWindow = IUIComponent(create()));
			document = _local2;
			if (document){
				IEventDispatcher(_local2).addEventListener(FlexEvent.CREATION_COMPLETE, appCreationCompleteHandler);
				if (!LoaderConfig._url){
					LoaderConfig._url = loaderInfo.url;
					LoaderConfig._parameters = loaderInfo.parameters;
					LoaderConfig._swfVersion = loaderInfo.swfVersion;
				};
				if (((isStageRoot) && (stage))){
					_width = stage.stageWidth;
					_height = stage.stageHeight;
					IFlexDisplayObject(_local2).setActualSize(_width, _height);
				} else {
					IFlexDisplayObject(_local2).setActualSize(loaderInfo.width, loaderInfo.height);
				};
				if (preloader){
					preloader.registerApplication(_local2);
				};
				addingChild(DisplayObject(_local2));
				childAdded(DisplayObject(_local2));
			} else {
				document = this;
			};
		}
		final mx_internal function $addChildAt(_arg1:DisplayObject, _arg2:int):DisplayObject{
			return (super.addChildAt(_arg1, _arg2));
		}
		private function stageEventHandler(_arg1:Event):void{
			if ((((_arg1.target is Stage)) && (mouseCatcher))){
				mouseCatcher.dispatchEvent(_arg1);
			};
		}
		private function nextFrameTimerHandler(_arg1:TimerEvent):void{
			if ((currentFrame + 1) <= framesLoaded){
				nextFrame();
				nextFrameTimer.removeEventListener(TimerEvent.TIMER, nextFrameTimerHandler);
				nextFrameTimer.reset();
			};
		}
		mx_internal function get bridgeToFocusManager():Dictionary{
			if (topLevel){
				return (_bridgeToFocusManager);
			};
			if (topLevelSystemManager){
				return (SystemManager(topLevelSystemManager).bridgeToFocusManager);
			};
			return (null);
		}
		public function get numModalWindows():int{
			return (_numModalWindows);
		}
		private function areFormsEqual(_arg1:Object, _arg2:Object):Boolean{
			if (_arg1 == _arg2){
				return (true);
			};
			if ((((_arg1 is RemotePopUp)) && ((_arg2 is RemotePopUp)))){
				return (areRemotePopUpsEqual(_arg1, _arg2));
			};
			return (false);
		}
		public function isTopLevelWindow(_arg1:DisplayObject):Boolean{
			return ((((_arg1 is IUIComponent)) && ((IUIComponent(_arg1) == topLevelWindow))));
		}
		private function removePlaceholderId(_arg1:String):void{
			delete idToPlaceholder[_arg1];
		}
		mx_internal function dispatchActivatedWindowEvent(_arg1:DisplayObject):void{
			var _local3:DisplayObject;
			var _local4:Boolean;
			var _local5:SWFBridgeEvent;
			var _local2:IEventDispatcher = (swfBridgeGroup) ? swfBridgeGroup.parentBridge : null;
			if (_local2){
				_local3 = getSandboxRoot();
				_local4 = !((_local3 == this));
				_local5 = new SWFBridgeEvent(SWFBridgeEvent.BRIDGE_WINDOW_ACTIVATE, false, false, {notifier:_local2, window:(_local4) ? _arg1 : NameUtil.displayObjectToString(_arg1)});
				if (_local4){
					_local3.dispatchEvent(_local5);
				} else {
					_local2.dispatchEvent(_local5);
				};
			};
		}
		override public function get width():Number{
			return (_width);
		}
		private function dispatchActivatedApplicationEvent():void{
			var _local2:SWFBridgeEvent;
			var _local1:IEventDispatcher = (swfBridgeGroup) ? swfBridgeGroup.parentBridge : null;
			if (_local1){
				_local2 = new SWFBridgeEvent(SWFBridgeEvent.BRIDGE_APPLICATION_ACTIVATE, false, false);
				_local1.dispatchEvent(_local2);
			};
		}
		private function otherSystemManagerMouseListener(_arg1:SandboxMouseEvent):void{
			if (SystemManagerGlobals.dispatchingEventToOtherSystemManagers){
				return;
			};
			dispatchEventFromSWFBridges(_arg1);
			var _local2:InterManagerRequest = new InterManagerRequest(InterManagerRequest.SYSTEM_MANAGER_REQUEST);
			_local2.name = "sameSandbox";
			_local2.value = _arg1;
			getSandboxRoot().dispatchEvent(_local2);
			if (!_local2.value){
				dispatchEvent(_arg1);
			};
		}
		private function hideMouseCursorRequestHandler(_arg1:Event):void{
			var _local3:IEventDispatcher;
			if (((!(isTopLevelRoot())) && ((_arg1 is SWFBridgeRequest)))){
				return;
			};
			var _local2:SWFBridgeRequest = SWFBridgeRequest.marshal(_arg1);
			if (!isTopLevelRoot()){
				_local3 = swfBridgeGroup.parentBridge;
				_local2.requestor = _local3;
				_local3.dispatchEvent(_local2);
			} else {
				if (eventProxy){
					SystemManagerGlobals.showMouseCursor = false;
				};
			};
		}
		private function getTopLevelSystemManager(_arg1:DisplayObject):ISystemManager{
			var _local3:ISystemManager;
			var _local2:DisplayObjectContainer = DisplayObjectContainer(_arg1.root);
			if (((((!(_local2)) || ((_local2 is Stage)))) && ((_arg1 is IUIComponent)))){
				_local2 = DisplayObjectContainer(IUIComponent(_arg1).systemManager);
			};
			if ((_local2 is ISystemManager)){
				_local3 = ISystemManager(_local2);
				if (!_local3.isTopLevel()){
					_local3 = _local3.topLevelSystemManager;
				};
			};
			return (_local3);
		}
		public function isDisplayObjectInABridgedApplication(_arg1:DisplayObject):Boolean{
			return (!((getSWFBridgeOfDisplayObject(_arg1) == null)));
		}
		public function move(_arg1:Number, _arg2:Number):void{
		}
		public function set explicitWidth(_arg1:Number):void{
			_explicitWidth = _arg1;
		}
		public function get parentAllowsChild():Boolean{
			try {
				return (loaderInfo.parentAllowsChild);
			} catch(error:Error) {
			};
			return (false);
		}
		private function preloader_initProgressHandler(_arg1:Event):void{
			preloader.removeEventListener(FlexEvent.INIT_PROGRESS, preloader_initProgressHandler);
			deferredNextFrame();
		}
		private function mouseLeaveHandler(_arg1:Event):void{
			dispatchEvent(new SandboxMouseEvent(SandboxMouseEvent.MOUSE_UP_SOMEWHERE));
		}
		public function get explicitWidth():Number{
			return (_explicitWidth);
		}
		private function activateFormSandboxEventHandler(_arg1:Event):void{
			var _local2:SWFBridgeEvent = SWFBridgeEvent.marshal(_arg1);
			if (!forwardFormEvent(_local2)){
				activateForm(new RemotePopUp(_local2.data.window, _local2.data.notifier));
			};
		}
		mx_internal function rawChildren_addChild(_arg1:DisplayObject):DisplayObject{
			addingChild(_arg1);
			super.addChild(_arg1);
			childAdded(_arg1);
			return (_arg1);
		}

		public static function getSWFRoot(_arg1:Object):DisplayObject{
			var p:*;
			var sm:ISystemManager;
			var domain:ApplicationDomain;
			var cls:Class;
			var object = _arg1;
			var className:String = getQualifiedClassName(object);
			for (p in allSystemManagers) {
				sm = (p as ISystemManager);
				domain = sm.loaderInfo.applicationDomain;
				try {
					cls = Class(domain.getDefinition(className));
					if ((object is cls)){
						return ((sm as DisplayObject));
					};
				} catch(e:Error) {
				};
			};
			return (null);
		}
		private static function areRemotePopUpsEqual(_arg1:Object, _arg2:Object):Boolean{
			if (!(_arg1 is RemotePopUp)){
				return (false);
			};
			if (!(_arg2 is RemotePopUp)){
				return (false);
			};
			var _local3:RemotePopUp = RemotePopUp(_arg1);
			var _local4:RemotePopUp = RemotePopUp(_arg2);
			if ((((((_local3.window == _local4.window)) && (_local3.bridge))) && (_local4.bridge))){
				return (true);
			};
			return (false);
		}
		private static function getChildListIndex(_arg1:IChildList, _arg2:Object):int{
			var childList = _arg1;
			var f = _arg2;
			var index = -1;
			try {
				index = childList.getChildIndex(DisplayObject(f));
			} catch(e:ArgumentError) {
			};
			return (index);
		}
		mx_internal static function registerInitCallback(_arg1:Function):void{
			if (((!(allSystemManagers)) || (!(lastSystemManager)))){
				return;
			};
			var _local2:SystemManager = lastSystemManager;
			if (_local2.doneExecutingInitCallbacks){
				_arg1(_local2);
			} else {
				_local2.initCallbackFunctions.push(_arg1);
			};
		}
		private static function isRemotePopUp(_arg1:Object):Boolean{
			return (!((_arg1 is IFocusManagerContainer)));
		}

	}
}//package mx.managers 

****************

//SystemManagerGlobals (mx.managers.SystemManagerGlobals)
package mx.managers {

	public class SystemManagerGlobals {

		public static var topLevelSystemManagers:Array = [];
		public static var changingListenersInOtherSystemManagers:Boolean;
		public static var bootstrapLoaderInfoURL:String;
		public static var showMouseCursor:Boolean;
		public static var dispatchingEventToOtherSystemManagers:Boolean;

	}
}//package mx.managers 

****************

//SystemManagerProxy (mx.managers.SystemManagerProxy)
package mx.managers {
	import flash.display.*;
	import flash.geom.*;
	import mx.core.*;
	import flash.events.*;
	import mx.events.*;
	import mx.utils.*;

	public class SystemManagerProxy extends SystemManager {

		private var _systemManager:ISystemManager;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function SystemManagerProxy(_arg1:ISystemManager){
			_systemManager = _arg1;
			topLevel = true;
			super.addEventListener(MouseEvent.MOUSE_DOWN, proxyMouseDownHandler, true);
		}
		override public function create(... _args):Object{
			return (IFlexModuleFactory(_systemManager).create.apply(this, _args));
		}
		public function get systemManager():ISystemManager{
			return (_systemManager);
		}
		override public function activate(_arg1:IFocusManagerContainer):void{
			var _local3:Boolean;
			var _local4:SWFBridgeEvent;
			var _local2:IEventDispatcher = (_systemManager.swfBridgeGroup) ? _systemManager.swfBridgeGroup.parentBridge : null;
			if (_local2){
				_local3 = SecurityUtil.hasMutualTrustBetweenParentAndChild(ISWFBridgeProvider(_systemManager));
				_local4 = new SWFBridgeEvent(SWFBridgeEvent.BRIDGE_WINDOW_ACTIVATE, false, false, {notifier:_local2, window:(_local3) ? this : NameUtil.displayObjectToString(this)});
				_systemManager.getSandboxRoot().dispatchEvent(_local4);
			};
		}
		override public function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{
			super.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5);
			_systemManager.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5);
		}
		public function deactivateByProxy(_arg1:IFocusManagerContainer):void{
			if (_arg1){
				_arg1.focusManager.deactivate();
			};
		}
		override public function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{
			super.removeEventListener(_arg1, _arg2, _arg3);
			_systemManager.removeEventListener(_arg1, _arg2, _arg3);
		}
		override public function get document():Object{
			return (findFocusManagerContainer(this));
		}
		public function activateByProxy(_arg1:IFocusManagerContainer):void{
			super.activate(_arg1);
		}
		override public function removeChildBridge(_arg1:IEventDispatcher):void{
			_systemManager.removeChildBridge(_arg1);
		}
		override public function get swfBridgeGroup():ISWFBridgeGroup{
			return (_systemManager.swfBridgeGroup);
		}
		override public function addChildBridge(_arg1:IEventDispatcher, _arg2:DisplayObject):void{
			_systemManager.addChildBridge(_arg1, _arg2);
		}
		override public function useSWFBridge():Boolean{
			return (_systemManager.useSWFBridge());
		}
		override public function get screen():Rectangle{
			return (_systemManager.screen);
		}
		override public function set swfBridgeGroup(_arg1:ISWFBridgeGroup):void{
		}
		private function proxyMouseDownHandler(_arg1:MouseEvent):void{
			if (findFocusManagerContainer(this)){
				SystemManager(_systemManager).dispatchActivatedWindowEvent(this);
			};
		}
		override public function deactivate(_arg1:IFocusManagerContainer):void{
			var _local4:Boolean;
			var _local5:SWFBridgeEvent;
			var _local2:ISystemManager = _systemManager;
			var _local3:IEventDispatcher = (_local2.swfBridgeGroup) ? _local2.swfBridgeGroup.parentBridge : null;
			if (_local3){
				_local4 = SecurityUtil.hasMutualTrustBetweenParentAndChild(ISWFBridgeProvider(_systemManager));
				_local5 = new SWFBridgeEvent(SWFBridgeEvent.BRIDGE_WINDOW_DEACTIVATE, false, false, {notifier:_local3, window:(_local4) ? this : NameUtil.displayObjectToString(this)});
				_systemManager.getSandboxRoot().dispatchEvent(_local5);
			};
		}
		override public function set document(_arg1:Object):void{
		}
		override public function getVisibleApplicationRect(_arg1:Rectangle=null):Rectangle{
			return (_systemManager.getVisibleApplicationRect(_arg1));
		}
		override public function getDefinitionByName(_arg1:String):Object{
			return (_systemManager.getDefinitionByName(_arg1));
		}

	}
}//package mx.managers 

****************

//SystemRawChildrenList (mx.managers.SystemRawChildrenList)
package mx.managers {
	import flash.display.*;
	import flash.geom.*;
	import mx.core.*;

	public class SystemRawChildrenList implements IChildList {

		private var owner:SystemManager;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function SystemRawChildrenList(_arg1:SystemManager){
			this.owner = _arg1;
		}
		public function getChildAt(_arg1:int):DisplayObject{
			return (owner.mx_internal::rawChildren_getChildAt(_arg1));
		}
		public function addChild(_arg1:DisplayObject):DisplayObject{
			return (owner.mx_internal::rawChildren_addChild(_arg1));
		}
		public function getChildIndex(_arg1:DisplayObject):int{
			return (owner.mx_internal::rawChildren_getChildIndex(_arg1));
		}
		public function setChildIndex(_arg1:DisplayObject, _arg2:int):void{
			var _local3 = owner;
			_local3.mx_internal::rawChildren_setChildIndex(_arg1, _arg2);
		}
		public function getChildByName(_arg1:String):DisplayObject{
			return (owner.mx_internal::rawChildren_getChildByName(_arg1));
		}
		public function removeChildAt(_arg1:int):DisplayObject{
			return (owner.mx_internal::rawChildren_removeChildAt(_arg1));
		}
		public function get numChildren():int{
			return (owner.mx_internal::$numChildren);
		}
		public function addChildAt(_arg1:DisplayObject, _arg2:int):DisplayObject{
			return (owner.mx_internal::rawChildren_addChildAt(_arg1, _arg2));
		}
		public function getObjectsUnderPoint(_arg1:Point):Array{
			return (owner.mx_internal::rawChildren_getObjectsUnderPoint(_arg1));
		}
		public function contains(_arg1:DisplayObject):Boolean{
			return (owner.mx_internal::rawChildren_contains(_arg1));
		}
		public function removeChild(_arg1:DisplayObject):DisplayObject{
			return (owner.mx_internal::rawChildren_removeChild(_arg1));
		}

	}
}//package mx.managers 

****************

//ToolTipManager (mx.managers.ToolTipManager)
package mx.managers {
	import mx.core.*;
	import flash.events.*;
	import flash.display.*;
	import mx.effects.*;

	public class ToolTipManager extends EventDispatcher {

		mx_internal static const VERSION:String = "3.5.0.12683";

		private static var implClassDependency:ToolTipManagerImpl;
		private static var _impl:IToolTipManager2;

		mx_internal static function registerToolTip(_arg1:DisplayObject, _arg2:String, _arg3:String):void{
			impl.registerToolTip(_arg1, _arg2, _arg3);
		}
		public static function get enabled():Boolean{
			return (impl.enabled);
		}
		public static function set enabled(_arg1:Boolean):void{
			impl.enabled = _arg1;
		}
		public static function createToolTip(_arg1:String, _arg2:Number, _arg3:Number, _arg4:String=null, _arg5:IUIComponent=null):IToolTip{
			return (impl.createToolTip(_arg1, _arg2, _arg3, _arg4, _arg5));
		}
		public static function set hideDelay(_arg1:Number):void{
			impl.hideDelay = _arg1;
		}
		public static function set showDelay(_arg1:Number):void{
			impl.showDelay = _arg1;
		}
		public static function get showDelay():Number{
			return (impl.showDelay);
		}
		public static function destroyToolTip(_arg1:IToolTip):void{
			return (impl.destroyToolTip(_arg1));
		}
		public static function get scrubDelay():Number{
			return (impl.scrubDelay);
		}
		public static function get toolTipClass():Class{
			return (impl.toolTipClass);
		}
		mx_internal static function registerErrorString(_arg1:DisplayObject, _arg2:String, _arg3:String):void{
			impl.registerErrorString(_arg1, _arg2, _arg3);
		}
		mx_internal static function sizeTip(_arg1:IToolTip):void{
			impl.sizeTip(_arg1);
		}
		public static function set currentTarget(_arg1:DisplayObject):void{
			impl.currentTarget = _arg1;
		}
		public static function set showEffect(_arg1:IAbstractEffect):void{
			impl.showEffect = _arg1;
		}
		private static function get impl():IToolTipManager2{
			if (!_impl){
				_impl = IToolTipManager2(Singleton.getInstance("mx.managers::IToolTipManager2"));
			};
			return (_impl);
		}
		public static function get hideDelay():Number{
			return (impl.hideDelay);
		}
		public static function set hideEffect(_arg1:IAbstractEffect):void{
			impl.hideEffect = _arg1;
		}
		public static function set scrubDelay(_arg1:Number):void{
			impl.scrubDelay = _arg1;
		}
		public static function get currentToolTip():IToolTip{
			return (impl.currentToolTip);
		}
		public static function set currentToolTip(_arg1:IToolTip):void{
			impl.currentToolTip = _arg1;
		}
		public static function get showEffect():IAbstractEffect{
			return (impl.showEffect);
		}
		public static function get currentTarget():DisplayObject{
			return (impl.currentTarget);
		}
		public static function get hideEffect():IAbstractEffect{
			return (impl.hideEffect);
		}
		public static function set toolTipClass(_arg1:Class):void{
			impl.toolTipClass = _arg1;
		}

	}
}//package mx.managers 

****************

//ToolTipManagerImpl (mx.managers.ToolTipManagerImpl)
package mx.managers {
	import mx.core.*;
	import mx.events.*;
	import flash.events.*;
	import flash.display.*;
	import flash.geom.*;
	import mx.styles.*;
	import mx.controls.*;
	import mx.effects.*;
	import flash.utils.*;
	import mx.validators.*;

	public class ToolTipManagerImpl extends EventDispatcher implements IToolTipManager2 {

		private var _enabled:Boolean;// = true
		private var _showDelay:Number;// = 500
		private var _hideEffect:IAbstractEffect;
		mx_internal var hideTimer:Timer;
		private var _scrubDelay:Number;// = 100
		private var _toolTipClass:Class;
		mx_internal var showTimer:Timer;
		private var sandboxRoot:IEventDispatcher;// = null
		mx_internal var currentText:String;
		private var _currentToolTip:DisplayObject;
		mx_internal var scrubTimer:Timer;
		mx_internal var previousTarget:DisplayObject;
		private var _currentTarget:DisplayObject;
		private var systemManager:ISystemManager;// = null
		private var _showEffect:IAbstractEffect;
		private var _hideDelay:Number;// = 10000
		mx_internal var initialized:Boolean;// = false
		mx_internal var isError:Boolean;

		mx_internal static const VERSION:String = "3.5.0.12683";

		private static var instance:IToolTipManager2;

		public function ToolTipManagerImpl(){
			_toolTipClass = ToolTip;
			super();
			if (instance){
				throw (new Error("Instance already exists."));
			};
			this.systemManager = (SystemManagerGlobals.topLevelSystemManagers[0] as ISystemManager);
			sandboxRoot = this.systemManager.getSandboxRoot();
			sandboxRoot.addEventListener(InterManagerRequest.TOOLTIP_MANAGER_REQUEST, marshalToolTipManagerHandler, false, 0, true);
			var _local1:InterManagerRequest = new InterManagerRequest(InterManagerRequest.TOOLTIP_MANAGER_REQUEST);
			_local1.name = "update";
			sandboxRoot.dispatchEvent(_local1);
		}
		mx_internal function systemManager_mouseDownHandler(_arg1:MouseEvent):void{
			reset();
		}
		public function set showDelay(_arg1:Number):void{
			_showDelay = _arg1;
		}
		mx_internal function showTimer_timerHandler(_arg1:TimerEvent):void{
			if (currentTarget){
				createTip();
				initializeTip();
				positionTip();
				showTip();
			};
		}
		mx_internal function hideEffectEnded():void{
			var _local1:ToolTipEvent;
			reset();
			if (previousTarget){
				_local1 = new ToolTipEvent(ToolTipEvent.TOOL_TIP_END);
				_local1.toolTip = currentToolTip;
				previousTarget.dispatchEvent(_local1);
			};
		}
		public function set scrubDelay(_arg1:Number):void{
			_scrubDelay = _arg1;
		}
		public function get currentToolTip():IToolTip{
			return ((_currentToolTip as IToolTip));
		}
		private function mouseIsOver(_arg1:DisplayObject):Boolean{
			if (((!(_arg1)) || (!(_arg1.stage)))){
				return (false);
			};
			if ((((_arg1.stage.mouseX == 0)) && ((_arg1.stage.mouseY == 0)))){
				return (false);
			};
			return (_arg1.hitTestPoint(_arg1.stage.mouseX, _arg1.stage.mouseY, true));
		}
		mx_internal function toolTipMouseOutHandler(_arg1:MouseEvent):void{
			checkIfTargetChanged(_arg1.relatedObject);
		}
		public function get enabled():Boolean{
			return (_enabled);
		}
		public function createToolTip(_arg1:String, _arg2:Number, _arg3:Number, _arg4:String=null, _arg5:IUIComponent=null):IToolTip{
			var _local6:ToolTip = new ToolTip();
			var _local7:ISystemManager = (_arg5) ? (_arg5.systemManager as ISystemManager) : (ApplicationGlobals.application.systemManager as ISystemManager);
			_local7.topLevelSystemManager.addChildToSandboxRoot("toolTipChildren", (_local6 as DisplayObject));
			if (_arg4){
				_local6.setStyle("styleName", "errorTip");
				_local6.setStyle("borderStyle", _arg4);
			};
			_local6.text = _arg1;
			sizeTip(_local6);
			_local6.move(_arg2, _arg3);
			return ((_local6 as IToolTip));
		}
		mx_internal function reset():void{
			var _local1:ISystemManager;
			showTimer.reset();
			hideTimer.reset();
			if (currentToolTip){
				if (((showEffect) || (hideEffect))){
					currentToolTip.removeEventListener(EffectEvent.EFFECT_END, effectEndHandler);
				};
				EffectManager.endEffectsForTarget(currentToolTip);
				_local1 = (currentToolTip.systemManager as ISystemManager);
				_local1.topLevelSystemManager.removeChildFromSandboxRoot("toolTipChildren", (currentToolTip as DisplayObject));
				currentToolTip = null;
				scrubTimer.delay = scrubDelay;
				scrubTimer.reset();
				if (scrubDelay > 0){
					scrubTimer.delay = scrubDelay;
					scrubTimer.start();
				};
			};
		}
		public function set currentToolTip(_arg1:IToolTip):void{
			_currentToolTip = (_arg1 as DisplayObject);
			var _local2:InterManagerRequest = new InterManagerRequest(InterManagerRequest.TOOLTIP_MANAGER_REQUEST);
			_local2.name = "currentToolTip";
			_local2.value = _arg1;
			sandboxRoot.dispatchEvent(_local2);
		}
		public function get toolTipClass():Class{
			return (_toolTipClass);
		}
		private function hideImmediately(_arg1:DisplayObject):void{
			checkIfTargetChanged(null);
		}
		mx_internal function showTip():void{
			var _local2:ISystemManager;
			var _local1:ToolTipEvent = new ToolTipEvent(ToolTipEvent.TOOL_TIP_SHOW);
			_local1.toolTip = currentToolTip;
			currentTarget.dispatchEvent(_local1);
			if (isError){
				currentTarget.addEventListener("change", changeHandler);
			} else {
				_local2 = getSystemManager(currentTarget);
				_local2.addEventListener(MouseEvent.MOUSE_DOWN, systemManager_mouseDownHandler);
			};
			currentToolTip.visible = true;
			if (!showEffect){
				showEffectEnded();
			};
		}
		mx_internal function effectEndHandler(_arg1:EffectEvent):void{
			if (_arg1.effectInstance.effect == showEffect){
				showEffectEnded();
			} else {
				if (_arg1.effectInstance.effect == hideEffect){
					hideEffectEnded();
				};
			};
		}
		public function get hideDelay():Number{
			return (_hideDelay);
		}
		public function get currentTarget():DisplayObject{
			return (_currentTarget);
		}
		mx_internal function showEffectEnded():void{
			var _local1:ToolTipEvent;
			if (hideDelay == 0){
				hideTip();
			} else {
				if (hideDelay < Infinity){
					hideTimer.delay = hideDelay;
					hideTimer.start();
				};
			};
			if (currentTarget){
				_local1 = new ToolTipEvent(ToolTipEvent.TOOL_TIP_SHOWN);
				_local1.toolTip = currentToolTip;
				currentTarget.dispatchEvent(_local1);
			};
		}
		public function get hideEffect():IAbstractEffect{
			return (_hideEffect);
		}
		mx_internal function changeHandler(_arg1:Event):void{
			reset();
		}
		public function set enabled(_arg1:Boolean):void{
			_enabled = _arg1;
		}
		mx_internal function errorTipMouseOverHandler(_arg1:MouseEvent):void{
			checkIfTargetChanged(DisplayObject(_arg1.target));
		}
		public function get showDelay():Number{
			return (_showDelay);
		}
		public function get scrubDelay():Number{
			return (_scrubDelay);
		}
		public function registerErrorString(_arg1:DisplayObject, _arg2:String, _arg3:String):void{
			if (((!(_arg2)) && (_arg3))){
				_arg1.addEventListener(MouseEvent.MOUSE_OVER, errorTipMouseOverHandler);
				_arg1.addEventListener(MouseEvent.MOUSE_OUT, errorTipMouseOutHandler);
				if (mouseIsOver(_arg1)){
					showImmediately(_arg1);
				};
			} else {
				if (((_arg2) && (!(_arg3)))){
					_arg1.removeEventListener(MouseEvent.MOUSE_OVER, errorTipMouseOverHandler);
					_arg1.removeEventListener(MouseEvent.MOUSE_OUT, errorTipMouseOutHandler);
					if (mouseIsOver(_arg1)){
						hideImmediately(_arg1);
					};
				};
			};
		}
		mx_internal function initialize():void{
			if (!showTimer){
				showTimer = new Timer(0, 1);
				showTimer.addEventListener(TimerEvent.TIMER, showTimer_timerHandler);
			};
			if (!hideTimer){
				hideTimer = new Timer(0, 1);
				hideTimer.addEventListener(TimerEvent.TIMER, hideTimer_timerHandler);
			};
			if (!scrubTimer){
				scrubTimer = new Timer(0, 1);
			};
			initialized = true;
		}
		public function destroyToolTip(_arg1:IToolTip):void{
			var _local2:ISystemManager = (_arg1.systemManager as ISystemManager);
			_local2.topLevelSystemManager.removeChildFromSandboxRoot("toolTipChildren", DisplayObject(_arg1));
		}
		mx_internal function checkIfTargetChanged(_arg1:DisplayObject):void{
			if (!enabled){
				return;
			};
			findTarget(_arg1);
			if (currentTarget != previousTarget){
				targetChanged();
				previousTarget = currentTarget;
			};
		}
		private function marshalToolTipManagerHandler(_arg1:Event):void{
			var _local2:InterManagerRequest;
			if ((_arg1 is InterManagerRequest)){
				return;
			};
			var _local3:Object = _arg1;
			switch (_local3.name){
				case "currentToolTip":
					_currentToolTip = _local3.value;
					break;
				case ToolTipEvent.TOOL_TIP_HIDE:
					if ((_currentToolTip is IToolTip)){
						hideTip();
					};
					break;
				case "update":
					_arg1.stopImmediatePropagation();
					_local2 = new InterManagerRequest(InterManagerRequest.TOOLTIP_MANAGER_REQUEST);
					_local2.name = "currentToolTip";
					_local2.value = _currentToolTip;
					sandboxRoot.dispatchEvent(_local2);
			};
		}
		public function set toolTipClass(_arg1:Class):void{
			_toolTipClass = _arg1;
		}
		private function getGlobalBounds(_arg1:DisplayObject, _arg2:DisplayObject):Rectangle{
			var _local3:Point = new Point(0, 0);
			_local3 = _arg1.localToGlobal(_local3);
			_local3 = _arg2.globalToLocal(_local3);
			return (new Rectangle(_local3.x, _local3.y, _arg1.width, _arg1.height));
		}
		mx_internal function positionTip():void{
			var _local1:Number;
			var _local2:Number;
			var _local5:Rectangle;
			var _local6:Number;
			var _local7:Number;
			var _local8:ISystemManager;
			var _local9:Number;
			var _local10:Number;
			var _local11:Point;
			var _local3:Number = currentToolTip.screen.width;
			var _local4:Number = currentToolTip.screen.height;
			if (isError){
				_local5 = getGlobalBounds(currentTarget, currentToolTip.root);
				_local1 = (_local5.right + 4);
				_local2 = (_local5.top - 1);
				if ((_local1 + currentToolTip.width) > _local3){
					_local6 = NaN;
					_local7 = NaN;
					_local1 = (_local5.left - 2);
					if (((_local1 + currentToolTip.width) + 4) > _local3){
						_local6 = ((_local3 - _local1) - 4);
						_local7 = Object(toolTipClass).maxWidth;
						Object(toolTipClass).maxWidth = _local6;
						if ((currentToolTip is IStyleClient)){
							IStyleClient(currentToolTip).setStyle("borderStyle", "errorTipAbove");
						};
						currentToolTip["text"] = currentToolTip["text"];
					} else {
						if ((currentToolTip is IStyleClient)){
							IStyleClient(currentToolTip).setStyle("borderStyle", "errorTipAbove");
						};
						currentToolTip["text"] = currentToolTip["text"];
					};
					if ((currentToolTip.height + 2) < _local5.top){
						_local2 = (_local5.top - (currentToolTip.height + 2));
					} else {
						_local2 = (_local5.bottom + 2);
						if (!isNaN(_local6)){
							Object(toolTipClass).maxWidth = _local6;
						};
						if ((currentToolTip is IStyleClient)){
							IStyleClient(currentToolTip).setStyle("borderStyle", "errorTipBelow");
						};
						currentToolTip["text"] = currentToolTip["text"];
					};
				};
				sizeTip(currentToolTip);
				if (!isNaN(_local7)){
					Object(toolTipClass).maxWidth = _local7;
				};
			} else {
				_local8 = getSystemManager(currentTarget);
				_local1 = (DisplayObject(_local8).mouseX + 11);
				_local2 = (DisplayObject(_local8).mouseY + 22);
				_local9 = currentToolTip.width;
				if ((_local1 + _local9) > _local3){
					_local1 = (_local3 - _local9);
				};
				_local10 = currentToolTip.height;
				if ((_local2 + _local10) > _local4){
					_local2 = (_local4 - _local10);
				};
				_local11 = new Point(_local1, _local2);
				_local11 = DisplayObject(_local8).localToGlobal(_local11);
				_local11 = DisplayObject(sandboxRoot).globalToLocal(_local11);
				_local1 = _local11.x;
				_local2 = _local11.y;
			};
			currentToolTip.move(_local1, _local2);
		}
		mx_internal function errorTipMouseOutHandler(_arg1:MouseEvent):void{
			checkIfTargetChanged(_arg1.relatedObject);
		}
		mx_internal function findTarget(_arg1:DisplayObject):void{
			while (_arg1) {
				if ((_arg1 is IValidatorListener)){
					currentText = IValidatorListener(_arg1).errorString;
					if (((!((currentText == null))) && (!((currentText == ""))))){
						currentTarget = _arg1;
						isError = true;
						return;
					};
				};
				if ((_arg1 is IToolTipManagerClient)){
					currentText = IToolTipManagerClient(_arg1).toolTip;
					if (currentText != null){
						currentTarget = _arg1;
						isError = false;
						return;
					};
				};
				_arg1 = _arg1.parent;
			};
			currentText = null;
			currentTarget = null;
		}
		public function registerToolTip(_arg1:DisplayObject, _arg2:String, _arg3:String):void{
			if (((!(_arg2)) && (_arg3))){
				_arg1.addEventListener(MouseEvent.MOUSE_OVER, toolTipMouseOverHandler);
				_arg1.addEventListener(MouseEvent.MOUSE_OUT, toolTipMouseOutHandler);
				if (mouseIsOver(_arg1)){
					showImmediately(_arg1);
				};
			} else {
				if (((_arg2) && (!(_arg3)))){
					_arg1.removeEventListener(MouseEvent.MOUSE_OVER, toolTipMouseOverHandler);
					_arg1.removeEventListener(MouseEvent.MOUSE_OUT, toolTipMouseOutHandler);
					if (mouseIsOver(_arg1)){
						hideImmediately(_arg1);
					};
				};
			};
		}
		private function showImmediately(_arg1:DisplayObject):void{
			var _local2:Number = ToolTipManager.showDelay;
			ToolTipManager.showDelay = 0;
			checkIfTargetChanged(_arg1);
			ToolTipManager.showDelay = _local2;
		}
		public function set hideDelay(_arg1:Number):void{
			_hideDelay = _arg1;
		}
		private function getSystemManager(_arg1:DisplayObject):ISystemManager{
			return (((_arg1 is IUIComponent)) ? IUIComponent(_arg1).systemManager : null);
		}
		public function set currentTarget(_arg1:DisplayObject):void{
			_currentTarget = _arg1;
		}
		public function sizeTip(_arg1:IToolTip):void{
			if ((_arg1 is IInvalidating)){
				IInvalidating(_arg1).validateNow();
			};
			_arg1.setActualSize(_arg1.getExplicitOrMeasuredWidth(), _arg1.getExplicitOrMeasuredHeight());
		}
		public function set showEffect(_arg1:IAbstractEffect):void{
			_showEffect = (_arg1 as IAbstractEffect);
		}
		mx_internal function targetChanged():void{
			var _local1:ToolTipEvent;
			var _local2:InterManagerRequest;
			if (!initialized){
				initialize();
			};
			if (((previousTarget) && (currentToolTip))){
				if ((currentToolTip is IToolTip)){
					_local1 = new ToolTipEvent(ToolTipEvent.TOOL_TIP_HIDE);
					_local1.toolTip = currentToolTip;
					previousTarget.dispatchEvent(_local1);
				} else {
					_local2 = new InterManagerRequest(InterManagerRequest.TOOLTIP_MANAGER_REQUEST);
					_local2.name = ToolTipEvent.TOOL_TIP_HIDE;
					sandboxRoot.dispatchEvent(_local2);
				};
			};
			reset();
			if (currentTarget){
				if (currentText == ""){
					return;
				};
				_local1 = new ToolTipEvent(ToolTipEvent.TOOL_TIP_START);
				currentTarget.dispatchEvent(_local1);
				if ((((showDelay == 0)) || (scrubTimer.running))){
					createTip();
					initializeTip();
					positionTip();
					showTip();
				} else {
					showTimer.delay = showDelay;
					showTimer.start();
				};
			};
		}
		public function set hideEffect(_arg1:IAbstractEffect):void{
			_hideEffect = (_arg1 as IAbstractEffect);
		}
		mx_internal function hideTimer_timerHandler(_arg1:TimerEvent):void{
			hideTip();
		}
		mx_internal function initializeTip():void{
			if ((currentToolTip is IToolTip)){
				IToolTip(currentToolTip).text = currentText;
			};
			if (((isError) && ((currentToolTip is IStyleClient)))){
				IStyleClient(currentToolTip).setStyle("styleName", "errorTip");
			};
			sizeTip(currentToolTip);
			if ((currentToolTip is IStyleClient)){
				if (showEffect){
					IStyleClient(currentToolTip).setStyle("showEffect", showEffect);
				};
				if (hideEffect){
					IStyleClient(currentToolTip).setStyle("hideEffect", hideEffect);
				};
			};
			if (((showEffect) || (hideEffect))){
				currentToolTip.addEventListener(EffectEvent.EFFECT_END, effectEndHandler);
			};
		}
		public function get showEffect():IAbstractEffect{
			return (_showEffect);
		}
		mx_internal function toolTipMouseOverHandler(_arg1:MouseEvent):void{
			checkIfTargetChanged(DisplayObject(_arg1.target));
		}
		mx_internal function hideTip():void{
			var _local1:ToolTipEvent;
			var _local2:ISystemManager;
			if (previousTarget){
				_local1 = new ToolTipEvent(ToolTipEvent.TOOL_TIP_HIDE);
				_local1.toolTip = currentToolTip;
				previousTarget.dispatchEvent(_local1);
			};
			if (currentToolTip){
				currentToolTip.visible = false;
			};
			if (isError){
				if (currentTarget){
					currentTarget.removeEventListener("change", changeHandler);
				};
			} else {
				if (previousTarget){
					_local2 = getSystemManager(previousTarget);
					_local2.removeEventListener(MouseEvent.MOUSE_DOWN, systemManager_mouseDownHandler);
				};
			};
			if (!hideEffect){
				hideEffectEnded();
			};
		}
		mx_internal function createTip():void{
			var _local1:ToolTipEvent = new ToolTipEvent(ToolTipEvent.TOOL_TIP_CREATE);
			currentTarget.dispatchEvent(_local1);
			if (_local1.toolTip){
				currentToolTip = _local1.toolTip;
			} else {
				currentToolTip = new toolTipClass();
			};
			currentToolTip.visible = false;
			var _local2:ISystemManager = (getSystemManager(currentTarget) as ISystemManager);
			_local2.topLevelSystemManager.addChildToSandboxRoot("toolTipChildren", (currentToolTip as DisplayObject));
		}

		public static function getInstance():IToolTipManager2{
			if (!instance){
				instance = new (ToolTipManagerImpl);
			};
			return (instance);
		}

	}
}//package mx.managers 

****************

//LoaderConfig (mx.messaging.config.LoaderConfig)
package mx.messaging.config {
	import mx.core.*;

	public class LoaderConfig {

		mx_internal static const VERSION:String = "3.5.0.12683";

		mx_internal static var _parameters:Object;
		mx_internal static var _swfVersion:uint;
		mx_internal static var _url:String = null;

		public static function get parameters():Object{
			return (_parameters);
		}
		public static function get url():String{
			return (_url);
		}
		public static function get swfVersion():uint{
			return (_swfVersion);
		}

	}
}//package mx.messaging.config 

****************

//IModuleInfo (mx.modules.IModuleInfo)
package mx.modules {
	import flash.utils.*;
	import mx.core.*;
	import flash.events.*;
	import flash.system.*;

	public interface IModuleInfo extends IEventDispatcher {

		function get ready():Boolean;
		function get loaded():Boolean;
		function load(_arg1:ApplicationDomain=null, _arg2:SecurityDomain=null, _arg3:ByteArray=null):void;
		function release():void;
		function get error():Boolean;
		function get data():Object;
		function publish(_arg1:IFlexModuleFactory):void;
		function get factory():IFlexModuleFactory;
		function set data(_arg1:Object):void;
		function get url():String;
		function get setup():Boolean;
		function unload():void;

	}
}//package mx.modules 

****************

//ModuleManager (mx.modules.ModuleManager)
package mx.modules {
	import mx.core.*;

	public class ModuleManager {

		mx_internal static const VERSION:String = "3.5.0.12683";

		public static function getModule(_arg1:String):IModuleInfo{
			return (getSingleton().getModule(_arg1));
		}
		private static function getSingleton():Object{
			if (!ModuleManagerGlobals.managerSingleton){
				ModuleManagerGlobals.managerSingleton = new ModuleManagerImpl();
			};
			return (ModuleManagerGlobals.managerSingleton);
		}
		public static function getAssociatedFactory(_arg1:Object):IFlexModuleFactory{
			return (getSingleton().getAssociatedFactory(_arg1));
		}

	}
}//package mx.modules 

import flash.utils.*;
import flash.display.*;
import mx.core.*;
import flash.events.*;
import mx.events.*;
import flash.system.*;
import flash.net.*;

class ModuleInfoProxy extends EventDispatcher implements IModuleInfo {

	private var _data:Object;
	private var info:ModuleInfo;
	private var referenced:Boolean;// = false

	private function ModuleInfoProxy(_arg1:ModuleInfo){
		this.info = _arg1;
		_arg1.addEventListener(ModuleEvent.SETUP, moduleEventHandler, false, 0, true);
		_arg1.addEventListener(ModuleEvent.PROGRESS, moduleEventHandler, false, 0, true);
		_arg1.addEventListener(ModuleEvent.READY, moduleEventHandler, false, 0, true);
		_arg1.addEventListener(ModuleEvent.ERROR, moduleEventHandler, false, 0, true);
		_arg1.addEventListener(ModuleEvent.UNLOAD, moduleEventHandler, false, 0, true);
	}
	public function get loaded():Boolean{
		return (info.loaded);
	}
	public function release():void{
		if (referenced){
			info.removeReference();
			referenced = false;
		};
	}
	public function get error():Boolean{
		return (info.error);
	}
	public function get factory():IFlexModuleFactory{
		return (info.factory);
	}
	public function publish(_arg1:IFlexModuleFactory):void{
		info.publish(_arg1);
	}
	public function set data(_arg1:Object):void{
		_data = _arg1;
	}
	public function get ready():Boolean{
		return (info.ready);
	}
	public function load(_arg1:ApplicationDomain=null, _arg2:SecurityDomain=null, _arg3:ByteArray=null):void{
		var _local4:ModuleEvent;
		info.resurrect();
		if (!referenced){
			info.addReference();
			referenced = true;
		};
		if (info.error){
			dispatchEvent(new ModuleEvent(ModuleEvent.ERROR));
		} else {
			if (info.loaded){
				if (info.setup){
					dispatchEvent(new ModuleEvent(ModuleEvent.SETUP));
					if (info.ready){
						_local4 = new ModuleEvent(ModuleEvent.PROGRESS);
						_local4.bytesLoaded = info.size;
						_local4.bytesTotal = info.size;
						dispatchEvent(_local4);
						dispatchEvent(new ModuleEvent(ModuleEvent.READY));
					};
				};
			} else {
				info.load(_arg1, _arg2, _arg3);
			};
		};
	}
	private function moduleEventHandler(_arg1:ModuleEvent):void{
		dispatchEvent(_arg1);
	}
	public function get url():String{
		return (info.url);
	}
	public function get data():Object{
		return (_data);
	}
	public function get setup():Boolean{
		return (info.setup);
	}
	public function unload():void{
		info.unload();
		info.removeEventListener(ModuleEvent.SETUP, moduleEventHandler);
		info.removeEventListener(ModuleEvent.PROGRESS, moduleEventHandler);
		info.removeEventListener(ModuleEvent.READY, moduleEventHandler);
		info.removeEventListener(ModuleEvent.ERROR, moduleEventHandler);
		info.removeEventListener(ModuleEvent.UNLOAD, moduleEventHandler);
	}

}
class ModuleManagerImpl extends EventDispatcher {

	private var moduleList:Object;

	private function ModuleManagerImpl(){
		moduleList = {};
		super();
	}
	public function getModule(_arg1:String):IModuleInfo{
		var _local2:ModuleInfo = (moduleList[_arg1] as ModuleInfo);
		if (!_local2){
			_local2 = new ModuleInfo(_arg1);
			moduleList[_arg1] = _local2;
		};
		return (new ModuleInfoProxy(_local2));
	}
	public function getAssociatedFactory(_arg1:Object):IFlexModuleFactory{
		var m:Object;
		var info:ModuleInfo;
		var domain:ApplicationDomain;
		var cls:Class;
		var object = _arg1;
		var className:String = getQualifiedClassName(object);
		for each (m in moduleList) {
			info = (m as ModuleInfo);
			if (!info.ready){
			} else {
				domain = info.applicationDomain;
				try {
					cls = Class(domain.getDefinition(className));
					if ((object is cls)){
						return (info.factory);
					};
				} catch(error:Error) {
				};
			};
		};
		return (null);
	}

}
class ModuleInfo extends EventDispatcher {

	private var _error:Boolean;// = false
	private var loader:Loader;
	private var factoryInfo:FactoryInfo;
	private var limbo:Dictionary;
	private var _loaded:Boolean;// = false
	private var _ready:Boolean;// = false
	private var numReferences:int;// = 0
	private var _url:String;
	private var _setup:Boolean;// = false

	private function ModuleInfo(_arg1:String){
		_url = _arg1;
	}
	private function clearLoader():void{
		if (loader){
			if (loader.contentLoaderInfo){
				loader.contentLoaderInfo.removeEventListener(Event.INIT, initHandler);
				loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, completeHandler);
				loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, progressHandler);
				loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, errorHandler);
				loader.contentLoaderInfo.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, errorHandler);
			};
			try {
				if (loader.content){
					loader.content.removeEventListener("ready", readyHandler);
					loader.content.removeEventListener("error", moduleErrorHandler);
				};
			} catch(error:Error) {
			};
			if (_loaded){
				try {
					loader.close();
				} catch(error:Error) {
				};
			};
			try {
				loader.unload();
			} catch(error:Error) {
			};
			loader = null;
		};
	}
	public function get size():int{
		return ((((!(limbo)) && (factoryInfo))) ? factoryInfo.bytesTotal : 0);
	}
	public function get loaded():Boolean{
		return ((limbo) ? false : _loaded);
	}
	public function release():void{
		if (((_ready) && (!(limbo)))){
			limbo = new Dictionary(true);
			limbo[factoryInfo] = 1;
			factoryInfo = null;
		} else {
			unload();
		};
	}
	public function get error():Boolean{
		return ((limbo) ? false : _error);
	}
	public function get factory():IFlexModuleFactory{
		return ((((!(limbo)) && (factoryInfo))) ? factoryInfo.factory : null);
	}
	public function completeHandler(_arg1:Event):void{
		var _local2:ModuleEvent = new ModuleEvent(ModuleEvent.PROGRESS, _arg1.bubbles, _arg1.cancelable);
		_local2.bytesLoaded = loader.contentLoaderInfo.bytesLoaded;
		_local2.bytesTotal = loader.contentLoaderInfo.bytesTotal;
		dispatchEvent(_local2);
	}
	public function publish(_arg1:IFlexModuleFactory):void{
		if (factoryInfo){
			return;
		};
		if (_url.indexOf("published://") != 0){
			return;
		};
		factoryInfo = new FactoryInfo();
		factoryInfo.factory = _arg1;
		_loaded = true;
		_setup = true;
		_ready = true;
		_error = false;
		dispatchEvent(new ModuleEvent(ModuleEvent.SETUP));
		dispatchEvent(new ModuleEvent(ModuleEvent.PROGRESS));
		dispatchEvent(new ModuleEvent(ModuleEvent.READY));
	}
	public function initHandler(_arg1:Event):void{
		var moduleEvent:ModuleEvent;
		var event = _arg1;
		factoryInfo = new FactoryInfo();
		try {
			factoryInfo.factory = (loader.content as IFlexModuleFactory);
		} catch(error:Error) {
		};
		if (!factoryInfo.factory){
			moduleEvent = new ModuleEvent(ModuleEvent.ERROR, event.bubbles, event.cancelable);
			moduleEvent.bytesLoaded = 0;
			moduleEvent.bytesTotal = 0;
			moduleEvent.errorText = "SWF is not a loadable module";
			dispatchEvent(moduleEvent);
			return;
		};
		loader.content.addEventListener("ready", readyHandler);
		loader.content.addEventListener("error", moduleErrorHandler);
		try {
			factoryInfo.applicationDomain = loader.contentLoaderInfo.applicationDomain;
		} catch(error:Error) {
		};
		_setup = true;
		dispatchEvent(new ModuleEvent(ModuleEvent.SETUP));
	}
	public function resurrect():void{
		var _local1:Object;
		if (((!(factoryInfo)) && (limbo))){
			for (_local1 in limbo) {
				factoryInfo = (_local1 as FactoryInfo);
				break;
			};
			limbo = null;
		};
		if (!factoryInfo){
			if (_loaded){
				dispatchEvent(new ModuleEvent(ModuleEvent.UNLOAD));
			};
			loader = null;
			_loaded = false;
			_setup = false;
			_ready = false;
			_error = false;
		};
	}
	public function errorHandler(_arg1:ErrorEvent):void{
		_error = true;
		var _local2:ModuleEvent = new ModuleEvent(ModuleEvent.ERROR, _arg1.bubbles, _arg1.cancelable);
		_local2.bytesLoaded = 0;
		_local2.bytesTotal = 0;
		_local2.errorText = _arg1.text;
		dispatchEvent(_local2);
	}
	public function get ready():Boolean{
		return ((limbo) ? false : _ready);
	}
	private function loadBytes(_arg1:ApplicationDomain, _arg2:ByteArray):void{
		var _local3:LoaderContext = new LoaderContext();
		_local3.applicationDomain = (_arg1) ? _arg1 : new ApplicationDomain(ApplicationDomain.currentDomain);
		if (("allowLoadBytesCodeExecution" in _local3)){
			_local3["allowLoadBytesCodeExecution"] = true;
		};
		loader = new Loader();
		loader.contentLoaderInfo.addEventListener(Event.INIT, initHandler);
		loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
		loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
		loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, errorHandler);
		loader.loadBytes(_arg2, _local3);
	}
	public function removeReference():void{
		numReferences--;
		if (numReferences == 0){
			release();
		};
	}
	public function addReference():void{
		numReferences++;
	}
	public function progressHandler(_arg1:ProgressEvent):void{
		var _local2:ModuleEvent = new ModuleEvent(ModuleEvent.PROGRESS, _arg1.bubbles, _arg1.cancelable);
		_local2.bytesLoaded = _arg1.bytesLoaded;
		_local2.bytesTotal = _arg1.bytesTotal;
		dispatchEvent(_local2);
	}
	public function load(_arg1:ApplicationDomain=null, _arg2:SecurityDomain=null, _arg3:ByteArray=null):void{
		if (_loaded){
			return;
		};
		_loaded = true;
		limbo = null;
		if (_arg3){
			loadBytes(_arg1, _arg3);
			return;
		};
		if (_url.indexOf("published://") == 0){
			return;
		};
		var _local4:URLRequest = new URLRequest(_url);
		var _local5:LoaderContext = new LoaderContext();
		_local5.applicationDomain = (_arg1) ? _arg1 : new ApplicationDomain(ApplicationDomain.currentDomain);
		_local5.securityDomain = _arg2;
		if ((((_arg2 == null)) && ((Security.sandboxType == Security.REMOTE)))){
			_local5.securityDomain = SecurityDomain.currentDomain;
		};
		loader = new Loader();
		loader.contentLoaderInfo.addEventListener(Event.INIT, initHandler);
		loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
		loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler);
		loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
		loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, errorHandler);
		loader.load(_local4, _local5);
	}
	public function get url():String{
		return (_url);
	}
	public function get applicationDomain():ApplicationDomain{
		return ((((!(limbo)) && (factoryInfo))) ? factoryInfo.applicationDomain : null);
	}
	public function moduleErrorHandler(_arg1:Event):void{
		var _local2:ModuleEvent;
		_ready = true;
		factoryInfo.bytesTotal = loader.contentLoaderInfo.bytesTotal;
		clearLoader();
		if ((_arg1 is ModuleEvent)){
			_local2 = ModuleEvent(_arg1);
		} else {
			_local2 = new ModuleEvent(ModuleEvent.ERROR);
		};
		dispatchEvent(_local2);
	}
	public function readyHandler(_arg1:Event):void{
		_ready = true;
		factoryInfo.bytesTotal = loader.contentLoaderInfo.bytesTotal;
		var _local2:ModuleEvent = new ModuleEvent(ModuleEvent.READY);
		_local2.bytesLoaded = loader.contentLoaderInfo.bytesLoaded;
		_local2.bytesTotal = loader.contentLoaderInfo.bytesTotal;
		clearLoader();
		dispatchEvent(_local2);
	}
	public function get setup():Boolean{
		return ((limbo) ? false : _setup);
	}
	public function unload():void{
		clearLoader();
		if (_loaded){
			dispatchEvent(new ModuleEvent(ModuleEvent.UNLOAD));
		};
		limbo = null;
		factoryInfo = null;
		_loaded = false;
		_setup = false;
		_ready = false;
		_error = false;
	}

}
class FactoryInfo {

	public var bytesTotal:int;// = 0
	public var factory:IFlexModuleFactory;
	public var applicationDomain:ApplicationDomain;

	private function FactoryInfo(){
	}
}

****************

//ModuleManagerGlobals (mx.modules.ModuleManagerGlobals)
package mx.modules {

	public class ModuleManagerGlobals {

		public static var managerSingleton:Object = null;

	}
}//package mx.modules 

****************

//DownloadProgressBar (mx.preloaders.DownloadProgressBar)
package mx.preloaders {
	import flash.utils.*;
	import flash.display.*;
	import flash.geom.*;
	import mx.core.*;
	import flash.text.*;
	import flash.events.*;
	import mx.events.*;
	import flash.system.*;
	import flash.net.*;
	import mx.graphics.*;

	public class DownloadProgressBar extends Sprite implements IPreloaderDisplay {

		protected var MINIMUM_DISPLAY_TIME:uint;// = 0
		private var _barFrameRect:RoundedRectangle;
		private var _stageHeight:Number;// = 375
		private var _stageWidth:Number;// = 500
		private var _percentRect:Rectangle;
		private var _percentObj:TextField;
		private var _downloadingLabel:String;// = "Loading"
		private var _showProgressBar:Boolean;// = true
		private var _yOffset:Number;// = 20
		private var _initProgressCount:uint;// = 0
		private var _barSprite:Sprite;
		private var _visible:Boolean;// = false
		private var _barRect:RoundedRectangle;
		private var _showingDisplay:Boolean;// = false
		private var _backgroundSize:String;// = ""
		private var _initProgressTotal:uint;// = 12
		private var _startedInit:Boolean;// = false
		private var _showLabel:Boolean;// = true
		private var _value:Number;// = 0
		private var _labelRect:Rectangle;
		private var _backgroundImage:Object;
		private var _backgroundAlpha:Number;// = 1
		private var _backgroundColor:uint;
		private var _startedLoading:Boolean;// = false
		private var _showPercentage:Boolean;// = false
		private var _barFrameSprite:Sprite;
		protected var DOWNLOAD_PERCENTAGE:uint;// = 60
		private var _displayStartCount:uint;// = 0
		private var _labelObj:TextField;
		private var _borderRect:RoundedRectangle;
		private var _maximum:Number;// = 0
		private var _displayTime:int;
		private var _label:String;// = ""
		private var _preloader:Sprite;
		private var _xOffset:Number;// = 20
		private var _startTime:int;

		mx_internal static const VERSION:String = "3.5.0.12683";

		private static var _initializingLabel:String = "Initializing";

		public function DownloadProgressBar(){
			_labelRect = labelRect;
			_percentRect = percentRect;
			_borderRect = borderRect;
			_barFrameRect = barFrameRect;
			_barRect = barRect;
			super();
		}
		protected function getPercentLoaded(_arg1:Number, _arg2:Number):Number{
			var _local3:Number;
			if ((((((((_arg1 == 0)) || ((_arg2 == 0)))) || (isNaN(_arg2)))) || (isNaN(_arg1)))){
				return (0);
			};
			_local3 = ((100 * _arg1) / _arg2);
			if (((isNaN(_local3)) || ((_local3 <= 0)))){
				return (0);
			};
			if (_local3 > 99){
				return (99);
			};
			return (Math.round(_local3));
		}
		protected function get labelFormat():TextFormat{
			var _local1:TextFormat = new TextFormat();
			_local1.color = 0x333333;
			_local1.font = "Verdana";
			_local1.size = 10;
			return (_local1);
		}
		private function calcScale():void{
			var _local1:Number;
			if ((((stageWidth < 160)) || ((stageHeight < 120)))){
				scaleX = 1;
				scaleY = 1;
			} else {
				if ((((stageWidth < 240)) || ((stageHeight < 150)))){
					createChildren();
					_local1 = Math.min((stageWidth / 240), (stageHeight / 150));
					scaleX = _local1;
					scaleY = _local1;
				} else {
					createChildren();
				};
			};
		}
		protected function get percentRect():Rectangle{
			return (new Rectangle(108, 4, 34, 16));
		}
		protected function set showLabel(_arg1:Boolean):void{
			_showLabel = _arg1;
			draw();
		}
		private function calcBackgroundSize():Number{
			var _local2:int;
			var _local1:Number = NaN;
			if (backgroundSize){
				_local2 = backgroundSize.indexOf("%");
				if (_local2 != -1){
					_local1 = Number(backgroundSize.substr(0, _local2));
				};
			};
			return (_local1);
		}
		private function show():void{
			_showingDisplay = true;
			calcScale();
			draw();
			_displayTime = getTimer();
		}
		private function loadBackgroundImage(_arg1:Object):void{
			var cls:Class;
			var newStyleObj:DisplayObject;
			var loader:Loader;
			var loaderContext:LoaderContext;
			var classOrString = _arg1;
			if (((classOrString) && ((classOrString as Class)))){
				cls = Class(classOrString);
				initBackgroundImage(new (cls));
			} else {
				if (((classOrString) && ((classOrString is String)))){
					try {
						cls = Class(getDefinitionByName(String(classOrString)));
					} catch(e:Error) {
					};
					if (cls){
						newStyleObj = new (cls);
						initBackgroundImage(newStyleObj);
					} else {
						loader = new Loader();
						loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loader_completeHandler);
						loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loader_ioErrorHandler);
						loaderContext = new LoaderContext();
						loaderContext.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain);
						loader.load(new URLRequest(String(classOrString)), loaderContext);
					};
				};
			};
		}
		protected function set showPercentage(_arg1:Boolean):void{
			_showPercentage = _arg1;
			draw();
		}
		protected function get barFrameRect():RoundedRectangle{
			return (new RoundedRectangle(14, 40, 154, 4));
		}
		private function loader_ioErrorHandler(_arg1:IOErrorEvent):void{
		}
		protected function rslErrorHandler(_arg1:RSLEvent):void{
			_preloader.removeEventListener(ProgressEvent.PROGRESS, progressHandler);
			_preloader.removeEventListener(Event.COMPLETE, completeHandler);
			_preloader.removeEventListener(RSLEvent.RSL_PROGRESS, rslProgressHandler);
			_preloader.removeEventListener(RSLEvent.RSL_COMPLETE, rslCompleteHandler);
			_preloader.removeEventListener(RSLEvent.RSL_ERROR, rslErrorHandler);
			_preloader.removeEventListener(FlexEvent.INIT_PROGRESS, initProgressHandler);
			_preloader.removeEventListener(FlexEvent.INIT_COMPLETE, initCompleteHandler);
			if (!_showingDisplay){
				show();
				_showingDisplay = true;
			};
			label = ((("RSL Error " + (_arg1.rslIndex + 1)) + " of ") + _arg1.rslTotal);
			var _local2:ErrorField = new ErrorField(this);
			_local2.show(_arg1.errorText);
		}
		protected function rslCompleteHandler(_arg1:RSLEvent):void{
			label = ((("Loaded library " + _arg1.rslIndex) + " of ") + _arg1.rslTotal);
		}
		protected function get borderRect():RoundedRectangle{
			return (new RoundedRectangle(0, 0, 182, 60, 4));
		}
		protected function showDisplayForDownloading(_arg1:int, _arg2:ProgressEvent):Boolean{
			return ((((_arg1 > 700)) && ((_arg2.bytesLoaded < (_arg2.bytesTotal / 2)))));
		}
		protected function createChildren():void{
			var _local2:TextField;
			var _local3:TextField;
			var _local1:Graphics = graphics;
			if (backgroundColor != 4294967295){
				_local1.beginFill(backgroundColor, backgroundAlpha);
				_local1.drawRect(0, 0, stageWidth, stageHeight);
			};
			if (backgroundImage != null){
				loadBackgroundImage(backgroundImage);
			};
			_barFrameSprite = new Sprite();
			_barSprite = new Sprite();
			addChild(_barFrameSprite);
			addChild(_barSprite);
			_local1.beginFill(0xCCCCCC, 0.4);
			_local1.drawRoundRect(calcX(_borderRect.x), calcY(_borderRect.y), _borderRect.width, _borderRect.height, (_borderRect.cornerRadius * 2), (_borderRect.cornerRadius * 2));
			_local1.drawRoundRect(calcX((_borderRect.x + 1)), calcY((_borderRect.y + 1)), (_borderRect.width - 2), (_borderRect.height - 2), (_borderRect.cornerRadius - (1 * 2)), (_borderRect.cornerRadius - (1 * 2)));
			_local1.endFill();
			_local1.beginFill(0xCCCCCC, 0.4);
			_local1.drawRoundRect(calcX((_borderRect.x + 1)), calcY((_borderRect.y + 1)), (_borderRect.width - 2), (_borderRect.height - 2), (_borderRect.cornerRadius - (1 * 2)), (_borderRect.cornerRadius - (1 * 2)));
			_local1.endFill();
			var _local4:Graphics = _barFrameSprite.graphics;
			var _local5:Matrix = new Matrix();
			_local5.createGradientBox(_barFrameRect.width, _barFrameRect.height, (Math.PI / 2), calcX(_barFrameRect.x), calcY(_barFrameRect.y));
			_local4.beginGradientFill(GradientType.LINEAR, [6054502, 11909306], [1, 1], [0, 0xFF], _local5);
			_local4.drawRoundRect(calcX(_barFrameRect.x), calcY(_barFrameRect.y), _barFrameRect.width, _barFrameRect.height, (_barFrameRect.cornerRadius * 2), (_barFrameRect.cornerRadius * 2));
			_local4.drawRoundRect(calcX((_barFrameRect.x + 1)), calcY((_barFrameRect.y + 1)), (_barFrameRect.width - 2), (_barFrameRect.height - 2), (_barFrameRect.cornerRadius * 2), (_barFrameRect.cornerRadius * 2));
			_local4.endFill();
			_labelObj = new TextField();
			_labelObj.x = calcX(_labelRect.x);
			_labelObj.y = calcY(_labelRect.y);
			_labelObj.width = _labelRect.width;
			_labelObj.height = _labelRect.height;
			_labelObj.selectable = false;
			_labelObj.defaultTextFormat = labelFormat;
			addChild(_labelObj);
			_percentObj = new TextField();
			_percentObj.x = calcX(_percentRect.x);
			_percentObj.y = calcY(_percentRect.y);
			_percentObj.width = _percentRect.width;
			_percentObj.height = _percentRect.height;
			_percentObj.selectable = false;
			_percentObj.defaultTextFormat = percentFormat;
			addChild(_percentObj);
			var _local6:RectangularDropShadow = new RectangularDropShadow();
			_local6.color = 0;
			_local6.angle = 90;
			_local6.alpha = 0.6;
			_local6.distance = 2;
			_local6.tlRadius = (_local6.trRadius = (_local6.blRadius = (_local6.brRadius = _borderRect.cornerRadius)));
			_local6.drawShadow(_local1, calcX(_borderRect.x), calcY(_borderRect.y), _borderRect.width, _borderRect.height);
			_local1.lineStyle(1, 0xFFFFFF, 0.3);
			_local1.moveTo((calcX(_borderRect.x) + _borderRect.cornerRadius), calcY(_borderRect.y));
			_local1.lineTo(((calcX(_borderRect.x) - _borderRect.cornerRadius) + _borderRect.width), calcY(_borderRect.y));
		}
		private function draw():void{
			var _local1:Number;
			if (_startedLoading){
				if (!_startedInit){
					_local1 = Math.round(((getPercentLoaded(_value, _maximum) * DOWNLOAD_PERCENTAGE) / 100));
				} else {
					_local1 = Math.round((((getPercentLoaded(_value, _maximum) * (100 - DOWNLOAD_PERCENTAGE)) / 100) + DOWNLOAD_PERCENTAGE));
				};
			} else {
				_local1 = getPercentLoaded(_value, _maximum);
			};
			if (_labelObj){
				_labelObj.text = _label;
			};
			if (_percentObj){
				if (!_showPercentage){
					_percentObj.visible = false;
					_percentObj.text = "";
				} else {
					_percentObj.text = (String(_local1) + "%");
				};
			};
			if (((_barSprite) && (_barFrameSprite))){
				if (!_showProgressBar){
					_barSprite.visible = false;
					_barFrameSprite.visible = false;
				} else {
					drawProgressBar(_local1);
				};
			};
		}
		private function timerHandler(_arg1:Event=null):void{
			dispatchEvent(new Event(Event.COMPLETE));
		}
		private function hide():void{
		}
		public function get backgroundSize():String{
			return (_backgroundSize);
		}
		protected function center(_arg1:Number, _arg2:Number):void{
			_xOffset = Math.floor(((_arg1 - _borderRect.width) / 2));
			_yOffset = Math.floor(((_arg2 - _borderRect.height) / 2));
		}
		protected function progressHandler(_arg1:ProgressEvent):void{
			var _local2:uint = _arg1.bytesLoaded;
			var _local3:uint = _arg1.bytesTotal;
			var _local4:int = (getTimer() - _startTime);
			if (((_showingDisplay) || (showDisplayForDownloading(_local4, _arg1)))){
				if (!_startedLoading){
					show();
					label = downloadingLabel;
					_startedLoading = true;
				};
				setProgress(_arg1.bytesLoaded, _arg1.bytesTotal);
			};
		}
		protected function initProgressHandler(_arg1:Event):void{
			var _local3:Number;
			var _local2:int = (getTimer() - _startTime);
			_initProgressCount++;
			if (((!(_showingDisplay)) && (showDisplayForInit(_local2, _initProgressCount)))){
				_displayStartCount = _initProgressCount;
				show();
			} else {
				if (_showingDisplay){
					if (!_startedInit){
						_startedInit = true;
						label = initializingLabel;
					};
					_local3 = ((100 * _initProgressCount) / (_initProgressTotal - _displayStartCount));
					setProgress(_local3, 100);
				};
			};
		}
		protected function set downloadingLabel(_arg1:String):void{
			_downloadingLabel = _arg1;
		}
		public function get stageWidth():Number{
			return (_stageWidth);
		}
		protected function get showPercentage():Boolean{
			return (_showPercentage);
		}
		override public function get visible():Boolean{
			return (_visible);
		}
		public function set stageHeight(_arg1:Number):void{
			_stageHeight = _arg1;
		}
		public function initialize():void{
			_startTime = getTimer();
			center(stageWidth, stageHeight);
		}
		protected function rslProgressHandler(_arg1:RSLEvent):void{
		}
		protected function get barRect():RoundedRectangle{
			return (new RoundedRectangle(14, 39, 154, 6, 0));
		}
		protected function get percentFormat():TextFormat{
			var _local1:TextFormat = new TextFormat();
			_local1.align = "right";
			_local1.color = 0;
			_local1.font = "Verdana";
			_local1.size = 10;
			return (_local1);
		}
		public function set backgroundImage(_arg1:Object):void{
			_backgroundImage = _arg1;
		}
		private function calcX(_arg1:Number):Number{
			return ((_arg1 + _xOffset));
		}
		private function calcY(_arg1:Number):Number{
			return ((_arg1 + _yOffset));
		}
		public function set backgroundAlpha(_arg1:Number):void{
			_backgroundAlpha = _arg1;
		}
		private function initCompleteHandler(_arg1:Event):void{
			var _local3:Timer;
			var _local2:int = (getTimer() - _displayTime);
			if (((_showingDisplay) && ((_local2 < MINIMUM_DISPLAY_TIME)))){
				_local3 = new Timer((MINIMUM_DISPLAY_TIME - _local2), 1);
				_local3.addEventListener(TimerEvent.TIMER, timerHandler);
				_local3.start();
			} else {
				timerHandler();
			};
		}
		public function set backgroundColor(_arg1:uint):void{
			_backgroundColor = _arg1;
		}
		private function initBackgroundImage(_arg1:DisplayObject):void{
			var _local7:Number;
			var _local8:Number;
			var _local9:Number;
			addChildAt(_arg1, 0);
			var _local2:Number = _arg1.width;
			var _local3:Number = _arg1.height;
			var _local4:Number = calcBackgroundSize();
			if (isNaN(_local4)){
				_local7 = 1;
				_local8 = 1;
			} else {
				_local9 = (_local4 * 0.01);
				_local7 = ((_local9 * stageWidth) / _local2);
				_local8 = ((_local9 * stageHeight) / _local3);
			};
			_arg1.scaleX = _local7;
			_arg1.scaleY = _local8;
			var _local5:Number = Math.round((0.5 * (stageWidth - (_local2 * _local7))));
			var _local6:Number = Math.round((0.5 * (stageHeight - (_local3 * _local8))));
			_arg1.x = _local5;
			_arg1.y = _local6;
			if (!isNaN(backgroundAlpha)){
				_arg1.alpha = backgroundAlpha;
			};
		}
		public function set backgroundSize(_arg1:String):void{
			_backgroundSize = _arg1;
		}
		protected function showDisplayForInit(_arg1:int, _arg2:int):Boolean{
			return ((((_arg1 > 300)) && ((_arg2 == 2))));
		}
		protected function get downloadingLabel():String{
			return (_downloadingLabel);
		}
		private function loader_completeHandler(_arg1:Event):void{
			var _local2:DisplayObject = DisplayObject(LoaderInfo(_arg1.target).loader);
			initBackgroundImage(_local2);
		}
		protected function setProgress(_arg1:Number, _arg2:Number):void{
			if (((((((!(isNaN(_arg1))) && (!(isNaN(_arg2))))) && ((_arg1 >= 0)))) && ((_arg2 > 0)))){
				_value = Number(_arg1);
				_maximum = Number(_arg2);
				draw();
			};
		}
		public function get stageHeight():Number{
			return (_stageHeight);
		}
		public function get backgroundImage():Object{
			return (_backgroundImage);
		}
		public function get backgroundAlpha():Number{
			if (!isNaN(_backgroundAlpha)){
				return (_backgroundAlpha);
			};
			return (1);
		}
		private function drawProgressBar(_arg1:Number):void{
			var _local11:Number;
			var _local2:Graphics = _barSprite.graphics;
			_local2.clear();
			var _local3:Array = [0xFFFFFF, 0xFFFFFF];
			var _local4:Array = [0, 0xFF];
			var _local5:Matrix = new Matrix();
			var _local6:Number = ((_barRect.width * _arg1) / 100);
			var _local7:Number = (_local6 / 2);
			var _local8:Number = (_barRect.height - 4);
			var _local9:Number = calcX(_barRect.x);
			var _local10:Number = (calcY(_barRect.y) + 2);
			_local5.createGradientBox(_local7, _local8, 0, _local9, _local10);
			_local2.beginGradientFill(GradientType.LINEAR, _local3, [0.39, 0.85], _local4, _local5);
			_local2.drawRect(_local9, _local10, _local7, _local8);
			_local5.createGradientBox(_local7, _local8, 0, (_local9 + _local7), _local10);
			_local2.beginGradientFill(GradientType.LINEAR, _local3, [0.85, 1], _local4, _local5);
			_local2.drawRect((_local9 + _local7), _local10, _local7, _local8);
			_local7 = (_local6 / 3);
			_local8 = _barRect.height;
			_local10 = calcY(_barRect.y);
			_local11 = ((_local10 + _local8) - 1);
			_local5.createGradientBox(_local7, _local8, 0, _local9, _local10);
			_local2.beginGradientFill(GradientType.LINEAR, _local3, [0.05, 0.15], _local4, _local5);
			_local2.drawRect(_local9, _local10, _local7, 1);
			_local2.drawRect(_local9, _local11, _local7, 1);
			_local5.createGradientBox(_local7, _local8, 0, (_local9 + _local7), _local10);
			_local2.beginGradientFill(GradientType.LINEAR, _local3, [0.15, 0.25], _local4, _local5);
			_local2.drawRect((_local9 + _local7), _local10, _local7, 1);
			_local2.drawRect((_local9 + _local7), _local11, _local7, 1);
			_local5.createGradientBox(_local7, _local8, 0, (_local9 + (_local7 * 2)), _local10);
			_local2.beginGradientFill(GradientType.LINEAR, _local3, [0.25, 0.1], _local4, _local5);
			_local2.drawRect((_local9 + (_local7 * 2)), _local10, _local7, 1);
			_local2.drawRect((_local9 + (_local7 * 2)), _local11, _local7, 1);
			_local7 = (_local6 / 3);
			_local8 = _barRect.height;
			_local10 = (calcY(_barRect.y) + 1);
			_local11 = ((calcY(_barRect.y) + _local8) - 2);
			_local5.createGradientBox(_local7, _local8, 0, _local9, _local10);
			_local2.beginGradientFill(GradientType.LINEAR, _local3, [0.15, 0.3], _local4, _local5);
			_local2.drawRect(_local9, _local10, _local7, 1);
			_local2.drawRect(_local9, _local11, _local7, 1);
			_local5.createGradientBox(_local7, _local8, 0, (_local9 + _local7), _local10);
			_local2.beginGradientFill(GradientType.LINEAR, _local3, [0.3, 0.4], _local4, _local5);
			_local2.drawRect((_local9 + _local7), _local10, _local7, 1);
			_local2.drawRect((_local9 + _local7), _local11, _local7, 1);
			_local5.createGradientBox(_local7, _local8, 0, (_local9 + (_local7 * 2)), _local10);
			_local2.beginGradientFill(GradientType.LINEAR, _local3, [0.4, 0.25], _local4, _local5);
			_local2.drawRect((_local9 + (_local7 * 2)), _local10, _local7, 1);
			_local2.drawRect((_local9 + (_local7 * 2)), _local11, _local7, 1);
		}
		public function get backgroundColor():uint{
			return (_backgroundColor);
		}
		public function set stageWidth(_arg1:Number):void{
			_stageWidth = _arg1;
		}
		protected function completeHandler(_arg1:Event):void{
		}
		protected function set label(_arg1:String):void{
			if (!(_arg1 is Function)){
				_label = _arg1;
			};
			draw();
		}
		public function set preloader(_arg1:Sprite):void{
			_preloader = _arg1;
			_arg1.addEventListener(ProgressEvent.PROGRESS, progressHandler);
			_arg1.addEventListener(Event.COMPLETE, completeHandler);
			_arg1.addEventListener(RSLEvent.RSL_PROGRESS, rslProgressHandler);
			_arg1.addEventListener(RSLEvent.RSL_COMPLETE, rslCompleteHandler);
			_arg1.addEventListener(RSLEvent.RSL_ERROR, rslErrorHandler);
			_arg1.addEventListener(FlexEvent.INIT_PROGRESS, initProgressHandler);
			_arg1.addEventListener(FlexEvent.INIT_COMPLETE, initCompleteHandler);
		}
		protected function get label():String{
			return (_label);
		}
		protected function get labelRect():Rectangle{
			return (new Rectangle(14, 17, 100, 16));
		}
		override public function set visible(_arg1:Boolean):void{
			if (((!(_visible)) && (_arg1))){
				show();
			} else {
				if (((_visible) && (!(_arg1)))){
					hide();
				};
			};
			_visible = _arg1;
		}
		protected function get showLabel():Boolean{
			return (_showLabel);
		}

		public static function get initializingLabel():String{
			return (_initializingLabel);
		}
		public static function set initializingLabel(_arg1:String):void{
			_initializingLabel = _arg1;
		}

	}
}//package mx.preloaders 

import flash.display.*;
import flash.text.*;
import flash.system.*;

class ErrorField extends Sprite {

	private const TEXT_MARGIN_PX:int = 10;
	private const MAX_WIDTH_INCHES:int = 6;
	private const MIN_WIDTH_INCHES:int = 2;

	private var downloadProgressBar:DownloadProgressBar;

	private function ErrorField(_arg1:DownloadProgressBar){
		this.downloadProgressBar = _arg1;
	}
	protected function get labelFormat():TextFormat{
		var _local1:TextFormat = new TextFormat();
		_local1.color = 0;
		_local1.font = "Verdana";
		_local1.size = 10;
		return (_local1);
	}
	public function show(_arg1:String):void{
		if ((((_arg1 == null)) || ((_arg1.length == 0)))){
			return;
		};
		var _local2:Number = downloadProgressBar.stageWidth;
		var _local3:Number = downloadProgressBar.stageHeight;
		var _local4:TextField = new TextField();
		_local4.autoSize = TextFieldAutoSize.LEFT;
		_local4.multiline = true;
		_local4.wordWrap = true;
		_local4.background = true;
		_local4.defaultTextFormat = labelFormat;
		_local4.text = _arg1;
		_local4.width = Math.max((MIN_WIDTH_INCHES * Capabilities.screenDPI), (_local2 - (TEXT_MARGIN_PX * 2)));
		_local4.width = Math.min((MAX_WIDTH_INCHES * Capabilities.screenDPI), _local4.width);
		_local4.y = Math.max(0, ((_local3 - TEXT_MARGIN_PX) - _local4.height));
		_local4.x = ((_local2 - _local4.width) / 2);
		downloadProgressBar.parent.addChild(this);
		this.addChild(_local4);
	}

}

****************

//IPreloaderDisplay (mx.preloaders.IPreloaderDisplay)
package mx.preloaders {
	import flash.display.*;
	import flash.events.*;

	public interface IPreloaderDisplay extends IEventDispatcher {

		function set backgroundAlpha(_arg1:Number):void;
		function get stageHeight():Number;
		function get stageWidth():Number;
		function set backgroundColor(_arg1:uint):void;
		function set preloader(_arg1:Sprite):void;
		function get backgroundImage():Object;
		function get backgroundSize():String;
		function get backgroundAlpha():Number;
		function set stageHeight(_arg1:Number):void;
		function get backgroundColor():uint;
		function set stageWidth(_arg1:Number):void;
		function set backgroundImage(_arg1:Object):void;
		function set backgroundSize(_arg1:String):void;
		function initialize():void;

	}
}//package mx.preloaders 

****************

//Preloader (mx.preloaders.Preloader)
package mx.preloaders {
	import flash.utils.*;
	import flash.display.*;
	import mx.core.*;
	import flash.events.*;
	import mx.events.*;

	public class Preloader extends Sprite {

		private var app:IEventDispatcher;// = null
		private var showDisplay:Boolean;
		private var timer:Timer;
		private var rslDone:Boolean;// = false
		private var displayClass:IPreloaderDisplay;// = null
		private var rslListLoader:RSLListLoader;

		mx_internal static const VERSION:String = "3.5.0.12683";

		private function getByteValues():Object{
			var _local1:LoaderInfo = root.loaderInfo;
			var _local2:int = _local1.bytesLoaded;
			var _local3:int = _local1.bytesTotal;
			var _local4:int = (rslListLoader) ? rslListLoader.getItemCount() : 0;
			var _local5:int;
			while (_local5 < _local4) {
				_local2 = (_local2 + rslListLoader.getItem(_local5).loaded);
				_local3 = (_local3 + rslListLoader.getItem(_local5).total);
				_local5++;
			};
			return ({loaded:_local2, total:_local3});
		}
		private function appProgressHandler(_arg1:Event):void{
			dispatchEvent(new FlexEvent(FlexEvent.INIT_PROGRESS));
		}
		private function dispatchAppEndEvent(_arg1:Object=null):void{
			dispatchEvent(new FlexEvent(FlexEvent.INIT_COMPLETE));
			if (!showDisplay){
				displayClassCompleteHandler(null);
			};
		}
		private function ioErrorHandler(_arg1:IOErrorEvent):void{
		}
		private function appCreationCompleteHandler(_arg1:FlexEvent):void{
			dispatchAppEndEvent();
		}
		mx_internal function rslErrorHandler(_arg1:ErrorEvent):void{
			var _local2:int = rslListLoader.getIndex();
			var _local3:RSLItem = rslListLoader.getItem(_local2);
			var _local4:RSLEvent = new RSLEvent(RSLEvent.RSL_ERROR);
			_local4.bytesLoaded = 0;
			_local4.bytesTotal = 0;
			_local4.rslIndex = _local2;
			_local4.rslTotal = rslListLoader.getItemCount();
			_local4.url = _local3.urlRequest;
			_local4.errorText = decodeURI(_arg1.text);
			dispatchEvent(_local4);
		}
		public function initialize(_arg1:Boolean, _arg2:Class, _arg3:uint, _arg4:Number, _arg5:Object, _arg6:String, _arg7:Number, _arg8:Number, _arg9:Array=null, _arg10:Array=null, _arg11:Array=null, _arg12:Array=null):void{
			var _local13:int;
			var _local14:int;
			var _local15:RSLItem;
			var _local16:ResourceModuleRSLItem;
			if (((((!((_arg9 == null))) || (!((_arg10 == null))))) && (!((_arg11 == null))))){
				throw (new Error("RSLs may only be specified by using libs and sizes or rslList, not both."));
			};
			root.loaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
			if (((_arg9) && ((_arg9.length > 0)))){
				if (_arg11 == null){
					_arg11 = [];
				};
				_local13 = _arg9.length;
				_local14 = 0;
				while (_local14 < _local13) {
					_local15 = new RSLItem(_arg9[_local14]);
					_arg11.push(_local15);
					_local14++;
				};
			};
			if (((_arg12) && ((_arg12.length > 0)))){
				_local13 = _arg12.length;
				_local14 = 0;
				while (_local14 < _local13) {
					_local16 = new ResourceModuleRSLItem(_arg12[_local14]);
					_arg11.push(_local16);
					_local14++;
				};
			};
			rslListLoader = new RSLListLoader(_arg11);
			this.showDisplay = _arg1;
			timer = new Timer(10);
			timer.addEventListener(TimerEvent.TIMER, timerHandler);
			timer.start();
			if (_arg1){
				displayClass = new (_arg2);
				displayClass.addEventListener(Event.COMPLETE, displayClassCompleteHandler);
				addChild(DisplayObject(displayClass));
				displayClass.backgroundColor = _arg3;
				displayClass.backgroundAlpha = _arg4;
				displayClass.backgroundImage = _arg5;
				displayClass.backgroundSize = _arg6;
				displayClass.stageWidth = _arg7;
				displayClass.stageHeight = _arg8;
				displayClass.initialize();
				displayClass.preloader = this;
			};
			if (rslListLoader.getItemCount() > 0){
				rslListLoader.load(mx_internal::rslProgressHandler, mx_internal::rslCompleteHandler, mx_internal::rslErrorHandler, mx_internal::rslErrorHandler, mx_internal::rslErrorHandler);
			} else {
				rslDone = true;
			};
		}
		mx_internal function rslProgressHandler(_arg1:ProgressEvent):void{
			var _local2:int = rslListLoader.getIndex();
			var _local3:RSLItem = rslListLoader.getItem(_local2);
			var _local4:RSLEvent = new RSLEvent(RSLEvent.RSL_PROGRESS);
			_local4.bytesLoaded = _arg1.bytesLoaded;
			_local4.bytesTotal = _arg1.bytesTotal;
			_local4.rslIndex = _local2;
			_local4.rslTotal = rslListLoader.getItemCount();
			_local4.url = _local3.urlRequest;
			dispatchEvent(_local4);
		}
		public function registerApplication(_arg1:IEventDispatcher):void{
			_arg1.addEventListener("validatePropertiesComplete", appProgressHandler);
			_arg1.addEventListener("validateSizeComplete", appProgressHandler);
			_arg1.addEventListener("validateDisplayListComplete", appProgressHandler);
			_arg1.addEventListener(FlexEvent.CREATION_COMPLETE, appCreationCompleteHandler);
			this.app = _arg1;
		}
		mx_internal function rslCompleteHandler(_arg1:Event):void{
			var _local2:int = rslListLoader.getIndex();
			var _local3:RSLItem = rslListLoader.getItem(_local2);
			var _local4:RSLEvent = new RSLEvent(RSLEvent.RSL_COMPLETE);
			_local4.bytesLoaded = _local3.total;
			_local4.bytesTotal = _local3.total;
			_local4.loaderInfo = (_arg1.target as LoaderInfo);
			_local4.rslIndex = _local2;
			_local4.rslTotal = rslListLoader.getItemCount();
			_local4.url = _local3.urlRequest;
			dispatchEvent(_local4);
			rslDone = ((_local2 + 1) == _local4.rslTotal);
		}
		private function timerHandler(_arg1:TimerEvent):void{
			if (!root){
				return;
			};
			var _local2:Object = getByteValues();
			var _local3:int = _local2.loaded;
			var _local4:int = _local2.total;
			dispatchEvent(new ProgressEvent(ProgressEvent.PROGRESS, false, false, _local3, _local4));
			if (((rslDone) && ((((((((_local3 >= _local4)) && ((_local4 > 0)))) || ((((_local4 == 0)) && ((_local3 > 0)))))) || ((((((root is MovieClip)) && ((MovieClip(root).totalFrames > 2)))) && ((MovieClip(root).framesLoaded >= 2)))))))){
				timer.removeEventListener(TimerEvent.TIMER, timerHandler);
				timer.reset();
				dispatchEvent(new Event(Event.COMPLETE));
				dispatchEvent(new FlexEvent(FlexEvent.INIT_PROGRESS));
			};
		}
		private function displayClassCompleteHandler(_arg1:Event):void{
			if (displayClass){
				displayClass.removeEventListener(Event.COMPLETE, displayClassCompleteHandler);
			};
			if (root){
				root.loaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
			};
			if (app){
				app.removeEventListener("validatePropertiesComplete", appProgressHandler);
				app.removeEventListener("validateSizeComplete", appProgressHandler);
				app.removeEventListener("validateDisplayListComplete", appProgressHandler);
				app.removeEventListener(FlexEvent.CREATION_COMPLETE, appCreationCompleteHandler);
				app = null;
			};
			dispatchEvent(new FlexEvent(FlexEvent.PRELOADER_DONE));
		}

	}
}//package mx.preloaders 

****************

//IResourceBundle (mx.resources.IResourceBundle)
package mx.resources {

	public interface IResourceBundle {

		function get content():Object;
		function get locale():String;
		function get bundleName():String;

	}
}//package mx.resources 

****************

//IResourceManager (mx.resources.IResourceManager)
package mx.resources {
	import flash.events.*;
	import flash.system.*;

	public interface IResourceManager extends IEventDispatcher {

		function loadResourceModule(_arg1:String, _arg2:Boolean=true, _arg3:ApplicationDomain=null, _arg4:SecurityDomain=null):IEventDispatcher;
		function getBoolean(_arg1:String, _arg2:String, _arg3:String=null):Boolean;
		function getClass(_arg1:String, _arg2:String, _arg3:String=null):Class;
		function getLocales():Array;
		function removeResourceBundlesForLocale(_arg1:String):void;
		function getResourceBundle(_arg1:String, _arg2:String):IResourceBundle;
		function get localeChain():Array;
		function getInt(_arg1:String, _arg2:String, _arg3:String=null):int;
		function update():void;
		function set localeChain(_arg1:Array):void;
		function getUint(_arg1:String, _arg2:String, _arg3:String=null):uint;
		function addResourceBundle(_arg1:IResourceBundle):void;
		function getStringArray(_arg1:String, _arg2:String, _arg3:String=null):Array;
		function getBundleNamesForLocale(_arg1:String):Array;
		function removeResourceBundle(_arg1:String, _arg2:String):void;
		function getObject(_arg1:String, _arg2:String, _arg3:String=null);
		function getString(_arg1:String, _arg2:String, _arg3:Array=null, _arg4:String=null):String;
		function installCompiledResourceBundles(_arg1:ApplicationDomain, _arg2:Array, _arg3:Array):void;
		function unloadResourceModule(_arg1:String, _arg2:Boolean=true):void;
		function getPreferredLocaleChain():Array;
		function findResourceBundleWithResource(_arg1:String, _arg2:String):IResourceBundle;
		function initializeLocaleChain(_arg1:Array):void;
		function getNumber(_arg1:String, _arg2:String, _arg3:String=null):Number;

	}
}//package mx.resources 

****************

//IResourceModule (mx.resources.IResourceModule)
package mx.resources {

	public interface IResourceModule {

		function get resourceBundles():Array;

	}
}//package mx.resources 

****************

//LocaleSorter (mx.resources.LocaleSorter)
package mx.resources {
	import mx.core.*;

	public class LocaleSorter {

		mx_internal static const VERSION:String = "3.5.0.12683";

		private static function normalizeLocale(_arg1:String):String{
			return (_arg1.toLowerCase().replace(/-/g, "_"));
		}
		public static function sortLocalesByPreference(_arg1:Array, _arg2:Array, _arg3:String=null, _arg4:Boolean=false):Array{
			var result:Array;
			var hasLocale:Object;
			var i:int;
			var j:int;
			var k:int;
			var l:int;
			var locale:String;
			var plocale:LocaleID;
			var appLocales = _arg1;
			var systemPreferences = _arg2;
			var ultimateFallbackLocale = _arg3;
			var addAll = _arg4;
			var promote:Function = function (_arg1:String):void{
				if (typeof(hasLocale[_arg1]) != "undefined"){
					result.push(appLocales[hasLocale[_arg1]]);
					delete hasLocale[_arg1];
				};
			};
			result = [];
			hasLocale = {};
			var locales:Array = trimAndNormalize(appLocales);
			var preferenceLocales:Array = trimAndNormalize(systemPreferences);
			addUltimateFallbackLocale(preferenceLocales, ultimateFallbackLocale);
			j = 0;
			while (j < locales.length) {
				hasLocale[locales[j]] = j;
				j = (j + 1);
			};
			i = 0;
			l = preferenceLocales.length;
			while (i < l) {
				plocale = LocaleID.fromString(preferenceLocales[i]);
				promote(preferenceLocales[i]);
				promote(plocale.toString());
				while (plocale.transformToParent()) {
					promote(plocale.toString());
				};
				plocale = LocaleID.fromString(preferenceLocales[i]);
				j = 0;
				while (j < l) {
					locale = preferenceLocales[j];
					if (plocale.isSiblingOf(LocaleID.fromString(locale))){
						promote(locale);
					};
					j = (j + 1);
				};
				j = 0;
				k = locales.length;
				while (j < k) {
					locale = locales[j];
					if (plocale.isSiblingOf(LocaleID.fromString(locale))){
						promote(locale);
					};
					j = (j + 1);
				};
				i = (i + 1);
			};
			if (addAll){
				j = 0;
				k = locales.length;
				while (j < k) {
					promote(locales[j]);
					j = (j + 1);
				};
			};
			return (result);
		}
		private static function addUltimateFallbackLocale(_arg1:Array, _arg2:String):void{
			var _local3:String;
			if (((!((_arg2 == null))) && (!((_arg2 == ""))))){
				_local3 = normalizeLocale(_arg2);
				if (_arg1.indexOf(_local3) == -1){
					_arg1.push(_local3);
				};
			};
		}
		private static function trimAndNormalize(_arg1:Array):Array{
			var _local2:Array = [];
			var _local3:int;
			while (_local3 < _arg1.length) {
				_local2.push(normalizeLocale(_arg1[_local3]));
				_local3++;
			};
			return (_local2);
		}

	}
}//package mx.resources 

class LocaleID {

	private var privateLangs:Boolean;// = false
	private var script:String;// = ""
	private var variants:Array;
	private var privates:Array;
	private var extensions:Object;
	private var lang:String;// = ""
	private var region:String;// = ""
	private var extended_langs:Array;

	public static const STATE_PRIMARY_LANGUAGE:int = 0;
	public static const STATE_REGION:int = 3;
	public static const STATE_EXTENDED_LANGUAGES:int = 1;
	public static const STATE_EXTENSIONS:int = 5;
	public static const STATE_SCRIPT:int = 2;
	public static const STATE_VARIANTS:int = 4;
	public static const STATE_PRIVATES:int = 6;

	private function LocaleID(){
		extended_langs = [];
		variants = [];
		extensions = {};
		privates = [];
		super();
	}
	public function equals(_arg1:LocaleID):Boolean{
		return ((toString() == _arg1.toString()));
	}
	public function canonicalize():void{
		var _local1:String;
		for (_local1 in extensions) {
			if (extensions.hasOwnProperty(_local1)){
				if (extensions[_local1].length == 0){
					delete extensions[_local1];
				} else {
					extensions[_local1] = extensions[_local1].sort();
				};
			};
		};
		extended_langs = extended_langs.sort();
		variants = variants.sort();
		privates = privates.sort();
		if (script == ""){
			script = LocaleRegistry.getScriptByLang(lang);
		};
		if ((((script == "")) && (!((region == ""))))){
			script = LocaleRegistry.getScriptByLangAndRegion(lang, region);
		};
		if ((((region == "")) && (!((script == ""))))){
			region = LocaleRegistry.getDefaultRegionForLangAndScript(lang, script);
		};
	}
	public function toString():String{
		var _local2:String;
		var _local1:Array = [lang];
		appendElements(_local1, extended_langs);
		if (script != ""){
			_local1.push(script);
		};
		if (region != ""){
			_local1.push(region);
		};
		appendElements(_local1, variants);
		for (_local2 in extensions) {
			if (extensions.hasOwnProperty(_local2)){
				_local1.push(_local2);
				appendElements(_local1, extensions[_local2]);
			};
		};
		if (privates.length > 0){
			_local1.push("x");
			appendElements(_local1, privates);
		};
		return (_local1.join("_"));
	}
	public function isSiblingOf(_arg1:LocaleID):Boolean{
		return ((((lang == _arg1.lang)) && ((script == _arg1.script))));
	}
	public function transformToParent():Boolean{
		var _local2:String;
		var _local3:Array;
		var _local4:String;
		if (privates.length > 0){
			privates.splice((privates.length - 1), 1);
			return (true);
		};
		var _local1:String;
		for (_local2 in extensions) {
			if (extensions.hasOwnProperty(_local2)){
				_local1 = _local2;
			};
		};
		if (_local1){
			_local3 = extensions[_local1];
			if (_local3.length == 1){
				delete extensions[_local1];
				return (true);
			};
			_local3.splice((_local3.length - 1), 1);
			return (true);
		};
		if (variants.length > 0){
			variants.splice((variants.length - 1), 1);
			return (true);
		};
		if (script != ""){
			if (LocaleRegistry.getScriptByLang(lang) != ""){
				script = "";
				return (true);
			};
			if (region == ""){
				_local4 = LocaleRegistry.getDefaultRegionForLangAndScript(lang, script);
				if (_local4 != ""){
					region = _local4;
					script = "";
					return (true);
				};
			};
		};
		if (region != ""){
			if (!(((script == "")) && ((LocaleRegistry.getScriptByLang(lang) == "")))){
				region = "";
				return (true);
			};
		};
		if (extended_langs.length > 0){
			extended_langs.splice((extended_langs.length - 1), 1);
			return (true);
		};
		return (false);
	}

	private static function appendElements(_arg1:Array, _arg2:Array):void{
		var _local3:uint;
		var _local4:uint = _arg2.length;
		while (_local3 < _local4) {
			_arg1.push(_arg2[_local3]);
			_local3++;
		};
	}
	public static function fromString(_arg1:String):LocaleID{
		var _local5:Array;
		var _local8:String;
		var _local9:int;
		var _local10:String;
		var _local2:LocaleID = new (LocaleID);
		var _local3:int = STATE_PRIMARY_LANGUAGE;
		var _local4:Array = _arg1.replace(/-/g, "_").split("_");
		var _local6:int;
		var _local7:int = _local4.length;
		while (_local6 < _local7) {
			_local8 = _local4[_local6].toLowerCase();
			if (_local3 == STATE_PRIMARY_LANGUAGE){
				if (_local8 == "x"){
					_local2.privateLangs = true;
				} else {
					if (_local8 == "i"){
						_local2.lang = (_local2.lang + "i-");
					} else {
						_local2.lang = (_local2.lang + _local8);
						_local3 = STATE_EXTENDED_LANGUAGES;
					};
				};
			} else {
				_local9 = _local8.length;
				if (_local9 == 0){
				} else {
					_local10 = _local8.charAt(0).toLowerCase();
					if ((((_local3 <= STATE_EXTENDED_LANGUAGES)) && ((_local9 == 3)))){
						_local2.extended_langs.push(_local8);
						if (_local2.extended_langs.length == 3){
							_local3 = STATE_SCRIPT;
						};
					} else {
						if ((((_local3 <= STATE_SCRIPT)) && ((_local9 == 4)))){
							_local2.script = _local8;
							_local3 = STATE_REGION;
						} else {
							if ((((_local3 <= STATE_REGION)) && ((((_local9 == 2)) || ((_local9 == 3)))))){
								_local2.region = _local8;
								_local3 = STATE_VARIANTS;
							} else {
								if ((((_local3 <= STATE_VARIANTS)) && ((((((((_local10 >= "a")) && ((_local10 <= "z")))) && ((_local9 >= 5)))) || ((((((_local10 >= "0")) && ((_local10 <= "9")))) && ((_local9 >= 4)))))))){
									_local2.variants.push(_local8);
									_local3 = STATE_VARIANTS;
								} else {
									if ((((_local3 < STATE_PRIVATES)) && ((_local9 == 1)))){
										if (_local8 == "x"){
											_local3 = STATE_PRIVATES;
											_local5 = _local2.privates;
										} else {
											_local3 = STATE_EXTENSIONS;
											_local5 = ((_local2.extensions[_local8]) || ([]));
											_local2.extensions[_local8] = _local5;
										};
									} else {
										if (_local3 >= STATE_EXTENSIONS){
											_local5.push(_local8);
										};
									};
								};
							};
						};
					};
				};
			};
			_local6++;
		};
		_local2.canonicalize();
		return (_local2);
	}

}
class LocaleRegistry {

	private static const SCRIPT_ID_BY_LANG:Object = {ab:5, af:1, am:2, ar:3, as:4, ay:1, be:5, bg:5, bn:4, bs:1, ca:1, ch:1, cs:1, cy:1, da:1, de:1, dv:6, dz:7, el:8, en:1, eo:1, es:1, et:1, eu:1, fa:3, fi:1, fj:1, fo:1, fr:1, frr:1, fy:1, ga:1, gl:1, gn:1, gu:9, gv:1, he:10, hi:11, hr:1, ht:1, hu:1, hy:12, id:1, in:1, is:1, it:1, iw:10, ja:13, ka:14, kk:5, kl:1, km:15, kn:16, ko:17, la:1, lb:1, ln:1, lo:18, lt:1, lv:1, mg:1, mh:1, mk:5, ml:19, mo:1, mr:11, ms:1, mt:1, my:20, na:1, nb:1, nd:1, ne:11, nl:1, nn:1, no:1, nr:1, ny:1, om:1, or:21, pa:22, pl:1, ps:3, pt:1, qu:1, rn:1, ro:1, ru:5, rw:1, sg:1, si:23, sk:1, sl:1, sm:1, so:1, sq:1, ss:1, st:1, sv:1, sw:1, ta:24, te:25, th:26, ti:2, tl:1, tn:1, to:1, tr:1, ts:1, uk:5, ur:3, ve:1, vi:1, wo:1, xh:1, yi:10, zu:1, cpe:1, dsb:1, frs:1, gsw:1, hsb:1, kok:11, mai:11, men:1, nds:1, niu:1, nqo:27, nso:1, son:1, tem:1, tkl:1, tmh:1, tpi:1, tvl:1, zbl:28};
	private static const SCRIPTS:Array = ["", "latn", "ethi", "arab", "beng", "cyrl", "thaa", "tibt", "grek", "gujr", "hebr", "deva", "armn", "jpan", "geor", "khmr", "knda", "kore", "laoo", "mlym", "mymr", "orya", "guru", "sinh", "taml", "telu", "thai", "nkoo", "blis", "hans", "hant", "mong", "syrc"];
	private static const DEFAULT_REGION_BY_LANG_AND_SCRIPT:Object = {bg:{5:"bg"}, ca:{1:"es"}, zh:{30:"tw", 29:"cn"}, cs:{1:"cz"}, da:{1:"dk"}, de:{1:"de"}, el:{8:"gr"}, en:{1:"us"}, es:{1:"es"}, fi:{1:"fi"}, fr:{1:"fr"}, he:{10:"il"}, hu:{1:"hu"}, is:{1:"is"}, it:{1:"it"}, ja:{13:"jp"}, ko:{17:"kr"}, nl:{1:"nl"}, nb:{1:"no"}, pl:{1:"pl"}, pt:{1:"br"}, ro:{1:"ro"}, ru:{5:"ru"}, hr:{1:"hr"}, sk:{1:"sk"}, sq:{1:"al"}, sv:{1:"se"}, th:{26:"th"}, tr:{1:"tr"}, ur:{3:"pk"}, id:{1:"id"}, uk:{5:"ua"}, be:{5:"by"}, sl:{1:"si"}, et:{1:"ee"}, lv:{1:"lv"}, lt:{1:"lt"}, fa:{3:"ir"}, vi:{1:"vn"}, hy:{12:"am"}, az:{1:"az", 5:"az"}, eu:{1:"es"}, mk:{5:"mk"}, af:{1:"za"}, ka:{14:"ge"}, fo:{1:"fo"}, hi:{11:"in"}, ms:{1:"my"}, kk:{5:"kz"}, ky:{5:"kg"}, sw:{1:"ke"}, uz:{1:"uz", 5:"uz"}, tt:{5:"ru"}, pa:{22:"in"}, gu:{9:"in"}, ta:{24:"in"}, te:{25:"in"}, kn:{16:"in"}, mr:{11:"in"}, sa:{11:"in"}, mn:{5:"mn"}, gl:{1:"es"}, kok:{11:"in"}, syr:{32:"sy"}, dv:{6:"mv"}, nn:{1:"no"}, sr:{1:"cs", 5:"cs"}, cy:{1:"gb"}, mi:{1:"nz"}, mt:{1:"mt"}, quz:{1:"bo"}, tn:{1:"za"}, xh:{1:"za"}, zu:{1:"za"}, nso:{1:"za"}, se:{1:"no"}, smj:{1:"no"}, sma:{1:"no"}, sms:{1:"fi"}, smn:{1:"fi"}, bs:{1:"ba"}};
	private static const SCRIPT_BY_ID:Object = {latn:1, ethi:2, arab:3, beng:4, cyrl:5, thaa:6, tibt:7, grek:8, gujr:9, hebr:10, deva:11, armn:12, jpan:13, geor:14, khmr:15, knda:16, kore:17, laoo:18, mlym:19, mymr:20, orya:21, guru:22, sinh:23, taml:24, telu:25, thai:26, nkoo:27, blis:28, hans:29, hant:30, mong:31, syrc:32};
	private static const SCRIPT_ID_BY_LANG_AND_REGION:Object = {zh:{cn:29, sg:29, tw:30, hk:30, mo:30}, mn:{cn:31, sg:5}, pa:{pk:3, in:22}, ha:{gh:1, ne:1}};

	private function LocaleRegistry(){
	}
	public static function getScriptByLangAndRegion(_arg1:String, _arg2:String):String{
		var _local3:Object = SCRIPT_ID_BY_LANG_AND_REGION[_arg1];
		if (_local3 == null){
			return ("");
		};
		var _local4:Object = _local3[_arg2];
		if (_local4 == null){
			return ("");
		};
		return (SCRIPTS[int(_local4)].toLowerCase());
	}
	public static function getScriptByLang(_arg1:String):String{
		var _local2:Object = SCRIPT_ID_BY_LANG[_arg1];
		if (_local2 == null){
			return ("");
		};
		return (SCRIPTS[int(_local2)].toLowerCase());
	}
	public static function getDefaultRegionForLangAndScript(_arg1:String, _arg2:String):String{
		var _local3:Object = DEFAULT_REGION_BY_LANG_AND_SCRIPT[_arg1];
		var _local4:Object = SCRIPT_BY_ID[_arg2];
		if ((((_local3 == null)) || ((_local4 == null)))){
			return ("");
		};
		return (((_local3[int(_local4)]) || ("")));
	}

}

****************

//ResourceBundle (mx.resources.ResourceBundle)
package mx.resources {
	import mx.core.*;
	import flash.system.*;
	import mx.utils.*;

	public class ResourceBundle implements IResourceBundle {

		mx_internal var _locale:String;
		private var _content:Object;
		mx_internal var _bundleName:String;

		mx_internal static const VERSION:String = "3.5.0.12683";

		mx_internal static var backupApplicationDomain:ApplicationDomain;
		mx_internal static var locale:String;

		public function ResourceBundle(_arg1:String=null, _arg2:String=null){
			_content = {};
			super();
			mx_internal::_locale = _arg1;
			mx_internal::_bundleName = _arg2;
			_content = getContent();
		}
		protected function getContent():Object{
			return ({});
		}
		public function getString(_arg1:String):String{
			return (String(_getObject(_arg1)));
		}
		public function get content():Object{
			return (_content);
		}
		public function getBoolean(_arg1:String, _arg2:Boolean=true):Boolean{
			var _local3:String = _getObject(_arg1).toLowerCase();
			if (_local3 == "false"){
				return (false);
			};
			if (_local3 == "true"){
				return (true);
			};
			return (_arg2);
		}
		public function getStringArray(_arg1:String):Array{
			var _local2:Array = _getObject(_arg1).split(",");
			var _local3:int = _local2.length;
			var _local4:int;
			while (_local4 < _local3) {
				_local2[_local4] = StringUtil.trim(_local2[_local4]);
				_local4++;
			};
			return (_local2);
		}
		public function getObject(_arg1:String):Object{
			return (_getObject(_arg1));
		}
		private function _getObject(_arg1:String):Object{
			var _local2:Object = content[_arg1];
			if (!_local2){
				throw (new Error(((("Key " + _arg1) + " was not found in resource bundle ") + bundleName)));
			};
			return (_local2);
		}
		public function get locale():String{
			return (mx_internal::_locale);
		}
		public function get bundleName():String{
			return (mx_internal::_bundleName);
		}
		public function getNumber(_arg1:String):Number{
			return (Number(_getObject(_arg1)));
		}

		private static function getClassByName(_arg1:String, _arg2:ApplicationDomain):Class{
			var _local3:Class;
			if (_arg2.hasDefinition(_arg1)){
				_local3 = (_arg2.getDefinition(_arg1) as Class);
			};
			return (_local3);
		}
		public static function getResourceBundle(_arg1:String, _arg2:ApplicationDomain=null):ResourceBundle{
			var _local3:String;
			var _local4:Class;
			var _local5:Object;
			var _local6:ResourceBundle;
			if (!_arg2){
				_arg2 = ApplicationDomain.currentDomain;
			};
			_local3 = (((mx_internal::locale + "$") + _arg1) + "_properties");
			_local4 = getClassByName(_local3, _arg2);
			if (!_local4){
				_local3 = (_arg1 + "_properties");
				_local4 = getClassByName(_local3, _arg2);
			};
			if (!_local4){
				_local3 = _arg1;
				_local4 = getClassByName(_local3, _arg2);
			};
			if (((!(_local4)) && (mx_internal::backupApplicationDomain))){
				_local3 = (_arg1 + "_properties");
				_local4 = getClassByName(_local3, mx_internal::backupApplicationDomain);
				if (!_local4){
					_local3 = _arg1;
					_local4 = getClassByName(_local3, mx_internal::backupApplicationDomain);
				};
			};
			if (_local4){
				_local5 = new (_local4);
				if ((_local5 is ResourceBundle)){
					_local6 = ResourceBundle(_local5);
					return (_local6);
				};
			};
			throw (new Error(("Could not find resource bundle " + _arg1)));
		}

	}
}//package mx.resources 

****************

//ResourceManager (mx.resources.ResourceManager)
package mx.resources {
	import mx.core.*;

	public class ResourceManager {

		mx_internal static const VERSION:String = "3.5.0.12683";

		private static var implClassDependency:ResourceManagerImpl;
		private static var instance:IResourceManager;

		public static function getInstance():IResourceManager{
			if (!instance){
				try {
					instance = IResourceManager(Singleton.getInstance("mx.resources::IResourceManager"));
				} catch(e:Error) {
					instance = new ResourceManagerImpl();
				};
			};
			return (instance);
		}

	}
}//package mx.resources 

****************

//ResourceManagerImpl (mx.resources.ResourceManagerImpl)
package mx.resources {
	import flash.utils.*;
	import mx.core.*;
	import flash.events.*;
	import mx.events.*;
	import flash.system.*;
	import mx.modules.*;
	import mx.utils.*;

	public class ResourceManagerImpl extends EventDispatcher implements IResourceManager {

		private var resourceModules:Object;
		private var initializedForNonFrameworkApp:Boolean;// = false
		private var localeMap:Object;
		private var _localeChain:Array;

		mx_internal static const VERSION:String = "3.5.0.12683";

		private static var instance:IResourceManager;

		public function ResourceManagerImpl(){
			localeMap = {};
			resourceModules = {};
			super();
		}
		public function get localeChain():Array{
			return (_localeChain);
		}
		public function set localeChain(_arg1:Array):void{
			_localeChain = _arg1;
			update();
		}
		public function getStringArray(_arg1:String, _arg2:String, _arg3:String=null):Array{
			var _local4:IResourceBundle = findBundle(_arg1, _arg2, _arg3);
			if (!_local4){
				return (null);
			};
			var _local5:* = _local4.content[_arg2];
			var _local6:Array = String(_local5).split(",");
			var _local7:int = _local6.length;
			var _local8:int;
			while (_local8 < _local7) {
				_local6[_local8] = StringUtil.trim(_local6[_local8]);
				_local8++;
			};
			return (_local6);
		}
		mx_internal function installCompiledResourceBundle(_arg1:ApplicationDomain, _arg2:String, _arg3:String):void{
			var _local4:String;
			var _local5:String = _arg3;
			var _local6:int = _arg3.indexOf(":");
			if (_local6 != -1){
				_local4 = _arg3.substring(0, _local6);
				_local5 = _arg3.substring((_local6 + 1));
			};
			if (getResourceBundle(_arg2, _arg3)){
				return;
			};
			var _local7 = (((_arg2 + "$") + _local5) + "_properties");
			if (_local4 != null){
				_local7 = ((_local4 + ".") + _local7);
			};
			var _local8:Class;
			if (_arg1.hasDefinition(_local7)){
				_local8 = Class(_arg1.getDefinition(_local7));
			};
			if (!_local8){
				_local7 = _arg3;
				if (_arg1.hasDefinition(_local7)){
					_local8 = Class(_arg1.getDefinition(_local7));
				};
			};
			if (!_local8){
				_local7 = (_arg3 + "_properties");
				if (_arg1.hasDefinition(_local7)){
					_local8 = Class(_arg1.getDefinition(_local7));
				};
			};
			if (!_local8){
				throw (new Error((((("Could not find compiled resource bundle '" + _arg3) + "' for locale '") + _arg2) + "'.")));
			};
			var _local9:ResourceBundle = ResourceBundle(new (_local8));
			_local9.mx_internal::_locale = _arg2;
			_local9.mx_internal::_bundleName = _arg3;
			addResourceBundle(_local9);
		}
		public function getString(_arg1:String, _arg2:String, _arg3:Array=null, _arg4:String=null):String{
			var _local5:IResourceBundle = findBundle(_arg1, _arg2, _arg4);
			if (!_local5){
				return (null);
			};
			var _local6:String = String(_local5.content[_arg2]);
			if (_arg3){
				_local6 = StringUtil.substitute(_local6, _arg3);
			};
			return (_local6);
		}
		public function loadResourceModule(_arg1:String, _arg2:Boolean=true, _arg3:ApplicationDomain=null, _arg4:SecurityDomain=null):IEventDispatcher{
			var moduleInfo:IModuleInfo;
			var resourceEventDispatcher:ResourceEventDispatcher;
			var timer:Timer;
			var timerHandler:Function;
			var url = _arg1;
			var updateFlag = _arg2;
			var applicationDomain = _arg3;
			var securityDomain = _arg4;
			moduleInfo = ModuleManager.getModule(url);
			resourceEventDispatcher = new ResourceEventDispatcher(moduleInfo);
			var readyHandler:Function = function (_arg1:ModuleEvent):void{
				var _local2:* = _arg1.module.factory.create();
				resourceModules[_arg1.module.url].resourceModule = _local2;
				if (updateFlag){
					update();
				};
			};
			moduleInfo.addEventListener(ModuleEvent.READY, readyHandler, false, 0, true);
			var errorHandler:Function = function (_arg1:ModuleEvent):void{
				var _local3:ResourceEvent;
				var _local2:String = ("Unable to load resource module from " + url);
				if (resourceEventDispatcher.willTrigger(ResourceEvent.ERROR)){
					_local3 = new ResourceEvent(ResourceEvent.ERROR, _arg1.bubbles, _arg1.cancelable);
					_local3.bytesLoaded = 0;
					_local3.bytesTotal = 0;
					_local3.errorText = _local2;
					resourceEventDispatcher.dispatchEvent(_local3);
				} else {
					throw (new Error(_local2));
				};
			};
			moduleInfo.addEventListener(ModuleEvent.ERROR, errorHandler, false, 0, true);
			resourceModules[url] = new ResourceModuleInfo(moduleInfo, readyHandler, errorHandler);
			timer = new Timer(0);
			timerHandler = function (_arg1:TimerEvent):void{
				timer.removeEventListener(TimerEvent.TIMER, timerHandler);
				timer.stop();
				moduleInfo.load(applicationDomain, securityDomain);
			};
			timer.addEventListener(TimerEvent.TIMER, timerHandler, false, 0, true);
			timer.start();
			return (resourceEventDispatcher);
		}
		public function getLocales():Array{
			var _local2:String;
			var _local1:Array = [];
			for (_local2 in localeMap) {
				_local1.push(_local2);
			};
			return (_local1);
		}
		public function removeResourceBundlesForLocale(_arg1:String):void{
			delete localeMap[_arg1];
		}
		public function getResourceBundle(_arg1:String, _arg2:String):IResourceBundle{
			var _local3:Object = localeMap[_arg1];
			if (!_local3){
				return (null);
			};
			return (_local3[_arg2]);
		}
		private function dumpResourceModule(_arg1):void{
			var _local2:ResourceBundle;
			var _local3:String;
			for each (_local2 in _arg1.resourceBundles) {
				trace(_local2.locale, _local2.bundleName);
				for (_local3 in _local2.content) {
				};
			};
		}
		public function addResourceBundle(_arg1:IResourceBundle):void{
			var _local2:String = _arg1.locale;
			var _local3:String = _arg1.bundleName;
			if (!localeMap[_local2]){
				localeMap[_local2] = {};
			};
			localeMap[_local2][_local3] = _arg1;
		}
		public function getObject(_arg1:String, _arg2:String, _arg3:String=null){
			var _local4:IResourceBundle = findBundle(_arg1, _arg2, _arg3);
			if (!_local4){
				return (undefined);
			};
			return (_local4.content[_arg2]);
		}
		public function getInt(_arg1:String, _arg2:String, _arg3:String=null):int{
			var _local4:IResourceBundle = findBundle(_arg1, _arg2, _arg3);
			if (!_local4){
				return (0);
			};
			var _local5:* = _local4.content[_arg2];
			return (int(_local5));
		}
		private function findBundle(_arg1:String, _arg2:String, _arg3:String):IResourceBundle{
			supportNonFrameworkApps();
			return (((_arg3)!=null) ? getResourceBundle(_arg3, _arg1) : findResourceBundleWithResource(_arg1, _arg2));
		}
		private function supportNonFrameworkApps():void{
			if (initializedForNonFrameworkApp){
				return;
			};
			initializedForNonFrameworkApp = true;
			if (getLocales().length > 0){
				return;
			};
			var _local1:ApplicationDomain = ApplicationDomain.currentDomain;
			if (!_local1.hasDefinition("_CompiledResourceBundleInfo")){
				return;
			};
			var _local2:Class = Class(_local1.getDefinition("_CompiledResourceBundleInfo"));
			var _local3:Array = _local2.compiledLocales;
			var _local4:Array = _local2.compiledResourceBundleNames;
			installCompiledResourceBundles(_local1, _local3, _local4);
			localeChain = _local3;
		}
		public function getBundleNamesForLocale(_arg1:String):Array{
			var _local3:String;
			var _local2:Array = [];
			for (_local3 in localeMap[_arg1]) {
				_local2.push(_local3);
			};
			return (_local2);
		}
		public function getPreferredLocaleChain():Array{
			return (LocaleSorter.sortLocalesByPreference(getLocales(), getSystemPreferredLocales(), null, true));
		}
		public function getNumber(_arg1:String, _arg2:String, _arg3:String=null):Number{
			var _local4:IResourceBundle = findBundle(_arg1, _arg2, _arg3);
			if (!_local4){
				return (NaN);
			};
			var _local5:* = _local4.content[_arg2];
			return (Number(_local5));
		}
		public function update():void{
			dispatchEvent(new Event(Event.CHANGE));
		}
		public function getClass(_arg1:String, _arg2:String, _arg3:String=null):Class{
			var _local4:IResourceBundle = findBundle(_arg1, _arg2, _arg3);
			if (!_local4){
				return (null);
			};
			var _local5:* = _local4.content[_arg2];
			return ((_local5 as Class));
		}
		public function removeResourceBundle(_arg1:String, _arg2:String):void{
			delete localeMap[_arg1][_arg2];
			if (getBundleNamesForLocale(_arg1).length == 0){
				delete localeMap[_arg1];
			};
		}
		public function initializeLocaleChain(_arg1:Array):void{
			localeChain = LocaleSorter.sortLocalesByPreference(_arg1, getSystemPreferredLocales(), null, true);
		}
		public function findResourceBundleWithResource(_arg1:String, _arg2:String):IResourceBundle{
			var _local5:String;
			var _local6:Object;
			var _local7:ResourceBundle;
			if (!_localeChain){
				return (null);
			};
			var _local3:int = _localeChain.length;
			var _local4:int;
			while (_local4 < _local3) {
				_local5 = localeChain[_local4];
				_local6 = localeMap[_local5];
				if (!_local6){
				} else {
					_local7 = _local6[_arg1];
					if (!_local7){
					} else {
						if ((_arg2 in _local7.content)){
							return (_local7);
						};
					};
				};
				_local4++;
			};
			return (null);
		}
		public function getUint(_arg1:String, _arg2:String, _arg3:String=null):uint{
			var _local4:IResourceBundle = findBundle(_arg1, _arg2, _arg3);
			if (!_local4){
				return (0);
			};
			var _local5:* = _local4.content[_arg2];
			return (uint(_local5));
		}
		private function getSystemPreferredLocales():Array{
			var _local1:Array;
			if (Capabilities["languages"]){
				_local1 = Capabilities["languages"];
			} else {
				_local1 = [Capabilities.language];
			};
			return (_local1);
		}
		public function installCompiledResourceBundles(_arg1:ApplicationDomain, _arg2:Array, _arg3:Array):void{
			var _local7:String;
			var _local8:int;
			var _local9:String;
			var _local4:int = (_arg2) ? _arg2.length : 0;
			var _local5:int = (_arg3) ? _arg3.length : 0;
			var _local6:int;
			while (_local6 < _local4) {
				_local7 = _arg2[_local6];
				_local8 = 0;
				while (_local8 < _local5) {
					_local9 = _arg3[_local8];
					mx_internal::installCompiledResourceBundle(_arg1, _local7, _local9);
					_local8++;
				};
				_local6++;
			};
		}
		public function getBoolean(_arg1:String, _arg2:String, _arg3:String=null):Boolean{
			var _local4:IResourceBundle = findBundle(_arg1, _arg2, _arg3);
			if (!_local4){
				return (false);
			};
			var _local5:* = _local4.content[_arg2];
			return ((String(_local5).toLowerCase() == "true"));
		}
		public function unloadResourceModule(_arg1:String, _arg2:Boolean=true):void{
			var _local4:Array;
			var _local5:int;
			var _local6:int;
			var _local7:String;
			var _local8:String;
			var _local3:ResourceModuleInfo = resourceModules[_arg1];
			if (!_local3){
				return;
			};
			if (_local3.resourceModule){
				_local4 = _local3.resourceModule.resourceBundles;
				if (_local4){
					_local5 = _local4.length;
					_local6 = 0;
					while (_local6 < _local5) {
						_local7 = _local4[_local6].locale;
						_local8 = _local4[_local6].bundleName;
						removeResourceBundle(_local7, _local8);
						_local6++;
					};
				};
			};
			resourceModules[_arg1] = null;
			delete resourceModules[_arg1];
			_local3.moduleInfo.unload();
			if (_arg2){
				this.update();
			};
		}

		public static function getInstance():IResourceManager{
			if (!instance){
				instance = new (ResourceManagerImpl);
			};
			return (instance);
		}

	}
}//package mx.resources 

import flash.events.*;
import mx.events.*;
import mx.modules.*;

class ResourceModuleInfo {

	public var resourceModule:IResourceModule;
	public var errorHandler:Function;
	public var readyHandler:Function;
	public var moduleInfo:IModuleInfo;

	private function ResourceModuleInfo(_arg1:IModuleInfo, _arg2:Function, _arg3:Function){
		this.moduleInfo = _arg1;
		this.readyHandler = _arg2;
		this.errorHandler = _arg3;
	}
}
class ResourceEventDispatcher extends EventDispatcher {

	private function ResourceEventDispatcher(_arg1:IModuleInfo){
		_arg1.addEventListener(ModuleEvent.ERROR, moduleInfo_errorHandler, false, 0, true);
		_arg1.addEventListener(ModuleEvent.PROGRESS, moduleInfo_progressHandler, false, 0, true);
		_arg1.addEventListener(ModuleEvent.READY, moduleInfo_readyHandler, false, 0, true);
	}
	private function moduleInfo_progressHandler(_arg1:ModuleEvent):void{
		var _local2:ResourceEvent = new ResourceEvent(ResourceEvent.PROGRESS, _arg1.bubbles, _arg1.cancelable);
		_local2.bytesLoaded = _arg1.bytesLoaded;
		_local2.bytesTotal = _arg1.bytesTotal;
		dispatchEvent(_local2);
	}
	private function moduleInfo_readyHandler(_arg1:ModuleEvent):void{
		var _local2:ResourceEvent = new ResourceEvent(ResourceEvent.COMPLETE);
		dispatchEvent(_local2);
	}
	private function moduleInfo_errorHandler(_arg1:ModuleEvent):void{
		var _local2:ResourceEvent = new ResourceEvent(ResourceEvent.ERROR, _arg1.bubbles, _arg1.cancelable);
		_local2.bytesLoaded = _arg1.bytesLoaded;
		_local2.bytesTotal = _arg1.bytesTotal;
		_local2.errorText = _arg1.errorText;
		dispatchEvent(_local2);
	}

}

****************

//IResponder (mx.rpc.IResponder)
package mx.rpc {

	public interface IResponder {

		function fault(_arg1:Object):void;
		function result(_arg1:Object):void;

	}
}//package mx.rpc 

****************

//ApplicationBackground (mx.skins.halo.ApplicationBackground)
package mx.skins.halo {
	import flash.display.*;
	import mx.utils.*;
	import mx.skins.*;

	public class ApplicationBackground extends ProgrammaticSkin {

		mx_internal static const VERSION:String = "3.5.0.12683";

		override public function get measuredWidth():Number{
			return (8);
		}
		override public function get measuredHeight():Number{
			return (8);
		}
		override protected function updateDisplayList(_arg1:Number, _arg2:Number):void{
			var _local6:uint;
			super.updateDisplayList(_arg1, _arg2);
			var _local3:Graphics = graphics;
			var _local4:Array = getStyle("backgroundGradientColors");
			var _local5:Array = getStyle("backgroundGradientAlphas");
			if (!_local4){
				_local6 = getStyle("backgroundColor");
				if (isNaN(_local6)){
					_local6 = 0xFFFFFF;
				};
				_local4 = [];
				_local4[0] = ColorUtil.adjustBrightness(_local6, 15);
				_local4[1] = ColorUtil.adjustBrightness(_local6, -25);
			};
			if (!_local5){
				_local5 = [1, 1];
			};
			_local3.clear();
			drawRoundRect(0, 0, _arg1, _arg2, 0, _local4, _local5, verticalGradientMatrix(0, 0, _arg1, _arg2));
		}

	}
}//package mx.skins.halo 

****************

//BusyCursor (mx.skins.halo.BusyCursor)
package mx.skins.halo {
	import mx.core.*;
	import flash.events.*;
	import flash.display.*;
	import mx.styles.*;

	public class BusyCursor extends FlexSprite {

		private var hourHand:Shape;
		private var minuteHand:Shape;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function BusyCursor(){
			var _local6:Graphics;
			super();
			var _local1:CSSStyleDeclaration = StyleManager.getStyleDeclaration("CursorManager");
			var _local2:Class = _local1.getStyle("busyCursorBackground");
			var _local3:DisplayObject = new (_local2);
			if ((_local3 is InteractiveObject)){
				InteractiveObject(_local3).mouseEnabled = false;
			};
			addChild(_local3);
			var _local4:Number = -0.5;
			var _local5:Number = -0.5;
			minuteHand = new FlexShape();
			minuteHand.name = "minuteHand";
			_local6 = minuteHand.graphics;
			_local6.beginFill(0);
			_local6.moveTo(_local4, _local5);
			_local6.lineTo((1 + _local4), (0 + _local5));
			_local6.lineTo((1 + _local4), (5 + _local5));
			_local6.lineTo((0 + _local4), (5 + _local5));
			_local6.lineTo((0 + _local4), (0 + _local5));
			_local6.endFill();
			addChild(minuteHand);
			hourHand = new FlexShape();
			hourHand.name = "hourHand";
			_local6 = hourHand.graphics;
			_local6.beginFill(0);
			_local6.moveTo(_local4, _local5);
			_local6.lineTo((4 + _local4), (0 + _local5));
			_local6.lineTo((4 + _local4), (1 + _local5));
			_local6.lineTo((0 + _local4), (1 + _local5));
			_local6.lineTo((0 + _local4), (0 + _local5));
			_local6.endFill();
			addChild(hourHand);
			addEventListener(Event.ADDED, handleAdded);
			addEventListener(Event.REMOVED, handleRemoved);
		}
		private function enterFrameHandler(_arg1:Event):void{
			minuteHand.rotation = (minuteHand.rotation + 12);
			hourHand.rotation = (hourHand.rotation + 1);
		}
		private function handleAdded(_arg1:Event):void{
			addEventListener(Event.ENTER_FRAME, enterFrameHandler);
		}
		private function handleRemoved(_arg1:Event):void{
			removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
		}

	}
}//package mx.skins.halo 

****************

//ButtonSkin (mx.skins.halo.ButtonSkin)
package mx.skins.halo {
	import mx.core.*;
	import flash.display.*;
	import mx.styles.*;
	import mx.utils.*;
	import mx.skins.*;

	public class ButtonSkin extends Border {

		mx_internal static const VERSION:String = "3.5.0.12683";

		private static var cache:Object = {};

		override public function get measuredWidth():Number{
			return (UIComponent.DEFAULT_MEASURED_MIN_WIDTH);
		}
		override public function get measuredHeight():Number{
			return (UIComponent.DEFAULT_MEASURED_MIN_HEIGHT);
		}
		override protected function updateDisplayList(_arg1:Number, _arg2:Number):void{
			var _local16:Number;
			var _local17:Array;
			var _local18:Array;
			var _local19:Array;
			var _local20:Array;
			var _local21:Array;
			var _local22:Array;
			super.updateDisplayList(_arg1, _arg2);
			var _local3:uint = getStyle("borderColor");
			var _local4:Number = getStyle("cornerRadius");
			var _local5:Array = getStyle("fillAlphas");
			var _local6:Array = getStyle("fillColors");
			StyleManager.getColorNames(_local6);
			var _local7:Array = getStyle("highlightAlphas");
			var _local8:uint = getStyle("themeColor");
			var _local9:Object = calcDerivedStyles(_local8, _local6[0], _local6[1]);
			var _local10:Number = ColorUtil.adjustBrightness2(_local3, -50);
			var _local11:Number = ColorUtil.adjustBrightness2(_local8, -25);
			var _local12:Boolean;
			if ((parent is IButton)){
				_local12 = IButton(parent).emphasized;
			};
			var _local13:Number = Math.max(0, _local4);
			var _local14:Number = Math.max(0, (_local4 - 1));
			var _local15:Number = Math.max(0, (_local4 - 2));
			graphics.clear();
			switch (name){
				case "selectedUpSkin":
				case "selectedOverSkin":
					drawRoundRect(0, 0, _arg1, _arg2, _local13, [_local8, _local11], 1, verticalGradientMatrix(0, 0, _arg1, _arg2));
					drawRoundRect(1, 1, (_arg1 - 2), (_arg2 - 2), _local14, [_local6[1], _local6[1]], 1, verticalGradientMatrix(0, 0, (_arg1 - 2), (_arg2 - 2)));
					break;
				case "upSkin":
					_local17 = [_local6[0], _local6[1]];
					_local18 = [_local5[0], _local5[1]];
					if (_local12){
						drawRoundRect(0, 0, _arg1, _arg2, _local13, [_local8, _local11], 1, verticalGradientMatrix(0, 0, _arg1, _arg2), GradientType.LINEAR, null, {x:2, y:2, w:(_arg1 - 4), h:(_arg2 - 4), r:(_local4 - 2)});
						drawRoundRect(2, 2, (_arg1 - 4), (_arg2 - 4), _local15, _local17, _local18, verticalGradientMatrix(2, 2, (_arg1 - 2), (_arg2 - 2)));
						drawRoundRect(2, 2, (_arg1 - 4), ((_arg2 - 4) / 2), {tl:_local15, tr:_local15, bl:0, br:0}, [0xFFFFFF, 0xFFFFFF], _local7, verticalGradientMatrix(1, 1, (_arg1 - 2), ((_arg2 - 2) / 2)));
					} else {
						drawRoundRect(0, 0, _arg1, _arg2, _local13, [_local3, _local10], 1, verticalGradientMatrix(0, 0, _arg1, _arg2), GradientType.LINEAR, null, {x:1, y:1, w:(_arg1 - 2), h:(_arg2 - 2), r:(_local4 - 1)});
						drawRoundRect(1, 1, (_arg1 - 2), (_arg2 - 2), _local14, _local17, _local18, verticalGradientMatrix(1, 1, (_arg1 - 2), (_arg2 - 2)));
						drawRoundRect(1, 1, (_arg1 - 2), ((_arg2 - 2) / 2), {tl:_local14, tr:_local14, bl:0, br:0}, [0xFFFFFF, 0xFFFFFF], _local7, verticalGradientMatrix(1, 1, (_arg1 - 2), ((_arg2 - 2) / 2)));
					};
					break;
				case "overSkin":
					if (_local6.length > 2){
						_local19 = [_local6[2], _local6[3]];
					} else {
						_local19 = [_local6[0], _local6[1]];
					};
					if (_local5.length > 2){
						_local20 = [_local5[2], _local5[3]];
					} else {
						_local20 = [_local5[0], _local5[1]];
					};
					drawRoundRect(0, 0, _arg1, _arg2, _local13, [_local8, _local11], 1, verticalGradientMatrix(0, 0, _arg1, _arg2), GradientType.LINEAR, null, {x:1, y:1, w:(_arg1 - 2), h:(_arg2 - 2), r:(_local4 - 1)});
					drawRoundRect(1, 1, (_arg1 - 2), (_arg2 - 2), _local14, _local19, _local20, verticalGradientMatrix(1, 1, (_arg1 - 2), (_arg2 - 2)));
					drawRoundRect(1, 1, (_arg1 - 2), ((_arg2 - 2) / 2), {tl:_local14, tr:_local14, bl:0, br:0}, [0xFFFFFF, 0xFFFFFF], _local7, verticalGradientMatrix(1, 1, (_arg1 - 2), ((_arg2 - 2) / 2)));
					break;
				case "downSkin":
				case "selectedDownSkin":
					drawRoundRect(0, 0, _arg1, _arg2, _local13, [_local8, _local11], 1, verticalGradientMatrix(0, 0, _arg1, _arg2));
					drawRoundRect(1, 1, (_arg1 - 2), (_arg2 - 2), _local14, [_local9.fillColorPress1, _local9.fillColorPress2], 1, verticalGradientMatrix(1, 1, (_arg1 - 2), (_arg2 - 2)));
					drawRoundRect(2, 2, (_arg1 - 4), ((_arg2 - 4) / 2), {tl:_local15, tr:_local15, bl:0, br:0}, [0xFFFFFF, 0xFFFFFF], _local7, verticalGradientMatrix(1, 1, (_arg1 - 2), ((_arg2 - 2) / 2)));
					break;
				case "disabledSkin":
				case "selectedDisabledSkin":
					_local21 = [_local6[0], _local6[1]];
					_local22 = [Math.max(0, (_local5[0] - 0.15)), Math.max(0, (_local5[1] - 0.15))];
					drawRoundRect(0, 0, _arg1, _arg2, _local13, [_local3, _local10], 0.5, verticalGradientMatrix(0, 0, _arg1, _arg2), GradientType.LINEAR, null, {x:1, y:1, w:(_arg1 - 2), h:(_arg2 - 2), r:(_local4 - 1)});
					drawRoundRect(1, 1, (_arg1 - 2), (_arg2 - 2), _local14, _local21, _local22, verticalGradientMatrix(1, 1, (_arg1 - 2), (_arg2 - 2)));
					break;
			};
		}

		private static function calcDerivedStyles(_arg1:uint, _arg2:uint, _arg3:uint):Object{
			var _local5:Object;
			var _local4:String = HaloColors.getCacheKey(_arg1, _arg2, _arg3);
			if (!cache[_local4]){
				_local5 = (cache[_local4] = {});
				HaloColors.addHaloColors(_local5, _arg1, _arg2, _arg3);
			};
			return (cache[_local4]);
		}

	}
}//package mx.skins.halo 

****************

//HaloBorder (mx.skins.halo.HaloBorder)
package mx.skins.halo {
	import mx.core.*;
	import flash.display.*;
	import mx.styles.*;
	import mx.graphics.*;
	import mx.utils.*;
	import mx.skins.*;

	public class HaloBorder extends RectangularBorder {

		mx_internal var radiusObj:Object;
		mx_internal var backgroundHole:Object;
		mx_internal var radius:Number;
		mx_internal var bRoundedCorners:Boolean;
		mx_internal var backgroundColor:Object;
		private var dropShadow:RectangularDropShadow;
		protected var _borderMetrics:EdgeMetrics;
		mx_internal var backgroundAlphaName:String;

		mx_internal static const VERSION:String = "3.5.0.12683";

		private static var BORDER_WIDTHS:Object = {none:0, solid:1, inset:2, outset:2, alert:3, dropdown:2, menuBorder:1, comboNonEdit:2};

		public function HaloBorder(){
			BORDER_WIDTHS["default"] = 3;
		}
		override public function styleChanged(_arg1:String):void{
			if ((((((((((_arg1 == null)) || ((_arg1 == "styleName")))) || ((_arg1 == "borderStyle")))) || ((_arg1 == "borderThickness")))) || ((_arg1 == "borderSides")))){
				_borderMetrics = null;
			};
			invalidateDisplayList();
		}
		override protected function updateDisplayList(_arg1:Number, _arg2:Number):void{
			if (((isNaN(_arg1)) || (isNaN(_arg2)))){
				return;
			};
			super.updateDisplayList(_arg1, _arg2);
			backgroundColor = getBackgroundColor();
			bRoundedCorners = false;
			backgroundAlphaName = "backgroundAlpha";
			backgroundHole = null;
			radius = 0;
			radiusObj = null;
			drawBorder(_arg1, _arg2);
			drawBackground(_arg1, _arg2);
		}
		mx_internal function drawBorder(_arg1:Number, _arg2:Number):void{
			var _local5:Number;
			var _local6:uint;
			var _local7:uint;
			var _local8:String;
			var _local9:Number;
			var _local10:uint;
			var _local11:Boolean;
			var _local12:uint;
			var _local13:Array;
			var _local14:Array;
			var _local15:uint;
			var _local16:uint;
			var _local17:uint;
			var _local18:uint;
			var _local19:Boolean;
			var _local20:Object;
			var _local22:Number;
			var _local23:Number;
			var _local24:Number;
			var _local25:Object;
			var _local27:Number;
			var _local28:Number;
			var _local29:IContainer;
			var _local30:EdgeMetrics;
			var _local31:Boolean;
			var _local32:Number;
			var _local33:Array;
			var _local34:uint;
			var _local35:Boolean;
			var _local36:Number;
			var _local3:String = getStyle("borderStyle");
			var _local4:Array = getStyle("highlightAlphas");
			var _local21:Boolean;
			var _local26:Graphics = graphics;
			_local26.clear();
			if (_local3){
				switch (_local3){
					case "none":
						break;
					case "inset":
						_local7 = getStyle("borderColor");
						_local22 = ColorUtil.adjustBrightness2(_local7, -40);
						_local23 = ColorUtil.adjustBrightness2(_local7, 25);
						_local24 = ColorUtil.adjustBrightness2(_local7, 40);
						_local25 = backgroundColor;
						if ((((_local25 === null)) || ((_local25 === "")))){
							_local25 = _local7;
						};
						draw3dBorder(_local23, _local22, _local24, Number(_local25), Number(_local25), Number(_local25));
						break;
					case "outset":
						_local7 = getStyle("borderColor");
						_local22 = ColorUtil.adjustBrightness2(_local7, -40);
						_local23 = ColorUtil.adjustBrightness2(_local7, -25);
						_local24 = ColorUtil.adjustBrightness2(_local7, 40);
						_local25 = backgroundColor;
						if ((((_local25 === null)) || ((_local25 === "")))){
							_local25 = _local7;
						};
						draw3dBorder(_local23, _local24, _local22, Number(_local25), Number(_local25), Number(_local25));
						break;
					case "alert":
					case "default":
						if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0){
							_local27 = getStyle("backgroundAlpha");
							_local5 = getStyle("borderAlpha");
							backgroundAlphaName = "borderAlpha";
							radius = getStyle("cornerRadius");
							bRoundedCorners = (getStyle("roundedBottomCorners").toString().toLowerCase() == "true");
							_local28 = (bRoundedCorners) ? radius : 0;
							drawDropShadow(0, 0, _arg1, _arg2, radius, radius, _local28, _local28);
							if (!bRoundedCorners){
								radiusObj = {};
							};
							_local29 = (parent as IContainer);
							if (_local29){
								_local30 = _local29.viewMetrics;
								backgroundHole = {x:_local30.left, y:_local30.top, w:Math.max(0, ((_arg1 - _local30.left) - _local30.right)), h:Math.max(0, ((_arg2 - _local30.top) - _local30.bottom)), r:0};
								if ((((backgroundHole.w > 0)) && ((backgroundHole.h > 0)))){
									if (_local27 != _local5){
										drawDropShadow(backgroundHole.x, backgroundHole.y, backgroundHole.w, backgroundHole.h, 0, 0, 0, 0);
									};
									_local26.beginFill(Number(backgroundColor), _local27);
									_local26.drawRect(backgroundHole.x, backgroundHole.y, backgroundHole.w, backgroundHole.h);
									_local26.endFill();
								};
							};
							backgroundColor = getStyle("borderColor");
						};
						break;
					case "dropdown":
						_local12 = getStyle("dropdownBorderColor");
						drawDropShadow(0, 0, _arg1, _arg2, 4, 0, 0, 4);
						drawRoundRect(0, 0, _arg1, _arg2, {tl:4, tr:0, br:0, bl:4}, 5068126, 1);
						drawRoundRect(0, 0, _arg1, _arg2, {tl:4, tr:0, br:0, bl:4}, [0xFFFFFF, 0xFFFFFF], [0.7, 0], verticalGradientMatrix(0, 0, _arg1, _arg2));
						drawRoundRect(1, 1, (_arg1 - 1), (_arg2 - 2), {tl:3, tr:0, br:0, bl:3}, 0xFFFFFF, 1);
						drawRoundRect(1, 2, (_arg1 - 1), (_arg2 - 3), {tl:3, tr:0, br:0, bl:3}, [0xEEEEEE, 0xFFFFFF], 1, verticalGradientMatrix(0, 0, (_arg1 - 1), (_arg2 - 3)));
						if (!isNaN(_local12)){
							drawRoundRect(0, 0, (_arg1 + 1), _arg2, {tl:4, tr:0, br:0, bl:4}, _local12, 0.5);
							drawRoundRect(1, 1, (_arg1 - 1), (_arg2 - 2), {tl:3, tr:0, br:0, bl:3}, 0xFFFFFF, 1);
							drawRoundRect(1, 2, (_arg1 - 1), (_arg2 - 3), {tl:3, tr:0, br:0, bl:3}, [0xEEEEEE, 0xFFFFFF], 1, verticalGradientMatrix(0, 0, (_arg1 - 1), (_arg2 - 3)));
						};
						backgroundColor = null;
						break;
					case "menuBorder":
						_local7 = getStyle("borderColor");
						drawRoundRect(0, 0, _arg1, _arg2, 0, _local7, 1);
						drawDropShadow(1, 1, (_arg1 - 2), (_arg2 - 2), 0, 0, 0, 0);
						break;
					case "comboNonEdit":
						break;
					case "controlBar":
						if ((((_arg1 == 0)) || ((_arg2 == 0)))){
							backgroundColor = null;
							break;
						};
						_local14 = getStyle("footerColors");
						_local31 = !((_local14 == null));
						_local32 = getStyle("borderAlpha");
						if (_local31){
							_local26.lineStyle(0, ((_local14.length > 0)) ? _local14[1] : _local14[0], _local32);
							_local26.moveTo(0, 0);
							_local26.lineTo(_arg1, 0);
							_local26.lineStyle(0, 0, 0);
							if (((((parent) && (parent.parent))) && ((parent.parent is IStyleClient)))){
								radius = IStyleClient(parent.parent).getStyle("cornerRadius");
								_local32 = IStyleClient(parent.parent).getStyle("borderAlpha");
							};
							if (isNaN(radius)){
								radius = 0;
							};
							if (IStyleClient(parent.parent).getStyle("roundedBottomCorners").toString().toLowerCase() != "true"){
								radius = 0;
							};
							drawRoundRect(0, 1, _arg1, (_arg2 - 1), {tl:0, tr:0, bl:radius, br:radius}, _local14, _local32, verticalGradientMatrix(0, 0, _arg1, _arg2));
							if ((((_local14.length > 1)) && (!((_local14[0] == _local14[1]))))){
								drawRoundRect(0, 1, _arg1, (_arg2 - 1), {tl:0, tr:0, bl:radius, br:radius}, [0xFFFFFF, 0xFFFFFF], _local4, verticalGradientMatrix(0, 0, _arg1, _arg2));
								drawRoundRect(1, 2, (_arg1 - 2), (_arg2 - 3), {tl:0, tr:0, bl:(radius - 1), br:(radius - 1)}, _local14, _local32, verticalGradientMatrix(0, 0, _arg1, _arg2));
							};
						};
						backgroundColor = null;
						break;
					case "applicationControlBar":
						_local13 = getStyle("fillColors");
						_local5 = getStyle("backgroundAlpha");
						_local4 = getStyle("highlightAlphas");
						_local33 = getStyle("fillAlphas");
						_local11 = getStyle("docked");
						_local34 = uint(backgroundColor);
						radius = getStyle("cornerRadius");
						if (!radius){
							radius = 0;
						};
						drawDropShadow(0, 1, _arg1, (_arg2 - 1), radius, radius, radius, radius);
						if (((!((backgroundColor === null))) && (StyleManager.isValidStyleValue(backgroundColor)))){
							drawRoundRect(0, 1, _arg1, (_arg2 - 1), radius, _local34, _local5, verticalGradientMatrix(0, 0, _arg1, _arg2));
						};
						drawRoundRect(0, 1, _arg1, (_arg2 - 1), radius, _local13, _local33, verticalGradientMatrix(0, 0, _arg1, _arg2));
						drawRoundRect(0, 1, _arg1, ((_arg2 / 2) - 1), {tl:radius, tr:radius, bl:0, br:0}, [0xFFFFFF, 0xFFFFFF], _local4, verticalGradientMatrix(0, 0, _arg1, ((_arg2 / 2) - 1)));
						drawRoundRect(0, 1, _arg1, (_arg2 - 1), {tl:radius, tr:radius, bl:0, br:0}, 0xFFFFFF, 0.3, null, GradientType.LINEAR, null, {x:0, y:2, w:_arg1, h:(_arg2 - 2), r:{tl:radius, tr:radius, bl:0, br:0}});
						backgroundColor = null;
						break;
					default:
						_local7 = getStyle("borderColor");
						_local9 = getStyle("borderThickness");
						_local8 = getStyle("borderSides");
						_local35 = true;
						radius = getStyle("cornerRadius");
						bRoundedCorners = (getStyle("roundedBottomCorners").toString().toLowerCase() == "true");
						_local36 = Math.max((radius - _local9), 0);
						_local20 = {x:_local9, y:_local9, w:(_arg1 - (_local9 * 2)), h:(_arg2 - (_local9 * 2)), r:_local36};
						if (!bRoundedCorners){
							radiusObj = {tl:radius, tr:radius, bl:0, br:0};
							_local20.r = {tl:_local36, tr:_local36, bl:0, br:0};
						};
						if (_local8 != "left top right bottom"){
							_local20.r = {tl:_local36, tr:_local36, bl:(bRoundedCorners) ? _local36 : 0, br:(bRoundedCorners) ? _local36 : 0};
							radiusObj = {tl:radius, tr:radius, bl:(bRoundedCorners) ? radius : 0, br:(bRoundedCorners) ? radius : 0};
							_local8 = _local8.toLowerCase();
							if (_local8.indexOf("left") == -1){
								_local20.x = 0;
								_local20.w = (_local20.w + _local9);
								_local20.r.tl = 0;
								_local20.r.bl = 0;
								radiusObj.tl = 0;
								radiusObj.bl = 0;
								_local35 = false;
							};
							if (_local8.indexOf("top") == -1){
								_local20.y = 0;
								_local20.h = (_local20.h + _local9);
								_local20.r.tl = 0;
								_local20.r.tr = 0;
								radiusObj.tl = 0;
								radiusObj.tr = 0;
								_local35 = false;
							};
							if (_local8.indexOf("right") == -1){
								_local20.w = (_local20.w + _local9);
								_local20.r.tr = 0;
								_local20.r.br = 0;
								radiusObj.tr = 0;
								radiusObj.br = 0;
								_local35 = false;
							};
							if (_local8.indexOf("bottom") == -1){
								_local20.h = (_local20.h + _local9);
								_local20.r.bl = 0;
								_local20.r.br = 0;
								radiusObj.bl = 0;
								radiusObj.br = 0;
								_local35 = false;
							};
						};
						if ((((radius == 0)) && (_local35))){
							drawDropShadow(0, 0, _arg1, _arg2, 0, 0, 0, 0);
							_local26.beginFill(_local7);
							_local26.drawRect(0, 0, _arg1, _arg2);
							_local26.drawRect(_local9, _local9, (_arg1 - (2 * _local9)), (_arg2 - (2 * _local9)));
							_local26.endFill();
						} else {
							if (radiusObj){
								drawDropShadow(0, 0, _arg1, _arg2, radiusObj.tl, radiusObj.tr, radiusObj.br, radiusObj.bl);
								drawRoundRect(0, 0, _arg1, _arg2, radiusObj, _local7, 1, null, null, null, _local20);
								radiusObj.tl = Math.max((radius - _local9), 0);
								radiusObj.tr = Math.max((radius - _local9), 0);
								radiusObj.bl = (bRoundedCorners) ? Math.max((radius - _local9), 0) : 0;
								radiusObj.br = (bRoundedCorners) ? Math.max((radius - _local9), 0) : 0;
							} else {
								drawDropShadow(0, 0, _arg1, _arg2, radius, radius, radius, radius);
								drawRoundRect(0, 0, _arg1, _arg2, radius, _local7, 1, null, null, null, _local20);
								radius = Math.max((getStyle("cornerRadius") - _local9), 0);
							};
						};
				};
			};
		}
		mx_internal function drawBackground(_arg1:Number, _arg2:Number):void{
			var _local4:Number;
			var _local5:Number;
			var _local6:EdgeMetrics;
			var _local7:Graphics;
			var _local8:Number;
			var _local9:Number;
			var _local10:Number;
			var _local11:Array;
			var _local12:Number;
			if (((((((!((backgroundColor === null))) && (!((backgroundColor === ""))))) || (getStyle("mouseShield")))) || (getStyle("mouseShieldChildren")))){
				_local4 = Number(backgroundColor);
				_local5 = 1;
				_local6 = getBackgroundColorMetrics();
				_local7 = graphics;
				if (((((isNaN(_local4)) || ((backgroundColor === "")))) || ((backgroundColor === null)))){
					_local5 = 0;
					_local4 = 0xFFFFFF;
				} else {
					_local5 = getStyle(backgroundAlphaName);
				};
				if (((!((radius == 0))) || (backgroundHole))){
					_local8 = _local6.bottom;
					if (radiusObj){
						_local9 = Math.max((radius - Math.max(_local6.top, _local6.left, _local6.right)), 0);
						_local10 = (bRoundedCorners) ? Math.max((radius - Math.max(_local6.bottom, _local6.left, _local6.right)), 0) : 0;
						radiusObj = {tl:_local9, tr:_local9, bl:_local10, br:_local10};
						drawRoundRect(_local6.left, _local6.top, (width - (_local6.left + _local6.right)), (height - (_local6.top + _local8)), radiusObj, _local4, _local5, null, GradientType.LINEAR, null, backgroundHole);
					} else {
						drawRoundRect(_local6.left, _local6.top, (width - (_local6.left + _local6.right)), (height - (_local6.top + _local8)), radius, _local4, _local5, null, GradientType.LINEAR, null, backgroundHole);
					};
				} else {
					_local7.beginFill(_local4, _local5);
					_local7.drawRect(_local6.left, _local6.top, ((_arg1 - _local6.right) - _local6.left), ((_arg2 - _local6.bottom) - _local6.top));
					_local7.endFill();
				};
			};
			var _local3:String = getStyle("borderStyle");
			if ((((((FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0)) && ((((_local3 == "alert")) || ((_local3 == "default")))))) && ((getStyle("headerColors") == null)))){
				_local11 = getStyle("highlightAlphas");
				_local12 = (_local11) ? _local11[0] : 0.3;
				drawRoundRect(0, 0, _arg1, _arg2, {tl:radius, tr:radius, bl:0, br:0}, 0xFFFFFF, _local12, null, GradientType.LINEAR, null, {x:0, y:1, w:_arg1, h:(_arg2 - 1), r:{tl:radius, tr:radius, bl:0, br:0}});
			};
		}
		mx_internal function drawDropShadow(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number):void{
			var _local11:Number;
			var _local12:Boolean;
			if ((((((((getStyle("dropShadowEnabled") == false)) || ((getStyle("dropShadowEnabled") == "false")))) || ((_arg3 == 0)))) || ((_arg4 == 0)))){
				return;
			};
			var _local9:Number = getStyle("shadowDistance");
			var _local10:String = getStyle("shadowDirection");
			if (getStyle("borderStyle") == "applicationControlBar"){
				_local12 = getStyle("docked");
				_local11 = (_local12) ? 90 : getDropShadowAngle(_local9, _local10);
				_local9 = Math.abs(_local9);
			} else {
				_local11 = getDropShadowAngle(_local9, _local10);
				_local9 = (Math.abs(_local9) + 2);
			};
			if (!dropShadow){
				dropShadow = new RectangularDropShadow();
			};
			dropShadow.distance = _local9;
			dropShadow.angle = _local11;
			dropShadow.color = getStyle("dropShadowColor");
			dropShadow.alpha = 0.4;
			dropShadow.tlRadius = _arg5;
			dropShadow.trRadius = _arg6;
			dropShadow.blRadius = _arg8;
			dropShadow.brRadius = _arg7;
			dropShadow.drawShadow(graphics, _arg1, _arg2, _arg3, _arg4);
		}
		mx_internal function getBackgroundColor():Object{
			var _local2:Object;
			var _local1:IUIComponent = (parent as IUIComponent);
			if (((_local1) && (!(_local1.enabled)))){
				_local2 = getStyle("backgroundDisabledColor");
				if (((!((_local2 === null))) && (StyleManager.isValidStyleValue(_local2)))){
					return (_local2);
				};
			};
			return (getStyle("backgroundColor"));
		}
		mx_internal function draw3dBorder(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):void{
			var _local7:Number = width;
			var _local8:Number = height;
			drawDropShadow(0, 0, width, height, 0, 0, 0, 0);
			var _local9:Graphics = graphics;
			_local9.beginFill(_arg1);
			_local9.drawRect(0, 0, _local7, _local8);
			_local9.drawRect(1, 0, (_local7 - 2), _local8);
			_local9.endFill();
			_local9.beginFill(_arg2);
			_local9.drawRect(1, 0, (_local7 - 2), 1);
			_local9.endFill();
			_local9.beginFill(_arg3);
			_local9.drawRect(1, (_local8 - 1), (_local7 - 2), 1);
			_local9.endFill();
			_local9.beginFill(_arg4);
			_local9.drawRect(1, 1, (_local7 - 2), 1);
			_local9.endFill();
			_local9.beginFill(_arg5);
			_local9.drawRect(1, (_local8 - 2), (_local7 - 2), 1);
			_local9.endFill();
			_local9.beginFill(_arg6);
			_local9.drawRect(1, 2, (_local7 - 2), (_local8 - 4));
			_local9.drawRect(2, 2, (_local7 - 4), (_local8 - 4));
			_local9.endFill();
		}
		mx_internal function getBackgroundColorMetrics():EdgeMetrics{
			return (borderMetrics);
		}
		mx_internal function getDropShadowAngle(_arg1:Number, _arg2:String):Number{
			if (_arg2 == "left"){
				return (((_arg1 >= 0)) ? 135 : 225);
				//unresolved jump
			};
			if (_arg2 == "right"){
				return (((_arg1 >= 0)) ? 45 : 315);
				//unresolved jump
			};
			return (((_arg1 >= 0)) ? 90 : 270);
		}
		override public function get borderMetrics():EdgeMetrics{
			var _local1:Number;
			var _local3:String;
			if (_borderMetrics){
				return (_borderMetrics);
			};
			var _local2:String = getStyle("borderStyle");
			if ((((_local2 == "default")) || ((_local2 == "alert")))){
				if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0){
					_borderMetrics = new EdgeMetrics(0, 0, 0, 0);
				} else {
					return (EdgeMetrics.EMPTY);
				};
			} else {
				if ((((_local2 == "controlBar")) || ((_local2 == "applicationControlBar")))){
					_borderMetrics = new EdgeMetrics(1, 1, 1, 1);
				} else {
					if (_local2 == "solid"){
						_local1 = getStyle("borderThickness");
						if (isNaN(_local1)){
							_local1 = 0;
						};
						_borderMetrics = new EdgeMetrics(_local1, _local1, _local1, _local1);
						_local3 = getStyle("borderSides");
						if (_local3 != "left top right bottom"){
							if (_local3.indexOf("left") == -1){
								_borderMetrics.left = 0;
							};
							if (_local3.indexOf("top") == -1){
								_borderMetrics.top = 0;
							};
							if (_local3.indexOf("right") == -1){
								_borderMetrics.right = 0;
							};
							if (_local3.indexOf("bottom") == -1){
								_borderMetrics.bottom = 0;
							};
						};
					} else {
						_local1 = BORDER_WIDTHS[_local2];
						if (isNaN(_local1)){
							_local1 = 0;
						};
						_borderMetrics = new EdgeMetrics(_local1, _local1, _local1, _local1);
					};
				};
			};
			return (_borderMetrics);
		}

	}
}//package mx.skins.halo 

****************

//HaloColors (mx.skins.halo.HaloColors)
package mx.skins.halo {
	import mx.utils.*;

	public class HaloColors {

		mx_internal static const VERSION:String = "3.5.0.12683";

		private static var cache:Object = {};

		public static function getCacheKey(... _args):String{
			return (_args.join(","));
		}
		public static function addHaloColors(_arg1:Object, _arg2:uint, _arg3:uint, _arg4:uint):void{
			var _local5:String = getCacheKey(_arg2, _arg3, _arg4);
			var _local6:Object = cache[_local5];
			if (!_local6){
				_local6 = (cache[_local5] = {});
				_local6.themeColLgt = ColorUtil.adjustBrightness(_arg2, 100);
				_local6.themeColDrk1 = ColorUtil.adjustBrightness(_arg2, -75);
				_local6.themeColDrk2 = ColorUtil.adjustBrightness(_arg2, -25);
				_local6.fillColorBright1 = ColorUtil.adjustBrightness2(_arg3, 15);
				_local6.fillColorBright2 = ColorUtil.adjustBrightness2(_arg4, 15);
				_local6.fillColorPress1 = ColorUtil.adjustBrightness2(_arg2, 85);
				_local6.fillColorPress2 = ColorUtil.adjustBrightness2(_arg2, 60);
				_local6.bevelHighlight1 = ColorUtil.adjustBrightness2(_arg3, 40);
				_local6.bevelHighlight2 = ColorUtil.adjustBrightness2(_arg4, 40);
			};
			_arg1.themeColLgt = _local6.themeColLgt;
			_arg1.themeColDrk1 = _local6.themeColDrk1;
			_arg1.themeColDrk2 = _local6.themeColDrk2;
			_arg1.fillColorBright1 = _local6.fillColorBright1;
			_arg1.fillColorBright2 = _local6.fillColorBright2;
			_arg1.fillColorPress1 = _local6.fillColorPress1;
			_arg1.fillColorPress2 = _local6.fillColorPress2;
			_arg1.bevelHighlight1 = _local6.bevelHighlight1;
			_arg1.bevelHighlight2 = _local6.bevelHighlight2;
		}

	}
}//package mx.skins.halo 

****************

//HaloFocusRect (mx.skins.halo.HaloFocusRect)
package mx.skins.halo {
	import flash.display.*;
	import mx.styles.*;
	import mx.utils.*;
	import mx.skins.*;

	public class HaloFocusRect extends ProgrammaticSkin implements IStyleClient {

		private var _focusColor:Number;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function get inheritingStyles():Object{
			return (styleName.inheritingStyles);
		}
		public function set inheritingStyles(_arg1:Object):void{
		}
		public function notifyStyleChangeInChildren(_arg1:String, _arg2:Boolean):void{
		}
		public function registerEffects(_arg1:Array):void{
		}
		public function regenerateStyleCache(_arg1:Boolean):void{
		}
		public function get styleDeclaration():CSSStyleDeclaration{
			return (CSSStyleDeclaration(styleName));
		}
		public function getClassStyleDeclarations():Array{
			return ([]);
		}
		public function get className():String{
			return ("HaloFocusRect");
		}
		public function clearStyle(_arg1:String):void{
			if (_arg1 == "focusColor"){
				_focusColor = NaN;
			};
		}
		public function setStyle(_arg1:String, _arg2):void{
			if (_arg1 == "focusColor"){
				_focusColor = _arg2;
			};
		}
		public function set nonInheritingStyles(_arg1:Object):void{
		}
		public function get nonInheritingStyles():Object{
			return (styleName.nonInheritingStyles);
		}
		override protected function updateDisplayList(_arg1:Number, _arg2:Number):void{
			var _local12:Number;
			var _local13:Number;
			var _local14:Number;
			var _local15:Number;
			var _local16:Number;
			var _local17:Number;
			super.updateDisplayList(_arg1, _arg2);
			var _local3:String = getStyle("focusBlendMode");
			var _local4:Number = getStyle("focusAlpha");
			var _local5:Number = getStyle("focusColor");
			var _local6:Number = getStyle("cornerRadius");
			var _local7:Number = getStyle("focusThickness");
			var _local8:String = getStyle("focusRoundedCorners");
			var _local9:Number = getStyle("themeColor");
			var _local10:Number = _local5;
			if (isNaN(_local10)){
				_local10 = _local9;
			};
			var _local11:Graphics = graphics;
			_local11.clear();
			if (_local3){
				blendMode = _local3;
			};
			if (((!((_local8 == "tl tr bl br"))) && ((_local6 > 0)))){
				_local12 = 0;
				_local13 = 0;
				_local14 = 0;
				_local15 = 0;
				_local16 = (_local6 + _local7);
				if (_local8.indexOf("tl") >= 0){
					_local12 = _local16;
				};
				if (_local8.indexOf("tr") >= 0){
					_local14 = _local16;
				};
				if (_local8.indexOf("bl") >= 0){
					_local13 = _local16;
				};
				if (_local8.indexOf("br") >= 0){
					_local15 = _local16;
				};
				_local11.beginFill(_local10, _local4);
				GraphicsUtil.drawRoundRectComplex(_local11, 0, 0, _arg1, _arg2, _local12, _local14, _local13, _local15);
				_local12 = (_local12) ? _local6 : 0;
				_local14 = (_local14) ? _local6 : 0;
				_local13 = (_local13) ? _local6 : 0;
				_local15 = (_local15) ? _local6 : 0;
				GraphicsUtil.drawRoundRectComplex(_local11, _local7, _local7, (_arg1 - (2 * _local7)), (_arg2 - (2 * _local7)), _local12, _local14, _local13, _local15);
				_local11.endFill();
				_local16 = (_local6 + (_local7 / 2));
				_local12 = (_local12) ? _local16 : 0;
				_local14 = (_local14) ? _local16 : 0;
				_local13 = (_local13) ? _local16 : 0;
				_local15 = (_local15) ? _local16 : 0;
				_local11.beginFill(_local10, _local4);
				GraphicsUtil.drawRoundRectComplex(_local11, (_local7 / 2), (_local7 / 2), (_arg1 - _local7), (_arg2 - _local7), _local12, _local14, _local13, _local15);
				_local12 = (_local12) ? _local6 : 0;
				_local14 = (_local14) ? _local6 : 0;
				_local13 = (_local13) ? _local6 : 0;
				_local15 = (_local15) ? _local6 : 0;
				GraphicsUtil.drawRoundRectComplex(_local11, _local7, _local7, (_arg1 - (2 * _local7)), (_arg2 - (2 * _local7)), _local12, _local14, _local13, _local15);
				_local11.endFill();
			} else {
				_local11.beginFill(_local10, _local4);
				_local17 = (((_local6 > 0)) ? (_local6 + _local7) : 0 * 2);
				_local11.drawRoundRect(0, 0, _arg1, _arg2, _local17, _local17);
				_local17 = (_local6 * 2);
				_local11.drawRoundRect(_local7, _local7, (_arg1 - (2 * _local7)), (_arg2 - (2 * _local7)), _local17, _local17);
				_local11.endFill();
				_local11.beginFill(_local10, _local4);
				_local17 = (((_local6 > 0)) ? (_local6 + (_local7 / 2)) : 0 * 2);
				_local11.drawRoundRect((_local7 / 2), (_local7 / 2), (_arg1 - _local7), (_arg2 - _local7), _local17, _local17);
				_local17 = (_local6 * 2);
				_local11.drawRoundRect(_local7, _local7, (_arg1 - (2 * _local7)), (_arg2 - (2 * _local7)), _local17, _local17);
				_local11.endFill();
			};
		}
		override public function getStyle(_arg1:String){
			return (((_arg1 == "focusColor")) ? _focusColor : super.getStyle(_arg1));
		}
		public function set styleDeclaration(_arg1:CSSStyleDeclaration):void{
		}

	}
}//package mx.skins.halo 

****************

//ListDropIndicator (mx.skins.halo.ListDropIndicator)
package mx.skins.halo {
	import flash.display.*;
	import mx.skins.*;

	public class ListDropIndicator extends ProgrammaticSkin {

		public var direction:String;// = "horizontal"

		mx_internal static const VERSION:String = "3.5.0.12683";

		override protected function updateDisplayList(_arg1:Number, _arg2:Number):void{
			super.updateDisplayList(_arg1, _arg2);
			var _local3:Graphics = graphics;
			_local3.clear();
			_local3.lineStyle(2, 2831164);
			if (direction == "horizontal"){
				_local3.moveTo(0, 0);
				_local3.lineTo(_arg1, 0);
			} else {
				_local3.moveTo(0, 0);
				_local3.lineTo(0, _arg2);
			};
		}

	}
}//package mx.skins.halo 

****************

//PanelSkin (mx.skins.halo.PanelSkin)
package mx.skins.halo {
	import mx.core.*;
	import flash.display.*;
	import flash.utils.*;

	public class PanelSkin extends HaloBorder {

		private var oldControlBarHeight:Number;
		protected var _panelBorderMetrics:EdgeMetrics;
		private var oldHeaderHeight:Number;

		mx_internal static const VERSION:String = "3.5.0.12683";

		private static var panels:Object = {};

		override public function styleChanged(_arg1:String):void{
			super.styleChanged(_arg1);
			if ((((((((((((((((((_arg1 == null)) || ((_arg1 == "styleName")))) || ((_arg1 == "borderStyle")))) || ((_arg1 == "borderThickness")))) || ((_arg1 == "borderThicknessTop")))) || ((_arg1 == "borderThicknessBottom")))) || ((_arg1 == "borderThicknessLeft")))) || ((_arg1 == "borderThicknessRight")))) || ((_arg1 == "borderSides")))){
				_panelBorderMetrics = null;
			};
			invalidateDisplayList();
		}
		override mx_internal function drawBorder(_arg1:Number, _arg2:Number):void{
			var _local4:Number;
			var _local5:Number;
			var _local6:Number;
			var _local7:Graphics;
			var _local8:IContainer;
			var _local9:EdgeMetrics;
			super.drawBorder(_arg1, _arg2);
			if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0){
				return;
			};
			var _local3:String = getStyle("borderStyle");
			if (_local3 == "default"){
				_local4 = getStyle("backgroundAlpha");
				_local5 = getStyle("borderAlpha");
				backgroundAlphaName = "borderAlpha";
				radiusObj = null;
				radius = getStyle("cornerRadius");
				bRoundedCorners = (getStyle("roundedBottomCorners").toString().toLowerCase() == "true");
				_local6 = (bRoundedCorners) ? radius : 0;
				_local7 = graphics;
				drawDropShadow(0, 0, _arg1, _arg2, radius, radius, _local6, _local6);
				if (!bRoundedCorners){
					radiusObj = {};
				};
				_local8 = (parent as IContainer);
				if (_local8){
					_local9 = _local8.viewMetrics;
					backgroundHole = {x:_local9.left, y:_local9.top, w:Math.max(0, ((_arg1 - _local9.left) - _local9.right)), h:Math.max(0, ((_arg2 - _local9.top) - _local9.bottom)), r:0};
					if ((((backgroundHole.w > 0)) && ((backgroundHole.h > 0)))){
						if (_local4 != _local5){
							drawDropShadow(backgroundHole.x, backgroundHole.y, backgroundHole.w, backgroundHole.h, 0, 0, 0, 0);
						};
						_local7.beginFill(Number(backgroundColor), _local4);
						_local7.drawRect(backgroundHole.x, backgroundHole.y, backgroundHole.w, backgroundHole.h);
						_local7.endFill();
					};
				};
				backgroundColor = getStyle("borderColor");
			};
		}
		override public function get borderMetrics():EdgeMetrics{
			var _local4:Number;
			if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0){
				return (super.borderMetrics);
			};
			var _local1:Boolean = isPanel(parent);
			var _local2:IUIComponent = (_local1) ? Object(parent)._controlBar : null;
			var _local3:Number = (_local1) ? Object(parent).getHeaderHeightProxy() : NaN;
			if (((_local2) && (_local2.includeInLayout))){
				_local4 = _local2.getExplicitOrMeasuredHeight();
			};
			if (((!((_local4 == oldControlBarHeight))) && (!(((isNaN(oldControlBarHeight)) && (isNaN(_local4))))))){
				_panelBorderMetrics = null;
			};
			if (((!((_local3 == oldHeaderHeight))) && (!(((isNaN(_local3)) && (isNaN(oldHeaderHeight))))))){
				_panelBorderMetrics = null;
			};
			if (_panelBorderMetrics){
				return (_panelBorderMetrics);
			};
			var _local5:EdgeMetrics = super.borderMetrics;
			var _local6:EdgeMetrics = new EdgeMetrics(0, 0, 0, 0);
			var _local7:Number = getStyle("borderThickness");
			var _local8:Number = getStyle("borderThicknessLeft");
			var _local9:Number = getStyle("borderThicknessTop");
			var _local10:Number = getStyle("borderThicknessRight");
			var _local11:Number = getStyle("borderThicknessBottom");
			_local6.left = (_local5.left + (isNaN(_local8)) ? _local7 : _local8);
			_local6.top = (_local5.top + (isNaN(_local9)) ? _local7 : _local9);
			_local6.right = (_local5.bottom + (isNaN(_local10)) ? _local7 : _local10);
			_local6.bottom = (_local5.bottom + (isNaN(_local11)) ? (((_local2) && (!(isNaN(_local9))))) ? _local9 : (isNaN(_local8)) ? _local7 : _local8 : _local11);
			oldHeaderHeight = _local3;
			if (!isNaN(_local3)){
				_local6.top = (_local6.top + _local3);
			};
			oldControlBarHeight = _local4;
			if (!isNaN(_local4)){
				_local6.bottom = (_local6.bottom + _local4);
			};
			_panelBorderMetrics = _local6;
			return (_panelBorderMetrics);
		}
		override mx_internal function drawBackground(_arg1:Number, _arg2:Number):void{
			var _local3:Array;
			var _local4:Number;
			super.drawBackground(_arg1, _arg2);
			if ((((getStyle("headerColors") == null)) && ((getStyle("borderStyle") == "default")))){
				_local3 = getStyle("highlightAlphas");
				_local4 = (_local3) ? _local3[0] : 0.3;
				drawRoundRect(0, 0, _arg1, _arg2, {tl:radius, tr:radius, bl:0, br:0}, 0xFFFFFF, _local4, null, GradientType.LINEAR, null, {x:0, y:1, w:_arg1, h:(_arg2 - 1), r:{tl:radius, tr:radius, bl:0, br:0}});
			};
		}
		override mx_internal function getBackgroundColorMetrics():EdgeMetrics{
			if (getStyle("borderStyle") == "default"){
				return (EdgeMetrics.EMPTY);
			};
			return (super.borderMetrics);
		}

		private static function isPanel(_arg1:Object):Boolean{
			var s:String;
			var x:XML;
			var parent = _arg1;
			s = getQualifiedClassName(parent);
			if (panels[s] == 1){
				return (true);
			};
			if (panels[s] == 0){
				return (false);
			};
			if (s == "mx.containers::Panel"){
				(panels[s] == 1);
				return (true);
			};
			x = describeType(parent);
			var xmllist:XMLList = x.extendsClass.(@type == "mx.containers::Panel");
			if (xmllist.length() == 0){
				panels[s] = 0;
				return (false);
			};
			panels[s] = 1;
			return (true);
		}

	}
}//package mx.skins.halo 

****************

//ScrollArrowSkin (mx.skins.halo.ScrollArrowSkin)
package mx.skins.halo {
	import mx.core.*;
	import flash.display.*;
	import mx.styles.*;
	import mx.controls.scrollClasses.*;
	import mx.utils.*;
	import mx.skins.*;

	public class ScrollArrowSkin extends Border {

		mx_internal static const VERSION:String = "3.5.0.12683";

		private static var cache:Object = {};

		override public function get measuredWidth():Number{
			return (ScrollBar.THICKNESS);
		}
		override public function get measuredHeight():Number{
			return (ScrollBar.THICKNESS);
		}
		override protected function updateDisplayList(_arg1:Number, _arg2:Number):void{
			var _local13:Array;
			var _local15:Array;
			var _local16:Array;
			var _local17:Array;
			var _local18:Array;
			var _local19:Array;
			var _local20:Array;
			super.updateDisplayList(_arg1, _arg2);
			var _local3:Number = getStyle("backgroundColor");
			var _local4:uint = getStyle("borderColor");
			var _local5:Array = getStyle("fillAlphas");
			var _local6:Array = getStyle("fillColors");
			StyleManager.getColorNames(_local6);
			var _local7:Array = getStyle("highlightAlphas");
			var _local8:uint = getStyle("themeColor");
			var _local9 = (name.charAt(0) == "u");
			var _local10:uint = getStyle("iconColor");
			var _local11:Object = calcDerivedStyles(_local8, _local4, _local6[0], _local6[1]);
			var _local12:Boolean = ((((parent) && (parent.parent))) && (!((parent.parent.rotation == 0))));
			if (((_local9) && (!(_local12)))){
				_local13 = [_local4, _local11.borderColorDrk1];
			} else {
				_local13 = [_local11.borderColorDrk1, _local11.borderColorDrk2];
			};
			var _local14:Graphics = graphics;
			_local14.clear();
			if (isNaN(_local3)){
				_local3 = 0xFFFFFF;
			};
			if ((((FlexVersion.compatibilityVersion >= FlexVersion.VERSION_3_0)) || ((name.indexOf("Disabled") == -1)))){
				drawRoundRect(0, 0, _arg1, _arg2, 0, _local3, 1);
			};
			switch (name){
				case "upArrowUpSkin":
					if (!_local12){
						drawRoundRect(1, (_arg2 - 4), (_arg1 - 2), 8, 0, [_local11.borderColorDrk1, _local11.borderColorDrk1], [1, 0], verticalGradientMatrix(1, (_arg2 - 4), (_arg1 - 2), 8), GradientType.LINEAR, null, {x:1, y:(_arg2 - 4), w:(_arg1 - 2), h:4, r:0});
					};
				case "downArrowUpSkin":
					_local15 = [_local6[0], _local6[1]];
					_local16 = [_local5[0], _local5[1]];
					drawRoundRect(0, 0, _arg1, _arg2, 0, _local13, 1, (_local12) ? horizontalGradientMatrix(0, 0, _arg1, _arg2) : verticalGradientMatrix(0, 0, _arg1, _arg2), GradientType.LINEAR, null, {x:1, y:1, w:(_arg1 - 2), h:(_arg2 - 2), r:0});
					drawRoundRect(1, 1, (_arg1 - 2), (_arg2 - 2), 0, _local15, _local16, (_local12) ? horizontalGradientMatrix(0, 0, (_arg1 - 2), (_arg2 - 2)) : verticalGradientMatrix(0, 0, (_arg1 - 2), (_arg2 - (2 / 2))));
					drawRoundRect(1, 1, (_arg1 - 2), (_arg2 - (2 / 2)), 0, [0xFFFFFF, 0xFFFFFF], _local7, (_local12) ? horizontalGradientMatrix(0, 0, (_arg1 - 2), (_arg2 - 2)) : verticalGradientMatrix(0, 0, (_arg1 - 2), (_arg2 - (2 / 2))));
					break;
				case "upArrowOverSkin":
					if (!_local12){
						drawRoundRect(1, (_arg2 - 4), (_arg1 - 2), 8, 0, [_local11.borderColorDrk1, _local11.borderColorDrk1], [1, 0], verticalGradientMatrix(1, (_arg2 - 4), (_arg1 - 2), 8), GradientType.LINEAR, null, {x:1, y:(_arg2 - 4), w:(_arg1 - 2), h:4, r:0});
					};
				case "downArrowOverSkin":
					if (_local6.length > 2){
						_local17 = [_local6[2], _local6[3]];
					} else {
						_local17 = [_local6[0], _local6[1]];
					};
					if (_local5.length > 2){
						_local18 = [_local5[2], _local5[3]];
					} else {
						_local18 = [_local5[0], _local5[1]];
					};
					drawRoundRect(0, 0, _arg1, _arg2, 0, 0xFFFFFF, 1);
					drawRoundRect(0, 0, _arg1, _arg2, 0, [_local8, _local11.themeColDrk1], 1, (_local12) ? horizontalGradientMatrix(0, 0, _arg1, _arg2) : verticalGradientMatrix(0, 0, _arg1, _arg2), GradientType.LINEAR, null, {x:1, y:1, w:(_arg1 - 2), h:(_arg2 - 2), r:0});
					drawRoundRect(1, 1, (_arg1 - 2), (_arg2 - 2), 0, _local17, _local18, (_local12) ? horizontalGradientMatrix(0, 0, (_arg1 - 2), (_arg2 - 2)) : verticalGradientMatrix(0, 0, (_arg1 - 2), (_arg2 - 2)));
					drawRoundRect(1, 1, (_arg1 - 2), (_arg2 - (2 / 2)), 0, [0xFFFFFF, 0xFFFFFF], _local7, (_local12) ? horizontalGradientMatrix(0, 0, (_arg1 - 2), (_arg2 - 2)) : verticalGradientMatrix(0, 0, (_arg1 - 2), (_arg2 - (2 / 2))));
					break;
				case "upArrowDownSkin":
					if (!_local12){
						drawRoundRect(1, (_arg2 - 4), (_arg1 - 2), 8, 0, [_local11.borderColorDrk1, _local11.borderColorDrk1], [1, 0], (_local12) ? horizontalGradientMatrix(1, (_arg2 - 4), (_arg1 - 2), 8) : verticalGradientMatrix(1, (_arg2 - 4), (_arg1 - 2), 8), GradientType.LINEAR, null, {x:1, y:(_arg2 - 4), w:(_arg1 - 2), h:4, r:0});
					};
				case "downArrowDownSkin":
					drawRoundRect(0, 0, _arg1, _arg2, 0, [_local8, _local11.themeColDrk1], 1, (_local12) ? horizontalGradientMatrix(0, 0, _arg1, _arg2) : verticalGradientMatrix(0, 0, _arg1, _arg2), GradientType.LINEAR, null, {x:1, y:1, w:(_arg1 - 2), h:(_arg2 - 2), r:0});
					drawRoundRect(1, 1, (_arg1 - 2), (_arg2 - 2), 0, [_local11.fillColorPress1, _local11.fillColorPress2], 1, (_local12) ? horizontalGradientMatrix(0, 0, (_arg1 - 2), (_arg2 - 2)) : verticalGradientMatrix(0, 0, (_arg1 - 2), (_arg2 - 2)));
					drawRoundRect(1, 1, (_arg1 - 2), (_arg2 - (2 / 2)), 0, [0xFFFFFF, 0xFFFFFF], _local7, (_local12) ? horizontalGradientMatrix(0, 0, (_arg1 - 2), (_arg2 - 2)) : verticalGradientMatrix(0, 0, (_arg1 - 2), (_arg2 - (2 / 2))));
					break;
				case "upArrowDisabledSkin":
					if (FlexVersion.compatibilityVersion >= FlexVersion.VERSION_3_0){
						if (!_local12){
							drawRoundRect(1, (_arg2 - 4), (_arg1 - 2), 8, 0, [_local11.borderColorDrk1, _local11.borderColorDrk1], [0.5, 0], verticalGradientMatrix(1, (_arg2 - 4), (_arg1 - 2), 8), GradientType.LINEAR, null, {x:1, y:(_arg2 - 4), w:(_arg1 - 2), h:4, r:0});
						};
					};
				case "downArrowDisabledSkin":
					if (FlexVersion.compatibilityVersion >= FlexVersion.VERSION_3_0){
						_local19 = [_local6[0], _local6[1]];
						_local20 = [(_local5[0] - 0.15), (_local5[1] - 0.15)];
						drawRoundRect(0, 0, _arg1, _arg2, 0, _local13, 0.5, (_local12) ? horizontalGradientMatrix(0, 0, _arg1, _arg2) : verticalGradientMatrix(0, 0, _arg1, _arg2), GradientType.LINEAR, null, {x:1, y:1, w:(_arg1 - 2), h:(_arg2 - 2), r:0});
						drawRoundRect(1, 1, (_arg1 - 2), (_arg2 - 2), 0, _local19, _local20, (_local12) ? horizontalGradientMatrix(0, 0, (_arg1 - 2), (_arg2 - 2)) : verticalGradientMatrix(0, 0, (_arg1 - 2), (_arg2 - (2 / 2))));
						_local10 = getStyle("disabledIconColor");
					} else {
						drawRoundRect(0, 0, _arg1, _arg2, 0, 0xFFFFFF, 0);
						return;
					};
					break;
				default:
					drawRoundRect(0, 0, _arg1, _arg2, 0, 0xFFFFFF, 0);
					return;
			};
			_local14.beginFill(_local10);
			if (_local9){
				_local14.moveTo((_arg1 / 2), 6);
				_local14.lineTo((_arg1 - 5), (_arg2 - 6));
				_local14.lineTo(5, (_arg2 - 6));
				_local14.lineTo((_arg1 / 2), 6);
			} else {
				_local14.moveTo((_arg1 / 2), (_arg2 - 6));
				_local14.lineTo((_arg1 - 5), 6);
				_local14.lineTo(5, 6);
				_local14.lineTo((_arg1 / 2), (_arg2 - 6));
			};
			_local14.endFill();
		}

		private static function calcDerivedStyles(_arg1:uint, _arg2:uint, _arg3:uint, _arg4:uint):Object{
			var _local6:Object;
			var _local5:String = HaloColors.getCacheKey(_arg1, _arg2, _arg3, _arg4);
			if (!cache[_local5]){
				_local6 = (cache[_local5] = {});
				HaloColors.addHaloColors(_local6, _arg1, _arg3, _arg4);
				_local6.borderColorDrk1 = ColorUtil.adjustBrightness2(_arg2, -25);
				_local6.borderColorDrk2 = ColorUtil.adjustBrightness2(_arg2, -50);
			};
			return (cache[_local5]);
		}

	}
}//package mx.skins.halo 

****************

//ScrollThumbSkin (mx.skins.halo.ScrollThumbSkin)
package mx.skins.halo {
	import flash.display.*;
	import mx.styles.*;
	import mx.utils.*;
	import mx.skins.*;

	public class ScrollThumbSkin extends Border {

		mx_internal static const VERSION:String = "3.5.0.12683";

		private static var cache:Object = {};

		override public function get measuredWidth():Number{
			return (16);
		}
		override public function get measuredHeight():Number{
			return (10);
		}
		override protected function updateDisplayList(_arg1:Number, _arg2:Number):void{
			var _local17:Array;
			var _local18:Array;
			var _local19:Array;
			var _local20:Array;
			super.updateDisplayList(_arg1, _arg2);
			var _local3:Number = getStyle("backgroundColor");
			var _local4:uint = getStyle("borderColor");
			var _local5:Number = getStyle("cornerRadius");
			var _local6:Array = getStyle("fillAlphas");
			var _local7:Array = getStyle("fillColors");
			StyleManager.getColorNames(_local7);
			var _local8:Array = getStyle("highlightAlphas");
			var _local9:uint = getStyle("themeColor");
			var _local10:uint = 7305079;
			var _local11:Object = calcDerivedStyles(_local9, _local4, _local7[0], _local7[1]);
			var _local12:Number = Math.max((_local5 - 1), 0);
			var _local13:Object = {tl:0, tr:_local12, bl:0, br:_local12};
			_local12 = Math.max((_local12 - 1), 0);
			var _local14:Object = {tl:0, tr:_local12, bl:0, br:_local12};
			var _local15:Boolean = ((((parent) && (parent.parent))) && (!((parent.parent.rotation == 0))));
			if (isNaN(_local3)){
				_local3 = 0xFFFFFF;
			};
			graphics.clear();
			drawRoundRect(1, 0, (_arg1 - 3), _arg2, _local13, _local3, 1);
			switch (name){
				case "thumbUpSkin":
				default:
					_local17 = [_local7[0], _local7[1]];
					_local18 = [_local6[0], _local6[1]];
					drawRoundRect(0, 0, _arg1, _arg2, 0, 0xFFFFFF, 0);
					if (_local15){
						drawRoundRect(1, 0, (_arg1 - 2), _arg2, _local5, [_local11.borderColorDrk1, _local11.borderColorDrk1], [1, 0], horizontalGradientMatrix(2, 0, _arg1, _arg2), GradientType.LINEAR, null, {x:1, y:1, w:(_arg1 - 4), h:(_arg2 - 2), r:_local14});
					} else {
						drawRoundRect(1, (_arg2 - _local12), (_arg1 - 3), (_local12 + 4), {tl:0, tr:0, bl:0, br:_local12}, [_local11.borderColorDrk1, _local11.borderColorDrk1], [1, 0], (_local15) ? horizontalGradientMatrix(0, (_arg2 - 4), (_arg1 - 3), 8) : verticalGradientMatrix(0, (_arg2 - 4), (_arg1 - 3), 8), GradientType.LINEAR, null, {x:1, y:(_arg2 - _local12), w:(_arg1 - 4), h:_local12, r:{tl:0, tr:0, bl:0, br:(_local12 - 1)}});
					};
					drawRoundRect(1, 0, (_arg1 - 3), _arg2, _local13, [_local4, _local11.borderColorDrk1], 1, (_local15) ? horizontalGradientMatrix(0, 0, _arg1, _arg2) : verticalGradientMatrix(0, 0, _arg1, _arg2), GradientType.LINEAR, null, {x:1, y:1, w:(_arg1 - 4), h:(_arg2 - 2), r:_local14});
					drawRoundRect(1, 1, (_arg1 - 4), (_arg2 - 2), _local14, _local17, _local18, (_local15) ? horizontalGradientMatrix(1, 0, (_arg1 - 2), (_arg2 - 2)) : verticalGradientMatrix(1, 0, (_arg1 - 2), (_arg2 - 2)));
					if (_local15){
						drawRoundRect(1, 0, ((_arg1 - 4) / 2), (_arg2 - 2), 0, [0xFFFFFF, 0xFFFFFF], _local8, horizontalGradientMatrix(1, 1, (_arg1 - 4), ((_arg2 - 2) / 2)));
					} else {
						drawRoundRect(1, 1, (_arg1 - 4), ((_arg2 - 2) / 2), _local14, [0xFFFFFF, 0xFFFFFF], _local8, (_local15) ? horizontalGradientMatrix(1, 0, ((_arg1 - 4) / 2), (_arg2 - 2)) : verticalGradientMatrix(1, 1, (_arg1 - 4), ((_arg2 - 2) / 2)));
					};
					break;
				case "thumbOverSkin":
					if (_local7.length > 2){
						_local19 = [_local7[2], _local7[3]];
					} else {
						_local19 = [_local7[0], _local7[1]];
					};
					if (_local6.length > 2){
						_local20 = [_local6[2], _local6[3]];
					} else {
						_local20 = [_local6[0], _local6[1]];
					};
					drawRoundRect(0, 0, _arg1, _arg2, 0, 0xFFFFFF, 0);
					if (_local15){
						drawRoundRect(1, 0, (_arg1 - 2), _arg2, _local5, [_local11.borderColorDrk1, _local11.borderColorDrk1], [1, 0], horizontalGradientMatrix(2, 0, _arg1, _arg2), GradientType.LINEAR, null, {x:1, y:1, w:(_arg1 - 4), h:(_arg2 - 2), r:_local14});
					} else {
						drawRoundRect(1, (_arg2 - _local12), (_arg1 - 3), (_local12 + 4), {tl:0, tr:0, bl:0, br:_local12}, [_local11.borderColorDrk1, _local11.borderColorDrk1], [1, 0], (_local15) ? horizontalGradientMatrix(0, (_arg2 - 4), (_arg1 - 3), 8) : verticalGradientMatrix(0, (_arg2 - 4), (_arg1 - 3), 8), GradientType.LINEAR, null, {x:1, y:(_arg2 - _local12), w:(_arg1 - 4), h:_local12, r:{tl:0, tr:0, bl:0, br:(_local12 - 1)}});
					};
					drawRoundRect(1, 0, (_arg1 - 3), _arg2, _local13, [_local9, _local11.themeColDrk1], 1, (_local15) ? horizontalGradientMatrix(1, 0, _arg1, _arg2) : verticalGradientMatrix(0, 0, _arg1, _arg2), GradientType.LINEAR, null, {x:1, y:1, w:(_arg1 - 4), h:(_arg2 - 2), r:_local14});
					drawRoundRect(1, 1, (_arg1 - 4), (_arg2 - 2), _local14, _local19, _local20, (_local15) ? horizontalGradientMatrix(1, 0, _arg1, _arg2) : verticalGradientMatrix(1, 0, _arg1, _arg2));
					break;
				case "thumbDownSkin":
					if (_local15){
						drawRoundRect(1, 0, (_arg1 - 2), _arg2, _local13, [_local11.borderColorDrk1, _local11.borderColorDrk1], [1, 0], horizontalGradientMatrix(2, 0, _arg1, _arg2), GradientType.LINEAR, null, {x:1, y:1, w:(_arg1 - 4), h:(_arg2 - 2), r:_local14});
					} else {
						drawRoundRect(1, (_arg2 - _local12), (_arg1 - 3), (_local12 + 4), {tl:0, tr:0, bl:0, br:_local12}, [_local11.borderColorDrk1, _local11.borderColorDrk1], [1, 0], (_local15) ? horizontalGradientMatrix(0, (_arg2 - 4), (_arg1 - 3), 8) : verticalGradientMatrix(0, (_arg2 - 4), (_arg1 - 3), 8), GradientType.LINEAR, null, {x:1, y:(_arg2 - _local12), w:(_arg1 - 4), h:_local12, r:{tl:0, tr:0, bl:0, br:(_local12 - 1)}});
					};
					drawRoundRect(1, 0, (_arg1 - 3), _arg2, _local13, [_local9, _local11.themeColDrk2], 1, (_local15) ? horizontalGradientMatrix(1, 0, _arg1, _arg2) : verticalGradientMatrix(0, 0, _arg1, _arg2), GradientType.LINEAR, null, {x:1, y:1, w:(_arg1 - 4), h:(_arg2 - 2), r:_local14});
					drawRoundRect(1, 1, (_arg1 - 4), (_arg2 - 2), _local14, [_local11.fillColorPress1, _local11.fillColorPress2], 1, (_local15) ? horizontalGradientMatrix(1, 0, _arg1, _arg2) : verticalGradientMatrix(1, 0, _arg1, _arg2));
					break;
				case "thumbDisabledSkin":
					drawRoundRect(0, 0, _arg1, _arg2, 0, 0xFFFFFF, 0);
					drawRoundRect(1, 0, (_arg1 - 3), _arg2, _local13, 0x999999, 0.5);
					drawRoundRect(1, 1, (_arg1 - 4), (_arg2 - 2), _local14, 0xFFFFFF, 0.5);
					break;
			};
			var _local16:Number = Math.floor(((_arg1 / 2) - 4));
			drawRoundRect(_local16, Math.floor(((_arg2 / 2) - 4)), 5, 1, 0, 0, 0.4);
			drawRoundRect(_local16, Math.floor(((_arg2 / 2) - 2)), 5, 1, 0, 0, 0.4);
			drawRoundRect(_local16, Math.floor((_arg2 / 2)), 5, 1, 0, 0, 0.4);
			drawRoundRect(_local16, Math.floor(((_arg2 / 2) + 2)), 5, 1, 0, 0, 0.4);
			drawRoundRect(_local16, Math.floor(((_arg2 / 2) + 4)), 5, 1, 0, 0, 0.4);
		}

		private static function calcDerivedStyles(_arg1:uint, _arg2:uint, _arg3:uint, _arg4:uint):Object{
			var _local6:Object;
			var _local5:String = HaloColors.getCacheKey(_arg1, _arg2, _arg3, _arg4);
			if (!cache[_local5]){
				_local6 = (cache[_local5] = {});
				HaloColors.addHaloColors(_local6, _arg1, _arg3, _arg4);
				_local6.borderColorDrk1 = ColorUtil.adjustBrightness2(_arg2, -50);
			};
			return (cache[_local5]);
		}

	}
}//package mx.skins.halo 

****************

//ScrollTrackSkin (mx.skins.halo.ScrollTrackSkin)
package mx.skins.halo {
	import mx.core.*;
	import flash.display.*;
	import mx.styles.*;
	import mx.utils.*;
	import mx.skins.*;

	public class ScrollTrackSkin extends Border {

		mx_internal static const VERSION:String = "3.5.0.12683";

		override public function get measuredWidth():Number{
			return (16);
		}
		override public function get measuredHeight():Number{
			return (1);
		}
		override protected function updateDisplayList(_arg1:Number, _arg2:Number):void{
			super.updateDisplayList(_arg1, _arg2);
			var _local3:Array = getStyle("trackColors");
			StyleManager.getColorNames(_local3);
			var _local4:uint = ColorUtil.adjustBrightness2(getStyle("borderColor"), -20);
			var _local5:uint = ColorUtil.adjustBrightness2(_local4, -30);
			graphics.clear();
			var _local6:Number = 1;
			if ((((name == "trackDisabledSkin")) && ((FlexVersion.compatibilityVersion >= FlexVersion.VERSION_3_0)))){
				_local6 = 0.2;
			};
			drawRoundRect(0, 0, _arg1, _arg2, 0, [_local4, _local5], _local6, verticalGradientMatrix(0, 0, _arg1, _arg2), GradientType.LINEAR, null, {x:1, y:1, w:(_arg1 - 2), h:(_arg2 - 2), r:0});
			drawRoundRect(1, 1, (_arg1 - 2), (_arg2 - 2), 0, _local3, _local6, horizontalGradientMatrix(1, 1, ((_arg1 / 3) * 2), (_arg2 - 2)));
		}

	}
}//package mx.skins.halo 

****************

//TitleBackground (mx.skins.halo.TitleBackground)
package mx.skins.halo {
	import flash.display.*;
	import mx.styles.*;
	import mx.utils.*;
	import mx.skins.*;

	public class TitleBackground extends ProgrammaticSkin {

		mx_internal static const VERSION:String = "3.5.0.12683";

		override protected function updateDisplayList(_arg1:Number, _arg2:Number):void{
			super.updateDisplayList(_arg1, _arg2);
			var _local3:Number = getStyle("borderAlpha");
			var _local4:Number = getStyle("cornerRadius");
			var _local5:Array = getStyle("highlightAlphas");
			var _local6:Array = getStyle("headerColors");
			var _local7 = !((_local6 == null));
			StyleManager.getColorNames(_local6);
			var _local8:Number = ColorUtil.adjustBrightness2((_local6) ? _local6[1] : 0xFFFFFF, -20);
			var _local9:Graphics = graphics;
			_local9.clear();
			if (_arg2 < 3){
				return;
			};
			if (_local7){
				_local9.lineStyle(0, _local8, _local3);
				_local9.moveTo(0, _arg2);
				_local9.lineTo(_arg1, _arg2);
				_local9.lineStyle(0, 0, 0);
				drawRoundRect(0, 0, _arg1, _arg2, {tl:_local4, tr:_local4, bl:0, br:0}, _local6, _local3, verticalGradientMatrix(0, 0, _arg1, _arg2));
				drawRoundRect(0, 0, _arg1, (_arg2 / 2), {tl:_local4, tr:_local4, bl:0, br:0}, [0xFFFFFF, 0xFFFFFF], _local5, verticalGradientMatrix(0, 0, _arg1, (_arg2 / 2)));
				drawRoundRect(0, 0, _arg1, _arg2, {tl:_local4, tr:_local4, bl:0, br:0}, 0xFFFFFF, _local5[0], null, GradientType.LINEAR, null, {x:0, y:1, w:_arg1, h:(_arg2 - 1), r:{tl:_local4, tr:_local4, bl:0, br:0}});
			};
		}

	}
}//package mx.skins.halo 

****************

//ToolTipBorder (mx.skins.halo.ToolTipBorder)
package mx.skins.halo {
	import mx.core.*;
	import flash.display.*;
	import mx.graphics.*;
	import mx.skins.*;
	import flash.filters.*;

	public class ToolTipBorder extends RectangularBorder {

		private var _borderMetrics:EdgeMetrics;
		private var dropShadow:RectangularDropShadow;

		mx_internal static const VERSION:String = "3.5.0.12683";

		override public function get borderMetrics():EdgeMetrics{
			if (_borderMetrics){
				return (_borderMetrics);
			};
			var _local1:String = getStyle("borderStyle");
			switch (_local1){
				case "errorTipRight":
					_borderMetrics = new EdgeMetrics(15, 1, 3, 3);
					break;
				case "errorTipAbove":
					_borderMetrics = new EdgeMetrics(3, 1, 3, 15);
					break;
				case "errorTipBelow":
					_borderMetrics = new EdgeMetrics(3, 13, 3, 3);
					break;
				default:
					_borderMetrics = new EdgeMetrics(3, 1, 3, 3);
					break;
			};
			return (_borderMetrics);
		}
		override protected function updateDisplayList(_arg1:Number, _arg2:Number):void{
			super.updateDisplayList(_arg1, _arg2);
			var _local3:String = getStyle("borderStyle");
			var _local4:uint = getStyle("backgroundColor");
			var _local5:Number = getStyle("backgroundAlpha");
			var _local6:uint = getStyle("borderColor");
			var _local7:Number = getStyle("cornerRadius");
			var _local8:uint = getStyle("shadowColor");
			var _local9:Number = 0.1;
			var _local10:Graphics = graphics;
			_local10.clear();
			filters = [];
			switch (_local3){
				case "none":
					break;
				case "errorTipRight":
					drawRoundRect(11, 0, (_arg1 - 11), (_arg2 - 2), 3, _local6, _local5);
					_local10.beginFill(_local6, _local5);
					_local10.moveTo(11, 7);
					_local10.lineTo(0, 13);
					_local10.lineTo(11, 19);
					_local10.moveTo(11, 7);
					_local10.endFill();
					filters = [new DropShadowFilter(2, 90, 0, 0.4)];
					break;
				case "errorTipAbove":
					drawRoundRect(0, 0, _arg1, (_arg2 - 13), 3, _local6, _local5);
					_local10.beginFill(_local6, _local5);
					_local10.moveTo(9, (_arg2 - 13));
					_local10.lineTo(15, (_arg2 - 2));
					_local10.lineTo(21, (_arg2 - 13));
					_local10.moveTo(9, (_arg2 - 13));
					_local10.endFill();
					filters = [new DropShadowFilter(2, 90, 0, 0.4)];
					break;
				case "errorTipBelow":
					drawRoundRect(0, 11, _arg1, (_arg2 - 13), 3, _local6, _local5);
					_local10.beginFill(_local6, _local5);
					_local10.moveTo(9, 11);
					_local10.lineTo(15, 0);
					_local10.lineTo(21, 11);
					_local10.moveTo(10, 11);
					_local10.endFill();
					filters = [new DropShadowFilter(2, 90, 0, 0.4)];
					break;
				default:
					drawRoundRect(3, 1, (_arg1 - 6), (_arg2 - 4), _local7, _local4, _local5);
					if (!dropShadow){
						dropShadow = new RectangularDropShadow();
					};
					dropShadow.distance = 3;
					dropShadow.angle = 90;
					dropShadow.color = 0;
					dropShadow.alpha = 0.4;
					dropShadow.tlRadius = (_local7 + 2);
					dropShadow.trRadius = (_local7 + 2);
					dropShadow.blRadius = (_local7 + 2);
					dropShadow.brRadius = (_local7 + 2);
					dropShadow.drawShadow(graphics, 3, 0, (_arg1 - 6), (_arg2 - 4));
					break;
			};
		}
		override public function styleChanged(_arg1:String):void{
			if ((((((_arg1 == "borderStyle")) || ((_arg1 == "styleName")))) || ((_arg1 == null)))){
				_borderMetrics = null;
			};
			invalidateDisplayList();
		}

	}
}//package mx.skins.halo 

****************

//Border (mx.skins.Border)
package mx.skins {
	import mx.core.*;

	public class Border extends ProgrammaticSkin implements IBorder {

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function get borderMetrics():EdgeMetrics{
			return (EdgeMetrics.EMPTY);
		}

	}
}//package mx.skins 

****************

//ProgrammaticSkin (mx.skins.ProgrammaticSkin)
package mx.skins {
	import mx.core.*;
	import flash.display.*;
	import mx.managers.*;
	import flash.geom.*;
	import mx.styles.*;
	import mx.utils.*;

	public class ProgrammaticSkin extends FlexShape implements IFlexDisplayObject, IInvalidating, ILayoutManagerClient, ISimpleStyleClient, IProgrammaticSkin {

		private var _initialized:Boolean;// = false
		private var _height:Number;
		private var invalidateDisplayListFlag:Boolean;// = false
		private var _styleName:IStyleClient;
		private var _nestLevel:int;// = 0
		private var _processedDescriptors:Boolean;// = false
		private var _updateCompletePendingFlag:Boolean;// = true
		private var _width:Number;

		mx_internal static const VERSION:String = "3.5.0.12683";

		private static var tempMatrix:Matrix = new Matrix();

		public function ProgrammaticSkin(){
			_width = measuredWidth;
			_height = measuredHeight;
		}
		public function getStyle(_arg1:String){
			return ((_styleName) ? _styleName.getStyle(_arg1) : null);
		}
		protected function updateDisplayList(_arg1:Number, _arg2:Number):void{
		}
		public function get nestLevel():int{
			return (_nestLevel);
		}
		public function set nestLevel(_arg1:int):void{
			_nestLevel = _arg1;
			invalidateDisplayList();
		}
		override public function get height():Number{
			return (_height);
		}
		public function get updateCompletePendingFlag():Boolean{
			return (_updateCompletePendingFlag);
		}
		protected function verticalGradientMatrix(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Matrix{
			return (rotatedGradientMatrix(_arg1, _arg2, _arg3, _arg4, 90));
		}
		public function validateSize(_arg1:Boolean=false):void{
		}
		public function invalidateDisplayList():void{
			if (((!(invalidateDisplayListFlag)) && ((nestLevel > 0)))){
				invalidateDisplayListFlag = true;
				UIComponentGlobals.layoutManager.invalidateDisplayList(this);
			};
		}
		public function set updateCompletePendingFlag(_arg1:Boolean):void{
			_updateCompletePendingFlag = _arg1;
		}
		protected function horizontalGradientMatrix(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Matrix{
			return (rotatedGradientMatrix(_arg1, _arg2, _arg3, _arg4, 0));
		}
		override public function set height(_arg1:Number):void{
			_height = _arg1;
			invalidateDisplayList();
		}
		public function set processedDescriptors(_arg1:Boolean):void{
			_processedDescriptors = _arg1;
		}
		public function validateDisplayList():void{
			invalidateDisplayListFlag = false;
			updateDisplayList(width, height);
		}
		public function get measuredWidth():Number{
			return (0);
		}
		override public function set width(_arg1:Number):void{
			_width = _arg1;
			invalidateDisplayList();
		}
		public function get measuredHeight():Number{
			return (0);
		}
		public function set initialized(_arg1:Boolean):void{
			_initialized = _arg1;
		}
		protected function drawRoundRect(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null, _arg6:Object=null, _arg7:Object=null, _arg8:Matrix=null, _arg9:String="linear", _arg10:Array=null, _arg11:Object=null):void{
			var _local13:Number;
			var _local14:Array;
			var _local15:Object;
			var _local12:Graphics = graphics;
			if ((((_arg3 == 0)) || ((_arg4 == 0)))){
				return;
			};
			if (_arg6 !== null){
				if ((_arg6 is uint)){
					_local12.beginFill(uint(_arg6), Number(_arg7));
				} else {
					if ((_arg6 is Array)){
						_local14 = ((_arg7 is Array)) ? (_arg7 as Array) : [_arg7, _arg7];
						if (!_arg10){
							_arg10 = [0, 0xFF];
						};
						_local12.beginGradientFill(_arg9, (_arg6 as Array), _local14, _arg10, _arg8);
					};
				};
			};
			if (!_arg5){
				_local12.drawRect(_arg1, _arg2, _arg3, _arg4);
			} else {
				if ((_arg5 is Number)){
					_local13 = (Number(_arg5) * 2);
					_local12.drawRoundRect(_arg1, _arg2, _arg3, _arg4, _local13, _local13);
				} else {
					GraphicsUtil.drawRoundRectComplex(_local12, _arg1, _arg2, _arg3, _arg4, _arg5.tl, _arg5.tr, _arg5.bl, _arg5.br);
				};
			};
			if (_arg11){
				_local15 = _arg11.r;
				if ((_local15 is Number)){
					_local13 = (Number(_local15) * 2);
					_local12.drawRoundRect(_arg11.x, _arg11.y, _arg11.w, _arg11.h, _local13, _local13);
				} else {
					GraphicsUtil.drawRoundRectComplex(_local12, _arg11.x, _arg11.y, _arg11.w, _arg11.h, _local15.tl, _local15.tr, _local15.bl, _local15.br);
				};
			};
			if (_arg6 !== null){
				_local12.endFill();
			};
		}
		public function get processedDescriptors():Boolean{
			return (_processedDescriptors);
		}
		public function set styleName(_arg1:Object):void{
			if (_styleName != _arg1){
				_styleName = (_arg1 as IStyleClient);
				invalidateDisplayList();
			};
		}
		public function setActualSize(_arg1:Number, _arg2:Number):void{
			var _local3:Boolean;
			if (_width != _arg1){
				_width = _arg1;
				_local3 = true;
			};
			if (_height != _arg2){
				_height = _arg2;
				_local3 = true;
			};
			if (_local3){
				invalidateDisplayList();
			};
		}
		public function styleChanged(_arg1:String):void{
			invalidateDisplayList();
		}
		override public function get width():Number{
			return (_width);
		}
		public function invalidateProperties():void{
		}
		public function get initialized():Boolean{
			return (_initialized);
		}
		protected function rotatedGradientMatrix(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number):Matrix{
			tempMatrix.createGradientBox(_arg3, _arg4, ((_arg5 * Math.PI) / 180), _arg1, _arg2);
			return (tempMatrix);
		}
		public function move(_arg1:Number, _arg2:Number):void{
			this.x = _arg1;
			this.y = _arg2;
		}
		public function get styleName():Object{
			return (_styleName);
		}
		public function validateNow():void{
			if (invalidateDisplayListFlag){
				validateDisplayList();
			};
		}
		public function invalidateSize():void{
		}
		public function validateProperties():void{
		}

	}
}//package mx.skins 

****************

//RectangularBorder (mx.skins.RectangularBorder)
package mx.skins {
	import mx.core.*;
	import flash.events.*;
	import flash.display.*;
	import mx.resources.*;
	import flash.geom.*;
	import mx.styles.*;
	import flash.utils.*;
	import flash.net.*;
	import flash.system.*;

	public class RectangularBorder extends Border implements IRectangularBorder {

		private var backgroundImage:DisplayObject;
		private var backgroundImageHeight:Number;
		private var _backgroundImageBounds:Rectangle;
		private var backgroundImageStyle:Object;
		private var backgroundImageWidth:Number;
		private var resourceManager:IResourceManager;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function RectangularBorder(){
			resourceManager = ResourceManager.getInstance();
			super();
			addEventListener(Event.REMOVED, removedHandler);
		}
		public function layoutBackgroundImage():void{
			var _local4:Number;
			var _local5:Number;
			var _local7:Number;
			var _local8:Number;
			var _local14:Number;
			var _local15:Graphics;
			var _local1:DisplayObject = parent;
			var _local2:EdgeMetrics = ((_local1 is IContainer)) ? IContainer(_local1).viewMetrics : borderMetrics;
			var _local3 = !((getStyle("backgroundAttachment") == "fixed"));
			if (_backgroundImageBounds){
				_local4 = _backgroundImageBounds.width;
				_local5 = _backgroundImageBounds.height;
			} else {
				_local4 = ((width - _local2.left) - _local2.right);
				_local5 = ((height - _local2.top) - _local2.bottom);
			};
			var _local6:Number = getBackgroundSize();
			if (isNaN(_local6)){
				_local7 = 1;
				_local8 = 1;
			} else {
				_local14 = (_local6 * 0.01);
				_local7 = ((_local14 * _local4) / backgroundImageWidth);
				_local8 = ((_local14 * _local5) / backgroundImageHeight);
			};
			backgroundImage.scaleX = _local7;
			backgroundImage.scaleY = _local8;
			var _local9:Number = Math.round((0.5 * (_local4 - (backgroundImageWidth * _local7))));
			var _local10:Number = Math.round((0.5 * (_local5 - (backgroundImageHeight * _local8))));
			backgroundImage.x = _local2.left;
			backgroundImage.y = _local2.top;
			var _local11:Shape = Shape(backgroundImage.mask);
			_local11.x = _local2.left;
			_local11.y = _local2.top;
			if (((_local3) && ((_local1 is IContainer)))){
				_local9 = (_local9 - IContainer(_local1).horizontalScrollPosition);
				_local10 = (_local10 - IContainer(_local1).verticalScrollPosition);
			};
			backgroundImage.alpha = getStyle("backgroundAlpha");
			backgroundImage.x = (backgroundImage.x + _local9);
			backgroundImage.y = (backgroundImage.y + _local10);
			var _local12:Number = ((width - _local2.left) - _local2.right);
			var _local13:Number = ((height - _local2.top) - _local2.bottom);
			if (((!((_local11.width == _local12))) || (!((_local11.height == _local13))))){
				_local15 = _local11.graphics;
				_local15.clear();
				_local15.beginFill(0xFFFFFF);
				_local15.drawRect(0, 0, _local12, _local13);
				_local15.endFill();
			};
		}
		public function set backgroundImageBounds(_arg1:Rectangle):void{
			if (((((_backgroundImageBounds) && (_arg1))) && (_backgroundImageBounds.equals(_arg1)))){
				return;
			};
			_backgroundImageBounds = _arg1;
			invalidateDisplayList();
		}
		private function getBackgroundSize():Number{
			var _local3:int;
			var _local1:Number = NaN;
			var _local2:Object = getStyle("backgroundSize");
			if (((_local2) && ((_local2 is String)))){
				_local3 = _local2.indexOf("%");
				if (_local3 != -1){
					_local1 = Number(_local2.substr(0, _local3));
				};
			};
			return (_local1);
		}
		private function removedHandler(_arg1:Event):void{
			var _local2:IChildList;
			if (backgroundImage){
				_local2 = ((parent is IRawChildrenContainer)) ? IRawChildrenContainer(parent).rawChildren : IChildList(parent);
				_local2.removeChild(backgroundImage.mask);
				_local2.removeChild(backgroundImage);
				backgroundImage = null;
			};
		}
		private function initBackgroundImage(_arg1:DisplayObject):void{
			backgroundImage = _arg1;
			if ((_arg1 is Loader)){
				backgroundImageWidth = Loader(_arg1).contentLoaderInfo.width;
				backgroundImageHeight = Loader(_arg1).contentLoaderInfo.height;
			} else {
				backgroundImageWidth = backgroundImage.width;
				backgroundImageHeight = backgroundImage.height;
				if ((_arg1 is ISimpleStyleClient)){
					ISimpleStyleClient(_arg1).styleName = styleName;
				};
			};
			var _local2:IChildList = ((parent is IRawChildrenContainer)) ? IRawChildrenContainer(parent).rawChildren : IChildList(parent);
			var _local3:Shape = new FlexShape();
			_local3.name = "backgroundMask";
			_local3.x = 0;
			_local3.y = 0;
			_local2.addChild(_local3);
			var _local4:int = _local2.getChildIndex(this);
			_local2.addChildAt(backgroundImage, (_local4 + 1));
			backgroundImage.mask = _local3;
		}
		public function get backgroundImageBounds():Rectangle{
			return (_backgroundImageBounds);
		}
		public function get hasBackgroundImage():Boolean{
			return (!((backgroundImage == null)));
		}
		private function completeEventHandler(_arg1:Event):void{
			if (!parent){
				return;
			};
			var _local2:DisplayObject = DisplayObject(LoaderInfo(_arg1.target).loader);
			initBackgroundImage(_local2);
			layoutBackgroundImage();
			dispatchEvent(_arg1.clone());
		}
		override protected function updateDisplayList(_arg1:Number, _arg2:Number):void{
			var cls:Class;
			var newStyleObj:DisplayObject;
			var loader:Loader;
			var loaderContext:LoaderContext;
			var message:String;
			var unscaledWidth = _arg1;
			var unscaledHeight = _arg2;
			if (!parent){
				return;
			};
			var newStyle:Object = getStyle("backgroundImage");
			if (newStyle != backgroundImageStyle){
				removedHandler(null);
				backgroundImageStyle = newStyle;
				if (((newStyle) && ((newStyle as Class)))){
					cls = Class(newStyle);
					initBackgroundImage(new (cls));
				} else {
					if (((newStyle) && ((newStyle is String)))){
						try {
							cls = Class(getDefinitionByName(String(newStyle)));
						} catch(e:Error) {
						};
						if (cls){
							newStyleObj = new (cls);
							initBackgroundImage(newStyleObj);
						} else {
							loader = new FlexLoader();
							loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeEventHandler);
							loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorEventHandler);
							loader.contentLoaderInfo.addEventListener(ErrorEvent.ERROR, errorEventHandler);
							loaderContext = new LoaderContext();
							loaderContext.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain);
							loader.load(new URLRequest(String(newStyle)), loaderContext);
						};
					} else {
						if (newStyle){
							message = resourceManager.getString("skins", "notLoaded", [newStyle]);
							throw (new Error(message));
						};
					};
				};
			};
			if (backgroundImage){
				layoutBackgroundImage();
			};
		}
		private function errorEventHandler(_arg1:Event):void{
		}

	}
}//package mx.skins 

****************

//IOverride (mx.states.IOverride)
package mx.states {
	import mx.core.*;

	public interface IOverride {

		function initialize():void;
		function remove(_arg1:UIComponent):void;
		function apply(_arg1:UIComponent):void;

	}
}//package mx.states 

****************

//State (mx.states.State)
package mx.states {
	import mx.events.*;
	import flash.events.*;

	public class State extends EventDispatcher {

		public var basedOn:String;
		private var initialized:Boolean;// = false
		public var overrides:Array;
		public var name:String;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function State(){
			overrides = [];
			super();
		}
		mx_internal function initialize():void{
			var _local1:int;
			if (!initialized){
				initialized = true;
				_local1 = 0;
				while (_local1 < overrides.length) {
					IOverride(overrides[_local1]).initialize();
					_local1++;
				};
			};
		}
		mx_internal function dispatchExitState():void{
			dispatchEvent(new FlexEvent(FlexEvent.EXIT_STATE));
		}
		mx_internal function dispatchEnterState():void{
			dispatchEvent(new FlexEvent(FlexEvent.ENTER_STATE));
		}

	}
}//package mx.states 

****************

//Transition (mx.states.Transition)
package mx.states {
	import mx.effects.*;

	public class Transition {

		public var effect:IEffect;
		public var toState:String;// = "*"
		public var fromState:String;// = "*"

		mx_internal static const VERSION:String = "3.5.0.12683";

	}
}//package mx.states 

****************

//CSSStyleDeclaration (mx.styles.CSSStyleDeclaration)
package mx.styles {
	import flash.utils.*;
	import flash.display.*;
	import mx.core.*;
	import mx.managers.*;
	import flash.events.*;

	public class CSSStyleDeclaration extends EventDispatcher {

		mx_internal var effects:Array;
		protected var overrides:Object;
		public var defaultFactory:Function;
		public var factory:Function;
		mx_internal var selectorRefCount:int;// = 0
		private var styleManager:IStyleManager2;
		private var clones:Dictionary;

		mx_internal static const VERSION:String = "3.5.0.12683";
		private static const NOT_A_COLOR:uint = 4294967295;
		private static const FILTERMAP_PROP:String = "__reserved__filterMap";

		public function CSSStyleDeclaration(_arg1:String=null){
			clones = new Dictionary(true);
			super();
			if (_arg1){
				styleManager = (Singleton.getInstance("mx.styles::IStyleManager2") as IStyleManager2);
				styleManager.setStyleDeclaration(_arg1, this, false);
			};
		}
		mx_internal function addStyleToProtoChain(_arg1:Object, _arg2:DisplayObject, _arg3:Object=null):Object{
			var p:String;
			var emptyObjectFactory:Function;
			var filteredChain:Object;
			var filterObjectFactory:Function;
			var i:String;
			var chain = _arg1;
			var target = _arg2;
			var filterMap = _arg3;
			var nodeAddedToChain:Boolean;
			var originalChain:Object = chain;
			if (filterMap){
				chain = {};
			};
			if (defaultFactory != null){
				defaultFactory.prototype = chain;
				chain = new defaultFactory();
				nodeAddedToChain = true;
			};
			if (factory != null){
				factory.prototype = chain;
				chain = new factory();
				nodeAddedToChain = true;
			};
			if (overrides){
				if ((((defaultFactory == null)) && ((factory == null)))){
					emptyObjectFactory = function ():void{
					};
					emptyObjectFactory.prototype = chain;
					chain = new (emptyObjectFactory);
					nodeAddedToChain = true;
				};
				for (p in overrides) {
					if (overrides[p] === undefined){
						delete chain[p];
					} else {
						chain[p] = overrides[p];
					};
				};
			};
			if (filterMap){
				if (nodeAddedToChain){
					filteredChain = {};
					filterObjectFactory = function ():void{
					};
					filterObjectFactory.prototype = originalChain;
					filteredChain = new (filterObjectFactory);
					for (i in chain) {
						if (filterMap[i] != null){
							filteredChain[filterMap[i]] = chain[i];
						};
					};
					chain = filteredChain;
					chain[FILTERMAP_PROP] = filterMap;
				} else {
					chain = originalChain;
				};
			};
			if (nodeAddedToChain){
				clones[chain] = 1;
			};
			return (chain);
		}
		public function getStyle(_arg1:String){
			var _local2:*;
			var _local3:*;
			if (overrides){
				if ((((_arg1 in overrides)) && ((overrides[_arg1] === undefined)))){
					return (undefined);
				};
				_local3 = overrides[_arg1];
				if (_local3 !== undefined){
					return (_local3);
				};
			};
			if (factory != null){
				factory.prototype = {};
				_local2 = new factory();
				_local3 = _local2[_arg1];
				if (_local3 !== undefined){
					return (_local3);
				};
			};
			if (defaultFactory != null){
				defaultFactory.prototype = {};
				_local2 = new defaultFactory();
				_local3 = _local2[_arg1];
				if (_local3 !== undefined){
					return (_local3);
				};
			};
			return (undefined);
		}
		public function clearStyle(_arg1:String):void{
			setStyle(_arg1, undefined);
		}
		public function setStyle(_arg1:String, _arg2):void{
			var _local7:int;
			var _local8:Object;
			var _local3:Object = getStyle(_arg1);
			var _local4:Boolean;
			if ((((((((((selectorRefCount > 0)) && ((factory == null)))) && ((defaultFactory == null)))) && (!(overrides)))) && (!((_local3 === _arg2))))){
				_local4 = true;
			};
			if (_arg2 !== undefined){
				setStyle(_arg1, _arg2);
			} else {
				if (_arg2 == _local3){
					return;
				};
				setStyle(_arg1, _arg2);
			};
			var _local5:Array = SystemManagerGlobals.topLevelSystemManagers;
			var _local6:int = _local5.length;
			if (_local4){
				_local7 = 0;
				while (_local7 < _local6) {
					_local8 = _local5[_local7];
					_local8.regenerateStyleCache(true);
					_local7++;
				};
			};
			_local7 = 0;
			while (_local7 < _local6) {
				_local8 = _local5[_local7];
				_local8.notifyStyleChangeInChildren(_arg1, true);
				_local7++;
			};
		}
		private function clearStyleAttr(_arg1:String):void{
			var _local2:*;
			if (!overrides){
				overrides = {};
			};
			overrides[_arg1] = undefined;
			for (_local2 in clones) {
				delete _local2[_arg1];
			};
		}
		mx_internal function createProtoChainRoot():Object{
			var _local1:Object = {};
			if (defaultFactory != null){
				defaultFactory.prototype = _local1;
				_local1 = new defaultFactory();
			};
			if (factory != null){
				factory.prototype = _local1;
				_local1 = new factory();
			};
			clones[_local1] = 1;
			return (_local1);
		}
		mx_internal function clearOverride(_arg1:String):void{
			if (((overrides) && (overrides[_arg1]))){
				delete overrides[_arg1];
			};
		}
		mx_internal function setStyle(_arg1:String, _arg2):void{
			var _local3:Object;
			var _local4:*;
			var _local5:Number;
			var _local6:Object;
			if (_arg2 === undefined){
				clearStyleAttr(_arg1);
				return;
			};
			if ((_arg2 is String)){
				if (!styleManager){
					styleManager = (Singleton.getInstance("mx.styles::IStyleManager2") as IStyleManager2);
				};
				_local5 = styleManager.getColorName(_arg2);
				if (_local5 != NOT_A_COLOR){
					_arg2 = _local5;
				};
			};
			if (defaultFactory != null){
				_local3 = new defaultFactory();
				if (_local3[_arg1] !== _arg2){
					if (!overrides){
						overrides = {};
					};
					overrides[_arg1] = _arg2;
				} else {
					if (overrides){
						delete overrides[_arg1];
					};
				};
			};
			if (factory != null){
				_local3 = new factory();
				if (_local3[_arg1] !== _arg2){
					if (!overrides){
						overrides = {};
					};
					overrides[_arg1] = _arg2;
				} else {
					if (overrides){
						delete overrides[_arg1];
					};
				};
			};
			if ((((defaultFactory == null)) && ((factory == null)))){
				if (!overrides){
					overrides = {};
				};
				overrides[_arg1] = _arg2;
			};
			for (_local4 in clones) {
				_local6 = _local4[FILTERMAP_PROP];
				if (_local6){
					if (_local6[_arg1] != null){
						_local4[_local6[_arg1]] = _arg2;
					};
				} else {
					_local4[_arg1] = _arg2;
				};
			};
		}

	}
}//package mx.styles 

****************

//ISimpleStyleClient (mx.styles.ISimpleStyleClient)
package mx.styles {

	public interface ISimpleStyleClient {

		function set styleName(_arg1:Object):void;
		function styleChanged(_arg1:String):void;
		function get styleName():Object;

	}
}//package mx.styles 

****************

//IStyleClient (mx.styles.IStyleClient)
package mx.styles {

	public interface IStyleClient extends ISimpleStyleClient {

		function regenerateStyleCache(_arg1:Boolean):void;
		function get className():String;
		function clearStyle(_arg1:String):void;
		function getClassStyleDeclarations():Array;
		function get inheritingStyles():Object;
		function set nonInheritingStyles(_arg1:Object):void;
		function setStyle(_arg1:String, _arg2):void;
		function get styleDeclaration():CSSStyleDeclaration;
		function set styleDeclaration(_arg1:CSSStyleDeclaration):void;
		function get nonInheritingStyles():Object;
		function set inheritingStyles(_arg1:Object):void;
		function getStyle(_arg1:String);
		function notifyStyleChangeInChildren(_arg1:String, _arg2:Boolean):void;
		function registerEffects(_arg1:Array):void;

	}
}//package mx.styles 

****************

//IStyleManager (mx.styles.IStyleManager)
package mx.styles {
	import flash.events.*;

	public interface IStyleManager {

		function isColorName(_arg1:String):Boolean;
		function registerParentDisplayListInvalidatingStyle(_arg1:String):void;
		function registerInheritingStyle(_arg1:String):void;
		function set stylesRoot(_arg1:Object):void;
		function get typeSelectorCache():Object;
		function styleDeclarationsChanged():void;
		function setStyleDeclaration(_arg1:String, _arg2:CSSStyleDeclaration, _arg3:Boolean):void;
		function isParentDisplayListInvalidatingStyle(_arg1:String):Boolean;
		function isSizeInvalidatingStyle(_arg1:String):Boolean;
		function get inheritingStyles():Object;
		function isValidStyleValue(_arg1):Boolean;
		function isParentSizeInvalidatingStyle(_arg1:String):Boolean;
		function getColorName(_arg1:Object):uint;
		function set typeSelectorCache(_arg1:Object):void;
		function unloadStyleDeclarations(_arg1:String, _arg2:Boolean=true):void;
		function getColorNames(_arg1:Array):void;
		function loadStyleDeclarations(_arg1:String, _arg2:Boolean=true, _arg3:Boolean=false):IEventDispatcher;
		function isInheritingStyle(_arg1:String):Boolean;
		function set inheritingStyles(_arg1:Object):void;
		function get stylesRoot():Object;
		function initProtoChainRoots():void;
		function registerColorName(_arg1:String, _arg2:uint):void;
		function registerParentSizeInvalidatingStyle(_arg1:String):void;
		function registerSizeInvalidatingStyle(_arg1:String):void;
		function clearStyleDeclaration(_arg1:String, _arg2:Boolean):void;
		function isInheritingTextFormatStyle(_arg1:String):Boolean;
		function getStyleDeclaration(_arg1:String):CSSStyleDeclaration;

	}
}//package mx.styles 

****************

//IStyleManager2 (mx.styles.IStyleManager2)
package mx.styles {
	import flash.events.*;
	import flash.system.*;

	public interface IStyleManager2 extends IStyleManager {

		function get selectors():Array;
		function loadStyleDeclarations2(_arg1:String, _arg2:Boolean=true, _arg3:ApplicationDomain=null, _arg4:SecurityDomain=null):IEventDispatcher;

	}
}//package mx.styles 

****************

//IStyleModule (mx.styles.IStyleModule)
package mx.styles {

	public interface IStyleModule {

		function unload():void;

	}
}//package mx.styles 

****************

//StyleManager (mx.styles.StyleManager)
package mx.styles {
	import mx.core.*;
	import flash.events.*;
	import flash.system.*;

	public class StyleManager {

		mx_internal static const VERSION:String = "3.5.0.12683";
		public static const NOT_A_COLOR:uint = 4294967295;

		private static var _impl:IStyleManager2;
		private static var implClassDependency:StyleManagerImpl;

		public static function isParentSizeInvalidatingStyle(_arg1:String):Boolean{
			return (impl.isParentSizeInvalidatingStyle(_arg1));
		}
		public static function registerInheritingStyle(_arg1:String):void{
			impl.registerInheritingStyle(_arg1);
		}
		mx_internal static function set stylesRoot(_arg1:Object):void{
			impl.stylesRoot = _arg1;
		}
		mx_internal static function get inheritingStyles():Object{
			return (impl.inheritingStyles);
		}
		mx_internal static function styleDeclarationsChanged():void{
			impl.styleDeclarationsChanged();
		}
		public static function setStyleDeclaration(_arg1:String, _arg2:CSSStyleDeclaration, _arg3:Boolean):void{
			impl.setStyleDeclaration(_arg1, _arg2, _arg3);
		}
		public static function registerParentDisplayListInvalidatingStyle(_arg1:String):void{
			impl.registerParentDisplayListInvalidatingStyle(_arg1);
		}
		mx_internal static function get typeSelectorCache():Object{
			return (impl.typeSelectorCache);
		}
		mx_internal static function set inheritingStyles(_arg1:Object):void{
			impl.inheritingStyles = _arg1;
		}
		public static function isColorName(_arg1:String):Boolean{
			return (impl.isColorName(_arg1));
		}
		public static function isParentDisplayListInvalidatingStyle(_arg1:String):Boolean{
			return (impl.isParentDisplayListInvalidatingStyle(_arg1));
		}
		public static function isSizeInvalidatingStyle(_arg1:String):Boolean{
			return (impl.isSizeInvalidatingStyle(_arg1));
		}
		public static function getColorName(_arg1:Object):uint{
			return (impl.getColorName(_arg1));
		}
		mx_internal static function set typeSelectorCache(_arg1:Object):void{
			impl.typeSelectorCache = _arg1;
		}
		public static function unloadStyleDeclarations(_arg1:String, _arg2:Boolean=true):void{
			impl.unloadStyleDeclarations(_arg1, _arg2);
		}
		public static function getColorNames(_arg1:Array):void{
			impl.getColorNames(_arg1);
		}
		public static function loadStyleDeclarations(_arg1:String, _arg2:Boolean=true, _arg3:Boolean=false, _arg4:ApplicationDomain=null, _arg5:SecurityDomain=null):IEventDispatcher{
			return (impl.loadStyleDeclarations2(_arg1, _arg2, _arg4, _arg5));
		}
		private static function get impl():IStyleManager2{
			if (!_impl){
				_impl = IStyleManager2(Singleton.getInstance("mx.styles::IStyleManager2"));
			};
			return (_impl);
		}
		public static function isValidStyleValue(_arg1):Boolean{
			return (impl.isValidStyleValue(_arg1));
		}
		mx_internal static function get stylesRoot():Object{
			return (impl.stylesRoot);
		}
		public static function isInheritingStyle(_arg1:String):Boolean{
			return (impl.isInheritingStyle(_arg1));
		}
		mx_internal static function initProtoChainRoots():void{
			impl.initProtoChainRoots();
		}
		public static function registerParentSizeInvalidatingStyle(_arg1:String):void{
			impl.registerParentSizeInvalidatingStyle(_arg1);
		}
		public static function get selectors():Array{
			return (impl.selectors);
		}
		public static function registerSizeInvalidatingStyle(_arg1:String):void{
			impl.registerSizeInvalidatingStyle(_arg1);
		}
		public static function clearStyleDeclaration(_arg1:String, _arg2:Boolean):void{
			impl.clearStyleDeclaration(_arg1, _arg2);
		}
		public static function registerColorName(_arg1:String, _arg2:uint):void{
			impl.registerColorName(_arg1, _arg2);
		}
		public static function isInheritingTextFormatStyle(_arg1:String):Boolean{
			return (impl.isInheritingTextFormatStyle(_arg1));
		}
		public static function getStyleDeclaration(_arg1:String):CSSStyleDeclaration{
			return (impl.getStyleDeclaration(_arg1));
		}

	}
}//package mx.styles 

****************

//StyleManagerImpl (mx.styles.StyleManagerImpl)
package mx.styles {
	import flash.utils.*;
	import mx.core.*;
	import mx.managers.*;
	import flash.events.*;
	import mx.events.*;
	import flash.system.*;
	import mx.resources.*;
	import mx.modules.*;

	public class StyleManagerImpl implements IStyleManager2 {

		private var _stylesRoot:Object;
		private var _selectors:Object;
		private var styleModules:Object;
		private var _inheritingStyles:Object;
		private var resourceManager:IResourceManager;
		private var _typeSelectorCache:Object;

		mx_internal static const VERSION:String = "3.5.0.12683";

		private static var parentSizeInvalidatingStyles:Object = {bottom:true, horizontalCenter:true, left:true, right:true, top:true, verticalCenter:true, baseline:true};
		private static var colorNames:Object = {transparent:"transparent", black:0, blue:0xFF, green:0x8000, gray:0x808080, silver:0xC0C0C0, lime:0xFF00, olive:0x808000, white:0xFFFFFF, yellow:0xFFFF00, maroon:0x800000, navy:128, red:0xFF0000, purple:0x800080, teal:0x8080, fuchsia:0xFF00FF, aqua:0xFFFF, magenta:0xFF00FF, cyan:0xFFFF, halogreen:8453965, haloblue:40447, haloorange:0xFFB600, halosilver:11455193};
		private static var inheritingTextFormatStyles:Object = {align:true, bold:true, color:true, font:true, indent:true, italic:true, size:true};
		private static var instance:IStyleManager2;
		private static var parentDisplayListInvalidatingStyles:Object = {bottom:true, horizontalCenter:true, left:true, right:true, top:true, verticalCenter:true, baseline:true};
		private static var sizeInvalidatingStyles:Object = {borderStyle:true, borderThickness:true, fontAntiAliasType:true, fontFamily:true, fontGridFitType:true, fontSharpness:true, fontSize:true, fontStyle:true, fontThickness:true, fontWeight:true, headerHeight:true, horizontalAlign:true, horizontalGap:true, kerning:true, leading:true, letterSpacing:true, paddingBottom:true, paddingLeft:true, paddingRight:true, paddingTop:true, strokeWidth:true, tabHeight:true, tabWidth:true, verticalAlign:true, verticalGap:true};

		public function StyleManagerImpl(){
			_selectors = {};
			styleModules = {};
			resourceManager = ResourceManager.getInstance();
			_inheritingStyles = {};
			_typeSelectorCache = {};
			super();
		}
		public function setStyleDeclaration(_arg1:String, _arg2:CSSStyleDeclaration, _arg3:Boolean):void{
			_arg2.selectorRefCount++;
			_selectors[_arg1] = _arg2;
			typeSelectorCache = {};
			if (_arg3){
				styleDeclarationsChanged();
			};
		}
		public function registerParentDisplayListInvalidatingStyle(_arg1:String):void{
			parentDisplayListInvalidatingStyles[_arg1] = true;
		}
		public function getStyleDeclaration(_arg1:String):CSSStyleDeclaration{
			var _local2:int;
			if (_arg1.charAt(0) != "."){
				_local2 = _arg1.lastIndexOf(".");
				if (_local2 != -1){
					_arg1 = _arg1.substr((_local2 + 1));
				};
			};
			return (_selectors[_arg1]);
		}
		public function set typeSelectorCache(_arg1:Object):void{
			_typeSelectorCache = _arg1;
		}
		public function isColorName(_arg1:String):Boolean{
			return (!((colorNames[_arg1.toLowerCase()] === undefined)));
		}
		public function set inheritingStyles(_arg1:Object):void{
			_inheritingStyles = _arg1;
		}
		public function getColorNames(_arg1:Array):void{
			var _local4:uint;
			if (!_arg1){
				return;
			};
			var _local2:int = _arg1.length;
			var _local3:int;
			while (_local3 < _local2) {
				if (((!((_arg1[_local3] == null))) && (isNaN(_arg1[_local3])))){
					_local4 = getColorName(_arg1[_local3]);
					if (_local4 != StyleManager.NOT_A_COLOR){
						_arg1[_local3] = _local4;
					};
				};
				_local3++;
			};
		}
		public function isInheritingTextFormatStyle(_arg1:String):Boolean{
			return ((inheritingTextFormatStyles[_arg1] == true));
		}
		public function registerParentSizeInvalidatingStyle(_arg1:String):void{
			parentSizeInvalidatingStyles[_arg1] = true;
		}
		public function registerColorName(_arg1:String, _arg2:uint):void{
			colorNames[_arg1.toLowerCase()] = _arg2;
		}
		public function isParentSizeInvalidatingStyle(_arg1:String):Boolean{
			return ((parentSizeInvalidatingStyles[_arg1] == true));
		}
		public function registerInheritingStyle(_arg1:String):void{
			inheritingStyles[_arg1] = true;
		}
		public function set stylesRoot(_arg1:Object):void{
			_stylesRoot = _arg1;
		}
		public function get typeSelectorCache():Object{
			return (_typeSelectorCache);
		}
		public function isParentDisplayListInvalidatingStyle(_arg1:String):Boolean{
			return ((parentDisplayListInvalidatingStyles[_arg1] == true));
		}
		public function isSizeInvalidatingStyle(_arg1:String):Boolean{
			return ((sizeInvalidatingStyles[_arg1] == true));
		}
		public function styleDeclarationsChanged():void{
			var _local4:Object;
			var _local1:Array = SystemManagerGlobals.topLevelSystemManagers;
			var _local2:int = _local1.length;
			var _local3:int;
			while (_local3 < _local2) {
				_local4 = _local1[_local3];
				_local4.regenerateStyleCache(true);
				_local4.notifyStyleChangeInChildren(null, true);
				_local3++;
			};
		}
		public function isValidStyleValue(_arg1):Boolean{
			return (!((_arg1 === undefined)));
		}
		public function loadStyleDeclarations(_arg1:String, _arg2:Boolean=true, _arg3:Boolean=false):IEventDispatcher{
			return (loadStyleDeclarations2(_arg1, _arg2));
		}
		public function get inheritingStyles():Object{
			return (_inheritingStyles);
		}
		public function unloadStyleDeclarations(_arg1:String, _arg2:Boolean=true):void{
			var _local4:IModuleInfo;
			var _local3:StyleModuleInfo = styleModules[_arg1];
			if (_local3){
				_local3.styleModule.unload();
				_local4 = _local3.module;
				_local4.unload();
				_local4.removeEventListener(ModuleEvent.READY, _local3.readyHandler);
				_local4.removeEventListener(ModuleEvent.ERROR, _local3.errorHandler);
				styleModules[_arg1] = null;
			};
			if (_arg2){
				styleDeclarationsChanged();
			};
		}
		public function getColorName(_arg1:Object):uint{
			var _local2:Number;
			var _local3:*;
			if ((_arg1 is String)){
				if (_arg1.charAt(0) == "#"){
					_local2 = Number(("0x" + _arg1.slice(1)));
					return ((isNaN(_local2)) ? StyleManager.NOT_A_COLOR : uint(_local2));
				};
				if ((((_arg1.charAt(1) == "x")) && ((_arg1.charAt(0) == "0")))){
					_local2 = Number(_arg1);
					return ((isNaN(_local2)) ? StyleManager.NOT_A_COLOR : uint(_local2));
				};
				_local3 = colorNames[_arg1.toLowerCase()];
				if (_local3 === undefined){
					return (StyleManager.NOT_A_COLOR);
				};
				return (uint(_local3));
			};
			return (uint(_arg1));
		}
		public function isInheritingStyle(_arg1:String):Boolean{
			return ((inheritingStyles[_arg1] == true));
		}
		public function get stylesRoot():Object{
			return (_stylesRoot);
		}
		public function initProtoChainRoots():void{
			if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0){
				delete _inheritingStyles["textDecoration"];
				delete _inheritingStyles["leading"];
			};
			if (!stylesRoot){
				stylesRoot = _selectors["global"].addStyleToProtoChain({}, null);
			};
		}
		public function loadStyleDeclarations2(_arg1:String, _arg2:Boolean=true, _arg3:ApplicationDomain=null, _arg4:SecurityDomain=null):IEventDispatcher{
			var module:IModuleInfo;
			var styleEventDispatcher:StyleEventDispatcher;
			var timer:Timer;
			var timerHandler:Function;
			var url = _arg1;
			var update = _arg2;
			var applicationDomain = _arg3;
			var securityDomain = _arg4;
			module = ModuleManager.getModule(url);
			var readyHandler:Function = function (_arg1:ModuleEvent):void{
				var _local2:IStyleModule = IStyleModule(_arg1.module.factory.create());
				styleModules[_arg1.module.url].styleModule = _local2;
				if (update){
					styleDeclarationsChanged();
				};
			};
			module.addEventListener(ModuleEvent.READY, readyHandler, false, 0, true);
			styleEventDispatcher = new StyleEventDispatcher(module);
			var errorHandler:Function = function (_arg1:ModuleEvent):void{
				var _local3:StyleEvent;
				var _local2:String = resourceManager.getString("styles", "unableToLoad", [_arg1.errorText, url]);
				if (styleEventDispatcher.willTrigger(StyleEvent.ERROR)){
					_local3 = new StyleEvent(StyleEvent.ERROR, _arg1.bubbles, _arg1.cancelable);
					_local3.bytesLoaded = 0;
					_local3.bytesTotal = 0;
					_local3.errorText = _local2;
					styleEventDispatcher.dispatchEvent(_local3);
				} else {
					throw (new Error(_local2));
				};
			};
			module.addEventListener(ModuleEvent.ERROR, errorHandler, false, 0, true);
			styleModules[url] = new StyleModuleInfo(module, readyHandler, errorHandler);
			timer = new Timer(0);
			timerHandler = function (_arg1:TimerEvent):void{
				timer.removeEventListener(TimerEvent.TIMER, timerHandler);
				timer.stop();
				module.load(applicationDomain, securityDomain);
			};
			timer.addEventListener(TimerEvent.TIMER, timerHandler, false, 0, true);
			timer.start();
			return (styleEventDispatcher);
		}
		public function registerSizeInvalidatingStyle(_arg1:String):void{
			sizeInvalidatingStyles[_arg1] = true;
		}
		public function clearStyleDeclaration(_arg1:String, _arg2:Boolean):void{
			var _local3:CSSStyleDeclaration = getStyleDeclaration(_arg1);
			if (((_local3) && ((_local3.selectorRefCount > 0)))){
				_local3.selectorRefCount--;
			};
			delete _selectors[_arg1];
			if (_arg2){
				styleDeclarationsChanged();
			};
		}
		public function get selectors():Array{
			var _local2:String;
			var _local1:Array = [];
			for (_local2 in _selectors) {
				_local1.push(_local2);
			};
			return (_local1);
		}

		public static function getInstance():IStyleManager2{
			if (!instance){
				instance = new (StyleManagerImpl);
			};
			return (instance);
		}

	}
}//package mx.styles 

import flash.events.*;
import mx.events.*;
import mx.modules.*;

class StyleEventDispatcher extends EventDispatcher {

	private function StyleEventDispatcher(_arg1:IModuleInfo){
		_arg1.addEventListener(ModuleEvent.ERROR, moduleInfo_errorHandler, false, 0, true);
		_arg1.addEventListener(ModuleEvent.PROGRESS, moduleInfo_progressHandler, false, 0, true);
		_arg1.addEventListener(ModuleEvent.READY, moduleInfo_readyHandler, false, 0, true);
	}
	private function moduleInfo_progressHandler(_arg1:ModuleEvent):void{
		var _local2:StyleEvent = new StyleEvent(StyleEvent.PROGRESS, _arg1.bubbles, _arg1.cancelable);
		_local2.bytesLoaded = _arg1.bytesLoaded;
		_local2.bytesTotal = _arg1.bytesTotal;
		dispatchEvent(_local2);
	}
	private function moduleInfo_readyHandler(_arg1:ModuleEvent):void{
		var _local2:StyleEvent = new StyleEvent(StyleEvent.COMPLETE);
		_local2.bytesLoaded = _arg1.bytesLoaded;
		_local2.bytesTotal = _arg1.bytesTotal;
		dispatchEvent(_local2);
	}
	private function moduleInfo_errorHandler(_arg1:ModuleEvent):void{
		var _local2:StyleEvent = new StyleEvent(StyleEvent.ERROR, _arg1.bubbles, _arg1.cancelable);
		_local2.bytesLoaded = _arg1.bytesLoaded;
		_local2.bytesTotal = _arg1.bytesTotal;
		_local2.errorText = _arg1.errorText;
		dispatchEvent(_local2);
	}

}
class StyleModuleInfo {

	public var errorHandler:Function;
	public var readyHandler:Function;
	public var module:IModuleInfo;
	public var styleModule:IStyleModule;

	private function StyleModuleInfo(_arg1:IModuleInfo, _arg2:Function, _arg3:Function){
		this.module = _arg1;
		this.readyHandler = _arg2;
		this.errorHandler = _arg3;
	}
}

****************

//StyleProtoChain (mx.styles.StyleProtoChain)
package mx.styles {
	import mx.core.*;
	import flash.display.*;

	public class StyleProtoChain {

		mx_internal static const VERSION:String = "3.5.0.12683";

		public static function initProtoChainForUIComponentStyleName(_arg1:IStyleClient):void{
			var _local9:CSSStyleDeclaration;
			var _local2:IStyleClient = IStyleClient(_arg1.styleName);
			var _local3:DisplayObject = (_arg1 as DisplayObject);
			var _local4:Object = _local2.nonInheritingStyles;
			if (((!(_local4)) || ((_local4 == UIComponent.STYLE_UNINITIALIZED)))){
				_local4 = StyleManager.stylesRoot;
				if (_local4.effects){
					_arg1.registerEffects(_local4.effects);
				};
			};
			var _local5:Object = _local2.inheritingStyles;
			if (((!(_local5)) || ((_local5 == UIComponent.STYLE_UNINITIALIZED)))){
				_local5 = StyleManager.stylesRoot;
			};
			var _local6:Array = _arg1.getClassStyleDeclarations();
			var _local7:int = _local6.length;
			if ((_local2 is StyleProxy)){
				if (_local7 == 0){
					_local4 = addProperties(_local4, _local2, false);
				};
				_local3 = (StyleProxy(_local2).source as DisplayObject);
			};
			var _local8:int;
			while (_local8 < _local7) {
				_local9 = _local6[_local8];
				_local5 = _local9.addStyleToProtoChain(_local5, _local3);
				_local5 = addProperties(_local5, _local2, true);
				_local4 = _local9.addStyleToProtoChain(_local4, _local3);
				_local4 = addProperties(_local4, _local2, false);
				if (_local9.effects){
					_arg1.registerEffects(_local9.effects);
				};
				_local8++;
			};
			_arg1.inheritingStyles = (_arg1.styleDeclaration) ? _arg1.styleDeclaration.addStyleToProtoChain(_local5, _local3) : _local5;
			_arg1.nonInheritingStyles = (_arg1.styleDeclaration) ? _arg1.styleDeclaration.addStyleToProtoChain(_local4, _local3) : _local4;
		}
		private static function addProperties(_arg1:Object, _arg2:IStyleClient, _arg3:Boolean):Object{
			var _local11:CSSStyleDeclaration;
			var _local12:CSSStyleDeclaration;
			var _local4:Object = ((((_arg2 is StyleProxy)) && (!(_arg3)))) ? StyleProxy(_arg2).filterMap : null;
			var _local5:IStyleClient = _arg2;
			while ((_local5 is StyleProxy)) {
				_local5 = StyleProxy(_local5).source;
			};
			var _local6:DisplayObject = (_local5 as DisplayObject);
			var _local7:Array = _arg2.getClassStyleDeclarations();
			var _local8:int = _local7.length;
			var _local9:int;
			while (_local9 < _local8) {
				_local11 = _local7[_local9];
				_arg1 = _local11.addStyleToProtoChain(_arg1, _local6, _local4);
				if (_local11.effects){
					_arg2.registerEffects(_local11.effects);
				};
				_local9++;
			};
			var _local10:Object = _arg2.styleName;
			if (_local10){
				if (typeof(_local10) == "object"){
					if ((_local10 is CSSStyleDeclaration)){
						_local12 = CSSStyleDeclaration(_local10);
					} else {
						_arg1 = addProperties(_arg1, IStyleClient(_local10), _arg3);
					};
				} else {
					_local12 = StyleManager.getStyleDeclaration(("." + _local10));
				};
				if (_local12){
					_arg1 = _local12.addStyleToProtoChain(_arg1, _local6, _local4);
					if (_local12.effects){
						_arg2.registerEffects(_local12.effects);
					};
				};
			};
			if (_arg2.styleDeclaration){
				_arg1 = _arg2.styleDeclaration.addStyleToProtoChain(_arg1, _local6, _local4);
			};
			return (_arg1);
		}
		public static function initTextField(_arg1:IUITextField):void{
			var _local3:CSSStyleDeclaration;
			var _local2:Object = _arg1.styleName;
			if (_local2){
				if (typeof(_local2) == "object"){
					if ((_local2 is CSSStyleDeclaration)){
						_local3 = CSSStyleDeclaration(_local2);
					} else {
						if ((_local2 is StyleProxy)){
							_arg1.inheritingStyles = IStyleClient(_local2).inheritingStyles;
							_arg1.nonInheritingStyles = addProperties(StyleManager.stylesRoot, IStyleClient(_local2), false);
							return;
						};
						_arg1.inheritingStyles = IStyleClient(_local2).inheritingStyles;
						_arg1.nonInheritingStyles = IStyleClient(_local2).nonInheritingStyles;
						return;
					};
				} else {
					_local3 = StyleManager.getStyleDeclaration(("." + _local2));
				};
			};
			var _local4:Object = IStyleClient(_arg1.parent).inheritingStyles;
			var _local5:Object = StyleManager.stylesRoot;
			if (!_local4){
				_local4 = StyleManager.stylesRoot;
			};
			if (_local3){
				_local4 = _local3.addStyleToProtoChain(_local4, DisplayObject(_arg1));
				_local5 = _local3.addStyleToProtoChain(_local5, DisplayObject(_arg1));
			};
			_arg1.inheritingStyles = _local4;
			_arg1.nonInheritingStyles = _local5;
		}

	}
}//package mx.styles 

****************

//StyleProxy (mx.styles.StyleProxy)
package mx.styles {
	import mx.core.*;

	public class StyleProxy implements IStyleClient {

		private var _source:IStyleClient;
		private var _filterMap:Object;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function StyleProxy(_arg1:IStyleClient, _arg2:Object){
			this.filterMap = _arg2;
			this.source = _arg1;
		}
		public function styleChanged(_arg1:String):void{
			return (_source.styleChanged(_arg1));
		}
		public function get filterMap():Object{
			return (((FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0)) ? null : _filterMap);
		}
		public function set filterMap(_arg1:Object):void{
			_filterMap = _arg1;
		}
		public function get styleDeclaration():CSSStyleDeclaration{
			return (_source.styleDeclaration);
		}
		public function notifyStyleChangeInChildren(_arg1:String, _arg2:Boolean):void{
			return (_source.notifyStyleChangeInChildren(_arg1, _arg2));
		}
		public function set inheritingStyles(_arg1:Object):void{
		}
		public function get source():IStyleClient{
			return (_source);
		}
		public function get styleName():Object{
			if ((_source.styleName is IStyleClient)){
				return (new StyleProxy(IStyleClient(_source.styleName), filterMap));
			};
			return (_source.styleName);
		}
		public function registerEffects(_arg1:Array):void{
			return (_source.registerEffects(_arg1));
		}
		public function regenerateStyleCache(_arg1:Boolean):void{
			_source.regenerateStyleCache(_arg1);
		}
		public function get inheritingStyles():Object{
			return (_source.inheritingStyles);
		}
		public function get className():String{
			return (_source.className);
		}
		public function clearStyle(_arg1:String):void{
			_source.clearStyle(_arg1);
		}
		public function getClassStyleDeclarations():Array{
			return (_source.getClassStyleDeclarations());
		}
		public function set nonInheritingStyles(_arg1:Object):void{
		}
		public function setStyle(_arg1:String, _arg2):void{
			_source.setStyle(_arg1, _arg2);
		}
		public function get nonInheritingStyles():Object{
			return (((FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0)) ? _source.nonInheritingStyles : null);
		}
		public function set styleName(_arg1:Object):void{
			_source.styleName = _arg1;
		}
		public function getStyle(_arg1:String){
			return (_source.getStyle(_arg1));
		}
		public function set source(_arg1:IStyleClient):void{
			_source = _arg1;
		}
		public function set styleDeclaration(_arg1:CSSStyleDeclaration):void{
			_source.styleDeclaration = styleDeclaration;
		}

	}
}//package mx.styles 

****************

//ArrayUtil (mx.utils.ArrayUtil)
package mx.utils {

	public class ArrayUtil {

		mx_internal static const VERSION:String = "3.5.0.12683";

		public static function getItemIndex(_arg1:Object, _arg2:Array):int{
			var _local3:int = _arg2.length;
			var _local4:int;
			while (_local4 < _local3) {
				if (_arg2[_local4] === _arg1){
					return (_local4);
				};
				_local4++;
			};
			return (-1);
		}
		public static function toArray(_arg1:Object):Array{
			if (!_arg1){
				return ([]);
			};
			if ((_arg1 is Array)){
				return ((_arg1 as Array));
			};
			return ([_arg1]);
		}

	}
}//package mx.utils 

****************

//ColorUtil (mx.utils.ColorUtil)
package mx.utils {

	public class ColorUtil {

		mx_internal static const VERSION:String = "3.5.0.12683";

		public static function adjustBrightness2(_arg1:uint, _arg2:Number):uint{
			var _local3:Number;
			var _local4:Number;
			var _local5:Number;
			if (_arg2 == 0){
				return (_arg1);
			};
			if (_arg2 < 0){
				_arg2 = ((100 + _arg2) / 100);
				_local3 = (((_arg1 >> 16) & 0xFF) * _arg2);
				_local4 = (((_arg1 >> 8) & 0xFF) * _arg2);
				_local5 = ((_arg1 & 0xFF) * _arg2);
			} else {
				_arg2 = (_arg2 / 100);
				_local3 = ((_arg1 >> 16) & 0xFF);
				_local4 = ((_arg1 >> 8) & 0xFF);
				_local5 = (_arg1 & 0xFF);
				_local3 = (_local3 + ((0xFF - _local3) * _arg2));
				_local4 = (_local4 + ((0xFF - _local4) * _arg2));
				_local5 = (_local5 + ((0xFF - _local5) * _arg2));
				_local3 = Math.min(_local3, 0xFF);
				_local4 = Math.min(_local4, 0xFF);
				_local5 = Math.min(_local5, 0xFF);
			};
			return ((((_local3 << 16) | (_local4 << 8)) | _local5));
		}
		public static function rgbMultiply(_arg1:uint, _arg2:uint):uint{
			var _local3:Number = ((_arg1 >> 16) & 0xFF);
			var _local4:Number = ((_arg1 >> 8) & 0xFF);
			var _local5:Number = (_arg1 & 0xFF);
			var _local6:Number = ((_arg2 >> 16) & 0xFF);
			var _local7:Number = ((_arg2 >> 8) & 0xFF);
			var _local8:Number = (_arg2 & 0xFF);
			return ((((((_local3 * _local6) / 0xFF) << 16) | (((_local4 * _local7) / 0xFF) << 8)) | ((_local5 * _local8) / 0xFF)));
		}
		public static function adjustBrightness(_arg1:uint, _arg2:Number):uint{
			var _local3:Number = Math.max(Math.min((((_arg1 >> 16) & 0xFF) + _arg2), 0xFF), 0);
			var _local4:Number = Math.max(Math.min((((_arg1 >> 8) & 0xFF) + _arg2), 0xFF), 0);
			var _local5:Number = Math.max(Math.min(((_arg1 & 0xFF) + _arg2), 0xFF), 0);
			return ((((_local3 << 16) | (_local4 << 8)) | _local5));
		}

	}
}//package mx.utils 

****************

//DescribeTypeCache (mx.utils.DescribeTypeCache)
package mx.utils {
	import mx.binding.*;
	import flash.utils.*;

	public class DescribeTypeCache {

		mx_internal static const VERSION:String = "3.5.0.12683";

		private static var cacheHandlers:Object = {};
		private static var typeCache:Object = {};

		public static function describeType(_arg1):DescribeTypeCacheRecord{
			var _local2:String;
			var _local3:XML;
			var _local4:DescribeTypeCacheRecord;
			if ((_arg1 is String)){
				_local2 = _arg1;
			} else {
				_local2 = getQualifiedClassName(_arg1);
			};
			if ((_local2 in typeCache)){
				return (typeCache[_local2]);
			};
			if ((_arg1 is String)){
				_arg1 = getDefinitionByName(_arg1);
			};
			_local3 = describeType(_arg1);
			_local4 = new DescribeTypeCacheRecord();
			_local4.typeDescription = _local3;
			_local4.typeName = _local2;
			typeCache[_local2] = _local4;
			return (_local4);
		}
		public static function registerCacheHandler(_arg1:String, _arg2:Function):void{
			cacheHandlers[_arg1] = _arg2;
		}
		static function extractValue(_arg1:String, _arg2:DescribeTypeCacheRecord){
			if ((_arg1 in cacheHandlers)){
				return (cacheHandlers[_arg1](_arg2));
			};
			return (undefined);
		}
		private static function bindabilityInfoHandler(_arg1:DescribeTypeCacheRecord){
			return (new BindabilityInfo(_arg1.typeDescription));
		}

		registerCacheHandler("bindabilityInfo", bindabilityInfoHandler);
	}
}//package mx.utils 

****************

//DescribeTypeCacheRecord (mx.utils.DescribeTypeCacheRecord)
package mx.utils {
	import flash.utils.*;

	public dynamic class DescribeTypeCacheRecord extends Proxy {

		public var typeDescription:XML;
		public var typeName:String;
		private var cache:Object;

		public function DescribeTypeCacheRecord(){
			cache = {};
			super();
		}
		override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(_arg1){
			var _local2:* = cache[_arg1];
			if (_local2 === undefined){
				_local2 = DescribeTypeCache.extractValue(_arg1, this);
				cache[_arg1] = _local2;
			};
			return (_local2);
		}
		override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function hasProperty(_arg1):Boolean{
			if ((_arg1 in cache)){
				return (true);
			};
			var _local2:* = DescribeTypeCache.extractValue(_arg1, this);
			if (_local2 === undefined){
				return (false);
			};
			cache[_arg1] = _local2;
			return (true);
		}

	}
}//package mx.utils 

****************

//EventUtil (mx.utils.EventUtil)
package mx.utils {
	import mx.core.*;
	import flash.events.*;
	import mx.events.*;

	public class EventUtil {

		mx_internal static const VERSION:String = "3.5.0.12683";

		private static var _sandboxEventMap:Object;
		private static var _mouseEventMap:Object;

		public static function get sandboxMouseEventMap():Object{
			if (!_sandboxEventMap){
				_sandboxEventMap = {};
				_sandboxEventMap[SandboxMouseEvent.CLICK_SOMEWHERE] = MouseEvent.CLICK;
				_sandboxEventMap[SandboxMouseEvent.DOUBLE_CLICK_SOMEWHERE] = MouseEvent.DOUBLE_CLICK;
				_sandboxEventMap[SandboxMouseEvent.MOUSE_DOWN_SOMEWHERE] = MouseEvent.MOUSE_DOWN;
				_sandboxEventMap[SandboxMouseEvent.MOUSE_MOVE_SOMEWHERE] = MouseEvent.MOUSE_MOVE;
				_sandboxEventMap[SandboxMouseEvent.MOUSE_UP_SOMEWHERE] = MouseEvent.MOUSE_UP;
				_sandboxEventMap[SandboxMouseEvent.MOUSE_WHEEL_SOMEWHERE] = MouseEvent.MOUSE_WHEEL;
			};
			return (_sandboxEventMap);
		}
		public static function get mouseEventMap():Object{
			if (!_mouseEventMap){
				_mouseEventMap = {};
				_mouseEventMap[MouseEvent.CLICK] = SandboxMouseEvent.CLICK_SOMEWHERE;
				_mouseEventMap[MouseEvent.DOUBLE_CLICK] = SandboxMouseEvent.DOUBLE_CLICK_SOMEWHERE;
				_mouseEventMap[MouseEvent.MOUSE_DOWN] = SandboxMouseEvent.MOUSE_DOWN_SOMEWHERE;
				_mouseEventMap[MouseEvent.MOUSE_MOVE] = SandboxMouseEvent.MOUSE_MOVE_SOMEWHERE;
				_mouseEventMap[MouseEvent.MOUSE_UP] = SandboxMouseEvent.MOUSE_UP_SOMEWHERE;
				_mouseEventMap[MouseEvent.MOUSE_WHEEL] = SandboxMouseEvent.MOUSE_WHEEL_SOMEWHERE;
			};
			return (_mouseEventMap);
		}

	}
}//package mx.utils 

****************

//GraphicsUtil (mx.utils.GraphicsUtil)
package mx.utils {
	import flash.display.*;
	import mx.core.*;

	public class GraphicsUtil {

		mx_internal static const VERSION:String = "3.5.0.12683";

		public static function drawRoundRectComplex(_arg1:Graphics, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number):void{
			var _local10:Number = (_arg2 + _arg4);
			var _local11:Number = (_arg3 + _arg5);
			var _local12:Number = ((_arg4 < _arg5)) ? (_arg4 * 2) : (_arg5 * 2);
			_arg6 = ((_arg6 < _local12)) ? _arg6 : _local12;
			_arg7 = ((_arg7 < _local12)) ? _arg7 : _local12;
			_arg8 = ((_arg8 < _local12)) ? _arg8 : _local12;
			_arg9 = ((_arg9 < _local12)) ? _arg9 : _local12;
			var _local13:Number = (_arg9 * 0.292893218813453);
			var _local14:Number = (_arg9 * 0.585786437626905);
			_arg1.moveTo(_local10, (_local11 - _arg9));
			_arg1.curveTo(_local10, (_local11 - _local14), (_local10 - _local13), (_local11 - _local13));
			_arg1.curveTo((_local10 - _local14), _local11, (_local10 - _arg9), _local11);
			_local13 = (_arg8 * 0.292893218813453);
			_local14 = (_arg8 * 0.585786437626905);
			_arg1.lineTo((_arg2 + _arg8), _local11);
			_arg1.curveTo((_arg2 + _local14), _local11, (_arg2 + _local13), (_local11 - _local13));
			_arg1.curveTo(_arg2, (_local11 - _local14), _arg2, (_local11 - _arg8));
			_local13 = (_arg6 * 0.292893218813453);
			_local14 = (_arg6 * 0.585786437626905);
			_arg1.lineTo(_arg2, (_arg3 + _arg6));
			_arg1.curveTo(_arg2, (_arg3 + _local14), (_arg2 + _local13), (_arg3 + _local13));
			_arg1.curveTo((_arg2 + _local14), _arg3, (_arg2 + _arg6), _arg3);
			_local13 = (_arg7 * 0.292893218813453);
			_local14 = (_arg7 * 0.585786437626905);
			_arg1.lineTo((_local10 - _arg7), _arg3);
			_arg1.curveTo((_local10 - _local14), _arg3, (_local10 - _local13), (_arg3 + _local13));
			_arg1.curveTo(_local10, (_arg3 + _local14), _local10, (_arg3 + _arg7));
			_arg1.lineTo(_local10, (_local11 - _arg9));
		}

	}
}//package mx.utils 

****************

//IXMLNotifiable (mx.utils.IXMLNotifiable)
package mx.utils {

	public interface IXMLNotifiable {

		function xmlNotification(_arg1:Object, _arg2:String, _arg3:Object, _arg4:Object, _arg5:Object):void;

	}
}//package mx.utils 

****************

//LoaderUtil (mx.utils.LoaderUtil)
package mx.utils {
	import flash.display.*;
	import mx.core.*;

	public class LoaderUtil {

		mx_internal static const VERSION:String = "3.5.0.12683";

		mx_internal static var urlFilters:Array = [{searchString:"/[[DYNAMIC]]/", filterFunction:dynamicURLFilter}, {searchString:"/[[IMPORT]]/", filterFunction:importURLFilter}];

		private static function importURLFilter(_arg1:String, _arg2:int):String{
			var _local3:int = _arg1.indexOf("://");
			return ((_arg1.substring(0, (_local3 + 3)) + _arg1.substring((_arg2 + 12))));
		}
		public static function normalizeURL(_arg1:LoaderInfo):String{
			var _local3:int;
			var _local4:String;
			var _local5:Function;
			var _local2:String = _arg1.url;
			var _local6:uint = LoaderUtil.mx_internal::urlFilters.length;
			var _local7:uint;
			while (_local7 < _local6) {
				_local4 = LoaderUtil.mx_internal::urlFilters[_local7].searchString;
				_local3 = _local2.indexOf(_local4);
				if (_local3 != -1){
					_local5 = LoaderUtil.mx_internal::urlFilters[_local7].filterFunction;
					_local2 = _local5(_local2, _local3);
				};
				_local7++;
			};
			return (_local2);
		}
		public static function createAbsoluteURL(_arg1:String, _arg2:String):String{
			var _local4:int;
			var _local5:int;
			var _local3:String = _arg2;
			if (((_arg1) && (!((((((_arg2.indexOf(":") > -1)) || ((_arg2.indexOf("/") == 0)))) || ((_arg2.indexOf("\\") == 0))))))){
				_local4 = _arg1.indexOf("?");
				if (_local4 != -1){
					_arg1 = _arg1.substring(0, _local4);
				};
				_local4 = _arg1.indexOf("#");
				if (_local4 != -1){
					_arg1 = _arg1.substring(0, _local4);
				};
				_local5 = Math.max(_arg1.lastIndexOf("\\"), _arg1.lastIndexOf("/"));
				if (_arg2.indexOf("./") == 0){
					_arg2 = _arg2.substring(2);
				} else {
					while (_arg2.indexOf("../") == 0) {
						_arg2 = _arg2.substring(3);
						_local5 = Math.max(_arg1.lastIndexOf("\\", (_local5 - 1)), _arg1.lastIndexOf("/", (_local5 - 1)));
					};
				};
				if (_local5 != -1){
					_local3 = (_arg1.substr(0, (_local5 + 1)) + _arg2);
				};
			};
			return (_local3);
		}
		private static function dynamicURLFilter(_arg1:String, _arg2:int):String{
			return (_arg1.substring(0, _arg2));
		}

	}
}//package mx.utils 

****************

//NameUtil (mx.utils.NameUtil)
package mx.utils {
	import flash.utils.*;
	import flash.display.*;
	import mx.core.*;

	public class NameUtil {

		mx_internal static const VERSION:String = "3.5.0.12683";

		private static var counter:int = 0;

		public static function displayObjectToString(_arg1:DisplayObject):String{
			var result:String;
			var o:DisplayObject;
			var s:String;
			var indices:Array;
			var displayObject = _arg1;
			try {
				o = displayObject;
				while (o != null) {
					if (((((o.parent) && (o.stage))) && ((o.parent == o.stage)))){
						break;
					};
					s = o.name;
					if ((o is IRepeaterClient)){
						indices = IRepeaterClient(o).instanceIndices;
						if (indices){
							s = (s + (("[" + indices.join("][")) + "]"));
						};
					};
					result = ((result == null)) ? s : ((s + ".") + result);
					o = o.parent;
				};
			} catch(e:SecurityError) {
			};
			return (result);
		}
		public static function createUniqueName(_arg1:Object):String{
			if (!_arg1){
				return (null);
			};
			var _local2:String = getQualifiedClassName(_arg1);
			var _local3:int = _local2.indexOf("::");
			if (_local3 != -1){
				_local2 = _local2.substr((_local3 + 2));
			};
			var _local4:int = _local2.charCodeAt((_local2.length - 1));
			if ((((_local4 >= 48)) && ((_local4 <= 57)))){
				_local2 = (_local2 + "_");
			};
			return ((_local2 + counter++));
		}

	}
}//package mx.utils 

****************

//object_proxy (mx.utils.object_proxy)
package mx.utils {

	public namespace object_proxy = "http://www.adobe.com/2006/actionscript/flash/objectproxy";
}//package mx.utils 

****************

//ObjectProxy (mx.utils.ObjectProxy)
package mx.utils {
	import mx.core.*;
	import mx.events.*;
	import flash.events.*;
	import flash.utils.*;

	public dynamic class ObjectProxy extends Proxy implements IExternalizable, IPropertyChangeNotifier {

		private var _id:String;
		protected var notifiers:Object;
		protected var propertyList:Array;
		private var _proxyLevel:int;
		private var _type:QName;
		protected var dispatcher:EventDispatcher;
		protected var proxyClass:Class;
		private var _item:Object;

		public function ObjectProxy(_arg1:Object=null, _arg2:String=null, _arg3:int=-1){
			proxyClass = ObjectProxy;
			super();
			if (!_arg1){
				_arg1 = {};
			};
			_item = _arg1;
			_proxyLevel = _arg3;
			notifiers = {};
			dispatcher = new EventDispatcher(this);
			if (_arg2){
				_id = _arg2;
			};
		}
		public function dispatchEvent(_arg1:Event):Boolean{
			return (dispatcher.dispatchEvent(_arg1));
		}
		public function hasEventListener(_arg1:String):Boolean{
			return (dispatcher.hasEventListener(_arg1));
		}
		override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function setProperty(_arg1, _arg2):void{
			var _local4:IPropertyChangeNotifier;
			var _local5:PropertyChangeEvent;
			var _local3:* = _item[_arg1];
			if (_local3 !== _arg2){
				_item[_arg1] = _arg2;
				_local4 = IPropertyChangeNotifier(notifiers[_arg1]);
				if (_local4){
					_local4.removeEventListener(PropertyChangeEvent.PROPERTY_CHANGE, propertyChangeHandler);
					delete notifiers[_arg1];
				};
				if (dispatcher.hasEventListener(PropertyChangeEvent.PROPERTY_CHANGE)){
					if ((_arg1 is QName)){
						_arg1 = QName(_arg1).localName;
					};
					_local5 = PropertyChangeEvent.createUpdateEvent(this, _arg1.toString(), _local3, _arg2);
					dispatcher.dispatchEvent(_local5);
				};
			};
		}
		public function willTrigger(_arg1:String):Boolean{
			return (dispatcher.willTrigger(_arg1));
		}
		public function readExternal(_arg1:IDataInput):void{
			var _local2:Object = _arg1.readObject();
			_item = _local2;
		}
		public function writeExternal(_arg1:IDataOutput):void{
			_arg1.writeObject(_item);
		}
		override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(_arg1){
			var _local2:*;
			if (notifiers[_arg1.toString()]){
				return (notifiers[_arg1]);
			};
			_local2 = _item[_arg1];
			if (_local2){
				if ((((_proxyLevel == 0)) || (ObjectUtil.isSimple(_local2)))){
					return (_local2);
				};
				_local2 = getComplexProperty(_arg1, _local2);
			};
			return (_local2);
		}
		override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function hasProperty(_arg1):Boolean{
			return ((_arg1 in _item));
		}
		public function get uid():String{
			if (_id === null){
				_id = UIDUtil.createUID();
			};
			return (_id);
		}
		override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextNameIndex(_arg1:int):int{
			if (_arg1 == 0){
				setupPropertyList();
			};
			if (_arg1 < propertyList.length){
				return ((_arg1 + 1));
			};
			return (0);
		}
		public function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{
			dispatcher.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5);
		}
		override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextName(_arg1:int):String{
			return (propertyList[(_arg1 - 1)]);
		}
		public function set uid(_arg1:String):void{
			_id = _arg1;
		}
		override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function callProperty(_arg1, ... _args){
			return (_item[_arg1].apply(_item, _args));
		}
		public function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{
			dispatcher.removeEventListener(_arg1, _arg2, _arg3);
		}
		protected function setupPropertyList():void{
			var _local1:String;
			if (getQualifiedClassName(_item) == "Object"){
				propertyList = [];
				for (_local1 in _item) {
					propertyList.push(_local1);
				};
			} else {
				propertyList = ObjectUtil.getClassInfo(_item, null, {includeReadOnly:true, uris:["*"]}).properties;
			};
		}
		object_proxy function getComplexProperty(_arg1, _arg2){
			if ((_arg2 is IPropertyChangeNotifier)){
				_arg2.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, propertyChangeHandler);
				notifiers[_arg1] = _arg2;
				return (_arg2);
			};
			if (getQualifiedClassName(_arg2) == "Object"){
				_arg2 = new proxyClass(_item[_arg1], null, ((_proxyLevel > 0)) ? (_proxyLevel - 1) : _proxyLevel);
				_arg2.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, propertyChangeHandler);
				notifiers[_arg1] = _arg2;
				return (_arg2);
			};
			return (_arg2);
		}
		override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function deleteProperty(_arg1):Boolean{
			var _local5:PropertyChangeEvent;
			var _local2:IPropertyChangeNotifier = IPropertyChangeNotifier(notifiers[_arg1]);
			if (_local2){
				_local2.removeEventListener(PropertyChangeEvent.PROPERTY_CHANGE, propertyChangeHandler);
				delete notifiers[_arg1];
			};
			var _local3:* = _item[_arg1];
			var _local4 = delete _item[_arg1];
			if (dispatcher.hasEventListener(PropertyChangeEvent.PROPERTY_CHANGE)){
				_local5 = new PropertyChangeEvent(PropertyChangeEvent.PROPERTY_CHANGE);
				_local5.kind = PropertyChangeEventKind.DELETE;
				_local5.property = _arg1;
				_local5.oldValue = _local3;
				_local5.source = this;
				dispatcher.dispatchEvent(_local5);
			};
			return (_local4);
		}
		object_proxy function get type():QName{
			return (_type);
		}
		object_proxy function set type(_arg1:QName):void{
			_type = _arg1;
		}
		public function propertyChangeHandler(_arg1:PropertyChangeEvent):void{
			dispatcher.dispatchEvent(_arg1);
		}
		override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextValue(_arg1:int){
			return (_item[propertyList[(_arg1 - 1)]]);
		}
		object_proxy function get object():Object{
			return (_item);
		}

	}
}//package mx.utils 

****************

//ObjectUtil (mx.utils.ObjectUtil)
package mx.utils {
	import mx.collections.*;
	import flash.utils.*;
	import flash.xml.*;

	public class ObjectUtil {

		mx_internal static const VERSION:String = "3.5.0.12683";

		private static var defaultToStringExcludes:Array = ["password", "credentials"];
		private static var CLASS_INFO_CACHE:Object = {};
		private static var refCount:int = 0;

		public static function isSimple(_arg1:Object):Boolean{
			var _local2 = typeof(_arg1);
			switch (_local2){
				case "number":
				case "string":
				case "boolean":
					return (true);
				case "object":
					return ((((_arg1 is Date)) || ((_arg1 is Array))));
			};
			return (false);
		}
		private static function internalToString(_arg1:Object, _arg2:int=0, _arg3:Dictionary=null, _arg4:Array=null, _arg5:Array=null):String{
			var str:String;
			var classInfo:Object;
			var properties:Array;
			var isArray:Boolean;
			var isDict:Boolean;
			var prop:*;
			var j:int;
			var id:Object;
			var value = _arg1;
			var indent = _arg2;
			var refs = _arg3;
			var namespaceURIs = _arg4;
			var exclude = _arg5;
			var type:String = ((value == null)) ? "null" : typeof(value);
			switch (type){
				case "boolean":
				case "number":
					return (value.toString());
				case "string":
					return ((("\"" + value.toString()) + "\""));
				case "object":
					if ((value is Date)){
						return (value.toString());
					};
					if ((value is XMLNode)){
						return (value.toString());
					};
					if ((value is Class)){
						return ((("(" + getQualifiedClassName(value)) + ")"));
					};
					classInfo = getClassInfo(value, exclude, {includeReadOnly:true, uris:namespaceURIs});
					properties = classInfo.properties;
					str = (("(" + classInfo.name) + ")");
					if (refs == null){
						refs = new Dictionary(true);
					};
					try {
						id = refs[value];
						if (id != null){
							str = (str + ("#" + int(id)));
							return (str);
						};
					} catch(e:Error) {
						return (String(value));
					};
					if (value != null){
						str = (str + ("#" + refCount.toString()));
						refs[value] = refCount;
						refCount++;
					};
					isArray = (value is Array);
					isDict = (value is Dictionary);
					indent = (indent + 2);
					j = 0;
					while (j < properties.length) {
						str = newline(str, indent);
						prop = properties[j];
						if (isArray){
							str = (str + "[");
						} else {
							if (isDict){
								str = (str + "{");
							};
						};
						if (isDict){
							str = (str + internalToString(prop, indent, refs, namespaceURIs, exclude));
						} else {
							str = (str + prop.toString());
						};
						if (isArray){
							str = (str + "] ");
						} else {
							if (isDict){
								str = (str + "} = ");
							} else {
								str = (str + " = ");
							};
						};
						try {
							str = (str + internalToString(value[prop], indent, refs, namespaceURIs, exclude));
						} catch(e:Error) {
							str = (str + "?");
						};
						j = (j + 1);
					};
					indent = (indent - 2);
					return (str);
				case "xml":
					return (value.toXMLString());
				default:
					return ((("(" + type) + ")"));
			};
		}
		public static function getClassInfo(_arg1:Object, _arg2:Array=null, _arg3:Object=null):Object{
			var n:int;
			var i:int;
			var result:Object;
			var cacheKey:String;
			var className:String;
			var classAlias:String;
			var properties:XMLList;
			var prop:XML;
			var metadataInfo:Object;
			var classInfo:XML;
			var numericIndex:Boolean;
			var key:*;
			var p:String;
			var pi:Number;
			var uris:Array;
			var uri:String;
			var qName:QName;
			var j:int;
			var obj = _arg1;
			var excludes = _arg2;
			var options = _arg3;
			if ((obj is ObjectProxy)){
				obj = ObjectProxy(obj).object_proxy::object;
			};
			if (options == null){
				options = {includeReadOnly:true, uris:null, includeTransient:true};
			};
			var propertyNames:Array = [];
			var dynamic:Boolean;
			if (typeof(obj) == "xml"){
				className = "XML";
				properties = obj.text();
				if (properties.length()){
					propertyNames.push("*");
				};
				properties = obj.attributes();
			} else {
				classInfo = DescribeTypeCache.describeType(obj).typeDescription;
				className = classInfo.@name.toString();
				classAlias = classInfo.@alias.toString();
				dynamic = (classInfo.@isDynamic.toString() == "true");
				if (options.includeReadOnly){
					properties = (classInfo..accessor.(@access != "writeonly") + classInfo..variable);
				} else {
					properties = (classInfo..accessor.(@access == "readwrite") + classInfo..variable);
				};
				numericIndex = false;
			};
			if (!dynamic){
				cacheKey = getCacheKey(obj, excludes, options);
				result = CLASS_INFO_CACHE[cacheKey];
				if (result != null){
					return (result);
				};
			};
			result = {};
			result["name"] = className;
			result["alias"] = classAlias;
			result["properties"] = propertyNames;
			result["dynamic"] = dynamic;
			var _local5 = recordMetadata(properties);
			metadataInfo = _local5;
			result["metadata"] = _local5;
			var excludeObject:Object = {};
			if (excludes){
				n = excludes.length;
				i = 0;
				while (i < n) {
					excludeObject[excludes[i]] = 1;
					i = (i + 1);
				};
			};
			var isArray = (className == "Array");
			var isDict = (className == "flash.utils::Dictionary");
			if (isDict){
				for (key in obj) {
					propertyNames.push(key);
				};
			} else {
				if (dynamic){
					for (p in obj) {
						if (excludeObject[p] != 1){
							if (isArray){
								pi = parseInt(p);
								if (isNaN(pi)){
									propertyNames.push(new QName("", p));
								} else {
									propertyNames.push(pi);
								};
							} else {
								propertyNames.push(new QName("", p));
							};
						};
					};
					numericIndex = ((isArray) && (!(isNaN(Number(p)))));
				};
			};
			if (((((isArray) || (isDict))) || ((className == "Object")))){
			} else {
				if (className == "XML"){
					n = properties.length();
					i = 0;
					while (i < n) {
						p = properties[i].name();
						if (excludeObject[p] != 1){
							propertyNames.push(new QName("", ("@" + p)));
						};
						i = (i + 1);
					};
				} else {
					n = properties.length();
					uris = options.uris;
					i = 0;
					while (i < n) {
						prop = properties[i];
						p = prop.@name.toString();
						uri = prop.@uri.toString();
						if (excludeObject[p] == 1){
						} else {
							if (((!(options.includeTransient)) && (internalHasMetadata(metadataInfo, p, "Transient")))){
							} else {
								if (uris != null){
									if ((((uris.length == 1)) && ((uris[0] == "*")))){
										qName = new QName(uri, p);
										try {
											obj[qName];
											propertyNames.push();
										} catch(e:Error) {
										};
									} else {
										j = 0;
										while (j < uris.length) {
											uri = uris[j];
											if (prop.@uri.toString() == uri){
												qName = new QName(uri, p);
												try {
													obj[qName];
													propertyNames.push(qName);
												} catch(e:Error) {
												};
											};
											j = (j + 1);
										};
									};
								} else {
									if (uri.length == 0){
										qName = new QName(uri, p);
										try {
											obj[qName];
											propertyNames.push(qName);
										} catch(e:Error) {
										};
									};
								};
							};
						};
						i = (i + 1);
					};
				};
			};
			propertyNames.sort((Array.CASEINSENSITIVE | (numericIndex) ? Array.NUMERIC : 0));
			if (!isDict){
				i = 0;
				while (i < (propertyNames.length - 1)) {
					if (propertyNames[i].toString() == propertyNames[(i + 1)].toString()){
						propertyNames.splice(i, 1);
						i = (i - 1);
					};
					i = (i + 1);
				};
			};
			if (!dynamic){
				cacheKey = getCacheKey(obj, excludes, options);
				CLASS_INFO_CACHE[cacheKey] = result;
			};
			return (result);
		}
		private static function arrayCompare(_arg1:Array, _arg2:Array, _arg3:int, _arg4:int, _arg5:Dictionary):int{
			var _local7:Object;
			var _local6:int;
			if (_arg1.length != _arg2.length){
				if (_arg1.length < _arg2.length){
					_local6 = -1;
				} else {
					_local6 = 1;
				};
			} else {
				for (_local7 in _arg1) {
					if (_arg2.hasOwnProperty(_local7)){
						_local6 = internalCompare(_arg1[_local7], _arg2[_local7], _arg3, _arg4, _arg5);
						if (_local6 != 0){
							return (_local6);
						};
					} else {
						return (-1);
					};
				};
				for (_local7 in _arg2) {
					if (!_arg1.hasOwnProperty(_local7)){
						return (1);
					};
				};
			};
			return (_local6);
		}
		public static function stringCompare(_arg1:String, _arg2:String, _arg3:Boolean=false):int{
			if ((((_arg1 == null)) && ((_arg2 == null)))){
				return (0);
			};
			if (_arg1 == null){
				return (1);
			};
			if (_arg2 == null){
				return (-1);
			};
			if (_arg3){
				_arg1 = _arg1.toLocaleLowerCase();
				_arg2 = _arg2.toLocaleLowerCase();
			};
			var _local4:int = _arg1.localeCompare(_arg2);
			if (_local4 < -1){
				_local4 = -1;
			} else {
				if (_local4 > 1){
					_local4 = 1;
				};
			};
			return (_local4);
		}
		public static function dateCompare(_arg1:Date, _arg2:Date):int{
			if ((((_arg1 == null)) && ((_arg2 == null)))){
				return (0);
			};
			if (_arg1 == null){
				return (1);
			};
			if (_arg2 == null){
				return (-1);
			};
			var _local3:Number = _arg1.getTime();
			var _local4:Number = _arg2.getTime();
			if (_local3 < _local4){
				return (-1);
			};
			if (_local3 > _local4){
				return (1);
			};
			return (0);
		}
		public static function numericCompare(_arg1:Number, _arg2:Number):int{
			if (((isNaN(_arg1)) && (isNaN(_arg2)))){
				return (0);
			};
			if (isNaN(_arg1)){
				return (1);
			};
			if (isNaN(_arg2)){
				return (-1);
			};
			if (_arg1 < _arg2){
				return (-1);
			};
			if (_arg1 > _arg2){
				return (1);
			};
			return (0);
		}
		private static function newline(_arg1:String, _arg2:int=0):String{
			var _local3:String = _arg1;
			_local3 = (_local3 + "\n");
			var _local4:int;
			while (_local4 < _arg2) {
				_local3 = (_local3 + " ");
				_local4++;
			};
			return (_local3);
		}
		private static function getRef(_arg1:Object, _arg2:Dictionary):Object{
			var _local3:Object = _arg2[_arg1];
			while (((_local3) && (!((_local3 == _arg2[_local3]))))) {
				_local3 = _arg2[_local3];
			};
			if (!_local3){
				_local3 = _arg1;
			};
			if (_local3 != _arg2[_arg1]){
				_arg2[_arg1] = _local3;
			};
			return (_local3);
		}
		private static function recordMetadata(_arg1:XMLList):Object{
			var prop:XML;
			var propName:String;
			var metadataList:XMLList;
			var metadata:Object;
			var md:XML;
			var mdName:String;
			var argsList:XMLList;
			var value:Object;
			var arg:XML;
			var existing:Object;
			var argKey:String;
			var argValue:String;
			var existingArray:Array;
			var properties = _arg1;
			var result:Object;
			try {
				for each (prop in properties) {
					propName = prop.attribute("name").toString();
					metadataList = prop.metadata;
					if (metadataList.length() > 0){
						if (result == null){
							result = {};
						};
						metadata = {};
						result[propName] = metadata;
						for each (md in metadataList) {
							mdName = md.attribute("name").toString();
							argsList = md.arg;
							value = {};
							for each (arg in argsList) {
								argKey = arg.attribute("key").toString();
								if (argKey != null){
									argValue = arg.attribute("value").toString();
									value[argKey] = argValue;
								};
							};
							existing = metadata[mdName];
							if (existing != null){
								if ((existing is Array)){
									existingArray = (existing as Array);
								} else {
									existingArray = [existing];
									delete metadata[mdName];
								};
								existingArray.push(value);
								existing = existingArray;
							} else {
								existing = value;
							};
							metadata[mdName] = existing;
						};
					};
				};
			} catch(e:Error) {
			};
			return (result);
		}
		public static function compare(_arg1:Object, _arg2:Object, _arg3:int=-1):int{
			return (internalCompare(_arg1, _arg2, 0, _arg3, new Dictionary(true)));
		}
		private static function listCompare(_arg1:IList, _arg2:IList, _arg3:int, _arg4:int, _arg5:Dictionary):int{
			var _local7:int;
			var _local6:int;
			if (_arg1.length != _arg2.length){
				if (_arg1.length < _arg2.length){
					_local6 = -1;
				} else {
					_local6 = 1;
				};
			} else {
				_local7 = 0;
				while (_local7 < _arg1.length) {
					_local6 = internalCompare(_arg1.getItemAt(_local7), _arg2.getItemAt(_local7), (_arg3 + 1), _arg4, _arg5);
					if (_local6 != 0){
						_local7 = _arg1.length;
					};
					_local7++;
				};
			};
			return (_local6);
		}
		private static function internalCompare(_arg1:Object, _arg2:Object, _arg3:int, _arg4:int, _arg5:Dictionary):int{
			var newDepth:int;
			var aRef:Object;
			var bRef:Object;
			var aProps:Array;
			var bProps:Array;
			var isDynamicObject:Boolean;
			var propName:QName;
			var aProp:Object;
			var bProp:Object;
			var i:int;
			var a = _arg1;
			var b = _arg2;
			var currentDepth = _arg3;
			var desiredDepth = _arg4;
			var refs = _arg5;
			if ((((a == null)) && ((b == null)))){
				return (0);
			};
			if (a == null){
				return (1);
			};
			if (b == null){
				return (-1);
			};
			if ((a is ObjectProxy)){
				a = ObjectProxy(a).object_proxy::object;
			};
			if ((b is ObjectProxy)){
				b = ObjectProxy(b).object_proxy::object;
			};
			var typeOfA = typeof(a);
			var typeOfB = typeof(b);
			var result:int;
			if (typeOfA == typeOfB){
				switch (typeOfA){
					case "boolean":
						result = numericCompare(Number(a), Number(b));
						break;
					case "number":
						result = numericCompare((a as Number), (b as Number));
						break;
					case "string":
						result = stringCompare((a as String), (b as String));
						break;
					case "object":
						newDepth = ((desiredDepth > 0)) ? (desiredDepth - 1) : desiredDepth;
						aRef = getRef(a, refs);
						bRef = getRef(b, refs);
						if (aRef == bRef){
							return (0);
						};
						refs[bRef] = aRef;
						if (((!((desiredDepth == -1))) && ((currentDepth > desiredDepth)))){
							result = stringCompare(a.toString(), b.toString());
						} else {
							if ((((a is Array)) && ((b is Array)))){
								result = arrayCompare((a as Array), (b as Array), currentDepth, desiredDepth, refs);
							} else {
								if ((((a is Date)) && ((b is Date)))){
									result = dateCompare((a as Date), (b as Date));
								} else {
									if ((((a is IList)) && ((b is IList)))){
										result = listCompare((a as IList), (b as IList), currentDepth, desiredDepth, refs);
									} else {
										if ((((a is ByteArray)) && ((b is ByteArray)))){
											result = byteArrayCompare((a as ByteArray), (b as ByteArray));
										} else {
											if (getQualifiedClassName(a) == getQualifiedClassName(b)){
												aProps = getClassInfo(a).properties;
												isDynamicObject = true;
												try {
													a["wootHackwoot"];
												} catch(e:Error) {
													isDynamicObject = false;
												};
												if (isDynamicObject){
													bProps = getClassInfo(b).properties;
													result = arrayCompare(aProps, bProps, currentDepth, newDepth, refs);
													if (result != 0){
														return (result);
													};
												};
												i = 0;
												while (i < aProps.length) {
													propName = aProps[i];
													aProp = a[propName];
													bProp = b[propName];
													result = internalCompare(aProp, bProp, (currentDepth + 1), newDepth, refs);
													if (result != 0){
														return (result);
													};
													i = (i + 1);
												};
											} else {
												return (1);
											};
										};
									};
								};
							};
						};
						break;
				};
			} else {
				return (stringCompare(typeOfA, typeOfB));
			};
			return (result);
		}
		public static function hasMetadata(_arg1:Object, _arg2:String, _arg3:String, _arg4:Array=null, _arg5:Object=null):Boolean{
			var _local6:Object = getClassInfo(_arg1, _arg4, _arg5);
			var _local7:Object = _local6["metadata"];
			return (internalHasMetadata(_local7, _arg2, _arg3));
		}
		private static function internalHasMetadata(_arg1:Object, _arg2:String, _arg3:String):Boolean{
			var _local4:Object;
			if (_arg1 != null){
				_local4 = _arg1[_arg2];
				if (_local4 != null){
					if (_local4[_arg3] != null){
						return (true);
					};
				};
			};
			return (false);
		}
		public static function toString(_arg1:Object, _arg2:Array=null, _arg3:Array=null):String{
			if (_arg3 == null){
				_arg3 = defaultToStringExcludes;
			};
			refCount = 0;
			return (internalToString(_arg1, 0, null, _arg2, _arg3));
		}
		private static function byteArrayCompare(_arg1:ByteArray, _arg2:ByteArray):int{
			var _local4:int;
			var _local3:int;
			if (_arg1 == _arg2){
				return (_local3);
			};
			if (_arg1.length != _arg2.length){
				if (_arg1.length < _arg2.length){
					_local3 = -1;
				} else {
					_local3 = 1;
				};
			} else {
				_local4 = 0;
				while (_local4 < _arg1.length) {
					_local3 = numericCompare(_arg1[_local4], _arg2[_local4]);
					if (_local3 != 0){
						_local4 = _arg1.length;
					};
					_local4++;
				};
			};
			return (_local3);
		}
		public static function copy(_arg1:Object):Object{
			var _local2:ByteArray = new ByteArray();
			_local2.writeObject(_arg1);
			_local2.position = 0;
			var _local3:Object = _local2.readObject();
			return (_local3);
		}
		private static function getCacheKey(_arg1:Object, _arg2:Array=null, _arg3:Object=null):String{
			var _local5:uint;
			var _local6:String;
			var _local7:String;
			var _local8:String;
			var _local4:String = getQualifiedClassName(_arg1);
			if (_arg2 != null){
				_local5 = 0;
				while (_local5 < _arg2.length) {
					_local6 = (_arg2[_local5] as String);
					if (_local6 != null){
						_local4 = (_local4 + _local6);
					};
					_local5++;
				};
			};
			if (_arg3 != null){
				for (_local7 in _arg3) {
					_local4 = (_local4 + _local7);
					_local8 = (_arg3[_local7] as String);
					if (_local8 != null){
						_local4 = (_local4 + _local8);
					};
				};
			};
			return (_local4);
		}

	}
}//package mx.utils 

****************

//SecurityUtil (mx.utils.SecurityUtil)
package mx.utils {
	import mx.core.*;

	public class SecurityUtil {

		mx_internal static const VERSION:String = "3.5.0.12683";

		public static function hasMutualTrustBetweenParentAndChild(_arg1:ISWFBridgeProvider):Boolean{
			if (((((_arg1) && (_arg1.childAllowsParent))) && (_arg1.parentAllowsChild))){
				return (true);
			};
			return (false);
		}

	}
}//package mx.utils 

****************

//StringUtil (mx.utils.StringUtil)
package mx.utils {
	import mx.core.*;

	public class StringUtil {

		mx_internal static const VERSION:String = "3.5.0.12683";

		public static function trim(_arg1:String):String{
			if (_arg1 == null){
				return ("");
			};
			var _local2:int;
			while (isWhitespace(_arg1.charAt(_local2))) {
				_local2++;
			};
			var _local3:int = (_arg1.length - 1);
			while (isWhitespace(_arg1.charAt(_local3))) {
				_local3--;
			};
			if (_local3 >= _local2){
				return (_arg1.slice(_local2, (_local3 + 1)));
			};
			return ("");
		}
		public static function isWhitespace(_arg1:String):Boolean{
			switch (_arg1){
				case " ":
				case "\t":
				case "\r":
				case "\n":
				case "\f":
					return (true);
				default:
					return (false);
			};
		}
		public static function substitute(_arg1:String, ... _args):String{
			var _local4:Array;
			if (_arg1 == null){
				return ("");
			};
			var _local3:uint = _args.length;
			if ((((_local3 == 1)) && ((_args[0] is Array)))){
				_local4 = (_args[0] as Array);
				_local3 = _local4.length;
			} else {
				_local4 = _args;
			};
			var _local5:int;
			while (_local5 < _local3) {
				_arg1 = _arg1.replace(new RegExp((("\\{" + _local5) + "\\}"), "g"), _local4[_local5]);
				_local5++;
			};
			return (_arg1);
		}
		public static function trimArrayElements(_arg1:String, _arg2:String):String{
			var _local3:Array;
			var _local4:int;
			var _local5:int;
			if (((!((_arg1 == ""))) && (!((_arg1 == null))))){
				_local3 = _arg1.split(_arg2);
				_local4 = _local3.length;
				_local5 = 0;
				while (_local5 < _local4) {
					_local3[_local5] = StringUtil.trim(_local3[_local5]);
					_local5++;
				};
				if (_local4 > 0){
					_arg1 = _local3.join(_arg2);
				};
			};
			return (_arg1);
		}

	}
}//package mx.utils 

****************

//UIDUtil (mx.utils.UIDUtil)
package mx.utils {
	import mx.core.*;
	import flash.utils.*;

	public class UIDUtil {

		mx_internal static const VERSION:String = "3.5.0.12683";
		private static const ALPHA_CHAR_CODES:Array = [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70];

		private static var uidDictionary:Dictionary = new Dictionary(true);

		public static function fromByteArray(_arg1:ByteArray):String{
			var _local2:Array;
			var _local3:uint;
			var _local4:uint;
			var _local5:int;
			if (((((!((_arg1 == null))) && ((_arg1.length >= 16)))) && ((_arg1.bytesAvailable >= 16)))){
				_local2 = new Array(36);
				_local3 = 0;
				_local4 = 0;
				while (_local4 < 16) {
					if ((((((((_local4 == 4)) || ((_local4 == 6)))) || ((_local4 == 8)))) || ((_local4 == 10)))){
						var _temp1 = _local3;
						_local3 = (_local3 + 1);
						var _local6 = _temp1;
						_local2[_local6] = 45;
					};
					_local5 = _arg1.readByte();
					var _temp2 = _local3;
					_local3 = (_local3 + 1);
					_local6 = _temp2;
					_local2[_local6] = ALPHA_CHAR_CODES[((_local5 & 240) >>> 4)];
					var _temp3 = _local3;
					_local3 = (_local3 + 1);
					var _local7 = _temp3;
					_local2[_local7] = ALPHA_CHAR_CODES[(_local5 & 15)];
					_local4++;
				};
				return (String.fromCharCode.apply(null, _local2));
			};
			return (null);
		}
		public static function isUID(_arg1:String):Boolean{
			var _local2:uint;
			var _local3:Number;
			if (((!((_arg1 == null))) && ((_arg1.length == 36)))){
				_local2 = 0;
				while (_local2 < 36) {
					_local3 = _arg1.charCodeAt(_local2);
					if ((((((((_local2 == 8)) || ((_local2 == 13)))) || ((_local2 == 18)))) || ((_local2 == 23)))){
						if (_local3 != 45){
							return (false);
						};
					} else {
						if ((((((_local3 < 48)) || ((_local3 > 70)))) || ((((_local3 > 57)) && ((_local3 < 65)))))){
							return (false);
						};
					};
					_local2++;
				};
				return (true);
			};
			return (false);
		}
		public static function createUID():String{
			var _local3:int;
			var _local4:int;
			var _local1:Array = new Array(36);
			var _local2:int;
			_local3 = 0;
			while (_local3 < 8) {
				var _temp1 = _local2;
				_local2 = (_local2 + 1);
				var _local7 = _temp1;
				_local1[_local7] = ALPHA_CHAR_CODES[Math.floor((Math.random() * 16))];
				_local3++;
			};
			_local3 = 0;
			while (_local3 < 3) {
				var _temp2 = _local2;
				_local2 = (_local2 + 1);
				_local7 = _temp2;
				_local1[_local7] = 45;
				_local4 = 0;
				while (_local4 < 4) {
					var _temp3 = _local2;
					_local2 = (_local2 + 1);
					var _local8 = _temp3;
					_local1[_local8] = ALPHA_CHAR_CODES[Math.floor((Math.random() * 16))];
					_local4++;
				};
				_local3++;
			};
			var _temp4 = _local2;
			_local2 = (_local2 + 1);
			_local7 = _temp4;
			_local1[_local7] = 45;
			var _local5:Number = new Date().getTime();
			var _local6:String = ("0000000" + _local5.toString(16).toUpperCase()).substr(-8);
			_local3 = 0;
			while (_local3 < 8) {
				var _temp5 = _local2;
				_local2 = (_local2 + 1);
				_local8 = _temp5;
				_local1[_local8] = _local6.charCodeAt(_local3);
				_local3++;
			};
			_local3 = 0;
			while (_local3 < 4) {
				var _temp6 = _local2;
				_local2 = (_local2 + 1);
				_local8 = _temp6;
				_local1[_local8] = ALPHA_CHAR_CODES[Math.floor((Math.random() * 16))];
				_local3++;
			};
			return (String.fromCharCode.apply(null, _local1));
		}
		public static function toByteArray(_arg1:String):ByteArray{
			var _local2:ByteArray;
			var _local3:uint;
			var _local4:String;
			var _local5:uint;
			var _local6:uint;
			if (isUID(_arg1)){
				_local2 = new ByteArray();
				_local3 = 0;
				while (_local3 < _arg1.length) {
					_local4 = _arg1.charAt(_local3);
					if (_local4 == "-"){
					} else {
						_local5 = getDigit(_local4);
						_local3++;
						_local6 = getDigit(_arg1.charAt(_local3));
						_local2.writeByte((((_local5 << 4) | _local6) & 0xFF));
					};
					_local3++;
				};
				_local2.position = 0;
				return (_local2);
			};
			return (null);
		}
		private static function getDigit(_arg1:String):uint{
			switch (_arg1){
				case "A":
				case "a":
					return (10);
				case "B":
				case "b":
					return (11);
				case "C":
				case "c":
					return (12);
				case "D":
				case "d":
					return (13);
				case "E":
				case "e":
					return (14);
				case "F":
				case "f":
					return (15);
				default:
					return (new uint(_arg1));
			};
		}
		public static function getUID(_arg1:Object):String{
			var result:String;
			var xitem:XML;
			var nodeKind:String;
			var notificationFunction:Function;
			var item = _arg1;
			result = null;
			if (item == null){
				return (result);
			};
			if ((item is IUID)){
				result = IUID(item).uid;
				if ((((result == null)) || ((result.length == 0)))){
					result = createUID();
					IUID(item).uid = result;
				};
			} else {
				if ((((item is IPropertyChangeNotifier)) && (!((item is IUIComponent))))){
					result = IPropertyChangeNotifier(item).uid;
					if ((((result == null)) || ((result.length == 0)))){
						result = createUID();
						IPropertyChangeNotifier(item).uid = result;
					};
				} else {
					if ((item is String)){
						return ((item as String));
					};
					try {
						if ((((item is XMLList)) && ((item.length == 1)))){
							item = item[0];
						};
						if ((item is XML)){
							xitem = XML(item);
							nodeKind = xitem.nodeKind();
							if ((((nodeKind == "text")) || ((nodeKind == "attribute")))){
								return (xitem.toString());
							};
							notificationFunction = xitem.notification();
							if (!(notificationFunction is Function)){
								notificationFunction = XMLNotifier.initializeXMLForNotification();
								xitem.setNotification(notificationFunction);
							};
							if (notificationFunction["uid"] == undefined){
								result = (notificationFunction["uid"] = createUID());
							};
							result = notificationFunction["uid"];
						} else {
							if (("mx_internal_uid" in item)){
								return (item.mx_internal_uid);
							};
							if (("uid" in item)){
								return (item.uid);
							};
							result = uidDictionary[item];
							if (!result){
								result = createUID();
								try {
									item.mx_internal_uid = result;
								} catch(e:Error) {
									uidDictionary[item] = result;
								};
							};
						};
					} catch(e:Error) {
						result = item.toString();
					};
				};
			};
			return (result);
		}

	}
}//package mx.utils 

****************

//XMLNotifier (mx.utils.XMLNotifier)
package mx.utils {
	import flash.utils.*;

	public class XMLNotifier {

		mx_internal static const VERSION:String = "3.5.0.12683";

		private static var instance:XMLNotifier;

		public function XMLNotifier(_arg1:XMLNotifierSingleton){
		}
		public function watchXML(_arg1:Object, _arg2:IXMLNotifiable, _arg3:String=null):void{
			var _local6:Dictionary;
			var _local4:XML = XML(_arg1);
			var _local5:Object = _local4.notification();
			if (!(_local5 is Function)){
				_local5 = initializeXMLForNotification();
				_local4.setNotification((_local5 as Function));
				if (((_arg3) && ((_local5["uid"] == null)))){
					_local5["uid"] = _arg3;
				};
			};
			if (_local5["watched"] == undefined){
				_local6 = new Dictionary(true);
				_local5["watched"] = _local6;
			} else {
				_local6 = _local5["watched"];
			};
			_local6[_arg2] = true;
		}
		public function unwatchXML(_arg1:Object, _arg2:IXMLNotifiable):void{
			var _local5:Dictionary;
			var _local3:XML = XML(_arg1);
			var _local4:Object = _local3.notification();
			if (!(_local4 is Function)){
				return;
			};
			if (_local4["watched"] != undefined){
				_local5 = _local4["watched"];
				delete _local5[_arg2];
			};
		}

		public static function getInstance():XMLNotifier{
			if (!instance){
				instance = new XMLNotifier(new XMLNotifierSingleton());
			};
			return (instance);
		}
		mx_internal static function initializeXMLForNotification():Function{
			var notificationFunction:Function = function (_arg1:Object, _arg2:String, _arg3:Object, _arg4:Object, _arg5:Object):void{
				var _local8:Object;
				var _local7:Dictionary = arguments.callee.watched;
				if (_local7 != null){
					for (_local8 in _local7) {
						IXMLNotifiable(_local8).xmlNotification(_arg1, _arg2, _arg3, _arg4, _arg5);
					};
				};
			};
			return (notificationFunction);
		}

	}
}//package mx.utils 

class XMLNotifierSingleton {

	private function XMLNotifierSingleton(){
	}
}

****************

//IValidatorListener (mx.validators.IValidatorListener)
package mx.validators {
	import mx.events.*;

	public interface IValidatorListener {

		function set errorString(_arg1:String):void;
		function get validationSubField():String;
		function validationResultHandler(_arg1:ValidationResultEvent):void;
		function set validationSubField(_arg1:String):void;
		function get errorString():String;

	}
}//package mx.validators 

****************

//ValidationResult (mx.validators.ValidationResult)
package mx.validators {

	public class ValidationResult {

		public var subField:String;
		public var errorCode:String;
		public var isError:Boolean;
		public var errorMessage:String;

		mx_internal static const VERSION:String = "3.5.0.12683";

		public function ValidationResult(_arg1:Boolean, _arg2:String="", _arg3:String="", _arg4:String=""){
			this.isError = _arg1;
			this.subField = _arg2;
			this.errorMessage = _arg4;
			this.errorCode = _arg3;
		}
	}
}//package mx.validators 

****************

//Images (resources.images.Images)
package resources.images {

	public class Images {

		public static var RoomBackgrKeys:Class = Images_RoomBackgrKeys;
		public static var DesktopForegr:Class = Images_DesktopForegr;
		public static var RoomForegr:Class = Images_RoomForegr;
		public static var GeometryTextureBlack:Class = Images_GeometryTextureBlack;
		public static var RoomBackgr:Class = Images_RoomBackgr;

	}
}//package resources.images 

****************

//Images_DesktopForegr (resources.images.Images_DesktopForegr)
package resources.images {
	import mx.core.*;

	public class Images_DesktopForegr extends BitmapAsset {

	}
}//package resources.images 

****************

//Images_GeometryTextureBlack (resources.images.Images_GeometryTextureBlack)
package resources.images {
	import mx.core.*;

	public class Images_GeometryTextureBlack extends BitmapAsset {

	}
}//package resources.images 

****************

//Images_RoomBackgr (resources.images.Images_RoomBackgr)
package resources.images {
	import mx.core.*;

	public class Images_RoomBackgr extends BitmapAsset {

	}
}//package resources.images 

****************

//Images_RoomBackgrKeys (resources.images.Images_RoomBackgrKeys)
package resources.images {
	import mx.core.*;

	public class Images_RoomBackgrKeys extends BitmapAsset {

	}
}//package resources.images 

****************

//Images_RoomForegr (resources.images.Images_RoomForegr)
package resources.images {
	import mx.core.*;

	public class Images_RoomForegr extends BitmapAsset {

	}
}//package resources.images 

****************

//AirFetch (resources.levels.AirFetch)
package resources.levels {

	public class AirFetch {

		public static const xml:XML = <level name="yo" rows="2" columns="2" horizontalRoomDivisions="45" verticalRoomDivisions="30">
			  <room name="ROOM4" row="0" column="0">
				<element x="40" y="26" type="geometry">
				  <vertex x="0" y="4"/>
				  <vertex x="0" y="0"/>
				  <vertex x="5" y="0"/>
				  <vertex x="5" y="4"/>
				</element>
				<element x="42" y="24" type="goal"/>
			  </room>
			  <room name="ROOM5" row="0" column="1">
				<element x="0" y="26" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="5" y="0"/>
				  <vertex x="5" y="4"/>
				  <vertex x="0" y="4"/>
				</element>
				<element x="3" y="25" type="start"/>
				<element x="43" y="14" type="pickup"/>
			  </room>
			  <room name="ROOM7" row="1" column="1">
				<element x="0" y="0" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="5" y="0"/>
				  <vertex x="5" y="4"/>
				  <vertex x="0" y="4"/>
				  <vertex x="0" y="1"/>
				</element>
			  </room>
			  <matches>
				<room name="ROOM4">
				  <side type="left">
					<room name="ROOM5"/>
					<room name="ROOM7"/>
				  </side>
				  <side type="right">
					<room name="ROOM5"/>
				  </side>
				  <side type="top">
					<room name="ROOM7"/>
				  </side>
				  <side type="bottom"/>
				</room>
				<room name="ROOM5">
				  <side type="left">
					<room name="ROOM4"/>
				  </side>
				  <side type="right">
					<room name="ROOM4"/>
				  </side>
				  <side type="top">
					<room name="ROOM7"/>
				  </side>
				  <side type="bottom">
					<room name="ROOM7"/>
				  </side>
				</room>
				<room name="ROOM7">
				  <side type="left"/>
				  <side type="right">
					<room name="ROOM4"/>
				  </side>
				  <side type="top">
					<room name="ROOM5"/>
				  </side>
				  <side type="bottom">
					<room name="ROOM4"/>
					<room name="ROOM5"/>
				  </side>
				</room>
			  </matches>
			</level>
		;

	}
}//package resources.levels 

****************

//Antfarm (resources.levels.Antfarm)
package resources.levels {

	public class Antfarm {

		public static const xml:XML = <level name="yo" rows="3" columns="3" horizontalRoomDivisions="45" verticalRoomDivisions="30">
  <room name="ROOM10" row="0" column="1">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="8" y="0"/>
      <vertex x="8" y="4"/>
    </element>
    <element x="12" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="12" y="0"/>
      <vertex x="12" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="28" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="17" y="0"/>
      <vertex x="17" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="28" y="4" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="20" y="8" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="0" y="8" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="12" y="0"/>
      <vertex x="12" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="28" y="26" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="17" y="0"/>
      <vertex x="17" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="37" y="22" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="4"/>
    </element>
    <element x="43" y="24" type="pickup"/>
    <element x="0" y="26" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="8" y="0"/>
      <vertex x="8" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="12" y="26" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="12" y="0"/>
      <vertex x="12" y="4"/>
    </element>
    <element x="8" y="22" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="16" y="0"/>
      <vertex x="16" y="4"/>
    </element>
    <element x="0" y="12" type="geometry">
      <vertex x="0" y="10"/>
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="10"/>
    </element>
    <element x="37" y="12" type="geometry">
      <vertex x="0" y="10"/>
      <vertex x="0" y="0"/>
      <vertex x="8" y="0"/>
      <vertex x="8" y="10"/>
    </element>
  </room>
  <room name="ROOM11" row="0" column="2">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="12"/>
      <vertex x="0" y="0"/>
      <vertex x="12" y="0"/>
      <vertex x="12" y="12"/>
    </element>
    <element x="16" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="8" y="0"/>
      <vertex x="8" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="28" y="0" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="17" y="0"/>
      <vertex x="17" y="4"/>
    </element>
    <element x="0" y="16" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="12" y="0"/>
      <vertex x="12" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="0" y="24" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="12" y="0"/>
      <vertex x="12" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="16" y="24" type="geometry">
      <vertex x="0" y="6"/>
      <vertex x="0" y="0"/>
      <vertex x="8" y="0"/>
      <vertex x="8" y="6"/>
    </element>
    <element x="28" y="26" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="17" y="0"/>
      <vertex x="17" y="4"/>
    </element>
    <element x="24" y="8" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="18"/>
      <vertex x="0" y="18"/>
    </element>
    <element x="32" y="8" type="geometry">
      <vertex x="0" y="14"/>
      <vertex x="0" y="0"/>
      <vertex x="13" y="0"/>
      <vertex x="13" y="14"/>
    </element>
    <element x="32" y="4" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="4"/>
    </element>
    <element x="20" y="8" type="geometry">
      <vertex x="0" y="16"/>
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="16"/>
    </element>
    <element x="25" y="6" type="goal"/>
  </room>
  <room name="ROOM12" row="1" column="0">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="16" y="0"/>
      <vertex x="16" y="12"/>
      <vertex x="0" y="12"/>
    </element>
    <element x="20" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="12"/>
      <vertex x="0" y="12"/>
    </element>
    <element x="0" y="16" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="4"/>
    </element>
    <element x="0" y="24" type="geometry">
      <vertex x="0" y="6"/>
      <vertex x="0" y="0"/>
      <vertex x="12" y="0"/>
      <vertex x="12" y="6"/>
    </element>
    <element x="16" y="20" type="geometry">
      <vertex x="0" y="10"/>
      <vertex x="0" y="0"/>
      <vertex x="8" y="0"/>
      <vertex x="8" y="10"/>
    </element>
    <element x="28" y="24" type="geometry">
      <vertex x="0" y="6"/>
      <vertex x="0" y="0"/>
      <vertex x="17" y="0"/>
      <vertex x="17" y="6"/>
    </element>
  </room>
  <room name="ROOM13" row="1" column="1">
    <element x="0" y="26" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="4"/>
    </element>
    <element x="0" y="8" type="geometry">
      <vertex x="0" y="14"/>
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="14"/>
    </element>
    <element x="4" y="12" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="14"/>
      <vertex x="0" y="14"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="8" y="0"/>
      <vertex x="8" y="4"/>
    </element>
    <element x="12" y="0" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="12" y="0"/>
      <vertex x="12" y="4"/>
    </element>
    <element x="28" y="0" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="17" y="0"/>
      <vertex x="17" y="4"/>
    </element>
    <element x="28" y="12" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="17" y="0"/>
      <vertex x="17" y="4"/>
    </element>
    <element x="20" y="16" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="12" y="4" type="geometry">
      <vertex x="6" y="7"/>
      <vertex x="0" y="0"/>
      <vertex x="12" y="0"/>
    </element>
    <element x="32" y="4" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="13" y="0"/>
      <vertex x="13" y="4"/>
    </element>
    <element x="22" y="15" type="start"/>
    <element x="8" y="20" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="37" y="0"/>
      <vertex x="37" y="6"/>
      <vertex x="0" y="6"/>
    </element>
  </room>
  <room name="ROOM14" row="1" column="2">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="16" y="0"/>
      <vertex x="16" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="12" y="4" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="26"/>
      <vertex x="0" y="26"/>
    </element>
    <element x="0" y="26" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="12" y="0"/>
      <vertex x="12" y="4"/>
    </element>
    <element x="0" y="8" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="8" y="0"/>
      <vertex x="8" y="14"/>
      <vertex x="0" y="14"/>
    </element>
    <element x="20" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="12"/>
      <vertex x="0" y="12"/>
    </element>
    <element x="37" y="16" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="8" y="0"/>
      <vertex x="8" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="33" y="12" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="4"/>
    </element>
    <element x="20" y="24" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="20" y="20" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="13" y="0"/>
      <vertex x="13" y="4"/>
    </element>
    <element x="20" y="16" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="9" y="0"/>
      <vertex x="9" y="4"/>
    </element>
  </room>
  <room name="ROOM15" row="2" column="0">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="12" y="0"/>
      <vertex x="12" y="12"/>
      <vertex x="0" y="12"/>
    </element>
    <element x="0" y="16" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="16" y="0"/>
      <vertex x="16" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="0" y="24" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="12" y="0"/>
      <vertex x="12" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="16" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="8" y="0"/>
      <vertex x="8" y="30"/>
      <vertex x="0" y="30"/>
    </element>
    <element x="28" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="17" y="0"/>
      <vertex x="17" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="32" y="4" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="9" y="0"/>
      <vertex x="9" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="28" y="12" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="18"/>
      <vertex x="0" y="18"/>
    </element>
    <element x="36" y="8" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="9" y="0"/>
      <vertex x="9" y="14"/>
      <vertex x="0" y="14"/>
    </element>
    <element x="32" y="26" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="13" y="0"/>
      <vertex x="13" y="4"/>
      <vertex x="0" y="4"/>
    </element>
  </room>
  <room name="ROOM16" row="2" column="1">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="12" y="0"/>
      <vertex x="12" y="8"/>
      <vertex x="0" y="8"/>
    </element>
    <element x="0" y="12" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="16" y="0"/>
      <vertex x="16" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="0" y="20" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="8" y="0"/>
      <vertex x="8" y="10"/>
      <vertex x="0" y="10"/>
    </element>
    <element x="4" y="16" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="16" y="8" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="8" y="0"/>
      <vertex x="8" y="4"/>
    </element>
    <element x="16" y="0" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="8" y="0"/>
      <vertex x="8" y="4"/>
    </element>
    <element x="28" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="17" y="0"/>
      <vertex x="17" y="12"/>
      <vertex x="0" y="12"/>
    </element>
    <element x="20" y="16" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="12" y="20" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="12" y="0"/>
      <vertex x="12" y="10"/>
      <vertex x="0" y="10"/>
    </element>
    <element x="28" y="24" type="geometry">
      <vertex x="0" y="6"/>
      <vertex x="0" y="0"/>
      <vertex x="17" y="0"/>
      <vertex x="17" y="6"/>
    </element>
  </room>
  <room name="ROOM17" row="2" column="2">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="12" y="0"/>
      <vertex x="12" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="16" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="8" y="0"/>
      <vertex x="8" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="4" y="16" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="12" y="0"/>
      <vertex x="12" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="0" y="20" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="16" y="0"/>
      <vertex x="16" y="10"/>
      <vertex x="0" y="10"/>
    </element>
    <element x="12" y="12" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="4"/>
    </element>
    <element x="12" y="8" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="12" y="0"/>
      <vertex x="12" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="28" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="17" y="0"/>
      <vertex x="17" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="28" y="4" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="13" y="0"/>
      <vertex x="13" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="28" y="8" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="17" y="0"/>
      <vertex x="17" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="20" y="16" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="8" y="0"/>
      <vertex x="8" y="14"/>
      <vertex x="0" y="14"/>
    </element>
    <element x="43" y="6" type="pickup"/>
    <element x="0" y="4" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="4"/>
    </element>
    <element x="4" y="8" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="0" y="12" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="12" y="0"/>
      <vertex x="12" y="4"/>
    </element>
    <element x="10" y="10" type="pickup"/>
    <element x="28" y="26" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="17" y="0"/>
      <vertex x="17" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="28" y="19" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="28" y="22" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="6" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="37" y="12" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="8" y="0"/>
      <vertex x="8" y="10"/>
      <vertex x="0" y="10"/>
    </element>
  </room>
  <matches>
    <room name="ROOM10">
      <side type="left">
        <room name="ROOM10"/>
        <room name="ROOM11"/>
        <room name="ROOM15"/>
        <room name="ROOM17"/>
      </side>
      <side type="right">
        <room name="ROOM10"/>
        <room name="ROOM13"/>
        <room name="ROOM14"/>
      </side>
      <side type="top">
        <room name="ROOM10"/>
        <room name="ROOM16"/>
      </side>
      <side type="bottom">
        <room name="ROOM10"/>
        <room name="ROOM13"/>
      </side>
    </room>
    <room name="ROOM11">
      <side type="left">
        <room name="ROOM12"/>
        <room name="ROOM14"/>
        <room name="ROOM16"/>
      </side>
      <side type="right">
        <room name="ROOM10"/>
        <room name="ROOM13"/>
        <room name="ROOM14"/>
      </side>
      <side type="top">
        <room name="ROOM11"/>
        <room name="ROOM12"/>
        <room name="ROOM15"/>
      </side>
      <side type="bottom">
        <room name="ROOM11"/>
        <room name="ROOM15"/>
        <room name="ROOM16"/>
        <room name="ROOM17"/>
      </side>
    </room>
    <room name="ROOM12">
      <side type="left">
        <room name="ROOM12"/>
        <room name="ROOM14"/>
        <room name="ROOM16"/>
      </side>
      <side type="right">
        <room name="ROOM11"/>
        <room name="ROOM12"/>
        <room name="ROOM15"/>
      </side>
      <side type="top">
        <room name="ROOM14"/>
        <room name="ROOM17"/>
      </side>
      <side type="bottom">
        <room name="ROOM11"/>
        <room name="ROOM15"/>
        <room name="ROOM16"/>
        <room name="ROOM17"/>
      </side>
    </room>
    <room name="ROOM13">
      <side type="left">
        <room name="ROOM10"/>
        <room name="ROOM11"/>
        <room name="ROOM15"/>
        <room name="ROOM17"/>
      </side>
      <side type="right">
        <room name="ROOM16"/>
        <room name="ROOM17"/>
      </side>
      <side type="top">
        <room name="ROOM10"/>
        <room name="ROOM16"/>
      </side>
      <side type="bottom"/>
    </room>
    <room name="ROOM14">
      <side type="left">
        <room name="ROOM10"/>
        <room name="ROOM11"/>
        <room name="ROOM15"/>
        <room name="ROOM17"/>
      </side>
      <side type="right">
        <room name="ROOM11"/>
        <room name="ROOM12"/>
        <room name="ROOM15"/>
      </side>
      <side type="top">
        <room name="ROOM14"/>
        <room name="ROOM17"/>
      </side>
      <side type="bottom">
        <room name="ROOM12"/>
        <room name="ROOM14"/>
      </side>
    </room>
    <room name="ROOM15">
      <side type="left">
        <room name="ROOM12"/>
        <room name="ROOM14"/>
        <room name="ROOM16"/>
      </side>
      <side type="right">
        <room name="ROOM10"/>
        <room name="ROOM13"/>
        <room name="ROOM14"/>
      </side>
      <side type="top">
        <room name="ROOM11"/>
        <room name="ROOM12"/>
        <room name="ROOM15"/>
      </side>
      <side type="bottom">
        <room name="ROOM11"/>
        <room name="ROOM15"/>
        <room name="ROOM16"/>
        <room name="ROOM17"/>
      </side>
    </room>
    <room name="ROOM16">
      <side type="left">
        <room name="ROOM13"/>
      </side>
      <side type="right">
        <room name="ROOM11"/>
        <room name="ROOM12"/>
        <room name="ROOM15"/>
      </side>
      <side type="top">
        <room name="ROOM11"/>
        <room name="ROOM12"/>
        <room name="ROOM15"/>
      </side>
      <side type="bottom">
        <room name="ROOM10"/>
        <room name="ROOM13"/>
      </side>
    </room>
    <room name="ROOM17">
      <side type="left">
        <room name="ROOM13"/>
      </side>
      <side type="right">
        <room name="ROOM10"/>
        <room name="ROOM13"/>
        <room name="ROOM14"/>
      </side>
      <side type="top">
        <room name="ROOM11"/>
        <room name="ROOM12"/>
        <room name="ROOM15"/>
      </side>
      <side type="bottom">
        <room name="ROOM12"/>
        <room name="ROOM14"/>
      </side>
    </room>
  </matches>
</level>
		;

	}
}//package resources.levels 

****************

//BetweenTopAndBottom (resources.levels.BetweenTopAndBottom)
package resources.levels {

	public class BetweenTopAndBottom {

		public static const xml:XML = <level name="yo" rows="2" columns="2" horizontalRoomDivisions="45" verticalRoomDivisions="30">
			  <room name="ROOM4" row="0" column="0">
				<element x="0" y="2" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="45" y="0"/>
				  <vertex x="45" y="7"/>
				  <vertex x="45" y="8"/>
				  <vertex x="0" y="8"/>
				</element>
				<element x="20" y="10" type="geometry">
				  <vertex x="0" y="20"/>
				  <vertex x="0" y="0"/>
				  <vertex x="5" y="0"/>
				  <vertex x="5" y="20"/>
				</element>
				<element x="0" y="1" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="45" y="0"/>
				  <vertex x="45" y="1"/>
				  <vertex x="0" y="1"/>
				</element>
			  </room>
			  <room name="ROOM6" row="1" column="0">
				<element x="20" y="0" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="5" y="0"/>
				  <vertex x="5" y="26"/>
				  <vertex x="0" y="26"/>
				</element>
				<element x="0" y="25" type="geometry">
				  <vertex x="0" y="3"/>
				  <vertex x="0" y="0"/>
				  <vertex x="5" y="0"/>
				  <vertex x="5" y="3"/>
				</element>
				<element x="10" y="25" type="geometry">
				  <vertex x="0" y="3"/>
				  <vertex x="0" y="0"/>
				  <vertex x="25" y="0"/>
				  <vertex x="25" y="3"/>
				</element>
				<element x="40" y="25" type="geometry">
				  <vertex x="0" y="3"/>
				  <vertex x="0" y="0"/>
				  <vertex x="5" y="0"/>
				  <vertex x="5" y="3"/>
				</element>
				<element x="30" y="24" type="start"/>
				<element x="14" y="23" type="goal"/>
			  </room>
			  <room name="ROOM7" row="1" column="1">
				<element x="10" y="28" type="geometry">
				  <vertex x="0" y="2"/>
				  <vertex x="0" y="0"/>
				  <vertex x="5" y="0"/>
				  <vertex x="5" y="2"/>
				</element>
				<element x="30" y="28" type="geometry">
				  <vertex x="0" y="2"/>
				  <vertex x="0" y="0"/>
				  <vertex x="5" y="0"/>
				  <vertex x="5" y="2"/>
				</element>
				<element x="20" y="0" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="5" y="0"/>
				  <vertex x="5" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
				<element x="0" y="25" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="15" y="0"/>
				  <vertex x="15" y="3"/>
				  <vertex x="0" y="3"/>
				</element>
				<element x="30" y="25" type="geometry">
				  <vertex x="0" y="3"/>
				  <vertex x="0" y="0"/>
				  <vertex x="15" y="0"/>
				  <vertex x="15" y="3"/>
				</element>
				<element x="12" y="23" type="pickup"/>
			  </room>
			  <matches>
				<room name="ROOM4">
				  <side type="left">
					<room name="ROOM4"/>
				  </side>
				  <side type="right">
					<room name="ROOM4"/>
				  </side>
				  <side type="top">
					<room name="ROOM6"/>
				  </side>
				  <side type="bottom">
					<room name="ROOM6"/>
					<room name="ROOM7"/>
				  </side>
				</room>
				<room name="ROOM6">
				  <side type="left">
					<room name="ROOM6"/>
					<room name="ROOM7"/>
				  </side>
				  <side type="right">
					<room name="ROOM6"/>
					<room name="ROOM7"/>
				  </side>
				  <side type="top">
					<room name="ROOM4"/>
				  </side>
				  <side type="bottom">
					<room name="ROOM4"/>
				  </side>
				</room>
				<room name="ROOM7">
				  <side type="left">
					<room name="ROOM6"/>
					<room name="ROOM7"/>
				  </side>
				  <side type="right">
					<room name="ROOM6"/>
					<room name="ROOM7"/>
				  </side>
				  <side type="top">
					<room name="ROOM4"/>
				  </side>
				  <side type="bottom"/>
				</room>
			  </matches>
			</level>
		;

	}
}//package resources.levels 

****************

//BottomBorderMatch (resources.levels.BottomBorderMatch)
package resources.levels {

	public class BottomBorderMatch {

		public static const xml:XML = <level name="yo" rows="2" columns="2" horizontalRoomDivisions="45" verticalRoomDivisions="30">
  <room name="ROOM4" row="0" column="0">
    <element x="15" y="13" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="30" y="0"/>
      <vertex x="30" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="5" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="5" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="25"/>
      <vertex x="0" y="25"/>
    </element>
    <element x="40" y="17" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="13"/>
      <vertex x="0" y="13"/>
    </element>
    <element x="23" y="23" type="pickup"/>
    <element x="30" y="12" type="start"/>
  </room>
  <room name="ROOM5" row="0" column="1">
    <element x="40" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="18"/>
      <vertex x="0" y="18"/>
    </element>
    <element x="15" y="14" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="30" y="0"/>
      <vertex x="30" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="5" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="24"/>
      <vertex x="5" y="25"/>
      <vertex x="0" y="25"/>
    </element>
    <element x="5" y="26" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="20" y="26" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="40" y="18" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="12"/>
      <vertex x="0" y="12"/>
    </element>
  </room>
  <room name="ROOM6" row="1" column="0">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="20" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="13" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="40" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="13"/>
      <vertex x="0" y="13"/>
    </element>
    <element x="0" y="17" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="8"/>
      <vertex x="0" y="8"/>
    </element>
    <element x="26" y="11" type="goal"/>
  </room>
  <matches>
    <room name="ROOM4">
      <side type="left">
        <room name="ROOM5"/>
      </side>
      <side type="right">
        <room name="ROOM6"/>
      </side>
      <side type="top">
        <room name="ROOM6"/>
      </side>
      <side type="bottom">
        <room name="ROOM5"/>
      </side>
    </room>
    <room name="ROOM5">
      <side type="left">
        <room name="ROOM5"/>
      </side>
      <side type="right">
        <room name="ROOM4"/>
        <room name="ROOM5"/>
      </side>
      <side type="top">
        <room name="ROOM4"/>
      </side>
      <side type="bottom">
        <room name="ROOM6"/>
      </side>
    </room>
    <room name="ROOM6">
      <side type="left">
        <room name="ROOM4"/>
      </side>
      <side type="right"/>
      <side type="top">
        <room name="ROOM5"/>
      </side>
      <side type="bottom">
        <room name="ROOM4"/>
      </side>
    </room>
  </matches>
</level>
		;

	}
}//package resources.levels 

****************

//Deathmatch (resources.levels.Deathmatch)
package resources.levels {

	public class Deathmatch {

		public static const xml:XML = <level name="yo" rows="2" columns="3" horizontalRoomDivisions="45" verticalRoomDivisions="30">
  <room name="ROOM6" row="0" column="0">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="30"/>
      <vertex x="0" y="30"/>
    </element>
    <element x="40" y="5" type="geometry">
      <vertex x="0" y="25"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="25"/>
    </element>
    <element x="15" y="26" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="10" y="10" type="geometry">
      <vertex x="0" y="10"/>
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="9"/>
      <vertex x="20" y="10"/>
    </element>
    <element x="15" y="9" type="start"/>
    <element x="20" y="24" type="pickup"/>
    <element x="15" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="30" y="0"/>
      <vertex x="30" y="5"/>
      <vertex x="0" y="5"/>
    </element>
  </room>
  <room name="ROOM7" row="0" column="1">
    <element x="15" y="25" type="geometry">
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="5"/>
    </element>
    <element x="20" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="25"/>
      <vertex x="0" y="25"/>
    </element>
    <element x="0" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="5" y="20" type="geometry">
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="5"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="15" y="0"/>
      <vertex x="15" y="5"/>
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
    </element>
    <element x="10" y="5" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="10"/>
      <vertex x="0" y="10"/>
    </element>
    <element x="0" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="30" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="15"/>
      <vertex x="0" y="15"/>
    </element>
    <element x="40" y="15" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="15"/>
      <vertex x="0" y="15"/>
    </element>
  </room>
  <room name="ROOM8" row="0" column="2">
    <element x="0" y="0" type="geometry">
      <vertex x="10" y="0"/>
      <vertex x="10" y="10"/>
      <vertex x="0" y="10"/>
      <vertex x="0" y="0"/>
    </element>
    <element x="0" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="30" y="25" type="geometry">
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="5"/>
    </element>
    <element x="20" y="15" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="15"/>
      <vertex x="0" y="15"/>
    </element>
    <element x="15" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="30" y="0"/>
      <vertex x="30" y="5"/>
      <vertex x="0" y="5"/>
    </element>
  </room>
  <room name="ROOM9" row="1" column="0">
    <element x="0" y="0" type="geometry">
      <vertex x="10" y="0"/>
      <vertex x="10" y="10"/>
      <vertex x="0" y="10"/>
      <vertex x="0" y="0"/>
    </element>
    <element x="15" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="40" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="30"/>
      <vertex x="0" y="30"/>
    </element>
    <element x="0" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="35" y="0"/>
      <vertex x="35" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="15" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="10"/>
      <vertex x="0" y="10"/>
    </element>
    <element x="0" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="15" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="21" y="23" type="goal"/>
  </room>
  <room name="ROOM10" row="1" column="1">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="20" y="5" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="10"/>
      <vertex x="0" y="10"/>
    </element>
    <element x="15" y="25" type="geometry">
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
      <vertex x="30" y="0"/>
      <vertex x="30" y="5"/>
    </element>
    <element x="5" y="15" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="15"/>
      <vertex x="0" y="15"/>
    </element>
    <element x="0" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
      <vertex x="0" y="5"/>
    </element>
  </room>
  <matches>
    <room name="ROOM6">
      <side type="left">
        <room name="ROOM6"/>
        <room name="ROOM7"/>
        <room name="ROOM9"/>
      </side>
      <side type="right">
        <room name="ROOM6"/>
        <room name="ROOM9"/>
      </side>
      <side type="top">
        <room name="ROOM6"/>
        <room name="ROOM9"/>
        <room name="ROOM10"/>
      </side>
      <side type="bottom">
        <room name="ROOM6"/>
        <room name="ROOM8"/>
      </side>
    </room>
    <room name="ROOM7">
      <side type="left">
        <room name="ROOM8"/>
      </side>
      <side type="right">
        <room name="ROOM6"/>
        <room name="ROOM9"/>
      </side>
      <side type="top">
        <room name="ROOM8"/>
      </side>
      <side type="bottom">
        <room name="ROOM9"/>
      </side>
    </room>
    <room name="ROOM8">
      <side type="left">
        <room name="ROOM10"/>
      </side>
      <side type="right">
        <room name="ROOM7"/>
        <room name="ROOM10"/>
      </side>
      <side type="top">
        <room name="ROOM6"/>
        <room name="ROOM9"/>
        <room name="ROOM10"/>
      </side>
      <side type="bottom">
        <room name="ROOM7"/>
      </side>
    </room>
    <room name="ROOM9">
      <side type="left">
        <room name="ROOM6"/>
        <room name="ROOM7"/>
        <room name="ROOM9"/>
      </side>
      <side type="right">
        <room name="ROOM6"/>
        <room name="ROOM9"/>
      </side>
      <side type="top">
        <room name="ROOM7"/>
      </side>
      <side type="bottom">
        <room name="ROOM6"/>
        <room name="ROOM8"/>
      </side>
    </room>
    <room name="ROOM10">
      <side type="left">
        <room name="ROOM8"/>
      </side>
      <side type="right">
        <room name="ROOM8"/>
      </side>
      <side type="top"/>
      <side type="bottom">
        <room name="ROOM6"/>
        <room name="ROOM8"/>
      </side>
    </room>
  </matches>
</level>
		;

	}
}//package resources.levels 

****************

//DeceptivelyEasy (resources.levels.DeceptivelyEasy)
package resources.levels {

	public class DeceptivelyEasy {

		public static const xml:XML = <level name="yo" rows="3" columns="3" horizontalRoomDivisions="45" verticalRoomDivisions="30">
  <room name="ROOM9" row="0" column="0">
    <element x="35" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="40" y="9" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="7"/>
      <vertex x="0" y="7"/>
    </element>
    <element x="20" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="30"/>
      <vertex x="0" y="30"/>
    </element>
    <element x="25" y="21" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="9"/>
      <vertex x="0" y="9"/>
    </element>
    <element x="0" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="5" y="21" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="4"/>
    </element>
    <element x="0" y="16" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="9" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="5"/>
      <vertex x="0" y="5"/>
    </element>
  </room>
  <room name="ROOM10" row="0" column="1">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="35" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="25" y="25" type="geometry">
      <vertex x="20" y="0"/>
      <vertex x="20" y="5"/>
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
    </element>
    <element x="35" y="16" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="40" y="9" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="4"/>
    </element>
    <element x="35" y="5" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="11"/>
      <vertex x="0" y="11"/>
    </element>
    <element x="25" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="21"/>
      <vertex x="0" y="21"/>
    </element>
    <element x="20" y="16" type="geometry">
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
    </element>
    <element x="0" y="9" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="7"/>
      <vertex x="0" y="7"/>
    </element>
    <element x="0" y="21" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="9"/>
      <vertex x="0" y="9"/>
    </element>
  </room>
  <room name="ROOM11" row="0" column="2">
    <element x="25" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="30" y="9" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="35" y="16" type="geometry">
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="5"/>
    </element>
    <element x="35" y="21" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="9"/>
      <vertex x="0" y="9"/>
    </element>
    <element x="40" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="16" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="10" y="0"/>
      <vertex x="10" y="5"/>
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
    </element>
    <element x="0" y="11" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="20" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="21"/>
      <vertex x="0" y="21"/>
    </element>
    <element x="0" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="4"/>
      <vertex x="25" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="25" y="16" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
      <vertex x="0" y="5"/>
    </element>
  </room>
  <room name="ROOM12" row="1" column="0">
    <element x="25" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="25" y="21" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="0" y="16" type="geometry">
      <vertex x="30" y="0"/>
      <vertex x="30" y="5"/>
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
    </element>
    <element x="35" y="13" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="8"/>
      <vertex x="0" y="8"/>
    </element>
    <element x="40" y="16" type="geometry">
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
    </element>
    <element x="25" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="15" y="13" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="5"/>
      <vertex x="0" y="5"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="0" y="9" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="4"/>
      <vertex x="0" y="4"/>
    </element>
  </room>
  <room name="ROOM13" row="1" column="1">
    <element x="0" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="16" type="geometry">
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="5"/>
    </element>
    <element x="22" y="23" type="goal"/>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="9" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="20" y="5" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="22" y="14" type="pickup"/>
    <element x="30" y="8" type="start"/>
  </room>
  <room name="ROOM14" row="1" column="2">
    <element x="0" y="9" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="0" y="16" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="15" y="21" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="15" y="5" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="4"/>
    </element>
    <element x="25" y="0" type="geometry">
      <vertex x="0" y="30"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="30"/>
    </element>
    <element x="30" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="35" y="11" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="10"/>
      <vertex x="0" y="10"/>
    </element>
    <element x="35" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="40" y="9" type="pickup"/>
  </room>
  <room name="ROOM15" row="2" column="0">
    <element x="0" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="9" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="20" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="25"/>
      <vertex x="0" y="25"/>
    </element>
    <element x="10" y="5" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="16"/>
      <vertex x="0" y="16"/>
    </element>
    <element x="0" y="16" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="30" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="21"/>
      <vertex x="0" y="21"/>
    </element>
    <element x="25" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="35" y="16" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="40" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="40" y="9" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="4"/>
      <vertex x="0" y="4"/>
    </element>
  </room>
  <room name="ROOM16" row="2" column="1">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="9" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="7"/>
      <vertex x="0" y="7"/>
    </element>
    <element x="0" y="21" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="9"/>
      <vertex x="0" y="9"/>
    </element>
    <element x="35" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="9"/>
      <vertex x="0" y="9"/>
    </element>
    <element x="40" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
      <vertex x="0" y="5"/>
    </element>
  </room>
  <matches>
    <room name="ROOM9">
      <side type="left">
        <room name="ROOM10"/>
        <room name="ROOM11"/>
        <room name="ROOM12"/>
        <room name="ROOM13"/>
        <room name="ROOM15"/>
      </side>
      <side type="right">
        <room name="ROOM10"/>
        <room name="ROOM16"/>
      </side>
      <side type="top"/>
      <side type="bottom">
        <room name="ROOM11"/>
      </side>
    </room>
    <room name="ROOM10">
      <side type="left">
        <room name="ROOM9"/>
        <room name="ROOM16"/>
      </side>
      <side type="right">
        <room name="ROOM9"/>
        <room name="ROOM12"/>
        <room name="ROOM13"/>
        <room name="ROOM14"/>
        <room name="ROOM15"/>
      </side>
      <side type="top">
        <room name="ROOM14"/>
      </side>
      <side type="bottom">
        <room name="ROOM12"/>
      </side>
    </room>
    <room name="ROOM11">
      <side type="left">
        <room name="ROOM14"/>
      </side>
      <side type="right">
        <room name="ROOM9"/>
        <room name="ROOM12"/>
        <room name="ROOM13"/>
        <room name="ROOM14"/>
        <room name="ROOM15"/>
      </side>
      <side type="top">
        <room name="ROOM9"/>
      </side>
      <side type="bottom">
        <room name="ROOM16"/>
      </side>
    </room>
    <room name="ROOM12">
      <side type="left">
        <room name="ROOM10"/>
        <room name="ROOM11"/>
        <room name="ROOM12"/>
        <room name="ROOM13"/>
        <room name="ROOM15"/>
      </side>
      <side type="right">
        <room name="ROOM9"/>
        <room name="ROOM12"/>
        <room name="ROOM13"/>
        <room name="ROOM14"/>
        <room name="ROOM15"/>
      </side>
      <side type="top">
        <room name="ROOM10"/>
      </side>
      <side type="bottom">
        <room name="ROOM14"/>
      </side>
    </room>
    <room name="ROOM13">
      <side type="left">
        <room name="ROOM10"/>
        <room name="ROOM11"/>
        <room name="ROOM12"/>
        <room name="ROOM13"/>
        <room name="ROOM15"/>
      </side>
      <side type="right">
        <room name="ROOM9"/>
        <room name="ROOM12"/>
        <room name="ROOM13"/>
        <room name="ROOM14"/>
        <room name="ROOM15"/>
      </side>
      <side type="top">
        <room name="ROOM13"/>
        <room name="ROOM15"/>
        <room name="ROOM16"/>
      </side>
      <side type="bottom">
        <room name="ROOM13"/>
      </side>
    </room>
    <room name="ROOM14">
      <side type="left">
        <room name="ROOM10"/>
        <room name="ROOM11"/>
        <room name="ROOM12"/>
        <room name="ROOM13"/>
        <room name="ROOM15"/>
      </side>
      <side type="right">
        <room name="ROOM11"/>
      </side>
      <side type="top">
        <room name="ROOM12"/>
      </side>
      <side type="bottom">
        <room name="ROOM10"/>
      </side>
    </room>
    <room name="ROOM15">
      <side type="left">
        <room name="ROOM10"/>
        <room name="ROOM11"/>
        <room name="ROOM12"/>
        <room name="ROOM13"/>
        <room name="ROOM15"/>
      </side>
      <side type="right">
        <room name="ROOM9"/>
        <room name="ROOM12"/>
        <room name="ROOM13"/>
        <room name="ROOM14"/>
        <room name="ROOM15"/>
      </side>
      <side type="top"/>
      <side type="bottom">
        <room name="ROOM13"/>
      </side>
    </room>
    <room name="ROOM16">
      <side type="left">
        <room name="ROOM9"/>
        <room name="ROOM16"/>
      </side>
      <side type="right">
        <room name="ROOM10"/>
        <room name="ROOM16"/>
      </side>
      <side type="top">
        <room name="ROOM11"/>
      </side>
      <side type="bottom">
        <room name="ROOM13"/>
      </side>
    </room>
  </matches>
</level>
		;

	}
}//package resources.levels 

****************

//EasyDrop (resources.levels.EasyDrop)
package resources.levels {

	public class EasyDrop {

		public static const xml:XML = <level name="yo" rows="2" columns="2" horizontalRoomDivisions="45" verticalRoomDivisions="30">
  <room name="ROOM4" row="0" column="0">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="12"/>
      <vertex x="0" y="12"/>
    </element>
    <element x="0" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="30" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="33" y="24" type="pickup"/>
    <element x="41" y="23" type="goal"/>
    <element x="5" y="15" type="start"/>
  </room>
  <room name="ROOM5" row="0" column="1">
    <element x="0" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="12"/>
      <vertex x="0" y="12"/>
    </element>
    <element x="30" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="25"/>
      <vertex x="0" y="25"/>
    </element>
  </room>
  <room name="ROOM7" row="1" column="1">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="9"/>
      <vertex x="0" y="9"/>
    </element>
    <element x="0" y="21" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="9"/>
      <vertex x="0" y="9"/>
    </element>
    <element x="0" y="9" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="12"/>
      <vertex x="0" y="12"/>
    </element>
    <element x="30" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="9"/>
      <vertex x="0" y="9"/>
    </element>
    <element x="30" y="21" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="9"/>
      <vertex x="0" y="9"/>
    </element>
    <element x="35" y="9" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="12"/>
      <vertex x="0" y="12"/>
    </element>
    <element x="17" y="14" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="11" y="0"/>
      <vertex x="11" y="2"/>
      <vertex x="0" y="2"/>
    </element>
  </room>
  <matches>
    <room name="ROOM4">
      <side type="left">
        <room name="ROOM4"/>
      </side>
      <side type="right">
        <room name="ROOM4"/>
        <room name="ROOM5"/>
      </side>
      <side type="top">
        <room name="ROOM5"/>
      </side>
      <side type="bottom">
        <room name="ROOM5"/>
        <room name="ROOM7"/>
      </side>
    </room>
    <room name="ROOM5">
      <side type="left">
        <room name="ROOM4"/>
      </side>
      <side type="right">
        <room name="ROOM7"/>
      </side>
      <side type="top">
        <room name="ROOM4"/>
        <room name="ROOM7"/>
      </side>
      <side type="bottom">
        <room name="ROOM4"/>
      </side>
    </room>
    <room name="ROOM7">
      <side type="left">
        <room name="ROOM5"/>
        <room name="ROOM7"/>
      </side>
      <side type="right">
        <room name="ROOM7"/>
      </side>
      <side type="top">
        <room name="ROOM4"/>
        <room name="ROOM7"/>
      </side>
      <side type="bottom">
        <room name="ROOM5"/>
        <room name="ROOM7"/>
      </side>
    </room>
  </matches>
</level>
		;

	}
}//package resources.levels 

****************

//EliasLevel1 (resources.levels.EliasLevel1)
package resources.levels {

	public class EliasLevel1 {

		public static const xml:XML = <level name="yo" rows="2" columns="2" horizontalRoomDivisions="45" verticalRoomDivisions="30">
  <room name="ROOM4" row="0" column="0">
    <element x="0" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="10" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="1"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="1"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="10" y="22" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="8"/>
      <vertex x="0" y="8"/>
    </element>
    <element x="20" y="19" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="11"/>
      <vertex x="0" y="11"/>
    </element>
    <element x="40" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="4"/>
      <vertex x="0" y="8"/>
    </element>
    <element x="30" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="0" y="7"/>
    </element>
    <element x="33" y="2" type="geometry">
      <vertex x="0" y="5"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="5"/>
    </element>
    <element x="30" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
      <vertex x="0" y="3"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="40" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
      <vertex x="0" y="3"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="0" y="12" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="14" y="0"/>
      <vertex x="14" y="2"/>
      <vertex x="14" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="0" y="5" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="12" y="3"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="20" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="7"/>
      <vertex x="0" y="7"/>
    </element>
    <element x="5" y="3" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="14" y="7" type="geometry">
      <vertex x="0" y="5"/>
      <vertex x="6" y="0"/>
      <vertex x="11" y="0"/>
      <vertex x="0" y="8"/>
    </element>
    <element x="40" y="13" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="7"/>
      <vertex x="0" y="7"/>
    </element>
    <element x="30" y="13" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="7"/>
      <vertex x="0" y="7"/>
    </element>
    <element x="35" y="19" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="1"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="32" y="25" type="pickup"/>
    <element x="33" y="23" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="4"/>
    </element>
    <element x="35" y="23" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="40" y="23" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="38" y="27" type="pickup"/>
  </room>
  <room name="ROOM5" row="0" column="1">
    <element x="40" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="30" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="14" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="11" y="0"/>
      <vertex x="11" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="20" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="11"/>
      <vertex x="0" y="11"/>
    </element>
    <element x="40" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="1"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="30" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="14"/>
      <vertex x="0" y="14"/>
    </element>
    <element x="27" y="14" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="8" y="0"/>
      <vertex x="8" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="33" y="5" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="12" y="0"/>
      <vertex x="12" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="33" y="2" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="8" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="5" y="4" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="3"/>
      <vertex x="0" y="3"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="10" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="40" y="12" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="10" y="15" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="15"/>
      <vertex x="0" y="15"/>
    </element>
    <element x="14" y="14" type="pickup"/>
    <element x="5" y="4" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="7" y="7"/>
      <vertex x="3" y="7"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="20" y="24" type="start"/>
    <element x="0" y="13" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="7"/>
      <vertex x="0" y="7"/>
    </element>
    <element x="2" y="11" type="goal"/>
    <element x="0" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="15" y="14" type="geometry">
      <vertex x="0" y="1"/>
      <vertex x="12" y="0"/>
      <vertex x="12" y="2"/>
      <vertex x="0" y="3"/>
    </element>
  </room>
  <room name="ROOM7" row="1" column="1">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="5" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="20"/>
      <vertex x="0" y="20"/>
    </element>
    <element x="40" y="5" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="20"/>
      <vertex x="0" y="20"/>
    </element>
  </room>
  <matches>
    <room name="ROOM4">
      <side type="left">
        <room name="ROOM5"/>
      </side>
      <side type="right">
        <room name="ROOM5"/>
      </side>
      <side type="top">
        <room name="ROOM5"/>
      </side>
      <side type="bottom">
        <room name="ROOM5"/>
      </side>
    </room>
    <room name="ROOM5">
      <side type="left">
        <room name="ROOM4"/>
      </side>
      <side type="right">
        <room name="ROOM4"/>
      </side>
      <side type="top">
        <room name="ROOM4"/>
      </side>
      <side type="bottom">
        <room name="ROOM4"/>
      </side>
    </room>
    <room name="ROOM7">
      <side type="left">
        <room name="ROOM7"/>
      </side>
      <side type="right">
        <room name="ROOM7"/>
      </side>
      <side type="top">
        <room name="ROOM7"/>
      </side>
      <side type="bottom">
        <room name="ROOM7"/>
      </side>
    </room>
  </matches>
</level>
		;

	}
}//package resources.levels 

****************

//Fourscore (resources.levels.Fourscore)
package resources.levels {

	public class Fourscore {

		public static const xml:XML = <level name="yo" rows="4" columns="4" horizontalRoomDivisions="45" verticalRoomDivisions="30">
  <room name="ROOM16" row="0" column="0">
    <element x="30" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="30"/>
      <vertex x="0" y="30"/>
    </element>
    <element x="10" y="16" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="2" y="2"/>
    </element>
    <element x="37" y="13" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="2" y="2"/>
    </element>
    <element x="38" y="11" type="goal"/>
    <element x="12" y="15" type="start"/>
  </room>
  <room name="ROOM17" row="0" column="1">
    <element x="30" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="30" y="25" type="geometry">
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
    </element>
    <element x="5" y="6" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="2" y="2"/>
    </element>
    <element x="10" y="11" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="35" y="0"/>
      <vertex x="35" y="3"/>
      <vertex x="0" y="3"/>
    </element>
  </room>
  <room name="ROOM18" row="0" column="2">
    <element x="24" y="18" type="geometry">
      <vertex x="21" y="0"/>
      <vertex x="21" y="7"/>
      <vertex x="0" y="7"/>
      <vertex x="0" y="0"/>
    </element>
    <element x="0" y="18" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="7"/>
      <vertex x="0" y="7"/>
    </element>
  </room>
  <room name="ROOM19" row="0" column="3">
    <element x="10" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="30"/>
      <vertex x="0" y="30"/>
    </element>
    <element x="37" y="18" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="8" y="0"/>
      <vertex x="8" y="7"/>
      <vertex x="0" y="7"/>
    </element>
  </room>
  <room name="ROOM20" row="1" column="0">
    <element x="30" y="17" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="10" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="30"/>
      <vertex x="0" y="30"/>
    </element>
    <element x="4" y="13" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="2" y="2"/>
    </element>
    <element x="6" y="12" type="pickup"/>
  </room>
  <room name="ROOM21" row="1" column="1">
    <element x="0" y="18" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="7"/>
      <vertex x="0" y="7"/>
    </element>
    <element x="7" y="15" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="2" y="2"/>
    </element>
    <element x="13" y="13" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="2" y="2"/>
    </element>
    <element x="19" y="13" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="21" y="0"/>
      <vertex x="21" y="2"/>
      <vertex x="0" y="2"/>
    </element>
  </room>
  <room name="ROOM22" row="1" column="2">
    <element x="28" y="13" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="2" y="2"/>
    </element>
    <element x="34" y="15" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="2" y="2"/>
    </element>
    <element x="40" y="18" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="7"/>
      <vertex x="0" y="7"/>
    </element>
    <element x="5" y="13" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="21" y="0"/>
      <vertex x="21" y="2"/>
      <vertex x="0" y="2"/>
    </element>
  </room>
  <room name="ROOM23" row="1" column="3">
    <element x="0" y="18" type="geometry">
      <vertex x="45" y="0"/>
      <vertex x="45" y="7"/>
      <vertex x="0" y="7"/>
      <vertex x="0" y="0"/>
    </element>
    <element x="10" y="0" type="geometry">
      <vertex x="0" y="18"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="18"/>
    </element>
  </room>
  <room name="ROOM24" row="2" column="0">
    <element x="4" y="17" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="6" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="15" y="17" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="6" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="26" y="17" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="36" y="17" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="4"/>
      <vertex x="0" y="4"/>
    </element>
  </room>
  <room name="ROOM25" row="2" column="1">
    <element x="10" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="11" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="15" y="18" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="30" y="0"/>
      <vertex x="30" y="7"/>
      <vertex x="0" y="7"/>
    </element>
    <element x="12" y="14" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="11"/>
      <vertex x="0" y="11"/>
    </element>
  </room>
  <room name="ROOM26" row="2" column="2">
    <element x="5" y="17" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="20" y="17" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="35" y="17" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="7" y="0"/>
      <vertex x="7" y="4"/>
      <vertex x="0" y="4"/>
    </element>
  </room>
  <room name="ROOM27" row="2" column="3">
    <element x="30" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="30"/>
      <vertex x="0" y="30"/>
    </element>
    <element x="0" y="18" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="8" y="0"/>
      <vertex x="8" y="7"/>
      <vertex x="0" y="7"/>
    </element>
  </room>
  <room name="ROOM28" row="3" column="0">
    <element x="0" y="18" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="7"/>
      <vertex x="0" y="7"/>
    </element>
  </room>
  <room name="ROOM29" row="3" column="1">
    <element x="0" y="18" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="7"/>
      <vertex x="0" y="7"/>
    </element>
    <element x="10" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="18"/>
      <vertex x="0" y="18"/>
    </element>
  </room>
  <room name="ROOM30" row="3" column="2">
    <element x="4" y="14" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="37" y="0"/>
      <vertex x="37" y="4"/>
    </element>
    <element x="10" y="10" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="4"/>
    </element>
    <element x="15" y="7" type="geometry">
      <vertex x="0" y="3"/>
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="3"/>
    </element>
    <element x="20" y="4" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="2" y="3"/>
    </element>
    <element x="22" y="3" type="pickup"/>
  </room>
  <matches>
    <room name="ROOM16">
      <side type="left">
        <room name="ROOM16"/>
        <room name="ROOM20"/>
        <room name="ROOM21"/>
        <room name="ROOM24"/>
        <room name="ROOM26"/>
        <room name="ROOM27"/>
        <room name="ROOM28"/>
        <room name="ROOM30"/>
      </side>
      <side type="right">
        <room name="ROOM16"/>
        <room name="ROOM17"/>
        <room name="ROOM19"/>
        <room name="ROOM20"/>
        <room name="ROOM22"/>
        <room name="ROOM24"/>
        <room name="ROOM26"/>
        <room name="ROOM30"/>
      </side>
      <side type="top">
        <room name="ROOM16"/>
        <room name="ROOM17"/>
        <room name="ROOM27"/>
      </side>
      <side type="bottom">
        <room name="ROOM16"/>
        <room name="ROOM17"/>
        <room name="ROOM27"/>
      </side>
    </room>
    <room name="ROOM17">
      <side type="left">
        <room name="ROOM16"/>
        <room name="ROOM20"/>
        <room name="ROOM21"/>
        <room name="ROOM24"/>
        <room name="ROOM26"/>
        <room name="ROOM27"/>
        <room name="ROOM28"/>
        <room name="ROOM30"/>
      </side>
      <side type="right">
        <room name="ROOM25"/>
      </side>
      <side type="top">
        <room name="ROOM16"/>
        <room name="ROOM17"/>
        <room name="ROOM27"/>
      </side>
      <side type="bottom">
        <room name="ROOM16"/>
        <room name="ROOM17"/>
        <room name="ROOM27"/>
      </side>
    </room>
    <room name="ROOM18">
      <side type="left">
        <room name="ROOM18"/>
        <room name="ROOM19"/>
        <room name="ROOM22"/>
        <room name="ROOM23"/>
        <room name="ROOM25"/>
        <room name="ROOM29"/>
      </side>
      <side type="right">
        <room name="ROOM18"/>
        <room name="ROOM21"/>
        <room name="ROOM23"/>
        <room name="ROOM27"/>
        <room name="ROOM28"/>
        <room name="ROOM29"/>
      </side>
      <side type="top">
        <room name="ROOM18"/>
        <room name="ROOM21"/>
        <room name="ROOM22"/>
        <room name="ROOM23"/>
        <room name="ROOM24"/>
        <room name="ROOM25"/>
        <room name="ROOM26"/>
        <room name="ROOM28"/>
        <room name="ROOM29"/>
        <room name="ROOM30"/>
      </side>
      <side type="bottom">
        <room name="ROOM18"/>
        <room name="ROOM21"/>
        <room name="ROOM22"/>
        <room name="ROOM24"/>
        <room name="ROOM26"/>
        <room name="ROOM28"/>
        <room name="ROOM30"/>
      </side>
    </room>
    <room name="ROOM19">
      <side type="left">
        <room name="ROOM16"/>
        <room name="ROOM20"/>
        <room name="ROOM21"/>
        <room name="ROOM24"/>
        <room name="ROOM26"/>
        <room name="ROOM27"/>
        <room name="ROOM28"/>
        <room name="ROOM30"/>
      </side>
      <side type="right">
        <room name="ROOM18"/>
        <room name="ROOM21"/>
        <room name="ROOM23"/>
        <room name="ROOM27"/>
        <room name="ROOM28"/>
        <room name="ROOM29"/>
      </side>
      <side type="top">
        <room name="ROOM19"/>
        <room name="ROOM20"/>
      </side>
      <side type="bottom">
        <room name="ROOM19"/>
        <room name="ROOM20"/>
        <room name="ROOM23"/>
        <room name="ROOM25"/>
        <room name="ROOM29"/>
      </side>
    </room>
    <room name="ROOM20">
      <side type="left">
        <room name="ROOM16"/>
        <room name="ROOM20"/>
        <room name="ROOM21"/>
        <room name="ROOM24"/>
        <room name="ROOM26"/>
        <room name="ROOM27"/>
        <room name="ROOM28"/>
        <room name="ROOM30"/>
      </side>
      <side type="right">
        <room name="ROOM16"/>
        <room name="ROOM17"/>
        <room name="ROOM19"/>
        <room name="ROOM20"/>
        <room name="ROOM22"/>
        <room name="ROOM24"/>
        <room name="ROOM26"/>
        <room name="ROOM30"/>
      </side>
      <side type="top">
        <room name="ROOM19"/>
        <room name="ROOM20"/>
      </side>
      <side type="bottom">
        <room name="ROOM19"/>
        <room name="ROOM20"/>
        <room name="ROOM23"/>
        <room name="ROOM25"/>
        <room name="ROOM29"/>
      </side>
    </room>
    <room name="ROOM21">
      <side type="left">
        <room name="ROOM18"/>
        <room name="ROOM19"/>
        <room name="ROOM22"/>
        <room name="ROOM23"/>
        <room name="ROOM25"/>
        <room name="ROOM29"/>
      </side>
      <side type="right">
        <room name="ROOM16"/>
        <room name="ROOM17"/>
        <room name="ROOM19"/>
        <room name="ROOM20"/>
        <room name="ROOM22"/>
        <room name="ROOM24"/>
        <room name="ROOM26"/>
        <room name="ROOM30"/>
      </side>
      <side type="top">
        <room name="ROOM18"/>
        <room name="ROOM21"/>
        <room name="ROOM22"/>
        <room name="ROOM23"/>
        <room name="ROOM24"/>
        <room name="ROOM25"/>
        <room name="ROOM26"/>
        <room name="ROOM28"/>
        <room name="ROOM29"/>
        <room name="ROOM30"/>
      </side>
      <side type="bottom">
        <room name="ROOM18"/>
        <room name="ROOM21"/>
        <room name="ROOM22"/>
        <room name="ROOM24"/>
        <room name="ROOM26"/>
        <room name="ROOM28"/>
        <room name="ROOM30"/>
      </side>
    </room>
    <room name="ROOM22">
      <side type="left">
        <room name="ROOM16"/>
        <room name="ROOM20"/>
        <room name="ROOM21"/>
        <room name="ROOM24"/>
        <room name="ROOM26"/>
        <room name="ROOM27"/>
        <room name="ROOM28"/>
        <room name="ROOM30"/>
      </side>
      <side type="right">
        <room name="ROOM18"/>
        <room name="ROOM21"/>
        <room name="ROOM23"/>
        <room name="ROOM27"/>
        <room name="ROOM28"/>
        <room name="ROOM29"/>
      </side>
      <side type="top">
        <room name="ROOM18"/>
        <room name="ROOM21"/>
        <room name="ROOM22"/>
        <room name="ROOM23"/>
        <room name="ROOM24"/>
        <room name="ROOM25"/>
        <room name="ROOM26"/>
        <room name="ROOM28"/>
        <room name="ROOM29"/>
        <room name="ROOM30"/>
      </side>
      <side type="bottom">
        <room name="ROOM18"/>
        <room name="ROOM21"/>
        <room name="ROOM22"/>
        <room name="ROOM24"/>
        <room name="ROOM26"/>
        <room name="ROOM28"/>
        <room name="ROOM30"/>
      </side>
    </room>
    <room name="ROOM23">
      <side type="left">
        <room name="ROOM18"/>
        <room name="ROOM19"/>
        <room name="ROOM22"/>
        <room name="ROOM23"/>
        <room name="ROOM25"/>
        <room name="ROOM29"/>
      </side>
      <side type="right">
        <room name="ROOM18"/>
        <room name="ROOM21"/>
        <room name="ROOM23"/>
        <room name="ROOM27"/>
        <room name="ROOM28"/>
        <room name="ROOM29"/>
      </side>
      <side type="top">
        <room name="ROOM19"/>
        <room name="ROOM20"/>
      </side>
      <side type="bottom">
        <room name="ROOM18"/>
        <room name="ROOM21"/>
        <room name="ROOM22"/>
        <room name="ROOM24"/>
        <room name="ROOM26"/>
        <room name="ROOM28"/>
        <room name="ROOM30"/>
      </side>
    </room>
    <room name="ROOM24">
      <side type="left">
        <room name="ROOM16"/>
        <room name="ROOM20"/>
        <room name="ROOM21"/>
        <room name="ROOM24"/>
        <room name="ROOM26"/>
        <room name="ROOM27"/>
        <room name="ROOM28"/>
        <room name="ROOM30"/>
      </side>
      <side type="right">
        <room name="ROOM16"/>
        <room name="ROOM17"/>
        <room name="ROOM19"/>
        <room name="ROOM20"/>
        <room name="ROOM22"/>
        <room name="ROOM24"/>
        <room name="ROOM26"/>
        <room name="ROOM30"/>
      </side>
      <side type="top">
        <room name="ROOM18"/>
        <room name="ROOM21"/>
        <room name="ROOM22"/>
        <room name="ROOM23"/>
        <room name="ROOM24"/>
        <room name="ROOM25"/>
        <room name="ROOM26"/>
        <room name="ROOM28"/>
        <room name="ROOM29"/>
        <room name="ROOM30"/>
      </side>
      <side type="bottom">
        <room name="ROOM18"/>
        <room name="ROOM21"/>
        <room name="ROOM22"/>
        <room name="ROOM24"/>
        <room name="ROOM26"/>
        <room name="ROOM28"/>
        <room name="ROOM30"/>
      </side>
    </room>
    <room name="ROOM25">
      <side type="left">
        <room name="ROOM17"/>
      </side>
      <side type="right">
        <room name="ROOM18"/>
        <room name="ROOM21"/>
        <room name="ROOM23"/>
        <room name="ROOM27"/>
        <room name="ROOM28"/>
        <room name="ROOM29"/>
      </side>
      <side type="top">
        <room name="ROOM19"/>
        <room name="ROOM20"/>
      </side>
      <side type="bottom">
        <room name="ROOM18"/>
        <room name="ROOM21"/>
        <room name="ROOM22"/>
        <room name="ROOM24"/>
        <room name="ROOM26"/>
        <room name="ROOM28"/>
        <room name="ROOM30"/>
      </side>
    </room>
    <room name="ROOM26">
      <side type="left">
        <room name="ROOM16"/>
        <room name="ROOM20"/>
        <room name="ROOM21"/>
        <room name="ROOM24"/>
        <room name="ROOM26"/>
        <room name="ROOM27"/>
        <room name="ROOM28"/>
        <room name="ROOM30"/>
      </side>
      <side type="right">
        <room name="ROOM16"/>
        <room name="ROOM17"/>
        <room name="ROOM19"/>
        <room name="ROOM20"/>
        <room name="ROOM22"/>
        <room name="ROOM24"/>
        <room name="ROOM26"/>
        <room name="ROOM30"/>
      </side>
      <side type="top">
        <room name="ROOM18"/>
        <room name="ROOM21"/>
        <room name="ROOM22"/>
        <room name="ROOM23"/>
        <room name="ROOM24"/>
        <room name="ROOM25"/>
        <room name="ROOM26"/>
        <room name="ROOM28"/>
        <room name="ROOM29"/>
        <room name="ROOM30"/>
      </side>
      <side type="bottom">
        <room name="ROOM18"/>
        <room name="ROOM21"/>
        <room name="ROOM22"/>
        <room name="ROOM24"/>
        <room name="ROOM26"/>
        <room name="ROOM28"/>
        <room name="ROOM30"/>
      </side>
    </room>
    <room name="ROOM27">
      <side type="left">
        <room name="ROOM18"/>
        <room name="ROOM19"/>
        <room name="ROOM22"/>
        <room name="ROOM23"/>
        <room name="ROOM25"/>
        <room name="ROOM29"/>
      </side>
      <side type="right">
        <room name="ROOM16"/>
        <room name="ROOM17"/>
        <room name="ROOM19"/>
        <room name="ROOM20"/>
        <room name="ROOM22"/>
        <room name="ROOM24"/>
        <room name="ROOM26"/>
        <room name="ROOM30"/>
      </side>
      <side type="top">
        <room name="ROOM16"/>
        <room name="ROOM17"/>
        <room name="ROOM27"/>
      </side>
      <side type="bottom">
        <room name="ROOM16"/>
        <room name="ROOM17"/>
        <room name="ROOM27"/>
      </side>
    </room>
    <room name="ROOM28">
      <side type="left">
        <room name="ROOM18"/>
        <room name="ROOM19"/>
        <room name="ROOM22"/>
        <room name="ROOM23"/>
        <room name="ROOM25"/>
        <room name="ROOM29"/>
      </side>
      <side type="right">
        <room name="ROOM16"/>
        <room name="ROOM17"/>
        <room name="ROOM19"/>
        <room name="ROOM20"/>
        <room name="ROOM22"/>
        <room name="ROOM24"/>
        <room name="ROOM26"/>
        <room name="ROOM30"/>
      </side>
      <side type="top">
        <room name="ROOM18"/>
        <room name="ROOM21"/>
        <room name="ROOM22"/>
        <room name="ROOM23"/>
        <room name="ROOM24"/>
        <room name="ROOM25"/>
        <room name="ROOM26"/>
        <room name="ROOM28"/>
        <room name="ROOM29"/>
        <room name="ROOM30"/>
      </side>
      <side type="bottom">
        <room name="ROOM18"/>
        <room name="ROOM21"/>
        <room name="ROOM22"/>
        <room name="ROOM24"/>
        <room name="ROOM26"/>
        <room name="ROOM28"/>
        <room name="ROOM30"/>
      </side>
    </room>
    <room name="ROOM29">
      <side type="left">
        <room name="ROOM18"/>
        <room name="ROOM19"/>
        <room name="ROOM22"/>
        <room name="ROOM23"/>
        <room name="ROOM25"/>
        <room name="ROOM29"/>
      </side>
      <side type="right">
        <room name="ROOM18"/>
        <room name="ROOM21"/>
        <room name="ROOM23"/>
        <room name="ROOM27"/>
        <room name="ROOM28"/>
        <room name="ROOM29"/>
      </side>
      <side type="top">
        <room name="ROOM19"/>
        <room name="ROOM20"/>
      </side>
      <side type="bottom">
        <room name="ROOM18"/>
        <room name="ROOM21"/>
        <room name="ROOM22"/>
        <room name="ROOM24"/>
        <room name="ROOM26"/>
        <room name="ROOM28"/>
        <room name="ROOM30"/>
      </side>
    </room>
    <room name="ROOM30">
      <side type="left">
        <room name="ROOM16"/>
        <room name="ROOM20"/>
        <room name="ROOM21"/>
        <room name="ROOM24"/>
        <room name="ROOM26"/>
        <room name="ROOM27"/>
        <room name="ROOM28"/>
        <room name="ROOM30"/>
      </side>
      <side type="right">
        <room name="ROOM16"/>
        <room name="ROOM17"/>
        <room name="ROOM19"/>
        <room name="ROOM20"/>
        <room name="ROOM22"/>
        <room name="ROOM24"/>
        <room name="ROOM26"/>
        <room name="ROOM30"/>
      </side>
      <side type="top">
        <room name="ROOM18"/>
        <room name="ROOM21"/>
        <room name="ROOM22"/>
        <room name="ROOM23"/>
        <room name="ROOM24"/>
        <room name="ROOM25"/>
        <room name="ROOM26"/>
        <room name="ROOM28"/>
        <room name="ROOM29"/>
        <room name="ROOM30"/>
      </side>
      <side type="bottom">
        <room name="ROOM18"/>
        <room name="ROOM21"/>
        <room name="ROOM22"/>
        <room name="ROOM24"/>
        <room name="ROOM26"/>
        <room name="ROOM28"/>
        <room name="ROOM30"/>
      </side>
    </room>
  </matches>
</level>
		;

	}
}//package resources.levels 

****************

//GuysLevel9 (resources.levels.GuysLevel9)
package resources.levels {

	public class GuysLevel9 {

		public static const xml:XML = <level name="yo" rows="3" columns="3" horizontalRoomDivisions="45" verticalRoomDivisions="30">
  <room name="ROOM9" row="0" column="0">
    <element x="30" y="8" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="35" y="21" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="9"/>
      <vertex x="0" y="9"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="15" y="3" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="27"/>
      <vertex x="0" y="27"/>
    </element>
    <element x="0" y="8" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="10" y="21" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="9"/>
      <vertex x="0" y="9"/>
    </element>
    <element x="0" y="17" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="12"/>
      <vertex x="5" y="13"/>
      <vertex x="0" y="13"/>
    </element>
    <element x="10" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="40" y="0" type="geometry">
      <vertex x="0" y="2"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
    </element>
    <element x="20" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="40" y="2" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="10" y="3" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="30" y="0"/>
      <vertex x="30" y="1"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="10" y="2" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="1"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="20" y="2" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="1"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="25" y="8" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="22"/>
      <vertex x="0" y="22"/>
    </element>
  </room>
  <room name="ROOM10" row="0" column="1">
    <element x="10" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="8"/>
      <vertex x="0" y="8"/>
    </element>
    <element x="35" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="35" y="12" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="35" y="5" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="7"/>
      <vertex x="0" y="7"/>
    </element>
    <element x="25" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="5" y="17" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="15" y="8" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="13" y="17" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="8"/>
      <vertex x="0" y="8"/>
    </element>
    <element x="13" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="7" y="0"/>
      <vertex x="7" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="26" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="0" y="12" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="0" y="22" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="7"/>
      <vertex x="0" y="7"/>
    </element>
    <element x="5" y="12" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="30" y="22" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="8"/>
      <vertex x="0" y="8"/>
    </element>
    <element x="40" y="22" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="8"/>
      <vertex x="0" y="8"/>
    </element>
    <element x="40" y="15" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="7"/>
      <vertex x="0" y="7"/>
    </element>
    <element x="40" y="10" type="goal"/>
    <element x="4" y="10" type="pickup"/>
    <element x="33" y="20" type="pickup"/>
    <element x="25" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="25"/>
      <vertex x="0" y="25"/>
    </element>
  </room>
  <room name="ROOM11" row="0" column="2">
    <element x="0" y="5" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="18" y="0"/>
      <vertex x="18" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="23" y="5" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="22" y="0"/>
      <vertex x="22" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="15" y="3" type="geometry">
      <vertex x="0" y="2"/>
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="2"/>
    </element>
    <element x="10" y="17" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="0" y="17" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="30" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="25" y="28" type="geometry">
      <vertex x="0" y="2"/>
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="2"/>
    </element>
    <element x="0" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="35" y="0"/>
      <vertex x="35" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="40" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="12"/>
      <vertex x="0" y="12"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="12" y="0"/>
      <vertex x="12" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="40" y="26" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="0" y="28" type="geometry">
      <vertex x="15" y="0"/>
      <vertex x="15" y="2"/>
      <vertex x="0" y="2"/>
      <vertex x="0" y="0"/>
    </element>
    <element x="23" y="3" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="2"/>
      <vertex x="0" y="2"/>
    </element>
  </room>
  <room name="ROOM12" row="1" column="0">
    <element x="40" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="30"/>
      <vertex x="0" y="30"/>
    </element>
    <element x="20" y="17" type="geometry">
      <vertex x="0" y="2"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
    </element>
    <element x="10" y="13" type="geometry">
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
      <vertex x="0" y="0"/>
    </element>
    <element x="10" y="6" type="geometry">
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
      <vertex x="0" y="0"/>
    </element>
    <element x="0" y="8" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="5" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="11"/>
      <vertex x="0" y="11"/>
    </element>
    <element x="0" y="21" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="9"/>
      <vertex x="0" y="9"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="25" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="30"/>
      <vertex x="0" y="30"/>
    </element>
    <element x="20" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="20" y="3" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
    </element>
  </room>
  <room name="ROOM13" row="1" column="1">
    <element x="40" y="21" type="geometry">
      <vertex x="0" y="9"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="9"/>
    </element>
    <element x="30" y="8" type="geometry">
      <vertex x="0" y="3"/>
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="3"/>
    </element>
    <element x="0" y="17" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="10" y="0" type="geometry">
      <vertex x="0" y="2"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="25" y="19" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="25" y="21" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="9"/>
      <vertex x="0" y="9"/>
    </element>
    <element x="18" y="16" type="start"/>
    <element x="0" y="7" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="7"/>
      <vertex x="0" y="7"/>
    </element>
    <element x="10" y="2" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="12"/>
      <vertex x="0" y="12"/>
    </element>
    <element x="0" y="26" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="40" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="25" y="0" type="geometry">
      <vertex x="10" y="0"/>
      <vertex x="10" y="4"/>
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
    </element>
  </room>
  <room name="ROOM14" row="1" column="2">
    <element x="30" y="5" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="25" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="10"/>
      <vertex x="0" y="10"/>
    </element>
    <element x="0" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="10" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="40" y="25" type="geometry">
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
    </element>
    <element x="20" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="43" y="17" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="19" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="5" y="22" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="0" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="3" y="0"/>
      <vertex x="3" y="5"/>
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
    </element>
    <element x="13" y="0" type="geometry">
      <vertex x="7" y="0"/>
      <vertex x="7" y="5"/>
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
    </element>
    <element x="30" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="40" y="0" type="geometry">
      <vertex x="0" y="2"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
    </element>
    <element x="20" y="27" type="geometry">
      <vertex x="0" y="3"/>
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="3"/>
    </element>
  </room>
  <room name="ROOM15" row="2" column="0">
    <element x="10" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="40" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="15" y="17" type="geometry">
      <vertex x="30" y="0"/>
      <vertex x="30" y="5"/>
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="0" y="5" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="30" y="7" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="7"/>
      <vertex x="0" y="7"/>
    </element>
    <element x="30" y="26" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="4"/>
    </element>
    <element x="0" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="12"/>
      <vertex x="0" y="12"/>
    </element>
    <element x="0" y="26" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="12" y="0"/>
      <vertex x="12" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="20" y="0" type="geometry">
      <vertex x="15" y="0"/>
      <vertex x="15" y="2"/>
      <vertex x="0" y="2"/>
      <vertex x="0" y="0"/>
    </element>
    <element x="22" y="27" type="pickup"/>
  </room>
  <room name="ROOM17" row="2" column="2">
    <element x="40" y="28" type="geometry">
      <vertex x="0" y="2"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
    </element>
    <element x="0" y="22" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="8"/>
      <vertex x="0" y="8"/>
    </element>
    <element x="25" y="24" type="geometry">
      <vertex x="1" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="4"/>
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
    </element>
    <element x="25" y="28" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="1"/>
      <vertex x="10" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="35" y="9" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="25" y="16" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="3" y="0"/>
      <vertex x="3" y="5"/>
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
    </element>
    <element x="6" y="1" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="7" y="0"/>
      <vertex x="7" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="13" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="7" y="0"/>
      <vertex x="7" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="12" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="25" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="5"/>
      <vertex x="0" y="5"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="40" y="0" type="geometry">
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
    </element>
  </room>
  <matches>
    <room name="ROOM9">
      <side type="left"/>
      <side type="right">
        <room name="ROOM12"/>
      </side>
      <side type="top">
        <room name="ROOM14"/>
      </side>
      <side type="bottom">
        <room name="ROOM10"/>
      </side>
    </room>
    <room name="ROOM10">
      <side type="left">
        <room name="ROOM10"/>
      </side>
      <side type="right">
        <room name="ROOM10"/>
        <room name="ROOM17"/>
      </side>
      <side type="top">
        <room name="ROOM9"/>
      </side>
      <side type="bottom">
        <room name="ROOM14"/>
        <room name="ROOM17"/>
      </side>
    </room>
    <room name="ROOM11">
      <side type="left">
        <room name="ROOM14"/>
      </side>
      <side type="right">
        <room name="ROOM15"/>
      </side>
      <side type="top">
        <room name="ROOM15"/>
      </side>
      <side type="bottom">
        <room name="ROOM13"/>
      </side>
    </room>
    <room name="ROOM12">
      <side type="left">
        <room name="ROOM9"/>
        <room name="ROOM13"/>
      </side>
      <side type="right"/>
      <side type="top">
        <room name="ROOM13"/>
        <room name="ROOM17"/>
      </side>
      <side type="bottom">
        <room name="ROOM13"/>
      </side>
    </room>
    <room name="ROOM13">
      <side type="left">
        <room name="ROOM15"/>
      </side>
      <side type="right">
        <room name="ROOM12"/>
      </side>
      <side type="top">
        <room name="ROOM11"/>
        <room name="ROOM12"/>
      </side>
      <side type="bottom">
        <room name="ROOM12"/>
      </side>
    </room>
    <room name="ROOM14">
      <side type="left"/>
      <side type="right">
        <room name="ROOM11"/>
      </side>
      <side type="top">
        <room name="ROOM10"/>
      </side>
      <side type="bottom">
        <room name="ROOM9"/>
        <room name="ROOM15"/>
      </side>
    </room>
    <room name="ROOM15">
      <side type="left">
        <room name="ROOM11"/>
      </side>
      <side type="right">
        <room name="ROOM13"/>
      </side>
      <side type="top">
        <room name="ROOM14"/>
      </side>
      <side type="bottom">
        <room name="ROOM11"/>
      </side>
    </room>
    <room name="ROOM17">
      <side type="left">
        <room name="ROOM10"/>
      </side>
      <side type="right"/>
      <side type="top">
        <room name="ROOM10"/>
      </side>
      <side type="bottom">
        <room name="ROOM12"/>
      </side>
    </room>
  </matches>
</level>
		;

	}
}//package resources.levels 

****************

//GuysMatchTeacher1 (resources.levels.GuysMatchTeacher1)
package resources.levels {

	public class GuysMatchTeacher1 {

		public static const xml:XML = <level name="yo" rows="3" columns="2" horizontalRoomDivisions="45" verticalRoomDivisions="30">
  <room name="ROOM0" row="0" column="0">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="10"/>
      <vertex x="0" y="10"/>
    </element>
    <element x="0" y="20" type="geometry">
      <vertex x="0" y="10"/>
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="10"/>
    </element>
    <element x="0" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="10"/>
      <vertex x="0" y="10"/>
    </element>
    <element x="25" y="19" type="start"/>
    <element x="35" y="18" type="pickup"/>
  </room>
  <room name="ROOM1" row="0" column="1">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="40" y="5" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="20"/>
      <vertex x="0" y="20"/>
    </element>
    <element x="20" y="23" type="goal"/>
  </room>
  <room name="ROOM2" row="1" column="0">
    <element x="0" y="25" type="geometry">
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="5"/>
    </element>
    <element x="30" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="20" y="15" type="geometry">
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
    </element>
    <element x="15" y="20" type="geometry">
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="5"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="15" y="15"/>
      <vertex x="0" y="15"/>
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
    </element>
    <element x="15" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="30" y="0"/>
      <vertex x="30" y="5"/>
      <vertex x="0" y="5"/>
    </element>
  </room>
  <room name="ROOM4" row="1" column="1">
    <element x="0" y="20" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="10"/>
      <vertex x="0" y="10"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="10"/>
      <vertex x="0" y="10"/>
    </element>
    <element x="20" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="25" y="0" type="geometry">
      <vertex x="0" y="15"/>
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="15"/>
    </element>
  </room>
  <room name="ROOM3" row="2" column="1">
    <element x="0" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="5"/>
      <vertex x="0" y="5"/>
    </element>
  </room>
  <matches>
    <room name="ROOM0">
      <side type="left">
        <room name="ROOM1"/>
      </side>
      <side type="right">
        <room name="ROOM4"/>
      </side>
      <side type="top">
        <room name="ROOM0"/>
        <room name="ROOM1"/>
        <room name="ROOM2"/>
        <room name="ROOM4"/>
        <room name="ROOM3"/>
      </side>
      <side type="bottom">
        <room name="ROOM0"/>
        <room name="ROOM1"/>
        <room name="ROOM2"/>
        <room name="ROOM4"/>
        <room name="ROOM3"/>
      </side>
    </room>
    <room name="ROOM1">
      <side type="left">
        <room name="ROOM3"/>
      </side>
      <side type="right">
        <room name="ROOM0"/>
      </side>
      <side type="top">
        <room name="ROOM0"/>
        <room name="ROOM1"/>
        <room name="ROOM2"/>
        <room name="ROOM4"/>
        <room name="ROOM3"/>
      </side>
      <side type="bottom">
        <room name="ROOM0"/>
        <room name="ROOM1"/>
        <room name="ROOM2"/>
        <room name="ROOM4"/>
        <room name="ROOM3"/>
      </side>
    </room>
    <room name="ROOM2">
      <side type="left">
        <room name="ROOM4"/>
      </side>
      <side type="right">
        <room name="ROOM3"/>
      </side>
      <side type="top">
        <room name="ROOM0"/>
        <room name="ROOM1"/>
        <room name="ROOM2"/>
        <room name="ROOM4"/>
        <room name="ROOM3"/>
      </side>
      <side type="bottom">
        <room name="ROOM0"/>
        <room name="ROOM1"/>
        <room name="ROOM2"/>
        <room name="ROOM4"/>
        <room name="ROOM3"/>
      </side>
    </room>
    <room name="ROOM4">
      <side type="left">
        <room name="ROOM0"/>
      </side>
      <side type="right">
        <room name="ROOM2"/>
      </side>
      <side type="top">
        <room name="ROOM0"/>
        <room name="ROOM1"/>
        <room name="ROOM2"/>
        <room name="ROOM4"/>
        <room name="ROOM3"/>
      </side>
      <side type="bottom">
        <room name="ROOM0"/>
        <room name="ROOM1"/>
        <room name="ROOM2"/>
        <room name="ROOM4"/>
        <room name="ROOM3"/>
      </side>
    </room>
    <room name="ROOM3">
      <side type="left">
        <room name="ROOM2"/>
      </side>
      <side type="right">
        <room name="ROOM1"/>
      </side>
      <side type="top">
        <room name="ROOM0"/>
        <room name="ROOM1"/>
        <room name="ROOM2"/>
        <room name="ROOM4"/>
        <room name="ROOM3"/>
      </side>
      <side type="bottom">
        <room name="ROOM0"/>
        <room name="ROOM1"/>
        <room name="ROOM2"/>
        <room name="ROOM4"/>
        <room name="ROOM3"/>
      </side>
    </room>
  </matches>
</level>
		;

	}
}//package resources.levels 

****************

//GuysMatchTeacher2 (resources.levels.GuysMatchTeacher2)
package resources.levels {

	public class GuysMatchTeacher2 {

		public static const xml:XML = <level name="yo" rows="2" columns="3" horizontalRoomDivisions="45" verticalRoomDivisions="30">
			  <room name="ROOM6" row="0" column="0">
				<element x="0" y="0" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="45" y="0"/>
				  <vertex x="45" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
				<element x="0" y="10" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="45" y="0"/>
				  <vertex x="45" y="10"/>
				  <vertex x="0" y="10"/>
				</element>
				<element x="0" y="25" type="geometry">
				  <vertex x="0" y="5"/>
				  <vertex x="0" y="0"/>
				  <vertex x="45" y="0"/>
				  <vertex x="45" y="5"/>
				</element>
				<element x="22" y="8" type="goal"/>
				<element x="22" y="24" type="start"/>
				<element x="25" y="5" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="20" y="0"/>
				  <vertex x="20" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
				<element x="0" y="20" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="20" y="0"/>
				  <vertex x="20" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
				<element x="35" y="23" type="pickup"/>
			  </room>
			  <room name="ROOM7" row="0" column="1">
				<element x="0" y="0" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="45" y="0"/>
				  <vertex x="45" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
				<element x="35" y="10" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="10" y="0"/>
				  <vertex x="10" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
				<element x="0" y="25" type="geometry">
				  <vertex x="45" y="0"/>
				  <vertex x="45" y="5"/>
				  <vertex x="0" y="5"/>
				  <vertex x="0" y="0"/>
				</element>
				<element x="25" y="15" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="5" y="0"/>
				  <vertex x="5" y="10"/>
				  <vertex x="0" y="10"/>
				</element>
				<element x="20" y="20" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="5" y="0"/>
				  <vertex x="5" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
				<element x="30" y="20" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="5" y="0"/>
				  <vertex x="5" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
				<element x="0" y="5" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="10" y="0"/>
				  <vertex x="10" y="15"/>
				  <vertex x="0" y="15"/>
				</element>
				<element x="10" y="5" type="geometry">
				  <vertex x="0" y="10"/>
				  <vertex x="0" y="0"/>
				  <vertex x="5" y="0"/>
				  <vertex x="5" y="10"/>
				</element>
				<element x="15" y="5" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="5" y="0"/>
				  <vertex x="5" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
			  </room>
			  <room name="ROOM8" row="0" column="2">
				<element x="0" y="0" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="45" y="0"/>
				  <vertex x="45" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
				<element x="35" y="10" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="10" y="0"/>
				  <vertex x="10" y="20"/>
				  <vertex x="0" y="20"/>
				</element>
				<element x="25" y="14" type="geometry">
				  <vertex x="5" y="0"/>
				  <vertex x="5" y="16"/>
				  <vertex x="0" y="16"/>
				  <vertex x="0" y="0"/>
				</element>
				<element x="15" y="19" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="5" y="0"/>
				  <vertex x="5" y="11"/>
				  <vertex x="0" y="11"/>
				</element>
				<element x="0" y="25" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="10" y="0"/>
				  <vertex x="10" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
				<element x="0" y="5" type="geometry">
				  <vertex x="5" y="0"/>
				  <vertex x="5" y="15"/>
				  <vertex x="0" y="15"/>
				  <vertex x="0" y="0"/>
				</element>
				<element x="5" y="5" type="geometry">
				  <vertex x="0" y="10"/>
				  <vertex x="0" y="0"/>
				  <vertex x="5" y="0"/>
				  <vertex x="5" y="10"/>
				</element>
				<element x="10" y="5" type="geometry">
				  <vertex x="0" y="5"/>
				  <vertex x="0" y="0"/>
				  <vertex x="5" y="0"/>
				  <vertex x="5" y="5"/>
				</element>
			  </room>
			  <room name="ROOM9" row="1" column="0">
				<element x="0" y="0" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="45" y="0"/>
				  <vertex x="45" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
				<element x="0" y="25" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="45" y="0"/>
				  <vertex x="45" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
				<element x="0" y="15" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="15" y="0"/>
				  <vertex x="15" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
				<element x="35" y="10" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="10" y="0"/>
				  <vertex x="10" y="15"/>
				  <vertex x="0" y="15"/>
				</element>
				<element x="30" y="15" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="5" y="0"/>
				  <vertex x="5" y="10"/>
				  <vertex x="0" y="10"/>
				</element>
				<element x="25" y="20" type="geometry">
				  <vertex x="5" y="0"/>
				  <vertex x="5" y="5"/>
				  <vertex x="0" y="5"/>
				  <vertex x="0" y="0"/>
				</element>
			  </room>
			  <room name="ROOM10" row="1" column="1">
				<element x="0" y="25" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="45" y="0"/>
				  <vertex x="45" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
				<element x="30" y="15" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="15" y="0"/>
				  <vertex x="15" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
				<element x="25" y="20" type="geometry">
				  <vertex x="0" y="5"/>
				  <vertex x="0" y="0"/>
				  <vertex x="20" y="0"/>
				  <vertex x="20" y="5"/>
				</element>
				<element x="0" y="0" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="45" y="0"/>
				  <vertex x="45" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
				<element x="0" y="5" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="10" y="0"/>
				  <vertex x="10" y="15"/>
				  <vertex x="0" y="15"/>
				</element>
				<element x="10" y="5" type="geometry">
				  <vertex x="10" y="0"/>
				  <vertex x="10" y="5"/>
				  <vertex x="0" y="5"/>
				  <vertex x="0" y="0"/>
				</element>
				<element x="10" y="10" type="geometry">
				  <vertex x="5" y="0"/>
				  <vertex x="5" y="5"/>
				  <vertex x="0" y="5"/>
				  <vertex x="0" y="0"/>
				</element>
			  </room>
			  <matches>
				<room name="ROOM6">
				  <side type="left">
					<room name="ROOM8"/>
					<room name="ROOM9"/>
				  </side>
				  <side type="right">
					<room name="ROOM7"/>
					<room name="ROOM8"/>
					<room name="ROOM10"/>
				  </side>
				  <side type="top">
					<room name="ROOM6"/>
					<room name="ROOM7"/>
					<room name="ROOM9"/>
					<room name="ROOM10"/>
				  </side>
				  <side type="bottom">
					<room name="ROOM6"/>
					<room name="ROOM7"/>
					<room name="ROOM8"/>
					<room name="ROOM9"/>
					<room name="ROOM10"/>
				  </side>
				</room>
				<room name="ROOM7">
				  <side type="left">
					<room name="ROOM6"/>
				  </side>
				  <side type="right"/>
				  <side type="top">
					<room name="ROOM6"/>
					<room name="ROOM7"/>
					<room name="ROOM9"/>
					<room name="ROOM10"/>
				  </side>
				  <side type="bottom">
					<room name="ROOM6"/>
					<room name="ROOM7"/>
					<room name="ROOM8"/>
					<room name="ROOM9"/>
					<room name="ROOM10"/>
				  </side>
				</room>
				<room name="ROOM8">
				  <side type="left">
					<room name="ROOM6"/>
				  </side>
				  <side type="right">
					<room name="ROOM6"/>
				  </side>
				  <side type="top">
					<room name="ROOM6"/>
					<room name="ROOM7"/>
					<room name="ROOM9"/>
					<room name="ROOM10"/>
				  </side>
				  <side type="bottom"/>
				</room>
				<room name="ROOM9">
				  <side type="left"/>
				  <side type="right">
					<room name="ROOM6"/>
				  </side>
				  <side type="top">
					<room name="ROOM6"/>
					<room name="ROOM7"/>
					<room name="ROOM9"/>
					<room name="ROOM10"/>
				  </side>
				  <side type="bottom">
					<room name="ROOM6"/>
					<room name="ROOM7"/>
					<room name="ROOM8"/>
					<room name="ROOM9"/>
					<room name="ROOM10"/>
				  </side>
				</room>
				<room name="ROOM10">
				  <side type="left">
					<room name="ROOM6"/>
				  </side>
				  <side type="right"/>
				  <side type="top">
					<room name="ROOM6"/>
					<room name="ROOM7"/>
					<room name="ROOM9"/>
					<room name="ROOM10"/>
				  </side>
				  <side type="bottom">
					<room name="ROOM6"/>
					<room name="ROOM7"/>
					<room name="ROOM8"/>
					<room name="ROOM9"/>
					<room name="ROOM10"/>
				  </side>
				</room>
			  </matches>
			</level>
		;

	}
}//package resources.levels 

****************

//GuysMatchTeacher3 (resources.levels.GuysMatchTeacher3)
package resources.levels {

	public class GuysMatchTeacher3 {

		public static const xml:XML = <level name="yo" rows="2" columns="2" horizontalRoomDivisions="45" verticalRoomDivisions="30">
			  <room name="ROOM0" row="0" column="0">
				<element x="0" y="0" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="45" y="0"/>
				  <vertex x="45" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
				<element x="0" y="5" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="10" y="0"/>
				  <vertex x="10" y="25"/>
				  <vertex x="0" y="25"/>
				</element>
				<element x="10" y="25" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="35" y="0"/>
				  <vertex x="35" y="4"/>
				  <vertex x="35" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
				<element x="10" y="10" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="35" y="0"/>
				  <vertex x="35" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
				<element x="27" y="23" type="goal"/>
				<element x="27" y="9" type="start"/>
			  </room>
			  <room name="ROOM1" row="0" column="1">
				<element x="0" y="0" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="45" y="0"/>
				  <vertex x="45" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
				<element x="0" y="25" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="45" y="0"/>
				  <vertex x="45" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
				<element x="0" y="10" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="15" y="0"/>
				  <vertex x="15" y="10"/>
				  <vertex x="0" y="10"/>
				</element>
				<element x="20" y="5" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="5" y="0"/>
				  <vertex x="5" y="20"/>
				  <vertex x="0" y="20"/>
				</element>
				<element x="30" y="10" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="15" y="0"/>
				  <vertex x="15" y="10"/>
				  <vertex x="0" y="10"/>
				</element>
				<element x="10" y="23" type="pickup"/>
			  </room>
			  <room name="ROOM2" row="1" column="0">
				<element x="0" y="0" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="45" y="0"/>
				  <vertex x="45" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
				<element x="0" y="25" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="45" y="0"/>
				  <vertex x="45" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
				<element x="0" y="10" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="45" y="0"/>
				  <vertex x="45" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
				<element x="10" y="15" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="25" y="0"/>
				  <vertex x="25" y="5"/>
				</element>
				<element x="35" y="15" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="10" y="0"/>
				  <vertex x="10" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
			  </room>
			  <matches>
				<room name="ROOM0">
				  <side type="left"/>
				  <side type="right">
					<room name="ROOM2"/>
				  </side>
				  <side type="top">
					<room name="ROOM0"/>
					<room name="ROOM1"/>
					<room name="ROOM2"/>
				  </side>
				  <side type="bottom">
					<room name="ROOM0"/>
					<room name="ROOM1"/>
					<room name="ROOM2"/>
				  </side>
				</room>
				<room name="ROOM1">
				  <side type="left">
					<room name="ROOM1"/>
					<room name="ROOM2"/>
				  </side>
				  <side type="right">
					<room name="ROOM1"/>
				  </side>
				  <side type="top">
					<room name="ROOM0"/>
					<room name="ROOM1"/>
					<room name="ROOM2"/>
				  </side>
				  <side type="bottom">
					<room name="ROOM0"/>
					<room name="ROOM1"/>
					<room name="ROOM2"/>
				  </side>
				</room>
				<room name="ROOM2">
				  <side type="left">
					<room name="ROOM0"/>
				  </side>
				  <side type="right">
					<room name="ROOM1"/>
				  </side>
				  <side type="top">
					<room name="ROOM0"/>
					<room name="ROOM1"/>
					<room name="ROOM2"/>
				  </side>
				  <side type="bottom">
					<room name="ROOM0"/>
					<room name="ROOM1"/>
					<room name="ROOM2"/>
				  </side>
				</room>
			  </matches>
			</level>
		;

	}
}//package resources.levels 

****************

//Helvetesgapet (resources.levels.Helvetesgapet)
package resources.levels {

	public class Helvetesgapet {

		public static const xml:XML = <level name="yo" rows="3" columns="3" horizontalRoomDivisions="45" verticalRoomDivisions="30">
  <room name="ROOM9" row="0" column="0">
    <element x="41" y="4" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="41" y="22" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="0" y="22" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="4"/>
    </element>
    <element x="27" y="6" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="4"/>
    </element>
    <element x="31" y="2" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="4"/>
    </element>
    <element x="9" y="7" type="start"/>
    <element x="27" y="14" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="18" y="0"/>
      <vertex x="18" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="33" y="18" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="8"/>
      <vertex x="0" y="8"/>
    </element>
    <element x="6" y="26" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="31" y="0"/>
      <vertex x="31" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="43" y="3" type="pickup"/>
  </room>
  <room name="ROOM10" row="0" column="1">
    <element x="4" y="26" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="4" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="12"/>
      <vertex x="0" y="12"/>
    </element>
    <element x="8" y="12" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="12" y="16" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="37" y="4" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="8" y="0"/>
      <vertex x="8" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="41" y="14" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="37" y="18" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="8" y="0"/>
      <vertex x="8" y="8"/>
      <vertex x="0" y="8"/>
    </element>
    <element x="20" y="22" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="17" y="0"/>
      <vertex x="17" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="0" y="14" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="8"/>
      <vertex x="0" y="8"/>
    </element>
  </room>
  <room name="ROOM11" row="0" column="2">
    <element x="37" y="4" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="8" y="0"/>
      <vertex x="8" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="4" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="30" y="14" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="12"/>
      <vertex x="0" y="12"/>
    </element>
    <element x="0" y="14" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="8"/>
      <vertex x="0" y="8"/>
    </element>
    <element x="37" y="26" type="geometry">
      <vertex x="4" y="0"/>
      <vertex x="4" y="4"/>
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
    </element>
  </room>
  <room name="ROOM12" row="1" column="0">
    <element x="0" y="4" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="12" y="0"/>
      <vertex x="12" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="8" y="8" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="8" y="0"/>
      <vertex x="8" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="12" y="12" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="0" y="14" type="geometry">
      <vertex x="0" y="12"/>
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="12"/>
    </element>
    <element x="8" y="22" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="8"/>
      <vertex x="0" y="8"/>
    </element>
    <element x="41" y="22" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="4"/>
    </element>
    <element x="33" y="26" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="8" y="0"/>
      <vertex x="8" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="4" y="22" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="8"/>
      <vertex x="0" y="8"/>
    </element>
    <element x="2" y="12" type="pickup"/>
    <element x="12" y="26" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="17" y="0"/>
      <vertex x="17" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="14" y="6" type="goal"/>
  </room>
  <room name="ROOM13" row="1" column="1">
    <element x="41" y="4" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="41" y="14" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="37" y="18" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="8" y="0"/>
      <vertex x="8" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="0" y="14" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="12" y="0"/>
      <vertex x="12" y="4"/>
    </element>
    <element x="8" y="18" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="8" y="0"/>
      <vertex x="8" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="12" y="22" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="33" y="0"/>
      <vertex x="33" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="4" y="26" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="0" y="24" type="geometry">
      <vertex x="0" y="2"/>
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="2"/>
    </element>
    <element x="0" y="22" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="2" y="26" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="6" y="18" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="10" y="22" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="4" y="28" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="0" y="4" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="30" y="0"/>
      <vertex x="30" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="8" y="27" type="pickup"/>
    <element x="37" y="0" type="geometry">
      <vertex x="4" y="0"/>
      <vertex x="4" y="8"/>
      <vertex x="0" y="8"/>
      <vertex x="0" y="0"/>
    </element>
  </room>
  <room name="ROOM14" row="1" column="2">
    <element x="4" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="41" y="4" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="33" y="26" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="8" y="0"/>
      <vertex x="8" y="4"/>
    </element>
    <element x="33" y="14" type="geometry">
      <vertex x="0" y="12"/>
      <vertex x="0" y="0"/>
      <vertex x="12" y="0"/>
      <vertex x="12" y="12"/>
    </element>
    <element x="0" y="14" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="8"/>
      <vertex x="0" y="8"/>
    </element>
    <element x="4" y="22" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="8"/>
      <vertex x="0" y="8"/>
    </element>
    <element x="8" y="11" type="geometry">
      <vertex x="0" y="7"/>
      <vertex x="0" y="0"/>
      <vertex x="21" y="0"/>
      <vertex x="21" y="7"/>
    </element>
    <element x="4" y="4" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="9" y="0"/>
      <vertex x="9" y="2"/>
      <vertex x="0" y="2"/>
    </element>
  </room>
  <room name="ROOM15" row="2" column="0">
    <element x="0" y="14" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="13" y="8"/>
      <vertex x="0" y="8"/>
    </element>
    <element x="30" y="14" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="8"/>
      <vertex x="2" y="8"/>
    </element>
    <element x="37" y="4" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="6" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="31" y="0"/>
      <vertex x="31" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="39" y="3" type="pickup"/>
    <element x="8" y="7" type="geometry">
      <vertex x="0" y="7"/>
      <vertex x="2" y="0"/>
      <vertex x="9" y="0"/>
      <vertex x="7" y="7"/>
    </element>
  </room>
  <room name="ROOM16" row="2" column="1">
    <element x="0" y="4" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="12" y="0"/>
      <vertex x="12" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="33" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="8" y="0"/>
      <vertex x="8" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="4" y="26" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="32" y="22" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="8" y="0"/>
      <vertex x="8" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="0" y="14" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="8" y="0"/>
      <vertex x="8" y="12"/>
      <vertex x="0" y="12"/>
    </element>
    <element x="36" y="18" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="9" y="0"/>
      <vertex x="9" y="4"/>
    </element>
    <element x="34" y="20" type="pickup"/>
    <element x="3" y="8" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="32" y="14" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="13" y="0"/>
      <vertex x="13" y="4"/>
    </element>
    <element x="4" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="32" y="8" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="8" y="0"/>
      <vertex x="8" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="28" y="8" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="1"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="22" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="1"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="16" y="12" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="1"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="28" y="22" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="1"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="22" y="20" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="1"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="16" y="18" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="1"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="8" y="15" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
    </element>
  </room>
  <matches>
    <room name="ROOM9">
      <side type="left">
        <room name="ROOM12"/>
      </side>
      <side type="right">
        <room name="ROOM13"/>
      </side>
      <side type="top">
        <room name="ROOM15"/>
      </side>
      <side type="bottom">
        <room name="ROOM15"/>
      </side>
    </room>
    <room name="ROOM10">
      <side type="left">
        <room name="ROOM15"/>
        <room name="ROOM16"/>
      </side>
      <side type="right">
        <room name="ROOM12"/>
        <room name="ROOM16"/>
      </side>
      <side type="top">
        <room name="ROOM10"/>
        <room name="ROOM13"/>
        <room name="ROOM16"/>
      </side>
      <side type="bottom">
        <room name="ROOM10"/>
        <room name="ROOM11"/>
        <room name="ROOM14"/>
      </side>
    </room>
    <room name="ROOM11">
      <side type="left">
        <room name="ROOM15"/>
        <room name="ROOM16"/>
      </side>
      <side type="right">
        <room name="ROOM12"/>
        <room name="ROOM16"/>
      </side>
      <side type="top">
        <room name="ROOM10"/>
        <room name="ROOM13"/>
        <room name="ROOM16"/>
      </side>
      <side type="bottom">
        <room name="ROOM13"/>
      </side>
    </room>
    <room name="ROOM12">
      <side type="left">
        <room name="ROOM10"/>
        <room name="ROOM11"/>
        <room name="ROOM13"/>
        <room name="ROOM14"/>
      </side>
      <side type="right">
        <room name="ROOM9"/>
      </side>
      <side type="top">
        <room name="ROOM15"/>
      </side>
      <side type="bottom">
        <room name="ROOM16"/>
      </side>
    </room>
    <room name="ROOM13">
      <side type="left">
        <room name="ROOM9"/>
      </side>
      <side type="right">
        <room name="ROOM12"/>
        <room name="ROOM16"/>
      </side>
      <side type="top">
        <room name="ROOM11"/>
      </side>
      <side type="bottom">
        <room name="ROOM10"/>
        <room name="ROOM11"/>
        <room name="ROOM14"/>
      </side>
    </room>
    <room name="ROOM14">
      <side type="left">
        <room name="ROOM15"/>
        <room name="ROOM16"/>
      </side>
      <side type="right">
        <room name="ROOM12"/>
        <room name="ROOM16"/>
      </side>
      <side type="top">
        <room name="ROOM10"/>
        <room name="ROOM13"/>
        <room name="ROOM16"/>
      </side>
      <side type="bottom">
        <room name="ROOM16"/>
      </side>
    </room>
    <room name="ROOM15">
      <side type="left">
        <room name="ROOM15"/>
        <room name="ROOM16"/>
      </side>
      <side type="right">
        <room name="ROOM10"/>
        <room name="ROOM11"/>
        <room name="ROOM14"/>
        <room name="ROOM15"/>
      </side>
      <side type="top">
        <room name="ROOM9"/>
      </side>
      <side type="bottom">
        <room name="ROOM9"/>
        <room name="ROOM12"/>
      </side>
    </room>
    <room name="ROOM16">
      <side type="left">
        <room name="ROOM10"/>
        <room name="ROOM11"/>
        <room name="ROOM13"/>
        <room name="ROOM14"/>
      </side>
      <side type="right">
        <room name="ROOM10"/>
        <room name="ROOM11"/>
        <room name="ROOM14"/>
        <room name="ROOM15"/>
      </side>
      <side type="top">
        <room name="ROOM12"/>
        <room name="ROOM14"/>
      </side>
      <side type="bottom">
        <room name="ROOM10"/>
        <room name="ROOM11"/>
        <room name="ROOM14"/>
      </side>
    </room>
  </matches>
</level>
		;

	}
}//package resources.levels 

****************

//JumpPause2 (resources.levels.JumpPause2)
package resources.levels {

	public class JumpPause2 {

		public static const xml:XML = <level name="yo" rows="2" columns="2" horizontalRoomDivisions="45" verticalRoomDivisions="30">
  <room name="ROOM0" row="0" column="0">
    <element x="0" y="22" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="40" y="0"/>
      <vertex x="40" y="8"/>
      <vertex x="1" y="8"/>
      <vertex x="0" y="8"/>
    </element>
    <element x="0" y="8" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="40" y="0"/>
      <vertex x="40" y="3"/>
      <vertex x="0" y="3"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="0" y="11" type="geometry">
      <vertex x="0" y="11"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="11"/>
    </element>
    <element x="12" y="21" type="start"/>
    <element x="21" y="6" type="goal"/>
    <element x="11" y="7" type="pickup"/>
  </room>
  <room name="ROOM2" row="0" column="1">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="8"/>
      <vertex x="0" y="8"/>
    </element>
    <element x="0" y="21" type="geometry">
      <vertex x="0" y="9"/>
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="9"/>
    </element>
    <element x="0" y="8" type="geometry">
      <vertex x="0" y="13"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="13"/>
    </element>
    <element x="40" y="8" type="geometry">
      <vertex x="0" y="13"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="13"/>
    </element>
  </room>
  <room name="ROOM1" row="1" column="0"/>
  <matches>
    <room name="ROOM0">
      <side type="left"/>
      <side type="right">
        <room name="ROOM1"/>
      </side>
      <side type="top">
        <room name="ROOM1"/>
      </side>
      <side type="bottom"/>
    </room>
    <room name="ROOM2">
      <side type="left">
        <room name="ROOM2"/>
      </side>
      <side type="right">
        <room name="ROOM2"/>
      </side>
      <side type="top">
        <room name="ROOM2"/>
      </side>
      <side type="bottom">
        <room name="ROOM2"/>
      </side>
    </room>
    <room name="ROOM1">
      <side type="left">
        <room name="ROOM0"/>
        <room name="ROOM1"/>
      </side>
      <side type="right">
        <room name="ROOM1"/>
      </side>
      <side type="top">
        <room name="ROOM1"/>
      </side>
      <side type="bottom">
        <room name="ROOM0"/>
        <room name="ROOM1"/>
      </side>
    </room>
  </matches>
</level>
		;

	}
}//package resources.levels 

****************

//LevelOrder (resources.levels.LevelOrder)
package resources.levels {

	public class LevelOrder {

		public var levels:Array;

		public function LevelOrder(){
			levels = new Array();
			super();
			levels.push(TestLevel6);
			levels.push(TestLevel5);
			levels.push(EasyDrop);
			levels.push(MatchMismatch1);
			levels.push(MoreMatch);
			levels.push(GuysMatchTeacher3);
			levels.push(TestLevel7);
			levels.push(GuysMatchTeacher1);
			levels.push(BottomBorderMatch);
			levels.push(Deathmatch);
			levels.push(GuysMatchTeacher2);
			levels.push(ThereAndBackAgain);
			levels.push(TestLevel8);
			levels.push(TestLevel3);
			levels.push(TestLevel1);
			levels.push(TestLevel4);
			levels.push(TwoKeyLevel);
			levels.push(TestLevelD);
			levels.push(EliasLevel1);
			levels.push(WideningDrop);
			levels.push(BetweenTopAndBottom);
			levels.push(DeceptivelyEasy);
			levels.push(RoomJumping);
			levels.push(Partitioned);
			levels.push(JumpPause2);
			levels.push(TheAscent);
			levels.push(Pitfalls);
			levels.push(Helvetesgapet);
			levels.push(AirFetch);
			levels.push(Fourscore);
			levels.push(Antfarm);
			levels.push(GuysLevel9);
		}
	}
}//package resources.levels 

****************

//MatchMismatch1 (resources.levels.MatchMismatch1)
package resources.levels {

	public class MatchMismatch1 {

		public static const xml:XML = <level name="yo" rows="2" columns="2" horizontalRoomDivisions="45" verticalRoomDivisions="30">
			  <room name="ROOM4" row="0" column="0">
				<element x="0" y="25" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="45" y="0"/>
				  <vertex x="45" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
				<element x="20" y="0" type="geometry">
				  <vertex x="0" y="25"/>
				  <vertex x="0" y="0"/>
				  <vertex x="5" y="0"/>
				  <vertex x="5" y="25"/>
				</element>
				<element x="35" y="20" type="geometry">
				  <vertex x="0" y="5"/>
				  <vertex x="0" y="0"/>
				  <vertex x="10" y="0"/>
				  <vertex x="10" y="5"/>
				</element>
				<element x="40" y="15" type="geometry">
				  <vertex x="0" y="5"/>
				  <vertex x="0" y="0"/>
				  <vertex x="5" y="0"/>
				  <vertex x="5" y="5"/>
				</element>
				<element x="30" y="24" type="start"/>
				<element x="14" y="23" type="goal"/>
				<element x="0" y="0" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="10" y="0"/>
				  <vertex x="10" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
				<element x="0" y="5" type="geometry">
				  <vertex x="5" y="0"/>
				  <vertex x="5" y="5"/>
				  <vertex x="0" y="5"/>
				  <vertex x="0" y="0"/>
				</element>
			  </room>
			  <room name="ROOM6" row="0" column="1">
				<element x="0" y="25" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="45" y="0"/>
				  <vertex x="45" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
				<element x="35" y="0" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="10" y="0"/>
				  <vertex x="10" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
				<element x="40" y="5" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="5" y="0"/>
				  <vertex x="5" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
				<element x="22" y="23" type="pickup"/>
			  </room>
			  <room name="ROOM7" row="1" column="0">
				<element x="0" y="15" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="5" y="0"/>
				  <vertex x="5" y="10"/>
				  <vertex x="0" y="10"/>
				</element>
				<element x="0" y="25" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="45" y="0"/>
				  <vertex x="45" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
				<element x="5" y="20" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="5" y="0"/>
				  <vertex x="5" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
			  </room>
			  <matches>
				<room name="ROOM4">
				  <side type="left">
					<room name="ROOM6"/>
				  </side>
				  <side type="right">
					<room name="ROOM7"/>
				  </side>
				  <side type="top"/>
				  <side type="bottom"/>
				</room>
				<room name="ROOM6">
				  <side type="left">
					<room name="ROOM7"/>
				  </side>
				  <side type="right">
					<room name="ROOM4"/>
				  </side>
				  <side type="top"/>
				  <side type="bottom"/>
				</room>
				<room name="ROOM7">
				  <side type="left">
					<room name="ROOM4"/>
				  </side>
				  <side type="right">
					<room name="ROOM6"/>
				  </side>
				  <side type="top"/>
				  <side type="bottom"/>
				</room>
			  </matches>
			</level>
		;

	}
}//package resources.levels 

****************

//MoreMatch (resources.levels.MoreMatch)
package resources.levels {

	public class MoreMatch {

		public static const xml:XML = <level name="yo" rows="2" columns="2" horizontalRoomDivisions="45" verticalRoomDivisions="30">
			  <room name="ROOM4" row="0" column="0">
				<element x="0" y="25" type="geometry">
				  <vertex x="0" y="5"/>
				  <vertex x="0" y="0"/>
				  <vertex x="10" y="0"/>
				  <vertex x="10" y="5"/>
				</element>
				<element x="10" y="21" type="geometry">
				  <vertex x="0" y="9"/>
				  <vertex x="0" y="0"/>
				  <vertex x="10" y="0"/>
				  <vertex x="10" y="9"/>
				</element>
				<element x="20" y="17" type="geometry">
				  <vertex x="0" y="13"/>
				  <vertex x="0" y="0"/>
				  <vertex x="10" y="0"/>
				  <vertex x="10" y="13"/>
				</element>
				<element x="30" y="12" type="geometry">
				  <vertex x="0" y="18"/>
				  <vertex x="0" y="0"/>
				  <vertex x="15" y="0"/>
				  <vertex x="15" y="18"/>
				</element>
				<element x="40" y="11" type="pickup"/>
				<element x="32" y="11" type="start"/>
				<element x="0" y="0" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="20" y="0"/>
				  <vertex x="20" y="6"/>
				  <vertex x="0" y="6"/>
				</element>
			  </room>
			  <room name="ROOM5" row="0" column="1">
				<element x="35" y="25" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="10" y="0"/>
				  <vertex x="10" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
				<element x="25" y="21" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="10" y="0"/>
				  <vertex x="10" y="9"/>
				  <vertex x="0" y="9"/>
				</element>
				<element x="15" y="17" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="10" y="0"/>
				  <vertex x="10" y="13"/>
				  <vertex x="0" y="13"/>
				</element>
				<element x="0" y="12" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="15" y="0"/>
				  <vertex x="15" y="18"/>
				  <vertex x="0" y="18"/>
				</element>
				<element x="7" y="10" type="goal"/>
				<element x="0" y="0" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="45" y="0"/>
				  <vertex x="45" y="6"/>
				  <vertex x="0" y="6"/>
				</element>
			  </room>
			  <room name="ROOM6" row="1" column="0">
				<element x="0" y="25" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="45" y="0"/>
				  <vertex x="45" y="5"/>
				  <vertex x="0" y="5"/>
				</element>
				<element x="0" y="0" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="45" y="0"/>
				  <vertex x="45" y="6"/>
				  <vertex x="0" y="6"/>
				</element>
				<element x="15" y="21" type="geometry">
				  <vertex x="0" y="4"/>
				  <vertex x="0" y="0"/>
				  <vertex x="15" y="0"/>
				  <vertex x="15" y="4"/>
				</element>
				<element x="20" y="17" type="geometry">
				  <vertex x="0" y="4"/>
				  <vertex x="0" y="0"/>
				  <vertex x="5" y="0"/>
				  <vertex x="5" y="4"/>
				</element>
			  </room>
			  <matches>
				<room name="ROOM4">
				  <side type="left">
					<room name="ROOM5"/>
					<room name="ROOM6"/>
				  </side>
				  <side type="right"/>
				  <side type="top"/>
				  <side type="bottom">
					<room name="ROOM5"/>
					<room name="ROOM6"/>
				  </side>
				</room>
				<room name="ROOM5">
				  <side type="left"/>
				  <side type="right">
					<room name="ROOM4"/>
					<room name="ROOM6"/>
				  </side>
				  <side type="top">
					<room name="ROOM4"/>
					<room name="ROOM5"/>
					<room name="ROOM6"/>
				  </side>
				  <side type="bottom">
					<room name="ROOM5"/>
					<room name="ROOM6"/>
				  </side>
				</room>
				<room name="ROOM6">
				  <side type="left">
					<room name="ROOM5"/>
					<room name="ROOM6"/>
				  </side>
				  <side type="right">
					<room name="ROOM4"/>
					<room name="ROOM6"/>
				  </side>
				  <side type="top">
					<room name="ROOM4"/>
					<room name="ROOM5"/>
					<room name="ROOM6"/>
				  </side>
				  <side type="bottom">
					<room name="ROOM5"/>
					<room name="ROOM6"/>
				  </side>
				</room>
			  </matches>
			</level>
		;

	}
}//package resources.levels 

****************

//Partitioned (resources.levels.Partitioned)
package resources.levels {

	public class Partitioned {

		public static const xml:XML = <level name="yo" rows="3" columns="3" horizontalRoomDivisions="45" verticalRoomDivisions="30">
  <room name="ROOM9" row="0" column="0">
    <element x="0" y="26" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="0" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="12"/>
      <vertex x="0" y="12"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="25" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="25" y="26" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="30" y="21" type="geometry">
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
    </element>
    <element x="35" y="16" type="geometry">
      <vertex x="0" y="10"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="10"/>
    </element>
    <element x="5" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="40" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="16"/>
      <vertex x="0" y="16"/>
    </element>
  </room>
  <room name="ROOM10" row="0" column="1">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="20" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="20" y="25" type="geometry">
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="5"/>
    </element>
    <element x="25" y="15" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="20" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="40" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
      <vertex x="0" y="5"/>
    </element>
  </room>
  <room name="ROOM11" row="0" column="2">
    <element x="0" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="20"/>
      <vertex x="0" y="20"/>
    </element>
    <element x="10" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="15" y="26" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="30" y="0"/>
      <vertex x="30" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="30" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="35" y="15" type="geometry">
      <vertex x="0" y="7"/>
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="7"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="18" y="9" type="start"/>
  </room>
  <room name="ROOM12" row="1" column="0">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="15" y="20" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="20" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="30" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="35" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="40" y="20" type="geometry">
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
    </element>
    <element x="0" y="25" type="geometry">
      <vertex x="25" y="1"/>
      <vertex x="25" y="5"/>
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
    </element>
    <element x="20" y="15" type="geometry">
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
    </element>
    <element x="0" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="5"/>
      <vertex x="0" y="5"/>
    </element>
  </room>
  <room name="ROOM13" row="1" column="1">
    <element x="0" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="20" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="10"/>
      <vertex x="0" y="10"/>
    </element>
    <element x="5" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="15" y="15" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="15"/>
      <vertex x="0" y="15"/>
    </element>
    <element x="21" y="8" type="goal"/>
    <element x="20" y="15" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="35" y="26" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="25" y="26" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="4"/>
    </element>
    <element x="40" y="18" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="15" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="30" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="40" y="0" type="geometry">
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="10"/>
      <vertex x="0" y="10"/>
    </element>
    <element x="27" y="24" type="pickup"/>
  </room>
  <room name="ROOM14" row="1" column="2">
    <element x="30" y="26" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="25" y="0" type="geometry">
      <vertex x="5" y="0"/>
      <vertex x="5" y="30"/>
      <vertex x="0" y="30"/>
      <vertex x="0" y="0"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="10" y="0"/>
      <vertex x="10" y="5"/>
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
    </element>
    <element x="0" y="22" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="8"/>
      <vertex x="0" y="8"/>
    </element>
    <element x="35" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="40" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="12"/>
      <vertex x="0" y="12"/>
    </element>
    <element x="0" y="5" type="geometry">
      <vertex x="0" y="7"/>
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="7"/>
    </element>
    <element x="5" y="17" type="geometry">
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
    </element>
    <element x="15" y="0" type="geometry">
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
    </element>
    <element x="15" y="12" type="geometry">
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="5"/>
    </element>
  </room>
  <room name="ROOM16" row="2" column="1">
    <element x="0" y="20" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="10"/>
      <vertex x="0" y="10"/>
    </element>
    <element x="20" y="20" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="20" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="40" y="25" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="10" y="5" type="geometry">
      <vertex x="5" y="0"/>
      <vertex x="5" y="10"/>
      <vertex x="0" y="10"/>
      <vertex x="0" y="0"/>
    </element>
    <element x="0" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="20" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="20" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="5"/>
      <vertex x="0" y="5"/>
    </element>
  </room>
  <room name="ROOM17" row="2" column="2">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="10" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="15"/>
      <vertex x="0" y="15"/>
    </element>
    <element x="0" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="20" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="40" y="20" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="10"/>
      <vertex x="0" y="10"/>
    </element>
    <element x="20" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="20" y="20" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="20" y="25" type="geometry">
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="5"/>
    </element>
    <element x="0" y="5" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="15"/>
      <vertex x="0" y="15"/>
    </element>
  </room>
  <matches>
    <room name="ROOM9">
      <side type="left">
        <room name="ROOM11"/>
        <room name="ROOM13"/>
        <room name="ROOM14"/>
      </side>
      <side type="right">
        <room name="ROOM11"/>
      </side>
      <side type="top">
        <room name="ROOM9"/>
        <room name="ROOM14"/>
      </side>
      <side type="bottom">
        <room name="ROOM9"/>
      </side>
    </room>
    <room name="ROOM10">
      <side type="left">
        <room name="ROOM12"/>
        <room name="ROOM17"/>
      </side>
      <side type="right"/>
      <side type="top">
        <room name="ROOM16"/>
        <room name="ROOM17"/>
      </side>
      <side type="bottom">
        <room name="ROOM11"/>
      </side>
    </room>
    <room name="ROOM11">
      <side type="left">
        <room name="ROOM9"/>
      </side>
      <side type="right">
        <room name="ROOM9"/>
      </side>
      <side type="top">
        <room name="ROOM10"/>
      </side>
      <side type="bottom"/>
    </room>
    <room name="ROOM12">
      <side type="left">
        <room name="ROOM16"/>
      </side>
      <side type="right">
        <room name="ROOM10"/>
        <room name="ROOM16"/>
      </side>
      <side type="top"/>
      <side type="bottom"/>
    </room>
    <room name="ROOM13">
      <side type="left"/>
      <side type="right">
        <room name="ROOM9"/>
      </side>
      <side type="top"/>
      <side type="bottom">
        <room name="ROOM14"/>
      </side>
    </room>
    <room name="ROOM14">
      <side type="left"/>
      <side type="right">
        <room name="ROOM9"/>
      </side>
      <side type="top">
        <room name="ROOM13"/>
      </side>
      <side type="bottom">
        <room name="ROOM9"/>
      </side>
    </room>
    <room name="ROOM16">
      <side type="left">
        <room name="ROOM12"/>
        <room name="ROOM17"/>
      </side>
      <side type="right">
        <room name="ROOM12"/>
      </side>
      <side type="top"/>
      <side type="bottom">
        <room name="ROOM10"/>
      </side>
    </room>
    <room name="ROOM17">
      <side type="left"/>
      <side type="right">
        <room name="ROOM10"/>
        <room name="ROOM16"/>
      </side>
      <side type="top"/>
      <side type="bottom">
        <room name="ROOM10"/>
      </side>
    </room>
  </matches>
</level>
		;

	}
}//package resources.levels 

****************

//Pitfalls (resources.levels.Pitfalls)
package resources.levels {

	public class Pitfalls {

		public static const xml:XML = <level name="yo" rows="3" columns="3" horizontalRoomDivisions="45" verticalRoomDivisions="30">
  <room name="ROOM9" row="0" column="0">
    <element x="30" y="18" type="geometry">
      <vertex x="0" y="12"/>
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="12"/>
    </element>
    <element x="35" y="17" type="start"/>
    <element x="37" y="8" type="pickup"/>
    <element x="5" y="9" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="40" y="0"/>
      <vertex x="40" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="0" y="28" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
    </element>
  </room>
  <room name="ROOM10" row="0" column="1">
    <element x="1" y="7" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="1"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="41" y="7" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="1"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="35" y="5" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="1"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="7" y="5" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="1"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="0" y="9" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="24" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="5"/>
      <vertex x="0" y="5"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="19" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="18" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="6" y="12"/>
      <vertex x="0" y="12"/>
    </element>
    <element x="6" y="22" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="8"/>
      <vertex x="0" y="8"/>
    </element>
    <element x="11" y="26" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="16" y="29" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="1"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="39" y="18" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="6" y="12"/>
      <vertex x="0" y="12"/>
    </element>
    <element x="36" y="20" type="goal"/>
    <element x="23" y="4" type="pickup"/>
    <element x="19" y="5" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="7" y="0"/>
      <vertex x="7" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="13" y="3" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="1"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="29" y="3" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="1"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="29" y="26" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="4"/>
    </element>
    <element x="24" y="29" type="geometry">
      <vertex x="0" y="1"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="1"/>
    </element>
    <element x="34" y="22" type="geometry">
      <vertex x="0" y="8"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="8"/>
    </element>
  </room>
  <room name="ROOM11" row="0" column="2">
    <element x="0" y="18" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="12"/>
      <vertex x="0" y="12"/>
    </element>
    <element x="39" y="8" type="pickup"/>
    <element x="0" y="9" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="40" y="0"/>
      <vertex x="40" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="40" y="28" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
    </element>
  </room>
  <room name="ROOM12" row="1" column="0">
    <element x="30" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="12"/>
      <vertex x="0" y="12"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
    </element>
  </room>
  <room name="ROOM13" row="1" column="1">
    <element x="0" y="11" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="21" y="0"/>
      <vertex x="21" y="1"/>
      <vertex x="0" y="1"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="21" y="0"/>
      <vertex x="21" y="12"/>
      <vertex x="0" y="12"/>
    </element>
    <element x="24" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="21" y="0"/>
      <vertex x="21" y="12"/>
      <vertex x="0" y="12"/>
    </element>
    <element x="19" y="3" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="6" y="9"/>
      <vertex x="0" y="9"/>
    </element>
  </room>
  <room name="ROOM14" row="1" column="2">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="12"/>
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="12"/>
    </element>
    <element x="40" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
    </element>
  </room>
  <room name="ROOM15" row="2" column="0">
    <element x="19" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="30"/>
      <vertex x="0" y="30"/>
    </element>
    <element x="24" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="30"/>
      <vertex x="0" y="30"/>
    </element>
    <element x="0" y="28" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="19" y="0"/>
      <vertex x="19" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="26" y="28" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="19" y="0"/>
      <vertex x="19" y="2"/>
      <vertex x="0" y="2"/>
    </element>
  </room>
  <room name="ROOM16" row="2" column="1">
    <element x="19" y="29" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="1"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="24" y="29" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="1"/>
      <vertex x="0" y="1"/>
    </element>
  </room>
  <matches>
    <room name="ROOM9">
      <side type="left">
        <room name="ROOM11"/>
        <room name="ROOM15"/>
      </side>
      <side type="right">
        <room name="ROOM10"/>
        <room name="ROOM11"/>
      </side>
      <side type="top">
        <room name="ROOM12"/>
        <room name="ROOM13"/>
        <room name="ROOM14"/>
      </side>
      <side type="bottom">
        <room name="ROOM12"/>
      </side>
    </room>
    <room name="ROOM10">
      <side type="left">
        <room name="ROOM9"/>
        <room name="ROOM10"/>
      </side>
      <side type="right">
        <room name="ROOM10"/>
        <room name="ROOM11"/>
      </side>
      <side type="top">
        <room name="ROOM16"/>
      </side>
      <side type="bottom">
        <room name="ROOM13"/>
      </side>
    </room>
    <room name="ROOM11">
      <side type="left">
        <room name="ROOM9"/>
        <room name="ROOM10"/>
      </side>
      <side type="right">
        <room name="ROOM9"/>
        <room name="ROOM15"/>
      </side>
      <side type="top">
        <room name="ROOM12"/>
        <room name="ROOM13"/>
        <room name="ROOM14"/>
      </side>
      <side type="bottom">
        <room name="ROOM14"/>
      </side>
    </room>
    <room name="ROOM12">
      <side type="left">
        <room name="ROOM14"/>
      </side>
      <side type="right">
        <room name="ROOM13"/>
        <room name="ROOM14"/>
      </side>
      <side type="top">
        <room name="ROOM9"/>
      </side>
      <side type="bottom">
        <room name="ROOM9"/>
        <room name="ROOM11"/>
        <room name="ROOM16"/>
      </side>
    </room>
    <room name="ROOM13">
      <side type="left">
        <room name="ROOM12"/>
        <room name="ROOM13"/>
      </side>
      <side type="right">
        <room name="ROOM13"/>
        <room name="ROOM14"/>
      </side>
      <side type="top">
        <room name="ROOM10"/>
        <room name="ROOM15"/>
      </side>
      <side type="bottom">
        <room name="ROOM9"/>
        <room name="ROOM11"/>
        <room name="ROOM16"/>
      </side>
    </room>
    <room name="ROOM14">
      <side type="left">
        <room name="ROOM12"/>
        <room name="ROOM13"/>
      </side>
      <side type="right">
        <room name="ROOM12"/>
      </side>
      <side type="top">
        <room name="ROOM11"/>
      </side>
      <side type="bottom">
        <room name="ROOM9"/>
        <room name="ROOM11"/>
        <room name="ROOM16"/>
      </side>
    </room>
    <room name="ROOM15">
      <side type="left">
        <room name="ROOM11"/>
        <room name="ROOM15"/>
      </side>
      <side type="right">
        <room name="ROOM9"/>
        <room name="ROOM15"/>
      </side>
      <side type="top">
        <room name="ROOM16"/>
      </side>
      <side type="bottom">
        <room name="ROOM13"/>
      </side>
    </room>
    <room name="ROOM16">
      <side type="left">
        <room name="ROOM16"/>
      </side>
      <side type="right">
        <room name="ROOM16"/>
      </side>
      <side type="top">
        <room name="ROOM12"/>
        <room name="ROOM13"/>
        <room name="ROOM14"/>
      </side>
      <side type="bottom">
        <room name="ROOM10"/>
        <room name="ROOM15"/>
      </side>
    </room>
  </matches>
</level>
		;

	}
}//package resources.levels 

****************

//RoomJumping (resources.levels.RoomJumping)
package resources.levels {

	public class RoomJumping {

		public static const xml:XML = <level name="yo" rows="2" columns="2" horizontalRoomDivisions="45" verticalRoomDivisions="30">
  <room name="ROOM4" row="0" column="0">
    <element x="0" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="11" y="23" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="6" y="4"/>
    </element>
    <element x="17" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="8" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="19" y="19" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="6" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="19" y="21" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="3" y="1"/>
    </element>
    <element x="27" y="15" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="6" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="27" y="17" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="3" y="1"/>
    </element>
    <element x="35" y="11" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="6" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="35" y="13" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="3" y="1"/>
    </element>
    <element x="3" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="12" y="0"/>
      <vertex x="12" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="3" y="12" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="12" y="0"/>
      <vertex x="6" y="1"/>
    </element>
    <element x="12" y="8" type="goal"/>
    <element x="3" y="26" type="start"/>
  </room>
  <room name="ROOM5" row="0" column="1">
    <element x="7" y="6" type="pickup"/>
    <element x="4" y="7" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="6" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="4" y="9" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="3" y="1"/>
    </element>
    <element x="12" y="3" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="6" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="12" y="5" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="3" y="1"/>
    </element>
    <element x="20" y="1" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="6" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="20" y="3" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="3" y="1"/>
    </element>
    <element x="28" y="7" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="6" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="28" y="9" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="3" y="1"/>
    </element>
    <element x="0" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="35" y="0"/>
      <vertex x="35" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="35" y="13" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="6" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="35" y="15" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="3" y="1"/>
    </element>
    <element x="30" y="0" type="geometry">
      <vertex x="0" y="3"/>
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="3"/>
    </element>
  </room>
  <room name="ROOM7" row="1" column="1">
    <element x="30" y="23" type="geometry">
      <vertex x="0" y="7"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="7"/>
    </element>
    <element x="35" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="4" y="13" type="geometry">
      <vertex x="0" y="2"/>
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="6" y="2"/>
    </element>
    <element x="4" y="15" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="3" y="1"/>
    </element>
    <element x="15" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="6" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="15" y="12" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="3" y="1"/>
    </element>
    <element x="26" y="8" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="6" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="26" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="3" y="1"/>
    </element>
    <element x="36" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="6" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="36" y="12" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="3" y="1"/>
    </element>
  </room>
  <matches>
    <room name="ROOM4">
      <side type="left">
        <room name="ROOM4"/>
        <room name="ROOM7"/>
      </side>
      <side type="right">
        <room name="ROOM4"/>
        <room name="ROOM5"/>
      </side>
      <side type="top"/>
      <side type="bottom"/>
    </room>
    <room name="ROOM5">
      <side type="left">
        <room name="ROOM4"/>
        <room name="ROOM7"/>
      </side>
      <side type="right">
        <room name="ROOM7"/>
      </side>
      <side type="top">
        <room name="ROOM7"/>
      </side>
      <side type="bottom"/>
    </room>
    <room name="ROOM7">
      <side type="left">
        <room name="ROOM5"/>
      </side>
      <side type="right">
        <room name="ROOM4"/>
        <room name="ROOM5"/>
      </side>
      <side type="top"/>
      <side type="bottom">
        <room name="ROOM5"/>
      </side>
    </room>
  </matches>
</level>
		;

	}
}//package resources.levels 

****************

//TestLevel1 (resources.levels.TestLevel1)
package resources.levels {

	public class TestLevel1 {

		public static const xml:XML = <level name="yo" rows="2" columns="2" horizontalRoomDivisions="45" verticalRoomDivisions="30">
			  <room name="ROOM4" row="0" column="0">
				<element x="0" y="7" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="45" y="0"/>
				  <vertex x="45" y="4"/>
				  <vertex x="0" y="4"/>
				</element>
				<element x="24" y="0" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="3" y="0"/>
				  <vertex x="3" y="7"/>
				  <vertex x="0" y="7"/>
				</element>
				<element x="21" y="3" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="3" y="0"/>
				  <vertex x="3" y="4"/>
				  <vertex x="0" y="4"/>
				</element>
				<element x="27" y="3" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="3" y="0"/>
				  <vertex x="3" y="4"/>
				  <vertex x="0" y="4"/>
				</element>
				<element x="7" y="0" type="geometry">
				  <vertex x="10" y="0"/>
				  <vertex x="10" y="2"/>
				  <vertex x="0" y="2"/>
				  <vertex x="0" y="0"/>
				</element>
				<element x="0" y="0" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="3" y="0"/>
				  <vertex x="3" y="2"/>
				  <vertex x="0" y="2"/>
				</element>
				<element x="33" y="0" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="12" y="0"/>
				  <vertex x="12" y="2"/>
				  <vertex x="0" y="2"/>
				</element>
				<element x="0" y="19" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="45" y="0"/>
				  <vertex x="45" y="11"/>
				  <vertex x="0" y="11"/>
				</element>
				<element x="0" y="11" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="2" y="0"/>
				  <vertex x="2" y="8"/>
				  <vertex x="0" y="8"/>
				</element>
				<element x="3" y="1" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="4" y="0"/>
				  <vertex x="4" y="1"/>
				  <vertex x="0" y="1"/>
				</element>
				<element x="22" y="18" type="start"/>
			  </room>
			  <room name="ROOM5" row="0" column="1">
				<element x="0" y="0" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="3" y="0"/>
				  <vertex x="3" y="30"/>
				  <vertex x="0" y="30"/>
				</element>
				<element x="7" y="0" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="3" y="0"/>
				  <vertex x="3" y="30"/>
				  <vertex x="0" y="30"/>
				</element>
				<element x="42" y="14" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="3" y="0"/>
				  <vertex x="3" y="16"/>
				  <vertex x="0" y="16"/>
				</element>
				<element x="10" y="29" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="7" y="0"/>
				  <vertex x="7" y="1"/>
				  <vertex x="0" y="1"/>
				</element>
				<element x="24" y="14" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="3" y="0"/>
				  <vertex x="3" y="16"/>
				  <vertex x="0" y="16"/>
				</element>
				<element x="33" y="29" type="geometry">
				  <vertex x="0" y="1"/>
				  <vertex x="0" y="0"/>
				  <vertex x="9" y="0"/>
				  <vertex x="9" y="1"/>
				</element>
				<element x="42" y="0" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="3" y="0"/>
				  <vertex x="3" y="10"/>
				  <vertex x="0" y="10"/>
				</element>
				<element x="21" y="0" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="14" y="0"/>
				  <vertex x="14" y="3"/>
				  <vertex x="0" y="3"/>
				</element>
				<element x="10" y="0" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="3" y="0"/>
				  <vertex x="3" y="10"/>
				  <vertex x="0" y="10"/>
				</element>
				<element x="10" y="10" type="geometry">
				  <vertex x="35" y="0"/>
				  <vertex x="35" y="4"/>
				  <vertex x="0" y="4"/>
				  <vertex x="0" y="0"/>
				</element>
				<element x="13" y="6" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="7" y="0"/>
				  <vertex x="7" y="4"/>
				  <vertex x="0" y="4"/>
				</element>
				<element x="20" y="8" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="3" y="0"/>
				  <vertex x="3" y="2"/>
				  <vertex x="0" y="2"/>
				</element>
				<element x="14" y="27" type="goal"/>
				<element x="39" y="27" type="pickup"/>
				<element x="13" y="2" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="4" y="0"/>
				  <vertex x="4" y="4"/>
				  <vertex x="0" y="4"/>
				</element>
			  </room>
			  <room name="ROOM7" row="1" column="1">
				<element x="0" y="0" type="geometry">
				  <vertex x="3" y="0"/>
				  <vertex x="3" y="2"/>
				  <vertex x="0" y="2"/>
				  <vertex x="0" y="0"/>
				</element>
				<element x="0" y="7" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="45" y="0"/>
				  <vertex x="45" y="4"/>
				  <vertex x="0" y="4"/>
				</element>
				<element x="7" y="0" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="10" y="0"/>
				  <vertex x="10" y="2"/>
				  <vertex x="0" y="2"/>
				</element>
				<element x="24" y="0" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="3" y="0"/>
				  <vertex x="3" y="2"/>
				  <vertex x="0" y="2"/>
				</element>
				<element x="17" y="1" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="7" y="0"/>
				  <vertex x="7" y="1"/>
				  <vertex x="0" y="1"/>
				</element>
				<element x="27" y="1" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="6" y="0"/>
				  <vertex x="6" y="1"/>
				  <vertex x="0" y="1"/>
				</element>
				<element x="33" y="0" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="12" y="0"/>
				  <vertex x="12" y="2"/>
				  <vertex x="0" y="2"/>
				</element>
				<element x="42" y="11" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="3" y="0"/>
				  <vertex x="3" y="19"/>
				  <vertex x="0" y="19"/>
				</element>
				<element x="31" y="22" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="4" y="0"/>
				  <vertex x="4" y="8"/>
				  <vertex x="0" y="8"/>
				</element>
				<element x="0" y="22" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="3" y="0"/>
				  <vertex x="3" y="8"/>
				  <vertex x="0" y="8"/>
				</element>
				<element x="21" y="29" type="geometry">
				  <vertex x="0" y="1"/>
				  <vertex x="0" y="0"/>
				  <vertex x="10" y="0"/>
				  <vertex x="10" y="1"/>
				</element>
				<element x="7" y="28" type="geometry">
				  <vertex x="0" y="2"/>
				  <vertex x="0" y="0"/>
				  <vertex x="6" y="0"/>
				  <vertex x="6" y="2"/>
				</element>
				<element x="0" y="19" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="15" y="0"/>
				  <vertex x="15" y="3"/>
				  <vertex x="0" y="3"/>
				</element>
				<element x="15" y="16" type="geometry">
				  <vertex x="0" y="6"/>
				  <vertex x="0" y="0"/>
				  <vertex x="20" y="0"/>
				  <vertex x="20" y="6"/>
				</element>
			  </room>
			  <matches>
				<room name="ROOM4">
				  <side type="left">
					<room name="ROOM7"/>
				  </side>
				  <side type="right">
					<room name="ROOM7"/>
				  </side>
				  <side type="top">
					<room name="ROOM5"/>
				  </side>
				  <side type="bottom"/>
				</room>
				<room name="ROOM5">
				  <side type="left">
					<room name="ROOM5"/>
				  </side>
				  <side type="right">
					<room name="ROOM5"/>
				  </side>
				  <side type="top">
					<room name="ROOM7"/>
				  </side>
				  <side type="bottom">
					<room name="ROOM4"/>
					<room name="ROOM7"/>
				  </side>
				</room>
				<room name="ROOM7">
				  <side type="left">
					<room name="ROOM4"/>
				  </side>
				  <side type="right">
					<room name="ROOM4"/>
				  </side>
				  <side type="top">
					<room name="ROOM5"/>
				  </side>
				  <side type="bottom">
					<room name="ROOM5"/>
				  </side>
				</room>
			  </matches>
			</level>
		;

	}
}//package resources.levels 

****************

//TestLevel3 (resources.levels.TestLevel3)
package resources.levels {

	public class TestLevel3 {

		public static const xml:XML = <level name="yo" rows="2" columns="2" horizontalRoomDivisions="45" verticalRoomDivisions="30">
  <room name="ROOM4" row="0" column="0">
    <element x="16" y="0" type="geometry">
      <vertex x="4" y="0"/>
      <vertex x="4" y="30"/>
      <vertex x="0" y="30"/>
      <vertex x="0" y="0"/>
    </element>
    <element x="25" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="30"/>
      <vertex x="0" y="30"/>
    </element>
    <element x="0" y="24" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="16" y="0"/>
      <vertex x="16" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="3" y="21" type="geometry">
      <vertex x="0" y="3"/>
      <vertex x="0" y="0"/>
      <vertex x="13" y="0"/>
      <vertex x="13" y="3"/>
    </element>
    <element x="6" y="18" type="geometry">
      <vertex x="0" y="3"/>
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="3"/>
    </element>
    <element x="9" y="15" type="geometry">
      <vertex x="0" y="3"/>
      <vertex x="0" y="0"/>
      <vertex x="7" y="0"/>
      <vertex x="7" y="3"/>
    </element>
    <element x="12" y="12" type="geometry">
      <vertex x="0" y="3"/>
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="3"/>
    </element>
    <element x="0" y="8" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="8" y="0"/>
      <vertex x="8" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="29" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="16" y="0"/>
      <vertex x="16" y="3"/>
      <vertex x="0" y="3"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="38" y="8" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="7" y="0"/>
      <vertex x="7" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="38" y="24" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="7" y="0"/>
      <vertex x="7" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="29" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="35" y="13" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="29" y="17" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="35" y="21" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="29" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="16" y="0"/>
      <vertex x="16" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="38" y="11" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="7" y="0"/>
      <vertex x="7" y="13"/>
      <vertex x="0" y="13"/>
    </element>
  </room>
  <room name="ROOM7" row="0" column="1">
    <element x="0" y="24" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="20" y="24" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="9" y="0"/>
      <vertex x="9" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="25" y="27" type="geometry">
      <vertex x="0" y="3"/>
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="3"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="0" y="8" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="29" y="24" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="16" y="0"/>
      <vertex x="16" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="25" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="38" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="7" y="0"/>
      <vertex x="7" y="2"/>
      <vertex x="0" y="2"/>
    </element>
  </room>
  <room name="ROOM6" row="1" column="0">
    <element x="0" y="24" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="25" y="24" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="25" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="8"/>
      <vertex x="0" y="8"/>
    </element>
    <element x="29" y="8" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="16" y="0"/>
      <vertex x="16" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="0" y="11" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="13"/>
      <vertex x="0" y="13"/>
    </element>
    <element x="23" y="25" type="pickup"/>
    <element x="0" y="8" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="14" y="8" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="38" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="7" y="0"/>
      <vertex x="7" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="17" y="6" type="goal"/>
    <element x="17" y="23" type="start"/>
  </room>
  <matches>
    <room name="ROOM4">
      <side type="left">
        <room name="ROOM7"/>
        <room name="ROOM6"/>
      </side>
      <side type="right">
        <room name="ROOM6"/>
      </side>
      <side type="top">
        <room name="ROOM7"/>
        <room name="ROOM6"/>
      </side>
      <side type="bottom">
        <room name="ROOM7"/>
        <room name="ROOM6"/>
      </side>
    </room>
    <room name="ROOM7">
      <side type="left">
        <room name="ROOM7"/>
        <room name="ROOM6"/>
      </side>
      <side type="right">
        <room name="ROOM4"/>
        <room name="ROOM7"/>
      </side>
      <side type="top">
        <room name="ROOM4"/>
      </side>
      <side type="bottom">
        <room name="ROOM4"/>
      </side>
    </room>
    <room name="ROOM6">
      <side type="left">
        <room name="ROOM4"/>
      </side>
      <side type="right">
        <room name="ROOM4"/>
        <room name="ROOM7"/>
      </side>
      <side type="top">
        <room name="ROOM4"/>
      </side>
      <side type="bottom">
        <room name="ROOM4"/>
      </side>
    </room>
  </matches>
</level>
		;

	}
}//package resources.levels 

****************

//TestLevel4 (resources.levels.TestLevel4)
package resources.levels {

	public class TestLevel4 {

		public static const xml:XML = <level name="yo" rows="2" columns="2" horizontalRoomDivisions="45" verticalRoomDivisions="30">
  <room name="ROOM4" row="0" column="0">
    <element x="0" y="11" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="21" y="2" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="18" y="4" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="9" y="0"/>
      <vertex x="9" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="15" y="6" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="12" y="8" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="21" y="0"/>
      <vertex x="21" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="30" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="3"/>
      <vertex x="13" y="3"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="1"/>
      <vertex x="2" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="16" y="5" type="pickup"/>
    <element x="22" y="26" type="start"/>
  </room>
  <room name="ROOM5" row="0" column="1">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="30" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="3"/>
      <vertex x="0" y="3"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="12" y="3" type="geometry">
      <vertex x="3" y="0"/>
      <vertex x="3" y="27"/>
      <vertex x="0" y="27"/>
      <vertex x="0" y="0"/>
    </element>
    <element x="30" y="3" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="27"/>
      <vertex x="0" y="27"/>
    </element>
    <element x="18" y="13" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="9" y="0"/>
      <vertex x="9" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="0" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="12" y="0"/>
      <vertex x="12" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="33" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="12" y="0"/>
      <vertex x="12" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="33" y="24" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="9" y="0"/>
      <vertex x="9" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="33" y="21" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="6" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="33" y="18" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="38" y="14" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="7" y="0"/>
      <vertex x="7" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="42" y="11" type="geometry">
      <vertex x="0" y="3"/>
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="3"/>
    </element>
    <element x="3" y="24" type="geometry">
      <vertex x="0" y="3"/>
      <vertex x="0" y="0"/>
      <vertex x="9" y="0"/>
      <vertex x="9" y="3"/>
    </element>
    <element x="6" y="21" type="geometry">
      <vertex x="0" y="3"/>
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="6" y="3"/>
    </element>
    <element x="9" y="18" type="geometry">
      <vertex x="0" y="3"/>
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="3"/>
    </element>
    <element x="0" y="14" type="geometry">
      <vertex x="7" y="2"/>
      <vertex x="0" y="2"/>
      <vertex x="0" y="0"/>
      <vertex x="7" y="0"/>
      <vertex x="7" y="1"/>
    </element>
    <element x="0" y="11" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="22" y="11" type="goal"/>
  </room>
  <room name="ROOM7" row="1" column="1">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="30"/>
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="30"/>
    </element>
    <element x="30" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="30"/>
      <vertex x="0" y="30"/>
    </element>
  </room>
  <matches>
    <room name="ROOM4">
      <side type="left">
        <room name="ROOM4"/>
        <room name="ROOM5"/>
      </side>
      <side type="right">
        <room name="ROOM4"/>
        <room name="ROOM5"/>
      </side>
      <side type="top">
        <room name="ROOM5"/>
        <room name="ROOM7"/>
      </side>
      <side type="bottom"/>
    </room>
    <room name="ROOM5">
      <side type="left">
        <room name="ROOM4"/>
        <room name="ROOM5"/>
      </side>
      <side type="right">
        <room name="ROOM4"/>
        <room name="ROOM5"/>
      </side>
      <side type="top">
        <room name="ROOM5"/>
        <room name="ROOM7"/>
      </side>
      <side type="bottom">
        <room name="ROOM4"/>
        <room name="ROOM5"/>
        <room name="ROOM7"/>
      </side>
    </room>
    <room name="ROOM7">
      <side type="left">
        <room name="ROOM7"/>
      </side>
      <side type="right">
        <room name="ROOM7"/>
      </side>
      <side type="top">
        <room name="ROOM5"/>
        <room name="ROOM7"/>
      </side>
      <side type="bottom">
        <room name="ROOM4"/>
        <room name="ROOM5"/>
        <room name="ROOM7"/>
      </side>
    </room>
  </matches>
</level>
		;

	}
}//package resources.levels 

****************

//TestLevel5 (resources.levels.TestLevel5)
package resources.levels {

	public class TestLevel5 {

		public static const xml:XML = <level name="yo" rows="2" columns="2" horizontalRoomDivisions="45" verticalRoomDivisions="30">
			  <room name="ROOM4" row="0" column="0">
				<element x="0" y="22" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="45" y="0"/>
				  <vertex x="45" y="8"/>
				  <vertex x="0" y="8"/>
				</element>
				<element x="0" y="0" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="3" y="0"/>
				  <vertex x="3" y="22"/>
				  <vertex x="0" y="22"/>
				  <vertex x="0" y="1"/>
				</element>
				<element x="3" y="0" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="42" y="0"/>
				  <vertex x="42" y="4"/>
				  <vertex x="0" y="4"/>
				</element>
				<element x="24" y="15" type="geometry">
				  <vertex x="0" y="2"/>
				  <vertex x="0" y="0"/>
				  <vertex x="6" y="0"/>
				  <vertex x="6" y="2"/>
				</element>
				<element x="29" y="14" type="pickup"/>
				<element x="16" y="17" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="6" y="0"/>
				  <vertex x="6" y="2"/>
				  <vertex x="0" y="2"/>
				</element>
				<element x="7" y="21" type="start"/>
			  </room>
			  <room name="ROOM6" row="0" column="1">
				<element x="0" y="22" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="40" y="0"/>
				  <vertex x="40" y="8"/>
				  <vertex x="0" y="8"/>
				</element>
				<element x="0" y="0" type="geometry">
				  <vertex x="0" y="4"/>
				  <vertex x="0" y="0"/>
				  <vertex x="45" y="0"/>
				  <vertex x="45" y="4"/>
				</element>
				<element x="40" y="4" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="5" y="0"/>
				  <vertex x="5" y="26"/>
				  <vertex x="0" y="26"/>
				</element>
			  </room>
			  <room name="ROOM5" row="1" column="1">
				<element x="0" y="0" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="45" y="0"/>
				  <vertex x="45" y="4"/>
				  <vertex x="0" y="4"/>
				</element>
				<element x="42" y="4" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="3" y="0"/>
				  <vertex x="3" y="18"/>
				  <vertex x="0" y="18"/>
				</element>
				<element x="7" y="19" type="geometry">
				  <vertex x="0" y="3"/>
				  <vertex x="0" y="0"/>
				  <vertex x="15" y="0"/>
				  <vertex x="15" y="3"/>
				</element>
				<element x="10" y="16" type="geometry">
				  <vertex x="0" y="3"/>
				  <vertex x="0" y="0"/>
				  <vertex x="9" y="0"/>
				  <vertex x="9" y="3"/>
				</element>
				<element x="13" y="13" type="geometry">
				  <vertex x="0" y="3"/>
				  <vertex x="0" y="0"/>
				  <vertex x="3" y="0"/>
				  <vertex x="3" y="3"/>
				</element>
				<element x="0" y="22" type="geometry">
				  <vertex x="0" y="0"/>
				  <vertex x="45" y="0"/>
				  <vertex x="45" y="8"/>
				  <vertex x="0" y="8"/>
				</element>
				<element x="35" y="20" type="goal"/>
			  </room>
			  <matches>
				<room name="ROOM4">
				  <side type="left">
					<room name="ROOM6"/>
					<room name="ROOM5"/>
				  </side>
				  <side type="right">
					<room name="ROOM6"/>
					<room name="ROOM5"/>
				  </side>
				  <side type="top">
					<room name="ROOM4"/>
					<room name="ROOM6"/>
					<room name="ROOM5"/>
				  </side>
				  <side type="bottom">
					<room name="ROOM4"/>
					<room name="ROOM6"/>
					<room name="ROOM5"/>
				  </side>
				</room>
				<room name="ROOM6">
				  <side type="left">
					<room name="ROOM4"/>
				  </side>
				  <side type="right">
					<room name="ROOM4"/>
				  </side>
				  <side type="top">
					<room name="ROOM4"/>
					<room name="ROOM6"/>
					<room name="ROOM5"/>
				  </side>
				  <side type="bottom">
					<room name="ROOM4"/>
					<room name="ROOM6"/>
					<room name="ROOM5"/>
				  </side>
				</room>
				<room name="ROOM5">
				  <side type="left">
					<room name="ROOM4"/>
				  </side>
				  <side type="right">
					<room name="ROOM4"/>
				  </side>
				  <side type="top">
					<room name="ROOM4"/>
					<room name="ROOM6"/>
					<room name="ROOM5"/>
				  </side>
				  <side type="bottom">
					<room name="ROOM4"/>
					<room name="ROOM6"/>
					<room name="ROOM5"/>
				  </side>
				</room>
			  </matches>
			</level>
		;

	}
}//package resources.levels 

****************

//TestLevel6 (resources.levels.TestLevel6)
package resources.levels {

	public class TestLevel6 {

		public static const xml:XML = <level name="yo" rows="2" columns="2" horizontalRoomDivisions="45" verticalRoomDivisions="30">
  <room name="ROOM4" row="0" column="0">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="30"/>
      <vertex x="0" y="30"/>
    </element>
    <element x="4" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="41" y="0"/>
      <vertex x="41" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="41" y="4" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="26"/>
      <vertex x="0" y="26"/>
    </element>
    <element x="4" y="20" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="37" y="0"/>
      <vertex x="37" y="10"/>
      <vertex x="0" y="10"/>
    </element>
    <element x="25" y="18" type="goal"/>
    <element x="35" y="18" type="pickup"/>
    <element x="9" y="10" type="start"/>
  </room>
  <room name="HELPROOM" row="0" column="1">
    
  </room>
  <room name="ROOM6" row="1" column="0">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="9"/>
      <vertex x="0" y="9"/>
    </element>
    <element x="0" y="20" type="geometry">
      <vertex x="0" y="10"/>
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="10"/>
    </element>
    <element x="40" y="9" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="11"/>
      <vertex x="0" y="11"/>
    </element>
    <element x="0" y="9" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="11"/>
      <vertex x="0" y="11"/>
    </element>
  </room>
  <matches>
    <room name="ROOM4">
      <side type="left">
        <room name="ROOM4"/>
        <room name="ROOM6"/>
      </side>
      <side type="right">
        <room name="ROOM4"/>
        <room name="ROOM6"/>
      </side>
      <side type="top">
        <room name="ROOM4"/>
        <room name="ROOM6"/>
      </side>
      <side type="bottom">
        <room name="ROOM4"/>
        <room name="ROOM6"/>
      </side>
    </room>
    <room name="ROOM5">
      <side type="left">
        <room name="ROOM5"/>
      </side>
      <side type="right">
        <room name="ROOM5"/>
      </side>
      <side type="top">
        <room name="ROOM5"/>
      </side>
      <side type="bottom">
        <room name="ROOM5"/>
      </side>
    </room>
    <room name="ROOM6">
      <side type="left">
        <room name="ROOM4"/>
        <room name="ROOM6"/>
      </side>
      <side type="right">
        <room name="ROOM4"/>
        <room name="ROOM6"/>
      </side>
      <side type="top">
        <room name="ROOM4"/>
        <room name="ROOM6"/>
      </side>
      <side type="bottom">
        <room name="ROOM4"/>
        <room name="ROOM6"/>
      </side>
    </room>
  </matches>
</level>
		;

	}
}//package resources.levels 

****************

//TestLevel7 (resources.levels.TestLevel7)
package resources.levels {

	public class TestLevel7 {

		public static const xml:XML = <level name="yo" rows="2" columns="2" horizontalRoomDivisions="45" verticalRoomDivisions="30">
  <room name="ROOM4" row="0" column="0">
    <element x="0" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="25"/>
      <vertex x="0" y="25"/>
    </element>
    <element x="5" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="5"/>
      <vertex x="0" y="5"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="30" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="32" y="23" type="goal"/>
    <element x="15" y="24" type="start"/>
  </room>
  <room name="ROOM5" row="0" column="1">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="5" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="25"/>
      <vertex x="0" y="25"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="15" y="25" type="geometry">
      <vertex x="30" y="0"/>
      <vertex x="30" y="5"/>
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
    </element>
    <element x="5" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
      <vertex x="0" y="5"/>
    </element>
  </room>
  <room name="ROOM7" row="1" column="1">
    <element x="0" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="5" y="5" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="20"/>
      <vertex x="0" y="20"/>
    </element>
    <element x="15" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="30" y="0"/>
      <vertex x="30" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="10" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="30" y="25" type="geometry">
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="5"/>
    </element>
    <element x="22" y="23" type="pickup"/>
  </room>
  <matches>
    <room name="ROOM4">
      <side type="left"/>
      <side type="right">
        <room name="ROOM7"/>
      </side>
      <side type="top">
        <room name="ROOM7"/>
      </side>
      <side type="bottom">
        <room name="ROOM5"/>
      </side>
    </room>
    <room name="ROOM5">
      <side type="left"/>
      <side type="right">
        <room name="ROOM7"/>
      </side>
      <side type="top">
        <room name="ROOM4"/>
      </side>
      <side type="bottom">
        <room name="ROOM7"/>
      </side>
    </room>
    <room name="ROOM7">
      <side type="left">
        <room name="ROOM4"/>
        <room name="ROOM5"/>
        <room name="ROOM7"/>
      </side>
      <side type="right">
        <room name="ROOM7"/>
      </side>
      <side type="top">
        <room name="ROOM5"/>
      </side>
      <side type="bottom">
        <room name="ROOM4"/>
      </side>
    </room>
  </matches>
</level>
		;

	}
}//package resources.levels 

****************

//TestLevel8 (resources.levels.TestLevel8)
package resources.levels {

	public class TestLevel8 {

		public static const xml:XML = <level name="yo" rows="2" columns="2" horizontalRoomDivisions="45" verticalRoomDivisions="30">
  <room name="ROOM4" row="0" column="0">
    <element x="0" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="5" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="20"/>
      <vertex x="0" y="20"/>
    </element>
    <element x="40" y="5" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="20"/>
      <vertex x="0" y="20"/>
    </element>
    <element x="0" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="21" y="0"/>
      <vertex x="21" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="24" y="25" type="geometry">
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
      <vertex x="21" y="0"/>
      <vertex x="21" y="5"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="21" y="0"/>
      <vertex x="21" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="24" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="21" y="0"/>
      <vertex x="21" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="15" y="9" type="pickup"/>
    <element x="32" y="8" type="goal"/>
    <element x="11" y="19" type="start"/>
  </room>
  <room name="ROOM5" row="0" column="1">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="10"/>
      <vertex x="0" y="10"/>
    </element>
    <element x="0" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="15"/>
      <vertex x="1" y="15"/>
      <vertex x="0" y="15"/>
    </element>
    <element x="40" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="15"/>
      <vertex x="0" y="15"/>
    </element>
  </room>
  <room name="ROOM6" row="1" column="0">
    <element x="0" y="0" type="geometry">
      <vertex x="21" y="0"/>
      <vertex x="21" y="30"/>
      <vertex x="0" y="30"/>
      <vertex x="0" y="0"/>
    </element>
    <element x="24" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="21" y="0"/>
      <vertex x="21" y="30"/>
      <vertex x="0" y="30"/>
    </element>
  </room>
  <matches>
    <room name="ROOM4">
      <side type="left">
        <room name="ROOM4"/>
        <room name="ROOM5"/>
        <room name="ROOM6"/>
      </side>
      <side type="right">
        <room name="ROOM4"/>
        <room name="ROOM5"/>
        <room name="ROOM6"/>
      </side>
      <side type="top">
        <room name="ROOM4"/>
        <room name="ROOM6"/>
      </side>
      <side type="bottom">
        <room name="ROOM4"/>
        <room name="ROOM6"/>
      </side>
    </room>
    <room name="ROOM5">
      <side type="left">
        <room name="ROOM4"/>
        <room name="ROOM5"/>
        <room name="ROOM6"/>
      </side>
      <side type="right">
        <room name="ROOM4"/>
        <room name="ROOM5"/>
        <room name="ROOM6"/>
      </side>
      <side type="top">
        <room name="ROOM5"/>
      </side>
      <side type="bottom">
        <room name="ROOM5"/>
      </side>
    </room>
    <room name="ROOM6">
      <side type="left">
        <room name="ROOM4"/>
        <room name="ROOM5"/>
        <room name="ROOM6"/>
      </side>
      <side type="right">
        <room name="ROOM4"/>
        <room name="ROOM5"/>
        <room name="ROOM6"/>
      </side>
      <side type="top">
        <room name="ROOM4"/>
        <room name="ROOM6"/>
      </side>
      <side type="bottom">
        <room name="ROOM4"/>
        <room name="ROOM6"/>
      </side>
    </room>
  </matches>
</level>
		;

	}
}//package resources.levels 

****************

//TestLevelD (resources.levels.TestLevelD)
package resources.levels {

	public class TestLevelD {

		public static const xml:XML = <level name="yo" rows="2" columns="2" horizontalRoomDivisions="45" verticalRoomDivisions="30">
  <room name="ROOM4" row="0" column="0">
    <element x="10" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="1"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="13"/>
      <vertex x="0" y="13"/>
    </element>
    <element x="25" y="11" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="5" y="5" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="8"/>
      <vertex x="0" y="8"/>
    </element>
    <element x="25" y="1" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="20" y="11" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="40" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="13"/>
      <vertex x="0" y="13"/>
    </element>
    <element x="0" y="17" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="7"/>
      <vertex x="0" y="7"/>
    </element>
    <element x="0" y="24" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="25" y="17" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="7"/>
      <vertex x="0" y="7"/>
    </element>
    <element x="40" y="24" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="10" y="29" type="geometry">
      <vertex x="0" y="1"/>
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="1"/>
    </element>
  </room>
  <room name="ROOM5" row="0" column="1">
    <element x="10" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="1"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="30"/>
      <vertex x="0" y="30"/>
    </element>
    <element x="10" y="1" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="40" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="13"/>
      <vertex x="0" y="13"/>
    </element>
    <element x="5" y="17" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="13"/>
      <vertex x="0" y="13"/>
    </element>
    <element x="10" y="21" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="9"/>
      <vertex x="0" y="9"/>
    </element>
    <element x="35" y="17" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="13"/>
      <vertex x="0" y="13"/>
    </element>
    <element x="5" y="3" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="35" y="0"/>
      <vertex x="35" y="10"/>
      <vertex x="0" y="10"/>
    </element>
    <element x="37" y="1" type="goal"/>
    <element x="8" y="16" type="start"/>
  </room>
  <room name="ROOM7" row="1" column="1">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="13"/>
      <vertex x="0" y="13"/>
    </element>
    <element x="0" y="17" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="8"/>
      <vertex x="0" y="8"/>
    </element>
    <element x="0" y="25" type="geometry">
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
    </element>
    <element x="40" y="25" type="geometry">
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
    </element>
    <element x="10" y="29" type="geometry">
      <vertex x="0" y="1"/>
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="1"/>
    </element>
    <element x="10" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="1"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="5" y="5" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="8"/>
      <vertex x="0" y="8"/>
    </element>
    <element x="15" y="1" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="12"/>
      <vertex x="0" y="12"/>
    </element>
    <element x="35" y="5" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="8"/>
      <vertex x="0" y="8"/>
    </element>
    <element x="40" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="13"/>
      <vertex x="0" y="13"/>
    </element>
    <element x="7" y="3" type="pickup"/>
    <element x="38" y="3" type="pickup"/>
    <element x="22" y="27" type="pickup"/>
  </room>
  <matches>
    <room name="ROOM4">
      <side type="left">
        <room name="ROOM4"/>
        <room name="ROOM5"/>
        <room name="ROOM7"/>
      </side>
      <side type="right">
        <room name="ROOM4"/>
        <room name="ROOM7"/>
      </side>
      <side type="top">
        <room name="ROOM4"/>
        <room name="ROOM7"/>
      </side>
      <side type="bottom">
        <room name="ROOM4"/>
        <room name="ROOM5"/>
        <room name="ROOM7"/>
      </side>
    </room>
    <room name="ROOM5">
      <side type="left"/>
      <side type="right">
        <room name="ROOM4"/>
        <room name="ROOM7"/>
      </side>
      <side type="top">
        <room name="ROOM4"/>
        <room name="ROOM7"/>
      </side>
      <side type="bottom"/>
    </room>
    <room name="ROOM7">
      <side type="left">
        <room name="ROOM4"/>
        <room name="ROOM5"/>
        <room name="ROOM7"/>
      </side>
      <side type="right">
        <room name="ROOM4"/>
        <room name="ROOM7"/>
      </side>
      <side type="top">
        <room name="ROOM4"/>
        <room name="ROOM7"/>
      </side>
      <side type="bottom">
        <room name="ROOM4"/>
        <room name="ROOM5"/>
        <room name="ROOM7"/>
      </side>
    </room>
  </matches>
</level>
		;

	}
}//package resources.levels 

****************

//TheAscent (resources.levels.TheAscent)
package resources.levels {

	public class TheAscent {

		public static const xml:XML = <level name="yo" rows="3" columns="2" horizontalRoomDivisions="45" verticalRoomDivisions="30">
  <room name="ROOM6" row="0" column="0">
    <element x="0" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="8" y="16" type="geometry">
      <vertex x="0" y="11"/>
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="11"/>
    </element>
    <element x="28" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="1" y="0"/>
      <vertex x="1" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="24" y="28" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="1" y="0"/>
      <vertex x="1" y="1"/>
      <vertex x="1" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="42" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="3"/>
      <vertex x="0" y="3"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="35" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="29" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="6" y="1"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="20" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="1"/>
      <vertex x="0" y="1"/>
    </element>
  </room>
  <room name="ROOM7" row="0" column="1">
    <element x="0" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="15" y="19" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="24" y="0"/>
      <vertex x="24" y="1"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="34" y="17" type="goal"/>
    <element x="35" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="24" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="1" y="0"/>
      <vertex x="1" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="28" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="1" y="0"/>
      <vertex x="1" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="20" y="5" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="13" y="0"/>
      <vertex x="13" y="1"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="22" y="4" type="pickup"/>
  </room>
  <room name="ROOM8" row="1" column="0">
    <element x="8" y="7" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="23"/>
      <vertex x="0" y="23"/>
    </element>
    <element x="0" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="8" y="0"/>
      <vertex x="8" y="3"/>
      <vertex x="0" y="3"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="20" y="28" type="geometry">
      <vertex x="0" y="2"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
    </element>
    <element x="10" y="7" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="15" y="9" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="20" y="11" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="25" y="13" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="30" y="15" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="35" y="17" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="40" y="19" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="35" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="42" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="15" y="11" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
    </element>
    <element x="20" y="13" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
    </element>
    <element x="25" y="15" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
    </element>
    <element x="30" y="17" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
    </element>
    <element x="35" y="19" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
    </element>
    <element x="10" y="9" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
    </element>
    <element x="28" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="1" y="0"/>
      <vertex x="1" y="2"/>
      <vertex x="1" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="24" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="1" y="0"/>
      <vertex x="1" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="2" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="2" y="18" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="8" y="2" type="geometry">
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="5"/>
    </element>
  </room>
  <room name="ROOM10" row="2" column="0">
    <element x="20" y="0" type="geometry">
      <vertex x="0" y="30"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="30"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="30" y="26" type="start"/>
    <element x="0" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="12" y="26" type="pickup"/>
    <element x="0" y="19" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="5" y="21" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="10" y="23" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="15" y="25" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="18" y="23" type="pickup"/>
    <element x="42" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="38" y="6" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="38" y="14" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="38" y="22" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="25" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="30" y="3" type="geometry">
      <vertex x="0" y="2"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
    </element>
  </room>
  <room name="ROOM11" row="2" column="1">
    <element x="0" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="3"/>
      <vertex x="0" y="3"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="3"/>
      <vertex x="0" y="3"/>
    </element>
  </room>
  <matches>
    <room name="ROOM6">
      <side type="left">
        <room name="ROOM6"/>
        <room name="ROOM7"/>
        <room name="ROOM10"/>
      </side>
      <side type="right">
        <room name="ROOM6"/>
        <room name="ROOM7"/>
        <room name="ROOM8"/>
        <room name="ROOM11"/>
      </side>
      <side type="top"/>
      <side type="bottom">
        <room name="ROOM7"/>
        <room name="ROOM8"/>
      </side>
    </room>
    <room name="ROOM7">
      <side type="left">
        <room name="ROOM6"/>
        <room name="ROOM7"/>
        <room name="ROOM10"/>
      </side>
      <side type="right">
        <room name="ROOM6"/>
        <room name="ROOM7"/>
        <room name="ROOM8"/>
        <room name="ROOM11"/>
      </side>
      <side type="top">
        <room name="ROOM6"/>
      </side>
      <side type="bottom"/>
    </room>
    <room name="ROOM8">
      <side type="left">
        <room name="ROOM6"/>
        <room name="ROOM7"/>
        <room name="ROOM10"/>
      </side>
      <side type="right">
        <room name="ROOM10"/>
      </side>
      <side type="top">
        <room name="ROOM6"/>
      </side>
      <side type="bottom">
        <room name="ROOM10"/>
      </side>
    </room>
    <room name="ROOM10">
      <side type="left">
        <room name="ROOM8"/>
      </side>
      <side type="right">
        <room name="ROOM6"/>
        <room name="ROOM7"/>
        <room name="ROOM8"/>
        <room name="ROOM11"/>
      </side>
      <side type="top">
        <room name="ROOM8"/>
      </side>
      <side type="bottom"/>
    </room>
    <room name="ROOM11">
      <side type="left">
        <room name="ROOM6"/>
        <room name="ROOM7"/>
        <room name="ROOM10"/>
      </side>
      <side type="right"/>
      <side type="top"/>
      <side type="bottom"/>
    </room>
  </matches>
</level>
		;

	}
}//package resources.levels 

****************

//ThereAndBackAgain (resources.levels.ThereAndBackAgain)
package resources.levels {

	public class ThereAndBackAgain {

		public static const xml:XML = <level name="yo" rows="3" columns="3" horizontalRoomDivisions="45" verticalRoomDivisions="30">
  <room name="ROOM9" row="0" column="0">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="0" y="6" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="6" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="30" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="39" y="6" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="6" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="24" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="0" y="18" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="6" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="30" y="24" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="39" y="18" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="6" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="10" y="15" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="12" y="13" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="14" y="11" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="16" y="9" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="18" y="7" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="27" y="9" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="29" y="11" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="31" y="13" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="33" y="15" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="22" y="11" type="start"/>
    <element x="8" y="17" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="6" y="19" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="35" y="17" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="37" y="19" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="8" y="19" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="10" y="17" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="12" y="15" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="14" y="13" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="16" y="11" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="18" y="9" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="25" y="9" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="2"/>
    </element>
    <element x="27" y="11" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="2"/>
    </element>
    <element x="29" y="13" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="2"/>
    </element>
    <element x="31" y="15" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="2"/>
    </element>
    <element x="33" y="17" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="2"/>
    </element>
    <element x="35" y="19" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="2"/>
    </element>
    <element x="25" y="7" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="42" y="16" type="goal"/>
    <element x="20" y="7" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="1" y="0"/>
      <vertex x="1" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="24" y="7" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="1" y="0"/>
      <vertex x="1" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="20" y="18" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="3" y="3"/>
      <vertex x="2" y="3"/>
    </element>
    <element x="21" y="7" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="6" y="21" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="37" y="21" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="3"/>
      <vertex x="0" y="3"/>
    </element>
  </room>
  <room name="ROOM10" row="0" column="1">
    <element x="0" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="20" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="25" y="24" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="30" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="35" y="24" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="40" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="0" y="6" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="6" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="40" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="36" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="5" y="24" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="10" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="15" y="24" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="6"/>
      <vertex x="0" y="6"/>
    </element>
  </room>
  <room name="ROOM12" row="1" column="0">
    <element x="40" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="11"/>
      <vertex x="0" y="11"/>
    </element>
    <element x="40" y="18" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="12"/>
      <vertex x="0" y="12"/>
    </element>
    <element x="35" y="28" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="30" y="23" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="7"/>
      <vertex x="0" y="7"/>
    </element>
    <element x="25" y="26" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="20" y="18" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="12"/>
      <vertex x="0" y="12"/>
    </element>
    <element x="15" y="21" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="9"/>
      <vertex x="0" y="9"/>
    </element>
    <element x="10" y="19" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="11"/>
      <vertex x="0" y="11"/>
    </element>
    <element x="5" y="23" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="7"/>
      <vertex x="0" y="7"/>
    </element>
    <element x="0" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="17" y="20" type="pickup"/>
  </room>
  <room name="ROOM13" row="1" column="1">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="0" y="11" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="3"/>
      <vertex x="0" y="3"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="25" y="11" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="3"/>
      <vertex x="1" y="3"/>
      <vertex x="0" y="3"/>
    </element>
  </room>
  <room name="ROOM14" row="1" column="2">
    <element x="40" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="35" y="23" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="7"/>
      <vertex x="0" y="7"/>
    </element>
    <element x="30" y="19" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="11"/>
      <vertex x="0" y="11"/>
    </element>
    <element x="25" y="21" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="8"/>
      <vertex x="5" y="9"/>
      <vertex x="0" y="9"/>
    </element>
    <element x="20" y="18" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="12"/>
      <vertex x="0" y="12"/>
    </element>
    <element x="15" y="26" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="10" y="23" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="7"/>
      <vertex x="0" y="7"/>
    </element>
    <element x="5" y="28" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="0" y="18" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="12"/>
      <vertex x="0" y="12"/>
    </element>
  </room>
  <room name="ROOM15" row="2" column="0">
    <element x="0" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="5" y="24" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="10" y="21" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="8"/>
      <vertex x="5" y="9"/>
      <vertex x="0" y="9"/>
    </element>
    <element x="15" y="18" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="12"/>
      <vertex x="0" y="12"/>
    </element>
    <element x="20" y="15" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="15"/>
      <vertex x="0" y="15"/>
    </element>
    <element x="25" y="12" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="18"/>
      <vertex x="0" y="18"/>
    </element>
    <element x="30" y="9" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="21"/>
      <vertex x="0" y="21"/>
    </element>
    <element x="35" y="6" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="24"/>
      <vertex x="0" y="24"/>
    </element>
    <element x="40" y="3" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="27"/>
      <vertex x="0" y="27"/>
    </element>
    <element x="43" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="25" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="0" y="10" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="9" y="0"/>
      <vertex x="9" y="2"/>
      <vertex x="0" y="2"/>
    </element>
    <element x="9" y="7" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="4"/>
      <vertex x="0" y="8"/>
    </element>
  </room>
  <room name="ROOM16" row="2" column="1">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="0" y="6" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="6" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="30" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="39" y="6" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="6" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="0" y="27" type="geometry">
      <vertex x="0" y="3"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
    </element>
    <element x="5" y="24" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="25" y="24" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="30" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="35" y="24" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="40" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="10" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="15" y="24" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="20" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
      <vertex x="0" y="3"/>
    </element>
  </room>
  <room name="ROOM17" row="2" column="2">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="5" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="10" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="9"/>
      <vertex x="0" y="9"/>
    </element>
    <element x="15" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="12"/>
      <vertex x="0" y="12"/>
    </element>
    <element x="20" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="15"/>
      <vertex x="0" y="15"/>
    </element>
    <element x="25" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="18"/>
      <vertex x="0" y="18"/>
    </element>
    <element x="30" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="21"/>
      <vertex x="0" y="21"/>
    </element>
    <element x="35" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="24"/>
      <vertex x="0" y="24"/>
    </element>
    <element x="40" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="27"/>
      <vertex x="0" y="27"/>
    </element>
    <element x="25" y="26" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="20" y="23" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="15" y="20" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="10" y="17" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="5" y="14" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="0" y="11" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="5" y="17" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
    </element>
    <element x="10" y="20" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
    </element>
    <element x="15" y="23" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
    </element>
    <element x="0" y="14" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
    </element>
    <element x="30" y="28" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="1"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="43" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="2" y="0"/>
      <vertex x="2" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="25" y="29" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="1"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="20" y="26" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
    </element>
  </room>
  <matches>
    <room name="ROOM9">
      <side type="left">
        <room name="ROOM9"/>
        <room name="ROOM12"/>
      </side>
      <side type="right">
        <room name="ROOM9"/>
      </side>
      <side type="top">
        <room name="ROOM9"/>
      </side>
      <side type="bottom">
        <room name="ROOM9"/>
        <room name="ROOM16"/>
      </side>
    </room>
    <room name="ROOM10">
      <side type="left">
        <room name="ROOM16"/>
      </side>
      <side type="right">
        <room name="ROOM15"/>
      </side>
      <side type="top"/>
      <side type="bottom">
        <room name="ROOM13"/>
        <room name="ROOM17"/>
      </side>
    </room>
    <room name="ROOM12">
      <side type="left">
        <room name="ROOM14"/>
      </side>
      <side type="right">
        <room name="ROOM9"/>
      </side>
      <side type="top"/>
      <side type="bottom">
        <room name="ROOM13"/>
        <room name="ROOM17"/>
      </side>
    </room>
    <room name="ROOM13">
      <side type="left">
        <room name="ROOM13"/>
      </side>
      <side type="right">
        <room name="ROOM13"/>
        <room name="ROOM17"/>
      </side>
      <side type="top">
        <room name="ROOM10"/>
        <room name="ROOM12"/>
        <room name="ROOM14"/>
        <room name="ROOM15"/>
        <room name="ROOM16"/>
      </side>
      <side type="bottom">
        <room name="ROOM14"/>
      </side>
    </room>
    <room name="ROOM14">
      <side type="left"/>
      <side type="right">
        <room name="ROOM12"/>
      </side>
      <side type="top">
        <room name="ROOM13"/>
      </side>
      <side type="bottom">
        <room name="ROOM13"/>
        <room name="ROOM17"/>
      </side>
    </room>
    <room name="ROOM15">
      <side type="left">
        <room name="ROOM10"/>
      </side>
      <side type="right"/>
      <side type="top">
        <room name="ROOM17"/>
      </side>
      <side type="bottom">
        <room name="ROOM13"/>
        <room name="ROOM17"/>
      </side>
    </room>
    <room name="ROOM16">
      <side type="left">
        <room name="ROOM16"/>
      </side>
      <side type="right">
        <room name="ROOM10"/>
        <room name="ROOM16"/>
      </side>
      <side type="top">
        <room name="ROOM9"/>
      </side>
      <side type="bottom">
        <room name="ROOM13"/>
        <room name="ROOM17"/>
      </side>
    </room>
    <room name="ROOM17">
      <side type="left">
        <room name="ROOM13"/>
      </side>
      <side type="right"/>
      <side type="top">
        <room name="ROOM10"/>
        <room name="ROOM12"/>
        <room name="ROOM14"/>
        <room name="ROOM15"/>
        <room name="ROOM16"/>
      </side>
      <side type="bottom">
        <room name="ROOM15"/>
      </side>
    </room>
  </matches>
</level>
		;

	}
}//package resources.levels 

****************

//TwoKeyLevel (resources.levels.TwoKeyLevel)
package resources.levels {

	public class TwoKeyLevel {

		public static const xml:XML = <level name="yo" rows="2" columns="2" horizontalRoomDivisions="45" verticalRoomDivisions="30">
  <room name="ROOM4" row="0" column="0">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="30"/>
      <vertex x="0" y="30"/>
    </element>
    <element x="41" y="4" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="26"/>
      <vertex x="0" y="26"/>
    </element>
    <element x="4" y="20" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="37" y="0"/>
      <vertex x="37" y="10"/>
      <vertex x="0" y="10"/>
    </element>
    <element x="22" y="18" type="goal"/>
    <element x="17" y="19" type="pickup"/>
    <element x="39" y="19" type="pickup"/>
    <element x="7" y="19" type="start"/>
    <element x="4" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="41" y="0"/>
      <vertex x="41" y="9"/>
      <vertex x="0" y="9"/>
    </element>
    <element x="20" y="9" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="8"/>
      <vertex x="0" y="8"/>
    </element>
  </room>
  <room name="ROOM5" row="0" column="1">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="5"/>
      <vertex x="0" y="5"/>
      <vertex x="0" y="1"/>
    </element>
    <element x="40" y="5" type="geometry">
      <vertex x="5" y="0"/>
      <vertex x="5" y="25"/>
      <vertex x="0" y="25"/>
      <vertex x="0" y="0"/>
    </element>
    <element x="0" y="5" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="25"/>
      <vertex x="0" y="25"/>
    </element>
    <element x="5" y="20" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="35" y="0"/>
      <vertex x="35" y="10"/>
      <vertex x="0" y="10"/>
    </element>
  </room>
  <room name="ROOM6" row="1" column="0">
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="30"/>
      <vertex x="0" y="30"/>
    </element>
    <element x="5" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="40" y="0"/>
      <vertex x="40" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="40" y="5" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="25"/>
      <vertex x="0" y="25"/>
    </element>
    <element x="5" y="20" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="35" y="0"/>
      <vertex x="35" y="10"/>
      <vertex x="0" y="10"/>
    </element>
  </room>
  <matches>
    <room name="ROOM4">
      <side type="left">
        <room name="ROOM4"/>
        <room name="ROOM5"/>
        <room name="ROOM6"/>
      </side>
      <side type="right">
        <room name="ROOM4"/>
        <room name="ROOM5"/>
        <room name="ROOM6"/>
      </side>
      <side type="top">
        <room name="ROOM4"/>
        <room name="ROOM5"/>
        <room name="ROOM6"/>
      </side>
      <side type="bottom">
        <room name="ROOM4"/>
        <room name="ROOM5"/>
        <room name="ROOM6"/>
      </side>
    </room>
    <room name="ROOM5">
      <side type="left">
        <room name="ROOM4"/>
        <room name="ROOM5"/>
        <room name="ROOM6"/>
      </side>
      <side type="right">
        <room name="ROOM4"/>
        <room name="ROOM5"/>
        <room name="ROOM6"/>
      </side>
      <side type="top">
        <room name="ROOM4"/>
        <room name="ROOM5"/>
        <room name="ROOM6"/>
      </side>
      <side type="bottom">
        <room name="ROOM4"/>
        <room name="ROOM5"/>
        <room name="ROOM6"/>
      </side>
    </room>
    <room name="ROOM6">
      <side type="left">
        <room name="ROOM4"/>
        <room name="ROOM5"/>
        <room name="ROOM6"/>
      </side>
      <side type="right">
        <room name="ROOM4"/>
        <room name="ROOM5"/>
        <room name="ROOM6"/>
      </side>
      <side type="top">
        <room name="ROOM4"/>
        <room name="ROOM5"/>
        <room name="ROOM6"/>
      </side>
      <side type="bottom">
        <room name="ROOM4"/>
        <room name="ROOM5"/>
        <room name="ROOM6"/>
      </side>
    </room>
  </matches>
</level>
		;

	}
}//package resources.levels 

****************

//WideningDrop (resources.levels.WideningDrop)
package resources.levels {

	public class WideningDrop {

		public static const xml:XML = <level name="yo" rows="3" columns="2" horizontalRoomDivisions="45" verticalRoomDivisions="30">
  <room name="ROOM6" row="0" column="0">
    <element x="40" y="15" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="9"/>
      <vertex x="0" y="9"/>
    </element>
    <element x="35" y="18" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="30" y="21" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="0" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="45" y="0"/>
      <vertex x="45" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="30" y="0" type="geometry">
      <vertex x="0" y="11"/>
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="11"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="15" y="0"/>
      <vertex x="15" y="9"/>
      <vertex x="0" y="9"/>
      <vertex x="0" y="0"/>
    </element>
    <element x="0" y="13" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="8"/>
      <vertex x="0" y="8"/>
    </element>
    <element x="10" y="21" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="6"/>
      <vertex x="0" y="6"/>
    </element>
  </room>
  <room name="ROOM8" row="1" column="0">
    <element x="0" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="43" y="25" type="pickup"/>
    <element x="38" y="18" type="geometry">
      <vertex x="3" y="0"/>
      <vertex x="3" y="9"/>
      <vertex x="0" y="9"/>
      <vertex x="0" y="0"/>
    </element>
    <element x="38" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="7" y="0"/>
      <vertex x="7" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="19" y="27" type="geometry">
      <vertex x="0" y="3"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
    </element>
    <element x="24" y="24" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="15" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="35" y="0" type="geometry">
      <vertex x="0" y="3"/>
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="3"/>
    </element>
    <element x="38" y="13" type="geometry">
      <vertex x="7" y="0"/>
      <vertex x="7" y="8"/>
      <vertex x="0" y="8"/>
      <vertex x="0" y="0"/>
    </element>
    <element x="0" y="13" type="geometry">
      <vertex x="38" y="0"/>
      <vertex x="38" y="4"/>
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
    </element>
    <element x="5" y="17" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="13"/>
      <vertex x="0" y="13"/>
    </element>
    <element x="39" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="6" y="9"/>
      <vertex x="0" y="9"/>
    </element>
    <element x="25" y="3" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="14" y="0"/>
      <vertex x="14" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="0" y="17" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="29" y="22" type="pickup"/>
    <element x="30" y="11" type="goal"/>
    <element x="15" y="12" type="start"/>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="6"/>
      <vertex x="0" y="6"/>
    </element>
    <element x="0" y="6" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="3"/>
      <vertex x="0" y="3"/>
    </element>
  </room>
  <room name="ROOM9" row="1" column="1">
    <element x="25" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="12"/>
      <vertex x="0" y="12"/>
    </element>
    <element x="30" y="12" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="18"/>
      <vertex x="0" y="18"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="12"/>
      <vertex x="0" y="12"/>
    </element>
    <element x="0" y="12" type="geometry">
      <vertex x="15" y="0"/>
      <vertex x="15" y="18"/>
      <vertex x="0" y="18"/>
      <vertex x="0" y="0"/>
    </element>
  </room>
  <room name="ROOM10" row="2" column="0">
    <element x="0" y="15" type="geometry">
      <vertex x="0" y="9"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="9"/>
    </element>
    <element x="30" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="15" y="0"/>
      <vertex x="15" y="5"/>
      <vertex x="0" y="5"/>
      <vertex x="0" y="0"/>
    </element>
    <element x="0" y="5" type="geometry">
      <vertex x="10" y="0"/>
      <vertex x="10" y="6"/>
      <vertex x="0" y="6"/>
      <vertex x="0" y="0"/>
    </element>
    <element x="0" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="25" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="20" y="0"/>
      <vertex x="20" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="35" y="5" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="20" y="13" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="25" y="0"/>
      <vertex x="25" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="35" y="17" type="geometry">
      <vertex x="0" y="4"/>
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="4"/>
    </element>
  </room>
  <room name="ROOM11" row="2" column="1">
    <element x="0" y="15" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="9"/>
      <vertex x="0" y="9"/>
    </element>
    <element x="0" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="5" y="24" type="geometry">
      <vertex x="0" y="3"/>
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="3"/>
    </element>
    <element x="15" y="11" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="19"/>
      <vertex x="0" y="19"/>
    </element>
    <element x="10" y="3" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="5"/>
      <vertex x="0" y="5"/>
    </element>
    <element x="0" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="11"/>
      <vertex x="0" y="11"/>
    </element>
    <element x="10" y="8" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="19" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="15" y="0"/>
      <vertex x="15" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="38" y="0" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="7" y="0"/>
      <vertex x="7" y="11"/>
      <vertex x="0" y="11"/>
    </element>
    <element x="31" y="3" type="geometry">
      <vertex x="3" y="0"/>
      <vertex x="3" y="12"/>
      <vertex x="0" y="12"/>
      <vertex x="0" y="0"/>
    </element>
    <element x="31" y="15" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="14" y="0"/>
      <vertex x="14" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="39" y="18" type="geometry">
      <vertex x="6" y="6"/>
      <vertex x="0" y="6"/>
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
    </element>
    <element x="39" y="24" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="3" y="0"/>
      <vertex x="3" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="39" y="27" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="6" y="3"/>
      <vertex x="0" y="3"/>
    </element>
    <element x="35" y="27" type="geometry">
      <vertex x="0" y="3"/>
      <vertex x="0" y="0"/>
      <vertex x="4" y="0"/>
      <vertex x="4" y="3"/>
    </element>
    <element x="20" y="19" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="5" y="0"/>
      <vertex x="5" y="4"/>
      <vertex x="0" y="4"/>
    </element>
    <element x="25" y="13" type="geometry">
      <vertex x="0" y="2"/>
      <vertex x="0" y="0"/>
      <vertex x="6" y="0"/>
      <vertex x="6" y="2"/>
    </element>
    <element x="20" y="23" type="geometry">
      <vertex x="0" y="0"/>
      <vertex x="10" y="0"/>
      <vertex x="10" y="3"/>
      <vertex x="0" y="3"/>
    </element>
  </room>
  <matches>
    <room name="ROOM6">
      <side type="left">
        <room name="ROOM8"/>
        <room name="ROOM10"/>
      </side>
      <side type="right">
        <room name="ROOM10"/>
        <room name="ROOM11"/>
      </side>
      <side type="top">
        <room name="ROOM9"/>
      </side>
      <side type="bottom"/>
    </room>
    <room name="ROOM8">
      <side type="left">
        <room name="ROOM8"/>
        <room name="ROOM10"/>
      </side>
      <side type="right">
        <room name="ROOM6"/>
        <room name="ROOM8"/>
      </side>
      <side type="top">
        <room name="ROOM11"/>
      </side>
      <side type="bottom">
        <room name="ROOM11"/>
      </side>
    </room>
    <room name="ROOM9">
      <side type="left">
        <room name="ROOM9"/>
      </side>
      <side type="right">
        <room name="ROOM9"/>
      </side>
      <side type="top">
        <room name="ROOM10"/>
      </side>
      <side type="bottom">
        <room name="ROOM6"/>
        <room name="ROOM10"/>
      </side>
    </room>
    <room name="ROOM10">
      <side type="left">
        <room name="ROOM6"/>
        <room name="ROOM11"/>
      </side>
      <side type="right">
        <room name="ROOM6"/>
        <room name="ROOM8"/>
      </side>
      <side type="top">
        <room name="ROOM9"/>
      </side>
      <side type="bottom">
        <room name="ROOM9"/>
      </side>
    </room>
    <room name="ROOM11">
      <side type="left">
        <room name="ROOM6"/>
        <room name="ROOM11"/>
      </side>
      <side type="right">
        <room name="ROOM10"/>
        <room name="ROOM11"/>
      </side>
      <side type="top">
        <room name="ROOM8"/>
      </side>
      <side type="bottom">
        <room name="ROOM8"/>
      </side>
    </room>
  </matches>
</level>
		;

	}
}//package resources.levels 

****************

//Sounds (resources.sounds.Sounds)
package resources.sounds {

	public class Sounds {

		public static var OuterWorldMusic:Class = Sounds_OuterWorldMusic;
		public static var LevelCompletedSound:Class = Sounds_LevelCompletedSound;
		public static var InnerWorldMusic:Class = Sounds_InnerWorldMusic;
		public static var PickupSound:Class = Sounds_PickupSound;
		public static var BorderCollSound:Class = Sounds_BorderCollSound;
		public static var EndGameMusic:Class = Sounds_EndGameMusic;
		public static var DeathSound:Class = Sounds_DeathSound;
		public static var FailMoveSound:Class = Sounds_FailMoveSound;
		public static var JumpSound:Class = Sounds_JumpSound;
		public static var RespawnSound:Class = Sounds_RespawnSound;
		public static var LandSound1:Class = Sounds_LandSound1;
		public static var LandSound2:Class = Sounds_LandSound2;
		public static var LandSound3:Class = Sounds_LandSound3;
		public static var ZoomSound:Class = Sounds_ZoomSound;
		public static var CardMoveSound:Class = Sounds_CardMoveSound;
		public static var DoorLockedSound:Class = Sounds_DoorLockedSound;
		public static var AllKeysSound:Class = Sounds_AllKeysSound;

	}
}//package resources.sounds 

****************

//Sounds_AllKeysSound (resources.sounds.Sounds_AllKeysSound)
package resources.sounds {
	import mx.core.*;

	public class Sounds_AllKeysSound extends SoundAsset {

	}
}//package resources.sounds 

****************

//Sounds_BorderCollSound (resources.sounds.Sounds_BorderCollSound)
package resources.sounds {
	import mx.core.*;

	public class Sounds_BorderCollSound extends SoundAsset {

	}
}//package resources.sounds 

****************

//Sounds_CardMoveSound (resources.sounds.Sounds_CardMoveSound)
package resources.sounds {
	import mx.core.*;

	public class Sounds_CardMoveSound extends SoundAsset {

	}
}//package resources.sounds 

****************

//Sounds_DeathSound (resources.sounds.Sounds_DeathSound)
package resources.sounds {
	import mx.core.*;

	public class Sounds_DeathSound extends SoundAsset {

	}
}//package resources.sounds 

****************

//Sounds_DoorLockedSound (resources.sounds.Sounds_DoorLockedSound)
package resources.sounds {
	import mx.core.*;

	public class Sounds_DoorLockedSound extends SoundAsset {

	}
}//package resources.sounds 

****************

//Sounds_EndGameMusic (resources.sounds.Sounds_EndGameMusic)
package resources.sounds {
	import mx.core.*;

	public class Sounds_EndGameMusic extends SoundAsset {

	}
}//package resources.sounds 

****************

//Sounds_FailMoveSound (resources.sounds.Sounds_FailMoveSound)
package resources.sounds {
	import mx.core.*;

	public class Sounds_FailMoveSound extends SoundAsset {

	}
}//package resources.sounds 

****************

//Sounds_InnerWorldMusic (resources.sounds.Sounds_InnerWorldMusic)
package resources.sounds {
	import mx.core.*;

	public class Sounds_InnerWorldMusic extends SoundAsset {

	}
}//package resources.sounds 

****************

//Sounds_JumpSound (resources.sounds.Sounds_JumpSound)
package resources.sounds {
	import mx.core.*;

	public class Sounds_JumpSound extends SoundAsset {

	}
}//package resources.sounds 

****************

//Sounds_LandSound1 (resources.sounds.Sounds_LandSound1)
package resources.sounds {
	import mx.core.*;

	public class Sounds_LandSound1 extends SoundAsset {

	}
}//package resources.sounds 

****************

//Sounds_LandSound2 (resources.sounds.Sounds_LandSound2)
package resources.sounds {
	import mx.core.*;

	public class Sounds_LandSound2 extends SoundAsset {

	}
}//package resources.sounds 

****************

//Sounds_LandSound3 (resources.sounds.Sounds_LandSound3)
package resources.sounds {
	import mx.core.*;

	public class Sounds_LandSound3 extends SoundAsset {

	}
}//package resources.sounds 

****************

//Sounds_LevelCompletedSound (resources.sounds.Sounds_LevelCompletedSound)
package resources.sounds {
	import mx.core.*;

	public class Sounds_LevelCompletedSound extends SoundAsset {

	}
}//package resources.sounds 

****************

//Sounds_OuterWorldMusic (resources.sounds.Sounds_OuterWorldMusic)
package resources.sounds {
	import mx.core.*;

	public class Sounds_OuterWorldMusic extends SoundAsset {

	}
}//package resources.sounds 

****************

//Sounds_PickupSound (resources.sounds.Sounds_PickupSound)
package resources.sounds {
	import mx.core.*;

	public class Sounds_PickupSound extends SoundAsset {

	}
}//package resources.sounds 

****************

//Sounds_RespawnSound (resources.sounds.Sounds_RespawnSound)
package resources.sounds {
	import mx.core.*;

	public class Sounds_RespawnSound extends SoundAsset {

	}
}//package resources.sounds 

****************

//Sounds_ZoomSound (resources.sounds.Sounds_ZoomSound)
package resources.sounds {
	import mx.core.*;

	public class Sounds_ZoomSound extends SoundAsset {

	}
}//package resources.sounds 

****************

//StolenSprite (resources.StolenSprite)
package resources {
	import mx.core.*;
	import flash.events.*;
	import flash.display.*;
	import flash.text.*;
	import flash.net.*;

	public class StolenSprite extends Sprite {

		public function StolenSprite(){
			var _local1:TextField = new TextField();
			_local1.text = ("Play Continuity at " + SiteLock.siteName);
			var _local2:TextFormat = new TextFormat();
			_local2.font = "Arial";
			_local2.align = "center";
			_local2.bold = "true";
			_local2.color = 0xFFFFFF;
			_local2.size = 20;
			_local1.width = Application.application.width;
			_local1.setTextFormat(_local2);
			_local1.y = 200;
			graphics.beginFill(0, 1);
			graphics.drawRect(0, 0, Application.application.width, Application.application.height);
			graphics.endFill();
			addChild(_local1);
			addEventListener(Event.ADDED_TO_STAGE, directToURL);
			addEventListener(MouseEvent.MOUSE_DOWN, directToURL);
			super();
		}
		private function directToURL(_arg1:Event):void{
			navigateToURL(new URLRequest(SiteLock.URL), "_blank");
		}

	}
}//package resources 

****************

//AnimationAspect (TDA.aspects.AnimationAspect)
package TDA.aspects {
	import flash.display.*;
	import TDA.entities.*;

	public class AnimationAspect extends Aspect {

		private var mMovie:MovieClip;

		public static const NAME:String = "AnimationAspect";

		public function AnimationAspect(_arg1:Entity, _arg2:MovieClip){
			mMovie = _arg2;
			super(_arg1);
		}
		public function get movieClip():MovieClip{
			return (mMovie);
		}
		public function set movieClip(_arg1:MovieClip):void{
			mMovie = _arg1;
		}
		override public function get aspectName():String{
			return (NAME);
		}

	}
}//package TDA.aspects 

****************

//Aspect (TDA.aspects.Aspect)
package TDA.aspects {
	import TDA.entities.*;

	public class Aspect implements IAspect {

		private var mParent:Entity;

		public static const NAME:String = "Aspect";

		public function Aspect(_arg1:Entity){
			mParent = _arg1;
		}
		public function get aspectName():String{
			return (NAME);
		}
		public function get parentEntity():Entity{
			return (mParent);
		}
		public function set parentEntity(_arg1:Entity):void{
			mParent = _arg1;
		}

	}
}//package TDA.aspects 

****************

//BehaviorAspect (TDA.aspects.BehaviorAspect)
package TDA.aspects {
	import TDA.entities.*;
	import TDA.systems.gamelogic.entitylogic.behaviors.*;

	public class BehaviorAspect extends Aspect {

		private var mBehaviors:Array;

		public static const NAME:String = "BehaviorAspect";

		public function BehaviorAspect(_arg1:Entity){
			mBehaviors = new Array();
			super(_arg1);
		}
		public function get behaviors():Array{
			return (mBehaviors);
		}
		override public function get aspectName():String{
			return (NAME);
		}
		public function removeBehavior(_arg1:Behavior):void{
		}
		public function addBehavior(_arg1:Behavior):void{
			mBehaviors.push(_arg1);
		}

	}
}//package TDA.aspects 

****************

//IAspect (TDA.aspects.IAspect)
package TDA.aspects {
	import TDA.entities.*;

	public interface IAspect {

		function set parentEntity(_arg1:Entity):void;
		function get aspectName():String;
		function get parentEntity():Entity;

	}
}//package TDA.aspects 

****************

//JointPhysicsAspect (TDA.aspects.JointPhysicsAspect)
package TDA.aspects {
	import TDA.entities.*;
	import Box2D.Dynamics.Joints.*;

	public class JointPhysicsAspect extends Aspect {

		protected var mEntity1:PhysicsEntity;
		protected var mJointDef:b2JointDef;
		protected var mEntity2:PhysicsEntity;

		public static const NAME:String = "JointPhysicsAspect";

		public function JointPhysicsAspect(_arg1:Entity){
			mJointDef = new b2JointDef();
			super(_arg1);
		}
		override public function get aspectName():String{
			return (NAME);
		}
		public function get collideConnected():Boolean{
			return (mJointDef.collideConnected);
		}
		public function internalInitialize():void{
		}
		public function set collideConnected(_arg1:Boolean):void{
			mJointDef.collideConnected = _arg1;
		}
		public function GetEntity1():PhysicsEntity{
			return (mEntity1);
		}
		public function GetEntity2():PhysicsEntity{
			return (mEntity2);
		}
		public function get jointDef():b2JointDef{
			return (mJointDef);
		}

	}
}//package TDA.aspects 

****************

//PhysicsAspect (TDA.aspects.PhysicsAspect)
package TDA.aspects {
	import TDA.math.*;
	import TDA.events.*;
	import flash.utils.*;
	import TDA.entities.*;
	import Box2D.Collision.Shapes.*;
	import Box2D.Dynamics.*;
	import Box2D.Common.Math.*;

	public class PhysicsAspect extends Aspect {

		protected var mB2Body:b2Body;
		protected var mShapeDef:b2ShapeDef;
		protected var mAdditionalShapeDefs:Dictionary;
		private var mInitializeAsStatic:Boolean;
		protected var mBodyDef:b2BodyDef;

		public static const NAME:String = "PhysicsAspect";

		public function PhysicsAspect(_arg1:Entity, _arg2:b2ShapeDef){
			mBodyDef = new b2BodyDef();
			mAdditionalShapeDefs = new Dictionary();
			mShapeDef = _arg2;
			super(_arg1);
		}
		public function set angularDamping(_arg1:Number):void{
			mBodyDef.angularDamping = _arg1;
		}
		public function get friction():Number{
			return (mShapeDef.friction);
		}
		override public function get aspectName():String{
			return (NAME);
		}
		public function get isSensor():Boolean{
			return (mShapeDef.isSensor);
		}
		public function set isSensor(_arg1:Boolean):void{
			var _local2:b2ShapeDef;
			var _local3:b2Shape;
			var _local4:RefilterPhysicsAspectEvent;
			if (_arg1 != mShapeDef.isSensor){
				if (((!((mB2Body == null))) && (!((mB2Body.GetShapeList() == null))))){
					_local3 = mB2Body.GetShapeList();
					while (_local3) {
						_local3.m_isSensor = _arg1;
						_local3 = _local3.GetNext();
					};
					_local4 = new RefilterPhysicsAspectEvent(RefilterPhysicsAspectEvent.SENSOR_CHANGED, this);
					EventManager.instance.dispatchEvent(_local4);
				};
				mShapeDef.isSensor = _arg1;
				for each (_local2 in mAdditionalShapeDefs) {
					_local2.isSensor = _arg1;
				};
			};
		}
		public function setAdditionalShapeFriction(_arg1:String, _arg2:Number):void{
			b2ShapeDef(mAdditionalShapeDefs[_arg1]).friction = _arg2;
		}
		public function allowSleeping(_arg1:Boolean):void{
			if (mB2Body == null){
				mBodyDef.allowSleep = _arg1;
			} else {
				mB2Body.AllowSleeping(_arg1);
			};
		}
		public function applyTorque(_arg1:Number):void{
			mB2Body.ApplyTorque(_arg1);
		}
		public function get fixedRotation():Boolean{
			return (mBodyDef.fixedRotation);
		}
		public function createShapeFromPolygonDef():void{
			var _local1:b2ShapeDef;
			mB2Body.CreateShape(mShapeDef);
			for each (_local1 in mAdditionalShapeDefs) {
				if (_local1 != null){
					mB2Body.CreateShape(_local1);
				};
			};
		}
		public function get bodyDef():b2BodyDef{
			return (mBodyDef);
		}
		public function get linearDamping():Number{
			return (mBodyDef.linearDamping);
		}
		public function getAdditionalShapeFriction(_arg1:String):Number{
			return (b2ShapeDef(mAdditionalShapeDefs[_arg1]).friction);
		}
		public function setXForm(_arg1:Vector2D, _arg2:Number):Boolean{
			return (mB2Body.SetXForm(new b2Vec2(_arg1.x, _arg1.y), _arg2));
		}
		public function get linearVelocity():Vector2D{
			var _local1:b2Vec2 = mB2Body.GetLinearVelocity();
			return (new Vector2D(_local1.x, _local1.y));
		}
		public function set fixedRotation(_arg1:Boolean):void{
			mBodyDef.fixedRotation = _arg1;
		}
		public function applyImpulse(_arg1:Vector2D, _arg2:Vector2D):void{
			mB2Body.ApplyImpulse(new b2Vec2(_arg1.x, _arg1.y), new b2Vec2(_arg2.x, _arg2.y));
		}
		public function set setB2Body(_arg1:b2Body):void{
			mB2Body = _arg1;
		}
		function get body():b2Body{
			return (mB2Body);
		}
		public function get position():Vector2D{
			var _local1:b2Vec2 = mB2Body.GetPosition();
			return (new Vector2D(_local1.x, _local1.y));
		}
		public function get worldCenterX():int{
			return (mB2Body.GetWorldCenter().x);
		}
		public function get worldCenterY():int{
			return (mB2Body.GetWorldCenter().y);
		}
		public function applyForce(_arg1:Vector2D, _arg2:Vector2D):void{
			mB2Body.ApplyForce(new b2Vec2(_arg1.x, _arg1.y), new b2Vec2(_arg2.x, _arg2.y));
		}
		public function get localCenterY():int{
			return (mB2Body.GetLocalCenter().y);
		}
		public function set linearDamping(_arg1:Number):void{
			mBodyDef.linearDamping = _arg1;
		}
		public function get localCenterX():int{
			return (mB2Body.GetLocalCenter().x);
		}
		public function get angularDamping():Number{
			return (mBodyDef.angularDamping);
		}
		public function getAdditionalShapeDensity(_arg1:String):Number{
			return (b2ShapeDef(mAdditionalShapeDefs[_arg1]).density);
		}
		public function getAdditionalShapeRestitution(_arg1:String):Number{
			return (b2ShapeDef(mAdditionalShapeDefs[_arg1]).restitution);
		}
		public function get isStatic():Boolean{
			return (mB2Body.IsStatic());
		}
		public function set linearVelocity(_arg1:Vector2D):void{
			var _local2:b2Vec2;
			_local2 = new b2Vec2();
			_local2.x = _arg1.x;
			_local2.y = _arg1.y;
			mB2Body.SetLinearVelocity(_local2);
		}
		public function set density(_arg1:Number):void{
			mShapeDef.density = _arg1;
		}
		public function setAdditionalShapeRestitution(_arg1:String, _arg2:Number):void{
			b2ShapeDef(mAdditionalShapeDefs[_arg1]).restitution = _arg2;
		}
		public function get angle():Number{
			return (mB2Body.GetAngle());
		}
		public function set restitution(_arg1:Number):void{
			mShapeDef.restitution = _arg1;
		}
		public function setAdditionalShapeDensity(_arg1:String, _arg2:Number):void{
			b2ShapeDef(mAdditionalShapeDefs[_arg1]).density = _arg2;
		}
		public function setMassFromShapes():void{
			mB2Body.SetMassFromShapes();
		}
		public function AdditionalShapeFromVerts(_arg1:String, _arg2:Array, _arg3:Number=0, _arg4:Number=0.2, _arg5:Number=0, _arg6:Boolean=false):void{
			var _local7:b2PolygonDef = new b2PolygonDef();
			_local7.vertexCount = _arg2.length;
			var _local8:int = _arg2.length;
			var _local9:int;
			while (_local9 < _local8) {
				b2Vec2(_local7.vertices[_local9]).Set(_arg2[_local9].x, _arg2[_local9].y);
				_local9++;
			};
			_local7.density = _arg3;
			_local7.friction = _arg4;
			_local7.restitution = _arg5;
			_local7.isSensor = _arg6;
			mAdditionalShapeDefs[_arg1] = _local7;
		}
		public function get angularVelocity():Number{
			return (mB2Body.GetAngularVelocity());
		}
		public function get shapeList():b2Shape{
			return (mB2Body.GetShapeList());
		}
		public function get density():Number{
			return (mShapeDef.density);
		}
		public function setStartPosition(_arg1:Number, _arg2:Number):void{
			mBodyDef.position.Set(_arg1, _arg2);
		}
		public function get restitution():Number{
			return (mShapeDef.restitution);
		}
		public function wakeUp():void{
			mB2Body.WakeUp();
		}
		public function get initializeAsStatic():Boolean{
			return (mInitializeAsStatic);
		}
		public function set friction(_arg1:Number):void{
			mShapeDef.friction = _arg1;
		}
		public function set isStatic(_arg1:Boolean):void{
			var _local2:b2MassData;
			if (mB2Body != null){
				if (_arg1){
					_local2 = new b2MassData();
					_local2.center.SetZero();
					_local2.mass = 0;
					_local2.I = 0;
					mB2Body.SetMass(_local2);
				} else {
					mB2Body.SetMassFromShapes();
				};
			} else {
				mInitializeAsStatic = _arg1;
			};
		}
		public function get mass():Number{
			return (mB2Body.GetMass());
		}
		public function AdditionalCircle(_arg1:String, _arg2:Vector2D, _arg3:Number, _arg4:Number=0, _arg5:Number=0.2, _arg6:Number=0, _arg7:Boolean=false):void{
			var _local8:b2CircleDef = new b2CircleDef();
			_local8.localPosition.x = _arg2.x;
			_local8.localPosition.y = _arg2.y;
			_local8.radius = _arg3;
			_local8.density = _arg4;
			_local8.friction = _arg5;
			_local8.restitution = _arg6;
			_local8.isSensor = _arg7;
			mAdditionalShapeDefs[_arg1] = _local8;
		}

	}
}//package TDA.aspects 

****************

//PolygonPhysicsAspect (TDA.aspects.PolygonPhysicsAspect)
package TDA.aspects {
	import TDA.math.*;
	import TDA.entities.*;
	import Box2D.Collision.Shapes.*;

	public class PolygonPhysicsAspect extends PhysicsAspect {

		public static const NAME:String = "PhysicsAspect";

		public function PolygonPhysicsAspect(_arg1:Entity){
			super(_arg1, new b2PolygonDef());
		}
		public function setVertices(_arg1:Array, _arg2:int):void{
			b2PolygonDef(mShapeDef).vertexCount = _arg2;
			var _local3:int = _arg1.length;
			var _local4:int;
			while (_local4 < _local3) {
				b2PolygonDef(mShapeDef).vertices[_local4].Set(Vector2D(_arg1[_local4]).x, Vector2D(_arg1[_local4]).y);
				_local4++;
			};
		}
		override public function get aspectName():String{
			return (NAME);
		}

	}
}//package TDA.aspects 

****************

//WorldObjectAspect (TDA.aspects.WorldObjectAspect)
package TDA.aspects {
	import flash.display.*;
	import TDA.entities.*;

	public class WorldObjectAspect extends Sprite implements IAspect {

		private var mCurrentRoom:Room;
		private var mParentEntity:Entity;

		public static const NAME:String = "WorldObjectAspect";

		public function WorldObjectAspect(_arg1:Entity){
			mParentEntity = _arg1;
			super();
			mouseEnabled = false;
		}
		public function set currentRoom(_arg1:Room):void{
			mCurrentRoom = _arg1;
		}
		public function get aspectName():String{
			return (NAME);
		}
		public function get parentEntity():Entity{
			return (mParentEntity);
		}
		public function set parentEntity(_arg1:Entity):void{
			mParentEntity = _arg1;
		}
		public function get currentRoom():Room{
			return (mCurrentRoom);
		}

	}
}//package TDA.aspects 

****************

//TDASound (TDA.audio.TDASound)
package TDA.audio {
	import flash.events.*;
	import flash.media.*;

	public class TDASound {

		private var mSound:Sound;
		private var mChannel:SoundChannel;
		private var mIsPlaying:Boolean;// = false
		private var mTransform:SoundTransform;

		public function TDASound(_arg1:Sound, _arg2:Number=0, _arg3:Number=0.5){
			mSound = (_arg1 as Sound);
			mTransform = new SoundTransform(_arg2, _arg3);
		}
		private function soundComplete(_arg1:Event):void{
			mIsPlaying = false;
		}
		public function set panning(_arg1:Number):void{
			mTransform.pan = _arg1;
			mChannel.soundTransform = mTransform;
		}
		public function get isPlaying():Boolean{
			return (mIsPlaying);
		}
		public function stop():void{
			if (mChannel != null){
				mChannel.stop();
			};
			mIsPlaying = false;
		}
		public function get panning():Number{
			return (mChannel.soundTransform.pan);
		}
		public function set volume(_arg1:Number):void{
			mTransform.volume = _arg1;
			mChannel.soundTransform = mTransform;
		}
		public function get volume():Number{
			return (mTransform.volume);
		}
		public function play(_arg1:Number=0, _arg2:int=0):void{
			if (mChannel != null){
				mChannel.removeEventListener(Event.SOUND_COMPLETE, soundComplete);
			};
			mChannel = mSound.play(_arg1, _arg2);
			mChannel.soundTransform = mTransform;
			mIsPlaying = true;
			mChannel.addEventListener(Event.SOUND_COMPLETE, soundComplete);
		}

	}
}//package TDA.audio 

****************

//Character (TDA.entities.Character)
package TDA.entities {
	import TDA.systems.*;
	import TDA.math.*;
	import TDA.aspects.*;

	public class Character extends PolygonPhysicsEntity {

		private var mAlive:Boolean;// = true

		public static const WIDTH:Number = 8;
		public static const HEIGHT:int = 25;
		public static const NAME:String = "Character";

		public function Character(){
			var _local1:WorldObjectAspect = new WorldObjectAspect(this);
			_local1.visible = true;
			var _local2:PolygonPhysicsAspect = new PolygonPhysicsAspect(this);
			var _local3:Array = new Array(4);
			_local3[0] = new Vector2D(0, 0.5);
			_local3[1] = new Vector2D((WIDTH / PhysicsSystem.SCALE), 0.5);
			_local3[2] = new Vector2D((WIDTH / PhysicsSystem.SCALE), ((HEIGHT - 0.5) / PhysicsSystem.SCALE));
			_local3[3] = new Vector2D(0, ((HEIGHT - 0.5) / PhysicsSystem.SCALE));
			_local2.setVertices(_local3, 4);
			_local2.density = 0.1;
			_local2.fixedRotation = true;
			_local2.restitution = 0;
			_local2.friction = 0;
			_local2.linearDamping = 1;
			_local2.allowSleeping(false);
			_local2.AdditionalCircle("leftFoot", new Vector2D((1.1 / PhysicsSystem.SCALE), ((HEIGHT - 1) / PhysicsSystem.SCALE)), (1 / PhysicsSystem.SCALE), 0, 2);
			_local2.AdditionalCircle("rightFoot", new Vector2D(((WIDTH - 1.1) / PhysicsSystem.SCALE), ((HEIGHT - 1) / PhysicsSystem.SCALE)), (1 / PhysicsSystem.SCALE), 0, 2);
			super(NAME, _local1, _local2);
		}
		public function die():void{
			mAlive = false;
		}
		public function get alive():Boolean{
			return (mAlive);
		}
		public function backToLife():void{
			mAlive = true;
			physicsAspect.isSensor = false;
		}

	}
}//package TDA.entities 

****************

//CharacterDoppelganger (TDA.entities.CharacterDoppelganger)
package TDA.entities {
	import TDA.aspects.*;

	public class CharacterDoppelganger extends WorldEntity {

		public function CharacterDoppelganger(){
			var _local1:WorldObjectAspect = new WorldObjectAspect(this);
			var _local2:CharacterMovieClip = new CharacterMovieClip();
			var _local3:Number = (Character.HEIGHT / _local2.height);
			_local2.scaleY = _local3;
			_local2.scaleX = _local3;
			_local2.stop();
			super("", _local1);
			_local1.addChild(_local2);
			addAspect(new AnimationAspect(this, _local2));
		}
	}
}//package TDA.entities 

****************

//Entity (TDA.entities.Entity)
package TDA.entities {
	import mx.collections.*;
	import TDA.aspects.*;

	public class Entity {

		private var mName:String;
		private var aspectList:ArrayCollection;

		public function Entity(_arg1:String){
			aspectList = new ArrayCollection();
			super();
			this.name = _arg1;
		}
		public function getAspectList():ArrayCollection{
			return (aspectList);
		}
		public function removeAspect(_arg1:IAspect):void{
			if (_arg1 == null){
				return;
			};
			var _local2:int = aspectList.getItemIndex(_arg1);
			if (_local2 >= 0){
				aspectList.removeItemAt(_local2);
			};
		}
		public function getAspect(_arg1:String):IAspect{
			var _local2:IAspect;
			for each (_local2 in aspectList) {
				if (_local2.aspectName == _arg1){
					return (_local2);
				};
			};
			return (null);
		}
		public function set name(_arg1:String):void{
			mName = _arg1;
		}
		public function addAspect(_arg1:IAspect):void{
			if (aspectList.contains(_arg1)){
				return;
			};
			aspectList.addItem(_arg1);
		}
		public function get name():String{
			return (mName);
		}
		public function removeAspectByName(_arg1:String):void{
			var _local2:IAspect = getAspect(_arg1);
			if (_local2 == null){
				return;
			};
			removeAspect(_local2);
		}

	}
}//package TDA.entities 

****************

//EntityManager (TDA.entities.EntityManager)
package TDA.entities {
	import mx.collections.*;
	import flash.utils.*;
	import TDA.aspects.*;

	public class EntityManager {

		private var entityList:Dictionary;
		private var nameGeneratorIndex:uint;// = 0
		private var entityTagDictionary:Dictionary;
		private var aspectDictionary:Dictionary;
		private var tagDictionary:Dictionary;

		private static var mInstance:EntityManager;

		public function EntityManager(_arg1:SingletonEnforcer){
			entityList = new Dictionary();
			tagDictionary = new Dictionary();
			entityTagDictionary = new Dictionary();
			aspectDictionary = new Dictionary();
			super();
		}
		public function addTagsByName(_arg1:String, ... _args):void{
			var _local3:Entity = getEntity(_arg1);
			addTags.apply(null, [_local3].concat(_args));
		}
		public function addEntity(_arg1:Entity, ... _args):void{
			var _local3:String;
			var _local4:ArrayCollection;
			var _local6:IAspect;
			if ((((_arg1.name == "")) || ((_arg1.name == null)))){
				_arg1.name = ("ObjAuto" + nameGeneratorIndex++);
			} else {
				if (entityList[_arg1.name] != null){
					throw (new Error(("Already entity with name " + _arg1.name)));
				};
			};
			entityList[_arg1.name] = _arg1;
			entityTagDictionary[_arg1] = new ArrayCollection();
			for each (_local3 in _args) {
				if (!ArrayCollection(entityTagDictionary[_arg1]).contains(_local3)){
					ArrayCollection(entityTagDictionary[_arg1]).addItem(_local3);
				};
			};
			_local4 = entityTagDictionary[_arg1];
			if (_local4.length > 0){
				for each (_local3 in _local4) {
					if (tagDictionary[_local3] == null){
						tagDictionary[_local3] = new ArrayCollection();
					};
					if (!ArrayCollection(tagDictionary[_local3]).contains(_arg1)){
						ArrayCollection(tagDictionary[_local3]).addItem(_arg1);
					};
				};
			};
			var _local5:ArrayCollection = _arg1.getAspectList();
			for each (_local6 in _local5) {
				if (aspectDictionary[_local6.aspectName] == null){
					aspectDictionary[_local6.aspectName] = new ArrayCollection();
				};
				if (!ArrayCollection(aspectDictionary[_local6.aspectName]).contains(_arg1)){
					ArrayCollection(aspectDictionary[_local6.aspectName]).addItem(_arg1);
				};
			};
		}
		public function clear():void{
			entityList = new Dictionary();
			tagDictionary = new Dictionary();
			entityTagDictionary = new Dictionary();
			aspectDictionary = new Dictionary();
		}
		public function removeEntity(_arg1:Entity):void{
			var _local4:IAspect;
			var _local5:String;
			var _local6:int;
			if (_arg1 == null){
				return;
			};
			var _local2:ArrayCollection = entityTagDictionary[_arg1];
			if (_local2.length > 0){
				for each (_local5 in _local2) {
					_local6 = ArrayCollection(tagDictionary[_local5]).getItemIndex(_arg1);
					if (_local6 >= 0){
						ArrayCollection(tagDictionary[_local5]).removeItemAt(_local6);
					};
				};
			};
			var _local3:ArrayCollection = _arg1.getAspectList();
			for each (_local4 in _local3) {
				if (aspectDictionary[_local4.aspectName] != null){
					_local6 = ArrayCollection(aspectDictionary[_local4.aspectName]).getItemIndex(_arg1);
					if (_local6 >= 0){
						ArrayCollection(aspectDictionary[_local4.aspectName]).removeItemAt(_local6);
					};
					if (ArrayCollection(aspectDictionary[_local4.aspectName]).length < 1){
						delete aspectDictionary[_local4.aspectName];
					};
				};
			};
			delete entityTagDictionary[_arg1];
			delete entityList[_arg1.name];
		}
		public function removeEntitybyName(_arg1:String):void{
			var _local2:Entity = getEntity(_arg1);
			removeEntity(_local2);
		}
		public function getTagListByEntity(_arg1:String):ArrayCollection{
			var _local2:Entity = getEntity(_arg1);
			if (_local2 == null){
				return (null);
			};
			return (entityTagDictionary[_local2]);
		}
		public function getEntityListByTag(_arg1:String):ArrayCollection{
			if (tagDictionary[_arg1] == null){
				tagDictionary[_arg1] = new ArrayCollection();
			};
			return (tagDictionary[_arg1]);
		}
		public function getEntityListByAspectType(_arg1:String):ArrayCollection{
			if ((((_arg1 == null)) || ((_arg1 == "")))){
				return (null);
			};
			var _local2:ArrayCollection = aspectDictionary[_arg1];
			if (_local2 == null){
				aspectDictionary[_arg1] = new ArrayCollection();
			};
			return (aspectDictionary[_arg1]);
		}
		public function reloadAspectsForEntity(_arg1:Entity):void{
			var _local2:ArrayCollection;
			var _local3:ArrayCollection;
			var _local4:IAspect;
			var _local5:int;
			if (_arg1 == null){
				return;
			};
			for each (_local2 in aspectDictionary) {
				_local5 = _local2.getItemIndex(_arg1);
				if (_local5 >= 0){
					_local2.removeItemAt(_local5);
				};
			};
			_local3 = _arg1.getAspectList();
			for each (_local4 in _local3) {
				if (aspectDictionary[_local4.aspectName] == null){
					aspectDictionary[_local4.aspectName] = new ArrayCollection();
				};
				if (!ArrayCollection(aspectDictionary[_local4.aspectName]).contains(_arg1)){
					ArrayCollection(aspectDictionary[_local4.aspectName]).addItem(_arg1);
				};
			};
		}
		public function addTags(_arg1:Entity, ... _args):void{
			var _local3:String;
			if (_arg1 == null){
				return;
			};
			if (entityTagDictionary[_arg1] == null){
				entityTagDictionary[_arg1] = new ArrayCollection();
			};
			for each (_local3 in _args) {
				if (!ArrayCollection(entityTagDictionary[_arg1]).contains(_local3)){
					ArrayCollection(entityTagDictionary[_arg1]).addItem(_local3);
				};
			};
			for each (_local3 in _args) {
				if (tagDictionary[_local3] == null){
					tagDictionary[_local3] = new ArrayCollection();
				};
				if (!ArrayCollection(tagDictionary[_local3]).contains(_arg1)){
					ArrayCollection(tagDictionary[_local3]).addItem(_arg1);
				};
			};
		}
		public function getEntity(_arg1:String):Entity{
			return (entityList[_arg1]);
		}
		public function reloadAspectsForEntityByName(_arg1:String):void{
			var _local2:Entity = getEntity(_arg1);
			reloadAspectsForEntity(_local2);
		}
		public function removeTags(_arg1:Entity, ... _args):void{
			var _local6:String;
			var _local7:int;
			var _local8:ArrayCollection;
			if (_arg1 == null){
				return;
			};
			var _local3:ArrayCollection = entityTagDictionary[_arg1];
			if (_local3 != null){
				for each (_local6 in _args) {
					_local7 = _local3.getItemIndex(_local6);
					if (_local7 >= 0){
						_local3.removeItemAt(_local7);
					};
				};
			};
			var _local4:int = _args.length;
			var _local5:int;
			while (_local5 < _local4) {
				_local8 = tagDictionary[_args[_local5]];
				if (_local8 != null){
					_local7 = _local8.getItemIndex(_arg1);
					if (_local7 >= 0){
						_local8.removeItemAt(_local7);
					};
					if (_local8.length < 1){
						delete tagDictionary[_args[_local5]];
					};
				};
				_local5++;
			};
		}
		public function removeTagsByName(_arg1:String, ... _args):void{
			var _local3:Entity = getEntity(_arg1);
			removeTags.apply(null, [_local3].concat(_args));
		}

		public static function get instance():EntityManager{
			if (mInstance == null){
				mInstance = new EntityManager(new SingletonEnforcer());
			};
			return (mInstance);
		}

	}
}//package TDA.entities 

class SingletonEnforcer {

	private function SingletonEnforcer(){
	}
}

****************

//Goal (TDA.entities.Goal)
package TDA.entities {
	import TDA.systems.*;
	import TDA.math.*;
	import TDA.aspects.*;

	public class Goal extends StaticGeometryEntity {

		private static const GOAL_HEIGHT:int = 32;
		private static const Y_OFFSET:int = 7;
		private static const GOAL_WIDTH:int = 18;
		private static const PHYSICS_WIDTH:int = 4;
		private static const PHYSICS_HEIGHT:int = 16;

		public function Goal(_arg1:String, _arg2:int, _arg3:int){
			var _local7:Number;
			var _local4:DoorMovieClip = new DoorMovieClip();
			var _local5:Number = (GOAL_WIDTH / _local4.width);
			var _local6:Number = (GOAL_HEIGHT / _local4.height);
			if (_local5 < _local6){
				_local7 = _local5;
			} else {
				_local7 = _local6;
			};
			_local4.scaleX = _local7;
			_local4.scaleY = _local7;
			var _local8:Array = new Array(4);
			var _local9:Number = (((GOAL_WIDTH - PHYSICS_WIDTH) / 2) / PhysicsSystem.SCALE);
			var _local10:Number = (_local9 + (PHYSICS_WIDTH / PhysicsSystem.SCALE));
			var _local11:Number = ((GOAL_HEIGHT - PHYSICS_HEIGHT) / PhysicsSystem.SCALE);
			var _local12:Number = (GOAL_HEIGHT / PhysicsSystem.SCALE);
			_local8[0] = new Vector2D(_local9, _local11);
			_local8[1] = new Vector2D(_local10, _local11);
			_local8[2] = new Vector2D(_local10, _local12);
			_local8[3] = new Vector2D(_local9, _local12);
			super(_arg1, _arg2, _arg3, _local8, true);
			polygonPhysicsAspect.isSensor = true;
			worldObjectAspect.addChild(_local4);
			worldObjectAspect.x = _arg2;
			worldObjectAspect.y = (_arg3 - Y_OFFSET);
			addAspect(new AnimationAspect(this, _local4));
		}
	}
}//package TDA.entities 

****************

//MatchManager (TDA.entities.MatchManager)
package TDA.entities {

	public class MatchManager {

		private var mXML:XML;

		public static const TOP:int = Room.TOP;
		public static const LEFT:int = Room.LEFT;
		public static const BOTTOM:int = Room.BOTTOM;
		public static const RIGHT:int = Room.RIGHT;

		public function MatchManager(_arg1:XML){
			mXML = _arg1;
		}
		public function matches(_arg1:String, _arg2:int, _arg3:String):Boolean{
			var matchList:XMLList;
			var name1 = _arg1;
			var side = _arg2;
			var name2 = _arg3;
			matchList = mXML.room.(@name == name1).side.(@type == getSide(side)).room.(@name == name2);
			return (!((matchList.length() == 0)));
		}
		private function getSide(_arg1:int):String{
			switch (_arg1){
				case LEFT:
					return ("left");
				case RIGHT:
					return ("right");
				case TOP:
					return ("top");
				case BOTTOM:
				default:
					return ("bottom");
			};
		}

	}
}//package TDA.entities 

****************

//PhysicsEntity (TDA.entities.PhysicsEntity)
package TDA.entities {
	import TDA.aspects.*;

	public class PhysicsEntity extends WorldEntity {

		private var mPhysicsAspect:PhysicsAspect;

		public function PhysicsEntity(_arg1:String, _arg2:WorldObjectAspect, _arg3:PhysicsAspect){
			super(_arg1, _arg2);
			mPhysicsAspect = _arg3;
			addAspect(mPhysicsAspect);
		}
		public function get physicsAspect():PhysicsAspect{
			return (mPhysicsAspect);
		}

	}
}//package TDA.entities 

****************

//Pickup (TDA.entities.Pickup)
package TDA.entities {
	import TDA.systems.*;
	import TDA.math.*;
	import TDA.aspects.*;
	import TDA.systems.gamelogic.entitylogic.behaviors.*;
	import flash.filters.*;

	public class Pickup extends StaticGeometryEntity {

		private var mPickedup:Boolean;// = false
		private var mAnimationAspect:AnimationAspect;

		private static const PICKUP_HEIGHT:int = 9;
		private static const PICKUP_WIDTH:int = 19;

		public function Pickup(_arg1:String, _arg2:int, _arg3:int){
			var _local4:Array = new Array(4);
			_local4[0] = new Vector2D(0, 0);
			_local4[1] = new Vector2D((PICKUP_WIDTH / PhysicsSystem.SCALE), 0);
			_local4[2] = new Vector2D((PICKUP_WIDTH / PhysicsSystem.SCALE), (PICKUP_HEIGHT / PhysicsSystem.SCALE));
			_local4[3] = new Vector2D(0, (PICKUP_HEIGHT / PhysicsSystem.SCALE));
			super(_arg1, (_arg2 - (PICKUP_WIDTH / 2)), (_arg3 - (PICKUP_HEIGHT / 2)), _local4, true);
			polygonPhysicsAspect.isSensor = true;
			var _local5:KeyMovieClip = new KeyMovieClip();
			_local5.y = (PICKUP_HEIGHT / 2);
			worldObjectAspect.addChild(_local5);
			mAnimationAspect = new AnimationAspect(this, _local5);
			addAspect(mAnimationAspect);
			var _local6:Number = (PICKUP_WIDTH / _local5.width);
			var _local7:Number = (PICKUP_HEIGHT / _local5.height);
			if (_local6 < _local7){
				_local5.scaleX = _local6;
				_local5.scaleY = _local6;
			} else {
				_local5.scaleX = _local7;
				_local5.scaleY = _local7;
			};
			var _local8:BehaviorAspect = new BehaviorAspect(this);
			_local8.addBehavior(new PickupableBehavior(this));
			this.addAspect(_local8);
		}
		public function unpickup():void{
			mPickedup = false;
			mAnimationAspect.movieClip.play();
			worldObjectAspect.filters = null;
		}
		public function get pickedUp():Boolean{
			return (mPickedup);
		}
		public function pickup():void{
			mPickedup = true;
			mAnimationAspect.movieClip.stop();
			var _local1:GlowFilter = new GlowFilter();
			_local1.color = 0x777777;
			_local1.alpha = 1;
			_local1.blurX = 2;
			_local1.blurY = 2;
			_local1.strength = 2;
			_local1.quality = 1;
			_local1.inner = true;
			_local1.knockout = true;
			worldObjectAspect.filters = [_local1];
		}

	}
}//package TDA.entities 

****************

//PolygonPhysicsEntity (TDA.entities.PolygonPhysicsEntity)
package TDA.entities {
	import TDA.aspects.*;

	public class PolygonPhysicsEntity extends PhysicsEntity {

		private var mPolygonPhysics:PolygonPhysicsAspect;

		public function PolygonPhysicsEntity(_arg1:String, _arg2:WorldObjectAspect, _arg3:PolygonPhysicsAspect){
			mPolygonPhysics = _arg3;
			super(_arg1, _arg2, mPolygonPhysics);
		}
		public function get polygonPhysicsAspect():PolygonPhysicsAspect{
			return (mPolygonPhysics);
		}

	}
}//package TDA.entities 

****************

//PulseRing (TDA.entities.PulseRing)
package TDA.entities {
	import TDA.aspects.*;

	public class PulseRing extends WorldEntity {

		public static const SIZE:Number = 6;
		public static const NAME:String = "PulseRing";

		public function PulseRing(_arg1:String){
			var _local2:WorldObjectAspect = new WorldObjectAspect(this);
			var _local3:Ring = new Ring();
			_local2.addChild(_local3);
			_local3.alpha = 1;
			_local3.width = SIZE;
			_local3.height = SIZE;
			super(_arg1, _local2);
		}
	}
}//package TDA.entities 

****************

//Room (TDA.entities.Room)
package TDA.entities {
	import flash.display.*;
	import mx.collections.*;
	import TDA.aspects.*;
	import resources.images.*;

	public class Room extends WorldEntity {

		private var mPhysicsEntities:ArrayCollection;
		private var mBordersMatch:Array;
		private var mCol:int;
		private var mIsEmpty:Boolean;// = false
		private var mBorderEntities:Array;
		private var roomBackground:Sprite;
		private var mRow:int;
		private var mRoomMask:Sprite;

		public static const RIGHT:int = 1;
		public static const LEFT:int = 0;
		public static const BOTTOM:int = 3;
		public static const SHADOW_OFFSET:int = -25;
		public static const EDGE_OFFSET:int = 15;
		public static const TOP:int = 2;

		public function Room(_arg1:String, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:Sprite, _arg7:Array=null){
			var _local11:PhysicsEntity;
			mPhysicsEntities = new ArrayCollection();
			mRow = _arg2;
			mCol = _arg3;
			roomBackground = _arg6;
			var _local8:WorldObjectAspect = new WorldObjectAspect(this);
			_local8.addChild(roomBackground);
			roomBackground.x = EDGE_OFFSET;
			roomBackground.y = EDGE_OFFSET;
			var _local9:Bitmap = new Images.RoomForegr();
			var _local10:Sprite = new Sprite();
			_local10.graphics.beginBitmapFill(_local9.bitmapData, null, false, true);
			_local10.graphics.drawRect(0, 0, _local9.width, _local9.height);
			_local10.graphics.endFill();
			_local10.x = SHADOW_OFFSET;
			_local10.y = SHADOW_OFFSET;
			_local8.addChild(_local10);
			super(_arg1, _local8);
			for each (_local11 in _arg7) {
				addEntity(_local11);
			};
			if (mPhysicsEntities.length == 0){
				mIsEmpty = true;
				worldObjectAspect.visible = false;
			};
			mBorderEntities = new Array(4);
			mBordersMatch = new Array(4);
			var _local12:CharacterDoppelganger = new CharacterDoppelganger();
			EntityManager.instance.addEntity(_local12, "CharacterDoppelganger");
			roomBackground.addChild(_local12.worldObjectAspect);
			_local12.worldObjectAspect.currentRoom = this;
			mRoomMask = new Sprite();
			mRoomMask.graphics.beginFill(0);
			mRoomMask.graphics.drawRect(EDGE_OFFSET, EDGE_OFFSET, _arg6.width, _arg6.height);
			mRoomMask.graphics.endFill();
			_local12.worldObjectAspect.mask = mRoomMask;
			_local8.addChild(mRoomMask);
		}
		public function get isEmpty():Boolean{
			return (mIsEmpty);
		}
		public function setSideMatch(_arg1:int, _arg2:Boolean):void{
			if (!mIsEmpty){
				mBordersMatch[_arg1] = _arg2;
				RoomBorder(mBorderEntities[_arg1]).isPassable = _arg2;
			};
		}
		public function removeEntity(_arg1:WorldEntity):void{
			roomBackground.removeChild(_arg1.worldObjectAspect);
			var _local2:PhysicsEntity = (_arg1 as PhysicsEntity);
			if (_local2){
				removePhysicsEntity(_local2);
			};
		}
		public function sideMatches(_arg1:int):Boolean{
			return (mBordersMatch[_arg1]);
		}
		public function get column():int{
			return (mCol);
		}
		public function set row(_arg1:int):void{
			mRow = _arg1;
		}
		public function getBorder(_arg1:int):RoomBorder{
			return (mBorderEntities[_arg1]);
		}
		public function addEntity(_arg1:WorldEntity):void{
			if ((_arg1 is Character)){
				roomBackground.addChild(_arg1.worldObjectAspect);
			} else {
				roomBackground.addChildAt(_arg1.worldObjectAspect, 0);
			};
			_arg1.worldObjectAspect.currentRoom = this;
			var _local2:PhysicsEntity = (_arg1 as PhysicsEntity);
			if (_local2){
				addPhysicsEntity(_local2);
			};
		}
		public function get physicsEntities():Array{
			return (mPhysicsEntities.toArray());
		}
		public function set column(_arg1:int):void{
			mCol = _arg1;
		}
		private function addPhysicsEntity(_arg1:PhysicsEntity):void{
			mPhysicsEntities.addItem(_arg1);
		}
		public function lockAllSides():void{
			setSideMatch(LEFT, false);
			setSideMatch(RIGHT, false);
			setSideMatch(TOP, false);
			setSideMatch(BOTTOM, false);
		}
		public function addRoomBorder(_arg1:RoomBorder):void{
			mBorderEntities[_arg1.side] = _arg1;
			mBordersMatch[_arg1.side] = false;
		}
		public function get row():int{
			return (mRow);
		}
		private function removePhysicsEntity(_arg1:PhysicsEntity):void{
			mPhysicsEntities.removeItemAt(mPhysicsEntities.getItemIndex(_arg1));
		}

		public static function getOppositeSide(_arg1:int):int{
			switch (_arg1){
				case Room.LEFT:
					return (Room.RIGHT);
				case Room.RIGHT:
					return (Room.LEFT);
				case Room.TOP:
					return (Room.BOTTOM);
				default:
					return (Room.TOP);
			};
		}

	}
}//package TDA.entities 

****************

//RoomBorder (TDA.entities.RoomBorder)
package TDA.entities {
	import TDA.aspects.*;

	public class RoomBorder extends PolygonPhysicsEntity {

		private var mIsPassable:Boolean;// = false
		private var mSide:int;

		public function RoomBorder(_arg1:String, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int){
			mSide = _arg2;
			var _local7:WorldObjectAspect = new WorldObjectAspect(this);
			_local7.visible = false;
			_local7.mouseEnabled = false;
			_local7.x = _arg3;
			_local7.y = _arg4;
			_local7.width = _arg5;
			_local7.height = _arg6;
			super(_arg1, _local7, new PolygonPhysicsAspect(this));
			_local7.mouseEnabled = false;
		}
		public function get isPassable():Boolean{
			return (mIsPassable);
		}
		public function get side():int{
			return (mSide);
		}
		public function set isPassable(_arg1:Boolean):void{
			mIsPassable = _arg1;
			physicsAspect.isSensor = _arg1;
		}

	}
}//package TDA.entities 

****************

//RoomGrid (TDA.entities.RoomGrid)
package TDA.entities {
	import mx.core.*;
	import flash.display.*;
	import TDA.scene.*;
	import resources.images.*;

	public class RoomGrid extends Entity {

		private var mRoomsWide:int;
		private var mCurrentRoom:Room;
		private var mRooms:Array;
		private var mRoomsHigh:int;
		private var mForeground:Sprite;
		private var mCurrentCol:int;// = -1
		private var mPixelHeight:int;
		private var mPixelWidth:int;
		private var mCurrentRow:int;// = -1
		private var mRoomHeight:int;
		private var mMatchManager:MatchManager;
		private var mBackground:Sprite;
		private var mRoomWidth:int;

		public static const ROOM_EDGE:int = 15;
		public static const ROOM_GAP:int = 10;
		public static const NAME:String = "ROOM_GRID";

		public function RoomGrid(_arg1:Array, _arg2:int, _arg3:int, _arg4:MatchManager){
			var _local7:int;
			var _local8:Room;
			var _local9:Number;
			var _local10:int;
			var _local11:int;
			var _local12:int;
			var _local13:Number;
			var _local14:Number;
			mForeground = new Sprite();
			super(NAME);
			mMatchManager = _arg4;
			mRoomHeight = _arg3;
			mRoomWidth = _arg2;
			mRoomsHigh = _arg1.length;
			mRoomsWide = (_arg1[0] as Array).length;
			mRooms = _arg1;
			var _local5:int;
			while (_local5 < mRoomsHigh) {
				_local7 = 0;
				while (_local7 < mRoomsWide) {
					_local8 = _arg1[_local5][_local7];
					if (_local8 != null){
						GameWorld.instance.addChild(Room(_arg1[_local5][_local7]).worldObjectAspect);
						positionRoom(_local5, _local7);
					};
					_local7++;
				};
				_local5++;
			};
			mPixelHeight = (((((ROOM_EDGE + mRoomHeight) + ROOM_EDGE) + ROOM_GAP) * mRoomsHigh) - ROOM_GAP);
			mPixelWidth = (((((ROOM_EDGE + mRoomWidth) + ROOM_EDGE) + ROOM_GAP) * mRoomsWide) - ROOM_GAP);
			initializeBorders();
			var _local6:Bitmap = new Images.DesktopForegr();
			if (_local6 != null){
				_local9 = zoomInScale();
				_local10 = roomsWide;
				if (mRoomsHigh > mRoomsWide){
					_local10 = mRoomsHigh;
				};
				_local11 = (450 * _local10);
				_local12 = (400 * _local10);
				_local13 = ((((((ROOM_EDGE + mRoomWidth) + ROOM_EDGE) + ROOM_GAP) * _local10) - ROOM_GAP) / _local9);
				_local14 = ((((((ROOM_EDGE + mRoomHeight) + ROOM_EDGE) + ROOM_GAP) * _local10) - ROOM_GAP) / _local9);
				_local6.alpha = 0.3;
				_local6.width = (_local13 + _local11);
				_local6.height = (_local14 + _local12);
				_local6.x = (_local6.x - ((_local11 / 2) + ((_local13 - mPixelWidth) / 2)));
				_local6.y = (_local6.y - ((_local12 / 2) + ((_local14 - mPixelHeight) / 2)));
				GameWorld.instance.addChild(_local6);
			};
		}
		public function getAdjacentRoom(_arg1:int, _arg2:int, _arg3:int):Room{
			var _local4:int;
			var _local5:int;
			switch (_arg3){
				case Room.LEFT:
					_local4 = _arg1;
					_local5 = (_arg2 - 1);
					break;
				case Room.RIGHT:
					_local4 = _arg1;
					_local5 = (_arg2 + 1);
					break;
				case Room.TOP:
					_local4 = (_arg1 - 1);
					_local5 = _arg2;
					break;
				case Room.BOTTOM:
					_local4 = (_arg1 + 1);
					_local5 = _arg2;
					break;
				default:
					return (null);
			};
			if ((((((((_local4 >= roomsHigh)) || ((_local4 < 0)))) || ((_local5 >= roomsWide)))) || ((_local5 < 0)))){
				return (null);
			};
			return (mRooms[_local4][_local5]);
		}
		public function get width():int{
			return (mPixelWidth);
		}
		public function set currentRoom(_arg1:Room):void{
			var _local2:Array;
			mCurrentRoom = _arg1;
			if (_arg1 == null){
				mCurrentRow = -1;
				mCurrentCol = -1;
			} else {
				for each (_local2 in mRooms) {
					for each (_arg1 in mRooms) {
						if (_arg1 == mCurrentRoom){
							mCurrentRow = _arg1.row;
							mCurrentCol = _arg1.column;
							return;
						};
					};
				};
				mCurrentRow = -1;
				mCurrentCol = -1;
			};
		}
		public function getRoom(_arg1:int, _arg2:int):Room{
			if ((((((((_arg1 < 0)) || ((_arg1 > (mRoomsHigh - 1))))) || ((_arg2 < 0)))) || ((_arg2 > (mRoomsWide - 1))))){
				return (null);
			};
			return (mRooms[_arg1][_arg2]);
		}
		private function zoomInScale():Number{
			var _local1:Number = (Application.application.GAME_WORLD_WIDTH / roomWidthWithBorder);
			var _local2:Number = (Application.application.GAME_WORLD_HEIGHT / roomHeightWithBorder);
			if (_local1 > _local2){
				return (_local1);
			};
			return (_local2);
		}
		public function get currentRoomRow():int{
			return (mCurrentRow);
		}
		private function initializeBorders():void{
			var _local2:int;
			var _local1:int;
			while (_local1 < mRoomsHigh) {
				_local2 = 0;
				while (_local2 < mRoomsWide) {
					updateRoomBorders(_local1, _local2);
					_local2++;
				};
				_local1++;
			};
		}
		public function get roomHeightWithBorder():int{
			return (((ROOM_EDGE + mRoomHeight) + ROOM_EDGE));
		}
		public function get roomWidthWithBorder():int{
			return (((ROOM_EDGE + mRoomWidth) + ROOM_EDGE));
		}
		public function get roomHeight():int{
			return (mRoomHeight);
		}
		public function updateRoomBorders(_arg1:int, _arg2:int):void{
			var _local4:Room;
			var _local5:Room;
			var _local3:int;
			while (_local3 < 4) {
				_local4 = mRooms[_arg1][_arg2];
				_local5 = getAdjacentRoom(_arg1, _arg2, _local3);
				if (_local5 == null){
					_local4.setSideMatch(_local3, false);
				} else {
					updateBorder(_local4, _local3, _local5);
				};
				_local3++;
			};
		}
		private function updateBorder(_arg1:Room, _arg2:int, _arg3:Room):void{
			var _local4:Boolean = mMatchManager.matches(_arg1.name, _arg2, _arg3.name);
			_arg1.setSideMatch(_arg2, _local4);
			_arg3.setSideMatch(Room.getOppositeSide(_arg2), _local4);
		}
		public function swapRooms(_arg1:int, _arg2:int, _arg3:int, _arg4:int):void{
			var _local5:Room = mRooms[_arg1][_arg2];
			mRooms[_arg1][_arg2] = mRooms[_arg3][_arg4];
			mRooms[_arg3][_arg4] = _local5;
			Room(mRooms[_arg1][_arg2]).row = _arg1;
			Room(mRooms[_arg1][_arg2]).column = _arg2;
			Room(mRooms[_arg3][_arg4]).row = _arg3;
			Room(mRooms[_arg3][_arg4]).column = _arg4;
			if (mRooms[_arg1][_arg2] != null){
				updateRoomBorders(_arg1, _arg2);
				positionRoom(_arg1, _arg2);
			};
			if (mRooms[_arg3][_arg4] != null){
				updateRoomBorders(_arg3, _arg4);
				positionRoom(_arg3, _arg4);
			};
		}
		public function setCurrentRoomByIndex(_arg1:int, _arg2:int):void{
			if ((((mCurrentRow < 0)) || ((mCurrentCol < 0)))){
				mCurrentRoom = null;
			} else {
				mCurrentRoom = mRooms[_arg1][_arg2];
				mCurrentRow = _arg1;
				mCurrentCol = _arg2;
			};
		}
		public function get roomsWide():int{
			return (mRoomsWide);
		}
		public function get currentRoomColumn():int{
			return (mCurrentCol);
		}
		public function get roomWidth():int{
			return (mRoomWidth);
		}
		public function get currentRoom():Room{
			return (mCurrentRoom);
		}
		public function get physicsEntities():Array{
			var _local3:int;
			var _local1:Array = new Array();
			var _local2:int;
			while (_local2 < mRoomsHigh) {
				_local3 = 0;
				while (_local3 < mRoomsWide) {
					_local1 = _local1.concat(Room(mRooms[_local2][_local3]).physicsEntities);
					_local3++;
				};
				_local2++;
			};
			return (_local1);
		}
		private function positionRoom(_arg1:int, _arg2:int):void{
			Room(mRooms[_arg1][_arg2]).worldObjectAspect.x = (_arg2 * (((ROOM_EDGE + mRoomWidth) + ROOM_EDGE) + ROOM_GAP));
			Room(mRooms[_arg1][_arg2]).worldObjectAspect.y = (_arg1 * (((ROOM_EDGE + mRoomHeight) + ROOM_EDGE) + ROOM_GAP));
		}
		public function get roomsHigh():int{
			return (mRoomsHigh);
		}
		public function get height():int{
			return (mPixelHeight);
		}

	}
}//package TDA.entities 

****************

//StaticGeometryEntity (TDA.entities.StaticGeometryEntity)
package TDA.entities {
	import TDA.aspects.*;

	public class StaticGeometryEntity extends PolygonPhysicsEntity {

		public function StaticGeometryEntity(_arg1:String, _arg2:int, _arg3:int, _arg4:Array, _arg5:Boolean=false){
			var _local6:WorldObjectAspect = new WorldObjectAspect(this);
			_local6.x = _arg2;
			_local6.y = _arg3;
			var _local7:PolygonPhysicsAspect = new PolygonPhysicsAspect(this);
			_local7.setVertices(_arg4, _arg4.length);
			_local7.density = 0;
			_local7.isSensor = _arg5;
			super(_arg1, _local6, _local7);
		}
	}
}//package TDA.entities 

****************

//WallEntity (TDA.entities.WallEntity)
package TDA.entities {

	public class WallEntity extends StaticGeometryEntity {

		private static const FRICTION:Number = 1;

		public function WallEntity(_arg1:String, _arg2:int, _arg3:int, _arg4:Array){
			super(_arg1, _arg2, _arg3, _arg4, false);
			physicsAspect.friction = FRICTION;
			physicsAspect.restitution = 0;
		}
	}
}//package TDA.entities 

****************

//WorldEntity (TDA.entities.WorldEntity)
package TDA.entities {
	import TDA.aspects.*;

	public class WorldEntity extends Entity {

		private var mWorldObjectAspect:WorldObjectAspect;

		public function WorldEntity(_arg1:String, _arg2:WorldObjectAspect){
			super(_arg1);
			mWorldObjectAspect = _arg2;
			addAspect(mWorldObjectAspect);
		}
		public function get worldObjectAspect():WorldObjectAspect{
			return (mWorldObjectAspect);
		}

	}
}//package TDA.entities 

****************

//AllKeysPickedUpEvent (TDA.events.AllKeysPickedUpEvent)
package TDA.events {
	import flash.events.*;

	public class AllKeysPickedUpEvent extends Event {

		public static const ALL_KEYS_PICKED_UP:String = "All keys picked up";

		public function AllKeysPickedUpEvent(_arg1:String){
			super(_arg1);
		}
	}
}//package TDA.events 

****************

//AudioMuteEvent (TDA.events.AudioMuteEvent)
package TDA.events {
	import flash.events.*;

	public class AudioMuteEvent extends Event {

		private var mMute:Boolean;

		public static const SWITCH_MUTE:String = "SwitchMute";

		public function AudioMuteEvent(_arg1:String, _arg2:Boolean){
			mMute = _arg2;
			super(_arg1);
		}
		public function get mute():Boolean{
			return (mMute);
		}

	}
}//package TDA.events 

****************

//AudioVolumeEvent (TDA.events.AudioVolumeEvent)
package TDA.events {
	import flash.events.*;

	public class AudioVolumeEvent extends Event {

		private var mVolume:Number;

		public static const SET_MUSIC_VOLUME:String = "SetMusicVolume";
		public static const SWITCH_MUTE:String = "SwitchMute";
		public static const SET_GLOBAL_VOLUME:String = "SetGlobalVolume";
		public static const SET_SOUND_FX_VOLUME:String = "SetSoundFXVolume";

		public function AudioVolumeEvent(_arg1:String, _arg2:Number){
			super(_arg1);
			mVolume = _arg2;
		}
		public function get volume():Number{
			return (mVolume);
		}

	}
}//package TDA.events 

****************

//CharacterActionEvent (TDA.events.CharacterActionEvent)
package TDA.events {
	import flash.events.*;
	import TDA.math.*;

	public class CharacterActionEvent extends Event {

		private var mVelocity:Vector2D;

		public static const FALLING:String = "Falling";
		public static const MOVE_UP:String = "MoveUp";
		public static const LAND:String = "Land";
		public static const PUSH_LEFT:String = "PushLeft";
		public static const MOVE_DOWN:String = "MoveDown";
		public static const MOVE_LEFT:String = "MoveLeft";
		public static const PUSH_RIGHT:String = "PushRight";
		public static const RUN_MODIFIER:String = "RunModifier";
		public static const JUMP:String = "Jump";
		public static const MOVE_RIGHT:String = "MoveRight";

		public function CharacterActionEvent(_arg1:String, _arg2:Vector2D){
			mVelocity = _arg2;
			super(_arg1);
		}
		public function get velocity():Vector2D{
			return (mVelocity);
		}

	}
}//package TDA.events 

****************

//CharacterDeathEvent (TDA.events.CharacterDeathEvent)
package TDA.events {
	import flash.events.*;

	public class CharacterDeathEvent extends Event {

		public static const CHARACTER_DEATH:String = "CharacterDeathEvent";

		public function CharacterDeathEvent(){
			super(CHARACTER_DEATH);
		}
	}
}//package TDA.events 

****************

//EventManager (TDA.events.EventManager)
package TDA.events {
	import flash.events.*;

	public final class EventManager extends EventDispatcher {

		private static var mInstance:EventManager;

		public function EventManager(_arg1:SingletonEnforcer){
		}
		public static function get instance():EventManager{
			if (mInstance == null){
				mInstance = new EventManager(new SingletonEnforcer());
			};
			return (mInstance);
		}

	}
}//package TDA.events 

class SingletonEnforcer {

	private function SingletonEnforcer(){
	}
}

****************

//FailedRoomMovementEvent (TDA.events.FailedRoomMovementEvent)
package TDA.events {
	import flash.events.*;
	import TDA.entities.*;

	public class FailedRoomMovementEvent extends Event {

		private var mDir:int;
		private var mRoom:Room;

		public static const FAILED_MOVEMENT_ENDED:String = "FailedRoomMovementEndedEvent";
		public static const START_FAILED_MOVEMENT:String = "StartFailedRoomMovementEvent";

		public function FailedRoomMovementEvent(_arg1:String, _arg2:Room, _arg3:int){
			mRoom = _arg2;
			mDir = _arg3;
			super(_arg1);
		}
		public function get direction():int{
			return (mDir);
		}
		public function get room():Room{
			return (mRoom);
		}

	}
}//package TDA.events 

****************

//GoalEvent (TDA.events.GoalEvent)
package TDA.events {
	import flash.events.*;
	import TDA.entities.*;

	public class GoalEvent extends Event {

		private var mGoal:Goal;
		private var mReachedBy:PhysicsEntity;

		public static const REACHED:String = "Goal reached";

		public function GoalEvent(_arg1:String, _arg2:Goal, _arg3:PhysicsEntity){
			super(_arg1);
			mGoal = _arg2;
			mReachedBy = _arg3;
		}
		public function get reachedBy():PhysicsEntity{
			return (mReachedBy);
		}
		public function get goal():Goal{
			return (mGoal);
		}

	}
}//package TDA.events 

****************

//GoalLockedEvent (TDA.events.GoalLockedEvent)
package TDA.events {
	import flash.events.*;

	public class GoalLockedEvent extends Event {

		public static const LOCKED:String = "Goal locked";

		public function GoalLockedEvent(_arg1:String){
			super(_arg1);
		}
	}
}//package TDA.events 

****************

//GUIEvent (TDA.events.GUIEvent)
package TDA.events {
	import flash.events.*;

	public class GUIEvent extends Event {

		public static const FOCUS_CHANGED:String = "GUIFocusChangedEvent";

		public function GUIEvent(_arg1:String){
			super(_arg1);
		}
	}
}//package TDA.events 

****************

//HistoryEvent (TDA.events.HistoryEvent)
package TDA.events {
	import flash.events.*;

	public class HistoryEvent extends Event {

		public static const REVERT_HISTORY:String = "RevertHistoryEvent";
		public static const HISTORY_REVERTED:String = "HistoryRevertedEvent";

		public function HistoryEvent(_arg1:String){
			super(_arg1);
		}
	}
}//package TDA.events 

****************

//LevelFinishedEvent (TDA.events.LevelFinishedEvent)
package TDA.events {
	import flash.events.*;

	public class LevelFinishedEvent extends Event {

		private var mTime:Number;// = 0
		private var mMoves:int;// = 0

		public static const COMPLETED:String = "LevelCompletedEvent";

		public function LevelFinishedEvent(_arg1:String, _arg2:Number=0, _arg3:int=0){
			if ((((_arg1 == COMPLETED)) && ((_arg2 > 0)))){
				mTime = _arg2;
			};
			if ((((_arg1 == COMPLETED)) && ((_arg3 > 0)))){
				mMoves = _arg3;
			};
			super(_arg1);
		}
		public function get moves():int{
			return (mMoves);
		}
		public function get completionTime():Number{
			return (mTime);
		}

	}
}//package TDA.events 

****************

//LevelPauseEvent (TDA.events.LevelPauseEvent)
package TDA.events {
	import flash.events.*;

	public class LevelPauseEvent extends Event {

		public static const UNPAUSE:String = "UnpauseLevelEvent";
		public static const PAUSE:String = "PauseLevelEvent";
		public static const TOGGLE_PAUSE:String = "ToggleLevelPauseEvent";

		public function LevelPauseEvent(_arg1:String){
			super(_arg1);
		}
	}
}//package TDA.events 

****************

//LevelTransitionEvent (TDA.events.LevelTransitionEvent)
package TDA.events {
	import flash.events.*;

	public class LevelTransitionEvent extends Event {

		public static const SHOW_RETURN2SKIPPED_LEVEL_SKIPPED:String = "TransitionReturn2SkippedLevelSkipped";
		public static const FADE_IN:String = "FadeIn";
		public static const SHOW_THE_END:String = "TransitionTheEnd";
		public static const SHOW_CONTINUE_GAME:String = "TransitionContinueGame";
		public static const SHOW_START_GAME:String = "TransitionStartGame";
		public static const SHOW_RESTART_LEVEL:String = "TransitionRestartLevel";
		public static const SHOW_RETURN2SKIPPED:String = "TransitionReturn2Skipped";
		public static const SHOW_SKIP_LEVEL:String = "TransitionSkipLevel";
		public static const SHOW_QUIT_GAME:String = "TransitionQuitGame";
		public static const FADE_OUT:String = "FadeOut";
		public static const SHOW_INTERMISSION:String = "TransitionIntermission";
		public static const FADED_OUT:String = "FadedOut";
		public static const FADED_IN:String = "FadedIn";

		public function LevelTransitionEvent(_arg1:String){
			super(_arg1);
		}
	}
}//package TDA.events 

****************

//LoadLevelEvent (TDA.events.LoadLevelEvent)
package TDA.events {
	import flash.events.*;

	public class LoadLevelEvent extends Event {

		private var mLevel:String;
		private var mLevelIndex:int;

		public static const LEVEL_LOADED:String = "LevelLoadedEvent";
		public static const READY_TO_LOAD_LEVEL:String = "ReadyToLoadLevel";
		public static const LOAD_LEVEL:String = "LoadLevelEvent";

		public function LoadLevelEvent(_arg1:String, _arg2:String, _arg3:int){
			mLevel = _arg2;
			mLevelIndex = _arg3;
			super(_arg1);
		}
		public function get level():String{
			return (mLevel);
		}
		public function get levelIndex():int{
			return (mLevelIndex);
		}

	}
}//package TDA.events 

****************

//PhysicsContactEvent (TDA.events.PhysicsContactEvent)
package TDA.events {
	import flash.events.*;
	import TDA.physics.*;

	public class PhysicsContactEvent extends Event {

		private var mContactPoint:ContactPoint;

		public static const ADDED:String = "Added";
		public static const REMOVED:String = "Removed";
		public static const PERSISTS:String = "Persists";

		public function PhysicsContactEvent(_arg1:String, _arg2:ContactPoint){
			super(_arg1, false);
			mContactPoint = _arg2;
		}
		public function get contactPoint():ContactPoint{
			return (mContactPoint);
		}
		override public function clone():Event{
			return (new PhysicsContactEvent(type, mContactPoint));
		}

	}
}//package TDA.events 

****************

//PickedUpEvent (TDA.events.PickedUpEvent)
package TDA.events {
	import flash.events.*;
	import TDA.entities.*;

	public class PickedUpEvent extends Event {

		private var mEntityPickedUp:WorldEntity;
		private var mPickedUpBy:PhysicsEntity;

		public static const ENTITY_PICKED_UP:String = "entity_picked_up";

		public function PickedUpEvent(_arg1:String, _arg2:WorldEntity, _arg3:PhysicsEntity){
			super(_arg1);
			mEntityPickedUp = _arg2;
			mPickedUpBy = _arg3;
		}
		public function get pickedUpBy():PhysicsEntity{
			return (mPickedUpBy);
		}
		public function get entity():WorldEntity{
			return (mEntityPickedUp);
		}

	}
}//package TDA.events 

****************

//PlayerBorderCollideEvent (TDA.events.PlayerBorderCollideEvent)
package TDA.events {
	import flash.events.*;

	public class PlayerBorderCollideEvent extends Event {

		public static const COLLIDE:String = "Border collide";

		public function PlayerBorderCollideEvent(_arg1:String){
			super(_arg1);
		}
	}
}//package TDA.events 

****************

//RefilterPhysicsAspectEvent (TDA.events.RefilterPhysicsAspectEvent)
package TDA.events {
	import flash.events.*;
	import TDA.aspects.*;

	public class RefilterPhysicsAspectEvent extends Event {

		private var mPhysicsAspect:PhysicsAspect;

		public static const SENSOR_CHANGED:String = "Sensor changed";

		public function RefilterPhysicsAspectEvent(_arg1:String, _arg2:PhysicsAspect){
			super(_arg1, false);
			mPhysicsAspect = _arg2;
		}
		public function get physicsAspect():PhysicsAspect{
			return (mPhysicsAspect);
		}

	}
}//package TDA.events 

****************

//RoomMovementEvent (TDA.events.RoomMovementEvent)
package TDA.events {
	import flash.events.*;

	public class RoomMovementEvent extends Event {

		private var mRow1:int;
		private var mRow2:int;
		private var mCol1:int;
		private var mUndo:Boolean;
		private var mDur:Number;
		private var mCol2:int;

		public static const MOVE_STARTED:String = "RoomMovementStarted";
		public static const MOVE_ENDED:String = "RoomMovementEnded";

		public function RoomMovementEvent(_arg1:String, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:Number=0, _arg7:Boolean=false){
			mRow1 = _arg2;
			mRow2 = _arg4;
			mCol1 = _arg3;
			mCol2 = _arg5;
			mDur = _arg6;
			super(_arg1, false, false);
		}
		public function get column2():int{
			return (mCol2);
		}
		public function get undo():Boolean{
			return (mUndo);
		}
		public function get duration():Number{
			return (mDur);
		}
		public function get row1():int{
			return (mRow1);
		}
		public function get row2():int{
			return (mRow2);
		}
		public function get column1():int{
			return (mCol1);
		}

	}
}//package TDA.events 

****************

//RoomOverlappedEvent (TDA.events.RoomOverlappedEvent)
package TDA.events {
	import flash.events.*;
	import TDA.entities.*;

	public class RoomOverlappedEvent extends Event {

		private var mRoom1:Room;
		private var mRoom2:Room;

		public static const OVERLAP:String = "RoomOverlappedEvent";

		public function RoomOverlappedEvent(_arg1:Room, _arg2:Room){
			mRoom1 = _arg1;
			mRoom2 = _arg2;
			super(OVERLAP);
		}
		public function get room1():Room{
			return (mRoom1);
		}
		public function get room2():Room{
			return (mRoom2);
		}

	}
}//package TDA.events 

****************

//ShowCreditsEvent (TDA.events.ShowCreditsEvent)
package TDA.events {
	import flash.events.*;

	public class ShowCreditsEvent extends Event {

		public static const SHOW_CREDITS:String = "ShowCredits";

		public function ShowCreditsEvent(){
			super(SHOW_CREDITS);
		}
	}
}//package TDA.events 

****************

//StartPlayingEvent (TDA.events.StartPlayingEvent)
package TDA.events {
	import flash.events.*;

	public class StartPlayingEvent extends Event {

		public static const LEVEL_SAME:String = "LevelSame";
		public static const QUIT_GAME:String = "QuitGame";
		public static const SKIP_LEVEL:String = "SkipLevel";
		public static const CONTINUE_GAME:String = "ContinueGame";
		public static const LEVEL_STARTED:String = "LevelStarted";
		public static const LEVEL_NEXT:String = "LevelNext";
		public static const NEW_GAME:String = "NewGame";
		public static const QUIT_TO_MENU:String = "QuitToMenu";
		public static const RESTART_LEVEL:String = "RestartLevel";
		public static const LEVEL_FIRST:String = "LevelFirst";
		public static const SWITCH_TO_SKIPPED:String = "SwitchToSkippedLevels";
		public static const LEVEL_LAST:String = "LevelLast";

		public function StartPlayingEvent(_arg1:String){
			super(_arg1);
		}
	}
}//package TDA.events 

****************

//TDAKeyboardEvent (TDA.events.TDAKeyboardEvent)
package TDA.events {
	import flash.events.*;

	public class TDAKeyboardEvent extends Event {

		private var mKeyCode:uint;

		public static const KEY_DOWN:String = "KeyDown";
		public static const KEY_UP:String = "KeyUp";

		public function TDAKeyboardEvent(_arg1:String, _arg2:uint){
			super(_arg1, false);
			mKeyCode = _arg2;
		}
		public function get keyCode():uint{
			return (mKeyCode);
		}
		override public function clone():Event{
			return (new TDAKeyboardEvent(type, mKeyCode));
		}

	}
}//package TDA.events 

****************

//ZoomEvent (TDA.events.ZoomEvent)
package TDA.events {
	import flash.events.*;

	public class ZoomEvent extends Event {

		public static const ZOOMED_OUT:String = "ZoomedOutEvent";
		public static const START_CLOSE_IN:String = "StartCloseInEvent";
		public static const START_ZOOM_IN:String = "StartZoomInEvent";
		public static const CLOSED_IN:String = "ClosedInEvent";
		public static const ZOOMED_IN:String = "ZoomedInEvent";
		public static const START_ZOOM_OUT:String = "StartZoomOutEvent";

		public function ZoomEvent(_arg1:String){
			super(_arg1);
		}
	}
}//package TDA.events 

****************

//Button (TDA.GUI.Button)
package TDA.GUI {
	import flash.events.*;

	public class Button extends UIElement {

		private var mSelected:Boolean;// = false
		private var mCallback:Function;
		private var mShortcut:int;
		private var mGraphics:IButtonGraphics;

		public function Button(_arg1:IButtonGraphics, _arg2:Function, _arg3:int=-1){
			mGraphics = _arg1;
			addChild(mGraphics.displayObject);
			mCallback = _arg2;
			mShortcut = _arg3;
			addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
			addEventListener(MouseEvent.MOUSE_UP, mouseUp);
		}
		private function mouseUp(_arg1:MouseEvent):void{
		}
		public function press():void{
			if (isActive){
				if ((mCallback as Function) != null){
					mCallback();
				};
			};
		}
		public function release():void{
		}
		public function get shortcutKeycode():int{
			return (mShortcut);
		}
		public function set pressedCallback(_arg1:Function):void{
			mCallback = _arg1;
		}
		private function mouseDown(_arg1:MouseEvent):void{
			press();
		}
		override public function _select():void{
			mGraphics.select();
		}
		override public function _deselect():void{
			mGraphics.deselect();
		}

	}
}//package TDA.GUI 

****************

//ButtonBitmap (TDA.GUI.ButtonBitmap)
package TDA.GUI {
	import flash.display.*;

	public class ButtonBitmap extends Sprite implements IButtonGraphics {

		private var mSelected:Sprite;
		private var mCurrent:Sprite;
		private var mNormal:Sprite;
		private var mDown:Sprite;

		public function ButtonBitmap(_arg1:Bitmap, _arg2:Bitmap=null, _arg3:Bitmap=null){
			mNormal = new Sprite();
			mNormal.graphics.beginBitmapFill(_arg1.bitmapData);
			mNormal.graphics.drawRect(0, 0, _arg1.width, _arg1.height);
			mNormal.graphics.endFill();
			mCurrent = mNormal;
			addChild(mNormal);
			if (_arg2 == null){
				mSelected = mNormal;
			} else {
				mSelected = new Sprite();
				mSelected.graphics.beginBitmapFill(_arg2.bitmapData);
				mSelected.graphics.drawRect(0, 0, _arg2.width, _arg2.height);
				mSelected.graphics.endFill();
			};
			if (_arg3 == null){
				mDown = mSelected;
			} else {
				mDown = new Sprite();
				mDown.graphics.beginBitmapFill(_arg3.bitmapData);
				mDown.graphics.drawRect(0, 0, _arg3.width, _arg3.height);
				mDown.graphics.endFill();
			};
		}
		public function get displayObject():DisplayObject{
			return (this);
		}
		public function down():void{
			changeGraphic(mDown);
		}
		public function select():void{
			changeGraphic(mSelected);
		}
		public function up():void{
			changeGraphic(mSelected);
		}
		public function deselect():void{
			changeGraphic(mNormal);
		}
		private function changeGraphic(_arg1:Sprite):void{
			if (_arg1 != mCurrent){
				removeChild(mCurrent);
				addChild(_arg1);
				mCurrent = _arg1;
			};
		}

	}
}//package TDA.GUI 

****************

//CreditsMenuSystem (TDA.GUI.CreditsMenuSystem)
package TDA.GUI {
	import flash.display.*;
	import flash.text.*;
	import TDA.scene.*;
	import TDA.events.*;
	import flash.net.*;
	import TDA.helper.*;
	import resources.images.*;

	public class CreditsMenuSystem extends Menu {

		private var webSelected:TextFormat;
		private var webUnselected:TextFormat;
		private var mMuteGraphics:GameButton;
		private var unselected:TextFormat;
		private var selected:TextFormat;

		public function CreditsMenuSystem(){
			super(true);
			var texture:Bitmap = new Images.GeometryTextureBlack();
			sprite.graphics.beginBitmapFill(texture.bitmapData);
			sprite.graphics.drawRect(0, 0, 660, 500);
			sprite.graphics.endFill();
			unselected = new TextFormat();
			unselected.font = "Arial";
			unselected.align = "center";
			unselected.bold = "true";
			unselected.color = 0xFFFFFF;
			webUnselected = new TextFormat();
			webUnselected.font = "Arial";
			webUnselected.align = "center";
			webUnselected.bold = "true";
			webUnselected.color = 0xFFFFFF;
			webUnselected.size = 20;
			selected = new TextFormat();
			selected.font = "Arial";
			selected.bold = true;
			selected.align = "center";
			selected.color = 0;
			webSelected = new TextFormat();
			webSelected.font = "Arial";
			webSelected.bold = true;
			webSelected.align = "center";
			webSelected.color = 0;
			webUnselected.size = 20;
			var titleFormat:TextFormat = new TextFormat();
			titleFormat.font = "Arial";
			titleFormat.bold = true;
			titleFormat.align = "center";
			titleFormat.color = 0xFFFFFF;
			titleFormat.size = 50;
			var lCredFormat:TextFormat = new TextFormat();
			lCredFormat.font = "Arial";
			lCredFormat.bold = false;
			lCredFormat.align = "center";
			lCredFormat.color = 0xFFFFFF;
			lCredFormat.size = 20;
			var lWebFormat:TextFormat = new TextFormat();
			lWebFormat.font = "Arial";
			lWebFormat.bold = true;
			lWebFormat.align = "center";
			lWebFormat.color = 0xFFFFFF;
			lWebFormat.size = 18;
			var lSampleCredFormat:TextFormat = new TextFormat();
			lSampleCredFormat.font = "Arial";
			lSampleCredFormat.bold = false;
			lSampleCredFormat.align = "center";
			lSampleCredFormat.color = 0xFFFFFF;
			lSampleCredFormat.size = 14;
			var title:TextField = new TextField();
			title.text = "Credits";
			title.setTextFormat(titleFormat);
			sprite.addChild(title);
			title.width = 640;
			title.x = 0;
			title.y = 60;
			var lCredText:TextField = new TextField();
			lCredText.text = "Elias Holmlid : Programming & sound\n";
			lCredText.appendText("Dmitry Kurteanu : Programming & art\n");
			lCredText.appendText("Guy Lima Jr : Programming & art\n");
			lCredText.appendText("Stefan Mikaelsson : Programming & art\n");
			sprite.addChild(lCredText);
			lCredText.setTextFormat(lCredFormat);
			lCredText.width = 640;
			lCredText.y = 130;
			var web:GameButton = new GameButton();
			web.text = "continuitygame.com";
			web.setTextFormat(false, webUnselected);
			web.setTextFormat(true, webSelected);
			web.width = 240;
			var webB:Button = new Button(web, function ():void{
				navigateToURL(new URLRequest("http://www.continuitygame.com"), "_blank");
			});
			webB.x = 200;
			webB.y = 240;
			var lSampleText:TextField = new TextField();
			lSampleText.text = "This game uses a modified sample from\n";
			lSampleText.appendText("www.freesound.org: ");
			lSampleText.appendText("locked door.wav by Leady");
			sprite.addChild(lSampleText);
			lSampleText.setTextFormat(lSampleCredFormat);
			lSampleText.width = 640;
			lSampleText.y = 290;
			var bmm:GameButton = new GameButton();
			bmm.text = "Back to menu (B)";
			bmm.setTextFormat(true, selected);
			bmm.setTextFormat(false, unselected);
			var bmmB:Button = new Button(bmm, function ():void{
				EventManager.instance.dispatchEvent(new StartPlayingEvent(StartPlayingEvent.QUIT_TO_MENU));
			}, TDAKeyboard.B);
			bmmB.width = 240;
			bmmB.x = 200;
			bmmB.y = 360;
			addUIElement(bmmB);
			addUIElement(webB);
			GuiOverlay.instance.addChild(sprite);
		}
		override public function onResume():void{
			sprite.visible = true;
			super.onResume();
			activateAll();
		}
		override public function onPause():void{
			sprite.visible = false;
			super.onPause();
		}

	}
}//package TDA.GUI 

****************

//IButtonGraphics (TDA.GUI.IButtonGraphics)
package TDA.GUI {

	public interface IButtonGraphics extends IElementGraphics {

		function down():void;
		function up():void;

	}
}//package TDA.GUI 

****************

//IElementGraphics (TDA.GUI.IElementGraphics)
package TDA.GUI {
	import flash.display.*;

	public interface IElementGraphics {

		function get displayObject():DisplayObject;
		function select():void;
		function deselect():void;

	}
}//package TDA.GUI 

****************

//LevelMenuSystem (TDA.GUI.LevelMenuSystem)
package TDA.GUI {
	import flash.events.*;
	import TDA.scene.*;
	import TDA.events.*;
	import flash.ui.*;

	public class LevelMenuSystem extends Menu {

		private var mPopupRunning:Boolean;// = false
		private var mLeftMargin:int;// = 21
		private var popup:LevelPopUpMenu;
		private var mButton:Button;

		public function LevelMenuSystem(){
			popup = new LevelPopUpMenu();
			super();
			var _local1:LevelOptions = new LevelOptions();
			_local1.x = ((640 - _local1.width) - mLeftMargin);
			_local1.y = (480 - _local1.height);
			mButton = new Button(_local1, press, Keyboard.ESCAPE);
			mButton.alpha = 0.3;
			addUIElement(mButton);
			mButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOver);
			mButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOut);
			addChildSystem(popup);
			popup.pause();
			popup.sprite.x = 120;
			popup.sprite.y = 40;
			GuiOverlay.instance.addChild(sprite);
		}
		private function press():void{
			EventManager.instance.dispatchEvent(new LevelPauseEvent(LevelPauseEvent.TOGGLE_PAUSE));
			if (popup.isRunning){
				popup.pause();
				mButton.alpha = 0.3;
			} else {
				mButton.alpha = 1;
				popup.resume();
			};
			mPopupRunning = popup.isRunning;
		}
		override public function update(_arg1:Number):void{
			if (((!(popup.isRunning)) && (mPopupRunning))){
				mButton.alpha = 0.3;
				EventManager.instance.dispatchEvent(new LevelPauseEvent(LevelPauseEvent.TOGGLE_PAUSE));
				mPopupRunning = false;
			};
		}
		override public function onResume():void{
			super.onResume();
			sprite.visible = true;
			activateAll();
		}
		private function mouseOut(_arg1:MouseEvent):void{
			if (!popup.isRunning){
				mButton.alpha = 0.3;
			};
		}
		override public function onPause():void{
			super.onPause();
			sprite.visible = false;
			mPopupRunning = false;
			mButton.alpha = 0.3;
		}
		private function mouseOver(_arg1:MouseEvent):void{
			mButton.alpha = 1;
		}

	}
}//package TDA.GUI 

****************

//LevelPopUpMenu (TDA.GUI.LevelPopUpMenu)
package TDA.GUI {
	import flash.display.*;
	import flash.text.*;
	import TDA.scene.*;
	import TDA.events.*;
	import TDA.systems.audio.*;
	import TDA.helper.*;
	import resources.images.*;

	public class LevelPopUpMenu extends Menu {

		private var mMuteGraphics:GameButton;
		private var unselected:TextFormat;
		private var selected:TextFormat;

		public function LevelPopUpMenu(){
			super(true);
			unselected = new TextFormat();
			unselected.font = "Arial";
			unselected.align = "center";
			unselected.bold = "true";
			unselected.color = 0xFFFFFF;
			selected = new TextFormat();
			selected.font = "Arial";
			selected.align = "center";
			selected.bold = "true";
			selected.color = 0;
			var resume:GameButton = new GameButton();
			resume.text = "Resume (Esc)";
			resume.setTextFormat(true, selected);
			resume.setTextFormat(false, unselected);
			var restart:GameButton = new GameButton();
			restart.text = "Restart Level (R)";
			restart.setTextFormat(true, selected);
			restart.setTextFormat(false, unselected);
			var skip:GameButton = new GameButton();
			skip.text = "Skip Level (S)";
			skip.setTextFormat(true, selected);
			skip.setTextFormat(false, unselected);
			var quit:GameButton = new GameButton();
			quit.text = "Save & Quit (Q)";
			quit.setTextFormat(true, selected);
			quit.setTextFormat(false, unselected);
			mMuteGraphics = new GameButton();
			mMuteGraphics.text = "Mute (M)";
			mMuteGraphics.setTextFormat(true, selected);
			mMuteGraphics.setTextFormat(false, unselected);
			var resumeB:Button = new Button(resume, function ():void{
				pause();
			});
			var quitB:Button = new Button(quit, function ():void{
				EventManager.instance.dispatchEvent(new StartPlayingEvent(StartPlayingEvent.QUIT_GAME));
				pause();
			}, TDAKeyboard.Q);
			var restartB:Button = new Button(restart, function ():void{
				EventManager.instance.dispatchEvent(new StartPlayingEvent(StartPlayingEvent.RESTART_LEVEL));
				pause();
			}, TDAKeyboard.R);
			var skipB:Button = new Button(skip, function ():void{
				EventManager.instance.dispatchEvent(new StartPlayingEvent(StartPlayingEvent.SKIP_LEVEL));
				pause();
			}, TDAKeyboard.S);
			var muteB:Button = new Button(mMuteGraphics, this.mute, TDAKeyboard.M);
			var text:Bitmap = new Images.GeometryTextureBlack();
			sprite.graphics.beginBitmapFill(text.bitmapData);
			sprite.graphics.drawRoundRectComplex(0, 0, 400, 400, 40, 40, 40, 40);
			sprite.graphics.endFill();
			addUIElement(resumeB);
			addUIElement(muteB);
			addUIElement(restartB);
			addUIElement(skipB);
			addUIElement(quitB);
			resumeB.y = 80;
			resumeB.x = 100;
			muteB.y = 120;
			muteB.x = 100;
			restartB.y = 160;
			restartB.x = 100;
			skipB.y = 200;
			skipB.x = 100;
			quitB.y = 240;
			quitB.x = 100;
			GuiOverlay.instance.addChild(sprite);
		}
		override public function onPause():void{
			super.onPause();
			sprite.visible = false;
		}
		private function mute():void{
			var _local1:AudioMuteEvent;
			_local1 = new AudioMuteEvent(AudioMuteEvent.SWITCH_MUTE, !(AudioSystem.muted));
			EventManager.instance.dispatchEvent(_local1);
			setupMute();
		}
		override public function onResume():void{
			activateAll();
			super.onResume();
			sprite.visible = true;
			setupMute();
		}
		private function setupMute():void{
			if (AudioSystem.muted){
				mMuteGraphics.text = "Unmute (M)";
			} else {
				mMuteGraphics.text = "Mute (M)";
			};
			mMuteGraphics.setTextFormat(true, selected);
			mMuteGraphics.setTextFormat(false, unselected);
		}

	}
}//package TDA.GUI 

****************

//MainMenuSystem (TDA.GUI.MainMenuSystem)
package TDA.GUI {
	import flash.display.*;
	import flash.text.*;
	import TDA.scene.*;
	import TDA.events.*;
	import flash.net.*;
	import TDA.systems.audio.*;
	import TDA.helper.*;
	import resources.images.*;

	public class MainMenuSystem extends Menu {

		private var mMuteGraphics:GameButton;
		private var unselected:TextFormat;
		private var selected:TextFormat;

		public function MainMenuSystem(){
			super(true);
			var texture:Bitmap = new Images.GeometryTextureBlack();
			sprite.graphics.beginBitmapFill(texture.bitmapData);
			sprite.graphics.drawRect(0, 0, 660, 500);
			sprite.graphics.endFill();
			unselected = new TextFormat();
			unselected.font = "Arial";
			unselected.bold = true;
			unselected.align = "center";
			unselected.color = 0xFFFFFF;
			selected = new TextFormat();
			selected.font = "Arial";
			selected.bold = true;
			selected.align = "center";
			selected.color = 0;
			var titleFormat:TextFormat = new TextFormat();
			titleFormat.font = "Arial";
			titleFormat.bold = true;
			titleFormat.align = "center";
			titleFormat.color = 0xFFFFFF;
			titleFormat.size = 50;
			var title:TextField = new TextField();
			title.text = "Continuity";
			title.setTextFormat(titleFormat);
			sprite.addChild(title);
			title.width = 640;
			title.x = 0;
			title.y = 50;
			var pgg:GameButton = new GameButton();
			pgg.text = "Restart Game (R)";
			pgg.setTextFormat(false, unselected);
			pgg.setTextFormat(true, selected);
			var pgb:Button = new Button(pgg, play, TDAKeyboard.R);
			var cgg:GameButton = new GameButton();
			cgg.text = "Play Game (P)";
			cgg.setTextFormat(false, unselected);
			cgg.setTextFormat(true, selected);
			var cgb:Button = new Button(cgg, function ():void{
				EventManager.instance.dispatchEvent(new StartPlayingEvent(StartPlayingEvent.CONTINUE_GAME));
			}, TDAKeyboard.P);
			var lCredits:GameButton = new GameButton();
			lCredits.text = "Credits (C)";
			lCredits.setTextFormat(false, unselected);
			lCredits.setTextFormat(true, selected);
			var lCreditsBtn:Button = new Button(lCredits, function ():void{
				EventManager.instance.dispatchEvent(new ShowCreditsEvent());
			}, TDAKeyboard.C);
			mMuteGraphics = new GameButton();
			mMuteGraphics.text = "Mute (M)";
			mMuteGraphics.setTextFormat(false, unselected);
			mMuteGraphics.setTextFormat(true, selected);
			var mb:Button = new Button(mMuteGraphics, function ():void{
				var _local1:*;
				_local1 = new AudioMuteEvent(AudioMuteEvent.SWITCH_MUTE, !(AudioSystem.muted));
				EventManager.instance.dispatchEvent(_local1);
				setupMute();
			}, TDAKeyboard.M);
			var lMoreGames:ButtonBitmap = new ButtonBitmap(new SiteLock.LogoOff(), new SiteLock.LogoOn());
			var lMoreGamesBtn:Button = new Button(lMoreGames, function ():void{
				navigateToURL(new URLRequest(SiteLock.URL), "_blank");
			}, TDAKeyboard.D);
			cgb.x = 220;
			cgb.y = 160;
			pgb.x = 220;
			pgb.y = 200;
			lCreditsBtn.x = 220;
			lCreditsBtn.y = 240;
			mb.x = 220;
			mb.y = 280;
			lMoreGamesBtn.x = 220;
			lMoreGamesBtn.y = 380;
			addUIElement(cgb);
			addUIElement(pgb);
			addUIElement(lCreditsBtn);
			addUIElement(mb);
			addUIElement(lMoreGamesBtn);
			GuiOverlay.instance.addChild(sprite);
		}
		override public function onPause():void{
			sprite.visible = false;
			super.onPause();
		}
		private function play():void{
			EventManager.instance.dispatchEvent(new StartPlayingEvent(StartPlayingEvent.NEW_GAME));
		}
		private function setupMute():void{
			if (AudioSystem.muted){
				mMuteGraphics.text = "Unmute (M)";
			} else {
				mMuteGraphics.text = "Mute (M)";
			};
			mMuteGraphics.setTextFormat(true, selected);
			mMuteGraphics.setTextFormat(false, unselected);
		}
		override public function onResume():void{
			sprite.visible = true;
			super.onResume();
			activateAll();
			setupMute();
		}

	}
}//package TDA.GUI 

****************

//Menu (TDA.GUI.Menu)
package TDA.GUI {
	import flash.events.*;
	import flash.display.*;
	import TDA.systems.*;
	import TDA.events.*;
	import flash.ui.*;
	import TDA.helper.*;

	public class Menu extends SystemBase {

		private var mEnterDown:Boolean;// = false
		private var mSelectedIndex:int;// = 0
		private var mDisplay:Sprite;
		private var elements:Array;
		private var mKeyboardSelection:Boolean;
		private var mSpaceDown:Boolean;// = false

		public function Menu(_arg1:Boolean=false){
			elements = new Array();
			mDisplay = new Sprite();
			super();
			registerEventListener(TDAKeyboardEvent.KEY_DOWN, keyDown);
			registerEventListener(TDAKeyboardEvent.KEY_UP, keyUp);
			mKeyboardSelection = _arg1;
		}
		private function keyDown(_arg1:TDAKeyboardEvent):void{
			var _local4:Button;
			var _local5:Slider;
			var _local6:Slider;
			var _local7:Button;
			switch (_arg1.keyCode){
				case Keyboard.ENTER:
				case Keyboard.SPACE:
					if (((((mKeyboardSelection) && (!(mEnterDown)))) && (!(mSpaceDown)))){
						_local4 = (elements[mSelectedIndex] as Button);
						if (_local4 != null){
							_local4.press();
						};
					};
					if (_arg1.keyCode == Keyboard.ENTER){
						mEnterDown = true;
					} else {
						mSpaceDown = true;
					};
					break;
				case Keyboard.UP:
				case TDAKeyboard.W:
					if (mKeyboardSelection){
						focusDown();
					};
					break;
				case Keyboard.DOWN:
				case TDAKeyboard.S:
					if (mKeyboardSelection){
						focusUp();
					};
					break;
				case Keyboard.RIGHT:
				case TDAKeyboard.D:
					if (mKeyboardSelection){
						_local5 = (elements[mSelectedIndex] as Slider);
						if (_local5 != null){
							_local5.increment();
						};
					};
					break;
				case Keyboard.LEFT:
				case TDAKeyboard.A:
					if (mKeyboardSelection){
						_local6 = (elements[mSelectedIndex] as Slider);
						if (_local6 != null){
							_local6.decrement();
						};
					};
					break;
			};
			var _local2:int = elements.length;
			var _local3:int;
			while (_local3 < _local2) {
				_local7 = (elements[_local3] as Button);
				if (((!((_local7 == null))) && ((_local7.shortcutKeycode == _arg1.keyCode)))){
					select(_local3);
					_local7.press();
				};
				_local3++;
			};
		}
		private function focusUp():void{
			var _local1:int;
			if (mSelectedIndex == (elements.length - 1)){
				_local1 = 0;
			} else {
				_local1 = (mSelectedIndex + 1);
			};
			select(_local1);
			EventManager.instance.dispatchEvent(new GUIEvent(GUIEvent.FOCUS_CHANGED));
		}
		public function get sprite():Sprite{
			return (mDisplay);
		}
		public function addUIElement(_arg1:UIElement):void{
			var index:int;
			var element = _arg1;
			elements.push(element);
			mDisplay.addChild(element);
			index = (elements.length - 1);
			element.addEventListener(MouseEvent.MOUSE_DOWN, function (_arg1:Event):void{
				select(index);
			});
			element.addEventListener(MouseEvent.MOUSE_OVER, function (_arg1:Event):void{
				if (!element.isSelected){
					EventManager.instance.dispatchEvent(new GUIEvent(GUIEvent.FOCUS_CHANGED));
				};
				select(index);
			});
			if (((mKeyboardSelection) && ((elements.length == 1)))){
				UIElement(elements[0]).select();
			};
		}
		private function keyUp(_arg1:TDAKeyboardEvent):void{
			var _local2:Button;
			if (mKeyboardSelection){
				if (_arg1.keyCode == Keyboard.ENTER){
					mEnterDown = false;
				} else {
					if (_arg1.keyCode == Keyboard.SPACE){
						mSpaceDown = false;
					};
				};
				_local2 = (elements[mSelectedIndex] as Button);
				if (((((!(mEnterDown)) && (!(mSpaceDown)))) && (!((_local2 == null))))){
					_local2.release();
				};
			};
		}
		override public function onResume():void{
			select(mSelectedIndex);
			mSpaceDown = false;
			mEnterDown = false;
		}
		private function focusDown():void{
			var _local1:int;
			if (mSelectedIndex == 0){
				_local1 = (elements.length - 1);
			} else {
				_local1 = (mSelectedIndex - 1);
			};
			select(_local1);
			EventManager.instance.dispatchEvent(new GUIEvent(GUIEvent.FOCUS_CHANGED));
		}
		private function select(_arg1:int):void{
			if (elements.length > mSelectedIndex){
				UIElement(elements[mSelectedIndex]).deselect();
				UIElement(elements[_arg1]).select();
				mSelectedIndex = _arg1;
			};
		}
		protected function activateAll():void{
			var _local1:UIElement;
			for each (_local1 in elements) {
				_local1.activate();
			};
		}
		override public function onPause():void{
			var _local1:UIElement;
			mSelectedIndex = 0;
			for each (_local1 in elements) {
				_local1.deactivate();
			};
			mSpaceDown = false;
			mEnterDown = false;
		}

	}
}//package TDA.GUI 

****************

//MenuSystem (TDA.GUI.MenuSystem)
package TDA.GUI {
	import TDA.systems.*;
	import TDA.events.*;

	public class MenuSystem extends SystemBase {

		private var level:LevelMenuSystem;
		private var mCredits:CreditsMenuSystem;
		private var main:MainMenuSystem;

		public function MenuSystem(){
			main = new MainMenuSystem();
			level = new LevelMenuSystem();
			mCredits = new CreditsMenuSystem();
			super();
			addChildSystem(main);
			addChildSystem(level);
			addChildSystem(mCredits);
			level.pause();
			mCredits.pause();
			registerEventListener(LevelFinishedEvent.COMPLETED, finishLevel);
			registerEventListener(StartPlayingEvent.SKIP_LEVEL, skipLevel);
			registerEventListener(StartPlayingEvent.QUIT_TO_MENU, toMainMenu);
			registerEventListener(LevelTransitionEvent.FADED_OUT, pauseMenu);
			registerEventListener(StartPlayingEvent.LEVEL_STARTED, play);
			registerEventListener(ShowCreditsEvent.SHOW_CREDITS, showCredits);
		}
		private function skipLevel(_arg1:StartPlayingEvent):void{
			level.pause();
		}
		private function finishLevel(_arg1:LevelFinishedEvent):void{
			level.pause();
		}
		private function toMainMenu(_arg1:StartPlayingEvent):void{
			main.resume();
			level.pause();
			mCredits.pause();
		}
		private function play(_arg1:StartPlayingEvent):void{
			level.resume();
		}
		private function pauseMenu(_arg1:LevelTransitionEvent):void{
			pauseChildren();
		}
		private function showCredits(_arg1:ShowCreditsEvent):void{
			main.pause();
			mCredits.resume();
		}

	}
}//package TDA.GUI 

****************

//Slider (TDA.GUI.Slider)
package TDA.GUI {

	public class Slider extends UIElement {

		private var mValue:Number;
		private var mMinValue:Number;
		private var mCallback:Function;
		private var mMaxValue:Number;
		private var mGraphics:SliderGraphics;

		public function Slider(_arg1:SliderGraphics, _arg2:Function=null, _arg3:Number=0, _arg4:Number=1, _arg5:Number=0){
			mGraphics = _arg1;
			addChild(mGraphics);
			mCallback = _arg2;
			mMinValue = _arg3;
			mMaxValue = _arg4;
			value = _arg5;
			super();
		}
		public function set value(_arg1:Number):void{
			if (_arg1 > mMaxValue){
				mValue = mMaxValue;
			} else {
				if (_arg1 < mMinValue){
					mValue = mMinValue;
				} else {
					mValue = _arg1;
				};
			};
			if (mCallback != null){
				mCallback(mValue);
			};
			mGraphics.value = mValue;
		}
		public function increment():void{
			value = (mValue + ((mMaxValue - mMinValue) / 10));
		}
		public function get value():Number{
			return (mValue);
		}
		public function decrement():void{
			value = (mValue - ((mMaxValue - mMinValue) / 10));
		}
		override public function _select():void{
		}
		override public function _deselect():void{
		}

		public static function get banana():int{
			return (1);
		}

	}
}//package TDA.GUI 

****************

//SliderGraphics (TDA.GUI.SliderGraphics)
package TDA.GUI {
	import flash.display.*;

	public class SliderGraphics extends Sprite implements IElementGraphics {

		private var mBar:Sprite;
		private var mSelected:Sprite;
		private var mCurrent:Sprite;
		private var mHandle:Sprite;

		public function SliderGraphics(_arg1:Sprite, _arg2:Sprite, _arg3:Number, _arg4:Sprite=null){
			mBar = _arg1;
			mHandle = _arg2;
			graphics.beginFill(0xFF00);
			graphics.drawCircle(0, 0, 40);
			graphics.endFill();
			mCurrent = mBar;
			addChild(mBar);
			addChild(mHandle);
			if (_arg4 == null){
				mSelected = mBar;
			} else {
				mSelected = _arg4;
				addChild(mSelected);
				mSelected.visible = true;
			};
			this.value = _arg3;
		}
		public function get displayObject():DisplayObject{
			return (this);
		}
		public function set value(_arg1:Number):void{
			mHandle.x = ((mBar.width * _arg1) - (mHandle.width / 2));
		}
		public function select():void{
			if (mSelected != mCurrent){
				mSelected.visible = true;
				mCurrent.visible = true;
				mCurrent = mSelected;
			};
		}
		public function deselect():void{
			if (mBar != mCurrent){
				mBar.visible = true;
				mCurrent.visible = true;
				mCurrent = mSelected;
			};
		}

	}
}//package TDA.GUI 

****************

//UIElement (TDA.GUI.UIElement)
package TDA.GUI {
	import flash.display.*;

	public class UIElement extends Sprite {

		private var mActive:Boolean;// = true
		private var mSelected:Boolean;// = false

		public function _deselect():void{
		}
		public function get isSelected():Boolean{
			return (mSelected);
		}
		public function _deactivate():void{
		}
		public function align():void{
		}
		public function _activate():void{
		}
		final public function activate():void{
			mActive = true;
			_activate();
		}
		final public function deactivate():void{
			mActive = false;
			deselect();
			_deactivate();
		}
		final public function get isActive():Boolean{
			return (mActive);
		}
		public function _select():void{
		}
		final public function select():void{
			mSelected = true;
			_select();
		}
		final public function deselect():void{
			mSelected = false;
			_deselect();
		}

	}
}//package TDA.GUI 

****************

//AnimationHelper (TDA.helper.AnimationHelper)
package TDA.helper {
	import flash.display.*;

	public class AnimationHelper {

		public static function massPlay(_arg1:DisplayObjectContainer):void{
			var _local4:DisplayObjectContainer;
			if ((_arg1 is MovieClip)){
				MovieClip(_arg1).play();
			};
			var _local2:int = _arg1.numChildren;
			var _local3:int;
			while (_local3 < _local2) {
				_local4 = (_arg1.getChildAt(_local3) as DisplayObjectContainer);
				if (_local4){
					massPlay(_local4);
				};
				_local3++;
			};
		}
		public static function massStop(_arg1:DisplayObjectContainer):void{
			var _local4:DisplayObjectContainer;
			if ((_arg1 is MovieClip)){
				MovieClip(_arg1).stop();
			};
			var _local2:int = _arg1.numChildren;
			var _local3:int;
			while (_local3 < _local2) {
				_local4 = (_arg1.getChildAt(_local3) as DisplayObjectContainer);
				if (_local4){
					massStop(_local4);
				};
				_local3++;
			};
		}

	}
}//package TDA.helper 

****************

//ArrayHelper (TDA.helper.ArrayHelper)
package TDA.helper {

	public class ArrayHelper {

		public static function remove(_arg1:Array, _arg2:Object):Object{
			var _local3:int = contains(_arg1, _arg2);
			if (_local3 > -1){
				return (_arg1.splice(_local3, 1)[0]);
			};
			return (null);
		}
		public static function clear(_arg1:Array):void{
			_arg1.splice(0, _arg1.length);
		}
		public static function contains(_arg1:Array, _arg2:Object):int{
			var _local3:int = _arg1.length;
			var _local4:int;
			while (_local4 < _local3) {
				if (_arg1[_local4] == _arg2){
					return (_local4);
				};
				_local4++;
			};
			return (-1);
		}

	}
}//package TDA.helper 

****************

//Directions (TDA.helper.Directions)
package TDA.helper {

	public class Directions {

		public static const DOWN:int = 1;
		public static const LEFT:int = 2;
		public static const NONE:int = 5;
		public static const UP:int = 0;
		public static const RIGHT:int = 3;

	}
}//package TDA.helper 

****************

//TDAKeyboard (TDA.helper.TDAKeyboard)
package TDA.helper {

	public class TDAKeyboard {

		public static const FOUR:int = 52;
		public static const ZERO:int = 48;
		public static const TWO:int = 50;
		public static const FIVE:int = 53;
		public static const A:int = 65;
		public static const B:int = 66;
		public static const C:int = 67;
		public static const D:int = 68;
		public static const E:int = 69;
		public static const F:int = 70;
		public static const G:int = 71;
		public static const H:int = 72;
		public static const I:int = 73;
		public static const J:int = 74;
		public static const K:int = 75;
		public static const L:int = 76;
		public static const M:int = 77;
		public static const N:int = 78;
		public static const O:int = 79;
		public static const P:int = 80;
		public static const Q:int = 81;
		public static const R:int = 82;
		public static const S:int = 83;
		public static const T:int = 84;
		public static const U:int = 85;
		public static const V:int = 86;
		public static const W:int = 87;
		public static const X:int = 88;
		public static const Y:int = 89;
		public static const Z:int = 90;
		public static const ONE:int = 49;
		public static const NINE:int = 57;
		public static const SEVEN:int = 55;
		public static const SIX:int = 54;
		public static const EIGHT:int = 56;
		public static const THREE:int = 51;

		public function TDAKeyboard(){
			throw (new Error("Instance created of TDAKeyboard"));
		}
	}
}//package TDA.helper 

****************

//Vector2D (TDA.math.Vector2D)
package TDA.math {

	public class Vector2D {

		private var xValue:Number;// = 0
		private var yValue:Number;// = 0

		public function Vector2D(... _args){
			this.xValue = 0;
			this.yValue = 0;
			if (2 == _args.length){
				this.xValue = this.fixNumber(_args[0]);
				this.yValue = this.fixNumber(_args[1]);
			} else {
				if (1 == _args.length){
					if ((_args[0] is Vector2D)){
						this.xValue = _args[0].x;
						this.yValue = _args[0].y;
					};
				};
			};
		}
		public function cross(_arg1:Vector2D):Number{
			if ((_arg1 is Vector2D)){
				return (Math.abs(this.fixNumber(((this.xValue * _arg1.yValue) - (this.yValue * _arg1.xValue)))));
			};
			return (0);
		}
		public function set y(_arg1:Number):void{
			this.yValue = this.fixNumber(_arg1);
		}
		public function getLeftNormal():Vector2D{
			return (new Vector2D(-(this.yValue), this.xValue));
		}
		public function isEqualTo(_arg1:Vector2D):Boolean{
			if ((_arg1 is Vector2D)){
				if ((((this.xValue === _arg1.xValue)) && ((this.yValue === _arg1.yValue)))){
					return (true);
				};
			};
			return (false);
		}
		public function times(... _args):Vector2D{
			if (1 == _args.length){
				if ((_args[0] is Vector2D)){
					this.xValue = (this.xValue * _args[0].xValue);
					this.yValue = (this.yValue * _args[0].yValue);
				} else {
					if (isNaN(Number(_args[0]))){
						this.xValue = (this.yValue = 0);
					} else {
						this.xValue = (this.xValue * Number(_args[0]));
						this.yValue = (this.yValue * Number(_args[0]));
					};
				};
			} else {
				if (2 == _args.length){
					if (isNaN(Number(_args[0]))){
						this.xValue = 0;
					} else {
						this.xValue = (this.xValue * Number(_args[0]));
					};
					if (isNaN(Number(_args[1]))){
						this.yValue = 0;
					} else {
						this.yValue = (this.yValue * Number(_args[1]));
					};
				};
			};
			this.xValue = this.fixNumber(this.xValue);
			this.yValue = this.fixNumber(this.yValue);
			return (this);
		}
		public function set x(_arg1:Number):void{
			this.xValue = this.fixNumber(_arg1);
		}
		public function dot(_arg1:Vector2D):Number{
			if ((_arg1 is Vector2D)){
				return (this.fixNumber(((this.xValue * _arg1.xValue) + (this.yValue * _arg1.yValue))));
			};
			return (0);
		}
		public function isNormalTo(_arg1:Vector2D):Boolean{
			if ((_arg1 is Vector2D)){
				return ((this.dot(_arg1) === 0));
			};
			return (false);
		}
		public function get magnitude():Number{
			return (this.fixNumber(Math.sqrt((Math.pow(this.xValue, 2) + Math.pow(this.yValue, 2)))));
		}
		public function angleBetweenCos(_arg1:Vector2D):Number{
			if ((_arg1 is Vector2D)){
				return (this.fixNumber((this.dot(_arg1) / (this.magnitude * _arg1.magnitude))));
			};
			return (0);
		}
		public function swap(_arg1:Vector2D):Vector2D{
			var _local2:Number;
			var _local3:Number;
			if ((_arg1 is Vector2D)){
				_local2 = this.xValue;
				_local3 = this.yValue;
				this.xValue = _arg1.xValue;
				this.yValue = _arg1.yValue;
				_arg1.xValue = _local2;
				_arg1.yValue = _local3;
			};
			return (this);
		}
		public function invert():Vector2D{
			this.xValue = (this.xValue * -1);
			this.yValue = (this.yValue * -1);
			return (this);
		}
		public function project(_arg1:Vector2D):Vector2D{
			var _local2:Number;
			if ((_arg1 is Vector2D)){
				_local2 = (this.dot(_arg1) / Math.pow(_arg1.magnitude, 2));
				this.set(_arg1);
				this.times(_local2);
			};
			return (this);
		}
		public function plus(... _args):Vector2D{
			var _local2:int;
			while (_local2 < _args.length) {
				if ((_args[_local2] is Vector2D)){
					this.xValue = (this.xValue + _args[_local2].xValue);
					this.yValue = (this.yValue + _args[_local2].yValue);
				};
				_local2++;
			};
			this.xValue = this.fixNumber(this.xValue);
			this.yValue = this.fixNumber(this.yValue);
			return (this);
		}
		public function rotate(_arg1:Number):Vector2D{
			if (isNaN(Number(_arg1))){
				return (this);
			};
			var _local2:Number = Math.sqrt((Math.pow(this.xValue, 2) + Math.pow(this.yValue, 2)));
			var _local3:Number = (((Math.atan2(this.yValue, this.xValue) * (180 / Math.PI)) + Number(_arg1)) * (Math.PI / 180));
			this.xValue = this.fixNumber((_local2 * Math.cos(_local3)));
			this.yValue = this.fixNumber((_local2 * Math.sin(_local3)));
			return (this);
		}
		public function set(... _args):Vector2D{
			this.xValue = 0;
			this.yValue = 0;
			if (2 == _args.length){
				this.xValue = this.fixNumber(_args[0]);
				this.yValue = this.fixNumber(_args[1]);
			} else {
				if (1 == _args.length){
					if ((_args[0] is Vector2D)){
						this.xValue = _args[0].x;
						this.yValue = _args[0].y;
					};
				};
			};
			return (this);
		}
		public function angleBetweenSin(_arg1:Vector2D):Number{
			if ((_arg1 is Vector2D)){
				return (this.fixNumber((this.cross(_arg1) / (this.magnitude * _arg1.magnitude))));
			};
			return (0);
		}
		public function set angle(_arg1:Number):void{
			var _local2:Number = 0;
			if (!isNaN(Number(_arg1))){
				_local2 = (Number(_arg1) * (Math.PI / 180));
			};
			var _local3:Number = Math.sqrt((Math.pow(this.xValue, 2) + Math.pow(this.yValue, 2)));
			this.xValue = this.fixNumber((_local3 * Math.cos(_local2)));
			this.yValue = this.fixNumber((_local3 * Math.sin(_local2)));
		}
		public function set magnitude(_arg1:Number):void{
			if (isNaN(Number(_arg1))){
				this.xValue = (this.yValue = 0);
			};
			var _local2:Number = Math.sqrt((Math.pow(this.xValue, 2) + Math.pow(this.yValue, 2)));
			if (0 < _local2){
				this.times((Number(_arg1) / _local2));
			} else {
				this.yValue = 0;
				this.xValue = this.fixNumber(_arg1);
			};
		}
		public function get angle():Number{
			return (this.fixNumber((Math.atan2(this.yValue, this.xValue) * (180 / Math.PI))));
		}
		public function toString():String{
			return ((((("[" + this.xValue) + ",") + this.yValue) + "]"));
		}
		public function getRightNormal():Vector2D{
			return (new Vector2D(this.yValue, -(this.xValue)));
		}
		public function angleBetween(_arg1:Vector2D):Number{
			if ((_arg1 is Vector2D)){
				return (this.fixNumber((Math.acos((this.dot(_arg1) / (this.magnitude * _arg1.magnitude))) * (180 / Math.PI))));
			};
			return (0);
		}
		public function minus(... _args):Vector2D{
			var _local2:int;
			while (_local2 < _args.length) {
				if ((_args[_local2] is Vector2D)){
					this.xValue = (this.xValue - _args[_local2].xValue);
					this.yValue = (this.yValue - _args[_local2].yValue);
				};
				_local2++;
			};
			this.xValue = this.fixNumber(this.xValue);
			this.yValue = this.fixNumber(this.yValue);
			return (this);
		}
		public function get y():Number{
			return (this.yValue);
		}
		public function reflect(_arg1:Vector2D):Vector2D{
			var _local2:Vector2D;
			var _local3:Number;
			if ((_arg1 is Vector2D)){
				_local2 = new Vector2D(_arg1.yValue, -(_arg1.xValue));
				_local3 = (2 * this.angleBetween(_arg1));
				if (0 >= this.angleBetweenCos(_local2)){
					_local3 = (_local3 * -1);
				};
				this.rotate(_local3);
			};
			return (this);
		}
		private function fixNumber(_arg1:Number):Number{
			return ((isNaN(Number(_arg1))) ? 0 : (Math.round((Number(_arg1) * 100000)) / 100000));
		}
		public function get x():Number{
			return (this.xValue);
		}

	}
}//package TDA.math 

****************

//AABoundingBox (TDA.physics.AABoundingBox)
package TDA.physics {
	import TDA.math.*;

	public class AABoundingBox {

		public var upperBound:Vector2D;
		public var lowerBound:Vector2D;

		public function AABoundingBox(){
			lowerBound = new Vector2D();
			upperBound = new Vector2D();
			super();
		}
	}
}//package TDA.physics 

****************

//ContactListener (TDA.physics.ContactListener)
package TDA.physics {
	import TDA.events.*;
	import Box2D.Collision.*;
	import Box2D.Dynamics.Contacts.*;
	import Box2D.Collision.Shapes.*;
	import Box2D.Dynamics.*;
	import Box2D.Common.Math.*;
	import Box2D.Common.*;

	public class ContactListener extends b2ContactListener {

		private var mQueue:Array;

		public function ContactListener(){
			mQueue = new Array();
			super();
		}
		override public function Add(_arg1:b2ContactPoint):void{
			var _local3:PhysicsContactEvent;
			var _local2:ContactPoint = convertPointToPoint(_arg1);
			_local3 = new PhysicsContactEvent(PhysicsContactEvent.ADDED, _local2);
			mQueue.push(_local3);
		}
		public function dispatch():void{
			while (mQueue.length > 0) {
				EventManager.instance.dispatchEvent(mQueue.shift());
			};
		}
		override public function Remove(_arg1:b2ContactPoint):void{
			var _local3:PhysicsContactEvent;
			var _local2:ContactPoint = convertPointToPoint(_arg1);
			_local3 = new PhysicsContactEvent(PhysicsContactEvent.REMOVED, _local2);
			mQueue.push(_local3);
		}
		override public function Persist(_arg1:b2ContactPoint):void{
			var _local3:PhysicsContactEvent;
			var _local2:ContactPoint = convertPointToPoint(_arg1);
			_local3 = new PhysicsContactEvent(PhysicsContactEvent.PERSISTS, _local2);
			mQueue.push(_local3);
		}
		override public function Result(_arg1:b2ContactResult):void{
		}
		private function convertPointToPoint(_arg1:b2ContactPoint):ContactPoint{
			var _local2:ContactPoint = new ContactPoint();
			_local2.friction = _arg1.friction;
			_local2.physicsAspect1 = _arg1.shape1.m_body.GetUserData();
			_local2.physicsAspect2 = _arg1.shape2.m_body.GetUserData();
			_local2.positionX = _arg1.position.x;
			_local2.positionY = _arg1.position.y;
			_local2.normalX = _arg1.normal.x;
			_local2.normalY = _arg1.normal.y;
			_local2.velocityX = _arg1.velocity.x;
			_local2.velocityY = _arg1.velocity.y;
			_local2.restitution = _arg1.restitution;
			_local2.separation = _arg1.separation;
			return (_local2);
		}

	}
}//package TDA.physics 

****************

//ContactPoint (TDA.physics.ContactPoint)
package TDA.physics {
	import TDA.math.*;
	import TDA.aspects.*;

	public class ContactPoint {

		public var separation:Number;
		public var positionX:int;
		public var positionY:int;
		public var normalX:Number;
		public var physicsAspect1:PhysicsAspect;
		public var physicsAspect2:PhysicsAspect;
		public var normalY:Number;
		public var velocityX:int;
		public var velocityY:int;
		public var restitution:Number;
		private var mVelocity:Vector2D;
		public var friction:Number;
		private var mNormal:Vector2D;
		private var mPosition:Vector2D;

		public function getVelocity():Vector2D{
			if (!mVelocity){
				mVelocity = new Vector2D(velocityX, velocityY);
			};
			return (mVelocity);
		}
		public function getNormal():Vector2D{
			if (!mNormal){
				mNormal = new Vector2D(normalX, normalY);
			};
			return (mNormal);
		}
		public function getPosition():Vector2D{
			if (!mPosition){
				mPosition = new Vector2D(positionX, positionY);
			};
			return (mPosition);
		}

	}
}//package TDA.physics 

****************

//PlayerData (TDA.player.PlayerData)
package TDA.player {
	import flash.events.*;
	import flash.net.*;
	import resources.levels.*;

	public class PlayerData {

		private var mLocalData:SharedObject;
		private var mPlayingSkippedLevels:Boolean;
		private var mRoomsMoved:Array;
		private var mLevelTimes:Array;
		private var mSkippedLevels:Array;
		private var mCurrentLevel:int;

		private static var mInstance:PlayerData;

		public function PlayerData(_arg1:SingletonEnforcer){
			mLocalData = SharedObject.getLocal("player_data");
			mLocalData.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
			mPlayingSkippedLevels = Boolean(mLocalData.data.playingSkippedLevels);
			mCurrentLevel = int(mLocalData.data.currentLevel);
			mSkippedLevels = (mLocalData.data.skippedLevels as Array);
			if (mSkippedLevels == null){
				mSkippedLevels = new Array();
			};
			mLevelTimes = (mLocalData.data.levelTimes as Array);
			if (mLevelTimes == null){
				mLevelTimes = new Array(new LevelOrder().levels.length);
			};
			mRoomsMoved = (mLocalData.data.roomsMoved as Array);
			if (mRoomsMoved == null){
				mRoomsMoved = new Array(new LevelOrder().levels.length);
			};
		}
		public function get levelTimes():Array{
			return (mLevelTimes);
		}
		public function set levelTimes(_arg1:Array):void{
			mLocalData.data.levelTimes = _arg1;
			mLevelTimes = _arg1;
		}
		public function set playingSkippedLevels(_arg1:Boolean):void{
			mLocalData.data.playingSkippedLevels = _arg1;
			mPlayingSkippedLevels = _arg1;
		}
		public function flush():void{
			try {
				mLocalData.flush();
			} catch(e:Error) {
			};
		}
		public function get currentLevel():int{
			return (mCurrentLevel);
		}
		public function set skippedLevels(_arg1:Array):void{
			mLocalData.data.skippedLevels = _arg1;
			mSkippedLevels = _arg1;
		}
		public function get skippedLevels():Array{
			return (mSkippedLevels);
		}
		public function get playingSkippedLevels():Boolean{
			return (mPlayingSkippedLevels);
		}
		public function set currentLevel(_arg1:int):void{
			mLocalData.data.currentLevel = _arg1;
			mCurrentLevel = _arg1;
		}
		public function get roomsMoved():Array{
			return (mRoomsMoved);
		}
		public function set roomsMoved(_arg1:Array):void{
			mLocalData.data.roomsMoved = _arg1;
			mRoomsMoved = _arg1;
		}

		private static function netStatusHandler(_arg1:NetStatusEvent):void{
		}
		public static function get instance():PlayerData{
			if (mInstance == null){
				mInstance = new PlayerData(null);
			};
			return (mInstance);
		}

	}
}//package TDA.player 

class SingletonEnforcer {

	private function SingletonEnforcer(){
	}
}

****************

//GameWorld (TDA.scene.GameWorld)
package TDA.scene {
	import mx.core.*;
	import flash.display.*;
	import TDA.math.*;

	public final class GameWorld extends UIComponent {

		private static var mInstance:GameWorld;

		public function GameWorld(_arg1:SingletonEnforcer){
			mouseEnabled = false;
		}
		public function clear():void{
			while (numChildren > 0) {
				removeChildAt(0);
			};
		}

		public static function findObjectWorldPosition(_arg1:DisplayObject):Vector2D{
			var _local2:Vector2D = new Vector2D(0, 0);
			var _local3:DisplayObject = _arg1;
			while (_local3 != mInstance) {
				_local2.x = (_local2.x * _local3.scaleX);
				_local2.y = (_local2.y * _local3.scaleY);
				_local2.x = (_local2.x + _local3.x);
				_local2.y = (_local2.y + _local3.y);
				_local3 = _local3.parent;
			};
			return (_local2);
		}
		public static function get instance():GameWorld{
			if (mInstance == null){
				mInstance = new GameWorld(null);
			};
			return (mInstance);
		}

	}
}//package TDA.scene 

class SingletonEnforcer {

	private function SingletonEnforcer(){
	}
}

****************

//GuiOverlay (TDA.scene.GuiOverlay)
package TDA.scene {
	import mx.core.*;

	public class GuiOverlay extends UIComponent {

		private static var mInstance:GuiOverlay;

		public function GuiOverlay(_arg1:SingletonEnforcer){
			mouseEnabled = false;
			super();
		}
		public function clear():void{
			while (numChildren > 0) {
				removeChildAt(0);
			};
		}

		public static function get instance():GuiOverlay{
			if (mInstance == null){
				mInstance = new GuiOverlay(new SingletonEnforcer());
			};
			return (mInstance);
		}

	}
}//package TDA.scene 

class SingletonEnforcer {

	private function SingletonEnforcer(){
	}
}

****************

//CharacterAnimationSystem (TDA.systems.animation.CharacterAnimationSystem)
package TDA.systems.animation {
	import TDA.systems.*;
	import TDA.math.*;
	import TDA.events.*;
	import mx.collections.*;
	import TDA.entities.*;
	import TDA.aspects.*;

	public class CharacterAnimationSystem extends SystemBase {

		private var mGrid:RoomGrid;
		private var mCharacters:ArrayCollection;
		private var mPushing:Boolean;// = false
		private var mCharacter:Character;

		private static const THAW:int = 5;
		private static const RUN:int = 0;
		private static const JUMP:int = 1;
		private static const FREEZE:int = 4;
		private static const PUSH:int = 3;
		private static const FALL:int = 2;

		public function CharacterAnimationSystem(){
			var _local1:CharacterDoppelganger;
			var _local2:AnimationAspect;
			var _local3:CharacterMovieClip;
			mCharacters = new ArrayCollection();
			mGrid = RoomGrid(EntityManager.instance.getEntity(RoomGrid.NAME));
			super();
			mCharacter = Character(EntityManager.instance.getEntity(Character.NAME));
			mCharacters = EntityManager.instance.getEntityListByTag("CharacterDoppelganger");
			for each (_local1 in mCharacters) {
				_local2 = AnimationAspect(_local1.getAspect(AnimationAspect.NAME));
				_local3 = CharacterMovieClip(_local2.movieClip);
				_local3.stop();
			};
			registerEventListener(ZoomEvent.ZOOMED_IN, onZoom);
			registerEventListener(ZoomEvent.START_ZOOM_OUT, onZoom);
			registerEventListener(CharacterActionEvent.JUMP, onJump);
			registerEventListener(CharacterActionEvent.FALLING, onJump);
			registerEventListener(CharacterActionEvent.MOVE_LEFT, onRun);
			registerEventListener(CharacterActionEvent.MOVE_RIGHT, onRun);
			registerEventListener(CharacterActionEvent.PUSH_LEFT, onPush);
			registerEventListener(CharacterActionEvent.PUSH_RIGHT, onPush);
			registerEventListener(LevelFinishedEvent.COMPLETED, levelComplete);
		}
		private function animateDoppelgangers(_arg1:int, _arg2:Number):void{
			var _local3:CharacterDoppelganger;
			var _local4:AnimationAspect;
			var _local5:CharacterMovieClip;
			for each (_local3 in mCharacters) {
				_local4 = AnimationAspect(_local3.getAspect(AnimationAspect.NAME));
				_local5 = CharacterMovieClip(_local4.movieClip);
				switch (_arg1){
					case RUN:
						_local5.run(_arg2);
						break;
					case PUSH:
						_local5.pushWall(_arg2);
						break;
					case JUMP:
						_local5.jump(_arg2);
						break;
					case FALL:
						_local5.fall(_arg2);
						break;
					case FREEZE:
						_local5.freeze();
						break;
					case THAW:
						_local5.resume();
						break;
				};
			};
		}
		override public function onResume():void{
			animateDoppelgangers(THAW, 0);
		}
		override public function update(_arg1:Number):void{
			var _local3:CharacterDoppelganger;
			var _local2:Vector2D = mCharacter.physicsAspect.linearVelocity;
			if ((((_local2.y == 0)) && ((_local2.x == 0)))){
				if (!mPushing){
					animateDoppelgangers(RUN, 0);
				};
			};
			for each (_local3 in mCharacters) {
				updateRoomPosition(_local3, mCharacter);
			};
			if (!mCharacter.alive){
				setDoppelgangersInvisible();
			};
			mPushing = false;
		}
		private function onRun(_arg1:CharacterActionEvent):void{
			animateDoppelgangers(RUN, _arg1.velocity.x);
		}
		private function onJump(_arg1:CharacterActionEvent):void{
			if (_arg1.velocity.y > 0){
				animateDoppelgangers(FALL, _arg1.velocity.x);
			} else {
				if (_arg1.velocity.y < 0){
					animateDoppelgangers(JUMP, _arg1.velocity.x);
				};
			};
		}
		public function onZoom(_arg1:ZoomEvent):void{
			switch (_arg1.type){
				case ZoomEvent.START_ZOOM_OUT:
					animateDoppelgangers(FREEZE, 0);
					break;
				case ZoomEvent.ZOOMED_IN:
					animateDoppelgangers(THAW, 0);
					break;
			};
		}
		private function updateRoomPosition(_arg1:WorldEntity, _arg2:PhysicsEntity):void{
			var _local3:Room = _arg1.worldObjectAspect.currentRoom;
			_arg1.worldObjectAspect.x = ((_arg2.physicsAspect.position.x * PhysicsSystem.SCALE) - (mGrid.roomWidth * _local3.column));
			_arg1.worldObjectAspect.y = ((_arg2.physicsAspect.position.y * PhysicsSystem.SCALE) - (mGrid.roomHeight * _local3.row));
			if ((((((((_arg1.worldObjectAspect.x > mGrid.roomWidth)) || ((_arg1.worldObjectAspect.x < -(Character.WIDTH))))) || ((_arg1.worldObjectAspect.y < -(Character.HEIGHT))))) || ((_arg1.worldObjectAspect.y > mGrid.roomHeight)))){
				_arg1.worldObjectAspect.visible = false;
			} else {
				_arg1.worldObjectAspect.visible = true;
			};
		}
		private function setDoppelgangersInvisible():void{
			var _local1:CharacterDoppelganger;
			for each (_local1 in mCharacters) {
				if (mCharacter.worldObjectAspect.currentRoom != _local1.worldObjectAspect.currentRoom){
					_local1.worldObjectAspect.visible = false;
				};
			};
		}
		private function onPush(_arg1:CharacterActionEvent):void{
			if (_arg1.velocity.y == 0){
				mPushing = true;
				if (_arg1.type == CharacterActionEvent.PUSH_RIGHT){
					animateDoppelgangers(PUSH, 1);
				} else {
					animateDoppelgangers(PUSH, -1);
				};
			};
		}
		private function levelComplete(_arg1:LevelFinishedEvent):void{
			animateDoppelgangers(FREEZE, 0);
		}
		override public function onPause():void{
			animateDoppelgangers(FREEZE, 0);
		}

	}
}//package TDA.systems.animation 

****************

//KeysAnimationSystem (TDA.systems.animation.KeysAnimationSystem)
package TDA.systems.animation {
	import TDA.systems.*;
	import TDA.events.*;
	import mx.collections.*;
	import TDA.entities.*;
	import TDA.aspects.*;

	public class KeysAnimationSystem extends SystemBase {

		private var mZoomedIn:Boolean;// = false
		private var mAnimAspects:ArrayCollection;

		public function KeysAnimationSystem(){
			var _local2:Pickup;
			mAnimAspects = new ArrayCollection();
			super();
			var _local1:ArrayCollection = EntityManager.instance.getEntityListByTag("pickup");
			for each (_local2 in _local1) {
				mAnimAspects.addItem(_local2.getAspect(AnimationAspect.NAME));
			};
			registerEventListener(ZoomEvent.ZOOMED_IN, onZoomIn);
			registerEventListener(ZoomEvent.START_ZOOM_OUT, onZoomOut);
			registerEventListener(ZoomEvent.START_CLOSE_IN, onZoomOut);
			pauseAnimation();
		}
		private function pauseAnimation():void{
			var _local1:AnimationAspect;
			for each (_local1 in mAnimAspects) {
				_local1.movieClip.stop();
			};
		}
		private function resumeAnimation():void{
			var _local1:AnimationAspect;
			for each (_local1 in mAnimAspects) {
				if (!Pickup(_local1.parentEntity).pickedUp){
					_local1.movieClip.play();
				};
			};
		}
		public function onZoomIn(_arg1:ZoomEvent):void{
			resumeAnimation();
			mZoomedIn = true;
		}
		override public function onResume():void{
			if (mZoomedIn){
				resumeAnimation();
			};
		}
		public function onZoomOut(_arg1:ZoomEvent):void{
			pauseAnimation();
			mZoomedIn = false;
		}
		override public function onPause():void{
			pauseAnimation();
		}

	}
}//package TDA.systems.animation 

****************

//PulsatingRingAnimationSystem (TDA.systems.animation.PulsatingRingAnimationSystem)
package TDA.systems.animation {
	import TDA.systems.*;
	import TDA.events.*;
	import TDA.entities.*;

	public class PulsatingRingAnimationSystem extends SystemBase {

		private var mCurrentRoom:Room;
		private var mActive:Boolean;// = false
		private var mGrid:RoomGrid;
		private var mCharacter:Character;
		private var mRing:PulseRing;

		public static const OFFSET_TO_HEADX:int = 25;
		public static const OFFSET_TO_HEADY:int = 20;

		public function PulsatingRingAnimationSystem(_arg1:PulseRing){
			mRing = _arg1;
			mCharacter = Character(EntityManager.instance.getEntity(Character.NAME));
			mGrid = RoomGrid(EntityManager.instance.getEntity(RoomGrid.NAME));
			mCharacter.worldObjectAspect.addChild(mRing.worldObjectAspect);
			mRing.worldObjectAspect.x = -(OFFSET_TO_HEADX);
			mRing.worldObjectAspect.y = -(OFFSET_TO_HEADY);
			mRing.worldObjectAspect.visible = false;
			registerEventListener(HistoryEvent.HISTORY_REVERTED, start);
			registerEventListener(ZoomEvent.START_ZOOM_IN, stop);
		}
		public function start(_arg1:HistoryEvent):void{
			mActive = true;
			mRing.worldObjectAspect.visible = true;
		}
		private function stop(_arg1:ZoomEvent):void{
			if (mActive){
				mActive = false;
				mRing.worldObjectAspect.visible = false;
			};
		}

	}
}//package TDA.systems.animation 

****************

//AudioSystem (TDA.systems.audio.AudioSystem)
package TDA.systems.audio {
	import flash.media.*;
	import TDA.systems.*;
	import TDA.events.*;

	public class AudioSystem extends SystemBase {

		private var mGUISoundSystem:GUISoundSystem;
		private var mSoundFXSystem:IngameSoundFXSystem;
		private var mSoundTrans:SoundTransform;
		private var mMusicSystem:MusicSystem;

		private static var mMainVolume:Number = 1;
		private static var mMute:Boolean = false;

		public function AudioSystem(){
			mMusicSystem = new MusicSystem();
			mSoundFXSystem = new IngameSoundFXSystem();
			mSoundTrans = new SoundTransform();
			mGUISoundSystem = new GUISoundSystem();
			super();
			addChildSystem(mMusicSystem);
			addChildSystem(mSoundFXSystem);
			addChildSystem(mGUISoundSystem);
			registerEventListener(AudioVolumeEvent.SET_GLOBAL_VOLUME, setGlobalVolume);
			registerEventListener(AudioMuteEvent.SWITCH_MUTE, switchMute);
			setVolume(mMainVolume);
		}
		private function setGlobalVolume(_arg1:AudioVolumeEvent):void{
			mMainVolume = _arg1.volume;
			if (!mMute){
				setVolume(mMainVolume);
			};
		}
		private function switchMute(_arg1:AudioMuteEvent):void{
			mMute = _arg1.mute;
			if (mMute){
				setVolume(0);
			} else {
				setVolume(mMainVolume);
			};
		}
		private function setVolume(_arg1:Number):void{
			mSoundTrans.volume = _arg1;
			SoundMixer.soundTransform = mSoundTrans;
		}

		public static function get mainVolume():Number{
			return (mMainVolume);
		}
		public static function get muted():Boolean{
			return (mMute);
		}
		public static function get musicVolume():Number{
			return (MusicSystem.musicVolume);
		}

	}
}//package TDA.systems.audio 

****************

//ExteriorSoundFXSystem (TDA.systems.audio.ExteriorSoundFXSystem)
package TDA.systems.audio {
	import flash.events.*;
	import flash.media.*;
	import TDA.systems.*;
	import TDA.events.*;
	import TDA.audio.*;
	import resources.sounds.*;

	public class ExteriorSoundFXSystem extends SystemBase {

		private var mRespawn:TDASound;
		private var mFailMove:TDASound;
		private var mCardMove:TDASound;

		public function ExteriorSoundFXSystem(){
			mCardMove = new TDASound((new Sounds.CardMoveSound() as Sound), 1);
			mFailMove = new TDASound((new Sounds.FailMoveSound() as Sound), 0.2);
			mRespawn = new TDASound((new Sounds.RespawnSound() as Sound), 0.04);
			super();
			registerEventListener(RoomMovementEvent.MOVE_STARTED, roomMove);
			registerEventListener(FailedRoomMovementEvent.START_FAILED_MOVEMENT, failMove);
			registerEventListener(HistoryEvent.HISTORY_REVERTED, startRespawn);
			registerEventListener(ZoomEvent.START_ZOOM_IN, removeRespawn);
			registerEventListener(StartPlayingEvent.QUIT_TO_MENU, removeRespawn);
			registerEventListener(StartPlayingEvent.CONTINUE_GAME, startPlaying);
			registerEventListener(StartPlayingEvent.LEVEL_FIRST, startPlaying);
			registerEventListener(StartPlayingEvent.LEVEL_LAST, startPlaying);
			registerEventListener(StartPlayingEvent.LEVEL_NEXT, startPlaying);
			registerEventListener(StartPlayingEvent.LEVEL_SAME, startPlaying);
			registerEventListener(StartPlayingEvent.NEW_GAME, startPlaying);
			registerEventListener(StartPlayingEvent.SWITCH_TO_SKIPPED, startPlaying);
		}
		private function removeRespawn(_arg1:Event):void{
			mRespawn.stop();
		}
		private function startPlaying(_arg1:StartPlayingEvent):void{
			mRespawn.stop();
		}
		private function roomMove(_arg1:RoomMovementEvent):void{
			mCardMove.play();
		}
		private function startRespawn(_arg1:HistoryEvent):void{
			mRespawn.play(0, int.MAX_VALUE);
		}
		private function failMove(_arg1:FailedRoomMovementEvent):void{
			mFailMove.play();
		}

	}
}//package TDA.systems.audio 

****************

//GUISoundSystem (TDA.systems.audio.GUISoundSystem)
package TDA.systems.audio {
	import flash.media.*;
	import TDA.systems.*;
	import TDA.events.*;
	import TDA.audio.*;
	import resources.sounds.*;

	public class GUISoundSystem extends SystemBase {

		private var mFocusChange:TDASound;

		public function GUISoundSystem(){
			mFocusChange = new TDASound((new Sounds.CardMoveSound() as Sound), 0.4);
			super();
			registerEventListener(GUIEvent.FOCUS_CHANGED, focusChanged);
		}
		private function focusChanged(_arg1:GUIEvent):void{
			mFocusChange.play(160);
		}

	}
}//package TDA.systems.audio 

****************

//IngameSoundFXSystem (TDA.systems.audio.IngameSoundFXSystem)
package TDA.systems.audio {
	import flash.media.*;
	import TDA.systems.*;
	import TDA.events.*;
	import TDA.audio.*;
	import resources.sounds.*;

	public class IngameSoundFXSystem extends SystemBase {

		private var mZoom:TDASound;
		private var mInteriorSystem:InteriorSoundFXSystem;
		private var mCharDead:Boolean;
		private var mExteriorSystem:ExteriorSoundFXSystem;
		private var mLevelCompleted:TDASound;

		public function IngameSoundFXSystem(){
			mInteriorSystem = new InteriorSoundFXSystem();
			mExteriorSystem = new ExteriorSoundFXSystem();
			mZoom = new TDASound((new Sounds.ZoomSound() as Sound), 0.8);
			mLevelCompleted = new TDASound((new Sounds.LevelCompletedSound() as Sound), 1);
			super();
			addChildSystem(mInteriorSystem);
			addChildSystem(mExteriorSystem);
			registerEventListener(ZoomEvent.START_ZOOM_IN, startZoomIn);
			registerEventListener(ZoomEvent.START_ZOOM_OUT, startZoomOut);
			registerEventListener(CharacterDeathEvent.CHARACTER_DEATH, charDeath);
			registerEventListener(HistoryEvent.HISTORY_REVERTED, historyRev);
			registerEventListener(LevelFinishedEvent.COMPLETED, success);
			registerEventListener(StartPlayingEvent.LEVEL_STARTED, startPlaying);
		}
		private function startZoomIn(_arg1:ZoomEvent):void{
			mInteriorSystem.resume();
			mExteriorSystem.pause();
			if (!mCharDead){
				mZoom.play();
			};
		}
		private function success(_arg1:LevelFinishedEvent):void{
			mLevelCompleted.play();
		}
		private function startPlaying(_arg1:StartPlayingEvent):void{
			mInteriorSystem.resume();
			mExteriorSystem.resume();
			mCharDead = false;
		}
		private function historyRev(_arg1:HistoryEvent):void{
			mCharDead = false;
		}
		private function startZoomOut(_arg1:ZoomEvent):void{
			mInteriorSystem.pause();
			mExteriorSystem.resume();
			if (!mCharDead){
				mZoom.play();
			};
		}
		private function charDeath(_arg1:CharacterDeathEvent):void{
			mCharDead = true;
		}

	}
}//package TDA.systems.audio 

****************

//InteriorSoundFXSystem (TDA.systems.audio.InteriorSoundFXSystem)
package TDA.systems.audio {
	import flash.media.*;
	import TDA.systems.*;
	import TDA.events.*;
	import TDA.audio.*;
	import resources.sounds.*;

	public class InteriorSoundFXSystem extends SystemBase {

		private var mPickupSound:TDASound;
		private var mDeathSound:TDASound;
		private var mBorderCollSound:TDASound;
		private var mLandSound1:TDASound;
		private var mLandSound2:TDASound;
		private var mLandSound3:TDASound;
		private var mAllKeysSound:TDASound;
		private var mDoorLockedSound:TDASound;
		private var mJumpSound:TDASound;

		public function InteriorSoundFXSystem(){
			mJumpSound = new TDASound((new Sounds.JumpSound() as Sound), 0.25);
			mDeathSound = new TDASound((new Sounds.DeathSound() as Sound), 0.4);
			mPickupSound = new TDASound((new Sounds.PickupSound() as Sound), 0.08);
			mBorderCollSound = new TDASound((new Sounds.BorderCollSound() as Sound), 0.1);
			mDoorLockedSound = new TDASound((new Sounds.DoorLockedSound() as Sound), 0.7);
			mLandSound1 = new TDASound((new Sounds.LandSound1() as Sound), 0.37);
			mLandSound2 = new TDASound((new Sounds.LandSound2() as Sound), 0.34);
			mLandSound3 = new TDASound((new Sounds.LandSound3() as Sound), 0.32);
			mAllKeysSound = new TDASound((new Sounds.AllKeysSound() as Sound), 0.3);
			super();
			registerEventListener(CharacterActionEvent.JUMP, jump);
			registerEventListener(CharacterDeathEvent.CHARACTER_DEATH, death);
			registerEventListener(PickedUpEvent.ENTITY_PICKED_UP, pickup);
			registerEventListener(PlayerBorderCollideEvent.COLLIDE, borderCollide);
			registerEventListener(GoalLockedEvent.LOCKED, doorLocked);
			registerEventListener(CharacterActionEvent.LAND, land);
			registerEventListener(AllKeysPickedUpEvent.ALL_KEYS_PICKED_UP, allKeys);
		}
		private function doorLocked(_arg1:GoalLockedEvent):void{
			if (!mDoorLockedSound.isPlaying){
				mDoorLockedSound.play();
			};
		}
		private function land(_arg1:CharacterActionEvent):void{
			if (((((mLandSound1.isPlaying) || (mLandSound2.isPlaying))) || (mLandSound3.isPlaying))){
				return;
			};
			var _local2:int = Math.round((Math.random() * 3));
			if (_local2 == 0){
				mLandSound1.play();
			} else {
				if (_local2 == 1){
					mLandSound2.play();
				} else {
					mLandSound3.play();
				};
			};
		}
		private function jump(_arg1:CharacterActionEvent):void{
			mJumpSound.play();
		}
		private function borderCollide(_arg1:PlayerBorderCollideEvent):void{
			if (!mBorderCollSound.isPlaying){
				mBorderCollSound.play();
			};
		}
		private function death(_arg1:CharacterDeathEvent):void{
			if (!mDeathSound.isPlaying){
				mDeathSound.play();
			};
		}
		private function allKeys(_arg1:AllKeysPickedUpEvent):void{
			mAllKeysSound.play();
		}
		private function pickup(_arg1:PickedUpEvent):void{
			mPickupSound.play();
		}

	}
}//package TDA.systems.audio 

****************

//MusicSystem (TDA.systems.audio.MusicSystem)
package TDA.systems.audio {
	import flash.events.*;
	import flash.media.*;
	import TDA.systems.*;
	import TDA.events.*;
	import TDA.audio.*;
	import resources.sounds.*;

	public class MusicSystem extends SystemBase {

		private var mFadedIn:Boolean;// = false
		private var mInnerMusic:TDASound;
		private var mFadeOut:Boolean;// = false
		private var mFadeCount:Number;// = 0
		private var mFadeIn:Boolean;// = false
		private var mFadedOut:Boolean;// = true
		private var mEndgameSong:TDASound;
		private var mFadeSteps:Number;// = 10
		private var mCharDead:Boolean;
		private var mOuterMusic:TDASound;

		private static var mMaxVolume:Number = 0.8;

		public function MusicSystem(){
			mOuterMusic = new TDASound((new Sounds.OuterWorldMusic() as Sound), 1);
			mInnerMusic = new TDASound((new Sounds.InnerWorldMusic() as Sound), 0);
			mEndgameSong = new TDASound((new Sounds.EndGameMusic() as Sound), 0.6);
			super();
			registerEventListener(AudioVolumeEvent.SET_MUSIC_VOLUME, setVolume);
			registerEventListener(CharacterDeathEvent.CHARACTER_DEATH, charDead);
			registerEventListener(LevelFinishedEvent.COMPLETED, levelFinished);
			registerEventListener(StartPlayingEvent.QUIT_TO_MENU, quitToMainMenu);
			registerEventListener(LevelTransitionEvent.SHOW_THE_END, gameCompleted);
			registerEventListener(ZoomEvent.START_ZOOM_IN, onZoomIn);
			registerEventListener(ZoomEvent.START_ZOOM_OUT, onZoomOut);
			registerEventListener(HistoryEvent.HISTORY_REVERTED, historyRev);
			registerEventListener(StartPlayingEvent.RESTART_LEVEL, levelStart);
			registerEventListener(StartPlayingEvent.SKIP_LEVEL, levelStart);
			mInnerMusic.play(30, int.MAX_VALUE);
			mOuterMusic.play(30, int.MAX_VALUE);
			mInnerMusic.volume = 0;
			mOuterMusic.volume = mMaxVolume;
		}
		private function quitToMainMenu(_arg1:Event):void{
			onMainMenuShow();
		}
		override public function update(_arg1:Number):void{
			var _local2:Number;
			var _local3:Number;
			if (mFadeCount > 0){
				if (mFadeIn){
					_local2 = (((mFadeSteps - mFadeCount) / mFadeSteps) * mMaxVolume);
					_local3 = ((mFadeCount / mFadeSteps) * mMaxVolume);
					mInnerMusic.volume = _local2;
					mOuterMusic.volume = _local3;
					mFadeCount--;
					if (mFadeCount == 0){
						mFadeIn = false;
						mFadedIn = true;
						mFadeOut = false;
						mFadedOut = false;
						mInnerMusic.volume = mMaxVolume;
						mOuterMusic.volume = 0;
					};
				} else {
					if (mFadeOut){
						_local2 = ((mFadeCount / mFadeSteps) * mMaxVolume);
						_local3 = (((mFadeSteps - mFadeCount) / mFadeSteps) * mMaxVolume);
						mInnerMusic.volume = _local2;
						mOuterMusic.volume = _local3;
						mFadeCount--;
						if (mFadeCount == 0){
							mFadeOut = false;
							mFadedOut = true;
							mFadeIn = false;
							mFadedIn = false;
							mInnerMusic.volume = 0;
							mOuterMusic.volume = mMaxVolume;
						};
					};
				};
			};
		}
		private function onMainMenuShow():void{
			if (!mInnerMusic.isPlaying){
				mInnerMusic.play(30, int.MAX_VALUE);
				mInnerMusic.volume = 0;
			};
			if (!mOuterMusic.isPlaying){
				mOuterMusic.play(30, int.MAX_VALUE);
				mOuterMusic.volume = mMaxVolume;
			};
			if (((!(mFadedOut)) && (!(mFadeOut)))){
				zoomOut(80);
			};
			if (mEndgameSong.isPlaying){
				mEndgameSong.stop();
			};
			mCharDead = false;
		}
		private function levelFinished(_arg1:Event):void{
			zoomOut(80);
		}
		private function onZoomIn(_arg1:ZoomEvent):void{
			if (!mCharDead){
				zoomIn();
			};
		}
		private function zoomIn(_arg1:Number=10):void{
			mFadeCount = _arg1;
			mFadeSteps = _arg1;
			mFadeIn = true;
			mFadedIn = false;
			mFadeOut = false;
			mFadedOut = false;
		}
		private function charDead(_arg1:CharacterDeathEvent):void{
			mCharDead = true;
			zoomOut(80);
		}
		private function setVolume(_arg1:AudioVolumeEvent):void{
			mMaxVolume = _arg1.volume;
			if (((!(mFadeIn)) && (!(mFadeOut)))){
				if (mFadedIn){
					mInnerMusic.volume = mMaxVolume;
					mOuterMusic.volume = 0;
				} else {
					if (mFadedOut){
						mInnerMusic.volume = 0;
						mOuterMusic.volume = mMaxVolume;
					};
				};
			};
		}
		private function onZoomOut(_arg1:ZoomEvent):void{
			if (!mCharDead){
				zoomOut();
			};
		}
		private function historyRev(_arg1:HistoryEvent):void{
			mCharDead = false;
		}
		private function gameCompleted(_arg1:LevelTransitionEvent):void{
			mInnerMusic.stop();
			mOuterMusic.stop();
			mEndgameSong.play(30, int.MAX_VALUE);
			mEndgameSong.volume = (mMaxVolume * 0.7);
		}
		private function zoomOut(_arg1:Number=10):void{
			mFadeCount = _arg1;
			mFadeSteps = _arg1;
			mFadeOut = true;
			mFadedOut = false;
			mFadeIn = false;
			mFadedIn = false;
		}
		private function levelStart(_arg1:StartPlayingEvent):void{
			mCharDead = false;
			if (((((!(mFadedOut)) && (!(mFadeOut)))) && (!(mFadeIn)))){
				zoomOut(10);
			};
		}

		public static function get musicVolume():Number{
			return (mMaxVolume);
		}

	}
}//package TDA.systems.audio 

****************

//NewCameraSystem (TDA.systems.cameras.NewCameraSystem)
package TDA.systems.cameras {
	import mx.core.*;
	import TDA.systems.*;
	import TDA.scene.*;
	import TDA.math.*;
	import TDA.events.*;
	import TDA.entities.*;

	public class NewCameraSystem extends SystemBase {

		private const mZoomSteps:int = 10;

		private var mZoomedIn:Boolean;// = false
		private var mZoomCount:int;// = 0
		private var mCloseIn:Boolean;// = false
		private var mZoomVector:Vector2D;
		private var mGrid:RoomGrid;
		private var mZoomOut:Boolean;// = false
		private var mZoomedOut:Boolean;// = true
		private var mCloseInScale:Number;
		private var mZoomOutScale:Number;
		private var mGoal:Goal;
		private var mCloseInPos:Vector2D;
		private var mZoomInScale:Number;
		private var mZoomIn:Boolean;// = false
		private var mZoomOutPos:Vector2D;
		private var mZoomInPos:Vector2D;
		private var mCharacter:Character;
		private var mClosedIn:Boolean;// = false

		public function NewCameraSystem(){
			mZoomVector = new Vector2D();
			super();
			mGrid = RoomGrid(EntityManager.instance.getEntity(RoomGrid.NAME));
			mCharacter = Character(EntityManager.instance.getEntity(Character.NAME));
			mGoal = WorldEntity(EntityManager.instance.getEntity("goal"));
			registerEventListener(ZoomEvent.START_ZOOM_IN, zoom);
			registerEventListener(ZoomEvent.START_ZOOM_OUT, zoom);
			registerEventListener(ZoomEvent.START_CLOSE_IN, zoom);
			mZoomOutScale = zoomOutScale();
			mZoomInScale = zoomInScale();
			mZoomOutPos = zoomOutPos(mZoomOutScale);
			mZoomInPos = new Vector2D();
			mCloseInScale = closeInScale();
			mCloseInPos = new Vector2D(mZoomInPos.x, mZoomInPos.y);
		}
		override public function update(_arg1:Number):void{
			var _local2:Number;
			var _local3:Number;
			var _local4:Vector2D;
			var _local5:Number;
			var _local6:Number;
			if ((((mZoomCount > 0)) && (mZoomIn))){
				interpolateZoomIn(mZoomCount);
				mZoomCount--;
				if (mZoomCount == 0){
					mZoomedIn = true;
					mZoomIn = false;
					EventManager.instance.dispatchEvent(new ZoomEvent(ZoomEvent.ZOOMED_IN));
					mZoomInPos = GameWorld.findObjectWorldPosition(mCharacter.worldObjectAspect);
				};
			} else {
				if ((((mZoomCount > 0)) && (mZoomOut))){
					interpolateZoomOut(mZoomCount);
					mZoomCount--;
					if (mZoomCount == 0){
						mZoomedOut = true;
						mZoomOut = false;
						EventManager.instance.dispatchEvent(new ZoomEvent(ZoomEvent.ZOOMED_OUT));
					};
				} else {
					if ((((mZoomCount > 0)) && (mCloseIn))){
						interpolateCloseIn(mZoomCount);
						mZoomCount--;
						if (mZoomCount == 0){
							mClosedIn = true;
							mCloseIn = false;
							EventManager.instance.dispatchEvent(new ZoomEvent(ZoomEvent.CLOSED_IN));
						};
					} else {
						if (mZoomedOut){
							GameWorld.instance.x = mZoomOutPos.x;
							GameWorld.instance.y = mZoomOutPos.y;
							GameWorld.instance.scaleX = mZoomOutScale;
							GameWorld.instance.scaleY = mZoomOutScale;
						} else {
							if (((mZoomedIn) && (mCharacter.alive))){
								_local2 = 7.5;
								_local3 = 10;
								_local4 = GameWorld.findObjectWorldPosition(mCharacter.worldObjectAspect);
								mZoomInPos.x = int(CurveValue(_local4.x, mZoomInPos.x, _local3, 1, _arg1));
								mZoomInPos.y = int(CurveValue(_local4.y, mZoomInPos.y, _local2, 1, _arg1));
								GameWorld.instance.scaleX = mZoomInScale;
								GameWorld.instance.scaleY = mZoomInScale;
								_local5 = (mZoomInScale * mZoomInPos.x);
								_local6 = (mZoomInScale * mZoomInPos.y);
								GameWorld.instance.x = ((Application.application.width / 2) - (mZoomInScale * mZoomInPos.x));
								GameWorld.instance.y = ((Application.application.height / 2) - (mZoomInScale * mZoomInPos.y));
							} else {
								if (mClosedIn){
									_local4 = GameWorld.findObjectWorldPosition(mCharacter.worldObjectAspect);
									mCloseInPos.x = (_local4.x + (Character.WIDTH / 3.5));
									mCloseInPos.y = (_local4.y + (Character.HEIGHT / 6));
									GameWorld.instance.scaleX = mCloseInScale;
									GameWorld.instance.scaleY = mCloseInScale;
									GameWorld.instance.x = ((Application.application.width / 2) - (mCloseInScale * mCloseInPos.x));
									GameWorld.instance.y = ((Application.application.height / 2) - (mCloseInScale * mCloseInPos.y));
								};
							};
						};
					};
				};
			};
		}
		private function closeInScale():Number{
			return (180);
		}
		private function interpolateCloseIn(_arg1:Number):void{
			var _local2:Number = ((mCloseInScale - GameWorld.instance.scaleX) / Number(_arg1));
			GameWorld.instance.scaleX = (GameWorld.instance.scaleX + _local2);
			GameWorld.instance.scaleY = (GameWorld.instance.scaleY + _local2);
			var _local3:Vector2D = GameWorld.findObjectWorldPosition(mCharacter.worldObjectAspect);
			mCloseInPos.x = (_local3.x + (Character.WIDTH / 3.5));
			mCloseInPos.y = (_local3.y + (Character.HEIGHT / 6));
			var _local4:Number = ((((Application.application.width / 2) - (mCloseInScale * mCloseInPos.x)) - GameWorld.instance.x) / Number(_arg1));
			var _local5:Number = ((((Application.application.height / 2) - (mCloseInScale * mCloseInPos.y)) - GameWorld.instance.y) / Number(_arg1));
			GameWorld.instance.x = (GameWorld.instance.x + _local4);
			GameWorld.instance.y = (GameWorld.instance.y + _local5);
		}
		private function zoomInScale():Number{
			var _local1:Number = (Application.application.GAME_WORLD_WIDTH / mGrid.roomWidthWithBorder);
			var _local2:Number = (Application.application.GAME_WORLD_HEIGHT / mGrid.roomHeightWithBorder);
			_local2 = 1;
			_local1 = _local2;
			if (_local1 < _local2){
				return (_local1);
			};
			return (_local2);
		}
		private function CurveValue(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number):Number{
			var _local6:Number = (_arg5 / (1 / 30));
			var _local7:Number = (_arg1 - _arg2);
			_arg2 = (_arg2 + ((_local7 / _arg3) * _local6));
			return (_arg2);
		}
		private function zoomOutPos(_arg1:Number):Vector2D{
			var _local2:int = ((Application.application.width / 2) - (_arg1 * (mGrid.width / 2)));
			var _local3:int = ((Application.application.height / 2) - (_arg1 * (mGrid.height / 2)));
			_local3 = (_local3 - 10);
			return (new Vector2D(_local2, _local3));
		}
		private function zoom(_arg1:ZoomEvent):void{
			if (((((!(mZoomIn)) && (!(mZoomOut)))) && (!(mCloseIn)))){
				if (_arg1.type == ZoomEvent.START_ZOOM_IN){
					mZoomIn = true;
					mZoomedOut = false;
					mClosedIn = false;
					mZoomCount = mZoomSteps;
				} else {
					if (_arg1.type == ZoomEvent.START_ZOOM_OUT){
						mZoomedIn = false;
						mZoomOut = true;
						mClosedIn = false;
						mZoomCount = mZoomSteps;
					} else {
						if (_arg1.type == ZoomEvent.START_CLOSE_IN){
							mZoomedIn = false;
							mZoomedOut = false;
							mCloseIn = true;
							mZoomCount = mZoomSteps;
						};
					};
				};
			};
		}
		private function zoomOutScale():Number{
			var _local1:Number = (Application.application.GAME_WORLD_WIDTH / mGrid.width);
			var _local2:Number = (Application.application.GAME_WORLD_HEIGHT / mGrid.height);
			if (_local1 < _local2){
				return (_local1);
			};
			return (_local2);
		}
		private function interpolateZoomIn(_arg1:Number):void{
			var _local2:Number = ((mZoomInScale - GameWorld.instance.scaleX) / Number(_arg1));
			GameWorld.instance.scaleX = (GameWorld.instance.scaleX + _local2);
			GameWorld.instance.scaleY = (GameWorld.instance.scaleY + _local2);
			var _local3:Vector2D = GameWorld.findObjectWorldPosition(mCharacter.worldObjectAspect);
			var _local4:Number = ((((Application.application.width / 2) - (mZoomInScale * _local3.x)) - GameWorld.instance.x) / Number(_arg1));
			var _local5:Number = ((((Application.application.height / 2) - (mZoomInScale * _local3.y)) - GameWorld.instance.y) / Number(_arg1));
			GameWorld.instance.x = (GameWorld.instance.x + _local4);
			GameWorld.instance.y = (GameWorld.instance.y + _local5);
		}
		private function interpolateZoomOut(_arg1:Number):void{
			var _local2:Number = ((mZoomOutScale - GameWorld.instance.scaleX) / Number(_arg1));
			GameWorld.instance.scaleX = (GameWorld.instance.scaleX + _local2);
			GameWorld.instance.scaleY = (GameWorld.instance.scaleY + _local2);
			var _local3:Number = ((mZoomOutPos.x - GameWorld.instance.x) / Number(_arg1));
			var _local4:Number = ((mZoomOutPos.y - GameWorld.instance.y) / Number(_arg1));
			GameWorld.instance.x = (GameWorld.instance.x + _local3);
			GameWorld.instance.y = (GameWorld.instance.y + _local4);
		}

	}
}//package TDA.systems.cameras 

****************

//Behavior (TDA.systems.gamelogic.entitylogic.behaviors.Behavior)
package TDA.systems.gamelogic.entitylogic.behaviors {
	import TDA.systems.*;
	import TDA.entities.*;

	public class Behavior extends SystemBase {

		protected var mParentEntity:Entity;

		public function Behavior(_arg1:Entity){
			mParentEntity = _arg1;
			super();
		}
		public function get parent():Entity{
			return (mParentEntity);
		}
		public function registerEvents():void{
		}

	}
}//package TDA.systems.gamelogic.entitylogic.behaviors 

****************

//PickupableBehavior (TDA.systems.gamelogic.entitylogic.behaviors.PickupableBehavior)
package TDA.systems.gamelogic.entitylogic.behaviors {
	import TDA.events.*;
	import TDA.entities.*;

	public class PickupableBehavior extends Behavior {

		private var mPickedUp:Boolean;// = false

		public function PickupableBehavior(_arg1:Entity){
			super(_arg1);
		}
		private function contactAdded(_arg1:PhysicsContactEvent):void{
			var _local2:WorldEntity;
			var _local3:Character;
			var _local4:Boolean;
			var _local5:WorldEntity;
			var _local6:Character;
			var _local7:WorldEntity;
			var _local8:Character;
			var _local9:PickedUpEvent;
			if (!mPickedUp){
				_local5 = (_arg1.contactPoint.physicsAspect1.parentEntity as WorldEntity);
				_local6 = (_arg1.contactPoint.physicsAspect2.parentEntity as Character);
				if (((((!((_local5 == null))) && ((_local5 == parent)))) && (!((_local6 == null))))){
					_local2 = _local5;
					_local3 = _local6;
					_local4 = true;
				} else {
					_local7 = (_arg1.contactPoint.physicsAspect2.parentEntity as WorldEntity);
					_local8 = (_arg1.contactPoint.physicsAspect1.parentEntity as Character);
					if (((((!((_local7 == null))) && ((_local7 == parent)))) && (!((_local8 == null))))){
						_local2 = _local7;
						_local3 = _local8;
						_local4 = true;
					};
				};
				if (((_local4) && (_local3.alive))){
					mPickedUp = true;
					_local9 = new PickedUpEvent(PickedUpEvent.ENTITY_PICKED_UP, _local2, _local3);
					EventManager.instance.dispatchEvent(_local9);
					if ((_local2 as Pickup) != null){
						Pickup(_local2).pickup();
					};
				};
			};
		}
		override public function registerEvents():void{
			registerEventListener(PhysicsContactEvent.ADDED, contactAdded, 0, false);
		}

	}
}//package TDA.systems.gamelogic.entitylogic.behaviors 

****************

//EntityBehaviorsSystem (TDA.systems.gamelogic.entitylogic.EntityBehaviorsSystem)
package TDA.systems.gamelogic.entitylogic {
	import TDA.systems.*;
	import mx.collections.*;
	import TDA.entities.*;
	import TDA.aspects.*;
	import TDA.systems.gamelogic.entitylogic.behaviors.*;

	public class EntityBehaviorsSystem extends SystemBase {

		private var mEntities:ArrayCollection;

		public function EntityBehaviorsSystem(){
			mEntities = EntityManager.instance.getEntityListByAspectType(BehaviorAspect.NAME);
			setupBehaviors();
		}
		private function setupBehaviors():void{
			var _local1:Entity;
			var _local2:BehaviorAspect;
			var _local3:Behavior;
			for each (_local1 in mEntities) {
				_local2 = BehaviorAspect(_local1.getAspect(BehaviorAspect.NAME));
				if (_local2 != null){
					for each (_local3 in _local2.behaviors) {
						_local3.registerEvents();
						addChildSystem(_local3);
					};
				};
			};
		}
		override public function onResume():void{
			resumeChildren();
		}

	}
}//package TDA.systems.gamelogic.entitylogic 

****************

//HistorySystem (TDA.systems.gamelogic.levellogic.history.HistorySystem)
package TDA.systems.gamelogic.levellogic.history {
	import TDA.systems.*;
	import TDA.events.*;
	import TDA.entities.*;

	public class HistorySystem extends SystemBase {

		private var mLastSavePosition:PositionState;
		private var mReverting:Boolean;// = false
		private var mGrid:RoomGrid;
		private var mCharacter:Character;

		private static const ROOM_MOVE_TIME:Number = 0.075;

		public function HistorySystem(){
			mCharacter = Character(EntityManager.instance.getEntity(Character.NAME));
			mLastSavePosition = new PositionState(mCharacter);
			mGrid = RoomGrid(EntityManager.instance.getEntity(RoomGrid.NAME));
			registerEventListener(PickedUpEvent.ENTITY_PICKED_UP, onPickup);
			registerEventListener(HistoryEvent.REVERT_HISTORY, revert);
			registerEventListener(ZoomEvent.ZOOMED_OUT, zoomedOut);
		}
		private function zoomedOut(_arg1:ZoomEvent):void{
			if (mReverting){
				mLastSavePosition.resetTo();
				mCharacter.backToLife();
				mReverting = false;
				EventManager.instance.dispatchEvent(new HistoryEvent(HistoryEvent.HISTORY_REVERTED));
			};
		}
		private function revert(_arg1:HistoryEvent):void{
			mReverting = true;
			EventManager.instance.dispatchEvent(new ZoomEvent(ZoomEvent.START_ZOOM_OUT));
		}
		override public function update(_arg1:Number):void{
		}
		private function onPickup(_arg1:PickedUpEvent):void{
			mLastSavePosition = new PositionState(mCharacter);
		}

	}
}//package TDA.systems.gamelogic.levellogic.history 

****************

//PositionState (TDA.systems.gamelogic.levellogic.history.PositionState)
package TDA.systems.gamelogic.levellogic.history {
	import TDA.systems.*;
	import TDA.math.*;
	import TDA.entities.*;

	public class PositionState {

		private var mEntity:PhysicsEntity;
		private var mPosX:Number;
		private var mRoom:Room;
		private var mPosY:Number;
		private var mVel:Vector2D;

		public static const OFFSETY:Number = 0.4;

		public function PositionState(_arg1:PhysicsEntity){
			mEntity = _arg1;
			mRoom = _arg1.worldObjectAspect.currentRoom;
			mPosX = _arg1.worldObjectAspect.x;
			mPosY = (_arg1.worldObjectAspect.y - OFFSETY);
			mVel = _arg1.physicsAspect.linearVelocity;
		}
		public function resetTo():void{
			mEntity.worldObjectAspect.currentRoom.removeEntity(mEntity);
			mRoom.addEntity(mEntity);
			var _local1:RoomGrid = (EntityManager.instance.getEntity(RoomGrid.NAME) as RoomGrid);
			var _local2:Number = (((mRoom.column * _local1.roomWidth) + mPosX) / PhysicsSystem.SCALE);
			var _local3:Number = (((mRoom.row * _local1.roomHeight) + mPosY) / PhysicsSystem.SCALE);
			mEntity.physicsAspect.setXForm(new Vector2D(_local2, _local3), mEntity.physicsAspect.angle);
			mEntity.physicsAspect.linearVelocity = new Vector2D(0, 0);
		}

	}
}//package TDA.systems.gamelogic.levellogic.history 

****************

//BorderContactPersistancePreventionSystem (TDA.systems.gamelogic.levellogic.BorderContactPersistancePreventionSystem)
package TDA.systems.gamelogic.levellogic {
	import flash.events.*;
	import TDA.systems.*;
	import TDA.math.*;
	import TDA.events.*;
	import TDA.entities.*;
	import TDA.helper.*;

	public class BorderContactPersistancePreventionSystem extends SystemBase {

		private var mGrid:RoomGrid;
		private var mChar:Character;

		public function BorderContactPersistancePreventionSystem(){
			mChar = (EntityManager.instance.getEntity(Character.NAME) as Character);
			mGrid = (EntityManager.instance.getEntity(RoomGrid.NAME) as RoomGrid);
			registerEventListener(ZoomEvent.START_ZOOM_OUT, moveCharacter);
		}
		private function moveCharacter(_arg1:Event):void{
			var _local4:int;
			var _local2:Vector2D = mChar.physicsAspect.position;
			var _local3:Number = ((mGrid.roomWidth * mChar.worldObjectAspect.currentRoom.column) / PhysicsSystem.SCALE);
			if ((((mChar.worldObjectAspect.x >= 0.5)) && ((mChar.worldObjectAspect.x <= 2)))){
				_local4 = Directions.LEFT;
			} else {
				if (((((mChar.worldObjectAspect.x + Character.WIDTH) >= (mGrid.roomWidth - 2))) && (((mChar.worldObjectAspect.x + Character.WIDTH) <= mGrid.roomWidth)))){
					_local4 = Directions.RIGHT;
				} else {
					return;
				};
			};
			if (_local4 == Directions.LEFT){
				_local2.x = (_local3 + (2 / PhysicsSystem.SCALE));
			} else {
				if (_local4 == Directions.RIGHT){
					_local2.x = (_local3 + (((mGrid.roomWidth - Character.WIDTH) - 2) / PhysicsSystem.SCALE));
				};
			};
			mChar.physicsAspect.setXForm(_local2, mChar.physicsAspect.angle);
		}

	}
}//package TDA.systems.gamelogic.levellogic 

****************

//BorderIntersectionDetector (TDA.systems.gamelogic.levellogic.BorderIntersectionDetector)
package TDA.systems.gamelogic.levellogic {
	import TDA.systems.*;
	import TDA.events.*;
	import TDA.entities.*;

	public class BorderIntersectionDetector extends SystemBase {

		private var mCharacter:Character;
		private var mRoomGrid:RoomGrid;

		public function BorderIntersectionDetector(){
			mRoomGrid = RoomGrid(EntityManager.instance.getEntity(RoomGrid.NAME));
			mCharacter = Character(EntityManager.instance.getEntity(Character.NAME));
			super();
		}
		override public function update(_arg1:Number):void{
			var _local3:Room;
			var _local4:Room;
			var _local2:Array = getOverlappedRooms();
			if (_local2.length > 0){
				_local3 = mCharacter.worldObjectAspect.currentRoom;
				for each (_local4 in _local2) {
					EventManager.instance.dispatchEvent(new RoomOverlappedEvent(_local3, _local4));
				};
			};
		}
		private function getOverlappedRooms():Array{
			var _local3:Room;
			var _local4:Room;
			var _local1:Room = mCharacter.worldObjectAspect.currentRoom;
			var _local2:Array = new Array();
			if ((mCharacter.worldObjectAspect.x + Character.WIDTH) > mRoomGrid.roomWidth){
				_local3 = mRoomGrid.getRoom(_local1.row, (_local1.column + 1));
				if (_local3){
					_local2.push(_local3);
				};
			};
			if ((mCharacter.worldObjectAspect.y + Character.HEIGHT) > mRoomGrid.roomHeight){
				_local4 = mRoomGrid.getRoom((_local1.row + 1), _local1.column);
				if (_local4){
					_local2.push(_local4);
				};
			};
			return (_local2);
		}

	}
}//package TDA.systems.gamelogic.levellogic 

****************

//CharacterDeathSystem (TDA.systems.gamelogic.levellogic.CharacterDeathSystem)
package TDA.systems.gamelogic.levellogic {
	import TDA.systems.*;
	import TDA.timer.*;
	import TDA.math.*;
	import TDA.events.*;
	import TDA.entities.*;

	public class CharacterDeathSystem extends SystemBase {

		private var mCharacter:Character;
		private var mPrevVelocity:Vector2D;
		private var mTimer:GameTimer;

		private static const DEATH_DELAY:Number = 1.5;

		public function CharacterDeathSystem(){
			mPrevVelocity = new Vector2D();
			super();
			registerEventListener(PhysicsContactEvent.ADDED, contact);
			mCharacter = Character(EntityManager.instance.getEntity(Character.NAME));
			mTimer = new GameTimer(DEATH_DELAY, respawn);
			addTimer(mTimer);
		}
		private function respawn(_arg1:GameTimerEvent):void{
			EventManager.instance.dispatchEvent(new HistoryEvent(HistoryEvent.REVERT_HISTORY));
		}
		private function contact(_arg1:PhysicsContactEvent):void{
			var _local2:RoomBorder = (_arg1.contactPoint.physicsAspect1.parentEntity as RoomBorder);
			var _local3:Character = (_arg1.contactPoint.physicsAspect2.parentEntity as Character);
			if ((((_local2 == null)) || (!((_local3 == mCharacter))))){
				_local2 = (_arg1.contactPoint.physicsAspect2.parentEntity as RoomBorder);
				_local3 = (_arg1.contactPoint.physicsAspect1.parentEntity as Character);
				if ((((_local2 == null)) || (!((_local3 == mCharacter))))){
					return;
				};
			};
			if (((((mCharacter.alive) && ((_local2.side == Room.BOTTOM)))) && (!(_local2.isPassable)))){
				mCharacter.die();
				EventManager.instance.dispatchEvent(new CharacterDeathEvent());
				mCharacter.physicsAspect.isSensor = true;
				mCharacter.physicsAspect.linearVelocity = mPrevVelocity;
				mTimer.reset();
				mTimer.play();
			};
		}
		override public function update(_arg1:Number):void{
			var _local2:Vector2D;
			if (mCharacter.alive){
				_local2 = mCharacter.physicsAspect.linearVelocity;
				mPrevVelocity.x = _local2.x;
				mPrevVelocity.y = _local2.y;
			};
		}

	}
}//package TDA.systems.gamelogic.levellogic 

****************

//CharacterSuicideSystem (TDA.systems.gamelogic.levellogic.CharacterSuicideSystem)
package TDA.systems.gamelogic.levellogic {
	import TDA.systems.*;
	import TDA.math.*;
	import TDA.events.*;
	import TDA.entities.*;

	public class CharacterSuicideSystem extends SystemBase {

		private var mGrid:RoomGrid;
		private var mCharacter:Character;

		public function CharacterSuicideSystem(){
			mCharacter = (EntityManager.instance.getEntity(Character.NAME) as Character);
			mGrid = (EntityManager.instance.getEntity(RoomGrid.NAME) as RoomGrid);
		}
		override public function update(_arg1:Number):void{
			var _local2:Vector2D = mCharacter.physicsAspect.position;
			var _local3:Number = (((mGrid.roomWidth * mGrid.roomsWide) / PhysicsSystem.SCALE) + 10);
			var _local4:Number = (((mGrid.roomHeight * mGrid.roomsHigh) / PhysicsSystem.SCALE) + 10);
			if (((mCharacter.alive) && ((((((((_local2.x < -10)) || ((_local2.x > _local3)))) || ((_local2.y < -10)))) || ((_local2.y > _local4)))))){
				mCharacter.die();
				EventManager.instance.dispatchEvent(new CharacterDeathEvent());
			};
		}

	}
}//package TDA.systems.gamelogic.levellogic 

****************

//GoalSystem (TDA.systems.gamelogic.levellogic.GoalSystem)
package TDA.systems.gamelogic.levellogic {
	import TDA.systems.*;
	import TDA.events.*;
	import TDA.entities.*;

	public class GoalSystem extends SystemBase {

		public function GoalSystem(){
			registerEventListener(PhysicsContactEvent.ADDED, contactAdded, 0, false);
		}
		private function contactAdded(_arg1:PhysicsContactEvent):void{
			var _local2:Goal;
			var _local3:Character;
			var _local4:Boolean;
			var _local7:Goal;
			var _local8:Character;
			var _local9:GoalEvent;
			var _local5:Goal = (_arg1.contactPoint.physicsAspect1.parentEntity as Goal);
			var _local6:Character = (_arg1.contactPoint.physicsAspect2.parentEntity as Character);
			if (((!((_local5 == null))) && (!((_local6 == null))))){
				_local2 = _local5;
				_local3 = _local6;
				_local4 = true;
			} else {
				_local7 = (_arg1.contactPoint.physicsAspect2.parentEntity as Goal);
				_local8 = (_arg1.contactPoint.physicsAspect1.parentEntity as Character);
				if (((!((_local7 == null))) && (!((_local8 == null))))){
					_local2 = _local7;
					_local3 = _local8;
					_local4 = true;
				};
			};
			if (((_local4) && (_local3.alive))){
				_local9 = new GoalEvent(GoalEvent.REACHED, _local2, _local3);
				EventManager.instance.dispatchEvent(_local9);
			};
		}

	}
}//package TDA.systems.gamelogic.levellogic 

****************

//LevelFinishedSystem (TDA.systems.gamelogic.levellogic.LevelFinishedSystem)
package TDA.systems.gamelogic.levellogic {
	import TDA.systems.*;
	import TDA.events.*;
	import mx.collections.*;
	import TDA.entities.*;
	import TDA.aspects.*;
	import TDA.systems.gamelogic.entitylogic.behaviors.*;

	public class LevelFinishedSystem extends SystemBase {

		private var mFinished:Boolean;// = false
		private var mRoomsMoved:int;// = 0
		private var mLevelDuration:Number;// = 0
		private var mRemainingPickups:int;// = 0

		public function LevelFinishedSystem(){
			calculateNumberOfPickupEntities();
			registerEventListener(GoalEvent.REACHED, goalReached);
			registerEventListener(PickedUpEvent.ENTITY_PICKED_UP, entityPickedUp);
			registerEventListener(RoomMovementEvent.MOVE_STARTED, roomMoved);
		}
		private function calculateNumberOfPickupEntities():void{
			var _local2:Entity;
			var _local3:BehaviorAspect;
			var _local4:Behavior;
			var _local1:ArrayCollection = EntityManager.instance.getEntityListByAspectType(BehaviorAspect.NAME);
			for each (_local2 in _local1) {
				_local3 = BehaviorAspect(_local2.getAspect(BehaviorAspect.NAME));
				for each (_local4 in _local3.behaviors) {
					if ((_local4 as PickupableBehavior) != null){
						mRemainingPickups++;
					};
				};
			};
		}
		private function entityPickedUp(_arg1:PickedUpEvent):void{
			mRemainingPickups--;
			if (mRemainingPickups == 0){
				EventManager.instance.dispatchEvent(new AllKeysPickedUpEvent(AllKeysPickedUpEvent.ALL_KEYS_PICKED_UP));
			};
		}
		override public function update(_arg1:Number):void{
			mLevelDuration = (mLevelDuration + _arg1);
		}
		private function roomMoved(_arg1:RoomMovementEvent):void{
			if (!_arg1.undo){
				mRoomsMoved++;
			};
		}
		private function goalReached(_arg1:GoalEvent):void{
			if (mRemainingPickups == 0){
				pause(true);
				EventManager.instance.dispatchEvent(new LevelFinishedEvent(LevelFinishedEvent.COMPLETED, mLevelDuration, mRoomsMoved));
			} else {
				EventManager.instance.dispatchEvent(new GoalLockedEvent(GoalLockedEvent.LOCKED));
			};
		}

	}
}//package TDA.systems.gamelogic.levellogic 

****************

//TDADownloadProgressBar (TDA.systems.gui.loadinggui.TDADownloadProgressBar)
package TDA.systems.gui.loadinggui {
	import flash.utils.*;
	import flash.display.*;
	import flash.geom.*;
	import flash.text.*;
	import flash.events.*;
	import mx.events.*;
	import mx.preloaders.*;

	public class TDADownloadProgressBar extends Sprite implements IPreloaderDisplay {

		private var mLogoImage:Loader;
		private var mLoadingBar:Rectangle;
		private var mStageHeight:Number;// = 1
		private var mBytesLoaded:uint;// = 0
		private var mBackgroundColor:uint;// = 0
		private var mBackgroundAlpha:int;// = 1
		private var mStageWidth:Number;// = 1
		private var mBytesExpected:uint;// = 1
		private var mTimer:Timer;
		private var mLoadingBarColour:uint;// = 0xFFFFFF
		private var mFractionLoaded:Number;// = 0
		private var mInitComplete:Boolean;// = false

		private static const MIN_DURATION:int = 1000;
		private static const LOGO_TEXT:String = "Ragtime games";
		private static const CENTER_VERTICAL_OFFSET:int = 50;
		private static const BAR_HEIGHT:int = 10;
		private static const BAR_WIDTH:int = 130;
		private static const REDRAW_DELAY:int = 50;

		public function set stageHeight(_arg1:Number):void{
			mStageHeight = _arg1;
		}
		private function drawBackground():void{
			graphics.beginFill(0, 1);
			graphics.drawRect(0, 0, mStageWidth, mStageHeight);
			graphics.endFill();
		}
		public function initialize():void{
			drawBackground();
			loader_completeHandler(null);
		}
		public function set backgroundImage(_arg1:Object):void{
		}
		public function set backgroundSize(_arg1:String):void{
		}
		public function set backgroundAlpha(_arg1:Number):void{
			mBackgroundAlpha = _arg1;
		}
		private function initProgressHandler(_arg1:Event):void{
			if (!mInitComplete){
			};
		}
		public function set backgroundColor(_arg1:uint):void{
			mBackgroundColor = _arg1;
		}
		private function loader_completeHandler(_arg1:Event):void{
			var _local2:int = (mStageWidth / 2);
			var _local3:int = ((mStageHeight / 2) - CENTER_VERTICAL_OFFSET);
			var _local4:int = (_local2 - (BAR_WIDTH / 2));
			var _local5:int = (_local3 - (BAR_HEIGHT / 2));
			mLoadingBar = new Rectangle(_local4, _local5, BAR_WIDTH, BAR_HEIGHT);
			var _local6:TextField = new TextField();
			_local6.text = LOGO_TEXT;
			_local6.embedFonts = true;
			_local6.width = 127;
			_local6.x = (_local4 + ((BAR_WIDTH - _local6.width) / 2));
			_local6.y = (_local5 - 30);
			var _local7:Font = new TypeWriterFont();
			var _local8:TextFormat = new TextFormat();
			_local8.color = 0xFFFFFF;
			_local8.font = _local7.fontName;
			_local8.size = 18;
			_local6.setTextFormat(_local8);
			addChild(_local6);
			mTimer = new Timer(REDRAW_DELAY);
			mTimer.addEventListener(TimerEvent.TIMER, timerHandler);
			mTimer.start();
		}
		private function initCompleteHandler(_arg1:Event):void{
			mInitComplete = true;
		}
		private function draw():void{
			graphics.beginFill(mLoadingBarColour, 1);
			graphics.drawRect(mLoadingBar.x, mLoadingBar.y, (mLoadingBar.width * mFractionLoaded), mLoadingBar.height);
			graphics.endFill();
		}
		public function get stageHeight():Number{
			return (mStageHeight);
		}
		public function get backgroundSize():String{
			return ("auto");
		}
		private function completeHandler(_arg1:Event):void{
		}
		public function get backgroundImage():Object{
			return (null);
		}
		public function get backgroundColor():uint{
			return (mBackgroundColor);
		}
		private function progressHandler(_arg1:ProgressEvent):void{
			mBytesLoaded = _arg1.bytesLoaded;
			mBytesExpected = _arg1.bytesTotal;
			mFractionLoaded = (Number(mBytesLoaded) / Number(mBytesExpected));
		}
		public function get backgroundAlpha():Number{
			return (mBackgroundAlpha);
		}
		private function timerHandler(_arg1:Event):void{
			if (((mInitComplete) && ((getTimer() > MIN_DURATION)))){
				mTimer.stop();
				mTimer.removeEventListener(TimerEvent.TIMER, timerHandler);
				dispatchEvent(new Event(Event.COMPLETE));
			} else {
				draw();
			};
		}
		public function get stageWidth():Number{
			return (mStageWidth);
		}
		public function set preloader(_arg1:Sprite):void{
			_arg1.addEventListener(ProgressEvent.PROGRESS, progressHandler);
			_arg1.addEventListener(Event.COMPLETE, completeHandler);
			_arg1.addEventListener(FlexEvent.INIT_PROGRESS, initProgressHandler);
			_arg1.addEventListener(FlexEvent.INIT_COMPLETE, initCompleteHandler);
		}
		public function set stageWidth(_arg1:Number):void{
			mStageWidth = _arg1;
		}

	}
}//package TDA.systems.gui.loadinggui 

****************

//LevelPlayingSystem (TDA.systems.level.LevelPlayingSystem)
package TDA.systems.level {
	import TDA.systems.*;
	import mx.collections.*;
	import TDA.entities.*;
	import TDA.systems.cameras.*;
	import TDA.systems.gamelogic.levellogic.*;
	import TDA.systems.animation.*;
	import TDA.systems.gamelogic.levellogic.history.*;
	import TDA.systems.gamelogic.entitylogic.*;

	public class LevelPlayingSystem extends SystemBase {

		public function LevelPlayingSystem(_arg1:PhysicsSystem, _arg2:Array){
			addChildSystem(new HistorySystem());
			addChildSystem(new CharacterSuicideSystem());
			addChildSystem(new NewCameraSystem());
			addChildSystem(new BorderContactPersistancePreventionSystem());
			addChildSystem(new LevelFinishedSystem());
			addChildSystem(new EntityBehaviorsSystem());
			addChildSystem(new PlayerControllerSystem(new MicroSystem(_arg1), new MacroSystem()));
			addChildSystem(new PhysicSynchronizerSystem());
			addChildSystem(new RoomEntityPositioningSystem(new ArrayCollection(_arg2)));
			var _local3:PulseRing = new PulseRing("RespawnPulseRing");
			EntityManager.instance.addEntity(_local3, PulseRing.NAME);
			addChildSystem(new PulsatingRingAnimationSystem(_local3));
			addChildSystem(new CharacterAnimationSystem());
			addChildSystem(new KeysAnimationSystem());
		}
		override public function onResume():void{
			resumeChildren();
		}

	}
}//package TDA.systems.level 

****************

//LevelSystem (TDA.systems.level.LevelSystem)
package TDA.systems.level {
	import TDA.systems.*;
	import TDA.math.*;
	import TDA.entities.*;
	import TDA.physics.*;

	public class LevelSystem extends SystemBase {

		private var mPlaying:LevelPlayingSystem;
		private var grid:RoomGrid;
		private var mPhysicsSystem:PhysicsSystem;

		override public function onResume():void{
			mPlaying.resume();
		}
		public function loadLevel(_arg1:XML):void{
			var _local6:PhysicsEntity;
			var _local2:RoomGridLoader = new RoomGridLoader(540, 360);
			var _local3:RoomGrid = _local2.load(_arg1);
			var _local4:Array = _local3.physicsEntities;
			var _local5:Array = new Array();
			for each (_local6 in _local4) {
				_local5.push(_local6.physicsAspect);
			};
			mPhysicsSystem = constructPhysicsSystem(_local5);
			mPlaying = new LevelPlayingSystem(mPhysicsSystem, _local4);
			addChildSystem(mPlaying);
		}
		private function constructPhysicsSystem(_arg1:Array):PhysicsSystem{
			var _local2:Vector2D = new Vector2D(0, 400);
			var _local3:AABoundingBox = new AABoundingBox();
			_local3.lowerBound = new Vector2D(-100, -100);
			_local3.upperBound = new Vector2D(1800, 1800);
			var _local4:PhysicsSystem = new PhysicsSystem(_arg1, new Array(), _local2, _local3, (1 / 30), 1);
			_local4.setContactListener(new ContactListener());
			var _local5:int = PhysicsSystem.SCALE;
			return (_local4);
		}

	}
}//package TDA.systems.level 

****************

//RoomEntityLoader (TDA.systems.level.RoomEntityLoader)
package TDA.systems.level {
	import flash.display.*;
	import TDA.systems.*;
	import TDA.math.*;
	import TDA.entities.*;
	import TDA.aspects.*;
	import resources.images.*;

	public class RoomEntityLoader {

		private var mPixelHeight:int;
		private var mPOffsetX:int;
		private var mVerticalDivisions:int;
		private var mPixelWidth:int;
		private var mPOffsetY:int;
		private var mHorizontalDivisions:int;

		public function RoomEntityLoader(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:Number, _arg6:Number){
			mPixelWidth = _arg1;
			mPixelHeight = _arg2;
			mHorizontalDivisions = _arg3;
			mVerticalDivisions = _arg4;
			mPOffsetX = _arg5;
			mPOffsetY = _arg6;
		}
		private function loadWorldGeometry(_arg1:XML, _arg2:Sprite):WorldEntity{
			var _local3:String = _arg1.@type;
			var _local4:Array = getVertices(_arg1);
			var _local5:Number = convertToRoomX(int(_arg1.@x));
			var _local6:Number = convertToRoomX(int(_arg1.@y));
			drawGeometry(_local5, _local6, _local4, _arg2);
			convertVerticesToPhysics(_local4);
			var _local7:WallEntity = new WallEntity(null, _local5, _local6, _local4);
			EntityManager.instance.addEntity(_local7);
			return (_local7);
		}
		public function load(_arg1:XML, _arg2:Sprite):WorldEntity{
			var _local3:WorldEntity;
			var _local4:String = _arg1.@type;
			switch (_local4){
				case "start":
					_local3 = loadStart(_arg1);
					break;
				case "goal":
					_local3 = loadGoal(_arg1);
					break;
				case "pickup":
					_local3 = loadPickup(_arg1);
					break;
				default:
					if (_arg1.children().length() < 3){
						throw (new Error("Level contains geometry with less than three vertices!"));
					};
					_local3 = loadWorldGeometry(_arg1, _arg2);
			};
			var _local5:PhysicsEntity = (_local3 as PhysicsEntity);
			if (_local5 != null){
				setupPhysicsAspect(_local5.physicsAspect);
			};
			return (_local3);
		}
		private function loadPickup(_arg1:XML):WorldEntity{
			var _local2:Pickup = new Pickup("", convertToRoomX(_arg1.@x), convertToRoomY(_arg1.@y));
			EntityManager.instance.addEntity(_local2, "pickup", "worldEntity", "physicsEntity");
			return (_local2);
		}
		private function convertToRoomX(_arg1:int):Number{
			return (((_arg1 * mPixelWidth) / Number(mHorizontalDivisions)));
		}
		private function getVertices(_arg1:XML):Array{
			var _local5:Number;
			var _local6:Number;
			var _local2:XMLList = _arg1.children();
			var _local3:Array = new Array(_local2.length());
			var _local4:int;
			while (_local4 < _local2.length()) {
				_local5 = convertToRoomX(_local2[_local4].@x);
				_local6 = convertToRoomY(_local2[_local4].@y);
				_local3[_local4] = new Vector2D(_local5, _local6);
				_local4++;
			};
			return (_local3);
		}
		private function convertToRoomY(_arg1:int):Number{
			return (((_arg1 * mPixelHeight) / Number(mVerticalDivisions)));
		}
		private function setupPhysicsAspect(_arg1:PhysicsAspect):void{
			var _local2:Number = (mPOffsetX + (WorldEntity(_arg1.parentEntity).worldObjectAspect.x / PhysicsSystem.SCALE));
			var _local3:Number = (mPOffsetY + (WorldEntity(_arg1.parentEntity).worldObjectAspect.y / PhysicsSystem.SCALE));
			_arg1.setStartPosition(_local2, _local3);
		}
		private function drawGeometry(_arg1:Number, _arg2:Number, _arg3:Array, _arg4:Sprite):void{
			var _local5:Bitmap = new Images.GeometryTextureBlack();
			var _local6:Number = (Number(_arg3[0].x) + _arg1);
			var _local7:Number = (Number(_arg3[0].y) + _arg2);
			if (_local5 != null){
				_arg4.graphics.beginBitmapFill(_local5.bitmapData, null, false, false);
			} else {
				_arg4.graphics.beginFill(0);
			};
			_arg4.graphics.moveTo(_local6, _local7);
			var _local8 = 1;
			while (_local8 < _arg3.length) {
				_arg4.graphics.lineTo(int((_arg3[_local8].x + _arg1)), int((_arg3[_local8].y + _arg2)));
				_local8++;
			};
			_arg4.graphics.lineTo(_local6, _local7);
			_arg4.graphics.endFill();
		}
		private function convertVerticesToPhysics(_arg1:Array):void{
			var _local2:int;
			while (_local2 < _arg1.length) {
				_arg1[_local2].x = (_arg1[_local2].x / PhysicsSystem.SCALE);
				_arg1[_local2].y = (_arg1[_local2].y / PhysicsSystem.SCALE);
				_local2++;
			};
		}
		private function loadGoal(_arg1:XML):WorldEntity{
			var _local2:Goal = new Goal("goal", convertToRoomX(_arg1.@x), convertToRoomY(_arg1.@y));
			EntityManager.instance.addEntity(_local2, "goal", "worldEntity", "physicsEntity", "region");
			return (_local2);
		}
		public function constructBorder(_arg1:String):RoomBorder{
			var _local2:RoomBorder;
			var _local3:int;
			var _local4:int;
			var _local5:int;
			var _local6:int;
			var _local7:int;
			switch (_arg1){
				case "left":
					_local3 = Room.LEFT;
					_local4 = 0;
					_local5 = 0;
					_local6 = 1;
					_local7 = mPixelHeight;
					break;
				case "right":
					_local3 = Room.RIGHT;
					_local4 = (mPixelWidth - 1);
					_local5 = 0;
					_local6 = 1;
					_local7 = mPixelHeight;
					break;
				case "top":
					_local3 = Room.TOP;
					_local4 = 0;
					_local5 = 0;
					_local6 = mPixelWidth;
					_local7 = 1;
					break;
				default:
					_local3 = Room.BOTTOM;
					_local4 = 0;
					_local5 = (mPixelHeight - 1);
					_local6 = mPixelWidth;
					_local7 = 1;
					break;
			};
			_local2 = new RoomBorder("", _local3, _local4, _local5, _local6, _local7);
			var _local8:PolygonPhysicsAspect = _local2.polygonPhysicsAspect;
			var _local9:Array = new Array(4);
			_local9[0] = new Vector2D(0, 0);
			_local9[1] = new Vector2D(_local6, 0);
			_local9[2] = new Vector2D(_local6, _local7);
			_local9[3] = new Vector2D(0, _local7);
			convertVerticesToPhysics(_local9);
			setupPhysicsAspect(_local8);
			_local8.density = 0;
			_local8.restitution = 0;
			_local8.setVertices(_local9, _local9.length);
			return (_local2);
		}
		private function loadStart(_arg1:XML):WorldEntity{
			var _local2 = 15;
			var _local3:Character = new Character();
			_local3.worldObjectAspect.x = convertToRoomX(_arg1.@x);
			_local3.worldObjectAspect.y = (convertToRoomY(_arg1.@y) - _local2);
			EntityManager.instance.addEntity(_local3, "character", "worldEntity");
			return (_local3);
		}

	}
}//package TDA.systems.level 

****************

//RoomGridLoader (TDA.systems.level.RoomGridLoader)
package TDA.systems.level {
	import flash.display.*;
	import TDA.*;
	import TDA.entities.*;
	import resources.images.*;

	public class RoomGridLoader {

		private var mColored:Boolean;// = false
		private var mRoomWidth:int;
		private var mBackgrounds:Array;
		private var mRoomHeight:int;

		public function RoomGridLoader(_arg1:int, _arg2:int){
			mBackgrounds = new Array();
			super();
			mColored = Config.ColorRooms;
			mRoomWidth = _arg1;
			mRoomHeight = _arg2;
			mBackgrounds.push(new Images.RoomBackgr());
		}
		public function load(_arg1:XML):RoomGrid{
			var j:int;
			var curRoom:XMLList;
			var xml = _arg1;
			var roomLoader:RoomLoader = new RoomLoader(mRoomWidth, mRoomHeight, xml.@horizontalRoomDivisions, xml.@verticalRoomDivisions);
			var rows:int = xml.@rows;
			var columns:int = xml.@columns;
			var rooms:Array = new Array(rows);
			var roomColorIndex:int = (Math.random() * mBackgrounds.length);
			var backColor:Bitmap = mBackgrounds[roomColorIndex];
			var i:int;
			while (i < rows) {
				roomLoader.background = backColor;
				rooms[i] = new Array(columns);
				j = 0;
				while (j < columns) {
					curRoom = xml.room.(@row == i).(@column == j);
					if (curRoom.length() > 0){
						if (curRoom.@name == "HELPROOM"){
							roomLoader.background = new Images.RoomBackgrKeys();
						};
						rooms[i][j] = roomLoader.load(curRoom[0]);
					} else {
						rooms[i][j] = new Room("", i, j, mRoomWidth, mRoomHeight, new Sprite(), new Array());
					};
					roomColorIndex = (roomColorIndex + 1);
					j = (j + 1);
				};
				i = (i + 1);
			};
			var mm:MatchManager = new MatchManager(xml.matches[0]);
			var grid:RoomGrid = new RoomGrid(rooms, mRoomWidth, mRoomHeight, mm);
			EntityManager.instance.addEntity(grid, "grid", "roomGrid");
			return (grid);
		}

	}
}//package TDA.systems.level 

****************

//RoomLoader (TDA.systems.level.RoomLoader)
package TDA.systems.level {
	import flash.display.*;
	import TDA.systems.*;
	import TDA.entities.*;

	public class RoomLoader {

		private var mPixelHeight:int;
		private var mVerticalDivisions:int;
		private var mPixelWidth:int;
		private var mHorizontalDivisions:int;
		private var mBackground:Bitmap;

		public function RoomLoader(_arg1:int, _arg2:int, _arg3:int, _arg4:int){
			mPixelWidth = _arg1;
			mPixelHeight = _arg2;
			mHorizontalDivisions = _arg3;
			mVerticalDivisions = _arg4;
		}
		public function set background(_arg1:Bitmap):void{
			mBackground = _arg1;
		}
		public function load(_arg1:XML):Room{
			var _local12:XML;
			var _local13:Room;
			var _local14:WorldEntity;
			var _local2:Number = ((_arg1.@column * mPixelWidth) / Number(PhysicsSystem.SCALE));
			var _local3:RoomEntityLoader = new RoomEntityLoader(mPixelWidth, mPixelHeight, mHorizontalDivisions, mVerticalDivisions, ((_arg1.@column * mPixelWidth) / Number(PhysicsSystem.SCALE)), ((_arg1.@row * mPixelHeight) / Number(PhysicsSystem.SCALE)));
			var _local4:Sprite = new Sprite();
			if (mBackground){
				_local4.graphics.beginBitmapFill(mBackground.bitmapData, null, false, true);
				_local4.graphics.drawRect(0, 0, mPixelWidth, mPixelHeight);
				_local4.graphics.endFill();
			};
			var _local5:XMLList = _arg1.element;
			var _local6:Array = new Array();
			var _local7:Array = new Array();
			var _local8:RoomBorder = _local3.constructBorder("left");
			var _local9:RoomBorder = _local3.constructBorder("right");
			var _local10:RoomBorder = _local3.constructBorder("top");
			var _local11:RoomBorder = _local3.constructBorder("bottom");
			_local6.push(_local8);
			_local6.push(_local9);
			_local6.push(_local10);
			_local6.push(_local11);
			for each (_local12 in _local5) {
				_local14 = _local3.load(_local12, _local4);
				if ((_local14 is PhysicsEntity)){
					_local6.push(_local14);
				} else {
					_local7.push(_local14);
				};
			};
			_local13 = new Room(_arg1.@name, _arg1.@row, _arg1.@column, mPixelWidth, mPixelHeight, _local4, _local6);
			_local13.addRoomBorder(_local8);
			_local13.addRoomBorder(_local9);
			_local13.addRoomBorder(_local10);
			_local13.addRoomBorder(_local11);
			return (_local13);
		}

	}
}//package TDA.systems.level 

****************

//MainControllerSystem (TDA.systems.maincontroller.MainControllerSystem)
package TDA.systems.maincontroller {
	import TDA.systems.*;
	import TDA.*;
	import TDA.GUI.*;
	import TDA.systems.tracking.*;

	public class MainControllerSystem extends SystemBase {

		private var mLevelTransition:LevelTransition;
		private var mLevelManager:LevelManager;
		private var mMenuSystem:MenuSystem;

		public function MainControllerSystem(){
			mMenuSystem = new MenuSystem();
			addChildSystem(mMenuSystem);
			mLevelManager = new LevelManager();
			addChildSystem(mLevelManager);
			mLevelTransition = new LevelTransition();
			addChildSystem(mLevelTransition);
			if (Config.TrackUsers){
				addChildSystem(new AnalyticsTrackingSystem());
			};
		}
		override public function update(_arg1:Number):void{
		}

	}
}//package TDA.systems.maincontroller 

****************

//AnalyticsTrackingSystem (TDA.systems.tracking.AnalyticsTrackingSystem)
package TDA.systems.tracking {
	import mx.core.*;
	import TDA.systems.*;
	import TDA.*;
	import TDA.events.*;
	import flash.utils.*;
	import com.google.analytics.*;
	import resources.levels.*;

	public class AnalyticsTrackingSystem extends SystemBase {

		private var mInitialized:Boolean;// = false
		private var mTracker:GATracker;
		private var mLevelOrder:LevelOrder;
		private var mCurrentLevelMovedRooms:int;// = 0

		public function AnalyticsTrackingSystem(){
			mLevelOrder = new LevelOrder();
			super();
		}
		override public function update(_arg1:Number):void{
			if (((!((Application.application.stage == null))) && (!(mInitialized)))){
				mInitialized = true;
				initialize();
			};
		}
		public function gameContinued(_arg1:StartPlayingEvent):void{
			var event = _arg1;
			try {
				mTracker.trackEvent("GameEvent", "Continued", getClassName(mLevelOrder.levels[LevelManager.mCurrentLevel]));
			} catch(e:Error) {
			};
		}
		public function levelFinished(_arg1:LevelFinishedEvent):void{
			var timeInMinutes:int;
			var event = _arg1;
			try {
				timeInMinutes = Math.round((event.completionTime / 60));
				mTracker.trackEvent("LevelEvent", "Completed (moves)", getClassName(mLevelOrder.levels[LevelManager.mCurrentLevel]), event.moves);
				mTracker.trackEvent("LevelEvent", "Completed (completiontime)", getClassName(mLevelOrder.levels[LevelManager.mCurrentLevel]), timeInMinutes);
			} catch(e:Error) {
			};
		}
		public function levelLoaded(_arg1:LoadLevelEvent):void{
			var event = _arg1;
			mCurrentLevelMovedRooms = 0;
			try {
				mTracker.trackEvent("LevelEvent", "Loaded", getClassName(mLevelOrder.levels[LevelManager.mCurrentLevel]));
			} catch(e:Error) {
			};
		}
		public function levelRestarted(_arg1:StartPlayingEvent):void{
			var event = _arg1;
			try {
				mTracker.trackEvent("LevelEvent", "Restarted", getClassName(mLevelOrder.levels[LevelManager.mCurrentLevel]), mCurrentLevelMovedRooms);
			} catch(e:Error) {
			};
		}
		public function levelSkipped(_arg1:StartPlayingEvent):void{
			var event = _arg1;
			try {
				mTracker.trackEvent("LevelEvent", "Skipped", getClassName(mLevelOrder.levels[LevelManager.mCurrentLevel]), mCurrentLevelMovedRooms);
			} catch(e:Error) {
			};
		}
		public function characterDied(_arg1:CharacterDeathEvent):void{
			var event = _arg1;
			try {
				mTracker.trackEvent("CharacterEvent", "Death", getClassName(mLevelOrder.levels[LevelManager.mCurrentLevel]), mCurrentLevelMovedRooms);
			} catch(e:Error) {
			};
		}
		private function initialize():void{
			try {
				mTracker = new GATracker(Application.application.stage, Config.GoogleAnalyticsAccount, "AS3", Config.ShowTrackDebug);
				registerEventListener(LoadLevelEvent.LEVEL_LOADED, levelLoaded, 0, true);
				registerEventListener(LevelFinishedEvent.COMPLETED, levelFinished, 0, true);
				registerEventListener(StartPlayingEvent.SKIP_LEVEL, levelSkipped, 0, true);
				registerEventListener(CharacterDeathEvent.CHARACTER_DEATH, characterDied, 0, true);
				registerEventListener(RoomMovementEvent.MOVE_STARTED, roomMoved);
				registerEventListener(AudioMuteEvent.SWITCH_MUTE, mute);
				registerEventListener(StartPlayingEvent.RESTART_LEVEL, levelRestarted);
				registerEventListener(StartPlayingEvent.NEW_GAME, newGame);
				registerEventListener(StartPlayingEvent.CONTINUE_GAME, gameContinued);
				mTracker.trackEvent("GameEvent", "GameLoaded", Application.application.stage.loaderInfo.loaderURL, 0);
			} catch(e:Error) {
			};
		}
		public function newGame(_arg1:StartPlayingEvent):void{
			var event = _arg1;
			try {
				mTracker.trackEvent("GameEvent", "New game");
			} catch(e:Error) {
			};
		}
		private function getClassName(_arg1:Object):String{
			var _local2:String = getQualifiedClassName(_arg1);
			var _local3:int = (_local2.lastIndexOf(":") + 1);
			if (_local3 > 0){
				return (_local2.substring(_local3));
			};
			return (_local2);
		}
		private function roomMoved(_arg1:RoomMovementEvent):void{
			if (!_arg1.undo){
				mCurrentLevelMovedRooms++;
			};
		}
		public function mute(_arg1:AudioMuteEvent):void{
			var event = _arg1;
			try {
				if (event.mute){
					mTracker.trackEvent("AudioEvent", "Mute");
				} else {
					mTracker.trackEvent("AudioEvent", "Unmute");
				};
			} catch(e:Error) {
			};
		}

	}
}//package TDA.systems.tracking 

****************

//CharacterControllerSystem (TDA.systems.CharacterControllerSystem)
package TDA.systems {
	import TDA.math.*;
	import TDA.events.*;
	import TDA.entities.*;
	import flash.ui.*;
	import TDA.helper.*;

	public class CharacterControllerSystem extends SystemBase {

		private var mKeyDown:Boolean;// = false
		private var mKeyRight:Boolean;// = false
		private var mKeyLeft:Boolean;// = false
		private var mColls:int;// = 0
		private var mContactLeft:Boolean;// = false
		private var mChar:Character;
		private var mContactRight:Boolean;// = false
		private var mKeyUp:Boolean;// = false
		private var mJumpReady:Boolean;// = true
		private var mInAir:Boolean;// = false

		public static const RIGHT:Vector2D = new Vector2D(1, 0);
		public static const LEFT:Vector2D = new Vector2D(-1, 0);
		public static const ZERO:Vector2D = new Vector2D(((Character.WIDTH / 2) / PhysicsSystem.SCALE), ((Character.HEIGHT / 2) / PhysicsSystem.SCALE));
		public static const DOWN:Vector2D = new Vector2D(0, 1);
		public static const JUMP_SPEED:Number = 4500;
		public static const UP:Vector2D = new Vector2D(0, -1);
		public static const WALK_SPPED:Number = 170;

		public static var mUsedKeys:Array = new Array();

		public function CharacterControllerSystem(){
			this.mChar = Character(EntityManager.instance.getEntity(Character.NAME));
			registerEventListener(PhysicsContactEvent.ADDED, CheckContactEvent);
			registerEventListener(PhysicsContactEvent.PERSISTS, CheckContactEvent);
			registerEventListener(TDAKeyboardEvent.KEY_DOWN, ProcessInput);
			registerEventListener(TDAKeyboardEvent.KEY_UP, ProcessInput);
		}
		public function Down():void{
		}
		override public function update(_arg1:Number):void{
			if (((mInAir) && ((mChar.physicsAspect.linearVelocity.y == 0)))){
				EventManager.instance.dispatchEvent(new CharacterActionEvent(CharacterActionEvent.LAND, mChar.physicsAspect.linearVelocity));
				mInAir = false;
			};
			if (mColls == 0){
				EventManager.instance.dispatchEvent(new CharacterActionEvent(CharacterActionEvent.FALLING, mChar.physicsAspect.linearVelocity));
				mInAir = true;
			} else {
				if (mColls > 0){
					mInAir = false;
				};
			};
			if (mKeyLeft){
				MoveLeft();
			};
			if (mKeyRight){
				MoveRight();
			};
			if (mKeyUp){
				Jump();
			};
			if (mKeyDown){
				Down();
			};
			mColls = 0;
			mContactLeft = false;
			mContactRight = false;
		}
		public function Jump():void{
			if (((mJumpReady) && ((mColls > 0)))){
				mJumpReady = false;
				mChar.physicsAspect.applyImpulse(new Vector2D(0, ((UP.y * JUMP_SPEED) / PhysicsSystem.SCALE)), ZERO);
				EventManager.instance.dispatchEvent(new CharacterActionEvent(CharacterActionEvent.JUMP, mChar.physicsAspect.linearVelocity));
				mInAir = true;
			};
		}
		public function get usedKeys():Array{
			return (mUsedKeys.concat());
		}
		override public function onPause():void{
			mKeyDown = false;
			mKeyUp = false;
			mKeyLeft = false;
			mKeyRight = false;
		}
		public function MoveLeft():void{
			var _local1:Vector2D;
			if (!mInAir){
				if (!mContactLeft){
					_local1 = mChar.physicsAspect.linearVelocity;
					_local1.x = (-(WALK_SPPED) / PhysicsSystem.SCALE);
					mChar.physicsAspect.linearVelocity = _local1;
					if (mColls > 0){
						EventManager.instance.dispatchEvent(new CharacterActionEvent(CharacterActionEvent.MOVE_LEFT, _local1));
					};
				} else {
					EventManager.instance.dispatchEvent(new CharacterActionEvent(CharacterActionEvent.PUSH_LEFT, mChar.physicsAspect.linearVelocity));
				};
			} else {
				_local1 = mChar.physicsAspect.linearVelocity;
				_local1.x = (_local1.x - ((WALK_SPPED / 3) / PhysicsSystem.SCALE));
				if (_local1.x < (-(WALK_SPPED) / PhysicsSystem.SCALE)){
					_local1.x = (-(WALK_SPPED) / PhysicsSystem.SCALE);
				};
				mChar.physicsAspect.linearVelocity = _local1;
			};
		}
		private function CheckContactEvent(_arg1:PhysicsContactEvent):void{
			var _local2 = 1;
			if (((_arg1.contactPoint.physicsAspect1.isSensor) || (_arg1.contactPoint.physicsAspect2.isSensor))){
				return;
			};
			if (_arg1.contactPoint.physicsAspect1 == mChar.physicsAspect){
				_local2 = -1;
			} else {
				if (_arg1.contactPoint.physicsAspect2 == mChar.physicsAspect){
					_local2 = 1;
				} else {
					return;
				};
			};
			if ((_arg1.contactPoint.normalX * _local2) < -0.7){
				mContactRight = true;
			} else {
				if ((_arg1.contactPoint.normalX * _local2) > 0.7){
					mContactLeft = true;
				};
			};
			var _local3:Number = (_arg1.contactPoint.normalY * _local2);
			if (_local3 < -0.5){
				mColls++;
			};
		}
		public function MoveRight():void{
			var _local1:Vector2D;
			if (!mInAir){
				if (!mContactRight){
					_local1 = mChar.physicsAspect.linearVelocity;
					_local1.x = (WALK_SPPED / PhysicsSystem.SCALE);
					mChar.physicsAspect.linearVelocity = _local1;
					if (mColls > 0){
						EventManager.instance.dispatchEvent(new CharacterActionEvent(CharacterActionEvent.MOVE_RIGHT, _local1));
					};
				} else {
					EventManager.instance.dispatchEvent(new CharacterActionEvent(CharacterActionEvent.PUSH_RIGHT, mChar.physicsAspect.linearVelocity));
				};
			} else {
				_local1 = mChar.physicsAspect.linearVelocity;
				_local1.x = (_local1.x + ((WALK_SPPED / 3) / PhysicsSystem.SCALE));
				if (_local1.x > (WALK_SPPED / PhysicsSystem.SCALE)){
					_local1.x = (WALK_SPPED / PhysicsSystem.SCALE);
				};
				mChar.physicsAspect.linearVelocity = _local1;
			};
		}
		public function ProcessInput(_arg1:TDAKeyboardEvent):void{
			switch (_arg1.keyCode){
				case Keyboard.LEFT:
				case TDAKeyboard.A:
					if (_arg1.type == TDAKeyboardEvent.KEY_DOWN){
						mKeyLeft = true;
						mKeyRight = false;
					} else {
						mKeyLeft = false;
					};
					break;
				case Keyboard.RIGHT:
				case TDAKeyboard.D:
					if (_arg1.type == TDAKeyboardEvent.KEY_DOWN){
						mKeyRight = true;
						mKeyLeft = false;
					} else {
						mKeyRight = false;
					};
					break;
				case Keyboard.UP:
				case TDAKeyboard.W:
					if (_arg1.type == TDAKeyboardEvent.KEY_DOWN){
						mKeyUp = true;
					} else {
						mKeyUp = false;
						mJumpReady = true;
					};
					break;
				case Keyboard.DOWN:
				case TDAKeyboard.S:
					if (_arg1.type == TDAKeyboardEvent.KEY_DOWN){
						mKeyDown = true;
					} else {
						mKeyDown = false;
					};
					break;
			};
		}

	}
}//package TDA.systems 

****************

//FailedRoomMovementSystem (TDA.systems.FailedRoomMovementSystem)
package TDA.systems {
	import TDA.timer.*;
	import TDA.events.*;
	import TDA.entities.*;
	import TDA.helper.*;

	public class FailedRoomMovementSystem extends SystemBase {

		private var mStartX:int;
		private var mStartY:int;
		private var mRoom:Room;
		private var mEnd:int;// = 0
		private var mTweenX:Tweener;
		private var mTweenY:Tweener;

		private static const MOVE_DIST:int = 15;
		private static const FAIL_TIME:Number = 0.04;

		public function FailedRoomMovementSystem(){
			mTweenX = new Tweener(FAIL_TIME, 0, 0, tickX, movedOut, null, true, Tweener.BACK_AND_FORTH);
			mTweenY = new Tweener(FAIL_TIME, 0, 0, tickY, null, null, true, Tweener.BACK_AND_FORTH);
			super();
			registerEventListener(FailedRoomMovementEvent.START_FAILED_MOVEMENT, failMovement);
			addTimer(mTweenX);
			addTimer(mTweenY);
		}
		private function tickX(_arg1:Number):void{
			mRoom.worldObjectAspect.x = _arg1;
		}
		private function movedOut(_arg1:Number):void{
			mEnd++;
			if (mEnd == 2){
				mEnd = 0;
				mTweenX.pause();
				mTweenX.reset();
				mTweenY.pause();
				mTweenY.reset();
				EventManager.instance.dispatchEvent(new FailedRoomMovementEvent(FailedRoomMovementEvent.FAILED_MOVEMENT_ENDED, mRoom, -1));
				mRoom.worldObjectAspect.x = mStartX;
				mRoom.worldObjectAspect.y = mStartY;
			};
		}
		private function tickY(_arg1:Number):void{
			mRoom.worldObjectAspect.y = _arg1;
		}
		private function failMovement(_arg1:FailedRoomMovementEvent):void{
			if (mTweenX.isRunning){
				return;
			};
			mRoom = _arg1.room;
			mStartX = _arg1.room.worldObjectAspect.x;
			mStartY = _arg1.room.worldObjectAspect.y;
			mTweenX.startValue = mStartX;
			mTweenY.startValue = mStartY;
			switch (_arg1.direction){
				case Directions.LEFT:
					mTweenX.endValue = (_arg1.room.worldObjectAspect.x + MOVE_DIST);
					mTweenY.endValue = mTweenY.startValue;
					break;
				case Directions.RIGHT:
					mTweenX.endValue = (_arg1.room.worldObjectAspect.x - MOVE_DIST);
					mTweenY.endValue = mTweenY.startValue;
					break;
				case Directions.UP:
					mTweenY.endValue = (_arg1.room.worldObjectAspect.y + MOVE_DIST);
					mTweenX.endValue = mTweenX.startValue;
					break;
				case Directions.DOWN:
					mTweenY.endValue = (_arg1.room.worldObjectAspect.y - MOVE_DIST);
					mTweenX.endValue = mTweenX.startValue;
					break;
			};
			mTweenX.reset();
			mTweenX.play();
			mTweenY.reset();
			mTweenY.play();
		}

	}
}//package TDA.systems 

****************

//KeyboardRoomMovementSystem (TDA.systems.KeyboardRoomMovementSystem)
package TDA.systems {
	import TDA.events.*;
	import TDA.entities.*;
	import flash.ui.*;
	import TDA.helper.*;

	public class KeyboardRoomMovementSystem extends SystemBase {

		private var mEmptyRoom:Room;// = null
		private var mUnmovableRooms:Array;
		private var mDirection:int;// = 5
		private var mGrid:RoomGrid;
		private var mMoving:Boolean;// = false

		private static const MOVE_TIME:Number = 0.15;

		public function KeyboardRoomMovementSystem(){
			mUnmovableRooms = new Array();
			super();
			registerEventListener(TDAKeyboardEvent.KEY_DOWN, keyDown);
			registerEventListener(TDAKeyboardEvent.KEY_UP, keyUp);
			registerEventListener(RoomMovementEvent.MOVE_ENDED, function (_arg1:RoomMovementEvent):void{
				mMoving = false;
			});
			registerEventListener(RoomOverlappedEvent.OVERLAP, roomOverlapped);
			mGrid = RoomGrid(EntityManager.instance.getEntity(RoomGrid.NAME));
			findEmptyRoom();
		}
		private function keyDown(_arg1:TDAKeyboardEvent):void{
			if (((((!((mEmptyRoom == null))) && ((mDirection == Directions.NONE)))) && (!(mMoving)))){
				switch (_arg1.keyCode){
					case Keyboard.UP:
					case TDAKeyboard.W:
						mDirection = Directions.DOWN;
						break;
					case Keyboard.LEFT:
					case TDAKeyboard.A:
						mDirection = Directions.RIGHT;
						break;
					case Keyboard.RIGHT:
					case TDAKeyboard.D:
						mDirection = Directions.LEFT;
						break;
					case Keyboard.DOWN:
					case TDAKeyboard.S:
						mDirection = Directions.UP;
						break;
				};
				if (mDirection != Directions.NONE){
					moveRoom(mDirection);
				};
			};
		}
		private function roomOverlapped(_arg1:RoomOverlappedEvent):void{
			mUnmovableRooms.push(_arg1.room1);
			mUnmovableRooms.push(_arg1.room2);
		}
		override public function update(_arg1:Number):void{
			mUnmovableRooms.splice(0, mUnmovableRooms.length);
		}
		private function getAdjacentRoom(_arg1:int):Room{
			var _local2:int;
			var _local3:int;
			switch (_arg1){
				case Directions.UP:
					_local2 = -1;
					break;
				case Directions.DOWN:
					_local2 = 1;
					break;
				case Directions.LEFT:
					_local3 = -1;
					break;
				case Directions.RIGHT:
					_local3 = 1;
					break;
				default:
					throw (new Error("Wanted an adjacent room on in an invalid direction"));
			};
			return (mGrid.getRoom((mEmptyRoom.row + _local2), (mEmptyRoom.column + _local3)));
		}
		private function moveRoom(_arg1:int):void{
			var _local2:Room = getAdjacentRoom(_arg1);
			if (ArrayHelper.contains(mUnmovableRooms, _local2) < 0){
				if (_local2 != null){
					EventManager.instance.dispatchEvent(new RoomMovementEvent(RoomMovementEvent.MOVE_STARTED, mEmptyRoom.row, mEmptyRoom.column, _local2.row, _local2.column, MOVE_TIME));
					mMoving = true;
				};
			} else {
				EventManager.instance.dispatchEvent(new FailedRoomMovementEvent(FailedRoomMovementEvent.START_FAILED_MOVEMENT, _local2, _arg1));
			};
		}
		private function findEmptyRoom():void{
			var _local2:int;
			var _local3:Room;
			var _local1:int;
			while (_local1 < mGrid.roomsHigh) {
				_local2 = 0;
				while (_local2 < mGrid.roomsWide) {
					_local3 = mGrid.getRoom(_local1, _local2);
					if (_local3.isEmpty){
						mEmptyRoom = _local3;
						return;
					};
					_local2++;
				};
				_local1++;
			};
		}
		override public function onPause():void{
			mDirection = Directions.NONE;
		}
		private function keyUp(_arg1:TDAKeyboardEvent):void{
			if (((!((mEmptyRoom == null))) && (!((mDirection == Directions.NONE))))){
				switch (_arg1.keyCode){
					case Keyboard.UP:
					case TDAKeyboard.W:
						if (mDirection == Directions.DOWN){
							mDirection = Directions.NONE;
						};
						break;
					case Keyboard.LEFT:
					case TDAKeyboard.A:
						if (mDirection == Directions.RIGHT){
							mDirection = Directions.NONE;
						};
						break;
					case Keyboard.RIGHT:
					case TDAKeyboard.D:
						if (mDirection == Directions.LEFT){
							mDirection = Directions.NONE;
						};
						break;
					case Keyboard.DOWN:
					case TDAKeyboard.S:
						if (mDirection == Directions.UP){
							mDirection = Directions.NONE;
						};
						break;
				};
			};
		}

	}
}//package TDA.systems 

****************

//LevelManager (TDA.systems.LevelManager)
package TDA.systems {
	import TDA.scene.*;
	import TDA.events.*;
	import TDA.entities.*;
	import TDA.player.*;
	import resources.levels.*;
	import TDA.systems.level.*;

	public class LevelManager extends SystemBase {

		private var mSkippedList:Array;
		private var mLevelSet:int;// = 0
		private var mLevelList:Array;
		private var mLevelSystem:LevelSystem;
		private var mRoomsMoved:int;// = 0
		private var mLevelOrder:LevelOrder;
		private var mLevelNr:int;// = 0

		public static const LEVELSET_MAIN:int = 0;
		public static const LEVELSET_SKIPPED:int = 1;

		public static var mLevelsLeft:int = 0;
		public static var mCurrentLevel:int = 0;

		public function LevelManager(){
			mLevelList = new Array();
			mSkippedList = new Array();
			mLevelOrder = new LevelOrder();
			super();
			registerEventListener(LevelFinishedEvent.COMPLETED, levelFinished);
			registerEventListener(StartPlayingEvent.NEW_GAME, NewGame);
			registerEventListener(StartPlayingEvent.CONTINUE_GAME, ContinueGame);
			registerEventListener(StartPlayingEvent.QUIT_GAME, QuitGame);
			registerEventListener(StartPlayingEvent.SKIP_LEVEL, SkipLevel);
			registerEventListener(StartPlayingEvent.RESTART_LEVEL, RestartLevel);
			registerEventListener(StartPlayingEvent.LEVEL_FIRST, StartPlaying);
			registerEventListener(StartPlayingEvent.LEVEL_LAST, StartPlaying);
			registerEventListener(StartPlayingEvent.LEVEL_NEXT, StartPlaying);
			registerEventListener(StartPlayingEvent.LEVEL_SAME, StartPlaying);
			registerEventListener(StartPlayingEvent.SWITCH_TO_SKIPPED, SwitchToSkipped);
			registerEventListener(StartPlayingEvent.QUIT_TO_MENU, DestroyLevel);
			registerEventListener(LevelPauseEvent.TOGGLE_PAUSE, pauseLevel);
			mLevelNr = mLevelOrder.levels.length;
		}
		private function QuitGame(_arg1:StartPlayingEvent):void{
			EventManager.instance.dispatchEvent(new LevelTransitionEvent(LevelTransitionEvent.SHOW_QUIT_GAME));
		}
		override public function update(_arg1:Number):void{
		}
		private function DestroyLevel(_arg1:StartPlayingEvent):void{
			mRoomsMoved = 0;
			EntityManager.instance.clear();
			GameWorld.instance.clear();
			removeChildSystem(mLevelSystem);
		}
		private function StartPlaying(_arg1:StartPlayingEvent):void{
			if (_arg1.type == StartPlayingEvent.LEVEL_FIRST){
				while (mSkippedList.length > 0) {
					mSkippedList.pop();
				};
				mRoomsMoved = 0;
				mLevelSet = LEVELSET_MAIN;
				mCurrentLevel = 0;
				mLevelsLeft = (mLevelNr - mCurrentLevel);
				LoadLevel();
			} else {
				if (_arg1.type == StartPlayingEvent.LEVEL_LAST){
					LoadLevel();
				} else {
					if (_arg1.type == StartPlayingEvent.LEVEL_NEXT){
						if (mLevelSet == LEVELSET_MAIN){
							mCurrentLevel++;
							mLevelsLeft = (mLevelNr - mCurrentLevel);
						} else {
							if (mLevelSet == LEVELSET_SKIPPED){
								mSkippedList.shift();
								mCurrentLevel = mSkippedList[0];
								mLevelsLeft = mSkippedList.length;
							};
						};
						LoadLevel();
					} else {
						if (_arg1.type == StartPlayingEvent.LEVEL_SAME){
							LoadLevel();
						};
					};
				};
			};
		}
		private function NewGame(_arg1:StartPlayingEvent):void{
			EventManager.instance.dispatchEvent(new LevelTransitionEvent(LevelTransitionEvent.SHOW_START_GAME));
		}
		private function ContinueGame(_arg1:StartPlayingEvent):void{
			mSkippedList = PlayerData.instance.skippedLevels;
			if (PlayerData.instance.playingSkippedLevels == false){
				mLevelSet = LEVELSET_MAIN;
				mCurrentLevel = PlayerData.instance.currentLevel;
				mLevelsLeft = (mLevelNr - mCurrentLevel);
			} else {
				mLevelSet = LEVELSET_SKIPPED;
				mCurrentLevel = mSkippedList[0];
				mLevelsLeft = mSkippedList.length;
			};
			EventManager.instance.dispatchEvent(new LevelTransitionEvent(LevelTransitionEvent.SHOW_CONTINUE_GAME));
		}
		private function RestartLevel(_arg1:StartPlayingEvent):void{
			EventManager.instance.dispatchEvent(new LevelTransitionEvent(LevelTransitionEvent.SHOW_RESTART_LEVEL));
		}
		private function levelFinished(_arg1:LevelFinishedEvent):void{
			var _local3:int;
			mRoomsMoved = _arg1.moves;
			SaveLevelData();
			var _local2:int = CheckIfLastLevel(false);
			SaveLevelProgress(false, _local2);
			if (mLevelSet == LEVELSET_MAIN){
				_local3 = ((mCurrentLevel + 1) - mSkippedList.length);
			} else {
				if (mLevelSet == LEVELSET_SKIPPED){
					_local3 = (mLevelNr - (mSkippedList.length - 1));
				};
			};
		}
		private function LoadLevel():Boolean{
			mRoomsMoved = 0;
			EntityManager.instance.clear();
			GameWorld.instance.clear();
			if (mLevelSystem != null){
				removeChildSystem(mLevelSystem);
			};
			if (mCurrentLevel >= mLevelOrder.levels.length){
				return (false);
			};
			var _local1:XML = mLevelOrder.levels[mCurrentLevel].xml;
			mLevelSystem = new LevelSystem();
			addChildSystem(mLevelSystem);
			EventManager.instance.dispatchEvent(new LoadLevelEvent(LoadLevelEvent.LOAD_LEVEL, _local1.@name, mCurrentLevel));
			mLevelSystem.loadLevel(_local1);
			EventManager.instance.dispatchEvent(new LoadLevelEvent(LoadLevelEvent.LEVEL_LOADED, _local1.@name, mCurrentLevel));
			return (true);
		}
		private function SwitchToSkipped(_arg1:StartPlayingEvent):void{
			mLevelSet = LEVELSET_SKIPPED;
			mCurrentLevel = mSkippedList[0];
			LoadLevel();
		}
		private function SkipLevel(_arg1:StartPlayingEvent):void{
			mSkippedList.push(mCurrentLevel);
			var _local2:int = CheckIfLastLevel(true);
			SaveLevelProgress(true, _local2);
		}
		private function CheckIfLastLevel(_arg1:Boolean):int{
			mLevelSystem.pause();
			var _local2:int;
			if (mLevelSet == LEVELSET_MAIN){
				if (mCurrentLevel == (mLevelNr - 1)){
					if (mSkippedList.length == 0){
						_local2 = 2;
						EventManager.instance.dispatchEvent(new LevelTransitionEvent(LevelTransitionEvent.SHOW_THE_END));
					} else {
						mLevelsLeft = mSkippedList.length;
						_local2 = 1;
						if (!_arg1){
							EventManager.instance.dispatchEvent(new LevelTransitionEvent(LevelTransitionEvent.SHOW_RETURN2SKIPPED));
						} else {
							EventManager.instance.dispatchEvent(new LevelTransitionEvent(LevelTransitionEvent.SHOW_RETURN2SKIPPED_LEVEL_SKIPPED));
						};
					};
				} else {
					if (_arg1){
						EventManager.instance.dispatchEvent(new LevelTransitionEvent(LevelTransitionEvent.SHOW_SKIP_LEVEL));
					} else {
						EventManager.instance.dispatchEvent(new LevelTransitionEvent(LevelTransitionEvent.SHOW_INTERMISSION));
					};
				};
			} else {
				if (mLevelSet == LEVELSET_SKIPPED){
					if (mSkippedList.length == 1){
						_local2 = 2;
						EventManager.instance.dispatchEvent(new LevelTransitionEvent(LevelTransitionEvent.SHOW_THE_END));
					} else {
						if (_arg1){
							EventManager.instance.dispatchEvent(new LevelTransitionEvent(LevelTransitionEvent.SHOW_SKIP_LEVEL));
						} else {
							EventManager.instance.dispatchEvent(new LevelTransitionEvent(LevelTransitionEvent.SHOW_INTERMISSION));
						};
					};
				};
			};
			return (_local2);
		}
		private function SaveLevelData():void{
			PlayerData.instance.roomsMoved[mCurrentLevel] = mRoomsMoved;
		}
		private function SaveLevelProgress(_arg1:Boolean, _arg2:int):void{
			var _local3:Array;
			var _local4:int;
			if (_arg2 == 2){
				return;
			};
			if (_arg2 == 1){
				PlayerData.instance.currentLevel = mSkippedList[0];
				PlayerData.instance.playingSkippedLevels = true;
				_local3 = new Array();
				_local4 = 0;
				while (_local4 < mSkippedList.length) {
					_local3.push(mSkippedList[_local4]);
					_local4++;
				};
				PlayerData.instance.skippedLevels = _local3;
			} else {
				if (_arg2 == 0){
					_local3 = new Array();
					_local4 = 0;
					while (_local4 < mSkippedList.length) {
						_local3.push(mSkippedList[_local4]);
						_local4++;
					};
					if (mLevelSet == LEVELSET_MAIN){
						PlayerData.instance.currentLevel = (mCurrentLevel + 1);
						PlayerData.instance.playingSkippedLevels = false;
					} else {
						if (mLevelSet == LEVELSET_SKIPPED){
							PlayerData.instance.playingSkippedLevels = true;
							if (_arg1){
								_local3.push(_local3.shift());
							} else {
								_local3.shift();
							};
							PlayerData.instance.currentLevel = mSkippedList[0];
						};
					};
					PlayerData.instance.skippedLevels = _local3;
				};
			};
			PlayerData.instance.flush();
		}
		private function pauseLevel(_arg1:LevelPauseEvent):void{
			if (mLevelSystem.isRunning){
				mLevelSystem.pause();
			} else {
				mLevelSystem.resume();
			};
		}

	}
}//package TDA.systems 

****************

//LevelTransition (TDA.systems.LevelTransition)
package TDA.systems {
	import mx.core.*;
	import flash.events.*;
	import flash.display.*;
	import mx.controls.*;
	import TDA.events.*;
	import flash.net.*;

	public class LevelTransition extends SystemBase {

		private const SHOW_DEBRIEFING:int = 1;
		private const HIDE_ALL:int = 4;
		private const WAIT_FOR_INPUT:int = 2;
		private const LOAD_LEVEL:int = 3;
		private const FADE_IN:int = 5;
		private const FADE_OUT_SPEED:Number = 0.05;
		private const FADE_OUT:int = 0;
		private const INACTIVE:int = -1;

		private var mRestarting:Boolean;// = false
		private var mContinueText:Text;
		private var mStarting:Boolean;// = true
		private var mButtonLogo:SimpleButton;
		private var mDebriefingText:Text;
		private var mQuiting:Boolean;// = false
		private var mKeyboardShortcuts:String;
		private var mStep:int;
		private var mContainer:UIComponent;
		private var mIntermissionSprite:Sprite;
		private var mFadeOutSprite:Sprite;
		private var mContinuing:Boolean;// = false
		private var mMainSetFinishedSprite:Sprite;
		private var mGameFinishedSprite:Sprite;
		private var mSkipping:Boolean;// = false

		public function LevelTransition(){
			mDebriefingText = new Text();
			mContinueText = new Text();
			mFadeOutSprite = new Sprite();
			mContainer = new UIComponent();
			mIntermissionSprite = new Sprite();
			mMainSetFinishedSprite = new Sprite();
			mGameFinishedSprite = new Sprite();
			super();
			Application.application.addChild(mContainer);
			mContainer.addChild(mFadeOutSprite);
			mFadeOutSprite.graphics.beginFill(0);
			mFadeOutSprite.graphics.drawRect(0, 0, Application.application.width, Application.application.height);
			mFadeOutSprite.alpha = 0;
			mFadeOutSprite.graphics.endFill();
			mFadeOutSprite.visible = false;
			mDebriefingText.text = "Level Completed";
			mDebriefingText.scaleX = (mDebriefingText.scaleY = 4);
			mDebriefingText.x = 160;
			mDebriefingText.y = 120;
			mDebriefingText.alpha = 0;
			mDebriefingText.setStyle("color", 0xFFFFFF);
			mDebriefingText.setStyle("fontFamily", "Arial");
			mDebriefingText.setStyle("fontWeight", "bold");
			mDebriefingText.blendMode = BlendMode.LAYER;
			mDebriefingText.visible = false;
			mDebriefingText.setStyle("textAlign", "center");
			mContinueText.text = "LEFT - replay      UP - quit  	RIGHT - continue";
			mContinueText.scaleX = (mContinueText.scaleY = 2);
			mContinueText.x = 90;
			mContinueText.y = 240;
			mContinueText.alpha = 0;
			mContinueText.setStyle("color", 0xFFFFFF);
			mContinueText.setStyle("fontFamily", "Arial");
			mContinueText.setStyle("fontWeight", "bold");
			mContinueText.blendMode = BlendMode.LAYER;
			mContinueText.visible = false;
			mButtonLogo = new SimpleButton(new SiteLock.LogoOff(), new SiteLock.LogoOn());
			mButtonLogo.x = 220;
			mButtonLogo.y = 380;
			mButtonLogo.alpha = 0;
			mButtonLogo.hitTestState = mButtonLogo.overState;
			mButtonLogo.downState = mButtonLogo.overState;
			mButtonLogo.visible = false;
			mButtonLogo.useHandCursor = false;
			mButtonLogo.addEventListener(MouseEvent.CLICK, function ():void{
				navigateToURL(new URLRequest(SiteLock.URL), "_blank");
			});
			Application.application.addChild(mDebriefingText);
			Application.application.addChild(mContinueText);
			mContainer.addChild(mButtonLogo);
			registerEventListener(LevelTransitionEvent.SHOW_INTERMISSION, showScreen);
			registerEventListener(LevelTransitionEvent.SHOW_THE_END, showScreen);
			registerEventListener(LevelTransitionEvent.SHOW_RETURN2SKIPPED, showScreen);
			registerEventListener(LevelTransitionEvent.SHOW_RETURN2SKIPPED_LEVEL_SKIPPED, showScreen);
			registerEventListener(LevelTransitionEvent.SHOW_RESTART_LEVEL, showScreen);
			registerEventListener(LevelTransitionEvent.SHOW_SKIP_LEVEL, showScreen);
			registerEventListener(LevelTransitionEvent.SHOW_START_GAME, showScreen);
			registerEventListener(LevelTransitionEvent.SHOW_CONTINUE_GAME, showScreen);
			registerEventListener(LevelTransitionEvent.SHOW_QUIT_GAME, showScreen);
			registerEventListener(TDAKeyboardEvent.KEY_DOWN, checkKeyboard);
			registerEventListener(LoadLevelEvent.LEVEL_LOADED, levelLoaded);
			mStep = INACTIVE;
		}
		override public function update(_arg1:Number):void{
			var _local2:Number;
			if (mStep != INACTIVE){
				_local2 = (_arg1 / (1 / 30));
			};
			if (mStep == FADE_OUT){
				mFadeOutSprite.alpha = (mFadeOutSprite.alpha + ((FADE_OUT_SPEED * 2) * _local2));
				if (mFadeOutSprite.alpha > 1){
					mFadeOutSprite.alpha = 1;
					mStep = SHOW_DEBRIEFING;
					EventManager.instance.dispatchEvent(new LevelTransitionEvent(LevelTransitionEvent.FADED_OUT));
					if (mStarting){
						mStep = LOAD_LEVEL;
						EventManager.instance.dispatchEvent(new StartPlayingEvent(StartPlayingEvent.LEVEL_FIRST));
					};
					if (mContinuing){
						mStep = LOAD_LEVEL;
						EventManager.instance.dispatchEvent(new StartPlayingEvent(StartPlayingEvent.LEVEL_LAST));
					};
					if (mQuiting){
						mStep = HIDE_ALL;
						EventManager.instance.dispatchEvent(new StartPlayingEvent(StartPlayingEvent.QUIT_TO_MENU));
					};
					if (mSkipping){
						mStep = LOAD_LEVEL;
						EventManager.instance.dispatchEvent(new StartPlayingEvent(StartPlayingEvent.LEVEL_NEXT));
					};
					if (mRestarting){
						mStep = LOAD_LEVEL;
						EventManager.instance.dispatchEvent(new StartPlayingEvent(StartPlayingEvent.LEVEL_SAME));
					};
				};
			} else {
				if (mStep == SHOW_DEBRIEFING){
					mDebriefingText.alpha = (mDebriefingText.alpha + (0.1 * _local2));
					mContinueText.alpha = (mContinueText.alpha + (0.1 * _local2));
					mButtonLogo.alpha = (mButtonLogo.alpha + (0.1 * _local2));
					if (mDebriefingText.alpha > 1){
						mDebriefingText.alpha = (mContinueText.alpha = (mButtonLogo.alpha = 1));
						mStep = WAIT_FOR_INPUT;
					};
				} else {
					if (mStep == WAIT_FOR_INPUT){
					} else {
						if (mStep == LOAD_LEVEL){
						} else {
							if (mStep == HIDE_ALL){
								mDebriefingText.alpha = (mDebriefingText.alpha - (0.1 * _local2));
								mContinueText.alpha = (mContinueText.alpha - (0.1 * _local2));
								mButtonLogo.alpha = (mButtonLogo.alpha - (0.1 * _local2));
								if (mContinueText.alpha < 0){
									mDebriefingText.alpha = (mContinueText.alpha = (mButtonLogo.alpha = 0));
									mButtonLogo.visible = false;
									mStep = FADE_IN;
									mDebriefingText.visible = false;
									mContinueText.visible = false;
									mIntermissionSprite.visible = false;
									mGameFinishedSprite.visible = false;
									mMainSetFinishedSprite.visible = false;
								};
							} else {
								if (mStep == FADE_IN){
									mFadeOutSprite.alpha = (mFadeOutSprite.alpha - (FADE_OUT_SPEED * _local2));
									if (mFadeOutSprite.alpha < 0){
										mFadeOutSprite.visible = false;
										mFadeOutSprite.alpha = 0;
										mStep = INACTIVE;
										EventManager.instance.dispatchEvent(new LevelTransitionEvent(LevelTransitionEvent.FADED_IN));
										if (!mQuiting){
											EventManager.instance.dispatchEvent(new StartPlayingEvent(StartPlayingEvent.LEVEL_STARTED));
										};
									};
								};
							};
						};
					};
				};
			};
		}
		private function checkKeyboard(_arg1:TDAKeyboardEvent):void{
			if (mStep == WAIT_FOR_INPUT){
				if (mKeyboardShortcuts == LevelTransitionEvent.SHOW_INTERMISSION){
					mStep = LOAD_LEVEL;
					EventManager.instance.dispatchEvent(new StartPlayingEvent(StartPlayingEvent.LEVEL_NEXT));
				} else {
					if (mKeyboardShortcuts == LevelTransitionEvent.SHOW_THE_END){
						mStep = HIDE_ALL;
						EventManager.instance.dispatchEvent(new StartPlayingEvent(StartPlayingEvent.QUIT_TO_MENU));
					} else {
						if (mKeyboardShortcuts == LevelTransitionEvent.SHOW_RETURN2SKIPPED){
							mStep = LOAD_LEVEL;
							EventManager.instance.dispatchEvent(new StartPlayingEvent(StartPlayingEvent.SWITCH_TO_SKIPPED));
						} else {
							if (mKeyboardShortcuts == LevelTransitionEvent.SHOW_RETURN2SKIPPED_LEVEL_SKIPPED){
								mStep = LOAD_LEVEL;
								EventManager.instance.dispatchEvent(new StartPlayingEvent(StartPlayingEvent.SWITCH_TO_SKIPPED));
							};
						};
					};
				};
			};
		}
		private function showScreen(_arg1:LevelTransitionEvent):void{
			var _local2:int;
			mStarting = false;
			mContinuing = false;
			mSkipping = false;
			mQuiting = false;
			mRestarting = false;
			mFadeOutSprite.visible = true;
			mDebriefingText.visible = true;
			mButtonLogo.visible = true;
			mContinueText.visible = true;
			if (_arg1.type == LevelTransitionEvent.SHOW_INTERMISSION){
				mDebriefingText.text = (("Level " + (LevelManager.mCurrentLevel + 1)) + " completed\n");
				_local2 = (LevelManager.mLevelsLeft - 1);
				if (_local2 == 1){
					mDebriefingText.text = (mDebriefingText.text + (_local2 + " level remains"));
				} else {
					mDebriefingText.text = (mDebriefingText.text + (_local2 + " levels remain"));
				};
				mDebriefingText.scaleX = (mDebriefingText.scaleY = 3);
				mDebriefingText.x = 190;
				mDebriefingText.y = 120;
				mContinueText.text = "Press any key to continue";
				mContinueText.scaleX = (mContinueText.scaleY = 2);
				mContinueText.x = 200;
				mContinueText.y = 240;
				mKeyboardShortcuts = LevelTransitionEvent.SHOW_INTERMISSION;
				mIntermissionSprite.visible = true;
				mStep = FADE_OUT;
			} else {
				if (_arg1.type == LevelTransitionEvent.SHOW_RETURN2SKIPPED){
					if (LevelManager.mLevelsLeft == 1){
						mDebriefingText.text = ((" Last level completed!\n" + LevelManager.mLevelsLeft) + " level was skipped");
						mDebriefingText.x = 160;
					} else {
						mDebriefingText.text = ((" Last level completed!\n" + LevelManager.mLevelsLeft) + " levels were skipped");
						mDebriefingText.x = 150;
					};
					mDebriefingText.scaleX = (mDebriefingText.scaleY = 3);
					mDebriefingText.y = 120;
					mContinueText.text = "Press any key to return to skipped levels";
					mContinueText.scaleX = (mContinueText.scaleY = 2);
					mContinueText.x = 120;
					mContinueText.y = 240;
					mKeyboardShortcuts = LevelTransitionEvent.SHOW_RETURN2SKIPPED;
					mMainSetFinishedSprite.visible = true;
					mStep = FADE_OUT;
				} else {
					if (_arg1.type == LevelTransitionEvent.SHOW_RETURN2SKIPPED_LEVEL_SKIPPED){
						if ((LevelManager.mLevelsLeft - 1) == 1){
							mDebriefingText.text = ((" Last level and " + (LevelManager.mLevelsLeft - 1)) + "\nother level was skipped");
							mDebriefingText.x = 140;
						} else {
							mDebriefingText.text = ((" Last level and " + (LevelManager.mLevelsLeft - 1)) + "\nother levels were skipped");
							mDebriefingText.x = 130;
						};
						mDebriefingText.scaleX = (mDebriefingText.scaleY = 3);
						mDebriefingText.y = 120;
						mContinueText.text = "Press any key to return to skipped levels";
						mContinueText.scaleX = (mContinueText.scaleY = 2);
						mContinueText.x = 120;
						mContinueText.y = 240;
						mKeyboardShortcuts = LevelTransitionEvent.SHOW_RETURN2SKIPPED_LEVEL_SKIPPED;
						mMainSetFinishedSprite.visible = true;
						mStep = FADE_OUT;
					} else {
						if (_arg1.type == LevelTransitionEvent.SHOW_THE_END){
							mDebriefingText.text = "The End";
							mDebriefingText.scaleX = (mDebriefingText.scaleY = 4);
							mDebriefingText.x = 230;
							mDebriefingText.y = 120;
							mContinueText.text = "Press any key to quit";
							mContinueText.scaleX = (mContinueText.scaleY = 2);
							mContinueText.x = 220;
							mContinueText.y = 240;
							mKeyboardShortcuts = LevelTransitionEvent.SHOW_THE_END;
							mGameFinishedSprite.visible = true;
							mStep = FADE_OUT;
						} else {
							if (_arg1.type == LevelTransitionEvent.SHOW_SKIP_LEVEL){
								mSkipping = true;
								mStep = FADE_OUT;
							} else {
								if (_arg1.type == LevelTransitionEvent.SHOW_RESTART_LEVEL){
									mRestarting = true;
									mStep = FADE_OUT;
								} else {
									if (_arg1.type == LevelTransitionEvent.SHOW_START_GAME){
										mStarting = true;
										mStep = FADE_OUT;
									} else {
										if (_arg1.type == LevelTransitionEvent.SHOW_CONTINUE_GAME){
											mContinuing = true;
											mStep = FADE_OUT;
										} else {
											if (_arg1.type == LevelTransitionEvent.SHOW_QUIT_GAME){
												mQuiting = true;
												mStep = FADE_OUT;
											};
										};
									};
								};
							};
						};
					};
				};
			};
			EventManager.instance.dispatchEvent(new LevelTransitionEvent(LevelTransitionEvent.FADE_OUT));
		}
		private function levelLoaded(_arg1:LoadLevelEvent):void{
			if (mStep == LOAD_LEVEL){
				mStep = HIDE_ALL;
			};
		}

	}
}//package TDA.systems 

****************

//MacroSystem (TDA.systems.MacroSystem)
package TDA.systems {
	import TDA.systems.gamelogic.levellogic.*;

	public class MacroSystem extends SystemBase {

		public function MacroSystem(){
			addChildSystem(new KeyboardRoomMovementSystem());
			addChildSystem(new RoomMovementSystem());
			addChildSystem(new FailedRoomMovementSystem());
			addChildSystem(new BorderIntersectionDetector());
		}
		override public function onResume():void{
			var _local1:SystemBase;
			for each (_local1 in children) {
				_local1.resume();
			};
		}

	}
}//package TDA.systems 

****************

//MicroSystem (TDA.systems.MicroSystem)
package TDA.systems {
	import TDA.systems.gamelogic.levellogic.*;

	public class MicroSystem extends SystemBase {

		public function MicroSystem(_arg1:PhysicsSystem){
			addChildSystem(new PlayerBorderCheckSystem());
			addChildSystem(new GoalSystem());
			addChildSystem(new CharacterDeathSystem());
			addChildSystem(new CharacterControllerSystem());
			addChildSystem(_arg1);
			_arg1.pause();
		}
		override public function onResume():void{
			resumeChildren();
		}

	}
}//package TDA.systems 

****************

//PhysicsSystem (TDA.systems.PhysicsSystem)
package TDA.systems {
	import flash.display.*;
	import TDA.math.*;
	import TDA.events.*;
	import TDA.aspects.*;
	import Box2D.Collision.*;
	import TDA.physics.*;
	import Box2D.Collision.Shapes.*;
	import Box2D.Dynamics.*;
	import Box2D.Common.Math.*;
	import Box2D.Dynamics.Joints.*;

	public class PhysicsSystem extends SystemBase {

		private var mGravity:b2Vec2;
		private var mIterations:int;
		private var mWorld:b2World;
		private var mContactListener:ContactListener;
		private var mPhysAspects:Array;
		private var mTimeStep:Number;
		private var mJointAspects:Array;

		public static const SCALE:Number = 2;

		public function PhysicsSystem(_arg1:Array, _arg2:Array, _arg3:Vector2D, _arg4:AABoundingBox, _arg5:Number, _arg6:int){
			mGravity = new b2Vec2(_arg3.x, _arg3.y);
			mPhysAspects = _arg1;
			mJointAspects = _arg2;
			mTimeStep = _arg5;
			mIterations = _arg6;
			var _local7:b2AABB = new b2AABB();
			_local7.lowerBound.Set(_arg4.lowerBound.x, _arg4.lowerBound.y);
			_local7.upperBound.Set(_arg4.upperBound.x, _arg4.upperBound.y);
			var _local8:Boolean;
			mWorld = new b2World(_local7, mGravity, _local8);
			setupPhysicsObjects();
			setupJoints();
			super();
			registerEventListener(RefilterPhysicsAspectEvent.SENSOR_CHANGED, refilter, 0, true);
		}
		private function setupJoints():void{
			var _local2:JointPhysicsAspect;
			var _local3:b2Joint;
			var _local1:int;
			while (_local1 < mJointAspects.length) {
				_local2 = mJointAspects[_local1];
				_local2.internalInitialize();
				_local3 = mWorld.CreateJoint(_local2.jointDef);
				_local1++;
			};
		}
		override public function update(_arg1:Number):void{
			mWorld.Step(_arg1, 1);
			mContactListener.dispatch();
		}
		private function setupPhysicsObjects():void{
			var _local1:int;
			var _local2:PhysicsAspect;
			var _local3:b2Body;
			for each (_local2 in mPhysAspects) {
				_local3 = mWorld.CreateBody(_local2.bodyDef);
				_local2.setB2Body = _local3;
				_local2.createShapeFromPolygonDef();
				_local3.SetUserData(_local2);
				_local2.isStatic = _local2.initializeAsStatic;
			};
		}
		public function refilter(_arg1:RefilterPhysicsAspectEvent):void{
			var _local2:b2Shape;
			if (mWorld != null){
				_local2 = _arg1.physicsAspect.shapeList;
				while (_local2) {
					mWorld.Refilter(_local2);
					_local2 = _local2.GetNext();
				};
			};
		}
		public function setDebugDraw(_arg1:Sprite, _arg2:int):void{
			var _local3:b2DebugDraw;
			_local3 = new b2DebugDraw();
			_local3.m_sprite = _arg1;
			_local3.m_drawScale = _arg2;
			_local3.m_fillAlpha = 0.3;
			_local3.m_lineThickness = 1;
			_local3.m_drawFlags = (b2DebugDraw.e_shapeBit | b2DebugDraw.e_jointBit);
			mWorld.SetDebugDraw(_local3);
		}
		public function setContactListener(_arg1:ContactListener):void{
			mWorld.SetContactListener(_arg1);
			mContactListener = _arg1;
		}

	}
}//package TDA.systems 

****************

//PhysicSynchronizerSystem (TDA.systems.PhysicSynchronizerSystem)
package TDA.systems {
	import TDA.math.*;
	import TDA.events.*;
	import TDA.entities.*;

	public class PhysicSynchronizerSystem extends SystemBase {

		private var mGrid:RoomGrid;

		public function PhysicSynchronizerSystem(){
			mGrid = RoomGrid(EntityManager.instance.getEntity(RoomGrid.NAME));
			registerEventListener(RoomMovementEvent.MOVE_ENDED, roomMoved);
		}
		private function roomMoved(_arg1:RoomMovementEvent):void{
			updateRoomsPhysics(_arg1.row1, _arg1.column1);
			updateRoomsPhysics(_arg1.row2, _arg1.column2);
		}
		private function updateRoomsPhysics(_arg1:int, _arg2:int):void{
			var _local4:Array;
			var _local5:PhysicsEntity;
			var _local6:Vector2D;
			var _local3:Room = mGrid.getRoom(_arg1, _arg2);
			if (_local3 != null){
				_local4 = _local3.physicsEntities;
				for each (_local5 in _local4) {
					_local6 = _local5.physicsAspect.position;
					_local6.x = (((_arg2 * mGrid.roomWidth) + _local5.worldObjectAspect.x) / PhysicsSystem.SCALE);
					_local6.y = (((_arg1 * mGrid.roomHeight) + _local5.worldObjectAspect.y) / PhysicsSystem.SCALE);
					_local5.physicsAspect.setXForm(_local6, _local5.physicsAspect.angle);
				};
			};
		}

	}
}//package TDA.systems 

****************

//PlayerBorderCheckSystem (TDA.systems.PlayerBorderCheckSystem)
package TDA.systems {
	import TDA.events.*;
	import TDA.entities.*;

	public class PlayerBorderCheckSystem extends SystemBase {

		private var mOnBorder:Boolean;// = false
		private var mChar:Character;

		public function PlayerBorderCheckSystem(){
			this.mChar = Character(EntityManager.instance.getEntity("Character"));
			registerEventListener(PhysicsContactEvent.ADDED, added);
		}
		private function added(_arg1:PhysicsContactEvent):void{
			var _local2:RoomBorder;
			var _local3 = 1;
			if (((_arg1.contactPoint.physicsAspect1.isSensor) || (_arg1.contactPoint.physicsAspect2.isSensor))){
				return;
			};
			if (_arg1.contactPoint.physicsAspect1 == mChar.physicsAspect){
				_local2 = (_arg1.contactPoint.physicsAspect2.parentEntity as RoomBorder);
				if (_local2 == null){
					return;
				};
				_local3 = -1;
				if (((!((_local2 == null))) && ((((Math.abs(_arg1.contactPoint.normalX) > 0.7)) || ((_arg1.contactPoint.normalY >= -0.5)))))){
					mOnBorder = true;
				};
			} else {
				if (_arg1.contactPoint.physicsAspect2 == mChar.physicsAspect){
					_local2 = (_arg1.contactPoint.physicsAspect1.parentEntity as RoomBorder);
					if (_local2 == null){
						return;
					};
					_local3 = 1;
				};
			};
			if ((_arg1.contactPoint.normalX * _local3) < -0.7){
				mOnBorder = true;
			} else {
				if ((_arg1.contactPoint.normalX * _local3) > 0.7){
					mOnBorder = true;
				};
			};
			var _local4:Number = (_arg1.contactPoint.normalY * _local3);
			if (_local4 >= -0.5){
				mOnBorder = true;
			};
		}
		override public function update(_arg1:Number):void{
			if (mOnBorder){
				EventManager.instance.dispatchEvent(new PlayerBorderCollideEvent(PlayerBorderCollideEvent.COLLIDE));
			};
			mOnBorder = false;
		}

	}
}//package TDA.systems 

****************

//PlayerControllerSystem (TDA.systems.PlayerControllerSystem)
package TDA.systems {
	import TDA.events.*;
	import flash.ui.*;

	public class PlayerControllerSystem extends SystemBase {

		private var mAlive:Boolean;// = true
		private var mZoomedIn:SystemBase;
		private var mZoomedOut:SystemBase;
		private var mKeyDown:Boolean;// = false
		private var mMovingRoom:Boolean;// = false
		private var mCurrentSystem:uint;

		public static const ZOOMED_OUT:uint = 1;
		public static const ZOOMED_IN:uint = 0;
		private static const NONE:uint = 2;

		public function PlayerControllerSystem(_arg1:SystemBase, _arg2:SystemBase, _arg3:uint=1){
			var _local4:SystemBase = _arg1;
			var _local5:SystemBase = _arg2;
			addChildSystem(_local4);
			addChildSystem(_local5);
			mZoomedIn = _local4;
			mZoomedOut = _local5;
			mCurrentSystem = _arg3;
			if (mCurrentSystem == NONE){
				mZoomedOut.pause();
				mZoomedIn.pause();
			};
			if (mCurrentSystem == ZOOMED_IN){
				mZoomedOut.pause();
			} else {
				if (mCurrentSystem == ZOOMED_OUT){
					mZoomedIn.pause();
				};
			};
			registerEventListener(TDAKeyboardEvent.KEY_DOWN, KeyDownAction);
			registerEventListener(TDAKeyboardEvent.KEY_UP, KeyDownAction);
			registerEventListener(RoomMovementEvent.MOVE_ENDED, roomMovement);
			registerEventListener(RoomMovementEvent.MOVE_STARTED, roomMovement);
			registerEventListener(CharacterDeathEvent.CHARACTER_DEATH, characterDeath);
			registerEventListener(HistoryEvent.HISTORY_REVERTED, characterRespawn);
			registerEventListener(ZoomEvent.ZOOMED_IN, zoom);
			registerEventListener(ZoomEvent.ZOOMED_OUT, zoom);
			registerEventListener(ZoomEvent.START_ZOOM_IN, startZoom);
			registerEventListener(ZoomEvent.START_ZOOM_OUT, startZoom);
			registerEventListener(ZoomEvent.START_CLOSE_IN, startZoom);
			registerEventListener(LevelTransitionEvent.FADE_OUT, fadeOut);
		}
		override public function update(_arg1:Number):void{
		}
		private function roomMovement(_arg1:RoomMovementEvent):void{
			if (_arg1.type == RoomMovementEvent.MOVE_STARTED){
				mMovingRoom = true;
			} else {
				if (_arg1.type == RoomMovementEvent.MOVE_ENDED){
					mMovingRoom = false;
				};
			};
		}
		private function characterDeath(_arg1:CharacterDeathEvent):void{
			mAlive = false;
		}
		override public function onResume():void{
			if (mCurrentSystem == ZOOMED_IN){
				mZoomedIn.resume();
			} else {
				if (mCurrentSystem == ZOOMED_OUT){
					mZoomedOut.resume();
				};
			};
		}
		private function fadeOut(_arg1:LevelTransitionEvent):void{
			mZoomedIn.pause();
			mZoomedOut.pause();
		}
		private function startZoom(_arg1:ZoomEvent):void{
			mZoomedIn.pause();
			mZoomedOut.pause();
			mCurrentSystem = NONE;
		}
		private function KeyDownAction(_arg1:TDAKeyboardEvent):void{
			if (((mMovingRoom) || (!(mAlive)))){
				return;
			};
			switch (_arg1.keyCode){
				case Keyboard.SPACE:
				case Keyboard.SHIFT:
				case Keyboard.SPACE:
				case Keyboard.TAB:
				case Keyboard.CAPS_LOCK:
					if (((!(mKeyDown)) && ((_arg1.type == TDAKeyboardEvent.KEY_DOWN)))){
						mKeyDown = true;
						SwapSystems();
					} else {
						if (_arg1.type == TDAKeyboardEvent.KEY_UP){
							mKeyDown = false;
						};
					};
					break;
			};
		}
		private function SwapSystems():void{
			if (mCurrentSystem == ZOOMED_IN){
				EventManager.instance.dispatchEvent(new ZoomEvent(ZoomEvent.START_ZOOM_OUT));
			} else {
				if (mCurrentSystem == ZOOMED_OUT){
					EventManager.instance.dispatchEvent(new ZoomEvent(ZoomEvent.START_ZOOM_IN));
				};
			};
		}
		private function zoom(_arg1:ZoomEvent):void{
			if (mAlive){
				if (_arg1.type == ZoomEvent.ZOOMED_IN){
					mCurrentSystem = ZOOMED_IN;
					mZoomedIn.resume();
				} else {
					if (_arg1.type == ZoomEvent.ZOOMED_OUT){
						mCurrentSystem = ZOOMED_OUT;
						mZoomedOut.resume();
					};
				};
			};
		}
		private function characterRespawn(_arg1:HistoryEvent):void{
			mCurrentSystem = ZOOMED_OUT;
			mZoomedOut.resume();
			mAlive = true;
		}

	}
}//package TDA.systems 

****************

//RoomEntityPositioningSystem (TDA.systems.RoomEntityPositioningSystem)
package TDA.systems {
	import flash.geom.*;
	import TDA.math.*;
	import mx.collections.*;
	import flash.utils.*;
	import TDA.entities.*;

	public class RoomEntityPositioningSystem extends SystemBase {

		private var mRoomGrid:RoomGrid;
		private var mPhysicsEntities:ArrayCollection;
		private var mBlockRoomSwitch:Dictionary;

		public function RoomEntityPositioningSystem(_arg1:ArrayCollection){
			mBlockRoomSwitch = new Dictionary();
			super();
			mPhysicsEntities = _arg1;
			mRoomGrid = RoomGrid(EntityManager.instance.getEntity(RoomGrid.NAME));
		}
		private function getRoom(_arg1:PhysicsEntity):Room{
			var _local2:int = ((_arg1.physicsAspect.position.x * PhysicsSystem.SCALE) / mRoomGrid.roomWidth);
			var _local3:int = ((_arg1.physicsAspect.position.y * PhysicsSystem.SCALE) / mRoomGrid.roomHeight);
			return (mRoomGrid.getRoom(_local3, _local2));
		}
		override public function update(_arg1:Number):void{
			var _local2:PhysicsEntity;
			for each (_local2 in mPhysicsEntities) {
				updatePositionAndRotation(_local2);
			};
		}
		private function updatePositionAndRotation(_arg1:PhysicsEntity):void{
			var _local7:Character;
			var _local8:Room;
			if (!_arg1.physicsAspect.isStatic){
				_local7 = (_arg1 as Character);
				if ((((_local7 == null)) || (_local7.alive))){
					_local8 = getRoom(_arg1);
					if (((!((_local8 == null))) && (!((_local8 == _arg1.worldObjectAspect.currentRoom))))){
						_arg1.worldObjectAspect.currentRoom.removeEntity(_arg1);
						_local8.addEntity(_arg1);
					};
				};
			};
			var _local2:Vector2D = _arg1.physicsAspect.position;
			var _local3:Number = _arg1.physicsAspect.angle;
			var _local4:Number = _arg1.worldObjectAspect.scaleX;
			var _local5:Number = _arg1.worldObjectAspect.scaleY;
			_arg1.worldObjectAspect.rotation = 0;
			var _local6:Matrix = _arg1.worldObjectAspect.transform.matrix;
			_local6.identity();
			_local6.tx = _arg1.physicsAspect.localCenterX;
			_local6.ty = _arg1.physicsAspect.localCenterY;
			_local6.rotate(_local3);
			_local6.tx = ((_local2.x * PhysicsSystem.SCALE) - (_arg1.worldObjectAspect.currentRoom.column * mRoomGrid.roomWidth));
			_local6.ty = ((_local2.y * PhysicsSystem.SCALE) - (_arg1.worldObjectAspect.currentRoom.row * mRoomGrid.roomHeight));
			_arg1.worldObjectAspect.transform.matrix = _local6;
			_arg1.worldObjectAspect.scaleX = _local4;
			_arg1.worldObjectAspect.scaleY = _local5;
		}

	}
}//package TDA.systems 

****************

//RoomMovementSystem (TDA.systems.RoomMovementSystem)
package TDA.systems {
	import TDA.timer.*;
	import TDA.events.*;
	import TDA.entities.*;

	public class RoomMovementSystem extends SystemBase {

		private var mTweenerX:Tweener;
		private var mTweenerY:Tweener;
		private var mMovingRoom:Room;
		private var mGrid:RoomGrid;
		private var mTarget:Room;

		public function RoomMovementSystem(){
			mTweenerX = new Tweener(0, 0, 0, tickRoomMoveX, completeRoomMove, null, false);
			mTweenerY = new Tweener(0, 0, 0, tickRoomMoveY);
			super();
			mGrid = RoomGrid(EntityManager.instance.getEntity(RoomGrid.NAME));
			addTimer(mTweenerX);
			addTimer(mTweenerY);
			registerEventListener(RoomMovementEvent.MOVE_STARTED, moveRoom);
		}
		private function completeRoomMove(_arg1:GameTimerEvent):void{
			mGrid.swapRooms(mMovingRoom.row, mMovingRoom.column, mTarget.row, mTarget.column);
			EventManager.instance.dispatchEvent(new RoomMovementEvent(RoomMovementEvent.MOVE_ENDED, mMovingRoom.row, mMovingRoom.column, mTarget.row, mTarget.column));
			mMovingRoom = null;
			mTarget = null;
		}
		private function moveRoom(_arg1:RoomMovementEvent):void{
			var _local2:Room = mGrid.getRoom(_arg1.row1, _arg1.column1);
			var _local3:Room = mGrid.getRoom(_arg1.row2, _arg1.column2);
			if (!_local2.isEmpty){
				mMovingRoom = _local2;
				mTarget = _local3;
			} else {
				mTarget = _local2;
				mMovingRoom = _local3;
			};
			mTweenerX.reset();
			mTweenerX.expiration = _arg1.duration;
			mTweenerX.startValue = mMovingRoom.worldObjectAspect.x;
			mTweenerX.endValue = mTarget.worldObjectAspect.x;
			mTweenerY.reset();
			mTweenerY.expiration = _arg1.duration;
			mTweenerY.startValue = mMovingRoom.worldObjectAspect.y;
			mTweenerY.endValue = mTarget.worldObjectAspect.y;
			mTweenerX.play();
			mTweenerY.play();
		}
		private function tickRoomMoveX(_arg1:Number):void{
			if (mMovingRoom != null){
				mMovingRoom.worldObjectAspect.x = _arg1;
			};
		}
		private function tickRoomMoveY(_arg1:Number):void{
			if (mMovingRoom != null){
				mMovingRoom.worldObjectAspect.y = _arg1;
			};
		}

	}
}//package TDA.systems 

****************

//SystemBase (TDA.systems.SystemBase)
package TDA.systems {
	import flash.events.*;
	import TDA.timer.*;
	import TDA.events.*;
	import TDA.helper.*;

	public class SystemBase extends EventDispatcher {

		private var mChildren:Array;
		private var mRunning:Boolean;// = true
		private var mTimers:Array;
		private var mSubscribedEvents:Array;

		public function SystemBase(){
			mChildren = new Array();
			mSubscribedEvents = new Array();
			mTimers = new Array();
			super();
		}
		private function attachListeners():void{
			var _local1:int;
			var _local2:EventInfo;
			var _local3:int = mSubscribedEvents.length;
			_local1 = 0;
			while (_local1 < _local3) {
				_local2 = (mSubscribedEvents[_local1] as EventInfo);
				EventManager.instance.addEventListener(_local2.type, _local2.listener, false, _local2.priority, _local2.useWeakRef);
				_local1++;
			};
		}
		private function detachListeners():void{
			var _local1:int;
			var _local2:EventInfo;
			var _local3:int = mSubscribedEvents.length;
			_local1 = 0;
			while (_local1 < _local3) {
				_local2 = (mSubscribedEvents[_local1] as EventInfo);
				EventManager.instance.removeEventListener(_local2.type, _local2.listener, false);
				_local1++;
			};
		}
		final protected function removeChildSystem(_arg1:SystemBase):void{
			var _local2:int = ArrayHelper.contains(mChildren, _arg1);
			if (_local2 != -1){
				mChildren.splice(_local2, 1);
				_arg1._destroy();
			} else {
				trace("system not found!!!");
			};
		}
		public function update(_arg1:Number):void{
		}
		override public function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{
			throw (new Error("Do not use removeEventListener for systems, use registerListener instead"));
		}
		final public function registerEventListener(_arg1:String, _arg2:Function, _arg3:int=0, _arg4:Boolean=false):void{
			var _local5:EventInfo = new EventInfo(_arg1, _arg2, _arg3, _arg4);
			if (containsEventAt(mSubscribedEvents, _arg1) == -1){
				mSubscribedEvents.push(_local5);
				EventManager.instance.addEventListener(_arg1, _arg2, false, _arg3, _arg4);
			} else {
				trace((((("Trying to add " + _arg1) + " event twice to ") + this.toString()) + ". Adding ignored."));
			};
		}
		override public function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{
			throw (new Error("Do not use addEventListener for systems, use registerListener instead"));
		}
		private function containsEventAt(_arg1:Array, _arg2:String):int{
			var _local5:EventInfo;
			var _local3:int = _arg1.length;
			var _local4:int;
			while (_local4 < _local3) {
				_local5 = (_arg1[_local4] as EventInfo);
				if (_local5.type == _arg2){
					return (_local4);
				};
				_local4++;
			};
			return (-1);
		}
		protected function resumeChildren():void{
			var _local1:SystemBase;
			for each (_local1 in mChildren) {
				_local1.resume();
			};
		}
		protected function pauseChildren():void{
			var _local1:SystemBase;
			for each (_local1 in mChildren) {
				_local1.pause();
			};
		}
		public function onPause():void{
		}
		final public function unregisterEventListener(_arg1:String, _arg2:Function):void{
			var _local3:int;
			_local3 = containsEventAt(mSubscribedEvents, _arg1);
			if (_local3 != -1){
				mSubscribedEvents.splice(_local3, 1);
				EventManager.instance.removeEventListener(_arg1, _arg2, false);
			} else {
				trace(((("Trying to remove non registered event " + _arg1) + " to ") + this.toString()));
			};
		}
		protected function removeTimer(_arg1:GameTimer):void{
			var _local2:int = ArrayHelper.contains(mTimers, _arg1);
			if (_local2 > -1){
				mTimers.splice(_local2, 1);
			};
		}
		final protected function addChildSystem(_arg1:SystemBase):void{
			if (this == _arg1){
				throw (new Error((("Trying to add " + this.toString()) + " system as a child to itself! ")));
			};
			if (ArrayHelper.contains(mChildren, _arg1) < 0){
				mChildren.push(_arg1);
			} else {
				throw (new Error((((("Trying to add " + _arg1.toString()) + " system to ") + this.toString()) + " system more than once!")));
			};
		}
		final public function _update(_arg1:Number):void{
			var _local2:GameTimer;
			var _local3:SystemBase;
			if (mRunning){
				update(_arg1);
				for each (_local2 in mTimers) {
					_local2.update(_arg1);
				};
				for each (_local3 in mChildren) {
					_local3._update(_arg1);
				};
			};
		}
		protected function addTimer(_arg1:GameTimer):void{
			mTimers.push(_arg1);
		}
		public function onResume():void{
		}
		final public function resume():void{
			if (!mRunning){
				mRunning = true;
				attachListeners();
				onResume();
			};
		}
		final public function get isRunning():Boolean{
			return (mRunning);
		}
		protected function destroy():void{
		}
		final private function _destroy():void{
			detachListeners();
			destroy();
			while (mChildren.length != 0) {
				this.removeChildSystem(mChildren[0]);
			};
			trace((this.toString() + " system destroyed"));
		}
		final public function pause(_arg1:Boolean=true):void{
			if (mRunning){
				mRunning = false;
				detachListeners();
				onPause();
				pauseChildren();
			};
		}
		protected function get children():Array{
			return (mChildren);
		}

	}
}//package TDA.systems 

class EventInfo {

	public var priority:int;
	public var listener:Function;
	public var type:String;
	public var useWeakRef:Boolean;

	private function EventInfo(_arg1:String, _arg2:Function, _arg3:int, _arg4:Boolean){
		type = _arg1;
		listener = _arg2;
		priority = _arg3;
		useWeakRef = _arg4;
	}
}

****************

//TDAKeyboardSystem (TDA.systems.TDAKeyboardSystem)
package TDA.systems {
	import mx.core.*;
	import flash.events.*;
	import TDA.events.*;

	public class TDAKeyboardSystem extends SystemBase {

		public function TDAKeyboardSystem(){
			Application.application.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
			Application.application.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
		}
		override public function update(_arg1:Number):void{
		}
		private function onKeyDown(_arg1:KeyboardEvent):void{
			EventManager.instance.dispatchEvent(new TDAKeyboardEvent(TDAKeyboardEvent.KEY_DOWN, _arg1.keyCode));
		}
		private function onKeyUp(_arg1:KeyboardEvent):void{
			EventManager.instance.dispatchEvent(new TDAKeyboardEvent(TDAKeyboardEvent.KEY_UP, _arg1.keyCode));
		}

	}
}//package TDA.systems 

****************

//GameTimer (TDA.timer.GameTimer)
package TDA.timer {

	public class GameTimer {

		private var mRepeating:Boolean;// = false
		private var mExpiration:Number;// = 0
		private var mRunning:Boolean;// = false
		private var mStarted:Boolean;// = false
		private var mElapsed:Number;// = 0
		private var mFunction:Function;

		public function GameTimer(_arg1:Number, _arg2:Function=null, _arg3:Boolean=false){
			mExpiration = _arg1;
			mFunction = _arg2;
			mRepeating = _arg3;
		}
		public function set timerExpired(_arg1:Function):void{
			mFunction = _arg1;
		}
		public function update(_arg1:Number):void{
			if (mRunning){
				mElapsed = (mElapsed + _arg1);
				if (mElapsed >= mExpiration){
					if (mRepeating){
						mElapsed = (mElapsed - mExpiration);
					} else {
						mRunning = false;
					};
					if (mFunction != null){
						mFunction(new GameTimerEvent(mElapsed));
					};
				};
			};
		}
		public function reset():void{
			mRunning = false;
			mElapsed = 0;
		}
		public function get isRepeating():Boolean{
			return (mRepeating);
		}
		public function set expiration(_arg1:Number):void{
			if (isRunning){
				throw (new Error("Changed expiration while timer was running."));
			};
			mExpiration = _arg1;
		}
		public function get expired():Boolean{
			return (((!(mRepeating)) && ((mElapsed > mExpiration))));
		}
		public function get expiration():Number{
			return (mExpiration);
		}
		public function play():void{
			mRunning = true;
		}
		public function get isRunning():Boolean{
			return (mRunning);
		}
		public function pause():void{
			mRunning = false;
		}
		public function set isRepeating(_arg1:Boolean):void{
			mRepeating = _arg1;
		}
		public function get elapsed():Number{
			return (mElapsed);
		}

	}
}//package TDA.timer 

****************

//GameTimerEvent (TDA.timer.GameTimerEvent)
package TDA.timer {

	public class GameTimerEvent {

		private var mElapsed:Number;

		public function GameTimerEvent(_arg1:Number){
			mElapsed = _arg1;
		}
		public function get elapsedTime():Number{
			return (mElapsed);
		}

	}
}//package TDA.timer 

****************

//Tweener (TDA.timer.Tweener)
package TDA.timer {

	public class Tweener extends GameTimer {

		private var mCompletedCallback:Function;
		private var mType:int;
		private var mCurEnd:Number;
		private var mEnd:Number;
		private var mCurStart:Number;
		private var mStart:Number;
		private var mTickCallback:Function;

		public static const BACK_AND_FORTH:int = 0;
		public static const RESTART:int = 1;

		public function Tweener(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Function=null, _arg5:Function=null, _arg6:Function=null, _arg7:Boolean=false, _arg8:int=1){
			mStart = _arg2;
			mCurStart = _arg2;
			mEnd = _arg3;
			mCurEnd = _arg3;
			mTickCallback = _arg4;
			mCompletedCallback = _arg5;
			mType = _arg8;
			super(_arg1, completed, _arg7);
		}
		override public function update(_arg1:Number):void{
			if (((isRunning) && (!((mTickCallback == null))))){
				mTickCallback(interpolateValue((super.elapsed + _arg1)));
			};
			super.update(_arg1);
		}
		private function completed(_arg1:GameTimerEvent):void{
			var _local2:Number;
			if (mCompletedCallback != null){
				mCompletedCallback(_arg1);
			};
			if (mType == BACK_AND_FORTH){
				_local2 = mCurStart;
				mCurStart = mCurEnd;
				mCurEnd = _local2;
			};
		}
		public function set endValue(_arg1:Number):void{
			if (super.isRunning){
				throw (new Error("Tried to set endValue while Timer was running"));
			};
			mEnd = _arg1;
			mCurEnd = _arg1;
		}
		public function set startValue(_arg1:Number):void{
			if (super.isRunning){
				throw (new Error("Tried to set startValue while Timer was running"));
			};
			mStart = _arg1;
			mCurStart = _arg1;
		}
		override public function reset():void{
			mCurStart = mStart;
			mCurEnd = mEnd;
			super.reset();
		}
		public function get startValue():Number{
			return (mStart);
		}
		private function interpolateValue(_arg1:Number):Number{
			return (((((mCurEnd - mCurStart) / super.expiration) * _arg1) + mCurStart));
		}
		public function get endValue():Number{
			return (mEnd);
		}

	}
}//package TDA.timer 

****************

//Config (TDA.Config)
package TDA {

	public class Config {

		public static const AudioVolumeInit:Number = 1;
		public static const ShowTrackDebug:Boolean = false;
		public static const SoundFXVolumeInit:Number = 1;
		public static const MusicVolumeInit:Number = 0.8;
		public static const ColorRooms:Boolean = true;
		public static const GoogleAnalyticsAccount:String = "UA-11632535-1";
		public static const TrackUsers:Boolean = false;

	}
}//package TDA 

****************

//Core (TDA.Core)
package TDA {
	import mx.core.*;
	import mx.controls.*;
	import TDA.systems.*;
	import flash.utils.*;

	public final class Core {

		private var mElapsed:Number;// = 0
		private var mLastTime:int;// = 0
		private var mRunning:Boolean;// = false
		private var mTimePerFrameSec:Number;// = 33.3333333333333
		private var mNextTime:int;// = 0
		private var mFrameCount:int;// = 0
		private var fpsText:Text;
		private var mSystems:Array;
		private var mUseFixedTimestep:Boolean;// = false
		private var mLastSecond:int;// = 0

		private static const SHOW_FPS:Boolean = false;

		private static var mInstance:Core;

		public function Core(_arg1:SingletonEnforcer){
			mSystems = new Array();
			super();
			if (SHOW_FPS){
				fpsText = new Text();
				fpsText.x = 300;
				fpsText.y = 10;
				Application.application.addChild(fpsText);
			};
		}
		public function update():void{
			Application.application.setFocus();
			var _local1:int = getTimer();
			updateSystems(((_local1 - mLastTime) / 1000));
			mLastTime = _local1;
		}
		public function set useFixedTimeStep(_arg1:Boolean):void{
			mUseFixedTimestep = _arg1;
		}
		private function updateSystems(_arg1:Number):void{
			var _local2:SystemBase;
			for each (_local2 in mSystems) {
				_local2._update(_arg1);
			};
		}
		private function calculateFPS():void{
			var _local1:int = getTimer();
			if ((_local1 - mLastSecond) < 1000){
				mFrameCount++;
			} else {
				fpsText.text = (mFrameCount / ((_local1 - mLastSecond) / 1000)).toString();
				mFrameCount = 0;
				mLastSecond = _local1;
			};
		}
		public function set fixedFPS(_arg1:Number):void{
			mTimePerFrameSec = (1000 / _arg1);
		}
		public function addSystem(_arg1:SystemBase):void{
			var _local2:Boolean;
			var _local3:int = mSystems.length;
			var _local4:int;
			while (_local4 < _local3) {
				if (mSystems[_local4] == _arg1){
					_local2 = false;
				};
				_local4++;
			};
			if (_local2){
				mSystems.push(_arg1);
			} else {
				throw (new Error("Trying to add system more than once!"));
			};
		}

		public static function get instance():Core{
			if (mInstance == null){
				mInstance = new Core(new SingletonEnforcer());
			};
			return (mInstance);
		}

	}
}//package TDA 

class SingletonEnforcer {

	private function SingletonEnforcer(){
	}
}

****************

//_activeButtonStyleStyle (_activeButtonStyleStyle)
package {
	import mx.core.*;
	import mx.styles.*;

	public class _activeButtonStyleStyle {

		public static function init(_arg1:IFlexModuleFactory):void{
			var fbs = _arg1;
			var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".activeButtonStyle");
			if (!style){
				style = new CSSStyleDeclaration();
				StyleManager.setStyleDeclaration(".activeButtonStyle", style, false);
			};
			if (style.defaultFactory == null){
				style.defaultFactory = function ():void{
				};
			};
		}

	}
}//package 

****************

//_activeTabStyleStyle (_activeTabStyleStyle)
package {
	import mx.core.*;
	import mx.styles.*;

	public class _activeTabStyleStyle {

		public static function init(_arg1:IFlexModuleFactory):void{
			var fbs = _arg1;
			var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".activeTabStyle");
			if (!style){
				style = new CSSStyleDeclaration();
				StyleManager.setStyleDeclaration(".activeTabStyle", style, false);
			};
			if (style.defaultFactory == null){
				style.defaultFactory = function ():void{
					this.fontWeight = "bold";
				};
			};
		}

	}
}//package 

****************

//_advancedDataGridStylesStyle (_advancedDataGridStylesStyle)
package {
	import mx.core.*;
	import mx.styles.*;

	public class _advancedDataGridStylesStyle {

		public static function init(_arg1:IFlexModuleFactory):void{
			var fbs = _arg1;
			var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".advancedDataGridStyles");
			if (!style){
				style = new CSSStyleDeclaration();
				StyleManager.setStyleDeclaration(".advancedDataGridStyles", style, false);
			};
			if (style.defaultFactory == null){
				style.defaultFactory = function ():void{
					this.fontWeight = "bold";
				};
			};
		}

	}
}//package 

****************

//_alertButtonStyleStyle (_alertButtonStyleStyle)
package {
	import mx.core.*;
	import mx.styles.*;

	public class _alertButtonStyleStyle {

		public static function init(_arg1:IFlexModuleFactory):void{
			var fbs = _arg1;
			var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".alertButtonStyle");
			if (!style){
				style = new CSSStyleDeclaration();
				StyleManager.setStyleDeclaration(".alertButtonStyle", style, false);
			};
			if (style.defaultFactory == null){
				style.defaultFactory = function ():void{
					this.color = 734012;
				};
			};
		}

	}
}//package 

****************

//_AlertStyle (_AlertStyle)
package {
	import mx.core.*;
	import mx.styles.*;

	public class _AlertStyle {

		public static function init(_arg1:IFlexModuleFactory):void{
			var fbs = _arg1;
			var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration("Alert");
			if (!style){
				style = new CSSStyleDeclaration();
				StyleManager.setStyleDeclaration("Alert", style, false);
			};
			if (style.defaultFactory == null){
				style.defaultFactory = function ():void{
					this.paddingTop = 2;
					this.borderColor = 8821927;
					this.roundedBottomCorners = true;
					this.color = 0xFFFFFF;
					this.buttonStyleName = "alertButtonStyle";
					this.backgroundColor = 8821927;
					this.borderAlpha = 0.9;
					this.paddingLeft = 10;
					this.paddingBottom = 2;
					this.backgroundAlpha = 0.9;
					this.paddingRight = 10;
				};
			};
		}

	}
}//package 

****************

//_ApplicationStyle (_ApplicationStyle)
package {
	import mx.core.*;
	import mx.styles.*;
	import mx.skins.halo.*;

	public class _ApplicationStyle {

		public static function init(_arg1:IFlexModuleFactory):void{
			var fbs = _arg1;
			var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration("Application");
			if (!style){
				style = new CSSStyleDeclaration();
				StyleManager.setStyleDeclaration("Application", style, false);
			};
			if (style.defaultFactory == null){
				style.defaultFactory = function ():void{
					this.backgroundSize = "100%";
					this.paddingTop = 24;
					this.backgroundColor = 8821927;
					this.backgroundImage = ApplicationBackground;
					this.horizontalAlign = "center";
					this.backgroundGradientAlphas = [1, 1];
					this.paddingLeft = 24;
					this.paddingBottom = 24;
					this.paddingRight = 24;
				};
			};
		}

	}
}//package 

****************

//_ButtonStyle (_ButtonStyle)
package {
	import mx.core.*;
	import mx.styles.*;
	import mx.skins.halo.*;

	public class _ButtonStyle {

		public static function init(_arg1:IFlexModuleFactory):void{
			var fbs = _arg1;
			var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration("Button");
			if (!style){
				style = new CSSStyleDeclaration();
				StyleManager.setStyleDeclaration("Button", style, false);
			};
			if (style.defaultFactory == null){
				style.defaultFactory = function ():void{
					this.fontWeight = "bold";
					this.paddingTop = 2;
					this.cornerRadius = 4;
					this.textAlign = "center";
					this.verticalGap = 2;
					this.horizontalGap = 2;
					this.skin = ButtonSkin;
					this.paddingLeft = 10;
					this.paddingBottom = 2;
					this.paddingRight = 10;
				};
			};
		}

	}
}//package 

****************

//_comboDropdownStyle (_comboDropdownStyle)
package {
	import mx.core.*;
	import mx.styles.*;

	public class _comboDropdownStyle {

		public static function init(_arg1:IFlexModuleFactory):void{
			var fbs = _arg1;
			var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".comboDropdown");
			if (!style){
				style = new CSSStyleDeclaration();
				StyleManager.setStyleDeclaration(".comboDropdown", style, false);
			};
			if (style.defaultFactory == null){
				style.defaultFactory = function ():void{
					this.shadowDirection = "center";
					this.fontWeight = "normal";
					this.dropShadowEnabled = true;
					this.leading = 0;
					this.backgroundColor = 0xFFFFFF;
					this.shadowDistance = 1;
					this.cornerRadius = 0;
					this.borderThickness = 0;
					this.paddingLeft = 5;
					this.paddingRight = 5;
				};
			};
		}

	}
}//package 

****************

//_ContainerStyle (_ContainerStyle)
package {
	import mx.core.*;
	import mx.styles.*;

	public class _ContainerStyle {

		public static function init(_arg1:IFlexModuleFactory):void{
			var fbs = _arg1;
			var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration("Container");
			if (!style){
				style = new CSSStyleDeclaration();
				StyleManager.setStyleDeclaration("Container", style, false);
			};
			if (style.defaultFactory == null){
				style.defaultFactory = function ():void{
					this.borderStyle = "none";
				};
			};
		}

	}
}//package 

****************

//_Continuity_FlexInit (_Continuity_FlexInit)
package {
	import mx.core.*;
	import mx.styles.*;
	import mx.effects.*;
	import mx.collections.*;
	import flash.utils.*;
	import mx.utils.*;
	import flash.net.*;
	import flash.system.*;

	public class _Continuity_FlexInit {

		public static function init(_arg1:IFlexModuleFactory):void{
			var fbs = _arg1;
			var _local3 = EffectManager;
			_local3.mx_internal::registerEffectTrigger("addedEffect", "added");
			_local3 = EffectManager;
			_local3.mx_internal::registerEffectTrigger("creationCompleteEffect", "creationComplete");
			_local3 = EffectManager;
			_local3.mx_internal::registerEffectTrigger("focusInEffect", "focusIn");
			_local3 = EffectManager;
			_local3.mx_internal::registerEffectTrigger("focusOutEffect", "focusOut");
			_local3 = EffectManager;
			_local3.mx_internal::registerEffectTrigger("hideEffect", "hide");
			_local3 = EffectManager;
			_local3.mx_internal::registerEffectTrigger("mouseDownEffect", "mouseDown");
			_local3 = EffectManager;
			_local3.mx_internal::registerEffectTrigger("mouseUpEffect", "mouseUp");
			_local3 = EffectManager;
			_local3.mx_internal::registerEffectTrigger("moveEffect", "move");
			_local3 = EffectManager;
			_local3.mx_internal::registerEffectTrigger("removedEffect", "removed");
			_local3 = EffectManager;
			_local3.mx_internal::registerEffectTrigger("resizeEffect", "resize");
			_local3 = EffectManager;
			_local3.mx_internal::registerEffectTrigger("rollOutEffect", "rollOut");
			_local3 = EffectManager;
			_local3.mx_internal::registerEffectTrigger("rollOverEffect", "rollOver");
			_local3 = EffectManager;
			_local3.mx_internal::registerEffectTrigger("showEffect", "show");
			try {
				if (getClassByAlias("flex.messaging.io.ArrayCollection") == null){
					registerClassAlias("flex.messaging.io.ArrayCollection", ArrayCollection);
				};
			} catch(e:Error) {
				registerClassAlias("flex.messaging.io.ArrayCollection", ArrayCollection);
			};
			try {
				if (getClassByAlias("flex.messaging.io.ArrayList") == null){
					registerClassAlias("flex.messaging.io.ArrayList", ArrayList);
				};
			} catch(e:Error) {
				registerClassAlias("flex.messaging.io.ArrayList", ArrayList);
			};
			try {
				if (getClassByAlias("flex.messaging.io.ObjectProxy") == null){
					registerClassAlias("flex.messaging.io.ObjectProxy", ObjectProxy);
				};
			} catch(e:Error) {
				registerClassAlias("flex.messaging.io.ObjectProxy", ObjectProxy);
			};
			var styleNames:Array = ["fontAntiAliasType", "errorColor", "kerning", "backgroundDisabledColor", "modalTransparencyColor", "textRollOverColor", "textIndent", "themeColor", "modalTransparency", "textDecoration", "fontThickness", "textAlign", "fontFamily", "textSelectedColor", "fontGridFitType", "letterSpacing", "fontStyle", "dropShadowColor", "fontSize", "disabledColor", "fontWeight", "modalTransparencyBlur", "leading", "color", "fontSharpness", "barColor", "modalTransparencyDuration"];
			var i:int;
			while (i < styleNames.length) {
				StyleManager.registerInheritingStyle(styleNames[i]);
				i = (i + 1);
			};
		}

	}
}//package 

****************

//_Continuity_mx_managers_SystemManager (_Continuity_mx_managers_SystemManager)
package {
	import flash.utils.*;
	import mx.core.*;
	import mx.managers.*;
	import flash.system.*;
	import TDA.systems.gui.loadinggui.*;

	public class _Continuity_mx_managers_SystemManager extends SystemManager implements IFlexModuleFactory {

		private var _preloadedRSLs:Dictionary;

		public function _Continuity_mx_managers_SystemManager(){
			FlexVersion.compatibilityVersionString = "3.0.0";
			super();
		}
		override public function create(... _args):Object{
			if ((((_args.length > 0)) && (!((_args[0] is String))))){
				return (super.create.apply(this, _args));
			};
			var _local2:String = ((_args.length == 0)) ? "Continuity" : String(_args[0]);
			var _local3:Class = Class(getDefinitionByName(_local2));
			if (!_local3){
				return (null);
			};
			var _local4:Object = new (_local3);
			if ((_local4 is IFlexModule)){
				IFlexModule(_local4).moduleFactory = this;
			};
			return (_local4);
		}
		override public function allowInsecureDomain(... _args):void{
			var _local2:Object;
			Security.allowInsecureDomain(_args);
			for (_local2 in _preloadedRSLs) {
				if (((_local2.content) && (("allowInsecureDomainInRSL" in _local2.content)))){
					var _local5 = _local2.content;
					_local5["allowInsecureDomainInRSL"](_args);
				};
			};
		}
		override public function info():Object{
			return ({backgroundColor:"0xFFFFFF", compiledLocales:["en_US"], compiledResourceBundleNames:["collections", "containers", "core", "effects", "skins", "styles"], creationComplete:"playAd()", currentDomain:ApplicationDomain.currentDomain, enterFrame:"update()", frameRate:"100", height:"480", layout:"absolute", mainClassName:"Continuity", mixins:["_Continuity_FlexInit", "_richTextEditorTextAreaStyleStyle", "_alertButtonStyleStyle", "_textAreaVScrollBarStyleStyle", "_headerDateTextStyle", "_globalStyle", "_todayStyleStyle", "_AlertStyle", "_windowStylesStyle", "_ApplicationStyle", "_ToolTipStyle", "_CursorManagerStyle", "_opaquePanelStyle", "_errorTipStyle", "_dateFieldPopupStyle", "_MenuStyle", "_dataGridStylesStyle", "_popUpMenuStyle", "_headerDragProxyStyleStyle", "_activeTabStyleStyle", "_PanelStyle", "_ContainerStyle", "_windowStatusStyle", "_ScrollBarStyle", "_swatchPanelTextFieldStyle", "_textAreaHScrollBarStyleStyle", "_plainStyle", "_activeButtonStyleStyle", "_advancedDataGridStylesStyle", "_comboDropdownStyle", "_ButtonStyle", "_weekDayStyleStyle", "_linkButtonStyleStyle"], preloader:TDADownloadProgressBar, width:"640"});
		}
		override public function get preloadedRSLs():Dictionary{
			if (_preloadedRSLs == null){
				_preloadedRSLs = new Dictionary(true);
			};
			return (_preloadedRSLs);
		}
		override public function allowDomain(... _args):void{
			var _local2:Object;
			Security.allowDomain(_args);
			for (_local2 in _preloadedRSLs) {
				if (((_local2.content) && (("allowDomainInRSL" in _local2.content)))){
					var _local5 = _local2.content;
					_local5["allowDomainInRSL"](_args);
				};
			};
		}

	}
}//package 

****************

//_CursorManagerStyle (_CursorManagerStyle)
package {
	import mx.core.*;
	import mx.styles.*;
	import mx.skins.halo.*;

	public class _CursorManagerStyle {

		private static var _embed_css_Assets_swf_mx_skins_cursor_BusyCursor_1099287691:Class = _CursorManagerStyle__embed_css_Assets_swf_mx_skins_cursor_BusyCursor_1099287691;

		public static function init(_arg1:IFlexModuleFactory):void{
			var fbs = _arg1;
			var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration("CursorManager");
			if (!style){
				style = new CSSStyleDeclaration();
				StyleManager.setStyleDeclaration("CursorManager", style, false);
			};
			if (style.defaultFactory == null){
				style.defaultFactory = function ():void{
					this.busyCursor = BusyCursor;
					this.busyCursorBackground = _embed_css_Assets_swf_mx_skins_cursor_BusyCursor_1099287691;
				};
			};
		}

	}
}//package 

****************

//_CursorManagerStyle__embed_css_Assets_swf_mx_skins_cursor_BusyCursor_1099287691 (_CursorManagerStyle__embed_css_Assets_swf_mx_skins_cursor_BusyCursor_1099287691)
package {
	import mx.core.*;

	public class _CursorManagerStyle__embed_css_Assets_swf_mx_skins_cursor_BusyCursor_1099287691 extends SpriteAsset {

	}
}//package 

****************

//_dataGridStylesStyle (_dataGridStylesStyle)
package {
	import mx.core.*;
	import mx.styles.*;

	public class _dataGridStylesStyle {

		public static function init(_arg1:IFlexModuleFactory):void{
			var fbs = _arg1;
			var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".dataGridStyles");
			if (!style){
				style = new CSSStyleDeclaration();
				StyleManager.setStyleDeclaration(".dataGridStyles", style, false);
			};
			if (style.defaultFactory == null){
				style.defaultFactory = function ():void{
					this.fontWeight = "bold";
				};
			};
		}

	}
}//package 

****************

//_dateFieldPopupStyle (_dateFieldPopupStyle)
package {
	import mx.core.*;
	import mx.styles.*;

	public class _dateFieldPopupStyle {

		public static function init(_arg1:IFlexModuleFactory):void{
			var fbs = _arg1;
			var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".dateFieldPopup");
			if (!style){
				style = new CSSStyleDeclaration();
				StyleManager.setStyleDeclaration(".dateFieldPopup", style, false);
			};
			if (style.defaultFactory == null){
				style.defaultFactory = function ():void{
					this.dropShadowEnabled = true;
					this.backgroundColor = 0xFFFFFF;
					this.borderThickness = 0;
				};
			};
		}

	}
}//package 

****************

//_errorTipStyle (_errorTipStyle)
package {
	import mx.core.*;
	import mx.styles.*;

	public class _errorTipStyle {

		public static function init(_arg1:IFlexModuleFactory):void{
			var fbs = _arg1;
			var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".errorTip");
			if (!style){
				style = new CSSStyleDeclaration();
				StyleManager.setStyleDeclaration(".errorTip", style, false);
			};
			if (style.defaultFactory == null){
				style.defaultFactory = function ():void{
					this.fontWeight = "bold";
					this.borderStyle = "errorTipRight";
					this.paddingTop = 4;
					this.borderColor = 13510953;
					this.color = 0xFFFFFF;
					this.fontSize = 9;
					this.shadowColor = 0;
					this.paddingLeft = 4;
					this.paddingBottom = 4;
					this.paddingRight = 4;
				};
			};
		}

	}
}//package 

****************

//_globalStyle (_globalStyle)
package {
	import mx.core.*;
	import mx.styles.*;
	import mx.skins.halo.*;

	public class _globalStyle {

		public static function init(_arg1:IFlexModuleFactory):void{
			var fbs = _arg1;
			var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration("global");
			if (!style){
				style = new CSSStyleDeclaration();
				StyleManager.setStyleDeclaration("global", style, false);
			};
			if (style.defaultFactory == null){
				style.defaultFactory = function ():void{
					this.fillColor = 0xFFFFFF;
					this.kerning = false;
					this.iconColor = 0x111111;
					this.textRollOverColor = 2831164;
					this.horizontalAlign = "left";
					this.shadowCapColor = 14015965;
					this.backgroundAlpha = 1;
					this.filled = true;
					this.textDecoration = "none";
					this.roundedBottomCorners = true;
					this.fontThickness = 0;
					this.focusBlendMode = "normal";
					this.fillColors = [0xFFFFFF, 0xCCCCCC, 0xFFFFFF, 0xEEEEEE];
					this.horizontalGap = 8;
					this.borderCapColor = 9542041;
					this.buttonColor = 7305079;
					this.indentation = 17;
					this.selectionDisabledColor = 0xDDDDDD;
					this.closeDuration = 250;
					this.embedFonts = false;
					this.paddingTop = 0;
					this.letterSpacing = 0;
					this.focusAlpha = 0.4;
					this.bevel = true;
					this.fontSize = 10;
					this.shadowColor = 0xEEEEEE;
					this.borderAlpha = 1;
					this.paddingLeft = 0;
					this.fontWeight = "normal";
					this.indicatorGap = 14;
					this.focusSkin = HaloFocusRect;
					this.dropShadowEnabled = false;
					this.leading = 2;
					this.borderSkin = HaloBorder;
					this.fontSharpness = 0;
					this.modalTransparencyDuration = 100;
					this.borderThickness = 1;
					this.backgroundSize = "auto";
					this.borderStyle = "inset";
					this.borderColor = 12040892;
					this.fontAntiAliasType = "advanced";
					this.errorColor = 0xFF0000;
					this.shadowDistance = 2;
					this.horizontalGridLineColor = 0xF7F7F7;
					this.stroked = false;
					this.modalTransparencyColor = 0xDDDDDD;
					this.cornerRadius = 0;
					this.verticalAlign = "top";
					this.textIndent = 0;
					this.fillAlphas = [0.6, 0.4, 0.75, 0.65];
					this.verticalGridLineColor = 14015965;
					this.themeColor = 40447;
					this.version = "3.0.0";
					this.shadowDirection = "center";
					this.modalTransparency = 0.5;
					this.repeatInterval = 35;
					this.openDuration = 250;
					this.textAlign = "left";
					this.fontFamily = "Verdana";
					this.textSelectedColor = 2831164;
					this.paddingBottom = 0;
					this.strokeWidth = 1;
					this.fontGridFitType = "pixel";
					this.horizontalGridLines = false;
					this.useRollOver = true;
					this.verticalGridLines = true;
					this.repeatDelay = 500;
					this.fontStyle = "normal";
					this.dropShadowColor = 0;
					this.focusThickness = 2;
					this.verticalGap = 6;
					this.disabledColor = 11187123;
					this.paddingRight = 0;
					this.focusRoundedCorners = "tl tr bl br";
					this.borderSides = "left top right bottom";
					this.disabledIconColor = 0x999999;
					this.modalTransparencyBlur = 3;
					this.color = 734012;
					this.selectionDuration = 250;
					this.highlightAlphas = [0.3, 0];
				};
			};
		}

	}
}//package 

****************

//_headerDateTextStyle (_headerDateTextStyle)
package {
	import mx.core.*;
	import mx.styles.*;

	public class _headerDateTextStyle {

		public static function init(_arg1:IFlexModuleFactory):void{
			var fbs = _arg1;
			var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".headerDateText");
			if (!style){
				style = new CSSStyleDeclaration();
				StyleManager.setStyleDeclaration(".headerDateText", style, false);
			};
			if (style.defaultFactory == null){
				style.defaultFactory = function ():void{
					this.fontWeight = "bold";
					this.textAlign = "center";
				};
			};
		}

	}
}//package 

****************

//_headerDragProxyStyleStyle (_headerDragProxyStyleStyle)
package {
	import mx.core.*;
	import mx.styles.*;

	public class _headerDragProxyStyleStyle {

		public static function init(_arg1:IFlexModuleFactory):void{
			var fbs = _arg1;
			var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".headerDragProxyStyle");
			if (!style){
				style = new CSSStyleDeclaration();
				StyleManager.setStyleDeclaration(".headerDragProxyStyle", style, false);
			};
			if (style.defaultFactory == null){
				style.defaultFactory = function ():void{
					this.fontWeight = "bold";
				};
			};
		}

	}
}//package 

****************

//_linkButtonStyleStyle (_linkButtonStyleStyle)
package {
	import mx.core.*;
	import mx.styles.*;

	public class _linkButtonStyleStyle {

		public static function init(_arg1:IFlexModuleFactory):void{
			var fbs = _arg1;
			var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".linkButtonStyle");
			if (!style){
				style = new CSSStyleDeclaration();
				StyleManager.setStyleDeclaration(".linkButtonStyle", style, false);
			};
			if (style.defaultFactory == null){
				style.defaultFactory = function ():void{
					this.paddingTop = 2;
					this.paddingLeft = 2;
					this.paddingBottom = 2;
					this.paddingRight = 2;
				};
			};
		}

	}
}//package 

****************

//_MenuStyle (_MenuStyle)
package {
	import mx.core.*;
	import mx.styles.*;
	import mx.skins.halo.*;

	public class _MenuStyle {

		private static var _embed_css_Assets_swf_MenuBranchEnabled_479853903:Class = _MenuStyle__embed_css_Assets_swf_MenuBranchEnabled_479853903;
		private static var _embed_css_Assets_swf_MenuRadioEnabled_271308106:Class = _MenuStyle__embed_css_Assets_swf_MenuRadioEnabled_271308106;
		private static var _embed_css_Assets_swf_MenuSeparator_1459071627:Class = _MenuStyle__embed_css_Assets_swf_MenuSeparator_1459071627;
		private static var _embed_css_Assets_swf_MenuBranchDisabled_1759239362:Class = _MenuStyle__embed_css_Assets_swf_MenuBranchDisabled_1759239362;
		private static var _embed_css_Assets_swf_MenuCheckEnabled_1842966871:Class = _MenuStyle__embed_css_Assets_swf_MenuCheckEnabled_1842966871;
		private static var _embed_css_Assets_swf_MenuRadioDisabled_1304410487:Class = _MenuStyle__embed_css_Assets_swf_MenuRadioDisabled_1304410487;
		private static var _embed_css_Assets_swf_MenuCheckDisabled_267724086:Class = _MenuStyle__embed_css_Assets_swf_MenuCheckDisabled_267724086;

		public static function init(_arg1:IFlexModuleFactory):void{
			var fbs = _arg1;
			var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration("Menu");
			if (!style){
				style = new CSSStyleDeclaration();
				StyleManager.setStyleDeclaration("Menu", style, false);
			};
			if (style.defaultFactory == null){
				style.defaultFactory = function ():void{
					this.radioIcon = _embed_css_Assets_swf_MenuRadioEnabled_271308106;
					this.borderStyle = "menuBorder";
					this.paddingTop = 1;
					this.rightIconGap = 15;
					this.branchIcon = _embed_css_Assets_swf_MenuBranchEnabled_479853903;
					this.checkDisabledIcon = _embed_css_Assets_swf_MenuCheckDisabled_267724086;
					this.verticalAlign = "middle";
					this.paddingLeft = 1;
					this.paddingRight = 0;
					this.checkIcon = _embed_css_Assets_swf_MenuCheckEnabled_1842966871;
					this.radioDisabledIcon = _embed_css_Assets_swf_MenuRadioDisabled_1304410487;
					this.dropShadowEnabled = true;
					this.branchDisabledIcon = _embed_css_Assets_swf_MenuBranchDisabled_1759239362;
					this.dropIndicatorSkin = ListDropIndicator;
					this.separatorSkin = _embed_css_Assets_swf_MenuSeparator_1459071627;
					this.horizontalGap = 6;
					this.leftIconGap = 18;
					this.paddingBottom = 1;
				};
			};
		}

	}
}//package 

****************

//_MenuStyle__embed_css_Assets_swf_MenuBranchDisabled_1759239362 (_MenuStyle__embed_css_Assets_swf_MenuBranchDisabled_1759239362)
package {
	import mx.core.*;

	public class _MenuStyle__embed_css_Assets_swf_MenuBranchDisabled_1759239362 extends SpriteAsset {

	}
}//package 

****************

//_MenuStyle__embed_css_Assets_swf_MenuBranchEnabled_479853903 (_MenuStyle__embed_css_Assets_swf_MenuBranchEnabled_479853903)
package {
	import mx.core.*;

	public class _MenuStyle__embed_css_Assets_swf_MenuBranchEnabled_479853903 extends SpriteAsset {

	}
}//package 

****************

//_MenuStyle__embed_css_Assets_swf_MenuCheckDisabled_267724086 (_MenuStyle__embed_css_Assets_swf_MenuCheckDisabled_267724086)
package {
	import mx.core.*;

	public class _MenuStyle__embed_css_Assets_swf_MenuCheckDisabled_267724086 extends SpriteAsset {

	}
}//package 

****************

//_MenuStyle__embed_css_Assets_swf_MenuCheckEnabled_1842966871 (_MenuStyle__embed_css_Assets_swf_MenuCheckEnabled_1842966871)
package {
	import mx.core.*;

	public class _MenuStyle__embed_css_Assets_swf_MenuCheckEnabled_1842966871 extends SpriteAsset {

	}
}//package 

****************

//_MenuStyle__embed_css_Assets_swf_MenuRadioDisabled_1304410487 (_MenuStyle__embed_css_Assets_swf_MenuRadioDisabled_1304410487)
package {
	import mx.core.*;

	public class _MenuStyle__embed_css_Assets_swf_MenuRadioDisabled_1304410487 extends SpriteAsset {

	}
}//package 

****************

//_MenuStyle__embed_css_Assets_swf_MenuRadioEnabled_271308106 (_MenuStyle__embed_css_Assets_swf_MenuRadioEnabled_271308106)
package {
	import mx.core.*;

	public class _MenuStyle__embed_css_Assets_swf_MenuRadioEnabled_271308106 extends SpriteAsset {

	}
}//package 

****************

//_MenuStyle__embed_css_Assets_swf_MenuSeparator_1459071627 (_MenuStyle__embed_css_Assets_swf_MenuSeparator_1459071627)
package {
	import mx.core.*;

	public class _MenuStyle__embed_css_Assets_swf_MenuSeparator_1459071627 extends SpriteAsset {

	}
}//package 

****************

//_opaquePanelStyle (_opaquePanelStyle)
package {
	import mx.core.*;
	import mx.styles.*;

	public class _opaquePanelStyle {

		public static function init(_arg1:IFlexModuleFactory):void{
			var fbs = _arg1;
			var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".opaquePanel");
			if (!style){
				style = new CSSStyleDeclaration();
				StyleManager.setStyleDeclaration(".opaquePanel", style, false);
			};
			if (style.defaultFactory == null){
				style.defaultFactory = function ():void{
					this.borderColor = 0xFFFFFF;
					this.backgroundColor = 0xFFFFFF;
					this.headerColors = [0xE7E7E7, 0xD9D9D9];
					this.footerColors = [0xE7E7E7, 0xC7C7C7];
					this.borderAlpha = 1;
				};
			};
		}

	}
}//package 

****************

//_PanelStyle (_PanelStyle)
package {
	import mx.core.*;
	import mx.styles.*;
	import mx.skins.halo.*;

	public class _PanelStyle {

		public static function init(_arg1:IFlexModuleFactory):void{
			var effects:Array;
			var fbs = _arg1;
			var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration("Panel");
			if (!style){
				style = new CSSStyleDeclaration();
				StyleManager.setStyleDeclaration("Panel", style, false);
				effects = style.mx_internal::effects;
				if (!effects){
					effects = (style.mx_internal::effects = new Array());
				};
				effects.push("resizeEndEffect");
				effects.push("resizeStartEffect");
			};
			if (style.defaultFactory == null){
				style.defaultFactory = function ():void{
					this.statusStyleName = "windowStatus";
					this.borderStyle = "default";
					this.paddingTop = 0;
					this.borderColor = 0xE2E2E2;
					this.backgroundColor = 0xFFFFFF;
					this.cornerRadius = 4;
					this.titleBackgroundSkin = TitleBackground;
					this.borderAlpha = 0.4;
					this.borderThicknessTop = 2;
					this.paddingLeft = 0;
					this.resizeEndEffect = "Dissolve";
					this.paddingRight = 0;
					this.titleStyleName = "windowStyles";
					this.roundedBottomCorners = false;
					this.borderThicknessRight = 10;
					this.dropShadowEnabled = true;
					this.resizeStartEffect = "Dissolve";
					this.borderSkin = PanelSkin;
					this.borderThickness = 0;
					this.borderThicknessLeft = 10;
					this.paddingBottom = 0;
				};
			};
		}

	}
}//package 

****************

//_plainStyle (_plainStyle)
package {
	import mx.core.*;
	import mx.styles.*;

	public class _plainStyle {

		public static function init(_arg1:IFlexModuleFactory):void{
			var fbs = _arg1;
			var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".plain");
			if (!style){
				style = new CSSStyleDeclaration();
				StyleManager.setStyleDeclaration(".plain", style, false);
			};
			if (style.defaultFactory == null){
				style.defaultFactory = function ():void{
					this.paddingTop = 0;
					this.backgroundColor = 0xFFFFFF;
					this.backgroundImage = "";
					this.horizontalAlign = "left";
					this.paddingLeft = 0;
					this.paddingBottom = 0;
					this.paddingRight = 0;
				};
			};
		}

	}
}//package 

****************

//_popUpMenuStyle (_popUpMenuStyle)
package {
	import mx.core.*;
	import mx.styles.*;

	public class _popUpMenuStyle {

		public static function init(_arg1:IFlexModuleFactory):void{
			var fbs = _arg1;
			var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".popUpMenu");
			if (!style){
				style = new CSSStyleDeclaration();
				StyleManager.setStyleDeclaration(".popUpMenu", style, false);
			};
			if (style.defaultFactory == null){
				style.defaultFactory = function ():void{
					this.fontWeight = "normal";
					this.textAlign = "left";
				};
			};
		}

	}
}//package 

****************

//_richTextEditorTextAreaStyleStyle (_richTextEditorTextAreaStyleStyle)
package {
	import mx.core.*;
	import mx.styles.*;

	public class _richTextEditorTextAreaStyleStyle {

		public static function init(_arg1:IFlexModuleFactory):void{
			var fbs = _arg1;
			var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".richTextEditorTextAreaStyle");
			if (!style){
				style = new CSSStyleDeclaration();
				StyleManager.setStyleDeclaration(".richTextEditorTextAreaStyle", style, false);
			};
			if (style.defaultFactory == null){
				style.defaultFactory = function ():void{
				};
			};
		}

	}
}//package 

****************

//_ScrollBarStyle (_ScrollBarStyle)
package {
	import mx.core.*;
	import mx.styles.*;
	import mx.skins.halo.*;

	public class _ScrollBarStyle {

		public static function init(_arg1:IFlexModuleFactory):void{
			var fbs = _arg1;
			var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration("ScrollBar");
			if (!style){
				style = new CSSStyleDeclaration();
				StyleManager.setStyleDeclaration("ScrollBar", style, false);
			};
			if (style.defaultFactory == null){
				style.defaultFactory = function ():void{
					this.thumbOffset = 0;
					this.paddingTop = 0;
					this.borderColor = 12040892;
					this.trackColors = [9738651, 0xE7E7E7];
					this.trackSkin = ScrollTrackSkin;
					this.downArrowSkin = ScrollArrowSkin;
					this.cornerRadius = 4;
					this.upArrowSkin = ScrollArrowSkin;
					this.paddingLeft = 0;
					this.paddingBottom = 0;
					this.thumbSkin = ScrollThumbSkin;
					this.paddingRight = 0;
				};
			};
		}

	}
}//package 

****************

//_swatchPanelTextFieldStyle (_swatchPanelTextFieldStyle)
package {
	import mx.core.*;
	import mx.styles.*;

	public class _swatchPanelTextFieldStyle {

		public static function init(_arg1:IFlexModuleFactory):void{
			var fbs = _arg1;
			var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".swatchPanelTextField");
			if (!style){
				style = new CSSStyleDeclaration();
				StyleManager.setStyleDeclaration(".swatchPanelTextField", style, false);
			};
			if (style.defaultFactory == null){
				style.defaultFactory = function ():void{
					this.borderStyle = "inset";
					this.borderColor = 14015965;
					this.highlightColor = 12897484;
					this.backgroundColor = 0xFFFFFF;
					this.shadowCapColor = 14015965;
					this.shadowColor = 14015965;
					this.paddingLeft = 5;
					this.buttonColor = 7305079;
					this.borderCapColor = 9542041;
					this.paddingRight = 5;
				};
			};
		}

	}
}//package 

****************

//_textAreaHScrollBarStyleStyle (_textAreaHScrollBarStyleStyle)
package {
	import mx.core.*;
	import mx.styles.*;

	public class _textAreaHScrollBarStyleStyle {

		public static function init(_arg1:IFlexModuleFactory):void{
			var fbs = _arg1;
			var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".textAreaHScrollBarStyle");
			if (!style){
				style = new CSSStyleDeclaration();
				StyleManager.setStyleDeclaration(".textAreaHScrollBarStyle", style, false);
			};
			if (style.defaultFactory == null){
				style.defaultFactory = function ():void{
				};
			};
		}

	}
}//package 

****************

//_textAreaVScrollBarStyleStyle (_textAreaVScrollBarStyleStyle)
package {
	import mx.core.*;
	import mx.styles.*;

	public class _textAreaVScrollBarStyleStyle {

		public static function init(_arg1:IFlexModuleFactory):void{
			var fbs = _arg1;
			var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".textAreaVScrollBarStyle");
			if (!style){
				style = new CSSStyleDeclaration();
				StyleManager.setStyleDeclaration(".textAreaVScrollBarStyle", style, false);
			};
			if (style.defaultFactory == null){
				style.defaultFactory = function ():void{
				};
			};
		}

	}
}//package 

****************

//_todayStyleStyle (_todayStyleStyle)
package {
	import mx.core.*;
	import mx.styles.*;

	public class _todayStyleStyle {

		public static function init(_arg1:IFlexModuleFactory):void{
			var fbs = _arg1;
			var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".todayStyle");
			if (!style){
				style = new CSSStyleDeclaration();
				StyleManager.setStyleDeclaration(".todayStyle", style, false);
			};
			if (style.defaultFactory == null){
				style.defaultFactory = function ():void{
					this.color = 0xFFFFFF;
					this.textAlign = "center";
				};
			};
		}

	}
}//package 

****************

//_ToolTipStyle (_ToolTipStyle)
package {
	import mx.core.*;
	import mx.styles.*;
	import mx.skins.halo.*;

	public class _ToolTipStyle {

		public static function init(_arg1:IFlexModuleFactory):void{
			var fbs = _arg1;
			var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration("ToolTip");
			if (!style){
				style = new CSSStyleDeclaration();
				StyleManager.setStyleDeclaration("ToolTip", style, false);
			};
			if (style.defaultFactory == null){
				style.defaultFactory = function ():void{
					this.borderStyle = "toolTip";
					this.paddingTop = 2;
					this.borderColor = 9542041;
					this.backgroundColor = 16777164;
					this.borderSkin = ToolTipBorder;
					this.cornerRadius = 2;
					this.fontSize = 9;
					this.shadowColor = 0;
					this.paddingLeft = 4;
					this.paddingBottom = 2;
					this.backgroundAlpha = 0.95;
					this.paddingRight = 4;
				};
			};
		}

	}
}//package 

****************

//_weekDayStyleStyle (_weekDayStyleStyle)
package {
	import mx.core.*;
	import mx.styles.*;

	public class _weekDayStyleStyle {

		public static function init(_arg1:IFlexModuleFactory):void{
			var fbs = _arg1;
			var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".weekDayStyle");
			if (!style){
				style = new CSSStyleDeclaration();
				StyleManager.setStyleDeclaration(".weekDayStyle", style, false);
			};
			if (style.defaultFactory == null){
				style.defaultFactory = function ():void{
					this.fontWeight = "bold";
					this.textAlign = "center";
				};
			};
		}

	}
}//package 

****************

//_windowStatusStyle (_windowStatusStyle)
package {
	import mx.core.*;
	import mx.styles.*;

	public class _windowStatusStyle {

		public static function init(_arg1:IFlexModuleFactory):void{
			var fbs = _arg1;
			var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".windowStatus");
			if (!style){
				style = new CSSStyleDeclaration();
				StyleManager.setStyleDeclaration(".windowStatus", style, false);
			};
			if (style.defaultFactory == null){
				style.defaultFactory = function ():void{
					this.color = 0x666666;
				};
			};
		}

	}
}//package 

****************

//_windowStylesStyle (_windowStylesStyle)
package {
	import mx.core.*;
	import mx.styles.*;

	public class _windowStylesStyle {

		public static function init(_arg1:IFlexModuleFactory):void{
			var fbs = _arg1;
			var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".windowStyles");
			if (!style){
				style = new CSSStyleDeclaration();
				StyleManager.setStyleDeclaration(".windowStyles", style, false);
			};
			if (style.defaultFactory == null){
				style.defaultFactory = function ():void{
					this.fontWeight = "bold";
				};
			};
		}

	}
}//package 

****************

//ButtonMovieClip (ButtonMovieClip)
package {
	import flash.display.*;
	import flash.text.*;
	import TDA.GUI.*;

	public class ButtonMovieClip extends MovieClip implements IButtonGraphics {

		public var mTextField:TextField;

		public function ButtonMovieClip(){
			stop();
		}
		public function get displayObject():DisplayObject{
			return (this);
		}
		public function down():void{
			select();
		}
		public function select():void{
			gotoAndStop(2);
		}
		public function deselect():void{
			gotoAndStop(1);
		}
		public function up():void{
			deselect();
		}

	}
}//package 

****************

//CharacterMovieClip (CharacterMovieClip)
package {
	import flash.display.*;

	public class CharacterMovieClip extends MovieClip {

		private var mCurrent:int;// = 1

		private static const FALL_LEFT:int = 9;
		private static const RUN_RIGHT:int = 2;
		private static const JUMP_RIGHT:int = 4;
		private static const STANDING:int = 1;
		private static const PUSH_LEFT:int = 7;
		private static const JUMP_LEFT:int = 5;
		private static const FALL_RIGHT:int = 8;
		private static const RUN_LEFT:int = 3;
		private static const PUSH_RIGHT:int = 6;

		public function CharacterMovieClip(){
			mCurrent = STANDING;
			addFrameScript(0, frame1);
			super();
		}
		public function pushWall(_arg1:Number):void{
			if (_arg1 >= 0){
				gotoAndStop(PUSH_RIGHT);
			} else {
				gotoAndStop(PUSH_LEFT);
			};
		}
		public function resume():void{
			massPlay(this);
		}
		public function jump(_arg1:Number):void{
			if ((((_arg1 == 0)) && (!((((mCurrent == JUMP_RIGHT)) || ((mCurrent == JUMP_LEFT))))))){
				mCurrent = JUMP_RIGHT;
				gotoAndStop(JUMP_RIGHT);
			} else {
				if ((((_arg1 > 0)) && (!((mCurrent == JUMP_RIGHT))))){
					mCurrent = JUMP_RIGHT;
					gotoAndStop(JUMP_RIGHT);
				} else {
					if ((((_arg1 < 0)) && (!((mCurrent == JUMP_LEFT))))){
						mCurrent = JUMP_LEFT;
						gotoAndStop(JUMP_LEFT);
					};
				};
			};
		}
		function frame1(){
		}
		public function fall(_arg1:Number):void{
			if (_arg1 > 0){
				mCurrent = FALL_RIGHT;
				gotoAndStop(FALL_RIGHT);
			} else {
				if (_arg1 < 0){
					mCurrent = FALL_LEFT;
					gotoAndStop(FALL_LEFT);
				} else {
					if ((((_arg1 == 0)) && ((mCurrent == JUMP_RIGHT)))){
						mCurrent = FALL_RIGHT;
						gotoAndStop(FALL_RIGHT);
					} else {
						if ((((_arg1 == 0)) && ((mCurrent == JUMP_LEFT)))){
							(mCurrent == FALL_LEFT);
							gotoAndStop(FALL_LEFT);
						} else {
							if ((((_arg1 == 0)) && (!((((mCurrent == FALL_LEFT)) || ((mCurrent == FALL_RIGHT))))))){
								mCurrent = FALL_RIGHT;
								gotoAndStop(FALL_RIGHT);
							};
						};
					};
				};
			};
		}
		public function banana():void{
			trace("hey there");
		}
		public function freeze():void{
			massStop(this);
		}
		public function run(_arg1:Number):void{
			if (_arg1 == 0){
				mCurrent = STANDING;
				gotoAndStop(STANDING);
			} else {
				if ((((_arg1 > 0)) && (!((mCurrent == RUN_RIGHT))))){
					mCurrent = RUN_RIGHT;
					gotoAndStop(RUN_RIGHT);
				} else {
					if ((((_arg1 < 0)) && (!((mCurrent == RUN_LEFT))))){
						mCurrent = RUN_LEFT;
						gotoAndStop(RUN_LEFT);
					};
				};
			};
		}

		public static function massPlay(_arg1:DisplayObjectContainer, _arg2:Boolean=true):void{
			var _local3:MovieClip;
			var _local4:int;
			var _local5:int;
			var _local6:DisplayObjectContainer;
			_local3 = (_arg1 as MovieClip);
			if (((_local3) && (_arg2))){
				_local3.gotoAndStop(_local3.currentFrame);
			} else {
				if (_local3){
					_local3.gotoAndPlay(_local3.currentFrame);
				};
			};
			_local4 = _arg1.numChildren;
			_local5 = 0;
			while (_local5 < _local4) {
				_local6 = (_arg1.getChildAt(_local5) as DisplayObjectContainer);
				if (_local6){
					massPlay(_local6, false);
				};
				_local5++;
			};
		}
		public static function massStop(_arg1:DisplayObjectContainer):void{
			var _local2:MovieClip;
			var _local3:int;
			var _local4:int;
			var _local5:DisplayObjectContainer;
			_local2 = (_arg1 as MovieClip);
			if (_local2){
				_local2.gotoAndStop(_local2.currentFrame);
			};
			_local3 = _arg1.numChildren;
			_local4 = 0;
			while (_local4 < _local3) {
				_local5 = (_arg1.getChildAt(_local4) as DisplayObjectContainer);
				if (_local5){
					massStop(_local5);
				};
				_local4++;
			};
		}

	}
}//package 

****************

//Continuity (Continuity)
package {
	import mx.core.*;
	import mx.events.*;
	import flash.events.*;
	import flash.display.*;
	import flash.geom.*;
	import mx.styles.*;
	import flash.text.*;
	import flash.media.*;
	import mx.binding.*;
	import TDA.systems.*;
	import TDA.*;
	import TDA.scene.*;
	import flash.utils.*;
	import flash.net.*;
	import flash.ui.*;
	import TDA.systems.audio.*;
	import TDA.systems.maincontroller.*;
	import resources.*;
	import TDA.helper.*;
	import flash.system.*;
	import flash.external.*;
	import flash.accessibility.*;
	import flash.debugger.*;
	import flash.errors.*;
	import flash.filters.*;
	import flash.printing.*;
	import flash.profiler.*;
	import flash.xml.*;

	public class Continuity extends Application {

		public const GAME_WORLD_HEIGHT:int = 420;
		public const GAME_WORLD_WIDTH:int = 600;

		private var mAdUI:UIComponent;
		private var mGameHasBeenSetup:Boolean;// = false
		private var core:Core;// = null
		private var mAdClip:MovieClip;// = null
		private var mAdFramesPlayed:int;// = 0
		private var mStolen:Boolean;// = false
		private var _documentDescriptor_:UIComponentDescriptor;
		private var mAudioSystem:AudioSystem;// = null
		private var mSiteLocked:Boolean;// = true

		mx_internal static var _Continuity_StylesInit_done:Boolean = false;

		public function Continuity(){
			_documentDescriptor_ = new UIComponentDescriptor({type:Application, propertiesFactory:function ():Object{
				return ({width:640, height:480});
			}});
			mAdUI = new UIComponent();
			super();
			mx_internal::_document = this;
			if (!this.styleDeclaration){
				this.styleDeclaration = new CSSStyleDeclaration();
			};
			this.styleDeclaration.defaultFactory = function ():void{
				this.backgroundColor = 0xFFFFFF;
			};
			mx_internal::_Continuity_StylesInit();
			this.layout = "absolute";
			this.width = 640;
			this.height = 480;
			this.addEventListener("enterFrame", ___Continuity_Application1_enterFrame);
			this.addEventListener("creationComplete", ___Continuity_Application1_creationComplete);
		}
		private function isGameStolen():Boolean{
			var _local1:UIComponent;
			if (!mSiteLocked){
				return (false);
			};
			if (((!((loaderInfo == null))) && (loaderInfo.loaderURL.toLowerCase().match(SiteLock.siteLockRegex)))){
				return (false);
			};
			_local1 = new UIComponent();
			_local1.addChild(new StolenSprite());
			addChild(_local1);
			removeEventListener(Event.ENTER_FRAME, update);
			return (true);
		}
		public function ___Continuity_Application1_creationComplete(_arg1:FlexEvent):void{
			playAd();
		}
		private function update():void{
			if (mStolen){
				return;
			};
			if (((!(mGameHasBeenSetup)) || (!((mAdClip == null))))){
				if (mAdFramesPlayed >= SiteLock.preLoaderFrames){
					setup();
					mStolen = isGameStolen();
				} else {
					mAdFramesPlayed++;
				};
				return;
			};
			if (!mStolen){
				core.update();
			};
		}
		public function ___Continuity_Application1_enterFrame(_arg1:Event):void{
			update();
		}
		override public function initialize():void{
			mx_internal::setDocumentDescriptor(_documentDescriptor_);
			super.initialize();
		}
		mx_internal function _Continuity_StylesInit():void{
			var _local1:CSSStyleDeclaration;
			var _local2:Array;
			if (mx_internal::_Continuity_StylesInit_done){
				return;
			};
			mx_internal::_Continuity_StylesInit_done = true;
			var _local3 = StyleManager;
			_local3.mx_internal::initProtoChainRoots();
		}
		private function playAd():void{
			if (!SiteLock.preLoaderHasAudio){
				mAudioSystem = new AudioSystem();
			};
			Application.application.frameRate = SiteLock.preLoaderFPS;
			mAdClip = new SiteLock.PreLoader();
			addChild(mAdUI);
			mAdUI.addChild(mAdClip);
		}
		private function setup():void{
			stage.scaleMode = StageScaleMode.SHOW_ALL;
			AnimationHelper.massStop(mAdClip);
			removeChild(mAdUI);
			mAdClip.stop();
			mAdUI.removeChild(mAdClip);
			mAdClip = null;
			mAdUI = null;
			stage.frameRate = 31;
			GameWorld.instance.scaleX = 1;
			GameWorld.instance.scaleY = 1;
			GameWorld.instance.x = 0;
			GameWorld.instance.y = 0;
			var _local1:UIComponent = new UIComponent();
			_local1.x = 0;
			_local1.y = 0;
			addChild(_local1);
			_local1.addChild(GameWorld.instance);
			addChild(GuiOverlay.instance);
			core = Core.instance;
			core.useFixedTimeStep = true;
			core.fixedFPS = 30;
			if (mAudioSystem == null){
				mAudioSystem = new AudioSystem();
			};
			core.addSystem(mAudioSystem);
			core.addSystem(new TDAKeyboardSystem());
			core.addSystem(new MainControllerSystem());
			mGameHasBeenSetup = true;
		}

	}
}//package 

****************

//DoorMovieClip (DoorMovieClip)
package {
	import flash.display.*;

	public dynamic class DoorMovieClip extends MovieClip {

	}
}//package 

****************

//en_US$collections_properties (en_US$collections_properties)
package {
	import mx.resources.*;

	public class en_US$collections_properties extends ResourceBundle {

		public function en_US$collections_properties(){
			super("en_US", "collections");
		}
		override protected function getContent():Object{
			var _local1:Object = {findCondition:"Find criteria must contain all sort fields leading up to '{0}'.", noComparatorSortField:"Cannot determine comparator for SortField with name '{0}'.", outOfBounds:"Index '{0}' specified is out of bounds.", nonUnique:"Non-unique values in items.", incorrectAddition:"Attempt to add an item already in the view.", findRestriction:"Find criteria must contain at least one sort field value.", invalidType:"Incorrect type. Must be of type XML or a XMLList that contains one XML object. ", unknownMode:"Unknown find mode.", invalidIndex:"Invalid index: '{0}'.", invalidRemove:"Cannot remove when current is beforeFirst or afterLast.", unknownProperty:"Unknown Property: '{0}'.", invalidInsert:"Cannot insert when current is beforeFirst.", itemNotFound:"Cannot find when view is not sorted.", bookmarkInvalid:"Bookmark no longer valid.", noComparator:"Cannot determine comparator for '{0}'.", invalidCursor:"Cursor no longer valid.", noItems:"No items to search.", bookmarkNotFound:"Bookmark is not from this view."};
			return (_local1);
		}

	}
}//package 

****************

//en_US$containers_properties (en_US$containers_properties)
package {
	import mx.resources.*;

	public class en_US$containers_properties extends ResourceBundle {

		public function en_US$containers_properties(){
			super("en_US", "containers");
		}
		override protected function getContent():Object{
			var _local1:Object = {noColumnsFound:"No ConstraintColumns found.", noRowsFound:"No ConstraintRows found.", rowNotFound:"ConstraintRow '{0}' not found.", columnNotFound:"ConstraintColumn '{0}' not found."};
			return (_local1);
		}

	}
}//package 

****************

//en_US$core_properties (en_US$core_properties)
package {
	import mx.resources.*;

	public class en_US$core_properties extends ResourceBundle {

		public function en_US$core_properties(){
			super("en_US", "core");
		}
		override protected function getContent():Object{
			var _local1:Object = {multipleChildSets_ClassAndInstance:"Multiple sets of visual children have been specified for this component (component definition and component instance).", truncationIndicator:"...", notExecuting:"Repeater is not executing.", versionAlreadyRead:"Compatibility version has already been read.", multipleChildSets_ClassAndSubclass:"Multiple sets of visual children have been specified for this component (base component definition and derived component definition).", viewSource:"View Source", badFile:"File does not exist.", stateUndefined:"Undefined state '{0}'.", versionAlreadySet:"Compatibility version has already been set."};
			return (_local1);
		}

	}
}//package 

****************

//en_US$effects_properties (en_US$effects_properties)
package {
	import mx.resources.*;

	public class en_US$effects_properties extends ResourceBundle {

		public function en_US$effects_properties(){
			super("en_US", "effects");
		}
		override protected function getContent():Object{
			var _local1:Object = {incorrectTrigger:"The Zoom effect can not be triggered by a moveEffect trigger.", incorrectSource:"Source property must be a Class or String."};
			return (_local1);
		}

	}
}//package 

****************

//en_US$skins_properties (en_US$skins_properties)
package {
	import mx.resources.*;

	public class en_US$skins_properties extends ResourceBundle {

		public function en_US$skins_properties(){
			super("en_US", "skins");
		}
		override protected function getContent():Object{
			var _local1:Object = {notLoaded:"Unable to load '{0}'."};
			return (_local1);
		}

	}
}//package 

****************

//en_US$styles_properties (en_US$styles_properties)
package {
	import mx.resources.*;

	public class en_US$styles_properties extends ResourceBundle {

		public function en_US$styles_properties(){
			super("en_US", "styles");
		}
		override protected function getContent():Object{
			var _local1:Object = {unableToLoad:"Unable to load style({0}): {1}."};
			return (_local1);
		}

	}
}//package 

****************

//GameButton (GameButton)
package {
	import flash.text.*;

	public dynamic class GameButton extends ButtonMovieClip {

		public var mUnselectedFormat:TextFormat;
		public var mSelectedFormat:TextFormat;

		public function GameButton(){
			addFrameScript(0, frame1, 1, frame2);
		}
		function frame1(){
			mTextField.selectable = false;
			if (mUnselectedFormat != null){
				mTextField.setTextFormat(mUnselectedFormat);
			};
		}
		function frame2(){
			stop();
			if (mSelectedFormat != null){
				mTextField.setTextFormat(mSelectedFormat);
			};
		}
		public function setTextFormat(_arg1:Boolean, _arg2:TextFormat):void{
			if (_arg1){
				mSelectedFormat = _arg2;
				gotoAndStop(currentFrame);
			} else {
				mUnselectedFormat = _arg2;
				gotoAndStop(currentFrame);
			};
			if ((((currentFrame == 1)) && (!((mUnselectedFormat == null))))){
				mTextField.setTextFormat(mUnselectedFormat);
			} else {
				if ((((currentFrame == 2)) && (!((mSelectedFormat == null))))){
					mTextField.setTextFormat(mSelectedFormat);
				};
			};
		}
		public function set text(_arg1:String):void{
			mTextField.text = _arg1;
		}

	}
}//package 

****************

//KeyMovieClip (KeyMovieClip)
package {
	import flash.display.*;

	public dynamic class KeyMovieClip extends MovieClip {

	}
}//package 

****************

//LevelOptions (LevelOptions)
package {

	public dynamic class LevelOptions extends ButtonMovieClip {

	}
}//package 

****************

//Ring (Ring)
package {
	import flash.display.*;

	public dynamic class Ring extends MovieClip {

	}
}//package 

****************

//SiteLock (SiteLock)
package {

	public class SiteLock {

		public static var LogoOff:Class = SiteLock_LogoOff;
		public static var LogoOn:Class = SiteLock_LogoOn;
		public static var URL:String = "http://armorgames.com";
		public static var siteName:String = "Armor Games";
		public static var preLoaderFPS:int = 45;
		public static var siteLockRegex:RegExp = /^https{0,1}:\/\/(.*\.)*armorgames\.com\/.*/;
		public static var PreLoader:Class = SiteLock_PreLoader;
		public static var preLoaderHasAudio:Boolean = true;
		public static var preLoaderFrames:int = 215;

	}
}//package 

****************

//SiteLock_LogoOff (SiteLock_LogoOff)
package {
	import mx.core.*;

	public class SiteLock_LogoOff extends BitmapAsset {

	}
}//package 

****************

//SiteLock_LogoOn (SiteLock_LogoOn)
package {
	import mx.core.*;

	public class SiteLock_LogoOn extends BitmapAsset {

	}
}//package 

****************

//SiteLock_PreLoader (SiteLock_PreLoader)
package {
	import mx.core.*;
	import flash.utils.*;

	public class SiteLock_PreLoader extends MovieClipLoaderAsset {

		public var dataClass:Class;

		private static var bytes:ByteArray = null;

		public function SiteLock_PreLoader(){
			dataClass = SiteLock_PreLoader_dataClass;
			super();
			initialWidth = (0x3200 / 20);
			initialHeight = (9600 / 20);
		}
		override public function get movieClipData():ByteArray{
			if (bytes == null){
				bytes = ByteArray(new dataClass());
			};
			return (bytes);
		}

	}
}//package 

****************

//SiteLock_PreLoader_dataClass (SiteLock_PreLoader_dataClass)
package {
	import mx.core.*;

	public class SiteLock_PreLoader_dataClass extends ByteArrayAsset {

	}
}//package 

****************

//TypeWriterFont (TypeWriterFont)
package {
	import flash.text.*;

	public dynamic class TypeWriterFont extends Font {

	}
}//package
