Section 1
//OAdBanner (ENGINE.AD.OAdBanner)
package ENGINE.AD {
import flash.events.*;
import flash.display.*;
import flash.net.*;
public class OAdBanner {
private var iManager:DisplayObject;
private var iID:String;
private var iBanner:DisplayObject;
private var iPrefix:String;
private var iLoader:Loader;
private static const strURL:String = "http://wellgames.com/ad/";
public function OAdBanner(_arg1:String, _arg2:String){
this.iPrefix = _arg1;
this.iID = _arg2;
this.iLoader = new Loader();
this.iLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, OnIOError);
this.iLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, OnComplete);
this.iLoader.load(new URLRequest(this.prURL));
}
private function OnIOError(_arg1:IOErrorEvent):void{
}
public function DeleteBanner():void{
this.iBanner = null;
}
private function get prURL():String{
return ((((((OAdBanner.strURL + this.iPrefix) + "AdBanner.swf?r=") + this.iPrefix) + this.iID) + "&i=-1"));
}
public function get prBanner():DisplayObject{
return (this.iBanner);
}
public function CreateBanner():void{
if (this.iManager){
this.iBanner = this.iManager["prBanner"];
};
}
private function OnComplete(_arg1:Event):void{
this.iManager = this.iLoader.content;
}
}
}//package ENGINE.AD
Section 2
//OAdBanners (ENGINE.AD.OAdBanners)
package ENGINE.AD {
import flash.display.*;
import ENGINE.CORE.*;
public class OAdBanners {
public static var iBBanner:OAdBanner;
public static var iTBanner:OAdBanner;
public static function InitTBanner(_arg1:String, _arg2:String):void{
OAdBanners.iTBanner = new OAdBanner(_arg1, _arg2);
}
public static function RemoveBBanner(_arg1:DisplayObjectContainer):void{
var _local2:Sprite;
_local2 = (OAdBanners.iBBanner.prBanner as Sprite);
if (((_local2) && (_arg1.contains(_local2)))){
_arg1.removeChild(_local2);
};
OAdBanners.iBBanner.DeleteBanner();
}
public static function AddBBanner(_arg1:DisplayObjectContainer, _arg2:int, _arg3:int, _arg4:int=0, _arg5:int=0):void{
var _local6:Sprite;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
OAdBanners.iBBanner.CreateBanner();
_local6 = (OAdBanners.iBBanner.prBanner as Sprite);
if (!_local6){
return;
};
_local7 = OGlobal.ToGlobal(_arg2);
_local8 = OGlobal.ToGlobal(_arg3);
_local9 = OGlobal.ToGlobal(_arg4);
_local10 = OGlobal.ToGlobal(_arg5);
_local6.x = Math.floor((_local7 + ((_local9 - _local6.width) / 2)));
_local6.y = Math.floor((_local8 + ((_local10 - _local6.height) / 2)));
_arg1.addChild(_local6);
}
public static function RemoveTBanner(_arg1:DisplayObjectContainer):void{
var _local2:Sprite;
_local2 = (OAdBanners.iTBanner.prBanner as Sprite);
if (((_local2) && (_arg1.contains(_local2)))){
_arg1.removeChild(_local2);
};
OAdBanners.iTBanner.DeleteBanner();
}
public static function InitBBanner(_arg1:String, _arg2:String):void{
OAdBanners.iBBanner = new OAdBanner(_arg1, _arg2);
}
public static function AddTBanner(_arg1:DisplayObjectContainer, _arg2:int, _arg3:int, _arg4:int=0, _arg5:int=0):void{
var _local6:Sprite;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
OAdBanners.iTBanner.CreateBanner();
_local6 = (OAdBanners.iTBanner.prBanner as Sprite);
if (!_local6){
return;
};
_local7 = OGlobal.ToGlobal(_arg2);
_local8 = OGlobal.ToGlobal(_arg3);
_local9 = OGlobal.ToGlobal(_arg4);
_local10 = OGlobal.ToGlobal(_arg5);
_local6.x = Math.floor((_local7 + ((_local9 - _local6.width) / 2)));
_local6.y = Math.floor((_local8 + ((_local10 - _local6.height) / 2)));
_arg1.addChild(_local6);
}
}
}//package ENGINE.AD
Section 3
//OCache (ENGINE.CORE.OCache)
package ENGINE.CORE {
import flash.utils.*;
public dynamic class OCache {
public function Pack():ByteArray{
var _local1:ByteArray;
_local1 = new ByteArray();
_local1.writeObject(this);
_local1.compress();
return (_local1);
}
public function AddCategoryArr(_arg1:String, _arg2:String):Array{
var _local3:OCache;
_local3 = ((this[_arg1])==undefined) ? AddCategory(_arg1) : this[_arg1];
return (_local3.AddArr(_arg2));
}
public function GetArrItem(_arg1:String, _arg2:int){
if ((((this[_arg1] == undefined)) || ((this[_arg1][_arg2] == undefined)))){
return (null);
};
return (this[_arg1][_arg2]);
}
public function DeleteArrItem(_arg1:String, _arg2:int):void{
if (this[_arg1] == undefined){
return;
};
this[_arg1].splice(_arg2, 1);
}
public function IsCategoryArrItem(_arg1:String, _arg2:String, _arg3:int):Boolean{
if (this[_arg1] == undefined){
return (false);
};
return (this[_arg1].IsArrItem(_arg2, _arg3));
}
public function GetCategoryItem(_arg1:String, _arg2:String){
if (this[_arg1] == undefined){
return (null);
};
return (this[_arg1].GetItem(_arg2));
}
public function SetCategoryItem(_arg1:String, _arg2:String, _arg3):void{
if (this[_arg1] == undefined){
this[_arg1] = new OCache();
};
this[_arg1].SetItem(_arg2, _arg3);
}
public function SetCategoryArrItem(_arg1:String, _arg2:String, _arg3:int, _arg4):void{
if (this[_arg1] == undefined){
this[_arg1] = new OCache();
};
this[_arg1].SetArrItem(_arg2, _arg3, _arg4);
}
public function IsCategoryItem(_arg1:String, _arg2:String):Boolean{
if (this[_arg1] == undefined){
return (false);
};
return (this[_arg1].IsItem(_arg2));
}
public function DeleteCategoryItem(_arg1:String, _arg2:String):void{
if (this[_arg1] == undefined){
return;
};
this[_arg1].DeleteItem(_arg2);
}
public function AddCategory(_arg1:String):OCache{
this[_arg1] = new OCache();
return (this[_arg1]);
}
public function GetCategoryArrItem(_arg1:String, _arg2:String, _arg3:int){
if (this[_arg1] == undefined){
return (null);
};
return (GetArrItem(_arg2, _arg3));
}
public function GetCategoryNames(_arg1:String):Array{
var _local2:Array;
var _local3:String;
if (this[_arg1] == undefined){
return (null);
};
_local2 = new Array();
for (_local3 in this[_arg1]) {
_local2.push(_local3);
};
return ((_local2.length) ? _local2.sort() : null);
}
public function AddArr(_arg1:String):Array{
this[_arg1] = new Array();
return (this[_arg1]);
}
public function GetItem(_arg1:String){
if (this[_arg1] == undefined){
return (null);
};
return (this[_arg1]);
}
public function IsArrItem(_arg1:String, _arg2:int):Boolean{
return (((!((this[_arg1] == undefined))) && (!((this[_arg1][_arg2] == undefined)))));
}
public function DeleteCategoryArrItem(_arg1:String, _arg2:String, _arg3:int):void{
if (this[_arg1] == undefined){
return;
};
this[_arg1].DeleteArrItem(_arg2, _arg3);
}
public function Clear():void{
var _local1:String;
for (_local1 in this) {
delete this[_local1];
};
}
public function SetArrItem(_arg1:String, _arg2:int, _arg3):void{
if (this[_arg1] == undefined){
this[_arg1] = new Array();
};
this[_arg1][_arg2] = _arg3;
}
public function SetItem(_arg1:String, _arg2):void{
this[_arg1] = _arg2;
}
public function GetNames():Array{
var _local1:Array;
var _local2:String;
_local1 = new Array();
for (_local2 in this) {
_local1.push(_local2);
};
return ((_local1.length) ? _local1.sort() : null);
}
public function IsItem(_arg1:String):Boolean{
return (!((this[_arg1] == undefined)));
}
public function DeleteItem(_arg1:String):void{
if (this[_arg1] == undefined){
return;
};
delete this[_arg1];
}
}
}//package ENGINE.CORE
Section 4
//OGlobal (ENGINE.CORE.OGlobal)
package ENGINE.CORE {
import flash.display.*;
import flash.geom.*;
import flash.net.*;
public class OGlobal {
private static var iFPS:int = 60;
private static var iDomain:String;
private static var iSRect:Rectangle = new Rectangle();
private static var iVRect:Rectangle = new Rectangle(0, 0, 800, 600);
private static var iStage:Stage;
private static var iScale:Number = 1;
private static var iAppName:String;
private static var iOldScale:Number = 1;
public static function get FPS():int{
return (OGlobal.iFPS);
}
public static function CheckDomain(_arg1:String):Boolean{
var _local2:int;
_local2 = OGlobal.iDomain.indexOf(_arg1);
return ((((_local2 >= 0)) && ((_local2 <= 4))));
}
public static function ToLocal(_arg1:Number):Number{
return ((_arg1 / OGlobal.iScale));
}
public static function set FPS(_arg1:int):void{
OGlobal.iFPS = _arg1;
if (OGlobal.iStage){
OGlobal.iStage.frameRate = _arg1;
};
}
public static function Rescale(_arg1:Sprite, _arg2:Boolean=true):void{
var _local3:Number;
_local3 = (((OGlobal.iStage.stageWidth / OGlobal.iStage.stageHeight))<=(800 / 600)) ? (OGlobal.iStage.stageWidth / 800) : (OGlobal.iStage.stageHeight / 600);
OGlobal.iSRect.x = 0;
OGlobal.iSRect.y = 0;
OGlobal.iSRect.width = OGlobal.iStage.stageWidth;
OGlobal.iSRect.height = OGlobal.iStage.stageHeight;
OGlobal.iVRect.width = Math.round((800 * _local3));
OGlobal.iVRect.height = Math.round((600 * _local3));
OGlobal.iVRect.x = Math.floor(((OGlobal.iStage.stageWidth - OGlobal.iVRect.width) / 2));
OGlobal.iVRect.y = Math.floor(((OGlobal.iStage.stageHeight - OGlobal.iVRect.height) / 2));
if (_arg2){
_arg1.x = OGlobal.iVRect.x;
_arg1.y = OGlobal.iVRect.y;
};
OGlobal.iScale = _local3;
}
public static function get prStage():Stage{
return (OGlobal.iStage);
}
public static function ClearScale():void{
OGlobal.iOldScale = OGlobal.iScale;
OGlobal.iScale = 1;
OGlobal.iVRect = OGlobal.iSRect.clone();
}
public static function ToGlobal(_arg1:Number):Number{
return ((_arg1 * OGlobal.iScale));
}
public static function set AppName(_arg1:String):void{
OGlobal.iAppName = ("WellGames_" + _arg1);
}
public static function get Domain():String{
return (OGlobal.iDomain);
}
public static function SetDomain():void{
var _local1:LocalConnection;
_local1 = new LocalConnection();
OGlobal.iDomain = _local1.domain;
}
public static function get StageRect():Rectangle{
return (OGlobal.iSRect);
}
public static function ScaleFloor(_arg1:Number):Number{
return ((Math.floor((_arg1 * OGlobal.iScale)) / OGlobal.iScale));
}
public static function get Scale():Number{
return (OGlobal.iScale);
}
public static function get ViewporRect():Rectangle{
return (OGlobal.iVRect);
}
public static function get AppName():String{
return (OGlobal.iAppName);
}
public static function set prStage(_arg1:Stage):void{
OGlobal.iStage = _arg1;
}
public static function RestoreScale():void{
OGlobal.iScale = OGlobal.iOldScale;
}
public static function ScaleMod(_arg1:Number):Number{
var _local2:Number;
_local2 = (_arg1 * OGlobal.iScale);
return (((_local2 - Math.floor(_local2)) / OGlobal.iScale));
}
}
}//package ENGINE.CORE
Section 5
//ORandomInt (ENGINE.CORE.ORandomInt)
package ENGINE.CORE {
import flash.utils.*;
public class ORandomInt {
private var iNextRandom:int;
public function ORandomInt(){
iNextRandom = getTimer();
}
public function RandNumber():Number{
var _local1:Number;
_local1 = Rand();
return ((_local1 / 32767));
}
public function Rand():int{
iNextRandom = ((iNextRandom * 1103515245) + 12345);
return (((iNextRandom >> 16) & 32767));
}
public function get NextRandom():int{
return (this.iNextRandom);
}
public function RandOnInterval(_arg1:Number=0, _arg2:Number=1):int{
return ((_arg1 + (Rand() % ((1 + _arg2) - _arg1))));
}
public function RandVal(_arg1:int):int{
var _local2:Number;
_local2 = Rand();
return ((_local2 % _arg1));
}
public function SeedRand(_arg1:int=0):void{
if (_arg1 == 0){
iNextRandom = getTimer();
} else {
iNextRandom = _arg1;
};
}
}
}//package ENGINE.CORE
Section 6
//OSound (ENGINE.CORE.OSound)
package ENGINE.CORE {
import flash.events.*;
import flash.utils.*;
import flash.net.*;
import flash.media.*;
public class OSound {
private static var iMusicInd:int = 0;
private static var iSoundsObjects:Array;
private static var iSounds:Dictionary = new Dictionary(true);
private static var iMusicPlayList:Array = new Array();
private static var iSoundVolume:Number = 1;
private static var iMusicChannel:SoundChannel;
private static var iMusicVolume:Number = 1;
private static var iMusic:Sound;
public static function PlaySoundInd(_arg1:int, _arg2:Number=0):Boolean{
if (OSound.iSoundVolume == 0){
return (false);
};
_arg1 = Math.max(_arg1, 0);
_arg1 = Math.min(_arg1, (OSound.iSoundsObjects.length - 1));
return (OSound.PlaySound(OSound.iSoundsObjects[_arg1], _arg2));
}
public static function set MusicVolume(_arg1:Number):void{
var _local2:SoundTransform;
OSound.iMusicVolume = _arg1;
if (OSound.iMusicChannel){
if (_arg1 == 0){
OSound.StopMusic();
} else {
_local2 = OSound.iMusicChannel.soundTransform;
_local2.volume = _arg1;
OSound.iMusicChannel.soundTransform = _local2;
};
} else {
if (OSound.iMusicVolume > 0){
OSound.PlayMusic();
};
};
}
private static function OnMusicLoadComplete(_arg1:Event):void{
if (OSound.iMusicVolume == 0){
return;
};
OSound.iMusicChannel = iMusic.play(0, 0, new SoundTransform(OSound.iMusicVolume, 0));
OSound.RemoveMusic();
OSound.iMusicChannel.addEventListener(Event.SOUND_COMPLETE, OnMusicComplete);
}
public static function set SoundVolume(_arg1:Number):void{
OSound.iSoundVolume = _arg1;
}
private static function OnMusicLoadIOError(_arg1:Event):void{
OSound.RemoveMusic();
OSound.iMusicPlayList.splice(OSound.iMusicInd, 1);
OSound.iMusicInd = ((OSound.iMusicInd > (OSound.iMusicPlayList.length - 1))) ? (OSound.iMusicPlayList.length - 1) : OSound.iMusicInd;
OSound.PlayMusic();
}
private static function OnMusicComplete(_arg1:Event):void{
PlayMusic();
}
public static function PlaySound(_arg1:Class, _arg2:Number=0):Boolean{
var _local3:Sound;
if (OSound.iSoundVolume == 0){
return (false);
};
_local3 = OSound.iSounds[_arg1];
if (_local3 != null){
_local3.play(0, 0, new SoundTransform(OSound.iSoundVolume, _arg2));
};
return (!((_local3 == null)));
}
private static function RemoveMusic():void{
if (OSound.iMusic){
OSound.iMusic.removeEventListener(Event.COMPLETE, OSound.OnMusicLoadComplete);
OSound.iMusic.removeEventListener(IOErrorEvent.IO_ERROR, OSound.OnMusicLoadIOError);
OSound.iMusic = null;
};
}
public static function StopMusic():void{
if (OSound.iMusicChannel){
OSound.iMusicChannel.removeEventListener(Event.SOUND_COMPLETE, OnMusicComplete);
OSound.iMusicChannel.stop();
OSound.iMusicChannel = null;
};
}
public static function get SoundVolume():Number{
return (OSound.iSoundVolume);
}
public static function PlayListClear():void{
OSound.iMusicPlayList = new Array();
}
public static function PlayListAdd(_arg1:String):void{
OSound.iMusicPlayList.push(_arg1);
OSound.iMusicInd = (OSound.iMusicPlayList.length - 1);
}
public static function PlayMusic():void{
var request:URLRequest;
if ((((OSound.iMusicVolume == 0)) || (!(OSound.iMusicPlayList.length)))){
return;
};
OSound.StopMusic();
OSound.iMusicInd = ((OSound.iMusicInd + 1) % OSound.iMusicPlayList.length);
request = new URLRequest(OSound.iMusicPlayList[OSound.iMusicInd]);
OSound.iMusic = new Sound();
OSound.iMusic.addEventListener(Event.COMPLETE, OSound.OnMusicLoadComplete);
OSound.iMusic.addEventListener(IOErrorEvent.IO_ERROR, OSound.OnMusicLoadIOError);
try {
OSound.iMusic.load(request);
} catch(e:Error) {
};
}
public static function RegisterEmbedSounds(_arg1:Array):Boolean{
var _local2:int;
var _local3:Sound;
OSound.iSoundsObjects = _arg1;
_local2 = 0;
while (_local2 < _arg1.length) {
_local3 = (new (_arg1[_local2]) as Sound);
OSound.iSounds[_arg1[_local2]] = _local3;
_local2++;
};
return (true);
}
public static function PlaySoundRandom(_arg1:Number=0, _arg2:int=0, _arg3:int=-1):Boolean{
var _local4:int;
if (OSound.iSoundVolume == 0){
return (false);
};
_arg2 = Math.max(_arg2, 0);
_arg2 = Math.min(_arg2, (OSound.iSoundsObjects.length - 1));
if (_arg3 < 0){
_arg3 = (OSound.iSoundsObjects.length - 1);
};
_arg3 = Math.max(_arg3, 0);
_arg3 = Math.min(_arg3, (OSound.iSoundsObjects.length - 1));
_local4 = OUtils.Random(_arg2, _arg3);
return (OSound.PlaySound(OSound.iSoundsObjects[_local4], _arg1));
}
public static function get MusicVolume():Number{
return (OSound.iMusicVolume);
}
}
}//package ENGINE.CORE
Section 7
//OSystem (ENGINE.CORE.OSystem)
package ENGINE.CORE {
import flash.events.*;
import flash.display.*;
import flash.text.*;
import flash.utils.*;
import flash.system.*;
public class OSystem extends Sprite {
private var iLastTime:int;
private var iCount:int;
private var iText:TextField;
private var iSTimer:String;
public static var iUserText1:String = "";
public static var iUserText:String = "";
public static var iUserText2:String = "";
public function OSystem(){
this.iText = new TextField();
this.iText.autoSize = TextFieldAutoSize.LEFT;
this.iText.mouseEnabled = false;
this.addChild(this.iText);
this.addEventListener(Event.ENTER_FRAME, OnEnterFrame);
this.iLastTime = getTimer();
this.iSTimer = "";
}
public function OnEnterFrame(_arg1:Event):void{
var _local2:uint;
var _local3:int;
_local2 = System.totalMemory;
_local3 = (getTimer() - this.iLastTime);
this.iCount++;
if (_local3 >= 1000){
this.iSTimer = String((Math.round(((_local3 / this.iCount) * 100)) / 100));
this.iLastTime = getTimer();
this.iCount = 0;
};
iText.text = ((((((((((_local2.toString() + " ") + this.iSTimer) + " ") + OGlobal.prStage.frameRate) + " | ") + OSystem.iUserText) + " ") + OSystem.iUserText1) + " ") + OSystem.iUserText2);
}
}
}//package ENGINE.CORE
Section 8
//OUtils (ENGINE.CORE.OUtils)
package ENGINE.CORE {
import ENGINE.DISPLAY.*;
import flash.geom.*;
public class OUtils {
public static function AddZero(_arg1:String, _arg2:int):String{
var _local3:String;
var _local4:int;
_local3 = "";
_local4 = _arg1.length;
while (_local4 < _arg2) {
_local3 = (_local3 + "0");
_local4++;
};
_local3 = (_local3 + _arg1);
return (_local3);
}
public static function Random(_arg1:Number, _arg2:Number):Number{
return ((_arg1 + ((_arg2 - _arg1) * Math.random())));
}
public static function StringToTarget(_arg1:Class, _arg2:int, _arg3:String, _arg4:String, _arg5:int):String{
var _local6:Number;
var _local7:Rectangle;
var _local8:String;
var _local9:String;
var _local10:int;
_local6 = Math.round((1 + (_arg2 / 70)));
_local8 = ((_arg4)==null) ? "" : ((" (" + _arg4) + ")");
_local9 = (_arg3 + _local8);
_local7 = ODisplay.TextRect(_arg1, _arg2, _local6, _local9);
if (_local7.width <= _arg5){
return (_local9);
};
_local8 = ("..." + _local8);
_local10 = (_arg3.length - 1);
while (_local10 > 0) {
_local9 = (_arg3.substr(0, _local10) + _local8);
_local7 = ODisplay.TextRect(_arg1, _arg2, _local6, _local9);
if (_local7.width <= _arg5){
return (_local9);
};
_local10--;
};
return ((_arg3.substr(0, 1) + _local8));
}
public static function ClearString(_arg1:String):String{
var _local2:String;
var _local3:String;
var _local4:int;
_local2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 ";
_local3 = "";
_local4 = 0;
while (_local4 < _arg1.length) {
if (_local2.indexOf(_arg1.charAt(_local4)) > -1){
_local3 = (_local3 + _arg1.charAt(_local4));
};
_local4++;
};
return (_local3);
}
}
}//package ENGINE.CORE
Section 9
//OEffect (ENGINE.DISPLAY.EFFECTS.OEffect)
package ENGINE.DISPLAY.EFFECTS {
import ENGINE.DISPLAY.*;
import flash.filters.*;
import ENGINE.CORE.*;
public class OEffect {
protected var iColors:OCache;
protected var iFilters:OCache;
public function OEffect(){
this.iColors = new OCache();
this.iFilters = new OCache();
}
public function RegisterColor(_arg1:String, _arg2):void{
this.iColors.SetItem(_arg1, _arg2);
}
public function Init(_arg1:String, _arg2:String, _arg3:Number=1):void{
}
public function RegisterFilter(_arg1:String, _arg2):void{
this.iFilters.SetItem(_arg1, _arg2);
}
public function Apply(_arg1:Array, _arg2:Number=1, _arg3:Number=0, _arg4:Number=0):OBM{
return (null);
}
public static function MakeBevelFilter(_arg1:Array):BevelFilter{
return (new BevelFilter(_arg1[1], _arg1[2], _arg1[3], _arg1[4], _arg1[5], _arg1[6], _arg1[7], _arg1[8], _arg1[9], _arg1[10], _arg1[11], _arg1[12]));
}
}
}//package ENGINE.DISPLAY.EFFECTS
Section 10
//OEffects (ENGINE.DISPLAY.EFFECTS.OEffects)
package ENGINE.DISPLAY.EFFECTS {
import ENGINE.DISPLAY.*;
import ENGINE.CORE.*;
public class OEffects {
private static var iEffects:OCache = new OCache();
public static function RegisterColor(_arg1:String, _arg2:String, _arg3):void{
var _local4:OEffect;
_local4 = iEffects.GetItem(_arg1);
if (_local4 == null){
return;
};
_local4.RegisterColor(_arg2, _arg3);
}
public static function RegisterEffect(_arg1:String, _arg2:OEffect):void{
iEffects.SetItem(_arg1, _arg2);
}
public static function Make(_arg1:Array):OBM{
var _local2:OEffect;
_local2 = iEffects.GetItem(_arg1[3]);
if (_local2 == null){
return (null);
};
_local2.Init(_arg1[4], _arg1[5], _arg1[6]);
return (_local2.Apply(_arg1[1], _arg1[2], _arg1[7], _arg1[8]));
}
public static function GetEffect(_arg1:String):OEffect{
return (iEffects.GetItem(_arg1));
}
public static function RegisterFilter(_arg1:String, _arg2:String, _arg3):void{
var _local4:OEffect;
_local4 = iEffects.GetItem(_arg1);
if (_local4 == null){
return;
};
_local4.RegisterFilter(_arg2, _arg3);
}
public static function Apply(_arg1, _arg2:Number, _arg3:String, _arg4:String, _arg5:String, _arg6:Number=1, _arg7:Number=0, _arg8:Number=0):OBM{
var _local9:OEffect;
_local9 = iEffects.GetItem(_arg3);
if (_local9 == null){
return (null);
};
_local9.Init(_arg4, _arg5, _arg6);
return (_local9.Apply([ODisplay.SpriteLib, _arg1], _arg2, _arg7, _arg8));
}
}
}//package ENGINE.DISPLAY.EFFECTS
Section 11
//IDisplayObject (ENGINE.DISPLAY.IDisplayObject)
package ENGINE.DISPLAY {
public interface IDisplayObject {
function set prVisible(_arg1:Boolean):void;
function get prWidth():Number;
function get prHeight():Number;
function set prX(_arg1:Number):void;
function set prY(_arg1:Number):void;
function get prVisible():Boolean;
function Move(_arg1:Number, _arg2:Number):void;
function Pos(_arg1:Number, _arg2:Number):void;
function get prX():Number;
function get prY():Number;
}
}//package ENGINE.DISPLAY
Section 12
//OBitmap (ENGINE.DISPLAY.OBitmap)
package ENGINE.DISPLAY {
import flash.display.*;
import flash.geom.*;
import ENGINE.DISPLAY.EFFECTS.*;
import flash.text.*;
import ENGINE.CORE.*;
public class OBitmap extends Bitmap implements IDisplayObject {
protected var iY:Number;// = 0
protected var iX:Number;// = 0
protected var iOBM:OBM;// = null
public function OBitmap(_arg1:OBM=null, _arg2:Number=0, _arg3:Number=0){
iX = 0;
iY = 0;
iOBM = null;
super();
this.iX = _arg2;
this.iY = _arg3;
Init(_arg1);
}
public function get prVisible():Boolean{
return (this.visible);
}
public function set prX(_arg1:Number):void{
this.iX = _arg1;
Pos(this.iX, this.iY);
}
public function Clear():void{
this.Init(null);
}
public function set prOBM(_arg1:OBM):void{
this.Init(_arg1);
}
public function Pos(_arg1:Number, _arg2:Number):void{
this.iX = _arg1;
this.iY = _arg2;
if (this.iOBM){
this.x = ((this.iX * OGlobal.Scale) + this.iOBM.iX);
this.y = ((this.iY * OGlobal.Scale) + this.iOBM.iY);
} else {
this.x = (this.iX * OGlobal.Scale);
this.y = (this.iY * OGlobal.Scale);
};
}
public function set prY(_arg1:Number):void{
this.iY = _arg1;
Pos(this.iX, this.iY);
}
public function Init(_arg1:OBM):void{
this.iOBM = _arg1;
this.bitmapData = (_arg1) ? _arg1.iBM : null;
this.Pos(this.iX, this.iY);
}
public function set prVisible(_arg1:Boolean):void{
this.visible = _arg1;
}
public function Clone():OBitmap{
return (new OBitmap(this.iOBM.Clone(), this.iX, this.iY));
}
public function get prX():Number{
return (this.iX);
}
public function get prY():Number{
return (this.iY);
}
public function get prOBM():OBM{
return (this.iOBM);
}
public function get prHeight():Number{
return ((this.iOBM) ? (this.iOBM.iHeight / OGlobal.Scale) : 0);
}
public function get prWidth():Number{
return ((this.iOBM) ? (this.iOBM.iWidth / OGlobal.Scale) : 0);
}
public function CopyFrom(_arg1:OBitmap):void{
this.iX = _arg1.iX;
this.iY = _arg1.iY;
this.Init(_arg1.iOBM);
}
public function Move(_arg1:Number, _arg2:Number):void{
Pos((this.iX + _arg1), (this.iY + _arg2));
}
public static function MakeEffectFromListP(_arg1:Array):OBitmap{
var _local2:Sprite;
var _local3:Sprite;
_local2 = ((_arg1[1] is Sprite)) ? (_arg1[1] as Sprite) : new ((_arg1[1] as Class));
_local3 = (_local2.getChildAt(_arg1[2]) as Sprite);
return (OBitmap.MakeEffect(_local3, _arg1[3], _arg1[4], _arg1[5], _arg1[6], _arg1[7], _local3.x, _local3.y));
}
public static function MakeEffectP(_arg1:Array):OBitmap{
return (OBitmap.MakeEffect(_arg1[1], _arg1[2], _arg1[3], _arg1[4], _arg1[5], _arg1[6], _arg1[7], _arg1[8]));
}
public static function MakeEffectTextInRectP(_arg1:Array):OBitmap{
var _local2:Sprite;
var _local3:Rectangle;
var _local4:Number;
var _local5:Number;
var _local6:TextField;
var _local7:TextFormat;
_local2 = ((_arg1[1] is Sprite)) ? (_arg1[1] as Sprite) : new ((_arg1[1] as Class));
if ((_local2.getChildAt(0) is TextField)){
_local6 = (_local2.getChildAt(0) as TextField);
_local6.autoSize = TextFieldAutoSize.LEFT;
_local6.text = _arg1[4];
_local7 = _local6.defaultTextFormat;
_local7.size = _arg1[2];
_local7.letterSpacing = _arg1[3];
_local6.setTextFormat(_local7);
} else {
return (null);
};
_local3 = _local2.getBounds(_local2);
_local4 = ((_arg1[9] - _local3.width) / 2);
_local5 = ((_arg1[10] - _local3.height) / 2);
return (OBitmap.MakeEffect(_local2, 1, _arg1[5], _arg1[6], _arg1[7], _arg1[8], (_arg1[11] + _local4), (_arg1[12] + _local5)));
}
public static function MakeEffectTextP(_arg1:Array):OBitmap{
var _local2:Sprite;
var _local3:TextField;
var _local4:TextFormat;
_local2 = ((_arg1[1] is Sprite)) ? (_arg1[1] as Sprite) : new ((_arg1[1] as Class));
if ((_local2.getChildAt(0) is TextField)){
_local3 = (_local2.getChildAt(0) as TextField);
_local3.autoSize = TextFieldAutoSize.LEFT;
_local3.text = _arg1[4];
_local4 = _local3.defaultTextFormat;
_local4.size = _arg1[2];
_local4.letterSpacing = _arg1[3];
_local3.setTextFormat(_local4);
} else {
return (null);
};
return (OBitmap.MakeEffect(_local2, 1, _arg1[5], _arg1[6], _arg1[7], _arg1[8], _arg1[9], _arg1[10]));
}
public static function MakeRoundRectBorderEffectP(_arg1:Array):OBitmap{
var _local2:Sprite;
_local2 = new Sprite();
_local2.graphics.beginFill(0);
_local2.graphics.drawRoundRect(0, 0, _arg1[1], _arg1[2], _arg1[3]);
_local2.graphics.drawRoundRect(_arg1[4], _arg1[4], (_arg1[1] - (_arg1[4] * 2)), (_arg1[2] - (_arg1[4] * 2)), (_arg1[3] - _arg1[4]));
return (OBitmap.MakeEffect(_local2, 1, _arg1[5], _arg1[6], _arg1[7], _arg1[8], _arg1[9], _arg1[10]));
}
public static function MakeEffectInRectP(_arg1:Array):OBitmap{
var _local2:Number;
var _local3:Sprite;
var _local4:Rectangle;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
_local2 = Math.min(_arg1[7], _arg1[8]);
_local3 = ((_arg1[1] is Sprite)) ? (_arg1[1] as Sprite) : new ((_arg1[1] as Class));
_local4 = _local3.getBounds(_local3);
_local5 = Math.max(_local4.width, _local4.height);
_local6 = ((_local2 / _local5) * _arg1[2]);
_local7 = ((_arg1[7] - (_local4.width * _local6)) / 2);
_local8 = ((_arg1[8] - (_local4.height * _local6)) / 2);
return (OBitmap.MakeEffect(_local3, _local6, _arg1[3], _arg1[4], _arg1[5], _arg1[6], (_arg1[9] + _local7), (_arg1[10] + _local8)));
}
public static function MakeTmp(_arg1, _arg2:Number=1, _arg3:Number=0, _arg4:Number=0, _arg5:Number=0):OBitmap{
var _local6:OBM;
_local6 = OBM.Make([null, [ODisplay.SpriteLib, _arg1], _arg2, _arg3, _arg4, _arg5]);
return (new OBitmap(_local6, _arg3, _arg4));
}
public static function MakeP(_arg1:Array):OBitmap{
return (OBitmap.MakeTmp(_arg1[1], _arg1[2], _arg1[3], _arg1[4]));
}
public static function MakeRoundRectEffectP(_arg1:Array):OBitmap{
var _local2:Sprite;
_local2 = new Sprite();
_local2.graphics.beginFill(0);
_local2.graphics.drawRoundRect(0, 0, _arg1[1], _arg1[2], _arg1[3]);
return (OBitmap.MakeEffect(_local2, 1, _arg1[4], _arg1[5], _arg1[6], _arg1[7], _arg1[8], _arg1[9]));
}
public static function Make(_arg1:Array):OBitmap{
return (new OBitmap(_arg1[1][0](_arg1[1]), _arg1[2], _arg1[3]));
}
public static function MakeEffect(_arg1, _arg2:Number, _arg3:String, _arg4:String, _arg5:String, _arg6:Number=1, _arg7:Number=0, _arg8:Number=0):OBitmap{
var _local9:OBM;
_local9 = OEffects.Apply(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
return (new OBitmap(_local9, _arg7, _arg8));
}
}
}//package ENGINE.DISPLAY
Section 13
//OBM (ENGINE.DISPLAY.OBM)
package ENGINE.DISPLAY {
import flash.display.*;
import flash.geom.*;
import ENGINE.CORE.*;
public class OBM {
public var iX:Number;
public var iHeight:Number;
public var iBM:BitmapData;
public var iY:Number;
public var iWidth:Number;
public function OBM(_arg1:BitmapData=null, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0, _arg5:Number=0){
this.iBM = _arg1;
this.iX = _arg2;
this.iY = _arg3;
this.iWidth = _arg4;
this.iHeight = _arg5;
}
public function Clone():OBM{
var _local1:BitmapData;
_local1 = this.iBM.clone();
return (new OBM(_local1, this.iX, this.iY, this.iWidth, this.iHeight));
}
public static function MakeFill(_arg1:Array):OBM{
var _local2:Sprite;
var _local3:Sprite;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Rectangle;
var _local8:Sprite;
var _local9:int;
var _local10:int;
var _local11:Number;
var _local12:Number;
var _local13:BitmapData;
var _local14:Matrix;
_local2 = new Sprite();
_local3 = _arg1[1][0](_arg1[1]);
_local4 = (OGlobal.Scale * _arg1[2]);
_local5 = OGlobal.ToGlobal(_arg1[4]);
_local6 = OGlobal.ToGlobal(_arg1[5]);
_local3.scaleX = _local4;
_local3.scaleY = _local4;
_local3.x = (_local3.x * OGlobal.Scale);
_local3.y = (_local3.y * OGlobal.Scale);
_local3.x = (_local3.x + _local5);
_local3.y = (_local3.y + _local6);
_local2.addChild(_local3);
_local7 = _local3.getBounds(_local2);
_local2.removeChild(_local3);
_local8 = new Sprite();
_local8.graphics.beginBitmapFill(_arg1[3]);
_local8.graphics.drawRect((_local7.x - 1), (_local7.y - 1), (_local7.width + 2), (_local7.height + 2));
_local8.graphics.endFill();
_local8.mask = _local3;
_local2.addChild(_local8);
_local9 = ((_local7.width + 4) + (_arg1[6] * 2));
_local10 = ((_local7.height + 4) + (_arg1[6] * 2));
_local11 = Math.floor(_local7.x);
_local12 = Math.floor(_local7.y);
_local13 = new BitmapData(_local9, _local10, true, 0);
_local14 = new Matrix(1, 0, 0, 1, ((-(_local11) + 1) + _arg1[6]), ((-(_local12) + 1) + _arg1[6]));
_local13.draw(_local2, _local14);
return (new OBM(_local13, (((_local11 - _local5) - 1) - _arg1[6]), (((_local12 - _local6) - 1) - _arg1[6]), _local7.width, _local7.height));
}
public static function Make(_arg1:Array):OBM{
var _local2:Sprite;
var _local3:Sprite;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Rectangle;
var _local8:int;
var _local9:int;
var _local10:Number;
var _local11:Number;
var _local12:BitmapData;
var _local13:Matrix;
_local2 = new Sprite();
_local3 = _arg1[1][0](_arg1[1]);
_local4 = (OGlobal.Scale * _arg1[2]);
_local5 = OGlobal.ToGlobal(_arg1[3]);
_local6 = OGlobal.ToGlobal(_arg1[4]);
_local3.scaleX = _local4;
_local3.scaleY = _local4;
_local3.x = (_local3.x * OGlobal.Scale);
_local3.y = (_local3.y * OGlobal.Scale);
_local3.x = (_local3.x + _local5);
_local3.y = (_local3.y + _local6);
_local2.addChild(_local3);
_local7 = _local3.getBounds(_local2);
_local8 = ((_local7.width + 4) + (_arg1[5] * 2));
_local9 = ((_local7.height + 4) + (_arg1[5] * 2));
_local10 = Math.floor(_local7.x);
_local11 = Math.floor(_local7.y);
_local12 = new BitmapData(_local8, _local9, true, 0);
_local13 = new Matrix(1, 0, 0, 1, ((-(_local10) + 1) + _arg1[5]), ((-(_local11) + 1) + _arg1[5]));
_local12.draw(_local2, _local13);
return (new OBM(_local12, (((_local10 - _local5) - 1) - _arg1[5]), (((_local11 - _local6) - 1) - _arg1[5]), _local7.width, _local7.height));
}
}
}//package ENGINE.DISPLAY
Section 14
//ODisplay (ENGINE.DISPLAY.ODisplay)
package ENGINE.DISPLAY {
import flash.display.*;
import flash.geom.*;
import ENGINE.DISPLAY.EFFECTS.*;
import flash.text.*;
import ENGINE.CORE.*;
public class ODisplay {
public static function SpriteErase(_arg1:Array):Sprite{
var _local2:Sprite;
var _local3:Sprite;
var _local4:Sprite;
var _local5:Sprite;
_local2 = new Sprite();
_local3 = new Sprite();
_local3.blendMode = BlendMode.LAYER;
_local4 = _arg1[1][0](_arg1[1]);
_local5 = _arg1[2][0](_arg1[2]);
_local5.blendMode = BlendMode.ERASE;
_local3.addChild(_local4);
_local3.addChild(_local5);
_local2.addChild(_local3);
return (_local2);
}
public static function HSBToRGB(_arg1:Number, _arg2:Number, _arg3:Number):uint{
var _local4:int;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:int;
var _local11:int;
var _local12:int;
_arg1 = (_arg1 % 360);
if (_arg2 > 1){
_arg2 = 1;
};
if (_arg3 > 1){
_arg3 = 1;
};
if (_arg2 == 0){
_local4 = (_arg3 * 0xFF);
return ((((_local4 << 16) | (_local4 << 8)) | _local4));
};
if (_arg1 == 360){
_arg1 = 0;
} else {
_arg1 = (_arg1 / 60);
};
_local5 = Math.floor(_arg1);
_local6 = (_arg1 - _local5);
_local7 = (_arg3 * (1 - _arg2));
_local8 = (_arg3 * (1 - (_arg2 * _local6)));
_local9 = (_arg3 * (1 - (_arg2 * (1 - _local6))));
switch (_local5){
case 0:
_local10 = (_arg3 * 0xFF);
_local11 = (_local9 * 0xFF);
_local12 = (_local7 * 0xFF);
break;
case 1:
_local10 = (_local8 * 0xFF);
_local11 = (_arg3 * 0xFF);
_local12 = (_local7 * 0xFF);
break;
case 2:
_local10 = (_local7 * 0xFF);
_local11 = (_arg3 * 0xFF);
_local12 = (_local9 * 0xFF);
break;
case 3:
_local10 = (_local7 * 0xFF);
_local11 = (_local8 * 0xFF);
_local12 = (_arg3 * 0xFF);
break;
case 4:
_local10 = (_local9 * 0xFF);
_local11 = (_local7 * 0xFF);
_local12 = (_arg3 * 0xFF);
break;
case 5:
_local10 = (_arg3 * 0xFF);
_local11 = (_local7 * 0xFF);
_local12 = (_local8 * 0xFF);
break;
};
return ((((_local10 << 16) | (_local11 << 8)) | _local12));
}
public static function OBitmapXBorderSprite(_arg1:Array):OBitmap{
return (ODisplay.OBitmapList([null, [[null, [ODisplay.SpriteXBorder, _arg1[1], _arg1[2], _arg1[3], _arg1[4]], 1, _arg1[5], _arg1[6], _arg1[7], _arg1[8], _arg1[15], _arg1[16]], [null, [ODisplay.SpriteInRect, [ODisplay.SpriteLib, _arg1[9]], _arg1[10], _arg1[1], _arg1[2]], _arg1[9], _arg1[11], _arg1[12], _arg1[13], _arg1[14], _arg1[15], _arg1[16]]]]));
}
public static function OBitmapAngleFrameSprite(_arg1:Array):OBitmap{
return (ODisplay.OBitmapList([null, [[null, [ODisplay.SpriteAngleRect, (_arg1[1] - (_arg1[4] * 2)), (_arg1[2] - (_arg1[4] * 2)), ((_arg1[3] * (_arg1[1] - (_arg1[4] * 2))) / _arg1[1])], 1, _arg1[5], _arg1[9], _arg1[10], _arg1[11], (_arg1[18] + _arg1[4]), (_arg1[19] + _arg1[4])], [null, [ODisplay.SpriteAngleBorder, _arg1[1], _arg1[2], _arg1[3], _arg1[4]], 1, _arg1[5], _arg1[6], _arg1[7], _arg1[8], _arg1[18], _arg1[19]], [null, [ODisplay.SpriteInRect, [ODisplay.SpriteLib, _arg1[12]], _arg1[13], _arg1[1], _arg1[2]], _arg1[13], _arg1[14], _arg1[15], _arg1[16], _arg1[17], _arg1[18], _arg1[19]]]]));
}
public static function OBitmapXBorder(_arg1:Array):OBitmap{
return (OBitmapMake([null, [SpriteXBorder, _arg1[1], _arg1[2], _arg1[3], _arg1[4]], 1, _arg1[5], _arg1[6], _arg1[7], _arg1[8], _arg1[9], _arg1[10]]));
}
public static function OBitmapAngleFrameText(_arg1:Array):OBitmap{
return (ODisplay.OBitmapList([null, [[null, [ODisplay.SpriteAngleRect, (_arg1[1] - (_arg1[4] * 2)), (_arg1[2] - (_arg1[4] * 2)), ((_arg1[3] * (_arg1[1] - (_arg1[4] * 2))) / _arg1[1])], 1, _arg1[5], _arg1[9], _arg1[10], _arg1[11], (_arg1[20] + _arg1[4]), (_arg1[21] + _arg1[4])], [null, [ODisplay.SpriteAngleBorder, _arg1[1], _arg1[2], _arg1[3], _arg1[4]], 1, _arg1[5], _arg1[6], _arg1[7], _arg1[8], _arg1[20], _arg1[21]], [null, [ODisplay.SpriteTextInRect, _arg1[12], _arg1[13], _arg1[14], _arg1[15], _arg1[1], _arg1[2]], 1, _arg1[16], _arg1[17], _arg1[18], _arg1[19], _arg1[20], _arg1[21]]]]));
}
public static function OBitmapRoundFrameText(_arg1:Array):OBitmap{
if (_arg1[4]){
return (ODisplay.OBitmapList([null, [[null, [ODisplay.SpriteRoundBorder, _arg1[1], _arg1[2], _arg1[3], _arg1[4]], 1, _arg1[5], _arg1[6], _arg1[7], _arg1[8], _arg1[20], _arg1[21]], [null, [ODisplay.SpriteRoundRect, (_arg1[1] - (_arg1[4] * 2)), (_arg1[2] - (_arg1[4] * 2)), ((_arg1[3] - _arg1[4]) - 2)], 1, _arg1[5], _arg1[9], _arg1[10], _arg1[11], (_arg1[20] + _arg1[4]), (_arg1[21] + _arg1[4])], [null, [ODisplay.SpriteTextInRect, _arg1[12], _arg1[13], _arg1[14], _arg1[15], _arg1[1], _arg1[2]], 1, _arg1[16], _arg1[17], _arg1[18], _arg1[19], _arg1[20], _arg1[21]]]]));
};
return (ODisplay.OBitmapList([null, [[null, [ODisplay.SpriteRoundRect, _arg1[1], _arg1[2], _arg1[3]], 1, _arg1[5], _arg1[9], _arg1[10], _arg1[11], (_arg1[20] + _arg1[4]), (_arg1[21] + _arg1[4])], [null, [ODisplay.SpriteTextInRect, _arg1[12], _arg1[13], _arg1[14], _arg1[15], _arg1[1], _arg1[2]], 1, _arg1[16], _arg1[17], _arg1[18], _arg1[19], _arg1[20], _arg1[21]]]]));
}
public static function SpriteFillRect(_arg1:Array):Sprite{
var _local2:Sprite;
var _local3:Sprite;
var _local4:Rectangle;
var _local5:Number;
_local2 = new Sprite();
_local3 = _arg1[1][0](_arg1[1]);
_local2.addChild(_local3);
_local4 = _local3.getBounds(_local2);
_local5 = (Math.max(_arg1[2], _arg1[3]) / Math.max(_local4.width, _local4.height));
_local3.scaleX = _local5;
_local3.scaleY = _local5;
_local4 = _local3.getBounds(_local2);
_local2.removeChild(_local3);
_local3.x = (_local3.x + ((_arg1[2] - _local4.width) / 2));
_local3.y = (_local3.y + ((_arg1[3] - _local4.height) / 2));
return (_local3);
}
public static function TextRect(_arg1, _arg2:Number, _arg3:Number, _arg4:String):Rectangle{
var _local5:Sprite;
var _local6:TextField;
var _local7:TextFormat;
_local5 = ((_arg1 is Sprite)) ? (_arg1 as Sprite) : new ((_arg1 as Class));
if ((_local5.getChildAt(0) is TextField)){
_local6 = (_local5.getChildAt(0) as TextField);
_local6.autoSize = TextFieldAutoSize.LEFT;
_local6.text = _arg4;
_local7 = _local6.defaultTextFormat;
_local7.size = _arg2;
_local7.letterSpacing = _arg3;
_local6.setTextFormat(_local7);
} else {
return (null);
};
return (_local5.getBounds(_local5));
}
public static function OBitmapXBorderText(_arg1:Array):OBitmap{
return (ODisplay.OBitmapList([null, [[null, [ODisplay.SpriteXBorder, _arg1[1], _arg1[2], _arg1[3], _arg1[4]], 1, _arg1[5], _arg1[6], _arg1[7], _arg1[8], _arg1[17], _arg1[18]], [null, [ODisplay.SpriteTextInRect, _arg1[9], _arg1[10], _arg1[11], _arg1[12], _arg1[1], _arg1[2]], 1, _arg1[13], _arg1[14], _arg1[15], _arg1[16], _arg1[17], _arg1[18]]]]));
}
public static function OBitmapRoundRect(_arg1:Array):OBitmap{
return (OBitmapMake([null, [SpriteRoundRect, _arg1[1], _arg1[2], _arg1[3]], 1, _arg1[4], _arg1[5], _arg1[6], _arg1[7], _arg1[8], _arg1[9]]));
}
public static function OBitmapAngleFrame(_arg1:Array):OBitmap{
return (ODisplay.OBitmapList([null, [[null, [ODisplay.SpriteAngleBorder, _arg1[1], _arg1[2], _arg1[3], _arg1[4]], 1, _arg1[5], _arg1[6], _arg1[7], _arg1[8], _arg1[12], _arg1[13]], [null, [ODisplay.SpriteAngleRect, (_arg1[1] - (_arg1[4] * 2)), (_arg1[2] - (_arg1[4] * 2)), ((_arg1[3] * (_arg1[1] - (_arg1[4] * 2))) / _arg1[1])], 1, _arg1[5], _arg1[9], _arg1[10], _arg1[11], (_arg1[12] + _arg1[4]), (_arg1[13] + _arg1[4])]]]));
}
public static function HSBAToRGBA(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):uint{
var _local5:uint;
var _local6:uint;
_local5 = HSBToRGB(_arg1, _arg2, _arg3);
_local6 = (0xFF * _arg4);
_local6 = (_local6 << 24);
return ((_local5 + _local6));
}
public static function OBitmapTextAlign(_arg1:Array):OBitmap{
return (OBitmapMake([null, [ODisplay.SpriteTextAlign, _arg1[1], _arg1[2], _arg1[3], _arg1[4], _arg1[5], _arg1[6], _arg1[11], _arg1[12]], 1, _arg1[7], _arg1[8], _arg1[9], _arg1[10], _arg1[13], _arg1[14]]));
}
public static function OBitmapList(_arg1:Array):OBitmap{
var _local2:OBM;
var _local3:Number;
var _local4:Number;
var _local5:int;
var _local6:OBM;
var _local7:Matrix;
_local2 = OEffects.Make(_arg1[1][0]);
_local3 = (_local2.iX + (_arg1[1][0][7] * OGlobal.Scale));
_local4 = (_local2.iY + (_arg1[1][0][8] * OGlobal.Scale));
_local5 = 1;
while (_local5 < _arg1[1].length) {
_local6 = OEffects.Make(_arg1[1][_local5]);
_local7 = new Matrix(1, 0, 0, 1, (((_arg1[1][_local5][7] * OGlobal.Scale) + _local6.iX) - _local3), (((_arg1[1][_local5][8] * OGlobal.Scale) + _local6.iY) - _local4));
_local2.iBM.draw(_local6.iBM, _local7);
_local5++;
};
return (new OBitmap(_local2, _arg1[1][0][7], _arg1[1][0][8]));
}
public static function SpriteLibList(_arg1:Array):Sprite{
var _local2:Sprite;
_local2 = ((_arg1[1] is Sprite)) ? (_arg1[1] as Sprite) : new ((_arg1[1] as Class));
if (_arg1[2] >= _local2.numChildren){
return (null);
};
return ((_local2.getChildAt(_arg1[2]) as Sprite));
}
public static function SpriteXBorder(_arg1:Array):Sprite{
var _local2:Sprite;
_local2 = new Sprite();
_local2.graphics.lineStyle(_arg1[4]);
_local2.graphics.moveTo(0, _arg1[3]);
_local2.graphics.lineTo(_arg1[1], _arg1[3]);
_local2.graphics.moveTo(0, (_arg1[2] - _arg1[3]));
_local2.graphics.lineTo(_arg1[1], (_arg1[2] - _arg1[3]));
_local2.graphics.moveTo(_arg1[3], 0);
_local2.graphics.lineTo(_arg1[3], _arg1[2]);
_local2.graphics.moveTo((_arg1[1] - _arg1[3]), 0);
_local2.graphics.lineTo((_arg1[1] - _arg1[3]), _arg1[2]);
return (_local2);
}
public static function SpriteLib(_arg1:Array):Sprite{
return (((_arg1[1] is Sprite)) ? (_arg1[1] as Sprite) : new ((_arg1[1] as Class)));
}
public static function OBitmapAngleBorder(_arg1:Array):OBitmap{
return (OBitmapMake([null, [SpriteAngleBorder, _arg1[1], _arg1[2], _arg1[3], _arg1[4]], 1, _arg1[5], _arg1[6], _arg1[7], _arg1[8], _arg1[9], _arg1[10]]));
}
public static function OBitmapRoundBorder(_arg1:Array):OBitmap{
return (OBitmapMake([null, [SpriteRoundBorder, _arg1[1], _arg1[2], _arg1[3], _arg1[4]], 1, _arg1[5], _arg1[6], _arg1[7], _arg1[8], _arg1[9], _arg1[10]]));
}
public static function SpriteScale(_arg1:Array):Sprite{
var _local2:Sprite;
_local2 = _arg1[1][0](_arg1[1]);
_local2.scaleX = _arg1[2];
_local2.scaleY = _arg1[2];
return (_local2);
}
public static function IDisplayObjectMake(_arg1:Array){
var _local2:IDisplayObject;
_local2 = _arg1[1][0](_arg1[1]);
_local2.Pos(_arg1[2], _arg1[3]);
return (_local2);
}
public static function SpriteAlign(_arg1:Array):Sprite{
var _local2:Sprite;
var _local3:Sprite;
var _local4:Rectangle;
_local2 = new Sprite();
_local3 = _arg1[1][0](_arg1[1]);
_local3.scaleX = _arg1[2];
_local3.scaleY = _arg1[2];
_local2.addChild(_local3);
_local4 = _local3.getBounds(_local2);
_local2.removeChild(_local3);
switch (_arg1[3]){
case 1:
_local3.x = (_local3.x + ((_arg1[5] - _local4.width) / 2));
break;
case 2:
_local3.x = (_local3.x + (_arg1[5] - _local4.width));
break;
};
switch (_arg1[4]){
case 1:
_local3.y = (_local3.y + ((_arg1[6] - _local4.height) / 2));
break;
case 2:
_local3.y = (_local3.y + (_arg1[6] - _local4.height));
break;
};
return (_local3);
}
public static function OBitmapAngleRect(_arg1:Array):OBitmap{
return (OBitmapMake([null, [SpriteAngleRect, _arg1[1], _arg1[2], _arg1[3]], 1, _arg1[4], _arg1[5], _arg1[6], _arg1[7], _arg1[8], _arg1[9]]));
}
public static function SpriteRect(_arg1:Array):Sprite{
var _local2:Sprite;
_local2 = new Sprite();
_local2.graphics.beginFill(0);
_local2.graphics.drawRect(0, 0, _arg1[1], _arg1[2]);
return (_local2);
}
public static function OBitmapSpriteFillRect(_arg1:Array):OBitmap{
var _local2:Sprite;
_local2 = ODisplay.SpriteFillRect([null, _arg1[3], _arg1[1], _arg1[2]]);
return (OBitmapMake([null, [ODisplay.SpriteFillRect, _arg1[3], _arg1[1], _arg1[2]], _local2.scaleX, _arg1[4], _arg1[5], _arg1[6], _arg1[7], _arg1[8], _arg1[9]]));
}
public static function OBitmapText(_arg1:Array):OBitmap{
return (OBitmapMake([null, [ODisplay.SpriteText, _arg1[1], _arg1[2], _arg1[3], _arg1[4]], 1, _arg1[5], _arg1[6], _arg1[7], _arg1[8], _arg1[9], _arg1[10]]));
}
public static function OBitmapMake(_arg1:Array):OBitmap{
return (new OBitmap(OEffects.Make(_arg1), _arg1[7], _arg1[8]));
}
public static function SpriteRoundRect(_arg1:Array):Sprite{
var _local2:Sprite;
_local2 = new Sprite();
_local2.graphics.beginFill(0);
_local2.graphics.drawRoundRect(0, 0, _arg1[1], _arg1[2], _arg1[3]);
return (_local2);
}
public static function SpriteInRect(_arg1:Array):Sprite{
var _local2:Sprite;
var _local3:Sprite;
var _local4:Rectangle;
_local2 = new Sprite();
_local3 = _arg1[1][0](_arg1[1]);
_local3.scaleX = _arg1[2];
_local3.scaleY = _arg1[2];
_local2.addChild(_local3);
_local4 = _local3.getBounds(_local2);
_local2.removeChild(_local3);
_local3.x = (_local3.x + ((_arg1[3] - _local4.width) / 2));
_local3.y = (_local3.y + ((_arg1[4] - _local4.height) / 2));
return (_local3);
}
public static function SpriteScaleRotate(_arg1:Array):Sprite{
var _local2:Sprite;
var _local3:Number;
var _local4:Number;
var _local5:Matrix;
var _local6:Matrix;
var _local7:Sprite;
_local2 = _arg1[1][0](_arg1[1]);
_local3 = (_arg1[4] * _arg1[2]);
_local4 = (_arg1[5] * _arg1[2]);
_local5 = new Matrix();
_local5.scale(_arg1[2], _arg1[2]);
_local5.translate(-(_local3), -(_local4));
_local5.rotate(((Math.PI / 180) * _arg1[3]));
_local6 = new Matrix();
_local6.translate(_local3, _local4);
_local5.concat(_local6);
_local7 = new Sprite();
_local7.addChild(_local2);
_local2.transform.matrix = _local5;
return (_local7);
}
public static function OBitmapRoundFrameSprite(_arg1:Array):OBitmap{
return (ODisplay.OBitmapList([null, [[null, [ODisplay.SpriteRoundBorder, _arg1[1], _arg1[2], _arg1[3], _arg1[4]], 1, _arg1[5], _arg1[6], _arg1[7], _arg1[8], _arg1[18], _arg1[19]], [null, [ODisplay.SpriteRoundRect, (_arg1[1] - (_arg1[4] * 2)), (_arg1[2] - (_arg1[4] * 2)), ((_arg1[3] - _arg1[4]) - 2)], 1, _arg1[5], _arg1[9], _arg1[10], _arg1[11], (_arg1[18] + _arg1[4]), (_arg1[19] + _arg1[4])], [null, [ODisplay.SpriteInRect, [ODisplay.SpriteLib, _arg1[12]], _arg1[13], _arg1[1], _arg1[2]], _arg1[13], _arg1[14], _arg1[15], _arg1[16], _arg1[17], _arg1[18], _arg1[19]]]]));
}
public static function SpriteText(_arg1:Array):Sprite{
var _local2:Sprite;
var _local3:TextField;
var _local4:TextFormat;
_local2 = ((_arg1[1] is Sprite)) ? (_arg1[1] as Sprite) : new ((_arg1[1] as Class));
if ((_local2.getChildAt(0) is TextField)){
_local3 = (_local2.getChildAt(0) as TextField);
_local3.autoSize = TextFieldAutoSize.LEFT;
_local3.text = _arg1[4];
_local4 = _local3.defaultTextFormat;
_local4.size = _arg1[2];
_local4.letterSpacing = _arg1[3];
_local3.setTextFormat(_local4);
} else {
return (null);
};
return (_local2);
}
public static function SpriteTextAlign(_arg1:Array):Sprite{
return (ODisplay.SpriteAlign([null, [ODisplay.SpriteText, _arg1[1], _arg1[2], _arg1[3], _arg1[4]], 1, _arg1[5], _arg1[6], _arg1[7], _arg1[8]]));
}
public static function OBitmapTextInRect(_arg1:Array):OBitmap{
return (OBitmapMake([null, [ODisplay.SpriteTextInRect, _arg1[1], _arg1[2], _arg1[3], _arg1[4], _arg1[9], _arg1[10]], 1, _arg1[5], _arg1[6], _arg1[7], _arg1[8], _arg1[11], _arg1[12]]));
}
public static function SpriteRoundBorder(_arg1:Array):Sprite{
var _local2:Sprite;
_local2 = new Sprite();
_local2.graphics.beginFill(0);
_local2.graphics.drawRoundRect(0, 0, _arg1[1], _arg1[2], _arg1[3]);
_local2.graphics.drawRoundRect(_arg1[4], _arg1[4], (_arg1[1] - (_arg1[4] * 2)), (_arg1[2] - (_arg1[4] * 2)), (_arg1[3] - _arg1[4]));
return (_local2);
}
public static function SpriteAngleRect(_arg1:Array):Sprite{
var _local2:Sprite;
_local2 = new Sprite();
_local2.graphics.beginFill(0);
_local2.graphics.moveTo(_arg1[3], 0);
_local2.graphics.lineTo((_arg1[1] - _arg1[3]), 0);
_local2.graphics.lineTo(_arg1[1], _arg1[3]);
_local2.graphics.lineTo(_arg1[1], (_arg1[2] - _arg1[3]));
_local2.graphics.lineTo((_arg1[1] - _arg1[3]), _arg1[2]);
_local2.graphics.lineTo(_arg1[3], _arg1[2]);
_local2.graphics.lineTo(0, (_arg1[2] - _arg1[3]));
_local2.graphics.lineTo(0, _arg1[3]);
_local2.graphics.endFill();
return (_local2);
}
public static function SpriteAngleBorder(_arg1:Array):Sprite{
var _local2:Sprite;
var _local3:Number;
var _local4:Number;
var _local5:Number;
_local2 = new Sprite();
_local2.graphics.beginFill(0);
_local2.graphics.moveTo(_arg1[3], 0);
_local2.graphics.lineTo((_arg1[1] - _arg1[3]), 0);
_local2.graphics.lineTo(_arg1[1], _arg1[3]);
_local2.graphics.lineTo(_arg1[1], (_arg1[2] - _arg1[3]));
_local2.graphics.lineTo((_arg1[1] - _arg1[3]), _arg1[2]);
_local2.graphics.lineTo(_arg1[3], _arg1[2]);
_local2.graphics.lineTo(0, (_arg1[2] - _arg1[3]));
_local2.graphics.lineTo(0, _arg1[3]);
_local3 = (_arg1[1] - (_arg1[4] * 2));
_local4 = (_arg1[2] - (_arg1[4] * 2));
_local5 = ((_arg1[3] * _local3) / _arg1[1]);
_local2.graphics.moveTo((_arg1[4] + _local5), (_arg1[4] + 0));
_local2.graphics.lineTo(((_arg1[4] + _local3) - _local5), (_arg1[4] + 0));
_local2.graphics.lineTo((_arg1[4] + _local3), (_arg1[4] + _local5));
_local2.graphics.lineTo((_arg1[4] + _local3), ((_arg1[4] + _local4) - _local5));
_local2.graphics.lineTo(((_arg1[4] + _local3) - _local5), (_arg1[4] + _local4));
_local2.graphics.lineTo((_arg1[4] + _local5), (_arg1[4] + _local4));
_local2.graphics.lineTo((_arg1[4] + 0), ((_arg1[4] + _local4) - _local5));
_local2.graphics.lineTo((_arg1[4] + 0), (_arg1[4] + _local5));
return (_local2);
}
public static function SpriteTextInRect(_arg1:Array):Sprite{
return (ODisplay.SpriteInRect([null, [ODisplay.SpriteText, _arg1[1], _arg1[2], _arg1[3], _arg1[4]], 1, _arg1[5], _arg1[6]]));
}
public static function OBitmapRoundFrame(_arg1:Array):OBitmap{
return (ODisplay.OBitmapList([null, [[null, [ODisplay.SpriteRoundBorder, _arg1[1], _arg1[2], _arg1[3], _arg1[4]], 1, _arg1[5], _arg1[6], _arg1[7], _arg1[8], _arg1[12], _arg1[13]], [null, [ODisplay.SpriteRoundRect, (_arg1[1] - (_arg1[4] * 2)), (_arg1[2] - (_arg1[4] * 2)), ((_arg1[3] - _arg1[4]) - 2)], 1, _arg1[5], _arg1[9], _arg1[10], _arg1[11], (_arg1[12] + _arg1[4]), (_arg1[13] + _arg1[4])]]]));
}
}
}//package ENGINE.DISPLAY
Section 15
//OSprite (ENGINE.DISPLAY.OSprite)
package ENGINE.DISPLAY {
import flash.display.*;
import ENGINE.CORE.*;
public class OSprite extends Sprite implements IDisplayObject {
private var iY:Number;// = 0
private var iX:Number;// = 0
public function OSprite(){
iX = 0;
iY = 0;
super();
}
public function get prVisible():Boolean{
return (this.visible);
}
public function set prX(_arg1:Number):void{
this.iX = _arg1;
this.x = (_arg1 * OGlobal.Scale);
}
public function set prY(_arg1:Number):void{
this.iY = _arg1;
this.y = (_arg1 * OGlobal.Scale);
}
public function Pos(_arg1:Number, _arg2:Number):void{
this.iX = _arg1;
this.iY = _arg2;
this.x = (this.iX * OGlobal.Scale);
this.y = (this.iY * OGlobal.Scale);
}
public function set prVisible(_arg1:Boolean):void{
this.visible = _arg1;
}
public function lineStyle(_arg1:Number, _arg2:uint=0, _arg3:Number=1, _arg4:Boolean=false, _arg5:String="normal", _arg6:String=null, _arg7:String=null, _arg8:Number=3):void{
this.graphics.lineStyle((_arg1 * OGlobal.Scale), _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, (_arg8 * OGlobal.Scale));
}
public function drawCircle(_arg1:Number, _arg2:Number, _arg3:Number):void{
this.graphics.drawCircle((_arg1 * OGlobal.Scale), (_arg2 * OGlobal.Scale), (_arg3 * OGlobal.Scale));
}
public function moveTo(_arg1:Number, _arg2:Number):void{
this.graphics.moveTo((_arg1 * OGlobal.Scale), (_arg2 * OGlobal.Scale));
}
public function get prX():Number{
return (this.iX);
}
public function get prY():Number{
return (this.iY);
}
public function Free():void{
var _local1:DisplayObject;
while (this.numChildren) {
_local1 = this.getChildAt(0);
if ((_local1 is OSprite)){
(_local1 as OSprite).Free();
};
this.removeChildAt(0);
};
}
public function lineTo(_arg1:Number, _arg2:Number):void{
this.graphics.lineTo((_arg1 * OGlobal.Scale), (_arg2 * OGlobal.Scale));
}
public function get prHeight():Number{
return ((this.height / OGlobal.Scale));
}
public function get prWidth():Number{
return ((this.width / OGlobal.Scale));
}
public function Move(_arg1:Number, _arg2:Number):void{
Pos((this.iX + _arg1), (this.iY + _arg2));
}
public static function Make(_arg1:Array):OSprite{
var _local2:OSprite;
var _local3:int;
var _local4:int;
_local2 = new (OSprite);
_local3 = _arg1[1].length;
_local4 = 0;
while (_local4 < _local3) {
_local2.addChild(_arg1[1][_local4][0](_arg1[1][_local4]));
_local4++;
};
_local2.Pos(_arg1[2], _arg1[3]);
return (_local2);
}
}
}//package ENGINE.DISPLAY
Section 16
//OGame (ENGINE.GAME.OGame)
package ENGINE.GAME {
import ENGINE.CORE.*;
import flash.utils.*;
import flash.net.*;
public class OGame {
protected var iSTableSize:int;
protected var iCache:OCache;
protected var iPlayer:OPlayer;
protected var iRNDFactor:int;
protected var iModes:int;
protected var iScores:OScoresTable;
public static const catGlobal:String = "Global";
public static const catTmp:String = "Tmp";
protected static const strgMusicVolume:String = "Music Volume";
protected static const strgResX:String = "ResX";
protected static const strgResY:String = "ResY";
protected static const strgСurPlayer:String = "Current Player";
protected static const strgFullScreen:String = "Full Screen";
protected static const strgSoundVolume:String = "Sound Volume";
protected static const strgLocalScores:String = "Local Scores";
public static const catPlayers:String = "Players";
public function OGame(_arg1:int=1, _arg2:int=10, _arg3:int=10){
var _local4:String;
super();
this.iModes = _arg1;
this.iSTableSize = _arg2;
registerClassAlias("OCacheClass", OCache);
registerClassAlias("OGameParamsClass", OGameParams);
registerClassAlias("OScoreParamsClass", OScoreParams);
registerClassAlias("OScoresTableClass", OScoresTable);
registerClassAlias("OPlayerClass", OPlayer);
this.LoadCache();
_local4 = this.iCache.GetCategoryItem(catGlobal, strgСurPlayer);
if (_local4){
this.iPlayer = this.iCache.GetCategoryItem(catPlayers, _local4);
this.iScores = this.iCache.GetCategoryItem(catGlobal, strgLocalScores);
this.InitAfterLoadCache();
} else {
this.iScores = new OScoresTable(_arg1, this.iSTableSize);
this.DefaultInitLocalScores();
this.iCache.SetCategoryItem(catGlobal, strgLocalScores, this.iScores);
this.iCache.SetCategoryItem(catGlobal, strgSoundVolume, 1);
this.iCache.SetCategoryItem(catGlobal, strgMusicVolume, 1);
this.iCache.SetCategoryItem(catGlobal, strgResX, OGlobal.StageRect.width);
this.iCache.SetCategoryItem(catGlobal, strgResY, OGlobal.StageRect.height);
this.iCache.SetCategoryItem(catGlobal, strgFullScreen, false);
};
OSound.SoundVolume = this.prSoundVolume;
OSound.MusicVolume = this.prMusicVolume;
}
public function set prFullScreen(_arg1:Boolean):void{
this.iCache.SetCategoryItem(catGlobal, strgFullScreen, _arg1);
}
public function set prMode(_arg1:int):void{
this.iPlayer.iMode = _arg1;
}
public function get prGamesStartCount():int{
return (this.iPlayer.iGParams[this.iPlayer.iMode].iCGamesStart);
}
public function get prLevelScore():int{
return (this.iPlayer.iGParams[this.iPlayer.iMode].iLevelScore);
}
public function set prPassword(_arg1:String):void{
this.iPlayer.iPassword = _arg1;
}
public function DeletePlayer(_arg1:String):String{
var _local2:String;
var _local3:Array;
_local2 = (this.iPlayer) ? this.iPlayer.iName : "";
this.iCache.DeleteCategoryItem(catPlayers, _arg1);
if (_arg1 == _local2){
_local3 = this.iCache.GetCategoryNames(catPlayers);
if (!_local3){
this.iPlayer = null;
return (null);
};
this.iPlayer = this.iCache.GetCategoryItem(catPlayers, _local3[0]);
this.iCache.SetCategoryItem(catGlobal, strgСurPlayer, _local3[0]);
};
return ((this.iPlayer) ? this.iPlayer.iName : null);
}
public function get prPlayerNames():Array{
return (this.iCache.GetCategoryNames(catPlayers));
}
public function ClearPersonalScores(_arg1:int):void{
this.iPlayer.iScoreTable.Clear(_arg1);
}
public function GetPersonalRecord(_arg1:int):int{
return (this.iPlayer.iScoreTable.GetRecord(_arg1));
}
public function InitAfterLoadCache():void{
}
public function AddScore(_arg1:int):void{
this.iPlayer.iGParams[this.iPlayer.iMode].iScore = (this.iPlayer.iGParams[this.iPlayer.iMode].iScore + _arg1);
}
public function get prPlayersData(){
var _local1:OCache;
var _local2:ByteArray;
_local1 = this.iCache.GetItem(catPlayers);
_local2 = _local1.Pack();
_local2.uncompress();
_local1 = _local2.readObject();
return (_local1);
}
public function IsPersonalRecord(_arg1:int, _arg2:int):Boolean{
return (this.iPlayer.iScoreTable.IsRecord(_arg1, _arg2));
}
public function LoadCache():void{
var so:SharedObject;
var a:ByteArray;
so = SharedObject.getLocal(OGlobal.AppName);
if (so.data.iData == undefined){
this.iCache = new OCache();
} else {
try {
a = so.data.iData;
a.uncompress();
this.iCache = a.readObject();
} catch(error:Error) {
this.iCache = new OCache();
};
};
so.close();
}
public function NewGame():void{
this.iPlayer.iGParams[this.iPlayer.iMode].iLevel = 0;
this.iPlayer.iGParams[this.iPlayer.iMode].iScore = 0;
this.iPlayer.iGParams[this.iPlayer.iMode].iLevelScore = 0;
this.iPlayer.iGParams[this.iPlayer.iMode].iSavedGame = null;
this.iPlayer.iGParams[this.iPlayer.iMode].iCGamesStart++;
}
public function get prLevel():int{
return (this.iPlayer.iGParams[this.iPlayer.iMode].iLevel);
}
public function get prSoundVolume():Number{
return (this.iCache.GetCategoryItem(catGlobal, strgSoundVolume));
}
public function get prPlayerName():String{
return ((this.iPlayer) ? this.iPlayer.iName : "");
}
public function get prScore():int{
return (this.iPlayer.iGParams[this.iPlayer.iMode].iScore);
}
public function NextLevel():Boolean{
this.iPlayer.iGParams[this.iPlayer.iMode].iLevel++;
return (true);
}
public function set prPlayersData(_arg1):void{
this.iCache.SetItem(catPlayers, _arg1);
}
public function Read(_arg1:String, _arg2:String){
return (this.iCache.GetCategoryItem(_arg1, _arg2));
}
public function get prSavedGame():String{
return (this.iPlayer.iGParams[this.iPlayer.iMode].iSavedGame);
}
public function set prResX(_arg1:int):void{
this.iCache.SetCategoryItem(catGlobal, strgResX, _arg1);
}
public function get prRNDFactor():int{
return (this.iPlayer.iRNDFactor);
}
public function get prMusicVolume():Number{
return (this.iCache.GetCategoryItem(catGlobal, strgMusicVolume));
}
public function Write(_arg1:String, _arg2:String, _arg3):void{
this.iCache.SetCategoryItem(_arg1, _arg2, _arg3);
}
public function Start():void{
this.iPlayer.iGParams[this.iPlayer.iMode].iCGamesStart++;
}
public function get prPassword():String{
return ((this.iPlayer.iPassword) ? this.iPlayer.iPassword : "");
}
public function get prMode():int{
return (this.iPlayer.iMode);
}
public function End():void{
this.iPlayer.iGParams[this.iPlayer.iMode].iCGamesEnd++;
}
public function set prSoundVolume(_arg1:Number):void{
OSound.SoundVolume = _arg1;
this.iCache.SetCategoryItem(catGlobal, strgSoundVolume, _arg1);
}
public function SetLevelScore(_arg1:int):void{
this.iPlayer.iGParams[this.iPlayer.iMode].iLevelScore = _arg1;
}
public function GetLocalScores(_arg1:int, _arg2:int):OScoreParams{
return (this.iScores.GetScore(_arg1, _arg2));
}
public function GetPersonalScores(_arg1:int, _arg2:int):OScoreParams{
return (this.iPlayer.iScoreTable.GetScore(_arg1, _arg2));
}
public function AddScoreInTable(_arg1:int):Boolean{
var _local2:Boolean;
_local2 = false;
if (this.iScores.AddScore(this.prPlayerName, _arg1, this.prMode, this.prLevel)){
this.iCache.SetCategoryItem(OGame.catGlobal, OGame.strgLocalScores, this.iScores);
_local2 = true;
};
if (this.iPlayer.iScoreTable.AddScore(this.prPlayerName, _arg1, this.prMode, this.prLevel, true)){
this.iCache.SetCategoryItem(OGame.catPlayers, this.prPlayerName, this.iPlayer);
_local2 = true;
};
return (_local2);
}
public function get prResX():int{
return (this.iCache.GetCategoryItem(catGlobal, strgResX));
}
public function get prResY():int{
return (this.iCache.GetCategoryItem(catGlobal, strgResY));
}
public function set prPlayerName(_arg1:String):void{
var _local2:OPlayer;
_local2 = this.iCache.GetCategoryItem(catPlayers, _arg1);
if (!_local2){
_local2 = new OPlayer(_arg1, "", this.iModes, this.iSTableSize);
this.iCache.SetCategoryItem(catPlayers, _arg1, _local2);
};
this.iPlayer = _local2;
this.iCache.SetCategoryItem(catGlobal, strgСurPlayer, _arg1);
}
public function DefaultInitLocalScores():void{
this.iScores.Clear(0);
this.iScores.AddScore("Emily", (int(((Math.random() * 100) + 50)) * 50), 0, int(((Math.random() * 5) + 3)));
this.iScores.AddScore("Michael", (int(((Math.random() * 100) + 50)) * 50), 0, int(((Math.random() * 5) + 3)));
this.iScores.AddScore("Jacob", (int(((Math.random() * 100) + 50)) * 50), 0, int(((Math.random() * 5) + 3)));
this.iScores.AddScore("Isabella", (int(((Math.random() * 100) + 50)) * 50), 0, int(((Math.random() * 5) + 3)));
this.iScores.AddScore("Madison", (int(((Math.random() * 100) + 50)) * 50), 0, int(((Math.random() * 5) + 3)));
this.iScores.SortOn(0);
}
public function SaveCache():Boolean{
var _local1:SharedObject;
var _local2:String;
_local1 = SharedObject.getLocal(OGlobal.AppName);
_local1.data.iData = this.iCache.Pack();
_local2 = _local1.flush();
_local1.close();
return ((_local2 == SharedObjectFlushStatus.FLUSHED));
}
public function set prResY(_arg1:int):void{
this.iCache.SetCategoryItem(catGlobal, strgResY, _arg1);
}
public function SetSaveGame(_arg1:String):void{
this.iPlayer.iGParams[this.iPlayer.iMode].iSavedGame = _arg1;
}
public function get prGamesEndCount():int{
return (this.iPlayer.iGParams[this.iPlayer.iMode].iCGamesEnd);
}
public function set prMusicVolume(_arg1:Number):void{
OSound.MusicVolume = _arg1;
this.iCache.SetCategoryItem(catGlobal, strgMusicVolume, _arg1);
}
public function get prFullScreen():Boolean{
return (this.iCache.GetCategoryItem(catGlobal, strgFullScreen));
}
public function ClearLocalScores(_arg1:int):void{
this.iScores.Clear(_arg1);
}
}
}//package ENGINE.GAME
Section 17
//OGameParams (ENGINE.GAME.OGameParams)
package ENGINE.GAME {
public class OGameParams {
public var iLevel:int;
public var iScore:int;
public var iSavedGame:String;
public var iCGamesEnd:int;
public var iLevelScore:int;
public var iCGamesStart:int;
}
}//package ENGINE.GAME
Section 18
//OPlayer (ENGINE.GAME.OPlayer)
package ENGINE.GAME {
public class OPlayer {
public var iPassword:String;
public var iScoreTable:OScoresTable;
public var iGParams:Array;
public var iMode:int;
public var iRNDFactor:int;
public var iName:String;
public function OPlayer(_arg1:String=null, _arg2:String=null, _arg3:int=1, _arg4:int=10, _arg5:int=10){
var _local6:int;
super();
this.iName = _arg1;
this.iPassword = _arg2;
this.iGParams = new Array(_arg3);
this.iRNDFactor = Math.round((Math.random() * (_arg5 - 1)));
_local6 = 0;
while (_local6 < _arg3) {
this.iGParams[_local6] = new OGameParams();
_local6++;
};
this.iScoreTable = new OScoresTable(_arg3, _arg4);
}
}
}//package ENGINE.GAME
Section 19
//OScoreParams (ENGINE.GAME.OScoreParams)
package ENGINE.GAME {
public class OScoreParams {
public var iScore:int;
public var iName:String;
public var iLevel:int;
public var iTime:Number;
public function OScoreParams(_arg1:String=null, _arg2:int=0, _arg3:int=0){
var _local4:Date;
super();
this.iName = _arg1;
this.iScore = _arg2;
_local4 = new Date();
this.iTime = _local4.time;
}
}
}//package ENGINE.GAME
Section 20
//OScoresTable (ENGINE.GAME.OScoresTable)
package ENGINE.GAME {
public class OScoresTable {
public var iTable:Array;
public var iMaxElements:int;
public function OScoresTable(_arg1:int=1, _arg2:int=10){
var _local3:int;
super();
this.iMaxElements = _arg2;
this.iTable = new Array();
_local3 = 0;
while (_local3 < _arg1) {
this.iTable[_local3] = new Array();
_local3++;
};
}
public function FindByName(_arg1:int, _arg2:String):int{
var _local3:int;
_local3 = 0;
while (_local3 < this.iTable[_arg1].length) {
if (this.iTable[_arg1][_local3].iName == _arg2){
return (_local3);
};
_local3++;
};
return (-1);
}
public function Clear(_arg1:int):void{
this.iTable[_arg1] = new Array();
}
public function GetRecord(_arg1:int):int{
if (!this.iTable[_arg1].length){
return (0);
};
return (this.iTable[_arg1][0].iScore);
}
public function AddScore(_arg1:String, _arg2:int, _arg3:int, _arg4:int, _arg5:Boolean=false):Boolean{
var _local6:Array;
var _local7:int;
_local6 = this.iTable[_arg3];
if ((((_local6.length < this.iMaxElements)) || ((_local6[(_local6.length - 1)].iScore < _arg2)))){
_local7 = (_arg5) ? -1 : this.FindByName(_arg3, _arg1);
if (_local7 >= 0){
if (_arg2 < _local6[_local7].iScore){
return (false);
};
_local6[_local7] = new OScoreParams(_arg1, _arg2, _arg4);
this.SortOn(_arg3);
return (true);
};
if (_local6.length < this.iMaxElements){
_local6[_local6.length] = new OScoreParams(_arg1, _arg2, _arg4);
this.SortOn(_arg3);
return (true);
};
if (_local6[(_local6.length - 1)].iScore > _arg2){
return (false);
};
_local6[(_local6.length - 1)] = new OScoreParams(_arg1, _arg2, _arg4);
this.SortOn(_arg3);
return (true);
};
return (false);
}
public function IsRecord(_arg1:int, _arg2:int):Boolean{
if (!this.iTable[_arg1].length){
return (true);
};
return ((_arg2 >= this.iTable[_arg1][0].iScore));
}
public function GetScore(_arg1:int, _arg2:int):OScoreParams{
return (this.iTable[_arg1][_arg2]);
}
public function SortOn(_arg1:int):void{
this.iTable[_arg1] = this.iTable[_arg1].sortOn("iScore", (Array.DESCENDING | Array.NUMERIC));
}
}
}//package ENGINE.GAME
Section 21
//OA_Alpha (ENGINE.INTERFACE.ANIMATORS.OA_Alpha)
package ENGINE.INTERFACE.ANIMATORS {
import ENGINE.INTERFACE.*;
public class OA_Alpha extends OAnimator {
public var iEAlpha:Number;
private var iDAlpha:Number;
public var iSAlpha:Number;
private var iEndAlpha:Number;
public var iPIter:int;
public function OA_Alpha(_arg1:Object, _arg2:OIObject=null){
super(_arg1, _arg2);
}
override protected function Start():int{
var _local1:Number;
_local1 = ((this.iSAlpha)>=0) ? this.iSAlpha : this.iTarget.alpha;
this.iEndAlpha = ((this.iEAlpha)>=0) ? this.iEAlpha : this.iTarget.alpha;
this.iDAlpha = ((this.iEndAlpha - _local1) / iPIter);
this.iTarget.visible = true;
this.iTarget.alpha = _local1;
return (((Math.abs(this.iDAlpha) > 0.001)) ? stPlay : stEnd);
}
override public function Play():void{
var _local1:Number;
_local1 = (this.iTarget.alpha + this.iDAlpha);
if ((((((this.iDAlpha > 0)) && ((_local1 >= this.iEndAlpha)))) || ((((this.iDAlpha <= 0)) && ((_local1 <= this.iEndAlpha)))))){
this.iTarget.alpha = this.iEndAlpha;
if (this.iTarget.alpha == 0){
this.iTarget.visible = false;
};
this.State = OAnimator.stEnd;
} else {
this.iTarget.alpha = _local1;
};
}
public static function Make(_arg1:Object, _arg2:OIObject=null):OA_Alpha{
return (new OA_Alpha(_arg1, _arg2));
}
}
}//package ENGINE.INTERFACE.ANIMATORS
Section 22
//OA_AlphaFade (ENGINE.INTERFACE.ANIMATORS.OA_AlphaFade)
package ENGINE.INTERFACE.ANIMATORS {
import flash.display.*;
import ENGINE.INTERFACE.*;
public class OA_AlphaFade extends OAnimator {
public var iEAlpha:Number;
public var iEInd:Array;
private var iEndAlpha:Array;
private var iCurAlpha:Number;
private var iDAlpha:Array;
private var iStartAlpha:Array;
public var iSInd:Array;
public var iSAlpha:Number;
public var iPIter:int;
public function OA_AlphaFade(_arg1:Object, _arg2:OIObject=null){
super(_arg1, _arg2);
}
override protected function Start():int{
var _local1:int;
var _local2:int;
var _local3:DisplayObject;
var _local4:DisplayObject;
if ((((this.iSInd == null)) && ((this.iEInd == null)))){
return (OAnimator.stEnd);
};
if (this.iSInd.length != this.iEInd.length){
return (OAnimator.stEnd);
};
_local1 = this.iSInd.length;
this.iStartAlpha = new Array(_local1);
this.iEndAlpha = new Array(_local1);
this.iDAlpha = new Array(_local1);
_local2 = 0;
while (_local2 < _local1) {
_local3 = this.iTarget.getChildAt(this.iSInd[_local2]);
_local4 = this.iTarget.getChildAt(this.iEInd[_local2]);
this.iStartAlpha[_local2] = ((this.iSAlpha)>=0) ? this.iSAlpha : _local3.alpha;
this.iEndAlpha[_local2] = ((this.iEAlpha)>=0) ? this.iEAlpha : _local4.alpha;
this.iDAlpha[_local2] = ((this.iEndAlpha[_local2] - this.iStartAlpha[_local2]) / iPIter);
_local3.alpha = this.iStartAlpha[_local2];
_local3.visible = true;
_local4.alpha = this.iEndAlpha[_local2];
_local4.visible = true;
_local2++;
};
this.iCurAlpha = this.iStartAlpha[0];
return (OAnimator.stPlay);
}
override public function Play():void{
var _local1:DisplayObject;
var _local2:DisplayObject;
var _local3:int;
var _local4:int;
this.iCurAlpha = (this.iCurAlpha + this.iDAlpha[0]);
_local3 = this.iSInd.length;
if ((((((this.iDAlpha[0] > 0)) && ((this.iCurAlpha >= this.iEndAlpha[0])))) || ((((this.iDAlpha[0] <= 0)) && ((this.iCurAlpha <= this.iEndAlpha[0])))))){
_local4 = 0;
while (_local4 < _local3) {
_local1 = this.iTarget.getChildAt(this.iSInd[_local4]);
_local2 = this.iTarget.getChildAt(this.iEInd[_local4]);
_local1.alpha = this.iEndAlpha[_local4];
if (_local1.alpha == 0){
_local1.visible = false;
};
_local2.alpha = this.iStartAlpha[_local4];
if (_local2.alpha == 0){
_local2.visible = false;
};
_local4++;
};
this.State = OAnimator.stEnd;
} else {
_local4 = 0;
while (_local4 < _local3) {
_local1 = this.iTarget.getChildAt(this.iSInd[_local4]);
_local2 = this.iTarget.getChildAt(this.iEInd[_local4]);
_local1.alpha = (_local1.alpha + this.iDAlpha[_local4]);
_local2.alpha = (_local2.alpha - this.iDAlpha[_local4]);
_local4++;
};
};
}
public static function Make(_arg1:Object, _arg2:OIObject=null):OA_AlphaFade{
return (new OA_AlphaFade(_arg1, _arg2));
}
}
}//package ENGINE.INTERFACE.ANIMATORS
Section 23
//OA_AlphaInd (ENGINE.INTERFACE.ANIMATORS.OA_AlphaInd)
package ENGINE.INTERFACE.ANIMATORS {
import flash.display.*;
import ENGINE.INTERFACE.*;
public class OA_AlphaInd extends OAnimator {
public var iEAlpha:Number;
private var iCurAlpha:Number;
private var iEndAlpha:Array;
private var iDAlpha:Array;
public var iInd:Array;
public var iSAlpha:Number;
public var iPIter:int;
public function OA_AlphaInd(_arg1:Object, _arg2:OIObject=null){
super(_arg1, _arg2);
}
override protected function Start():int{
var _local1:int;
var _local2:int;
var _local3:DisplayObject;
var _local4:Number;
if (((!(this.iInd)) || ((this.iInd.length == 0)))){
return (stEnd);
};
_local1 = this.iInd.length;
this.iEndAlpha = new Array(_local1);
this.iDAlpha = new Array(_local1);
_local2 = 0;
while (_local2 < _local1) {
_local3 = this.iTarget.getChildAt(this.iInd[_local2]);
_local4 = ((this.iSAlpha)>=0) ? this.iSAlpha : _local3.alpha;
this.iEndAlpha[_local2] = ((this.iEAlpha)>=0) ? this.iEAlpha : _local3.alpha;
this.iDAlpha[_local2] = ((this.iEndAlpha[_local2] - _local4) / iPIter);
_local3.visible = true;
_local3.alpha = _local4;
_local2++;
};
this.iCurAlpha = this.iTarget.getChildAt(this.iInd[0]).alpha;
return (((Math.abs(this.iDAlpha[0]) > 0.001)) ? stPlay : stEnd);
}
override public function Play():void{
var _local1:int;
var _local2:int;
var _local3:DisplayObject;
this.iCurAlpha = (this.iCurAlpha + this.iDAlpha[0]);
_local1 = this.iInd.length;
if ((((((this.iDAlpha[0] > 0)) && ((this.iCurAlpha >= this.iEndAlpha[0])))) || ((((this.iDAlpha[0] <= 0)) && ((this.iCurAlpha <= this.iEndAlpha[0])))))){
_local2 = 0;
while (_local2 < _local1) {
_local3 = this.iTarget.getChildAt(this.iInd[_local2]);
_local3.alpha = this.iEndAlpha[_local2];
_local3.visible = (_local3.alpha > 0);
_local2++;
};
this.State = stEnd;
} else {
_local2 = 0;
while (_local2 < _local1) {
_local3 = this.iTarget.getChildAt(this.iInd[_local2]);
_local3.alpha = (_local3.alpha + this.iDAlpha[_local2]);
_local2++;
};
};
}
public static function Make(_arg1:Object, _arg2:OIObject=null):OA_AlphaInd{
return (new OA_AlphaInd(_arg1, _arg2));
}
}
}//package ENGINE.INTERFACE.ANIMATORS
Section 24
//OA_Scale (ENGINE.INTERFACE.ANIMATORS.OA_Scale)
package ENGINE.INTERFACE.ANIMATORS {
import ENGINE.INTERFACE.*;
public class OA_Scale extends OAnimator {
public var iSScale:Number;
private var iEndScale:Number;
public var iEScale:Number;
private var iDScale:Number;
public var iPIter:int;
public function OA_Scale(_arg1:Object, _arg2:OIObject=null){
super(_arg1, _arg2);
}
override protected function Start():int{
var _local1:Number;
var _local2:Number;
var _local3:Number;
_local1 = ((this.iSScale)>=0) ? this.iSScale : this.iTarget.scaleX;
this.iEndScale = ((this.iEScale)>=0) ? this.iEScale : this.iTarget.scaleX;
this.iDScale = ((this.iEndScale - _local1) / iPIter);
_local2 = this.iTarget.prWidth;
_local3 = this.iTarget.prHeight;
this.iTarget.scaleX = _local1;
this.iTarget.scaleY = _local1;
this.iTarget.Move(((_local2 - this.iTarget.prWidth) / 2), ((_local3 - this.iTarget.prHeight) / 2));
return (((Math.abs(this.iDScale) > 1E-5)) ? stPlay : stEnd);
}
override public function Play():void{
var _local1:Number;
var _local2:Number;
var _local3:Number;
_local1 = this.iTarget.prWidth;
_local2 = this.iTarget.prHeight;
_local3 = (this.iTarget.scaleX + this.iDScale);
if ((((((this.iDScale > 0)) && ((_local3 >= this.iEndScale)))) || ((((this.iDScale <= 0)) && ((_local3 <= this.iEndScale)))))){
this.iTarget.scaleX = this.iEndScale;
this.iTarget.scaleY = this.iEndScale;
this.State = OAnimator.stEnd;
} else {
this.iTarget.scaleX = (this.iTarget.scaleX + this.iDScale);
this.iTarget.scaleY = (this.iTarget.scaleY + this.iDScale);
};
this.iTarget.Move(((_local1 - this.iTarget.prWidth) / 2), ((_local2 - this.iTarget.prHeight) / 2));
}
public static function Make(_arg1:Object, _arg2:OIObject=null):OA_Scale{
return (new OA_Scale(_arg1, _arg2));
}
}
}//package ENGINE.INTERFACE.ANIMATORS
Section 25
//OAnimator (ENGINE.INTERFACE.ANIMATORS.OAnimator)
package ENGINE.INTERFACE.ANIMATORS {
import ENGINE.INTERFACE.*;
public class OAnimator {
private var iState:int;
protected var iTarget:OIObject;
public static const stStart:int = 1;
public static const stEnd:int = 3;
public static const stPause:int = 0;
public static const stReturn:int = 4;
public static const stPlay:int = 2;
public function OAnimator(_arg1:Object, _arg2:OIObject=null){
var _local3:String;
super();
for (_local3 in _arg1) {
if (this.hasOwnProperty(_local3)){
this[_local3] = _arg1[_local3];
};
};
this.iTarget = _arg2;
this.State = stPause;
}
public function set State(_arg1:int):void{
this.iState = _arg1;
switch (this.iState){
case stStart:
this.State = this.Start();
break;
case stReturn:
this.State = Return();
break;
};
}
public function Play():void{
this.State = stEnd;
}
public function set prTarget(_arg1:OIObject):void{
this.iTarget = _arg1;
}
protected function Start():int{
return (stPlay);
}
public function get State():int{
return (this.iState);
}
public function Return():int{
return (stPlay);
}
public function OnEnterFrame():void{
if (this.iState == stPlay){
Play();
};
}
}
}//package ENGINE.INTERFACE.ANIMATORS
Section 26
//OAnimatorManager (ENGINE.INTERFACE.ANIMATORS.OAnimatorManager)
package ENGINE.INTERFACE.ANIMATORS {
import ENGINE.INTERFACE.*;
public class OAnimatorManager {
private var iPlaying:Array;
private var iTarget:OIObject;
public static const anActivate:int = 2;
public static const anDeactivate:int = 3;
public static const anShow:int = 0;
public static const iAnimatorsCount:int = 10;
public static const anHide:int = 1;
public static const anPress:int = 8;
public static const anRoolOver:int = 6;
public static const anUnpress:int = 9;
public static const anFocusOut:int = 5;
public static const anRoolOut:int = 7;
public static const anUncheck:int = 10;
public static const anCheck:int = 9;
public static const anFocusIn:int = 4;
public static const iNullAnimators:Array = [null, null, null, null, null, null, null, null, null, null];
public function OAnimatorManager(_arg1:OIObject){
this.iTarget = _arg1;
this.iPlaying = new Array();
}
public function get prAnimation():Boolean{
return ((iPlaying.length > 0));
}
public function AddAnimator(_arg1:Object):void{
var _local2:*;
if (_arg1 == null){
return;
};
if (this.iPlaying.length > 0){
this.iPlaying[0].Return();
};
_local2 = _arg1.F(_arg1);
_local2.prTarget = this.iTarget;
this.iPlaying.push(_local2);
}
public function OnEnterFrame():void{
if (this.iPlaying.length == 0){
return;
};
switch (this.iPlaying[0].State){
case OAnimator.stEnd:
this.iPlaying[0] = null;
this.iPlaying.splice(0, 1);
break;
case OAnimator.stPause:
this.iPlaying[0].State = OAnimator.stStart;
break;
case OAnimator.stPlay:
this.iPlaying[0].Play();
break;
};
}
public function Free():void{
this.iTarget = null;
this.iPlaying = null;
}
}
}//package ENGINE.INTERFACE.ANIMATORS
Section 27
//OHtmlTextField (ENGINE.INTERFACE.ELEMENTS.OHtmlTextField)
package ENGINE.INTERFACE.ELEMENTS {
import ENGINE.DISPLAY.*;
import flash.display.*;
import flash.text.*;
import ENGINE.CORE.*;
public class OHtmlTextField extends TextField {
private var iTextFormat:TextFormat;
public function OHtmlTextField(_arg1:Number, _arg2:Number, _arg3, _arg4:Number, _arg5:Number, _arg6:Boolean, _arg7:Array, _arg8:String, _arg9:Number, _arg10:Number, _arg11:Boolean=true){
var _local12:Number;
var _local13:Sprite;
super();
_local12 = (_arg11) ? OGlobal.Scale : 1;
this.type = TextFieldType.DYNAMIC;
this.autoSize = TextFieldAutoSize.NONE;
this.multiline = true;
this.wordWrap = true;
this.selectable = false;
if (_arg3){
_local13 = ((_arg3 is Sprite)) ? (_arg3 as Sprite) : new ((_arg3 as Class));
if ((_local13.getChildAt(0) is TextField)){
this.iTextFormat = (_local13.getChildAt(0) as TextField).getTextFormat();
} else {
this.iTextFormat = this.defaultTextFormat;
};
} else {
this.iTextFormat = this.defaultTextFormat;
};
this.iTextFormat.size = (_arg4 * _local12);
this.iTextFormat.letterSpacing = (_arg5 * _local12);
this.iTextFormat.color = ODisplay.HSBToRGB(_arg7[0], _arg7[1], _arg7[2]);
this.iTextFormat.align = TextFormatAlign.LEFT;
this.defaultTextFormat = this.iTextFormat;
this.prText = _arg8;
this.width = (_arg1 * _local12);
this.height = (_arg2 * _local12);
this.x = (_arg9 * _local12);
this.y = (_arg10 * _local12);
this.border = _arg6;
}
public function set prText(_arg1:String):void{
this.htmlText = _arg1;
}
public function set prFormat(_arg1:TextFormat):void{
this.iTextFormat = _arg1;
this.defaultTextFormat = _arg1;
this.setTextFormat(this.iTextFormat);
}
public function get prText():String{
return (this.htmlText);
}
public function get prFormat():TextFormat{
return (this.iTextFormat);
}
}
}//package ENGINE.INTERFACE.ELEMENTS
Section 28
//OInputTextField (ENGINE.INTERFACE.ELEMENTS.OInputTextField)
package ENGINE.INTERFACE.ELEMENTS {
import ENGINE.DISPLAY.*;
import flash.events.*;
import flash.display.*;
import flash.text.*;
import ENGINE.CORE.*;
public class OInputTextField extends TextField {
private var iTextFormat:TextFormat;
public function OInputTextField(_arg1:Number, _arg2:Number, _arg3, _arg4:Number, _arg5:Number, _arg6:Boolean, _arg7:Array, _arg8:String, _arg9:int, _arg10:Number, _arg11:Number){
var _local12:Number;
var _local13:Sprite;
super();
_local12 = OGlobal.Scale;
this.type = TextFieldType.INPUT;
this.autoSize = TextFieldAutoSize.NONE;
this.embedFonts = true;
_local13 = ((_arg3 is Sprite)) ? (_arg3 as Sprite) : new ((_arg3 as Class));
if ((_local13.getChildAt(0) is TextField)){
this.iTextFormat = (_local13.getChildAt(0) as TextField).getTextFormat();
} else {
this.iTextFormat = this.defaultTextFormat;
};
this.iTextFormat.size = (_arg4 * _local12);
this.iTextFormat.letterSpacing = (_arg5 * _local12);
this.iTextFormat.color = ODisplay.HSBToRGB(_arg7[0], _arg7[1], _arg7[2]);
this.defaultTextFormat = this.iTextFormat;
this.prText = _arg8;
this.width = (_arg1 * _local12);
this.height = (_arg2 * _local12);
this.x = (_arg10 * _local12);
this.y = (_arg11 * _local12);
this.border = _arg6;
this.maxChars = _arg9;
this.restrict = "A-Za-z0-9 @._\\-";
this.addEventListener(FocusEvent.KEY_FOCUS_CHANGE, OnFocusIn);
}
public function set prText(_arg1:String):void{
this.text = (((!(_arg1)) || ((_arg1 == "")))) ? " " : _arg1;
}
protected function OnFocusIn(_arg1:FocusEvent):void{
this.setTextFormat(this.iTextFormat);
}
public function set prFormat(_arg1:TextFormat):void{
this.iTextFormat = _arg1;
this.defaultTextFormat = _arg1;
this.setTextFormat(this.iTextFormat);
}
public function get prText():String{
var _local1:String;
_local1 = this.text;
while (_local1.charAt() == " ") {
_local1 = _local1.substr(1);
};
while (_local1.charAt((_local1.length - 1)) == " ") {
_local1 = _local1.substr(0, (_local1.length - 1));
};
return (_local1);
}
public function get prFormat():TextFormat{
return (this.iTextFormat);
}
}
}//package ENGINE.INTERFACE.ELEMENTS
Section 29
//OListBoxElement (ENGINE.INTERFACE.ELEMENTS.OListBoxElement)
package ENGINE.INTERFACE.ELEMENTS {
import flash.events.*;
import ENGINE.INTERFACE.*;
import ENGINE.INTERFACE.ANIMATORS.*;
public class OListBoxElement extends OButton {
public static const iDefAnimators:Array = [{F:OA_Alpha.Make, iSAlpha:0, iEAlpha:1, iPIter:3}, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:0, iPIter:3}, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:1, iPIter:3}, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:0.2, iPIter:3}, null, null, {F:OA_AlphaInd.Make, iSAlpha:-1, iEAlpha:0.6, iInd:[1], iPIter:3}, {F:OA_AlphaInd.Make, iSAlpha:-1, iEAlpha:1, iInd:[1], iPIter:3}, {F:OA_AlphaInd.Make, iSAlpha:0, iEAlpha:1, iInd:[0], iPIter:9}, {F:OA_AlphaInd.Make, iSAlpha:-1, iEAlpha:0, iInd:[0], iPIter:9}];
public function OListBoxElement(_arg1:Array, _arg2:Array=null){
var _local3:Array;
_local3 = (_arg2) ? _arg2 : iDefAnimators;
super(_arg1, _local3);
}
override public function OnMouseUp(_arg1:MouseEvent):void{
}
override public function OnRollOut(_arg1:MouseEvent):void{
this.prRool = false;
}
override public function OnMouseDown(_arg1:MouseEvent):void{
if (((this.prPress) && ((this.parent is OIObject)))){
(this.parent as OIObject).OnPress(_arg1, this);
return;
};
super.OnMouseDown(_arg1);
}
}
}//package ENGINE.INTERFACE.ELEMENTS
Section 30
//OAlert (ENGINE.INTERFACE.OAlert)
package ENGINE.INTERFACE {
import flash.events.*;
public class OAlert extends ODialog {
protected var iMessages:Array;
public var iButtons:Array;
public function OAlert(_arg1:Array, _arg2:Array, _arg3:Array=null){
var _local4:Array;
this.iMessages = _arg2;
_local4 = (_arg3) ? _arg3 : ODialog.iDefAnimators;
super(_arg1, _local4);
}
override public function Init():void{
this.iButtons = new Array();
super.Init();
}
override public function OnPress(_arg1:Event, _arg2):void{
var _local3:int;
var _local4:int;
if (((!(this.iMessages)) || (!(this.iButtons)))){
this.prVisible = false;
return;
};
_local3 = 0;
_local4 = 0;
while (_local4 < this.iButtons.length) {
if ((((_arg2 == this.iButtons[_local4])) && ((_local4 < this.iMessages.length)))){
if ((this.parent is OIObject)){
(this.parent as OIObject).OnPress(null, iMessages[_local4]);
};
this.prVisible = false;
return;
};
_local4++;
};
}
override public function Free():void{
this.iButtons = null;
super.Free();
}
}
}//package ENGINE.INTERFACE
Section 31
//OApplication (ENGINE.INTERFACE.OApplication)
package ENGINE.INTERFACE {
import flash.events.*;
import flash.display.*;
import ENGINE.CORE.*;
import flash.external.*;
public class OApplication extends OWindow {
private var iStaged:Boolean;// = false
protected var iBackground:OBackground;
protected var iMenuItem:Array;
public function OApplication(_arg1:String){
iStaged = false;
OGlobal.AppName = _arg1;
if (this.stage){
OGlobal.SetDomain();
this.InitStage();
};
super(null);
if (!this.iStaged){
this.addEventListener(Event.ENTER_FRAME, NotStagedEnterFrame);
};
}
private function NotStagedEnterFrame(_arg1:Event):void{
if (!iStaged){
if (!this.stage){
return;
};
OGlobal.SetDomain();
this.InitStage();
this.Init();
this.removeEventListener(Event.ENTER_FRAME, NotStagedEnterFrame);
this.iStaged = true;
};
}
override public function Init():void{
if (!this.stage){
return;
};
super.Init();
this.iMenuItem = new Array();
this.iStaged = true;
this.visible = true;
}
protected function OnMenuItem():void{
}
public function get prMenuItem():int{
return ((this.iMenuItem.length) ? this.iMenuItem.pop() : -1);
}
public function set prMenuItem(_arg1:int):void{
this.iMenuItem.push(_arg1);
}
public function OnResize(_arg1:Event):void{
this.Free();
this.InitStage();
this.Init();
}
override public function Free():void{
OGlobal.prStage.removeEventListener(Event.DEACTIVATE, OnDeactivate);
OGlobal.prStage.removeEventListener(Event.RESIZE, OnResize);
this.iMenuItem = null;
super.Free();
}
public function InitBackground(_arg1:Array, _arg2:int=0):void{
this.iBackground = new OBackground(_arg1, _arg2);
this.addChildAt(this.iBackground, 0);
}
protected function OnDeactivate(_arg1:Event):void{
}
public function InitStage(_arg1:Stage=null):void{
var s:String;
var b:int;
var aStage = _arg1;
if (((aStage) || (this.stage))){
OGlobal.prStage = (aStage) ? aStage : this.stage;
};
if (!OGlobal.prStage){
return;
};
OGlobal.prStage.scaleMode = StageScaleMode.NO_SCALE;
OGlobal.prStage.align = StageAlign.TOP_LEFT;
OGlobal.prStage.quality = StageQuality.BEST;
OGlobal.prStage.stageFocusRect = false;
OGlobal.Rescale(this);
OGlobal.FPS = 60;
if (ExternalInterface.available){
s = ("function getInternetExplorerVersion() { var rv = -1; if (navigator.appName == \"Microsoft Internet Explorer\") { var ua = navigator.userAgent;" + "var re = new RegExp(\"MSIE ([0-9]{1,}[.0-9]{0,})\"); if (re.exec(ua) != null) rv = parseFloat( RegExp.$1 ); } return rv; }");
b = 0;
try {
b = ExternalInterface.call(s);
} catch(e:Error) {
OGlobal.prStage.frameRate = OGlobal.FPS;
};
if (b > 0){
OGlobal.FPS = (OGlobal.FPS * 2);
};
};
OGlobal.prStage.frameRate = OGlobal.FPS;
OGlobal.prStage.addEventListener(Event.RESIZE, OnResize);
OGlobal.prStage.addEventListener(Event.DEACTIVATE, OnDeactivate);
}
}
}//package ENGINE.INTERFACE
Section 32
//OBackground (ENGINE.INTERFACE.OBackground)
package ENGINE.INTERFACE {
import ENGINE.DISPLAY.*;
import flash.display.*;
import flash.geom.*;
import ENGINE.CORE.*;
public class OBackground extends OSprite {
protected var iImages:Array;
protected var iIInd:int;// = 0
public function OBackground(_arg1:Array, _arg2:int=0){
iIInd = 0;
super();
this.iImages = _arg1;
this.prIInd = _arg2;
}
public function Make():void{
var _local1:Sprite;
var _local2:BitmapData;
var _local3:OBM;
var _local4:Rectangle;
var _local5:Rectangle;
var _local6:int;
var _local7:int;
var _local8:Number;
var _local9:int;
var _local10:Bitmap;
var _local11:int;
var _local12:OBitmap;
if (this.iImages == null){
return;
};
this.Free();
if ((this.iImages[this.iIInd] is Class)){
_local1 = new (this.iImages[this.iIInd]);
_local2 = new BitmapData(_local1.width, _local1.height, false, 4294967295);
_local2.draw(_local1);
};
if ((this.iImages[this.iIInd] is BitmapData)){
_local2 = this.iImages[this.iIInd];
_local1 = new Sprite();
_local10 = new Bitmap(_local2);
_local1.addChild(_local10);
};
_local3 = new OBM(_local2, 0, 0, _local1.width, _local1.height);
_local4 = OGlobal.ViewporRect;
_local5 = OGlobal.StageRect;
this.x = -(_local4.x);
this.y = -(_local4.y);
_local6 = Math.floor((_local5.width / _local1.width));
if (_local6 == 0){
return;
};
_local7 = Math.floor((_local5.height / _local1.height));
if (_local7 == 0){
return;
};
if ((_local5.width - (_local6 * _local1.width)) > 0){
_local6++;
};
if ((_local5.height - (_local7 * _local1.height)) > 0){
_local7++;
};
_local8 = OGlobal.Scale;
_local9 = 0;
while (_local9 < _local7) {
_local11 = 0;
while (_local11 < _local6) {
_local12 = new OBitmap(_local3, ((_local11 * _local1.width) / _local8), ((_local9 * _local1.height) / _local8));
this.addChild(_local12);
_local11++;
};
_local9++;
};
}
override public function Free():void{
super.Free();
}
public function set prIInd(_arg1:int):void{
this.iIInd = _arg1;
if (this.iImages == null){
this.iIInd = -1;
return;
};
if (this.iIInd >= (this.iImages.length - 1)){
this.iIInd = (this.iImages.length - 1);
};
Make();
}
public function get prIInd():int{
return (this.iIInd);
}
}
}//package ENGINE.INTERFACE
Section 33
//OButton (ENGINE.INTERFACE.OButton)
package ENGINE.INTERFACE {
import ENGINE.DISPLAY.*;
import flash.events.*;
import ENGINE.INTERFACE.ANIMATORS.*;
public class OButton extends OIObject {
public var iHit:OSprite;
public static const iDefAnimators:Array = [{F:OA_Alpha.Make, iSAlpha:0, iEAlpha:1, iPIter:6}, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:0, iPIter:6}, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:1, iPIter:6}, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:0.2, iPIter:6}, null, null, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:0.6, iPIter:6}, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:1, iPIter:6}, {F:OA_Scale.Make, iSScale:1, iEScale:0.8, iPIter:6}, {F:OA_Scale.Make, iSScale:0.8, iEScale:1, iPIter:6}];
public function OButton(_arg1:Array, _arg2:Array=null){
var _local3:Array;
_local3 = ((_arg2)==null) ? OButton.iDefAnimators : _arg2;
super(_arg1, _local3);
}
override public function OnRollOver(_arg1:MouseEvent):void{
this.prRool = true;
}
override public function Init():void{
this.useHandCursor = true;
this.buttonMode = true;
super.Init();
if (this.iHit){
this.iHit.visible = false;
this.hitArea = this.iHit;
};
}
override public function OnMouseUp(_arg1:MouseEvent):void{
this.prPress = false;
}
override public function OnRollOut(_arg1:MouseEvent):void{
if (this.prPress){
this.prPress = false;
};
this.prRool = false;
}
override public function Free():void{
this.iHit = null;
super.Free();
}
override public function OnMouseDown(_arg1:MouseEvent):void{
this.prPress = true;
if ((this.parent is OIObject)){
(this.parent as OIObject).OnPress(_arg1, this);
};
}
}
}//package ENGINE.INTERFACE
Section 34
//OCounter (ENGINE.INTERFACE.OCounter)
package ENGINE.INTERFACE {
import ENGINE.INTERFACE.ANIMATORS.*;
public class OCounter extends OIObject {
public var iSeparator:OIObject;
public var iDigits0:Array;
public var iDigits:Array;
protected var iValue:int;
protected var iValue0:int;
protected var iWidth:Number;
protected var iHeight:Number;
public static const iDefAnimators:Array = [{F:OA_Alpha.Make, iSAlpha:0, iEAlpha:1, iPIter:6}, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:0, iPIter:6}, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:1, iPIter:6}, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:0.2, iPIter:6}, null, null, null, null, null, null];
public function OCounter(_arg1:Array, _arg2:Number, _arg3:Number, _arg4:Array=null){
var _local5:Array;
this.iWidth = _arg2;
this.iHeight = _arg3;
_local5 = (_arg4) ? _arg4 : iDefAnimators;
super(_arg1, _local5);
}
public function set prValue0(_arg1:int):void{
this.iValue0 = Math.max(_arg1, 0);
if (!this.iDigits0){
return;
};
this.iValue0 = Math.min(this.iValue0, (Math.pow(10, this.iDigits0.length) - 1));
Draw();
}
public function set prValue(_arg1:int):void{
this.iValue = Math.max(_arg1, 0);
if (!this.iDigits){
return;
};
this.iValue = Math.min(this.iValue, (Math.pow(10, this.iDigits.length) - 1));
Draw();
}
override public function Init():void{
this.iDigits = new Array();
this.iDigits0 = new Array();
super.Init();
}
private function Draw():void{
var _local1:Number;
var _local2:String;
var _local3:String;
var _local4:int;
var _local5:Number;
var _local6:int;
_local1 = 0;
_local2 = this.iValue0.toString();
_local3 = this.iValue.toString();
_local4 = 0;
while (_local4 < this.iDigits0.length) {
this.iDigits0[_local4].prAnimationEnabled = this.iAEnabled;
_local4++;
};
_local4 = 0;
while (_local4 < this.iDigits.length) {
this.iDigits[_local4].prAnimationEnabled = this.iAEnabled;
_local4++;
};
if (this.iDigits0.length){
_local4 = (_local2.length - 1);
while (_local4 >= 0) {
this.iDigits0[_local4].prValue = (_local2.charCodeAt(_local4) - 47);
_local4--;
};
_local6 = (this.iDigits0.length - _local2.length);
_local4 = 0;
while (_local4 < _local6) {
if (this.iDigits0[_local4].prValue){
this.iDigits0[_local4].prValue = 0;
};
_local4++;
};
};
if (this.iDigits.length){
_local4 = 0;
while (_local4 < _local3.length) {
this.iDigits[_local4].prValue = (_local3.charCodeAt(_local4) - 47);
_local4++;
};
_local6 = this.iDigits.length;
_local4 = _local3.length;
while (_local4 < _local6) {
if (this.iDigits[_local4].prValue){
this.iDigits[_local4].prValue = 0;
};
_local4++;
};
};
if (this.iDigits0.length){
_local4 = (_local2.length - 1);
while (_local4 >= 0) {
_local1 = (_local1 + this.iDigits0[_local4].prWidth);
_local4--;
};
};
if (this.iSeparator){
_local1 = (_local1 + this.iSeparator.prWidth);
};
if (this.iDigits.length){
_local4 = 0;
while (_local4 < _local3.length) {
_local1 = (_local1 + this.iDigits[_local4].prWidth);
_local4++;
};
};
_local5 = ((this.iWidth - _local1) / 2);
if (this.iDigits0.length){
_local4 = 0;
while (_local4 < this.iDigits0.length) {
if (this.iDigits0[_local4].prValue){
this.iDigits0[_local4].PosValue(_local5, ((this.iWidth - this.iDigits0[_local4].prHeight) / 2));
_local5 = (_local5 + this.iDigits0[_local4].prWidth);
};
_local4++;
};
};
if (this.iSeparator){
this.iSeparator.Pos(_local5, ((this.iHeight - this.iSeparator.prHeight) / 2));
_local5 = (_local5 + this.iSeparator.prWidth);
};
if (this.iDigits.length){
_local4 = 0;
while (_local4 < this.iDigits.length) {
if (this.iDigits[_local4].prValue){
this.iDigits[_local4].PosValue(_local5, ((this.iHeight - this.iDigits[_local4].prHeight) / 2));
_local5 = (_local5 + this.iDigits[_local4].prWidth);
};
_local4++;
};
};
}
public function get prValue0():int{
return (this.iValue0);
}
override public function Free():void{
this.iDigits = null;
this.iDigits0 = null;
this.iSeparator = null;
super.Free();
}
public function get prValue():int{
return (this.iValue);
}
}
}//package ENGINE.INTERFACE
Section 35
//ODialog (ENGINE.INTERFACE.ODialog)
package ENGINE.INTERFACE {
import ENGINE.INTERFACE.ANIMATORS.*;
public class ODialog extends OWindow {
public static const iDefAnimators:Array = [{F:OA_Alpha.Make, iSAlpha:0, iEAlpha:1, iPIter:12}, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:0, iPIter:12}, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:1, iPIter:12}, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:0.2, iPIter:12}, null, null, null, null, null, null];
public function ODialog(_arg1:Array, _arg2:Array=null){
var _local3:Array;
_local3 = (_arg2) ? _arg2 : ODialog.iDefAnimators;
super(_arg1, _local3);
}
override public function Init():void{
super.Init();
this.SetVisible(false);
this.PosCenter();
this.prVisible = true;
}
}
}//package ENGINE.INTERFACE
Section 36
//OInput (ENGINE.INTERFACE.OInput)
package ENGINE.INTERFACE {
import flash.events.*;
import ENGINE.INTERFACE.ANIMATORS.*;
import ENGINE.INTERFACE.ELEMENTS.*;
public class OInput extends OIObject {
public var iText:OInputTextField;
public static const iDefAnimators:Array = [{F:OA_Alpha.Make, iSAlpha:0, iEAlpha:1, iPIter:6}, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:0, iPIter:6}, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:1, iPIter:6}, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:0.2, iPIter:6}, null, null, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:0.5, iPIter:6}, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:1, iPIter:6}, null, null];
public function OInput(_arg1:Array, _arg2:Array=null){
var _local3:Array;
_local3 = ((_arg2)==null) ? OInput.iDefAnimators : _arg2;
super(_arg1, _local3);
}
public function set prText(_arg1:String):void{
this.iText.prText = _arg1;
}
override public function Init():void{
super.Init();
this.addEventListener(KeyboardEvent.KEY_UP, OnKeyUp);
}
public function get prText():String{
return (this.iText.prText);
}
protected function OnKeyUp(_arg1:KeyboardEvent):void{
if ((((_arg1.keyCode == 13)) && ((this.parent is OWindow)))){
(this.parent as OWindow).OnPress(null, this);
};
}
}
}//package ENGINE.INTERFACE
Section 37
//OInterface (ENGINE.INTERFACE.OInterface)
package ENGINE.INTERFACE {
import ENGINE.INTERFACE.ANIMATORS.*;
import ENGINE.INTERFACE.ELEMENTS.*;
public class OInterface {
public static const iDefLBButtonAnimators:Array = [{F:OA_Alpha.Make, iSAlpha:0, iEAlpha:1, iPIter:6}, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:0, iPIter:6}, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:1, iPIter:6}, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:0.2, iPIter:6}, null, null, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:0.6, iPIter:4}, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:1, iPIter:4}, {F:OA_Scale.Make, iSScale:1, iEScale:0.8, iPIter:4}, {F:OA_Scale.Make, iSScale:0.8, iEScale:1, iPIter:4}];
public static const iDefAnimators:Array = [{F:OA_Alpha.Make, iSAlpha:0, iEAlpha:1, iPIter:12}, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:0, iPIter:12}, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:1, iPIter:12}, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:0.2, iPIter:12}, null, null, null, null, null, null];
public static const iDefSlowAnimators:Array = [{F:OA_Alpha.Make, iSAlpha:0, iEAlpha:1, iPIter:30}, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:0, iPIter:30}, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:1, iPIter:30}, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:0.2, iPIter:30}, null, null, null, null, null, null];
public static function OHtmlTextFieldMake(_arg1:Array):OHtmlTextField{
return (new OHtmlTextField(_arg1[1], _arg1[2], _arg1[3], _arg1[4], _arg1[5], _arg1[6], _arg1[7], _arg1[8], _arg1[9], _arg1[10]));
}
public static function OIObjectMake(_arg1:Array):OIObject{
var _local2:OIObject;
_local2 = new OIObject(_arg1[1], _arg1[2]);
_local2.Pos(_arg1[3], _arg1[4]);
return (_local2);
}
public static function OProgressMake(_arg1:Array):OProgress{
return (new OProgress(_arg1[1], _arg1[2]));
}
public static function OInputTextFieldMake(_arg1:Array):OInputTextField{
return (new OInputTextField(_arg1[1], _arg1[2], _arg1[3], _arg1[4], _arg1[5], _arg1[6], _arg1[7], _arg1[8], _arg1[9], _arg1[10], _arg1[11]));
}
public static function OTabMake(_arg1:Array):OTab{
return (new OTab(_arg1[1], _arg1[2], _arg1[3], _arg1[4], _arg1[5]));
}
public static function OCounterMake(_arg1:Array):OCounter{
return (new OCounter(_arg1[1], _arg1[2], _arg1[3], _arg1[4]));
}
}
}//package ENGINE.INTERFACE
Section 38
//OIObject (ENGINE.INTERFACE.OIObject)
package ENGINE.INTERFACE {
import ENGINE.DISPLAY.*;
import flash.events.*;
import flash.display.*;
import flash.geom.*;
import ENGINE.INTERFACE.ANIMATORS.*;
import ENGINE.CORE.*;
public class OIObject extends OSprite {
protected var iTrigger:uint;
protected var iAEnabled:Boolean;// = true
protected var iAManager:OAnimatorManager;
protected var iState:int;
protected var iAParams:Array;
protected var iParam:Array;
public static var trActive:uint = 2;
public static var trPress:uint = 16;
public static var trRool:uint = 8;
public static var trFocus:uint = 3;
public static var trVisible:uint = 1;
public function OIObject(_arg1:Array, _arg2:Array=null){
iTrigger = (trVisible | trActive);
iAEnabled = true;
super();
this.iParam = _arg1;
this.iAParams = _arg2;
this.Init();
}
public function get prMouseEnabled():Boolean{
return (((this.prVisible) && (this.prActive)));
}
public function get prRool():Boolean{
return (((this.iTrigger & trRool) > 0));
}
public function set prFocus(_arg1:Boolean):void{
if (_arg1){
this.iTrigger = (this.iTrigger | trFocus);
if (this.iAManager){
this.AddAnimator(this.iAParams[OAnimatorManager.anFocusIn]);
};
} else {
this.iTrigger = (this.iTrigger & ~(trFocus));
if (this.iAManager){
this.AddAnimator(this.iAParams[OAnimatorManager.anFocusOut]);
};
};
}
override public function get prVisible():Boolean{
return (((this.iTrigger & trVisible) > 0));
}
public function set prRool(_arg1:Boolean):void{
if (_arg1){
this.iTrigger = (this.iTrigger | trRool);
if (this.iAManager){
this.AddAnimator(this.iAParams[OAnimatorManager.anRoolOver]);
};
} else {
this.iTrigger = (this.iTrigger & ~(trRool));
if (this.iAManager){
this.AddAnimator(this.iAParams[OAnimatorManager.anRoolOut]);
};
};
}
override public function set prVisible(_arg1:Boolean):void{
if (_arg1){
this.iTrigger = (this.iTrigger | trVisible);
if (this.iAManager){
this.AddAnimator(this.iAParams[OAnimatorManager.anShow], false);
};
} else {
this.iTrigger = (this.iTrigger & ~(trVisible));
if (this.iAManager){
this.AddAnimator(this.iAParams[OAnimatorManager.anHide], false);
};
};
if (((!(this.iAManager)) || (!(this.iAEnabled)))){
this.visible = _arg1;
};
this.mouseEnabled = this.prMouseEnabled;
this.mouseChildren = this.mouseEnabled;
}
public function OnRollOver(_arg1:MouseEvent):void{
this.prRool = true;
}
public function Init():void{
var _local1:int;
var _local2:int;
var _local3:int;
var _local4:DisplayObject;
var _local5:String;
if (this.iParam){
_local1 = this.iParam.length;
_local2 = 0;
while (_local2 < _local1) {
_local3 = this.iParam[_local2].length;
_local4 = this.iParam[_local2][0](this.iParam[_local2]);
_local5 = this.iParam[_local2][(_local3 - 3)];
if (_local5){
if ((this[_local5] is Array)){
this[_local5][this.iParam[_local2][(_local3 - 2)]] = _local4;
} else {
this[_local5] = _local4;
};
};
if ((_local4 is OIObject)){
(_local4 as OIObject).SetVisible(this.iParam[_local2][(_local3 - 1)]);
} else {
if ((_local4 is IDisplayObject)){
(_local4 as IDisplayObject).prVisible = this.iParam[_local2][(_local3 - 1)];
} else {
_local4.visible = this.iParam[_local2][(_local3 - 1)];
};
};
this.addChild(_local4);
_local2++;
};
};
this.iAManager = (this.iAParams) ? new OAnimatorManager(this) : null;
this.tabEnabled = false;
this.addEventListener(Event.ENTER_FRAME, OnEnterFrame);
this.addEventListener(MouseEvent.ROLL_OVER, OnRollOver);
this.addEventListener(MouseEvent.ROLL_OUT, OnRollOut);
this.addEventListener(MouseEvent.MOUSE_DOWN, OnMouseDown);
this.addEventListener(MouseEvent.MOUSE_UP, OnMouseUp);
}
public function get prAnimationEnabled():Boolean{
return (this.iAEnabled);
}
public function set prActive(_arg1:Boolean):void{
if (_arg1){
this.iTrigger = (this.iTrigger | trActive);
if (this.iAManager){
this.AddAnimator(this.iAParams[OAnimatorManager.anActivate]);
};
} else {
this.iTrigger = (this.iTrigger & ~(trActive));
if (this.iAManager){
this.AddAnimator(this.iAParams[OAnimatorManager.anDeactivate]);
};
};
this.mouseEnabled = this.prMouseEnabled;
this.mouseChildren = this.mouseEnabled;
}
public function OnMouseUp(_arg1:MouseEvent):void{
this.prPress = false;
}
public function get prPress():Boolean{
return (((this.iTrigger & trPress) > 0));
}
public function get State():int{
return (this.iState);
}
public function OnPress(_arg1:Event, _arg2):void{
}
public function OnRollOut(_arg1:MouseEvent):void{
this.prRool = false;
}
override public function Free():void{
this.removeEventListener(MouseEvent.MOUSE_UP, OnMouseUp);
this.removeEventListener(MouseEvent.MOUSE_DOWN, OnMouseDown);
this.removeEventListener(MouseEvent.ROLL_OUT, OnRollOut);
this.removeEventListener(MouseEvent.ROLL_OVER, OnRollOver);
this.removeEventListener(Event.ENTER_FRAME, OnEnterFrame);
super.Free();
if (this.iAManager){
this.iAManager.Free();
};
this.iAManager = null;
}
public function get prAnimation():Boolean{
var _local1:int;
if (((this.iAManager) && (this.iAManager.prAnimation))){
return (true);
};
_local1 = 0;
while (_local1 < this.numChildren) {
if (!(this.getChildAt(_local1) is OIObject)){
} else {
if ((this.getChildAt(_local1) as OIObject).prAnimation){
return (true);
};
};
_local1++;
};
return (false);
}
public function get prActive():Boolean{
return (((this.iTrigger & trActive) > 0));
}
public function PosCenter(_arg1:Number=800, _arg2:Number=600):void{
var _local3:Rectangle;
_local3 = this.getBounds(this);
this.Pos(OGlobal.ScaleFloor((((_arg1 - this.prWidth) - (OGlobal.ToLocal(_local3.x) * 2)) / 2)), OGlobal.ScaleFloor((((_arg2 - this.prHeight) - (OGlobal.ToLocal(_local3.y) * 2)) / 2)));
}
public function AddAnimator(_arg1:Object, _arg2:Boolean=true):void{
var _local3:Boolean;
_local3 = (_arg2) ? ((((this.iAManager) && (this.prVisible))) && (this.iAEnabled)) : ((this.iAManager) && (this.iAEnabled));
if (_local3){
this.iAManager.AddAnimator(_arg1);
};
}
public function set prAnimationEnabled(_arg1:Boolean):void{
this.iAEnabled = _arg1;
}
public function set prPress(_arg1:Boolean):void{
if (_arg1){
this.iTrigger = (this.iTrigger | trPress);
if (this.iAManager){
this.AddAnimator(this.iAParams[OAnimatorManager.anPress]);
};
} else {
this.iTrigger = (this.iTrigger & ~(trPress));
if (this.iAManager){
this.AddAnimator(this.iAParams[OAnimatorManager.anUnpress]);
};
};
}
public function OnMouseDown(_arg1:MouseEvent):void{
this.prPress = true;
}
public function OnEnterFrame(_arg1:Event):void{
if (this.iAManager){
this.iAManager.OnEnterFrame();
};
}
public function SetVisible(_arg1:Boolean):void{
this.prAnimationEnabled = false;
this.prVisible = _arg1;
this.prAnimationEnabled = true;
}
public function set prAnimatorParams(_arg1:Array):void{
this.iAParams = _arg1;
if (!this.iAManager){
this.iAManager = new OAnimatorManager(this);
};
}
public function set State(_arg1:int):void{
this.iState = _arg1;
}
public function get prAnimatorParams():Array{
return (this.iAParams);
}
public function get prFocus():Boolean{
return (((this.iTrigger & trFocus) > 0));
}
}
}//package ENGINE.INTERFACE
Section 39
//OListBox (ENGINE.INTERFACE.OListBox)
package ENGINE.INTERFACE {
import flash.events.*;
import ENGINE.INTERFACE.ANIMATORS.*;
import ENGINE.INTERFACE.ELEMENTS.*;
import ENGINE.CORE.*;
public class OListBox extends OIObject {
private var iLBParams:Array;
private var iEGenP:Function;
private var iElements:Array;
public var iDown:OButton;
private var iEGen:Array;
public var iUp:OButton;
private var iEShowInd:int;
private var iSelection:Boolean;// = true
private var iECoord:Array;
private var iECount:int;
private var iCycling:Boolean;
private var iECurInd:int;
private var iPageScrool:Boolean;
public static const iDefAnimators:Array = [{F:OA_Alpha.Make, iSAlpha:0, iEAlpha:1, iPIter:6}, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:0, iPIter:6}, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:1, iPIter:6}, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:0.2, iPIter:6}, null, null, {F:OA_AlphaInd.Make, iSAlpha:-1, iEAlpha:0.6, iInd:[0], iPIter:6}, {F:OA_AlphaInd.Make, iSAlpha:-1, iEAlpha:1, iInd:[0], iPIter:6}, null, null];
public function OListBox(_arg1:Array, _arg2:Array, _arg3:Function, _arg4:Array, _arg5:Array, _arg6:Array=null){
var _local7:Array;
iSelection = true;
_local7 = (_arg6) ? _arg6 : iDefAnimators;
this.iEGen = _arg2;
this.iEGenP = _arg3;
this.iECoord = _arg4;
this.iLBParams = _arg5;
this.iECount = this.iECoord.length;
super(_arg1, _local7);
}
public function SetCurrentElement(_arg1, _arg2:Array=null):void{
var _local3:int;
if (((!(_arg1)) && (!(_arg2)))){
this.FreeElements();
this.iLBParams = null;
this.iECurInd = 0;
this.iEShowInd = 0;
return;
};
if (_arg2){
this.iLBParams = _arg2;
};
if (!this.iLBParams){
return;
};
this.iECurInd = 0;
_local3 = 0;
while (_local3 < this.iLBParams.length) {
if (_arg1 == this.iLBParams[_local3]){
this.iECurInd = _local3;
break;
};
_local3++;
};
this.iEShowInd = this.iECurInd;
if ((this.iEShowInd + this.iECount) >= this.iLBParams.length){
this.iEShowInd = (this.iLBParams.length - this.iECount);
};
if (this.iEShowInd < 0){
this.iEShowInd = 0;
};
InitElements();
}
protected function UnpressElements(_arg1:OListBoxElement):void{
var _local2:int;
_local2 = 0;
while (_local2 < this.iElements.length) {
if (!this.iElements[_local2]){
} else {
if (this.iElements[_local2] == _arg1){
this.iECurInd = (this.iEShowInd + _local2);
} else {
if (this.iElements[_local2].prPress){
this.iElements[_local2].prPress = false;
};
};
};
_local2++;
};
}
public function get prPageScrool():Boolean{
return (this.iPageScrool);
}
protected function InitElements():void{
var _local1:int;
var _local2:int;
var _local3:int;
var _local4:Boolean;
this.FreeElements();
if (this.iLBParams == null){
return;
};
_local1 = 0;
_local2 = (((this.iEShowInd + this.iECount) <= this.iLBParams.length)) ? (this.iEShowInd + this.iECount) : this.iLBParams.length;
_local3 = this.iEShowInd;
while (_local3 < _local2) {
this.iEGenP(this.iEGen, this.iLBParams[_local3]);
this.iElements[_local1] = this.iEGen[0](this.iEGen);
this.iElements[_local1].Pos(OGlobal.ScaleFloor(this.iECoord[_local1][0]), OGlobal.ScaleFloor(this.iECoord[_local1][1]));
this.iElements[_local1].mouseEnabled = this.iSelection;
this.addChild(this.iElements[_local1]);
if ((((this.iECurInd == _local3)) && (this.iSelection))){
this.iElements[_local1].prPress = true;
};
_local1++;
_local3++;
};
if (((this.iUp) && (this.iDown))){
if (this.iCycling){
_local4 = (this.iLBParams) ? (this.iLBParams.length > this.iECount) : false;
if (this.iUp.prVisible != _local4){
this.iUp.prVisible = _local4;
};
if (this.iDown.prVisible != _local4){
this.iDown.prVisible = _local4;
};
} else {
if ((((this.iEShowInd == 0)) && (this.iUp.prVisible))){
if (this.iUp.prPress){
this.iUp.prPress = false;
};
this.iUp.prVisible = false;
};
if ((((this.iEShowInd > 0)) && (!(this.iUp.prVisible)))){
this.iUp.prVisible = true;
};
if (((((this.iEShowInd + this.iECount) >= this.iLBParams.length)) && (this.iDown.prVisible))){
if (this.iDown.prPress){
this.iDown.prPress = false;
};
this.iDown.prVisible = false;
};
if (((((this.iEShowInd + this.iECount) < this.iLBParams.length)) && (!(this.iDown.prVisible)))){
this.iDown.prVisible = true;
};
};
};
}
public function set prPageScrool(_arg1:Boolean):void{
this.iPageScrool = _arg1;
}
override public function Free():void{
this.iUp = null;
this.iDown = null;
this.iElements = null;
super.Free();
}
public function set prCurrentInd(_arg1:int):void{
if (!this.iLBParams){
return;
};
this.SetCurrentElement(this.iLBParams[_arg1]);
}
override public function Init():void{
super.Init();
this.iElements = new Array();
this.InitElements();
}
public function set prLBParams(_arg1:Array):void{
this.iLBParams = _arg1;
this.iECurInd = 0;
this.iEShowInd = 0;
this.InitElements();
}
public function get prCurrentInd():int{
return (this.iECurInd);
}
public function set prSelection(_arg1:Boolean):void{
this.iSelection = _arg1;
InitElements();
}
public function set prCycling(_arg1:Boolean):void{
this.iCycling = _arg1;
InitElements();
}
override public function OnPress(_arg1:Event, _arg2):void{
if ((_arg2 is OListBoxElement)){
this.UnpressElements((_arg2 as OListBoxElement));
};
if ((((_arg2 == this.iUp)) && (this.SkipElements((this.iPageScrool) ? -(this.iECount) : -1)))){
this.InitElements();
};
if ((((_arg2 == this.iDown)) && (this.SkipElements((this.iPageScrool) ? this.iECount : 1)))){
this.InitElements();
};
if ((this.parent is OIObject)){
(this.parent as OIObject).OnPress(_arg1, this);
};
}
public function get prSelection():Boolean{
return (this.iSelection);
}
protected function FreeElements():void{
var _local1:int;
_local1 = 0;
while (_local1 < this.iElements.length) {
if (!this.iElements[_local1]){
} else {
this.removeChild(this.iElements[_local1]);
this.iElements[_local1].Free();
this.iElements[_local1] = null;
};
_local1++;
};
}
protected function SkipElements(_arg1:int):Boolean{
var _local2:int;
if (!this.iLBParams){
return (false);
};
_local2 = (this.iEShowInd + _arg1);
if ((_local2 + this.iECount) >= this.iLBParams.length){
_local2 = (this.iCycling) ? (_local2 - this.iLBParams.length) : (this.iLBParams.length - this.iECount);
};
if (_local2 < 0){
_local2 = (this.iCycling) ? (this.iLBParams.length + _local2) : 0;
};
if (this.iEShowInd == _local2){
return (false);
};
this.iEShowInd = _local2;
if (!this.iSelection){
this.iECurInd = this.iEShowInd;
};
return (true);
}
public function get prCurrentLBParam(){
return ((this.iLBParams) ? this.iLBParams[this.iECurInd] : null);
}
public function get prCycling():Boolean{
return (this.iCycling);
}
}
}//package ENGINE.INTERFACE
Section 40
//OProgress (ENGINE.INTERFACE.OProgress)
package ENGINE.INTERFACE {
import ENGINE.DISPLAY.*;
import flash.geom.*;
public class OProgress extends OIObject {
public var iProgressBG:OBitmap;
private var iPBG:OBitmap;
public var iProgress:OBitmap;
private var iValue:Number;
public function OProgress(_arg1:Array, _arg2:Array=null){
super(_arg1, _arg2);
}
public function set prValue(_arg1:Number):void{
var _local2:int;
var _local3:Rectangle;
var _local4:Rectangle;
if (_arg1 < 0){
_arg1 = 0;
} else {
if (_arg1 > 100){
_arg1 = 100;
};
};
if (this.iValue != _arg1){
_local2 = Math.round(((iProgressBG.prOBM.iBM.width * _arg1) / 100));
_local3 = new Rectangle(0, 0, _local2, this.iProgressBG.prOBM.iBM.height);
_local4 = new Rectangle(_local2, 0, (iProgressBG.prOBM.iBM.width - _local2), this.iProgressBG.prOBM.iBM.height);
this.iProgressBG.prOBM.iBM.fillRect(this.iPBG.prOBM.iBM.rect, 0);
this.iProgressBG.prOBM.iBM.copyPixels(this.iProgress.prOBM.iBM, _local3, new Point(0, 0));
this.iProgressBG.prOBM.iBM.copyPixels(this.iPBG.prOBM.iBM, _local4, new Point(_local2, 0));
};
this.iValue = _arg1;
}
override public function Init():void{
super.Init();
if (this.iProgressBG){
this.iPBG = this.iProgressBG.Clone();
};
}
override public function Free():void{
this.iProgressBG = null;
this.iProgress = null;
super.Free();
}
public function get prValue():Number{
return (this.iValue);
}
}
}//package ENGINE.INTERFACE
Section 41
//OTab (ENGINE.INTERFACE.OTab)
package ENGINE.INTERFACE {
import ENGINE.DISPLAY.*;
import ENGINE.INTERFACE.ANIMATORS.*;
public class OTab extends OIObject {
private var iVAnimator:Object;
private var iCurInd:int;
protected var iWidth:Number;
protected var iHeight:Number;
public static const iDefAnimators:Array = [{F:OA_Alpha.Make, iSAlpha:0, iEAlpha:1, iPIter:6}, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:0, iPIter:6}, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:1, iPIter:6}, {F:OA_Alpha.Make, iSAlpha:-1, iEAlpha:0.2, iPIter:6}, null, null, null, null, null, null];
public static const iDefVAnimator:Object = {F:OA_AlphaFade.Make, iSAlpha:-1, iEAlpha:0, iSInd:[0], iEInd:[1], iPIter:3};
public function OTab(_arg1:Array, _arg2:Number, _arg3:Number, _arg4:Object=null, _arg5:Array=null){
var _local6:Array;
this.iWidth = _arg2;
this.iHeight = _arg3;
this.iVAnimator = (_arg4) ? _arg4 : iDefVAnimator;
_local6 = (_arg5) ? _arg5 : iDefAnimators;
super(_arg1, _local6);
}
override public function get prWidth():Number{
return (this.iWidth);
}
public function get prElements():int{
return (this.numChildren);
}
public function set prValue(_arg1:int):void{
if (_arg1 < 0){
_arg1 = 0;
} else {
if (_arg1 >= this.numChildren){
_arg1 = (this.numChildren - 1);
};
};
if (((this.iAEnabled) && (this.iVAnimator))){
if (this.iCurInd == _arg1){
return;
};
this.iVAnimator.iSInd = [this.iCurInd];
this.iVAnimator.iEInd = [_arg1];
this.AddAnimator(this.iVAnimator, false);
} else {
if ((this.getChildAt(this.iCurInd) is IDisplayObject)){
(this.getChildAt(this.iCurInd) as IDisplayObject).prVisible = false;
};
if ((this.getChildAt(_arg1) is IDisplayObject)){
(this.getChildAt(_arg1) as IDisplayObject).prVisible = true;
};
};
this.iCurInd = _arg1;
}
override public function Init():void{
super.Init();
(this.getChildAt(0) as IDisplayObject).prVisible = true;
}
public function get prValue():int{
return (this.iCurInd);
}
override public function get prHeight():Number{
return (this.iHeight);
}
public function PosValue(_arg1:Number, _arg2:Number):void{
(this.getChildAt(this.iCurInd) as IDisplayObject).Pos((_arg1 - this.prX), (_arg2 - this.prY));
}
}
}//package ENGINE.INTERFACE
Section 42
//OWindow (ENGINE.INTERFACE.OWindow)
package ENGINE.INTERFACE {
public class OWindow extends OIObject {
public function OWindow(_arg1:Array, _arg2:Array=null){
super(_arg1, _arg2);
}
}
}//package ENGINE.INTERFACE
Section 43
//OEffectGel (ENGINE.SKIN.OEffectGel)
package ENGINE.SKIN {
import ENGINE.DISPLAY.*;
import flash.display.*;
import flash.geom.*;
import ENGINE.DISPLAY.EFFECTS.*;
import flash.filters.*;
import ENGINE.CORE.*;
public class OEffectGel extends OEffect {
private var iColor:uint;// = 0
private var iF2B:BlurFilter;
private var iF2GG1:GradientGlowFilter;
private var iF2GG2:GradientGlowFilter;
private var iF0S:DropShadowFilter;
private var iF1G:GlowFilter;
private var iBorder:Number;// = 0
private var iF1S:DropShadowFilter;
public function OEffectGel(){
iColor = 0;
iBorder = 0;
super();
}
override public function Apply(_arg1:Array, _arg2:Number=1, _arg3:Number=0, _arg4:Number=0):OBM{
var _local5:OBM;
var _local6:Number;
var _local7:Number;
var _local8:Sprite;
var _local9:Sprite;
var _local10:ColorTransform;
var _local11:Bitmap;
var _local12:Bitmap;
var _local13:Bitmap;
var _local14:Sprite;
var _local15:Bitmap;
var _local16:Bitmap;
var _local17:BitmapData;
var _local18:Bitmap;
_local5 = OBM.Make([null, _arg1, _arg2, _arg3, _arg4, 0]);
_local6 = OGlobal.Scale;
_local7 = 0.85;
_local8 = new Sprite();
_local9 = new Sprite();
_local9.x = iBorder;
_local9.y = iBorder;
_local9.alpha = _local7;
_local8.addChild(_local9);
_local10 = new ColorTransform(0, 0, 0);
_local10.color = this.iColor;
_local11 = new Bitmap(_local5.iBM);
_local11.transform.colorTransform = _local10;
_local9.addChild(_local11);
if (this.iF0S.distance > 0){
_local18 = new Bitmap(_local5.iBM);
_local18.blendMode = "multiply";
_local18.filters = [this.iF0S];
_local9.addChild(_local18);
};
_local12 = new Bitmap(_local5.iBM);
_local12.blendMode = "multiply";
_local12.filters = [this.iF1S];
_local9.addChild(_local12);
_local13 = new Bitmap(_local5.iBM);
_local13.blendMode = "multiply";
_local13.filters = [this.iF1G];
_local9.addChild(_local13);
_local14 = new Sprite();
_local14.blendMode = "layer";
_local14.filters = [this.iF2B];
_local9.addChild(_local14);
_local15 = new Bitmap(_local5.iBM);
_local15.blendMode = "screen";
_local15.filters = [this.iF2GG1];
_local14.addChild(_local15);
_local16 = new Bitmap(_local5.iBM);
_local16.blendMode = "erase";
_local16.filters = [this.iF2GG2];
_local14.addChild(_local16);
_local17 = new BitmapData((_local8.width + (this.iBorder * 2)), (_local8.height + (this.iBorder * 2)), true, 0);
_local17.draw(_local8);
return (new OBM(_local17, (-(this.iBorder) + _local5.iX), (-(this.iBorder) + _local5.iY), _local5.iWidth, _local5.iHeight));
}
override public function Init(_arg1:String, _arg2:String, _arg3:Number=1):void{
var _local4:Object;
var _local5:Object;
var _local6:Number;
var _local7:uint;
var _local8:Number;
var _local9:Number;
var _local10:int;
var _local11:int;
var _local12:Array;
var _local13:Array;
_local4 = this.iColors.GetItem(_arg1);
_local5 = this.iFilters.GetItem(_arg2);
if (_local5 == null){
return;
};
_local6 = (OGlobal.Scale * _arg3);
if (_local4 == null){
_local4 = new Object();
if (_arg1.search(/,/) < 0){
_local4.iCH = Number(_arg1);
if (_local4.iCH == undefined){
return;
};
_local4.iCH = (_local4.iCH % 360);
_local10 = Math.floor((_local4.iCH / 30));
_local11 = ((_local10 + 1) % 12);
_local12 = [50, 50, 60, 60, 50, 50, 40, 40, 30, 30, 40, 40];
_local4.iCS = ((_local12[_local10] + ((_local12[_local11] - _local12[_local10]) * ((_local4.iCH / 30) - _local10))) * 0.01);
_local4.iCB = 1;
_local4.iSH = (((_local10 % 2))==0) ? (_local4.iCH - 15) : (_local4.iCH + 15);
if (_local4.iSH < 0){
_local4.iSH = (_local4.iSH + 360);
};
_local4.iSS = 0.9;
_local4.iSB = 0.6;
} else {
_local13 = _arg1.split(/,/);
_local4.iCH = _local13[0];
_local4.iCS = _local13[1];
_local4.iCB = _local13[2];
_local4.iSH = _local13[3];
_local4.iSS = _local13[4];
_local4.iSB = _local13[5];
};
};
_local7 = ODisplay.HSBToRGB(_local4.iSH, _local4.iSS, _local4.iSB);
this.iF0S = new DropShadowFilter((_local5.iF0SD * _local6), _local5.iAngle, ODisplay.HSBToRGB(_local4.iCH, _local4.iCS, (_local4.iCB * 0.5)), 0.75, (_local5.iF0SB * _local6), (_local5.iF0SB * _local6), 1, 2, false, true, true);
this.iF1S = new DropShadowFilter((_local5.iF1SD * _local6), _local5.iAngle, _local7, 0.85, (_local5.iF1SB * _local6), (_local5.iF1SB * _local6), 1.5, 3, true, true, true);
this.iF1G = new GlowFilter(_local7, _local5.iF1GA, (_local5.iF1GB * _local6), (_local5.iF1GB * _local6), 2, 3, true, true);
_local8 = ((_local6)<1) ? (_local5.iF2GGC1 * _local6) : _local5.iF2GGC1;
this.iF2GG1 = new GradientGlowFilter((_local5.iF2GGD1 * _local6), _local5.iAngle, [0xFFFFFF, 0xFFFFFF, 0xFFFFFF], [0, 0, 1], [0, _local8, 0xFF], (_local5.iF2GGB1 * _local6), (_local5.iF2GGB1 * _local6), 1, 1, "inner", true);
_local9 = ((_local6)<1) ? (_local5.iF2GGC2 * _local6) : _local5.iF2GGC2;
this.iF2GG2 = new GradientGlowFilter((_local5.iF2GGD2 * _local6), _local5.iAngle, [0xFFFFFF, 0xFFFFFF, 0xFFFFFF], [0, 0, 1], [0, _local9, 0xFF], (_local5.iF2GGB2 * _local6), (_local5.iF2GGB2 * _local6), 1, 1, "inner", true);
this.iF2B = new BlurFilter((_local5.iF2B * _local6), (_local5.iF2B * _local6));
this.iColor = ODisplay.HSBToRGB(_local4.iCH, _local4.iCS, _local4.iCB);
this.iBorder = Math.ceil((_local5.iBorder * _local6));
}
}
}//package ENGINE.SKIN
Section 44
//OMultiplayer (ENGINE.SMARTFOX.OMultiplayer)
package ENGINE.SMARTFOX {
import it.gotoandplay.smartfoxserver.handlers.*;
import it.gotoandplay.smartfoxserver.data.*;
import it.gotoandplay.smartfoxserver.*;
import it.gotoandplay.smartfoxserver.util.*;
import ENGINE.CORE.*;
import flash.utils.*;
public class OMultiplayer extends SmartFoxClient {
private var iCmd:String;
private var iError:String;
private var iConnection:Boolean;// = false
private var iUsersCount:int;
private var iErrorsCount:int;
private var iPassword:String;
private var iAdress:String;
private var iXTName:String;
private var iTimer:int;
private var iGameParams:Array;
private var iCMessages:Array;
private var iOpponentID:int;
private var iOpponentName:String;
private var iName:String;
private var iTurn:Array;
private var iState:int;
private var iGRoomParams:Array;
private var iZoneName:String;
public static const stInGame:int = 13;
public static const stLogin:int = 3;
public static const cmdJoinGameRoom:String = "jgr";
public static const cmdZoneUsersCount:String = "zuc";
public static const stNone:int = 0;
public static const stMainRoomError:int = 6;
public static const stGameError:int = 12;
public static const cmdJoinGame:String = "jgm";
public static const cmdJoinMainRoom:String = "jmr";
public static const stConnection:int = 1;
public static const stLoginError:int = 4;
public static const cmdMakeTurn:String = "m";
public static const cmdCmd:String = "cmd";
public static const stConnectionError:int = 2;
public static const stInZone:int = 7;
public static const stInGameRoom:int = 10;
public static const cmdChatMessage:String = "c";
public static const stJoinGameRoom:int = 8;
public static const stGameRoomError:int = 9;
public static const stJoinGame:int = 11;
public static const stJoinMainRoom:int = 5;
public function OMultiplayer(_arg1:Boolean=false){
iConnection = false;
super(_arg1);
this.State = stNone;
}
private function OnConnectionLost(_arg1:SFSEvent):void{
this.iConnection = false;
this.State = stNone;
}
public function get prActiveRoomID():int{
return (this.activeRoomId);
}
public function get prErrorsCount():int{
return (this.iErrorsCount);
}
public function get prError():String{
return (this.iError);
}
public function get prChatMessage():String{
return (((this.iCMessages.length)==0) ? null : this.iCMessages.shift());
}
public function ClearChatMessage(_arg1:Boolean=false):void{
if (_arg1){
this.iCMessages = new Array();
} else {
if (this.iCMessages[0]){
this.iCMessages.shift();
};
};
}
public function Init(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:String, _arg6:String=""):void{
if (((!(OGlobal.CheckDomain(_arg1))) || (!((this.iState == stNone))))){
return;
};
this.iAdress = _arg2;
this.iZoneName = _arg3;
this.iXTName = _arg4;
this.iName = _arg5;
this.iPassword = _arg6;
this.iTurn = new Array();
this.iCMessages = new Array();
addEventListener(SFSEvent.onConnection, OnConnection);
addEventListener(SFSEvent.onConnectionLost, OnConnectionLost);
addEventListener(SFSEvent.onExtensionResponse, OnExtensionResponse);
this.State = stConnection;
}
private function OnConnection(_arg1:SFSEvent):void{
if (!_arg1.params.success){
this.iError = _arg1.params.error;
this.iErrorsCount++;
this.iConnection = false;
};
this.State = (_arg1.params.success) ? stLogin : stConnectionError;
}
public function set prGRoomParams(_arg1:Array):void{
this.iGRoomParams = _arg1;
}
public function ClearOpponentTurn(_arg1:Boolean=false):void{
if (_arg1){
this.iTurn = new Array();
} else {
if (this.iTurn[0]){
this.iTurn.shift();
};
};
}
private function OnExtensionResponse(_arg1:SFSEvent):void{
var _local2:Array;
if (_arg1.params.type != "str"){
return;
};
_local2 = _arg1.params.dataObj;
if (_local2 == null){
return;
};
switch (_local2[0]){
case "logOK":
this.myUserId = int(_local2[2]);
this.myUserName = _local2[3];
this.amIModerator = (Number(_local2[4]) > 0);
this.State = stJoinMainRoom;
break;
case "logKO":
this.iError = _local2[2];
this.State = stLoginError;
this.iErrorsCount++;
break;
case cmdJoinMainRoom:
if (_local2[2]){
this.activeRoomId = _local2[3];
this.State = stInZone;
} else {
this.State = stMainRoomError;
};
break;
case cmdZoneUsersCount:
this.iUsersCount = _local2[2];
break;
case cmdJoinGameRoom:
if (_local2[2] < 0){
this.activeRoomId = -1;
this.State = OMultiplayer.stGameRoomError;
} else {
this.activeRoomId = _local2[2];
this.State = stInGameRoom;
};
break;
case cmdJoinGame:
if (_local2[2] < 0){
this.activeRoomId = -1;
this.playerId = -1;
this.iOpponentID = -1;
this.iOpponentName = null;
this.State = OMultiplayer.stGameError;
} else {
this.activeRoomId = _local2[2];
this.playerId = _local2[3];
this.iOpponentID = _local2[4];
this.iOpponentName = _local2[5];
this.State = OMultiplayer.stInGame;
};
break;
case cmdMakeTurn:
this.iTurn.push(_local2[2]);
break;
case cmdChatMessage:
this.iCMessages.push(_local2[2]);
break;
case cmdCmd:
this.iCmd = _local2[2];
break;
};
}
public function ChatMessage(_arg1:Array=null):void{
this.sendXtMessage(this.iXTName, OMultiplayer.cmdChatMessage, (_arg1) ? [_arg1.toString()] : ["0"], "str");
}
public function get State():int{
return (this.iState);
}
public function set prGameParams(_arg1:Array):void{
this.iGameParams = _arg1;
}
public function get prUsersCount():int{
return (this.iUsersCount);
}
public function Free():void{
if (this.iConnection){
this.disconnect();
};
this.iConnection = false;
this.iCMessages = null;
removeEventListener(SFSEvent.onConnection, OnConnection);
removeEventListener(SFSEvent.onConnectionLost, OnConnectionLost);
removeEventListener(SFSEvent.onExtensionResponse, OnExtensionResponse);
}
public function Turn(_arg1:Array=null):void{
if (this.iState > stLoginError){
this.sendXtMessage(this.iXTName, OMultiplayer.cmdMakeTurn, (_arg1) ? [_arg1.toString(), this.iOpponentID] : ["0", this.iOpponentID], "str");
};
}
public function get prOpponentTurn():String{
return (((this.iTurn.length)>0) ? this.iTurn[0] : null);
}
public function get prGRoomParams():Array{
return (this.iGRoomParams);
}
public function get prOpponentName():String{
return ((this.iOpponentName) ? this.iOpponentName.slice(0, (this.iOpponentName.length - 3)) : "...");
}
public function get prGameParams():Array{
return (this.iGameParams);
}
public function ClearCmd():void{
this.iCmd = null;
}
public function OnEnterFrame():void{
if (((!(this.isConnected)) && ((this.iState > stConnection)))){
this.iState = stNone;
};
switch (this.iState){
case stInZone:
if ((getTimer() - this.iTimer) > 180000){
this.cmdSend(cmdZoneUsersCount);
this.iTimer = getTimer();
};
break;
};
}
public function get prCmd():String{
return (this.iCmd);
}
public function get prFullOpponentName():String{
return ((this.iOpponentName) ? this.iOpponentName : "...");
}
public function get prPlayerID():int{
return (this.playerId);
}
public function set State(_arg1:int):void{
var aState = _arg1;
if ((((aState > stConnectionError)) && (!(this.isConnected)))){
return;
};
this.iState = aState;
switch (aState){
case stNone:
this.iError = null;
this.iUsersCount = 0;
this.myUserId = -1;
this.myUserName = null;
this.amIModerator = false;
this.playerId = -1;
this.activeRoomId = -1;
this.Free();
break;
case stConnection:
try {
this.connect(this.iAdress, 9339);
this.iConnection = true;
} catch(error:Error) {
OSystem.iUserText2 = "connect error";
this.State = stConnectionError;
};
break;
case stLogin:
this.login(this.iZoneName, this.iName, this.iPassword);
break;
case stJoinMainRoom:
this.cmdSend(cmdJoinMainRoom);
break;
case stInZone:
this.playerId = -1;
this.iOpponentID = -1;
this.iOpponentName = null;
this.iTimer = getTimer();
this.cmdSend(cmdZoneUsersCount);
break;
case stJoinGameRoom:
this.cmdSend(cmdJoinGameRoom, this.iGRoomParams);
break;
case stJoinGame:
this.cmdSend(cmdJoinGame, this.iGameParams);
break;
};
}
public function cmdSend(_arg1:String, _arg2:Array=null):void{
if (this.iState > stLoginError){
this.sendXtMessage(this.iXTName, _arg1, (_arg2) ? _arg2 : [], "str");
};
}
}
}//package ENGINE.SMARTFOX
Section 45
//CGYFilters (FILTERS.CGYFilters)
package FILTERS {
import ENGINE.DISPLAY.*;
import flash.display.*;
import flash.geom.*;
import flash.filters.*;
import ENGINE.CORE.*;
public class CGYFilters {
public static function ApplyMetal2(_arg1, _arg2:Number=1, _arg3:Number=0, _arg4:Number=0, _arg5:int=0xFFFF):OBM{
var scale:Number;
var iBorderX:int;
var iBorderY:int;
var result:Sprite;
var resSprite:Sprite;
var textureSp:Sprite;
var sp0:Sprite;
var sp1:Sprite;
var sp2:Sprite;
var sp21:Sprite;
var sp3:Sprite;
var sp4:Sprite;
var sp5:Sprite;
var bOverlay:Bitmap;
var gb1:GradientBevelFilter;
var bmult:Bitmap;
var gb2:GradientBevelFilter;
var bmult1:Bitmap;
var gb21:GradientBevelFilter;
var bmult11:Bitmap;
var b1:BlurFilter;
var bmult2:Bitmap;
var gb3:GradientBevelFilter;
var bscreen:Bitmap;
var textureSprite:Sprite;
var textureBitmap:Bitmap;
var eraseshape:Bitmap;
var dummyForTexture:Sprite;
var dummyHolder:Sprite;
var eraseSprite:Sprite;
var bmd:BitmapData;
var obm:OBM;
var obm1:OBM;
var obm2:OBM;
var aSprite = _arg1;
var aScale = _arg2;
var aX = _arg3;
var aY = _arg4;
var aColor = _arg5;
while (!(obm)) {
try {
obm = OBM.Make([null, [ODisplay.SpriteLib, aSprite], 1, aX, aY, 0]);
} catch(e:Error) {
trace(e);
};
};
while (!(obm1)) {
try {
obm1 = OBM.Make([null, [ODisplay.SpriteLib, aSprite], 1, aX, aY, 0]);
} catch(e:Error) {
trace(e);
};
};
while (!(obm2)) {
try {
obm2 = OBM.Make([null, [ODisplay.SpriteLib, aSprite], 1, aX, aY, 0]);
} catch(e:Error) {
trace(e);
};
};
scale = (aScale * OGlobal.Scale);
iBorderX = 4;
iBorderY = 8;
result = new Sprite();
resSprite = new Sprite();
result.addChild(resSprite);
resSprite.x = (resSprite.x + iBorderX);
resSprite.y = (resSprite.y + iBorderY);
textureSp = new Sprite();
sp0 = new Sprite();
sp1 = new Sprite();
sp2 = new Sprite();
sp21 = new Sprite();
sp3 = new Sprite();
sp4 = new Sprite();
sp5 = new Sprite();
resSprite.addChild(textureSp);
resSprite.addChild(sp3);
resSprite.addChild(sp2);
resSprite.addChild(sp21);
resSprite.addChild(sp1);
resSprite.addChild(sp0);
resSprite.addChild(sp4);
bOverlay = new Bitmap(obm2.iBM);
bOverlay.bitmapData.colorTransform(bOverlay.getRect(bOverlay), new ColorTransform(0, 0, 0, 1, ((aColor & 0xFF0000) >> 16), ((aColor & 0xFF00) >> 8), (aColor & 0xFF)));
sp4.blendMode = BlendMode.OVERLAY;
sp4.addChild(bOverlay);
gb1 = new GradientBevelFilter((5 * scale), 162, [0, 0, 0, 0xFFFFFF, 0, 0, 0], [0.7, 0.65, 0.85, 0, 0.75, 0.68, 0.69], [0, 32, 58, 128, 201, 237, 0xFF], 5, 5, (1.59 * scale), 3, "inner", true);
bmult = new Bitmap(obm.iBM);
bmult.bitmapData.colorTransform(bmult.getRect(bmult), new ColorTransform(0, 0, 0));
bmult.filters = [gb1];
sp3.alpha = 0.3;
sp3.blendMode = BlendMode.MULTIPLY;
sp3.addChild(bmult);
gb2 = new GradientBevelFilter((6 * scale), 170, [0, 0, 0, 0xFFFFFF, 0, 0, 0], [0.7, 0.65, 0.85, 0, 0.75, 0.7, 0.68], [0, 32, 58, 128, 201, 237, 0xFF], 1, 1, 1.6, (3 * scale), "inner", true);
bmult1 = new Bitmap(obm.iBM);
bmult1.bitmapData.colorTransform(bmult1.getRect(bmult1), new ColorTransform(0, 0, 0));
bmult1.filters = [gb2];
sp2.alpha = 0.6;
sp2.blendMode = BlendMode.MULTIPLY;
sp2.addChild(bmult1);
gb21 = new GradientBevelFilter((5 * scale), 161, [0, 0, 0, 0xFFFFFF, 0, 0, 0], [0.7, 0.65, 0.85, 0, 0.75, 0.7, 0.68], [0, 32, 58, 128, 201, 237, 0xFF], 5, 5, 1.6, (3 * scale), "inner", true);
bmult11 = new Bitmap(obm.iBM);
bmult11.bitmapData.colorTransform(bmult1.getRect(bmult11), new ColorTransform(0, 0, 0));
bmult11.filters = [gb21];
sp21.blendMode = BlendMode.MULTIPLY;
sp21.addChild(bmult11);
b1 = new BlurFilter(20, 16, (3 * scale));
bmult2 = new Bitmap(obm.iBM);
bmult2.bitmapData.colorTransform(bmult2.getRect(bmult2), new ColorTransform(0, 0, 0));
bmult2.filters = [b1];
bmult2.alpha = 0.13;
sp1.blendMode = BlendMode.MULTIPLY;
sp1.addChild(bmult2);
gb3 = new GradientBevelFilter((5 * scale), 208, [0xFFFFFF, 0xFFFFFF, 0xFFFFFF], [0.89, 0, 0.69], [0, 128, 0xFF], 6, 6, 2.2, (3 * scale), "inner", false);
bscreen = new Bitmap(obm.iBM);
bscreen.bitmapData.colorTransform(bscreen.getRect(bscreen), new ColorTransform(0, 0, 0, 1));
bscreen.filters = [gb3];
bscreen.alpha = 0.75;
sp0.blendMode = BlendMode.SCREEN;
sp0.addChild(bscreen);
textureSprite = new Sprite();
textureBitmap = new ((Hitz2L.texture3 as Class));
textureSprite.graphics.beginBitmapFill(textureBitmap.bitmapData);
textureSprite.graphics.drawRect((-(iBorderX) + obm.iBM.rect.left), (-(iBorderY) + obm.iBM.rect.top), (obm.iBM.rect.width + (2 * iBorderX)), (obm.iBM.rect.height + (2 * iBorderY)));
textureSprite.graphics.endFill();
textureSprite.blendMode = BlendMode.LAYER;
eraseshape = new Bitmap(obm1.iBM);
eraseshape.blendMode = BlendMode.ERASE;
dummyForTexture = new Sprite();
dummyForTexture.graphics.beginFill(0);
dummyForTexture.graphics.drawRect((-(iBorderX) + obm.iBM.rect.left), (-(iBorderY) + obm.iBM.rect.top), (obm.iBM.rect.width + (2 * iBorderX)), (obm.iBM.rect.height + (2 * iBorderY)));
dummyForTexture.graphics.endFill();
dummyForTexture.blendMode = BlendMode.LAYER;
dummyHolder = new Sprite();
dummyHolder.addChild(dummyForTexture);
dummyHolder.addChild(eraseshape);
dummyHolder.blendMode = BlendMode.ERASE;
eraseSprite = new Sprite();
eraseSprite.addChild(textureSprite);
eraseSprite.addChild(dummyHolder);
textureSp.addChild(eraseSprite);
textureSp.blendMode = BlendMode.LAYER;
textureSp.alpha = 1;
bmd = new BitmapData((result.width + (iBorderX * 2)), (result.height + (iBorderY * 2)), true, 0);
bmd.draw(result);
return (new OBM(bmd, (-(iBorderX) + obm.iX), (-(iBorderY) + obm.iY), obm.iWidth, obm.iHeight));
}
public static function ApplyStoneNS(_arg1, _arg2:Number=1, _arg3:Number=0, _arg4:Number=0, _arg5:int=0xFFFF):OBM{
var iBorderX:int;
var iBorderY:int;
var result:Sprite;
var resSprite:Sprite;
var textureSp:Sprite;
var sp0:Sprite;
var sp1:Sprite;
var sp2:Sprite;
var sp21:Sprite;
var sp3:Sprite;
var sp4:Sprite;
var bOverlay:Bitmap;
var gb1:GradientBevelFilter;
var bmult:Bitmap;
var gb2:GradientBevelFilter;
var bmult1:Bitmap;
var gb3:GradientBevelFilter;
var bmult2:Bitmap;
var gb4:GradientBevelFilter;
var bscreen:Bitmap;
var textureSprite:Sprite;
var textureBitmap:Bitmap;
var eraseshape:Bitmap;
var dummyForTexture:Sprite;
var dummyHolder:Sprite;
var eraseSprite:Sprite;
var bmd:BitmapData;
var obm:OBM;
var obm1:OBM;
var obm2:OBM;
var aSprite = _arg1;
var aScale = _arg2;
var aX = _arg3;
var aY = _arg4;
var aColor = _arg5;
aScale = (aScale * OGlobal.Scale);
iBorderX = 4;
iBorderY = 8;
while (!(obm)) {
try {
obm = OBM.Make([null, [ODisplay.SpriteLib, aSprite], 1, aX, aY, 0]);
} catch(e:Error) {
trace(e);
};
};
while (!(obm1)) {
try {
obm1 = OBM.Make([null, [ODisplay.SpriteLib, aSprite], 1, aX, aY, 0]);
} catch(e:Error) {
trace(e);
};
};
while (!(obm1)) {
try {
obm2 = OBM.Make([null, [ODisplay.SpriteLib, aSprite], 1, aX, aY, 0]);
} catch(e:Error) {
trace(e);
};
};
result = new Sprite();
resSprite = new Sprite();
result.addChild(resSprite);
resSprite.x = (resSprite.x + iBorderX);
resSprite.y = (resSprite.y + iBorderY);
textureSp = new Sprite();
sp0 = new Sprite();
sp1 = new Sprite();
sp2 = new Sprite();
sp21 = new Sprite();
sp3 = new Sprite();
sp4 = new Sprite();
resSprite.addChild(textureSp);
resSprite.addChild(sp3);
resSprite.addChild(sp2);
resSprite.addChild(sp3);
resSprite.addChild(sp21);
resSprite.addChild(sp0);
resSprite.addChild(sp1);
resSprite.addChild(sp4);
bOverlay = new Bitmap(obm1.iBM);
bOverlay.bitmapData.colorTransform(bOverlay.getRect(bOverlay), new ColorTransform(0, 0, 0, 1, ((aColor & 0xFF0000) >> 16), ((aColor & 0xFF00) >> 8), (aColor & 0xFF)));
bOverlay.blendMode = BlendMode.OVERLAY;
sp4.blendMode = BlendMode.OVERLAY;
sp4.addChild(bOverlay);
gb1 = new GradientBevelFilter((5 * aScale), 161, [0x555555, 0x555555, 0x555555, 0xFFFFFF, 0x555555, 0x555555, 0x555555], [0.7, 0.65, 0.85, 0, 0.75, 0.68], [0, 32, 58, 128, 210, 237, 0xFF], (5 * aScale), (5 * aScale), 1.6, 7, "inner", true);
bmult = new Bitmap(obm.iBM);
bmult.bitmapData.colorTransform(bmult.getRect(bmult), new ColorTransform(0, 0, 0, 1));
bmult.filters = [gb1];
sp3.alpha = 0.5;
sp3.blendMode = BlendMode.MULTIPLY;
sp3.addChild(bmult);
gb2 = new GradientBevelFilter((5 * aScale), 20, [0x555555, 0x555555, 0x555555, 0xFFFFFF, 0x555555, 0x555555, 0x555555], [0.7, 0.65, 0.85, 0, 0.75, 0.68], [0, 32, 58, 128, 210, 237, 0xFF], (5 * aScale), (5 * aScale), 1.6, 7, "inner", true);
bmult1 = new Bitmap(obm.iBM);
bmult1.bitmapData.colorTransform(bmult1.getRect(bmult1), new ColorTransform(0, 0, 0, 1));
bmult1.filters = [gb2];
sp2.alpha = 0.5;
sp2.blendMode = BlendMode.MULTIPLY;
sp2.addChild(bmult1);
sp21.alpha = 0.2;
sp21.blendMode = BlendMode.MULTIPLY;
sp21.addChild(bmult1);
gb3 = new GradientBevelFilter((5 * aScale), 200, [0x555555, 0x555555, 0x555555, 0xFFFFFF, 0x555555, 0x555555, 0x555555], [0.7, 0.65, 0.85, 0, 0.75, 0.68], [0, 32, 58, 128, 210, 237, 0xFF], (5 * aScale), (5 * aScale), 1.6, 7, "inner", true);
bmult2 = new Bitmap(obm.iBM);
bmult2.bitmapData.colorTransform(bmult2.getRect(bmult2), new ColorTransform(0, 0, 0, 1));
bmult2.filters = [gb3];
sp1.alpha = 0.5;
sp1.blendMode = BlendMode.MULTIPLY;
sp1.addChild(bmult2);
gb4 = new GradientBevelFilter((5 * aScale), 208, [0xFFFFFF, 0xFFFFFF, 0xFFFFFF], [0.89, 0, 0.69], [0, 128, 0xFF], (5 * aScale), (5 * aScale), 1.6, 7, "inner", false);
bscreen = new Bitmap(obm.iBM);
bscreen.bitmapData.colorTransform(bscreen.getRect(bscreen), new ColorTransform(0, 0, 0, 1));
bscreen.filters = [gb4];
bscreen.alpha = 0.2;
sp0.blendMode = BlendMode.SCREEN;
sp0.addChild(bscreen);
textureSprite = new Sprite();
textureBitmap = new ((Hitz2L.texture as Class));
textureSprite.graphics.beginBitmapFill(textureBitmap.bitmapData);
textureSprite.graphics.drawRect((-(iBorderX) + obm.iBM.rect.left), (-(iBorderY) + obm.iBM.rect.top), (obm.iBM.rect.width + (2 * iBorderX)), (obm.iBM.rect.height + (2 * iBorderY)));
textureSprite.graphics.endFill();
textureSprite.blendMode = BlendMode.LAYER;
eraseshape = new Bitmap(obm.iBM);
eraseshape.blendMode = BlendMode.ERASE;
dummyForTexture = new Sprite();
dummyForTexture.graphics.beginFill(0);
dummyForTexture.graphics.drawRect((-(iBorderX) + obm.iBM.rect.left), (-(iBorderY) + obm.iBM.rect.top), (obm.iBM.rect.width + (2 * iBorderX)), (obm.iBM.rect.height + (2 * iBorderY)));
dummyForTexture.graphics.endFill();
dummyForTexture.blendMode = BlendMode.LAYER;
dummyHolder = new Sprite();
dummyHolder.addChild(dummyForTexture);
dummyHolder.addChild(eraseshape);
dummyHolder.blendMode = BlendMode.ERASE;
eraseSprite = new Sprite();
eraseSprite.addChild(textureSprite);
eraseSprite.addChild(dummyHolder);
textureSp.addChild(eraseSprite);
textureSp.blendMode = BlendMode.LAYER;
textureSp.alpha = 1;
bmd = new BitmapData((result.width + (iBorderX * 2)), (result.height + (iBorderY * 2)), true, 0);
bmd.draw(result);
return (new OBM(bmd, (-(iBorderX) + obm.iX), (-(iBorderY) + obm.iY), obm.iWidth, obm.iHeight));
}
public static function ApplyCandyDoubleSOnly(_arg1, _arg2:Number=1, _arg3:Number=0, _arg4:Number=0, _arg5:int=0xFFFF):OBM{
var iBorderX:int;
var iBorderY:int;
var result:Sprite;
var resSprite:Sprite;
var sp1:Sprite;
var sp2:Sprite;
var sp3:Sprite;
var sp4:Sprite;
var gg1:GradientGlowFilter;
var bmult1:Bitmap;
var gg2:GradientGlowFilter;
var bmult2:Bitmap;
var gg3:GradientGlowFilter;
var bmult3:Bitmap;
var gg4:GradientGlowFilter;
var bmult4:Bitmap;
var bmd:BitmapData;
var obm:OBM;
var aSprite = _arg1;
var aScale = _arg2;
var aX = _arg3;
var aY = _arg4;
var aColor = _arg5;
while (!(obm)) {
try {
obm = OBM.Make([null, [ODisplay.SpriteLib, aSprite], 1, aX, aY, 0]);
} catch(e:Error) {
trace(e);
};
};
aScale = (aScale * OGlobal.Scale);
iBorderX = (10 * aScale);
iBorderY = (10 * aScale);
result = new Sprite();
resSprite = new Sprite();
result.addChild(resSprite);
resSprite.x = (resSprite.x + iBorderX);
resSprite.y = (resSprite.y + iBorderY);
sp1 = new Sprite();
sp2 = new Sprite();
sp3 = new Sprite();
sp4 = new Sprite();
resSprite.addChild(sp1);
resSprite.addChild(sp2);
resSprite.addChild(sp3);
resSprite.addChild(sp4);
gg1 = new GradientGlowFilter((5 * aScale), 0, [aColor, aColor], [0, 1], [0, 0xFF], 6, 10, 1, 3, "outer", true);
bmult1 = new Bitmap(obm.iBM);
bmult1.bitmapData.colorTransform(bmult1.getRect(bmult1), new ColorTransform(0, 0, 0, 1));
bmult1.filters = [gg1];
sp1.blendMode = BlendMode.MULTIPLY;
sp1.addChild(bmult1);
gg2 = new GradientGlowFilter((5 * aScale), 90, [aColor, aColor], [0, 1], [0, 0xFF], 6, 10, 1, 3, "outer", true);
bmult2 = new Bitmap(obm.iBM);
bmult2.bitmapData.colorTransform(bmult2.getRect(bmult2), new ColorTransform(0, 0, 0, 1));
bmult2.filters = [gg2];
sp2.blendMode = BlendMode.MULTIPLY;
sp2.addChild(bmult2);
gg3 = new GradientGlowFilter((5 * aScale), 180, [aColor, aColor], [0, 1], [0, 0xFF], 6, 10, 1, 3, "outer", true);
bmult3 = new Bitmap(obm.iBM);
bmult3.bitmapData.colorTransform(bmult3.getRect(bmult3), new ColorTransform(0, 0, 0, 1));
bmult3.filters = [gg3];
sp3.blendMode = BlendMode.MULTIPLY;
sp3.addChild(bmult3);
gg4 = new GradientGlowFilter((5 * aScale), 270, [aColor, aColor], [0, 1], [0, 0xFF], 6, 10, 1, 3, "outer", true);
bmult4 = new Bitmap(obm.iBM);
bmult4.bitmapData.colorTransform(bmult4.getRect(bmult4), new ColorTransform(0, 0, 0, 1));
bmult4.filters = [gg4];
sp4.blendMode = BlendMode.MULTIPLY;
sp4.addChild(bmult4);
bmd = new BitmapData(((result.width + (iBorderX * 2)) + 1), ((result.height + (iBorderY * 2)) + 1), true, 0);
bmd.draw(result);
return (new OBM(bmd, (-(iBorderX) + obm.iX), (-(iBorderY) + obm.iY), obm.iWidth, obm.iHeight));
}
public static function ApplyStoneSOnly(_arg1, _arg2:Number=1, _arg3:Number=0, _arg4:Number=0, _arg5:int=0xFFFF):OBM{
var iBorderX:int;
var iBorderY:int;
var result:Sprite;
var resSprite:Sprite;
var sp5:Sprite;
var gg:GradientGlowFilter;
var bmult3:Bitmap;
var bmd:BitmapData;
var obm:OBM;
var aSprite = _arg1;
var aScale = _arg2;
var aX = _arg3;
var aY = _arg4;
var aColor = _arg5;
aScale = (aScale * OGlobal.Scale);
while (!(obm)) {
try {
obm = OBM.Make([null, [ODisplay.SpriteLib, aSprite], 1, aX, aY, 0]);
} catch(e:Error) {
trace(e);
};
};
iBorderX = (4 * OGlobal.Scale);
iBorderY = (8 * OGlobal.Scale);
result = new Sprite();
resSprite = new Sprite();
result.addChild(resSprite);
resSprite.x = (resSprite.x + iBorderX);
resSprite.y = (resSprite.y + iBorderY);
sp5 = new Sprite();
resSprite.addChild(sp5);
gg = new GradientGlowFilter((3 * aScale), 45, [aColor, aColor], [0, 1], [0, 0xFF], (4 * aScale), (8 * aScale), 1, 3, "outer", true);
bmult3 = new Bitmap(obm.iBM);
bmult3.bitmapData.colorTransform(bmult3.getRect(bmult3), new ColorTransform(0, 0, 0, 1));
bmult3.filters = [gg];
sp5.blendMode = BlendMode.MULTIPLY;
sp5.addChild(bmult3);
bmd = new BitmapData((result.width + (iBorderX * 2)), (result.height + (iBorderY * 2)), true, 0);
bmd.draw(result);
return (new OBM(bmd, (-(iBorderX) + obm.iX), (-(iBorderY) + obm.iY), obm.iWidth, obm.iHeight));
}
public static function ApplyMetal(_arg1, _arg2:Number=1, _arg3:Number=0, _arg4:Number=0, _arg5:int=0xFFFF):OBM{
var scale:Number;
var iBorderX:int;
var iBorderY:int;
var result:Sprite;
var resSprite:Sprite;
var textureSp:Sprite;
var sp0:Sprite;
var sp1:Sprite;
var sp2:Sprite;
var sp21:Sprite;
var sp3:Sprite;
var sp4:Sprite;
var sp5:Sprite;
var bOverlay:Bitmap;
var gb1:GradientBevelFilter;
var bmult:Bitmap;
var gb2:GradientBevelFilter;
var bmult1:Bitmap;
var gb21:GradientBevelFilter;
var bmult11:Bitmap;
var b1:BlurFilter;
var bmult2:Bitmap;
var gb3:GradientBevelFilter;
var bscreen:Bitmap;
var textureSprite:Sprite;
var textureBitmap:Bitmap;
var eraseshape:Bitmap;
var dummyForTexture:Sprite;
var dummyHolder:Sprite;
var eraseSprite:Sprite;
var bmd:BitmapData;
var obm:OBM;
var obm1:OBM;
var obm2:OBM;
var aSprite = _arg1;
var aScale = _arg2;
var aX = _arg3;
var aY = _arg4;
var aColor = _arg5;
while (!(obm)) {
try {
obm = OBM.Make([null, [ODisplay.SpriteLib, aSprite], 1, aX, aY, 0]);
} catch(e:Error) {
trace(e);
};
};
while (!(obm1)) {
try {
obm1 = OBM.Make([null, [ODisplay.SpriteLib, aSprite], 1, aX, aY, 0]);
} catch(e:Error) {
trace(e);
};
};
while (!(obm2)) {
try {
obm2 = OBM.Make([null, [ODisplay.SpriteLib, aSprite], 1, aX, aY, 0]);
} catch(e:Error) {
trace(e);
};
};
scale = (aScale * OGlobal.Scale);
iBorderX = 4;
iBorderY = 8;
result = new Sprite();
resSprite = new Sprite();
result.addChild(resSprite);
resSprite.x = (resSprite.x + iBorderX);
resSprite.y = (resSprite.y + iBorderY);
textureSp = new Sprite();
sp0 = new Sprite();
sp1 = new Sprite();
sp2 = new Sprite();
sp21 = new Sprite();
sp3 = new Sprite();
sp4 = new Sprite();
sp5 = new Sprite();
resSprite.addChild(textureSp);
resSprite.addChild(sp3);
resSprite.addChild(sp2);
resSprite.addChild(sp21);
resSprite.addChild(sp1);
resSprite.addChild(sp0);
resSprite.addChild(sp4);
bOverlay = new Bitmap(obm2.iBM);
bOverlay.bitmapData.colorTransform(bOverlay.getRect(bOverlay), new ColorTransform(0, 0, 0, 1, ((aColor & 0xFF0000) >> 16), ((aColor & 0xFF00) >> 8), (aColor & 0xFF)));
sp4.blendMode = BlendMode.OVERLAY;
sp4.addChild(bOverlay);
gb1 = new GradientBevelFilter((5 * scale), 162, [0x333333, 0x333333, 0x333333, 0xFFFFFF, 0x333333, 0x333333, 0x333333], [0.7, 0.65, 0.65, 0, 0.75, 0.68, 0.69], [0, 32, 58, 128, 201, 237, 0xFF], 5, 5, (1.59 * scale), 3, "inner", true);
bmult = new Bitmap(obm.iBM);
bmult.bitmapData.colorTransform(bmult.getRect(bmult), new ColorTransform(0, 0, 0));
bmult.filters = [gb1];
sp3.alpha = 0.3;
sp3.blendMode = BlendMode.MULTIPLY;
sp3.addChild(bmult);
gb2 = new GradientBevelFilter((6 * scale), 170, [0x333333, 0x333333, 0x333333, 0xFFFFFF, 0x333333, 0x333333, 0x333333], [0.7, 0.65, 0.65, 0, 0.75, 0.7, 0.68], [0, 32, 58, 128, 201, 237, 0xFF], 1, 1, 1.6, (3 * scale), "inner", true);
bmult1 = new Bitmap(obm.iBM);
bmult1.bitmapData.colorTransform(bmult1.getRect(bmult1), new ColorTransform(0, 0, 0));
bmult1.filters = [gb2];
sp2.blendMode = BlendMode.MULTIPLY;
sp2.alpha = 0.6;
sp2.addChild(bmult1);
gb21 = new GradientBevelFilter((5 * scale), 161, [0x333333, 0x333333, 0x333333, 0xFFFFFF, 0x333333, 0x333333, 0x333333], [0.7, 0.65, 0.65, 0, 0.75, 0.7, 0.68], [0, 32, 58, 128, 201, 237, 0xFF], 5, 5, 1.6, (3 * scale), "inner", true);
bmult11 = new Bitmap(obm.iBM);
bmult11.bitmapData.colorTransform(bmult1.getRect(bmult11), new ColorTransform(0, 0, 0));
bmult11.filters = [gb21];
sp21.blendMode = BlendMode.MULTIPLY;
sp21.addChild(bmult11);
b1 = new BlurFilter(20, 16, (3 * scale));
bmult2 = new Bitmap(obm.iBM);
bmult2.bitmapData.colorTransform(bmult2.getRect(bmult2), new ColorTransform(0, 0, 0));
bmult2.filters = [b1];
bmult2.alpha = 0.13;
sp1.blendMode = BlendMode.MULTIPLY;
sp1.addChild(bmult2);
gb3 = new GradientBevelFilter((5 * scale), 208, [0xFFFFFF, 0xFFFFFF, 0xFFFFFF], [0.89, 0, 0.69], [0, 128, 0xFF], 6, 6, 2.2, (3 * scale), "inner", false);
bscreen = new Bitmap(obm.iBM);
bscreen.bitmapData.colorTransform(bscreen.getRect(bscreen), new ColorTransform(0, 0, 0, 1));
bscreen.filters = [gb3];
bscreen.alpha = 0.75;
sp0.blendMode = BlendMode.SCREEN;
sp0.addChild(bscreen);
textureSprite = new Sprite();
textureBitmap = new ((Hitz2L.texture1 as Class));
textureSprite.graphics.beginBitmapFill(textureBitmap.bitmapData);
textureSprite.graphics.drawRect((-(iBorderX) + obm.iBM.rect.left), (-(iBorderY) + obm.iBM.rect.top), (obm.iBM.rect.width + (2 * iBorderX)), (obm.iBM.rect.height + (2 * iBorderY)));
textureSprite.graphics.endFill();
textureSprite.blendMode = BlendMode.LAYER;
eraseshape = new Bitmap(obm1.iBM);
eraseshape.blendMode = BlendMode.ERASE;
dummyForTexture = new Sprite();
dummyForTexture.graphics.beginFill(0);
dummyForTexture.graphics.drawRect((-(iBorderX) + obm.iBM.rect.left), (-(iBorderY) + obm.iBM.rect.top), (obm.iBM.rect.width + (2 * iBorderX)), (obm.iBM.rect.height + (2 * iBorderY)));
dummyForTexture.graphics.endFill();
dummyForTexture.blendMode = BlendMode.LAYER;
dummyHolder = new Sprite();
dummyHolder.addChild(dummyForTexture);
dummyHolder.addChild(eraseshape);
dummyHolder.blendMode = BlendMode.ERASE;
eraseSprite = new Sprite();
eraseSprite.addChild(textureSprite);
eraseSprite.addChild(dummyHolder);
textureSp.addChild(eraseSprite);
textureSp.blendMode = BlendMode.LAYER;
textureSp.alpha = 1;
bmd = new BitmapData((result.width + (iBorderX * 2)), (result.height + (iBorderY * 2)), true, 0);
bmd.draw(result);
return (new OBM(bmd, (-(iBorderX) + obm.iX), (-(iBorderY) + obm.iY), obm.iWidth, obm.iHeight));
}
public static function ApplyDarkMetal(_arg1, _arg2:Number=1, _arg3:Number=0, _arg4:Number=0, _arg5:int=0xFFFF):OBM{
var scale:Number;
var sprite:Sprite;
var resSprite:Sprite;
var sp0:Sprite;
var sp1:Sprite;
var sp2:Sprite;
var sp3:Sprite;
var sp4:Sprite;
var sp5:Sprite;
var bOverlay:Bitmap;
var gb1:GradientBevelFilter;
var bmult:Bitmap;
var gb2:GradientBevelFilter;
var bmult1:Bitmap;
var gb3:GradientBevelFilter;
var bscreen:Bitmap;
var bmd:BitmapData;
var obm:OBM;
var obm1:OBM;
var aSprite = _arg1;
var aScale = _arg2;
var aX = _arg3;
var aY = _arg4;
var aColor = _arg5;
scale = (aScale * OGlobal.Scale);
while (!(obm)) {
try {
obm = OBM.Make([null, [ODisplay.SpriteLib, aSprite], 1, aX, aY, 0]);
} catch(e:Error) {
trace(e);
};
};
while (!(obm1)) {
try {
obm1 = OBM.Make([null, [ODisplay.SpriteLib, aSprite], 1, aX, aY, 0]);
} catch(e:Error) {
trace(e);
};
};
sprite = ODisplay.SpriteLib([null, aSprite]);
resSprite = new Sprite();
sp0 = new Sprite();
sp1 = new Sprite();
sp2 = new Sprite();
sp3 = new Sprite();
sp4 = new Sprite();
sp5 = new Sprite();
resSprite.addChild(sp1);
resSprite.addChild(sp2);
resSprite.addChild(sp3);
resSprite.addChild(sp0);
resSprite.addChild(sp4);
bOverlay = new Bitmap(obm.iBM);
bOverlay.bitmapData.colorTransform(bOverlay.getRect(bOverlay), new ColorTransform(0, 0, 0, 1, ((aColor & 0xFF0000) >> 16), ((aColor & 0xFF00) >> 8), (aColor & 0xFF)));
bOverlay.blendMode = BlendMode.OVERLAY;
sp4.blendMode = BlendMode.OVERLAY;
sp4.addChild(bOverlay);
gb1 = new GradientBevelFilter((5 * scale), 161, [0x333333, 0x333333, 0x333333, 0xFFFFFF, 0x333333, 0x333333, 0x333333], [0.7, 0.65, 0.85, 0, 0.75, 0.68], [0, 32, 58, 128, 210, 237, 0xFF], 5, 5, (2.2 * scale), 5, "inner", true);
bmult = new Bitmap(obm1.iBM);
bmult.bitmapData.colorTransform(bmult.getRect(bmult), new ColorTransform(0xFF, 0xFF, 0xFF));
bmult.blendMode = BlendMode.MULTIPLY;
bmult.filters = [gb1];
sp3.blendMode = BlendMode.SCREEN;
sp3.addChild(bmult);
gb2 = new GradientBevelFilter((6 * scale), 170, [0x333333, 0x333333, 0x333333, 0xFFFFFF, 0x333333, 0x333333, 0x333333], [0.7, 0.65, 0.85, 0, 0.75, 0.68], [0, 32, 58, 128, 210, 237, 0xFF], 1, 1, (1.6 * scale), 5, "inner", true);
bmult1 = new Bitmap(obm1.iBM);
bmult1.bitmapData.colorTransform(bmult1.getRect(bmult1), new ColorTransform(0xFF, 0xFF, 0xFF));
bmult1.blendMode = BlendMode.MULTIPLY;
bmult1.filters = [gb2];
sp2.blendMode = BlendMode.MULTIPLY;
sp2.addChild(bmult1);
gb3 = new GradientBevelFilter((5 * scale), 208, [0xFFFFFF, 0xFFFFFF, 0xFFFFFF], [0.89, 0, 0.69], [0, 128, 0xFF], 6, 6, (2.2 * scale), 5, "inner", false);
bscreen = new Bitmap(obm1.iBM);
bscreen.bitmapData.colorTransform(bscreen.getRect(bscreen), new ColorTransform(0xFF, 0xFF, 0xFF, 1));
bscreen.blendMode = BlendMode.SCREEN;
bscreen.filters = [gb3];
bscreen.alpha = 0.7;
sp0.blendMode = BlendMode.SCREEN;
sp0.addChild(bscreen);
bmd = new BitmapData(resSprite.width, resSprite.height, true, 0xFFFFFF);
bmd.draw(resSprite);
return (new OBM(bmd, obm.iX, obm.iY, obm.iWidth, obm.iHeight));
}
public static function ApplyCandyNS(_arg1, _arg2:Number=1, _arg3:Number=0, _arg4:Number=0, _arg5:int=0xFFFF):OBM{
var iBorderX:int;
var iBorderY:int;
var scale:Number;
var sprite:Sprite;
var resSprite:Sprite;
var sp0:Sprite;
var sp1:Sprite;
var sp2:Sprite;
var sp3:Sprite;
var sp4:Sprite;
var sp5:Sprite;
var textureSp:Sprite;
var bOverlay:Bitmap;
var gb1:GradientBevelFilter;
var bmult:Bitmap;
var gb2:GradientBevelFilter;
var bmult1:Bitmap;
var gb3:GradientBevelFilter;
var bscreen:Bitmap;
var textureSprite:Sprite;
var textureBitmap:Bitmap;
var eraseshape:Bitmap;
var dummyForTexture:Sprite;
var dummyHolder:Sprite;
var eraseSprite:Sprite;
var bmd:BitmapData;
var obm:OBM;
var obm1:OBM;
var aSprite = _arg1;
var aScale = _arg2;
var aX = _arg3;
var aY = _arg4;
var aColor = _arg5;
iBorderX = 4;
iBorderY = 8;
scale = (aScale * OGlobal.Scale);
while (!(obm)) {
try {
obm = OBM.Make([null, [ODisplay.SpriteLib, aSprite], 1, aX, aY, 0]);
} catch(e:Error) {
trace(e);
};
};
while (!(obm1)) {
try {
obm1 = OBM.Make([null, [ODisplay.SpriteLib, aSprite], 1, aX, aY, 0]);
} catch(e:Error) {
trace(e);
};
};
sprite = ODisplay.SpriteLib([null, aSprite]);
resSprite = new Sprite();
sp0 = new Sprite();
sp1 = new Sprite();
sp2 = new Sprite();
sp3 = new Sprite();
sp4 = new Sprite();
sp5 = new Sprite();
textureSp = new Sprite();
resSprite.addChild(textureSp);
resSprite.addChild(sp1);
resSprite.addChild(sp2);
resSprite.addChild(sp3);
resSprite.addChild(sp0);
resSprite.addChild(sp4);
bOverlay = new Bitmap(obm.iBM);
bOverlay.bitmapData.colorTransform(bOverlay.getRect(bOverlay), new ColorTransform(0, 0, 0, 1, ((aColor & 0xFF0000) >> 16), ((aColor & 0xFF00) >> 8), (aColor & 0xFF)));
bOverlay.blendMode = BlendMode.OVERLAY;
sp4.blendMode = BlendMode.OVERLAY;
sp4.addChild(bOverlay);
gb1 = new GradientBevelFilter((5 * scale), 161, [0x333333, 0x333333, 0x333333, 0xFFFFFF, 0x333333, 0x333333, 0x333333], [0.7, 0.65, 0.85, 0, 0.75, 0.68], [0, 32, 58, 128, 210, 237, 0xFF], 5, 5, (2.2 * scale), 5, "inner", true);
bmult = new Bitmap(obm1.iBM);
bmult.bitmapData.colorTransform(bmult.getRect(bmult), new ColorTransform(0xFF, 0xFF, 0xFF));
bmult.blendMode = BlendMode.MULTIPLY;
bmult.filters = [gb1];
sp3.blendMode = BlendMode.SCREEN;
sp3.addChild(bmult);
gb2 = new GradientBevelFilter((6 * scale), 170, [0x333333, 0x333333, 0x333333, 0xFFFFFF, 0x333333, 0x333333, 0x333333], [0.9, 0.65, 0.95, 0, 0.95, 0.68], [0, 32, 58, 128, 210, 237, 0xFF], 1, 1, (1.6 * scale), 5, "inner", true);
bmult1 = new Bitmap(obm1.iBM);
bmult1.bitmapData.colorTransform(bmult1.getRect(bmult1), new ColorTransform(0xFF, 0xFF, 0xFF));
bmult1.blendMode = BlendMode.MULTIPLY;
bmult1.filters = [gb2];
sp2.blendMode = BlendMode.MULTIPLY;
sp2.addChild(bmult1);
gb3 = new GradientBevelFilter((5 * scale), 208, [0xFFFFFF, 0xFFFFFF, 0xFFFFFF], [0.89, 0, 0.69], [0, 128, 0xFF], 6, 6, (2.2 * scale), 5, "inner", true);
bscreen = new Bitmap(obm1.iBM);
bscreen.bitmapData.colorTransform(bscreen.getRect(bscreen), new ColorTransform(0xFF, 0xFF, 0xFF, 1));
bscreen.blendMode = BlendMode.SCREEN;
bscreen.filters = [gb3];
bscreen.alpha = 0.9;
sp0.blendMode = BlendMode.SCREEN;
sp0.addChild(bscreen);
textureSprite = new Sprite();
textureBitmap = new ((Hitz2L.texture2 as Class));
textureSprite.graphics.beginBitmapFill(textureBitmap.bitmapData);
textureSprite.graphics.drawRect((-(iBorderX) + obm.iBM.rect.left), (-(iBorderY) + obm.iBM.rect.top), (obm.iBM.rect.width + (2 * iBorderX)), (obm.iBM.rect.height + (2 * iBorderY)));
textureSprite.graphics.endFill();
textureSprite.blendMode = BlendMode.LAYER;
eraseshape = new Bitmap(obm1.iBM);
eraseshape.blendMode = BlendMode.ERASE;
dummyForTexture = new Sprite();
dummyForTexture.graphics.beginFill(0);
dummyForTexture.graphics.drawRect((-(iBorderX) + obm.iBM.rect.left), (-(iBorderY) + obm.iBM.rect.top), (obm.iBM.rect.width + (2 * iBorderX)), (obm.iBM.rect.height + (2 * iBorderY)));
dummyForTexture.graphics.endFill();
dummyForTexture.blendMode = BlendMode.LAYER;
dummyHolder = new Sprite();
dummyHolder.addChild(dummyForTexture);
dummyHolder.addChild(eraseshape);
dummyHolder.blendMode = BlendMode.ERASE;
eraseSprite = new Sprite();
eraseSprite.addChild(textureSprite);
eraseSprite.addChild(dummyHolder);
textureSp.addChild(eraseSprite);
textureSp.blendMode = BlendMode.LAYER;
textureSp.alpha = 1;
bmd = new BitmapData((resSprite.width + (iBorderX * 2)), (resSprite.height + (iBorderY * 2)), true, 0xFFFFFF);
bmd.draw(resSprite);
return (new OBM(bmd, obm.iX, obm.iY, obm.iWidth, obm.iHeight));
}
public static function ApplyCandySOnly(_arg1, _arg2:Number=1, _arg3:Number=0, _arg4:Number=0, _arg5:int=0xFFFF):OBM{
var iBorderX:int;
var iBorderY:int;
var result:Sprite;
var resSprite:Sprite;
var sp5:Sprite;
var gg:GradientGlowFilter;
var bmult3:Bitmap;
var bmd:BitmapData;
var obm:OBM;
var aSprite = _arg1;
var aScale = _arg2;
var aX = _arg3;
var aY = _arg4;
var aColor = _arg5;
while (!(obm)) {
try {
obm = OBM.Make([null, [ODisplay.SpriteLib, aSprite], 1, aX, aY, 0]);
} catch(e:Error) {
trace(e);
};
};
aScale = (aScale * OGlobal.Scale);
iBorderX = (4 * OGlobal.Scale);
iBorderY = (8 * OGlobal.Scale);
result = new Sprite();
resSprite = new Sprite();
result.addChild(resSprite);
resSprite.x = (resSprite.x + iBorderX);
resSprite.y = (resSprite.y + iBorderY);
sp5 = new Sprite();
resSprite.addChild(sp5);
gg = new GradientGlowFilter((3 * aScale), 45, [aColor, aColor], [0, 1], [0, 0xFF], (4 * aScale), (8 * aScale), 1, 3, "outer", true);
bmult3 = new Bitmap(obm.iBM);
bmult3.bitmapData.colorTransform(bmult3.getRect(bmult3), new ColorTransform(0, 0, 0, 1));
bmult3.filters = [gg];
sp5.blendMode = BlendMode.MULTIPLY;
sp5.addChild(bmult3);
bmd = new BitmapData((result.width + (iBorderX * 2)), (result.height + (iBorderY * 2)), true, 0);
bmd.draw(result);
return (new OBM(bmd, (-(iBorderX) + obm.iX), (-(iBorderY) + obm.iY), obm.iWidth, obm.iHeight));
}
}
}//package FILTERS
Section 46
//Room (it.gotoandplay.smartfoxserver.data.Room)
package it.gotoandplay.smartfoxserver.data {
public class Room {
private var maxUsers:int;
private var userList:Array;
private var name:String;
private var userCount:int;
private var specCount:int;
private var id:int;
private var myPlayerIndex:int;
private var priv:Boolean;
private var temp:Boolean;
private var limbo:Boolean;
private var maxSpectators:int;
private var game:Boolean;
private var variables:Array;
public function Room(_arg1:int, _arg2:String, _arg3:int, _arg4:int, _arg5:Boolean, _arg6:Boolean, _arg7:Boolean, _arg8:Boolean, _arg9:int=0, _arg10:int=0){
this.id = _arg1;
this.name = _arg2;
this.maxSpectators = _arg4;
this.maxUsers = _arg3;
this.temp = _arg5;
this.game = _arg6;
this.priv = _arg7;
this.limbo = _arg8;
this.userCount = _arg9;
this.specCount = _arg10;
this.userList = [];
this.variables = [];
}
public function getVariable(_arg1:String):Object{
return (variables[_arg1]);
}
public function addUser(_arg1:User, _arg2:int):void{
userList[_arg2] = _arg1;
userCount++;
}
public function getName():String{
return (this.name);
}
public function getId():int{
return (this.id);
}
public function setIsLimbo(_arg1:Boolean):void{
this.limbo = _arg1;
}
public function clearVariables():void{
this.variables = [];
}
public function isTemp():Boolean{
return (this.temp);
}
public function getMaxSpectators():int{
return (this.maxSpectators);
}
public function setVariables(_arg1:Array):void{
this.variables = _arg1;
}
public function isGame():Boolean{
return (this.game);
}
public function getUser(_arg1):User{
var _local2:User;
var _local3:String;
var _local4:User;
_local2 = null;
if (typeof(_arg1) == "number"){
_local2 = userList[_arg1];
} else {
if (typeof(_arg1) == "string"){
for (_local3 in userList) {
_local4 = this.userList[_local3];
if (_local4.getName() == _arg1){
_local2 = _local4;
break;
};
};
};
};
return (_local2);
}
public function setUserCount(_arg1:int):void{
this.userCount = _arg1;
}
public function getVariables():Array{
return (variables);
}
public function getUserCount():int{
return (this.userCount);
}
public function isLimbo():Boolean{
return (this.limbo);
}
public function getSpectatorCount():int{
return (this.specCount);
}
public function setSpectatorCount(_arg1:int):void{
this.specCount = _arg1;
}
public function setMyPlayerIndex(_arg1:int):void{
this.myPlayerIndex = _arg1;
}
public function removeUser(_arg1:int):void{
delete userList[_arg1];
userCount--;
}
public function getMyPlayerIndex():int{
return (this.myPlayerIndex);
}
public function isPrivate():Boolean{
return (this.priv);
}
public function getMaxUsers():int{
return (this.maxUsers);
}
public function getUserList():Array{
return (this.userList);
}
}
}//package it.gotoandplay.smartfoxserver.data
Section 47
//User (it.gotoandplay.smartfoxserver.data.User)
package it.gotoandplay.smartfoxserver.data {
public class User {
private var isSpec:Boolean;
private var name:String;
private var id:int;
private var pId:int;
private var variables:Array;
private var isMod:Boolean;
public function User(_arg1:int, _arg2:String){
this.id = _arg1;
this.name = _arg2;
this.variables = [];
this.isSpec = false;
this.isMod = false;
}
public function setModerator(_arg1:Boolean):void{
this.isMod = _arg1;
}
public function getName():String{
return (this.name);
}
public function getVariables():Array{
return (this.variables);
}
public function getId():int{
return (this.id);
}
public function getPlayerId():int{
return (this.pId);
}
public function setPlayerId(_arg1:int):void{
this.pId = _arg1;
}
public function setIsSpectator(_arg1:Boolean):void{
this.isSpec = _arg1;
}
public function isSpectator():Boolean{
return (this.isSpec);
}
public function clearVariables():void{
this.variables = [];
}
public function getVariable(_arg1:String):Object{
return (this.variables[_arg1]);
}
public function setVariables(_arg1:Array):void{
this.variables = _arg1;
}
public function isModerator():Boolean{
return (this.isMod);
}
}
}//package it.gotoandplay.smartfoxserver.data
Section 48
//ExtHandler (it.gotoandplay.smartfoxserver.handlers.ExtHandler)
package it.gotoandplay.smartfoxserver.handlers {
import it.gotoandplay.smartfoxserver.*;
import it.gotoandplay.smartfoxserver.util.*;
public class ExtHandler implements IMessageHandler {
private var sfs:SmartFoxClient;
public function ExtHandler(_arg1:SmartFoxClient){
this.sfs = _arg1;
}
public function handleMessage(_arg1:Object, _arg2:String):void{
var _local3:Object;
var _local4:SFSEvent;
var _local5:XML;
var _local6:String;
var _local7:int;
var _local8:String;
var _local9:Object;
if (_arg2 == SmartFoxClient.XTMSG_TYPE_XML){
_local5 = (_arg1 as XML);
_local6 = _local5.body.@action;
_local7 = int(_local5.body.@id);
if (_local6 == "xtRes"){
_local8 = _local5.body.toString();
_local9 = ObjectSerializer.getInstance().deserialize(_local8);
_local3 = {};
_local3.dataObj = _local9;
_local3.type = _arg2;
_local4 = new SFSEvent(SFSEvent.onExtensionResponse, _local3);
sfs.dispatchEvent(_local4);
};
} else {
if (_arg2 == SmartFoxClient.XTMSG_TYPE_JSON){
_local3 = {};
_local3.dataObj = _arg1.o;
_local3.type = _arg2;
_local4 = new SFSEvent(SFSEvent.onExtensionResponse, _local3);
sfs.dispatchEvent(_local4);
} else {
if (_arg2 == SmartFoxClient.XTMSG_TYPE_STR){
_local3 = {};
_local3.dataObj = _arg1;
_local3.type = _arg2;
_local4 = new SFSEvent(SFSEvent.onExtensionResponse, _local3);
sfs.dispatchEvent(_local4);
};
};
};
}
}
}//package it.gotoandplay.smartfoxserver.handlers
Section 49
//IMessageHandler (it.gotoandplay.smartfoxserver.handlers.IMessageHandler)
package it.gotoandplay.smartfoxserver.handlers {
public interface IMessageHandler {
function handleMessage(_arg1:Object, _arg2:String):void;
}
}//package it.gotoandplay.smartfoxserver.handlers
Section 50
//SysHandler (it.gotoandplay.smartfoxserver.handlers.SysHandler)
package it.gotoandplay.smartfoxserver.handlers {
import it.gotoandplay.smartfoxserver.data.*;
import it.gotoandplay.smartfoxserver.*;
import it.gotoandplay.smartfoxserver.util.*;
import flash.utils.*;
public class SysHandler implements IMessageHandler {
private var sfs:SmartFoxClient;
private var handlersTable:Array;
public function SysHandler(_arg1:SmartFoxClient){
this.sfs = _arg1;
handlersTable = [];
handlersTable["apiOK"] = this.handleApiOK;
handlersTable["apiKO"] = this.handleApiKO;
handlersTable["logOK"] = this.handleLoginOk;
handlersTable["logKO"] = this.handleLoginKo;
handlersTable["rmList"] = this.handleRoomList;
handlersTable["uCount"] = this.handleUserCountChange;
handlersTable["joinOK"] = this.handleJoinOk;
handlersTable["joinKO"] = this.handleJoinKo;
handlersTable["uER"] = this.handleUserEnterRoom;
handlersTable["userGone"] = this.handleUserLeaverRoom;
handlersTable["pubMsg"] = this.handlePublicMessage;
handlersTable["prvMsg"] = this.handlePrivateMessage;
handlersTable["dmnMsg"] = this.handleAdminMessage;
handlersTable["modMsg"] = this.handleModMessage;
handlersTable["dataObj"] = this.handleASObject;
handlersTable["rVarsUpdate"] = this.handleRoomVarsUpdate;
handlersTable["roomAdd"] = this.handleRoomAdded;
handlersTable["roomDel"] = this.handleRoomDeleted;
handlersTable["rndK"] = this.handleRandomKey;
handlersTable["roundTripRes"] = this.handleRoundTripBench;
handlersTable["uVarsUpdate"] = this.handleUserVarsUpdate;
handlersTable["createRmKO"] = this.handleCreateRoomError;
handlersTable["bList"] = this.handleBuddyList;
handlersTable["bUpd"] = this.handleBuddyListUpdate;
handlersTable["bAdd"] = this.handleBuddyAdded;
handlersTable["roomB"] = this.handleBuddyRoom;
handlersTable["leaveRoom"] = this.handleLeaveRoom;
handlersTable["swSpec"] = this.handleSpectatorSwitched;
}
private function handleRoomDeleted(_arg1:Object):void{
var _local2:int;
var _local3:Array;
var _local4:Object;
var _local5:SFSEvent;
_local2 = int(_arg1.body.rm.@id);
_local3 = sfs.getAllRooms();
_local4 = {};
_local4.room = _local3[_local2];
delete _local3[_local2];
_local5 = new SFSEvent(SFSEvent.onRoomDeleted, _local4);
sfs.dispatchEvent(_local5);
}
public function handleMessage(_arg1:Object, _arg2:String):void{
var _local3:XML;
var _local4:String;
var _local5:Function;
_local3 = (_arg1 as XML);
_local4 = _local3.body.@action;
_local5 = handlersTable[_local4];
if (_local5 != null){
_local5.apply(this, [_arg1]);
} else {
trace(("Unknown sys command: " + _local4));
};
}
public function handleUserEnterRoom(_arg1:Object):void{
var _local2:int;
var _local3:int;
var _local4:String;
var _local5:Boolean;
var _local6:Boolean;
var _local7:int;
var _local8:XMLList;
var _local9:Room;
var _local10:User;
var _local11:Object;
var _local12:SFSEvent;
_local2 = int(_arg1.body.@r);
_local3 = int(_arg1.body.u.@i);
_local4 = _arg1.body.u.n;
_local5 = (_arg1.body.u.@m == "1");
_local6 = (_arg1.body.u.@s == "1");
_local7 = ((_arg1.body.u.@p)!=null) ? int(_arg1.body.u.@p) : -1;
_local8 = _arg1.body.u.vars["var"];
_local9 = sfs.getRoom(_local2);
_local10 = new User(_local3, _local4);
_local10.setModerator(_local5);
_local10.setIsSpectator(_local6);
_local10.setPlayerId(_local7);
_local9.addUser(_local10, _local3);
if (_arg1.body.u.vars.toString().length > 0){
populateVariables(_local10.getVariables(), _arg1.body.u);
};
_local11 = {};
_local11.roomId = _local2;
_local11.user = _local10;
_local12 = new SFSEvent(SFSEvent.onUserEnterRoom, _local11);
sfs.dispatchEvent(_local12);
}
public function handleUserVarsUpdate(_arg1:Object):void{
var _local2:int;
var _local3:int;
var _local4:User;
var _local5:Array;
var _local6:Object;
var _local7:SFSEvent;
_local2 = int(_arg1.body.@r);
_local3 = int(_arg1.body.user.@id);
_local4 = sfs.getRoom(_local2).getUser(_local3);
_local5 = [];
if (_arg1.body.vars.toString().length > 0){
populateVariables(_local4.getVariables(), _arg1.body, _local5);
};
_local6 = {};
_local6.user = _local4;
_local6.changedVars = _local5;
_local7 = new SFSEvent(SFSEvent.onUserVariablesUpdate, _local6);
sfs.dispatchEvent(_local7);
}
public function handleUserLeaverRoom(_arg1:Object):void{
var _local2:int;
var _local3:int;
var _local4:Room;
var _local5:String;
var _local6:Object;
var _local7:SFSEvent;
_local2 = int(_arg1.body.user.@id);
_local3 = int(_arg1.body.@r);
_local4 = sfs.getRoom(_local3);
_local5 = _local4.getUser(_local2).getName();
_local4.removeUser(_local2);
_local6 = {};
_local6.roomId = _local3;
_local6.userId = _local2;
_local6.userName = _local5;
_local7 = new SFSEvent(SFSEvent.onUserLeaveRoom, _local6);
sfs.dispatchEvent(_local7);
}
public function handlePrivateMessage(_arg1:Object):void{
var _local2:int;
var _local3:int;
var _local4:String;
var _local5:User;
var _local6:Object;
var _local7:SFSEvent;
_local2 = int(_arg1.body.@r);
_local3 = int(_arg1.body.user.@id);
_local4 = _arg1.body.txt;
_local5 = sfs.getRoom(_local2).getUser(_local3);
_local6 = {};
_local6.message = Entities.decodeEntities(_local4);
_local6.sender = _local5;
_local6.roomId = _local2;
_local6.userId = _local3;
_local7 = new SFSEvent(SFSEvent.onPrivateMessage, _local6);
sfs.dispatchEvent(_local7);
}
private function handleCreateRoomError(_arg1:Object):void{
var _local2:String;
var _local3:Object;
var _local4:SFSEvent;
_local2 = _arg1.body.room.@e;
_local3 = {};
_local3.error = _local2;
_local4 = new SFSEvent(SFSEvent.onCreateRoomError, _local3);
sfs.dispatchEvent(_local4);
}
private function handleBuddyRoom(_arg1:Object):void{
var _local2:String;
var _local3:Array;
var _local4:int;
var _local5:Object;
var _local6:SFSEvent;
_local2 = _arg1.body.br.@r;
_local3 = _local2.split(",");
_local4 = 0;
while (_local4 < _local3.length) {
_local3[_local4] = int(_local3[_local4]);
_local4++;
};
_local5 = {};
_local5.idList = _local3;
_local6 = new SFSEvent(SFSEvent.onBuddyRoom, _local5);
sfs.dispatchEvent(_local6);
}
private function handleBuddyListUpdate(_arg1:Object):void{
var _local2:Object;
var _local3:SFSEvent;
var _local4:Object;
var _local5:XMLList;
var _local6:Object;
var _local7:Boolean;
var _local8:String;
var _local9:XML;
_local2 = {};
_local3 = null;
if (_arg1.body.b != null){
_local4 = {};
_local4.isOnline = ((_arg1.body.b.@s == "1")) ? true : false;
_local4.name = _arg1.body.b.n.toString();
_local4.id = _arg1.body.b.@i;
_local4.variables = {};
_local5 = _arg1.body.b.vs;
if (_local5.toString().length > 0){
for each (_local9 in _local5.v) {
_local4.variables[_local9.@n.toString()] = _local9.v.toString();
};
};
_local6 = null;
_local7 = false;
for (_local8 in sfs.buddyList) {
_local6 = sfs.buddyList[_local8];
if (_local6.name == _local4.name){
sfs.buddyList[_local8] = _local4;
_local7 = true;
break;
};
};
_local2.buddy = _local4;
_local3 = new SFSEvent(SFSEvent.onBuddyListUpdate, _local2);
sfs.dispatchEvent(_local3);
} else {
_local2.error = _arg1.body.err.toString();
_local3 = new SFSEvent(SFSEvent.onBuddyListError, _local2);
sfs.dispatchEvent(_local3);
};
}
public function handleUserCountChange(_arg1:Object):void{
var _local2:int;
var _local3:int;
var _local4:int;
var _local5:Room;
var _local6:Object;
var _local7:SFSEvent;
_local2 = int(_arg1.body.@u);
_local3 = int(_arg1.body.@s);
_local4 = int(_arg1.body.@r);
_local5 = sfs.getAllRooms()[_local4];
if (_local5 != null){
_local5.setUserCount(_local2);
_local5.setSpectatorCount(_local3);
_local6 = {};
_local6.room = _local5;
_local7 = new SFSEvent(SFSEvent.onUserCountChange, _local6);
sfs.dispatchEvent(_local7);
};
}
private function handleRandomKey(_arg1:Object):void{
var _local2:String;
var _local3:Object;
var _local4:SFSEvent;
_local2 = _arg1.body.k.toString();
_local3 = {};
_local3.key = _local2;
_local4 = new SFSEvent(SFSEvent.onRandomKey, _local3);
sfs.dispatchEvent(_local4);
}
public function handlePublicMessage(_arg1:Object):void{
var _local2:int;
var _local3:int;
var _local4:String;
var _local5:User;
var _local6:Object;
var _local7:SFSEvent;
_local2 = int(_arg1.body.@r);
_local3 = int(_arg1.body.user.@id);
_local4 = _arg1.body.txt;
_local5 = sfs.getRoom(_local2).getUser(_local3);
_local6 = {};
_local6.message = Entities.decodeEntities(_local4);
_local6.sender = _local5;
_local6.roomId = _local2;
_local7 = new SFSEvent(SFSEvent.onPublicMessage, _local6);
sfs.dispatchEvent(_local7);
}
public function handleAdminMessage(_arg1:Object):void{
var _local2:int;
var _local3:int;
var _local4:String;
var _local5:Object;
var _local6:SFSEvent;
_local2 = int(_arg1.body.@r);
_local3 = int(_arg1.body.user.@id);
_local4 = _arg1.body.txt;
_local5 = {};
_local5.message = Entities.decodeEntities(_local4);
_local6 = new SFSEvent(SFSEvent.onAdminMessage, _local5);
sfs.dispatchEvent(_local6);
}
public function dispatchDisconnection():void{
var _local1:SFSEvent;
_local1 = new SFSEvent(SFSEvent.onConnectionLost, null);
sfs.dispatchEvent(_local1);
}
private function handleSpectatorSwitched(_arg1:Object):void{
var _local2:int;
var _local3:Object;
var _local4:SFSEvent;
_local2 = int(_arg1.body.rm.@id);
sfs.playerId = int(_arg1.body.pid.@id);
_local3 = {};
_local3.success = (sfs.playerId > 0);
_local3.newId = sfs.playerId;
_local3.room = sfs.getRoom(_local2);
_local4 = new SFSEvent(SFSEvent.onSpectatorSwitched, _local3);
sfs.dispatchEvent(_local4);
}
public function handleLoginOk(_arg1:Object):void{
var _local2:int;
var _local3:int;
var _local4:String;
var _local5:Object;
var _local6:SFSEvent;
_local2 = int(_arg1.body.login.@id);
_local3 = int(_arg1.body.login.@mod);
_local4 = _arg1.body.login.@n;
sfs.amIModerator = (_local3 == 1);
sfs.myUserId = _local2;
sfs.myUserName = _local4;
sfs.playerId = -1;
_local5 = {};
_local5.success = true;
_local5.name = _local4;
_local5.error = "";
_local6 = new SFSEvent(SFSEvent.onLogin, _local5);
sfs.dispatchEvent(_local6);
sfs.getRoomList();
}
public function handleRoomVarsUpdate(_arg1:Object):void{
var _local2:int;
var _local3:int;
var _local4:Room;
var _local5:Array;
var _local6:Object;
var _local7:SFSEvent;
_local2 = int(_arg1.body.@r);
_local3 = int(_arg1.body.user.@id);
_local4 = sfs.getRoom(_local2);
_local5 = [];
if (_arg1.body.vars.toString().length > 0){
populateVariables(_local4.getVariables(), _arg1.body, _local5);
};
_local6 = {};
_local6.room = _local4;
_local6.changedVars = _local5;
_local7 = new SFSEvent(SFSEvent.onRoomVariablesUpdate, _local6);
sfs.dispatchEvent(_local7);
}
public function handleRoomList(_arg1:Object):void{
var _local2:Array;
var _local3:XML;
var _local4:Object;
var _local5:SFSEvent;
var _local6:int;
var _local7:Room;
_local2 = sfs.getAllRooms();
for each (_local3 in _arg1.body.rmList.rm) {
_local6 = int(_local3.@id);
_local7 = new Room(_local6, _local3.n, int(_local3.@maxu), int(_local3.@maxs), (_local3.@temp == "1"), (_local3.@game == "1"), (_local3.@priv == "1"), (_local3.@lmb == "1"), int(_local3.@ucnt), int(_local3.@scnt));
if (_local3.vars.toString().length > 0){
populateVariables(_local7.getVariables(), _local3);
};
_local2[_local6] = _local7;
};
_local4 = {};
_local4.roomList = _local2;
_local5 = new SFSEvent(SFSEvent.onRoomListUpdate, _local4);
sfs.dispatchEvent(_local5);
}
private function handleBuddyAdded(_arg1:Object):void{
var _local2:Object;
var _local3:XMLList;
var _local4:Object;
var _local5:SFSEvent;
var _local6:XML;
_local2 = {};
_local2.isOnline = ((_arg1.body.b.@s == "1")) ? true : false;
_local2.name = _arg1.body.b.n.toString();
_local2.id = _arg1.body.b.@i;
_local2.variables = {};
_local3 = _arg1.body.b.vs;
if (_local3.toString().length > 0){
for each (_local6 in _local3.v) {
_local2.variables[_local6.@n.toString()] = _local6.v.toString();
};
};
sfs.buddyList.push(_local2);
_local4 = {};
_local4.list = sfs.buddyList;
_local5 = new SFSEvent(SFSEvent.onBuddyList, _local4);
sfs.dispatchEvent(_local5);
}
private function handleRoomAdded(_arg1:Object):void{
var _local2:int;
var _local3:String;
var _local4:int;
var _local5:int;
var _local6:Boolean;
var _local7:Boolean;
var _local8:Boolean;
var _local9:Boolean;
var _local10:Room;
var _local11:Array;
var _local12:Object;
var _local13:SFSEvent;
_local2 = int(_arg1.body.rm.@id);
_local3 = _arg1.body.rm.name;
_local4 = int(_arg1.body.rm.@max);
_local5 = int(_arg1.body.rm.@spec);
_local6 = ((_arg1.body.rm.@temp == "1")) ? true : false;
_local7 = ((_arg1.body.rm.@game == "1")) ? true : false;
_local8 = ((_arg1.body.rm.@priv == "1")) ? true : false;
_local9 = ((_arg1.body.rm.@limbo == "1")) ? true : false;
_local10 = new Room(_local2, _local3, _local4, _local5, _local6, _local7, _local8, _local9);
_local11 = sfs.getAllRooms();
_local11[_local2] = _local10;
if (_arg1.body.rm.vars.toString().length > 0){
populateVariables(_local10.getVariables(), _arg1.body.rm);
};
_local12 = {};
_local12.room = _local10;
_local13 = new SFSEvent(SFSEvent.onRoomAdded, _local12);
sfs.dispatchEvent(_local13);
}
private function populateVariables(_arg1:Array, _arg2:Object, _arg3:Array=null):void{
var _local4:XML;
var _local5:String;
var _local6:String;
var _local7:String;
for each (_local4 in _arg2.vars["var"]) {
_local5 = _local4.@n;
_local6 = _local4.@t;
_local7 = _local4;
if (_arg3 != null){
_arg3.push(_local5);
_arg3[_local5] = true;
};
if (_local6 == "b"){
_arg1[_local5] = Boolean(_local7);
} else {
if (_local6 == "n"){
_arg1[_local5] = Number(_local7);
} else {
if (_local6 == "s"){
_arg1[_local5] = _local7;
} else {
if (_local6 == "x"){
delete _arg1[_local5];
};
};
};
};
};
}
private function handleLeaveRoom(_arg1:Object):void{
var _local2:int;
var _local3:Object;
var _local4:SFSEvent;
_local2 = int(_arg1.body.rm.@id);
_local3 = {};
_local3.roomId = _local2;
_local4 = new SFSEvent(SFSEvent.onRoomLeft, _local3);
sfs.dispatchEvent(_local4);
}
public function handleLoginKo(_arg1:Object):void{
var _local2:Object;
var _local3:SFSEvent;
_local2 = {};
_local2.success = false;
_local2.error = _arg1.body.login.@e;
_local3 = new SFSEvent(SFSEvent.onLogin, _local2);
sfs.dispatchEvent(_local3);
}
public function handleModMessage(_arg1:Object):void{
var _local2:int;
var _local3:int;
var _local4:String;
var _local5:User;
var _local6:Object;
var _local7:SFSEvent;
_local2 = int(_arg1.body.@r);
_local3 = int(_arg1.body.user.@id);
_local4 = _arg1.body.txt;
_local5 = sfs.getRoom(_local2).getUser(_local3);
_local6 = {};
_local6.message = Entities.decodeEntities(_local4);
_local6.sender = _local5;
_local7 = new SFSEvent(SFSEvent.onModeratorMessage, _local6);
sfs.dispatchEvent(_local7);
}
public function handleApiOK(_arg1:Object):void{
var _local2:SFSEvent;
sfs.isConnected = true;
_local2 = new SFSEvent(SFSEvent.onConnection, {success:true});
sfs.dispatchEvent(_local2);
}
private function handleRoundTripBench(_arg1:Object):void{
var _local2:int;
var _local3:int;
var _local4:Object;
var _local5:SFSEvent;
_local2 = getTimer();
_local3 = (_local2 - sfs.getBenchStartTime());
_local4 = {};
_local4.elapsed = _local3;
_local5 = new SFSEvent(SFSEvent.onRoundTripResponse, _local4);
sfs.dispatchEvent(_local5);
}
public function handleJoinOk(_arg1:Object):void{
var _local2:int;
var _local3:XMLList;
var _local4:XMLList;
var _local5:int;
var _local6:Room;
var _local7:XML;
var _local8:Object;
var _local9:SFSEvent;
var _local10:String;
var _local11:int;
var _local12:Boolean;
var _local13:Boolean;
var _local14:int;
var _local15:User;
_local2 = int(_arg1.body.@r);
_local3 = _arg1.body;
_local4 = _arg1.body.uLs.u;
_local5 = int(_arg1.body.pid.@id);
sfs.activeRoomId = _local2;
_local6 = sfs.getRoom(_local2);
sfs.playerId = _local5;
_local6.setMyPlayerIndex(_local5);
if (_local3.vars.toString().length > 0){
_local6.clearVariables();
populateVariables(_local6.getVariables(), _local3);
};
for each (_local7 in _local4) {
_local10 = _local7.n;
_local11 = int(_local7.@i);
_local12 = ((_local7.@m == "1")) ? true : false;
_local13 = ((_local7.@s == "1")) ? true : false;
_local14 = ((_local7.p == undefined)) ? -1 : int(_local7.p);
_local15 = new User(_local11, _local10);
_local15.setModerator(_local12);
_local15.setIsSpectator(_local13);
_local15.setPlayerId(_local14);
if (_local7.vars.toString().length > 0){
populateVariables(_local15.getVariables(), _local7);
};
_local6.addUser(_local15, _local11);
};
sfs.changingRoom = false;
_local8 = {};
_local8.room = _local6;
_local9 = new SFSEvent(SFSEvent.onJoinRoom, _local8);
sfs.dispatchEvent(_local9);
}
public function handleJoinKo(_arg1:Object):void{
var _local2:Object;
var _local3:SFSEvent;
sfs.changingRoom = false;
_local2 = {};
_local2.error = _arg1.body.error.@msg;
_local3 = new SFSEvent(SFSEvent.onJoinRoomError, _local2);
sfs.dispatchEvent(_local3);
}
public function handleASObject(_arg1:Object):void{
var _local2:int;
var _local3:int;
var _local4:String;
var _local5:User;
var _local6:Object;
var _local7:Object;
var _local8:SFSEvent;
_local2 = int(_arg1.body.@r);
_local3 = int(_arg1.body.user.@id);
_local4 = _arg1.body.dataObj;
_local5 = sfs.getRoom(_local2).getUser(_local3);
_local6 = ObjectSerializer.getInstance().deserialize(new XML(_local4));
_local7 = {};
_local7.obj = _local6;
_local7.sender = _local5;
_local8 = new SFSEvent(SFSEvent.onObjectReceived, _local7);
sfs.dispatchEvent(_local8);
}
private function handleBuddyList(_arg1:Object):void{
var _local2:XMLList;
var _local3:Object;
var _local4:Object;
var _local5:SFSEvent;
var _local6:XML;
var _local7:XMLList;
var _local8:XML;
_local2 = _arg1.body.bList;
_local4 = {};
_local5 = null;
if (((!((_local2 == null))) && (!((_local2.b.length == null))))){
if (_local2.toString().length > 0){
for each (_local6 in _local2.b) {
_local3 = {};
_local3.isOnline = ((_local6.@s == "1")) ? true : false;
_local3.name = _local6.n.toString();
_local3.id = _local6.@i;
_local3.variables = {};
_local7 = _local6.vs;
if (_local7.toString().length > 0){
for each (_local8 in _local7.v) {
_local3.variables[_local8.@n.toString()] = _local8.v.toString();
};
};
sfs.buddyList.push(_local3);
};
};
_local4.list = sfs.buddyList;
_local5 = new SFSEvent(SFSEvent.onBuddyList, _local4);
sfs.dispatchEvent(_local5);
} else {
_local4.error = _arg1.body.err.toString();
_local5 = new SFSEvent(SFSEvent.onBuddyListError, _local4);
sfs.dispatchEvent(_local5);
};
}
public function handleApiKO(_arg1:Object):void{
var _local2:Object;
var _local3:SFSEvent;
_local2 = {};
_local2.success = false;
_local2.error = "API are obsolete, please upgrade";
_local3 = new SFSEvent(SFSEvent.onConnection, _local2);
sfs.dispatchEvent(_local3);
}
}
}//package it.gotoandplay.smartfoxserver.handlers
Section 51
//JSON (it.gotoandplay.smartfoxserver.json.JSON)
package it.gotoandplay.smartfoxserver.json {
public class JSON {
public static function decode(_arg1:String):Object{
var _local2:JSONDecoder;
_local2 = new JSONDecoder(_arg1);
return (_local2.getObject());
}
public static function encode(_arg1:Object):String{
var _local2:JSONEncoder;
_local2 = new JSONEncoder(_arg1);
return (_local2.getString());
}
}
}//package it.gotoandplay.smartfoxserver.json
Section 52
//JSONDecoder (it.gotoandplay.smartfoxserver.json.JSONDecoder)
package it.gotoandplay.smartfoxserver.json {
public class JSONDecoder {
private var tokenizer:JSONTokenizer;
private var token:JSONToken;
private var obj:Object;
public function JSONDecoder(_arg1:String){
tokenizer = new JSONTokenizer(_arg1);
nextToken();
obj = parseValue();
}
private function parseValue():Object{
switch (token.type){
case JSONTokenType.LEFT_BRACE:
return (parseObject());
case JSONTokenType.LEFT_BRACKET:
return (parseArray());
case JSONTokenType.STRING:
case JSONTokenType.NUMBER:
case JSONTokenType.TRUE:
case JSONTokenType.FALSE:
case JSONTokenType.NULL:
return (token.value);
default:
tokenizer.parseError(("Unexpected " + token.value));
};
return (null);
}
private function nextToken():JSONToken{
return ((token = tokenizer.getNextToken()));
}
private function parseObject():Object{
var _local1:Object;
var _local2:String;
_local1 = new Object();
nextToken();
if (token.type == JSONTokenType.RIGHT_BRACE){
return (_local1);
};
while (true) {
if (token.type == JSONTokenType.STRING){
_local2 = String(token.value);
nextToken();
if (token.type == JSONTokenType.COLON){
nextToken();
_local1[_local2] = parseValue();
nextToken();
if (token.type == JSONTokenType.RIGHT_BRACE){
return (_local1);
};
if (token.type == JSONTokenType.COMMA){
nextToken();
} else {
tokenizer.parseError(("Expecting } or , but found " + token.value));
};
} else {
tokenizer.parseError(("Expecting : but found " + token.value));
};
} else {
tokenizer.parseError(("Expecting string but found " + token.value));
};
};
return (null);
}
private function parseArray():Array{
var _local1:Array;
_local1 = new Array();
nextToken();
if (token.type == JSONTokenType.RIGHT_BRACKET){
return (_local1);
};
while (true) {
_local1.push(parseValue());
nextToken();
if (token.type == JSONTokenType.RIGHT_BRACKET){
return (_local1);
};
if (token.type == JSONTokenType.COMMA){
nextToken();
} else {
tokenizer.parseError(("Expecting ] or , but found " + token.value));
};
};
return (null);
}
public function getObject():Object{
return (obj);
}
}
}//package it.gotoandplay.smartfoxserver.json
Section 53
//JSONEncoder (it.gotoandplay.smartfoxserver.json.JSONEncoder)
package it.gotoandplay.smartfoxserver.json {
public class JSONEncoder {
private var jsonString:String;
public function JSONEncoder(_arg1:Object){
jsonString = convertToString(_arg1);
}
private function arrayToString(_arg1:Array):String{
var _local2:String;
var _local3:int;
_local2 = "";
_local3 = 0;
while (_local3 < _arg1.length) {
if (_local2.length > 0){
_local2 = (_local2 + ",");
};
_local2 = (_local2 + convertToString(_arg1[_local3]));
_local3++;
};
return ((("[" + _local2) + "]"));
}
private function convertToString(_arg1:Object):String{
if ((_arg1 is String)){
return (escapeString((_arg1 as String)));
};
if ((_arg1 is Number)){
return ((isFinite((_arg1 as Number))) ? _arg1.toString() : "null");
} else {
if ((_arg1 is Boolean)){
return ((_arg1) ? "true" : "false");
} else {
if ((_arg1 is Array)){
return (arrayToString((_arg1 as Array)));
};
if ((((_arg1 is Object)) && (!((_arg1 == null))))){
return (objectToString(_arg1));
};
};
};
return ("null");
}
private function escapeString(_arg1:String):String{
var _local2:String;
var _local3:String;
var _local4:Number;
var _local5:int;
var _local6:String;
var _local7:String;
_local2 = "";
_local4 = _arg1.length;
_local5 = 0;
while (_local5 < _local4) {
_local3 = _arg1.charAt(_local5);
switch (_local3){
case "\"":
_local2 = (_local2 + "\\\"");
break;
case "\\":
_local2 = (_local2 + "\\\\");
break;
case "\b":
_local2 = (_local2 + "\\b");
break;
case "\f":
_local2 = (_local2 + "\\f");
break;
case "\n":
_local2 = (_local2 + "\\n");
break;
case "\r":
_local2 = (_local2 + "\\r");
break;
case "\t":
_local2 = (_local2 + "\\t");
break;
default:
if (_local3 < " "){
_local6 = _local3.charCodeAt(0).toString(16);
_local7 = ((_local6.length == 2)) ? "00" : "000";
_local2 = (_local2 + (("\\u" + _local7) + _local6));
} else {
_local2 = (_local2 + _local3);
};
};
_local5++;
};
return ((("\"" + _local2) + "\""));
}
private function objectToString(_arg1:Object):String{
var _local2:String;
var _local3:Object;
var _local4:String;
_local2 = "";
for (_local4 in _arg1) {
_local3 = _arg1[_local4];
if ((_local3 is Function)){
} else {
if (_local2.length > 0){
_local2 = (_local2 + ",");
};
_local2 = (_local2 + ((escapeString(_local4) + ":") + convertToString(_local3)));
};
};
return ((("{" + _local2) + "}"));
}
public function getString():String{
return (jsonString);
}
}
}//package it.gotoandplay.smartfoxserver.json
Section 54
//JSONParseError (it.gotoandplay.smartfoxserver.json.JSONParseError)
package it.gotoandplay.smartfoxserver.json {
public class JSONParseError extends Error {
private var _text:String;
private var _location:int;
public function JSONParseError(_arg1:String="", _arg2:int=0, _arg3:String=""){
super(_arg1);
_location = _arg2;
_text = _arg3;
}
public function get text():String{
return (_text);
}
public function get location():int{
return (_location);
}
}
}//package it.gotoandplay.smartfoxserver.json
Section 55
//JSONToken (it.gotoandplay.smartfoxserver.json.JSONToken)
package it.gotoandplay.smartfoxserver.json {
public class JSONToken {
private var _value:Object;
private var _type:int;
public function JSONToken(_arg1:int=-1, _arg2:Object=null){
_type = _arg1;
_value = _arg2;
}
public function set value(_arg1:Object):void{
_value = _arg1;
}
public function get value():Object{
return (_value);
}
public function set type(_arg1:int):void{
_type = _arg1;
}
public function get type():int{
return (_type);
}
}
}//package it.gotoandplay.smartfoxserver.json
Section 56
//JSONTokenizer (it.gotoandplay.smartfoxserver.json.JSONTokenizer)
package it.gotoandplay.smartfoxserver.json {
public class JSONTokenizer {
private var loc:int;
private var ch:String;
private var obj:Object;
private var jsonString:String;
public function JSONTokenizer(_arg1:String){
jsonString = _arg1;
loc = 0;
nextChar();
}
private function skipComments():void{
if (ch == "/"){
nextChar();
switch (ch){
case "/":
do {
nextChar();
} while (((!((ch == "\n"))) && (!((ch == "")))));
nextChar();
break;
case "*":
nextChar();
while (true) {
if (ch == "*"){
nextChar();
if (ch == "/"){
nextChar();
break;
};
} else {
nextChar();
};
if (ch == ""){
parseError("Multi-line comment not closed");
};
};
break;
default:
parseError((("Unexpected " + ch) + " encountered (expecting '/' or '*' )"));
};
};
}
private function isDigit(_arg1:String):Boolean{
return ((((_arg1 >= "0")) && ((_arg1 <= "9"))));
}
private function readNumber():JSONToken{
var _local1:JSONToken;
var _local2:String;
var _local3:Number;
_local1 = new JSONToken();
_local1.type = JSONTokenType.NUMBER;
_local2 = "";
if (ch == "-"){
_local2 = (_local2 + "-");
nextChar();
};
while (isDigit(ch)) {
_local2 = (_local2 + ch);
nextChar();
};
if (ch == "."){
_local2 = (_local2 + ".");
nextChar();
while (isDigit(ch)) {
_local2 = (_local2 + ch);
nextChar();
};
};
_local3 = Number(_local2);
if (isFinite(_local3)){
_local1.value = _local3;
return (_local1);
};
parseError((("Number " + _local3) + " is not valid!"));
return (null);
}
private function nextChar():String{
return ((ch = jsonString.charAt(loc++)));
}
private function isHexDigit(_arg1:String):Boolean{
var _local2:String;
_local2 = _arg1.toUpperCase();
return (((isDigit(_arg1)) || ((((_local2 >= "A")) && ((_local2 <= "F"))))));
}
public function getNextToken():JSONToken{
var _local1:JSONToken;
var _local2:String;
var _local3:String;
var _local4:String;
_local1 = new JSONToken();
skipIgnored();
switch (ch){
case "{":
_local1.type = JSONTokenType.LEFT_BRACE;
_local1.value = "{";
nextChar();
break;
case "}":
_local1.type = JSONTokenType.RIGHT_BRACE;
_local1.value = "}";
nextChar();
break;
case "[":
_local1.type = JSONTokenType.LEFT_BRACKET;
_local1.value = "[";
nextChar();
break;
case "]":
_local1.type = JSONTokenType.RIGHT_BRACKET;
_local1.value = "]";
nextChar();
break;
case ",":
_local1.type = JSONTokenType.COMMA;
_local1.value = ",";
nextChar();
break;
case ":":
_local1.type = JSONTokenType.COLON;
_local1.value = ":";
nextChar();
break;
case "t":
_local2 = ((("t" + nextChar()) + nextChar()) + nextChar());
if (_local2 == "true"){
_local1.type = JSONTokenType.TRUE;
_local1.value = true;
nextChar();
} else {
parseError(("Expecting 'true' but found " + _local2));
};
break;
case "f":
_local3 = (((("f" + nextChar()) + nextChar()) + nextChar()) + nextChar());
if (_local3 == "false"){
_local1.type = JSONTokenType.FALSE;
_local1.value = false;
nextChar();
} else {
parseError(("Expecting 'false' but found " + _local3));
};
break;
case "n":
_local4 = ((("n" + nextChar()) + nextChar()) + nextChar());
if (_local4 == "null"){
_local1.type = JSONTokenType.NULL;
_local1.value = null;
nextChar();
} else {
parseError(("Expecting 'null' but found " + _local4));
};
break;
case "\"":
_local1 = readString();
break;
default:
if (((isDigit(ch)) || ((ch == "-")))){
_local1 = readNumber();
} else {
if (ch == ""){
return (null);
};
parseError((("Unexpected " + ch) + " encountered"));
};
};
return (_local1);
}
private function skipWhite():void{
while (isSpace(ch)) {
nextChar();
};
}
public function parseError(_arg1:String):void{
throw (new JSONParseError(_arg1, loc, jsonString));
}
private function skipIgnored():void{
skipWhite();
skipComments();
skipWhite();
}
private function isSpace(_arg1:String):Boolean{
return ((((_arg1 == " ")) || ((_arg1 == "\t"))));
}
private function readString():JSONToken{
var _local1:JSONToken;
var _local2:String;
var _local3:String;
var _local4:int;
_local1 = new JSONToken();
_local1.type = JSONTokenType.STRING;
_local2 = "";
nextChar();
while (((!((ch == "\""))) && (!((ch == ""))))) {
if (ch == "\\"){
nextChar();
switch (ch){
case "\"":
_local2 = (_local2 + "\"");
break;
case "/":
_local2 = (_local2 + "/");
break;
case "\\":
_local2 = (_local2 + "\\");
break;
case "b":
_local2 = (_local2 + "\b");
break;
case "f":
_local2 = (_local2 + "\f");
break;
case "n":
_local2 = (_local2 + "\n");
break;
case "r":
_local2 = (_local2 + "\r");
break;
case "t":
_local2 = (_local2 + "\t");
break;
case "u":
_local3 = "";
_local4 = 0;
while (_local4 < 4) {
if (!isHexDigit(nextChar())){
parseError((" Excepted a hex digit, but found: " + ch));
};
_local3 = (_local3 + ch);
_local4++;
};
_local2 = (_local2 + String.fromCharCode(parseInt(_local3, 16)));
break;
default:
_local2 = (_local2 + ("\\" + ch));
};
} else {
_local2 = (_local2 + ch);
};
nextChar();
};
if (ch == ""){
parseError("Unterminated string literal");
};
nextChar();
_local1.value = _local2;
return (_local1);
}
}
}//package it.gotoandplay.smartfoxserver.json
Section 57
//JSONTokenType (it.gotoandplay.smartfoxserver.json.JSONTokenType)
package it.gotoandplay.smartfoxserver.json {
public class JSONTokenType {
public static const NUMBER:int = 11;
public static const FALSE:int = 8;
public static const RIGHT_BRACKET:int = 4;
public static const NULL:int = 9;
public static const TRUE:int = 7;
public static const RIGHT_BRACE:int = 2;
public static const UNKNOWN:int = -1;
public static const COMMA:int = 0;
public static const LEFT_BRACKET:int = 3;
public static const STRING:int = 10;
public static const LEFT_BRACE:int = 1;
public static const COLON:int = 6;
}
}//package it.gotoandplay.smartfoxserver.json
Section 58
//Entities (it.gotoandplay.smartfoxserver.util.Entities)
package it.gotoandplay.smartfoxserver.util {
public class Entities {
private static var hexTable:Array = new Array();
private static var ascTab:Array = [];
private static var ascTabRev:Array = [];
public static function decodeEntities(_arg1:String):String{
var _local2:String;
var _local3:String;
var _local4:String;
var _local5:String;
var _local6:String;
var _local7:int;
_local7 = 0;
_local2 = "";
while (_local7 < _arg1.length) {
_local3 = _arg1.charAt(_local7);
if (_local3 == "&"){
_local4 = _local3;
do {
_local7++;
_local5 = _arg1.charAt(_local7);
_local4 = (_local4 + _local5);
} while (_local5 != ";");
_local6 = ascTabRev[_local4];
if (_local6 != null){
_local2 = (_local2 + _local6);
} else {
_local2 = (_local2 + String.fromCharCode(getCharCode(_local4)));
};
} else {
_local2 = (_local2 + _local3);
};
_local7++;
};
trace(((("DECODE: " + _arg1) + ", ") + _local2));
return (_local2);
}
public static function encodeEntities(_arg1:String):String{
var _local2:String;
var _local3:int;
var _local4:String;
var _local5:int;
_local2 = "";
_local3 = 0;
while (_local3 < _arg1.length) {
_local4 = _arg1.charAt(_local3);
_local5 = _arg1.charCodeAt(_local3);
if ((((((_local5 == 9)) || ((_local5 == 10)))) || ((_local5 == 13)))){
_local2 = (_local2 + _local4);
} else {
if ((((_local5 >= 32)) && ((_local5 <= 126)))){
if (ascTab[_local4] != null){
_local2 = (_local2 + ascTab[_local4]);
} else {
_local2 = (_local2 + _local4);
};
} else {
_local2 = (_local2 + _local4);
};
};
_local3++;
};
return (_local2);
}
public static function getCharCode(_arg1:String):Number{
var _local2:String;
_local2 = _arg1.substr(3, _arg1.length);
_local2 = _local2.substr(0, (_local2.length - 1));
return (Number(("0x" + _local2)));
}
ascTab[">"] = ">";
ascTab["<"] = "<";
ascTab["&"] = "&";
ascTab["'"] = "'";
ascTab["\""] = """;
ascTabRev[">"] = ">";
ascTabRev["<"] = "<";
ascTabRev["&"] = "&";
ascTabRev["'"] = "'";
ascTabRev["""] = "\"";
hexTable["0"] = 0;
hexTable["1"] = 1;
hexTable["2"] = 2;
hexTable["3"] = 3;
hexTable["4"] = 4;
hexTable["5"] = 5;
hexTable["6"] = 6;
hexTable["7"] = 7;
hexTable["8"] = 8;
hexTable["9"] = 9;
hexTable["A"] = 10;
hexTable["B"] = 11;
hexTable["C"] = 12;
hexTable["D"] = 13;
hexTable["E"] = 14;
hexTable["F"] = 15;
}
}//package it.gotoandplay.smartfoxserver.util
Section 59
//ObjectSerializer (it.gotoandplay.smartfoxserver.util.ObjectSerializer)
package it.gotoandplay.smartfoxserver.util {
public class ObjectSerializer {
private var eof:String;
private var debug:Boolean;
private var tabs:String;
private static var instance:ObjectSerializer;
public function ObjectSerializer(_arg1:Boolean=false){
this.tabs = "\t\t\t\t\t\t\t\t\t\t\t\t\t";
setDebug(_arg1);
}
public function serialize(_arg1:Object):String{
var _local2:Object;
_local2 = {};
obj2xml(_arg1, _local2);
return (_local2.xmlStr);
}
private function obj2xml(_arg1:Object, _arg2:Object, _arg3:int=0, _arg4:String=""):void{
var _local5:String;
var _local6:String;
var _local7:String;
var _local8:*;
if (_arg3 == 0){
_arg2.xmlStr = ("<dataObj>" + this.eof);
} else {
if (this.debug){
_arg2.xmlStr = (_arg2.xmlStr + this.tabs.substr(0, _arg3));
};
_local6 = ((_arg1 is Array)) ? "a" : "o";
_arg2.xmlStr = (_arg2.xmlStr + ((((("<obj t='" + _local6) + "' o='") + _arg4) + "'>") + this.eof));
};
for (_local5 in _arg1) {
_local7 = typeof(_arg1[_local5]);
_local8 = _arg1[_local5];
if ((((((((_local7 == "boolean")) || ((_local7 == "number")))) || ((_local7 == "string")))) || ((_local7 == "null")))){
if (_local7 == "boolean"){
_local8 = Number(_local8);
} else {
if (_local7 == "null"){
_local7 = "x";
_local8 = "";
} else {
if (_local7 == "string"){
_local8 = Entities.encodeEntities(_local8);
};
};
};
if (this.debug){
_arg2.xmlStr = (_arg2.xmlStr + this.tabs.substr(0, (_arg3 + 1)));
};
_arg2.xmlStr = (_arg2.xmlStr + ((((((("<var n='" + _local5) + "' t='") + _local7.substr(0, 1)) + "'>") + _local8) + "</var>") + this.eof));
} else {
if (_local7 == "object"){
obj2xml(_local8, _arg2, (_arg3 + 1), _local5);
if (this.debug){
_arg2.xmlStr = (_arg2.xmlStr + this.tabs.substr(0, (_arg3 + 1)));
};
_arg2.xmlStr = (_arg2.xmlStr + ("</obj>" + this.eof));
};
};
};
if (_arg3 == 0){
_arg2.xmlStr = (_arg2.xmlStr + ("</dataObj>" + this.eof));
};
}
private function setDebug(_arg1:Boolean):void{
this.debug = _arg1;
if (this.debug){
this.eof = "\n";
} else {
this.eof = "";
};
}
private function xml2obj(_arg1:XML, _arg2:Object):void{
var _local3:int;
var _local4:XMLList;
var _local5:String;
var _local6:XML;
var _local7:String;
var _local8:String;
var _local9:String;
var _local10:String;
var _local11:String;
_local3 = 0;
_local4 = _arg1.children();
for each (_local6 in _local4) {
_local5 = _local6.name().toString();
if (_local5 == "obj"){
_local7 = _local6.@o;
_local8 = _local6.@t;
if (_local8 == "a"){
_arg2[_local7] = [];
} else {
if (_local8 == "o"){
_arg2[_local7] = {};
};
};
xml2obj(_local6, _arg2[_local7]);
} else {
if (_local5 == "var"){
_local9 = _local6.@n;
_local10 = _local6.@t;
_local11 = _local6.toString();
if (_local10 == "b"){
_arg2[_local9] = ((_local11 == "0")) ? false : true;
} else {
if (_local10 == "n"){
_arg2[_local9] = Number(_local11);
} else {
if (_local10 == "s"){
_arg2[_local9] = _local11;
} else {
if (_local10 == "x"){
_arg2[_local9] = null;
};
};
};
};
};
};
};
}
private function encodeEntities(_arg1:String):String{
return (_arg1);
}
public function deserialize(_arg1:String):Object{
var _local2:XML;
var _local3:Object;
_local2 = new XML(_arg1);
_local3 = {};
xml2obj(_local2, _local3);
return (_local3);
}
public static function getInstance(_arg1:Boolean=false):ObjectSerializer{
if (instance == null){
instance = new ObjectSerializer(_arg1);
};
return (instance);
}
}
}//package it.gotoandplay.smartfoxserver.util
Section 60
//SFSEvent (it.gotoandplay.smartfoxserver.SFSEvent)
package it.gotoandplay.smartfoxserver {
import flash.events.*;
public class SFSEvent extends Event {
public var params:Object;
public static const onRoomLeft:String = "onRoomLeft";
public static const onBuddyListUpdate:String = "onBuddyListUpdate";
public static const onUserLeaveRoom:String = "onUserLeaveRoom";
public static const onRoomListUpdate:String = "onRoomListUpdate";
public static const onRoundTripResponse:String = "onRoundTripResponse";
public static const onExtensionResponse:String = "onExtensionResponse";
public static const onConnection:String = "onConnection";
public static const onBuddyListError:String = "onBuddyListError";
public static const onJoinRoom:String = "onJoinRoom";
public static const onUserEnterRoom:String = "onUserEnterRoom";
public static const onBuddyRoom:String = "onBuddyRoom";
public static const onAdminMessage:String = "onAdminMessage";
public static const onPublicMessage:String = "onPublicMessage";
public static const onModeratorMessage:String = "onModMessage";
public static const onPrivateMessage:String = "onPrivateMessage";
public static const onJoinRoomError:String = "onJoinRoomError";
public static const onRoomAdded:String = "onRoomAdded";
public static const onLogin:String = "onLogin";
public static const onSpectatorSwitched:String = "onSpectatorSwitched";
public static const onRoomDeleted:String = "onRoomDeleted";
public static const onConnectionLost:String = "onConnectionLost";
public static const onBuddyList:String = "onBuddyList";
public static const onRoomVariablesUpdate:String = "onRoomVariablesUpdate";
public static const onCreateRoomError:String = "onCreateRoomError";
public static const onUserCountChange:String = "onUserCountChange";
public static const onUserVariablesUpdate:String = "onUserVariablesUpdate";
public static const onRandomKey:String = "onRandomKey";
public static const onObjectReceived:String = "onObjectReceived";
public function SFSEvent(_arg1:String, _arg2:Object){
super(_arg1);
this.params = _arg2;
}
override public function toString():String{
return (formatToString("SFSEvent", "type", "bubbles", "cancelable", "eventPhase", "params"));
}
override public function clone():Event{
return (new SFSEvent(this.type, this.params));
}
}
}//package it.gotoandplay.smartfoxserver
Section 61
//SmartFoxClient (it.gotoandplay.smartfoxserver.SmartFoxClient)
package it.gotoandplay.smartfoxserver {
import flash.events.*;
import it.gotoandplay.smartfoxserver.handlers.*;
import it.gotoandplay.smartfoxserver.data.*;
import it.gotoandplay.smartfoxserver.util.*;
import it.gotoandplay.smartfoxserver.json.*;
import flash.utils.*;
import flash.net.*;
public class SmartFoxClient extends EventDispatcher {
private var connected:Boolean;
private var benchStartTime:int;
public var myUserId:int;
private var roomList:Array;
private var minVersion:Number;
public var buddyVars:Array;
public var debug:Boolean;
private var byteBuffer:ByteArray;
private var subVersion:Number;
public var buddyList:Array;
private var messageHandlers:Array;
private var majVersion:Number;
private var socketConnection:Socket;
private var sysHandler:SysHandler;
public var myUserName:String;
public var playerId:int;
public var amIModerator:Boolean;
public var changingRoom:Boolean;
private var extHandler:ExtHandler;
public var activeRoomId:int;
private static const EOM:int = 0;
private static const MSG_JSON:String = "{";
public static const XTMSG_TYPE_STR:String = "str";
public static const MODMSG_TO_USER:String = "u";
public static const MODMSG_TO_ZONE:String = "z";
private static const MSG_STR:String = "%";
private static const MSG_XML:String = "<";
public static const XTMSG_TYPE_JSON:String = "json";
public static const XTMSG_TYPE_XML:String = "xml";
public static const MODMSG_TO_ROOM:String = "r";
public function SmartFoxClient(_arg1:Boolean=false){
this.majVersion = 1;
this.minVersion = 3;
this.subVersion = 4;
this.activeRoomId = -1;
this.debug = _arg1;
this.messageHandlers = [];
setupMessageHandlers();
socketConnection = new Socket();
socketConnection.addEventListener(Event.CONNECT, handleSocketConnection);
socketConnection.addEventListener(Event.CLOSE, handleSocketDisconnection);
socketConnection.addEventListener(ErrorEvent.ERROR, handleSocketError);
socketConnection.addEventListener(IOErrorEvent.IO_ERROR, handleIOError);
socketConnection.addEventListener(ProgressEvent.SOCKET_DATA, handleSocketData);
socketConnection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, handleSecurityError);
byteBuffer = new ByteArray();
}
private function getXmlUserVariable(_arg1:Object):String{
var _local2:String;
var _local3:*;
var _local4:String;
var _local5:String;
var _local6:String;
_local2 = "<vars>";
for (_local6 in _arg1) {
_local3 = _arg1[_local6];
_local5 = typeof(_local3);
if (_local5 == "boolean"){
_local4 = "b";
_local3 = (_local3) ? "1" : "0";
} else {
if (_local5 == "number"){
_local4 = "n";
} else {
if (_local5 == "string"){
_local4 = "s";
} else {
if (_local5 == "null"){
_local4 = "x";
};
};
};
};
if (_local4 != null){
_local2 = (_local2 + (((((("<var n='" + _local6) + "' t='") + _local4) + "'><![CDATA[") + _local3) + "]]></var>"));
};
};
_local2 = (_local2 + "</vars>");
return (_local2);
}
private function checkBuddyDuplicates(_arg1:String):Boolean{
var _local2:Boolean;
var _local3:Object;
_local2 = false;
for each (_local3 in buddyList) {
if (_local3.name == _arg1){
_local2 = true;
break;
};
};
return (_local2);
}
public function getBuddyRoom(_arg1:Object):void{
if (_arg1.id != -1){
send({t:"sys", bid:_arg1.id}, "roomB", -1, (("<b id='" + _arg1.id) + "' />"));
};
}
private function handleSocketData(_arg1:Event):void{
var _local2:int;
var _local3:int;
_local2 = socketConnection.bytesAvailable;
while (--_local2 >= 0) {
_local3 = socketConnection.readByte();
if (_local3 != 0){
byteBuffer.writeByte(_local3);
} else {
handleMessage(byteBuffer.toString());
byteBuffer = new ByteArray();
};
};
}
private function handleSocketError(_arg1:Event):void{
trace("SOCKET ERROR!!!");
}
private function getXmlRoomVariable(_arg1:Object):String{
var _local2:String;
var _local3:*;
var _local4:String;
var _local5:String;
var _local6:String;
_local2 = _arg1.name.toString();
_local3 = _arg1.val.toString();
_local4 = (_arg1.priv) ? "1" : "0";
_local5 = (_arg1.persistent) ? "1" : "0";
_local6 = null;
if (typeof(_local3) == "boolean"){
_local6 = "b";
_local3 = (_local3) ? "1" : "0";
} else {
if (typeof(_local3) == "number"){
_local6 = "n";
} else {
if (typeof(_local3) == "string"){
_local6 = "s";
} else {
if (typeof(_local3) == "null"){
_local6 = "x";
};
};
};
};
if (_local6 != null){
return ((((((((((("<var n='" + _local2) + "' t='") + _local6) + "' pr='") + _local4) + "' pe='") + _local5) + "'><![CDATA[") + _local3) + "]]></var>"));
};
return ("");
}
private function handleSocketDisconnection(_arg1:Event):void{
var _local2:SFSEvent;
initialize();
_local2 = new SFSEvent(SFSEvent.onConnectionLost, {});
dispatchEvent(_local2);
}
private function xmlReceived(_arg1:String):void{
var _local2:XML;
var _local3:String;
var _local4:String;
var _local5:int;
var _local6:IMessageHandler;
_local2 = new XML(_arg1);
_local3 = _local2.@t;
_local4 = _local2.body.@action;
_local5 = _local2.body.@r;
_local6 = messageHandlers[_local3];
if (_local6 != null){
_local6.handleMessage(_local2, XTMSG_TYPE_XML);
};
}
public function switchSpectator(_arg1:int=-1):void{
if (_arg1 == -1){
_arg1 = activeRoomId;
};
send({t:"sys"}, "swSpec", _arg1, "");
}
public function roundTripBench():void{
this.benchStartTime = getTimer();
send({t:"sys"}, "roundTrip", activeRoomId, "");
}
public function joinRoom(_arg1, _arg2:String="", _arg3:Boolean=false, _arg4:Boolean=false, _arg5:int=-1):void{
var _local6:int;
var _local7:int;
var _local8:Room;
var _local9:Object;
var _local10:String;
var _local11:int;
var _local12:String;
_local6 = -1;
_local7 = (_arg3) ? 1 : 0;
if (!this.changingRoom){
if (typeof(_arg1) == "number"){
_local6 = int(_arg1);
} else {
if (typeof(_arg1) == "string"){
for each (_local8 in roomList) {
if (_local8.getName() == _arg1){
_local6 = _local8.getId();
break;
};
};
};
};
if (_local6 != -1){
_local9 = {t:"sys"};
_local10 = (_arg4) ? "0" : "1";
_local11 = ((_arg5 > -1)) ? _arg5 : activeRoomId;
if (activeRoomId == -1){
_local10 = "0";
_local11 = -1;
};
_local12 = (((((((((("<room id='" + _local6) + "' pwd='") + _arg2) + "' spec='") + _local7) + "' leave='") + _local10) + "' old='") + _local11) + "' />");
send(_local9, "joinRoom", activeRoomId, _local12);
changingRoom = true;
} else {
trace("SmartFoxError: requested room to join does not exist!");
};
};
}
public function getActiveRoom():Room{
return (roomList[activeRoomId]);
}
private function makeXmlHeader(_arg1:Object):String{
var _local2:String;
var _local3:String;
_local2 = "<msg";
for (_local3 in _arg1) {
_local2 = (_local2 + ((((" " + _local3) + "='") + _arg1[_local3]) + "'"));
};
_local2 = (_local2 + ">");
return (_local2);
}
private function strReceived(_arg1:String):void{
var _local2:Array;
var _local3:String;
var _local4:IMessageHandler;
_local2 = _arg1.substr(1, (_arg1.length - 2)).split(MSG_STR);
_local3 = _local2[0];
_local4 = messageHandlers[_local3];
if (_local4 != null){
_local4.handleMessage(_local2.splice(1, (_local2.length - 1)), XTMSG_TYPE_STR);
};
}
public function getRoomByName(_arg1:String):Room{
var _local2:Room;
var _local3:Room;
_local2 = null;
for each (_local3 in roomList) {
if (_local3.getName() == _arg1){
_local2 = _local3;
break;
};
};
return (_local2);
}
public function loadBuddyList():void{
send({t:"sys"}, "loadB", -1, "");
}
public function leaveRoom(_arg1:int):void{
var _local2:Object;
var _local3:String;
_local2 = {t:"sys"};
_local3 = (("<rm id='" + _arg1) + "' />");
send(_local2, "leaveRoom", _arg1, _local3);
}
private function addMessageHandler(_arg1:String, _arg2:IMessageHandler):void{
if (this.messageHandlers[_arg1] == null){
this.messageHandlers[_arg1] = _arg2;
} else {
trace((("Warning, message handler called: " + _arg1) + " already exist!"));
};
}
public function getAllRooms():Array{
return (roomList);
}
public function setBuddyVariables(_arg1:Array):void{
var _local2:Object;
var _local3:String;
var _local4:String;
var _local5:String;
_local2 = {t:"sys"};
_local3 = "<vars>";
for (_local4 in _arg1) {
_local5 = _arg1[_local4];
if (buddyVars[_local4] != _local5){
buddyVars[_local4] = _local5;
_local3 = (_local3 + (((("<var n='" + _local4) + "'><![CDATA[") + _local5) + "]]></var>"));
};
};
_local3 = (_local3 + "</vars>");
this.send(_local2, "setBvars", -1, _local3);
}
public function getRoom(_arg1:int):Room{
return (roomList[_arg1]);
}
private function handleSecurityError(_arg1:Event):void{
trace("SECURITY ERROR!!!");
}
private function handleIOError(_arg1:Event):void{
var _local2:SFSEvent;
var _local3:Object;
if (!connected){
_local3 = {};
_local3.success = false;
_local3.error = "I/O Error";
_local2 = new SFSEvent(SFSEvent.onConnection, _local3);
dispatchEvent(_local2);
} else {
trace("I/O Error during connected session");
};
}
private function setupMessageHandlers():void{
sysHandler = new SysHandler(this);
extHandler = new ExtHandler(this);
addMessageHandler("sys", sysHandler);
addMessageHandler("xt", extHandler);
}
public function login(_arg1:String, _arg2:String, _arg3:String):void{
var _local4:Object;
var _local5:String;
_local4 = {t:"sys"};
_local5 = (((((("<login z='" + _arg1) + "'><nick><![CDATA[") + _arg2) + "]]></nick><pword><![CDATA[") + _arg3) + "]]></pword></login>");
send(_local4, "login", 0, _local5);
}
public function autoJoin():void{
var _local1:Object;
_local1 = {t:"sys"};
this.send(_local1, "autoJoin", (this.activeRoomId) ? this.activeRoomId : -1, "");
}
private function send(_arg1:Object, _arg2:String, _arg3:Number, _arg4:String):void{
var _local5:String;
_local5 = makeXmlHeader(_arg1);
_local5 = (_local5 + ((((((("<body action='" + _arg2) + "' r='") + _arg3) + "'>") + _arg4) + "</body>") + closeHeader()));
if (this.debug){
trace((("[Sending]: " + _local5) + "\n"));
};
writeToSocket(_local5);
}
public function getRoomList():void{
var _local1:Object;
_local1 = {t:"sys"};
send(_local1, "getRmList", activeRoomId, "");
}
private function initialize():void{
this.changingRoom = false;
this.amIModerator = false;
this.playerId = -1;
this.connected = false;
this.roomList = [];
this.buddyList = [];
this.buddyVars = [];
}
public function setRoomVariables(_arg1:Array, _arg2:int=-1, _arg3:Boolean=true):void{
var _local4:Object;
var _local5:String;
var _local6:Object;
if (_arg2 == -1){
_arg2 = activeRoomId;
};
_local4 = {t:"sys"};
if (_arg3){
_local5 = "<vars>";
} else {
_local5 = "<vars so='0'>";
};
for each (_local6 in _arg1) {
_local5 = (_local5 + getXmlRoomVariable(_local6));
};
_local5 = (_local5 + "</vars>");
send(_local4, "setRvars", _arg2, _local5);
}
public function disconnect():void{
socketConnection.close();
connected = false;
sysHandler.dispatchDisconnection();
}
public function sendJson(_arg1:String):void{
if (this.debug){
trace((("[Sending - JSON]: " + _arg1) + "\n"));
};
writeToSocket(_arg1);
}
private function closeHeader():String{
return ("</msg>");
}
public function getVersion():String{
return (((((this.majVersion + ".") + this.minVersion) + ".") + this.subVersion));
}
public function setUserVariables(_arg1:Object, _arg2:int=-1):void{
var _local3:Object;
var _local4:Room;
var _local5:User;
var _local6:String;
if (_arg2 == -1){
_arg2 = activeRoomId;
};
_local3 = {t:"sys"};
_local4 = getActiveRoom();
_local5 = _local4.getUser(myUserId);
_local6 = getXmlUserVariable(_arg1);
send(_local3, "setUvars", _arg2, _local6);
}
public function addBuddy(_arg1:String):void{
var _local2:String;
if (((!((_arg1 == myUserName))) && (!(checkBuddyDuplicates(_arg1))))){
_local2 = (("<n>" + _arg1) + "</n>");
send({t:"sys"}, "addB", -1, _local2);
};
}
public function sendPrivateMessage(_arg1:String, _arg2:int, _arg3:int=-1):void{
var _local4:Object;
var _local5:String;
if (_arg3 == -1){
_arg3 = activeRoomId;
};
_local4 = {t:"sys"};
_local5 = (((("<txt rcp='" + _arg2) + "'><![CDATA[") + Entities.encodeEntities(_arg1)) + "]]></txt>");
send(_local4, "prvMsg", _arg3, _local5);
}
public function sendPublicMessage(_arg1:String, _arg2:int=-1):void{
var _local3:Object;
var _local4:String;
if (_arg2 == -1){
_arg2 = activeRoomId;
};
_local3 = {t:"sys"};
_local4 = (("<txt><![CDATA[" + Entities.encodeEntities(_arg1)) + "]]></txt>");
send(_local3, "pubMsg", _arg2, _local4);
}
public function clearBuddyList():void{
var _local1:Object;
var _local2:SFSEvent;
buddyList = [];
send({t:"sys"}, "clearB", -1, "");
_local1 = {};
_local1.list = buddyList;
_local2 = new SFSEvent(SFSEvent.onBuddyList, _local1);
dispatchEvent(_local2);
}
public function sendString(_arg1:String):void{
if (this.debug){
trace((("[Sending - STR]: " + _arg1) + "\n"));
};
writeToSocket(_arg1);
}
public function removeBuddy(_arg1:String):void{
var _local2:Boolean;
var _local3:Object;
var _local4:String;
var _local5:Object;
var _local6:String;
var _local7:Object;
var _local8:SFSEvent;
_local2 = false;
for (_local4 in buddyList) {
_local3 = buddyList[_local4];
if (_local3.name == _arg1){
delete buddyList[_local4];
_local2 = true;
break;
};
};
if (_local2){
_local5 = {t:"sys"};
_local6 = (("<n>" + _arg1) + "</n>");
send(_local5, "remB", -1, _local6);
_local7 = {};
_local7.list = buddyList;
_local8 = new SFSEvent(SFSEvent.onBuddyList, _local7);
dispatchEvent(_local8);
};
}
private function handleMessage(_arg1:String):void{
var _local2:String;
if (this.debug){
trace((((("[ RECEIVED ]: " + _arg1) + ", (len: ") + _arg1.length) + ")"));
};
_local2 = _arg1.charAt(0);
if (_local2 == MSG_XML){
if ((((_arg1.substr(0, 4) == "<msg")) && (!((_arg1.substr(-6) == "</msg>"))))){
_arg1 = (_arg1 + "</body></msg>");
};
xmlReceived(_arg1);
} else {
if (_local2 == MSG_STR){
strReceived(_arg1);
} else {
if (_local2 == MSG_JSON){
jsonReceived(_arg1);
};
};
};
}
public function sendXtMessage(_arg1:String, _arg2:String, _arg3, _arg4:String="xml", _arg5:int=-1):void{
var _local6:Object;
var _local7:Object;
var _local8:String;
var _local9:String;
var _local10:Number;
var _local11:Object;
var _local12:Object;
var _local13:String;
if (_arg5 == -1){
_arg5 = activeRoomId;
};
if (_arg4 == XTMSG_TYPE_XML){
_local6 = {t:"xt"};
_local7 = {name:_arg1, cmd:_arg2, param:_arg3};
_local8 = (("<![CDATA[" + ObjectSerializer.getInstance().serialize(_local7)) + "]]>");
send(_local6, "xtReq", _arg5, _local8);
} else {
if (_arg4 == XTMSG_TYPE_STR){
_local9 = (((((("%xt%" + _arg1) + "%") + _arg2) + "%") + _arg5) + "%");
_local10 = 0;
while (_local10 < _arg3.length) {
_local9 = (_local9 + (_arg3[_local10].toString() + "%"));
_local10++;
};
sendString(_local9);
} else {
if (_arg4 == XTMSG_TYPE_JSON){
_local11 = {};
_local11.x = _arg1;
_local11.c = _arg2;
_local11.r = _arg5;
_local11.p = _arg3;
_local12 = {};
_local12.t = "xt";
_local12.b = _local11;
_local13 = JSON.encode(_local12);
sendJson(_local13);
};
};
};
}
private function writeToSocket(_arg1:String):void{
var _local2:ByteArray;
_local2 = new ByteArray();
_local2.writeMultiByte(_arg1, "utf-8");
_local2.writeByte(0);
socketConnection.writeBytes(_local2);
socketConnection.flush();
}
public function sendObjectToGroup(_arg1:Object, _arg2:Array, _arg3:int):void{
var _local4:String;
var _local5:String;
var _local6:Object;
var _local7:String;
if (_arg3 == -1){
_arg3 = activeRoomId;
};
_local4 = "";
for (_local5 in _arg2) {
if (!isNaN(_arg2[_local5])){
_local4 = (_local4 + (_arg2[_local5] + ","));
};
};
_local4 = _local4.substr(0, (_local4.length - 1));
_arg1._$$_ = _local4;
_local6 = {t:"sys"};
_local7 = (("<![CDATA[" + ObjectSerializer.getInstance().serialize(_arg1)) + "]]>");
send(_local6, "asObjG", _arg3, _local7);
}
public function getRandomKey():void{
send({t:"sys"}, "rndK", -1, "");
}
public function sendObject(_arg1:Object, _arg2:int=-1):void{
var _local3:String;
var _local4:Object;
if (_arg2 == -1){
_arg2 = activeRoomId;
};
_local3 = (("<![CDATA[" + ObjectSerializer.getInstance().serialize(_arg1)) + "]]>");
_local4 = {t:"sys"};
send(_local4, "asObj", _arg2, _local3);
}
private function jsonReceived(_arg1:String):void{
var _local2:Object;
var _local3:String;
var _local4:IMessageHandler;
_local2 = JSON.decode(_arg1);
_local3 = _local2["t"];
_local4 = messageHandlers[_local3];
if (_local4 != null){
_local4.handleMessage(_local2["b"], XTMSG_TYPE_JSON);
};
}
public function connect(_arg1:String, _arg2:int):void{
if (!connected){
initialize();
socketConnection.connect(_arg1, _arg2);
} else {
trace("*** ALREADY CONNECTED ***");
};
}
public function sendModeratorMessage(_arg1:String, _arg2:int, _arg3:int=-1):void{
var _local4:Object;
var _local5:String;
_local4 = {t:"sys"};
_local5 = (((((("<txt t='" + _arg2) + "' id='") + _arg3) + "'><![CDATA[") + Entities.encodeEntities(_arg1)) + "]]></txt>");
send(_local4, "modMsg", activeRoomId, _local5);
}
public function getBenchStartTime():int{
return (this.benchStartTime);
}
public function createRoom(_arg1:Object, _arg2:int=-1):void{
var _local3:Object;
var _local4:String;
var _local5:String;
var _local6:String;
var _local7:String;
var _local8:String;
var _local9:String;
if (_arg2 == -1){
_arg2 = activeRoomId;
};
_local3 = {t:"sys"};
_local4 = (_arg1.isGame) ? "1" : "0";
_local5 = "1";
_local6 = ((_arg1.maxUsers == null)) ? "0" : String(_arg1.maxUsers);
_local7 = ((_arg1.maxSpectators == null)) ? "0" : String(_arg1.maxSpectators);
if (((_arg1.isGame) && (!((_arg1.exitCurrent == null))))){
_local5 = (_arg1.exitCurrent) ? "1" : "0";
};
_local8 = (((((("<room tmp='1' gam='" + _local4) + "' spec='") + _local7) + "' exit='") + _local5) + "'>");
_local8 = (_local8 + (("<name><![CDATA[" + ((_arg1.name == null)) ? "" : _arg1.name) + "]]></name>"));
_local8 = (_local8 + (("<pwd><![CDATA[" + ((_arg1.password == null)) ? "" : _arg1.password) + "]]></pwd>"));
_local8 = (_local8 + (("<max>" + _local6) + "</max>"));
if (_arg1.uCount != null){
_local8 = (_local8 + (("<uCnt>" + (_arg1.uCount) ? "1" : "0") + "</uCnt>"));
};
if (_arg1.extension != null){
_local8 = (_local8 + ("<xt n='" + _arg1.extension.name));
_local8 = (_local8 + (("' s='" + _arg1.extension.script) + "' />"));
};
if (_arg1.vars == null){
_local8 = (_local8 + "<vars></vars>");
} else {
_local8 = (_local8 + "<vars>");
for (_local9 in _arg1.vars) {
_local8 = (_local8 + getXmlRoomVariable(_arg1.vars[_local9]));
};
_local8 = (_local8 + "</vars>");
};
_local8 = (_local8 + "</room>");
send(_local3, "createRoom", _arg2, _local8);
}
private function handleSocketConnection(_arg1:Event):void{
var _local2:Object;
var _local3:String;
_local2 = {t:"sys"};
_local3 = (((("<ver v='" + this.majVersion.toString()) + this.minVersion.toString()) + this.subVersion.toString()) + "' />");
send(_local2, "verChk", 0, _local3);
}
public function set isConnected(_arg1:Boolean):void{
this.connected = _arg1;
}
public function get isConnected():Boolean{
return (this.connected);
}
}
}//package it.gotoandplay.smartfoxserver
Section 62
//BitmapAsset (mx.core.BitmapAsset)
package mx.core {
import flash.display.*;
public class BitmapAsset extends FlexBitmap implements IFlexAsset, IFlexDisplayObject {
mx_internal static const VERSION:String = "2.0.1.0";
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
Section 63
//FlexBitmap (mx.core.FlexBitmap)
package mx.core {
import flash.display.*;
import mx.utils.*;
public class FlexBitmap extends Bitmap {
mx_internal static const VERSION:String = "2.0.1.0";
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
Section 64
//FlexSprite (mx.core.FlexSprite)
package mx.core {
import flash.display.*;
import mx.utils.*;
public class FlexSprite extends Sprite {
mx_internal static const VERSION:String = "2.0.1.0";
public function FlexSprite(){
super();
try {
name = NameUtil.createUniqueName(this);
} catch(e:Error) {
};
}
override public function toString():String{
return (NameUtil.displayObjectToString(this));
}
}
}//package mx.core
Section 65
//IFlexAsset (mx.core.IFlexAsset)
package mx.core {
public interface IFlexAsset {
}
}//package mx.core
Section 66
//IFlexDisplayObject (mx.core.IFlexDisplayObject)
package mx.core {
import flash.events.*;
import flash.display.*;
public interface IFlexDisplayObject extends IBitmapDrawable, IEventDispatcher {
function get name():String;
function set width(_arg1:Number):void;
function get measuredHeight():Number;
function set height(_arg1:Number):void;
function get scaleY():Number;
function move(_arg1:Number, _arg2:Number):void;
function get scaleX():Number;
function set mask(_arg1:DisplayObject):void;
function set scaleX(_arg1:Number):void;
function set name(_arg1:String):void;
function set scaleY(_arg1:Number):void;
function get visible():Boolean;
function get measuredWidth():Number;
function set visible(_arg1:Boolean):void;
function get alpha():Number;
function get height():Number;
function get width():Number;
function get parent():DisplayObjectContainer;
function get mask():DisplayObject;
function set x(_arg1:Number):void;
function setActualSize(_arg1:Number, _arg2:Number):void;
function set y(_arg1:Number):void;
function get x():Number;
function get y():Number;
function set alpha(_arg1:Number):void;
}
}//package mx.core
Section 67
//IRepeaterClient (mx.core.IRepeaterClient)
package mx.core {
public interface IRepeaterClient {
function set instanceIndices(_arg1:Array):void;
function get isDocument():Boolean;
function get repeaters():Array;
function get instanceIndices():Array;
function set repeaters(_arg1:Array):void;
function initializeRepeaterArrays(_arg1:IRepeaterClient):void;
function set repeaterIndices(_arg1:Array):void;
function get repeaterIndices():Array;
}
}//package mx.core
Section 68
//mx_internal (mx.core.mx_internal)
package mx.core {
public namespace mx_internal = "http://www.adobe.com/2006/flex/mx/internal";
}//package mx.core
Section 69
//SoundAsset (mx.core.SoundAsset)
package mx.core {
import flash.media.*;
public class SoundAsset extends Sound implements IFlexAsset {
mx_internal static const VERSION:String = "2.0.1.0";
}
}//package mx.core
Section 70
//SpriteAsset (mx.core.SpriteAsset)
package mx.core {
public class SpriteAsset extends FlexSprite implements IFlexAsset, IFlexDisplayObject {
private var _measuredWidth:Number;
private var _measuredHeight:Number;
mx_internal static const VERSION:String = "2.0.1.0";
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;
}
}
}//package mx.core
Section 71
//NameUtil (mx.utils.NameUtil)
package mx.utils {
import flash.display.*;
import flash.utils.*;
import mx.core.*;
public class NameUtil {
mx_internal static const VERSION:String = "2.0.1.0";
private static var counter:int = 0;
public static function displayObjectToString(_arg1:DisplayObject):String{
var _local2:String;
var _local3:DisplayObject;
var _local4:String;
var _local5:Array;
_local3 = _arg1;
while (_local3 != null) {
if (((((_local3.parent) && (_local3.stage))) && ((_local3.parent == _local3.stage)))){
break;
};
_local4 = _local3.name;
if ((_local3 is IRepeaterClient)){
_local5 = IRepeaterClient(_local3).instanceIndices;
if (_local5){
_local4 = (_local4 + (("[" + _local5.join("][")) + "]"));
};
};
_local2 = ((_local2 == null)) ? _local4 : ((_local4 + ".") + _local2);
_local3 = _local3.parent;
};
return (_local2);
}
public static function createUniqueName(_arg1:Object):String{
var _local2:String;
var _local3:int;
var _local4:int;
if (!_arg1){
return (null);
};
_local2 = getQualifiedClassName(_arg1);
_local3 = _local2.indexOf("::");
if (_local3 != -1){
_local2 = _local2.substr((_local3 + 2));
};
_local4 = _local2.charCodeAt((_local2.length - 1));
if ((((_local4 >= 48)) && ((_local4 <= 57)))){
_local2 = (_local2 + "_");
};
return ((_local2 + counter++));
}
}
}//package mx.utils
Section 72
//IDistributedSprite (RES.BASE.IDistributedSprite)
package RES.BASE {
import ENGINE.DISPLAY.*;
import flash.display.*;
import flash.geom.*;
public class IDistributedSprite implements IDisplayObject {
protected var iDistributedChildren:Array;
protected var iDistributedChildrenParents:Array;
public var x:Number;
public var y:Number;
public function IDistributedSprite(){
iDistributedChildren = new Array();
iDistributedChildrenParents = new Array();
super();
x = 0;
y = 0;
}
public function get bounds():Rectangle{
return ((iDistributedChildren[0]) ? iDistributedChildren[0].getRect(iDistributedChildrenParents[0]) : null);
}
public function replaceChild(_arg1:IDisplayObject, _arg2:IDisplayObject):void{
var _local3:int;
_local3 = 0;
while (_local3 < iDistributedChildren.length) {
if (iDistributedChildren[_local3] == _arg1){
iDistributedChildrenParents[_local3].removeChild(iDistributedChildren[_local3]);
iDistributedChildrenParents[_local3].addChild(_arg2);
iDistributedChildren[_local3] = _arg2;
_arg2.prX = this.prX;
_arg2.prY = this.prY;
};
_local3++;
};
}
public function get prHeight():Number{
if (((iDistributedChildren) && ((iDistributedChildren.length > 0)))){
return (iDistributedChildren[0].prHeight);
};
return (0);
}
public function set rotation(_arg1:Number):void{
var _local2:int;
_local2 = 0;
while (_local2 < iDistributedChildren.length) {
iDistributedChildren[_local2].rotation = _arg1;
_local2++;
};
}
public function Free():void{
var _local1:int;
_local1 = 0;
while (_local1 < iDistributedChildren.length) {
iDistributedChildrenParents[_local1].removeChild(iDistributedChildren[_local1]);
iDistributedChildren[_local1] = null;
_local1++;
};
iDistributedChildren = null;
iDistributedChildrenParents = null;
}
protected function pushDistributedSprite(_arg1:DisplayObject, _arg2:OSprite):void{
iDistributedChildren.push(_arg1);
iDistributedChildrenParents.push(_arg2);
_arg2.addChild(_arg1);
}
public function get prVisible():Boolean{
if (((iDistributedChildren) && ((iDistributedChildren.length > 0)))){
return (iDistributedChildren[0].prVisible);
};
return (true);
}
public function set prHeight(_arg1:Number):void{
var _local2:int;
_local2 = 0;
while (_local2 < iDistributedChildren.length) {
iDistributedChildren[_local2].prHeight = _arg1;
_local2++;
};
}
public function get scaleX():Number{
return ((iDistributedChildren[0]) ? iDistributedChildren[0].scaleX : 0);
}
public function set scaleX(_arg1:Number):void{
var _local2:int;
_local2 = 0;
while (_local2 < iDistributedChildren.length) {
iDistributedChildren[_local2].scaleX = _arg1;
_local2++;
};
}
public function get prX():Number{
return (x);
}
public function get prY():Number{
return (y);
}
public function get scaleY():Number{
return ((iDistributedChildren[0]) ? iDistributedChildren[0].scaleY : 0);
}
public function get prWidth():Number{
if (((iDistributedChildren) && ((iDistributedChildren.length > 0)))){
return (iDistributedChildren[0].prWidth);
};
return (0);
}
public function get alpha():Number{
return ((iDistributedChildren[0]) ? iDistributedChildren[0].alpha : 0);
}
public function set prVisible(_arg1:Boolean):void{
var _local2:int;
_local2 = 0;
while (_local2 < iDistributedChildren.length) {
iDistributedChildren[_local2].visible = _arg1;
_local2++;
};
}
public function set prWidth(_arg1:Number):void{
var _local2:int;
_local2 = 0;
while (_local2 < iDistributedChildren.length) {
iDistributedChildren[_local2].prWidth = _arg1;
_local2++;
};
}
public function set scaleY(_arg1:Number):void{
var _local2:int;
_local2 = 0;
while (_local2 < iDistributedChildren.length) {
iDistributedChildren[_local2].scaleY = _arg1;
_local2++;
};
}
public function set prY(_arg1:Number):void{
var _local2:int;
y = _arg1;
_local2 = 0;
while (_local2 < iDistributedChildren.length) {
iDistributedChildren[_local2].prY = _arg1;
_local2++;
};
}
public function Move(_arg1:Number, _arg2:Number):void{
var _local3:int;
_local3 = 0;
while (_local3 < iDistributedChildren.length) {
iDistributedChildren[_local3].prX = (iDistributedChildren[_local3].prX + _arg1);
iDistributedChildren[_local3].prY = (iDistributedChildren[_local3].prY + _arg2);
_local3++;
};
}
public function Pos(_arg1:Number, _arg2:Number):void{
this.prX = _arg1;
this.prY = _arg2;
}
public function set prX(_arg1:Number):void{
var _local2:int;
x = _arg1;
_local2 = 0;
while (_local2 < iDistributedChildren.length) {
iDistributedChildren[_local2].prX = _arg1;
_local2++;
};
}
public function set alpha(_arg1:Number):void{
var _local2:int;
_local2 = 0;
while (_local2 < iDistributedChildren.length) {
iDistributedChildren[_local2].alpha = _arg1;
_local2++;
};
}
public function get rotation():Number{
return ((iDistributedChildren[0]) ? iDistributedChildren[0].rotation : 0);
}
public function removeChild(_arg1:IDisplayObject):void{
var _local2:int;
_local2 = 0;
while (_local2 < iDistributedChildren.length) {
if (iDistributedChildren[_local2] == _arg1){
iDistributedChildrenParents[_local2].removeChild(iDistributedChildren[_local2]);
iDistributedChildrenParents.splice(_local2, 1);
iDistributedChildren.splice(_local2, 1);
_local2--;
};
_local2++;
};
}
}
}//package RES.BASE
Section 73
//CEditor (RES.EDITOR.CEditor)
package RES.EDITOR {
import ENGINE.DISPLAY.*;
import flash.events.*;
import flash.display.*;
import flash.geom.*;
import ENGINE.INTERFACE.*;
import RES.WINDOWS.*;
import ENGINE.DISPLAY.EFFECTS.*;
import flash.text.*;
import ENGINE.CORE.*;
import RES.GAME.*;
public class CEditor extends OWindow {
private const MATHERIALS_TOP:int = 45;
private const COLORS_TOP1:int = 190;
private const COLORS_LEFT:int = 0;
private const BONUSES_Y:int = 305;
private const MATHERIALS_LEFT:int = 610;
private const BONUSES_X:int = 700;
private const COLORS_TOP:int = 155;
private var iObstaclesSprite:OSprite;
private var iCurrentBonusInd:int;
public var iPrev:OButton;
private var iMatherialsCells:Array;
private var iCurrentPercentInd:int;
private var iParentWindow:OWEditor;
private var iColorsSelection:OBitmap;
private var iCurMatherialID:int;
public var iPublish:OButton;
private var iBonuses:Array;
public var iTest:OButton;
private var iCurColorID:int;
public var iObstaclesInfo:Array;
private var iLdr:TextField;
public var iNextP:OButton;
private var iMatherialsSelection:OBitmap;
public var iNext:OButton;
private var iPercentCaptions:Array;
public var iClose:OButton;
public var iGrid:CGrid;
private var iObstacles:Array;
public var iClear:OButton;
private var iColorsCells:Array;
public var iPrevP:OButton;
private var iBonusesCaptions:Array;
public function CEditor(_arg1:OWEditor){
iCurrentBonusInd = 0;
iCurrentPercentInd = 9;
iObstacles = new Array();
iObstaclesSprite = new OSprite();
iParentWindow = _arg1;
iObstaclesInfo = new Array();
super(Hitz2L.OWEditor, null);
this.addEventListener(MouseEvent.CLICK, onClick);
createGrid();
createColors();
createSelections();
createBonuses();
createCaptions();
createPercents();
showPercent(iCurrentPercentInd);
selectColor(1);
selectMatherial(2);
if (Hitz2L.sDebug){
iLdr = new TextField();
iLdr.backgroundColor = 0xFFFFFF;
iLdr.background = true;
iLdr.textColor = 0;
iLdr.type = "input";
iLdr.height = 15;
iLdr.maxChars = 1000000;
this.addChild(iLdr);
};
}
private function placeColorsCells():void{
var _local1:int;
_local1 = 0;
while (_local1 < 4) {
iColorsCells[_local1][0].Pos(613, COLORS_TOP);
_local1++;
};
_local1 = 0;
while (_local1 < 4) {
iColorsCells[_local1][1].Pos(648, COLORS_TOP);
_local1++;
};
_local1 = 0;
while (_local1 < 4) {
iColorsCells[_local1][2].Pos(683, COLORS_TOP);
_local1++;
};
_local1 = 0;
while (_local1 < 4) {
iColorsCells[_local1][3].Pos(718, COLORS_TOP);
_local1++;
};
_local1 = 0;
while (_local1 < 4) {
iColorsCells[_local1][4].Pos(753, COLORS_TOP);
_local1++;
};
_local1 = 0;
while (_local1 < 4) {
iColorsCells[_local1][5].Pos(613, COLORS_TOP1);
_local1++;
};
_local1 = 0;
while (_local1 < 4) {
iColorsCells[_local1][6].Pos(648, COLORS_TOP1);
_local1++;
};
_local1 = 0;
while (_local1 < 4) {
iColorsCells[_local1][7].Pos(683, COLORS_TOP1);
_local1++;
};
_local1 = 0;
while (_local1 < 4) {
iColorsCells[_local1][8].Pos(718, COLORS_TOP1);
_local1++;
};
_local1 = 0;
while (_local1 < 4) {
iColorsCells[_local1][9].Pos(753, COLORS_TOP1);
_local1++;
};
}
public function addObstacle(_arg1:Array, _arg2:int, _arg3:int, _arg4:int=-2, _arg5:Number=0.6):void{
var _local6:Sprite;
var _local7:int;
var _local8:OIObject;
_local6 = new Sprite();
_local6.graphics.beginFill(0);
_local6.graphics.moveTo(_arg1[0].x, _arg1[0].y);
_local7 = 1;
while (_local7 < (_arg1.length - 1)) {
_local6.graphics.lineTo(_arg1[_local7].x, _arg1[_local7].y);
_local7++;
};
_local6.graphics.endFill();
_local8 = createCell(_local6, _arg2, _arg3);
_local8.mouseEnabled = false;
iObstaclesSprite.addChild(_local8);
iObstacles.push(_local8);
iObstaclesInfo.push([_arg2, _arg3, _arg4, _arg5]);
showBonus((_arg4 + 2));
showPercentByValue(_arg5);
}
private function mirrorVFigure(_arg1:Array):Array{
var _local2:Array;
var _local3:int;
_local2 = new Array();
_local3 = 0;
while (_local3 < _arg1.length) {
_local2.push(new Point(_arg1[_local3].x, (iGrid.iRows - _arg1[_local3].y)));
_local3++;
};
return (_local2);
}
public function addCurrentObstacle(_arg1:Array):void{
iCurrentBonusInd = 0;
iCurrentPercentInd = 9;
addObstacle(_arg1, iCurMatherialID, iCurColorID, (iCurrentBonusInd - 2), ((iCurrentPercentInd / 10) + 0.1));
}
private function createCaptions():void{
var _local1:int;
iBonusesCaptions = new Array();
_local1 = 0;
while (_local1 < Hitz2L.strBonusesInfo.length) {
iBonusesCaptions.push(Hitz2S.Header([null, Hitz2L.CEditor_BonusesC[0], Hitz2L.CEditor_BonusesC[1], Hitz2L.CEditor_BonusesC[2], Hitz2L.strBonusesInfo[_local1], 0, 0]));
iBonusesCaptions[_local1].Pos(605, 330);
if (_local1 > 0){
iBonusesCaptions[_local1].visible = false;
};
this.addChild(iBonusesCaptions[_local1]);
_local1++;
};
}
public function clear():void{
var _local1:int;
_local1 = 0;
while (_local1 < iObstacles.length) {
iObstaclesSprite.removeChild(iObstacles[_local1]);
iObstacles[_local1].Free();
_local1++;
};
iObstacles = new Array();
iObstaclesInfo = new Array();
iGrid.clear();
}
private function refreshCurrentFigureInfo():void{
if (iGrid.iSelectedFigureInd < 0){
return;
};
iObstaclesInfo[iGrid.iSelectedFigureInd][2] = (iCurrentBonusInd - 2);
iObstaclesInfo[iGrid.iSelectedFigureInd][3] = ((iCurrentPercentInd / 10) + 0.1);
}
private function mirrorV():void{
var _local1:int;
var _local2:int;
_local1 = iGrid.iFiguresList.length;
_local2 = 0;
while (_local2 < _local1) {
addObstacle(scaleFigure(mirrorVFigure(iGrid.iFiguresList[_local2])), iObstaclesInfo[_local2][0], iObstaclesInfo[_local2][1], iObstaclesInfo[_local2][2], iObstaclesInfo[_local2][3]);
iGrid.iFiguresList.push(CGeom.convertPolygonToClockWise(mirrorVFigure(iGrid.iFiguresList[_local2])));
_local2++;
};
}
private function createBonuses():void{
var _local1:CGraphicsHolder;
var _local2:int;
_local1 = new CGraphicsHolder(1);
_local1.createBonuses();
iBonuses = new Array();
iBonuses.push(_local1.createNoBonusBitmap());
iBonuses.push(_local1.createRandomBonusBitmap());
iBonuses = iBonuses.concat(_local1.iBonuses);
_local2 = 0;
while (_local2 < iBonuses.length) {
iBonuses[_local2].Pos(BONUSES_X, BONUSES_Y);
this.addChild(iBonuses[_local2]);
if (_local2 > 0){
iBonuses[_local2].visible = false;
};
_local2++;
};
}
private function createSelections():void{
var _local1:Sprite;
_local1 = new Sprite();
_local1.graphics.beginFill(0);
_local1.graphics.drawRect(0, 0, 38, 38);
_local1.graphics.drawRect(3, 3, 32, 32);
_local1.graphics.endFill();
iColorsSelection = new OBitmap(OEffects.Apply(_local1, 1, "GEL", "yellow1", "text 30", 0.2, 0, 0));
this.addChild(iColorsSelection);
_local1.graphics.clear();
_local1.graphics.beginFill(0);
_local1.graphics.drawRect(0, 0, 48, 48);
_local1.graphics.drawRect(3, 3, 42, 42);
_local1.graphics.endFill();
iMatherialsSelection = new OBitmap(OEffects.Apply(_local1, 1, "GEL", "yellow", "text 30", 0.2, 0, 0));
this.addChild(iMatherialsSelection);
}
private function createGrid():void{
iGrid = new CGrid((580 * OGlobal.Scale), (464 * OGlobal.Scale), 80, 64, iObstaclesSprite, this);
iGrid.x = (10 * OGlobal.Scale);
iGrid.y = (50 * OGlobal.Scale);
this.addChild(iGrid);
}
override public function Free():void{
this.removeEventListener(MouseEvent.CLICK, onClick);
stage.removeEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
iGrid.Free();
super.Free();
}
public function loadFromArray(_arg1:Array):void{
iGrid.loadFromArray(_arg1[0], _arg1[1]);
}
private function prevPercent():void{
if (iCurrentPercentInd == 0){
iCurrentPercentInd = (iPercentCaptions.length - 1);
} else {
iCurrentPercentInd--;
};
showPercent(iCurrentPercentInd);
refreshCurrentFigureInfo();
}
private function createCell(_arg1:Sprite, _arg2:int, _arg3:int):OIObject{
var _local4:Array;
var _local5:OIObject;
_local4 = CGraphicsHolder.createPolygonBitmap(_arg1, _arg2, _arg3, 1);
_local5 = new OIObject(null);
_local5.addChild(_local4[0]);
return (_local5);
}
private function mirrorH():void{
var _local1:int;
var _local2:int;
_local1 = iGrid.iFiguresList.length;
_local2 = 0;
while (_local2 < _local1) {
addObstacle(scaleFigure(mirrorHFigure(iGrid.iFiguresList[_local2])), iObstaclesInfo[_local2][0], iObstaclesInfo[_local2][1], iObstaclesInfo[_local2][2], iObstaclesInfo[_local2][3]);
iGrid.iFiguresList.push(CGeom.convertPolygonToClockWise(mirrorHFigure(iGrid.iFiguresList[_local2])));
_local2++;
};
}
private function reInitObstacleColorMatherial(_arg1:int, _arg2:int, _arg3:int):void{
var _local4:Sprite;
var _local5:int;
var _local6:OIObject;
_local4 = new Sprite();
_local4.graphics.beginFill(0);
_local4.graphics.moveTo(((iGrid.iFiguresList[_arg1][0].x + 0.5) * iGrid.iColWidth), ((iGrid.iFiguresList[_arg1][0].y + 0.5) * iGrid.iRowHeight));
_local5 = 1;
while (_local5 < (iGrid.iFiguresList[_arg1].length - 1)) {
_local4.graphics.lineTo(((iGrid.iFiguresList[_arg1][_local5].x + 0.5) * iGrid.iColWidth), ((iGrid.iFiguresList[_arg1][_local5].y + 0.5) * iGrid.iRowHeight));
_local5++;
};
_local4.graphics.endFill();
_local6 = createCell(_local4, _arg3, _arg2);
_local6.mouseEnabled = false;
iObstaclesSprite.removeChild(iObstacles[_arg1]);
iObstaclesSprite.addChild(_local6);
iObstacles[_arg1] = _local6;
iObstaclesInfo[_arg1][0] = _arg3;
iObstaclesInfo[_arg1][1] = _arg2;
}
private function showPercent(_arg1:int):void{
var _local2:int;
_local2 = 0;
while (_local2 < iPercentCaptions.length) {
if (_local2 == _arg1){
iPercentCaptions[_local2].visible = true;
} else {
iPercentCaptions[_local2].visible = false;
};
_local2++;
};
}
private function mirrorHFigure(_arg1:Array):Array{
var _local2:Array;
var _local3:int;
_local2 = new Array();
_local3 = 0;
while (_local3 < _arg1.length) {
_local2.push(new Point((iGrid.iCols - _arg1[_local3].x), _arg1[_local3].y));
_local3++;
};
return (_local2);
}
public function onKeyDown(_arg1:KeyboardEvent):void{
switch (_arg1.keyCode){
case 27:
iGrid.cancelCurrentFigure();
break;
case 46:
if (iGrid.iSelectedFigureInd < 0){
return;
};
iObstaclesInfo.splice(iGrid.iSelectedFigureInd, 1);
iObstaclesSprite.removeChild(iObstacles[iGrid.iSelectedFigureInd]);
iObstacles.splice(iGrid.iSelectedFigureInd, 1);
iGrid.removeFigure(iGrid.iSelectedFigureInd);
iGrid.iSelectedFigureInd = -1;
break;
case 116:
if (Hitz2L.sDebug){
loadCurrentLevel();
iLdr.text = "";
};
break;
case 113:
if (Hitz2L.sDebug){
mirrorH();
};
break;
case 114:
if (Hitz2L.sDebug){
mirrorV();
};
break;
case 115:
if (Hitz2L.sDebug){
mirror();
};
break;
case 9:
selectNextFigure();
break;
};
}
private function scaleFigure(_arg1:Array):Array{
var _local2:Array;
var _local3:int;
_local2 = new Array();
_local3 = 0;
while (_local3 < _arg1.length) {
_local2.push(new Point((((_arg1[_local3].x + 0.5) * iGrid.iColWidth) / OGlobal.Scale), (((_arg1[_local3].y + 0.5) * iGrid.iRowHeight) / OGlobal.Scale)));
_local3++;
};
return (_local2);
}
override public function OnEnterFrame(_arg1:Event):void{
if (stage){
if (!stage.hasEventListener(KeyboardEvent.KEY_DOWN)){
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
};
};
super.OnEnterFrame(_arg1);
}
private function selectMatherial(_arg1:int):void{
var _local2:int;
var _local3:int;
iCurMatherialID = _arg1;
iMatherialsSelection.Pos((iMatherialsCells[_arg1][0].prX - 3), (iMatherialsCells[_arg1][0].prY - 3));
_local2 = 0;
while (_local2 < 4) {
_local3 = 0;
while (_local3 < Hitz2L.iCandyColors.length) {
iColorsCells[_local2][_local3].SetVisible((_local2 == _arg1));
_local3++;
};
_local2++;
};
if (iGrid.iSelectedFigureInd >= 0){
reInitObstacleColorMatherial(iGrid.iSelectedFigureInd, iCurColorID, iCurMatherialID);
};
}
private function placeMatherialCells():void{
var _local1:int;
_local1 = 0;
while (_local1 < Hitz2L.iCandyColors.length) {
iMatherialsCells[Hitz2L.iCandyID][_local1].Pos(MATHERIALS_LEFT, MATHERIALS_TOP);
_local1++;
};
_local1 = 0;
while (_local1 < Hitz2L.iMetalColors.length) {
iMatherialsCells[Hitz2L.iMetalID][_local1].Pos((MATHERIALS_LEFT + 45), MATHERIALS_TOP);
_local1++;
};
_local1 = 0;
while (_local1 < Hitz2L.iStoneColors.length) {
iMatherialsCells[Hitz2L.iStoneID][_local1].Pos((MATHERIALS_LEFT + (45 * 2)), MATHERIALS_TOP);
_local1++;
};
_local1 = 0;
while (_local1 < Hitz2L.iGelColors.length) {
iMatherialsCells[Hitz2L.iGelID][_local1].Pos((MATHERIALS_LEFT + (45 * 3)), MATHERIALS_TOP);
_local1++;
};
}
public function onClick(_arg1:MouseEvent):void{
var _local2:int;
var _local3:int;
_local2 = 0;
while (_local2 < iColorsCells.length) {
_local3 = 0;
while (_local3 < iColorsCells[_local2].length) {
if (_arg1.target == iColorsCells[_local2][_local3]){
selectColor(_local3);
};
if (_arg1.target == iMatherialsCells[_local2][_local3]){
selectMatherial(_local2);
};
_local3++;
};
_local2++;
};
}
private function nextBonus():void{
if (iCurrentBonusInd == (iBonuses.length - 1)){
iCurrentBonusInd = 0;
} else {
iCurrentBonusInd++;
};
showBonus(iCurrentBonusInd);
}
private function showBonus(_arg1:int):void{
var _local2:int;
_local2 = 0;
while (_local2 < iBonuses.length) {
if (_local2 == _arg1){
iBonuses[_local2].visible = true;
iBonusesCaptions[_local2].visible = true;
} else {
iBonuses[_local2].visible = false;
iBonusesCaptions[_local2].visible = false;
};
_local2++;
};
}
override public function OnPress(_arg1:Event, _arg2):void{
switch (_arg2){
case iPrev:
prevBonus();
refreshCurrentFigureInfo();
break;
case iNext:
nextBonus();
refreshCurrentFigureInfo();
break;
case iPrevP:
prevPercent();
refreshCurrentFigureInfo();
break;
case iNextP:
nextPercent();
refreshCurrentFigureInfo();
break;
case iPublish:
if (iObstacles.length < 10){
break;
};
iParentWindow.publishLevel();
this.prActive = false;
break;
case iClose:
iParentWindow.waitClose();
this.prVisible = false;
break;
case iTest:
if (iObstacles.length < 1){
break;
};
iParentWindow.testLevel();
this.prVisible = false;
break;
case iClear:
clear();
break;
};
super.OnPress(_arg1, _arg2);
}
private function loadCurrentLevel():void{
var _local1:Number;
var _local2:String;
var _local3:Array;
var _local4:Array;
var _local5:Array;
var _local6:String;
var _local7:int;
var _local8:Array;
var _local9:int;
var _local10:int;
clear();
_local1 = (Hitz2L.iBaseSize / (iGrid.iCols - 1));
_local2 = iLdr.text;
_local3 = _local2.split(",");
_local4 = new Array();
_local6 = "";
_local7 = 1;
for (;_local7 < (_local3[1].length - 1);_local7++) {
if (_local3[1].substr(_local7, 1) == "["){
_local5 = new Array();
_local6 = "";
continue;
} else {
if (_local3[1].substr(_local7, 1) == "]"){
_local4.push(_local5);
_local7++;
_local6 = "";
continue;
} else {
if (_local3[1].substr(_local7, 1) == "*"){
if (_local6 == ""){
continue;
};
_local5.push(Number(_local6));
_local6 = "";
} else {
_local6 = (_local6 + _local3[1].substr(_local7, 1));
};
};
};
};
_local7 = 0;
while (_local7 < _local4.length) {
_local5 = new Array();
_local9 = 0;
while (_local9 < _local4[_local7].length) {
_local5.push(new Point(Math.round((_local4[_local7][_local9] / _local1)), Math.round((_local4[_local7][(_local9 + 1)] / _local1))));
_local9 = (_local9 + 2);
};
_local4[_local7] = _local5;
_local7++;
};
_local5 = new Array();
_local8 = new Array();
_local7 = 1;
for (;_local7 < (_local3[2].length - 1);_local7++) {
if (_local3[2].substr(_local7, 1) == "*"){
if (_local6 == ""){
continue;
};
_local5.push(Number(_local6));
if (_local5.length == 7){
_local5[3] = Math.round((_local5[3] / _local1));
_local5[4] = Math.round((_local5[4] / _local1));
_local8.push([_local5[1], _local5[2], _local5[5], _local5[6]]);
_local10 = 0;
while (_local10 < _local4[(_local8.length - 1)].length) {
_local4[(_local8.length - 1)][_local10].x = (_local4[(_local8.length - 1)][_local10].x + _local5[3]);
_local4[(_local8.length - 1)][_local10].y = (_local4[(_local8.length - 1)][_local10].y + _local5[4]);
_local10++;
};
_local5 = new Array();
};
_local6 = "";
} else {
_local6 = (_local6 + _local3[2].substr(_local7, 1));
};
};
loadFromArray([_local4, _local8]);
}
public function refreshBonusAndPercent(_arg1:int):void{
iCurrentBonusInd = (iObstaclesInfo[_arg1][2] + 2);
iCurrentPercentInd = ((iObstaclesInfo[_arg1][3] * 10) - 1);
showPercent(iCurrentPercentInd);
showBonus(iCurrentBonusInd);
}
private function prevBonus():void{
if (iCurrentBonusInd == 0){
iCurrentBonusInd = (iBonuses.length - 1);
} else {
iCurrentBonusInd--;
};
showBonus(iCurrentBonusInd);
refreshCurrentFigureInfo();
}
private function showPercentByValue(_arg1:Number):void{
iCurrentPercentInd = ((_arg1 * 10) - 1);
showPercent(iCurrentPercentInd);
}
private function createColors():void{
var _local1:int;
var _local2:Sprite;
var _local3:Sprite;
_local2 = new Sprite();
_local2.graphics.beginFill(0);
_local2.graphics.drawRect(0, 0, 32, 32);
_local2.graphics.endFill();
_local3 = new Sprite();
_local3.graphics.beginFill(0);
_local3.graphics.drawRect(0, 0, 42, 42);
_local3.graphics.endFill();
iColorsCells = new Array();
iMatherialsCells = new Array();
_local1 = 0;
while (_local1 < 4) {
iColorsCells[_local1] = new Array();
iMatherialsCells[_local1] = new Array();
_local1++;
};
_local1 = 0;
while (_local1 < Hitz2L.iCandyColors.length) {
iColorsCells[Hitz2L.iCandyID][_local1] = createCell(_local2, Hitz2L.iCandyID, _local1);
this.addChild(iColorsCells[Hitz2L.iCandyID][_local1]);
iMatherialsCells[Hitz2L.iCandyID][_local1] = createCell(_local3, Hitz2L.iCandyID, _local1);
this.addChild(iMatherialsCells[Hitz2L.iCandyID][_local1]);
_local1++;
};
_local1 = 0;
while (_local1 < Hitz2L.iMetalColors.length) {
iColorsCells[Hitz2L.iMetalID][_local1] = createCell(_local2, Hitz2L.iMetalID, _local1);
this.addChild(iColorsCells[Hitz2L.iMetalID][_local1]);
iMatherialsCells[Hitz2L.iMetalID][_local1] = createCell(_local3, Hitz2L.iMetalID, _local1);
this.addChild(iMatherialsCells[Hitz2L.iMetalID][_local1]);
_local1++;
};
_local1 = 0;
while (_local1 < Hitz2L.iStoneColors.length) {
iColorsCells[Hitz2L.iStoneID][_local1] = createCell(_local2, Hitz2L.iStoneID, _local1);
this.addChild(iColorsCells[Hitz2L.iStoneID][_local1]);
iMatherialsCells[Hitz2L.iStoneID][_local1] = createCell(_local3, Hitz2L.iStoneID, _local1);
this.addChild(iMatherialsCells[Hitz2L.iStoneID][_local1]);
_local1++;
};
_local1 = 0;
while (_local1 < Hitz2L.iGelColors.length) {
iColorsCells[Hitz2L.iGelID][_local1] = createCell(_local2, Hitz2L.iGelID, _local1);
this.addChild(iColorsCells[Hitz2L.iGelID][_local1]);
iMatherialsCells[Hitz2L.iGelID][_local1] = createCell(_local3, Hitz2L.iGelID, _local1);
this.addChild(iMatherialsCells[Hitz2L.iGelID][_local1]);
_local1++;
};
placeColorsCells();
placeMatherialCells();
}
private function selectColor(_arg1:int):void{
var _local2:int;
var _local3:int;
iCurColorID = _arg1;
iColorsSelection.Pos((iColorsCells[0][_arg1].prX - 3), (iColorsCells[0][_arg1].prY - 3));
_local2 = 0;
while (_local2 < 4) {
_local3 = 0;
while (_local3 < Hitz2L.iCandyColors.length) {
iMatherialsCells[_local2][_local3].SetVisible((_local3 == _arg1));
_local3++;
};
_local2++;
};
if (iGrid.iSelectedFigureInd >= 0){
reInitObstacleColorMatherial(iGrid.iSelectedFigureInd, iCurColorID, iCurMatherialID);
};
}
private function mirror():void{
var _local1:int;
var _local2:int;
_local1 = iGrid.iFiguresList.length;
_local2 = 0;
while (_local2 < _local1) {
addObstacle(scaleFigure(mirrorHFigure(iGrid.iFiguresList[_local2])), iObstaclesInfo[_local2][0], iObstaclesInfo[_local2][1], iObstaclesInfo[_local2][2], iObstaclesInfo[_local2][3]);
iGrid.iFiguresList.push(CGeom.convertPolygonToClockWise(mirrorHFigure(iGrid.iFiguresList[_local2])));
_local2++;
};
_local1 = iGrid.iFiguresList.length;
_local2 = 0;
while (_local2 < _local1) {
addObstacle(scaleFigure(mirrorVFigure(iGrid.iFiguresList[_local2])), iObstaclesInfo[_local2][0], iObstaclesInfo[_local2][1], iObstaclesInfo[_local2][2], iObstaclesInfo[_local2][3]);
iGrid.iFiguresList.push(CGeom.convertPolygonToClockWise(mirrorVFigure(iGrid.iFiguresList[_local2])));
_local2++;
};
}
private function nextPercent():void{
if (iCurrentPercentInd == (iPercentCaptions.length - 1)){
iCurrentPercentInd = 0;
} else {
iCurrentPercentInd++;
};
showPercent(iCurrentPercentInd);
refreshCurrentFigureInfo();
}
public function getEditorInfo():Array{
return ([iGrid.iFiguresList, iObstaclesInfo]);
}
private function selectNextFigure():void{
if (iGrid.iFiguresList.length == 0){
return;
};
iGrid.iSelectedFigureInd++;
if (iGrid.iSelectedFigureInd >= iGrid.iFiguresList.length){
iGrid.iSelectedFigureInd = 0;
};
iGrid.selectPolygon(iGrid.iSelectedFigureInd);
refreshBonusAndPercent(iGrid.iSelectedFigureInd);
}
private function createPercents():void{
var _local1:int;
iPercentCaptions = new Array();
_local1 = 10;
while (_local1 <= 100) {
iPercentCaptions.push(Hitz2S.Header([null, 190, 25, "aqua1", (_local1.toString() + "%"), 0, 0]));
iPercentCaptions[(iPercentCaptions.length - 1)].Pos(605, 403);
if (iPercentCaptions.length > 1){
iPercentCaptions[(iPercentCaptions.length - 1)].visible = false;
};
this.addChild(iPercentCaptions[(iPercentCaptions.length - 1)]);
_local1 = (_local1 + 10);
};
}
}
}//package RES.EDITOR
Section 74
//CGrid (RES.EDITOR.CGrid)
package RES.EDITOR {
import ENGINE.DISPLAY.*;
import flash.events.*;
import flash.display.*;
import flash.geom.*;
import ENGINE.CORE.*;
import RES.GAME.*;
public class CGrid extends Sprite {
private var iDinamicSprite:Sprite;
private var iBackgroundSprite:Sprite;
public var iCols:int;
public var iFiguresList:Array;
private var iEditor:CEditor;
public var iRowHeight:Number;
private var iGridLayer:Sprite;
private var iCirclesSprite:Sprite;
private var iFocusedPoint:Point;
private var iDummyBmp:Bitmap;
private var iPointsSprite:Sprite;
public var iSelectedFigureInd:int;
private var iCurFigureChain:Array;
private var iState:int;
public var iColWidth:Number;
private var iCurrentFigureSprite:Sprite;
private var iWidth:Number;
public var iRows:int;
private var iStaticSprite:Sprite;
private var iHeight:Number;
public static const stNone:int = 0;
public static const stFigureConstruction:int = 1;
public function CGrid(_arg1:Number, _arg2:Number, _arg3:int, _arg4:int, _arg5:OSprite, _arg6:CEditor){
var _local7:BitmapData;
iEditor = _arg6;
iFiguresList = new Array();
_local7 = new BitmapData(_arg1, _arg2, true, 0);
iDummyBmp = new Bitmap(_local7);
this.addChild(iDummyBmp);
iBackgroundSprite = new Sprite();
this.addChild(iBackgroundSprite);
iGridLayer = new Sprite();
this.addChild(iGridLayer);
this.addChild(_arg5);
iPointsSprite = new Sprite();
this.addChild(iPointsSprite);
this.iStaticSprite = new Sprite();
this.addChild(iStaticSprite);
this.iCirclesSprite = new Sprite();
this.addChild(iCirclesSprite);
this.iDinamicSprite = new Sprite();
this.addChild(iDinamicSprite);
this.iCurrentFigureSprite = new Sprite();
this.addChild(iCurrentFigureSprite);
iWidth = _arg1;
iHeight = _arg2;
iRows = _arg4;
iCols = _arg3;
super();
drawGrid();
drawRullers();
addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
addEventListener(MouseEvent.CLICK, onClick);
addEventListener(MouseEvent.ROLL_OUT, onMouseOut);
State = stNone;
iSelectedFigureInd = -1;
}
public function onClick(_arg1:MouseEvent):void{
var _local2:Boolean;
var _local3:Point;
var _local4:int;
switch (State){
case stNone:
_local2 = false;
_local3 = getClickedPointF(_arg1.localX, _arg1.localY);
_local4 = 0;
while (_local4 < iFiguresList.length) {
if (CGeom.isPointInPolygon(iFiguresList[_local4], _local3)){
_local2 = true;
break;
};
_local4++;
};
if (_local2){
iSelectedFigureInd = _local4;
selectPolygon(_local4);
iEditor.refreshBonusAndPercent(_local4);
return;
};
iSelectedFigureInd = -1;
iStaticSprite.graphics.clear();
iCurFigureChain = new Array();
appendPointToFigureChain(_arg1.localX, _arg1.localY);
State = stFigureConstruction;
break;
case stFigureConstruction:
iSelectedFigureInd = -1;
appendPointToFigureChain(_arg1.localX, _arg1.localY);
break;
};
}
public function onMouseMove(_arg1:MouseEvent):void{
var _local2:Point;
_local2 = getClickedPoint(_arg1.localX, _arg1.localY);
if ((((((_local2.x <= iCols)) && ((_local2.y <= iRows)))) && (((!(iFocusedPoint)) || (!(_local2.equals(iFocusedPoint))))))){
iFocusedPoint = _local2;
repaintCircles();
};
if (((((iCurFigureChain) && ((iCurFigureChain.length > 0)))) && ((State == stFigureConstruction)))){
repaintLine(Math.floor(((_local2.x + 0.5) * iColWidth)), Math.floor(((_local2.y + 0.5) * iRowHeight)));
};
}
private function getClickedPointF(_arg1:Number, _arg2:Number):Point{
return (new Point(((Math.floor((_arg1 / iColWidth)) < (iCols + 1))) ? (_arg1 / iColWidth) : iCols, ((Math.floor((_arg2 / iRowHeight)) < (iRows + 1))) ? (_arg2 / iRowHeight) : iRows));
}
private function getClickedPoint(_arg1:Number, _arg2:Number):Point{
return (new Point(((Math.floor((_arg1 / iColWidth)) < (iCols + 1))) ? Math.floor((_arg1 / iColWidth)) : iCols, ((Math.floor((_arg2 / iRowHeight)) < (iRows + 1))) ? Math.floor((_arg2 / iRowHeight)) : iRows));
}
private function checkPointPossibility(_arg1:Point):Boolean{
var _local2:int;
var _local3:Boolean;
var _local4:Array;
var _local5:Array;
var _local6:Point;
var _local7:int;
_local3 = true;
if (iCurFigureChain.length == 0){
_local3 = false;
};
if ((((iCurFigureChain.length == 1)) && (!(_arg1.equals(iCurFigureChain[0]))))){
_local3 = false;
} else {
if (iCurFigureChain.length == 1){
return (false);
};
};
if (_local3){
_local4 = CGeom.getSegmentByTwoPoints(_arg1, iCurFigureChain[(iCurFigureChain.length - 1)]);
if (iCurFigureChain.length == 2){
if (((_arg1.equals(iCurFigureChain[0])) || (_arg1.equals(iCurFigureChain[1])))){
return (false);
};
};
_local2 = 0;
while (_local2 < (iCurFigureChain.length - 1)) {
_local5 = CGeom.getSegmentByTwoPoints(iCurFigureChain[_local2], iCurFigureChain[(_local2 + 1)]);
_local6 = CGeom.getSegmentsIntersectionPoint(_local4, _local5);
if (((((!(_local6)) || ((((((((Math.abs((_local6.x - _arg1.x)) < 1E-5)) && ((Math.abs((_local6.y - _arg1.y)) < 1E-5)))) && ((Math.abs((_local6.x - iCurFigureChain[0].x)) < 1E-5)))) && ((Math.abs((_local6.y - iCurFigureChain[0].y)) < 1E-5)))))) || ((((Math.abs((_local6.x - iCurFigureChain[(iCurFigureChain.length - 1)].x)) < 1E-5)) && ((Math.abs((_local6.y - iCurFigureChain[(iCurFigureChain.length - 1)].y)) < 1E-5)))))){
} else {
return (false);
};
_local2++;
};
};
_local2 = 0;
while (_local2 < iFiguresList.length) {
if (CGeom.isPointInPolygon(iFiguresList[_local2], _arg1)){
return (false);
};
if (iCurFigureChain.length > 0){
_local4 = CGeom.getSegmentByTwoPoints(_arg1, iCurFigureChain[(iCurFigureChain.length - 1)]);
_local7 = 0;
while (_local7 < (iFiguresList[_local2].length - 1)) {
_local5 = CGeom.getSegmentByTwoPoints(iFiguresList[_local2][_local7], iFiguresList[_local2][(_local7 + 1)]);
if ((((((Math.abs((_local4[0] - _local5[0])) < 1E-5)) && ((Math.abs((_local4[1] - _local5[1])) < 1E-5)))) && ((Math.abs((_local4[2] - _local5[2])) < 1E-5)))){
} else {
_local6 = CGeom.getSegmentsIntersectionPoint(_local4, _local5);
if (((((((((!(_local6)) || ((((Math.abs((_local6.x - _arg1.x)) < 1E-5)) && ((Math.abs((_local6.y - _arg1.y)) < 1E-5)))))) || ((((Math.abs((_local6.x - iFiguresList[_local2][_local7].x)) < 1E-5)) && ((Math.abs((_local6.y - iFiguresList[_local2][_local7].y)) < 1E-5)))))) || ((((Math.abs((_local6.x - iFiguresList[_local2][(_local7 + 1)].x)) < 1E-5)) && ((Math.abs((_local6.y - iFiguresList[_local2][(_local7 + 1)].y)) < 1E-5)))))) || ((((Math.abs((_local6.x - iCurFigureChain[(iCurFigureChain.length - 1)].x)) < 1E-5)) && ((Math.abs((_local6.y - iCurFigureChain[(iCurFigureChain.length - 1)].y)) < 1E-5)))))){
} else {
return (false);
};
};
_local7++;
};
};
_local2++;
};
return (true);
}
private function repaintCircles():void{
clearCircles();
iCirclesSprite.graphics.beginFill(0xFF0000);
iCirclesSprite.graphics.drawCircle(((iFocusedPoint.x + 0.5) * iColWidth), ((iFocusedPoint.y + 0.5) * iRowHeight), 3);
iCirclesSprite.graphics.endFill();
}
public function cancelCurrentFigure():void{
iStaticSprite.graphics.clear();
iSelectedFigureInd = -1;
if (((iCurFigureChain) && ((iCurFigureChain.length > 0)))){
iCurFigureChain = new Array();
State = stNone;
iDinamicSprite.graphics.clear();
iCurrentFigureSprite.graphics.clear();
};
}
public function onMouseOut(_arg1:MouseEvent):void{
clearCircles();
iFocusedPoint = null;
}
public function get State():int{
return (iState);
}
public function loadFromArray(_arg1:Array, _arg2:Array):void{
var _local3:int;
var _local4:Array;
var _local5:int;
iFiguresList = new Array();
iCurFigureChain = null;
_local3 = 0;
while (_local3 < _arg1.length) {
_local4 = new Array();
_local5 = 0;
while (_local5 < _arg1[_local3].length) {
_local4.push(new Point((((_arg1[_local3][_local5].x + 0.5) * iColWidth) / OGlobal.Scale), (((_arg1[_local3][_local5].y + 0.5) * iRowHeight) / OGlobal.Scale)));
_local5++;
};
iEditor.addObstacle(_local4, _arg2[_local3][0], _arg2[_local3][1], _arg2[_local3][2], _arg2[_local3][3]);
iFiguresList.push(_arg1[_local3]);
_local3++;
};
iCurrentFigureSprite.graphics.clear();
iDinamicSprite.graphics.clear();
}
private function clearCircles():void{
iCirclesSprite.graphics.clear();
}
private function checkCompletePolygon(_arg1:Array, _arg2:Point):Boolean{
var _local3:Array;
var _local4:int;
var _local5:int;
_arg1.push(_arg2);
_local3 = _arg1.slice(0, _arg1.length);
_local3 = CGeom.convertPolygonToClockWise(_local3);
_local4 = 0;
while (_local4 < iFiguresList.length) {
while (_local5 < iFiguresList[_local4].length) {
if (CGeom.isPointInPolygon(_local3, iFiguresList[_local4][_local5])){
_arg1.pop();
return (false);
};
_local5++;
};
_local4++;
};
_arg1.pop();
return (true);
}
private function drawRullersR(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int):void{
if (_arg5 >= 5){
return;
};
iGridLayer.graphics.lineStyle(1, 0xFFFFFF, (1 / _arg5));
iGridLayer.graphics.moveTo(Math.floor(((iColWidth / 2) + (((_arg2 + _arg1) / 2) * iColWidth))), Math.floor(((iRowHeight / 2) + (_arg3 * iRowHeight))));
iGridLayer.graphics.lineTo(Math.floor(((iColWidth / 2) + (((_arg2 + _arg1) / 2) * iColWidth))), Math.floor(((iRowHeight / 2) + (_arg4 * iRowHeight))));
iGridLayer.graphics.moveTo(Math.floor(((iColWidth / 2) + (_arg1 * iColWidth))), Math.floor(((iRowHeight / 2) + (((_arg4 + _arg3) / 2) * iColWidth))));
iGridLayer.graphics.lineTo(Math.floor(((iColWidth / 2) + (_arg2 * iColWidth))), Math.floor(((iRowHeight / 2) + (((_arg4 + _arg3) / 2) * iColWidth))));
drawRullersR(_arg1, ((_arg2 + _arg1) / 2), _arg3, ((_arg4 + _arg3) / 2), (_arg5 + 1));
drawRullersR(_arg1, ((_arg2 + _arg1) / 2), ((_arg4 + _arg3) / 2), _arg4, (_arg5 + 1));
drawRullersR(((_arg2 + _arg1) / 2), _arg2, _arg3, ((_arg4 + _arg3) / 2), (_arg5 + 1));
drawRullersR(((_arg2 + _arg1) / 2), _arg2, ((_arg4 + _arg3) / 2), _arg4, (_arg5 + 1));
}
private function drawRullers():void{
drawRullersR(0, iCols, 0, iRows, 0);
}
public function clear():void{
iStaticSprite.graphics.clear();
iDinamicSprite.graphics.clear();
iCurrentFigureSprite.graphics.clear();
iCurFigureChain = new Array();
iFiguresList = new Array();
iSelectedFigureInd = -1;
}
public function selectPolygon(_arg1:int):void{
var _local2:int;
iStaticSprite.graphics.clear();
iStaticSprite.graphics.lineStyle(2, 0xFF0000, 1, true, "normal", "round", "round", 0);
iStaticSprite.graphics.moveTo(((iFiguresList[_arg1][0].x + 0.5) * iColWidth), ((iFiguresList[_arg1][0].y + 0.5) * iRowHeight));
_local2 = 1;
while (_local2 < iFiguresList[_arg1].length) {
iStaticSprite.graphics.lineTo(((iFiguresList[_arg1][_local2].x + 0.5) * iColWidth), ((iFiguresList[_arg1][_local2].y + 0.5) * iRowHeight));
_local2++;
};
}
private function drawGrid():void{
var _local1:int;
var _local2:int;
iBackgroundSprite.graphics.beginFill(0, 0);
iBackgroundSprite.graphics.drawRect(0, 0, iWidth, iHeight);
iBackgroundSprite.graphics.endFill();
iRowHeight = (iHeight / (iRows + 1));
iColWidth = (iWidth / (iCols + 1));
iPointsSprite.graphics.beginFill(0xFFFFFF, 1);
_local1 = 0;
while (_local1 <= iCols) {
_local2 = 0;
while (_local2 <= iRows) {
iPointsSprite.graphics.drawCircle(Math.floor(((iColWidth / 2) + (_local1 * iColWidth))), Math.floor(((iRowHeight / 2) + (_local2 * iRowHeight))), 1);
_local2++;
};
_local1++;
};
iPointsSprite.graphics.endFill();
}
public function removeFigure(_arg1:int):void{
iFiguresList.splice(_arg1, 1);
iStaticSprite.graphics.clear();
}
private function repaintLine(_arg1:int, _arg2:int):void{
iDinamicSprite.graphics.clear();
iDinamicSprite.graphics.lineStyle(2, 0xFF0000, 1, true, "normal", "round", "round", 0);
iDinamicSprite.graphics.moveTo(Math.floor(((iCurFigureChain[(iCurFigureChain.length - 1)].x + 0.5) * iColWidth)), Math.floor(((iCurFigureChain[(iCurFigureChain.length - 1)].y + 0.5) * iRowHeight)));
iDinamicSprite.graphics.lineTo(_arg1, _arg2);
}
public function Free():void{
removeEventListener(MouseEvent.CLICK, onClick);
removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
removeEventListener(MouseEvent.ROLL_OUT, onMouseOut);
}
private function appendPointToFigureChain(_arg1:Number, _arg2:Number):void{
var _local3:Point;
var _local4:Array;
var _local5:int;
_local3 = getClickedPoint(_arg1, _arg2);
if (!checkPointPossibility(_local3)){
return;
};
if ((((((iCurFigureChain.length > 1)) && (_local3.equals(iCurFigureChain[0])))) && (!(checkCompletePolygon(iCurFigureChain, _local3))))){
return;
};
iCurFigureChain.push(_local3);
if (iCurFigureChain.length > 1){
repaintCurFigureSprite();
};
if ((((iCurFigureChain.length > 1)) && (_local3.equals(iCurFigureChain[0])))){
_local4 = new Array();
_local5 = 0;
while (_local5 < iCurFigureChain.length) {
_local4.push(new Point((((iCurFigureChain[_local5].x + 0.5) * iColWidth) / OGlobal.Scale), (((iCurFigureChain[_local5].y + 0.5) * iRowHeight) / OGlobal.Scale)));
_local5++;
};
iEditor.addCurrentObstacle(_local4);
iFiguresList.push(CGeom.convertPolygonToClockWise(iCurFigureChain));
iCurFigureChain = null;
iCurrentFigureSprite.graphics.clear();
iDinamicSprite.graphics.clear();
State = stNone;
};
}
public function getLevel():Array{
var _local1:Array;
var _local2:Number;
var _local3:int;
var _local4:Point;
var _local5:Array;
var _local6:int;
_local1 = new Array();
_local1[0] = new Array();
_local1[1] = new Array();
_local2 = (Hitz2L.iBaseSize / (iCols - 1));
_local3 = 0;
while (_local3 < iFiguresList.length) {
_local4 = getMinPoint(iFiguresList[_local3]);
_local5 = new Array();
_local6 = 0;
while (_local6 < iFiguresList[_local3].length) {
_local5.push(((iFiguresList[_local3][_local6].x - _local4.x) * _local2), ((iFiguresList[_local3][_local6].y - _local4.y) * _local2));
_local6++;
};
_local1[0].push(_local5);
_local1[1] = _local1[1].concat(_local3, 0, 0, (_local4.x * _local2), (_local4.y * _local2), 0, 0);
_local3++;
};
return (_local1);
}
private function repaintStaticSprite():void{
var _local1:int;
var _local2:int;
iStaticSprite.graphics.clear();
iStaticSprite.graphics.lineStyle(1, 0, 1, true, "normal", "round", "round", 0);
_local1 = 0;
while (_local1 < iFiguresList.length) {
iStaticSprite.graphics.moveTo(Math.floor(((iFiguresList[_local1][0].x + 0.5) * iColWidth)), Math.floor(((iFiguresList[_local1][0].y + 0.5) * iRowHeight)));
_local2 = 1;
while (_local2 < iFiguresList[_local1].length) {
iStaticSprite.graphics.lineTo(Math.floor(((iFiguresList[_local1][_local2].x + 0.5) * iColWidth)), Math.floor(((iFiguresList[_local1][_local2].y + 0.5) * iRowHeight)));
_local2++;
};
_local1++;
};
}
private function getMinPoint(_arg1:Array):Point{
var _local2:Point;
var _local3:Point;
_local2 = new Point(int.MAX_VALUE, int.MAX_VALUE);
for each (_local3 in _arg1) {
if (_local3.x < _local2.x){
_local2.x = _local3.x;
};
if (_local3.y < _local2.y){
_local2.y = _local3.y;
};
};
return (_local2);
}
private function repaintCurFigureSprite():void{
iCurrentFigureSprite.graphics.lineStyle(2, 0xFF0000, 1, true, "normal", "round", "round", 0);
iCurrentFigureSprite.graphics.moveTo(Math.floor(((iCurFigureChain[(iCurFigureChain.length - 2)].x + 0.5) * iColWidth)), Math.floor(((iCurFigureChain[(iCurFigureChain.length - 2)].y + 0.5) * iRowHeight)));
iCurrentFigureSprite.graphics.lineTo(Math.floor(((iCurFigureChain[(iCurFigureChain.length - 1)].x + 0.5) * iColWidth)), Math.floor(((iCurFigureChain[(iCurFigureChain.length - 1)].y + 0.5) * iRowHeight)));
}
public function set State(_arg1:int):void{
iState = _arg1;
}
}
}//package RES.EDITOR
Section 75
//CGameBase (RES.GAME.CONTAINERS.CGameBase)
package RES.GAME.CONTAINERS {
import ENGINE.DISPLAY.*;
import flash.events.*;
import ENGINE.INTERFACE.*;
import RES.GAME.OBSERVERS.*;
import RES.GAME.FIELD.OBSERVERS.*;
import RES.GAME.FIELD.BUILDER.*;
import RES.GAME.*;
import RES.GAME.FIELD.*;
import flash.net.*;
import RES.GAME.INDICATORS.*;
public class CGameBase extends OIObject {
public var iPlayerScore:OCounter;
private var iPlayerField:CField;
protected var state:int;
protected var iLoading:CLoadingDisplayer;
protected var iCurrentLevel:Array;
private var iSeed:int;
public var iCurrentLevelCaption:OBitmap;
public var iPlayerScoreCaption:OBitmap;
private var iBuilder:CFieldBuilder;
public var iPause:OButton;
public var iLinkButton:OButton;
private var iDirector:CFieldDirector;
public var iGameName:OIObject;
private var iLivesIndicator:CLivesIndicator;
protected var iProgress:int;
public var iPauseText:OBitmap;
protected var iConnector:IGameObserver;
public var iSiteName:OBitmap;
public static const stInGame:int = 3;
public static const stNone:int = 0;
public static const stRemovingLoading:int = 2;
public static const stLoading:int = 1;
public function CGameBase(_arg1:Array, _arg2:Array, _arg3:String, _arg4:int){
iSeed = _arg4;
Hitz2L.CGameBase[5][5] = _arg3;
this.iCurrentLevel = _arg2;
super(_arg1);
iLivesIndicator = new CLivesIndicator(CGraphicsHolder.createGreyBall(20), Hitz2L.iStartLives);
this.addChild(iLivesIndicator);
iLivesIndicator.Pos(300, 580);
elemsVisible(false);
IState = stLoading;
}
public function set prDemo(_arg1:String):void{
iConnector.sendDemo(_arg1);
}
public function notifyPlayerCompletedLevel():void{
}
public function set prLives(_arg1:int):void{
iLivesIndicator.setQuantity(_arg1);
}
override public function Free():void{
if (stage.hasEventListener(KeyboardEvent.KEY_DOWN)){
stage.removeEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
};
this.removeEventListener(Event.DEACTIVATE, onDeactivate);
if (iPlayerField){
this.removeChild(iPlayerField);
iPlayerField.Free();
iPlayerField = null;
};
super.Free();
}
public function onTimer():void{
switch (state){
case stLoading:
if (!iLoading.prAnimation){
iProgress = iDirector.build();
if (iProgress == 100){
IState = stRemovingLoading;
};
iLoading.setProgess(iProgress);
};
break;
case stRemovingLoading:
if (!iLoading.prAnimation){
this.removeChild(iLoading);
iLoading.Free();
iLoading = null;
IState = stInGame;
};
break;
case stInGame:
iPlayerField.onTimer();
break;
};
}
private function onKeyDown(_arg1:KeyboardEvent):void{
if (_arg1.keyCode == 27){
resumeGame();
};
}
public function connect(_arg1:IGameObserver):void{
iConnector = _arg1;
}
protected function pauseGame():void{
iPauseText.prVisible = true;
iPlayerField.pause();
}
protected function elemsVisible(_arg1:Boolean):void{
iPlayerScoreCaption.prVisible = _arg1;
iCurrentLevelCaption.prVisible = _arg1;
iGameName.SetVisible(_arg1);
iSiteName.prVisible = _arg1;
iLinkButton.visible = _arg1;
iPause.SetVisible(_arg1);
}
public function notifyPlayerStartedPlay():void{
iConnector.notifyGameStarted();
}
override public function OnPress(_arg1:Event, _arg2):void{
var _local3:URLRequest;
if (_arg2 == iLinkButton){
_local3 = new URLRequest(Hitz2L.strConnect2URL);
navigateToURL(_local3);
} else {
if (_arg2 == iPause){
if (iPlayerField){
if (iPlayerField.iPause){
resumeGame();
} else {
pauseGame();
};
};
};
};
super.OnPress(_arg1, _arg2);
}
public function set IState(_arg1:int):void{
state = _arg1;
switch (_arg1){
case stLoading:
iLoading = new CLoadingDisplayer();
this.addChild(iLoading);
iBuilder = new CPlayerFieldBuilder(iSeed);
iDirector = new CFieldDirector(iBuilder);
(iBuilder as CPlayerFieldBuilder).iSize = Hitz2L.iPlayerFieldSize;
(iBuilder as CPlayerFieldBuilder).iLevelFiguresInfo = iCurrentLevel[0];
(iBuilder as CPlayerFieldBuilder).iLevel = iCurrentLevel[1];
(iBuilder as CPlayerFieldBuilder).iPlatformsInfo = iCurrentLevel[2];
(iBuilder as CPlayerFieldBuilder).iPos = Hitz2L.iPlayerFieldPos;
(iBuilder as CPlayerFieldBuilder).iPlatformsVisualInfo = iCurrentLevel[3];
break;
case stRemovingLoading:
iLoading.prVisible = false;
break;
case stInGame:
this.addEventListener(Event.DEACTIVATE, onDeactivate);
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
iConnector.notifyGameStarted();
iPlayerField = (iBuilder.getProduct() as CField);
iPlayerField.connect(new CPlayerFieldObserver(this));
iPlayerField.Pos((Hitz2L.iPlayerFieldPos.x - (Hitz2L.iPlayerFieldSize / 2)), (Hitz2L.iPlayerFieldPos.y - (Hitz2L.iPlayerFieldSize / 2)));
this.addChild(iPlayerField);
if (iPauseText){
this.swapChildren(iPlayerField, iPauseText);
};
elemsVisible(true);
iDirector = null;
iBuilder = null;
break;
};
}
public function set prPlayerScore(_arg1:int):void{
iPlayerScore.prValue = _arg1;
}
private function onDeactivate(_arg1:Event):void{
pauseGame();
}
public function notifyPlayerLose(_arg1:int):void{
iConnector.notifyFailedLevel(_arg1);
}
public function get IState():int{
return (state);
}
protected function resumeGame():void{
iPauseText.prVisible = false;
iPlayerField.resume();
}
public function notifyPlayerWin(_arg1:int, _arg2:int=0):void{
iConnector.notifyCompletedLevel(_arg1, _arg2);
}
}
}//package RES.GAME.CONTAINERS
Section 76
//CGameRecordedMP (RES.GAME.CONTAINERS.CGameRecordedMP)
package RES.GAME.CONTAINERS {
import ENGINE.DISPLAY.*;
import flash.events.*;
import ENGINE.INTERFACE.*;
import RES.GAME.FIELD.OBSERVERS.*;
import RES.GAME.FIELD.BUILDER.*;
import RES.GAME.FIELD.DEMO.*;
public class CGameRecordedMP extends CGameBase {
private var iOpponentCompleted:Boolean;
public var iEnemyScoreValue:OCounter;
private var iBuildingOpponentFieldState:int;
public var iOpponentCaption:OBitmap;
public var iOpponentName:OBitmap;
private var iOpponentResult:OBitmap;
public var iDemoStr:String;
private var iPlayerCompleted:Boolean;
public var iOpponentPanel:OBitmap;
public var iEnemyScoreCaption:OBitmap;
private var iOpponentFieldBuilder:CFieldBuilder;
private var iOpponentScore:int;
public var iMenu:OButton;
private var iOpponentField:CDemoField;
public function CGameRecordedMP(_arg1:String, _arg2:String, _arg3:Array, _arg4:String, _arg5:int){
var _local6:Array;
iOpponentCompleted = false;
iPlayerCompleted = false;
Hitz2L.CGameRecordedMP[2][4] = _arg1;
iDemoStr = _arg2;
_local6 = Hitz2L.CGameBase.concat(Hitz2L.CGameRecordedMP);
super(_local6, _arg3, _arg4, _arg5);
}
private function invisibleOpponentIndicators():void{
iOpponentCaption.prVisible = false;
iOpponentName.prVisible = false;
iEnemyScoreCaption.prVisible = false;
iEnemyScoreValue.SetVisible(false);
}
public function notifyOpponentLose():void{
invisibleOpponentIndicators();
iOpponentResult = Hitz2S.Header([null, 200, 20, "red", ((((Hitz2L.strOpponentFailedLevel + "\n") + Hitz2L.strWithScore) + ":\n") + iOpponentScore.toString()), Hitz2L.CGameRecordedMP[0][5], ((Hitz2L.CGameRecordedMP[0][6] + (Hitz2L.CGameRecordedMP[0][2] / 2)) - 10)]);
this.addChild(iOpponentResult);
}
override public function notifyPlayerCompletedLevel():void{
if (!iOpponentCompleted){
iPlayerCompleted = true;
};
}
override public function Free():void{
if (iOpponentField){
try {
this.removeChild(iOpponentField);
} catch(e:Error) {
};
iOpponentField.Free();
iOpponentField = null;
};
super.Free();
}
override public function onTimer():void{
super.onTimer();
switch (state){
case stLoading:
if ((((iProgress > 10)) && ((iBuildingOpponentFieldState == 0)))){
iOpponentFieldBuilder.buildLayers();
iOpponentFieldBuilder.buildBase();
iOpponentFieldBuilder.buildGraphics();
iBuildingOpponentFieldState++;
};
if ((((iProgress > 40)) && ((iBuildingOpponentFieldState == 1)))){
iOpponentFieldBuilder.buildObstacles();
iBuildingOpponentFieldState++;
};
break;
case stInGame:
if (iOpponentField){
iOpponentField.onTimer();
};
};
}
override protected function pauseGame():void{
super.pauseGame();
if (iOpponentField){
iOpponentField.pause();
};
}
override protected function elemsVisible(_arg1:Boolean):void{
super.elemsVisible(_arg1);
iEnemyScoreCaption.prVisible = _arg1;
iMenu.SetVisible(_arg1);
iOpponentCaption.prVisible = _arg1;
iOpponentName.prVisible = _arg1;
iEnemyScoreValue.SetVisible(_arg1);
iOpponentPanel.prVisible = _arg1;
if (iOpponentResult){
iOpponentResult.prVisible = _arg1;
};
}
public function notifyOpponentCompletedLevel():void{
invisibleOpponentIndicators();
iOpponentResult = Hitz2S.Header([null, 200, 20, "aqua1", ((((Hitz2L.strOpponentCompletedLevel + "\n") + Hitz2L.strWithScore) + ":\n") + iOpponentScore.toString()), Hitz2L.CGameRecordedMP[0][5], ((Hitz2L.CGameRecordedMP[0][6] + (Hitz2L.CGameRecordedMP[0][2] / 2)) - 10)]);
this.addChild(iOpponentResult);
if (!iPlayerCompleted){
iOpponentCompleted = true;
};
}
override public function notifyPlayerStartedPlay():void{
this.addChild(iOpponentField);
}
override public function OnPress(_arg1:Event, _arg2):void{
if (_arg2 == iMenu){
iOpponentField.stop();
if (iConnector){
this.iConnector.notifyExit();
};
};
super.OnPress(_arg1, _arg2);
}
override public function set IState(_arg1:int):void{
super.IState = _arg1;
switch (state){
case stLoading:
iOpponentFieldBuilder = new COpponentFieldBuilder();
(iOpponentFieldBuilder as COpponentFieldBuilder).iLevelFiguresInfo = iCurrentLevel[0];
(iOpponentFieldBuilder as COpponentFieldBuilder).iLevel = iCurrentLevel[1];
(iOpponentFieldBuilder as COpponentFieldBuilder).iDemo = iDemoStr;
iBuildingOpponentFieldState = 0;
break;
case stRemovingLoading:
iOpponentField = (iOpponentFieldBuilder.getProduct() as CDemoField);
iOpponentField.connect(new COpponentFieldObserver(this));
iOpponentField.Pos((Hitz2L.iOpponentFieldPos.x - (Hitz2L.iOpponentFieldSize / 2)), (Hitz2L.iOpponentFieldPos.y - (Hitz2L.iOpponentFieldSize / 2)));
break;
case stInGame:
iOpponentField.startDemo();
};
}
override protected function resumeGame():void{
super.resumeGame();
if (iOpponentField){
iOpponentField.resume();
};
}
override public function notifyPlayerWin(_arg1:int, _arg2:int=0):void{
iOpponentField.stop();
super.notifyPlayerWin(_arg1, (iPlayerCompleted) ? iOpponentScore : 0);
}
public function setOpponentScore(_arg1:int):void{
iOpponentScore = _arg1;
iEnemyScoreValue.prValue = _arg1;
}
}
}//package RES.GAME.CONTAINERS
Section 77
//CGameSingle (RES.GAME.CONTAINERS.CGameSingle)
package RES.GAME.CONTAINERS {
import flash.events.*;
import ENGINE.INTERFACE.*;
import ENGINE.SMARTFOX.*;
import RES.PANELS.*;
public class CGameSingle extends CGameBase {
private var iBanners:CBannersPanel;
public var iMenu:OButton;
public function CGameSingle(_arg1:Array, _arg2:String, _arg3:int){
var _local4:Array;
_local4 = Hitz2L.CGameBase.concat(Hitz2L.CGameSingle);
createBanners();
super(_local4, _arg1, _arg2, _arg3);
}
private function createBanners():void{
iBanners = new CBannersPanel();
iBanners.State = ((Hitz2L.iMP.State)!=OMultiplayer.stInZone) ? CBannersPanel.stOnline : CBannersPanel.stOffline;
iBanners.Pos(Hitz2L.iBannersPos.x, Hitz2L.iBannersPos.y);
this.addChild(iBanners);
}
override protected function elemsVisible(_arg1:Boolean):void{
super.elemsVisible(_arg1);
iMenu.SetVisible(_arg1);
iBanners.SetVisible(_arg1);
}
override public function OnPress(_arg1:Event, _arg2):void{
switch (_arg2){
case iMenu:
if (iConnector){
this.iConnector.notifyExit();
};
break;
};
super.OnPress(_arg1, _arg2);
}
}
}//package RES.GAME.CONTAINERS
Section 78
//CBall (RES.GAME.FIELD.BALL.CBall)
package RES.GAME.FIELD.BALL {
import ENGINE.DISPLAY.*;
import flash.geom.*;
import RES.GAME.FIELD.PLATFORMS.*;
import RES.GAME.*;
public class CBall extends OSprite {
private var iBall:Array;
public var iV:Point;
public var iW:Number;
public var iSize:int;
private var iAngle:Number;
public var iA:Point;
private var iGraphics:CGraphicsHolder;
public var iSizeInd:int;
public var fireBall:Boolean;
private var iGPlatform:CPlatform;
private var iState:int;
public var iScalarVelocity:Number;
public static const stGlued:int = 3;
public static const stNormal:int = 2;
public static const stNone:int = 0;
public static const stShow:int = 1;
public function CBall(_arg1:int, _arg2:int, _arg3:Array, _arg4:CGraphicsHolder){
iGraphics = _arg4;
iSize = _arg1;
iSizeInd = _arg2;
super();
createGraphics(iGraphics.iBalls[_arg2]);
State = CBall.stShow;
iAngle = 0;
}
private function clearGraphics():void{
var _local1:OBitmap;
for each (_local1 in iBall) {
this.removeChild(_local1);
};
}
private function onNormalTimer():void{
var _local1:Number;
var _local2:Point;
var _local3:Point;
var _local4:Point;
var _local5:int;
var _local6:int;
if (iV.y == 0){
iV.y = (Math.random() / 10);
};
if (iV.x == 0){
iV.x = (Math.random() / 10);
};
if (iV.length > iScalarVelocity){
iV.normalize((iV.length * 0.8));
if (iV.length < iScalarVelocity){
iV.normalize(iScalarVelocity);
};
};
_local1 = this.iV.length;
_local2 = new Point(-(iV.x), -(iV.y));
_local2.normalize((this.iV.length * 0.002));
_local3 = new Point((iW * iV.y), (-(iW) * iV.x));
_local3.normalize((this.iV.length * 0.002));
_local4 = _local2.add(_local3);
this.iV = this.iV.add(_local4);
iV.normalize(_local1);
iAngle = (iAngle + (iW * 50));
_local5 = (Math.floor(Math.abs(iAngle)) % 30);
_local6 = 0;
while (_local6 < iBall.length) {
if (_local6 == _local5){
iBall[_local6].visible = true;
} else {
if (iBall[_local6].visible){
iBall[_local6].visible = false;
};
};
_local6++;
};
iW = (iW * 0.95);
}
private function onGluedTimer():void{
this.prX = iGPlatform.getCenterPos();
}
public function clone():CBall{
var _local1:CBall;
_local1 = new CBall(iSize, iSizeInd, iBall, iGraphics);
_local1.fireBall = fireBall;
_local1.State = stNormal;
return (_local1);
}
public function setVelocity(_arg1:Point):void{
this.iV = _arg1;
this.iScalarVelocity = iV.length;
iW = 0;
}
public function unglue():void{
this.iGPlatform = null;
this.iState = CBall.stNormal;
}
public function get State():int{
return (iState);
}
public function setSize(_arg1:int, _arg2:Number, _arg3:Number):void{
var _local4:int;
iSize = _arg3;
iSizeInd = _arg1;
clearGraphics();
_local4 = (fireBall) ? Hitz2L.iBallSizes.length : 0;
createGraphics(iGraphics.iBalls[(iSizeInd + _local4)]);
}
public function get prAngularVelocity():Number{
return (iW);
}
public function glueTo(_arg1:CPlatform):void{
this.iGPlatform = _arg1;
}
public function onTimer():void{
switch (iState){
case CBall.stShow:
if (iGPlatform){
State = stGlued;
} else {
State = stNormal;
};
break;
case CBall.stGlued:
onGluedTimer();
break;
case CBall.stNormal:
onNormalTimer();
break;
};
}
public function get prSizeInd():int{
return (iSizeInd);
}
public function isGlued():Boolean{
return ((iGPlatform) ? true : false);
}
public function setFireBall():void{
fireBall = true;
clearGraphics();
createGraphics(iGraphics.iBalls[(iSizeInd + Hitz2L.iBallSizes.length)]);
}
private function createGraphics(_arg1:Array):void{
var _local2:OBitmap;
var _local3:int;
var _local4:OBitmap;
this.iBall = new Array();
for each (_local2 in _arg1) {
_local4 = new OBitmap();
_local4.CopyFrom(_local2);
this.addChild(_local4);
this.iBall.push(_local4);
};
_local3 = 0;
while (_local3 < iBall.length) {
this.iBall[_local3].visible = (_local3 == 0);
_local3++;
};
}
public function set State(_arg1:int):void{
iState = _arg1;
}
}
}//package RES.GAME.FIELD.BALL
Section 79
//CBallsContainer (RES.GAME.FIELD.BALL.CBallsContainer)
package RES.GAME.FIELD.BALL {
import ENGINE.DISPLAY.*;
import flash.geom.*;
import RES.GAME.*;
import RES.GAME.FIELD.TAIL.*;
public class CBallsContainer {
private var iGraphics:CGraphicsHolder;
private var iParentSprite:OSprite;
public var iBallsCurrentSpeed:int;
private var iScale:Number;
public var iNewSizeInd:int;
public var iBallSizes:Array;
private var iBalls:Array;
private var iBallsToChangeSize:Array;
private var iBallTails:CBallTailElemsContainer;
public function CBallsContainer(_arg1:Number, _arg2:CGraphicsHolder, _arg3:OSprite){
iBallsCurrentSpeed = Hitz2L.iBallNormalSpeed;
iScale = _arg1;
iGraphics = _arg2;
iParentSprite = _arg3;
init();
iNewSizeInd = 1;
}
public function addBall(_arg1:int, _arg2:Number, _arg3:Number):CBall{
var _local4:CBall;
_local4 = new CBall(iBallSizes[_arg1], _arg1, iGraphics.iBalls[_arg1], iGraphics);
_local4.Pos(_arg2, _arg3);
iBallTails.createTailForBall(_local4);
iBalls.push(_local4);
iParentSprite.addChild(_local4);
return (_local4);
}
public function setBallSize(_arg1:CBall):void{
var _local2:int;
iBallTails.removeTailFromBall(_arg1);
_arg1.setSize(iNewSizeInd, iScale, iBallSizes[iNewSizeInd]);
iBallTails.createTailForBall(_arg1);
_local2 = iBallsToChangeSize.indexOf(_arg1);
if (_local2 >= 0){
iBallsToChangeSize.splice(_local2, 1);
};
}
public function normalBallApply():void{
setBallsSize(1);
}
public function setBallsSize(_arg1:int):void{
var _local2:Boolean;
var _local3:CBall;
_local2 = true;
for each (_local3 in iBalls) {
if (_local3.iSizeInd != _arg1){
_local2 = false;
break;
};
};
if ((((iNewSizeInd == _arg1)) || (_local2))){
return;
};
iNewSizeInd = _arg1;
iBallsToChangeSize = new Array();
for each (_local3 in iBalls) {
iBallsToChangeSize.push(_local3);
};
}
private function init():void{
var _local1:int;
iBalls = new Array();
iBallSizes = new Array();
_local1 = 0;
while (_local1 < Hitz2L.iBallSizes.length) {
iBallSizes[_local1] = (Hitz2L.iBallSizes[_local1] * iScale);
_local1++;
};
iBallTails = new CBallTailElemsContainer(iGraphics);
iParentSprite.addChild(iBallTails);
}
public function multiballApply():void{
var _local1:int;
var _local2:CBall;
var _local3:Point;
if (((!(iBalls)) || (!(iBalls[0])))){
return;
};
_local1 = iBalls.length;
_local2 = addBall(iBalls[0].iSizeInd, iBalls[0].prX, iBalls[0].prY);
_local3 = new Point(((Math.random() * 10) - 5), ((Math.random() * 10) - 5));
_local3.normalize(iBallsCurrentSpeed);
_local2.setVelocity(_local3);
_local2.iW = Math.random();
}
public function get prItems():Array{
return (iBalls);
}
public function fireBallApply():void{
var _local1:CBall;
for each (_local1 in iBalls) {
iBallTails.removeTailFromBall(_local1);
_local1.setFireBall();
iBallTails.createTailForBall(_local1);
};
}
public function lowSpeedApply():void{
var _local1:CBall;
iBallsCurrentSpeed = Hitz2L.iBallLowSpeed;
for each (_local1 in iBalls) {
_local1.iScalarVelocity = iBallsCurrentSpeed;
};
}
public function removeBall(_arg1:CBall):void{
var _local2:int;
var _local3:int;
_local2 = iBalls.indexOf(_arg1);
iBallTails.removeTailFromBall(iBalls[_local2]);
iBalls.splice(_local2, 1);
if (iBallsToChangeSize){
_local3 = 0;
while (_local3 < iBallsToChangeSize.length) {
if (iBallsToChangeSize[_local3] == _arg1){
iBallsToChangeSize.splice(_local3, 1);
break;
};
_local3++;
};
};
_arg1.Free();
_arg1 = null;
}
public function onTimer():void{
var _local1:CBall;
for each (_local1 in iBalls) {
if (_local1.State == CBall.stNormal){
iBallTails.posTailTo(_local1.prX, _local1.prY, _local1);
};
};
iBallTails.onTimer();
}
public function highSpeedApply():void{
var _local1:CBall;
iBallsCurrentSpeed = Hitz2L.iBallHighSpeed;
for each (_local1 in iBalls) {
_local1.iScalarVelocity = iBallsCurrentSpeed;
};
}
public function smallBallApply():void{
setBallsSize(0);
}
public function get prChangingItems():Array{
if (!iBallsToChangeSize){
return (null);
};
return (((iBallsToChangeSize.length > 0)) ? iBallsToChangeSize : null);
}
public function normalSpeedApply():void{
var _local1:CBall;
iBallsCurrentSpeed = Hitz2L.iBallNormalSpeed;
for each (_local1 in iBalls) {
_local1.iScalarVelocity = iBallsCurrentSpeed;
};
}
public function ultraSpeedApply():void{
var _local1:CBall;
iBallsCurrentSpeed = Hitz2L.iBallUltraSpeed;
for each (_local1 in iBalls) {
_local1.iScalarVelocity = iBallsCurrentSpeed;
};
}
public function bigBallApply():void{
setBallsSize(2);
}
}
}//package RES.GAME.FIELD.BALL
Section 80
//CBonus (RES.GAME.FIELD.BONUSES.CBonus)
package RES.GAME.FIELD.BONUSES {
import ENGINE.DISPLAY.*;
public class CBonus extends OSprite {
private var iBitmap:OBitmap;
public var iID:int;
public function CBonus(_arg1:OBitmap, _arg2:int){
iID = _arg2;
iBitmap = new OBitmap();
iBitmap.CopyFrom(_arg1);
this.addChild(iBitmap);
}
public function onTimer():void{
this.prY = (this.prY + 3);
}
}
}//package RES.GAME.FIELD.BONUSES
Section 81
//CBonusesContainer (RES.GAME.FIELD.BONUSES.CBonusesContainer)
package RES.GAME.FIELD.BONUSES {
import ENGINE.DISPLAY.*;
import flash.geom.*;
import RES.GAME.FIELD.PARTICLES.*;
import ENGINE.CORE.*;
import RES.GAME.*;
import RES.GAME.FIELD.*;
public class CBonusesContainer extends OSprite {
private var iGraphics:CGraphicsHolder;
public var iField:CField;
private var iParticles:CParticlesContainer;
private var iBonuses:Array;
public function CBonusesContainer(_arg1:CGraphicsHolder, _arg2:CParticlesContainer){
iParticles = _arg2;
iGraphics = _arg1;
iBonuses = new Array();
}
public function addBonus(_arg1:int, _arg2:int, _arg3:int):void{
iBonuses.push(new CBonus(iGraphics.iBonuses[_arg1], _arg1));
iBonuses[(iBonuses.length - 1)].prX = _arg2;
iBonuses[(iBonuses.length - 1)].prY = _arg3;
this.addChild(iBonuses[(iBonuses.length - 1)]);
}
private function applyBonus(_arg1:int):void{
if (!iField){
return;
};
switch (_arg1){
case Hitz2L.iBonusAddBallID:
iField.addMultiball();
break;
case Hitz2L.iBonusUltraSpeedID:
iField.addUltraSpeed();
break;
case Hitz2L.iBonusHighSpeedID:
iField.addHighSpeed();
break;
case Hitz2L.iBonusLowSpeedID:
iField.addLowSpeed();
break;
case Hitz2L.iBonusNormalSpeedID:
iField.addNormalSpeed();
break;
case Hitz2L.iBonusSmallBallID:
iField.addSmallBall();
break;
case Hitz2L.iBonusBigBallID:
iField.addBigBall();
break;
case Hitz2L.iBonusNormalBallID:
iField.addNormalBall();
break;
case Hitz2L.iBonusShape1ID:
iField.setPlatformShape(0);
break;
case Hitz2L.iBonusShape2ID:
iField.setPlatformShape(1);
break;
case Hitz2L.iBonusShape3ID:
iField.setPlatformShape(2);
break;
case Hitz2L.iBonusShape4ID:
iField.setPlatformShape(3);
break;
case Hitz2L.iBonusShape5ID:
iField.setPlatformShape(4);
break;
case Hitz2L.iBonusShape6ID:
iField.setPlatformShape(5);
break;
case Hitz2L.iBonusShape7ID:
iField.setPlatformShape(6);
break;
case Hitz2L.iBonusBigPlatformID:
iField.setPlatformSize(2);
break;
case Hitz2L.iBonusNormalPlatformID:
iField.setPlatformSize(0);
break;
case Hitz2L.iBonusSmallPlatformID:
iField.setPlatformSize(1);
break;
case Hitz2L.iBonusFireBallID:
iField.setFireBalls();
break;
case Hitz2L.iBonusAddLifeID:
iField.addLife();
break;
case Hitz2L.iBonusHiddenID:
applyBonus(Math.floor((Math.random() * Hitz2L.iBonusHiddenID)));
return;
};
iField.splashMainPlatform();
}
public function onTimer():void{
var _local1:CBonus;
for each (_local1 in iBonuses) {
_local1.onTimer();
};
}
public function checkCollisions(_arg1:Rectangle):void{
var _local2:int;
var _local3:Rectangle;
var _local4:int;
var _local5:int;
_local2 = 0;
while (_local2 < iBonuses.length) {
_local3 = (iBonuses[_local2] as OSprite).getRect(this);
_local4 = (_local3.width / 2);
_local5 = (_local3.height / 2);
_local3.height = (_local3.height - _local5);
_local3.y = (_local3.y + (_local5 / 2));
if (_arg1.intersects(_local3)){
applyBonus(iBonuses[_local2].iID);
iParticles.addExplode(iBonuses[_local2].iID, iBonuses[_local2].prX, iBonuses[_local2].prY);
this.removeChild(iBonuses[_local2]);
iBonuses.splice(_local2, 1);
_local2--;
OSound.PlaySoundInd(9);
};
_local2++;
};
}
}
}//package RES.GAME.FIELD.BONUSES
Section 82
//CBonusesManager (RES.GAME.FIELD.BONUSES.CBonusesManager)
package RES.GAME.FIELD.BONUSES {
import flash.utils.*;
import RES.GAME.FIELD.*;
public class CBonusesManager {
private var iBonusesList:Array;
private var iField:CField;
private var iTimer:int;
public function CBonusesManager(_arg1:CField){
iField = _arg1;
iBonusesList = new Array();
iTimer = getTimer();
}
public function pushBonus(_arg1:int, _arg2:int):void{
var _local3:int;
_local3 = 0;
while (_local3 < iBonusesList.length) {
switch (_arg1){
case Hitz2L.iBonusHighSpeedID:
case Hitz2L.iBonusLowSpeedID:
case Hitz2L.iBonusUltraSpeedID:
if ((((((iBonusesList[_local3][0] == Hitz2L.iBonusHighSpeedID)) || ((iBonusesList[_local3][0] == Hitz2L.iBonusUltraSpeedID)))) || ((iBonusesList[_local3][0] == Hitz2L.iBonusLowSpeedID)))){
iBonusesList[_local3][0] = _arg1;
iBonusesList[_local3][1] = (_arg2 * 1000);
return;
};
break;
};
_local3++;
};
iBonusesList.push([_arg1, (_arg2 * 1000)]);
}
public function onTimer():void{
var _local1:int;
var _local2:int;
_local1 = (getTimer() - iTimer);
iTimer = getTimer();
_local2 = 0;
while (_local2 < iBonusesList.length) {
iBonusesList[_local2][1] = (iBonusesList[_local2][1] - _local1);
if (iBonusesList[_local2][1] <= 0){
iField.removeBonusEffect(iBonusesList[_local2][0]);
iBonusesList.splice(_local2, 1);
_local2--;
};
_local2++;
};
}
public function removeBonusesEffects():void{
var _local1:int;
_local1 = 0;
while (_local1 < iBonusesList.length) {
iBonusesList[_local1][1] = 0;
_local1++;
};
}
}
}//package RES.GAME.FIELD.BONUSES
Section 83
//CFieldBuilder (RES.GAME.FIELD.BUILDER.CFieldBuilder)
package RES.GAME.FIELD.BUILDER {
import ENGINE.DISPLAY.*;
public class CFieldBuilder {
protected var iObjectsLayer:OSprite;
protected var iShadowLayer:OSprite;
protected var iStep:int;
public function getProduct():Object{
return (null);
}
public function buildBalls():void{
}
public function buildBonuses():void{
}
public function buildPlatforms():void{
}
public function buildObstacles():void{
}
public function buildLayers():void{
iShadowLayer = new OSprite();
iObjectsLayer = new OSprite();
}
public function buildStrategies():void{
}
public function buildGraphics():int{
return (100);
}
public function buildBase():void{
}
}
}//package RES.GAME.FIELD.BUILDER
Section 84
//CFieldDirector (RES.GAME.FIELD.BUILDER.CFieldDirector)
package RES.GAME.FIELD.BUILDER {
public class CFieldDirector {
private var iBuilder:CFieldBuilder;
private var iStep:int;
private var progress:int;
public function CFieldDirector(_arg1:CFieldBuilder){
iBuilder = _arg1;
iStep = -1;
}
public function build():int{
var _local1:int;
iStep++;
switch (iStep){
case 0:
iBuilder.buildBase();
progress = (progress + 5);
break;
case 1:
iBuilder.buildLayers();
progress = (progress + 5);
break;
case 2:
_local1 = iBuilder.buildGraphics();
if (_local1 < 100){
iStep--;
};
progress = (10 + (_local1 * 0.7));
break;
case 3:
iBuilder.buildObstacles();
progress = (progress + 5);
break;
case 4:
iBuilder.buildBalls();
progress = (progress + 5);
break;
case 5:
iBuilder.buildPlatforms();
progress = (progress + 5);
break;
case 6:
iBuilder.buildStrategies();
progress = 100;
break;
};
return (progress);
}
}
}//package RES.GAME.FIELD.BUILDER
Section 85
//COpponentFieldBuilder (RES.GAME.FIELD.BUILDER.COpponentFieldBuilder)
package RES.GAME.FIELD.BUILDER {
import RES.GAME.FIELD.DEMO.SIMPLE_OBSTACLES.*;
import RES.GAME.*;
import RES.GAME.FIELD.DEMO.*;
public class COpponentFieldBuilder extends CFieldBuilder {
public var iLevelFiguresInfo:Array;
private var iGraphics:CGraphicsHolder;
private var iObstacles:CSimpleObstaclesContainer;
private var iScale:Number;
public var iLevel:Array;
public var iDemo:String;
private function refactorNodes(_arg1:Array, _arg2:Array):void{
var _local3:int;
var _local4:int;
this.iLevelFiguresInfo = new Array();
_local3 = 0;
while (_local3 < _arg1.length) {
this.iLevelFiguresInfo.push(new Array());
_local4 = 0;
while (_local4 < _arg1[_local3].length) {
this.iLevelFiguresInfo[_local3].push((_arg1[_local3][_local4] * iScale));
_local4++;
};
_local3++;
};
this.iLevel = new Array();
_local3 = 0;
while (_local3 < _arg2.length) {
if (((((_local3 % 7) == 3)) || (((_local3 % 7) == 4)))){
this.iLevel.push((_arg2[_local3] * iScale));
} else {
this.iLevel.push(_arg2[_local3]);
};
_local3++;
};
}
override public function buildGraphics():int{
var _local1:Array;
iGraphics = new CGraphicsHolder((Hitz2L.iOpponentFieldSize / Hitz2L.iBaseSize));
_local1 = CLevels.buildOptimizationArray(iLevel);
iGraphics.createSimplePolygons(iLevelFiguresInfo, _local1);
return (100);
}
override public function buildBase():void{
iScale = (Hitz2L.iOpponentFieldSize / Hitz2L.iBaseSize);
refactorNodes(iLevelFiguresInfo, iLevel);
}
override public function buildObstacles():void{
iObstacles = new CSimpleObstaclesContainer([iLevelFiguresInfo, iLevel], iGraphics, iObjectsLayer, iShadowLayer);
}
override public function getProduct():Object{
return (new CDemoField(iObstacles, iDemo, iObjectsLayer, iShadowLayer));
}
}
}//package RES.GAME.FIELD.BUILDER
Section 86
//CPlayerFieldBuilder (RES.GAME.FIELD.BUILDER.CPlayerFieldBuilder)
package RES.GAME.FIELD.BUILDER {
import flash.geom.*;
import RES.GAME.FIELD.OBSTACLES.*;
import RES.GAME.FIELD.BALL.*;
import RES.GAME.FIELD.PLATFORMS.*;
import RES.GAME.FIELD.BONUSES.*;
import RES.GAME.FIELD.PARTICLES.*;
import RES.GAME.FIELD.SEQUENCE.*;
import RES.GAME.FIELD.OBSERVERS.*;
import RES.GAME.*;
import RES.GAME.FIELD.OBSTACLES.STRATEGIES.*;
import RES.GAME.FIELD.*;
public class CPlayerFieldBuilder extends CFieldBuilder {
private var iOptimizationArray:Array;
public var iSize:Number;
public var iGraphics:CGraphicsHolder;
public var iLevel:Array;
public var iPos:Point;
private var iFieldBounds:Rectangle;
public var iLevelFiguresInfo:Array;
private var iParticles:CParticlesContainer;
public var iPlatformsInfo:Array;
private var iRocketHeights:Array;
private var iScale:Number;
private var iObstacles:CObstaclesContainer;
private var iSequenceStrategy:CBaseSequence;
public var iPlatformsVisualInfo:Array;
private var iRocketWidths:Array;
public var iBalls:CBallsContainer;
private var iBallSizes:Array;
private var iBonuses:CBonusesContainer;
private var iObservers:Array;
public var iPlatforms:CPlatformsContainer;
private var iSeed:Number;
public function CPlayerFieldBuilder(_arg1:Number){
iSeed = _arg1;
}
override public function buildBalls():void{
iBalls = new CBallsContainer(iScale, iGraphics, iObjectsLayer);
}
private function init():void{
var _local1:int;
iFieldBounds = new Rectangle((iPos.x - (iSize / 2)), (iPos.y - (iSize / 2)), (iSize + 10), iSize);
iScale = (iSize / Hitz2L.iBaseSize);
iBallSizes = new Array();
_local1 = 0;
while (_local1 < Hitz2L.iBallSizes.length) {
iBallSizes[_local1] = (Hitz2L.iBallSizes[_local1] * iScale);
_local1++;
};
refactorNodes(iLevelFiguresInfo, iLevel, iPlatformsInfo);
initBounds();
}
override public function buildPlatforms():void{
var _local1:CPlatform;
var _local2:int;
iObservers = new Array();
iPlatforms = new CPlatformsContainer(iPlatformsInfo, iGraphics, iBallSizes, iObjectsLayer, iShadowLayer);
_local1 = iPlatforms.addPlatform(0, (250 * iScale), (450 * iScale), iSize);
_local1.prVisible = false;
_local2 = 1;
iBalls.addBall(_local2, (_local1.prX + (_local1.prWidth / 2)), (_local1.prY - (Hitz2L.iBallSizes[_local2] / 2)));
iBalls.prItems[0].prY = (_local1.prY - (iBalls.prItems[0].iSize / 2));
iBalls.prItems[0].glueTo(_local1);
iBalls.prItems[0].visible = false;
iObservers.push(new CFieldMouseListener(_local1, iSize));
}
private function refactorNodes(_arg1:Array, _arg2:Array, _arg3:Array):void{
var _local4:int;
var _local5:Array;
var _local6:int;
this.iLevelFiguresInfo = new Array();
_local4 = 0;
while (_local4 < _arg1.length) {
this.iLevelFiguresInfo.push(new Array());
_local6 = 0;
while (_local6 < _arg1[_local4].length) {
this.iLevelFiguresInfo[_local4].push((_arg1[_local4][_local6] * iScale));
_local6++;
};
_local4++;
};
this.iLevel = new Array();
_local4 = 0;
while (_local4 < _arg2.length) {
if (((((_local4 % 7) == 3)) || (((_local4 % 7) == 4)))){
this.iLevel.push((_arg2[_local4] * iScale));
} else {
this.iLevel.push(_arg2[_local4]);
};
_local4++;
};
_local5 = new Array();
_local4 = 0;
while (_local4 < _arg3.length) {
_local5.push(new Array());
_local6 = 0;
while (_local6 < _arg3[_local4].length) {
_local5[_local4].push((iPlatformsInfo[_local4][_local6] * iScale));
_local6++;
};
_local4++;
};
this.iPlatformsInfo = _local5;
}
override public function buildGraphics():int{
if (!iGraphics){
iGraphics = new CGraphicsHolder(iScale);
iOptimizationArray = CLevels.buildOptimizationArray(iLevel);
iStep = 0;
iGraphics.createPolygonByInd(iLevelFiguresInfo, iBallSizes, iOptimizationArray, iStep);
return (((iStep / (iLevelFiguresInfo.length + 2)) * 100));
};
iStep++;
if (iStep < iLevelFiguresInfo.length){
iGraphics.createPolygonByInd(iLevelFiguresInfo, iBallSizes, iOptimizationArray, iStep);
return (((iStep / (iLevelFiguresInfo.length + 2)) * 100));
};
switch (iStep){
case iLevelFiguresInfo.length:
iGraphics.createBalls(iBallSizes);
iGraphics.createBonuses();
iGraphics.createParticles();
break;
case (iLevelFiguresInfo.length + 1):
iGraphics.createPlatforms(iPlatformsInfo, iPlatformsVisualInfo, iBallSizes);
break;
case (iLevelFiguresInfo.length + 2):
iGraphics.createTails(iBallSizes);
return (100);
};
return (((iStep / (iLevelFiguresInfo.length + 2)) * 100));
}
override public function getProduct():Object{
return (new CField(iObjectsLayer, iShadowLayer, iObstacles, iBalls, iPlatforms, iBonuses, iParticles, iSize, iObservers, iSequenceStrategy));
}
override public function buildLayers():void{
super.buildLayers();
}
override public function buildStrategies():void{
iSequenceStrategy = CSequences.getRandomSequence(iObstacles.iObstacles, CShowStrategies.getRandomShowStrategy);
}
override public function buildBase():void{
init();
}
private function initBounds():void{
var _local1:Array;
var _local2:Array;
var _local3:Array;
var _local4:Array;
_local1 = [-10, 0, 0, 0, 0, iFieldBounds.height];
_local2 = [iFieldBounds.width, -10, iFieldBounds.width, 0, 0, 0];
_local3 = [(iFieldBounds.width + 10), iFieldBounds.height, iFieldBounds.width, iFieldBounds.height, iFieldBounds.width, 0];
_local4 = [0, (iFieldBounds.height + 10), 0, iFieldBounds.height, iFieldBounds.width, iFieldBounds.height];
iLevelFiguresInfo.push(_local1);
iLevelFiguresInfo.push(_local2);
iLevelFiguresInfo.push(_local3);
iLevelFiguresInfo.push(_local4);
}
override public function buildObstacles():void{
iParticles = new CParticlesContainer(iGraphics);
iBonuses = new CBonusesContainer(iGraphics, iParticles);
iObstacles = new CObstaclesContainer([iLevelFiguresInfo, iLevel], iGraphics, iBallSizes, iObjectsLayer, iShadowLayer, iSeed);
}
}
}//package RES.GAME.FIELD.BUILDER
Section 87
//CSimpleObstacle (RES.GAME.FIELD.DEMO.SIMPLE_OBSTACLES.CSimpleObstacle)
package RES.GAME.FIELD.DEMO.SIMPLE_OBSTACLES {
import ENGINE.DISPLAY.*;
import RES.GAME.*;
import RES.BASE.*;
public class CSimpleObstacle extends IDistributedSprite {
private var iShapeLayer:OSprite;
private var iGraphics:CGraphicsHolder;
private var iShape:OBitmap;
private var iMatherial:int;
public var iID:int;
public var iStrength:int;
private var iShadowLayer:OSprite;
private var iShadow:OBitmap;
public function CSimpleObstacle(_arg1:int, _arg2:int, _arg3:OSprite, _arg4:OSprite, _arg5:int, _arg6:CGraphicsHolder){
iID = _arg5;
iStrength = _arg2;
iMatherial = _arg1;
iGraphics = _arg6;
iShapeLayer = _arg3;
iShadowLayer = _arg4;
loadCurrentGraphics();
}
public function decrease():Boolean{
iStrength--;
if (iStrength < 0){
return (true);
};
removeGraphics();
loadCurrentGraphics();
return (false);
}
private function removeGraphics():void{
removeChild(iShape);
removeChild(iShadow);
}
private function loadCurrentGraphics():void{
var _local1:OBitmap;
var _local2:OBitmap;
_local1 = new OBitmap();
_local1.CopyFrom(iGraphics.iPolygons[iID][iMatherial][iStrength]);
this.pushDistributedSprite(_local1, iShapeLayer);
_local1.prX = prX;
_local1.prY = prY;
iShape = _local1;
_local2 = new OBitmap();
_local2.CopyFrom(iGraphics.iPolygonsShadows[iID][iMatherial][iStrength]);
this.pushDistributedSprite(_local2, iShadowLayer);
_local2.prX = prX;
_local2.prY = prY;
iShadow = _local2;
}
}
}//package RES.GAME.FIELD.DEMO.SIMPLE_OBSTACLES
Section 88
//CSimpleObstaclesContainer (RES.GAME.FIELD.DEMO.SIMPLE_OBSTACLES.CSimpleObstaclesContainer)
package RES.GAME.FIELD.DEMO.SIMPLE_OBSTACLES {
import ENGINE.DISPLAY.*;
import RES.GAME.*;
public class CSimpleObstaclesContainer {
public var iObstacles:Array;
private var iObjectsLayer:OSprite;
private var iShadowsLayer:OSprite;
private var iGraphics:CGraphicsHolder;
private var iLevel:Array;
public function CSimpleObstaclesContainer(_arg1:Array, _arg2:CGraphicsHolder, _arg3:OSprite, _arg4:OSprite){
iLevel = _arg1[1];
iGraphics = _arg2;
iObjectsLayer = _arg3;
iShadowsLayer = _arg4;
loadObstacles();
}
public function decreaseObstacle(_arg1:int):void{
var _local2:CSimpleObstacle;
for each (_local2 in iObstacles) {
if (_local2.iID == _arg1){
if (_local2.decrease()){
removeObstacle(_local2);
};
break;
};
};
}
public function removeObstacle(_arg1:CSimpleObstacle):void{
var _local2:int;
_arg1.Free();
_local2 = 0;
while (_local2 < iObstacles.length) {
if (iObstacles[_local2] == _arg1){
iObstacles.splice(_local2, 1);
break;
};
_local2++;
};
}
private function loadObstacles():void{
var _local1:int;
var _local2:CSimpleObstacle;
iObstacles = new Array();
_local1 = 0;
while (_local1 < iLevel.length) {
_local2 = new CSimpleObstacle(iLevel[(_local1 + 1)], iLevel[(_local1 + 2)], iObjectsLayer, iShadowsLayer, iLevel[_local1], iGraphics);
_local2.prX = iLevel[(_local1 + 3)];
_local2.prY = iLevel[(_local1 + 4)];
iObstacles.push(_local2);
_local1 = (_local1 + 7);
};
}
}
}//package RES.GAME.FIELD.DEMO.SIMPLE_OBSTACLES
Section 89
//CDemoField (RES.GAME.FIELD.DEMO.CDemoField)
package RES.GAME.FIELD.DEMO {
import ENGINE.DISPLAY.*;
import RES.GAME.FIELD.OBSERVERS.*;
import RES.GAME.FIELD.DEMO.SIMPLE_OBSTACLES.*;
public class CDemoField extends OSprite {
private var iPause:Boolean;
private var iNotifiedCompleted:Boolean;
private var iObstacles:CSimpleObstaclesContainer;
private var iGameConnector:IFieldObserver;
private var iReader:CDemoReader;
public function CDemoField(_arg1:CSimpleObstaclesContainer, _arg2:String, _arg3:OSprite, _arg4:OSprite){
var _local5:CDemoFieldConnector;
super();
iNotifiedCompleted = false;
this.addChild(_arg4);
this.addChild(_arg3);
iObstacles = _arg1;
_local5 = new CDemoFieldConnector(this);
iReader = new CDemoReader(_local5, _arg2);
iPause = false;
}
public function stop():void{
iReader.stop();
}
public function resume():void{
iPause = false;
}
public function decreaseObstacle(_arg1:int):void{
iObstacles.decreaseObstacle(_arg1);
iGameConnector.prScore = iReader.iScore;
}
public function startDemo():void{
iReader.start();
}
override public function Free():void{
iReader.stop();
iReader = null;
super.Free();
}
public function onTimer():void{
var _local1:CSimpleObstacle;
if (iPause){
return;
};
if (!iReader){
return;
};
iReader.onTimer();
if (iNotifiedCompleted){
return;
};
if (iReader.state == CDemoReader.stFinished){
for each (_local1 in iObstacles.iObstacles) {
if (_local1.iStrength < (Hitz2L.iMetalColors.length - 1)){
iGameConnector.notifyLose(iReader.iScore);
iNotifiedCompleted = true;
return;
};
};
iGameConnector.notifyWin(iReader.iScore);
iNotifiedCompleted = true;
};
}
public function connect(_arg1:IFieldObserver):void{
iGameConnector = _arg1;
iGameConnector.prScore = (iReader) ? iReader.iScore : 0;
}
public function pause():void{
iPause = true;
}
}
}//package RES.GAME.FIELD.DEMO
Section 90
//CDemoFieldConnector (RES.GAME.FIELD.DEMO.CDemoFieldConnector)
package RES.GAME.FIELD.DEMO {
public class CDemoFieldConnector implements IDemoReaderObserver {
private var iHost:CDemoField;
public function CDemoFieldConnector(_arg1:CDemoField){
iHost = _arg1;
}
public function notifyMove(_arg1:int):void{
iHost.decreaseObstacle(_arg1);
}
}
}//package RES.GAME.FIELD.DEMO
Section 91
//CDemoReader (RES.GAME.FIELD.DEMO.CDemoReader)
package RES.GAME.FIELD.DEMO {
import flash.utils.*;
public class CDemoReader {
private var iCurTime:int;
private var iNextObstacleID:int;
public var state:int;
private var prevTimer:int;
private var iCurProcess:int;
private var iConnector:IDemoReaderObserver;
private var iNextTime:int;
private var iDemo:String;
public var iScore:int;
private var iCurScoreK:Number;
public static const stWorking:int = 1;
public static const stFinished:int = 2;
public static const stNone:int = 0;
public function CDemoReader(_arg1:IDemoReaderObserver, _arg2:String){
iConnector = _arg1;
iDemo = _arg2;
state = stNone;
}
public function stop():void{
state = stFinished;
}
private function onTimerComplete():void{
iConnector.notifyMove(iNextObstacleID);
do {
parseNextMove();
if (iNextTime == 0){
iConnector.notifyMove(iNextObstacleID);
} else {
break;
};
} while (iCurProcess < iDemo.length);
iCurTime = 0;
}
public function onTimer():void{
switch (state){
case stWorking:
iCurTime = (iCurTime + (getTimer() - prevTimer));
if (iCurTime >= iNextTime){
onTimerComplete();
};
prevTimer = getTimer();
break;
};
}
public function start():void{
prevTimer = getTimer();
iScore = 0;
iCurScoreK = 1;
iCurProcess = 0;
state = stWorking;
parseNextMove();
}
private function parseNextMove():void{
var _local1:String;
if (iCurProcess == iDemo.length){
stop();
return;
};
if (iDemo.substr(iCurProcess, 1) == "*"){
iCurScoreK = 1;
iCurProcess++;
};
if (iCurProcess == iDemo.length){
stop();
return;
};
_local1 = iDemo.substr(iCurProcess, 4);
iNextTime = (CDemoWriter.stringToInt(_local1.substr(2, 2)) * 500);
iNextObstacleID = CDemoWriter.stringToInt(_local1.substr(0, 2));
iScore = (iScore + (Hitz2L.iHitObstacleScore * iCurScoreK));
if (iCurScoreK < 2){
iCurScoreK = (iCurScoreK + 0.1);
} else {
if (iCurScoreK < 3){
iCurScoreK = (iCurScoreK + 0.05);
} else {
if (iCurScoreK < 4){
iCurScoreK = (iCurScoreK + 0.02);
};
};
};
iCurProcess = (iCurProcess + 4);
}
}
}//package RES.GAME.FIELD.DEMO
Section 92
//CDemoWriter (RES.GAME.FIELD.DEMO.CDemoWriter)
package RES.GAME.FIELD.DEMO {
import flash.utils.*;
public class CDemoWriter {
private var iStartTime:int;
private var iDemo:String;
public function CDemoWriter(){
start();
}
public function getDemo():String{
return (iDemo);
}
public function start():void{
iStartTime = getTimer();
iDemo = Hitz2L.VERSION;
}
public function addSeparator():void{
if (iDemo.substr((iDemo.length - 1), 1) == "*"){
return;
};
iDemo = (iDemo + "*");
}
public function addMove(_arg1:int):void{
var _local2:int;
_local2 = (getTimer() - iStartTime);
if (_local2 > 20000){
_local2 = 20000;
};
iDemo = (iDemo + (intToString(_arg1, 2) + intToString(Math.round((_local2 / 500)), 2)));
iStartTime = getTimer();
}
public static function intToChar(_arg1:int):String{
if ((((_arg1 > -1)) && ((_arg1 < 10)))){
return (String.fromCharCode((_arg1 + 48)));
};
if ((((_arg1 > 9)) && ((_arg1 < 36)))){
return (String.fromCharCode((_arg1 + 55)));
};
if ((((_arg1 > 35)) && ((_arg1 < 62)))){
return (String.fromCharCode((_arg1 + 61)));
};
return ("");
}
public static function stringToInt(_arg1:String):int{
var _local2:int;
var _local3:int;
_local2 = 0;
_local3 = 0;
while (_local3 < _arg1.length) {
_local2 = (_local2 + (charToInt(_arg1.substring(_local3, (_local3 + 1))) * Math.pow(62, ((_arg1.length - _local3) - 1))));
_local3++;
};
return (_local2);
}
public static function intToString(_arg1:int, _arg2:int):String{
var _local3:String;
var _local4:int;
_local3 = "";
_local4 = _arg2;
while (_local4 > 0) {
_local3 = (_local3 + intToChar(Math.floor(((_arg1 % Math.pow(62, _local4)) / Math.pow(62, (_local4 - 1))))));
_local4--;
};
return (_local3);
}
public static function charToInt(_arg1:String):int{
if ((((_arg1.charCodeAt() > 47)) && ((_arg1.charCodeAt() < 58)))){
return ((_arg1.charCodeAt() - 48));
};
if ((((_arg1.charCodeAt() > 64)) && ((_arg1.charCodeAt() < 91)))){
return (((_arg1.charCodeAt() - 65) + 10));
};
if ((((_arg1.charCodeAt() > 96)) && ((_arg1.charCodeAt() < 123)))){
return (((_arg1.charCodeAt() - 97) + 36));
};
return (-1);
}
}
}//package RES.GAME.FIELD.DEMO
Section 93
//IDemoReaderObserver (RES.GAME.FIELD.DEMO.IDemoReaderObserver)
package RES.GAME.FIELD.DEMO {
public interface IDemoReaderObserver {
function notifyMove(_arg1:int):void;
}
}//package RES.GAME.FIELD.DEMO
Section 94
//CFieldMouseListener (RES.GAME.FIELD.OBSERVERS.CFieldMouseListener)
package RES.GAME.FIELD.OBSERVERS {
import RES.GAME.FIELD.PLATFORMS.*;
public class CFieldMouseListener implements IMouseListenerObserver {
public var iHost:CPlatform;
private var iSize:int;
public function CFieldMouseListener(_arg1:CPlatform, _arg2:int){
iHost = _arg1;
iSize = _arg2;
}
public function notifyMouseMoved(_arg1:Number):void{
iHost.notifyMouseMove(_arg1, iSize);
}
}
}//package RES.GAME.FIELD.OBSERVERS
Section 95
//COpponentFieldObserver (RES.GAME.FIELD.OBSERVERS.COpponentFieldObserver)
package RES.GAME.FIELD.OBSERVERS {
import RES.GAME.CONTAINERS.*;
public class COpponentFieldObserver implements IFieldObserver {
private var iHost:CGameRecordedMP;
public function COpponentFieldObserver(_arg1:CGameRecordedMP){
this.iHost = _arg1;
}
public function set prScore(_arg1:int):void{
iHost.setOpponentScore(_arg1);
}
public function notifyLose(_arg1:int):void{
iHost.notifyOpponentLose();
}
public function notifyCompleted():void{
}
public function set prLives(_arg1:int):void{
}
public function notifyStartPlay():void{
}
public function set prDemo(_arg1:String):void{
}
public function notifyWin(_arg1:int):void{
iHost.notifyOpponentCompletedLevel();
}
}
}//package RES.GAME.FIELD.OBSERVERS
Section 96
//CPlayerFieldObserver (RES.GAME.FIELD.OBSERVERS.CPlayerFieldObserver)
package RES.GAME.FIELD.OBSERVERS {
import RES.GAME.CONTAINERS.*;
public class CPlayerFieldObserver implements IFieldObserver {
private var iHost:CGameBase;
public function CPlayerFieldObserver(_arg1:CGameBase){
this.iHost = _arg1;
}
public function set prScore(_arg1:int):void{
iHost.prPlayerScore = _arg1;
}
public function notifyLose(_arg1:int):void{
iHost.notifyPlayerLose(_arg1);
}
public function notifyCompleted():void{
iHost.notifyPlayerCompletedLevel();
}
public function set prLives(_arg1:int):void{
iHost.prLives = _arg1;
}
public function set prDemo(_arg1:String):void{
iHost.prDemo = _arg1;
}
public function notifyStartPlay():void{
iHost.notifyPlayerStartedPlay();
}
public function notifyWin(_arg1:int):void{
iHost.notifyPlayerWin(_arg1);
}
}
}//package RES.GAME.FIELD.OBSERVERS
Section 97
//IFieldObserver (RES.GAME.FIELD.OBSERVERS.IFieldObserver)
package RES.GAME.FIELD.OBSERVERS {
public interface IFieldObserver {
function set prScore(_arg1:int):void;
function notifyCompleted():void;
function notifyWin(_arg1:int):void;
function set prDemo(_arg1:String):void;
function set prLives(_arg1:int):void;
function notifyStartPlay():void;
function notifyLose(_arg1:int):void;
}
}//package RES.GAME.FIELD.OBSERVERS
Section 98
//IMouseListenerObserver (RES.GAME.FIELD.OBSERVERS.IMouseListenerObserver)
package RES.GAME.FIELD.OBSERVERS {
public interface IMouseListenerObserver {
function notifyMouseMoved(_arg1:Number):void;
}
}//package RES.GAME.FIELD.OBSERVERS
Section 99
//CAlphaShowStrategy (RES.GAME.FIELD.OBSTACLES.STRATEGIES.CAlphaShowStrategy)
package RES.GAME.FIELD.OBSTACLES.STRATEGIES {
import RES.BASE.*;
public class CAlphaShowStrategy extends CBaseStrategy {
public function CAlphaShowStrategy(_arg1:IDistributedSprite){
super(_arg1);
}
override public function set State(_arg1:int):void{
iState = _arg1;
switch (State){
case stWorking:
iObject.prVisible = true;
iObject.alpha = 0;
break;
};
}
override public function process():void{
switch (iState){
case stWorking:
iObject.alpha = (iObject.alpha + 0.15);
if (iObject.alpha >= 1){
iObject.alpha = 1;
State = stDone;
};
break;
};
}
}
}//package RES.GAME.FIELD.OBSTACLES.STRATEGIES
Section 100
//CBaseStrategy (RES.GAME.FIELD.OBSTACLES.STRATEGIES.CBaseStrategy)
package RES.GAME.FIELD.OBSTACLES.STRATEGIES {
import RES.BASE.*;
public class CBaseStrategy {
protected var iObject:IDistributedSprite;
protected var iState:int;
public static const stWorking:int = 1;
public static const stDone:int = 2;
public static const stNone:int = 0;
public function CBaseStrategy(_arg1:IDistributedSprite){
_arg1.prVisible = false;
iObject = _arg1;
iState = stNone;
}
public function start():void{
State = stWorking;
}
public function set State(_arg1:int):void{
iState = _arg1;
switch (State){
case stWorking:
iObject.prVisible = true;
break;
};
}
public function get State():int{
return (iState);
}
public function process():void{
switch (iState){
case stWorking:
State = stDone;
break;
};
}
}
}//package RES.GAME.FIELD.OBSTACLES.STRATEGIES
Section 101
//CRotationAlphaStrategy (RES.GAME.FIELD.OBSTACLES.STRATEGIES.CRotationAlphaStrategy)
package RES.GAME.FIELD.OBSTACLES.STRATEGIES {
import ENGINE.CORE.*;
import RES.BASE.*;
public class CRotationAlphaStrategy extends CBaseStrategy {
private var iStartY:Number;
private var iCenterX:Number;
private var iCenterY:Number;
private var iStartX:Number;
public function CRotationAlphaStrategy(_arg1:IDistributedSprite){
iStartX = _arg1.prX;
iStartY = _arg1.prY;
iCenterX = (((_arg1.bounds.left / 2) / OGlobal.Scale) + ((_arg1.bounds.right / 2) / OGlobal.Scale));
iCenterY = (((_arg1.bounds.top / 2) / OGlobal.Scale) + ((_arg1.bounds.bottom / 2) / OGlobal.Scale));
super(_arg1);
}
override public function set State(_arg1:int):void{
var _local2:Number;
var _local3:Number;
iState = _arg1;
switch (State){
case stWorking:
iObject.alpha = 0;
iObject.prVisible = true;
iObject.rotation = ((Math.random() > 0.5)) ? -39 : 39;
_local2 = (((iObject.bounds.left / 2) / OGlobal.Scale) + ((iObject.bounds.right / 2) / OGlobal.Scale));
_local3 = (((iObject.bounds.top / 2) / OGlobal.Scale) + ((iObject.bounds.bottom / 2) / OGlobal.Scale));
iObject.Move((-(_local2) + iCenterX), (-(_local3) + iCenterY));
break;
};
}
override public function process():void{
var _local1:Number;
var _local2:Number;
switch (iState){
case stWorking:
iObject.rotation = ((iObject.rotation > 0)) ? (iObject.rotation - 3) : (iObject.rotation + 3);
_local1 = (((iObject.bounds.left / 2) / OGlobal.Scale) + ((iObject.bounds.right / 2) / OGlobal.Scale));
_local2 = (((iObject.bounds.top / 2) / OGlobal.Scale) + ((iObject.bounds.bottom / 2) / OGlobal.Scale));
iObject.Move((-(_local1) + iCenterX), (-(_local2) + iCenterY));
if (iObject.alpha < 1){
iObject.alpha = (iObject.alpha + 0.1);
};
if (iObject.rotation == 0){
iObject.rotation = 0;
iObject.alpha = 1;
iObject.Pos(iStartX, iStartY);
State = stDone;
};
break;
};
}
}
}//package RES.GAME.FIELD.OBSTACLES.STRATEGIES
Section 102
//CRotationScaleStrategy (RES.GAME.FIELD.OBSTACLES.STRATEGIES.CRotationScaleStrategy)
package RES.GAME.FIELD.OBSTACLES.STRATEGIES {
import ENGINE.CORE.*;
import RES.BASE.*;
public class CRotationScaleStrategy extends CBaseStrategy {
private var iStartY:Number;
private var iCenterX:Number;
private var iCenterY:Number;
private var iStartX:Number;
public function CRotationScaleStrategy(_arg1:IDistributedSprite){
iStartX = _arg1.prX;
iStartY = _arg1.prY;
iCenterX = (((_arg1.bounds.left / 2) / OGlobal.Scale) + ((_arg1.bounds.right / 2) / OGlobal.Scale));
iCenterY = (((_arg1.bounds.top / 2) / OGlobal.Scale) + ((_arg1.bounds.bottom / 2) / OGlobal.Scale));
super(_arg1);
}
override public function set State(_arg1:int):void{
var _local2:Number;
var _local3:Number;
iState = _arg1;
switch (State){
case stWorking:
iObject.scaleX = 0;
iObject.scaleY = 0;
iObject.prVisible = true;
iObject.rotation = ((Math.random() > 0.5)) ? -110 : 110;
_local2 = (((iObject.bounds.left / 2) / OGlobal.Scale) + ((iObject.bounds.right / 2) / OGlobal.Scale));
_local3 = (((iObject.bounds.top / 2) / OGlobal.Scale) + ((iObject.bounds.bottom / 2) / OGlobal.Scale));
iObject.Move((-(_local2) + iCenterX), (-(_local3) + iCenterY));
break;
};
}
override public function process():void{
var _local1:Number;
var _local2:Number;
switch (iState){
case stWorking:
iObject.rotation = ((iObject.rotation > 0)) ? (iObject.rotation - 5) : (iObject.rotation + 5);
if (iObject.scaleX < 1){
iObject.scaleX = (iObject.scaleX + 0.05);
iObject.scaleY = (iObject.scaleY + 0.05);
};
_local1 = (((iObject.bounds.left / 2) / OGlobal.Scale) + ((iObject.bounds.right / 2) / OGlobal.Scale));
_local2 = (((iObject.bounds.top / 2) / OGlobal.Scale) + ((iObject.bounds.bottom / 2) / OGlobal.Scale));
iObject.Move((-(_local1) + iCenterX), (-(_local2) + iCenterY));
if (iObject.rotation == 0){
iObject.rotation = 0;
iObject.scaleX = 1;
iObject.scaleY = 1;
iObject.Pos(iStartX, iStartY);
State = stDone;
};
break;
};
}
}
}//package RES.GAME.FIELD.OBSTACLES.STRATEGIES
Section 103
//CScaleCenterStrategy (RES.GAME.FIELD.OBSTACLES.STRATEGIES.CScaleCenterStrategy)
package RES.GAME.FIELD.OBSTACLES.STRATEGIES {
import RES.BASE.*;
public class CScaleCenterStrategy extends CBaseStrategy {
private var iStartY:Number;
private var iCenterX:Number;
private var iCenterY:Number;
private var iStartX:Number;
public function CScaleCenterStrategy(_arg1:IDistributedSprite){
iStartX = _arg1.prX;
iStartY = _arg1.prY;
iCenterX = (iStartX + (_arg1.prWidth / 2));
iCenterY = (iStartY + (_arg1.prHeight / 2));
super(_arg1);
}
override public function set State(_arg1:int):void{
iState = _arg1;
switch (State){
case stWorking:
iObject.prVisible = true;
iObject.scaleX = 0;
iObject.scaleY = 0;
break;
};
}
override public function process():void{
switch (iState){
case stWorking:
iObject.scaleX = (iObject.scaleX + 0.15);
iObject.scaleY = (iObject.scaleY + 0.15);
iObject.Pos((iStartX + ((iCenterX - iStartX) * (1 - iObject.scaleX))), (iStartY + ((iCenterY - iStartY) * (1 - iObject.scaleY))));
if (iObject.scaleX >= 1){
iObject.scaleX = 1;
iObject.scaleY = 1;
iObject.Pos((iStartX + ((iCenterX - iStartX) * (1 - iObject.scaleX))), (iStartY + ((iCenterY - iStartY) * (1 - iObject.scaleY))));
State = stDone;
};
break;
};
}
}
}//package RES.GAME.FIELD.OBSTACLES.STRATEGIES
Section 104
//CScaleLeftTopStrategy (RES.GAME.FIELD.OBSTACLES.STRATEGIES.CScaleLeftTopStrategy)
package RES.GAME.FIELD.OBSTACLES.STRATEGIES {
import RES.BASE.*;
public class CScaleLeftTopStrategy extends CBaseStrategy {
public function CScaleLeftTopStrategy(_arg1:IDistributedSprite){
super(_arg1);
}
override public function set State(_arg1:int):void{
iState = _arg1;
switch (State){
case stWorking:
iObject.prVisible = true;
iObject.scaleX = 0;
iObject.scaleY = 0;
break;
};
}
override public function process():void{
switch (iState){
case stWorking:
iObject.scaleX = (iObject.scaleX + 0.15);
iObject.scaleY = (iObject.scaleY + 0.15);
if (iObject.scaleX >= 1){
iObject.scaleX = 1;
iObject.scaleY = 1;
State = stDone;
};
break;
};
}
}
}//package RES.GAME.FIELD.OBSTACLES.STRATEGIES
Section 105
//CScaleXStrategy (RES.GAME.FIELD.OBSTACLES.STRATEGIES.CScaleXStrategy)
package RES.GAME.FIELD.OBSTACLES.STRATEGIES {
import RES.BASE.*;
public class CScaleXStrategy extends CBaseStrategy {
private var iStartY:Number;
private var iCenterX:Number;
private var iCenterY:Number;
private var iStartX:Number;
public function CScaleXStrategy(_arg1:IDistributedSprite){
iStartX = _arg1.prX;
iStartY = _arg1.prY;
iCenterX = (iStartX + (_arg1.prWidth / 2));
iCenterY = (iStartY + (_arg1.prHeight / 2));
super(_arg1);
}
override public function set State(_arg1:int):void{
iState = _arg1;
switch (State){
case stWorking:
iObject.prVisible = true;
iObject.scaleX = 0;
break;
};
}
override public function process():void{
switch (iState){
case stWorking:
iObject.scaleX = (iObject.scaleX + 0.15);
iObject.Pos((iStartX + ((iCenterX - iStartX) * (1 - iObject.scaleX))), (iStartY + ((iCenterY - iStartY) * (1 - iObject.scaleY))));
if (iObject.scaleX >= 1){
iObject.scaleX = 1;
iObject.Pos((iStartX + ((iCenterX - iStartX) * (1 - iObject.scaleX))), (iStartY + ((iCenterY - iStartY) * (1 - iObject.scaleY))));
State = stDone;
};
break;
};
}
}
}//package RES.GAME.FIELD.OBSTACLES.STRATEGIES
Section 106
//CScaleYStrategy (RES.GAME.FIELD.OBSTACLES.STRATEGIES.CScaleYStrategy)
package RES.GAME.FIELD.OBSTACLES.STRATEGIES {
import RES.BASE.*;
public class CScaleYStrategy extends CBaseStrategy {
private var iStartY:Number;
private var iCenterX:Number;
private var iCenterY:Number;
private var iStartX:Number;
public function CScaleYStrategy(_arg1:IDistributedSprite){
iStartX = _arg1.prX;
iStartY = _arg1.prY;
iCenterX = (iStartX + (_arg1.prWidth / 2));
iCenterY = (iStartY + (_arg1.prHeight / 2));
super(_arg1);
}
override public function set State(_arg1:int):void{
iState = _arg1;
switch (State){
case stWorking:
iObject.prVisible = true;
iObject.scaleY = 0;
break;
};
}
override public function process():void{
switch (iState){
case stWorking:
iObject.scaleY = (iObject.scaleY + 0.15);
iObject.Pos((iStartX + ((iCenterX - iStartX) * (1 - iObject.scaleX))), (iStartY + ((iCenterY - iStartY) * (1 - iObject.scaleY))));
if (iObject.scaleY >= 1){
iObject.scaleY = 1;
iObject.Pos((iStartX + ((iCenterX - iStartX) * (1 - iObject.scaleX))), (iStartY + ((iCenterY - iStartY) * (1 - iObject.scaleY))));
State = stDone;
};
break;
};
}
}
}//package RES.GAME.FIELD.OBSTACLES.STRATEGIES
Section 107
//CShowStrategies (RES.GAME.FIELD.OBSTACLES.STRATEGIES.CShowStrategies)
package RES.GAME.FIELD.OBSTACLES.STRATEGIES {
import RES.BASE.*;
public class CShowStrategies {
public static function getRandomShowStrategy():Function{
var _local1:int;
_local1 = Math.floor((Math.random() * 6));
switch (_local1){
case 0:
return (getAlphaStrategy);
case 1:
return (getScaleXStrategy);
case 2:
return (getScaleYStrategy);
case 3:
return (getScaleLeftTopStrategy);
case 4:
return (getScaleCenterStrategy);
case 5:
return (getRotationAlphaStrategy);
case 6:
return (getRotationScaleStrategy);
default:
return (getBaseStrategy);
};
}
public static function getScaleLeftTopStrategy(_arg1:IDistributedSprite):CBaseStrategy{
return (new CScaleLeftTopStrategy(_arg1));
}
public static function getScaleXStrategy(_arg1:IDistributedSprite):CBaseStrategy{
return (new CScaleXStrategy(_arg1));
}
public static function getScaleYStrategy(_arg1:IDistributedSprite):CBaseStrategy{
return (new CScaleYStrategy(_arg1));
}
public static function getRotationScaleStrategy(_arg1:IDistributedSprite):CBaseStrategy{
return (new CRotationScaleStrategy(_arg1));
}
public static function getBaseStrategy(_arg1:IDistributedSprite):CBaseStrategy{
return (new CBaseStrategy(_arg1));
}
public static function getAlphaStrategy(_arg1:IDistributedSprite):CBaseStrategy{
return (new CAlphaShowStrategy(_arg1));
}
public static function getScaleCenterStrategy(_arg1:IDistributedSprite):CBaseStrategy{
return (new CScaleCenterStrategy(_arg1));
}
public static function getRotationAlphaStrategy(_arg1:IDistributedSprite):CBaseStrategy{
return (new CRotationAlphaStrategy(_arg1));
}
}
}//package RES.GAME.FIELD.OBSTACLES.STRATEGIES
Section 108
//CObstacle (RES.GAME.FIELD.OBSTACLES.CObstacle)
package RES.GAME.FIELD.OBSTACLES {
import ENGINE.DISPLAY.*;
import flash.geom.*;
import RES.GAME.FIELD.BALL.*;
import RES.GAME.*;
import RES.BASE.*;
public class CObstacle extends IDistributedSprite {
private var iUnbeatable:Boolean;
private var iGraphics:CGraphicsHolder;
public var iBoundsRects:Array;
private var iShape:OBitmap;
public var iMatherial:int;
public var iID:int;
public var iStrength:int;
public var iInvisible:Boolean;
public var iBonusID:int;
private var iGeometryInfo:Array;
private var iIntersectionInfo:Array;
private var iShadow:OBitmap;
private var iBallSizes:Array;
public function CObstacle(_arg1:Array, _arg2:int, _arg3:int, _arg4:OBitmap, _arg5:OBitmap, _arg6:OSprite, _arg7:OSprite, _arg8:Array, _arg9:Array, _arg10:int, _arg11:int, _arg12:CGraphicsHolder, _arg13:Boolean=false){
iBonusID = _arg11;
iBallSizes = _arg9;
iIntersectionInfo = _arg8;
iGeometryInfo = _arg1;
iID = _arg10;
iMatherial = _arg2;
iStrength = _arg3;
iGraphics = _arg12;
iInvisible = _arg13;
super();
if (!_arg5){
_arg5 = new OBitmap();
};
if (!_arg4){
_arg4 = new OBitmap();
};
createGraphics(_arg4, _arg5, _arg6, _arg7);
getRectBounds();
iUnbeatable = false;
}
public function checkTrajectoryHitTest(_arg1:Array, _arg2:CBall):Array{
var _local3:Point;
var _local4:Point;
var _local5:int;
var _local6:Array;
var _local7:Array;
var _local8:int;
var _local9:Point;
var _local10:Array;
_local6 = new Array(5);
_local5 = 0;
while (_local5 < iIntersectionInfo[_arg2.prSizeInd][iID][0].length) {
if (((iIntersectionInfo[_arg2.prSizeInd][iID][3][_local5].x * _arg2.iV.x) + (iIntersectionInfo[_arg2.prSizeInd][iID][3][_local5].y * _arg2.iV.y)) < 0){
} else {
_local4 = CGeom.getSegmentsIntersectionPoint(iIntersectionInfo[_arg2.prSizeInd][iID][0][_local5], _arg1);
if (_local4 == null){
} else {
_local3 = CGeom.getNearerPointOnLineP(_arg1[3].x, _arg1[3].y, _local4, _local3);
if (_local3 == _local4){
_local6[0] = _local3;
_local6[1] = new Point(-(iIntersectionInfo[_arg2.prSizeInd][iID][3][_local5].y), iIntersectionInfo[_arg2.prSizeInd][iID][3][_local5].x);
_local6[2] = iIntersectionInfo[_arg2.prSizeInd][iID][3][_local5];
_local6[3] = false;
};
};
};
_local5++;
};
_local5 = 0;
while (_local5 < iIntersectionInfo[_arg2.prSizeInd][iID][1].length) {
_local7 = CGeom.SegmentCircleIntersection(_arg1, iIntersectionInfo[_arg2.prSizeInd][iID][1][_local5], iIntersectionInfo[_arg2.prSizeInd][iID][2][_local5]);
if (_local7 != null){
_local8 = 0;
while (_local8 < _local7.length) {
_local3 = CGeom.getNearerPointOnLineP(_arg1[3].x, _arg1[3].y, _local7[_local8], _local3);
_local9 = new Point((iIntersectionInfo[_arg2.prSizeInd][iID][1][_local5].x - _local3.x), (iIntersectionInfo[_arg2.prSizeInd][iID][1][_local5].y - _local3.y));
if (((_local9.x * _arg2.iV.x) + (_local9.y * _arg2.iV.y)) < 0){
} else {
if (_local3 == _local7[_local8]){
_local10 = CGeom.getLineByTwoPoints(iIntersectionInfo[_arg2.prSizeInd][iID][1][_local5], _local3);
_local6[0] = _local3;
_local9.normalize(1);
_local6[2] = _local9;
_local6[1] = new Point(_local6[2].y, -(_local6[2].x));
_local6[3] = true;
};
};
_local8++;
};
};
_local5++;
};
_local6[4] = this;
if (_local6[0] != null){
_local6[0].x = (_local6[0].x + this.prX);
_local6[0].y = (_local6[0].y + this.prY);
};
return (_local6);
}
public function decrease():Boolean{
var _local1:OBitmap;
var _local2:OBitmap;
if (iUnbeatable){
return (false);
};
if (!iStrength){
return (true);
};
iStrength--;
_local1 = new OBitmap();
_local1.CopyFrom(iGraphics.iPolygons[iID][iMatherial][iStrength]);
replaceChild(iShape, _local1);
iShape = _local1;
_local2 = new OBitmap();
_local2.CopyFrom(iGraphics.iPolygonsShadows[iID][iMatherial][iStrength]);
replaceChild(iShadow, _local2);
iShadow = _local2;
return (false);
}
private function getRectBounds():void{
var _local1:int;
var _local2:int;
var _local3:int;
var _local4:int;
var _local5:int;
var _local6:int;
var _local7:int;
iBoundsRects = new Array();
_local1 = 0;
while (_local1 < Hitz2L.iBallSizes.length) {
_local2 = iGeometryInfo[0];
_local3 = iGeometryInfo[0];
_local4 = iGeometryInfo[1];
_local5 = iGeometryInfo[1];
_local6 = 2;
while (_local6 < iGeometryInfo.length) {
if (iGeometryInfo[_local6] < _local2){
_local2 = iGeometryInfo[_local6];
};
if (iGeometryInfo[_local6] > _local3){
_local3 = iGeometryInfo[_local6];
};
if (iGeometryInfo[(_local6 + 1)] < _local4){
_local4 = iGeometryInfo[(_local6 + 1)];
};
if (iGeometryInfo[(_local6 + 1)] > _local5){
_local5 = iGeometryInfo[(_local6 + 1)];
};
_local6 = (_local6 + 2);
};
_local7 = 0;
while (_local7 < iIntersectionInfo[_local1][iID][1].length) {
if ((iIntersectionInfo[_local1][iID][1][_local7].x - iIntersectionInfo[_local1][iID][2][_local7]) < _local2){
_local2 = (iIntersectionInfo[_local1][iID][1][_local7].x - iIntersectionInfo[_local1][iID][2][_local7]);
};
if ((iIntersectionInfo[_local1][iID][1][_local7].x + iIntersectionInfo[_local1][iID][2][_local7]) > _local3){
_local3 = (iIntersectionInfo[_local1][iID][1][_local7].x + iIntersectionInfo[_local1][iID][2][_local7]);
};
if ((iIntersectionInfo[_local1][iID][1][_local7].y - iIntersectionInfo[_local1][iID][2][_local7]) < _local4){
_local4 = (iIntersectionInfo[_local1][iID][1][_local7].y - iIntersectionInfo[_local1][iID][2][_local7]);
};
if ((iIntersectionInfo[_local1][iID][1][_local7].y + iIntersectionInfo[_local1][iID][2][_local7]) > _local5){
_local5 = (iIntersectionInfo[_local1][iID][1][_local7].y + iIntersectionInfo[_local1][iID][2][_local7]);
};
_local7++;
};
iBoundsRects[_local1] = new Rectangle((_local2 - iBallSizes[_local1]), (_local4 - iBallSizes[_local1]), ((_local3 - _local2) + (2 * iBallSizes[_local1])), ((_local5 - _local4) + (2 * iBallSizes[_local1])));
_local1++;
};
}
protected function createGraphics(_arg1:OBitmap, _arg2:OBitmap, _arg3:OSprite, _arg4:OSprite):void{
iShape = new OBitmap();
iShape.CopyFrom(_arg1);
super.pushDistributedSprite(iShape, _arg3);
iShadow = new OBitmap();
iShadow.CopyFrom(_arg2);
super.pushDistributedSprite(iShadow, _arg4);
}
public function getPieces():Array{
var _local1:Array;
var _local2:int;
_local1 = new Array();
if (((iGraphics.iPolygonsPieces[iID]) && (iGraphics.iPolygonsPieces[iID][iMatherial]))){
_local2 = 0;
while (_local2 < iGraphics.iPolygonsPieces[iID][iMatherial].length) {
_local1.push(iGraphics.iPolygonsPieces[iID][iMatherial][_local2][0]);
_local2++;
};
};
return (_local1);
}
public function get prUnbeatable():Boolean{
return (iUnbeatable);
}
public function set prUnbeatable(_arg1:Boolean):void{
iUnbeatable = _arg1;
}
public function getVertexes():Array{
var _local1:Array;
var _local2:int;
_local1 = new Array();
_local2 = 0;
while (_local2 < iGraphics.iPolygonsInfo[iID].length) {
_local1.push(new Point((iGraphics.iPolygonsInfo[iID][_local2] + this.prX), (iGraphics.iPolygonsInfo[iID][(_local2 + 1)] + this.prY)));
_local2 = (_local2 + 2);
};
return (_local1);
}
}
}//package RES.GAME.FIELD.OBSTACLES
Section 109
//CObstaclesContainer (RES.GAME.FIELD.OBSTACLES.CObstaclesContainer)
package RES.GAME.FIELD.OBSTACLES {
import ENGINE.DISPLAY.*;
import ENGINE.CORE.*;
import RES.GAME.*;
public class CObstaclesContainer {
private var iLevelFiguresInfo:Array;
private var iObjectsLayer:OSprite;
private var iLevel:Array;
private var iShadowsLayer:OSprite;
private var iPieces:Array;
public var iBallSizes:Array;
private var iGraphics:CGraphicsHolder;
public var iObstacles:Array;
public function CObstaclesContainer(_arg1:Array, _arg2:CGraphicsHolder, _arg3:Array, _arg4:OSprite, _arg5:OSprite, _arg6:int){
iPieces = new Array();
iLevelFiguresInfo = _arg1[0];
iLevel = _arg1[1];
iGraphics = _arg2;
iBallSizes = _arg3;
iObjectsLayer = _arg4;
iShadowsLayer = _arg5;
loadObstacles(_arg6);
createBounds();
}
public function decreaseObstacle(_arg1:CObstacle):Boolean{
return (_arg1.decrease());
}
private function createBounds():void{
var _local1:CObstacle;
_local1 = new CObstacle(iLevelFiguresInfo[(iGraphics.iPolygonsInfo.length - 2)], 0, 0, null, null, iObjectsLayer, iShadowsLayer, iGraphics.iPolygonsIntersectionInfo, iBallSizes, (iGraphics.iPolygonsInfo.length - 2), Hitz2L.iNoBonusID, iGraphics, true);
iObstacles.push(_local1);
_local1.prUnbeatable = true;
_local1 = new CObstacle(iLevelFiguresInfo[(iGraphics.iPolygonsInfo.length - 3)], 0, 0, null, null, iObjectsLayer, iShadowsLayer, iGraphics.iPolygonsIntersectionInfo, iBallSizes, (iGraphics.iPolygonsInfo.length - 3), Hitz2L.iNoBonusID, iGraphics, true);
iObstacles.push(_local1);
_local1.prUnbeatable = true;
_local1 = new CObstacle(iLevelFiguresInfo[(iGraphics.iPolygonsInfo.length - 4)], 0, 0, null, null, iObjectsLayer, iShadowsLayer, iGraphics.iPolygonsIntersectionInfo, iBallSizes, (iGraphics.iPolygonsInfo.length - 4), Hitz2L.iNoBonusID, iGraphics, true);
iObstacles.push(_local1);
_local1.prUnbeatable = true;
}
public function removeObstacle(_arg1:CObstacle):void{
var _local2:int;
_arg1.Free();
_local2 = 0;
while (_local2 < iObstacles.length) {
if (iObstacles[_local2] == _arg1){
iObstacles.splice(_local2, 1);
break;
};
_local2++;
};
}
private function loadObstacles(_arg1:int):void{
var _local2:ORandomInt;
var _local3:int;
var _local4:Array;
var _local5:int;
var _local6:int;
var _local7:int;
var _local8:CObstacle;
_local2 = new ORandomInt();
_local2.SeedRand(_arg1);
iObstacles = new Array();
if (Hitz2L.sDebug){
_local4 = new Array();
};
_local3 = 0;
while (_local3 < iLevel.length) {
if (_local2.RandOnInterval() <= iLevel[(_local3 + 6)]){
_local7 = iLevel[(_local3 + 5)];
if (iLevel[(_local3 + 5)] == Hitz2L.iRandomBonusID){
_local7 = _local2.RandVal(Hitz2L.iBonusHiddenID);
};
} else {
_local7 = -1;
};
if (Hitz2L.sDebug){
if (_local7 >= 0){
if (_local4[_local7] == null){
_local4[_local7] = 0;
};
var _local9 = _local4;
var _local10 = _local7;
var _local11 = (_local9[_local10] + 1);
_local9[_local10] = _local11;
_local5++;
};
_local6++;
};
_local8 = new CObstacle(iLevelFiguresInfo[iLevel[_local3]], iLevel[(_local3 + 1)], iLevel[(_local3 + 2)], iGraphics.iPolygons[iLevel[_local3]][iLevel[(_local3 + 1)]][iLevel[(_local3 + 2)]], iGraphics.iPolygonsShadows[iLevel[_local3]][iLevel[(_local3 + 1)]][iLevel[(_local3 + 2)]], iObjectsLayer, iShadowsLayer, iGraphics.iPolygonsIntersectionInfo, iBallSizes, iLevel[_local3], _local7, iGraphics);
_local8.prX = iLevel[(_local3 + 3)];
_local8.prY = iLevel[(_local3 + 4)];
_local8.prUnbeatable = (iLevel[(_local3 + 2)] == (Hitz2L.iCandyColors.length - 1));
iObstacles.push(_local8);
_local3 = (_local3 + 7);
};
if (Hitz2L.sDebug){
trace(("Obstacles count : " + _local6.toString()));
trace(("Bonuses count : " + _local5.toString()));
if (_local4[Hitz2L.iBonusAddBallID]){
trace(((((((("AddBall : " + _local4[Hitz2L.iBonusAddBallID].toString()) + " ") + (Math.round(((_local4[Hitz2L.iBonusAddBallID] / _local5) * 10000)) / 100).toString()) + "%") + " ") + (Math.round(((_local4[Hitz2L.iBonusAddBallID] / _local6) * 10000)) / 100).toString()) + "%"));
};
if (_local4[Hitz2L.iBonusUltraSpeedID]){
trace(((((((("UltraSpeed : " + _local4[Hitz2L.iBonusUltraSpeedID].toString()) + " ") + (Math.round(((_local4[Hitz2L.iBonusUltraSpeedID] / _local5) * 10000)) / 100).toString()) + "%") + " ") + (Math.round(((_local4[Hitz2L.iBonusUltraSpeedID] / _local6) * 10000)) / 100).toString()) + "%"));
};
if (_local4[Hitz2L.iBonusHighSpeedID]){
trace(((((((("HighSpeed : " + _local4[Hitz2L.iBonusHighSpeedID].toString()) + " ") + (Math.round(((_local4[Hitz2L.iBonusHighSpeedID] / _local5) * 10000)) / 100).toString()) + "%") + " ") + (Math.round(((_local4[Hitz2L.iBonusHighSpeedID] / _local6) * 10000)) / 100).toString()) + "%"));
};
if (_local4[Hitz2L.iBonusLowSpeedID]){
trace(((((((("LowSpeed : " + _local4[Hitz2L.iBonusLowSpeedID].toString()) + " ") + (Math.round(((_local4[Hitz2L.iBonusLowSpeedID] / _local5) * 10000)) / 100).toString()) + "%") + " ") + (Math.round(((_local4[Hitz2L.iBonusLowSpeedID] / _local6) * 10000)) / 100).toString()) + "%"));
};
if (_local4[Hitz2L.iBonusNormalSpeedID]){
trace(((((((("BonusNormal : " + _local4[Hitz2L.iBonusNormalSpeedID].toString()) + " ") + (Math.round(((_local4[Hitz2L.iBonusNormalSpeedID] / _local5) * 10000)) / 100).toString()) + "%") + " ") + (Math.round(((_local4[Hitz2L.iBonusNormalSpeedID] / _local6) * 10000)) / 100).toString()) + "%"));
};
if (_local4[Hitz2L.iBonusSmallBallID]){
trace(((((((("SmallBall : " + _local4[Hitz2L.iBonusSmallBallID].toString()) + " ") + (Math.round(((_local4[Hitz2L.iBonusSmallBallID] / _local5) * 10000)) / 100).toString()) + "%") + " ") + (Math.round(((_local4[Hitz2L.iBonusSmallBallID] / _local6) * 10000)) / 100).toString()) + "%"));
};
if (_local4[Hitz2L.iBonusBigBallID]){
trace(((((((("BigBall : " + _local4[Hitz2L.iBonusBigBallID].toString()) + " ") + (Math.round(((_local4[Hitz2L.iBonusBigBallID] / _local5) * 10000)) / 100).toString()) + "%") + " ") + (Math.round(((_local4[Hitz2L.iBonusBigBallID] / _local6) * 10000)) / 100).toString()) + "%"));
};
if (_local4[Hitz2L.iBonusNormalBallID]){
trace(((((((("NormalBall : " + _local4[Hitz2L.iBonusNormalBallID].toString()) + " ") + (Math.round(((_local4[Hitz2L.iBonusNormalBallID] / _local5) * 10000)) / 100).toString()) + "%") + " ") + (Math.round(((_local4[Hitz2L.iBonusNormalBallID] / _local6) * 10000)) / 100).toString()) + "%"));
};
if (_local4[Hitz2L.iBonusShape1ID]){
trace(((((((("BonusShape1 : " + _local4[Hitz2L.iBonusShape1ID].toString()) + " ") + (Math.round(((_local4[Hitz2L.iBonusShape1ID] / _local5) * 10000)) / 100).toString()) + "%") + " ") + (Math.round(((_local4[Hitz2L.iBonusShape1ID] / _local6) * 10000)) / 100).toString()) + "%"));
};
if (_local4[Hitz2L.iBonusShape2ID]){
trace(((((((("BonusShape2 : " + _local4[Hitz2L.iBonusShape2ID].toString()) + " ") + (Math.round(((_local4[Hitz2L.iBonusShape2ID] / _local5) * 10000)) / 100).toString()) + "%") + " ") + (Math.round(((_local4[Hitz2L.iBonusShape2ID] / _local6) * 10000)) / 100).toString()) + "%"));
};
if (_local4[Hitz2L.iBonusShape3ID]){
trace(((((((("BonusShape3 : " + _local4[Hitz2L.iBonusShape3ID].toString()) + " ") + (Math.round(((_local4[Hitz2L.iBonusShape3ID] / _local5) * 10000)) / 100).toString()) + "%") + " ") + (Math.round(((_local4[Hitz2L.iBonusShape3ID] / _local6) * 10000)) / 100).toString()) + "%"));
};
if (_local4[Hitz2L.iBonusShape4ID]){
trace(((((((("BonusShape4 : " + _local4[Hitz2L.iBonusShape4ID].toString()) + " ") + (Math.round(((_local4[Hitz2L.iBonusShape4ID] / _local5) * 10000)) / 100).toString()) + "%") + " ") + (Math.round(((_local4[Hitz2L.iBonusShape4ID] / _local6) * 10000)) / 100).toString()) + "%"));
};
if (_local4[Hitz2L.iBonusShape5ID]){
trace(((((((("BonusShape5 : " + _local4[Hitz2L.iBonusShape5ID].toString()) + " ") + (Math.round(((_local4[Hitz2L.iBonusShape5ID] / _local5) * 10000)) / 100).toString()) + "%") + " ") + (Math.round(((_local4[Hitz2L.iBonusShape5ID] / _local6) * 10000)) / 100).toString()) + "%"));
};
if (_local4[Hitz2L.iBonusShape6ID]){
trace(((((((("BonusShape6 : " + _local4[Hitz2L.iBonusShape6ID].toString()) + " ") + (Math.round(((_local4[Hitz2L.iBonusShape6ID] / _local5) * 10000)) / 100).toString()) + "%") + " ") + (Math.round(((_local4[Hitz2L.iBonusShape6ID] / _local6) * 10000)) / 100).toString()) + "%"));
};
if (_local4[Hitz2L.iBonusShape7ID]){
trace(((((((("BonusShape7 : " + _local4[Hitz2L.iBonusShape7ID].toString()) + " ") + (Math.round(((_local4[Hitz2L.iBonusShape7ID] / _local5) * 10000)) / 100).toString()) + "%") + " ") + (Math.round(((_local4[Hitz2L.iBonusShape7ID] / _local6) * 10000)) / 100).toString()) + "%"));
};
if (_local4[Hitz2L.iBonusSmallPlatformID]){
trace(((((((("SmallPlatform : " + _local4[Hitz2L.iBonusSmallPlatformID].toString()) + " ") + (Math.round(((_local4[Hitz2L.iBonusSmallPlatformID] / _local5) * 10000)) / 100).toString()) + "%") + " ") + (Math.round(((_local4[Hitz2L.iBonusSmallPlatformID] / _local6) * 10000)) / 100).toString()) + "%"));
};
if (_local4[Hitz2L.iBonusNormalPlatformID]){
trace(((((((("NormalPlatform : " + _local4[Hitz2L.iBonusNormalPlatformID].toString()) + " ") + (Math.round(((_local4[Hitz2L.iBonusNormalPlatformID] / _local5) * 10000)) / 100).toString()) + "%") + " ") + (Math.round(((_local4[Hitz2L.iBonusNormalPlatformID] / _local6) * 10000)) / 100).toString()) + "%"));
};
if (_local4[Hitz2L.iBonusBigPlatformID]){
trace(((((((("BigPlatform : " + _local4[Hitz2L.iBonusBigPlatformID].toString()) + " ") + (Math.round(((_local4[Hitz2L.iBonusBigPlatformID] / _local5) * 10000)) / 100).toString()) + "%") + " ") + (Math.round(((_local4[Hitz2L.iBonusBigPlatformID] / _local6) * 10000)) / 100).toString()) + "%"));
};
if (_local4[Hitz2L.iBonusFireBallID]){
trace(((((((("FireBall : " + _local4[Hitz2L.iBonusFireBallID].toString()) + " ") + (Math.round(((_local4[Hitz2L.iBonusFireBallID] / _local5) * 10000)) / 100).toString()) + "%") + " ") + (Math.round(((_local4[Hitz2L.iBonusFireBallID] / _local6) * 10000)) / 100).toString()) + "%"));
};
if (_local4[Hitz2L.iBonusAddLifeID]){
trace(((((((("AddLife : " + _local4[Hitz2L.iBonusAddLifeID].toString()) + " ") + (Math.round(((_local4[Hitz2L.iBonusAddLifeID] / _local5) * 10000)) / 100).toString()) + "%") + " ") + (Math.round(((_local4[Hitz2L.iBonusAddLifeID] / _local6) * 10000)) / 100).toString()) + "%"));
};
if (_local4[Hitz2L.iBonusHiddenID]){
trace(((((((("HiddenBonus : " + _local4[Hitz2L.iBonusHiddenID].toString()) + " ") + (Math.round(((_local4[Hitz2L.iBonusHiddenID] / _local5) * 10000)) / 100).toString()) + "%") + " ") + (Math.round(((_local4[Hitz2L.iBonusHiddenID] / _local6) * 10000)) / 100).toString()) + "%"));
};
};
}
}
}//package RES.GAME.FIELD.OBSTACLES
Section 110
//CParticle (RES.GAME.FIELD.PARTICLES.CParticle)
package RES.GAME.FIELD.PARTICLES {
import ENGINE.DISPLAY.*;
public class CParticle extends OSprite {
private var iStartTicker:int;
private var iBitmap:OBitmap;
public var State:int;
private var iDX:Number;
private var iDY:Number;
public var iTicker:int;
public static const stWorking:int = 1;
public static const stNone:int = 0;
public function CParticle(_arg1:OBitmap, _arg2:Number, _arg3:Number){
iDX = _arg2;
iDY = _arg3;
iBitmap = new OBitmap();
iBitmap.CopyFrom(_arg1);
this.addChild(iBitmap);
iTicker = ((Math.random() * 10) + 20);
iStartTicker = iTicker;
State = stWorking;
}
public function onTimer():void{
if (--iTicker == 0){
State = stNone;
};
this.scaleX = (iTicker / iStartTicker);
this.scaleY = (iTicker / iStartTicker);
Move(iDX, iDY);
}
}
}//package RES.GAME.FIELD.PARTICLES
Section 111
//CParticlesContainer (RES.GAME.FIELD.PARTICLES.CParticlesContainer)
package RES.GAME.FIELD.PARTICLES {
import ENGINE.DISPLAY.*;
import RES.GAME.*;
public class CParticlesContainer extends OSprite {
private var iGraphics:CGraphicsHolder;
private var iParticles:Array;
public function CParticlesContainer(_arg1:CGraphicsHolder){
iGraphics = _arg1;
iParticles = new Array();
}
public function addExplode(_arg1:int, _arg2:int, _arg3:int):void{
var _local4:int;
_local4 = 0;
while (_local4 < 15) {
if (_local4 < 10){
iParticles.push(new CParticle(iGraphics.iParticles[_arg1], ((Math.random() * 8) - 4), ((Math.random() * 8) - 4)));
} else {
iParticles.push(new CParticle(iGraphics.iParticles[_arg1], ((Math.random() * 2) - 1), ((Math.random() * 2) - 1)));
};
iParticles[(iParticles.length - 1)].prX = _arg2;
iParticles[(iParticles.length - 1)].prY = _arg3;
this.addChild(iParticles[(iParticles.length - 1)]);
_local4++;
};
}
public function onTimer():void{
var _local1:int;
_local1 = 0;
while (_local1 < iParticles.length) {
iParticles[_local1].onTimer();
if (iParticles[_local1].State == CParticle.stNone){
this.removeChild(iParticles[_local1]);
iParticles.splice(_local1, 1);
_local1--;
};
_local1++;
};
}
}
}//package RES.GAME.FIELD.PARTICLES
Section 112
//CObstaclePiece (RES.GAME.FIELD.PIECES.CObstaclePiece)
package RES.GAME.FIELD.PIECES {
import ENGINE.DISPLAY.*;
import flash.geom.*;
public class CObstaclePiece extends OSprite {
public var iW:Number;
public var iBitmap:OBitmap;
public var iContainer:OSprite;
public var iVel:Point;
private var itimer:int;
private var first:int;// = 0
public function CObstaclePiece(_arg1:OSprite){
first = 0;
super();
iBitmap = (_arg1.getChildAt(0) as OBitmap);
iContainer = new OSprite();
iContainer.addChild(iBitmap);
this.Pos(_arg1.prX, _arg1.prY);
this.addChild(iContainer);
}
public function onTimer():void{
if (first < 3){
first++;
return;
};
this.Move(iVel.x, iVel.y);
iVel.x = (iVel.x * 0.95);
iVel.y = (iVel.y * 0.95);
iContainer.rotation = (iContainer.rotation + iW);
iW = (iW * 0.95);
iBitmap.alpha = (iBitmap.alpha - 0.04);
if (itimer++ > 20){
iBitmap.alpha = 0;
};
}
}
}//package RES.GAME.FIELD.PIECES
Section 113
//CPiecesContainer (RES.GAME.FIELD.PIECES.CPiecesContainer)
package RES.GAME.FIELD.PIECES {
import ENGINE.DISPLAY.*;
import flash.geom.*;
public class CPiecesContainer extends OSprite {
public function addPieces(_arg1:Array, _arg2:Number, _arg3:Number, _arg4:Rectangle):void{
var _local5:Point;
var _local6:int;
var _local7:Point;
var _local8:Point;
var _local9:Number;
_local5 = new Point(((_arg4.right / 2) + (_arg4.left / 2)), ((_arg4.top / 2) + (_arg4.bottom / 2)));
_local6 = 0;
while (_local6 < _arg1.length) {
_arg1[_local6].Move(_arg2, _arg3);
_local7 = new Point((_arg1[_local6].prX - _arg2), (_arg1[_local6].prY - _arg3));
_local8 = _local7.subtract(_local5);
_local7.subtract(_local5).x = (_local8.x / 10);
_local8.y = (_local8.y / 10);
_local8.x = Math.floor(_local8.x);
_local8.y = Math.floor(_local8.y);
_arg1[_local6].iVel = _local8;
_local9 = (Math.pow(_arg1[_local6].prWidth, 2) + Math.pow(_arg1[_local6].prHeight, 2));
if (_local9 > 1200){
_arg1[_local6].iW = 0;
} else {
_arg1[_local6].iW = ((Math.random() * 3) - 6);
};
this.addChild(_arg1[_local6]);
_local6++;
};
}
public function onTimer():void{
var _local1:int;
_local1 = 0;
while (_local1 < this.numChildren) {
(this.getChildAt(_local1) as CObstaclePiece).onTimer();
if ((this.getChildAt(_local1) as CObstaclePiece).iBitmap.alpha <= 0){
this.removeChild(this.getChildAt(_local1));
};
_local1++;
};
}
}
}//package RES.GAME.FIELD.PIECES
Section 114
//CPlatform (RES.GAME.FIELD.PLATFORMS.CPlatform)
package RES.GAME.FIELD.PLATFORMS {
import ENGINE.DISPLAY.*;
import RES.GAME.FIELD.OBSTACLES.*;
import RES.GAME.*;
public class CPlatform extends CObstacle {
private var currentShadow:int;
private var splashing:Boolean;
private var iShadows:Array;
private var iShadowsLayer:OSprite;
public var iNextX:Number;
public var iVelocity:Number;
public function CPlatform(_arg1:Array, _arg2:int, _arg3:int, _arg4:OBitmap, _arg5:Array, _arg6:OSprite, _arg7:OSprite, _arg8:Array, _arg9:Array, _arg10:int, _arg11:CGraphicsHolder){
var _local12:int;
var _local13:OBitmap;
super(_arg1, _arg2, _arg3, _arg4, null, _arg6, _arg7, _arg8, _arg9, _arg10, 0, _arg11);
iShadowsLayer = _arg7;
iShadows = new Array();
_local12 = 0;
while (_local12 < _arg5.length) {
_local13 = new OBitmap();
_local13.CopyFrom(_arg5[_local12]);
iShadows.push(_local13);
_arg7.addChild(_local13);
pushDistributedSprite(_local13, _arg7);
if (_local12 > 0){
_local13.visible = false;
};
_local12++;
};
currentShadow = 0;
iVelocity = 0;
iNextX = 0;
}
public function getCenterPos():Number{
return ((prX + (super.prWidth / 2)));
}
override public function set prVisible(_arg1:Boolean):void{
iShadowsLayer.prVisible = _arg1;
super.prVisible = _arg1;
}
public function onTimer():void{
var _local1:int;
if ((((Math.random() < 0.3)) && ((currentShadow > 0)))){
iShadows[currentShadow].visible = false;
currentShadow--;
iShadows[currentShadow].visible = true;
};
if (splashing){
_local1 = 0;
while (_local1 < currentShadow) {
if (iShadows[_local1].visible){
iShadows[_local1].visible = false;
break;
};
_local1++;
};
if (_local1 == (currentShadow - 1)){
splashing = false;
};
};
this.prX = this.iNextX;
iVelocity = 0;
}
public function notifyMouseMove(_arg1:Number, _arg2:Number):void{
var _local3:Number;
_local3 = this.prX;
this.iNextX = (_arg1 - (super.prWidth / 2));
if (this.iNextX > (_arg2 - super.prWidth)){
this.iNextX = (_arg2 - super.prWidth);
};
if (this.iNextX < -5){
this.iNextX = -5;
};
iVelocity = (iNextX - _local3);
iShadows[currentShadow].visible = false;
currentShadow++;
if (currentShadow > (iShadows.length - 1)){
currentShadow = (iShadows.length - 1);
};
iShadows[currentShadow].visible = true;
}
public function splash():void{
var _local1:int;
_local1 = 0;
while (_local1 < iShadows.length) {
iShadows[_local1].visible = true;
_local1++;
};
currentShadow = (iShadows.length - 1);
splashing = true;
}
}
}//package RES.GAME.FIELD.PLATFORMS
Section 115
//CPlatformsContainer (RES.GAME.FIELD.PLATFORMS.CPlatformsContainer)
package RES.GAME.FIELD.PLATFORMS {
import ENGINE.DISPLAY.*;
import RES.GAME.*;
public class CPlatformsContainer {
private var iPlatformsInfo:Array;
private var iObjectsLayer:OSprite;
private var iShadowsLayer:OSprite;
public var iBallSizes:Array;
private var iGraphics:CGraphicsHolder;
private var iPlatforms:Array;
public function CPlatformsContainer(_arg1:Array, _arg2:CGraphicsHolder, _arg3:Array, _arg4:OSprite, _arg5:OSprite){
iPlatforms = new Array();
iPlatformsInfo = _arg1;
iGraphics = _arg2;
iBallSizes = _arg3;
iObjectsLayer = _arg4;
iShadowsLayer = _arg5;
}
public function addPlatform(_arg1:int, _arg2:Number, _arg3:Number, _arg4:int):CPlatform{
var _local5:CPlatform;
_local5 = new CPlatform(iGraphics.iPlatformsInfo, 0, 0, iGraphics.iPlatforms[_arg1], iGraphics.iPlatformsShadows[_arg1], iObjectsLayer, iShadowsLayer, iGraphics.iPlatformsIntersectionInfo, iBallSizes, _arg1, iGraphics);
_local5.iNextX = 0;
_local5.notifyMouseMove(0, _arg4);
_local5.prY = _arg3;
iPlatforms.push(_local5);
return (_local5);
}
public function onTimer():void{
var _local1:CPlatform;
for each (_local1 in iPlatforms) {
_local1.onTimer();
};
}
public function getPlatforms():Array{
return (iPlatforms);
}
public function get prItems():Array{
return (iPlatforms);
}
public function setShape(_arg1:int, _arg2:Number):CPlatform{
var _local3:CPlatform;
_local3 = new CPlatform(iGraphics.iPlatformsInfo, 0, 0, iGraphics.iPlatforms[_arg1], iGraphics.iPlatformsShadows[_arg1], iObjectsLayer, iShadowsLayer, iGraphics.iPlatformsIntersectionInfo, iBallSizes, _arg1, iGraphics);
_local3.notifyMouseMove(iPlatforms[0].getCenterPos(), _arg2);
_local3.prY = iPlatforms[0].prY;
_local3.iVelocity = 0;
_local3.onTimer();
iPlatforms[0].Free();
iPlatforms[0] = _local3;
return (_local3);
}
}
}//package RES.GAME.FIELD.PLATFORMS
Section 116
//CAsynchronousBaseSequence (RES.GAME.FIELD.SEQUENCE.CAsynchronousBaseSequence)
package RES.GAME.FIELD.SEQUENCE {
import flash.geom.*;
import RES.GAME.FIELD.OBSTACLES.*;
import ENGINE.CORE.*;
import RES.GAME.FIELD.OBSTACLES.STRATEGIES.*;
public class CAsynchronousBaseSequence extends CBaseSequence {
protected var iSequenceArray:Array;
public function CAsynchronousBaseSequence(_arg1:Array, _arg2:Function){
super(_arg1, _arg2);
}
override public function set State(_arg1:int):void{
iState = _arg1;
switch (_arg1){
case stWorking:
createSequence();
break;
};
}
protected function processWorking():void{
var _local1:Boolean;
var _local2:CBaseStrategy;
var _local3:Array;
_local1 = true;
for each (_local2 in iStrategies) {
_local2.process();
if (_local2.State != CBaseStrategy.stDone){
_local1 = false;
};
};
if (_local1){
this.State = stDone;
return;
};
_local3 = iSequenceArray.shift();
_local1 = false;
for each (_local2 in _local3) {
if (_local2){
_local1 = true;
_local2.start();
};
};
if (_local1){
OSound.PlaySoundInd(Hitz2L.OSAppearInd);
};
}
protected function fillSequence(_arg1:Array, _arg2:Array):void{
}
protected function getObjectsBounds():Rectangle{
var _local1:Array;
var _local2:CObstacle;
var _local3:Rectangle;
_local1 = new Array();
_local1[0] = iDisplayObjects[0].iBoundsRects[0].left;
_local1[1] = iDisplayObjects[0].iBoundsRects[0].right;
_local1[2] = iDisplayObjects[0].iBoundsRects[0].top;
_local1[3] = iDisplayObjects[0].iBoundsRects[0].bottom;
for each (_local2 in iDisplayObjects) {
_local3 = _local2.iBoundsRects[0];
if (_local3.left < _local1[0]){
_local1[0] = _local3.left;
};
if (_local3.right > _local1[1]){
_local1[1] = _local3.right;
};
if (_local3.top < _local1[2]){
_local1[2] = _local3.top;
};
if (_local3.bottom > _local1[3]){
_local1[3] = _local3.bottom;
};
};
return (new Rectangle(_local1[0], _local1[2], (_local1[1] - _local1[0]), (_local1[3] - _local1[2])));
}
protected function createSequence():void{
var _local1:Array;
var _local2:CBaseStrategy;
var _local3:Array;
var _local4:CObstacle;
_local1 = new Array();
for each (_local2 in iStrategies) {
_local1.push(_local2);
};
_local3 = new Array();
for each (_local4 in iDisplayObjects) {
_local3.push(_local4);
};
iSequenceArray = new Array();
fillSequence(_local3, _local1);
}
override public function process():void{
switch (State){
case stWorking:
processWorking();
break;
};
}
}
}//package RES.GAME.FIELD.SEQUENCE
Section 117
//CBaseSequence (RES.GAME.FIELD.SEQUENCE.CBaseSequence)
package RES.GAME.FIELD.SEQUENCE {
import ENGINE.CORE.*;
import RES.GAME.FIELD.OBSTACLES.STRATEGIES.*;
public class CBaseSequence {
protected var iState:int;
protected var iStrategies:Array;
protected var iDisplayObjects:Array;
public static const stWorking:int = 1;
public static const stDone:int = 2;
public static const stNone:int = 0;
public function CBaseSequence(_arg1:Array, _arg2:Function){
iStrategies = new Array();
iDisplayObjects = _arg1;
connect(_arg1, _arg2());
}
public function set State(_arg1:int):void{
iState = _arg1;
}
public function start():void{
State = stWorking;
}
protected function connect(_arg1:Array, _arg2:Function):void{
var _local3:int;
_local3 = 0;
while (_local3 < (_arg1.length - 3)) {
iStrategies.push(_arg2(_arg1[_local3]));
_local3++;
};
}
public function get State():int{
return (iState);
}
public function process():void{
var _local1:int;
switch (State){
case stWorking:
_local1 = 0;
while (_local1 < iStrategies.length) {
OSound.PlaySoundInd(Hitz2L.OSAppearInd);
(iStrategies[_local1] as CBaseStrategy).start();
_local1++;
};
State = stDone;
break;
};
}
}
}//package RES.GAME.FIELD.SEQUENCE
Section 118
//CFourCircleSequence (RES.GAME.FIELD.SEQUENCE.CFourCircleSequence)
package RES.GAME.FIELD.SEQUENCE {
import flash.geom.*;
public class CFourCircleSequence extends COneCircleSequence {
public function CFourCircleSequence(_arg1:Array, _arg2:Function){
super(_arg1, _arg2);
}
override protected function fillSequence(_arg1:Array, _arg2:Array):void{
var _local3:Rectangle;
var _local4:Array;
var _local5:Number;
var _local6:Array;
var _local7:Point;
var _local8:int;
_local3 = getObjectsBounds();
_local4 = new Array();
_local4.push(new Point((((_local3.right / 2) + (_local3.left / 2)) - (_local3.width / 4)), (((_local3.top / 2) + (_local3.bottom / 2)) - (_local3.height / 4))));
_local4.push(new Point((((_local3.right / 2) + (_local3.left / 2)) + (_local3.width / 4)), (((_local3.top / 2) + (_local3.bottom / 2)) - (_local3.height / 4))));
_local4.push(new Point((((_local3.right / 2) + (_local3.left / 2)) - (_local3.width / 4)), (((_local3.top / 2) + (_local3.bottom / 2)) + (_local3.height / 4))));
_local4.push(new Point((((_local3.right / 2) + (_local3.left / 2)) + (_local3.width / 4)), (((_local3.top / 2) + (_local3.bottom / 2)) + (_local3.height / 4))));
_local5 = 0;
while (_arg1.length > 0) {
_local5 = (_local5 + 3);
_local6 = new Array();
for each (_local7 in _local4) {
_local8 = 0;
while (_local8 < _arg1.length) {
if (isObstacleInCircle(_arg1[_local8], _local7, _local5)){
_local6.push(_arg2[_local8]);
_arg1.splice(_local8, 1);
_arg2.splice(_local8, 1);
_local8--;
};
_local8++;
};
};
iSequenceArray.push(_local6);
};
}
}
}//package RES.GAME.FIELD.SEQUENCE
Section 119
//CFullFieldRectSequence (RES.GAME.FIELD.SEQUENCE.CFullFieldRectSequence)
package RES.GAME.FIELD.SEQUENCE {
import flash.geom.*;
public class CFullFieldRectSequence extends CRectBasedSequence {
private var iFillType:int;
public function CFullFieldRectSequence(_arg1:Array, _arg2:Function){
iFillType = Math.floor((Math.random() * 4));
super(_arg1, _arg2);
}
override protected function fillSequence(_arg1:Array, _arg2:Array):void{
var _local3:int;
var _local4:Rectangle;
var _local5:Number;
var _local6:Number;
var _local7:Array;
var _local8:int;
_local3 = 5;
_local4 = getObjectsBounds();
_local5 = _local4.width;
_local6 = _local4.height;
switch (iFillType){
case 0:
_local4.x = _local5;
case 1:
_local4.width = 0;
break;
case 2:
_local4.y = _local6;
default:
_local4.height = 0;
break;
};
while (_arg1.length > 0) {
switch (iFillType){
case 0:
_local4.x = (_local4.x - _local3);
case 1:
_local4.width = (_local4.width + _local3);
break;
case 2:
_local4.y = (_local4.y - _local3);
default:
_local4.height = (_local4.height + _local3);
break;
};
_local7 = new Array();
_local8 = 0;
while (_local8 < _arg1.length) {
if (isObstacleInRects(_arg1[_local8], [_local4])){
_local7.push(_arg2[_local8]);
_arg1.splice(_local8, 1);
_arg2.splice(_local8, 1);
_local8--;
};
_local8++;
};
iSequenceArray.push(_local7);
};
}
}
}//package RES.GAME.FIELD.SEQUENCE
Section 120
//COneCircleSequence (RES.GAME.FIELD.SEQUENCE.COneCircleSequence)
package RES.GAME.FIELD.SEQUENCE {
import flash.geom.*;
import RES.GAME.FIELD.OBSTACLES.*;
public class COneCircleSequence extends CAsynchronousBaseSequence {
public function COneCircleSequence(_arg1:Array, _arg2:Function){
super(_arg1, _arg2);
}
override protected function fillSequence(_arg1:Array, _arg2:Array):void{
var _local3:Rectangle;
var _local4:Point;
var _local5:Number;
var _local6:Array;
var _local7:int;
_local3 = getObjectsBounds();
_local4 = new Point(((_local3.right / 2) + (_local3.left / 2)), ((_local3.top / 2) + (_local3.bottom / 2)));
_local5 = 0;
while (_arg1.length > 0) {
_local5 = (_local5 + 5);
_local6 = new Array();
_local7 = 0;
while (_local7 < _arg1.length) {
if (isObstacleInCircle(_arg1[_local7], _local4, _local5)){
_local6.push(_arg2[_local7]);
_arg1.splice(_local7, 1);
_arg2.splice(_local7, 1);
_local7--;
};
_local7++;
};
iSequenceArray.push(_local6);
};
}
protected function isObstacleInCircle(_arg1:CObstacle, _arg2:Point, _arg3:Number):Boolean{
var _local4:Number;
var _local5:Array;
var _local6:Point;
_local4 = (_arg3 * _arg3);
_local5 = _arg1.getVertexes();
for each (_local6 in _local5) {
if ((Math.pow((_local6.x - _arg2.x), 2) + Math.pow((_local6.y - _arg2.y), 2)) > _local4){
return (false);
};
};
return (true);
}
}
}//package RES.GAME.FIELD.SEQUENCE
Section 121
//CRandomSequence (RES.GAME.FIELD.SEQUENCE.CRandomSequence)
package RES.GAME.FIELD.SEQUENCE {
import ENGINE.CORE.*;
import RES.GAME.FIELD.OBSTACLES.STRATEGIES.*;
public class CRandomSequence extends CBaseSequence {
private const iWaitTicks:int = 2;
private var iStrategyFunction:Function;
private var aSequenceArray:Array;
private var iCurTicks:int;
public function CRandomSequence(_arg1:Array, _arg2:Function){
super(_arg1, _arg2);
iStrategyFunction = _arg2;
aSequenceArray = new Array();
}
override public function set State(_arg1:int):void{
iState = _arg1;
switch (_arg1){
case stWorking:
randomizeArray(iStrategies);
break;
};
}
private function processWorking():void{
var _local1:CBaseStrategy;
var _local2:int;
var _local3:int;
if (iStrategies.length == 0){
State = stDone;
return;
};
for each (_local1 in iStrategies) {
_local1.process();
};
_local2 = 0;
while (_local2 < iStrategies.length) {
if (iStrategies[_local2].State == CBaseStrategy.stDone){
iStrategies.splice(_local2, 1);
_local2--;
};
_local2++;
};
if (iCurTicks++ >= iWaitTicks){
iCurTicks = 0;
_local3 = 0;
while (_local3 < iStrategies.length) {
if (iStrategies[_local3].State == CBaseStrategy.stNone){
iStrategies[_local3].start();
OSound.PlaySoundInd(Hitz2L.OSAppearInd);
break;
};
_local3++;
};
};
}
private function randomizeArray(_arg1:Array):void{
var _local2:int;
var _local3:int;
var _local4:Object;
_local2 = 0;
while (_local2 < _arg1.length) {
_local3 = Math.floor((Math.random() * _arg1.length));
_local4 = _arg1[_local2];
_arg1[_local2] = _arg1[_local3];
_arg1[_local3] = _local4;
_local2++;
};
}
override public function process():void{
switch (State){
case stWorking:
processWorking();
break;
};
}
}
}//package RES.GAME.FIELD.SEQUENCE
Section 122
//CRectBasedSequence (RES.GAME.FIELD.SEQUENCE.CRectBasedSequence)
package RES.GAME.FIELD.SEQUENCE {
import flash.geom.*;
import RES.GAME.FIELD.OBSTACLES.*;
public class CRectBasedSequence extends CAsynchronousBaseSequence {
public function CRectBasedSequence(_arg1:Array, _arg2:Function){
super(_arg1, _arg2);
}
protected function isObstacleInRects(_arg1:CObstacle, _arg2:Array):Boolean{
var _local3:Point;
var _local4:Boolean;
var _local5:Rectangle;
for each (_local3 in _arg1.getVertexes()) {
_local4 = true;
for each (_local5 in _arg2) {
if (_local5.contains(_local3.x, _local3.y)){
_local4 = false;
break;
};
};
if (_local4){
return (false);
};
};
return (true);
}
}
}//package RES.GAME.FIELD.SEQUENCE
Section 123
//CSequences (RES.GAME.FIELD.SEQUENCE.CSequences)
package RES.GAME.FIELD.SEQUENCE {
public class CSequences {
public static function getRandomSequence(_arg1:Array, _arg2:Function):CBaseSequence{
var _local3:int;
_local3 = Math.floor((Math.random() * 5));
switch (_local3){
case 0:
return (new CRandomSequence(_arg1, _arg2));
case 1:
return (new COneCircleSequence(_arg1, _arg2));
case 2:
return (new CFourCircleSequence(_arg1, _arg2));
case 3:
return (new CTwinRectSequence(_arg1, _arg2));
default:
return (new CFullFieldRectSequence(_arg1, _arg2));
};
}
}
}//package RES.GAME.FIELD.SEQUENCE
Section 124
//CTwinRectSequence (RES.GAME.FIELD.SEQUENCE.CTwinRectSequence)
package RES.GAME.FIELD.SEQUENCE {
import flash.geom.*;
public class CTwinRectSequence extends CRectBasedSequence {
private var iFillType:int;
public function CTwinRectSequence(_arg1:Array, _arg2:Function){
iFillType = Math.floor((Math.random() * 2));
super(_arg1, _arg2);
}
override protected function fillSequence(_arg1:Array, _arg2:Array):void{
var _local3:int;
var _local4:Rectangle;
var _local5:Rectangle;
var _local6:Number;
var _local7:Number;
var _local8:Array;
var _local9:Boolean;
var _local10:int;
_local3 = 10;
_local4 = getObjectsBounds();
_local5 = getObjectsBounds();
_local6 = _local4.width;
_local7 = _local4.height;
switch (iFillType){
case 0:
_local5.height = (_local5.height / 2);
_local5.y = (_local5.y + _local5.height);
_local5.x = (_local5.x + _local5.width);
_local5.width = 0;
_local4.height = (_local4.height / 2);
_local4.width = 0;
break;
default:
_local5.width = (_local5.width / 2);
_local5.y = (_local5.y + _local5.height);
_local5.x = (_local5.x + _local5.width);
_local4.width = (_local4.width / 2);
_local4.height = 0;
_local5.height = 0;
break;
};
while (_arg1.length > 0) {
switch (iFillType){
case 0:
_local4.width = (_local4.width + _local3);
_local5.width = (_local5.width + _local3);
_local5.x = (_local5.x - _local3);
break;
default:
_local4.height = (_local4.height + _local3);
_local5.height = (_local5.height + _local3);
_local5.y = (_local5.y - _local3);
break;
};
_local8 = new Array();
_local9 = true;
_local10 = 0;
while (_local10 < _arg1.length) {
if (isObstacleInRects(_arg1[_local10], [_local4, _local5])){
_local8.push(_arg2[_local10]);
_arg1.splice(_local10, 1);
_arg2.splice(_local10, 1);
_local9 = false;
};
_local10++;
};
iSequenceArray.push(_local8);
if (_local9){
iSequenceArray.push(null);
};
};
}
}
}//package RES.GAME.FIELD.SEQUENCE
Section 125
//CBallTailElem (RES.GAME.FIELD.TAIL.CBallTailElem)
package RES.GAME.FIELD.TAIL {
import ENGINE.DISPLAY.*;
import RES.GAME.FIELD.BALL.*;
import RES.GAME.*;
public class CBallTailElem extends OSprite {
private var iBall:CBall;
private var iGraphics:CGraphicsHolder;
private var iBitmaps:Array;
private var iState:int;
public static const stWorking:int = 1;
public static const stNone:int = 0;
public function CBallTailElem(_arg1:CGraphicsHolder, _arg2:CBall){
iBall = _arg2;
iGraphics = _arg1;
iState = stNone;
initGraphics();
}
override public function moveTo(_arg1:Number, _arg2:Number):void{
var _local3:OBitmap;
for each (_local3 in iBitmaps) {
_local3.Pos(_arg1, _arg2);
};
}
public function start():void{
iState = stWorking;
iBitmaps[0].visible = true;
}
public function get State():int{
return (iState);
}
override public function Free():void{
super.Free();
iBitmaps = null;
}
public function onTimer():void{
var _local1:int;
switch (iState){
case stWorking:
if (Math.random() < 0.5){
break;
};
_local1 = 0;
while (_local1 < iBitmaps.length) {
if (iBitmaps[_local1].visible){
iBitmaps[_local1].visible = false;
if (_local1 < (iBitmaps.length - 1)){
iBitmaps[(_local1 + 1)].visible = true;
} else {
iState = stNone;
};
break;
};
_local1++;
};
break;
};
}
private function initGraphics():void{
var _local1:int;
var _local2:OBitmap;
var _local3:OBitmap;
iBitmaps = new Array();
_local1 = (iBall.fireBall) ? Hitz2L.iBallSizes.length : 0;
for each (_local2 in iGraphics.iBallTails[(iBall.iSizeInd + _local1)]) {
_local3 = new OBitmap();
_local3.CopyFrom(_local2);
iBitmaps.push(_local3);
_local3.visible = false;
this.addChild(_local3);
};
}
private function set State(_arg1:int):void{
iState = _arg1;
}
}
}//package RES.GAME.FIELD.TAIL
Section 126
//CBallTailElemsContainer (RES.GAME.FIELD.TAIL.CBallTailElemsContainer)
package RES.GAME.FIELD.TAIL {
import ENGINE.DISPLAY.*;
import RES.GAME.FIELD.BALL.*;
import flash.utils.*;
import RES.GAME.*;
public class CBallTailElemsContainer extends OSprite {
private var iGraphics:CGraphicsHolder;
private var iTails:Dictionary;
private var numTails:int;
public function CBallTailElemsContainer(_arg1:CGraphicsHolder){
iGraphics = _arg1;
iTails = new Dictionary(true);
numTails = 0;
}
public function posTailTo(_arg1:Number, _arg2:int, _arg3:CBall):void{
var _local4:Array;
var _local5:int;
if (Math.random() < 0.4){
return;
};
_local4 = iTails[_arg3];
_local5 = 0;
while (_local5 < (_local4.length / numTails)) {
if (_local4[_local5].State == CBallTailElem.stNone){
(_local4[_local5] as CBallTailElem).Pos(_arg1, _arg2);
(_local4[_local5] as CBallTailElem).start();
break;
};
_local5++;
};
}
public function createTailForBall(_arg1:CBall):void{
var _local2:Array;
var _local3:int;
var _local4:int;
_local2 = new Array();
_local3 = (_arg1.fireBall) ? Hitz2L.iBallSizes.length : 0;
_local4 = 0;
while (_local4 < iGraphics.iBallTails[(_arg1.prSizeInd + _local3)].length) {
_local2.push(new CBallTailElem(iGraphics, _arg1));
this.addChild(_local2[_local4]);
_local4++;
};
iTails[_arg1] = _local2;
numTails++;
}
override public function Free():void{
var _local1:Array;
var _local2:CBallTailElem;
for each (_local1 in iTails) {
for each (_local2 in _local1) {
_local2.Free();
};
};
iTails = null;
super.Free();
}
public function onTimer():void{
var _local1:Array;
var _local2:int;
for each (_local1 in iTails) {
_local2 = 0;
while (_local2 < _local1.length) {
_local1[_local2].onTimer();
_local2++;
};
};
}
public function removeTailFromBall(_arg1:CBall):void{
var _local2:int;
_local2 = 0;
while (_local2 < iTails[_arg1].length) {
this.removeChild(iTails[_arg1][_local2]);
delete iTails[_arg1][_local2];
_local2++;
};
delete iTails[_arg1];
numTails--;
}
}
}//package RES.GAME.FIELD.TAIL
Section 127
//CField (RES.GAME.FIELD.CField)
package RES.GAME.FIELD {
import ENGINE.DISPLAY.*;
import flash.events.*;
import flash.display.*;
import flash.geom.*;
import RES.GAME.FIELD.OBSTACLES.*;
import RES.GAME.FIELD.BALL.*;
import RES.GAME.FIELD.PLATFORMS.*;
import RES.GAME.FIELD.BONUSES.*;
import RES.GAME.FIELD.PARTICLES.*;
import RES.GAME.FIELD.SEQUENCE.*;
import RES.GAME.FIELD.OBSERVERS.*;
import ENGINE.CORE.*;
import RES.GAME.*;
import RES.GAME.FIELD.DEMO.*;
import FILTERS.*;
import RES.GAME.FIELD.PIECES.*;
import flash.ui.*;
public class CField extends OSprite {
private var iSize:int;
public var iLives:int;
private var iFieldBounds:Rectangle;
private var iParticles:CParticlesContainer;
private var iBonusesControl:CBonusesManager;
private var iTimer:int;
private var iScale:Number;
private var iBonuses:CBonusesContainer;
private var iBounds:OBitmap;
private var iGameConnector:IFieldObserver;
private var iBonusesManager:CBonusesManager;
private var iShadowsLayer:OSprite;
private var iSequenceStrategy:CBaseSequence;
public var iPause:Boolean;
private var iObstacles:CObstaclesContainer;
private var iBalls:CBallsContainer;
private var iObstaclePieces:CPiecesContainer;
private var iDemoWriter:CDemoWriter;
private var iObjectsLayer:OSprite;
private var iState:int;
private var iScore:int;
private var iDummyBitmap:Bitmap;
private var iCurScoreK:Number;
private var iObservers:Array;
private var iPlatforms:CPlatformsContainer;
public static const stShow:int = 1;
public static const stNormal:int = 2;
public static const stHide:int = 6;
public static const stCompletingLevel:int = 4;
public static const stNone:int = 0;
public static const stCompletedLevel:int = 5;
public static const stWaitingNextBall:int = 3;
public function CField(_arg1:OSprite, _arg2:OSprite, _arg3:CObstaclesContainer, _arg4:CBallsContainer, _arg5:CPlatformsContainer, _arg6:CBonusesContainer, _arg7:CParticlesContainer, _arg8:int, _arg9:Array, _arg10:CBaseSequence){
iScore = 0;
iParticles = _arg7;
iBonuses = _arg6;
iSequenceStrategy = _arg10;
iObservers = _arg9;
iShadowsLayer = _arg2;
this.addChild(iShadowsLayer);
iObjectsLayer = _arg1;
this.addChild(iObjectsLayer);
iObstacles = _arg3;
iPlatforms = _arg5;
iBalls = _arg4;
iSize = _arg8;
iFieldBounds = new Rectangle(0, 0, (iSize + 10), iSize);
initField();
this.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
this.addEventListener(MouseEvent.CLICK, onMouseClick);
this.addEventListener(MouseEvent.ROLL_OVER, onMouseRollOver);
this.addEventListener(MouseEvent.ROLL_OUT, onMouseRollOut);
this.mouseChildren = false;
iObstaclePieces = new CPiecesContainer();
this.addChild(iObstaclePieces);
iBonusesManager = new CBonusesManager(this);
iDemoWriter = new CDemoWriter();
iDemoWriter.start();
iCurScoreK = 1;
iPause = false;
buildBounds();
}
public function addSmallBall():void{
if (iBalls){
iBalls.smallBallApply();
};
}
private function getBallPlatformCollision(_arg1:CBall, _arg2:CPlatform):Array{
var _local3:Number;
var _local4:Array;
var _local5:Point;
var _local6:Number;
var _local7:Number;
_arg1.iV.x = (_arg1.iV.x - _arg2.iVelocity);
_local3 = _arg1.iV.length;
_local4 = getBallObstacleCollision(_arg1, _arg2);
_arg1.iV.x = (_arg1.iV.x + _arg2.iVelocity);
if (((!(_local4)) || (!(_local4[0])))){
return (null);
};
_local5 = new Point((_local4[0].x - _arg1.prX), (_local4[0].y - _arg1.prY));
_local6 = _local5.length;
_local7 = (_local5.length / _local3);
_local4[0].x = (_local4[0].x + (_arg2.iVelocity * _local7));
return (_local4.concat(_local7));
}
public function addHighSpeed():void{
if (iBalls){
iBalls.highSpeedApply();
};
iBonusesManager.pushBonus(Hitz2L.iBonusHighSpeedID, Hitz2L.iBonusHighSpeedTime);
}
public function resume():void{
this.iPause = false;
}
public function addNormalSpeed():void{
if (iBalls){
iBalls.normalSpeedApply();
};
}
private function reglueBalls(_arg1:CPlatform):void{
var _local2:CBall;
for each (_local2 in iBalls.prItems) {
_local2.glueTo(_arg1);
};
}
private function checkBallObstacles(_arg1:CBall):void{
var _local2:Array;
var _local3:Array;
var _local4:Array;
var _local5:CPlatform;
var _local6:Boolean;
var _local7:int;
var _local8:Point;
var _local9:Number;
var _local10:int;
_local3 = new Array();
_local4 = new Array();
for each (_local5 in iPlatforms.prItems) {
_local3.push(_local5.prX);
_local4.push(_local5.iVelocity);
};
_local6 = false;
while (_arg1.iV.length > 0) {
_local2 = getNearestIntersectionPoint(_arg1);
if (_local2){
_local8 = new Point((_arg1.prX - _local2[0].x), (_arg1.prY - _local2[0].y));
_arg1.Pos(_local2[0].x, _local2[0].y);
if ((_local2[4] is CPlatform)){
_local6 = true;
_local9 = _local2[4].iVelocity;
_arg1.iV.x = (_arg1.iV.x - _local9);
reflectBall(_arg1, _local2[2], _local2[1], _local2[3]);
_local2[4].Move((_local2[4].iVelocity * _local2[5]), 0);
_local2[4].iVelocity = (_local2[4].iVelocity - (_local2[4].iVelocity * _local2[5]));
iCurScoreK = 1;
_arg1.iV.x = (_arg1.iV.x + _local9);
iDemoWriter.addSeparator();
OSound.PlaySoundInd(0);
} else {
if (!(_local2[4] as CObstacle).iInvisible){
if (_arg1.fireBall){
_local10 = 0;
while (_local10 <= (_local2[4] as CObstacle).iStrength) {
iDemoWriter.addMove((_local2[4] as CObstacle).iID);
iScore = (iScore + (Hitz2L.iHitObstacleScore * iCurScoreK));
if (iCurScoreK < 2){
iCurScoreK = (iCurScoreK + 0.1);
} else {
if (iCurScoreK < 3){
iCurScoreK = (iCurScoreK + 0.05);
} else {
if (iCurScoreK < 4){
iCurScoreK = (iCurScoreK + 0.02);
};
};
};
_local10++;
};
} else {
if (!(_local2[4] as CObstacle).prUnbeatable){
iDemoWriter.addMove((_local2[4] as CObstacle).iID);
iScore = (iScore + (Hitz2L.iHitObstacleScore * iCurScoreK));
if (iCurScoreK < 2){
iCurScoreK = (iCurScoreK + 0.1);
} else {
if (iCurScoreK < 3){
iCurScoreK = (iCurScoreK + 0.05);
} else {
if (iCurScoreK < 4){
iCurScoreK = (iCurScoreK + 0.02);
};
};
};
OSound.PlaySoundInd(((_local2[4] as CObstacle).iMatherial + 1));
} else {
OSound.PlaySoundInd(5);
};
};
} else {
if ((_local2[4] as CObstacle).iInvisible){
OSound.PlaySoundInd(0);
};
};
if (((iObstacles.decreaseObstacle(_local2[4])) || (((_arg1.fireBall) && (!((_local2[4] as CObstacle).iInvisible)))))){
OSound.PlaySoundInd((5 + (_local2[4] as CObstacle).iMatherial));
breakObstacle(_local2[4]);
};
reflectBall(_arg1, _local2[2], _local2[1], _local2[3]);
_arg1.iV.normalize((_arg1.iV.length - _local8.length));
};
} else {
_arg1.Move(_arg1.iV.x, _arg1.iV.y);
if (((!(_local6)) && ((_arg1.iV.length < _arg1.iScalarVelocity)))){
_arg1.iV.normalize(_arg1.iScalarVelocity);
};
break;
};
};
_local7 = 0;
while (_local7 < iPlatforms.prItems.length) {
iPlatforms.prItems[_local7].prX = _local3[_local7];
iPlatforms.prItems[_local7].iVelocity = _local4[_local7];
_local7++;
};
iGameConnector.prScore = iScore;
}
private function reflectBall(_arg1:CBall, _arg2:Point, _arg3:Point, _arg4:Boolean):void{
var _local5:Number;
var _local6:Number;
var _local7:Point;
var _local8:Point;
_local5 = ((_arg2.x * _arg1.iV.x) + (_arg2.y * _arg1.iV.y));
if ((((_local5 > 0)) || (_arg4))){
_local6 = ((_arg3.x * _arg1.iV.x) + (_arg3.y * _arg1.iV.y));
_local7 = new Point(_arg2.x, _arg2.y);
new Point(_arg2.x, _arg2.y).x = (_local7.x * _local5);
_local7.y = (_local7.y * _local5);
if (((_arg1.iV.y * _arg2.x) - (_arg1.iV.x * _arg2.y)) > 0){
_arg1.iW = (_arg1.iW + ((Math.PI / _arg1.iSize) * _local7.length));
} else {
_arg1.iW = (_arg1.iW - ((Math.PI / _arg1.iSize) * _local7.length));
};
if (Math.abs(_arg1.iW) > 1){
_arg1.iW = ((_arg1.iW / Math.abs(_arg1.iW)) * 5);
};
_local8 = new Point(_arg3.x, _arg3.y);
new Point(_arg3.x, _arg3.y).x = (_local8.x * _local6);
_local8.y = (_local8.y * _local6);
_arg1.iV = _local8.subtract(_local7);
};
}
public function get State():int{
return (iState);
}
override public function Free():void{
this.removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
this.removeEventListener(MouseEvent.CLICK, onMouseClick);
super.Free();
}
public function onTimer():void{
var _local1:Rectangle;
switch (iState){
case CField.stShow:
iSequenceStrategy.process();
if (iSequenceStrategy.State == CBaseSequence.stDone){
State = stNormal;
};
break;
case CField.stNormal:
if (iPause){
break;
};
_local1 = (iPlatforms.prItems[0] as CPlatform).iBoundsRects[0];
_local1.x = (_local1.x + (iPlatforms.prItems[0].prX * OGlobal.Scale));
_local1.y = (_local1.y + (iPlatforms.prItems[0].prY * OGlobal.Scale));
iBonuses.checkCollisions(_local1);
_local1.x = (_local1.x - (iPlatforms.prItems[0].prX * OGlobal.Scale));
_local1.y = (_local1.y - (iPlatforms.prItems[0].prY * OGlobal.Scale));
processBalls();
processPlatforms();
iObstaclePieces.onTimer();
if (iBonuses){
iBonuses.onTimer();
};
if (iParticles){
iParticles.onTimer();
};
iBonusesManager.onTimer();
if (checkCompleteLevel()){
OSound.PlaySoundInd(Hitz2L.OSSmileInd);
State = stCompletingLevel;
};
break;
case CField.stWaitingNextBall:
if (iTimer-- < 0){
if (iLives < 1){
OSound.PlaySoundInd(Hitz2L.OSOopsInd);
State = stCompletingLevel;
break;
};
addNewBall();
State = stNormal;
};
break;
case stCompletingLevel:
if (iParticles){
iParticles.onTimer();
};
iObstaclePieces.onTimer();
iBalls.onTimer();
if (iObstaclePieces.numChildren == 0){
iTimer = 60;
State = stHide;
};
break;
case stHide:
if (iTimer-- > 0){
break;
};
this.alpha = (this.alpha - 0.05);
if (alpha <= 0.05){
State = stCompletedLevel;
};
break;
};
}
private function onMouseRollOut(_arg1:MouseEvent):void{
Mouse.show();
}
public function setPlatformSize(_arg1:int):void{
var _local2:int;
var _local3:int;
_local2 = iPlatforms.prItems[0].iID;
_local3 = 0;
while (_local3 < iObservers.length) {
if ((((iObservers[_local3] is CFieldMouseListener)) && ((iObservers[_local3].iHost == iPlatforms.prItems[0])))){
iObservers.splice(_local3, 1);
break;
};
_local3++;
};
if (iPlatforms){
iObservers.push(new CFieldMouseListener(iPlatforms.setShape(((Math.floor((_local2 / 3)) * 3) + _arg1), iSize), iSize));
reglueBalls(iPlatforms.prItems[0]);
};
}
private function processPlatforms():void{
if (iPlatforms){
iPlatforms.onTimer();
};
}
private function breakObstacle(_arg1:CObstacle):void{
var _local2:Array;
var _local3:Array;
var _local4:int;
if (_arg1.iBonusID >= 0){
iBonuses.addBonus(_arg1.iBonusID, ((_arg1.prX + _arg1.iBoundsRects[0].x) + (_arg1.iBoundsRects[0].width / 2)), ((_arg1.prY + _arg1.iBoundsRects[0].y) + (_arg1.iBoundsRects[0].height / 2)));
};
_local2 = _arg1.getPieces();
_local3 = new Array();
_local4 = 0;
while (_local4 < _local2.length) {
_local3.push(new CObstaclePiece(_local2[_local4]));
_local4++;
};
iObstaclePieces.addPieces(_local3, _arg1.prX, _arg1.prY, _arg1.iBoundsRects[0]);
iObstacles.removeObstacle(_arg1);
}
private function buildBounds():void{
var _local1:Sprite;
var _local2:OBitmap;
_local1 = new Sprite();
_local1.graphics.lineStyle(7, 0);
_local1.graphics.moveTo(-4, Hitz2L.iPlayerFieldSize);
_local1.graphics.lineTo(-4, -4);
_local1.graphics.lineTo((Hitz2L.iPlayerFieldSize + 10), -3);
_local1.graphics.lineTo((Hitz2L.iPlayerFieldSize + 10), Hitz2L.iPlayerFieldSize);
_local2 = new OBitmap(CGYFilters.ApplyDarkMetal(_local1, 1, 0, 0, Hitz2L.iDarkMetalColors[0]));
this.addChild(_local2);
}
public function set State(_arg1:int):void{
iState = _arg1;
switch (iState){
case CField.stShow:
iSequenceStrategy.start();
break;
case CField.stNormal:
iGameConnector.notifyStartPlay();
notifyObservers((this.mouseX / OGlobal.Scale));
processBalls();
processPlatforms();
processBalls();
if (((((iPlatforms) && (iPlatforms.prItems))) && (iPlatforms.prItems[0]))){
iPlatforms.prItems[0].prVisible = true;
};
if (((((iBalls) && (iBalls.prItems))) && (iBalls.prItems[0]))){
iBalls.prItems[0].visible = true;
};
OSound.PlaySoundInd(Hitz2L.OSBallAppearInd);
break;
case CField.stWaitingNextBall:
iTimer = 10;
iBonusesManager.removeBonusesEffects();
break;
case CField.stCompletingLevel:
if (checkCompleteLevel()){
iGameConnector.notifyCompleted();
};
break;
case CField.stCompletedLevel:
iGameConnector.prDemo = iDemoWriter.getDemo();
if (checkCompleteLevel()){
iGameConnector.notifyWin(iScore);
} else {
iGameConnector.notifyLose(iScore);
};
break;
};
}
public function connect(_arg1:IFieldObserver):void{
iGameConnector = _arg1;
iGameConnector.prScore = iScore;
iGameConnector.prLives = iLives;
}
public function onMouseMove(_arg1:MouseEvent):void{
notifyObservers((_arg1.localX / OGlobal.Scale));
}
private function getTrajectoryRect(_arg1:CBall, _arg2:CObstacle):Rectangle{
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
_local3 = Math.min((_arg1.prX - _arg2.x), ((_arg1.prX + _arg1.iV.x) - _arg2.x));
_local4 = Math.min((_arg1.prY - _arg2.y), ((_arg1.prY + _arg1.iV.y) - _arg2.y));
_local5 = Math.max((_arg1.prX - _arg2.x), ((_arg1.prX + _arg1.iV.x) - _arg2.x));
_local6 = Math.max((_arg1.prY - _arg2.y), ((_arg1.prY + _arg1.iV.y) - _arg2.y));
return (new Rectangle(_local3, _local4, (_local5 - _local3), (_local6 - _local4)));
}
public function checkBallObstacleCollisions(_arg1:CBall):void{
checkBallObstacles(_arg1);
}
public function addNormalBall():void{
if (iBalls){
iBalls.normalBallApply();
};
}
public function addLowSpeed():void{
if (iBalls){
iBalls.lowSpeedApply();
};
iBonusesManager.pushBonus(Hitz2L.iBonusLowSpeedID, Hitz2L.iBonusLowSpeedTime);
}
private function onMouseRollOver(_arg1:MouseEvent):void{
Mouse.hide();
}
private function notifyObservers(_arg1:Number):void{
var _local2:int;
_local2 = 0;
while (_local2 < iObservers.length) {
(iObservers[_local2] as IMouseListenerObserver).notifyMouseMoved(_arg1);
_local2++;
};
}
public function addMultiball():void{
if (iBalls){
if (iBalls.prItems.length >= 4){
addLife();
} else {
iBalls.multiballApply();
};
};
}
public function onMouseClick(_arg1:MouseEvent):void{
var _local2:CBall;
var _local3:Point;
switch (State){
case CField.stNormal:
for each (_local2 in iBalls.prItems) {
if (_local2.isGlued()){
_local2.unglue();
_local3 = new Point((iPlatforms.prItems[0] as CPlatform).iVelocity, -10);
_local3.normalize(iBalls.iBallsCurrentSpeed);
_local2.setVelocity(_local3);
_local2.iW = (iPlatforms.prItems[0] as CPlatform).iVelocity;
OSound.PlaySoundInd(0);
};
};
break;
};
}
public function addLife():void{
if (iLives == 6){
return;
};
iLives++;
iGameConnector.prLives = iLives;
}
public function addBigBall():void{
if (iBalls){
iBalls.bigBallApply();
};
}
private function getNearestIntersectionPoint(_arg1:CBall):Array{
var _local2:Array;
var _local3:Array;
var _local4:CObstacle;
var _local5:Number;
var _local6:CPlatform;
var _local7:Number;
for each (_local4 in iObstacles.iObstacles) {
_local3 = getBallObstacleCollision(_arg1, _local4);
if (((!(_local3)) || (!(_local3[0])))){
} else {
if (!_local2){
_local2 = _local3;
} else {
if (CGeom.getNearerPointOnLineP(_arg1.prX, _arg1.prY, _local3[0], _local2[0]) == _local3[0]){
_local2 = _local3;
};
};
};
};
_local5 = (_local2) ? (Math.pow((_arg1.prX - _local2[0].x), 2) + Math.pow((_arg1.prY - _local2[0].y), 2)) : Number.MAX_VALUE;
for each (_local6 in iPlatforms.prItems) {
_local3 = getBallPlatformCollision(_arg1, _local6);
if (((!(_local3)) || (!(_local3[0])))){
} else {
if (!_local2){
_local2 = _local3;
} else {
_local7 = (Math.pow((_arg1.prX - _local3[0].x), 2) + Math.pow((_arg1.prY - _local3[0].y), 2));
if (_local7 < _local5){
_local2 = _local3;
};
};
};
};
return (_local2);
}
private function processBalls():void{
var _local1:CBall;
tryChangeBallsSize();
iBalls.onTimer();
for each (_local1 in iBalls.prItems) {
_local1.onTimer();
if (!iFieldBounds.contains(_local1.prX, _local1.prY)){
iBalls.removeBall(_local1);
if (iBalls.prItems.length == 0){
this.State = stWaitingNextBall;
};
};
if (_local1.State == CBall.stNormal){
checkBallObstacleCollisions(_local1);
};
};
}
public function splashMainPlatform():void{
iPlatforms.prItems[0].splash();
}
private function tryChangeBallsSize():void{
var _local1:CBall;
var _local2:Boolean;
var _local3:CObstacle;
var _local4:CPlatform;
if (((iBalls) && (iBalls.prChangingItems))){
for each (_local1 in iBalls.prChangingItems) {
_local2 = true;
for each (_local3 in iObstacles.iObstacles) {
if ((_local3.iBoundsRects[iBalls.iNewSizeInd] as Rectangle).contains((_local1.prX - _local3.prX), (_local1.prY - _local3.prY))){
_local2 = false;
break;
};
};
if (_local2){
for each (_local4 in iPlatforms.prItems) {
if ((_local4.iBoundsRects[iBalls.iNewSizeInd] as Rectangle).contains((_local1.prX - _local4.prX), (_local1.prY - _local4.prY))){
_local2 = false;
break;
};
};
};
if (_local2){
iBalls.setBallSize(_local1);
};
};
};
}
private function getBallObstacleCollision(_arg1:CBall, _arg2:CObstacle):Array{
var _local3:Array;
if (!getTrajectoryRect(_arg1, _arg2).intersects(_arg2.iBoundsRects[_arg1.prSizeInd])){
return (null);
};
_local3 = CGeom.getSegmentByTwoPoints(new Point((_arg1.prX - _arg2.x), (_arg1.prY - _arg2.y)), new Point(((_arg1.prX + _arg1.iV.x) - _arg2.x), ((_arg1.prY + _arg1.iV.y) - _arg2.y)));
return (_arg2.checkTrajectoryHitTest(_local3, _arg1));
}
public function removeBonusEffect(_arg1:int):void{
switch (_arg1){
case Hitz2L.iBonusUltraSpeedID:
case Hitz2L.iBonusHighSpeedID:
case Hitz2L.iBonusLowSpeedID:
this.addNormalSpeed();
break;
};
}
public function addUltraSpeed():void{
if (iBalls){
iBalls.ultraSpeedApply();
};
iBonusesManager.pushBonus(Hitz2L.iBonusUltraSpeedID, Hitz2L.iBonusUltraSpeedTime);
}
public function setFireBalls():void{
if (iBalls){
iBalls.fireBallApply();
};
}
private function checkCompleteLevel():Boolean{
var _local1:CObstacle;
for each (_local1 in iObstacles.iObstacles) {
if (((!(_local1.prUnbeatable)) && (!(_local1.iInvisible)))){
return (false);
};
};
return (true);
}
public function setPlatformShape(_arg1:int):void{
var _local2:int;
var _local3:int;
_local2 = iPlatforms.prItems[0].iID;
_local3 = 0;
while (_local3 < iObservers.length) {
if ((((iObservers[_local3] is CFieldMouseListener)) && ((iObservers[_local3].iHost == iPlatforms.prItems[0])))){
iObservers.splice(_local3, 1);
break;
};
_local3++;
};
if (iPlatforms){
iObservers.push(new CFieldMouseListener(iPlatforms.setShape(((_local2 % 3) + (_arg1 * 3)), iSize), iSize));
reglueBalls(iPlatforms.prItems[0]);
};
}
private function initField():void{
var _local1:BitmapData;
iScale = (iSize / Hitz2L.iBaseSize);
_local1 = new BitmapData((iFieldBounds.width * OGlobal.Scale), (iFieldBounds.height * OGlobal.Scale), true, 0);
iDummyBitmap = new Bitmap(_local1);
this.addChild(iDummyBitmap);
this.addChild(iShadowsLayer);
this.addChild(iParticles);
this.addChild(iObjectsLayer);
this.addChild(iBonuses);
iBonuses.addChild(iDummyBitmap);
iObjectsLayer.addChild(iDummyBitmap);
iParticles.addChild(iDummyBitmap);
iShadowsLayer.addChild(iDummyBitmap);
iBonuses.iField = this;
this.State = stShow;
iLives = Hitz2L.iStartLives;
}
private function addNewBall():void{
var _local1:CPlatform;
var _local2:int;
_local1 = iPlatforms.prItems[0];
_local2 = 1;
iBalls.addBall(_local2, (_local1.prX + (_local1.prWidth / 2)), (_local1.prY - (Hitz2L.iBallSizes[_local2] / 2)));
iBalls.prItems[0].prY = (_local1.prY - (iBalls.prItems[0].iSize / 2));
iBalls.prItems[0].glueTo(_local1);
iBalls.prItems[0].visible = false;
iLives--;
iGameConnector.prLives = iLives;
}
public function pause():void{
this.iPause = true;
}
}
}//package RES.GAME.FIELD
Section 128
//CLivesIndicator (RES.GAME.INDICATORS.CLivesIndicator)
package RES.GAME.INDICATORS {
import ENGINE.DISPLAY.*;
public class CLivesIndicator extends OSprite {
private var iBitmap:OBitmap;
public function CLivesIndicator(_arg1:OBitmap, _arg2:int){
iBitmap = _arg1;
}
public function setQuantity(_arg1:int):void{
var _local2:int;
var _local3:OBitmap;
_local2 = (numChildren - 1);
while (_local2 >= 0) {
this.removeChildAt(_local2);
_local2--;
};
_local2 = 0;
while (_local2 < _arg1) {
_local3 = new OBitmap();
_local3.CopyFrom(iBitmap);
this.addChild(_local3);
_local3.Pos(((_local3.prWidth * 1.5) * ((_local2 + 1) - (_arg1 / 2))), 0);
_local2++;
};
}
}
}//package RES.GAME.INDICATORS
Section 129
//CGameObserver (RES.GAME.OBSERVERS.CGameObserver)
package RES.GAME.OBSERVERS {
import RES.WINDOWS.*;
public class CGameObserver implements IGameObserver {
private var iHost:OWGame;
public function CGameObserver(_arg1:OWGame){
iHost = _arg1;
}
public function notifyCompletedLevel(_arg1:int, _arg2:int):void{
iHost.setCompletedLevel(_arg1, _arg2);
}
public function sendDemo(_arg1:String):void{
iHost.iDemo = _arg1;
}
public function notifyGameStarted():void{
iHost.AddBanner(false);
}
public function notifyExit():void{
iHost.mainMenu();
}
public function notifyFailedLevel(_arg1:int):void{
iHost.setFailedLevel(_arg1);
}
}
}//package RES.GAME.OBSERVERS
Section 130
//CGameTestObserver (RES.GAME.OBSERVERS.CGameTestObserver)
package RES.GAME.OBSERVERS {
import RES.WINDOWS.*;
public class CGameTestObserver implements IGameObserver {
private var iHost:OWGameTest;
public function CGameTestObserver(_arg1:OWGameTest){
iHost = _arg1;
}
public function notifyCompletedLevel(_arg1:int, _arg2:int):void{
iHost.notifyCompletedLevel(_arg1);
}
public function sendDemo(_arg1:String):void{
}
public function notifyGameStarted():void{
iHost.notifyGameStarted();
}
public function notifyExit():void{
}
public function notifyFailedLevel(_arg1:int):void{
iHost.notifyFailedLevel();
}
}
}//package RES.GAME.OBSERVERS
Section 131
//IGameObserver (RES.GAME.OBSERVERS.IGameObserver)
package RES.GAME.OBSERVERS {
public interface IGameObserver {
function notifyCompletedLevel(_arg1:int, _arg2:int):void;
function notifyFailedLevel(_arg1:int):void;
function notifyGameStarted():void;
function notifyExit():void;
function sendDemo(_arg1:String):void;
}
}//package RES.GAME.OBSERVERS
Section 132
//CGeom (RES.GAME.CGeom)
package RES.GAME {
import flash.geom.*;
public class CGeom {
public static function isPointOnLine(_arg1:Point, _arg2:Array):Boolean{
if (Math.abs(_arg2[0]) > Math.abs(_arg2[1])){
return (((Math.abs((_arg1.x + ((_arg2[2] + (_arg2[1] * _arg1.y)) / _arg2[0]))) < 1E-6)) ? true : false);
//unresolved jump
};
return (((Math.abs((_arg1.y + ((_arg2[2] + (_arg2[0] * _arg1.x)) / _arg2[1]))) < 1E-6)) ? true : false);
}
public static function getDistanceFromPointToNormalizedLine(_arg1:Point, _arg2:Array):Number{
return ((((_arg1.x * _arg2[0]) + (_arg1.y * _arg2[1])) + _arg2[2]));
}
public static function getNearerPointOnLine(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):Point{
var _local7:Number;
var _local8:Number;
_local7 = (Math.pow((_arg3 - _arg1), 2) + Math.pow((_arg4 - _arg2), 2));
_local8 = (Math.pow((_arg5 - _arg1), 2) + Math.pow((_arg6 - _arg2), 2));
if (_local7 < _local8){
return (new Point((_arg3 - _arg1), (_arg4 - _arg2)));
};
return (new Point((_arg5 - _arg1), (_arg6 - _arg2)));
}
private static function getSegmentIntersetionOnLine(_arg1:Array, _arg2:Array):Point{
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Array;
var _local10:int;
_local3 = Math.min(_arg1[3].x, _arg1[4].x, _arg2[3].x, _arg2[4].x);
_local4 = Math.min(_arg1[3].y, _arg1[4].y, _arg2[3].y, _arg2[4].y);
_local5 = Math.max(_arg1[3].x, _arg1[4].x, _arg2[3].x, _arg2[4].x);
_local6 = Math.max(_arg1[3].y, _arg1[4].y, _arg2[3].y, _arg2[4].y);
if (((((_arg1[3].equals(_arg2[3])) && (_arg1[4].equals(_arg2[4])))) || (((_arg1[3].equals(_arg2[4])) && (_arg1[4].equals(_arg2[3])))))){
return (new Point(((_local5 - _local3) / 2), ((_local6 - _local4) / 2)));
};
_local7 = (_local5 - _local3);
_local8 = (_local6 - _local4);
_local9 = [_arg1[3], _arg1[4], _arg2[3], _arg2[4]];
if (_local7 > _local8){
_local10 = 0;
for (;_local10 < _local9.length;_local10++) {
if (_local9.length == 2){
break;
};
if (Math.abs((_local9[_local10].x - _local3)) < 1E-5){
_local9.splice(_local10, 1);
_local10--;
} else {
if (Math.abs((_local9[_local10].x - _local5)) < 1E-5){
_local9.splice(_local10, 1);
_local10--;
continue;
};
};
};
return (new Point(((_local9[0].x / 2) + (_local9[1].x / 2)), ((_local9[0].y / 2) + (_local9[1].y / 2))));
//unresolved jump
};
_local10 = 0;
for (;_local10 < _local9.length;_local10++) {
if (_local9.length == 2){
break;
};
if (Math.abs((_local9[_local10].y - _local4)) < 1E-5){
_local9.splice(_local10, 1);
_local10--;
} else {
if (Math.abs((_local9[_local10].y - _local6)) < 1E-5){
_local9.splice(_local10, 1);
_local10--;
continue;
};
};
};
return (new Point(((_local9[0].x / 2) + (_local9[1].x / 2)), ((_local9[0].y / 2) + (_local9[1].y / 2))));
}
public static function isPointInSegment(_arg1:Array, _arg2:Point):Boolean{
if (((((((((Math.min(_arg1[3].x, _arg1[4].x) - _arg2.x) < 1E-7)) && (((_arg2.x - Math.max(_arg1[3].x, _arg1[4].x)) < 1E-7)))) && (((Math.min(_arg1[3].y, _arg1[4].y) - _arg2.y) < 1E-7)))) && (((_arg2.y - Math.max(_arg1[3].y, _arg1[4].y)) < 1E-7)))){
return (true);
};
return (false);
}
public static function breakPolygon(_arg1:Array):Array{
return (CPolygonBreaker.breakPolygon(_arg1));
}
public static function getBorderXPairPoints(_arg1:Array, _arg2:Boolean):Array{
var _local3:Array;
var _local4:int;
var _local5:Point;
var _local6:int;
var _local7:int;
_local3 = new Array();
_local4 = 0;
while (_local4 < _arg1.length) {
_local3.push(_arg1[_local4]);
_local4++;
};
_local6 = 0;
while (_local6 < 2) {
_local5 = CGeom.getBorderXPoint(_local3, !(_arg2));
_local7 = 0;
while (_local7 < _local3.length) {
if (_arg1[_local7] == _local5){
_local3.splice(_local7, 1);
break;
};
_local7++;
};
_local6++;
};
return (_local3);
}
public static function SegmentCircleIntersection(_arg1:Array, _arg2:Point, _arg3:Number):Array{
var _local4:Array;
var _local5:Array;
var _local6:int;
_local4 = LineCircleIntersection(_arg1, _arg2, _arg3);
if (_local4 == null){
return (null);
};
_local5 = new Array();
_local6 = 0;
while (_local6 < _local4.length) {
if (isPointInSegment(_arg1, _local4[_local6])){
_local5.push(_local4[_local6]);
};
_local6++;
};
if (_local5.length == 0){
return (null);
};
return (_local5);
}
public static function LineCircleIntersection(_arg1:Array, _arg2:Point, _arg3:Number):Array{
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:Point;
var _local13:Number;
var _local14:Number;
var _local15:Number;
_local4 = _arg1[0];
_local5 = _arg1[1];
_local6 = _arg1[2];
_local8 = ((_local5 * _local5) + (_local4 * _local4));
if (Math.abs(_local4) > Math.abs(_local5)){
_local7 = (_arg1[2] + (_arg2.x * _local4));
_local9 = (((2 * _local5) * _local7) - (((2 * _arg2.y) * _local4) * _local4));
_local10 = (((_local7 * _local7) - (((_arg3 * _arg3) * _local4) * _local4)) + (((_arg2.y * _arg2.y) * _local4) * _local4));
_local11 = ((_local9 * _local9) - ((4 * _local8) * _local10));
if (Math.abs(_local11) < 0.01){
_local15 = (-(_local9) / (2 * _local8));
_local14 = (-(((_local5 * _local15) + _local6)) / _local4);
return ([new Point(_local14, _local15)]);
};
if (_local11 > 0.01){
_local13 = Math.sqrt(_local11);
_local15 = ((-(_local9) + _local13) / (2 * _local8));
_local14 = (-(((_local5 * _local15) + _local6)) / _local4);
_local12 = new Point(_local14, _local15);
_local15 = ((-(_local9) - _local13) / (2 * _local8));
_local14 = (-(((_local5 * _local15) + _local6)) / _local4);
return ([_local12, new Point(_local14, _local15)]);
};
return (null);
//unresolved jump
};
_local7 = (_local6 + (_arg2.y * _local5));
_local9 = (((2 * _local4) * _local7) - (((2 * _arg2.x) * _local5) * _local5));
_local10 = (((_local7 * _local7) - (((_arg3 * _arg3) * _local5) * _local5)) + (((_arg2.x * _arg2.x) * _local5) * _local5));
_local11 = ((_local9 * _local9) - ((4 * _local8) * _local10));
if (Math.abs(_local11) < 0.01){
_local14 = (-(_local9) / (2 * _local8));
_local15 = (-(((_local4 * _local14) + _local6)) / _local5);
return ([new Point(_local14, _local15)]);
};
if (_local11 > 0.01){
_local13 = Math.sqrt(_local11);
_local14 = ((-(_local9) + _local13) / (2 * _local8));
_local15 = (-(((_local4 * _local14) + _local6)) / _local5);
_local12 = new Point(_local14, _local15);
_local14 = ((-(_local9) - _local13) / (2 * _local8));
_local15 = (-(((_local4 * _local14) + _local6)) / _local5);
return ([_local12, new Point(_local14, _local15)]);
};
return (null);
}
public static function getLineByTwoPoints(_arg1:Point, _arg2:Point):Array{
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
if (Math.abs((_arg2.y - _arg1.y)) < Math.abs((_arg2.x - _arg1.x))){
_local3 = ((_arg2.y - _arg1.y) / (_arg2.x - _arg1.x));
_local4 = -1;
_local5 = (_arg1.y - (_local3 * _arg1.x));
} else {
_local3 = -1;
_local4 = ((_arg2.x - _arg1.x) / (_arg2.y - _arg1.y));
_local5 = (_arg1.x - (_local4 * _arg1.y));
};
_local6 = Math.sqrt(((_local3 * _local3) + (_local4 * _local4)));
_local3 = (_local3 / _local6);
_local4 = (_local4 / _local6);
_local5 = (_local5 / _local6);
return ([_local3, _local4, _local5]);
}
public static function isPointInPolygon(_arg1:Array, _arg2:Point):Boolean{
var _local3:int;
var _local4:int;
var _local5:Number;
var _local6:Array;
var _local7:Array;
var _local8:Point;
_local3 = 0;
_local5 = Number.MIN_VALUE;
_local4 = 0;
while (_local4 < _arg1.length) {
if (_arg1[_local4].x < _local5){
_local5 = _arg1[_local4].x;
};
_local4++;
};
_local6 = CGeom.getSegmentByTwoPoints(new Point((_local5 - 1), _arg2.y), _arg2);
_local4 = 0;
while (_local4 < (_arg1.length - 1)) {
_local7 = CGeom.getSegmentByTwoPoints(_arg1[_local4], _arg1[(_local4 + 1)]);
if (CGeom.isPointOnSegment(_arg2, _local7)){
return (false);
};
if (_local7[0] == 0){
} else {
_local8 = CGeom.getSegmentsIntersectionPoint(_local6, _local7);
if (_local8){
if ((((Math.abs((_local8.x - _arg2.x)) < 1E-5)) && ((Math.abs((_local8.y - _arg2.y)) < 1E-5)))){
return (false);
};
if ((((Math.abs((_local8.x - _arg1[_local4].x)) < 1E-5)) && ((Math.abs((_local8.y - _arg1[_local4].y)) < 1E-5)))){
if (_arg1[_local4].y <= _arg1[(_local4 + 1)].y){
_local3++;
};
} else {
if ((((Math.abs((_local8.x - _arg1[(_local4 + 1)].x)) < 1E-5)) && ((Math.abs((_local8.y - _arg1[(_local4 + 1)].y)) < 1E-5)))){
if (_arg1[_local4].y >= _arg1[(_local4 + 1)].y){
_local3++;
};
} else {
_local3++;
};
};
};
};
_local4++;
};
return ((((_local3 % 2) == 0)) ? false : true);
}
public static function convertPolygonToClockWise(_arg1:Array):Array{
var _local2:int;
var _local3:int;
var _local4:int;
var _local5:int;
var _local6:Point;
var _local7:Point;
var _local8:Number;
var _local9:Point;
if (_arg1[0].equals(_arg1[(_arg1.length - 1)])){
_local9 = _arg1.pop();
};
_local2 = 0;
_local3 = 1;
while (_local3 < _arg1.length) {
if (_arg1[_local3].y > _arg1[_local2].y){
_local2 = _local3;
};
_local3++;
};
_local4 = ((_local2 == 0)) ? (_arg1.length - 1) : (_local2 - 1);
_local5 = ((_local2 == (_arg1.length - 1))) ? 0 : (_local2 + 1);
_local6 = new Point((_arg1[_local4].x - _arg1[_local2].x), (_arg1[_local4].y - _arg1[_local2].y));
_local7 = new Point((_arg1[_local5].x - _arg1[_local2].x), (_arg1[_local5].y - _arg1[_local2].y));
_local8 = ((_local6.x * _local7.y) - (_local6.y * _local7.x));
if (_local9){
_arg1.push(_local9);
};
if (_local8 < 0){
return (_arg1);
};
return (_arg1.reverse());
}
public static function getSegmentsIntersectionPoint(_arg1:Array, _arg2:Array):Point{
var _local3:Point;
var _local4:Point;
var _local5:Point;
if ((((((Math.abs(_arg1[0]) > 1E-5)) && ((Math.abs(_arg2[0]) > 1E-5)))) && ((Math.abs((_arg1[0] - _arg2[0])) < 0.0001)))){
if (Math.abs(((_arg1[1] / _arg1[0]) - (_arg2[1] / _arg2[0]))) < 0.0001){
if (Math.abs(((_arg2[2] / _arg2[0]) - (_arg1[2] / _arg1[0]))) < 0.01){
_local4 = CGeom.getSegmentIntersetionOnLine(_arg1, _arg2);
return ((CGeom.isPointInSegment(_arg1, _local4)) ? _local4 : null);
} else {
return (null);
};
};
} else {
if ((((((Math.abs(_arg1[1]) > 1E-5)) && ((Math.abs(_arg2[1]) > 1E-5)))) && ((Math.abs((_arg1[1] - _arg2[1])) < 0.0001)))){
if (Math.abs(((_arg1[0] / _arg1[1]) - (_arg2[0] / _arg2[1]))) < 0.0001){
if (Math.abs(((_arg2[2] / _arg2[1]) - (_arg1[2] / _arg1[1]))) < 0.01){
_local5 = CGeom.getSegmentIntersetionOnLine(_arg1, _arg2);
return ((CGeom.isPointInSegment(_arg1, _local5)) ? _local5 : null);
} else {
return (null);
};
};
};
};
_local3 = getLinesIntersectionPoint(_arg1, _arg2);
if (((CGeom.isPointInSegment(_arg1, _local3)) && (CGeom.isPointInSegment(_arg2, _local3)))){
return (_local3);
};
return (null);
}
public static function isPointDownOfLine(_arg1:Array, _arg2:Point):Boolean{
var _local3:Array;
_local3 = CGeom.getLineByTwoPoints(_arg1[0], _arg1[1]);
trace((-(((_local3[0] * _arg2.x) + _local3[2])) / _local3[1]));
if (_arg2.y < (-(((_local3[0] * _arg2.x) + _local3[2])) / _local3[1])){
return (true);
};
return (false);
}
private static function getBorderYPairPoints(_arg1:Array, _arg2:Boolean):Array{
var _local3:Array;
var _local4:int;
var _local5:Point;
var _local6:int;
var _local7:int;
_local3 = new Array();
_local4 = 0;
while (_local4 < _arg1.length) {
_local3.push(_arg1[_local4]);
_local4++;
};
_local6 = 0;
while (_local6 < 2) {
_local5 = CGeom.getBorderYPoint(_local3, !(_arg2));
_local7 = 0;
while (_local7 < _local3.length) {
if (_arg1[_local7] == _local5){
_local3.splice(_local7, 1);
break;
};
_local7++;
};
_local6++;
};
return (_local3);
}
public static function isPointOnSegment(_arg1:Point, _arg2:Array):Boolean{
if (!isPointInSegment(_arg2, _arg1)){
return (false);
};
return (isPointOnLine(_arg1, _arg2));
}
public static function isPointLeftOfLine(_arg1:Array, _arg2:Point):Boolean{
var _local3:Array;
_local3 = CGeom.getLineByTwoPoints(_arg1[0], _arg1[1]);
trace((-(((_local3[1] * _arg2.y) + _local3[2])) / _local3[0]));
if (_arg2.x < (-(((_local3[1] * _arg2.y) + _local3[2])) / _local3[0])){
return (true);
};
return (false);
}
public static function getBorderYPoint(_arg1:Array, _arg2:Boolean):Point{
var _local3:Point;
var _local4:int;
_local3 = _arg1[0];
_local4 = 1;
while (_local4 < _arg1.length) {
if (((((_arg2) && ((_local3.y < _arg1[_local4].y)))) || (((!(_arg2)) && ((_local3.y > _arg1[_local4].y)))))){
_local3 = _arg1[_local4];
};
_local4++;
};
return (_local3);
}
public static function getBorderXPoint(_arg1:Array, _arg2:Boolean):Point{
var _local3:Point;
var _local4:int;
_local3 = _arg1[0];
_local4 = 1;
while (_local4 < _arg1.length) {
if (((((_arg2) && ((_local3.x < _arg1[_local4].x)))) || (((!(_arg2)) && ((_local3.x > _arg1[_local4].x)))))){
_local3 = _arg1[_local4];
};
_local4++;
};
return (_local3);
}
public static function getSegmentByTwoPoints(_arg1:Point, _arg2:Point):Array{
var _local3:Array;
_local3 = getLineByTwoPoints(_arg1, _arg2);
_local3.push(_arg1, _arg2);
return (_local3);
}
public static function getNearerPointOnLineP(_arg1:Number, _arg2:Number, _arg3:Point, _arg4:Point):Point{
var _local5:Number;
var _local6:Number;
if (_arg3 == null){
return (_arg4);
};
if (_arg4 == null){
return (_arg3);
};
_local5 = (Math.pow((_arg3.x - _arg1), 2) + Math.pow((_arg3.y - _arg2), 2));
_local6 = (Math.pow((_arg4.x - _arg1), 2) + Math.pow((_arg4.y - _arg2), 2));
if (_local5 < _local6){
return (_arg3);
};
return (_arg4);
}
public static function getNormalsListForClockWisePolygon(_arg1:Array):Array{
var _local2:Array;
var _local3:int;
_local2 = new Array();
_local3 = 2;
while (_local3 < _arg1.length) {
_local2.push(new Point((_arg1[(_local3 - 1)] - _arg1[(_local3 + 1)]), (_arg1[_local3] - _arg1[(_local3 - 2)])));
(_local2[((_local3 - 2) / 2)] as Point).normalize(1);
_local3 = (_local3 + 2);
};
return (_local2);
}
public static function getLinesIntersectionPoint(_arg1:Array, _arg2:Array):Point{
var _local3:Number;
var _local4:Number;
if (Math.abs(_arg1[0]) < 0.05){
_local3 = ((_arg1[2] - ((_arg1[0] * _arg2[2]) / _arg2[0])) / (((_arg1[0] * _arg2[1]) / _arg2[0]) - _arg1[1]));
_local4 = (-((_arg2[2] + (_arg2[1] * _local3))) / _arg2[0]);
} else {
_local3 = ((_arg2[2] - ((_arg2[0] * _arg1[2]) / _arg1[0])) / (((_arg2[0] * _arg1[1]) / _arg1[0]) - _arg2[1]));
_local4 = (-((_arg1[2] + (_arg1[1] * _local3))) / _arg1[0]);
};
return (new Point(_local4, _local3));
}
public static function arePointsInOneHalfPlane(_arg1:Array, _arg2:Point, _arg3:Point):Boolean{
if (Math.abs((_arg1[0].x - _arg1[1].x)) > Math.abs((_arg1[0].y - _arg1[1].y))){
if (CGeom.isPointLeftOfLine(_arg1, _arg2) == CGeom.isPointLeftOfLine(_arg1, _arg3)){
return (true);
};
return (false);
//unresolved jump
};
if (CGeom.isPointDownOfLine(_arg1, _arg2) == CGeom.isPointDownOfLine(_arg1, _arg3)){
return (true);
};
return (false);
}
}
}//package RES.GAME
Section 133
//CGraphicsHolder (RES.GAME.CGraphicsHolder)
package RES.GAME {
import ENGINE.DISPLAY.*;
import flash.display.*;
import flash.geom.*;
import ENGINE.DISPLAY.EFFECTS.*;
import ENGINE.CORE.*;
import FILTERS.*;
public class CGraphicsHolder {
public var iPolygons:Array;
public var iParticles:Array;
public var iPlatformsInfo:Array;
public var iPolygonsInfo:Array;
public var iFireBalls:Array;
public var iPlatformsShadows:Array;
private var iScale:Number;
public var iBonuses:Array;
public var iFireBallTails:Array;
public var iPolygonsPieces:Array;
public var iBalls:Array;
public var iPolygonsShadows:Array;
public var iPlatformsIntersectionInfo:Array;
public var iPlatforms:Array;
public var iPolygonsIntersectionInfo:Array;
public var iBallTails:Array;
public function CGraphicsHolder(_arg1:Number){
iScale = _arg1;
}
private function createFireBallBitmap():OBitmap{
var _local1:Sprite;
var _local2:Sprite;
var _local3:OBitmap;
var _local4:OBitmap;
var _local5:Sprite;
_local1 = new ((Hitz2L.fireBallBonus as Class));
_local2 = new ((Hitz2L.bonusBorder as Class));
_local3 = new OBitmap(OEffects.Apply(_local2, (40 / _local2.width), "GEL", "yellow", "obstacle", 0.5, (-(_local2.width) / 2), (-(_local2.height) / 2)));
_local4 = new OBitmap(OEffects.Apply(_local1, (35 / _local1.width), "GEL", Hitz2L.iBonusesColors[Hitz2L.iBonusFireBallID], "obstacle", 0.5, 0, 0));
_local5 = new Sprite();
_local5.addChild(_local3);
_local5.addChild(_local4);
return (OBitmap.MakeTmp(_local5, (1 / OGlobal.Scale), 0, 0, 0));
}
private function createShape(_arg1:Array):Sprite{
var _local2:Sprite;
var _local3:int;
var _local4:int;
_local2 = new Sprite();
_local2.graphics.beginFill(0);
_local2.graphics.moveTo(_arg1[0], _arg1[1]);
_local3 = 2;
while (_local3 < _arg1.length) {
_local2.graphics.lineTo(_arg1[_local3], _arg1[(_local3 + 1)]);
if ((((_arg1[_local3] == _arg1[0])) && ((_arg1[(_local3 + 1)] == _arg1[1])))){
break;
};
_local3 = (_local3 + 2);
};
_local2.graphics.endFill();
_local4 = (_local3 + 2);
while (_local4 < _arg1.length) {
_local2.graphics.beginFill(0);
_local2.graphics.drawCircle(_arg1[_local4], _arg1[(_local4 + 1)], _arg1[(_local4 + 2)]);
_local2.graphics.endFill();
_local4 = (_local4 + 3);
};
return (_local2);
}
private function createBigPlatformBitmap():OBitmap{
var _local1:Sprite;
var _local2:Sprite;
var _local3:OBitmap;
var _local4:OBitmap;
var _local5:Sprite;
_local1 = new ((Hitz2L.bigPlatform as Class));
_local2 = new ((Hitz2L.bonusBorder as Class));
_local3 = new OBitmap(OEffects.Apply(_local2, (40 / _local2.width), "GEL", "green", "obstacle", 0.5, (-(_local2.width) / 2), (-(_local2.height) / 2)));
_local4 = new OBitmap(OEffects.Apply(_local1, (35 / _local1.width), "GEL", Hitz2L.iBonusesColors[Hitz2L.iBonusBigPlatformID], "obstacle", 0.5, 0, 0));
_local5 = new Sprite();
_local5.addChild(_local3);
_local5.addChild(_local4);
return (OBitmap.MakeTmp(_local5, (1 / OGlobal.Scale), 0, 0, 0));
}
public function createTails(_arg1:Array):void{
var _local2:int;
var _local3:Number;
var _local4:Array;
var _local5:Number;
var _local6:int;
var _local7:Sprite;
var _local8:Matrix;
iBallTails = new Array();
_local2 = 12;
for each (_local3 in _arg1) {
_local4 = new Array();
iBallTails.push(_local4);
_local5 = (_local3 / (_local2 + 1));
_local6 = 0;
while (_local6 < _local2) {
_local7 = new Sprite();
_local8 = new Matrix();
_local8.createGradientBox((2 * (_local3 - (_local5 * _local6))), (2 * (_local3 - (_local5 * _local6))), 0, ((_local5 * _local6) - _local3), ((_local5 * _local6) - _local3));
_local7.graphics.beginGradientFill(GradientType.RADIAL, [0xFFFF, 0xFFFF], [1, 0], [0, 0xFF], _local8);
_local7.graphics.drawCircle(0, 0, (_local3 - (_local5 * _local6)));
_local7.graphics.endFill();
_local4.push(OBitmap.MakeTmp(_local7, 1, 0, 0, 0));
_local6++;
};
};
for each (_local3 in _arg1) {
_local4 = new Array();
iBallTails.push(_local4);
_local5 = (_local3 / (_local2 + 1));
_local6 = 0;
while (_local6 < _local2) {
_local7 = new Sprite();
_local8 = new Matrix();
_local8.createGradientBox((2 * (_local3 - (_local5 * _local6))), (2 * (_local3 - (_local5 * _local6))), 0, ((_local5 * _local6) - _local3), ((_local5 * _local6) - _local3));
_local7.graphics.beginGradientFill(GradientType.RADIAL, [0xFFFF00, 16737843], [1, 0], [0, 0xFF], _local8);
_local7.graphics.drawCircle(0, 0, (_local3 - (_local5 * _local6)));
_local7.graphics.endFill();
_local4.push(OBitmap.MakeTmp(_local7, 1, 0, 0, 0));
_local6++;
};
};
}
private function scalePolygon(_arg1:Array, _arg2:Number):void{
var _local3:int;
var _local4:int;
_local3 = 0;
while (_local3 < _arg1.length) {
_arg1[_local3] = (_arg1[_local3] * _arg2);
if ((((((_local3 > 0)) && ((_arg1[_local3] == _arg1[0])))) && ((_arg1[(_local3 + 1)] == _arg1[1])))){
break;
};
_local3 = (_local3 + 2);
};
_local4 = (_local3 + 2);
while (_local4 < _arg1.length) {
_arg1[_local4] = (_arg1[_local4] * _arg2);
_local4 = (_local4 + 3);
};
}
public function createNoBonusBitmap():OBitmap{
var _local1:Sprite;
var _local2:Sprite;
var _local3:OBitmap;
var _local4:OBitmap;
var _local5:Sprite;
_local1 = new ((Hitz2L.NoBonus as Class));
_local2 = new ((Hitz2L.bonusBorder as Class));
_local3 = new OBitmap(OEffects.Apply(_local2, (40 / _local2.width), "GEL", "red", "obstacle", 0.5, (-(_local2.width) / 2), (-(_local2.height) / 2)));
_local4 = new OBitmap(OEffects.Apply(_local1, (30 / _local1.width), "GEL", "red", "obstacle", 0.5, (-(_local1.width) / 2), (-(_local1.height) / 2)));
_local5 = new Sprite();
_local5.addChild(_local3);
_local5.addChild(_local4);
return (OBitmap.MakeTmp(_local5, (1 / OGlobal.Scale), 0, 0, 0));
}
private function getPolygonIntersectionInfo(_arg1:Array, _arg2:int):Array{
var _local3:Array;
var _local4:int;
var _local5:int;
var _local6:Point;
_local3 = new Array(4);
_local3[0] = new Array();
_local3[1] = new Array();
_local3[2] = new Array();
_local3[3] = CGeom.getNormalsListForClockWisePolygon(_arg1);
_local4 = 2;
while (_local4 < _arg1.length) {
_local6 = new Point((_arg1[(_local4 + 1)] - _arg1[(_local4 - 1)]), (_arg1[(_local4 - 2)] - _arg1[_local4]));
_local6.normalize(_arg2);
_local3[0].push(CGeom.getSegmentByTwoPoints(new Point((_arg1[(_local4 - 2)] + _local6.x), (_arg1[(_local4 - 1)] + _local6.y)), new Point((_arg1[_local4] + _local6.x), (_arg1[(_local4 + 1)] + _local6.y))));
if ((((((_local4 > 0)) && ((_arg1[_local4] == _arg1[0])))) && ((_arg1[(_local4 + 1)] == _arg1[1])))){
break;
};
_local4 = (_local4 + 2);
};
_local4 = 0;
while (_local4 < _arg1.length) {
_local3[1].push(new Point(_arg1[_local4], _arg1[(_local4 + 1)]));
_local3[2].push(_arg2);
if ((((((_local4 > 0)) && ((_arg1[_local4] == _arg1[0])))) && ((_arg1[(_local4 + 1)] == _arg1[1])))){
break;
};
_local4 = (_local4 + 2);
};
_local5 = (_local4 + 2);
while (_local5 < _arg1.length) {
_local3[1].push(new Point(_arg1[_local5], _arg1[(_local5 + 1)]));
_local3[2].push((_arg1[(_local5 + 2)] + _arg2));
_local5 = (_local5 + 3);
};
return (_local3);
}
public function createPlatform(_arg1:Array, _arg2:int, _arg3:int):Array{
var _local4:Array;
var _local5:Sprite;
_local4 = new Array();
_local5 = createShape(_arg1);
return (createPolygonBitmap(_local5, _arg3, _arg2, 1));
}
private function createHiddenBonusBitmap():OBitmap{
var _local1:Sprite;
var _local2:Sprite;
var _local3:OBitmap;
var _local4:OBitmap;
var _local5:Sprite;
_local1 = new ((Hitz2L.hiddenBonus as Class));
_local2 = new ((Hitz2L.bonusBorder as Class));
_local3 = new OBitmap(OEffects.Apply(_local2, (40 / _local2.width), "GEL", "green", "obstacle", 0.5, (-(_local2.width) / 2), (-(_local2.height) / 2)));
_local4 = new OBitmap(OEffects.Apply(_local1, (30 / _local1.height), "GEL", Hitz2L.iBonusesColors[Hitz2L.iBonusHiddenID], "obstacle", 0.5, (-(_local1.width) / 2), (-(_local1.height) / 2)));
_local5 = new Sprite();
_local5.addChild(_local3);
_local5.addChild(_local4);
return (OBitmap.MakeTmp(_local5, (1 / OGlobal.Scale), 0, 0, 0));
}
public function createParticles():void{
var _local1:Sprite;
var _local2:int;
iParticles = new Array();
_local1 = new ((Hitz2L.particle as Class));
_local2 = 0;
while (_local2 < Hitz2L.iBonusesColors.length) {
iParticles.push(new OBitmap(OEffects.Apply(_local1, 1, "GEL", Hitz2L.iBonusesColors[_local2], "obstacle", 0.3, 0, 0)));
_local2++;
};
}
private function createNormalSpeedBonusBitmap():OBitmap{
var _local1:Sprite;
var _local2:Sprite;
var _local3:OBitmap;
var _local4:OBitmap;
var _local5:Sprite;
_local1 = new ((Hitz2L.normalball as Class));
_local2 = new ((Hitz2L.bonusBorder as Class));
_local3 = new OBitmap(OEffects.Apply(_local2, (40 / _local2.width), "GEL", "green", "obstacle", 0.5, (-(_local2.width) / 2), (-(_local2.height) / 2)));
_local4 = new OBitmap(OEffects.Apply(_local1, (25 / _local1.height), "GEL", Hitz2L.iBonusesColors[Hitz2L.iBonusNormalSpeedID], "obstacle", 0.5, 0, 0));
_local5 = new Sprite();
_local5.addChild(_local3);
_local5.addChild(_local4);
return (OBitmap.MakeTmp(_local5, (1 / OGlobal.Scale), 0, 0, 0));
}
private function createUltraSpeedBonusBitmap():OBitmap{
var _local1:Sprite;
var _local2:Sprite;
var _local3:OBitmap;
var _local4:OBitmap;
var _local5:Sprite;
_local1 = new ((Hitz2L.ultraball as Class));
_local2 = new ((Hitz2L.bonusBorder as Class));
_local3 = new OBitmap(OEffects.Apply(_local2, (40 / _local2.width), "GEL", "red", "obstacle", 0.5, (-(_local2.width) / 2), (-(_local2.height) / 2)));
_local4 = new OBitmap(OEffects.Apply(_local1, (30 / _local1.height), "GEL", Hitz2L.iBonusesColors[Hitz2L.iBonusUltraSpeedID], "obstacle", 0.5, (-(_local1.width) / 2), (-(_local1.height) / 2)));
_local5 = new Sprite();
_local5.addChild(_local3);
_local5.addChild(_local4);
return (OBitmap.MakeTmp(_local5, (1 / OGlobal.Scale), 0, 0, 0));
}
public function createPolygonByInd(_arg1:Array, _arg2:Array, _arg3:Array, _arg4:int):void{
var _local5:Array;
var _local6:int;
if (_arg4 == 0){
iPolygonsInfo = _arg1;
iPolygons = new Array();
iPolygonsShadows = new Array();
iPolygonsPieces = new Array();
iPolygonsIntersectionInfo = new Array();
};
_local5 = createPolygon(iPolygonsInfo[_arg4], _arg4, _arg3);
iPolygons.push(_local5[0]);
iPolygonsShadows.push(_local5[1]);
iPolygonsPieces.push(_local5[2]);
_local6 = 0;
while (_local6 < _arg2.length) {
if (!iPolygonsIntersectionInfo[_local6]){
iPolygonsIntersectionInfo[_local6] = new Array();
};
iPolygonsIntersectionInfo[_local6].push(getPolygonIntersectionInfo(iPolygonsInfo[_arg4], (_arg2[_local6] / 2)));
_local6++;
};
}
public function createPolygon(_arg1:Array, _arg2:int, _arg3:Array, _arg4:Boolean=true, _arg5:Number=1):Array{
var _local6:Array;
var _local7:Array;
var _local8:Sprite;
var _local9:int;
_local7 = new Array();
_local8 = createShape(_arg1);
_local7[0] = new Array();
_local7[1] = new Array();
_local7[2] = new Array();
if (_arg3[Hitz2L.iStoneID]){
_local9 = 0;
while (_local9 < _arg3[Hitz2L.iStoneID][_arg2]) {
if (!_local7[0][0]){
_local7[0][0] = new Array();
_local7[1][0] = new Array();
if (_local9 == 0){
_local7[2][0] = new Array();
};
};
_local6 = createPolygonBitmap(_local8, Hitz2L.iStoneID, _local9, _arg5);
_local7[0][0].push(_local6[0]);
_local7[1][0].push(_local6[1]);
if ((((_local9 == 0)) && (_arg4))){
_local7[2][0] = createPolygonPieces(_arg1, Hitz2L.iStoneID);
};
_local9++;
};
};
if (_arg3[Hitz2L.iCandyID]){
_local9 = 0;
while (_local9 < _arg3[Hitz2L.iCandyID][_arg2]) {
if (!_local7[0][1]){
_local7[0][1] = new Array();
_local7[1][1] = new Array();
if (_local9 == 0){
_local7[2][1] = new Array();
};
};
_local6 = createPolygonBitmap(_local8, Hitz2L.iCandyID, _local9, _arg5);
_local7[0][1].push(_local6[0]);
_local7[1][1].push(_local6[1]);
if ((((_local9 == 0)) && (_arg4))){
_local7[2][1] = createPolygonPieces(_arg1, Hitz2L.iCandyID);
};
_local9++;
};
};
if (_arg3[Hitz2L.iMetalID]){
_local9 = 0;
while (_local9 < _arg3[Hitz2L.iMetalID][_arg2]) {
if (!_local7[0][2]){
_local7[0][2] = new Array();
_local7[1][2] = new Array();
if (_local9 == 0){
_local7[2][2] = new Array();
};
};
_local6 = createPolygonBitmap(_local8, Hitz2L.iMetalID, _local9, _arg5);
_local7[0][2].push(_local6[0]);
_local7[1][2].push(_local6[1]);
if ((((_local9 == 0)) && (_arg4))){
_local7[2][2] = createPolygonPieces(_arg1, Hitz2L.iMetalID);
};
_local9++;
};
};
if (_arg3[Hitz2L.iGelID]){
_local9 = 0;
while (_local9 < _arg3[Hitz2L.iGelID][_arg2]) {
if (!_local7[0][3]){
_local7[0][3] = new Array();
_local7[1][3] = new Array();
if (_local9 == 0){
_local7[2][3] = new Array();
};
};
_local6 = createPolygonBitmap(_local8, Hitz2L.iGelID, _local9, _arg5);
_local7[0][3].push(_local6[0]);
_local7[1][3].push(_local6[1]);
if ((((_local9 == 0)) && (_arg4))){
_local7[2][3] = createPolygonPieces(_arg1, Hitz2L.iGelID);
};
_local9++;
};
};
return (_local7);
}
public function createSimpleBalls(_arg1:Array):void{
var _local2:int;
var _local3:Array;
var _local4:int;
var _local5:Sprite;
var _local6:Array;
var _local7:Array;
var _local8:Number;
var _local9:OBitmap;
_local2 = 0;
while (_local2 < _arg1.length) {
_local3 = new Array();
_local4 = 0;
while (_local4 < 30) {
_local5 = new ((Hitz2L.ball as Class));
_local6 = [ODisplay.SpriteLib, _local5];
_local7 = [ODisplay.SpriteScale, _local6, 1, 0, 0, 0];
_local8 = (_arg1[_local2] / _local5.width);
_local5["star1"].rotation = (_local4 * 2);
_local9 = OBitmap.MakeTmp(_local5, _local8, 0, 0, 0);
_local9.smoothing = true;
_local3.push(_local9);
_local4++;
};
iBalls.push(_local3);
_local2++;
};
}
public function createFireBalls(_arg1:Array):void{
var _local2:int;
var _local3:Array;
var _local4:int;
var _local5:Sprite;
var _local6:Array;
var _local7:Array;
var _local8:Number;
var _local9:OBitmap;
_local2 = 0;
while (_local2 < _arg1.length) {
_local3 = new Array();
_local4 = 0;
while (_local4 < 30) {
_local5 = new ((Hitz2L.FireBall as Class));
_local6 = [ODisplay.SpriteLib, _local5];
_local7 = [ODisplay.SpriteScale, _local6, 1, 0, 0, 0];
_local8 = (_arg1[_local2] / _local5.width);
_local5["star1"].rotation = (_local4 * 2);
_local9 = OBitmap.MakeTmp(_local5, _local8, 0, 0, 0);
_local9.smoothing = true;
_local3.push(_local9);
_local4++;
};
iBalls.push(_local3);
_local2++;
};
}
private function createBigBallBonusBitmap():OBitmap{
var _local1:Sprite;
var _local2:Sprite;
var _local3:OBitmap;
var _local4:OBitmap;
var _local5:Sprite;
_local1 = new ((Hitz2L.bigball as Class));
_local2 = new ((Hitz2L.bonusBorder as Class));
_local3 = new OBitmap(OEffects.Apply(_local2, (40 / _local2.width), "GEL", "green", "obstacle", 0.5, (-(_local2.width) / 2), (-(_local2.height) / 2)));
_local4 = new OBitmap(OEffects.Apply(_local1, (25 / _local1.height), "GEL", Hitz2L.iBonusesColors[Hitz2L.iBonusBigBallID], "obstacle", 0.5, 0, 0));
_local5 = new Sprite();
_local5.addChild(_local3);
_local5.addChild(_local4);
return (OBitmap.MakeTmp(_local5, (1 / OGlobal.Scale), 0, 0, 0));
}
private function createNormalBallBonusBitmap():OBitmap{
var _local1:Sprite;
var _local2:Sprite;
var _local3:OBitmap;
var _local4:OBitmap;
var _local5:Sprite;
_local1 = new ((Hitz2L.stdball as Class));
_local2 = new ((Hitz2L.bonusBorder as Class));
_local3 = new OBitmap(OEffects.Apply(_local2, (40 / _local2.width), "GEL", "green", "obstacle", 0.5, (-(_local2.width) / 2), (-(_local2.height) / 2)));
_local4 = new OBitmap(OEffects.Apply(_local1, (25 / _local1.height), "GEL", Hitz2L.iBonusesColors[Hitz2L.iBonusNormalBallID], "obstacle", 0.5, 0, 0));
_local5 = new Sprite();
_local5.addChild(_local3);
_local5.addChild(_local4);
return (OBitmap.MakeTmp(_local5, (1 / OGlobal.Scale), 0, 0, 0));
}
private function createLowSpeedBonusBitmap():OBitmap{
var _local1:Sprite;
var _local2:Sprite;
var _local3:OBitmap;
var _local4:OBitmap;
var _local5:Sprite;
_local1 = new ((Hitz2L.slowball as Class));
_local2 = new ((Hitz2L.bonusBorder as Class));
_local3 = new OBitmap(OEffects.Apply(_local2, (40 / _local2.width), "GEL", "green", "obstacle", 0.5, (-(_local2.width) / 2), (-(_local2.height) / 2)));
_local4 = new OBitmap(OEffects.Apply(_local1, (25 / _local1.height), "GEL", Hitz2L.iBonusesColors[Hitz2L.iBonusLowSpeedID], "obstacle", 0.5, 0, 0));
_local5 = new Sprite();
_local5.addChild(_local3);
_local5.addChild(_local4);
return (OBitmap.MakeTmp(_local5, (1 / OGlobal.Scale), 0, 0, 0));
}
public function createBalls(_arg1:Array):void{
iBalls = new Array();
createSimpleBalls(_arg1);
createFireBalls(_arg1);
}
private function createSmallBallBonusBitmap():OBitmap{
var _local1:Sprite;
var _local2:Sprite;
var _local3:OBitmap;
var _local4:OBitmap;
var _local5:Sprite;
_local1 = new ((Hitz2L.smallball as Class));
_local2 = new ((Hitz2L.bonusBorder as Class));
_local3 = new OBitmap(OEffects.Apply(_local2, (40 / _local2.width), "GEL", "green", "obstacle", 0.5, (-(_local2.width) / 2), (-(_local2.height) / 2)));
_local4 = new OBitmap(OEffects.Apply(_local1, (25 / _local1.height), "GEL", Hitz2L.iBonusesColors[Hitz2L.iBonusSmallBallID], "obstacle", 0.5, 0, 0));
_local5 = new Sprite();
_local5.addChild(_local3);
_local5.addChild(_local4);
return (OBitmap.MakeTmp(_local5, (1 / OGlobal.Scale), 0, 0, 0));
}
private function createHighSpeedBonusBitmap():OBitmap{
var _local1:Sprite;
var _local2:Sprite;
var _local3:OBitmap;
var _local4:OBitmap;
var _local5:Sprite;
_local1 = new ((Hitz2L.fastball as Class));
_local2 = new ((Hitz2L.bonusBorder as Class));
_local3 = new OBitmap(OEffects.Apply(_local2, (40 / _local2.width), "GEL", "red", "obstacle", 0.5, (-(_local2.width) / 2), (-(_local2.height) / 2)));
_local4 = new OBitmap(OEffects.Apply(_local1, (30 / _local1.height), "GEL", Hitz2L.iBonusesColors[Hitz2L.iBonusHighSpeedID], "obstacle", 0.5, (-(_local1.width) / 2), (-(_local1.height) / 2)));
_local5 = new Sprite();
_local5.addChild(_local3);
_local5.addChild(_local4);
return (OBitmap.MakeTmp(_local5, (1 / OGlobal.Scale), 0, 0, 0));
}
private function createAddLifeBonusBitmap():OBitmap{
var _local1:Sprite;
var _local2:Sprite;
var _local3:OBitmap;
var _local4:OBitmap;
var _local5:Sprite;
_local1 = new ((Hitz2L.addLife as Class));
_local2 = new ((Hitz2L.bonusBorder as Class));
_local3 = new OBitmap(OEffects.Apply(_local2, (40 / _local2.width), "GEL", "green", "obstacle", 0.5, (-(_local2.width) / 2), (-(_local2.height) / 2)));
_local4 = new OBitmap(OEffects.Apply(_local1, (30 / _local1.width), "GEL", Hitz2L.iBonusesColors[Hitz2L.iBonusAddLifeID], "obstacle", 0.5, (-(_local1.width) / 2), (-(_local1.height) / 2)));
_local5 = new Sprite();
_local5.addChild(_local3);
_local5.addChild(_local4);
return (OBitmap.MakeTmp(_local5, (1 / OGlobal.Scale), 0, 0, 0));
}
public function createRandomBonusBitmap():OBitmap{
var _local1:Sprite;
var _local2:Sprite;
var _local3:OBitmap;
var _local4:OBitmap;
var _local5:Sprite;
_local1 = new ((Hitz2L.randomBonus as Class));
_local2 = new ((Hitz2L.bonusBorder as Class));
_local3 = new OBitmap(OEffects.Apply(_local2, (40 / _local2.width), "GEL", "yellow", "obstacle", 0.5, (-(_local2.width) / 2), (-(_local2.height) / 2)));
_local4 = new OBitmap(OEffects.Apply(_local1, (30 / _local1.height), "GEL", "yellow", "obstacle", 0.5, (-(_local1.width) / 2), (-(_local1.height) / 2)));
_local5 = new Sprite();
_local5.addChild(_local3);
_local5.addChild(_local4);
return (OBitmap.MakeTmp(_local5, (1 / OGlobal.Scale), 0, 0, 0));
}
public function createPlatforms(_arg1:Array, _arg2:Array, _arg3:Array):void{
var _local4:int;
var _local5:int;
var _local6:Array;
var _local7:int;
var _local8:int;
iPlatformsInfo = _arg1;
iPlatforms = new Array();
iPlatformsShadows = new Array();
iPlatformsIntersectionInfo = new Array();
_local4 = 0;
while (_local4 < _arg1.length) {
_local5 = 0;
while (_local5 < 3) {
switch (_local5){
case 1:
scalePolygon(_arg1[_local4], 0.7);
break;
case 2:
scalePolygon(_arg1[_local4], 2.2);
break;
};
_local6 = createPlatform(_arg1[_local4], _arg2[_local4][1], _arg2[_local4][0]);
iPlatforms.push(_local6[0]);
iPlatformsShadows.push(new Array());
_local7 = 1;
while (_local7 < _local6.length) {
iPlatformsShadows[(iPlatformsShadows.length - 1)].push(_local6[_local7]);
_local7++;
};
_local8 = 0;
while (_local8 < _arg3.length) {
if (!iPlatformsIntersectionInfo[_local8]){
iPlatformsIntersectionInfo[_local8] = new Array();
};
iPlatformsIntersectionInfo[_local8].push(getPolygonIntersectionInfo(iPlatformsInfo[_local4], (_arg3[_local8] / 2)));
_local8++;
};
_local5++;
};
_local4++;
};
}
private function createSmallPlatformBitmap():OBitmap{
var _local1:Sprite;
var _local2:Sprite;
var _local3:OBitmap;
var _local4:OBitmap;
var _local5:Sprite;
_local1 = new ((Hitz2L.smallPlatform as Class));
_local2 = new ((Hitz2L.bonusBorder as Class));
_local3 = new OBitmap(OEffects.Apply(_local2, (40 / _local2.width), "GEL", "red", "obstacle", 0.5, (-(_local2.width) / 2), (-(_local2.height) / 2)));
_local4 = new OBitmap(OEffects.Apply(_local1, (35 / _local1.width), "GEL", Hitz2L.iBonusesColors[Hitz2L.iBonusSmallPlatformID], "obstacle", 0.5, 0, 0));
_local5 = new Sprite();
_local5.addChild(_local3);
_local5.addChild(_local4);
return (OBitmap.MakeTmp(_local5, (1 / OGlobal.Scale), 0, 0, 0));
}
private function createShapeBonusBitmap(_arg1:int):OBitmap{
var _local2:Sprite;
var _local3:Sprite;
var _local4:Number;
var _local5:Sprite;
var _local6:Sprite;
var _local7:OBitmap;
var _local8:OBitmap;
var _local9:Sprite;
switch (_arg1){
case 0:
_local2 = new ((Hitz2L.shape1 as Class));
break;
case 1:
_local2 = new ((Hitz2L.shape2 as Class));
break;
case 2:
_local2 = new ((Hitz2L.shape3 as Class));
break;
case 3:
_local2 = new ((Hitz2L.shape4 as Class));
break;
case 4:
_local2 = new ((Hitz2L.shape5 as Class));
break;
case 5:
_local2 = new ((Hitz2L.shape6 as Class));
break;
case 6:
_local2 = new ((Hitz2L.shape7 as Class));
break;
};
_local3 = new ((Hitz2L.bonusBorder as Class));
_local4 = (40 / _local3.width);
_local3.scaleX = _local4;
_local3.scaleY = _local4;
_local5 = new Sprite();
_local5.addChild(_local3);
_local4 = (25 / _local2.width);
_local2.scaleX = _local4;
_local2.scaleY = _local4;
_local6 = new Sprite();
_local6.addChild(_local2);
_local7 = new OBitmap(CGYFilters.ApplyDarkMetal(_local5, 0.5, 0, 0, Hitz2L.iDarkMetalColors[0]));
_local8 = new OBitmap(CGYFilters.ApplyDarkMetal(_local6, 0.7, 0, 0, Hitz2L.iDarkMetalColors[_arg1]));
_local9 = new Sprite();
_local9.addChild(_local7);
_local9.addChild(_local8);
return (OBitmap.MakeTmp(_local9, (1 / OGlobal.Scale), 0, 0, 0));
}
private function createAddBallBonusBitmap():OBitmap{
var _local1:Sprite;
var _local2:Sprite;
var _local3:OBitmap;
var _local4:OBitmap;
var _local5:Sprite;
_local1 = new ((Hitz2L.multiball as Class));
_local2 = new ((Hitz2L.bonusBorder as Class));
_local3 = new OBitmap(OEffects.Apply(_local2, (40 / _local2.width), "GEL", "green", "obstacle", 0.5, (-(_local2.width) / 2), (-(_local2.height) / 2)));
_local4 = new OBitmap(OEffects.Apply(_local1, (30 / _local1.width), "GEL", Hitz2L.iBonusesColors[Hitz2L.iBonusUltraSpeedID], "obstacle", 0.5, (-(_local1.width) / 2), (-(_local1.height) / 2)));
_local5 = new Sprite();
_local5.addChild(_local3);
_local5.addChild(_local4);
return (OBitmap.MakeTmp(_local5, (1 / OGlobal.Scale), 0, 0, 0));
}
private function createNormalPlatformBitmap():OBitmap{
var _local1:Sprite;
var _local2:Sprite;
var _local3:OBitmap;
var _local4:OBitmap;
var _local5:Sprite;
_local1 = new ((Hitz2L.normalPlatform as Class));
_local2 = new ((Hitz2L.bonusBorder as Class));
_local3 = new OBitmap(OEffects.Apply(_local2, (40 / _local2.width), "GEL", "yellow", "obstacle", 0.5, (-(_local2.width) / 2), (-(_local2.height) / 2)));
_local4 = new OBitmap(OEffects.Apply(_local1, (30 / _local1.width), "GEL", Hitz2L.iBonusesColors[Hitz2L.iBonusNormalPlatformID], "obstacle", 0.5, 0, 0));
_local5 = new Sprite();
_local5.addChild(_local3);
_local5.addChild(_local4);
return (OBitmap.MakeTmp(_local5, (1 / OGlobal.Scale), 0, 0, 0));
}
public function createBonuses():void{
iBonuses = new Array();
iBonuses[Hitz2L.iBonusAddBallID] = createAddBallBonusBitmap();
iBonuses[Hitz2L.iBonusUltraSpeedID] = createUltraSpeedBonusBitmap();
iBonuses[Hitz2L.iBonusNormalSpeedID] = createNormalSpeedBonusBitmap();
iBonuses[Hitz2L.iBonusHighSpeedID] = createHighSpeedBonusBitmap();
iBonuses[Hitz2L.iBonusLowSpeedID] = createLowSpeedBonusBitmap();
iBonuses[Hitz2L.iBonusSmallBallID] = createSmallBallBonusBitmap();
iBonuses[Hitz2L.iBonusBigBallID] = createBigBallBonusBitmap();
iBonuses[Hitz2L.iBonusNormalBallID] = createNormalBallBonusBitmap();
iBonuses[Hitz2L.iBonusShape1ID] = createShapeBonusBitmap(0);
iBonuses[Hitz2L.iBonusShape2ID] = createShapeBonusBitmap(1);
iBonuses[Hitz2L.iBonusShape3ID] = createShapeBonusBitmap(2);
iBonuses[Hitz2L.iBonusShape4ID] = createShapeBonusBitmap(3);
iBonuses[Hitz2L.iBonusShape5ID] = createShapeBonusBitmap(4);
iBonuses[Hitz2L.iBonusShape6ID] = createShapeBonusBitmap(5);
iBonuses[Hitz2L.iBonusShape7ID] = createShapeBonusBitmap(6);
iBonuses[Hitz2L.iBonusBigPlatformID] = createBigPlatformBitmap();
iBonuses[Hitz2L.iBonusSmallPlatformID] = createSmallPlatformBitmap();
iBonuses[Hitz2L.iBonusNormalPlatformID] = createNormalPlatformBitmap();
iBonuses[Hitz2L.iBonusFireBallID] = createFireBallBitmap();
iBonuses[Hitz2L.iBonusAddLifeID] = createAddLifeBonusBitmap();
iBonuses[Hitz2L.iBonusHiddenID] = createHiddenBonusBitmap();
}
public function createSimplePolygons(_arg1:Array, _arg2:Array):void{
var _local3:int;
var _local4:Array;
iPolygons = new Array();
iPolygonsShadows = new Array();
_local3 = 0;
while (_local3 < _arg1.length) {
_local4 = createPolygon(_arg1[_local3], _local3, _arg2, false, 0.5);
iPolygons.push(_local4[0]);
iPolygonsShadows.push(_local4[1]);
_local3++;
};
}
public static function createGreyBall(_arg1:int):OBitmap{
var _local2:Sprite;
_local2 = new ((Hitz2L.GreyBall as Class));
return (OBitmap.MakeTmp(_local2, (_arg1 / _local2.width), 0, 0, 0));
}
public static function createPolygonPieces(_arg1:Array, _arg2:int):Array{
var _local3:Array;
var _local4:Array;
var _local5:int;
var _local6:Array;
var _local7:int;
var _local8:Array;
var _local9:Sprite;
var _local10:int;
var _local11:Array;
var _local12:OSprite;
_local3 = new Array();
_local4 = new Array();
_local5 = 0;
while (_local5 < _arg1.length) {
_local4.push(new Point(_arg1[_local5], _arg1[(_local5 + 1)]));
_local5 = (_local5 + 2);
};
_local6 = CGeom.breakPolygon(_local4);
_local7 = 0;
while (_local7 < _local6.length) {
_local8 = CPolygonBreaker.getPolygonWH(_local6[_local7]);
_local9 = new Sprite();
_local9.graphics.beginFill(0);
_local9.graphics.moveTo(((_local6[_local7][0].x - _local8[2]) - (_local8[0] / 2)), ((_local6[_local7][0].y - _local8[4]) - (_local8[1] / 2)));
_local10 = 1;
while (_local10 < _local6[_local7].length) {
_local9.graphics.lineTo(((_local6[_local7][_local10].x - _local8[2]) - (_local8[0] / 2)), ((_local6[_local7][_local10].y - _local8[4]) - (_local8[1] / 2)));
_local10++;
};
_local9.graphics.endFill();
_local11 = createPolygonBitmap(_local9, _arg2, 0, 1);
_local12 = new OSprite();
_local12.addChild(_local11[0]);
_local12.Pos((_local8[2] + (_local8[0] / 2)), (_local8[4] + (_local8[1] / 2)));
_local3.push([_local12]);
_local7++;
};
return (_local3);
}
public static function createPolygonBitmap(_arg1:Sprite, _arg2:int, _arg3:int, _arg4:Number):Array{
var _local5:Array;
var _local6:Number;
_local5 = new Array();
switch (_arg2){
case Hitz2L.iStoneID:
_local5.push(new OBitmap(CGYFilters.ApplyStoneNS(_arg1, (0.5 * _arg4), 0, 0, Hitz2L.iStoneColors[_arg3])));
_local5.push(new OBitmap(CGYFilters.ApplyStoneSOnly(_arg1, (1.5 * _arg4), 0, 0, Hitz2L.iStoneColors[_arg3])));
break;
case Hitz2L.iCandyID:
_local5.push(new OBitmap(CGYFilters.ApplyCandyNS(_arg1, (0.5 * _arg4), 0, 0, Hitz2L.iCandyColors[_arg3])));
_local5.push(new OBitmap(CGYFilters.ApplyCandySOnly(_arg1, (1.5 * _arg4), 0, 0, Hitz2L.iCandyColors[_arg3])));
break;
case Hitz2L.iMetalID:
_local5.push(new OBitmap(CGYFilters.ApplyMetal(_arg1, (0.5 * _arg4), 0, 0, Hitz2L.iMetalColors[_arg3])));
_local5.push(new OBitmap(CGYFilters.ApplyCandySOnly(_arg1, (1.5 * _arg4), 0, 0, Hitz2L.iMetalColors[_arg3])));
break;
case Hitz2L.iGelID:
_local5.push(new OBitmap(CGYFilters.ApplyMetal2(_arg1, (0.5 * _arg4), 0, 0, Hitz2L.iMetalColors[_arg3])));
_local5.push(new OBitmap(CGYFilters.ApplyCandySOnly(_arg1, (1.5 * _arg4), 0, 0, Hitz2L.iMetalColors[_arg3])));
break;
case Hitz2L.iDarkMetalID:
_local5.push(new OBitmap(CGYFilters.ApplyDarkMetal(_arg1, (0.9 * _arg4), 0, 0, Hitz2L.iDarkMetalColors[_arg3])));
_local6 = 1;
while (_local6 < 2) {
_local5.push(new OBitmap(CGYFilters.ApplyCandyDoubleSOnly(_arg1, _local6, 0, 0, Hitz2L.iDarkMetalColors[_arg3])));
_local6 = (_local6 + 0.2);
};
break;
};
return (_local5);
}
}
}//package RES.GAME
Section 134
//CLevels (RES.GAME.CLevels)
package RES.GAME {
public class CLevels {
public static const iPlatformsInfo:Array = [[4, 0], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [4, 6]];
public static const iLevelsFigures:Array = [[[0, 0, 12.66, 0, 12.66, 278.48, 0, 278.48, 0, 0], [0, 0, 12.66, 0, 12.66, 278.48, 0, 278.48, 0, 0], [0, 0, 12.66, 0, 12.66, 278.48, 0, 278.48, 0, 0], [0, 0, 12.66, 0, 12.66, 278.48, 0, 278.48, 0, 0], [0, 0, 12.66, 0, 12.66, 278.48, 0, 278.48, 0, 0], [0, 0, 12.66, 0, 12.66, 278.48, 0, 278.48, 0, 0], [0, 0, 12.66, 0, 12.66, 278.48, 0, 278.48, 0, 0], [0, 0, 12.66, 0, 12.66, 278.48, 0, 278.48, 0, 0], [0, 0, 12.66, 0, 12.66, 278.48, 0, 278.48, 0, 0], [6.33, 0, 12.66, 0, 12.66, 278.48, 0, 278.48, 0, 0, 6.33, 0], [12.66, 0, 12.66, 278.48, 0, 278.48, 0, 0, 12.66, 0], [0, 0, 12.66, 0, 12.66, 278.48, 0, 278.48, 0, 0], [0, 0, 12.66, 0, 12.66, 278.48, 0, 278.48, 0, 0], [0, 0, 12.66, 0, 12.66, 278.48, 0, 278.48, 0, 0], [12.66, 0, 145.57, 0, 139.24, 278.48, 126.58, 215.19, 75.95, 278.48, 25.32, 215.19, 6.33, 278.48, 0, 0, 12.66, 0], [0, 0, 12.66, 0, 12.66, 278.48, 0, 278.48, 0, 0], [0, 0, 12.66, 0, 12.66, 278.48, 0, 278.48, 0, 0], [0, 0, 12.66, 0, 12.66, 278.48, 0, 278.48, 0, 0], [0, 0, 12.66, 0, 12.66, 278.48, 0, 278.48, 0, 0], [0, 0, 12.66, 0, 12.66, 278.48, 0, 278.48, 0, 0], [0, 278.48, 0, 0, 12.66, 0, 12.66, 278.48, 0, 278.48], [6.33, 278.48, 0, 278.48, 0, 0, 12.66, 0, 12.66, 278.48, 6.33, 278.48], [0, 278.48, 0, 0, 12.66, 0, 12.66, 278.48, 0, 278.48], [0, 0, 12.66, 0, 12.66, 278.48, 0, 278.48, 0, 0], [0, 0, 12.66, 0, 12.66, 278.48, 0, 278.48, 0, 0], [0, 0, 12.66, 0, 12.66, 278.48, 0, 278.48, 0, 0], [0, 0, 12.66, 0, 12.66, 278.48, 0, 278.48, 0, 0], [0, 0, 12.66, 0, 12.66, 278.48, 0, 278.48, 0, 0], [6.33, 0, 18.99, 0, 18.99, 278.48, 0, 278.48, 0, 0, 6.33, 0], [506.33, 0, 506.33, 75.95, 0, 75.95, 0, 0, 506.33, 0], [50.63, 0, 63.29, 56.96, 0, 56.96, 50.63, 0], [18.99, 0, 69.62, 56.96, 0, 56.96, 18.99, 0]], [[0, 6.33, 101.27, 0, 107.59, 63.29, 6.33, 69.62, 0, 6.33], [6.33, 63.29, 0, 0, 56.96, 0, 113.92, 37.97, 75.95, 82.28, 6.33, 63.29], [0, 37.97, 50.63, 0, 94.94, 0, 113.92, 31.65, 113.92, 82.28, 44.3, 69.62, 0, 37.97], [0, 25.32, 44.3, 0, 63.29, 0, 63.29, 82.28, 0, 75.95, 0, 25.32], [44.3, 6.33, 0, 75.95, 0, 25.32, 18.99, 0, 44.3, 6.33], [37.97, 0, 50.63, 63.29, 0, 6.33, 37.97, 0], [6.33, 44.3, 0, 0, 75.95, 6.33, 69.62, 44.3, 6.33, 44.3], [6.33, 18.99, 44.3, 0, 82.28, 0, 82.28, 63.29, 0, 63.29, 0, 56.96, 6.33, 18.99], [94.94, 37.97, 0, 37.97, 0, 0, 31.65, 31.65, 94.94, 31.65, 94.94, 37.97], [0, 6.33, 50.63, 0, 69.62, 44.3, 0, 44.3, 0, 6.33], [0, 0, 56.96, 6.33, 56.96, 44.3, 18.99, 44.3, 0, 0], [0, 31.65, 31.65, 0, 44.3, 6.33, 44.3, 69.62, 0, 69.62, 0, 31.65], [44.3, 0, 63.29, 25.32, 63.29, 63.29, 12.66, 63.29, 0, 44.3, 25.32, 12.66, 18.99, 0, 44.3, 0], [94.94, 0, 101.27, 12.66, 75.95, 44.3, 88.61, 63.29, 69.62, 63.29, 50.63, 50.63, 0, 50.63, 31.65, 12.66, 94.94, 0], [31.65, 0, 44.3, 0, 25.32, 25.32, 75.95, 25.32, 94.94, 37.97, 0, 37.97, 31.65, 0], [0, 25.32, 12.66, 0, 69.62, 0, 69.62, 12.66, 56.96, 25.32, 44.3, 25.32, 12.66, 63.29, 0, 63.29, 0, 25.32], [0, 63.29, 18.99, 0, 31.65, 63.29, 25.32, 82.28, 18.99, 82.28, 0, 88.61, 0, 63.29], [0, 0, 69.62, 12.66, 56.96, 82.28, 6.33, 82.28, 12.66, 63.29, 0, 0], [12.66, 0, 25.32, 44.3, 44.3, 50.63, 37.97, 69.62, 31.65, 75.95, 0, 69.62, 12.66, 6.33, 12.66, 0], [6.33, 44.3, 12.66, 0, 37.97, 0, 37.97, 44.3, 25.32, 37.97, 0, 63.29, 6.33, 44.3], [0, 0, 25.32, 6.33, 12.66, 31.65, 0, 0], [12.66, 0, 25.32, 0, 18.99, 37.97, 18.99, 44.3, 0, 37.97, 0, 25.32, 12.66, 0], [0, 44.3, 12.66, 25.32, 25.32, 25.32, 31.65, 31.65, 44.3, 6.33, 56.96, 0, 44.3, 37.97, 44.3, 75.95, 50.63, 44.3, 75.95, 37.97, 44.3, 94.94, 12.66, 94.94, 0, 120.25, 0, 44.3], [37.97, 0, 56.96, 0, 50.63, 18.99, 56.96, 37.97, 50.63, 69.62, 25.32, 75.95, 25.32, 63.29, 0, 63.29, 31.65, 6.33, 37.97, 0], [12.66, 0, 18.99, 0, 25.32, 31.65, 37.97, 31.65, 31.65, 37.97, 6.33, 44.3, 0, 69.62, 0, 37.97, 12.66, 0], [31.65, 6.33, 50.63, 0, 50.63, 31.65, 44.3, 31.65, 31.65, 37.97, 25.32, 44.3, 25.32, 50.63, 18.99, 63.29, 12.66, 56.96, 0, 56.96, 37.97, 6.33, 31.65, 6.33], [18.99, 0, 25.32, 0, 0, 31.65, 18.99, 0], [6.33, 6.33, 75.95, 0, 75.95, 63.29, 63.29, 69.62, 37.97, 69.62, 0, 75.95, 6.33, 44.3, 0, 25.32, 6.33, 6.33], [69.62, 18.99, 75.95, 82.28, 31.65, 82.28, 25.32, 63.29, 18.99, 63.29, 0, 63.29, 0, 56.96, 6.33, 56.96, 0, 44.3, 0, 6.33, 18.99, 18.99, 0, 0, 69.62, 18.99], [37.97, 0, 82.28, 25.32, 31.65, 25.32, 31.65, 50.63, 18.99, 82.28, 18.99, 63.29, 12.66, 37.97, 0, 44.3, 37.97, 0], [0, 6.33, 12.66, 0, 18.99, 25.32, 18.99, 44.3, 25.32, 56.96, 25.32, 69.62, 6.33, 69.62, 0, 6.33], [6.33, 75.95, 6.33, 69.62, 0, 56.96, 12.66, 25.32, 12.66, 0, 63.29, 0, 50.63, 31.65, 82.28, 69.62, 56.96, 69.62, 31.65, 82.28, 6.33, 82.28, 6.33, 75.95], [12.66, 12.66, 31.65, 0, 63.29, 18.99, 44.3, 82.28, 31.65, 82.28, 0, 44.3, 12.66, 12.66], [56.96, 6.33, 63.29, 12.66, 44.3, 25.32, 0, 0, 50.63, 0, 56.96, 6.33], [0, 0, 82.28, 0, 0, 126.58, 0, 0], [132.91, 0, 88.61, 18.99, 69.62, 50.63, 37.97, 50.63, 0, 12.66, 12.66, 6.33, 44.3, 6.33, 56.96, 0, 126.58, 0, 132.91, 0], [113.92, 0, 88.61, 50.63, 0, 50.63, 18.99, 18.99, 63.29, 0, 113.92, 0], [0, 0, 82.28, 0, 69.62, 6.33, 37.97, 6.33, 25.32, 12.66, 63.29, 50.63, 0, 50.63, 0, 0], [0, 0, 82.28, 0, 82.28, 101.27, 0, 0], [0, 50.63, 25.32, 0, 44.3, 0, 82.28, 50.63, 0, 50.63], [69.62, 56.96, 0, 56.96, 0, 6.33, 69.62, 0, 69.62, 56.96], [31.65, 0, 75.95, 0, 75.95, 50.63, 0, 50.63, 31.65, 0], [0, 44.3, 0, 0, 37.97, 0, 82.28, 50.63, 63.29, 50.63, 18.99, 75.95, 0, 44.3], [0, 0, 44.3, 0, 44.3, 44.3, 0, 44.3, 0, 0], [31.65, 0, 107.59, 0, 107.59, 44.3, 44.3, 50.63, 25.32, 56.96, 0, 50.63, 31.65, 0], [0, 0, 50.63, 37.97, 50.63, 44.3, 0, 44.3, 0, 0], [0, 0, 75.95, 0, 50.63, 44.3, 50.63, 37.97, 0, 0], [25.32, 0, 44.3, 44.3, 0, 44.3, 25.32, 0], [0, 0, 177.22, 0, 177.22, 44.3, 126.58, 82.28, 75.95, 82.28, 18.99, 44.3, 0, 0]], [[63.29, 50.63, 0, 0, 63.29, 0, 63.29, 50.63], [0, 0, 63.29, 0, 0, 50.63, 0, 0], [63.29, 6.33, 63.29, 50.63, 0, 50.63, 0, 44.3, 0, 0, 63.29, 0, 63.29, 6.33], [63.29, 0, 63.29, 50.63, 0, 50.63, 0, 44.3, 0, 0, 63.29, 0], [0, 50.63, 0, 0, 31.65, 25.32, 0, 50.63], [63.29, 50.63, 0, 50.63, 0, 0, 63.29, 50.63], [63.29, 0, 63.29, 50.63, 0, 50.63, 63.29, 0], [0, 25.32, 31.65, 0, 31.65, 50.63, 0, 25.32], [31.65, 75.95, 0, 50.63, 0, 0, 126.58, 0, 31.65, 75.95], [94.94, 75.95, 0, 0, 126.58, 0, 126.58, 50.63, 94.94, 75.95], [126.58, 50.63, 0, 50.63, 0, 0, 253.16, 0, 253.16, 50.63, 126.58, 50.63], [126.58, 25.32, 126.58, 75.95, 0, 75.95, 94.94, 0, 126.58, 25.32], [0, 69.62, 0, 25.32, 31.65, 0, 126.58, 75.95, 0, 75.95, 0, 69.62], [0, 25.32, 31.65, 0, 126.58, 0, 126.58, 25.32, 0, 25.32], [0, 0, 94.94, 0, 126.58, 25.32, 0, 25.32, 0, 0], [126.58, 0, 0, 50.63, 0, 0, 126.58, 0], [0, 0, 126.58, 0, 126.58, 50.63, 0, 0], [126.58, 0, 253.16, 50.63, 0, 50.63, 126.58, 0], [0, 0, 63.29, 0, 63.29, 75.95, 31.65, 101.27, 0, 75.95, 0, 0], [31.65, 0, 63.29, 0, 63.29, 75.95, 31.65, 101.27, 0, 75.95, 0, 0, 31.65, 0], [506.33, 253.16, 411.39, 177.22, 411.39, 101.27, 379.75, 6.33, 126.58, 6.33, 94.94, 101.27, 94.94, 177.22, 0, 253.16, 0, 0, 506.33, 0, 506.33, 253.16], [94.94, 88.61, 94.94, 82.28, 94.94, 44.3, 0, 0, 126.58, 0, 158.23, 94.94, 94.94, 94.94, 94.94, 88.61], [158.23, 0, 63.29, 44.3, 63.29, 94.94, 0, 94.94, 31.65, 0, 158.23, 0], [94.94, 0, 189.87, 44.3, 189.87, 69.62, 0, 69.62, 0, 44.3, 94.94, 0], [0, 0, 94.94, 0, 94.94, 101.27, 0, 0], [94.94, 0, 0, 101.27, 0, 6.33, 0, 0, 88.61, 0, 94.94, 0], [94.94, 0, 189.87, 101.27, 0, 101.27, 94.94, 0]], [[0, 0, 37.97, 0, 37.97, 12.66, 0, 12.66, 0, 0], [37.97, 0, 37.97, 12.66, 0, 12.66, 0, 0, 37.97, 0], [37.97, 0, 37.97, 12.66, 0, 12.66, 0, 0, 37.97, 0], [0, 0, 37.97, 0, 37.97, 12.66, 0, 12.66, 0, 0], [0, 0, 50.63, 0, 50.63, 75.95, 44.3, 75.95, 37.97, 75.95, 37.97, 12.66, 0, 12.66, 0, 0], [6.33, 0, 18.99, 0, 12.66, 25.32, 31.65, 25.32, 31.65, 37.97, 0, 37.97, 6.33, 0], [0, 25.32, 0, 0, 12.66, 0, 12.66, 31.65, 0, 25.32], [0, 44.3, 6.33, 0, 31.65, 0, 31.65, 12.66, 12.66, 12.66, 12.66, 18.99, 31.65, 18.99, 31.65, 31.65, 12.66, 25.32, 6.33, 44.3, 0, 44.3], [0, 44.3, 12.66, 0, 37.97, 0, 37.97, 12.66, 18.99, 12.66, 12.66, 31.65, 37.97, 25.32, 31.65, 37.97, 12.66, 44.3, 12.66, 56.96, 25.32, 56.96, 18.99, 69.62, 0, 63.29, 0, 44.3], [0, 0, 12.66, 6.33, 6.33, 6.33, 0, 0], [0, 37.97, 0, 0, 25.32, 0, 18.99, 6.33, 6.33, 6.33, 18.99, 12.66, 18.99, 18.99, 6.33, 18.99, 6.33, 25.32, 18.99, 25.32, 18.99, 37.97, 0, 37.97], [6.33, 6.33, 18.99, 6.33, 31.65, 12.66, 63.29, 0, 44.3, 18.99, 63.29, 31.65, 44.3, 31.65, 31.65, 18.99, 18.99, 31.65, 0, 37.97, 18.99, 18.99, 6.33, 6.33], [6.33, 0, 37.97, 0, 31.65, 12.66, 18.99, 12.66, 18.99, 37.97, 6.33, 37.97, 12.66, 12.66, 0, 12.66, 6.33, 0], [0, 37.97, 6.33, 0, 37.97, 0, 37.97, 18.99, 18.99, 18.99, 37.97, 44.3, 25.32, 44.3, 12.66, 31.65, 6.33, 44.3, 0, 44.3, 0, 37.97], [0, 37.97, 18.99, 0, 31.65, 0, 50.63, 37.97, 37.97, 37.97, 31.65, 25.32, 18.99, 25.32, 12.66, 37.97, 0, 37.97], [107.59, 18.99, 120.25, 0, 151.9, 31.65, 151.9, 63.29, 101.27, 82.28, 31.65, 82.28, 31.65, 101.27, 0, 75.95, 31.65, 44.3, 31.65, 69.62, 82.28, 69.62, 113.92, 63.29, 126.58, 44.3, 120.25, 25.32, 107.59, 18.99], [31.65, 196.2, 0, 196.2, 6.33, 0, 31.65, 0, 31.65, 196.2], [0, 0, 63.29, 0, 63.29, 44.3, 0, 50.63, 0, 0], [0, 6.33, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 6.33], [0, 0, 88.61, 0, 88.61, 44.3, 0, 44.3, 0, 0], [0, 0, 37.97, 0, 37.97, 12.66, 0, 12.66, 0, 0], [50.63, 37.97, 75.95, 0, 88.61, 37.97, 132.91, 25.32, 88.61, 56.96, 126.58, 94.94, 69.62, 56.96, 44.3, 75.95, 56.96, 44.3, 0, 50.63, 50.63, 37.97], [44.3, 56.96, 107.59, 0, 113.92, 44.3, 177.22, 44.3, 126.58, 82.28, 170.89, 139.24, 94.94, 101.27, 44.3, 120.25, 56.96, 82.28, 0, 82.28, 44.3, 56.96], [75.95, 56.96, 145.57, 0, 177.22, 56.96, 240.51, 50.63, 183.54, 113.92, 227.85, 196.2, 139.24, 145.57, 56.96, 151.9, 75.95, 120.25, 0, 113.92, 37.97, 88.61, 25.32, 31.65, 75.95, 56.96], [139.24, 63.29, 227.85, 0, 272.15, 69.62, 398.73, 12.66, 329.11, 88.61, 417.72, 82.28, 316.46, 139.24, 354.43, 234.18, 284.81, 202.53, 322.78, 265.82, 234.18, 227.85, 196.2, 183.54, 107.59, 183.54, 63.29, 189.87, 88.61, 164.56, 0, 151.9, 69.62, 107.59, 0, 50.63, 69.62, 63.29, 88.61, 12.66, 139.24, 63.29], [506.33, 0, 493.67, 120.25, 436.71, 25.32, 354.43, 37.97, 208.86, 12.66, 0, 63.29, 0, 0, 506.33, 0]], [[189.87, 101.27, 126.58, 50.63, 0, 50.63, 0, 0, 189.87, 0, 253.16, 0, 253.16, 101.27, 189.87, 101.27], [0, 0, 253.16, 0, 253.16, 50.63, 126.58, 50.63, 63.29, 101.27, 0, 101.27, 0, 0], [126.58, 50.63, 126.58, 151.9, 63.29, 202.53, 0, 151.9, 0, 0, 63.29, 50.63, 126.58, 50.63], [126.58, 0, 126.58, 151.9, 63.29, 202.53, 0, 151.9, 0, 50.63, 63.29, 50.63, 126.58, 0], [0, 101.27, 0, 94.94, 0, 50.63, 0, 0, 126.58, 0, 126.58, 50.63, 63.29, 50.63, 0, 101.27], [126.58, 94.94, 126.58, 101.27, 63.29, 50.63, 0, 50.63, 0, 6.33, 0, 0, 126.58, 0, 126.58, 94.94], [0, 0, 63.29, 0, 63.29, 101.27, 126.58, 151.9, 63.29, 202.53, 0, 101.27, 0, 0], [126.58, 0, 126.58, 101.27, 63.29, 202.53, 0, 151.9, 63.29, 101.27, 63.29, 0, 126.58, 0], [0, 50.63, 63.29, 0, 63.29, 50.63, 0, 101.27, 0, 50.63], [0, 50.63, 0, 0, 63.29, 50.63, 63.29, 101.27, 0, 50.63], [126.58, 0, 126.58, 101.27, 0, 101.27, 126.58, 0], [0, 6.33, 0, 0, 126.58, 101.27, 0, 101.27, 0, 6.33], [0, 151.9, 63.29, 50.63, 63.29, 0, 126.58, 50.63, 189.87, 0, 189.87, 50.63, 253.16, 151.9, 126.58, 101.27, 0, 151.9], [126.58, 0, 126.58, 101.27, 0, 101.27, 126.58, 0], [0, 0, 126.58, 101.27, 0, 101.27, 0, 0], [63.29, 0, 189.87, 50.63, 63.29, 50.63, 0, 0, 63.29, 0], [126.58, 0, 189.87, 0, 126.58, 50.63, 0, 50.63, 126.58, 0], [0, 0, 126.58, 0, 253.16, 50.63, 253.16, 101.27, 126.58, 50.63, 63.29, 50.63, 0, 0], [0, 50.63, 126.58, 0, 253.16, 0, 189.87, 50.63, 126.58, 50.63, 0, 101.27, 0, 50.63], [126.58, 0, 253.16, 0, 126.58, 50.63, 0, 0, 126.58, 0]], [[63.29, 31.65, 0, 31.65, 0, 0, 63.29, 0, 63.29, 25.32, 63.29, 31.65], [63.29, 31.65, 0, 31.65, 0, 0, 63.29, 0, 63.29, 31.65], [63.29, 31.65, 0, 31.65, 0, 0, 63.29, 0, 63.29, 31.65], [63.29, 31.65, 0, 31.65, 0, 0, 63.29, 0, 63.29, 31.65], [0, 0, 63.29, 0, 63.29, 31.65, 0, 31.65, 0, 0], [0, 50.63, 0, 18.99, 31.65, 0, 31.65, 50.63, 0, 50.63], [31.65, 50.63, 0, 50.63, 0, 0, 31.65, 18.99, 31.65, 50.63], [63.29, 25.32, 0, 25.32, 0, 0, 63.29, 25.32], [63.29, 25.32, 0, 25.32, 63.29, 0, 63.29, 25.32], [63.29, 18.99, 0, 6.33, 0, 0, 126.58, 0, 126.58, 6.33, 63.29, 18.99], [31.65, 0, 63.29, 37.97, 0, 12.66, 31.65, 0], [31.65, 0, 63.29, 12.66, 0, 37.97, 31.65, 0], [31.65, 18.99, 63.29, 0, 63.29, 25.32, 31.65, 37.97, 0, 25.32, 0, 0, 31.65, 18.99], [31.65, 0, 63.29, 0, 31.65, 18.99, 0, 0, 31.65, 0], [88.61, 63.29, 0, 107.59, 0, 0, 145.57, 69.62, 88.61, 63.29], [0, 75.95, 145.57, 0, 145.57, 113.92, 56.96, 69.62, 0, 75.95], [0, 25.32, 0, 0, 75.95, 0, 75.95, 120.25, 69.62, 50.63, 37.97, 75.95, 0, 25.32], [75.95, 0, 75.95, 25.32, 37.97, 75.95, 6.33, 50.63, 0, 126.58, 0, 0, 75.95, 0], [0, 0, 113.92, 0, 50.63, 88.61, 18.99, 75.95, 0, 25.32, 0, 0], [0, 0, 113.92, 0, 113.92, 25.32, 94.94, 75.95, 63.29, 88.61, 0, 0], [56.96, 0, 120.25, 88.61, 0, 88.61, 18.99, 0, 56.96, 0], [101.27, 0, 120.25, 88.61, 0, 88.61, 63.29, 0, 101.27, 0], [31.65, 0, 56.96, 0, 37.97, 88.61, 25.32, 88.61, 0, 0, 31.65, 0], [63.29, 31.65, 0, 31.65, 0, 0, 63.29, 0, 63.29, 31.65], [50.63, 50.63, 0, 25.32, 12.66, 0, 50.63, 18.99, 50.63, 50.63], [0, 50.63, 0, 18.99, 37.97, 0, 50.63, 25.32, 0, 50.63], [0, 18.99, 6.33, 0, 25.32, 6.33, 12.66, 44.3, 0, 18.99], [12.66, 44.3, 0, 6.33, 18.99, 0, 25.32, 18.99, 12.66, 44.3], [0, 75.95, 0, 0, 18.99, 0, 31.65, 50.63, 44.3, 88.61, 0, 75.95], [25.32, 0, 44.3, 0, 44.3, 75.95, 0, 88.61, 12.66, 50.63, 25.32, 0], [31.65, 37.97, 0, 0, 44.3, 12.66, 94.94, 37.97, 63.29, 63.29, 31.65, 37.97], [63.29, 44.3, 31.65, 63.29, 0, 37.97, 50.63, 12.66, 94.94, 0, 63.29, 37.97, 63.29, 44.3], [0, 31.65, 0, 0, 63.29, 0, 94.94, 25.32, 94.94, 63.29, 75.95, 63.29, 75.95, 44.3, 63.29, 31.65, 0, 31.65], [18.99, 44.3, 0, 50.63, 18.99, 0, 44.3, 0, 18.99, 44.3], [31.65, 25.32, 0, 0, 126.58, 0, 63.29, 50.63, 31.65, 25.32], [0, 0, 126.58, 0, 126.58, 6.33, 0, 6.33, 0, 0], [31.65, 6.33, 37.97, 0, 31.65, 31.65, 12.66, 82.28, 0, 31.65, 31.65, 6.33], [31.65, 6.33, 31.65, 0, 56.96, 0, 18.99, 31.65, 0, 31.65, 31.65, 6.33], [0, 0, 37.97, 0, 50.63, 12.66, 50.63, 31.65, 25.32, 31.65, 0, 0], [6.33, 0, 31.65, 31.65, 0, 31.65, 6.33, 0], [0, 37.97, 56.96, 0, 94.94, 44.3, 0, 75.95, 0, 37.97], [0, 25.32, 31.65, 0, 37.97, 69.62, 0, 25.32], [50.63, 0, 88.61, 50.63, 31.65, 88.61, 0, 63.29, 31.65, 50.63, 50.63, 0], [31.65, 0, 94.94, 0, 94.94, 31.65, 31.65, 31.65, 18.99, 44.3, 18.99, 63.29, 0, 63.29, 0, 31.65, 31.65, 0], [145.57, 6.33, 164.56, 25.32, 126.58, 44.3, 63.29, 44.3, 0, 44.3, 88.61, 0, 145.57, 6.33], [25.32, 0, 44.3, 50.63, 25.32, 44.3, 0, 0, 25.32, 0], [0, 0, 31.65, 0, 56.96, 44.3, 50.63, 63.29, 31.65, 44.3, 0, 0], [0, 25.32, 18.99, 6.33, 75.95, 0, 164.56, 44.3, 37.97, 44.3, 0, 25.32], [25.32, 0, 56.96, 0, 25.32, 44.3, 6.33, 63.29, 0, 44.3, 25.32, 0], [31.65, 31.65, 50.63, 31.65, 145.57, 0, 0, 75.95, 31.65, 31.65], [25.32, 6.33, 56.96, 31.65, 37.97, 31.65, 0, 0, 25.32, 0, 25.32, 6.33], [0, 0, 37.97, 31.65, 25.32, 82.28, 6.33, 31.65, 0, 0], [25.32, 0, 31.65, 31.65, 0, 31.65, 25.32, 0], [12.66, 0, 50.63, 0, 25.32, 31.65, 0, 31.65, 0, 12.66, 12.66, 0], [0, 50.63, 37.97, 0, 56.96, 50.63, 88.61, 63.29, 56.96, 94.94, 0, 50.63], [37.97, 25.32, 0, 75.95, 6.33, 0, 37.97, 25.32], [94.94, 25.32, 113.92, 25.32, 145.57, 69.62, 0, 0, 94.94, 25.32], [37.97, 0, 94.94, 44.3, 94.94, 75.95, 0, 50.63, 37.97, 0]], [[126.58, 0, 126.58, 202.53, 0, 101.27, 126.58, 0], [0, 0, 126.58, 101.27, 0, 202.53, 0, 0], [0, 0, 126.58, 101.27, 0, 101.27, 0, 0], [0, 101.27, 126.58, 0, 126.58, 101.27, 0, 101.27], [0, 0, 126.58, 0, 0, 101.27, 0, 0], [0, 0, 126.58, 0, 126.58, 94.94, 0, 0], [101.27, 75.95, 101.27, 82.28, 0, 0, 101.27, 75.95], [0, 25.32, 31.65, 0, 63.29, 25.32, 0, 25.32], [0, 25.32, 31.65, 0, 63.29, 25.32, 0, 25.32], [0, 25.32, 31.65, 0, 63.29, 25.32, 0, 25.32], [0, 25.32, 31.65, 0, 63.29, 25.32, 6.33, 25.32, 0, 25.32], [0, 0, 63.29, 0, 31.65, 25.32, 0, 0], [0, 0, 63.29, 0, 31.65, 25.32, 0, 0], [31.65, 0, 63.29, 25.32, 0, 25.32, 31.65, 0], [31.65, 0, 63.29, 25.32, 0, 25.32, 31.65, 0], [0, 0, 63.29, 0, 31.65, 25.32, 0, 0], [31.65, 0, 63.29, 25.32, 0, 25.32, 31.65, 0], [0, 0, 63.29, 0, 31.65, 25.32, 0, 0], [0, 0, 63.29, 0, 31.65, 25.32, 0, 0], [63.29, 0, 126.58, 50.63, 0, 50.63, 63.29, 0], [12.66, 0, 12.66, 25.32, 0, 12.66, 12.66, 0], [12.66, 0, 12.66, 25.32, 0, 12.66, 12.66, 0], [12.66, 0, 12.66, 25.32, 0, 12.66, 12.66, 0], [12.66, 0, 12.66, 25.32, 0, 12.66, 12.66, 0], [0, 0, 12.66, 12.66, 0, 25.32, 0, 0], [0, 0, 12.66, 12.66, 0, 25.32, 0, 0], [0, 0, 12.66, 12.66, 0, 25.32, 0, 0], [0, 0, 12.66, 12.66, 0, 25.32, 0, 0], [0, 12.66, 0, 0, 12.66, 0, 0, 12.66], [0, 0, 12.66, 12.66, 0, 25.32, 0, 0], [0, 0, 12.66, 12.66, 0, 25.32, 0, 18.99, 0, 0], [0, 0, 12.66, 12.66, 0, 25.32, 0, 0], [0, 0, 12.66, 12.66, 0, 12.66, 0, 0], [12.66, 12.66, 0, 0, 12.66, 0, 12.66, 12.66], [12.66, 0, 12.66, 25.32, 0, 12.66, 12.66, 0], [12.66, 0, 12.66, 25.32, 0, 12.66, 12.66, 0], [12.66, 0, 12.66, 25.32, 0, 12.66, 12.66, 0], [12.66, 6.33, 12.66, 12.66, 0, 12.66, 12.66, 0, 12.66, 6.33], [37.97, 25.32, 56.96, 0, 107.59, 75.95, 0, 75.95, 37.97, 25.32]], [[0, 50.63, 63.29, 0, 126.58, 50.63, 63.29, 101.27, 0, 50.63], [63.29, 0, 63.29, 50.63, 0, 101.27, 0, 0, 63.29, 0], [63.29, 0, 126.58, 0, 126.58, 50.63, 0, 50.63, 63.29, 0], [12.66, 0, 63.29, 0, 126.58, 50.63, 0, 50.63, 0, 0, 12.66, 0], [126.58, 0, 126.58, 50.63, 63.29, 50.63, 0, 0, 126.58, 0], [0, 0, 63.29, 0, 63.29, 101.27, 0, 101.27, 0, 0], [126.58, 0, 126.58, 50.63, 6.33, 50.63, 0, 44.3, 0, 0, 126.58, 0], [126.58, 50.63, 0, 50.63, 6.33, 0, 126.58, 0, 126.58, 50.63], [0, 50.63, 0, 0, 132.91, 0, 126.58, 50.63, 0, 50.63], [0, 0, 126.58, 0, 126.58, 101.27, 0, 101.27, 0, 0], [120.25, 101.27, 126.58, 101.27, 126.58, 0, 0, 0, 0, 101.27, 120.25, 101.27], [0, 0, 126.58, 0, 126.58, 101.27, 0, 101.27, 0, 0], [126.58, 0, 126.58, 50.63, 63.29, 50.63, 0, 101.27, 0, 0, 126.58, 0], [126.58, 0, 126.58, 50.63, 0, 50.63, 63.29, 0, 126.58, 0], [0, 101.27, 0, 0, 126.58, 0, 126.58, 50.63, 63.29, 50.63, 0, 101.27], [0, 50.63, 63.29, 0, 126.58, 0, 126.58, 50.63, 0, 50.63], [0, 0, 126.58, 0, 126.58, 101.27, 63.29, 101.27, 63.29, 50.63, 0, 0], [0, 0, 63.29, 50.63, 63.29, 101.27, 0, 101.27, 0, 0], [0, 0, 126.58, 0, 126.58, 101.27, 0, 0], [0, 50.63, 0, 0, 126.58, 101.27, 0, 101.27, 0, 50.63], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 6.33, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0]], [[0, 56.96, 0, 50.63, 0, 0, 443.04, 0, 443.04, 56.96, 0, 56.96], [0, 0, 63.29, 0, 63.29, 56.96, 0, 56.96, 0, 0], [37.97, 63.29, 0, 0, 25.32, 0, 37.97, 25.32, 25.32, 25.32, 37.97, 63.29], [0, 0, 50.63, 0, 31.65, 25.32, 56.96, 25.32, 44.3, 50.63, 63.29, 50.63, 37.97, 101.27, 56.96, 101.27, 0, 132.91, 12.66, 101.27, 25.32, 101.27, 37.97, 56.96, 18.99, 50.63, 37.97, 50.63, 0, 25.32, 18.99, 25.32, 0, 0], [0, 0, 272.15, 0, 272.15, 31.65, 0, 31.65, 0, 0], [31.65, 0, 31.65, 120.25, 0, 120.25, 0, 0, 31.65, 0], [272.15, 0, 272.15, 31.65, 0, 31.65, 0, 0, 272.15, 0], [0, 0, 25.32, 0, 25.32, 0, 25.32, 44.3, 0, 44.3, 0, 0], [0, 0, 25.32, 0, 25.32, 31.65, 0, 31.65, 0, 0], [0, 0, 25.32, 0, 25.32, 44.3, 0, 44.3, 0, 0], [0, 0, 215.19, 0, 215.19, 120.25, 0, 120.25, 0, 0], [107.59, 234.18, 88.61, 259.49, 82.28, 189.87, 75.95, 208.86, 37.97, 177.22, 12.66, 202.53, 0, 170.89, 18.99, 113.92, 6.33, 170.89, 25.32, 139.24, 75.95, 158.23, 44.3, 94.94, 94.94, 6.33, 126.58, 31.65, 145.57, 6.33, 189.87, 31.65, 208.86, 0, 253.16, 25.32, 272.15, 6.33, 322.78, 31.65, 360.76, 18.99, 462.03, 56.96, 417.72, 101.27, 474.68, 145.57, 341.77, 316.46, 310.13, 278.48, 284.81, 348.1, 196.2, 316.46, 278.48, 329.11, 107.59, 234.18]], [[0, 31.65, 0, 0, 424.05, 0, 424.05, 31.65, 0, 31.65], [430.38, 31.65, 0, 31.65, 0, 0, 430.38, 0, 430.38, 31.65], [0, 37.97, 0, 0, 430.38, 0, 430.38, 37.97, 0, 37.97], [430.38, 31.65, 0, 31.65, 0, 0, 430.38, 0, 430.38, 31.65], [0, 31.65, 0, 0, 455.7, 0, 455.7, 31.65, 0, 31.65], [0, 0, 82.28, 0, 82.28, 31.65, 0, 31.65, 0, 0], [0, 0, 506.33, 0, 506.33, 37.97, 0, 37.97, 0, 0], [0, 0, 75.95, 0, 75.95, 31.65, 0, 31.65, 0, 0], [506.33, 0, 506.33, 50.63, 0, 50.63, 0, 0, 506.33, 0], [75.95, 0, 75.95, 37.97, 0, 37.97, 0, 0, 75.95, 0], [0, 0, 506.33, 0, 506.33, 44.3, 0, 44.3, 0, 0], [0, 0, 75.95, 0, 75.95, 31.65, 0, 31.65, 0, 0], [506.33, 0, 506.33, 69.62, 0, 69.62, 0, 0, 506.33, 0], [50.63, 0, 50.63, 31.65, 0, 31.65, 0, 0, 50.63, 0], [506.33, 0, 506.33, 37.97, 0, 37.97, 0, 0, 506.33, 0]], [[0, 69.62, 18.99, 6.33, 50.63, 0, 113.92, 107.59, 88.61, 120.25, 37.97, 31.65, 25.32, 75.95, 0, 69.62], [37.97, 0, 37.97, 12.66, 31.65, 12.66, 6.33, 12.66, 6.33, 25.32, 37.97, 25.32, 37.97, 31.65, 0, 31.65, 0, 0, 37.97, 0], [75.95, 0, 113.92, 31.65, 107.59, 50.63, 75.95, 18.99, 75.95, 18.99, 50.63, 31.65, 69.62, 44.3, 69.62, 56.96, 50.63, 37.97, 25.32, 75.95, 0, 69.62, 75.95, 0], [0, 18.99, 6.33, 0, 25.32, 56.96, 56.96, 44.3, 50.63, 25.32, 56.96, 18.99, 107.59, 101.27, 82.28, 113.92, 63.29, 63.29, 18.99, 75.95, 0, 18.99], [44.3, 0, 50.63, 6.33, 44.3, 25.32, 44.3, 25.32, 50.63, 31.65, 56.96, 18.99, 75.95, 25.32, 37.97, 75.95, 25.32, 63.29, 44.3, 44.3, 31.65, 31.65, 12.66, 56.96, 0, 50.63, 44.3, 0], [0, 12.66, 25.32, 0, 75.95, 113.92, 101.27, 126.58, 139.24, 120.25, 189.87, 75.95, 215.19, 120.25, 69.62, 158.23, 0, 12.66], [31.65, 31.65, 0, 37.97, 0, 0, 44.3, 0, 44.3, 94.94, 25.32, 94.94, 31.65, 37.97, 31.65, 31.65], [0, 12.66, 31.65, 25.32, 31.65, 6.33, 44.3, 0, 50.63, 63.29, 31.65, 63.29, 12.66, 31.65, 18.99, 69.62, 0, 75.95, 0, 12.66], [6.33, 6.33, 44.3, 0, 50.63, 31.65, 56.96, 69.62, 18.99, 75.95, 0, 6.33, 6.33, 6.33], [25.32, 0, 63.29, 12.66, 50.63, 50.63, 75.95, 63.29, 56.96, 88.61, 18.99, 63.29, 12.66, 37.97, 0, 31.65, 6.33, 0, 31.65, 6.33, 31.65, 18.99, 18.99, 31.65, 31.65, 44.3, 37.97, 25.32, 50.63, 18.99, 25.32, 0], [12.66, 25.32, 12.66, 12.66, 12.66, 12.66, 6.33, 12.66, 6.33, 6.33, 6.33, 6.33, 6.33, 0, 44.3, 0, 69.62, 12.66, 50.63, 25.32, 50.63, 63.29, 31.65, 44.3, 0, 31.65, 12.66, 25.32], [18.99, 0, 0, 6.33, 31.65, 18.99, 25.32, 31.65, 25.32, 31.65, 44.3, 63.29, 75.95, 69.62, 75.95, 69.62, 101.27, 50.63, 56.96, 56.96, 75.95, 31.65, 18.99, 0], [44.3, 88.61, 6.33, 25.32, 0, 0, 50.63, 82.28, 44.3, 82.28, 44.3, 88.61], [0, 12.66, 0, 6.33, 0, 0, 56.96, 6.33, 31.65, 88.61, 12.66, 88.61, 44.3, 12.66, 6.33, 12.66, 12.66, 25.32, 0, 25.32, 0, 12.66], [12.66, 37.97, 12.66, 25.32, 25.32, 12.66, 31.65, 25.32, 25.32, 25.32, 25.32, 37.97, 31.65, 37.97, 25.32, 69.62, 37.97, 69.62, 37.97, 69.62, 37.97, 31.65, 50.63, 25.32, 44.3, 18.99, 37.97, 25.32, 31.65, 0, 0, 18.99, 12.66, 37.97], [0, 69.62, 18.99, 0, 31.65, 56.96, 25.32, 82.28, 25.32, 82.28, 18.99, 94.94, 0, 88.61, 0, 88.61, 0, 69.62], [50.63, 0, 75.95, 0, 56.96, 12.66, 56.96, 12.66, 0, 18.99, 44.3, 0, 50.63, 0], [0, 0, 82.28, 12.66, 6.33, 25.32, 0, 0], [0, 6.33, 12.66, 12.66, 25.32, 0, 101.27, 189.87, 0, 6.33], [18.99, 0, 18.99, 101.27, 6.33, 88.61, 0, 6.33, 18.99, 0], [31.65, 6.33, 189.87, 0, 183.54, 37.97, 0, 31.65, 37.97, 6.33, 31.65, 6.33], [88.61, 6.33, 56.96, 44.3, 113.92, 6.33, 113.92, 37.97, 75.95, 69.62, 31.65, 63.29, 0, 37.97, 50.63, 12.66, 6.33, 18.99, 75.95, 0, 82.28, 0, 88.61, 6.33], [12.66, 12.66, 6.33, 6.33, 6.33, 6.33, 0, 6.33, 0, 6.33, 6.33, 0, 25.32, 0, 12.66, 12.66], [37.97, 6.33, 0, 63.29, 0, 0, 44.3, 0, 44.3, 0, 31.65, 18.99, 31.65, 18.99, 37.97, 6.33], [0, 0, 82.28, 0, 0, 12.66, 0, 0], [0, 0, 500, 0, 506.33, 0, 506.33, 12.66, 0, 12.66, 0, 0], [0, 0, 126.58, 12.66, 12.66, 18.99, 0, 0], [0, 0, 25.32, 37.97, 0, 25.32, 0, 0]], [[0, 12.66, 12.66, 0, 37.97, 0, 44.3, 12.66, 37.97, 25.32, 12.66, 18.99, 0, 12.66], [44.3, 12.66, 31.65, 18.99, 6.33, 25.32, 0, 12.66, 6.33, 0, 31.65, 0, 44.3, 12.66], [25.32, 0, 50.63, 0, 56.96, 63.29, 69.62, 69.62, 75.95, 82.28, 56.96, 101.27, 18.99, 101.27, 0, 82.28, 6.33, 69.62, 18.99, 63.29, 25.32, 0], [0, 0, 6.33, 6.33, 18.99, 12.66, 37.97, 18.99, 107.59, 25.32, 177.22, 18.99, 177.22, 18.99, 208.86, 6.33, 215.19, 0, 208.86, 25.32, 196.2, 18.99, 177.22, 31.65, 151.9, 31.65, 145.57, 25.32, 126.58, 31.65, 88.61, 31.65, 69.62, 25.32, 63.29, 31.65, 37.97, 31.65, 18.99, 18.99, 6.33, 25.32, 0, 0], [0, 6.33, 12.66, 0, 31.65, 12.66, 18.99, 25.32, 6.33, 25.32, 0, 6.33], [18.99, 0, 31.65, 6.33, 25.32, 25.32, 12.66, 25.32, 0, 12.66, 18.99, 0], [0, 6.33, 6.33, 0, 25.32, 6.33, 18.99, 18.99, 6.33, 18.99, 0, 6.33], [18.99, 0, 25.32, 6.33, 18.99, 18.99, 6.33, 18.99, 0, 6.33, 18.99, 0], [0, 0, 6.33, 18.99, 25.32, 31.65, 94.94, 37.97, 132.91, 37.97, 202.53, 31.65, 221.52, 18.99, 227.85, 0, 227.85, 37.97, 208.86, 50.63, 145.57, 56.96, 113.92, 56.96, 82.28, 56.96, 18.99, 50.63, 0, 37.97, 0, 0], [0, 6.33, 18.99, 0, 37.97, 6.33, 37.97, 18.99, 18.99, 18.99, 0, 6.33], [18.99, 0, 37.97, 6.33, 18.99, 18.99, 0, 18.99, 0, 6.33, 18.99, 0], [0, 0, 25.32, 0, 31.65, 12.66, 25.32, 18.99, 0, 12.66, 0, 0], [0, 12.66, 6.33, 0, 31.65, 0, 31.65, 12.66, 6.33, 18.99, 0, 12.66], [6.33, 0, 12.66, 25.32, 18.99, 44.3, 31.65, 44.3, 44.3, 31.65, 69.62, 31.65, 75.95, 44.3, 88.61, 44.3, 94.94, 31.65, 132.91, 31.65, 139.24, 44.3, 151.9, 44.3, 158.23, 31.65, 183.54, 31.65, 196.2, 44.3, 208.86, 44.3, 215.19, 25.32, 221.52, 0, 227.85, 37.97, 221.52, 56.96, 202.53, 50.63, 183.54, 56.96, 183.54, 69.62, 158.23, 69.62, 158.23, 56.96, 132.91, 56.96, 126.58, 69.62, 132.91, 75.95, 94.94, 75.95, 101.27, 69.62, 94.94, 56.96, 69.62, 56.96, 69.62, 69.62, 44.3, 69.62, 44.3, 56.96, 25.32, 50.63, 6.33, 56.96, 0, 37.97, 6.33, 0], [18.99, 0, 50.63, 0, 69.62, 25.32, 69.62, 56.96, 50.63, 75.95, 18.99, 75.95, 0, 56.96, 0, 25.32, 18.99, 0], [69.62, 25.32, 69.62, 56.96, 50.63, 75.95, 18.99, 75.95, 0, 56.96, 0, 25.32, 18.99, 0, 44.3, 0, 50.63, 0, 50.63, 0, 50.63, 0, 69.62, 25.32], [0, 63.29, 12.66, 18.99, 44.3, 37.97, 63.29, 0, 101.27, 12.66, 88.61, 63.29, 75.95, 37.97, 63.29, 82.28, 50.63, 63.29, 31.65, 88.61, 12.66, 75.95, 25.32, 94.94, 0, 113.92, 0, 63.29], [101.27, 63.29, 101.27, 113.92, 75.95, 94.94, 88.61, 75.95, 69.62, 88.61, 50.63, 63.29, 37.97, 82.28, 25.32, 37.97, 12.66, 63.29, 0, 12.66, 37.97, 0, 56.96, 37.97, 88.61, 18.99, 101.27, 63.29], [0, 25.32, 0, 6.33, 12.66, 18.99, 37.97, 0, 56.96, 25.32, 94.94, 12.66, 94.94, 37.97, 82.28, 75.95, 63.29, 44.3, 50.63, 88.61, 31.65, 56.96, 25.32, 88.61, 6.33, 37.97, 0, 25.32], [94.94, 6.33, 94.94, 25.32, 88.61, 37.97, 75.95, 88.61, 63.29, 56.96, 50.63, 88.61, 37.97, 44.3, 18.99, 75.95, 0, 37.97, 0, 12.66, 37.97, 25.32, 56.96, 0, 82.28, 18.99, 94.94, 6.33], [0, 6.33, 12.66, 0, 37.97, 107.59, 75.95, 158.23, 75.95, 189.87, 25.32, 113.92, 12.66, 69.62, 0, 6.33], [75.95, 6.33, 50.63, 113.92, 0, 189.87, 0, 158.23, 37.97, 107.59, 63.29, 0, 75.95, 6.33], [31.65, 0, 37.97, 18.99, 0, 69.62, 0, 18.99, 12.66, 18.99, 31.65, 0], [6.33, 0, 25.32, 18.99, 37.97, 18.99, 37.97, 69.62, 0, 18.99, 0, 12.66, 6.33, 0], [31.65, 0, 69.62, 6.33, 88.61, 25.32, 107.59, 25.32, 107.59, 82.28, 75.95, 75.95, 44.3, 75.95, 0, 56.96, 12.66, 50.63, 31.65, 31.65, 31.65, 0], [37.97, 6.33, 75.95, 0, 75.95, 31.65, 94.94, 50.63, 107.59, 56.96, 69.62, 75.95, 37.97, 75.95, 0, 82.28, 0, 25.32, 18.99, 25.32, 37.97, 6.33], [0, 75.95, 0, 18.99, 12.66, 0, 31.65, 25.32, 50.63, 12.66, 37.97, 31.65, 50.63, 44.3, 25.32, 151.9, 18.99, 132.91, 18.99, 101.27, 0, 75.95], [50.63, 18.99, 50.63, 75.95, 31.65, 101.27, 31.65, 132.91, 25.32, 151.9, 0, 44.3, 12.66, 31.65, 0, 12.66, 18.99, 25.32, 37.97, 0, 50.63, 18.99], [0, 0, 56.96, 0, 50.63, 12.66, 56.96, 25.32, 82.28, 50.63, 63.29, 75.95, 25.32, 82.28, 18.99, 69.62, 6.33, 63.29, 0, 0], [25.32, 0, 82.28, 0, 75.95, 63.29, 63.29, 69.62, 56.96, 82.28, 18.99, 75.95, 0, 50.63, 25.32, 25.32, 31.65, 12.66, 25.32, 0], [0, 0, 31.65, 6.33, 18.99, 18.99, 31.65, 25.32, 50.63, 31.65, 56.96, 31.65, 31.65, 56.96, 0, 56.96, 0, 0], [0, 31.65, 25.32, 25.32, 37.97, 18.99, 25.32, 6.33, 56.96, 0, 56.96, 56.96, 50.63, 56.96, 25.32, 56.96, 0, 31.65], [18.99, 18.99, 31.65, 18.99, 44.3, 0, 56.96, 37.97, 25.32, 44.3, 0, 44.3, 6.33, 18.99, 18.99, 18.99], [12.66, 0, 25.32, 44.3, 0, 44.3, 12.66, 0], [0, 44.3, 12.66, 0, 31.65, 44.3, 0, 44.3], [25.32, 18.99, 56.96, 18.99, 56.96, 44.3, 31.65, 44.3, 0, 37.97, 12.66, 0, 25.32, 18.99], [6.33, 18.99, 25.32, 44.3, 37.97, 0, 56.96, 31.65, 69.62, 0, 88.61, 31.65, 107.59, 6.33, 120.25, 44.3, 132.91, 18.99, 145.57, 44.3, 139.24, 69.62, 0, 69.62, 0, 44.3, 6.33, 18.99], [367.09, 335.44, 417.72, 259.49, 443.04, 151.9, 443.04, 101.27, 430.38, 56.96, 398.73, 75.95, 379.75, 37.97, 341.77, 50.63, 348.1, 37.97, 348.1, 18.99, 335.44, 31.65, 310.13, 12.66, 291.14, 37.97, 253.16, 25.32, 215.19, 37.97, 196.2, 12.66, 170.89, 31.65, 158.23, 18.99, 158.23, 37.97, 164.56, 50.63, 126.58, 37.97, 107.59, 75.95, 75.95, 56.96, 63.29, 101.27, 63.29, 151.9, 88.61, 259.49, 139.24, 335.44, 0, 354.43, 0, 0, 506.33, 0, 506.33, 354.43, 367.09, 335.44]], [[0, 31.65, 0, 0, 63.29, 0, 0, 31.65], [0, 31.65, 63.29, 0, 63.29, 31.65, 0, 31.65], [0, 0, 63.29, 0, 63.29, 31.65, 0, 0], [0, 0, 63.29, 31.65, 56.96, 31.65, 0, 31.65, 0, 0], [0, 31.65, 0, 0, 63.29, 0, 0, 31.65], [0, 31.65, 63.29, 0, 63.29, 31.65, 0, 31.65], [0, 0, 63.29, 0, 63.29, 31.65, 0, 0], [0, 0, 63.29, 31.65, 0, 31.65, 0, 0], [0, 0, 126.58, 0, 126.58, 31.65, 0, 0], [126.58, 0, 0, 31.65, 0, 0, 126.58, 0], [6.33, 31.65, 0, 31.65, 126.58, 0, 126.58, 31.65, 6.33, 31.65], [0, 0, 126.58, 31.65, 0, 31.65, 0, 0], [0, 0, 63.29, 0, 63.29, 12.66, 126.58, 31.65, 0, 31.65, 0, 0], [126.58, 0, 126.58, 31.65, 0, 31.65, 63.29, 12.66, 63.29, 0, 126.58, 0], [18.99, 0, 18.99, 6.33, 31.65, 18.99, 0, 18.99, 18.99, 0], [12.66, 0, 31.65, 18.99, 0, 18.99, 12.66, 6.33, 12.66, 0], [0, 0, 107.59, 0, 107.59, 18.99, 56.96, 6.33, 12.66, 18.99, 0, 6.33, 0, 0], [6.33, 0, 107.59, 0, 107.59, 6.33, 94.94, 18.99, 50.63, 6.33, 0, 18.99, 0, 0, 6.33, 0], [0, 0, 379.75, 0, 379.75, 12.66, 316.46, 31.65, 297.47, 12.66, 75.95, 12.66, 75.95, 18.99, 63.29, 31.65, 0, 12.66, 0, 0], [0, 0, 6.33, 0, 0, 6.33, 0, 0], [0, 0, 63.29, 25.32, 0, 25.32, 0, 0], [63.29, 0, 126.58, 0, 63.29, 25.32, 0, 0, 63.29, 0], [63.29, 0, 63.29, 25.32, 0, 25.32, 63.29, 0], [63.29, 0, 63.29, 25.32, 0, 25.32, 63.29, 0], [126.58, 0, 63.29, 25.32, 0, 0, 126.58, 0], [0, 0, 63.29, 25.32, 0, 25.32, 0, 0], [0, 6.33, 0, 0, 126.58, 0, 189.87, 25.32, 253.16, 6.33, 253.16, 31.65, 126.58, 31.65, 126.58, 6.33, 63.29, 31.65, 0, 6.33], [0, 0, 63.29, 25.32, 0, 25.32, 0, 18.99, 0, 0], [56.96, 18.99, 63.29, 25.32, 0, 25.32, 63.29, 0, 63.29, 18.99, 56.96, 18.99], [6.33, 0, 126.58, 0, 126.58, 6.33, 63.29, 25.32, 0, 0, 6.33, 0], [0, 0, 126.58, 0, 126.58, 6.33, 0, 6.33, 0, 0], [0, 0, 126.58, 0, 126.58, 6.33, 0, 6.33, 0, 0], [0, 0, 63.29, 0, 0, 56.96, 0, 0], [0, 6.33, 63.29, 0, 63.29, 63.29, 0, 6.33], [0, 0, 126.58, 6.33, 126.58, 63.29, 0, 63.29, 0, 0], [63.29, 0, 126.58, 56.96, 0, 56.96, 63.29, 0], [0, 6.33, 126.58, 0, 126.58, 63.29, 0, 63.29, 0, 6.33], [0, 0, 63.29, 6.33, 0, 63.29, 0, 0], [63.29, 0, 126.58, 56.96, 0, 56.96, 63.29, 0], [63.29, 0, 63.29, 56.96, 0, 0, 63.29, 0], [0, 25.32, 0, 0, 506.33, 0, 506.33, 25.32, 443.04, 25.32, 379.75, 18.99, 253.16, 25.32, 126.58, 18.99, 63.29, 25.32, 0, 25.32], [0, 0, 189.87, 0, 69.62, 101.27, 0, 101.27, 0, 0], [88.61, 0, 303.8, 0, 360.76, 69.62, 0, 69.62, 88.61, 0], [208.86, 0, 215.19, 31.65, 0, 31.65, 31.65, 0, 208.86, 0], [0, 0, 56.96, 0, 107.59, 101.27, 63.29, 101.27, 6.33, 31.65, 0, 0], [0, 0, 82.28, 0, 82.28, 101.27, 50.63, 101.27, 0, 0], [0, 0, 170.89, 0, 253.16, 69.62, 335.44, 0, 506.33, 0, 506.33, 75.95, 0, 75.95, 0, 0], [0, 0, 75.95, 0, 37.97, 37.97, 0, 0], [0, 25.32, 37.97, 0, 44.3, 0, 12.66, 25.32, 0, 25.32], [37.97, 25.32, 25.32, 25.32, 0, 0, 6.33, 0, 37.97, 25.32], [0, 0, 126.58, 0, 88.61, 25.32, 31.65, 25.32, 0, 0]], [[0, 0, 63.29, 0, 63.29, 25.32, 0, 25.32, 0, 0], [0, 0, 63.29, 0, 63.29, 25.32, 0, 25.32, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 31.65, 25.32, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 31.65, 25.32, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 31.65, 25.32, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 31.65, 25.32, 0, 50.63, 0, 0], [0, 0, 25.32, 25.32, 0, 50.63, 0, 6.33, 0, 0], [63.29, 0, 44.3, 25.32, 25.32, 25.32, 0, 0, 63.29, 0], [63.29, 25.32, 0, 25.32, 25.32, 0, 44.3, 0, 63.29, 25.32], [0, 0, 25.32, 25.32, 0, 50.63, 0, 0], [0, 25.32, 18.99, 0, 18.99, 50.63, 0, 25.32], [44.3, 0, 63.29, 25.32, 0, 25.32, 25.32, 0, 44.3, 0], [0, 101.27, 0, 0, 31.65, 0, 31.65, 50.63, 0, 101.27], [31.65, 101.27, 0, 50.63, 0, 0, 31.65, 0, 31.65, 101.27], [0, 0, 50.63, 0, 50.63, 25.32, 18.99, 50.63, 0, 101.27, 0, 0], [0, 0, 44.3, 0, 44.3, 101.27, 0, 101.27, 0, 0], [0, 0, 44.3, 0, 44.3, 101.27, 0, 101.27, 0, 0], [0, 0, 63.29, 0, 63.29, 101.27, 0, 101.27, 0, 0], [0, 0, 63.29, 0, 63.29, 101.27, 0, 101.27, 0, 0], [18.99, 50.63, 0, 50.63, 0, 0, 18.99, 0, 18.99, 50.63], [0, 0, 18.99, 0, 18.99, 50.63, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 101.27, 0, 0], [0, 0, 63.29, 0, 63.29, 101.27, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 107.59, 50.63, 44.3, 50.63, 0, 0], [44.3, 0, 107.59, 0, 63.29, 50.63, 0, 50.63, 44.3, 0], [0, 0, 88.61, 0, 44.3, 50.63, 0, 0], [0, 0, 82.28, 50.63, 0, 50.63, 0, 0], [6.33, 44.3, 82.28, 0, 82.28, 50.63, 0, 50.63, 6.33, 44.3], [0, 0, 120.25, 0, 107.59, 12.66, 18.99, 12.66, 0, 0], [0, 0, 240.51, 0, 177.22, 37.97, 56.96, 37.97, 0, 0], [0, 0, 44.3, 0, 44.3, 101.27, 0, 0], [0, 0, 44.3, 0, 0, 101.27, 0, 0], [63.29, 0, 63.29, 6.33, 63.29, 50.63, 0, 50.63, 63.29, 0], [0, 0, 63.29, 50.63, 0, 50.63, 0, 0], [0, 50.63, 0, 0, 63.29, 0, 0, 50.63], [0, 0, 63.29, 0, 63.29, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 75.95, 0, 0], [0, 0, 63.29, 0, 0, 75.95, 0, 0], [37.97, 69.62, 37.97, 75.95, 0, 75.95, 44.3, 0, 44.3, 75.95, 37.97, 69.62], [6.33, 69.62, 0, 75.95, 0, 0, 44.3, 75.95, 6.33, 75.95, 6.33, 69.62], [0, 0, 18.99, 0, 18.99, 25.32, 0, 25.32, 0, 0], [18.99, 0, 18.99, 25.32, 0, 25.32, 0, 0, 18.99, 0], [0, 0, 18.99, 0, 18.99, 126.58, 0, 126.58, 0, 0], [0, 0, 18.99, 0, 18.99, 126.58, 0, 126.58, 0, 0], [0, 0, 18.99, 0, 18.99, 50.63, 0, 50.63, 0, 0], [0, 0, 18.99, 0, 18.99, 50.63, 0, 50.63, 0, 0], [0, 0, 18.99, 0, 18.99, 50.63, 0, 50.63, 0, 0], [0, 0, 18.99, 0, 18.99, 50.63, 0, 50.63, 0, 0], [0, 0, 107.59, 0, 107.59, 25.32, 0, 25.32, 0, 0], [107.59, 0, 107.59, 25.32, 0, 25.32, 0, 0, 107.59, 0], [0, 0, 18.99, 0, 18.99, 25.32, 0, 25.32, 0, 0], [0, 0, 18.99, 0, 18.99, 25.32, 0, 25.32, 0, 0], [0, 0, 44.3, 0, 44.3, 6.33, 44.3, 25.32, 0, 25.32, 0, 0], [44.3, 25.32, 0, 25.32, 0, 0, 6.33, 0, 12.66, 0, 44.3, 0, 44.3, 25.32], [0, 0, 37.97, 0, 37.97, 25.32, 0, 25.32, 0, 0]], [[0, 0, 253.16, 0, 253.16, 50.63, 0, 0], [253.16, 0, 227.85, 6.33, 0, 50.63, 0, 0, 253.16, 0], [126.58, 6.33, 0, 6.33, 0, 0, 253.16, 0, 253.16, 6.33, 126.58, 6.33], [0, 0, 126.58, 0, 0, 101.27, 0, 6.33, 0, 0], [0, 101.27, 126.58, 0, 126.58, 101.27, 0, 101.27], [0, 0, 126.58, 0, 126.58, 101.27, 0, 0], [0, 0, 126.58, 101.27, 0, 101.27, 0, 0], [0, 0, 253.16, 0, 253.16, 6.33, 0, 6.33, 0, 0], [0, 0, 253.16, 0, 253.16, 6.33, 0, 6.33, 0, 0], [0, 0, 253.16, 0, 253.16, 6.33, 0, 6.33, 0, 0], [0, 0, 253.16, 0, 253.16, 6.33, 0, 6.33, 0, 0], [0, 0, 253.16, 0, 253.16, 6.33, 0, 6.33, 0, 0], [0, 0, 253.16, 0, 253.16, 6.33, 0, 6.33, 0, 0], [215.19, 0, 253.16, 0, 253.16, 6.33, 0, 6.33, 0, 0, 215.19, 0], [0, 0, 253.16, 0, 253.16, 6.33, 0, 6.33, 0, 0], [0, 0, 253.16, 0, 253.16, 6.33, 0, 6.33, 0, 0], [0, 0, 253.16, 0, 253.16, 6.33, 0, 6.33, 0, 0], [246.84, 0, 253.16, 0, 253.16, 6.33, 0, 6.33, 0, 0, 246.84, 0], [132.91, 0, 253.16, 0, 253.16, 6.33, 0, 6.33, 0, 0, 132.91, 0], [126.58, 0, 253.16, 0, 253.16, 6.33, 0, 6.33, 0, 0, 126.58, 0], [0, 0, 253.16, 0, 253.16, 6.33, 0, 6.33, 0, 6.33, 0, 0], [246.84, 0, 253.16, 0, 253.16, 6.33, 0, 6.33, 0, 0, 246.84, 0], [0, 0, 253.16, 0, 253.16, 6.33, 0, 6.33, 0, 0], [253.16, 0, 253.16, 6.33, 0, 6.33, 0, 0, 253.16, 0], [253.16, 0, 253.16, 6.33, 0, 6.33, 0, 0, 253.16, 0], [44.3, 94.94, 31.65, 56.96, 0, 44.3, 31.65, 31.65, 44.3, 0, 44.3, 88.61, 44.3, 94.94], [0, 0, 12.66, 31.65, 37.97, 44.3, 12.66, 56.96, 0, 94.94, 0, 0], [37.97, 0, 126.58, 82.28, 0, 50.63, 12.66, 12.66, 37.97, 0], [37.97, 101.27, 12.66, 88.61, 0, 56.96, 126.58, 0, 37.97, 101.27], [0, 0, 126.58, 56.96, 113.92, 88.61, 82.28, 101.27, 0, 0], [126.58, 50.63, 0, 82.28, 82.28, 0, 113.92, 12.66, 126.58, 50.63], [44.3, 50.63, 0, 88.61, 0, 0, 44.3, 50.63], [37.97, 0, 37.97, 94.94, 0, 50.63, 37.97, 0], [0, 101.27, 126.58, 0, 126.58, 101.27, 0, 101.27], [0, 0, 126.58, 0, 126.58, 6.33, 126.58, 101.27, 0, 0], [120.25, 101.27, 0, 101.27, 0, 0, 126.58, 101.27, 120.25, 101.27], [0, 6.33, 0, 0, 126.58, 0, 0, 101.27, 0, 6.33]], [[0, 0, 63.29, 0, 31.65, 50.63, 126.58, 50.63, 253.16, 101.27, 126.58, 101.27, 0, 202.53, 0, 0], [0, 101.27, 126.58, 0, 126.58, 101.27, 0, 151.9, 0, 101.27], [75.95, 56.96, 0, 101.27, 6.33, 0, 126.58, 0, 75.95, 56.96], [126.58, 50.63, 0, 0, 56.96, 0, 126.58, 50.63], [37.97, 0, 101.27, 50.63, 0, 50.63, 37.97, 0], [0, 101.27, 63.29, 69.62, 0, 50.63, 126.58, 0, 151.9, 101.27, 0, 101.27], [0, 0, 63.29, 18.99, 0, 50.63, 0, 0], [31.65, 0, 31.65, 31.65, 0, 31.65, 0, 0, 31.65, 0], [37.97, 0, 37.97, 25.32, 0, 25.32, 6.33, 0, 37.97, 0], [0, 240.51, 158.23, 0, 183.54, 221.52, 145.57, 75.95, 113.92, 88.61, 126.58, 177.22, 0, 240.51], [69.62, 145.57, 37.97, 56.96, 12.66, 101.27, 0, 12.66, 31.65, 0, 69.62, 145.57], [0, 107.59, 126.58, 44.3, 151.9, 0, 183.54, 88.61, 151.9, 37.97, 158.23, 113.92, 208.86, 101.27, 189.87, 139.24, 132.91, 126.58, 139.24, 107.59, 132.91, 82.28, 113.92, 63.29, 94.94, 75.95, 88.61, 101.27, 69.62, 126.58, 44.3, 126.58, 31.65, 94.94, 0, 107.59], [0, 63.29, 18.99, 37.97, 25.32, 12.66, 44.3, 0, 56.96, 12.66, 63.29, 18.99, 69.62, 44.3, 63.29, 63.29, 0, 63.29], [0, 0, 37.97, 0, 37.97, 25.32, 0, 25.32, 0, 0], [0, 0, 50.63, 0, 50.63, 31.65, 0, 0], [0, 0, 31.65, 37.97, 0, 37.97, 0, 0], [31.65, 75.95, 6.33, 37.97, 37.97, 37.97, 37.97, 12.66, 0, 12.66, 0, 0, 63.29, 0, 63.29, 44.3, 31.65, 75.95], [0, 31.65, 0, 0, 50.63, 31.65, 0, 31.65], [0, 0, 158.23, 0, 158.23, 12.66, 0, 12.66, 0, 0], [0, 50.63, 0, 12.66, 31.65, 0, 44.3, 31.65, 132.91, 31.65, 132.91, 50.63, 56.96, 69.62, 0, 50.63], [0, 44.3, 0, 12.66, 107.59, 12.66, 107.59, 0, 164.56, 18.99, 0, 44.3], [0, 18.99, 0, 0, 56.96, 12.66, 101.27, 18.99, 0, 18.99], [18.99, 0, 82.28, 31.65, 69.62, 63.29, 69.62, 44.3, 37.97, 44.3, 0, 37.97, 18.99, 0], [31.65, 50.63, 69.62, 6.33, 56.96, 63.29, 6.33, 75.95, 0, 0, 31.65, 50.63], [0, 0, 12.66, 94.94, 50.63, 151.9, 18.99, 189.87, 0, 0], [44.3, 75.95, 0, 18.99, 37.97, 0, 44.3, 44.3, 44.3, 75.95], [0, 56.96, 12.66, 0, 75.95, 69.62, 63.29, 88.61, 0, 56.96], [0, 0, 25.32, 0, 56.96, 69.62, 0, 0], [31.65, 0, 31.65, 63.29, 0, 0, 31.65, 0], [0, 0, 63.29, 0, 63.29, 75.95, 31.65, 75.95, 31.65, 69.62, 31.65, 44.3, 0, 44.3, 0, 0], [0, 0, 151.9, 0, 107.59, 50.63, 56.96, 50.63, 0, 0], [44.3, 0, 177.22, 0, 120.25, 50.63, 0, 50.63, 44.3, 0], [0, 0, 25.32, 0, 25.32, 25.32, 0, 25.32, 0, 0], [0, 0, 56.96, 0, 31.65, 44.3, 0, 0], [0, 50.63, 0, 0, 31.65, 0, 0, 50.63], [0, 50.63, 31.65, 0, 31.65, 56.96, 0, 56.96, 0, 50.63], [0, 6.33, 0, 0, 56.96, 75.95, 44.3, 101.27, 18.99, 113.92, 12.66, 82.28, 18.99, 69.62, 12.66, 75.95, 0, 6.33], [18.99, 0, 88.61, 69.62, 88.61, 94.94, 56.96, 94.94, 0, 25.32, 18.99, 25.32, 18.99, 0], [0, 0, 31.65, 0, 31.65, 6.33, 0, 6.33, 0, 0], [101.27, 63.29, 101.27, 69.62, 69.62, 69.62, 0, 0, 44.3, 0, 75.95, 44.3, 101.27, 0, 101.27, 63.29], [0, 0, 12.66, 18.99, 94.94, 63.29, 94.94, 101.27, 25.32, 101.27, 25.32, 94.94, 0, 0], [0, 44.3, 75.95, 0, 107.59, 0, 12.66, 63.29, 0, 44.3], [0, 63.29, 88.61, 0, 139.24, 6.33, 75.95, 107.59, 0, 63.29], [25.32, 0, 44.3, 0, 44.3, 18.99, 0, 18.99, 25.32, 0], [0, 0, 113.92, 0, 63.29, 50.63, 0, 0], [25.32, 0, 69.62, 0, 0, 75.95, 25.32, 0], [126.58, 0, 107.59, 69.62, 82.28, 132.91, 31.65, 126.58, 0, 126.58, 126.58, 0], [25.32, 75.95, 94.94, 0, 0, 139.24, 25.32, 75.95], [0, 50.63, 12.66, 18.99, 25.32, 0, 25.32, 44.3, 0, 50.63]], [[126.58, 101.27, 0, 0, 253.16, 0, 126.58, 101.27], [0, 0, 63.29, 50.63, 0, 50.63, 0, 0], [63.29, 50.63, 0, 50.63, 63.29, 0, 63.29, 50.63], [6.33, 50.63, 63.29, 0, 63.29, 101.27, 0, 50.63, 6.33, 50.63], [0, 0, 63.29, 50.63, 0, 101.27, 0, 0], [0, 0, 63.29, 50.63, 0, 101.27, 0, 0], [63.29, 0, 63.29, 101.27, 0, 50.63, 63.29, 0], [0, 0, 63.29, 50.63, 0, 101.27, 0, 0], [63.29, 0, 63.29, 101.27, 0, 50.63, 63.29, 0], [0, 0, 31.65, 0, 0, 50.63, 0, 0], [31.65, 0, 31.65, 50.63, 0, 0, 31.65, 0], [0, 0, 31.65, 0, 0, 50.63, 0, 0], [31.65, 0, 31.65, 50.63, 0, 0, 31.65, 0], [0, 0, 25.32, 0, 25.32, 50.63, 18.99, 50.63, 0, 50.63, 0, 0], [0, 0, 25.32, 0, 25.32, 50.63, 0, 50.63, 0, 0], [0, 25.32, 0, 0, 31.65, 0, 31.65, 25.32, 0, 25.32], [0, 0, 31.65, 0, 31.65, 25.32, 0, 25.32, 0, 0], [0, 0, 63.29, 50.63, 0, 50.63, 0, 0], [63.29, 0, 63.29, 50.63, 0, 50.63, 63.29, 0], [50.63, 0, 50.63, 37.97, 0, 37.97, 50.63, 0], [0, 0, 50.63, 37.97, 6.33, 37.97, 0, 0], [0, 37.97, 0, 0, 25.32, 0, 25.32, 37.97, 0, 37.97], [0, 6.33, 0, 0, 63.29, 63.29, 12.66, 63.29, 12.66, 25.32, 0, 25.32, 0, 18.99, 0, 6.33], [12.66, 50.63, 75.95, 0, 75.95, 25.32, 63.29, 25.32, 63.29, 63.29, 0, 63.29, 12.66, 50.63], [6.33, 0, 69.62, 0, 69.62, 50.63, 44.3, 50.63, 44.3, 25.32, 0, 25.32, 6.33, 0], [0, 50.63, 0, 0, 63.29, 0, 63.29, 25.32, 63.29, 25.32, 25.32, 25.32, 31.65, 50.63, 0, 50.63], [0, 0, 6.33, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 50.63, 50.63, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 0], [0, 0, 63.29, 0, 0, 50.63, 0, 0], [0, 0, 25.32, 0, 25.32, 6.33, 25.32, 6.33, 25.32, 50.63, 0, 50.63, 0, 0], [0, 0, 25.32, 6.33, 25.32, 50.63, 0, 50.63, 0, 0], [31.65, 0, 31.65, 6.33, 31.65, 50.63, 0, 0, 31.65, 0], [31.65, 0, 0, 50.63, 0, 0, 31.65, 0], [0, 25.32, 0, 0, 31.65, 0, 31.65, 25.32, 0, 25.32], [31.65, 0, 31.65, 25.32, 0, 25.32, 0, 0, 31.65, 0], [31.65, 0, 0, 50.63, 0, 6.33, 31.65, 0], [0, 0, 31.65, 0, 31.65, 50.63, 0, 0]], [[0, 0, 506.33, 0, 443.04, 37.97, 63.29, 37.97, 0, 0], [0, 0, 63.29, 37.97, 63.29, 253.16, 0, 291.14, 0, 6.33, 0, 0], [63.29, 0, 63.29, 291.14, 0, 253.16, 0, 37.97, 63.29, 0], [12.66, 0, 25.32, 12.66, 12.66, 25.32, 0, 12.66, 12.66, 0], [25.32, 12.66, 12.66, 25.32, 0, 12.66, 12.66, 0, 25.32, 12.66], [0, 0, 25.32, 0, 25.32, 50.63, 0, 50.63, 0, 0], [0, 0, 18.99, 0, 18.99, 31.65, 0, 31.65, 0, 0], [44.3, 6.33, 50.63, 0, 69.62, 12.66, 82.28, 25.32, 63.29, 37.97, 25.32, 18.99, 12.66, 31.65, 37.97, 44.3, 82.28, 56.96, 56.96, 82.28, 18.99, 69.62, 0, 25.32, 12.66, 6.33, 44.3, 6.33], [18.99, 12.66, 37.97, 0, 44.3, 12.66, 37.97, 18.99, 50.63, 25.32, 50.63, 37.97, 37.97, 37.97, 37.97, 50.63, 31.65, 50.63, 25.32, 44.3, 12.66, 44.3, 12.66, 50.63, 0, 50.63, 0, 44.3, 0, 37.97, 12.66, 31.65, 18.99, 37.97, 31.65, 25.32, 18.99, 12.66], [31.65, 6.33, 18.99, 12.66, 12.66, 12.66, 6.33, 12.66, 0, 6.33, 0, 0, 12.66, 0, 18.99, 6.33, 31.65, 6.33], [18.99, 12.66, 25.32, 12.66, 37.97, 6.33, 18.99, 18.99, 6.33, 31.65, 0, 25.32, 6.33, 18.99, 12.66, 18.99, 12.66, 12.66, 6.33, 12.66, 0, 6.33, 0, 0, 6.33, 0, 6.33, 6.33, 18.99, 12.66], [31.65, 56.96, 12.66, 50.63, 18.99, 37.97, 0, 25.32, 18.99, 12.66, 31.65, 0, 31.65, 6.33, 37.97, 12.66, 44.3, 12.66, 44.3, 18.99, 37.97, 18.99, 31.65, 25.32, 44.3, 37.97, 31.65, 44.3, 31.65, 56.96], [0, 0, 6.33, 0, 6.33, 18.99, 0, 0], [0, 0, 6.33, 0, 6.33, 6.33, 0, 0], [6.33, 0, 0, 6.33, 0, 0, 6.33, 0], [31.65, 0, 31.65, 12.66, 25.32, 25.32, 18.99, 31.65, 31.65, 44.3, 44.3, 31.65, 31.65, 18.99, 37.97, 6.33, 75.95, 31.65, 25.32, 82.28, 0, 31.65, 31.65, 0], [6.33, 0, 12.66, 6.33, 6.33, 18.99, 0, 25.32, 6.33, 12.66, 6.33, 6.33, 6.33, 0], [126.58, 145.57, 94.94, 151.9, 75.95, 139.24, 37.97, 145.57, 0, 151.9, 12.66, 113.92, 50.63, 63.29, 25.32, 12.66, 69.62, 0, 69.62, 18.99, 63.29, 18.99, 69.62, 31.65, 69.62, 107.59, 126.58, 145.57], [69.62, 6.33, 69.62, 37.97, 12.66, 18.99, 0, 12.66, 12.66, 0, 50.63, 18.99, 69.62, 6.33], [18.99, 31.65, 0, 31.65, 0, 0, 50.63, 0, 56.96, 18.99, 88.61, 25.32, 113.92, 44.3, 18.99, 37.97, 18.99, 31.65], [44.3, 25.32, 6.33, 18.99, 0, 0, 6.33, 12.66, 44.3, 25.32], [31.65, 0, 56.96, 12.66, 37.97, 37.97, 25.32, 75.95, 0, 56.96, 6.33, 56.96, 31.65, 31.65, 31.65, 0], [0, 25.32, 37.97, 0, 69.62, 25.32, 56.96, 44.3, 69.62, 75.95, 0, 75.95, 0, 25.32], [0, 56.96, 44.3, 6.33, 50.63, 6.33, 69.62, 6.33, 69.62, 0, 82.28, 0, 94.94, 6.33, 88.61, 6.33, 94.94, 18.99, 88.61, 63.29, 69.62, 75.95, 63.29, 82.28, 31.65, 82.28, 0, 56.96], [25.32, 0, 69.62, 0, 50.63, 6.33, 75.95, 56.96, 56.96, 82.28, 44.3, 75.95, 25.32, 63.29, 0, 44.3, 18.99, 31.65, 25.32, 0], [12.66, 37.97, 69.62, 0, 75.95, 0, 75.95, 101.27, 50.63, 107.59, 6.33, 107.59, 6.33, 94.94, 0, 82.28, 6.33, 82.28, 6.33, 69.62, 18.99, 69.62, 18.99, 56.96, 6.33, 50.63, 12.66, 44.3, 12.66, 37.97], [82.28, 0, 88.61, 6.33, 82.28, 6.33, 25.32, 44.3, 25.32, 50.63, 18.99, 37.97, 6.33, 37.97, 0, 31.65, 0, 0, 82.28, 0], [94.94, 0, 101.27, 0, 101.27, 31.65, 82.28, 31.65, 50.63, 56.96, 0, 56.96, 0, 0, 94.94, 0], [0, 0, 101.27, 0, 101.27, 56.96, 44.3, 63.29, 0, 31.65, 0, 0], [12.66, 0, 50.63, 0, 69.62, 12.66, 63.29, 25.32, 75.95, 31.65, 69.62, 31.65, 44.3, 56.96, 0, 31.65, 12.66, 0], [0, 0, 44.3, 25.32, 69.62, 0, 25.32, 50.63, 6.33, 63.29, 0, 0], [50.63, 6.33, 50.63, 25.32, 0, 82.28, 37.97, 6.33, 50.63, 0, 44.3, 6.33, 50.63, 6.33], [0, 0, 88.61, 0, 88.61, 31.65, 56.96, 63.29, 0, 63.29, 0, 0], [0, 88.61, 0, 0, 56.96, 0, 82.28, 50.63, 0, 88.61], [50.63, 82.28, 56.96, 94.94, 37.97, 107.59, 12.66, 107.59, 0, 101.27, 25.32, 69.62, 25.32, 50.63, 18.99, 50.63, 25.32, 44.3, 25.32, 6.33, 56.96, 0, 63.29, 0, 56.96, 6.33, 56.96, 12.66, 50.63, 31.65, 50.63, 82.28], [0, 31.65, 31.65, 0, 63.29, 0, 63.29, 31.65, 44.3, 44.3, 37.97, 69.62, 0, 31.65], [0, 18.99, 18.99, 0, 56.96, 37.97, 31.65, 88.61, 0, 18.99], [88.61, 18.99, 0, 101.27, 0, 37.97, 82.28, 0, 88.61, 18.99], [0, 63.29, 69.62, 0, 63.29, 6.33, 56.96, 18.99, 25.32, 56.96, 63.29, 31.65, 69.62, 50.63, 50.63, 82.28, 56.96, 94.94, 18.99, 113.92, 0, 101.27, 0, 63.29], [0, 18.99, 50.63, 6.33, 75.95, 37.97, 120.25, 0, 126.58, 0, 126.58, 31.65, 88.61, 44.3, 50.63, 50.63, 6.33, 31.65, 0, 18.99], [0, 50.63, 0, 25.32, 12.66, 6.33, 18.99, 12.66, 25.32, 18.99, 44.3, 0, 50.63, 25.32, 18.99, 44.3, 6.33, 44.3, 6.33, 50.63, 0, 50.63], [63.29, 56.96, 69.62, 56.96, 75.95, 56.96, 31.65, 94.94, 6.33, 63.29, 0, 63.29, 6.33, 56.96, 12.66, 56.96, 44.3, 37.97, 37.97, 12.66, 18.99, 31.65, 18.99, 25.32, 44.3, 0, 56.96, 6.33, 56.96, 56.96, 63.29, 56.96], [63.29, 0, 82.28, 37.97, 88.61, 50.63, 88.61, 56.96, 75.95, 44.3, 63.29, 63.29, 63.29, 88.61, 25.32, 101.27, 44.3, 69.62, 37.97, 50.63, 31.65, 50.63, 0, 75.95, 31.65, 37.97, 37.97, 25.32, 63.29, 0]], [[0, 0, 31.65, 25.32, 63.29, 0, 63.29, 25.32, 31.65, 50.63, 0, 25.32, 0, 0], [0, 0, 31.65, 25.32, 63.29, 0, 63.29, 25.32, 31.65, 50.63, 0, 25.32, 0, 0], [0, 0, 31.65, 25.32, 63.29, 0, 63.29, 25.32, 31.65, 50.63, 0, 25.32, 0, 0], [0, 25.32, 31.65, 0, 63.29, 25.32, 63.29, 50.63, 31.65, 25.32, 0, 50.63, 0, 25.32], [0, 50.63, 0, 25.32, 31.65, 0, 63.29, 25.32, 63.29, 50.63, 31.65, 25.32, 0, 50.63], [0, 50.63, 0, 25.32, 31.65, 0, 63.29, 25.32, 63.29, 50.63, 31.65, 25.32, 0, 50.63], [31.65, 50.63, 63.29, 101.27, 31.65, 101.27, 0, 50.63, 31.65, 0, 63.29, 0, 31.65, 50.63], [31.65, 101.27, 0, 50.63, 31.65, 0, 63.29, 0, 31.65, 50.63, 63.29, 101.27, 31.65, 101.27], [63.29, 101.27, 31.65, 101.27, 0, 50.63, 31.65, 0, 63.29, 0, 31.65, 50.63, 63.29, 101.27], [31.65, 0, 63.29, 50.63, 31.65, 101.27, 0, 101.27, 31.65, 50.63, 0, 0, 31.65, 0], [31.65, 101.27, 0, 101.27, 31.65, 50.63, 0, 0, 31.65, 0, 63.29, 50.63, 31.65, 101.27], [0, 0, 31.65, 0, 63.29, 50.63, 31.65, 101.27, 0, 101.27, 31.65, 50.63, 0, 0], [0, 50.63, 31.65, 0, 63.29, 50.63, 31.65, 101.27, 0, 50.63], [0, 25.32, 31.65, 0, 63.29, 25.32, 31.65, 50.63, 0, 25.32], [31.65, 101.27, 0, 50.63, 31.65, 0, 63.29, 50.63, 31.65, 101.27], [0, 25.32, 31.65, 0, 63.29, 25.32, 31.65, 50.63, 0, 25.32], [31.65, 0, 63.29, 50.63, 31.65, 101.27, 0, 50.63, 31.65, 0], [31.65, 0, 63.29, 50.63, 31.65, 101.27, 0, 50.63, 31.65, 0], [31.65, 0, 63.29, 50.63, 31.65, 101.27, 0, 50.63, 31.65, 0], [0, 0, 31.65, 0, 63.29, 50.63, 31.65, 101.27, 0, 101.27, 0, 0], [0, 50.63, 31.65, 0, 63.29, 0, 63.29, 101.27, 31.65, 101.27, 0, 50.63], [0, 50.63, 0, 0, 31.65, 0, 63.29, 50.63, 31.65, 101.27, 0, 101.27, 0, 50.63], [31.65, 0, 63.29, 0, 63.29, 101.27, 31.65, 101.27, 0, 50.63, 31.65, 0], [31.65, 25.32, 0, 0, 63.29, 0, 31.65, 25.32], [0, 25.32, 31.65, 0, 63.29, 25.32, 0, 25.32], [0, 0, 126.58, 0, 94.94, 50.63, 126.58, 101.27, 0, 101.27, 31.65, 50.63, 0, 0], [0, 0, 126.58, 0, 94.94, 50.63, 126.58, 101.27, 0, 101.27, 31.65, 50.63, 0, 0], [0, 101.27, 0, 25.32, 31.65, 0, 63.29, 0, 63.29, 50.63, 0, 101.27], [0, 50.63, 63.29, 0, 63.29, 75.95, 31.65, 101.27, 0, 101.27, 0, 50.63], [0, 50.63, 63.29, 0, 126.58, 50.63, 63.29, 101.27, 0, 50.63], [63.29, 0, 126.58, 50.63, 63.29, 101.27, 0, 50.63, 63.29, 0], [0, 0, 63.29, 50.63, 63.29, 101.27, 0, 101.27, 0, 0], [0, 0, 63.29, 50.63, 126.58, 50.63, 126.58, 101.27, 63.29, 101.27, 0, 0], [0, 0, 63.29, 101.27, 0, 101.27, 0, 0], [0, 0, 6.33, 0, 189.87, 0, 126.58, 50.63, 63.29, 50.63, 0, 0], [0, 50.63, 63.29, 0, 63.29, 101.27, 0, 101.27, 0, 50.63], [0, 0, 31.65, 0, 31.65, 75.95, 0, 101.27, 0, 0], [0, 0, 31.65, 0, 31.65, 101.27, 0, 75.95, 0, 0], [0, 0, 63.29, 0, 63.29, 101.27, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 101.27, 0, 0]], [[0, 25.32, 0, 6.33, 6.33, 0, 12.66, 0, 6.33, 6.33, 12.66, 6.33, 12.66, 25.32, 0, 25.32], [12.66, 25.32, 0, 25.32, 0, 6.33, 6.33, 6.33, 0, 0, 6.33, 0, 12.66, 6.33, 12.66, 25.32], [0, 0, 6.33, 0, 12.66, 0, 18.99, 6.33, 18.99, 31.65, 12.66, 31.65, 12.66, 12.66, 6.33, 12.66, 12.66, 6.33, 6.33, 6.33, 0, 12.66, 0, 0], [18.99, 12.66, 12.66, 6.33, 6.33, 6.33, 12.66, 12.66, 6.33, 12.66, 6.33, 31.65, 0, 31.65, 0, 6.33, 6.33, 0, 18.99, 0, 18.99, 12.66], [25.32, 0, 37.97, 0, 44.3, 6.33, 56.96, 6.33, 63.29, 12.66, 63.29, 18.99, 56.96, 25.32, 44.3, 25.32, 44.3, 12.66, 37.97, 12.66, 37.97, 25.32, 25.32, 25.32, 25.32, 12.66, 18.99, 12.66, 18.99, 25.32, 6.33, 25.32, 0, 18.99, 0, 12.66, 6.33, 6.33, 18.99, 6.33, 25.32, 0], [0, 0, 6.33, 0, 6.33, 12.66, 0, 12.66, 0, 0], [6.33, 12.66, 0, 12.66, 0, 0, 6.33, 0, 6.33, 12.66], [0, 12.66, 0, 0, 12.66, 0, 12.66, 12.66, 0, 12.66], [82.28, 18.99, 94.94, 12.66, 101.27, 6.33, 101.27, 0, 107.59, 6.33, 113.92, 12.66, 107.59, 12.66, 101.27, 12.66, 88.61, 25.32, 82.28, 37.97, 69.62, 44.3, 44.3, 44.3, 31.65, 37.97, 25.32, 25.32, 12.66, 12.66, 0, 12.66, 12.66, 0, 12.66, 6.33, 18.99, 12.66, 31.65, 18.99, 50.63, 18.99, 50.63, 31.65, 63.29, 31.65, 63.29, 18.99, 82.28, 18.99], [0, 37.97, 0, 0, 37.97, 0, 37.97, 37.97, 0, 37.97], [12.66, 6.33, 12.66, 0, 37.97, 0, 37.97, 12.66, 37.97, 18.99, 31.65, 25.32, 18.99, 31.65, 25.32, 25.32, 25.32, 18.99, 18.99, 12.66, 6.33, 12.66, 0, 6.33, 12.66, 6.33], [25.32, 6.33, 37.97, 6.33, 31.65, 12.66, 18.99, 12.66, 12.66, 18.99, 12.66, 25.32, 18.99, 31.65, 0, 18.99, 0, 12.66, 0, 0, 25.32, 0, 25.32, 6.33], [37.97, 31.65, 25.32, 44.3, 0, 31.65, 6.33, 6.33, 18.99, 0, 31.65, 0, 31.65, 12.66, 18.99, 25.32, 31.65, 25.32, 37.97, 31.65], [6.33, 0, 18.99, 0, 31.65, 6.33, 37.97, 31.65, 12.66, 44.3, 0, 31.65, 6.33, 25.32, 18.99, 25.32, 6.33, 12.66, 6.33, 0], [0, 12.66, 12.66, 0, 18.99, 6.33, 25.32, 18.99, 37.97, 25.32, 63.29, 25.32, 75.95, 18.99, 82.28, 6.33, 88.61, 0, 101.27, 12.66, 82.28, 37.97, 69.62, 44.3, 63.29, 44.3, 37.97, 44.3, 25.32, 37.97, 0, 12.66], [113.92, 44.3, 113.92, 50.63, 94.94, 50.63, 94.94, 25.32, 88.61, 18.99, 31.65, 18.99, 25.32, 18.99, 18.99, 25.32, 18.99, 50.63, 0, 50.63, 0, 25.32, 12.66, 6.33, 25.32, 0, 88.61, 0, 101.27, 6.33, 113.92, 25.32, 113.92, 44.3], [6.33, 63.29, 0, 37.97, 12.66, 12.66, 50.63, 0, 63.29, 12.66, 75.95, 18.99, 82.28, 37.97, 82.28, 56.96, 56.96, 75.95, 25.32, 75.95, 18.99, 75.95, 6.33, 63.29], [75.95, 50.63, 75.95, 56.96, 63.29, 75.95, 50.63, 75.95, 25.32, 75.95, 0, 63.29, 0, 37.97, 12.66, 12.66, 44.3, 0, 69.62, 12.66, 82.28, 31.65, 75.95, 50.63], [18.99, 12.66, 50.63, 0, 75.95, 0, 82.28, 12.66, 94.94, 25.32, 107.59, 44.3, 107.59, 75.95, 88.61, 101.27, 50.63, 101.27, 31.65, 101.27, 31.65, 88.61, 69.62, 88.61, 94.94, 69.62, 94.94, 50.63, 88.61, 31.65, 75.95, 25.32, 69.62, 18.99, 63.29, 12.66, 25.32, 25.32, 12.66, 50.63, 18.99, 75.95, 12.66, 69.62, 6.33, 69.62, 0, 50.63, 6.33, 31.65, 18.99, 12.66], [69.62, 94.94, 75.95, 94.94, 75.95, 82.28, 37.97, 82.28, 12.66, 69.62, 12.66, 44.3, 25.32, 18.99, 56.96, 6.33, 69.62, 12.66, 82.28, 18.99, 94.94, 37.97, 88.61, 56.96, 88.61, 63.29, 101.27, 56.96, 107.59, 56.96, 107.59, 44.3, 101.27, 31.65, 88.61, 12.66, 75.95, 6.33, 56.96, 0, 50.63, 0, 18.99, 12.66, 6.33, 31.65, 0, 56.96, 6.33, 75.95, 12.66, 82.28, 44.3, 94.94, 69.62, 94.94], [12.66, 0, 25.32, 6.33, 0, 12.66, 12.66, 0], [0, 12.66, 0, 6.33, 6.33, 0, 18.99, 6.33, 12.66, 18.99, 0, 12.66], [6.33, 0, 25.32, 12.66, 12.66, 18.99, 0, 12.66, 6.33, 0], [0, 12.66, 0, 0, 12.66, 6.33, 18.99, 18.99, 6.33, 18.99, 0, 12.66], [6.33, 0, 25.32, 0, 18.99, 6.33, 0, 6.33, 0, 0, 6.33, 0], [25.32, 6.33, 44.3, 6.33, 37.97, 18.99, 12.66, 6.33, 18.99, 25.32, 0, 12.66, 12.66, 0, 18.99, 6.33, 25.32, 6.33], [6.33, 0, 31.65, 0, 25.32, 12.66, 12.66, 18.99, 6.33, 12.66, 0, 6.33, 6.33, 0], [0, 6.33, 12.66, 0, 25.32, 12.66, 12.66, 18.99, 0, 6.33], [0, 0, 6.33, 0, 18.99, 0, 12.66, 12.66, 0, 0], [0, 0, 12.66, 18.99, 0, 18.99, 0, 6.33, 0, 0], [0, 6.33, 0, 0, 12.66, 0, 12.66, 6.33, 0, 6.33], [12.66, 0, 25.32, 0, 6.33, 18.99, 6.33, 12.66, 0, 12.66, 0, 6.33, 12.66, 6.33, 12.66, 0], [0, 0, 6.33, 0, 6.33, 6.33, 0, 6.33, 0, 0], [0, 0, 12.66, 6.33, 12.66, 12.66, 0, 12.66, 0, 0], [0, 0, 18.99, 12.66, 6.33, 18.99, 0, 12.66, 0, 0], [0, 12.66, 6.33, 0, 12.66, 6.33, 12.66, 18.99, 0, 12.66], [6.33, 0, 12.66, 12.66, 0, 18.99, 6.33, 0], [0, 6.33, 12.66, 0, 12.66, 12.66, 0, 6.33], [12.66, 0, 18.99, 6.33, 12.66, 18.99, 0, 6.33, 12.66, 0], [56.96, 69.62, 12.66, 69.62, 0, 37.97, 6.33, 0, 56.96, 0, 56.96, 69.62], [0, 12.66, 6.33, 0, 44.3, 0, 44.3, 12.66, 0, 12.66], [0, 6.33, 0, 0, 37.97, 0, 31.65, 37.97, 44.3, 69.62, 31.65, 69.62, 18.99, 37.97, 18.99, 6.33, 0, 6.33], [0, 0, 18.99, 0, 18.99, 31.65, 31.65, 63.29, 18.99, 63.29, 6.33, 25.32, 0, 0], [0, 0, 6.33, 0, 18.99, 12.66, 31.65, 6.33, 31.65, 25.32, 6.33, 25.32, 6.33, 12.66, 0, 6.33, 0, 0], [6.33, 0, 31.65, 0, 50.63, 50.63, 0, 50.63, 6.33, 0], [37.97, 18.99, 0, 18.99, 0, 0, 37.97, 0, 37.97, 18.99], [0, 6.33, 0, 0, 6.33, 6.33, 0, 63.29, 0, 6.33], [6.33, 0, 37.97, 0, 37.97, 25.32, 0, 25.32, 0, 6.33, 6.33, 0], [6.33, 6.33, 0, 6.33, 0, 0, 6.33, 0, 6.33, 6.33], [0, 6.33, 0, 0, 6.33, 0, 6.33, 6.33, 0, 6.33], [0, 6.33, 0, 0, 6.33, 0, 6.33, 6.33, 0, 6.33], [6.33, 6.33, 0, 6.33, 0, 0, 6.33, 0, 6.33, 6.33], [0, 6.33, 0, 0, 6.33, 0, 6.33, 6.33, 0, 6.33], [6.33, 6.33, 0, 6.33, 0, 0, 6.33, 0, 6.33, 6.33], [0, 0, 37.97, 0, 37.97, 6.33, 0, 6.33, 0, 0], [0, 0, 37.97, 0, 37.97, 6.33, 0, 6.33, 0, 0], [0, 0, 37.97, 0, 37.97, 6.33, 0, 6.33, 0, 0], [0, 0, 12.66, 0, 25.32, 6.33, 37.97, 0, 31.65, 6.33, 31.65, 18.99, 0, 18.99, 0, 0], [0, 0, 6.33, 0, 6.33, 18.99, 0, 18.99, 0, 0], [0, 0, 6.33, 0, 6.33, 44.3, 50.63, 44.3, 50.63, 6.33, 56.96, 6.33, 56.96, 50.63, 0, 50.63, 0, 0], [0, 0, 6.33, 0, 6.33, 37.97, 37.97, 37.97, 37.97, 6.33, 44.3, 6.33, 44.3, 44.3, 0, 44.3, 0, 0], [6.33, 0, 6.33, 31.65, 25.32, 31.65, 25.32, 0, 31.65, 0, 31.65, 37.97, 0, 37.97, 0, 0, 6.33, 0], [0, 0, 18.99, 0, 18.99, 31.65, 0, 31.65, 0, 0], [0, 6.33, 0, 0, 37.97, 0, 31.65, 12.66, 0, 12.66, 0, 6.33], [44.3, 0, 50.63, 0, 50.63, 12.66, 18.99, 12.66, 0, 0, 44.3, 0], [0, 37.97, 0, 0, 6.33, 0, 18.99, 12.66, 31.65, 6.33, 31.65, 37.97, 0, 37.97], [44.3, 50.63, 44.3, 44.3, 0, 44.3, 0, 37.97, 56.96, 37.97, 56.96, 18.99, 44.3, 18.99, 44.3, 0, 75.95, 0, 75.95, 50.63, 44.3, 50.63], [0, 25.32, 0, 0, 113.92, 0, 113.92, 18.99, 56.96, 18.99, 56.96, 25.32, 101.27, 25.32, 101.27, 31.65, 0, 31.65, 0, 25.32], [25.32, 31.65, 0, 31.65, 0, 0, 88.61, 0, 88.61, 31.65, 25.32, 31.65], [0, 31.65, 0, 12.66, 6.33, 12.66, 12.66, 0, 44.3, 0, 44.3, 101.27, 0, 101.27, 0, 31.65], [0, 6.33, 25.32, 0, 25.32, 56.96, 6.33, 56.96, 0, 56.96, 0, 6.33], [0, 6.33, 0, 0, 69.62, 0, 69.62, 12.66, 56.96, 6.33, 44.3, 18.99, 44.3, 25.32, 12.66, 25.32, 0, 6.33], [0, 0, 44.3, 0, 44.3, 44.3, 6.33, 44.3, 0, 50.63, 0, 0], [18.99, 0, 132.91, 0, 132.91, 18.99, 44.3, 18.99, 44.3, 25.32, 0, 25.32, 0, 0, 12.66, 0, 18.99, 0], [0, 0, 31.65, 0, 31.65, 44.3, 18.99, 31.65, 6.33, 37.97, 0, 37.97, 0, 0], [31.65, 31.65, 18.99, 31.65, 12.66, 18.99, 0, 12.66, 0, 0, 107.59, 0, 107.59, 25.32, 75.95, 25.32, 75.95, 44.3, 31.65, 44.3, 31.65, 31.65], [0, 0, 145.57, 0, 145.57, 12.66, 0, 12.66, 0, 0], [0, 0, 82.28, 0, 82.28, 25.32, 88.61, 31.65, 6.33, 31.65, 18.99, 25.32, 0, 12.66, 0, 0], [0, 0, 31.65, 0, 31.65, 25.32, 37.97, 31.65, 0, 31.65, 0, 0], [0, 0, 63.29, 0, 63.29, 158.23, 0, 158.23, 0, 0], [31.65, 12.66, 31.65, 18.99, 6.33, 18.99, 0, 0, 25.32, 12.66, 31.65, 0, 31.65, 12.66], [0, 0, 31.65, 0, 18.99, 12.66, 37.97, 25.32, 0, 25.32, 0, 0], [31.65, 0, 31.65, 6.33, 6.33, 6.33, 0, 0, 31.65, 0], [63.29, 0, 63.29, 44.3, 0, 44.3, 0, 0, 50.63, 0, 50.63, 6.33, 56.96, 6.33, 56.96, 0, 63.29, 0], [31.65, 6.33, 113.92, 6.33, 139.24, 18.99, 158.23, 37.97, 164.56, 44.3, 177.22, 50.63, 164.56, 50.63, 120.25, 50.63, 120.25, 18.99, 0, 18.99, 0, 6.33, 18.99, 6.33, 25.32, 0, 31.65, 0, 31.65, 6.33], [0, 0, 120.25, 0, 120.25, 31.65, 0, 31.65, 0, 0], [56.96, 0, 120.25, 0, 120.25, 75.95, 69.62, 75.95, 82.28, 69.62, 75.95, 56.96, 69.62, 69.62, 63.29, 75.95, 0, 75.95, 12.66, 69.62, 18.99, 63.29, 31.65, 44.3, 56.96, 31.65, 50.63, 6.33, 37.97, 0, 56.96, 0], [126.58, 0, 145.57, 0, 145.57, 6.33, 158.23, 12.66, 151.9, 12.66, 151.9, 18.99, 0, 18.99, 0, 0, 126.58, 0], [25.32, 6.33, 50.63, 6.33, 50.63, 12.66, 56.96, 12.66, 56.96, 18.99, 75.95, 0, 139.24, 0, 139.24, 44.3, 107.59, 44.3, 94.94, 37.97, 88.61, 44.3, 0, 44.3, 18.99, 18.99, 18.99, 6.33, 25.32, 6.33], [6.33, 0, 44.3, 0, 44.3, 6.33, 0, 6.33, 0, 0, 6.33, 0], [0, 0, 113.92, 0, 113.92, 37.97, 0, 37.97, 0, 0], [272.15, 0, 272.15, 44.3, 259.49, 44.3, 253.16, 44.3, 246.84, 31.65, 221.52, 31.65, 189.87, 44.3, 177.22, 63.29, 170.89, 82.28, 177.22, 101.27, 120.25, 101.27, 120.25, 88.61, 101.27, 56.96, 69.62, 44.3, 31.65, 56.96, 18.99, 75.95, 12.66, 101.27, 18.99, 126.58, 25.32, 126.58, 56.96, 139.24, 88.61, 139.24, 88.61, 151.9, 18.99, 151.9, 0, 151.9, 0, 0, 107.59, 0, 107.59, 44.3, 151.9, 44.3, 151.9, 0, 272.15, 0], [0, 0, 44.3, 0, 44.3, 31.65, 31.65, 31.65, 31.65, 25.32, 18.99, 25.32, 18.99, 31.65, 0, 31.65, 0, 0], [0, 0, 25.32, 0, 25.32, 12.66, 0, 12.66, 0, 0], [0, 0, 18.99, 0, 18.99, 12.66, 0, 12.66, 0, 0], [0, 0, 12.66, 0, 12.66, 18.99, 0, 12.66, 0, 0], [0, 18.99, 18.99, 18.99, 18.99, 0, 31.65, 0, 31.65, 12.66, 69.62, 12.66, 82.28, 25.32, 88.61, 12.66, 145.57, 12.66, 145.57, 37.97, 120.25, 37.97, 107.59, 44.3, 120.25, 50.63, 120.25, 63.29, 25.32, 63.29, 25.32, 50.63, 0, 18.99], [25.32, 6.33, 25.32, 25.32, 0, 25.32, 0, 0, 25.32, 0, 25.32, 6.33], [6.33, 0, 44.3, 0, 44.3, 151.9, 132.91, 151.9, 120.25, 158.23, 113.92, 183.54, 31.65, 183.54, 31.65, 145.57, 18.99, 145.57, 25.32, 132.91, 18.99, 126.58, 6.33, 132.91, 0, 132.91, 0, 0, 6.33, 0], [0, 0, 6.33, 0, 18.99, 12.66, 31.65, 12.66, 31.65, 44.3, 0, 44.3, 0, 0]], [[0, 6.33, 25.32, 12.66, 56.96, 0, 63.29, 12.66, 31.65, 25.32, 0, 18.99, 0, 6.33], [0, 12.66, 31.65, 0, 63.29, 18.99, 56.96, 31.65, 31.65, 18.99, 6.33, 25.32, 0, 12.66], [0, 12.66, 6.33, 0, 31.65, 18.99, 56.96, 6.33, 69.62, 18.99, 31.65, 31.65, 0, 12.66], [0, 12.66, 37.97, 0, 69.62, 25.32, 56.96, 31.65, 37.97, 12.66, 12.66, 25.32, 0, 12.66], [0, 6.33, 12.66, 0, 25.32, 12.66, 50.63, 0, 56.96, 6.33, 25.32, 25.32, 0, 6.33], [0, 12.66, 25.32, 0, 6.33, 18.99, 0, 12.66], [6.33, 6.33, 12.66, 0, 25.32, 6.33, 25.32, 18.99, 0, 25.32, 0, 18.99, 6.33, 6.33], [0, 31.65, 50.63, 0, 75.95, 0, 69.62, 12.66, 75.95, 18.99, 63.29, 69.62, 0, 31.65], [6.33, 12.66, 25.32, 0, 56.96, 12.66, 94.94, 44.3, 50.63, 88.61, 0, 56.96, 6.33, 12.66], [0, 18.99, 0, 12.66, 37.97, 0, 50.63, 0, 82.28, 12.66, 101.27, 63.29, 31.65, 94.94, 18.99, 75.95, 31.65, 50.63, 0, 18.99], [0, 12.66, 25.32, 25.32, 82.28, 0, 101.27, 12.66, 63.29, 82.28, 12.66, 56.96, 0, 12.66], [18.99, 0, 44.3, 25.32, 63.29, 12.66, 94.94, 63.29, 44.3, 94.94, 0, 63.29, 18.99, 0], [0, 25.32, 25.32, 0, 56.96, 12.66, 107.59, 63.29, 63.29, 120.25, 18.99, 94.94, 31.65, 75.95, 0, 25.32], [0, 0, 63.29, 6.33, 44.3, 44.3, 0, 0], [31.65, 31.65, 18.99, 31.65, 0, 0, 25.32, 25.32, 63.29, 12.66, 31.65, 31.65], [0, 31.65, 18.99, 0, 12.66, 37.97, 0, 31.65], [12.66, 50.63, 0, 6.33, 18.99, 31.65, 31.65, 0, 25.32, 44.3, 12.66, 50.63], [0, 0, 6.33, 31.65, 0, 31.65, 0, 0], [0, 25.32, 0, 12.66, 44.3, 6.33, 126.58, 0, 164.56, 37.97, 132.91, 69.62, 101.27, 56.96, 75.95, 75.95, 25.32, 56.96, 0, 25.32], [0, 18.99, 18.99, 6.33, 56.96, 18.99, 82.28, 0, 101.27, 25.32, 56.96, 56.96, 0, 44.3, 0, 18.99], [0, 25.32, 18.99, 0, 63.29, 12.66, 56.96, 88.61, 31.65, 94.94, 12.66, 75.95, 18.99, 56.96, 0, 25.32], [0, 0, 208.86, 0, 177.22, 18.99, 139.24, 37.97, 88.61, 44.3, 50.63, 37.97, 12.66, 18.99, 0, 0]], [[6.33, 0, 12.66, 6.33, 6.33, 12.66, 0, 6.33, 6.33, 0], [18.99, 6.33, 6.33, 18.99, 18.99, 31.65, 31.65, 18.99, 25.32, 12.66, 25.32, 6.33, 37.97, 18.99, 18.99, 37.97, 0, 18.99, 18.99, 0, 18.99, 6.33], [31.65, 6.33, 6.33, 31.65, 31.65, 56.96, 56.96, 31.65, 37.97, 12.66, 37.97, 6.33, 63.29, 31.65, 31.65, 63.29, 0, 31.65, 31.65, 0, 31.65, 6.33], [44.3, 6.33, 6.33, 44.3, 44.3, 82.28, 82.28, 44.3, 50.63, 12.66, 50.63, 6.33, 88.61, 44.3, 44.3, 88.61, 0, 44.3, 44.3, 0, 44.3, 6.33], [56.96, 6.33, 6.33, 56.96, 56.96, 107.59, 107.59, 56.96, 63.29, 12.66, 63.29, 6.33, 113.92, 56.96, 56.96, 113.92, 0, 56.96, 56.96, 0, 56.96, 6.33], [69.62, 6.33, 6.33, 69.62, 69.62, 132.91, 132.91, 69.62, 75.95, 12.66, 75.95, 6.33, 139.24, 69.62, 69.62, 139.24, 0, 69.62, 69.62, 0, 69.62, 6.33], [82.28, 6.33, 6.33, 82.28, 82.28, 158.23, 158.23, 82.28, 88.61, 12.66, 88.61, 6.33, 164.56, 82.28, 82.28, 164.56, 0, 82.28, 82.28, 0, 82.28, 6.33], [94.94, 6.33, 6.33, 94.94, 94.94, 183.54, 183.54, 94.94, 101.27, 12.66, 101.27, 6.33, 189.87, 94.94, 94.94, 189.87, 0, 94.94, 94.94, 0, 94.94, 6.33], [107.59, 6.33, 6.33, 107.59, 107.59, 208.86, 208.86, 107.59, 113.92, 12.66, 113.92, 6.33, 215.19, 107.59, 107.59, 215.19, 0, 107.59, 107.59, 0, 107.59, 6.33], [120.25, 6.33, 6.33, 120.25, 120.25, 234.18, 234.18, 120.25, 126.58, 12.66, 126.58, 6.33, 240.51, 120.25, 120.25, 240.51, 0, 120.25, 120.25, 0, 120.25, 6.33], [132.91, 6.33, 6.33, 132.91, 132.91, 259.49, 259.49, 132.91, 139.24, 12.66, 139.24, 6.33, 265.82, 132.91, 132.91, 265.82, 0, 132.91, 132.91, 0, 132.91, 6.33], [145.57, 6.33, 6.33, 145.57, 145.57, 284.81, 284.81, 145.57, 151.9, 12.66, 151.9, 6.33, 291.14, 145.57, 145.57, 291.14, 0, 145.57, 145.57, 0, 145.57, 6.33], [158.23, 6.33, 6.33, 158.23, 158.23, 310.13, 310.13, 158.23, 164.56, 12.66, 164.56, 6.33, 316.46, 158.23, 158.23, 316.46, 0, 158.23, 158.23, 0, 158.23, 6.33], [170.89, 6.33, 6.33, 170.89, 170.89, 335.44, 335.44, 170.89, 177.22, 12.66, 177.22, 6.33, 341.77, 170.89, 170.89, 341.77, 0, 170.89, 170.89, 0, 170.89, 6.33], [183.54, 6.33, 6.33, 183.54, 183.54, 360.76, 360.76, 183.54, 189.87, 12.66, 189.87, 6.33, 367.09, 183.54, 183.54, 367.09, 0, 183.54, 183.54, 0, 183.54, 6.33], [196.2, 6.33, 6.33, 196.2, 196.2, 386.08, 386.08, 196.2, 202.53, 12.66, 202.53, 6.33, 392.41, 196.2, 196.2, 392.41, 0, 196.2, 196.2, 0, 196.2, 6.33], [208.86, 0, 6.33, 202.53, 208.86, 405.06, 202.53, 405.06, 0, 202.53, 202.53, 0, 208.86, 0], [0, 405.06, 202.53, 202.53, 6.33, 6.33, 6.33, 0, 208.86, 202.53, 6.33, 405.06, 0, 405.06], [0, 405.06, 202.53, 202.53, 0, 0, 6.33, 0, 208.86, 202.53, 6.33, 405.06, 0, 405.06], [208.86, 0, 6.33, 202.53, 208.86, 405.06, 202.53, 405.06, 0, 202.53, 202.53, 0, 208.86, 0], [208.86, 0, 6.33, 202.53, 208.86, 405.06, 202.53, 405.06, 0, 202.53, 202.53, 0, 208.86, 0], [0, 0, 6.33, 0, 208.86, 202.53, 6.33, 405.06, 0, 405.06, 202.53, 202.53, 0, 0], [208.86, 0, 6.33, 202.53, 208.86, 405.06, 202.53, 405.06, 0, 202.53, 202.53, 0, 208.86, 0], [0, 0, 6.33, 0, 208.86, 202.53, 6.33, 405.06, 0, 405.06, 202.53, 202.53, 0, 0], [202.53, 0, 0, 202.53, 0, 196.2, 196.2, 0, 202.53, 0], [0, 0, 202.53, 202.53, 196.2, 202.53, 0, 6.33, 0, 0], [0, 202.53, 202.53, 0, 202.53, 6.33, 6.33, 202.53, 0, 202.53], [0, 0, 6.33, 0, 202.53, 196.2, 202.53, 202.53, 0, 0], [0, 0, 6.33, 0, 120.25, 113.92, 120.25, 6.33, 18.99, 6.33, 12.66, 0, 126.58, 0, 126.58, 126.58, 0, 0], [126.58, 0, 0, 126.58, 0, 120.25, 0, 0, 113.92, 0, 107.59, 6.33, 6.33, 6.33, 6.33, 113.92, 120.25, 0, 126.58, 0]], [[0, 303.8, 506.33, 0, 227.85, 259.49, 0, 303.8], [0, 44.3, 227.85, 0, 145.57, 37.97, 50.63, 44.3, 0, 44.3], [0, 6.33, 6.33, 0, 12.66, 6.33, 0, 12.66, 0, 6.33], [31.65, 37.97, 0, 6.33, 6.33, 0, 37.97, 31.65, 31.65, 37.97], [6.33, 0, 37.97, 31.65, 31.65, 37.97, 0, 6.33, 6.33, 0], [0, 6.33, 6.33, 0, 12.66, 0, 25.32, 0, 6.33, 12.66, 0, 6.33], [44.3, 6.33, 50.63, 6.33, 50.63, 12.66, 44.3, 18.99, 6.33, 18.99, 0, 12.66, 0, 6.33, 6.33, 0, 37.97, 0, 44.3, 6.33], [0, 6.33, 6.33, 0, 12.66, 0, 12.66, 6.33, 12.66, 12.66, 6.33, 12.66, 0, 6.33], [0, 0, 6.33, 6.33, 0, 12.66, 0, 0], [0, 0, 6.33, 0, 6.33, 6.33, 0, 0], [0, 18.99, 12.66, 0, 31.65, 0, 25.32, 6.33, 18.99, 18.99, 18.99, 25.32, 0, 25.32, 0, 18.99], [0, 12.66, 6.33, 0, 25.32, 0, 31.65, 12.66, 25.32, 12.66, 18.99, 18.99, 12.66, 18.99, 6.33, 12.66, 0, 12.66], [0, 0, 6.33, 0, 12.66, 6.33, 18.99, 31.65, 12.66, 37.97, 0, 0], [12.66, 0, 25.32, 18.99, 12.66, 25.32, 0, 6.33, 6.33, 0, 12.66, 0], [0, 12.66, 6.33, 6.33, 31.65, 0, 50.63, 6.33, 69.62, 0, 82.28, 6.33, 56.96, 12.66, 44.3, 12.66, 31.65, 6.33, 12.66, 12.66, 0, 12.66], [12.66, 0, 0, 12.66, 0, 6.33, 12.66, 0], [56.96, 0, 56.96, 6.33, 37.97, 12.66, 0, 18.99, 0, 6.33, 31.65, 6.33, 56.96, 0], [12.66, 0, 25.32, 0, 25.32, 12.66, 6.33, 6.33, 0, 0, 12.66, 0], [0, 6.33, 31.65, 0, 75.95, 6.33, 101.27, 0, 82.28, 12.66, 44.3, 12.66, 0, 6.33], [6.33, 6.33, 44.3, 0, 94.94, 6.33, 158.23, 0, 107.59, 18.99, 56.96, 12.66, 0, 6.33, 6.33, 6.33], [6.33, 6.33, 37.97, 0, 56.96, 6.33, 31.65, 6.33, 0, 12.66, 6.33, 6.33], [0, 37.97, 12.66, 18.99, 37.97, 6.33, 63.29, 0, 69.62, 6.33, 44.3, 18.99, 31.65, 37.97, 0, 37.97], [0, 50.63, 69.62, 12.66, 139.24, 0, 145.57, 12.66, 75.95, 31.65, 63.29, 50.63, 0, 50.63], [0, 44.3, 18.99, 25.32, 50.63, 6.33, 63.29, 0, 69.62, 6.33, 50.63, 18.99, 44.3, 44.3, 0, 44.3], [0, 44.3, 18.99, 18.99, 44.3, 0, 75.95, 0, 69.62, 12.66, 50.63, 18.99, 44.3, 31.65, 44.3, 44.3, 0, 44.3], [0, 37.97, 6.33, 18.99, 18.99, 6.33, 44.3, 0, 44.3, 12.66, 31.65, 25.32, 25.32, 37.97, 0, 37.97], [0, 12.66, 0, 0, 506.33, 0, 506.33, 12.66, 0, 12.66], [12.66, 12.66, 25.32, 0, 44.3, 0, 37.97, 12.66, 50.63, 12.66, 50.63, 18.99, 56.96, 25.32, 0, 25.32, 12.66, 12.66], [0, 0, 25.32, 0, 0, 25.32, 0, 0], [37.97, 0, 31.65, 25.32, 12.66, 18.99, 12.66, 12.66, 0, 12.66, 6.33, 0, 37.97, 0], [25.32, 0, 44.3, 0, 44.3, 25.32, 6.33, 25.32, 0, 18.99, 0, 12.66, 25.32, 0], [0, 18.99, 18.99, 0, 31.65, 0, 37.97, 12.66, 56.96, 12.66, 37.97, 25.32, 12.66, 25.32, 0, 18.99], [6.33, 0, 25.32, 0, 6.33, 18.99, 18.99, 25.32, 0, 25.32, 0, 0, 6.33, 0], [37.97, 0, 25.32, 25.32, 6.33, 25.32, 25.32, 12.66, 18.99, 12.66, 6.33, 12.66, 0, 0, 37.97, 0], [44.3, 18.99, 50.63, 25.32, 0, 25.32, 12.66, 0, 31.65, 0, 44.3, 18.99], [0, 0, 37.97, 12.66, 56.96, 12.66, 50.63, 25.32, 18.99, 25.32, 12.66, 18.99, 0, 0], [82.28, 0, 69.62, 25.32, 50.63, 25.32, 56.96, 12.66, 37.97, 12.66, 0, 0, 82.28, 0], [0, 0, 6.33, 6.33, 12.66, 0, 18.99, 0, 25.32, 6.33, 18.99, 12.66, 12.66, 12.66, 6.33, 12.66, 0, 18.99, 0, 0], [18.99, 0, 37.97, 0, 25.32, 12.66, 18.99, 6.33, 18.99, 25.32, 0, 25.32, 12.66, 0, 18.99, 0], [31.65, 0, 37.97, 25.32, 0, 25.32, 6.33, 18.99, 18.99, 18.99, 25.32, 12.66, 18.99, 6.33, 12.66, 6.33, 18.99, 0, 31.65, 0], [0, 0, 44.3, 12.66, 18.99, 12.66, 25.32, 25.32, 6.33, 25.32, 0, 0], [44.3, 0, 50.63, 12.66, 6.33, 12.66, 0, 0, 6.33, 0, 44.3, 0], [69.62, 6.33, 63.29, 12.66, 37.97, 12.66, 0, 0, 69.62, 0, 69.62, 6.33], [31.65, 12.66, 25.32, 18.99, 6.33, 25.32, 0, 12.66, 6.33, 0, 31.65, 12.66], [56.96, 0, 63.29, 25.32, 0, 25.32, 44.3, 12.66, 44.3, 6.33, 56.96, 0], [6.33, 0, 56.96, 0, 44.3, 6.33, 44.3, 12.66, 0, 25.32, 18.99, 18.99, 25.32, 12.66, 0, 0, 6.33, 0], [25.32, 12.66, 31.65, 18.99, 31.65, 25.32, 6.33, 25.32, 0, 0, 25.32, 12.66], [37.97, 25.32, 25.32, 18.99, 12.66, 18.99, 0, 25.32, 0, 18.99, 12.66, 0, 37.97, 0, 37.97, 25.32], [18.99, 0, 25.32, 0, 37.97, 6.33, 0, 6.33, 12.66, 0, 18.99, 0], [6.33, 0, 44.3, 0, 31.65, 18.99, 25.32, 12.66, 0, 0, 6.33, 0]], [[0, 177.22, 0, 0, 6.33, 0, 6.33, 177.22, 0, 177.22], [6.33, 177.22, 0, 177.22, 0, 0, 6.33, 0, 6.33, 177.22], [31.65, 37.97, 0, 0, 31.65, 0, 31.65, 37.97], [0, 31.65, 0, 0, 37.97, 31.65, 0, 31.65], [63.29, 0, 63.29, 6.33, 0, 6.33, 0, 0, 63.29, 0], [0, 37.97, 0, 0, 31.65, 0, 0, 37.97], [0, 94.94, 0, 0, 6.33, 0, 6.33, 94.94, 0, 94.94], [0, 113.92, 0, 0, 6.33, 0, 6.33, 113.92, 0, 113.92], [0, 0, 88.61, 0, 88.61, 6.33, 0, 6.33, 0, 0], [0, 6.33, 0, 0, 63.29, 0, 63.29, 6.33, 0, 6.33], [0, 6.33, 0, 0, 69.62, 0, 69.62, 6.33, 0, 6.33], [0, 0, 354.43, 0, 354.43, 6.33, 0, 6.33, 0, 0], [0, 0, 354.43, 0, 354.43, 6.33, 0, 6.33, 0, 0], [0, 0, 354.43, 0, 354.43, 6.33, 0, 6.33, 0, 0], [0, 0, 360.76, 0, 360.76, 6.33, 0, 6.33, 0, 0], [0, 0, 360.76, 0, 360.76, 6.33, 0, 6.33, 0, 0], [0, 6.33, 0, 0, 360.76, 0, 360.76, 6.33, 0, 6.33], [0, 12.66, 0, 0, 6.33, 0, 6.33, 12.66, 0, 12.66], [0, 0, 367.09, 0, 367.09, 6.33, 0, 6.33, 0, 0], [0, 0, 6.33, 0, 6.33, 12.66, 0, 12.66, 0, 0], [0, 44.3, 44.3, 0, 44.3, 44.3, 0, 44.3], [0, 25.32, 63.29, 0, 56.96, 37.97, 0, 37.97, 0, 25.32], [0, 94.94, 0, 0, 164.56, 0, 151.9, 139.24, 0, 120.25, 0, 94.94], [69.62, 0, 31.65, 18.99, 12.66, 107.59, 0, 18.99, 69.62, 0], [18.99, 0, 18.99, 139.24, 0, 44.3, 18.99, 0], [12.66, 0, 18.99, 0, 0, 44.3, 12.66, 0], [31.65, 94.94, 0, 0, 18.99, 0, 37.97, 94.94, 31.65, 94.94], [0, 37.97, 0, 0, 31.65, 0, 18.99, 44.3, 0, 44.3, 0, 37.97], [0, 94.94, 0, 0, 31.65, 94.94, 0, 94.94], [18.99, 0, 25.32, 0, 25.32, 139.24, 0, 139.24, 12.66, 0, 18.99, 0], [37.97, 0, 227.85, 0, 227.85, 18.99, 0, 18.99, 37.97, 0], [0, 0, 69.62, 0, 0, 18.99, 0, 0], [25.32, 0, 31.65, 0, 31.65, 139.24, 0, 139.24, 0, 88.61, 18.99, 0, 25.32, 0], [0, 139.24, 0, 0, 12.66, 88.61, 12.66, 139.24, 0, 139.24], [0, 18.99, 0, 0, 151.9, 18.99, 0, 18.99]], [[50.63, 0, 69.62, 18.99, 69.62, 37.97, 50.63, 56.96, 18.99, 56.96, 0, 37.97, 0, 18.99, 18.99, 0, 50.63, 0], [0, 37.97, 31.65, 0, 56.96, 0, 63.29, 18.99, 18.99, 56.96, 0, 37.97], [0, 12.66, 50.63, 0, 69.62, 18.99, 50.63, 31.65, 0, 31.65, 0, 12.66], [12.66, 6.33, 18.99, 0, 56.96, 31.65, 56.96, 50.63, 37.97, 50.63, 0, 18.99, 12.66, 6.33], [31.65, 0, 31.65, 44.3, 18.99, 56.96, 0, 44.3, 6.33, 0, 31.65, 0], [50.63, 12.66, 18.99, 44.3, 0, 44.3, 6.33, 25.32, 37.97, 0, 50.63, 12.66], [56.96, 18.99, 12.66, 18.99, 0, 12.66, 12.66, 0, 56.96, 0, 56.96, 18.99], [25.32, 50.63, 0, 12.66, 0, 0, 12.66, 6.33, 37.97, 37.97, 25.32, 50.63], [25.32, 69.62, 0, 69.62, 0, 31.65, 18.99, 0, 25.32, 25.32, 25.32, 69.62], [31.65, 0, 25.32, 44.3, 0, 31.65, 31.65, 0], [0, 0, 25.32, 25.32, 0, 37.97, 0, 0], [0, 0, 37.97, 0, 31.65, 25.32, 0, 0], [0, 31.65, 37.97, 0, 50.63, 18.99, 0, 31.65], [25.32, 6.33, 0, 37.97, 0, 0, 25.32, 6.33], [18.99, 37.97, 0, 12.66, 18.99, 0, 18.99, 37.97], [37.97, 31.65, 0, 31.65, 12.66, 0, 37.97, 31.65], [44.3, 0, 12.66, 25.32, 0, 0, 44.3, 0], [0, 18.99, 0, 0, 82.28, 12.66, 120.25, 94.94, 94.94, 94.94, 56.96, 25.32, 0, 18.99], [12.66, 0, 37.97, 63.29, 113.92, 101.27, 113.92, 120.25, 25.32, 75.95, 0, 6.33, 12.66, 0], [101.27, 0, 101.27, 18.99, 44.3, 37.97, 12.66, 94.94, 0, 94.94, 37.97, 25.32, 101.27, 0], [107.59, 0, 126.58, 0, 88.61, 82.28, 0, 126.58, 0, 107.59, 75.95, 75.95, 107.59, 0], [6.33, 12.66, 12.66, 6.33, 25.32, 0, 31.65, 0, 44.3, 6.33, 50.63, 12.66, 56.96, 25.32, 56.96, 31.65, 50.63, 50.63, 37.97, 75.95, 25.32, 82.28, 12.66, 75.95, 0, 44.3, 0, 25.32, 6.33, 12.66], [126.58, 88.61, 0, 88.61, 63.29, 0, 126.58, 88.61], [56.96, 75.95, 56.96, 69.62, 0, 0, 113.92, 0, 56.96, 75.95], [63.29, 31.65, 6.33, 132.91, 25.32, 208.86, 177.22, 284.81, 284.81, 208.86, 297.47, 69.62, 215.19, 12.66, 69.62, 31.65, 56.96, 18.99, 227.85, 0, 310.13, 69.62, 297.47, 215.19, 177.22, 297.47, 18.99, 215.19, 0, 132.91, 56.96, 25.32, 63.29, 31.65], [107.59, 0, 107.59, 63.29, 6.33, 139.24, 0, 113.92, 75.95, 69.62, 107.59, 0], [151.9, 234.18, 158.23, 253.16, 18.99, 183.54, 0, 107.59, 56.96, 12.66, 126.58, 0, 69.62, 25.32, 31.65, 94.94, 25.32, 113.92, 50.63, 183.54, 151.9, 234.18], [0, 6.33, 12.66, 0, 18.99, 25.32, 6.33, 25.32, 0, 6.33], [31.65, 164.56, 31.65, 101.27, 37.97, 82.28, 0, 0, 50.63, 31.65, 37.97, 164.56, 31.65, 164.56], [75.95, 18.99, 69.62, 18.99, 82.28, 25.32, 0, 12.66, 50.63, 0, 75.95, 18.99], [113.92, 0, 107.59, 69.62, 0, 145.57, 101.27, 63.29, 107.59, 63.29, 113.92, 0], [6.33, 6.33, 0, 6.33, 12.66, 0, 6.33, 6.33]], [[0, 0, 75.95, 0, 75.95, 132.91, 0, 132.91, 0, 0], [63.29, 0, 63.29, 56.96, 0, 56.96, 0, 0, 63.29, 0], [189.87, 56.96, 183.54, 56.96, 183.54, 50.63, 0, 50.63, 0, 0, 189.87, 0, 189.87, 56.96], [0, 0, 88.61, 0, 88.61, 151.9, 0, 151.9, 0, 0], [101.27, 6.33, 101.27, 18.99, 0, 18.99, 0, 0, 94.94, 0, 94.94, 6.33, 101.27, 6.33], [88.61, 0, 88.61, 145.57, 0, 145.57, 0, 12.66, 25.32, 12.66, 25.32, 0, 88.61, 0], [0, 94.94, 126.58, 0, 253.16, 94.94, 0, 94.94], [253.16, 0, 253.16, 6.33, 0, 6.33, 0, 0, 253.16, 0], [113.92, 0, 113.92, 310.13, 0, 310.13, 0, 0, 113.92, 0], [0, 0, 75.95, 0, 151.9, 101.27, 94.94, 101.27, 0, 0], [0, 0, 126.58, 6.33, 126.58, 202.53, 0, 202.53, 0, 0], [120.25, 101.27, 126.58, 101.27, 126.58, 94.94, 253.16, 0, 0, 0, 0, 101.27, 120.25, 101.27], [0, 0, 139.24, 0, 139.24, 94.94, 126.58, 94.94, 0, 0], [0, 0, 12.66, 0, 12.66, 208.86, 0, 208.86, 0, 0], [75.95, 101.27, 0, 0, 94.94, 0, 94.94, 6.33, 208.86, 6.33, 208.86, 101.27, 75.95, 101.27], [215.19, 0, 310.13, 101.27, 0, 101.27, 0, 0, 215.19, 0]], [[0, 50.63, 0, 0, 63.29, 0, 0, 50.63], [0, 101.27, 0, 50.63, 63.29, 0, 126.58, 0, 0, 101.27], [0, 0, 63.29, 0, 63.29, 50.63, 0, 0], [0, 0, 63.29, 0, 126.58, 50.63, 126.58, 101.27, 0, 0], [506.33, 101.27, 443.04, 101.27, 379.75, 50.63, 126.58, 50.63, 63.29, 101.27, 0, 101.27, 126.58, 0, 253.16, 25.32, 379.75, 0, 506.33, 101.27], [0, 0, 253.16, 0, 126.58, 25.32, 0, 0], [0, 50.63, 0, 0, 63.29, 50.63, 126.58, 50.63, 63.29, 101.27, 0, 50.63], [0, 50.63, 63.29, 50.63, 126.58, 0, 126.58, 50.63, 63.29, 101.27, 0, 50.63], [0, 50.63, 0, 0, 253.16, 0, 253.16, 50.63, 126.58, 25.32, 0, 50.63], [63.29, 50.63, 63.29, 101.27, 0, 151.9, 0, 0, 63.29, 50.63], [63.29, 0, 63.29, 151.9, 0, 101.27, 0, 50.63, 63.29, 0], [126.58, 50.63, 0, 50.63, 31.65, 0, 63.29, 0, 126.58, 50.63], [0, 50.63, 63.29, 0, 94.94, 0, 126.58, 50.63, 0, 50.63], [0, 75.95, 63.29, 25.32, 189.87, 0, 316.46, 25.32, 379.75, 75.95, 379.75, 126.58, 348.1, 126.58, 348.1, 75.95, 189.87, 25.32, 31.65, 75.95, 31.65, 126.58, 0, 126.58, 0, 75.95], [31.65, 151.9, 0, 101.27, 0, 50.63, 158.23, 0, 316.46, 50.63, 316.46, 101.27, 284.81, 151.9, 31.65, 151.9]], [[31.65, 56.96, 0, 63.29, 31.65, 37.97, 12.66, 25.32, 37.97, 25.32, 50.63, 0, 56.96, 25.32, 82.28, 25.32, 56.96, 44.3, 75.95, 69.62, 50.63, 56.96, 37.97, 82.28, 31.65, 56.96], [25.32, 18.99, 44.3, 0, 44.3, 25.32, 63.29, 44.3, 37.97, 50.63, 12.66, 69.62, 18.99, 37.97, 0, 31.65, 25.32, 18.99], [31.65, 25.32, 44.3, 0, 50.63, 18.99, 75.95, 31.65, 56.96, 37.97, 37.97, 56.96, 31.65, 37.97, 0, 37.97, 31.65, 25.32], [18.99, 12.66, 37.97, 0, 37.97, 18.99, 63.29, 31.65, 37.97, 37.97, 44.3, 63.29, 25.32, 44.3, 0, 56.96, 18.99, 31.65, 0, 12.66, 18.99, 12.66], [31.65, 31.65, 37.97, 6.33, 50.63, 25.32, 82.28, 0, 69.62, 25.32, 101.27, 37.97, 75.95, 50.63, 88.61, 69.62, 75.95, 63.29, 69.62, 82.28, 56.96, 63.29, 25.32, 82.28, 31.65, 56.96, 0, 50.63, 25.32, 44.3, 6.33, 31.65, 31.65, 31.65], [25.32, 25.32, 44.3, 0, 50.63, 18.99, 75.95, 25.32, 50.63, 37.97, 44.3, 56.96, 31.65, 37.97, 0, 31.65, 25.32, 25.32], [0, 31.65, 25.32, 6.33, 50.63, 0, 101.27, 6.33, 145.57, 25.32, 151.9, 69.62, 145.57, 88.61, 0, 31.65], [0, 0, 139.24, 56.96, 126.58, 82.28, 107.59, 94.94, 69.62, 88.61, 37.97, 75.95, 12.66, 63.29, 0, 37.97, 0, 0], [158.23, 101.27, 18.99, 44.3, 0, 25.32, 0, 12.66, 12.66, 0, 44.3, 0, 25.32, 18.99, 170.89, 75.95, 177.22, 56.96, 177.22, 37.97, 196.2, 63.29, 196.2, 82.28, 183.54, 94.94, 158.23, 101.27], [0, 18.99, 12.66, 6.33, 31.65, 0, 44.3, 6.33, 50.63, 12.66, 44.3, 31.65, 25.32, 44.3, 6.33, 31.65, 0, 18.99], [0, 12.66, 25.32, 0, 44.3, 6.33, 56.96, 25.32, 44.3, 44.3, 18.99, 50.63, 6.33, 44.3, 0, 25.32, 0, 12.66], [12.66, 37.97, 0, 25.32, 12.66, 12.66, 37.97, 0, 50.63, 12.66, 50.63, 31.65, 12.66, 37.97], [12.66, 37.97, 0, 18.99, 18.99, 0, 37.97, 0, 50.63, 6.33, 56.96, 37.97, 12.66, 37.97], [0, 18.99, 12.66, 0, 44.3, 6.33, 31.65, 37.97, 18.99, 56.96, 0, 18.99], [12.66, 31.65, 0, 18.99, 6.33, 6.33, 18.99, 0, 31.65, 12.66, 31.65, 25.32, 12.66, 31.65], [0, 31.65, 18.99, 0, 31.65, 0, 56.96, 18.99, 50.63, 44.3, 31.65, 56.96, 18.99, 50.63, 0, 31.65], [0, 44.3, 18.99, 6.33, 44.3, 0, 82.28, 6.33, 94.94, 44.3, 88.61, 69.62, 56.96, 82.28, 25.32, 75.95, 0, 44.3], [0, 69.62, 6.33, 31.65, 31.65, 6.33, 75.95, 0, 101.27, 12.66, 113.92, 44.3, 120.25, 75.95, 101.27, 101.27, 63.29, 113.92, 37.97, 113.92, 18.99, 88.61, 0, 69.62], [18.99, 132.91, 0, 113.92, 0, 50.63, 31.65, 18.99, 69.62, 0, 101.27, 6.33, 126.58, 44.3, 139.24, 88.61, 132.91, 126.58, 88.61, 145.57, 50.63, 151.9, 18.99, 132.91], [0, 145.57, 0, 56.96, 31.65, 18.99, 88.61, 0, 145.57, 31.65, 170.89, 88.61, 170.89, 145.57, 139.24, 177.22, 75.95, 189.87, 31.65, 177.22, 0, 145.57]], [[12.66, 0, 25.32, 0, 37.97, 12.66, 37.97, 31.65, 25.32, 44.3, 12.66, 44.3, 0, 31.65, 0, 12.66, 12.66, 0], [12.66, 0, 25.32, 0, 37.97, 12.66, 37.97, 31.65, 25.32, 44.3, 12.66, 44.3, 0, 31.65, 0, 18.99, 0, 12.66, 12.66, 0], [0, 6.33, 0, 0, 6.33, 6.33, 37.97, 31.65, 101.27, 31.65, 120.25, 18.99, 132.91, 0, 126.58, 25.32, 101.27, 44.3, 31.65, 44.3, 12.66, 25.32, 0, 6.33], [25.32, 0, 37.97, 12.66, 37.97, 31.65, 25.32, 44.3, 12.66, 44.3, 0, 31.65, 0, 12.66, 12.66, 0, 25.32, 0], [25.32, 44.3, 12.66, 44.3, 0, 31.65, 0, 12.66, 12.66, 0, 25.32, 0, 37.97, 12.66, 37.97, 31.65, 25.32, 44.3], [101.27, 0, 132.91, 50.63, 120.25, 69.62, 101.27, 82.28, 37.97, 82.28, 6.33, 56.96, 0, 50.63, 101.27, 0], [88.61, 12.66, 88.61, 18.99, 0, 63.29, 0, 6.33, 18.99, 12.66, 31.65, 12.66, 44.3, 0, 75.95, 0, 88.61, 12.66], [0, 0, 31.65, 0, 31.65, 18.99, 0, 18.99, 0, 0], [6.33, 0, 56.96, 0, 44.3, 12.66, 12.66, 12.66, 0, 0, 6.33, 0], [18.99, 50.63, 0, 25.32, 0, 0, 31.65, 6.33, 18.99, 25.32, 18.99, 50.63], [12.66, 0, 31.65, 18.99, 31.65, 25.32, 31.65, 82.28, 31.65, 94.94, 63.29, 126.58, 107.59, 126.58, 113.92, 183.54, 44.3, 183.54, 0, 82.28, 0, 31.65, 12.66, 0], [6.33, 31.65, 75.95, 0, 151.9, 6.33, 189.87, 69.62, 208.86, 158.23, 208.86, 240.51, 183.54, 259.49, 101.27, 253.16, 94.94, 196.2, 120.25, 196.2, 145.57, 177.22, 151.9, 158.23, 151.9, 151.9, 120.25, 101.27, 132.91, 88.61, 132.91, 69.62, 126.58, 56.96, 120.25, 56.96, 50.63, 56.96, 37.97, 56.96, 25.32, 69.62, 25.32, 88.61, 37.97, 101.27, 18.99, 94.94, 18.99, 63.29, 31.65, 44.3, 0, 37.97, 6.33, 31.65], [12.66, 44.3, 0, 31.65, 0, 12.66, 12.66, 0, 18.99, 0, 25.32, 0, 37.97, 12.66, 37.97, 31.65, 25.32, 44.3, 12.66, 44.3], [6.33, 31.65, 37.97, 0, 50.63, 0, 75.95, 31.65, 75.95, 69.62, 25.32, 132.91, 6.33, 44.3, 0, 31.65, 6.33, 31.65], [75.95, 31.65, 82.28, 31.65, 75.95, 63.29, 75.95, 94.94, 69.62, 94.94, 12.66, 56.96, 0, 31.65, 31.65, 0, 44.3, 0, 75.95, 31.65], [25.32, 0, 44.3, 6.33, 37.97, 69.62, 25.32, 69.62, 0, 69.62, 25.32, 0], [0, 0, 18.99, 0, 44.3, 63.29, 6.33, 63.29, 0, 0], [0, 82.28, 0, 0, 506.33, 0, 506.33, 101.27, 468.35, 94.94, 310.13, 18.99, 0, 82.28], [0, 0, 158.23, 284.81, 0, 284.81, 0, 0], [94.94, 0, 94.94, 265.82, 0, 265.82, 94.94, 0], [113.92, 126.58, 63.29, 126.58, 0, 12.66, 82.28, 0, 113.92, 126.58], [0, 82.28, 25.32, 0, 75.95, 25.32, 56.96, 82.28, 0, 82.28]], [[0, 0, 18.99, 6.33, 25.32, 25.32, 6.33, 18.99, 0, 0], [0, 25.32, 6.33, 6.33, 25.32, 0, 18.99, 18.99, 0, 25.32], [0, 0, 25.32, 0, 18.99, 6.33, 12.66, 12.66, 6.33, 6.33, 0, 0], [37.97, 0, 37.97, 31.65, 18.99, 25.32, 25.32, 44.3, 44.3, 50.63, 50.63, 69.62, 63.29, 82.28, 75.95, 69.62, 82.28, 50.63, 101.27, 44.3, 107.59, 25.32, 88.61, 31.65, 88.61, 0, 101.27, 0, 113.92, 6.33, 120.25, 12.66, 126.58, 37.97, 120.25, 63.29, 107.59, 75.95, 94.94, 88.61, 82.28, 94.94, 44.3, 94.94, 31.65, 88.61, 6.33, 63.29, 0, 37.97, 6.33, 12.66, 12.66, 6.33, 25.32, 0, 37.97, 0], [0, 6.33, 25.32, 0, 50.63, 6.33, 50.63, 37.97, 44.3, 56.96, 37.97, 75.95, 12.66, 75.95, 6.33, 56.96, 0, 37.97, 0, 6.33], [6.33, 63.29, 0, 0, 37.97, 31.65, 31.65, 31.65, 18.99, 37.97, 12.66, 44.3, 6.33, 69.62, 6.33, 63.29], [31.65, 63.29, 31.65, 69.62, 25.32, 44.3, 18.99, 37.97, 6.33, 31.65, 0, 31.65, 37.97, 0, 31.65, 63.29], [0, 6.33, 0, 0, 44.3, 37.97, 37.97, 37.97, 0, 6.33], [44.3, 6.33, 6.33, 37.97, 0, 37.97, 44.3, 0, 44.3, 6.33], [25.32, 0, 31.65, 18.99, 31.65, 31.65, 31.65, 50.63, 37.97, 63.29, 50.63, 69.62, 63.29, 63.29, 75.95, 63.29, 88.61, 63.29, 82.28, 69.62, 94.94, 69.62, 88.61, 75.95, 101.27, 75.95, 94.94, 88.61, 107.59, 88.61, 94.94, 101.27, 69.62, 107.59, 44.3, 107.59, 12.66, 88.61, 0, 56.96, 6.33, 37.97, 18.99, 18.99, 25.32, 0], [6.33, 0, 37.97, 0, 31.65, 18.99, 25.32, 25.32, 12.66, 25.32, 18.99, 12.66, 6.33, 12.66, 12.66, 6.33, 0, 6.33, 6.33, 0], [6.33, 31.65, 0, 31.65, 12.66, 25.32, 18.99, 18.99, 25.32, 12.66, 44.3, 6.33, 69.62, 0, 82.28, 0, 101.27, 6.33, 113.92, 12.66, 126.58, 31.65, 113.92, 25.32, 113.92, 31.65, 107.59, 25.32, 107.59, 37.97, 101.27, 31.65, 101.27, 37.97, 88.61, 37.97, 69.62, 44.3, 44.3, 44.3, 6.33, 31.65], [0, 12.66, 6.33, 12.66, 6.33, 6.33, 12.66, 12.66, 12.66, 0, 18.99, 6.33, 18.99, 0, 31.65, 6.33, 31.65, 12.66, 31.65, 18.99, 31.65, 25.32, 31.65, 31.65, 25.32, 25.32, 12.66, 18.99, 0, 12.66], [6.33, 0, 12.66, 18.99, 0, 37.97, 0, 18.99, 6.33, 0], [0, 0, 6.33, 12.66, 6.33, 25.32, 0, 12.66, 0, 0], [69.62, 6.33, 69.62, 0, 82.28, 31.65, 88.61, 37.97, 63.29, 50.63, 31.65, 50.63, 12.66, 44.3, 0, 31.65, 12.66, 31.65, 6.33, 18.99, 18.99, 18.99, 12.66, 12.66, 25.32, 12.66, 18.99, 6.33, 44.3, 6.33, 56.96, 12.66, 69.62, 6.33], [31.65, 0, 37.97, 6.33, 25.32, 6.33, 31.65, 12.66, 18.99, 12.66, 25.32, 25.32, 12.66, 25.32, 6.33, 18.99, 0, 0, 31.65, 0], [126.58, 31.65, 120.25, 31.65, 82.28, 44.3, 56.96, 44.3, 37.97, 37.97, 31.65, 37.97, 25.32, 37.97, 25.32, 31.65, 18.99, 37.97, 18.99, 25.32, 12.66, 31.65, 12.66, 25.32, 0, 31.65, 12.66, 12.66, 25.32, 6.33, 44.3, 0, 56.96, 0, 101.27, 12.66, 107.59, 18.99, 113.92, 25.32, 126.58, 31.65], [0, 6.33, 12.66, 0, 12.66, 6.33, 18.99, 0, 18.99, 12.66, 25.32, 6.33, 25.32, 12.66, 6.33, 25.32, 0, 31.65, 0, 6.33], [94.94, 101.27, 88.61, 94.94, 69.62, 82.28, 50.63, 75.95, 31.65, 69.62, 12.66, 56.96, 0, 31.65, 0, 6.33, 6.33, 12.66, 12.66, 0, 18.99, 12.66, 18.99, 0, 25.32, 6.33, 31.65, 0, 37.97, 12.66, 44.3, 25.32, 50.63, 31.65, 63.29, 44.3, 69.62, 56.96, 75.95, 69.62, 82.28, 82.28, 101.27, 107.59, 94.94, 101.27], [0, 31.65, 6.33, 12.66, 12.66, 0, 18.99, 6.33, 25.32, 12.66, 31.65, 25.32, 25.32, 31.65, 18.99, 25.32, 18.99, 37.97, 12.66, 25.32, 6.33, 37.97, 0, 31.65], [6.33, 101.27, 18.99, 82.28, 25.32, 69.62, 31.65, 56.96, 37.97, 44.3, 56.96, 25.32, 63.29, 12.66, 69.62, 0, 75.95, 6.33, 82.28, 0, 82.28, 12.66, 88.61, 0, 94.94, 12.66, 101.27, 6.33, 101.27, 31.65, 88.61, 63.29, 69.62, 75.95, 50.63, 82.28, 18.99, 94.94, 0, 107.59, 6.33, 101.27], [31.65, 31.65, 25.32, 37.97, 18.99, 25.32, 12.66, 37.97, 12.66, 25.32, 6.33, 31.65, 0, 25.32, 6.33, 12.66, 18.99, 0, 25.32, 12.66, 31.65, 31.65], [18.99, 94.94, 12.66, 75.95, 6.33, 63.29, 0, 50.63, 0, 37.97, 6.33, 12.66, 12.66, 0, 12.66, 12.66, 18.99, 6.33, 25.32, 12.66, 25.32, 0, 31.65, 12.66, 37.97, 37.97, 37.97, 50.63, 25.32, 75.95, 18.99, 94.94], [0, 12.66, 6.33, 0, 12.66, 12.66, 12.66, 25.32, 6.33, 18.99, 0, 25.32, 0, 12.66], [158.23, 50.63, 132.91, 37.97, 113.92, 50.63, 101.27, 50.63, 94.94, 37.97, 69.62, 37.97, 44.3, 50.63, 31.65, 37.97, 0, 50.63, 0, 18.99, 18.99, 25.32, 37.97, 12.66, 69.62, 12.66, 75.95, 25.32, 151.9, 0, 145.57, 18.99, 196.2, 12.66, 215.19, 12.66, 234.18, 25.32, 234.18, 31.65, 221.52, 37.97, 208.86, 31.65, 151.9, 31.65, 158.23, 50.63], [0, 6.33, 56.96, 0, 88.61, 31.65, 82.28, 50.63, 94.94, 56.96, 75.95, 63.29, 69.62, 50.63, 37.97, 50.63, 18.99, 63.29, 0, 56.96, 0, 6.33], [6.33, 6.33, 25.32, 0, 37.97, 25.32, 44.3, 18.99, 63.29, 6.33, 75.95, 6.33, 94.94, 12.66, 88.61, 12.66, 82.28, 12.66, 63.29, 37.97, 25.32, 50.63, 12.66, 44.3, 18.99, 25.32, 0, 6.33, 6.33, 6.33], [37.97, 0, 18.99, 31.65, 12.66, 37.97, 18.99, 18.99, 0, 25.32, 18.99, 0, 37.97, 0], [25.32, 12.66, 44.3, 12.66, 82.28, 0, 101.27, 0, 94.94, 18.99, 94.94, 37.97, 88.61, 56.96, 63.29, 44.3, 0, 50.63, 25.32, 12.66], [25.32, 18.99, 50.63, 0, 50.63, 0, 44.3, 12.66, 132.91, 31.65, 145.57, 25.32, 164.56, 12.66, 183.54, 18.99, 202.53, 25.32, 234.18, 12.66, 234.18, 37.97, 227.85, 37.97, 215.19, 50.63, 196.2, 50.63, 183.54, 37.97, 151.9, 56.96, 113.92, 44.3, 75.95, 50.63, 82.28, 31.65, 25.32, 31.65, 12.66, 37.97, 0, 31.65, 0, 25.32, 25.32, 18.99], [0, 0, 18.99, 0, 37.97, 6.33, 44.3, 12.66, 44.3, 18.99, 50.63, 31.65, 37.97, 50.63, 12.66, 56.96, 12.66, 50.63, 6.33, 37.97, 6.33, 18.99, 0, 0], [25.32, 25.32, 0, 44.3, 12.66, 25.32, 6.33, 12.66, 6.33, 6.33, 0, 0, 18.99, 6.33, 44.3, 6.33, 63.29, 0, 75.95, 18.99, 88.61, 37.97, 82.28, 50.63, 50.63, 44.3, 18.99, 37.97, 25.32, 25.32], [0, 0, 6.33, 0, 18.99, 6.33, 31.65, 12.66, 37.97, 18.99, 50.63, 6.33, 63.29, 18.99, 69.62, 0, 75.95, 37.97, 56.96, 50.63, 44.3, 56.96, 18.99, 50.63, 25.32, 37.97, 0, 0], [0, 12.66, 37.97, 25.32, 50.63, 0, 69.62, 18.99, 75.95, 6.33, 75.95, 50.63, 44.3, 56.96, 25.32, 37.97, 0, 12.66], [0, 0, 44.3, 44.3, 75.95, 37.97, 44.3, 50.63, 6.33, 37.97, 0, 0], [0, 0, 12.66, 0, 6.33, 18.99, 0, 0], [107.59, 0, 132.91, 0, 151.9, 12.66, 170.89, 18.99, 189.87, 18.99, 164.56, 25.32, 139.24, 31.65, 107.59, 25.32, 82.28, 25.32, 69.62, 25.32, 50.63, 31.65, 18.99, 37.97, 0, 44.3, 12.66, 31.65, 31.65, 18.99, 50.63, 12.66, 63.29, 6.33, 82.28, 0, 107.59, 0], [25.32, 12.66, 50.63, 6.33, 88.61, 0, 107.59, 0, 132.91, 0, 151.9, 6.33, 183.54, 31.65, 196.2, 44.3, 151.9, 31.65, 126.58, 25.32, 82.28, 25.32, 56.96, 31.65, 31.65, 31.65, 0, 12.66, 25.32, 12.66]], [[63.29, 0, 126.58, 50.63, 63.29, 101.27, 0, 50.63, 63.29, 0], [63.29, 0, 126.58, 50.63, 63.29, 101.27, 0, 50.63, 63.29, 0], [6.33, 0, 63.29, 0, 63.29, 44.3, 63.29, 50.63, 0, 0, 6.33, 0], [0, 0, 63.29, 0, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 0], [0, 50.63, 0, 0, 63.29, 50.63, 0, 50.63], [63.29, 0, 63.29, 50.63, 0, 50.63, 63.29, 0], [63.29, 0, 63.29, 50.63, 0, 50.63, 63.29, 0], [63.29, 50.63, 0, 50.63, 0, 0, 63.29, 50.63], [126.58, 0, 253.16, 101.27, 126.58, 202.53, 0, 101.27, 126.58, 0], [126.58, 50.63, 94.94, 75.95, 63.29, 50.63, 31.65, 75.95, 0, 50.63, 63.29, 0, 126.58, 50.63], [0, 50.63, 63.29, 0, 126.58, 50.63, 94.94, 75.95, 63.29, 50.63, 31.65, 75.95, 0, 50.63], [6.33, 0, 126.58, 0, 63.29, 50.63, 0, 0, 6.33, 0], [94.94, 0, 94.94, 101.27, 0, 25.32, 31.65, 0, 63.29, 25.32, 94.94, 0], [0, 101.27, 0, 0, 31.65, 25.32, 63.29, 0, 94.94, 25.32, 0, 101.27], [126.58, 202.53, 0, 0, 126.58, 0, 126.58, 202.53], [0, 0, 126.58, 0, 0, 202.53, 0, 0], [253.16, 101.27, 0, 101.27, 126.58, 0, 253.16, 101.27], [0, 101.27, 126.58, 0, 253.16, 101.27, 0, 101.27], [31.65, 0, 31.65, 25.32, 0, 25.32, 0, 0, 31.65, 0], [0, 0, 31.65, 0, 31.65, 25.32, 0, 25.32, 0, 0], [0, 0, 31.65, 0, 31.65, 25.32, 0, 25.32, 0, 0], [31.65, 0, 31.65, 25.32, 0, 25.32, 0, 0, 31.65, 0], [0, 0, 63.29, 0, 31.65, 25.32, 0, 0], [0, 50.63, 63.29, 0, 63.29, 50.63, 0, 50.63], [0, 50.63, 0, 0, 63.29, 50.63, 0, 50.63]], [[107.59, 0, 126.58, 0, 126.58, 101.27, 0, 101.27, 0, 0, 107.59, 0], [0, 0, 120.25, 0, 120.25, 101.27, 0, 101.27, 0, 0], [0, 0, 126.58, 0, 126.58, 101.27, 0, 101.27, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [0, 6.33, 0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 6.33], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [506.33, 0, 506.33, 101.27, 0, 101.27, 0, 0, 506.33, 0], [6.33, 0, 126.58, 0, 126.58, 50.63, 0, 50.63, 0, 0, 6.33, 0], [0, 0, 126.58, 0, 126.58, 50.63, 0, 50.63, 0, 0], [253.16, 50.63, 0, 50.63, 0, 0, 253.16, 0, 253.16, 50.63], [189.87, 0, 379.75, 101.27, 0, 101.27, 189.87, 0], [0, 0, 158.23, 0, 63.29, 50.63, 0, 50.63, 0, 0], [0, 0, 158.23, 0, 158.23, 50.63, 94.94, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 101.27, 0, 101.27, 0, 0], [0, 0, 63.29, 0, 63.29, 101.27, 0, 101.27, 0, 0], [0, 0, 50.63, 0, 50.63, 6.33, 0, 31.65, 0, 0], [0, 0, 50.63, 0, 50.63, 31.65, 0, 6.33, 0, 0]], [[0, 50.63, 31.65, 25.32, 50.63, 0, 82.28, 31.65, 107.59, 18.99, 126.58, 37.97, 126.58, 50.63, 0, 50.63], [0, 0, 126.58, 0, 126.58, 88.61, 107.59, 69.62, 82.28, 82.28, 50.63, 50.63, 31.65, 75.95, 0, 101.27, 0, 0], [0, 0, 126.58, 0, 126.58, 31.65, 94.94, 12.66, 94.94, 50.63, 69.62, 44.3, 63.29, 25.32, 44.3, 18.99, 44.3, 31.65, 25.32, 37.97, 25.32, 50.63, 6.33, 50.63, 18.99, 12.66, 0, 0], [0, 0, 18.99, 12.66, 6.33, 50.63, 18.99, 50.63, 25.32, 50.63, 25.32, 37.97, 44.3, 31.65, 44.3, 18.99, 63.29, 25.32, 69.62, 44.3, 94.94, 50.63, 94.94, 12.66, 126.58, 31.65, 126.58, 37.97, 126.58, 101.27, 107.59, 101.27, 107.59, 69.62, 88.61, 69.62, 82.28, 50.63, 69.62, 50.63, 75.95, 75.95, 82.28, 82.28, 82.28, 101.27, 63.29, 101.27, 44.3, 101.27, 56.96, 69.62, 37.97, 56.96, 31.65, 75.95, 37.97, 94.94, 31.65, 94.94, 25.32, 101.27, 0, 101.27, 0, 0], [37.97, 50.63, 12.66, 50.63, 12.66, 31.65, 6.33, 25.32, 0, 0, 12.66, 0, 18.99, 18.99, 37.97, 18.99, 37.97, 50.63], [18.99, 44.3, 0, 44.3, 6.33, 37.97, 12.66, 37.97, 6.33, 18.99, 12.66, 0, 31.65, 12.66, 18.99, 44.3], [0, 0, 31.65, 31.65, 18.99, 82.28, 0, 101.27, 0, 0], [0, 0, 126.58, 0, 94.94, 31.65, 31.65, 31.65, 0, 0], [31.65, 0, 31.65, 101.27, 12.66, 82.28, 0, 31.65, 31.65, 0], [0, 69.62, 18.99, 50.63, 31.65, 0, 94.94, 0, 94.94, 18.99, 63.29, 18.99, 50.63, 18.99, 44.3, 50.63, 107.59, 50.63, 126.58, 69.62, 0, 69.62], [50.63, 0, 63.29, 44.3, 0, 44.3, 6.33, 12.66, 44.3, 12.66, 50.63, 0], [50.63, 25.32, 56.96, 12.66, 69.62, 0, 82.28, 0, 94.94, 6.33, 101.27, 18.99, 101.27, 31.65, 88.61, 50.63, 75.95, 63.29, 50.63, 75.95, 25.32, 63.29, 12.66, 50.63, 0, 31.65, 0, 18.99, 12.66, 6.33, 18.99, 0, 31.65, 0, 44.3, 12.66, 50.63, 25.32], [0, 0, 63.29, 0, 63.29, 44.3, 56.96, 31.65, 44.3, 18.99, 31.65, 18.99, 12.66, 37.97, 12.66, 50.63, 25.32, 69.62, 37.97, 82.28, 63.29, 94.94, 63.29, 101.27, 0, 101.27, 0, 0], [0, 0, 63.29, 0, 63.29, 101.27, 0, 101.27, 0, 94.94, 25.32, 82.28, 37.97, 69.62, 50.63, 50.63, 50.63, 37.97, 44.3, 25.32, 31.65, 18.99, 18.99, 18.99, 6.33, 31.65, 0, 44.3, 0, 6.33, 0, 0], [0, 0, 126.58, 0, 0, 101.27, 0, 0], [0, 25.32, 31.65, 0, 31.65, 25.32, 6.33, 25.32, 0, 25.32], [0, 25.32, 31.65, 0, 31.65, 50.63, 0, 50.63, 0, 25.32], [0, 25.32, 31.65, 0, 31.65, 75.95, 0, 75.95, 0, 25.32], [0, 25.32, 31.65, 0, 31.65, 101.27, 0, 101.27, 0, 25.32], [31.65, 37.97, 44.3, 0, 56.96, 37.97, 88.61, 25.32, 63.29, 56.96, 75.95, 82.28, 44.3, 63.29, 12.66, 82.28, 25.32, 56.96, 0, 25.32, 31.65, 37.97], [63.29, 0, 63.29, 6.33, 50.63, 44.3, 18.99, 31.65, 44.3, 63.29, 31.65, 88.61, 63.29, 69.62, 63.29, 101.27, 0, 101.27, 0, 0, 63.29, 0], [0, 0, 63.29, 0, 63.29, 101.27, 0, 101.27, 0, 69.62, 31.65, 88.61, 18.99, 63.29, 44.3, 31.65, 12.66, 44.3, 0, 0], [0, 63.29, 0, 0, 50.63, 0, 50.63, 63.29, 0, 63.29], [50.63, 0, 50.63, 6.33, 0, 6.33, 0, 0, 50.63, 0], [0, 0, 126.58, 0, 126.58, 31.65, 0, 31.65, 0, 0], [0, 0, 37.97, 0, 37.97, 63.29, 0, 0], [0, 0, 37.97, 0, 0, 63.29, 0, 0], [37.97, 0, 37.97, 69.62, 0, 69.62, 0, 63.29, 37.97, 0], [0, 0, 37.97, 63.29, 37.97, 69.62, 0, 69.62, 0, 0], [6.33, 0, 12.66, 6.33, 0, 12.66, 6.33, 0], [88.61, 25.32, 0, 101.27, 0, 6.33, 0, 0, 120.25, 0, 126.58, 0, 82.28, 25.32, 88.61, 25.32], [0, 101.27, 101.27, 31.65, 101.27, 37.97, 126.58, 0, 126.58, 101.27, 120.25, 101.27, 0, 101.27]], [[126.58, 202.53, 0, 101.27, 126.58, 0, 189.87, 151.9, 126.58, 202.53], [18.99, 50.63, 0, 0, 82.28, 0, 82.28, 50.63, 18.99, 50.63], [0, 101.27, 0, 6.33, 0, 0, 126.58, 0, 0, 101.27], [126.58, 101.27, 44.3, 101.27, 0, 0, 126.58, 0, 126.58, 101.27], [0, 50.63, 0, 0, 126.58, 0, 126.58, 50.63, 0, 50.63], [126.58, 0, 126.58, 6.33, 126.58, 101.27, 0, 101.27, 0, 0, 126.58, 0], [253.16, 44.3, 253.16, 50.63, 126.58, 50.63, 126.58, 151.9, 107.59, 151.9, 107.59, 126.58, 0, 107.59, 31.65, 75.95, 0, 50.63, 126.58, 0, 253.16, 44.3], [0, 101.27, 126.58, 0, 126.58, 202.53, 0, 202.53, 0, 101.27], [506.33, 0, 487.34, 25.32, 6.33, 25.32, 0, 0, 506.33, 0], [0, 0, 126.58, 101.27, 0, 101.27, 0, 0], [63.29, 0, 139.24, 0, 177.22, 31.65, 253.16, 0, 253.16, 6.33, 253.16, 50.63, 0, 50.63, 63.29, 0], [0, 0, 113.92, 0, 37.97, 31.65, 0, 0], [379.75, 94.94, 259.49, 94.94, 126.58, 50.63, 0, 101.27, 0, 0, 379.75, 94.94], [0, 0, 126.58, 0, 126.58, 6.33, 0, 6.33, 0, 0], [379.75, 94.94, 0, 0, 253.16, 0, 379.75, 94.94], [0, 0, 31.65, 25.32, 0, 56.96, 0, 0], [101.27, 0, 107.59, 0, 107.59, 12.66, 0, 12.66, 0, 0, 101.27, 0], [0, 0, 107.59, 18.99, 107.59, 31.65, 0, 31.65, 0, 0], [113.92, 88.61, 0, 0, 234.18, 0, 120.25, 88.61, 113.92, 88.61], [120.25, 94.94, 0, 0, 12.66, 0, 126.58, 88.61, 120.25, 94.94], [6.33, 0, 50.63, 37.97, 0, 0, 6.33, 0], [0, 25.32, 18.99, 0, 18.99, 25.32, 0, 25.32], [0, 6.33, 0, 0, 6.33, 25.32, 0, 25.32, 0, 6.33], [506.33, 0, 506.33, 12.66, 493.67, 12.66, 493.67, 18.99, 506.33, 25.32, 443.04, 25.32, 474.68, 12.66, 443.04, 12.66, 411.39, 25.32, 379.75, 12.66, 329.11, 12.66, 329.11, 25.32, 316.46, 12.66, 297.47, 25.32, 284.81, 12.66, 265.82, 12.66, 265.82, 18.99, 253.16, 25.32, 234.18, 12.66, 221.52, 25.32, 202.53, 12.66, 183.54, 25.32, 170.89, 12.66, 158.23, 25.32, 139.24, 12.66, 126.58, 25.32, 0, 25.32, 0, 0, 506.33, 0]], [[0, 0, 63.29, 126.58, 63.29, 183.54, 0, 0], [0, 126.58, 63.29, 0, 0, 177.22, 0, 126.58], [31.65, 0, 0, 75.95, 0, 50.63, 31.65, 0], [0, 0, 31.65, 50.63, 31.65, 75.95, 0, 0], [31.65, 0, 63.29, 50.63, 31.65, 101.27, 0, 50.63, 31.65, 0], [31.65, 0, 63.29, 37.97, 31.65, 113.92, 0, 37.97, 31.65, 0], [0, 0, 31.65, 0, 0, 151.9, 0, 0], [31.65, 0, 31.65, 151.9, 0, 0, 31.65, 0], [31.65, 0, 18.99, 227.85, 0, 126.58, 31.65, 0], [0, 0, 25.32, 126.58, 0, 227.85, 0, 0], [25.32, 101.27, 25.32, 50.63, 0, 0, 44.3, 50.63, 44.3, 50.63, 25.32, 101.27], [37.97, 0, 18.99, 50.63, 18.99, 101.27, 0, 50.63, 37.97, 0], [25.32, 0, 31.65, 25.32, 56.96, 12.66, 25.32, 75.95, 0, 25.32, 25.32, 0], [56.96, 25.32, 31.65, 75.95, 0, 12.66, 25.32, 25.32, 37.97, 0, 56.96, 25.32], [0, 0, 44.3, 101.27, 0, 202.53, 0, 0], [37.97, 0, 37.97, 202.53, 0, 101.27, 37.97, 0], [25.32, 0, 31.65, 101.27, 63.29, 101.27, 31.65, 151.9, 0, 101.27, 25.32, 0], [31.65, 151.9, 0, 101.27, 31.65, 101.27, 31.65, 0, 50.63, 101.27, 31.65, 151.9], [31.65, 0, 44.3, 126.58, 31.65, 177.22, 0, 126.58, 31.65, 0], [12.66, 0, 31.65, 126.58, 12.66, 177.22, 0, 126.58, 12.66, 0], [0, 0, 31.65, 25.32, 0, 25.32, 0, 0], [31.65, 0, 31.65, 25.32, 0, 25.32, 31.65, 0], [31.65, 0, 31.65, 6.33, 50.63, 88.61, 0, 88.61, 31.65, 0], [25.32, 0, 50.63, 88.61, 0, 88.61, 25.32, 0], [12.66, 0, 44.3, 50.63, 0, 50.63, 12.66, 0], [18.99, 0, 50.63, 50.63, 0, 50.63, 18.99, 0], [25.32, 0, 25.32, 6.33, 44.3, 101.27, 0, 101.27, 25.32, 0], [18.99, 0, 44.3, 101.27, 0, 101.27, 18.99, 0], [18.99, 0, 18.99, 75.95, 0, 50.63, 18.99, 0], [0, 0, 18.99, 44.3, 0, 69.62, 0, 0], [12.66, 0, 18.99, 37.97, 0, 37.97, 12.66, 0], [6.33, 0, 18.99, 37.97, 12.66, 37.97, 0, 37.97, 6.33, 0], [18.99, 0, 37.97, 37.97, 18.99, 50.63, 0, 37.97, 18.99, 0], [12.66, 0, 25.32, 6.33, 12.66, 12.66, 0, 6.33, 12.66, 0]], [[63.29, 50.63, 0, 0, 126.58, 0, 63.29, 50.63], [0, 50.63, 63.29, 0, 189.87, 50.63, 126.58, 101.27, 0, 50.63], [189.87, 50.63, 63.29, 101.27, 0, 50.63, 126.58, 0, 189.87, 50.63], [0, 50.63, 0, 0, 63.29, 0, 0, 50.63], [63.29, 50.63, 0, 0, 63.29, 0, 63.29, 50.63], [63.29, 0, 63.29, 25.32, 0, 0, 63.29, 0], [0, 0, 63.29, 0, 0, 25.32, 0, 0], [126.58, 50.63, 0, 0, 63.29, 0, 126.58, 50.63], [0, 50.63, 63.29, 0, 126.58, 0, 0, 50.63], [63.29, 0, 126.58, 25.32, 63.29, 25.32, 0, 0, 63.29, 0], [63.29, 0, 126.58, 0, 63.29, 25.32, 0, 25.32, 63.29, 0], [0, 0, 63.29, 0, 0, 25.32, 0, 0], [0, 0, 63.29, 0, 63.29, 25.32, 0, 0], [63.29, 0, 126.58, 50.63, 63.29, 25.32, 0, 25.32, 63.29, 0], [63.29, 0, 126.58, 25.32, 63.29, 25.32, 0, 50.63, 63.29, 0], [0, 0, 31.65, 75.95, 63.29, 0, 63.29, 37.97, 31.65, 88.61, 0, 37.97, 0, 0], [0, 12.66, 31.65, 0, 63.29, 12.66, 31.65, 88.61, 0, 12.66], [126.58, 25.32, 253.16, 75.95, 0, 0, 126.58, 25.32], [0, 75.95, 126.58, 25.32, 253.16, 0, 0, 75.95], [0, 101.27, 31.65, 50.63, 12.66, 25.32, 31.65, 0, 63.29, 50.63, 0, 101.27], [63.29, 101.27, 0, 50.63, 31.65, 0, 50.63, 25.32, 31.65, 50.63, 63.29, 101.27], [94.94, 50.63, 63.29, 25.32, 0, 50.63, 0, 0, 63.29, 0, 94.94, 50.63], [0, 50.63, 31.65, 0, 94.94, 0, 94.94, 50.63, 31.65, 25.32, 0, 50.63], [0, 50.63, 94.94, 0, 63.29, 101.27, 0, 50.63], [31.65, 101.27, 0, 0, 94.94, 50.63, 31.65, 101.27], [0, 50.63, 0, 0, 31.65, 0, 50.63, 63.29, 0, 50.63], [18.99, 0, 50.63, 0, 50.63, 50.63, 0, 63.29, 18.99, 0], [0, 101.27, 0, 0, 12.66, 0, 12.66, 101.27, 0, 101.27], [0, 0, 31.65, 0, 12.66, 25.32, 31.65, 50.63, 0, 101.27, 0, 0], [31.65, 0, 31.65, 101.27, 0, 50.63, 18.99, 25.32, 0, 0, 31.65, 0], [0, 0, 126.58, 50.63, 0, 25.32, 0, 0], [126.58, 0, 126.58, 25.32, 0, 50.63, 126.58, 0], [0, 0, 31.65, 0, 0, 50.63, 0, 0], [0, 0, 31.65, 18.99, 0, 18.99, 0, 0], [31.65, 50.63, 0, 0, 31.65, 0, 31.65, 50.63], [31.65, 0, 31.65, 18.99, 0, 18.99, 31.65, 0], [63.29, 50.63, 31.65, 0, 126.58, 50.63, 94.94, 50.63, 0, 101.27, 63.29, 50.63], [126.58, 101.27, 31.65, 50.63, 0, 50.63, 94.94, 0, 63.29, 50.63, 126.58, 101.27], [31.65, 0, 126.58, 0, 0, 50.63, 31.65, 0], [94.94, 0, 126.58, 50.63, 0, 0, 94.94, 0], [0, 12.66, 31.65, 0, 31.65, 37.97, 0, 12.66], [0, 0, 31.65, 12.66, 0, 37.97, 0, 0], [31.65, 0, 94.94, 25.32, 0, 25.32, 31.65, 0], [63.29, 0, 94.94, 25.32, 0, 25.32, 63.29, 0], [0, 0, 6.33, 25.32, 6.33, 69.62, 31.65, 69.62, 126.58, 120.25, 189.87, 120.25, 215.19, 101.27, 221.52, 107.59, 189.87, 126.58, 126.58, 126.58, 31.65, 75.95, 0, 75.95, 0, 0], [221.52, 0, 221.52, 75.95, 189.87, 75.95, 94.94, 126.58, 31.65, 126.58, 0, 107.59, 6.33, 101.27, 31.65, 120.25, 94.94, 120.25, 189.87, 69.62, 215.19, 69.62, 215.19, 25.32, 221.52, 0], [31.65, 0, 63.29, 18.99, 0, 18.99, 31.65, 0], [31.65, 0, 63.29, 18.99, 0, 18.99, 31.65, 0], [0, 0, 56.96, 0, 0, 31.65, 0, 0], [56.96, 0, 56.96, 31.65, 0, 0, 56.96, 0], [31.65, 0, 63.29, 31.65, 37.97, 31.65, 0, 12.66, 31.65, 0], [31.65, 0, 63.29, 12.66, 25.32, 31.65, 0, 31.65, 31.65, 0], [0, 0, 63.29, 56.96, 31.65, 69.62, 0, 0], [63.29, 0, 31.65, 69.62, 0, 56.96, 63.29, 0], [6.33, 25.32, 0, 0, 31.65, 69.62, 6.33, 69.62, 6.33, 25.32], [31.65, 0, 25.32, 25.32, 25.32, 69.62, 0, 69.62, 31.65, 0], [44.3, 37.97, 0, 0, 82.28, 25.32, 44.3, 37.97], [0, 25.32, 82.28, 0, 37.97, 37.97, 0, 25.32], [50.63, 31.65, 0, 0, 164.56, 50.63, 50.63, 31.65], [164.56, 0, 107.59, 37.97, 0, 50.63, 164.56, 0], [0, 0, 12.66, 18.99, 0, 18.99, 0, 0], [12.66, 0, 12.66, 18.99, 0, 18.99, 12.66, 0], [0, 0, 18.99, 18.99, 0, 18.99, 0, 0], [18.99, 0, 18.99, 18.99, 0, 18.99, 18.99, 0], [0, 0, 37.97, 12.66, 12.66, 31.65, 0, 0], [37.97, 0, 25.32, 31.65, 0, 12.66, 37.97, 0]], [[506.33, 25.32, 0, 25.32, 0, 0, 506.33, 0, 506.33, 25.32], [126.58, 0, 126.58, 75.95, 0, 75.95, 0, 0, 126.58, 0], [126.58, 44.3, 126.58, 50.63, 0, 50.63, 63.29, 0, 120.25, 44.3, 126.58, 44.3], [31.65, 44.3, 44.3, 56.96, 0, 56.96, 12.66, 44.3, 12.66, 0, 31.65, 0, 31.65, 44.3], [50.63, 69.62, 25.32, 69.62, 12.66, 69.62, 0, 88.61, 18.99, 0, 31.65, 12.66, 44.3, 12.66, 63.29, 25.32, 75.95, 37.97, 75.95, 50.63, 63.29, 56.96, 63.29, 69.62, 50.63, 69.62], [18.99, 12.66, 31.65, 0, 37.97, 0, 37.97, 0, 37.97, 6.33, 31.65, 44.3, 12.66, 50.63, 12.66, 37.97, 12.66, 31.65, 0, 18.99, 18.99, 18.99, 18.99, 12.66], [126.58, 0, 126.58, 101.27, 63.29, 69.62, 25.32, 69.62, 0, 0, 126.58, 0], [145.57, 69.62, 50.63, 75.95, 56.96, 37.97, 18.99, 25.32, 0, 0, 120.25, 0, 145.57, 69.62], [18.99, 6.33, 37.97, 0, 63.29, 6.33, 82.28, 0, 113.92, 12.66, 113.92, 37.97, 88.61, 56.96, 50.63, 56.96, 18.99, 56.96, 0, 44.3, 0, 18.99, 18.99, 6.33], [139.24, 37.97, 132.91, 75.95, 94.94, 88.61, 50.63, 82.28, 0, 69.62, 0, 50.63, 25.32, 31.65, 94.94, 0, 139.24, 37.97], [63.29, 25.32, 50.63, 50.63, 18.99, 56.96, 0, 50.63, 0, 0, 0, 0, 37.97, 0, 63.29, 25.32], [88.61, 6.33, 101.27, 25.32, 75.95, 44.3, 75.95, 63.29, 101.27, 69.62, 94.94, 88.61, 69.62, 101.27, 50.63, 107.59, 37.97, 107.59, 25.32, 94.94, 18.99, 88.61, 12.66, 82.28, 25.32, 75.95, 37.97, 50.63, 12.66, 25.32, 0, 25.32, 6.33, 12.66, 18.99, 6.33, 31.65, 0, 44.3, 0, 56.96, 0, 69.62, 0, 88.61, 6.33], [0, 6.33, 75.95, 0, 113.92, 0, 177.22, 31.65, 177.22, 88.61, 132.91, 69.62, 151.9, 50.63, 151.9, 25.32, 120.25, 12.66, 101.27, 18.99, 75.95, 12.66, 69.62, 12.66, 44.3, 25.32, 0, 6.33], [0, 0, 75.95, 0, 126.58, 18.99, 126.58, 88.61, 0, 88.61, 0, 0], [151.9, 94.94, 158.23, 94.94, 151.9, 101.27, 151.9, 126.58, 164.56, 139.24, 158.23, 145.57, 101.27, 101.27, 50.63, 139.24, 18.99, 88.61, 25.32, 50.63, 0, 25.32, 0, 0, 37.97, 0, 69.62, 31.65, 101.27, 37.97, 94.94, 75.95, 107.59, 75.95, 120.25, 82.28, 151.9, 94.94], [82.28, 0, 88.61, 0, 120.25, 44.3, 107.59, 56.96, 101.27, 132.91, 44.3, 132.91, 25.32, 120.25, 25.32, 75.95, 44.3, 75.95, 44.3, 63.29, 56.96, 56.96, 56.96, 37.97, 18.99, 18.99, 12.66, 18.99, 0, 6.33, 0, 0, 50.63, 6.33, 82.28, 0], [139.24, 0, 132.91, 18.99, 120.25, 37.97, 101.27, 37.97, 113.92, 50.63, 113.92, 69.62, 132.91, 63.29, 126.58, 94.94, 145.57, 75.95, 151.9, 75.95, 145.57, 82.28, 145.57, 120.25, 132.91, 132.91, 0, 132.91, 0, 6.33, 37.97, 6.33, 63.29, 31.65, 75.95, 31.65, 120.25, 12.66, 132.91, 0, 139.24, 0], [0, 0, 215.19, 0, 215.19, 25.32, 196.2, 12.66, 126.58, 44.3, 113.92, 25.32, 94.94, 18.99, 56.96, 18.99, 31.65, 31.65, 25.32, 44.3, 0, 44.3, 0, 0]], [[0, 101.27, 0, 0, 126.58, 0, 126.58, 101.27, 0, 101.27], [126.58, 0, 126.58, 101.27, 0, 101.27, 0, 0, 126.58, 0], [0, 0, 101.27, 0, 101.27, 101.27, 0, 101.27, 0, 0], [0, 0, 253.16, 0, 253.16, 94.94, 0, 101.27, 0, 0], [56.96, 50.63, 37.97, 50.63, 0, 6.33, 18.99, 0, 56.96, 50.63], [6.33, 50.63, 0, 50.63, 25.32, 0, 44.3, 0, 18.99, 50.63, 6.33, 50.63], [0, 25.32, 0, 0, 75.95, 0, 75.95, 25.32, 0, 25.32], [0, 0, 75.95, 0, 75.95, 18.99, 0, 18.99, 0, 0], [0, 0, 75.95, 0, 75.95, 25.32, 0, 25.32, 0, 0], [6.33, 0, 6.33, 31.65, 0, 37.97, 0, 0, 6.33, 0], [0, 0, 69.62, 0, 75.95, 0, 75.95, 31.65, 0, 31.65, 0, 0], [0, 0, 75.95, 0, 75.95, 25.32, 0, 25.32, 0, 0], [0, 0, 75.95, 0, 75.95, 25.32, 0, 25.32, 0, 0], [0, 0, 75.95, 0, 75.95, 25.32, 0, 25.32, 0, 0], [0, 0, 75.95, 0, 75.95, 25.32, 0, 25.32, 0, 0], [0, 0, 75.95, 0, 75.95, 25.32, 0, 25.32, 0, 0], [0, 0, 75.95, 0, 75.95, 25.32, 0, 25.32, 0, 0], [0, 0, 75.95, 0, 75.95, 18.99, 0, 25.32, 0, 0], [0, 0, 75.95, 0, 75.95, 18.99, 0, 25.32, 0, 0], [75.95, 0, 82.28, 12.66, 0, 12.66, 69.62, 6.33, 75.95, 0], [75.95, 0, 82.28, 12.66, 69.62, 12.66, 0, 12.66, 69.62, 6.33, 75.95, 0], [0, 25.32, 0, 0, 75.95, 0, 75.95, 25.32, 31.65, 25.32, 0, 50.63, 0, 25.32], [75.95, 50.63, 37.97, 25.32, 0, 25.32, 0, 0, 75.95, 0, 75.95, 50.63], [0, 94.94, 0, 0, 31.65, 0, 31.65, 101.27, 0, 101.27, 0, 94.94], [44.3, 0, 82.28, 0, 82.28, 50.63, 0, 25.32, 44.3, 25.32, 44.3, 0], [0, 0, 31.65, 6.33, 31.65, 25.32, 69.62, 25.32, 0, 50.63, 0, 0], [31.65, 0, 113.92, 25.32, 0, 25.32, 31.65, 0], [0, 25.32, 69.62, 0, 107.59, 25.32, 0, 25.32], [0, 25.32, 12.66, 25.32, 6.33, 12.66, 0, 18.99, 0, 0, 37.97, 0, 37.97, 50.63, 0, 50.63, 0, 25.32], [0, 0, 31.65, 0, 31.65, 50.63, 0, 50.63, 0, 0], [6.33, 0, 37.97, 0, 37.97, 6.33, 0, 6.33, 6.33, 0], [0, 6.33, 0, 0, 25.32, 0, 31.65, 6.33, 0, 6.33], [0, 31.65, 0, 0, 6.33, 0, 6.33, 37.97, 0, 31.65], [0, 0, 31.65, 0, 31.65, 31.65, 0, 31.65, 0, 0], [0, 0, 25.32, 6.33, 25.32, 37.97, 0, 37.97, 0, 0], [0, 0, 75.95, 63.29, 56.96, 75.95, 31.65, 44.3, 0, 44.3, 0, 0], [75.95, 0, 75.95, 44.3, 37.97, 44.3, 18.99, 88.61, 0, 82.28, 75.95, 0], [0, 0, 56.96, 0, 44.3, 6.33, 37.97, 31.65, 0, 0], [101.27, 6.33, 63.29, 50.63, 69.62, 56.96, 44.3, 101.27, 0, 94.94, 101.27, 0, 101.27, 6.33], [0, 0, 37.97, 0, 37.97, 18.99, 0, 18.99, 6.33, 6.33, 0, 0], [0, 0, 31.65, 0, 75.95, 56.96, 31.65, 56.96, 31.65, 18.99, 0, 12.66, 0, 0], [18.99, 69.62, 37.97, 56.96, 0, 25.32, 6.33, 0, 82.28, 88.61, 37.97, 94.94, 18.99, 69.62], [75.95, 0, 113.92, 0, 50.63, 63.29, 31.65, 82.28, 25.32, 88.61, 69.62, 94.94, 88.61, 63.29, 88.61, 101.27, 0, 101.27, 12.66, 75.95, 50.63, 50.63, 75.95, 0], [37.97, 0, 44.3, 0, 44.3, 6.33, 0, 6.33, 37.97, 0], [0, 0, 12.66, 0, 0, 25.32, 0, 0], [0, 0, 56.96, 0, 31.65, 50.63, 50.63, 50.63, 12.66, 75.95, 6.33, 63.29, 0, 69.62, 0, 0], [18.99, 50.63, 37.97, 50.63, 0, 0, 63.29, 0, 63.29, 94.94, 56.96, 94.94, 18.99, 50.63], [240.51, 0, 367.09, 0, 367.09, 94.94, 360.76, 94.94, 354.43, 94.94, 354.43, 101.27, 0, 101.27, 240.51, 94.94, 240.51, 0], [0, 6.33, 0, 0, 12.66, 0, 0, 6.33], [0, 0, 126.58, 0, 126.58, 101.27, 0, 101.27, 0, 0]], [[0, 0, 126.58, 0, 0, 151.9, 0, 0], [0, 0, 126.58, 0, 126.58, 151.9, 0, 0], [63.29, 37.97, 69.62, 18.99, 82.28, 6.33, 94.94, 0, 113.92, 6.33, 126.58, 25.32, 126.58, 44.3, 113.92, 63.29, 94.94, 82.28, 63.29, 101.27, 31.65, 82.28, 12.66, 63.29, 0, 44.3, 0, 25.32, 12.66, 6.33, 31.65, 0, 44.3, 6.33, 56.96, 18.99, 63.29, 37.97], [0, 44.3, 37.97, 0, 75.95, 44.3, 0, 44.3], [0, 0, 50.63, 0, 25.32, 31.65, 0, 0], [0, 63.29, 37.97, 37.97, 63.29, 0, 113.92, 63.29, 0, 63.29], [113.92, 63.29, 0, 63.29, 50.63, 0, 82.28, 44.3, 113.92, 63.29], [0, 101.27, 0, 0, 126.58, 0, 0, 101.27], [0, 0, 126.58, 0, 126.58, 101.27, 0, 0], [0, 44.3, 44.3, 6.33, 82.28, 0, 0, 44.3], [0, 12.66, 56.96, 0, 170.89, 12.66, 0, 12.66], [0, 12.66, 126.58, 0, 196.2, 12.66, 151.9, 18.99, 0, 12.66], [0, 0, 50.63, 6.33, 139.24, 69.62, 0, 0], [0, 0, 50.63, 0, 82.28, 12.66, 0, 0], [0, 44.3, 88.61, 0, 82.28, 31.65, 0, 44.3], [12.66, 31.65, 0, 0, 101.27, 37.97, 12.66, 31.65], [0, 0, 12.66, 0, 12.66, 88.61, 0, 88.61, 0, 0], [0, 0, 113.92, 0, 113.92, 12.66, 0, 12.66, 0, 0], [0, 0, 12.66, 0, 12.66, 88.61, 0, 88.61, 0, 0], [0, 0, 113.92, 0, 113.92, 12.66, 0, 12.66, 0, 0], [0, 0, 12.66, 0, 12.66, 88.61, 0, 88.61, 0, 0], [0, 0, 113.92, 0, 113.92, 12.66, 0, 12.66, 0, 0], [0, 0, 12.66, 0, 12.66, 88.61, 0, 88.61, 0, 0], [0, 0, 113.92, 0, 113.92, 12.66, 0, 12.66, 0, 0], [44.3, 12.66, 56.96, 0, 69.62, 0, 82.28, 6.33, 88.61, 18.99, 82.28, 31.65, 69.62, 44.3, 63.29, 50.63, 50.63, 50.63, 44.3, 44.3, 37.97, 50.63, 25.32, 50.63, 6.33, 31.65, 0, 18.99, 6.33, 6.33, 18.99, 0, 31.65, 0, 44.3, 12.66], [0, 0, 12.66, 0, 12.66, 12.66, 12.66, 18.99, 0, 0], [0, 0, 18.99, 0, 18.99, 6.33, 0, 6.33, 0, 0], [6.33, 0, 12.66, 6.33, 0, 6.33, 0, 0, 6.33, 0], [6.33, 0, 18.99, 12.66, 37.97, 18.99, 56.96, 18.99, 69.62, 18.99, 63.29, 25.32, 50.63, 31.65, 25.32, 31.65, 12.66, 25.32, 0, 0, 6.33, 0], [0, 0, 18.99, 25.32, 31.65, 31.65, 56.96, 37.97, 44.3, 44.3, 25.32, 44.3, 12.66, 37.97, 0, 18.99, 0, 0], [0, 0, 126.58, 0, 126.58, 25.32, 94.94, 6.33, 63.29, 25.32, 31.65, 6.33, 0, 25.32, 0, 0], [0, 0, 31.65, 18.99, 63.29, 0, 94.94, 18.99, 126.58, 0, 126.58, 25.32, 0, 25.32, 0, 0], [0, 0, 126.58, 0, 126.58, 25.32, 94.94, 6.33, 63.29, 25.32, 31.65, 6.33, 0, 25.32, 0, 0], [0, 0, 31.65, 18.99, 63.29, 0, 94.94, 18.99, 126.58, 0, 126.58, 25.32, 0, 25.32, 0, 0], [0, 18.99, 31.65, 0, 63.29, 18.99, 0, 18.99], [0, 18.99, 31.65, 0, 63.29, 18.99, 0, 18.99], [6.33, 0, 63.29, 0, 31.65, 18.99, 0, 0, 6.33, 0], [6.33, 0, 56.96, 0, 63.29, 0, 31.65, 18.99, 0, 0, 6.33, 0], [0, 18.99, 31.65, 0, 63.29, 18.99, 0, 18.99], [0, 18.99, 31.65, 0, 63.29, 18.99, 0, 18.99], [50.63, 0, 63.29, 0, 31.65, 18.99, 0, 0, 50.63, 0], [6.33, 0, 63.29, 0, 31.65, 18.99, 0, 0, 6.33, 0]], [[506.33, 0, 506.33, 69.62, 0, 69.62, 0, 0, 506.33, 0], [177.22, 196.2, 0, 196.2, 0, 0, 107.59, 0, 88.61, 6.33, 50.63, 25.32, 44.3, 56.96, 63.29, 88.61, 101.27, 101.27, 139.24, 88.61, 164.56, 75.95, 164.56, 44.3, 158.23, 25.32, 126.58, 12.66, 113.92, 0, 177.22, 0, 177.22, 196.2], [6.33, 25.32, 63.29, 0, 82.28, 12.66, 113.92, 25.32, 120.25, 44.3, 120.25, 75.95, 56.96, 101.27, 18.99, 88.61, 0, 56.96, 6.33, 25.32], [0, 0, 56.96, 0, 56.96, 107.59, 0, 107.59, 0, 0], [0, 75.95, 0, 69.62, 0, 12.66, 12.66, 0, 88.61, 0, 120.25, 18.99, 126.58, 44.3, 113.92, 69.62, 75.95, 88.61, 69.62, 88.61, 18.99, 88.61, 0, 75.95], [25.32, 18.99, 37.97, 6.33, 56.96, 6.33, 63.29, 18.99, 75.95, 18.99, 88.61, 0, 101.27, 0, 113.92, 18.99, 145.57, 12.66, 164.56, 37.97, 151.9, 50.63, 145.57, 69.62, 126.58, 82.28, 113.92, 69.62, 94.94, 82.28, 75.95, 88.61, 56.96, 75.95, 37.97, 63.29, 25.32, 75.95, 12.66, 82.28, 0, 63.29, 6.33, 50.63, 6.33, 31.65, 12.66, 18.99, 25.32, 18.99], [56.96, 0, 113.92, 0, 113.92, 196.2, 6.33, 196.2, 0, 113.92, 25.32, 94.94, 37.97, 107.59, 56.96, 94.94, 63.29, 82.28, 63.29, 75.95, 75.95, 63.29, 56.96, 37.97, 56.96, 0], [126.58, 25.32, 139.24, 25.32, 145.57, 107.59, 0, 107.59, 0, 6.33, 56.96, 12.66, 63.29, 18.99, 75.95, 12.66, 88.61, 0, 126.58, 25.32], [56.96, 12.66, 0, 6.33, 0, 0, 50.63, 0, 56.96, 12.66], [107.59, 0, 196.2, 0, 196.2, 31.65, 196.2, 37.97, 164.56, 44.3, 151.9, 25.32, 139.24, 25.32, 126.58, 44.3, 113.92, 44.3, 107.59, 31.65, 88.61, 31.65, 75.95, 44.3, 63.29, 44.3, 56.96, 56.96, 56.96, 75.95, 50.63, 88.61, 0, 88.61, 37.97, 69.62, 50.63, 50.63, 50.63, 44.3, 44.3, 18.99, 12.66, 0, 107.59, 0], [0, 31.65, 0, 0, 18.99, 12.66, 18.99, 113.92, 18.99, 120.25, 0, 113.92, 0, 31.65], [0, 0, 12.66, 0, 0, 12.66, 0, 0]], [[0, 6.33, 31.65, 0, 31.65, 25.32, 0, 31.65, 0, 6.33], [0, 12.66, 18.99, 0, 18.99, 18.99, 0, 37.97, 0, 12.66], [0, 25.32, 18.99, 0, 0, 44.3, 0, 25.32], [0, 0, 31.65, 6.33, 31.65, 31.65, 0, 25.32, 0, 0], [0, 0, 18.99, 12.66, 18.99, 37.97, 0, 18.99, 0, 0], [0, 0, 18.99, 25.32, 18.99, 44.3, 0, 0], [0, 6.33, 6.33, 0, 18.99, 0, 25.32, 6.33, 25.32, 18.99, 18.99, 25.32, 6.33, 25.32, 0, 18.99, 0, 6.33], [0, 6.33, 6.33, 0, 18.99, 0, 25.32, 6.33, 25.32, 18.99, 18.99, 25.32, 6.33, 25.32, 0, 18.99, 0, 6.33], [12.66, 0, 25.32, 50.63, 0, 50.63, 12.66, 0], [0, 0, 37.97, 12.66, 101.27, 12.66, 139.24, 0, 101.27, 18.99, 69.62, 18.99, 37.97, 18.99, 0, 0], [0, 0, 12.66, 0, 12.66, 12.66, 0, 12.66, 0, 0], [12.66, 0, 12.66, 12.66, 0, 12.66, 0, 0, 12.66, 0], [31.65, 31.65, 12.66, 18.99, 0, 0, 0, 0, 31.65, 12.66, 44.3, 31.65, 31.65, 31.65], [6.33, 18.99, 44.3, 0, 25.32, 25.32, 6.33, 37.97, 0, 37.97, 6.33, 18.99], [0, 0, 18.99, 0, 18.99, 12.66, 44.3, 12.66, 44.3, 0, 63.29, 0, 56.96, 18.99, 31.65, 25.32, 6.33, 18.99, 6.33, 18.99, 12.66, 18.99, 0, 0], [0, 0, 88.61, 0, 44.3, 31.65, 0, 0], [0, 25.32, 0, 0, 12.66, 12.66, 44.3, 18.99, 75.95, 12.66, 88.61, 0, 88.61, 25.32, 69.62, 37.97, 18.99, 37.97, 0, 25.32], [31.65, 75.95, 12.66, 44.3, 0, 6.33, 6.33, 0, 25.32, 44.3, 31.65, 50.63, 31.65, 75.95], [0, 75.95, 0, 50.63, 6.33, 44.3, 25.32, 0, 31.65, 6.33, 18.99, 44.3, 0, 75.95], [6.33, 0, 18.99, 0, 18.99, 18.99, 0, 18.99, 6.33, 0], [0, 0, 12.66, 0, 18.99, 18.99, 0, 18.99, 0, 0], [50.63, 0, 56.96, 0, 50.63, 18.99, 37.97, 18.99, 0, 6.33, 50.63, 0], [6.33, 0, 56.96, 6.33, 18.99, 18.99, 6.33, 18.99, 0, 0, 6.33, 0], [0, 0, 44.3, 0, 25.32, 12.66, 50.63, 25.32, 25.32, 82.28, 18.99, 88.61, 0, 0], [25.32, 0, 56.96, 50.63, 0, 56.96, 25.32, 0], [18.99, 0, 37.97, 12.66, 0, 18.99, 18.99, 0], [37.97, 0, 18.99, 12.66, 0, 0, 37.97, 0], [37.97, 18.99, 0, 12.66, 18.99, 0, 37.97, 18.99], [0, 0, 12.66, 0, 6.33, 6.33, 0, 0], [0, 0, 75.95, 0, 56.96, 12.66, 18.99, 12.66, 0, 0], [6.33, 6.33, 0, 0, 12.66, 0, 6.33, 6.33], [31.65, 0, 56.96, 56.96, 0, 50.63, 31.65, 0], [0, 6.33, 37.97, 0, 25.32, 50.63, 0, 6.33], [0, 0, 37.97, 6.33, 12.66, 50.63, 0, 0], [6.33, 12.66, 6.33, 6.33, 0, 0, 18.99, 12.66, 0, 31.65, 0, 25.32, 6.33, 18.99, 6.33, 12.66], [0, 12.66, 18.99, 0, 12.66, 6.33, 12.66, 18.99, 18.99, 25.32, 12.66, 25.32, 0, 12.66], [0, 12.66, 18.99, 0, 12.66, 6.33, 12.66, 18.99, 0, 12.66], [31.65, 88.61, 0, 25.32, 6.33, 25.32, 25.32, 12.66, 6.33, 0, 50.63, 0, 31.65, 88.61], [0, 0, 12.66, 6.33, 0, 12.66, 0, 0], [25.32, 0, 50.63, 12.66, 0, 12.66, 25.32, 0], [25.32, 0, 50.63, 12.66, 0, 12.66, 25.32, 0], [25.32, 0, 50.63, 18.99, 25.32, 6.33, 0, 18.99, 25.32, 0], [25.32, 0, 50.63, 18.99, 25.32, 6.33, 0, 18.99, 25.32, 0], [31.65, 0, 63.29, 0, 50.63, 12.66, 12.66, 12.66, 0, 0, 31.65, 0], [0, 0, 50.63, 0, 50.63, 6.33, 25.32, 25.32, 0, 25.32, 0, 0], [0, 0, 50.63, 0, 50.63, 25.32, 25.32, 25.32, 0, 6.33, 0, 0], [56.96, 0, 88.61, 0, 88.61, 6.33, 75.95, 12.66, 12.66, 12.66, 0, 6.33, 0, 0, 31.65, 0, 44.3, 6.33, 56.96, 0], [113.92, 31.65, 31.65, 31.65, 31.65, 56.96, 37.97, 88.61, 18.99, 75.95, 0, 50.63, 6.33, 12.66, 31.65, 0, 69.62, 0, 113.92, 31.65], [37.97, 0, 69.62, 0, 107.59, 12.66, 113.92, 50.63, 94.94, 75.95, 75.95, 88.61, 82.28, 56.96, 82.28, 31.65, 0, 31.65, 31.65, 6.33, 37.97, 0], [37.97, 0, 69.62, 0, 69.62, 25.32, 50.63, 25.32, 37.97, 18.99, 0, 18.99, 37.97, 0], [0, 0, 75.95, 0, 75.95, 18.99, 69.62, 25.32, 0, 25.32, 0, 6.33, 0, 0], [0, 0, 44.3, 18.99, 31.65, 18.99, 0, 18.99, 0, 0], [0, 50.63, 12.66, 18.99, 50.63, 0, 75.95, 50.63, 0, 50.63], [0, 0, 44.3, 0, 18.99, 25.32, 0, 0], [0, 0, 31.65, 44.3, 12.66, 63.29, 0, 63.29, 0, 0], [0, 18.99, 12.66, 18.99, 31.65, 0, 50.63, 31.65, 12.66, 50.63, 0, 82.28, 0, 18.99], [25.32, 0, 94.94, 31.65, 82.28, 75.95, 50.63, 63.29, 31.65, 69.62, 12.66, 44.3, 0, 25.32, 25.32, 0], [25.32, 63.29, 0, 6.33, 18.99, 0, 31.65, 37.97, 50.63, 25.32, 101.27, 63.29, 25.32, 63.29], [56.96, 0, 56.96, 50.63, 75.95, 75.95, 31.65, 44.3, 12.66, 56.96, 0, 18.99, 31.65, 31.65, 56.96, 0], [75.95, 0, 82.28, 44.3, 56.96, 75.95, 69.62, 31.65, 0, 0, 75.95, 0], [69.62, 0, 56.96, 12.66, 6.33, 44.3, 0, 0, 69.62, 0], [63.29, 0, 6.33, 31.65, 0, 63.29, 0, 25.32, 6.33, 18.99, 63.29, 0], [101.27, 0, 82.28, 25.32, 63.29, 25.32, 0, 44.3, 63.29, 0, 101.27, 0], [18.99, 0, 139.24, 0, 151.9, 50.63, 101.27, 25.32, 0, 25.32, 18.99, 0], [12.66, 50.63, 12.66, 44.3, 0, 0, 63.29, 0, 12.66, 50.63], [6.33, 37.97, 0, 37.97, 18.99, 25.32, 63.29, 0, 94.94, 18.99, 101.27, 37.97, 6.33, 37.97], [6.33, 18.99, 0, 0, 69.62, 18.99, 6.33, 18.99], [0, 0, 56.96, 0, 0, 25.32, 0, 0], [0, 12.66, 25.32, 0, 25.32, 25.32, 6.33, 25.32, 0, 12.66], [0, 12.66, 31.65, 0, 37.97, 12.66, 25.32, 37.97, 6.33, 31.65, 0, 12.66], [0, 25.32, 12.66, 0, 31.65, 0, 31.65, 25.32, 0, 25.32], [0, 0, 6.33, 0, 6.33, 6.33, 6.33, 50.63, 0, 50.63, 0, 0], [37.97, 0, 18.99, 50.63, 0, 50.63, 37.97, 0], [0, 37.97, 56.96, 0, 6.33, 56.96, 0, 37.97], [0, 0, 37.97, 0, 0, 12.66, 0, 0], [18.99, 0, 56.96, 18.99, 31.65, 37.97, 12.66, 25.32, 0, 18.99, 18.99, 0], [0, 31.65, 31.65, 0, 31.65, 12.66, 69.62, 0, 69.62, 31.65, 37.97, 50.63, 0, 31.65], [12.66, 0, 31.65, 12.66, 37.97, 37.97, 0, 63.29, 18.99, 37.97, 12.66, 0], [0, 56.96, 50.63, 0, 56.96, 12.66, 44.3, 37.97, 44.3, 69.62, 18.99, 69.62, 0, 56.96], [12.66, 0, 31.65, 6.33, 37.97, 6.33, 0, 56.96, 0, 25.32, 12.66, 0], [18.99, 0, 37.97, 0, 25.32, 37.97, 0, 50.63, 18.99, 0], [31.65, 63.29, 0, 63.29, 0, 50.63, 25.32, 37.97, 37.97, 0, 37.97, 50.63, 31.65, 63.29], [0, 12.66, 31.65, 12.66, 37.97, 0, 44.3, 0, 44.3, 31.65, 0, 18.99, 0, 12.66], [0, 0, 44.3, 0, 44.3, 18.99, 18.99, 12.66, 0, 0], [0, 0, 12.66, 0, 12.66, 56.96, 0, 56.96, 0, 0], [12.66, 0, 12.66, 75.95, 6.33, 75.95, 0, 75.95, 0, 0, 12.66, 0], [12.66, 0, 31.65, 18.99, 31.65, 88.61, 0, 88.61, 0, 18.99, 12.66, 0], [0, 88.61, 0, 25.32, 18.99, 0, 31.65, 18.99, 31.65, 88.61, 0, 88.61], [0, 18.99, 18.99, 0, 37.97, 18.99, 37.97, 88.61, 0, 88.61, 0, 18.99], [0, 0, 18.99, 0, 18.99, 82.28, 0, 88.61, 0, 0], [6.33, 0, 12.66, 0, 12.66, 12.66, 0, 0, 6.33, 0], [0, 0, 18.99, 0, 0, 25.32, 0, 0], [0, 0, 18.99, 0, 18.99, 18.99, 0, 0], [0, 0, 12.66, 0, 0, 18.99, 0, 0], [0, 31.65, 0, 0, 6.33, 0, 12.66, 18.99, 25.32, 18.99, 25.32, 31.65, 0, 31.65], [0, 0, 6.33, 0, 6.33, 18.99, 0, 0], [0, 31.65, 18.99, 25.32, 18.99, 0, 37.97, 31.65, 0, 31.65], [0, 0, 37.97, 0, 18.99, 18.99, 0, 0], [0, 0, 18.99, 18.99, 18.99, 88.61, 0, 56.96, 0, 50.63, 0, 0], [0, 0, 6.33, 0, 18.99, 6.33, 18.99, 18.99, 0, 0], [0, 75.95, 0, 0, 18.99, 75.95, 0, 75.95], [0, 82.28, 0, 31.65, 18.99, 0, 37.97, 25.32, 37.97, 82.28, 0, 82.28], [0, 25.32, 18.99, 0, 37.97, 25.32, 37.97, 82.28, 0, 82.28, 0, 25.32], [0, 25.32, 18.99, 0, 25.32, 12.66, 25.32, 82.28, 18.99, 82.28, 0, 82.28, 0, 25.32], [6.33, 0, 18.99, 0, 0, 31.65, 6.33, 0], [0, 50.63, 12.66, 0, 12.66, 50.63, 0, 50.63], [0, 0, 75.95, 0, 56.96, 25.32, 18.99, 25.32, 0, 0], [18.99, 6.33, 0, 56.96, 0, 0, 18.99, 6.33], [0, 0, 31.65, 0, 31.65, 56.96, 12.66, 6.33, 0, 0], [0, 50.63, 18.99, 0, 37.97, 50.63, 0, 50.63], [18.99, 82.28, 0, 82.28, 0, 18.99, 12.66, 0, 18.99, 25.32, 18.99, 82.28], [31.65, 0, 18.99, 18.99, 18.99, 25.32, 0, 0, 31.65, 0], [0, 0, 37.97, 0, 18.99, 25.32, 6.33, 25.32, 0, 0], [12.66, 56.96, 0, 0, 12.66, 0, 12.66, 56.96], [12.66, 56.96, 0, 56.96, 0, 0, 12.66, 56.96]], [[0, 0, 56.96, 0, 37.97, 12.66, 12.66, 12.66, 12.66, 31.65, 0, 44.3, 0, 0], [0, 44.3, 12.66, 31.65, 12.66, 12.66, 37.97, 12.66, 56.96, 0, 94.94, 0, 63.29, 25.32, 25.32, 25.32, 25.32, 31.65, 25.32, 63.29, 0, 94.94, 0, 44.3], [0, 94.94, 0, 88.61, 25.32, 63.29, 25.32, 25.32, 63.29, 25.32, 94.94, 0, 145.57, 0, 101.27, 44.3, 37.97, 44.3, 37.97, 88.61, 0, 151.9, 0, 94.94], [0, 151.9, 37.97, 88.61, 37.97, 44.3, 44.3, 44.3, 101.27, 44.3, 145.57, 0, 208.86, 0, 145.57, 63.29, 56.96, 63.29, 56.96, 132.91, 0, 202.53, 0, 151.9], [0, 202.53, 56.96, 132.91, 56.96, 63.29, 145.57, 63.29, 208.86, 0, 253.16, 0, 164.56, 82.28, 75.95, 82.28, 75.95, 151.9, 0, 253.16, 0, 202.53], [0, 253.16, 75.95, 151.9, 75.95, 82.28, 164.56, 82.28, 253.16, 0, 310.13, 0, 189.87, 107.59, 94.94, 107.59, 94.94, 177.22, 0, 303.8, 0, 253.16], [0, 303.8, 94.94, 177.22, 94.94, 107.59, 189.87, 107.59, 310.13, 0, 348.1, 0, 208.86, 132.91, 113.92, 132.91, 113.92, 202.53, 0, 348.1, 0, 303.8], [0, 348.1, 113.92, 202.53, 113.92, 132.91, 208.86, 132.91, 348.1, 0, 379.75, 0, 227.85, 151.9, 126.58, 151.9, 126.58, 221.52, 0, 379.75, 0, 348.1], [0, 379.75, 126.58, 221.52, 126.58, 151.9, 227.85, 151.9, 379.75, 0, 424.05, 0, 253.16, 170.89, 145.57, 170.89, 145.57, 208.86, 0, 405.06, 0, 379.75], [18.99, 69.62, 25.32, 44.3, 0, 31.65, 25.32, 25.32, 25.32, 0, 44.3, 18.99, 75.95, 12.66, 56.96, 37.97, 75.95, 56.96, 44.3, 50.63, 18.99, 69.62], [25.32, 88.61, 25.32, 56.96, 0, 50.63, 25.32, 31.65, 25.32, 0, 50.63, 18.99, 88.61, 12.66, 63.29, 37.97, 94.94, 56.96, 50.63, 56.96, 25.32, 88.61], [25.32, 94.94, 25.32, 50.63, 0, 44.3, 25.32, 31.65, 31.65, 0, 50.63, 18.99, 82.28, 12.66, 63.29, 37.97, 88.61, 63.29, 50.63, 63.29, 25.32, 94.94], [18.99, 69.62, 25.32, 37.97, 0, 31.65, 25.32, 18.99, 31.65, 0, 50.63, 12.66, 75.95, 12.66, 56.96, 31.65, 75.95, 50.63, 44.3, 50.63, 18.99, 69.62], [6.33, 63.29, 18.99, 31.65, 0, 31.65, 18.99, 12.66, 18.99, 0, 37.97, 12.66, 63.29, 12.66, 44.3, 25.32, 69.62, 50.63, 37.97, 37.97, 6.33, 63.29], [37.97, 107.59, 37.97, 69.62, 0, 69.62, 31.65, 37.97, 31.65, 0, 69.62, 25.32, 94.94, 6.33, 88.61, 50.63, 126.58, 82.28, 69.62, 69.62, 44.3, 101.27, 37.97, 107.59], [12.66, 63.29, 18.99, 37.97, 0, 37.97, 12.66, 18.99, 12.66, 0, 31.65, 12.66, 50.63, 6.33, 44.3, 25.32, 69.62, 50.63, 31.65, 44.3, 12.66, 63.29], [25.32, 63.29, 18.99, 44.3, 0, 44.3, 12.66, 25.32, 6.33, 6.33, 31.65, 12.66, 50.63, 0, 44.3, 25.32, 63.29, 37.97, 37.97, 37.97, 25.32, 56.96, 25.32, 63.29], [18.99, 56.96, 25.32, 37.97, 0, 31.65, 25.32, 18.99, 31.65, 0, 44.3, 18.99, 63.29, 18.99, 44.3, 31.65, 63.29, 56.96, 37.97, 37.97, 18.99, 56.96], [12.66, 50.63, 18.99, 31.65, 0, 31.65, 12.66, 18.99, 6.33, 0, 31.65, 12.66, 50.63, 0, 44.3, 25.32, 56.96, 37.97, 31.65, 37.97, 12.66, 50.63], [37.97, 75.95, 37.97, 50.63, 0, 44.3, 37.97, 31.65, 31.65, 0, 56.96, 18.99, 75.95, 12.66, 63.29, 37.97, 88.61, 56.96, 56.96, 50.63, 37.97, 75.95], [31.65, 69.62, 31.65, 37.97, 0, 31.65, 31.65, 12.66, 31.65, 0, 50.63, 12.66, 63.29, 6.33, 50.63, 31.65, 88.61, 44.3, 44.3, 44.3, 37.97, 69.62, 31.65, 69.62]], [[25.32, 12.66, 0, 12.66, 37.97, 0, 56.96, 63.29, 126.58, 94.94, 221.52, 69.62, 94.94, 139.24, 18.99, 56.96, 31.65, 18.99, 25.32, 12.66], [0, 69.62, 126.58, 0, 63.29, 145.57, 0, 69.62], [158.23, 0, 63.29, 25.32, 0, 0, 158.23, 0], [101.27, 0, 107.59, 0, 0, 31.65, 0, 25.32, 101.27, 0], [0, 0, 63.29, 25.32, 63.29, 31.65, 0, 0], [0, 69.62, 101.27, 0, 177.22, 6.33, 50.63, 56.96, 164.56, 69.62, 0, 69.62], [0, 88.61, 6.33, 63.29, 37.97, 31.65, 126.58, 0, 183.54, 0, 183.54, 69.62, 151.9, 18.99, 94.94, 31.65, 44.3, 56.96, 0, 94.94, 0, 88.61], [37.97, 6.33, 31.65, 6.33, 50.63, 0, 75.95, 25.32, 56.96, 37.97, 0, 31.65, 12.66, 12.66, 37.97, 6.33], [69.62, 18.99, 63.29, 18.99, 63.29, 18.99, 94.94, 0, 25.32, 82.28, 12.66, 139.24, 56.96, 202.53, 0, 139.24, 18.99, 69.62, 69.62, 18.99], [6.33, 0, 50.63, 6.33, 139.24, 63.29, 145.57, 69.62, 107.59, 50.63, 50.63, 18.99, 0, 12.66, 0, 0, 6.33, 0], [0, 6.33, 6.33, 0, 18.99, 0, 31.65, 12.66, 6.33, 25.32, 0, 6.33], [75.95, 50.63, 107.59, 0, 94.94, 37.97, 69.62, 69.62, 56.96, 75.95, 37.97, 88.61, 25.32, 120.25, 25.32, 107.59, 12.66, 88.61, 0, 82.28, 75.95, 50.63], [0, 0, 12.66, 31.65, 25.32, 31.65, 0, 50.63, 12.66, 37.97, 0, 0], [0, 6.33, 6.33, 0, 12.66, 6.33, 6.33, 12.66, 0, 6.33], [0, 6.33, 6.33, 0, 12.66, 6.33, 6.33, 12.66, 0, 6.33], [6.33, 0, 12.66, 6.33, 6.33, 12.66, 0, 6.33, 6.33, 0], [6.33, 0, 12.66, 6.33, 6.33, 12.66, 0, 6.33, 6.33, 0], [6.33, 0, 12.66, 6.33, 6.33, 12.66, 0, 6.33, 6.33, 0], [0, 6.33, 12.66, 0, 25.32, 6.33, 31.65, 12.66, 12.66, 12.66, 0, 6.33], [0, 31.65, 6.33, 6.33, 37.97, 0, 50.63, 12.66, 25.32, 12.66, 0, 31.65], [18.99, 18.99, 12.66, 12.66, 0, 12.66, 6.33, 0, 18.99, 18.99], [25.32, 6.33, 0, 18.99, 0, 0, 25.32, 6.33], [18.99, 18.99, 6.33, 6.33, 0, 6.33, 0, 0, 6.33, 0, 18.99, 18.99], [18.99, 31.65, 6.33, 6.33, 0, 6.33, 0, 0, 6.33, 0, 18.99, 31.65], [12.66, 37.97, 6.33, 12.66, 0, 6.33, 6.33, 0, 12.66, 37.97], [0, 44.3, 6.33, 12.66, 0, 6.33, 6.33, 0, 12.66, 6.33, 0, 44.3], [6.33, 0, 12.66, 6.33, 6.33, 12.66, 0, 6.33, 6.33, 0], [6.33, 0, 12.66, 6.33, 6.33, 12.66, 0, 6.33, 6.33, 0], [6.33, 0, 12.66, 6.33, 6.33, 12.66, 0, 6.33, 6.33, 0], [6.33, 0, 12.66, 6.33, 6.33, 12.66, 0, 6.33, 6.33, 0], [0, 25.32, 6.33, 6.33, 25.32, 0, 37.97, 12.66, 25.32, 6.33, 12.66, 12.66, 0, 25.32], [0, 0, 18.99, 0, 31.65, 12.66, 0, 0], [18.99, 0, 25.32, 31.65, 6.33, 37.97, 0, 18.99, 6.33, 6.33, 18.99, 0], [44.3, 6.33, 0, 25.32, 12.66, 0, 44.3, 6.33], [0, 0, 12.66, 6.33, 18.99, 31.65, 0, 0], [12.66, 6.33, 12.66, 0, 18.99, 6.33, 18.99, 25.32, 0, 31.65, 12.66, 6.33], [0, 0, 12.66, 6.33, 12.66, 25.32, 6.33, 37.97, 6.33, 12.66, 0, 0], [25.32, 0, 18.99, 12.66, 6.33, 18.99, 0, 18.99, 25.32, 0], [12.66, 0, 12.66, 18.99, 6.33, 25.32, 0, 31.65, 12.66, 0], [0, 0, 44.3, 0, 56.96, 12.66, 0, 0], [6.33, 0, 25.32, 6.33, 31.65, 18.99, 31.65, 31.65, 25.32, 37.97, 18.99, 12.66, 0, 0, 0, 0, 6.33, 0], [6.33, 31.65, 0, 6.33, 6.33, 0, 12.66, 6.33, 6.33, 12.66, 6.33, 31.65], [18.99, 31.65, 6.33, 12.66, 0, 12.66, 0, 6.33, 6.33, 0, 6.33, 6.33, 18.99, 31.65], [12.66, 0, 18.99, 0, 18.99, 18.99, 18.99, 37.97, 25.32, 63.29, 12.66, 50.63, 6.33, 37.97, 0, 12.66, 12.66, 0], [25.32, 0, 31.65, 0, 0, 12.66, 12.66, 0, 25.32, 0], [0, 12.66, 12.66, 6.33, 18.99, 0, 18.99, 6.33, 12.66, 12.66, 0, 12.66], [0, 0, 12.66, 6.33, 6.33, 6.33, 0, 0], [0, 63.29, 0, 31.65, 25.32, 0, 31.65, 0, 31.65, 31.65, 18.99, 37.97, 0, 63.29], [0, 0, 18.99, 37.97, 25.32, 88.61, 18.99, 94.94, 12.66, 37.97, 0, 0], [63.29, 12.66, 44.3, 6.33, 0, 0, 12.66, 0, 31.65, 0, 50.63, 6.33, 63.29, 12.66], [63.29, 12.66, 0, 0, 25.32, 0, 63.29, 12.66], [56.96, 12.66, 31.65, 6.33, 0, 6.33, 12.66, 0, 31.65, 0, 56.96, 12.66], [18.99, 12.66, 31.65, 25.32, 44.3, 31.65, 25.32, 25.32, 0, 0, 18.99, 12.66], [82.28, 0, 37.97, 6.33, 0, 25.32, 12.66, 12.66, 37.97, 0, 82.28, 0], [50.63, 0, 25.32, 18.99, 0, 44.3, 18.99, 18.99, 50.63, 0], [0, 25.32, 0, 12.66, 6.33, 0, 0, 25.32], [75.95, 6.33, 69.62, 6.33, 0, 37.97, 6.33, 18.99, 37.97, 0, 75.95, 6.33], [37.97, 18.99, 12.66, 18.99, 0, 25.32, 12.66, 0, 31.65, 6.33, 37.97, 18.99], [0, 0, 37.97, 0, 12.66, 18.99, 12.66, 12.66, 0, 0], [0, 6.33, 6.33, 0, 18.99, 0, 25.32, 6.33, 25.32, 12.66, 18.99, 18.99, 6.33, 18.99, 0, 12.66, 0, 6.33], [0, 0, 31.65, 6.33, 0, 6.33, 0, 6.33, 0, 0], [6.33, 0, 25.32, 25.32, 0, 0, 6.33, 0], [6.33, 0, 0, 37.97, 0, 0, 6.33, 0], [31.65, 0, 31.65, 6.33, 0, 31.65, 31.65, 0], [44.3, 0, 44.3, 6.33, 0, 6.33, 44.3, 0], [6.33, 0, 12.66, 31.65, 0, 0, 6.33, 0], [37.97, 6.33, 0, 6.33, 25.32, 0, 37.97, 6.33], [18.99, 6.33, 0, 6.33, 18.99, 0, 25.32, 6.33, 18.99, 6.33], [37.97, 6.33, 6.33, 12.66, 0, 0, 25.32, 0, 31.65, 0, 37.97, 6.33], [0, 18.99, 0, 0, 31.65, 0, 0, 18.99], [6.33, 0, 6.33, 6.33, 0, 6.33, 0, 0, 6.33, 0], [0, 0, 6.33, 50.63, 0, 37.97, 0, 0], [6.33, 6.33, 0, 0, 12.66, 0, 6.33, 6.33], [0, 0, 12.66, 0, 0, 18.99, 6.33, 6.33, 0, 0], [6.33, 0, 6.33, 25.32, 0, 25.32, 0, 12.66, 6.33, 0], [0, 0, 12.66, 0, 18.99, 6.33, 0, 0], [0, 6.33, 12.66, 0, 12.66, 6.33, 0, 6.33], [0, 18.99, 6.33, 0, 31.65, 0, 0, 18.99], [0, 0, 6.33, 0, 12.66, 6.33, 0, 0], [0, 18.99, 6.33, 6.33, 25.32, 0, 37.97, 6.33, 50.63, 18.99, 31.65, 6.33, 25.32, 6.33, 12.66, 6.33, 0, 18.99], [0, 37.97, 6.33, 18.99, 25.32, 6.33, 50.63, 0, 69.62, 6.33, 82.28, 18.99, 63.29, 6.33, 37.97, 6.33, 12.66, 18.99, 0, 37.97], [6.33, 0, 6.33, 18.99, 12.66, 44.3, 0, 18.99, 6.33, 0], [0, 0, 6.33, 0, 0, 18.99, 0, 0], [0, 6.33, 18.99, 0, 31.65, 0, 0, 6.33], [0, 0, 6.33, 0, 6.33, 12.66, 12.66, 12.66, 12.66, 18.99, 0, 18.99, 0, 0], [0, 0, 12.66, 0, 12.66, 6.33, 0, 6.33, 0, 0], [0, 0, 6.33, 0, 6.33, 12.66, 12.66, 12.66, 12.66, 0, 18.99, 0, 18.99, 12.66, 12.66, 18.99, 6.33, 18.99, 0, 12.66, 0, 0]], [[56.96, 69.62, 69.62, 69.62, 88.61, 63.29, 101.27, 50.63, 107.59, 37.97, 107.59, 25.32, 107.59, 18.99, 88.61, 6.33, 69.62, 0, 50.63, 0, 37.97, 0, 25.32, 6.33, 6.33, 12.66, 0, 31.65, 0, 50.63, 18.99, 63.29, 37.97, 69.62, 56.96, 69.62], [6.33, 18.99, 12.66, 12.66, 25.32, 0, 56.96, 18.99, 63.29, 31.65, 50.63, 44.3, 37.97, 56.96, 25.32, 56.96, 12.66, 56.96, 6.33, 44.3, 0, 31.65, 6.33, 18.99], [50.63, 50.63, 31.65, 56.96, 6.33, 44.3, 0, 31.65, 0, 18.99, 25.32, 0, 56.96, 25.32, 56.96, 44.3, 50.63, 50.63], [31.65, 56.96, 12.66, 50.63, 0, 37.97, 0, 18.99, 6.33, 0, 31.65, 0, 44.3, 6.33, 50.63, 12.66, 56.96, 25.32, 50.63, 37.97, 44.3, 50.63, 31.65, 56.96], [12.66, 44.3, 12.66, 37.97, 6.33, 37.97, 0, 25.32, 0, 18.99, 0, 6.33, 6.33, 6.33, 31.65, 0, 44.3, 12.66, 50.63, 18.99, 44.3, 37.97, 31.65, 50.63, 12.66, 44.3], [6.33, 44.3, 6.33, 31.65, 12.66, 25.32, 0, 18.99, 6.33, 12.66, 6.33, 0, 31.65, 0, 44.3, 6.33, 50.63, 18.99, 50.63, 37.97, 44.3, 44.3, 25.32, 50.63, 12.66, 50.63, 6.33, 44.3], [18.99, 50.63, 12.66, 50.63, 0, 37.97, 0, 12.66, 12.66, 0, 25.32, 0, 44.3, 18.99, 44.3, 37.97, 31.65, 44.3, 18.99, 50.63], [31.65, 75.95, 12.66, 56.96, 0, 44.3, 0, 31.65, 6.33, 12.66, 25.32, 0, 56.96, 18.99, 63.29, 44.3, 50.63, 56.96, 44.3, 75.95, 31.65, 75.95], [6.33, 0, 18.99, 0, 18.99, 12.66, 18.99, 31.65, 6.33, 31.65, 0, 25.32, 0, 18.99, 0, 6.33, 6.33, 0], [6.33, 37.97, 0, 25.32, 0, 12.66, 6.33, 12.66, 12.66, 6.33, 25.32, 0, 44.3, 6.33, 44.3, 31.65, 37.97, 44.3, 25.32, 50.63, 6.33, 37.97], [12.66, 6.33, 31.65, 0, 31.65, 6.33, 44.3, 12.66, 44.3, 31.65, 31.65, 37.97, 18.99, 37.97, 12.66, 44.3, 0, 37.97, 0, 31.65, 0, 25.32, 12.66, 6.33], [31.65, 6.33, 37.97, 6.33, 50.63, 0, 56.96, 12.66, 50.63, 25.32, 44.3, 31.65, 25.32, 37.97, 6.33, 37.97, 0, 25.32, 6.33, 18.99, 12.66, 6.33, 31.65, 6.33], [31.65, 6.33, 44.3, 0, 50.63, 12.66, 50.63, 25.32, 37.97, 44.3, 31.65, 50.63, 6.33, 31.65, 0, 25.32, 12.66, 6.33, 31.65, 6.33], [18.99, 6.33, 31.65, 0, 37.97, 6.33, 44.3, 12.66, 37.97, 37.97, 18.99, 37.97, 6.33, 37.97, 0, 18.99, 18.99, 6.33], [12.66, 0, 18.99, 0, 25.32, 12.66, 37.97, 18.99, 44.3, 37.97, 37.97, 44.3, 37.97, 56.96, 37.97, 69.62, 37.97, 82.28, 25.32, 69.62, 6.33, 37.97, 0, 25.32, 0, 12.66, 0, 6.33, 12.66, 0], [44.3, 0, 37.97, 44.3, 37.97, 63.29, 12.66, 56.96, 12.66, 50.63, 0, 0, 18.99, 0, 44.3, 0], [25.32, 0, 37.97, 12.66, 37.97, 25.32, 31.65, 37.97, 18.99, 31.65, 6.33, 25.32, 0, 18.99, 0, 6.33, 6.33, 0, 25.32, 0], [18.99, 0, 31.65, 6.33, 37.97, 18.99, 37.97, 31.65, 12.66, 44.3, 6.33, 37.97, 0, 31.65, 0, 18.99, 0, 6.33, 18.99, 0], [37.97, 0, 50.63, 12.66, 50.63, 25.32, 44.3, 31.65, 25.32, 37.97, 18.99, 31.65, 6.33, 31.65, 0, 25.32, 12.66, 6.33, 18.99, 0, 37.97, 0], [18.99, 0, 25.32, 6.33, 18.99, 18.99, 25.32, 25.32, 18.99, 25.32, 6.33, 31.65, 0, 18.99, 0, 12.66, 6.33, 0, 18.99, 0], [31.65, 0, 44.3, 12.66, 44.3, 25.32, 37.97, 37.97, 18.99, 56.96, 6.33, 44.3, 0, 25.32, 0, 12.66, 12.66, 0, 31.65, 0], [25.32, 0, 37.97, 12.66, 44.3, 25.32, 25.32, 31.65, 18.99, 31.65, 12.66, 18.99, 0, 12.66, 0, 0, 25.32, 0], [25.32, 0, 31.65, 12.66, 25.32, 31.65, 18.99, 37.97, 6.33, 37.97, 6.33, 25.32, 0, 18.99, 6.33, 6.33, 25.32, 0], [18.99, 6.33, 18.99, 0, 31.65, 6.33, 44.3, 18.99, 44.3, 25.32, 31.65, 31.65, 25.32, 37.97, 18.99, 37.97, 6.33, 37.97, 6.33, 31.65, 0, 31.65, 0, 18.99, 6.33, 12.66, 18.99, 6.33], [37.97, 6.33, 44.3, 12.66, 37.97, 25.32, 31.65, 37.97, 12.66, 37.97, 6.33, 31.65, 0, 25.32, 6.33, 12.66, 12.66, 0, 31.65, 0, 37.97, 6.33], [37.97, 25.32, 189.87, 265.82, 196.2, 265.82, 196.2, 291.14, 177.22, 291.14, 31.65, 50.63, 12.66, 50.63, 25.32, 37.97, 0, 25.32, 18.99, 18.99, 6.33, 0, 31.65, 12.66, 31.65, 25.32, 37.97, 25.32], [120.25, 12.66, 126.58, 25.32, 0, 37.97, 0, 0, 120.25, 12.66], [6.33, 18.99, 158.23, 0, 158.23, 44.3, 0, 37.97, 6.33, 18.99], [31.65, 37.97, 0, 37.97, 0, 25.32, 31.65, 0, 31.65, 37.97], [0, 31.65, 0, 0, 44.3, 0, 44.3, 18.99, 0, 31.65], [0, 253.16, 139.24, 0, 158.23, 0, 158.23, 0, 164.56, 25.32, 126.58, 107.59, 94.94, 151.9, 94.94, 177.22, 0, 284.81, 0, 259.49, 0, 253.16]], [[0, 50.63, 63.29, 0, 63.29, 50.63, 0, 50.63], [0, 50.63, 0, 0, 63.29, 0, 0, 50.63], [0, 0, 63.29, 50.63, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 0], [0, 0, 63.29, 0, 0, 50.63, 0, 0], [63.29, 0, 63.29, 50.63, 0, 0, 63.29, 0], [0, 50.63, 63.29, 0, 63.29, 50.63, 0, 50.63], [0, 0, 63.29, 50.63, 0, 50.63, 0, 0], [63.29, 0, 126.58, 50.63, 0, 50.63, 63.29, 0], [0, 50.63, 63.29, 0, 63.29, 101.27, 0, 50.63], [63.29, 50.63, 0, 101.27, 0, 0, 63.29, 50.63], [63.29, 50.63, 0, 0, 126.58, 0, 63.29, 50.63], [126.58, 101.27, 0, 101.27, 126.58, 0, 126.58, 101.27], [0, 101.27, 0, 0, 126.58, 101.27, 0, 101.27], [126.58, 0, 126.58, 101.27, 0, 0, 126.58, 0], [0, 0, 126.58, 0, 0, 101.27, 0, 0], [0, 50.63, 63.29, 0, 316.46, 0, 379.75, 50.63, 0, 50.63], [0, 0, 379.75, 0, 316.46, 50.63, 63.29, 50.63, 0, 0], [63.29, 303.8, 0, 253.16, 0, 50.63, 63.29, 0, 63.29, 303.8], [0, 303.8, 0, 0, 63.29, 50.63, 63.29, 253.16, 0, 303.8], [0, 303.8, 0, 0, 63.29, 50.63, 63.29, 253.16, 0, 303.8], [0, 50.63, 63.29, 0, 63.29, 303.8, 0, 253.16, 0, 50.63], [63.29, 50.63, 0, 50.63, 63.29, 0, 63.29, 50.63], [0, 50.63, 0, 0, 63.29, 50.63, 0, 50.63], [0, 0, 63.29, 0, 0, 50.63, 0, 0], [63.29, 0, 63.29, 50.63, 0, 0, 63.29, 0]], [[0, 0, 63.29, 0, 63.29, 50.63, 0, 0], [126.58, 101.27, 0, 0, 63.29, 0, 126.58, 50.63, 126.58, 101.27], [0, 0, 63.29, 0, 189.87, 101.27, 189.87, 151.9, 0, 0], [0, 0, 63.29, 0, 253.16, 151.9, 253.16, 196.2, 0, 0], [0, 0, 63.29, 0, 316.46, 196.2, 316.46, 253.16, 0, 0], [63.29, 0, 379.75, 253.16, 379.75, 303.8, 0, 0, 63.29, 0], [63.29, 0, 443.04, 303.8, 379.75, 303.8, 0, 0, 63.29, 0], [443.04, 303.8, 379.75, 303.8, 0, 0, 63.29, 0, 443.04, 303.8], [379.75, 303.8, 316.46, 303.8, 0, 50.63, 0, 0, 379.75, 303.8], [316.46, 253.16, 253.16, 253.16, 0, 50.63, 0, 0, 316.46, 253.16], [253.16, 202.53, 189.87, 202.53, 0, 50.63, 0, 0, 253.16, 202.53], [189.87, 151.9, 126.58, 151.9, 0, 50.63, 0, 0, 189.87, 151.9], [126.58, 101.27, 63.29, 101.27, 0, 50.63, 0, 0, 126.58, 101.27], [63.29, 50.63, 0, 50.63, 0, 0, 63.29, 50.63]], [[63.29, 0, 126.58, 50.63, 0, 50.63, 63.29, 0], [6.33, 0, 132.91, 0, 139.24, 6.33, 0, 6.33, 6.33, 0], [6.33, 0, 12.66, 0, 259.49, 0, 265.82, 6.33, 0, 6.33, 6.33, 0], [6.33, 0, 386.08, 0, 392.41, 6.33, 0, 6.33, 6.33, 0], [0, 0, 506.33, 0, 506.33, 6.33, 0, 6.33, 0, 0], [0, 0, 63.29, 0, 0, 44.3, 0, 0], [63.29, 0, 63.29, 44.3, 0, 44.3, 63.29, 0], [0, 44.3, 0, 0, 63.29, 44.3, 0, 44.3], [0, 0, 63.29, 0, 63.29, 44.3, 0, 0], [0, 44.3, 63.29, 0, 63.29, 44.3, 0, 44.3], [0, 44.3, 0, 0, 63.29, 0, 0, 44.3], [0, 44.3, 0, 0, 63.29, 44.3, 0, 44.3], [63.29, 0, 63.29, 44.3, 0, 0, 63.29, 0], [0, 44.3, 63.29, 0, 63.29, 44.3, 0, 44.3], [0, 0, 63.29, 0, 0, 44.3, 0, 0], [0, 0, 63.29, 44.3, 0, 44.3, 0, 0], [63.29, 0, 63.29, 44.3, 0, 0, 63.29, 0], [0, 44.3, 63.29, 0, 63.29, 44.3, 0, 44.3], [0, 44.3, 0, 0, 63.29, 0, 0, 44.3], [0, 44.3, 0, 0, 63.29, 44.3, 0, 44.3], [0, 0, 63.29, 0, 63.29, 44.3, 0, 0], [56.96, 0, 63.29, 0, 63.29, 44.3, 0, 44.3, 56.96, 0], [0, 0, 63.29, 0, 63.29, 44.3, 0, 44.3, 0, 0], [0, 0, 63.29, 0, 63.29, 44.3, 0, 44.3, 0, 0], [0, 0, 6.33, 0, 63.29, 44.3, 0, 44.3, 0, 0], [56.96, 0, 63.29, 0, 63.29, 6.33, 63.29, 44.3, 0, 44.3, 56.96, 0], [0, 0, 63.29, 0, 63.29, 44.3, 0, 44.3, 0, 0], [0, 0, 63.29, 0, 63.29, 44.3, 0, 44.3, 0, 0], [0, 0, 63.29, 0, 63.29, 44.3, 6.33, 44.3, 0, 44.3, 0, 0], [0, 0, 63.29, 0, 63.29, 44.3, 0, 44.3, 0, 0], [0, 0, 6.33, 0, 63.29, 44.3, 0, 44.3, 0, 0], [63.29, 0, 63.29, 44.3, 0, 44.3, 56.96, 0, 63.29, 0], [0, 0, 63.29, 0, 63.29, 44.3, 0, 44.3, 0, 0], [0, 0, 63.29, 0, 63.29, 44.3, 0, 44.3, 0, 0], [6.33, 0, 63.29, 0, 63.29, 44.3, 0, 44.3, 0, 0, 6.33, 0], [0, 0, 63.29, 0, 63.29, 44.3, 0, 44.3, 0, 6.33, 0, 0], [0, 0, 63.29, 0, 63.29, 44.3, 0, 44.3, 0, 0], [0, 0, 63.29, 0, 63.29, 44.3, 0, 44.3, 0, 0], [0, 0, 6.33, 0, 63.29, 44.3, 0, 44.3, 0, 0]], [[0, 0, 506.33, 0, 443.04, 50.63, 379.75, 6.33, 316.46, 44.3, 253.16, 6.33, 189.87, 50.63, 126.58, 6.33, 63.29, 50.63, 0, 0], [63.29, 50.63, 6.33, 101.27, 63.29, 151.9, 6.33, 202.53, 63.29, 253.16, 6.33, 303.8, 63.29, 354.43, 0, 405.06, 0, 0, 63.29, 50.63], [63.29, 0, 63.29, 405.06, 0, 354.43, 56.96, 303.8, 0, 253.16, 56.96, 202.53, 0, 151.9, 56.96, 101.27, 0, 50.63, 63.29, 0], [63.29, 0, 63.29, 44.3, 6.33, 44.3, 0, 44.3, 63.29, 0], [0, 0, 63.29, 44.3, 0, 44.3, 0, 0], [0, 44.3, 63.29, 0, 63.29, 44.3, 0, 44.3], [0, 44.3, 0, 0, 69.62, 44.3, 63.29, 44.3, 0, 44.3], [0, 37.97, 63.29, 0, 63.29, 44.3, 6.33, 44.3, 0, 37.97], [0, 0, 63.29, 44.3, 0, 44.3, 0, 0], [56.96, 0, 56.96, 50.63, 6.33, 50.63, 0, 50.63, 56.96, 0], [56.96, 0, 56.96, 50.63, 0, 0, 56.96, 0], [56.96, 0, 56.96, 50.63, 0, 50.63, 56.96, 0], [56.96, 0, 56.96, 50.63, 0, 0, 56.96, 0], [56.96, 0, 56.96, 50.63, 0, 50.63, 56.96, 0], [56.96, 0, 56.96, 50.63, 0, 0, 56.96, 0], [0, 0, 56.96, 50.63, 0, 50.63, 0, 0], [0, 0, 56.96, 0, 0, 50.63, 0, 0], [0, 6.33, 0, 0, 56.96, 50.63, 0, 50.63, 0, 6.33], [0, 0, 56.96, 0, 0, 50.63, 0, 0], [0, 0, 56.96, 50.63, 0, 50.63, 0, 0], [0, 0, 56.96, 0, 0, 50.63, 0, 0], [0, 0, 63.29, 50.63, 0, 50.63, 0, 0], [63.29, 0, 63.29, 50.63, 0, 50.63, 63.29, 0], [0, 25.32, 31.65, 0, 63.29, 25.32, 31.65, 50.63, 0, 25.32], [0, 25.32, 31.65, 0, 63.29, 25.32, 31.65, 50.63, 0, 25.32], [0, 25.32, 31.65, 0, 63.29, 25.32, 31.65, 50.63, 0, 25.32], [0, 25.32, 31.65, 0, 63.29, 25.32, 31.65, 50.63, 0, 25.32], [0, 25.32, 31.65, 0, 63.29, 25.32, 31.65, 50.63, 0, 25.32], [0, 25.32, 31.65, 0, 63.29, 25.32, 31.65, 50.63, 0, 25.32], [0, 25.32, 31.65, 0, 63.29, 25.32, 31.65, 50.63, 0, 25.32], [0, 25.32, 31.65, 0, 63.29, 25.32, 31.65, 50.63, 0, 25.32], [0, 25.32, 31.65, 0, 63.29, 25.32, 31.65, 50.63, 0, 25.32], [0, 25.32, 31.65, 0, 63.29, 25.32, 31.65, 50.63, 0, 25.32], [31.65, 0, 63.29, 25.32, 31.65, 50.63, 0, 25.32, 31.65, 0], [0, 25.32, 31.65, 0, 63.29, 25.32, 31.65, 50.63, 0, 25.32], [31.65, 0, 63.29, 25.32, 31.65, 50.63, 0, 25.32, 31.65, 0], [31.65, 0, 63.29, 25.32, 31.65, 50.63, 0, 25.32, 31.65, 0], [31.65, 0, 63.29, 25.32, 31.65, 50.63, 0, 25.32, 31.65, 0], [31.65, 0, 63.29, 25.32, 31.65, 50.63, 0, 25.32, 31.65, 0], [31.65, 0, 63.29, 25.32, 31.65, 50.63, 0, 25.32, 31.65, 0], [31.65, 0, 63.29, 25.32, 31.65, 50.63, 0, 25.32, 31.65, 0], [31.65, 0, 63.29, 25.32, 31.65, 50.63, 0, 25.32, 31.65, 0], [31.65, 0, 63.29, 25.32, 31.65, 50.63, 0, 25.32, 31.65, 0], [31.65, 0, 63.29, 25.32, 31.65, 50.63, 0, 25.32, 31.65, 0], [63.29, 50.63, 63.29, 126.58, 0, 126.58, 0, 0, 63.29, 50.63], [0, 50.63, 63.29, 0, 63.29, 126.58, 0, 126.58, 0, 50.63], [0, 75.95, 94.94, 0, 94.94, 75.95, 0, 75.95], [0, 0, 94.94, 75.95, 0, 75.95, 0, 0], [0, 0, 31.65, 25.32, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [0, 50.63, 0, 0, 158.23, 0, 158.23, 151.9, 0, 50.63], [158.23, 50.63, 0, 151.9, 0, 0, 158.23, 0, 158.23, 50.63], [0, 37.97, 63.29, 0, 63.29, 37.97, 0, 37.97], [0, 31.65, 50.63, 0, 50.63, 31.65, 44.3, 31.65, 0, 31.65], [0, 31.65, 44.3, 0, 44.3, 50.63, 0, 50.63, 0, 31.65], [0, 50.63, 0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63], [0, 50.63, 0, 0, 44.3, 31.65, 44.3, 50.63, 0, 50.63], [0, 0, 50.63, 31.65, 0, 31.65, 0, 0], [0, 0, 75.95, 37.97, 69.62, 37.97, 0, 37.97, 0, 0]], [[63.29, 0, 88.61, 50.63, 126.58, 75.95, 88.61, 101.27, 63.29, 151.9, 37.97, 101.27, 0, 75.95, 37.97, 50.63, 63.29, 0], [44.3, 0, 126.58, 50.63, 63.29, 50.63, 126.58, 101.27, 63.29, 101.27, 63.29, 151.9, 0, 101.27, 0, 0, 44.3, 0], [126.58, 0, 126.58, 101.27, 63.29, 151.9, 63.29, 101.27, 0, 101.27, 63.29, 50.63, 0, 50.63, 75.95, 0, 126.58, 0], [0, 0, 126.58, 0, 101.27, 50.63, 63.29, 12.66, 25.32, 50.63, 0, 0], [63.29, 25.32, 101.27, 0, 126.58, 50.63, 0, 50.63, 31.65, 0, 63.29, 25.32], [126.58, 151.9, 75.95, 151.9, 0, 101.27, 63.29, 101.27, 0, 50.63, 63.29, 50.63, 63.29, 0, 126.58, 50.63, 126.58, 151.9], [0, 151.9, 0, 50.63, 63.29, 0, 63.29, 50.63, 126.58, 50.63, 63.29, 101.27, 126.58, 101.27, 44.3, 151.9, 0, 151.9], [0, 0, 126.58, 50.63, 0, 101.27, 0, 0], [126.58, 0, 126.58, 101.27, 0, 50.63, 126.58, 0], [0, 0, 63.29, 50.63, 63.29, 0, 126.58, 0, 189.87, 0, 189.87, 75.95, 189.87, 126.58, 0, 50.63, 0, 0], [189.87, 0, 189.87, 50.63, 0, 126.58, 0, 0, 126.58, 0, 126.58, 50.63, 189.87, 0], [126.58, 0, 189.87, 50.63, 189.87, 101.27, 253.16, 151.9, 189.87, 151.9, 164.56, 101.27, 126.58, 126.58, 94.94, 101.27, 63.29, 151.9, 0, 151.9, 63.29, 101.27, 63.29, 50.63, 126.58, 0], [0, 0, 63.29, 0, 88.61, 50.63, 126.58, 12.66, 164.56, 50.63, 189.87, 0, 253.16, 0, 189.87, 50.63, 189.87, 101.27, 126.58, 101.27, 63.29, 101.27, 63.29, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 75.95, 25.32, 50.63, 0, 0], [0, 0, 63.29, 0, 37.97, 50.63, 0, 75.95, 0, 0], [63.29, 75.95, 0, 75.95, 25.32, 25.32, 63.29, 0, 63.29, 75.95], [0, 75.95, 0, 0, 37.97, 25.32, 63.29, 75.95, 0, 75.95], [0, 50.63, 0, 25.32, 63.29, 0, 189.87, 50.63, 189.87, 101.27, 126.58, 50.63, 126.58, 101.27, 69.62, 101.27, 0, 50.63], [189.87, 50.63, 126.58, 101.27, 63.29, 101.27, 63.29, 50.63, 0, 101.27, 0, 50.63, 126.58, 0, 189.87, 25.32, 189.87, 50.63], [31.65, 0, 69.62, 0, 107.59, 25.32, 31.65, 25.32, 0, 0, 31.65, 0], [82.28, 0, 113.92, 0, 82.28, 25.32, 0, 25.32, 44.3, 0, 82.28, 0], [0, 0, 37.97, 25.32, 0, 25.32, 0, 0], [37.97, 0, 37.97, 25.32, 0, 25.32, 37.97, 0], [31.65, 0, 107.59, 0, 69.62, 25.32, 0, 25.32, 31.65, 0], [63.29, 25.32, 44.3, 25.32, 0, 0, 82.28, 0, 113.92, 25.32, 63.29, 25.32], [0, 0, 37.97, 0, 0, 25.32, 0, 0], [37.97, 25.32, 0, 0, 37.97, 0, 37.97, 25.32]], [[126.58, 25.32, 189.87, 0, 253.16, 25.32, 253.16, 75.95, 126.58, 177.22, 0, 75.95, 0, 25.32, 63.29, 0, 126.58, 25.32], [0, 0, 31.65, 0, 31.65, 25.32, 0, 25.32, 0, 0], [0, 0, 31.65, 0, 31.65, 25.32, 0, 25.32, 0, 0], [0, 25.32, 0, 0, 31.65, 0, 31.65, 25.32, 0, 25.32], [0, 0, 31.65, 0, 31.65, 25.32, 0, 25.32, 0, 0], [0, 25.32, 0, 0, 31.65, 0, 31.65, 25.32, 0, 25.32], [0, 0, 31.65, 0, 31.65, 25.32, 0, 25.32, 0, 0], [0, 25.32, 0, 0, 31.65, 0, 31.65, 25.32, 0, 25.32], [0, 25.32, 0, 0, 31.65, 0, 31.65, 25.32, 0, 25.32], [0, 6.33, 0, 0, 31.65, 0, 31.65, 25.32, 0, 25.32, 0, 6.33], [31.65, 0, 31.65, 25.32, 0, 25.32, 0, 6.33, 0, 0, 31.65, 0], [31.65, 0, 31.65, 25.32, 0, 25.32, 0, 0, 31.65, 0], [31.65, 0, 31.65, 25.32, 0, 25.32, 0, 0, 31.65, 0], [0, 0, 31.65, 0, 31.65, 25.32, 0, 25.32, 0, 0], [0, 25.32, 0, 0, 31.65, 0, 31.65, 25.32, 0, 25.32], [0, 0, 31.65, 0, 31.65, 25.32, 0, 25.32, 0, 0], [31.65, 25.32, 0, 25.32, 0, 0, 31.65, 0, 31.65, 25.32], [0, 25.32, 0, 0, 31.65, 0, 31.65, 25.32, 0, 25.32], [0, 25.32, 0, 0, 31.65, 0, 31.65, 25.32, 0, 25.32], [0, 25.32, 0, 0, 31.65, 0, 31.65, 25.32, 0, 25.32], [0, 0, 31.65, 0, 31.65, 25.32, 0, 25.32, 0, 0], [31.65, 0, 31.65, 12.66, 0, 25.32, 0, 0, 31.65, 0], [31.65, 0, 31.65, 12.66, 0, 0, 31.65, 0], [0, 0, 31.65, 0, 0, 12.66, 0, 0], [18.99, 0, 139.24, 94.94, 139.24, 120.25, 0, 12.66, 18.99, 0], [0, 88.61, 94.94, 0, 120.25, 6.33, 0, 113.92, 0, 88.61], [0, 0, 37.97, 0, 37.97, 25.32, 0, 25.32, 0, 0], [0, 0, 44.3, 0, 44.3, 31.65, 0, 0], [0, 0, 44.3, 0, 0, 25.32, 0, 0], [0, 0, 227.85, 0, 227.85, 25.32, 0, 25.32, 0, 0]], [[0, 101.27, 101.27, 94.94, 132.91, 0, 177.22, 88.61, 272.15, 82.28, 196.2, 158.23, 234.18, 246.84, 126.58, 177.22, 69.62, 259.49, 88.61, 151.9, 0, 101.27], [0, 37.97, 50.63, 37.97, 63.29, 0, 82.28, 37.97, 126.58, 37.97, 88.61, 69.62, 120.25, 101.27, 63.29, 75.95, 31.65, 101.27, 44.3, 63.29, 0, 37.97], [0, 63.29, 50.63, 56.96, 56.96, 0, 82.28, 44.3, 132.91, 37.97, 94.94, 75.95, 132.91, 107.59, 69.62, 88.61, 44.3, 132.91, 50.63, 88.61, 0, 63.29], [0, 56.96, 44.3, 44.3, 50.63, 0, 69.62, 37.97, 107.59, 31.65, 82.28, 69.62, 113.92, 94.94, 56.96, 75.95, 37.97, 113.92, 37.97, 63.29, 0, 56.96], [0, 63.29, 44.3, 50.63, 37.97, 0, 63.29, 37.97, 107.59, 31.65, 88.61, 63.29, 120.25, 88.61, 63.29, 75.95, 44.3, 126.58, 37.97, 75.95, 0, 63.29], [0, 82.28, 63.29, 50.63, 63.29, 0, 94.94, 37.97, 139.24, 25.32, 113.92, 63.29, 151.9, 94.94, 94.94, 82.28, 69.62, 113.92, 69.62, 75.95, 6.33, 82.28, 0, 82.28], [0, 25.32, 31.65, 25.32, 44.3, 0, 50.63, 25.32, 75.95, 18.99, 56.96, 50.63, 69.62, 69.62, 31.65, 50.63, 6.33, 75.95, 12.66, 44.3, 0, 25.32], [0, 37.97, 44.3, 37.97, 50.63, 0, 63.29, 44.3, 107.59, 44.3, 69.62, 69.62, 88.61, 94.94, 44.3, 69.62, 12.66, 88.61, 31.65, 63.29, 0, 37.97], [18.99, 0, 50.63, 31.65, 31.65, 56.96, 0, 31.65, 18.99, 0], [25.32, 0, 44.3, 25.32, 25.32, 56.96, 0, 25.32, 25.32, 0], [0, 25.32, 18.99, 0, 31.65, 25.32, 18.99, 50.63, 0, 25.32], [25.32, 0, 37.97, 37.97, 25.32, 82.28, 0, 56.96, 25.32, 0], [25.32, 0, 44.3, 37.97, 18.99, 69.62, 0, 31.65, 25.32, 0], [25.32, 0, 37.97, 37.97, 18.99, 75.95, 0, 37.97, 25.32, 0], [18.99, 0, 31.65, 31.65, 25.32, 63.29, 0, 31.65, 18.99, 0], [6.33, 0, 18.99, 25.32, 12.66, 50.63, 0, 25.32, 6.33, 0], [18.99, 0, 31.65, 37.97, 18.99, 88.61, 0, 44.3, 18.99, 0], [12.66, 0, 25.32, 25.32, 18.99, 69.62, 0, 25.32, 12.66, 0], [0, 0, 25.32, 0, 12.66, 25.32, 0, 0], [0, 0, 25.32, 0, 6.33, 25.32, 0, 0], [0, 0, 37.97, 0, 18.99, 25.32, 0, 0], [0, 12.66, 37.97, 0, 12.66, 44.3, 0, 12.66], [0, 0, 37.97, 0, 12.66, 37.97, 0, 0], [0, 0, 31.65, 0, 12.66, 44.3, 0, 0], [0, 0, 31.65, 6.33, 12.66, 25.32, 0, 0], [0, 6.33, 37.97, 0, 18.99, 37.97, 0, 6.33], [0, 6.33, 37.97, 0, 12.66, 44.3, 0, 6.33], [0, 0, 101.27, 0, 44.3, 37.97, 0, 0], [0, 0, 31.65, 6.33, 6.33, 25.32, 0, 0], [18.99, 18.99, 0, 0, 25.32, 6.33, 37.97, 18.99, 37.97, 50.63, 18.99, 18.99], [44.3, 0, 50.63, 18.99, 0, 18.99, 18.99, 0, 44.3, 0], [0, 18.99, 12.66, 0, 25.32, 0, 37.97, 18.99, 0, 18.99], [25.32, 0, 50.63, 0, 75.95, 18.99, 0, 18.99, 25.32, 0], [18.99, 0, 50.63, 0, 69.62, 12.66, 0, 12.66, 18.99, 0], [0, 0, 37.97, 6.33, 6.33, 12.66, 0, 0], [0, 0, 44.3, 12.66, 0, 12.66, 0, 0], [18.99, 37.97, 25.32, 0, 120.25, 12.66, 44.3, 25.32, 25.32, 69.62, 44.3, 94.94, 63.29, 69.62, 44.3, 44.3, 44.3, 31.65, 126.58, 75.95, 120.25, 126.58, 94.94, 82.28, 75.95, 113.92, 25.32, 113.92, 0, 75.95, 12.66, 63.29, 25.32, 50.63, 18.99, 37.97], [164.56, 208.86, 132.91, 177.22, 139.24, 120.25, 139.24, 113.92, 44.3, 120.25, 0, 31.65, 6.33, 0, 196.2, 0, 196.2, 202.53, 170.89, 177.22, 183.54, 126.58, 170.89, 88.61, 139.24, 56.96, 158.23, 25.32, 132.91, 31.65, 126.58, 6.33, 113.92, 31.65, 82.28, 31.65, 94.94, 50.63, 88.61, 82.28, 113.92, 56.96, 151.9, 75.95, 107.59, 82.28, 107.59, 94.94, 151.9, 94.94, 151.9, 132.91, 158.23, 170.89, 177.22, 189.87, 164.56, 208.86], [37.97, 6.33, 63.29, 12.66, 44.3, 50.63, 44.3, 18.99, 0, 6.33, 50.63, 0, 56.96, 6.33, 37.97, 6.33], [0, 0, 56.96, 31.65, 75.95, 56.96, 31.65, 69.62, 69.62, 82.28, 0, 88.61, 0, 0], [18.99, 50.63, 37.97, 101.27, 69.62, 63.29, 75.95, 12.66, 82.28, 0, 132.91, 0, 126.58, 56.96, 75.95, 63.29, 69.62, 113.92, 0, 126.58, 0, 18.99, 44.3, 18.99, 63.29, 56.96, 37.97, 88.61, 18.99, 50.63], [0, 0, 56.96, 6.33, 56.96, 18.99, 0, 0], [0, 12.66, 12.66, 0, 31.65, 12.66, 0, 44.3, 0, 12.66], [6.33, 44.3, 44.3, 18.99, 0, 18.99, 18.99, 0, 82.28, 0, 56.96, 37.97, 75.95, 75.95, 50.63, 88.61, 6.33, 44.3], [0, 6.33, 25.32, 0, 44.3, 31.65, 88.61, 44.3, 69.62, 69.62, 101.27, 50.63, 164.56, 94.94, 0, 94.94, 0, 6.33], [44.3, 6.33, 6.33, 25.32, 0, 0, 37.97, 6.33, 44.3, 6.33]], [[126.58, 0, 253.16, 202.53, 126.58, 405.06, 0, 202.53, 126.58, 0], [0, 50.63, 63.29, 0, 126.58, 50.63, 63.29, 101.27, 0, 50.63], [63.29, 0, 126.58, 50.63, 63.29, 101.27, 0, 50.63, 63.29, 0], [0, 75.95, 69.62, 0, 151.9, 75.95, 0, 75.95], [0, 0, 113.92, 63.29, 18.99, 132.91, 0, 0], [0, 0, 189.87, 0, 126.58, 50.63, 139.24, 63.29, 88.61, 139.24, 0, 0], [0, 50.63, 0, 0, 63.29, 0, 0, 50.63], [0, 0, 126.58, 12.66, 126.58, 113.92, 0, 113.92, 82.28, 50.63, 0, 0], [0, 56.96, 0, 0, 82.28, 50.63, 0, 113.92, 0, 56.96], [0, 101.27, 0, 0, 126.58, 0, 126.58, 101.27, 0, 101.27], [0, 202.53, 126.58, 0, 145.57, 0, 158.23, 69.62, 88.61, 145.57, 50.63, 202.53, 0, 202.53], [164.56, 56.96, 88.61, 56.96, 0, 0, 151.9, 0, 164.56, 56.96], [0, 56.96, 37.97, 0, 126.58, 56.96, 0, 56.96], [0, 0, 126.58, 202.53, 0, 202.53, 0, 0], [63.29, 50.63, 126.58, 151.9, 0, 139.24, 0, 0, 63.29, 50.63], [0, 50.63, 63.29, 0, 63.29, 50.63, 0, 50.63], [0, 0, 63.29, 0, 0, 101.27, 0, 94.94, 0, 0], [0, 50.63, 0, 44.3, 0, 0, 126.58, 0, 94.94, 50.63, 0, 50.63], [0, 0, 63.29, 0, 63.29, 101.27, 0, 0], [0, 0, 94.94, 0, 63.29, 50.63, 0, 50.63, 0, 0], [56.96, 0, 63.29, 0, 63.29, 50.63, 0, 0, 56.96, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 0], [164.56, 145.57, 164.56, 151.9, 50.63, 88.61, 56.96, 151.9, 37.97, 151.9, 0, 88.61, 50.63, 12.66, 101.27, 50.63, 164.56, 0, 164.56, 145.57], [94.94, 75.95, 82.28, 145.57, 0, 69.62, 94.94, 0, 94.94, 75.95], [12.66, 0, 12.66, 6.33, 12.66, 126.58, 0, 69.62, 12.66, 0]], [[0, 0, 120.25, 0, 120.25, 101.27, 0, 101.27, 0, 0], [0, 0, 107.59, 0, 107.59, 101.27, 0, 101.27, 0, 0], [0, 0, 101.27, 0, 101.27, 101.27, 0, 101.27, 0, 0], [0, 0, 101.27, 0, 101.27, 101.27, 0, 101.27, 0, 0], [0, 0, 164.56, 0, 164.56, 12.66, 0, 12.66, 0, 0], [0, 0, 132.91, 0, 132.91, 12.66, 0, 12.66, 0, 0], [0, 0, 139.24, 0, 139.24, 12.66, 0, 12.66, 0, 0], [31.65, 0, 69.62, 44.3, 0, 44.3, 31.65, 0], [37.97, 44.3, 0, 0, 69.62, 0, 37.97, 44.3], [0, 44.3, 25.32, 0, 56.96, 44.3, 0, 44.3], [0, 0, 63.29, 0, 25.32, 44.3, 0, 0], [31.65, 0, 63.29, 37.97, 0, 37.97, 31.65, 0], [0, 0, 56.96, 0, 31.65, 44.3, 0, 0], [31.65, 0, 31.65, 6.33, 50.63, 44.3, 0, 44.3, 31.65, 0], [12.66, 0, 56.96, 0, 31.65, 44.3, 0, 0, 12.66, 0], [0, 0, 126.58, 0, 126.58, 12.66, 0, 12.66, 0, 0], [0, 0, 6.33, 0, 126.58, 0, 126.58, 12.66, 0, 12.66, 0, 0], [0, 0, 6.33, 0, 126.58, 0, 126.58, 12.66, 0, 12.66, 0, 0], [37.97, 0, 18.99, 31.65, 0, 0, 37.97, 0], [37.97, 0, 18.99, 25.32, 0, 0, 37.97, 0], [0, 0, 37.97, 0, 18.99, 25.32, 0, 0], [0, 0, 37.97, 0, 18.99, 25.32, 0, 0], [18.99, 0, 37.97, 12.66, 18.99, 25.32, 0, 12.66, 18.99, 0], [12.66, 0, 25.32, 12.66, 12.66, 18.99, 0, 12.66, 12.66, 0], [0, 0, 411.39, 0, 411.39, 12.66, 392.41, 18.99, 373.42, 12.66, 360.76, 25.32, 348.1, 12.66, 240.51, 12.66, 234.18, 25.32, 227.85, 12.66, 221.52, 12.66, 82.28, 12.66, 69.62, 25.32, 56.96, 12.66, 44.3, 25.32, 37.97, 12.66, 6.33, 12.66, 0, 12.66, 0, 0]], [[0, 0, 37.97, 0, 37.97, 37.97, 12.66, 37.97, 12.66, 31.65, 31.65, 31.65, 31.65, 6.33, 6.33, 6.33, 6.33, 69.62, 31.65, 69.62, 31.65, 50.63, 12.66, 50.63, 12.66, 44.3, 31.65, 44.3, 37.97, 44.3, 37.97, 75.95, 0, 75.95, 0, 0], [0, 0, 6.33, 0, 6.33, 31.65, 31.65, 31.65, 31.65, 6.33, 12.66, 6.33, 12.66, 0, 37.97, 0, 37.97, 37.97, 12.66, 37.97, 31.65, 75.95, 25.32, 75.95, 6.33, 37.97, 6.33, 75.95, 0, 75.95, 0, 0], [6.33, 0, 31.65, 0, 31.65, 6.33, 6.33, 6.33, 6.33, 37.97, 25.32, 37.97, 25.32, 44.3, 6.33, 44.3, 6.33, 69.62, 31.65, 69.62, 31.65, 75.95, 0, 75.95, 0, 0, 6.33, 0], [0, 75.95, 18.99, 0, 25.32, 0, 44.3, 75.95, 37.97, 75.95, 25.32, 18.99, 18.99, 18.99, 12.66, 44.3, 25.32, 44.3, 25.32, 50.63, 12.66, 50.63, 6.33, 75.95, 0, 75.95], [0, 0, 6.33, 0, 6.33, 25.32, 25.32, 0, 31.65, 0, 6.33, 37.97, 31.65, 75.95, 25.32, 75.95, 6.33, 44.3, 6.33, 75.95, 0, 75.95, 0, 0], [0, 0, 18.99, 0, 18.99, 6.33, 0, 6.33, 0, 0], [0, 0, 37.97, 0, 37.97, 75.95, 0, 75.95, 0, 12.66, 6.33, 12.66, 6.33, 69.62, 31.65, 69.62, 31.65, 6.33, 0, 6.33, 0, 0], [0, 0, 6.33, 0, 6.33, 69.62, 31.65, 69.62, 31.65, 0, 37.97, 0, 37.97, 75.95, 0, 75.95, 0, 0], [0, 0, 50.63, 0, 50.63, 6.33, 25.32, 6.33, 25.32, 75.95, 18.99, 75.95, 18.99, 6.33, 0, 6.33, 0, 0], [63.29, 0, 63.29, 25.32, 0, 25.32, 0, 0, 63.29, 0], [63.29, 0, 63.29, 25.32, 0, 25.32, 0, 0, 63.29, 0], [0, 0, 63.29, 0, 63.29, 25.32, 0, 25.32, 0, 0], [63.29, 0, 63.29, 25.32, 63.29, 25.32, 0, 25.32, 0, 0, 63.29, 0], [63.29, 0, 63.29, 25.32, 0, 25.32, 0, 0, 63.29, 0], [63.29, 0, 63.29, 25.32, 0, 25.32, 0, 0, 63.29, 0], [0, 0, 63.29, 0, 63.29, 25.32, 0, 25.32, 0, 0], [63.29, 25.32, 0, 25.32, 0, 0, 63.29, 0, 63.29, 25.32], [63.29, 25.32, 0, 25.32, 0, 0, 63.29, 0, 63.29, 25.32], [63.29, 25.32, 0, 25.32, 0, 0, 63.29, 0, 63.29, 25.32], [63.29, 25.32, 0, 25.32, 0, 0, 63.29, 0, 63.29, 25.32], [56.96, 25.32, 0, 25.32, 0, 0, 63.29, 0, 63.29, 25.32, 56.96, 25.32], [0, 0, 6.33, 0, 18.99, 12.66, 37.97, 25.32, 56.96, 25.32, 69.62, 18.99, 75.95, 0, 82.28, 0, 75.95, 18.99, 56.96, 31.65, 37.97, 31.65, 12.66, 18.99, 0, 0], [6.33, 0, 12.66, 6.33, 12.66, 18.99, 6.33, 25.32, 0, 18.99, 0, 6.33, 6.33, 0], [6.33, 0, 12.66, 18.99, 6.33, 25.32, 0, 18.99, 0, 6.33, 6.33, 0], [63.29, 25.32, 0, 25.32, 0, 0, 63.29, 0, 63.29, 25.32], [63.29, 25.32, 0, 25.32, 0, 0, 63.29, 0, 63.29, 25.32], [0, 25.32, 0, 0, 63.29, 0, 63.29, 25.32, 0, 25.32], [0, 25.32, 0, 0, 63.29, 0, 63.29, 25.32, 0, 25.32], [0, 25.32, 0, 0, 63.29, 0, 63.29, 25.32, 0, 25.32], [0, 25.32, 0, 0, 63.29, 0, 63.29, 25.32, 0, 25.32], [63.29, 25.32, 0, 25.32, 0, 0, 56.96, 0, 63.29, 0, 63.29, 25.32], [63.29, 25.32, 0, 25.32, 0, 0, 63.29, 0, 63.29, 25.32], [63.29, 25.32, 0, 25.32, 0, 0, 63.29, 0, 63.29, 25.32], [0, 25.32, 0, 0, 63.29, 0, 63.29, 25.32, 0, 25.32], [0, 0, 63.29, 0, 63.29, 25.32, 0, 25.32, 0, 0], [0, 25.32, 0, 0, 63.29, 0, 63.29, 25.32, 56.96, 25.32, 0, 25.32], [63.29, 25.32, 0, 25.32, 0, 0, 63.29, 0, 63.29, 25.32], [0, 25.32, 0, 0, 63.29, 0, 63.29, 25.32, 0, 25.32], [0, 0, 63.29, 0, 63.29, 25.32, 0, 25.32, 0, 0], [0, 0, 63.29, 0, 63.29, 25.32, 0, 25.32, 0, 0], [0, 0, 63.29, 0, 63.29, 25.32, 0, 25.32, 0, 0], [0, 0, 63.29, 0, 63.29, 25.32, 0, 25.32, 0, 0], [63.29, 25.32, 0, 25.32, 0, 0, 63.29, 0, 63.29, 25.32], [0, 0, 63.29, 0, 63.29, 25.32, 0, 25.32, 0, 0], [0, 0, 63.29, 0, 63.29, 25.32, 0, 25.32, 0, 0], [0, 0, 63.29, 0, 63.29, 25.32, 0, 25.32, 0, 0], [0, 0, 63.29, 0, 63.29, 25.32, 0, 25.32, 0, 0], [0, 0, 63.29, 0, 63.29, 25.32, 0, 25.32, 0, 0], [37.97, 0, 37.97, 177.22, 0, 25.32, 37.97, 0], [0, 0, 37.97, 25.32, 0, 177.22, 0, 0]], [[126.58, 25.32, 120.25, 44.3, 139.24, 56.96, 120.25, 63.29, 120.25, 88.61, 94.94, 82.28, 82.28, 101.27, 63.29, 82.28, 50.63, 88.61, 25.32, 56.96, 0, 56.96, 0, 18.99, 31.65, 18.99, 44.3, 6.33, 75.95, 12.66, 82.28, 0, 101.27, 0, 107.59, 12.66, 113.92, 12.66, 113.92, 25.32, 126.58, 25.32], [56.96, 0, 75.95, 6.33, 82.28, 0, 107.59, 0, 107.59, 18.99, 120.25, 18.99, 145.57, 31.65, 126.58, 44.3, 132.91, 69.62, 113.92, 75.95, 120.25, 82.28, 107.59, 94.94, 82.28, 88.61, 56.96, 107.59, 44.3, 94.94, 12.66, 94.94, 0, 69.62, 18.99, 56.96, 18.99, 37.97, 44.3, 31.65, 37.97, 12.66, 56.96, 0], [44.3, 0, 63.29, 0, 82.28, 6.33, 94.94, 12.66, 101.27, 25.32, 107.59, 37.97, 113.92, 50.63, 107.59, 63.29, 107.59, 82.28, 94.94, 88.61, 75.95, 94.94, 50.63, 101.27, 31.65, 101.27, 18.99, 94.94, 6.33, 82.28, 0, 69.62, 0, 56.96, 0, 37.97, 6.33, 18.99, 18.99, 6.33, 44.3, 0], [12.66, 0, 63.29, 31.65, 50.63, 50.63, 0, 18.99, 12.66, 0], [56.96, 0, 63.29, 25.32, 6.33, 44.3, 0, 12.66, 56.96, 0], [25.32, 0, 44.3, 6.33, 31.65, 69.62, 0, 56.96, 25.32, 0], [0, 6.33, 18.99, 0, 37.97, 50.63, 12.66, 56.96, 0, 6.33], [0, 18.99, 6.33, 0, 56.96, 25.32, 44.3, 56.96, 0, 18.99], [6.33, 12.66, 0, 0, 63.29, 0, 56.96, 25.32, 6.33, 12.66], [12.66, 44.3, 0, 31.65, 37.97, 0, 56.96, 12.66, 12.66, 44.3], [18.99, 25.32, 0, 25.32, 0, 0, 31.65, 0, 18.99, 25.32], [6.33, 18.99, 56.96, 31.65, 63.29, 6.33, 69.62, 0, 88.61, 25.32, 82.28, 94.94, 44.3, 94.94, 56.96, 63.29, 6.33, 37.97, 0, 37.97, 6.33, 18.99], [25.32, 0, 132.91, 0, 126.58, 12.66, 94.94, 6.33, 82.28, 18.99, 50.63, 18.99, 50.63, 56.96, 75.95, 56.96, 69.62, 63.29, 6.33, 63.29, 0, 44.3, 44.3, 12.66, 25.32, 0], [6.33, 0, 12.66, 6.33, 25.32, 0, 44.3, 18.99, 56.96, 6.33, 63.29, 6.33, 63.29, 69.62, 0, 69.62, 6.33, 0], [0, 0, 44.3, 0, 44.3, 151.9, 0, 151.9, 0, 88.61, 18.99, 88.61, 18.99, 63.29, 37.97, 56.96, 18.99, 44.3, 25.32, 25.32, 12.66, 25.32, 12.66, 12.66, 0, 0], [63.29, 0, 25.32, 31.65, 0, 25.32, 12.66, 0, 63.29, 0], [0, 0, 75.95, 0, 75.95, 25.32, 44.3, 31.65, 0, 0], [94.94, 50.63, 94.94, 75.95, 88.61, 75.95, 31.65, 88.61, 25.32, 75.95, 18.99, 50.63, 37.97, 37.97, 12.66, 25.32, 0, 25.32, 0, 0, 56.96, 0, 44.3, 18.99, 94.94, 50.63], [63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0, 63.29, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [63.29, 50.63, 0, 50.63, 0, 0, 63.29, 0, 63.29, 50.63], [0, 6.33, 18.99, 0, 25.32, 0, 69.62, 37.97, 12.66, 37.97, 0, 6.33], [50.63, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0, 25.32, 0, 31.65, 25.32, 56.96, 18.99, 50.63, 0], [0, 0, 31.65, 0, 37.97, 25.32, 0, 25.32, 0, 0], [0, 0, 12.66, 0, 6.33, 25.32, 37.97, 37.97, 50.63, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [0, 50.63, 0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [25.32, 18.99, 50.63, 25.32, 63.29, 12.66, 56.96, 6.33, 75.95, 0, 82.28, 12.66, 88.61, 44.3, 63.29, 75.95, 0, 75.95, 0, 37.97, 25.32, 18.99], [82.28, 0, 94.94, 18.99, 75.95, 50.63, 0, 50.63, 25.32, 18.99, 82.28, 0], [63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0, 63.29, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0, 63.29, 0], [6.33, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0, 6.33, 0], [0, 50.63, 0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63], [0, 0, 126.58, 0, 126.58, 25.32, 0, 25.32, 0, 0], [126.58, 25.32, 0, 25.32, 0, 0, 126.58, 0, 126.58, 25.32], [126.58, 25.32, 0, 25.32, 0, 0, 126.58, 0, 126.58, 18.99, 126.58, 25.32], [126.58, 25.32, 0, 25.32, 0, 0, 126.58, 0, 126.58, 25.32], [0, 0, 113.92, 0, 113.92, 6.33, 88.61, 6.33, 82.28, 12.66, 63.29, 6.33, 44.3, 18.99, 50.63, 37.97, 25.32, 44.3, 25.32, 63.29, 6.33, 75.95, 18.99, 101.27, 50.63, 101.27, 63.29, 113.92, 0, 113.92, 0, 0], [0, 0, 63.29, 0, 63.29, 37.97, 0, 37.97, 0, 0]], [[189.87, 12.66, 189.87, 69.62, 107.59, 69.62, 0, 69.62, 0, 25.32, 12.66, 37.97, 25.32, 18.99, 44.3, 31.65, 50.63, 0, 88.61, 0, 107.59, 25.32, 139.24, 0, 164.56, 18.99, 189.87, 12.66], [189.87, 94.94, 0, 94.94, 0, 44.3, 12.66, 0, 18.99, 56.96, 31.65, 31.65, 44.3, 56.96, 63.29, 6.33, 75.95, 56.96, 88.61, 37.97, 101.27, 69.62, 132.91, 18.99, 145.57, 50.63, 164.56, 50.63, 164.56, 6.33, 183.54, 44.3, 189.87, 50.63, 189.87, 94.94], [0, 120.25, 0, 94.94, 6.33, 75.95, 6.33, 101.27, 44.3, 0, 44.3, 63.29, 69.62, 94.94, 75.95, 37.97, 75.95, 75.95, 94.94, 18.99, 120.25, 56.96, 126.58, 44.3, 126.58, 120.25, 0, 120.25], [126.58, 6.33, 126.58, 25.32, 0, 25.32, 0, 0, 126.58, 0, 126.58, 6.33], [126.58, 25.32, 0, 25.32, 0, 0, 126.58, 0, 126.58, 25.32], [0, 25.32, 0, 0, 126.58, 0, 126.58, 25.32, 0, 25.32], [0, 25.32, 0, 18.99, 0, 0, 126.58, 0, 126.58, 25.32, 0, 25.32], [0, 0, 189.87, 0, 177.22, 63.29, 164.56, 82.28, 158.23, 75.95, 126.58, 25.32, 126.58, 69.62, 107.59, 69.62, 94.94, 37.97, 63.29, 88.61, 50.63, 56.96, 37.97, 75.95, 25.32, 25.32, 12.66, 56.96, 6.33, 31.65, 0, 0], [0, 0, 6.33, 0, 6.33, 113.92, 0, 113.92, 0, 0], [0, 0, 44.3, 75.95, 0, 75.95, 0, 0], [0, 101.27, 44.3, 0, 44.3, 101.27, 0, 101.27], [18.99, 0, 25.32, 0, 25.32, 12.66, 25.32, 25.32, 18.99, 37.97, 12.66, 37.97, 6.33, 37.97, 0, 31.65, 0, 18.99, 0, 12.66, 6.33, 6.33, 12.66, 0, 18.99, 0], [56.96, 18.99, 69.62, 31.65, 82.28, 0, 94.94, 0, 75.95, 37.97, 75.95, 44.3, 31.65, 44.3, 31.65, 31.65, 0, 6.33, 6.33, 0, 37.97, 18.99, 44.3, 18.99, 56.96, 18.99], [37.97, 25.32, 37.97, 12.66, 25.32, 12.66, 18.99, 18.99, 12.66, 25.32, 12.66, 31.65, 0, 31.65, 0, 25.32, 6.33, 12.66, 12.66, 6.33, 18.99, 6.33, 25.32, 0, 31.65, 0, 37.97, 6.33, 44.3, 12.66, 44.3, 25.32, 37.97, 25.32], [0, 0, 75.95, 0, 75.95, 50.63, 63.29, 50.63, 37.97, 44.3, 25.32, 37.97, 12.66, 31.65, 0, 12.66, 0, 0], [56.96, 0, 56.96, 12.66, 6.33, 31.65, 0, 12.66, 56.96, 0], [56.96, 0, 69.62, 6.33, 12.66, 44.3, 0, 31.65, 56.96, 0], [44.3, 0, 56.96, 6.33, 18.99, 56.96, 0, 50.63, 44.3, 0], [12.66, 0, 25.32, 0, 18.99, 50.63, 0, 50.63, 12.66, 0], [151.9, 0, 151.9, 18.99, 145.57, 18.99, 139.24, 37.97, 132.91, 37.97, 126.58, 56.96, 101.27, 63.29, 94.94, 50.63, 82.28, 69.62, 75.95, 69.62, 75.95, 56.96, 56.96, 69.62, 44.3, 69.62, 37.97, 63.29, 25.32, 88.61, 18.99, 75.95, 0, 69.62, 0, 0, 145.57, 0, 151.9, 0], [170.89, 164.56, 170.89, 170.89, 145.57, 177.22, 120.25, 158.23, 88.61, 183.54, 69.62, 158.23, 31.65, 158.23, 25.32, 189.87, 6.33, 177.22, 18.99, 113.92, 0, 113.92, 0, 75.95, 44.3, 75.95, 0, 0, 94.94, 0, 37.97, 12.66, 44.3, 31.65, 94.94, 12.66, 107.59, 31.65, 50.63, 63.29, 63.29, 75.95, 120.25, 37.97, 132.91, 44.3, 88.61, 94.94, 107.59, 101.27, 145.57, 50.63, 158.23, 50.63, 145.57, 101.27, 164.56, 101.27, 170.89, 50.63, 170.89, 164.56], [0, 69.62, 18.99, 75.95, 25.32, 88.61, 37.97, 63.29, 44.3, 69.62, 56.96, 69.62, 75.95, 56.96, 75.95, 69.62, 82.28, 69.62, 94.94, 50.63, 101.27, 63.29, 126.58, 56.96, 132.91, 37.97, 139.24, 37.97, 145.57, 18.99, 151.9, 18.99, 151.9, 0, 329.11, 0, 284.81, 101.27, 329.11, 101.27, 329.11, 113.92, 240.51, 113.92, 240.51, 107.59, 259.49, 69.62, 246.84, 69.62, 234.18, 101.27, 221.52, 88.61, 227.85, 75.95, 227.85, 63.29, 234.18, 63.29, 234.18, 50.63, 221.52, 37.97, 215.19, 37.97, 208.86, 44.3, 202.53, 44.3, 189.87, 69.62, 202.53, 69.62, 202.53, 82.28, 208.86, 88.61, 202.53, 88.61, 170.89, 69.62, 164.56, 75.95, 196.2, 101.27, 196.2, 113.92, 164.56, 113.92, 177.22, 170.89, 170.89, 189.87, 158.23, 164.56, 145.57, 189.87, 139.24, 132.91, 126.58, 177.22, 126.58, 151.9, 120.25, 164.56, 94.94, 126.58, 75.95, 183.54, 75.95, 177.22, 75.95, 151.9, 69.62, 202.53, 44.3, 170.89, 44.3, 107.59, 6.33, 202.53, 6.33, 183.54, 0, 202.53, 0, 69.62], [316.46, 0, 316.46, 50.63, 0, 50.63, 126.58, 0, 316.46, 0], [0, 0, 316.46, 0, 189.87, 50.63, 0, 50.63, 0, 0]], [[0, 6.33, 18.99, 0, 25.32, 6.33, 37.97, 82.28, 0, 88.61, 0, 6.33], [75.95, 0, 75.95, 12.66, 50.63, 31.65, 37.97, 63.29, 25.32, 101.27, 0, 94.94, 18.99, 50.63, 37.97, 25.32, 75.95, 0], [50.63, 6.33, 0, 6.33, 25.32, 0, 50.63, 6.33], [0, 18.99, 88.61, 0, 56.96, 12.66, 0, 18.99], [0, 63.29, 56.96, 56.96, 82.28, 44.3, 132.91, 0, 158.23, 0, 202.53, 56.96, 183.54, 75.95, 164.56, 50.63, 145.57, 25.32, 132.91, 25.32, 69.62, 69.62, 94.94, 75.95, 126.58, 189.87, 101.27, 202.53, 82.28, 120.25, 69.62, 94.94, 12.66, 88.61, 0, 75.95, 0, 63.29], [0, 25.32, 56.96, 0, 56.96, 12.66, 31.65, 31.65, 0, 25.32], [0, 18.99, 18.99, 0, 63.29, 6.33, 56.96, 18.99, 0, 18.99], [12.66, 75.95, 0, 12.66, 12.66, 0, 25.32, 12.66, 44.3, 75.95, 12.66, 75.95], [37.97, 88.61, 25.32, 12.66, 18.99, 6.33, 56.96, 0, 44.3, 12.66, 56.96, 75.95, 82.28, 75.95, 82.28, 82.28, 0, 101.27, 0, 94.94, 37.97, 88.61], [0, 12.66, 56.96, 6.33, 82.28, 0, 88.61, 0, 63.29, 12.66, 6.33, 18.99, 0, 12.66], [50.63, 25.32, 50.63, 6.33, 63.29, 0, 88.61, 6.33, 88.61, 31.65, 120.25, 31.65, 151.9, 37.97, 139.24, 50.63, 88.61, 56.96, 50.63, 50.63, 18.99, 44.3, 0, 50.63, 18.99, 37.97, 50.63, 25.32], [0, 0, 12.66, 44.3, 6.33, 50.63, 0, 0], [0, 0, 37.97, 6.33, 63.29, 6.33, 75.95, 25.32, 56.96, 12.66, 0, 0], [6.33, 18.99, 0, 0, 18.99, 6.33, 6.33, 18.99], [44.3, 6.33, 37.97, 37.97, 12.66, 44.3, 0, 12.66, 12.66, 0, 44.3, 6.33], [50.63, 18.99, 0, 0, 50.63, 12.66, 50.63, 18.99], [0, 0, 50.63, 44.3, 37.97, 50.63, 12.66, 25.32, 0, 0], [18.99, 0, 25.32, 18.99, 6.33, 25.32, 0, 12.66, 18.99, 0], [6.33, 0, 56.96, 6.33, 0, 6.33, 6.33, 0], [0, 12.66, 145.57, 0, 196.2, 0, 202.53, 6.33, 101.27, 12.66, 0, 12.66], [0, 0, 94.94, 0, 101.27, 12.66, 227.85, 18.99, 94.94, 25.32, 50.63, 12.66, 0, 0], [0, 227.85, 12.66, 0, 31.65, 227.85, 0, 227.85], [0, 221.52, 12.66, 0, 31.65, 221.52, 0, 221.52]], [[0, 12.66, 6.33, 0, 12.66, 12.66, 12.66, 164.56, 6.33, 177.22, 0, 164.56, 0, 12.66], [0, 0, 82.28, 0, 82.28, 113.92, 0, 113.92, 0, 0], [0, 0, 75.95, 0, 75.95, 113.92, 0, 113.92, 0, 0], [0, 12.66, 6.33, 0, 12.66, 12.66, 12.66, 164.56, 6.33, 177.22, 0, 164.56, 0, 12.66], [44.3, 44.3, 126.58, 0, 189.87, 0, 189.87, 50.63, 126.58, 6.33, 126.58, 50.63, 0, 101.27, 0, 50.63, 12.66, 75.95, 63.29, 63.29, 44.3, 44.3], [37.97, 44.3, 56.96, 88.61, 63.29, 0, 82.28, 82.28, 50.63, 132.91, 0, 94.94, 37.97, 44.3], [31.65, 56.96, 44.3, 37.97, 0, 50.63, 31.65, 37.97, 82.28, 0, 50.63, 37.97, 107.59, 12.66, 56.96, 44.3, 101.27, 37.97, 44.3, 63.29, 82.28, 56.96, 25.32, 75.95, 69.62, 75.95, 0, 101.27, 31.65, 56.96], [0, 0, 31.65, 0, 25.32, 25.32, 0, 0], [0, 0, 37.97, 0, 25.32, 25.32, 0, 0], [0, 0, 44.3, 6.33, 37.97, 25.32, 0, 0], [0, 18.99, 50.63, 0, 37.97, 25.32, 0, 18.99], [0, 75.95, 0, 0, 18.99, 0, 18.99, 69.62, 31.65, 69.62, 31.65, 0, 113.92, 0, 107.59, 63.29, 94.94, 75.95, 94.94, 25.32, 82.28, 25.32, 82.28, 75.95, 63.29, 75.95, 63.29, 25.32, 50.63, 25.32, 50.63, 75.95, 0, 75.95], [0, 12.66, 0, 0, 120.25, 0, 120.25, 75.95, 107.59, 82.28, 107.59, 44.3, 101.27, 44.3, 101.27, 88.61, 88.61, 88.61, 88.61, 44.3, 75.95, 44.3, 75.95, 88.61, 63.29, 88.61, 63.29, 44.3, 44.3, 44.3, 44.3, 88.61, 31.65, 88.61, 31.65, 37.97, 107.59, 37.97, 107.59, 12.66, 12.66, 12.66, 12.66, 88.61, 0, 88.61, 0, 12.66], [0, 6.33, 0, 0, 0, 0, 82.28, 0, 82.28, 25.32, 0, 25.32, 0, 6.33], [6.33, 6.33, 0, 0, 63.29, 0, 31.65, 37.97, 6.33, 6.33], [25.32, 0, 31.65, 37.97, 0, 37.97, 25.32, 0], [25.32, 0, 44.3, 6.33, 12.66, 18.99, 37.97, 31.65, 18.99, 50.63, 31.65, 69.62, 0, 75.95, 18.99, 56.96, 0, 44.3, 18.99, 31.65, 0, 18.99, 18.99, 6.33, 0, 0, 25.32, 0], [18.99, 0, 37.97, 0, 18.99, 6.33, 37.97, 12.66, 18.99, 31.65, 37.97, 44.3, 18.99, 63.29, 37.97, 75.95, 18.99, 88.61, 37.97, 107.59, 18.99, 120.25, 37.97, 132.91, 18.99, 151.9, 37.97, 158.23, 18.99, 177.22, 37.97, 189.87, 12.66, 196.2, 18.99, 183.54, 12.66, 170.89, 25.32, 158.23, 6.33, 151.9, 25.32, 132.91, 6.33, 113.92, 25.32, 107.59, 6.33, 82.28, 31.65, 75.95, 6.33, 56.96, 25.32, 44.3, 0, 31.65, 25.32, 12.66, 0, 12.66, 18.99, 0], [25.32, 0, 88.61, 25.32, 0, 25.32, 25.32, 0], [50.63, 0, 113.92, 25.32, 0, 25.32, 50.63, 0], [0, 18.99, 0, 6.33, 25.32, 0, 18.99, 12.66, 0, 18.99], [0, 0, 12.66, 0, 12.66, 12.66, 0, 12.66, 0, 0], [0, 18.99, 12.66, 0, 25.32, 12.66, 0, 18.99], [18.99, 12.66, 56.96, 12.66, 69.62, 25.32, 56.96, 31.65, 44.3, 18.99, 18.99, 31.65, 0, 12.66, 18.99, 0, 18.99, 12.66], [18.99, 0, 6.33, 12.66, 0, 0, 12.66, 0, 18.99, 0]], [[37.97, 145.57, 0, 31.65, 0, 12.66, 6.33, 6.33, 12.66, 0, 25.32, 0, 31.65, 0, 37.97, 6.33, 44.3, 18.99, 44.3, 25.32, 50.63, 12.66, 56.96, 6.33, 56.96, 6.33, 69.62, 0, 75.95, 0, 82.28, 6.33, 82.28, 12.66, 82.28, 18.99, 75.95, 31.65, 63.29, 44.3, 56.96, 50.63, 44.3, 69.62, 37.97, 75.95, 31.65, 88.61, 31.65, 101.27, 31.65, 107.59, 31.65, 113.92, 31.65, 120.25, 37.97, 139.24, 37.97, 145.57], [50.63, 18.99, 50.63, 12.66, 50.63, 6.33, 56.96, 0, 63.29, 0, 69.62, 0, 75.95, 6.33, 82.28, 18.99, 82.28, 31.65, 75.95, 44.3, 69.62, 56.96, 63.29, 69.62, 56.96, 82.28, 50.63, 101.27, 50.63, 113.92, 44.3, 107.59, 25.32, 82.28, 6.33, 63.29, 0, 44.3, 0, 25.32, 6.33, 6.33, 12.66, 0, 18.99, 0, 25.32, 0, 31.65, 6.33, 37.97, 18.99, 44.3, 31.65, 44.3, 37.97, 50.63, 18.99], [31.65, 31.65, 31.65, 25.32, 31.65, 18.99, 31.65, 6.33, 37.97, 0, 44.3, 0, 50.63, 6.33, 56.96, 25.32, 56.96, 31.65, 56.96, 50.63, 50.63, 75.95, 44.3, 88.61, 44.3, 82.28, 37.97, 75.95, 31.65, 69.62, 25.32, 63.29, 18.99, 56.96, 12.66, 50.63, 6.33, 44.3, 0, 37.97, 0, 31.65, 0, 25.32, 6.33, 18.99, 12.66, 18.99, 18.99, 18.99, 25.32, 25.32, 31.65, 31.65], [25.32, 25.32, 25.32, 18.99, 25.32, 12.66, 25.32, 6.33, 31.65, 0, 37.97, 0, 44.3, 6.33, 50.63, 12.66, 50.63, 18.99, 50.63, 31.65, 50.63, 37.97, 50.63, 50.63, 44.3, 63.29, 37.97, 75.95, 37.97, 69.62, 37.97, 63.29, 31.65, 56.96, 18.99, 44.3, 12.66, 37.97, 6.33, 31.65, 0, 25.32, 0, 18.99, 0, 12.66, 6.33, 6.33, 12.66, 6.33, 18.99, 12.66, 25.32, 25.32], [44.3, 31.65, 50.63, 18.99, 56.96, 12.66, 63.29, 12.66, 69.62, 12.66, 75.95, 18.99, 75.95, 25.32, 75.95, 31.65, 69.62, 44.3, 56.96, 63.29, 44.3, 82.28, 37.97, 94.94, 37.97, 101.27, 25.32, 82.28, 12.66, 56.96, 0, 25.32, 0, 18.99, 6.33, 6.33, 12.66, 0, 18.99, 0, 25.32, 0, 37.97, 6.33, 37.97, 12.66, 37.97, 12.66, 37.97, 18.99, 44.3, 31.65], [18.99, 0, 31.65, 0, 31.65, 6.33, 25.32, 12.66, 18.99, 18.99, 12.66, 31.65, 12.66, 37.97, 12.66, 44.3, 12.66, 56.96, 18.99, 63.29, 56.96, 63.29, 56.96, 82.28, 25.32, 82.28, 12.66, 82.28, 6.33, 75.95, 0, 63.29, 0, 37.97, 0, 25.32, 6.33, 12.66, 12.66, 6.33, 18.99, 0], [25.32, 12.66, 12.66, 12.66, 12.66, 18.99, 12.66, 25.32, 12.66, 31.65, 18.99, 37.97, 18.99, 44.3, 25.32, 44.3, 31.65, 44.3, 37.97, 37.97, 37.97, 18.99, 31.65, 12.66, 31.65, 0, 37.97, 6.33, 44.3, 12.66, 44.3, 31.65, 44.3, 44.3, 37.97, 56.96, 31.65, 63.29, 18.99, 63.29, 18.99, 56.96, 12.66, 56.96, 6.33, 50.63, 0, 44.3, 0, 31.65, 0, 18.99, 6.33, 6.33, 12.66, 0, 25.32, 0, 25.32, 12.66], [0, 12.66, 18.99, 12.66, 25.32, 50.63, 37.97, 25.32, 44.3, 0, 63.29, 0, 56.96, 25.32, 44.3, 56.96, 25.32, 82.28, 18.99, 88.61, 6.33, 69.62, 0, 50.63, 0, 37.97, 0, 12.66], [12.66, 0, 50.63, 0, 50.63, 12.66, 25.32, 12.66, 25.32, 25.32, 37.97, 25.32, 37.97, 37.97, 25.32, 37.97, 25.32, 50.63, 50.63, 50.63, 56.96, 44.3, 63.29, 44.3, 63.29, 50.63, 56.96, 56.96, 50.63, 63.29, 12.66, 63.29, 6.33, 56.96, 0, 44.3, 0, 37.97, 6.33, 18.99, 12.66, 0], [50.63, 0, 50.63, 6.33, 44.3, 6.33, 37.97, 6.33, 31.65, 12.66, 25.32, 25.32, 25.32, 37.97, 37.97, 63.29, 31.65, 63.29, 6.33, 63.29, 0, 56.96, 0, 44.3, 0, 31.65, 6.33, 18.99, 12.66, 12.66, 18.99, 0, 50.63, 0], [6.33, 0, 18.99, 0, 25.32, 6.33, 25.32, 18.99, 18.99, 31.65, 12.66, 31.65, 6.33, 31.65, 6.33, 25.32, 0, 18.99, 0, 12.66, 0, 0, 6.33, 0], [0, 0, 158.23, 0, 158.23, 6.33, 69.62, 6.33, 63.29, 18.99, 63.29, 25.32, 56.96, 37.97, 56.96, 44.3, 50.63, 50.63, 50.63, 37.97, 50.63, 31.65, 44.3, 18.99, 18.99, 18.99, 12.66, 6.33, 0, 0], [107.59, 75.95, 0, 75.95, 0, 50.63, 6.33, 50.63, 12.66, 56.96, 18.99, 63.29, 63.29, 63.29, 63.29, 50.63, 69.62, 50.63, 75.95, 50.63, 82.28, 44.3, 88.61, 37.97, 88.61, 0, 94.94, 0, 94.94, 18.99, 94.94, 37.97, 94.94, 50.63, 101.27, 63.29, 107.59, 75.95], [0, 88.61, 0, 82.28, 6.33, 75.95, 12.66, 69.62, 18.99, 56.96, 25.32, 44.3, 31.65, 25.32, 37.97, 12.66, 37.97, 0, 44.3, 0, 31.65, 37.97, 31.65, 44.3, 31.65, 50.63, 37.97, 56.96, 44.3, 63.29, 82.28, 63.29, 88.61, 56.96, 94.94, 50.63, 94.94, 44.3, 88.61, 44.3, 82.28, 50.63, 75.95, 50.63, 56.96, 50.63, 56.96, 37.97, 69.62, 37.97, 69.62, 25.32, 56.96, 25.32, 56.96, 12.66, 82.28, 12.66, 82.28, 0, 107.59, 0, 107.59, 88.61, 101.27, 88.61, 88.61, 88.61, 82.28, 82.28, 69.62, 82.28, 63.29, 88.61, 44.3, 88.61, 37.97, 82.28, 31.65, 82.28, 25.32, 82.28, 18.99, 88.61, 0, 88.61], [6.33, 94.94, 0, 94.94, 0, 0, 37.97, 0, 37.97, 6.33, 25.32, 18.99, 25.32, 63.29, 25.32, 69.62, 18.99, 69.62, 18.99, 94.94, 6.33, 94.94], [0, 0, 6.33, 0, 6.33, 12.66, 0, 12.66, 0, 0], [6.33, 0, 12.66, 0, 18.99, 6.33, 18.99, 12.66, 12.66, 18.99, 6.33, 18.99, 0, 12.66, 0, 6.33, 6.33, 0], [0, 12.66, 0, 6.33, 6.33, 0, 12.66, 0, 18.99, 0, 25.32, 6.33, 25.32, 12.66, 25.32, 18.99, 18.99, 25.32, 12.66, 25.32, 6.33, 25.32, 6.33, 18.99, 0, 12.66], [12.66, 0, 18.99, 0, 25.32, 6.33, 25.32, 12.66, 25.32, 18.99, 18.99, 25.32, 12.66, 25.32, 6.33, 25.32, 6.33, 18.99, 0, 12.66, 6.33, 6.33, 6.33, 6.33, 12.66, 0], [12.66, 6.33, 18.99, 6.33, 25.32, 12.66, 25.32, 18.99, 18.99, 25.32, 12.66, 25.32, 6.33, 25.32, 0, 18.99, 0, 12.66, 0, 6.33, 6.33, 0, 12.66, 0, 18.99, 0, 12.66, 6.33], [12.66, 12.66, 18.99, 12.66, 25.32, 12.66, 25.32, 18.99, 12.66, 25.32, 6.33, 25.32, 0, 18.99, 0, 12.66, 0, 6.33, 12.66, 0, 18.99, 0, 25.32, 6.33, 12.66, 12.66], [12.66, 0, 18.99, 0, 25.32, 6.33, 25.32, 12.66, 25.32, 18.99, 18.99, 25.32, 12.66, 18.99, 6.33, 18.99, 6.33, 18.99, 0, 12.66, 0, 6.33, 6.33, 0, 12.66, 0], [63.29, 6.33, 69.62, 0, 69.62, 6.33, 63.29, 12.66, 56.96, 25.32, 56.96, 31.65, 56.96, 37.97, 56.96, 50.63, 56.96, 63.29, 50.63, 63.29, 44.3, 56.96, 37.97, 50.63, 31.65, 50.63, 25.32, 44.3, 25.32, 37.97, 18.99, 31.65, 12.66, 31.65, 0, 44.3, 6.33, 31.65, 12.66, 25.32, 25.32, 25.32, 37.97, 31.65, 44.3, 37.97, 50.63, 56.96, 50.63, 50.63, 50.63, 44.3, 50.63, 31.65, 50.63, 25.32, 56.96, 12.66, 63.29, 6.33], [6.33, 44.3, 0, 25.32, 0, 18.99, 12.66, 18.99, 18.99, 12.66, 18.99, 6.33, 18.99, 0, 31.65, 0, 44.3, 0, 56.96, 12.66, 56.96, 18.99, 56.96, 31.65, 56.96, 37.97, 50.63, 44.3, 37.97, 50.63, 31.65, 50.63, 25.32, 44.3, 37.97, 44.3, 44.3, 37.97, 44.3, 31.65, 44.3, 18.99, 37.97, 12.66, 31.65, 12.66, 18.99, 18.99, 18.99, 25.32, 12.66, 25.32, 44.3, 82.28, 31.65, 88.61, 6.33, 44.3], [0, 31.65, 12.66, 12.66, 18.99, 6.33, 31.65, 0, 37.97, 6.33, 37.97, 12.66, 25.32, 18.99, 18.99, 25.32, 18.99, 31.65, 25.32, 37.97, 31.65, 31.65, 37.97, 31.65, 44.3, 37.97, 44.3, 44.3, 37.97, 44.3, 37.97, 50.63, 44.3, 56.96, 50.63, 56.96, 56.96, 50.63, 63.29, 44.3, 63.29, 37.97, 69.62, 31.65, 75.95, 31.65, 75.95, 37.97, 75.95, 44.3, 69.62, 56.96, 63.29, 69.62, 56.96, 69.62, 50.63, 69.62, 37.97, 69.62, 31.65, 63.29, 25.32, 63.29, 25.32, 50.63, 12.66, 37.97, 0, 37.97, 0, 31.65], [12.66, 37.97, 6.33, 31.65, 0, 25.32, 0, 18.99, 6.33, 6.33, 12.66, 0, 31.65, 0, 44.3, 6.33, 56.96, 18.99, 63.29, 25.32, 82.28, 50.63, 82.28, 56.96, 75.95, 56.96, 69.62, 50.63, 56.96, 37.97, 50.63, 31.65, 37.97, 18.99, 25.32, 12.66, 18.99, 18.99, 18.99, 25.32, 18.99, 31.65, 18.99, 37.97, 12.66, 44.3, 12.66, 37.97], [25.32, 0, 31.65, 0, 31.65, 6.33, 25.32, 12.66, 18.99, 12.66, 12.66, 12.66, 12.66, 18.99, 18.99, 25.32, 25.32, 31.65, 31.65, 37.97, 25.32, 44.3, 18.99, 44.3, 12.66, 37.97, 12.66, 31.65, 6.33, 18.99, 0, 12.66, 6.33, 6.33, 6.33, 0, 12.66, 6.33, 18.99, 6.33, 25.32, 0], [0, 12.66, 6.33, 6.33, 18.99, 0, 31.65, 0, 31.65, 6.33, 31.65, 12.66, 25.32, 12.66, 18.99, 12.66, 12.66, 18.99, 12.66, 25.32, 12.66, 31.65, 6.33, 31.65, 0, 31.65, 0, 18.99, 0, 12.66], [0, 25.32, 12.66, 25.32, 18.99, 18.99, 18.99, 12.66, 18.99, 6.33, 18.99, 0, 25.32, 0, 31.65, 6.33, 31.65, 12.66, 31.65, 25.32, 25.32, 37.97, 18.99, 37.97, 12.66, 37.97, 0, 25.32], [0, 0, 6.33, 0, 12.66, 0, 18.99, 6.33, 25.32, 12.66, 25.32, 18.99, 18.99, 18.99, 12.66, 12.66, 6.33, 6.33, 0, 0], [25.32, 56.96, 6.33, 37.97, 0, 25.32, 0, 12.66, 6.33, 6.33, 18.99, 0, 25.32, 0, 31.65, 6.33, 25.32, 12.66, 18.99, 12.66, 12.66, 18.99, 12.66, 25.32, 18.99, 31.65, 25.32, 37.97, 31.65, 31.65, 37.97, 25.32, 44.3, 25.32, 50.63, 31.65, 44.3, 37.97, 37.97, 44.3, 37.97, 50.63, 31.65, 50.63, 31.65, 56.96, 31.65, 63.29, 25.32, 56.96], [25.32, 0, 31.65, 0, 31.65, 6.33, 31.65, 12.66, 25.32, 18.99, 12.66, 25.32, 6.33, 25.32, 0, 25.32, 0, 18.99, 0, 12.66, 6.33, 12.66, 12.66, 12.66, 18.99, 6.33, 18.99, 0, 25.32, 0], [0, 12.66, 6.33, 12.66, 6.33, 6.33, 12.66, 6.33, 18.99, 0, 25.32, 0, 31.65, 6.33, 31.65, 12.66, 31.65, 18.99, 31.65, 25.32, 25.32, 31.65, 18.99, 31.65, 12.66, 31.65, 0, 12.66], [0, 0, 82.28, 0, 82.28, 12.66, 75.95, 12.66, 69.62, 18.99, 63.29, 25.32, 56.96, 31.65, 50.63, 44.3, 50.63, 50.63, 37.97, 50.63, 31.65, 44.3, 37.97, 44.3, 44.3, 37.97, 44.3, 31.65, 44.3, 25.32, 37.97, 18.99, 31.65, 18.99, 25.32, 18.99, 18.99, 25.32, 18.99, 31.65, 12.66, 31.65, 12.66, 25.32, 12.66, 18.99, 6.33, 12.66, 0, 12.66, 0, 0], [25.32, 0, 37.97, 0, 37.97, 12.66, 37.97, 18.99, 31.65, 25.32, 25.32, 31.65, 25.32, 37.97, 25.32, 44.3, 31.65, 50.63, 37.97, 56.96, 37.97, 63.29, 31.65, 69.62, 25.32, 69.62, 18.99, 63.29, 18.99, 56.96, 25.32, 56.96, 25.32, 50.63, 18.99, 44.3, 12.66, 44.3, 6.33, 50.63, 0, 44.3, 0, 37.97, 6.33, 31.65, 12.66, 31.65, 18.99, 25.32, 18.99, 18.99, 12.66, 12.66, 12.66, 0, 25.32, 0], [25.32, 0, 31.65, 0, 37.97, 12.66, 44.3, 18.99, 50.63, 25.32, 56.96, 31.65, 63.29, 37.97, 63.29, 44.3, 56.96, 50.63, 50.63, 50.63, 44.3, 50.63, 37.97, 44.3, 31.65, 37.97, 25.32, 31.65, 18.99, 25.32, 12.66, 18.99, 6.33, 18.99, 0, 18.99, 0, 12.66, 0, 6.33, 6.33, 0, 25.32, 0], [12.66, 0, 25.32, 0, 12.66, 12.66, 6.33, 6.33, 0, 0, 6.33, 0, 12.66, 0], [37.97, 0, 37.97, 18.99, 25.32, 18.99, 25.32, 25.32, 18.99, 31.65, 12.66, 31.65, 6.33, 31.65, 6.33, 25.32, 0, 25.32, 0, 18.99, 12.66, 6.33, 6.33, 0, 37.97, 0], [0, 6.33, 6.33, 6.33, 12.66, 6.33, 18.99, 0, 18.99, 6.33, 25.32, 25.32, 50.63, 69.62, 63.29, 63.29, 50.63, 37.97, 50.63, 31.65, 56.96, 31.65, 63.29, 31.65, 69.62, 25.32, 75.95, 18.99, 75.95, 6.33, 82.28, 6.33, 88.61, 12.66, 113.92, 12.66, 120.25, 6.33, 120.25, 0, 126.58, 6.33, 126.58, 82.28, 0, 82.28, 0, 6.33], [63.29, 94.94, 0, 94.94, 0, 25.32, 6.33, 31.65, 6.33, 37.97, 12.66, 44.3, 18.99, 44.3, 25.32, 37.97, 12.66, 25.32, 6.33, 18.99, 6.33, 12.66, 12.66, 12.66, 18.99, 12.66, 25.32, 6.33, 25.32, 0, 31.65, 6.33, 37.97, 12.66, 44.3, 18.99, 44.3, 25.32, 50.63, 25.32, 50.63, 12.66, 44.3, 0, 50.63, 6.33, 63.29, 6.33, 63.29, 94.94], [44.3, 0, 63.29, 0, 63.29, 151.9, 0, 151.9, 0, 63.29, 6.33, 56.96, 6.33, 44.3, 12.66, 44.3, 18.99, 44.3, 25.32, 44.3, 31.65, 37.97, 37.97, 31.65, 37.97, 0, 44.3, 0], [151.9, 0, 151.9, 50.63, 63.29, 50.63, 63.29, 44.3, 69.62, 37.97, 75.95, 37.97, 82.28, 31.65, 75.95, 25.32, 69.62, 25.32, 56.96, 31.65, 50.63, 37.97, 50.63, 44.3, 50.63, 50.63, 37.97, 50.63, 37.97, 37.97, 31.65, 37.97, 25.32, 37.97, 12.66, 44.3, 6.33, 50.63, 0, 50.63, 0, 44.3, 6.33, 37.97, 6.33, 31.65, 12.66, 25.32, 18.99, 12.66, 25.32, 6.33, 25.32, 6.33, 31.65, 0, 151.9, 0], [0, 0, 37.97, 0, 37.97, 6.33, 44.3, 12.66, 50.63, 6.33, 50.63, 0, 63.29, 0, 69.62, 6.33, 82.28, 31.65, 101.27, 50.63, 0, 50.63, 0, 0], [6.33, 12.66, 0, 12.66, 0, 6.33, 0, 0, 6.33, 6.33, 12.66, 12.66, 12.66, 18.99, 6.33, 18.99, 6.33, 12.66], [18.99, 82.28, 25.32, 101.27, 18.99, 101.27, 12.66, 101.27, 6.33, 101.27, 0, 94.94, 6.33, 82.28, 12.66, 69.62, 12.66, 63.29, 18.99, 56.96, 25.32, 44.3, 25.32, 37.97, 31.65, 25.32, 31.65, 12.66, 31.65, 6.33, 25.32, 0, 44.3, 0, 50.63, 12.66, 50.63, 18.99, 50.63, 31.65, 50.63, 50.63, 44.3, 50.63, 37.97, 50.63, 31.65, 50.63, 25.32, 56.96, 18.99, 63.29, 18.99, 75.95, 18.99, 82.28], [0, 94.94, 0, 0, 6.33, 0, 6.33, 94.94, 0, 94.94], [6.33, 0, 75.95, 0, 82.28, 6.33, 6.33, 6.33, 0, 0, 6.33, 0], [12.66, 0, 12.66, 50.63, 12.66, 69.62, 0, 50.63, 0, 0, 12.66, 0], [0, 6.33, 0, 0, 50.63, 0, 50.63, 12.66, 0, 12.66, 0, 6.33], [0, 0, 63.29, 0, 63.29, 6.33, 56.96, 6.33, 50.63, 6.33, 44.3, 12.66, 37.97, 18.99, 31.65, 25.32, 25.32, 12.66, 18.99, 6.33, 0, 6.33, 0, 0], [12.66, 6.33, 18.99, 12.66, 12.66, 31.65, 0, 0, 6.33, 0, 12.66, 0, 18.99, 0, 18.99, 6.33, 12.66, 6.33], [94.94, 50.63, 0, 50.63, 6.33, 44.3, 12.66, 37.97, 18.99, 31.65, 18.99, 25.32, 18.99, 18.99, 18.99, 12.66, 12.66, 6.33, 12.66, 0, 88.61, 0, 94.94, 6.33, 94.94, 12.66, 94.94, 18.99, 88.61, 25.32, 88.61, 37.97, 94.94, 50.63], [113.92, 50.63, 107.59, 50.63, 107.59, 44.3, 107.59, 37.97, 107.59, 31.65, 101.27, 25.32, 94.94, 18.99, 88.61, 18.99, 82.28, 25.32, 82.28, 31.65, 82.28, 44.3, 75.95, 37.97, 56.96, 37.97, 50.63, 44.3, 50.63, 50.63, 0, 50.63, 0, 44.3, 6.33, 31.65, 12.66, 25.32, 18.99, 18.99, 25.32, 6.33, 31.65, 0, 126.58, 0, 132.91, 6.33, 139.24, 12.66, 145.57, 25.32, 151.9, 31.65, 158.23, 37.97, 164.56, 44.3, 164.56, 50.63, 113.92, 50.63], [12.66, 82.28, 12.66, 88.61, 0, 88.61, 0, 0, 12.66, 0, 12.66, 82.28], [12.66, 0, 18.99, 0, 18.99, 88.61, 0, 88.61, 0, 0, 6.33, 6.33, 12.66, 0], [12.66, 6.33, 12.66, 37.97, 6.33, 44.3, 6.33, 50.63, 6.33, 56.96, 12.66, 63.29, 12.66, 88.61, 0, 88.61, 0, 0, 12.66, 0, 12.66, 6.33], [12.66, 18.99, 18.99, 18.99, 25.32, 25.32, 0, 25.32, 0, 12.66, 0, 0, 6.33, 6.33, 6.33, 12.66, 12.66, 18.99], [145.57, 0, 158.23, 0, 158.23, 25.32, 56.96, 25.32, 56.96, 44.3, 158.23, 44.3, 158.23, 63.29, 56.96, 63.29, 56.96, 75.95, 158.23, 75.95, 158.23, 94.94, 37.97, 94.94, 44.3, 88.61, 50.63, 75.95, 50.63, 69.62, 50.63, 63.29, 44.3, 56.96, 37.97, 56.96, 25.32, 56.96, 18.99, 63.29, 12.66, 69.62, 6.33, 63.29, 6.33, 56.96, 6.33, 50.63, 0, 44.3, 0, 0, 56.96, 0, 69.62, 12.66, 75.95, 12.66, 82.28, 6.33, 82.28, 0, 145.57, 0], [101.27, 6.33, 101.27, 18.99, 0, 18.99, 0, 0, 101.27, 0, 101.27, 6.33], [101.27, 6.33, 101.27, 12.66, 0, 12.66, 0, 0, 101.27, 0, 101.27, 6.33], [0, 94.94, 0, 44.3, 151.9, 44.3, 158.23, 44.3, 164.56, 37.97, 170.89, 31.65, 177.22, 37.97, 177.22, 44.3, 183.54, 50.63, 189.87, 50.63, 196.2, 56.96, 202.53, 63.29, 208.86, 69.62, 215.19, 69.62, 208.86, 56.96, 208.86, 50.63, 208.86, 31.65, 215.19, 18.99, 221.52, 12.66, 221.52, 6.33, 221.52, 0, 227.85, 0, 227.85, 6.33, 227.85, 12.66, 227.85, 18.99, 234.18, 18.99, 234.18, 94.94, 0, 94.94], [0, 0, 88.61, 0, 88.61, 6.33, 94.94, 12.66, 94.94, 18.99, 94.94, 25.32, 101.27, 37.97, 101.27, 44.3, 101.27, 50.63, 113.92, 50.63, 107.59, 25.32, 101.27, 12.66, 101.27, 0, 151.9, 0, 151.9, 6.33, 164.56, 18.99, 170.89, 25.32, 177.22, 31.65, 183.54, 37.97, 189.87, 44.3, 189.87, 50.63, 196.2, 63.29, 202.53, 50.63, 208.86, 25.32, 208.86, 18.99, 208.86, 0, 234.18, 0, 234.18, 63.29, 227.85, 63.29, 221.52, 69.62, 221.52, 75.95, 221.52, 82.28, 215.19, 88.61, 215.19, 94.94, 215.19, 101.27, 221.52, 107.59, 208.86, 120.25, 202.53, 132.91, 202.53, 145.57, 196.2, 145.57, 189.87, 139.24, 177.22, 132.91, 170.89, 132.91, 164.56, 132.91, 158.23, 139.24, 151.9, 151.9, 0, 151.9, 0, 0], [0, 6.33, 0, 0, 82.28, 0, 82.28, 101.27, 88.61, 101.27, 82.28, 107.59, 75.95, 113.92, 75.95, 120.25, 75.95, 132.91, 82.28, 158.23, 94.94, 196.2, 6.33, 196.2, 0, 196.2, 0, 6.33], [82.28, 0, 94.94, 0, 94.94, 107.59, 18.99, 107.59, 25.32, 94.94, 25.32, 82.28, 25.32, 69.62, 25.32, 56.96, 18.99, 50.63, 12.66, 44.3, 0, 44.3, 0, 0, 82.28, 0], [0, 202.53, 0, 0, 6.33, 0, 6.33, 202.53, 0, 202.53]], [[25.32, 0, 31.65, 0, 50.63, 0, 63.29, 6.33, 69.62, 12.66, 88.61, 31.65, 107.59, 37.97, 113.92, 50.63, 113.92, 56.96, 107.59, 69.62, 101.27, 75.95, 94.94, 82.28, 82.28, 82.28, 69.62, 75.95, 63.29, 69.62, 56.96, 63.29, 56.96, 63.29, 50.63, 63.29, 44.3, 69.62, 37.97, 75.95, 25.32, 75.95, 12.66, 69.62, 6.33, 63.29, 0, 56.96, 6.33, 50.63, 12.66, 37.97, 18.99, 31.65, 25.32, 25.32, 31.65, 12.66, 31.65, 6.33, 25.32, 0], [31.65, 0, 25.32, 12.66, 37.97, 12.66, 50.63, 25.32, 50.63, 31.65, 63.29, 31.65, 82.28, 18.99, 113.92, 6.33, 120.25, 0, 139.24, 0, 151.9, 0, 183.54, 25.32, 208.86, 50.63, 234.18, 69.62, 246.84, 88.61, 240.51, 101.27, 221.52, 101.27, 183.54, 88.61, 164.56, 75.95, 151.9, 69.62, 139.24, 63.29, 132.91, 63.29, 120.25, 63.29, 113.92, 63.29, 107.59, 69.62, 101.27, 75.95, 88.61, 69.62, 82.28, 69.62, 75.95, 63.29, 69.62, 56.96, 56.96, 44.3, 44.3, 37.97, 25.32, 37.97, 18.99, 37.97, 25.32, 44.3, 25.32, 50.63, 18.99, 63.29, 12.66, 69.62, 6.33, 75.95, 6.33, 69.62, 6.33, 63.29, 6.33, 56.96, 0, 44.3, 0, 37.97, 0, 25.32, 0, 18.99, 6.33, 12.66, 12.66, 6.33, 18.99, 0, 31.65, 0], [6.33, 50.63, 0, 50.63, 0, 50.63, 0, 31.65, 6.33, 25.32, 12.66, 18.99, 25.32, 25.32, 25.32, 50.63, 31.65, 44.3, 31.65, 25.32, 25.32, 12.66, 37.97, 18.99, 56.96, 12.66, 37.97, 12.66, 37.97, 0, 50.63, 0, 69.62, 12.66, 63.29, 18.99, 69.62, 25.32, 69.62, 37.97, 63.29, 56.96, 56.96, 69.62, 44.3, 75.95, 31.65, 82.28, 18.99, 75.95, 12.66, 56.96, 6.33, 50.63], [63.29, 0, 63.29, 12.66, 69.62, 18.99, 82.28, 25.32, 94.94, 31.65, 88.61, 37.97, 69.62, 44.3, 56.96, 50.63, 44.3, 56.96, 37.97, 63.29, 31.65, 63.29, 25.32, 63.29, 25.32, 56.96, 18.99, 50.63, 12.66, 44.3, 6.33, 44.3, 0, 44.3, 6.33, 37.97, 6.33, 31.65, 12.66, 31.65, 18.99, 31.65, 25.32, 31.65, 31.65, 31.65, 37.97, 25.32, 44.3, 25.32, 50.63, 18.99, 56.96, 12.66, 56.96, 6.33, 63.29, 0], [120.25, 0, 113.92, 6.33, 107.59, 12.66, 101.27, 18.99, 101.27, 18.99, 94.94, 25.32, 94.94, 37.97, 94.94, 50.63, 101.27, 56.96, 107.59, 63.29, 107.59, 75.95, 88.61, 101.27, 56.96, 101.27, 44.3, 113.92, 37.97, 132.91, 50.63, 164.56, 0, 177.22, 0, 158.23, 0, 145.57, 6.33, 126.58, 12.66, 113.92, 25.32, 94.94, 31.65, 88.61, 31.65, 82.28, 18.99, 56.96, 12.66, 50.63, 18.99, 44.3, 25.32, 37.97, 31.65, 37.97, 37.97, 44.3, 44.3, 50.63, 50.63, 56.96, 63.29, 56.96, 69.62, 56.96, 75.95, 50.63, 82.28, 44.3, 88.61, 31.65, 88.61, 18.99, 82.28, 12.66, 94.94, 6.33, 101.27, 0, 113.92, 0, 120.25, 0], [18.99, 6.33, 25.32, 6.33, 31.65, 6.33, 37.97, 6.33, 44.3, 6.33, 50.63, 0, 50.63, 18.99, 50.63, 50.63, 44.3, 88.61, 31.65, 113.92, 31.65, 132.91, 25.32, 145.57, 18.99, 158.23, 6.33, 164.56, 0, 164.56, 6.33, 158.23, 12.66, 151.9, 12.66, 145.57, 6.33, 145.57, 6.33, 139.24, 6.33, 132.91, 6.33, 126.58, 18.99, 113.92, 18.99, 94.94, 18.99, 69.62, 12.66, 50.63, 12.66, 37.97, 12.66, 18.99, 18.99, 6.33], [82.28, 6.33, 94.94, 25.32, 107.59, 63.29, 107.59, 94.94, 101.27, 126.58, 75.95, 151.9, 63.29, 164.56, 0, 164.56, 6.33, 145.57, 12.66, 132.91, 37.97, 107.59, 63.29, 94.94, 88.61, 88.61, 94.94, 37.97, 82.28, 12.66, 75.95, 6.33, 75.95, 0, 82.28, 6.33], [50.63, 88.61, 44.3, 82.28, 44.3, 75.95, 37.97, 63.29, 31.65, 56.96, 37.97, 44.3, 44.3, 37.97, 50.63, 31.65, 56.96, 31.65, 69.62, 25.32, 75.95, 25.32, 82.28, 25.32, 94.94, 12.66, 101.27, 0, 107.59, 0, 113.92, 12.66, 120.25, 25.32, 113.92, 56.96, 113.92, 75.95, 107.59, 75.95, 101.27, 75.95, 88.61, 82.28, 75.95, 88.61, 63.29, 94.94, 56.96, 101.27, 50.63, 107.59, 37.97, 120.25, 31.65, 132.91, 25.32, 151.9, 6.33, 151.9, 6.33, 145.57, 6.33, 139.24, 6.33, 126.58, 6.33, 120.25, 0, 107.59, 0, 101.27, 6.33, 101.27, 25.32, 94.94, 44.3, 88.61, 50.63, 88.61], [31.65, 113.92, 37.97, 113.92, 37.97, 120.25, 37.97, 126.58, 37.97, 132.91, 44.3, 145.57, 44.3, 151.9, 37.97, 158.23, 31.65, 170.89, 18.99, 177.22, 18.99, 183.54, 12.66, 189.87, 12.66, 183.54, 6.33, 177.22, 6.33, 164.56, 0, 158.23, 0, 151.9, 12.66, 132.91, 6.33, 126.58, 12.66, 107.59, 25.32, 88.61, 18.99, 82.28, 31.65, 63.29, 44.3, 56.96, 37.97, 44.3, 37.97, 31.65, 37.97, 18.99, 50.63, 12.66, 56.96, 12.66, 63.29, 6.33, 75.95, 0, 88.61, 0, 94.94, 6.33, 94.94, 12.66, 94.94, 18.99, 101.27, 18.99, 94.94, 25.32, 88.61, 18.99, 88.61, 18.99, 82.28, 18.99, 82.28, 25.32, 82.28, 31.65, 75.95, 25.32, 75.95, 18.99, 69.62, 12.66, 69.62, 18.99, 69.62, 25.32, 69.62, 25.32, 63.29, 31.65, 56.96, 37.97, 56.96, 37.97, 56.96, 50.63, 56.96, 56.96, 63.29, 56.96, 69.62, 63.29, 75.95, 82.28, 82.28, 88.61, 75.95, 88.61, 63.29, 88.61, 56.96, 88.61, 50.63, 94.94, 44.3, 101.27, 37.97, 107.59, 31.65, 113.92], [44.3, 75.95, 50.63, 75.95, 56.96, 63.29, 44.3, 56.96, 50.63, 44.3, 50.63, 37.97, 44.3, 31.65, 44.3, 25.32, 50.63, 18.99, 50.63, 12.66, 44.3, 6.33, 37.97, 6.33, 25.32, 0, 0, 0, 0, 6.33, 6.33, 6.33, 12.66, 6.33, 31.65, 18.99, 37.97, 18.99, 25.32, 25.32, 31.65, 31.65, 31.65, 37.97, 37.97, 44.3, 31.65, 50.63, 31.65, 56.96, 31.65, 63.29, 37.97, 69.62, 37.97, 75.95, 44.3, 75.95], [0, 6.33, 18.99, 6.33, 50.63, 0, 50.63, 6.33, 44.3, 12.66, 18.99, 12.66, 6.33, 12.66, 0, 12.66, 0, 6.33], [6.33, 6.33, 12.66, 12.66, 18.99, 12.66, 31.65, 12.66, 37.97, 6.33, 50.63, 0, 63.29, 6.33, 63.29, 6.33, 75.95, 6.33, 75.95, 12.66, 69.62, 12.66, 44.3, 12.66, 25.32, 18.99, 0, 12.66, 0, 6.33, 6.33, 6.33], [0, 0, 6.33, 0, 12.66, 0, 25.32, 6.33, 31.65, 6.33, 44.3, 6.33, 56.96, 6.33, 50.63, 12.66, 31.65, 12.66, 18.99, 12.66, 12.66, 6.33, 6.33, 6.33, 0, 6.33, 0, 0], [0, 6.33, 6.33, 6.33, 12.66, 12.66, 18.99, 12.66, 18.99, 12.66, 37.97, 6.33, 44.3, 6.33, 44.3, 0, 37.97, 0, 25.32, 0, 25.32, 6.33, 12.66, 6.33, 6.33, 0, 0, 0, 0, 6.33], [101.27, 6.33, 113.92, 6.33, 126.58, 0, 132.91, 0, 145.57, 6.33, 151.9, 6.33, 158.23, 6.33, 158.23, 18.99, 158.23, 37.97, 139.24, 37.97, 120.25, 31.65, 88.61, 44.3, 63.29, 50.63, 56.96, 50.63, 25.32, 44.3, 0, 44.3, 6.33, 37.97, 12.66, 25.32, 12.66, 18.99, 18.99, 18.99, 25.32, 25.32, 31.65, 25.32, 37.97, 18.99, 44.3, 18.99, 50.63, 18.99, 56.96, 18.99, 50.63, 25.32, 50.63, 31.65, 50.63, 37.97, 50.63, 44.3, 50.63, 44.3, 69.62, 44.3, 75.95, 37.97, 75.95, 31.65, 75.95, 25.32, 82.28, 18.99, 88.61, 18.99, 94.94, 18.99, 132.91, 18.99, 139.24, 18.99, 139.24, 12.66, 113.92, 12.66, 107.59, 12.66, 101.27, 6.33], [189.87, 12.66, 189.87, 31.65, 177.22, 37.97, 158.23, 31.65, 132.91, 37.97, 107.59, 44.3, 88.61, 44.3, 69.62, 31.65, 56.96, 31.65, 31.65, 44.3, 18.99, 44.3, 0, 44.3, 12.66, 31.65, 18.99, 25.32, 31.65, 18.99, 31.65, 12.66, 44.3, 12.66, 56.96, 12.66, 94.94, 18.99, 107.59, 18.99, 126.58, 12.66, 139.24, 6.33, 151.9, 0, 158.23, 6.33, 183.54, 6.33, 189.87, 12.66], [151.9, 0, 158.23, 6.33, 151.9, 18.99, 164.56, 25.32, 164.56, 31.65, 107.59, 18.99, 88.61, 25.32, 63.29, 25.32, 31.65, 31.65, 0, 25.32, 31.65, 18.99, 88.61, 0, 126.58, 6.33, 151.9, 0], [139.24, 18.99, 145.57, 25.32, 145.57, 31.65, 145.57, 37.97, 145.57, 44.3, 145.57, 50.63, 139.24, 50.63, 113.92, 31.65, 82.28, 31.65, 56.96, 44.3, 44.3, 44.3, 31.65, 31.65, 12.66, 31.65, 0, 25.32, 12.66, 25.32, 25.32, 18.99, 31.65, 12.66, 56.96, 18.99, 63.29, 12.66, 82.28, 0, 94.94, 0, 107.59, 6.33, 132.91, 6.33, 139.24, 18.99], [0, 12.66, 6.33, 12.66, 12.66, 6.33, 25.32, 6.33, 31.65, 6.33, 56.96, 0, 88.61, 0, 75.95, 6.33, 69.62, 12.66, 56.96, 12.66, 50.63, 6.33, 31.65, 12.66, 25.32, 18.99, 6.33, 18.99, 0, 12.66], [69.62, 0, 69.62, 37.97, 56.96, 44.3, 44.3, 37.97, 25.32, 44.3, 18.99, 44.3, 18.99, 44.3, 18.99, 50.63, 12.66, 50.63, 6.33, 44.3, 0, 44.3, 0, 44.3, 0, 44.3, 0, 44.3, 0, 31.65, 6.33, 25.32, 6.33, 18.99, 12.66, 6.33, 12.66, 0, 69.62, 0], [56.96, 0, 63.29, 0, 63.29, 6.33, 63.29, 12.66, 63.29, 18.99, 63.29, 25.32, 63.29, 31.65, 63.29, 37.97, 63.29, 44.3, 56.96, 44.3, 50.63, 44.3, 31.65, 44.3, 18.99, 50.63, 6.33, 50.63, 6.33, 44.3, 6.33, 31.65, 6.33, 12.66, 0, 0, 56.96, 0], [0, 0, 221.52, 0, 215.19, 6.33, 208.86, 18.99, 208.86, 25.32, 202.53, 31.65, 202.53, 37.97, 202.53, 44.3, 196.2, 50.63, 189.87, 50.63, 177.22, 50.63, 164.56, 50.63, 139.24, 50.63, 126.58, 44.3, 101.27, 18.99, 0, 18.99, 0, 0], [120.25, 25.32, 120.25, 31.65, 101.27, 37.97, 82.28, 44.3, 69.62, 50.63, 63.29, 50.63, 0, 50.63, 0, 0, 94.94, 0, 120.25, 25.32], [25.32, 0, 37.97, 0, 50.63, 6.33, 56.96, 12.66, 69.62, 18.99, 75.95, 25.32, 88.61, 25.32, 101.27, 31.65, 94.94, 37.97, 94.94, 50.63, 94.94, 56.96, 94.94, 63.29, 94.94, 75.95, 94.94, 82.28, 101.27, 94.94, 37.97, 94.94, 37.97, 88.61, 31.65, 82.28, 25.32, 69.62, 18.99, 56.96, 6.33, 50.63, 0, 37.97, 0, 25.32, 6.33, 18.99, 12.66, 12.66, 25.32, 0], [215.19, 50.63, 221.52, 56.96, 227.85, 75.95, 227.85, 82.28, 227.85, 94.94, 221.52, 101.27, 0, 101.27, 0, 0, 145.57, 0, 145.57, 6.33, 151.9, 12.66, 151.9, 18.99, 151.9, 25.32, 151.9, 31.65, 151.9, 31.65, 151.9, 37.97, 158.23, 44.3, 164.56, 44.3, 164.56, 37.97, 170.89, 25.32, 177.22, 18.99, 177.22, 18.99, 183.54, 12.66, 183.54, 6.33, 189.87, 6.33, 189.87, 12.66, 183.54, 18.99, 183.54, 25.32, 177.22, 25.32, 177.22, 31.65, 177.22, 37.97, 183.54, 37.97, 189.87, 44.3, 189.87, 44.3, 196.2, 50.63, 208.86, 50.63, 215.19, 50.63], [37.97, 0, 44.3, 0, 69.62, 6.33, 82.28, 18.99, 88.61, 37.97, 82.28, 63.29, 50.63, 75.95, 25.32, 75.95, 6.33, 63.29, 0, 44.3, 0, 31.65, 0, 18.99, 12.66, 6.33, 25.32, 0, 37.97, 0], [0, 0, 12.66, 0, 6.33, 56.96, 0, 0], [0, 6.33, 12.66, 0, 50.63, 75.95, 0, 6.33], [0, 12.66, 0, 0, 31.65, 25.32, 31.65, 37.97, 0, 12.66], [6.33, 12.66, 0, 0, 31.65, 0, 31.65, 6.33, 6.33, 12.66], [0, 12.66, 31.65, 0, 44.3, 0, 12.66, 18.99, 0, 12.66], [6.33, 0, 18.99, 0, 12.66, 6.33, 0, 6.33, 6.33, 0], [0, 0, 12.66, 0, 18.99, 6.33, 6.33, 12.66, 0, 0], [12.66, 0, 50.63, 18.99, 56.96, 18.99, 50.63, 25.32, 50.63, 37.97, 0, 0, 12.66, 0], [75.95, 0, 82.28, 12.66, 6.33, 37.97, 0, 31.65, 6.33, 31.65, 12.66, 25.32, 75.95, 0], [18.99, 6.33, 25.32, 0, 31.65, 6.33, 37.97, 12.66, 6.33, 31.65, 0, 25.32, 18.99, 6.33], [37.97, 0, 50.63, 0, 50.63, 44.3, 56.96, 63.29, 31.65, 44.3, 0, 12.66, 12.66, 6.33, 25.32, 0, 37.97, 0], [0, 6.33, 6.33, 0, 56.96, 69.62, 63.29, 69.62, 69.62, 75.95, 69.62, 170.89, 12.66, 170.89, 12.66, 158.23, 12.66, 145.57, 12.66, 120.25, 12.66, 107.59, 12.66, 101.27, 12.66, 94.94, 12.66, 88.61, 0, 75.95, 0, 69.62, 0, 63.29, 0, 37.97, 0, 6.33], [0, 0, 37.97, 25.32, 37.97, 75.95, 0, 0], [0, 6.33, 25.32, 0, 25.32, 31.65, 0, 6.33], [37.97, 0, 37.97, 37.97, 6.33, 31.65, 0, 18.99, 37.97, 0], [6.33, 0, 25.32, 0, 0, 12.66, 0, 6.33, 6.33, 0], [37.97, 12.66, 31.65, 18.99, 0, 0, 31.65, 0, 37.97, 12.66], [0, 0, 37.97, 0, 88.61, 37.97, 25.32, 69.62, 25.32, 56.96, 18.99, 56.96, 18.99, 50.63, 18.99, 44.3, 18.99, 37.97, 12.66, 31.65, 18.99, 25.32, 18.99, 18.99, 18.99, 12.66, 12.66, 6.33, 6.33, 6.33, 0, 0], [69.62, 0, 75.95, 6.33, 50.63, 31.65, 50.63, 31.65, 44.3, 25.32, 37.97, 25.32, 31.65, 25.32, 25.32, 25.32, 18.99, 25.32, 12.66, 25.32, 0, 18.99, 69.62, 0], [196.2, 0, 202.53, 0, 196.2, 6.33, 189.87, 12.66, 183.54, 12.66, 177.22, 12.66, 170.89, 18.99, 170.89, 25.32, 170.89, 31.65, 170.89, 44.3, 170.89, 50.63, 170.89, 56.96, 164.56, 63.29, 158.23, 69.62, 151.9, 82.28, 158.23, 88.61, 145.57, 107.59, 145.57, 107.59, 139.24, 113.92, 139.24, 113.92, 139.24, 120.25, 139.24, 126.58, 145.57, 132.91, 139.24, 139.24, 132.91, 145.57, 132.91, 151.9, 6.33, 151.9, 0, 0, 196.2, 0], [6.33, 132.91, 0, 0, 18.99, 0, 25.32, 151.9, 6.33, 151.9, 6.33, 132.91]], [[25.32, 0, 31.65, 6.33, 82.28, 6.33, 88.61, 0, 88.61, 12.66, 82.28, 18.99, 75.95, 18.99, 75.95, 25.32, 82.28, 31.65, 88.61, 37.97, 101.27, 50.63, 101.27, 63.29, 101.27, 82.28, 94.94, 94.94, 82.28, 120.25, 63.29, 139.24, 75.95, 151.9, 69.62, 158.23, 56.96, 158.23, 37.97, 158.23, 31.65, 151.9, 44.3, 139.24, 25.32, 120.25, 6.33, 101.27, 0, 82.28, 0, 50.63, 31.65, 25.32, 25.32, 12.66, 25.32, 0], [50.63, 63.29, 25.32, 18.99, 18.99, 25.32, 12.66, 25.32, 6.33, 25.32, 0, 25.32, 12.66, 6.33, 25.32, 0, 37.97, 6.33, 50.63, 63.29], [63.29, 18.99, 63.29, 25.32, 56.96, 25.32, 50.63, 25.32, 44.3, 18.99, 25.32, 25.32, 12.66, 37.97, 18.99, 69.62, 12.66, 63.29, 0, 50.63, 0, 37.97, 6.33, 25.32, 18.99, 6.33, 31.65, 0, 50.63, 0, 63.29, 18.99], [101.27, 0, 75.95, 12.66, 56.96, 25.32, 37.97, 44.3, 25.32, 56.96, 18.99, 63.29, 6.33, 82.28, 0, 82.28, 12.66, 63.29, 31.65, 44.3, 44.3, 31.65, 69.62, 12.66, 88.61, 0, 94.94, 0, 101.27, 0], [88.61, 69.62, 56.96, 25.32, 44.3, 12.66, 18.99, 6.33, 6.33, 6.33, 0, 0, 25.32, 0, 37.97, 6.33, 56.96, 18.99, 69.62, 37.97, 82.28, 56.96, 94.94, 69.62, 88.61, 69.62], [37.97, 107.59, 44.3, 94.94, 44.3, 75.95, 31.65, 44.3, 18.99, 31.65, 0, 0, 18.99, 6.33, 37.97, 25.32, 50.63, 50.63, 56.96, 75.95, 56.96, 94.94, 56.96, 107.59, 44.3, 120.25, 37.97, 120.25, 37.97, 113.92, 37.97, 107.59], [6.33, 6.33, 18.99, 0, 37.97, 6.33, 56.96, 18.99, 75.95, 44.3, 75.95, 82.28, 69.62, 69.62, 63.29, 56.96, 50.63, 44.3, 37.97, 25.32, 18.99, 18.99, 12.66, 18.99, 6.33, 12.66, 0, 12.66, 6.33, 6.33], [0, 18.99, 18.99, 6.33, 44.3, 0, 63.29, 12.66, 63.29, 18.99, 56.96, 18.99, 50.63, 12.66, 44.3, 6.33, 37.97, 6.33, 31.65, 6.33, 18.99, 12.66, 6.33, 18.99, 0, 18.99], [75.95, 18.99, 69.62, 18.99, 63.29, 12.66, 50.63, 6.33, 44.3, 6.33, 37.97, 6.33, 25.32, 6.33, 12.66, 12.66, 6.33, 25.32, 6.33, 31.65, 0, 31.65, 0, 25.32, 6.33, 12.66, 18.99, 6.33, 37.97, 0, 63.29, 6.33, 75.95, 18.99], [25.32, 88.61, 25.32, 56.96, 18.99, 44.3, 6.33, 12.66, 0, 0, 6.33, 0, 18.99, 31.65, 31.65, 56.96, 31.65, 69.62, 31.65, 88.61, 25.32, 94.94, 25.32, 88.61], [0, 31.65, 0, 25.32, 6.33, 12.66, 18.99, 0, 31.65, 0, 25.32, 6.33, 18.99, 6.33, 12.66, 18.99, 6.33, 31.65, 6.33, 37.97, 0, 37.97, 0, 31.65], [0, 50.63, 6.33, 50.63, 6.33, 44.3, 12.66, 37.97, 25.32, 31.65, 31.65, 25.32, 37.97, 6.33, 37.97, 0, 44.3, 6.33, 44.3, 31.65, 31.65, 50.63, 18.99, 56.96, 6.33, 56.96, 0, 50.63], [31.65, 0, 37.97, 6.33, 31.65, 18.99, 31.65, 25.32, 25.32, 31.65, 18.99, 31.65, 12.66, 37.97, 6.33, 44.3, 0, 44.3, 0, 37.97, 6.33, 31.65, 6.33, 25.32, 6.33, 25.32, 12.66, 12.66, 25.32, 6.33, 31.65, 0], [6.33, 31.65, 0, 31.65, 0, 25.32, 18.99, 18.99, 25.32, 12.66, 31.65, 6.33, 44.3, 0, 37.97, 6.33, 37.97, 18.99, 31.65, 25.32, 18.99, 31.65, 12.66, 31.65, 6.33, 31.65], [44.3, 18.99, 44.3, 25.32, 44.3, 31.65, 37.97, 31.65, 18.99, 25.32, 12.66, 18.99, 6.33, 6.33, 0, 0, 12.66, 6.33, 25.32, 6.33, 37.97, 12.66, 44.3, 18.99], [18.99, 0, 18.99, 6.33, 25.32, 12.66, 18.99, 25.32, 6.33, 31.65, 6.33, 37.97, 0, 37.97, 0, 31.65, 0, 18.99, 6.33, 12.66, 12.66, 6.33, 18.99, 0], [18.99, 6.33, 12.66, 6.33, 6.33, 6.33, 0, 0, 6.33, 0, 12.66, 0, 18.99, 0, 18.99, 6.33], [6.33, 6.33, 0, 0, 6.33, 0, 12.66, 0, 25.32, 0, 31.65, 6.33, 25.32, 6.33, 18.99, 12.66, 6.33, 12.66, 6.33, 6.33], [63.29, 12.66, 63.29, 18.99, 56.96, 18.99, 50.63, 18.99, 44.3, 18.99, 37.97, 12.66, 25.32, 18.99, 12.66, 18.99, 0, 12.66, 0, 6.33, 6.33, 12.66, 18.99, 12.66, 37.97, 0, 50.63, 0, 56.96, 0, 63.29, 6.33, 63.29, 12.66], [69.62, 6.33, 63.29, 12.66, 50.63, 18.99, 25.32, 18.99, 18.99, 12.66, 0, 6.33, 12.66, 6.33, 12.66, 6.33, 25.32, 12.66, 37.97, 6.33, 44.3, 6.33, 50.63, 0, 56.96, 0, 63.29, 0, 69.62, 0, 75.95, 0, 75.95, 6.33, 69.62, 6.33], [0, 6.33, 6.33, 6.33, 12.66, 6.33, 25.32, 6.33, 31.65, 6.33, 37.97, 0, 50.63, 6.33, 56.96, 6.33, 63.29, 12.66, 56.96, 12.66, 50.63, 12.66, 44.3, 12.66, 37.97, 18.99, 31.65, 18.99, 18.99, 25.32, 6.33, 12.66, 0, 6.33], [25.32, 0, 31.65, 0, 31.65, 6.33, 31.65, 12.66, 25.32, 18.99, 12.66, 18.99, 6.33, 31.65, 6.33, 37.97, 0, 50.63, 0, 50.63, 0, 44.3, 0, 25.32, 0, 12.66, 6.33, 6.33, 12.66, 0, 25.32, 0], [25.32, 0, 31.65, 12.66, 25.32, 31.65, 18.99, 37.97, 12.66, 44.3, 6.33, 50.63, 0, 56.96, 0, 50.63, 6.33, 37.97, 12.66, 31.65, 12.66, 25.32, 12.66, 12.66, 12.66, 6.33, 18.99, 0, 25.32, 0], [0, 37.97, 6.33, 18.99, 6.33, 6.33, 12.66, 6.33, 18.99, 6.33, 25.32, 0, 25.32, 6.33, 25.32, 12.66, 25.32, 18.99, 18.99, 31.65, 0, 37.97], [132.91, 0, 164.56, 0, 170.89, 6.33, 196.2, 18.99, 215.19, 44.3, 215.19, 69.62, 208.86, 88.61, 170.89, 113.92, 88.61, 113.92, 50.63, 113.92, 12.66, 82.28, 0, 50.63, 0, 31.65, 18.99, 12.66, 31.65, 6.33, 75.95, 6.33, 82.28, 6.33, 88.61, 12.66, 88.61, 25.32, 75.95, 31.65, 82.28, 31.65, 88.61, 37.97, 120.25, 37.97, 126.58, 31.65, 113.92, 18.99, 126.58, 6.33, 132.91, 0], [12.66, 0, 227.85, 0, 227.85, 18.99, 37.97, 25.32, 31.65, 18.99, 0, 18.99, 6.33, 6.33, 12.66, 0], [158.23, 25.32, 221.52, 25.32, 221.52, 18.99, 202.53, 0, 0, 0, 0, 25.32, 158.23, 25.32], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 6.33, 50.63, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 101.27, 0, 101.27, 0, 82.28, 6.33, 75.95, 12.66, 69.62, 12.66, 63.29, 12.66, 44.3, 12.66, 37.97, 12.66, 31.65, 6.33, 31.65, 6.33, 37.97, 0, 31.65, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [6.33, 0, 25.32, 0, 25.32, 50.63, 0, 50.63, 6.33, 37.97, 6.33, 31.65, 6.33, 18.99, 6.33, 12.66, 6.33, 6.33, 6.33, 0], [12.66, 6.33, 18.99, 12.66, 25.32, 25.32, 31.65, 37.97, 37.97, 44.3, 37.97, 44.3, 37.97, 37.97, 37.97, 31.65, 31.65, 12.66, 31.65, 0, 31.65, 0, 31.65, 0, 31.65, 0, 44.3, 0, 44.3, 50.63, 25.32, 50.63, 18.99, 44.3, 12.66, 37.97, 6.33, 31.65, 0, 25.32, 0, 18.99, 6.33, 18.99, 12.66, 18.99, 12.66, 12.66, 12.66, 6.33], [0, 0, 6.33, 0, 12.66, 6.33, 18.99, 12.66, 25.32, 18.99, 31.65, 25.32, 37.97, 37.97, 37.97, 44.3, 37.97, 50.63, 0, 50.63, 0, 0], [0, 0, 25.32, 0, 25.32, 50.63, 6.33, 50.63, 6.33, 12.66, 0, 0], [0, 0, 18.99, 6.33, 25.32, 12.66, 18.99, 12.66, 12.66, 12.66, 6.33, 12.66, 6.33, 6.33, 0, 0], [0, 18.99, 0, 12.66, 12.66, 6.33, 31.65, 6.33, 37.97, 6.33, 50.63, 18.99, 50.63, 12.66, 50.63, 6.33, 50.63, 0, 63.29, 0, 63.29, 50.63, 37.97, 50.63, 25.32, 37.97, 18.99, 31.65, 6.33, 25.32, 0, 18.99], [0, 18.99, 18.99, 6.33, 31.65, 0, 31.65, 6.33, 37.97, 6.33, 44.3, 6.33, 50.63, 6.33, 56.96, 6.33, 63.29, 6.33, 63.29, 18.99, 44.3, 18.99, 31.65, 12.66, 25.32, 12.66, 18.99, 12.66, 6.33, 18.99, 0, 18.99], [0, 0, 31.65, 0, 25.32, 12.66, 25.32, 25.32, 12.66, 31.65, 6.33, 37.97, 0, 37.97, 0, 0], [0, 0, 63.29, 0, 63.29, 31.65, 50.63, 37.97, 44.3, 37.97, 37.97, 44.3, 31.65, 50.63, 0, 50.63, 0, 0], [12.66, 50.63, 25.32, 44.3, 18.99, 44.3, 12.66, 37.97, 18.99, 31.65, 25.32, 31.65, 31.65, 25.32, 31.65, 12.66, 44.3, 6.33, 31.65, 6.33, 25.32, 6.33, 18.99, 12.66, 12.66, 18.99, 0, 25.32, 6.33, 18.99, 6.33, 12.66, 0, 6.33, 0, 0, 56.96, 0, 56.96, 50.63, 12.66, 50.63], [6.33, 0, 63.29, 0, 63.29, 37.97, 50.63, 50.63, 18.99, 50.63, 18.99, 44.3, 12.66, 31.65, 6.33, 18.99, 0, 0, 6.33, 0], [0, 6.33, 0, 0, 6.33, 12.66, 6.33, 18.99, 12.66, 25.32, 12.66, 31.65, 6.33, 31.65, 0, 18.99, 0, 6.33], [6.33, 0, 31.65, 0, 6.33, 25.32, 0, 25.32, 0, 0, 6.33, 0], [0, 0, 25.32, 0, 31.65, 12.66, 31.65, 18.99, 31.65, 25.32, 25.32, 37.97, 18.99, 31.65, 12.66, 25.32, 6.33, 12.66, 0, 6.33, 0, 0], [0, 0, 12.66, 0, 25.32, 12.66, 18.99, 12.66, 6.33, 6.33, 0, 6.33, 0, 0], [0, 0, 6.33, 0, 18.99, 6.33, 25.32, 12.66, 31.65, 18.99, 18.99, 18.99, 12.66, 18.99, 0, 31.65, 0, 0], [0, 0, 12.66, 12.66, 0, 12.66, 0, 0], [0, 0, 18.99, 0, 31.65, 18.99, 37.97, 25.32, 44.3, 31.65, 50.63, 50.63, 44.3, 50.63, 25.32, 50.63, 18.99, 44.3, 12.66, 37.97, 6.33, 31.65, 0, 25.32, 0, 0], [0, 0, 63.29, 0, 63.29, 6.33, 56.96, 12.66, 50.63, 18.99, 50.63, 25.32, 50.63, 31.65, 44.3, 25.32, 37.97, 18.99, 31.65, 18.99, 25.32, 18.99, 18.99, 18.99, 12.66, 12.66, 6.33, 12.66, 6.33, 6.33, 0, 0], [0, 0, 6.33, 6.33, 12.66, 12.66, 12.66, 18.99, 18.99, 25.32, 25.32, 31.65, 12.66, 31.65, 12.66, 44.3, 0, 44.3, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [31.65, 0, 37.97, 0, 37.97, 18.99, 31.65, 18.99, 6.33, 6.33, 0, 0, 31.65, 0], [0, 25.32, 0, 18.99, 12.66, 18.99, 18.99, 12.66, 25.32, 6.33, 31.65, 6.33, 31.65, 6.33, 37.97, 0, 56.96, 6.33, 63.29, 6.33, 63.29, 18.99, 56.96, 25.32, 0, 25.32], [0, 0, 63.29, 0, 63.29, 6.33, 56.96, 6.33, 50.63, 6.33, 37.97, 12.66, 31.65, 12.66, 25.32, 18.99, 12.66, 31.65, 0, 31.65, 0, 0], [12.66, 37.97, 6.33, 37.97, 6.33, 31.65, 0, 25.32, 0, 18.99, 0, 12.66, 6.33, 6.33, 31.65, 0, 31.65, 31.65, 25.32, 37.97, 12.66, 37.97], [6.33, 31.65, 6.33, 37.97, 6.33, 37.97, 6.33, 44.3, 12.66, 37.97, 31.65, 18.99, 37.97, 6.33, 37.97, 0, 56.96, 0, 56.96, 6.33, 50.63, 12.66, 50.63, 18.99, 50.63, 25.32, 50.63, 31.65, 56.96, 37.97, 63.29, 44.3, 63.29, 50.63, 0, 50.63, 0, 31.65, 6.33, 31.65], [18.99, 0, 25.32, 0, 25.32, 6.33, 25.32, 12.66, 31.65, 18.99, 18.99, 25.32, 12.66, 31.65, 6.33, 37.97, 0, 37.97, 0, 25.32, 0, 18.99, 0, 6.33, 12.66, 0, 18.99, 0], [63.29, 0, 63.29, 44.3, 63.29, 50.63, 0, 50.63, 0, 0, 63.29, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [63.29, 6.33, 63.29, 50.63, 0, 50.63, 0, 0, 63.29, 0, 63.29, 6.33], [0, 0, 50.63, 0, 50.63, 18.99, 44.3, 37.97, 50.63, 37.97, 56.96, 31.65, 63.29, 37.97, 63.29, 50.63, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 31.65, 50.63, 37.97, 50.63, 44.3, 50.63, 50.63, 0, 50.63, 0, 0], [189.87, 0, 189.87, 25.32, 37.97, 25.32, 31.65, 18.99, 25.32, 12.66, 12.66, 6.33, 0, 0, 189.87, 0], [0, 0, 177.22, 0, 164.56, 6.33, 158.23, 12.66, 151.9, 18.99, 145.57, 25.32, 0, 25.32, 0, 0], [158.23, 0, 164.56, 6.33, 170.89, 12.66, 177.22, 18.99, 183.54, 25.32, 25.32, 25.32, 0, 0, 158.23, 0], [0, 25.32, 12.66, 18.99, 18.99, 12.66, 25.32, 6.33, 31.65, 0, 177.22, 0, 177.22, 25.32, 0, 25.32], [6.33, 25.32, 6.33, 12.66, 0, 0, 151.9, 0, 151.9, 25.32, 6.33, 25.32], [0, 0, 145.57, 0, 145.57, 25.32, 0, 25.32, 0, 18.99, 0, 0], [145.57, 25.32, 0, 25.32, 0, 0, 145.57, 0, 145.57, 6.33, 145.57, 18.99, 145.57, 25.32], [0, 0, 145.57, 0, 158.23, 25.32, 0, 25.32, 0, 18.99, 0, 0]], [[31.65, 0, 63.29, 75.95, 50.63, 82.28, 12.66, 82.28, 0, 75.95, 31.65, 0], [12.66, 0, 18.99, 0, 25.32, 6.33, 25.32, 37.97, 12.66, 37.97, 0, 37.97, 0, 31.65, 0, 18.99, 0, 12.66, 0, 6.33, 6.33, 0, 12.66, 0], [0, 0, 12.66, 6.33, 18.99, 6.33, 25.32, 6.33, 37.97, 6.33, 56.96, 6.33, 63.29, 0, 63.29, 50.63, 44.3, 50.63, 44.3, 44.3, 44.3, 31.65, 37.97, 25.32, 31.65, 25.32, 25.32, 25.32, 18.99, 31.65, 18.99, 37.97, 18.99, 50.63, 0, 50.63, 0, 0], [0, 0, 18.99, 0, 18.99, 12.66, 25.32, 12.66, 31.65, 12.66, 37.97, 12.66, 44.3, 12.66, 44.3, 0, 63.29, 0, 63.29, 101.27, 56.96, 107.59, 50.63, 113.92, 12.66, 113.92, 0, 101.27, 0, 0], [0, 75.95, 31.65, 0, 63.29, 75.95, 50.63, 82.28, 18.99, 82.28, 0, 75.95], [12.66, 0, 18.99, 0, 25.32, 6.33, 25.32, 37.97, 0, 37.97, 0, 25.32, 0, 18.99, 0, 12.66, 0, 6.33, 6.33, 0, 12.66, 0], [0, 0, 12.66, 6.33, 25.32, 6.33, 50.63, 6.33, 63.29, 0, 63.29, 50.63, 44.3, 50.63, 44.3, 31.65, 37.97, 25.32, 25.32, 25.32, 18.99, 31.65, 18.99, 37.97, 18.99, 44.3, 18.99, 50.63, 0, 50.63, 0, 0], [0, 0, 18.99, 0, 18.99, 12.66, 44.3, 12.66, 44.3, 0, 63.29, 0, 63.29, 101.27, 50.63, 113.92, 44.3, 113.92, 12.66, 113.92, 0, 101.27, 0, 0], [0, 0, 18.99, 0, 18.99, 18.99, 31.65, 18.99, 31.65, 0, 50.63, 0, 50.63, 18.99, 63.29, 18.99, 63.29, 0, 82.28, 0, 82.28, 18.99, 94.94, 18.99, 94.94, 0, 107.59, 0, 107.59, 18.99, 126.58, 18.99, 126.58, 0, 145.57, 0, 145.57, 18.99, 158.23, 18.99, 158.23, 0, 170.89, 0, 170.89, 18.99, 189.87, 18.99, 189.87, 44.3, 0, 44.3, 0, 0], [25.32, 0, 25.32, 50.63, 0, 50.63, 0, 12.66, 12.66, 0, 25.32, 0], [0, 0, 12.66, 0, 25.32, 12.66, 25.32, 50.63, 0, 50.63, 0, 0], [0, 0, 189.87, 0, 189.87, 75.95, 120.25, 75.95, 120.25, 37.97, 107.59, 25.32, 82.28, 25.32, 69.62, 37.97, 69.62, 75.95, 0, 75.95, 0, 0], [6.33, 0, 18.99, 0, 12.66, 12.66, 0, 12.66, 6.33, 0], [6.33, 0, 18.99, 0, 18.99, 12.66, 0, 12.66, 6.33, 0], [0, 0, 18.99, 0, 25.32, 12.66, 0, 12.66, 0, 0], [0, 0, 12.66, 0, 18.99, 12.66, 6.33, 12.66, 0, 0], [12.66, 0, 31.65, 0, 18.99, 12.66, 0, 12.66, 12.66, 0], [25.32, 0, 18.99, 12.66, 0, 12.66, 12.66, 0, 25.32, 0], [0, 12.66, 6.33, 0, 18.99, 0, 18.99, 12.66, 0, 12.66], [12.66, 0, 18.99, 12.66, 0, 12.66, 0, 0, 12.66, 0], [12.66, 0, 25.32, 12.66, 6.33, 12.66, 0, 0, 12.66, 0], [0, 18.99, 63.29, 18.99, 75.95, 31.65, 113.92, 31.65, 126.58, 18.99, 126.58, 0, 170.89, 0, 189.87, 18.99, 189.87, 69.62, 18.99, 69.62, 18.99, 44.3, 0, 18.99], [0, 0, 94.94, 0, 94.94, 25.32, 0, 25.32, 0, 0], [126.58, 25.32, 196.2, 25.32, 177.22, 50.63, 0, 50.63, 50.63, 0, 63.29, 0, 63.29, 25.32, 75.95, 37.97, 113.92, 37.97, 126.58, 25.32], [0, 0, 101.27, 0, 101.27, 25.32, 0, 25.32, 0, 0], [31.65, 0, 107.59, 0, 107.59, 25.32, 0, 25.32, 31.65, 0], [0, 0, 63.29, 0, 63.29, 50.63, 44.3, 31.65, 0, 31.65, 0, 0], [0, 0, 63.29, 0, 63.29, 25.32, 0, 25.32, 0, 0], [0, 0, 126.58, 0, 126.58, 75.95, 0, 75.95, 0, 0], [0, 75.95, 0, 0, 113.92, 0, 31.65, 75.95, 6.33, 75.95, 0, 75.95], [63.29, 0, 63.29, 25.32, 0, 25.32, 0, 0, 63.29, 0], [0, 0, 189.87, 0, 189.87, 50.63, 170.89, 50.63, 170.89, 31.65, 158.23, 31.65, 158.23, 50.63, 145.57, 50.63, 145.57, 31.65, 126.58, 31.65, 126.58, 50.63, 107.59, 50.63, 107.59, 31.65, 94.94, 31.65, 94.94, 50.63, 82.28, 50.63, 82.28, 31.65, 63.29, 31.65, 63.29, 50.63, 50.63, 50.63, 50.63, 31.65, 31.65, 31.65, 31.65, 50.63, 18.99, 50.63, 18.99, 31.65, 0, 31.65, 0, 0], [0, 0, 63.29, 0, 50.63, 50.63, 0, 50.63, 0, 0], [12.66, 50.63, 0, 50.63, 12.66, 0, 12.66, 50.63], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [0, 0, 145.57, 0, 126.58, 50.63, 0, 50.63, 0, 0], [0, 0, 164.56, 0, 145.57, 50.63, 0, 50.63, 0, 0], [6.33, 0, 253.16, 0, 253.16, 25.32, 221.52, 101.27, 31.65, 101.27, 0, 25.32, 6.33, 0], [0, 0, 94.94, 0, 94.94, 101.27, 31.65, 101.27, 0, 25.32, 0, 0], [0, 18.99, 0, 0, 18.99, 12.66, 31.65, 0, 31.65, 31.65, 25.32, 31.65, 25.32, 18.99, 18.99, 25.32, 6.33, 12.66, 6.33, 31.65, 0, 31.65, 0, 18.99], [0, 0, 6.33, 0, 6.33, 25.32, 18.99, 25.32, 18.99, 31.65, 0, 31.65, 0, 0]], [[107.59, 227.85, 113.92, 234.18, 120.25, 234.18, 132.91, 227.85, 139.24, 227.85, 132.91, 234.18, 126.58, 234.18, 113.92, 240.51, 101.27, 227.85, 94.94, 227.85, 88.61, 227.85, 82.28, 234.18, 75.95, 234.18, 63.29, 227.85, 56.96, 227.85, 56.96, 234.18, 44.3, 227.85, 37.97, 227.85, 37.97, 221.52, 31.65, 221.52, 25.32, 221.52, 18.99, 227.85, 6.33, 221.52, 0, 208.86, 12.66, 202.53, 25.32, 177.22, 31.65, 164.56, 31.65, 158.23, 31.65, 139.24, 25.32, 132.91, 25.32, 126.58, 25.32, 120.25, 31.65, 113.92, 37.97, 107.59, 37.97, 101.27, 31.65, 88.61, 37.97, 56.96, 31.65, 50.63, 31.65, 44.3, 25.32, 37.97, 18.99, 37.97, 12.66, 37.97, 6.33, 37.97, 0, 31.65, 0, 18.99, 0, 6.33, 0, 0, 6.33, 12.66, 6.33, 25.32, 12.66, 31.65, 18.99, 31.65, 18.99, 25.32, 31.65, 12.66, 44.3, 6.33, 50.63, 6.33, 56.96, 6.33, 50.63, 12.66, 37.97, 12.66, 31.65, 18.99, 25.32, 25.32, 31.65, 31.65, 44.3, 31.65, 50.63, 37.97, 50.63, 50.63, 44.3, 56.96, 44.3, 69.62, 44.3, 88.61, 63.29, 101.27, 63.29, 120.25, 56.96, 126.58, 50.63, 139.24, 50.63, 151.9, 56.96, 151.9, 63.29, 145.57, 63.29, 139.24, 69.62, 132.91, 82.28, 126.58, 88.61, 126.58, 94.94, 120.25, 101.27, 120.25, 113.92, 113.92, 113.92, 107.59, 113.92, 101.27, 120.25, 101.27, 120.25, 107.59, 120.25, 113.92, 113.92, 120.25, 107.59, 126.58, 101.27, 126.58, 94.94, 132.91, 88.61, 132.91, 82.28, 132.91, 75.95, 139.24, 69.62, 158.23, 69.62, 164.56, 56.96, 170.89, 50.63, 177.22, 50.63, 183.54, 50.63, 189.87, 50.63, 189.87, 44.3, 196.2, 44.3, 202.53, 50.63, 208.86, 56.96, 215.19, 63.29, 215.19, 82.28, 221.52, 88.61, 221.52, 94.94, 215.19, 107.59, 221.52, 107.59, 227.85], [25.32, 37.97, 31.65, 37.97, 31.65, 31.65, 31.65, 25.32, 37.97, 31.65, 44.3, 37.97, 50.63, 37.97, 56.96, 37.97, 56.96, 31.65, 63.29, 25.32, 63.29, 18.99, 56.96, 6.33, 50.63, 6.33, 44.3, 0, 31.65, 0, 25.32, 6.33, 18.99, 6.33, 12.66, 12.66, 6.33, 12.66, 0, 18.99, 0, 25.32, 0, 31.65, 12.66, 37.97, 25.32, 37.97], [0, 18.99, 0, 25.32, 6.33, 25.32, 12.66, 25.32, 18.99, 25.32, 12.66, 31.65, 6.33, 37.97, 18.99, 44.3, 25.32, 44.3, 25.32, 44.3, 44.3, 37.97, 50.63, 37.97, 56.96, 31.65, 63.29, 25.32, 63.29, 18.99, 56.96, 12.66, 44.3, 12.66, 37.97, 6.33, 31.65, 0, 18.99, 0, 12.66, 6.33, 6.33, 6.33, 0, 12.66, 0, 18.99], [18.99, 44.3, 12.66, 44.3, 6.33, 37.97, 6.33, 31.65, 0, 31.65, 0, 18.99, 6.33, 12.66, 12.66, 6.33, 18.99, 6.33, 31.65, 12.66, 37.97, 6.33, 44.3, 0, 50.63, 0, 50.63, 0, 63.29, 6.33, 63.29, 18.99, 75.95, 18.99, 82.28, 25.32, 82.28, 31.65, 75.95, 37.97, 63.29, 37.97, 56.96, 50.63, 50.63, 50.63, 44.3, 50.63, 37.97, 50.63, 37.97, 44.3, 37.97, 37.97, 37.97, 31.65, 31.65, 31.65, 31.65, 37.97, 31.65, 44.3, 25.32, 44.3, 18.99, 44.3], [101.27, 0, 107.59, 0, 107.59, 6.33, 101.27, 6.33, 94.94, 6.33, 94.94, 12.66, 88.61, 18.99, 69.62, 18.99, 63.29, 18.99, 50.63, 18.99, 37.97, 12.66, 31.65, 12.66, 25.32, 18.99, 18.99, 25.32, 12.66, 25.32, 6.33, 31.65, 0, 31.65, 0, 25.32, 6.33, 25.32, 18.99, 18.99, 25.32, 12.66, 31.65, 6.33, 44.3, 6.33, 50.63, 12.66, 63.29, 12.66, 82.28, 6.33, 94.94, 0, 101.27, 0], [0, 12.66, 25.32, 12.66, 18.99, 18.99, 12.66, 18.99, 12.66, 25.32, 18.99, 25.32, 31.65, 18.99, 37.97, 12.66, 44.3, 6.33, 50.63, 6.33, 63.29, 12.66, 101.27, 12.66, 107.59, 6.33, 107.59, 0, 113.92, 0, 120.25, 0, 126.58, 6.33, 139.24, 12.66, 145.57, 6.33, 151.9, 6.33, 158.23, 6.33, 158.23, 12.66, 170.89, 18.99, 177.22, 18.99, 183.54, 12.66, 196.2, 18.99, 202.53, 18.99, 208.86, 12.66, 215.19, 12.66, 221.52, 12.66, 227.85, 18.99, 227.85, 25.32, 234.18, 25.32, 240.51, 25.32, 246.84, 25.32, 253.16, 18.99, 259.49, 12.66, 265.82, 12.66, 278.48, 12.66, 284.81, 12.66, 284.81, 37.97, 0, 37.97, 0, 12.66], [0, 0, 145.57, 0, 139.24, 12.66, 132.91, 25.32, 126.58, 25.32, 120.25, 31.65, 113.92, 31.65, 107.59, 31.65, 88.61, 37.97, 75.95, 44.3, 69.62, 44.3, 63.29, 44.3, 56.96, 37.97, 50.63, 37.97, 44.3, 37.97, 37.97, 44.3, 31.65, 50.63, 25.32, 50.63, 0, 50.63, 0, 0], [120.25, 0, 120.25, 50.63, 94.94, 50.63, 88.61, 50.63, 82.28, 50.63, 75.95, 56.96, 69.62, 56.96, 63.29, 50.63, 63.29, 44.3, 56.96, 37.97, 50.63, 37.97, 44.3, 44.3, 37.97, 44.3, 25.32, 37.97, 18.99, 37.97, 12.66, 37.97, 6.33, 31.65, 0, 25.32, 0, 18.99, 6.33, 12.66, 6.33, 6.33, 6.33, 0, 120.25, 0], [0, 75.95, 0, 0, 31.65, 31.65, 37.97, 44.3, 50.63, 50.63, 56.96, 50.63, 63.29, 75.95, 0, 75.95], [88.61, 0, 94.94, 25.32, 113.92, 56.96, 0, 56.96, 6.33, 50.63, 18.99, 44.3, 18.99, 37.97, 25.32, 31.65, 25.32, 25.32, 25.32, 18.99, 37.97, 12.66, 44.3, 12.66, 50.63, 6.33, 56.96, 6.33, 63.29, 6.33, 63.29, 0, 69.62, 0, 75.95, 0, 88.61, 0], [0, 0, 18.99, 0, 18.99, 12.66, 25.32, 12.66, 25.32, 18.99, 25.32, 25.32, 25.32, 31.65, 25.32, 37.97, 18.99, 50.63, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [0, 0, 151.9, 0, 151.9, 6.33, 151.9, 12.66, 151.9, 18.99, 158.23, 25.32, 158.23, 31.65, 151.9, 37.97, 145.57, 44.3, 145.57, 50.63, 0, 50.63, 0, 0], [6.33, 0, 50.63, 0, 44.3, 6.33, 37.97, 12.66, 37.97, 18.99, 37.97, 25.32, 44.3, 25.32, 44.3, 31.65, 50.63, 37.97, 63.29, 37.97, 56.96, 44.3, 50.63, 44.3, 44.3, 50.63, 37.97, 50.63, 25.32, 56.96, 18.99, 63.29, 18.99, 69.62, 12.66, 75.95, 6.33, 75.95, 6.33, 69.62, 6.33, 63.29, 12.66, 50.63, 18.99, 44.3, 18.99, 25.32, 0, 12.66, 0, 6.33, 0, 0, 6.33, 0], [120.25, 0, 120.25, 94.94, 113.92, 94.94, 107.59, 101.27, 101.27, 107.59, 88.61, 101.27, 31.65, 101.27, 31.65, 82.28, 37.97, 75.95, 37.97, 63.29, 31.65, 56.96, 18.99, 56.96, 18.99, 50.63, 25.32, 44.3, 31.65, 44.3, 44.3, 50.63, 50.63, 50.63, 63.29, 50.63, 75.95, 44.3, 82.28, 37.97, 88.61, 31.65, 88.61, 25.32, 75.95, 18.99, 69.62, 18.99, 63.29, 12.66, 56.96, 6.33, 50.63, 6.33, 44.3, 6.33, 37.97, 12.66, 31.65, 12.66, 25.32, 18.99, 25.32, 25.32, 25.32, 31.65, 18.99, 31.65, 18.99, 25.32, 18.99, 18.99, 18.99, 12.66, 12.66, 6.33, 6.33, 6.33, 0, 0, 120.25, 0], [0, 12.66, 0, 0, 6.33, 0, 12.66, 0, 18.99, 0, 25.32, 6.33, 25.32, 12.66, 31.65, 18.99, 25.32, 25.32, 25.32, 31.65, 25.32, 37.97, 0, 37.97, 0, 12.66], [0, 18.99, 0, 12.66, 0, 6.33, 0, 0, 6.33, 6.33, 18.99, 6.33, 25.32, 6.33, 18.99, 12.66, 12.66, 18.99, 12.66, 25.32, 6.33, 25.32, 0, 18.99], [0, 0, 56.96, 0, 44.3, 6.33, 37.97, 12.66, 31.65, 12.66, 25.32, 18.99, 25.32, 25.32, 25.32, 31.65, 37.97, 37.97, 44.3, 37.97, 50.63, 37.97, 56.96, 37.97, 56.96, 44.3, 56.96, 50.63, 56.96, 56.96, 63.29, 63.29, 63.29, 101.27, 0, 101.27, 0, 0], [0, 0, 63.29, 0, 63.29, 101.27, 0, 101.27, 0, 0], [0, 0, 126.58, 0, 126.58, 50.63, 189.87, 50.63, 189.87, 101.27, 0, 101.27, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [0, 0, 56.96, 6.33, 63.29, 6.33, 63.29, 107.59, 0, 107.59, 0, 0], [63.29, 0, 63.29, 101.27, 12.66, 101.27, 0, 94.94, 0, 0, 63.29, 0], [120.25, 50.63, 6.33, 50.63, 0, 44.3, 6.33, 37.97, 6.33, 31.65, 12.66, 31.65, 18.99, 31.65, 25.32, 31.65, 31.65, 25.32, 25.32, 18.99, 18.99, 12.66, 12.66, 12.66, 6.33, 12.66, 6.33, 6.33, 6.33, 0, 120.25, 0, 120.25, 50.63], [25.32, 0, 56.96, 0, 75.95, 12.66, 88.61, 31.65, 88.61, 44.3, 82.28, 63.29, 69.62, 75.95, 50.63, 82.28, 25.32, 82.28, 6.33, 69.62, 0, 56.96, 0, 50.63, 0, 37.97, 0, 25.32, 6.33, 12.66, 12.66, 6.33, 18.99, 0, 25.32, 0], [18.99, 0, 6.33, 12.66, 0, 6.33, 18.99, 0], [0, 12.66, 44.3, 0, 6.33, 18.99, 0, 12.66], [0, 0, 63.29, 6.33, 0, 12.66, 0, 0], [6.33, 0, 69.62, 25.32, 0, 12.66, 6.33, 0], [6.33, 0, 75.95, 69.62, 0, 6.33, 6.33, 0], [12.66, 0, 44.3, 94.94, 0, 0, 12.66, 0], [12.66, 0, 6.33, 120.25, 0, 0, 6.33, 6.33, 12.66, 0], [44.3, 6.33, 0, 126.58, 31.65, 0, 44.3, 6.33], [44.3, 12.66, 0, 63.29, 37.97, 0, 44.3, 12.66], [94.94, 12.66, 0, 56.96, 94.94, 0, 94.94, 12.66], [94.94, 12.66, 0, 6.33, 101.27, 0, 101.27, 12.66, 94.94, 12.66], [44.3, 18.99, 0, 0, 50.63, 12.66, 44.3, 18.99], [6.33, 0, 18.99, 6.33, 12.66, 12.66, 0, 0, 6.33, 0]], [[0, 0, 253.16, 0, 253.16, 303.8, 234.18, 303.8, 234.18, 25.32, 234.18, 18.99, 18.99, 18.99, 18.99, 303.8, 0, 303.8, 0, 0], [0, 0, 215.19, 0, 215.19, 18.99, 0, 18.99, 0, 0], [0, 0, 215.19, 0, 215.19, 18.99, 0, 18.99, 0, 0], [0, 6.33, 0, 0, 18.99, 0, 18.99, 69.62, 0, 69.62, 0, 6.33], [0, 0, 25.32, 0, 25.32, 82.28, 0, 82.28, 0, 0], [12.66, 50.63, 6.33, 44.3, 0, 31.65, 0, 25.32, 0, 12.66, 6.33, 0, 18.99, 6.33, 25.32, 6.33, 37.97, 6.33, 56.96, 6.33, 69.62, 0, 75.95, 6.33, 75.95, 12.66, 75.95, 12.66, 82.28, 12.66, 82.28, 18.99, 82.28, 31.65, 75.95, 44.3, 69.62, 50.63, 50.63, 56.96, 31.65, 56.96, 12.66, 50.63], [0, 6.33, 0, 12.66, 6.33, 12.66, 6.33, 6.33, 12.66, 6.33, 18.99, 12.66, 18.99, 18.99, 18.99, 25.32, 12.66, 31.65, 6.33, 31.65, 6.33, 37.97, 12.66, 37.97, 18.99, 37.97, 18.99, 37.97, 25.32, 25.32, 25.32, 12.66, 18.99, 6.33, 12.66, 0, 6.33, 0, 0, 6.33], [0, 12.66, 0, 6.33, 0, 0, 6.33, 0, 12.66, 6.33, 18.99, 6.33, 25.32, 6.33, 25.32, 12.66, 25.32, 18.99, 31.65, 18.99, 31.65, 25.32, 25.32, 25.32, 18.99, 18.99, 12.66, 18.99, 6.33, 18.99, 0, 12.66], [37.97, 37.97, 31.65, 44.3, 25.32, 44.3, 18.99, 44.3, 12.66, 44.3, 6.33, 44.3, 0, 37.97, 0, 31.65, 6.33, 25.32, 12.66, 25.32, 18.99, 25.32, 18.99, 18.99, 12.66, 18.99, 12.66, 12.66, 12.66, 6.33, 18.99, 0, 25.32, 0, 31.65, 0, 31.65, 6.33, 37.97, 6.33, 37.97, 6.33, 37.97, 6.33, 37.97, 12.66, 31.65, 25.32, 37.97, 25.32, 44.3, 31.65, 50.63, 37.97, 44.3, 37.97, 37.97, 37.97], [44.3, 50.63, 37.97, 56.96, 44.3, 63.29, 37.97, 63.29, 44.3, 69.62, 37.97, 69.62, 37.97, 75.95, 37.97, 82.28, 25.32, 88.61, 12.66, 88.61, 6.33, 88.61, 0, 82.28, 6.33, 75.95, 6.33, 82.28, 12.66, 82.28, 18.99, 82.28, 18.99, 82.28, 18.99, 75.95, 25.32, 75.95, 25.32, 75.95, 31.65, 69.62, 25.32, 69.62, 18.99, 63.29, 12.66, 63.29, 12.66, 56.96, 18.99, 56.96, 18.99, 50.63, 25.32, 50.63, 25.32, 44.3, 31.65, 44.3, 31.65, 37.97, 37.97, 37.97, 37.97, 31.65, 31.65, 25.32, 31.65, 18.99, 37.97, 12.66, 37.97, 12.66, 37.97, 12.66, 44.3, 18.99, 50.63, 18.99, 50.63, 25.32, 56.96, 25.32, 63.29, 18.99, 56.96, 12.66, 56.96, 6.33, 63.29, 6.33, 69.62, 0, 82.28, 0, 82.28, 6.33, 75.95, 12.66, 82.28, 18.99, 82.28, 25.32, 82.28, 31.65, 88.61, 31.65, 88.61, 37.97, 82.28, 37.97, 75.95, 37.97, 69.62, 37.97, 69.62, 44.3, 69.62, 50.63, 69.62, 56.96, 63.29, 56.96, 56.96, 50.63, 50.63, 50.63, 44.3, 50.63], [0, 0, 6.33, 0, 12.66, 6.33, 12.66, 12.66, 6.33, 12.66, 6.33, 6.33, 0, 6.33, 0, 0], [12.66, 6.33, 18.99, 0, 18.99, 6.33, 12.66, 12.66, 6.33, 12.66, 0, 12.66, 0, 6.33, 6.33, 6.33, 12.66, 6.33], [12.66, 0, 18.99, 6.33, 18.99, 12.66, 12.66, 12.66, 12.66, 18.99, 12.66, 25.32, 6.33, 18.99, 0, 18.99, 6.33, 12.66, 6.33, 6.33, 12.66, 0], [6.33, 18.99, 6.33, 12.66, 6.33, 6.33, 6.33, 6.33, 12.66, 0, 12.66, 6.33, 12.66, 12.66, 12.66, 18.99, 12.66, 25.32, 6.33, 31.65, 0, 25.32, 6.33, 18.99], [0, 0, 18.99, 0, 18.99, 18.99, 18.99, 25.32, 18.99, 25.32, 12.66, 25.32, 12.66, 18.99, 6.33, 18.99, 0, 18.99, 0, 0], [25.32, 0, 88.61, 0, 88.61, 12.66, 88.61, 18.99, 88.61, 25.32, 0, 25.32, 0, 18.99, 6.33, 12.66, 12.66, 12.66, 18.99, 12.66, 25.32, 6.33, 25.32, 0], [0, 0, 37.97, 0, 44.3, 6.33, 44.3, 12.66, 56.96, 12.66, 69.62, 12.66, 75.95, 12.66, 75.95, 18.99, 82.28, 25.32, 0, 25.32, 0, 0], [31.65, 0, 113.92, 0, 120.25, 0, 126.58, 0, 132.91, 0, 145.57, 6.33, 151.9, 6.33, 164.56, 6.33, 177.22, 6.33, 183.54, 6.33, 189.87, 0, 284.81, 0, 316.46, 25.32, 0, 25.32, 31.65, 0], [0, 0, 101.27, 0, 101.27, 69.62, 0, 69.62, 0, 0], [0, 0, 94.94, 0, 94.94, 69.62, 0, 69.62, 0, 0], [0, 0, 94.94, 0, 94.94, 82.28, 0, 82.28, 0, 0], [0, 0, 94.94, 0, 94.94, 82.28, 0, 82.28, 0, 0], [0, 0, 101.27, 0, 101.27, 94.94, 56.96, 94.94, 56.96, 82.28, 56.96, 75.95, 50.63, 69.62, 50.63, 63.29, 50.63, 56.96, 44.3, 56.96, 37.97, 56.96, 31.65, 50.63, 31.65, 44.3, 25.32, 37.97, 18.99, 37.97, 12.66, 37.97, 12.66, 31.65, 12.66, 25.32, 12.66, 18.99, 6.33, 25.32, 0, 25.32, 0, 0], [0, 0, 88.61, 0, 88.61, 18.99, 82.28, 25.32, 82.28, 31.65, 75.95, 31.65, 69.62, 31.65, 63.29, 31.65, 56.96, 37.97, 56.96, 44.3, 63.29, 50.63, 56.96, 56.96, 50.63, 63.29, 44.3, 69.62, 37.97, 75.95, 37.97, 82.28, 44.3, 82.28, 50.63, 88.61, 44.3, 94.94, 0, 94.94, 0, 0], [0, 50.63, 0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63], [0, 50.63, 0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63], [63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0, 63.29, 0], [0, 50.63, 0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63], [0, 50.63, 0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0, 63.29, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [0, 6.33, 0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 6.33], [0, 0, 63.29, 0, 63.29, 6.33, 63.29, 50.63, 0, 50.63, 0, 0], [63.29, 50.63, 0, 50.63, 0, 0, 63.29, 0, 63.29, 50.63], [63.29, 50.63, 0, 50.63, 0, 0, 63.29, 0, 63.29, 50.63], [31.65, 50.63, 0, 25.32, 0, 0, 63.29, 0, 63.29, 50.63, 31.65, 50.63], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [63.29, 50.63, 0, 50.63, 0, 0, 63.29, 0, 63.29, 50.63], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [56.96, 50.63, 63.29, 50.63, 63.29, 0, 0, 0, 0, 50.63, 56.96, 50.63], [0, 50.63, 0, 6.33, 0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63], [63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0, 63.29, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [0, 50.63, 0, 44.3, 0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 25.32, 31.65, 50.63, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0]], [[0, 0, 25.32, 12.66, 37.97, 6.33, 44.3, 18.99, 37.97, 31.65, 31.65, 37.97, 25.32, 44.3, 18.99, 44.3, 12.66, 37.97, 6.33, 31.65, 6.33, 18.99, 0, 12.66, 0, 0], [25.32, 0, 25.32, 12.66, 31.65, 18.99, 37.97, 18.99, 50.63, 25.32, 56.96, 31.65, 56.96, 50.63, 63.29, 63.29, 69.62, 69.62, 82.28, 88.61, 94.94, 107.59, 107.59, 113.92, 107.59, 120.25, 101.27, 126.58, 94.94, 126.58, 88.61, 120.25, 88.61, 113.92, 63.29, 88.61, 50.63, 82.28, 37.97, 56.96, 31.65, 88.61, 18.99, 107.59, 25.32, 126.58, 31.65, 151.9, 31.65, 164.56, 25.32, 196.2, 12.66, 240.51, 0, 246.84, 0, 202.53, 0, 170.89, 12.66, 139.24, 0, 69.62, 12.66, 82.28, 18.99, 82.28, 25.32, 75.95, 31.65, 69.62, 31.65, 56.96, 25.32, 37.97, 12.66, 25.32, 12.66, 18.99, 12.66, 12.66, 18.99, 6.33, 25.32, 0], [56.96, 101.27, 50.63, 101.27, 44.3, 113.92, 25.32, 151.9, 12.66, 170.89, 0, 164.56, 0, 158.23, 12.66, 113.92, 25.32, 75.95, 37.97, 56.96, 44.3, 50.63, 50.63, 37.97, 44.3, 31.65, 37.97, 6.33, 44.3, 12.66, 50.63, 12.66, 56.96, 12.66, 63.29, 0, 75.95, 69.62, 63.29, 101.27, 56.96, 101.27], [37.97, 0, 44.3, 0, 50.63, 6.33, 56.96, 12.66, 63.29, 31.65, 63.29, 44.3, 56.96, 50.63, 50.63, 56.96, 44.3, 56.96, 37.97, 50.63, 31.65, 44.3, 25.32, 50.63, 18.99, 56.96, 12.66, 56.96, 6.33, 50.63, 0, 44.3, 0, 37.97, 6.33, 25.32, 18.99, 18.99, 25.32, 12.66, 31.65, 6.33, 37.97, 0], [113.92, 50.63, 120.25, 50.63, 113.92, 56.96, 107.59, 63.29, 101.27, 69.62, 94.94, 69.62, 88.61, 75.95, 88.61, 56.96, 63.29, 50.63, 44.3, 37.97, 18.99, 12.66, 6.33, 12.66, 0, 6.33, 6.33, 0, 12.66, 0, 18.99, 0, 31.65, 12.66, 44.3, 18.99, 69.62, 37.97, 82.28, 37.97, 101.27, 44.3, 107.59, 50.63, 113.92, 50.63], [18.99, 0, 18.99, 12.66, 18.99, 18.99, 12.66, 25.32, 18.99, 31.65, 18.99, 31.65, 25.32, 37.97, 25.32, 44.3, 25.32, 50.63, 31.65, 56.96, 37.97, 63.29, 44.3, 69.62, 37.97, 69.62, 31.65, 69.62, 25.32, 63.29, 12.66, 56.96, 6.33, 56.96, 0, 50.63, 0, 37.97, 6.33, 25.32, 6.33, 18.99, 6.33, 12.66, 6.33, 6.33, 18.99, 0], [6.33, 18.99, 6.33, 12.66, 12.66, 6.33, 18.99, 6.33, 18.99, 0, 25.32, 0, 31.65, 6.33, 44.3, 6.33, 50.63, 6.33, 56.96, 18.99, 69.62, 25.32, 69.62, 31.65, 69.62, 37.97, 63.29, 44.3, 63.29, 50.63, 69.62, 50.63, 69.62, 56.96, 69.62, 63.29, 63.29, 69.62, 56.96, 75.95, 50.63, 75.95, 44.3, 69.62, 44.3, 63.29, 44.3, 56.96, 44.3, 50.63, 44.3, 44.3, 37.97, 37.97, 31.65, 37.97, 25.32, 44.3, 12.66, 37.97, 6.33, 31.65, 0, 31.65, 0, 18.99, 6.33, 18.99], [6.33, 0, 6.33, 12.66, 0, 12.66, 0, 6.33, 6.33, 0], [0, 6.33, 0, 0, 6.33, 6.33, 6.33, 12.66, 0, 18.99, 0, 12.66, 0, 6.33], [12.66, 6.33, 12.66, 12.66, 6.33, 18.99, 6.33, 12.66, 0, 6.33, 12.66, 0, 12.66, 6.33], [0, 0, 6.33, 0, 12.66, 6.33, 12.66, 12.66, 6.33, 18.99, 0, 18.99, 0, 12.66, 6.33, 6.33, 0, 0], [0, 6.33, 0, 0, 6.33, 6.33, 18.99, 18.99, 18.99, 25.32, 12.66, 31.65, 12.66, 25.32, 6.33, 18.99, 0, 12.66, 0, 6.33], [6.33, 0, 6.33, 6.33, 12.66, 12.66, 6.33, 18.99, 0, 6.33, 6.33, 0], [0, 0, 12.66, 12.66, 12.66, 18.99, 6.33, 25.32, 0, 18.99, 6.33, 12.66, 0, 12.66, 0, 6.33, 0, 0], [0, 12.66, 6.33, 0, 6.33, 12.66, 12.66, 12.66, 18.99, 18.99, 18.99, 31.65, 6.33, 37.97, 6.33, 25.32, 12.66, 18.99, 0, 12.66], [12.66, 0, 12.66, 6.33, 12.66, 12.66, 6.33, 18.99, 6.33, 25.32, 0, 25.32, 0, 12.66, 12.66, 0], [12.66, 0, 12.66, 12.66, 6.33, 18.99, 0, 18.99, 0, 12.66, 12.66, 0], [6.33, 0, 12.66, 12.66, 12.66, 25.32, 0, 25.32, 6.33, 18.99, 0, 12.66, 6.33, 0], [12.66, 0, 6.33, 25.32, 12.66, 37.97, 12.66, 50.63, 6.33, 63.29, 6.33, 50.63, 6.33, 37.97, 0, 31.65, 6.33, 12.66, 12.66, 0], [0, 0, 12.66, 12.66, 18.99, 25.32, 12.66, 44.3, 12.66, 56.96, 0, 63.29, 6.33, 50.63, 6.33, 25.32, 0, 0], [6.33, 0, 12.66, 31.65, 25.32, 50.63, 31.65, 63.29, 12.66, 69.62, 18.99, 63.29, 6.33, 50.63, 0, 31.65, 0, 25.32, 6.33, 18.99, 6.33, 0], [25.32, 6.33, 37.97, 18.99, 88.61, 25.32, 126.58, 25.32, 177.22, 6.33, 170.89, 25.32, 164.56, 37.97, 120.25, 82.28, 56.96, 82.28, 6.33, 31.65, 6.33, 12.66, 0, 0, 18.99, 6.33, 25.32, 6.33], [75.95, 6.33, 56.96, 12.66, 25.32, 25.32, 0, 25.32, 31.65, 0, 75.95, 6.33], [0, 0, 31.65, 6.33, 75.95, 12.66, 113.92, 12.66, 120.25, 12.66, 113.92, 18.99, 101.27, 31.65, 37.97, 25.32, 31.65, 18.99, 25.32, 12.66, 0, 6.33, 0, 0], [272.15, 18.99, 284.81, 18.99, 284.81, 25.32, 278.48, 50.63, 278.48, 63.29, 284.81, 69.62, 291.14, 69.62, 303.8, 56.96, 310.13, 37.97, 316.46, 25.32, 329.11, 0, 341.77, 0, 341.77, 12.66, 341.77, 37.97, 341.77, 75.95, 348.1, 75.95, 354.43, 69.62, 360.76, 56.96, 367.09, 31.65, 373.42, 6.33, 373.42, 0, 506.33, 0, 506.33, 101.27, 0, 101.27, 0, 0, 101.27, 0, 107.59, 6.33, 107.59, 12.66, 107.59, 25.32, 120.25, 37.97, 158.23, 75.95, 215.19, 75.95, 221.52, 75.95, 246.84, 50.63, 265.82, 31.65, 272.15, 18.99], [0, 0, 202.53, 0, 202.53, 6.33, 202.53, 12.66, 208.86, 6.33, 208.86, 0, 215.19, 0, 221.52, 12.66, 221.52, 25.32, 221.52, 37.97, 215.19, 50.63, 183.54, 50.63, 177.22, 50.63, 158.23, 44.3, 132.91, 44.3, 120.25, 37.97, 101.27, 37.97, 101.27, 44.3, 101.27, 50.63, 0, 50.63, 0, 0], [18.99, 0, 94.94, 0, 88.61, 6.33, 75.95, 25.32, 69.62, 44.3, 63.29, 63.29, 56.96, 69.62, 44.3, 69.62, 50.63, 56.96, 50.63, 50.63, 31.65, 44.3, 12.66, 44.3, 0, 37.97, 0, 31.65, 6.33, 18.99, 6.33, 12.66, 6.33, 6.33, 12.66, 18.99, 18.99, 25.32, 18.99, 31.65, 18.99, 37.97, 25.32, 37.97, 37.97, 31.65, 37.97, 25.32, 31.65, 18.99, 18.99, 0], [0, 0, 44.3, 0, 44.3, 50.63, 6.33, 50.63, 6.33, 31.65, 0, 6.33, 0, 0], [0, 0, 18.99, 0, 25.32, 6.33, 37.97, 6.33, 37.97, 0, 94.94, 0, 94.94, 50.63, 0, 50.63, 0, 0], [126.58, 0, 126.58, 88.61, 18.99, 88.61, 18.99, 82.28, 18.99, 75.95, 12.66, 69.62, 0, 63.29, 12.66, 63.29, 12.66, 56.96, 44.3, 50.63, 69.62, 44.3, 94.94, 25.32, 113.92, 6.33, 126.58, 0], [139.24, 69.62, 139.24, 75.95, 120.25, 82.28, 107.59, 82.28, 88.61, 88.61, 88.61, 82.28, 88.61, 75.95, 88.61, 69.62, 82.28, 69.62, 82.28, 63.29, 88.61, 56.96, 88.61, 50.63, 88.61, 44.3, 75.95, 37.97, 69.62, 25.32, 63.29, 25.32, 56.96, 25.32, 50.63, 25.32, 44.3, 18.99, 37.97, 18.99, 31.65, 25.32, 25.32, 31.65, 18.99, 31.65, 6.33, 31.65, 0, 25.32, 37.97, 6.33, 56.96, 0, 82.28, 12.66, 107.59, 44.3, 139.24, 69.62], [284.81, 25.32, 284.81, 31.65, 284.81, 44.3, 284.81, 50.63, 278.48, 63.29, 278.48, 69.62, 278.48, 75.95, 278.48, 82.28, 265.82, 75.95, 246.84, 63.29, 234.18, 56.96, 221.52, 44.3, 215.19, 44.3, 208.86, 44.3, 202.53, 50.63, 208.86, 56.96, 208.86, 63.29, 202.53, 63.29, 196.2, 69.62, 196.2, 75.95, 196.2, 82.28, 189.87, 88.61, 145.57, 94.94, 113.92, 94.94, 126.58, 82.28, 56.96, 88.61, 12.66, 88.61, 0, 82.28, 12.66, 82.28, 31.65, 75.95, 44.3, 69.62, 25.32, 63.29, 63.29, 37.97, 75.95, 18.99, 113.92, 6.33, 126.58, 6.33, 139.24, 18.99, 164.56, 31.65, 183.54, 25.32, 202.53, 6.33, 221.52, 0, 246.84, 6.33, 278.48, 18.99, 284.81, 25.32], [31.65, 31.65, 25.32, 31.65, 18.99, 25.32, 18.99, 18.99, 12.66, 18.99, 6.33, 12.66, 0, 12.66, 6.33, 6.33, 0, 6.33, 6.33, 0, 12.66, 6.33, 18.99, 12.66, 25.32, 18.99, 31.65, 25.32, 31.65, 31.65], [0, 0, 18.99, 6.33, 63.29, 25.32, 56.96, 31.65, 44.3, 37.97, 50.63, 37.97, 56.96, 44.3, 63.29, 44.3, 50.63, 50.63, 25.32, 56.96, 31.65, 56.96, 37.97, 63.29, 31.65, 63.29, 12.66, 63.29, 6.33, 63.29, 0, 63.29, 0, 0], [0, 6.33, 75.95, 6.33, 126.58, 6.33, 151.9, 0, 145.57, 6.33, 139.24, 12.66, 170.89, 12.66, 189.87, 12.66, 215.19, 12.66, 221.52, 18.99, 227.85, 18.99, 234.18, 12.66, 234.18, 18.99, 234.18, 25.32, 234.18, 31.65, 227.85, 44.3, 221.52, 37.97, 221.52, 31.65, 215.19, 37.97, 208.86, 37.97, 208.86, 31.65, 208.86, 25.32, 202.53, 31.65, 196.2, 37.97, 196.2, 44.3, 196.2, 56.96, 0, 56.96, 0, 6.33], [82.28, 0, 94.94, 6.33, 120.25, 12.66, 120.25, 18.99, 120.25, 25.32, 120.25, 31.65, 113.92, 37.97, 113.92, 44.3, 113.92, 50.63, 0, 50.63, 0, 44.3, 6.33, 44.3, 12.66, 37.97, 18.99, 31.65, 18.99, 37.97, 18.99, 37.97, 25.32, 44.3, 31.65, 44.3, 37.97, 37.97, 37.97, 44.3, 44.3, 44.3, 50.63, 44.3, 56.96, 44.3, 75.95, 37.97, 69.62, 31.65, 69.62, 25.32, 63.29, 18.99, 56.96, 18.99, 56.96, 12.66, 63.29, 12.66, 69.62, 6.33, 69.62, 0, 75.95, 0, 82.28, 0], [0, 6.33, 0, 0, 31.65, 0, 18.99, 18.99, 18.99, 18.99, 25.32, 18.99, 31.65, 12.66, 31.65, 6.33, 37.97, 0, 75.95, 0, 82.28, 6.33, 88.61, 31.65, 94.94, 37.97, 88.61, 50.63, 12.66, 50.63, 12.66, 25.32, 0, 12.66, 0, 6.33], [31.65, 25.32, 37.97, 25.32, 31.65, 44.3, 31.65, 44.3, 31.65, 50.63, 31.65, 56.96, 18.99, 44.3, 12.66, 37.97, 12.66, 44.3, 12.66, 50.63, 6.33, 50.63, 6.33, 44.3, 6.33, 37.97, 6.33, 31.65, 0, 25.32, 6.33, 18.99, 6.33, 12.66, 6.33, 6.33, 12.66, 0, 18.99, 0, 18.99, 6.33, 18.99, 12.66, 25.32, 18.99, 18.99, 25.32, 25.32, 31.65, 31.65, 25.32], [0, 0, 208.86, 0, 202.53, 12.66, 196.2, 25.32, 196.2, 31.65, 196.2, 37.97, 202.53, 44.3, 202.53, 50.63, 0, 50.63, 0, 0], [18.99, 6.33, 18.99, 0, 25.32, 0, 31.65, 12.66, 50.63, 25.32, 56.96, 31.65, 63.29, 37.97, 69.62, 44.3, 69.62, 50.63, 6.33, 50.63, 0, 37.97, 12.66, 25.32, 12.66, 18.99, 18.99, 6.33], [0, 0, 107.59, 0, 107.59, 75.95, 50.63, 75.95, 50.63, 69.62, 44.3, 63.29, 37.97, 63.29, 25.32, 37.97, 18.99, 31.65, 12.66, 25.32, 6.33, 18.99, 0, 6.33, 0, 0], [0, 0, 145.57, 0, 145.57, 37.97, 132.91, 44.3, 126.58, 50.63, 113.92, 63.29, 101.27, 69.62, 88.61, 82.28, 82.28, 82.28, 82.28, 75.95, 75.95, 69.62, 56.96, 50.63, 50.63, 44.3, 37.97, 31.65, 25.32, 18.99, 12.66, 12.66, 0, 6.33, 0, 0], [0, 0, 107.59, 0, 107.59, 6.33, 101.27, 6.33, 82.28, 12.66, 63.29, 25.32, 50.63, 31.65, 37.97, 25.32, 25.32, 18.99, 0, 12.66, 0, 0], [0, 0, 126.58, 0, 126.58, 12.66, 120.25, 12.66, 113.92, 12.66, 107.59, 12.66, 101.27, 18.99, 94.94, 25.32, 88.61, 31.65, 82.28, 37.97, 69.62, 37.97, 63.29, 44.3, 50.63, 37.97, 50.63, 31.65, 37.97, 31.65, 31.65, 25.32, 25.32, 18.99, 12.66, 18.99, 0, 18.99, 0, 0], [0, 0, 63.29, 0, 63.29, 63.29, 37.97, 50.63, 6.33, 37.97, 0, 37.97, 0, 0], [6.33, 0, 63.29, 0, 63.29, 18.99, 56.96, 25.32, 37.97, 31.65, 31.65, 37.97, 25.32, 44.3, 18.99, 50.63, 12.66, 56.96, 6.33, 63.29, 0, 63.29, 0, 0, 6.33, 0], [0, 50.63, 0, 0, 12.66, 0, 31.65, 25.32, 44.3, 0, 63.29, 0, 63.29, 50.63, 50.63, 50.63, 50.63, 12.66, 31.65, 37.97, 12.66, 18.99, 12.66, 50.63, 0, 50.63], [0, 0, 6.33, 0, 6.33, 44.3, 37.97, 44.3, 37.97, 50.63, 0, 50.63, 0, 0]], [[120.25, 75.95, 120.25, 82.28, 0, 82.28, 6.33, 75.95, 12.66, 69.62, 12.66, 56.96, 18.99, 56.96, 31.65, 50.63, 44.3, 44.3, 50.63, 31.65, 44.3, 25.32, 50.63, 12.66, 56.96, 0, 75.95, 0, 75.95, 0, 88.61, 25.32, 88.61, 37.97, 101.27, 50.63, 120.25, 75.95], [101.27, 88.61, 69.62, 88.61, 75.95, 82.28, 0, 82.28, 6.33, 75.95, 6.33, 75.95, 6.33, 69.62, 12.66, 69.62, 12.66, 63.29, 18.99, 56.96, 31.65, 44.3, 44.3, 44.3, 44.3, 25.32, 44.3, 25.32, 56.96, 6.33, 63.29, 0, 75.95, 0, 82.28, 6.33, 82.28, 18.99, 94.94, 25.32, 101.27, 37.97, 113.92, 44.3, 126.58, 63.29, 120.25, 63.29, 120.25, 75.95, 113.92, 82.28, 101.27, 88.61], [126.58, 63.29, 0, 63.29, 0, 56.96, 18.99, 44.3, 25.32, 31.65, 25.32, 18.99, 37.97, 6.33, 37.97, 6.33, 50.63, 6.33, 56.96, 12.66, 69.62, 6.33, 82.28, 0, 88.61, 12.66, 101.27, 12.66, 107.59, 18.99, 107.59, 31.65, 113.92, 44.3, 126.58, 56.96, 126.58, 63.29], [63.29, 75.95, 0, 75.95, 0, 69.62, 0, 63.29, 0, 63.29, 6.33, 56.96, 6.33, 50.63, 12.66, 44.3, 18.99, 37.97, 25.32, 31.65, 25.32, 25.32, 37.97, 25.32, 44.3, 18.99, 44.3, 12.66, 69.62, 0, 75.95, 6.33, 75.95, 12.66, 82.28, 12.66, 88.61, 18.99, 94.94, 25.32, 101.27, 31.65, 107.59, 37.97, 120.25, 44.3, 113.92, 56.96, 101.27, 63.29, 94.94, 69.62, 94.94, 75.95, 63.29, 75.95], [0, 69.62, 0, 12.66, 12.66, 6.33, 18.99, 0, 25.32, 0, 31.65, 6.33, 37.97, 6.33, 44.3, 12.66, 50.63, 12.66, 56.96, 18.99, 56.96, 25.32, 63.29, 31.65, 56.96, 37.97, 50.63, 44.3, 50.63, 50.63, 44.3, 56.96, 44.3, 69.62, 0, 69.62], [6.33, 18.99, 18.99, 12.66, 25.32, 12.66, 31.65, 18.99, 37.97, 18.99, 44.3, 12.66, 44.3, 6.33, 56.96, 0, 56.96, 6.33, 63.29, 6.33, 69.62, 12.66, 75.95, 18.99, 82.28, 18.99, 82.28, 25.32, 82.28, 31.65, 75.95, 31.65, 69.62, 31.65, 63.29, 37.97, 56.96, 44.3, 50.63, 50.63, 50.63, 56.96, 44.3, 56.96, 44.3, 63.29, 37.97, 69.62, 31.65, 63.29, 25.32, 56.96, 25.32, 50.63, 18.99, 44.3, 18.99, 31.65, 12.66, 25.32, 6.33, 25.32, 0, 25.32, 6.33, 18.99], [506.33, 0, 506.33, 50.63, 0, 50.63, 0, 31.65, 265.82, 31.65, 265.82, 25.32, 341.77, 25.32, 335.44, 31.65, 367.09, 31.65, 493.67, 31.65, 493.67, 25.32, 487.34, 12.66, 481.01, 6.33, 474.68, 0, 506.33, 0], [18.99, 0, 25.32, 6.33, 25.32, 12.66, 25.32, 18.99, 18.99, 25.32, 12.66, 25.32, 6.33, 25.32, 0, 18.99, 0, 12.66, 0, 6.33, 6.33, 0, 18.99, 0], [12.66, 0, 6.33, 18.99, 0, 12.66, 12.66, 0], [18.99, 6.33, 0, 6.33, 0, 0, 18.99, 6.33], [18.99, 12.66, 0, 6.33, 0, 0, 18.99, 12.66], [12.66, 18.99, 0, 6.33, 6.33, 0, 12.66, 18.99], [0, 18.99, 0, 0, 6.33, 0, 0, 18.99], [0, 18.99, 6.33, 0, 12.66, 0, 0, 18.99], [0, 12.66, 12.66, 0, 18.99, 6.33, 0, 12.66], [0, 6.33, 18.99, 0, 18.99, 6.33, 0, 6.33], [0, 0, 18.99, 0, 18.99, 6.33, 0, 0], [0, 0, 18.99, 6.33, 12.66, 12.66, 0, 0], [0, 0, 6.33, 12.66, 0, 12.66, 0, 0], [18.99, 18.99, 25.32, 12.66, 18.99, 6.33, 25.32, 0, 31.65, 6.33, 37.97, 12.66, 37.97, 6.33, 44.3, 0, 50.63, 0, 56.96, 6.33, 63.29, 12.66, 63.29, 25.32, 56.96, 31.65, 44.3, 31.65, 37.97, 25.32, 25.32, 31.65, 18.99, 31.65, 6.33, 31.65, 0, 25.32, 0, 18.99, 6.33, 12.66, 12.66, 12.66, 18.99, 12.66, 18.99, 18.99], [18.99, 25.32, 25.32, 18.99, 25.32, 12.66, 25.32, 6.33, 31.65, 0, 44.3, 6.33, 44.3, 12.66, 50.63, 18.99, 50.63, 12.66, 56.96, 6.33, 63.29, 6.33, 69.62, 6.33, 75.95, 18.99, 75.95, 25.32, 69.62, 31.65, 56.96, 37.97, 37.97, 37.97, 25.32, 37.97, 18.99, 37.97, 6.33, 31.65, 0, 25.32, 0, 18.99, 6.33, 12.66, 12.66, 12.66, 18.99, 18.99, 18.99, 25.32], [0, 0, 158.23, 0, 158.23, 12.66, 139.24, 6.33, 151.9, 18.99, 132.91, 18.99, 145.57, 25.32, 132.91, 31.65, 145.57, 31.65, 139.24, 44.3, 158.23, 37.97, 151.9, 56.96, 158.23, 50.63, 164.56, 56.96, 170.89, 44.3, 183.54, 50.63, 183.54, 37.97, 189.87, 37.97, 196.2, 139.24, 189.87, 132.91, 183.54, 132.91, 177.22, 132.91, 170.89, 139.24, 164.56, 145.57, 164.56, 151.9, 164.56, 158.23, 151.9, 151.9, 145.57, 145.57, 139.24, 139.24, 132.91, 132.91, 126.58, 126.58, 120.25, 126.58, 120.25, 120.25, 113.92, 113.92, 101.27, 120.25, 94.94, 120.25, 88.61, 126.58, 88.61, 132.91, 82.28, 139.24, 75.95, 139.24, 69.62, 139.24, 69.62, 145.57, 63.29, 151.9, 56.96, 145.57, 56.96, 139.24, 50.63, 132.91, 44.3, 132.91, 37.97, 126.58, 31.65, 126.58, 25.32, 120.25, 18.99, 120.25, 12.66, 126.58, 6.33, 126.58, 0, 132.91, 0, 0], [310.13, 0, 310.13, 158.23, 284.81, 158.23, 278.48, 158.23, 265.82, 145.57, 265.82, 132.91, 259.49, 120.25, 253.16, 107.59, 234.18, 107.59, 227.85, 120.25, 221.52, 132.91, 227.85, 139.24, 221.52, 145.57, 221.52, 151.9, 208.86, 158.23, 196.2, 164.56, 189.87, 151.9, 183.54, 145.57, 177.22, 139.24, 170.89, 139.24, 164.56, 126.58, 151.9, 120.25, 151.9, 107.59, 145.57, 101.27, 139.24, 101.27, 132.91, 101.27, 120.25, 113.92, 113.92, 120.25, 113.92, 126.58, 113.92, 132.91, 107.59, 132.91, 101.27, 126.58, 94.94, 120.25, 88.61, 120.25, 88.61, 113.92, 82.28, 113.92, 75.95, 120.25, 75.95, 126.58, 69.62, 132.91, 63.29, 132.91, 56.96, 126.58, 50.63, 126.58, 37.97, 132.91, 31.65, 139.24, 25.32, 126.58, 18.99, 126.58, 12.66, 132.91, 6.33, 132.91, 0, 139.24, 0, 107.59, 0, 101.27, 0, 88.61, 0, 75.95, 0, 69.62, 0, 63.29, 56.96, 63.29, 75.95, 63.29, 82.28, 63.29, 88.61, 56.96, 94.94, 63.29, 107.59, 63.29, 183.54, 63.29, 183.54, 69.62, 189.87, 75.95, 196.2, 82.28, 202.53, 82.28, 240.51, 82.28, 246.84, 82.28, 253.16, 75.95, 259.49, 69.62, 259.49, 63.29, 253.16, 50.63, 246.84, 50.63, 240.51, 50.63, 234.18, 56.96, 234.18, 63.29, 227.85, 56.96, 227.85, 50.63, 215.19, 44.3, 208.86, 50.63, 208.86, 56.96, 208.86, 63.29, 202.53, 63.29, 202.53, 56.96, 196.2, 56.96, 189.87, 56.96, 189.87, 0, 310.13, 0], [120.25, 0, 132.91, 0, 132.91, 56.96, 126.58, 63.29, 50.63, 63.29, 56.96, 56.96, 56.96, 44.3, 50.63, 37.97, 44.3, 31.65, 37.97, 31.65, 31.65, 37.97, 25.32, 37.97, 18.99, 31.65, 12.66, 37.97, 12.66, 44.3, 6.33, 44.3, 0, 44.3, 0, 0, 120.25, 0], [6.33, 0, 25.32, 0, 18.99, 6.33, 12.66, 12.66, 6.33, 12.66, 0, 0, 6.33, 0], [6.33, 0, 75.95, 0, 75.95, 44.3, 69.62, 50.63, 69.62, 56.96, 75.95, 63.29, 18.99, 63.29, 12.66, 37.97, 18.99, 37.97, 6.33, 25.32, 18.99, 25.32, 6.33, 18.99, 0, 18.99, 6.33, 0], [0, 63.29, 0, 0, 25.32, 31.65, 50.63, 0, 50.63, 50.63, 88.61, 50.63, 88.61, 63.29, 37.97, 63.29, 37.97, 37.97, 25.32, 50.63, 12.66, 31.65, 12.66, 63.29, 0, 63.29], [139.24, 94.94, 37.97, 94.94, 37.97, 82.28, 0, 82.28, 0, 0, 139.24, 0, 139.24, 94.94], [25.32, 0, 50.63, 0, 50.63, 31.65, 25.32, 56.96, 0, 31.65, 0, 0, 18.99, 0, 25.32, 0], [0, 0, 189.87, 0, 189.87, 94.94, 0, 94.94, 0, 0], [0, 25.32, 0, 0, 12.66, 12.66, 25.32, 6.33, 25.32, 18.99, 25.32, 25.32, 0, 25.32], [0, 94.94, 0, 0, 126.58, 0, 126.58, 94.94, 0, 94.94]], [[31.65, 0, 63.29, 0, 94.94, 25.32, 94.94, 56.96, 69.62, 88.61, 31.65, 88.61, 0, 56.96, 0, 25.32, 31.65, 0], [0, 82.28, 69.62, 6.33, 88.61, 0, 107.59, 0, 113.92, 18.99, 113.92, 31.65, 31.65, 107.59, 0, 82.28], [25.32, 0, 113.92, 63.29, 120.25, 82.28, 120.25, 94.94, 94.94, 101.27, 75.95, 94.94, 0, 31.65, 25.32, 0], [101.27, 0, 132.91, 31.65, 37.97, 88.61, 18.99, 94.94, 0, 88.61, 0, 69.62, 6.33, 56.96, 101.27, 0], [88.61, 82.28, 94.94, 88.61, 63.29, 113.92, 0, 31.65, 0, 18.99, 6.33, 0, 25.32, 0, 44.3, 6.33, 88.61, 82.28], [6.33, 0, 101.27, 0, 120.25, 12.66, 126.58, 25.32, 107.59, 44.3, 0, 31.65, 0, 0, 6.33, 0], [44.3, 107.59, 44.3, 120.25, 12.66, 120.25, 0, 25.32, 12.66, 12.66, 25.32, 0, 37.97, 12.66, 44.3, 31.65, 44.3, 107.59], [0, 0, 37.97, 0, 50.63, 75.95, 44.3, 94.94, 25.32, 101.27, 12.66, 94.94, 0, 75.95, 0, 0], [120.25, 0, 126.58, 0, 126.58, 31.65, 25.32, 44.3, 12.66, 37.97, 0, 18.99, 18.99, 6.33, 31.65, 0, 120.25, 0], [0, 0, 75.95, 75.95, 94.94, 164.56, 82.28, 164.56, 69.62, 82.28, 6.33, 18.99, 0, 0], [0, 31.65, 44.3, 0, 31.65, 50.63, 6.33, 63.29, 0, 31.65], [37.97, 25.32, 44.3, 56.96, 6.33, 44.3, 0, 0, 37.97, 25.32], [139.24, 25.32, 139.24, 82.28, 132.91, 88.61, 126.58, 88.61, 113.92, 88.61, 107.59, 75.95, 101.27, 82.28, 101.27, 88.61, 88.61, 101.27, 63.29, 82.28, 37.97, 94.94, 18.99, 82.28, 25.32, 63.29, 6.33, 56.96, 0, 44.3, 12.66, 37.97, 18.99, 31.65, 12.66, 18.99, 44.3, 6.33, 56.96, 12.66, 63.29, 25.32, 75.95, 31.65, 88.61, 25.32, 94.94, 12.66, 113.92, 0, 132.91, 12.66, 139.24, 25.32], [0, 88.61, 0, 82.28, 0, 31.65, 18.99, 18.99, 6.33, 0, 25.32, 0, 44.3, 6.33, 37.97, 18.99, 37.97, 37.97, 50.63, 44.3, 56.96, 31.65, 69.62, 31.65, 69.62, 12.66, 88.61, 6.33, 107.59, 18.99, 101.27, 25.32, 101.27, 37.97, 120.25, 37.97, 132.91, 56.96, 126.58, 75.95, 120.25, 75.95, 107.59, 75.95, 107.59, 88.61, 107.59, 101.27, 94.94, 113.92, 82.28, 113.92, 75.95, 82.28, 63.29, 88.61, 63.29, 94.94, 50.63, 107.59, 18.99, 107.59, 0, 88.61], [0, 31.65, 18.99, 6.33, 37.97, 0, 63.29, 18.99, 82.28, 0, 94.94, 6.33, 113.92, 31.65, 107.59, 37.97, 88.61, 12.66, 82.28, 12.66, 63.29, 25.32, 37.97, 12.66, 25.32, 12.66, 6.33, 31.65, 0, 31.65]], [[0, 75.95, 12.66, 0, 18.99, 75.95, 0, 75.95], [0, 69.62, 18.99, 0, 12.66, 69.62, 0, 69.62], [0, 94.94, 18.99, 0, 12.66, 94.94, 0, 94.94], [0, 151.9, 0, 126.58, 6.33, 126.58, 6.33, 107.59, 18.99, 139.24, 25.32, 0, 31.65, 151.9, 0, 151.9], [0, 75.95, 12.66, 0, 12.66, 75.95, 0, 75.95], [25.32, 0, 25.32, 6.33, 18.99, 82.28, 0, 82.28, 25.32, 0], [0, 69.62, 25.32, 0, 12.66, 56.96, 25.32, 44.3, 25.32, 56.96, 37.97, 44.3, 44.3, 56.96, 50.63, 18.99, 50.63, 63.29, 63.29, 37.97, 63.29, 63.29, 75.95, 37.97, 75.95, 56.96, 88.61, 37.97, 94.94, 69.62, 101.27, 31.65, 113.92, 69.62, 101.27, 69.62, 94.94, 75.95, 88.61, 69.62, 0, 69.62], [0, 44.3, 6.33, 0, 6.33, 37.97, 12.66, 0, 12.66, 37.97, 18.99, 12.66, 18.99, 37.97, 31.65, 0, 25.32, 37.97, 69.62, 0, 37.97, 37.97, 37.97, 44.3, 0, 44.3], [6.33, 0, 12.66, 37.97, 0, 37.97, 6.33, 0], [6.33, 0, 6.33, 25.32, 0, 25.32, 6.33, 0], [6.33, 0, 6.33, 18.99, 0, 18.99, 6.33, 0], [6.33, 0, 6.33, 18.99, 0, 18.99, 6.33, 0], [6.33, 0, 6.33, 18.99, 0, 18.99, 6.33, 0], [0, 0, 6.33, 25.32, 0, 25.32, 0, 0], [18.99, 12.66, 25.32, 0, 25.32, 37.97, 0, 37.97, 12.66, 25.32, 12.66, 31.65, 18.99, 12.66], [170.89, 63.29, 0, 63.29, 12.66, 25.32, 12.66, 50.63, 37.97, 25.32, 37.97, 44.3, 50.63, 18.99, 50.63, 31.65, 63.29, 12.66, 63.29, 44.3, 88.61, 37.97, 88.61, 44.3, 113.92, 12.66, 113.92, 37.97, 126.58, 37.97, 132.91, 0, 132.91, 44.3, 145.57, 6.33, 158.23, 50.63, 164.56, 12.66, 170.89, 44.3, 170.89, 63.29], [82.28, 31.65, 44.3, 63.29, 12.66, 31.65, 0, 0, 18.99, 12.66, 25.32, 0, 44.3, 6.33, 56.96, 0, 63.29, 6.33, 69.62, 25.32, 75.95, 31.65, 82.28, 31.65], [75.95, 0, 75.95, 6.33, 75.95, 18.99, 69.62, 37.97, 69.62, 44.3, 50.63, 44.3, 37.97, 44.3, 37.97, 44.3, 37.97, 50.63, 37.97, 56.96, 18.99, 63.29, 25.32, 56.96, 0, 31.65, 31.65, 31.65, 37.97, 25.32, 31.65, 25.32, 25.32, 18.99, 25.32, 12.66, 31.65, 6.33, 37.97, 0, 44.3, 6.33, 50.63, 18.99, 56.96, 18.99, 56.96, 6.33, 56.96, 0, 75.95, 0], [25.32, 0, 44.3, 6.33, 63.29, 31.65, 56.96, 50.63, 31.65, 63.29, 25.32, 69.62, 0, 50.63, 18.99, 37.97, 18.99, 12.66, 25.32, 0], [50.63, 6.33, 75.95, 25.32, 63.29, 18.99, 50.63, 12.66, 50.63, 63.29, 31.65, 63.29, 18.99, 50.63, 0, 50.63, 0, 18.99, 18.99, 12.66, 18.99, 0, 50.63, 6.33], [37.97, 12.66, 18.99, 0, 37.97, 6.33, 44.3, 18.99, 50.63, 37.97, 44.3, 44.3, 18.99, 63.29, 12.66, 63.29, 18.99, 37.97, 0, 37.97, 37.97, 12.66], [50.63, 18.99, 44.3, 37.97, 37.97, 44.3, 37.97, 44.3, 31.65, 56.96, 31.65, 63.29, 18.99, 69.62, 6.33, 63.29, 6.33, 56.96, 12.66, 44.3, 0, 31.65, 6.33, 18.99, 6.33, 12.66, 12.66, 0, 44.3, 6.33, 50.63, 18.99], [31.65, 0, 44.3, 6.33, 69.62, 25.32, 69.62, 31.65, 50.63, 31.65, 56.96, 37.97, 56.96, 44.3, 56.96, 50.63, 44.3, 63.29, 18.99, 69.62, 6.33, 69.62, 0, 63.29, 0, 56.96, 6.33, 37.97, 0, 25.32, 0, 18.99, 12.66, 6.33, 31.65, 0], [18.99, 25.32, 31.65, 12.66, 31.65, 0, 44.3, 12.66, 37.97, 18.99, 31.65, 25.32, 18.99, 31.65, 6.33, 31.65, 0, 31.65, 18.99, 25.32], [0, 0, 31.65, 0, 31.65, 132.91, 18.99, 145.57, 25.32, 120.25, 25.32, 107.59, 25.32, 6.33, 0, 6.33, 0, 0], [6.33, 0, 12.66, 0, 12.66, 6.33, 37.97, 6.33, 37.97, 107.59, 31.65, 126.58, 25.32, 139.24, 25.32, 113.92, 18.99, 132.91, 18.99, 107.59, 12.66, 126.58, 12.66, 107.59, 6.33, 139.24, 0, 126.58, 0, 120.25, 0, 101.27, 31.65, 101.27, 31.65, 12.66, 6.33, 12.66, 6.33, 6.33, 0, 6.33, 0, 0, 6.33, 0], [6.33, 0, 12.66, 0, 12.66, 6.33, 18.99, 6.33, 18.99, 12.66, 44.3, 12.66, 44.3, 101.27, 12.66, 101.27, 12.66, 145.57, 0, 113.92, 0, 94.94, 31.65, 94.94, 31.65, 25.32, 18.99, 25.32, 18.99, 18.99, 12.66, 18.99, 12.66, 12.66, 6.33, 12.66, 6.33, 0], [0, 0, 6.33, 0, 6.33, 12.66, 12.66, 12.66, 12.66, 18.99, 18.99, 18.99, 18.99, 25.32, 31.65, 25.32, 31.65, 94.94, 0, 94.94, 0, 0], [56.96, 113.92, 50.63, 126.58, 37.97, 126.58, 25.32, 132.91, 12.66, 120.25, 12.66, 107.59, 0, 88.61, 12.66, 63.29, 25.32, 69.62, 31.65, 31.65, 44.3, 25.32, 50.63, 31.65, 69.62, 0, 82.28, 0, 94.94, 12.66, 120.25, 0, 139.24, 12.66, 139.24, 25.32, 158.23, 44.3, 151.9, 50.63, 151.9, 69.62, 164.56, 82.28, 164.56, 88.61, 158.23, 101.27, 164.56, 113.92, 151.9, 113.92, 139.24, 107.59, 126.58, 113.92, 120.25, 107.59, 120.25, 63.29, 63.29, 63.29, 63.29, 113.92, 56.96, 113.92], [0, 31.65, 0, 0, 6.33, 0, 6.33, 37.97, 0, 37.97, 0, 31.65], [18.99, 37.97, 25.32, 37.97, 25.32, 25.32, 31.65, 25.32, 31.65, 31.65, 37.97, 37.97, 44.3, 37.97, 56.96, 31.65, 44.3, 25.32, 37.97, 25.32, 44.3, 18.99, 44.3, 6.33, 31.65, 12.66, 25.32, 18.99, 25.32, 12.66, 12.66, 0, 12.66, 18.99, 18.99, 25.32, 12.66, 25.32, 0, 31.65, 12.66, 37.97, 18.99, 37.97], [202.53, 31.65, 12.66, 37.97, 0, 18.99, 18.99, 18.99, 31.65, 12.66, 44.3, 0, 50.63, 6.33, 44.3, 12.66, 63.29, 6.33, 63.29, 25.32, 202.53, 25.32, 202.53, 31.65], [139.24, 0, 139.24, 37.97, 132.91, 31.65, 0, 31.65, 0, 0, 31.65, 0, 12.66, 18.99, 31.65, 18.99, 44.3, 12.66, 63.29, 12.66, 82.28, 18.99, 113.92, 18.99, 139.24, 0], [126.58, 0, 126.58, 6.33, 101.27, 25.32, 69.62, 25.32, 50.63, 18.99, 31.65, 18.99, 18.99, 25.32, 0, 25.32, 18.99, 6.33, 88.61, 18.99, 126.58, 0], [25.32, 0, 25.32, 6.33, 0, 18.99, 6.33, 12.66, 18.99, 0, 25.32, 0], [6.33, 6.33, 0, 6.33, 6.33, 0, 6.33, 6.33], [25.32, 25.32, 25.32, 31.65, 18.99, 31.65, 12.66, 25.32, 6.33, 6.33, 0, 0, 25.32, 0, 25.32, 25.32], [25.32, 0, 31.65, 0, 18.99, 6.33, 0, 0, 25.32, 0], [18.99, 0, 25.32, 0, 18.99, 12.66, 0, 0, 18.99, 0], [18.99, 0, 25.32, 0, 31.65, 18.99, 37.97, 31.65, 63.29, 56.96, 69.62, 63.29, 37.97, 56.96, 0, 50.63, 6.33, 25.32, 6.33, 6.33, 6.33, 0, 18.99, 0], [31.65, 0, 37.97, 0, 37.97, 6.33, 18.99, 6.33, 18.99, 25.32, 12.66, 25.32, 6.33, 12.66, 0, 6.33, 0, 0, 31.65, 0], [126.58, 0, 132.91, 0, 132.91, 6.33, 120.25, 18.99, 120.25, 25.32, 126.58, 31.65, 126.58, 31.65, 132.91, 31.65, 126.58, 37.97, 120.25, 37.97, 113.92, 37.97, 113.92, 31.65, 107.59, 25.32, 88.61, 12.66, 75.95, 6.33, 56.96, 12.66, 44.3, 25.32, 44.3, 31.65, 50.63, 44.3, 37.97, 25.32, 31.65, 18.99, 12.66, 12.66, 6.33, 25.32, 0, 18.99, 0, 0, 126.58, 0], [50.63, 25.32, 56.96, 25.32, 56.96, 44.3, 56.96, 50.63, 37.97, 63.29, 0, 63.29, 0, 18.99, 25.32, 31.65, 18.99, 25.32, 18.99, 0, 50.63, 0, 50.63, 25.32], [44.3, 0, 50.63, 0, 50.63, 25.32, 31.65, 12.66, 0, 6.33, 0, 0, 44.3, 0], [0, 0, 50.63, 6.33, 50.63, 25.32, 44.3, 12.66, 12.66, 6.33, 0, 6.33, 0, 0], [132.91, 18.99, 107.59, 44.3, 101.27, 25.32, 94.94, 12.66, 75.95, 6.33, 88.61, 18.99, 82.28, 25.32, 50.63, 25.32, 50.63, 6.33, 0, 0, 151.9, 0, 151.9, 18.99, 132.91, 25.32, 132.91, 18.99]], [[0, 0, 25.32, 0, 25.32, 25.32, 0, 25.32, 0, 0], [0, 6.33, 0, 0, 25.32, 0, 25.32, 6.33, 25.32, 25.32, 0, 25.32, 0, 6.33], [0, 6.33, 12.66, 0, 31.65, 12.66, 63.29, 12.66, 82.28, 0, 94.94, 6.33, 69.62, 25.32, 18.99, 25.32, 0, 6.33], [0, 0, 12.66, 0, 12.66, 25.32, 0, 25.32, 0, 0], [88.61, 31.65, 31.65, 50.63, 18.99, 101.27, 0, 101.27, 0, 44.3, 63.29, 0, 94.94, 0, 145.57, 0, 189.87, 31.65, 183.54, 88.61, 164.56, 82.28, 151.9, 37.97, 94.94, 31.65, 88.61, 31.65], [0, 0, 25.32, 0, 25.32, 25.32, 0, 25.32, 0, 0], [0, 0, 18.99, 6.33, 18.99, 31.65, 0, 25.32, 0, 0], [56.96, 0, 63.29, 0, 82.28, 0, 94.94, 18.99, 94.94, 56.96, 69.62, 132.91, 56.96, 94.94, 25.32, 139.24, 31.65, 94.94, 0, 139.24, 12.66, 75.95, 25.32, 31.65, 56.96, 0], [50.63, 0, 69.62, 6.33, 94.94, 63.29, 88.61, 145.57, 63.29, 101.27, 44.3, 139.24, 37.97, 101.27, 0, 139.24, 6.33, 88.61, 25.32, 44.3, 50.63, 0], [63.29, 12.66, 88.61, 31.65, 113.92, 31.65, 132.91, 6.33, 120.25, 44.3, 120.25, 75.95, 158.23, 44.3, 164.56, 75.95, 183.54, 44.3, 208.86, 82.28, 215.19, 18.99, 221.52, 18.99, 221.52, 101.27, 0, 101.27, 6.33, 56.96, 18.99, 88.61, 44.3, 0, 63.29, 12.66], [0, 0, 12.66, 0, 12.66, 12.66, 0, 12.66, 0, 0], [0, 0, 6.33, 0, 6.33, 12.66, 0, 12.66, 0, 0], [0, 18.99, 0, 0, 18.99, 0, 18.99, 18.99, 12.66, 18.99, 12.66, 6.33, 6.33, 6.33, 6.33, 18.99, 0, 18.99], [18.99, 18.99, 18.99, 6.33, 6.33, 6.33, 6.33, 18.99, 0, 18.99, 0, 0, 25.32, 0, 25.32, 18.99, 18.99, 18.99], [0, 0, 63.29, 0, 50.63, 25.32, 12.66, 25.32, 0, 0], [0, 0, 12.66, 0, 12.66, 18.99, 0, 18.99, 0, 0], [88.61, 0, 145.57, 18.99, 170.89, 94.94, 164.56, 158.23, 158.23, 151.9, 151.9, 158.23, 151.9, 151.9, 145.57, 158.23, 151.9, 101.27, 126.58, 31.65, 82.28, 25.32, 44.3, 44.3, 25.32, 69.62, 18.99, 113.92, 25.32, 164.56, 18.99, 158.23, 18.99, 164.56, 12.66, 158.23, 6.33, 164.56, 6.33, 158.23, 0, 164.56, 0, 63.29, 88.61, 0], [0, 18.99, 18.99, 18.99, 31.65, 0, 37.97, 25.32, 18.99, 25.32, 12.66, 44.3, 0, 18.99], [44.3, 6.33, 101.27, 31.65, 151.9, 0, 158.23, 0, 158.23, 6.33, 177.22, 6.33, 183.54, 0, 196.2, 0, 208.86, 12.66, 208.86, 37.97, 208.86, 94.94, 0, 94.94, 0, 25.32, 6.33, 12.66, 12.66, 6.33, 12.66, 12.66, 37.97, 12.66, 37.97, 6.33, 44.3, 6.33], [0, 0, 44.3, 0, 25.32, 12.66, 0, 0]], [[0, 25.32, 0, 0, 113.92, 0, 0, 75.95, 0, 25.32], [107.59, 0, 107.59, 63.29, 107.59, 69.62, 107.59, 75.95, 0, 75.95, 107.59, 0], [113.92, 82.28, 0, 0, 113.92, 0, 113.92, 82.28], [0, 0, 101.27, 75.95, 0, 75.95, 0, 0], [0, 0, 94.94, 69.62, 0, 69.62, 0, 0], [69.62, 0, 75.95, 0, 75.95, 75.95, 0, 69.62, 69.62, 0], [0, 69.62, 0, 0, 69.62, 0, 0, 69.62], [0, 6.33, 0, 0, 88.61, 0, 88.61, 69.62, 0, 6.33], [0, 37.97, 0, 0, 113.92, 0, 113.92, 37.97, 0, 37.97], [6.33, 37.97, 0, 31.65, 0, 0, 113.92, 0, 113.92, 31.65, 6.33, 37.97], [94.94, 6.33, 120.25, 31.65, 183.54, 31.65, 202.53, 0, 278.48, 6.33, 284.81, 94.94, 253.16, 69.62, 227.85, 94.94, 88.61, 94.94, 50.63, 69.62, 25.32, 94.94, 6.33, 94.94, 0, 6.33, 94.94, 6.33], [0, 25.32, 25.32, 0, 50.63, 25.32, 25.32, 44.3, 0, 25.32], [0, 25.32, 18.99, 0, 50.63, 25.32, 25.32, 50.63, 0, 25.32], [0, 0, 18.99, 0, 50.63, 25.32, 75.95, 0, 221.52, 0, 240.51, 18.99, 246.84, 18.99, 278.48, 0, 196.2, 107.59, 177.22, 88.61, 151.9, 88.61, 139.24, 107.59, 0, 0], [0, 6.33, 107.59, 0, 88.61, 31.65, 25.32, 31.65, 0, 6.33], [0, 18.99, 12.66, 0, 37.97, 0, 56.96, 18.99, 44.3, 37.97, 12.66, 37.97, 0, 18.99], [107.59, 50.63, 126.58, 69.62, 158.23, 69.62, 170.89, 50.63, 215.19, 0, 221.52, 0, 234.18, 0, 246.84, 18.99, 259.49, 37.97, 265.82, 56.96, 265.82, 183.54, 0, 183.54, 0, 75.95, 6.33, 25.32, 18.99, 6.33, 44.3, 0, 107.59, 50.63], [0, 18.99, 63.29, 0, 88.61, 0, 88.61, 6.33, 63.29, 6.33, 0, 25.32, 0, 18.99], [0, 18.99, 6.33, 12.66, 44.3, 0, 69.62, 0, 69.62, 6.33, 44.3, 6.33, 0, 18.99], [94.94, 25.32, 101.27, 31.65, 31.65, 6.33, 0, 6.33, 0, 0, 31.65, 0, 94.94, 25.32], [101.27, 12.66, 107.59, 12.66, 113.92, 18.99, 31.65, 6.33, 6.33, 12.66, 0, 0, 31.65, 0, 101.27, 12.66], [132.91, 164.56, 145.57, 177.22, 145.57, 202.53, 107.59, 183.54, 63.29, 126.58, 18.99, 113.92, 50.63, 101.27, 6.33, 94.94, 50.63, 82.28, 0, 56.96, 50.63, 56.96, 12.66, 31.65, 56.96, 37.97, 50.63, 0, 75.95, 37.97, 101.27, 18.99, 101.27, 50.63, 113.92, 31.65, 113.92, 75.95, 132.91, 50.63, 113.92, 101.27, 113.92, 113.92, 132.91, 164.56], [12.66, 101.27, 12.66, 94.94, 31.65, 37.97, 12.66, 56.96, 12.66, 18.99, 0, 31.65, 6.33, 0, 31.65, 6.33, 82.28, 12.66, 56.96, 18.99, 50.63, 31.65, 44.3, 75.95, 44.3, 164.56, 37.97, 158.23, 12.66, 101.27], [0, 18.99, 44.3, 0, 69.62, 0, 126.58, 25.32, 31.65, 101.27, 31.65, 75.95, 0, 18.99], [94.94, 0, 94.94, 132.91, 0, 75.95, 94.94, 0], [44.3, 31.65, 44.3, 37.97, 18.99, 50.63, 0, 18.99, 0, 12.66, 18.99, 0, 37.97, 0, 50.63, 6.33, 75.95, 12.66, 113.92, 25.32, 126.58, 31.65, 88.61, 25.32, 63.29, 18.99, 44.3, 18.99, 18.99, 18.99, 25.32, 31.65, 31.65, 31.65, 50.63, 25.32, 44.3, 31.65], [0, 0, 50.63, 25.32, 6.33, 37.97, 44.3, 44.3, 18.99, 56.96, 63.29, 69.62, 107.59, 126.58, 145.57, 145.57, 145.57, 151.9, 0, 151.9, 0, 0], [0, 6.33, 0, 0, 94.94, 56.96, 94.94, 101.27, 0, 101.27, 0, 6.33], [145.57, 151.9, 88.61, 126.58, 88.61, 120.25, 63.29, 120.25, 0, 139.24, 12.66, 126.58, 56.96, 113.92, 82.28, 113.92, 82.28, 107.59, 56.96, 107.59, 18.99, 120.25, 37.97, 88.61, 37.97, 82.28, 31.65, 0, 132.91, 0, 145.57, 6.33, 145.57, 151.9], [0, 0, 113.92, 0, 120.25, 88.61, 158.23, 120.25, 107.59, 101.27, 69.62, 101.27, 63.29, 113.92, 50.63, 120.25, 56.96, 158.23, 12.66, 151.9, 44.3, 177.22, 6.33, 177.22, 0, 177.22, 0, 0]], [[50.63, 0, 101.27, 170.89, 50.63, 246.84, 0, 164.56, 50.63, 0], [0, 37.97, 82.28, 56.96, 183.54, 0, 82.28, 88.61, 0, 37.97], [202.53, 25.32, 126.58, 75.95, 0, 0, 126.58, 44.3, 202.53, 25.32], [12.66, 0, 25.32, 50.63, 12.66, 69.62, 0, 50.63, 12.66, 0], [0, 0, 139.24, 94.94, 82.28, 82.28, 0, 0], [126.58, 0, 50.63, 88.61, 0, 101.27, 126.58, 0], [215.19, 0, 94.94, 170.89, 0, 120.25, 37.97, 107.59, 88.61, 145.57, 215.19, 0], [0, 88.61, 113.92, 0, 31.65, 75.95, 0, 88.61], [0, 0, 94.94, 120.25, 158.23, 94.94, 196.2, 101.27, 177.22, 107.59, 88.61, 145.57, 0, 0], [0, 0, 94.94, 75.95, 69.62, 69.62, 0, 0], [0, 12.66, 12.66, 0, 44.3, 0, 18.99, 18.99, 0, 12.66], [37.97, 12.66, 25.32, 18.99, 0, 0, 31.65, 0, 37.97, 12.66], [63.29, 0, 37.97, 75.95, 0, 107.59, 63.29, 0], [0, 0, 50.63, 82.28, 12.66, 63.29, 0, 0], [0, 18.99, 18.99, 0, 75.95, 6.33, 31.65, 31.65, 0, 18.99], [75.95, 18.99, 50.63, 31.65, 0, 6.33, 56.96, 0, 75.95, 18.99]], [[0, 0, 44.3, 0, 44.3, 6.33, 0, 6.33, 0, 0], [0, 0, 6.33, 0, 6.33, 63.29, 0, 63.29, 0, 0], [0, 6.33, 0, 0, 50.63, 0, 50.63, 6.33, 0, 6.33], [6.33, 0, 6.33, 56.96, 0, 56.96, 0, 0, 6.33, 0], [0, 0, 37.97, 0, 37.97, 6.33, 0, 6.33, 0, 0], [0, 0, 6.33, 0, 6.33, 25.32, 0, 25.32, 0, 0], [0, 0, 6.33, 25.32, 0, 25.32, 0, 0], [6.33, 0, 6.33, 18.99, 0, 0, 6.33, 0], [12.66, 0, 12.66, 18.99, 0, 18.99, 0, 0, 12.66, 0], [0, 0, 12.66, 0, 12.66, 18.99, 6.33, 18.99, 0, 18.99, 0, 0], [6.33, 12.66, 0, 0, 12.66, 0, 12.66, 18.99, 0, 18.99, 6.33, 12.66], [0, 0, 12.66, 0, 12.66, 18.99, 0, 18.99, 0, 0], [0, 0, 12.66, 0, 12.66, 164.56, 0, 164.56, 0, 0], [12.66, 75.95, 0, 75.95, 0, 0, 12.66, 0, 12.66, 75.95], [0, 6.33, 0, 0, 12.66, 0, 12.66, 75.95, 0, 75.95, 0, 6.33], [12.66, 75.95, 0, 75.95, 0, 0, 12.66, 0, 12.66, 75.95], [12.66, 75.95, 0, 75.95, 0, 6.33, 0, 0, 12.66, 0, 12.66, 75.95], [12.66, 164.56, 0, 164.56, 0, 0, 12.66, 0, 12.66, 164.56], [12.66, 164.56, 0, 164.56, 0, 0, 12.66, 0, 12.66, 164.56], [12.66, 164.56, 0, 164.56, 0, 0, 12.66, 0, 12.66, 164.56], [0, 164.56, 0, 6.33, 0, 0, 12.66, 0, 12.66, 164.56, 0, 164.56], [0, 164.56, 0, 0, 12.66, 0, 12.66, 164.56, 0, 164.56], [12.66, 170.89, 0, 158.23, 0, 0, 12.66, 6.33, 12.66, 170.89], [12.66, 170.89, 0, 158.23, 0, 0, 12.66, 12.66, 12.66, 164.56, 12.66, 170.89], [132.91, 94.94, 126.58, 88.61, 0, 88.61, 56.96, 0, 132.91, 94.94], [6.33, 88.61, 0, 82.28, 56.96, 0, 94.94, 25.32, 37.97, 113.92, 6.33, 88.61], [0, 158.23, 6.33, 0, 12.66, 6.33, 12.66, 164.56, 0, 158.23], [0, 0, 12.66, 0, 12.66, 158.23, 0, 158.23, 0, 0], [63.29, 132.91, 56.96, 132.91, 56.96, 75.95, 0, 75.95, 0, 31.65, 12.66, 31.65, 25.32, 44.3, 37.97, 25.32, 25.32, 12.66, 12.66, 25.32, 0, 25.32, 0, 0, 63.29, 0, 63.29, 132.91], [12.66, 0, 12.66, 6.33, 0, 6.33, 0, 0, 12.66, 0], [56.96, 44.3, 0, 44.3, 0, 0, 56.96, 0, 56.96, 44.3], [0, 0, 37.97, 0, 37.97, 12.66, 0, 12.66, 0, 0], [0, 0, 12.66, 0, 12.66, 6.33, 0, 6.33, 0, 0], [0, 0, 18.99, 0, 18.99, 6.33, 0, 6.33, 0, 0], [0, 0, 6.33, 0, 6.33, 6.33, 0, 6.33, 0, 0], [12.66, 158.23, 0, 158.23, 0, 0, 12.66, 0, 12.66, 158.23], [0, 158.23, 0, 0, 12.66, 0, 12.66, 158.23, 0, 158.23], [0, 158.23, 0, 0, 12.66, 0, 12.66, 158.23, 0, 158.23], [0, 0, 12.66, 0, 12.66, 158.23, 0, 158.23, 0, 0], [0, 6.33, 0, 0, 12.66, 0, 12.66, 18.99, 0, 18.99, 0, 6.33], [0, 0, 12.66, 0, 12.66, 18.99, 0, 18.99, 0, 0], [0, 0, 12.66, 0, 12.66, 18.99, 0, 18.99, 0, 0], [0, 0, 12.66, 0, 12.66, 18.99, 0, 18.99, 0, 0], [0, 0, 12.66, 0, 12.66, 18.99, 0, 18.99, 0, 0], [0, 0, 12.66, 0, 12.66, 158.23, 0, 158.23, 0, 0], [0, 0, 12.66, 0, 12.66, 158.23, 0, 158.23, 0, 0], [0, 6.33, 0, 0, 63.29, 0, 63.29, 6.33, 0, 6.33], [12.66, 164.56, 6.33, 170.89, 0, 0, 12.66, 6.33, 12.66, 164.56], [12.66, 164.56, 6.33, 177.22, 0, 12.66, 6.33, 0, 12.66, 164.56], [6.33, 164.56, 12.66, 164.56, 6.33, 170.89, 0, 12.66, 6.33, 0, 6.33, 158.23, 6.33, 164.56], [12.66, 158.23, 6.33, 164.56, 0, 6.33, 6.33, 0, 12.66, 158.23], [0, 0, 50.63, 0, 50.63, 6.33, 0, 6.33, 0, 0], [0, 0, 6.33, 0, 6.33, 6.33, 6.33, 50.63, 0, 50.63, 0, 0], [6.33, 0, 6.33, 56.96, 0, 6.33, 6.33, 0], [0, 0, 18.99, 0, 18.99, 6.33, 0, 6.33, 0, 0], [0, 0, 6.33, 0, 6.33, 56.96, 0, 56.96, 0, 0], [0, 0, 56.96, 0, 56.96, 6.33, 0, 6.33, 0, 0], [0, 0, 18.99, 0, 18.99, 6.33, 0, 6.33, 0, 0], [0, 0, 6.33, 18.99, 0, 18.99, 0, 0], [6.33, 0, 12.66, 0, 18.99, 151.9, 18.99, 158.23, 6.33, 158.23, 0, 0, 6.33, 0], [0, 0, 12.66, 0, 18.99, 158.23, 6.33, 158.23, 0, 0], [0, 0, 12.66, 0, 18.99, 158.23, 6.33, 158.23, 0, 0], [0, 69.62, 0, 0, 6.33, 0, 12.66, 69.62, 0, 69.62], [0, 69.62, 0, 0, 12.66, 0, 12.66, 69.62, 0, 69.62], [0, 69.62, 0, 0, 12.66, 0, 12.66, 69.62, 0, 69.62], [0, 69.62, 0, 0, 12.66, 0, 12.66, 69.62, 0, 69.62], [0, 0, 12.66, 0, 12.66, 69.62, 0, 69.62, 0, 0], [12.66, 158.23, 0, 158.23, 0, 0, 12.66, 0, 12.66, 158.23], [0, 0, 12.66, 0, 12.66, 18.99, 0, 18.99, 0, 0], [0, 0, 12.66, 0, 12.66, 12.66, 12.66, 18.99, 0, 18.99, 0, 0], [0, 0, 12.66, 0, 12.66, 18.99, 0, 18.99, 0, 0], [0, 0, 12.66, 0, 12.66, 12.66, 12.66, 18.99, 0, 18.99, 0, 0], [0, 158.23, 0, 0, 12.66, 0, 12.66, 158.23, 0, 158.23], [56.96, 0, 120.25, 94.94, 0, 94.94, 56.96, 0], [0, 31.65, 31.65, 0, 88.61, 82.28, 63.29, 126.58, 0, 31.65], [0, 0, 278.48, 6.33, 221.52, 88.61, 56.96, 82.28, 0, 0], [12.66, 0, 44.3, 0, 31.65, 18.99, 0, 18.99, 12.66, 0], [25.32, 0, 37.97, 12.66, 0, 12.66, 0, 0, 25.32, 0], [25.32, 0, 31.65, 0, 31.65, 18.99, 0, 18.99, 0, 0, 25.32, 0], [12.66, 0, 50.63, 0, 44.3, 18.99, 0, 18.99, 12.66, 0], [12.66, 0, 18.99, 0, 25.32, 25.32, 0, 25.32, 12.66, 0], [6.33, 0, 31.65, 0, 37.97, 6.33, 0, 6.33, 6.33, 0], [6.33, 6.33, 31.65, 6.33, 31.65, 0, 44.3, 0, 37.97, 6.33, 37.97, 12.66, 0, 12.66, 0, 6.33, 6.33, 6.33], [0, 18.99, 12.66, 0, 44.3, 0, 37.97, 18.99, 0, 18.99], [0, 0, 44.3, 0, 44.3, 6.33, 0, 6.33, 0, 0], [6.33, 6.33, 69.62, 6.33, 75.95, 0, 113.92, 0, 120.25, 0, 126.58, 6.33, 253.16, 6.33, 253.16, 12.66, 0, 12.66, 6.33, 6.33], [44.3, 12.66, 44.3, 18.99, 44.3, 25.32, 44.3, 31.65, 31.65, 37.97, 25.32, 37.97, 18.99, 37.97, 12.66, 37.97, 6.33, 31.65, 0, 25.32, 0, 18.99, 0, 12.66, 6.33, 6.33, 12.66, 0, 18.99, 0, 25.32, 0, 37.97, 6.33, 44.3, 12.66], [0, 0, 6.33, 12.66, 0, 18.99, 0, 0], [0, 0, 25.32, 6.33, 18.99, 12.66, 0, 0], [0, 6.33, 25.32, 0, 25.32, 6.33, 0, 6.33], [0, 18.99, 25.32, 0, 31.65, 0, 0, 18.99], [0, 31.65, 18.99, 0, 25.32, 0, 31.65, 0, 0, 31.65], [6.33, 0, 6.33, 12.66, 0, 12.66, 6.33, 0], [12.66, 6.33, 25.32, 0, 6.33, 18.99, 0, 12.66, 12.66, 6.33], [0, 12.66, 18.99, 0, 0, 18.99, 0, 12.66], [0, 6.33, 37.97, 0, 0, 12.66, 0, 6.33], [0, 0, 44.3, 12.66, 0, 6.33, 0, 0], [12.66, 25.32, 0, 0, 12.66, 0, 12.66, 25.32], [0, 6.33, 12.66, 0, 25.32, 25.32, 18.99, 31.65, 0, 6.33], [221.52, 0, 126.58, 18.99, 246.84, 31.65, 0, 31.65, 12.66, 0, 221.52, 0], [113.92, 0, 113.92, 31.65, 0, 18.99, 82.28, 0, 113.92, 0], [164.56, 0, 170.89, 0, 164.56, 18.99, 25.32, 18.99, 0, 18.99, 12.66, 0, 164.56, 0], [0, 12.66, 25.32, 6.33, 170.89, 0, 170.89, 25.32, 6.33, 18.99, 0, 12.66], [0, 0, 189.87, 6.33, 6.33, 25.32, 18.99, 12.66, 0, 0], [0, 0, 253.16, 0, 253.16, 12.66, 0, 6.33, 0, 0], [0, 12.66, 101.27, 0, 101.27, 12.66, 0, 12.66], [0, 0, 101.27, 12.66, 6.33, 12.66, 0, 0], [0, 0, 196.2, 0, 202.53, 0, 202.53, 25.32, 120.25, 31.65, 196.2, 12.66, 0, 0], [6.33, 0, 75.95, 0, 0, 12.66, 0, 0, 6.33, 0], [50.63, 0, 56.96, 0, 44.3, 6.33, 0, 6.33, 50.63, 0], [0, 0, 31.65, 0, 107.59, 0, 107.59, 12.66, 18.99, 18.99, 0, 0], [18.99, 6.33, 69.62, 0, 69.62, 18.99, 0, 18.99, 56.96, 6.33, 18.99, 6.33], [0, 0, 37.97, 0, 12.66, 12.66, 0, 0], [0, 0, 12.66, 12.66, 12.66, 25.32, 0, 25.32, 0, 0], [31.65, 12.66, 31.65, 18.99, 0, 18.99, 18.99, 0, 31.65, 12.66], [0, 18.99, 25.32, 0, 18.99, 18.99, 0, 18.99], [0, 0, 37.97, 0, 31.65, 12.66, 12.66, 12.66, 6.33, 12.66, 25.32, 25.32, 25.32, 31.65, 6.33, 37.97, 25.32, 44.3, 18.99, 50.63, 12.66, 56.96, 0, 69.62, 0, 0], [0, 6.33, 0, 0, 12.66, 0, 12.66, 12.66, 18.99, 12.66, 25.32, 6.33, 44.3, 6.33, 44.3, 12.66, 75.95, 12.66, 56.96, 31.65, 0, 31.65, 0, 6.33], [0, 0, 50.63, 0, 6.33, 82.28, 0, 82.28, 0, 0], [0, 0, 69.62, 0, 69.62, 69.62, 50.63, 69.62, 50.63, 56.96, 0, 0], [0, 0, 18.99, 0, 18.99, 151.9, 0, 158.23, 0, 0], [0, 0, 6.33, 0, 6.33, 164.56, 0, 158.23, 0, 0], [0, 0, 506.33, 0, 506.33, 44.3, 0, 44.3, 0, 0]], [[0, 0, 126.58, 0, 126.58, 50.63, 63.29, 50.63, 0, 0], [0, 0, 126.58, 0, 126.58, 50.63, 63.29, 50.63, 0, 0], [0, 50.63, 0, 0, 126.58, 0, 63.29, 50.63, 0, 50.63], [0, 0, 126.58, 0, 126.58, 50.63, 0, 50.63, 0, 0], [63.29, 50.63, 0, 50.63, 0, 44.3, 0, 0, 126.58, 0, 63.29, 50.63], [0, 6.33, 0, 0, 12.66, 0, 12.66, 101.27, 0, 101.27, 0, 6.33], [0, 0, 12.66, 0, 12.66, 101.27, 0, 101.27, 0, 0], [0, 50.63, 56.96, 0, 56.96, 50.63, 0, 50.63], [0, 50.63, 63.29, 0, 63.29, 50.63, 0, 50.63], [0, 0, 56.96, 0, 56.96, 50.63, 0, 50.63, 0, 0], [0, 6.33, 0, 0, 25.32, 0, 25.32, 50.63, 0, 50.63, 0, 6.33], [63.29, 0, 63.29, 6.33, 63.29, 50.63, 0, 50.63, 63.29, 0], [0, 25.32, 0, 0, 31.65, 0, 31.65, 6.33, 31.65, 25.32, 0, 25.32], [0, 25.32, 0, 0, 6.33, 0, 63.29, 0, 63.29, 25.32, 0, 25.32], [0, 25.32, 31.65, 0, 31.65, 50.63, 0, 25.32], [0, 0, 63.29, 0, 31.65, 25.32, 0, 0], [0, 6.33, 0, 0, 31.65, 25.32, 0, 25.32, 0, 6.33], [0, 6.33, 0, 0, 25.32, 25.32, 0, 25.32, 0, 6.33], [0, 0, 56.96, 50.63, 25.32, 50.63, 25.32, 25.32, 0, 25.32, 0, 0], [0, 0, 63.29, 50.63, 18.99, 50.63, 18.99, 25.32, 0, 25.32, 0, 0], [0, 0, 63.29, 50.63, 0, 50.63, 0, 0], [25.32, 25.32, 0, 56.96, 0, 0, 25.32, 0, 25.32, 25.32], [0, 25.32, 18.99, 0, 50.63, 0, 50.63, 12.66, 31.65, 12.66, 31.65, 25.32, 0, 25.32], [25.32, 0, 56.96, 0, 56.96, 50.63, 31.65, 50.63, 31.65, 25.32, 0, 25.32, 25.32, 0], [0, 0, 18.99, 0, 18.99, 12.66, 0, 12.66, 0, 0], [0, 0, 6.33, 0, 6.33, 25.32, 50.63, 25.32, 50.63, 75.95, 0, 50.63, 0, 0], [12.66, 25.32, 0, 50.63, 0, 6.33, 6.33, 0, 37.97, 0, 12.66, 25.32], [0, 25.32, 12.66, 0, 44.3, 0, 44.3, 25.32, 37.97, 50.63, 0, 25.32], [0, 25.32, 0, 18.99, 0, 0, 37.97, 25.32, 31.65, 25.32, 0, 25.32], [6.33, 25.32, 0, 25.32, 6.33, 0, 12.66, 0, 37.97, 6.33, 82.28, 25.32, 75.95, 25.32, 6.33, 25.32], [18.99, 18.99, 63.29, 0, 63.29, 31.65, 18.99, 31.65, 82.28, 69.62, 0, 37.97, 18.99, 18.99], [18.99, 12.66, 31.65, 0, 50.63, 0, 37.97, 50.63, 12.66, 63.29, 0, 25.32, 18.99, 12.66], [0, 18.99, 25.32, 0, 18.99, 31.65, 31.65, 63.29, 31.65, 82.28, 0, 50.63, 0, 18.99], [0, 0, 44.3, 0, 6.33, 25.32, 0, 25.32, 0, 0], [0, 0, 37.97, 0, 37.97, 25.32, 0, 0], [0, 0, 56.96, 25.32, 82.28, 12.66, 82.28, 31.65, 25.32, 37.97, 0, 0], [0, 18.99, 37.97, 0, 82.28, 31.65, 63.29, 44.3, 31.65, 18.99, 6.33, 31.65, 0, 18.99], [6.33, 12.66, 50.63, 0, 69.62, 44.3, 44.3, 63.29, 0, 18.99, 6.33, 12.66], [6.33, 0, 44.3, 18.99, 50.63, 31.65, 18.99, 18.99, 18.99, 44.3, 0, 31.65, 6.33, 0], [0, 18.99, 18.99, 25.32, 12.66, 12.66, 31.65, 0, 37.97, 6.33, 31.65, 12.66, 37.97, 37.97, 0, 44.3, 0, 18.99], [0, 18.99, 25.32, 0, 50.63, 31.65, 37.97, 50.63, 25.32, 25.32, 6.33, 31.65, 0, 18.99], [0, 18.99, 25.32, 0, 18.99, 12.66, 69.62, 6.33, 69.62, 31.65, 31.65, 25.32, 18.99, 37.97, 6.33, 31.65, 0, 18.99], [6.33, 25.32, 31.65, 50.63, 44.3, 0, 56.96, 6.33, 56.96, 31.65, 69.62, 56.96, 31.65, 63.29, 0, 44.3, 6.33, 25.32], [0, 6.33, 25.32, 0, 50.63, 18.99, 82.28, 18.99, 75.95, 37.97, 0, 6.33], [6.33, 25.32, 0, 0, 25.32, 12.66, 6.33, 25.32], [0, 12.66, 0, 0, 63.29, 0, 63.29, 12.66, 63.29, 18.99, 0, 12.66], [56.96, 37.97, 0, 37.97, 0, 18.99, 37.97, 18.99, 56.96, 0, 56.96, 37.97], [6.33, 18.99, 37.97, 0, 50.63, 18.99, 44.3, 37.97, 25.32, 25.32, 0, 25.32, 6.33, 18.99], [0, 25.32, 31.65, 0, 37.97, 25.32, 12.66, 31.65, 37.97, 56.96, 0, 63.29, 0, 37.97, 0, 25.32], [0, 6.33, 18.99, 0, 50.63, 18.99, 37.97, 31.65, 12.66, 44.3, 0, 31.65, 0, 6.33], [0, 18.99, 31.65, 0, 31.65, 50.63, 0, 18.99], [12.66, 25.32, 0, 6.33, 18.99, 0, 31.65, 25.32, 44.3, 37.97, 12.66, 25.32], [18.99, 31.65, 12.66, 31.65, 0, 25.32, 25.32, 12.66, 37.97, 0, 50.63, 12.66, 18.99, 31.65], [0, 0, 50.63, 0, 50.63, 18.99, 0, 0], [0, 6.33, 12.66, 0, 31.65, 18.99, 56.96, 0, 63.29, 6.33, 25.32, 31.65, 0, 6.33], [0, 0, 12.66, 0, 31.65, 12.66, 44.3, 0, 56.96, 0, 31.65, 25.32, 0, 0], [12.66, 0, 25.32, 6.33, 12.66, 31.65, 37.97, 31.65, 37.97, 37.97, 0, 37.97, 12.66, 0], [0, 12.66, 6.33, 6.33, 25.32, 18.99, 37.97, 0, 50.63, 0, 25.32, 31.65, 0, 12.66], [0, 0, 6.33, 0, 6.33, 12.66, 0, 12.66, 0, 0], [0, 0, 6.33, 0, 6.33, 12.66, 0, 12.66, 0, 0], [12.66, 0, 12.66, 6.33, 6.33, 6.33, 0, 0, 12.66, 0], [0, 0, 6.33, 0, 6.33, 12.66, 0, 12.66, 0, 0]], [[0, 398.73, 0, 0, 6.33, 0, 6.33, 398.73, 0, 398.73], [0, 348.1, 0, 0, 6.33, 0, 6.33, 348.1, 0, 348.1], [0, 31.65, 0, 0, 25.32, 0, 25.32, 12.66, 0, 31.65], [0, 0, 417.72, 0, 417.72, 6.33, 0, 6.33, 0, 0], [0, 6.33, 0, 0, 417.72, 0, 417.72, 6.33, 0, 6.33], [0, 0, 417.72, 0, 417.72, 6.33, 0, 6.33, 0, 0], [0, 0, 25.32, 0, 25.32, 18.99, 0, 18.99, 0, 0], [0, 12.66, 0, 0, 56.96, 0, 56.96, 12.66, 0, 12.66], [0, 0, 37.97, 0, 37.97, 6.33, 37.97, 37.97, 31.65, 37.97, 0, 0], [12.66, 0, 12.66, 310.13, 0, 310.13, 0, 0, 12.66, 0], [6.33, 0, 12.66, 6.33, 18.99, 6.33, 18.99, 360.76, 0, 360.76, 6.33, 0], [0, 25.32, 25.32, 0, 25.32, 25.32, 0, 25.32], [417.72, 6.33, 0, 6.33, 0, 0, 424.05, 0, 417.72, 6.33], [335.44, 6.33, 0, 6.33, 0, 0, 335.44, 0, 335.44, 6.33], [0, 0, 31.65, 31.65, 6.33, 31.65, 0, 0], [0, 0, 25.32, 0, 25.32, 6.33, 0, 12.66, 0, 0], [0, 31.65, 0, 0, 31.65, 0, 0, 31.65], [0, 253.16, 0, 0, 6.33, 0, 12.66, 253.16, 0, 253.16], [0, 0, 360.76, 0, 360.76, 6.33, 6.33, 6.33, 0, 0], [0, 0, 25.32, 25.32, 0, 25.32, 0, 0], [0, 0, 25.32, 0, 25.32, 6.33, 0, 6.33, 0, 0], [0, 0, 12.66, 0, 12.66, 18.99, 0, 18.99, 0, 0], [0, 0, 25.32, 0, 25.32, 12.66, 0, 12.66, 0, 0], [0, 0, 6.33, 0, 6.33, 18.99, 0, 18.99, 0, 0], [0, 0, 12.66, 0, 12.66, 6.33, 37.97, 6.33, 37.97, 0, 50.63, 0, 50.63, 25.32, 0, 25.32, 0, 0], [50.63, 50.63, 44.3, 50.63, 44.3, 31.65, 37.97, 31.65, 37.97, 18.99, 12.66, 18.99, 12.66, 31.65, 0, 31.65, 0, 0, 50.63, 0, 50.63, 50.63], [0, 0, 50.63, 0, 50.63, 6.33, 0, 6.33, 0, 0], [0, 0, 50.63, 0, 50.63, 6.33, 0, 6.33, 0, 0], [0, 0, 50.63, 0, 50.63, 6.33, 0, 6.33, 0, 0], [0, 0, 6.33, 0, 6.33, 94.94, 0, 94.94, 0, 0], [0, 0, 6.33, 0, 6.33, 94.94, 0, 94.94, 0, 0], [0, 0, 6.33, 0, 6.33, 94.94, 0, 94.94, 0, 0], [0, 0, 6.33, 0, 6.33, 94.94, 0, 94.94, 0, 0], [6.33, 158.23, 0, 158.23, 0, 0, 6.33, 0, 6.33, 158.23], [6.33, 158.23, 0, 158.23, 0, 0, 6.33, 0, 6.33, 158.23], [18.99, 158.23, 0, 158.23, 0, 0, 18.99, 0, 18.99, 158.23], [0, 0, 18.99, 0, 18.99, 158.23, 0, 158.23, 0, 0], [82.28, 6.33, 88.61, 6.33, 88.61, 25.32, 6.33, 25.32, 0, 0, 6.33, 6.33, 82.28, 6.33], [18.99, 37.97, 6.33, 164.56, 0, 0, 6.33, 25.32, 18.99, 37.97], [12.66, 12.66, 0, 0, 82.28, 0, 82.28, 12.66, 12.66, 12.66], [0, 63.29, 6.33, 0, 75.95, 0, 75.95, 63.29, 0, 63.29], [0, 0, 63.29, 6.33, 50.63, 44.3, 0, 0], [0, 0, 12.66, 18.99, 6.33, 31.65, 0, 0], [0, 0, 12.66, 18.99, 0, 18.99, 0, 0], [0, 0, 25.32, 12.66, 12.66, 18.99, 0, 0], [0, 25.32, 12.66, 0, 44.3, 31.65, 0, 25.32], [0, 12.66, 31.65, 0, 37.97, 12.66, 0, 12.66], [0, 6.33, 50.63, 0, 31.65, 44.3, 0, 6.33], [0, 31.65, 56.96, 0, 44.3, 37.97, 0, 31.65], [0, 44.3, 50.63, 0, 44.3, 56.96, 0, 44.3]], [[126.58, 0, 253.16, 50.63, 126.58, 101.27, 0, 50.63, 126.58, 0], [126.58, 50.63, 0, 50.63, 126.58, 0, 126.58, 50.63], [126.58, 0, 126.58, 50.63, 0, 0, 126.58, 0], [0, 0, 126.58, 0, 0, 50.63, 0, 0], [0, 0, 126.58, 50.63, 0, 50.63, 0, 0], [126.58, 50.63, 0, 50.63, 63.29, 0, 126.58, 50.63], [63.29, 0, 126.58, 50.63, 0, 50.63, 63.29, 0], [0, 101.27, 0, 0, 63.29, 50.63, 0, 101.27], [63.29, 101.27, 0, 50.63, 63.29, 0, 63.29, 101.27], [126.58, 0, 63.29, 50.63, 0, 0, 6.33, 0, 126.58, 0], [0, 0, 126.58, 0, 63.29, 50.63, 0, 0], [63.29, 0, 63.29, 101.27, 0, 50.63, 63.29, 0], [0, 0, 63.29, 50.63, 0, 101.27, 0, 0], [0, 0, 253.16, 0, 126.58, 50.63, 0, 0], [0, 50.63, 0, 0, 126.58, 50.63, 0, 50.63], [0, 50.63, 126.58, 0, 126.58, 50.63, 0, 50.63], [63.29, 50.63, 0, 0, 63.29, 0, 63.29, 50.63], [0, 0, 63.29, 0, 0, 50.63, 0, 0], [0, 50.63, 0, 0, 63.29, 50.63, 0, 50.63], [63.29, 0, 63.29, 50.63, 0, 50.63, 63.29, 0], [0, 50.63, 0, 0, 63.29, 0, 0, 50.63], [56.96, 50.63, 0, 50.63, 0, 0, 63.29, 50.63, 56.96, 50.63], [0, 50.63, 63.29, 0, 63.29, 50.63, 0, 50.63], [63.29, 50.63, 0, 0, 63.29, 0, 63.29, 50.63], [126.58, 0, 253.16, 101.27, 0, 101.27, 126.58, 0], [0, 0, 94.94, 0, 94.94, 18.99, 0, 18.99, 0, 0], [0, 25.32, 0, 0, 94.94, 0, 94.94, 25.32, 0, 25.32]], [[0, 0, 506.33, 0, 506.33, 101.27, 474.68, 151.9, 443.04, 101.27, 411.39, 151.9, 379.75, 101.27, 348.1, 151.9, 316.46, 101.27, 284.81, 151.9, 253.16, 101.27, 221.52, 151.9, 189.87, 101.27, 158.23, 151.9, 126.58, 101.27, 94.94, 151.9, 63.29, 101.27, 31.65, 151.9, 0, 101.27, 0, 0], [0, 50.63, 31.65, 0, 63.29, 50.63, 0, 50.63], [0, 50.63, 31.65, 0, 63.29, 50.63, 0, 50.63], [0, 44.3, 31.65, 0, 31.65, 44.3, 0, 44.3], [0, 50.63, 31.65, 0, 63.29, 50.63, 0, 50.63], [0, 50.63, 31.65, 0, 63.29, 50.63, 0, 50.63], [0, 50.63, 31.65, 0, 63.29, 50.63, 0, 50.63], [0, 50.63, 31.65, 0, 63.29, 50.63, 0, 50.63], [0, 50.63, 31.65, 0, 63.29, 50.63, 0, 50.63], [0, 50.63, 0, 0, 31.65, 50.63, 0, 50.63], [63.29, 6.33, 0, 107.59, 0, 0, 506.33, 0, 506.33, 107.59, 443.04, 6.33, 379.75, 107.59, 316.46, 6.33, 253.16, 107.59, 189.87, 6.33, 126.58, 107.59, 63.29, 6.33], [0, 82.28, 50.63, 0, 101.27, 82.28, 0, 82.28], [0, 82.28, 50.63, 0, 101.27, 82.28, 0, 82.28], [0, 82.28, 50.63, 0, 101.27, 82.28, 0, 82.28], [0, 82.28, 50.63, 0, 101.27, 82.28, 0, 82.28], [126.58, 0, 0, 94.94, 0, 0, 126.58, 0], [0, 0, 126.58, 0, 126.58, 94.94, 0, 0], [0, 75.95, 75.95, 0, 310.13, 0, 379.75, 75.95, 0, 75.95]], [[126.58, 50.63, 0, 50.63, 0, 0, 126.58, 0, 126.58, 50.63], [126.58, 50.63, 0, 50.63, 0, 0, 126.58, 0, 126.58, 50.63], [0, 101.27, 126.58, 0, 126.58, 101.27, 0, 101.27], [126.58, 101.27, 0, 101.27, 0, 0, 126.58, 101.27], [0, 50.63, 63.29, 0, 63.29, 101.27, 0, 50.63], [0, 101.27, 0, 0, 63.29, 50.63, 0, 101.27], [0, 0, 126.58, 0, 126.58, 50.63, 63.29, 101.27, 0, 50.63, 0, 0], [0, 0, 126.58, 0, 126.58, 50.63, 63.29, 101.27, 0, 50.63, 0, 0], [0, 0, 126.58, 0, 126.58, 101.27, 0, 0], [126.58, 0, 0, 101.27, 0, 0, 126.58, 0], [0, 50.63, 63.29, 0, 126.58, 50.63, 0, 50.63], [0, 0, 63.29, 0, 126.58, 50.63, 0, 50.63, 0, 0], [63.29, 0, 126.58, 0, 126.58, 50.63, 0, 50.63, 63.29, 0], [0, 0, 126.58, 50.63, 126.58, 0, 253.16, 50.63, 253.16, 101.27, 0, 101.27, 0, 0], [0, 0, 126.58, 0, 126.58, 50.63, 0, 0], [0, 0, 126.58, 0, 126.58, 44.3, 126.58, 50.63, 0, 0], [0, 94.94, 0, 50.63, 126.58, 0, 126.58, 50.63, 253.16, 0, 253.16, 101.27, 0, 101.27, 0, 94.94], [0, 0, 126.58, 0, 0, 50.63, 0, 0], [0, 0, 126.58, 0, 0, 50.63, 0, 0]], [[132.91, 37.97, 31.65, 145.57, 0, 44.3, 82.28, 0, 132.91, 37.97], [0, 37.97, 88.61, 0, 164.56, 44.3, 75.95, 94.94, 0, 37.97], [101.27, 0, 227.85, 94.94, 101.27, 158.23, 0, 107.59, 101.27, 0], [113.92, 0, 132.91, 94.94, 75.95, 208.86, 0, 126.58, 75.95, 88.61, 25.32, 50.63, 113.92, 0], [253.16, 56.96, 126.58, 145.57, 0, 0, 126.58, 75.95, 253.16, 56.96], [25.32, 0, 120.25, 44.3, 170.89, 18.99, 246.84, 101.27, 120.25, 120.25, 0, 44.3, 25.32, 0], [31.65, 151.9, 0, 50.63, 25.32, 0, 56.96, 107.59, 56.96, 113.92, 50.63, 126.58, 50.63, 126.58, 31.65, 151.9], [88.61, 246.84, 75.95, 246.84, 94.94, 202.53, 75.95, 101.27, 0, 63.29, 113.92, 0, 164.56, 0, 164.56, 202.53, 88.61, 246.84], [50.63, 44.3, 126.58, 0, 126.58, 202.53, 0, 202.53, 0, 113.92, 37.97, 44.3, 50.63, 44.3], [0, 0, 202.53, 0, 88.61, 63.29, 0, 0], [0, 0, 82.28, 63.29, 0, 101.27, 0, 94.94, 0, 0], [0, 88.61, 120.25, 0, 120.25, 88.61, 0, 88.61], [120.25, 145.57, 0, 145.57, 0, 0, 120.25, 145.57], [0, 164.56, 0, 0, 120.25, 0, 120.25, 164.56, 0, 164.56], [0, 0, 126.58, 0, 107.59, 18.99, 107.59, 31.65, 94.94, 50.63, 94.94, 75.95, 113.92, 132.91, 0, 132.91, 0, 0], [0, 94.94, 0, 0, 126.58, 0, 139.24, 94.94, 0, 94.94], [0, 0, 113.92, 0, 113.92, 94.94, 69.62, 63.29, 6.33, 88.61, 0, 0], [6.33, 0, 6.33, 37.97, 0, 0, 6.33, 0], [0, 0, 113.92, 0, 113.92, 6.33, 0, 6.33, 0, 0], [120.25, 0, 139.24, 0, 126.58, 6.33, 0, 6.33, 0, 0, 120.25, 0], [0, 18.99, 50.63, 0, 12.66, 18.99, 0, 18.99], [0, 0, 12.66, 0, 0, 6.33, 0, 0]], [[0, 0, 126.58, 0, 126.58, 101.27, 0, 101.27, 0, 0], [0, 0, 63.29, 0, 63.29, 101.27, 6.33, 101.27, 0, 101.27, 0, 0], [6.33, 0, 63.29, 0, 63.29, 101.27, 0, 101.27, 0, 0, 6.33, 0], [0, 0, 253.16, 0, 253.16, 50.63, 0, 50.63, 0, 0], [0, 202.53, 63.29, 202.53, 63.29, 50.63, 0, 50.63, 0, 0, 126.58, 0, 126.58, 253.16, 0, 253.16, 0, 202.53], [126.58, 202.53, 126.58, 253.16, 0, 253.16, 0, 50.63, 0, 0, 126.58, 0, 126.58, 50.63, 63.29, 50.63, 63.29, 202.53, 126.58, 202.53], [0, 0, 126.58, 0, 126.58, 50.63, 63.29, 101.27, 0, 50.63, 0, 0], [0, 50.63, 63.29, 0, 126.58, 0, 0, 50.63], [126.58, 50.63, 0, 0, 63.29, 0, 126.58, 50.63], [0, 50.63, 63.29, 0, 126.58, 50.63, 126.58, 101.27, 0, 101.27, 0, 50.63], [0, 0, 126.58, 50.63, 63.29, 50.63, 0, 0], [113.92, 6.33, 126.58, 0, 63.29, 50.63, 0, 50.63, 113.92, 6.33], [0, 126.58, 0, 0, 37.97, 0, 0, 126.58], [0, 0, 37.97, 126.58, 0, 126.58, 0, 0], [0, 0, 31.65, 0, 31.65, 126.58, 0, 0], [6.33, 101.27, 31.65, 0, 31.65, 126.58, 0, 126.58, 6.33, 101.27], [189.87, 50.63, 183.54, 50.63, 120.25, 50.63, 0, 0, 189.87, 50.63], [25.32, 44.3, 189.87, 0, 63.29, 50.63, 0, 50.63, 25.32, 44.3], [0, 0, 69.62, 0, 189.87, 50.63, 0, 0], [0, 50.63, 126.58, 0, 189.87, 0, 0, 50.63], [0, 126.58, 0, 0, 31.65, 0, 63.29, 126.58, 253.16, 177.22, 0, 126.58], [31.65, 0, 63.29, 50.63, 31.65, 177.22, 0, 177.22, 0, 50.63, 31.65, 0], [63.29, 164.56, 63.29, 177.22, 37.97, 177.22, 0, 50.63, 25.32, 0, 63.29, 50.63, 63.29, 164.56], [0, 177.22, 183.54, 126.58, 221.52, 0, 246.84, 0, 246.84, 126.58, 0, 177.22], [215.19, 0, 189.87, 50.63, 0, 0, 215.19, 0], [221.52, 0, 31.65, 50.63, 0, 0, 221.52, 0], [0, 0, 31.65, 0, 0, 50.63, 0, 0], [0, 0, 37.97, 0, 37.97, 50.63, 0, 0]], [[0, 12.66, 0, 0, 259.49, 0, 0, 158.23, 0, 12.66], [0, 0, 246.84, 6.33, 246.84, 170.89, 0, 0], [0, 50.63, 75.95, 0, 145.57, 50.63, 69.62, 126.58, 0, 50.63], [0, 44.3, 44.3, 0, 88.61, 37.97, 44.3, 75.95, 0, 44.3], [0, 37.97, 31.65, 0, 75.95, 31.65, 44.3, 69.62, 0, 37.97], [0, 0, 63.29, 0, 31.65, 44.3, 0, 0], [0, 0, 196.2, 0, 158.23, 37.97, 126.58, 50.63, 69.62, 50.63, 31.65, 37.97, 0, 0], [0, 37.97, 37.97, 0, 82.28, 37.97, 0, 37.97], [0, 37.97, 31.65, 0, 75.95, 37.97, 0, 37.97], [0, 18.99, 25.32, 0, 50.63, 44.3, 18.99, 56.96, 0, 18.99], [6.33, 0, 12.66, 0, 44.3, 18.99, 37.97, 44.3, 0, 25.32, 6.33, 0], [75.95, 0, 139.24, 69.62, 25.32, 88.61, 0, 44.3, 75.95, 0], [6.33, 63.29, 0, 63.29, 50.63, 0, 107.59, 37.97, 101.27, 63.29, 6.33, 63.29], [56.96, 37.97, 75.95, 25.32, 63.29, 6.33, 63.29, 6.33, 63.29, 6.33, 82.28, 31.65, 139.24, 221.52, 94.94, 158.23, 94.94, 253.16, 56.96, 170.89, 25.32, 253.16, 18.99, 164.56, 0, 221.52, 0, 126.58, 63.29, 0, 56.96, 37.97], [6.33, 0, 18.99, 12.66, 0, 25.32, 6.33, 0], [6.33, 0, 25.32, 25.32, 0, 31.65, 6.33, 0], [50.63, 25.32, 56.96, 0, 126.58, 82.28, 126.58, 227.85, 101.27, 126.58, 82.28, 265.82, 75.95, 221.52, 69.62, 126.58, 18.99, 208.86, 50.63, 101.27, 0, 145.57, 50.63, 25.32]], [[0, 44.3, 18.99, 12.66, 75.95, 0, 113.92, 25.32, 120.25, 63.29, 88.61, 88.61, 37.97, 94.94, 18.99, 69.62, 0, 44.3], [0, 37.97, 12.66, 0, 25.32, 6.33, 0, 37.97], [0, 31.65, 56.96, 0, 56.96, 25.32, 0, 31.65], [0, 25.32, 56.96, 0, 56.96, 25.32, 6.33, 25.32, 0, 25.32], [0, 0, 31.65, 37.97, 6.33, 44.3, 0, 0], [0, 0, 50.63, 6.33, 50.63, 31.65, 0, 0], [0, 0, 56.96, 31.65, 56.96, 56.96, 0, 0], [0, 0, 25.32, 44.3, 0, 50.63, 0, 0], [18.99, 0, 18.99, 44.3, 0, 44.3, 18.99, 0], [0, 0, 12.66, 69.62, 0, 69.62, 0, 0], [31.65, 0, 18.99, 63.29, 0, 63.29, 31.65, 0], [0, 0, 12.66, 44.3, 0, 44.3, 0, 0], [44.3, 0, 6.33, 37.97, 0, 12.66, 44.3, 0], [50.63, 0, 0, 12.66, 0, 0, 50.63, 0], [37.97, 18.99, 0, 12.66, 0, 0, 37.97, 18.99], [31.65, 31.65, 0, 6.33, 12.66, 0, 31.65, 31.65], [12.66, 25.32, 0, 0, 12.66, 6.33, 12.66, 25.32], [25.32, 31.65, 0, 18.99, 0, 0, 25.32, 31.65], [6.33, 18.99, 0, 0, 12.66, 6.33, 6.33, 18.99], [0, 12.66, 6.33, 0, 18.99, 0, 0, 12.66], [0, 0, 44.3, 37.97, 31.65, 50.63, 0, 0], [6.33, 0, 6.33, 12.66, 0, 6.33, 6.33, 0], [0, 0, 12.66, 6.33, 0, 12.66, 0, 0], [0, 6.33, 0, 0, 12.66, 6.33, 0, 6.33], [12.66, 0, 6.33, 6.33, 0, 0, 12.66, 0], [0, 6.33, 6.33, 0, 6.33, 6.33, 0, 6.33], [0, 6.33, 12.66, 0, 12.66, 18.99, 0, 6.33], [12.66, 18.99, 0, 0, 12.66, 0, 12.66, 18.99], [0, 18.99, 0, 0, 12.66, 12.66, 0, 18.99], [0, 12.66, 6.33, 0, 6.33, 25.32, 0, 12.66], [50.63, 0, 6.33, 25.32, 0, 18.99, 50.63, 0], [0, 0, 37.97, 12.66, 31.65, 18.99, 0, 0], [6.33, 0, 12.66, 50.63, 0, 50.63, 6.33, 0], [0, 31.65, 25.32, 0, 37.97, 6.33, 0, 31.65], [31.65, 44.3, 0, 6.33, 12.66, 0, 31.65, 44.3], [6.33, 0, 6.33, 69.62, 0, 63.29, 6.33, 0], [0, 6.33, 6.33, 0, 12.66, 6.33, 0, 6.33], [12.66, 31.65, 0, 0, 12.66, 0, 12.66, 31.65], [6.33, 6.33, 50.63, 0, 0, 12.66, 6.33, 6.33], [0, 12.66, 37.97, 0, 37.97, 18.99, 0, 12.66], [31.65, 25.32, 0, 6.33, 12.66, 0, 31.65, 25.32], [6.33, 50.63, 0, 12.66, 12.66, 0, 18.99, 0, 6.33, 37.97, 6.33, 50.63], [0, 50.63, 0, 37.97, 25.32, 6.33, 12.66, 0, 37.97, 0, 12.66, 31.65, 0, 50.63], [0, 50.63, 12.66, 31.65, 50.63, 6.33, 44.3, 0, 94.94, 0, 94.94, 12.66, 63.29, 12.66, 6.33, 44.3, 0, 50.63], [12.66, 31.65, 0, 12.66, 6.33, 18.99, 6.33, 6.33, 6.33, 0, 12.66, 31.65], [0, 6.33, 6.33, 0, 18.99, 0, 18.99, 6.33, 12.66, 12.66, 25.32, 12.66, 18.99, 18.99, 25.32, 18.99, 18.99, 25.32, 31.65, 37.97, 25.32, 44.3, 12.66, 50.63, 6.33, 12.66, 0, 6.33], [0, 31.65, 44.3, 25.32, 44.3, 0, 75.95, 0, 75.95, 88.61, 63.29, 88.61, 63.29, 75.95, 12.66, 69.62, 0, 56.96, 56.96, 56.96, 56.96, 31.65, 12.66, 50.63, 6.33, 44.3, 44.3, 31.65, 0, 37.97, 0, 31.65], [0, 0, 6.33, 6.33, 0, 6.33, 0, 0], [0, 12.66, 18.99, 0, 18.99, 12.66, 0, 12.66], [0, 0, 31.65, 12.66, 12.66, 12.66, 0, 0], [12.66, 6.33, 0, 0, 6.33, 0, 50.63, 25.32, 50.63, 37.97, 25.32, 37.97, 6.33, 12.66, 25.32, 12.66, 12.66, 6.33], [12.66, 0, 25.32, 0, 25.32, 101.27, 0, 101.27, 6.33, 44.3, 6.33, 25.32, 12.66, 25.32, 12.66, 0], [25.32, 0, 31.65, 0, 37.97, 31.65, 63.29, 25.32, 75.95, 25.32, 82.28, 25.32, 44.3, 37.97, 82.28, 44.3, 75.95, 101.27, 31.65, 101.27, 50.63, 82.28, 56.96, 75.95, 56.96, 50.63, 0, 18.99, 18.99, 12.66, 25.32, 25.32, 25.32, 0], [25.32, 0, 37.97, 0, 31.65, 12.66, 12.66, 18.99, 69.62, 75.95, 63.29, 82.28, 18.99, 44.3, 50.63, 94.94, 44.3, 101.27, 31.65, 101.27, 25.32, 75.95, 0, 31.65, 0, 18.99, 25.32, 0], [0, 6.33, 50.63, 0, 50.63, 63.29, 75.95, 56.96, 82.28, 82.28, 44.3, 82.28, 31.65, 18.99, 31.65, 82.28, 25.32, 82.28, 25.32, 18.99, 18.99, 18.99, 12.66, 12.66, 0, 6.33], [6.33, 0, 18.99, 6.33, 12.66, 12.66, 31.65, 12.66, 31.65, 31.65, 25.32, 75.95, 25.32, 63.29, 25.32, 18.99, 0, 18.99, 6.33, 0], [37.97, 56.96, 0, 56.96, 0, 50.63, 12.66, 50.63, 0, 6.33, 12.66, 12.66, 25.32, 6.33, 12.66, 0, 37.97, 0, 18.99, 44.3, 37.97, 44.3, 37.97, 56.96], [12.66, 50.63, 6.33, 50.63, 0, 18.99, 12.66, 0, 12.66, 50.63], [0, 126.58, 12.66, 63.29, 18.99, 56.96, 25.32, 63.29, 25.32, 50.63, 6.33, 0, 44.3, 50.63, 37.97, 69.62, 37.97, 82.28, 25.32, 75.95, 12.66, 94.94, 6.33, 145.57, 6.33, 126.58, 0, 126.58], [25.32, 126.58, 0, 126.58, 0, 94.94, 12.66, 94.94, 50.63, 56.96, 6.33, 69.62, 6.33, 63.29, 50.63, 37.97, 0, 56.96, 0, 44.3, 50.63, 31.65, 0, 31.65, 0, 12.66, 31.65, 12.66, 37.97, 18.99, 44.3, 12.66, 50.63, 0, 69.62, 50.63, 56.96, 63.29, 25.32, 126.58], [0, 0, 6.33, 6.33, 6.33, 12.66, 12.66, 37.97, 0, 37.97, 0, 0], [0, 12.66, 0, 0, 37.97, 6.33, 50.63, 0, 44.3, 12.66, 0, 12.66], [0, 6.33, 6.33, 0, 37.97, 18.99, 50.63, 18.99, 37.97, 25.32, 0, 6.33], [37.97, 69.62, 0, 56.96, 0, 44.3, 25.32, 56.96, 0, 25.32, 0, 12.66, 31.65, 37.97, 12.66, 6.33, 18.99, 6.33, 50.63, 44.3, 31.65, 0, 44.3, 6.33, 63.29, 44.3, 44.3, 75.95, 31.65, 75.95, 37.97, 69.62], [0, 0, 37.97, 0, 25.32, 6.33, 18.99, 6.33, 6.33, 12.66, 6.33, 56.96, 0, 63.29, 0, 0], [0, 0, 31.65, 6.33, 44.3, 25.32, 44.3, 0, 56.96, 31.65, 88.61, 31.65, 31.65, 44.3, 25.32, 31.65, 25.32, 12.66, 0, 0], [44.3, 0, 44.3, 6.33, 31.65, 6.33, 0, 0, 44.3, 0], [0, 0, 6.33, 18.99, 12.66, 6.33, 18.99, 6.33, 18.99, 18.99, 31.65, 12.66, 18.99, 0, 69.62, 0, 63.29, 6.33, 50.63, 6.33, 44.3, 18.99, 56.96, 12.66, 56.96, 18.99, 31.65, 31.65, 0, 31.65, 0, 0], [0, 0, 18.99, 0, 18.99, 6.33, 12.66, 6.33, 0, 0], [0, 0, 50.63, 0, 50.63, 18.99, 18.99, 25.32, 0, 25.32, 0, 0], [0, 25.32, 25.32, 25.32, 50.63, 18.99, 63.29, 18.99, 63.29, 0, 63.29, 0, 107.59, 0, 107.59, 0, 107.59, 18.99, 113.92, 31.65, 0, 25.32], [0, 0, 113.92, 6.33, 107.59, 18.99, 0, 0], [0, 0, 6.33, 0, 6.33, 6.33, 18.99, 6.33, 18.99, 0, 63.29, 0, 63.29, 25.32, 25.32, 18.99, 0, 12.66, 0, 0], [6.33, 0, 69.62, 12.66, 101.27, 12.66, 101.27, 31.65, 0, 31.65, 6.33, 18.99, 6.33, 0], [6.33, 0, 12.66, 6.33, 6.33, 12.66, 0, 6.33, 6.33, 0], [6.33, 0, 12.66, 6.33, 6.33, 12.66, 0, 6.33, 6.33, 0], [6.33, 0, 12.66, 6.33, 6.33, 12.66, 0, 6.33, 6.33, 0], [6.33, 12.66, 0, 6.33, 6.33, 0, 12.66, 6.33, 6.33, 12.66], [6.33, 0, 12.66, 6.33, 6.33, 12.66, 0, 6.33, 6.33, 0], [0, 0, 12.66, 0, 12.66, 12.66, 6.33, 18.99, 12.66, 25.32, 0, 25.32, 0, 0], [0, 0, 31.65, 0, 31.65, 6.33, 25.32, 12.66, 31.65, 18.99, 31.65, 25.32, 0, 25.32, 6.33, 18.99, 0, 12.66, 0, 0], [0, 25.32, 12.66, 25.32, 12.66, 18.99, 18.99, 12.66, 31.65, 12.66, 37.97, 18.99, 44.3, 25.32, 50.63, 18.99, 75.95, 0, 69.62, 6.33, 75.95, 12.66, 75.95, 25.32, 69.62, 31.65, 75.95, 37.97, 69.62, 44.3, 31.65, 37.97, 0, 44.3, 0, 25.32], [0, 0, 63.29, 0, 37.97, 18.99, 31.65, 12.66, 25.32, 18.99, 18.99, 12.66, 6.33, 12.66, 0, 6.33, 0, 0], [6.33, 0, 12.66, 6.33, 6.33, 12.66, 0, 6.33, 6.33, 0], [6.33, 0, 12.66, 6.33, 6.33, 12.66, 0, 6.33, 6.33, 0], [6.33, 0, 12.66, 6.33, 6.33, 12.66, 0, 6.33, 6.33, 0], [0, 0, 63.29, 0, 88.61, 12.66, 69.62, 25.32, 37.97, 12.66, 6.33, 31.65, 0, 31.65, 0, 0], [37.97, 0, 94.94, 12.66, 139.24, 12.66, 139.24, 37.97, 107.59, 37.97, 69.62, 50.63, 37.97, 31.65, 6.33, 37.97, 0, 18.99, 37.97, 0], [6.33, 6.33, 25.32, 6.33, 63.29, 0, 94.94, 31.65, 44.3, 37.97, 0, 18.99, 6.33, 6.33], [25.32, 0, 75.95, 6.33, 56.96, 25.32, 12.66, 25.32, 0, 18.99, 25.32, 0], [0, 0, 56.96, 0, 56.96, 6.33, 44.3, 25.32, 12.66, 25.32, 0, 0], [0, 31.65, 6.33, 31.65, 37.97, 12.66, 69.62, 25.32, 88.61, 12.66, 63.29, 0, 126.58, 0, 107.59, 18.99, 113.92, 31.65, 69.62, 44.3, 0, 31.65], [0, 0, 69.62, 12.66, 75.95, 12.66, 69.62, 25.32, 56.96, 44.3, 25.32, 31.65, 0, 37.97, 0, 0], [0, 44.3, 18.99, 12.66, 56.96, 0, 56.96, 18.99, 18.99, 37.97, 25.32, 56.96, 56.96, 50.63, 56.96, 69.62, 31.65, 75.95, 6.33, 75.95, 0, 44.3], [0, 6.33, 25.32, 0, 56.96, 12.66, 63.29, 44.3, 25.32, 50.63, 6.33, 50.63, 0, 63.29, 0, 6.33], [50.63, 0, 82.28, 18.99, 94.94, 31.65, 101.27, 56.96, 69.62, 69.62, 31.65, 56.96, 0, 25.32, 25.32, 25.32, 50.63, 18.99, 50.63, 0], [18.99, 0, 25.32, 18.99, 50.63, 44.3, 63.29, 63.29, 6.33, 50.63, 6.33, 31.65, 0, 18.99, 18.99, 0], [0, 0, 56.96, 0, 56.96, 31.65, 94.94, 44.3, 107.59, 63.29, 88.61, 63.29, 44.3, 63.29, 6.33, 18.99, 0, 0], [0, 0, 12.66, 0, 25.32, 25.32, 56.96, 25.32, 69.62, 6.33, 69.62, 94.94, 50.63, 63.29, 37.97, 44.3, 0, 31.65, 0, 0], [0, 0, 18.99, 0, 37.97, 31.65, 37.97, 69.62, 0, 69.62, 0, 25.32, 0, 0], [0, 12.66, 37.97, 0, 69.62, 0, 69.62, 44.3, 37.97, 56.96, 37.97, 69.62, 6.33, 63.29, 18.99, 50.63, 12.66, 25.32, 0, 12.66], [69.62, 0, 69.62, 31.65, 63.29, 31.65, 12.66, 25.32, 0, 25.32, 0, 12.66, 31.65, 0, 69.62, 0], [0, 0, 44.3, 18.99, 94.94, 12.66, 126.58, 25.32, 107.59, 37.97, 75.95, 56.96, 25.32, 56.96, 0, 75.95, 0, 0], [0, 44.3, 50.63, 12.66, 56.96, 12.66, 88.61, 0, 75.95, 12.66, 107.59, 18.99, 120.25, 18.99, 94.94, 37.97, 6.33, 63.29, 0, 44.3], [82.28, 18.99, 0, 18.99, 25.32, 0, 75.95, 0, 82.28, 18.99], [0, 25.32, 88.61, 0, 101.27, 6.33, 145.57, 6.33, 151.9, 25.32, 0, 25.32], [0, 18.99, 18.99, 0, 25.32, 0, 25.32, 37.97, 6.33, 37.97, 0, 18.99], [0, 44.3, 6.33, 37.97, 12.66, 31.65, 6.33, 25.32, 6.33, 12.66, 12.66, 6.33, 6.33, 0, 50.63, 0, 37.97, 12.66, 31.65, 18.99, 37.97, 25.32, 37.97, 44.3, 0, 44.3], [6.33, 44.3, 0, 44.3, 0, 25.32, 6.33, 18.99, 0, 12.66, 12.66, 0, 50.63, 0, 31.65, 6.33, 25.32, 12.66, 31.65, 18.99, 56.96, 18.99, 63.29, 25.32, 69.62, 37.97, 75.95, 50.63, 6.33, 44.3], [18.99, 0, 75.95, 0, 69.62, 18.99, 88.61, 44.3, 44.3, 50.63, 31.65, 25.32, 37.97, 18.99, 31.65, 12.66, 25.32, 18.99, 0, 18.99, 6.33, 12.66, 0, 6.33, 18.99, 0], [18.99, 44.3, 0, 18.99, 6.33, 0, 18.99, 18.99, 50.63, 31.65, 18.99, 44.3], [44.3, 31.65, 12.66, 18.99, 0, 0, 82.28, 0, 82.28, 31.65, 75.95, 50.63, 44.3, 31.65]], [[0, 0, 6.33, 0, 31.65, 0, 31.65, 37.97, 0, 0], [12.66, 0, 44.3, 31.65, 0, 25.32, 12.66, 0], [0, 50.63, 25.32, 18.99, 44.3, 37.97, 88.61, 12.66, 126.58, 37.97, 170.89, 12.66, 189.87, 31.65, 221.52, 6.33, 246.84, 37.97, 272.15, 18.99, 284.81, 37.97, 329.11, 12.66, 341.77, 37.97, 386.08, 12.66, 405.06, 37.97, 449.37, 31.65, 443.04, 0, 487.34, 37.97, 493.67, 6.33, 506.33, 25.32, 500, 31.65, 487.34, 44.3, 462.03, 25.32, 455.7, 37.97, 398.73, 44.3, 379.75, 31.65, 354.43, 37.97, 335.44, 44.3, 322.78, 25.32, 291.14, 44.3, 265.82, 31.65, 253.16, 44.3, 234.18, 37.97, 221.52, 18.99, 208.86, 37.97, 183.54, 37.97, 170.89, 18.99, 151.9, 37.97, 120.25, 50.63, 94.94, 25.32, 50.63, 50.63, 25.32, 31.65, 0, 50.63], [0, 69.62, 0, 0, 462.03, 0, 449.37, 25.32, 506.33, 37.97, 506.33, 69.62, 0, 69.62], [18.99, 0, 25.32, 0, 12.66, 227.85, 0, 227.85, 18.99, 0], [0, 0, 265.82, 0, 272.15, 18.99, 0, 6.33, 0, 0], [0, 0, 6.33, 18.99, 25.32, 227.85, 18.99, 246.84, 50.63, 246.84, 50.63, 246.84, 37.97, 164.56, 18.99, 0, 0, 0], [0, 0, 12.66, 0, 18.99, 145.57, 6.33, 151.9, 0, 0], [0, 0, 18.99, 0, 12.66, 120.25, 0, 120.25, 0, 0], [0, 25.32, 12.66, 18.99, 12.66, 0, 101.27, 0, 101.27, 6.33, 101.27, 25.32, 0, 25.32]], [[0, 37.97, 0, 31.65, 31.65, 0, 63.29, 37.97, 0, 37.97], [0, 37.97, 31.65, 0, 63.29, 37.97, 0, 37.97], [0, 37.97, 31.65, 0, 63.29, 37.97, 0, 37.97], [6.33, 37.97, 0, 37.97, 31.65, 0, 63.29, 37.97, 6.33, 37.97], [6.33, 37.97, 12.66, 37.97, 63.29, 37.97, 31.65, 0, 0, 37.97, 6.33, 37.97], [0, 37.97, 31.65, 0, 63.29, 37.97, 0, 37.97], [0, 37.97, 31.65, 0, 63.29, 37.97, 0, 37.97], [0, 37.97, 31.65, 0, 63.29, 37.97, 0, 37.97], [0, 0, 31.65, 0, 0, 31.65, 0, 0], [0, 0, 63.29, 0, 31.65, 37.97, 0, 0], [0, 0, 63.29, 0, 31.65, 37.97, 0, 0], [0, 0, 63.29, 0, 31.65, 37.97, 0, 0], [6.33, 0, 12.66, 0, 63.29, 0, 31.65, 37.97, 0, 0, 6.33, 0], [0, 0, 6.33, 0, 63.29, 0, 31.65, 37.97, 0, 0], [0, 0, 6.33, 0, 63.29, 0, 31.65, 37.97, 0, 0], [0, 0, 63.29, 0, 31.65, 37.97, 0, 0], [0, 0, 31.65, 0, 31.65, 37.97, 0, 0], [6.33, 158.23, 0, 164.56, 101.27, 0, 202.53, 164.56, 6.33, 164.56, 6.33, 158.23], [25.32, 0, 25.32, 63.29, 0, 63.29, 25.32, 0], [0, 0, 25.32, 63.29, 0, 63.29, 0, 0], [0, 101.27, 0, 0, 63.29, 0, 0, 101.27], [63.29, 0, 63.29, 101.27, 0, 0, 63.29, 0], [0, 0, 126.58, 63.29, 0, 63.29, 0, 6.33, 0, 0], [126.58, 0, 126.58, 63.29, 0, 63.29, 126.58, 0], [0, 0, 63.29, 0, 37.97, 63.29, 0, 0], [0, 0, 63.29, 0, 25.32, 56.96, 0, 0], [0, 0, 120.25, 0, 126.58, 0, 0, 63.29, 0, 0], [120.25, 0, 126.58, 0, 126.58, 63.29, 0, 0, 120.25, 0], [63.29, 0, 126.58, 0, 126.58, 101.27, 0, 101.27, 63.29, 0], [63.29, 0, 126.58, 101.27, 0, 101.27, 0, 0, 63.29, 0], [0, 0, 63.29, 0, 63.29, 101.27, 0, 101.27, 0, 0], [0, 0, 63.29, 0, 63.29, 101.27, 0, 101.27, 0, 0], [0, 0, 63.29, 0, 0, 101.27, 0, 0], [6.33, 0, 63.29, 0, 63.29, 101.27, 0, 0, 6.33, 0], [126.58, 0, 126.58, 101.27, 0, 101.27, 0, 94.94, 0, 0, 126.58, 0], [0, 0, 126.58, 0, 126.58, 101.27, 0, 101.27, 0, 0], [63.29, 0, 126.58, 101.27, 0, 101.27, 63.29, 0], [63.29, 0, 126.58, 101.27, 0, 101.27, 63.29, 0], [0, 0, 88.61, 0, 44.3, 88.61, 0, 0], [0, 0, 44.3, 0, 44.3, 75.95, 0, 0], [0, 0, 44.3, 0, 0, 75.95, 0, 0], [0, 0, 6.33, 0, 6.33, 75.95, 50.63, 0, 63.29, 0, 0, 101.27, 0, 0], [0, 0, 18.99, 0, 63.29, 88.61, 107.59, 0, 126.58, 0, 63.29, 101.27, 0, 0], [0, 0, 12.66, 0, 56.96, 75.95, 56.96, 0, 63.29, 0, 63.29, 101.27, 0, 0], [0, 0, 63.29, 0, 63.29, 6.33, 31.65, 50.63, 0, 0], [31.65, 50.63, 0, 6.33, 0, 0, 63.29, 0, 31.65, 50.63], [0, 0, 63.29, 0, 63.29, 6.33, 31.65, 50.63, 0, 0], [0, 0, 63.29, 0, 31.65, 50.63, 0, 0], [0, 0, 63.29, 0, 31.65, 50.63, 0, 0], [0, 0, 63.29, 0, 31.65, 50.63, 0, 0], [0, 0, 63.29, 0, 31.65, 50.63, 0, 0], [6.33, 6.33, 0, 0, 63.29, 0, 31.65, 50.63, 6.33, 6.33]], [[82.28, 12.66, 94.94, 37.97, 94.94, 56.96, 94.94, 69.62, 69.62, 107.59, 69.62, 113.92, 63.29, 113.92, 63.29, 139.24, 37.97, 139.24, 37.97, 113.92, 12.66, 101.27, 0, 63.29, 0, 56.96, 0, 44.3, 6.33, 25.32, 18.99, 18.99, 25.32, 6.33, 44.3, 0, 44.3, 0, 63.29, 0, 69.62, 6.33, 82.28, 12.66], [183.54, 75.95, 303.8, 6.33, 329.11, 37.97, 215.19, 101.27, 215.19, 177.22, 126.58, 177.22, 126.58, 101.27, 0, 31.65, 25.32, 0, 158.23, 75.95, 183.54, 75.95], [113.92, 0, 145.57, 132.91, 75.95, 132.91, 69.62, 31.65, 63.29, 132.91, 0, 132.91, 25.32, 0, 113.92, 0], [0, 31.65, 6.33, 6.33, 12.66, 6.33, 6.33, 25.32, 31.65, 0, 37.97, 6.33, 18.99, 25.32, 44.3, 12.66, 50.63, 18.99, 25.32, 31.65, 50.63, 25.32, 56.96, 31.65, 31.65, 37.97, 50.63, 37.97, 50.63, 44.3, 18.99, 50.63, 0, 31.65], [37.97, 6.33, 44.3, 25.32, 25.32, 44.3, 0, 44.3, 0, 31.65, 18.99, 37.97, 0, 25.32, 6.33, 18.99, 25.32, 31.65, 6.33, 12.66, 12.66, 6.33, 31.65, 25.32, 18.99, 6.33, 25.32, 0, 31.65, 18.99, 31.65, 0, 37.97, 0, 37.97, 6.33], [82.28, 0, 139.24, 0, 170.89, 94.94, 88.61, 145.57, 88.61, 120.25, 94.94, 120.25, 94.94, 113.92, 120.25, 75.95, 120.25, 44.3, 107.59, 18.99, 94.94, 12.66, 88.61, 6.33, 69.62, 6.33, 50.63, 12.66, 44.3, 25.32, 31.65, 31.65, 25.32, 50.63, 25.32, 69.62, 37.97, 107.59, 63.29, 120.25, 63.29, 145.57, 0, 107.59, 25.32, 6.33, 82.28, 0], [69.62, 386.08, 37.97, 253.16, 37.97, 177.22, 151.9, 113.92, 151.9, 107.59, 183.54, 101.27, 183.54, 94.94, 164.56, 94.94, 189.87, 88.61, 183.54, 82.28, 158.23, 88.61, 183.54, 75.95, 177.22, 69.62, 151.9, 82.28, 170.89, 63.29, 164.56, 56.96, 139.24, 82.28, 145.57, 63.29, 139.24, 63.29, 132.91, 88.61, 126.58, 82.28, 88.61, 101.27, 56.96, 6.33, 0, 6.33, 0, 0, 246.84, 0, 246.84, 386.08, 69.62, 386.08], [183.54, 386.08, 0, 386.08, 0, 0, 259.49, 0, 259.49, 6.33, 202.53, 12.66, 177.22, 113.92, 107.59, 75.95, 101.27, 82.28, 94.94, 56.96, 88.61, 56.96, 88.61, 75.95, 82.28, 56.96, 75.95, 63.29, 88.61, 82.28, 69.62, 63.29, 63.29, 69.62, 82.28, 88.61, 63.29, 75.95, 56.96, 82.28, 75.95, 94.94, 56.96, 88.61, 56.96, 101.27, 82.28, 101.27, 82.28, 107.59, 208.86, 177.22, 208.86, 253.16, 183.54, 386.08], [50.63, 0, 82.28, 18.99, 0, 18.99, 0, 0, 50.63, 0], [75.95, 0, 75.95, 18.99, 0, 18.99, 31.65, 0, 75.95, 0], [183.54, 0, 183.54, 18.99, 31.65, 18.99, 0, 0, 183.54, 0], [0, 0, 196.2, 0, 164.56, 18.99, 0, 18.99, 0, 0], [31.65, 113.92, 0, 113.92, 0, 94.94, 6.33, 94.94, 12.66, 0, 18.99, 94.94, 31.65, 94.94, 31.65, 113.92]], [[75.95, 37.97, 0, 31.65, 75.95, 31.65, 25.32, 0, 139.24, 6.33, 202.53, 6.33, 164.56, 25.32, 208.86, 56.96, 158.23, 56.96, 208.86, 107.59, 139.24, 94.94, 189.87, 189.87, 107.59, 107.59, 107.59, 208.86, 69.62, 113.92, 12.66, 151.9, 56.96, 94.94, 0, 113.92, 75.95, 37.97], [170.89, 0, 126.58, 37.97, 189.87, 37.97, 113.92, 69.62, 177.22, 69.62, 145.57, 82.28, 0, 145.57, 120.25, 75.95, 44.3, 94.94, 132.91, 44.3, 88.61, 44.3, 170.89, 0], [18.99, 0, 82.28, 50.63, 44.3, 37.97, 94.94, 94.94, 37.97, 69.62, 107.59, 132.91, 25.32, 75.95, 0, 50.63, 44.3, 63.29, 18.99, 31.65, 37.97, 25.32, 18.99, 0], [101.27, 0, 82.28, 18.99, 120.25, 6.33, 63.29, 56.96, 120.25, 31.65, 75.95, 69.62, 139.24, 50.63, 107.59, 82.28, 12.66, 164.56, 75.95, 82.28, 0, 113.92, 56.96, 69.62, 0, 82.28, 75.95, 31.65, 18.99, 56.96, 101.27, 0], [0, 31.65, 0, 25.32, 0, 18.99, 6.33, 18.99, 12.66, 18.99, 12.66, 18.99, 37.97, 12.66, 44.3, 18.99, 50.63, 18.99, 94.94, 0, 132.91, 0, 145.57, 6.33, 151.9, 12.66, 151.9, 18.99, 158.23, 18.99, 170.89, 12.66, 183.54, 12.66, 189.87, 12.66, 189.87, 18.99, 196.2, 25.32, 196.2, 25.32, 202.53, 25.32, 202.53, 25.32, 221.52, 25.32, 227.85, 25.32, 227.85, 37.97, 227.85, 37.97, 227.85, 44.3, 208.86, 50.63, 202.53, 50.63, 189.87, 50.63, 189.87, 50.63, 183.54, 50.63, 183.54, 50.63, 177.22, 56.96, 177.22, 56.96, 170.89, 56.96, 170.89, 56.96, 164.56, 56.96, 164.56, 56.96, 158.23, 56.96, 151.9, 56.96, 151.9, 56.96, 151.9, 56.96, 132.91, 50.63, 126.58, 50.63, 107.59, 56.96, 94.94, 56.96, 88.61, 56.96, 88.61, 50.63, 82.28, 50.63, 75.95, 56.96, 75.95, 56.96, 69.62, 56.96, 69.62, 56.96, 37.97, 50.63, 25.32, 50.63, 12.66, 44.3, 6.33, 44.3, 0, 37.97, 0, 31.65], [0, 75.95, 6.33, 56.96, 12.66, 44.3, 31.65, 25.32, 50.63, 12.66, 82.28, 0, 56.96, 18.99, 44.3, 31.65, 31.65, 50.63, 25.32, 69.62, 18.99, 82.28, 0, 75.95], [44.3, 0, 37.97, 31.65, 31.65, 63.29, 25.32, 88.61, 0, 88.61, 6.33, 63.29, 12.66, 44.3, 44.3, 0], [69.62, 0, 37.97, 44.3, 25.32, 88.61, 0, 82.28, 12.66, 50.63, 25.32, 31.65, 37.97, 18.99, 56.96, 6.33, 69.62, 0], [0, 0, 18.99, 6.33, 44.3, 25.32, 56.96, 44.3, 63.29, 63.29, 44.3, 75.95, 37.97, 56.96, 18.99, 18.99, 6.33, 6.33, 0, 0], [0, 88.61, 6.33, 69.62, 12.66, 31.65, 18.99, 0, 31.65, 31.65, 31.65, 63.29, 31.65, 88.61, 0, 88.61], [12.66, 88.61, 12.66, 56.96, 12.66, 31.65, 0, 0, 18.99, 18.99, 31.65, 44.3, 44.3, 75.95, 12.66, 88.61], [25.32, 0, 37.97, 0, 37.97, 94.94, 31.65, 113.92, 18.99, 120.25, 6.33, 113.92, 0, 107.59, 6.33, 101.27, 12.66, 101.27, 18.99, 107.59, 25.32, 107.59, 25.32, 56.96, 25.32, 0], [63.29, 0, 63.29, 101.27, 12.66, 101.27, 6.33, 101.27, 0, 94.94, 0, 82.28, 6.33, 75.95, 18.99, 75.95, 31.65, 75.95, 37.97, 75.95, 37.97, 6.33, 37.97, 0, 63.29, 0], [12.66, 75.95, 31.65, 75.95, 31.65, 0, 56.96, 0, 56.96, 101.27, 6.33, 101.27, 0, 94.94, 0, 82.28, 6.33, 75.95, 12.66, 75.95], [0, 0, 316.46, 0, 367.09, 31.65, 291.14, 31.65, 367.09, 37.97, 341.77, 63.29, 246.84, 63.29, 215.19, 63.29, 208.86, 56.96, 208.86, 50.63, 189.87, 50.63, 177.22, 56.96, 170.89, 56.96, 170.89, 50.63, 164.56, 44.3, 151.9, 37.97, 145.57, 37.97, 120.25, 37.97, 113.92, 37.97, 82.28, 50.63, 69.62, 56.96, 63.29, 56.96, 56.96, 50.63, 31.65, 56.96, 18.99, 56.96, 0, 56.96, 0, 0], [189.87, 0, 189.87, 63.29, 139.24, 63.29, 132.91, 56.96, 183.54, 56.96, 139.24, 25.32, 177.22, 6.33, 0, 0, 189.87, 0], [6.33, 0, 12.66, 12.66, 12.66, 18.99, 6.33, 25.32, 0, 18.99, 0, 12.66, 6.33, 0], [6.33, 0, 12.66, 12.66, 12.66, 18.99, 6.33, 25.32, 0, 18.99, 0, 12.66, 6.33, 0], [6.33, 0, 12.66, 12.66, 12.66, 18.99, 6.33, 25.32, 0, 18.99, 0, 12.66, 6.33, 0], [0, 56.96, 0, 0, 18.99, 0, 18.99, 6.33, 18.99, 12.66, 18.99, 18.99, 25.32, 25.32, 25.32, 25.32, 44.3, 31.65, 50.63, 31.65, 56.96, 31.65, 75.95, 37.97, 82.28, 37.97, 94.94, 37.97, 101.27, 31.65, 107.59, 37.97, 113.92, 37.97, 126.58, 37.97, 132.91, 37.97, 139.24, 37.97, 132.91, 50.63, 132.91, 56.96, 94.94, 56.96, 0, 56.96], [12.66, 50.63, 12.66, 44.3, 12.66, 37.97, 12.66, 31.65, 0, 31.65, 18.99, 25.32, 37.97, 31.65, 63.29, 31.65, 69.62, 25.32, 75.95, 25.32, 94.94, 25.32, 101.27, 25.32, 113.92, 18.99, 113.92, 0, 208.86, 0, 158.23, 50.63, 12.66, 50.63], [0, 0, 6.33, 0, 6.33, 6.33, 0, 0], [0, 37.97, 0, 0, 94.94, 0, 88.61, 6.33, 88.61, 18.99, 94.94, 25.32, 94.94, 37.97, 0, 37.97], [0, 18.99, 37.97, 18.99, 44.3, 25.32, 50.63, 18.99, 196.2, 18.99, 253.16, 0, 208.86, 56.96, 63.29, 56.96, 56.96, 50.63, 50.63, 56.96, 0, 56.96, 0, 44.3, 6.33, 37.97, 0, 18.99], [50.63, 0, 50.63, 44.3, 44.3, 44.3, 0, 0, 50.63, 0], [0, 0, 69.62, 12.66, 75.95, 12.66, 75.95, 56.96, 31.65, 56.96, 0, 0], [0, 44.3, 0, 37.97, 0, 0, 44.3, 44.3, 0, 44.3], [0, 37.97, 56.96, 0, 56.96, 0, 69.62, 37.97, 31.65, 37.97, 50.63, 18.99, 12.66, 37.97, 0, 37.97]], [[37.97, 0, 82.28, 0, 82.28, 69.62, 101.27, 94.94, 139.24, 151.9, 82.28, 139.24, 75.95, 158.23, 50.63, 132.91, 0, 151.9, 25.32, 113.92, 37.97, 82.28, 37.97, 0], [0, 94.94, 0, 0, 44.3, 0, 44.3, 101.27, 0, 101.27, 0, 94.94], [120.25, 107.59, 113.92, 107.59, 107.59, 107.59, 82.28, 120.25, 50.63, 158.23, 31.65, 189.87, 12.66, 234.18, 6.33, 215.19, 6.33, 196.2, 6.33, 164.56, 44.3, 113.92, 94.94, 88.61, 37.97, 50.63, 12.66, 56.96, 0, 56.96, 18.99, 31.65, 56.96, 18.99, 107.59, 75.95, 113.92, 12.66, 139.24, 0, 170.89, 18.99, 145.57, 12.66, 132.91, 75.95, 170.89, 37.97, 259.49, 56.96, 278.48, 101.27, 246.84, 82.28, 151.9, 82.28, 221.52, 107.59, 240.51, 177.22, 234.18, 221.52, 196.2, 158.23, 145.57, 113.92, 120.25, 107.59], [0, 12.66, 0, 6.33, 12.66, 0, 25.32, 12.66, 31.65, 25.32, 31.65, 37.97, 18.99, 44.3, 0, 44.3, 0, 12.66], [44.3, 12.66, 44.3, 18.99, 37.97, 31.65, 25.32, 37.97, 0, 31.65, 0, 12.66, 18.99, 0, 44.3, 12.66], [18.99, 0, 31.65, 18.99, 31.65, 31.65, 25.32, 44.3, 12.66, 50.63, 6.33, 44.3, 0, 31.65, 0, 25.32, 18.99, 0], [0, 107.59, 0, 37.97, 6.33, 37.97, 12.66, 37.97, 18.99, 37.97, 31.65, 31.65, 31.65, 25.32, 31.65, 18.99, 25.32, 6.33, 56.96, 31.65, 75.95, 63.29, 94.94, 94.94, 101.27, 50.63, 88.61, 0, 329.11, 0, 367.09, 0, 367.09, 107.59, 348.1, 107.59, 335.44, 126.58, 284.81, 126.58, 259.49, 126.58, 208.86, 107.59, 164.56, 120.25, 132.91, 107.59, 69.62, 113.92, 25.32, 107.59, 0, 107.59], [0, 0, 25.32, 0, 25.32, 6.33, 18.99, 12.66, 6.33, 25.32, 6.33, 31.65, 6.33, 56.96, 6.33, 75.95, 6.33, 88.61, 12.66, 101.27, 0, 101.27, 0, 0], [75.95, 88.61, 82.28, 88.61, 82.28, 12.66, 75.95, 18.99, 69.62, 25.32, 63.29, 25.32, 56.96, 18.99, 50.63, 12.66, 50.63, 0, 44.3, 6.33, 37.97, 18.99, 31.65, 31.65, 18.99, 50.63, 12.66, 63.29, 6.33, 75.95, 0, 88.61, 6.33, 88.61, 75.95, 88.61], [12.66, 0, 31.65, 6.33, 37.97, 18.99, 44.3, 37.97, 63.29, 25.32, 75.95, 18.99, 101.27, 18.99, 113.92, 18.99, 88.61, 25.32, 63.29, 37.97, 44.3, 50.63, 31.65, 25.32, 12.66, 6.33, 0, 0, 12.66, 0], [6.33, 0, 25.32, 6.33, 37.97, 31.65, 50.63, 18.99, 82.28, 18.99, 69.62, 25.32, 50.63, 31.65, 37.97, 37.97, 25.32, 18.99, 0, 0, 6.33, 0], [25.32, 6.33, 44.3, 18.99, 56.96, 12.66, 75.95, 0, 88.61, 6.33, 75.95, 6.33, 56.96, 18.99, 44.3, 31.65, 31.65, 18.99, 12.66, 6.33, 6.33, 6.33, 0, 6.33, 12.66, 0, 25.32, 6.33], [0, 0, 94.94, 0, 94.94, 63.29, 82.28, 94.94, 69.62, 113.92, 56.96, 132.91, 0, 132.91, 0, 0], [18.99, 0, 31.65, 0, 44.3, 6.33, 50.63, 12.66, 50.63, 18.99, 44.3, 31.65, 37.97, 37.97, 25.32, 37.97, 12.66, 37.97, 6.33, 31.65, 0, 25.32, 0, 18.99, 0, 12.66, 6.33, 6.33, 12.66, 0, 18.99, 0], [0, 0, 18.99, 0, 25.32, 0, 50.63, 6.33, 56.96, 6.33, 63.29, 6.33, 75.95, 6.33, 82.28, 6.33, 94.94, 6.33, 101.27, 6.33, 132.91, 0, 164.56, 12.66, 170.89, 12.66, 196.2, 6.33, 202.53, 6.33, 208.86, 0, 221.52, 6.33, 240.51, 12.66, 246.84, 18.99, 265.82, 18.99, 291.14, 18.99, 297.47, 18.99, 303.8, 18.99, 335.44, 18.99, 341.77, 18.99, 341.77, 12.66, 341.77, 12.66, 341.77, 12.66, 348.1, 6.33, 348.1, 0, 367.09, 0, 367.09, 0, 367.09, 50.63, 0, 50.63, 0, 0], [0, 37.97, 12.66, 31.65, 31.65, 31.65, 44.3, 31.65, 37.97, 12.66, 37.97, 0, 50.63, 6.33, 63.29, 25.32, 69.62, 31.65, 82.28, 25.32, 101.27, 31.65, 120.25, 37.97, 88.61, 44.3, 75.95, 44.3, 88.61, 69.62, 94.94, 75.95, 69.62, 63.29, 56.96, 50.63, 44.3, 63.29, 37.97, 82.28, 31.65, 56.96, 44.3, 44.3, 0, 37.97], [0, 0, 367.09, 0, 367.09, 50.63, 284.81, 50.63, 272.15, 50.63, 316.46, 44.3, 278.48, 31.65, 265.82, 37.97, 246.84, 12.66, 234.18, 6.33, 240.51, 37.97, 221.52, 37.97, 202.53, 37.97, 196.2, 44.3, 101.27, 44.3, 88.61, 37.97, 75.95, 37.97, 69.62, 37.97, 63.29, 44.3, 56.96, 50.63, 56.96, 56.96, 37.97, 50.63, 0, 0], [0, 37.97, 56.96, 37.97, 107.59, 18.99, 132.91, 44.3, 139.24, 25.32, 196.2, 37.97, 177.22, 6.33, 196.2, 12.66, 208.86, 31.65, 221.52, 31.65, 234.18, 31.65, 240.51, 25.32, 246.84, 18.99, 246.84, 12.66, 246.84, 6.33, 240.51, 0, 335.44, 0, 379.75, 6.33, 367.09, 18.99, 373.42, 44.3, 379.75, 25.32, 392.41, 12.66, 411.39, 31.65, 430.38, 37.97, 417.72, 18.99, 411.39, 6.33, 506.33, 6.33, 506.33, 56.96, 0, 56.96, 0, 37.97], [0, 31.65, 12.66, 18.99, 18.99, 12.66, 25.32, 6.33, 37.97, 0, 44.3, 0, 56.96, 0, 69.62, 0, 82.28, 6.33, 88.61, 12.66, 94.94, 18.99, 101.27, 31.65, 101.27, 37.97, 0, 37.97, 0, 31.65], [0, 0, 37.97, 94.94, 31.65, 94.94, 0, 0], [0, 0, 25.32, 37.97, 18.99, 44.3, 0, 0], [0, 0, 56.96, 6.33, 50.63, 12.66, 0, 0], [6.33, 0, 6.33, 37.97, 0, 37.97, 6.33, 0], [0, 18.99, 18.99, 0, 6.33, 25.32, 0, 18.99], [25.32, 0, 25.32, 6.33, 6.33, 37.97, 0, 31.65, 25.32, 0], [0, 6.33, 69.62, 0, 0, 12.66, 0, 6.33]], [[82.28, 63.29, 50.63, 75.95, 0, 0, 82.28, 63.29], [75.95, 0, 75.95, 31.65, 0, 0, 75.95, 0], [0, 44.3, 37.97, 0, 25.32, 44.3, 0, 44.3], [6.33, 0, 56.96, 0, 0, 31.65, 6.33, 0], [12.66, 0, 31.65, 25.32, 44.3, 31.65, 0, 25.32, 12.66, 0], [25.32, 0, 37.97, 31.65, 0, 6.33, 25.32, 0], [18.99, 18.99, 0, 50.63, 6.33, 0, 18.99, 18.99], [44.3, 18.99, 37.97, 56.96, 31.65, 56.96, 12.66, 63.29, 0, 44.3, 0, 12.66, 31.65, 0, 56.96, 0, 44.3, 18.99], [0, 56.96, 6.33, 18.99, 18.99, 0, 12.66, 31.65, 0, 56.96], [0, 0, 56.96, 139.24, 37.97, 132.91, 0, 6.33, 0, 0], [0, 44.3, 69.62, 0, 18.99, 82.28, 0, 44.3], [37.97, 18.99, 50.63, 69.62, 0, 0, 37.97, 18.99], [44.3, 0, 101.27, 37.97, 56.96, 88.61, 0, 44.3, 44.3, 0], [37.97, 12.66, 31.65, 12.66, 18.99, 18.99, 0, 0, 37.97, 12.66], [0, 0, 25.32, 12.66, 6.33, 25.32, 0, 0], [18.99, 0, 18.99, 6.33, 31.65, 25.32, 0, 25.32, 18.99, 0], [12.66, 0, 31.65, 12.66, 0, 31.65, 12.66, 0], [0, 0, 18.99, 0, 12.66, 25.32, 0, 0], [0, 12.66, 12.66, 0, 18.99, 37.97, 0, 12.66], [0, 12.66, 12.66, 0, 25.32, 31.65, 0, 12.66], [0, 0, 37.97, 6.33, 6.33, 18.99, 0, 0], [12.66, 31.65, 0, 18.99, 25.32, 0, 12.66, 31.65], [0, 12.66, 12.66, 0, 18.99, 18.99, 0, 12.66], [0, 18.99, 31.65, 0, 18.99, 31.65, 0, 18.99], [12.66, 0, 12.66, 18.99, 0, 12.66, 12.66, 0], [0, 31.65, 18.99, 0, 25.32, 31.65, 44.3, 6.33, 56.96, 31.65, 69.62, 12.66, 75.95, 31.65, 0, 37.97, 0, 31.65], [18.99, 37.97, 0, 6.33, 25.32, 25.32, 31.65, 0, 37.97, 18.99, 56.96, 0, 37.97, 37.97, 18.99, 37.97], [0, 50.63, 31.65, 0, 37.97, 44.3, 63.29, 6.33, 69.62, 50.63, 94.94, 0, 94.94, 63.29, 6.33, 50.63, 0, 50.63], [12.66, 31.65, 0, 6.33, 31.65, 25.32, 44.3, 0, 56.96, 31.65, 69.62, 6.33, 75.95, 31.65, 12.66, 37.97, 12.66, 31.65], [0, 6.33, 75.95, 0, 56.96, 25.32, 0, 6.33], [25.32, 6.33, 0, 18.99, 0, 0, 25.32, 6.33], [31.65, 12.66, 6.33, 6.33, 0, 0, 31.65, 12.66], [31.65, 12.66, 0, 0, 37.97, 12.66, 31.65, 12.66], [6.33, 25.32, 126.58, 94.94, 0, 94.94, 0, 0, 6.33, 25.32], [120.25, 101.27, 0, 31.65, 31.65, 18.99, 50.63, 25.32, 69.62, 0, 120.25, 101.27], [50.63, 101.27, 0, 0, 6.33, 0, 50.63, 0, 50.63, 101.27], [0, 0, 94.94, 12.66, 31.65, 88.61, 0, 0], [31.65, 6.33, 25.32, 18.99, 18.99, 75.95, 0, 6.33, 25.32, 0, 37.97, 6.33, 31.65, 6.33], [0, 101.27, 63.29, 50.63, 0, 0, 120.25, 0, 126.58, 25.32, 126.58, 18.99, 145.57, 31.65, 158.23, 69.62, 170.89, 12.66, 202.53, 101.27, 0, 101.27], [6.33, 0, 63.29, 50.63, 0, 94.94, 0, 0, 6.33, 0], [0, 101.27, 63.29, 25.32, 69.62, 0, 145.57, 0, 177.22, 0, 177.22, 101.27, 0, 101.27], [0, 37.97, 56.96, 0, 94.94, 18.99, 151.9, 0, 183.54, 18.99, 227.85, 6.33, 272.15, 31.65, 227.85, 63.29, 183.54, 31.65, 151.9, 56.96, 94.94, 31.65, 56.96, 56.96, 0, 37.97], [25.32, 0, 82.28, 18.99, 113.92, 0, 126.58, 18.99, 177.22, 18.99, 158.23, 56.96, 120.25, 25.32, 88.61, 50.63, 63.29, 18.99, 31.65, 44.3, 0, 25.32, 25.32, 0], [0, 18.99, 88.61, 0, 82.28, 12.66, 69.62, 12.66, 44.3, 31.65, 0, 18.99], [56.96, 25.32, 44.3, 50.63, 0, 31.65, 37.97, 31.65, 12.66, 0, 56.96, 25.32], [0, 18.99, 18.99, 0, 12.66, 25.32, 37.97, 18.99, 12.66, 44.3, 0, 18.99], [12.66, 25.32, 25.32, 0, 25.32, 25.32, 44.3, 63.29, 31.65, 75.95, 18.99, 63.29, 0, 50.63, 12.66, 25.32]], [[31.65, 0, 253.16, 0, 234.18, 94.94, 0, 94.94, 31.65, 0], [12.66, 18.99, 18.99, 0, 18.99, 56.96, 12.66, 63.29, 0, 63.29, 0, 18.99, 12.66, 18.99], [0, 37.97, 6.33, 0, 6.33, 50.63, 0, 69.62, 0, 37.97], [18.99, 94.94, 18.99, 139.24, 6.33, 139.24, 0, 132.91, 0, 88.61, 31.65, 0, 44.3, 0, 12.66, 94.94, 18.99, 94.94], [0, 0, 6.33, 0, 6.33, 37.97, 0, 37.97, 0, 0], [0, 0, 6.33, 0, 6.33, 63.29, 0, 63.29, 0, 0], [6.33, 0, 6.33, 12.66, 31.65, 12.66, 31.65, 37.97, 25.32, 37.97, 25.32, 18.99, 0, 18.99, 0, 0, 6.33, 0], [0, 0, 6.33, 0, 6.33, 25.32, 0, 25.32, 0, 0], [0, 0, 6.33, 0, 6.33, 25.32, 0, 25.32, 0, 0], [0, 0, 6.33, 0, 6.33, 6.33, 6.33, 12.66, 0, 12.66, 0, 0], [0, 12.66, 0, 0, 6.33, 0, 0, 12.66], [0, 12.66, 0, 6.33, 0, 6.33, 0, 0, 6.33, 0, 6.33, 12.66, 0, 12.66], [0, 0, 31.65, 0, 37.97, 0, 37.97, 6.33, 6.33, 6.33, 6.33, 25.32, 0, 25.32, 0, 0], [6.33, 0, 6.33, 12.66, 12.66, 12.66, 12.66, 18.99, 0, 18.99, 0, 0, 6.33, 0], [0, 0, 6.33, 0, 6.33, 50.63, 0, 50.63, 0, 0], [6.33, 12.66, 6.33, 0, 12.66, 18.99, 6.33, 25.32, 0, 18.99, 6.33, 12.66], [0, 12.66, 6.33, 0, 12.66, 12.66, 6.33, 18.99, 0, 12.66], [0, 12.66, 6.33, 0, 12.66, 12.66, 6.33, 18.99, 0, 12.66], [12.66, 0, 63.29, 0, 50.63, 37.97, 0, 37.97, 12.66, 0], [12.66, 0, 6.33, 50.63, 0, 50.63, 6.33, 0, 12.66, 0], [12.66, 0, 6.33, 44.3, 6.33, 50.63, 0, 50.63, 6.33, 0, 12.66, 0], [31.65, 6.33, 0, 6.33, 0, 0, 31.65, 0, 31.65, 6.33], [0, 6.33, 0, 0, 31.65, 0, 31.65, 6.33, 0, 6.33], [44.3, 18.99, 37.97, 6.33, 12.66, 6.33, 6.33, 18.99, 0, 18.99, 12.66, 0, 37.97, 0, 50.63, 18.99, 44.3, 18.99], [0, 0, 6.33, 0, 6.33, 25.32, 0, 25.32, 0, 0], [0, 0, 6.33, 0, 6.33, 12.66, 0, 12.66, 0, 6.33, 0, 0], [6.33, 0, 6.33, 25.32, 0, 25.32, 0, 0, 6.33, 0], [6.33, 0, 6.33, 25.32, 0, 25.32, 6.33, 0], [0, 0, 12.66, 0, 18.99, 6.33, 25.32, 0, 31.65, 6.33, 37.97, 0, 44.3, 6.33, 56.96, 0, 44.3, 50.63, 50.63, 101.27, 0, 101.27, 6.33, 50.63, 0, 0], [6.33, 12.66, 0, 6.33, 12.66, 0, 31.65, 12.66, 37.97, 50.63, 37.97, 50.63, 31.65, 31.65, 25.32, 12.66, 18.99, 6.33, 12.66, 6.33, 6.33, 12.66], [6.33, 69.62, 6.33, 44.3, 0, 31.65, 6.33, 0, 18.99, 37.97, 12.66, 44.3, 12.66, 63.29, 6.33, 69.62], [18.99, 75.95, 12.66, 75.95, 12.66, 31.65, 6.33, 18.99, 12.66, 6.33, 0, 0, 18.99, 0, 25.32, 12.66, 37.97, 12.66, 37.97, 31.65, 25.32, 37.97, 31.65, 25.32, 18.99, 18.99, 18.99, 75.95], [0, 101.27, 31.65, 50.63, 25.32, 25.32, 44.3, 0, 44.3, 25.32, 56.96, 6.33, 56.96, 31.65, 37.97, 50.63, 6.33, 101.27, 0, 101.27], [0, 0, 158.23, 0, 158.23, 44.3, 0, 44.3, 0, 0], [0, 6.33, 0, 0, 12.66, 6.33, 0, 6.33], [0, 0, 12.66, 6.33, 6.33, 6.33, 0, 6.33, 0, 0], [0, 0, 12.66, 6.33, 0, 6.33, 0, 0], [0, 0, 12.66, 6.33, 0, 6.33, 0, 6.33, 0, 0], [0, 0, 12.66, 6.33, 0, 6.33, 0, 0], [0, 0, 12.66, 6.33, 0, 6.33, 0, 0], [0, 0, 12.66, 6.33, 0, 6.33, 0, 0], [12.66, 6.33, 0, 6.33, 12.66, 0, 12.66, 6.33], [0, 12.66, 12.66, 0, 12.66, 12.66, 0, 12.66], [0, 6.33, 12.66, 0, 12.66, 6.33, 0, 6.33], [0, 6.33, 12.66, 0, 12.66, 6.33, 0, 6.33], [0, 6.33, 12.66, 0, 12.66, 6.33, 0, 6.33], [0, 6.33, 12.66, 0, 12.66, 6.33, 0, 6.33], [0, 0, 506.33, 0, 506.33, 101.27, 259.49, 101.27, 259.49, 50.63, 234.18, 50.63, 234.18, 44.3, 221.52, 44.3, 221.52, 56.96, 202.53, 56.96, 202.53, 75.95, 202.53, 88.61, 202.53, 101.27, 0, 101.27, 0, 0], [0, 0, 202.53, 0, 202.53, 6.33, 202.53, 25.32, 177.22, 25.32, 177.22, 50.63, 221.52, 50.63, 221.52, 63.29, 139.24, 63.29, 139.24, 50.63, 120.25, 50.63, 94.94, 75.95, 101.27, 101.27, 88.61, 101.27, 88.61, 82.28, 69.62, 82.28, 69.62, 69.62, 44.3, 69.62, 37.97, 101.27, 0, 101.27, 0, 0], [259.49, 0, 259.49, 50.63, 221.52, 50.63, 215.19, 44.3, 189.87, 44.3, 183.54, 50.63, 177.22, 50.63, 170.89, 101.27, 132.91, 101.27, 132.91, 63.29, 0, 63.29, 0, 50.63, 31.65, 50.63, 31.65, 25.32, 12.66, 25.32, 12.66, 6.33, 259.49, 0], [0, 0, 25.32, 6.33, 31.65, 139.24, 0, 139.24, 0, 6.33, 0, 0], [6.33, 50.63, 37.97, 0, 31.65, 50.63, 31.65, 94.94, 44.3, 107.59, 44.3, 151.9, 37.97, 151.9, 0, 151.9, 6.33, 50.63], [0, 0, 25.32, 0, 25.32, 75.95, 31.65, 82.28, 31.65, 101.27, 0, 101.27, 0, 0], [0, 0, 31.65, 0, 31.65, 6.33, 31.65, 50.63, 0, 50.63, 0, 0], [0, 101.27, 0, 75.95, 12.66, 75.95, 12.66, 69.62, 12.66, 56.96, 31.65, 56.96, 31.65, 82.28, 44.3, 75.95, 44.3, 37.97, 50.63, 37.97, 56.96, 0, 88.61, 0, 88.61, 101.27, 0, 101.27], [0, 0, 126.58, 0, 126.58, 6.33, 126.58, 50.63, 0, 50.63, 0, 0], [0, 0, 506.33, 0, 506.33, 50.63, 0, 50.63, 0, 44.3, 0, 0], [0, 0, 215.19, 0, 215.19, 37.97, 215.19, 44.3, 0, 44.3, 0, 0]], [[0, 101.27, 63.29, 0, 253.16, 0, 189.87, 101.27, 0, 101.27], [0, 0, 12.66, 0, 12.66, 50.63, 0, 50.63, 0, 0], [0, 6.33, 6.33, 6.33, 12.66, 0, 12.66, 50.63, 6.33, 56.96, 0, 56.96, 0, 6.33], [12.66, 0, 12.66, 50.63, 0, 50.63, 0, 25.32, 12.66, 0], [31.65, 63.29, 31.65, 56.96, 25.32, 50.63, 12.66, 50.63, 0, 50.63, 0, 25.32, 6.33, 25.32, 6.33, 44.3, 12.66, 44.3, 12.66, 12.66, 18.99, 12.66, 18.99, 44.3, 25.32, 44.3, 25.32, 0, 31.65, 0, 31.65, 44.3, 37.97, 44.3, 37.97, 12.66, 44.3, 12.66, 44.3, 44.3, 50.63, 44.3, 50.63, 25.32, 56.96, 25.32, 56.96, 50.63, 37.97, 50.63, 37.97, 69.62, 25.32, 69.62, 25.32, 63.29, 31.65, 63.29], [0, 18.99, 50.63, 0, 75.95, 56.96, 25.32, 82.28, 0, 18.99], [0, 50.63, 12.66, 0, 18.99, 0, 6.33, 56.96, 0, 50.63], [0, 63.29, 0, 56.96, 0, 50.63, 12.66, 0, 18.99, 6.33, 0, 63.29], [0, 6.33, 6.33, 0, 12.66, 0, 18.99, 6.33, 31.65, 25.32, 31.65, 31.65, 25.32, 44.3, 18.99, 44.3, 0, 18.99, 0, 6.33], [0, 12.66, 0, 0, 18.99, 31.65, 12.66, 37.97, 0, 12.66], [0, 0, 6.33, 18.99, 6.33, 50.63, 0, 50.63, 0, 0], [0, 0, 6.33, 0, 6.33, 37.97, 0, 37.97, 0, 0], [6.33, 6.33, 6.33, 50.63, 0, 50.63, 0, 6.33, 6.33, 0, 6.33, 6.33], [6.33, 0, 63.29, 31.65, 56.96, 101.27, 0, 75.95, 6.33, 0], [6.33, 0, 6.33, 50.63, 0, 50.63, 0, 0, 6.33, 0], [12.66, 63.29, 0, 0, 6.33, 0, 12.66, 44.3, 12.66, 63.29], [0, 56.96, 0, 44.3, 6.33, 25.32, 12.66, 0, 12.66, 31.65, 6.33, 63.29, 0, 56.96], [6.33, 37.97, 0, 37.97, 0, 0, 6.33, 6.33, 6.33, 37.97], [6.33, 0, 6.33, 25.32, 0, 25.32, 0, 0, 6.33, 0], [0, 132.91, 0, 0, 139.24, 0, 63.29, 82.28, 63.29, 69.62, 0, 132.91], [139.24, 126.58, 75.95, 63.29, 75.95, 75.95, 0, 0, 139.24, 0, 139.24, 126.58], [50.63, 0, 75.95, 0, 75.95, 18.99, 107.59, 18.99, 88.61, 25.32, 94.94, 25.32, 126.58, 25.32, 101.27, 37.97, 126.58, 44.3, 94.94, 44.3, 107.59, 75.95, 82.28, 50.63, 75.95, 75.95, 56.96, 50.63, 44.3, 75.95, 37.97, 50.63, 18.99, 69.62, 31.65, 44.3, 0, 44.3, 31.65, 37.97, 12.66, 18.99, 37.97, 31.65, 31.65, 12.66, 50.63, 25.32, 50.63, 0], [50.63, 6.33, 50.63, 12.66, 44.3, 12.66, 12.66, 12.66, 12.66, 6.33, 0, 0, 63.29, 0, 50.63, 6.33], [37.97, 6.33, 37.97, 12.66, 6.33, 12.66, 6.33, 6.33, 0, 0, 44.3, 0, 37.97, 6.33], [31.65, 6.33, 0, 12.66, 31.65, 0, 31.65, 6.33], [0, 6.33, 0, 0, 31.65, 12.66, 0, 6.33], [0, 25.32, 0, 18.99, 6.33, 6.33, 18.99, 0, 113.92, 0, 126.58, 6.33, 132.91, 18.99, 132.91, 25.32, 132.91, 56.96, 126.58, 69.62, 113.92, 75.95, 25.32, 75.95, 18.99, 75.95, 6.33, 69.62, 0, 56.96, 0, 25.32], [0, 405.06, 0, 132.91, 63.29, 69.62, 63.29, 82.28, 139.24, 0, 246.84, 0, 189.87, 18.99, 189.87, 50.63, 240.51, 88.61, 297.47, 75.95, 310.13, 82.28, 329.11, 44.3, 329.11, 25.32, 272.15, 0, 367.09, 0, 443.04, 75.95, 443.04, 63.29, 506.33, 126.58, 506.33, 405.06, 500, 170.89, 424.05, 94.94, 303.8, 88.61, 284.81, 82.28, 278.48, 82.28, 132.91, 139.24, 56.96, 126.58, 37.97, 164.56, 37.97, 240.51, 69.62, 303.8, 164.56, 335.44, 170.89, 303.8, 177.22, 259.49, 335.44, 259.49, 335.44, 303.8, 341.77, 367.09, 0, 405.06], [0, 202.53, 341.77, 164.56, 348.1, 107.59, 360.76, 101.27, 354.43, 44.3, 386.08, 0, 386.08, 88.61, 405.06, 88.61, 411.39, 113.92, 386.08, 158.23, 455.7, 158.23, 474.68, 126.58, 493.67, 63.29, 493.67, 126.58, 487.34, 151.9, 493.67, 170.89, 443.04, 196.2, 481.01, 196.2, 500, 196.2, 449.37, 202.53, 0, 202.53], [63.29, 25.32, 12.66, 12.66, 0, 0, 12.66, 6.33, 139.24, 25.32, 158.23, 56.96, 63.29, 25.32], [170.89, 56.96, 107.59, 177.22, 107.59, 139.24, 50.63, 107.59, 44.3, 56.96, 37.97, 56.96, 18.99, 113.92, 31.65, 202.53, 31.65, 215.19, 6.33, 170.89, 0, 126.58, 18.99, 183.54, 12.66, 120.25, 0, 113.92, 6.33, 75.95, 12.66, 94.94, 18.99, 63.29, 44.3, 50.63, 75.95, 94.94, 94.94, 75.95, 120.25, 50.63, 151.9, 50.63, 69.62, 101.27, 50.63, 88.61, 63.29, 107.59, 82.28, 107.59, 113.92, 94.94, 113.92, 113.92, 113.92, 126.58, 126.58, 107.59, 139.24, 75.95, 151.9, 63.29, 158.23, 50.63, 151.9, 44.3, 139.24, 44.3, 177.22, 25.32, 234.18, 0, 234.18, 12.66, 215.19, 12.66, 215.19, 25.32, 208.86, 25.32, 208.86, 56.96, 177.22, 44.3, 170.89, 56.96]], [[126.58, 6.33, 69.62, 25.32, 44.3, 75.95, 56.96, 151.9, 82.28, 196.2, 132.91, 208.86, 158.23, 202.53, 132.91, 234.18, 63.29, 234.18, 18.99, 183.54, 6.33, 158.23, 0, 107.59, 6.33, 44.3, 31.65, 12.66, 56.96, 0, 94.94, 0, 126.58, 6.33], [25.32, 0, 37.97, 25.32, 56.96, 18.99, 44.3, 37.97, 50.63, 63.29, 31.65, 50.63, 12.66, 63.29, 18.99, 37.97, 0, 25.32, 25.32, 25.32, 25.32, 0], [25.32, 0, 44.3, 6.33, 31.65, 25.32, 44.3, 37.97, 25.32, 31.65, 18.99, 50.63, 18.99, 31.65, 0, 37.97, 12.66, 25.32, 6.33, 12.66, 25.32, 18.99, 25.32, 0], [31.65, 0, 25.32, 12.66, 44.3, 25.32, 25.32, 25.32, 18.99, 37.97, 18.99, 25.32, 0, 18.99, 12.66, 12.66, 6.33, 0, 18.99, 12.66, 31.65, 0], [31.65, 0, 94.94, 31.65, 0, 75.95, 31.65, 0], [0, 44.3, 94.94, 0, 101.27, 25.32, 12.66, 69.62, 0, 44.3], [0, 37.97, 88.61, 0, 126.58, 107.59, 50.63, 145.57, 37.97, 126.58, 69.62, 107.59, 44.3, 44.3, 12.66, 63.29, 0, 37.97], [0, 0, 25.32, 56.96, 18.99, 63.29, 0, 0], [0, 31.65, 56.96, 0, 75.95, 18.99, 0, 56.96, 0, 31.65], [0, 0, 6.33, 0, 6.33, 37.97, 0, 44.3, 0, 0], [0, 0, 31.65, 44.3, 31.65, 56.96, 0, 0], [0, 6.33, 0, 0, 50.63, 63.29, 44.3, 69.62, 0, 6.33], [0, 0, 50.63, 25.32, 50.63, 37.97, 0, 0], [0, 0, 37.97, 50.63, 31.65, 50.63, 0, 0], [0, 0, 37.97, 63.29, 31.65, 63.29, 0, 0], [0, 18.99, 0, 12.66, 6.33, 0, 18.99, 6.33, 31.65, 37.97, 12.66, 44.3, 6.33, 37.97, 12.66, 31.65, 12.66, 25.32, 12.66, 18.99, 0, 18.99], [6.33, 0, 12.66, 0, 25.32, 6.33, 0, 18.99, 0, 12.66, 6.33, 0], [0, 0, 6.33, 0, 6.33, 18.99, 0, 0], [25.32, 0, 25.32, 12.66, 31.65, 25.32, 18.99, 18.99, 18.99, 25.32, 18.99, 37.97, 12.66, 18.99, 0, 18.99, 12.66, 12.66, 6.33, 0, 18.99, 12.66, 25.32, 0], [6.33, 0, 18.99, 0, 12.66, 6.33, 18.99, 12.66, 12.66, 12.66, 6.33, 18.99, 6.33, 12.66, 0, 6.33, 6.33, 6.33, 6.33, 0], [12.66, 0, 31.65, 6.33, 18.99, 12.66, 25.32, 25.32, 18.99, 25.32, 12.66, 37.97, 12.66, 18.99, 0, 12.66, 12.66, 12.66, 12.66, 0], [37.97, 0, 37.97, 37.97, 56.96, 44.3, 31.65, 44.3, 37.97, 75.95, 18.99, 44.3, 6.33, 63.29, 12.66, 31.65, 0, 6.33, 25.32, 25.32, 37.97, 0], [25.32, 0, 25.32, 18.99, 37.97, 31.65, 25.32, 25.32, 25.32, 37.97, 18.99, 31.65, 0, 31.65, 12.66, 25.32, 0, 0, 18.99, 18.99, 25.32, 0], [18.99, 0, 25.32, 25.32, 37.97, 25.32, 25.32, 37.97, 25.32, 56.96, 18.99, 37.97, 0, 44.3, 12.66, 31.65, 0, 6.33, 18.99, 25.32, 18.99, 0], [6.33, 25.32, 12.66, 25.32, 12.66, 18.99, 12.66, 0, 6.33, 6.33, 0, 25.32, 6.33, 25.32], [0, 12.66, 0, 6.33, 6.33, 0, 12.66, 12.66, 12.66, 25.32, 0, 25.32, 0, 12.66], [6.33, 0, 12.66, 18.99, 0, 18.99, 0, 6.33, 6.33, 0], [6.33, 0, 12.66, 6.33, 12.66, 18.99, 0, 12.66, 6.33, 0], [12.66, 0, 12.66, 6.33, 12.66, 18.99, 0, 12.66, 12.66, 0], [6.33, 0, 12.66, 0, 12.66, 12.66, 0, 6.33, 6.33, 0], [12.66, 0, 6.33, 12.66, 0, 18.99, 0, 0, 12.66, 0], [0, 0, 12.66, 0, 12.66, 12.66, 6.33, 6.33, 0, 0], [0, 31.65, 6.33, 12.66, 18.99, 0, 37.97, 0, 50.63, 6.33, 56.96, 25.32, 44.3, 31.65, 25.32, 37.97, 12.66, 37.97, 0, 31.65], [31.65, 12.66, 44.3, 6.33, 37.97, 18.99, 37.97, 25.32, 50.63, 31.65, 56.96, 31.65, 69.62, 31.65, 82.28, 25.32, 94.94, 18.99, 94.94, 18.99, 94.94, 6.33, 132.91, 0, 139.24, 0, 126.58, 18.99, 101.27, 37.97, 82.28, 50.63, 56.96, 50.63, 25.32, 44.3, 0, 37.97, 31.65, 12.66], [0, 0, 37.97, 12.66, 37.97, 18.99, 0, 0], [0, 37.97, 25.32, 0, 31.65, 6.33, 0, 37.97], [0, 6.33, 6.33, 0, 25.32, 37.97, 0, 6.33], [37.97, 0, 12.66, 44.3, 0, 44.3, 37.97, 0], [37.97, 0, 37.97, 31.65, 56.96, 44.3, 31.65, 37.97, 31.65, 63.29, 25.32, 37.97, 0, 44.3, 18.99, 31.65, 12.66, 6.33, 31.65, 25.32, 37.97, 0], [25.32, 6.33, 18.99, 31.65, 31.65, 50.63, 12.66, 37.97, 12.66, 63.29, 6.33, 31.65, 0, 37.97, 6.33, 25.32, 0, 0, 12.66, 25.32, 25.32, 6.33], [6.33, 12.66, 12.66, 18.99, 18.99, 0, 18.99, 18.99, 31.65, 25.32, 18.99, 25.32, 12.66, 44.3, 12.66, 25.32, 0, 18.99, 6.33, 12.66], [31.65, 6.33, 31.65, 12.66, 37.97, 18.99, 25.32, 31.65, 25.32, 44.3, 18.99, 31.65, 0, 31.65, 12.66, 25.32, 6.33, 0, 25.32, 25.32, 31.65, 6.33], [18.99, 0, 18.99, 18.99, 0, 18.99, 18.99, 0], [0, 0, 25.32, 6.33, 6.33, 18.99, 0, 0], [18.99, 6.33, 0, 18.99, 0, 0, 12.66, 6.33, 18.99, 6.33], [6.33, 0, 18.99, 12.66, 0, 18.99, 6.33, 0], [18.99, 0, 12.66, 12.66, 0, 0, 18.99, 0], [12.66, 0, 12.66, 12.66, 0, 12.66, 12.66, 0]], [[0, 101.27, 63.29, 0, 63.29, 202.53, 0, 101.27], [63.29, 151.9, 0, 151.9, 0, 101.27, 63.29, 0, 126.58, 0, 126.58, 50.63, 63.29, 151.9], [0, 0, 63.29, 50.63, 0, 101.27, 0, 0], [31.65, 0, 63.29, 50.63, 31.65, 101.27, 0, 50.63, 31.65, 0], [0, 0, 63.29, 50.63, 63.29, 101.27, 0, 101.27, 0, 0], [126.58, 0, 126.58, 50.63, 63.29, 50.63, 0, 0, 126.58, 0], [0, 50.63, 0, 0, 63.29, 0, 31.65, 50.63, 0, 50.63], [31.65, 0, 63.29, 50.63, 0, 0, 31.65, 0], [0, 0, 63.29, 0, 63.29, 101.27, 0, 101.27, 0, 0], [63.29, 0, 126.58, 50.63, 0, 0, 63.29, 0], [63.29, 50.63, 63.29, 101.27, 0, 50.63, 63.29, 0, 63.29, 50.63], [0, 50.63, 0, 0, 63.29, 0, 126.58, 101.27, 0, 50.63], [0, 0, 63.29, 0, 63.29, 50.63, 31.65, 101.27, 0, 50.63, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0], [126.58, 101.27, 0, 50.63, 0, 0, 126.58, 50.63, 126.58, 101.27], [0, 0, 126.58, 50.63, 126.58, 101.27, 120.25, 101.27, 0, 0], [63.29, 101.27, 0, 202.53, 0, 0, 63.29, 101.27], [63.29, 151.9, 0, 50.63, 0, 0, 63.29, 0, 126.58, 101.27, 126.58, 151.9, 63.29, 151.9], [63.29, 0, 63.29, 101.27, 0, 50.63, 63.29, 0], [31.65, 0, 63.29, 50.63, 31.65, 101.27, 0, 50.63, 31.65, 0], [63.29, 0, 63.29, 101.27, 0, 101.27, 0, 50.63, 63.29, 0], [0, 0, 126.58, 0, 63.29, 50.63, 0, 50.63, 0, 0], [63.29, 50.63, 31.65, 50.63, 0, 0, 63.29, 0, 63.29, 50.63], [31.65, 0, 63.29, 0, 0, 50.63, 31.65, 0], [63.29, 0, 63.29, 101.27, 0, 101.27, 0, 0, 63.29, 0], [63.29, 0, 126.58, 0, 0, 50.63, 63.29, 0], [0, 50.63, 0, 0, 63.29, 50.63, 0, 101.27, 0, 50.63], [126.58, 50.63, 0, 101.27, 63.29, 0, 126.58, 0, 126.58, 50.63], [63.29, 0, 63.29, 50.63, 31.65, 101.27, 0, 50.63, 0, 0, 63.29, 0], [63.29, 0, 63.29, 50.63, 0, 50.63, 0, 0, 63.29, 0], [0, 101.27, 0, 50.63, 126.58, 0, 126.58, 50.63, 0, 101.27], [126.58, 0, 6.33, 101.27, 0, 101.27, 0, 50.63, 126.58, 0]], [[12.66, 69.62, 0, 44.3, 0, 25.32, 12.66, 12.66, 37.97, 0, 69.62, 6.33, 94.94, 25.32, 101.27, 63.29, 88.61, 94.94, 63.29, 113.92, 50.63, 139.24, 50.63, 151.9, 31.65, 151.9, 31.65, 132.91, 37.97, 113.92, 56.96, 94.94, 69.62, 75.95, 75.95, 50.63, 69.62, 31.65, 56.96, 25.32, 37.97, 25.32, 25.32, 31.65, 25.32, 50.63, 31.65, 63.29, 12.66, 69.62], [0, 0, 18.99, 0, 18.99, 18.99, 0, 18.99, 0, 0], [18.99, 0, 56.96, 12.66, 18.99, 151.9, 0, 145.57, 18.99, 0], [12.66, 0, 25.32, 6.33, 25.32, 25.32, 0, 18.99, 12.66, 0], [44.3, 0, 44.3, 6.33, 25.32, 18.99, 12.66, 31.65, 12.66, 50.63, 18.99, 69.62, 31.65, 75.95, 50.63, 75.95, 69.62, 63.29, 75.95, 50.63, 75.95, 37.97, 63.29, 25.32, 44.3, 25.32, 31.65, 37.97, 31.65, 56.96, 44.3, 56.96, 50.63, 50.63, 50.63, 37.97, 63.29, 37.97, 63.29, 56.96, 50.63, 69.62, 31.65, 69.62, 18.99, 63.29, 18.99, 44.3, 25.32, 25.32, 44.3, 12.66, 63.29, 12.66, 82.28, 25.32, 88.61, 37.97, 82.28, 63.29, 56.96, 82.28, 37.97, 88.61, 18.99, 82.28, 6.33, 75.95, 0, 50.63, 6.33, 25.32, 18.99, 6.33, 44.3, 0], [0, 37.97, 37.97, 63.29, 63.29, 139.24, 120.25, 158.23, 132.91, 107.59, 101.27, 50.63, 120.25, 0, 151.9, 120.25, 120.25, 183.54, 50.63, 145.57, 0, 37.97], [0, 0, 37.97, 25.32, 50.63, 56.96, 18.99, 44.3, 0, 0], [0, 0, 31.65, 18.99, 37.97, 56.96, 12.66, 37.97, 0, 0], [0, 0, 25.32, 12.66, 44.3, 44.3, 12.66, 25.32, 0, 0], [0, 0, 25.32, 12.66, 44.3, 44.3, 12.66, 31.65, 0, 0], [0, 0, 25.32, 18.99, 37.97, 50.63, 6.33, 31.65, 0, 0], [0, 0, 31.65, 18.99, 44.3, 50.63, 12.66, 31.65, 0, 0], [0, 0, 18.99, 12.66, 31.65, 37.97, 6.33, 25.32, 0, 0], [0, 0, 31.65, 18.99, 44.3, 56.96, 12.66, 37.97, 0, 0], [50.63, 25.32, 37.97, 12.66, 25.32, 12.66, 18.99, 18.99, 18.99, 31.65, 25.32, 44.3, 6.33, 37.97, 0, 18.99, 6.33, 6.33, 18.99, 0, 37.97, 0, 50.63, 6.33, 63.29, 0, 82.28, 0, 94.94, 6.33, 101.27, 18.99, 94.94, 37.97, 75.95, 44.3, 82.28, 31.65, 82.28, 18.99, 75.95, 12.66, 63.29, 12.66, 50.63, 25.32], [107.59, 0, 120.25, 12.66, 113.92, 50.63, 88.61, 50.63, 82.28, 69.62, 56.96, 69.62, 56.96, 94.94, 37.97, 94.94, 31.65, 120.25, 18.99, 120.25, 0, 145.57, 0, 101.27, 25.32, 107.59, 18.99, 75.95, 44.3, 82.28, 44.3, 50.63, 75.95, 56.96, 75.95, 31.65, 101.27, 37.97, 107.59, 0], [12.66, 0, 31.65, 0, 50.63, 12.66, 50.63, 37.97, 44.3, 56.96, 31.65, 56.96, 12.66, 50.63, 0, 37.97, 0, 12.66, 12.66, 0], [12.66, 0, 31.65, 6.33, 18.99, 25.32, 0, 18.99, 0, 6.33, 12.66, 0], [0, 18.99, 0, 0, 25.32, 0, 25.32, 25.32, 6.33, 31.65, 0, 18.99], [12.66, 0, 31.65, 6.33, 37.97, 25.32, 25.32, 50.63, 12.66, 50.63, 0, 37.97, 12.66, 0], [6.33, 0, 37.97, 6.33, 0, 50.63, 6.33, 0], [12.66, 0, 31.65, 12.66, 31.65, 25.32, 18.99, 31.65, 0, 25.32, 6.33, 6.33, 12.66, 0], [6.33, 0, 25.32, 0, 31.65, 18.99, 12.66, 25.32, 0, 12.66, 6.33, 0], [12.66, 0, 31.65, 12.66, 25.32, 31.65, 6.33, 31.65, 0, 12.66, 12.66, 0], [12.66, 0, 25.32, 12.66, 18.99, 25.32, 6.33, 31.65, 0, 18.99, 0, 6.33, 12.66, 0], [12.66, 0, 25.32, 6.33, 25.32, 18.99, 12.66, 25.32, 0, 18.99, 0, 6.33, 12.66, 0], [6.33, 0, 18.99, 6.33, 25.32, 12.66, 18.99, 25.32, 6.33, 25.32, 0, 12.66, 6.33, 0], [0, 0, 31.65, 25.32, 0, 37.97, 0, 0], [0, 0, 18.99, 12.66, 18.99, 37.97, 0, 25.32, 0, 0], [0, 0, 25.32, 12.66, 31.65, 37.97, 6.33, 25.32, 0, 0], [12.66, 0, 25.32, 12.66, 12.66, 18.99, 0, 12.66, 12.66, 0], [0, 0, 18.99, 0, 12.66, 12.66, 0, 12.66, 0, 0], [0, 0, 18.99, 0, 18.99, 12.66, 0, 18.99, 0, 0], [0, 0, 12.66, 6.33, 12.66, 12.66, 0, 18.99, 0, 0], [6.33, 0, 25.32, 6.33, 18.99, 18.99, 0, 12.66, 6.33, 0], [0, 6.33, 12.66, 0, 25.32, 12.66, 18.99, 18.99, 0, 6.33], [0, 0, 18.99, 6.33, 12.66, 18.99, 0, 12.66, 0, 0], [12.66, 0, 25.32, 12.66, 18.99, 18.99, 0, 6.33, 12.66, 0], [18.99, 0, 31.65, 6.33, 18.99, 31.65, 0, 18.99, 18.99, 0], [0, 0, 31.65, 25.32, 56.96, 6.33, 44.3, 37.97, 56.96, 75.95, 31.65, 50.63, 0, 75.95, 18.99, 37.97, 0, 0], [0, 18.99, 18.99, 0, 44.3, 31.65, 0, 18.99]], [[0, 0, 31.65, 0, 44.3, 18.99, 25.32, 31.65, 6.33, 25.32, 0, 0], [6.33, 0, 25.32, 0, 25.32, 12.66, 12.66, 25.32, 0, 12.66, 6.33, 0], [0, 44.3, 0, 18.99, 18.99, 0, 31.65, 25.32, 0, 44.3], [0, 6.33, 12.66, 0, 25.32, 6.33, 25.32, 25.32, 0, 31.65, 0, 6.33], [0, 18.99, 25.32, 0, 31.65, 6.33, 31.65, 18.99, 18.99, 31.65, 0, 18.99], [0, 0, 18.99, 6.33, 18.99, 25.32, 6.33, 31.65, 0, 0], [18.99, 0, 25.32, 6.33, 18.99, 25.32, 0, 18.99, 6.33, 6.33, 18.99, 0], [0, 6.33, 69.62, 0, 69.62, 12.66, 75.95, 37.97, 63.29, 44.3, 50.63, 50.63, 31.65, 18.99, 12.66, 18.99, 0, 6.33], [18.99, 12.66, 18.99, 0, 37.97, 31.65, 37.97, 56.96, 12.66, 63.29, 0, 37.97, 6.33, 25.32, 18.99, 12.66], [12.66, 0, 25.32, 12.66, 18.99, 25.32, 31.65, 37.97, 25.32, 50.63, 6.33, 69.62, 6.33, 31.65, 6.33, 18.99, 0, 12.66, 12.66, 0], [12.66, 56.96, 12.66, 37.97, 25.32, 25.32, 18.99, 0, 37.97, 12.66, 50.63, 0, 50.63, 63.29, 37.97, 69.62, 0, 63.29, 12.66, 56.96], [18.99, 18.99, 50.63, 0, 56.96, 25.32, 44.3, 37.97, 25.32, 31.65, 18.99, 31.65, 12.66, 56.96, 18.99, 63.29, 12.66, 63.29, 12.66, 69.62, 6.33, 63.29, 0, 56.96, 6.33, 56.96, 18.99, 18.99], [44.3, 6.33, 69.62, 0, 88.61, 25.32, 44.3, 18.99, 0, 31.65, 12.66, 25.32, 44.3, 6.33], [25.32, 0, 44.3, 6.33, 37.97, 18.99, 18.99, 31.65, 0, 6.33, 25.32, 0], [12.66, 0, 31.65, 6.33, 44.3, 31.65, 31.65, 37.97, 12.66, 31.65, 12.66, 12.66, 0, 6.33, 12.66, 0], [18.99, 0, 37.97, 6.33, 44.3, 18.99, 0, 12.66, 18.99, 0], [18.99, 6.33, 37.97, 0, 18.99, 82.28, 12.66, 69.62, 18.99, 50.63, 12.66, 44.3, 0, 18.99, 18.99, 6.33], [0, 0, 44.3, 0, 63.29, 25.32, 44.3, 31.65, 31.65, 12.66, 0, 12.66, 0, 0], [25.32, 0, 37.97, 25.32, 18.99, 44.3, 0, 44.3, 18.99, 25.32, 6.33, 0, 25.32, 0], [0, 0, 25.32, 6.33, 37.97, 25.32, 18.99, 50.63, 0, 44.3, 18.99, 25.32, 0, 0], [0, 0, 12.66, 0, 31.65, 18.99, 18.99, 44.3, 0, 44.3, 12.66, 18.99, 0, 0], [25.32, 6.33, 6.33, 6.33, 0, 0, 44.3, 6.33, 25.32, 6.33], [12.66, 0, 18.99, 6.33, 25.32, 25.32, 12.66, 50.63, 0, 50.63, 12.66, 25.32, 0, 0, 12.66, 0], [0, 12.66, 18.99, 0, 50.63, 0, 69.62, 12.66, 50.63, 37.97, 18.99, 37.97, 0, 12.66], [0, 0, 12.66, 0, 12.66, 6.33, 0, 6.33, 0, 0], [0, 0, 12.66, 0, 12.66, 6.33, 0, 6.33, 0, 0], [44.3, 31.65, 12.66, 31.65, 0, 12.66, 6.33, 0, 6.33, 6.33, 6.33, 12.66, 18.99, 12.66, 18.99, 6.33, 37.97, 6.33, 37.97, 12.66, 50.63, 12.66, 50.63, 6.33, 50.63, 0, 56.96, 12.66, 44.3, 31.65], [0, 12.66, 0, 6.33, 6.33, 0, 12.66, 6.33, 18.99, 0, 25.32, 6.33, 31.65, 0, 37.97, 6.33, 44.3, 0, 44.3, 18.99, 0, 18.99, 0, 12.66], [0, 44.3, 12.66, 37.97, 12.66, 0, 31.65, 44.3, 6.33, 69.62, 0, 63.29, 0, 44.3], [25.32, 69.62, 0, 37.97, 18.99, 0, 18.99, 37.97, 31.65, 50.63, 31.65, 56.96, 25.32, 69.62], [12.66, 6.33, 25.32, 0, 31.65, 12.66, 18.99, 12.66, 31.65, 18.99, 12.66, 25.32, 18.99, 37.97, 0, 18.99, 12.66, 6.33], [56.96, 18.99, 37.97, 18.99, 44.3, 31.65, 31.65, 18.99, 12.66, 18.99, 18.99, 31.65, 0, 18.99, 6.33, 12.66, 18.99, 12.66, 25.32, 0, 25.32, 12.66, 44.3, 12.66, 56.96, 0, 50.63, 12.66, 63.29, 12.66, 56.96, 18.99], [12.66, 0, 6.33, 12.66, 6.33, 25.32, 0, 25.32, 0, 12.66, 6.33, 0, 12.66, 0], [0, 12.66, 18.99, 25.32, 25.32, 0, 31.65, 31.65, 50.63, 0, 50.63, 31.65, 75.95, 18.99, 50.63, 50.63, 25.32, 44.3, 0, 12.66], [31.65, 240.51, 44.3, 215.19, 44.3, 177.22, 31.65, 75.95, 0, 44.3, 37.97, 56.96, 50.63, 0, 56.96, 50.63, 82.28, 0, 75.95, 56.96, 120.25, 25.32, 82.28, 75.95, 69.62, 120.25, 63.29, 177.22, 69.62, 215.19, 88.61, 240.51, 63.29, 234.18, 63.29, 253.16, 50.63, 234.18, 37.97, 253.16, 31.65, 240.51], [6.33, 94.94, 44.3, 44.3, 0, 75.95, 12.66, 37.97, 31.65, 31.65, 37.97, 0, 56.96, 25.32, 56.96, 75.95, 25.32, 107.59, 0, 120.25, 6.33, 94.94], [31.65, 44.3, 31.65, 37.97, 6.33, 88.61, 0, 37.97, 12.66, 25.32, 31.65, 0, 63.29, 18.99, 56.96, 50.63, 37.97, 56.96, 25.32, 94.94, 31.65, 44.3], [12.66, 82.28, 0, 56.96, 25.32, 18.99, 50.63, 0, 94.94, 0, 75.95, 25.32, 63.29, 37.97, 50.63, 94.94, 12.66, 82.28], [18.99, 25.32, 50.63, 56.96, 50.63, 75.95, 25.32, 69.62, 0, 37.97, 6.33, 0, 18.99, 25.32], [25.32, 88.61, 18.99, 63.29, 6.33, 63.29, 18.99, 50.63, 12.66, 31.65, 0, 31.65, 12.66, 25.32, 6.33, 6.33, 12.66, 0, 25.32, 37.97, 37.97, 37.97, 25.32, 44.3, 37.97, 88.61, 25.32, 88.61], [18.99, 94.94, 18.99, 56.96, 6.33, 56.96, 18.99, 50.63, 12.66, 25.32, 0, 25.32, 12.66, 18.99, 12.66, 0, 25.32, 0, 25.32, 25.32, 37.97, 25.32, 25.32, 31.65, 31.65, 75.95, 44.3, 75.95, 31.65, 82.28, 31.65, 94.94, 18.99, 94.94], [25.32, 18.99, 18.99, 25.32, 6.33, 31.65, 0, 25.32, 12.66, 18.99, 6.33, 12.66, 12.66, 0, 18.99, 12.66, 18.99, 6.33, 25.32, 0, 37.97, 6.33, 25.32, 18.99], [31.65, 18.99, 18.99, 18.99, 0, 6.33, 12.66, 6.33, 18.99, 0, 31.65, 6.33, 37.97, 0, 44.3, 6.33, 37.97, 18.99, 31.65, 18.99], [12.66, 259.49, 6.33, 101.27, 0, 0, 18.99, 56.96, 18.99, 164.56, 44.3, 139.24, 31.65, 177.22, 18.99, 177.22, 18.99, 259.49, 12.66, 259.49], [6.33, 227.85, 0, 164.56, 0, 0, 6.33, 25.32, 6.33, 151.9, 18.99, 227.85, 6.33, 227.85], [0, 215.19, 18.99, 145.57, 31.65, 69.62, 18.99, 0, 37.97, 69.62, 31.65, 126.58, 50.63, 126.58, 31.65, 139.24, 18.99, 189.87, 6.33, 215.19, 0, 215.19], [31.65, 37.97, 0, 12.66, 31.65, 25.32, 31.65, 0, 44.3, 25.32, 63.29, 6.33, 69.62, 25.32, 94.94, 12.66, 63.29, 37.97, 31.65, 37.97], [12.66, 6.33, 25.32, 6.33, 37.97, 0, 56.96, 6.33, 69.62, 0, 82.28, 6.33, 94.94, 0, 107.59, 25.32, 88.61, 44.3, 75.95, 31.65, 50.63, 44.3, 37.97, 25.32, 18.99, 37.97, 0, 25.32, 12.66, 6.33], [6.33, 12.66, 18.99, 0, 37.97, 6.33, 50.63, 0, 63.29, 6.33, 75.95, 0, 94.94, 12.66, 75.95, 31.65, 69.62, 25.32, 44.3, 37.97, 31.65, 25.32, 12.66, 44.3, 0, 25.32, 6.33, 12.66], [12.66, 0, 25.32, 0, 37.97, 0, 50.63, 6.33, 63.29, 0, 75.95, 12.66, 63.29, 25.32, 50.63, 18.99, 31.65, 25.32, 18.99, 12.66, 6.33, 18.99, 0, 6.33, 12.66, 0], [18.99, 0, 31.65, 6.33, 44.3, 0, 56.96, 6.33, 82.28, 0, 75.95, 25.32, 63.29, 37.97, 50.63, 25.32, 37.97, 37.97, 25.32, 25.32, 12.66, 31.65, 0, 12.66, 18.99, 0], [18.99, 0, 31.65, 6.33, 44.3, 0, 63.29, 0, 63.29, 25.32, 44.3, 25.32, 37.97, 37.97, 25.32, 25.32, 18.99, 37.97, 0, 18.99, 18.99, 0]], [[0, 0, 31.65, 0, 31.65, 82.28, 0, 82.28, 0, 0], [0, 0, 31.65, 0, 31.65, 82.28, 0, 82.28, 0, 0], [0, 0, 31.65, 0, 31.65, 63.29, 0, 63.29, 0, 0], [31.65, 0, 31.65, 63.29, 0, 63.29, 0, 0, 31.65, 0], [0, 0, 37.97, 0, 37.97, 63.29, 0, 63.29, 0, 0], [18.99, 18.99, 37.97, 0, 25.32, 31.65, 50.63, 31.65, 31.65, 44.3, 18.99, 82.28, 0, 50.63, 18.99, 18.99], [12.66, 31.65, 18.99, 0, 37.97, 25.32, 50.63, 18.99, 37.97, 37.97, 44.3, 75.95, 18.99, 37.97, 0, 37.97, 12.66, 31.65], [0, 31.65, 6.33, 0, 25.32, 18.99, 25.32, 31.65, 44.3, 63.29, 6.33, 69.62, 6.33, 37.97, 0, 31.65], [0, 44.3, 12.66, 6.33, 50.63, 0, 63.29, 37.97, 63.29, 44.3, 75.95, 37.97, 63.29, 69.62, 50.63, 50.63, 56.96, 44.3, 44.3, 18.99, 18.99, 18.99, 18.99, 50.63, 0, 44.3], [18.99, 69.62, 6.33, 69.62, 25.32, 37.97, 12.66, 18.99, 0, 18.99, 0, 0, 25.32, 6.33, 18.99, 12.66, 37.97, 37.97, 18.99, 69.62], [25.32, 50.63, 44.3, 31.65, 31.65, 12.66, 25.32, 18.99, 25.32, 0, 44.3, 0, 37.97, 6.33, 50.63, 18.99, 63.29, 18.99, 82.28, 18.99, 82.28, 12.66, 101.27, 18.99, 82.28, 37.97, 82.28, 31.65, 56.96, 31.65, 50.63, 50.63, 31.65, 63.29, 6.33, 69.62, 0, 56.96, 12.66, 50.63, 25.32, 50.63], [50.63, 63.29, 37.97, 18.99, 12.66, 37.97, 18.99, 44.3, 0, 56.96, 0, 31.65, 6.33, 31.65, 18.99, 12.66, 44.3, 0, 63.29, 50.63, 50.63, 63.29], [31.65, 6.33, 37.97, 0, 37.97, 44.3, 50.63, 31.65, 82.28, 44.3, 69.62, 75.95, 50.63, 56.96, 18.99, 75.95, 0, 56.96, 18.99, 50.63, 31.65, 6.33], [44.3, 0, 63.29, 44.3, 88.61, 50.63, 44.3, 69.62, 0, 50.63, 25.32, 44.3, 44.3, 0], [18.99, 0, 37.97, 44.3, 31.65, 56.96, 18.99, 63.29, 6.33, 56.96, 0, 44.3, 18.99, 0], [18.99, 12.66, 12.66, 12.66, 12.66, 0, 37.97, 0, 37.97, 12.66, 31.65, 12.66, 31.65, 63.29, 50.63, 63.29, 37.97, 88.61, 6.33, 88.61, 0, 63.29, 18.99, 63.29, 18.99, 50.63, 18.99, 12.66], [18.99, 25.32, 25.32, 31.65, 31.65, 0, 37.97, 31.65, 44.3, 25.32, 50.63, 56.96, 63.29, 63.29, 50.63, 82.28, 37.97, 69.62, 18.99, 82.28, 0, 69.62, 25.32, 56.96, 18.99, 25.32], [12.66, 31.65, 6.33, 0, 25.32, 18.99, 44.3, 6.33, 31.65, 25.32, 37.97, 44.3, 18.99, 37.97, 0, 44.3, 12.66, 31.65], [18.99, 0, 37.97, 50.63, 0, 50.63, 18.99, 0], [18.99, 0, 31.65, 31.65, 0, 31.65, 18.99, 0], [12.66, 0, 31.65, 31.65, 0, 31.65, 12.66, 0], [18.99, 0, 31.65, 18.99, 0, 18.99, 18.99, 0], [12.66, 0, 31.65, 18.99, 0, 18.99, 12.66, 0], [0, 12.66, 6.33, 0, 25.32, 12.66, 12.66, 31.65, 0, 37.97, 0, 12.66], [12.66, 0, 31.65, 6.33, 18.99, 18.99, 0, 18.99, 12.66, 0], [6.33, 0, 25.32, 6.33, 12.66, 25.32, 0, 12.66, 6.33, 0], [18.99, 0, 37.97, 12.66, 18.99, 25.32, 0, 18.99, 18.99, 0], [0, 18.99, 6.33, 18.99, 12.66, 0, 25.32, 18.99, 12.66, 37.97, 0, 18.99], [0, 12.66, 12.66, 0, 25.32, 18.99, 6.33, 31.65, 0, 12.66], [12.66, 0, 25.32, 12.66, 18.99, 18.99, 6.33, 25.32, 0, 12.66, 0, 6.33, 12.66, 0], [6.33, 31.65, 31.65, 0, 37.97, 18.99, 69.62, 0, 82.28, 18.99, 31.65, 31.65, 31.65, 18.99, 0, 37.97, 6.33, 31.65], [31.65, 0, 37.97, 31.65, 63.29, 50.63, 31.65, 44.3, 0, 56.96, 25.32, 31.65, 31.65, 0], [12.66, 0, 25.32, 50.63, 0, 50.63, 12.66, 0], [0, 50.63, 12.66, 0, 31.65, 50.63, 0, 50.63], [0, 31.65, 31.65, 0, 18.99, 31.65, 0, 31.65], [0, 0, 37.97, 31.65, 12.66, 31.65, 0, 0], [6.33, 0, 18.99, 31.65, 0, 31.65, 6.33, 0], [0, 0, 6.33, 18.99, 18.99, 25.32, 12.66, 37.97, 0, 25.32, 0, 0], [0, 0, 25.32, 31.65, 12.66, 50.63, 0, 44.3, 6.33, 31.65, 0, 0], [12.66, 18.99, 25.32, 0, 25.32, 31.65, 12.66, 50.63, 0, 50.63, 6.33, 37.97, 12.66, 18.99], [12.66, 0, 12.66, 18.99, 12.66, 44.3, 0, 44.3, 0, 18.99, 12.66, 0], [12.66, 0, 12.66, 18.99, 25.32, 25.32, 37.97, 18.99, 37.97, 0, 50.63, 18.99, 37.97, 37.97, 31.65, 75.95, 12.66, 75.95, 12.66, 37.97, 0, 25.32, 12.66, 0]], [[31.65, 50.63, 37.97, 37.97, 50.63, 37.97, 56.96, 44.3, 63.29, 56.96, 63.29, 69.62, 50.63, 82.28, 31.65, 88.61, 12.66, 82.28, 0, 63.29, 6.33, 31.65, 18.99, 12.66, 31.65, 0, 31.65, 12.66, 18.99, 25.32, 12.66, 50.63, 12.66, 63.29, 18.99, 75.95, 44.3, 75.95, 50.63, 63.29, 50.63, 50.63, 44.3, 50.63, 37.97, 50.63, 31.65, 63.29, 31.65, 50.63], [6.33, 12.66, 12.66, 6.33, 18.99, 0, 31.65, 6.33, 31.65, 25.32, 12.66, 31.65, 0, 18.99, 6.33, 12.66], [25.32, 0, 37.97, 12.66, 37.97, 63.29, 12.66, 56.96, 0, 37.97, 12.66, 6.33, 18.99, 6.33, 12.66, 18.99, 12.66, 31.65, 25.32, 44.3, 25.32, 0], [31.65, 6.33, 31.65, 18.99, 12.66, 31.65, 0, 25.32, 0, 6.33, 12.66, 0, 31.65, 6.33], [0, 0, 31.65, 0, 31.65, 12.66, 0, 12.66, 0, 0], [6.33, 0, 18.99, 6.33, 18.99, 18.99, 12.66, 25.32, 6.33, 25.32, 0, 18.99, 0, 6.33, 6.33, 0], [12.66, 18.99, 12.66, 69.62, 12.66, 94.94, 0, 94.94, 0, 31.65, 6.33, 6.33, 18.99, 0, 18.99, 12.66, 12.66, 18.99], [31.65, 6.33, 31.65, 18.99, 18.99, 31.65, 0, 18.99, 12.66, 18.99, 18.99, 18.99, 12.66, 0, 31.65, 6.33], [0, 0, 18.99, 0, 18.99, 126.58, 0, 126.58, 0, 0], [6.33, 0, 31.65, 0, 31.65, 12.66, 0, 12.66, 0, 0, 6.33, 0], [6.33, 0, 12.66, 0, 18.99, 6.33, 18.99, 18.99, 12.66, 25.32, 6.33, 25.32, 0, 18.99, 0, 6.33, 6.33, 0], [18.99, 0, 25.32, 6.33, 31.65, 6.33, 31.65, 50.63, 12.66, 44.3, 0, 25.32, 6.33, 6.33, 12.66, 12.66, 12.66, 25.32, 18.99, 37.97, 25.32, 37.97, 18.99, 12.66, 18.99, 0], [37.97, 6.33, 37.97, 56.96, 12.66, 44.3, 0, 25.32, 6.33, 6.33, 12.66, 6.33, 12.66, 25.32, 25.32, 37.97, 25.32, 0, 37.97, 6.33], [18.99, 0, 25.32, 6.33, 31.65, 6.33, 31.65, 50.63, 12.66, 44.3, 0, 18.99, 6.33, 6.33, 12.66, 12.66, 12.66, 25.32, 18.99, 37.97, 25.32, 37.97, 18.99, 0], [0, 0, 101.27, 0, 132.91, 0, 196.2, 0, 208.86, 0, 221.52, 0, 240.51, 0, 303.8, 0, 392.41, 0, 417.72, 0, 455.7, 0, 468.35, 0, 474.68, 0, 474.68, 12.66, 468.35, 12.66, 443.04, 12.66, 329.11, 12.66, 303.8, 12.66, 240.51, 12.66, 221.52, 12.66, 208.86, 12.66, 183.54, 12.66, 126.58, 12.66, 120.25, 18.99, 101.27, 18.99, 94.94, 12.66, 0, 12.66, 0, 0], [0, 0, 151.9, 0, 177.22, 0, 189.87, 0, 208.86, 0, 411.39, 0, 436.71, 0, 443.04, 0, 443.04, 12.66, 208.86, 12.66, 189.87, 12.66, 0, 12.66, 0, 0], [18.99, 0, 31.65, 6.33, 31.65, 18.99, 25.32, 25.32, 6.33, 25.32, 0, 18.99, 0, 6.33, 18.99, 0], [0, 6.33, 6.33, 0, 12.66, 0, 18.99, 0, 25.32, 6.33, 18.99, 12.66, 6.33, 12.66, 0, 6.33], [12.66, 0, 25.32, 6.33, 25.32, 18.99, 12.66, 25.32, 0, 18.99, 0, 6.33, 12.66, 0], [6.33, 0, 18.99, 0, 25.32, 6.33, 18.99, 12.66, 6.33, 12.66, 0, 6.33, 6.33, 0], [0, 12.66, 0, 0, 113.92, 0, 126.58, 0, 202.53, 0, 215.19, 0, 221.52, 0, 240.51, 0, 316.46, 0, 329.11, 0, 405.06, 0, 417.72, 0, 455.7, 0, 468.35, 0, 474.68, 0, 474.68, 12.66, 468.35, 12.66, 455.7, 12.66, 417.72, 12.66, 392.41, 12.66, 329.11, 12.66, 316.46, 12.66, 240.51, 12.66, 221.52, 12.66, 215.19, 12.66, 202.53, 12.66, 126.58, 12.66, 113.92, 12.66, 0, 12.66], [0, 6.33, 0, 0, 107.59, 0, 120.25, 0, 196.2, 0, 208.86, 0, 215.19, 0, 234.18, 0, 310.13, 0, 322.78, 0, 398.73, 0, 411.39, 0, 430.38, 0, 468.35, 0, 468.35, 6.33, 462.03, 6.33, 449.37, 6.33, 411.39, 6.33, 398.73, 6.33, 322.78, 6.33, 310.13, 6.33, 234.18, 6.33, 215.19, 6.33, 208.86, 6.33, 196.2, 6.33, 120.25, 6.33, 107.59, 6.33, 0, 6.33], [506.33, 12.66, 468.35, 12.66, 436.71, 6.33, 436.71, 12.66, 360.76, 12.66, 348.1, 12.66, 272.15, 12.66, 253.16, 12.66, 158.23, 12.66, 145.57, 12.66, 0, 12.66, 0, 6.33, 151.9, 6.33, 259.49, 6.33, 354.43, 6.33, 430.38, 6.33, 443.04, 0, 449.37, 6.33, 506.33, 6.33, 506.33, 12.66], [6.33, 0, 31.65, 0, 25.32, 6.33, 18.99, 12.66, 6.33, 12.66, 0, 6.33, 6.33, 0], [12.66, 50.63, 0, 50.63, 0, 37.97, 0, 25.32, 0, 18.99, 0, 0, 44.3, 18.99, 56.96, 25.32, 56.96, 37.97, 56.96, 50.63, 56.96, 63.29, 56.96, 75.95, 50.63, 75.95, 50.63, 63.29, 50.63, 50.63, 50.63, 37.97, 25.32, 25.32, 12.66, 18.99, 12.66, 37.97, 12.66, 50.63], [0, 50.63, 0, 44.3, 0, 31.65, 0, 18.99, 0, 12.66, 0, 0, 12.66, 0, 12.66, 12.66, 12.66, 31.65, 12.66, 44.3, 12.66, 56.96, 0, 50.63], [0, 44.3, 0, 37.97, 0, 25.32, 0, 0, 12.66, 0, 12.66, 6.33, 12.66, 12.66, 12.66, 25.32, 12.66, 37.97, 12.66, 44.3, 12.66, 50.63, 12.66, 63.29, 12.66, 69.62, 6.33, 63.29, 0, 63.29, 0, 50.63, 0, 44.3], [0, 50.63, 0, 44.3, 0, 31.65, 0, 18.99, 0, 12.66, 0, 0, 12.66, 0, 12.66, 18.99, 12.66, 31.65, 12.66, 44.3, 12.66, 56.96, 0, 50.63], [75.95, 0, 75.95, 94.94, 12.66, 101.27, 0, 12.66, 75.95, 0], [0, 0, 75.95, 12.66, 63.29, 101.27, 0, 94.94, 0, 0], [18.99, 0, 18.99, 12.66, 31.65, 101.27, 94.94, 94.94, 158.23, 101.27, 170.89, 12.66, 170.89, 0, 183.54, 0, 189.87, 12.66, 177.22, 101.27, 164.56, 126.58, 25.32, 126.58, 12.66, 101.27, 0, 12.66, 6.33, 0, 18.99, 0], [0, 0, 37.97, 0, 25.32, 6.33, 0, 6.33, 0, 0], [0, 12.66, 0, 0, 18.99, 0, 18.99, 12.66, 0, 12.66], [0, 12.66, 6.33, 0, 18.99, 0, 18.99, 12.66, 0, 12.66], [0, 0, 12.66, 0, 12.66, 25.32, 18.99, 25.32, 18.99, 44.3, 0, 44.3, 0, 0], [0, 25.32, 6.33, 25.32, 6.33, 0, 18.99, 0, 18.99, 25.32, 25.32, 25.32, 25.32, 44.3, 0, 44.3, 0, 25.32], [6.33, 0, 18.99, 0, 18.99, 44.3, 0, 44.3, 0, 25.32, 6.33, 25.32, 6.33, 0], [0, 0, 12.66, 0, 12.66, 25.32, 18.99, 25.32, 18.99, 44.3, 0, 44.3, 0, 0], [0, 0, 12.66, 0, 12.66, 25.32, 0, 25.32, 0, 0], [0, 0, 12.66, 0, 12.66, 25.32, 0, 25.32, 0, 0], [0, 6.33, 0, 0, 12.66, 0, 12.66, 25.32, 0, 25.32, 0, 6.33], [0, 25.32, 6.33, 25.32, 6.33, 0, 18.99, 0, 18.99, 25.32, 25.32, 25.32, 25.32, 44.3, 0, 44.3, 0, 25.32], [0, 25.32, 6.33, 25.32, 6.33, 0, 18.99, 0, 18.99, 25.32, 25.32, 25.32, 25.32, 44.3, 0, 44.3, 0, 25.32], [0, 25.32, 6.33, 25.32, 6.33, 0, 18.99, 0, 18.99, 44.3, 0, 44.3, 0, 25.32], [0, 0, 12.66, 0, 12.66, 25.32, 0, 25.32, 0, 0], [0, 0, 12.66, 0, 12.66, 25.32, 0, 25.32, 0, 0], [0, 0, 12.66, 0, 12.66, 25.32, 18.99, 25.32, 18.99, 44.3, 0, 44.3, 0, 0], [0, 25.32, 6.33, 25.32, 6.33, 0, 18.99, 0, 18.99, 25.32, 25.32, 25.32, 25.32, 44.3, 0, 44.3, 0, 25.32], [0, 25.32, 6.33, 25.32, 6.33, 0, 18.99, 0, 18.99, 44.3, 0, 44.3, 0, 25.32], [0, 0, 12.66, 0, 12.66, 25.32, 0, 25.32, 0, 0], [0, 6.33, 0, 0, 12.66, 0, 12.66, 25.32, 0, 25.32, 0, 6.33], [25.32, 6.33, 25.32, 18.99, 12.66, 25.32, 0, 12.66, 12.66, 0, 25.32, 6.33], [12.66, 50.63, 0, 44.3, 0, 0, 12.66, 0, 12.66, 6.33, 12.66, 50.63], [18.99, 6.33, 18.99, 18.99, 12.66, 25.32, 0, 18.99, 0, 6.33, 6.33, 0, 18.99, 6.33], [12.66, 50.63, 0, 44.3, 0, 0, 18.99, 6.33, 31.65, 25.32, 31.65, 44.3, 25.32, 37.97, 18.99, 18.99, 12.66, 12.66, 12.66, 44.3, 12.66, 50.63], [18.99, 6.33, 18.99, 25.32, 6.33, 25.32, 0, 12.66, 6.33, 0, 18.99, 6.33], [12.66, 44.3, 6.33, 37.97, 0, 37.97, 0, 0, 12.66, 0, 12.66, 44.3], [0, 0, 12.66, 0, 12.66, 44.3, 227.85, 44.3, 227.85, 0, 240.51, 0, 240.51, 56.96, 0, 56.96, 0, 0], [0, 0, 240.51, 0, 240.51, 12.66, 0, 12.66, 0, 0], [31.65, 6.33, 25.32, 25.32, 6.33, 25.32, 0, 12.66, 6.33, 0, 18.99, 0, 31.65, 6.33], [12.66, 44.3, 12.66, 50.63, 6.33, 63.29, 0, 63.29, 0, 0, 12.66, 6.33, 12.66, 44.3], [31.65, 50.63, 44.3, 56.96, 44.3, 69.62, 37.97, 75.95, 25.32, 69.62, 25.32, 18.99, 12.66, 37.97, 12.66, 56.96, 6.33, 63.29, 0, 37.97, 18.99, 6.33, 31.65, 0, 31.65, 50.63]], [[0, 31.65, 31.65, 0, 56.96, 56.96, 82.28, 107.59, 56.96, 120.25, 0, 31.65], [25.32, 113.92, 0, 12.66, 18.99, 0, 44.3, 6.33, 50.63, 101.27, 25.32, 113.92], [0, 101.27, 0, 0, 31.65, 0, 37.97, 75.95, 31.65, 101.27, 0, 101.27], [82.28, 31.65, 25.32, 120.25, 0, 107.59, 25.32, 56.96, 50.63, 0, 82.28, 31.65], [25.32, 113.92, 0, 101.27, 6.33, 6.33, 31.65, 0, 50.63, 12.66, 25.32, 113.92], [37.97, 101.27, 6.33, 101.27, 0, 75.95, 6.33, 0, 37.97, 0, 37.97, 101.27], [37.97, 0, 63.29, 25.32, 37.97, 44.3, 0, 25.32, 37.97, 0], [0, 12.66, 31.65, 0, 69.62, 6.33, 37.97, 31.65, 0, 12.66], [6.33, 0, 31.65, 0, 50.63, 6.33, 44.3, 25.32, 25.32, 37.97, 0, 31.65, 12.66, 12.66, 6.33, 0], [50.63, 31.65, 31.65, 37.97, 0, 25.32, 12.66, 6.33, 37.97, 0, 63.29, 6.33, 50.63, 31.65], [25.32, 0, 44.3, 6.33, 50.63, 18.99, 25.32, 37.97, 6.33, 31.65, 0, 18.99, 25.32, 0], [25.32, 0, 37.97, 6.33, 44.3, 18.99, 31.65, 37.97, 0, 37.97, 0, 6.33, 25.32, 0], [0, 0, 18.99, 12.66, 18.99, 25.32, 0, 31.65, 0, 0], [25.32, 0, 37.97, 6.33, 50.63, 12.66, 25.32, 25.32, 0, 18.99, 25.32, 0], [18.99, 0, 44.3, 6.33, 37.97, 25.32, 12.66, 31.65, 0, 18.99, 0, 0, 18.99, 0], [6.33, 6.33, 12.66, 0, 31.65, 0, 50.63, 12.66, 37.97, 31.65, 18.99, 31.65, 0, 18.99, 6.33, 6.33], [12.66, 6.33, 31.65, 0, 44.3, 6.33, 50.63, 12.66, 44.3, 18.99, 37.97, 25.32, 12.66, 37.97, 0, 31.65, 0, 12.66, 12.66, 6.33], [44.3, 12.66, 37.97, 25.32, 18.99, 37.97, 0, 31.65, 0, 12.66, 12.66, 0, 31.65, 0, 44.3, 12.66], [37.97, 6.33, 50.63, 31.65, 25.32, 44.3, 0, 37.97, 0, 18.99, 18.99, 0, 37.97, 6.33], [18.99, 0, 44.3, 12.66, 31.65, 18.99, 18.99, 37.97, 0, 12.66, 18.99, 0], [18.99, 0, 44.3, 12.66, 31.65, 31.65, 6.33, 37.97, 0, 12.66, 18.99, 0], [18.99, 0, 25.32, 0, 12.66, 31.65, 0, 18.99, 18.99, 0], [44.3, 0, 44.3, 12.66, 44.3, 31.65, 12.66, 37.97, 0, 18.99, 18.99, 0, 44.3, 0], [18.99, 0, 37.97, 0, 44.3, 12.66, 25.32, 31.65, 6.33, 31.65, 0, 12.66, 18.99, 0], [25.32, 0, 37.97, 6.33, 37.97, 25.32, 18.99, 37.97, 0, 25.32, 6.33, 12.66, 25.32, 0], [31.65, 6.33, 37.97, 18.99, 25.32, 37.97, 0, 31.65, 0, 12.66, 12.66, 0, 31.65, 6.33], [25.32, 0, 37.97, 25.32, 18.99, 37.97, 6.33, 31.65, 0, 25.32, 0, 12.66, 25.32, 0], [25.32, 0, 37.97, 12.66, 31.65, 31.65, 12.66, 31.65, 0, 25.32, 6.33, 6.33, 25.32, 0], [12.66, 0, 25.32, 6.33, 25.32, 18.99, 18.99, 31.65, 6.33, 31.65, 0, 12.66, 12.66, 0], [18.99, 0, 31.65, 12.66, 25.32, 25.32, 6.33, 31.65, 0, 12.66, 18.99, 0], [12.66, 0, 18.99, 0, 25.32, 18.99, 12.66, 31.65, 6.33, 31.65, 0, 12.66, 12.66, 0], [25.32, 6.33, 25.32, 25.32, 6.33, 37.97, 0, 25.32, 12.66, 0, 25.32, 6.33], [12.66, 0, 18.99, 0, 25.32, 12.66, 44.3, 25.32, 25.32, 31.65, 0, 25.32, 0, 12.66, 12.66, 0], [31.65, 6.33, 50.63, 0, 50.63, 18.99, 31.65, 18.99, 18.99, 31.65, 0, 18.99, 0, 6.33, 6.33, 0, 31.65, 6.33], [18.99, 0, 37.97, 6.33, 31.65, 25.32, 6.33, 25.32, 0, 6.33, 18.99, 0], [6.33, 0, 25.32, 6.33, 25.32, 18.99, 12.66, 31.65, 0, 18.99, 6.33, 0], [18.99, 0, 37.97, 12.66, 25.32, 25.32, 12.66, 25.32, 0, 12.66, 18.99, 0], [18.99, 0, 31.65, 6.33, 25.32, 18.99, 0, 18.99, 6.33, 6.33, 18.99, 0], [0, 0, 12.66, 18.99, 12.66, 44.3, 0, 25.32, 0, 0], [6.33, 0, 12.66, 18.99, 6.33, 37.97, 0, 18.99, 6.33, 0], [6.33, 0, 12.66, 18.99, 6.33, 37.97, 0, 18.99, 6.33, 0], [12.66, 0, 18.99, 18.99, 6.33, 37.97, 0, 18.99, 12.66, 0], [12.66, 0, 18.99, 18.99, 0, 37.97, 0, 12.66, 12.66, 0], [0, 31.65, 12.66, 12.66, 31.65, 12.66, 37.97, 6.33, 69.62, 0, 88.61, 0, 88.61, 25.32, 63.29, 25.32, 50.63, 18.99, 31.65, 31.65, 18.99, 37.97, 0, 31.65], [0, 18.99, 18.99, 6.33, 31.65, 12.66, 50.63, 12.66, 75.95, 0, 82.28, 12.66, 69.62, 25.32, 44.3, 31.65, 25.32, 25.32, 6.33, 25.32, 0, 18.99], [75.95, 12.66, 50.63, 31.65, 31.65, 25.32, 25.32, 31.65, 6.33, 44.3, 0, 31.65, 12.66, 18.99, 37.97, 12.66, 37.97, 0, 69.62, 0, 75.95, 12.66], [12.66, 69.62, 0, 56.96, 18.99, 37.97, 25.32, 18.99, 37.97, 12.66, 44.3, 0, 63.29, 12.66, 44.3, 18.99, 50.63, 31.65, 44.3, 37.97, 25.32, 50.63, 25.32, 63.29, 18.99, 69.62, 12.66, 69.62], [0, 0, 18.99, 0, 31.65, 6.33, 50.63, 6.33, 56.96, 0, 82.28, 0, 82.28, 6.33, 63.29, 12.66, 37.97, 25.32, 25.32, 25.32, 18.99, 12.66, 0, 0], [0, 56.96, 12.66, 50.63, 18.99, 25.32, 31.65, 12.66, 44.3, 0, 56.96, 6.33, 44.3, 18.99, 37.97, 44.3, 18.99, 56.96, 12.66, 69.62, 0, 69.62, 0, 56.96], [6.33, 88.61, 18.99, 75.95, 6.33, 56.96, 18.99, 31.65, 0, 18.99, 12.66, 0, 25.32, 18.99, 31.65, 37.97, 25.32, 56.96, 31.65, 69.62, 31.65, 88.61, 25.32, 107.59, 6.33, 88.61], [44.3, 44.3, 37.97, 63.29, 56.96, 75.95, 56.96, 94.94, 31.65, 94.94, 12.66, 63.29, 0, 56.96, 6.33, 44.3, 0, 31.65, 12.66, 25.32, 18.99, 6.33, 31.65, 12.66, 37.97, 18.99, 50.63, 0, 56.96, 18.99, 63.29, 31.65, 44.3, 44.3], [25.32, 12.66, 56.96, 0, 63.29, 18.99, 75.95, 25.32, 50.63, 31.65, 37.97, 44.3, 12.66, 31.65, 31.65, 25.32, 0, 12.66, 25.32, 12.66]], [[69.62, 25.32, 75.95, 31.65, 69.62, 44.3, 37.97, 18.99, 25.32, 37.97, 18.99, 82.28, 25.32, 107.59, 44.3, 132.91, 37.97, 151.9, 12.66, 120.25, 0, 88.61, 6.33, 50.63, 25.32, 12.66, 37.97, 0, 50.63, 18.99, 69.62, 25.32], [37.97, 12.66, 63.29, 12.66, 75.95, 6.33, 82.28, 0, 94.94, 18.99, 101.27, 44.3, 94.94, 69.62, 82.28, 101.27, 69.62, 120.25, 50.63, 132.91, 18.99, 145.57, 0, 132.91, 6.33, 113.92, 18.99, 126.58, 44.3, 120.25, 63.29, 101.27, 82.28, 63.29, 82.28, 31.65, 75.95, 25.32, 50.63, 25.32, 31.65, 25.32, 37.97, 12.66], [37.97, 25.32, 0, 12.66, 6.33, 0, 37.97, 25.32], [12.66, 0, 50.63, 12.66, 56.96, 12.66, 44.3, 63.29, 0, 50.63, 6.33, 6.33, 12.66, 0], [44.3, 12.66, 37.97, 63.29, 25.32, 50.63, 6.33, 25.32, 0, 0, 44.3, 12.66], [12.66, 0, 50.63, 0, 56.96, 6.33, 56.96, 37.97, 50.63, 50.63, 0, 50.63, 12.66, 0], [6.33, 0, 56.96, 0, 44.3, 25.32, 25.32, 44.3, 0, 50.63, 6.33, 0], [50.63, 31.65, 75.95, 56.96, 69.62, 69.62, 63.29, 82.28, 12.66, 31.65, 0, 18.99, 25.32, 0, 50.63, 31.65], [0, 18.99, 6.33, 12.66, 12.66, 0, 56.96, 56.96, 0, 18.99], [12.66, 63.29, 0, 50.63, 18.99, 31.65, 44.3, 12.66, 75.95, 0, 82.28, 12.66, 56.96, 25.32, 31.65, 44.3, 12.66, 63.29], [6.33, 18.99, 0, 12.66, 18.99, 0, 44.3, 18.99, 18.99, 37.97, 6.33, 18.99], [37.97, 18.99, 18.99, 31.65, 0, 12.66, 18.99, 0, 37.97, 18.99], [31.65, 12.66, 12.66, 25.32, 0, 25.32, 0, 12.66, 18.99, 0, 31.65, 0, 31.65, 12.66], [0, 18.99, 0, 0, 126.58, 0, 126.58, 18.99, 0, 18.99], [25.32, 75.95, 0, 82.28, 0, 6.33, 12.66, 18.99, 18.99, 31.65, 12.66, 37.97, 12.66, 50.63, 31.65, 44.3, 37.97, 25.32, 31.65, 12.66, 37.97, 0, 50.63, 12.66, 63.29, 0, 69.62, 12.66, 63.29, 25.32, 69.62, 44.3, 88.61, 50.63, 88.61, 37.97, 82.28, 31.65, 88.61, 18.99, 101.27, 6.33, 101.27, 82.28, 75.95, 75.95, 75.95, 69.62, 63.29, 63.29, 50.63, 75.95, 37.97, 63.29, 25.32, 69.62, 25.32, 75.95], [0, 6.33, 6.33, 0, 18.99, 0, 25.32, 6.33, 12.66, 18.99, 0, 6.33], [12.66, 0, 18.99, 6.33, 18.99, 18.99, 0, 12.66, 0, 6.33, 6.33, 6.33, 12.66, 0], [6.33, 0, 12.66, 6.33, 18.99, 6.33, 18.99, 12.66, 0, 18.99, 0, 6.33, 6.33, 0], [0, 0, 120.25, 0, 120.25, 18.99, 0, 18.99, 0, 0], [0, 0, 126.58, 0, 126.58, 18.99, 0, 18.99, 0, 0], [0, 0, 126.58, 0, 126.58, 18.99, 0, 18.99, 0, 0], [0, 0, 126.58, 0, 126.58, 18.99, 0, 18.99, 0, 0], [0, 0, 126.58, 0, 126.58, 18.99, 0, 18.99, 0, 0], [0, 12.66, 12.66, 0, 18.99, 6.33, 82.28, 234.18, 63.29, 240.51, 0, 12.66], [12.66, 18.99, 0, 18.99, 0, 0, 25.32, 0, 37.97, 50.63, 31.65, 50.63, 12.66, 31.65, 12.66, 18.99], [12.66, 31.65, 0, 6.33, 0, 0, 25.32, 31.65, 18.99, 37.97, 12.66, 31.65], [18.99, 0, 50.63, 50.63, 37.97, 44.3, 12.66, 44.3, 0, 50.63, 18.99, 0], [44.3, 0, 44.3, 18.99, 63.29, 25.32, 75.95, 50.63, 75.95, 82.28, 63.29, 75.95, 37.97, 75.95, 18.99, 75.95, 0, 82.28, 0, 56.96, 12.66, 37.97, 18.99, 31.65, 37.97, 18.99, 44.3, 0], [0, 0, 12.66, 0, 12.66, 31.65, 0, 31.65, 0, 0], [0, 0, 56.96, 0, 69.62, 6.33, 69.62, 12.66, 56.96, 18.99, 0, 18.99, 0, 0], [0, 0, 25.32, 0, 25.32, 18.99, 0, 18.99, 0, 0], [12.66, 0, 18.99, 6.33, 18.99, 25.32, 12.66, 31.65, 0, 25.32, 0, 6.33, 12.66, 0], [0, 37.97, 18.99, 0, 56.96, 6.33, 113.92, 37.97, 139.24, 56.96, 139.24, 82.28, 120.25, 94.94, 82.28, 88.61, 0, 37.97], [120.25, 69.62, 113.92, 63.29, 113.92, 50.63, 101.27, 18.99, 82.28, 12.66, 50.63, 12.66, 25.32, 12.66, 12.66, 12.66, 0, 12.66, 6.33, 0, 44.3, 0, 107.59, 12.66, 120.25, 37.97, 120.25, 69.62], [6.33, 12.66, 0, 6.33, 6.33, 0, 25.32, 12.66, 18.99, 18.99, 6.33, 12.66], [25.32, 18.99, 18.99, 25.32, 12.66, 25.32, 0, 12.66, 6.33, 6.33, 6.33, 0, 25.32, 12.66, 25.32, 18.99], [0, 6.33, 0, 0, 12.66, 6.33, 12.66, 12.66, 0, 6.33], [0, 6.33, 12.66, 6.33, 12.66, 0, 31.65, 0, 31.65, 12.66, 31.65, 18.99, 18.99, 18.99, 0, 6.33], [0, 0, 145.57, 0, 145.57, 25.32, 0, 25.32, 0, 0], [31.65, 44.3, 25.32, 63.29, 12.66, 56.96, 0, 44.3, 12.66, 18.99, 31.65, 0, 113.92, 0, 132.91, 6.33, 145.57, 18.99, 139.24, 31.65, 132.91, 44.3, 126.58, 50.63, 56.96, 50.63, 31.65, 44.3], [12.66, 0, 25.32, 6.33, 25.32, 18.99, 12.66, 25.32, 0, 18.99, 0, 6.33, 12.66, 0], [12.66, 0, 25.32, 6.33, 25.32, 18.99, 12.66, 25.32, 0, 18.99, 0, 6.33, 12.66, 0], [12.66, 0, 18.99, 6.33, 25.32, 12.66, 25.32, 18.99, 12.66, 25.32, 0, 18.99, 0, 6.33, 12.66, 0], [12.66, 0, 25.32, 6.33, 25.32, 18.99, 12.66, 25.32, 0, 18.99, 0, 6.33, 12.66, 0], [12.66, 0, 25.32, 6.33, 25.32, 18.99, 12.66, 25.32, 0, 18.99, 0, 6.33, 12.66, 0], [12.66, 0, 18.99, 18.99, 12.66, 25.32, 0, 18.99, 0, 6.33, 12.66, 0], [12.66, 0, 25.32, 6.33, 25.32, 18.99, 12.66, 25.32, 0, 18.99, 0, 6.33, 12.66, 0], [12.66, 0, 25.32, 6.33, 25.32, 18.99, 12.66, 25.32, 0, 18.99, 0, 6.33, 12.66, 0], [12.66, 0, 25.32, 6.33, 25.32, 18.99, 12.66, 25.32, 0, 18.99, 0, 6.33, 12.66, 0], [12.66, 0, 25.32, 6.33, 25.32, 18.99, 12.66, 25.32, 0, 18.99, 0, 6.33, 12.66, 0], [12.66, 0, 18.99, 6.33, 25.32, 18.99, 12.66, 25.32, 0, 18.99, 0, 6.33, 12.66, 0], [12.66, 0, 18.99, 6.33, 25.32, 18.99, 12.66, 25.32, 0, 18.99, 0, 6.33, 12.66, 0], [0, 0, 18.99, 0, 18.99, 25.32, 25.32, 31.65, 31.65, 25.32, 31.65, 6.33, 31.65, 0, 50.63, 0, 44.3, 6.33, 44.3, 31.65, 31.65, 44.3, 31.65, 56.96, 37.97, 63.29, 6.33, 63.29, 18.99, 56.96, 18.99, 44.3, 6.33, 31.65, 6.33, 6.33, 0, 0], [0, 0, 18.99, 0, 18.99, 18.99, 0, 18.99, 0, 0], [18.99, 0, 18.99, 18.99, 0, 18.99, 0, 0, 18.99, 0], [6.33, 0, 18.99, 25.32, 0, 25.32, 6.33, 0], [12.66, 0, 18.99, 25.32, 0, 25.32, 12.66, 0]], [[44.3, 0, 44.3, 88.61, 37.97, 88.61, 18.99, 69.62, 0, 37.97, 31.65, 63.29, 44.3, 0], [31.65, 12.66, 44.3, 6.33, 82.28, 0, 63.29, 18.99, 44.3, 31.65, 31.65, 44.3, 25.32, 107.59, 44.3, 145.57, 25.32, 132.91, 6.33, 113.92, 0, 88.61, 6.33, 50.63, 12.66, 31.65, 31.65, 12.66], [50.63, 18.99, 56.96, 0, 63.29, 12.66, 69.62, 56.96, 56.96, 82.28, 18.99, 120.25, 31.65, 94.94, 44.3, 75.95, 25.32, 88.61, 0, 107.59, 6.33, 94.94, 25.32, 69.62, 37.97, 50.63, 50.63, 18.99], [75.95, 37.97, 56.96, 18.99, 37.97, 25.32, 25.32, 37.97, 18.99, 56.96, 25.32, 75.95, 44.3, 82.28, 63.29, 88.61, 82.28, 101.27, 88.61, 113.92, 94.94, 132.91, 75.95, 113.92, 69.62, 113.92, 56.96, 113.92, 50.63, 120.25, 44.3, 132.91, 37.97, 151.9, 31.65, 126.58, 37.97, 107.59, 44.3, 101.27, 25.32, 88.61, 6.33, 75.95, 0, 50.63, 12.66, 18.99, 25.32, 6.33, 44.3, 0, 63.29, 6.33, 75.95, 37.97], [12.66, 37.97, 0, 31.65, 31.65, 31.65, 50.63, 37.97, 63.29, 50.63, 63.29, 25.32, 75.95, 0, 75.95, 12.66, 75.95, 37.97, 88.61, 56.96, 88.61, 44.3, 94.94, 18.99, 120.25, 0, 113.92, 18.99, 107.59, 63.29, 107.59, 94.94, 101.27, 132.91, 82.28, 158.23, 63.29, 170.89, 75.95, 151.9, 82.28, 126.58, 75.95, 88.61, 63.29, 69.62, 50.63, 56.96, 25.32, 44.3, 12.66, 37.97], [44.3, 0, 69.62, 0, 50.63, 12.66, 69.62, 18.99, 44.3, 31.65, 18.99, 44.3, 12.66, 63.29, 0, 82.28, 0, 50.63, 6.33, 31.65, 18.99, 12.66, 44.3, 0], [25.32, 31.65, 18.99, 37.97, 12.66, 50.63, 25.32, 63.29, 37.97, 56.96, 44.3, 25.32, 44.3, 0, 56.96, 37.97, 69.62, 50.63, 82.28, 44.3, 82.28, 25.32, 75.95, 18.99, 88.61, 25.32, 94.94, 37.97, 94.94, 50.63, 82.28, 63.29, 63.29, 63.29, 50.63, 56.96, 37.97, 75.95, 18.99, 75.95, 6.33, 63.29, 0, 44.3, 6.33, 31.65, 18.99, 25.32, 31.65, 25.32, 25.32, 31.65], [12.66, 12.66, 6.33, 6.33, 6.33, 0, 25.32, 12.66, 31.65, 25.32, 31.65, 37.97, 31.65, 50.63, 31.65, 56.96, 18.99, 69.62, 31.65, 69.62, 44.3, 75.95, 50.63, 88.61, 50.63, 101.27, 44.3, 94.94, 31.65, 88.61, 18.99, 88.61, 6.33, 94.94, 0, 101.27, 0, 69.62, 12.66, 56.96, 18.99, 50.63, 18.99, 31.65, 12.66, 12.66], [6.33, 18.99, 6.33, 12.66, 0, 0, 12.66, 6.33, 31.65, 18.99, 44.3, 31.65, 50.63, 44.3, 50.63, 63.29, 44.3, 82.28, 12.66, 88.61, 0, 88.61, 6.33, 82.28, 25.32, 75.95, 31.65, 69.62, 31.65, 56.96, 31.65, 44.3, 18.99, 25.32, 6.33, 18.99], [0, 82.28, 12.66, 69.62, 31.65, 44.3, 63.29, 0, 63.29, 25.32, 50.63, 37.97, 56.96, 63.29, 44.3, 44.3, 44.3, 82.28, 31.65, 69.62, 0, 107.59, 0, 82.28], [56.96, 0, 94.94, 69.62, 69.62, 37.97, 63.29, 69.62, 44.3, 88.61, 25.32, 94.94, 6.33, 82.28, 0, 69.62, 0, 44.3, 6.33, 69.62, 25.32, 75.95, 50.63, 56.96, 56.96, 37.97, 56.96, 0], [0, 0, 6.33, 6.33, 25.32, 12.66, 37.97, 12.66, 56.96, 6.33, 69.62, 0, 82.28, 6.33, 101.27, 12.66, 120.25, 12.66, 139.24, 6.33, 139.24, 25.32, 101.27, 31.65, 82.28, 25.32, 69.62, 18.99, 50.63, 25.32, 18.99, 31.65, 0, 25.32, 0, 12.66, 0, 0], [31.65, 6.33, 37.97, 18.99, 37.97, 31.65, 25.32, 44.3, 12.66, 44.3, 0, 37.97, 0, 18.99, 6.33, 6.33, 18.99, 0, 31.65, 6.33], [18.99, 0, 37.97, 12.66, 37.97, 31.65, 25.32, 44.3, 12.66, 44.3, 0, 31.65, 0, 18.99, 6.33, 6.33, 18.99, 0], [37.97, 0, 37.97, 18.99, 18.99, 50.63, 0, 69.62, 0, 50.63, 18.99, 18.99, 37.97, 0], [0, 0, 12.66, 63.29, 44.3, 37.97, 25.32, 69.62, 6.33, 88.61, 0, 88.61, 0, 0], [50.63, 12.66, 69.62, 31.65, 75.95, 50.63, 82.28, 88.61, 75.95, 113.92, 56.96, 132.91, 37.97, 145.57, 56.96, 107.59, 50.63, 44.3, 37.97, 31.65, 18.99, 18.99, 0, 0, 37.97, 6.33, 50.63, 12.66], [18.99, 18.99, 31.65, 50.63, 44.3, 69.62, 63.29, 94.94, 69.62, 107.59, 44.3, 88.61, 25.32, 75.95, 37.97, 94.94, 50.63, 120.25, 12.66, 82.28, 0, 56.96, 6.33, 12.66, 12.66, 0, 18.99, 18.99], [18.99, 37.97, 31.65, 6.33, 50.63, 0, 69.62, 6.33, 82.28, 18.99, 94.94, 50.63, 88.61, 75.95, 69.62, 88.61, 50.63, 101.27, 56.96, 107.59, 63.29, 126.58, 56.96, 151.9, 50.63, 132.91, 44.3, 120.25, 37.97, 113.92, 25.32, 113.92, 18.99, 113.92, 0, 132.91, 6.33, 113.92, 12.66, 101.27, 31.65, 88.61, 50.63, 82.28, 69.62, 75.95, 75.95, 56.96, 69.62, 37.97, 56.96, 25.32, 37.97, 18.99, 18.99, 37.97], [107.59, 37.97, 94.94, 44.3, 69.62, 56.96, 56.96, 69.62, 44.3, 88.61, 37.97, 126.58, 44.3, 151.9, 56.96, 170.89, 37.97, 158.23, 18.99, 132.91, 12.66, 94.94, 12.66, 63.29, 6.33, 18.99, 0, 0, 25.32, 18.99, 31.65, 44.3, 31.65, 56.96, 44.3, 37.97, 44.3, 12.66, 44.3, 0, 56.96, 25.32, 56.96, 50.63, 69.62, 37.97, 88.61, 31.65, 120.25, 31.65, 107.59, 37.97], [25.32, 0, 50.63, 12.66, 63.29, 31.65, 69.62, 50.63, 69.62, 82.28, 56.96, 63.29, 50.63, 44.3, 25.32, 31.65, 0, 18.99, 18.99, 12.66, 0, 0, 25.32, 0], [69.62, 31.65, 63.29, 25.32, 75.95, 25.32, 88.61, 31.65, 94.94, 44.3, 88.61, 63.29, 75.95, 75.95, 56.96, 75.95, 44.3, 56.96, 31.65, 63.29, 12.66, 63.29, 0, 50.63, 0, 37.97, 6.33, 25.32, 18.99, 18.99, 12.66, 25.32, 12.66, 44.3, 25.32, 50.63, 37.97, 37.97, 50.63, 0, 50.63, 25.32, 56.96, 56.96, 69.62, 63.29, 82.28, 50.63, 75.95, 37.97, 69.62, 31.65], [37.97, 12.66, 31.65, 31.65, 31.65, 50.63, 37.97, 56.96, 50.63, 69.62, 50.63, 101.27, 44.3, 94.94, 31.65, 88.61, 18.99, 88.61, 6.33, 94.94, 0, 101.27, 0, 88.61, 6.33, 75.95, 18.99, 69.62, 31.65, 69.62, 18.99, 56.96, 18.99, 50.63, 18.99, 37.97, 18.99, 25.32, 25.32, 12.66, 44.3, 0, 44.3, 6.33, 37.97, 12.66], [44.3, 18.99, 31.65, 25.32, 18.99, 44.3, 18.99, 56.96, 18.99, 69.62, 25.32, 75.95, 44.3, 82.28, 50.63, 88.61, 37.97, 88.61, 6.33, 82.28, 0, 63.29, 0, 44.3, 6.33, 31.65, 18.99, 18.99, 37.97, 6.33, 50.63, 0, 44.3, 12.66, 44.3, 18.99], [63.29, 82.28, 63.29, 107.59, 31.65, 69.62, 18.99, 82.28, 18.99, 44.3, 6.33, 63.29, 12.66, 37.97, 0, 25.32, 0, 0, 31.65, 44.3, 50.63, 69.62, 63.29, 82.28], [37.97, 0, 37.97, 37.97, 44.3, 56.96, 69.62, 75.95, 88.61, 69.62, 94.94, 44.3, 94.94, 69.62, 88.61, 82.28, 69.62, 94.94, 50.63, 88.61, 31.65, 69.62, 25.32, 37.97, 0, 69.62, 37.97, 0], [139.24, 0, 139.24, 12.66, 139.24, 25.32, 120.25, 31.65, 88.61, 25.32, 69.62, 18.99, 56.96, 25.32, 37.97, 31.65, 0, 25.32, 0, 6.33, 18.99, 12.66, 37.97, 12.66, 56.96, 6.33, 69.62, 0, 82.28, 6.33, 101.27, 12.66, 113.92, 12.66, 132.91, 6.33, 139.24, 0], [6.33, 6.33, 18.99, 0, 31.65, 6.33, 37.97, 18.99, 37.97, 37.97, 25.32, 44.3, 12.66, 44.3, 0, 31.65, 0, 18.99, 6.33, 6.33], [18.99, 0, 31.65, 6.33, 37.97, 18.99, 37.97, 31.65, 25.32, 44.3, 12.66, 44.3, 0, 31.65, 0, 12.66, 18.99, 0], [0, 0, 18.99, 18.99, 37.97, 50.63, 37.97, 69.62, 18.99, 50.63, 0, 18.99, 0, 0]], [[31.65, 18.99, 50.63, 0, 88.61, 56.96, 63.29, 101.27, 25.32, 101.27, 0, 56.96, 31.65, 18.99], [0, 50.63, 31.65, 0, 69.62, 50.63, 50.63, 101.27, 12.66, 101.27, 0, 50.63], [25.32, 0, 50.63, 44.3, 25.32, 88.61, 0, 44.3, 25.32, 0], [0, 18.99, 18.99, 0, 44.3, 0, 63.29, 18.99, 31.65, 69.62, 0, 18.99], [0, 18.99, 18.99, 0, 44.3, 0, 63.29, 18.99, 31.65, 69.62, 0, 18.99], [0, 6.33, 12.66, 0, 25.32, 12.66, 18.99, 25.32, 0, 25.32, 0, 6.33], [6.33, 6.33, 25.32, 0, 31.65, 18.99, 18.99, 31.65, 6.33, 31.65, 0, 18.99, 6.33, 6.33], [12.66, 0, 31.65, 0, 31.65, 18.99, 12.66, 18.99, 0, 12.66, 12.66, 0], [0, 0, 25.32, 6.33, 25.32, 25.32, 6.33, 31.65, 0, 18.99, 0, 0], [12.66, 0, 37.97, 6.33, 37.97, 18.99, 25.32, 31.65, 0, 18.99, 12.66, 12.66, 12.66, 0], [12.66, 6.33, 25.32, 0, 44.3, 6.33, 31.65, 31.65, 0, 31.65, 12.66, 18.99, 12.66, 6.33], [12.66, 12.66, 37.97, 0, 44.3, 12.66, 25.32, 31.65, 0, 37.97, 6.33, 25.32, 12.66, 12.66], [0, 12.66, 6.33, 6.33, 18.99, 0, 37.97, 0, 25.32, 18.99, 6.33, 25.32, 0, 12.66], [18.99, 25.32, 0, 25.32, 0, 6.33, 18.99, 0, 31.65, 12.66, 18.99, 25.32], [12.66, 25.32, 0, 12.66, 12.66, 0, 31.65, 6.33, 25.32, 18.99, 12.66, 25.32], [0, 12.66, 18.99, 0, 44.3, 0, 63.29, 12.66, 44.3, 25.32, 18.99, 25.32, 0, 12.66], [18.99, 0, 44.3, 0, 63.29, 12.66, 44.3, 25.32, 18.99, 25.32, 0, 12.66, 18.99, 0], [25.32, 0, 25.32, 25.32, 18.99, 44.3, 6.33, 56.96, 0, 37.97, 6.33, 18.99, 25.32, 0], [12.66, 0, 18.99, 12.66, 18.99, 25.32, 6.33, 37.97, 0, 25.32, 0, 12.66, 12.66, 0], [6.33, 0, 12.66, 12.66, 12.66, 25.32, 6.33, 31.65, 0, 25.32, 0, 12.66, 6.33, 0], [6.33, 0, 18.99, 6.33, 18.99, 18.99, 6.33, 25.32, 0, 12.66, 6.33, 0], [6.33, 0, 18.99, 0, 25.32, 12.66, 12.66, 18.99, 0, 12.66, 6.33, 0], [0, 6.33, 18.99, 0, 25.32, 6.33, 12.66, 18.99, 0, 18.99, 0, 6.33], [25.32, 0, 12.66, 12.66, 12.66, 25.32, 31.65, 31.65, 37.97, 18.99, 44.3, 31.65, 63.29, 25.32, 56.96, 12.66, 50.63, 0, 63.29, 12.66, 75.95, 37.97, 37.97, 50.63, 0, 37.97, 6.33, 12.66, 25.32, 0], [12.66, 0, 25.32, 6.33, 25.32, 18.99, 12.66, 25.32, 0, 18.99, 0, 6.33, 12.66, 0], [56.96, 18.99, 88.61, 56.96, 63.29, 101.27, 25.32, 101.27, 0, 56.96, 37.97, 0, 56.96, 18.99], [69.62, 50.63, 56.96, 101.27, 18.99, 101.27, 0, 50.63, 37.97, 0, 69.62, 50.63], [25.32, 0, 50.63, 44.3, 25.32, 88.61, 0, 44.3, 25.32, 0], [63.29, 18.99, 31.65, 69.62, 0, 18.99, 18.99, 0, 44.3, 0, 63.29, 18.99], [63.29, 18.99, 31.65, 69.62, 0, 18.99, 18.99, 0, 44.3, 0, 63.29, 18.99], [25.32, 6.33, 25.32, 25.32, 6.33, 25.32, 0, 12.66, 12.66, 0, 25.32, 6.33], [25.32, 6.33, 31.65, 18.99, 25.32, 31.65, 12.66, 31.65, 0, 18.99, 6.33, 0, 25.32, 6.33], [18.99, 0, 31.65, 12.66, 18.99, 18.99, 0, 18.99, 0, 0, 18.99, 0], [25.32, 0, 25.32, 18.99, 18.99, 31.65, 0, 25.32, 0, 6.33, 25.32, 0], [25.32, 0, 25.32, 12.66, 37.97, 18.99, 12.66, 31.65, 0, 18.99, 0, 6.33, 25.32, 0], [31.65, 6.33, 31.65, 18.99, 44.3, 31.65, 12.66, 31.65, 0, 6.33, 18.99, 0, 31.65, 6.33], [31.65, 12.66, 37.97, 25.32, 44.3, 37.97, 18.99, 31.65, 0, 12.66, 6.33, 0, 31.65, 12.66], [37.97, 12.66, 31.65, 25.32, 12.66, 18.99, 0, 0, 18.99, 0, 31.65, 6.33, 37.97, 12.66], [12.66, 25.32, 0, 12.66, 12.66, 0, 31.65, 6.33, 31.65, 25.32, 12.66, 25.32], [18.99, 25.32, 6.33, 18.99, 0, 6.33, 18.99, 0, 31.65, 12.66, 18.99, 25.32], [63.29, 12.66, 44.3, 25.32, 18.99, 25.32, 0, 12.66, 18.99, 0, 44.3, 0, 63.29, 12.66], [44.3, 0, 63.29, 12.66, 44.3, 25.32, 18.99, 25.32, 0, 12.66, 18.99, 0, 44.3, 0], [0, 0, 18.99, 18.99, 25.32, 37.97, 18.99, 56.96, 6.33, 44.3, 0, 25.32, 0, 0], [6.33, 0, 18.99, 12.66, 18.99, 25.32, 12.66, 37.97, 0, 25.32, 0, 12.66, 6.33, 0], [6.33, 0, 12.66, 12.66, 12.66, 25.32, 6.33, 31.65, 0, 25.32, 0, 12.66, 6.33, 0], [12.66, 0, 18.99, 12.66, 12.66, 25.32, 0, 18.99, 0, 6.33, 12.66, 0], [18.99, 0, 25.32, 12.66, 12.66, 18.99, 0, 12.66, 6.33, 0, 18.99, 0], [25.32, 6.33, 25.32, 18.99, 12.66, 18.99, 0, 6.33, 6.33, 0, 25.32, 6.33], [50.63, 0, 69.62, 12.66, 75.95, 37.97, 37.97, 50.63, 0, 37.97, 12.66, 12.66, 25.32, 0, 18.99, 12.66, 12.66, 25.32, 31.65, 31.65, 37.97, 18.99, 44.3, 31.65, 63.29, 25.32, 63.29, 12.66, 50.63, 0], [12.66, 0, 25.32, 6.33, 25.32, 18.99, 12.66, 25.32, 0, 18.99, 0, 6.33, 12.66, 0], [0, 12.66, 25.32, 0, 25.32, 25.32, 18.99, 18.99, 0, 12.66], [0, 0, 25.32, 12.66, 6.33, 18.99, 0, 25.32, 0, 0]], [[0, 0, 360.76, 0, 348.1, 18.99, 329.11, 50.63, 297.47, 63.29, 253.16, 63.29, 164.56, 63.29, 56.96, 63.29, 25.32, 44.3, 0, 0], [0, 6.33, 0, 0, 367.09, 0, 379.75, 6.33, 379.75, 18.99, 360.76, 25.32, 0, 25.32, 0, 6.33], [0, 12.66, 0, 0, 63.29, 0, 63.29, 63.29, 0, 63.29, 0, 12.66], [0, 0, 63.29, 0, 63.29, 63.29, 0, 63.29, 0, 0], [0, 0, 63.29, 0, 63.29, 63.29, 0, 63.29, 0, 0], [0, 0, 25.32, 44.3, 56.96, 63.29, 56.96, 69.62, 0, 69.62, 0, 0], [0, 6.33, 56.96, 6.33, 56.96, 0, 63.29, 0, 63.29, 6.33, 63.29, 56.96, 56.96, 56.96, 0, 56.96, 0, 6.33], [0, 0, 63.29, 0, 63.29, 56.96, 0, 56.96, 0, 0], [0, 0, 63.29, 0, 63.29, 56.96, 0, 56.96, 0, 0], [0, 0, 63.29, 0, 63.29, 56.96, 0, 56.96, 0, 0], [0, 6.33, 44.3, 6.33, 63.29, 0, 63.29, 63.29, 0, 63.29, 0, 6.33], [0, 0, 63.29, 0, 63.29, 63.29, 0, 63.29, 0, 0], [113.92, 246.84, 113.92, 120.25, 107.59, 69.62, 88.61, 37.97, 69.62, 25.32, 50.63, 18.99, 37.97, 18.99, 25.32, 25.32, 12.66, 37.97, 0, 31.65, 12.66, 18.99, 25.32, 6.33, 44.3, 0, 75.95, 6.33, 94.94, 25.32, 120.25, 56.96, 126.58, 88.61, 126.58, 246.84, 126.58, 310.13, 113.92, 310.13, 113.92, 246.84], [31.65, 6.33, 37.97, 18.99, 31.65, 31.65, 0, 12.66, 6.33, 0, 18.99, 0, 31.65, 6.33], [6.33, 0, 12.66, 6.33, 6.33, 18.99, 0, 12.66, 6.33, 0], [6.33, 0, 18.99, 0, 12.66, 18.99, 0, 12.66, 6.33, 0], [0, 0, 12.66, 0, 6.33, 12.66, 0, 12.66, 0, 0], [6.33, 6.33, 18.99, 0, 12.66, 18.99, 0, 18.99, 6.33, 6.33], [6.33, 0, 18.99, 0, 6.33, 12.66, 0, 12.66, 6.33, 0], [12.66, 0, 18.99, 6.33, 6.33, 12.66, 0, 12.66, 6.33, 6.33, 12.66, 0], [6.33, 0, 12.66, 12.66, 12.66, 18.99, 0, 18.99, 0, 12.66, 6.33, 0], [6.33, 0, 18.99, 0, 12.66, 12.66, 0, 12.66, 6.33, 0], [0, 0, 63.29, 0, 63.29, 18.99, 56.96, 12.66, 44.3, 25.32, 56.96, 25.32, 63.29, 25.32, 63.29, 44.3, 50.63, 44.3, 44.3, 56.96, 56.96, 56.96, 63.29, 50.63, 63.29, 63.29, 0, 63.29, 0, 0], [0, 0, 6.33, 0, 6.33, 12.66, 12.66, 12.66, 18.99, 18.99, 12.66, 25.32, 6.33, 37.97, 18.99, 37.97, 25.32, 18.99, 18.99, 12.66, 18.99, 0, 63.29, 0, 63.29, 63.29, 0, 63.29, 0, 0], [0, 0, 63.29, 0, 63.29, 69.62, 0, 69.62, 0, 0], [0, 0, 63.29, 0, 63.29, 69.62, 0, 69.62, 0, 0], [0, 0, 63.29, 0, 63.29, 69.62, 0, 69.62, 0, 0], [0, 0, 63.29, 0, 63.29, 69.62, 0, 69.62, 0, 0], [0, 0, 63.29, 0, 63.29, 50.63, 56.96, 63.29, 63.29, 63.29, 63.29, 69.62, 0, 69.62, 0, 0], [0, 0, 18.99, 0, 18.99, 12.66, 12.66, 25.32, 18.99, 31.65, 25.32, 18.99, 37.97, 25.32, 37.97, 37.97, 37.97, 44.3, 25.32, 44.3, 18.99, 56.96, 31.65, 63.29, 31.65, 69.62, 18.99, 69.62, 12.66, 63.29, 6.33, 69.62, 0, 69.62, 0, 63.29, 12.66, 50.63, 0, 50.63, 0, 0], [0, 0, 6.33, 0, 37.97, 18.99, 44.3, 6.33, 44.3, 69.62, 12.66, 69.62, 12.66, 63.29, 18.99, 50.63, 18.99, 37.97, 25.32, 37.97, 31.65, 25.32, 18.99, 25.32, 0, 12.66, 0, 0], [0, 75.95, 0, 12.66, 12.66, 6.33, 18.99, 0, 63.29, 0, 63.29, 75.95, 0, 75.95], [44.3, 0, 44.3, 50.63, 0, 50.63, 25.32, 6.33, 44.3, 0], [0, 0, 63.29, 0, 63.29, 63.29, 0, 63.29, 0, 0], [0, 0, 63.29, 0, 63.29, 63.29, 0, 63.29, 0, 0], [0, 0, 63.29, 0, 63.29, 63.29, 0, 63.29, 0, 0], [0, 0, 63.29, 0, 63.29, 37.97, 0, 37.97, 0, 0], [0, 0, 63.29, 0, 63.29, 37.97, 0, 37.97, 0, 0], [0, 0, 63.29, 0, 63.29, 37.97, 0, 37.97, 0, 0], [0, 0, 63.29, 0, 63.29, 63.29, 0, 63.29, 0, 0], [0, 0, 63.29, 0, 63.29, 37.97, 0, 37.97, 0, 0], [0, 0, 63.29, 0, 63.29, 63.29, 0, 63.29, 0, 0], [0, 0, 63.29, 0, 63.29, 31.65, 44.3, 50.63, 31.65, 50.63, 25.32, 63.29, 0, 63.29, 0, 0], [0, 0, 63.29, 0, 63.29, 37.97, 0, 37.97, 0, 0], [0, 0, 63.29, 0, 63.29, 37.97, 0, 37.97, 0, 0], [0, 0, 63.29, 0, 63.29, 37.97, 0, 37.97, 0, 0], [0, 0, 63.29, 0, 63.29, 37.97, 0, 37.97, 0, 0], [0, 0, 6.33, 0, 63.29, 0, 63.29, 31.65, 56.96, 25.32, 25.32, 18.99, 6.33, 25.32, 0, 31.65, 0, 0], [6.33, 12.66, 25.32, 0, 50.63, 6.33, 69.62, 18.99, 69.62, 25.32, 6.33, 25.32, 6.33, 31.65, 0, 18.99, 6.33, 12.66], [0, 0, 63.29, 0, 63.29, 63.29, 31.65, 63.29, 18.99, 50.63, 0, 31.65, 0, 0], [0, 0, 63.29, 0, 63.29, 69.62, 0, 69.62, 0, 0], [0, 0, 63.29, 0, 63.29, 63.29, 0, 63.29, 0, 0], [0, 0, 63.29, 0, 63.29, 69.62, 0, 69.62, 0, 0], [0, 0, 63.29, 0, 63.29, 75.95, 0, 75.95, 0, 0], [0, 0, 6.33, 0, 12.66, 6.33, 25.32, 25.32, 25.32, 31.65, 25.32, 69.62, 0, 69.62, 0, 0], [0, 0, 31.65, 0, 31.65, 18.99, 0, 18.99, 0, 0], [6.33, 18.99, 6.33, 12.66, 0, 12.66, 0, 0, 31.65, 0, 31.65, 12.66, 25.32, 12.66, 25.32, 18.99, 18.99, 25.32, 12.66, 25.32, 6.33, 18.99], [6.33, 12.66, 0, 0, 31.65, 0, 31.65, 69.62, 12.66, 69.62, 12.66, 31.65, 6.33, 12.66], [0, 0, 25.32, 0, 31.65, 6.33, 31.65, 63.29, 0, 63.29, 0, 0], [0, 0, 31.65, 0, 31.65, 25.32, 0, 25.32, 0, 0], [0, 0, 31.65, 0, 31.65, 63.29, 44.3, 63.29, 44.3, 0, 63.29, 0, 63.29, 75.95, 0, 75.95, 0, 0], [0, 0, 18.99, 0, 18.99, 63.29, 0, 63.29, 0, 0], [0, 0, 18.99, 0, 18.99, 69.62, 0, 69.62, 0, 0]]];
public static const iPlatforms:Array = [[10, 0, 70, 0, 70, 10, 10, 10, 10, 0, 10, 5, 5, 70, 5, 5], [20, 0, 80, 0, 100, 5, 80, 10, 20, 10, 0, 5, 20, 0], [0, 10, 10, 20, 65, 10, 75, 0, 85, 10, 140, 20, 150, 10, 140, 25, 75, 15, 10, 25, 0, 10], [0, 30, 35, 0, 45, 10, 95, 10, 105, 0, 140, 30, 100, 15, 40, 15, 0, 30], [0, 10, 20, 0, 25, 0, 30, 10, 75, 10, 80, 12, 85, 10, 130, 10, 135, 0, 140, 0, 160, 10, 150, 20, 140, 5, 138, 10, 135, 10, 133, 15, 90, 15, 80, 20, 70, 15, 27, 15, 25, 10, 22, 10, 20, 5, 10, 20, 0, 10], [0, 25, 10, 5, 20, 15, 55, 15, 60, 5, 65, 10, 95, 10, 100, 5, 105, 15, 140, 15, 150, 5, 160, 25, 150, 30, 140, 20, 105, 20, 100, 30, 80, 15, 60, 30, 55, 20, 20, 20, 10, 30, 0, 25], [0, 30, 20, 20, 25, 0, 30, 15, 75, 25, 120, 15, 125, 0, 130, 20, 150, 30, 140, 30, 120, 20, 75, 30, 30, 20, 10, 30, 0, 30]];
public static const iLevels:Array = [[0, 1, 8, 0, 0, -1, 1, 1, 1, 7, 12.66, 0, -1, 1, 2, 1, 6, 25.32, 0, -2, 1, 3, 1, 5, 37.97, 0, -1, 1, 4, 1, 4, 50.63, 0, -1, 1, 5, 1, 3, 63.29, 0, -2, 1, 6, 1, 2, 75.95, 0, -1, 1, 7, 1, 1, 88.61, 0, -1, 1, 8, 1, 0, 101.27, 0, -1, 1, 9, 1, 1, 113.92, 0, -1, 1, 10, 1, 2, 126.58, 0, -2, 1, 11, 1, 3, 139.24, 0, -1, 1, 12, 1, 4, 151.9, 0, -2, 1, 13, 1, 5, 164.56, 0, -1, 1, 14, 1, 6, 177.22, 0, -1, 1, 15, 1, 5, 322.78, 0, -2, 1, 16, 1, 4, 335.44, 0, -2, 1, 17, 1, 3, 348.1, 0, -2, 1, 18, 1, 2, 360.76, 0, -2, 1, 19, 1, 1, 373.42, 0, -2, 1, 20, 1, 0, 386.08, 0, -1, 1, 21, 1, 1, 398.73, 0, -2, 1, 22, 1, 2, 411.39, 0, -2, 1, 23, 1, 3, 424.05, 0, -2, 1, 24, 1, 4, 436.71, 0, -1, 1, 25, 1, 5, 449.37, 0, -1, 1, 26, 1, 6, 462.03, 0, -1, 1, 27, 1, 7, 474.68, 0, -1, 1, 28, 1, 8, 487.34, 0, -1, 1, 29, 2, 3, 0, 278.48, -1, 1, 30, 2, 0, 253.16, 221.52, -1, 1, 31, 2, 0, 183.54, 221.52, -1, 1], [0, 0, 9, 63.29, 94.94, 19, 1, 1, 0, 9, 164.56, 94.94, 20, 1, 2, 0, 9, 329.11, 94.94, -2, 1, 3, 0, 9, 443.04, 101.27, 18, 1, 4, 0, 9, 0, 101.27, 15, 1, 5, 1, 8, 158.23, 221.52, -2, 1, 6, 1, 8, 202.53, 240.51, 9, 1, 7, 1, 8, 272.15, 227.85, 17, 1, 8, 1, 8, 177.22, 253.16, -2, 1, 9, 1, 7, 354.43, 246.84, -2, 1, 10, 1, 7, 405.06, 246.84, 1, 1, 11, 1, 7, 462.03, 221.52, -2, 1, 12, 1, 7, 113.92, 227.85, -2, 1, 13, 1, 7, 37.97, 227.85, 2, 1, 14, 1, 7, 12.66, 253.16, -2, 1, 15, 1, 7, 0, 227.85, 0, 1, 16, 3, 5, 354.43, 164.56, -2, 1, 17, 3, 5, 373.42, 164.56, 13, 1, 18, 3, 5, 430.38, 177.22, 3, 1, 19, 3, 5, 468.35, 183.54, 16, 1, 20, 3, 5, 443.04, 177.22, -2, 1, 21, 3, 5, 455.7, 183.54, -2, 1, 22, 3, 5, 0, 132.91, -1, 1, 23, 3, 5, 44.3, 164.56, -2, 1, 24, 3, 5, 44.3, 132.91, 19, 1, 25, 3, 5, 12.66, 101.27, 5, 1, 26, 3, 5, 25.32, 107.59, -2, 1, 27, 3, 5, 94.94, 158.23, 6, 1, 28, 3, 5, 170.89, 158.23, -2, 1, 29, 1, 3, 240.51, 132.91, -2, 1, 30, 1, 3, 240.51, 170.89, 2, 1, 31, 1, 3, 259.49, 158.23, 18, 1, 32, 1, 3, 310.13, 145.57, -2, 1, 33, 1, 3, 278.48, 132.91, -2, 1, 34, 0, 2, 0, 0, 19, 1, 35, 2, 0, 221.52, 0, -1, 1, 36, 2, 4, 291.14, 0, -2, 1, 37, 2, 4, 196.2, 0, -2, 1, 38, 0, 2, 424.05, 0, 19, 1, 39, 2, 1, 379.75, 0, -2, 1, 40, 2, 1, 126.58, -6.33, -2, 1, 41, 2, 1, 50.63, 0, 15, 1, 42, 1, 0, 424.05, 50.63, 0, 1, 43, 1, 0, 379.75, 50.63, 20, 1, 44, 1, 0, 18.99, 50.63, 13, 1, 45, 1, 0, 126.58, 50.63, -2, 1, 46, 1, 0, 126.58, 50.63, 18, 1, 47, 1, 0, 177.22, 50.63, -2, 1, 48, 2, 8, 202.53, 50.63, 1, 1], [0, 0, 0, 443.04, 354.43, -2, 1, 1, 0, 0, 0, 354.43, -2, 1, 2, 3, 1, 443.04, 303.8, 17, 1, 3, 3, 1, 0, 303.8, 0, 1, 4, 0, 0, 63.29, 303.8, -2, 1, 5, 0, 0, 0, 253.16, -2, 1, 6, 0, 0, 443.04, 253.16, -2, 1, 7, 0, 0, 411.39, 303.8, -2, 1, 8, 3, 2, 379.75, 253.16, -2, 1, 9, 3, 2, 0, 253.16, 6, 1, 10, 0, 3, 126.58, 253.16, -2, 1, 11, 3, 2, 0, 177.22, -2, 1, 12, 3, 2, 379.75, 177.22, 19, 1, 13, 3, 0, 126.58, 177.22, 0, 1, 14, 3, 0, 253.16, 177.22, 6, 1, 15, 0, 0, 126.58, 202.53, -2, 1, 16, 0, 0, 253.16, 202.53, -2, 1, 17, 2, 1, 126.58, 202.53, 12, 1, 18, 0, 5, 348.1, 101.27, 9, 1, 19, 0, 5, 94.94, 101.27, 3, 1, 20, 1, 9, 0, 0, -2, 1, 21, 1, 7, 253.16, 6.33, 13, 1, 22, 1, 7, 94.94, 6.33, -2, 1, 23, 0, 4, 158.23, 6.33, -2, 1, 24, 2, 0, 253.16, 75.95, -2, 1, 25, 2, 0, 158.23, 75.95, 0, 1, 26, 1, 2, 158.23, 75.95, 11, 1], [0, 2, 0, 0, 379.75, 19, 1, 1, 2, 0, 0, 367.09, 19, 1, 2, 2, 0, 0, 354.43, 19, 1, 3, 2, 2, 0, 341.77, 19, 1, 4, 0, 9, 0, 329.11, -2, 1, 5, 0, 9, 12.66, 272.15, -2, 1, 6, 0, 9, 56.96, 284.81, -2, 1, 7, 0, 9, 82.28, 272.15, -2, 1, 8, 0, 9, 120.25, 272.15, -2, 1, 9, 0, 9, 56.96, 265.82, -2, 1, 10, 0, 9, 18.99, 221.52, -2, 1, 11, 0, 9, 50.63, 215.19, -2, 1, 12, 0, 9, 113.92, 215.19, -2, 1, 13, 0, 9, 158.23, 208.86, -2, 1, 14, 0, 9, 202.53, 215.19, -2, 1, 15, 0, 9, 63.29, 297.47, -2, 1, 16, 0, 9, 411.39, 208.86, -2, 1, 17, 3, 7, 443.04, 208.86, 10, 1, 18, 3, 1, 443.04, 253.16, -2, 1, 19, 3, 0, 417.72, 164.56, -2, 1, 20, 2, 0, 0, 392.41, 19, 1, 21, 1, 1, 151.9, 107.59, -2, 1, 22, 1, 1, 139.24, 82.28, -2, 1, 23, 1, 1, 107.59, 56.96, 0, 1, 24, 1, 1, 37.97, 25.32, 0, 1, 25, 0, 5, 0, 0, -2, 1], [0, 3, 7, 253.16, 101.27, 0, 1, 1, 3, 7, 0, 101.27, 10, 1, 2, 2, 2, 379.75, 151.9, -2, 1, 3, 2, 2, 0, 151.9, -2, 1, 4, 2, 1, 253.16, 151.9, -2, 1, 5, 2, 1, 126.58, 151.9, 13, 1, 6, 0, 3, 316.46, 202.53, 6, 1, 7, 0, 3, 63.29, 202.53, -2, 1, 8, 0, 5, 253.16, 202.53, -2, 1, 9, 0, 5, 189.87, 202.53, 17, 1, 10, 3, 0, 379.75, 303.8, -2, 1, 11, 3, 0, 0, 303.8, 12, 1, 12, 3, 0, 126.58, 253.16, -2, 1, 13, 3, 0, 379.75, 0, -2, 1, 14, 3, 0, 0, 0, -2, 1, 15, 3, 0, 63.29, 50.63, -2, 1, 16, 3, 0, 253.16, 50.63, -2, 1, 17, 0, 4, 0, 0, 18, 1, 18, 0, 4, 253.16, 0, -2, 1, 19, 2, 8, 126.58, 0, 19, 1], [0, 2, 9, 63.29, 234.18, -2, 1, 1, 2, 9, 443.04, 234.18, -1, 1, 2, 2, 9, 379.75, 234.18, -2, 1, 3, 2, 9, 253.16, 88.61, -2, 1, 4, 2, 9, 189.87, 88.61, -2, 1, 5, 2, 4, 253.16, 151.9, 19, 0.7, 6, 2, 4, 221.52, 151.9, 15, 0.5, 7, 2, 1, 253.16, 240.51, 0, 0.5, 8, 2, 1, 189.87, 240.51, 16, 0.5, 9, 2, 1, 189.87, 265.82, 15, 0.7, 10, 2, 3, 253.16, 227.85, 0, 0.4, 11, 2, 3, 189.87, 227.85, 2, 0.3, 12, 2, 2, 221.52, 202.53, 6, 0.3, 13, 2, 3, 221.52, 202.53, 17, 1, 14, 2, 2, 0, 126.58, -1, 0.5, 15, 2, 2, 360.76, 120.25, 19, 0.6, 16, 2, 1, 430.38, 0, -1, 1, 17, 2, 1, 0, 0, -2, 1, 18, 2, 3, 75.95, 0, -1, 0.9, 19, 2, 3, 316.46, 0, 20, 1, 20, 2, 6, 259.49, 0, -2, 1, 21, 2, 6, 126.58, 0, -2, 1, 22, 2, 8, 221.52, 0, -2, 1, 23, 2, 9, 0, 234.18, -2, 1, 24, 2, 9, 329.11, 215.19, -2, 1, 25, 2, 9, 126.58, 215.19, -2, 1, 26, 2, 9, 164.56, 196.2, -2, 1, 27, 2, 9, 316.46, 196.2, -2, 1, 28, 0, 2, 284.81, 151.9, 0, 0.6, 29, 0, 2, 177.22, 151.9, 11, 1, 30, 3, 0, 284.81, 227.85, 12, 0.8, 31, 3, 0, 126.58, 227.85, 0, 1, 32, 2, 9, 316.46, 88.61, -2, 1, 33, 2, 9, 316.46, 151.9, -2, 1, 34, 2, 9, 189.87, 126.58, -2, 1, 35, 2, 9, 189.87, 120.25, -2, 1, 36, 2, 4, 303.8, 120.25, 5, 0.2, 37, 2, 1, 284.81, 120.25, 16, 1, 38, 2, 3, 341.77, 120.25, 10, 1, 39, 2, 5, 335.44, 120.25, 5, 1, 40, 2, 3, 411.39, 75.95, -2, 1, 41, 2, 5, 468.35, 50.63, -2, 1, 42, 2, 0, 379.75, 25.32, -2, 1, 43, 2, 9, 94.94, 88.61, -2, 1, 44, 2, 6, 0, 189.87, -2, 1, 45, 2, 9, 145.57, 151.9, -2, 1, 46, 2, 0, 113.92, 151.9, 18, 1, 47, 2, 6, 341.77, 189.87, -2, 1, 48, 2, 0, 335.44, 151.9, 18, 1, 49, 2, 1, 360.76, 120.25, -2, 1, 50, 2, 1, 164.56, 120.25, 5, 1, 51, 2, 4, 164.56, 120.25, 19, 1, 52, 2, 5, 139.24, 120.25, 17, 1, 53, 2, 3, 113.92, 120.25, 5, 1, 54, 2, 0, 37.97, 25.32, -2, 1, 55, 2, 5, 0, 50.63, -2, 1, 56, 2, 1, 0, 126.58, -2, 1, 57, 2, 3, 0, 75.95, -2, 1], [0, 0, 9, 379.75, 101.27, 19, 1, 1, 0, 9, 0, 101.27, 20, 1, 2, 1, 4, 379.75, 202.53, 1, 1, 3, 1, 4, 0, 202.53, 15, 1, 4, 1, 3, 379.75, 101.27, 17, 1, 5, 1, 3, 0, 101.27, 19, 1, 6, 1, 8, 25.32, 120.25, -2, 1, 7, 0, 1, 126.58, 75.95, 0, 1, 8, 1, 1, 189.87, 75.95, -1, 1, 9, 0, 1, 253.16, 75.95, 5, 1, 10, 1, 1, 316.46, 75.95, 13, 1, 11, 1, 6, 158.23, 75.95, 2, 1, 12, 1, 6, 284.81, 75.95, 0, 1, 13, 1, 7, 158.23, 50.63, 0, 1, 14, 1, 7, 284.81, 50.63, 1, 1, 15, 0, 6, 221.52, 75.95, -2, 1, 16, 0, 7, 221.52, 50.63, -2, 1, 17, 1, 0, 253.16, 50.63, 3, 1, 18, 1, 0, 189.87, 50.63, -2, 1, 19, 1, 2, 189.87, 0, 16, 1, 20, 1, 8, 493.67, 0, 19, 1, 21, 1, 8, 493.67, 25.32, 8, 1, 22, 1, 8, 493.67, 50.63, 14, 1, 23, 1, 8, 493.67, 75.95, 15, 1, 24, 1, 8, 0, 0, 18, 1, 25, 1, 8, 0, 25.32, 12, 1, 26, 1, 8, 0, 50.63, 17, 1, 27, 1, 8, 0, 75.95, 0, 1, 28, 0, 5, 493.67, 0, 1, 1, 29, 0, 5, 493.67, 12.66, 18, 1, 30, 0, 5, 493.67, 37.97, 15, 1, 31, 0, 5, 493.67, 63.29, 13, 1, 32, 0, 5, 493.67, 88.61, 9, 1, 33, 0, 5, 0, 0, -2, 1, 34, 0, 5, 0, 12.66, -1, 1, 35, 0, 5, 0, 37.97, -2, 1, 36, 0, 5, 0, 63.29, 2, 1, 37, 0, 5, 0, 88.61, -2, 1, 38, 0, 0, 386.08, 25.32, -2, 1], [0, 2, 9, 189.87, 151.9, -2, 1, 1, 2, 0, 189.87, 101.27, 16, 1, 2, 2, 0, 253.16, 202.53, 12, 1, 3, 2, 1, 126.58, 202.53, 0, 1, 4, 2, 1, 253.16, 151.9, 12, 1, 5, 2, 6, 126.58, 101.27, 13, 1, 6, 2, 6, 253.16, 101.27, 11, 1, 7, 2, 6, 253.16, 253.16, 16, 1, 8, 2, 5, 126.58, 253.16, -1, 1, 9, 1, 2, 126.58, 0, 18, 1, 10, 1, 2, 0, 202.53, 18, 1, 11, 1, 2, 379.75, 101.27, 1, 1, 12, 1, 7, 253.16, 0, 9, 1, 13, 1, 3, 253.16, 50.63, 19, 1, 14, 1, 4, 379.75, 202.53, 0, 1, 15, 1, 8, 379.75, 253.16, 0, 1, 16, 1, 8, 0, 101.27, 19, 1, 17, 1, 5, 0, 101.27, 18, 1, 18, 1, 0, 0, 0, 17, 1, 19, 1, 1, 0, 0, 17, 1, 20, 1, 1, 379.75, 50.63, 0, 1, 21, 1, 6, 443.04, 50.63, 2, 1, 22, 1, 0, 443.04, 0, 2, 1, 23, 1, 5, 379.75, 0, 8, 1], [0, 2, 9, 0, 348.1, -2, 1, 1, 2, 7, 443.04, 348.1, 1, 1, 2, 2, 3, 468.35, 284.81, 0, 1, 3, 2, 3, 18.99, 215.19, 2, 1, 4, 2, 9, 101.27, 50.63, -2, 1, 5, 2, 9, 341.77, 82.28, -2, 1, 6, 2, 9, 101.27, 202.53, -2, 1, 7, 2, 9, 101.27, 82.28, -2, 1, 8, 2, 9, 101.27, 170.89, -2, 1, 9, 2, 8, 101.27, 126.58, -2, 1, 10, 2, 2, 126.58, 82.28, -2, 1, 11, 2, 2, 0, 0, -2, 1], [0, 2, 9, 0, 373.42, -2, 1, 1, 2, 9, 75.95, 303.8, -2, 1, 2, 2, 9, 0, 215.19, -2, 1, 3, 2, 9, 75.95, 139.24, -2, 1, 4, 2, 9, 0, 37.97, -2, 1, 5, 2, 8, 424.05, 373.42, -2, 1, 6, 2, 8, 0, 335.44, -2, 1, 7, 2, 8, 0, 303.8, -2, 1, 8, 2, 8, 0, 253.16, -2, 1, 9, 2, 8, 430.38, 215.19, -2, 1, 10, 2, 8, 0, 170.89, -2, 1, 11, 2, 8, 0, 139.24, -2, 1, 12, 2, 8, 0, 69.62, -2, 1, 13, 2, 8, 455.7, 37.97, -2, 1, 14, 2, 8, 0, 0, -2, 1], [0, 2, 4, 132.91, 12.66, -2, 1, 1, 2, 9, 240.51, 221.52, -2, 1, 2, 2, 0, 341.77, 37.97, -2, 1, 3, 2, 6, 56.96, 101.27, 1, 1, 4, 3, 1, 373.42, 158.23, -2, 1, 5, 3, 7, 272.15, 120.25, 2, 1, 6, 0, 6, 18.99, 183.54, -2, 1, 7, 1, 1, 25.32, 31.65, -2, 1, 8, 0, 5, 177.22, 189.87, 19, 1, 9, 0, 0, 272.15, 31.65, 20, 1, 10, 1, 9, 411.39, 94.94, 4, 1, 11, 1, 9, 139.24, 120.25, -2, 1, 12, 1, 3, 37.97, 126.58, 9, 1, 13, 0, 3, 107.59, 227.85, -2, 1, 14, 0, 3, 335.44, 120.25, -2, 1, 15, 0, 2, 88.61, 18.99, -2, 1, 16, 0, 2, 386.08, 12.66, -2, 1, 17, 0, 2, 0, 297.47, -2, 1, 18, 2, 5, 189.87, 6.33, 18, 1, 19, 2, 1, 487.34, 56.96, -2, 1, 20, 2, 0, 139.24, 291.14, -1, 1, 21, 1, 0, 379.75, 259.49, 0, 1, 22, 1, 0, 455.7, 253.16, -2, 1, 23, 1, 0, 0, 0, -2, 1, 24, 3, 6, 177.22, 272.15, -2, 1, 25, 3, 0, 0, 329.11, 0, 1, 26, 3, 0, 234.18, 6.33, -2, 1, 27, 3, 0, 462.03, 120.25, -2, 1], [0, 2, 1, 145.57, 126.58, -2, 1, 1, 2, 1, 316.46, 126.58, 0, 1, 2, 2, 4, 215.19, 126.58, 19, 1, 3, 0, 7, 145.57, 259.49, -2, 1, 4, 0, 9, 151.9, 278.48, -2, 1, 5, 0, 9, 322.78, 278.48, -2, 1, 6, 0, 9, 208.86, 284.81, -2, 1, 7, 0, 9, 272.15, 284.81, -2, 1, 8, 0, 7, 139.24, 297.47, 5, 1, 9, 0, 9, 145.57, 310.13, -2, 1, 10, 0, 9, 322.78, 310.13, -2, 1, 11, 0, 9, 208.86, 316.46, -2, 1, 12, 0, 9, 265.82, 316.46, -2, 1, 13, 3, 6, 139.24, 259.49, 18, 1, 14, 1, 2, 329.11, 177.22, -1, 1, 15, 1, 2, 107.59, 177.22, -1, 1, 16, 2, 8, 63.29, 37.97, -2, 1, 17, 2, 8, 341.77, 37.97, -2, 1, 18, 2, 8, 158.23, 12.66, 6, 1, 19, 2, 8, 253.16, 12.66, 5, 1, 20, 2, 0, 63.29, 145.57, -2, 1, 21, 2, 0, 367.09, 145.57, -2, 1, 22, 2, 0, 367.09, 234.18, -2, 1, 23, 2, 0, 101.27, 234.18, -2, 1, 24, 2, 0, 145.57, 202.53, 13, 1, 25, 2, 0, 253.16, 202.53, 11, 1, 26, 2, 0, 379.75, 101.27, 15, 1, 27, 2, 0, 75.95, 101.27, 15, 1, 28, 2, 0, 265.82, 126.58, -2, 1, 29, 2, 0, 158.23, 126.58, -2, 1, 30, 2, 0, 126.58, 120.25, -2, 1, 31, 2, 0, 322.78, 120.25, 0, 1, 32, 2, 0, 322.78, 82.28, -2, 1, 33, 2, 0, 329.11, 56.96, -2, 1, 34, 2, 0, 151.9, 56.96, -2, 1, 35, 2, 0, 126.58, 82.28, -2, 1, 36, 2, 0, 183.54, 56.96, 18, 1, 37, 3, 9, 0, 0, -2, 1], [0, 2, 0, 0, 322.78, -2, 1, 1, 2, 0, 0, 322.78, 18, 1, 2, 2, 0, 63.29, 322.78, -2, 1, 3, 2, 0, 63.29, 322.78, -2, 1, 4, 2, 0, 379.75, 322.78, -2, 1, 5, 2, 0, 379.75, 322.78, -2, 1, 6, 2, 0, 443.04, 322.78, -2, 1, 7, 2, 0, 443.04, 322.78, 18, 1, 8, 2, 0, 253.16, 322.78, -2, 1, 9, 2, 0, 126.58, 322.78, -2, 1, 10, 2, 0, 126.58, 322.78, 18, 1, 11, 2, 0, 253.16, 322.78, 18, 1, 12, 2, 9, 0, 291.14, -2, 1, 13, 2, 9, 379.75, 291.14, -2, 1, 14, 2, 9, 126.58, 303.8, -2, 1, 15, 2, 9, 348.1, 303.8, -2, 1, 16, 2, 9, 145.57, 303.8, -2, 1, 17, 2, 9, 253.16, 303.8, -2, 1, 18, 2, 9, 63.29, 291.14, -2, 1, 19, 2, 9, 139.24, 303.8, -2, 1, 20, 2, 1, 0, 265.82, -2, 1, 21, 2, 1, 0, 265.82, 18, 1, 22, 2, 1, 63.29, 265.82, -2, 1, 23, 2, 1, 443.04, 265.82, -2, 1, 24, 2, 1, 379.75, 265.82, 18, 1, 25, 2, 1, 379.75, 265.82, -2, 1, 26, 2, 1, 126.58, 259.49, 18, 1, 27, 2, 1, 126.58, 265.82, -2, 1, 28, 2, 1, 189.87, 265.82, 18, 1, 29, 2, 1, 253.16, 259.49, -2, 1, 30, 2, 1, 379.75, 259.49, -2, 1, 31, 2, 1, 0, 259.49, -2, 1, 32, 2, 9, 0, 202.53, -2, 1, 33, 2, 9, 63.29, 196.2, -2, 1, 34, 2, 9, 126.58, 196.2, -2, 1, 35, 2, 9, 0, 202.53, -2, 1, 36, 2, 9, 253.16, 196.2, -2, 1, 37, 2, 9, 379.75, 196.2, -2, 1, 38, 2, 9, 379.75, 202.53, -2, 1, 39, 2, 9, 443.04, 202.53, -2, 1, 40, 2, 2, 0, 177.22, 18, 1, 41, 2, 9, 0, 75.95, -2, 1, 42, 2, 9, 69.62, 107.59, -2, 1, 43, 2, 9, 158.23, 75.95, -2, 1, 44, 2, 9, 367.09, 75.95, -2, 1, 45, 2, 9, 424.05, 75.95, -2, 1, 46, 2, 8, 0, 0, 18, 1, 47, 2, 9, 215.19, 31.65, -2, 1, 48, 2, 9, 284.81, 0, -2, 1, 49, 2, 9, 177.22, 0, -2, 1, 50, 2, 6, 189.87, 0, -2, 1], [0, 2, 1, 443.04, 303.8, 19, 1, 1, 2, 1, 0, 303.8, 19, 1, 2, 2, 2, 443.04, 253.16, 17, 1, 3, 2, 2, 0, 253.16, 17, 1, 4, 2, 3, 0, 202.53, 19, 1, 5, 2, 4, 443.04, 151.9, 19, 1, 6, 2, 5, 443.04, 101.27, 15, 1, 7, 2, 5, 443.04, 101.27, 19, 1, 8, 2, 5, 443.04, 126.58, 19, 1, 9, 2, 5, 0, 101.27, 19, 1, 10, 2, 5, 44.3, 101.27, 19, 1, 11, 2, 5, 0, 126.58, 15, 1, 12, 2, 6, 0, 0, -2, 1, 13, 2, 6, 474.68, 0, 11, 1, 14, 2, 7, 424.05, 0, -2, 1, 15, 2, 8, 82.28, 0, 18, 1, 16, 2, 8, 379.75, 0, 18, 1, 17, 2, 8, 126.58, 101.27, -1, 1, 18, 2, 4, 316.46, 101.27, -2, 1, 19, 2, 9, 360.76, 50.63, -2, 1, 20, 2, 9, 126.58, 50.63, -2, 1, 21, 2, 7, 189.87, 101.27, -2, 1, 22, 2, 7, 253.16, 101.27, 14, 1, 23, 2, 6, 145.57, 50.63, -2, 1, 24, 2, 6, 253.16, 50.63, -2, 1, 25, 2, 5, 208.86, 50.63, -2, 1, 26, 2, 4, 126.58, 0, -2, 1, 27, 2, 4, 297.47, 0, -2, 1, 28, 2, 9, 189.87, 37.97, -2, 1, 29, 2, 2, 132.91, 0, 6, 1, 30, 2, 1, 82.28, 101.27, -2, 1, 31, 2, 1, 379.75, 101.27, -2, 1, 32, 2, 0, 316.46, 202.53, -2, 1, 33, 2, 0, 126.58, 202.53, -2, 1, 34, 2, 0, 189.87, 202.53, -2, 1, 35, 2, 0, 253.16, 202.53, -2, 1, 36, 2, 2, 189.87, 253.16, -2, 1, 37, 2, 2, 253.16, 253.16, -2, 1, 38, 2, 6, 379.75, 253.16, -2, 1, 39, 2, 6, 82.28, 253.16, -2, 1, 40, 2, 8, 316.46, 278.48, -2, 1, 41, 2, 8, 170.89, 278.48, -2, 1, 42, 2, 9, 63.29, 202.53, -2, 1, 43, 2, 9, 424.05, 202.53, -2, 1, 44, 2, 9, 424.05, 101.27, -2, 1, 45, 2, 9, 63.29, 101.27, -2, 1, 46, 2, 0, 63.29, 151.9, -2, 1, 47, 2, 0, 424.05, 151.9, -2, 1, 48, 2, 9, 63.29, 329.11, -2, 1, 49, 2, 9, 335.44, 329.11, -2, 1, 50, 2, 0, 170.89, 329.11, 5, 1, 51, 2, 0, 316.46, 329.11, 5, 1, 52, 2, 9, 189.87, 329.11, -2, 1, 53, 2, 9, 272.15, 329.11, -2, 1, 54, 2, 1, 234.18, 329.11, 2, 1], [0, 2, 0, 253.16, 303.8, 3, 1, 1, 2, 0, 0, 303.8, 3, 1, 2, 2, 0, 126.58, 297.47, 0, 1, 3, 2, 4, 0, 202.53, 16, 1, 4, 2, 2, 0, 202.53, 15, 1, 5, 2, 6, 379.75, 202.53, 16, 1, 6, 2, 0, 379.75, 202.53, 15, 1, 7, 2, 1, 126.58, 291.14, -1, 1, 8, 2, 2, 126.58, 284.81, 1, 1, 9, 2, 3, 126.58, 278.48, 6, 1, 10, 2, 4, 126.58, 272.15, 13, 1, 11, 2, 5, 126.58, 265.82, 17, 1, 12, 2, 6, 126.58, 259.49, 16, 1, 13, 2, 7, 126.58, 253.16, -2, 1, 14, 2, 8, 126.58, 246.84, 18, 1, 15, 2, 9, 126.58, 240.51, 17, 1, 16, 2, 8, 126.58, 234.18, 18, 1, 17, 2, 7, 126.58, 227.85, 20, 1, 18, 2, 6, 126.58, 221.52, -2, 1, 19, 2, 5, 126.58, 215.19, -2, 1, 20, 2, 4, 126.58, 208.86, 2, 1, 21, 2, 3, 126.58, 202.53, -2, 1, 22, 2, 2, 126.58, 196.2, 0, 1, 23, 2, 1, 126.58, 189.87, -2, 1, 24, 2, 0, 126.58, 183.54, -1, 1, 25, 2, 2, 208.86, 56.96, 19, 1, 26, 2, 2, 253.16, 56.96, 18, 1, 27, 2, 4, 253.16, 101.27, 0, 1, 28, 2, 6, 253.16, 0, 20, 1, 29, 2, 6, 126.58, 0, 20, 1, 30, 2, 4, 126.58, 101.27, 0, 1, 31, 2, 3, 335.44, 50.63, -2, 1, 32, 2, 3, 126.58, 50.63, -2, 1, 33, 2, 7, 379.75, 0, 14, 1, 34, 2, 1, 379.75, 101.27, 12, 1, 35, 2, 7, 0, 0, 11, 1, 36, 2, 1, 0, 101.27, 10, 1], [0, 0, 9, 0, 0, 18, 1, 1, 0, 8, 0, 101.27, 18, 1, 2, 0, 7, 126.58, 101.27, -2, 1, 3, 0, 1, 126.58, 50.63, -2, 1, 4, 0, 6, 31.65, 0, 0, 1, 5, 0, 0, 0, 202.53, 20, 1, 6, 0, 9, 0, 253.16, -2, 1, 7, 0, 9, 443.04, 170.89, 1, 1, 8, 0, 9, 436.71, 101.27, -2, 1, 9, 1, 6, 221.52, 25.32, 19, 1, 10, 0, 7, 335.44, 101.27, -2, 1, 11, 0, 7, 221.52, 158.23, 9, 1, 12, 0, 0, 291.14, 221.52, 19, 1, 13, 0, 9, 0, 316.46, 14, 1, 14, 0, 9, 63.29, 316.46, 11, 1, 15, 0, 6, 0, 341.77, 13, 1, 16, 0, 7, 0, 303.8, 12, 1, 17, 0, 0, 63.29, 316.46, 6, 1, 18, 0, 6, 63.29, 303.8, -2, 1, 19, 0, 1, 221.52, 253.16, 0, 1, 20, 0, 2, 113.92, 303.8, 8, 1, 21, 0, 5, 354.43, 284.81, 0, 1, 22, 0, 3, 411.39, 259.49, 0, 1, 23, 0, 2, 373.42, 196.2, 10, 1, 24, 0, 1, 386.08, 50.63, 0, 1, 25, 0, 6, 398.73, 126.58, -1, 1, 26, 0, 1, 430.38, 202.53, -1, 1, 27, 0, 0, 449.37, 202.53, 20, 1, 28, 0, 7, 474.68, 202.53, 1, 1, 29, 0, 4, 443.04, 126.58, 3, 1, 30, 0, 8, 75.95, 0, 0, 1, 31, 0, 5, 183.54, 0, -2, 1, 32, 0, 6, 379.75, 0, -2, 1, 33, 0, 7, 449.37, 0, -2, 1, 34, 0, 6, 474.68, 69.62, -2, 1, 35, 0, 0, 474.68, 69.62, -2, 1, 36, 0, 8, 386.08, 25.32, -2, 1, 37, 0, 9, 386.08, 0, -2, 1, 38, 0, 0, 443.04, 94.94, -2, 1, 39, 0, 2, 405.06, 0, -2, 1, 40, 0, 3, 126.58, 202.53, 17, 1, 41, 0, 6, 126.58, 158.23, 19, 1, 42, 0, 5, 145.57, 158.23, 18, 1, 43, 0, 0, 335.44, 6.33, -2, 1, 44, 0, 7, 189.87, 50.63, -2, 1, 45, 0, 8, 310.13, 25.32, -2, 1, 46, 0, 3, 202.53, 31.65, -2, 1, 47, 0, 4, 284.81, 25.32, -2, 1, 48, 0, 4, 481.01, 272.15, -1, 1], [0, 2, 1, 126.58, 0, -2, 1, 1, 2, 1, 253.16, 101.27, 19, 1, 2, 2, 1, 189.87, 101.27, 14, 1, 3, 2, 8, 253.16, 50.63, -2, 1, 4, 2, 8, 189.87, 50.63, -2, 1, 5, 2, 8, 379.75, 0, 17, 1, 6, 2, 8, 63.29, 0, 17, 1, 7, 2, 6, 443.04, 50.63, 8, 1, 8, 2, 6, 0, 50.63, -2, 1, 9, 2, 3, 379.75, 101.27, -2, 1, 10, 2, 3, 94.94, 101.27, -2, 1, 11, 2, 3, 443.04, 151.9, 0, 1, 12, 2, 3, 31.65, 151.9, -2, 1, 13, 2, 5, 145.57, 50.63, -2, 1, 14, 2, 5, 335.44, 50.63, -2, 1, 15, 2, 9, 348.1, 177.22, -2, 1, 16, 2, 9, 126.58, 177.22, -2, 1, 17, 2, 2, 63.29, 202.53, 0, 1, 18, 2, 2, 379.75, 202.53, -1, 1, 19, 2, 2, 189.87, 215.19, -1, 1, 20, 2, 2, 265.82, 215.19, -1, 1, 21, 2, 5, 240.51, 177.22, -2, 1, 22, 2, 4, 253.16, 151.9, -2, 1, 23, 2, 4, 177.22, 151.9, -2, 1, 24, 2, 6, 120.25, 151.9, -2, 1, 25, 2, 6, 316.46, 151.9, -2, 1, 26, 2, 7, 379.75, 151.9, 18, 1, 27, 2, 7, 63.29, 151.9, 18, 1, 28, 2, 2, 316.46, 101.27, -2, 1, 29, 2, 1, 126.58, 101.27, -2, 1, 30, 2, 0, 126.58, 202.53, -2, 1, 31, 2, 0, 354.43, 202.53, -2, 1, 32, 2, 3, 0, 202.53, -2, 1, 33, 2, 3, 474.68, 202.53, -2, 1, 34, 2, 3, 443.04, 25.32, -2, 1, 35, 2, 3, 31.65, 25.32, -2, 1, 36, 2, 2, 63.29, 101.27, -2, 1, 37, 2, 2, 411.39, 101.27, 2, 1], [0, 0, 9, 0, 0, -2, 1, 1, 0, 9, 0, 0, 17, 1, 2, 0, 9, 443.04, 0, 15, 1, 3, 0, 9, 139.24, 88.61, 0, 0.6, 4, 0, 9, 341.77, 88.61, 20, 0.2, 5, 1, 6, 215.19, 202.53, -2, 1, 6, 1, 6, 240.51, 253.16, 2, 0.2, 7, 1, 5, 297.47, 196.2, 5, 1, 8, 1, 5, 335.44, 75.95, -2, 1, 9, 1, 5, 341.77, 69.62, -2, 1, 10, 1, 5, 335.44, 69.62, -2, 1, 11, 1, 5, 303.8, 69.62, -2, 1, 12, 1, 3, 436.71, 164.56, 20, 0.9, 13, 1, 3, 436.71, 37.97, -2, 1, 14, 1, 3, 63.29, 37.97, -2, 1, 15, 1, 7, 120.25, 69.62, -2, 1, 16, 1, 7, 145.57, 69.62, -2, 1, 17, 1, 1, 373.42, 145.57, 1, 0.3, 18, 1, 1, 310.13, 215.19, -2, 1, 19, 1, 1, 259.49, 253.16, -2, 1, 20, 1, 1, 310.13, 253.16, -2, 1, 21, 1, 1, 348.1, 221.52, -2, 1, 22, 1, 0, 240.51, 177.22, 12, 1, 23, 1, 0, 278.48, 120.25, -2, 1, 24, 1, 0, 348.1, 151.9, 18, 1, 25, 3, 8, 367.09, 44.3, -2, 1, 26, 3, 8, 354.43, 37.97, -2, 1, 27, 3, 8, 253.16, 37.97, 2, 0.5, 28, 3, 8, 151.9, 37.97, -2, 1, 29, 3, 4, 253.16, 94.94, -2, 1, 30, 3, 4, 253.16, 126.58, -2, 1, 31, 3, 4, 177.22, 139.24, -2, 1, 32, 3, 8, 63.29, 37.97, -2, 1, 33, 3, 8, 63.29, 101.27, 9, 1, 34, 3, 0, 202.53, 94.94, -2, 1, 35, 3, 0, 164.56, 101.27, -2, 1, 36, 3, 0, 145.57, 132.91, -2, 1, 37, 3, 1, 63.29, 151.9, -2, 1, 38, 3, 1, 63.29, 189.87, 14, 1, 39, 3, 1, 113.92, 253.16, 0, 1, 40, 3, 1, 151.9, 208.86, -2, 1, 41, 3, 3, 158.23, 196.2, -2, 1, 42, 3, 3, 88.61, 170.89, -2, 1], [0, 1, 0, 126.58, 151.9, -2, 1, 1, 2, 2, 126.58, 126.58, -2, 1, 2, 2, 1, 126.58, 101.27, 0, 1, 3, 1, 0, 316.46, 202.53, -2, 1, 4, 2, 2, 316.46, 227.85, -1, 1, 5, 2, 1, 316.46, 253.16, -1, 1, 6, 1, 0, 253.16, 101.27, -2, 1, 7, 2, 2, 284.81, 101.27, -2, 1, 8, 2, 1, 316.46, 101.27, -2, 1, 9, 1, 0, 189.87, 202.53, -2, 1, 10, 2, 2, 158.23, 202.53, -1, 1, 11, 2, 1, 126.58, 202.53, -1, 1, 12, 3, 4, 221.52, 151.9, 18, 1, 13, 2, 3, 316.46, 278.48, 17, 1, 14, 3, 4, 348.1, 101.27, 20, 1, 15, 2, 3, 126.58, 75.95, 20, 1, 16, 3, 4, 94.94, 202.53, 10, 1, 17, 2, 3, 221.52, 50.63, -1, 1, 18, 2, 3, 221.52, 253.16, -1, 1, 19, 0, 0, 189.87, 101.27, -2, 1, 20, 0, 0, 253.16, 202.53, -2, 1, 21, 2, 1, 189.87, 0, -1, 1, 22, 2, 0, 253.16, 0, -2, 1, 23, 2, 2, 348.1, 202.53, -2, 1, 24, 2, 2, 94.94, 177.22, -2, 1, 25, 2, 2, 379.75, 101.27, -1, 1, 26, 2, 2, 0, 202.53, -1, 1, 27, 0, 0, 379.75, 202.53, -2, 1, 28, 0, 0, 63.29, 101.27, -2, 1, 29, 1, 4, 379.75, 253.16, -1, 1, 30, 1, 4, 0, 50.63, -1, 1, 31, 2, 1, 0, 101.27, -2, 1, 32, 2, 1, 316.46, 0, -1, 1, 33, 2, 1, 316.46, 0, -2, 1, 34, 2, 1, 316.46, 0, -2, 1, 35, 2, 1, 443.04, 0, -2, 1, 36, 2, 1, 126.58, 0, -2, 1, 37, 2, 1, 158.23, 0, -2, 1, 38, 2, 1, 63.29, 0, -2, 1, 39, 2, 1, 0, 0, -2, 1], [0, 2, 8, 272.15, 126.58, -2, 1, 1, 2, 8, 221.52, 126.58, -2, 1, 2, 2, 9, 272.15, 120.25, -2, 1, 3, 2, 9, 215.19, 120.25, -2, 1, 4, 1, 8, 221.52, 158.23, -2, 1, 5, 3, 6, 259.49, 170.89, -2, 1, 6, 3, 6, 240.51, 170.89, -2, 1, 7, 3, 9, 246.84, 183.54, -2, 1, 8, 1, 2, 196.2, 164.56, 14, 1, 9, 0, 9, 234.18, 120.25, 19, 1, 10, 0, 9, 259.49, 151.9, -2, 1, 11, 0, 9, 208.86, 151.9, -2, 1, 12, 0, 9, 177.22, 151.9, -2, 1, 13, 0, 9, 291.14, 151.9, -2, 1, 14, 0, 9, 202.53, 183.54, -2, 1, 15, 0, 9, 196.2, 101.27, -2, 1, 16, 2, 6, 291.14, 44.3, 17, 1, 17, 2, 6, 132.91, 50.63, 17, 1, 18, 0, 9, 278.48, 31.65, -2, 1, 19, 0, 9, 120.25, 44.3, -2, 1, 20, 1, 8, 436.71, 158.23, -2, 1, 21, 1, 8, 455.7, 126.58, -2, 1, 22, 1, 8, 329.11, 246.84, -2, 1, 23, 1, 8, 113.92, 240.51, -2, 1, 24, 1, 8, 63.29, 177.22, -2, 1, 25, 1, 8, 18.99, 44.3, -2, 1, 26, 1, 8, 392.41, 221.52, -2, 1, 27, 1, 8, 227.85, 259.49, -2, 1, 28, 1, 8, 430.38, 37.97, -2, 1, 29, 1, 8, 392.41, 158.23, -2, 1, 30, 1, 8, 234.18, 25.32, -2, 1, 31, 1, 8, 417.72, 88.61, -2, 1, 32, 1, 8, 50.63, 0, -2, 1, 33, 1, 8, 379.75, 12.66, -2, 1, 34, 1, 8, 31.65, 240.51, -2, 1, 35, 1, 8, 462.03, 246.84, -2, 1, 36, 1, 8, 341.77, 208.86, -2, 1, 37, 1, 8, 468.35, 63.29, -2, 1, 38, 1, 8, 69.62, 126.58, -2, 1, 39, 0, 0, 449.37, 234.18, 3, 1, 40, 0, 0, 417.72, 221.52, -2, 1, 41, 0, 0, 417.72, 234.18, -2, 1, 42, 0, 0, 417.72, 240.51, -2, 1, 43, 0, 0, 386.08, 227.85, -2, 1, 44, 0, 0, 386.08, 253.16, 17, 1, 45, 0, 0, 348.1, 284.81, -2, 1, 46, 0, 0, 386.08, 234.18, -2, 1, 47, 0, 0, 348.1, 259.49, -2, 1, 48, 0, 0, 341.77, 297.47, -2, 1, 49, 0, 0, 335.44, 297.47, -2, 1, 50, 0, 0, 329.11, 297.47, -2, 1, 51, 0, 0, 322.78, 297.47, -2, 1, 52, 0, 0, 316.46, 297.47, -2, 1, 53, 0, 0, 310.13, 297.47, -2, 1, 54, 0, 0, 310.13, 291.14, -2, 1, 55, 0, 0, 310.13, 284.81, -2, 1, 56, 0, 0, 310.13, 278.48, -2, 1, 57, 0, 0, 316.46, 259.49, -2, 1, 58, 0, 0, 310.13, 259.49, -2, 1, 59, 0, 0, 253.16, 253.16, 20, 1, 60, 0, 0, 259.49, 253.16, -2, 1, 61, 0, 0, 265.82, 253.16, 17, 1, 62, 0, 0, 272.15, 253.16, -2, 1, 63, 0, 0, 297.47, 246.84, -2, 1, 64, 0, 0, 335.44, 246.84, -2, 1, 65, 0, 0, 221.52, 265.82, 15, 1, 66, 0, 0, 145.57, 253.16, -2, 1, 67, 0, 0, 88.61, 272.15, 14, 1, 68, 0, 0, 0, 272.15, -2, 1, 69, 0, 0, 462.03, 132.91, 2, 1, 70, 0, 0, 436.71, 164.56, 5, 1, 71, 0, 0, 392.41, 151.9, -2, 1, 72, 0, 0, 392.41, 177.22, 19, 1, 73, 0, 0, 253.16, 227.85, -2, 1, 74, 0, 0, 221.52, 227.85, -2, 1, 75, 0, 0, 113.92, 227.85, 13, 1, 76, 0, 0, 0, 259.49, -2, 1, 77, 0, 0, 31.65, 227.85, -2, 1, 78, 0, 0, 0, 227.85, -2, 1, 79, 0, 0, 0, 69.62, -2, 1, 80, 0, 0, 31.65, 50.63, -2, 1, 81, 0, 0, 0, 44.3, -2, 1, 82, 0, 0, 31.65, 44.3, -2, 1, 83, 0, 0, 0, 0, -2, 1, 84, 0, 0, 63.29, 177.22, -2, 1, 85, 0, 0, 63.29, 196.2, -2, 1, 86, 0, 0, 272.15, 151.9, 3, 1, 87, 0, 0, 310.13, 132.91, 18, 1, 88, 0, 0, 367.09, 88.61, 18, 1, 89, 0, 0, 386.08, 88.61, -2, 1, 90, 0, 0, 392.41, 0, -2, 1, 91, 0, 0, 107.59, 0, 0, 1, 92, 0, 0, 215.19, 0, -2, 1, 93, 0, 0, 234.18, 31.65, -2, 1, 94, 0, 0, 215.19, 31.65, -2, 1, 95, 0, 0, 379.75, 0, -2, 1, 96, 0, 0, 360.76, 25.32, 18, 1, 97, 0, 0, 481.01, 63.29, -2, 1, 98, 0, 0, 63.29, 0, 18, 1, 99, 0, 0, 63.29, 132.91, -2, 1], [0, 3, 2, 101.27, 164.56, -1, 1, 1, 3, 1, 158.23, 151.9, -2, 1, 2, 3, 2, 215.19, 170.89, -1, 1, 3, 3, 1, 272.15, 164.56, -2, 1, 4, 3, 2, 329.11, 189.87, -1, 1, 5, 2, 1, 379.75, 177.22, -2, 1, 6, 3, 4, 75.95, 164.56, 18, 1, 7, 3, 0, 0, 177.22, -2, 1, 8, 3, 0, 75.95, 183.54, -2, 1, 9, 0, 0, 139.24, 177.22, -2, 1, 10, 0, 0, 227.85, 183.54, -2, 1, 11, 3, 0, 310.13, 196.2, -2, 1, 12, 3, 0, 379.75, 183.54, -1, 1, 13, 0, 2, 443.04, 196.2, -2, 1, 14, 3, 3, 411.39, 158.23, -2, 1, 15, 0, 3, 430.38, 139.24, 18, 1, 16, 0, 3, 6.33, 139.24, -2, 1, 17, 0, 3, 18.99, 126.58, -1, 1, 18, 1, 1, 291.14, 18.99, 19, 1, 19, 1, 1, 373.42, 82.28, -2, 1, 20, 1, 1, 443.04, 0, 11, 1, 21, 2, 0, 12.66, 0, -2, 1], [0, 2, 8, 246.84, 196.2, 18, 1, 1, 2, 2, 234.18, 183.54, -2, 1, 2, 2, 7, 221.52, 170.89, 18, 1, 3, 2, 0, 208.86, 158.23, 19, 1, 4, 2, 3, 196.2, 145.57, -2, 1, 5, 2, 5, 183.54, 132.91, -2, 1, 6, 2, 1, 170.89, 120.25, 16, 1, 7, 2, 6, 158.23, 107.59, -2, 1, 8, 2, 4, 145.57, 94.94, -2, 1, 9, 2, 2, 132.91, 82.28, 0, 1, 10, 2, 7, 120.25, 69.62, -2, 1, 11, 2, 0, 107.59, 56.96, -2, 1, 12, 2, 3, 94.94, 44.3, 15, 1, 13, 2, 5, 82.28, 31.65, -2, 1, 14, 2, 1, 69.62, 18.99, -2, 1, 15, 2, 6, 56.96, 6.33, 17, 1, 16, 2, 4, 44.3, 0, -2, 1, 17, 2, 4, 253.16, 0, 0, 1, 18, 2, 2, 265.82, 0, -2, 1, 19, 2, 2, 31.65, 0, -2, 1, 20, 2, 7, 18.99, 0, 11, 1, 21, 2, 7, 278.48, 0, -2, 1, 22, 2, 0, 6.33, 0, -2, 1, 23, 2, 0, 291.14, 0, -2, 1, 24, 2, 3, 0, 0, 6, 1, 25, 2, 3, 0, 202.53, -2, 1, 26, 2, 3, 303.8, 202.53, -2, 1, 27, 2, 3, 303.8, 0, 5, 1, 28, 2, 9, 379.75, 0, 1, 1, 29, 2, 9, 0, 0, -2, 1], [0, 1, 0, 0, 0, 1, 1, 1, 1, 9, 0, 259.49, -2, 1, 2, 1, 9, 82.28, 240.51, -2, 1, 3, 1, 0, 56.96, 202.53, -2, 1, 4, 1, 0, 50.63, 208.86, -2, 1, 5, 1, 9, 88.61, 234.18, -2, 1, 6, 1, 8, 12.66, 189.87, -2, 1, 7, 1, 2, 50.63, 183.54, -2, 1, 8, 1, 2, 63.29, 183.54, -2, 1, 9, 1, 2, 63.29, 183.54, -2, 1, 10, 1, 0, 25.32, 208.86, -2, 1, 11, 1, 2, 18.99, 234.18, -2, 1, 12, 1, 0, 18.99, 246.84, -2, 1, 13, 1, 0, 37.97, 246.84, -2, 1, 14, 1, 5, 310.13, 12.66, -2, 1, 15, 1, 5, 348.1, 25.32, -2, 1, 16, 1, 5, 291.14, 31.65, 18, 1, 17, 1, 5, 265.82, 37.97, -2, 1, 18, 1, 5, 69.62, 18.99, -2, 1, 19, 1, 5, 18.99, 56.96, -2, 1, 20, 1, 5, 424.05, 6.33, -2, 1, 21, 1, 1, 170.89, 265.82, -2, 1, 22, 1, 1, 202.53, 253.16, -2, 1, 23, 1, 1, 310.13, 259.49, -2, 1, 24, 1, 1, 386.08, 259.49, -2, 1, 25, 1, 1, 462.03, 265.82, -2, 1, 26, 1, 8, 0, 329.11, 12, 1, 27, 1, 1, 0, 303.8, -2, 1, 28, 1, 1, 0, 303.8, -2, 1, 29, 1, 1, 37.97, 303.8, -2, 1, 30, 1, 1, 50.63, 303.8, -2, 1, 31, 1, 1, 101.27, 303.8, -2, 1, 32, 1, 1, 94.94, 303.8, -2, 1, 33, 1, 1, 132.91, 303.8, -2, 1, 34, 1, 1, 158.23, 303.8, -2, 1, 35, 1, 1, 189.87, 303.8, -2, 1, 36, 1, 1, 189.87, 303.8, -2, 1, 37, 1, 3, 278.48, 310.13, -2, 1, 38, 1, 1, 259.49, 303.8, -2, 1, 39, 1, 1, 278.48, 303.8, -2, 1, 40, 1, 1, 310.13, 303.8, -2, 1, 41, 1, 1, 329.11, 316.46, -2, 1, 42, 1, 1, 310.13, 303.8, -2, 1, 43, 1, 1, 373.42, 303.8, -2, 1, 44, 1, 1, 379.75, 303.8, -2, 1, 45, 1, 1, 379.75, 303.8, -2, 1, 46, 1, 1, 436.71, 303.8, -2, 1, 47, 1, 1, 468.35, 303.8, -2, 1, 48, 1, 1, 468.35, 322.78, -2, 1, 49, 1, 1, 436.71, 303.8, -2, 1], [0, 2, 9, 170.89, 215.19, -2, 1, 1, 2, 9, 132.91, 215.19, -2, 1, 2, 2, 9, 139.24, 164.56, -2, 1, 3, 2, 9, 25.32, 170.89, -2, 1, 4, 2, 9, 75.95, 158.23, -2, 1, 5, 2, 9, 25.32, 18.99, -2, 1, 6, 2, 9, 69.62, 63.29, -2, 1, 7, 2, 9, 18.99, 56.96, -2, 1, 8, 2, 9, 63.29, 12.66, -2, 1, 9, 2, 9, 63.29, 202.53, -2, 1, 10, 2, 9, 75.95, 56.96, -2, 1, 11, 2, 8, 151.9, 12.66, -2, 1, 12, 2, 8, 151.9, 6.33, -2, 1, 13, 2, 8, 151.9, 0, -2, 1, 14, 2, 8, 145.57, 56.96, -2, 1, 15, 2, 8, 145.57, 63.29, -2, 1, 16, 2, 8, 145.57, 69.62, -2, 1, 17, 2, 9, 139.24, 63.29, -2, 1, 18, 2, 9, 139.24, 75.95, -2, 1, 19, 2, 9, 145.57, 0, -2, 1, 20, 2, 0, 291.14, 189.87, -2, 1, 21, 2, 0, 259.49, 145.57, -2, 1, 22, 2, 0, 234.18, 132.91, -2, 1, 23, 2, 0, 189.87, 113.92, -2, 1, 24, 2, 0, 430.38, 132.91, -2, 1, 25, 2, 0, 430.38, 132.91, -2, 1, 26, 2, 0, 411.39, 177.22, -2, 1, 27, 2, 0, 411.39, 132.91, -2, 1, 28, 2, 0, 411.39, 177.22, -2, 1, 29, 2, 0, 386.08, 132.91, -2, 1, 30, 2, 0, 221.52, 113.92, -2, 1, 31, 2, 0, 189.87, 113.92, -2, 1, 32, 2, 0, 202.53, 132.91, -2, 1, 33, 2, 0, 189.87, 132.91, -2, 1, 34, 2, 0, 234.18, 253.16, -2, 1], [0, 1, 8, 164.56, 113.92, -2, 1, 1, 1, 4, 215.19, 69.62, -2, 1, 2, 1, 4, 240.51, 120.25, 1, 1, 3, 1, 4, 221.52, 158.23, -2, 1, 4, 1, 4, 183.54, 177.22, -1, 1, 5, 1, 4, 126.58, 158.23, -2, 1, 6, 1, 4, 101.27, 132.91, 4, 1, 7, 1, 4, 139.24, 75.95, -2, 1, 8, 1, 4, 183.54, 37.97, 0, 1, 9, 2, 5, 151.9, 177.22, -2, 1, 10, 2, 5, 221.52, 183.54, -2, 1, 11, 2, 5, 246.84, 158.23, -2, 1, 12, 2, 5, 240.51, 94.94, -2, 1, 13, 2, 5, 215.19, 63.29, -2, 1, 14, 2, 5, 158.23, 69.62, -2, 1, 15, 2, 5, 120.25, 94.94, -2, 1, 16, 2, 5, 113.92, 158.23, -2, 1, 17, 0, 2, 215.19, 37.97, -2, 1, 18, 0, 2, 82.28, 145.57, 1, 1, 19, 0, 3, 88.61, 37.97, -2, 1, 20, 0, 3, 202.53, 139.24, -2, 1, 21, 1, 7, 379.75, 107.59, 0, 1, 22, 1, 1, 348.1, 215.19, -2, 1, 23, 1, 1, 348.1, 25.32, 12, 1, 24, 1, 6, 50.63, 12.66, -2, 1, 25, 1, 0, 221.52, 151.9, 6, 1, 26, 1, 0, 56.96, 37.97, 19, 1, 27, 1, 0, 208.86, 265.82, 15, 1, 28, 1, 0, 297.47, 50.63, -2, 1, 29, 1, 0, 215.19, 25.32, 18, 1, 30, 1, 0, 227.85, 151.9, -2, 1, 31, 2, 1, 151.9, 196.2, -2, 1], [0, 2, 2, 215.19, 170.89, -2, 1, 1, 2, 8, 316.46, 101.27, 18, 1, 2, 2, 8, 126.58, 101.27, 4, 1, 3, 2, 8, 126.58, 151.9, -2, 1, 4, 1, 1, 215.19, 151.9, 12, 1, 5, 2, 8, 291.14, 158.23, 3, 1, 6, 2, 2, 126.58, 0, 1, 1, 7, 2, 8, 126.58, 94.94, -2, 1, 8, 2, 4, 392.41, 0, 17, 1, 9, 2, 4, 215.19, 303.8, -2, 1, 10, 2, 2, 0, 101.27, 15, 1, 11, 1, 1, 0, 0, -2, 1, 12, 1, 1, 253.16, 0, -2, 1, 13, 1, 1, 379.75, 94.94, -2, 1, 14, 2, 3, 297.47, 303.8, 11, 1, 15, 2, 3, 0, 303.8, -1, 1], [0, 0, 2, 0, 0, -2, 1, 1, 2, 1, 0, 0, 10, 1, 2, 0, 2, 443.04, 0, 17, 1, 3, 2, 1, 379.75, 0, -2, 1, 4, 3, 5, 0, 0, 0, 1, 5, 2, 0, 126.58, 0, -2, 1, 6, 2, 0, 379.75, 50.63, 0, 1, 7, 2, 0, 0, 50.63, 17, 1, 8, 2, 7, 126.58, 50.63, -2, 1, 9, 0, 3, 0, 101.27, -2, 1, 10, 0, 3, 443.04, 101.27, -2, 1, 11, 2, 6, 379.75, 202.53, -2, 1, 12, 2, 6, 0, 202.53, 11, 1, 13, 3, 7, 63.29, 75.95, 18, 1, 14, 1, 5, 94.94, 101.27, 19, 1], [0, 1, 5, 284.81, 189.87, -2, 1, 1, 1, 5, 373.42, 259.49, -2, 1, 2, 1, 5, 158.23, 310.13, -2, 1, 3, 1, 5, 272.15, 297.47, -2, 1, 4, 1, 5, 145.57, 227.85, 6, 1, 5, 1, 5, 215.19, 170.89, -2, 1, 6, 0, 8, 291.14, 50.63, 12, 1, 7, 0, 8, 284.81, 107.59, -2, 1, 8, 3, 3, 265.82, 63.29, 18, 1, 9, 0, 1, 56.96, 234.18, -2, 1, 10, 1, 0, 196.2, 18.99, -2, 1, 11, 1, 6, 183.54, 139.24, -2, 1, 12, 1, 8, 430.38, 329.11, -2, 1, 13, 1, 2, 443.04, 12.66, -2, 1, 14, 1, 2, 56.96, 120.25, -2, 1, 15, 1, 7, 44.3, 107.59, -2, 1, 16, 0, 3, 25.32, 94.94, -2, 1, 17, 0, 6, 12.66, 75.95, 0, 1, 18, 0, 8, 6.33, 56.96, -2, 1, 19, 0, 4, 0, 31.65, 0, 1], [0, 2, 0, 196.2, 101.27, 18, 1, 1, 2, 0, 265.82, 101.27, 19, 1, 2, 2, 2, 189.87, 196.2, 15, 1, 3, 2, 0, 196.2, 101.27, -2, 1, 4, 2, 8, 265.82, 101.27, -2, 1, 5, 2, 7, 189.87, 145.57, 9, 1, 6, 2, 7, 189.87, 132.91, -2, 1, 7, 2, 7, 234.18, 113.92, 10, 1, 8, 2, 7, 221.52, 101.27, 12, 1, 9, 2, 7, 170.89, 82.28, 3, 1, 10, 2, 7, 158.23, 113.92, -1, 1, 11, 2, 7, 170.89, 44.3, 2, 1, 12, 2, 0, 265.82, 101.27, -2, 1, 13, 2, 7, 354.43, 69.62, 0, 1, 14, 2, 7, 82.28, 82.28, 0, 1, 15, 2, 7, 208.86, 297.47, -2, 1, 16, 2, 7, 310.13, 303.8, -2, 1, 17, 2, 9, 0, 0, -2, 1, 18, 2, 9, 0, 82.28, -2, 1, 19, 2, 9, 411.39, 101.27, 1, 1, 20, 2, 9, 94.94, 240.51, -2, 1, 21, 2, 9, 354.43, 284.81, -2, 1], [0, 1, 3, 208.86, 158.23, -2, 1, 1, 1, 3, 272.15, 158.23, -2, 1, 2, 1, 6, 240.51, 202.53, -2, 1, 3, 1, 8, 189.87, 132.91, -1, 1, 4, 1, 8, 227.85, 126.58, 5, 1, 5, 1, 7, 183.54, 101.27, -2, 1, 6, 1, 7, 284.81, 101.27, -2, 1, 7, 1, 9, 183.54, 94.94, -2, 1, 8, 1, 9, 278.48, 94.94, -2, 1, 9, 1, 7, 234.18, 227.85, 6, 1, 10, 1, 0, 316.46, 291.14, -1, 1, 11, 1, 7, 272.15, 196.2, -2, 1, 12, 1, 0, 367.09, 221.52, -2, 1, 13, 1, 7, 240.51, 227.85, -2, 1, 14, 1, 7, 265.82, 265.82, -2, 1, 15, 1, 7, 164.56, 284.81, 12, 1, 16, 1, 0, 151.9, 291.14, -1, 1, 17, 1, 7, 107.59, 196.2, -2, 1, 18, 1, 0, 107.59, 221.52, -2, 1, 19, 1, 7, 94.94, 88.61, -2, 1, 20, 1, 0, 94.94, 63.29, -2, 1, 21, 1, 7, 310.13, 88.61, -2, 1, 22, 1, 0, 379.75, 63.29, -2, 1, 23, 1, 7, 234.18, 25.32, -2, 1, 24, 1, 0, 246.84, 12.66, -2, 1, 25, 3, 1, 0, 259.49, 11, 1, 26, 3, 5, 0, 221.52, -2, 1, 27, 3, 5, 69.62, 227.85, -2, 1, 28, 3, 5, 132.91, 240.51, -2, 1, 29, 3, 5, 145.57, 227.85, 17, 1, 30, 3, 1, 272.15, 259.49, 13, 1, 31, 3, 5, 259.49, 227.85, 7, 1, 32, 3, 5, 297.47, 234.18, -2, 1, 33, 3, 5, 360.76, 234.18, -2, 1, 34, 3, 5, 430.38, 221.52, -2, 1, 35, 3, 5, 430.38, 234.18, -2, 1, 36, 3, 4, 246.84, 227.85, 18, 1, 37, 3, 2, 297.47, 164.56, -2, 1, 38, 3, 2, 12.66, 164.56, -2, 1], [0, 2, 1, 0, 0, 17, 0.9, 1, 2, 1, 379.75, 0, 6, 0.9, 2, 3, 8, 443.04, 0, -2, 1, 3, 3, 8, 0, 0, -2, 1, 4, 0, 8, 379.75, 0, -2, 1, 5, 0, 8, 63.29, 0, -2, 1, 6, 2, 8, 379.75, 50.63, -2, 1, 7, 2, 8, 63.29, 50.63, -2, 1, 8, 1, 8, 443.04, 50.63, -2, 1, 9, 1, 8, 0, 50.63, -2, 1, 10, 1, 9, 126.58, 101.27, 18, 1, 11, 1, 0, 253.16, 50.63, -1, 0.5, 12, 1, 0, 126.58, 50.63, 20, 0.5, 13, 0, 2, 189.87, 50.63, -2, 1, 14, 0, 2, 284.81, 101.27, -2, 1, 15, 0, 2, 126.58, 101.27, -2, 1, 16, 3, 3, 379.75, 101.27, -2, 1, 17, 3, 3, 0, 101.27, -1, 0.3, 18, 3, 6, 253.16, 202.53, -2, 1, 19, 3, 6, 0, 202.53, -2, 1, 20, 3, 7, 189.87, 25.32, -2, 1, 21, 3, 7, 221.52, 0, -2, 1, 22, 3, 7, 284.81, 25.32, -2, 1, 23, 3, 7, 253.16, 0, -2, 1, 24, 3, 8, 221.52, 25.32, -2, 1, 25, 3, 4, 316.46, 0, -2, 1, 26, 3, 4, 126.58, 0, -2, 1], [0, 0, 0, 0, 101.27, -2, 1, 1, 0, 0, 379.75, 101.27, 1, 1, 2, 2, 1, 189.87, 101.27, 0, 1, 3, 3, 3, 316.46, 101.27, -2, 1, 4, 3, 3, 126.58, 151.9, -2, 1, 5, 3, 2, 316.46, 151.9, -2, 1, 6, 3, 2, 126.58, 101.27, -2, 1, 7, 1, 7, 0, 202.53, -2, 1, 8, 1, 1, 379.75, 303.8, -2, 1, 9, 1, 1, 0, 303.8, -2, 1, 10, 1, 3, 126.58, 303.8, -2, 1, 11, 0, 5, 63.29, 0, 13, 1, 12, 0, 4, 63.29, 0, -2, 1, 13, 0, 4, 284.81, 0, -2, 1, 14, 0, 1, 0, 0, -2, 1, 15, 0, 1, 443.04, 0, -2, 1, 16, 0, 2, 69.62, 56.96, -2, 1, 17, 0, 2, 386.08, 56.96, -2, 1], [0, 0, 0, 0, 50.63, -1, 1, 1, 0, 8, 0, 0, 1, 1, 2, 0, 1, 126.58, 0, 0, 1, 3, 0, 2, 126.58, 0, 9, 1, 4, 0, 7, 196.2, 50.63, 13, 1, 5, 0, 4, 151.9, 56.96, 2, 1, 6, 0, 9, 253.16, 0, 7, 1, 7, 0, 3, 253.16, 0, 17, 1, 8, 0, 8, 348.1, 0, 1, 1, 9, 0, 6, 253.16, 31.65, 5, 1, 10, 0, 2, 297.47, 37.97, 20, 1, 11, 0, 2, 139.24, 120.25, 14, 1, 12, 0, 4, 126.58, 101.27, 7, 1, 13, 0, 8, 189.87, 101.27, 18, 1, 14, 3, 1, 379.75, 0, 19, 1, 15, 2, 4, 379.75, 75.95, 11, 1, 16, 2, 3, 411.39, 50.63, 10, 1, 17, 1, 5, 443.04, 25.32, 9, 1, 18, 1, 8, 474.68, 0, 8, 1, 19, 1, 8, 272.15, 107.59, 11, 1, 20, 1, 6, 253.16, 101.27, 17, 1, 21, 2, 4, 316.46, 101.27, 15, 1, 22, 3, 1, 417.72, 132.91, -1, 1, 23, 3, 4, 417.72, 196.2, -1, 1, 24, 3, 7, 379.75, 101.27, -1, 1, 25, 3, 2, 379.75, 132.91, -1, 1, 26, 3, 2, 468.35, 132.91, -1, 1, 27, 3, 0, 468.35, 132.91, -1, 1, 28, 3, 0, 379.75, 132.91, 20, 1, 29, 3, 7, 88.61, 120.25, -2, 1, 30, 3, 7, 0, 101.27, -1, 1, 31, 3, 8, 0, 101.27, -1, 1], [0, 2, 1, 126.58, 101.27, 0, 1, 1, 2, 0, 297.47, 202.53, 18, 1, 2, 2, 0, 126.58, 101.27, 6, 1, 3, 2, 4, 253.16, 101.27, 1, 1, 4, 0, 3, 379.75, 202.53, 12, 1, 5, 3, 4, 0, 202.53, 18, 1, 6, 1, 3, 0, 50.63, 18, 1, 7, 1, 8, 379.75, 0, -2, 1, 8, 1, 8, 0, 303.8, 17, 1, 9, 1, 8, 126.58, 202.53, -2, 1, 10, 3, 0, 253.16, 253.16, 13, 1, 11, 1, 0, 392.41, 253.16, 0, 1, 12, 1, 0, 0, 0, -1, 1, 13, 1, 0, 253.16, 94.94, 13, 1, 14, 1, 2, 0, 0, 20, 1, 15, 2, 1, 0, 101.27, -2, 1, 16, 2, 9, 0, 189.87, 0, 1, 17, 2, 4, 0, 158.23, -2, 1, 18, 3, 1, 272.15, 0, 0, 1, 19, 3, 5, 259.49, 0, 17, 1, 20, 3, 5, 253.16, 0, 8, 1, 21, 3, 0, 487.34, 303.8, -2, 1, 22, 3, 0, 0, 303.8, -2, 1, 23, 3, 0, 0, 329.11, 19, 1], [0, 0, 3, 126.58, 25.32, -2, 1, 1, 0, 3, 316.46, 25.32, -2, 1, 2, 0, 2, 189.87, 25.32, 9, 1, 3, 0, 2, 284.81, 25.32, 11, 1, 4, 2, 2, 221.52, 50.63, 7, 1, 5, 2, 3, 221.52, 164.56, -2, 1, 6, 2, 8, 411.39, 50.63, 15, 1, 7, 2, 8, 63.29, 50.63, 17, 1, 8, 2, 1, 360.76, 25.32, 7, 1, 9, 2, 1, 107.59, 25.32, 18, 1, 10, 2, 7, 177.22, 101.27, -2, 1, 11, 2, 7, 284.81, 101.27, -2, 1, 12, 2, 5, 303.8, 0, 6, 1, 13, 2, 5, 145.57, 0, 6, 1, 14, 2, 4, 462.03, 0, 0, 1, 15, 2, 4, 0, 0, 0, 1, 16, 1, 6, 126.58, 151.9, -2, 1, 17, 1, 6, 316.46, 151.9, -2, 1, 18, 1, 7, 411.39, 126.58, -2, 1, 19, 1, 7, 50.63, 126.58, -2, 1, 20, 1, 6, 411.39, 0, -2, 1, 21, 1, 6, 63.29, 0, -2, 1, 22, 1, 3, 265.82, 215.19, -2, 1, 23, 1, 3, 183.54, 215.19, -2, 1, 24, 1, 2, 379.75, 253.16, -1, 1, 25, 1, 2, 75.95, 253.16, -1, 1, 26, 1, 8, 462.03, 202.53, 13, 1, 27, 1, 0, 0, 202.53, -2, 1, 28, 1, 8, 487.34, 126.58, 8, 1, 29, 1, 8, 0, 132.91, 1, 1, 30, 1, 1, 316.46, 202.53, -2, 1, 31, 1, 1, 164.56, 202.53, -2, 1, 32, 1, 0, 234.18, 0, -2, 1, 33, 1, 6, 240.51, 151.9, -2, 1], [0, 2, 7, 189.87, 0, -2, 1, 1, 0, 6, 253.16, 0, -2, 1, 2, 0, 6, 63.29, 0, -2, 1, 3, 0, 6, 0, 0, -2, 1, 4, 0, 6, 443.04, 0, -2, 1, 5, 0, 3, 316.46, 0, -2, 1, 6, 0, 3, 126.58, 0, -2, 1, 7, 0, 3, 0, 50.63, -2, 1, 8, 0, 3, 379.75, 50.63, -2, 1, 9, 0, 0, 379.75, 25.32, 19, 1, 10, 0, 0, 0, 25.32, 19, 1, 11, 0, 8, 379.75, 0, -2, 1, 12, 0, 8, 63.29, 0, -2, 1, 13, 0, 2, 379.75, 0, -2, 1, 14, 0, 2, 0, 0, -2, 1, 15, 3, 5, 221.52, 63.29, -2, 1, 16, 3, 0, 221.52, 50.63, 19, 1, 17, 3, 1, 0, 75.95, 18, 1, 18, 3, 1, 253.16, 75.95, 12, 1, 19, 3, 1, 0, 151.9, -2, 1, 20, 3, 1, 443.04, 151.9, -2, 1, 21, 3, 8, 126.58, 202.53, -2, 1, 22, 3, 8, 284.81, 202.53, -2, 1, 23, 1, 7, 0, 202.53, 17, 1, 24, 1, 7, 411.39, 202.53, 18, 1, 25, 1, 2, 379.75, 202.53, -2, 1, 26, 1, 2, 75.95, 202.53, -2, 1, 27, 1, 6, 246.84, 151.9, 19, 1, 28, 1, 6, 0, 151.9, -2, 1, 29, 1, 6, 474.68, 151.9, -2, 1, 30, 1, 6, 0, 50.63, -2, 1, 31, 1, 6, 379.75, 50.63, -2, 1, 32, 1, 9, 284.81, 202.53, -2, 1, 33, 1, 9, 284.81, 183.54, -2, 1, 34, 1, 9, 189.87, 202.53, -2, 1, 35, 1, 9, 189.87, 183.54, -2, 1, 36, 1, 0, 0, 151.9, 19, 1, 37, 1, 0, 379.75, 151.9, 19, 1, 38, 1, 8, 253.16, 101.27, -2, 1, 39, 1, 8, 126.58, 101.27, -2, 1, 40, 1, 2, 189.87, 63.29, -2, 1, 41, 1, 2, 284.81, 63.29, -2, 1, 42, 1, 4, 284.81, 75.95, -2, 1, 43, 1, 4, 126.58, 75.95, -2, 1, 44, 1, 5, 0, 75.95, -2, 1, 45, 1, 5, 284.81, 75.95, -2, 1, 46, 1, 3, 126.58, 177.22, 12, 1, 47, 1, 3, 316.46, 177.22, 12, 1, 48, 1, 3, 379.75, 164.56, -2, 1, 49, 1, 3, 69.62, 164.56, -2, 1, 50, 1, 7, 31.65, 132.91, -2, 1, 51, 1, 7, 411.39, 132.91, -2, 1, 52, 1, 8, 0, 75.95, -2, 1, 53, 1, 8, 443.04, 75.95, -2, 1, 54, 1, 0, 0, 75.95, 17, 1, 55, 1, 0, 474.68, 75.95, 19, 1, 56, 1, 5, 0, 75.95, -2, 1, 57, 1, 5, 424.05, 75.95, -2, 1, 58, 1, 8, 82.28, 101.27, -2, 1, 59, 1, 8, 259.49, 101.27, -2, 1, 60, 0, 6, 398.73, 145.57, -2, 1, 61, 0, 6, 94.94, 145.57, -2, 1, 62, 0, 2, 107.59, 145.57, -2, 1, 63, 0, 2, 379.75, 145.57, -2, 1, 64, 0, 4, 177.22, 164.56, -2, 1, 65, 0, 4, 291.14, 164.56, -2, 1], [0, 0, 8, 0, 227.85, 0, 1, 1, 2, 2, 253.16, 151.9, 0, 0.2, 2, 2, 8, 253.16, 101.27, 2, 0.2, 3, 3, 8, 139.24, 170.89, 0, 0.2, 4, 3, 3, 126.58, 101.27, 0, 0.2, 5, 3, 3, 101.27, 113.92, 19, 0.2, 6, 1, 1, 379.75, 0, 0, 0.2, 7, 1, 1, 259.49, 0, 20, 0.2, 8, 0, 1, 367.09, 82.28, 1, 0.2, 9, 0, 1, 101.27, 12.66, 16, 0.2, 10, 0, 1, 0, 44.3, 14, 0.2, 11, 1, 0, 25.32, 18.99, 12, 0.2, 12, 1, 1, 329.11, 69.62, 5, 0.2, 13, 1, 1, 379.75, 139.24, -1, 0.2, 14, 1, 1, 215.19, 0, 18, 0.2, 15, 1, 1, 145.57, 94.94, 6, 0.2, 16, 1, 1, 0, 94.94, 17, 0.2, 17, 1, 1, 0, 0, 7, 0.2], [0, 2, 9, 0, 202.53, -2, 1, 1, 2, 9, 379.75, 202.53, -2, 1, 2, 2, 9, 202.53, 202.53, -2, 1, 3, 2, 9, 126.58, 0, -2, 1, 4, 2, 9, 44.3, 101.27, -2, 1, 5, 2, 9, 411.39, 101.27, -2, 1, 6, 2, 8, 126.58, 278.48, -2, 1, 7, 2, 8, 303.8, 284.81, -2, 1, 8, 2, 7, 126.58, 253.16, 10, 1, 9, 2, 7, 468.35, 164.56, -2, 1, 10, 2, 7, 303.8, 253.16, -2, 1, 11, 2, 6, 126.58, 227.85, -2, 1, 12, 2, 6, 303.8, 227.85, -2, 1, 13, 2, 5, 126.58, 202.53, 18, 1, 14, 2, 5, 303.8, 202.53, -2, 1, 15, 2, 4, 126.58, 177.22, -2, 1, 16, 2, 4, 303.8, 177.22, 2, 1, 17, 2, 3, 126.58, 151.9, -2, 1, 18, 2, 3, 303.8, 151.9, -2, 1, 19, 2, 2, 310.13, 164.56, -2, 1, 20, 2, 2, 132.91, 164.56, -2, 1, 21, 2, 1, 126.58, 101.27, 14, 1, 22, 2, 1, 303.8, 101.27, -2, 1, 23, 2, 0, 240.51, 101.27, 17, 1, 24, 2, 6, 158.23, 101.27, 19, 1, 25, 2, 6, 272.15, 101.27, -2, 1, 26, 2, 7, 126.58, 126.58, 1, 1, 27, 2, 7, 272.15, 126.58, 12, 1, 28, 2, 5, 202.53, 151.9, -2, 1, 29, 2, 5, 272.15, 151.9, -2, 1, 30, 2, 1, 468.35, 196.2, -2, 1, 31, 2, 1, 0, 196.2, -2, 1, 32, 2, 7, 25.32, 164.56, -2, 1, 33, 2, 6, 474.68, 164.56, 20, 1, 34, 2, 6, 0, 158.23, 19, 1, 35, 2, 9, 0, 101.27, -2, 1, 36, 2, 9, 430.38, 101.27, 4, 1, 37, 2, 4, 0, 101.27, -2, 1, 38, 2, 4, 405.06, 94.94, -2, 1, 39, 2, 8, 468.35, 145.57, -2, 1, 40, 2, 8, 0, 145.57, 6, 1, 41, 2, 3, 37.97, 107.59, -2, 1, 42, 2, 3, 379.75, 101.27, 15, 1, 43, 2, 7, 82.28, 196.2, -2, 1, 44, 2, 7, 379.75, 177.22, -2, 1, 45, 2, 8, 379.75, 101.27, -2, 1, 46, 2, 8, 63.29, 101.27, -2, 1, 47, 2, 8, 139.24, 0, -2, 1, 48, 2, 7, 493.67, 94.94, -2, 1, 49, 2, 8, 0, 0, 0, 1], [0, 2, 2, 126.58, 50.63, 18, 1, 1, 2, 8, 253.16, 50.63, 19, 1, 2, 2, 4, 189.87, 113.92, 12, 1, 3, 2, 6, 215.19, 56.96, -1, 1, 4, 2, 9, 227.85, 107.59, 19, 1, 5, 2, 3, 265.82, 151.9, 0, 1, 6, 2, 3, 126.58, 151.9, 3, 1, 7, 2, 9, 0, 0, 1, 1, 8, 2, 9, 379.75, 0, -1, 1, 9, 2, 4, 94.94, 0, -1, 1, 10, 2, 1, 132.91, 25.32, -2, 1, 11, 2, 0, 151.9, 6.33, -1, 1, 12, 2, 3, 329.11, 6.33, -1, 1, 13, 2, 2, 310.13, 31.65, -1, 1, 14, 2, 5, 31.65, 44.3, -1, 1, 15, 2, 8, 386.08, 56.96, -2, 1, 16, 2, 1, 0, 113.92, -2, 1, 17, 2, 2, 12.66, 189.87, -2, 1, 18, 2, 0, 113.92, 101.27, -2, 1, 19, 2, 4, 0, 101.27, 13, 1, 20, 2, 0, 379.75, 113.92, -2, 1, 21, 2, 4, 379.75, 101.27, -1, 1, 22, 2, 1, 493.67, 101.27, -2, 1, 23, 2, 3, 392.41, 189.87, -2, 1, 24, 2, 2, 398.73, 132.91, 10, 1, 25, 2, 3, 430.38, 126.58, -2, 1, 26, 2, 8, 18.99, 120.25, -2, 1, 27, 2, 8, 25.32, 126.58, -2, 1, 28, 2, 0, 31.65, 132.91, -2, 1, 29, 2, 0, 25.32, 132.91, -1, 1, 30, 2, 7, 0, 215.19, 2, 1, 31, 2, 2, 126.58, 215.19, 13, 1, 32, 2, 4, 253.16, 215.19, 17, 1, 33, 2, 6, 379.75, 215.19, 5, 1, 34, 2, 5, 0, 221.52, -2, 1, 35, 2, 5, 63.29, 221.52, -2, 1, 36, 2, 5, 126.58, 215.19, -2, 1, 37, 2, 5, 189.87, 215.19, -2, 1, 38, 2, 5, 253.16, 221.52, -2, 1, 39, 2, 5, 316.46, 221.52, 18, 1, 40, 2, 5, 379.75, 215.19, 9, 1, 41, 2, 5, 443.04, 215.19, -2, 1], [0, 1, 3, 0, 196.2, 17, 1, 1, 2, 1, 329.11, 0, -2, 1, 2, 0, 0, 373.42, 0, 14, 1, 3, 3, 8, 18.99, 88.61, -2, 1, 4, 1, 3, 0, 0, 13, 1, 5, 2, 9, 126.58, 25.32, -2, 1, 6, 2, 1, 215.19, 0, 9, 1, 7, 2, 1, 75.95, 88.61, -2, 1, 8, 2, 1, 75.95, 88.61, -2, 1, 9, 2, 1, 75.95, 0, -2, 1, 10, 2, 1, 0, 75.95, -2, 1, 11, 2, 1, 0, 0, -2, 1], [0, 2, 2, 253.16, 221.52, 0, 1, 1, 2, 2, 284.81, 208.86, -1, 1, 2, 2, 2, 303.8, 183.54, -1, 1, 3, 2, 2, 221.52, 221.52, -1, 1, 4, 2, 2, 202.53, 208.86, -1, 1, 5, 2, 2, 183.54, 183.54, -1, 1, 6, 2, 1, 284.81, 101.27, 18, 1, 7, 2, 1, 196.2, 101.27, 18, 1, 8, 0, 4, 240.51, 126.58, 19, 1, 9, 2, 2, 183.54, 183.54, -1, 1, 10, 2, 9, 240.51, 202.53, -2, 1, 11, 2, 9, 253.16, 202.53, -2, 1, 12, 0, 6, 189.87, 189.87, -1, 1, 13, 0, 6, 278.48, 183.54, 1, 1, 14, 0, 6, 221.52, 202.53, -1, 1, 15, 0, 8, 208.86, 50.63, -1, 1, 16, 3, 7, 208.86, 234.18, -1, 1, 17, 3, 7, 177.22, 183.54, -1, 1, 18, 3, 7, 297.47, 183.54, -1, 1, 19, 3, 7, 234.18, 177.22, -2, 1, 20, 3, 7, 253.16, 177.22, -2, 1, 21, 3, 7, 183.54, 177.22, -1, 1, 22, 3, 7, 265.82, 177.22, -1, 1, 23, 3, 7, 158.23, 101.27, -1, 1, 24, 2, 7, 183.54, 126.58, -1, 1, 25, 3, 7, 215.19, 113.92, -1, 1, 26, 3, 7, 234.18, 113.92, -2, 1, 27, 3, 7, 253.16, 113.92, -1, 1, 28, 3, 7, 208.86, 126.58, -2, 1, 29, 3, 7, 215.19, 101.27, -1, 1, 30, 3, 7, 284.81, 126.58, -2, 1, 31, 2, 2, 265.82, 126.58, -1, 1, 32, 3, 7, 215.19, 126.58, -1, 1, 33, 3, 7, 253.16, 126.58, -1, 1, 34, 2, 9, 215.19, 101.27, -2, 1, 35, 2, 9, 272.15, 101.27, -2, 1, 36, 2, 9, 183.54, 101.27, -2, 1, 37, 3, 7, 297.47, 101.27, -1, 1, 38, 3, 9, 310.13, 107.59, -2, 1, 39, 2, 7, 183.54, 88.61, -2, 1, 40, 2, 7, 272.15, 88.61, -2, 1, 41, 0, 8, 183.54, 82.28, -2, 1, 42, 0, 8, 272.15, 82.28, -2, 1, 43, 2, 7, 221.52, 88.61, -1, 1, 44, 2, 7, 158.23, 75.95, -1, 1, 45, 2, 7, 297.47, 75.95, -1, 1, 46, 2, 7, 208.86, 75.95, -1, 1, 47, 0, 8, 126.58, 44.3, -1, 1, 48, 0, 8, 265.82, 44.3, -1, 1, 49, 0, 8, 158.23, 25.32, -1, 1, 50, 0, 8, 227.85, 25.32, -1, 1, 51, 0, 8, 303.8, 25.32, -1, 1, 52, 0, 1, 0, 75.95, -1, 1, 53, 0, 1, 0, 0, -1, 1, 54, 0, 1, 0, 0, -1, 1, 55, 0, 1, 0, 44.3, -1, 1, 56, 0, 1, 18.99, 0, -1, 1, 57, 0, 1, 50.63, 63.29, -1, 1, 58, 0, 1, 69.62, 44.3, -1, 1, 59, 0, 1, 44.3, 0, -1, 1, 60, 0, 1, 120.25, 0, -1, 1, 61, 0, 1, 126.58, 25.32, -1, 1, 62, 0, 1, 126.58, 0, -2, 1, 63, 0, 1, 208.86, 0, -1, 1, 64, 0, 1, 348.1, 0, -1, 1, 65, 0, 1, 341.77, 94.94, -1, 1, 66, 0, 1, 436.71, 113.92, -1, 1, 67, 0, 0, 449.37, 0, -1, 1, 68, 0, 0, 481.01, 0, -1, 1, 69, 0, 0, 449.37, 12.66, -1, 1, 70, 0, 0, 474.68, 25.32, -1, 1, 71, 0, 0, 500, 50.63, -1, 1, 72, 0, 0, 443.04, 50.63, -1, 1, 73, 0, 0, 392.41, 31.65, -1, 1, 74, 0, 0, 411.39, 0, -1, 1, 75, 0, 1, 360.76, 31.65, -1, 1, 76, 0, 1, 379.75, 0, -1, 1, 77, 0, 1, 360.76, 56.96, -1, 1, 78, 0, 1, 398.73, 31.65, -1, 1, 79, 0, 1, 443.04, 44.3, -1, 1, 80, 0, 1, 462.03, 50.63, -1, 1, 81, 0, 1, 462.03, 50.63, -1, 1, 82, 0, 1, 462.03, 101.27, -1, 1, 83, 0, 1, 417.72, 101.27, -2, 1, 84, 3, 3, 31.65, 126.58, -1, 1, 85, 3, 3, 44.3, 126.58, -1, 1, 86, 3, 9, 0, 126.58, -1, 1, 87, 3, 9, 56.96, 126.58, -2, 1, 88, 3, 9, 126.58, 126.58, -2, 1, 89, 0, 3, 88.61, 126.58, -2, 1, 90, 0, 3, 75.95, 126.58, -2, 1, 91, 0, 3, 56.96, 126.58, -1, 1, 92, 0, 3, 12.66, 126.58, -1, 1, 93, 0, 3, 0, 126.58, -2, 1, 94, 0, 3, 31.65, 183.54, -1, 1, 95, 0, 3, 37.97, 183.54, -2, 1, 96, 0, 3, 88.61, 183.54, -1, 1, 97, 0, 3, 107.59, 126.58, -2, 1, 98, 0, 3, 107.59, 126.58, -2, 1, 99, 0, 3, 145.57, 126.58, -2, 1, 100, 0, 3, 164.56, 139.24, -1, 1, 101, 2, 9, 335.44, 132.91, -1, 1, 102, 2, 9, 411.39, 132.91, -1, 1, 103, 2, 9, 481.01, 132.91, -1, 1, 104, 1, 3, 335.44, 132.91, -1, 1, 105, 1, 3, 322.78, 164.56, -1, 1, 106, 1, 3, 354.43, 132.91, -1, 1, 107, 1, 3, 373.42, 158.23, -1, 1, 108, 1, 3, 379.75, 158.23, -1, 1, 109, 1, 3, 373.42, 164.56, -1, 1, 110, 1, 3, 449.37, 132.91, -1, 1, 111, 1, 3, 430.38, 132.91, -1, 1, 112, 1, 3, 462.03, 132.91, -1, 1, 113, 1, 3, 468.35, 158.23, -1, 1, 114, 1, 3, 468.35, 158.23, -1, 1], [0, 1, 9, 0, 0, -2, 1, 1, 1, 2, 0, 0, 1, 1, 2, 1, 7, 0, 0, 20, 1, 3, 1, 0, 0, 0, 12, 1, 4, 1, 5, 0, 0, 17, 1, 5, 1, 3, 0, 0, 0, 1, 6, 1, 1, 0, 0, 12, 1, 7, 1, 6, 0, 0, 17, 1, 8, 1, 4, 0, 0, 19, 1, 9, 1, 8, 405.06, 31.65, 11, 1, 10, 1, 8, 170.89, 208.86, -1, 1, 11, 1, 8, 405.06, 215.19, 6, 1, 12, 0, 9, 310.13, 120.25, -2, 1, 13, 0, 9, 196.2, 329.11, -2, 1, 14, 0, 5, 303.8, 240.51, 0, 1, 15, 0, 5, 69.62, 322.78, 5, 1, 16, 0, 0, 430.38, 107.59, 0, 1, 17, 0, 0, 436.71, 329.11, 10, 1, 18, 0, 0, 272.15, 202.53, 17, 1, 19, 0, 0, 107.59, 259.49, 0, 1, 20, 0, 0, 278.48, 322.78, -1, 1], [0, 2, 0, 82.28, 69.62, 20, 1, 1, 2, 2, 183.54, 139.24, -1, 1, 2, 2, 1, 145.57, 132.91, -2, 1, 3, 2, 6, 208.86, 132.91, -2, 1, 4, 2, 8, 145.57, 132.91, -2, 1, 5, 2, 6, 139.24, 63.29, -1, 1, 6, 2, 9, 322.78, 50.63, 20, 1, 7, 0, 7, 430.38, 6.33, -1, 1, 8, 0, 9, 360.76, 158.23, -2, 1, 9, 0, 9, 0, 227.85, 20, 1, 10, 0, 9, 82.28, 164.56, 20, 1, 11, 3, 3, 227.85, 221.52, 20, 1, 12, 0, 7, 164.56, 208.86, -2, 1, 13, 3, 2, 31.65, 56.96, 0, 1, 14, 3, 2, 18.99, 69.62, 0, 1, 15, 3, 2, 37.97, 75.95, 0, 1, 16, 3, 2, 25.32, 88.61, 0, 1, 17, 3, 2, 31.65, 107.59, 0, 1, 18, 3, 3, 44.3, 44.3, -2, 1, 19, 3, 3, 31.65, 12.66, 20, 1, 20, 3, 3, 0, 25.32, -2, 1, 21, 3, 3, 0, 50.63, 19, 1, 22, 3, 1, 82.28, 50.63, -2, 1, 23, 3, 1, 88.61, 37.97, -2, 1, 24, 3, 1, 101.27, 25.32, -2, 1, 25, 3, 1, 120.25, 18.99, -2, 1, 26, 3, 2, 6.33, 170.89, 0, 1, 27, 3, 2, 0, 151.9, 0, 1, 28, 3, 2, 12.66, 158.23, 0, 1, 29, 3, 2, 12.66, 145.57, 0, 1, 30, 3, 3, 6.33, 120.25, -2, 1, 31, 3, 3, 25.32, 139.24, -2, 1, 32, 3, 6, 392.41, 240.51, -1, 1, 33, 3, 6, 443.04, 202.53, -1, 1, 34, 3, 6, 462.03, 126.58, -2, 1, 35, 3, 6, 487.34, 126.58, -2, 1, 36, 3, 6, 487.34, 170.89, -2, 1, 37, 3, 6, 449.37, 164.56, -2, 1, 38, 3, 6, 468.35, 170.89, -2, 1, 39, 3, 6, 449.37, 227.85, -2, 1, 40, 3, 6, 443.04, 234.18, -2, 1, 41, 3, 0, 430.38, 196.2, -2, 1, 42, 3, 0, 417.72, 202.53, -2, 1, 43, 3, 6, 417.72, 234.18, -1, 1, 44, 3, 6, 392.41, 227.85, -2, 1, 45, 3, 0, 487.34, 151.9, -2, 1, 46, 3, 0, 487.34, 164.56, -2, 1, 47, 1, 3, 474.68, 253.16, -2, 1, 48, 1, 3, 449.37, 259.49, 18, 1, 49, 1, 3, 379.75, 303.8, -2, 1, 50, 1, 3, 392.41, 316.46, -2, 1, 51, 1, 3, 405.06, 329.11, -2, 1, 52, 1, 3, 430.38, 126.58, -2, 1, 53, 1, 3, 360.76, 151.9, -2, 1, 54, 1, 3, 379.75, 158.23, -2, 1, 55, 1, 3, 468.35, 272.15, -2, 1, 56, 0, 1, 360.76, 37.97, -2, 1, 57, 0, 0, 386.08, 12.66, -1, 1, 58, 0, 3, 417.72, 6.33, -2, 1, 59, 3, 0, 177.22, 6.33, 18, 1, 60, 3, 0, 215.19, 18.99, -2, 1, 61, 3, 0, 202.53, 31.65, -2, 1, 62, 3, 0, 183.54, 31.65, -2, 1, 63, 3, 0, 139.24, 25.32, -2, 1, 64, 3, 0, 120.25, 12.66, -2, 1, 65, 3, 0, 196.2, 44.3, -2, 1, 66, 3, 0, 367.09, 132.91, -2, 1, 67, 3, 0, 373.42, 132.91, -2, 1, 68, 3, 0, 360.76, 132.91, -2, 1, 69, 3, 0, 386.08, 113.92, -2, 1, 70, 3, 0, 348.1, 158.23, -2, 1, 71, 3, 2, 6.33, 246.84, -2, 1, 72, 3, 2, 12.66, 284.81, -2, 1, 73, 3, 2, 12.66, 246.84, -2, 1, 74, 3, 2, 31.65, 265.82, -1, 1, 75, 3, 2, 44.3, 265.82, -2, 1, 76, 3, 2, 44.3, 284.81, -2, 1, 77, 3, 2, 18.99, 253.16, -1, 1, 78, 3, 2, 44.3, 341.77, -2, 1, 79, 3, 2, 44.3, 316.46, -2, 1, 80, 3, 2, 37.97, 291.14, -1, 1, 81, 3, 2, 18.99, 297.47, -1, 1, 82, 3, 2, 37.97, 297.47, -2, 1, 83, 3, 2, 69.62, 278.48, -2, 1, 84, 2, 1, 0, 360.76, -2, 1, 85, 2, 1, 18.99, 373.42, -2, 1, 86, 2, 1, 37.97, 360.76, -2, 1], [0, 0, 8, 202.53, 208.86, -2, 1, 1, 0, 6, 164.56, 170.89, 0, 1, 2, 0, 6, 272.15, 164.56, 0, 1, 3, 0, 8, 303.8, 126.58, 4, 1, 4, 0, 8, 139.24, 139.24, 4, 1, 5, 0, 3, 221.52, 158.23, 18, 1, 6, 0, 8, 259.49, 120.25, -2, 1, 7, 0, 8, 177.22, 101.27, -2, 1, 8, 0, 8, 240.51, 126.58, -2, 1, 9, 0, 1, 335.44, 88.61, 0, 1, 10, 0, 1, 291.14, 88.61, 0, 1, 11, 0, 1, 240.51, 88.61, 1, 1, 12, 0, 1, 202.53, 69.62, 1, 1, 13, 0, 1, 139.24, 101.27, 0, 1, 14, 0, 1, 101.27, 75.95, 0, 1, 15, 0, 6, 234.18, 278.48, 18, 1, 16, 0, 8, 360.76, 63.29, -2, 1, 17, 0, 8, 322.78, 56.96, -2, 1, 18, 0, 8, 272.15, 56.96, -2, 1, 19, 0, 8, 253.16, 63.29, -2, 1, 20, 0, 8, 164.56, 56.96, -2, 1, 21, 0, 8, 126.58, 75.95, -2, 1, 22, 0, 8, 75.95, 50.63, -2, 1, 23, 0, 8, 259.49, 25.32, -1, 1, 24, 0, 8, 132.91, 37.97, -1, 1, 25, 1, 9, 50.63, 63.29, 19, 1, 26, 1, 9, 44.3, 310.13, -2, 1, 27, 1, 9, 341.77, 310.13, 19, 1, 28, 3, 8, 474.68, 189.87, 10, 1, 29, 3, 8, 0, 196.2, 13, 1, 30, 1, 9, 272.15, 69.62, 19, 1], [0, 2, 6, 189.87, 101.27, 0, 1, 1, 2, 0, 189.87, 101.27, -2, 1, 2, 2, 5, 253.16, 101.27, -2, 1, 3, 2, 5, 189.87, 151.9, -2, 1, 4, 2, 6, 253.16, 151.9, 0, 1, 5, 2, 0, 253.16, 101.27, -2, 1, 6, 2, 0, 253.16, 151.9, -2, 1, 7, 2, 0, 189.87, 151.9, -2, 1, 8, 2, 3, 189.87, 50.63, -2, 1, 9, 2, 3, 126.58, 101.27, 18, 1, 10, 2, 3, 316.46, 101.27, -2, 1, 11, 2, 3, 189.87, 202.53, -1, 1, 12, 2, 1, 253.16, 151.9, -1, 1, 13, 2, 1, 126.58, 151.9, -1, 1, 14, 2, 1, 253.16, 50.63, -1, 1, 15, 2, 1, 126.58, 50.63, -2, 1, 16, 0, 2, 63.29, 253.16, -2, 1, 17, 0, 2, 63.29, 0, -1, 1, 18, 0, 5, 379.75, 0, -2, 1, 19, 0, 5, 63.29, 0, -1, 1, 20, 0, 4, 443.04, 0, -1, 1, 21, 0, 4, 0, 0, -2, 1, 22, 0, 0, 443.04, 253.16, -2, 1, 23, 0, 0, 0, 253.16, -1, 1, 24, 0, 0, 0, 0, -2, 1, 25, 0, 0, 443.04, 0, -1, 1], [0, 0, 9, 443.04, 0, -1, 1, 1, 0, 0, 379.75, 0, -1, 1, 2, 0, 1, 316.46, 0, -2, 1, 3, 0, 2, 253.16, 0, -2, 1, 4, 0, 3, 189.87, 0, -1, 1, 5, 0, 4, 126.58, 0, 18, 1, 6, 0, 5, 63.29, 0, -1, 1, 7, 0, 5, 0, 0, -2, 1, 8, 0, 4, 0, 0, -1, 1, 9, 0, 3, 0, 50.63, -2, 1, 10, 0, 2, 0, 101.27, -2, 1, 11, 0, 1, 0, 151.9, -1, 1, 12, 0, 0, 0, 202.53, -2, 1, 13, 0, 9, 0, 253.16, -2, 1], [0, 1, 0, 189.87, 0, -1, 1, 1, 1, 9, 183.54, 50.63, -2, 1, 2, 1, 9, 120.25, 101.27, -1, 1, 3, 1, 9, 56.96, 151.9, -1, 1, 4, 1, 9, 0, 202.53, -2, 1, 5, 2, 7, 0, 208.86, 18, 1, 6, 2, 7, 0, 208.86, -2, 1, 7, 2, 7, 63.29, 208.86, -2, 1, 8, 2, 7, 63.29, 208.86, -2, 1, 9, 2, 7, 126.58, 208.86, -2, 1, 10, 2, 7, 126.58, 208.86, 18, 1, 11, 2, 7, 189.87, 208.86, -2, 1, 12, 2, 7, 189.87, 208.86, -2, 1, 13, 2, 7, 253.16, 208.86, -2, 1, 14, 2, 7, 253.16, 208.86, 18, 1, 15, 2, 7, 316.46, 208.86, -2, 1, 16, 2, 7, 316.46, 208.86, -2, 1, 17, 2, 7, 379.75, 208.86, -2, 1, 18, 2, 7, 379.75, 208.86, 19, 1, 19, 2, 7, 443.04, 208.86, -2, 1, 20, 2, 7, 443.04, 208.86, -2, 1, 21, 1, 0, 126.58, 56.96, -1, 1, 22, 1, 0, 189.87, 56.96, -2, 1, 23, 1, 0, 253.16, 56.96, -1, 1, 24, 1, 0, 316.46, 56.96, -2, 1, 25, 1, 0, 63.29, 107.59, -2, 1, 26, 1, 0, 126.58, 107.59, -1, 1, 27, 1, 0, 189.87, 107.59, -2, 1, 28, 1, 0, 253.16, 107.59, -1, 1, 29, 1, 0, 316.46, 107.59, -2, 1, 30, 1, 0, 379.75, 107.59, -2, 1, 31, 1, 0, 0, 158.23, -2, 1, 32, 1, 0, 63.29, 158.23, -1, 1, 33, 1, 0, 126.58, 158.23, -2, 1, 34, 1, 0, 189.87, 158.23, -2, 1, 35, 1, 0, 253.16, 158.23, -1, 1, 36, 1, 0, 316.46, 158.23, -1, 1, 37, 1, 0, 379.75, 158.23, -1, 1, 38, 1, 0, 443.04, 158.23, -2, 1], [0, 2, 9, 0, 0, 16, 1, 1, 2, 9, 0, 0, -2, 1, 2, 2, 9, 443.04, 0, -2, 1, 3, 2, 2, 63.29, 6.33, -2, 1, 4, 2, 2, 126.58, 6.33, -2, 1, 5, 2, 2, 189.87, 6.33, -2, 1, 6, 2, 2, 253.16, 6.33, 18, 1, 7, 2, 2, 316.46, 6.33, -2, 1, 8, 2, 2, 379.75, 6.33, -2, 1, 9, 2, 3, 6.33, 50.63, -2, 1, 10, 2, 3, 6.33, 101.27, -2, 1, 11, 2, 3, 6.33, 151.9, -2, 1, 12, 2, 3, 6.33, 202.53, -2, 1, 13, 2, 3, 6.33, 253.16, -2, 1, 14, 2, 3, 6.33, 303.8, -2, 1, 15, 2, 3, 443.04, 50.63, -2, 1, 16, 2, 3, 443.04, 101.27, 17, 1, 17, 2, 3, 443.04, 151.9, 18, 1, 18, 2, 3, 443.04, 202.53, -2, 1, 19, 2, 3, 443.04, 253.16, -2, 1, 20, 2, 3, 443.04, 303.8, -2, 1, 21, 2, 0, 443.04, 354.43, -2, 1, 22, 2, 0, 0, 354.43, -2, 1, 23, 2, 1, 63.29, 50.63, -2, 1, 24, 2, 1, 126.58, 50.63, -2, 1, 25, 2, 1, 189.87, 50.63, -2, 1, 26, 2, 1, 253.16, 50.63, 13, 1, 27, 2, 1, 316.46, 50.63, -2, 1, 28, 2, 1, 379.75, 50.63, -2, 1, 29, 2, 5, 94.94, 75.95, -2, 1, 30, 2, 5, 158.23, 75.95, -2, 1, 31, 2, 5, 221.52, 75.95, -2, 1, 32, 2, 5, 284.81, 75.95, 16, 1, 33, 2, 5, 348.1, 75.95, 18, 1, 34, 2, 7, 126.58, 101.27, 0, 1, 35, 2, 7, 189.87, 101.27, -2, 1, 36, 2, 7, 253.16, 101.27, 19, 1, 37, 2, 7, 316.46, 101.27, -2, 1, 38, 2, 6, 158.23, 126.58, 17, 1, 39, 2, 6, 221.52, 126.58, -2, 1, 40, 2, 6, 284.81, 126.58, -2, 1, 41, 2, 2, 189.87, 151.9, -2, 1, 42, 2, 2, 253.16, 151.9, -2, 1, 43, 2, 9, 221.52, 177.22, -2, 1, 44, 2, 2, 63.29, 75.95, -2, 1, 45, 2, 2, 379.75, 75.95, -2, 1, 46, 2, 6, 284.81, 126.58, -2, 1, 47, 2, 6, 126.58, 126.58, -2, 1, 48, 2, 1, 221.52, 202.53, 17, 1, 49, 2, 7, 284.81, 202.53, 16, 1, 50, 2, 7, 63.29, 202.53, 13, 1, 51, 2, 0, 63.29, 316.46, -2, 1, 52, 2, 0, 126.58, 284.81, -2, 1, 53, 2, 0, 177.22, 253.16, 18, 1, 54, 2, 0, 221.52, 253.16, 12, 1, 55, 2, 0, 284.81, 253.16, 18, 1, 56, 2, 0, 329.11, 284.81, -2, 1, 57, 2, 0, 367.09, 316.46, -2, 1], [0, 1, 6, 189.87, 101.27, 19, 1, 1, 2, 2, 0, 0, -2, 1, 2, 2, 2, 379.75, 0, -2, 1, 3, 2, 5, 189.87, 0, -2, 1, 4, 2, 5, 189.87, 354.43, -2, 1, 5, 2, 2, 379.75, 253.16, -2, 1, 6, 2, 2, 0, 253.16, -2, 1, 7, 2, 0, 0, 151.9, -2, 1, 8, 2, 0, 379.75, 151.9, -2, 1, 9, 2, 3, 0, 101.27, 18, 1, 10, 2, 3, 316.46, 101.27, 18, 1, 11, 2, 7, 126.58, 253.16, -2, 1, 12, 2, 7, 126.58, 0, -2, 1, 13, 2, 7, 253.16, 101.27, -2, 1, 14, 2, 7, 189.87, 101.27, -2, 1, 15, 2, 7, 253.16, 177.22, -2, 1, 16, 2, 7, 189.87, 177.22, -2, 1, 17, 2, 3, 316.46, 202.53, 18, 1, 18, 2, 3, 0, 202.53, 18, 1, 19, 2, 1, 348.1, 379.75, 15, 1, 20, 2, 1, 44.3, 379.75, 17, 1, 21, 1, 7, 379.75, 354.43, -2, 1, 22, 1, 7, 88.61, 354.43, -2, 1, 23, 2, 1, 348.1, 0, -2, 1, 24, 2, 1, 44.3, 0, -2, 1, 25, 2, 7, 379.75, 25.32, -2, 1, 26, 2, 7, 88.61, 25.32, -2, 1], [0, 0, 2, 126.58, 25.32, 17, 1, 1, 1, 6, 379.75, 50.63, 0, 1, 2, 1, 6, 411.39, 75.95, -2, 1, 3, 1, 6, 443.04, 50.63, 18, 1, 4, 1, 6, 474.68, 75.95, -2, 1, 5, 1, 6, 411.39, 25.32, 19, 1, 6, 1, 6, 474.68, 25.32, 14, 1, 7, 1, 6, 379.75, 0, -2, 1, 8, 1, 6, 443.04, 0, -2, 1, 9, 1, 6, 94.94, 50.63, 15, 1, 10, 1, 6, 63.29, 75.95, -1, 1, 11, 1, 6, 31.65, 50.63, 1, 1, 12, 1, 6, 0, 75.95, -2, 1, 13, 1, 6, 0, 25.32, -2, 1, 14, 1, 6, 31.65, 0, -2, 1, 15, 1, 6, 63.29, 25.32, -2, 1, 16, 1, 6, 94.94, 0, 0, 1, 17, 1, 6, 158.23, 0, -2, 1, 18, 1, 6, 221.52, 0, -2, 1, 19, 1, 6, 253.16, 0, -2, 1, 20, 1, 6, 316.46, 0, -2, 1, 21, 1, 6, 126.58, 25.32, -2, 1, 22, 1, 6, 189.87, 25.32, -2, 1, 23, 1, 6, 284.81, 25.32, -2, 1, 24, 1, 9, 94.94, 132.91, -2, 1, 25, 1, 9, 272.15, 139.24, -2, 1, 26, 1, 0, 234.18, 227.85, 18, 1, 27, 2, 5, 18.99, 221.52, 6, 1, 28, 2, 5, 443.04, 227.85, 2, 1, 29, 3, 4, 139.24, 303.8, -2, 1], [0, 0, 4, 177.22, 31.65, 10, 1, 1, 0, 5, 107.59, 12.66, -2, 1, 2, 0, 0, 75.95, 183.54, -2, 1, 3, 0, 2, 373.42, 265.82, -2, 1, 4, 0, 8, 31.65, 69.62, 0, 1, 5, 0, 1, 215.19, 278.48, -2, 1, 6, 0, 7, 392.41, 6.33, -2, 1, 7, 1, 8, 56.96, 291.14, -2, 1, 8, 1, 1, 424.05, 177.22, -2, 1, 9, 1, 1, 335.44, 25.32, -2, 1, 10, 1, 1, 240.51, 56.96, -2, 1, 11, 1, 1, 31.65, 12.66, -2, 1, 12, 1, 1, 18.99, 202.53, -2, 1, 13, 1, 1, 177.22, 316.46, -2, 1, 14, 1, 1, 208.86, 196.2, -2, 1, 15, 1, 1, 164.56, 151.9, -2, 1, 16, 1, 1, 462.03, 88.61, -2, 1, 17, 1, 1, 303.8, 240.51, -2, 1, 18, 1, 0, 468.35, 253.16, -2, 1, 19, 1, 0, 411.39, 164.56, -2, 1, 20, 1, 0, 94.94, 12.66, -2, 1, 21, 1, 0, 31.65, 297.47, -2, 1, 22, 1, 0, 227.85, 297.47, -2, 1, 23, 1, 0, 367.09, 348.1, -2, 1, 24, 1, 0, 462.03, 373.42, -2, 1, 25, 1, 0, 12.66, 158.23, -2, 1, 26, 1, 0, 6.33, 12.66, -2, 1, 27, 1, 0, 208.86, 12.66, -2, 1, 28, 1, 0, 18.99, 373.42, -2, 1, 29, 1, 8, 335.44, 259.49, -2, 1, 30, 1, 8, 139.24, 297.47, -2, 1, 31, 1, 8, 82.28, 183.54, -2, 1, 32, 1, 8, 215.19, 379.75, -2, 1, 33, 1, 8, 398.73, 386.08, -2, 1, 34, 1, 8, 411.39, 240.51, -2, 1, 35, 1, 3, 417.72, 82.28, -2, 1, 36, 1, 3, 132.91, 107.59, -2, 1, 37, 1, 5, 310.13, 0, 8, 1, 38, 1, 0, 417.72, 75.95, -2, 1, 39, 1, 0, 0, 63.29, -2, 1, 40, 1, 6, 0, 183.54, -2, 1, 41, 1, 8, 354.43, 322.78, 9, 1, 42, 1, 1, 291.14, 221.52, -2, 1, 43, 1, 1, 120.25, 316.46, -2, 1, 44, 1, 5, 0, 310.13, -2, 1, 45, 1, 1, 348.1, 329.11, -2, 1], [0, 3, 8, 126.58, 0, 18, 1, 1, 3, 0, 379.75, 0, 0, 1, 2, 3, 3, 0, 0, 5, 1, 3, 3, 5, 341.77, 272.15, 19, 1, 4, 3, 9, 392.41, 139.24, 17, 1, 5, 3, 6, 253.16, 0, 0, 1, 6, 3, 6, 0, 0, -1, 1, 7, 3, 2, 0, 189.87, 3, 1, 8, 3, 3, 0, 189.87, 6, 1, 9, 3, 0, 0, 303.8, 12, 1, 10, 3, 0, 253.16, 202.53, -2, 1, 11, 3, 4, 341.77, 348.1, -2, 1, 12, 3, 1, 303.8, 348.1, -2, 1, 13, 3, 3, 126.58, 202.53, 3, 1, 14, 2, 1, 0, 50.63, -1, 1, 15, 2, 1, 63.29, 50.63, -2, 1, 16, 2, 1, 126.58, 101.27, -2, 1, 17, 2, 1, 126.58, 0, -2, 1, 18, 2, 0, 63.29, 101.27, -2, 1, 19, 2, 0, 126.58, 50.63, -2, 1, 20, 2, 0, 63.29, 0, -2, 1, 21, 2, 2, 443.04, 0, -1, 1, 22, 2, 2, 341.77, 50.63, -2, 1, 23, 2, 2, 411.39, 202.53, -2, 1, 24, 2, 6, 493.67, 278.48, -2, 1], [0, 2, 1, 0, 0, 18, 1, 1, 2, 2, 145.57, 0, 2, 1, 2, 2, 3, 278.48, 0, -2, 1, 3, 2, 4, 405.06, 0, -2, 1, 4, 2, 3, 31.65, 126.58, -2, 1, 5, 2, 2, 215.19, 126.58, -2, 1, 6, 2, 3, 367.09, 126.58, -2, 1, 7, 2, 0, 6.33, 151.9, 9, 1, 8, 2, 3, 69.62, 151.9, 10, 1, 9, 2, 0, 145.57, 151.9, 12, 1, 10, 2, 3, 215.19, 151.9, 12, 1, 11, 2, 0, 272.15, 158.23, 20, 1, 12, 2, 3, 348.1, 151.9, -2, 1, 13, 2, 0, 398.73, 151.9, 0, 1, 14, 2, 3, 449.37, 151.9, 2, 1, 15, 2, 6, 18.99, 215.19, -2, 1, 16, 2, 6, 177.22, 215.19, 5, 1, 17, 2, 6, 341.77, 215.19, 2, 1, 18, 2, 9, 139.24, 246.84, -2, 1, 19, 2, 9, 303.8, 246.84, -2, 1, 20, 2, 9, 411.39, 246.84, -2, 1, 21, 2, 9, 25.32, 253.16, 13, 1, 22, 2, 1, 215.19, 253.16, 0, 1, 23, 2, 1, 265.82, 253.16, 0, 1, 24, 2, 2, 31.65, 291.14, 19, 1], [0, 0, 6, 6.33, 6.33, -2, 1, 1, 0, 5, 56.96, 6.33, -2, 1, 2, 0, 7, 107.59, 6.33, -2, 1, 3, 0, 1, 151.9, 6.33, -2, 1, 4, 0, 0, 202.53, 6.33, -2, 1, 5, 0, 2, 234.18, 44.3, 0, 1, 6, 0, 3, 265.82, 6.33, -2, 1, 7, 0, 4, 316.46, 6.33, -2, 1, 8, 0, 5, 367.09, 6.33, -2, 1, 9, 0, 1, 63.29, 151.9, -2, 1, 10, 0, 2, 126.58, 151.9, 20, 1, 11, 0, 1, 189.87, 151.9, -2, 1, 12, 0, 2, 253.16, 151.9, 20, 1, 13, 0, 1, 316.46, 151.9, -2, 1, 14, 0, 2, 379.75, 151.9, 20, 1, 15, 0, 2, 63.29, 177.22, 20, 1, 16, 0, 1, 126.58, 177.22, -2, 1, 17, 0, 2, 189.87, 177.22, 20, 1, 18, 0, 1, 253.16, 177.22, -2, 1, 19, 0, 2, 316.46, 177.22, 20, 1, 20, 0, 1, 379.75, 177.22, -2, 1, 21, 0, 0, 417.72, 56.96, 10, 1, 22, 0, 0, 436.71, 25.32, -1, 0.8, 23, 0, 0, 462.03, 25.32, -1, 0.8, 24, 0, 5, 379.75, 202.53, -2, 1, 25, 0, 7, 316.46, 202.53, 20, 1, 26, 0, 5, 253.16, 202.53, -2, 1, 27, 0, 7, 189.87, 202.53, 20, 1, 28, 0, 5, 126.58, 202.53, -2, 1, 29, 0, 7, 63.29, 202.53, 20, 1, 30, 0, 5, 316.46, 227.85, -2, 1, 31, 0, 7, 379.75, 227.85, 20, 1, 32, 0, 7, 253.16, 227.85, 20, 1, 33, 0, 5, 189.87, 227.85, -2, 1, 34, 0, 7, 126.58, 227.85, 20, 1, 35, 0, 5, 63.29, 227.85, -2, 1, 36, 0, 0, 379.75, 253.16, -2, 1, 37, 0, 0, 316.46, 253.16, -2, 1, 38, 0, 0, 253.16, 253.16, -2, 1, 39, 0, 0, 189.87, 253.16, -2, 1, 40, 0, 0, 126.58, 253.16, -2, 1, 41, 0, 0, 63.29, 253.16, -2, 1, 42, 0, 8, 379.75, 126.58, -2, 1, 43, 0, 8, 316.46, 126.58, -2, 1, 44, 0, 8, 253.16, 126.58, -2, 1, 45, 0, 8, 189.87, 126.58, -2, 1, 46, 0, 8, 126.58, 126.58, -2, 1, 47, 0, 8, 63.29, 126.58, -2, 1, 48, 0, 9, 468.35, 126.58, -2, 1, 49, 0, 9, 0, 126.58, -2, 1], [0, 0, 9, 360.76, 0, -2, 1, 1, 0, 9, 6.33, 6.33, -2, 1, 2, 0, 0, 208.86, 25.32, 17, 1, 3, 1, 0, 158.23, 0, -1, 1, 4, 1, 0, 145.57, 75.95, -1, 1, 5, 1, 0, 196.2, 120.25, -1, 1, 6, 1, 0, 272.15, 120.25, -1, 1, 7, 1, 0, 316.46, 94.94, -1, 1, 8, 1, 0, 316.46, 63.29, -1, 1, 9, 1, 0, 297.47, 0, -1, 1, 10, 1, 0, 253.16, 0, -1, 1, 11, 3, 1, 316.46, 56.96, -2, 1, 12, 3, 1, 310.13, 0, -2, 1, 13, 3, 1, 398.73, 82.28, -2, 1, 14, 3, 1, 462.03, 0, -2, 1, 15, 3, 1, 272.15, 0, -2, 1, 16, 3, 1, 177.22, 0, -2, 1, 17, 3, 1, 113.92, 0, -2, 1, 18, 3, 1, 443.04, 151.9, -2, 1, 19, 3, 1, 379.75, 151.9, -2, 1, 20, 3, 1, 316.46, 151.9, -2, 1, 21, 3, 1, 291.14, 113.92, -2, 1, 22, 3, 1, 253.16, 151.9, -2, 1, 23, 3, 1, 240.51, 126.58, -2, 1, 24, 3, 1, 189.87, 151.9, -2, 1, 25, 3, 1, 126.58, 151.9, -2, 1, 26, 3, 1, 63.29, 151.9, -2, 1, 27, 3, 1, 0, 151.9, -2, 1, 28, 3, 1, 63.29, 75.95, -2, 1, 29, 3, 1, 126.58, 101.27, -2, 1, 30, 3, 3, 443.04, 202.53, 10, 1, 31, 3, 3, 379.75, 202.53, -2, 1, 32, 3, 3, 316.46, 202.53, 18, 1, 33, 3, 3, 253.16, 202.53, -2, 1, 34, 3, 3, 0, 202.53, 10, 1, 35, 3, 3, 63.29, 202.53, -2, 1, 36, 3, 3, 189.87, 202.53, -2, 1, 37, 3, 3, 126.58, 202.53, 0, 1, 38, 3, 3, 0, 253.16, -2, 1, 39, 3, 3, 126.58, 253.16, -2, 1, 40, 3, 3, 253.16, 253.16, -2, 1, 41, 3, 3, 379.75, 253.16, -2, 1, 42, 2, 1, 0, 0, -2, 1, 43, 2, 1, 0, 113.92, -2, 1], [0, 1, 1, 316.46, 158.23, -2, 1, 1, 1, 1, 126.58, 132.91, -2, 1, 2, 1, 1, 0, 107.59, -2, 1, 3, 1, 1, 379.75, 227.85, -2, 1, 4, 1, 1, 253.16, 227.85, -2, 1, 5, 1, 1, 126.58, 227.85, -2, 1, 6, 1, 1, 0, 227.85, -2, 1, 7, 1, 4, 164.56, 113.92, -1, 1, 8, 1, 8, 329.11, 0, -1, 1, 9, 1, 5, 335.44, 0, -1, 1, 10, 1, 7, 284.81, 0, -1, 1, 11, 1, 0, 202.53, 50.63, -1, 1, 12, 1, 6, 164.56, 69.62, -1, 1, 13, 1, 8, 189.87, 37.97, -1, 1, 14, 3, 0, 430.38, 0, -1, 1, 15, 2, 0, 373.42, 0, -2, 1, 16, 2, 0, 386.08, 31.65, -2, 1, 17, 2, 0, 424.05, 44.3, -2, 1, 18, 2, 0, 481.01, 50.63, -2, 1, 19, 2, 9, 0, 0, -2, 1, 20, 0, 1, 335.44, 0, -2, 1, 21, 0, 1, 0, 0, -2, 1, 22, 2, 0, 189.87, 253.16, -2, 1, 23, 2, 0, 0, 253.16, -2, 1], [0, 2, 8, 189.87, 101.27, -2, 1, 1, 2, 0, 107.59, 113.92, -2, 1, 2, 2, 4, 75.95, 215.19, -2, 1, 3, 2, 6, 189.87, 177.22, -2, 1, 4, 2, 6, 196.2, 139.24, 20, 1, 5, 2, 2, 297.47, 322.78, -2, 1, 6, 2, 2, 392.41, 196.2, -2, 1, 7, 2, 8, 234.18, 94.94, -2, 1, 8, 2, 1, 189.87, 94.94, -2, 1, 9, 2, 1, 189.87, 183.54, -2, 1, 10, 2, 9, 145.57, 0, -2, 1, 11, 2, 8, 189.87, 50.63, -2, 1, 12, 2, 8, 189.87, 50.63, -2, 1, 13, 2, 8, 189.87, 50.63, -2, 1, 14, 2, 4, 196.2, 56.96, 18, 1, 15, 2, 6, 240.51, 88.61, -2, 1, 16, 2, 0, 259.49, 107.59, -2, 1, 17, 2, 0, 303.8, 170.89, -2, 1, 18, 2, 4, 303.8, 196.2, -2, 1, 19, 2, 8, 0, 221.52, -2, 1, 20, 2, 8, 278.48, 208.86, 0, 1, 21, 2, 8, 6.33, 0, -2, 1, 22, 2, 8, 468.35, 0, -2, 1], [0, 0, 8, 126.58, 63.29, 13, 1, 1, 2, 9, 139.24, 88.61, 18, 1, 2, 2, 9, 221.52, 88.61, 19, 1, 3, 0, 8, 297.47, 63.29, 17, 1, 4, 0, 1, 63.29, 253.16, 17, 1, 5, 0, 2, 367.09, 75.95, 18, 1, 6, 0, 5, 18.99, 12.66, 18, 1, 7, 0, 4, 202.53, 303.8, 14, 1, 8, 0, 3, 265.82, 303.8, 10, 1, 9, 0, 4, 341.77, 303.8, 14, 1, 10, 0, 0, 430.38, 291.14, 17, 1, 11, 0, 3, 0, 227.85, 18, 1, 12, 0, 3, 335.44, 215.19, 18, 1, 13, 0, 3, 360.76, 227.85, 11, 1, 14, 0, 8, 265.82, 253.16, 13, 1, 15, 0, 8, 468.35, 196.2, 17, 1, 16, 0, 8, 0, 120.25, 19, 1, 17, 0, 8, 468.35, 0, 14, 1, 18, 0, 1, 354.43, 0, 18, 1, 19, 0, 4, 189.87, 0, 12, 1, 20, 0, 8, 367.09, 56.96, -2, 1, 21, 0, 8, 367.09, 75.95, -2, 1, 22, 0, 4, 158.23, 18.99, -2, 1, 23, 2, 6, 132.91, 25.32, -2, 1, 24, 0, 4, 139.24, 56.96, -2, 1], [0, 0, 6, 88.61, 107.59, 19, 1, 1, 3, 6, 246.84, 94.94, 19, 1, 2, 0, 2, 170.89, 170.89, 19, 1, 3, 0, 2, 386.08, 44.3, 19, 1, 4, 0, 2, 316.46, 151.9, 19, 1, 5, 0, 1, 120.25, 6.33, 0, 1, 6, 0, 1, 158.23, 12.66, -2, 1, 7, 0, 1, 208.86, 12.66, 13, 1, 8, 0, 1, 265.82, 12.66, 18, 1, 9, 0, 9, 132.91, 6.33, -2, 1, 10, 0, 9, 170.89, 25.32, -2, 1, 11, 0, 9, 183.54, 6.33, -2, 1, 12, 0, 9, 113.92, 25.32, -2, 1, 13, 0, 9, 234.18, 12.66, -2, 1, 14, 0, 9, 94.94, 6.33, -2, 1, 15, 3, 1, 183.54, 12.66, -2, 1, 16, 3, 0, 259.49, 284.81, -1, 1, 17, 3, 4, 272.15, 272.15, -2, 1, 18, 0, 4, 265.82, 297.47, -2, 1, 19, 3, 4, 246.84, 303.8, -2, 1, 20, 0, 4, 234.18, 284.81, -2, 1, 21, 1, 4, 240.51, 265.82, -2, 1, 22, 2, 3, 170.89, 310.13, -2, 1, 23, 2, 5, 272.15, 303.8, 0, 1, 24, 0, 8, 303.8, 265.82, 17, 1, 25, 1, 5, 348.1, 272.15, 18, 1, 26, 1, 5, 373.42, 310.13, -2, 1, 27, 0, 5, 360.76, 240.51, -2, 1, 28, 0, 5, 417.72, 278.48, -2, 1, 29, 0, 5, 373.42, 291.14, -2, 1, 30, 1, 5, 405.06, 227.85, -2, 1, 31, 1, 5, 449.37, 272.15, -2, 1, 32, 0, 9, 284.81, 316.46, -2, 1, 33, 0, 9, 253.16, 253.16, -2, 1, 34, 0, 9, 322.78, 253.16, -2, 1, 35, 0, 9, 373.42, 253.16, -2, 1, 36, 0, 9, 417.72, 253.16, -2, 1, 37, 0, 9, 443.04, 253.16, -2, 1, 38, 0, 9, 253.16, 322.78, -2, 1, 39, 0, 9, 379.75, 310.13, -2, 1, 40, 0, 9, 443.04, 253.16, -1, 1, 41, 0, 9, 354.43, 202.53, -1, 1, 42, 0, 9, 253.16, 202.53, -2, 1, 43, 0, 9, 379.75, 297.47, -2, 1, 44, 0, 8, 297.47, 101.27, 12, 1, 45, 0, 8, 341.77, 6.33, -1, 1, 46, 0, 8, 341.77, 101.27, -2, 1, 47, 0, 8, 398.73, 0, -1, 1, 48, 0, 8, 348.1, 0, 18, 1, 49, 0, 8, 101.27, 101.27, -2, 1, 50, 0, 8, 278.48, 101.27, 18, 1, 51, 0, 8, 151.9, 101.27, 18, 1, 52, 0, 8, 120.25, 151.9, 14, 1, 53, 0, 0, 348.1, 12.66, -1, 1, 54, 0, 0, 360.76, 12.66, 0, 1, 55, 0, 0, 379.75, 12.66, -1, 1, 56, 0, 0, 392.41, 75.95, -2, 1, 57, 0, 1, 348.1, 107.59, 1, 1, 58, 3, 1, 405.06, 132.91, -1, 1, 59, 3, 1, 405.06, 170.89, -1, 1, 60, 3, 1, 18.99, 310.13, -2, 1, 61, 3, 1, 18.99, 202.53, 6, 1, 62, 3, 0, 12.66, 6.33, 2, 1, 63, 3, 0, 411.39, 0, 1, 1, 64, 3, 0, 12.66, 202.53, 11, 1], [0, 0, 8, 196.2, 126.58, 19, 1, 1, 1, 8, 202.53, 88.61, -2, 1, 2, 3, 8, 221.52, 6.33, 18, 1, 3, 2, 8, 227.85, 56.96, -2, 1, 4, 2, 8, 221.52, 151.9, 20, 1, 5, 3, 8, 398.73, 183.54, 18, 1, 6, 1, 8, 253.16, 215.19, 0, 1, 7, 0, 8, 227.85, 227.85, 11, 1, 8, 1, 6, 164.56, 0, -2, 1, 9, 1, 6, 259.49, 0, 1, 1, 10, 1, 1, 360.76, 297.47, -2, 1, 11, 1, 1, 430.38, 291.14, -2, 1, 12, 1, 9, 430.38, 310.13, -2, 1, 13, 1, 9, 360.76, 310.13, -2, 1, 14, 3, 1, 348.1, 303.8, 0, 1, 15, 0, 1, 316.46, 335.44, -2, 1, 16, 1, 1, 56.96, 303.8, 20, 1, 17, 2, 1, 88.61, 329.11, -2, 1, 18, 2, 9, 75.95, 329.11, -2, 1, 19, 2, 1, 436.71, 253.16, 17, 1, 20, 2, 1, 354.43, 253.16, -1, 1, 21, 2, 1, 18.99, 253.16, 20, 1, 22, 2, 1, 18.99, 272.15, -2, 1, 23, 2, 5, 316.46, 158.23, -1, 1, 24, 2, 5, 18.99, 151.9, -1, 1, 25, 2, 0, 386.08, 6.33, 18, 1, 26, 1, 0, 424.05, 88.61, -1, 1, 27, 1, 0, 449.37, 75.95, -1, 1, 28, 1, 0, 474.68, 56.96, 15, 1, 29, 1, 0, 474.68, 37.97, -2, 1, 30, 1, 0, 455.7, 0, -2, 1, 31, 1, 0, 436.71, 0, -2, 1, 32, 1, 0, 392.41, 0, -2, 1, 33, 1, 0, 335.44, 0, -2, 1, 34, 1, 0, 303.8, 44.3, -2, 1, 35, 1, 0, 367.09, 69.62, -2, 1, 36, 2, 5, 373.42, 88.61, -2, 1, 37, 2, 5, 436.71, 82.28, -1, 1, 38, 2, 5, 468.35, 75.95, -2, 1, 39, 2, 5, 481.01, 50.63, -2, 1, 40, 2, 5, 468.35, 0, -1, 1, 41, 2, 5, 455.7, 0, -1, 1, 42, 2, 5, 354.43, 0, -2, 1, 43, 2, 5, 291.14, 0, -1, 1, 44, 2, 5, 316.46, 63.29, 0, 1, 45, 2, 5, 31.65, 0, 2, 1, 46, 2, 5, 12.66, 0, -2, 1], [0, 0, 0, 196.2, 151.9, 18, 1, 1, 0, 3, 259.49, 132.91, -1, 1, 2, 1, 3, 177.22, 132.91, -2, 1, 3, 2, 3, 253.16, 75.95, -2, 1, 4, 2, 3, 145.57, 69.62, -2, 1, 5, 1, 3, 202.53, 37.97, -1, 1, 6, 1, 3, 284.81, 120.25, -1, 1, 7, 2, 3, 303.8, 94.94, -2, 1, 8, 2, 3, 145.57, 107.59, -2, 1, 9, 2, 3, 240.51, 37.97, -2, 1, 10, 3, 2, 341.77, 37.97, -2, 1, 11, 3, 2, 348.1, 31.65, -2, 1, 12, 1, 2, 348.1, 31.65, 18, 1, 13, 1, 2, 246.84, 6.33, -2, 1, 14, 1, 2, 196.2, 12.66, -2, 1, 15, 3, 2, 240.51, 0, 18, 1, 16, 3, 2, 221.52, 44.3, -2, 1, 17, 3, 2, 246.84, 37.97, -1, 1, 18, 3, 2, 88.61, 50.63, -1, 1, 19, 3, 2, 82.28, 75.95, -2, 1, 20, 1, 2, 88.61, 63.29, 18, 1, 21, 1, 2, 113.92, 132.91, -2, 1, 22, 1, 2, 132.91, 139.24, -2, 1, 23, 3, 2, 120.25, 145.57, 18, 1, 24, 0, 9, 145.57, 272.15, 19, 1, 25, 0, 8, 278.48, 253.16, -2, 1, 26, 0, 8, 0, 253.16, -2, 1, 27, 0, 8, 443.04, 202.53, -1, 1, 28, 0, 8, 443.04, 151.9, -1, 1, 29, 0, 8, 443.04, 101.27, 0, 1, 30, 0, 8, 379.75, 202.53, -1, 1, 31, 0, 8, 379.75, 151.9, 0, 1, 32, 0, 8, 379.75, 101.27, -1, 1, 33, 0, 8, 443.04, 50.63, -2, 1, 34, 0, 8, 443.04, 0, -2, 1, 35, 0, 8, 379.75, 0, -2, 1, 36, 0, 8, 316.46, 202.53, 18, 1, 37, 0, 8, 291.14, 202.53, -2, 1, 38, 0, 8, 272.15, 151.9, -2, 1, 39, 0, 8, 316.46, 151.9, -2, 1, 40, 0, 8, 354.43, 151.9, -2, 1, 41, 0, 8, 297.47, 139.24, -2, 1, 42, 0, 8, 316.46, 101.27, -1, 1, 43, 0, 8, 316.46, 82.28, -2, 1, 44, 0, 8, 316.46, 50.63, -2, 1, 45, 0, 8, 316.46, 0, -2, 1, 46, 0, 8, 259.49, 0, -2, 1, 47, 0, 8, 253.16, 50.63, 0, 1, 48, 0, 8, 253.16, 69.62, -2, 1, 49, 0, 8, 272.15, 101.27, -2, 1, 50, 0, 8, 215.19, 101.27, -1, 1, 51, 0, 8, 189.87, 101.27, -2, 1, 52, 0, 8, 189.87, 113.92, -2, 1, 53, 0, 8, 189.87, 88.61, -2, 1, 54, 0, 8, 189.87, 50.63, -1, 1, 55, 0, 8, 189.87, 0, -2, 1, 56, 0, 8, 189.87, 6.33, -2, 1, 57, 0, 8, 126.58, 0, -2, 1, 58, 0, 8, 151.9, 56.96, -2, 1, 59, 0, 8, 126.58, 75.95, -2, 1, 60, 0, 8, 126.58, 101.27, -2, 1, 61, 0, 8, 158.23, 113.92, -2, 1, 62, 0, 8, 126.58, 151.9, -2, 1, 63, 0, 8, 196.2, 158.23, -2, 1, 64, 0, 8, 126.58, 202.53, 18, 1, 65, 0, 8, 63.29, 202.53, -1, 1, 66, 0, 8, 0, 202.53, -1, 1, 67, 0, 8, 0, 151.9, 0, 1, 68, 0, 8, 63.29, 151.9, 17, 1, 69, 0, 8, 63.29, 101.27, -2, 1, 70, 2, 8, 316.46, 278.48, 16, 1, 71, 2, 8, 0, 278.48, -2, 1, 72, 2, 8, 0, 354.43, 0, 1, 73, 2, 8, 329.11, 354.43, 0, 1, 74, 2, 8, 354.43, 303.8, 0, 1, 75, 2, 8, 360.76, 329.11, 15, 1, 76, 2, 8, 0, 303.8, 19, 1, 77, 2, 8, 0, 329.11, 16, 1], [0, 0, 0, 126.58, 25.32, 18, 1, 1, 2, 8, 145.57, 126.58, 19, 1, 2, 0, 9, 126.58, 101.27, -1, 1, 3, 0, 9, 126.58, 151.9, -1, 1, 4, 0, 0, 379.75, 25.32, 18, 1, 5, 2, 8, 398.73, 126.58, 19, 1, 6, 0, 9, 379.75, 101.27, -1, 1, 7, 0, 9, 379.75, 151.9, -1, 1, 8, 0, 9, 189.87, 132.91, 18, 1, 9, 2, 8, 259.49, 202.53, 18, 1, 10, 2, 8, 284.81, 202.53, 18, 1, 11, 2, 9, 189.87, 177.22, -2, 1, 12, 0, 8, 253.16, 253.16, 0, 1, 13, 0, 8, 265.82, 253.16, -1, 1, 14, 0, 8, 284.81, 253.16, 12, 1, 15, 0, 8, 303.8, 253.16, -2, 1, 16, 0, 8, 240.51, 265.82, -1, 1, 17, 0, 8, 259.49, 265.82, 14, 1, 18, 0, 8, 278.48, 265.82, -1, 1, 19, 0, 8, 297.47, 265.82, 0, 1, 20, 0, 8, 310.13, 265.82, 0, 1, 21, 1, 3, 316.46, 234.18, 12, 1, 22, 1, 3, 240.51, 278.48, 11, 1, 23, 1, 3, 63.29, 227.85, -1, 1, 24, 1, 3, 139.24, 278.48, 0, 1, 25, 1, 3, 31.65, 278.48, -1, 1, 26, 1, 3, 443.04, 202.53, 1, 1, 27, 1, 3, 443.04, 177.22, -1, 1, 28, 1, 3, 0, 151.9, -1, 1, 29, 1, 3, 0, 227.85, 5, 1, 30, 1, 3, 443.04, 151.9, -1, 1, 31, 2, 1, 189.87, 101.27, -1, 1, 32, 2, 1, 443.04, 101.27, 17, 1, 33, 2, 1, 493.67, 101.27, -1, 1, 34, 2, 1, 63.29, 101.27, 15, 1, 35, 2, 1, 0, 101.27, 16, 1, 36, 2, 1, 0, 50.63, 6, 1, 37, 2, 1, 0, 0, 7, 1, 38, 2, 1, 158.23, 0, -1, 1, 39, 2, 1, 411.39, 0, 5, 1, 40, 2, 9, 322.78, 310.13, -2, 1, 41, 2, 9, 360.76, 310.13, -2, 1], [0, 1, 8, 120.25, 126.58, 7, 1, 1, 3, 3, 88.61, 101.27, 18, 1, 2, 3, 3, 158.23, 107.59, 18, 1, 3, 3, 3, 202.53, 196.2, 18, 1, 4, 1, 8, 12.66, 335.44, -2, 1, 5, 2, 3, 0, 341.77, 11, 1, 6, 2, 3, 0, 303.8, -2, 1, 7, 2, 3, 164.56, 303.8, 3, 1, 8, 2, 3, 284.81, 303.8, 10, 1, 9, 2, 3, 170.89, 246.84, 14, 1, 10, 2, 3, 126.58, 253.16, -2, 1, 11, 2, 3, 0, 253.16, 13, 1, 12, 2, 3, 63.29, 253.16, 0, 1, 13, 2, 3, 0, 202.53, 12, 1, 14, 2, 3, 164.56, 202.53, -2, 1, 15, 2, 1, 132.91, 101.27, -1, 1, 16, 2, 1, 126.58, 164.56, -2, 1, 17, 2, 1, 126.58, 132.91, -2, 1, 18, 2, 1, 63.29, 101.27, -1, 1, 19, 2, 1, 0, 101.27, 19, 1, 20, 2, 1, 0, 0, 20, 1, 21, 2, 1, 126.58, 0, -1, 1, 22, 2, 1, 189.87, -6.33, 20, 1, 23, 2, 1, 253.16, 101.27, 20, 1, 24, 2, 1, 259.49, 202.53, -2, 1, 25, 0, 0, 354.43, 0, 19, 1, 26, 3, 0, 424.05, 0, -2, 1, 27, 3, 0, 436.71, 6.33, -2, 1, 28, 3, 0, 443.04, 31.65, 1, 1, 29, 3, 0, 436.71, 50.63, -2, 1, 30, 3, 0, 424.05, 69.62, 0, 1, 31, 3, 0, 405.06, 82.28, 0, 1, 32, 3, 0, 386.08, 82.28, 0, 1, 33, 3, 0, 335.44, 75.95, 17, 1, 34, 3, 0, 316.46, 63.29, 15, 1, 35, 3, 0, 259.49, 44.3, 1, 1, 36, 3, 0, 253.16, 25.32, -2, 1, 37, 3, 0, 310.13, 0, -2, 1, 38, 3, 0, 348.1, 0, -2, 1], [0, 2, 9, 126.58, 0, 2, 1, 1, 2, 9, 145.57, 88.61, -2, 1, 2, 2, 9, 145.57, 189.87, -2, 1, 3, 2, 9, 240.51, 18.99, -2, 1, 4, 2, 9, 240.51, 107.59, -2, 1, 5, 1, 8, 215.19, 278.48, 19, 1, 6, 1, 8, 291.14, 278.48, -1, 1, 7, 3, 3, 284.81, 259.49, -1, 1, 8, 3, 3, 240.51, 240.51, -1, 1, 9, 3, 3, 170.89, 227.85, -1, 1, 10, 3, 4, 215.19, 240.51, -1, 1, 11, 3, 4, 253.16, 227.85, -2, 1, 12, 3, 4, 272.15, 246.84, -2, 1, 13, 3, 4, 202.53, 297.47, -1, 1, 14, 2, 9, 240.51, 208.86, -2, 1, 15, 2, 9, 291.14, 303.8, 15, 1, 16, 2, 9, 126.58, 303.8, 15, 1, 17, 2, 9, 94.94, 329.11, 17, 1, 18, 2, 1, 259.49, 18.99, -1, 1, 19, 2, 1, 145.57, 18.99, -1, 1, 20, 2, 1, 145.57, 107.59, -1, 1, 21, 2, 1, 265.82, 107.59, -1, 1, 22, 2, 1, 259.49, 208.86, -1, 1, 23, 2, 1, 145.57, 208.86, -1, 1, 24, 0, 7, 379.75, 253.16, 10, 1, 25, 0, 7, 443.04, 202.53, 0, 1, 26, 0, 7, 379.75, 151.9, 18, 1, 27, 0, 7, 443.04, 101.27, -2, 1, 28, 0, 7, 379.75, 50.63, -2, 1, 29, 0, 7, 443.04, 0, -2, 1, 30, 0, 7, 379.75, 0, 18, 1, 31, 0, 7, 443.04, 50.63, -2, 1, 32, 0, 7, 379.75, 101.27, -2, 1, 33, 0, 7, 443.04, 151.9, -2, 1, 34, 0, 7, 379.75, 202.53, 2, 1, 35, 0, 7, 443.04, 253.16, 11, 1, 36, 0, 7, 443.04, 303.8, 5, 1, 37, 0, 7, 379.75, 303.8, 0, 1, 38, 0, 7, 0, 0, -1, 1, 39, 0, 7, 63.29, 0, 18, 1, 40, 0, 7, 63.29, 50.63, -1, 1, 41, 0, 7, 0, 50.63, -1, 1, 42, 0, 7, 0, 101.27, -1, 1, 43, 0, 7, 63.29, 101.27, -1, 1, 44, 0, 7, 63.29, 151.9, 18, 1, 45, 0, 7, 0, 202.53, 0, 1, 46, 0, 7, 63.29, 253.16, 16, 1, 47, 0, 7, 0, 253.16, 15, 1, 48, 0, 7, 0, 151.9, 11, 1, 49, 0, 7, 63.29, 202.53, 14, 1, 50, 0, 7, 63.29, 303.8, 0, 1, 51, 0, 7, 0, 303.8, 17, 1], [0, 3, 8, 322.78, 56.96, -2, 1, 1, 3, 8, 341.77, 82.28, -1, 1, 2, 3, 8, 278.48, 151.9, -1, 1, 3, 3, 8, 310.13, 107.59, 19, 1, 4, 3, 8, 227.85, 56.96, -1, 1, 5, 3, 2, 303.8, 37.97, -2, 1, 6, 3, 2, 322.78, 25.32, 18, 1, 7, 3, 9, 221.52, 75.95, -2, 1, 8, 3, 9, 234.18, 69.62, -2, 1, 9, 3, 9, 215.19, 94.94, -1, 1, 10, 3, 9, 234.18, 94.94, -1, 1, 11, 3, 9, 246.84, 82.28, -2, 1, 12, 3, 9, 215.19, 126.58, -2, 1, 13, 3, 9, 234.18, 120.25, -1, 1, 14, 3, 9, 246.84, 107.59, -1, 1, 15, 3, 9, 196.2, 120.25, -1, 1, 16, 0, 9, 253.16, 151.9, -2, 1, 17, 0, 9, 221.52, 151.9, -2, 1, 18, 0, 9, 196.2, 151.9, -1, 1, 19, 0, 9, 215.19, 189.87, -1, 1, 20, 0, 9, 234.18, 170.89, -1, 1, 21, 0, 8, 101.27, 246.84, 16, 1, 22, 1, 8, 202.53, 246.84, -1, 1, 23, 1, 8, 101.27, 240.51, 18, 1, 24, 2, 1, 0, 253.16, 0, 1, 25, 2, 1, 0, 202.53, 10, 1, 26, 2, 1, 227.85, 202.53, 11, 1, 27, 2, 1, 367.09, 202.53, 7, 1, 28, 2, 1, 411.39, 202.53, 5, 1, 29, 3, 3, 379.75, 37.97, 20, 1, 30, 3, 3, 303.8, 6.33, 20, 1, 31, 1, 3, 25.32, 12.66, 20, 1, 32, 1, 3, 240.51, 69.62, -2, 1, 33, 3, 3, 0, 37.97, 20, 1, 34, 2, 1, 0, 94.94, 20, 1, 35, 2, 1, 196.2, 101.27, -1, 1, 36, 2, 1, 234.18, 151.9, 13, 1, 37, 2, 1, 202.53, 151.9, 6, 1, 38, 2, 1, 0, 151.9, 0, 1, 39, 2, 1, 360.76, 151.9, 0, 1, 40, 2, 1, 398.73, 126.58, 0, 1, 41, 2, 5, 360.76, 0, 18, 1, 42, 2, 5, 253.16, 0, -2, 1, 43, 2, 5, 126.58, 0, -2, 1, 44, 2, 5, 0, 0, 18, 1, 45, 2, 5, 63.29, 0, -2, 1, 46, 0, 9, 379.75, 354.43, -2, 1, 47, 0, 9, 449.37, 354.43, -2, 1], [0, 3, 1, 373.42, 107.59, 15, 1, 1, 1, 1, 265.82, 101.27, 0, 1, 2, 3, 1, 139.24, 126.58, 16, 1, 3, 1, 1, 44.3, 113.92, 11, 1, 4, 3, 1, 0, 120.25, 14, 1, 5, 3, 1, 227.85, 113.92, -2, 1, 6, 2, 1, 0, 158.23, 17, 1, 7, 0, 0, 151.9, 12.66, 18, 1, 8, 1, 0, 170.89, 0, -1, 1, 9, 1, 0, 177.22, 18.99, -1, 1, 10, 1, 0, 177.22, 25.32, -1, 1, 11, 1, 0, 170.89, 31.65, -1, 1, 12, 1, 0, 164.56, 37.97, -1, 1, 13, 1, 0, 151.9, 37.97, -1, 1, 14, 1, 0, 139.24, 31.65, 0, 1, 15, 1, 0, 132.91, 25.32, -1, 1, 16, 1, 0, 132.91, 18.99, -1, 1, 17, 1, 0, 139.24, 6.33, -1, 1, 18, 1, 0, 158.23, 0, -1, 1, 19, 0, 9, 246.84, 31.65, -2, 1, 20, 0, 9, 379.75, 44.3, -2, 1, 21, 2, 1, 0, 0, -1, 1, 22, 2, 1, 196.2, 0, -1, 1, 23, 2, 1, 253.16, 0, -1, 1, 24, 2, 1, 158.23, 0, -2, 1, 25, 2, 1, 177.22, 0, -1, 1, 26, 0, 9, 316.46, 240.51, -2, 1, 27, 2, 3, 367.09, 208.86, 7, 1, 28, 2, 3, 316.46, 208.86, 5, 1, 29, 2, 3, 126.58, 208.86, 16, 1, 30, 2, 3, 329.11, 278.48, 13, 1, 31, 2, 3, 0, 208.86, 0, 1], [0, 1, 0, 202.53, 151.9, -2, 1, 1, 3, 2, 265.82, 69.62, 11, 1, 2, 3, 2, 272.15, 208.86, 8, 1, 3, 3, 2, 101.27, 208.86, 14, 1, 4, 3, 2, 139.24, 63.29, 18, 1, 5, 3, 7, 297.47, 177.22, 0, 1, 6, 3, 7, 221.52, 31.65, 20, 1, 7, 3, 7, 234.18, 240.51, 12, 1, 8, 3, 7, 75.95, 177.22, 17, 1, 9, 2, 3, 272.15, 240.51, 19, 1, 10, 2, 3, 354.43, 310.13, 10, 1, 11, 2, 3, 303.8, 335.44, 6, 1, 12, 3, 9, 367.09, 0, -2, 1, 13, 3, 9, 0, 18.99, -2, 1, 14, 3, 8, 379.75, 113.92, -2, 1], [0, 2, 3, 0, 227.85, -2, 1, 1, 2, 3, 18.99, 234.18, 0, 1, 2, 2, 3, 37.97, 208.86, 15, 1, 3, 2, 3, 63.29, 151.9, 0, 1, 4, 2, 3, 101.27, 227.85, 16, 1, 5, 2, 3, 120.25, 221.52, 15, 1, 6, 2, 3, 145.57, 234.18, 11, 1, 7, 2, 3, 265.82, 259.49, 12, 1, 8, 2, 3, 50.63, 265.82, 0, 1, 9, 2, 3, 31.65, 278.48, 3, 1, 10, 2, 3, 94.94, 284.81, 0, 1, 11, 2, 3, 113.92, 284.81, -2, 1, 12, 2, 3, 139.24, 284.81, -2, 1, 13, 2, 3, 259.49, 278.48, -2, 1, 14, 2, 3, 310.13, 265.82, 2, 1, 15, 2, 3, 335.44, 240.51, 12, 1, 16, 1, 1, 424.05, 0, -1, 1, 17, 1, 1, 329.11, 6.33, -1, 1, 18, 1, 1, 221.52, 12.66, -1, 1, 19, 1, 1, 132.91, 6.33, -1, 1, 20, 1, 1, 56.96, 6.33, -1, 1, 21, 1, 1, 0, 6.33, -1, 1, 22, 0, 0, 278.48, 6.33, 19, 1, 23, 0, 0, 303.8, 44.3, -1, 1, 24, 0, 8, 272.15, 151.9, -1, 1, 25, 0, 8, 259.49, 151.9, -1, 1, 26, 0, 8, 246.84, 151.9, -1, 1, 27, 0, 8, 246.84, 151.9, -1, 1, 28, 3, 3, 183.54, 88.61, 19, 1, 29, 1, 3, 411.39, 240.51, -2, 1, 30, 3, 2, 386.08, 215.19, 19, 1, 31, 2, 1, 303.8, 56.96, 19, 1, 32, 2, 1, 367.09, 50.63, -2, 1, 33, 2, 1, 379.75, 44.3, -2, 1, 34, 2, 1, 481.01, 37.97, -2, 1, 35, 2, 1, 500, 31.65, -2, 1, 36, 2, 1, 481.01, 0, -2, 1, 37, 2, 1, 449.37, 0, -2, 1, 38, 2, 1, 424.05, 0, -2, 1, 39, 2, 1, 398.73, 0, -2, 1, 40, 2, 1, 367.09, 0, -2, 1, 41, 2, 1, 234.18, 0, -2, 1, 42, 2, 1, 183.54, 0, -2, 1, 43, 2, 1, 151.9, 0, -2, 1, 44, 2, 1, 0, 0, -2, 1, 45, 2, 1, 0, 0, -2, 1], [0, 2, 8, 335.44, 183.54, -1, 1, 1, 2, 8, 411.39, 183.54, -1, 1, 2, 2, 2, 341.77, 246.84, -1, 1, 3, 2, 8, 379.75, 215.19, -1, 1, 4, 2, 0, 291.14, 132.91, 0, 1, 5, 2, 1, 291.14, 234.18, -1, 1, 6, 2, 1, 455.7, 215.19, -1, 1, 7, 2, 0, 234.18, 259.49, -1, 1, 8, 2, 0, 405.06, 240.51, -1, 1, 9, 2, 2, 284.81, 303.8, 15, 1, 10, 2, 1, 63.29, 208.86, -1, 1, 11, 2, 9, 126.58, 215.19, -1, 1, 12, 2, 1, 120.25, 208.86, 18, 1, 13, 2, 1, 56.96, 202.53, 18, 1, 14, 2, 7, 69.62, 272.15, -2, 1, 15, 2, 8, 94.94, 240.51, 0, 1, 16, 2, 8, 12.66, 151.9, -1, 1, 17, 2, 4, 6.33, 164.56, 11, 1, 18, 2, 7, 0, 303.8, 14, 1, 19, 2, 3, 75.95, 322.78, 10, 1], [0, 2, 0, 0, 0, -1, 1, 1, 0, 1, 6.33, 0, -1, 1, 2, 2, 0, 392.41, 0, -1, 1, 3, 0, 1, 392.41, 0, -1, 1, 4, 0, 7, 113.92, 6.33, -1, 1, 5, 0, 7, 316.46, 0, -1, 1, 6, 0, 3, 316.46, 0, -1, 1, 7, 0, 3, 113.92, 0, -1, 1, 8, 0, 5, 202.53, 0, -1, 1, 9, 1, 3, 202.53, 37.97, -1, 1, 10, 3, 7, 113.92, 69.62, 19, 1, 11, 3, 8, 341.77, 139.24, 18, 1, 12, 3, 8, 145.57, 139.24, 18, 1, 13, 3, 7, 120.25, 164.56, -1, 1, 14, 0, 5, 208.86, 69.62, -1, 1, 15, 1, 4, 259.49, 253.16, 19, 1, 16, 1, 7, 145.57, 221.52, -2, 1, 17, 1, 8, 360.76, 196.2, -1, 1, 18, 1, 8, 373.42, 183.54, -1, 1, 19, 1, 8, 69.62, 177.22, -1, 1, 20, 1, 8, 75.95, 202.53, -1, 1, 21, 1, 7, 0, 196.2, 0, 1, 22, 1, 5, 101.27, 208.86, -2, 1, 23, 1, 1, 379.75, 202.53, 0, 1, 24, 1, 1, 411.39, 227.85, 2, 1, 25, 2, 5, 56.96, 183.54, 2, 1, 26, 2, 5, 0, 253.16, 5, 1, 27, 2, 1, 411.39, 303.8, 0, 1, 28, 2, 1, 360.76, 75.95, 19, 1, 29, 1, 5, 0, 75.95, -1, 1], [0, 2, 5, 202.53, 88.61, 13, 1, 1, 2, 5, 272.15, 50.63, 17, 1, 2, 2, 5, 25.32, 63.29, 17, 1, 3, 2, 4, 240.51, 12.66, 0, 1, 4, 2, 4, 284.81, 113.92, 0, 1, 5, 2, 4, 101.27, 107.59, 2, 1, 6, 2, 1, 0, 158.23, 10, 1, 7, 1, 5, 6.33, 177.22, 16, 1, 8, 2, 1, 297.47, 164.56, 14, 1, 9, 1, 5, 398.73, 177.22, 17, 1, 10, 1, 2, 272.15, 63.29, 19, 1, 11, 1, 2, 196.2, 63.29, 19, 1, 12, 1, 5, 126.58, 227.85, 15, 1, 13, 1, 5, 316.46, 234.18, 0, 1, 14, 2, 4, 392.41, 126.58, 19, 1, 15, 2, 4, 31.65, 132.91, 19, 1], [0, 2, 9, 398.73, 208.86, -2, 1, 1, 2, 9, 392.41, 208.86, -2, 1, 2, 2, 9, 392.41, 272.15, -2, 1, 3, 2, 9, 436.71, 215.19, -2, 1, 4, 2, 9, 398.73, 240.51, -2, 1, 5, 2, 9, 417.72, 215.19, -2, 1, 6, 2, 9, 417.72, 246.84, -2, 1, 7, 2, 9, 417.72, 246.84, -2, 1, 8, 1, 6, 430.38, 189.87, -1, 1, 9, 2, 6, 417.72, 189.87, -1, 1, 10, 1, 6, 405.06, 189.87, -1, 1, 11, 2, 6, 392.41, 189.87, -1, 1, 12, 1, 6, 379.75, 189.87, 18, 1, 13, 2, 6, 392.41, 278.48, 2, 1, 14, 1, 6, 405.06, 278.48, 4, 1, 15, 2, 6, 417.72, 278.48, 1, 1, 16, 1, 6, 430.38, 278.48, 12, 1, 17, 2, 6, 443.04, 189.87, 2, 1, 18, 1, 6, 455.7, 189.87, 16, 1, 19, 2, 6, 468.35, 189.87, 0, 1, 20, 2, 6, 367.09, 189.87, 0, 1, 21, 1, 6, 354.43, 189.87, 19, 1, 22, 3, 6, 341.77, 183.54, 10, 1, 23, 0, 6, 329.11, 170.89, 15, 1, 24, 0, 8, 354.43, 101.27, 19, 1, 25, 1, 8, 316.46, 75.95, 19, 1, 26, 1, 6, 316.46, 164.56, 2, 1, 27, 2, 6, 303.8, 158.23, 3, 1, 28, 2, 9, 189.87, 177.22, -1, 1, 29, 2, 1, 227.85, 259.49, -1, 1, 30, 2, 9, 189.87, 265.82, -1, 1, 31, 2, 9, 189.87, 253.16, -1, 1, 32, 2, 9, 189.87, 202.53, -1, 1, 33, 2, 9, 227.85, 253.16, -1, 1, 34, 2, 9, 240.51, 259.49, -1, 1, 35, 2, 6, 291.14, 158.23, 19, 1, 36, 1, 6, 278.48, 158.23, 12, 1, 37, 2, 6, 265.82, 158.23, 11, 1, 38, 1, 6, 253.16, 158.23, -1, 1, 39, 2, 6, 240.51, 158.23, -1, 1, 40, 1, 6, 227.85, 158.23, -1, 1, 41, 2, 6, 215.19, 158.23, -1, 1, 42, 1, 6, 202.53, 158.23, -1, 1, 43, 2, 6, 189.87, 158.23, -1, 1, 44, 1, 6, 177.22, 158.23, -1, 1, 45, 2, 6, 164.56, 158.23, -1, 1, 46, 2, 9, 189.87, 310.13, -1, 1, 47, 1, 6, 151.9, 151.9, -1, 1, 48, 2, 6, 145.57, 158.23, 19, 1, 49, 1, 6, 139.24, 170.89, 2, 1, 50, 2, 6, 132.91, 183.54, -2, 1, 51, 2, 9, 37.97, 215.19, -1, 1, 52, 2, 9, 56.96, 221.52, -1, 1, 53, 2, 9, 82.28, 221.52, -1, 1, 54, 2, 9, 63.29, 246.84, -1, 1, 55, 2, 9, 31.65, 215.19, -1, 1, 56, 2, 9, 31.65, 278.48, -1, 1, 57, 2, 9, 37.97, 246.84, -1, 1, 58, 2, 9, 82.28, 259.49, -1, 1, 59, 1, 6, 113.92, 196.2, 10, 1, 60, 2, 6, 101.27, 196.2, 11, 1, 61, 1, 6, 88.61, 196.2, 18, 1, 62, 2, 6, 82.28, 284.81, 9, 1, 63, 1, 6, 69.62, 284.81, 10, 1, 64, 2, 6, 56.96, 284.81, 0, 1, 65, 1, 6, 44.3, 284.81, 0, 1, 66, 2, 6, 31.65, 284.81, 0, 1, 67, 1, 6, 18.99, 196.2, 11, 1, 68, 2, 6, 31.65, 196.2, -1, 1, 69, 1, 6, 44.3, 196.2, -1, 1, 70, 2, 6, 56.96, 196.2, -1, 1, 71, 1, 6, 69.62, 196.2, -1, 1, 72, 2, 6, 6.33, 196.2, 0, 1, 73, 0, 8, 6.33, 101.27, 19, 1, 74, 1, 8, 63.29, 69.62, 20, 1, 75, 1, 8, 94.94, 69.62, 20, 1, 76, 0, 9, 151.9, 316.46, 20, 1, 77, 0, 9, 284.81, 316.46, 20, 1, 78, 0, 9, 253.16, 316.46, 20, 1, 79, 0, 9, 183.54, 322.78, 20, 1, 80, 0, 9, 227.85, 322.78, 20, 1, 81, 0, 9, 303.8, 335.44, 20, 1, 82, 0, 9, 259.49, 335.44, 20, 1, 83, 1, 3, 139.24, 335.44, 3, 1, 84, 1, 3, 183.54, 348.1, -2, 1, 85, 1, 3, 227.85, 348.1, 16, 1, 86, 1, 0, 31.65, 12.66, 6, 1, 87, 2, 0, 37.97, 0, -2, 1, 88, 2, 0, 12.66, 12.66, -1, 1, 89, 2, 0, 6.33, 31.65, -1, 1, 90, 2, 0, 6.33, 44.3, -1, 1, 91, 2, 0, 18.99, 50.63, -1, 1, 92, 2, 0, 50.63, 0, -1, 1, 93, 2, 0, 63.29, 0, -1, 1, 94, 2, 0, 75.95, 6.33, -1, 1, 95, 2, 0, 75.95, 18.99, -1, 1, 96, 2, 0, 82.28, 37.97, -1, 1, 97, 2, 0, 50.63, 56.96, -1, 1, 98, 2, 0, 69.62, 44.3, -1, 1, 99, 0, 1, 253.16, 0, -1, 1, 100, 0, 1, 392.41, 0, -1, 1, 101, 0, 1, 88.61, 0, -1, 1, 102, 0, 1, 82.28, 18.99, -1, 1, 103, 0, 1, 120.25, 44.3, -1, 1, 104, 0, 1, 253.16, 37.97, -1, 1, 105, 3, 1, 183.54, 56.96, -1, 1, 106, 3, 1, 284.81, 56.96, -1, 1, 107, 3, 1, 303.8, 56.96, -1, 1, 108, 3, 9, 386.08, 69.62, -1, 1, 109, 3, 9, 392.41, 75.95, -1, 1, 110, 0, 5, 398.73, 88.61, 18, 1, 111, 3, 5, 436.71, 107.59, 11, 1, 112, 0, 5, 424.05, 113.92, -1, 1, 113, 0, 1, 69.62, 56.96, -1, 1, 114, 0, 1, 25.32, 63.29, -1, 1, 115, 0, 1, 0, 56.96, -1, 1, 116, 0, 1, 0, 0, -2, 1, 117, 0, 1, 0, 75.95, -2, 1, 118, 0, 3, 0, 113.92, -2, 1, 119, 0, 3, 436.71, 132.91, -2, 1, 120, 1, 3, 487.34, 202.53, -2, 1, 121, 1, 3, 0, 196.2, -2, 1, 122, 1, 3, 0, 360.76, 19, 1], [0, 2, 8, 63.29, 202.53, -1, 1, 1, 2, 8, 126.58, 253.16, -1, 1, 2, 2, 8, 253.16, 253.16, -1, 1, 3, 2, 8, 189.87, 202.53, -1, 1, 4, 2, 8, 316.46, 202.53, -1, 1, 5, 2, 8, 246.84, 101.27, -2, 1, 6, 2, 8, 246.84, 0, -2, 1, 7, 3, 9, 189.87, 0, -2, 1, 8, 3, 9, 126.58, 50.63, -2, 1, 9, 3, 9, 189.87, 50.63, -2, 1, 10, 3, 9, 221.52, 101.27, -2, 1, 11, 3, 9, 63.29, 101.27, -1, 1, 12, 3, 9, 126.58, 101.27, -1, 1, 13, 3, 9, 126.58, 126.58, -1, 1, 14, 3, 9, 189.87, 101.27, -1, 1, 15, 3, 9, 158.23, 101.27, -1, 1, 16, 3, 9, 158.23, 101.27, -1, 1, 17, 3, 9, 189.87, 126.58, -1, 1, 18, 3, 9, 259.49, 0, -1, 1, 19, 3, 9, 316.46, 50.63, -1, 1, 20, 3, 9, 379.75, 101.27, -1, 1, 21, 3, 9, 259.49, 25.32, -1, 1, 22, 3, 9, 265.82, 50.63, -1, 1, 23, 3, 9, 272.15, 75.95, -1, 1, 24, 3, 9, 297.47, 63.29, -1, 1, 25, 3, 9, 329.11, 75.95, -1, 1, 26, 3, 9, 259.49, 75.95, -1, 1, 27, 3, 9, 259.49, 101.27, -1, 1, 28, 3, 9, 259.49, 126.58, -1, 1, 29, 3, 9, 297.47, 126.58, -1, 1, 30, 0, 1, 335.44, 6.33, -1, 1, 31, 0, 1, 430.38, 18.99, -1, 1, 32, 0, 1, 398.73, 0, -1, 1, 33, 0, 1, 424.05, 18.99, -1, 1, 34, 0, 1, 360.76, 37.97, -1, 1, 35, 0, 1, 373.42, 63.29, -1, 1, 36, 0, 1, 18.99, 12.66, -1, 1, 37, 0, 1, 82.28, 6.33, -1, 1, 38, 0, 1, 37.97, 37.97, -1, 1, 39, 0, 1, 69.62, 44.3, -1, 1, 40, 1, 1, 0, 265.82, 10, 1, 41, 1, 1, 44.3, 265.82, 0, 1, 42, 1, 1, 82.28, 272.15, 6, 1, 43, 1, 1, 139.24, 284.81, 15, 1, 44, 1, 1, 139.24, 291.14, 0, 1, 45, 1, 1, 221.52, 303.8, 2, 1, 46, 1, 1, 284.81, 284.81, 6, 1, 47, 1, 1, 341.77, 278.48, 6, 1, 48, 1, 1, 392.41, 272.15, 12, 1, 49, 1, 1, 430.38, 278.48, 13, 1, 50, 1, 1, 474.68, 272.15, 0, 1, 51, 1, 1, 411.39, 297.47, -2, 1, 52, 1, 1, 443.04, 297.47, 5, 1, 53, 1, 1, 341.77, 316.46, 5, 1, 54, 3, 3, 6.33, 170.89, 19, 1, 55, 3, 3, 449.37, 177.22, 19, 1, 56, 3, 3, 455.7, 101.27, 18, 1, 57, 3, 3, 12.66, 107.59, 18, 1, 58, 3, 2, 31.65, 202.53, 3, 1, 59, 3, 2, 37.97, 139.24, 3, 1, 60, 3, 2, 443.04, 139.24, 3, 1, 61, 3, 2, 474.68, 202.53, 3, 1], [0, 2, 9, 0, 0, -2, 1, 1, 2, 9, 31.65, 44.3, -2, 1, 2, 2, 9, 6.33, 0, -2, 1, 3, 2, 9, 37.97, 44.3, -2, 1, 4, 2, 9, 31.65, 6.33, -2, 1, 5, 2, 9, 31.65, 0, -2, 1, 6, 2, 8, 234.18, 158.23, -2, 1, 7, 2, 9, 449.37, 0, -2, 1, 8, 2, 9, 468.35, 12.66, -2, 1, 9, 2, 9, 443.04, 50.63, -2, 1, 10, 2, 9, 487.34, 44.3, -2, 1, 11, 2, 9, 462.03, 379.75, -2, 1, 12, 2, 9, 44.3, 398.73, -2, 1, 13, 2, 9, 107.59, 354.43, -2, 1, 14, 2, 9, 37.97, 367.09, -2, 1, 15, 2, 9, 82.28, 354.43, -2, 1, 16, 2, 9, 37.97, 50.63, -2, 1, 17, 2, 9, 75.95, 101.27, -2, 1, 18, 2, 9, 82.28, 101.27, -2, 1, 19, 2, 0, 417.72, 75.95, 18, 1, 20, 2, 9, 234.18, 177.22, -2, 1, 21, 2, 9, 221.52, 158.23, -2, 1, 22, 2, 9, 234.18, 145.57, -2, 1, 23, 2, 9, 259.49, 158.23, -2, 1, 24, 2, 9, 221.52, 177.22, -2, 1, 25, 2, 9, 221.52, 126.58, -2, 1, 26, 2, 9, 221.52, 120.25, -2, 1, 27, 2, 9, 221.52, 113.92, -2, 1, 28, 2, 9, 221.52, 107.59, -2, 1, 29, 2, 9, 272.15, 107.59, -2, 1, 30, 2, 9, 278.48, 107.59, -2, 1, 31, 2, 9, 284.81, 107.59, -2, 1, 32, 2, 9, 291.14, 107.59, -2, 1, 33, 2, 9, 215.19, 107.59, -2, 1, 34, 2, 9, 208.86, 107.59, -2, 1, 35, 2, 9, 189.87, 107.59, -2, 1, 36, 2, 9, 170.89, 107.59, -2, 1, 37, 2, 9, 82.28, 101.27, -2, 1, 38, 2, 9, 82.28, 101.27, -2, 1, 39, 2, 9, 88.61, 126.58, -2, 1, 40, 2, 9, 94.94, 139.24, -2, 1, 41, 2, 9, 101.27, 202.53, -2, 1, 42, 2, 9, 120.25, 240.51, -2, 1, 43, 2, 9, 158.23, 265.82, -2, 1, 44, 2, 9, 183.54, 272.15, -2, 1, 45, 2, 9, 240.51, 259.49, -2, 1, 46, 2, 9, 240.51, 215.19, -2, 1, 47, 2, 9, 310.13, 126.58, -2, 1, 48, 2, 9, 322.78, 202.53, -2, 1, 49, 2, 9, 360.76, 240.51, -2, 1], [0, 1, 1, 126.58, 50.63, 19, 1, 1, 1, 2, 253.16, 101.27, 12, 1, 2, 1, 2, 253.16, 50.63, 12, 1, 3, 1, 2, 126.58, 50.63, 13, 1, 4, 1, 2, 126.58, 101.27, -2, 1, 5, 1, 7, 0, 101.27, -1, 1, 6, 1, 7, 379.75, 101.27, -1, 1, 7, 1, 3, 379.75, 50.63, -1, 1, 8, 1, 3, 63.29, 50.63, -1, 1, 9, 1, 0, 379.75, 50.63, -1, 1, 10, 1, 0, 0, 50.63, -1, 1, 11, 1, 5, 443.04, 50.63, -1, 1, 12, 1, 5, 0, 50.63, -1, 1, 13, 1, 0, 126.58, 151.9, 17, 1, 14, 1, 6, 126.58, 151.9, 16, 1, 15, 1, 6, 253.16, 151.9, 16, 1, 16, 1, 3, 63.29, 151.9, 18, 1, 17, 1, 3, 379.75, 151.9, 18, 1, 18, 1, 0, 63.29, 151.9, 10, 1, 19, 1, 0, 379.75, 151.9, 13, 1, 20, 1, 1, 443.04, 151.9, 0, 1, 21, 1, 2, 0, 151.9, 0, 1, 22, 1, 2, 443.04, 151.9, 14, 1, 23, 1, 1, 0, 151.9, 15, 1, 24, 1, 8, 126.58, 202.53, 19, 1, 25, 1, 7, 411.39, 284.81, 15, 1, 26, 1, 7, 0, 278.48, 15, 1], [0, 3, 8, 0, 202.53, 19, 1, 1, 2, 0, 348.1, 303.8, 5, 1, 2, 2, 0, 411.39, 303.8, 3, 1, 3, 2, 0, 474.68, 310.13, 15, 1, 4, 2, 0, 284.81, 303.8, 15, 1, 5, 2, 0, 221.52, 303.8, 16, 1, 6, 2, 0, 158.23, 303.8, 0, 1, 7, 2, 0, 94.94, 303.8, 15, 1, 8, 2, 0, 31.65, 303.8, 0, 1, 9, 2, 0, 0, 303.8, 15, 1, 10, 1, 7, 0, 94.94, 18, 1, 11, 0, 2, 139.24, 113.92, -1, 1, 12, 0, 2, 265.82, 113.92, -1, 1, 13, 0, 2, 392.41, 113.92, -1, 1, 14, 0, 2, 12.66, 113.92, -1, 1, 15, 1, 2, 0, 0, -1, 1, 16, 1, 2, 379.75, 0, -1, 1, 17, 0, 1, 63.29, 12.66, -1, 1], [0, 2, 1, 253.16, 202.53, 19, 1, 1, 2, 1, 126.58, 202.53, 2, 1, 2, 2, 1, 379.75, 151.9, 16, 1, 3, 2, 1, 0, 151.9, 15, 1, 4, 2, 2, 63.29, 151.9, 16, 1, 5, 2, 2, 379.75, 151.9, 11, 1, 6, 2, 0, 0, 101.27, 0, 1, 7, 2, 0, 379.75, 101.27, 0, 1, 8, 2, 0, 253.16, 101.27, 0, 1, 9, 2, 0, 126.58, 101.27, 0, 1, 10, 2, 0, 189.87, 101.27, 18, 1, 11, 2, 2, 253.16, 151.9, 13, 1, 12, 2, 2, 126.58, 151.9, 11, 1, 13, 2, 2, 0, 0, -1, 1, 14, 2, 0, 0, 0, -1, 1, 15, 2, 1, 126.58, 0, 20, 1, 16, 2, 2, 253.16, 0, -1, 1, 17, 2, 1, 253.16, 0, -1, 1, 18, 2, 0, 379.75, 0, -1, 1], [0, 0, 2, 120.25, 63.29, 14, 1, 1, 0, 2, 253.16, 63.29, 2, 1, 2, 0, 2, 151.9, 101.27, 19, 1, 3, 0, 2, 303.8, 107.59, -2, 1, 4, 0, 2, 126.58, 259.49, 20, 1, 5, 0, 2, 132.91, 215.19, 12, 1, 6, 0, 2, 94.94, 107.59, 13, 1, 7, 2, 3, 341.77, 0, 1, 1, 8, 2, 3, 379.75, 202.53, 18, 1, 9, 2, 3, 253.16, 0, -2, 1, 10, 2, 3, 253.16, 0, -2, 1, 11, 2, 3, 259.49, 316.46, 20, 1, 12, 2, 3, 126.58, 259.49, -1, 1, 13, 2, 3, 0, 240.51, 0, 1, 14, 2, 3, 0, 101.27, 12, 1, 15, 2, 3, 0, 0, -1, 1, 16, 2, 3, 132.91, 0, -2, 1, 17, 2, 3, 126.58, 0, -2, 1, 18, 2, 3, 0, 234.18, 9, 1, 19, 2, 3, 0, 94.94, 18, 1, 20, 2, 3, 139.24, 69.62, -2, 1, 21, 2, 3, 139.24, 88.61, -2, 1], [0, 2, 9, 189.87, 101.27, -1, 1, 1, 2, 8, 316.46, 101.27, -1, 1, 2, 2, 8, 126.58, 101.27, -1, 1, 3, 1, 7, 126.58, 202.53, -1, 1, 4, 1, 6, 316.46, 50.63, 19, 1, 5, 1, 6, 63.29, 50.63, 19, 1, 6, 1, 5, 189.87, 253.16, 2, 1, 7, 3, 4, 253.16, 303.8, 11, 1, 8, 3, 4, 126.58, 303.8, 2, 1, 9, 1, 5, 189.87, 0, -1, 1, 10, 3, 4, 253.16, 0, -1, 1, 11, 3, 4, 126.58, 0, -1, 1, 12, 0, 3, 443.04, 177.22, 0, 1, 13, 0, 3, 443.04, 50.63, 18, 1, 14, 0, 3, 31.65, 177.22, 0, 1, 15, 0, 3, 31.65, 50.63, 18, 1, 16, 0, 3, 253.16, 0, -1, 1, 17, 0, 3, 63.29, 0, -1, 1, 18, 1, 2, 63.29, 303.8, 12, 1, 19, 1, 2, 253.16, 303.8, 13, 1, 20, 1, 1, 0, 177.22, 0, 1, 21, 1, 1, 0, 0, 16, 1, 22, 1, 1, 443.04, 0, 16, 1, 23, 1, 1, 259.49, 177.22, 0, 1, 24, 2, 0, 253.16, 0, -2, 1, 25, 2, 0, 31.65, 0, -1, 1, 26, 0, 0, 0, 0, -1, 1, 27, 0, 0, 468.35, 0, 18, 1], [0, 1, 2, 0, 0, -1, 1, 1, 1, 2, 259.49, 0, -1, 1, 2, 1, 2, 183.54, 0, -1, 1, 3, 1, 0, 291.14, 132.91, -1, 1, 4, 1, 0, 145.57, 139.24, -1, 1, 5, 1, 3, 234.18, 221.52, 18, 1, 6, 1, 4, 177.22, 291.14, 2, 1, 7, 1, 8, 297.47, 82.28, -1, 1, 8, 1, 8, 139.24, 88.61, -1, 1, 9, 1, 1, 69.62, 101.27, -1, 1, 10, 1, 1, 379.75, 94.94, -1, 1, 11, 1, 8, 94.94, 56.96, -1, 1, 12, 1, 8, 278.48, 56.96, -1, 1, 13, 1, 8, 6.33, 126.58, 19, 1, 14, 1, 8, 63.29, 139.24, -1, 1, 15, 1, 8, 63.29, 132.91, -1, 1, 16, 1, 8, 367.09, 113.92, 19, 1], [0, 2, 0, 50.63, 31.65, 19, 1, 1, 2, 0, 158.23, 0, 5, 1, 2, 2, 0, 164.56, 12.66, 8, 1, 3, 2, 0, 177.22, 44.3, 10, 1, 4, 2, 0, 183.54, 88.61, 17, 1, 5, 2, 0, 189.87, 82.28, 6, 1, 6, 2, 0, 151.9, 120.25, -2, 1, 7, 2, 0, 139.24, 132.91, 2, 1, 8, 2, 0, 88.61, 145.57, 6, 1, 9, 2, 0, 120.25, 139.24, -1, 1, 10, 2, 0, 25.32, 139.24, 9, 1, 11, 2, 0, 69.62, 151.9, -2, 1, 12, 2, 0, 6.33, 132.91, 10, 1, 13, 2, 0, 0, 107.59, -2, 1, 14, 2, 0, 0, 63.29, 4, 1, 15, 2, 0, 6.33, 6.33, 1, 1, 16, 2, 0, 50.63, 6.33, 20, 1, 17, 2, 0, 6.33, 25.32, 0, 1, 18, 2, 0, 94.94, 0, -2, 1, 19, 2, 0, 139.24, 6.33, -2, 1, 20, 2, 0, 158.23, 145.57, -2, 1, 21, 2, 0, 63.29, 126.58, -2, 1, 22, 2, 0, 82.28, 145.57, -2, 1, 23, 2, 0, 37.97, 44.3, -2, 1, 24, 2, 0, 31.65, 88.61, 2, 1, 25, 2, 0, 177.22, 56.96, -2, 1, 26, 2, 0, 139.24, 18.99, 0, 1, 27, 2, 0, 69.62, 6.33, -2, 1, 28, 2, 0, 113.92, 0, -2, 1, 29, 2, 7, 170.89, 101.27, 0, 1, 30, 2, 7, 0, 113.92, -2, 1, 31, 2, 7, 6.33, 56.96, -2, 1, 32, 2, 7, 50.63, 170.89, -2, 1, 33, 2, 7, 170.89, 0, 18, 1, 34, 2, 7, 25.32, 0, -2, 1, 35, 2, 7, 107.59, 158.23, -2, 1, 36, 2, 7, 94.94, 132.91, -2, 1, 37, 2, 7, 82.28, 0, 19, 1, 38, 2, 7, 170.89, 44.3, -2, 1, 39, 2, 7, 196.2, 126.58, 18, 1, 40, 0, 1, 126.58, 25.32, -2, 1, 41, 0, 1, 151.9, 0, -2, 1, 42, 0, 1, 158.23, 0, -2, 1, 43, 0, 1, 158.23, 0, -2, 1, 44, 0, 1, 145.57, 18.99, -2, 1, 45, 0, 1, 158.23, 44.3, -2, 1, 46, 0, 1, 177.22, 12.66, -2, 1, 47, 0, 1, 183.54, 56.96, -2, 1, 48, 0, 1, 164.56, 88.61, -2, 1, 49, 0, 1, 183.54, 88.61, -2, 1, 50, 0, 1, 189.87, 88.61, -2, 1, 51, 0, 1, 227.85, 101.27, -2, 1, 52, 0, 1, 151.9, 101.27, -2, 1, 53, 0, 1, 139.24, 101.27, -2, 1, 54, 0, 1, 88.61, 120.25, -2, 1, 55, 0, 1, 82.28, 126.58, -2, 1, 56, 0, 1, 69.62, 145.57, -2, 1, 57, 0, 1, 56.96, 151.9, -2, 1, 58, 0, 1, 44.3, 75.95, -2, 1, 59, 0, 1, 0, 75.95, -2, 1, 60, 0, 1, 0, 132.91, -2, 1, 61, 0, 1, 0, 75.95, -2, 1, 62, 0, 1, 0, 56.96, -2, 1, 63, 0, 1, 6.33, 0, -2, 1, 64, 0, 1, 0, 0, -2, 1, 65, 0, 1, 37.97, 0, -2, 1, 66, 0, 1, 37.97, 0, -2, 1, 67, 0, 1, 94.94, 0, -2, 1, 68, 0, 1, 94.94, 0, -2, 1, 69, 2, 3, 0, 202.53, -2, 1, 70, 3, 3, 0, 202.53, 19, 1, 71, 1, 3, 0, 227.85, -2, 1, 72, 1, 3, 113.92, 202.53, -2, 1, 73, 3, 3, 107.59, 215.19, -2, 1, 74, 3, 0, 183.54, 215.19, 20, 1, 75, 3, 0, 246.84, 215.19, 0, 1, 76, 3, 0, 215.19, 208.86, -2, 1, 77, 1, 0, 278.48, 202.53, -1, 1, 78, 3, 0, 278.48, 227.85, -2, 1, 79, 3, 3, 177.22, 202.53, -2, 1, 80, 2, 3, 189.87, 202.53, -2, 1, 81, 1, 3, 208.86, 202.53, -2, 1, 82, 3, 3, 221.52, 202.53, -2, 1, 83, 1, 0, 310.13, 215.19, 20, 1, 84, 1, 0, 341.77, 208.86, 2, 1, 85, 1, 0, 373.42, 215.19, 20, 1, 86, 0, 6, 253.16, 0, 13, 1, 87, 0, 6, 329.11, 50.63, 14, 1, 88, 0, 6, 253.16, 107.59, 12, 1, 89, 0, 6, 424.05, 158.23, 13, 1, 90, 0, 6, 449.37, 0, 11, 1, 91, 0, 1, 253.16, 0, -2, 1, 92, 0, 1, 253.16, 31.65, -2, 1, 93, 0, 1, 310.13, 31.65, -2, 1, 94, 0, 1, 253.16, 63.29, -2, 1, 95, 0, 1, 316.46, 82.28, 17, 1, 96, 0, 1, 360.76, 0, -2, 1, 97, 0, 1, 379.75, 0, -2, 1, 98, 0, 1, 436.71, 0, -2, 1, 99, 0, 1, 468.35, 63.29, -2, 1, 100, 0, 1, 398.73, 88.61, -2, 1, 101, 0, 1, 436.71, 132.91, -2, 1, 102, 0, 1, 253.16, 126.58, -2, 1, 103, 0, 1, 329.11, 139.24, -2, 1, 104, 0, 1, 253.16, 183.54, -2, 1, 105, 0, 1, 335.44, 177.22, -2, 1, 106, 0, 1, 481.01, 164.56, -2, 1, 107, 3, 3, 278.48, 202.53, -2, 1, 108, 1, 3, 316.46, 202.53, -2, 1, 109, 2, 3, 348.1, 202.53, -2, 1, 110, 1, 3, 417.72, 202.53, -2, 1, 111, 3, 3, 424.05, 202.53, -2, 1], [0, 2, 0, 474.68, 0, -1, 1, 1, 2, 0, 455.7, 0, -1, 1, 2, 2, 3, 0, 354.43, 19, 1, 3, 2, 5, 0, 0, -1, 1, 4, 2, 0, 94.94, 139.24, 16, 1, 5, 2, 0, 120.25, 139.24, 17, 1, 6, 2, 0, 386.08, 139.24, 15, 1, 7, 2, 2, 196.2, 151.9, 0, 1, 8, 2, 2, 291.14, 158.23, 0, 1, 9, 2, 5, 202.53, 278.48, 0, 1], [0, 2, 1, 0, 265.82, -2, 1, 1, 2, 1, 63.29, 265.82, -2, 1, 2, 2, 1, 126.58, 265.82, -2, 1, 3, 2, 1, 189.87, 265.82, 2, 1, 4, 2, 1, 253.16, 265.82, 11, 1, 5, 2, 1, 316.46, 265.82, 11, 1, 6, 2, 1, 379.75, 265.82, 12, 1, 7, 2, 1, 443.04, 265.82, -2, 1, 8, 2, 2, 0, 265.82, 2, 1, 9, 2, 2, 31.65, 265.82, 10, 1, 10, 2, 2, 94.94, 265.82, 4, 1, 11, 2, 2, 158.23, 265.82, 5, 1, 12, 2, 2, 221.52, 265.82, 7, 1, 13, 2, 2, 284.81, 265.82, 12, 1, 14, 2, 2, 348.1, 265.82, 16, 1, 15, 2, 2, 411.39, 265.82, 15, 1, 16, 2, 2, 474.68, 265.82, 13, 1, 17, 2, 3, 151.9, 101.27, 19, 1, 18, 2, 9, 354.43, 202.53, -2, 1, 19, 2, 9, 126.58, 202.53, -2, 1, 20, 2, 9, 0, 101.27, -2, 1, 21, 2, 9, 443.04, 101.27, -2, 1, 22, 2, 4, 0, 202.53, -2, 1, 23, 2, 4, 379.75, 202.53, -1, 1, 24, 2, 0, 316.46, 202.53, 19, 1, 25, 2, 0, 126.58, 202.53, 19, 1, 26, 2, 7, 379.75, 202.53, -1, 1, 27, 2, 7, 0, 202.53, -1, 1, 28, 2, 1, 0, 101.27, 18, 1, 29, 2, 8, 379.75, 101.27, 18, 1, 30, 2, 0, 316.46, 101.27, 2, 1, 31, 2, 0, 126.58, 101.27, 2, 1, 32, 2, 2, 189.87, 101.27, 20, 1, 33, 2, 2, 253.16, 101.27, 20, 1, 34, 2, 8, 379.75, 0, 13, 1, 35, 2, 8, 0, 0, 13, 1, 36, 2, 3, 126.58, 0, 6, 1, 37, 2, 3, 253.16, 0, 5, 1, 38, 2, 6, 208.86, 0, -1, 1, 39, 2, 6, 329.11, 0, -1, 1, 40, 2, 6, 132.91, 0, -1, 1, 41, 2, 0, 126.58, 0, -2, 1, 42, 2, 0, 189.87, 0, -1, 1, 43, 2, 0, 316.46, 0, -2, 1, 44, 2, 0, 0, 303.8, 0, 1, 45, 2, 0, 63.29, 303.8, 0, 1, 46, 2, 0, 126.58, 303.8, 0, 1, 47, 2, 0, 189.87, 303.8, 17, 1, 48, 2, 0, 253.16, 303.8, 15, 1, 49, 2, 0, 316.46, 303.8, 16, 1, 50, 2, 0, 379.75, 303.8, 15, 1, 51, 2, 0, 443.04, 303.8, 17, 1], [0, 2, 4, 202.53, 12.66, 19, 1, 1, 1, 2, 82.28, 75.95, 18, 1, 2, 1, 1, 183.54, 253.16, 12, 1, 3, 2, 4, 392.41, 56.96, 0, 1, 4, 2, 4, 56.96, 56.96, 0, 1, 5, 1, 8, 177.22, 6.33, 19, 1, 6, 2, 0, 259.49, 0, 1, 1, 7, 2, 0, 0, 0, 1, 1, 8, 2, 2, 272.15, 386.08, 16, 1, 9, 2, 2, 164.56, 386.08, 16, 1, 10, 2, 0, 322.78, 386.08, 0, 1, 11, 2, 0, 0, 386.08, 0, 1, 12, 2, 0, 240.51, 291.14, 15, 1], [0, 0, 4, 291.14, 0, 18, 1, 1, 0, 1, 183.54, 132.91, 1, 1, 2, 0, 7, 398.73, 170.89, 1, 1, 3, 2, 2, 272.15, 227.85, 1, 1, 4, 1, 9, 18.99, 37.97, -1, 1, 5, 2, 2, 25.32, 164.56, 11, 1, 6, 3, 0, 69.62, 164.56, 14, 1, 7, 1, 7, 44.3, 164.56, 13, 1, 8, 0, 6, 113.92, 164.56, 9, 1, 9, 2, 3, 94.94, 164.56, 10, 1, 10, 3, 1, 113.92, 164.56, 12, 1, 11, 2, 8, 69.62, 253.16, 7, 1, 12, 3, 3, 126.58, 297.47, 3, 1, 13, 3, 3, 196.2, 297.47, 3, 1, 14, 1, 1, 0, 0, -1, 1, 15, 1, 1, 316.46, 0, -1, 1, 16, 0, 6, 88.61, 113.92, 0, 1, 17, 0, 6, 132.91, 94.94, 0, 1, 18, 0, 6, 145.57, 145.57, 0, 1, 19, 3, 1, 0, 56.96, -1, 1, 20, 3, 1, 132.91, 63.29, 18, 1, 21, 2, 1, 139.24, 94.94, -1, 1, 22, 2, 1, 0, 113.92, 0, 1, 23, 2, 1, 94.94, 94.94, 2, 1, 24, 1, 1, 455.7, 63.29, -1, 1, 25, 2, 1, 430.38, 94.94, -1, 1, 26, 2, 1, 398.73, 107.59, -1, 1, 27, 2, 1, 303.8, 113.92, -1, 1], [0, 1, 8, 56.96, 234.18, -2, 1, 1, 3, 8, 94.94, 132.91, -2, 1, 2, 1, 3, 0, 18.99, 19, 1, 3, 0, 8, 139.24, 139.24, 0, 1, 4, 0, 8, 25.32, 82.28, 0, 1, 5, 0, 8, 63.29, 139.24, 0, 1, 6, 0, 1, 139.24, 145.57, -1, 1, 7, 0, 1, 0, 151.9, -1, 1, 8, 0, 1, 12.66, 164.56, -1, 1, 9, 3, 9, 354.43, 44.3, -1, 1, 10, 3, 9, 335.44, 94.94, -1, 1, 11, 2, 9, 411.39, 88.61, -1, 1, 12, 1, 0, 0, 253.16, 0, 1, 13, 0, 8, 196.2, 341.77, 0, 1, 14, 1, 0, 139.24, 253.16, 11, 1, 15, 1, 4, 335.44, 310.13, 12, 1, 16, 1, 0, 139.24, 303.8, -2, 1, 17, 3, 3, 0, 348.1, 10, 1, 18, 2, 2, 272.15, 107.59, 18, 1, 19, 2, 2, 272.15, 12.66, -2, 1, 20, 2, 2, 265.82, 82.28, -1, 1, 21, 2, 2, 221.52, 126.58, -1, 1, 22, 2, 2, 322.78, 69.62, -1, 1, 23, 2, 2, 386.08, 31.65, -1, 1, 24, 2, 2, 354.43, 63.29, -1, 1, 25, 2, 2, 373.42, 132.91, -1, 1], [0, 2, 4, 151.9, 63.29, -1, 1, 1, 2, 4, 126.58, 139.24, -1, 1, 2, 2, 4, 234.18, 82.28, -1, 1, 3, 2, 4, 253.16, 126.58, -2, 1, 4, 2, 4, 240.51, 158.23, -2, 1, 5, 2, 4, 215.19, 183.54, -2, 1, 6, 2, 4, 196.2, 170.89, -2, 1, 7, 2, 2, 202.53, 126.58, 19, 1, 8, 2, 2, 240.51, 126.58, -1, 1, 9, 3, 3, 215.19, 189.87, -1, 1, 10, 3, 3, 240.51, 202.53, 0, 1, 11, 3, 3, 189.87, 234.18, -1, 1, 12, 0, 0, 18.99, 25.32, 19, 1, 13, 0, 2, 12.66, 6.33, 20, 1, 14, 0, 2, 6.33, 25.32, 20, 1, 15, 0, 2, 0, 75.95, 20, 1, 16, 0, 2, 31.65, 101.27, 20, 1, 17, 0, 2, 69.62, 120.25, 20, 1, 18, 0, 2, 94.94, 94.94, 20, 1, 19, 0, 2, 113.92, 75.95, 20, 1, 20, 0, 2, 120.25, 50.63, 20, 1, 21, 0, 2, 101.27, 18.99, 20, 1, 22, 0, 2, 50.63, 0, 20, 1, 23, 0, 2, 75.95, 0, 20, 1, 24, 0, 2, 0, 56.96, 20, 1, 25, 2, 3, 0, 272.15, 0, 1, 26, 2, 3, 107.59, 265.82, -2, 1, 27, 2, 3, 297.47, 265.82, 0, 1, 28, 2, 3, 398.73, 265.82, 0, 1, 29, 2, 8, 0, 303.8, -2, 1, 30, 2, 8, 6.33, 316.46, -2, 1, 31, 2, 8, 0, 310.13, -2, 1, 32, 2, 8, 0, 310.13, -2, 1, 33, 2, 8, 0, 310.13, 18, 1, 34, 2, 8, 6.33, 303.8, -2, 1, 35, 2, 8, 75.95, 303.8, -2, 1, 36, 2, 8, 297.47, 316.46, -2, 1, 37, 2, 8, 265.82, 297.47, -2, 1, 38, 2, 8, 126.58, 303.8, 18, 1, 39, 2, 8, 126.58, 303.8, -1, 1, 40, 2, 8, 329.11, 303.8, 18, 1, 41, 1, 1, 208.86, 6.33, -1, 1, 42, 1, 1, 284.81, 50.63, -1, 1, 43, 1, 1, 132.91, 12.66, -1, 1, 44, 1, 6, 322.78, 126.58, -1, 1, 45, 1, 6, 392.41, 132.91, -1, 1, 46, 1, 5, 367.09, 126.58, -1, 1], [0, 2, 8, 126.58, 164.56, -2, 1, 1, 1, 8, 348.1, 240.51, -2, 1, 2, 1, 8, 373.42, 164.56, -2, 1, 3, 1, 8, 113.92, 164.56, -2, 1, 4, 3, 4, 208.86, 101.27, -2, 1, 5, 3, 4, 227.85, 75.95, -2, 1, 6, 0, 7, 196.2, 126.58, -2, 1, 7, 0, 7, 227.85, 139.24, 17, 1, 8, 0, 7, 234.18, 139.24, -2, 1, 9, 0, 7, 259.49, 126.58, -2, 1, 10, 0, 7, 272.15, 126.58, -2, 1, 11, 0, 7, 272.15, 126.58, -2, 1, 12, 0, 7, 240.51, 139.24, -2, 1, 13, 0, 7, 183.54, 126.58, -2, 1, 14, 1, 4, 246.84, 88.61, -2, 1, 15, 1, 2, 202.53, 63.29, -2, 1, 16, 1, 2, 221.52, 50.63, -2, 1, 17, 1, 2, 246.84, 56.96, -2, 1, 18, 1, 8, 405.06, 215.19, 0, 1, 19, 1, 2, 462.03, 164.56, -2, 1, 20, 1, 2, 417.72, 164.56, -2, 1, 21, 1, 2, 430.38, 196.2, -2, 1, 22, 1, 2, 430.38, 177.22, -2, 1, 23, 1, 8, 424.05, 145.57, -2, 1, 24, 1, 8, 405.06, 253.16, -2, 1, 25, 1, 8, 417.72, 253.16, -2, 1, 26, 1, 8, 449.37, 253.16, -2, 1, 27, 1, 8, 462.03, 215.19, -2, 1, 28, 1, 5, 31.65, 253.16, 9, 1, 29, 1, 3, 0, 202.53, -2, 1, 30, 1, 2, 37.97, 183.54, -2, 1, 31, 1, 3, 44.3, 177.22, -2, 1, 32, 1, 0, 75.95, 151.9, -2, 1, 33, 1, 3, 158.23, 310.13, 1, 1, 34, 1, 4, 316.46, 310.13, -2, 1, 35, 1, 4, 316.46, 316.46, -2, 1, 36, 1, 4, 316.46, 322.78, -2, 1, 37, 1, 4, 316.46, 329.11, -2, 1, 38, 1, 4, 316.46, 335.44, -2, 1, 39, 1, 4, 316.46, 341.77, -2, 1, 40, 1, 4, 316.46, 348.1, -2, 1, 41, 1, 4, 145.57, 348.1, -2, 1, 42, 1, 4, 145.57, 335.44, -2, 1, 43, 1, 4, 145.57, 329.11, -2, 1, 44, 1, 4, 145.57, 316.46, -2, 1, 45, 1, 4, 145.57, 310.13, -2, 1, 46, 1, 4, 145.57, 322.78, -2, 1, 47, 1, 6, 0, 0, 18, 1, 48, 1, 3, 0, 101.27, 19, 1, 49, 1, 3, 246.84, 101.27, 18, 1, 50, 1, 0, 0, 215.19, 13, 1, 51, 1, 0, 82.28, 202.53, 12, 1, 52, 1, 0, 379.75, 202.53, 18, 1, 53, 1, 3, 474.68, 151.9, -2, 1, 54, 1, 0, 417.72, 202.53, 18, 1, 55, 1, 0, 379.75, 303.8, 14, 1, 56, 1, 8, 0, 354.43, 17, 1, 57, 1, 9, 132.91, 259.49, 2, 1], [0, 2, 1, 158.23, 151.9, 13, 1, 1, 2, 1, 158.23, 253.16, -2, 1, 2, 2, 1, 341.77, 246.84, -2, 1, 3, 2, 1, 398.73, 151.9, -2, 1, 4, 2, 1, 253.16, 82.28, 1, 1, 5, 2, 2, 398.73, 208.86, 18, 1, 6, 2, 1, 449.37, 158.23, -2, 1, 7, 2, 1, 474.68, 202.53, -2, 1, 8, 2, 1, 468.35, 158.23, -2, 1, 9, 2, 1, 462.03, 196.2, -2, 1, 10, 2, 1, 398.73, 227.85, -2, 1, 11, 2, 1, 424.05, 291.14, -2, 1, 12, 2, 1, 468.35, 265.82, -2, 1, 13, 2, 2, 82.28, 189.87, 17, 1, 14, 2, 1, 82.28, 139.24, -2, 1, 15, 2, 1, 69.62, 202.53, -2, 1, 16, 2, 1, 69.62, 139.24, 17, 1, 17, 2, 1, 82.28, 265.82, -2, 1, 18, 2, 1, 132.91, 291.14, -2, 1, 19, 2, 6, 0, 0, 18, 1, 20, 2, 6, 367.09, 0, 18, 1, 21, 2, 0, 196.2, 0, 6, 1, 22, 2, 0, 329.11, 139.24, 10, 1, 23, 2, 0, 227.85, 139.24, 10, 1, 24, 2, 0, 360.76, 126.58, -2, 1, 25, 2, 0, 221.52, 126.58, -2, 1, 26, 2, 2, 196.2, 284.81, 18, 1, 27, 2, 2, 0, 0, 18, 1, 28, 2, 2, 0, 202.53, 17, 1, 29, 2, 9, 284.81, 82.28, 19, 1, 30, 2, 9, 44.3, 82.28, 18, 1], [0, 2, 8, 0, 12.66, -2, 0.6, 1, 2, 4, 94.94, 50.63, 9, 1, 2, 2, 3, 177.22, 31.65, 5, 1, 3, 2, 7, 272.15, 31.65, -2, 1, 4, 2, 5, 329.11, 25.32, 0, 1, 5, 2, 2, 329.11, 56.96, 9, 1, 6, 1, 8, 341.77, 88.61, 1, 1, 7, 1, 0, 360.76, 151.9, -2, 1, 8, 1, 2, 398.73, 202.53, -2, 1, 9, 2, 2, 405.06, 259.49, -2, 1, 10, 1, 0, 417.72, 253.16, -2, 1, 11, 2, 7, 436.71, 240.51, -2, 1, 12, 2, 4, 455.7, 234.18, -2, 1, 13, 1, 0, 449.37, 234.18, -2, 1, 14, 1, 0, 430.38, 246.84, 0, 1, 15, 1, 1, 373.42, 145.57, 0, 1, 16, 1, 1, 386.08, 189.87, -2, 1, 17, 1, 0, 373.42, 164.56, -2, 1, 18, 2, 0, 449.37, 12.66, -2, 1, 19, 2, 2, 405.06, 6.33, 18, 1, 20, 2, 2, 322.78, 6.33, -2, 1, 21, 2, 4, 297.47, 132.91, 2, 1, 22, 2, 0, 284.81, 88.61, -1, 1, 23, 2, 5, 113.92, 139.24, 2, 1, 24, 2, 9, 170.89, 94.94, -2, 1, 25, 2, 9, 151.9, 18.99, -2, 1, 26, 2, 9, 75.95, 75.95, -2, 1, 27, 2, 9, 82.28, 151.9, -2, 1, 28, 2, 9, 474.68, 69.62, -2, 1, 29, 2, 9, 493.67, 6.33, -2, 1, 30, 2, 9, 0, 0, -2, 1, 31, 2, 9, 240.51, 0, -2, 1, 32, 3, 2, 189.87, 164.56, 1, 1, 33, 3, 5, 151.9, 170.89, 19, 1, 34, 2, 0, 253.16, 208.86, -2, 1, 35, 2, 0, 246.84, 132.91, -2, 1, 36, 2, 0, 170.89, 132.91, 11, 1, 37, 2, 0, 151.9, 221.52, -2, 1, 38, 3, 5, 208.86, 82.28, 5, 1, 39, 2, 4, 468.35, 120.25, -2, 1, 40, 2, 4, 56.96, 107.59, -2, 1, 41, 2, 4, 227.85, 31.65, -2, 1, 42, 2, 9, 322.78, 227.85, -2, 1, 43, 2, 9, 240.51, 246.84, -2, 1, 44, 2, 9, 183.54, 246.84, -2, 1, 45, 2, 9, 31.65, 240.51, -2, 1, 46, 2, 9, 94.94, 259.49, -2, 1, 47, 2, 9, 360.76, 240.51, -2, 1], [0, 3, 7, 189.87, 101.27, 20, 1, 1, 3, 1, 126.58, 50.63, -1, 1, 2, 2, 2, 63.29, 101.27, -1, 1, 3, 2, 7, 94.94, 50.63, -2, 1, 4, 1, 1, 0, 0, -1, 1, 5, 1, 0, 0, 0, -1, 1, 6, 2, 3, 63.29, 50.63, -2, 1, 7, 2, 1, 63.29, 101.27, -2, 1, 8, 1, 1, 0, 101.27, -1, 1, 9, 2, 3, 0, 202.53, -2, 1, 10, 2, 2, 63.29, 151.9, -2, 1, 11, 3, 1, 126.58, 202.53, -2, 1, 12, 1, 0, 126.58, 0, -2, 1, 13, 2, 2, 189.87, 0, -2, 1, 14, 2, 1, 126.58, 253.16, -1, 1, 15, 2, 2, 0, 202.53, -1, 1, 16, 3, 7, 253.16, 101.27, 20, 1, 17, 3, 1, 253.16, 50.63, -1, 1, 18, 2, 2, 379.75, 101.27, -1, 1, 19, 2, 7, 348.1, 50.63, -2, 1, 20, 1, 1, 443.04, 0, -1, 1, 21, 1, 0, 379.75, 0, -1, 1, 22, 2, 3, 379.75, 50.63, -2, 1, 23, 2, 1, 379.75, 101.27, -2, 1, 24, 1, 1, 443.04, 101.27, -1, 1, 25, 2, 3, 379.75, 202.53, -2, 1, 26, 2, 2, 379.75, 151.9, -2, 1, 27, 3, 1, 253.16, 202.53, -2, 1, 28, 1, 0, 316.46, 0, -2, 1, 29, 2, 2, 253.16, 0, -2, 1, 30, 2, 1, 253.16, 253.16, -1, 1, 31, 2, 2, 379.75, 202.53, -1, 1], [0, 2, 2, 284.81, 94.94, 1, 1, 1, 2, 2, 316.46, 253.16, -2, 1, 2, 2, 7, 398.73, 101.27, -2, 1, 3, 2, 3, 386.08, 253.16, -2, 1, 4, 2, 7, 145.57, 50.63, 20, 1, 5, 2, 4, 6.33, 56.96, 6, 1, 6, 2, 5, 18.99, 221.52, 14, 1, 7, 2, 5, 31.65, 25.32, 14, 1, 8, 2, 5, 259.49, 31.65, 13, 1, 9, 2, 5, 151.9, 284.81, 12, 1, 10, 2, 5, 259.49, 265.82, 11, 1, 11, 2, 5, 443.04, 253.16, 9, 1, 12, 2, 5, 240.51, 132.91, 10, 1, 13, 2, 5, 462.03, 63.29, 11, 1, 14, 2, 3, 329.11, 25.32, -2, 1, 15, 1, 3, 44.3, 221.52, 1, 1, 16, 1, 2, 75.95, 145.57, 18, 1, 17, 1, 2, 221.52, 246.84, 0, 1, 18, 1, 2, 208.86, 12.66, 0, 1, 19, 1, 2, 462.03, 164.56, 0, 1, 20, 1, 1, 88.61, 37.97, -2, 1, 21, 1, 2, 354.43, 291.14, 0, 1, 22, 1, 2, 468.35, 18.99, 0, 1, 23, 1, 2, 6.33, 278.48, 0, 1, 24, 1, 2, 120.25, 310.13, 0, 1, 25, 1, 2, 69.62, 6.33, -2, 1, 26, 1, 2, 0, 18.99, 0, 1, 27, 1, 3, 75.95, 107.59, 2, 1, 28, 2, 5, 12.66, 151.9, 13, 1, 29, 2, 5, 132.91, 0, 8, 1, 30, 2, 0, 215.19, 329.11, -2, 1, 31, 2, 0, 246.84, 322.78, -2, 1, 32, 2, 0, 208.86, 291.14, -2, 1, 33, 2, 0, 240.51, 284.81, -2, 1, 34, 2, 0, 436.71, 310.13, -2, 1, 35, 2, 0, 417.72, 329.11, -2, 1, 36, 2, 0, 474.68, 316.46, -2, 1, 37, 2, 0, 455.7, 341.77, -2, 1, 38, 2, 0, 0, 329.11, -2, 1, 39, 3, 8, 183.54, 158.23, 19, 1, 40, 1, 1, 12.66, 69.62, -2, 1], [0, 1, 8, 316.46, 151.9, 0, 1, 1, 1, 8, 253.16, 158.23, 0, 1, 2, 1, 8, 240.51, 196.2, 0, 1, 3, 1, 8, 297.47, 183.54, 0, 1, 4, 1, 8, 208.86, 158.23, 0, 1, 5, 1, 8, 183.54, 208.86, 0, 1, 6, 1, 8, 335.44, 208.86, 0, 1, 7, 2, 1, 246.84, 139.24, -2, 1, 8, 2, 1, 259.49, 158.23, 3, 1, 9, 2, 1, 234.18, 145.57, 4, 1, 10, 2, 1, 189.87, 177.22, -2, 1, 11, 2, 1, 158.23, 177.22, -2, 1, 12, 2, 1, 227.85, 215.19, -2, 1, 13, 2, 1, 297.47, 208.86, 19, 1, 14, 2, 1, 310.13, 177.22, 2, 1, 15, 2, 1, 316.46, 227.85, -2, 1, 16, 2, 1, 341.77, 164.56, 3, 1, 17, 2, 1, 316.46, 139.24, -2, 1, 18, 2, 1, 335.44, 246.84, 9, 1, 19, 2, 1, 189.87, 240.51, 14, 1, 20, 2, 1, 227.85, 246.84, 10, 1, 21, 2, 1, 316.46, 240.51, -2, 1, 22, 2, 1, 303.8, 240.51, 12, 1, 23, 3, 5, 360.76, 126.58, -1, 1, 24, 3, 5, 373.42, 101.27, 19, 1, 25, 3, 9, 405.06, 101.27, 19, 1, 26, 3, 1, 367.09, 94.94, -1, 1, 27, 3, 1, 373.42, 82.28, -1, 1, 28, 3, 9, 417.72, 37.97, 20, 1, 29, 3, 9, 341.77, 37.97, 20, 1, 30, 1, 7, 468.35, 145.57, 18, 1, 31, 3, 3, 411.39, 145.57, -1, 1, 32, 3, 3, 379.75, 164.56, -1, 1, 33, 3, 3, 37.97, 259.49, 15, 1, 34, 3, 8, 82.28, 63.29, 17, 1, 35, 1, 3, 158.23, 44.3, -1, 1, 36, 1, 3, 132.91, 25.32, -1, 1, 37, 1, 3, 69.62, 25.32, -1, 1, 38, 1, 3, 63.29, 82.28, -2, 1, 39, 1, 3, 424.05, 215.19, 2, 1, 40, 1, 3, 462.03, 208.86, 2, 1, 41, 1, 7, 411.39, 196.2, 19, 1, 42, 1, 7, 455.7, 189.87, 19, 1, 43, 1, 3, 6.33, 6.33, 6, 1, 44, 1, 3, 0, 37.97, 7, 1, 45, 1, 3, 25.32, 50.63, 5, 1, 46, 1, 3, 272.15, 303.8, -2, 1, 47, 1, 4, 227.85, 31.65, -1, 1, 48, 1, 4, 18.99, 0, -1, 1, 49, 1, 4, 170.89, 0, -1, 1, 50, 1, 4, 354.43, 6.33, -1, 1, 51, 1, 4, 443.04, 12.66, -1, 1], [0, 2, 9, 94.94, 177.22, -1, 1, 1, 2, 9, 379.75, 177.22, -1, 1, 2, 2, 9, 0, 50.63, -1, 1, 3, 2, 9, 474.68, 50.63, -1, 1, 4, 2, 9, 234.18, 50.63, -1, 1, 5, 2, 5, 75.95, 6.33, -1, 1, 6, 2, 3, 31.65, 101.27, -1, 1, 7, 1, 0, 25.32, 183.54, 10, 1, 8, 1, 1, 158.23, 189.87, 3, 1, 9, 2, 3, 145.57, 88.61, 2, 1, 10, 1, 6, 31.65, 253.16, 2, 1, 11, 2, 3, 284.81, 177.22, 2, 1, 12, 2, 3, 424.05, 221.52, 10, 1, 13, 3, 5, 379.75, 82.28, 11, 1, 14, 2, 1, 316.46, 56.96, 0, 1, 15, 1, 8, 265.82, 101.27, -2, 1, 16, 1, 2, 183.54, 94.94, -2, 1, 17, 1, 5, 177.22, 265.82, -2, 1, 18, 1, 7, 234.18, 0, 18, 1, 19, 1, 7, 379.75, 145.57, 18, 1, 20, 1, 7, 94.94, 145.57, 18, 1, 21, 1, 7, 474.68, 31.65, 18, 1, 22, 1, 7, 0, 31.65, 18, 1, 23, 1, 0, 139.24, 278.48, -2, 1, 24, 1, 0, 310.13, 253.16, -2, 1, 25, 1, 0, 240.51, 189.87, -2, 1, 26, 1, 0, 170.89, 56.96, -2, 1, 27, 1, 0, 107.59, 88.61, -2, 1, 28, 1, 0, 12.66, 253.16, -2, 1, 29, 1, 0, 462.03, 158.23, -2, 1, 30, 3, 5, 265.82, 278.48, -2, 1, 31, 3, 7, 367.09, 284.81, -2, 1, 32, 3, 3, 379.75, 0, -1, 1, 33, 3, 3, 443.04, 0, -1, 1, 34, 2, 0, 44.3, 322.78, -2, 1, 35, 2, 0, 107.59, 322.78, -2, 1, 36, 2, 0, 215.19, 322.78, -2, 1, 37, 2, 0, 310.13, 322.78, -2, 1, 38, 2, 0, 462.03, 316.46, -2, 1, 39, 2, 0, 164.56, 310.13, -2, 1, 40, 2, 0, 0, 310.13, -2, 1, 41, 2, 4, 227.85, 227.85, 6, 1], [0, 2, 2, 0, 37.97, 18, 1, 1, 2, 1, 75.95, 101.27, -2, 1, 2, 2, 1, 50.63, 120.25, 1, 1, 3, 2, 1, 284.81, 101.27, -2, 1, 4, 2, 1, 177.22, 139.24, -2, 1, 5, 2, 1, 183.54, 132.91, -2, 1, 6, 2, 2, 18.99, 18.99, 13, 1, 7, 2, 2, 0, 120.25, 17, 1, 8, 2, 6, 253.16, 0, -2, 1, 9, 2, 1, 398.73, 139.24, -2, 1, 10, 2, 1, 405.06, 132.91, -2, 1, 11, 2, 1, 164.56, 151.9, 2, 1, 12, 2, 1, 259.49, 126.58, 1, 1, 13, 2, 1, 386.08, 151.9, 2, 1, 14, 2, 6, 31.65, 63.29, -2, 1, 15, 2, 6, 63.29, 88.61, 19, 1, 16, 2, 1, 126.58, 56.96, -2, 1, 17, 2, 1, 221.52, 75.95, -2, 1, 18, 2, 1, 335.44, 56.96, -2, 1, 19, 2, 1, 474.68, 75.95, -2, 1, 20, 2, 6, 31.65, 37.97, -2, 1, 21, 2, 6, 37.97, 18.99, -2, 1, 22, 2, 6, 0, -6.33, -2, 1, 23, 2, 1, 424.05, 50.63, -2, 1, 24, 2, 1, 436.71, 0, -2, 1, 25, 2, 1, 348.1, 6.33, -2, 1, 26, 2, 1, 234.18, 12.66, -2, 1, 27, 2, 1, 145.57, 6.33, -1, 1, 28, 2, 5, 177.22, 202.53, 13, 1, 29, 2, 5, 253.16, 202.53, 12, 1, 30, 2, 6, 158.23, 202.53, 15, 1, 31, 2, 6, 0, 18.99, -2, 1, 32, 2, 6, 0, 37.97, -1, 1, 33, 2, 6, 31.65, 88.61, -1, 1, 34, 2, 1, 139.24, 341.77, 0, 1, 35, 2, 1, 158.23, 341.77, 17, 1, 36, 2, 1, 183.54, 341.77, 15, 1, 37, 2, 1, 202.53, 341.77, 11, 1, 38, 2, 8, 151.9, 341.77, -1, 1, 39, 2, 8, 177.22, 341.77, -1, 1, 40, 2, 8, 215.19, 341.77, -1, 1, 41, 2, 1, 221.52, 341.77, 14, 1, 42, 2, 1, 246.84, 341.77, 15, 1, 43, 2, 1, 272.15, 341.77, 16, 1, 44, 2, 8, 240.51, 341.77, -1, 1, 45, 2, 8, 265.82, 341.77, -1, 1, 46, 2, 1, 291.14, 341.77, 5, 1, 47, 2, 1, 310.13, 341.77, 16, 1, 48, 2, 1, 335.44, 341.77, 7, 1, 49, 2, 8, 303.8, 341.77, -1, 1, 50, 2, 8, 329.11, 341.77, -1, 1, 51, 2, 5, 367.09, 291.14, 0, 1, 52, 2, 5, 379.75, 246.84, 2, 1, 53, 2, 5, 405.06, 284.81, 0, 1, 54, 2, 5, 411.39, 240.51, 1, 1, 55, 2, 5, 443.04, 253.16, 0, 1, 56, 2, 5, 449.37, 215.19, 2, 1, 57, 2, 0, 126.58, 341.77, -2, 1, 58, 2, 7, 126.58, 329.11, 19, 1, 59, 2, 5, 82.28, 278.48, 0, 1, 60, 2, 5, 75.95, 227.85, 2, 1, 61, 2, 5, 12.66, 227.85, 0, 1], [0, 2, 9, 0, 139.24, -2, 1, 1, 2, 9, 94.94, 113.92, -2, 1, 2, 2, 9, 189.87, 101.27, -2, 1, 3, 2, 9, 424.05, 139.24, -2, 1, 4, 2, 9, 360.76, 113.92, -2, 1, 5, 2, 9, 278.48, 101.27, -2, 1, 6, 2, 0, 132.91, 234.18, 14, 1, 7, 2, 0, 189.87, 215.19, 10, 1, 8, 2, 0, 196.2, 246.84, 14, 1, 9, 2, 0, 82.28, 227.85, 0, 1, 10, 2, 7, 145.57, 196.2, 19, 1, 11, 2, 7, 265.82, 221.52, 19, 1, 12, 2, 1, 6.33, 215.19, -1, 1, 13, 2, 1, 12.66, 272.15, -2, 1, 14, 2, 7, 63.29, 265.82, -2, 1, 15, 2, 0, 107.59, 265.82, -2, 1, 16, 2, 5, 0, 246.84, 0, 1, 17, 2, 0, 316.46, 215.19, 11, 1, 18, 2, 0, 367.09, 234.18, 11, 1, 19, 2, 7, 303.8, 272.15, -1, 1, 20, 2, 0, 253.16, 259.49, -2, 1, 21, 2, 0, 335.44, 246.84, 15, 1, 22, 2, 7, 405.06, 272.15, -2, 1, 23, 2, 0, 348.1, 284.81, 10, 1, 24, 2, 7, 151.9, 284.81, -1, 1, 25, 2, 0, 196.2, 291.14, 13, 1, 26, 2, 0, 82.28, 297.47, 0, 1, 27, 2, 7, 31.65, 303.8, -2, 1, 28, 2, 5, 0, 297.47, -2, 1, 29, 2, 0, 272.15, 297.47, -2, 1, 30, 2, 7, 240.51, 303.8, -1, 1, 31, 2, 1, 481.01, 208.86, -1, 1, 32, 2, 5, 462.03, 246.84, 0, 1, 33, 2, 1, 455.7, 284.81, -2, 1, 34, 2, 0, 234.18, 189.87, 5, 1, 35, 2, 0, 386.08, 310.13, 2, 1, 36, 2, 0, 316.46, 310.13, 2, 1, 37, 2, 2, 424.05, 310.13, -2, 1, 38, 2, 2, 6.33, 56.96, 18, 1, 39, 2, 2, 151.9, 37.97, 18, 1, 40, 2, 2, 246.84, 44.3, 15, 1, 41, 2, 2, 354.43, 56.96, 18, 1, 42, 2, 2, 455.7, 88.61, 18, 1, 43, 3, 8, 44.3, 12.66, -1, 1, 44, 3, 8, 63.29, 56.96, -1, 1, 45, 3, 8, 6.33, 88.61, -1, 1, 46, 3, 8, 158.23, 25.32, -1, 1, 47, 3, 8, 139.24, 0, -1, 1, 48, 3, 8, 253.16, 31.65, -1, 1, 49, 3, 8, 474.68, 44.3, -2, 1, 50, 3, 8, 392.41, 44.3, -2, 1, 51, 3, 8, 310.13, 0, -1, 1], [0, 2, 1, 341.77, 158.23, -2, 1, 1, 2, 1, 379.75, 177.22, -2, 1, 2, 2, 1, 373.42, 177.22, -2, 1, 3, 2, 2, 360.76, 189.87, 18, 1, 4, 2, 7, 360.76, 240.51, -2, 1, 5, 2, 7, 405.06, 202.53, -2, 1, 6, 2, 2, 398.73, 253.16, -2, 1, 7, 1, 5, 284.81, 126.58, -2, 1, 8, 1, 5, 449.37, 278.48, -2, 1, 9, 1, 7, 253.16, 101.27, -2, 1, 10, 1, 7, 253.16, 94.94, -2, 1, 11, 1, 7, 234.18, 75.95, -2, 1, 12, 1, 2, 221.52, 63.29, -2, 1, 13, 1, 8, 0, 107.59, 14, 1, 14, 1, 0, 0, 25.32, -2, 1, 15, 2, 2, 37.97, 18.99, -2, 1, 16, 2, 1, 69.62, 56.96, -2, 1, 17, 2, 1, 12.66, 56.96, -2, 1, 18, 1, 8, 126.58, 107.59, 11, 1, 19, 1, 8, 0, 234.18, 13, 1, 20, 1, 8, 0, 335.44, 12, 1, 21, 1, 8, 126.58, 234.18, 9, 1, 22, 1, 8, 126.58, 335.44, 10, 1, 23, 1, 8, 272.15, 145.57, 19, 1, 24, 1, 8, 240.51, 44.3, -1, 1, 25, 1, 8, 246.84, 101.27, -1, 1, 26, 1, 5, 227.85, 0, 1, 1, 27, 1, 1, 6.33, 253.16, 19, 1, 28, 1, 0, 158.23, 303.8, 15, 1, 29, 1, 5, 170.89, 310.13, 1, 1, 30, 1, 0, 132.91, 310.13, 15, 1, 31, 1, 2, 113.92, 303.8, 17, 1, 32, 2, 6, 63.29, 139.24, 18, 1, 33, 2, 6, 82.28, 126.58, -1, 1, 34, 1, 1, 44.3, 151.9, -2, 1, 35, 1, 0, 25.32, 132.91, -2, 1, 36, 1, 1, 63.29, 139.24, -2, 1, 37, 1, 0, 31.65, 126.58, -2, 1, 38, 2, 8, 360.76, 50.63, 17, 1, 39, 2, 6, 329.11, 0, 19, 1, 40, 2, 0, 316.46, 69.62, -1, 1, 41, 2, 0, 265.82, 329.11, 0, 1, 42, 2, 0, 297.47, 329.11, -2, 1, 43, 2, 0, 354.43, 329.11, 0, 1, 44, 2, 0, 278.48, 354.43, -2, 1, 45, 2, 0, 310.13, 354.43, -2, 1, 46, 2, 0, 278.48, 303.8, 0, 1, 47, 2, 0, 246.84, 303.8, 0, 1, 48, 2, 0, 246.84, 354.43, 0, 1, 49, 2, 0, 259.49, 272.15, -2, 1, 50, 2, 0, 259.49, 189.87, -2, 1, 51, 2, 0, 272.15, 234.18, -2, 1, 52, 1, 6, 126.58, 44.3, -2, 1, 53, 2, 5, 158.23, 25.32, -2, 1, 54, 2, 5, 126.58, 25.32, -2, 1, 55, 1, 7, 158.23, 0, -2, 1, 56, 1, 7, 126.58, 0, -2, 1], [0, 1, 1, 208.86, 132.91, 1, 1, 1, 3, 5, 145.57, 0, -1, 1, 2, 1, 1, 177.22, 0, -1, 1, 3, 3, 5, 75.95, 158.23, 15, 1, 4, 3, 4, 0, 0, -1, 1, 5, 3, 5, 183.54, 234.18, 1, 1, 6, 3, 4, 132.91, 177.22, 2, 1, 7, 3, 1, 6.33, 170.89, -1, 1, 8, 3, 5, 0, 44.3, -1, 1, 9, 3, 5, 189.87, 69.62, -1, 1, 10, 3, 3, 12.66, 265.82, 10, 1, 11, 3, 1, 113.92, 329.11, -2, 1, 12, 3, 4, 126.58, 284.81, 0, 1, 13, 3, 4, 208.86, 284.81, 0, 1, 14, 3, 5, 56.96, 335.44, 9, 1, 15, 1, 1, 253.16, 132.91, 1, 1, 16, 3, 5, 278.48, 0, -1, 1, 17, 1, 1, 259.49, 0, -2, 1, 18, 3, 5, 335.44, 158.23, 16, 1, 19, 3, 4, 386.08, 0, -1, 1, 20, 3, 5, 253.16, 234.18, 1, 1, 21, 3, 4, 278.48, 177.22, 2, 1, 22, 3, 1, 449.37, 170.89, -2, 1, 23, 3, 5, 455.7, 44.3, -1, 1, 24, 3, 5, 253.16, 69.62, -1, 1, 25, 3, 3, 398.73, 265.82, 11, 1, 26, 3, 1, 253.16, 329.11, -2, 1, 27, 3, 4, 341.77, 284.81, 0, 1, 28, 3, 4, 259.49, 284.81, 0, 1, 29, 3, 5, 411.39, 335.44, 9, 1], [0, 3, 1, 164.56, 101.27, 17, 1, 1, 3, 1, 37.97, 101.27, 15, 1, 2, 2, 5, 113.92, 75.95, 18, 1, 3, 1, 2, 18.99, 31.65, 18, 1, 4, 1, 2, 158.23, 31.65, 19, 1, 5, 1, 0, 0, 272.15, 0, 1, 6, 1, 0, 18.99, 278.48, 3, 1, 7, 1, 0, 37.97, 297.47, 11, 1, 8, 1, 0, 69.62, 297.47, 15, 1, 9, 1, 0, 82.28, 310.13, 17, 1, 10, 1, 0, 107.59, 310.13, 16, 1, 11, 1, 0, 139.24, 303.8, 13, 1, 12, 1, 0, 177.22, 291.14, 9, 1, 13, 1, 0, 196.2, 265.82, 6, 1, 14, 1, 0, 215.19, 253.16, 5, 1, 15, 3, 4, 0, 215.19, 0, 1, 16, 3, 4, 82.28, 215.19, 0, 1, 17, 3, 4, 164.56, 221.52, 3, 1, 18, 3, 4, 94.94, 259.49, 4, 1, 19, 3, 4, 63.29, 246.84, 15, 1, 20, 1, 3, 31.65, 310.13, -2, 1, 21, 1, 3, 101.27, 341.77, -2, 1, 22, 1, 3, 183.54, 310.13, -2, 1, 23, 1, 7, 101.27, 145.57, -2, 1, 24, 1, 4, 132.91, 265.82, -2, 1, 25, 3, 1, 253.16, 101.27, -2, 1, 26, 3, 1, 398.73, 101.27, -2, 1, 27, 2, 5, 341.77, 75.95, 18, 1, 28, 1, 2, 424.05, 31.65, -2, 1, 29, 1, 2, 284.81, 31.65, -2, 1, 30, 1, 0, 481.01, 272.15, 5, 1, 31, 1, 0, 455.7, 278.48, 1, 1, 32, 1, 0, 436.71, 297.47, 5, 1, 33, 1, 0, 411.39, 297.47, -2, 1, 34, 1, 0, 386.08, 310.13, 6, 1, 35, 1, 0, 354.43, 310.13, 1, 1, 36, 1, 0, 322.78, 303.8, 0, 1, 37, 1, 0, 291.14, 291.14, -2, 1, 38, 1, 0, 278.48, 265.82, -2, 1, 39, 1, 0, 259.49, 253.16, 3, 1, 40, 3, 4, 443.04, 215.19, -1, 1, 41, 3, 4, 360.76, 215.19, -1, 1, 42, 3, 4, 316.46, 221.52, -1, 1, 43, 3, 4, 392.41, 259.49, -1, 1, 44, 3, 4, 430.38, 246.84, -1, 1, 45, 1, 3, 455.7, 310.13, -2, 1, 46, 1, 3, 379.75, 341.77, 0, 1, 47, 1, 3, 297.47, 310.13, 0, 1, 48, 1, 7, 329.11, 145.57, -1, 1, 49, 1, 4, 348.1, 265.82, -1, 1, 50, 1, 0, 227.85, 240.51, -2, 1, 51, 1, 0, 253.16, 240.51, 0, 1], [0, 1, 9, 0, 259.49, -2, 1, 1, 0, 9, 0, 234.18, -1, 1, 2, 1, 0, 0, 170.89, -1, 1, 3, 1, 1, 63.29, 170.89, -1, 1, 4, 1, 0, 126.58, 170.89, -2, 1, 5, 1, 1, 0, 259.49, -1, 1, 6, 1, 0, 0, 322.78, -1, 1, 7, 1, 1, 63.29, 322.78, -1, 1, 8, 1, 0, 126.58, 322.78, -2, 1, 9, 1, 1, 189.87, 322.78, -1, 1, 10, 1, 0, 253.16, 316.46, -1, 1, 11, 1, 1, 189.87, 170.89, -1, 1, 12, 0, 8, 360.76, 56.96, -2, 1, 13, 0, 8, 341.77, 88.61, -2, 1, 14, 2, 1, 329.11, 113.92, -2, 1, 15, 2, 1, 335.44, 145.57, -2, 1, 16, 2, 1, 354.43, 126.58, -2, 1, 17, 2, 1, 322.78, 189.87, -2, 1, 18, 2, 1, 310.13, 151.9, -2, 1, 19, 2, 1, 297.47, 183.54, -2, 1, 20, 2, 1, 322.78, 164.56, -2, 1, 21, 2, 1, 297.47, 215.19, -2, 1, 22, 1, 0, 253.16, 170.89, -2, 1, 23, 1, 1, 316.46, 170.89, -1, 1, 24, 1, 1, 0, 101.27, -1, 1, 25, 1, 0, 63.29, 101.27, -2, 1, 26, 1, 1, 126.58, 101.27, -2, 1, 27, 1, 0, 189.87, 101.27, -1, 1, 28, 1, 1, 253.16, 101.27, -2, 1, 29, 1, 0, 316.46, 101.27, -2, 1, 30, 1, 0, 335.44, 101.27, -2, 1, 31, 1, 1, 316.46, 303.8, -1, 1, 32, 1, 0, 335.44, 253.16, -2, 1, 33, 1, 0, 0, 37.97, -1, 1, 34, 1, 1, 63.29, 37.97, -1, 1, 35, 1, 0, 126.58, 37.97, -1, 1, 36, 1, 1, 0, 0, -1, 1, 37, 1, 0, 63.29, 0, -1, 1, 38, 1, 1, 126.58, 0, -1, 1, 39, 1, 1, 189.87, 37.97, -1, 1, 40, 1, 0, 189.87, 0, -1, 1, 41, 1, 0, 253.16, 37.97, -1, 1, 42, 1, 1, 316.46, 37.97, -1, 1, 43, 1, 1, 253.16, 0, -1, 1, 44, 1, 0, 316.46, 0, -1, 1, 45, 1, 1, 379.75, 0, -1, 1, 46, 1, 0, 443.04, 0, -1, 1, 47, 1, 0, 379.75, 37.97, -1, 1, 48, 1, 0, 373.42, 75.95, -1, 1, 49, 1, 1, 443.04, 37.97, -1, 1, 50, 1, 1, 379.75, 101.27, -1, 1, 51, 1, 0, 379.75, 170.89, -1, 1, 52, 1, 1, 379.75, 234.18, -2, 1, 53, 1, 0, 379.75, 303.8, -1, 1, 54, 1, 0, 443.04, 101.27, -1, 1, 55, 1, 8, 443.04, 284.81, -1, 1, 56, 1, 6, 443.04, 259.49, -1, 1, 57, 1, 0, 474.68, 101.27, -1, 1, 58, 1, 1, 443.04, 170.89, -1, 1, 59, 1, 0, 443.04, 234.18, -2, 1, 60, 1, 1, 443.04, 303.8, -1, 1, 61, 1, 1, 487.34, 170.89, -2, 1, 62, 1, 0, 487.34, 234.18, -1, 1]];
public static const iLevelAuthors:Array = ["CASPER", "XSILOTE", "MIKKEL", "MIKKEL", "MIKKEL", "WR", "LENA", "NICKY", "AMEER", "AMEER", "SONIC5", "CURRYFRANK", "NEGO", "NEGO", "ZEXI", "CLAUDE", "PAREL", "THAILE", "UH", "ANDY", "UH", "DORK BUNNY", "CIA", "KONTGAT", "MIRANDA", "MIRNA", "MIKKEL", "MIKKEL", "MIRNA", "JULIETTE", "JG", "BC S", "SJN", "PAREL", "PAREL", "SWIFFER", "NEPZU", "MARKUS", "SJN", "KARIN", "FLU", "KATE", "LADYUWE", "STUBER", "SALLY", "SALLY", "SALLY", "ANUSIACEK", "SABRINA", "CLIENU", "HILDA", "HILDA", "Y", "FIN", "MISIA", "MISIA", "ANTO67", "NETIKA", "MARGIT", "MARGIT", "MARGIT", "MARGIT", "MARGIT", "MARGIT", "MARGIT", "MARGIT", "THIRZA", "AELITA", "OLD SPRING", "OLD SPRING", "PPT", "MARGIT", "IKA", "DENNIS", "CHARLI", "KILLIE", "781", "RENEE", "MR HITZ", "COLOGNE", "LISA", "OP", "VICKY", "MISIA", "CAS", "LILY", "JOJO", "NUTA", "NUTA", "ALAMERDE", "YURA", "RAINBOW", "RAINBOW", "RAINBOW", "RAINBOW", "RAINBOW", "RAINBOW", "RAINBOW", "RAINBOW", "RAINBOW"];
public static function buildOptimizationArray(_arg1:Array):Array{
var _local2:Array;
var _local3:int;
_local2 = new Array();
_local3 = 0;
while (_local3 < _arg1.length) {
if (!_local2[_arg1[(_local3 + 1)]]){
_local2[_arg1[(_local3 + 1)]] = new Array();
};
if (((!(_local2[_arg1[(_local3 + 1)]][_arg1[_local3]])) || ((_local2[_arg1[(_local3 + 1)]][_arg1[_local3]] < (_arg1[(_local3 + 2)] + 1))))){
_local2[_arg1[(_local3 + 1)]][_arg1[_local3]] = (_arg1[(_local3 + 2)] + 1);
};
_local3 = (_local3 + 7);
};
return (_local2);
}
}
}//package RES.GAME
Section 135
//CLoadingDisplayer (RES.GAME.CLoadingDisplayer)
package RES.GAME {
import ENGINE.DISPLAY.*;
import flash.events.*;
import ENGINE.INTERFACE.*;
public class CLoadingDisplayer extends OWindow {
private var iMask:OSprite;
public var iProgress:OBitmap;
public function CLoadingDisplayer(){
super(Hitz2L.CLoadingDisplayer, OInterface.iDefAnimators);
iMask = new OSprite();
iMask.graphics.beginFill(0);
iMask.graphics.drawRect(0, 0, iProgress.width, iProgress.height);
iMask.graphics.endFill();
iMask.prX = iProgress.prX;
iMask.prY = iProgress.prY;
iMask.scaleX = 0;
iProgress.mask = iMask;
this.addChild(iMask);
}
public function setProgess(_arg1:int):void{
iMask.scaleX = (_arg1 / 100);
}
override public function OnEnterFrame(_arg1:Event):void{
super.OnEnterFrame(_arg1);
}
}
}//package RES.GAME
Section 136
//CPolygonBreaker (RES.GAME.CPolygonBreaker)
package RES.GAME {
import flash.geom.*;
public class CPolygonBreaker {
public static function covertReenteringPolygonToConvex(_arg1:Array):Array{
var _local2:Array;
var _local3:int;
var _local4:Boolean;
var _local5:int;
var _local6:int;
var _local7:Array;
_local2 = new Array();
_local2.push(_arg1);
_local3 = 0;
while (_local3 < 10) {
_local3++;
_local4 = true;
_local5 = 0;
while (_local5 < _local2.length) {
_local6 = isPolygonReentering(_local2[_local5]);
if (_local6 >= 0){
_local7 = cutPolygon(_local2[_local5], _local6, _local2);
if (!_local7){
return (_local2);
};
_local2[_local5] = _local7[0];
_local2.push(_local7[1]);
_local4 = false;
break;
};
_local5++;
};
if (_local4){
break;
};
if (_local2.length > 10){
return (_local2);
};
};
return (_local2);
}
public static function breakConvexPolygon(_arg1:Array):Array{
var _local2:Array;
var _local3:Array;
var _local4:int;
var _local5:Point;
var _local6:Number;
var _local7:int;
_local2 = getPolygonWH(_arg1);
_local3 = new Array();
_local4 = 0;
while (_local4 < 10) {
_local5 = getPolygonCenter(_arg1);
_local6 = (Math.min(_local2[0], _local2[1]) / 10);
_local5.x = (_local5.x + (_local6 * ((Math.random() * 4) - 2)));
_local5.y = (_local5.y + (_local6 * ((Math.random() * 4) - 2)));
if (CGeom.isPointInPolygon(_arg1, _local5)){
_local7 = 0;
while (_local7 < (_arg1.length - 1)) {
_local3.push(CGeom.convertPolygonToClockWise([_arg1[_local7], _local5, _arg1[(_local7 + 1)], _arg1[_local7]]));
_local7++;
};
break;
};
_local4++;
};
if (_local4 >= 10){
return ([_arg1]);
};
return (_local3);
}
public static function getPolygonWH(_arg1:Array):Array{
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:int;
_local2 = _arg1[0].x;
_local3 = _arg1[0].x;
_local4 = _arg1[0].y;
_local5 = _arg1[0].y;
_local6 = 1;
while (_local6 < _arg1.length) {
if (_local2 > _arg1[_local6].x){
_local2 = _arg1[_local6].x;
};
if (_local4 > _arg1[_local6].y){
_local4 = _arg1[_local6].y;
};
if (_local3 < _arg1[_local6].x){
_local3 = _arg1[_local6].x;
};
if (_local5 < _arg1[_local6].y){
_local5 = _arg1[_local6].y;
};
_local6++;
};
return ([(_local3 - _local2), (_local5 - _local4), _local2, _local3, _local4, _local5]);
}
public static function cutPolygon(_arg1:Array, _arg2:int, _arg3:Array):Array{
var _local4:Array;
var _local5:int;
var _local6:int;
var _local7:int;
var _local8:int;
var _local9:int;
var _local10:Array;
var _local11:int;
var _local12:Point;
var _local13:Point;
var _local14:Boolean;
var _local15:int;
var _local16:Array;
var _local17:Point;
_local4 = new Array();
_local6 = ((_arg2 > 0)) ? (_arg2 - 1) : (_arg1.length - 2);
_local7 = ((_arg2 < (_arg1.length - 1))) ? (_arg2 + 1) : 1;
_local9 = 0;
while (_local9 < (_arg1.length - 1)) {
if (((((_arg1[_local9].equals(_arg1[_arg2])) || (_arg1[_local9].equals(_arg1[_local7])))) || (_arg1[_local9].equals(_arg1[_local6])))){
} else {
_local10 = CGeom.getSegmentByTwoPoints(_arg1[_arg2], _arg1[_local9]);
_local11 = ((_local9 > 0)) ? (_local9 - 1) : (_arg1.length - 2);
_local12 = _local10[4].subtract(_local10[3]);
_local13 = _arg1[_local9].subtract(_arg1[_local11]);
if (((_local12.x * _local13.y) - (_local13.x * _local12.y)) <= 0){
} else {
_local14 = true;
_local8 = 0;
while (_local8 < _arg3.length) {
_local15 = 0;
while (_local15 < (_arg3[_local8].length - 1)) {
_local16 = CGeom.getSegmentByTwoPoints(_arg3[_local8][_local15], _arg3[_local8][(_local15 + 1)]);
_local17 = CGeom.getSegmentsIntersectionPoint(_local10, _local16);
if (_local17){
if ((((Math.abs((_local17.x - _arg1[_local9].x)) < 1E-5)) && ((Math.abs((_local17.y - _arg1[_local9].y)) < 1E-5)))){
} else {
if ((((Math.abs((_local17.x - _arg1[_arg2].x)) < 1E-5)) && ((Math.abs((_local17.y - _arg1[_arg2].y)) < 1E-5)))){
} else {
_local14 = false;
break;
};
};
};
_local15++;
};
if (!_local14){
break;
};
_local8++;
};
if (_local14){
_local4[0] = new Array();
_local4[1] = new Array();
_local15 = 0;
while (_local15 <= Math.min(_arg2, _local9)) {
_local4[0].push(_arg1[_local15]);
_local15++;
};
_local15 = Math.max(_arg2, _local9);
while (_local15 < _arg1.length) {
_local4[0].push(_arg1[_local15]);
_local15++;
};
_local4[0] = CGeom.convertPolygonToClockWise(_local4[0]);
_local15 = Math.min(_arg2, _local9);
while (_local15 <= Math.max(_arg2, _local9)) {
_local4[1].push(_arg1[_local15]);
_local15++;
};
_local4[1].push(_arg1[Math.min(_arg2, _local9)]);
_local4[1] = CGeom.convertPolygonToClockWise(_local4[1]);
return (_local4);
};
};
};
_local9++;
};
return (null);
}
public static function getPolygonCenter(_arg1:Array):Point{
var _local2:Number;
var _local3:Number;
var _local4:int;
_local2 = (_arg1[1].x / (_arg1.length - 1));
_local3 = (_arg1[1].y / (_arg1.length - 1));
_local4 = 2;
while (_local4 < _arg1.length) {
_local2 = (_local2 + (_arg1[_local4].x / (_arg1.length - 1)));
_local3 = (_local3 + (_arg1[_local4].y / (_arg1.length - 1)));
_local4++;
};
return (new Point(_local2, _local3));
}
public static function breakPolygon(_arg1:Array):Array{
var _local2:Array;
var _local3:int;
var _local4:Number;
var _local5:int;
var _local6:int;
var _local7:int;
var _local8:Array;
var _local9:int;
if (isPolygonReentering(_arg1)){
_local2 = covertReenteringPolygonToConvex(_arg1);
} else {
_local2 = [_arg1];
};
_local3 = 0;
while (_local2.length < 3) {
_local4 = 0;
_local5 = 0;
_local6 = _local2.length;
_local7 = 0;
while (_local7 < _local6) {
_local3++;
_local8 = breakConvexPolygon(_local2[_local7]);
_local2[_local7] = _local8[0];
_local9 = 1;
while (_local9 < _local8.length) {
_local2.push(_local8[_local9]);
_local9++;
};
if ((((((((_local2.length > 4)) || ((((_local3 > 100)) && ((_local2.length > 3)))))) || ((((_local3 > 200)) && ((_local2.length > 1)))))) || ((((_local3 > 500)) && ((_local2.length == 1)))))){
break;
};
_local7++;
};
if ((((((((_local2.length > 4)) || ((((_local3 > 100)) && ((_local2.length > 3)))))) || ((((_local3 > 200)) && ((_local2.length > 1)))))) || ((((_local3 > 500)) && ((_local2.length == 1)))))){
break;
};
};
return (_local2);
}
public static function isPolygonReentering(_arg1:Array):int{
var _local2:int;
var _local3:int;
var _local4:Point;
var _local5:Point;
_local2 = 0;
while (_local2 < (_arg1.length - 1)) {
_local3 = (((_local2 + 2) == _arg1.length)) ? 1 : (_local2 + 2);
_local4 = new Point((_arg1[(_local2 + 1)].x - _arg1[_local2].x), (_arg1[(_local2 + 1)].y - _arg1[_local2].y));
_local5 = new Point((_arg1[_local3].x - _arg1[(_local2 + 1)].x), (_arg1[_local3].y - _arg1[(_local2 + 1)].y));
if (((_local4.x * _local5.y) - (_local5.x * _local4.y)) < 0){
return ((_local2 + 1));
};
_local2++;
};
return (-1);
}
}
}//package RES.GAME
Section 137
//OInfoObject (RES.OBJECTS.OInfoObject)
package RES.OBJECTS {
import flash.events.*;
import ENGINE.INTERFACE.*;
public class OInfoObject extends OIObject {
public function OInfoObject(_arg1:Array, _arg2:Array=null){
super(_arg1, _arg2);
}
override public function OnPress(_arg1:Event, _arg2):void{
(this.parent as OIObject).OnPress(_arg1, _arg2);
}
}
}//package RES.OBJECTS
Section 138
//CBannersPanel (RES.PANELS.CBannersPanel)
package RES.PANELS {
import flash.events.*;
import ENGINE.INTERFACE.*;
import flash.utils.*;
import flash.net.*;
import RES.OBJECTS.*;
public class CBannersPanel extends OIObject {
private var iTimer:int;
private var iMode:int;
private var iInfo:OInfoObject;
public static const stOnline:int = 1;
public static const stNone:int = 0;
public static const stOffline:int = 2;
public function CBannersPanel(){
super(null);
}
private function ShowConnect():void{
var _local1:String;
_local1 = Hitz2L.COLORS1[((this.iMode + 2) % Hitz2L.COLORS1.length)];
Hitz2L.OWInfoPConnect[0][3] = _local1;
Hitz2L.OWInfoPConnect[1][3] = _local1;
Hitz2L.OWInfoPConnect[1][4] = _local1;
switch ((this.iMode % 3)){
case 0:
Hitz2L.OWInfoPConnect[0][4] = Hitz2L.strConnect1;
Hitz2L.OWInfoPConnect[1][6] = Hitz2L.strPlayOnline;
break;
case 1:
Hitz2L.OWInfoPConnect[0][4] = Hitz2L.strConnect2;
Hitz2L.OWInfoPConnect[1][6] = Hitz2L.strMoreGames;
break;
case 2:
Hitz2L.OWInfoPConnect[0][4] = Hitz2L.strConnect3;
Hitz2L.OWInfoPConnect[1][6] = Hitz2L.strSendMail;
break;
};
this.InitObject(Hitz2L.OWInfoPConnect);
}
private function ShowUserNotFound():void{
var _local1:String;
var _local2:String;
var _local3:Array;
var _local4:Array;
_local1 = Hitz2L.iMP.prOpponentTurn;
Hitz2L.iMP.ClearOpponentTurn(true);
Hitz2L.iMP.Turn(["rdr"]);
if (_local1){
_local3 = _local1.split(/,/);
if (_local3.length == 2){
return;
};
};
_local2 = Hitz2L.COLORS1[Math.round((Math.random() * (Hitz2L.COLORS1.length - 1)))];
Hitz2L.OWInfoPUserNotFound[0][3] = _local2;
Hitz2L.OWInfoPUserNotFound[1][3] = _local2;
switch ((this.iMode % 5)){
case 0:
Hitz2L.OWInfoPUserNotFound[0][4] = Hitz2L.iMP.prUsersCount;
Hitz2L.OWInfoPUserNotFound[0][6] = 200;
Hitz2L.OWInfoPUserNotFound[1][6] = (Hitz2L.OWInfoPUserNotFound[0][6] + 70);
Hitz2L.OWInfoPUserNotFound[1][4] = Hitz2L.strPlayersOnline1;
break;
default:
if (!_local1){
return;
};
_local4 = _local1.split(/,/);
Hitz2L.OWInfoPUserNotFound[0][4] = ((int(_local4[0]) + 1).toString() + Hitz2L.strPlace);
Hitz2L.OWInfoPUserNotFound[0][6] = 180;
Hitz2L.OWInfoPUserNotFound[1][6] = (Hitz2L.OWInfoPUserNotFound[0][6] + 90);
Hitz2L.OWInfoPUserNotFound[1][4] = ((_local4[1] + Hitz2L.strHasReiting) + _local4[2]);
break;
};
this.InitObject(Hitz2L.OWInfoPUserNotFound);
}
override public function OnPress(_arg1:Event, _arg2):void{
var _local3:String;
var _local4:URLRequest;
switch ((this.iMode % 3)){
case 0:
_local3 = Hitz2L.strConnect1URL;
break;
case 1:
_local3 = Hitz2L.strConnect2URL;
break;
case 2:
_local3 = Hitz2L.strConnect3URL;
break;
};
_local4 = new URLRequest(_local3);
navigateToURL(_local4);
}
override public function Free():void{
this.iInfo = null;
super.Free();
}
private function InitObject(_arg1:Array):void{
if (this.iInfo){
this.removeChild(this.iInfo);
this.iInfo.Free();
this.iInfo = null;
};
if (!_arg1){
return;
};
this.iInfo = new OInfoObject(_arg1, OInterface.iDefSlowAnimators);
this.addChild(this.iInfo);
this.iInfo.SetVisible(true);
}
override public function OnEnterFrame(_arg1:Event):void{
var _local2:int;
super.OnEnterFrame(_arg1);
switch (this.iState){
case stOnline:
_local2 = getTimer();
if ((_local2 - this.iTimer) >= 30000){
this.iMode++;
this.ShowConnect();
this.iTimer = _local2;
};
break;
case stOffline:
_local2 = getTimer();
if ((_local2 - this.iTimer) >= 30000){
this.iMode++;
this.ShowUserNotFound();
this.iTimer = _local2;
};
break;
};
}
override public function set State(_arg1:int):void{
this.iState = _arg1;
switch (this.iState){
case stNone:
this.InitObject(null);
break;
case stOnline:
this.iMode = 0;
this.ShowConnect();
this.iTimer = getTimer();
break;
case stOffline:
this.iMode = 0;
this.ShowUserNotFound();
this.iTimer = getTimer();
break;
};
}
}
}//package RES.PANELS
Section 139
//OWChoosePlayer (RES.WINDOWS.OWChoosePlayer)
package RES.WINDOWS {
import flash.events.*;
import ENGINE.INTERFACE.*;
public class OWChoosePlayer extends ODialog {
public var iDelete:OButton;
public var iNew:OButton;
public var iCancel:OButton;
private var iData;
public var iListBox:OListBox;
public var iAccept:OButton;
private var iCurPlayer:String;
public function OWChoosePlayer(){
super(Hitz2L.OWChoosePlayer);
}
override public function Init():void{
super.Init();
this.iData = Hitz2L.iGAME.prPlayersData;
this.iCurPlayer = Hitz2L.iGAME.prPlayerName;
this.iListBox.SetCurrentElement(Hitz2L.iGAME.prPlayerName, Hitz2L.iGAME.prPlayerNames);
}
override public function set prActive(_arg1:Boolean):void{
if (_arg1){
this.iListBox.SetCurrentElement(Hitz2L.iGAME.prPlayerName, Hitz2L.iGAME.prPlayerNames);
};
super.prActive = _arg1;
}
override public function OnPress(_arg1:Event, _arg2):void{
if (!this.prMouseEnabled){
return;
};
if (_arg2 == this.iNew){
(this.parent as OWindow).OnPress(null, Hitz2L.miEnterNewName);
this.prActive = false;
return;
};
if (_arg2 == this.iDelete){
(this.parent as OWindow).OnPress(null, Hitz2L.miDeletePlayerConfirm);
this.prActive = false;
return;
};
if (_arg2 == this.iCancel){
Hitz2L.iGAME.prPlayersData = this.iData;
Hitz2L.iGAME.prPlayerName = this.iCurPlayer;
(this.parent as OWindow).OnPress(null, Hitz2L.miMenu);
this.prVisible = false;
return;
};
if (_arg2 == this.iAccept){
if (Hitz2L.iMP.isConnected){
Hitz2L.iMP.disconnect();
};
(this.parent as OWindow).OnPress(null, Hitz2L.miMenu);
this.prVisible = false;
return;
};
if ((((_arg2 == this.iListBox)) && (!((Hitz2L.iGAME.prPlayerName == this.iListBox.prCurrentLBParam))))){
Hitz2L.iGAME.prPlayerName = this.iListBox.prCurrentLBParam;
return;
};
}
override public function Free():void{
this.iListBox = null;
this.iNew = null;
this.iDelete = null;
this.iAccept = null;
this.iCancel = null;
super.Free();
}
}
}//package RES.WINDOWS
Section 140
//OWConfirmation (RES.WINDOWS.OWConfirmation)
package RES.WINDOWS {
import flash.events.*;
import ENGINE.INTERFACE.*;
public class OWConfirmation extends ODialog {
private var iGame:OWGame;
public var iNo:OButton;
private var restartFlag:Boolean;
public var iYes:OButton;
public function OWConfirmation(_arg1:OWGame){
super(Hitz2L.OWConfirmation);
iGame = _arg1;
}
override public function OnPress(_arg1:Event, _arg2):void{
this.prVisible = false;
restartFlag = (_arg2 == iYes);
}
override public function Free():void{
if (restartFlag){
iGame.State = OWGame.stRestart;
};
super.Free();
}
}
}//package RES.WINDOWS
Section 141
//OWEditor (RES.WINDOWS.OWEditor)
package RES.WINDOWS {
import flash.events.*;
import ENGINE.INTERFACE.*;
import RES.EDITOR.*;
import RES.GAME.*;
public class OWEditor extends OWindow {
private var iTestGame:OWGameTest;
private var iEditorPart:CEditor;
private var iCachedInfo:Array;
private var iWaitEditorClose:Boolean;
private var iWaitGameClose:Boolean;
private var iMonitoringPublisher:Boolean;
private var iWaitClose:Boolean;
private var iPublisher:OWPublisher;
public function OWEditor(){
super(null, OInterface.iDefAnimators);
iEditorPart = new CEditor(this);
this.addChild(iEditorPart);
iWaitEditorClose = false;
iWaitGameClose = false;
iMonitoringPublisher = false;
}
public function testLevel():void{
Hitz2L.iGAME.Start();
iWaitEditorClose = true;
}
private function startTest():void{
var _local1:Array;
iCachedInfo = iEditorPart.getEditorInfo();
_local1 = getLevelArray();
iTestGame = new OWGameTest(_local1, this);
this.addChild(iTestGame);
iEditorPart.Free();
this.removeChild(iEditorPart);
iEditorPart = null;
iWaitEditorClose = false;
}
private function getLevelArray():Array{
var _local1:Array;
var _local2:int;
_local1 = iEditorPart.iGrid.getLevel();
_local1.push(CLevels.iPlatforms, CLevels.iPlatformsInfo);
_local2 = 0;
while (_local2 < iEditorPart.iObstaclesInfo.length) {
_local1[1][((_local2 * 7) + 1)] = iEditorPart.iObstaclesInfo[_local2][0];
_local1[1][((_local2 * 7) + 2)] = iEditorPart.iObstaclesInfo[_local2][1];
_local1[1][((_local2 * 7) + 5)] = iEditorPart.iObstaclesInfo[_local2][2];
_local1[1][((_local2 * 7) + 6)] = iEditorPart.iObstaclesInfo[_local2][3];
_local2++;
};
return (_local1);
}
public function waitClose():void{
iWaitClose = true;
}
public function publishLevel():void{
iMonitoringPublisher = true;
iPublisher = new OWPublisher(getLevelStr());
this.addChild(iPublisher);
}
public function showEditor():void{
iWaitGameClose = true;
}
override public function OnEnterFrame(_arg1:Event):void{
if (iMonitoringPublisher){
if (((((iPublisher) && ((iPublisher.prActive == false)))) && (!(iPublisher.prAnimation)))){
iEditorPart.prActive = true;
iMonitoringPublisher = false;
};
};
if (((iWaitClose) && (!(iEditorPart.prAnimation)))){
iEditorPart.Free();
this.removeChild(iEditorPart);
iEditorPart = null;
iWaitClose = false;
this.prVisible = false;
};
if (((iWaitEditorClose) && (!(iEditorPart.prAnimation)))){
startTest();
};
if (((iWaitGameClose) && (!(iTestGame.prAnimation)))){
resumeEditor();
};
super.OnEnterFrame(_arg1);
}
private function getLevelStr():String{
var _local1:Array;
var _local2:String;
var _local3:int;
var _local4:int;
_local1 = getLevelArray();
_local2 = "";
_local2 = (_local2 + "[");
_local3 = 0;
while (_local3 < _local1[0].length) {
_local2 = (_local2 + "[");
_local4 = 0;
while (_local4 < _local1[0][_local3].length) {
_local2 = (_local2 + ((Math.round((_local1[0][_local3][_local4] * 100)) / 100).toString() + "*"));
_local4++;
};
_local2 = (_local2 + "]*");
_local3++;
};
_local2 = (_local2 + "]");
_local2 = (_local2 + "\n[");
_local3 = 0;
while (_local3 < _local1[1].length) {
_local2 = (_local2 + ((Math.round((_local1[1][_local3] * 100)) / 100).toString() + "*"));
_local3++;
};
_local2 = (_local2 + "]");
return (_local2);
}
private function resumeEditor():void{
iTestGame.Free();
this.removeChild(iTestGame);
iTestGame = null;
iEditorPart = new CEditor(this);
this.addChild(iEditorPart);
iEditorPart.loadFromArray(iCachedInfo);
iWaitGameClose = false;
}
}
}//package RES.WINDOWS
Section 142
//OWEnterName (RES.WINDOWS.OWEnterName)
package RES.WINDOWS {
import flash.events.*;
import ENGINE.INTERFACE.*;
import ENGINE.CORE.*;
public class OWEnterName extends ODialog {
private var iHasCancel:Boolean;
public var iCancel:OButton;
public var iName:OInput;
public var iAccept:OButton;
public function OWEnterName(_arg1:Boolean=true){
this.iHasCancel = _arg1;
super(Hitz2L.OWEnterName);
}
private function keyHandler(_arg1:KeyboardEvent):void{
switch (_arg1.keyCode){
case 13:
OnPress(_arg1, this.iAccept);
break;
case 27:
OnPress(_arg1, this.iCancel);
break;
};
trace(((((((_arg1.target + "(") + _arg1.currentTarget) + "): ") + _arg1.keyCode) + "/") + _arg1.charCode));
}
override public function Init():void{
super.Init();
this.iName.prText = (Hitz2L.iGAME.prPlayerName) ? Hitz2L.iGAME.prPlayerName : "";
if (!this.iHasCancel){
this.iCancel.visible = false;
this.iAccept.prX = 155;
};
this.iName.addEventListener(KeyboardEvent.KEY_DOWN, keyHandler);
}
public function set prName(_arg1:String):void{
this.iName.prText = _arg1;
}
override public function OnPress(_arg1:Event, _arg2):void{
var _local3:String;
var _local4:String;
if (!this.prMouseEnabled){
return;
};
if (_arg2 == this.iCancel){
if (!this.iCancel.visible){
return;
};
this.prVisible = false;
return;
};
if (_arg2 == this.iAccept){
_local3 = OUtils.ClearString(this.iName.prText.toUpperCase());
_local4 = removeSpaces(_local3);
if (_local4.length > 0){
Hitz2L.iGAME.prPlayerName = _local4;
this.prVisible = false;
} else {
this.iName.prText = "";
};
};
}
override public function Free():void{
super.Free();
this.iName.removeEventListener(KeyboardEvent.KEY_DOWN, keyHandler);
this.iName = null;
this.iAccept = null;
this.iCancel = null;
}
public function get prName():String{
return (this.iName.prText);
}
override public function OnEnterFrame(_arg1:Event):void{
super.OnEnterFrame(_arg1);
SetNameFocus();
}
private function removeSpaces(_arg1:String):String{
var _local2:String;
var _local3:int;
_local2 = "";
_local3 = 0;
while (_local3 < _arg1.length) {
if (_arg1.charAt(_local3) != " "){
_local2 = (_local2 + _arg1.charAt(_local3));
};
_local3++;
};
return (_local2);
}
private function SetNameFocus():void{
if (!this.stage){
return;
};
if (this.stage.focus == this.iName.iText){
return;
};
this.iName.iText.setSelection(this.iName.iText.length, this.iName.iText.length);
this.stage.focus = this.iName.iText;
}
}
}//package RES.WINDOWS
Section 143
//OWGame (RES.WINDOWS.OWGame)
package RES.WINDOWS {
import flash.events.*;
import ENGINE.INTERFACE.*;
import RES.GAME.OBSERVERS.*;
import ENGINE.GAME.*;
import RES.GAME.CONTAINERS.*;
import ENGINE.CORE.*;
import flash.utils.*;
import RES.GAME.*;
import ENGINE.SMARTFOX.*;
import ENGINE.AD.*;
public class OWGame extends OWindow {
private var iOpponentDemo:String;
public var iGame:CGameBase;
public var iDemo:String;
private var iDAlpha:Number;// = 0.025
private var iTimer:int;
private var iOpponentName:String;
private var iWin:Boolean;
private var iInfo:OIObject;
private var iLevelNumber:int;
public var iNextLevel:OButton;
public static const stNormal:int = 5;
public static const stRestart:int = 8;
public static const stLevelCompleted:int = 7;
public static const stLevelInfo:int = 3;
public static const stLevelInit:int = 4;
public static const stInitGraphics:int = 0;
public static const stLoadLevel:int = 2;
public static const stConnection:int = 1;
public function OWGame(){
iDAlpha = 0.025;
iLevelNumber = Math.floor((Math.random() * CLevels.iLevels.length));
Hitz2L.OWGame[0][6] = ((Hitz2L.strLevel + " - ") + (iLevelNumber + 1).toString());
super(Hitz2L.OWGame, ODialog.iDefAnimators);
}
public function AddBanner(_arg1:Boolean, _arg2:int=0, _arg3:int=0):void{
if (!_arg1){
iNextLevel.SetVisible(true);
};
if (Hitz2L.sDebug == true){
return;
};
if (_arg1){
OAdBanners.AddTBanner(this, 0, 0, _arg2, _arg3);
OAdBanners.AddBBanner(this, 0, (600 - _arg3), _arg2, _arg3);
} else {
OAdBanners.RemoveTBanner(this);
OAdBanners.RemoveBBanner(this);
};
}
public function setCompletedLevel(_arg1:int, _arg2:int):void{
iWin = true;
Hitz2L.iGAME.Write(OGame.catTmp, "Score", _arg1);
Hitz2L.iGAME.Write(OGame.catTmp, "Bonus", _arg2);
State = stLevelCompleted;
}
public function nextLevel():void{
var _local1:Boolean;
iLevelNumber = Math.floor((Math.random() * CLevels.iLevels.length));
_local1 = true;
if (iNextLevel){
_local1 = iNextLevel.prVisible;
this.removeChild(iNextLevel);
iNextLevel.Free();
iNextLevel = null;
};
Hitz2L.OWGame[0][6] = ((Hitz2L.strLevel + " - ") + (iLevelNumber + 1).toString());
iNextLevel = Hitz2S.MakeTextButton(Hitz2L.OWGame[0]);
this.addChild(iNextLevel);
}
override public function OnPress(_arg1:Event, _arg2):void{
if (_arg2 == iNextLevel){
(parent as Hitz2).OnPress(null, Hitz2L.miConfirmation);
this.prActive = false;
};
}
public function SplashInfoMessage():Boolean{
var _local1:Boolean;
_local1 = false;
if (this.iInfo.prAnimation){
return (false);
};
this.iInfo.alpha = (this.iInfo.alpha + this.iDAlpha);
if ((((this.iDAlpha > 0)) && ((this.iInfo.alpha >= 1)))){
this.iInfo.alpha = 1;
this.iDAlpha = (this.iDAlpha * -1);
};
if ((((this.iDAlpha < 0)) && ((this.iInfo.alpha <= 0)))){
this.iInfo.alpha = 0;
this.iDAlpha = (this.iDAlpha * -1);
_local1 = true;
};
return (_local1);
}
override public function Free():void{
if (iGame){
iGame.Free();
this.removeChild(iGame);
iGame = null;
};
super.Free();
}
private function AddInfo(_arg1:OIObject, _arg2:Boolean=true, _arg3:Boolean=true):void{
if (this.iInfo){
this.removeChild(this.iInfo);
this.iInfo.Free();
this.iInfo = null;
};
if (_arg1){
this.iInfo = _arg1;
this.iInfo.Pos(0, 0);
if (_arg3){
this.iInfo.Pos((10 + ((800 - this.iInfo.prWidth) / 2)), (300 - (this.iInfo.prHeight / 2)));
} else {
this.iInfo.Pos(0, (300 - (this.iInfo.prHeight / 2)));
};
if (_arg2){
this.iInfo.SetVisible(false);
this.iInfo.prVisible = true;
};
this.addChild(this.iInfo);
};
}
override public function OnEnterFrame(_arg1:Event):void{
var _local2:int;
var _local3:Boolean;
var _local4:Array;
super.OnEnterFrame(_arg1);
switch (this.iState){
case stInitGraphics:
if (!this.prAnimation){
this.State = stConnection;
};
break;
case stConnection:
_local2 = getTimer();
_local3 = this.SplashInfoMessage();
if (((((_local2 - this.iTimer) > 10000)) && (_local3))){
this.State = stLevelInfo;
};
if (((((_local2 - this.iTimer) > 2000)) && ((Hitz2L.iMP.State == OMultiplayer.stInZone)))){
this.State = stLoadLevel;
};
break;
case stLoadLevel:
_local3 = this.SplashInfoMessage();
if (((((_local2 - this.iTimer) > 10000)) && (_local3))){
this.State = stLevelInfo;
};
if (((_local3) && (Hitz2L.iMP.prOpponentTurn))){
_local4 = Hitz2L.iMP.prOpponentTurn.split(",");
if (_local4.length != 2){
this.iOpponentDemo = null;
this.State = stLevelInfo;
break;
};
this.iOpponentDemo = ((((_local4[0] == "none")) && ((_local4[1] == "none")))) ? null : _local4[1];
this.iOpponentName = _local4[0];
if (iOpponentDemo){
if (iOpponentDemo.substr(0, 1) != Hitz2L.VERSION){
iOpponentDemo = null;
} else {
iOpponentDemo = iOpponentDemo.substr(1, (iOpponentDemo.length - 1));
};
};
this.State = stLevelInfo;
};
break;
case stLevelInfo:
_local2 = getTimer();
if ((_local2 - this.iTimer) > 2000){
if (this.iInfo.prVisible){
this.iInfo.prVisible = false;
} else {
if (!this.iInfo.prAnimation){
this.AddInfo(null);
this.State = stLevelInit;
};
};
};
break;
case stLevelInit:
this.State = stNormal;
break;
case stNormal:
if (prActive){
iGame.onTimer();
};
break;
case stLevelCompleted:
if (!this.iInfo.prVisible){
State = stInitGraphics;
};
break;
case stRestart:
this.alpha = (this.alpha - 0.1);
if (alpha <= 0){
iGame.Free();
this.removeChild(iGame);
iGame = null;
nextLevel();
alpha = 1;
prActive = true;
State = stConnection;
};
break;
};
}
public function setFailedLevel(_arg1:int):void{
iWin = false;
Hitz2L.iGAME.Write(OGame.catTmp, "Score", _arg1);
Hitz2L.iGAME.Write(OGame.catTmp, "Bonus", 0);
State = stLevelCompleted;
}
public function mainMenu():void{
(this.parent as OWindow).OnPress(null, Hitz2L.miMenu);
this.prActive = false;
this.prVisible = false;
}
private function get prGameIndex():int{
return (((((Hitz2L.iGAME.prGamesStartCount + Hitz2L.iGAME.prRNDFactor) + iLevelNumber) % 10) + 1));
}
override public function set State(_arg1:int):void{
var _local2:IGameObserver;
super.State = _arg1;
switch (this.iState){
case stInitGraphics:
break;
case stConnection:
iNextLevel.SetVisible(false);
this.AddBanner(true, 800, 260);
Hitz2L.iMP.ClearOpponentTurn(true);
this.iTimer = getTimer();
this.AddInfo(Hitz2S.ColorText(Hitz2L.OWGameConnection), true);
if (Hitz2L.iMP.State == OMultiplayer.stInZone){
this.State = stLoadLevel;
} else {
OSound.PlaySoundInd(Hitz2L.OSBubbleBangEInd);
if (Hitz2L.iMP.State != OMultiplayer.stConnection){
Hitz2L.iMP.State = OMultiplayer.stNone;
Hitz2L.iMP.Init(Hitz2L.sDomain, Hitz2L.sServer, Hitz2L.sZone, Hitz2L.sXTName, Hitz2L.iGAME.prPlayerName);
};
};
break;
case stLoadLevel:
this.iTimer = getTimer();
Hitz2L.iMP.ClearOpponentTurn(true);
Hitz2L.iMP.Turn(["rdl", (iLevelNumber + 1), prGameIndex, Hitz2L.iGAME.prPlayerName]);
break;
case stLevelInfo:
OSound.PlaySoundInd(Hitz2L.OSBubbleBangEInd);
Hitz2L.OWGameCurLevel[0][4] = ((Hitz2L.strLevel + " ") + (iLevelNumber + 1).toString());
Hitz2L.OWGameCurLevel[1][4] = (Hitz2L.strCreatedBy + CLevels.iLevelAuthors[iLevelNumber]);
this.AddInfo(new OIObject(Hitz2L.OWGameCurLevel), true, false);
this.iTimer = getTimer();
break;
case stLevelInit:
Hitz2L.iGAME.Start();
iDemo = "";
if (iOpponentDemo){
iGame = new CGameRecordedMP(iOpponentName, iOpponentDemo, [CLevels.iLevelsFigures[iLevelNumber], CLevels.iLevels[iLevelNumber], CLevels.iPlatforms, CLevels.iPlatformsInfo], ((Hitz2L.strLevel + " ") + (iLevelNumber + 1).toString()), prGameIndex);
} else {
iGame = new CGameSingle([CLevels.iLevelsFigures[iLevelNumber], CLevels.iLevels[iLevelNumber], CLevels.iPlatforms, CLevels.iPlatformsInfo], ((Hitz2L.strLevel + " ") + (iLevelNumber + 1).toString()), prGameIndex);
};
_local2 = new CGameObserver(this);
iGame.connect(_local2);
this.addChild(iGame);
break;
case OWGame.stLevelCompleted:
iNextLevel.SetVisible(false);
iGame.Free();
this.removeChild(iGame);
iGame = null;
if (iDemo != ""){
Hitz2L.iMP.Turn(["wrl", (iLevelNumber + 1), prGameIndex, Hitz2L.iGAME.prPlayerName, iDemo]);
};
if (iWin){
nextLevel();
iNextLevel.SetVisible(false);
};
this.iInfo = new OWResults(!(iWin), this);
this.addChild(this.iInfo);
break;
};
}
}
}//package RES.WINDOWS
Section 144
//OWGameTest (RES.WINDOWS.OWGameTest)
package RES.WINDOWS {
import flash.events.*;
import ENGINE.INTERFACE.*;
import RES.GAME.OBSERVERS.*;
import RES.GAME.CONTAINERS.*;
public class OWGameTest extends OWindow {
private var iConnector:IGameObserver;
private var iTestGame:CGameBase;
private var iParentWindow:OWEditor;
public var iClose:OButton;
private var iLevel:Array;
public function OWGameTest(_arg1:Array, _arg2:OWEditor){
iLevel = _arg1;
iParentWindow = _arg2;
super(Hitz2L.OWGameTest, OInterface.iDefAnimators);
createGame();
}
private function createGame():void{
visibleElems(false);
iTestGame = new CGameBase(Hitz2L.CGameBaseTest, iLevel, Hitz2L.strTestLevel, (Math.floor((Math.random() * 10)) + 1));
this.addChild(iTestGame);
iConnector = new CGameTestObserver(this);
iTestGame.connect(iConnector);
}
public function notifyFailedLevel():void{
restart();
}
public function notifyGameStarted():void{
visibleElems(true);
}
private function restart():void{
iTestGame.Free();
this.removeChild(iTestGame);
iTestGame = null;
createGame();
}
override public function OnPress(_arg1:Event, _arg2):void{
if (_arg2 == iClose){
iParentWindow.showEditor();
this.prVisible = false;
};
super.OnPress(_arg1, _arg2);
}
private function visibleElems(_arg1:Boolean):void{
iClose.SetVisible(_arg1);
}
override public function Free():void{
iTestGame.Free();
super.Free();
}
public function notifyCompletedLevel(_arg1:int):void{
restart();
}
override public function OnEnterFrame(_arg1:Event):void{
iTestGame.onTimer();
super.OnEnterFrame(_arg1);
}
}
}//package RES.WINDOWS
Section 145
//OWGlobalTop (RES.WINDOWS.OWGlobalTop)
package RES.WINDOWS {
import flash.events.*;
import ENGINE.INTERFACE.*;
import ENGINE.INTERFACE.ANIMATORS.*;
import ENGINE.CORE.*;
import flash.utils.*;
import ENGINE.SMARTFOX.*;
public class OWGlobalTop extends ODialog {
private var iDAlpha:Number;// = 0.05
private var iTimer:int;
public var iCancel:OButton;
private var iInfo:OIObject;
public static const stShown:int = 4;
public static const stFailedConnect:int = 3;
public static const stLevelSent:int = 2;
public static const stInitGraphics:int = 0;
public static const stConnection:int = 1;
public function OWGlobalTop(){
iDAlpha = 0.05;
super(Hitz2L.OWGlobalTop, ODialog.iDefAnimators);
}
override public function Init():void{
super.Init();
}
private function showGlobalTop():void{
var _local1:int;
_local1 = 0;
while (_local1 < Hitz2L.iGlobalTop10.length) {
Hitz2L.OGlobalTopTable[(_local1 * 2)][5] = Hitz2L.iGlobalTop10[_local1][0].toString();
Hitz2L.OGlobalTopTable[((_local1 * 2) + 1)][5] = Hitz2L.iGlobalTop10[_local1][1].toString();
_local1++;
};
this.AddInfo(new OIObject(Hitz2L.OGlobalTopTable), true);
}
override public function OnPress(_arg1:Event, _arg2):void{
if (_arg2 == this.iCancel){
this.prActive = false;
this.prVisible = false;
return;
};
}
public function SplashInfoMessage():Boolean{
var _local1:Boolean;
_local1 = false;
if (this.iInfo.prAnimation){
return (false);
};
this.iInfo.alpha = (this.iInfo.alpha + this.iDAlpha);
if ((((this.iDAlpha > 0)) && ((this.iInfo.alpha >= 1)))){
this.iInfo.alpha = 1;
this.iDAlpha = (this.iDAlpha * -1);
};
if ((((this.iDAlpha < 0)) && ((this.iInfo.alpha <= 0)))){
this.iInfo.alpha = 0;
this.iDAlpha = (this.iDAlpha * -1);
_local1 = true;
};
return (_local1);
}
override public function Free():void{
super.Free();
iCancel = null;
}
private function parseGlobalTop(_arg1:String):void{
var _local2:Array;
var _local3:int;
Hitz2L.iGlobalTop10 = new Array();
_local2 = _arg1.split(",");
_local3 = 0;
while (_local3 < (_local2.length - 1)) {
Hitz2L.iGlobalTop10.push([((((_local3 + 2) / 2).toString() + ". ") + _local2[_local3]), _local2[(_local3 + 1)]]);
_local3 = (_local3 + 2);
};
_local3 = (_local2.length - 1);
while (_local3 < 20) {
Hitz2L.iGlobalTop10.push([(((_local3 + 2) / 2).toString() + ". "), "---"]);
_local3 = (_local3 + 2);
};
}
private function AddInfo(_arg1:OIObject, _arg2:Boolean=true):void{
if (this.iInfo){
this.removeChild(this.iInfo);
this.iInfo.Free();
this.iInfo = null;
};
if (_arg1){
this.iInfo = _arg1;
this.iInfo.Pos(0, 0);
this.iInfo.Pos(((540 - this.iInfo.prWidth) / 2), (270 - (this.iInfo.prHeight / 2)));
if (_arg2){
this.iInfo.SetVisible(false);
this.iInfo.prVisible = true;
};
this.addChild(this.iInfo);
};
}
override public function OnEnterFrame(_arg1:Event):void{
var _local2:int;
var _local3:Boolean;
super.OnEnterFrame(_arg1);
switch (this.iState){
case stInitGraphics:
if (!this.prAnimation){
this.State = stConnection;
};
break;
case stConnection:
_local2 = getTimer();
_local3 = this.SplashInfoMessage();
if (((((_local2 - this.iTimer) > 10000)) && (_local3))){
this.State = stFailedConnect;
};
if (((((_local2 - this.iTimer) > 2000)) && ((Hitz2L.iMP.State == OMultiplayer.stInZone)))){
this.State = stLevelSent;
};
break;
case stLevelSent:
if (Hitz2L.iMP.prOpponentTurn){
parseGlobalTop(Hitz2L.iMP.prOpponentTurn);
showGlobalTop();
State = stShown;
};
break;
};
}
override public function set State(_arg1:int):void{
super.State = _arg1;
switch (this.iState){
case stConnection:
this.iTimer = getTimer();
this.AddInfo(Hitz2S.ColorText(Hitz2L.OWPublisherConnection), true);
iInfo.prX = (iInfo.prX + Hitz2L.OWPublisherConnection[5]);
if (Hitz2L.iMP.State == OMultiplayer.stInZone){
this.State = stLevelSent;
} else {
OSound.PlaySoundInd(Hitz2L.OSBubbleBangEInd);
Hitz2L.iMP.State = OMultiplayer.stNone;
Hitz2L.iMP.Init(Hitz2L.sDomain, Hitz2L.sServer, Hitz2L.sZone, Hitz2L.sXTName, Hitz2L.iGAME.prPlayerName);
};
break;
case stLevelSent:
Hitz2L.iMP.ClearOpponentTurn(true);
Hitz2L.iMP.Turn(["rtt"]);
break;
case stFailedConnect:
this.AddInfo(Hitz2S.ColorText(Hitz2L.OWConnectionFailed), true);
break;
};
}
}
}//package RES.WINDOWS
Section 146
//OWHighScores (RES.WINDOWS.OWHighScores)
package RES.WINDOWS {
import ENGINE.DISPLAY.*;
import flash.events.*;
import ENGINE.INTERFACE.*;
import ENGINE.GAME.*;
public class OWHighScores extends ODialog {
public var iClose:OButton;
public var iPublish:OButton;
public var iClear:OButton;
public var iGlobal:OButton;
public var iType:OListBox;
public var iTable:OTab;
public function OWHighScores(){
var _local1:OScoreParams;
var _local2:int;
_local2 = 0;
while (_local2 < 5) {
_local1 = Hitz2L.iGAME.GetLocalScores(0, _local2);
Hitz2L.OWHighScoreLocal[(0 + (_local2 * 2))][5] = (_local1) ? _local1.iName : "";
Hitz2L.OWHighScoreLocal[(1 + (_local2 * 2))][5] = (_local1) ? _local1.iScore.toString() : "";
_local1 = Hitz2L.iGAME.GetPersonalScores(0, _local2);
Hitz2L.OWHighScorePersonal[(0 + (_local2 * 2))][5] = (_local1) ? _local1.iName : "";
Hitz2L.OWHighScorePersonal[(1 + (_local2 * 2))][5] = (_local1) ? _local1.iScore.toString() : "";
_local2++;
};
super(Hitz2L.OWHighScores);
}
override public function set prActive(_arg1:Boolean):void{
var _local2:OScoreParams;
if (_arg1){
_local2 = Hitz2L.iGAME.GetLocalScores(0, 0);
if (!_local2){
(iTable.getChildAt(0) as OSprite).Free();
};
_local2 = Hitz2L.iGAME.GetPersonalScores(0, 0);
if (!_local2){
(iTable.getChildAt(1) as OSprite).Free();
};
};
super.prActive = _arg1;
}
override public function OnPress(_arg1:Event, _arg2):void{
if (_arg2 == this.iClose){
this.prVisible = false;
return;
};
if (_arg2 == this.iType){
this.iTable.prValue = this.iType.prCurrentInd;
return;
};
if (_arg2 == this.iClear){
(this.parent as OWindow).OnPress(null, Hitz2L.miDeleteScoresConfirm);
this.prActive = false;
return;
};
(this.parent as OWindow).OnPress(null, Hitz2L.miCommingSoon);
this.prActive = false;
}
override public function Free():void{
this.iType = null;
this.iTable = null;
this.iGlobal = null;
this.iPublish = null;
this.iClear = null;
this.iClose = null;
super.Free();
}
}
}//package RES.WINDOWS
Section 147
//OWInstruction (RES.WINDOWS.OWInstruction)
package RES.WINDOWS {
import ENGINE.DISPLAY.*;
import flash.events.*;
import ENGINE.INTERFACE.*;
import RES.GAME.*;
public class OWInstruction extends OWindow {
public var iCloseButton:OButton;
private var iPage2:OWPage;
private var iPage1:OWPage;
private static const stPage1:int = 0;
private static const stPage2:int = 1;
public static var iGraphicsHolder:CGraphicsHolder;
public function OWInstruction(){
iGraphicsHolder = null;
super(Hitz2L.OWInstructions);
iPage1 = new OWPage(Hitz2L.OWInstructionsPage1, OWPage.stBegin);
iPage2 = new OWPage(Hitz2L.OWInstructionsPage2, OWPage.stEnd);
this.addChild(iPage1);
this.addChild(iPage2);
State = stPage1;
}
override public function Init():void{
super.Init();
}
override public function OnPress(_arg1:Event, _arg2):void{
if (_arg2 == iCloseButton){
(this.parent as OWindow).OnPress(null, Hitz2L.miLastWindow);
this.prVisible = false;
};
if (_arg2 == iPage2.iPrevButton){
this.State = stPage1;
};
if (_arg2 == iPage1.iNextButton){
this.State = stPage2;
};
}
override public function Free():void{
super.Free();
}
override public function set State(_arg1:int):void{
this.iState = _arg1;
switch (this.iState){
case stPage1:
iPage1.prVisible = true;
iPage2.prVisible = false;
break;
case stPage2:
iPage1.prVisible = false;
iPage2.prVisible = true;
break;
};
}
public static function MakeBonus(_arg1:Array):OBitmap{
var _local2:OBitmap;
if (iGraphicsHolder == null){
iGraphicsHolder = new CGraphicsHolder(_arg1[2]);
iGraphicsHolder.createBonuses();
};
_local2 = new OBitmap();
_local2.CopyFrom(iGraphicsHolder.iBonuses[_arg1[1]]);
_local2.prX = _arg1[3];
_local2.prY = _arg1[4];
return (_local2);
}
}
}//package RES.WINDOWS
Section 148
//OWIntro (RES.WINDOWS.OWIntro)
package RES.WINDOWS {
import ENGINE.DISPLAY.*;
import flash.events.*;
import ENGINE.INTERFACE.*;
public class OWIntro extends OWindow {
public var iHeader:OBitmap;
public var iName1:OIObject;
public var iHit:OSprite;
public var iFooter:OBitmap;
public var iAlpha1:Array;
public var iAlpha:Array;
public var iName:OIObject;
private var iTimer:int;
public static var stShowFooter:int = 2;
public static var stHide:int = 5;
public static var stNormal:int = 4;
public static var stShowName:int = 3;
public static var stShowHeader:int = 1;
public static var stInvisible:int = 6;
public static var stBeforeShow:int = 0;
public function OWIntro(){
super(Hitz2L.OWIntroParam);
}
override public function Init():void{
var _local1:int;
var _local2:Number;
var _local3:int;
super.Init();
this.iHeader.alpha = 0;
this.iFooter.alpha = 0;
_local1 = this.iName.numChildren;
this.iAlpha = new Array(_local1);
_local2 = ((300 - ((this.iName.getChildAt(0) as OBitmap).prHeight / 2)) - 10);
_local3 = 0;
while (_local3 < (_local1 / 2)) {
(this.iName.getChildAt(_local3) as OBitmap).prY = _local2;
(this.iName.getChildAt(((_local1 - _local3) - 1)) as OBitmap).prY = _local2;
this.iAlpha[_local3] = (-(((_local1 / 2) - _local3)) * 0.3);
this.iAlpha[((_local1 - _local3) - 1)] = (-(((_local1 / 2) - _local3)) * 0.3);
this.iName.getChildAt(_local3).alpha = 0;
this.iName.getChildAt(((_local1 - _local3) - 1)).alpha = 0;
_local3++;
};
_local1 = this.iName1.numChildren;
this.iAlpha1 = new Array(_local1);
_local2 = ((300 - ((this.iName1.getChildAt(0) as OBitmap).prHeight / 2)) + 60);
_local3 = 0;
while (_local3 < (_local1 / 2)) {
(this.iName1.getChildAt(_local3) as OBitmap).prY = _local2;
(this.iName1.getChildAt(((_local1 - _local3) - 1)) as OBitmap).prY = _local2;
this.iAlpha1[_local3] = (-(((_local1 / 2) - _local3)) * 0.3);
this.iAlpha1[((_local1 - _local3) - 1)] = (-(((_local1 / 2) - _local3)) * 0.3);
this.iName1.getChildAt(_local3).alpha = 0;
this.iName1.getChildAt(((_local1 - _local3) - 1)).alpha = 0;
_local3++;
};
this.hitArea = this.iHit;
this.State = stBeforeShow;
}
override public function Free():void{
super.Free();
this.iHeader = null;
this.iFooter = null;
this.iName.Free();
this.iName = null;
}
override public function OnMouseDown(_arg1:MouseEvent):void{
if (this.iState < OWIntro.stShowFooter){
return;
};
this.prVisible = false;
super.OnMouseDown(_arg1);
}
override public function OnEnterFrame(_arg1:Event):void{
var _local2:int;
switch (this.iState){
case stBeforeShow:
if (this.iTimer-- <= 0){
this.State = stShowHeader;
};
break;
case stShowHeader:
if (this.iHeader.alpha >= 1){
this.iHeader.alpha = 1;
this.State = stShowFooter;
} else {
this.iHeader.alpha = (this.iHeader.alpha + 0.025);
};
break;
case stShowFooter:
if (this.iFooter.alpha >= 1){
this.iFooter.alpha = 1;
this.State = stShowName;
} else {
this.iFooter.alpha = (this.iFooter.alpha + 0.025);
};
break;
case stShowName:
if ((((this.iName.getChildAt(0).alpha >= 1)) && ((this.iName1.getChildAt(0).alpha >= 1)))){
this.State = stNormal;
};
if (this.iName.getChildAt(0).alpha < 1){
_local2 = 0;
while (_local2 < this.iName.numChildren) {
this.iAlpha[_local2] = (this.iAlpha[_local2] + 0.025);
if (this.iAlpha[_local2] > 1){
this.iAlpha[_local2] = 1;
};
if (this.iAlpha[_local2] >= 0){
this.iName.getChildAt(_local2).alpha = this.iAlpha[_local2];
};
_local2++;
};
};
if (this.iName1.getChildAt(0).alpha < 1){
_local2 = 0;
while (_local2 < this.iName1.numChildren) {
this.iAlpha1[_local2] = (this.iAlpha1[_local2] + 0.05);
if (this.iAlpha1[_local2] > 1){
this.iAlpha1[_local2] = 1;
};
if (this.iAlpha1[_local2] >= 0){
this.iName1.getChildAt(_local2).alpha = this.iAlpha1[_local2];
};
_local2++;
};
};
break;
case stNormal:
if (this.iTimer-- <= 0){
this.State = stHide;
};
break;
case stHide:
if (this.iFooter.alpha <= 0){
this.State = stInvisible;
} else {
this.iHeader.alpha = (this.iHeader.alpha - 0.05);
this.iFooter.alpha = (this.iFooter.alpha - 0.05);
_local2 = 0;
while (_local2 < this.iName.numChildren) {
this.iName.getChildAt(_local2).alpha = (this.iName.getChildAt(_local2).alpha - 0.05);
_local2++;
};
_local2 = 0;
while (_local2 < this.iName1.numChildren) {
this.iName1.getChildAt(_local2).alpha = (this.iName1.getChildAt(_local2).alpha - 0.05);
_local2++;
};
};
break;
};
}
override public function set State(_arg1:int):void{
this.iState = _arg1;
switch (this.iState){
case stBeforeShow:
this.iTimer = 20;
break;
case stNormal:
this.iTimer = 180;
break;
case stInvisible:
this.prVisible = false;
break;
};
}
}
}//package RES.WINDOWS
Section 149
//OWMenu (RES.WINDOWS.OWMenu)
package RES.WINDOWS {
import flash.events.*;
import ENGINE.INTERFACE.*;
import flash.net.*;
import ENGINE.SMARTFOX.*;
public class OWMenu extends ODialog {
public var iPlayers:OIObject;
public var iOptions:OButton;
public var iMoreGames:OButton;
public var iGameName:OIObject;
public var iBName:OButton;
public var iEditor:OButton;
public var iGlobalTop:OButton;
public var iCPlayers:OCounter;
public var iHighScores:OButton;
public var iInstructions:OButton;
public var iInfo:OIObject;
public var iPlayOnline:OButton;
public function OWMenu(){
super(Hitz2L.OWMenu);
}
private function ShowUserReiting(_arg1:Boolean):void{
var _local2:String;
var _local3:String;
var _local4:Array;
_local2 = Hitz2L.COLORS1[Math.round((Math.random() * (Hitz2L.COLORS1.length - 1)))];
Hitz2L.OWMenuReiting[0][3] = _local2;
if (_arg1){
Hitz2L.iMP.ClearOpponentTurn(true);
Hitz2L.OWMenuReiting[0][4] = ((((Hitz2L.iGAME.prPlayerName + " ") + Hitz2L.strReiting2) + " ") + Hitz2L.iGAME.prScore.toString());
this.InitObject(Hitz2L.OWMenuReiting);
};
if (Hitz2L.iMP.State != OMultiplayer.stInZone){
return;
};
_local3 = Hitz2L.iMP.prOpponentTurn;
Hitz2L.iMP.ClearOpponentTurn(true);
Hitz2L.iMP.Turn(["rdr"]);
if (!_local3){
return;
};
_local4 = _local3.split(/,/);
Hitz2L.OWMenuReiting[0][4] = (((((int(_local4[0]) + 1).toString() + Hitz2L.strReiting1) + _local4[1]) + Hitz2L.strReiting2) + _local4[2]);
this.InitObject(Hitz2L.OWMenuReiting);
}
override public function Init():void{
Hitz2L.OWMenu[0][4] = ((Hitz2L.strWelcome + " ") + Hitz2L.iGAME.prPlayerName);
super.Init();
if (Hitz2L.iMP.prUsersCount == 0){
this.iPlayers.prAnimationEnabled = false;
this.iPlayers.prVisible = false;
this.iPlayers.prAnimationEnabled = true;
this.iCPlayers.prAnimationEnabled = false;
this.iCPlayers.prVisible = false;
this.iPlayers.prAnimationEnabled = true;
};
this.iCPlayers.prAnimationEnabled = false;
this.iCPlayers.prValue = Hitz2L.iMP.prUsersCount;
this.iPlayers.prAnimationEnabled = true;
this.iCPlayers.Pos((this.iPlayOnline.prX + 10), this.iCPlayers.prY);
this.iPlayers.Pos((this.iCPlayers.prX + 90), this.iPlayers.prY);
this.ShowUserReiting(true);
this.Pos(0, 0);
}
override public function OnPress(_arg1:Event, _arg2):void{
if (_arg2 == this.iBName){
(this.parent as OWindow).OnPress(null, Hitz2L.miChoosePlayer);
this.prVisible = false;
return;
};
if (_arg2 == this.iPlayOnline){
(this.parent as OWindow).OnPress(null, Hitz2L.miGame);
this.prVisible = false;
return;
};
if (_arg2 == this.iOptions){
(this.parent as OWindow).OnPress(null, Hitz2L.miOptions);
this.prActive = false;
return;
};
if (_arg2 == this.iInstructions){
(this.parent as OWindow).OnPress(null, Hitz2L.miInstructions);
this.prActive = false;
return;
};
if (_arg2 == this.iHighScores){
(this.parent as OWindow).OnPress(null, Hitz2L.miHighScores);
this.prActive = false;
return;
};
if (_arg2 == this.iMoreGames){
navigateToURL(new URLRequest(Hitz2L.strConnect2URL));
return;
};
if (_arg2 == this.iEditor){
(this.parent as OWindow).OnPress(null, Hitz2L.miLevelEditor);
this.prVisible = false;
return;
};
if (_arg2 == this.iGlobalTop){
(this.parent as OWindow).OnPress(null, Hitz2L.miGlobalTop);
this.prActive = false;
return;
};
(this.parent as OWindow).OnPress(null, Hitz2L.miCommingSoon);
this.prActive = false;
}
override public function Free():void{
this.iBName = null;
this.iGameName = null;
this.iCPlayers = null;
this.iPlayers = null;
this.iPlayOnline = null;
this.iOptions = null;
this.iHighScores = null;
this.iMoreGames = null;
super.Free();
}
private function InitObject(_arg1:Array):void{
if (this.iInfo){
this.removeChild(this.iInfo);
this.iInfo.Free();
this.iInfo = null;
};
if (!_arg1){
return;
};
this.iInfo = new OIObject(_arg1, OInterface.iDefSlowAnimators);
this.addChild(this.iInfo);
this.iInfo.SetVisible(false);
this.iInfo.prVisible = true;
}
override public function OnEnterFrame(_arg1:Event):void{
if (this.iCPlayers.prValue != Hitz2L.iMP.prUsersCount){
if (Hitz2L.iMP.prUsersCount > 0){
if (!this.iPlayers.prVisible){
this.iCPlayers.prVisible = true;
this.iPlayers.prVisible = true;
};
} else {
if (this.iPlayers.prVisible){
this.iCPlayers.prVisible = false;
this.iPlayers.prVisible = false;
};
};
this.iCPlayers.prValue = Hitz2L.iMP.prUsersCount;
};
super.OnEnterFrame(_arg1);
}
}
}//package RES.WINDOWS
Section 150
//OWOptions (RES.WINDOWS.OWOptions)
package RES.WINDOWS {
import flash.events.*;
import ENGINE.INTERFACE.*;
import ENGINE.CORE.*;
import flash.system.*;
public class OWOptions extends ODialog {
public var iSound:OListBox;
public var iFullScreen:OListBox;
public var iMusic:OListBox;
public var iCancel:OButton;
public var iAccept:OButton;
public function OWOptions(){
super(Hitz2L.OWOptions);
}
override public function Init():void{
super.Init();
this.iSound.prCurrentInd = int((Hitz2L.iGAME.prSoundVolume * 10));
this.iMusic.prCurrentInd = int((Hitz2L.iGAME.prMusicVolume * 10));
this.iFullScreen.prCurrentInd = ((((OGlobal.prStage.stageWidth == Capabilities.screenResolutionX)) && ((OGlobal.prStage.stageHeight == Capabilities.screenResolutionY)))) ? 1 : 0;
}
override public function OnPress(_arg1:Event, _arg2):void{
if (_arg2 == this.iCancel){
this.prVisible = false;
return;
};
if (_arg2 == this.iAccept){
this.prVisible = false;
Hitz2L.iGAME.prSoundVolume = (this.iSound.prCurrentInd / 10);
Hitz2L.iGAME.prMusicVolume = (this.iMusic.prCurrentInd / 10);
Hitz2L.iGAME.prFullScreen = (this.iFullScreen.prCurrentInd) ? true : false;
fscommand("fullscreen", Hitz2L.iGAME.prFullScreen.toString());
return;
};
}
override public function Free():void{
this.iSound = null;
this.iMusic = null;
this.iFullScreen = null;
this.iAccept = null;
this.iCancel = null;
super.Free();
}
}
}//package RES.WINDOWS
Section 151
//OWPage (RES.WINDOWS.OWPage)
package RES.WINDOWS {
import flash.events.*;
import ENGINE.INTERFACE.*;
public class OWPage extends OWindow {
public var iNextButton:OButton;
private var iTypePage:int;
public var iPrevButton:OButton;
public static const stMiddle:int = 1;
public static const stBegin:int = 0;
public static const stSingle:int = 3;
public static const stEnd:int = 2;
public function OWPage(_arg1:Array, _arg2:int){
super(_arg1);
TypePage = _arg2;
}
public function get TypePage():int{
return (iTypePage);
}
public function set TypePage(_arg1:int):void{
iTypePage = _arg1;
switch (iTypePage){
case stBegin:
iPrevButton.SetVisible(false);
iNextButton.SetVisible(true);
break;
case stMiddle:
iPrevButton.SetVisible(true);
iNextButton.SetVisible(true);
break;
case stEnd:
iPrevButton.SetVisible(true);
iNextButton.SetVisible(false);
break;
case stSingle:
iPrevButton.SetVisible(false);
iNextButton.SetVisible(false);
break;
};
}
override public function OnPress(_arg1:Event, _arg2):void{
(parent as OIObject).OnPress(_arg1, _arg2);
}
}
}//package RES.WINDOWS
Section 152
//OWPublisher (RES.WINDOWS.OWPublisher)
package RES.WINDOWS {
import flash.events.*;
import ENGINE.INTERFACE.*;
import ENGINE.CORE.*;
import flash.utils.*;
import ENGINE.SMARTFOX.*;
public class OWPublisher extends ODialog {
private var iDAlpha:Number;// = 0.05
private var iTimer:int;
public var iCancel:OButton;
private var iInfo:OIObject;
private var iLevelStr:String;
public static const stFailedConnect:int = 3;
public static const stLevelSent:int = 2;
public static const stInitGraphics:int = 0;
public static const stConnection:int = 1;
public function OWPublisher(_arg1:String){
iDAlpha = 0.05;
iLevelStr = _arg1;
super(Hitz2L.OWPublisher, ODialog.iDefAnimators);
}
override public function Init():void{
super.Init();
}
override public function OnPress(_arg1:Event, _arg2):void{
if (_arg2 == this.iCancel){
this.prActive = false;
this.prVisible = false;
return;
};
}
public function SplashInfoMessage():Boolean{
var _local1:Boolean;
_local1 = false;
if (this.iInfo.prAnimation){
return (false);
};
this.iInfo.alpha = (this.iInfo.alpha + this.iDAlpha);
if ((((this.iDAlpha > 0)) && ((this.iInfo.alpha >= 1)))){
this.iInfo.alpha = 1;
this.iDAlpha = (this.iDAlpha * -1);
};
if ((((this.iDAlpha < 0)) && ((this.iInfo.alpha <= 0)))){
this.iInfo.alpha = 0;
this.iDAlpha = (this.iDAlpha * -1);
_local1 = true;
};
return (_local1);
}
override public function Free():void{
super.Free();
iCancel = null;
}
private function AddInfo(_arg1:OIObject, _arg2:Boolean=true):void{
if (this.iInfo){
this.removeChild(this.iInfo);
this.iInfo.Free();
this.iInfo = null;
};
if (_arg1){
this.iInfo = _arg1;
this.iInfo.Pos(0, 0);
this.iInfo.Pos(((540 - this.iInfo.prWidth) / 2), (136 - (this.iInfo.prHeight / 2)));
if (_arg2){
this.iInfo.SetVisible(false);
this.iInfo.prVisible = true;
};
this.addChild(this.iInfo);
};
}
override public function OnEnterFrame(_arg1:Event):void{
var _local2:int;
var _local3:Boolean;
super.OnEnterFrame(_arg1);
switch (this.iState){
case stInitGraphics:
if (!this.prAnimation){
this.State = stConnection;
};
break;
case stConnection:
_local2 = getTimer();
_local3 = this.SplashInfoMessage();
if (((((_local2 - this.iTimer) > 10000)) && (_local3))){
this.State = stFailedConnect;
};
if (((((_local2 - this.iTimer) > 2000)) && ((Hitz2L.iMP.State == OMultiplayer.stInZone)))){
this.State = stLevelSent;
};
break;
};
}
override public function set State(_arg1:int):void{
super.State = _arg1;
switch (this.iState){
case stConnection:
this.iTimer = getTimer();
this.AddInfo(Hitz2S.ColorText(Hitz2L.OWPublisherConnection), true);
iInfo.prX = (iInfo.prX + Hitz2L.OWPublisherConnection[5]);
if (Hitz2L.iMP.State == OMultiplayer.stInZone){
this.State = stLevelSent;
} else {
OSound.PlaySoundInd(Hitz2L.OSBubbleBangEInd);
Hitz2L.iMP.State = OMultiplayer.stNone;
Hitz2L.iMP.Init(Hitz2L.sDomain, Hitz2L.sServer, Hitz2L.sZone, Hitz2L.sXTName, Hitz2L.iGAME.prPlayerName);
};
break;
case stLevelSent:
this.AddInfo(Hitz2S.ColorText(Hitz2L.OWPublisherSent), true);
if (iLevelStr != ""){
Hitz2L.iMP.Turn(["wrf", 1, 1, Hitz2L.iGAME.prPlayerName, iLevelStr]);
};
break;
case stFailedConnect:
this.AddInfo(Hitz2S.ColorText(Hitz2L.OWPublisherFailed), true);
break;
};
}
}
}//package RES.WINDOWS
Section 153
//OWResults (RES.WINDOWS.OWResults)
package RES.WINDOWS {
import flash.events.*;
import ENGINE.INTERFACE.*;
import ENGINE.GAME.*;
import ENGINE.CORE.*;
import flash.utils.*;
public class OWResults extends OAlert {
private var iTimer:Timer;
private var iParentGameWnd:OWGame;
private var iReplayLevel:Boolean;
public function OWResults(_arg1:Boolean, _arg2:OWGame){
iReplayLevel = _arg1;
iParentGameWnd = _arg2;
super(Hitz2L.OWResults, null);
}
override public function Init():void{
var _local1:int;
var _local2:int;
_local1 = Hitz2L.iGAME.Read(OGame.catTmp, "Score");
_local2 = Hitz2L.iGAME.Read(OGame.catTmp, "Bonus");
Hitz2L.iGAME.SetLevelScore((_local1 + _local2));
Hitz2L.iGAME.AddScore((_local1 + _local2));
Hitz2L.iGAME.AddScoreInTable(Hitz2L.iGAME.prScore);
Hitz2L.iMP.Turn(["wrr", Hitz2L.iGAME.prPlayerName, Hitz2L.iGAME.prScore]);
Hitz2L.OWResultsLevelScore[1][5] = _local1.toString();
Hitz2L.OWResultsBonusScore[1][5] = _local2.toString();
Hitz2L.OWResultsTotalScore[1][5] = (_local1 + _local2).toString();
Hitz2L.OWResultsReiting[1][4] = Hitz2L.iGAME.prScore;
if (this.iReplayLevel){
};
super.Init();
this.Pos(0, 0);
this.iTimer = new Timer(400, 6);
this.iTimer.addEventListener(TimerEvent.TIMER, OnTimer);
this.iTimer.start();
}
override public function OnPress(_arg1:Event, _arg2):void{
if ((((_arg2 == iButtons[0])) || ((_arg2 == iButtons[2])))){
this.prVisible = false;
} else {
this.prVisible = false;
iParentGameWnd.nextLevel();
};
super.OnPress(_arg1, _arg2);
}
override public function Free():void{
this.iTimer.stop();
this.iTimer.removeEventListener(TimerEvent.TIMER, OnTimer);
this.iTimer = null;
super.Free();
}
private function OnTimer(_arg1:TimerEvent):void{
switch (this.iTimer.currentCount){
case 1:
(this.getChildAt(0) as OIObject).prVisible = true;
OSound.PlaySoundInd(Hitz2L.OSBubbleBangEInd);
break;
case 2:
(this.getChildAt(1) as OIObject).prVisible = true;
OSound.PlaySoundInd(Hitz2L.OSBubbleBangEInd);
break;
case 3:
(this.getChildAt(2) as OIObject).prVisible = true;
OSound.PlaySoundInd(Hitz2L.OSBubbleBangEInd);
break;
case 4:
(this.getChildAt(3) as OIObject).prVisible = true;
OSound.PlaySoundInd(Hitz2L.OSBubbleBangEInd);
break;
case 5:
(this.getChildAt(4) as OIObject).prVisible = true;
OSound.PlaySoundInd(Hitz2L.OSBubbleBangEInd);
break;
case 6:
if (!iReplayLevel){
this.iButtons[0].prVisible = true;
} else {
this.iButtons[1].prVisible = true;
this.iButtons[2].prVisible = true;
};
OSound.PlaySoundInd(Hitz2L.OSBubbleBangEInd);
break;
};
}
}
}//package RES.WINDOWS
Section 154
//Hitz2 (Hitz2)
package {
import flash.events.*;
import ENGINE.INTERFACE.*;
import RES.WINDOWS.*;
import ENGINE.CORE.*;
import ENGINE.SMARTFOX.*;
import ENGINE.AD.*;
public class Hitz2 extends OApplication {
private var iSystem:OSystem;
private var iWindow:OWindow;
public function Hitz2(){
super("Hitz2");
Hitz2L.iGAME;
OSound.PlayListAdd("music.mp3");
OSound.PlayMusic();
OAdBanners.InitTBanner(Hitz2L.sTBannerPrefix, Hitz2L.sBannerID);
OAdBanners.InitBBanner(Hitz2L.sBBannerPrefix, Hitz2L.sBannerID);
}
public function MakeBackground():void{
if (!OGlobal.prStage){
return;
};
InitBackground([Hitz2L.background], 0);
}
override protected function OnMenuItem():void{
var _local1:int;
var _local2:OWindow;
var _local3:int;
var _local4:*;
var _local5:OWHighScores;
_local3 = this.prMenuItem;
switch (_local3){
case Hitz2L.miLastWindow:
_local4 = this.getChildAt((this.numChildren - 1));
this.iWindow = ((_local4 is OWindow)) ? (_local4 as OWindow) : null;
if (this.iWindow){
this.iWindow.prActive = true;
return;
};
this.iWindow = new OWMenu();
this.prMenuItem = Hitz2L.miNullWindow;
break;
case Hitz2L.miIntro:
this.iWindow = new OWIntro();
if (Hitz2L.iGAME.prPlayerName == ""){
this.prMenuItem = Hitz2L.miEnterNameFirst;
} else {
this.prMenuItem = Hitz2L.miMenu;
};
break;
case Hitz2L.miEnterNameFirst:
this.iWindow = new OWEnterName(false);
this.prMenuItem = Hitz2L.miMenu;
break;
case Hitz2L.miEnterNewName:
this.iWindow = new OWEnterName(true);
(this.iWindow as OWEnterName).prName = "";
this.prMenuItem = Hitz2L.miLastWindow;
break;
case Hitz2L.miMenu:
switch (Hitz2L.iMP.State){
case OMultiplayer.stNone:
Hitz2L.iMP.Init(Hitz2L.sDomain, Hitz2L.sServer, Hitz2L.sZone, Hitz2L.sXTName, Hitz2L.iGAME.prPlayerName);
break;
case OMultiplayer.stConnectionError:
if (Hitz2L.iMP.prErrorsCount < 5){
Hitz2L.iMP.State = OMultiplayer.stNone;
Hitz2L.iMP.Init(Hitz2L.sDomain, Hitz2L.sServer, Hitz2L.sZone, Hitz2L.sXTName, Hitz2L.iGAME.prPlayerName);
};
break;
case OMultiplayer.stInZone:
break;
default:
Hitz2L.iMP.State = OMultiplayer.stJoinMainRoom;
break;
};
this.iWindow = new OWMenu();
this.prMenuItem = Hitz2L.miNullWindow;
break;
case Hitz2L.miCommingSoon:
this.iWindow = new OAlert(Hitz2L.OWCommingSoon, null);
this.prMenuItem = Hitz2L.miLastWindow;
break;
case Hitz2L.miChoosePlayer:
this.iWindow = new OWChoosePlayer();
this.prMenuItem = Hitz2L.miMenu;
break;
case Hitz2L.miDeletePlayerConfirm:
this.iWindow = new OAlert(Hitz2L.OWDeletePlayerConfirm, [Hitz2L.miDeletePlayer, Hitz2L.miLastWindow]);
this.prMenuItem = Hitz2L.miLastWindow;
break;
case Hitz2L.miDeletePlayer:
Hitz2L.iGAME.DeletePlayer(Hitz2L.iGAME.prPlayerName);
if (Hitz2L.iGAME.prPlayerName != ""){
this.OnMenuItem();
return;
};
this.iWindow = new OWEnterName(false);
this.prMenuItem = Hitz2L.miLastWindow;
break;
case Hitz2L.miOptions:
this.iWindow = new OWOptions();
this.prMenuItem = Hitz2L.miLastWindow;
break;
case Hitz2L.miHighScores:
this.iWindow = new OWHighScores();
this.prMenuItem = Hitz2L.miLastWindow;
break;
case Hitz2L.miDeleteScoresConfirm:
this.iWindow = new OAlert(Hitz2L.OWDeleteScoresConfirm, [Hitz2L.miDeleteScores, Hitz2L.miLastWindow]);
this.prMenuItem = Hitz2L.miLastWindow;
break;
case Hitz2L.miDeleteScores:
_local5 = (this.getChildAt((this.numChildren - 1)) as OWHighScores);
if (_local5.iTable.prValue == 0){
Hitz2L.iGAME.ClearLocalScores(0);
} else {
Hitz2L.iGAME.ClearPersonalScores(0);
};
this.OnMenuItem();
return;
case Hitz2L.miGame:
Hitz2L.iGAME.prMode = 0;
this.iWindow = new OWGame();
this.prMenuItem = Hitz2L.miMenu;
break;
case Hitz2L.miInstructions:
this.iWindow = new OWInstruction();
this.prMenuItem = Hitz2L.miLastWindow;
break;
case Hitz2L.miLevelEditor:
this.iWindow = new OWEditor();
this.prMenuItem = Hitz2L.miMenu;
break;
case Hitz2L.miGlobalTop:
this.iWindow = new OWGlobalTop();
this.prMenuItem = Hitz2L.miLastWindow;
break;
case Hitz2L.miConfirmation:
this.iWindow = new OWConfirmation((iWindow as OWGame));
this.prMenuItem = Hitz2L.miLastWindow;
break;
};
this.addChild(this.iWindow);
}
override public function Init():void{
if (((((!(this.stage)) || ((this.stage.stageHeight == 0)))) || ((this.stage.stageWidth == 0)))){
return;
};
MakeBackground();
if (Hitz2L.sDebug){
this.iSystem = new OSystem();
this.addChild(this.iSystem);
};
super.Init();
this.prMenuItem = Hitz2L.miIntro;
OnMenuItem();
}
override public function OnPress(_arg1:Event, _arg2):void{
if (_arg1 == null){
this.prMenuItem = _arg2;
};
}
override protected function OnDeactivate(_arg1:Event):void{
Hitz2L.iGAME.SaveCache();
}
override public function OnEnterFrame(_arg1:Event):void{
super.OnEnterFrame(_arg1);
Hitz2L.iMP.OnEnterFrame();
OSystem.iUserText1 = (((((((" : " + Hitz2L.iMP.State.toString()) + " : ") + Hitz2L.iMP.prActiveRoomID.toString()) + " ") + Hitz2L.iMP.prPlayerID.toString()) + " : ") + Hitz2L.iMP.prError);
if (this.iWindow){
if (this.iWindow.prAnimation){
return;
};
if (!this.iWindow.prVisible){
this.iWindow.Free();
this.removeChild(this.iWindow);
this.iWindow = null;
this.OnMenuItem();
} else {
if (!this.iWindow.prActive){
this.OnMenuItem();
};
};
};
}
}
}//package
Section 155
//Hitz2L (Hitz2L)
package {
import ENGINE.DISPLAY.*;
import flash.geom.*;
import ENGINE.INTERFACE.*;
import RES.WINDOWS.*;
import ENGINE.INTERFACE.ANIMATORS.*;
import ENGINE.GAME.*;
import ENGINE.CORE.*;
import ENGINE.SMARTFOX.*;
public class Hitz2L {
public static const strPrev:String = "Prev";
public static const strCancel:String = "Cancel";
public static const iBallUltraSpeed:int = 9;
public static const iBonusShape5ID:int = 12;
public static const iBonusSmallBallID:int = 5;
public static const miDeletePlayer:int = 9;
public static const miDeleteScoresConfirm:int = 13;
public static const iBonusUltraSpeedTime:int = 15;
public static const iBonusBigPlatformID:int = 17;
public static const iBonusShape4ID:int = 11;
public static const strBonusPossibility:String = "Possibility";
public static const strPresents:String = "presents";
public static const strBonusesInfo:Array = ["No Bonus", "Random Bonus", "Extra ball", "Ultra speed", "High Speed", "Low Speed", "Normal Speed", "Small Ball", "Big Ball", "Normal Ball", "Shape 1", "Shape 2", "Shape 3", "Shape 4", "Shape 5", "Shape 6", "Shape 7", "Small Platform", "Normal Platform", "Big Platform", "Fire Ball", "Extra Life", "Hidden Bonus"];
public static const OSBubbleBangSInd:int = 0;
public static const miCommingSoon:int = 6;
public static const strConnect1URL:String = "http://www.wellgames.com/free_online/hitz2/?g=hitz2_en";
public static const iBallNormalSpeed:int = 5;
public static const miGlobalTop:int = 18;
public static const iBonusAddLifeID:int = 19;
public static const strResults:String = "Results";
public static const OSAppearInd:int = 13;
public static const iBonusHighSpeedID:int = 2;
public static const strDoYouWant:String = "Do you want
to start next
level?";
public static const iBonusShape3ID:int = 10;
public static const strChoosePlayer:String = "Choose a Player";
public static const sBBannerPrefix:String = "bottom/";
public static const VERSION:String = "1";
public static const strCommingSoon:String = "Comming Soon...";
public static const strInstructionsText:String = ((("Move the platform by moving your mouse, bounce\n" + "the ball towards the obstacles and break them.\n") + "Colored obstacles require multiple hits before\n") + "they get broken. Use bonuses of 21 types:");
public static const strNext:String = "Next";
public static const strConnect2URL:String = "http://www.wellgames.com/?g=hitz";
public static const iBonusShape2ID:int = 9;
public static const strPressDelete:String = "Press Del to delete selected polygon.";
public static const strMatherials:String = "Materials";
public static const iBallLowSpeedTime:int = 10;
public static const miLastWindow:int = 1;
public static const strFullScreen:String = "Full Screen";
private static const iWOptionsVolume:Array = [Hitz2L.strOff, "10%", "20%", "30%", "40%", "50%", "60%", "70%", "80%", "90%", "100%"];
public static const strReplayLevel:String = "Replay Level";
public static const strConnectionFailed:String = "Connection Failed";
public static const strSite:String = "WELLGAMES.COM";
public static const strSendingLevel:String = "Sending Level";
public static const iBonusSmallPlatformID:int = 15;
public static const strNextLevel:String = "Next Level";
public static const iBonusShape1ID:int = 8;
public static const miMenu:int = 5;
public static const strGlobal:String = "Global";
public static const strConnect3URL:String = "http://absolutist.com/cgi-bin/tell_a_friend.pl?url=http://wellgames.com/free_online/hitz2/?g=hitz2_en";
public static const strMoreGames:String = "More Games";
public static const strDeletePlayer:String = "Delete Player?";
public static const iRandomBonusID:int = -1;
public static const strPlace:String = " Place";
public static const strBonuse2:String = " – makes the ball move with maximum speed";
public static const strBonuse3:String = " – speeds up the move of the ball";
public static const strBonuse4:String = " – slows down the speed of the ball to normal";
public static const strSound:String = "Sound Volume";
public static const strBonuse6:String = " – makes the size of the ball smaller";
public static const strBonuse7:String = " – changes the size of the ball to normal";
public static const strBonuse8:String = " - makes the size of the ball bigger";
public static const strBonuse9:String = " - shape 1 .. 7 - types of the platform";
public static const strBonuse5:String = " – makes the speed of the ball very slow";
public static const miDeleteScores:int = 14;
public static const strBonuse1:String = " – you receive additional ball to play";
public static const miOptions:int = 10;
public static const strHighScores:String = "High Scores";
public static const strNewPlayer:String = "NEW PLAYER!";
public static const miDeletePlayerConfirm:int = 8;
public static const miInstructions:int = 17;
public static const strOff:String = "Off";
public static const strReiting2:String = "'s Rating Is ";
public static const strDeleteScoresConfirm:String = "Are you sure you
want to delete
scores table?";
public static const strPleaseWait:String = "Please wait";
public static const sServer:String = "www.wellgames.com";
public static const strHasReiting:String = "'s
Rating Is
";
public static const strBonuses:String = "Bonuses";
public static const strPublish:String = "Publish";
public static const sDebug:Boolean = false;
public static const strNew:String = "New";
public static const strReiting1:String = " Place: ";
public static const iMetalID:int = 2;
public static const sTBannerPrefix:String = "top/";
public static const strOpponentFailedLevel:String = "Opponent
failed
level";
public static const iPlayerFieldPos:Point = new Point(300, 300);
public static const strLoading:String = "Loading...";
public static const iOpponentFieldSize:int = 200;
public static const strConnect2:String = "Try Other
Multiplayer
Games!";
public static const sXTName:String = "hz2";
public static const OSSmileInd:int = 11;
public static const strConnect1:String = "Play With
Other Gamers
In Multiplayer
Mode!";
public static const strYourReiting:String = "Your Rating";
public static const strConnect3:String = "Tell A Friend
About
Hitz2!";
public static const strGainedScore:String = "Gained Score";
public static const iDarkMetalID:int = 4;
public static const iBaseSize:int = 500;
public static const iOpponentFieldPos:Point = new Point(700, 200);
public static const iGelID:int = 3;
public static const strLevelSent:String = "Level Successfully Sent";
public static const miEnterNewName:int = 4;
public static const iNoBonusID:int = -2;
public static const iStoneColors:Array = [12630564, 2515645, 14433083, 4560932, 11539627, 1154953, 10236529, 15105084, 11560980, 0xA6A6A6];
public static const strBonuse10:String = " - makes the size of the platform smaller";
public static const strBonuse11:String = " - changes the size of the platform to normal";
public static const strBonuse12:String = " - makes the size of the platform bigger";
public static const strBonuse13:String = " - fire ball";
public static const strBonuse14:String = " – brings your additional life";
public static const iCandyColors:Array = [14728274, 2188749, 14433083, 4626500, 15090657, 4702124, 10236529, 15105084, 11560980, 0xC8C8C8];
public static const strLevelSendFailed:String = "Level Publishing Failed";
public static const strBonuse15:String = " - can be bonus of any possible type";
public static const strLevelComplete:String = "Puzzle Complete";
public static const strCreatedBy:String = "Created by ";
public static const miIntro:int = 2;
public static const strWithScore:String = "With Score";
public static const strPlayers:String = "Players";
public static const strPause:String = "Pause";
public static const strOpponentCompletedLevel:String = "Opponent
completed
level";
public static const strClose:String = "Close";
public static const strEnterName:String = "please enter your name:";
public static const iDarkMetalColors:Array = [0xFFFFFF, 8904191, 652865, 16207691, 7900159, 0xFF8400, 0xEAFF00, 15105084, 11560980, 15090657];
private static const OWHighScoresType:Array = [Hitz2L.strLocal, Hitz2L.strPersonal];
public static const strTest:String = "Test";
public static const strLevelConfirm2:String = "score";
public static const iBonusNormalPlatformID:int = 16;
public static const strMusic:String = "Music Volume";
public static const strInstructions:String = "Instructions";
public static const OSOopsInd:int = 12;
public static const iPlayerFieldSize:int = 570;
public static const strAccept:String = "Accept";
public static const iBonusHighSpeedTime:int = 25;
public static const iBallHighSpeed:int = 7;
public static const strClear:String = "Clear";
public static const iBonusUltraSpeedID:int = 1;
public static const strConnectionToServer:String = "Connecting To Server...";
public static const strOpponent:String = "Opponent";
public static const strSendMail:String = "Send Mail";
public static const strPlayersOnline1:String = "Players
Online";
public static const sZone:String = "Hitz2";
public static const strDeletePlayerConfirm:String = "Are you sure you
want to delete
this profile?";
public static const iBonusAddBallID:int = 0;
public static const strTotalScore:String = "Level Score";
public static const strBonusScore:String = "Bonus Score";
public static const miLevelEditor:int = 15;
public static const sBannerID:String = "hitz";
public static const strScore:String = "Score";
public static const iBonusesColors:Array = ["aqua1", "red", "red", "blue", "yellow", "blue", "blue", "blue", "green", "green", "green", "green", "green", "green", "green", "red", "yellow", "green", "green", "green", "green", "yellow"];
public static const strGameName:String = "Hitz 2!";
public static const iHitObstacleScore:int = 30;
public static const strColors:String = "Colors";
public static const strYes:String = "Yes";
public static const iBonusFireBallID:int = 18;
public static const iStartLives:int = 3;
public static const miNullWindow:int = 0;
public static const iBonusLowSpeedTime:int = 20;
public static const sDomain:String = "wellgames.com";
public static const strTestLevel:String = "Test Level";
public static const miHighScores:int = 12;
public static const iBonusNormalSpeedID:int = 4;
public static const strPauseEscape:String = "Pause
Press <Esc> to continue";
public static const strLevelEditor:String = "LEVEL EDITOR";
public static const strEditor:String = "Editor";
public static const strOptions:String = "Game Options";
public static const strMenu:String = "Menu";
public static const strDelete:String = "Delete";
public static const OSBubbleBangEInd:int = 10;
public static const iMetalColors:Array = [14728274, 2188749, 14433083, 4626500, 15090657, 4702124, 10236529, 15105084, 11560980, 0xC8C8C8];
private static const iWOptionsOnOff:Array = [Hitz2L.strOff, Hitz2L.strOn];
public static const iBannersPos:Point = new Point(600, 0);
public static const OSBallAppearInd:int = 13;
public static const iBallSizes:Array = [12, 20, 28];
public static const iBonusNormalBallID:int = 7;
public static const iBallLowSpeed:int = 3;
public static const strGlobalTop:String = "Global TOP - 10";
public static const strChangePlayer:String = "click to change player";
public static const iBonusLowSpeedID:int = 3;
public static const strInternetCommunity:String = "Internet Community - 100 Levels";
public static const strCommingSoonI:String = "This option is not available
at the moment";
public static const strPersonal:String = "Personal";
public static const miChoosePlayer:int = 7;
public static const iStoneID:int = 0;
public static const iBonusHiddenID:int = 20;
public static const iCandyID:int = 1;
public static const iBonusShape7ID:int = 14;
public static const miEnterNameFirst:int = 3;
public static const miGame:int = 16;
public static const strPressEscape:String = "Press Esc to cancel polygon creation.";
private static const OSoundParams:Array = [Hitz2L.OSBubbleBang01, Hitz2L.OSBubbleBang02, Hitz2L.OSBubbleBang03, Hitz2L.OSBubbleBang04, Hitz2L.OSBubbleBang05, Hitz2L.OSBubbleBang06, Hitz2L.OSBubbleBang07, Hitz2L.OSBubbleBang08, Hitz2L.OSBubbleBang09, Hitz2L.OSBubbleBang10, Hitz2L.OSBubbleBang11, Hitz2L.OSEEE, Hitz2L.OSOops2, Hitz2L.OSBubbleBang12];
public static const strPlayOnline:String = "Play Online!";
public static const strLocal:String = "Local";
public static const miPublisher:int = 11;
public static const strNo:String = "No";
public static const strLevel:String = "Level";
public static const iBonusBigBallID:int = 6;
public static const iBonusShape6ID:int = 13;
public static const strOnline:String = "Online";
public static const strOn:String = "On";
public static const miConfirmation:int = 19;
public static const strPlayersOnline:String = "Players Online";
public static const iGelColors:Array = [60, 210, 180, 90, 0, 300, 15, 30, 330, "white"];
public static const strWelcome:String = "Welcome";
public static var iGlobalTop10:Array;
private static var ScoreCounterDigit:Array = [OInterface.OTabMake, [[Hitz2S.Header, 17, 30, "aqua1", " ", 0, 0, null, 0, false], [Hitz2S.Header, 17, 30, "aqua1", "0", 0, 0, null, 0, false], [Hitz2S.Header, 17, 30, "aqua1", "1", 0, 0, null, 0, false], [Hitz2S.Header, 17, 30, "aqua1", "2", 0, 0, null, 0, false], [Hitz2S.Header, 17, 30, "aqua1", "3", 0, 0, null, 0, false], [Hitz2S.Header, 17, 30, "aqua1", "4", 0, 0, null, 0, false], [Hitz2S.Header, 17, 30, "aqua1", "5", 0, 0, null, 0, false], [Hitz2S.Header, 17, 30, "aqua1", "6", 0, 0, null, 0, false], [Hitz2S.Header, 17, 30, "aqua1", "7", 0, 0, null, 0, false], [Hitz2S.Header, 17, 30, "aqua1", "8", 0, 0, null, 0, false], [Hitz2S.Header, 17, 30, "aqua1", "9", 0, 0, null, 0, false]], 17, 30, null, null];
public static var OWInfoP:Array = [[Hitz2S.Header, 250, 20, "yellow", Hitz2L.strConnect1, 5, 265, null, 0, true]];
public static var fastball:Class = Hitz2L_fastball;
public static var OIRight:Class = Hitz2L_OIRight;
public static var OWHighScores:Array = [[Hitz2S.BigFrame, 600, 510, "yellow", "white", 0, 0, null, 0, true], [Hitz2S.Header, 600, 50, "yellow", Hitz2L.strHighScores, 0, 20, null, 0, true], [Hitz2S.ListBoxTextHSlider, 280, 50, "aqua1", false, 190, 40, "aqua1", "", Hitz2L.OWHighScoresType, 160, 75, "iType", 0, true], [Hitz2S.SmallBorder, 540, 200, "yellow", 30, 130, null, 0, true], [ODisplay.IDisplayObjectMake, Hitz2L.OWHighScoreTabF, 45, 145, "iTable", 0, true], [Hitz2S.MakeTextButton, 180, 60, "yellow", "yellow", 30, Hitz2L.strGlobal, 30, 350, "iGlobal", 0, true], [Hitz2S.MakeTextButton, 180, 60, "aqua1", "aqua1", 30, Hitz2L.strPublish, 390, 350, "iPublish", 0, true], [Hitz2S.MakeTextButton, 150, 60, "red", "red", 30, Hitz2L.strClear, 110, 430, "iClear", 0, true], [Hitz2S.MakeTextButton, 150, 60, "yellow1", "yellow1", 30, Hitz2L.strClose, 340, 430, "iClose", 0, true]];
public static var OWDeleteScoresConfirm:Array = [[Hitz2S.BigFrame, 420, 270, "red", "yellow", 0, 0, null, 0, true], [Hitz2S.Header, 420, 30, "aqua1", Hitz2L.strDeleteScoresConfirm, 0, 85, null, 0, true], [Hitz2S.MakeTextButton, 150, 60, "yellow1", "yellow1", 30, Hitz2L.strYes, 50, 190, "iButtons", 0, true], [Hitz2S.MakeTextButton, 150, 60, "red", "red", 30, Hitz2L.strNo, 220, 190, "iButtons", 1, true]];
private static var OWHighScoreTabF:Array = [OInterface.OTabMake, [[OInterface.OIObjectMake, Hitz2L.OWHighScoreLocal, null, 0, 0, null, 0, false], [OInterface.OIObjectMake, Hitz2L.OWHighScorePersonal, null, 0, 0, null, 0, false]], 410, 270, Hitz2L.OTimerAnimator, null];
public static var OWEnterName:Array = [[Hitz2S.BigFrame, 460, 290, "aqua1", "white", 0, 0, null, 0, true], [Hitz2S.Header, 460, 50, "aqua1", Hitz2L.strNewPlayer, 0, 20, null, 0, true], [Hitz2S.Header, 460, 30, "yellow", Hitz2L.strEnterName, 0, 90, null, 0, true], [Hitz2S.InputText, 400, 60, "yellow", "well", [45, 0.9, 0.6], 11, 30, 130, "iName", 0, true], [Hitz2S.MakeTextButton, 150, 60, "yellow1", "yellow1", 30, Hitz2L.strAccept, 70, 210, "iAccept", 0, true], [Hitz2S.MakeTextButton, 150, 60, "red", "red", 30, Hitz2L.strCancel, 240, 210, "iCancel", 0, true]];
public static var OWGameConnection:Array = [Hitz2S.ColorText, 50, Hitz2L.COLORS1, Hitz2L.strConnectionToServer, OInterface.iDefSlowAnimators];
public static var hiddenBonus:Class = Hitz2L_hiddenBonus;
public static var shape2:Class = Hitz2L_shape2;
public static var shape3:Class = Hitz2L_shape3;
public static var shape4:Class = Hitz2L_shape4;
public static var shape5:Class = Hitz2L_shape5;
public static var shape6:Class = Hitz2L_shape6;
public static var shape7:Class = Hitz2L_shape7;
public static var shape1:Class = Hitz2L_shape1;
public static var COLORS1:Array = ["red", "red1", "yellow", "green", "magenta", "aqua"];
public static var COLORS2:Array = ["180", "210", "240", "270", "300", "330", "0", "30", "60", "90", "120", "150", "180", "210", "240", "270", "300", "330", "0", "30", "60", "90", "120", "150"];
public static var CEditor_BonusesC:Array = [190, 12, "aqua1"];
public static var COLORS3:Array = ["0", "30", "60", "90", "120", "150", "180", "210", "240", "270", "300", "330"];
public static var CGameBaseTest:Array = [[Hitz2S.ColorHeader, 210, 30, Hitz2L.COLORS1, Hitz2L.strGameName, null, 600, 2, "iGameName", 0, true], [Hitz2S.Header, 200, 20, "aqua1", Hitz2L.strSite, 600, 40, "iSiteName", 0, true], [Hitz2S.InvisibleButton, 200, 50, 600, 10, "iLinkButton", 0, true], [Hitz2S.Text, 25, "aqua1", (Hitz2L.strScore + ": "), 17, 560, "iPlayerScoreCaption", 0, true], [ODisplay.IDisplayObjectMake, ScoreCounter, 137, 564, "iPlayerScore", 0, true], [Hitz2S.TextAlign, 590, 25, 25, "aqua1", Hitz2L.strTestLevel, 2, 0, 0, 568, "iCurrentLevelCaption", 0, true], [Hitz2S.MakeTextButton, 180, 44, "aqua1", "aqua1", 25, Hitz2L.strPause, 610, 490, "iPause", 0, true], [Hitz2S.Header, 600, 35, "aqua1", Hitz2L.strPauseEscape, 0, 300, "iPauseText", 0, false]];
public static var OWResultsLevelScore:Array = [[Hitz2S.TextAlign, 695, 34, 50, "yellow", Hitz2L.strGainedScore, 0, 1, 0, 0, null, 0, true], [Hitz2S.TextAlign, 695, 34, 50, "yellow", "9", 2, 1, 0, 0, null, 0, true]];
public static var OWResults:Array = [[Hitz2S.ColorHeader, 800, 80, COLORS1, strResults, OInterface.iDefSlowAnimators, 0, 10, null, 0, false], [OInterface.OIObjectMake, OWResultsLevelScore, OInterface.iDefSlowAnimators, 45, 150, null, 0, false], [OInterface.OIObjectMake, OWResultsBonusScore, OInterface.iDefSlowAnimators, 45, 210, null, 0, false], [OInterface.OIObjectMake, OWResultsTotalScore, OInterface.iDefSlowAnimators, 45, 270, null, 0, false], [OInterface.OIObjectMake, OWResultsReiting, OInterface.iDefSlowAnimators, 45, 340, null, 0, false], [Hitz2S.MakeTextButton, 320, 60, "yellow1", "yellow1", 30, Hitz2L.strNextLevel, 240, 515, "iButtons", 0, false], [Hitz2S.MakeTextButton, 320, 60, "red1", "red1", 30, Hitz2L.strNextLevel, 40, 515, "iButtons", 1, false], [Hitz2S.MakeTextButton, 320, 60, "yellow1", "yellow1", 30, Hitz2L.strReplayLevel, 440, 515, "iButtons", 2, false]];
public static var OILeft:Class = Hitz2L_OILeft;
public static var OWPublisher:Array = [[Hitz2S.BigFrame, 540, 250, "aqua1", "white", 0, 0, null, 0, true], [Hitz2S.Header, 540, 60, "aqua1", Hitz2L.strSendingLevel, 0, 20, null, 0, true], [Hitz2S.MakeTextButton, 150, 60, "yellow", "yellow", 30, Hitz2L.strClose, 195, 175, "iCancel", 0, true]];
public static var randomBonus:Class = Hitz2L_randomBonus;
public static var bonusBorder:Class = Hitz2L_bonusBorder;
public static var OWCommingSoon:Array = [[Hitz2S.BigFrame, 530, 290, "yellow1", "yellow", 0, 0, null, 0, true], [Hitz2S.Header, 530, 50, "red", Hitz2L.strCommingSoon, 0, 20, null, 0, true], [Hitz2S.Header, 530, 30, "magenta", Hitz2L.strCommingSoonI, 0, 125, null, 0, true], [Hitz2S.MakeTextButton, 150, 60, "aqua1", "aqua1", 30, Hitz2L.strClose, 190, 210, null, 0, true]];
public static var background:Class = Hitz2L_background;
public static var texture:Class = Hitz2L_texture;
public static var OWResultsTotalScore:Array = [[Hitz2S.TextAlign, 695, 34, 50, "yellow1", Hitz2L.strTotalScore, 0, 1, 0, 0, null, 0, true], [Hitz2S.TextAlign, 695, 34, 50, "yellow1", "9", 2, 1, 0, 0, null, 0, true]];
public static var OFont:Class = Hitz2L_OFont;
public static var OWResultsBonusScore:Array = [[Hitz2S.TextAlign, 695, 34, 50, "red", Hitz2L.strBonusScore, 0, 1, 0, 0, null, 0, true], [Hitz2S.TextAlign, 695, 34, 50, "red", "9", 2, 1, 0, 0, null, 0, true]];
public static var OWGameCurLevel:Array = [[Hitz2S.ColorHeader, 800, 60, Hitz2L.COLORS1, Hitz2L.strLevel, OInterface.iDefSlowAnimators, 0, 0, null, 0, true], [Hitz2S.ColorHeader, 800, 60, Hitz2L.COLORS1, Hitz2L.strCreatedBy, OInterface.iDefSlowAnimators, 0, 60, null, 0, true]];
private static var iSoundRegistered:Boolean = OSound.RegisterEmbedSounds(OSoundParams);
private static var OTimerAnimator:Object = {F:OA_AlphaFade.Make, iSAlpha:-1, iEAlpha:0, iSInd:[0], iEInd:[1], iPIter:15};
public static var OSOops2:Class = Hitz2L_OSOops2;
public static var FireBall:Class = Hitz2L_FireBall;
public static var CLoadingDisplayer:Array = [[Hitz2S.ColorHeader, 800, 50, Hitz2L.COLORS1, Hitz2L.strLoading, null, 0, 200, null, 0, true], [Hitz2S.ColorHeader, 800, 50, Hitz2L.COLORS1, Hitz2L.strPleaseWait, null, 0, 330, null, 0, true], [Hitz2S.SmallFrameWithoutBorder, 600, 50, "yellow", "aqua1", 100, 275, "iProgress", 0, true], [Hitz2S.SmallBorder, 600, 50, "yellow", 100, 275, null, 0, true]];
public static var OWIntroParam:Array = [[OSprite.Make, [[ODisplay.SpriteRect, (800 * OGlobal.Scale), (600 * OGlobal.Scale)]], 0, 0, "iHit", 0, false], [Hitz2S.Header, 800, 50, "aqua1", Hitz2L.strSite, 0, 160, "iHeader", 0, true], [Hitz2S.Header, 800, 40, "aqua1", Hitz2L.strPresents, 0, 400, "iFooter", 0, true], [Hitz2S.ColorHeader, 800, 120, Hitz2L.COLORS1, Hitz2L.strGameName, null, 0, 0, "iName", 0, true], [Hitz2S.ColorHeader, 800, 30, Hitz2L.COLORS1, Hitz2L.strInternetCommunity, null, 0, 0, "iName1", 0, true]];
public static var bigPlatform:Class = Hitz2L_bigPlatform;
public static var OWEditor:Array = [[Hitz2S.Header, 600, 50, "aqua1", Hitz2L.strLevelEditor, 0, 0, null, 0, true], [Hitz2S.SmallFrame, 200, 100, "yellow", "white", 600, 5, null, 0, true], [Hitz2S.SmallFrame, 200, 120, "yellow1", "white", 600, 115, null, 0, true], [Hitz2S.SmallFrame, 200, 200, "aqua1", "white", 600, 245, null, 0, true], [Hitz2S.Header, 200, 25, "yellow", Hitz2L.strMatherials, 600, 15, null, 0, true], [Hitz2S.Header, 200, 25, "yellow1", Hitz2L.strColors, 600, 125, null, 0, true], [Hitz2S.Header, 200, 25, "aqua1", Hitz2L.strBonuses, 600, 0x0101, null, 0, true], [Hitz2S.Header, 200, 25, "aqua1", Hitz2L.strBonusPossibility, 600, 365, null, 0, true], [Hitz2S.MakeTextButton, 90, 40, "yellow", "yellow", 25, Hitz2L.strTest, 610, 450, "iTest", 0, true], [Hitz2S.MakeTextButton, 90, 40, "red", "red", 25, Hitz2L.strClear, 700, 450, "iClear", 0, true], [Hitz2S.MakeTextButton, 180, 40, "yellow1", "yellow1", 25, Hitz2L.strPublish, 610, 500, "iPublish", 0, true], [Hitz2S.MakeTextButton, 180, 40, "aqua1", "aqua1", 25, Hitz2L.strClose, 610, 550, "iClose", 0, true], [Hitz2S.Header, 600, 25, "aqua1", Hitz2L.strPressEscape, 0, 530, null, 0, true], [Hitz2S.Header, 600, 25, "yellow", Hitz2L.strPressDelete, 0, 560, null, 0, true], [Hitz2S.MakeSpriteButton, 30, 30, "aqua1", "aqua1", Hitz2L.OILeft, "text 30", 1, 640, 290, "iPrev", 0, true], [Hitz2S.MakeSpriteButton, 30, 30, "aqua1", "aqua1", Hitz2L.OIRight, "text 30", 1, 730, 290, "iNext", 0, true], [Hitz2S.MakeSpriteButton, 30, 30, "aqua1", "aqua1", Hitz2L.OILeft, "text 30", 1, 635, 400, "iPrevP", 0, true], [Hitz2S.MakeSpriteButton, 30, 30, "aqua1", "aqua1", Hitz2L.OIRight, "text 30", 1, 735, 400, "iNextP", 0, true]];
public static var OIDown:Class = Hitz2L_OIDown;
public static var GreyBall:Class = Hitz2L_GreyBall;
public static var OWGlobalTop:Array = [[Hitz2S.BigFrame, 540, 500, "aqua1", "white", 0, 0, null, 0, true], [Hitz2S.Header, 540, 50, "aqua1", Hitz2L.strGlobalTop, 0, 15, null, 0, true], [Hitz2S.MakeTextButton, 150, 50, "yellow", "yellow", 30, Hitz2L.strClose, 185, 440, "iCancel", 0, true]];
public static var OWDeletePlayerConfirm:Array = [[Hitz2S.BigFrame, 420, 270, "red", "yellow", 0, 0, null, 0, true], [Hitz2S.Header, 420, 30, "aqua1", Hitz2L.strDeletePlayerConfirm, 0, 85, null, 0, true], [Hitz2S.MakeTextButton, 150, 60, "yellow1", "yellow1", 30, Hitz2L.strYes, 50, 190, "iButtons", 0, true], [Hitz2S.MakeTextButton, 150, 60, "red", "red", 30, Hitz2L.strNo, 220, 190, "iButtons", 1, true]];
public static var OWGameTest:Array = [[Hitz2S.MakeTextButton, 180, 44, "aqua1", "aqua1", 25, Hitz2L.strClose, 610, 550, "iClose", 0, true]];
public static var OSBubbleBang01:Class = Hitz2L_OSBubbleBang01;
public static var OSBubbleBang05:Class = Hitz2L_OSBubbleBang05;
public static var OWChoosePlayer:Array = [[Hitz2S.BigFrame, 500, 500, "aqua1", "white", 0, 0, null, 0, true], [Hitz2S.Header, 500, 50, "aqua1", Hitz2L.strChoosePlayer, 0, 20, null, 0, true], [Hitz2S.ListBoxText, 360, 40, "yellow", "yellow", 5, null, 30, 90, "iListBox", 0, true], [Hitz2S.MakeTextButton, 150, 60, "yellow", "yellow", 30, Hitz2L.strNew, 30, 340, "iNew", 0, true], [Hitz2S.MakeTextButton, 150, 60, "magenta", "magenta", 30, Hitz2L.strDelete, 320, 340, "iDelete", 0, true], [Hitz2S.MakeTextButton, 150, 60, "yellow1", "yellow1", 30, Hitz2L.strAccept, 90, 420, "iAccept", 0, true], [Hitz2S.MakeTextButton, 150, 60, "red", "red", 30, Hitz2L.strCancel, 260, 420, "iCancel", 0, true]];
public static var OSBubbleBang02:Class = Hitz2L_OSBubbleBang02;
public static var OSBubbleBang04:Class = Hitz2L_OSBubbleBang04;
public static var OSBubbleBang06:Class = Hitz2L_OSBubbleBang06;
public static var OSBubbleBang07:Class = Hitz2L_OSBubbleBang07;
public static var OWGame:Array = [[Hitz2S.MakeTextButton, 180, 44, "aqua1", "aqua1", 25, Hitz2L.strLevel, 610, 430, "iNextLevel", 0, false]];
public static var ball:Class = Hitz2L_ball;
public static var OSBubbleBang03:Class = Hitz2L_OSBubbleBang03;
public static var OSBubbleBang08:Class = Hitz2L_OSBubbleBang08;
public static var OSBubbleBang10:Class = Hitz2L_OSBubbleBang10;
public static var OIUp:Class = Hitz2L_OIUp;
public static var OSBubbleBang09:Class = Hitz2L_OSBubbleBang09;
public static var OSBubbleBang11:Class = Hitz2L_OSBubbleBang11;
public static var OSBubbleBang12:Class = Hitz2L_OSBubbleBang12;
public static var OWConfirmation:Array = [[Hitz2S.BigFrame, 530, 290, "yellow1", "yellow", 0, 0, null, 0, true], [Hitz2S.Header, 530, 40, "aqua1", Hitz2L.strDoYouWant, 0, 80, null, 0, true], [Hitz2S.MakeTextButton, 150, 60, "aqua1", "aqua1", 30, Hitz2L.strYes, 90, 210, "iYes", 0, true], [Hitz2S.MakeTextButton, 150, 60, "aqua1", "aqua1", 30, Hitz2L.strNo, 290, 210, "iNo", 0, true]];
public static var OWPublisherFailed:Array = [Hitz2S.ColorText, 35, Hitz2L.COLORS1, Hitz2L.strLevelSendFailed, OInterface.iDefSlowAnimators];
public static var OGlobalTopTable:Array = [[Hitz2S.TextAlign, 510, 30, 30, "aqua1", "1. ", 0, 1, 10, 0, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "aqua1", "---", 2, 1, 0, 0, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "blue", "2. ", 0, 1, 10, 35, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "blue", "---", 2, 1, 0, 35, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "blue1", "3. ", 0, 1, 10, 70, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "blue1", "---", 2, 1, 0, 70, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "magenta", "4. ", 0, 1, 10, 105, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "magenta", "---", 2, 1, 0, 105, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "magenta1", "5. ", 0, 1, 10, 140, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "magenta1", "---", 2, 1, 0, 140, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "red", "6. ", 0, 1, 10, 175, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "red", "---", 2, 1, 0, 175, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "red1", "7. ", 0, 1, 10, 210, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "red1", "---", 2, 1, 0, 210, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "aqua", "8. ", 0, 1, 10, 245, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "aqua", "---", 2, 1, 0, 245, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "yellow1", "9. ", 0, 1, 10, 280, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "yellow1", "---", 2, 1, 0, 280, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "yellow", "10.", 0, 1, 10, 315, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "yellow", "---", 2, 1, 0, 315, null, 0, true]];
public static var texture2:Class = Hitz2L_texture2;
public static var texture3:Class = Hitz2L_texture3;
public static var texture1:Class = Hitz2L_texture1;
public static var particle:Class = Hitz2L_particle;
public static var normalPlatform:Class = Hitz2L_normalPlatform;
private static var OWPlayersCounterF:Array = [OInterface.OCounterMake, [[ODisplay.IDisplayObjectMake, OWPlayersCounterElement, 0, 0, "iDigits", 0, true], [ODisplay.IDisplayObjectMake, OWPlayersCounterElement, 17, 0, "iDigits", 1, true], [ODisplay.IDisplayObjectMake, OWPlayersCounterElement, 34, 0, "iDigits", 2, true], [ODisplay.IDisplayObjectMake, OWPlayersCounterElement, 51, 0, "iDigits", 3, true], [ODisplay.IDisplayObjectMake, OWPlayersCounterElement, 67, 0, "iDigits", 4, true]], 85, 30];
public static var smallPlatform:Class = Hitz2L_smallPlatform;
public static var stdball:Class = Hitz2L_stdball;
private static var OWPlayersCounterElement:Array = [OInterface.OTabMake, [[Hitz2S.Header, 17, 30, "0", " ", 0, 0, null, 0, false], [Hitz2S.Header, 17, 30, "0", "0", 0, 0, null, 0, false], [Hitz2S.Header, 17, 30, "30", "1", 0, 0, null, 0, false], [Hitz2S.Header, 17, 30, "60", "2", 0, 0, null, 0, false], [Hitz2S.Header, 17, 30, "90", "3", 0, 0, null, 0, false], [Hitz2S.Header, 17, 30, "120", "4", 0, 0, null, 0, false], [Hitz2S.Header, 17, 30, "150", "5", 0, 0, null, 0, false], [Hitz2S.Header, 17, 30, "180", "6", 0, 0, null, 0, false], [Hitz2S.Header, 17, 30, "210", "7", 0, 0, null, 0, false], [Hitz2S.Header, 17, 30, "240", "8", 0, 0, null, 0, false], [Hitz2S.Header, 17, 30, "270", "9", 0, 0, null, 0, false]], 17, 30, Hitz2L.OTimerAnimator, null];
public static var multiball:Class = Hitz2L_multiball;
public static var OWConnectionFailed:Array = [Hitz2S.ColorText, 35, Hitz2L.COLORS1, Hitz2L.strConnectionFailed, OInterface.iDefSlowAnimators];
public static var NoBonus:Class = Hitz2L_NoBonus;
public static var OWPublisherSent:Array = [Hitz2S.ColorText, 35, Hitz2L.COLORS1, Hitz2L.strLevelSent, OInterface.iDefSlowAnimators];
public static var OWInfoPUserNotFound:Array = [[Hitz2S.Header, 200, 20, "yellow", Hitz2L.strConnect1, 0, 200, null, 0, true], [Hitz2S.Header, 200, 20, "yellow", Hitz2L.strConnect1, 0, 265, null, 0, true]];
public static var OWPublisherConnection:Array = [Hitz2S.ColorText, 35, Hitz2L.COLORS1, Hitz2L.strConnectionToServer, OInterface.iDefSlowAnimators, 5];
public static var bigball:Class = Hitz2L_bigball;
public static var CGameRecordedMP:Array = [[Hitz2S.SmallFrame, 200, 160, "aqua1", "white", 600, 275, "iOpponentPanel", 0, true], [Hitz2S.Header, 200, 25, "aqua1", Hitz2L.strOpponent, 600, 290, "iOpponentCaption", 0, true], [Hitz2S.Header, 200, 25, "aqua1", "GYL", 600, 320, "iOpponentName", 0, true], [Hitz2S.Header, 200, 25, "aqua1", (Hitz2L.strScore + ": "), 600, 365, "iEnemyScoreCaption", 0, true], [ODisplay.IDisplayObjectMake, ScoreCounter, 658, 390, "iEnemyScoreValue", 0, true], [Hitz2S.MakeTextButton, 180, 44, "aqua1", "aqua1", 25, Hitz2L.strMenu, 610, 550, "iMenu", 0, true]];
public static var OWMenuReiting:Array = [[Hitz2S.Header, 800, 30, "yellow", "W", 0, 364, null, 0, true]];
private static var ScoreCounter:Array = [OInterface.OCounterMake, [[ODisplay.IDisplayObjectMake, ScoreCounterDigit, 0, 0, "iDigits", 0, true], [ODisplay.IDisplayObjectMake, ScoreCounterDigit, 17, 0, "iDigits", 1, true], [ODisplay.IDisplayObjectMake, ScoreCounterDigit, 34, 0, "iDigits", 2, true], [ODisplay.IDisplayObjectMake, ScoreCounterDigit, 51, 0, "iDigits", 3, true], [ODisplay.IDisplayObjectMake, ScoreCounterDigit, 67, 0, "iDigits", 4, true]], 85, 30];
public static var OWInfoPConnect:Array = [[Hitz2S.Header, 180, 20, "yellow", Hitz2L.strConnect1, 10, 200, null, 0, true], [Hitz2S.MakeTextButton, 180, 40, "yellow", "yellow", 20, Hitz2L.strPlayOnline, 10, 290, null, 0, true]];
public static var addLife:Class = Hitz2L_addLife;
public static var OSEEE:Class = Hitz2L_OSEEE;
public static var OWHighScoreLocal:Array = [[Hitz2S.TextAlign, 510, 30, 30, "red", "W", 0, 1, 0, 0, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "red", "9", 2, 1, 0, 0, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "red1", "W", 0, 1, 0, 35, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "red1", "9", 2, 1, 0, 35, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "yellow", "W", 0, 1, 0, 70, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "yellow", "9", 2, 1, 0, 70, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "yellow1", "W", 0, 1, 0, 105, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "yellow1", "9", 2, 1, 0, 105, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "green", "W", 0, 1, 0, 140, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "green", "9", 2, 1, 0, 140, null, 0, true]];
public static var CGameBase:Array = [[Hitz2S.ColorHeader, 210, 30, Hitz2L.COLORS1, Hitz2L.strGameName, null, 600, 2, "iGameName", 0, true], [Hitz2S.Header, 200, 20, "aqua1", Hitz2L.strSite, 600, 40, "iSiteName", 0, true], [Hitz2S.InvisibleButton, 200, 50, 600, 10, "iLinkButton", 0, true], [Hitz2S.Text, 25, "aqua1", (Hitz2L.strScore + ": "), 17, 560, "iPlayerScoreCaption", 0, true], [ODisplay.IDisplayObjectMake, ScoreCounter, 137, 564, "iPlayerScore", 0, true], [Hitz2S.TextAlign, 590, 25, 25, "aqua1", Hitz2L.strLevel, 2, 0, 0, 555, "iCurrentLevelCaption", 0, true], [Hitz2S.MakeTextButton, 180, 44, "aqua1", "aqua1", 25, Hitz2L.strPause, 610, 490, "iPause", 0, true], [Hitz2S.Header, 600, 35, "aqua1", Hitz2L.strPauseEscape, 0, 300, "iPauseText", 0, false]];
public static var OWMenu:Array = [[Hitz2S.Header, 800, 40, "magenta1", Hitz2L.strWelcome, 0, 5, null, 0, true], [Hitz2S.Header, 800, 30, "white", Hitz2L.strChangePlayer, 0, 50, null, 0, true], [Hitz2S.ColorHeader, 800, 90, Hitz2L.COLORS1, Hitz2L.strGameName, null, 0, 65, "iGameName", 0, true], [Hitz2S.Header, 800, 30, "yellow", Hitz2L.strInternetCommunity, 0, 165, null, 0, true], [Hitz2S.InvisibleButton, 400, 75, 200, 5, "iBName", 0, true], [ODisplay.IDisplayObjectMake, OWPlayersCounterF, 20, 214, "iCPlayers", 0, true], [Hitz2S.ColorText, 30, Hitz2L.COLORS1, Hitz2L.strPlayersOnline, null, 20, 208, "iPlayers", 0, true], [Hitz2S.MakeTextButton, 360, 80, "aqua1", "aqua1", 40, Hitz2L.strPlayOnline, 220, 265, "iPlayOnline", 0, true], [Hitz2S.MakeTextButton, 250, 50, "yellow", "yellow", 28, Hitz2L.strOptions, 75, 410, "iOptions", 0, true], [Hitz2S.MakeTextButton, 250, 50, "aqua", "aqua", 28, Hitz2L.strInstructions, 475, 410, "iInstructions", 0, true], [Hitz2S.MakeTextButton, 250, 50, "yellow1", "yellow1", 28, Hitz2L.strHighScores, 20, 475, "iHighScores", 0, true], [Hitz2S.MakeTextButton, 250, 50, "magenta1", "magenta1", 28, Hitz2L.strMoreGames, 530, 475, "iMoreGames", 0, true], [Hitz2S.MakeTextButton, 240, 50, "aqua", "aqua", 28, Hitz2L.strEditor, 280, 475, "iEditor", 0, true], [Hitz2S.MakeTextButton, 320, 50, "aqua1", "aqua1", 28, Hitz2L.strGlobalTop, 240, 540, "iGlobalTop", 0, true]];
public static var OWHighScorePersonal:Array = [[Hitz2S.TextAlign, 510, 30, 30, "aqua1", "W", 0, 1, 0, 0, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "aqua1", "9", 2, 1, 0, 0, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "blue", "W", 0, 1, 0, 35, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "blue", "9", 2, 1, 0, 35, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "blue1", "W", 0, 1, 0, 70, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "blue1", "9", 2, 1, 0, 70, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "magenta", "W", 0, 1, 0, 105, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "magenta", "9", 2, 1, 0, 105, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "magenta1", "W", 0, 1, 0, 140, null, 0, true], [Hitz2S.TextAlign, 510, 30, 30, "magenta1", "9", 2, 1, 0, 140, null, 0, true]];
public static var normalball:Class = Hitz2L_normalball;
public static var CGameSingle:Array = [[Hitz2S.MakeTextButton, 180, 44, "aqua1", "aqua1", 25, Hitz2L.strMenu, 610, 550, "iMenu", 0, true]];
public static var slowball:Class = Hitz2L_slowball;
public static var smallball:Class = Hitz2L_smallball;
public static var OWOptions:Array = [[Hitz2S.BigFrame, 540, 340, "aqua1", "white", 0, 0, null, 0, true], [Hitz2S.Header, 540, 50, "aqua1", Hitz2L.strOptions, 0, 20, null, 0, true], [Hitz2S.ListBoxTextHSlider, 520, 50, "yellow", false, 90, 40, "yellow", Hitz2L.strSound, Hitz2L.iWOptionsVolume, 10, 90, "iSound", 0, true], [Hitz2S.ListBoxTextHSlider, 520, 50, "yellow1", false, 90, 40, "yellow1", Hitz2L.strMusic, Hitz2L.iWOptionsVolume, 10, 140, "iMusic", 0, true], [Hitz2S.ListBoxTextHSlider, 520, 50, "red", false, 90, 40, "red", Hitz2L.strFullScreen, Hitz2L.iWOptionsOnOff, 10, 190, "iFullScreen", 0, true], [Hitz2S.MakeTextButton, 150, 60, "yellow1", "yellow1", 30, Hitz2L.strAccept, 110, 260, "iAccept", 0, true], [Hitz2S.MakeTextButton, 150, 60, "red", "red", 30, Hitz2L.strCancel, 280, 260, "iCancel", 0, true]];
public static var ultraball:Class = Hitz2L_ultraball;
public static var OWInstructions:Array = [[Hitz2S.BigFrame, 800, 600, "yellow", "white", 0, 0, null, 0, true], [Hitz2S.Header, 800, 40, "yellow", Hitz2L.strInstructions, 0, 20, null, 0, true], [Hitz2S.MakeTextButton, 190, 45, "yellow", "yellow", 30, Hitz2L.strClose, 305, 540, "iCloseButton", 0, true]];
public static var OWResultsReiting:Array = [[Hitz2S.ColorText, 60, COLORS2, strYourReiting, OInterface.iDefSlowAnimators, 145, 0, null, 0, true], [Hitz2S.Header, 710, 80, "aqua1", "9", 0, 80, null, 0, true]];
public static var fireBallBonus:Class = Hitz2L_fireBallBonus;
public static var OWInstructionsPage1:Array = [[Hitz2S.Header, 800, 25, "yellow1", Hitz2L.strInstructionsText, 0, 113, null, 0, true], [OWInstruction.MakeBonus, 0, 1, 100, 230, null, 0, true], [Hitz2S.TextAlign, 700, 23, 23, "yellow1", strBonuse1, 0, 0, 150, 220, null, 0, true], [OWInstruction.MakeBonus, 1, 1, 100, 280, null, 0, true], [Hitz2S.TextAlign, 700, 23, 23, "yellow1", strBonuse2, 0, 0, 150, 270, null, 0, true], [OWInstruction.MakeBonus, 2, 1, 100, 330, null, 0, true], [Hitz2S.TextAlign, 700, 23, 23, "yellow1", strBonuse3, 0, 0, 150, 320, null, 0, true], [OWInstruction.MakeBonus, 4, 1, 100, 380, null, 0, true], [Hitz2S.TextAlign, 700, 23, 23, "yellow1", strBonuse4, 0, 0, 150, 370, null, 0, true], [OWInstruction.MakeBonus, 3, 1, 100, 430, null, 0, true], [Hitz2S.TextAlign, 700, 23, 23, "yellow1", strBonuse5, 0, 0, 150, 420, null, 0, true], [OWInstruction.MakeBonus, 5, 1, 100, 480, null, 0, true], [Hitz2S.TextAlign, 700, 23, 23, "yellow1", strBonuse6, 0, 0, 150, 470, null, 0, true], [Hitz2S.MakeTextButton, 150, 35, "white", "white", 25, Hitz2L.strPrev, 30, 540, "iPrevButton", 0, true], [Hitz2S.MakeTextButton, 150, 35, "white", "white", 25, Hitz2L.strNext, 570, 540, "iNextButton", 0, true]];
public static var OWInstructionsPage2:Array = [[OWInstruction.MakeBonus, 7, 1, 100, 85, null, 0, true], [Hitz2S.TextAlign, 700, 23, 23, "yellow1", strBonuse7, 0, 0, 160, 75, null, 0, true], [OWInstruction.MakeBonus, 6, 1, 100, 135, null, 0, true], [Hitz2S.TextAlign, 700, 23, 23, "yellow1", strBonuse8, 0, 0, 160, 125, null, 0, true], [OWInstruction.MakeBonus, 8, 1, 60, 185, null, 0, true], [Hitz2S.TextAlign, 700, 23, 23, "yellow1", "..", 0, 0, 85, 175, null, 0, true], [OWInstruction.MakeBonus, 14, 1, 130, 185, null, 0, true], [Hitz2S.TextAlign, 700, 23, 23, "yellow1", strBonuse9, 0, 0, 160, 175, null, 0, true], [OWInstruction.MakeBonus, 15, 1, 100, 235, null, 0, true], [Hitz2S.TextAlign, 700, 23, 23, "yellow1", strBonuse10, 0, 0, 160, 225, null, 0, true], [OWInstruction.MakeBonus, 16, 1, 100, 285, null, 0, true], [Hitz2S.TextAlign, 700, 23, 23, "yellow1", strBonuse11, 0, 0, 160, 275, null, 0, true], [OWInstruction.MakeBonus, 17, 1, 100, 335, null, 0, true], [Hitz2S.TextAlign, 700, 23, 23, "yellow1", strBonuse12, 0, 0, 160, 325, null, 0, true], [OWInstruction.MakeBonus, 18, 1, 100, 385, null, 0, true], [Hitz2S.TextAlign, 700, 23, 23, "yellow1", strBonuse13, 0, 0, 160, 375, null, 0, true], [OWInstruction.MakeBonus, 19, 1, 100, 435, null, 0, true], [Hitz2S.TextAlign, 700, 23, 23, "yellow1", strBonuse14, 0, 0, 160, 425, null, 0, true], [OWInstruction.MakeBonus, 20, 1, 100, 485, null, 0, true], [Hitz2S.TextAlign, 700, 23, 23, "yellow1", strBonuse15, 0, 0, 160, 475, null, 0, true], [Hitz2S.MakeTextButton, 150, 35, "white", "white", 25, Hitz2L.strPrev, 50, 540, "iPrevButton", 0, true], [Hitz2S.MakeTextButton, 150, 35, "white", "white", 25, Hitz2L.strNext, 550, 540, "iNextButton", 0, true]];
public static var iGAME:OGame = new OCGame();
public static var iMP:OMultiplayer = new OMultiplayer(sDebug);
}
}//package
Section 156
//Hitz2L_addLife (Hitz2L_addLife)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_addLife extends SpriteAsset {
public var star1:DisplayObject;
}
}//package
Section 157
//Hitz2L_background (Hitz2L_background)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_background extends SpriteAsset {
public var star1:DisplayObject;
}
}//package
Section 158
//Hitz2L_ball (Hitz2L_ball)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_ball extends SpriteAsset {
public var star1:DisplayObject;
}
}//package
Section 159
//Hitz2L_bigball (Hitz2L_bigball)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_bigball extends SpriteAsset {
public var star1:DisplayObject;
}
}//package
Section 160
//Hitz2L_bigPlatform (Hitz2L_bigPlatform)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_bigPlatform extends SpriteAsset {
public var star1:DisplayObject;
}
}//package
Section 161
//Hitz2L_bonusBorder (Hitz2L_bonusBorder)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_bonusBorder extends SpriteAsset {
public var star1:DisplayObject;
}
}//package
Section 162
//Hitz2L_fastball (Hitz2L_fastball)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_fastball extends SpriteAsset {
public var star1:DisplayObject;
}
}//package
Section 163
//Hitz2L_FireBall (Hitz2L_FireBall)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_FireBall extends SpriteAsset {
public var star1:DisplayObject;
}
}//package
Section 164
//Hitz2L_fireBallBonus (Hitz2L_fireBallBonus)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_fireBallBonus extends SpriteAsset {
public var star1:DisplayObject;
}
}//package
Section 165
//Hitz2L_GreyBall (Hitz2L_GreyBall)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_GreyBall extends SpriteAsset {
public var star1:DisplayObject;
}
}//package
Section 166
//Hitz2L_hiddenBonus (Hitz2L_hiddenBonus)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_hiddenBonus extends SpriteAsset {
public var star1:DisplayObject;
}
}//package
Section 167
//Hitz2L_multiball (Hitz2L_multiball)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_multiball extends SpriteAsset {
public var star1:DisplayObject;
}
}//package
Section 168
//Hitz2L_NoBonus (Hitz2L_NoBonus)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_NoBonus extends SpriteAsset {
public var star1:DisplayObject;
}
}//package
Section 169
//Hitz2L_normalball (Hitz2L_normalball)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_normalball extends SpriteAsset {
public var star1:DisplayObject;
}
}//package
Section 170
//Hitz2L_normalPlatform (Hitz2L_normalPlatform)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_normalPlatform extends SpriteAsset {
public var star1:DisplayObject;
}
}//package
Section 171
//Hitz2L_OFont (Hitz2L_OFont)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_OFont extends SpriteAsset {
public var star1:DisplayObject;
}
}//package
Section 172
//Hitz2L_OIDown (Hitz2L_OIDown)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_OIDown extends SpriteAsset {
public var star1:DisplayObject;
}
}//package
Section 173
//Hitz2L_OILeft (Hitz2L_OILeft)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_OILeft extends SpriteAsset {
public var star1:DisplayObject;
}
}//package
Section 174
//Hitz2L_OIRight (Hitz2L_OIRight)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_OIRight extends SpriteAsset {
public var star1:DisplayObject;
}
}//package
Section 175
//Hitz2L_OIUp (Hitz2L_OIUp)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_OIUp extends SpriteAsset {
public var star1:DisplayObject;
}
}//package
Section 176
//Hitz2L_OSBubbleBang01 (Hitz2L_OSBubbleBang01)
package {
import mx.core.*;
public class Hitz2L_OSBubbleBang01 extends SoundAsset {
}
}//package
Section 177
//Hitz2L_OSBubbleBang02 (Hitz2L_OSBubbleBang02)
package {
import mx.core.*;
public class Hitz2L_OSBubbleBang02 extends SoundAsset {
}
}//package
Section 178
//Hitz2L_OSBubbleBang03 (Hitz2L_OSBubbleBang03)
package {
import mx.core.*;
public class Hitz2L_OSBubbleBang03 extends SoundAsset {
}
}//package
Section 179
//Hitz2L_OSBubbleBang04 (Hitz2L_OSBubbleBang04)
package {
import mx.core.*;
public class Hitz2L_OSBubbleBang04 extends SoundAsset {
}
}//package
Section 180
//Hitz2L_OSBubbleBang05 (Hitz2L_OSBubbleBang05)
package {
import mx.core.*;
public class Hitz2L_OSBubbleBang05 extends SoundAsset {
}
}//package
Section 181
//Hitz2L_OSBubbleBang06 (Hitz2L_OSBubbleBang06)
package {
import mx.core.*;
public class Hitz2L_OSBubbleBang06 extends SoundAsset {
}
}//package
Section 182
//Hitz2L_OSBubbleBang07 (Hitz2L_OSBubbleBang07)
package {
import mx.core.*;
public class Hitz2L_OSBubbleBang07 extends SoundAsset {
}
}//package
Section 183
//Hitz2L_OSBubbleBang08 (Hitz2L_OSBubbleBang08)
package {
import mx.core.*;
public class Hitz2L_OSBubbleBang08 extends SoundAsset {
}
}//package
Section 184
//Hitz2L_OSBubbleBang09 (Hitz2L_OSBubbleBang09)
package {
import mx.core.*;
public class Hitz2L_OSBubbleBang09 extends SoundAsset {
}
}//package
Section 185
//Hitz2L_OSBubbleBang10 (Hitz2L_OSBubbleBang10)
package {
import mx.core.*;
public class Hitz2L_OSBubbleBang10 extends SoundAsset {
}
}//package
Section 186
//Hitz2L_OSBubbleBang11 (Hitz2L_OSBubbleBang11)
package {
import mx.core.*;
public class Hitz2L_OSBubbleBang11 extends SoundAsset {
}
}//package
Section 187
//Hitz2L_OSBubbleBang12 (Hitz2L_OSBubbleBang12)
package {
import mx.core.*;
public class Hitz2L_OSBubbleBang12 extends SoundAsset {
}
}//package
Section 188
//Hitz2L_OSEEE (Hitz2L_OSEEE)
package {
import mx.core.*;
public class Hitz2L_OSEEE extends SoundAsset {
}
}//package
Section 189
//Hitz2L_OSOops2 (Hitz2L_OSOops2)
package {
import mx.core.*;
public class Hitz2L_OSOops2 extends SoundAsset {
}
}//package
Section 190
//Hitz2L_particle (Hitz2L_particle)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_particle extends SpriteAsset {
public var star1:DisplayObject;
}
}//package
Section 191
//Hitz2L_randomBonus (Hitz2L_randomBonus)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_randomBonus extends SpriteAsset {
public var star1:DisplayObject;
}
}//package
Section 192
//Hitz2L_shape1 (Hitz2L_shape1)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_shape1 extends SpriteAsset {
public var star1:DisplayObject;
}
}//package
Section 193
//Hitz2L_shape2 (Hitz2L_shape2)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_shape2 extends SpriteAsset {
public var star1:DisplayObject;
}
}//package
Section 194
//Hitz2L_shape3 (Hitz2L_shape3)
package {
import mx.core.*;
public class Hitz2L_shape3 extends SpriteAsset {
}
}//package
Section 195
//Hitz2L_shape4 (Hitz2L_shape4)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_shape4 extends SpriteAsset {
public var star1:DisplayObject;
}
}//package
Section 196
//Hitz2L_shape5 (Hitz2L_shape5)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_shape5 extends SpriteAsset {
public var star1:DisplayObject;
}
}//package
Section 197
//Hitz2L_shape6 (Hitz2L_shape6)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_shape6 extends SpriteAsset {
public var star1:DisplayObject;
}
}//package
Section 198
//Hitz2L_shape7 (Hitz2L_shape7)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_shape7 extends SpriteAsset {
public var star1:DisplayObject;
}
}//package
Section 199
//Hitz2L_slowball (Hitz2L_slowball)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_slowball extends SpriteAsset {
public var star1:DisplayObject;
}
}//package
Section 200
//Hitz2L_smallball (Hitz2L_smallball)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_smallball extends SpriteAsset {
public var star1:DisplayObject;
}
}//package
Section 201
//Hitz2L_smallPlatform (Hitz2L_smallPlatform)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_smallPlatform extends SpriteAsset {
public var star1:DisplayObject;
}
}//package
Section 202
//Hitz2L_stdball (Hitz2L_stdball)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_stdball extends SpriteAsset {
public var star1:DisplayObject;
}
}//package
Section 203
//Hitz2L_texture (Hitz2L_texture)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_texture extends BitmapAsset {
public var star1:DisplayObject;
}
}//package
Section 204
//Hitz2L_texture1 (Hitz2L_texture1)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_texture1 extends BitmapAsset {
public var star1:DisplayObject;
}
}//package
Section 205
//Hitz2L_texture2 (Hitz2L_texture2)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_texture2 extends BitmapAsset {
public var star1:DisplayObject;
}
}//package
Section 206
//Hitz2L_texture3 (Hitz2L_texture3)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_texture3 extends BitmapAsset {
public var star1:DisplayObject;
}
}//package
Section 207
//Hitz2L_ultraball (Hitz2L_ultraball)
package {
import flash.display.*;
import mx.core.*;
public class Hitz2L_ultraball extends SpriteAsset {
public var star1:DisplayObject;
}
}//package
Section 208
//Hitz2S (Hitz2S)
package {
import ENGINE.DISPLAY.*;
import flash.display.*;
import flash.geom.*;
import ENGINE.INTERFACE.*;
import ENGINE.INTERFACE.ANIMATORS.*;
import ENGINE.INTERFACE.ELEMENTS.*;
import ENGINE.DISPLAY.EFFECTS.*;
import flash.text.*;
import ENGINE.CORE.*;
import ENGINE.SKIN.*;
public class Hitz2S {
public static var iRegistered:Boolean = Hitz2S.Register();
public static function Text(_arg1:Array):OBitmap{
var _local2:Number;
var _local3:String;
_local2 = Math.round((1 + (_arg1[1] / 70)));
_local3 = ("text " + String(Math.min((Math.round((_arg1[1] / 10)) * 10), 90)));
return (ODisplay.OBitmapText([null, Hitz2L.OFont, _arg1[1], _local2, _arg1[3], "GEL", _arg1[2], _local3, 1, OGlobal.ScaleFloor(_arg1[4]), OGlobal.ScaleFloor(_arg1[5])]));
}
public static function ListBoxText(_arg1:Array):OListBox{
var _local2:Number;
var _local3:Number;
var _local4:Array;
var _local5:Array;
var _local6:Array;
var _local7:int;
var _local8:OListBox;
_local2 = (_arg1[1] + 80);
_local3 = ((_arg1[2] * _arg1[5]) + 30);
_local4 = [[Hitz2S.SmallBorder, _local2, _local3, _arg1[3], 0, 0, null, 0, true], [Hitz2S.MakeSpriteButton, 30, 30, _arg1[3], _arg1[4], Hitz2L.OIUp, "text 60", 1, (_local2 - 50), 20, "iUp", 0, false], [Hitz2S.MakeSpriteButton, 30, 30, _arg1[3], _arg1[4], Hitz2L.OIDown, "text 60", 1, (_local2 - 50), (_local3 - 50), "iDown", 0, false]];
_local5 = [Hitz2S.ListBoxTextElement, _arg1[1], _arg1[2], _arg1[3], "w", _arg1[4], 0, 0];
_local6 = new Array(_arg1[5]);
_local7 = 0;
while (_local7 < _arg1[5]) {
_local6[_local7] = [15, ((_local7 * _arg1[2]) + 15)];
_local7++;
};
_local8 = new OListBox(_local4, _local5, Hitz2S.ListBoxTextElementP, _local6, null);
_local8.iUp.prAnimatorParams = OInterface.iDefLBButtonAnimators;
_local8.iDown.prAnimatorParams = OInterface.iDefLBButtonAnimators;
_local8.prLBParams = _arg1[6];
_local8.Pos(OGlobal.ScaleFloor(_arg1[7]), OGlobal.ScaleFloor(_arg1[8]));
return (_local8);
}
private static function Register():Boolean{
OEffects.RegisterEffect("GEL", new OEffectGel());
OEffects.RegisterColor("GEL", "red", {iCH:0, iCS:0.5, iCB:0.99, iSH:345, iSS:0.9, iSB:0.6});
OEffects.RegisterColor("GEL", "red1", {iCH:30, iCS:0.5, iCB:0.99, iSH:45, iSS:0.9, iSB:0.6});
OEffects.RegisterColor("GEL", "yellow", {iCH:60, iCS:0.6, iCB:0.99, iSH:45, iSS:0.9, iSB:0.6});
OEffects.RegisterColor("GEL", "yellow1", {iCH:90, iCS:0.6, iCB:0.99, iSH:105, iSS:0.9, iSB:0.6});
OEffects.RegisterColor("GEL", "green", {iCH:120, iCS:0.5, iCB:0.99, iSH:105, iSS:0.9, iSB:0.6});
OEffects.RegisterColor("GEL", "green1", {iCH:150, iCS:0.5, iCB:0.99, iSH:165, iSS:0.9, iSB:0.6});
OEffects.RegisterColor("GEL", "aqua", {iCH:180, iCS:0.4, iCB:0.99, iSH:165, iSS:0.9, iSB:0.6});
OEffects.RegisterColor("GEL", "aqua1", {iCH:210, iCS:0.4, iCB:0.99, iSH:225, iSS:0.9, iSB:0.6});
OEffects.RegisterColor("GEL", "blue", {iCH:240, iCS:0.3, iCB:0.99, iSH:225, iSS:0.9, iSB:0.6});
OEffects.RegisterColor("GEL", "blue1", {iCH:270, iCS:0.3, iCB:0.99, iSH:295, iSS:0.9, iSB:0.6});
OEffects.RegisterColor("GEL", "magenta", {iCH:300, iCS:0.4, iCB:0.99, iSH:295, iSS:0.9, iSB:0.6});
OEffects.RegisterColor("GEL", "magenta1", {iCH:330, iCS:0.4, iCB:0.99, iSH:345, iSS:0.9, iSB:0.6});
OEffects.RegisterColor("GEL", "white", {iCH:0, iCS:0, iCB:0.97, iSH:0, iSS:0, iSB:0.7});
OEffects.RegisterFilter("GEL", "bpanel", {iBorder:24, iAngle:90, iF0SD:16, iF0SB:11, iF1SD:16, iF1SB:23, iF1GB:8, iF1GA:0.5, iF2GGD1:-4, iF2GGB1:18, iF2GGC1:230, iF2GGD2:4, iF2GGB2:16, iF2GGC2:170, iF2B:2});
OEffects.RegisterFilter("GEL", "obstacle", {iBorder:8, iAngle:90, iF0SD:0, iF0SB:6, iF1SD:5, iF1SB:6, iF1GB:1, iF1GA:1, iF2GGD1:-2, iF2GGB1:3, iF2GGC1:240, iF2GGD2:3, iF2GGB2:4, iF2GGC2:130, iF2B:2});
OEffects.RegisterFilter("GEL", "text 10", {iBorder:8, iAngle:90, iF0SD:3, iF0SB:6, iF1SD:5, iF1SB:6, iF1GB:1, iF1GA:1, iF2GGD1:0, iF2GGB1:3, iF2GGC1:240, iF2GGD2:3, iF2GGB2:4, iF2GGC2:130, iF2B:2});
OEffects.RegisterFilter("GEL", "text 20", {iBorder:8, iAngle:90, iF0SD:3, iF0SB:6, iF1SD:5, iF1SB:6, iF1GB:1, iF1GA:1, iF2GGD1:0, iF2GGB1:3, iF2GGC1:240, iF2GGD2:3, iF2GGB2:4, iF2GGC2:130, iF2B:2});
OEffects.RegisterFilter("GEL", "text 30", {iBorder:8, iAngle:90, iF0SD:3, iF0SB:6, iF1SD:5, iF1SB:6, iF1GB:1, iF1GA:1, iF2GGD1:0, iF2GGB1:3, iF2GGC1:240, iF2GGD2:3, iF2GGB2:4, iF2GGC2:130, iF2B:2});
OEffects.RegisterFilter("GEL", "text 40", {iBorder:8, iAngle:90, iF0SD:4, iF0SB:8, iF1SD:6, iF1SB:7, iF1GB:1, iF1GA:1, iF2GGD1:0, iF2GGB1:5, iF2GGC1:230, iF2GGD2:3, iF2GGB2:6, iF2GGC2:170, iF2B:2});
OEffects.RegisterFilter("GEL", "text 50", {iBorder:12, iAngle:90, iF0SD:5, iF0SB:10, iF1SD:7, iF1SB:8, iF1GB:1, iF1GA:1, iF2GGD1:-1, iF2GGB1:6, iF2GGC1:240, iF2GGD2:4, iF2GGB2:6, iF2GGC2:130, iF2B:2});
OEffects.RegisterFilter("GEL", "text 60", {iBorder:14, iAngle:90, iF0SD:6, iF0SB:12, iF1SD:8, iF1SB:10, iF1GB:1, iF1GA:1, iF2GGD1:-1, iF2GGB1:8, iF2GGC1:230, iF2GGD2:4, iF2GGB2:8, iF2GGC2:150, iF2B:2});
OEffects.RegisterFilter("GEL", "text 70", {iBorder:14, iAngle:90, iF0SD:6, iF0SB:12, iF1SD:9, iF1SB:10, iF1GB:1, iF1GA:1, iF2GGD1:-1, iF2GGB1:10, iF2GGC1:230, iF2GGD2:4, iF2GGB2:10, iF2GGC2:155, iF2B:2});
OEffects.RegisterFilter("GEL", "text 80", {iBorder:15, iAngle:90, iF0SD:7, iF0SB:13, iF1SD:11, iF1SB:11, iF1GB:1, iF1GA:1, iF2GGD1:-2, iF2GGB1:12, iF2GGC1:230, iF2GGD2:4, iF2GGB2:12, iF2GGC2:160, iF2B:2});
OEffects.RegisterFilter("GEL", "text 90", {iBorder:16, iAngle:90, iF0SD:8, iF0SB:14, iF1SD:12, iF1SB:12, iF1GB:1, iF1GA:1, iF2GGD1:-2, iF2GGB1:14, iF2GGC1:230, iF2GGD2:4, iF2GGB2:14, iF2GGC2:170, iF2B:2});
OEffects.RegisterFilter("GEL", "spanel", {iBorder:16, iAngle:90, iF0SD:8, iF0SB:14, iF1SD:12, iF1SB:12, iF1GB:6, iF1GA:0.5, iF2GGD1:-2, iF2GGB1:14, iF2GGC1:230, iF2GGD2:4, iF2GGB2:14, iF2GGC2:170, iF2B:2});
OEffects.RegisterFilter("GEL", "border", {iBorder:8, iAngle:60, iF0SD:3, iF0SB:6, iF1SD:6, iF1SB:4, iF1GB:2, iF1GA:0.25, iF2GGD1:0.2, iF2GGB1:3, iF2GGC1:240, iF2GGD2:3, iF2GGB2:4, iF2GGC2:150, iF2B:2});
OEffects.RegisterFilter("GEL", "bpanel ns", {iBorder:8, iAngle:90, iF0SD:0, iF0SB:11, iF1SD:16, iF1SB:23, iF1GB:8, iF1GA:0.5, iF2GGD1:-4, iF2GGB1:18, iF2GGC1:230, iF2GGD2:4, iF2GGB2:16, iF2GGC2:170, iF2B:2});
OEffects.RegisterFilter("GEL", "spanel ns", {iBorder:16, iAngle:90, iF0SD:0, iF0SB:16, iF1SD:12, iF1SB:16, iF1GB:6, iF1GA:0.5, iF2GGD1:-2, iF2GGB1:14, iF2GGC1:230, iF2GGD2:4, iF2GGB2:12, iF2GGC2:180, iF2B:2});
OEffects.RegisterFilter("GEL", "border ns", {iBorder:8, iAngle:60, iF0SD:0, iF0SB:6, iF1SD:6, iF1SB:4, iF1GB:2, iF1GA:0.25, iF2GGD1:0.2, iF2GGB1:3, iF2GGC1:240, iF2GGD2:3, iF2GGB2:4, iF2GGC2:150, iF2B:2});
return (true);
}
public static function MakeSpriteButton(_arg1:Array):OButton{
var _local2:Array;
var _local3:OButton;
_local2 = [[ODisplay.OBitmapSpriteFillRect, _arg1[1], _arg1[2], [ODisplay.SpriteLib, _arg1[5]], "GEL", _arg1[3], _arg1[6], _arg1[7], 0, 0, null, 0, true], [OSprite.Make, [[ODisplay.SpriteRect, (_arg1[1] * OGlobal.Scale), (_arg1[2] * OGlobal.Scale)]], 0, 0, "iHit", 0, false]];
_local3 = new OButton(_local2);
_local3.Pos(OGlobal.ScaleFloor(_arg1[8]), OGlobal.ScaleFloor(_arg1[9]));
return (_local3);
}
public static function SmallFrame(_arg1:Array):OBitmap{
return (ODisplay.OBitmapRoundFrame([null, _arg1[1], _arg1[2], 24, 5, "GEL", _arg1[3], "border", 1, _arg1[4], "spanel ns", 1, OGlobal.ScaleFloor(_arg1[5]), OGlobal.ScaleFloor(_arg1[6])]));
}
public static function ColorHeader(_arg1:Array):OIObject{
var _local2:Number;
var _local3:String;
var _local4:Sprite;
var _local5:TextField;
var _local6:TextFormat;
var _local7:Rectangle;
var _local8:Number;
var _local9:Array;
var _local10:int;
var _local11:int;
var _local12:OIObject;
var _local13:String;
var _local14:Rectangle;
_local2 = Math.round((1 + (_arg1[2] / 70)));
_local3 = ("text " + String(Math.max(30, Math.min((Math.round((_arg1[2] / 10)) * 10), 90))));
_local4 = ((Hitz2L.OFont is Sprite)) ? (Hitz2L.OFont as Sprite) : new ((Hitz2L.OFont as Class));
if (!(_local4.getChildAt(0) is TextField)){
return (null);
};
_local5 = (_local4.getChildAt(0) as TextField);
_local5.autoSize = TextFieldAutoSize.LEFT;
_local5.text = _arg1[4];
_local6 = _local5.defaultTextFormat;
_local6.size = _arg1[2];
_local6.letterSpacing = _local2;
_local5.setTextFormat(_local6);
_local7 = _local5.getBounds(_local4);
_local8 = ((_arg1[1] - _local7.width) / 2);
_local9 = new Array();
_local10 = 0;
_local11 = 0;
while (_local11 < _local5.length) {
_local13 = _arg1[4].substr(_local11, 1);
if (_local13 == " "){
} else {
if (_local13 == "\n"){
} else {
_local14 = _local5.getCharBoundaries(_local11);
var _temp1 = _local10;
_local10 = (_local10 + 1);
_local9.push([ODisplay.OBitmapMake, [ODisplay.SpriteText, Hitz2L.OFont, _arg1[2], _local2, _local13], 1, "GEL", _arg1[3][(_temp1 % _arg1[3].length)], _local3, 1, (_local14.x + _local8), _local14.y, null, 0, true]);
};
};
_local11++;
};
_local12 = new OIObject(_local9, _arg1[5]);
_local12.Pos(OGlobal.ScaleFloor(_arg1[6]), OGlobal.ScaleFloor(_arg1[7]));
return (_local12);
}
public static function ListBoxTextElement(_arg1:Array):OListBoxElement{
var _local2:Number;
var _local3:Number;
var _local4:String;
var _local5:Array;
var _local6:OListBoxElement;
_local2 = (_arg1[2] - 10);
if (_local2 < 30){
_local2 = 30;
};
_local3 = Math.round((1 + (_local2 / 70)));
_local4 = ("text " + String(Math.max(30, Math.min((Math.round((_local2 / 10)) * 10), 90))));
_local5 = [[ODisplay.OBitmapMake, [ODisplay.SpriteRoundBorder, _arg1[1], _arg1[2], 12, 6], 1, "GEL", _arg1[3], "border", 1, 0, 0, null, 0, false], [ODisplay.OBitmapMake, [ODisplay.SpriteTextInRect, Hitz2L.OFont, _local2, _local3, _arg1[4], _arg1[1], _arg1[2]], 1, "GEL", _arg1[5], _local4, 1, 0, 0, null, 0, true], [OSprite.Make, [[ODisplay.SpriteRoundRect, (_arg1[1] * OGlobal.Scale), (_arg1[2] * OGlobal.Scale), (12 * OGlobal.Scale)]], 0, 0, "iHit", 0, false]];
_local6 = new OListBoxElement(_local5);
_local6.Pos(OGlobal.ScaleFloor(_arg1[6]), OGlobal.ScaleFloor(_arg1[7]));
return (_local6);
}
public static function BigFrame(_arg1:Array):OBitmap{
return (ODisplay.OBitmapRoundFrame([null, _arg1[1], _arg1[2], 64, 8, "GEL", _arg1[3], "border", 1, _arg1[4], "spanel ns", 1, OGlobal.ScaleFloor(_arg1[5]), OGlobal.ScaleFloor(_arg1[6])]));
}
public static function ListBoxTextElementP(_arg1:Array, _arg2:String):void{
_arg1[4] = _arg2;
}
public static function ListBoxTextHSlider(_arg1:Array):OListBox{
var _local2:Number;
var _local3:Number;
var _local4:String;
var _local5:Rectangle;
var _local6:Number;
var _local7:Array;
var _local8:Array;
var _local9:Array;
var _local10:Array;
var _local11:OListBox;
_local2 = _arg1[6];
_local3 = Math.round((1 + (_local2 / 70)));
_local4 = ("text " + String(Math.max(30, Math.min((Math.round((_local2 / 10)) * 10), 90))));
_local5 = ODisplay.TextRect(Hitz2L.OFont, _local2, _local3, _arg1[8]);
_local6 = (_arg1[6] - 10);
_local7 = (_arg1[4]) ? [[Hitz2S.SmallBorder, _arg1[1], _arg1[2], _arg1[3], 0, 0, null, 0, true]] : new Array();
_local8 = [[ODisplay.OBitmapText, Hitz2L.OFont, _local2, _local3, _arg1[8], "GEL", _arg1[3], _local4, 1, 15, ((_arg1[2] - _local5.height) * 0.5), null, 0, true], [Hitz2S.MakeSpriteButton, _local6, _local6, _arg1[3], _arg1[4], Hitz2L.OILeft, "text 60", 1, ((_arg1[1] - _arg1[5]) - 75), ((_arg1[2] - _local6) * 0.5), "iUp", 0, false], [Hitz2S.MakeSpriteButton, _local6, _local6, _arg1[3], _arg1[4], Hitz2L.OIRight, "text 60", 1, (_arg1[1] - 45), ((_arg1[2] - _local6) * 0.5), "iDown", 0, false]];
_local7 = _local7.concat(_local8);
_local9 = [Hitz2S.ListBoxTextElement, _arg1[5], _arg1[6], _arg1[7], "w", _arg1[7], 0, 0];
_local10 = [[((_arg1[1] - 45) - _arg1[5]), ((_arg1[2] - _arg1[6]) * 0.5)]];
_local11 = new OListBox(_local7, _local9, Hitz2S.ListBoxTextElementP, _local10, null);
_local11.iUp.prAnimatorParams = OInterface.iDefLBButtonAnimators;
_local11.iDown.prAnimatorParams = OInterface.iDefLBButtonAnimators;
_local11.prSelection = false;
_local11.prCycling = true;
_local11.prLBParams = _arg1[9];
_local11.Pos(OGlobal.ScaleFloor(_arg1[10]), OGlobal.ScaleFloor(_arg1[11]));
return (_local11);
}
public static function ColorText(_arg1:Array):OIObject{
var _local2:Number;
var _local3:String;
var _local4:Sprite;
var _local5:TextField;
var _local6:TextFormat;
var _local7:Array;
var _local8:int;
var _local9:int;
var _local10:OIObject;
var _local11:String;
var _local12:Rectangle;
_local2 = Math.round((1 + (_arg1[1] / 70)));
_local3 = ("text " + String(Math.max(30, Math.min((Math.round((_arg1[1] / 10)) * 10), 90))));
_local4 = ((Hitz2L.OFont is Sprite)) ? (Hitz2L.OFont as Sprite) : new ((Hitz2L.OFont as Class));
if (!(_local4.getChildAt(0) is TextField)){
return (null);
};
_local5 = (_local4.getChildAt(0) as TextField);
_local5.autoSize = TextFieldAutoSize.LEFT;
_local5.text = _arg1[3];
_local6 = _local5.defaultTextFormat;
_local6.size = _arg1[1];
_local6.letterSpacing = _local2;
_local5.setTextFormat(_local6);
_local7 = new Array();
_local8 = 0;
_local9 = 0;
while (_local9 < _local5.length) {
_local11 = _arg1[3].substr(_local9, 1);
if (_local11 == " "){
} else {
_local12 = _local5.getCharBoundaries(_local9);
var _temp1 = _local8;
_local8 = (_local8 + 1);
_local7.push([ODisplay.OBitmapMake, [ODisplay.SpriteText, Hitz2L.OFont, _arg1[1], _local2, _local11], 1, "GEL", _arg1[2][(_temp1 % _arg1[2].length)], _local3, 1, _local12.x, _local12.y, null, 0, true]);
};
_local9++;
};
_local10 = new OIObject(_local7, _arg1[4]);
_local10.Pos(OGlobal.ScaleFloor(_arg1[5]), OGlobal.ScaleFloor(_arg1[6]));
return (_local10);
}
public static function TextSmallFrame(_arg1:Array):OBitmap{
var _local2:Number;
var _local3:String;
_local2 = Math.round((1 + (_arg1[4] / 70)));
_local3 = ("text " + String(Math.max(30, Math.min((Math.round((_arg1[4] / 10)) * 10), 90))));
return (ODisplay.OBitmapRoundFrameText([null, _arg1[1], _arg1[2], 24, 5, "GEL", _arg1[3], "border", 1, _arg1[3], "spanel ns", 1, Hitz2L.OFont, _arg1[4], _local2, _arg1[5], "GEL", _arg1[6], _local3, 1, OGlobal.ScaleFloor(_arg1[7]), OGlobal.ScaleFloor(_arg1[8])]));
}
public static function MakeTextButton(_arg1:Array):OButton{
var _local2:Number;
var _local3:String;
var _local4:Array;
var _local5:OButton;
_local2 = Math.round((1 + (_arg1[5] / 70)));
_local3 = ("text " + String((Math.round((_arg1[5] / 10)) * 10)));
_local4 = [[ODisplay.OBitmapRoundFrameText, _arg1[1], _arg1[2], 24, 5, "GEL", _arg1[3], "border", 1, _arg1[3], "spanel ns", 1, Hitz2L.OFont, _arg1[5], _local2, _arg1[6], "GEL", _arg1[3], _local3, 1, 0, 0, null, 0, true], [OSprite.Make, [[ODisplay.SpriteRoundRect, (_arg1[1] * OGlobal.Scale), (_arg1[2] * OGlobal.Scale), (24 * OGlobal.Scale)]], 0, 0, "iHit", 0, false]];
_local5 = new OButton(_local4);
_local5.Pos(OGlobal.ScaleFloor(_arg1[7]), OGlobal.ScaleFloor(_arg1[8]));
return (_local5);
}
public static function SmallFrameWithoutBorder(_arg1:Array):OBitmap{
return (ODisplay.OBitmapRoundFrame([null, _arg1[1], _arg1[2], 24, 0, "GEL", _arg1[3], "border", 1, _arg1[4], "spanel ns", 1, OGlobal.ScaleFloor(_arg1[5]), OGlobal.ScaleFloor(_arg1[6])]));
}
public static function InputText(_arg1:Array):OInput{
var _local2:Array;
var _local3:OInput;
_local2 = [[Hitz2S.SmallBorder, _arg1[1], _arg1[2], _arg1[3], 0, 0, null, 0, true], [OInterface.OInputTextFieldMake, (_arg1[1] - 10), (_arg1[2] - 10), Hitz2L.OFont, (_arg1[2] - 30), 1, false, _arg1[5], _arg1[4], _arg1[6], 5, 8, "iText", 0, true]];
_local3 = new OInput(_local2);
_local3.Pos(OGlobal.ScaleFloor(_arg1[7]), OGlobal.ScaleFloor(_arg1[8]));
return (_local3);
}
public static function TextAlign(_arg1:Array):OBitmap{
var _local2:Number;
var _local3:String;
_local2 = Math.round((1 + (_arg1[2] / 70)));
_local3 = ("text " + String(Math.min((Math.round((_arg1[2] / 10)) * 10), 90)));
return (ODisplay.OBitmapTextAlign([null, Hitz2L.OFont, _arg1[3], _local2, _arg1[5], _arg1[6], _arg1[7], "GEL", _arg1[4], _local3, 1, _arg1[1], _arg1[2], OGlobal.ScaleFloor(_arg1[8]), OGlobal.ScaleFloor(_arg1[9])]));
}
public static function SmallBorder(_arg1:Array):OBitmap{
return (ODisplay.OBitmapRoundBorder([null, _arg1[1], _arg1[2], 24, 6, "GEL", _arg1[3], "border", 1, OGlobal.ScaleFloor(_arg1[4]), OGlobal.ScaleFloor(_arg1[5])]));
}
public static function Header(_arg1:Array):OBitmap{
var _local2:Number;
var _local3:String;
_local2 = Math.round((1 + (_arg1[2] / 70)));
_local3 = ("text " + String(Math.min((Math.round((_arg1[2] / 10)) * 10), 90)));
return (ODisplay.OBitmapTextInRect([null, Hitz2L.OFont, _arg1[2], _local2, _arg1[4], "GEL", _arg1[3], _local3, 1, _arg1[1], _arg1[2], OGlobal.ScaleFloor(_arg1[5]), OGlobal.ScaleFloor(_arg1[6])]));
}
public static function ListBoxTextVSlider(_arg1:Array):OListBox{
var _local2:Number;
var _local3:Number;
var _local4:String;
var _local5:Rectangle;
var _local6:Array;
var _local7:Number;
var _local8:Number;
var _local9:Array;
var _local10:Array;
var _local11:Array;
var _local12:OListBox;
_local2 = _arg1[6];
_local3 = Math.round((1 + (_local2 / 70)));
_local4 = ("text " + String(Math.max(30, Math.min((Math.round((_local2 / 10)) * 10), 90))));
_local5 = ODisplay.TextRect(Hitz2L.OFont, _local2, _local3, _arg1[9]);
_local6 = [[((_arg1[1] - _arg1[5]) * 0.5), _arg1[7]]];
_local7 = (_arg1[6] - 10);
_local8 = (_local6[0][1] + ((_arg1[6] - _local7) * 0.5));
_local9 = (_arg1[4]) ? [[Hitz2S.SmallBorder, _arg1[1], _arg1[2], _arg1[3], 0, 0, null, 0, true]] : new Array();
_local10 = [[ODisplay.OBitmapText, Hitz2L.OFont, _local2, _local3, _arg1[9], "GEL", _arg1[3], _local4, 1, ((_arg1[1] - _local5.width) * 0.5), _arg1[10], null, 0, true], [Hitz2S.MakeSpriteButton, _local7, _local7, _arg1[3], _arg1[4], Hitz2L.OILeft, "text 60", 1, (_local6[0][0] - _local7), _local8, "iUp", 0, false], [Hitz2S.MakeSpriteButton, _local7, _local7, _arg1[3], _arg1[4], Hitz2L.OIRight, "text 60", 1, (_local6[0][0] + _arg1[5]), _local8, "iDown", 0, false]];
_local9 = _local9.concat(_local10);
_local11 = [Hitz2S.ListBoxTextElement, _arg1[5], _arg1[6], _arg1[8], "w", _arg1[8], 0, 0];
_local12 = new OListBox(_local9, _local11, Hitz2S.ListBoxTextElementP, _local6, null);
_local12.iUp.prAnimatorParams = OInterface.iDefLBButtonAnimators;
_local12.iDown.prAnimatorParams = OInterface.iDefLBButtonAnimators;
_local12.prSelection = false;
_local12.prCycling = true;
_local12.prLBParams = _arg1[11];
_local12.Pos(OGlobal.ScaleFloor(_arg1[12]), OGlobal.ScaleFloor(_arg1[13]));
return (_local12);
}
public static function InvisibleButton(_arg1:Array):OButton{
var _local2:Array;
var _local3:OButton;
_local2 = [[OSprite.Make, [[ODisplay.SpriteRect, (_arg1[1] * OGlobal.Scale), (_arg1[2] * OGlobal.Scale)]], 0, 0, "iHit", 0, false]];
_local3 = new OButton(_local2, OAnimatorManager.iNullAnimators);
_local3.Pos(OGlobal.ScaleFloor(_arg1[3]), OGlobal.ScaleFloor(_arg1[4]));
_local3.prVisible = true;
_local3.prActive = true;
return (_local3);
}
}
}//package
Section 209
//OCGame (OCGame)
package {
import ENGINE.GAME.*;
public class OCGame extends OGame {
public function OCGame(){
super(1, 5);
}
override public function DefaultInitLocalScores():void{
this.iScores.Clear(0);
this.iScores.AddScore("Emily", (int(((Math.random() * 100) + 50)) * 50), 0, int(((Math.random() * 5) + 3)));
this.iScores.AddScore("Michael", (int(((Math.random() * 100) + 50)) * 50), 0, int(((Math.random() * 5) + 3)));
this.iScores.AddScore("Jacob", (int(((Math.random() * 100) + 50)) * 50), 0, int(((Math.random() * 5) + 3)));
this.iScores.AddScore("Isabella", (int(((Math.random() * 100) + 50)) * 50), 0, int(((Math.random() * 5) + 3)));
this.iScores.AddScore("Madison", (int(((Math.random() * 100) + 50)) * 50), 0, int(((Math.random() * 5) + 3)));
this.iScores.SortOn(0);
}
}
}//package