(function ($hx_exports) { "use strict";
$hx_exports.openfl = $hx_exports.openfl || {};
$hx_exports.lime = $hx_exports.lime || {};
var $hxClasses = {},$estr = function() { return js.Boot.__string_rec(this,''); };
function $extend(from, fields) {
function Inherit() {} Inherit.prototype = from; var proto = new Inherit();
for (var name in fields) proto[name] = fields[name];
if( fields.toString !== Object.prototype.toString ) proto.toString = fields.toString;
return proto;
}
var haxe = {};
haxe.Timer = function(time_ms) {
var me = this;
this.id = setInterval(function() {
me.run();
},time_ms);
};
$hxClasses["haxe.Timer"] = haxe.Timer;
haxe.Timer.__name__ = ["haxe","Timer"];
haxe.Timer.delay = function(f,time_ms) {
var t = new haxe.Timer(time_ms);
t.run = function() {
t.stop();
f();
};
return t;
};
haxe.Timer.measure = function(f,pos) {
var t0 = haxe.Timer.stamp();
var r = f();
haxe.Log.trace(haxe.Timer.stamp() - t0 + "s",pos);
return r;
};
haxe.Timer.stamp = function() {
return new Date().getTime() / 1000;
};
haxe.Timer.prototype = {
stop: function() {
if(this.id == null) return;
clearInterval(this.id);
this.id = null;
}
,run: function() {
}
,__class__: haxe.Timer
};
var lime = {};
lime.system = {};
lime.system.System = function() { };
$hxClasses["lime.system.System"] = lime.system.System;
lime.system.System.__name__ = ["lime","system","System"];
lime.system.System.disableCFFI = null;
lime.system.System.embed = $hx_exports.lime.embed = function(element,width,height,background,assetsPrefix) {
var htmlElement = null;
if(typeof(element) == "string") htmlElement = window.document.getElementById(js.Boot.__cast(element , String)); else if(element == null) htmlElement = window.document.createElement("div"); else htmlElement = element;
var color = null;
if(background != null) {
background = StringTools.replace(background,"#","");
if(background.indexOf("0x") > -1) color = Std.parseInt(background); else color = Std.parseInt("0x" + background);
}
if(width == null) width = 0;
if(height == null) height = 0;
ApplicationMain.config.background = color;
ApplicationMain.config.element = htmlElement;
ApplicationMain.config.width = width;
ApplicationMain.config.height = height;
ApplicationMain.config.assetsPrefix = assetsPrefix;
ApplicationMain.create();
};
lime.system.System.findHaxeLib = function(library) {
return "";
};
lime.system.System.getTimer = function() {
return Std["int"]((haxe.Timer.stamp() - lime.system.System.__startTime) * 1000);
};
lime.system.System.load = function(library,method,args,lazy) {
if(lazy == null) lazy = false;
if(args == null) args = 0;
if(lime.system.System.disableCFFI) return Reflect.makeVarArgs(function(__) {
return { };
});
if(lazy) {
}
var result = null;
return result;
};
lime.system.System.sysName = function() {
return null;
};
lime.system.System.tryLoad = function(name,library,func,args) {
return null;
};
lime.system.System.loaderTrace = function(message) {
};
var Reflect = function() { };
$hxClasses["Reflect"] = Reflect;
Reflect.__name__ = ["Reflect"];
Reflect.hasField = function(o,field) {
return Object.prototype.hasOwnProperty.call(o,field);
};
Reflect.field = function(o,field) {
try {
return o[field];
} catch( e ) {
return null;
}
};
Reflect.setField = function(o,field,value) {
o[field] = value;
};
Reflect.getProperty = function(o,field) {
var tmp;
if(o == null) return null; else if(o.__properties__ && (tmp = o.__properties__["get_" + field])) return o[tmp](); else return o[field];
};
Reflect.setProperty = function(o,field,value) {
var tmp;
if(o.__properties__ && (tmp = o.__properties__["set_" + field])) o[tmp](value); else o[field] = value;
};
Reflect.callMethod = function(o,func,args) {
return func.apply(o,args);
};
Reflect.fields = function(o) {
var a = [];
if(o != null) {
var hasOwnProperty = Object.prototype.hasOwnProperty;
for( var f in o ) {
if(f != "__id__" && f != "hx__closures__" && hasOwnProperty.call(o,f)) a.push(f);
}
}
return a;
};
Reflect.isFunction = function(f) {
return typeof(f) == "function" && !(f.__name__ || f.__ename__);
};
Reflect.compare = function(a,b) {
if(a == b) return 0; else if(a > b) return 1; else return -1;
};
Reflect.compareMethods = function(f1,f2) {
if(f1 == f2) return true;
if(!Reflect.isFunction(f1) || !Reflect.isFunction(f2)) return false;
return f1.scope == f2.scope && f1.method == f2.method && f1.method != null;
};
Reflect.isEnumValue = function(v) {
return v != null && v.__enum__ != null;
};
Reflect.deleteField = function(o,field) {
if(!Object.prototype.hasOwnProperty.call(o,field)) return false;
delete(o[field]);
return true;
};
Reflect.makeVarArgs = function(f) {
return function() {
var a = Array.prototype.slice.call(arguments);
return f(a);
};
};
lime.utils = {};
lime.utils.ByteArray = function(size) {
if(size == null) size = 0;
this.littleEndian = false;
this.allocated = 0;
this.position = 0;
this.length = 0;
if(size > 0) this.allocated = size;
this.___resizeBuffer(this.allocated);
this.set_length(this.allocated);
};
$hxClasses["lime.utils.ByteArray"] = lime.utils.ByteArray;
lime.utils.ByteArray.__name__ = ["lime","utils","ByteArray"];
lime.utils.ByteArray.fromBytes = function(bytes) {
var result = new lime.utils.ByteArray();
result.byteView = new Uint8Array(bytes.b);
result.set_length(result.byteView.length);
result.allocated = result.length;
return result;
};
lime.utils.ByteArray.readFile = function(path) {
return null;
};
lime.utils.ByteArray.__ofBuffer = function(buffer) {
var bytes = new lime.utils.ByteArray();
bytes.set_length(bytes.allocated = buffer.byteLength);
bytes.data = new DataView(buffer);
bytes.byteView = new Uint8Array(buffer);
return bytes;
};
lime.utils.ByteArray.prototype = {
clear: function() {
if(this.allocated < 0) this.___resizeBuffer(this.allocated = Std["int"](Math.max(0,this.allocated * 2))); else if(this.allocated > 0) this.___resizeBuffer(this.allocated = 0);
this.length = 0;
0;
this.position = 0;
}
,compress: function(algorithm) {
}
,deflate: function() {
this.compress(lime.utils.CompressionAlgorithm.DEFLATE);
}
,inflate: function() {
this.uncompress(lime.utils.CompressionAlgorithm.DEFLATE);
}
,readBoolean: function() {
return this.readByte() != 0;
}
,readByte: function() {
var data = this.data;
return data.getInt8(this.position++);
}
,readBytes: function(bytes,offset,length) {
if(length == null) length = 0;
if(offset == null) offset = 0;
if(offset < 0 || length < 0) throw "Read error - Out of bounds";
if(length == 0) length = this.length - this.position;
var lengthToEnsure = offset + length;
if(bytes.length < lengthToEnsure) {
if(bytes.allocated < lengthToEnsure) bytes.___resizeBuffer(bytes.allocated = Std["int"](Math.max(lengthToEnsure,bytes.allocated * 2))); else if(bytes.allocated > lengthToEnsure) bytes.___resizeBuffer(bytes.allocated = lengthToEnsure);
bytes.length = lengthToEnsure;
lengthToEnsure;
}
bytes.byteView.set(this.byteView.subarray(this.position,this.position + length),offset);
bytes.position = offset;
this.position += length;
if(bytes.position + length > bytes.length) bytes.set_length(bytes.position + length);
}
,readDouble: function() {
var $double = this.data.getFloat64(this.position,this.littleEndian);
this.position += 8;
return $double;
}
,readFloat: function() {
var $float = this.data.getFloat32(this.position,this.littleEndian);
this.position += 4;
return $float;
}
,readInt: function() {
var $int = this.data.getInt32(this.position,this.littleEndian);
this.position += 4;
return $int;
}
,readMultiByte: function(length,charSet) {
return this.readUTFBytes(length);
}
,readShort: function() {
var $short = this.data.getInt16(this.position,this.littleEndian);
this.position += 2;
return $short;
}
,readUnsignedByte: function() {
var data = this.data;
return data.getUint8(this.position++);
}
,readUnsignedInt: function() {
var uInt = this.data.getUint32(this.position,this.littleEndian);
this.position += 4;
return uInt;
}
,readUnsignedShort: function() {
var uShort = this.data.getUint16(this.position,this.littleEndian);
this.position += 2;
return uShort;
}
,readUTF: function() {
var bytesCount = this.readUnsignedShort();
return this.readUTFBytes(bytesCount);
}
,readUTFBytes: function(len) {
var value = "";
var max = this.position + len;
while(this.position < max) {
var data = this.data;
var c = data.getUint8(this.position++);
if(c < 128) {
if(c == 0) break;
value += String.fromCharCode(c);
} else if(c < 224) value += String.fromCharCode((c & 63) << 6 | data.getUint8(this.position++) & 127); else if(c < 240) {
var c2 = data.getUint8(this.position++);
value += String.fromCharCode((c & 31) << 12 | (c2 & 127) << 6 | data.getUint8(this.position++) & 127);
} else {
var c21 = data.getUint8(this.position++);
var c3 = data.getUint8(this.position++);
value += String.fromCharCode((c & 15) << 18 | (c21 & 127) << 12 | c3 << 6 & 127 | data.getUint8(this.position++) & 127);
}
}
return value;
}
,toString: function() {
var cachePosition = this.position;
this.position = 0;
var value = this.readUTFBytes(this.length);
this.position = cachePosition;
return value;
}
,uncompress: function(algorithm) {
null;
}
,write_uncheck: function($byte) {
}
,writeBoolean: function(value) {
this.writeByte(value?1:0);
}
,writeByte: function(value) {
var lengthToEnsure = this.position + 1;
if(this.length < lengthToEnsure) {
if(this.allocated < lengthToEnsure) this.___resizeBuffer(this.allocated = Std["int"](Math.max(lengthToEnsure,this.allocated * 2))); else if(this.allocated > lengthToEnsure) this.___resizeBuffer(this.allocated = lengthToEnsure);
this.length = lengthToEnsure;
lengthToEnsure;
}
var data = this.data;
data.setInt8(this.position,value);
this.position += 1;
}
,writeBytes: function(bytes,offset,length) {
if(length == null) length = 0;
if(offset == null) offset = 0;
if(bytes.length == 0) return;
if((function($this) {
var $r;
var aNeg = 0 < 0;
var bNeg = offset < 0;
$r = aNeg != bNeg?aNeg:0 > offset;
return $r;
}(this)) || (function($this) {
var $r;
var aNeg1 = 0 < 0;
var bNeg1 = length < 0;
$r = aNeg1 != bNeg1?aNeg1:0 > length;
return $r;
}(this))) throw "Write error - Out of bounds";
if((function($this) {
var $r;
var $int = length;
$r = $int < 0?4294967296.0 + $int:$int + 0.0;
return $r;
}(this)) == 0) length = bytes.length;
var lengthToEnsure = this.position + length;
if(this.length < lengthToEnsure) {
if(this.allocated < lengthToEnsure) this.___resizeBuffer(this.allocated = Std["int"](Math.max(lengthToEnsure,this.allocated * 2))); else if(this.allocated > lengthToEnsure) this.___resizeBuffer(this.allocated = lengthToEnsure);
this.length = lengthToEnsure;
lengthToEnsure;
}
this.byteView.set(bytes.byteView.subarray(offset,offset + length),this.position);
this.position = this.position + length;
}
,writeDouble: function(x) {
var lengthToEnsure = this.position + 8;
if(this.length < lengthToEnsure) {
if(this.allocated < lengthToEnsure) this.___resizeBuffer(this.allocated = Std["int"](Math.max(lengthToEnsure,this.allocated * 2))); else if(this.allocated > lengthToEnsure) this.___resizeBuffer(this.allocated = lengthToEnsure);
this.length = lengthToEnsure;
lengthToEnsure;
}
this.data.setFloat64(this.position,x,this.littleEndian);
this.position += 8;
}
,writeFile: function(path) {
}
,writeFloat: function(x) {
var lengthToEnsure = this.position + 4;
if(this.length < lengthToEnsure) {
if(this.allocated < lengthToEnsure) this.___resizeBuffer(this.allocated = Std["int"](Math.max(lengthToEnsure,this.allocated * 2))); else if(this.allocated > lengthToEnsure) this.___resizeBuffer(this.allocated = lengthToEnsure);
this.length = lengthToEnsure;
lengthToEnsure;
}
this.data.setFloat32(this.position,x,this.littleEndian);
this.position += 4;
}
,writeInt: function(value) {
var lengthToEnsure = this.position + 4;
if(this.length < lengthToEnsure) {
if(this.allocated < lengthToEnsure) this.___resizeBuffer(this.allocated = Std["int"](Math.max(lengthToEnsure,this.allocated * 2))); else if(this.allocated > lengthToEnsure) this.___resizeBuffer(this.allocated = lengthToEnsure);
this.length = lengthToEnsure;
lengthToEnsure;
}
this.data.setInt32(this.position,value,this.littleEndian);
this.position += 4;
}
,writeShort: function(value) {
var lengthToEnsure = this.position + 2;
if(this.length < lengthToEnsure) {
if(this.allocated < lengthToEnsure) this.___resizeBuffer(this.allocated = Std["int"](Math.max(lengthToEnsure,this.allocated * 2))); else if(this.allocated > lengthToEnsure) this.___resizeBuffer(this.allocated = lengthToEnsure);
this.length = lengthToEnsure;
lengthToEnsure;
}
this.data.setInt16(this.position,value,this.littleEndian);
this.position += 2;
}
,writeUnsignedInt: function(value) {
var lengthToEnsure = this.position + 4;
if(this.length < lengthToEnsure) {
if(this.allocated < lengthToEnsure) this.___resizeBuffer(this.allocated = Std["int"](Math.max(lengthToEnsure,this.allocated * 2))); else if(this.allocated > lengthToEnsure) this.___resizeBuffer(this.allocated = lengthToEnsure);
this.length = lengthToEnsure;
lengthToEnsure;
}
this.data.setUint32(this.position,value,this.littleEndian);
this.position += 4;
}
,writeUnsignedShort: function(value) {
var lengthToEnsure = this.position + 2;
if(this.length < lengthToEnsure) {
if(this.allocated < lengthToEnsure) this.___resizeBuffer(this.allocated = Std["int"](Math.max(lengthToEnsure,this.allocated * 2))); else if(this.allocated > lengthToEnsure) this.___resizeBuffer(this.allocated = lengthToEnsure);
this.length = lengthToEnsure;
lengthToEnsure;
}
this.data.setUint16(this.position,value,this.littleEndian);
this.position += 2;
}
,writeUTF: function(value) {
this.writeUnsignedShort(this.__getUTFBytesCount(value));
this.writeUTFBytes(value);
}
,writeUTFBytes: function(value) {
var _g1 = 0;
var _g = value.length;
while(_g1 < _g) {
var i = _g1++;
var c = value.charCodeAt(i);
if(c <= 127) this.writeByte(c); else if(c <= 2047) {
this.writeByte(192 | c >> 6);
this.writeByte(128 | c & 63);
} else if(c <= 65535) {
this.writeByte(224 | c >> 12);
this.writeByte(128 | c >> 6 & 63);
this.writeByte(128 | c & 63);
} else {
this.writeByte(240 | c >> 18);
this.writeByte(128 | c >> 12 & 63);
this.writeByte(128 | c >> 6 & 63);
this.writeByte(128 | c & 63);
}
}
}
,__fromBytes: function(bytes) {
this.byteView = new Uint8Array(bytes.b);
this.set_length(this.byteView.length);
this.allocated = this.length;
}
,__get: function(pos) {
return this.data.getInt8(pos);
}
,__getBuffer: function() {
return this.data.buffer;
}
,__getUTFBytesCount: function(value) {
var count = 0;
var _g1 = 0;
var _g = value.length;
while(_g1 < _g) {
var i = _g1++;
var c = value.charCodeAt(i);
if(c <= 127) count += 1; else if(c <= 2047) count += 2; else if(c <= 65535) count += 3; else count += 4;
}
return count;
}
,___resizeBuffer: function(len) {
var oldByteView = this.byteView;
var newByteView = new Uint8Array(len);
if(oldByteView != null) {
if(oldByteView.length <= len) newByteView.set(oldByteView); else newByteView.set(oldByteView.subarray(0,len));
}
this.byteView = newByteView;
this.data = new DataView(newByteView.buffer);
}
,__set: function(pos,v) {
this.data.setUint8(pos,v);
}
,get_bytesAvailable: function() {
return this.length - this.position;
}
,get_endian: function() {
if(this.littleEndian) return "littleEndian"; else return "bigEndian";
}
,set_endian: function(endian) {
this.littleEndian = endian == "littleEndian";
return endian;
}
,set_length: function(value) {
if(this.allocated < value) this.___resizeBuffer(this.allocated = Std["int"](Math.max(value,this.allocated * 2))); else if(this.allocated > value) this.___resizeBuffer(this.allocated = value);
this.length = value;
return value;
}
,__class__: lime.utils.ByteArray
,__properties__: {set_length:"set_length",set_endian:"set_endian",get_endian:"get_endian",get_bytesAvailable:"get_bytesAvailable"}
};
var __ASSET__data_gameplay_js = function(size) {
if(size == null) size = 0;
lime.utils.ByteArray.call(this);
this.__fromBytes(haxe.Resource.getBytes(__ASSET__data_gameplay_js.resourceName));
};
$hxClasses["__ASSET__data_gameplay_js"] = __ASSET__data_gameplay_js;
__ASSET__data_gameplay_js.__name__ = ["__ASSET__data_gameplay_js"];
__ASSET__data_gameplay_js.__super__ = lime.utils.ByteArray;
__ASSET__data_gameplay_js.prototype = $extend(lime.utils.ByteArray.prototype,{
__class__: __ASSET__data_gameplay_js
});
var __ASSET__images_atlas_0_json = function(size) {
if(size == null) size = 0;
lime.utils.ByteArray.call(this);
this.__fromBytes(haxe.Resource.getBytes(__ASSET__images_atlas_0_json.resourceName));
};
$hxClasses["__ASSET__images_atlas_0_json"] = __ASSET__images_atlas_0_json;
__ASSET__images_atlas_0_json.__name__ = ["__ASSET__images_atlas_0_json"];
__ASSET__images_atlas_0_json.__super__ = lime.utils.ByteArray;
__ASSET__images_atlas_0_json.prototype = $extend(lime.utils.ByteArray.prototype,{
__class__: __ASSET__images_atlas_0_json
});
var __ASSET__images_atlas_1_json = function(size) {
if(size == null) size = 0;
lime.utils.ByteArray.call(this);
this.__fromBytes(haxe.Resource.getBytes(__ASSET__images_atlas_1_json.resourceName));
};
$hxClasses["__ASSET__images_atlas_1_json"] = __ASSET__images_atlas_1_json;
__ASSET__images_atlas_1_json.__name__ = ["__ASSET__images_atlas_1_json"];
__ASSET__images_atlas_1_json.__super__ = lime.utils.ByteArray;
__ASSET__images_atlas_1_json.prototype = $extend(lime.utils.ByteArray.prototype,{
__class__: __ASSET__images_atlas_1_json
});
var __ASSET__images_atlas_2_json = function(size) {
if(size == null) size = 0;
lime.utils.ByteArray.call(this);
this.__fromBytes(haxe.Resource.getBytes(__ASSET__images_atlas_2_json.resourceName));
};
$hxClasses["__ASSET__images_atlas_2_json"] = __ASSET__images_atlas_2_json;
__ASSET__images_atlas_2_json.__name__ = ["__ASSET__images_atlas_2_json"];
__ASSET__images_atlas_2_json.__super__ = lime.utils.ByteArray;
__ASSET__images_atlas_2_json.prototype = $extend(lime.utils.ByteArray.prototype,{
__class__: __ASSET__images_atlas_2_json
});
var __ASSET__images_fonts_purple_kern_txt = function(size) {
if(size == null) size = 0;
lime.utils.ByteArray.call(this);
this.__fromBytes(haxe.Resource.getBytes(__ASSET__images_fonts_purple_kern_txt.resourceName));
};
$hxClasses["__ASSET__images_fonts_purple_kern_txt"] = __ASSET__images_fonts_purple_kern_txt;
__ASSET__images_fonts_purple_kern_txt.__name__ = ["__ASSET__images_fonts_purple_kern_txt"];
__ASSET__images_fonts_purple_kern_txt.__super__ = lime.utils.ByteArray;
__ASSET__images_fonts_purple_kern_txt.prototype = $extend(lime.utils.ByteArray.prototype,{
__class__: __ASSET__images_fonts_purple_kern_txt
});
var __ASSET__images_fonts_yellow_big_kern_txt = function(size) {
if(size == null) size = 0;
lime.utils.ByteArray.call(this);
this.__fromBytes(haxe.Resource.getBytes(__ASSET__images_fonts_yellow_big_kern_txt.resourceName));
};
$hxClasses["__ASSET__images_fonts_yellow_big_kern_txt"] = __ASSET__images_fonts_yellow_big_kern_txt;
__ASSET__images_fonts_yellow_big_kern_txt.__name__ = ["__ASSET__images_fonts_yellow_big_kern_txt"];
__ASSET__images_fonts_yellow_big_kern_txt.__super__ = lime.utils.ByteArray;
__ASSET__images_fonts_yellow_big_kern_txt.prototype = $extend(lime.utils.ByteArray.prototype,{
__class__: __ASSET__images_fonts_yellow_big_kern_txt
});
var __ASSET__images_fonts_yellow_small_kern_txt = function(size) {
if(size == null) size = 0;
lime.utils.ByteArray.call(this);
this.__fromBytes(haxe.Resource.getBytes(__ASSET__images_fonts_yellow_small_kern_txt.resourceName));
};
$hxClasses["__ASSET__images_fonts_yellow_small_kern_txt"] = __ASSET__images_fonts_yellow_small_kern_txt;
__ASSET__images_fonts_yellow_small_kern_txt.__name__ = ["__ASSET__images_fonts_yellow_small_kern_txt"];
__ASSET__images_fonts_yellow_small_kern_txt.__super__ = lime.utils.ByteArray;
__ASSET__images_fonts_yellow_small_kern_txt.prototype = $extend(lime.utils.ByteArray.prototype,{
__class__: __ASSET__images_fonts_yellow_small_kern_txt
});
var ApplicationMain = function() { };
$hxClasses["ApplicationMain"] = ApplicationMain;
ApplicationMain.__name__ = ["ApplicationMain"];
ApplicationMain.config = null;
ApplicationMain.preloader = null;
ApplicationMain.create = function() {
var app = new openfl.display.Application();
app.create(ApplicationMain.config);
var display = new co.doubleduck.pinata.Preloader();
ApplicationMain.preloader = new openfl.display.Preloader(display);
ApplicationMain.preloader.onComplete = ApplicationMain.init;
ApplicationMain.preloader.create(ApplicationMain.config);
var urls = [];
var types = [];
urls.push("data/gameplay.js");
types.push("TEXT");
ApplicationMain.embeddedFiles.push(js.Boot.__cast(Type.createInstance(__ASSET__data_gameplay_js,[]) , lime.utils.ByteArray));
urls.push("sounds/eating_candies.ogg");
types.push("SOUND");
urls.push("sounds/hit1.ogg");
types.push("SOUND");
urls.push("sounds/hit2.ogg");
types.push("SOUND");
urls.push("sounds/hit3.ogg");
types.push("SOUND");
urls.push("sounds/hit4.ogg");
types.push("SOUND");
urls.push("sounds/menu_open.ogg");
types.push("SOUND");
urls.push("sounds/new_level_unlocked.ogg");
types.push("SOUND");
urls.push("sounds/pinata_crack.ogg");
types.push("SOUND");
urls.push("sounds/purchase.ogg");
types.push("SOUND");
urls.push("sounds/eating_candies.mp3");
types.push("SOUND");
urls.push("sounds/hit1.mp3");
types.push("SOUND");
urls.push("sounds/hit2.mp3");
types.push("SOUND");
urls.push("sounds/hit3.mp3");
types.push("SOUND");
urls.push("sounds/hit4.mp3");
types.push("SOUND");
urls.push("sounds/menu_open.mp3");
types.push("SOUND");
urls.push("sounds/new_level_unlocked.mp3");
types.push("SOUND");
urls.push("sounds/pinata_crack.mp3");
types.push("SOUND");
urls.push("sounds/purchase.mp3");
types.push("SOUND");
urls.push("musics/music_loop.ogg");
types.push("MUSIC");
urls.push("musics/music_loop.mp3");
types.push("MUSIC");
urls.push("images/atlas_0.json");
types.push("TEXT");
ApplicationMain.embeddedFiles.push(js.Boot.__cast(Type.createInstance(__ASSET__images_atlas_0_json,[]) , lime.utils.ByteArray));
urls.push("images/atlas_0.png");
types.push("IMAGE");
urls.push("images/atlas_1.json");
types.push("TEXT");
ApplicationMain.embeddedFiles.push(js.Boot.__cast(Type.createInstance(__ASSET__images_atlas_1_json,[]) , lime.utils.ByteArray));
urls.push("images/atlas_1.png");
types.push("IMAGE");
urls.push("images/atlas_2.json");
types.push("TEXT");
ApplicationMain.embeddedFiles.push(js.Boot.__cast(Type.createInstance(__ASSET__images_atlas_2_json,[]) , lime.utils.ByteArray));
urls.push("images/atlas_2.png");
types.push("IMAGE");
urls.push("images/backs/back1.jpg");
types.push("IMAGE");
urls.push("images/backs/back2.jpg");
types.push("IMAGE");
urls.push("images/backs/back3.jpg");
types.push("IMAGE");
urls.push("images/backs/bonus.jpg");
types.push("IMAGE");
urls.push("images/fonts/purple/kern.txt");
types.push("TEXT");
ApplicationMain.embeddedFiles.push(js.Boot.__cast(Type.createInstance(__ASSET__images_fonts_purple_kern_txt,[]) , lime.utils.ByteArray));
urls.push("images/fonts/yellow_big/kern.txt");
types.push("TEXT");
ApplicationMain.embeddedFiles.push(js.Boot.__cast(Type.createInstance(__ASSET__images_fonts_yellow_big_kern_txt,[]) , lime.utils.ByteArray));
urls.push("images/fonts/yellow_small/kern.txt");
types.push("TEXT");
ApplicationMain.embeddedFiles.push(js.Boot.__cast(Type.createInstance(__ASSET__images_fonts_yellow_small_kern_txt,[]) , lime.utils.ByteArray));
urls.push("images/missions/paintings/paint3.jpg");
types.push("IMAGE");
urls.push("images/missions/paintings/paint4.jpg");
types.push("IMAGE");
urls.push("images/missions/paintings/paint6.jpg");
types.push("IMAGE");
if(ApplicationMain.config.assetsPrefix != null) {
var _g1 = 0;
var _g = urls.length;
while(_g1 < _g) {
var i = _g1++;
if(types[i] != "FONT") urls[i] = ApplicationMain.config.assetsPrefix + urls[i];
}
}
ApplicationMain.preloader.load(urls,types);
var result = app.exec();
};
ApplicationMain.init = function() {
var loaded = 0;
var total = 0;
var library_onLoad = function(__) {
loaded++;
if(loaded == total) ApplicationMain.start();
};
ApplicationMain.preloader = null;
if(loaded == total) ApplicationMain.start();
};
ApplicationMain.main = function() {
ApplicationMain.config = { antialiasing : 0, background : 0, borderless : false, depthBuffer : false, fps : 0, fullscreen : false, height : 480, orientation : "portrait", resizable : true, stencilBuffer : false, title : "Pinata", vsync : false, width : 320};
};
ApplicationMain.start = function() {
var hasMain = false;
var entryPoint = Type.resolveClass("Main");
var _g = 0;
var _g1 = Type.getClassFields(entryPoint);
while(_g < _g1.length) {
var methodName = _g1[_g];
++_g;
if(methodName == "main") {
hasMain = true;
break;
}
}
if(hasMain) Reflect.callMethod(entryPoint,Reflect.field(entryPoint,"main"),[]); else {
var instance = Type.createInstance(DocumentClass,[]);
}
openfl.Lib.current.stage.dispatchEvent(new openfl.events.Event(openfl.events.Event.RESIZE,false,false));
};
var openfl = {};
openfl.events = {};
openfl.events.IEventDispatcher = function() { };
$hxClasses["openfl.events.IEventDispatcher"] = openfl.events.IEventDispatcher;
openfl.events.IEventDispatcher.__name__ = ["openfl","events","IEventDispatcher"];
openfl.events.IEventDispatcher.prototype = {
__class__: openfl.events.IEventDispatcher
};
openfl.events.EventDispatcher = function(target) {
if(target != null) this.__targetDispatcher = target;
};
$hxClasses["openfl.events.EventDispatcher"] = openfl.events.EventDispatcher;
openfl.events.EventDispatcher.__name__ = ["openfl","events","EventDispatcher"];
openfl.events.EventDispatcher.__interfaces__ = [openfl.events.IEventDispatcher];
openfl.events.EventDispatcher.__sortByPriority = function(l1,l2) {
if(l1.priority == l2.priority) return 0; else if(l1.priority > l2.priority) return -1; else return 1;
};
openfl.events.EventDispatcher.prototype = {
addEventListener: function(type,listener,useCapture,priority,useWeakReference) {
if(useWeakReference == null) useWeakReference = false;
if(priority == null) priority = 0;
if(useCapture == null) useCapture = false;
if(this.__eventMap == null) this.__eventMap = new haxe.ds.StringMap();
if(!this.__eventMap.exists(type)) {
var list = new Array();
list.push(new openfl.events._EventDispatcher.Listener(listener,useCapture,priority));
this.__eventMap.set(type,list);
} else {
var list1 = this.__eventMap.get(type);
var _g1 = 0;
var _g = list1.length;
while(_g1 < _g) {
var i = _g1++;
if(Reflect.compareMethods(list1[i].callback,listener)) return;
}
list1.push(new openfl.events._EventDispatcher.Listener(listener,useCapture,priority));
list1.sort(openfl.events.EventDispatcher.__sortByPriority);
}
}
,dispatchEvent: function(event) {
if(this.__eventMap == null || event == null) return false;
var list = this.__eventMap.get(event.type);
if(list == null) return false;
if(event.target == null) {
if(this.__targetDispatcher != null) event.target = this.__targetDispatcher; else event.target = this;
}
event.currentTarget = this;
var capture = event.eventPhase == openfl.events.EventPhase.CAPTURING_PHASE;
var index = 0;
var listener;
while(index < list.length) {
listener = list[index];
if(listener.useCapture == capture) {
listener.callback(event);
if(event.__isCancelledNow) return true;
}
if(listener == list[index]) index++;
}
return true;
}
,hasEventListener: function(type) {
if(this.__eventMap == null) return false;
return this.__eventMap.exists(type);
}
,removeEventListener: function(type,listener,capture) {
if(capture == null) capture = false;
if(this.__eventMap == null) return;
var list = this.__eventMap.get(type);
if(list == null) return;
var _g1 = 0;
var _g = list.length;
while(_g1 < _g) {
var i = _g1++;
if(list[i].match(listener,capture)) {
list.splice(i,1);
break;
}
}
if(list.length == 0) this.__eventMap.remove(type);
if(!this.__eventMap.iterator().hasNext()) this.__eventMap = null;
}
,toString: function() {
var full = Type.getClassName(Type.getClass(this));
var $short = full.split(".").pop();
return "[object " + $short + "]";
}
,willTrigger: function(type) {
return this.hasEventListener(type);
}
,__class__: openfl.events.EventDispatcher
};
openfl.display = {};
openfl.display.IBitmapDrawable = function() { };
$hxClasses["openfl.display.IBitmapDrawable"] = openfl.display.IBitmapDrawable;
openfl.display.IBitmapDrawable.__name__ = ["openfl","display","IBitmapDrawable"];
openfl.display.IBitmapDrawable.prototype = {
__class__: openfl.display.IBitmapDrawable
};
openfl.display.DisplayObject = function() {
openfl.events.EventDispatcher.call(this);
this.__alpha = 1;
this.__rotation = 0;
this.__scaleX = 1;
this.__scaleY = 1;
this.__visible = true;
this.__x = 0;
this.__y = 0;
this.__worldAlpha = 1;
this.__worldTransform = new openfl.geom.Matrix();
this.__rotationCache = 0;
this.__rotationSine = 0;
this.__rotationCosine = 1;
this.set_name("instance" + ++openfl.display.DisplayObject.__instanceCount);
};
$hxClasses["openfl.display.DisplayObject"] = openfl.display.DisplayObject;
openfl.display.DisplayObject.__name__ = ["openfl","display","DisplayObject"];
openfl.display.DisplayObject.__interfaces__ = [openfl.display.IBitmapDrawable];
openfl.display.DisplayObject.__super__ = openfl.events.EventDispatcher;
openfl.display.DisplayObject.prototype = $extend(openfl.events.EventDispatcher.prototype,{
dispatchEvent: function(event) {
var result = openfl.events.EventDispatcher.prototype.dispatchEvent.call(this,event);
if(event.__isCancelled) return true;
if(event.bubbles && this.parent != null && this.parent != this) {
event.eventPhase = openfl.events.EventPhase.BUBBLING_PHASE;
this.parent.dispatchEvent(event);
}
return result;
}
,getBounds: function(targetCoordinateSpace) {
var matrix = this.__getTransform();
if(targetCoordinateSpace != null) {
matrix = new openfl.geom.Matrix(matrix.a,matrix.b,matrix.c,matrix.d,matrix.tx,matrix.ty);
matrix.concat(targetCoordinateSpace.__worldTransform.clone().invert());
}
var bounds = new openfl.geom.Rectangle();
this.__getBounds(bounds,matrix);
return bounds;
}
,getRect: function(targetCoordinateSpace) {
return this.getBounds(targetCoordinateSpace);
}
,globalToLocal: function(pos) {
return this.__getTransform().clone().invert().transformPoint(pos);
}
,hitTestObject: function(obj) {
if(obj != null && obj.parent != null && this.parent != null) {
var currentBounds = this.getBounds(this);
var targetBounds = obj.getBounds(this);
return currentBounds.intersects(targetBounds);
}
return false;
}
,hitTestPoint: function(x,y,shapeFlag) {
if(shapeFlag == null) shapeFlag = false;
if(this.parent != null) {
var currentBounds = this.getBounds(this);
return currentBounds.containsPoint(new openfl.geom.Point(x,y));
}
return false;
}
,localToGlobal: function(point) {
return this.__getTransform().transformPoint(point);
}
,__broadcast: function(event,notifyChilden) {
if(this.__eventMap != null && this.hasEventListener(event.type)) {
var result = openfl.events.EventDispatcher.prototype.dispatchEvent.call(this,event);
if(event.__isCancelled) return true;
return result;
}
return false;
}
,__getBounds: function(rect,matrix) {
}
,__getInteractive: function(stack) {
}
,__getLocalBounds: function(rect) {
this.__getTransform();
this.__getBounds(rect,new openfl.geom.Matrix());
}
,__getTransform: function() {
if(this.__transformDirty || openfl.display.DisplayObject.__worldTransformDirty > 0) {
var list = [];
var current = this;
var transformDirty = this.__transformDirty;
if(this.parent == null) {
if(transformDirty) this.__update(true,false);
} else while(current.parent != null) {
list.push(current);
current = current.parent;
if(current.__transformDirty) transformDirty = true;
}
if(transformDirty) {
var i = list.length;
while(--i >= 0) list[i].__update(true,false);
}
}
return this.__worldTransform;
}
,__hitTest: function(x,y,shapeFlag,stack,interactiveOnly) {
return false;
}
,__renderCanvas: function(renderSession) {
}
,__renderDOM: function(renderSession) {
}
,__renderGL: function(renderSession) {
}
,__renderMask: function(renderSession) {
}
,__setStageReference: function(stage) {
if(this.stage != stage) {
if(this.stage != null) this.dispatchEvent(new openfl.events.Event(openfl.events.Event.REMOVED_FROM_STAGE,false,false));
this.stage = stage;
if(stage != null) this.dispatchEvent(new openfl.events.Event(openfl.events.Event.ADDED_TO_STAGE,false,false));
}
}
,__setRenderDirty: function() {
if(!this.__renderDirty) {
this.__renderDirty = true;
openfl.display.DisplayObject.__worldRenderDirty++;
}
}
,__setTransformDirty: function() {
if(!this.__transformDirty) {
this.__transformDirty = true;
openfl.display.DisplayObject.__worldTransformDirty++;
}
}
,__update: function(transformOnly,updateChildren) {
this.__renderable = this.get_visible() && this.get_scaleX() != 0 && this.get_scaleY() != 0 && !this.__isMask;
if(this.get_rotation() != this.__rotationCache) {
this.__rotationCache = this.get_rotation();
var radians = this.get_rotation() * (Math.PI / 180);
this.__rotationSine = Math.sin(radians);
this.__rotationCosine = Math.cos(radians);
}
if(this.parent != null) {
var parentTransform = this.parent.__worldTransform;
var a00 = this.__rotationCosine * this.get_scaleX();
var a01 = this.__rotationSine * this.get_scaleX();
var a10 = -this.__rotationSine * this.get_scaleY();
var a11 = this.__rotationCosine * this.get_scaleY();
var b00 = parentTransform.a;
var b01 = parentTransform.b;
var b10 = parentTransform.c;
var b11 = parentTransform.d;
if(this.__worldTransform == null) this.__worldTransform = new openfl.geom.Matrix();
this.__worldTransform.a = a00 * b00 + a01 * b10;
this.__worldTransform.b = a00 * b01 + a01 * b11;
this.__worldTransform.c = a10 * b00 + a11 * b10;
this.__worldTransform.d = a10 * b01 + a11 * b11;
if(this.get_scrollRect() == null) {
this.__worldTransform.tx = this.get_x() * b00 + this.get_y() * b10 + parentTransform.tx;
this.__worldTransform.ty = this.get_x() * b01 + this.get_y() * b11 + parentTransform.ty;
} else {
this.__worldTransform.tx = (this.get_x() - this.get_scrollRect().x) * b00 + (this.get_y() - this.get_scrollRect().y) * b10 + parentTransform.tx;
this.__worldTransform.ty = (this.get_x() - this.get_scrollRect().x) * b01 + (this.get_y() - this.get_scrollRect().y) * b11 + parentTransform.ty;
}
} else {
this.__worldTransform.a = this.__rotationCosine * this.get_scaleX();
this.__worldTransform.c = -this.__rotationSine * this.get_scaleY();
this.__worldTransform.b = this.__rotationSine * this.get_scaleX();
this.__worldTransform.d = this.__rotationCosine * this.get_scaleY();
if(this.get_scrollRect() == null) {
this.__worldTransform.tx = this.get_x();
this.__worldTransform.ty = this.get_y();
} else {
this.__worldTransform.tx = this.get_y() - this.get_scrollRect().x;
this.__worldTransform.ty = this.get_y() - this.get_scrollRect().y;
}
}
if(updateChildren && this.__transformDirty) {
this.__transformDirty = false;
openfl.display.DisplayObject.__worldTransformDirty--;
}
if(!transformOnly) {
if(this.parent != null) this.__worldAlpha = this.get_alpha() * this.parent.__worldAlpha; else this.__worldAlpha = this.get_alpha();
if(updateChildren && this.__renderDirty) this.__renderDirty = false;
}
}
,__updateChildren: function(transformOnly) {
this.__renderable = this.get_visible() && this.get_scaleX() != 0 && this.get_scaleY() != 0 && !this.__isMask;
if(!this.__renderable && !this.__isMask) return;
this.__worldAlpha = this.get_alpha();
if(this.__transformDirty) {
this.__transformDirty = false;
openfl.display.DisplayObject.__worldTransformDirty--;
}
}
,get_alpha: function() {
return this.__alpha;
}
,set_alpha: function(value) {
if(value != this.__alpha) {
if(!this.__renderDirty) {
this.__renderDirty = true;
openfl.display.DisplayObject.__worldRenderDirty++;
}
}
return this.__alpha = value;
}
,get_filters: function() {
if(this.__filters == null) return new Array(); else return this.__filters.slice();
}
,set_filters: function(value) {
return value;
}
,get_height: function() {
var bounds = new openfl.geom.Rectangle();
this.__getTransform();
this.__getBounds(bounds,new openfl.geom.Matrix());
return bounds.height * this.get_scaleY();
}
,set_height: function(value) {
var bounds = new openfl.geom.Rectangle();
this.__getTransform();
this.__getBounds(bounds,new openfl.geom.Matrix());
if(value != bounds.height) this.set_scaleY(value / bounds.height); else this.set_scaleY(1);
return value;
}
,get_mask: function() {
return this.__mask;
}
,set_mask: function(value) {
if(value != this.__mask) {
if(!this.__renderDirty) {
this.__renderDirty = true;
openfl.display.DisplayObject.__worldRenderDirty++;
}
}
if(this.__mask != null) this.__mask.__isMask = false;
if(value != null) value.__isMask = true;
return this.__mask = value;
}
,get_mouseX: function() {
if(this.stage != null) return this.globalToLocal(new openfl.geom.Point(this.stage.__mouseX,0)).x;
return 0;
}
,get_mouseY: function() {
if(this.stage != null) return this.globalToLocal(new openfl.geom.Point(0,this.stage.__mouseY)).y;
return 0;
}
,get_name: function() {
return this.__name;
}
,set_name: function(value) {
return this.__name = value;
}
,get_root: function() {
if(this.stage != null) return openfl.Lib.current;
return null;
}
,get_rotation: function() {
return this.__rotation;
}
,set_rotation: function(value) {
if(value != this.__rotation) {
if(!this.__transformDirty) {
this.__transformDirty = true;
openfl.display.DisplayObject.__worldTransformDirty++;
}
}
return this.__rotation = value;
}
,get_scaleX: function() {
return this.__scaleX;
}
,set_scaleX: function(value) {
if(value != this.__scaleX) {
if(!this.__transformDirty) {
this.__transformDirty = true;
openfl.display.DisplayObject.__worldTransformDirty++;
}
}
return this.__scaleX = value;
}
,get_scaleY: function() {
return this.__scaleY;
}
,set_scaleY: function(value) {
if(this.__scaleY != value) {
if(!this.__transformDirty) {
this.__transformDirty = true;
openfl.display.DisplayObject.__worldTransformDirty++;
}
}
return this.__scaleY = value;
}
,get_scrollRect: function() {
return this.__scrollRect;
}
,set_scrollRect: function(value) {
if(value != this.__scrollRect) {
if(!this.__transformDirty) {
this.__transformDirty = true;
openfl.display.DisplayObject.__worldTransformDirty++;
}
}
return this.__scrollRect = value;
}
,get_transform: function() {
if(this.__transform == null) this.__transform = new openfl.geom.Transform(this);
return this.__transform;
}
,set_transform: function(value) {
if(value == null) throw new openfl.errors.TypeError("Parameter transform must be non-null.");
if(this.__transform == null) this.__transform = new openfl.geom.Transform(this);
if(!this.__transformDirty) {
this.__transformDirty = true;
openfl.display.DisplayObject.__worldTransformDirty++;
}
this.__transform.set_matrix(value.get_matrix().clone());
this.__transform.set_colorTransform(new openfl.geom.ColorTransform(value.get_colorTransform().redMultiplier,value.get_colorTransform().greenMultiplier,value.get_colorTransform().blueMultiplier,value.get_colorTransform().alphaMultiplier,value.get_colorTransform().redOffset,value.get_colorTransform().greenOffset,value.get_colorTransform().blueOffset,value.get_colorTransform().alphaOffset));
return this.__transform;
}
,get_visible: function() {
return this.__visible;
}
,set_visible: function(value) {
if(value != this.__visible) {
if(!this.__renderDirty) {
this.__renderDirty = true;
openfl.display.DisplayObject.__worldRenderDirty++;
}
}
return this.__visible = value;
}
,get_width: function() {
var bounds = new openfl.geom.Rectangle();
this.__getTransform();
this.__getBounds(bounds,new openfl.geom.Matrix());
return bounds.width * this.get_scaleX();
}
,set_width: function(value) {
var bounds = new openfl.geom.Rectangle();
this.__getTransform();
this.__getBounds(bounds,new openfl.geom.Matrix());
if(value != bounds.width) this.set_scaleX(value / bounds.width); else this.set_scaleX(1);
return value;
}
,get_x: function() {
return this.__x;
}
,set_x: function(value) {
if(value != this.__x) {
if(!this.__transformDirty) {
this.__transformDirty = true;
openfl.display.DisplayObject.__worldTransformDirty++;
}
}
return this.__x = value;
}
,get_y: function() {
return this.__y;
}
,set_y: function(value) {
if(value != this.__y) {
if(!this.__transformDirty) {
this.__transformDirty = true;
openfl.display.DisplayObject.__worldTransformDirty++;
}
}
return this.__y = value;
}
,__class__: openfl.display.DisplayObject
,__properties__: {set_y:"set_y",get_y:"get_y",set_x:"set_x",get_x:"get_x",set_width:"set_width",get_width:"get_width",set_visible:"set_visible",get_visible:"get_visible",set_transform:"set_transform",get_transform:"get_transform",set_scrollRect:"set_scrollRect",get_scrollRect:"get_scrollRect",set_scaleY:"set_scaleY",get_scaleY:"get_scaleY",set_scaleX:"set_scaleX",get_scaleX:"get_scaleX",set_rotation:"set_rotation",get_rotation:"get_rotation",get_root:"get_root",set_name:"set_name",get_name:"get_name",get_mouseY:"get_mouseY",get_mouseX:"get_mouseX",set_mask:"set_mask",get_mask:"get_mask",set_height:"set_height",get_height:"get_height",set_filters:"set_filters",get_filters:"get_filters",set_alpha:"set_alpha",get_alpha:"get_alpha"}
});
openfl.display.InteractiveObject = function() {
openfl.display.DisplayObject.call(this);
this.doubleClickEnabled = false;
this.mouseEnabled = true;
this.needsSoftKeyboard = false;
this.tabEnabled = true;
this.tabIndex = -1;
};
$hxClasses["openfl.display.InteractiveObject"] = openfl.display.InteractiveObject;
openfl.display.InteractiveObject.__name__ = ["openfl","display","InteractiveObject"];
openfl.display.InteractiveObject.__super__ = openfl.display.DisplayObject;
openfl.display.InteractiveObject.prototype = $extend(openfl.display.DisplayObject.prototype,{
requestSoftKeyboard: function() {
openfl.Lib.notImplemented("InteractiveObject.requestSoftKeyboard");
return false;
}
,__getInteractive: function(stack) {
stack.push(this);
if(this.parent != null) this.parent.__getInteractive(stack);
}
,__class__: openfl.display.InteractiveObject
});
openfl.display.DisplayObjectContainer = function() {
openfl.display.InteractiveObject.call(this);
this.mouseChildren = true;
this.__children = new Array();
this.__removedChildren = new Array();
};
$hxClasses["openfl.display.DisplayObjectContainer"] = openfl.display.DisplayObjectContainer;
openfl.display.DisplayObjectContainer.__name__ = ["openfl","display","DisplayObjectContainer"];
openfl.display.DisplayObjectContainer.__super__ = openfl.display.InteractiveObject;
openfl.display.DisplayObjectContainer.prototype = $extend(openfl.display.InteractiveObject.prototype,{
addChild: function(child) {
if(child != null) {
if(child.parent != null) child.parent.removeChild(child);
this.__children.push(child);
child.parent = this;
if(this.stage != null) child.__setStageReference(this.stage);
if(!child.__transformDirty) {
child.__transformDirty = true;
openfl.display.DisplayObject.__worldTransformDirty++;
}
if(!child.__renderDirty) {
child.__renderDirty = true;
openfl.display.DisplayObject.__worldRenderDirty++;
}
var event = new openfl.events.Event(openfl.events.Event.ADDED,true);
event.target = child;
child.dispatchEvent(event);
}
return child;
}
,addChildAt: function(child,index) {
if(index > this.__children.length || index < 0) throw "Invalid index position " + index;
if(child.parent == this) HxOverrides.remove(this.__children,child); else {
if(child.parent != null) child.parent.removeChild(child);
child.parent = this;
if(this.stage != null) child.__setStageReference(this.stage);
if(!child.__transformDirty) {
child.__transformDirty = true;
openfl.display.DisplayObject.__worldTransformDirty++;
}
if(!child.__renderDirty) {
child.__renderDirty = true;
openfl.display.DisplayObject.__worldRenderDirty++;
}
var event = new openfl.events.Event(openfl.events.Event.ADDED,true);
event.target = child;
child.dispatchEvent(event);
}
this.__children.splice(index,0,child);
return child;
}
,areInaccessibleObjectsUnderPoint: function(point) {
return false;
}
,contains: function(child) {
return HxOverrides.indexOf(this.__children,child,0) > -1;
}
,getChildAt: function(index) {
if(index >= 0 && index < this.__children.length) return this.__children[index];
return null;
}
,getChildByName: function(name) {
var _g = 0;
var _g1 = this.__children;
while(_g < _g1.length) {
var child = _g1[_g];
++_g;
if(child.get_name() == name) return child;
}
return null;
}
,getChildIndex: function(child) {
var _g1 = 0;
var _g = this.__children.length;
while(_g1 < _g) {
var i = _g1++;
if(this.__children[i] == child) return i;
}
return -1;
}
,getObjectsUnderPoint: function(point) {
point = this.localToGlobal(point);
var stack = new Array();
this.__hitTest(point.x,point.y,false,stack,false);
stack.reverse();
return stack;
}
,removeChild: function(child) {
if(child != null && child.parent == this) {
if(this.stage != null) child.__setStageReference(null);
child.parent = null;
HxOverrides.remove(this.__children,child);
this.__removedChildren.push(child);
if(!child.__transformDirty) {
child.__transformDirty = true;
openfl.display.DisplayObject.__worldTransformDirty++;
}
if(!child.__renderDirty) {
child.__renderDirty = true;
openfl.display.DisplayObject.__worldRenderDirty++;
}
child.dispatchEvent(new openfl.events.Event(openfl.events.Event.REMOVED,true));
}
return child;
}
,removeChildAt: function(index) {
if(index >= 0 && index < this.__children.length) return this.removeChild(this.__children[index]);
return null;
}
,removeChildren: function(beginIndex,endIndex) {
if(endIndex == null) endIndex = 2147483647;
if(beginIndex == null) beginIndex = 0;
if(endIndex == 2147483647) {
endIndex = this.__children.length - 1;
if(endIndex < 0) return;
}
if(beginIndex > this.__children.length - 1) return; else if(endIndex < beginIndex || beginIndex < 0 || endIndex > this.__children.length) throw new openfl.errors.RangeError("The supplied index is out of bounds.");
var numRemovals = endIndex - beginIndex;
while(numRemovals >= 0) {
this.removeChildAt(beginIndex);
numRemovals--;
}
}
,setChildIndex: function(child,index) {
if(index >= 0 && index <= this.__children.length && child.parent == this) {
HxOverrides.remove(this.__children,child);
this.__children.splice(index,0,child);
}
}
,swapChildren: function(child1,child2) {
if(child1.parent == this && child2.parent == this) {
var index1 = HxOverrides.indexOf(this.__children,child1,0);
var index2 = HxOverrides.indexOf(this.__children,child2,0);
this.__children[index1] = child2;
this.__children[index2] = child1;
}
}
,swapChildrenAt: function(child1,child2) {
var swap = this.__children[child1];
this.__children[child1] = this.__children[child2];
this.__children[child2] = swap;
swap = null;
}
,__broadcast: function(event,notifyChilden) {
if(event.target == null) event.target = this;
if(notifyChilden) {
var _g = 0;
var _g1 = this.__children;
while(_g < _g1.length) {
var child = _g1[_g];
++_g;
child.__broadcast(event,true);
if(event.__isCancelled) return true;
}
}
return openfl.display.InteractiveObject.prototype.__broadcast.call(this,event,notifyChilden);
}
,__getBounds: function(rect,matrix) {
if(this.__children.length == 0) return;
var matrixCache = null;
if(matrix != null) {
matrixCache = this.__worldTransform;
this.__worldTransform = matrix;
this.__updateChildren(true);
}
var _g = 0;
var _g1 = this.__children;
while(_g < _g1.length) {
var child = _g1[_g];
++_g;
if(!child.__renderable) continue;
child.__getBounds(rect,null);
}
if(matrix != null) {
this.__worldTransform = matrixCache;
this.__updateChildren(true);
}
}
,__hitTest: function(x,y,shapeFlag,stack,interactiveOnly) {
if(!this.get_visible() || interactiveOnly && !this.mouseEnabled) return false;
var i = this.__children.length;
if(interactiveOnly) {
if(stack == null || !this.mouseChildren) {
while(--i >= 0) if(this.__children[i].__hitTest(x,y,shapeFlag,null,true)) {
if(stack != null) stack.push(this);
return true;
}
} else if(stack != null) {
var length = stack.length;
while(--i >= 0) if(this.__children[i].__hitTest(x,y,shapeFlag,stack,interactiveOnly)) {
stack.splice(length,0,this);
return true;
}
}
} else while(--i >= 0) this.__children[i].__hitTest(x,y,shapeFlag,stack,false);
return false;
}
,__renderCanvas: function(renderSession) {
if(!this.__renderable || this.__worldAlpha <= 0) return;
if(this.get_scrollRect() != null) {
}
if(this.__mask != null) renderSession.maskManager.pushMask(this.__mask);
var _g = 0;
var _g1 = this.__children;
while(_g < _g1.length) {
var child = _g1[_g];
++_g;
child.__renderCanvas(renderSession);
}
this.__removedChildren = [];
if(this.__mask != null) renderSession.maskManager.popMask();
if(this.get_scrollRect() != null) {
}
}
,__renderDOM: function(renderSession) {
if(this.__mask != null) renderSession.maskManager.pushMask(this.__mask);
var _g = 0;
var _g1 = this.__children;
while(_g < _g1.length) {
var child = _g1[_g];
++_g;
child.__renderDOM(renderSession);
}
var _g2 = 0;
var _g11 = this.__removedChildren;
while(_g2 < _g11.length) {
var orphan = _g11[_g2];
++_g2;
if(orphan.stage == null) orphan.__renderDOM(renderSession);
}
this.__removedChildren = [];
if(this.__mask != null) renderSession.maskManager.popMask();
}
,__renderGL: function(renderSession) {
if(!this.__renderable || this.__worldAlpha <= 0) return;
var _g = 0;
var _g1 = this.__children;
while(_g < _g1.length) {
var child = _g1[_g];
++_g;
child.__renderGL(renderSession);
}
this.__removedChildren = [];
}
,__renderMask: function(renderSession) {
var bounds = new openfl.geom.Rectangle();
this.__getTransform();
this.__getBounds(bounds,new openfl.geom.Matrix());
renderSession.context.rect(0,0,bounds.width,bounds.height);
}
,__setStageReference: function(stage) {
if(this.stage != stage) {
if(this.stage != null) this.dispatchEvent(new openfl.events.Event(openfl.events.Event.REMOVED_FROM_STAGE,false,false));
this.stage = stage;
if(stage != null) this.dispatchEvent(new openfl.events.Event(openfl.events.Event.ADDED_TO_STAGE,false,false));
if(this.__children != null) {
var _g = 0;
var _g1 = this.__children;
while(_g < _g1.length) {
var child = _g1[_g];
++_g;
child.__setStageReference(stage);
}
}
}
}
,__update: function(transformOnly,updateChildren) {
openfl.display.InteractiveObject.prototype.__update.call(this,transformOnly,updateChildren);
if(!this.__renderable) return;
if(updateChildren) {
var _g = 0;
var _g1 = this.__children;
while(_g < _g1.length) {
var child = _g1[_g];
++_g;
child.__update(transformOnly,true);
}
}
}
,__updateChildren: function(transformOnly) {
openfl.display.InteractiveObject.prototype.__updateChildren.call(this,transformOnly);
var _g = 0;
var _g1 = this.__children;
while(_g < _g1.length) {
var child = _g1[_g];
++_g;
child.__update(transformOnly,true);
}
}
,get_numChildren: function() {
return this.__children.length;
}
,__class__: openfl.display.DisplayObjectContainer
,__properties__: $extend(openfl.display.InteractiveObject.prototype.__properties__,{get_numChildren:"get_numChildren"})
});
openfl.display.Sprite = function() {
openfl.display.DisplayObjectContainer.call(this);
this.buttonMode = false;
this.useHandCursor = true;
this.loaderInfo = openfl.display.LoaderInfo.create(null);
};
$hxClasses["openfl.display.Sprite"] = openfl.display.Sprite;
openfl.display.Sprite.__name__ = ["openfl","display","Sprite"];
openfl.display.Sprite.__super__ = openfl.display.DisplayObjectContainer;
openfl.display.Sprite.prototype = $extend(openfl.display.DisplayObjectContainer.prototype,{
startDrag: function(lockCenter,bounds) {
if(lockCenter == null) lockCenter = false;
if(this.stage != null) this.stage.__startDrag(this,lockCenter,bounds);
}
,stopDrag: function() {
if(this.stage != null) this.stage.__stopDrag(this);
}
,__getBounds: function(rect,matrix) {
openfl.display.DisplayObjectContainer.prototype.__getBounds.call(this,rect,matrix);
if(this.__graphics != null) this.__graphics.__getBounds(rect,matrix != null?matrix:this.__worldTransform);
}
,__hitTest: function(x,y,shapeFlag,stack,interactiveOnly) {
if(!this.get_visible() || interactiveOnly && !this.mouseEnabled) return false;
var length = 0;
if(stack != null) length = stack.length;
if(openfl.display.DisplayObjectContainer.prototype.__hitTest.call(this,x,y,shapeFlag,stack,interactiveOnly)) return interactiveOnly; else if(this.__graphics != null && this.__graphics.__hitTest(x,y,shapeFlag,this.__getTransform())) {
if(stack != null) stack.push(this);
return true;
}
return false;
}
,__renderCanvas: function(renderSession) {
openfl._internal.renderer.canvas.CanvasShape.render(this,renderSession);
openfl.display.DisplayObjectContainer.prototype.__renderCanvas.call(this,renderSession);
}
,__renderDOM: function(renderSession) {
openfl._internal.renderer.dom.DOMShape.render(this,renderSession);
openfl.display.DisplayObjectContainer.prototype.__renderDOM.call(this,renderSession);
}
,__renderGL: function(renderSession) {
if(!this.__renderable || this.__worldAlpha <= 0) return;
if(this.__graphics != null) openfl._internal.renderer.opengl.utils.GraphicsRenderer.render(this,renderSession);
openfl.display.DisplayObjectContainer.prototype.__renderGL.call(this,renderSession);
}
,__renderMask: function(renderSession) {
if(this.__graphics != null) openfl._internal.renderer.canvas.CanvasGraphics.renderMask(this.__graphics,renderSession); else openfl.display.DisplayObjectContainer.prototype.__renderMask.call(this,renderSession);
}
,get_graphics: function() {
if(this.__graphics == null) this.__graphics = new openfl.display.Graphics();
return this.__graphics;
}
,__class__: openfl.display.Sprite
,__properties__: $extend(openfl.display.DisplayObjectContainer.prototype.__properties__,{get_graphics:"get_graphics"})
});
var Main = function() {
openfl.display.Sprite.call(this);
this.addEventListener(openfl.events.Event.ADDED_TO_STAGE,$bind(this,this.handleAddedToStage));
};
$hxClasses["Main"] = Main;
Main.__name__ = ["Main"];
Main.__super__ = openfl.display.Sprite;
Main.prototype = $extend(openfl.display.Sprite.prototype,{
handleAddedToStage: function(e) {
this.removeEventListener(openfl.events.Event.ADDED_TO_STAGE,$bind(this,this.handleAddedToStage));
this.addChild(new co.doubleduck.pinata.Game());
}
,__class__: Main
});
var DocumentClass = function() {
openfl.Lib.current.addChild(this);
Main.call(this);
this.dispatchEvent(new openfl.events.Event(openfl.events.Event.ADDED_TO_STAGE,false,false));
};
$hxClasses["DocumentClass"] = DocumentClass;
DocumentClass.__name__ = ["DocumentClass"];
DocumentClass.__super__ = Main;
DocumentClass.prototype = $extend(Main.prototype,{
__class__: DocumentClass
});
var DateTools = function() { };
$hxClasses["DateTools"] = DateTools;
DateTools.__name__ = ["DateTools"];
DateTools.__format_get = function(d,e) {
switch(e) {
case "%":
return "%";
case "C":
return StringTools.lpad(Std.string(Std["int"](d.getFullYear() / 100)),"0",2);
case "d":
return StringTools.lpad(Std.string(d.getDate()),"0",2);
case "D":
return DateTools.__format(d,"%m/%d/%y");
case "e":
return Std.string(d.getDate());
case "H":case "k":
return StringTools.lpad(Std.string(d.getHours()),e == "H"?"0":" ",2);
case "I":case "l":
var hour = d.getHours() % 12;
return StringTools.lpad(Std.string(hour == 0?12:hour),e == "I"?"0":" ",2);
case "m":
return StringTools.lpad(Std.string(d.getMonth() + 1),"0",2);
case "M":
return StringTools.lpad(Std.string(d.getMinutes()),"0",2);
case "n":
return "\n";
case "p":
if(d.getHours() > 11) return "PM"; else return "AM";
break;
case "r":
return DateTools.__format(d,"%I:%M:%S %p");
case "R":
return DateTools.__format(d,"%H:%M");
case "s":
return Std.string(Std["int"](d.getTime() / 1000));
case "S":
return StringTools.lpad(Std.string(d.getSeconds()),"0",2);
case "t":
return "\t";
case "T":
return DateTools.__format(d,"%H:%M:%S");
case "u":
var t = d.getDay();
if(t == 0) return "7"; else if(t == null) return "null"; else return "" + t;
break;
case "w":
return Std.string(d.getDay());
case "y":
return StringTools.lpad(Std.string(d.getFullYear() % 100),"0",2);
case "Y":
return Std.string(d.getFullYear());
default:
throw "Date.format %" + e + "- not implemented yet.";
}
};
DateTools.__format = function(d,f) {
var r = new StringBuf();
var p = 0;
while(true) {
var np = f.indexOf("%",p);
if(np < 0) break;
r.addSub(f,p,np - p);
r.add(DateTools.__format_get(d,HxOverrides.substr(f,np + 1,1)));
p = np + 2;
}
r.addSub(f,p,f.length - p);
return r.b;
};
DateTools.format = function(d,f) {
return DateTools.__format(d,f);
};
lime.AssetLibrary = function() {
};
$hxClasses["lime.AssetLibrary"] = lime.AssetLibrary;
lime.AssetLibrary.__name__ = ["lime","AssetLibrary"];
lime.AssetLibrary.prototype = {
exists: function(id,type) {
return false;
}
,getAudioBuffer: function(id) {
return null;
}
,getBytes: function(id) {
return null;
}
,getFont: function(id) {
return null;
}
,getImage: function(id) {
return null;
}
,getPath: function(id) {
return null;
}
,getText: function(id) {
var bytes = this.getBytes(id);
if(bytes == null) return null; else return bytes.readUTFBytes(bytes.length);
}
,isLocal: function(id,type) {
return true;
}
,list: function(type) {
return null;
}
,load: function(handler) {
handler(this);
}
,loadAudioBuffer: function(id,handler) {
handler(this.getAudioBuffer(id));
}
,loadBytes: function(id,handler) {
handler(this.getBytes(id));
}
,loadFont: function(id,handler) {
handler(this.getFont(id));
}
,loadImage: function(id,handler) {
handler(this.getImage(id));
}
,loadText: function(id,handler) {
var callback = function(bytes) {
if(bytes == null) handler(null); else handler(bytes.readUTFBytes(bytes.length));
};
this.loadBytes(id,callback);
}
,__class__: lime.AssetLibrary
};
var DefaultAssetLibrary = function() {
this.atlasAssets = new haxe.ds.StringMap();
this.type = new haxe.ds.StringMap();
this.path = new haxe.ds.StringMap();
this.className = new haxe.ds.StringMap();
lime.AssetLibrary.call(this);
var id;
id = "data/gameplay.js";
this.path.set(id,id);
this.type.set(id,"TEXT");
id = "sounds/eating_candies.ogg";
this.path.set(id,id);
this.type.set(id,"SOUND");
id = "sounds/hit1.ogg";
this.path.set(id,id);
this.type.set(id,"SOUND");
id = "sounds/hit2.ogg";
this.path.set(id,id);
this.type.set(id,"SOUND");
id = "sounds/hit3.ogg";
this.path.set(id,id);
this.type.set(id,"SOUND");
id = "sounds/hit4.ogg";
this.path.set(id,id);
this.type.set(id,"SOUND");
id = "sounds/menu_open.ogg";
this.path.set(id,id);
this.type.set(id,"SOUND");
id = "sounds/new_level_unlocked.ogg";
this.path.set(id,id);
this.type.set(id,"SOUND");
id = "sounds/pinata_crack.ogg";
this.path.set(id,id);
this.type.set(id,"SOUND");
id = "sounds/purchase.ogg";
this.path.set(id,id);
this.type.set(id,"SOUND");
id = "sounds/eating_candies.mp3";
this.path.set(id,id);
this.type.set(id,"SOUND");
id = "sounds/hit1.mp3";
this.path.set(id,id);
this.type.set(id,"SOUND");
id = "sounds/hit2.mp3";
this.path.set(id,id);
this.type.set(id,"SOUND");
id = "sounds/hit3.mp3";
this.path.set(id,id);
this.type.set(id,"SOUND");
id = "sounds/hit4.mp3";
this.path.set(id,id);
this.type.set(id,"SOUND");
id = "sounds/menu_open.mp3";
this.path.set(id,id);
this.type.set(id,"SOUND");
id = "sounds/new_level_unlocked.mp3";
this.path.set(id,id);
this.type.set(id,"SOUND");
id = "sounds/pinata_crack.mp3";
this.path.set(id,id);
this.type.set(id,"SOUND");
id = "sounds/purchase.mp3";
this.path.set(id,id);
this.type.set(id,"SOUND");
id = "musics/music_loop.ogg";
this.path.set(id,id);
this.type.set(id,"MUSIC");
id = "musics/music_loop.mp3";
this.path.set(id,id);
this.type.set(id,"MUSIC");
id = "images/atlas_0.json";
this.path.set(id,id);
this.type.set(id,"TEXT");
id = "images/atlas_0.png";
this.path.set(id,id);
this.type.set(id,"IMAGE");
id = "images/atlas_1.json";
this.path.set(id,id);
this.type.set(id,"TEXT");
id = "images/atlas_1.png";
this.path.set(id,id);
this.type.set(id,"IMAGE");
id = "images/atlas_2.json";
this.path.set(id,id);
this.type.set(id,"TEXT");
id = "images/atlas_2.png";
this.path.set(id,id);
this.type.set(id,"IMAGE");
id = "images/backs/back1.jpg";
this.path.set(id,id);
this.type.set(id,"IMAGE");
id = "images/backs/back2.jpg";
this.path.set(id,id);
this.type.set(id,"IMAGE");
id = "images/backs/back3.jpg";
this.path.set(id,id);
this.type.set(id,"IMAGE");
id = "images/backs/bonus.jpg";
this.path.set(id,id);
this.type.set(id,"IMAGE");
id = "images/fonts/purple/kern.txt";
this.path.set(id,id);
this.type.set(id,"TEXT");
id = "images/fonts/yellow_big/kern.txt";
this.path.set(id,id);
this.type.set(id,"TEXT");
id = "images/fonts/yellow_small/kern.txt";
this.path.set(id,id);
this.type.set(id,"TEXT");
id = "images/missions/paintings/paint3.jpg";
this.path.set(id,id);
this.type.set(id,"IMAGE");
id = "images/missions/paintings/paint4.jpg";
this.path.set(id,id);
this.type.set(id,"IMAGE");
id = "images/missions/paintings/paint6.jpg";
this.path.set(id,id);
this.type.set(id,"IMAGE");
var assetsPrefix = ApplicationMain.config.assetsPrefix;
if(assetsPrefix != null) {
var $it0 = this.path.keys();
while( $it0.hasNext() ) {
var k = $it0.next();
var value = assetsPrefix + this.path.get(k);
this.path.set(k,value);
}
}
this.addAssetsFromAtlas();
};
$hxClasses["DefaultAssetLibrary"] = DefaultAssetLibrary;
DefaultAssetLibrary.__name__ = ["DefaultAssetLibrary"];
DefaultAssetLibrary.__super__ = lime.AssetLibrary;
DefaultAssetLibrary.prototype = $extend(lime.AssetLibrary.prototype,{
addAssetsFromAtlas: function() {
var $it0 = this.type.keys();
while( $it0.hasNext() ) {
var asset = $it0.next();
if(this.type.get(asset) == "TEXT" && asset.indexOf("atlas") != -1) {
var json = JSON.parse(this.getText(asset));
var assetsArr = json.data;
var atlasFile = asset.split(".")[0] + ".png";
var atlasBd = this.getImage(atlasFile);
var _g = 0;
while(_g < assetsArr.length) {
var atlasAsset = assetsArr[_g];
++_g;
var key = atlasAsset.path;
this.type.set(key,"IMAGE");
var bd = new lime.graphics.Image(null,0,0,atlasAsset.width,atlasAsset.height);
bd.copyPixels(atlasBd,new lime.math.Rectangle(atlasAsset.x,atlasAsset.y,atlasAsset.width,atlasAsset.height),new lime.math.Vector2(0,0));
var key1 = atlasAsset.path;
this.atlasAssets.set(key1,bd);
}
atlasBd = null;
}
}
}
,exists: function(id,type) {
var requestedType;
if(type != null) requestedType = js.Boot.__cast(type , String); else requestedType = null;
var assetType = this.type.get(id);
if(assetType != null) {
if(assetType == requestedType || (requestedType == "SOUND" || requestedType == "MUSIC") && (assetType == "MUSIC" || assetType == "SOUND")) return true;
if(requestedType == "BINARY" || requestedType == null || assetType == "BINARY" && requestedType == "TEXT") return true;
}
return false;
}
,getAudioBuffer: function(id) {
return null;
}
,getBytes: function(id) {
var bytes = null;
var data = ((function($this) {
var $r;
var key = $this.path.get(id);
$r = lime.app.Preloader.loaders.get(key);
return $r;
}(this))).data;
if(typeof(data) == "string") {
bytes = new lime.utils.ByteArray();
bytes.writeUTFBytes(data);
} else if(js.Boot.__instanceof(data,lime.utils.ByteArray)) bytes = data; else bytes = null;
if(bytes != null) {
bytes.position = 0;
return bytes;
} else return null;
}
,getFont: function(id) {
return js.Boot.__cast(Type.createInstance(this.className.get(id),[]) , openfl.text.Font);
return null;
}
,getImage: function(id) {
if(this.path.get(id) == null) {
if(this.atlasAssets.exists(id)) {
var ret = this.atlasAssets.get(id);
this.atlasAssets.remove(id);
return ret;
}
return null;
}
return lime.graphics.Image.fromImageElement((function($this) {
var $r;
var key = $this.path.get(id);
$r = lime.app.Preloader.images.get(key);
return $r;
}(this)));
}
,getPath: function(id) {
return this.path.get(id);
}
,getText: function(id) {
var bytes = null;
var data = ((function($this) {
var $r;
var key = $this.path.get(id);
$r = lime.app.Preloader.loaders.get(key);
return $r;
}(this))).data;
if(typeof(data) == "string") return data; else if(js.Boot.__instanceof(data,lime.utils.ByteArray)) bytes = data; else bytes = null;
if(bytes != null) {
bytes.position = 0;
return bytes.readUTFBytes(bytes.length);
} else return null;
}
,isLocal: function(id,type) {
var requestedType;
if(type != null) requestedType = js.Boot.__cast(type , String); else requestedType = null;
return true;
}
,list: function(type) {
var requestedType;
if(type != null) requestedType = js.Boot.__cast(type , String); else requestedType = null;
var items = [];
var $it0 = this.type.keys();
while( $it0.hasNext() ) {
var id = $it0.next();
if(requestedType == null || this.exists(id,type)) items.push(id);
}
return items;
}
,loadAudioBuffer: function(id,handler) {
handler(this.getAudioBuffer(id));
}
,loadBytes: function(id,handler) {
handler(this.getBytes(id));
}
,loadImage: function(id,handler) {
handler(this.getImage(id));
}
,loadText: function(id,handler) {
var callback = function(bytes) {
if(bytes == null) handler(null); else handler(bytes.readUTFBytes(bytes.length));
};
this.loadBytes(id,callback);
}
,__class__: DefaultAssetLibrary
});
var EReg = function(r,opt) {
opt = opt.split("u").join("");
this.r = new RegExp(r,opt);
};
$hxClasses["EReg"] = EReg;
EReg.__name__ = ["EReg"];
EReg.prototype = {
replace: function(s,by) {
return s.replace(this.r,by);
}
,__class__: EReg
};
var GlobalVars = function() { };
$hxClasses["GlobalVars"] = GlobalVars;
GlobalVars.__name__ = ["GlobalVars"];
var HxOverrides = function() { };
$hxClasses["HxOverrides"] = HxOverrides;
HxOverrides.__name__ = ["HxOverrides"];
HxOverrides.dateStr = function(date) {
var m = date.getMonth() + 1;
var d = date.getDate();
var h = date.getHours();
var mi = date.getMinutes();
var s = date.getSeconds();
return date.getFullYear() + "-" + (m < 10?"0" + m:"" + m) + "-" + (d < 10?"0" + d:"" + d) + " " + (h < 10?"0" + h:"" + h) + ":" + (mi < 10?"0" + mi:"" + mi) + ":" + (s < 10?"0" + s:"" + s);
};
HxOverrides.strDate = function(s) {
var _g = s.length;
switch(_g) {
case 8:
var k = s.split(":");
var d = new Date();
d.setTime(0);
d.setUTCHours(k[0]);
d.setUTCMinutes(k[1]);
d.setUTCSeconds(k[2]);
return d;
case 10:
var k1 = s.split("-");
return new Date(k1[0],k1[1] - 1,k1[2],0,0,0);
case 19:
var k2 = s.split(" ");
var y = k2[0].split("-");
var t = k2[1].split(":");
return new Date(y[0],y[1] - 1,y[2],t[0],t[1],t[2]);
default:
throw "Invalid date format : " + s;
}
};
HxOverrides.cca = function(s,index) {
var x = s.charCodeAt(index);
if(x != x) return undefined;
return x;
};
HxOverrides.substr = function(s,pos,len) {
if(pos != null && pos != 0 && len != null && len < 0) return "";
if(len == null) len = s.length;
if(pos < 0) {
pos = s.length + pos;
if(pos < 0) pos = 0;
} else if(len < 0) len = s.length + len - pos;
return s.substr(pos,len);
};
HxOverrides.indexOf = function(a,obj,i) {
var len = a.length;
if(i < 0) {
i += len;
if(i < 0) i = 0;
}
while(i < len) {
if(a[i] === obj) return i;
i++;
}
return -1;
};
HxOverrides.remove = function(a,obj) {
var i = HxOverrides.indexOf(a,obj,0);
if(i == -1) return false;
a.splice(i,1);
return true;
};
HxOverrides.iter = function(a) {
return { cur : 0, arr : a, hasNext : function() {
return this.cur < this.arr.length;
}, next : function() {
return this.arr[this.cur++];
}};
};
var Lambda = function() { };
$hxClasses["Lambda"] = Lambda;
Lambda.__name__ = ["Lambda"];
Lambda.exists = function(it,f) {
var $it0 = $iterator(it)();
while( $it0.hasNext() ) {
var x = $it0.next();
if(f(x)) return true;
}
return false;
};
Lambda.filter = function(it,f) {
var l = new List();
var $it0 = $iterator(it)();
while( $it0.hasNext() ) {
var x = $it0.next();
if(f(x)) l.add(x);
}
return l;
};
var List = function() {
this.length = 0;
};
$hxClasses["List"] = List;
List.__name__ = ["List"];
List.prototype = {
add: function(item) {
var x = [item];
if(this.h == null) this.h = x; else this.q[1] = x;
this.q = x;
this.length++;
}
,push: function(item) {
var x = [item,this.h];
this.h = x;
if(this.q == null) this.q = x;
this.length++;
}
,iterator: function() {
return { h : this.h, hasNext : function() {
return this.h != null;
}, next : function() {
if(this.h == null) return null;
var x = this.h[0];
this.h = this.h[1];
return x;
}};
}
,__class__: List
};
var IMap = function() { };
$hxClasses["IMap"] = IMap;
IMap.__name__ = ["IMap"];
IMap.prototype = {
__class__: IMap
};
Math.__name__ = ["Math"];
var NMEPreloader = function() {
openfl.display.Sprite.call(this);
var backgroundColor = this.getBackgroundColor();
var r = backgroundColor >> 16 & 255;
var g = backgroundColor >> 8 & 255;
var b = backgroundColor & 255;
var perceivedLuminosity = 0.299 * r + 0.587 * g + 0.114 * b;
var color = 0;
if(perceivedLuminosity < 70) color = 16777215;
var x = 30;
var height = 7;
var y = this.getHeight() / 2 - height / 2;
var width = this.getWidth() - x * 2;
var padding = 2;
this.outline = new openfl.display.Sprite();
this.outline.get_graphics().beginFill(color,0.07);
this.outline.get_graphics().drawRect(0,0,width,height);
this.outline.set_x(x);
this.outline.set_y(y);
this.addChild(this.outline);
this.progress = new openfl.display.Sprite();
this.progress.get_graphics().beginFill(color,0.35);
this.progress.get_graphics().drawRect(0,0,width - padding * 2,height - padding * 2);
this.progress.set_x(x + padding);
this.progress.set_y(y + padding);
this.progress.set_scaleX(0);
this.addChild(this.progress);
};
$hxClasses["NMEPreloader"] = NMEPreloader;
NMEPreloader.__name__ = ["NMEPreloader"];
NMEPreloader.__super__ = openfl.display.Sprite;
NMEPreloader.prototype = $extend(openfl.display.Sprite.prototype,{
getBackgroundColor: function() {
return 0;
}
,getHeight: function() {
var height = 480;
if(height > 0) return height; else return openfl.Lib.current.stage.stageHeight;
}
,getWidth: function() {
var width = 320;
if(width > 0) return width; else return openfl.Lib.current.stage.stageWidth;
}
,onInit: function() {
}
,onLoaded: function() {
this.dispatchEvent(new openfl.events.Event(openfl.events.Event.COMPLETE));
}
,onUpdate: function(bytesLoaded,bytesTotal) {
var percentLoaded = bytesLoaded / bytesTotal;
if(percentLoaded > 1) percentLoaded = 1;
this.progress.set_scaleX(percentLoaded);
}
,__class__: NMEPreloader
});
var Std = function() { };
$hxClasses["Std"] = Std;
Std.__name__ = ["Std"];
Std.string = function(s) {
return js.Boot.__string_rec(s,"");
};
Std["int"] = function(x) {
return x | 0;
};
Std.parseInt = function(x) {
var v = parseInt(x,10);
if(v == 0 && (HxOverrides.cca(x,1) == 120 || HxOverrides.cca(x,1) == 88)) v = parseInt(x);
if(isNaN(v)) return null;
return v;
};
Std.parseFloat = function(x) {
return parseFloat(x);
};
Std.random = function(x) {
if(x <= 0) return 0; else return Math.floor(Math.random() * x);
};
var StringBuf = function() {
this.b = "";
};
$hxClasses["StringBuf"] = StringBuf;
StringBuf.__name__ = ["StringBuf"];
StringBuf.prototype = {
add: function(x) {
this.b += Std.string(x);
}
,addSub: function(s,pos,len) {
if(len == null) this.b += HxOverrides.substr(s,pos,null); else this.b += HxOverrides.substr(s,pos,len);
}
,__class__: StringBuf
};
var StringTools = function() { };
$hxClasses["StringTools"] = StringTools;
StringTools.__name__ = ["StringTools"];
StringTools.urlEncode = function(s) {
return encodeURIComponent(s);
};
StringTools.urlDecode = function(s) {
return decodeURIComponent(s.split("+").join(" "));
};
StringTools.startsWith = function(s,start) {
return s.length >= start.length && HxOverrides.substr(s,0,start.length) == start;
};
StringTools.lpad = function(s,c,l) {
if(c.length <= 0) return s;
while(s.length < l) s = c + s;
return s;
};
StringTools.replace = function(s,sub,by) {
return s.split(sub).join(by);
};
StringTools.hex = function(n,digits) {
var s = "";
var hexChars = "0123456789ABCDEF";
do {
s = hexChars.charAt(n & 15) + s;
n >>>= 4;
} while(n > 0);
if(digits != null) while(s.length < digits) s = "0" + s;
return s;
};
StringTools.fastCodeAt = function(s,index) {
return s.charCodeAt(index);
};
var ValueType = $hxClasses["ValueType"] = { __ename__ : ["ValueType"], __constructs__ : ["TNull","TInt","TFloat","TBool","TObject","TFunction","TClass","TEnum","TUnknown"] };
ValueType.TNull = ["TNull",0];
ValueType.TNull.toString = $estr;
ValueType.TNull.__enum__ = ValueType;
ValueType.TInt = ["TInt",1];
ValueType.TInt.toString = $estr;
ValueType.TInt.__enum__ = ValueType;
ValueType.TFloat = ["TFloat",2];
ValueType.TFloat.toString = $estr;
ValueType.TFloat.__enum__ = ValueType;
ValueType.TBool = ["TBool",3];
ValueType.TBool.toString = $estr;
ValueType.TBool.__enum__ = ValueType;
ValueType.TObject = ["TObject",4];
ValueType.TObject.toString = $estr;
ValueType.TObject.__enum__ = ValueType;
ValueType.TFunction = ["TFunction",5];
ValueType.TFunction.toString = $estr;
ValueType.TFunction.__enum__ = ValueType;
ValueType.TClass = function(c) { var $x = ["TClass",6,c]; $x.__enum__ = ValueType; $x.toString = $estr; return $x; };
ValueType.TEnum = function(e) { var $x = ["TEnum",7,e]; $x.__enum__ = ValueType; $x.toString = $estr; return $x; };
ValueType.TUnknown = ["TUnknown",8];
ValueType.TUnknown.toString = $estr;
ValueType.TUnknown.__enum__ = ValueType;
var Type = function() { };
$hxClasses["Type"] = Type;
Type.__name__ = ["Type"];
Type.getClass = function(o) {
if(o == null) return null;
return js.Boot.getClass(o);
};
Type.getClassName = function(c) {
var a = c.__name__;
return a.join(".");
};
Type.getEnumName = function(e) {
var a = e.__ename__;
return a.join(".");
};
Type.resolveClass = function(name) {
var cl = $hxClasses[name];
if(cl == null || !cl.__name__) return null;
return cl;
};
Type.resolveEnum = function(name) {
var e = $hxClasses[name];
if(e == null || !e.__ename__) return null;
return e;
};
Type.createInstance = function(cl,args) {
var _g = args.length;
switch(_g) {
case 0:
return new cl();
case 1:
return new cl(args[0]);
case 2:
return new cl(args[0],args[1]);
case 3:
return new cl(args[0],args[1],args[2]);
case 4:
return new cl(args[0],args[1],args[2],args[3]);
case 5:
return new cl(args[0],args[1],args[2],args[3],args[4]);
case 6:
return new cl(args[0],args[1],args[2],args[3],args[4],args[5]);
case 7:
return new cl(args[0],args[1],args[2],args[3],args[4],args[5],args[6]);
case 8:
return new cl(args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7]);
default:
throw "Too many arguments";
}
return null;
};
Type.createEmptyInstance = function(cl) {
function empty() {}; empty.prototype = cl.prototype;
return new empty();
};
Type.createEnum = function(e,constr,params) {
var f = Reflect.field(e,constr);
if(f == null) throw "No such constructor " + constr;
if(Reflect.isFunction(f)) {
if(params == null) throw "Constructor " + constr + " need parameters";
return f.apply(e,params);
}
if(params != null && params.length != 0) throw "Constructor " + constr + " does not need parameters";
return f;
};
Type.createEnumIndex = function(e,index,params) {
var c = e.__constructs__[index];
if(c == null) throw index + " is not a valid enum constructor index";
return Type.createEnum(e,c,params);
};
Type.getClassFields = function(c) {
var a = Reflect.fields(c);
HxOverrides.remove(a,"__name__");
HxOverrides.remove(a,"__interfaces__");
HxOverrides.remove(a,"__properties__");
HxOverrides.remove(a,"__super__");
HxOverrides.remove(a,"prototype");
return a;
};
Type.getEnumConstructs = function(e) {
var a = e.__constructs__;
return a.slice();
};
Type["typeof"] = function(v) {
var _g = typeof(v);
switch(_g) {
case "boolean":
return ValueType.TBool;
case "string":
return ValueType.TClass(String);
case "number":
if(Math.ceil(v) == v % 2147483648.0) return ValueType.TInt;
return ValueType.TFloat;
case "object":
if(v == null) return ValueType.TNull;
var e = v.__enum__;
if(e != null) return ValueType.TEnum(e);
var c = js.Boot.getClass(v);
if(c != null) return ValueType.TClass(c);
return ValueType.TObject;
case "function":
if(v.__name__ || v.__ename__) return ValueType.TObject;
return ValueType.TFunction;
case "undefined":
return ValueType.TNull;
default:
return ValueType.TUnknown;
}
};
Type.enumEq = function(a,b) {
if(a == b) return true;
try {
if(a[0] != b[0]) return false;
var _g1 = 2;
var _g = a.length;
while(_g1 < _g) {
var i = _g1++;
if(!Type.enumEq(a[i],b[i])) return false;
}
var e = a.__enum__;
if(e != b.__enum__ || e == null) return false;
} catch( e1 ) {
return false;
}
return true;
};
var co = {};
co.doubleduck = {};
co.doubleduck.d2p2 = {};
co.doubleduck.d2p2.P2Log = function() { };
$hxClasses["co.doubleduck.d2p2.P2Log"] = co.doubleduck.d2p2.P2Log;
co.doubleduck.d2p2.P2Log.__name__ = ["co","doubleduck","d2p2","P2Log"];
co.doubleduck.d2p2.P2Log._data = null;
co.doubleduck.d2p2.P2Log._dataAdapter = null;
co.doubleduck.d2p2.P2Log.init = function(gameDomain) {
if(co.doubleduck.d2p2.P2Log._dataAdapter == null) co.doubleduck.d2p2.P2Log._dataAdapter = co.doubleduck.utils.data.StorageAdapter.get("d2p2",co.doubleduck.utils.data.StorageAdapterType.LOCAL_STORAGE);
co.doubleduck.d2p2.P2Log._data = co.doubleduck.d2p2.P2Log._dataAdapter.getValue(co.doubleduck.d2p2.P2Log.DATA_KEY);
if(co.doubleduck.d2p2.P2Log._data == null || co.doubleduck.d2p2.P2Log._data.data_ver != co.doubleduck.d2p2.P2Log.DATA_VER) {
var id;
if(co.doubleduck.d2p2.P2Log._data != null) id = co.doubleduck.d2p2.P2Log._data.p2id; else {
var seed = "" + gameDomain;
seed += Std.random(9999999);
seed += Std.random(9999999);
seed += new Date().getTime();
seed += Math.random();
id = haxe.crypto.Sha1.encode(seed);
}
co.doubleduck.d2p2.P2Log._data = { };
co.doubleduck.d2p2.P2Log._data.p2id = id;
co.doubleduck.d2p2.P2Log._data.data_ver = co.doubleduck.d2p2.P2Log.DATA_VER;
co.doubleduck.d2p2.P2Log._data.runs = 0;
co.doubleduck.d2p2.P2Log._data.domains = "";
co.doubleduck.d2p2.P2Log._data.skill = co.doubleduck.d2p2.P2Log.newP2Value();
co.doubleduck.d2p2.P2Log._data.strategy = co.doubleduck.d2p2.P2Log.newP2Value();
}
co.doubleduck.d2p2.P2Log._data.runs++;
var domains = [];
if(co.doubleduck.d2p2.P2Log._data.domains != "") domains = co.doubleduck.d2p2.P2Log._data.domains.split(",");
domains.sort(co.doubleduck.d2p2.P2Log.alphabeticSort);
if(HxOverrides.indexOf(domains,gameDomain,0) == -1) {
domains.push(gameDomain);
co.doubleduck.d2p2.P2Log._data.domains = domains.join(",");
}
var skillCalc = co.doubleduck.d2p2.P2Log.calcFromSamples(co.doubleduck.d2p2.P2Log._data.skill);
var strategyCalc = co.doubleduck.d2p2.P2Log.calcFromSamples(co.doubleduck.d2p2.P2Log._data.strategy);
co.doubleduck.d2p2.P2Log._dataAdapter.setValue(co.doubleduck.d2p2.P2Log.DATA_KEY,co.doubleduck.d2p2.P2Log._data);
if(skillCalc != null) {
var event = { };
event.p2id = co.doubleduck.d2p2.P2Log._data.p2id;
event.dataver = co.doubleduck.d2p2.P2Log._data.data_ver;
event.runs = "" + co.doubleduck.d2p2.P2Log._data.runs;
event.domains = co.doubleduck.d2p2.P2Log._data.domains;
event.calcVal = "" + Std.string(skillCalc.val);
event.calcConf = "" + Std.string(skillCalc.conf);
event.integVal = "" + co.doubleduck.d2p2.P2Log._data.skill.currVal;
event.integConf = "" + co.doubleduck.d2p2.P2Log._data.skill.currConf;
event.integCount = "" + co.doubleduck.d2p2.P2Log._data.skill.integCount;
com.funtomic.GameOps.reportEvent("p2calc_skill",event);
}
if(strategyCalc != null) {
var event1 = { };
event1.p2id = co.doubleduck.d2p2.P2Log._data.p2id;
event1.dataver = co.doubleduck.d2p2.P2Log._data.data_ver;
event1.runs = "" + co.doubleduck.d2p2.P2Log._data.runs;
event1.domains = co.doubleduck.d2p2.P2Log._data.domains;
event1.calcVal = "" + Std.string(strategyCalc.val);
event1.calcConf = "" + Std.string(strategyCalc.conf);
event1.integVal = "" + co.doubleduck.d2p2.P2Log._data.strategy.currVal;
event1.integConf = "" + co.doubleduck.d2p2.P2Log._data.strategy.currConf;
event1.integCount = "" + co.doubleduck.d2p2.P2Log._data.strategy.integCount;
com.funtomic.GameOps.reportEvent("p2calc_strategy",event1);
}
var event2 = { };
event2.p2id = co.doubleduck.d2p2.P2Log._data.p2id;
event2.dataver = co.doubleduck.d2p2.P2Log._data.data_ver;
event2.runs = "" + co.doubleduck.d2p2.P2Log._data.runs;
event2.domains = co.doubleduck.d2p2.P2Log._data.domains;
event2.skillVal = "" + co.doubleduck.d2p2.P2Log._data.skill.currVal;
event2.skillConf = "" + co.doubleduck.d2p2.P2Log._data.skill.currConf;
event2.skillIntegCount = "" + co.doubleduck.d2p2.P2Log._data.skill.integCount;
event2.strategyVal = "" + co.doubleduck.d2p2.P2Log._data.strategy.currVal;
event2.strategyConf = "" + co.doubleduck.d2p2.P2Log._data.strategy.currConf;
event2.strategyIntegCount = "" + co.doubleduck.d2p2.P2Log._data.strategy.integCount;
com.funtomic.GameOps.reportEvent("p2data",event2);
};
co.doubleduck.d2p2.P2Log.getP2ID = function() {
return co.doubleduck.d2p2.P2Log._data.p2id;
};
co.doubleduck.d2p2.P2Log.logSkill = function(value) {
co.doubleduck.d2p2.P2Log.addSample(co.doubleduck.d2p2.P2Log._data.skill,value);
co.doubleduck.d2p2.P2Log._dataAdapter.setValue(co.doubleduck.d2p2.P2Log.DATA_KEY,co.doubleduck.d2p2.P2Log._data);
};
co.doubleduck.d2p2.P2Log.logStrategy = function(value) {
co.doubleduck.d2p2.P2Log.addSample(co.doubleduck.d2p2.P2Log._data.strategy,value);
co.doubleduck.d2p2.P2Log._dataAdapter.setValue(co.doubleduck.d2p2.P2Log.DATA_KEY,co.doubleduck.d2p2.P2Log._data);
};
co.doubleduck.d2p2.P2Log.addSample = function(p2val,sample) {
if(p2val.samples == null) p2val.samples = new Array();
p2val.samples.push(sample);
};
co.doubleduck.d2p2.P2Log.newP2Value = function() {
var val = { };
val.samples = new Array();
val.currVal = 0.5;
val.currConf = 0;
val.integCount = 0;
return val;
};
co.doubleduck.d2p2.P2Log.calcFromSamples = function(p2val) {
if(p2val.samples == null || p2val.samples.length == 0) return null;
var mean = 0;
var _g1 = 0;
var _g = p2val.samples.length;
while(_g1 < _g) {
var i = _g1++;
mean += p2val.samples[i];
}
mean /= p2val.samples.length;
var stdDev = 0;
var _g11 = 0;
var _g2 = p2val.samples.length;
while(_g11 < _g2) {
var i1 = _g11++;
stdDev += Math.pow(p2val.samples[i1] - mean,2);
}
stdDev /= p2val.samples.length;
stdDev = Math.sqrt(stdDev);
var devConf = co.doubleduck.utils.Utils.map(p2val.samples.length,1,6,0.2,1);
var meanConf = (1 - 4 * stdDev) * devConf;
var newVal = co.doubleduck.d2p2.P2Log.integrateVals(mean,meanConf,p2val.currVal,p2val.currConf);
p2val.currVal = co.doubleduck.d2p2.P2Log.trimFloat(newVal.val);
p2val.currConf = co.doubleduck.d2p2.P2Log.trimFloat(newVal.conf);
p2val.samples = new Array();
p2val.integCount++;
var calcVal = { };
calcVal.val = co.doubleduck.d2p2.P2Log.trimFloat(mean);
calcVal.conf = co.doubleduck.d2p2.P2Log.trimFloat(meanConf);
return calcVal;
};
co.doubleduck.d2p2.P2Log.integrateVals = function(aVal,aConf,bVal,bConf) {
var res = { };
res.val = aVal * aConf + bVal * bConf;
res.val /= aConf + bConf;
var delta = Math.abs(aVal - bVal);
var maxConf = co.doubleduck.utils.Utils.map(Math.abs(aConf - bConf),0,1,aConf / 2,Math.max(aConf,bConf));
res.conf = co.doubleduck.utils.Utils.map(delta,0,1,Math.max(aConf,bConf),maxConf);
return res;
};
co.doubleduck.d2p2.P2Log.trimFloat = function(src) {
return Math.round(src * 10000) / 10000;
};
co.doubleduck.d2p2.P2Log.alphabeticSort = function(a,b) {
var i = 0;
a = a.toLowerCase();
b = b.toLowerCase();
while(i < a.length || i < b.length) {
if(i >= a.length && i < b.length) return -1; else if(i < a.length && i >= b.length) return 1; else if(i >= a.length && i >= b.length) return 0;
if(HxOverrides.cca(a,i) != HxOverrides.cca(b,i)) return HxOverrides.cca(a,i) - HxOverrides.cca(b,i);
i++;
}
return 0;
};
co.doubleduck.pinata = {};
co.doubleduck.pinata.Game = function() {
openfl.display.Sprite.call(this);
this.addEventListener(openfl.events.Event.ADDED_TO_STAGE,$bind(this,this.handleAddedToStage));
};
$hxClasses["co.doubleduck.pinata.Game"] = co.doubleduck.pinata.Game;
co.doubleduck.pinata.Game.__name__ = ["co","doubleduck","pinata","Game"];
co.doubleduck.pinata.Game._screenSize = null;
co.doubleduck.pinata.Game._viewportSize = null;
co.doubleduck.pinata.Game.getScreenSize = function() {
return co.doubleduck.pinata.Game._screenSize;
};
co.doubleduck.pinata.Game.__super__ = openfl.display.Sprite;
co.doubleduck.pinata.Game.prototype = $extend(openfl.display.Sprite.prototype,{
handleAddedToStage: function(e) {
this.removeEventListener(openfl.events.Event.ADDED_TO_STAGE,$bind(this,this.handleAddedToStage));
this.initGame();
}
,initGame: function() {
co.doubleduck.pinata.data.Persistence.init("pinata_muncher");
co.doubleduck.pinata.data.Persistence.initGameData();
co.doubleduck.utils.SoundMgr.init(co.doubleduck.pinata.data.Persistence.adapter());
co.doubleduck.utils.SoundMgr.available = true;
this.stage.addEventListener(openfl.events.MouseEvent.MOUSE_DOWN,$bind(this,this.handleMusic));
co.doubleduck.utils.DDAssets.activeLocale = "en";
co.doubleduck.utils.DDAssets.availLocales = ["en","de","es"];
co.doubleduck.pinata.Game._viewportSize = new openfl.geom.Rectangle(0,0,this.stage.stageWidth,this.stage.stageHeight);
co.doubleduck.pinata.Game._screenSize = new openfl.geom.Rectangle(0,0,320,320 * this.stage.stageHeight / this.stage.stageWidth);
co.doubleduck.utils.DDAssets.prefix = "";
co.doubleduck.utils.DDAssets.scale = 1.0;
co.doubleduck.utils.DDAssets.globalSmoothing = true;
flambe.Storage.setStorageAdapter("pinata_muncher",co.doubleduck.pinata.data.Persistence.adapter());
com.funtomic.GameOps.init("pinata_muncher",GlobalVars.gameVersion,co.doubleduck.pinata.data.GameplayDB.getData(),{ },$bind(this,this.handleGameOps));
co.doubleduck.d2p2.P2Log.init("pinata_muncher");
}
,handleMusic: function(e) {
this.stage.removeEventListener(openfl.events.MouseEvent.MOUSE_DOWN,$bind(this,this.handleMusic));
co.doubleduck.utils.SoundMgr.playSound("music_loop",true,0,true);
}
,handleGameOps: function(flag) {
if(com.funtomic.GameOps.getConfig().levelsData != null) co.doubleduck.pinata.data.GameplayDB.setData(com.funtomic.GameOps.getConfig());
this.startFlow();
}
,startFlow: function() {
this.startSession();
}
,addMenu: function(data) {
this._menu = new co.doubleduck.pinata.meta.Menu(data);
this._menu.addEventListener(co.doubleduck.pinata.meta.FlowEvents.START_SESSION,$bind(this,this.handleStartSession));
this.addChild(this._menu);
}
,removeMenu: function() {
this._menu.removeEventListener(co.doubleduck.pinata.meta.FlowEvents.START_SESSION,$bind(this,this.handleStartSession));
this._menu.destroy();
this.removeChild(this._menu);
this._menu = null;
}
,startSession: function(data) {
this._session = new co.doubleduck.pinata.core.Session(data);
this._session.addEventListener(co.doubleduck.pinata.meta.FlowEvents.BACK_TO_MENU,$bind(this,this.handleBackToMenu));
this._session.addEventListener(co.doubleduck.pinata.meta.FlowEvents.RESTART_SESSION,$bind(this,this.handleRestartSession));
this.addChild(this._session);
}
,removeSession: function() {
this._session.removeEventListener(co.doubleduck.pinata.meta.FlowEvents.START_SESSION,$bind(this,this.handleBackToMenu));
this._session.removeEventListener(co.doubleduck.pinata.meta.FlowEvents.RESTART_SESSION,$bind(this,this.handleRestartSession));
this._session.destroy();
this.removeChild(this._session);
this._session = null;
}
,handleStartSession: function(e) {
var data = null;
if(e.data != "") data = JSON.parse(e.data);
this.removeMenu();
this.startSession(data);
}
,handleBackToMenu: function(e) {
var data = { levelId : 1};
if(e.data != "") data = JSON.parse(e.data);
this.removeSession();
this.addMenu(data);
}
,handleRestartSession: function(e) {
var data = null;
if(e.data != "") data = JSON.parse(e.data);
this.removeSession();
this.startSession(data);
}
,__class__: co.doubleduck.pinata.Game
});
co.doubleduck.utils = {};
co.doubleduck.utils.KiziPreloader = function(progbarData,maskFrom,maskTo) {
if(maskTo == null) maskTo = 1;
if(maskFrom == null) maskFrom = 0;
this.KIZI = false;
this.MINIMUM_DISPLAY_TIME = 1500;
NMEPreloader.call(this);
this._isShowingAd = false;
if(this.KIZI) {
com.funtomic.KiziWidget.preloaderStarted();
com.funtomic.KiziWidget.onAdStart($bind(this,this.handleAdStarted));
}
this._progBarData = progbarData;
this.addSplash();
this.addProgressBar();
this._progBar.set_maskFrom(maskFrom);
this._progBar.set_maskTo(maskTo);
this._displayStartTime = haxe.Timer.stamp();
};
$hxClasses["co.doubleduck.utils.KiziPreloader"] = co.doubleduck.utils.KiziPreloader;
co.doubleduck.utils.KiziPreloader.__name__ = ["co","doubleduck","utils","KiziPreloader"];
co.doubleduck.utils.KiziPreloader.__super__ = NMEPreloader;
co.doubleduck.utils.KiziPreloader.prototype = $extend(NMEPreloader.prototype,{
addSplash: function() {
this._splashBmpData = new co.doubleduck.utils.SplashBG(320,568);
this._splash = new openfl.display.Bitmap(this._splashBmpData);
this._splash.smoothing = true;
var frameWidth = 320 * this._splash.get_scaleX();
var frameHeight = 568 * this._splash.get_scaleY();
this.addChild(this._splash);
this._splash.set_x(this.getWidth() / 2 - frameWidth / 2);
this._splash.set_y(this.getHeight() / 2 - frameHeight / 2);
}
,addProgressBar: function() {
var fill = new openfl.display.Bitmap(new co.doubleduck.utils.ProgFill(this._progBarData.width | 0,this._progBarData.height | 0));
fill.smoothing = true;
var bg = new openfl.display.Bitmap(new co.doubleduck.utils.ProgBG(this._progBarData.width | 0,this._progBarData.height | 0));
bg.smoothing = true;
this._progBar = new co.doubleduck.utils.ProgBar(bg,fill);
this.addChild(this._progBar);
this._progBar.setFillVals(this._progBarData.width,this._progBarData.height);
this._progBar.setFillPerc(0);
this._progBar.set_x(this._splash.get_x() + this._progBarData.x);
this._progBar.set_y(this._splash.get_y() + this._progBarData.y);
}
,getHeight: function() {
return openfl.Lib.current.stage.stageHeight;
}
,getWidth: function() {
return openfl.Lib.current.stage.stageWidth;
}
,onLoaded: function() {
var now = haxe.Timer.stamp();
var delta = now - this._displayStartTime;
if(this._isShowingAd) this._callWhenAdComplete = $bind(this,this.endSplash); else if(this.KIZI) {
com.funtomic.KiziWidget.onAdStart(null);
if(!this._isShowingAd) co.doubleduck.utils.Utils.delayedCall(0.5,$bind(this,this.endSplash));
} else if(delta < this.MINIMUM_DISPLAY_TIME) co.doubleduck.utils.Utils.delayedCall((this.MINIMUM_DISPLAY_TIME - delta) / 1000,$bind(this,this.endSplash)); else this.endSplash();
}
,onUpdate: function(bytesLoaded,bytesTotal) {
var percentLoaded = bytesLoaded / bytesTotal;
if(percentLoaded > 1) percentLoaded = 1;
this._progBar.setFillPerc(percentLoaded);
}
,endSplash: function() {
if(this.KIZI) com.funtomic.KiziWidget.preloaderEnded();
this.destroy();
this.dispatchEvent(new openfl.events.Event(openfl.events.Event.COMPLETE));
}
,handleAdStarted: function() {
com.funtomic.KiziWidget.onAdStart(null);
this._isShowingAd = true;
com.funtomic.KiziWidget.onAdComplete($bind(this,this.handleAdComplete));
}
,handleAdComplete: function() {
com.funtomic.KiziWidget.onAdComplete(null);
this._isShowingAd = false;
if(this._callWhenAdComplete != null) {
this._callWhenAdComplete();
this._callWhenAdComplete = null;
}
}
,destroy: function() {
this.removeChild(this._splash);
this._splash.bitmapData = null;
this._splash = null;
this._splashBmpData.dispose();
this._splashBmpData = null;
this.removeChild(this._progBar);
this._progBar = null;
}
,__class__: co.doubleduck.utils.KiziPreloader
});
co.doubleduck.pinata.Preloader = function() {
this.KIZI = true;
co.doubleduck.utils.KiziPreloader.call(this,new openfl.geom.Rectangle(10,460,215,40),0,1);
};
$hxClasses["co.doubleduck.pinata.Preloader"] = co.doubleduck.pinata.Preloader;
co.doubleduck.pinata.Preloader.__name__ = ["co","doubleduck","pinata","Preloader"];
co.doubleduck.pinata.Preloader.__super__ = co.doubleduck.utils.KiziPreloader;
co.doubleduck.pinata.Preloader.prototype = $extend(co.doubleduck.utils.KiziPreloader.prototype,{
__class__: co.doubleduck.pinata.Preloader
});
co.doubleduck.pinata.core = {};
co.doubleduck.pinata.core.LevelsBar = function() {
openfl.display.Sprite.call(this);
this._back = co.doubleduck.utils.DDAssets.getImage("images/ui/scroll_back.png");
this._back.set_y(-this._back.get_height());
this._back.set_x(co.doubleduck.pinata.Game.getScreenSize().width / 2 - this._back.get_width() / 2);
this.addChild(this._back);
var scrollRect = new openfl.geom.Rectangle();
scrollRect.width = co.doubleduck.pinata.Game.getScreenSize().width * 0.77;
scrollRect.height = 50;
this._list = new co.doubleduck.pinata.meta.ScrolledList(scrollRect,false);
this._list.itemPadding = 0.7;
this._list.itemSnap = true;
this._list.set_x((co.doubleduck.pinata.Game.getScreenSize().width - scrollRect.width) / 2);
this._list.set_y(this._back.get_y() + this._back.get_height() / 2 - scrollRect.height / 2 + 1.5);
this.addChild(this._list);
this._front = new openfl.display.Sprite();
var img = co.doubleduck.utils.DDAssets.getImage("images/ui/scroll_front.png");
this._front.addChild(img);
this._front.set_y(-this._front.get_height());
this._front.mouseChildren = this._front.mouseEnabled = false;
this.addChild(this._front);
var levelsData = co.doubleduck.pinata.data.GameplayDB.getLevels();
var _g = 0;
while(_g < levelsData.length) {
var level = levelsData[_g];
++_g;
var lvlId = Std["int"](level.id);
if(lvlId <= co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.UNLOCKED_LEVEL) + 1) {
var levelBtn = new co.doubleduck.pinata.core.LevelBarItem(level);
levelBtn.addEventListener("SelectedEvent",$bind(this,this.handleLevelSelect));
this._list.addItem(levelBtn);
if(lvlId == co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.UNLOCKED_LEVEL) + 1) this._unlockingLevel = levelBtn;
}
}
var activeLevel = co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.ACTIVE_LEVEL);
this._list.focusOnIndex(activeLevel - 1,true);
(js.Boot.__cast(this._list.getItem(activeLevel - 1) , co.doubleduck.pinata.core.LevelBarItem)).toggleSelect(true);
this._nextBtn = new co.doubleduck.utils.Button(co.doubleduck.utils.DDAssets.getRawImage("images/ui/scroll_arrow.png"));
this._nextBtn.set_x(this._front.get_x() + this._front.get_width() - this._nextBtn.get_width() / 2);
this._nextBtn.set_y(this._front.get_y() + this._front.get_height() / 2);
this._nextBtn.addEventListener("BUTTON_ACT_EVENT",$bind(this,this.handleLevelSelect));
this.addChild(this._nextBtn);
this._prevBtn = new co.doubleduck.utils.Button(co.doubleduck.utils.DDAssets.getRawImage("images/ui/scroll_arrow.png"));
this._prevBtn.set_scaleX(-1);
this._prevBtn.set_x(Math.abs(this._prevBtn.get_width()) / 2);
this._prevBtn.set_y(this._nextBtn.get_y());
this._prevBtn.addEventListener("BUTTON_ACT_EVENT",$bind(this,this.handleLevelSelect));
this.addChild(this._prevBtn);
};
$hxClasses["co.doubleduck.pinata.core.LevelsBar"] = co.doubleduck.pinata.core.LevelsBar;
co.doubleduck.pinata.core.LevelsBar.__name__ = ["co","doubleduck","pinata","core","LevelsBar"];
co.doubleduck.pinata.core.LevelsBar.__super__ = openfl.display.Sprite;
co.doubleduck.pinata.core.LevelsBar.prototype = $extend(openfl.display.Sprite.prototype,{
toggleScroll: function(flag) {
this._list.scrollable = flag;
}
,incPinataCount: function() {
if(this._unlockingLevel != null) {
var activeLevel = co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.ACTIVE_LEVEL);
if(this._unlockingLevel.getLevelId() != activeLevel + 1) return;
var res = this._unlockingLevel.incUnlockCount();
if(res) {
co.doubleduck.pinata.data.Persistence.setInt(co.doubleduck.pinata.data.DataKey.UNLOCKED_LEVEL,this._unlockingLevel.getLevelId());
var newId = this._unlockingLevel.getLevelId() + 1;
if(newId <= co.doubleduck.pinata.data.GameplayDB.getLevels().length) {
var levelBtn = new co.doubleduck.pinata.core.LevelBarItem(co.doubleduck.pinata.data.GameplayDB.getLevelData(newId));
levelBtn.addEventListener("SelectedEvent",$bind(this,this.handleLevelSelect));
this._list.addItem(levelBtn);
this._unlockingLevel = levelBtn;
this._list.focusOnIndex(co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.ACTIVE_LEVEL) - 1);
if(activeLevel == 1) co.doubleduck.pinata.core.TutorOverlay.inst().tryShowStep(co.doubleduck.pinata.core.TutorStep.ADVANCE_LEVEL);
} else this._unlockingLevel = null;
if(com.funtomic.KiziWidget.showMidroll()) com.funtomic.KiziWidget.levelEnded();
}
}
}
,handleLevelSelect: function(e) {
var newLevel = -1;
var activeLevel = co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.ACTIVE_LEVEL);
if(e.target == this._nextBtn) {
newLevel = activeLevel + 1;
newLevel = Math.floor(Math.min(newLevel,co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.UNLOCKED_LEVEL)));
} else if(e.target == this._prevBtn) {
newLevel = activeLevel - 1;
newLevel = Math.floor(Math.max(newLevel,1));
} else if(js.Boot.__instanceof(e.target,co.doubleduck.pinata.core.LevelBarItem)) {
newLevel = (js.Boot.__cast(e.target , co.doubleduck.pinata.core.LevelBarItem)).getLevelId();
if(newLevel > co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.UNLOCKED_LEVEL)) newLevel = activeLevel;
}
if(newLevel != activeLevel) {
(js.Boot.__cast(this._list.getItem(activeLevel - 1) , co.doubleduck.pinata.core.LevelBarItem)).toggleSelect(false);
(js.Boot.__cast(this._list.getItem(newLevel - 1) , co.doubleduck.pinata.core.LevelBarItem)).toggleSelect(true);
this._list.focusOnIndex(newLevel - 1);
co.doubleduck.pinata.data.Persistence.setInt(co.doubleduck.pinata.data.DataKey.ACTIVE_LEVEL,newLevel);
this.dispatchEvent(new openfl.events.Event("LevelSelectedEvent"));
if(newLevel == 2) co.doubleduck.pinata.core.TutorOverlay.inst().actedOnStep(co.doubleduck.pinata.core.TutorStep.ADVANCE_LEVEL);
}
}
,__class__: co.doubleduck.pinata.core.LevelsBar
});
co.doubleduck.pinata.meta = {};
co.doubleduck.pinata.meta.ScrolledItem = function() {
openfl.display.Sprite.call(this);
};
$hxClasses["co.doubleduck.pinata.meta.ScrolledItem"] = co.doubleduck.pinata.meta.ScrolledItem;
co.doubleduck.pinata.meta.ScrolledItem.__name__ = ["co","doubleduck","pinata","meta","ScrolledItem"];
co.doubleduck.pinata.meta.ScrolledItem.__super__ = openfl.display.Sprite;
co.doubleduck.pinata.meta.ScrolledItem.prototype = $extend(openfl.display.Sprite.prototype,{
depressItem: function() {
}
,destroy: function() {
}
,__class__: co.doubleduck.pinata.meta.ScrolledItem
});
co.doubleduck.pinata.core.LevelBarItem = function(levelData) {
co.doubleduck.pinata.meta.ScrolledItem.call(this);
this._levelData = levelData;
this._levelId = Std["int"](levelData.id);
this._isGift = false;
var imgName = "images/ui/scroll_item.png";
if(levelData.type == "gift") {
this._isGift = true;
if(co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.UNLOCKED_LEVEL) <= this._levelId) {
imgName = "images/ui/scroll_item_bonus.png";
this._giftLocked = true;
} else {
imgName = "images/ui/scroll_item_bonus_off.png";
this._giftLocked = false;
}
}
this._btn = new co.doubleduck.utils.Button(co.doubleduck.utils.DDAssets.getRawImage(imgName));
this._btn.set_x(this._btn.get_width() / 2);
this._btn.set_y(this._btn.get_height() / 2);
this._btn.addEventListener("BUTTON_ACT_EVENT",$bind(this,this.handleBtn));
this.addChild(this._btn);
this._num = co.doubleduck.utils.Fonter.getString("" + this._levelId,"images/fonts/yellow_big");
this._num.mouseEnabled = this._num.mouseChildren = false;
this._num.set_x(this._btn.get_x());
this._num.set_y(this._btn.get_y());
this.addChild(this._num);
this._sel = co.doubleduck.utils.DDAssets.getImage("images/ui/scroll_item_active.png");
this._sel.set_x(this._btn.get_x() - this._sel.get_width() / 2);
this._sel.set_y(this._btn.get_y() - this._sel.get_height() / 2);
this._sel.set_visible(false);
if(this._isGift) this.addChildAt(this._sel,0); else this.addChild(this._sel);
if(this._levelId > co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.UNLOCKED_LEVEL)) {
this._unlockBar = new co.doubleduck.utils.ProgBar(co.doubleduck.utils.DDAssets.getImage("images/ui/level_bar_bg.png"),co.doubleduck.utils.DDAssets.getImage("images/ui/level_bar_fill.png"));
this._unlockCount = 0;
this._unlockTarget = Std["int"](this._levelData.countToUnlock);
this._unlockBar.setFillPerc(0);
this._unlockBar.set_x(this._btn.get_x() - this._unlockBar.get_width() / 2);
this._unlockBar.set_y(this._btn.get_y() + 10);
this.addChild(this._unlockBar);
this._btn.set_alpha(this._num.set_alpha(0.6));
}
};
$hxClasses["co.doubleduck.pinata.core.LevelBarItem"] = co.doubleduck.pinata.core.LevelBarItem;
co.doubleduck.pinata.core.LevelBarItem.__name__ = ["co","doubleduck","pinata","core","LevelBarItem"];
co.doubleduck.pinata.core.LevelBarItem.__super__ = co.doubleduck.pinata.meta.ScrolledItem;
co.doubleduck.pinata.core.LevelBarItem.prototype = $extend(co.doubleduck.pinata.meta.ScrolledItem.prototype,{
getLevelId: function() {
return this._levelId;
}
,toggleSelect: function(flag) {
this._sel.set_visible(flag);
if(flag) {
co.doubleduck.utils.TweenChain.removeTweens(this._btn);
if(this._redBtn != null) {
co.doubleduck.utils.TweenChain.removeTweens(this._redBtn);
this.removeChild(this._redBtn);
this._redBtn = null;
}
this._btn.set_scaleX(this._btn.set_scaleY(1));
} else if(this._isGift && (this._giftLocked && co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.UNLOCKED_LEVEL) != this._levelId)) {
this._giftLocked = false;
var newBtn = new co.doubleduck.utils.Button(co.doubleduck.utils.DDAssets.getRawImage("images/ui/scroll_item_bonus_off.png"));
newBtn.set_x(newBtn.get_width() / 2);
newBtn.set_y(newBtn.get_height() / 2);
newBtn.addEventListener("BUTTON_ACT_EVENT",$bind(this,this.handleBtn));
this.addChildAt(newBtn,this.getChildIndex(this._btn));
this.removeChild(this._btn);
this._btn.removeEventListener("BUTTON_ACT_EVENT",$bind(this,this.handleBtn));
this._btn = newBtn;
}
}
,incUnlockCount: function() {
this._unlockCount++;
this._unlockBar.setFillPerc(this._unlockCount / this._unlockTarget);
if(this._unlockCount >= this._unlockTarget) {
var data = { };
data.level = this._levelId;
data.candyCount = co.doubleduck.pinata.meta.Stats.getPCandies().toFullString();
data.killCount = co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.PINATA_KILL_COUNT);
data.toolsState = co.doubleduck.pinata.data.Persistence.getString(co.doubleduck.pinata.data.DataKey.TOOLS_STATE);
data.currTapHits = co.doubleduck.pinata.meta.Stats.getHitVal().toFullString();
data.currHPS = co.doubleduck.pinata.meta.Stats.getHPS().toFullString();
com.funtomic.GameOps.reportEvent("level_unlocked",data);
this.removeChild(this._unlockBar);
co.doubleduck.pinata.meta.Stats.notifyOnEvent("UpdateToolEvent");
this._unlockBar = null;
this._btn.set_alpha(this._num.set_alpha(1));
if(!this._isGift) {
this._redBtn = new openfl.display.Sprite();
var red = co.doubleduck.utils.DDAssets.getImage("images/ui/scroll_item_alert.png");
var _g = red;
_g.set_x(_g.get_x() - red.get_width() / 2);
var _g1 = red;
_g1.set_y(_g1.get_y() - red.get_height() / 2);
this._redBtn.addChild(red);
this._redBtn.set_x(this._btn.get_x());
this._redBtn.set_y(this._btn.get_y());
this._redBtn.set_alpha(0);
this._redBtn.mouseChildren = this._redBtn.mouseEnabled = false;
this.addChildAt(this._redBtn,this.getChildIndex(this._btn) + 1);
this.nudgeBtn();
}
co.doubleduck.utils.SoundMgr.playSound("new_level_unlocked");
return true;
}
return false;
}
,nudgeBtn: function() {
co.doubleduck.utils.TweenChain.removeTweens(this._btn);
co.doubleduck.utils.TweenChain.removeTweens(this._redBtn);
this._redBtn.set_scaleX(this._redBtn.set_scaleY(this._btn.set_scaleX(this._btn.set_scaleY(1))));
co.doubleduck.utils.TweenChain.get(this._btn).tto({ scaleX : 1.08, scaleY : 1.08},300,motion.easing.Sine.get_easeInOut()).tto({ scaleX : 1, scaleY : 1},300,motion.easing.Sine.get_easeInOut()).call($bind(this,this.nudgeBtn));
co.doubleduck.utils.TweenChain.get(this._redBtn).tto({ scaleX : 1.08, scaleY : 1.08, alpha : 0.7},300,motion.easing.Sine.get_easeInOut()).tto({ scaleX : 1, scaleY : 1, alpha : 0.1},300,motion.easing.Sine.get_easeInOut()).call($bind(this,this.nudgeBtn));
}
,handleBtn: function(e) {
this.dispatchEvent(new openfl.events.Event("SelectedEvent"));
}
,depressItem: function() {
this._btn.dePress();
}
,destroy: function() {
this._btn.removeEventListener("BUTTON_ACT_EVENT",$bind(this,this.handleBtn));
}
,__class__: co.doubleduck.pinata.core.LevelBarItem
});
co.doubleduck.pinata.core.Muncher = function() {
openfl.display.Sprite.call(this);
this._box = new openfl.display.Sprite();
this.addChild(this._box);
this._anim = new co.doubleduck.pinata.core.MuncherAnim();
this._anim.set_x(-65.);
this._anim.set_y(-129);
this._box.addChild(this._anim);
this.jellyAnim();
};
$hxClasses["co.doubleduck.pinata.core.Muncher"] = co.doubleduck.pinata.core.Muncher;
co.doubleduck.pinata.core.Muncher.__name__ = ["co","doubleduck","pinata","core","Muncher"];
co.doubleduck.pinata.core.Muncher.__super__ = openfl.display.Sprite;
co.doubleduck.pinata.core.Muncher.prototype = $extend(openfl.display.Sprite.prototype,{
showEat: function(openDur) {
if(openDur == null) openDur = 1;
co.doubleduck.utils.SoundMgr.playSound("eating_candies");
co.doubleduck.utils.TweenChain.removeTweens(this._box);
this._box.set_scaleX(this._box.set_scaleY(1));
var steps = new Array();
steps.push("openMouth");
var _g = 0;
while(_g < openDur) {
var i = _g++;
steps.push("keepOpen");
}
steps = steps.concat(["closeMouth","chew","chew","swallow"]);
this._anim.showBehaviors(steps);
this._anim.addEventListener(openfl.events.Event.COMPLETE,$bind(this,this.handleDoneEat));
}
,jellyAnim: function() {
co.doubleduck.utils.TweenChain.removeTweens(this._box);
this._box.set_scaleX(this._box.set_scaleY(1));
var hTime = 700;
co.doubleduck.utils.TweenChain.get(this._box).tto({ scaleX : 1.04, scaleY : 0.98},hTime,motion.easing.Sine.get_easeOut()).tto({ scaleX : 0.98, scaleY : 1.04},2 * hTime,motion.easing.Sine.get_easeInOut()).tto({ scaleX : 1, scaleY : 1},hTime,motion.easing.Sine.get_easeIn()).call($bind(this,this.jellyAnim));
}
,handleDoneEat: function(e) {
this._anim.removeEventListener(openfl.events.Event.COMPLETE,$bind(this,this.handleDoneEat));
this._anim.showBehavior("idle");
this.jellyAnim();
}
,__class__: co.doubleduck.pinata.core.Muncher
});
co.doubleduck.utils.AnimSprite = function(sheet,smoothing) {
if(smoothing == null) smoothing = false;
openfl.display.Sprite.call(this);
this.smoothing = smoothing;
this.spritesheet = sheet;
this.behaviorQueue = new Array();
this.bitmap = new openfl.display.Bitmap();
this.addChild(this.bitmap);
};
$hxClasses["co.doubleduck.utils.AnimSprite"] = co.doubleduck.utils.AnimSprite;
co.doubleduck.utils.AnimSprite.__name__ = ["co","doubleduck","utils","AnimSprite"];
co.doubleduck.utils.AnimSprite.__super__ = openfl.display.Sprite;
co.doubleduck.utils.AnimSprite.prototype = $extend(openfl.display.Sprite.prototype,{
getFrameData: function(index) {
if(this.currentBehavior != null && this.currentBehavior.frameData.length > index) return this.currentBehavior.frameData[index]; else return null;
}
,queueBehavior: function(behavior) {
var behaviorData = this.resolveBehavior(behavior);
if(this.currentBehavior == null) this.updateBehavior(behaviorData); else this.behaviorQueue.push(behaviorData);
}
,resolveBehavior: function(behavior) {
if(js.Boot.__instanceof(behavior,spritesheet.data.BehaviorData)) return behavior; else if(typeof(behavior) == "string") {
if(this.spritesheet != null) return this.spritesheet.behaviors.get(behavior);
}
return null;
}
,showBehavior: function(behavior,restart) {
if(restart == null) restart = true;
this.behaviorQueue = new Array();
this.updateBehavior(this.resolveBehavior(behavior),restart);
}
,showBehaviors: function(behaviors) {
this.behaviorQueue = new Array();
var _g = 0;
while(_g < behaviors.length) {
var behavior = behaviors[_g];
++_g;
this.behaviorQueue.push(this.resolveBehavior(behavior));
}
if(this.behaviorQueue.length > 0) this.updateBehavior(this.behaviorQueue.shift());
}
,update: function(deltaTime) {
if(!this.behaviorComplete) {
this.timeElapsed += deltaTime;
if(this.timeElapsed >= this.loopTime) {
if(this.currentBehavior.loop) this.timeElapsed = this.timeElapsed % this.loopTime; else {
this.timeElapsed = this.loopTime;
this.behaviorComplete = true;
}
}
var ratio = this.timeElapsed / this.loopTime;
var frameCount = this.currentBehavior.frames.length;
var newIndex = Math.floor(ratio * frameCount);
if(!this.currentBehavior.loop) newIndex = Math.min(frameCount - 1,newIndex);
this.currentFrameIndex = newIndex;
var frame = this.spritesheet.getFrame(this.currentBehavior.frames[this.currentFrameIndex]);
this.bitmap.bitmapData = frame.bitmapData;
this.bitmap.smoothing = this.smoothing;
this.bitmap.set_x(frame.offsetX - this.currentBehavior.originX);
this.bitmap.set_y(frame.offsetY - this.currentBehavior.originY);
if(this.behaviorComplete) {
if(this.behaviorQueue.length > 0) this.updateBehavior(this.behaviorQueue.shift()); else if(this.hasEventListener(openfl.events.Event.COMPLETE)) this.dispatchEvent(new openfl.events.Event(openfl.events.Event.COMPLETE));
}
}
}
,updateBehavior: function(behavior,restart) {
if(restart == null) restart = true;
if(behavior != null) {
if(restart || behavior != this.currentBehavior) {
this.currentBehavior = behavior;
this.timeElapsed = 0;
this.behaviorComplete = false;
this.loopTime = behavior.frames.length / behavior.frameRate * 1000 | 0;
if(this.bitmap.bitmapData == null) this.update(0);
}
} else {
this.bitmap.bitmapData = null;
this.currentBehavior = null;
this.currentFrameIndex = -1;
this.behaviorComplete = true;
}
}
,__class__: co.doubleduck.utils.AnimSprite
});
co.doubleduck.pinata.core.MuncherAnim = function() {
var behDatas = new Array();
behDatas.push(new spritesheet.data.BehaviorData("idle",[0,0,0,0,0,0,0,0,0,0,11,0],true,5));
behDatas.push(new spritesheet.data.BehaviorData("openMouth",[0,1,2,3],false,15));
behDatas.push(new spritesheet.data.BehaviorData("keepOpen",[3,3],false,15));
behDatas.push(new spritesheet.data.BehaviorData("closeMouth",[3,2],false,15));
behDatas.push(new spritesheet.data.BehaviorData("chew",[4,5,6,7,8],false,18));
behDatas.push(new spritesheet.data.BehaviorData("swallow",[9,9,9,9,10,10,0],false,17));
var sheet = co.doubleduck.utils.DDAssets.getSpritesheet("images/muncher.png",4,3,130,129,behDatas);
co.doubleduck.utils.AnimSprite.call(this,sheet);
this.showBehavior("idle");
this._lastTime = openfl.Lib.getTimer();
this.addEventListener(openfl.events.Event.ENTER_FRAME,$bind(this,this.handleTick));
};
$hxClasses["co.doubleduck.pinata.core.MuncherAnim"] = co.doubleduck.pinata.core.MuncherAnim;
co.doubleduck.pinata.core.MuncherAnim.__name__ = ["co","doubleduck","pinata","core","MuncherAnim"];
co.doubleduck.pinata.core.MuncherAnim.__super__ = co.doubleduck.utils.AnimSprite;
co.doubleduck.pinata.core.MuncherAnim.prototype = $extend(co.doubleduck.utils.AnimSprite.prototype,{
handleTick: function(e) {
var time = openfl.Lib.getTimer();
var delta = time - this._lastTime;
this.update(delta);
this.bitmap.smoothing = true;
this._lastTime = time;
}
,__class__: co.doubleduck.pinata.core.MuncherAnim
});
co.doubleduck.pinata.core.Session = function(data) {
var _g = this;
openfl.display.Sprite.call(this);
this._prevBackName = "";
this._currLvlId = co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.ACTIVE_LEVEL);
this._currLvlData = co.doubleduck.pinata.data.GameplayDB.getLevelData(this._currLvlId);
co.doubleduck.pinata.data.Persistence.setInt(co.doubleduck.pinata.data.DataKey.RUNS_COUNTER,co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.RUNS_COUNTER) + 1);
this._bgBox = new openfl.display.Sprite();
this._pinataBox = new openfl.display.Sprite();
this.setupBack();
if(!co.doubleduck.pinata.core.TutorOverlay.inst().tryShowStep(co.doubleduck.pinata.core.TutorStep.SHOW_BUBBLE,{ handle : $bind(this,this.loadPinata)})) this.loadPinata();
this._muncher = new co.doubleduck.pinata.core.Muncher();
this._muncher.set_x(co.doubleduck.pinata.Game.getScreenSize().width / 2);
this._muncher.set_y(co.doubleduck.pinata.Game.getScreenSize().height * 0.85);
this._toolAnims = new co.doubleduck.pinata.core.tools.ToolAnims();
this.addChild(this._bgBox);
this.addChild(this._muncher);
this.addChild(this._pinataBox);
this.addChild(this._toolAnims);
this._levelsBar = new co.doubleduck.pinata.core.LevelsBar();
this._levelsBar.set_y(co.doubleduck.pinata.Game.getScreenSize().height);
this._levelsBar.addEventListener("LevelSelectedEvent",$bind(this,this.handleLevelSelected));
this.addChild(this._levelsBar);
this._scrLayer = new openfl.display.Sprite();
this.addChild(this._scrLayer);
this._toolsScr = new co.doubleduck.pinata.core.tools.ToolsScr();
this._toolsScr.addEventListener(openfl.events.Event.OPEN,$bind(this,this.handleScrOpened));
this._toolsScr.set_visible(false);
this._scrLayer.addChild(this._toolsScr);
if(co.doubleduck.pinata.core.TutorOverlay.inst().hasPassedStep(co.doubleduck.pinata.core.TutorStep.TAP_TAB_BTN)) {
if(this._prevBackName != "bonus") this._toolsScr.set_visible(true);
} else this._toolsScr.handlePCandies();
this._missionScr = new co.doubleduck.pinata.core.missions.MissionScr();
this._missionScr.addEventListener(openfl.events.Event.OPEN,$bind(this,this.handleScrOpened));
this._missionScr.addEventListener(openfl.events.Event.OPEN,$bind(this,this.handleMissionScr));
this._missionScr.addEventListener(openfl.events.Event.CLOSE,$bind(this,this.handleMissionScr));
this._missionScr.addEventListener("WonPinataEvent",$bind(this,this.handleMissionScr));
this._missionScr.set_visible(false);
this._scrLayer.addChild(this._missionScr);
if(co.doubleduck.pinata.core.TutorOverlay.inst().hasPassedStep(co.doubleduck.pinata.core.TutorStep.SHOW_MISSIONS)) {
if(this._prevBackName == "bonus") this._missionScr.regLevelShowing = false; else this._missionScr.set_visible(true);
}
this._hud = new openfl.display.Sprite();
this.addChild(this._hud);
this.addChild(co.doubleduck.pinata.core.TutorOverlay.inst());
co.doubleduck.pinata.meta.Stats.addListener("UpdateCandiesEvent",$bind(this,this.updateCandies));
this.updateCandies();
co.doubleduck.pinata.meta.Stats.addListener("UpdateHPSEvent",$bind(this,this.updateHPS));
this.updateHPS();
var latest = co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.LATEST_TIME_KEPT);
if(latest > 0) {
var curr = Math.floor(new Date().getTime() / 1000);
var delta = curr - latest;
var hps = co.doubleduck.pinata.meta.Stats.getHPS();
if(!co.doubleduck.pinata.meta.BigInt.isZero(hps)) {
var levelDat = co.doubleduck.pinata.data.GameplayDB.getLevelData(co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.ACTIVE_LEVEL));
var hp = co.doubleduck.pinata.core.pinatas.Pinata.rollFromRange(levelDat.pinataHP,0.5);
var reward = co.doubleduck.pinata.core.pinatas.Pinata.rollFromRange(levelDat.candyReward,0.5);
var quant = delta / Math.max(co.doubleduck.pinata.meta.BigInt.roughDiv(hp,hps),1);
quant = Math.min(10000,quant);
var totalReward = co.doubleduck.pinata.meta.BigInt.mulScalar(reward,quant);
if(!co.doubleduck.pinata.meta.BigInt.isZero(totalReward)) {
var modal = new co.doubleduck.pinata.meta.AwayModal(totalReward);
modal.set_x(co.doubleduck.pinata.Game.getScreenSize().width / 2);
modal.set_y(co.doubleduck.pinata.Game.getScreenSize().height / 2);
this.addChild(modal);
var candies = co.doubleduck.pinata.meta.Stats.getPCandies();
candies = co.doubleduck.pinata.meta.BigInt.add(candies,totalReward);
co.doubleduck.pinata.meta.Stats.setPCandies(candies);
this._missionScr.noModalShowing = false;
modal.callWhenDone = function() {
_g._missionScr.noModalShowing = true;
};
}
}
}
this._timeKeeper = new co.doubleduck.utils.Delayer(2000);
this._timeKeeper.handler = $bind(this,this.handleTimeKeep);
this._timeKeeper.start();
};
$hxClasses["co.doubleduck.pinata.core.Session"] = co.doubleduck.pinata.core.Session;
co.doubleduck.pinata.core.Session.__name__ = ["co","doubleduck","pinata","core","Session"];
co.doubleduck.pinata.core.Session.__super__ = openfl.display.Sprite;
co.doubleduck.pinata.core.Session.prototype = $extend(openfl.display.Sprite.prototype,{
handleTimeKeep: function() {
co.doubleduck.pinata.data.Persistence.setInt(co.doubleduck.pinata.data.DataKey.LATEST_TIME_KEPT,Math.floor(new Date().getTime() / 1000));
}
,handleScrOpened: function(e) {
var scr = e.target;
this._scrLayer.addChild(this._scrLayer.removeChild(scr));
}
,handleMissionScr: function(e) {
if(e.type == openfl.events.Event.OPEN) {
this._levelsBar.toggleScroll(false);
this._levelsBar.stopDrag();
this._toolsScr.closeIdOpened();
}
if(e.type == openfl.events.Event.CLOSE) this._levelsBar.toggleScroll(true);
if(e.type == "WonPinataEvent") {
this.setupBack();
this._toolAnims.toggleShow(false);
this._pinata.animVanish();
this._pinata.removeEventListener("OpenedEvent",$bind(this,this.handlePinata));
this._pinata.removeEventListener("ClearingEvent",$bind(this,this.handlePinata));
this.loadPinata((js.Boot.__cast(e , co.doubleduck.utils.DynamicEvent)).data,true);
co.doubleduck.utils.TweenChain.get(this._pinata).wait(2500).call(($_=(js.Boot.__cast(this._pinata , co.doubleduck.pinata.core.pinatas.RegPinata)),$bind($_,$_.initHittable)));
}
}
,updateCandies: function(e) {
if(this._pCandies != null) {
this._hud.removeChild(this._pCandies);
this._pCandies = null;
}
this._pCandies = co.doubleduck.utils.Fonter.getString("$" + co.doubleduck.pinata.meta.Stats.getPCandies().toString(),"images/fonts/yellow_big");
this._pCandies.set_x(co.doubleduck.pinata.Game.getScreenSize().width - 10 - this._pCandies.get_width() / 2);
this._pCandies.set_y(22);
this._hud.addChild(this._pCandies);
}
,updateHPS: function(e) {
if(this._pHPS != null) {
this._hud.removeChild(this._pHPS);
this._pHPS = null;
}
var val = co.doubleduck.pinata.meta.Stats.getHPS();
if(val.toFullString() != "0") {
this._pHPS = co.doubleduck.utils.Fonter.getString(val.toString() + "~","images/fonts/yellow_small");
this._pHPS.set_x(co.doubleduck.pinata.Game.getScreenSize().width - 12 - this._pHPS.get_width() / 2);
this._pHPS.set_y(42);
this._hud.addChild(this._pHPS);
}
}
,setupBack: function() {
var unlockedLvl = co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.UNLOCKED_LEVEL);
var activeLvl = co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.ACTIVE_LEVEL);
var newData = co.doubleduck.pinata.data.GameplayDB.getLevelData(activeLvl);
var newBack = "";
if(newData.type == "gift" && activeLvl == unlockedLvl) newBack = "bonus"; else newBack = "back" + Std["int"](newData.back);
if(newBack != "" && newBack != this._prevBackName) {
this._prevBackName = newBack;
newBack = "images/backs/" + newBack + ".jpg";
if(this._back != null) {
co.doubleduck.utils.TweenChain.get(this._back).tto({ alpha : 0},150).call(($_=this._bgBox,$bind($_,$_.removeChild)),[this._back]);
this._back = null;
}
this._back = co.doubleduck.utils.DDAssets.getImage(newBack);
this._back.set_x(co.doubleduck.pinata.Game.getScreenSize().width / 2 - this._back.get_width() / 2);
this._back.set_y(co.doubleduck.pinata.Game.getScreenSize().height - this._back.get_height());
this._bgBox.addChildAt(this._back,0);
if(this._missionScr != null) {
if(this._prevBackName == "bonus") {
this._missionScr.set_visible(this._toolsScr.set_visible(false));
this._missionScr.regLevelShowing = false;
} else {
this._missionScr.set_visible(this._toolsScr.set_visible(true));
this._missionScr.regLevelShowing = true;
}
}
}
}
,handleLevelSelected: function(e) {
var activeLvl = co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.ACTIVE_LEVEL);
var newData = co.doubleduck.pinata.data.GameplayDB.getLevelData(activeLvl);
this.setupBack();
this._currLvlData = newData;
this._pinata.animVanish();
this._pinata.removeEventListener("OpenedEvent",$bind(this,this.handlePinata));
this._pinata.removeEventListener("ClearingEvent",$bind(this,this.handlePinata));
this.loadPinata();
}
,loadPinata: function(pData,instant) {
if(instant == null) instant = false;
if(pData == null) pData = this._currLvlData;
this._pinata = co.doubleduck.pinata.core.pinatas.Pinata.create(pData);
this._pinata.set_x(co.doubleduck.pinata.Game.getScreenSize().width / 2);
this._pinata.set_y(co.doubleduck.pinata.Game.getScreenSize().height * 0.3);
if(!instant) this._pinata.animIn();
if(pData.type == "mission") this._pinata.set_y(pData.posY);
this._pinata.addEventListener("OpenedEvent",$bind(this,this.handlePinata));
this._pinata.addEventListener("ClearingEvent",$bind(this,this.handlePinata));
this._pinata.addEventListener("ClearedEvent",$bind(this,this.handlePinata));
this._pinataBox.addChild(this._pinata);
}
,handlePinata: function(e) {
if(e.type == "OpenedEvent") {
this._pinata.removeEventListener("OpenedEvent",$bind(this,this.handlePinata));
var gotCandies = this._pinata.getReward();
co.doubleduck.pinata.meta.Stats.setPCandies(co.doubleduck.pinata.meta.BigInt.add(co.doubleduck.pinata.meta.Stats.getPCandies(),gotCandies));
co.doubleduck.pinata.core.TutorOverlay.inst().tryShowStep(co.doubleduck.pinata.core.TutorStep.WORKS_OFFLINE);
this._levelsBar.incPinataCount();
if(co.doubleduck.pinata.core.TutorOverlay.inst().tryShowStep(co.doubleduck.pinata.core.TutorStep.SHOW_MISSIONS)) this._missionScr.set_visible(true);
if(js.Boot.__instanceof(this._pinata,co.doubleduck.pinata.core.pinatas.GiftPinata) || js.Boot.__instanceof(this._pinata,co.doubleduck.pinata.core.pinatas.MissionPinata)) this.pourCandies(26,1900); else this.spreadCandies(4,850);
var reward = co.doubleduck.utils.Fonter.getString("$" + gotCandies.toString(),"images/fonts/yellow_big");
reward.set_x(this._muncher.get_x() + 70);
reward.set_y(this._muncher.get_y() - 70);
reward.set_alpha(0);
this._pinataBox.addChild(reward);
co.doubleduck.utils.TweenChain.get(reward).wait(600).tto({ y : reward.get_y() - 50},850);
co.doubleduck.utils.TweenChain.get(reward).wait(600).tto({ alpha : 1},50).wait(500).tto({ alpha : 0},300).call(($_=this._pinataBox,$bind($_,$_.removeChild)),[reward]);
var eatDur = 1;
if(js.Boot.__instanceof(this._pinata,co.doubleduck.pinata.core.pinatas.GiftPinata) || js.Boot.__instanceof(this._pinata,co.doubleduck.pinata.core.pinatas.MissionPinata)) {
var white = new openfl.display.Sprite();
white.get_graphics().beginFill(14548991);
white.get_graphics().drawRect(0,0,co.doubleduck.pinata.Game.getScreenSize().width,co.doubleduck.pinata.Game.getScreenSize().height);
white.get_graphics().endFill();
this.addChild(white);
eatDur = 10;
co.doubleduck.utils.TweenChain.get(white).tto({ alpha : 0},600).call($bind(this,this.removeChild),[white]);
}
co.doubleduck.utils.TweenChain.removeTweens(this._muncher);
co.doubleduck.utils.TweenChain.get(this._muncher).wait(430).call(($_=this._muncher,$bind($_,$_.showEat)),[eatDur]);
}
if(e.type == "ClearingEvent") {
this._pinata.removeEventListener("ClearingEvent",$bind(this,this.handlePinata));
if(!js.Boot.__instanceof(this._pinata,co.doubleduck.pinata.core.pinatas.GiftPinata) && !js.Boot.__instanceof(this._pinata,co.doubleduck.pinata.core.pinatas.MissionPinata)) this.loadPinata();
co.doubleduck.pinata.data.Persistence.setInt(co.doubleduck.pinata.data.DataKey.PINATA_KILL_COUNT,co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.PINATA_KILL_COUNT) + 1);
co.doubleduck.pinata.data.Persistence.setInt(co.doubleduck.pinata.data.DataKey.PINATAS_BEAT_MISSION,co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.PINATAS_BEAT_MISSION) + 1);
co.doubleduck.pinata.meta.Stats.notifyOnEvent("UpdateToolEvent");
}
if(e.type == "ClearedEvent") {
var oldPinata = e.target;
oldPinata.removeEventListener("ClearedEvent",$bind(this,this.handlePinata));
this._pinataBox.removeChild(oldPinata);
if(js.Boot.__instanceof(oldPinata,co.doubleduck.pinata.core.pinatas.GiftPinata)) {
this.setupBack();
if(this._pinata == oldPinata) this.loadPinata();
} else if(js.Boot.__instanceof(this._pinata,co.doubleduck.pinata.core.pinatas.MissionPinata)) {
if(this._pinata == oldPinata) co.doubleduck.utils.TweenChain.get(this._missionScr).wait(1850).call(($_=this._missionScr,$bind($_,$_.reshowNewPack))).wait(400).call(($_=this._toolAnims,$bind($_,$_.toggleShow)),[true]).call($bind(this,this.loadPinata));
}
}
}
,spreadCandies: function(amount,dur) {
var _g = 0;
while(_g < amount) {
var i = _g++;
var candy = new openfl.display.Sprite();
var img = co.doubleduck.utils.DDAssets.getImage("images/candies" + (i % 3 + 1) + ".png");
var _g1 = img;
_g1.set_x(_g1.get_x() - img.get_width() / 2);
var _g11 = img;
_g11.set_y(_g11.get_y() - img.get_height() / 2);
candy.addChild(img);
candy.set_alpha(0);
candy.set_scaleX(candy.set_scaleY(0.6));
candy.set_x(this._pinata.get_x());
candy.set_y(this._pinata.get_y() + 30);
this._pinataBox.addChild(candy);
var delay = Math.floor(Math.random() * 250);
var centerFactor = 1 - Math.abs(i - (amount - 1) / 2) / ((amount - 1) / 2);
co.doubleduck.utils.TweenChain.get(candy).tto({ x : candy.get_x() + (i + 1) / amount * 100 - 50},300,motion.easing.Sine.get_easeOut()).tto({ x : candy.get_x()},dur - delay - 300,motion.easing.Cubic.get_easeIn());
co.doubleduck.utils.TweenChain.get(candy).tto({ y : candy.get_y() - (10 + centerFactor * 50 + co.doubleduck.utils.Utils.nrand() * 10)},300,motion.easing.Sine.get_easeOut()).tto({ y : this._muncher.get_y() - this._muncher.get_height() / 2},dur - delay - 300,motion.easing.Sine.get_easeIn());
co.doubleduck.utils.TweenChain.get(candy).tto({ alpha : 1},100).tto({ rotation : 90 - Math.random() * 180},dur - delay - 200).tto({ alpha : 0},100).call(($_=this._pinataBox,$bind($_,$_.removeChild)),[candy]);
}
}
,pourCandies: function(amount,dur) {
var pourRatio = co.doubleduck.utils.Utils.map(amount,1,10,0,0.6);
var canDelay = Math.floor(dur * pourRatio / amount);
var halfDropTime = Math.floor(canDelay * amount / 2);
var _g = 0;
while(_g < amount) {
var i = _g++;
var candy = new openfl.display.Sprite();
var img = co.doubleduck.utils.DDAssets.getImage("images/candies" + (i % 3 + 1) + ".png");
var _g1 = img;
_g1.set_x(_g1.get_x() - img.get_width() / 2);
var _g11 = img;
_g11.set_y(_g11.get_y() - img.get_height() / 2);
candy.addChild(img);
candy.set_alpha(0);
candy.set_scaleX(candy.set_scaleY(0.6));
candy.set_x(this._pinata.get_x());
candy.set_y(this._pinata.get_y() + 30);
this._pinataBox.addChild(candy);
var delay = Math.floor(Math.random() * 250);
co.doubleduck.utils.TweenChain.get(candy).wait(10 + i * canDelay).tto({ x : candy.get_x() + (50 - Math.random() * 100)},halfDropTime,motion.easing.Sine.get_easeOut()).tto({ x : candy.get_x()},halfDropTime,motion.easing.Sine.get_easeInOut());
co.doubleduck.utils.TweenChain.get(candy).wait(10 + i * canDelay).tto({ y : this._muncher.get_y() - this._muncher.get_height() / 2},2 * halfDropTime,motion.easing.Sine.get_easeIn());
co.doubleduck.utils.TweenChain.get(candy).wait(10 + i * canDelay).tto({ alpha : 1},100).tto({ rotation : 90 - Math.random() * 180},2 * halfDropTime - 200).tto({ alpha : 0},100).call(($_=this._pinataBox,$bind($_,$_.removeChild)),[candy]);
}
}
,destroy: function() {
}
,__class__: co.doubleduck.pinata.core.Session
});
co.doubleduck.pinata.core.TutorStep = $hxClasses["co.doubleduck.pinata.core.TutorStep"] = { __ename__ : ["co","doubleduck","pinata","core","TutorStep"], __constructs__ : ["SHOW_BUBBLE","TAP_TAB_BTN","BUY_FIRST_UPGRADE","EXIT_SHOP","ADVANCE_LEVEL","SHOW_MISSIONS","CLOSE_MISSIONS","BUY_FIRST_AUTO","WORKS_OFFLINE","DONE_TUTOR"] };
co.doubleduck.pinata.core.TutorStep.SHOW_BUBBLE = ["SHOW_BUBBLE",0];
co.doubleduck.pinata.core.TutorStep.SHOW_BUBBLE.toString = $estr;
co.doubleduck.pinata.core.TutorStep.SHOW_BUBBLE.__enum__ = co.doubleduck.pinata.core.TutorStep;
co.doubleduck.pinata.core.TutorStep.TAP_TAB_BTN = ["TAP_TAB_BTN",1];
co.doubleduck.pinata.core.TutorStep.TAP_TAB_BTN.toString = $estr;
co.doubleduck.pinata.core.TutorStep.TAP_TAB_BTN.__enum__ = co.doubleduck.pinata.core.TutorStep;
co.doubleduck.pinata.core.TutorStep.BUY_FIRST_UPGRADE = ["BUY_FIRST_UPGRADE",2];
co.doubleduck.pinata.core.TutorStep.BUY_FIRST_UPGRADE.toString = $estr;
co.doubleduck.pinata.core.TutorStep.BUY_FIRST_UPGRADE.__enum__ = co.doubleduck.pinata.core.TutorStep;
co.doubleduck.pinata.core.TutorStep.EXIT_SHOP = ["EXIT_SHOP",3];
co.doubleduck.pinata.core.TutorStep.EXIT_SHOP.toString = $estr;
co.doubleduck.pinata.core.TutorStep.EXIT_SHOP.__enum__ = co.doubleduck.pinata.core.TutorStep;
co.doubleduck.pinata.core.TutorStep.ADVANCE_LEVEL = ["ADVANCE_LEVEL",4];
co.doubleduck.pinata.core.TutorStep.ADVANCE_LEVEL.toString = $estr;
co.doubleduck.pinata.core.TutorStep.ADVANCE_LEVEL.__enum__ = co.doubleduck.pinata.core.TutorStep;
co.doubleduck.pinata.core.TutorStep.SHOW_MISSIONS = ["SHOW_MISSIONS",5];
co.doubleduck.pinata.core.TutorStep.SHOW_MISSIONS.toString = $estr;
co.doubleduck.pinata.core.TutorStep.SHOW_MISSIONS.__enum__ = co.doubleduck.pinata.core.TutorStep;
co.doubleduck.pinata.core.TutorStep.CLOSE_MISSIONS = ["CLOSE_MISSIONS",6];
co.doubleduck.pinata.core.TutorStep.CLOSE_MISSIONS.toString = $estr;
co.doubleduck.pinata.core.TutorStep.CLOSE_MISSIONS.__enum__ = co.doubleduck.pinata.core.TutorStep;
co.doubleduck.pinata.core.TutorStep.BUY_FIRST_AUTO = ["BUY_FIRST_AUTO",7];
co.doubleduck.pinata.core.TutorStep.BUY_FIRST_AUTO.toString = $estr;
co.doubleduck.pinata.core.TutorStep.BUY_FIRST_AUTO.__enum__ = co.doubleduck.pinata.core.TutorStep;
co.doubleduck.pinata.core.TutorStep.WORKS_OFFLINE = ["WORKS_OFFLINE",8];
co.doubleduck.pinata.core.TutorStep.WORKS_OFFLINE.toString = $estr;
co.doubleduck.pinata.core.TutorStep.WORKS_OFFLINE.__enum__ = co.doubleduck.pinata.core.TutorStep;
co.doubleduck.pinata.core.TutorStep.DONE_TUTOR = ["DONE_TUTOR",9];
co.doubleduck.pinata.core.TutorStep.DONE_TUTOR.toString = $estr;
co.doubleduck.pinata.core.TutorStep.DONE_TUTOR.__enum__ = co.doubleduck.pinata.core.TutorStep;
co.doubleduck.pinata.core.TutorOverlay = function() {
openfl.display.Sprite.call(this);
var numSaved = co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.TUTOR_STAGE);
if(numSaved != 0) {
this._currStep = co.doubleduck.pinata.core.TutorStep.DONE_TUTOR;
co.doubleduck.pinata.data.Persistence.setInt(co.doubleduck.pinata.data.DataKey.TUTOR_STAGE,-1);
co.doubleduck.pinata.data.Persistence.setString(co.doubleduck.pinata.data.DataKey.TUTOR_STEP,co.doubleduck.pinata.core.TutorStep.DONE_TUTOR[0]);
} else {
var stepSaved = co.doubleduck.pinata.data.Persistence.getString(co.doubleduck.pinata.data.DataKey.TUTOR_STEP);
if(stepSaved == "") stepSaved = Type.getEnumConstructs(co.doubleduck.pinata.core.TutorStep)[0];
this._currStep = Type.createEnum(co.doubleduck.pinata.core.TutorStep,stepSaved);
}
this._isStepShowing = false;
};
$hxClasses["co.doubleduck.pinata.core.TutorOverlay"] = co.doubleduck.pinata.core.TutorOverlay;
co.doubleduck.pinata.core.TutorOverlay.__name__ = ["co","doubleduck","pinata","core","TutorOverlay"];
co.doubleduck.pinata.core.TutorOverlay._tutor = null;
co.doubleduck.pinata.core.TutorOverlay.inst = function() {
if(co.doubleduck.pinata.core.TutorOverlay._tutor == null) co.doubleduck.pinata.core.TutorOverlay._tutor = new co.doubleduck.pinata.core.TutorOverlay();
return co.doubleduck.pinata.core.TutorOverlay._tutor;
};
co.doubleduck.pinata.core.TutorOverlay.__super__ = openfl.display.Sprite;
co.doubleduck.pinata.core.TutorOverlay.prototype = $extend(openfl.display.Sprite.prototype,{
hasPassedStep: function(step) {
return this._currStep == null || this._currStep[1] > step[1];
}
,tryShowStep: function(step,arg) {
var _g = this;
if(step != this._currStep || this._isStepShowing) return false;
this._isStepShowing = false;
switch(step[1]) {
case 0:
this._bubble = new openfl.display.Sprite();
var bbl = co.doubleduck.utils.DDAssets.getImage("images/tutorial/bubble.png");
var handle = arg.handle;
var _g1 = bbl;
_g1.set_x(_g1.get_x() - bbl.get_width() / 2);
var _g2 = bbl;
_g2.set_y(_g2.get_y() - bbl.get_height() / 2);
this._bubble.addChild(bbl);
this._bubble.set_x(co.doubleduck.pinata.Game.getScreenSize().width * 0.8);
this._bubble.set_y(co.doubleduck.pinata.Game.getScreenSize().height - 200);
this._bubble.set_alpha(0);
this.addChild(this._bubble);
co.doubleduck.utils.TweenChain.get(this._bubble).wait(500).tto({ alpha : 1},300).wait(800).call(handle).wait(700).call(function() {
_g.tapHand(new openfl.geom.Point(co.doubleduck.pinata.Game.getScreenSize().width * 0.6,co.doubleduck.pinata.Game.getScreenSize().height * 0.35));
});
this.jiggleThat(this._bubble,0.03,3000);
this._isStepShowing = true;
break;
case 1:
this._blockOverlay = this.getOverlay(new openfl.geom.Point(20,co.doubleduck.pinata.Game.getScreenSize().height / 2 - 43));
this._blockOverlay.set_alpha(0.01);
this.addChild(this._blockOverlay);
this.tapHand(new openfl.geom.Point(25,co.doubleduck.pinata.Game.getScreenSize().height * 0.5 - 25));
this._isStepShowing = true;
break;
case 2:
this._blockOverlay = this.getOverlay(new openfl.geom.Point(co.doubleduck.pinata.Game.getScreenSize().width * 0.8,122));
this._blockOverlay.set_alpha(0.01);
this.addChild(this._blockOverlay);
this._msg = new openfl.display.Sprite();
var msg = co.doubleduck.utils.DDAssets.getImage("images/tutorial/increase_hits.png");
this._msg.addChild(msg);
this._msg.set_x(co.doubleduck.pinata.Game.getScreenSize().width / 2 - this._msg.get_width() / 2 - 15);
this._msg.set_y(140);
this._msg.mouseEnabled = this._msg.mouseChildren = false;
this.addChild(this._msg);
this.hoverThat(this._msg,1200);
this.tapHand(new openfl.geom.Point(co.doubleduck.pinata.Game.getScreenSize().width * 0.91,125));
this._isStepShowing = true;
break;
case 3:
this._blockOverlay = this.getOverlay(new openfl.geom.Point(90,20));
this._blockOverlay.set_alpha(0.01);
this.addChild(this._blockOverlay);
this.tapHand(new openfl.geom.Point(140,30));
this._isStepShowing = true;
break;
case 4:
this._blockOverlay = this.getOverlay(new openfl.geom.Point(co.doubleduck.pinata.Game.getScreenSize().width * 0.42,co.doubleduck.pinata.Game.getScreenSize().height - 40));
this._blockOverlay.set_alpha(0.01);
this.addChild(this._blockOverlay);
this._msg = new openfl.display.Sprite();
var msg1 = co.doubleduck.utils.DDAssets.getImage("images/tutorial/next_level.png");
this._msg.addChild(msg1);
this._msg.set_x(co.doubleduck.pinata.Game.getScreenSize().width / 2 - this._msg.get_width() / 2);
this._msg.set_y(co.doubleduck.pinata.Game.getScreenSize().height - this._msg.get_height() - 60);
this._msg.mouseEnabled = this._msg.mouseChildren = false;
this.addChild(this._msg);
this.hoverThat(this._msg,1200);
this.tapHand(new openfl.geom.Point(co.doubleduck.pinata.Game.getScreenSize().width * 0.5,co.doubleduck.pinata.Game.getScreenSize().height - 50));
this._isStepShowing = true;
break;
case 5:
this._blockOverlay = this.getOverlay(new openfl.geom.Point(20,co.doubleduck.pinata.Game.getScreenSize().height / 2 + 43));
this._blockOverlay.set_alpha(0.01);
this.addChild(this._blockOverlay);
this.tapHand(new openfl.geom.Point(25,co.doubleduck.pinata.Game.getScreenSize().height * 0.5 + 55));
this._isStepShowing = true;
break;
case 6:
this._blockOverlay = this.getOverlay(new openfl.geom.Point(90,20));
this._blockOverlay.set_alpha(0.01);
this.addChild(this._blockOverlay);
this._isStepShowing = true;
break;
case 7:
this._blockOverlay = this.getOverlay(new openfl.geom.Point(co.doubleduck.pinata.Game.getScreenSize().width * 0.8,215));
this._blockOverlay.set_alpha(0.01);
this.addChild(this._blockOverlay);
this._msg = new openfl.display.Sprite();
var msg2 = co.doubleduck.utils.DDAssets.getImage("images/tutorial/auto_hit.png");
this._msg.addChild(msg2);
this._msg.set_x(co.doubleduck.pinata.Game.getScreenSize().width / 2 - this._msg.get_width() / 2);
this._msg.set_y(230);
this._msg.mouseEnabled = this._msg.mouseChildren = false;
this.addChild(this._msg);
this.hoverThat(this._msg,1200);
this._isStepShowing = true;
break;
case 8:
this._blockOverlay = new openfl.display.Sprite();
this._blockOverlay.get_graphics().beginFill(0);
this._blockOverlay.get_graphics().drawRect(0,0,co.doubleduck.pinata.Game.getScreenSize().width,co.doubleduck.pinata.Game.getScreenSize().height);
this._blockOverlay.get_graphics().endFill();
this._blockOverlay.set_alpha(0.01);
this.addChild(this._blockOverlay);
co.doubleduck.utils.TweenChain.get(this._blockOverlay).tto({ alpha : 0.7},150);
this._msg = new openfl.display.Sprite();
var msg3 = co.doubleduck.utils.DDAssets.getImage("images/tutorial/away.png");
msg3.set_x(-msg3.get_width() / 2);
msg3.set_y(-msg3.get_height() / 2);
this._msg.addChild(msg3);
var btn = new co.doubleduck.utils.Button(co.doubleduck.utils.DDAssets.getRawImage("images/ui/modal_away/btn_ok.png"));
btn.set_y(msg3.get_height() * 0.3);
btn.addEventListener("BUTTON_ACT_EVENT",$bind(this,this.handleAwayOk));
btn.set_alpha(0);
co.doubleduck.utils.TweenChain.get(btn).wait(800).tto({ alpha : 1},100);
this._msg.addChild(btn);
this._msg.set_x(co.doubleduck.pinata.Game.getScreenSize().width / 2);
this._msg.set_y(co.doubleduck.pinata.Game.getScreenSize().height / 2);
this.addChild(this._msg);
this._isStepShowing = true;
break;
case 9:
break;
}
if(this._isStepShowing) {
var data = { };
data.tutorStep = this._currStep[0];
data.candyCount = co.doubleduck.pinata.meta.Stats.getPCandies().toFullString();
com.funtomic.GameOps.reportEvent("tutorStepStart",data);
}
return this._isStepShowing;
}
,handleAwayOk: function(e) {
(js.Boot.__cast(e.target , co.doubleduck.utils.Button)).removeEventListener("BUTTON_ACT_EVENT",$bind(this,this.handleAwayOk));
co.doubleduck.pinata.core.TutorOverlay.inst().actedOnStep(co.doubleduck.pinata.core.TutorStep.WORKS_OFFLINE);
}
,tapHand: function(pos) {
if(this._hand == null) {
this._hand = new openfl.display.Sprite();
var hand = co.doubleduck.utils.DDAssets.getImage("images/tutorial/hand.png");
var _g = hand;
_g.set_x(_g.get_x() - hand.get_width() * 0.35);
var _g1 = hand;
_g1.set_y(_g1.get_y() - hand.get_height() * 0.1);
this._hand.set_visible(false);
this._hand.addChild(hand);
this.addChild(this._hand);
}
if(!this._hand.get_visible()) {
this._hand.set_alpha(0.01);
this._hand.set_visible(true);
this._hand.mouseEnabled = this._hand.mouseChildren = false;
co.doubleduck.utils.TweenChain.get(this._hand).tto({ alpha : 1},250);
}
this._hand.set_x(pos.x);
this._hand.set_y(pos.y);
this._hand.set_scaleX(this._hand.set_scaleY(1));
co.doubleduck.utils.TweenChain.get(this._hand).tto({ scaleX : 0.8, scaleY : 0.8},200,motion.easing.Sine.get_easeIn()).tto({ scaleX : 1, scaleY : 1},300,motion.easing.Sine.get_easeOut()).call($bind(this,this.tapHand),[pos]);
}
,jiggleThat: function(obj,factor,duration) {
obj.set_scaleX(obj.set_scaleY(1));
var quart = Math.floor(duration / 4);
co.doubleduck.utils.TweenChain.get(obj).tto({ scaleX : 1 + factor, scaleY : 1 - factor},quart,motion.easing.Sine.get_easeOut()).tto({ scaleX : 1 - factor, scaleY : 1 + factor},quart * 2,motion.easing.Sine.get_easeInOut()).tto({ scaleX : 1, scaleY : 1},quart,motion.easing.Sine.get_easeIn()).call($bind(this,this.jiggleThat),[obj,factor,duration]);
}
,hoverThat: function(obj,duration) {
var half = Math.floor(duration / 2);
co.doubleduck.utils.TweenChain.get(obj).tto({ y : obj.get_y() + 10},half,motion.easing.Sine.get_easeInOut()).tto({ y : obj.get_y()},half,motion.easing.Sine.get_easeInOut()).wait(30).call($bind(this,this.hoverThat),[obj,duration]);
}
,actedOnStep: function(step) {
if(!(step == this._currStep && this._isStepShowing)) return false;
var data = { };
data.tutorStep = this._currStep[0];
data.candyCount = co.doubleduck.pinata.meta.Stats.getPCandies().toFullString();
com.funtomic.GameOps.reportEvent("tutorStepFinish",data);
switch(step[1]) {
case 0:
co.doubleduck.utils.TweenChain.removeTweens(this._bubble);
this.removeChild(this._bubble);
if(this._hand != null) {
co.doubleduck.utils.TweenChain.removeTweens(this._hand);
this._hand.set_visible(false);
}
break;
case 1:
co.doubleduck.utils.TweenChain.removeTweens(this._blockOverlay);
this.removeChild(this._blockOverlay);
co.doubleduck.utils.TweenChain.removeTweens(this._hand);
this._hand.set_visible(false);
break;
case 2:
co.doubleduck.utils.TweenChain.removeTweens(this._blockOverlay);
this.removeChild(this._blockOverlay);
co.doubleduck.utils.TweenChain.removeTweens(this._msg);
co.doubleduck.utils.TweenChain.get(this._msg).tto({ alpha : 0},150).call($bind(this,this.removeChild),[this._msg]);
this._msg = null;
co.doubleduck.utils.TweenChain.removeTweens(this._hand);
this._hand.set_visible(false);
break;
case 3:
co.doubleduck.utils.TweenChain.removeTweens(this._blockOverlay);
this.removeChild(this._blockOverlay);
co.doubleduck.utils.TweenChain.removeTweens(this._hand);
this._hand.set_visible(false);
break;
case 4:
co.doubleduck.utils.TweenChain.removeTweens(this._blockOverlay);
this.removeChild(this._blockOverlay);
co.doubleduck.utils.TweenChain.get(this._msg).tto({ alpha : 0},150).call($bind(this,this.removeChild),[this._msg]);
this._msg = null;
co.doubleduck.utils.TweenChain.removeTweens(this._hand);
this._hand.set_visible(false);
break;
case 5:
co.doubleduck.utils.TweenChain.removeTweens(this._blockOverlay);
this.removeChild(this._blockOverlay);
co.doubleduck.utils.TweenChain.removeTweens(this._hand);
this._hand.set_visible(false);
break;
case 6:
co.doubleduck.utils.TweenChain.removeTweens(this._blockOverlay);
this.removeChild(this._blockOverlay);
break;
case 7:
co.doubleduck.utils.TweenChain.removeTweens(this._blockOverlay);
this.removeChild(this._blockOverlay);
co.doubleduck.utils.TweenChain.removeTweens(this._msg);
co.doubleduck.utils.TweenChain.get(this._msg).tto({ alpha : 0},150).call($bind(this,this.removeChild),[this._msg]);
this._msg = null;
break;
case 8:
co.doubleduck.utils.TweenChain.removeTweens(this._blockOverlay);
this.removeChild(this._blockOverlay);
co.doubleduck.utils.TweenChain.removeTweens(this._msg);
co.doubleduck.utils.TweenChain.get(this._msg).tto({ alpha : 0},150).call($bind(this,this.removeChild),[this._msg]);
this._msg = null;
break;
case 9:
break;
}
this._isStepShowing = false;
this._currStep = Type.createEnumIndex(co.doubleduck.pinata.core.TutorStep,this._currStep[1] + 1);
co.doubleduck.pinata.data.Persistence.setString(co.doubleduck.pinata.data.DataKey.TUTOR_STEP,this._currStep[0]);
return true;
}
,getOverlay: function(pos,rad) {
if(rad == null) rad = 40;
var over = new openfl.display.Sprite();
var scr = co.doubleduck.pinata.Game.getScreenSize();
var box;
box = new openfl.display.Sprite();
box.get_graphics().beginFill(8947848);
box.get_graphics().drawRect(0,0,scr.width,pos.y - rad);
box.get_graphics().endFill();
over.addChild(box);
box = new openfl.display.Sprite();
box.get_graphics().beginFill(8947848);
box.get_graphics().drawRect(0,pos.y - rad,pos.x - rad,2 * rad);
box.get_graphics().endFill();
over.addChild(box);
box = new openfl.display.Sprite();
box.get_graphics().beginFill(8947848);
box.get_graphics().drawRect(pos.x + rad,pos.y - rad,scr.width - pos.x - rad,2 * rad);
box.get_graphics().endFill();
over.addChild(box);
box = new openfl.display.Sprite();
box.get_graphics().beginFill(8947848);
box.get_graphics().drawRect(0,pos.y + rad,scr.width,scr.height - pos.y - rad);
box.get_graphics().endFill();
over.addChild(box);
over.mouseEnabled = over.mouseChildren = true;
return over;
}
,__class__: co.doubleduck.pinata.core.TutorOverlay
});
co.doubleduck.pinata.core.missions = {};
co.doubleduck.pinata.core.missions.MissionItem = function(packId,missionInd) {
openfl.display.Sprite.call(this);
this._done = false;
this._data = co.doubleduck.pinata.data.GameplayDB.getMissionData(packId,missionInd);
this._type = Type.createEnum(co.doubleduck.pinata.core.missions.MissionType,(js.Boot.__cast(this._data.id , String)).toUpperCase());
this._back = co.doubleduck.utils.DDAssets.getImage("images/missions/mission_bg.png");
var _g = this._back;
_g.set_y(_g.get_y() - this._back.get_height() / 2);
this.addChild(this._back);
this._checkmark = new co.doubleduck.utils.SimpleAnimSprite("images/missions/checkmark.png",1,4,[0,1,2,3],false);
this._checkmark.setAnimFPS(24);
this._checkmark.stopAnim();
var _g1 = this._checkmark;
_g1.set_y(_g1.get_y() - this._checkmark.get_height() / 2);
this._checkmark.set_x(10);
this._checkmark.set_visible(false);
this.addChild(this._checkmark);
var descStr = this._data.desc;
var parts = descStr.split("#");
var displayVal;
var _g2 = this._type;
switch(_g2[1]) {
case 0:case 3:
displayVal = co.doubleduck.pinata.meta.BigInt.fromString(this._data.value).toString();
break;
case 1:case 4:
displayVal = this._data.value;
break;
case 2:
displayVal = "";
break;
}
descStr = parts[0] + displayVal + parts[1];
this._desc = co.doubleduck.utils.Fonter.getString(descStr,"images/fonts/purple/");
this._desc.set_x(66 + this._desc.get_width() / 2);
if(this._type == co.doubleduck.pinata.core.missions.MissionType.GET_TOOL) {
var toolName = co.doubleduck.utils.DDAssets.getImage("images/tools_menu/tools/" + Std.string(this._data.value) + "/name.png");
var _g3 = toolName;
_g3.set_y(_g3.get_y() - toolName.get_height() / 2);
toolName.set_x(this._desc.get_width() / 2);
this._desc.addChild(toolName);
}
this.addChild(this._desc);
if(this.hasProgBar()) {
this._desc.set_y(-13);
this._prog = new co.doubleduck.utils.ProgBar(co.doubleduck.utils.DDAssets.getImage("images/missions/bar_bg.png"),co.doubleduck.utils.DDAssets.getImage("images/missions/bar_fill.png"));
this._prog.set_x(57);
this._prog.set_y(-2);
this._prog.set_maskFrom(0.02);
this._prog.set_maskTo(0.97);
this._prog.setFillPerc(this.getCompletePerc());
this.addChild(this._prog);
}
};
$hxClasses["co.doubleduck.pinata.core.missions.MissionItem"] = co.doubleduck.pinata.core.missions.MissionItem;
co.doubleduck.pinata.core.missions.MissionItem.__name__ = ["co","doubleduck","pinata","core","missions","MissionItem"];
co.doubleduck.pinata.core.missions.MissionItem.__super__ = openfl.display.Sprite;
co.doubleduck.pinata.core.missions.MissionItem.prototype = $extend(openfl.display.Sprite.prototype,{
getType: function() {
return this._type;
}
,updateProgress: function(andNotify) {
if(andNotify == null) andNotify = true;
var perc = this.getCompletePerc();
if(this.hasProgBar()) this._prog.setFillPerc(perc,150);
if(andNotify && !this._done && perc >= 1) this.dispatchEvent(new openfl.events.Event("ReadyDoneEvent"));
}
,markIfDone: function() {
if(this.hasProgBar()) this._prog.setFillPerc(this.getCompletePerc());
if(this.getCompletePerc() >= 1) {
this._done = true;
this._checkmark.set_visible(true);
this._checkmark.replayAnim();
this._checkmark.update(0);
co.doubleduck.utils.TweenChain.get(this._checkmark).wait(500).call($bind(this,this.dispatchEvent),[new openfl.events.Event("DoneEvent")]);
} else this.dispatchEvent(new openfl.events.Event("OngoingEvent"));
}
,hasProgBar: function() {
if(this._type == co.doubleduck.pinata.core.missions.MissionType.GET_TOOL) return false;
return true;
}
,getCompletePerc: function() {
var res;
var _g = this._type;
switch(_g[1]) {
case 0:
var curr = co.doubleduck.pinata.meta.Stats.getPCandies();
var max = co.doubleduck.pinata.meta.BigInt.fromString(this._data.value);
if(co.doubleduck.pinata.meta.BigInt.isEqual(curr,max) || co.doubleduck.pinata.meta.BigInt.isGT(curr,max)) res = 1; else res = Math.min(0.99,co.doubleduck.pinata.meta.BigInt.roughDiv(curr,max));
break;
case 1:
res = co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.PINATAS_BEAT_MISSION) / Std["int"](this._data.value);
break;
case 2:
if(co.doubleduck.pinata.meta.Stats.getToolLevel(this._data.value) > 0) res = 1; else res = 0;
break;
case 3:
var curr1 = co.doubleduck.pinata.meta.Stats.getHPS();
var max1 = co.doubleduck.pinata.meta.BigInt.fromString(this._data.value);
if(co.doubleduck.pinata.meta.BigInt.isEqual(curr1,max1) || co.doubleduck.pinata.meta.BigInt.isGT(curr1,max1)) res = 1; else res = Math.min(0.99,co.doubleduck.pinata.meta.BigInt.roughDiv(curr1,max1));
break;
case 4:
res = co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.UNLOCKED_LEVEL) / Std.parseInt(this._data.value);
break;
}
res = Math.min(1,Math.max(0,res));
return res;
}
,__class__: co.doubleduck.pinata.core.missions.MissionItem
});
co.doubleduck.pinata.core.missions.MissionType = $hxClasses["co.doubleduck.pinata.core.missions.MissionType"] = { __ename__ : ["co","doubleduck","pinata","core","missions","MissionType"], __constructs__ : ["HOLD_CANDIES","BEAT_PINATAS","GET_TOOL","REACH_HPS","REACH_LEVEL"] };
co.doubleduck.pinata.core.missions.MissionType.HOLD_CANDIES = ["HOLD_CANDIES",0];
co.doubleduck.pinata.core.missions.MissionType.HOLD_CANDIES.toString = $estr;
co.doubleduck.pinata.core.missions.MissionType.HOLD_CANDIES.__enum__ = co.doubleduck.pinata.core.missions.MissionType;
co.doubleduck.pinata.core.missions.MissionType.BEAT_PINATAS = ["BEAT_PINATAS",1];
co.doubleduck.pinata.core.missions.MissionType.BEAT_PINATAS.toString = $estr;
co.doubleduck.pinata.core.missions.MissionType.BEAT_PINATAS.__enum__ = co.doubleduck.pinata.core.missions.MissionType;
co.doubleduck.pinata.core.missions.MissionType.GET_TOOL = ["GET_TOOL",2];
co.doubleduck.pinata.core.missions.MissionType.GET_TOOL.toString = $estr;
co.doubleduck.pinata.core.missions.MissionType.GET_TOOL.__enum__ = co.doubleduck.pinata.core.missions.MissionType;
co.doubleduck.pinata.core.missions.MissionType.REACH_HPS = ["REACH_HPS",3];
co.doubleduck.pinata.core.missions.MissionType.REACH_HPS.toString = $estr;
co.doubleduck.pinata.core.missions.MissionType.REACH_HPS.__enum__ = co.doubleduck.pinata.core.missions.MissionType;
co.doubleduck.pinata.core.missions.MissionType.REACH_LEVEL = ["REACH_LEVEL",4];
co.doubleduck.pinata.core.missions.MissionType.REACH_LEVEL.toString = $estr;
co.doubleduck.pinata.core.missions.MissionType.REACH_LEVEL.__enum__ = co.doubleduck.pinata.core.missions.MissionType;
co.doubleduck.pinata.core.missions.MissionScr = function() {
openfl.display.Sprite.call(this);
this.noModalShowing = true;
this.regLevelShowing = true;
this._isOpened = false;
this._midAnim = false;
this._data = co.doubleduck.pinata.data.GameplayDB.getMissionPack(co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.CURR_MISSION_PACK));
this._srcPaint = co.doubleduck.utils.DDAssets.getRawImage("images/missions/paintings/paint" + Std["int"](this._data.pinataId) + ".jpg");
this._overlay = new openfl.display.Sprite();
this.addChild(this._overlay);
this._tabBtn = new co.doubleduck.utils.Button(co.doubleduck.utils.DDAssets.getRawImage("images/ui/btn_mission.png"));
this._tabBtn.set_x(this._tabBtn.get_width() / 2 - 2);
this._tabBtn.set_y(co.doubleduck.pinata.Game.getScreenSize().height / 2 + 45);
this._tabBtn.addEventListener("BUTTON_ACT_EVENT",$bind(this,this.handleTabBtn));
this.addChild(this._tabBtn);
this._scrBox = new openfl.display.Sprite();
this.addChild(this._scrBox);
this._back = co.doubleduck.utils.DDAssets.getImage("images/missions/bg.png");
var _g = this._scrBox;
_g.set_x(_g.get_x() - this._back.get_width());
this._backBtn = new co.doubleduck.utils.Button(co.doubleduck.utils.DDAssets.getRawImage("images/missions/btn_back.png"));
this._backBtn.set_x(this._backBtn.get_width() / 2 + 20);
this._backBtn.set_y(this._backBtn.get_height() / 2 + 5);
this._backBtn.addEventListener("BUTTON_ACT_EVENT",$bind(this,this.handleBackBtn));
this._backBtn.enabled = false;
this._painting = new openfl.display.Sprite();
var piecesGot = co.doubleduck.pinata.data.Persistence.getString(co.doubleduck.pinata.data.DataKey.CURR_PIECES_GOT).split(",");
if(piecesGot.length > 0 && piecesGot[0] != "") {
var _g1 = 0;
while(_g1 < piecesGot.length) {
var piece = piecesGot[_g1];
++_g1;
var pcImg = this.getPiece(Std.parseInt(piece));
this._painting.addChild(pcImg);
}
}
this._painting.set_x(this._back.get_width() / 2 - this._srcPaint.width / 2);
this._painting.set_y(this._back.get_height() / 2 - this._srcPaint.height / 2 - 8);
this._overlay.get_graphics().beginFill(0);
this._overlay.get_graphics().drawRect(0,0,co.doubleduck.pinata.Game.getScreenSize().width + this._back.get_width(),co.doubleduck.pinata.Game.getScreenSize().height);
this._overlay.get_graphics().endFill();
this._overlay.set_x(this._scrBox.get_x());
this._overlay.set_visible(false);
this.setupMission();
this._scrBox.addChild(this._back);
this._scrBox.addChild(this._painting);
this._scrBox.addChild(this._backBtn);
this._scrBox.addChild(this._currMission);
co.doubleduck.pinata.meta.Stats.addListener("UpdateCandiesEvent",$bind(this,this.handleStatsEvent));
co.doubleduck.pinata.meta.Stats.addListener("UpdateToolEvent",$bind(this,this.handleStatsEvent));
co.doubleduck.pinata.meta.Stats.addListener("UpdateToolEvent",$bind(this,this.handleStatsEvent));
co.doubleduck.pinata.meta.Stats.addListener("UpdateHPSEvent",$bind(this,this.handleStatsEvent));
co.doubleduck.pinata.meta.Stats.addListener("UpdateToolEvent",$bind(this,this.handleStatsEvent));
};
$hxClasses["co.doubleduck.pinata.core.missions.MissionScr"] = co.doubleduck.pinata.core.missions.MissionScr;
co.doubleduck.pinata.core.missions.MissionScr.__name__ = ["co","doubleduck","pinata","core","missions","MissionScr"];
co.doubleduck.pinata.core.missions.MissionScr.__super__ = openfl.display.Sprite;
co.doubleduck.pinata.core.missions.MissionScr.prototype = $extend(openfl.display.Sprite.prototype,{
setupMission: function() {
this._currMission = new co.doubleduck.pinata.core.missions.MissionItem(co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.CURR_MISSION_PACK),co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.CURR_MISSION_IND));
this._currMission.addEventListener("ReadyDoneEvent",$bind(this,this.handleItem));
this._currMission.set_x(this._back.get_width() / 2 - this._currMission.get_width() / 2);
this._currMission.set_y(this._back.get_height() - 45);
}
,handleStatsEvent: function(e) {
if(!co.doubleduck.pinata.core.TutorOverlay.inst().hasPassedStep(co.doubleduck.pinata.core.TutorStep.SHOW_MISSIONS)) return;
if(!this.noModalShowing || !this.regLevelShowing) return;
if(this._currMission == null) return;
if(this._currMission.getType() == co.doubleduck.pinata.core.missions.MissionType.HOLD_CANDIES && e.type == "UpdateCandiesEvent" || this._currMission.getType() == co.doubleduck.pinata.core.missions.MissionType.BEAT_PINATAS && e.type == "UpdateToolEvent" || this._currMission.getType() == co.doubleduck.pinata.core.missions.MissionType.GET_TOOL && e.type == "UpdateToolEvent" || this._currMission.getType() == co.doubleduck.pinata.core.missions.MissionType.REACH_HPS && e.type == "UpdateHPSEvent" || this._currMission.getType() == co.doubleduck.pinata.core.missions.MissionType.REACH_LEVEL && e.type == "UpdateToolEvent") this._currMission.updateProgress();
}
,animOpen: function(openType) {
var _g = this;
if(this._isOpened) return;
this._isOpened = true;
this._midAnim = true;
co.doubleduck.utils.SoundMgr.playSound("menu_open");
this.dispatchEvent(new openfl.events.Event(openfl.events.Event.OPEN));
this._tabBtn.enabled = false;
if(openType == "firstShow") {
var _g1 = this._currMission;
_g1.set_x(_g1.get_x() - co.doubleduck.pinata.Game.getScreenSize().width);
co.doubleduck.pinata.data.Persistence.setInt(co.doubleduck.pinata.data.DataKey.PINATAS_BEAT_MISSION,0);
}
co.doubleduck.utils.TweenChain.removeTweens(this._overlay);
this._overlay.set_alpha(0);
this._overlay.set_visible(true);
co.doubleduck.utils.TweenChain.get(this._overlay).tto({ alpha : 0.65},300);
this._backBtn.set_alpha(0);
this._backBtn.enabled = false;
this._currMission.addEventListener("DoneEvent",$bind(this,this.handleItem));
this._currMission.addEventListener("OngoingEvent",$bind(this,this.handleItem));
co.doubleduck.utils.TweenChain.removeTweens(this);
co.doubleduck.utils.TweenChain.get(this).tto({ x : -this._scrBox.get_x()},300,motion.easing.Sine.get_easeInOut()).wait(400).call(function() {
if(openType == "firstShow") co.doubleduck.utils.TweenChain.get(_g._currMission).tto({ x : _g._currMission.get_x() + co.doubleduck.pinata.Game.getScreenSize().width},300,motion.easing.Sine.get_easeOut()).wait(400).call(($_=_g._currMission,$bind($_,$_.markIfDone))); else _g._currMission.markIfDone();
});
}
,handleTabBtn: function(e) {
if(co.doubleduck.pinata.core.TutorOverlay.inst().hasPassedStep(co.doubleduck.pinata.core.TutorStep.CLOSE_MISSIONS)) this.animOpen(""); else {
co.doubleduck.pinata.core.TutorOverlay.inst().actedOnStep(co.doubleduck.pinata.core.TutorStep.SHOW_MISSIONS);
this.animOpen("firstShow");
}
}
,handleItem: function(e) {
var _g = this;
if(e.type == "ReadyDoneEvent") {
this._currMission.removeEventListener("ReadyDoneEvent",$bind(this,this.handleItem));
if(this._isOpened) {
if(!this._midAnim) {
this._backBtn.set_alpha(0);
this._backBtn.enabled = false;
this._currMission.addEventListener("DoneEvent",$bind(this,this.handleItem));
this._currMission.addEventListener("OngoingEvent",$bind(this,this.handleItem));
this._currMission.markIfDone();
}
} else {
if(this._midAnim) {
co.doubleduck.utils.TweenChain.removeTweens(this._overlay);
co.doubleduck.utils.TweenChain.removeTweens(this);
}
this.animOpen("");
}
}
if(e.type == "DoneEvent") {
this._currMission.removeEventListener("ReadyDoneEvent",$bind(this,this.handleItem));
this._currMission.removeEventListener("DoneEvent",$bind(this,this.handleItem));
this._currMission.removeEventListener("OngoingEvent",$bind(this,this.handleItem));
var piecesLeft = co.doubleduck.pinata.data.Persistence.getString(co.doubleduck.pinata.data.DataKey.CURR_PIECES_LEFT).split(",");
var posInd = Std.random(piecesLeft.length);
var piece = Std.parseInt(piecesLeft.splice(posInd,1)[0]);
co.doubleduck.pinata.data.Persistence.setString(co.doubleduck.pinata.data.DataKey.CURR_PIECES_LEFT,piecesLeft.join(","));
var piecesGot = co.doubleduck.pinata.data.Persistence.getString(co.doubleduck.pinata.data.DataKey.CURR_PIECES_GOT).split(",");
if(piecesGot.length == 1 && piecesGot[0] == "") piecesGot.pop();
piecesGot.push("" + piece);
co.doubleduck.pinata.data.Persistence.setString(co.doubleduck.pinata.data.DataKey.CURR_PIECES_GOT,piecesGot.join(","));
co.doubleduck.utils.TweenChain.removeTweens(this._painting);
this._painting.set_alpha(1);
var newPiece = this.getPiece(piece);
newPiece.set_alpha(0);
newPiece.set_scaleX(newPiece.set_scaleY(1.7));
this._painting.addChild(newPiece);
co.doubleduck.utils.TweenChain.get(newPiece).tto({ alpha : 1, scaleX : 1, scaleY : 1},600,motion.easing.Sine.get_easeIn());
co.doubleduck.utils.TweenChain.get(this._currMission).wait(1000).tto({ x : this._currMission.get_x() + co.doubleduck.pinata.Game.getScreenSize().width},300,motion.easing.Sine.get_easeIn()).call(($_=this._scrBox,$bind($_,$_.removeChild)),[this._currMission]);
this._currMission = null;
var data = { };
data.missionInd = co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.CURR_MISSION_IND);
data.missionPackInd = co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.CURR_MISSION_PACK);
data.level = co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.UNLOCKED_LEVEL);
data.currLevel = co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.ACTIVE_LEVEL);
data.candyCount = co.doubleduck.pinata.meta.Stats.getPCandies().toFullString();
data.killCount = co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.PINATA_KILL_COUNT);
data.toolsState = co.doubleduck.pinata.data.Persistence.getString(co.doubleduck.pinata.data.DataKey.TOOLS_STATE);
data.currTapHits = co.doubleduck.pinata.meta.Stats.getHitVal().toFullString();
data.currHPS = co.doubleduck.pinata.meta.Stats.getHPS().toFullString();
com.funtomic.GameOps.reportEvent("mission_done",data);
var missionInd = co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.CURR_MISSION_IND);
if(missionInd < 8) {
co.doubleduck.pinata.data.Persistence.setInt(co.doubleduck.pinata.data.DataKey.CURR_MISSION_IND,missionInd + 1);
this.loadNextMission(1200);
} else {
co.doubleduck.pinata.data.Persistence.setInt(co.doubleduck.pinata.data.DataKey.CURR_MISSION_IND,0);
co.doubleduck.pinata.data.Persistence.setString(co.doubleduck.pinata.data.DataKey.CURR_PIECES_LEFT,"0,1,2,3,4,5,6,7,8");
co.doubleduck.pinata.data.Persistence.setString(co.doubleduck.pinata.data.DataKey.CURR_PIECES_GOT,"");
var packInd = co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.CURR_MISSION_PACK);
if(co.doubleduck.pinata.data.GameplayDB.getMissionPack(packInd + 1) == null) {
} else {
co.doubleduck.pinata.data.Persistence.setInt(co.doubleduck.pinata.data.DataKey.CURR_MISSION_PACK,packInd + 1);
var pData = { };
pData.type = "mission";
pData.pinId = Std["int"](this._data.pinataId);
pData.pinReward = co.doubleduck.pinata.meta.BigInt.fromString(this._data.reward);
pData.posY = this._painting.get_y() + this._srcPaint.height / 2;
this.dispatchEvent(new co.doubleduck.utils.DynamicEvent("WonPinataEvent",pData));
co.doubleduck.utils.TweenChain.get(this._back).wait(1400).tto({ alpha : 0},350);
co.doubleduck.utils.TweenChain.get(this._overlay).wait(1400).tto({ alpha : 0.01},350);
co.doubleduck.utils.TweenChain.get(this._painting).wait(1600).call(co.doubleduck.utils.TweenAnimator.shake,[this._painting,3,8,20]).wait(200).tto({ alpha : 0},600).wait(50).call(function() {
while(_g._painting.get_numChildren() > 0) _g._painting.removeChildAt(0);
});
}
}
}
if(e.type == "OngoingEvent") {
this._currMission.removeEventListener("DoneEvent",$bind(this,this.handleItem));
this._currMission.removeEventListener("OngoingEvent",$bind(this,this.handleItem));
co.doubleduck.pinata.core.TutorOverlay.inst().tryShowStep(co.doubleduck.pinata.core.TutorStep.CLOSE_MISSIONS);
co.doubleduck.utils.TweenChain.get(this._backBtn).tto({ alpha : 1},200).call(function() {
_g._backBtn.enabled = true;
_g._midAnim = false;
});
}
}
,loadNextMission: function(delay) {
co.doubleduck.pinata.data.Persistence.setInt(co.doubleduck.pinata.data.DataKey.PINATAS_BEAT_MISSION,0);
this.setupMission();
var _g = this._currMission;
_g.set_x(_g.get_x() - co.doubleduck.pinata.Game.getScreenSize().width);
this._scrBox.addChild(this._currMission);
this._currMission.addEventListener("DoneEvent",$bind(this,this.handleItem));
this._currMission.addEventListener("OngoingEvent",$bind(this,this.handleItem));
co.doubleduck.utils.TweenChain.get(this._currMission).wait(delay + 10).tto({ x : this._currMission.get_x() + co.doubleduck.pinata.Game.getScreenSize().width},300,motion.easing.Sine.get_easeOut()).wait(400).call(($_=this._currMission,$bind($_,$_.markIfDone)));
}
,getPiece: function(ind) {
var rect = new openfl.geom.Rectangle();
rect.width = Math.floor(this._srcPaint.width / 3);
rect.height = Math.floor(this._srcPaint.height / 3);
rect.x = ind % 3 * rect.width;
rect.y = Math.floor(ind / 3) * rect.height;
var newPiece = new openfl.display.BitmapData(Math.floor(rect.width),Math.floor(rect.height));
newPiece.copyPixels(this._srcPaint,rect,new openfl.geom.Point(0,0));
var piece = new openfl.display.Bitmap(newPiece);
var _g = piece;
_g.set_x(_g.get_x() - rect.width / 2);
var _g1 = piece;
_g1.set_y(_g1.get_y() - rect.height / 2);
var spr = new openfl.display.Sprite();
spr.addChild(piece);
spr.set_x(rect.x + rect.width / 2);
spr.set_y(rect.y + rect.height / 2);
return spr;
}
,reshowNewPack: function() {
co.doubleduck.utils.TweenChain.get(this._overlay).tto({ alpha : 0.65},250);
co.doubleduck.utils.TweenChain.get(this._back).tto({ alpha : 1},150).call($bind(this,this.loadNextMission),[200]);
}
,handleBackBtn: function(e) {
var _g = this;
if(!this._isOpened) return;
this._isOpened = false;
this._midAnim = true;
co.doubleduck.utils.SoundMgr.playSound("menu_open");
co.doubleduck.pinata.core.TutorOverlay.inst().actedOnStep(co.doubleduck.pinata.core.TutorStep.CLOSE_MISSIONS);
this.dispatchEvent(new openfl.events.Event(openfl.events.Event.CLOSE));
this._backBtn.enabled = false;
co.doubleduck.utils.TweenChain.removeTweens(this._overlay);
co.doubleduck.utils.TweenChain.get(this._overlay).tto({ alpha : 0},300);
co.doubleduck.utils.TweenChain.removeTweens(this);
co.doubleduck.utils.TweenChain.get(this).tto({ x : 0},300,motion.easing.Sine.get_easeInOut()).call(function() {
_g._overlay.set_visible(false);
_g._tabBtn.enabled = true;
_g._midAnim = false;
});
}
,__class__: co.doubleduck.pinata.core.missions.MissionScr
});
co.doubleduck.pinata.core.pinatas = {};
co.doubleduck.pinata.core.pinatas.Pinata = function() {
openfl.display.Sprite.call(this);
this._hittable = false;
var slashFactor = 0.45;
this._slashRange = new openfl.geom.Rectangle(this._body.get_x() - this._body.get_width() * slashFactor * 0.5,this._body.get_y() - this._body.get_height() * slashFactor * 0.5,this._body.get_width() * slashFactor,this._body.get_height() * slashFactor);
this._swipeRadSq = co.doubleduck.pinata.Game.getScreenSize().width * 0.17;
this._swipeRadSq *= this._swipeRadSq;
this._swipeInPos = null;
this._swipeWasOut = false;
this._tapBox = new openfl.display.Sprite();
this._tapBox.set_alpha(0.01);
this._tapBox.get_graphics().beginFill(8947848);
this._tapBox.get_graphics().drawRect(0,0,co.doubleduck.pinata.Game.getScreenSize().width,co.doubleduck.pinata.Game.getScreenSize().height);
this._tapBox.get_graphics().endFill();
this._tapBox.addEventListener(openfl.events.MouseEvent.MOUSE_DOWN,$bind(this,this.handleTouch));
this._tapBox.addEventListener(openfl.events.MouseEvent.MOUSE_MOVE,$bind(this,this.handleTouch));
this._tapBox.set_x(-co.doubleduck.pinata.Game.getScreenSize().width / 2);
this._tapBox.set_y(-co.doubleduck.pinata.Game.getScreenSize().height * 0.3);
this.addChild(this._tapBox);
};
$hxClasses["co.doubleduck.pinata.core.pinatas.Pinata"] = co.doubleduck.pinata.core.pinatas.Pinata;
co.doubleduck.pinata.core.pinatas.Pinata.__name__ = ["co","doubleduck","pinata","core","pinatas","Pinata"];
co.doubleduck.pinata.core.pinatas.Pinata.create = function(data) {
var pinType = data.type;
if(pinType == "gift") {
if(co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.UNLOCKED_LEVEL) != Std["int"](data.id)) pinType = "normal";
}
if(pinType == "normal") {
var pinatas = data.pinatas;
var pinId = pinatas[Std.random(pinatas.length)];
var pinHp = co.doubleduck.pinata.core.pinatas.Pinata.rollFromRange(data.pinataHP);
var pinReward = co.doubleduck.pinata.core.pinatas.Pinata.rollFromRange(data.candyReward);
return new co.doubleduck.pinata.core.pinatas.RegPinata(pinId,pinHp,pinReward);
} else if(pinType == "gift") return new co.doubleduck.pinata.core.pinatas.GiftPinata(data.giftData); else if(pinType == "mission") return new co.doubleduck.pinata.core.pinatas.MissionPinata(data.pinId,data.pinReward);
return null;
};
co.doubleduck.pinata.core.pinatas.Pinata.rollFromRange = function(range,forceRatio) {
if(forceRatio == null) forceRatio = -1;
var rangeVals = range.split("-");
var min = co.doubleduck.pinata.meta.BigInt.fromString(rangeVals[0]);
var max = co.doubleduck.pinata.meta.BigInt.fromString(rangeVals[1]);
if(co.doubleduck.pinata.meta.BigInt.isEqual(min,max)) return min;
var delta = co.doubleduck.pinata.meta.BigInt.subtract(max,min);
var scalar = co.doubleduck.utils.Utils.nrand();
if(forceRatio != -1) scalar = forceRatio;
delta = co.doubleduck.pinata.meta.BigInt.mulScalar(delta,scalar);
return co.doubleduck.pinata.meta.BigInt.add(min,delta);
};
co.doubleduck.pinata.core.pinatas.Pinata.__super__ = openfl.display.Sprite;
co.doubleduck.pinata.core.pinatas.Pinata.prototype = $extend(openfl.display.Sprite.prototype,{
animIn: function() {
}
,idleBodyAnim: function() {
this._body.set_rotation(0);
co.doubleduck.utils.TweenChain.get(this._body).tto({ rotation : 4},800,motion.easing.Sine.get_easeInOut()).tto({ rotation : 0},800,motion.easing.Sine.get_easeInOut()).wait(20).call($bind(this,this.idleBodyAnim));
}
,hit: function(amount,angle) {
if(angle == null) angle = -1;
}
,getReward: function() {
return this._reward;
}
,animVanish: function() {
}
,handleTouch: function(e) {
if(e.type == openfl.events.MouseEvent.MOUSE_DOWN) this.hit(co.doubleduck.pinata.meta.Stats.getHitVal()); else if(e.type == openfl.events.MouseEvent.MOUSE_MOVE) {
var dist = this.get_mouseX() * this.get_mouseX() + this.get_mouseY() * this.get_mouseY();
if(dist <= this._swipeRadSq) {
if(this._swipeWasOut) {
if(this._swipeInPos == null) this._swipeInPos = new openfl.geom.Point(this.get_mouseX(),this.get_mouseY());
}
} else {
if(!this._swipeWasOut) this._swipeWasOut = true;
if(this._swipeInPos != null) {
var angle = Math.atan2(this.get_mouseX() - this._swipeInPos.x,this._swipeInPos.y - this.get_mouseY());
angle = angle * (180 / Math.PI) - 90;
while(angle < 0) angle += 360;
this.hit(co.doubleduck.pinata.meta.Stats.getHitVal(),angle);
this._swipeInPos = null;
}
}
}
}
,__class__: co.doubleduck.pinata.core.pinatas.Pinata
});
co.doubleduck.pinata.core.pinatas.GiftPinata = function(giftData) {
this._hitDuration = Std["int"](giftData.duration);
var hits = giftData.hitsRange.split("-");
this._hitsMin = co.doubleduck.pinata.meta.BigInt.fromString(hits[0]);
this._hitsMax = co.doubleduck.pinata.meta.BigInt.fromString(hits[1]);
this._hitsRatioMax = co.doubleduck.pinata.meta.BigInt.roughDiv(this._hitsMax,this._hitsMin);
var rewards = giftData.rewardRange.split("-");
this._rewardMin = co.doubleduck.pinata.meta.BigInt.fromString(rewards[0]);
this._rewardMax = co.doubleduck.pinata.meta.BigInt.fromString(rewards[1]);
this._rewardRatioMax = co.doubleduck.pinata.meta.BigInt.roughDiv(this._rewardMax,this._rewardMin);
this._hasStarted = false;
this._totalHits = co.doubleduck.pinata.meta.BigInt.fromInt(0);
this._body = new openfl.display.Sprite();
var img = co.doubleduck.utils.DDAssets.getImage("images/pinatas/bonus.png");
var _g = img;
_g.set_x(_g.get_x() - img.get_width() / 2);
var _g1 = img;
_g1.set_y(_g1.get_y() - img.get_height() / 2);
this._shakeBox = new openfl.display.Sprite();
this._shakeBox.addChild(img);
this._body.addChild(this._shakeBox);
this._body.set_y(40);
this._timeBar = new co.doubleduck.utils.ProgBar(co.doubleduck.utils.DDAssets.getImage("images/ui/time_bar_bg.png"),co.doubleduck.utils.DDAssets.getImage("images/ui/time_bar_fill.png"));
this._timeBar.mouseEnabled = this._timeBar.mouseChildren = false;
this._timeBar.set_x(-this._timeBar.get_width() / 2);
this._timeBar.set_y(this._body.get_y() - this._body.get_height() / 2 - this._timeBar.get_height() - 30);
this._timeBar.setFillPerc(1);
this._timeBar.set_maskFrom(0.2);
this._timeBar.set_maskTo(0.95);
this._timeBar.set_alpha(0);
this._shakeBox.set_scaleX(this._shakeBox.set_scaleY(0.6));
co.doubleduck.pinata.core.pinatas.Pinata.call(this);
this.addChildAt(this._timeBar,0);
this.addChildAt(this._body,0);
this._tapToStartTitle = new openfl.display.Sprite();
var tapImg = co.doubleduck.utils.DDAssets.getImage("images/ui/tapfast.png");
var _g2 = tapImg;
_g2.set_x(_g2.get_x() - tapImg.get_width() / 2);
var _g3 = tapImg;
_g3.set_y(_g3.get_y() - tapImg.get_height() / 2);
this._tapToStartTitle.addChild(tapImg);
this._tapToStartTitle.set_y(this._body.get_y() - this._body.get_height());
this._tapToStartTitle.set_alpha(0);
this._tapToStartTitle.mouseChildren = this._tapToStartTitle.mouseEnabled = false;
this.addChild(this._tapToStartTitle);
};
$hxClasses["co.doubleduck.pinata.core.pinatas.GiftPinata"] = co.doubleduck.pinata.core.pinatas.GiftPinata;
co.doubleduck.pinata.core.pinatas.GiftPinata.__name__ = ["co","doubleduck","pinata","core","pinatas","GiftPinata"];
co.doubleduck.pinata.core.pinatas.GiftPinata.__super__ = co.doubleduck.pinata.core.pinatas.Pinata;
co.doubleduck.pinata.core.pinatas.GiftPinata.prototype = $extend(co.doubleduck.pinata.core.pinatas.Pinata.prototype,{
animIn: function() {
var _g = this;
co.doubleduck.utils.TweenChain.removeTweens(this._body);
var _g1 = this._body;
_g1.set_x(_g1.get_x() + 50);
var _g2 = this._body;
_g2.set_y(_g2.get_y() - 10);
this._body.set_scaleX(this._body.set_scaleY(0.4));
this._body.set_alpha(0);
co.doubleduck.utils.TweenChain.get(this._body).wait(200).tto({ y : this._body.get_y() - 20},200,motion.easing.Sine.get_easeOut()).tto({ y : this._body.get_y() + 10},200,motion.easing.Sine.get_easeIn());
co.doubleduck.utils.TweenChain.get(this._body).wait(200).tto({ x : 0, scaleX : 1, scaleY : 1, alpha : 1},400).call(function() {
_g._hittable = true;
});
co.doubleduck.utils.TweenChain.get(this._tapToStartTitle).wait(450).tto({ alpha : 1},350);
co.doubleduck.utils.TweenAnimator.nudge(this._tapToStartTitle);
}
,hit: function(amount,angle) {
if(angle == null) angle = -1;
if(!this._hittable) return;
if(!this._hasStarted) {
this._hasStarted = true;
var dur = this._hitDuration * 1000;
this._timeBar.setFillPerc(0,dur);
co.doubleduck.utils.TweenChain.get(this._timeBar).wait(Math.floor(dur / 2)).call($bind(this,this.timeHalfPast)).wait(Math.floor(dur / 2)).call($bind(this,this.timeOver));
this._hpsHitter = new co.doubleduck.utils.Delayer(250);
this._hpsHitter.handler = $bind(this,this.handleHPS);
this._hpsHitter.start();
co.doubleduck.utils.TweenChain.removeTweens(this._tapToStartTitle);
co.doubleduck.utils.TweenChain.get(this._tapToStartTitle).tto({ alpha : 0},150).call($bind(this,this.removeChild),[this._tapToStartTitle]);
this._tapToStartTitle = null;
co.doubleduck.utils.TweenChain.get(this._timeBar).tto({ alpha : 1},200);
}
this._totalHits = co.doubleduck.pinata.meta.BigInt.add(this._totalHits,amount);
this.recalcReward();
co.doubleduck.utils.SoundMgr.playSound("hit" + (Std.random(4) + 1));
co.doubleduck.utils.TweenChain.removeTweens(this._body);
this._body.set_scaleX(this._body.set_scaleY(1));
var factor;
if(Math.random() > 0.5) factor = 0.07; else factor = -0.07;
co.doubleduck.utils.TweenChain.get(this._body).tto({ scaleX : 1 + factor, scaleY : 1 - factor},45,motion.easing.Sine.get_easeOut()).tto({ scaleX : 1, scaleY : 1},45,motion.easing.Sine.get_easeIn());
var slash = co.doubleduck.pinata.core.pinatas.SlashAnim.createNew(this._slashRange,angle);
this.addChild(slash);
var dmgText = co.doubleduck.utils.Fonter.getString(amount.toString(),"images/fonts/yellow_big/");
dmgText.set_alpha(0.8);
this.addChild(dmgText);
co.doubleduck.utils.TweenChain.get(dmgText).tto({ x : Math.random() * 60 + 30},300);
co.doubleduck.utils.TweenChain.get(dmgText).tto({ y : -(Math.random() * 50 + 20)},300,motion.easing.Sine.get_easeOut());
co.doubleduck.utils.TweenChain.get(dmgText).wait(200).tto({ alpha : 0},700,motion.easing.Sine.get_easeOut()).wait(20).call($bind(this,this.removeChild),[dmgText]);
}
,recalcReward: function() {
var ratio = co.doubleduck.pinata.meta.BigInt.roughDiv(this._totalHits,this._hitsMin);
var sizeRat = co.doubleduck.utils.Utils.map(ratio,0,this._hitsRatioMax,0.6,1);
co.doubleduck.utils.TweenChain.get(this._shakeBox).tto({ scaleX : sizeRat, scaleY : sizeRat},100);
ratio = co.doubleduck.utils.Utils.map(ratio,1,this._hitsRatioMax,1,this._rewardRatioMax);
this._reward = co.doubleduck.pinata.meta.BigInt.mulScalar(this._rewardMin,ratio);
if(this._rewardTitle != null) {
this.removeChild(this._rewardTitle);
this._rewardTitle = null;
}
this._rewardTitle = co.doubleduck.utils.Fonter.getString("$" + this._reward.toString(),"images/fonts/yellow_big/");
this._rewardTitle.set_y(120);
this._rewardTitle.mouseChildren = this._rewardTitle.mouseEnabled = false;
this.addChild(this._rewardTitle);
}
,handleHPS: function() {
var hpsPart = co.doubleduck.pinata.meta.BigInt.mulScalar(co.doubleduck.pinata.meta.Stats.getHPS(),0.25);
this._totalHits = co.doubleduck.pinata.meta.BigInt.add(this._totalHits,hpsPart);
this.recalcReward();
}
,timeHalfPast: function() {
co.doubleduck.utils.TweenAnimator.shake(this._shakeBox,6,60);
}
,timeOver: function() {
this._hpsHitter.stop();
this._hittable = false;
this.recalcReward();
var data = { };
data.level = co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.UNLOCKED_LEVEL);
data.candyCount = co.doubleduck.pinata.meta.Stats.getPCandies().toFullString();
data.killCount = co.doubleduck.pinata.data.Persistence.getInt(co.doubleduck.pinata.data.DataKey.PINATA_KILL_COUNT);
data.toolsState = co.doubleduck.pinata.data.Persistence.getString(co.doubleduck.pinata.data.DataKey.TOOLS_STATE);
data.currTapHits = co.doubleduck.pinata.meta.Stats.getHitVal().toFullString();
data.currHPS = co.doubleduck.pinata.meta.Stats.getHPS().toFullString();
data.totalHits = this._totalHits.toFullString();
com.funtomic.GameOps.reportEvent("gift_won",data);
co.doubleduck.utils.TweenChain.get(this._timeBar).tto({ alpha : 0},250).call($bind(this,this.removeChild),[this._timeBar]);
co.doubleduck.utils.TweenChain.get(this._rewardTitle).wait(500).tto({ alpha : 0.01},200);
co.doubleduck.utils.TweenChain.removeTweens(this._shakeBox);
this._shakeBox.set_x(this._shakeBox.set_y(0));
co.doubleduck.utils.TweenAnimator.shake(this._shakeBox,20,25);
co.doubleduck.utils.TweenChain.get(this._shakeBox).wait(1200).call($bind(this,this.explodeGift));
}
,explodeGift: function() {
var _g = this;
var rpart = new openfl.display.Sprite();
var img = co.doubleduck.utils.DDAssets.getImage("images/pinatas/bonus-r.png");
img.set_x(-img.get_width());
img.set_y(-img.get_height() / 2);
rpart.set_scaleX(rpart.set_scaleY(this._shakeBox.get_scaleX()));
rpart.addChild(img);
var lpart = new openfl.display.Sprite();
img = co.doubleduck.utils.DDAssets.getImage("images/pinatas/bonus-l.png");
img.set_y(-img.get_height() / 2);
lpart.set_scaleX(lpart.set_scaleY(this._shakeBox.get_scaleX()));
lpart.addChild(img);
rpart.set_x(this._body.get_x() + this._body.get_width() / 2);
rpart.set_y(this._body.get_y());
lpart.set_x(this._body.get_x() - this._body.get_width() / 2);
lpart.set_y(this._body.get_y());
co.doubleduck.utils.TweenChain.get(this).tto({ scaleX : 0.7, scaleY : 0.7},130,motion.easing.Sine.get_easeOut()).call(function() {
_g.set_scaleX(_g.set_scaleY(1));
_g.removeChild(_g._body);
_g.addChildAt(rpart,_g.getChildIndex(_g._rewardTitle));
_g.addChildAt(lpart,_g.getChildIndex(_g._rewardTitle));
var dist = 50;
_g.dispatchEvent(new openfl.events.Event("OpenedEvent"));
co.doubleduck.utils.TweenChain.removeTweens(_g._rewardTitle);
_g._rewardTitle.set_scaleY(_g._rewardTitle.set_scaleX(1.6));
_g._rewardTitle.set_y(_g._body.get_y() - 90);
_g._rewardTitle.set_alpha(1);
co.doubleduck.utils.TweenChain.get(_g._rewardTitle).wait(1300).tto({ alpha : 0},600);
co.doubleduck.utils.TweenChain.get(rpart).tto({ x : rpart.get_x() + dist, y : rpart.get_y() - dist, rotation : -20},350,motion.easing.Cubic.get_easeOut()).tto({ x : rpart.get_x() + dist * 1.05, y : rpart.get_y() - dist * 1.05, rotation : -22},300).tto({ x : rpart.get_x() + dist * 6, y : rpart.get_y() - dist * 3, rotation : -43},250,motion.easing.Cubic.get_easeIn());
co.doubleduck.utils.TweenChain.get(lpart).tto({ x : lpart.get_x() - dist, y : lpart.get_y() - dist, rotation : 20},350,motion.easing.Cubic.get_easeOut()).call($bind(_g,_g.dispatchEvent),[new openfl.events.Event("ClearingEvent")]).tto({ x : lpart.get_x() - dist * 1.05, y : lpart.get_y() - dist * 1.05, rotation : 22},300).tto({ x : lpart.get_x() - dist * 6, y : lpart.get_y() - dist * 3, rotation : 43},250,motion.easing.Cubic.get_easeIn()).wait(1900).call($bind(_g,_g.dispatchEvent),[new openfl.events.Event("ClearedEvent")]);
var explode = new co.doubleduck.pinata.core.pinatas.ExplodeAnim();
explode.set_x(_g._body.get_x() - 59. * explode.get_scaleX());
explode.set_y(_g._body.get_y() - 59. * explode.get_scaleY());
_g.addChild(explode);
});
}
,animVanish: function() {
this._hittable = false;
co.doubleduck.utils.TweenChain.removeTweens(this._body);
co.doubleduck.utils.TweenChain.removeTweens(this._timeBar);
co.doubleduck.utils.TweenChain.removeTweens(this);
co.doubleduck.utils.TweenChain.get(this).tto({ alpha : 0},200).call($bind(this,this.dispatchEvent),[new openfl.events.Event("ClearedEvent")]);
}
,__class__: co.doubleduck.pinata.core.pinatas.GiftPinata
});
co.doubleduck.pinata.core.pinatas.SlashAnim = function() {
var behDatas = new Array();
behDatas.push(new spritesheet.data.BehaviorData("idle",[0,1,2,3],false,19,80.,16.));
var sheet = co.doubleduck.utils.DDAssets.getSpritesheet("images/strike.png",4,1,160,32,behDatas);
co.doubleduck.utils.AnimSprite.call(this,sheet);
this.showBehavior("idle");
this.mouseChildren = this.mouseEnabled = false;
this._lastTime = openfl.Lib.getTimer();
this.addEventListener(openfl.events.Event.ENTER_FRAME,$bind(this,this.handleTick));
this.addEventListener(openfl.events.Event.COMPLETE,$bind(this,this.handleDone));
};
$hxClasses["co.doubleduck.pinata.core.pinatas.SlashAnim"] = co.doubleduck.pinata.core.pinatas.SlashAnim;
co.doubleduck.pinata.core.pinatas.SlashAnim.__name__ = ["co","doubleduck","pinata","core","pinatas","SlashAnim"];
co.doubleduck.pinata.core.pinatas.SlashAnim.createNew = function(range,angle) {
if(angle == null) angle = -1;
var slash = new co.doubleduck.pinata.core.pinatas.SlashAnim();
slash.set_x(range.x + Math.random() * range.width);
slash.set_y(range.y + Math.random() * range.height);
if(angle == -1) slash.set_rotation(Math.random() * 360); else slash.set_rotation(angle);
return slash;
};
co.doubleduck.pinata.core.pinatas.SlashAnim.__super__ = co.doubleduck.utils.AnimSprite;
co.doubleduck.pinata.core.pinatas.SlashAnim.prototype = $extend(co.doubleduck.utils.AnimSprite.prototype,{
handleTick: function(e) {
var time = openfl.Lib.getTimer();
var delta = time - this._lastTime;
this.update(delta);
this.bitmap.smoothing = true;
this._lastTime = time;
}
,handleDone: function(e) {
this.removeEventListener(openfl.events.Event.ENTER_FRAME,$bind(this,this.handleTick));
this.removeEventListener(openfl.events.Event.COMPLETE,$bind(this,this.handleDone));
if(this.parent != null) this.parent.removeChild(this);
}
,__class__: co.doubleduck.pinata.core.pinatas.SlashAnim
});
co.doubleduck.pinata.core.pinatas.ExplodeAnim = function() {
var behDatas = new Array();
behDatas.push(new spritesheet.data.BehaviorData("idle",[0,1,2,3,4,5],false,19));
var sheet = co.doubleduck.utils.DDAssets.getSpritesheet("images/explosion.png",6,1,118,118,behDatas);
co.doubleduck.utils.AnimSprite.call(this,sheet);
this.showBehavior("idle");
this._lastTime = openfl.Lib.getTimer();
this.set_scaleX(this.set_scaleY(1.5));
this.set_alpha(0.6);
this.addEventListener(openfl.events.Event.ENTER_FRAME,$bind(this,this.handleTick));
this.addEventListener(openfl.events.Event.COMPLETE,$bind(this,this.handleDone));
};
$hxClasses["co.doubleduck.pinata.core.pinatas.ExplodeAnim"] = co.doubleduck.pinata.core.pinatas.ExplodeAnim;
co.doubleduck.pinata.core.pinatas.ExplodeAnim.__name__ = ["co","doubleduck","pinata","core","pinatas","ExplodeAnim"];
co.doubleduck.pinata.core.pinatas.ExplodeAnim.__super__ = co.doubleduck.utils.AnimSprite;
co.doubleduck.pinata.core.pinatas.ExplodeAnim.prototype = $extend(co.doubleduck.utils.AnimSprite.prototype,{
handleTick: function(e) {
var time = openfl.Lib.getTimer();
var delta = time - this._lastTime;
this.update(delta);
this.bitmap.smoothing = true;
this._lastTime = time;
}
,handleDone: function(e) {
this.removeEventListener(openfl.events.Event.ENTER_FRAME,$bind(this,this.handleTick));
this.removeEventListener(openfl.events.Event.COMPLETE,$bind(this,this.handleDone));
if(this.parent != null) this.parent.removeChild(this);
}
,__class__: co.doubleduck.pinata.core.pinatas.ExplodeAnim
});
co.doubleduck.pinata.core.pinatas.RegPinata = function(pinataID,hp,reward) {
this._id = pinataID;
this._hp = hp;
this._initialHp = this._hp.clone();
this._reward = reward;
this._rope = co.doubleduck.utils.DDAssets.getImage("images/rope.png");
this._body = new openfl.display.Sprite();
var img = co.doubleduck.utils.DDAssets.getImage("images/pinatas/p" + pinataID + ".png");
var _g = img;
_g.set_x(_g.get_x() - img.get_width() / 2);
var _g1 = img;
_g1.set_y(_g1.get_y() - img.get_height() / 2);
this._body.addChild(img);
this._rope.set_y(this._body.get_y() - this._rope.get_height());
this._hpBar = new co.doubleduck.utils.ProgBar(co.doubleduck.utils.DDAssets.getImage("images/ui/hp_bg.png"),co.doubleduck.utils.DDAssets.getImage("images/ui/hp_fill.png"));
this._hpBar.mouseEnabled = this._hpBar.mouseChildren = false;
this._hpBar.set_x(-this._hpBar.get_width() / 2);
this._hpBar.set_y(this._body.get_height() * 0.5 + 5);
this._hpBar.setFillPerc(1);
this._hpBar.set_maskFrom(0.06);
this._hpBar.set_maskTo(0.94);
this._hpBar.set_alpha(0);
co.doubleduck.pinata.core.pinatas.Pinata.call(this);
this.addChildAt(this._hpBar,0);
this.addChildAt(this._body,0);
this.addChildAt(this._rope,0);
};
$hxClasses["co.doubleduck.pinata.core.pinatas.RegPinata"] = co.doubleduck.pinata.core.pinatas.RegPinata;
co.doubleduck.pinata.core.pinatas.RegPinata.__name__ = ["co","doubleduck","pinata","core","pinatas","RegPinata"];
co.doubleduck.pinata.core.pinatas.RegPinata.__super__ = co.doubleduck.pinata.core.pinatas.Pinata;
co.doubleduck.pinata.core.pinatas.RegPinata.prototype = $extend(co.doubleduck.pinata.core.pinatas.Pinata.prototype,{
initHittable: function() {
this._hittable = true;
this.startTakeHPS(true);
this.idleBodyAnim();
}
,animIn: function() {
co.doubleduck.utils.TweenChain.removeTweens(this._body);
this._body.set_y(-(this.get_y() + this._body.get_height() / 2 + 10));
this._body.set_rotation(30);
this._rope.set_y(this._body.get_y() - this._rope.get_height());
co.doubleduck.utils.TweenChain.get(this._body).tto({ y : 0},900,motion.easing.Bounce.get_easeOut()).call($bind(this,this.initHittable));
co.doubleduck.utils.TweenChain.get(this._body).tto({ rotation : 0},300).tto({ rotation : 12},300).tto({ rotation : 0},200);
co.doubleduck.utils.TweenChain.get(this._rope).tto({ y : -this._rope.get_height()},900,motion.easing.Bounce.get_easeOut());
this._rope.set_rotation(10);
this._rope.set_x(10);
co.doubleduck.utils.TweenChain.get(this._rope).tto({ rotation : 1, x : 5},300).tto({ rotation : -2, x : -7},300).tto({ rotation : 0, x : 0},200);
co.doubleduck.utils.TweenChain.get(this._hpBar).wait(700).tto({ alpha : 1},150);
}
,hit: function(amount,angle) {
if(angle == null) angle = -1;
if(!this._hittable) return;
co.doubleduck.utils.TweenChain.removeTweens(this._hpBar);
this._hpBar.set_alpha(1);
this._hpBar.setFillPerc(this._hpBar.getFillPerc());
this._hp = co.doubleduck.pinata.meta.BigInt.mulScalar(this._initialHp,this._hpBar.getFillPerc());
co.doubleduck.utils.SoundMgr.playSound("hit" + (Std.random(4) + 1));
co.doubleduck.utils.TweenChain.removeTweens(this._body);
this._body.set_scaleX(this._body.set_scaleY(1));
var factor;
if(Math.random() > 0.5) factor = 0.07; else factor = -0.07;
co.doubleduck.utils.TweenChain.get(this._body).tto({ scaleX : 1 + factor, scaleY : 1 - factor},45,motion.easing.Sine.get_easeOut()).tto({ scaleX : 1, scaleY : 1},45,motion.easing.Sine.get_easeIn()).call($bind(this,this.idleBodyAnim));
var slash = co.doubleduck.pinata.core.pinatas.SlashAnim.createNew(this._slashRange,angle);
this.addChild(slash);
var dmgText = co.doubleduck.utils.Fonter.getString(amount.toString(),"images/fonts/yellow_big/");
dmgText.set_alpha(0.8);
this.addChild(dmgText);
co.doubleduck.utils.TweenChain.get(dmgText).tto({ x : Math.random() * 60 + 30},300);
co.doubleduck.utils.TweenChain.get(dmgText).tto({ y : -(Math.random() * 50 + 20)},300,motion.easing.Sine.get_easeOut());
co.doubleduck.utils.TweenChain.get(dmgText).wait(200).tto({ alpha : 0},700,motion.easing.Sine.get_easeOut()).wait(20).call($bind(this,this.removeChild),[dmgText]);
this._hp = co.doubleduck.pinata.meta.BigInt.subtract(this._hp,amount);
var ratio = co.doubleduck.pinata.meta.BigInt.roughDiv(this._hp,this._initialHp);
this._hpBar.setFillPerc(ratio);
if(co.doubleduck.pinata.meta.BigInt.isZero(this._hp)) {
co.doubleduck.pinata.core.TutorOverlay.inst().actedOnStep(co.doubleduck.pinata.core.TutorStep.SHOW_BUBBLE);
this._hittable = false;
this.animDie();
} else this.startTakeHPS();
}
,animVanish: function() {
if(co.doubleduck.pinata.meta.BigInt.isZero(this._hp)) return;
this._hittable = false;
if(this._rope != null) {
co.doubleduck.utils.TweenChain.removeTweens(this._rope);
co.doubleduck.utils.TweenChain.get(this._rope).tto({ alpha : 0},50);
}
co.doubleduck.utils.TweenChain.removeTweens(this._body);
co.doubleduck.utils.TweenChain.removeTweens(this._hpBar);
co.doubleduck.utils.TweenChain.removeTweens(this);
co.doubleduck.utils.TweenChain.get(this).tto({ alpha : 0},200).call($bind(this,this.dispatchEvent),[new openfl.events.Event("ClearedEvent")]);
}
,startTakeHPS: function(andListen) {
if(andListen == null) andListen = false;
var hps = co.doubleduck.pinata.meta.Stats.getHPS();
if(!co.doubleduck.pinata.meta.BigInt.isZero(hps)) this.reapplyHPS(hps);
if(andListen) co.doubleduck.pinata.meta.Stats.addListener("UpdateHPSEvent",$bind(this,this.updateHPS));
}
,updateHPS: function(e) {
this._hpBar.setFillPerc(this._hpBar.getFillPerc());
this._hp = co.doubleduck.pinata.meta.BigInt.mulScalar(this._initialHp,this._hpBar.getFillPerc());
this.startTakeHPS();
}
,reapplyHPS: function(hps) {
var _g = this;
co.doubleduck.utils.TweenChain.removeTweens(this._hpBar);
this._hpBar.set_alpha(1);
this._hpBar.setFillPerc(this._hpBar.getFillPerc());
var dur = Math.floor(co.doubleduck.pinata.meta.BigInt.roughDiv(this._hp,hps) * 1000) + 1;
this._hpBar.setFillPerc(0,dur);
co.doubleduck.utils.TweenChain.get(this._hpBar).wait(dur).call(function() {
_g._hittable = false;
_g._hp = co.doubleduck.pinata.meta.BigInt.fromInt(0);
_g.animDie();
});
}
,animDie: function() {
var _g = this;
co.doubleduck.pinata.meta.Stats.removeListener("UpdateHPSEvent",$bind(this,this.updateHPS));
if(this.contains(this._hpBar)) co.doubleduck.utils.TweenChain.get(this._hpBar).tto({ alpha : 0},50).call($bind(this,this.removeChild),[this._hpBar]);
if(this.contains(this._rope)) co.doubleduck.utils.TweenChain.get(this._rope).tto({ y : -(this.get_y() + this._rope.get_height() + 10)},100).call($bind(this,this.removeChild),[this._rope]);
var rpart = new openfl.display.Sprite();
var img = co.doubleduck.utils.DDAssets.getImage("images/pinatas/p" + this._id + "-r.png");
img.set_x(-img.get_width());
img.set_y(-img.get_height() / 2);
rpart.addChild(img);
var lpart = new openfl.display.Sprite();
img = co.doubleduck.utils.DDAssets.getImage("images/pinatas/p" + this._id + "-l.png");
img.set_y(-img.get_height() / 2);
lpart.addChild(img);
rpart.set_x(this._body.get_x() + this._body.get_width() / 2);
rpart.set_y(this._body.get_y());
lpart.set_x(this._body.get_x() - this._body.get_width() / 2);
lpart.set_y(this._body.get_y());
co.doubleduck.utils.TweenChain.get(this).tto({ scaleX : 0.7, scaleY : 0.7},130,motion.easing.Sine.get_easeOut()).call(function() {
co.doubleduck.utils.SoundMgr.playSound("pinata_crack");
_g.set_scaleX(_g.set_scaleY(1));
_g.removeChild(_g._body);
_g.addChild(rpart);
_g.addChild(lpart);
var dist = 50;
_g.dispatchEvent(new openfl.events.Event("OpenedEvent"));
co.doubleduck.utils.TweenChain.get(rpart).tto({ x : rpart.get_x() + dist, y : rpart.get_y() - dist, rotation : -20},250,motion.easing.Sine.get_easeOut()).tto({ x : rpart.get_x() + dist, y : rpart.get_y() - dist * 2, alpha : 0},700);
co.doubleduck.utils.TweenChain.get(lpart).tto({ x : lpart.get_x() - dist, y : lpart.get_y() - dist, rotation : 20},250,motion.easing.Sine.get_easeOut()).call($bind(_g,_g.dispatchEvent),[new openfl.events.Event("ClearingEvent")]).tto({ x : lpart.get_x() - dist, y : lpart.get_y() - dist * 2, alpha : 0},700).wait(100).call($bind(_g,_g.dispatchEvent),[new openfl.events.Event("ClearedEvent")]);
var explode = new co.doubleduck.pinata.core.pinatas.ExplodeAnim();
explode.set_x(_g._body.get_x() - 59. * explode.get_scaleX());
explode.set_y(_g._body.get_y() - 59. * explode.get_scaleY());
_g.addChild(explode);
});
}
,__class__: co.doubleduck.pinata.core.pinatas.RegPinata
});
co.doubleduck.pinata.core.pinatas.MissionPinata = function(pinataID,reward) {
co.doubleduck.pinata.core.pinatas.RegPinata.call(this,pinataID,co.doubleduck.pinata.meta.BigInt.fromInt(1),reward);
this.removeChild(this._hpBar);
this.removeChild(this._rope);
};
$hxClasses["co.doubleduck.pinata.core.pinatas.MissionPinata"] = co.doubleduck.pinata.core.pinatas.MissionPinata;
co.doubleduck.pinata.core.pinatas.MissionPinata.__name__ = ["co","doubleduck","pinata","core","pinatas","MissionPinata"];
co.doubleduck.pinata.core.pinatas.MissionPinata.__super__ = co.doubleduck.pinata.core.pinatas.RegPinata;
co.doubleduck.pinata.core.pinatas.MissionPinata.prototype = $extend(co.doubleduck.pinata.core.pinatas.RegPinata.prototype,{
__class__: co.doubleduck.pinata.core.pinatas.MissionPinata
});
co.doubleduck.pinata.core.tools = {};
co.doubleduck.pinata.core.tools.ToolAnims = function() {
openfl.display.Sprite.call(this);
this.mouseEnabled = this.mouseChildren = false;
this._toolAnimsToShow = this.getToolsToShow();
this._toolAnims = new haxe.ds.StringMap();
var _g = 0;
var _g1 = this._toolAnimsToShow;
while(_g < _g1.length) {
var toolId = _g1[_g];
++_g;
var toolAnim = this.getToolAnim(toolId);
this._toolAnims.set(toolId,toolAnim);
this.addChild(toolAnim);
}
co.doubleduck.pinata.meta.Stats.addListener("UpdateToolEvent",$bind(this,this.handleToolUpdrade));
};
$hxClasses["co.doubleduck.pinata.core.tools.ToolAnims"] = co.doubleduck.pinata.core.tools.ToolAnims;
co.doubleduck.pinata.core.tools.ToolAnims.__name__ = ["co","doubleduck","pinata","core","tools","ToolAnims"];
co.doubleduck.pinata.core.tools.ToolAnims.animRamInto = function(obj) {
if(Math.random() > 0.5) {
obj.set_x(-obj.get_width());
var dir = Math.random();
var scr = co.doubleduck.pinata.Game.getScreenSize();
obj.set_y(scr.height * (dir * 0.4 + 0.1));
obj.set_rotation((1 - dir) * 60 + 60);
var targetPos = new openfl.geom.Point(scr.width * 0.35,scr.height * (dir * 0.2 + 0.2));
var recoilPos = new openfl.geom.Point(co.doubleduck.utils.Utils.map(0.8,0,1,obj.get_x(),targetPos.x),co.doubleduck.utils.Utils.map(0.8,0,1,obj.get_y(),targetPos.y));
co.doubleduck.utils.TweenChain.get(obj).tto({ x : targetPos.x, y : targetPos.y},300,motion.easing.Sine.get_easeOut()).tto({ x : recoilPos.x, y : recoilPos.y},100,motion.easing.Sine.get_easeOut()).tto({ x : targetPos.x, y : targetPos.y},60,motion.easing.Sine.get_easeIn()).wait(30).tto({ x : recoilPos.x, y : recoilPos.y},100,motion.easing.Sine.get_easeOut()).tto({ x : targetPos.x, y : targetPos.y},60,motion.easing.Sine.get_easeIn()).wait(30).tto({ x : recoilPos.x, y : recoilPos.y},100,motion.easing.Sine.get_easeOut()).tto({ x : targetPos.x, y : targetPos.y},60,motion.easing.Sine.get_easeIn()).wait(30).tto({ x : obj.get_x(), y : obj.get_y()},300,motion.easing.Sine.get_easeIn()).wait(20 + Std.random(550)).call(co.doubleduck.pinata.core.tools.ToolAnims.animRamInto,[obj]);
} else {
var scr1 = co.doubleduck.pinata.Game.getScreenSize();
obj.set_x(scr1.width + obj.get_width());
var dir1 = Math.random();
obj.set_y(scr1.height * (dir1 * 0.4 + 0.1));
obj.set_rotation(dir1 * 60 - 120);
var targetPos1 = new openfl.geom.Point(scr1.width * 0.65,scr1.height * (dir1 * 0.2 + 0.2));
var recoilPos1 = new openfl.geom.Point(co.doubleduck.utils.Utils.map(0.8,0,1,obj.get_x(),targetPos1.x),co.doubleduck.utils.Utils.map(0.8,0,1,obj.get_y(),targetPos1.y));
co.doubleduck.utils.TweenChain.get(obj).tto({ x : targetPos1.x, y : targetPos1.y},300,motion.easing.Sine.get_easeOut()).tto({ x : recoilPos1.x, y : recoilPos1.y},100,motion.easing.Sine.get_easeOut()).tto({ x : targetPos1.x, y : targetPos1.y},60,motion.easing.Sine.get_easeIn()).wait(30).tto({ x : recoilPos1.x, y : recoilPos1.y},100,motion.easing.Sine.get_easeOut()).tto({ x : targetPos1.x, y : targetPos1.y},60,motion.easing.Sine.get_easeIn()).wait(30).tto({ x : recoilPos1.x, y : recoilPos1.y},100,motion.easing.Sine.get_easeOut()).tto({ x : targetPos1.x, y : targetPos1.y},60,motion.easing.Sine.get_easeIn()).wait(30).tto({ x : obj.get_x(), y : obj.get_y()},300,motion.easing.Sine.get_easeIn()).wait(20 + Std.random(550)).call(co.doubleduck.pinata.core.tools.ToolAnims.animRamInto,[obj]);
}
};
co.doubleduck.pinata.core.tools.ToolAnims.animBatSmack = function(obj,init) {
if(init == null) init = false;
if(init) {
var bmp = obj.getChildAt(0);
var _g = bmp;
_g.set_y(_g.get_y() - bmp.get_height());
}
if(Math.random() > 0.5) {
var scr = co.doubleduck.pinata.Game.getScreenSize();
obj.set_x(scr.width * 0.32);
var dir = Math.random();
obj.set_y(scr.height * (dir * 0.2 + 0.27));
var baseRot = (1 - dir) * 60 - 30;
obj.set_rotation(baseRot - 10);
obj.set_alpha(0);
co.doubleduck.utils.TweenChain.get(obj).tto({ alpha : 1, rotation : baseRot},200,motion.easing.Sine.get_easeOut()).tto({ rotation : baseRot - 20},100,motion.easing.Sine.get_easeOut()).tto({ rotation : baseRot + 20},60,motion.easing.Sine.get_easeIn()).wait(30).tto({ rotation : baseRot - 20},100,motion.easing.Sine.get_easeOut()).tto({ rotation : baseRot + 20},60,motion.easing.Sine.get_easeIn()).wait(30).tto({ rotation : baseRot - 20},100,motion.easing.Sine.get_easeOut()).tto({ rotation : baseRot + 20},60,motion.easing.Sine.get_easeIn()).wait(30).tto({ rotation : baseRot},100,motion.easing.Sine.get_easeOut()).wait(50).tto({ alpha : 0, rotation : baseRot - 10},200,motion.easing.Sine.get_easeIn()).wait(20 + Std.random(550)).call(co.doubleduck.pinata.core.tools.ToolAnims.animBatSmack,[obj]);
} else {
var scr1 = co.doubleduck.pinata.Game.getScreenSize();
obj.set_x(scr1.width * 0.68);
var dir1 = Math.random();
obj.set_y(scr1.height * (dir1 * 0.2 + 0.27));
var baseRot1 = dir1 * 60 - 30;
obj.set_rotation(baseRot1 + 10);
co.doubleduck.utils.TweenChain.get(obj).tto({ alpha : 1, rotation : baseRot1},200,motion.easing.Sine.get_easeOut()).tto({ rotation : baseRot1 + 20},100,motion.easing.Sine.get_easeOut()).tto({ rotation : baseRot1 - 20},60,motion.easing.Sine.get_easeIn()).wait(30).tto({ rotation : baseRot1 + 20},100,motion.easing.Sine.get_easeOut()).tto({ rotation : baseRot1 - 20},60,motion.easing.Sine.get_easeIn()).wait(30).tto({ rotation : baseRot1 + 20},100,motion.easing.Sine.get_easeOut()).tto({ rotation : baseRot1 - 20},60,motion.easing.Sine.get_easeIn()).wait(30).tto({ rotation : baseRot1},100,motion.easing.Sine.get_easeOut()).wait(50).tto({ alpha : 0, rotation : baseRot1 + 10},200,motion.easing.Sine.get_easeIn()).wait(20 + Std.random(550)).call(co.doubleduck.pinata.core.tools.ToolAnims.animBatSmack,[obj]);
}
};
co.doubleduck.pinata.core.tools.ToolAnims.animRandomly = function(obj) {
co.doubleduck.utils.TweenChain.get(obj).tto({ x : 100 + Math.random() * 100, y : 100 + Math.random() * 100},400,motion.easing.Sine.get_easeInOut()).tto({ x : 100 + Math.random() * 100, y : 100 + Math.random() * 100},400,motion.easing.Sine.get_easeInOut()).wait(20).call(co.doubleduck.pinata.core.tools.ToolAnims.animRandomly,[obj]);
};
co.doubleduck.pinata.core.tools.ToolAnims.__super__ = openfl.display.Sprite;
co.doubleduck.pinata.core.tools.ToolAnims.prototype = $extend(openfl.display.Sprite.prototype,{
toggleShow: function(flag) {
co.doubleduck.utils.TweenChain.removeTweens(this);
co.doubleduck.utils.TweenChain.get(this).tto({ alpha : flag?1:0},100);
}
,getToolsToShow: function() {
var res = new Array();
var _g = 0;
var _g1 = co.doubleduck.pinata.data.GameplayDB.getTools();
while(_g < _g1.length) {
var curr = _g1[_g];
++_g;
if(curr.id == "good-ol-bat") continue;
if(co.doubleduck.pinata.meta.Stats.getToolLevel(curr.id) >= 1) res.push(curr.id);
if(res.length > 3) res.shift();
}
return res;
}
,handleToolUpdrade: function(e) {
var currTools = this.getToolsToShow();
if(currTools.join(",") != this._toolAnimsToShow.join(",")) {
if(this._toolAnimsToShow.length == currTools.length) {
var oldTool = this._toolAnims.get(this._toolAnimsToShow[0]);
this._toolAnims.remove(this._toolAnimsToShow[0]);
co.doubleduck.utils.TweenChain.removeTweens(oldTool);
this.removeChild(oldTool);
oldTool = null;
}
var newToolId = currTools[currTools.length - 1];
var newTool = this.getToolAnim(newToolId);
this._toolAnims.set(newToolId,newTool);
this.addChild(newTool);
this._toolAnimsToShow = currTools;
}
}
,getToolAnim: function(toolId) {
var tool = new openfl.display.Sprite();
var bmp = co.doubleduck.utils.DDAssets.getImage("images/tools_menu/tools/" + toolId + "/anim.png");
var _g = bmp;
_g.set_x(_g.get_x() - bmp.get_width() / 2);
tool.addChild(bmp);
var type = co.doubleduck.pinata.data.GameplayDB.getToolData(toolId).animType;
switch(type) {
case "smack":
co.doubleduck.pinata.core.tools.ToolAnims.animBatSmack(tool,true);
break;
case "ram":
co.doubleduck.pinata.core.tools.ToolAnims.animRamInto(tool);
break;
}
return tool;
}
,__class__: co.doubleduck.pinata.core.tools.ToolAnims
});
co.doubleduck.pinata.core.tools.ToolItem = function(data) {
co.doubleduck.pinata.meta.ScrolledItem.call(this);
this._data = data;
this._id = this._data.id;
this._dir = "images/tools_menu/tools/" + this._id + "/";
var toolLvl = co.doubleduck.pinata.meta.Stats.getToolLevel(this._id);
this._hasBuyNotif = false;
this._back = co.doubleduck.utils.DDAssets.getImage("images/tools_menu/item_bg.png");
this.addChild(this._back);
this._icon = co.doubleduck.utils.DDAssets.getImage(this._dir + "pic.png");
this._icon.set_y(this._back.get_height() / 2 - this._icon.get_height() / 2);
this._icon.set_x(this._icon.get_y());
this.addChild(this._icon);
this._title = co.doubleduck.utils.DDAssets.getImage(this._dir + "name.png");
this._title.set_y(this._icon.get_y());
this._title.set_x(this._icon.get_x() + this._icon.get_width() + 5);
this.addChild(this._title);
this.setupVals();
var notif = co.doubleduck.utils.DDAssets.getImage("images/ui/attention_tag.png");
var _g = notif;
_g.set_x(_g.get_x() - notif.get_width() / 2);
var _g1 = notif;
_g1.set_y(_g1.get_y() - notif.get_height() / 2);
this._notif = new openfl.display.Sprite();
this._notif.addChild(notif);
this._notif.set_x(this._upgradeBtn.get_x() - this._upgradeBtn.get_width() / 2 + 10);
this._notif.set_y(this._upgradeBtn.get_y() - this._upgradeBtn.get_height() / 2 + 10);
this._notif.set_visible(false);
this.addChild(this._notif);
co.doubleduck.pinata.meta.Stats.addListener("UpdateCandiesEvent",$bind(this,this.handleCandies));
};
$hxClasses["co.doubleduck.pinata.core.tools.ToolItem"] = co.doubleduck.pinata.core.tools.ToolItem;
co.doubleduck.pinata.core.tools.ToolItem.__name__ = ["co","doubleduck","pinata","core","tools","ToolItem"];
co.doubleduck.pinata.core.tools.ToolItem.__super__ = co.doubleduck.pinata.meta.ScrolledItem;
co.doubleduck.pinata.core.tools.ToolItem.prototype = $extend(co.doubleduck.pinata.meta.ScrolledItem.prototype,{
getToolId: function() {
return this._id;
}
,setBuyNotif: function(flag) {
if(this._notif.get_visible() == flag) return;
if(flag) this.animNotif(); else co.doubleduck.utils.TweenChain.removeTweens(this._notif);
this._notif.set_visible(flag);
}
,animNotif: function() {
co.doubleduck.utils.TweenChain.removeTweens(this._notif);
this._notif.set_scaleX(this._notif.set_scaleY(1));
co.doubleduck.utils.TweenChain.get(this._notif).tto({ scaleX : 1.15, scaleY : 1.15},350,motion.easing.Sine.get_easeInOut()).tto({ scaleX : 1, scaleY : 1},250,motion.easing.Sine.get_easeInOut()).call($bind(this,this.animNotif),[]);
}
,setupVals: function() {
if(this._upgradeBtn != null) {
this._upgradeBtn.removeEventListener("BUTTON_ACT_EVENT",$bind(this,this.handleUpgrade));
this.removeChild(this._upgradeBtn);
this._upgradeBtn = null;
}
if(this._hpsVal != null) {
this.removeChild(this._hpsVal);
this._hpsVal = null;
}
if(this._levelVal != null) {
this.removeChild(this._levelVal);
this._levelVal = null;
}
if(this._btnHPS != null) {
this.removeChild(this._btnHPS);
this._btnHPS = null;
}
if(this._btnPrice != null) {
this.removeChild(this._btnPrice);
this._btnPrice = null;
}
var toolLvl = co.doubleduck.pinata.meta.Stats.getToolLevel(this._id);
if(toolLvl == 0) {
this._icon.set_alpha(0.5);
this._upgradeBtn = new co.doubleduck.utils.Button(co.doubleduck.utils.DDAssets.getRawImage("images/tools_menu/btn_buy.png"));
} else {
this._icon.set_alpha(1);
this._upgradeBtn = new co.doubleduck.utils.Button(co.doubleduck.utils.DDAssets.getRawImage("images/tools_menu/btn_upgrade.png"));
var hps = co.doubleduck.pinata.meta.Stats.getHPSForTool(this._id);
this._hpsVal = co.doubleduck.utils.Fonter.getString(hps.toString() + (this._id == "good-ol-bat"?"#":"~"),"images/fonts/purple/");
this._hpsVal.set_x(this._icon.get_x() + this._icon.get_width() + 5 + this._hpsVal.get_width() / 2);
this._hpsVal.set_y(this._icon.get_y() + this._icon.get_height() - this._hpsVal.get_height() / 2);
this.addChild(this._hpsVal);
this._levelVal = co.doubleduck.utils.Fonter.getString("*" + toolLvl,"images/fonts/yellow_small/");
this._levelVal.set_x(this._hpsVal.get_x() - this._hpsVal.get_width() / 2 + this._levelVal.get_width() / 2);
this._levelVal.set_y(this._hpsVal.get_y() - this._hpsVal.get_height() / 2 - this._levelVal.get_height() / 2);
this.addChild(this._levelVal);
}
this._upgradeBtn.set_y(this._back.get_height() - this._upgradeBtn.get_height() / 2 - 5);
this._upgradeBtn.set_x(this._back.get_width() - this._upgradeBtn.get_width() / 2 - 4);
this._upgradeBtn.addEventListener("BUTTON_ACT_EVENT",$bind(this,this.handleUpgrade));
if(this._notif != null) this.addChildAt(this._upgradeBtn,this.getChildIndex(this._notif)); else this.addChild(this._upgradeBtn);
var nextHps = co.doubleduck.pinata.meta.Stats.getHPSForTool(this._id,co.doubleduck.pinata.meta.Stats.getToolLevel(this._id) + 1);
this._btnHPS = co.doubleduck.utils.Fonter.getString(nextHps.toString() + (this._id == "good-ol-bat"?"#":"~"),"images/fonts/purple/");
this._btnHPS.mouseChildren = this._btnHPS.mouseEnabled = false;
this._btnHPS.set_x(this._upgradeBtn.get_x());
this._btnHPS.set_y(this._upgradeBtn.get_y() - this._upgradeBtn.get_height() * 0.08);
this.addChild(this._btnHPS);
this._nextPrice = co.doubleduck.pinata.meta.Stats.getPriceForTool(this._id,co.doubleduck.pinata.meta.Stats.getToolLevel(this._id) + 1);
this._btnPrice = co.doubleduck.utils.Fonter.getString("$" + this._nextPrice.toString(),"images/fonts/yellow_small/");
this._btnPrice.mouseChildren = this._btnPrice.mouseEnabled = false;
this._btnPrice.set_x(this._upgradeBtn.get_x());
this._btnPrice.set_y(this._upgradeBtn.get_y() + this._upgradeBtn.get_height() * 0.22);
this.addChild(this._btnPrice);
this.handleCandies();
}
,capPlayerBuy: function() {
return this._upgradeBtn.enabled;
}
,handleCandies: function(e) {
var prevVal = this._upgradeBtn.enabled;
if(co.doubleduck.pinata.meta.BigInt.isGT(this._nextPrice,co.doubleduck.pinata.meta.Stats.getPCandies())) {
this.set_alpha(0.5);
this._upgradeBtn.enabled = false;
} else {
this.set_alpha(1);
this._upgradeBtn.enabled = true;
}
if(this._upgradeBtn.enabled != prevVal) this.dispatchEvent(new openfl.events.Event("RetestNotifEvent"));
}
,depressItem: function() {
if(this._upgradeBtn != null) this._upgradeBtn.dePress();
}
,handleUpgrade: function(e) {
var toolLvl = co.doubleduck.pinata.meta.Stats.getToolLevel(this._id);
var pcandies = co.doubleduck.pinata.meta.Stats.getPCandies();
var nextPrice = co.doubleduck.pinata.meta.Stats.getPriceForTool(this._id,co.doubleduck.pinata.meta.Stats.getToolLevel(this._id) + 1);
if(!co.doubleduck.pinata.meta.BigInt.isGT(nextPrice,pcandies)) {
toolLvl = toolLvl + 1;
pcandies = co.doubleduck.pinata.meta.BigInt.subtract(pcandies,nextPrice);
co.doubleduck.pinata.meta.Stats.setPCandies(pcandies);
co.doubleduck.pinata.meta.Stats.setToolLevel(this._id,toolLvl);
co.doubleduck.utils.SoundMgr.playSound("purchase");
this.setupVals();
this.dispatchEvent(new openfl.events.Event("UpgradedEvent"));
this.dispatchEvent(new openfl.events.Event("RetestNotifEvent"));
var data = { };
data.candyCount = co.doubleduck.pinata.meta.Stats.getPCandies().toFullString();
data.toolName = this._id;
data.toolLevel = toolLvl + "";
com.funtomic.GameOps.reportEvent("toolUpgrade",data);
if(this._id == "good-ol-bat" && toolLvl == 2) {
co.doubleduck.pinata.core.TutorOverlay.inst().actedOnStep(co.doubleduck.pinata.core.TutorStep.BUY_FIRST_UPGRADE);
co.doubleduck.pinata.core.TutorOverlay.inst().tryShowStep(co.doubleduck.pinata.core.TutorStep.EXIT_SHOP);
}
if(this._id == "pinata-smasher" && toolLvl == 1) co.doubleduck.pinata.core.TutorOverlay.inst().actedOnStep(co.doubleduck.pinata.core.TutorStep.BUY_FIRST_AUTO);
}
}
,destroy: function() {
}
,__class__: co.doubleduck.pinata.core.tools.ToolItem
});
co.doubleduck.pinata.core.tools.ToolsScr = function() {
openfl.display.Sprite.call(this);
this._isOpened = false;
this._toolsData = co.doubleduck.pinata.data.GameplayDB.getTools();
this._notifOnTools = new Array();
this._tabBtn = new co.doubleduck.utils.Button(co.doubleduck.utils.DDAssets.getRawImage("images/ui/btn_tools.png"));
this._tabBtn.set_x(this._tabBtn.get_width() / 2 - 2);
this._tabBtn.set_y(co.doubleduck.pinata.Game.getScreenSize().height / 2 - 45);
this._tabBtn.addEventListener("BUTTON_ACT_EVENT",$bind(this,this.handleTabBtn));
this.addChild(this._tabBtn);
var notif = co.doubleduck.utils.DDAssets.getImage("images/ui/attention_tag.png");
var _g = notif;
_g.set_x(_g.get_x() - notif.get_width() / 2);
var _g1 = notif;
_g1.set_y(_g1.get_y() - notif.get_height() / 2);
this._notif = new openfl.display.Sprite();
this._notif.addChild(notif);
this._notif.set_x(this._tabBtn.get_x() + this._tabBtn.get_width() * 0.35);
this._notif.set_y(this._tabBtn.get_y() - this._tabBtn.get_height() * 0.45);
this._notif.set_visible(false);
this.addChild(this._notif);
this._scrBox = new openfl.display.Sprite();
this.addChild(this._scrBox);
this._back = co.doubleduck.utils.DDAssets.getImage("images/tools_menu/bg.png");
var _g2 = this._scrBox;
_g2.set_x(_g2.get_x() - this._back.get_width());
this._topBar = co.doubleduck.utils.DDAssets.getImage("images/tools_menu/header.png");
this.setupList();
this._backBtn = new co.doubleduck.utils.Button(co.doubleduck.utils.DDAssets.getRawImage("images/tools_menu/btn_back.png"));
this._backBtn.set_x(this._backBtn.get_width() / 2 + 20);
this._backBtn.set_y(this._backBtn.get_height() / 2 + 5);
this._backBtn.addEventListener("BUTTON_ACT_EVENT",$bind(this,this.handleBackBtn));
this._backBtn.enabled = false;
this._scrBox.addChild(this._back);
this._scrBox.addChild(this._toolsList);
this._scrBox.addChild(this._topBar);
this._scrBox.addChild(this._backBtn);
co.doubleduck.pinata.meta.Stats.addListener("UpdateCandiesEvent",$bind(this,this.handlePCandies));
};
$hxClasses["co.doubleduck.pinata.core.tools.ToolsScr"] = co.doubleduck.pinata.core.tools.ToolsScr;
co.doubleduck.pinata.core.tools.ToolsScr.__name__ = ["co","doubleduck","pinata","core","tools","ToolsScr"];
co.doubleduck.pinata.core.tools.ToolsScr.__super__ = openfl.display.Sprite;
co.doubleduck.pinata.core.tools.ToolsScr.prototype = $extend(openfl.display.Sprite.prototype,{
handlePCandies: function(e) {
if(!co.doubleduck.pinata.core.TutorOverlay.inst().hasPassedStep(co.doubleduck.pinata.core.TutorStep.TAP_TAB_BTN) && !co.doubleduck.pinata.meta.BigInt.isGT(co.doubleduck.pinata.meta.Stats.getPriceForTool("good-ol-bat",2),co.doubleduck.pinata.meta.Stats.getPCandies())) {
if(co.doubleduck.pinata.core.TutorOverlay.inst().tryShowStep(co.doubleduck.pinata.core.TutorStep.TAP_TAB_BTN)) this.set_visible(true);
}
}
,closeIdOpened: function() {
if(this._isOpened) this.handleBackBtn(null);
}
,addToNotif: function(tool) {
if(this._notifOnTools.length >= 2) this._notifOnTools.shift().setBuyNotif(false);
this._notifOnTools.push(tool);
}
,setupList: function() {
if(this._toolsList != null) {
this._scrBox.removeChild(this._toolsList);
this._toolsList = null;
}
var scrollRect = co.doubleduck.pinata.Game.getScreenSize().clone();
scrollRect.height -= this._topBar.get_height() + 10;
this._toolsList = new co.doubleduck.pinata.meta.ScrolledList(scrollRect,true);
this._toolsList.itemPadding = 10;
this._toolsList.set_y(co.doubleduck.pinata.Game.getScreenSize().height - scrollRect.height);
var prevName = "";
var _g = 0;
var _g1 = this._toolsData;
while(_g < _g1.length) {
var currData = _g1[_g];
++_g;
if(currData.showWhenPrev != null) {
var prevLevel = co.doubleduck.pinata.meta.Stats.getToolLevel(prevName);
if(prevLevel < Std["int"](currData.showWhenPrev)) break;
}
var newItem = new co.doubleduck.pinata.core.tools.ToolItem(currData);
newItem.addEventListener("UpgradedEvent",$bind(this,this.recheckList));
newItem.addEventListener("RetestNotifEvent",$bind(this,this.retestNotif));
this.addToNotif(newItem);
this._toolsList.addItem(newItem);
prevName = currData.id;
}
}
,recheckList: function(e) {
var tool = e.target;
var prevName = "";
var _g = 0;
var _g1 = this._toolsData;
while(_g < _g1.length) {
var currData = _g1[_g];
++_g;
if(prevName == "") {
if(currData.id == tool.getToolId()) prevName = currData.id;
continue;
}
if(currData.showWhenPrev != null) {
var prevLevel = co.doubleduck.pinata.meta.Stats.getToolLevel(prevName);
if(prevLevel != Std["int"](currData.showWhenPrev)) break;
}
var newItem = new co.doubleduck.pinata.core.tools.ToolItem(currData);
newItem.addEventListener("UpgradedEvent",$bind(this,this.recheckList));
newItem.addEventListener("RetestNotifEvent",$bind(this,this.retestNotif));
this.addToNotif(newItem);
this._toolsList.addItem(newItem);
prevName = currData.id;
}
}
,retestNotif: function(e) {
var hasNotif = false;
var _g1 = 0;
var _g = this._notifOnTools.length;
while(_g1 < _g) {
var i = _g1++;
var tool = this._notifOnTools[i];
var toolNotif = false;
if(tool.capPlayerBuy()) {
if(i + 1 == this._notifOnTools.length) {
hasNotif = true;
toolNotif = true;
} else {
var currLevel = co.doubleduck.pinata.meta.Stats.getToolLevel(this._notifOnTools[i].getToolId());
var nextLevel = co.doubleduck.pinata.meta.Stats.getToolLevel(this._notifOnTools[i + 1].getToolId());
if(Math.floor(currLevel / 5) <= Math.floor(nextLevel / 5)) {
hasNotif = true;
toolNotif = true;
}
}
}
tool.setBuyNotif(toolNotif);
}
this.toggleNotif(hasNotif);
}
,toggleNotif: function(flag) {
if(this._notif.get_visible() == flag) return;
if(flag) this.animNotif();
this._notif.set_visible(flag);
}
,animNotif: function() {
co.doubleduck.utils.TweenChain.removeTweens(this._notif);
this._notif.set_scaleX(this._notif.set_scaleY(1));
co.doubleduck.utils.TweenChain.get(this._notif).tto({ scaleX : 1.15, scaleY : 1.15},350,motion.easing.Sine.get_easeInOut()).tto({ scaleX : 1, scaleY : 1},250,motion.easing.Sine.get_easeInOut()).call($bind(this,this.animNotif),[]);
}
,handleTabBtn: function(e) {
var _g = this;
co.doubleduck.pinata.core.TutorOverlay.inst().actedOnStep(co.doubleduck.pinata.core.TutorStep.TAP_TAB_BTN);
this.dispatchEvent(new openfl.events.Event(openfl.events.Event.OPEN));
this._isOpened = true;
co.doubleduck.utils.SoundMgr.playSound("menu_open");
this._tabBtn.enabled = false;
co.doubleduck.utils.TweenChain.removeTweens(this);
co.doubleduck.utils.TweenChain.get(this).tto({ x : -this._scrBox.get_x()},300,motion.easing.Sine.get_easeInOut()).call(function() {
_g._backBtn.enabled = true;
co.doubleduck.pinata.core.TutorOverlay.inst().tryShowStep(co.doubleduck.pinata.core.TutorStep.BUY_FIRST_UPGRADE);
var newestTool = _g._notifOnTools[_g._notifOnTools.length - 1];
if(newestTool.getToolId() == "pinata-smasher" && co.doubleduck.pinata.meta.Stats.getToolLevel("pinata-smasher") == 0 && newestTool.capPlayerBuy()) co.doubleduck.pinata.core.TutorOverlay.inst().tryShowStep(co.doubleduck.pinata.core.TutorStep.BUY_FIRST_AUTO);
});
}
,handleBackBtn: function(e) {
var _g = this;
this._isOpened = false;
co.doubleduck.pinata.core.TutorOverlay.inst().actedOnStep(co.doubleduck.pinata.core.TutorStep.EXIT_SHOP);
co.doubleduck.utils.SoundMgr.playSound("menu_open");
this._backBtn.enabled = false;
co.doubleduck.utils.TweenChain.removeTweens(this);
co.doubleduck.utils.TweenChain.get(this).tto({ x : 0},300,motion.easing.Sine.get_easeInOut()).call(function() {
_g._tabBtn.enabled = true;
});
}
,__class__: co.doubleduck.pinata.core.tools.ToolsScr
});
co.doubleduck.pinata.data = {};
co.doubleduck.pinata.data.GameplayDB = function() {
this.data = JSON.parse(openfl.Assets.getText("data/gameplay.js"));
};
$hxClasses["co.doubleduck.pinata.data.GameplayDB"] = co.doubleduck.pinata.data.GameplayDB;
co.doubleduck.pinata.data.GameplayDB.__name__ = ["co","doubleduck","pinata","data","GameplayDB"];
co.doubleduck.pinata.data.GameplayDB._instance = null;
co.doubleduck.pinata.data.GameplayDB.instance = function() {
if(co.doubleduck.pinata.data.GameplayDB._instance == null) co.doubleduck.pinata.data.GameplayDB._instance = new co.doubleduck.pinata.data.GameplayDB();
return co.doubleduck.pinata.data.GameplayDB._instance;
};
co.doubleduck.pinata.data.GameplayDB.getLevelData = function(levelId) {
var levels = co.doubleduck.pinata.data.GameplayDB.getLevels();
if(levelId <= levels.length && levels[levelId - 1].id == levelId) return levels[levelId - 1];
var _g = 0;
while(_g < levels.length) {
var dat = levels[_g];
++_g;
if(dat.id == levelId) return dat;
}
return null;
};
co.doubleduck.pinata.data.GameplayDB.getLevels = function() {
return co.doubleduck.pinata.data.GameplayDB.getData().levelsData;
};
co.doubleduck.pinata.data.GameplayDB.getToolData = function(toolId) {
var tools = co.doubleduck.pinata.data.GameplayDB.getTools();
var _g = 0;
while(_g < tools.length) {
var dat = tools[_g];
++_g;
if(dat.id == toolId) return dat;
}
return null;
};
co.doubleduck.pinata.data.GameplayDB.getTools = function() {
return co.doubleduck.pinata.data.GameplayDB.getData().toolsData;
};
co.doubleduck.pinata.data.GameplayDB.getMissionsData = function() {
return co.doubleduck.pinata.data.GameplayDB.getData().missionsData;
};
co.doubleduck.pinata.data.GameplayDB.getMissionPack = function(packId) {
var packs = co.doubleduck.pinata.data.GameplayDB.getMissionsData().data;
var _g = 0;
while(_g < packs.length) {
var dat = packs[_g];
++_g;
if(Std["int"](dat.packId) == packId) return dat;
}
return null;
};
co.doubleduck.pinata.data.GameplayDB.getMissionTypeData = function(typeId) {
var typesData = co.doubleduck.pinata.data.GameplayDB.getMissionsData().types;
var _g = 0;
while(_g < typesData.length) {
var dat = typesData[_g];
++_g;
if(dat.id == typeId) return dat;
}
return null;
};
co.doubleduck.pinata.data.GameplayDB.getMissionData = function(packId,missionInd) {
var pack = co.doubleduck.pinata.data.GameplayDB.getMissionPack(packId);
var mission = pack.missions[missionInd];
var typeData = co.doubleduck.pinata.data.GameplayDB.getMissionTypeData(mission.id);
var data = { };
data.id = mission.id;
data.desc = typeData.desc;
data.value = mission.value;
return data;
};
co.doubleduck.pinata.data.GameplayDB.getData = function() {
return co.doubleduck.pinata.data.GameplayDB.instance().data;
};
co.doubleduck.pinata.data.GameplayDB.setData = function(data) {
co.doubleduck.pinata.data.GameplayDB.instance().data = data;
};
co.doubleduck.pinata.data.GameplayDB.prototype = {
__class__: co.doubleduck.pinata.data.GameplayDB
};
co.doubleduck.pinata.data.Persistence = function() { };
$hxClasses["co.doubleduck.pinata.data.Persistence"] = co.doubleduck.pinata.data.Persistence;
co.doubleduck.pinata.data.Persistence.__name__ = ["co","doubleduck","pinata","data","Persistence"];
co.doubleduck.pinata.data.Persistence._storageAdapter = null;
co.doubleduck.pinata.data.Persistence.init = function(domain) {
if(domain == null) domain = "";
co.doubleduck.pinata.data.Persistence._storageAdapter = co.doubleduck.utils.data.StorageAdapter.get(domain,co.doubleduck.utils.data.StorageAdapterType.LOCAL_STORAGE);
};
co.doubleduck.pinata.data.Persistence.initGameData = function() {
co.doubleduck.pinata.data.Persistence.initString(co.doubleduck.pinata.data.DataKey.MUTE_STATE,"false");
co.doubleduck.pinata.data.Persistence.initString(co.doubleduck.pinata.data.DataKey.PLAYER_CANDIES,"0K");
co.doubleduck.pinata.data.Persistence.initString(co.doubleduck.pinata.data.DataKey.TOOLS_STATE,"good-ol-bat" + ":1");
co.doubleduck.pinata.data.Persistence.initString(co.doubleduck.pinata.data.DataKey.TUTOR_STEP,"");
co.doubleduck.pinata.data.Persistence.initString(co.doubleduck.pinata.data.DataKey.CURR_PIECES_LEFT,"0,1,2,3,4,5,6,7,8");
co.doubleduck.pinata.data.Persistence.initString(co.doubleduck.pinata.data.DataKey.CURR_PIECES_GOT,"");
co.doubleduck.pinata.data.Persistence.initInt(co.doubleduck.pinata.data.DataKey.ACTIVE_LEVEL,1);
co.doubleduck.pinata.data.Persistence.initInt(co.doubleduck.pinata.data.DataKey.UNLOCKED_LEVEL,1);
co.doubleduck.pinata.data.Persistence.initInt(co.doubleduck.pinata.data.DataKey.LATEST_TIME_KEPT,0);
co.doubleduck.pinata.data.Persistence.initInt(co.doubleduck.pinata.data.DataKey.TUTOR_STAGE,0);
co.doubleduck.pinata.data.Persistence.initInt(co.doubleduck.pinata.data.DataKey.RUNS_COUNTER,0);
co.doubleduck.pinata.data.Persistence.initInt(co.doubleduck.pinata.data.DataKey.PINATA_KILL_COUNT,0);
co.doubleduck.pinata.data.Persistence.initInt(co.doubleduck.pinata.data.DataKey.CURR_MISSION_PACK,1);
co.doubleduck.pinata.data.Persistence.initInt(co.doubleduck.pinata.data.DataKey.CURR_MISSION_IND,0);
co.doubleduck.pinata.data.Persistence.initInt(co.doubleduck.pinata.data.DataKey.PINATAS_BEAT_MISSION,0);
};
co.doubleduck.pinata.data.Persistence.getInt = function(key) {
return co.doubleduck.pinata.data.Persistence._storageAdapter.getInt(key);
};
co.doubleduck.pinata.data.Persistence.setInt = function(key,val) {
co.doubleduck.pinata.data.Persistence._storageAdapter.setInt(key,val);
};
co.doubleduck.pinata.data.Persistence.initInt = function(key,defaultValue) {
if(defaultValue == null) defaultValue = 0;
co.doubleduck.pinata.data.Persistence._storageAdapter.initInt(key,defaultValue);
};
co.doubleduck.pinata.data.Persistence.getFloat = function(key) {
return co.doubleduck.pinata.data.Persistence._storageAdapter.getFloat(key);
};
co.doubleduck.pinata.data.Persistence.setFloat = function(key,val) {
co.doubleduck.pinata.data.Persistence._storageAdapter.setFloat(key,val);
};
co.doubleduck.pinata.data.Persistence.initFloat = function(key,defaultValue) {
if(defaultValue == null) defaultValue = 0;
co.doubleduck.pinata.data.Persistence._storageAdapter.initFloat(key,defaultValue);
};
co.doubleduck.pinata.data.Persistence.getString = function(key) {
return co.doubleduck.pinata.data.Persistence._storageAdapter.getString(key);
};
co.doubleduck.pinata.data.Persistence.setString = function(key,val) {
co.doubleduck.pinata.data.Persistence._storageAdapter.setString(key,val);
};
co.doubleduck.pinata.data.Persistence.initString = function(key,defaultValue) {
if(defaultValue == null) defaultValue = "";
co.doubleduck.pinata.data.Persistence._storageAdapter.initString(key,defaultValue);
};
co.doubleduck.pinata.data.Persistence.clear = function() {
co.doubleduck.pinata.data.Persistence._storageAdapter.clear();
};
co.doubleduck.pinata.data.Persistence.adapter = function() {
return co.doubleduck.pinata.data.Persistence._storageAdapter;
};
co.doubleduck.pinata.data.DataKey = $hxClasses["co.doubleduck.pinata.data.DataKey"] = { __ename__ : ["co","doubleduck","pinata","data","DataKey"], __constructs__ : ["MUTE_STATE","PLAYER_CANDIES","ACTIVE_LEVEL","TOOLS_STATE","UNLOCKED_LEVEL","LATEST_TIME_KEPT","TUTOR_STAGE","TUTOR_STEP","RUNS_COUNTER","PINATA_KILL_COUNT","CURR_MISSION_PACK","CURR_MISSION_IND","CURR_PIECES_LEFT","CURR_PIECES_GOT","PINATAS_BEAT_MISSION"] };
co.doubleduck.pinata.data.DataKey.MUTE_STATE = ["MUTE_STATE",0];
co.doubleduck.pinata.data.DataKey.MUTE_STATE.toString = $estr;
co.doubleduck.pinata.data.DataKey.MUTE_STATE.__enum__ = co.doubleduck.pinata.data.DataKey;
co.doubleduck.pinata.data.DataKey.PLAYER_CANDIES = ["PLAYER_CANDIES",1];
co.doubleduck.pinata.data.DataKey.PLAYER_CANDIES.toString = $estr;
co.doubleduck.pinata.data.DataKey.PLAYER_CANDIES.__enum__ = co.doubleduck.pinata.data.DataKey;
co.doubleduck.pinata.data.DataKey.ACTIVE_LEVEL = ["ACTIVE_LEVEL",2];
co.doubleduck.pinata.data.DataKey.ACTIVE_LEVEL.toString = $estr;
co.doubleduck.pinata.data.DataKey.ACTIVE_LEVEL.__enum__ = co.doubleduck.pinata.data.DataKey;
co.doubleduck.pinata.data.DataKey.TOOLS_STATE = ["TOOLS_STATE",3];
co.doubleduck.pinata.data.DataKey.TOOLS_STATE.toString = $estr;
co.doubleduck.pinata.data.DataKey.TOOLS_STATE.__enum__ = co.doubleduck.pinata.data.DataKey;
co.doubleduck.pinata.data.DataKey.UNLOCKED_LEVEL = ["UNLOCKED_LEVEL",4];
co.doubleduck.pinata.data.DataKey.UNLOCKED_LEVEL.toString = $estr;
co.doubleduck.pinata.data.DataKey.UNLOCKED_LEVEL.__enum__ = co.doubleduck.pinata.data.DataKey;
co.doubleduck.pinata.data.DataKey.LATEST_TIME_KEPT = ["LATEST_TIME_KEPT",5];
co.doubleduck.pinata.data.DataKey.LATEST_TIME_KEPT.toString = $estr;
co.doubleduck.pinata.data.DataKey.LATEST_TIME_KEPT.__enum__ = co.doubleduck.pinata.data.DataKey;
co.doubleduck.pinata.data.DataKey.TUTOR_STAGE = ["TUTOR_STAGE",6];
co.doubleduck.pinata.data.DataKey.TUTOR_STAGE.toString = $estr;
co.doubleduck.pinata.data.DataKey.TUTOR_STAGE.__enum__ = co.doubleduck.pinata.data.DataKey;
co.doubleduck.pinata.data.DataKey.TUTOR_STEP = ["TUTOR_STEP",7];
co.doubleduck.pinata.data.DataKey.TUTOR_STEP.toString = $estr;
co.doubleduck.pinata.data.DataKey.TUTOR_STEP.__enum__ = co.doubleduck.pinata.data.DataKey;
co.doubleduck.pinata.data.DataKey.RUNS_COUNTER = ["RUNS_COUNTER",8];
co.doubleduck.pinata.data.DataKey.RUNS_COUNTER.toString = $estr;
co.doubleduck.pinata.data.DataKey.RUNS_COUNTER.__enum__ = co.doubleduck.pinata.data.DataKey;
co.doubleduck.pinata.data.DataKey.PINATA_KILL_COUNT = ["PINATA_KILL_COUNT",9];
co.doubleduck.pinata.data.DataKey.PINATA_KILL_COUNT.toString = $estr;
co.doubleduck.pinata.data.DataKey.PINATA_KILL_COUNT.__enum__ = co.doubleduck.pinata.data.DataKey;
co.doubleduck.pinata.data.DataKey.CURR_MISSION_PACK = ["CURR_MISSION_PACK",10];
co.doubleduck.pinata.data.DataKey.CURR_MISSION_PACK.toString = $estr;
co.doubleduck.pinata.data.DataKey.CURR_MISSION_PACK.__enum__ = co.doubleduck.pinata.data.DataKey;
co.doubleduck.pinata.data.DataKey.CURR_MISSION_IND = ["CURR_MISSION_IND",11];
co.doubleduck.pinata.data.DataKey.CURR_MISSION_IND.toString = $estr;
co.doubleduck.pinata.data.DataKey.CURR_MISSION_IND.__enum__ = co.doubleduck.pinata.data.DataKey;
co.doubleduck.pinata.data.DataKey.CURR_PIECES_LEFT = ["CURR_PIECES_LEFT",12];
co.doubleduck.pinata.data.DataKey.CURR_PIECES_LEFT.toString = $estr;
co.doubleduck.pinata.data.DataKey.CURR_PIECES_LEFT.__enum__ = co.doubleduck.pinata.data.DataKey;
co.doubleduck.pinata.data.DataKey.CURR_PIECES_GOT = ["CURR_PIECES_GOT",13];
co.doubleduck.pinata.data.DataKey.CURR_PIECES_GOT.toString = $estr;
co.doubleduck.pinata.data.DataKey.CURR_PIECES_GOT.__enum__ = co.doubleduck.pinata.data.DataKey;
co.doubleduck.pinata.data.DataKey.PINATAS_BEAT_MISSION = ["PINATAS_BEAT_MISSION",14];
co.doubleduck.pinata.data.DataKey.PINATAS_BEAT_MISSION.toString = $estr;
co.doubleduck.pinata.data.DataKey.PINATAS_BEAT_MISSION.__enum__ = co.doubleduck.pinata.data.DataKey;
co.doubleduck.pinata.meta.AwayModal = function(reward) {
openfl.display.Sprite.call(this);
this._over = new openfl.display.Sprite();
this._over.get_graphics().beginFill(0);
this._over.get_graphics().drawRect(0,0,co.doubleduck.pinata.Game.getScreenSize().width,co.doubleduck.pinata.Game.getScreenSize().height);
this._over.get_graphics().endFill();
this._over.set_alpha(0.7);
var _g = this._over;
_g.set_x(_g.get_x() - co.doubleduck.pinata.Game.getScreenSize().width / 2);
var _g1 = this._over;
_g1.set_y(_g1.get_y() - co.doubleduck.pinata.Game.getScreenSize().height / 2);
this.addChild(this._over);
this._back = co.doubleduck.utils.DDAssets.getImage("images/ui/modal_away/bg.png");
var _g2 = this._back;
_g2.set_x(_g2.get_x() - this._back.get_width() / 2);
var _g3 = this._back;
_g3.set_y(_g3.get_y() - this._back.get_height() / 2);
this.addChild(this._back);
this._reward = co.doubleduck.utils.Fonter.getString("$" + reward.toString(),"images/fonts/yellow_big/");
this._reward.set_y(this._back.get_y() + this._back.get_height() * 0.6);
this.addChild(this._reward);
this._okBtn = new co.doubleduck.utils.Button(co.doubleduck.utils.DDAssets.getRawImage("images/ui/modal_away/btn_ok.png"));
this._okBtn.addEventListener("BUTTON_ACT_EVENT",$bind(this,this.handleOk));
this._okBtn.set_y(this._back.get_y() + this._back.get_height() * 0.8);
this.addChild(this._okBtn);
};
$hxClasses["co.doubleduck.pinata.meta.AwayModal"] = co.doubleduck.pinata.meta.AwayModal;
co.doubleduck.pinata.meta.AwayModal.__name__ = ["co","doubleduck","pinata","meta","AwayModal"];
co.doubleduck.pinata.meta.AwayModal.__super__ = openfl.display.Sprite;
co.doubleduck.pinata.meta.AwayModal.prototype = $extend(openfl.display.Sprite.prototype,{
handleOk: function(e) {
var _g = this;
this._okBtn.enabled = false;
this._okBtn.removeEventListener("BUTTON_ACT_EVENT",$bind(this,this.handleOk));
co.doubleduck.utils.TweenChain.get(this).wait(50).tto({ alpha : 0.01},150).call(function() {
if(_g.callWhenDone != null) _g.callWhenDone();
if(_g.parent != null) _g.parent.removeChild(_g);
});
}
,__class__: co.doubleduck.pinata.meta.AwayModal
});
co.doubleduck.pinata.meta.BigInt = function(dat) {
this._data = dat;
};
$hxClasses["co.doubleduck.pinata.meta.BigInt"] = co.doubleduck.pinata.meta.BigInt;
co.doubleduck.pinata.meta.BigInt.__name__ = ["co","doubleduck","pinata","meta","BigInt"];
co.doubleduck.pinata.meta.BigInt.fromString = function(val) {
if(co.doubleduck.pinata.meta.BigInt.isAlpha(HxOverrides.cca(val,val.length - 1))) {
var suff = val.charAt(val.length - 1);
val = HxOverrides.substr(val,0,val.length - 1);
var zeros = (co.doubleduck.pinata.meta.BigInt.SUFFIX.indexOf(suff) + 1) * 3;
while(zeros > 0) {
val = val + "0";
zeros--;
}
}
while(val.length % 3 > 0) val = "0" + val;
var res = new Array();
while(val.length > 0) {
var part = HxOverrides.substr(val,val.length - 3,3);
res.push(Std.parseInt(part));
val = HxOverrides.substr(val,0,val.length - 3);
}
while(res.length > 1 && res[res.length - 1] == 0) res.pop();
return new co.doubleduck.pinata.meta.BigInt(res);
};
co.doubleduck.pinata.meta.BigInt.fromInt = function(val) {
return co.doubleduck.pinata.meta.BigInt.fromString("" + val);
};
co.doubleduck.pinata.meta.BigInt.add = function(lval,rval) {
if(co.doubleduck.pinata.meta.BigInt.isZero(lval)) return rval.clone(); else if(co.doubleduck.pinata.meta.BigInt.isZero(rval)) return lval.clone();
var level = 0;
var carry = 0;
var done = false;
var res = new Array();
var ldat = lval._data;
var rdat = rval._data;
while(!done) {
var curr = carry;
if(level < ldat.length) curr += ldat[level]; else curr += 0;
if(level < rdat.length) curr += rdat[level]; else curr += 0;
carry = Math.floor(curr / 1000);
curr -= carry * 1000;
res.push(curr);
level++;
done = carry == 0 && (level >= ldat.length && level >= rdat.length);
}
while(res.length > 1 && res[res.length - 1] == 0) res.pop();
return new co.doubleduck.pinata.meta.BigInt(res);
};
co.doubleduck.pinata.meta.BigInt.subtract = function(lval,rval) {
if(co.doubleduck.pinata.meta.BigInt.isZero(rval)) return lval.clone(); else if(!co.doubleduck.pinata.meta.BigInt.isGT(lval,rval)) return co.doubleduck.pinata.meta.BigInt.fromInt(0);
var level = 0;
var carry = 0;
var done = false;
var res = new Array();
var ldat = lval._data;
var rdat = rval._data;
while(!done) {
var curr = carry;
if(level < ldat.length) curr += ldat[level]; else curr += 0;
if(level < rdat.length) curr -= rdat[level]; else curr -= 0;
carry = Math.floor(curr / 1000);
curr -= carry * 1000;
res.push(curr);
level++;
done = carry == 0 && (level >= ldat.length && level >= rdat.length);
}
while(res.length > 1 && res[res.length - 1] == 0) res.pop();
return new co.doubleduck.pinata.meta.BigInt(res);
};
co.doubleduck.pinata.meta.BigInt.roughDiv = function(lval,rval) {
var accuracy = 8;
var ldat = lval.toFullString();
var rdat = rval.toFullString();
var fixDat = function(val) {
if(val.length == 0) return "0";
return val;
};
while(ldat.length > accuracy || rdat.length > accuracy) {
ldat = fixDat(ldat);
rdat = fixDat(rdat);
ldat = HxOverrides.substr(ldat,0,ldat.length - 1);
rdat = HxOverrides.substr(rdat,0,rdat.length - 1);
}
ldat = fixDat(ldat);
rdat = fixDat(rdat);
var lint = Std.parseInt(ldat);
var rint = Std.parseInt(rdat);
if(rint == 0) return Math.POSITIVE_INFINITY;
return lint / rint;
};
co.doubleduck.pinata.meta.BigInt.mulScalar = function(lval,rval) {
if(rval == 0 || co.doubleduck.pinata.meta.BigInt.isZero(lval)) return co.doubleduck.pinata.meta.BigInt.fromInt(0); else if(rval == 1) return lval.clone();
var ldat = lval._data;
var res = new Array();
var _g1 = 0;
var _g = ldat.length;
while(_g1 < _g) {
var i = _g1++;
var miniRes = ldat[i] * rval;
res[i] = Math.floor(miniRes);
miniRes -= Math.floor(miniRes);
var addTo = i - 1;
while(addTo >= 0) {
miniRes *= 1000;
res[addTo] += Math.floor(miniRes);
miniRes -= Math.floor(miniRes);
addTo--;
}
}
var done = false;
var curr = 0;
var carry = 0;
while(!done) {
if(curr >= res.length) res.push(0);
res[curr] += carry;
carry = Math.floor(res[curr] / 1000);
res[curr] -= carry * 1000;
curr++;
done = curr >= res.length && carry == 0;
}
while(res.length > 1 && res[res.length - 1] == 0) res.pop();
return new co.doubleduck.pinata.meta.BigInt(res);
};
co.doubleduck.pinata.meta.BigInt.isGT = function(lval,rval) {
var ldat = lval._data;
var rdat = rval._data;
if(ldat.length != rdat.length) return ldat.length > rdat.length; else {
var _g1 = 0;
var _g = ldat.length;
while(_g1 < _g) {
var i = _g1++;
if(ldat[ldat.length - i - 1] != rdat[rdat.length - i - 1]) return ldat[ldat.length - i - 1] > rdat[rdat.length - i - 1];
}
}
return false;
};
co.doubleduck.pinata.meta.BigInt.isEqual = function(lval,rval) {
var ldat = lval._data;
var rdat = rval._data;
if(ldat.length != rdat.length) return false; else {
var _g1 = 0;
var _g = ldat.length;
while(_g1 < _g) {
var i = _g1++;
if(ldat[i] != rdat[i]) return false;
}
}
return true;
};
co.doubleduck.pinata.meta.BigInt.isZero = function(val) {
var dat = val._data;
return dat.length == 1 && dat[0] == 0;
};
co.doubleduck.pinata.meta.BigInt.isNum = function(code) {
return code >= HxOverrides.cca("0",0) && code <= HxOverrides.cca("9",0);
};
co.doubleduck.pinata.meta.BigInt.isAlpha = function(code) {
return code >= HxOverrides.cca("a",0) && code <= HxOverrides.cca("z",0) || code >= HxOverrides.cca("A",0) && code <= HxOverrides.cca("Z",0);
};
co.doubleduck.pinata.meta.BigInt.prototype = {
toString: function() {
var level = this._data.length - 1;
var num;
if(this._data[this._data.length - 1] < 10 && this._data.length > 1) {
num = this._data[this._data.length - 1] * 1000;
num += this._data[this._data.length - 2];
level--;
} else num = this._data[this._data.length - 1];
var res = co.doubleduck.utils.Fonter.commafyNum(num);
if(level > 0) res += co.doubleduck.pinata.meta.BigInt.SUFFIX.charAt(level - 1);
return res;
}
,toFullString: function() {
var res = "";
var _g1 = 0;
var _g = this._data.length;
while(_g1 < _g) {
var i = _g1++;
var curr = "" + this._data[i];
while(curr.length < 3) curr = "0" + curr;
res = curr + res;
}
while(res.charAt(0) == "0" && res.length > 1) res = HxOverrides.substr(res,1,res.length - 1);
return res;
}
,dataString: function() {
return "" + Std.string(this._data);
}
,clone: function() {
var dat = this._data.slice();
return new co.doubleduck.pinata.meta.BigInt(dat);
}
,__class__: co.doubleduck.pinata.meta.BigInt
};
co.doubleduck.pinata.meta.FlowEvents = function() { };
$hxClasses["co.doubleduck.pinata.meta.FlowEvents"] = co.doubleduck.pinata.meta.FlowEvents;
co.doubleduck.pinata.meta.FlowEvents.__name__ = ["co","doubleduck","pinata","meta","FlowEvents"];
co.doubleduck.pinata.meta.Menu = function(data) {
openfl.display.Sprite.call(this);
co.doubleduck.utils.Utils.delayedCall(0.1,$bind(this,this.dispatchEvent),[new openfl.events.Event(co.doubleduck.pinata.meta.FlowEvents.START_SESSION)]);
};
$hxClasses["co.doubleduck.pinata.meta.Menu"] = co.doubleduck.pinata.meta.Menu;
co.doubleduck.pinata.meta.Menu.__name__ = ["co","doubleduck","pinata","meta","Menu"];
co.doubleduck.pinata.meta.Menu.__super__ = openfl.display.Sprite;
co.doubleduck.pinata.meta.Menu.prototype = $extend(openfl.display.Sprite.prototype,{
destroy: function() {
}
,__class__: co.doubleduck.pinata.meta.Menu
});
co.doubleduck.pinata.meta.ScrolledList = function(size,dirVertical) {
this.scrollable = true;
this.itemSnap = false;
this.itemPadding = 0;
openfl.display.Sprite.call(this);
this._touch = size.clone();
this._dirVertical = dirVertical;
this._items = new Array();
this._itemBox = new openfl.display.Sprite();
this.addChild(this._itemBox);
this._maxPos = new openfl.geom.Point(0,0);
this.addEventListener(openfl.events.Event.ADDED_TO_STAGE,$bind(this,this.handleStage));
};
$hxClasses["co.doubleduck.pinata.meta.ScrolledList"] = co.doubleduck.pinata.meta.ScrolledList;
co.doubleduck.pinata.meta.ScrolledList.__name__ = ["co","doubleduck","pinata","meta","ScrolledList"];
co.doubleduck.pinata.meta.ScrolledList.__super__ = openfl.display.Sprite;
co.doubleduck.pinata.meta.ScrolledList.prototype = $extend(openfl.display.Sprite.prototype,{
handleStage: function(e) {
this.removeEventListener(openfl.events.Event.ADDED_TO_STAGE,$bind(this,this.handleStage));
this.stage.addEventListener(openfl.events.MouseEvent.MOUSE_DOWN,$bind(this,this.handleOverlay));
}
,addItem: function(item) {
if(this._dirVertical) {
item.set_y(this._maxPos.y);
item.set_x(this._touch.width / 2 - item.get_width() / 2);
this._maxPos.y += item.get_height() + this.itemPadding;
} else {
item.set_x(this._maxPos.x);
item.set_y(this._touch.height / 2 - item.get_height() / 2);
this._maxPos.x += item.get_width() + this.itemPadding;
}
this._items.push(item);
this._itemBox.addChild(item);
}
,getLength: function() {
return this._items.length;
}
,getItem: function(index) {
return this._items[index];
}
,stopScroll: function() {
if(this._touchPos != null) this.handleOverlay(new openfl.events.MouseEvent(openfl.events.MouseEvent.MOUSE_UP));
}
,focusOnIndex: function(index,force) {
if(force == null) force = false;
this.focusOnItem(this._items[index],force);
}
,focusOnItem: function(item,force) {
if(force == null) force = false;
co.doubleduck.utils.TweenChain.removeTweens(this._itemBox);
if(this._dirVertical) {
var snapPos = this._touch.y + this._touch.height / 2;
var target = snapPos - (item.get_y() + item.get_height() / 2);
target = Math.min(target,0);
target = Math.max(target,this._touch.height - Math.max(this._maxPos.y,this._touch.height));
if(force) this._itemBox.set_y(target); else co.doubleduck.utils.TweenChain.get(this._itemBox).tto({ y : target},200,motion.easing.Sine.get_easeOut());
} else {
var snapPos1 = this._touch.x + this._touch.width / 2;
var target1 = snapPos1 - (item.get_x() + item.get_width() / 2);
target1 = Math.min(target1,0);
target1 = Math.max(target1,this._touch.width - Math.max(this._maxPos.x,this._touch.width));
if(force) this._itemBox.set_x(target1); else co.doubleduck.utils.TweenChain.get(this._itemBox).tto({ x : target1},200,motion.easing.Sine.get_easeOut());
}
}
,handleOverlay: function(e) {
if(!this.scrollable) return;
var pos = this.globalToLocal(new openfl.geom.Point(e.stageX,e.stageY));
if(e.type == openfl.events.MouseEvent.MOUSE_DOWN) {
if(this._touch.contains(pos.x,pos.y) && this.get_visible() && this.get_alpha() > 0) {
this._touchPos = pos;
this._srcPos = new openfl.geom.Point(this._itemBox.get_x(),this._itemBox.get_y());
this._depressed = false;
this.stage.removeEventListener(openfl.events.MouseEvent.MOUSE_DOWN,$bind(this,this.handleOverlay));
this.stage.addEventListener(openfl.events.MouseEvent.MOUSE_MOVE,$bind(this,this.handleOverlay));
this.stage.addEventListener(openfl.events.MouseEvent.MOUSE_UP,$bind(this,this.handleOverlay));
}
} else if(e.type == openfl.events.MouseEvent.MOUSE_MOVE) {
if(this._touchPos != null) {
var delta;
if(this._dirVertical) delta = pos.y - this._touchPos.y; else delta = pos.x - this._touchPos.x;
if(!this._depressed && Math.abs(delta) > 5) {
this._depressed = true;
co.doubleduck.utils.TweenChain.removeTweens(this._itemBox);
var _g1 = 0;
var _g = this._items.length;
while(_g1 < _g) {
var i = _g1++;
var item = this._items[i];
item.depressItem();
}
}
var target;
target = (this._dirVertical?this._srcPos.y:this._srcPos.x) + delta;
var maxVal;
if(this._dirVertical) maxVal = this._maxPos.y; else maxVal = this._maxPos.x;
var touchVal;
if(this._dirVertical) touchVal = this._touch.height; else touchVal = this._touch.width;
touchVal = Math.min(touchVal,maxVal);
if(target > 0) target *= 0.3; else if(target < touchVal - maxVal) target = (target - (touchVal - maxVal)) * 0.3 + (touchVal - maxVal);
if(this._dirVertical) this._itemBox.set_y(target); else this._itemBox.set_x(target);
}
} else if(e.type == openfl.events.MouseEvent.MOUSE_UP) {
if(this._touchPos != null) {
this._touchPos = null;
this._srcPos = null;
if(this._depressed) {
co.doubleduck.utils.TweenChain.removeTweens(this._itemBox);
if(this._dirVertical) {
if(this._itemBox.get_y() > 0) co.doubleduck.utils.TweenChain.get(this._itemBox).tto({ y : 0},190,motion.easing.Sine.get_easeIn()); else if(this._itemBox.get_y() < this._touch.height - this._maxPos.y) co.doubleduck.utils.TweenChain.get(this._itemBox).tto({ y : this._touch.height - Math.max(this._maxPos.y,this._touch.height)},190,motion.easing.Sine.get_easeIn()); else if(this.itemSnap && this._items.length > 0) {
if(this._itemBox.get_y() < -4 && this._itemBox.get_y() > this._touch.height - this._maxPos.y + 4) {
var snapPos = this._touch.y + this._touch.height / 2;
var closest = this._items[0];
var closestDist = Math.abs(closest.get_y() + closest.get_height() / 2 + this._itemBox.get_y() - snapPos);
var _g11 = 1;
var _g2 = this._items.length;
while(_g11 < _g2) {
var i1 = _g11++;
var item1 = this._items[i1];
var currDist = Math.abs(item1.get_y() + item1.get_height() / 2 + this._itemBox.get_y() - snapPos);
if(currDist < closestDist) {
closest = item1;
closestDist = currDist;
}
}
co.doubleduck.utils.TweenChain.get(this._itemBox).tto({ y : snapPos - (closest.get_y() + closest.get_height() / 2)},100,motion.easing.Sine.get_easeOut());
}
}
} else if(this._itemBox.get_x() > 0) co.doubleduck.utils.TweenChain.get(this._itemBox).tto({ x : 0},190,motion.easing.Sine.get_easeIn()); else if(this._itemBox.get_x() < this._touch.width - this._maxPos.x) co.doubleduck.utils.TweenChain.get(this._itemBox).tto({ x : this._touch.width - Math.max(this._maxPos.x,this._touch.width)},190,motion.easing.Sine.get_easeIn()); else if(this.itemSnap && this._items.length > 0) {
if(this._itemBox.get_x() < -4 && this._itemBox.get_x() > this._touch.width - this._maxPos.x + 4) {
var snapPos1 = this._touch.x + this._touch.width / 2;
var closest1 = this._items[0];
var closestDist1 = Math.abs(closest1.get_x() + closest1.get_width() / 2 + this._itemBox.get_x() - snapPos1);
var _g12 = 1;
var _g3 = this._items.length;
while(_g12 < _g3) {
var i2 = _g12++;
var item2 = this._items[i2];
var currDist1 = Math.abs(item2.get_x() + item2.get_width() / 2 + this._itemBox.get_x() - snapPos1);
if(currDist1 < closestDist1) {
closest1 = item2;
closestDist1 = currDist1;
}
}
co.doubleduck.utils.TweenChain.get(this._itemBox).tto({ x : snapPos1 - (closest1.get_x() + closest1.get_width() / 2)},100,motion.easing.Sine.get_easeOut());
}
}
}
this.stage.removeEventListener(openfl.events.MouseEvent.MOUSE_MOVE,$bind(this,this.handleOverlay));
this.stage.removeEventListener(openfl.events.MouseEvent.MOUSE_UP,$bind(this,this.handleOverlay));
this.stage.addEventListener(openfl.events.MouseEvent.MOUSE_DOWN,$bind(this,this.handleOverlay));
}
}
}
,destroy: function() {
openfl.Lib.current.stage.removeEventListener(openfl.events.MouseEvent.MOUSE_DOWN,$bind(this,this.handleOverlay));
openfl.Lib.current.stage.removeEventListener(openfl.events.MouseEvent.MOUSE_MOVE,$bind(this,this.handleOverlay));
openfl.Lib.current.stage.removeEventListener(openfl.events.MouseEvent.MOUSE_UP,$bind(this,this.handleOverlay));
co.doubleduck.utils.TweenChain.removeTweens(this._itemBox);
while(this._items.length > 0) {
var curr = this._items.pop();
this._itemBox.removeChild(curr);
curr.destroy();
}
}
,__class__: co.doubleduck.pinata.meta.ScrolledList
});
co.doubleduck.pinata.meta.Stats = function() { };
$hxClasses["co.doubleduck.pinata.meta.Stats"] = co.doubleduck.pinata.meta.Stats;
co.doubleduck.pinata.meta.Stats.__name__ = ["co","doubleduck","pinata","meta","Stats"];
co.doubleduck.pinata.meta.Stats._toolsData = null;
co.doubleduck.pinata.meta.Stats._eventer = null;
co.doubleduck.pinata.meta.Stats._toolsState = null;
co.doubleduck.pinata.meta.Stats._toolHPS = null;
co.doubleduck.pinata.meta.Stats._toolPrice = null;
co.doubleduck.pinata.meta.Stats._currHitVal = null;
co.doubleduck.pinata.meta.Stats._currHPSVal = null;
co.doubleduck.pinata.meta.Stats._playerCandies = null;
co.doubleduck.pinata.meta.Stats.addListener = function(type,listener) {
co.doubleduck.pinata.meta.Stats.init();
co.doubleduck.pinata.meta.Stats._eventer.addEventListener(type,listener);
};
co.doubleduck.pinata.meta.Stats.removeListener = function(type,listener) {
co.doubleduck.pinata.meta.Stats.init();
co.doubleduck.pinata.meta.Stats._eventer.removeEventListener(type,listener);
};
co.doubleduck.pinata.meta.Stats.notifyOnEvent = function(type) {
co.doubleduck.pinata.meta.Stats.init();
if(co.doubleduck.pinata.meta.Stats._eventer.hasEventListener(type)) co.doubleduck.pinata.meta.Stats._eventer.dispatchEvent(new openfl.events.Event(type));
};
co.doubleduck.pinata.meta.Stats.getHitVal = function() {
if(co.doubleduck.pinata.meta.Stats._currHitVal == null) {
co.doubleduck.pinata.meta.Stats.init();
co.doubleduck.pinata.meta.Stats._currHitVal = co.doubleduck.pinata.meta.Stats.getHPSForTool("good-ol-bat");
}
return co.doubleduck.pinata.meta.Stats._currHitVal;
};
co.doubleduck.pinata.meta.Stats.getHPS = function() {
if(co.doubleduck.pinata.meta.Stats._currHPSVal == null) {
co.doubleduck.pinata.meta.Stats.init();
co.doubleduck.pinata.meta.Stats._currHPSVal = co.doubleduck.pinata.meta.BigInt.fromInt(0);
var toolsData = co.doubleduck.pinata.data.GameplayDB.getTools();
var _g = 0;
while(_g < toolsData.length) {
var toolData = toolsData[_g];
++_g;
if(toolData.id == "good-ol-bat") continue;
if(co.doubleduck.pinata.meta.Stats.getToolLevel(toolData.id) >= 1) co.doubleduck.pinata.meta.Stats._currHPSVal = co.doubleduck.pinata.meta.BigInt.add(co.doubleduck.pinata.meta.Stats._currHPSVal,co.doubleduck.pinata.meta.Stats.getHPSForTool(toolData.id));
}
}
return co.doubleduck.pinata.meta.Stats._currHPSVal;
};
co.doubleduck.pinata.meta.Stats.getPCandies = function() {
if(co.doubleduck.pinata.meta.Stats._playerCandies == null) co.doubleduck.pinata.meta.Stats._playerCandies = co.doubleduck.pinata.meta.BigInt.fromString(co.doubleduck.pinata.data.Persistence.getString(co.doubleduck.pinata.data.DataKey.PLAYER_CANDIES));
return co.doubleduck.pinata.meta.Stats._playerCandies;
};
co.doubleduck.pinata.meta.Stats.setPCandies = function(val) {
co.doubleduck.pinata.meta.Stats.init();
co.doubleduck.pinata.meta.Stats._playerCandies = val;
co.doubleduck.pinata.data.Persistence.setString(co.doubleduck.pinata.data.DataKey.PLAYER_CANDIES,co.doubleduck.pinata.meta.Stats._playerCandies.toFullString());
co.doubleduck.pinata.meta.Stats.notifyOnEvent("UpdateCandiesEvent");
};
co.doubleduck.pinata.meta.Stats.getToolLevel = function(toolId) {
co.doubleduck.pinata.meta.Stats.init();
var _g = 0;
var _g1 = co.doubleduck.pinata.meta.Stats._toolsState;
while(_g < _g1.length) {
var tool = _g1[_g];
++_g;
if(tool.id == toolId) return tool.lvl;
}
return 0;
};
co.doubleduck.pinata.meta.Stats.setToolLevel = function(toolId,toolLvl) {
co.doubleduck.pinata.meta.Stats.init();
var found = false;
var _g = 0;
var _g1 = co.doubleduck.pinata.meta.Stats._toolsState;
while(_g < _g1.length) {
var tool = _g1[_g];
++_g;
if(tool.id == toolId) {
tool.lvl = toolLvl;
found = true;
}
}
if(!found) {
var tool1 = { };
tool1.id = toolId;
tool1.lvl = toolLvl;
co.doubleduck.pinata.meta.Stats._toolsState.push(tool1);
}
var datas = "";
var _g2 = 0;
var _g11 = co.doubleduck.pinata.meta.Stats._toolsState;
while(_g2 < _g11.length) {
var tool2 = _g11[_g2];
++_g2;
if(datas.length > 0) datas += ",";
datas += tool2.id + ":" + tool2.lvl;
}
co.doubleduck.pinata.data.Persistence.setString(co.doubleduck.pinata.data.DataKey.TOOLS_STATE,datas);
co.doubleduck.pinata.meta.Stats.notifyOnEvent("UpdateToolEvent");
var newToolHPS = co.doubleduck.pinata.meta.Stats.getHPSForTool(toolId);
if(toolId == "good-ol-bat") co.doubleduck.pinata.meta.Stats._currHitVal = newToolHPS; else {
if(toolLvl > 1) co.doubleduck.pinata.meta.Stats._currHPSVal = co.doubleduck.pinata.meta.BigInt.subtract(co.doubleduck.pinata.meta.Stats._currHPSVal,co.doubleduck.pinata.meta.Stats.getHPSForTool(toolId,toolLvl - 1));
co.doubleduck.pinata.meta.Stats._currHPSVal = co.doubleduck.pinata.meta.BigInt.add(co.doubleduck.pinata.meta.Stats._currHPSVal,newToolHPS);
co.doubleduck.pinata.meta.Stats.notifyOnEvent("UpdateHPSEvent");
}
};
co.doubleduck.pinata.meta.Stats.getHPSForTool = function(toolId,toolLvl) {
if(toolLvl == null) toolLvl = -1;
co.doubleduck.pinata.meta.Stats.init();
if(toolLvl == -1) toolLvl = co.doubleduck.pinata.meta.Stats.getToolLevel(toolId);
if(toolLvl == 0) return co.doubleduck.pinata.meta.BigInt.fromInt(0);
if(co.doubleduck.pinata.meta.Stats._toolHPS.exists(toolId + ":" + toolLvl)) return co.doubleduck.pinata.meta.Stats._toolHPS.get(toolId + ":" + toolLvl);
var toolDat = co.doubleduck.pinata.data.GameplayDB.getToolData(toolId);
var hps = co.doubleduck.pinata.meta.Stats.calcValueForLevel(toolDat.hpsData,toolLvl);
co.doubleduck.pinata.meta.Stats._toolHPS.set(toolId + ":" + toolLvl,hps);
return hps;
};
co.doubleduck.pinata.meta.Stats.getPriceForTool = function(toolId,toolLvl) {
if(toolLvl == null) toolLvl = -1;
co.doubleduck.pinata.meta.Stats.init();
if(toolLvl == -1) toolLvl = co.doubleduck.pinata.meta.Stats.getToolLevel(toolId);
if(toolLvl == 0) return co.doubleduck.pinata.meta.BigInt.fromInt(0);
if(co.doubleduck.pinata.meta.Stats._toolPrice.exists(toolId + ":" + toolLvl)) return co.doubleduck.pinata.meta.Stats._toolPrice.get(toolId + ":" + toolLvl);
var toolDat = co.doubleduck.pinata.data.GameplayDB.getToolData(toolId);
var price = co.doubleduck.pinata.meta.Stats.calcValueForLevel(toolDat.priceData,toolLvl);
co.doubleduck.pinata.meta.Stats._toolPrice.set(toolId + ":" + toolLvl,price);
return price;
};
co.doubleduck.pinata.meta.Stats.calcValueForLevel = function(valsData,level) {
var ranges = valsData.split(",");
var _g1 = 0;
var _g = ranges.length;
while(_g1 < _g) {
var i = _g1++;
var curr = ranges[i];
if(i == ranges.length - 1) {
var prev = ranges[i - 1].split("-")[1];
var val = co.doubleduck.pinata.meta.BigInt.fromString(prev.split(":")[0]);
var count = level - Std.parseInt(prev.split(":")[1]);
var amount = co.doubleduck.pinata.meta.BigInt.fromString(curr);
return co.doubleduck.pinata.meta.BigInt.add(val,co.doubleduck.pinata.meta.BigInt.mulScalar(amount,count));
} else {
var spl = curr.split("-");
var fromLevel = Std.parseInt(spl[0].split(":")[1]);
var toLevel = Std.parseInt(spl[1].split(":")[1]);
if(level >= fromLevel && level <= toLevel) {
var ratio = co.doubleduck.utils.Utils.map(level,fromLevel,toLevel);
var intFrom = co.doubleduck.pinata.meta.BigInt.fromString(spl[0].split(":")[0]);
var intTo = co.doubleduck.pinata.meta.BigInt.fromString(spl[1].split(":")[0]);
var delta = co.doubleduck.pinata.meta.BigInt.subtract(intTo,intFrom);
delta = co.doubleduck.pinata.meta.BigInt.mulScalar(delta,ratio);
return co.doubleduck.pinata.meta.BigInt.add(intFrom,delta);
}
}
}
return co.doubleduck.pinata.meta.BigInt.fromInt(0);
};
co.doubleduck.pinata.meta.Stats.init = function() {
if(co.doubleduck.pinata.meta.Stats._toolsState == null) {
var datas = co.doubleduck.pinata.data.Persistence.getString(co.doubleduck.pinata.data.DataKey.TOOLS_STATE).split(",");
co.doubleduck.pinata.meta.Stats._toolsState = new Array();
var _g = 0;
while(_g < datas.length) {
var data = datas[_g];
++_g;
var parts = data.split(":");
var tool = { };
tool.id = parts[0];
tool.lvl = Std.parseInt(parts[1]);
co.doubleduck.pinata.meta.Stats._toolsState.push(tool);
}
}
if(co.doubleduck.pinata.meta.Stats._toolHPS == null) co.doubleduck.pinata.meta.Stats._toolHPS = new haxe.ds.StringMap();
if(co.doubleduck.pinata.meta.Stats._toolPrice == null) co.doubleduck.pinata.meta.Stats._toolPrice = new haxe.ds.StringMap();
if(co.doubleduck.pinata.meta.Stats._eventer == null) co.doubleduck.pinata.meta.Stats._eventer = new openfl.events.EventDispatcher();
};
co.doubleduck.utils.SimpleAnimSprite = function(sheet,rows,cols,frames,shouldLoop) {
if(shouldLoop == null) shouldLoop = false;
var behDatas = new Array();
behDatas.push(new spritesheet.data.BehaviorData("simple",frames,shouldLoop,24));
var sprSheet = co.doubleduck.utils.DDAssets.getSpritesheet(sheet,cols,rows,-1,-1,behDatas);
co.doubleduck.utils.AnimSprite.call(this,sprSheet);
this.showBehavior("simple");
this._lastTime = openfl.Lib.getTimer();
this.addEventListener(openfl.events.Event.COMPLETE,$bind(this,this.handleDone));
this.addEventListener(openfl.events.Event.ENTER_FRAME,$bind(this,this.handleTick));
};
$hxClasses["co.doubleduck.utils.SimpleAnimSprite"] = co.doubleduck.utils.SimpleAnimSprite;
co.doubleduck.utils.SimpleAnimSprite.__name__ = ["co","doubleduck","utils","SimpleAnimSprite"];
co.doubleduck.utils.SimpleAnimSprite.__super__ = co.doubleduck.utils.AnimSprite;
co.doubleduck.utils.SimpleAnimSprite.prototype = $extend(co.doubleduck.utils.AnimSprite.prototype,{
setAnimFPS: function(fps) {
this.resolveBehavior("simple").frameRate = fps;
this.replayAnim();
}
,stopAnim: function() {
this.removeEventListener(openfl.events.Event.ENTER_FRAME,$bind(this,this.handleTick));
}
,replayAnim: function() {
this.showBehavior("simple",true);
if(!this.hasEventListener(openfl.events.Event.ENTER_FRAME)) {
this._lastTime = openfl.Lib.getTimer();
this.addEventListener(openfl.events.Event.ENTER_FRAME,$bind(this,this.handleTick));
}
}
,handleTick: function(e) {
var time = openfl.Lib.getTimer();
var delta = time - this._lastTime;
this.update(delta);
this._lastTime = time;
}
,handleDone: function(e) {
this.removeEventListener(openfl.events.Event.COMPLETE,$bind(this,this.handleDone));
this.removeEventListener(openfl.events.Event.ENTER_FRAME,$bind(this,this.handleTick));
}
,__class__: co.doubleduck.utils.SimpleAnimSprite
});
co.doubleduck.utils.Button = function(asset,centered,data,smoothing) {
if(smoothing == null) smoothing = false;
if(centered == null) centered = true;
this.enabled = true;
this.clickSound = null;
openfl.display.Sprite.call(this);
if(co.doubleduck.utils.Button.DOWN_EVENT == null) {
co.doubleduck.utils.Button.DOWN_EVENT = openfl.events.MouseEvent.MOUSE_DOWN;
co.doubleduck.utils.Button.OUT_EVENT = openfl.events.MouseEvent.MOUSE_OUT;
co.doubleduck.utils.Button.UP_EVENT = openfl.events.MouseEvent.MOUSE_UP;
}
this.data = data;
if(co.doubleduck.utils.Button.NORM_TRANS == null) co.doubleduck.utils.Button.NORM_TRANS = new openfl.geom.ColorTransform();
if(co.doubleduck.utils.Button.DARK_TRANS == null) {
co.doubleduck.utils.Button.DARK_TRANS = new openfl.geom.ColorTransform();
co.doubleduck.utils.Button.DARK_TRANS.redOffset = -50;
co.doubleduck.utils.Button.DARK_TRANS.greenOffset = -50;
co.doubleduck.utils.Button.DARK_TRANS.blueOffset = -50;
}
if(co.doubleduck.utils.DDAssets.globalSmoothing) smoothing = true;
this._image = new openfl.display.Bitmap(asset,openfl.display.PixelSnapping.AUTO,smoothing);
this.addChild(this._image);
if(centered) {
this._imagePos = new openfl.geom.Point(-this._image.get_width() / 2,-this._image.get_height() / 2);
this._image.set_x(this._imagePos.x);
this._image.set_y(this._imagePos.y);
} else this._imagePos = new openfl.geom.Point(0,0);
this.addEventListener(co.doubleduck.utils.Button.DOWN_EVENT,$bind(this,this.handleMouse));
this.pushMode = co.doubleduck.utils.ButtonPushMode.TINT_SCALE;
this.actOnPress = false;
this._effectApplied = false;
};
$hxClasses["co.doubleduck.utils.Button"] = co.doubleduck.utils.Button;
co.doubleduck.utils.Button.__name__ = ["co","doubleduck","utils","Button"];
co.doubleduck.utils.Button.NORM_TRANS = null;
co.doubleduck.utils.Button.DARK_TRANS = null;
co.doubleduck.utils.Button.__super__ = openfl.display.Sprite;
co.doubleduck.utils.Button.prototype = $extend(openfl.display.Sprite.prototype,{
dePress: function() {
this.removeEventListener(co.doubleduck.utils.Button.OUT_EVENT,$bind(this,this.handleMouse));
this.removeEventListener(co.doubleduck.utils.Button.UP_EVENT,$bind(this,this.handleMouse));
this.endEffect();
}
,handleMouse: function(e) {
if(!this.enabled) return;
if(e.type == co.doubleduck.utils.Button.DOWN_EVENT) {
this.applyEffect();
var effectTween = co.doubleduck.utils.TweenChain.get(this._image);
if(this.actOnPress) effectTween.wait(10).call($bind(this,this.endEffect)).call($bind(this,this.dispatchEvent),[new openfl.events.Event("BUTTON_ACT_EVENT")]); else {
effectTween.wait(100).call($bind(this,this.endEffect));
this.addEventListener(co.doubleduck.utils.Button.OUT_EVENT,$bind(this,this.handleMouse));
this.addEventListener(co.doubleduck.utils.Button.UP_EVENT,$bind(this,this.handleMouse));
}
}
if(e.type == co.doubleduck.utils.Button.OUT_EVENT) {
this.removeEventListener(co.doubleduck.utils.Button.OUT_EVENT,$bind(this,this.handleMouse));
this.removeEventListener(co.doubleduck.utils.Button.UP_EVENT,$bind(this,this.handleMouse));
this.endEffect();
}
if(e.type == co.doubleduck.utils.Button.UP_EVENT) {
this.removeEventListener(co.doubleduck.utils.Button.OUT_EVENT,$bind(this,this.handleMouse));
this.removeEventListener(co.doubleduck.utils.Button.UP_EVENT,$bind(this,this.handleMouse));
this.endEffect();
this.act();
}
}
,applyEffect: function() {
this._effectApplied = true;
if(this.clickSound != null) co.doubleduck.utils.SoundMgr.playSound(this.clickSound); else if(co.doubleduck.utils.Button.defaultClickSound != null) co.doubleduck.utils.SoundMgr.playSound(co.doubleduck.utils.Button.defaultClickSound);
if(this.pushMode == co.doubleduck.utils.ButtonPushMode.TINT_ONLY || this.pushMode == co.doubleduck.utils.ButtonPushMode.TINT_SCALE) this._image.get_transform().set_colorTransform(co.doubleduck.utils.Button.DARK_TRANS);
if(this.pushMode == co.doubleduck.utils.ButtonPushMode.SCALE_ONLY || this.pushMode == co.doubleduck.utils.ButtonPushMode.TINT_SCALE) {
this._image.set_scaleX(this._image.set_scaleY(0.93));
this._image.set_x(this._imagePos.x * 0.93);
this._image.set_y(this._imagePos.y * 0.93);
}
if(this.pushMode == co.doubleduck.utils.ButtonPushMode.JUICY_JIGGLE) {
co.doubleduck.utils.TweenChain.removeTweens(this._image);
this._image.set_scaleX(1.3);
this._image.set_x(this._imagePos.x * this._image.get_scaleX());
co.doubleduck.utils.TweenChain.get(this._image).tto({ scaleX : 1, x : this._imagePos.x},600,motion.easing.Elastic.get_easeOut());
this._image.set_scaleY(0.7);
this._image.set_y(this._imagePos.y * this._image.get_scaleY());
co.doubleduck.utils.TweenChain.get(this._image).tto({ scaleY : 1, y : this._imagePos.y},600,motion.easing.Elastic.get_easeOut());
}
}
,endEffect: function() {
if(!this._effectApplied) return;
if(this.pushMode == co.doubleduck.utils.ButtonPushMode.TINT_ONLY || this.pushMode == co.doubleduck.utils.ButtonPushMode.TINT_SCALE) this._image.get_transform().set_colorTransform(co.doubleduck.utils.Button.NORM_TRANS);
if(this.pushMode == co.doubleduck.utils.ButtonPushMode.SCALE_ONLY || this.pushMode == co.doubleduck.utils.ButtonPushMode.TINT_SCALE) {
this._image.set_scaleX(this._image.set_scaleY(1));
this._image.set_x(this._imagePos.x);
this._image.set_y(this._imagePos.y);
}
if(this.pushMode == co.doubleduck.utils.ButtonPushMode.JUICY_JIGGLE) {
}
}
,act: function() {
this.dispatchEvent(new openfl.events.Event("BUTTON_ACT_EVENT"));
}
,__class__: co.doubleduck.utils.Button
});
co.doubleduck.utils.ButtonPushMode = $hxClasses["co.doubleduck.utils.ButtonPushMode"] = { __ename__ : ["co","doubleduck","utils","ButtonPushMode"], __constructs__ : ["TINT_ONLY","SCALE_ONLY","TINT_SCALE","JUICY_JIGGLE"] };
co.doubleduck.utils.ButtonPushMode.TINT_ONLY = ["TINT_ONLY",0];
co.doubleduck.utils.ButtonPushMode.TINT_ONLY.toString = $estr;
co.doubleduck.utils.ButtonPushMode.TINT_ONLY.__enum__ = co.doubleduck.utils.ButtonPushMode;
co.doubleduck.utils.ButtonPushMode.SCALE_ONLY = ["SCALE_ONLY",1];
co.doubleduck.utils.ButtonPushMode.SCALE_ONLY.toString = $estr;
co.doubleduck.utils.ButtonPushMode.SCALE_ONLY.__enum__ = co.doubleduck.utils.ButtonPushMode;
co.doubleduck.utils.ButtonPushMode.TINT_SCALE = ["TINT_SCALE",2];
co.doubleduck.utils.ButtonPushMode.TINT_SCALE.toString = $estr;
co.doubleduck.utils.ButtonPushMode.TINT_SCALE.__enum__ = co.doubleduck.utils.ButtonPushMode;
co.doubleduck.utils.ButtonPushMode.JUICY_JIGGLE = ["JUICY_JIGGLE",3];
co.doubleduck.utils.ButtonPushMode.JUICY_JIGGLE.toString = $estr;
co.doubleduck.utils.ButtonPushMode.JUICY_JIGGLE.__enum__ = co.doubleduck.utils.ButtonPushMode;
haxe.ds = {};
haxe.ds.StringMap = function() {
this.h = { };
};
$hxClasses["haxe.ds.StringMap"] = haxe.ds.StringMap;
haxe.ds.StringMap.__name__ = ["haxe","ds","StringMap"];
haxe.ds.StringMap.__interfaces__ = [IMap];
haxe.ds.StringMap.prototype = {
set: function(key,value) {
this.h["$" + key] = value;
}
,get: function(key) {
return this.h["$" + key];
}
,exists: function(key) {
return this.h.hasOwnProperty("$" + key);
}
,remove: function(key) {
key = "$" + key;
if(!this.h.hasOwnProperty(key)) return false;
delete(this.h[key]);
return true;
}
,keys: function() {
var a = [];
for( var key in this.h ) {
if(this.h.hasOwnProperty(key)) a.push(key.substr(1));
}
return HxOverrides.iter(a);
}
,iterator: function() {
return { ref : this.h, it : this.keys(), hasNext : function() {
return this.it.hasNext();
}, next : function() {
var i = this.it.next();
return this.ref["$" + i];
}};
}
,toString: function() {
var s = new StringBuf();
s.b += "{";
var it = this.keys();
while( it.hasNext() ) {
var i = it.next();
if(i == null) s.b += "null"; else s.b += "" + i;
s.b += " => ";
s.add(Std.string(this.get(i)));
if(it.hasNext()) s.b += ", ";
}
s.b += "}";
return s.b;
}
,__class__: haxe.ds.StringMap
};
co.doubleduck.utils.DDAssets = function() { };
$hxClasses["co.doubleduck.utils.DDAssets"] = co.doubleduck.utils.DDAssets;
co.doubleduck.utils.DDAssets.__name__ = ["co","doubleduck","utils","DDAssets"];
co.doubleduck.utils.DDAssets.activeLocale = null;
co.doubleduck.utils.DDAssets.availLocales = null;
co.doubleduck.utils.DDAssets.getRawImage = function(path,cache) {
if(cache == null) cache = true;
path = co.doubleduck.utils.DDAssets.getLocalisedPath(path);
var result = co.doubleduck.utils.DDAssets._cache.get(path);
if(result == null) {
result = openfl.Assets.getBitmapData(path,false);
if(cache) co.doubleduck.utils.DDAssets._cache.set(path,result);
}
return result;
};
co.doubleduck.utils.DDAssets.getCenteredImage = function(path,cache) {
if(cache == null) cache = true;
var bmp = co.doubleduck.utils.DDAssets.getImage(path,cache);
var _g = bmp;
_g.set_x(_g.get_x() - bmp.get_width() / 2);
var _g1 = bmp;
_g1.set_y(_g1.get_y() - bmp.get_height() / 2);
var spr = new openfl.display.Sprite();
spr.addChild(bmp);
return spr;
};
co.doubleduck.utils.DDAssets.getImage = function(path,cache) {
if(cache == null) cache = true;
var bmp = new openfl.display.Bitmap(co.doubleduck.utils.DDAssets.getRawImage(path,cache));
bmp.smoothing = co.doubleduck.utils.DDAssets.globalSmoothing;
return bmp;
};
co.doubleduck.utils.DDAssets.getSpritesheet = function(path,columns,rows,tileWidth,tileHeight,behaviours,cache) {
if(cache == null) cache = true;
if(tileHeight == null) tileHeight = 0;
if(tileWidth == null) tileWidth = 0;
if(rows == null) rows = 0;
if(columns == null) columns = 0;
path = co.doubleduck.utils.DDAssets.getLocalisedPath(path);
var result = co.doubleduck.utils.DDAssets._spritesheetCache.get(path);
if(result == null) {
var bmpData = openfl.Assets.getBitmapData(path,false);
if(tileWidth == -1) tileWidth = Math.floor(bmpData.width / columns);
if(tileHeight == -1) tileHeight = Math.floor(bmpData.height / rows);
result = spritesheet.importers.BitmapImporter.create(bmpData,columns,rows,tileWidth,tileHeight);
var _g = 0;
while(_g < behaviours.length) {
var behaviour = behaviours[_g];
++_g;
result.addBehavior(behaviour);
}
if(cache) co.doubleduck.utils.DDAssets._spritesheetCache.set(path,result);
}
return result;
};
co.doubleduck.utils.DDAssets.getLocalisedPath = function(path) {
if(!co.doubleduck.utils.DDAssets.localisedPaths.exists(path)) {
var fileParts = path.split(".");
var fileName = fileParts[0];
var fileExt = fileParts[1];
var localisedVersion = fileName + "-" + co.doubleduck.utils.DDAssets.activeLocale + "." + fileExt;
if(openfl.Assets.exists(localisedVersion,"IMAGE")) co.doubleduck.utils.DDAssets.localisedPaths.set(path,localisedVersion); else co.doubleduck.utils.DDAssets.localisedPaths.set(path,path);
}
return co.doubleduck.utils.DDAssets.localisedPaths.get(path);
};
co.doubleduck.utils.Delayer = function(dur) {
this._leftDur = this._totalDur = dur;
this._isRunning = false;
};
$hxClasses["co.doubleduck.utils.Delayer"] = co.doubleduck.utils.Delayer;
co.doubleduck.utils.Delayer.__name__ = ["co","doubleduck","utils","Delayer"];
co.doubleduck.utils.Delayer.prototype = {
start: function() {
this._isRunning = true;
co.doubleduck.utils.TweenChain.get(this).tto({ _leftDur : 0},this._leftDur).call($bind(this,this.act)).call($bind(this,this.restart));
}
,pause: function() {
this._isRunning = false;
co.doubleduck.utils.TweenChain.removeTweens(this);
}
,stop: function() {
this._isRunning = false;
co.doubleduck.utils.TweenChain.removeTweens(this);
this._leftDur = this._totalDur;
}
,restart: function() {
this.stop();
this.start();
}
,isRunning: function() {
return this._isRunning;
}
,setDuration: function(dur) {
if(this._isRunning) co.doubleduck.utils.TweenChain.removeTweens(this);
var ratio = this._leftDur / this._totalDur;
this._totalDur = dur;
this._leftDur = Math.floor(dur * ratio);
if(this._isRunning) this.start();
}
,act: function() {
if(this.handler != null) this.handler();
}
,__class__: co.doubleduck.utils.Delayer
};
openfl.events.Event = function(type,bubbles,cancelable) {
if(cancelable == null) cancelable = false;
if(bubbles == null) bubbles = false;
this.type = type;
this.bubbles = bubbles;
this.cancelable = cancelable;
this.eventPhase = openfl.events.EventPhase.AT_TARGET;
};
$hxClasses["openfl.events.Event"] = openfl.events.Event;
openfl.events.Event.__name__ = ["openfl","events","Event"];
openfl.events.Event.prototype = {
clone: function() {
var event = new openfl.events.Event(this.type,this.bubbles,this.cancelable);
event.eventPhase = this.eventPhase;
event.target = this.target;
event.currentTarget = this.currentTarget;
return event;
}
,isDefaultPrevented: function() {
return this.__isCancelled || this.__isCancelledNow;
}
,stopImmediatePropagation: function() {
this.__isCancelled = true;
this.__isCancelledNow = true;
}
,stopPropagation: function() {
this.__isCancelled = true;
}
,toString: function() {
return "[Event type=" + this.type + " bubbles=" + Std.string(this.bubbles) + " cancelable=" + Std.string(this.cancelable) + "]";
}
,__class__: openfl.events.Event
};
co.doubleduck.utils.DynamicEvent = function(name,data) {
openfl.events.Event.call(this,name);
this.data = data;
};
$hxClasses["co.doubleduck.utils.DynamicEvent"] = co.doubleduck.utils.DynamicEvent;
co.doubleduck.utils.DynamicEvent.__name__ = ["co","doubleduck","utils","DynamicEvent"];
co.doubleduck.utils.DynamicEvent.__super__ = openfl.events.Event;
co.doubleduck.utils.DynamicEvent.prototype = $extend(openfl.events.Event.prototype,{
__class__: co.doubleduck.utils.DynamicEvent
});
co.doubleduck.utils.Fonter = function() {
throw "DDError: The static class 'Fonter' should not be instantiated.";
};
$hxClasses["co.doubleduck.utils.Fonter"] = co.doubleduck.utils.Fonter;
co.doubleduck.utils.Fonter.__name__ = ["co","doubleduck","utils","Fonter"];
co.doubleduck.utils.Fonter._kernCache = null;
co.doubleduck.utils.Fonter.commafyNum = function(num) {
var numStr = "" + num;
var numSuffix = "";
if(num - Math.floor(num) != 0) {
var splitted = numStr.split(".");
numSuffix = "." + splitted[1];
numStr = splitted[0];
}
var numRes = "";
while(numStr.length > 0) if(numStr.length > 3) {
numRes = "," + HxOverrides.substr(numStr,numStr.length - 3,3) + numRes;
numStr = numStr.substring(0,numStr.length - 3);
} else {
numRes = numStr + numRes;
numStr = "";
}
return numRes + numSuffix;
};
co.doubleduck.utils.Fonter.getMultilineString = function(str,bmpFont,delim) {
if(delim == null) delim = "|";
var lines = str.split(delim);
var mlText = new openfl.display.Sprite();
var hLineHeight = 0;
var _g = 0;
while(_g < lines.length) {
var line = lines[_g];
++_g;
var lineImg = co.doubleduck.utils.Fonter.getString(line,bmpFont);
if(mlText.get_numChildren() > 0) {
var prevLine = mlText.getChildAt(mlText.get_numChildren() - 1);
lineImg.set_y(prevLine.get_y() + prevLine.get_height() * 1.2);
} else hLineHeight = lineImg.get_height() / 2;
mlText.addChild(lineImg);
}
var hHeight = mlText.get_height() / 2;
var finalText = new openfl.display.Sprite();
var _g1 = 0;
var _g2 = mlText.get_numChildren();
while(_g1 < _g2) {
var i = _g1++;
var lineImg1 = mlText.getChildAt(i);
var _g21 = lineImg1;
_g21.set_y(_g21.get_y() - (hHeight - hLineHeight));
while(lineImg1.get_numChildren() > 0) {
var letter = lineImg1.getChildAt(0);
lineImg1.removeChild(letter);
var _g22 = letter;
_g22.set_x(_g22.get_x() + lineImg1.get_x());
var _g23 = letter;
_g23.set_y(_g23.get_y() + lineImg1.get_y());
finalText.addChild(letter);
}
}
return finalText;
};
co.doubleduck.utils.Fonter.getString = function(str,bmpFont) {
if(bmpFont == null) {
if(co.doubleduck.utils.Fonter._defaultFont == null) throw "DDError: Fonter.getString() called with no default font and no specific font.";
bmpFont = co.doubleduck.utils.Fonter._defaultFont;
}
if(bmpFont.charAt(bmpFont.length - 1) != "/") bmpFont += "/";
var kernDat = co.doubleduck.utils.Fonter.getFontKernData(bmpFont);
var strBox = new openfl.display.Sprite();
var _g1 = 0;
var _g = str.length;
while(_g1 < _g) {
var i = _g1++;
var chr = str.charAt(i);
var chrBmp = co.doubleduck.utils.Fonter.getChar(chr,bmpFont);
chrBmp.set_x(0);
if(strBox.get_numChildren() > 0) {
var prevChar = strBox.getChildAt(strBox.get_numChildren() - 1);
chrBmp.set_x(prevChar.get_x() + prevChar.get_width() + co.doubleduck.utils.Fonter.kernFor(str.charAt(i - 1),chr,kernDat) * co.doubleduck.utils.DDAssets.scale);
}
strBox.addChild(chrBmp);
}
var lastChar = strBox.getChildAt(strBox.get_numChildren() - 1);
var hWidth = (lastChar.get_x() + lastChar.get_width()) / 2;
var _g11 = 0;
var _g2 = strBox.get_numChildren();
while(_g11 < _g2) {
var i1 = _g11++;
var _g21 = strBox.getChildAt(i1);
_g21.set_x(_g21.get_x() - hWidth);
}
return strBox;
};
co.doubleduck.utils.Fonter.getChar = function(chr,bmpFont) {
var code = co.doubleduck.utils.Fonter.UTF8Code(chr);
if(bmpFont == null) {
if(co.doubleduck.utils.Fonter._defaultFont == null) throw "DDError: Fonter.getChar() - requested sprite with no default font and no specific font.";
bmpFont = co.doubleduck.utils.Fonter._defaultFont;
}
if(bmpFont.charAt(bmpFont.length - 1) != "/") bmpFont += "/";
var fontMap = co.doubleduck.utils.Fonter.getFontMap(bmpFont);
if(!fontMap.exists(code)) {
var bmpData = co.doubleduck.utils.DDAssets.getRawImage(bmpFont + "c" + code + ".png",false);
if(bmpData == null) throw "DDError: Fonter.getChar() - requested char without asset - '" + chr + "' code: " + code + ".";
fontMap.set(code,bmpData);
bmpData;
}
var smoothing = co.doubleduck.utils.DDAssets.globalSmoothing;
var chrBmp = new openfl.display.Bitmap(fontMap.get(code),openfl.display.PixelSnapping.AUTO,smoothing);
var _g = chrBmp;
_g.set_x(_g.get_x() - chrBmp.get_width() / 2);
var _g1 = chrBmp;
_g1.set_y(_g1.get_y() - chrBmp.get_height() / 2);
return chrBmp;
};
co.doubleduck.utils.Fonter.getFontMap = function(fontUri) {
if(co.doubleduck.utils.Fonter._fontCache == null) co.doubleduck.utils.Fonter._fontCache = new haxe.ds.StringMap();
if(!co.doubleduck.utils.Fonter._fontCache.exists(fontUri)) {
var v = new haxe.ds.IntMap();
co.doubleduck.utils.Fonter._fontCache.set(fontUri,v);
v;
}
return co.doubleduck.utils.Fonter._fontCache.get(fontUri);
};
co.doubleduck.utils.Fonter.kernFor = function(prev,curr,data) {
var anyTo = data.get("any");
if(data.exists(prev)) {
var prevTo = data.get(prev);
if(prevTo.exists(curr)) return prevTo.get(curr);
if(anyTo.exists(curr)) {
var avg = prevTo.get("any") + anyTo.get(curr);
avg = avg / 2;
return avg;
}
return prevTo.get("any");
}
if(anyTo.exists(curr)) return anyTo.get(curr);
return anyTo.get("any");
};
co.doubleduck.utils.Fonter.getFontKernData = function(fontUri) {
if(co.doubleduck.utils.Fonter._kernCache == null) co.doubleduck.utils.Fonter._kernCache = new haxe.ds.StringMap();
var data;
if(co.doubleduck.utils.Fonter._kernCache.exists(fontUri)) data = co.doubleduck.utils.Fonter._kernCache.get(fontUri); else {
data = new haxe.ds.StringMap();
var rawData = null;
try {
var strData = openfl.Assets.getText(fontUri + "kern.txt");
if(strData != null) rawData = JSON.parse(strData);
} catch( err ) {
rawData = null;
}
if(rawData != null) {
var froms = Reflect.fields(rawData);
var _g = 0;
while(_g < froms.length) {
var fromMe = froms[_g];
++_g;
if(!data.exists(fromMe)) {
var value = new haxe.ds.StringMap();
data.set(fromMe,value);
}
var fromDat = Reflect.field(rawData,fromMe);
var tos = Reflect.fields(fromDat);
var _g1 = 0;
while(_g1 < tos.length) {
var toMe = tos[_g1];
++_g1;
var kern = Reflect.field(fromDat,toMe);
var this1 = data.get(fromMe);
this1.set(toMe,kern);
}
}
} else {
var value1 = new haxe.ds.StringMap();
data.set("any",value1);
var this2 = data.get("any");
this2.set("any",0);
}
co.doubleduck.utils.Fonter._kernCache.set(fontUri,data);
data;
}
return data;
};
co.doubleduck.utils.Fonter.UTF8Code = function(chr) {
if(chr.length != 1) throw "DDError: Fonter.UTF8Code() - Got param '" + chr + "' and it's not a single character.";
var pos = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~".indexOf(chr);
if(pos == -1) throw "DDError: Fonter.UTF8Code() - Got param '" + chr + "' and it's in the charset.";
return pos + 32;
};
co.doubleduck.utils.Fonter.prototype = {
__class__: co.doubleduck.utils.Fonter
};
openfl.display.BitmapData = function(width,height,transparent,fillColor) {
if(fillColor == null) fillColor = -1;
if(transparent == null) transparent = true;
this.transparent = transparent;
if(width > 0 && height > 0) {
this.width = width;
this.height = height;
this.rect = new openfl.geom.Rectangle(0,0,width,height);
if(transparent) {
if((function($this) {
var $r;
var $int = fillColor & -16777216;
$r = $int < 0?4294967296.0 + $int:$int + 0.0;
return $r;
}(this)) == 0) fillColor = 0;
} else fillColor = -16777216 | fillColor & 16777215;
this.__image = new lime.graphics.Image(null,0,0,width,height,fillColor);
this.__image.set_transparent(transparent);
this.__isValid = true;
}
this.__createUVs();
};
$hxClasses["openfl.display.BitmapData"] = openfl.display.BitmapData;
openfl.display.BitmapData.__name__ = ["openfl","display","BitmapData"];
openfl.display.BitmapData.__interfaces__ = [openfl.display.IBitmapDrawable];
openfl.display.BitmapData.fromBase64 = function(base64,type,onload) {
var bitmapData = new openfl.display.BitmapData(0,0,true);
bitmapData.__loadFromBase64(base64,type,onload);
return bitmapData;
};
openfl.display.BitmapData.fromBytes = function(bytes,rawAlpha,onload) {
var bitmapData = new openfl.display.BitmapData(0,0,true);
bitmapData.__loadFromBytes(bytes,rawAlpha,onload);
return bitmapData;
};
openfl.display.BitmapData.fromCanvas = function(canvas,transparent) {
if(transparent == null) transparent = true;
var bitmapData = new openfl.display.BitmapData(0,0,transparent);
bitmapData.__loadFromImage(lime.graphics.Image.fromCanvas(canvas));
bitmapData.__image.set_transparent(transparent);
return bitmapData;
};
openfl.display.BitmapData.fromFile = function(path,onload,onerror) {
var bitmapData = new openfl.display.BitmapData(0,0,true);
bitmapData.__loadFromFile(path,onload,onerror);
return bitmapData;
};
openfl.display.BitmapData.fromImage = function(image,transparent) {
if(transparent == null) transparent = true;
var bitmapData = new openfl.display.BitmapData(0,0,transparent);
bitmapData.__loadFromImage(image);
bitmapData.__image.set_transparent(transparent);
return bitmapData;
};
openfl.display.BitmapData.__flipPixel = function(pixel) {
return (pixel & 255) << 24 | (pixel >> 8 & 255) << 16 | (pixel >> 16 & 255) << 8 | pixel >> 24 & 255;
};
openfl.display.BitmapData.__ucompare = function(n1,n2) {
var tmp1;
var tmp2;
tmp1 = n1 >> 24 & 255;
tmp2 = n2 >> 24 & 255;
if(tmp1 != tmp2) if(tmp1 > tmp2) return 1; else return -1; else {
tmp1 = n1 >> 16 & 255;
tmp2 = n2 >> 16 & 255;
if(tmp1 != tmp2) if(tmp1 > tmp2) return 1; else return -1; else {
tmp1 = n1 >> 8 & 255;
tmp2 = n2 >> 8 & 255;
if(tmp1 != tmp2) if(tmp1 > tmp2) return 1; else return -1; else {
tmp1 = n1 & 255;
tmp2 = n2 & 255;
if(tmp1 != tmp2) if(tmp1 > tmp2) return 1; else return -1; else return 0;
}
}
}
};
openfl.display.BitmapData.prototype = {
applyFilter: function(sourceBitmapData,sourceRect,destPoint,filter) {
if(!this.__isValid || sourceBitmapData == null || !sourceBitmapData.__isValid) return;
lime.graphics.utils.ImageCanvasUtil.convertToCanvas(this.__image);
lime.graphics.utils.ImageCanvasUtil.createImageData(this.__image);
lime.graphics.utils.ImageCanvasUtil.convertToCanvas(sourceBitmapData.__image);
lime.graphics.utils.ImageCanvasUtil.createImageData(sourceBitmapData.__image);
filter.__applyFilter(this.__image.buffer.__srcImageData,sourceBitmapData.__image.buffer.__srcImageData,sourceRect,destPoint);
this.__image.dirty = true;
}
,clone: function() {
if(!this.__isValid) return new openfl.display.BitmapData(this.width,this.height,this.transparent); else return openfl.display.BitmapData.fromImage(this.__image.clone(),this.transparent);
}
,colorTransform: function(rect,colorTransform) {
this.__image.colorTransform(rect.__toLimeRectangle(),colorTransform.__toLimeColorMatrix());
}
,copyChannel: function(sourceBitmapData,sourceRect,destPoint,sourceChannel,destChannel) {
if(!this.__isValid) return;
var sourceChannel1;
switch(sourceChannel) {
case 1:
sourceChannel1 = lime.graphics.ImageChannel.RED;
break;
case 2:
sourceChannel1 = lime.graphics.ImageChannel.GREEN;
break;
case 4:
sourceChannel1 = lime.graphics.ImageChannel.BLUE;
break;
case 8:
sourceChannel1 = lime.graphics.ImageChannel.ALPHA;
break;
default:
return;
}
var destChannel1;
switch(destChannel) {
case 1:
destChannel1 = lime.graphics.ImageChannel.RED;
break;
case 2:
destChannel1 = lime.graphics.ImageChannel.GREEN;
break;
case 4:
destChannel1 = lime.graphics.ImageChannel.BLUE;
break;
case 8:
destChannel1 = lime.graphics.ImageChannel.ALPHA;
break;
default:
return;
}
this.__image.copyChannel(sourceBitmapData.__image,sourceRect.__toLimeRectangle(),destPoint.__toLimeVector2(),sourceChannel1,destChannel1);
}
,copyPixels: function(sourceBitmapData,sourceRect,destPoint,alphaBitmapData,alphaPoint,mergeAlpha) {
if(mergeAlpha == null) mergeAlpha = false;
if(!this.__isValid || sourceBitmapData == null) return;
this.__image.copyPixels(sourceBitmapData.__image,sourceRect.__toLimeRectangle(),destPoint.__toLimeVector2(),alphaBitmapData != null?alphaBitmapData.__image:null,alphaPoint != null?alphaPoint.__toLimeVector2():null,mergeAlpha);
}
,dispose: function() {
this.__image = null;
this.width = 0;
this.height = 0;
this.rect = null;
this.__isValid = false;
}
,draw: function(source,matrix,colorTransform,blendMode,clipRect,smoothing) {
if(smoothing == null) smoothing = false;
if(!this.__isValid) return;
var _g = this.__image.type;
switch(_g[1]) {
case 0:
lime.graphics.utils.ImageCanvasUtil.convertToCanvas(this.__image);
lime.graphics.utils.ImageCanvasUtil.sync(this.__image);
var buffer = this.__image.buffer;
var renderSession = new openfl._internal.renderer.RenderSession();
renderSession.context = buffer.__srcContext;
renderSession.roundPixels = true;
if(!smoothing) {
buffer.__srcContext.mozImageSmoothingEnabled = false;
buffer.__srcContext.webkitImageSmoothingEnabled = false;
buffer.__srcContext.imageSmoothingEnabled = false;
}
var matrixCache = source.__worldTransform;
if(matrix != null) source.__worldTransform = matrix; else source.__worldTransform = new openfl.geom.Matrix();
source.__updateChildren(false);
source.__renderCanvas(renderSession);
source.__worldTransform = matrixCache;
source.__updateChildren(true);
if(!smoothing) {
buffer.__srcContext.mozImageSmoothingEnabled = true;
buffer.__srcContext.webkitImageSmoothingEnabled = true;
buffer.__srcContext.imageSmoothingEnabled = true;
}
buffer.__srcContext.setTransform(1,0,0,1,0,0);
break;
default:
}
}
,encode: function(rect,compressor,byteArray) {
if(!this.__isValid || rect == null) return byteArray = null;
if(js.Boot.__instanceof(compressor,openfl.display.PNGEncoderOptions)) return byteArray = this.__image.encode("png"); else if(js.Boot.__instanceof(compressor,openfl.display.JPEGEncoderOptions)) return byteArray = this.__image.encode("jpg",(js.Boot.__cast(compressor , openfl.display.JPEGEncoderOptions)).quality);
return byteArray = null;
}
,fillRect: function(rect,color) {
if(!this.__isValid || rect == null) return;
this.__image.fillRect(rect.__toLimeRectangle(),color);
}
,floodFill: function(x,y,color) {
if(!this.__isValid) return;
this.__image.floodFill(x,y,color);
}
,generateFilterRect: function(sourceRect,filter) {
return sourceRect.clone();
}
,getBuffer: function(gl) {
if(this.__buffer == null) {
var data = [this.width,this.height,0,1,1,0,this.height,0,0,1,this.width,0,0,1,0,0,0,0,0,0];
this.__buffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER,this.__buffer);
gl.bufferData(gl.ARRAY_BUFFER,new Float32Array(data),gl.STATIC_DRAW);
gl.bindBuffer(gl.ARRAY_BUFFER,null);
}
return this.__buffer;
}
,getColorBoundsRect: function(mask,color,findColor) {
if(findColor == null) findColor = true;
return this.__image.get_rect().__toFlashRectangle();
}
,getPixel: function(x,y) {
if(!this.__isValid) return 0;
return this.__image.getPixel(x,y);
}
,getPixel32: function(x,y) {
if(!this.__isValid) return 0;
return this.__image.getPixel32(x,y);
}
,getPixels: function(rect) {
if(!this.__isValid) return null;
if(rect == null) rect = this.rect;
return this.__image.getPixels(rect.__toLimeRectangle());
}
,getTexture: function(gl) {
if(this.__texture == null) {
this.__texture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D,this.__texture);
gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR);
gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR);
this.__image.dirty = true;
}
if(this.__image.dirty) {
gl.bindTexture(gl.TEXTURE_2D,this.__texture);
var textureImage = this.__image.clone();
textureImage.set_premultiplied(true);
gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,this.width,this.height,0,gl.RGBA,gl.UNSIGNED_BYTE,textureImage.get_data());
gl.bindTexture(gl.TEXTURE_2D,null);
this.__image.dirty = false;
}
return this.__texture;
}
,getVector: function(rect) {
var pixels = this.getPixels(rect);
var length = pixels.length / 4 | 0;
var result;
var this1;
this1 = new openfl.VectorData();
var this2;
this2 = new Array(length);
this1.data = this2;
this1.length = length;
this1.fixed = true;
result = this1;
var _g = 0;
while(_g < length) {
var i = _g++;
var value = pixels.readUnsignedInt();
if(!result.fixed) {
if(i >= result.length) result.length = i + 1;
if(result.data.length < result.length) {
var data;
var this3;
this3 = new Array(result.data.length + 10);
data = this3;
haxe.ds._Vector.Vector_Impl_.blit(result.data,0,data,0,result.data.length);
result.data = data;
}
}
result.data[i] = value;
}
return result;
}
,histogram: function(hRect) {
var rect;
if(hRect != null) rect = hRect; else rect = new openfl.geom.Rectangle(0,0,this.width,this.height);
var pixels = this.getPixels(rect);
var result;
var _g = [];
var _g1 = 0;
while(_g1 < 4) {
var i = _g1++;
_g.push((function($this) {
var $r;
var _g2 = [];
{
var _g3 = 0;
while(_g3 < 256) {
var j = _g3++;
_g2.push(0);
}
}
$r = _g2;
return $r;
}(this)));
}
result = _g;
var _g21 = 0;
var _g11 = pixels.length;
while(_g21 < _g11) {
var i1 = _g21++;
++result[i1 % 4][pixels.readUnsignedByte()];
}
return result;
}
,hitTest: function(firstPoint,firstAlphaThreshold,secondObject,secondBitmapDataPoint,secondAlphaThreshold) {
if(secondAlphaThreshold == null) secondAlphaThreshold = 1;
if(!this.__isValid) return false;
openfl.Lib.notImplemented("BitmapData.hitTest");
return false;
}
,lock: function() {
}
,merge: function(sourceBitmapData,sourceRect,destPoint,redMultiplier,greenMultiplier,blueMultiplier,alphaMultiplier) {
if(!this.__isValid || sourceBitmapData == null || !sourceBitmapData.__isValid || sourceRect == null || destPoint == null) return;
this.__image.merge(sourceBitmapData.__image,sourceRect.__toLimeRectangle(),destPoint.__toLimeVector2(),redMultiplier,greenMultiplier,blueMultiplier,alphaMultiplier);
}
,noise: function(randomSeed,low,high,channelOptions,grayScale) {
if(grayScale == null) grayScale = false;
if(channelOptions == null) channelOptions = 7;
if(high == null) high = 255;
if(low == null) low = 0;
if(!this.__isValid) return;
openfl.Lib.notImplemented("BitmapData.noise");
}
,paletteMap: function(sourceBitmapData,sourceRect,destPoint,redArray,greenArray,blueArray,alphaArray) {
var sw = sourceRect.width | 0;
var sh = sourceRect.height | 0;
var pixels = this.getPixels(sourceRect);
pixels.position = 0;
var pixelValue;
var r;
var g;
var b;
var a;
var color;
var c1;
var c2;
var c3;
var c4;
var _g1 = 0;
var _g = sh * sw;
while(_g1 < _g) {
var i = _g1++;
pixelValue = pixels.readUnsignedInt();
if(alphaArray == null) c1 = pixelValue & -16777216; else c1 = alphaArray[pixelValue >> 24 & 255];
if(redArray == null) c2 = pixelValue & 16711680; else c2 = redArray[pixelValue >> 16 & 255];
if(greenArray == null) c3 = pixelValue & 65280; else c3 = greenArray[pixelValue >> 8 & 255];
if(blueArray == null) c4 = pixelValue & 255; else c4 = blueArray[pixelValue & 255];
a = (c1 >> 24 & 255) + (c2 >> 24 & 255) + (c3 >> 24 & 255) + (c4 >> 24 & 255);
if(a > 255) a == 255;
r = (c1 >> 16 & 255) + (c2 >> 16 & 255) + (c3 >> 16 & 255) + (c4 >> 16 & 255);
if(r > 255) r == 255;
g = (c1 >> 8 & 255) + (c2 >> 8 & 255) + (c3 >> 8 & 255) + (c4 >> 8 & 255);
if(g > 255) g == 255;
b = (c1 & 255) + (c2 & 255) + (c3 & 255) + (c4 & 255);
if(b > 255) b == 255;
color = a << 24 | r << 16 | g << 8 | b;
pixels.position = i * 4;
pixels.writeUnsignedInt(color);
}
pixels.position = 0;
var destRect = new openfl.geom.Rectangle(destPoint.x,destPoint.y,sw,sh);
this.setPixels(destRect,pixels);
}
,perlinNoise: function(baseX,baseY,numOctaves,randomSeed,stitch,fractalNoise,channelOptions,grayScale,offsets) {
if(grayScale == null) grayScale = false;
if(channelOptions == null) channelOptions = 7;
openfl.Lib.notImplemented("BitmapData.perlinNoise");
}
,scroll: function(x,y) {
openfl.Lib.notImplemented("BitmapData.scroll");
}
,setPixel: function(x,y,color) {
if(!this.__isValid) return;
this.__image.setPixel(x,y,color);
}
,setPixel32: function(x,y,color) {
if(!this.__isValid) return;
this.__image.setPixel32(x,y,color);
}
,setPixels: function(rect,byteArray) {
if(!this.__isValid || rect == null) return;
this.__image.setPixels(rect.__toLimeRectangle(),byteArray);
}
,setVector: function(rect,inputVector) {
var byteArray = new lime.utils.ByteArray();
byteArray.set_length(inputVector.length * 4);
var _g = 0;
while(_g < inputVector.length) {
var color = inputVector.data[_g];
++_g;
byteArray.writeUnsignedInt(color);
}
byteArray.position = 0;
this.setPixels(rect,byteArray);
}
,threshold: function(sourceBitmapData,sourceRect,destPoint,operation,threshold,color,mask,copySource) {
if(copySource == null) copySource = false;
if(mask == null) mask = -1;
if(color == null) color = 0;
if(sourceBitmapData == this && sourceRect.equals(this.rect) && destPoint.x == 0 && destPoint.y == 0) {
var hits = 0;
threshold = (threshold & 255) << 24 | (threshold >> 8 & 255) << 16 | (threshold >> 16 & 255) << 8 | threshold >> 24 & 255;
color = (color & 255) << 24 | (color >> 8 & 255) << 16 | (color >> 16 & 255) << 8 | color >> 24 & 255;
var memory = new lime.utils.ByteArray();
memory.set_length(this.width * this.height * 4);
memory = this.getPixels(this.rect);
memory.position = 0;
openfl.Memory.select(memory);
var thresholdMask = threshold & mask;
var width_yy;
var position;
var pixelMask;
var pixelValue;
var i;
var test;
var _g1 = 0;
var _g = this.height;
while(_g1 < _g) {
var yy = _g1++;
width_yy = this.width * yy;
var _g3 = 0;
var _g2 = this.width;
while(_g3 < _g2) {
var xx = _g3++;
position = (width_yy + xx) * 4;
pixelValue = openfl.Memory._setPositionTemporarily(position,function() {
return openfl.Memory.gcRef.readInt();
});
pixelMask = pixelValue & mask;
i = openfl.display.BitmapData.__ucompare(pixelMask,thresholdMask);
test = false;
if(operation == "==") test = i == 0; else if(operation == "<") test = i == -1; else if(operation == ">") test = i == 1; else if(operation == "!=") test = i != 0; else if(operation == "<=") test = i == 0 || i == -1; else if(operation == ">=") test = i == 0 || i == 1;
if(test) {
openfl.Memory.setI32(position,color);
hits++;
}
}
}
memory.position = 0;
this.setPixels(this.rect,memory);
openfl.Memory.select(null);
return hits;
} else {
var sx = sourceRect.x | 0;
var sy = sourceRect.y | 0;
var sw = sourceBitmapData.width | 0;
var sh = sourceBitmapData.height | 0;
var dx = destPoint.x | 0;
var dy = destPoint.y | 0;
var bw = this.width - sw - dx;
var bh = this.height - sh - dy;
var dw;
if(bw < 0) dw = sw + (this.width - sw - dx); else dw = sw;
var dh;
if(bw < 0) dh = sh + (this.height - sh - dy); else dh = sh;
var hits1 = 0;
threshold = (threshold & 255) << 24 | (threshold >> 8 & 255) << 16 | (threshold >> 16 & 255) << 8 | threshold >> 24 & 255;
color = (color & 255) << 24 | (color >> 8 & 255) << 16 | (color >> 16 & 255) << 8 | color >> 24 & 255;
var canvasMemory = sw * sh * 4;
var sourceMemory = 0;
if(copySource) sourceMemory = sw * sh * 4;
var totalMemory = canvasMemory + sourceMemory;
var memory1 = new lime.utils.ByteArray();
if(memory1.allocated < totalMemory) memory1.___resizeBuffer(memory1.allocated = Std["int"](Math.max(totalMemory,memory1.allocated * 2))); else if(memory1.allocated > totalMemory) memory1.___resizeBuffer(memory1.allocated = totalMemory);
memory1.length = totalMemory;
totalMemory;
memory1.position = 0;
var bitmapData = sourceBitmapData.clone();
var pixels = bitmapData.getPixels(sourceRect);
memory1.writeBytes(pixels);
memory1.position = canvasMemory;
if(copySource) memory1.writeBytes(pixels);
memory1.position = 0;
openfl.Memory.select(memory1);
var thresholdMask1 = threshold & mask;
var position1;
var pixelMask1;
var pixelValue1;
var i1;
var test1;
var _g4 = 0;
while(_g4 < dh) {
var yy1 = _g4++;
var _g11 = 0;
while(_g11 < dw) {
var xx1 = _g11++;
position1 = (xx1 + sx + (yy1 + sy) * sw) * 4;
pixelValue1 = openfl.Memory._setPositionTemporarily(position1,function() {
return openfl.Memory.gcRef.readInt();
});
pixelMask1 = pixelValue1 & mask;
i1 = openfl.display.BitmapData.__ucompare(pixelMask1,thresholdMask1);
test1 = false;
if(operation == "==") test1 = i1 == 0; else if(operation == "<") test1 = i1 == -1; else if(operation == ">") test1 = i1 == 1; else if(operation == "!=") test1 = i1 != 0; else if(operation == "<=") test1 = i1 == 0 || i1 == -1; else if(operation == ">=") test1 = i1 == 0 || i1 == 1;
if(test1) {
openfl.Memory.setI32(position1,color);
hits1++;
} else if(copySource) openfl.Memory.setI32(position1,openfl.Memory._setPositionTemporarily(canvasMemory + position1,function() {
return openfl.Memory.gcRef.readInt();
}));
}
}
memory1.position = 0;
bitmapData.setPixels(sourceRect,memory1);
this.copyPixels(bitmapData,bitmapData.rect,destPoint);
openfl.Memory.select(null);
return hits1;
}
}
,unlock: function(changeRect) {
}
,__createUVs: function() {
if(this.__uvData == null) this.__uvData = new openfl.display.TextureUvs();
this.__uvData.x0 = 0;
this.__uvData.y0 = 0;
this.__uvData.x1 = 1;
this.__uvData.y1 = 0;
this.__uvData.x2 = 1;
this.__uvData.y2 = 1;
this.__uvData.x3 = 0;
this.__uvData.y3 = 1;
}
,__loadFromBase64: function(base64,type,onload) {
var _g = this;
lime.graphics.Image.fromBase64(base64,type,function(image) {
_g.__loadFromImage(image);
if(onload != null) onload(_g);
});
}
,__loadFromBytes: function(bytes,rawAlpha,onload) {
var _g = this;
lime.graphics.Image.fromBytes(bytes,function(image) {
_g.__loadFromImage(image);
if(rawAlpha != null) {
lime.graphics.utils.ImageCanvasUtil.convertToCanvas(_g.__image);
lime.graphics.utils.ImageCanvasUtil.createImageData(_g.__image);
var data = _g.__image.buffer.data;
var _g2 = 0;
var _g1 = rawAlpha.length;
while(_g2 < _g1) {
var i = _g2++;
data[i * 4 + 3] = rawAlpha.readUnsignedByte();
}
_g.__image.dirty = true;
}
if(onload != null) onload(_g);
});
}
,__loadFromFile: function(path,onload,onerror) {
var _g = this;
lime.graphics.Image.fromFile(path,function(image) {
_g.__loadFromImage(image);
if(onload != null) onload(_g);
},onerror);
}
,__loadFromImage: function(image) {
this.__image = image;
this.width = image.width;
this.height = image.height;
this.rect = new openfl.geom.Rectangle(0,0,image.width,image.height);
this.__isValid = true;
}
,__renderCanvas: function(renderSession) {
if(!this.__isValid) return;
lime.graphics.utils.ImageCanvasUtil.sync(this.__image);
var context = renderSession.context;
if(this.__worldTransform == null) this.__worldTransform = new openfl.geom.Matrix();
context.globalAlpha = 1;
var transform = this.__worldTransform;
if(renderSession.roundPixels) context.setTransform(transform.a,transform.b,transform.c,transform.d,transform.tx | 0,transform.ty | 0); else context.setTransform(transform.a,transform.b,transform.c,transform.d,transform.tx,transform.ty);
context.drawImage(this.__image.buffer.get_src(),0,0);
}
,__renderMask: function(renderSession) {
}
,__sync: function() {
lime.graphics.utils.ImageCanvasUtil.sync(this.__image);
}
,__updateChildren: function(transformOnly) {
}
,__class__: openfl.display.BitmapData
};
co.doubleduck.utils.SplashBG = function(width,height,transparent,fillRGBA,onload) {
if(fillRGBA == null) fillRGBA = -1;
if(transparent == null) transparent = true;
openfl.display.BitmapData.call(this,0,0,transparent,fillRGBA);
if(co.doubleduck.utils.SplashBG.preload != null) {
this.__image = co.doubleduck.utils.SplashBG.preload;
width = this.__image.width;
height = this.__image.height;
} else this.__loadFromBase64(haxe.Resource.getString(co.doubleduck.utils.SplashBG.resourceName),co.doubleduck.utils.SplashBG.resourceType,function(b) {
if(co.doubleduck.utils.SplashBG.preload == null) co.doubleduck.utils.SplashBG.preload = b.__image;
if(onload != null) onload(b);
});
};
$hxClasses["co.doubleduck.utils.SplashBG"] = co.doubleduck.utils.SplashBG;
co.doubleduck.utils.SplashBG.__name__ = ["co","doubleduck","utils","SplashBG"];
co.doubleduck.utils.SplashBG.preload = null;
co.doubleduck.utils.SplashBG.__super__ = openfl.display.BitmapData;
co.doubleduck.utils.SplashBG.prototype = $extend(openfl.display.BitmapData.prototype,{
__class__: co.doubleduck.utils.SplashBG
});
co.doubleduck.utils.ProgBG = function(width,height,transparent,fillRGBA,onload) {
if(fillRGBA == null) fillRGBA = -1;
if(transparent == null) transparent = true;
openfl.display.BitmapData.call(this,0,0,transparent,fillRGBA);
if(co.doubleduck.utils.ProgBG.preload != null) {
this.__image = co.doubleduck.utils.ProgBG.preload;
width = this.__image.width;
height = this.__image.height;
} else this.__loadFromBase64(haxe.Resource.getString(co.doubleduck.utils.ProgBG.resourceName),co.doubleduck.utils.ProgBG.resourceType,function(b) {
if(co.doubleduck.utils.ProgBG.preload == null) co.doubleduck.utils.ProgBG.preload = b.__image;
if(onload != null) onload(b);
});
};
$hxClasses["co.doubleduck.utils.ProgBG"] = co.doubleduck.utils.ProgBG;
co.doubleduck.utils.ProgBG.__name__ = ["co","doubleduck","utils","ProgBG"];
co.doubleduck.utils.ProgBG.preload = null;
co.doubleduck.utils.ProgBG.__super__ = openfl.display.BitmapData;
co.doubleduck.utils.ProgBG.prototype = $extend(openfl.display.BitmapData.prototype,{
__class__: co.doubleduck.utils.ProgBG
});
co.doubleduck.utils.ProgFill = function(width,height,transparent,fillRGBA,onload) {
if(fillRGBA == null) fillRGBA = -1;
if(transparent == null) transparent = true;
openfl.display.BitmapData.call(this,0,0,transparent,fillRGBA);
if(co.doubleduck.utils.ProgFill.preload != null) {
this.__image = co.doubleduck.utils.ProgFill.preload;
width = this.__image.width;
height = this.__image.height;
} else this.__loadFromBase64(haxe.Resource.getString(co.doubleduck.utils.ProgFill.resourceName),co.doubleduck.utils.ProgFill.resourceType,function(b) {
if(co.doubleduck.utils.ProgFill.preload == null) co.doubleduck.utils.ProgFill.preload = b.__image;
if(onload != null) onload(b);
});
};
$hxClasses["co.doubleduck.utils.ProgFill"] = co.doubleduck.utils.ProgFill;
co.doubleduck.utils.ProgFill.__name__ = ["co","doubleduck","utils","ProgFill"];
co.doubleduck.utils.ProgFill.preload = null;
co.doubleduck.utils.ProgFill.__super__ = openfl.display.BitmapData;
co.doubleduck.utils.ProgFill.prototype = $extend(openfl.display.BitmapData.prototype,{
__class__: co.doubleduck.utils.ProgFill
});
co.doubleduck.utils.ProgBar = function(back,fill) {
this._maskTo = 1;
this._maskFrom = 0;
openfl.display.Sprite.call(this);
this._back = back;
this._fill = fill;
this.addChild(this._back);
this._fillPerc = { };
this._fillPerc.val = 0;
this._fillWidth = fill.get_width();
this._fillHeight = fill.get_height();
this._mask = new openfl.display.Sprite();
this.setupMask();
this.updateMask();
this._fill.set_mask(this._mask);
this.addChild(this._fill);
this.addChild(this._mask);
};
$hxClasses["co.doubleduck.utils.ProgBar"] = co.doubleduck.utils.ProgBar;
co.doubleduck.utils.ProgBar.__name__ = ["co","doubleduck","utils","ProgBar"];
co.doubleduck.utils.ProgBar.__super__ = openfl.display.Sprite;
co.doubleduck.utils.ProgBar.prototype = $extend(openfl.display.Sprite.prototype,{
setFillVals: function(width,height) {
this._fillWidth = width;
this._fillHeight = height;
this.setupMask();
}
,setFillPerc: function(value,duration) {
if(duration == null) duration = 0;
if(value == 0) value = 0.001;
co.doubleduck.utils.TweenChain.removeTweens(this._fillPerc);
if(duration <= 0) {
this._fillPerc.val = value;
this.updateMask();
} else co.doubleduck.utils.TweenChain.get(this._fillPerc).tto({ val : value},duration,null,$bind(this,this.updateMask));
}
,getFillPerc: function() {
return this._fillPerc.val;
}
,set_maskFrom: function(val) {
this._maskFrom = val;
this.setupMask();
return this._maskFrom;
}
,set_maskTo: function(val) {
this._maskTo = val;
this.setupMask();
return this._maskTo;
}
,setupMask: function() {
this._mask.get_graphics().clear();
this._mask.get_graphics().beginFill(0);
this._mask.get_graphics().drawRect(0,0,this._fillWidth * (this._maskTo - this._maskFrom),this._fillHeight);
this._mask.get_graphics().endFill();
this._mask.set_x(this._fillWidth * this._maskFrom);
}
,updateMask: function(obj) {
this._mask.set_scaleX(this._fillPerc.val);
}
,__class__: co.doubleduck.utils.ProgBar
,__properties__: $extend(openfl.display.Sprite.prototype.__properties__,{set_maskTo:"set_maskTo",set_maskFrom:"set_maskFrom"})
});
co.doubleduck.utils.SoundMgr = function() { };
$hxClasses["co.doubleduck.utils.SoundMgr"] = co.doubleduck.utils.SoundMgr;
co.doubleduck.utils.SoundMgr.__name__ = ["co","doubleduck","utils","SoundMgr"];
co.doubleduck.utils.SoundMgr._muted = null;
co.doubleduck.utils.SoundMgr._sounds = null;
co.doubleduck.utils.SoundMgr._perstistence = null;
co.doubleduck.utils.SoundMgr.forceFileType = function(type) {
co.doubleduck.utils.SoundMgr._fileType = type;
};
co.doubleduck.utils.SoundMgr.init = function(persistence) {
co.doubleduck.utils.SoundMgr._perstistence = persistence;
if(co.doubleduck.utils.SoundMgr._sounds == null) {
co.doubleduck.utils.SoundMgr._sounds = new haxe.ds.StringMap();
co.doubleduck.utils.SoundMgr._muted = co.doubleduck.utils.SoundMgr._perstistence.getValue("MUTE_STATE") == "true";
}
co.doubleduck.utils.SoundMgr.available = true;
};
co.doubleduck.utils.SoundMgr.getMute = function() {
return co.doubleduck.utils.SoundMgr._muted;
};
co.doubleduck.utils.SoundMgr.setMute = function(value) {
co.doubleduck.utils.SoundMgr._muted = value;
if(co.doubleduck.utils.SoundMgr._muted) co.doubleduck.utils.SoundMgr._perstistence.setValue("MUTE_STATE","true"); else co.doubleduck.utils.SoundMgr._perstistence.setValue("MUTE_STATE","true");
co.doubleduck.utils.SoundMgr.stopAll();
};
co.doubleduck.utils.SoundMgr.isAvailable = function() {
return co.doubleduck.utils.SoundMgr.available && !(co.doubleduck.utils.SoundMgr.isAndroidBrowser && !co.doubleduck.utils.SoundMgr.isChrome);
return co.doubleduck.utils.SoundMgr.available;
};
co.doubleduck.utils.SoundMgr.playSound = function(name,loop,startingPos,music,forceType) {
if(forceType == null) forceType = "";
if(music == null) music = false;
if(startingPos == null) startingPos = 0;
if(loop == null) loop = false;
if(co.doubleduck.utils.SoundMgr._muted || !co.doubleduck.utils.SoundMgr.isAvailable()) return null;
var sound;
var fileType = co.doubleduck.utils.SoundMgr.fileType();
if(forceType != "") fileType = forceType;
if(music) {
if(co.doubleduck.utils.SoundMgr.isChrome) {
var audio = co.doubleduck.utils.SoundMgr.audios.get("musics/" + name);
audio.loop = loop;
audio.play();
return name;
}
sound = openfl.Assets.getSound("musics/" + name + fileType,true);
} else sound = openfl.Assets.getSound("sounds/" + name + fileType,true);
if(sound != null) {
var newHandle = co.doubleduck.utils.SoundMgr.newHandle();
var loops;
if(loop) loops = 10000; else loops = 0;
if(startingPos > 0) {
if(startingPos >= sound.length * 1000 * 0.925) startingPos = 0;
}
var chan = sound.play(startingPos,loops);
chan.addEventListener(openfl.events.Event.SOUND_COMPLETE,co.doubleduck.utils.SoundMgr.handleSoundFinish);
var data = { };
data.sName = name;
data.sChannel = chan;
data.isLoop = loop;
data.isMusic = music;
data.forceType = forceType;
co.doubleduck.utils.SoundMgr._sounds.set(newHandle,data);
return newHandle;
}
return null;
};
co.doubleduck.utils.SoundMgr.pauseSound = function(sHandle) {
if(!co.doubleduck.utils.SoundMgr._sounds.exists(sHandle)) return;
var sound = co.doubleduck.utils.SoundMgr._sounds.get(sHandle);
sound.pausePos = sound.sChannel.get_position();
sound.sChannel.stop();
};
co.doubleduck.utils.SoundMgr.resumeSound = function(sHandle) {
if(!co.doubleduck.utils.SoundMgr._sounds.exists(sHandle)) return;
var dat = co.doubleduck.utils.SoundMgr._sounds.get(sHandle);
co.doubleduck.utils.SoundMgr.stopSound(sHandle);
co.doubleduck.utils.SoundMgr.forceNextHandle(sHandle);
co.doubleduck.utils.SoundMgr.playSound(dat.sName,dat.isLoop,dat.pausePos,dat.isMusic,dat.forceType);
};
co.doubleduck.utils.SoundMgr.stopSound = function(handle,isMusic) {
if(isMusic == null) isMusic = false;
if(isMusic) {
if(co.doubleduck.utils.SoundMgr.isChrome) {
var audio = co.doubleduck.utils.SoundMgr.audios.get("musics/" + handle);
audio.pause();
audio.currentTime = 0;
return;
}
}
if(handle == null || handle.length == 0) return;
if(co.doubleduck.utils.SoundMgr._sounds.exists(handle)) {
var data = co.doubleduck.utils.SoundMgr._sounds.get(handle);
var chan = data.sChannel;
chan.stop();
chan.removeEventListener(openfl.events.Event.SOUND_COMPLETE,co.doubleduck.utils.SoundMgr.handleSoundFinish);
chan = null;
co.doubleduck.utils.SoundMgr._sounds.remove(handle);
}
};
co.doubleduck.utils.SoundMgr.setSoundVolume = function(handle,volume,isMusic) {
if(isMusic == null) isMusic = false;
if(isMusic) {
if(co.doubleduck.utils.SoundMgr.isChrome) {
var audio = co.doubleduck.utils.SoundMgr.audios.get("musics/" + handle);
audio.volume = volume;
return;
}
}
if(handle == null || handle.length == 0) return;
if(co.doubleduck.utils.SoundMgr._sounds.exists(handle)) {
var data = co.doubleduck.utils.SoundMgr._sounds.get(handle);
var chan = data.sChannel;
var soundTransform = chan.get_soundTransform();
soundTransform.volume = volume;
chan.set_soundTransform(soundTransform);
}
};
co.doubleduck.utils.SoundMgr.stopAll = function() {
var iter = co.doubleduck.utils.SoundMgr._sounds.keys();
while(iter.hasNext()) {
var cKey = iter.next();
co.doubleduck.utils.SoundMgr.stopSound(cKey);
}
};
co.doubleduck.utils.SoundMgr.handleSoundFinish = function(e) {
var chan = e.target;
chan.removeEventListener(openfl.events.Event.SOUND_COMPLETE,co.doubleduck.utils.SoundMgr.handleSoundFinish);
var $it0 = co.doubleduck.utils.SoundMgr._sounds.keys();
while( $it0.hasNext() ) {
var cKey = $it0.next();
if(co.doubleduck.utils.SoundMgr._sounds.get(cKey).sChannel == chan) {
co.doubleduck.utils.SoundMgr._sounds.remove(cKey);
return;
}
}
};
co.doubleduck.utils.SoundMgr.forceNextHandle = function(handle) {
co.doubleduck.utils.SoundMgr._forceHandle = handle;
};
co.doubleduck.utils.SoundMgr.newHandle = function() {
if(co.doubleduck.utils.SoundMgr._forceHandle != "") {
var retHandle = co.doubleduck.utils.SoundMgr._forceHandle;
co.doubleduck.utils.SoundMgr._forceHandle = "";
return retHandle;
}
co.doubleduck.utils.SoundMgr._idCounter++;
return "snd" + (co.doubleduck.utils.SoundMgr._idCounter - 1);
};
co.doubleduck.utils.SoundMgr.fileType = function() {
co.doubleduck.utils.SoundMgr._fileType = ".ogg";
return co.doubleduck.utils.SoundMgr._fileType;
};
co.doubleduck.utils.TweenAnimator = function() { };
$hxClasses["co.doubleduck.utils.TweenAnimator"] = co.doubleduck.utils.TweenAnimator;
co.doubleduck.utils.TweenAnimator.__name__ = ["co","doubleduck","utils","TweenAnimator"];
co.doubleduck.utils.TweenAnimator.spin = function(obj,duration,amount) {
if(amount == null) amount = 0;
if(duration == null) duration = 1000;
obj.set_rotation(0);
if(amount > 0) {
amount--;
if(amount == 0) return;
}
co.doubleduck.utils.TweenChain.get(obj).tto({ rotation : 360},duration).call(co.doubleduck.utils.TweenAnimator.spin,[obj,duration,amount]);
};
co.doubleduck.utils.TweenAnimator.nudge = function(obj,duration,amount) {
if(amount == null) amount = 0;
if(duration == null) duration = 550;
obj.set_scaleX(obj.set_scaleY(1));
if(amount > 0) {
amount--;
if(amount == 0) return;
}
co.doubleduck.utils.TweenChain.get(obj).tto({ scaleX : 1.15, scaleY : 1.15},Math.floor(duration / 2),motion.easing.Sine.get_easeInOut()).tto({ scaleX : 1, scaleY : 1},Math.floor(duration / 2),motion.easing.Sine.get_easeInOut()).call(co.doubleduck.utils.TweenAnimator.nudge,[obj,duration,amount]);
};
co.doubleduck.utils.TweenAnimator.hover = function(obj,duration,amount) {
if(amount == null) amount = 0;
if(duration == null) duration = 1200;
if(amount > 0) {
amount--;
if(amount == 0) return;
}
co.doubleduck.utils.TweenChain.get(obj).tto({ y : obj.get_y() - 5},Math.floor(duration / 4),motion.easing.Sine.get_easeOut()).tto({ y : obj.get_y() + 5},Math.floor(duration / 2),motion.easing.Sine.get_easeInOut()).tto({ y : obj.get_y()},Math.floor(duration / 4),motion.easing.Sine.get_easeIn()).call(co.doubleduck.utils.TweenAnimator.hover,[obj,duration,amount]);
};
co.doubleduck.utils.TweenAnimator.slowJiggle = function(obj,factor,duration,amount) {
if(amount == null) amount = 0;
if(duration == null) duration = 2400;
if(factor == null) factor = 0.03;
if(amount > 0) {
amount--;
if(amount == 0) return;
}
co.doubleduck.utils.TweenChain.get(obj).tto({ scaleX : 1 + factor, scaleY : 1 - factor},Math.floor(duration / 4),motion.easing.Sine.get_easeOut()).tto({ scaleX : 1 - factor, scaleY : 1 + factor},Math.floor(duration / 2),motion.easing.Sine.get_easeInOut()).tto({ scaleX : 1, scaleY : 1},Math.floor(duration / 4),motion.easing.Sine.get_easeIn()).call(co.doubleduck.utils.TweenAnimator.slowJiggle,[obj,duration,amount]);
};
co.doubleduck.utils.TweenAnimator.shake = function(obj,strength,speed,amount) {
if(amount == null) amount = 0;
if(speed == null) speed = 50;
if(strength == null) strength = 10;
if(amount > 0) {
amount--;
if(amount == 0) return;
}
co.doubleduck.utils.TweenChain.get(obj).tto({ x : obj.get_x() - strength / 2 + Math.random() * strength, y : obj.get_y() - strength / 2 + Math.random() * strength},speed,motion.easing.Sine.get_easeOut()).tto({ x : obj.get_x() - strength / 2 + Math.random() * strength, y : obj.get_y() - strength / 2 + Math.random() * strength},2 * speed,motion.easing.Sine.get_easeInOut()).tto({ x : obj.get_x(), y : obj.get_y()},speed,motion.easing.Sine.get_easeIn()).call(co.doubleduck.utils.TweenAnimator.shake,[obj,strength,speed,amount]);
};
co.doubleduck.utils.TweenChain = function(obj,overwrite,debug) {
if(debug == null) debug = false;
if(overwrite == null) overwrite = false;
if(co.doubleduck.utils.TweenChain.allowNew) {
this._chains = [];
this._currIndex = 0;
this._obj = obj;
this._debug = debug;
this._overwrite = overwrite;
this._activated = false;
} else throw "Wrong call to function new(), use TweenChain.get()";
};
$hxClasses["co.doubleduck.utils.TweenChain"] = co.doubleduck.utils.TweenChain;
co.doubleduck.utils.TweenChain.__name__ = ["co","doubleduck","utils","TweenChain"];
co.doubleduck.utils.TweenChain.get = function(obj,overwrite,debug) {
if(debug == null) debug = false;
if(overwrite == null) overwrite = false;
co.doubleduck.utils.TweenChain.allowNew = true;
var ret = new co.doubleduck.utils.TweenChain(obj,overwrite,debug);
co.doubleduck.utils.TweenChain.activeChains.push(ret);
ret._id = co.doubleduck.utils.TweenChain.count;
co.doubleduck.utils.TweenChain.count++;
co.doubleduck.utils.TweenChain.allowNew = false;
return ret;
};
co.doubleduck.utils.TweenChain.removeTweens = function(obj) {
var arr = [];
var _g = 0;
var _g1 = co.doubleduck.utils.TweenChain.activeChains;
while(_g < _g1.length) {
var i = _g1[_g];
++_g;
if(i._obj == obj) {
if(i._runningTween != null) motion.Actuate.stop(obj,null,false,false);
i._chains = [];
arr.push(i);
}
}
var _g2 = 0;
while(_g2 < arr.length) {
var i1 = arr[_g2];
++_g2;
HxOverrides.remove(co.doubleduck.utils.TweenChain.activeChains,i1);
}
};
co.doubleduck.utils.TweenChain.getActiveChains = function(withoutNulls) {
if(withoutNulls == null) withoutNulls = false;
if(withoutNulls) {
var arr = [];
var _g = 0;
var _g1 = co.doubleduck.utils.TweenChain.activeChains;
while(_g < _g1.length) {
var i = _g1[_g];
++_g;
if(i._obj != null) arr.push(i);
}
return arr;
}
return co.doubleduck.utils.TweenChain.activeChains;
};
co.doubleduck.utils.TweenChain.purge = function() {
motion.Actuate.reset();
co.doubleduck.utils.TweenChain.activeChains = null;
co.doubleduck.utils.TweenChain.activeChains = [];
};
co.doubleduck.utils.TweenChain.prototype = {
tto: function(props,duration,ease,onUpdate) {
var chain = this.getNewChainHash();
if(duration == 0) chain.set("type",co.doubleduck.utils.ChainTypes.APPLY); else {
if(ease == null) ease = motion.easing.Linear.get_easeNone();
chain.set("type",co.doubleduck.utils.ChainTypes.TWEEN);
chain.set("duration",duration / 1000);
chain.set("ease",ease);
chain.set("onUpdate",onUpdate);
}
chain.set("props",props);
this.addToQueue(chain);
return this;
}
,wait: function(duration) {
if(duration == null) duration = 10;
if(duration == 0) return this;
var chain = this.getNewChainHash();
chain.set("duration",duration / 1000);
chain.set("type",co.doubleduck.utils.ChainTypes.TIMER);
this.addToQueue(chain);
return this;
}
,call: function(handler,params) {
var chain = this.getNewChainHash();
if(params == null) params = [];
chain.set("handler",handler);
chain.set("params",params);
chain.set("type",co.doubleduck.utils.ChainTypes.CALL);
this.addToQueue(chain);
return this;
}
,addToQueue: function(d) {
this._chains.push(d);
if(!this._activated) {
if(d.get("duration") == 0) {
if(d.get("type") == co.doubleduck.utils.ChainTypes.APPLY) motion.Actuate.apply(this._obj,d.get("props")); else if(d.get("type") == co.doubleduck.utils.ChainTypes.CALL) Reflect.callMethod(d.get("handler"),d.get("handler"),d.get("params"));
this._currIndex++;
} else {
this._activated = true;
this.act();
}
}
}
,act: function() {
if(this._currIndex >= this._chains.length) {
this.destroy();
return;
}
var currChain = this._chains[this._currIndex];
this._currIndex++;
this._runningTween = null;
this.debugTrace(this._currIndex + "/" + this._chains.length + " :: " + Std.string(currChain));
if(currChain.get("type") == co.doubleduck.utils.ChainTypes.TWEEN) {
if(currChain.get("onUpdate") == null) this._runningTween = motion.Actuate.tween(this._obj,currChain.get("duration"),currChain.get("props"),this._overwrite).ease(currChain.get("ease")).onComplete($bind(this,this.doneActuateTween)); else this._runningTween = motion.Actuate.tween(this._obj,currChain.get("duration"),currChain.get("props"),this._overwrite).ease(currChain.get("ease")).onUpdate(currChain.get("onUpdate"),[this._obj]).onComplete($bind(this,this.doneActuateTween));
this._runningTween.autoVisible(co.doubleduck.utils.TweenChain.autoVisible);
} else if(currChain.get("type") == co.doubleduck.utils.ChainTypes.APPLY) {
motion.Actuate.apply(this._obj,currChain.get("props"));
this.act();
} else if(currChain.get("type") == co.doubleduck.utils.ChainTypes.TIMER) motion.Actuate.timer(currChain.get("duration")).onComplete($bind(this,this.act)); else if(currChain.get("type") == co.doubleduck.utils.ChainTypes.CALL) {
Reflect.callMethod(currChain.get("handler"),currChain.get("handler"),currChain.get("params"));
this.act();
}
}
,doneActuateTween: function() {
var currChain = this._chains[this._currIndex - 1];
var _g = 0;
var _g1 = Reflect.fields(currChain.get("props"));
while(_g < _g1.length) {
var prop = _g1[_g];
++_g;
var val = Reflect.getProperty(currChain.get("props"),prop);
Reflect.setProperty(this._obj,prop,val);
}
this.act();
}
,destroy: function() {
HxOverrides.remove(co.doubleduck.utils.TweenChain.activeChains,this);
this._chains = null;
if(this._obj == null) co.doubleduck.utils.TweenChain.removeTweens(this._obj);
}
,debugTrace: function(d) {
if(this._debug) null;
}
,getNewChainHash: function() {
var ret = new haxe.ds.StringMap();
ret.set("type",null);
ret.set("duration",0);
return ret;
}
,__class__: co.doubleduck.utils.TweenChain
};
co.doubleduck.utils.ChainTypes = $hxClasses["co.doubleduck.utils.ChainTypes"] = { __ename__ : ["co","doubleduck","utils","ChainTypes"], __constructs__ : ["TWEEN","TIMER","CALL","APPLY"] };
co.doubleduck.utils.ChainTypes.TWEEN = ["TWEEN",0];
co.doubleduck.utils.ChainTypes.TWEEN.toString = $estr;
co.doubleduck.utils.ChainTypes.TWEEN.__enum__ = co.doubleduck.utils.ChainTypes;
co.doubleduck.utils.ChainTypes.TIMER = ["TIMER",1];
co.doubleduck.utils.ChainTypes.TIMER.toString = $estr;
co.doubleduck.utils.ChainTypes.TIMER.__enum__ = co.doubleduck.utils.ChainTypes;
co.doubleduck.utils.ChainTypes.CALL = ["CALL",2];
co.doubleduck.utils.ChainTypes.CALL.toString = $estr;
co.doubleduck.utils.ChainTypes.CALL.__enum__ = co.doubleduck.utils.ChainTypes;
co.doubleduck.utils.ChainTypes.APPLY = ["APPLY",3];
co.doubleduck.utils.ChainTypes.APPLY.toString = $estr;
co.doubleduck.utils.ChainTypes.APPLY.__enum__ = co.doubleduck.utils.ChainTypes;
co.doubleduck.utils.Utils = function() { };
$hxClasses["co.doubleduck.utils.Utils"] = co.doubleduck.utils.Utils;
co.doubleduck.utils.Utils.__name__ = ["co","doubleduck","utils","Utils"];
co.doubleduck.utils.Utils.delayedCall = function(delay,call,args,obj) {
if(obj != null) co.doubleduck.utils.TweenChain.get(obj).wait(delay * 1000 | 0).call(call,args); else motion.Actuate.timer(delay).onComplete(call,args);
};
co.doubleduck.utils.Utils.rectOverlap = function(r1,r2) {
if(r2.contains(r1.x,r1.y)) return true;
if(r2.contains(r1.x + r1.width,r1.y + r1.height)) return true;
if(r2.contains(r1.x + r1.width,r1.y)) return true;
if(r2.contains(r1.x,r1.y + r1.height)) return true;
if(r1.contains(r2.x,r2.y)) return true;
if(r1.contains(r2.x + r2.width,r2.y + r2.height)) return true;
if(r1.contains(r2.x + r2.width,r2.y)) return true;
if(r1.contains(r2.x,r2.y + r2.height)) return true;
return false;
};
co.doubleduck.utils.Utils.map = function(value,aMin,aMax,bMin,bMax) {
if(bMax == null) bMax = 1;
if(bMin == null) bMin = 0;
if(value <= aMin) return bMin;
if(value >= aMax) return bMax;
return (value - aMin) * (bMax - bMin) / (aMax - aMin) + bMin;
};
co.doubleduck.utils.Utils.nrand = function() {
return (Math.random() + Math.random()) / 2;
};
co.doubleduck.utils.Utils.getDeviceType = function() {
return co.doubleduck.utils.DeviceType.HTML5;
return null;
};
co.doubleduck.utils.Utils.shuffleArray = function(arr) {
var tmp;
var j;
var i = arr.length;
while(i > 0) {
j = Std["int"](Math.random() * i);
tmp = arr[--i];
arr[i] = arr[j];
arr[j] = tmp;
}
};
co.doubleduck.utils.Utils.sign = function(n) {
if(n < 0) return -1;
return 1;
};
co.doubleduck.utils.DeviceType = $hxClasses["co.doubleduck.utils.DeviceType"] = { __ename__ : ["co","doubleduck","utils","DeviceType"], __constructs__ : ["iPhone3","iPhone4","iPhone5","iPad","iPadRetina","Android","DesktopFlash","DesktopNative","HTML5"] };
co.doubleduck.utils.DeviceType.iPhone3 = ["iPhone3",0];
co.doubleduck.utils.DeviceType.iPhone3.toString = $estr;
co.doubleduck.utils.DeviceType.iPhone3.__enum__ = co.doubleduck.utils.DeviceType;
co.doubleduck.utils.DeviceType.iPhone4 = ["iPhone4",1];
co.doubleduck.utils.DeviceType.iPhone4.toString = $estr;
co.doubleduck.utils.DeviceType.iPhone4.__enum__ = co.doubleduck.utils.DeviceType;
co.doubleduck.utils.DeviceType.iPhone5 = ["iPhone5",2];
co.doubleduck.utils.DeviceType.iPhone5.toString = $estr;
co.doubleduck.utils.DeviceType.iPhone5.__enum__ = co.doubleduck.utils.DeviceType;
co.doubleduck.utils.DeviceType.iPad = ["iPad",3];
co.doubleduck.utils.DeviceType.iPad.toString = $estr;
co.doubleduck.utils.DeviceType.iPad.__enum__ = co.doubleduck.utils.DeviceType;
co.doubleduck.utils.DeviceType.iPadRetina = ["iPadRetina",4];
co.doubleduck.utils.DeviceType.iPadRetina.toString = $estr;
co.doubleduck.utils.DeviceType.iPadRetina.__enum__ = co.doubleduck.utils.DeviceType;
co.doubleduck.utils.DeviceType.Android = ["Android",5];
co.doubleduck.utils.DeviceType.Android.toString = $estr;
co.doubleduck.utils.DeviceType.Android.__enum__ = co.doubleduck.utils.DeviceType;
co.doubleduck.utils.DeviceType.DesktopFlash = ["DesktopFlash",6];
co.doubleduck.utils.DeviceType.DesktopFlash.toString = $estr;
co.doubleduck.utils.DeviceType.DesktopFlash.__enum__ = co.doubleduck.utils.DeviceType;
co.doubleduck.utils.DeviceType.DesktopNative = ["DesktopNative",7];
co.doubleduck.utils.DeviceType.DesktopNative.toString = $estr;
co.doubleduck.utils.DeviceType.DesktopNative.__enum__ = co.doubleduck.utils.DeviceType;
co.doubleduck.utils.DeviceType.HTML5 = ["HTML5",8];
co.doubleduck.utils.DeviceType.HTML5.toString = $estr;
co.doubleduck.utils.DeviceType.HTML5.__enum__ = co.doubleduck.utils.DeviceType;
co.doubleduck.utils.data = {};
co.doubleduck.utils.data.StorageAdapter = function() { };
$hxClasses["co.doubleduck.utils.data.StorageAdapter"] = co.doubleduck.utils.data.StorageAdapter;
co.doubleduck.utils.data.StorageAdapter.__name__ = ["co","doubleduck","utils","data","StorageAdapter"];
co.doubleduck.utils.data.StorageAdapter.get = function(domain,type) {
if(type == co.doubleduck.utils.data.StorageAdapterType.LOCAL_STORAGE) return new co.doubleduck.utils.data.LocalStorageAdapter(domain); else if(type == co.doubleduck.utils.data.StorageAdapterType.SHARED_OBJECT) return new co.doubleduck.utils.data.SharedObjectAdapter(domain);
return null;
};
co.doubleduck.utils.data.StorageAdapter.prototype = {
getValue: function(key) {
throw "DDException: function not implemented!";
return null;
}
,setValue: function(key,value) {
throw "DDException: function not implemented!";
return null;
}
,removeValue: function(key) {
throw "DDException: function not implemented!";
return null;
}
,rawData: function() {
throw "DDException: function not implemented!";
return null;
}
,clear: function() {
throw "DDException: function not implemented!";
return null;
}
,getString: function(key) {
var result = this.getValue(key[0]);
return result;
}
,setString: function(key,value) {
this.setValue(key[0],value);
}
,initString: function(key,defaultValue) {
if(defaultValue == null) defaultValue = "";
if(this.getString(key) == null) this.setString(key,defaultValue);
}
,getFloat: function(key) {
var result = this.getValue(key[0]);
return result;
}
,setFloat: function(key,value) {
this.setValue(key[0],value);
}
,initFloat: function(key,defaultValue) {
if(defaultValue == null) defaultValue = 0;
if(this.getString(key) == null) this.setFloat(key,defaultValue);
}
,getInt: function(key) {
var result = Std["int"](this.getValue(key[0]));
return result;
}
,setInt: function(key,value) {
this.setValue(key[0],value);
}
,initInt: function(key,defaultValue) {
if(defaultValue == null) defaultValue = 0;
if(this.getString(key) == null) this.setInt(key,defaultValue);
}
,__class__: co.doubleduck.utils.data.StorageAdapter
};
co.doubleduck.utils.data.LocalStorageAdapter = function(domain) {
this._domain = domain;
this._ls = this.getLocalStorage();
};
$hxClasses["co.doubleduck.utils.data.LocalStorageAdapter"] = co.doubleduck.utils.data.LocalStorageAdapter;
co.doubleduck.utils.data.LocalStorageAdapter.__name__ = ["co","doubleduck","utils","data","LocalStorageAdapter"];
co.doubleduck.utils.data.LocalStorageAdapter.__super__ = co.doubleduck.utils.data.StorageAdapter;
co.doubleduck.utils.data.LocalStorageAdapter.prototype = $extend(co.doubleduck.utils.data.StorageAdapter.prototype,{
getValue: function(key) {
var result = this._ls.getItem(this._domain + key);
if(result == null) return null;
return JSON.parse(result);
}
,setValue: function(key,value) {
this._ls.setItem(this._domain + key,JSON.stringify(value));
}
,removeValue: function(key) {
this._ls.removeItem(this._domain + key);
}
,clear: function() {
this._ls.clear();
}
,rawData: function() {
return this._ls;
}
,getLocalStorage: function() {
var ls = js.Browser.getLocalStorage();
if(ls != null) try {
ls.setItem("ddstoragetest","1");
ls.getItem("ddstoragetest");
ls.removeItem("ddstoragetest");
return ls;
} catch( e ) {
}
return new co.doubleduck.utils.data.DummyLocalStorage();
}
,__class__: co.doubleduck.utils.data.LocalStorageAdapter
});
co.doubleduck.utils.data.DummyLocalStorage = function() {
this.data = { };
};
$hxClasses["co.doubleduck.utils.data.DummyLocalStorage"] = co.doubleduck.utils.data.DummyLocalStorage;
co.doubleduck.utils.data.DummyLocalStorage.__name__ = ["co","doubleduck","utils","data","DummyLocalStorage"];
co.doubleduck.utils.data.DummyLocalStorage.prototype = {
setItem: function(key,value) {
Reflect.setProperty(this.data,key,value);
}
,getItem: function(key) {
return Reflect.getProperty(this.data,key);
}
,removeItem: function(key) {
Reflect.deleteField(this.data,key);
}
,clear: function() {
this.data = { };
}
,__class__: co.doubleduck.utils.data.DummyLocalStorage
};
co.doubleduck.utils.data.SharedObjectAdapter = function(domain) {
this._domain = domain;
var localPath = "";
this._data = openfl.net.SharedObject.getLocal(domain + "savedata",localPath);
};
$hxClasses["co.doubleduck.utils.data.SharedObjectAdapter"] = co.doubleduck.utils.data.SharedObjectAdapter;
co.doubleduck.utils.data.SharedObjectAdapter.__name__ = ["co","doubleduck","utils","data","SharedObjectAdapter"];
co.doubleduck.utils.data.SharedObjectAdapter.__super__ = co.doubleduck.utils.data.StorageAdapter;
co.doubleduck.utils.data.SharedObjectAdapter.prototype = $extend(co.doubleduck.utils.data.StorageAdapter.prototype,{
getValue: function(key) {
return Reflect.getProperty(this._data.data,key);
}
,setValue: function(key,value) {
this._data.data[key] = value;
this._data.flush();
}
,removeValue: function(key) {
Reflect.deleteField(this._data.data,key);
this._data.flush();
}
,clear: function() {
this._data.clear();
this._data.flush();
}
,rawData: function() {
return this._data;
}
,__class__: co.doubleduck.utils.data.SharedObjectAdapter
});
co.doubleduck.utils.data.StorageAdapterType = $hxClasses["co.doubleduck.utils.data.StorageAdapterType"] = { __ename__ : ["co","doubleduck","utils","data","StorageAdapterType"], __constructs__ : ["LOCAL_STORAGE","SHARED_OBJECT"] };
co.doubleduck.utils.data.StorageAdapterType.LOCAL_STORAGE = ["LOCAL_STORAGE",0];
co.doubleduck.utils.data.StorageAdapterType.LOCAL_STORAGE.toString = $estr;
co.doubleduck.utils.data.StorageAdapterType.LOCAL_STORAGE.__enum__ = co.doubleduck.utils.data.StorageAdapterType;
co.doubleduck.utils.data.StorageAdapterType.SHARED_OBJECT = ["SHARED_OBJECT",1];
co.doubleduck.utils.data.StorageAdapterType.SHARED_OBJECT.toString = $estr;
co.doubleduck.utils.data.StorageAdapterType.SHARED_OBJECT.__enum__ = co.doubleduck.utils.data.StorageAdapterType;
var com = {};
com.funtomic = {};
com.funtomic.GameOpsStatus = $hxClasses["com.funtomic.GameOpsStatus"] = { __ename__ : ["com","funtomic","GameOpsStatus"], __constructs__ : ["UNINITIALIZED","INITIALIZING","INITIALIZED","QUITTING"] };
com.funtomic.GameOpsStatus.UNINITIALIZED = ["UNINITIALIZED",0];
com.funtomic.GameOpsStatus.UNINITIALIZED.toString = $estr;
com.funtomic.GameOpsStatus.UNINITIALIZED.__enum__ = com.funtomic.GameOpsStatus;
com.funtomic.GameOpsStatus.INITIALIZING = ["INITIALIZING",1];
com.funtomic.GameOpsStatus.INITIALIZING.toString = $estr;
com.funtomic.GameOpsStatus.INITIALIZING.__enum__ = com.funtomic.GameOpsStatus;
com.funtomic.GameOpsStatus.INITIALIZED = ["INITIALIZED",2];
com.funtomic.GameOpsStatus.INITIALIZED.toString = $estr;
com.funtomic.GameOpsStatus.INITIALIZED.__enum__ = com.funtomic.GameOpsStatus;
com.funtomic.GameOpsStatus.QUITTING = ["QUITTING",3];
com.funtomic.GameOpsStatus.QUITTING.toString = $estr;
com.funtomic.GameOpsStatus.QUITTING.__enum__ = com.funtomic.GameOpsStatus;
com.funtomic.GameOps = function() { };
$hxClasses["com.funtomic.GameOps"] = com.funtomic.GameOps;
com.funtomic.GameOps.__name__ = ["com","funtomic","GameOps"];
com.funtomic.GameOps.gameVersion = null;
com.funtomic.GameOps.domain = null;
com.funtomic.GameOps.userID = null;
com.funtomic.GameOps.fbId = null;
com.funtomic.GameOps.experimentId = null;
com.funtomic.GameOps.alternativeId = null;
com.funtomic.GameOps.FBAppId = null;
com.funtomic.GameOps.platform = null;
com.funtomic.GameOps.url = null;
com.funtomic.GameOps.lastLevelNumber = null;
com.funtomic.GameOps.gameConfig = null;
com.funtomic.GameOps.elapsedPlayTimeAtInit = null;
com.funtomic.GameOps.elapsedGameTime = null;
com.funtomic.GameOps.levelsWon = null;
com.funtomic.GameOps.sessionId = null;
com.funtomic.GameOps.init = function(pDomain,pGameVersion,pDefaultConfig,pGameState,callback) {
if(com.funtomic.GameOps.status != com.funtomic.GameOpsStatus.UNINITIALIZED) return;
com.funtomic.GameOps.status = com.funtomic.GameOpsStatus.INITIALIZING;
com.funtomic.GameOps.domain = pDomain;
com.funtomic.GameOps.gameVersion = pGameVersion;
com.funtomic.GameOps.readLocalStorage();
com.funtomic.GameOps.readGameStateLocalStorage();
com.funtomic.GameOps.startUpdateTimers();
com.funtomic.GameOps.url = window.location.href;
com.funtomic.GameOps.startTimer("session");
com.funtomic.GameOps.platform = "web";
com.funtomic.GameOps.sessionId = com.funtomic.GameOps.generateRandomString(20);
if(com.funtomic.GameOps.localStorage.installDate == null) {
com.funtomic.GameOps.localStorage.installDate = Math.round(new Date().getTime() / 1000);
com.funtomic.GameOps.firstSession = true;
com.funtomic.GameOps.reportEvent("first_run");
}
com.funtomic.GameOps.elapsedGameTime = com.funtomic.GameOps.storageGet("FuntomicGameOps-ElapsedGameTime",0);
if(com.funtomic.GameOps.localStorage.elapsedGameTime != null) {
com.funtomic.GameOps.elapsedGameTime = com.funtomic.GameOps.localStorage.elapsedGameTime;
Reflect.deleteField(com.funtomic.GameOps.localStorage,"elapsedGameTime");
}
if(com.funtomic.GameOps.localStorage.originalVersion == null) com.funtomic.GameOps.localStorage.originalVersion = com.funtomic.GameOps.gameVersion;
com.funtomic.GameOps.elapsedPlayTimeAtInit = com.funtomic.GameOps.elapsedGameTime;
com.funtomic.GameOps.userID = com.funtomic.GameOps.localStorage.userID;
try {
var html5ApiUserId = flambe.System.external.call("HTML5API_getUserId");
if(html5ApiUserId != null) {
com.funtomic.GameOpsLogger.verbose(["html5ApiUserId is: " + html5ApiUserId]);
com.funtomic.GameOps.userID = html5ApiUserId;
}
} catch( e ) {
com.funtomic.GameOpsLogger.verbose(["there is no HTML5API_getUserId function"]);
}
com.funtomic.GameOps.levelsWon = 0;
if(com.funtomic.GameOps.localStorage.config == null || com.funtomic.GameOps.localStorage.configForVersion != null && com.funtomic.GameOps.localStorage.configForVersion != com.funtomic.GameOps.gameVersion) com.funtomic.GameOps.localStorage.config = pDefaultConfig;
com.funtomic.GameOps.gameConfig = com.funtomic.GameOps.localStorage.config;
if(com.funtomic.GameOps.localStorage.experimentId != null) com.funtomic.GameOps.experimentId = com.funtomic.GameOps.localStorage.experimentId;
if(com.funtomic.GameOps.localStorage.alternativeId != null) com.funtomic.GameOps.alternativeId = com.funtomic.GameOps.localStorage.alternativeId;
var lastSessionEndEvent = com.funtomic.GameOps.storageGet("FuntomicGameOps-SessionEndEvent",null);
if(lastSessionEndEvent != null) {
com.funtomic.GameOps.reportEvents([lastSessionEndEvent]);
com.funtomic.GameOps.storageRemove("FuntomicGameOps-SessionEndEvent");
}
var sessionEndTimer = new haxe.Timer(5000);
sessionEndTimer.run = function() {
com.funtomic.GameOps.sessionEnd();
};
window.addEventListener("pagehide",function(e1) {
com.funtomic.GameOps.sessionEnd();
});
window.addEventListener("beforeunload",function(e2) {
com.funtomic.GameOps.sessionEnd();
});
com.funtomic.GameOps.reportEvent("session_start");
com.funtomic.GameOps.gameStateGameOpsData.elapsed_game_time = com.funtomic.GameOps.elapsedGameTime;
com.funtomic.GameOps.gameStateGameOpsData.install_date = com.funtomic.GameOps.localStorage.installDate;
com.funtomic.GameOps.writeLocalStorage();
com.funtomic.GameOps.writeGameStateLocalStorage();
pGameState.game_ops_data = com.funtomic.GameOps.gameStateGameOpsData;
com.funtomic.GameOps.loadGameConfig(pGameState,callback);
};
com.funtomic.GameOps.loadGameConfig = function(gameState,callback) {
com.funtomic.GameOpsLogger.verbose(["Fetching game config for: ",com.funtomic.GameOps.domain]);
var request = new haxe.Http(null);
//request.url = com.funtomic.GameOps.apiURLPrefix + com.funtomic.GameOps.apiConfigLocation;
request.setParameter("domain",com.funtomic.GameOps.domain);
request.setParameter("game_state",JSON.stringify(gameState));
request.setParameter("game_ops_version",com.funtomic.GameOps.gameOpsVersion);
request.setParameter("game_version",com.funtomic.GameOps.gameVersion);
request.setParameter("platform_name",com.funtomic.GameOps.platform);
if(com.funtomic.GameOps.userID != null) request.setParameter("user_id",com.funtomic.GameOps.userID);
if(com.funtomic.GameOps.experimentId != null) request.setParameter("experiment_id",com.funtomic.GameOps.experimentId);
if(com.funtomic.GameOps.alternativeId != null) request.setParameter("alternative_id",com.funtomic.GameOps.alternativeId);
if(com.funtomic.GameOps.localStorage.userEmail != null) request.setParameter("user_email",com.funtomic.GameOps.localStorage.userEmail);
if(com.funtomic.GameOps.localStorage.configMd5 != null) request.setParameter("config_md5",com.funtomic.GameOps.localStorage.configMd5);
request.onData = function(data) {
com.funtomic.GameOps.onConfigLoadSuccess(data);
if(callback != null) callback(true);
com.funtomic.GameOps.afterInit();
};
request.onStatus = com.funtomic.GameOps.onConfigLoadReturned;
request.onError = function(msg) {
com.funtomic.GameOps.IOErrorHandler(msg);
com.funtomic.GameOps.status = com.funtomic.GameOpsStatus.UNINITIALIZED;
if(callback != null) callback(false);
com.funtomic.GameOps.afterInit();
};
request.request(true);
};
com.funtomic.GameOps.onConfigLoadReturned = function(status) {
switch(status) {
case 500:
com.funtomic.GameOps.onConfigLoadFailure();
break;
case 0:
com.funtomic.GameOps.onConfigLoadTimeout();
break;
}
};
com.funtomic.GameOps.onConfigLoadTimeout = function() {
com.funtomic.GameOpsLogger.error(["Timeout while fetching game config from server"]);
};
com.funtomic.GameOps.onConfigLoadFailure = function() {
com.funtomic.GameOpsLogger.error(["Error loading config"]);
};
com.funtomic.GameOps.IOErrorHandler = function(msg) {
com.funtomic.GameOpsLogger.error(["Error caught ",msg]);
};
com.funtomic.GameOps.onConfigLoadSuccess = function(resultString) {
var result = JSON.parse(resultString);
com.funtomic.GameOpsLogger.verbose(["Config successfuly loaded",resultString]);
if(result != null) {
if(result.user_id != null) {
com.funtomic.GameOps.userID = result.user_id;
com.funtomic.GameOps.localStorage.userID = result.user_id;
}
if(result.is_debug_mode) com.funtomic.GameOps.isDebugMode = result.is_debug_mode;
if(result.install_date) com.funtomic.GameOps.localStorage.installDate = result.install_date;
com.funtomic.GameOps.experimentId = result.experiment_id;
com.funtomic.GameOps.localStorage.experimentId = com.funtomic.GameOps.experimentId;
com.funtomic.GameOps.alternativeId = result.alternative_id;
com.funtomic.GameOps.localStorage.alternativeId = com.funtomic.GameOps.alternativeId;
if(result.config != null) com.funtomic.GameOps.localStorage.config = result.config;
com.funtomic.GameOps.gameConfig = com.funtomic.GameOps.localStorage.config;
com.funtomic.GameOps.localStorage.configMd5 = result.config_md5;
com.funtomic.GameOps.localStorage.configForVersion = com.funtomic.GameOps.gameVersion;
com.funtomic.GameOps.localStorage.googlePublicKey = result.google_public_key;
com.funtomic.GameOps.localStorage.appstoreId = result.appstore_id;
com.funtomic.GameOps.writeLocalStorage();
com.funtomic.GameOps.status = com.funtomic.GameOpsStatus.INITIALIZED;
com.funtomic.GameOps.reportUnsentEvents();
}
};
com.funtomic.GameOps.afterInit = function() {
com.funtomic.GameOpsLogger.debug(["Executing " + com.funtomic.GameOps.deferredReportEvents.length + " deferred event report calls"]);
var _g = 0;
var _g1 = com.funtomic.GameOps.deferredReportEvents;
while(_g < _g1.length) {
var repotEventFunc = _g1[_g];
++_g;
repotEventFunc();
}
com.funtomic.GameOps.deferredReportEvents = new Array();
};
com.funtomic.GameOps.getConfig = function() {
return com.funtomic.GameOps.gameConfig;
};
com.funtomic.GameOps.getEventsStaticParams = function(events) {
return { domain : com.funtomic.GameOps.domain, uuid : com.funtomic.GameOps.userID, platform : com.funtomic.GameOps.platform, install_date : com.funtomic.GameOps.localStorage.installDate, original_version : com.funtomic.GameOps.localStorage.originalVersion, partial_data : com.funtomic.GameOps.localStorage.partialData, events : events};
};
com.funtomic.GameOps.reportEvents = function(events) {
if(com.funtomic.GameOps.status != com.funtomic.GameOpsStatus.INITIALIZED) {
com.funtomic.GameOps.queueEvents(events);
return;
}
var data = com.funtomic.GameOps.getEventsStaticParams(events);
var url = com.funtomic.GameOps.apiURLPrefix + com.funtomic.GameOps.apiEventsLocation;
var request = new haxe.Http(url);
request.addParameter("data",JSON.stringify(data));
com.funtomic.GameOpsLogger.verbose(["Posting event to:",url]);
request.onData = com.funtomic.GameOps.eventReportSucceeded;
request.onStatus = function(status) {
com.funtomic.GameOps.onEventReportReturned(status,events);
};
request.onError = com.funtomic.GameOps.IOErrorHandler;
request.request(true);
com.funtomic.GameOps.sessionEnd();
};
com.funtomic.GameOps.onEventReportReturned = function(status,events) {
switch(status) {
case 500:
com.funtomic.GameOps.eventReportFailed();
break;
case 0:
com.funtomic.GameOps.eventReportTimeout(events);
break;
}
};
com.funtomic.GameOps.eventReportTimeout = function(events) {
com.funtomic.GameOpsLogger.error(["Report event timeout"]);
com.funtomic.GameOps.queueEvents(events);
};
com.funtomic.GameOps.eventReportFailed = function() {
com.funtomic.GameOpsLogger.error(["Report event failed"]);
com.funtomic.GameOps.localStorage.unsentEvents = new Array();
com.funtomic.GameOps.writeLocalStorage();
};
com.funtomic.GameOps.eventReportSucceeded = function(data) {
com.funtomic.GameOpsLogger.verbose(["Event Posted " + data]);
com.funtomic.GameOps.reportUnsentEvents();
};
com.funtomic.GameOps.reportEvent = function(eventType,params) {
var _g = com.funtomic.GameOps.status;
switch(_g[1]) {
case 1:
com.funtomic.GameOps.deferredReportEvents.push(function() {
com.funtomic.GameOps.reportEvent(eventType,params);
});
break;
default:
var event = com.funtomic.GameOps.prepareEventObject(eventType,params);
com.funtomic.GameOps.reportEvents([event]);
}
};
com.funtomic.GameOps.prepareEventObject = function(eventType,params) {
var date = DateTools.format(new Date(),"%Y-%m-%d %H:%M:%S");
var tmpDate = Std.string(new Date());
var timezone;
var pos = tmpDate.indexOf("+");
timezone = HxOverrides.substr(tmpDate,pos,5);
date += timezone;
var event = { event_type : eventType, date : date};
if(com.funtomic.GameOps.experimentId != null) event.experiment_id = com.funtomic.GameOps.experimentId;
if(com.funtomic.GameOps.alternativeId != null) event.alternative_id = com.funtomic.GameOps.alternativeId;
event.elapsed_play_time = Math.round(com.funtomic.GameOps.elapsedPlayTimeAtInit + com.funtomic.GameOps.sampleTimer("session") / 1000);
event.session_id = com.funtomic.GameOps.sessionId;
event.game_ops_version = com.funtomic.GameOps.gameOpsVersion;
event.game_version = com.funtomic.GameOps.gameVersion;
if(com.funtomic.GameOps.url != null) event.url = com.funtomic.GameOps.url;
if(com.funtomic.GameOps.firstSession) event.first_session = true;
if(com.funtomic.GameOps.fbId != null) event.fb_id = com.funtomic.GameOps.fbId;
event = com.funtomic.GameOps.extendObject(event,params);
return event;
};
com.funtomic.GameOps.queueEvents = function(events) {
com.funtomic.GameOpsLogger.verbose(["Queuing events:" + JSON.stringify(events)]);
if(com.funtomic.GameOps.localStorage.unsentEvents == null) com.funtomic.GameOps.localStorage.unsentEvents = new Array();
var _g = 0;
while(_g < events.length) {
var event = events[_g];
++_g;
com.funtomic.GameOps.localStorage.unsentEvents.push(event);
}
if(com.funtomic.GameOps.localStorage.unsentEvents.length > com.funtomic.GameOps.MAX_SAVED_UNSENT_EVENTS) {
com.funtomic.GameOps.localStorage.unsentEvents = new Array();
com.funtomic.GameOps.localStorage.partialData = true;
}
com.funtomic.GameOps.writeLocalStorage();
com.funtomic.GameOpsLogger.verbose(["There are now " + Std.string(com.funtomic.GameOps.localStorage.unsentEvents.length) + " unsent events."]);
};
com.funtomic.GameOps.reportUnsentEvents = function() {
if(com.funtomic.GameOps.localStorage.unsentEvents != null && com.funtomic.GameOps.localStorage.unsentEvents.length > 0) {
com.funtomic.GameOpsLogger.verbose(["reporting unsent events",com.funtomic.GameOps.localStorage.unsentEvents.length]);
com.funtomic.GameOps.reportEvents(com.funtomic.GameOps.localStorage.unsentEvents);
com.funtomic.GameOps.localStorage.unsentEvents = new Array();
com.funtomic.GameOps.writeLocalStorage();
}
};
com.funtomic.GameOps.levelStarted = function(levelNumber,extraParams,sceneEntityForFps) {
com.funtomic.GameOps.startTimer("level_" + levelNumber);
if(sceneEntityForFps != null) com.funtomic.GameOpsFpsDetector.start(sceneEntityForFps);
com.funtomic.GameOps.levelsNumbers.push(levelNumber);
if(com.funtomic.GameOps.gameStateGameOpsData.progress == null) com.funtomic.GameOps.gameStateGameOpsData.progress = { };
if(com.funtomic.GameOps.gameStateGameOpsData.progress.top_level == null || com.funtomic.GameOps.gameStateGameOpsData.progress.top_level < levelNumber) {
com.funtomic.GameOps.gameStateGameOpsData.progress.top_level = levelNumber;
com.funtomic.GameOps.writeGameStateLocalStorage();
}
var data = { level : levelNumber};
if(extraParams != null) data = com.funtomic.GameOps.extendObject(extraParams,data);
com.funtomic.GameOps.reportEvent("level_started",data);
};
com.funtomic.GameOps.levelEnded = function(levelNumber,won,extraParams) {
var levelDuration = com.funtomic.GameOps.stopTimer("level_" + levelNumber);
if(levelDuration == -1) {
com.funtomic.GameOpsLogger.error(["levelEnded was called without a matching startLevel!"]);
return;
}
if(won) com.funtomic.GameOps.levelsWon++;
var data = { level : levelNumber, level_duration : Math.round(levelDuration / 1000), won : won == null?"null":"" + won};
var averageFps = com.funtomic.GameOpsFpsDetector.stop();
if(averageFps != -1) data.average_fps = averageFps;
if(com.funtomic.GameOps.movesDuration.length > 0) {
data.moves_duration = com.funtomic.GameOps.movesDuration.join(",");
com.funtomic.GameOps.movesDuration = new Array();
}
if(extraParams != null) data = com.funtomic.GameOps.extendObject(extraParams,data);
com.funtomic.GameOps.reportEvent("level_ended",data);
if(won && levelNumber == com.funtomic.GameOps.lastLevelNumber) com.funtomic.GameOps.reportEvent("game_completion");
};
com.funtomic.GameOps.sessionEnd = function(sendInNextPlay,extraParams) {
if(sendInNextPlay == null) sendInNextPlay = true;
var sessionDuration = com.funtomic.GameOps.sampleTimer("session");
if(sessionDuration == -1) {
com.funtomic.GameOpsLogger.error(["sessionEnd was called without a matching sessionStart!"]);
return;
}
var lnu = new Array();
var _g = 0;
var _g1 = com.funtomic.GameOps.levelsNumbers;
while(_g < _g1.length) {
var lvlNum = _g1[_g];
++_g;
if(HxOverrides.indexOf(lnu,lvlNum,0) == -1) lnu.push(lvlNum);
}
var data = { session_duration : Math.round(sessionDuration / 1000), levels_numbers : lnu.toString(), won_percent : 0, levels_count : com.funtomic.GameOps.levelsNumbers.length, levels_won : com.funtomic.GameOps.levelsWon, sent_by : "application"};
if(extraParams != null) data = com.funtomic.GameOps.extendObject(extraParams,data);
if(data.levels_count > 0) data.won_percent = com.funtomic.GameOps.levelsWon / com.funtomic.GameOps.levelsNumbers.length * 100;
com.funtomic.GameOps.updateTotalElapsedTime(sessionDuration / 1000);
var event = com.funtomic.GameOps.prepareEventObject("session_end",data);
if(sendInNextPlay) {
com.funtomic.GameOpsLogger.verbose(["writing session end event to local storage"]);
com.funtomic.GameOps.storageSet("FuntomicGameOps-SessionEndEvent",event);
} else com.funtomic.GameOps.reportEvents([event]);
};
com.funtomic.GameOps.setLastLevelNumber = function(pLastLevelNumber) {
com.funtomic.GameOps.lastLevelNumber = pLastLevelNumber;
};
com.funtomic.GameOps.updateTotalElapsedTime = function(sessionDuration) {
com.funtomic.GameOps.storageSet("FuntomicGameOps-ElapsedGameTime",com.funtomic.GameOps.elapsedPlayTimeAtInit + sessionDuration);
};
com.funtomic.GameOps.startTimer = function(key) {
com.funtomic.GameOpsLogger.verbose(["Timer '" + key + "' started."]);
Reflect.setField(com.funtomic.GameOps.timers,key,[com.funtomic.GameOps.getTimestamp(),0.0]);
};
com.funtomic.GameOps.sampleTimer = function(key,remove) {
if(remove == null) remove = false;
if(Reflect.field(com.funtomic.GameOps.timers,key) == null) return -1;
var elapsed = Reflect.field(com.funtomic.GameOps.timers,key)[1];
if(remove) Reflect.deleteField(com.funtomic.GameOps.timers,key);
com.funtomic.GameOpsLogger.verbose(["Timer '" + key + "' sampled. Current elapsed time is " + elapsed]);
return elapsed;
};
com.funtomic.GameOps.stopTimer = function(key) {
com.funtomic.GameOpsLogger.verbose(["Timer '" + key + "' stopped"]);
return com.funtomic.GameOps.sampleTimer(key,true);
};
com.funtomic.GameOps.startUpdateTimers = function() {
if(com.funtomic.GameOps.setFlag("UpdateTimers")) {
var updateTimers = new haxe.Timer(5000);
updateTimers.run = function() {
var _g = 0;
var _g1 = Reflect.fields(com.funtomic.GameOps.timers);
while(_g < _g1.length) {
var key = _g1[_g];
++_g;
var toAdd = com.funtomic.GameOps.getTimestamp() - Reflect.field(com.funtomic.GameOps.timers,key)[0];
if(toAdd > 5000) toAdd = 5000;
Reflect.field(com.funtomic.GameOps.timers,key)[1] += toAdd;
}
};
}
};
com.funtomic.GameOps.getTimestamp = function() {
return new Date().getTime();
};
com.funtomic.GameOps.extendObject = function(obj1,obj2) {
var _g = 0;
var _g1 = Reflect.fields(obj2);
while(_g < _g1.length) {
var k = _g1[_g];
++_g;
var value = Reflect.field(obj2,k);
var key;
if(k == null) key = "null"; else key = "" + k;
obj1[key] = value;
}
return obj1;
};
com.funtomic.GameOps.generateRandomString = function(strlen) {
var chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
var num_chars = chars.length - 1;
var randomChar = "";
var _g = 0;
while(_g < strlen) {
var i = _g++;
randomChar += chars.charAt(Math.floor(Math.random() * num_chars));
}
return randomChar;
};
com.funtomic.GameOps.storageSet = function(key,value) {
return flambe.System.storage.set(com.funtomic.GameOps.domain + key,value);
};
com.funtomic.GameOps.storageGet = function(key,defaultValue) {
return flambe.System.storage.get(com.funtomic.GameOps.domain + key,defaultValue);
};
com.funtomic.GameOps.storageRemove = function(key) {
return flambe.System.storage.remove(com.funtomic.GameOps.domain + key);
};
com.funtomic.GameOps.writeLocalStorage = function() {
com.funtomic.GameOps.storageSet("FuntomicGameOps",com.funtomic.GameOps.localStorage);
};
com.funtomic.GameOps.writeGameStateLocalStorage = function() {
com.funtomic.GameOps.storageSet("FuntomicGameOps-GameState",com.funtomic.GameOps.gameStateGameOpsData);
};
com.funtomic.GameOps.readLocalStorage = function() {
com.funtomic.GameOps.localStorage = com.funtomic.GameOps.storageGet("FuntomicGameOps",{ });
};
com.funtomic.GameOps.readGameStateLocalStorage = function() {
com.funtomic.GameOps.gameStateGameOpsData = com.funtomic.GameOps.storageGet("FuntomicGameOps-GameState",{ });
};
com.funtomic.GameOps.setFlag = function(name) {
if(Reflect.field(com.funtomic.GameOps.flags,name) == true) {
com.funtomic.GameOpsLogger.debug([name + " is already running."]);
return false;
} else {
com.funtomic.GameOps.flags[name] = true;
return true;
}
};
com.funtomic.GameOps.unsetFlag = function(name) {
Reflect.deleteField(com.funtomic.GameOps.flags,name);
};
var flambe = {};
flambe.debug = {};
flambe.debug.FpsDisplay = function() {
this._fpsFrames = 0;
this._fpsTime = 0;
};
$hxClasses["flambe.debug.FpsDisplay"] = flambe.debug.FpsDisplay;
flambe.debug.FpsDisplay.__name__ = ["flambe","debug","FpsDisplay"];
flambe.debug.FpsDisplay.prototype = {
reset: function() {
}
,dispose: function() {
}
,onUpdate: function(dt) {
}
,__class__: flambe.debug.FpsDisplay
};
com.funtomic.GameOpsFpsDetector = function() {
flambe.debug.FpsDisplay.call(this);
this._isCounting = false;
};
$hxClasses["com.funtomic.GameOpsFpsDetector"] = com.funtomic.GameOpsFpsDetector;
com.funtomic.GameOpsFpsDetector.__name__ = ["com","funtomic","GameOpsFpsDetector"];
com.funtomic.GameOpsFpsDetector._instance = null;
com.funtomic.GameOpsFpsDetector.start = function(sceneEntity) {
sceneEntity.addChild(new flambe.Entity().add(com.funtomic.GameOpsFpsDetector._instance = new com.funtomic.GameOpsFpsDetector()));
com.funtomic.GameOpsFpsDetector._instance.statrCount();
};
com.funtomic.GameOpsFpsDetector.stop = function() {
if(com.funtomic.GameOpsFpsDetector._instance == null) return -1;
return com.funtomic.GameOpsFpsDetector._instance.stopCount();
};
com.funtomic.GameOpsFpsDetector.__super__ = flambe.debug.FpsDisplay;
com.funtomic.GameOpsFpsDetector.prototype = $extend(flambe.debug.FpsDisplay.prototype,{
onUpdate: function(dt) {
if(!this._isCounting) return;
++this._fpsFrames;
this._fpsTime += dt;
if(this._fpsTime > 1) {
this._fpsResults.push(this._fpsFrames / this._fpsTime);
this.reset();
}
}
,statrCount: function() {
this.reset();
this._fpsResults = new Array();
this._isCounting = true;
}
,stopCount: function() {
if(!this._isCounting || this._fpsResults.length == 0) return -1;
this._isCounting = false;
var sum = 0;
var _g = 0;
var _g1 = this._fpsResults;
while(_g < _g1.length) {
var fps = _g1[_g];
++_g;
sum += fps;
}
com.funtomic.GameOpsFpsDetector._instance.dispose();
return (sum / this._fpsResults.length * 100 | 0) / 100;
}
,__class__: com.funtomic.GameOpsFpsDetector
});
com.funtomic.GameOpsLogger = function() { };
$hxClasses["com.funtomic.GameOpsLogger"] = com.funtomic.GameOpsLogger;
com.funtomic.GameOpsLogger.__name__ = ["com","funtomic","GameOpsLogger"];
com.funtomic.GameOpsLogger.verbose = function(params) {
com.funtomic.GameOpsLogger.log(2,params.join(" "));
};
com.funtomic.GameOpsLogger.debug = function(params) {
com.funtomic.GameOpsLogger.log(1,params.join(" "));
};
com.funtomic.GameOpsLogger.error = function(params) {
com.funtomic.GameOpsLogger.log(0,"ERROR - " + params.join(" "));
null;
};
com.funtomic.GameOpsLogger.log = function(logLevel,message) {
if(logLevel <= com.funtomic.GameOpsLogger.logLevel) {
var now = new Date();
var datetimeString = now.getDay() + "." + now.getMonth() + "." + now.getFullYear() + " " + now.getHours() + ":" + now.getMinutes() + ":" + now.getSeconds();
null;
}
};
com.funtomic.KiziWidget = function() { };
$hxClasses["com.funtomic.KiziWidget"] = com.funtomic.KiziWidget;
com.funtomic.KiziWidget.__name__ = ["com","funtomic","KiziWidget"];
com.funtomic.KiziWidget.levelStarted = function() {
try {
HTML5API_levelStarted();
} catch( e ) {
}
};
com.funtomic.KiziWidget.levelEnded = function() {
try {
HTML5API_levelEnded();
} catch( e ) {
}
};
com.funtomic.KiziWidget.preloaderStarted = function() {
try {
HTML5API_preloaderStarted();
} catch( e ) {
}
};
com.funtomic.KiziWidget.preloaderEnded = function() {
try {
HTML5API_preloaderEnded();
} catch( e ) {
}
};
com.funtomic.KiziWidget.getUserId = function() {
try {
return HTML5API_getUserId();
} catch( e ) {
}
return null;
};
com.funtomic.KiziWidget.isAdPlaying = function() {
try {
return HTML5API_isAdPlaying();
} catch( e ) {
}
return false;
};
com.funtomic.KiziWidget.onAdStart = function(func) {
try {
HTML5API_onAdStart(func);
} catch( e ) {
}
};
com.funtomic.KiziWidget.onAdComplete = function(func) {
try {
HTML5API_onAdComplete(func);
} catch( e ) {
}
};
com.funtomic.KiziWidget.showMidroll = function() {
try {
return HTML5API_showMidroll();
} catch( e ) {
}
return false;
};
com.funtomic.KiziWidget.setWidgetState = function(params) {
try {
HTML5API_setWidgetState(params);
} catch( e ) {
}
};
flambe.Disposer = function() { };
$hxClasses["flambe.Disposer"] = flambe.Disposer;
flambe.Disposer.__name__ = ["flambe","Disposer"];
flambe.Entity = function() {
};
$hxClasses["flambe.Entity"] = flambe.Entity;
flambe.Entity.__name__ = ["flambe","Entity"];
flambe.Entity.prototype = {
addChild: function(something) {
return null;
}
,add: function(something) {
return null;
}
,__class__: flambe.Entity
};
flambe.External = function() {
};
$hxClasses["flambe.External"] = flambe.External;
flambe.External.__name__ = ["flambe","External"];
flambe.External.prototype = {
call: function(name,params) {
if(params == null) params = [];
var object = window;
var method = object;
var _g = 0;
var _g1 = name.split(".");
while(_g < _g1.length) {
var fieldName = _g1[_g];
++_g;
object = method;
method = Reflect.field(object,fieldName);
}
return method.apply(object,params);
}
,__class__: flambe.External
};
flambe.Storage = function() {
};
$hxClasses["flambe.Storage"] = flambe.Storage;
flambe.Storage.__name__ = ["flambe","Storage"];
flambe.Storage._adapter = null;
flambe.Storage._domain = null;
flambe.Storage.setStorageAdapter = function(domain,adapter) {
flambe.Storage._domain = domain;
flambe.Storage._adapter = adapter;
};
flambe.Storage.prototype = {
get: function(key,defaultValue) {
if(key.indexOf(flambe.Storage._domain) == 0) key = HxOverrides.substr(key,flambe.Storage._domain.length,null);
if(flambe.Storage._adapter.getValue(key) == null) {
flambe.Storage._adapter.setValue(key,defaultValue);
return defaultValue;
}
return flambe.Storage._adapter.getValue(key);
}
,set: function(key,value) {
if(key.indexOf(flambe.Storage._domain) == 0) key = HxOverrides.substr(key,flambe.Storage._domain.length,null);
flambe.Storage._adapter.setValue(key,value);
return true;
}
,remove: function(key) {
flambe.Storage._adapter.removeValue(key);
}
,__class__: flambe.Storage
};
flambe.System = function() { };
$hxClasses["flambe.System"] = flambe.System;
flambe.System.__name__ = ["flambe","System"];
haxe.StackItem = $hxClasses["haxe.StackItem"] = { __ename__ : ["haxe","StackItem"], __constructs__ : ["CFunction","Module","FilePos","Method","LocalFunction"] };
haxe.StackItem.CFunction = ["CFunction",0];
haxe.StackItem.CFunction.toString = $estr;
haxe.StackItem.CFunction.__enum__ = haxe.StackItem;
haxe.StackItem.Module = function(m) { var $x = ["Module",1,m]; $x.__enum__ = haxe.StackItem; $x.toString = $estr; return $x; };
haxe.StackItem.FilePos = function(s,file,line) { var $x = ["FilePos",2,s,file,line]; $x.__enum__ = haxe.StackItem; $x.toString = $estr; return $x; };
haxe.StackItem.Method = function(classname,method) { var $x = ["Method",3,classname,method]; $x.__enum__ = haxe.StackItem; $x.toString = $estr; return $x; };
haxe.StackItem.LocalFunction = function(v) { var $x = ["LocalFunction",4,v]; $x.__enum__ = haxe.StackItem; $x.toString = $estr; return $x; };
haxe.CallStack = function() { };
$hxClasses["haxe.CallStack"] = haxe.CallStack;
haxe.CallStack.__name__ = ["haxe","CallStack"];
haxe.CallStack.callStack = function() {
var oldValue = Error.prepareStackTrace;
Error.prepareStackTrace = function(error,callsites) {
var stack = [];
var _g = 0;
while(_g < callsites.length) {
var site = callsites[_g];
++_g;
var method = null;
var fullName = site.getFunctionName();
if(fullName != null) {
var idx = fullName.lastIndexOf(".");
if(idx >= 0) {
var className = HxOverrides.substr(fullName,0,idx);
var methodName = HxOverrides.substr(fullName,idx + 1,null);
method = haxe.StackItem.Method(className,methodName);
}
}
stack.push(haxe.StackItem.FilePos(method,site.getFileName(),site.getLineNumber()));
}
return stack;
};
var a = haxe.CallStack.makeStack(new Error().stack);
a.shift();
Error.prepareStackTrace = oldValue;
return a;
};
haxe.CallStack.exceptionStack = function() {
return [];
};
haxe.CallStack.toString = function(stack) {
var b = new StringBuf();
var _g = 0;
while(_g < stack.length) {
var s = stack[_g];
++_g;
b.b += "\nCalled from ";
haxe.CallStack.itemToString(b,s);
}
return b.b;
};
haxe.CallStack.itemToString = function(b,s) {
switch(s[1]) {
case 0:
b.b += "a C function";
break;
case 1:
var m = s[2];
b.b += "module ";
if(m == null) b.b += "null"; else b.b += "" + m;
break;
case 2:
var line = s[4];
var file = s[3];
var s1 = s[2];
if(s1 != null) {
haxe.CallStack.itemToString(b,s1);
b.b += " (";
}
if(file == null) b.b += "null"; else b.b += "" + file;
b.b += " line ";
if(line == null) b.b += "null"; else b.b += "" + line;
if(s1 != null) b.b += ")";
break;
case 3:
var meth = s[3];
var cname = s[2];
if(cname == null) b.b += "null"; else b.b += "" + cname;
b.b += ".";
if(meth == null) b.b += "null"; else b.b += "" + meth;
break;
case 4:
var n = s[2];
b.b += "local function #";
if(n == null) b.b += "null"; else b.b += "" + n;
break;
}
};
haxe.CallStack.makeStack = function(s) {
if(typeof(s) == "string") {
var stack = s.split("\n");
var m = [];
var _g = 0;
while(_g < stack.length) {
var line = stack[_g];
++_g;
m.push(haxe.StackItem.Module(line));
}
return m;
} else return s;
};
haxe.Http = function(url) {
this.url = url;
this.headers = new List();
this.params = new List();
this.async = true;
};
$hxClasses["haxe.Http"] = haxe.Http;
haxe.Http.__name__ = ["haxe","Http"];
haxe.Http.prototype = {
setParameter: function(param,value) {
this.params = Lambda.filter(this.params,function(p) {
return p.param != param;
});
this.params.push({ param : param, value : value});
return this;
}
,addParameter: function(param,value) {
this.params.push({ param : param, value : value});
return this;
}
,request: function(post) {
var me = this;
me.responseData = null;
var r = this.req = js.Browser.createXMLHttpRequest();
var onreadystatechange = function(_) {
if(r.readyState != 4) return;
var s;
try {
s = r.status;
} catch( e ) {
s = null;
}
if(s == undefined) s = null;
if(s != null) me.onStatus(s);
if(s != null && s >= 200 && s < 400) {
me.req = null;
me.onData(me.responseData = r.responseText);
} else if(s == null) {
me.req = null;
me.onError("Failed to connect or resolve host");
} else switch(s) {
case 12029:
me.req = null;
me.onError("Failed to connect to host");
break;
case 12007:
me.req = null;
me.onError("Unknown host");
break;
default:
me.req = null;
me.responseData = r.responseText;
me.onError("Http Error #" + r.status);
}
};
if(this.async) r.onreadystatechange = onreadystatechange;
var uri = this.postData;
if(uri != null) post = true; else {
var $it0 = this.params.iterator();
while( $it0.hasNext() ) {
var p = $it0.next();
if(uri == null) uri = ""; else uri += "&";
uri += encodeURIComponent(p.param) + "=" + encodeURIComponent(p.value);
}
}
try {
if(post) r.open("POST",this.url,this.async); else if(uri != null) {
var question = this.url.split("?").length <= 1;
r.open("GET",this.url + (question?"?":"&") + uri,this.async);
uri = null;
} else r.open("GET",this.url,this.async);
} catch( e1 ) {
me.req = null;
this.onError(e1.toString());
return;
}
if(!Lambda.exists(this.headers,function(h) {
return h.header == "Content-Type";
}) && post && this.postData == null) r.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
var $it1 = this.headers.iterator();
while( $it1.hasNext() ) {
var h1 = $it1.next();
r.setRequestHeader(h1.header,h1.value);
}
r.send(uri);
if(!this.async) onreadystatechange(null);
}
,onData: function(data) {
}
,onError: function(msg) {
}
,onStatus: function(status) {
}
,__class__: haxe.Http
};
haxe.Log = function() { };
$hxClasses["haxe.Log"] = haxe.Log;
haxe.Log.__name__ = ["haxe","Log"];
haxe.Log.trace = function(v,infos) {
js.Boot.__trace(v,infos);
};
haxe.Resource = function() { };
$hxClasses["haxe.Resource"] = haxe.Resource;
haxe.Resource.__name__ = ["haxe","Resource"];
haxe.Resource.content = null;
haxe.Resource.getString = function(name) {
var _g = 0;
var _g1 = haxe.Resource.content;
while(_g < _g1.length) {
var x = _g1[_g];
++_g;
if(x.name == name) {
if(x.str != null) return x.str;
var b = haxe.crypto.Base64.decode(x.data);
return b.toString();
}
}
return null;
};
haxe.Resource.getBytes = function(name) {
var _g = 0;
var _g1 = haxe.Resource.content;
while(_g < _g1.length) {
var x = _g1[_g];
++_g;
if(x.name == name) {
if(x.str != null) return haxe.io.Bytes.ofString(x.str);
return haxe.crypto.Base64.decode(x.data);
}
}
return null;
};
haxe.Serializer = function() {
this.buf = new StringBuf();
this.cache = new Array();
this.useCache = haxe.Serializer.USE_CACHE;
this.useEnumIndex = haxe.Serializer.USE_ENUM_INDEX;
this.shash = new haxe.ds.StringMap();
this.scount = 0;
};
$hxClasses["haxe.Serializer"] = haxe.Serializer;
haxe.Serializer.__name__ = ["haxe","Serializer"];
haxe.Serializer.run = function(v) {
var s = new haxe.Serializer();
s.serialize(v);
return s.toString();
};
haxe.Serializer.prototype = {
toString: function() {
return this.buf.b;
}
,serializeString: function(s) {
var x = this.shash.get(s);
if(x != null) {
this.buf.b += "R";
if(x == null) this.buf.b += "null"; else this.buf.b += "" + x;
return;
}
this.shash.set(s,this.scount++);
this.buf.b += "y";
s = encodeURIComponent(s);
if(s.length == null) this.buf.b += "null"; else this.buf.b += "" + s.length;
this.buf.b += ":";
if(s == null) this.buf.b += "null"; else this.buf.b += "" + s;
}
,serializeRef: function(v) {
var vt = typeof(v);
var _g1 = 0;
var _g = this.cache.length;
while(_g1 < _g) {
var i = _g1++;
var ci = this.cache[i];
if(typeof(ci) == vt && ci == v) {
this.buf.b += "r";
if(i == null) this.buf.b += "null"; else this.buf.b += "" + i;
return true;
}
}
this.cache.push(v);
return false;
}
,serializeFields: function(v) {
var _g = 0;
var _g1 = Reflect.fields(v);
while(_g < _g1.length) {
var f = _g1[_g];
++_g;
this.serializeString(f);
this.serialize(Reflect.field(v,f));
}
this.buf.b += "g";
}
,serialize: function(v) {
{
var _g = Type["typeof"](v);
switch(_g[1]) {
case 0:
this.buf.b += "n";
break;
case 1:
var v1 = v;
if(v1 == 0) {
this.buf.b += "z";
return;
}
this.buf.b += "i";
if(v1 == null) this.buf.b += "null"; else this.buf.b += "" + v1;
break;
case 2:
var v2 = v;
if(Math.isNaN(v2)) this.buf.b += "k"; else if(!Math.isFinite(v2)) if(v2 < 0) this.buf.b += "m"; else this.buf.b += "p"; else {
this.buf.b += "d";
if(v2 == null) this.buf.b += "null"; else this.buf.b += "" + v2;
}
break;
case 3:
if(v) this.buf.b += "t"; else this.buf.b += "f";
break;
case 6:
var c = _g[2];
if(c == String) {
this.serializeString(v);
return;
}
if(this.useCache && this.serializeRef(v)) return;
switch(c) {
case Array:
var ucount = 0;
this.buf.b += "a";
var l = v.length;
var _g1 = 0;
while(_g1 < l) {
var i = _g1++;
if(v[i] == null) ucount++; else {
if(ucount > 0) {
if(ucount == 1) this.buf.b += "n"; else {
this.buf.b += "u";
if(ucount == null) this.buf.b += "null"; else this.buf.b += "" + ucount;
}
ucount = 0;
}
this.serialize(v[i]);
}
}
if(ucount > 0) {
if(ucount == 1) this.buf.b += "n"; else {
this.buf.b += "u";
if(ucount == null) this.buf.b += "null"; else this.buf.b += "" + ucount;
}
}
this.buf.b += "h";
break;
case List:
this.buf.b += "l";
var v3 = v;
var $it0 = v3.iterator();
while( $it0.hasNext() ) {
var i1 = $it0.next();
this.serialize(i1);
}
this.buf.b += "h";
break;
case Date:
var d = v;
this.buf.b += "v";
this.buf.add(HxOverrides.dateStr(d));
break;
case haxe.ds.StringMap:
this.buf.b += "b";
var v4 = v;
var $it1 = v4.keys();
while( $it1.hasNext() ) {
var k = $it1.next();
this.serializeString(k);
this.serialize(v4.get(k));
}
this.buf.b += "h";
break;
case haxe.ds.IntMap:
this.buf.b += "q";
var v5 = v;
var $it2 = v5.keys();
while( $it2.hasNext() ) {
var k1 = $it2.next();
this.buf.b += ":";
if(k1 == null) this.buf.b += "null"; else this.buf.b += "" + k1;
this.serialize(v5.get(k1));
}
this.buf.b += "h";
break;
case haxe.ds.ObjectMap:
this.buf.b += "M";
var v6 = v;
var $it3 = v6.keys();
while( $it3.hasNext() ) {
var k2 = $it3.next();
var id = Reflect.field(k2,"__id__");
Reflect.deleteField(k2,"__id__");
this.serialize(k2);
k2.__id__ = id;
this.serialize(v6.h[k2.__id__]);
}
this.buf.b += "h";
break;
case haxe.io.Bytes:
var v7 = v;
var i2 = 0;
var max = v7.length - 2;
var charsBuf = new StringBuf();
var b64 = haxe.Serializer.BASE64;
while(i2 < max) {
var b1 = v7.get(i2++);
var b2 = v7.get(i2++);
var b3 = v7.get(i2++);
charsBuf.add(b64.charAt(b1 >> 2));
charsBuf.add(b64.charAt((b1 << 4 | b2 >> 4) & 63));
charsBuf.add(b64.charAt((b2 << 2 | b3 >> 6) & 63));
charsBuf.add(b64.charAt(b3 & 63));
}
if(i2 == max) {
var b11 = v7.get(i2++);
var b21 = v7.get(i2++);
charsBuf.add(b64.charAt(b11 >> 2));
charsBuf.add(b64.charAt((b11 << 4 | b21 >> 4) & 63));
charsBuf.add(b64.charAt(b21 << 2 & 63));
} else if(i2 == max + 1) {
var b12 = v7.get(i2++);
charsBuf.add(b64.charAt(b12 >> 2));
charsBuf.add(b64.charAt(b12 << 4 & 63));
}
var chars = charsBuf.b;
this.buf.b += "s";
if(chars.length == null) this.buf.b += "null"; else this.buf.b += "" + chars.length;
this.buf.b += ":";
if(chars == null) this.buf.b += "null"; else this.buf.b += "" + chars;
break;
default:
if(this.useCache) this.cache.pop();
if(v.hxSerialize != null) {
this.buf.b += "C";
this.serializeString(Type.getClassName(c));
if(this.useCache) this.cache.push(v);
v.hxSerialize(this);
this.buf.b += "g";
} else {
this.buf.b += "c";
this.serializeString(Type.getClassName(c));
if(this.useCache) this.cache.push(v);
this.serializeFields(v);
}
}
break;
case 4:
if(this.useCache && this.serializeRef(v)) return;
this.buf.b += "o";
this.serializeFields(v);
break;
case 7:
var e = _g[2];
if(this.useCache) {
if(this.serializeRef(v)) return;
this.cache.pop();
}
if(this.useEnumIndex) this.buf.b += "j"; else this.buf.b += "w";
this.serializeString(Type.getEnumName(e));
if(this.useEnumIndex) {
this.buf.b += ":";
this.buf.b += Std.string(v[1]);
} else this.serializeString(v[0]);
this.buf.b += ":";
var l1 = v.length;
this.buf.b += Std.string(l1 - 2);
var _g11 = 2;
while(_g11 < l1) {
var i3 = _g11++;
this.serialize(v[i3]);
}
if(this.useCache) this.cache.push(v);
break;
case 5:
throw "Cannot serialize function";
break;
default:
throw "Cannot serialize " + Std.string(v);
}
}
}
,__class__: haxe.Serializer
};
haxe.Unserializer = function(buf) {
this.buf = buf;
this.length = buf.length;
this.pos = 0;
this.scache = new Array();
this.cache = new Array();
var r = haxe.Unserializer.DEFAULT_RESOLVER;
if(r == null) {
r = Type;
haxe.Unserializer.DEFAULT_RESOLVER = r;
}
this.setResolver(r);
};
$hxClasses["haxe.Unserializer"] = haxe.Unserializer;
haxe.Unserializer.__name__ = ["haxe","Unserializer"];
haxe.Unserializer.initCodes = function() {
var codes = new Array();
var _g1 = 0;
var _g = haxe.Unserializer.BASE64.length;
while(_g1 < _g) {
var i = _g1++;
codes[haxe.Unserializer.BASE64.charCodeAt(i)] = i;
}
return codes;
};
haxe.Unserializer.prototype = {
setResolver: function(r) {
if(r == null) this.resolver = { resolveClass : function(_) {
return null;
}, resolveEnum : function(_1) {
return null;
}}; else this.resolver = r;
}
,get: function(p) {
return this.buf.charCodeAt(p);
}
,readDigits: function() {
var k = 0;
var s = false;
var fpos = this.pos;
while(true) {
var c = this.buf.charCodeAt(this.pos);
if(c != c) break;
if(c == 45) {
if(this.pos != fpos) break;
s = true;
this.pos++;
continue;
}
if(c < 48 || c > 57) break;
k = k * 10 + (c - 48);
this.pos++;
}
if(s) k *= -1;
return k;
}
,unserializeObject: function(o) {
while(true) {
if(this.pos >= this.length) throw "Invalid object";
if(this.buf.charCodeAt(this.pos) == 103) break;
var k = this.unserialize();
if(!(typeof(k) == "string")) throw "Invalid object key";
var v = this.unserialize();
o[k] = v;
}
this.pos++;
}
,unserializeEnum: function(edecl,tag) {
if(this.get(this.pos++) != 58) throw "Invalid enum format";
var nargs = this.readDigits();
if(nargs == 0) return Type.createEnum(edecl,tag);
var args = new Array();
while(nargs-- > 0) args.push(this.unserialize());
return Type.createEnum(edecl,tag,args);
}
,unserialize: function() {
var _g = this.get(this.pos++);
switch(_g) {
case 110:
return null;
case 116:
return true;
case 102:
return false;
case 122:
return 0;
case 105:
return this.readDigits();
case 100:
var p1 = this.pos;
while(true) {
var c = this.buf.charCodeAt(this.pos);
if(c >= 43 && c < 58 || c == 101 || c == 69) this.pos++; else break;
}
return Std.parseFloat(HxOverrides.substr(this.buf,p1,this.pos - p1));
case 121:
var len = this.readDigits();
if(this.get(this.pos++) != 58 || this.length - this.pos < len) throw "Invalid string length";
var s = HxOverrides.substr(this.buf,this.pos,len);
this.pos += len;
s = decodeURIComponent(s.split("+").join(" "));
this.scache.push(s);
return s;
case 107:
return Math.NaN;
case 109:
return Math.NEGATIVE_INFINITY;
case 112:
return Math.POSITIVE_INFINITY;
case 97:
var buf = this.buf;
var a = new Array();
this.cache.push(a);
while(true) {
var c1 = this.buf.charCodeAt(this.pos);
if(c1 == 104) {
this.pos++;
break;
}
if(c1 == 117) {
this.pos++;
var n = this.readDigits();
a[a.length + n - 1] = null;
} else a.push(this.unserialize());
}
return a;
case 111:
var o = { };
this.cache.push(o);
this.unserializeObject(o);
return o;
case 114:
var n1 = this.readDigits();
if(n1 < 0 || n1 >= this.cache.length) throw "Invalid reference";
return this.cache[n1];
case 82:
var n2 = this.readDigits();
if(n2 < 0 || n2 >= this.scache.length) throw "Invalid string reference";
return this.scache[n2];
case 120:
throw this.unserialize();
break;
case 99:
var name = this.unserialize();
var cl = this.resolver.resolveClass(name);
if(cl == null) throw "Class not found " + name;
var o1 = Type.createEmptyInstance(cl);
this.cache.push(o1);
this.unserializeObject(o1);
return o1;
case 119:
var name1 = this.unserialize();
var edecl = this.resolver.resolveEnum(name1);
if(edecl == null) throw "Enum not found " + name1;
var e = this.unserializeEnum(edecl,this.unserialize());
this.cache.push(e);
return e;
case 106:
var name2 = this.unserialize();
var edecl1 = this.resolver.resolveEnum(name2);
if(edecl1 == null) throw "Enum not found " + name2;
this.pos++;
var index = this.readDigits();
var tag = Type.getEnumConstructs(edecl1)[index];
if(tag == null) throw "Unknown enum index " + name2 + "@" + index;
var e1 = this.unserializeEnum(edecl1,tag);
this.cache.push(e1);
return e1;
case 108:
var l = new List();
this.cache.push(l);
var buf1 = this.buf;
while(this.buf.charCodeAt(this.pos) != 104) l.add(this.unserialize());
this.pos++;
return l;
case 98:
var h = new haxe.ds.StringMap();
this.cache.push(h);
var buf2 = this.buf;
while(this.buf.charCodeAt(this.pos) != 104) {
var s1 = this.unserialize();
h.set(s1,this.unserialize());
}
this.pos++;
return h;
case 113:
var h1 = new haxe.ds.IntMap();
this.cache.push(h1);
var buf3 = this.buf;
var c2 = this.get(this.pos++);
while(c2 == 58) {
var i = this.readDigits();
h1.set(i,this.unserialize());
c2 = this.get(this.pos++);
}
if(c2 != 104) throw "Invalid IntMap format";
return h1;
case 77:
var h2 = new haxe.ds.ObjectMap();
this.cache.push(h2);
var buf4 = this.buf;
while(this.buf.charCodeAt(this.pos) != 104) {
var s2 = this.unserialize();
h2.set(s2,this.unserialize());
}
this.pos++;
return h2;
case 118:
var d;
var s3 = HxOverrides.substr(this.buf,this.pos,19);
d = HxOverrides.strDate(s3);
this.cache.push(d);
this.pos += 19;
return d;
case 115:
var len1 = this.readDigits();
var buf5 = this.buf;
if(this.get(this.pos++) != 58 || this.length - this.pos < len1) throw "Invalid bytes length";
var codes = haxe.Unserializer.CODES;
if(codes == null) {
codes = haxe.Unserializer.initCodes();
haxe.Unserializer.CODES = codes;
}
var i1 = this.pos;
var rest = len1 & 3;
var size;
size = (len1 >> 2) * 3 + (rest >= 2?rest - 1:0);
var max = i1 + (len1 - rest);
var bytes = haxe.io.Bytes.alloc(size);
var bpos = 0;
while(i1 < max) {
var c11 = codes[StringTools.fastCodeAt(buf5,i1++)];
var c21 = codes[StringTools.fastCodeAt(buf5,i1++)];
bytes.set(bpos++,c11 << 2 | c21 >> 4);
var c3 = codes[StringTools.fastCodeAt(buf5,i1++)];
bytes.set(bpos++,c21 << 4 | c3 >> 2);
var c4 = codes[StringTools.fastCodeAt(buf5,i1++)];
bytes.set(bpos++,c3 << 6 | c4);
}
if(rest >= 2) {
var c12 = codes[StringTools.fastCodeAt(buf5,i1++)];
var c22 = codes[StringTools.fastCodeAt(buf5,i1++)];
bytes.set(bpos++,c12 << 2 | c22 >> 4);
if(rest == 3) {
var c31 = codes[StringTools.fastCodeAt(buf5,i1++)];
bytes.set(bpos++,c22 << 4 | c31 >> 2);
}
}
this.pos += len1;
this.cache.push(bytes);
return bytes;
case 67:
var name3 = this.unserialize();
var cl1 = this.resolver.resolveClass(name3);
if(cl1 == null) throw "Class not found " + name3;
var o2 = Type.createEmptyInstance(cl1);
this.cache.push(o2);
o2.hxUnserialize(this);
if(this.get(this.pos++) != 103) throw "Invalid custom data";
return o2;
default:
}
this.pos--;
throw "Invalid char " + this.buf.charAt(this.pos) + " at position " + this.pos;
}
,__class__: haxe.Unserializer
};
haxe.io = {};
haxe.io.Bytes = function(length,b) {
this.length = length;
this.b = b;
};
$hxClasses["haxe.io.Bytes"] = haxe.io.Bytes;
haxe.io.Bytes.__name__ = ["haxe","io","Bytes"];
haxe.io.Bytes.alloc = function(length) {
var a = new Array();
var _g = 0;
while(_g < length) {
var i = _g++;
a.push(0);
}
return new haxe.io.Bytes(length,a);
};
haxe.io.Bytes.ofString = function(s) {
var a = new Array();
var i = 0;
while(i < s.length) {
var c = StringTools.fastCodeAt(s,i++);
if(55296 <= c && c <= 56319) c = c - 55232 << 10 | StringTools.fastCodeAt(s,i++) & 1023;
if(c <= 127) a.push(c); else if(c <= 2047) {
a.push(192 | c >> 6);
a.push(128 | c & 63);
} else if(c <= 65535) {
a.push(224 | c >> 12);
a.push(128 | c >> 6 & 63);
a.push(128 | c & 63);
} else {
a.push(240 | c >> 18);
a.push(128 | c >> 12 & 63);
a.push(128 | c >> 6 & 63);
a.push(128 | c & 63);
}
}
return new haxe.io.Bytes(a.length,a);
};
haxe.io.Bytes.ofData = function(b) {
return new haxe.io.Bytes(b.length,b);
};
haxe.io.Bytes.prototype = {
get: function(pos) {
return this.b[pos];
}
,set: function(pos,v) {
this.b[pos] = v & 255;
}
,getString: function(pos,len) {
if(pos < 0 || len < 0 || pos + len > this.length) throw haxe.io.Error.OutsideBounds;
var s = "";
var b = this.b;
var fcc = String.fromCharCode;
var i = pos;
var max = pos + len;
while(i < max) {
var c = b[i++];
if(c < 128) {
if(c == 0) break;
s += fcc(c);
} else if(c < 224) s += fcc((c & 63) << 6 | b[i++] & 127); else if(c < 240) {
var c2 = b[i++];
s += fcc((c & 31) << 12 | (c2 & 127) << 6 | b[i++] & 127);
} else {
var c21 = b[i++];
var c3 = b[i++];
var u = (c & 15) << 18 | (c21 & 127) << 12 | (c3 & 127) << 6 | b[i++] & 127;
s += fcc((u >> 10) + 55232);
s += fcc(u & 1023 | 56320);
}
}
return s;
}
,toString: function() {
return this.getString(0,this.length);
}
,__class__: haxe.io.Bytes
};
haxe.crypto = {};
haxe.crypto.Base64 = function() { };
$hxClasses["haxe.crypto.Base64"] = haxe.crypto.Base64;
haxe.crypto.Base64.__name__ = ["haxe","crypto","Base64"];
haxe.crypto.Base64.decode = function(str,complement) {
if(complement == null) complement = true;
if(complement) while(HxOverrides.cca(str,str.length - 1) == 61) str = HxOverrides.substr(str,0,-1);
return new haxe.crypto.BaseCode(haxe.crypto.Base64.BYTES).decodeBytes(haxe.io.Bytes.ofString(str));
};
haxe.crypto.BaseCode = function(base) {
var len = base.length;
var nbits = 1;
while(len > 1 << nbits) nbits++;
if(nbits > 8 || len != 1 << nbits) throw "BaseCode : base length must be a power of two.";
this.base = base;
this.nbits = nbits;
};
$hxClasses["haxe.crypto.BaseCode"] = haxe.crypto.BaseCode;
haxe.crypto.BaseCode.__name__ = ["haxe","crypto","BaseCode"];
haxe.crypto.BaseCode.prototype = {
encodeBytes: function(b) {
var nbits = this.nbits;
var base = this.base;
var size = b.length * 8 / nbits | 0;
var out = haxe.io.Bytes.alloc(size + (b.length * 8 % nbits == 0?0:1));
var buf = 0;
var curbits = 0;
var mask = (1 << nbits) - 1;
var pin = 0;
var pout = 0;
while(pout < size) {
while(curbits < nbits) {
curbits += 8;
buf <<= 8;
buf |= b.get(pin++);
}
curbits -= nbits;
out.set(pout++,base.b[buf >> curbits & mask]);
}
if(curbits > 0) out.set(pout++,base.b[buf << nbits - curbits & mask]);
return out;
}
,initTable: function() {
var tbl = new Array();
var _g = 0;
while(_g < 256) {
var i = _g++;
tbl[i] = -1;
}
var _g1 = 0;
var _g2 = this.base.length;
while(_g1 < _g2) {
var i1 = _g1++;
tbl[this.base.b[i1]] = i1;
}
this.tbl = tbl;
}
,decodeBytes: function(b) {
var nbits = this.nbits;
var base = this.base;
if(this.tbl == null) this.initTable();
var tbl = this.tbl;
var size = b.length * nbits >> 3;
var out = haxe.io.Bytes.alloc(size);
var buf = 0;
var curbits = 0;
var pin = 0;
var pout = 0;
while(pout < size) {
while(curbits < 8) {
curbits += nbits;
buf <<= nbits;
var i = tbl[b.get(pin++)];
if(i == -1) throw "BaseCode : invalid encoded char";
buf |= i;
}
curbits -= 8;
out.set(pout++,buf >> curbits & 255);
}
return out;
}
,__class__: haxe.crypto.BaseCode
};
haxe.crypto.Sha1 = function() {
};
$hxClasses["haxe.crypto.Sha1"] = haxe.crypto.Sha1;
haxe.crypto.Sha1.__name__ = ["haxe","crypto","Sha1"];
haxe.crypto.Sha1.encode = function(s) {
var sh = new haxe.crypto.Sha1();
var h = sh.doEncode(haxe.crypto.Sha1.str2blks(s));
return sh.hex(h);
};
haxe.crypto.Sha1.str2blks = function(s) {
var nblk = (s.length + 8 >> 6) + 1;
var blks = new Array();
var _g1 = 0;
var _g = nblk * 16;
while(_g1 < _g) {
var i = _g1++;
blks[i] = 0;
}
var _g11 = 0;
var _g2 = s.length;
while(_g11 < _g2) {
var i1 = _g11++;
var p = i1 >> 2;
blks[p] |= HxOverrides.cca(s,i1) << 24 - ((i1 & 3) << 3);
}
var i2 = s.length;
var p1 = i2 >> 2;
blks[p1] |= 128 << 24 - ((i2 & 3) << 3);
blks[nblk * 16 - 1] = s.length * 8;
return blks;
};
haxe.crypto.Sha1.prototype = {
doEncode: function(x) {
var w = new Array();
var a = 1732584193;
var b = -271733879;
var c = -1732584194;
var d = 271733878;
var e = -1009589776;
var i = 0;
while(i < x.length) {
var olda = a;
var oldb = b;
var oldc = c;
var oldd = d;
var olde = e;
var j = 0;
while(j < 80) {
if(j < 16) w[j] = x[i + j]; else w[j] = this.rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16],1);
var t = (a << 5 | a >>> 27) + this.ft(j,b,c,d) + e + w[j] + this.kt(j);
e = d;
d = c;
c = b << 30 | b >>> 2;
b = a;
a = t;
j++;
}
a += olda;
b += oldb;
c += oldc;
d += oldd;
e += olde;
i += 16;
}
return [a,b,c,d,e];
}
,rol: function(num,cnt) {
return num << cnt | num >>> 32 - cnt;
}
,ft: function(t,b,c,d) {
if(t < 20) return b & c | ~b & d;
if(t < 40) return b ^ c ^ d;
if(t < 60) return b & c | b & d | c & d;
return b ^ c ^ d;
}
,kt: function(t) {
if(t < 20) return 1518500249;
if(t < 40) return 1859775393;
if(t < 60) return -1894007588;
return -899497514;
}
,hex: function(a) {
var str = "";
var hex_chr = "0123456789abcdef";
var _g = 0;
while(_g < a.length) {
var num = a[_g];
++_g;
var j = 7;
while(j >= 0) {
str += hex_chr.charAt(num >>> (j << 2) & 15);
j--;
}
}
return str;
}
,__class__: haxe.crypto.Sha1
};
haxe.ds.BalancedTree = function() {
};
$hxClasses["haxe.ds.BalancedTree"] = haxe.ds.BalancedTree;
haxe.ds.BalancedTree.__name__ = ["haxe","ds","BalancedTree"];
haxe.ds.BalancedTree.prototype = {
set: function(key,value) {
this.root = this.setLoop(key,value,this.root);
}
,get: function(key) {
var node = this.root;
while(node != null) {
var c = this.compare(key,node.key);
if(c == 0) return node.value;
if(c < 0) node = node.left; else node = node.right;
}
return null;
}
,setLoop: function(k,v,node) {
if(node == null) return new haxe.ds.TreeNode(null,k,v,null);
var c = this.compare(k,node.key);
if(c == 0) return new haxe.ds.TreeNode(node.left,k,v,node.right,node == null?0:node._height); else if(c < 0) {
var nl = this.setLoop(k,v,node.left);
return this.balance(nl,node.key,node.value,node.right);
} else {
var nr = this.setLoop(k,v,node.right);
return this.balance(node.left,node.key,node.value,nr);
}
}
,balance: function(l,k,v,r) {
var hl;
if(l == null) hl = 0; else hl = l._height;
var hr;
if(r == null) hr = 0; else hr = r._height;
if(hl > hr + 2) {
if((function($this) {
var $r;
var _this = l.left;
$r = _this == null?0:_this._height;
return $r;
}(this)) >= (function($this) {
var $r;
var _this1 = l.right;
$r = _this1 == null?0:_this1._height;
return $r;
}(this))) return new haxe.ds.TreeNode(l.left,l.key,l.value,new haxe.ds.TreeNode(l.right,k,v,r)); else return new haxe.ds.TreeNode(new haxe.ds.TreeNode(l.left,l.key,l.value,l.right.left),l.right.key,l.right.value,new haxe.ds.TreeNode(l.right.right,k,v,r));
} else if(hr > hl + 2) {
if((function($this) {
var $r;
var _this2 = r.right;
$r = _this2 == null?0:_this2._height;
return $r;
}(this)) > (function($this) {
var $r;
var _this3 = r.left;
$r = _this3 == null?0:_this3._height;
return $r;
}(this))) return new haxe.ds.TreeNode(new haxe.ds.TreeNode(l,k,v,r.left),r.key,r.value,r.right); else return new haxe.ds.TreeNode(new haxe.ds.TreeNode(l,k,v,r.left.left),r.left.key,r.left.value,new haxe.ds.TreeNode(r.left.right,r.key,r.value,r.right));
} else return new haxe.ds.TreeNode(l,k,v,r,(hl > hr?hl:hr) + 1);
}
,compare: function(k1,k2) {
return Reflect.compare(k1,k2);
}
,__class__: haxe.ds.BalancedTree
};
haxe.ds.TreeNode = function(l,k,v,r,h) {
if(h == null) h = -1;
this.left = l;
this.key = k;
this.value = v;
this.right = r;
if(h == -1) this._height = ((function($this) {
var $r;
var _this = $this.left;
$r = _this == null?0:_this._height;
return $r;
}(this)) > (function($this) {
var $r;
var _this1 = $this.right;
$r = _this1 == null?0:_this1._height;
return $r;
}(this))?(function($this) {
var $r;
var _this2 = $this.left;
$r = _this2 == null?0:_this2._height;
return $r;
}(this)):(function($this) {
var $r;
var _this3 = $this.right;
$r = _this3 == null?0:_this3._height;
return $r;
}(this))) + 1; else this._height = h;
};
$hxClasses["haxe.ds.TreeNode"] = haxe.ds.TreeNode;
haxe.ds.TreeNode.__name__ = ["haxe","ds","TreeNode"];
haxe.ds.TreeNode.prototype = {
__class__: haxe.ds.TreeNode
};
haxe.ds.EnumValueMap = function() {
haxe.ds.BalancedTree.call(this);
};
$hxClasses["haxe.ds.EnumValueMap"] = haxe.ds.EnumValueMap;
haxe.ds.EnumValueMap.__name__ = ["haxe","ds","EnumValueMap"];
haxe.ds.EnumValueMap.__interfaces__ = [IMap];
haxe.ds.EnumValueMap.__super__ = haxe.ds.BalancedTree;
haxe.ds.EnumValueMap.prototype = $extend(haxe.ds.BalancedTree.prototype,{
compare: function(k1,k2) {
var d = k1[1] - k2[1];
if(d != 0) return d;
var p1 = k1.slice(2);
var p2 = k2.slice(2);
if(p1.length == 0 && p2.length == 0) return 0;
return this.compareArgs(p1,p2);
}
,compareArgs: function(a1,a2) {
var ld = a1.length - a2.length;
if(ld != 0) return ld;
var _g1 = 0;
var _g = a1.length;
while(_g1 < _g) {
var i = _g1++;
var d = this.compareArg(a1[i],a2[i]);
if(d != 0) return d;
}
return 0;
}
,compareArg: function(v1,v2) {
if(Reflect.isEnumValue(v1) && Reflect.isEnumValue(v2)) return this.compare(v1,v2); else if((v1 instanceof Array) && v1.__enum__ == null && ((v2 instanceof Array) && v2.__enum__ == null)) return this.compareArgs(v1,v2); else return Reflect.compare(v1,v2);
}
,__class__: haxe.ds.EnumValueMap
});
haxe.ds.IntMap = function() {
this.h = { };
};
$hxClasses["haxe.ds.IntMap"] = haxe.ds.IntMap;
haxe.ds.IntMap.__name__ = ["haxe","ds","IntMap"];
haxe.ds.IntMap.__interfaces__ = [IMap];
haxe.ds.IntMap.prototype = {
set: function(key,value) {
this.h[key] = value;
}
,get: function(key) {
return this.h[key];
}
,exists: function(key) {
return this.h.hasOwnProperty(key);
}
,keys: function() {
var a = [];
for( var key in this.h ) {
if(this.h.hasOwnProperty(key)) a.push(key | 0);
}
return HxOverrides.iter(a);
}
,__class__: haxe.ds.IntMap
};
haxe.ds.ObjectMap = function() {
this.h = { };
this.h.__keys__ = { };
};
$hxClasses["haxe.ds.ObjectMap"] = haxe.ds.ObjectMap;
haxe.ds.ObjectMap.__name__ = ["haxe","ds","ObjectMap"];
haxe.ds.ObjectMap.__interfaces__ = [IMap];
haxe.ds.ObjectMap.prototype = {
set: function(key,value) {
var id = key.__id__ || (key.__id__ = ++haxe.ds.ObjectMap.count);
this.h[id] = value;
this.h.__keys__[id] = key;
}
,remove: function(key) {
var id = key.__id__;
if(this.h.__keys__[id] == null) return false;
delete(this.h[id]);
delete(this.h.__keys__[id]);
return true;
}
,keys: function() {
var a = [];
for( var key in this.h.__keys__ ) {
if(this.h.hasOwnProperty(key)) a.push(this.h.__keys__[key]);
}
return HxOverrides.iter(a);
}
,iterator: function() {
return { ref : this.h, it : this.keys(), hasNext : function() {
return this.it.hasNext();
}, next : function() {
var i = this.it.next();
return this.ref[i.__id__];
}};
}
,__class__: haxe.ds.ObjectMap
};
haxe.ds._Vector = {};
haxe.ds._Vector.Vector_Impl_ = function() { };
$hxClasses["haxe.ds._Vector.Vector_Impl_"] = haxe.ds._Vector.Vector_Impl_;
haxe.ds._Vector.Vector_Impl_.__name__ = ["haxe","ds","_Vector","Vector_Impl_"];
haxe.ds._Vector.Vector_Impl_.blit = function(src,srcPos,dest,destPos,len) {
var _g = 0;
while(_g < len) {
var i = _g++;
dest[destPos + i] = src[srcPos + i];
}
};
haxe.ds._Vector.Vector_Impl_.toArray = function(this1) {
var a = new Array();
var len = this1.length;
var _g = 0;
while(_g < len) {
var i = _g++;
a[i] = this1[i];
}
return a;
};
haxe.io.Eof = function() { };
$hxClasses["haxe.io.Eof"] = haxe.io.Eof;
haxe.io.Eof.__name__ = ["haxe","io","Eof"];
haxe.io.Eof.prototype = {
toString: function() {
return "Eof";
}
,__class__: haxe.io.Eof
};
haxe.io.Error = $hxClasses["haxe.io.Error"] = { __ename__ : ["haxe","io","Error"], __constructs__ : ["Blocked","Overflow","OutsideBounds","Custom"] };
haxe.io.Error.Blocked = ["Blocked",0];
haxe.io.Error.Blocked.toString = $estr;
haxe.io.Error.Blocked.__enum__ = haxe.io.Error;
haxe.io.Error.Overflow = ["Overflow",1];
haxe.io.Error.Overflow.toString = $estr;
haxe.io.Error.Overflow.__enum__ = haxe.io.Error;
haxe.io.Error.OutsideBounds = ["OutsideBounds",2];
haxe.io.Error.OutsideBounds.toString = $estr;
haxe.io.Error.OutsideBounds.__enum__ = haxe.io.Error;
haxe.io.Error.Custom = function(e) { var $x = ["Custom",3,e]; $x.__enum__ = haxe.io.Error; $x.toString = $estr; return $x; };
haxe.io.Path = function(path) {
var c1 = path.lastIndexOf("/");
var c2 = path.lastIndexOf("\\");
if(c1 < c2) {
this.dir = HxOverrides.substr(path,0,c2);
path = HxOverrides.substr(path,c2 + 1,null);
this.backslash = true;
} else if(c2 < c1) {
this.dir = HxOverrides.substr(path,0,c1);
path = HxOverrides.substr(path,c1 + 1,null);
} else this.dir = null;
var cp = path.lastIndexOf(".");
if(cp != -1) {
this.ext = HxOverrides.substr(path,cp + 1,null);
this.file = HxOverrides.substr(path,0,cp);
} else {
this.ext = null;
this.file = path;
}
};
$hxClasses["haxe.io.Path"] = haxe.io.Path;
haxe.io.Path.__name__ = ["haxe","io","Path"];
haxe.io.Path.withoutExtension = function(path) {
var s = new haxe.io.Path(path);
s.ext = null;
return s.toString();
};
haxe.io.Path.prototype = {
toString: function() {
return (this.dir == null?"":this.dir + (this.backslash?"\\":"/")) + this.file + (this.ext == null?"":"." + this.ext);
}
,__class__: haxe.io.Path
};
var js = {};
js.Boot = function() { };
$hxClasses["js.Boot"] = js.Boot;
js.Boot.__name__ = ["js","Boot"];
js.Boot.__unhtml = function(s) {
return s.split("&").join("&").split("<").join("<").split(">").join(">");
};
js.Boot.__trace = function(v,i) {
var msg;
if(i != null) msg = i.fileName + ":" + i.lineNumber + ": "; else msg = "";
msg += js.Boot.__string_rec(v,"");
if(i != null && i.customParams != null) {
var _g = 0;
var _g1 = i.customParams;
while(_g < _g1.length) {
var v1 = _g1[_g];
++_g;
msg += "," + js.Boot.__string_rec(v1,"");
}
}
var d;
if(typeof(document) != "undefined" && (d = document.getElementById("haxe:trace")) != null) d.innerHTML += js.Boot.__unhtml(msg) + "
"; else if(typeof console != "undefined" && console.log != null) console.log(msg);
};
js.Boot.__clear_trace = function() {
var d = document.getElementById("haxe:trace");
if(d != null) d.innerHTML = "";
};
js.Boot.isClass = function(o) {
return o.__name__;
};
js.Boot.isEnum = function(e) {
return e.__ename__;
};
js.Boot.getClass = function(o) {
if((o instanceof Array) && o.__enum__ == null) return Array; else {
var cl = o.__class__;
if(cl != null) return cl;
var name = js.Boot.__nativeClassName(o);
if(name != null) return js.Boot.__resolveNativeClass(name);
return null;
}
};
js.Boot.__string_rec = function(o,s) {
if(o == null) return "null";
if(s.length >= 5) return "<...>";
var t = typeof(o);
if(t == "function" && (o.__name__ || o.__ename__)) t = "object";
switch(t) {
case "object":
if(o instanceof Array) {
if(o.__enum__) {
if(o.length == 2) return o[0];
var str = o[0] + "(";
s += "\t";
var _g1 = 2;
var _g = o.length;
while(_g1 < _g) {
var i = _g1++;
if(i != 2) str += "," + js.Boot.__string_rec(o[i],s); else str += js.Boot.__string_rec(o[i],s);
}
return str + ")";
}
var l = o.length;
var i1;
var str1 = "[";
s += "\t";
var _g2 = 0;
while(_g2 < l) {
var i2 = _g2++;
str1 += (i2 > 0?",":"") + js.Boot.__string_rec(o[i2],s);
}
str1 += "]";
return str1;
}
var tostr;
try {
tostr = o.toString;
} catch( e ) {
return "???";
}
if(tostr != null && tostr != Object.toString && typeof(tostr) == "function") {
var s2 = o.toString();
if(s2 != "[object Object]") return s2;
}
var k = null;
var str2 = "{\n";
s += "\t";
var hasp = o.hasOwnProperty != null;
for( var k in o ) {
if(hasp && !o.hasOwnProperty(k)) {
continue;
}
if(k == "prototype" || k == "__class__" || k == "__super__" || k == "__interfaces__" || k == "__properties__") {
continue;
}
if(str2.length != 2) str2 += ", \n";
str2 += s + k + " : " + js.Boot.__string_rec(o[k],s);
}
s = s.substring(1);
str2 += "\n" + s + "}";
return str2;
case "function":
return "";
case "string":
return o;
default:
return String(o);
}
};
js.Boot.__interfLoop = function(cc,cl) {
if(cc == null) return false;
if(cc == cl) return true;
var intf = cc.__interfaces__;
if(intf != null) {
var _g1 = 0;
var _g = intf.length;
while(_g1 < _g) {
var i = _g1++;
var i1 = intf[i];
if(i1 == cl || js.Boot.__interfLoop(i1,cl)) return true;
}
}
return js.Boot.__interfLoop(cc.__super__,cl);
};
js.Boot.__instanceof = function(o,cl) {
if(cl == null) return false;
switch(cl) {
case Int:
return (o|0) === o;
case Float:
return typeof(o) == "number";
case Bool:
return typeof(o) == "boolean";
case String:
return typeof(o) == "string";
case Array:
return (o instanceof Array) && o.__enum__ == null;
case Dynamic:
return true;
default:
if(o != null) {
if(typeof(cl) == "function") {
if(o instanceof cl) return true;
if(js.Boot.__interfLoop(js.Boot.getClass(o),cl)) return true;
} else if(typeof(cl) == "object" && js.Boot.__isNativeObj(cl)) {
if(o instanceof cl) return true;
}
} else return false;
if(cl == Class && o.__name__ != null) return true;
if(cl == Enum && o.__ename__ != null) return true;
return o.__enum__ == cl;
}
};
js.Boot.__cast = function(o,t) {
if(js.Boot.__instanceof(o,t)) return o; else throw "Cannot cast " + Std.string(o) + " to " + Std.string(t);
};
js.Boot.__nativeClassName = function(o) {
var name = js.Boot.__toStr.call(o).slice(8,-1);
if(name == "Object" || name == "Function" || name == "Math" || name == "JSON") return null;
return name;
};
js.Boot.__isNativeObj = function(o) {
return js.Boot.__nativeClassName(o) != null;
};
js.Boot.__resolveNativeClass = function(name) {
if(typeof window != "undefined") return window[name]; else return global[name];
};
js.Browser = function() { };
$hxClasses["js.Browser"] = js.Browser;
js.Browser.__name__ = ["js","Browser"];
js.Browser.getLocalStorage = function() {
try {
var s = window.localStorage;
s.getItem("");
return s;
} catch( e ) {
return null;
}
};
js.Browser.createXMLHttpRequest = function() {
if(typeof XMLHttpRequest != "undefined") return new XMLHttpRequest();
if(typeof ActiveXObject != "undefined") return new ActiveXObject("Microsoft.XMLHTTP");
throw "Unable to create XMLHttpRequest object.";
};
lime.AssetCache = function() {
this.enabled = true;
this.audio = new haxe.ds.StringMap();
this.font = new haxe.ds.StringMap();
this.image = new haxe.ds.StringMap();
};
$hxClasses["lime.AssetCache"] = lime.AssetCache;
lime.AssetCache.__name__ = ["lime","AssetCache"];
lime.AssetCache.prototype = {
clear: function(prefix) {
if(prefix == null) {
this.audio = new haxe.ds.StringMap();
this.font = new haxe.ds.StringMap();
this.image = new haxe.ds.StringMap();
} else {
var keys = this.audio.keys();
while( keys.hasNext() ) {
var key = keys.next();
if(StringTools.startsWith(key,prefix)) this.audio.remove(key);
}
var keys1 = this.font.keys();
while( keys1.hasNext() ) {
var key1 = keys1.next();
if(StringTools.startsWith(key1,prefix)) this.font.remove(key1);
}
var keys2 = this.image.keys();
while( keys2.hasNext() ) {
var key2 = keys2.next();
if(StringTools.startsWith(key2,prefix)) this.image.remove(key2);
}
}
}
,__class__: lime.AssetCache
};
lime.Assets = function() { };
$hxClasses["lime.Assets"] = lime.Assets;
lime.Assets.__name__ = ["lime","Assets"];
lime.Assets.exists = function(id,type) {
lime.Assets.initialize();
if(type == null) type = "BINARY";
var libraryName = id.substring(0,id.indexOf(":"));
var symbolName;
var pos = id.indexOf(":") + 1;
symbolName = HxOverrides.substr(id,pos,null);
var library = lime.Assets.getLibrary(libraryName);
if(library != null) return library.exists(symbolName,type);
return false;
};
lime.Assets.getAudioBuffer = function(id,useCache) {
if(useCache == null) useCache = true;
lime.Assets.initialize();
if(useCache && lime.Assets.cache.enabled && lime.Assets.cache.audio.exists(id)) {
var audio = lime.Assets.cache.audio.get(id);
if(lime.Assets.isValidAudio(audio)) return audio;
}
var libraryName = id.substring(0,id.indexOf(":"));
var symbolName;
var pos = id.indexOf(":") + 1;
symbolName = HxOverrides.substr(id,pos,null);
var library = lime.Assets.getLibrary(libraryName);
if(library != null) {
if(library.exists(symbolName,"SOUND")) {
if(library.isLocal(symbolName,"SOUND")) {
var audio1 = library.getAudioBuffer(symbolName);
if(useCache && lime.Assets.cache.enabled) lime.Assets.cache.audio.set(id,audio1);
return audio1;
} else null;
} else null;
} else null;
return null;
};
lime.Assets.getBytes = function(id) {
lime.Assets.initialize();
var libraryName = id.substring(0,id.indexOf(":"));
var symbolName;
var pos = id.indexOf(":") + 1;
symbolName = HxOverrides.substr(id,pos,null);
var library = lime.Assets.getLibrary(libraryName);
if(library != null) {
if(library.exists(symbolName,"BINARY")) {
if(library.isLocal(symbolName,"BINARY")) return library.getBytes(symbolName); else null;
} else null;
} else null;
return null;
};
lime.Assets.getFont = function(id,useCache) {
if(useCache == null) useCache = true;
lime.Assets.initialize();
if(useCache && lime.Assets.cache.enabled && lime.Assets.cache.font.exists(id)) return lime.Assets.cache.font.get(id);
var libraryName = id.substring(0,id.indexOf(":"));
var symbolName;
var pos = id.indexOf(":") + 1;
symbolName = HxOverrides.substr(id,pos,null);
var library = lime.Assets.getLibrary(libraryName);
if(library != null) {
if(library.exists(symbolName,"FONT")) {
if(library.isLocal(symbolName,"FONT")) {
var font = library.getFont(symbolName);
if(useCache && lime.Assets.cache.enabled) lime.Assets.cache.font.set(id,font);
return font;
} else null;
} else null;
} else null;
return null;
};
lime.Assets.getImage = function(id,useCache) {
if(useCache == null) useCache = true;
lime.Assets.initialize();
if(useCache && lime.Assets.cache.enabled && lime.Assets.cache.image.exists(id)) {
var image = lime.Assets.cache.image.get(id);
if(lime.Assets.isValidImage(image)) return image;
}
var libraryName = id.substring(0,id.indexOf(":"));
var symbolName;
var pos = id.indexOf(":") + 1;
symbolName = HxOverrides.substr(id,pos,null);
var library = lime.Assets.getLibrary(libraryName);
if(library != null) {
if(library.exists(symbolName,"IMAGE")) {
if(library.isLocal(symbolName,"IMAGE")) {
var image1 = library.getImage(symbolName);
if(useCache && lime.Assets.cache.enabled) lime.Assets.cache.image.set(id,image1);
return image1;
} else null;
} else null;
} else null;
return null;
};
lime.Assets.getLibrary = function(name) {
if(name == null || name == "") name = "default";
return lime.Assets.libraries.get(name);
};
lime.Assets.getPath = function(id) {
lime.Assets.initialize();
var libraryName = id.substring(0,id.indexOf(":"));
var symbolName;
var pos = id.indexOf(":") + 1;
symbolName = HxOverrides.substr(id,pos,null);
var library = lime.Assets.getLibrary(libraryName);
if(library != null) {
if(library.exists(symbolName,null)) return library.getPath(symbolName); else null;
} else null;
return null;
};
lime.Assets.getText = function(id) {
lime.Assets.initialize();
var libraryName = id.substring(0,id.indexOf(":"));
var symbolName;
var pos = id.indexOf(":") + 1;
symbolName = HxOverrides.substr(id,pos,null);
var library = lime.Assets.getLibrary(libraryName);
if(library != null) {
if(library.exists(symbolName,"TEXT")) {
if(library.isLocal(symbolName,"TEXT")) return library.getText(symbolName); else null;
} else null;
} else null;
return null;
};
lime.Assets.initialize = function() {
if(!lime.Assets.initialized) {
lime.Assets.registerLibrary("default",new DefaultAssetLibrary());
lime.Assets.initialized = true;
}
};
lime.Assets.isLocal = function(id,type,useCache) {
if(useCache == null) useCache = true;
lime.Assets.initialize();
if(useCache && lime.Assets.cache.enabled) {
if(type == "IMAGE" || type == null) {
if(lime.Assets.cache.image.exists(id)) return true;
}
if(type == "FONT" || type == null) {
if(lime.Assets.cache.font.exists(id)) return true;
}
if(type == "SOUND" || type == "MUSIC" || type == null) {
if(lime.Assets.cache.audio.exists(id)) return true;
}
}
var libraryName = id.substring(0,id.indexOf(":"));
var symbolName;
var pos = id.indexOf(":") + 1;
symbolName = HxOverrides.substr(id,pos,null);
var library = lime.Assets.getLibrary(libraryName);
if(library != null) return library.isLocal(symbolName,type);
return false;
};
lime.Assets.isValidAudio = function(buffer) {
return buffer != null;
return true;
};
lime.Assets.isValidImage = function(buffer) {
return true;
};
lime.Assets.list = function(type) {
lime.Assets.initialize();
var items = [];
var $it0 = lime.Assets.libraries.iterator();
while( $it0.hasNext() ) {
var library = $it0.next();
var libraryItems = library.list(type);
if(libraryItems != null) items = items.concat(libraryItems);
}
return items;
};
lime.Assets.loadAudioBuffer = function(id,handler,useCache) {
if(useCache == null) useCache = true;
lime.Assets.initialize();
if(useCache && lime.Assets.cache.enabled && lime.Assets.cache.audio.exists(id)) {
var audio = lime.Assets.cache.audio.get(id);
if(lime.Assets.isValidAudio(audio)) {
handler(audio);
return;
}
}
var libraryName = id.substring(0,id.indexOf(":"));
var symbolName;
var pos = id.indexOf(":") + 1;
symbolName = HxOverrides.substr(id,pos,null);
var library = lime.Assets.getLibrary(libraryName);
if(library != null) {
if(library.exists(symbolName,"SOUND")) {
if(useCache && lime.Assets.cache.enabled) library.loadAudioBuffer(symbolName,function(audio1) {
var value = audio1;
lime.Assets.cache.audio.set(id,value);
handler(audio1);
}); else library.loadAudioBuffer(symbolName,handler);
return;
} else null;
} else null;
handler(null);
};
lime.Assets.loadBytes = function(id,handler) {
lime.Assets.initialize();
var libraryName = id.substring(0,id.indexOf(":"));
var symbolName;
var pos = id.indexOf(":") + 1;
symbolName = HxOverrides.substr(id,pos,null);
var library = lime.Assets.getLibrary(libraryName);
if(library != null) {
if(library.exists(symbolName,"BINARY")) {
library.loadBytes(symbolName,handler);
return;
} else null;
} else null;
handler(null);
};
lime.Assets.loadImage = function(id,handler,useCache) {
if(useCache == null) useCache = true;
lime.Assets.initialize();
if(useCache && lime.Assets.cache.enabled && lime.Assets.cache.image.exists(id)) {
var image = lime.Assets.cache.image.get(id);
if(lime.Assets.isValidImage(image)) {
handler(image);
return;
}
}
var libraryName = id.substring(0,id.indexOf(":"));
var symbolName;
var pos = id.indexOf(":") + 1;
symbolName = HxOverrides.substr(id,pos,null);
var library = lime.Assets.getLibrary(libraryName);
if(library != null) {
if(library.exists(symbolName,"IMAGE")) {
if(useCache && lime.Assets.cache.enabled) library.loadImage(symbolName,function(image1) {
lime.Assets.cache.image.set(id,image1);
handler(image1);
}); else library.loadImage(symbolName,handler);
return;
} else null;
} else null;
handler(null);
};
lime.Assets.loadLibrary = function(name,handler) {
lime.Assets.initialize();
var data = lime.Assets.getText("libraries/" + name + ".json");
if(data != null && data != "") {
var info = JSON.parse(data);
var library = Type.createInstance(Type.resolveClass(info.type),info.args);
lime.Assets.libraries.set(name,library);
library.eventCallback = lime.Assets.library_onEvent;
library.load(handler);
} else null;
};
lime.Assets.loadText = function(id,handler) {
lime.Assets.initialize();
var libraryName = id.substring(0,id.indexOf(":"));
var symbolName;
var pos = id.indexOf(":") + 1;
symbolName = HxOverrides.substr(id,pos,null);
var library = lime.Assets.getLibrary(libraryName);
if(library != null) {
if(library.exists(symbolName,"TEXT")) {
library.loadText(symbolName,handler);
return;
} else null;
} else null;
handler(null);
};
lime.Assets.registerLibrary = function(name,library) {
if(lime.Assets.libraries.exists(name)) lime.Assets.unloadLibrary(name);
if(library != null) library.eventCallback = lime.Assets.library_onEvent;
lime.Assets.libraries.set(name,library);
};
lime.Assets.unloadLibrary = function(name) {
lime.Assets.initialize();
var library = lime.Assets.libraries.get(name);
if(library != null) {
lime.Assets.cache.clear(name + ":");
library.eventCallback = null;
}
lime.Assets.libraries.remove(name);
};
lime.Assets.library_onEvent = function(library,type) {
if(type == "change") lime.Assets.cache.clear();
};
lime._Assets = {};
lime._Assets.AssetType_Impl_ = function() { };
$hxClasses["lime._Assets.AssetType_Impl_"] = lime._Assets.AssetType_Impl_;
lime._Assets.AssetType_Impl_.__name__ = ["lime","_Assets","AssetType_Impl_"];
lime._backend = {};
lime._backend.html5 = {};
lime._backend.html5.HTML5Application = function(parent) {
this.parent = parent;
lime.audio.AudioManager.init();
};
$hxClasses["lime._backend.html5.HTML5Application"] = lime._backend.html5.HTML5Application;
lime._backend.html5.HTML5Application.__name__ = ["lime","_backend","html5","HTML5Application"];
lime._backend.html5.HTML5Application.prototype = {
convertKeyCode: function(keyCode) {
if(keyCode >= 65 && keyCode <= 90) return keyCode + 32;
switch(keyCode) {
case 16:
return 1073742049;
case 17:
return 1073742048;
case 18:
return 1073742050;
case 20:
return 1073741881;
case 144:
return 1073741907;
case 37:
return 1073741904;
case 38:
return 1073741906;
case 39:
return 1073741903;
case 40:
return 1073741905;
case 45:
return 1073741897;
case 46:
return 127;
case 36:
return 1073741898;
case 35:
return 1073741901;
case 33:
return 1073741899;
case 34:
return 1073741902;
case 112:
return 1073741882;
case 113:
return 1073741883;
case 114:
return 1073741884;
case 115:
return 1073741885;
case 116:
return 1073741886;
case 117:
return 1073741887;
case 118:
return 1073741888;
case 119:
return 1073741889;
case 120:
return 1073741890;
case 121:
return 1073741891;
case 122:
return 1073741892;
case 123:
return 1073741893;
}
return keyCode;
}
,create: function(config) {
this.parent.config = config;
if(config != null) {
var $window = new lime.ui.Window(config);
var renderer = new lime.graphics.Renderer($window);
this.parent.addWindow($window);
this.parent.addRenderer(renderer);
}
}
,exec: function() {
window.addEventListener("keydown",$bind(this,this.handleKeyEvent),false);
window.addEventListener("keyup",$bind(this,this.handleKeyEvent),false);
window.addEventListener("focus",$bind(this,this.handleWindowEvent),false);
window.addEventListener("blur",$bind(this,this.handleWindowEvent),false);
window.addEventListener("resize",$bind(this,this.handleWindowEvent),false);
window.addEventListener("beforeunload",$bind(this,this.handleWindowEvent),false);
var lastTime = 0;
var vendors = ['ms', 'moz', 'webkit', 'o'];
for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame'];
window.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame']
|| window[vendors[x]+'CancelRequestAnimationFrame'];
}
if (!window.requestAnimationFrame)
window.requestAnimationFrame = function(callback, element) {
var currTime = new Date().getTime();
var timeToCall = Math.max(0, 16 - (currTime - lastTime));
var id = window.setTimeout(function() { callback(currTime + timeToCall); },
timeToCall);
lastTime = currTime + timeToCall;
return id;
};
if (!window.cancelAnimationFrame)
window.cancelAnimationFrame = function(id) {
clearTimeout(id);
};
window.requestAnimFrame = window.requestAnimationFrame;
;
this.cacheTime = new Date().getTime();
this.handleUpdateEvent();
return 0;
}
,handleKeyEvent: function(event) {
if(this.parent.windows[0] != null) {
var _g = event.keyCode;
switch(_g) {
case 32:case 37:case 38:case 39:case 40:
event.preventDefault();
break;
}
var keyCode = this.convertKeyCode(event.keyCode != null?event.keyCode:event.which);
var modifier;
modifier = (event.shiftKey?3:0) | (event.ctrlKey?192:0) | (event.altKey?768:0) | (event.metaKey?3072:0);
if(event.type == "keydown") {
var listeners = this.parent.windows[0].onKeyDown.listeners;
var repeat = this.parent.windows[0].onKeyDown.repeat;
var length = listeners.length;
var i = 0;
while(i < length) {
listeners[i](keyCode,modifier);
if(!repeat[i]) {
this.parent.windows[0].onKeyDown.remove(listeners[i]);
length--;
} else i++;
}
} else {
var listeners1 = this.parent.windows[0].onKeyUp.listeners;
var repeat1 = this.parent.windows[0].onKeyUp.repeat;
var length1 = listeners1.length;
var i1 = 0;
while(i1 < length1) {
listeners1[i1](keyCode,modifier);
if(!repeat1[i1]) {
this.parent.windows[0].onKeyUp.remove(listeners1[i1]);
length1--;
} else i1++;
}
}
}
}
,handleUpdateEvent: function(__) {
var currentTime = new Date().getTime();
var deltaTime = currentTime - this.cacheTime;
this.cacheTime = currentTime;
var listeners = this.parent.onUpdate.listeners;
var repeat = this.parent.onUpdate.repeat;
var length = listeners.length;
var i = 0;
while(i < length) {
listeners[i](deltaTime | 0);
if(!repeat[i]) {
this.parent.onUpdate.remove(listeners[i]);
length--;
} else i++;
}
if(this.parent.renderers[0] != null) {
if(!this.initialized) {
this.initialized = true;
this.parent.init(this.parent.renderers[0].context);
}
var listeners1 = this.parent.renderers[0].onRender.listeners;
var repeat1 = this.parent.renderers[0].onRender.repeat;
var length1 = listeners1.length;
var i1 = 0;
while(i1 < length1) {
listeners1[i1](this.parent.renderers[0].context);
if(!repeat1[i1]) {
this.parent.renderers[0].onRender.remove(listeners1[i1]);
length1--;
} else i1++;
}
this.parent.renderers[0].flip();
}
window.requestAnimationFrame($bind(this,this.handleUpdateEvent));
}
,handleWindowEvent: function(event) {
if(this.parent.windows[0] != null) {
var _g = event.type;
switch(_g) {
case "focus":
var listeners = this.parent.windows[0].onWindowFocusIn.listeners;
var repeat = this.parent.windows[0].onWindowFocusIn.repeat;
var length = listeners.length;
var i = 0;
while(i < length) {
listeners[i]();
if(!repeat[i]) {
this.parent.windows[0].onWindowFocusIn.remove(listeners[i]);
length--;
} else i++;
}
var listeners1 = this.parent.windows[0].onWindowActivate.listeners;
var repeat1 = this.parent.windows[0].onWindowActivate.repeat;
var length1 = listeners1.length;
var i1 = 0;
while(i1 < length1) {
listeners1[i1]();
if(!repeat1[i1]) {
this.parent.windows[0].onWindowActivate.remove(listeners1[i1]);
length1--;
} else i1++;
}
break;
case "blur":
var listeners2 = this.parent.windows[0].onWindowFocusOut.listeners;
var repeat2 = this.parent.windows[0].onWindowFocusOut.repeat;
var length2 = listeners2.length;
var i2 = 0;
while(i2 < length2) {
listeners2[i2]();
if(!repeat2[i2]) {
this.parent.windows[0].onWindowFocusOut.remove(listeners2[i2]);
length2--;
} else i2++;
}
var listeners3 = this.parent.windows[0].onWindowDeactivate.listeners;
var repeat3 = this.parent.windows[0].onWindowDeactivate.repeat;
var length3 = listeners3.length;
var i3 = 0;
while(i3 < length3) {
listeners3[i3]();
if(!repeat3[i3]) {
this.parent.windows[0].onWindowDeactivate.remove(listeners3[i3]);
length3--;
} else i3++;
}
break;
case "resize":
var cacheWidth = this.parent.windows[0].width;
var cacheHeight = this.parent.windows[0].height;
this.parent.windows[0].backend.handleResize();
if(this.parent.windows[0].width != cacheWidth || this.parent.windows[0].height != cacheHeight) {
var listeners4 = this.parent.windows[0].onWindowResize.listeners;
var repeat4 = this.parent.windows[0].onWindowResize.repeat;
var length4 = listeners4.length;
var i4 = 0;
while(i4 < length4) {
listeners4[i4](this.parent.windows[0].width,this.parent.windows[0].height);
if(!repeat4[i4]) {
this.parent.windows[0].onWindowResize.remove(listeners4[i4]);
length4--;
} else i4++;
}
}
break;
case "beforeunload":
var listeners5 = this.parent.windows[0].onWindowClose.listeners;
var repeat5 = this.parent.windows[0].onWindowClose.repeat;
var length5 = listeners5.length;
var i5 = 0;
while(i5 < length5) {
listeners5[i5]();
if(!repeat5[i5]) {
this.parent.windows[0].onWindowClose.remove(listeners5[i5]);
length5--;
} else i5++;
}
break;
}
}
}
,__class__: lime._backend.html5.HTML5Application
};
lime._backend.html5.HTML5Mouse = function() { };
$hxClasses["lime._backend.html5.HTML5Mouse"] = lime._backend.html5.HTML5Mouse;
lime._backend.html5.HTML5Mouse.__name__ = ["lime","_backend","html5","HTML5Mouse"];
lime._backend.html5.HTML5Mouse.__cursor = null;
lime._backend.html5.HTML5Mouse.__hidden = null;
lime._backend.html5.HTML5Mouse.hide = function() {
if(!lime._backend.html5.HTML5Mouse.__hidden) {
lime._backend.html5.HTML5Mouse.__hidden = true;
var _g = 0;
var _g1 = lime.app.Application.current.windows;
while(_g < _g1.length) {
var $window = _g1[_g];
++_g;
$window.backend.element.style.cursor = "none";
}
}
};
lime._backend.html5.HTML5Mouse.show = function() {
if(lime._backend.html5.HTML5Mouse.__hidden) {
lime._backend.html5.HTML5Mouse.__hidden = false;
var cacheValue = lime._backend.html5.HTML5Mouse.__cursor;
lime._backend.html5.HTML5Mouse.__cursor = null;
lime._backend.html5.HTML5Mouse.set_cursor(cacheValue);
}
};
lime._backend.html5.HTML5Mouse.get_cursor = function() {
if(lime._backend.html5.HTML5Mouse.__cursor == null) return lime.ui.MouseCursor.DEFAULT;
return lime._backend.html5.HTML5Mouse.__cursor;
};
lime._backend.html5.HTML5Mouse.set_cursor = function(value) {
if(lime._backend.html5.HTML5Mouse.__cursor != value) {
if(!lime._backend.html5.HTML5Mouse.__hidden) {
var _g = 0;
var _g1 = lime.app.Application.current.windows;
while(_g < _g1.length) {
var $window = _g1[_g];
++_g;
switch(value[1]) {
case 0:
$window.backend.element.style.cursor = "default";
break;
case 1:
$window.backend.element.style.cursor = "crosshair";
break;
case 3:
$window.backend.element.style.cursor = "move";
break;
case 4:
$window.backend.element.style.cursor = "pointer";
break;
case 5:
$window.backend.element.style.cursor = "nesw-resize";
break;
case 6:
$window.backend.element.style.cursor = "ns-resize";
break;
case 7:
$window.backend.element.style.cursor = "nwse-resize";
break;
case 8:
$window.backend.element.style.cursor = "ew-resize";
break;
case 9:
$window.backend.element.style.cursor = "text";
break;
case 10:
$window.backend.element.style.cursor = "wait";
break;
case 11:
$window.backend.element.style.cursor = "wait";
break;
default:
$window.backend.element.style.cursor = "auto";
}
}
}
lime._backend.html5.HTML5Mouse.__cursor = value;
}
return lime._backend.html5.HTML5Mouse.__cursor;
};
lime._backend.html5.HTML5Renderer = function(parent) {
this.parent = parent;
};
$hxClasses["lime._backend.html5.HTML5Renderer"] = lime._backend.html5.HTML5Renderer;
lime._backend.html5.HTML5Renderer.__name__ = ["lime","_backend","html5","HTML5Renderer"];
lime._backend.html5.HTML5Renderer.prototype = {
create: function() {
this.createContext();
{
var _g = this.parent.context;
switch(_g[1]) {
case 0:
this.parent.window.backend.canvas.addEventListener("webglcontextlost",$bind(this,this.handleEvent),false);
this.parent.window.backend.canvas.addEventListener("webglcontextrestored",$bind(this,this.handleEvent),false);
break;
default:
}
}
}
,createContext: function() {
if(this.parent.window.backend.div != null) this.parent.context = lime.graphics.RenderContext.DOM(this.parent.window.backend.div); else if(this.parent.window.backend.canvas != null) {
var webgl = null;
if(webgl == null) this.parent.context = lime.graphics.RenderContext.CANVAS(this.parent.window.backend.canvas.getContext("2d")); else {
lime.graphics.opengl.GL.context = webgl;
this.parent.context = lime.graphics.RenderContext.OPENGL(lime.graphics.opengl.GL.context);
}
}
}
,flip: function() {
}
,handleEvent: function(event) {
var _g = event.type;
switch(_g) {
case "webglcontextlost":
event.preventDefault();
this.parent.context = null;
var listeners = this.parent.onRenderContextLost.listeners;
var repeat = this.parent.onRenderContextLost.repeat;
var length = listeners.length;
var i = 0;
while(i < length) {
listeners[i]();
if(!repeat[i]) {
this.parent.onRenderContextLost.remove(listeners[i]);
length--;
} else i++;
}
break;
case "webglcontextrestored":
this.createContext();
var listeners1 = this.parent.onRenderContextRestored.listeners;
var repeat1 = this.parent.onRenderContextRestored.repeat;
var length1 = listeners1.length;
var i1 = 0;
while(i1 < length1) {
listeners1[i1](this.parent.context);
if(!repeat1[i1]) {
this.parent.onRenderContextRestored.remove(listeners1[i1]);
length1--;
} else i1++;
}
break;
default:
}
}
,render: function() {
}
,__class__: lime._backend.html5.HTML5Renderer
};
lime._backend.html5.HTML5Window = function(parent) {
this.parent = parent;
if(parent.config != null && Object.prototype.hasOwnProperty.call(parent.config,"element")) this.element = parent.config.element;
};
$hxClasses["lime._backend.html5.HTML5Window"] = lime._backend.html5.HTML5Window;
lime._backend.html5.HTML5Window.__name__ = ["lime","_backend","html5","HTML5Window"];
lime._backend.html5.HTML5Window.prototype = {
close: function() {
}
,create: function(application) {
this.setWidth = this.parent.width;
this.setHeight = this.parent.height;
if(js.Boot.__instanceof(this.element,HTMLCanvasElement)) this.canvas = this.element; else this.canvas = window.document.createElement("canvas");
if(this.canvas != null) {
var style = this.canvas.style;
style.setProperty("-webkit-transform","translateZ(0)",null);
style.setProperty("transform","translateZ(0)",null);
} else if(this.div != null) {
var style1 = this.div.style;
style1.setProperty("-webkit-transform","translate3D(0,0,0)",null);
style1.setProperty("transform","translate3D(0,0,0)",null);
style1.position = "relative";
style1.overflow = "hidden";
style1.setProperty("-webkit-user-select","none",null);
style1.setProperty("-moz-user-select","none",null);
style1.setProperty("-ms-user-select","none",null);
style1.setProperty("-o-user-select","none",null);
}
if(this.parent.width == 0 && this.parent.height == 0) {
if(this.element != null) {
this.parent.width = this.element.clientWidth;
this.parent.height = this.element.clientHeight;
} else {
this.parent.width = window.innerWidth;
this.parent.height = window.innerHeight;
}
this.parent.fullscreen = true;
}
if(this.canvas != null) {
this.canvas.width = this.parent.width;
this.canvas.height = this.parent.height;
} else {
this.div.style.width = this.parent.width + "px";
this.div.style.height = this.parent.height + "px";
}
this.handleResize();
if(this.element != null) {
if(this.canvas != null) {
if(this.element != this.canvas) this.element.appendChild(this.canvas);
} else this.element.appendChild(this.div);
var events = ["mousedown","mousemove","mouseup","wheel"];
var standardTouch = typeof(window.ontouchstart) != "undefined";
if(!standardTouch) {
var _g = 0;
while(_g < events.length) {
var event = events[_g];
++_g;
this.element.addEventListener(event,$bind(this,this.handleMouseEvent),true);
}
}
window.document.addEventListener("dragstart",function(e) {
if(e.target.nodeName.toLowerCase() == "img") {
e.preventDefault();
return false;
}
return true;
},false);
this.element.addEventListener("touchstart",$bind(this,this.handleTouchEvent),true);
this.element.addEventListener("touchmove",$bind(this,this.handleTouchEvent),true);
this.element.addEventListener("touchend",$bind(this,this.handleTouchEvent),true);
}
}
,handleMouseEvent: function(event) {
var x = 0.0;
var y = 0.0;
if(event.type != "wheel") {
if(this.element != null) {
if(this.canvas != null) {
var rect = this.canvas.getBoundingClientRect();
x = (event.clientX - rect.left) * (this.parent.width / rect.width);
y = (event.clientY - rect.top) * (this.parent.height / rect.height);
} else if(this.div != null) {
var rect1 = this.div.getBoundingClientRect();
x = event.clientX - rect1.left;
y = event.clientY - rect1.top;
} else {
var rect2 = this.element.getBoundingClientRect();
x = (event.clientX - rect2.left) * (this.parent.width / rect2.width);
y = (event.clientY - rect2.top) * (this.parent.height / rect2.height);
}
} else {
x = event.clientX;
y = event.clientY;
}
var _g = event.type;
switch(_g) {
case "mousedown":
var listeners = this.parent.onMouseDown.listeners;
var repeat = this.parent.onMouseDown.repeat;
var length = listeners.length;
var i = 0;
while(i < length) {
listeners[i](x,y,event.button);
if(!repeat[i]) {
this.parent.onMouseDown.remove(listeners[i]);
length--;
} else i++;
}
break;
case "mouseup":
var listeners1 = this.parent.onMouseUp.listeners;
var repeat1 = this.parent.onMouseUp.repeat;
var length1 = listeners1.length;
var i1 = 0;
while(i1 < length1) {
listeners1[i1](x,y,event.button);
if(!repeat1[i1]) {
this.parent.onMouseUp.remove(listeners1[i1]);
length1--;
} else i1++;
}
break;
case "mousemove":
var listeners2 = this.parent.onMouseMove.listeners;
var repeat2 = this.parent.onMouseMove.repeat;
var length2 = listeners2.length;
var i2 = 0;
while(i2 < length2) {
listeners2[i2](x,y,event.button);
if(!repeat2[i2]) {
this.parent.onMouseMove.remove(listeners2[i2]);
length2--;
} else i2++;
}
break;
default:
}
} else {
var listeners3 = this.parent.onMouseWheel.listeners;
var repeat3 = this.parent.onMouseWheel.repeat;
var length3 = listeners3.length;
var i3 = 0;
while(i3 < length3) {
listeners3[i3](event.deltaX,event.deltaY);
if(!repeat3[i3]) {
this.parent.onMouseWheel.remove(listeners3[i3]);
length3--;
} else i3++;
}
}
}
,handleResize: function() {
var stretch = this.parent.fullscreen || this.setWidth == 0 && this.setHeight == 0;
if(this.element != null && (this.div == null || this.div != null && stretch)) {
if(stretch) {
if(this.parent.width != this.element.clientWidth || this.parent.height != this.element.clientHeight) {
this.parent.width = this.element.clientWidth;
this.parent.height = this.element.clientHeight;
if(this.canvas != null) {
if(this.element != this.canvas) {
this.canvas.width = this.element.clientWidth;
this.canvas.height = this.element.clientHeight;
}
} else {
this.div.style.width = this.element.clientWidth + "px";
this.div.style.height = this.element.clientHeight + "px";
}
}
} else {
var scaleX = this.element.clientWidth / this.setWidth;
var scaleY = this.element.clientHeight / this.setHeight;
var currentRatio = scaleX / scaleY;
var targetRatio = Math.min(scaleX,scaleY);
if(this.canvas != null) {
if(this.element != this.canvas) {
this.canvas.style.width = this.setWidth * targetRatio + "px";
this.canvas.style.height = this.setHeight * targetRatio + "px";
this.canvas.style.marginLeft = (this.element.clientWidth - this.setWidth * targetRatio) / 2 + "px";
this.canvas.style.marginTop = (this.element.clientHeight - this.setHeight * targetRatio) / 2 + "px";
}
} else {
this.div.style.width = this.setWidth * targetRatio + "px";
this.div.style.height = this.setHeight * targetRatio + "px";
this.div.style.marginLeft = (this.element.clientWidth - this.setWidth * targetRatio) / 2 + "px";
this.div.style.marginTop = (this.element.clientHeight - this.setHeight * targetRatio) / 2 + "px";
}
}
}
}
,handleTouchEvent: function(event) {
event.preventDefault();
var touch = event.changedTouches[0];
var id = touch.identifier;
var x = 0.0;
var y = 0.0;
if(this.element != null) {
if(this.canvas != null) {
var rect = this.canvas.getBoundingClientRect();
x = (touch.clientX - rect.left) * (this.parent.width / rect.width);
y = (touch.clientY - rect.top) * (this.parent.height / rect.height);
} else if(this.div != null) {
var rect1 = this.div.getBoundingClientRect();
x = touch.clientX - rect1.left;
y = touch.clientY - rect1.top;
} else {
var rect2 = this.element.getBoundingClientRect();
x = (touch.clientX - rect2.left) * (this.parent.width / rect2.width);
y = (touch.clientY - rect2.top) * (this.parent.height / rect2.height);
}
} else {
x = touch.clientX;
y = touch.clientY;
}
var _g = event.type;
switch(_g) {
case "touchstart":
var listeners = this.parent.onTouchStart.listeners;
var repeat = this.parent.onTouchStart.repeat;
var length = listeners.length;
var i = 0;
while(i < length) {
listeners[i](x,y,id);
if(!repeat[i]) {
this.parent.onTouchStart.remove(listeners[i]);
length--;
} else i++;
}
break;
case "touchmove":
var listeners1 = this.parent.onTouchMove.listeners;
var repeat1 = this.parent.onTouchMove.repeat;
var length1 = listeners1.length;
var i1 = 0;
while(i1 < length1) {
listeners1[i1](x,y,id);
if(!repeat1[i1]) {
this.parent.onTouchMove.remove(listeners1[i1]);
length1--;
} else i1++;
}
break;
case "touchend":
var listeners2 = this.parent.onTouchEnd.listeners;
var repeat2 = this.parent.onTouchEnd.repeat;
var length2 = listeners2.length;
var i2 = 0;
while(i2 < length2) {
listeners2[i2](x,y,id);
if(!repeat2[i2]) {
this.parent.onTouchEnd.remove(listeners2[i2]);
length2--;
} else i2++;
}
break;
default:
}
}
,move: function(x,y) {
}
,resize: function(width,height) {
}
,setIcon: function(image) {
}
,__class__: lime._backend.html5.HTML5Window
};
lime.app = {};
lime.app.Module = function() {
};
$hxClasses["lime.app.Module"] = lime.app.Module;
lime.app.Module.__name__ = ["lime","app","Module"];
lime.app.Module.prototype = {
__class__: lime.app.Module
};
lime.app.Application = function() {
this.onUpdate = new lime.app.Event();
lime.app.Module.call(this);
if(lime.app.Application.current == null) lime.app.Application.current = this;
this.renderers = new Array();
this.windows = new Array();
this.backend = new lime._backend.html5.HTML5Application(this);
this.onUpdate.add($bind(this,this.update));
};
$hxClasses["lime.app.Application"] = lime.app.Application;
lime.app.Application.__name__ = ["lime","app","Application"];
lime.app.Application.current = null;
lime.app.Application.__super__ = lime.app.Module;
lime.app.Application.prototype = $extend(lime.app.Module.prototype,{
addRenderer: function(renderer) {
renderer.onRender.add($bind(this,this.render));
renderer.onRenderContextLost.add($bind(this,this.onRenderContextLost));
renderer.onRenderContextRestored.add($bind(this,this.onRenderContextRestored));
this.renderers.push(renderer);
}
,addWindow: function(window) {
this.windows.push(window);
window.onKeyDown.add($bind(this,this.onKeyDown));
window.onKeyUp.add($bind(this,this.onKeyUp));
window.onMouseDown.add($bind(this,this.onMouseDown));
window.onMouseMove.add($bind(this,this.onMouseMove));
window.onMouseUp.add($bind(this,this.onMouseUp));
window.onMouseWheel.add($bind(this,this.onMouseWheel));
window.onTouchStart.add($bind(this,this.onTouchStart));
window.onTouchMove.add($bind(this,this.onTouchMove));
window.onTouchEnd.add($bind(this,this.onTouchEnd));
window.onWindowActivate.add($bind(this,this.onWindowActivate));
window.onWindowClose.add($bind(this,this.onWindowClose));
window.onWindowDeactivate.add($bind(this,this.onWindowDeactivate));
window.onWindowFocusIn.add($bind(this,this.onWindowFocusIn));
window.onWindowFocusOut.add($bind(this,this.onWindowFocusOut));
window.onWindowMove.add($bind(this,this.onWindowMove));
window.onWindowResize.add($bind(this,this.onWindowResize));
window.create(this);
}
,create: function(config) {
this.backend.create(config);
}
,exec: function() {
lime.app.Application.current = this;
return this.backend.exec();
}
,init: function(context) {
}
,onKeyDown: function(keyCode,modifier) {
}
,onKeyUp: function(keyCode,modifier) {
}
,onMouseDown: function(x,y,button) {
}
,onMouseMove: function(x,y,button) {
}
,onMouseUp: function(x,y,button) {
}
,onMouseWheel: function(deltaX,deltaY) {
}
,onRenderContextLost: function() {
}
,onRenderContextRestored: function(context) {
}
,onTouchEnd: function(x,y,id) {
}
,onTouchMove: function(x,y,id) {
}
,onTouchStart: function(x,y,id) {
}
,onWindowActivate: function() {
}
,onWindowClose: function() {
}
,onWindowDeactivate: function() {
}
,onWindowFocusIn: function() {
}
,onWindowFocusOut: function() {
}
,onWindowMove: function(x,y) {
}
,onWindowResize: function(width,height) {
}
,removeRenderer: function(renderer) {
if(renderer != null && HxOverrides.indexOf(this.renderers,renderer,0) > -1) HxOverrides.remove(this.renderers,renderer);
}
,removeWindow: function(window) {
if(window != null && HxOverrides.indexOf(this.windows,window,0) > -1) {
window.close();
HxOverrides.remove(this.windows,window);
}
}
,render: function(context) {
}
,update: function(deltaTime) {
}
,get_renderer: function() {
return this.renderers[0];
}
,get_window: function() {
return this.windows[0];
}
,__class__: lime.app.Application
,__properties__: {get_window:"get_window",get_renderer:"get_renderer"}
});
lime.app.Event = function() {
this.listeners = new Array();
this.priorities = new Array();
this.repeat = new Array();
};
$hxClasses["lime.app.Event"] = lime.app.Event;
lime.app.Event.__name__ = ["lime","app","Event"];
lime.app.Event.prototype = {
add: function(listener,once,priority) {
if(priority == null) priority = 0;
if(once == null) once = false;
var _g1 = 0;
var _g = this.priorities.length;
while(_g1 < _g) {
var i = _g1++;
if(priority > this.priorities[i]) {
this.listeners.splice(i,0,listener);
this.priorities.splice(i,0,priority);
this.repeat.splice(i,0,!once);
return;
}
}
this.listeners.push(listener);
this.priorities.push(priority);
this.repeat.push(!once);
}
,remove: function(listener) {
var index = HxOverrides.indexOf(this.listeners,listener,0);
if(index > -1) {
this.listeners.splice(index,1);
this.priorities.splice(index,1);
this.repeat.splice(index,1);
}
}
,__class__: lime.app.Event
};
lime.app.Preloader = function() {
this.total = 0;
this.loaded = 0;
};
$hxClasses["lime.app.Preloader"] = lime.app.Preloader;
lime.app.Preloader.__name__ = ["lime","app","Preloader"];
lime.app.Preloader.prototype = {
create: function(config) {
}
,load: function(urls,types) {
var url = null;
var _g1 = 0;
var _g = urls.length;
while(_g1 < _g) {
var i = _g1++;
url = urls[i];
var _g2 = types[i];
switch(_g2) {
case "IMAGE":
var image = new Image();
lime.app.Preloader.images.set(url,image);
image.onload = $bind(this,this.image_onLoad);
image.onerror = $bind(this,this.handleLoadError);
image.src = url + "?ver=" + GlobalVars.gameVersion;
this.total++;
break;
case "BINARY":
var loader = new lime.net.URLLoader();
loader.set_dataFormat(lime.net.URLLoaderDataFormat.BINARY);
lime.app.Preloader.loaders.set(url,loader);
this.total++;
break;
case "TEXT":
var urlLoader = { };
urlLoader.dataFormat = openfl.net.URLLoaderDataFormat.BINARY;
urlLoader.data = ApplicationMain.embeddedFiles.shift();
var value = urlLoader;
lime.app.Preloader.loaders.set(url,value);
this.total++;
break;
case "FONT":
this.total++;
this.loadFont(url);
break;
default:
}
}
var $it0 = lime.app.Preloader.loaders.keys();
while( $it0.hasNext() ) {
var url1 = $it0.next();
var loader1 = lime.app.Preloader.loaders.get(url1);
if(loader1.data == null) {
loader1.onComplete.add($bind(this,this.loader_onComplete));
loader1.load(new lime.net.URLRequest(url1));
} else this.loader_onComplete(null);
}
if(this.total == 0) this.start();
}
,loadFont: function(font) {
var _g = this;
if(window.document.fonts && window.document.fonts.load) window.document.fonts.load("1em '" + font + "'").then(function() {
_g.loaded++;
_g.update(_g.loaded,_g.total);
if(_g.loaded == _g.total) _g.start();
}); else {
var node = window.document.createElement("span");
node.innerHTML = "giItT1WQy@!-/#";
var style = node.style;
style.position = "absolute";
style.left = "-10000px";
style.top = "-10000px";
style.fontSize = "300px";
style.fontFamily = "sans-serif";
style.fontVariant = "normal";
style.fontStyle = "normal";
style.fontWeight = "normal";
style.letterSpacing = "0";
window.document.body.appendChild(node);
var width = node.offsetWidth;
style.fontFamily = "'" + font + "', sans-serif";
var interval = null;
var found = false;
var checkFont = function() {
if(node.offsetWidth != width) {
if(!found) {
found = true;
return false;
}
_g.loaded++;
if(interval != null) window.clearInterval(interval);
node.parentNode.removeChild(node);
node = null;
_g.update(_g.loaded,_g.total);
if(_g.loaded == _g.total) _g.start();
return true;
}
return false;
};
if(!checkFont()) interval = window.setInterval(checkFont,50);
}
}
,start: function() {
if(this.onComplete != null) this.onComplete();
}
,update: function(loaded,total) {
}
,image_onLoad: function(_) {
this.loaded++;
this.update(this.loaded,this.total);
if(this.loaded == this.total) this.start();
}
,handleLoadError: function(e) {
var target = e.target;
var src = target.src;
window.setTimeout(function() {
target.src = src;
},2000);
}
,loader_onComplete: function(loader) {
this.loaded++;
this.update(this.loaded,this.total);
if(this.loaded == this.total) this.start();
}
,__class__: lime.app.Preloader
};
lime.audio = {};
lime.audio.ALAudioContext = function() {
this.EXPONENT_DISTANCE_CLAMPED = 53254;
this.EXPONENT_DISTANCE = 53253;
this.LINEAR_DISTANCE_CLAMPED = 53252;
this.LINEAR_DISTANCE = 53251;
this.INVERSE_DISTANCE_CLAMPED = 53250;
this.INVERSE_DISTANCE = 53249;
this.DISTANCE_MODEL = 53248;
this.DOPPLER_VELOCITY = 49153;
this.SPEED_OF_SOUND = 49155;
this.DOPPLER_FACTOR = 49152;
this.EXTENSIONS = 45060;
this.RENDERER = 45059;
this.VERSION = 45058;
this.VENDOR = 45057;
this.OUT_OF_MEMORY = 40965;
this.INVALID_OPERATION = 40964;
this.INVALID_VALUE = 40963;
this.INVALID_ENUM = 40962;
this.INVALID_NAME = 40961;
this.NO_ERROR = 0;
this.SIZE = 8196;
this.CHANNELS = 8195;
this.BITS = 8194;
this.FREQUENCY = 8193;
this.FORMAT_STEREO16 = 4355;
this.FORMAT_STEREO8 = 4354;
this.FORMAT_MONO16 = 4353;
this.FORMAT_MONO8 = 4352;
this.UNDETERMINED = 4144;
this.STREAMING = 4137;
this.STATIC = 4136;
this.SOURCE_TYPE = 4135;
this.BYTE_OFFSET = 4134;
this.SAMPLE_OFFSET = 4133;
this.SEC_OFFSET = 4132;
this.MAX_DISTANCE = 4131;
this.CONE_OUTER_GAIN = 4130;
this.ROLLOFF_FACTOR = 4129;
this.REFERENCE_DISTANCE = 4128;
this.BUFFERS_PROCESSED = 4118;
this.BUFFERS_QUEUED = 4117;
this.STOPPED = 4116;
this.PAUSED = 4115;
this.PLAYING = 4114;
this.INITIAL = 4113;
this.SOURCE_STATE = 4112;
this.ORIENTATION = 4111;
this.MAX_GAIN = 4110;
this.MIN_GAIN = 4109;
this.GAIN = 4106;
this.BUFFER = 4105;
this.LOOPING = 4103;
this.VELOCITY = 4102;
this.DIRECTION = 4101;
this.POSITION = 4100;
this.PITCH = 4099;
this.CONE_OUTER_ANGLE = 4098;
this.CONE_INNER_ANGLE = 4097;
this.SOURCE_RELATIVE = 514;
this.TRUE = 1;
this.FALSE = 0;
this.NONE = 0;
};
$hxClasses["lime.audio.ALAudioContext"] = lime.audio.ALAudioContext;
lime.audio.ALAudioContext.__name__ = ["lime","audio","ALAudioContext"];
lime.audio.ALAudioContext.prototype = {
bufferData: function(buffer,format,data,size,freq) {
lime.audio.openal.AL.bufferData(buffer,format,data,size,freq);
}
,buffer3f: function(buffer,param,value1,value2,value3) {
lime.audio.openal.AL.buffer3f(buffer,param,value1,value2,value3);
}
,buffer3i: function(buffer,param,value1,value2,value3) {
lime.audio.openal.AL.buffer3i(buffer,param,value1,value2,value3);
}
,bufferf: function(buffer,param,value) {
lime.audio.openal.AL.bufferf(buffer,param,value);
}
,bufferfv: function(buffer,param,values) {
lime.audio.openal.AL.bufferfv(buffer,param,values);
}
,bufferi: function(buffer,param,value) {
lime.audio.openal.AL.bufferi(buffer,param,value);
}
,bufferiv: function(buffer,param,values) {
lime.audio.openal.AL.bufferiv(buffer,param,values);
}
,deleteBuffer: function(buffer) {
lime.audio.openal.AL.deleteBuffer(buffer);
}
,deleteBuffers: function(buffers) {
lime.audio.openal.AL.deleteBuffers(buffers);
}
,deleteSource: function(source) {
lime.audio.openal.AL.deleteSource(source);
}
,deleteSources: function(sources) {
lime.audio.openal.AL.deleteSources(sources);
}
,disable: function(capability) {
lime.audio.openal.AL.disable(capability);
}
,distanceModel: function(distanceModel) {
lime.audio.openal.AL.distanceModel(distanceModel);
}
,dopplerFactor: function(value) {
lime.audio.openal.AL.dopplerFactor(value);
}
,dopplerVelocity: function(value) {
lime.audio.openal.AL.dopplerVelocity(value);
}
,enable: function(capability) {
lime.audio.openal.AL.enable(capability);
}
,genSource: function() {
return lime.audio.openal.AL.genSource();
}
,genSources: function(n) {
return lime.audio.openal.AL.genSources(n);
}
,genBuffer: function() {
return lime.audio.openal.AL.genBuffer();
}
,genBuffers: function(n) {
return lime.audio.openal.AL.genBuffers(n);
}
,getBoolean: function(param) {
return lime.audio.openal.AL.getBoolean(param);
}
,getBooleanv: function(param,count) {
if(count == null) count = 1;
return lime.audio.openal.AL.getBooleanv(param,count);
}
,getBuffer3f: function(buffer,param) {
return lime.audio.openal.AL.getBuffer3f(buffer,param);
}
,getBuffer3i: function(buffer,param) {
return lime.audio.openal.AL.getBuffer3i(buffer,param);
}
,getBufferf: function(buffer,param) {
return lime.audio.openal.AL.getBufferf(buffer,param);
}
,getBufferfv: function(buffer,param,count) {
if(count == null) count = 1;
return lime.audio.openal.AL.getBufferfv(buffer,param,count);
}
,getBufferi: function(buffer,param) {
return lime.audio.openal.AL.getBufferi(buffer,param);
}
,getBufferiv: function(buffer,param,count) {
if(count == null) count = 1;
return lime.audio.openal.AL.getBufferiv(buffer,param,count);
}
,getDouble: function(param) {
return lime.audio.openal.AL.getDouble(param);
}
,getDoublev: function(param,count) {
if(count == null) count = 1;
return lime.audio.openal.AL.getDoublev(param,count);
}
,getEnumValue: function(ename) {
return lime.audio.openal.AL.getEnumValue(ename);
}
,getError: function() {
return lime.audio.openal.AL.getError();
}
,getErrorString: function() {
return lime.audio.openal.AL.getErrorString();
}
,getFloat: function(param) {
return lime.audio.openal.AL.getFloat(param);
}
,getFloatv: function(param,count) {
if(count == null) count = 1;
return lime.audio.openal.AL.getFloatv(param,count);
}
,getInteger: function(param) {
return lime.audio.openal.AL.getInteger(param);
}
,getIntegerv: function(param,count) {
if(count == null) count = 1;
return lime.audio.openal.AL.getIntegerv(param,count);
}
,getListener3f: function(param) {
return lime.audio.openal.AL.getListener3f(param);
}
,getListener3i: function(param) {
return lime.audio.openal.AL.getListener3i(param);
}
,getListenerf: function(param) {
return lime.audio.openal.AL.getListenerf(param);
}
,getListenerfv: function(param,count) {
if(count == null) count = 1;
return lime.audio.openal.AL.getListenerfv(param,count);
}
,getListeneri: function(param) {
return lime.audio.openal.AL.getListeneri(param);
}
,getListeneriv: function(param,count) {
if(count == null) count = 1;
return lime.audio.openal.AL.getListeneriv(param,count);
}
,getProcAddress: function(fname) {
return lime.audio.openal.AL.getProcAddress(fname);
}
,getSource3f: function(source,param) {
return lime.audio.openal.AL.getSource3f(source,param);
}
,getSourcef: function(source,param) {
return lime.audio.openal.AL.getSourcef(source,param);
}
,getSource3i: function(source,param) {
return lime.audio.openal.AL.getSource3i(source,param);
}
,getSourcefv: function(source,param) {
return lime.audio.openal.AL.getSourcefv(source,param);
}
,getSourcei: function(source,param) {
return lime.audio.openal.AL.getSourcei(source,param);
}
,getSourceiv: function(source,param,count) {
if(count == null) count = 1;
return lime.audio.openal.AL.getSourceiv(source,param,count);
}
,getString: function(param) {
return lime.audio.openal.AL.getString(param);
}
,isBuffer: function(buffer) {
return lime.audio.openal.AL.isBuffer(buffer);
}
,isEnabled: function(capability) {
return lime.audio.openal.AL.isEnabled(capability);
}
,isExtensionPresent: function(extname) {
return lime.audio.openal.AL.isExtensionPresent(extname);
}
,isSource: function(source) {
return lime.audio.openal.AL.isSource(source);
}
,listener3f: function(param,value1,value2,value3) {
lime.audio.openal.AL.listener3f(param,value1,value2,value3);
}
,listener3i: function(param,value1,value2,value3) {
lime.audio.openal.AL.listener3i(param,value1,value2,value3);
}
,listenerf: function(param,value) {
lime.audio.openal.AL.listenerf(param,value);
}
,listenerfv: function(param,values) {
lime.audio.openal.AL.listenerfv(param,values);
}
,listeneri: function(param,value) {
lime.audio.openal.AL.listeneri(param,value);
}
,listeneriv: function(param,values) {
lime.audio.openal.AL.listeneriv(param,values);
}
,source3f: function(source,param,value1,value2,value3) {
lime.audio.openal.AL.source3f(source,param,value1,value2,value3);
}
,source3i: function(source,param,value1,value2,value3) {
lime.audio.openal.AL.source3i(source,param,value1,value2,value3);
}
,sourcef: function(source,param,value) {
lime.audio.openal.AL.sourcef(source,param,value);
}
,sourcefv: function(source,param,values) {
lime.audio.openal.AL.sourcefv(source,param,values);
}
,sourcei: function(source,param,value) {
lime.audio.openal.AL.sourcei(source,param,value);
}
,sourceiv: function(source,param,values) {
lime.audio.openal.AL.sourceiv(source,param,values);
}
,sourcePlay: function(source) {
lime.audio.openal.AL.sourcePlay(source);
}
,sourcePlayv: function(sources) {
lime.audio.openal.AL.sourcePlayv(sources);
}
,sourceStop: function(source) {
lime.audio.openal.AL.sourceStop(source);
}
,sourceStopv: function(sources) {
lime.audio.openal.AL.sourceStopv(sources);
}
,sourceRewind: function(source) {
lime.audio.openal.AL.sourceRewind(source);
}
,sourceRewindv: function(sources) {
lime.audio.openal.AL.sourceRewindv(sources);
}
,sourcePause: function(source) {
lime.audio.openal.AL.sourcePause(source);
}
,sourcePausev: function(sources) {
lime.audio.openal.AL.sourcePausev(sources);
}
,sourceQueueBuffer: function(source,buffer) {
lime.audio.openal.AL.sourceQueueBuffer(source,buffer);
}
,sourceQueueBuffers: function(source,nb,buffers) {
lime.audio.openal.AL.sourceQueueBuffers(source,nb,buffers);
}
,sourceUnqueueBuffer: function(source) {
return lime.audio.openal.AL.sourceUnqueueBuffer(source);
}
,sourceUnqueueBuffers: function(source,nb) {
return lime.audio.openal.AL.sourceUnqueueBuffers(source,nb);
}
,speedOfSound: function(value) {
lime.audio.openal.AL.speedOfSound(value);
}
,__class__: lime.audio.ALAudioContext
};
lime.audio.ALCAudioContext = function() {
this.ALL_DEVICES_SPECIFIER = 4115;
this.DEFAULT_ALL_DEVICES_SPECIFIER = 4114;
this.ENUMERATE_ALL_EXT = 1;
this.EXTENSIONS = 4102;
this.DEVICE_SPECIFIER = 4101;
this.DEFAULT_DEVICE_SPECIFIER = 4100;
this.ALL_ATTRIBUTES = 4099;
this.ATTRIBUTES_SIZE = 4098;
this.OUT_OF_MEMORY = 40965;
this.INVALID_VALUE = 40964;
this.INVALID_ENUM = 40963;
this.INVALID_CONTEXT = 40962;
this.INVALID_DEVICE = 40961;
this.NO_ERROR = 0;
this.STEREO_SOURCES = 4113;
this.MONO_SOURCES = 4112;
this.SYNC = 4105;
this.REFRESH = 4104;
this.FREQUENCY = 4103;
this.TRUE = 1;
this.FALSE = 0;
};
$hxClasses["lime.audio.ALCAudioContext"] = lime.audio.ALCAudioContext;
lime.audio.ALCAudioContext.__name__ = ["lime","audio","ALCAudioContext"];
lime.audio.ALCAudioContext.prototype = {
closeDevice: function(device) {
return lime.audio.openal.ALC.closeDevice(device);
}
,createContext: function(device,attrlist) {
return lime.audio.openal.ALC.createContext(device,attrlist);
}
,destroyContext: function(context) {
lime.audio.openal.ALC.destroyContext(context);
}
,getContextsDevice: function(context) {
return lime.audio.openal.ALC.getContextsDevice(context);
}
,getCurrentContext: function() {
return lime.audio.openal.ALC.getCurrentContext();
}
,getError: function(device) {
return lime.audio.openal.ALC.getError(device);
}
,getErrorString: function(device) {
return lime.audio.openal.ALC.getErrorString(device);
}
,getIntegerv: function(device,param,count) {
if(count == null) count = 1;
return lime.audio.openal.ALC.getIntegerv(device,param,count);
}
,getString: function(device,param) {
return lime.audio.openal.ALC.getString(device,param);
}
,makeContextCurrent: function(context) {
return lime.audio.openal.ALC.makeContextCurrent(context);
}
,openDevice: function(deviceName) {
return lime.audio.openal.ALC.openDevice(deviceName);
}
,processContext: function(context) {
lime.audio.openal.ALC.processContext(context);
}
,suspendContext: function(context) {
lime.audio.openal.ALC.suspendContext(context);
}
,__class__: lime.audio.ALCAudioContext
};
lime.audio.AudioBuffer = function() {
this.id = 0;
};
$hxClasses["lime.audio.AudioBuffer"] = lime.audio.AudioBuffer;
lime.audio.AudioBuffer.__name__ = ["lime","audio","AudioBuffer"];
lime.audio.AudioBuffer.fromBytes = function(bytes) {
return null;
};
lime.audio.AudioBuffer.fromFile = function(path) {
return null;
};
lime.audio.AudioBuffer.fromURL = function(url,handler) {
};
lime.audio.AudioBuffer.prototype = {
dispose: function() {
}
,__class__: lime.audio.AudioBuffer
};
lime.audio.AudioContext = $hxClasses["lime.audio.AudioContext"] = { __ename__ : ["lime","audio","AudioContext"], __constructs__ : ["OPENAL","HTML5","WEB","FLASH","CUSTOM"] };
lime.audio.AudioContext.OPENAL = function(alc,al) { var $x = ["OPENAL",0,alc,al]; $x.__enum__ = lime.audio.AudioContext; $x.toString = $estr; return $x; };
lime.audio.AudioContext.HTML5 = function(context) { var $x = ["HTML5",1,context]; $x.__enum__ = lime.audio.AudioContext; $x.toString = $estr; return $x; };
lime.audio.AudioContext.WEB = function(context) { var $x = ["WEB",2,context]; $x.__enum__ = lime.audio.AudioContext; $x.toString = $estr; return $x; };
lime.audio.AudioContext.FLASH = function(context) { var $x = ["FLASH",3,context]; $x.__enum__ = lime.audio.AudioContext; $x.toString = $estr; return $x; };
lime.audio.AudioContext.CUSTOM = function(data) { var $x = ["CUSTOM",4,data]; $x.__enum__ = lime.audio.AudioContext; $x.toString = $estr; return $x; };
lime.audio.AudioManager = function() { };
$hxClasses["lime.audio.AudioManager"] = lime.audio.AudioManager;
lime.audio.AudioManager.__name__ = ["lime","audio","AudioManager"];
lime.audio.AudioManager.context = null;
lime.audio.AudioManager.init = function(context) {
if(lime.audio.AudioManager.context == null) {
if(context == null) try {
window.AudioContext = window.AudioContext || window.webkitAudioContext;;
lime.audio.AudioManager.context = lime.audio.AudioContext.WEB(new AudioContext ());
} catch( e ) {
lime.audio.AudioManager.context = lime.audio.AudioContext.HTML5(new lime.audio.HTML5AudioContext());
} else lime.audio.AudioManager.context = context;
}
};
lime.audio.AudioManager.resume = function() {
if(lime.audio.AudioManager.context != null) {
var _g = lime.audio.AudioManager.context;
switch(_g[1]) {
case 0:
var al = _g[3];
var alc = _g[2];
alc.processContext(alc.getCurrentContext());
break;
default:
}
}
};
lime.audio.AudioManager.shutdown = function() {
if(lime.audio.AudioManager.context != null) {
var _g = lime.audio.AudioManager.context;
switch(_g[1]) {
case 0:
var al = _g[3];
var alc = _g[2];
var currentContext = alc.getCurrentContext();
if(currentContext != null) {
var device = alc.getContextsDevice(currentContext);
alc.makeContextCurrent(null);
alc.destroyContext(currentContext);
alc.closeDevice(device);
}
break;
default:
}
}
};
lime.audio.AudioManager.suspend = function() {
if(lime.audio.AudioManager.context != null) {
var _g = lime.audio.AudioManager.context;
switch(_g[1]) {
case 0:
var al = _g[3];
var alc = _g[2];
alc.suspendContext(alc.getCurrentContext());
break;
default:
}
}
};
lime.audio.AudioSource = function(buffer) {
this.onComplete = new lime.app.Event();
this.buffer = buffer;
this.id = 0;
this.pauseTime = 0;
if(buffer != null) this.init();
};
$hxClasses["lime.audio.AudioSource"] = lime.audio.AudioSource;
lime.audio.AudioSource.__name__ = ["lime","audio","AudioSource"];
lime.audio.AudioSource.prototype = {
init: function() {
{
var _g = lime.audio.AudioManager.context;
switch(_g[1]) {
case 0:
var al = _g[3];
var alc = _g[2];
if((function($this) {
var $r;
var $int = $this.buffer.id;
$r = $int < 0?4294967296.0 + $int:$int + 0.0;
return $r;
}(this)) == 0) {
this.buffer.id = al.genBuffer();
var format = 0;
if(this.buffer.channels == 1) {
if(this.buffer.bitsPerSample == 8) format = al.FORMAT_MONO8; else if(this.buffer.bitsPerSample == 16) format = al.FORMAT_MONO16;
} else if(this.buffer.channels == 2) {
if(this.buffer.bitsPerSample == 8) format = al.FORMAT_STEREO8; else if(this.buffer.bitsPerSample == 16) format = al.FORMAT_STEREO16;
}
al.bufferData(this.buffer.id,format,this.buffer.data,this.buffer.data.length,this.buffer.sampleRate);
}
this.id = al.genSource();
al.sourcei(this.id,al.BUFFER,this.buffer.id);
break;
default:
}
}
}
,play: function() {
}
,pause: function() {
}
,stop: function() {
}
,get_gain: function() {
return 1;
}
,set_gain: function(value) {
return 1;
}
,get_timeOffset: function() {
return 0;
}
,set_timeOffset: function(value) {
return 0;
}
,__class__: lime.audio.AudioSource
,__properties__: {set_timeOffset:"set_timeOffset",get_timeOffset:"get_timeOffset",set_gain:"set_gain",get_gain:"get_gain"}
};
lime.audio.FlashAudioContext = function() {
};
$hxClasses["lime.audio.FlashAudioContext"] = lime.audio.FlashAudioContext;
lime.audio.FlashAudioContext.__name__ = ["lime","audio","FlashAudioContext"];
lime.audio.FlashAudioContext.prototype = {
createBuffer: function(stream,context) {
return null;
}
,getBytesLoaded: function(buffer) {
return 0;
}
,getBytesTotal: function(buffer) {
return 0;
}
,getID3: function(buffer) {
return null;
}
,getIsBuffering: function(buffer) {
return false;
}
,getIsURLInaccessible: function(buffer) {
return false;
}
,getLength: function(buffer) {
return 0;
}
,getURL: function(buffer) {
return null;
}
,close: function(buffer) {
}
,extract: function(buffer,target,length,startPosition) {
if(startPosition == null) startPosition = -1;
return 0;
}
,load: function(buffer,stream,context) {
}
,loadCompressedDataFromByteArray: function(buffer,bytes,bytesLength) {
}
,loadPCMFromByteArray: function(buffer,bytes,samples,format,stereo,sampleRate) {
if(sampleRate == null) sampleRate = 44100;
if(stereo == null) stereo = true;
}
,play: function(buffer,startTime,loops,sndTransform) {
if(loops == null) loops = 0;
if(startTime == null) startTime = 0;
return null;
}
,__class__: lime.audio.FlashAudioContext
};
lime.audio.HTML5AudioContext = function() {
this.NETWORK_NO_SOURCE = 3;
this.NETWORK_LOADING = 2;
this.NETWORK_IDLE = 1;
this.NETWORK_EMPTY = 0;
this.HAVE_NOTHING = 0;
this.HAVE_METADATA = 1;
this.HAVE_FUTURE_DATA = 3;
this.HAVE_ENOUGH_DATA = 4;
this.HAVE_CURRENT_DATA = 2;
};
$hxClasses["lime.audio.HTML5AudioContext"] = lime.audio.HTML5AudioContext;
lime.audio.HTML5AudioContext.__name__ = ["lime","audio","HTML5AudioContext"];
lime.audio.HTML5AudioContext.prototype = {
canPlayType: function(buffer,type) {
if(buffer.src != null) return buffer.src.canPlayType(type);
return null;
}
,createBuffer: function(urlString) {
var buffer = new lime.audio.AudioBuffer();
buffer.src = new Audio();
buffer.src.src = urlString;
return buffer;
}
,getAudioDecodedByteCount: function(buffer) {
if(buffer.src != null) return buffer.src.audioDecodedByteCount;
return 0;
}
,getAutoplay: function(buffer) {
if(buffer.src != null) return buffer.src.autoplay;
return false;
}
,getBuffered: function(buffer) {
if(buffer.src != null) return buffer.src.buffered;
return null;
}
,getController: function(buffer) {
if(buffer.src != null) return buffer.src.controller;
return null;
}
,getCurrentSrc: function(buffer) {
if(buffer.src != null) return buffer.src.currentSrc;
return null;
}
,getCurrentTime: function(buffer) {
if(buffer.src != null) return buffer.src.currentTime;
return 0;
}
,getDefaultPlaybackRate: function(buffer) {
if(buffer.src != null) return buffer.src.defaultPlaybackRate;
return 1;
}
,getDuration: function(buffer) {
if(buffer.src != null) return buffer.src.duration;
return 0;
}
,getEnded: function(buffer) {
if(buffer.src != null) return buffer.src.ended;
return false;
}
,getError: function(buffer) {
if(buffer.src != null) return buffer.src.error;
return null;
}
,getInitialTime: function(buffer) {
if(buffer.src != null) return buffer.src.initialTime;
return 0;
}
,getLoop: function(buffer) {
if(buffer.src != null) return buffer.src.loop;
return false;
}
,getMediaGroup: function(buffer) {
if(buffer.src != null) return buffer.src.mediaGroup;
return null;
}
,getMuted: function(buffer) {
if(buffer.src != null) return buffer.src.muted;
return false;
}
,getNetworkState: function(buffer) {
if(buffer.src != null) return buffer.src.networkState;
return 0;
}
,getPaused: function(buffer) {
if(buffer.src != null) return buffer.src.paused;
return false;
}
,getPlaybackRate: function(buffer) {
if(buffer.src != null) return buffer.src.playbackRate;
return 1;
}
,getPlayed: function(buffer) {
if(buffer.src != null) return buffer.src.played;
return null;
}
,getPreload: function(buffer) {
if(buffer.src != null) return buffer.src.preload;
return null;
}
,getReadyState: function(buffer) {
if(buffer.src != null) return buffer.src.readyState;
return 0;
}
,getSeekable: function(buffer) {
if(buffer.src != null) return buffer.src.seekable;
return null;
}
,getSeeking: function(buffer) {
if(buffer.src != null) return buffer.src.seeking;
return false;
}
,getSrc: function(buffer) {
if(buffer.src != null) return buffer.src.src;
return null;
}
,getStartTime: function(buffer) {
if(buffer.src != null) return buffer.src.playbackRate;
return 0;
}
,getVolume: function(buffer) {
if(buffer.src != null) return buffer.src.volume;
return 1;
}
,load: function(buffer) {
if(buffer.src != null) return buffer.src.load();
}
,pause: function(buffer) {
if(buffer.src != null) return buffer.src.pause();
}
,play: function(buffer) {
if(buffer.src != null) return buffer.src.play();
}
,setAutoplay: function(buffer,value) {
if(buffer.src != null) buffer.src.autoplay = value;
}
,setController: function(buffer,value) {
if(buffer.src != null) buffer.src.controller = value;
}
,setCurrentTime: function(buffer,value) {
if(buffer.src != null) buffer.src.currentTime = value;
}
,setDefaultPlaybackRate: function(buffer,value) {
if(buffer.src != null) buffer.src.defaultPlaybackRate = value;
}
,setLoop: function(buffer,value) {
if(buffer.src != null) buffer.src.loop = value;
}
,setMediaGroup: function(buffer,value) {
if(buffer.src != null) buffer.src.mediaGroup = value;
}
,setMuted: function(buffer,value) {
if(buffer.src != null) buffer.src.muted = value;
}
,setPlaybackRate: function(buffer,value) {
if(buffer.src != null) buffer.src.playbackRate = value;
}
,setPreload: function(buffer,value) {
if(buffer.src != null) buffer.src.preload = value;
}
,setSrc: function(buffer,value) {
if(buffer.src != null) buffer.src.src = value;
}
,setVolume: function(buffer,value) {
if(buffer.src != null) buffer.src.volume = value;
}
,__class__: lime.audio.HTML5AudioContext
};
lime.audio.openal = {};
lime.audio.openal.AL = function() { };
$hxClasses["lime.audio.openal.AL"] = lime.audio.openal.AL;
lime.audio.openal.AL.__name__ = ["lime","audio","openal","AL"];
lime.audio.openal.AL.bufferData = function(buffer,format,data,size,freq) {
};
lime.audio.openal.AL.buffer3f = function(buffer,param,value1,value2,value3) {
};
lime.audio.openal.AL.buffer3i = function(buffer,param,value1,value2,value3) {
};
lime.audio.openal.AL.bufferf = function(buffer,param,value) {
};
lime.audio.openal.AL.bufferfv = function(buffer,param,values) {
};
lime.audio.openal.AL.bufferi = function(buffer,param,value) {
};
lime.audio.openal.AL.bufferiv = function(buffer,param,values) {
};
lime.audio.openal.AL.deleteBuffer = function(buffer) {
};
lime.audio.openal.AL.deleteBuffers = function(buffers) {
};
lime.audio.openal.AL.deleteSource = function(source) {
};
lime.audio.openal.AL.deleteSources = function(sources) {
};
lime.audio.openal.AL.disable = function(capability) {
};
lime.audio.openal.AL.distanceModel = function(distanceModel) {
};
lime.audio.openal.AL.dopplerFactor = function(value) {
};
lime.audio.openal.AL.dopplerVelocity = function(value) {
};
lime.audio.openal.AL.enable = function(capability) {
};
lime.audio.openal.AL.genSource = function() {
return 0;
};
lime.audio.openal.AL.genSources = function(n) {
return null;
};
lime.audio.openal.AL.genBuffer = function() {
return 0;
};
lime.audio.openal.AL.genBuffers = function(n) {
return null;
};
lime.audio.openal.AL.getBoolean = function(param) {
return false;
};
lime.audio.openal.AL.getBooleanv = function(param,count) {
if(count == null) count = 1;
return null;
};
lime.audio.openal.AL.getBuffer3f = function(buffer,param) {
return null;
};
lime.audio.openal.AL.getBuffer3i = function(buffer,param) {
return null;
};
lime.audio.openal.AL.getBufferf = function(buffer,param) {
return 0;
};
lime.audio.openal.AL.getBufferfv = function(buffer,param,count) {
if(count == null) count = 1;
return null;
};
lime.audio.openal.AL.getBufferi = function(buffer,param) {
return 0;
};
lime.audio.openal.AL.getBufferiv = function(buffer,param,count) {
if(count == null) count = 1;
return null;
};
lime.audio.openal.AL.getDouble = function(param) {
return 0;
};
lime.audio.openal.AL.getDoublev = function(param,count) {
if(count == null) count = 1;
return null;
};
lime.audio.openal.AL.getEnumValue = function(ename) {
return 0;
};
lime.audio.openal.AL.getError = function() {
return 0;
};
lime.audio.openal.AL.getErrorString = function() {
var _g = lime.audio.openal.AL.getError();
switch(_g) {
case 40961:
return "INVALID_NAME: Invalid parameter name";
case 40962:
return "INVALID_ENUM: Invalid enum value";
case 40963:
return "INVALID_VALUE: Invalid parameter value";
case 40964:
return "INVALID_OPERATION: Illegal operation or call";
case 40965:
return "OUT_OF_MEMORY: OpenAL has run out of memory";
default:
return "";
}
};
lime.audio.openal.AL.getFloat = function(param) {
return 0;
};
lime.audio.openal.AL.getFloatv = function(param,count) {
if(count == null) count = 1;
return null;
};
lime.audio.openal.AL.getInteger = function(param) {
return 0;
};
lime.audio.openal.AL.getIntegerv = function(param,count) {
if(count == null) count = 1;
return null;
};
lime.audio.openal.AL.getListener3f = function(param) {
return null;
};
lime.audio.openal.AL.getListener3i = function(param) {
return null;
};
lime.audio.openal.AL.getListenerf = function(param) {
return 0;
};
lime.audio.openal.AL.getListenerfv = function(param,count) {
if(count == null) count = 1;
return null;
};
lime.audio.openal.AL.getListeneri = function(param) {
return 0;
};
lime.audio.openal.AL.getListeneriv = function(param,count) {
if(count == null) count = 1;
return null;
};
lime.audio.openal.AL.getProcAddress = function(fname) {
return null;
};
lime.audio.openal.AL.getSource3f = function(source,param) {
return null;
};
lime.audio.openal.AL.getSourcef = function(source,param) {
return 0;
};
lime.audio.openal.AL.getSource3i = function(source,param) {
return null;
};
lime.audio.openal.AL.getSourcefv = function(source,param) {
return null;
};
lime.audio.openal.AL.getSourcei = function(source,param) {
return 0;
};
lime.audio.openal.AL.getSourceiv = function(source,param,count) {
if(count == null) count = 1;
return null;
};
lime.audio.openal.AL.getString = function(param) {
return null;
};
lime.audio.openal.AL.isBuffer = function(buffer) {
return false;
};
lime.audio.openal.AL.isEnabled = function(capability) {
return false;
};
lime.audio.openal.AL.isExtensionPresent = function(extname) {
return false;
};
lime.audio.openal.AL.isSource = function(source) {
return false;
};
lime.audio.openal.AL.listener3f = function(param,value1,value2,value3) {
};
lime.audio.openal.AL.listener3i = function(param,value1,value2,value3) {
};
lime.audio.openal.AL.listenerf = function(param,value) {
};
lime.audio.openal.AL.listenerfv = function(param,values) {
};
lime.audio.openal.AL.listeneri = function(param,value) {
};
lime.audio.openal.AL.listeneriv = function(param,values) {
};
lime.audio.openal.AL.source3f = function(source,param,value1,value2,value3) {
};
lime.audio.openal.AL.source3i = function(source,param,value1,value2,value3) {
};
lime.audio.openal.AL.sourcef = function(source,param,value) {
};
lime.audio.openal.AL.sourcefv = function(source,param,values) {
};
lime.audio.openal.AL.sourcei = function(source,param,value) {
};
lime.audio.openal.AL.sourceiv = function(source,param,values) {
};
lime.audio.openal.AL.sourcePlay = function(source) {
};
lime.audio.openal.AL.sourcePlayv = function(sources) {
};
lime.audio.openal.AL.sourceStop = function(source) {
};
lime.audio.openal.AL.sourceStopv = function(sources) {
};
lime.audio.openal.AL.sourceRewind = function(source) {
};
lime.audio.openal.AL.sourceRewindv = function(sources) {
};
lime.audio.openal.AL.sourcePause = function(source) {
};
lime.audio.openal.AL.sourcePausev = function(sources) {
};
lime.audio.openal.AL.sourceQueueBuffer = function(source,buffer) {
};
lime.audio.openal.AL.sourceQueueBuffers = function(source,nb,buffers) {
};
lime.audio.openal.AL.sourceUnqueueBuffer = function(source) {
return 0;
};
lime.audio.openal.AL.sourceUnqueueBuffers = function(source,nb) {
return null;
};
lime.audio.openal.AL.speedOfSound = function(value) {
};
lime.audio.openal.ALC = function() { };
$hxClasses["lime.audio.openal.ALC"] = lime.audio.openal.ALC;
lime.audio.openal.ALC.__name__ = ["lime","audio","openal","ALC"];
lime.audio.openal.ALC.closeDevice = function(device) {
return false;
};
lime.audio.openal.ALC.createContext = function(device,attrlist) {
return null;
};
lime.audio.openal.ALC.destroyContext = function(context) {
};
lime.audio.openal.ALC.getContextsDevice = function(context) {
return null;
};
lime.audio.openal.ALC.getCurrentContext = function() {
return null;
};
lime.audio.openal.ALC.getError = function(device) {
return 0;
};
lime.audio.openal.ALC.getErrorString = function(device) {
var _g = lime.audio.openal.ALC.getError(device);
switch(_g) {
case 40961:
return "INVALID_DEVICE: Invalid device (or no device?)";
case 40962:
return "INVALID_CONTEXT: Invalid context (or no context?)";
case 40963:
return "INVALID_ENUM: Invalid enum value";
case 40964:
return "INVALID_VALUE: Invalid param value";
case 40965:
return "OUT_OF_MEMORY: OpenAL has run out of memory";
default:
return "";
}
};
lime.audio.openal.ALC.getIntegerv = function(device,param,size) {
return null;
};
lime.audio.openal.ALC.getString = function(device,param) {
return null;
};
lime.audio.openal.ALC.makeContextCurrent = function(context) {
return false;
};
lime.audio.openal.ALC.openDevice = function(deviceName) {
return null;
};
lime.audio.openal.ALC.processContext = function(context) {
};
lime.audio.openal.ALC.suspendContext = function(context) {
};
lime.audio.openal._ALContext = {};
lime.audio.openal._ALContext.ALContext_Impl_ = function() { };
$hxClasses["lime.audio.openal._ALContext.ALContext_Impl_"] = lime.audio.openal._ALContext.ALContext_Impl_;
lime.audio.openal._ALContext.ALContext_Impl_.__name__ = ["lime","audio","openal","_ALContext","ALContext_Impl_"];
lime.audio.openal._ALContext.ALContext_Impl_._new = function(handle) {
return handle;
};
lime.audio.openal._ALDevice = {};
lime.audio.openal._ALDevice.ALDevice_Impl_ = function() { };
$hxClasses["lime.audio.openal._ALDevice.ALDevice_Impl_"] = lime.audio.openal._ALDevice.ALDevice_Impl_;
lime.audio.openal._ALDevice.ALDevice_Impl_.__name__ = ["lime","audio","openal","_ALDevice","ALDevice_Impl_"];
lime.audio.openal._ALDevice.ALDevice_Impl_._new = function(handle) {
return handle;
};
lime.graphics = {};
lime.graphics.ConsoleRenderContext = function() {
};
$hxClasses["lime.graphics.ConsoleRenderContext"] = lime.graphics.ConsoleRenderContext;
lime.graphics.ConsoleRenderContext.__name__ = ["lime","graphics","ConsoleRenderContext"];
lime.graphics.ConsoleRenderContext.prototype = {
clear: function() {
}
,clearColor: function(r,g,b,a) {
}
,clearDepth: function(depth) {
}
,clearStencil: function(stencil) {
}
,__class__: lime.graphics.ConsoleRenderContext
};
lime.graphics.FlashRenderContext = function() {
};
$hxClasses["lime.graphics.FlashRenderContext"] = lime.graphics.FlashRenderContext;
lime.graphics.FlashRenderContext.__name__ = ["lime","graphics","FlashRenderContext"];
lime.graphics.FlashRenderContext.prototype = {
addChild: function(child) {
return null;
}
,addChildAt: function(child,index) {
return null;
}
,addEventListener: function(type,listener,useCapture,priority,useWeakReference) {
if(useWeakReference == null) useWeakReference = false;
if(priority == null) priority = 0;
if(useCapture == null) useCapture = false;
}
,areInaccessibleObjectsUnderPoint: function(point) {
return false;
}
,contains: function(child) {
return false;
}
,dispatchEvent: function(event) {
return false;
}
,getBounds: function(targetCoordinateSpace) {
return null;
}
,getChildAt: function(index) {
return null;
}
,getChildByName: function(name) {
return null;
}
,getChildIndex: function(child) {
return 0;
}
,getObjectsUnderPoint: function(point) {
return null;
}
,getRect: function(targetCoordinateSpace) {
return null;
}
,globalToLocal: function(point) {
return null;
}
,globalToLocal3D: function(point) {
return null;
}
,hasEventListener: function(type) {
return false;
}
,hitTestObject: function(obj) {
return false;
}
,hitTestPoint: function(x,y,shapeFlag) {
if(shapeFlag == null) shapeFlag = false;
return false;
}
,local3DToGlobal: function(point3d) {
return null;
}
,localToGlobal: function(point) {
return null;
}
,removeChild: function(child) {
return null;
}
,removeChildAt: function(index) {
return null;
}
,removeChildren: function(beginIndex,endIndex) {
if(endIndex == null) endIndex = 2147483647;
if(beginIndex == null) beginIndex = 0;
}
,removeEventListener: function(type,listener,useCapture) {
if(useCapture == null) useCapture = false;
}
,requestSoftKeyboard: function() {
return false;
}
,setChildIndex: function(child,index) {
}
,startDrag: function(lockCenter,bounds) {
if(lockCenter == null) lockCenter = false;
}
,startTouchDrag: function(touchPointID,lockCenter,bounds) {
if(lockCenter == null) lockCenter = false;
}
,stopAllMovieClips: function() {
}
,stopDrag: function() {
}
,stopTouchDrag: function(touchPointID) {
}
,swapChildren: function(child1,child2) {
}
,swapChildrenAt: function(index1,index2) {
}
,toString: function() {
return null;
}
,willTrigger: function(type) {
return false;
}
,__class__: lime.graphics.FlashRenderContext
};
lime.graphics.Font = function(fontName) {
this.fontName = fontName;
this.glyphs = new haxe.ds.IntMap();
};
$hxClasses["lime.graphics.Font"] = lime.graphics.Font;
lime.graphics.Font.__name__ = ["lime","graphics","Font"];
lime.graphics.Font.fromBytes = function(bytes) {
var font = new lime.graphics.Font();
return font;
};
lime.graphics.Font.fromFile = function(path) {
var font = new lime.graphics.Font();
font.__fromFile(path);
return font;
};
lime.graphics.Font.prototype = {
createImage: function() {
this.glyphs = new haxe.ds.IntMap();
return null;
}
,decompose: function() {
return null;
}
,loadRange: function(size,start,end) {
}
,loadGlyphs: function(size,glyphs) {
if(glyphs == null) glyphs = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^`'\"/\\&*()[]{}<>|:;_-+=?,. ";
}
,__fromFile: function(path) {
this.__fontPath = path;
}
,__class__: lime.graphics.Font
};
lime.graphics.GlyphRect = function(x,y,width,height,xOffset,yOffset) {
if(yOffset == null) yOffset = 0;
if(xOffset == null) xOffset = 0;
this.x = x;
this.y = y;
this.xOffset = xOffset;
this.yOffset = yOffset;
this.width = width;
this.height = height;
};
$hxClasses["lime.graphics.GlyphRect"] = lime.graphics.GlyphRect;
lime.graphics.GlyphRect.__name__ = ["lime","graphics","GlyphRect"];
lime.graphics.GlyphRect.prototype = {
__class__: lime.graphics.GlyphRect
};
lime.graphics.Image = function(buffer,offsetX,offsetY,width,height,color,type) {
if(height == null) height = 0;
if(width == null) width = 0;
if(offsetY == null) offsetY = 0;
if(offsetX == null) offsetX = 0;
this.offsetX = offsetX;
this.offsetY = offsetY;
this.width = width;
this.height = height;
if(type == null) {
if(lime.app.Application.current != null && lime.app.Application.current.renderers[0] != null) {
var _g = lime.app.Application.current.renderers[0].context;
switch(_g[1]) {
case 2:case 1:
this.type = lime.graphics.ImageType.CANVAS;
break;
case 3:
this.type = lime.graphics.ImageType.FLASH;
break;
default:
this.type = lime.graphics.ImageType.DATA;
}
} else this.type = lime.graphics.ImageType.DATA;
} else this.type = type;
if(buffer == null) {
if(width > 0 && height > 0) {
var _g1 = this.type;
switch(_g1[1]) {
case 0:
this.buffer = new lime.graphics.ImageBuffer(null,width,height);
lime.graphics.utils.ImageCanvasUtil.createCanvas(this,width,height);
if(color != null) this.fillRect(new lime.math.Rectangle(0,0,width,height),color);
break;
case 1:
this.buffer = new lime.graphics.ImageBuffer(new Uint8Array(width * height * 4),width,height);
if(color != null) this.fillRect(new lime.math.Rectangle(0,0,width,height),color);
break;
case 2:
break;
default:
}
}
} else this.__fromImageBuffer(buffer);
};
$hxClasses["lime.graphics.Image"] = lime.graphics.Image;
lime.graphics.Image.__name__ = ["lime","graphics","Image"];
lime.graphics.Image.__base64Encoder = null;
lime.graphics.Image.fromBase64 = function(base64,type,onload) {
var image = new lime.graphics.Image();
image.__fromBase64(base64,type,onload);
return image;
};
lime.graphics.Image.fromBitmapData = function(bitmapData) {
var buffer = new lime.graphics.ImageBuffer(null,bitmapData.width,bitmapData.height);
buffer.__srcBitmapData = bitmapData;
return new lime.graphics.Image(buffer);
};
lime.graphics.Image.fromBytes = function(bytes,onload) {
var image = new lime.graphics.Image();
image.__fromBytes(bytes,onload);
return image;
};
lime.graphics.Image.fromCanvas = function(canvas) {
var buffer = new lime.graphics.ImageBuffer(null,canvas.width,canvas.height);
buffer.set_src(canvas);
return new lime.graphics.Image(buffer);
};
lime.graphics.Image.fromFile = function(path,onload,onerror) {
var image = new lime.graphics.Image();
image.__fromFile(path,onload,onerror);
return image;
};
lime.graphics.Image.fromImageElement = function(image) {
var buffer = new lime.graphics.ImageBuffer(null,image.width,image.height);
buffer.set_src(image);
return new lime.graphics.Image(buffer);
};
lime.graphics.Image.__base64Encode = function(bytes) {
var extension;
var _g = bytes.length % 3;
switch(_g) {
case 1:
extension = "==";
break;
case 2:
extension = "=";
break;
default:
extension = "";
}
if(lime.graphics.Image.__base64Encoder == null) lime.graphics.Image.__base64Encoder = new haxe.crypto.BaseCode(haxe.io.Bytes.ofString(lime.graphics.Image.__base64Chars));
return lime.graphics.Image.__base64Encoder.encodeBytes(haxe.io.Bytes.ofData(bytes.byteView)).toString() + extension;
};
lime.graphics.Image.__isJPG = function(bytes) {
bytes.position = 0;
return bytes.readUnsignedByte() == 255 && bytes.readUnsignedByte() == 216;
};
lime.graphics.Image.__isPNG = function(bytes) {
bytes.position = 0;
return bytes.readUnsignedByte() == 137 && bytes.readUnsignedByte() == 80 && bytes.readUnsignedByte() == 78 && bytes.readUnsignedByte() == 71 && bytes.readUnsignedByte() == 13 && bytes.readUnsignedByte() == 10 && bytes.readUnsignedByte() == 26 && bytes.readUnsignedByte() == 10;
};
lime.graphics.Image.__isGIF = function(bytes) {
bytes.position = 0;
if(bytes.readUnsignedByte() == 71 && bytes.readUnsignedByte() == 73 && bytes.readUnsignedByte() == 70 && bytes.readUnsignedByte() == 56) {
var b = bytes.readUnsignedByte();
return (b == 55 || b == 57) && bytes.readUnsignedByte() == 97;
}
return false;
};
lime.graphics.Image.prototype = {
clone: function() {
lime.graphics.utils.ImageCanvasUtil.sync(this);
var image;
if(this.buffer.__srcImage != null) image = new lime.graphics.Image(this.buffer.clone(),this.offsetX,this.offsetY,this.width,this.height,null,this.type); else {
image = new lime.graphics.Image(null,this.offsetX,this.offsetY,this.width,this.height,null,this.type);
image.buffer.__srcContext.drawImage(this.buffer.get_src(),0,0);
}
return image;
}
,colorTransform: function(rect,colorMatrix) {
rect = this.__clipRect(rect);
if(this.buffer == null || rect == null) return;
var _g = this.type;
switch(_g[1]) {
case 0:
lime.graphics.utils.ImageCanvasUtil.colorTransform(this,rect,colorMatrix);
break;
case 1:
lime.graphics.utils.ImageCanvasUtil.convertToData(this);
lime.graphics.utils.ImageDataUtil.colorTransform(this,rect,colorMatrix);
break;
case 2:
rect.offset(this.offsetX,this.offsetY);
this.buffer.__srcBitmapData.colorTransform(rect.__toFlashRectangle(),lime.math._ColorMatrix.ColorMatrix_Impl_.__toFlashColorTransform(colorMatrix));
break;
default:
}
}
,copyChannel: function(sourceImage,sourceRect,destPoint,sourceChannel,destChannel) {
sourceRect = this.__clipRect(sourceRect);
if(this.buffer == null || sourceRect == null) return;
if(destChannel == lime.graphics.ImageChannel.ALPHA && !this.get_transparent()) return;
if(sourceRect.width <= 0 || sourceRect.height <= 0) return;
if(sourceRect.x + sourceRect.width > sourceImage.width) sourceRect.width = sourceImage.width - sourceRect.x;
if(sourceRect.y + sourceRect.height > sourceImage.height) sourceRect.height = sourceImage.height - sourceRect.y;
var _g = this.type;
switch(_g[1]) {
case 0:
lime.graphics.utils.ImageCanvasUtil.copyChannel(this,sourceImage,sourceRect,destPoint,sourceChannel,destChannel);
break;
case 1:
lime.graphics.utils.ImageCanvasUtil.convertToData(this);
lime.graphics.utils.ImageDataUtil.copyChannel(this,sourceImage,sourceRect,destPoint,sourceChannel,destChannel);
break;
case 2:
var srcChannel;
switch(sourceChannel[1]) {
case 0:
srcChannel = 1;
break;
case 1:
srcChannel = 2;
break;
case 2:
srcChannel = 4;
break;
case 3:
srcChannel = 8;
break;
}
var dstChannel;
switch(destChannel[1]) {
case 0:
dstChannel = 1;
break;
case 1:
dstChannel = 2;
break;
case 2:
dstChannel = 4;
break;
case 3:
dstChannel = 8;
break;
}
sourceRect.offset(sourceImage.offsetX,sourceImage.offsetY);
destPoint.offset(this.offsetX,this.offsetY);
this.buffer.__srcBitmapData.copyChannel(sourceImage.buffer.get_src(),sourceRect.__toFlashRectangle(),destPoint.__toFlashPoint(),srcChannel,dstChannel);
break;
default:
}
}
,copyPixels: function(sourceImage,sourceRect,destPoint,alphaImage,alphaPoint,mergeAlpha) {
if(mergeAlpha == null) mergeAlpha = false;
if(this.buffer == null || sourceImage == null) return;
if(sourceRect.x + sourceRect.width > sourceImage.width) sourceRect.width = sourceImage.width - sourceRect.x;
if(sourceRect.y + sourceRect.height > sourceImage.height) sourceRect.height = sourceImage.height - sourceRect.y;
if(sourceRect.width <= 0 || sourceRect.height <= 0) return;
var _g = this.type;
switch(_g[1]) {
case 0:
lime.graphics.utils.ImageCanvasUtil.convertToCanvas(this);
lime.graphics.utils.ImageCanvasUtil.copyPixels(this,sourceImage,sourceRect,destPoint,alphaImage,alphaPoint,mergeAlpha);
break;
case 1:
lime.graphics.utils.ImageCanvasUtil.convertToData(this);
lime.graphics.utils.ImageCanvasUtil.convertToData(sourceImage);
lime.graphics.utils.ImageDataUtil.copyPixels(this,sourceImage,sourceRect,destPoint,alphaImage,alphaPoint,mergeAlpha);
break;
case 2:
sourceRect.offset(sourceImage.offsetX,sourceImage.offsetY);
destPoint.offset(this.offsetX,this.offsetY);
if(alphaImage != null && alphaPoint != null) alphaPoint.offset(alphaImage.offsetX,alphaImage.offsetY);
this.buffer.__srcBitmapData.copyPixels(sourceImage.buffer.__srcBitmapData,sourceRect.__toFlashRectangle(),destPoint.__toFlashPoint(),alphaImage != null?alphaImage.buffer.get_src():null,alphaPoint != null?alphaPoint.__toFlashPoint():null,mergeAlpha);
break;
default:
}
}
,encode: function(format,quality) {
if(quality == null) quality = 90;
if(format == null) format = "png";
return null;
}
,fillRect: function(rect,color) {
rect = this.__clipRect(rect);
if(this.buffer == null || rect == null) return;
var _g = this.type;
switch(_g[1]) {
case 0:
lime.graphics.utils.ImageCanvasUtil.fillRect(this,rect,color);
break;
case 1:
lime.graphics.utils.ImageCanvasUtil.convertToData(this);
lime.graphics.utils.ImageDataUtil.fillRect(this,rect,color);
break;
case 2:
rect.offset(this.offsetX,this.offsetY);
this.buffer.__srcBitmapData.fillRect(rect.__toFlashRectangle(),color);
break;
default:
}
}
,floodFill: function(x,y,color) {
if(this.buffer == null) return;
var _g = this.type;
switch(_g[1]) {
case 0:
lime.graphics.utils.ImageCanvasUtil.floodFill(this,x,y,color);
break;
case 1:
lime.graphics.utils.ImageCanvasUtil.convertToData(this);
lime.graphics.utils.ImageDataUtil.floodFill(this,x,y,color);
break;
case 2:
this.buffer.__srcBitmapData.floodFill(x + this.offsetX,y + this.offsetY,color);
break;
default:
}
}
,getPixel: function(x,y) {
if(this.buffer == null || x < 0 || y < 0 || x >= this.width || y >= this.height) return 0;
var _g = this.type;
switch(_g[1]) {
case 0:
return lime.graphics.utils.ImageCanvasUtil.getPixel(this,x,y);
case 1:
lime.graphics.utils.ImageCanvasUtil.convertToData(this);
return lime.graphics.utils.ImageDataUtil.getPixel(this,x,y);
case 2:
return this.buffer.__srcBitmapData.getPixel(x + this.offsetX,y + this.offsetY);
default:
return 0;
}
}
,getPixel32: function(x,y) {
if(this.buffer == null || x < 0 || y < 0 || x >= this.width || y >= this.height) return 0;
var _g = this.type;
switch(_g[1]) {
case 0:
return lime.graphics.utils.ImageCanvasUtil.getPixel32(this,x,y);
case 1:
lime.graphics.utils.ImageCanvasUtil.convertToData(this);
return lime.graphics.utils.ImageDataUtil.getPixel32(this,x,y);
case 2:
return this.buffer.__srcBitmapData.getPixel32(x + this.offsetX,y + this.offsetY);
default:
return 0;
}
}
,getPixels: function(rect) {
if(this.buffer == null) return null;
var _g = this.type;
switch(_g[1]) {
case 0:
return lime.graphics.utils.ImageCanvasUtil.getPixels(this,rect);
case 1:
lime.graphics.utils.ImageCanvasUtil.convertToData(this);
return lime.graphics.utils.ImageDataUtil.getPixels(this,rect);
case 2:
rect.offset(this.offsetX,this.offsetY);
return this.buffer.__srcBitmapData.getPixels(rect.__toFlashRectangle());
default:
return null;
}
}
,merge: function(sourceImage,sourceRect,destPoint,redMultiplier,greenMultiplier,blueMultiplier,alphaMultiplier) {
if(this.buffer == null || sourceImage == null) return;
var _g = this.type;
switch(_g[1]) {
case 0:
lime.graphics.utils.ImageCanvasUtil.convertToCanvas(this);
lime.graphics.utils.ImageCanvasUtil.merge(this,sourceImage,sourceRect,destPoint,redMultiplier,greenMultiplier,blueMultiplier,alphaMultiplier);
break;
case 1:
lime.graphics.utils.ImageCanvasUtil.convertToData(this);
lime.graphics.utils.ImageCanvasUtil.convertToData(sourceImage);
lime.graphics.utils.ImageDataUtil.merge(this,sourceImage,sourceRect,destPoint,redMultiplier,greenMultiplier,blueMultiplier,alphaMultiplier);
break;
case 2:
sourceRect.offset(this.offsetX,this.offsetY);
this.buffer.__srcBitmapData.merge(sourceImage.buffer.__srcBitmapData,sourceRect.__toFlashRectangle(),destPoint.__toFlashPoint(),redMultiplier,greenMultiplier,blueMultiplier,alphaMultiplier);
break;
default:
return null;
}
}
,resize: function(newWidth,newHeight) {
var _g = this.type;
switch(_g[1]) {
case 0:
lime.graphics.utils.ImageCanvasUtil.resize(this,newWidth,newHeight);
break;
case 1:
lime.graphics.utils.ImageDataUtil.resize(this,newWidth,newHeight);
break;
case 2:
break;
default:
}
this.buffer.width = newWidth;
this.buffer.height = newHeight;
this.offsetX = 0;
this.offsetY = 0;
this.width = newWidth;
this.height = newHeight;
}
,setPixel: function(x,y,color) {
if(this.buffer == null || x < 0 || y < 0 || x >= this.width || y >= this.height) return;
var _g = this.type;
switch(_g[1]) {
case 0:
lime.graphics.utils.ImageCanvasUtil.setPixel(this,x,y,color);
break;
case 1:
lime.graphics.utils.ImageCanvasUtil.convertToData(this);
lime.graphics.utils.ImageDataUtil.setPixel(this,x,y,color);
break;
case 2:
this.buffer.__srcBitmapData.setPixel(x + this.offsetX,y + this.offsetX,color);
break;
default:
}
}
,setPixel32: function(x,y,color) {
if(this.buffer == null || x < 0 || y < 0 || x >= this.width || y >= this.height) return;
var _g = this.type;
switch(_g[1]) {
case 0:
lime.graphics.utils.ImageCanvasUtil.setPixel32(this,x,y,color);
break;
case 1:
lime.graphics.utils.ImageCanvasUtil.convertToData(this);
lime.graphics.utils.ImageDataUtil.setPixel32(this,x,y,color);
break;
case 2:
this.buffer.__srcBitmapData.setPixel32(x + this.offsetX,y + this.offsetY,color);
break;
default:
}
}
,setPixels: function(rect,byteArray) {
rect = this.__clipRect(rect);
if(this.buffer == null || rect == null) return;
var _g = this.type;
switch(_g[1]) {
case 0:
lime.graphics.utils.ImageCanvasUtil.setPixels(this,rect,byteArray);
break;
case 1:
lime.graphics.utils.ImageCanvasUtil.convertToData(this);
lime.graphics.utils.ImageDataUtil.setPixels(this,rect,byteArray);
break;
case 2:
rect.offset(this.offsetX,this.offsetY);
this.buffer.__srcBitmapData.setPixels(rect.__toFlashRectangle(),byteArray);
break;
default:
}
}
,__clipRect: function(r) {
if(r == null) return null;
if(r.x < 0) {
r.width -= -r.x;
r.x = 0;
if(r.x + r.width <= 0) return null;
}
if(r.y < 0) {
r.height -= -r.y;
r.y = 0;
if(r.y + r.height <= 0) return null;
}
if(r.x + r.width >= this.width) {
r.width -= r.x + r.width - this.width;
if(r.width <= 0) return null;
}
if(r.y + r.height >= this.height) {
r.height -= r.y + r.height - this.height;
if(r.height <= 0) return null;
}
return r;
}
,__fromBase64: function(base64,type,onload) {
var _g = this;
var image = new Image();
var image_onLoaded = function(event) {
_g.buffer = new lime.graphics.ImageBuffer(null,image.width,image.height);
_g.buffer.__srcImage = image;
_g.offsetX = 0;
_g.offsetY = 0;
_g.width = _g.buffer.width;
_g.height = _g.buffer.height;
if(onload != null) onload(_g);
};
image.addEventListener("load",image_onLoaded,false);
image.src = "data:" + type + ";base64," + base64;
}
,__fromBytes: function(bytes,onload) {
var type = "";
if(lime.graphics.Image.__isPNG(bytes)) type = "image/png"; else if(lime.graphics.Image.__isJPG(bytes)) type = "image/jpeg"; else if(lime.graphics.Image.__isGIF(bytes)) type = "image/gif"; else throw "Image tried to read a PNG/JPG ByteArray, but found an invalid header.";
this.__fromBase64(lime.graphics.Image.__base64Encode(bytes),type,onload);
}
,__fromFile: function(path,onload,onerror) {
var _g = this;
var image = new Image();
image.onload = function(_) {
_g.buffer = new lime.graphics.ImageBuffer(null,image.width,image.height);
_g.buffer.__srcImage = image;
_g.width = image.width;
_g.height = image.height;
if(onload != null) onload(_g);
};
image.onerror = function(_1) {
if(onerror != null) onerror();
};
image.src = path;
if(image.complete) {
}
}
,__fromImageBuffer: function(buffer) {
this.buffer = buffer;
if(buffer != null) {
if(this.width == 0) this.width = buffer.width;
if(this.height == 0) this.height = buffer.height;
}
}
,get_data: function() {
if(this.buffer.data == null && this.buffer.width > 0 && this.buffer.height > 0) {
lime.graphics.utils.ImageCanvasUtil.convertToCanvas(this);
lime.graphics.utils.ImageCanvasUtil.createImageData(this);
}
return this.buffer.data;
}
,set_data: function(value) {
return this.buffer.data = value;
}
,get_powerOfTwo: function() {
return this.buffer.width != 0 && (this.buffer.width & ~this.buffer.width + 1) == this.buffer.width && (this.buffer.height != 0 && (this.buffer.height & ~this.buffer.height + 1) == this.buffer.height);
}
,set_powerOfTwo: function(value) {
if(value != this.get_powerOfTwo()) {
var newWidth = 1;
var newHeight = 1;
while(newWidth < this.buffer.width) newWidth <<= 1;
while(newHeight < this.buffer.height) newHeight <<= 1;
var _g = this.type;
switch(_g[1]) {
case 0:
break;
case 1:
lime.graphics.utils.ImageDataUtil.resizeBuffer(this,newWidth,newHeight);
break;
case 2:
break;
default:
}
}
return value;
}
,get_premultiplied: function() {
return this.buffer.premultiplied;
}
,set_premultiplied: function(value) {
if(value && !this.buffer.premultiplied) {
var _g = this.type;
switch(_g[1]) {
case 1:
lime.graphics.utils.ImageCanvasUtil.convertToData(this);
lime.graphics.utils.ImageDataUtil.multiplyAlpha(this);
break;
default:
}
} else if(!value && this.buffer.premultiplied) {
var _g1 = this.type;
switch(_g1[1]) {
case 1:
lime.graphics.utils.ImageCanvasUtil.convertToData(this);
lime.graphics.utils.ImageDataUtil.unmultiplyAlpha(this);
break;
default:
}
}
return value;
}
,get_rect: function() {
return new lime.math.Rectangle(0,0,this.width,this.height);
}
,get_src: function() {
return this.buffer.get_src();
}
,set_src: function(value) {
return this.buffer.set_src(value);
}
,get_transparent: function() {
return this.buffer.transparent;
}
,set_transparent: function(value) {
return this.buffer.transparent = value;
}
,__class__: lime.graphics.Image
,__properties__: {set_transparent:"set_transparent",get_transparent:"get_transparent",set_src:"set_src",get_src:"get_src",get_rect:"get_rect",set_premultiplied:"set_premultiplied",get_premultiplied:"get_premultiplied",set_powerOfTwo:"set_powerOfTwo",get_powerOfTwo:"get_powerOfTwo",set_data:"set_data",get_data:"get_data"}
};
lime.graphics.ImageChannel = $hxClasses["lime.graphics.ImageChannel"] = { __ename__ : ["lime","graphics","ImageChannel"], __constructs__ : ["RED","GREEN","BLUE","ALPHA"] };
lime.graphics.ImageChannel.RED = ["RED",0];
lime.graphics.ImageChannel.RED.toString = $estr;
lime.graphics.ImageChannel.RED.__enum__ = lime.graphics.ImageChannel;
lime.graphics.ImageChannel.GREEN = ["GREEN",1];
lime.graphics.ImageChannel.GREEN.toString = $estr;
lime.graphics.ImageChannel.GREEN.__enum__ = lime.graphics.ImageChannel;
lime.graphics.ImageChannel.BLUE = ["BLUE",2];
lime.graphics.ImageChannel.BLUE.toString = $estr;
lime.graphics.ImageChannel.BLUE.__enum__ = lime.graphics.ImageChannel;
lime.graphics.ImageChannel.ALPHA = ["ALPHA",3];
lime.graphics.ImageChannel.ALPHA.toString = $estr;
lime.graphics.ImageChannel.ALPHA.__enum__ = lime.graphics.ImageChannel;
lime.graphics.ImageBuffer = function(data,width,height,bitsPerPixel) {
if(bitsPerPixel == null) bitsPerPixel = 4;
if(height == null) height = 0;
if(width == null) width = 0;
this.data = data;
this.width = width;
this.height = height;
this.bitsPerPixel = bitsPerPixel;
this.transparent = true;
};
$hxClasses["lime.graphics.ImageBuffer"] = lime.graphics.ImageBuffer;
lime.graphics.ImageBuffer.__name__ = ["lime","graphics","ImageBuffer"];
lime.graphics.ImageBuffer.prototype = {
clone: function() {
var buffer = new lime.graphics.ImageBuffer(this.data,this.width,this.height,this.bitsPerPixel);
buffer.set_src(this.get_src());
buffer.premultiplied = this.premultiplied;
buffer.transparent = this.transparent;
return buffer;
}
,get_src: function() {
if(this.__srcImage != null) return this.__srcImage;
return this.__srcCanvas;
}
,set_src: function(value) {
if(js.Boot.__instanceof(value,Image)) this.__srcImage = value; else if(js.Boot.__instanceof(value,HTMLCanvasElement)) {
this.__srcCanvas = value;
this.__srcContext = this.__srcCanvas.getContext("2d");
}
return value;
}
,__class__: lime.graphics.ImageBuffer
,__properties__: {set_src:"set_src",get_src:"get_src"}
};
lime.graphics.ImageType = $hxClasses["lime.graphics.ImageType"] = { __ename__ : ["lime","graphics","ImageType"], __constructs__ : ["CANVAS","DATA","FLASH","CUSTOM"] };
lime.graphics.ImageType.CANVAS = ["CANVAS",0];
lime.graphics.ImageType.CANVAS.toString = $estr;
lime.graphics.ImageType.CANVAS.__enum__ = lime.graphics.ImageType;
lime.graphics.ImageType.DATA = ["DATA",1];
lime.graphics.ImageType.DATA.toString = $estr;
lime.graphics.ImageType.DATA.__enum__ = lime.graphics.ImageType;
lime.graphics.ImageType.FLASH = ["FLASH",2];
lime.graphics.ImageType.FLASH.toString = $estr;
lime.graphics.ImageType.FLASH.__enum__ = lime.graphics.ImageType;
lime.graphics.ImageType.CUSTOM = ["CUSTOM",3];
lime.graphics.ImageType.CUSTOM.toString = $estr;
lime.graphics.ImageType.CUSTOM.__enum__ = lime.graphics.ImageType;
lime.graphics.RenderContext = $hxClasses["lime.graphics.RenderContext"] = { __ename__ : ["lime","graphics","RenderContext"], __constructs__ : ["OPENGL","CANVAS","DOM","FLASH","CONSOLE","CUSTOM"] };
lime.graphics.RenderContext.OPENGL = function(gl) { var $x = ["OPENGL",0,gl]; $x.__enum__ = lime.graphics.RenderContext; $x.toString = $estr; return $x; };
lime.graphics.RenderContext.CANVAS = function(context) { var $x = ["CANVAS",1,context]; $x.__enum__ = lime.graphics.RenderContext; $x.toString = $estr; return $x; };
lime.graphics.RenderContext.DOM = function(element) { var $x = ["DOM",2,element]; $x.__enum__ = lime.graphics.RenderContext; $x.toString = $estr; return $x; };
lime.graphics.RenderContext.FLASH = function(stage) { var $x = ["FLASH",3,stage]; $x.__enum__ = lime.graphics.RenderContext; $x.toString = $estr; return $x; };
lime.graphics.RenderContext.CONSOLE = function(context) { var $x = ["CONSOLE",4,context]; $x.__enum__ = lime.graphics.RenderContext; $x.toString = $estr; return $x; };
lime.graphics.RenderContext.CUSTOM = function(data) { var $x = ["CUSTOM",5,data]; $x.__enum__ = lime.graphics.RenderContext; $x.toString = $estr; return $x; };
lime.graphics.Renderer = function(window) {
this.onRender = new lime.app.Event();
this.onRenderContextRestored = new lime.app.Event();
this.onRenderContextLost = new lime.app.Event();
this.window = window;
this.backend = new lime._backend.html5.HTML5Renderer(this);
this.window.currentRenderer = this;
};
$hxClasses["lime.graphics.Renderer"] = lime.graphics.Renderer;
lime.graphics.Renderer.__name__ = ["lime","graphics","Renderer"];
lime.graphics.Renderer.prototype = {
create: function() {
this.backend.create();
}
,flip: function() {
this.backend.flip();
}
,render: function() {
this.backend.render();
}
,__class__: lime.graphics.Renderer
};
lime.graphics.format = {};
lime.graphics.format.BMP = function() { };
$hxClasses["lime.graphics.format.BMP"] = lime.graphics.format.BMP;
lime.graphics.format.BMP.__name__ = ["lime","graphics","format","BMP"];
lime.graphics.format.BMP.encode = function(image,type) {
if(type == null) type = lime.graphics.format.BMPType.RGB;
var fileHeaderLength = 14;
var infoHeaderLength = 40;
var pixelValuesLength = image.width * image.height * 4;
switch(type[1]) {
case 1:
infoHeaderLength = 108;
break;
case 2:
fileHeaderLength = 0;
pixelValuesLength += image.width * image.height;
break;
default:
}
var data = new lime.utils.ByteArray(fileHeaderLength + infoHeaderLength + pixelValuesLength);
if(fileHeaderLength > 0) {
data.writeByte(66);
data.writeByte(77);
data.writeInt(data.length);
data.writeInt(0);
data.writeInt(fileHeaderLength + infoHeaderLength);
}
data.writeInt(infoHeaderLength);
data.writeInt(image.width);
if(type == lime.graphics.format.BMPType.ICO) data.writeInt(image.height * 2); else data.writeInt(image.height);
data.writeShort(1);
data.writeShort(32);
switch(type[1]) {
case 1:
data.writeInt(3);
break;
default:
data.writeInt(0);
}
data.writeInt(pixelValuesLength);
data.writeInt(11824);
data.writeInt(11824);
data.writeInt(0);
data.writeInt(0);
if(type == lime.graphics.format.BMPType.BITFIELD) {
data.writeInt(16711680);
data.writeInt(65280);
data.writeInt(255);
data.writeInt(-16777216);
data.writeByte(32);
data.writeByte(110);
data.writeByte(105);
data.writeByte(87);
data.writeInt(0);
data.writeInt(0);
data.writeInt(0);
data.writeInt(0);
data.writeInt(0);
data.writeInt(0);
data.writeInt(0);
data.writeInt(0);
data.writeInt(0);
data.writeInt(0);
data.writeInt(0);
data.writeInt(0);
}
var pixels = image.getPixels(new lime.math.Rectangle(0,0,image.width,image.height));
var a;
var r;
var g;
var b;
if(type != lime.graphics.format.BMPType.ICO) {
var _g1 = 0;
var _g = image.height;
while(_g1 < _g) {
var y = _g1++;
pixels.position = (image.height - 1 - y) * 4 * image.width;
var _g3 = 0;
var _g2 = image.width;
while(_g3 < _g2) {
var x = _g3++;
a = pixels.readByte();
r = pixels.readByte();
g = pixels.readByte();
b = pixels.readByte();
data.writeByte(b);
data.writeByte(g);
data.writeByte(r);
data.writeByte(a);
}
}
} else {
var andMask = new lime.utils.ByteArray(image.width * image.height);
var _g11 = 0;
var _g4 = image.height;
while(_g11 < _g4) {
var y1 = _g11++;
pixels.position = (image.height - 1 - y1) * 4 * image.width;
var _g31 = 0;
var _g21 = image.width;
while(_g31 < _g21) {
var x1 = _g31++;
a = pixels.readByte();
r = pixels.readByte();
g = pixels.readByte();
b = pixels.readByte();
data.writeByte(b);
data.writeByte(g);
data.writeByte(r);
data.writeByte(a);
andMask.writeByte(0);
}
}
data.writeBytes(andMask);
}
return data;
};
lime.graphics.format.BMPType = $hxClasses["lime.graphics.format.BMPType"] = { __ename__ : ["lime","graphics","format","BMPType"], __constructs__ : ["RGB","BITFIELD","ICO"] };
lime.graphics.format.BMPType.RGB = ["RGB",0];
lime.graphics.format.BMPType.RGB.toString = $estr;
lime.graphics.format.BMPType.RGB.__enum__ = lime.graphics.format.BMPType;
lime.graphics.format.BMPType.BITFIELD = ["BITFIELD",1];
lime.graphics.format.BMPType.BITFIELD.toString = $estr;
lime.graphics.format.BMPType.BITFIELD.__enum__ = lime.graphics.format.BMPType;
lime.graphics.format.BMPType.ICO = ["ICO",2];
lime.graphics.format.BMPType.ICO.toString = $estr;
lime.graphics.format.BMPType.ICO.__enum__ = lime.graphics.format.BMPType;
lime.graphics.format.JPEG = function() { };
$hxClasses["lime.graphics.format.JPEG"] = lime.graphics.format.JPEG;
lime.graphics.format.JPEG.__name__ = ["lime","graphics","format","JPEG"];
lime.graphics.format.JPEG.encode = function(image,quality) {
return null;
};
lime.graphics.format.PNG = function() { };
$hxClasses["lime.graphics.format.PNG"] = lime.graphics.format.PNG;
lime.graphics.format.PNG.__name__ = ["lime","graphics","format","PNG"];
lime.graphics.format.PNG.encode = function(image) {
return null;
};
lime.graphics.opengl = {};
lime.graphics.opengl.GL = function() { };
$hxClasses["lime.graphics.opengl.GL"] = lime.graphics.opengl.GL;
lime.graphics.opengl.GL.__name__ = ["lime","graphics","opengl","GL"];
lime.graphics.opengl.GL.__properties__ = {get_version:"get_version"}
lime.graphics.opengl.GL.version = null;
lime.graphics.opengl.GL.context = null;
lime.graphics.opengl.GL.activeTexture = function(texture) {
lime.graphics.opengl.GL.context.activeTexture(texture);
};
lime.graphics.opengl.GL.attachShader = function(program,shader) {
lime.graphics.opengl.GL.context.attachShader(program,shader);
};
lime.graphics.opengl.GL.bindAttribLocation = function(program,index,name) {
lime.graphics.opengl.GL.context.bindAttribLocation(program,index,name);
};
lime.graphics.opengl.GL.bindBuffer = function(target,buffer) {
lime.graphics.opengl.GL.context.bindBuffer(target,buffer);
};
lime.graphics.opengl.GL.bindFramebuffer = function(target,framebuffer) {
lime.graphics.opengl.GL.context.bindFramebuffer(target,framebuffer);
};
lime.graphics.opengl.GL.bindRenderbuffer = function(target,renderbuffer) {
lime.graphics.opengl.GL.context.bindRenderbuffer(target,renderbuffer);
};
lime.graphics.opengl.GL.bindTexture = function(target,texture) {
lime.graphics.opengl.GL.context.bindTexture(target,texture);
};
lime.graphics.opengl.GL.blendColor = function(red,green,blue,alpha) {
lime.graphics.opengl.GL.context.blendColor(red,green,blue,alpha);
};
lime.graphics.opengl.GL.blendEquation = function(mode) {
lime.graphics.opengl.GL.context.blendEquation(mode);
};
lime.graphics.opengl.GL.blendEquationSeparate = function(modeRGB,modeAlpha) {
lime.graphics.opengl.GL.context.blendEquationSeparate(modeRGB,modeAlpha);
};
lime.graphics.opengl.GL.blendFunc = function(sfactor,dfactor) {
lime.graphics.opengl.GL.context.blendFunc(sfactor,dfactor);
};
lime.graphics.opengl.GL.blendFuncSeparate = function(srcRGB,dstRGB,srcAlpha,dstAlpha) {
lime.graphics.opengl.GL.context.blendFuncSeparate(srcRGB,dstRGB,srcAlpha,dstAlpha);
};
lime.graphics.opengl.GL.bufferData = function(target,data,usage) {
lime.graphics.opengl.GL.context.bufferData(target,data,usage);
};
lime.graphics.opengl.GL.bufferSubData = function(target,offset,data) {
lime.graphics.opengl.GL.context.bufferSubData(target,offset,data);
};
lime.graphics.opengl.GL.checkFramebufferStatus = function(target) {
return lime.graphics.opengl.GL.context.checkFramebufferStatus(target);
};
lime.graphics.opengl.GL.clear = function(mask) {
lime.graphics.opengl.GL.context.clear(mask);
};
lime.graphics.opengl.GL.clearColor = function(red,green,blue,alpha) {
lime.graphics.opengl.GL.context.clearColor(red,green,blue,alpha);
};
lime.graphics.opengl.GL.clearDepth = function(depth) {
lime.graphics.opengl.GL.context.clearDepth(depth);
};
lime.graphics.opengl.GL.clearStencil = function(s) {
lime.graphics.opengl.GL.context.clearStencil(s);
};
lime.graphics.opengl.GL.colorMask = function(red,green,blue,alpha) {
lime.graphics.opengl.GL.context.colorMask(red,green,blue,alpha);
};
lime.graphics.opengl.GL.compileShader = function(shader) {
lime.graphics.opengl.GL.context.compileShader(shader);
};
lime.graphics.opengl.GL.compressedTexImage2D = function(target,level,internalformat,width,height,border,data) {
lime.graphics.opengl.GL.context.compressedTexImage2D(target,level,internalformat,width,height,border,data);
};
lime.graphics.opengl.GL.compressedTexSubImage2D = function(target,level,xoffset,yoffset,width,height,format,data) {
lime.graphics.opengl.GL.context.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,data);
};
lime.graphics.opengl.GL.copyTexImage2D = function(target,level,internalformat,x,y,width,height,border) {
lime.graphics.opengl.GL.context.copyTexImage2D(target,level,internalformat,x,y,width,height,border);
};
lime.graphics.opengl.GL.copyTexSubImage2D = function(target,level,xoffset,yoffset,x,y,width,height) {
lime.graphics.opengl.GL.context.copyTexSubImage2D(target,level,xoffset,yoffset,x,y,width,height);
};
lime.graphics.opengl.GL.createBuffer = function() {
return lime.graphics.opengl.GL.context.createBuffer();
};
lime.graphics.opengl.GL.createFramebuffer = function() {
return lime.graphics.opengl.GL.context.createFramebuffer();
};
lime.graphics.opengl.GL.createProgram = function() {
return lime.graphics.opengl.GL.context.createProgram();
};
lime.graphics.opengl.GL.createRenderbuffer = function() {
return lime.graphics.opengl.GL.context.createRenderbuffer();
};
lime.graphics.opengl.GL.createShader = function(type) {
return lime.graphics.opengl.GL.context.createShader(type);
};
lime.graphics.opengl.GL.createTexture = function() {
return lime.graphics.opengl.GL.context.createTexture();
};
lime.graphics.opengl.GL.cullFace = function(mode) {
lime.graphics.opengl.GL.context.cullFace(mode);
};
lime.graphics.opengl.GL.deleteBuffer = function(buffer) {
lime.graphics.opengl.GL.context.deleteBuffer(buffer);
};
lime.graphics.opengl.GL.deleteFramebuffer = function(framebuffer) {
lime.graphics.opengl.GL.context.deleteFramebuffer(framebuffer);
};
lime.graphics.opengl.GL.deleteProgram = function(program) {
lime.graphics.opengl.GL.context.deleteProgram(program);
};
lime.graphics.opengl.GL.deleteRenderbuffer = function(renderbuffer) {
lime.graphics.opengl.GL.context.deleteRenderbuffer(renderbuffer);
};
lime.graphics.opengl.GL.deleteShader = function(shader) {
lime.graphics.opengl.GL.context.deleteShader(shader);
};
lime.graphics.opengl.GL.deleteTexture = function(texture) {
lime.graphics.opengl.GL.context.deleteTexture(texture);
};
lime.graphics.opengl.GL.depthFunc = function(func) {
lime.graphics.opengl.GL.context.depthFunc(func);
};
lime.graphics.opengl.GL.depthMask = function(flag) {
lime.graphics.opengl.GL.context.depthMask(flag);
};
lime.graphics.opengl.GL.depthRange = function(zNear,zFar) {
lime.graphics.opengl.GL.context.depthRange(zNear,zFar);
};
lime.graphics.opengl.GL.detachShader = function(program,shader) {
lime.graphics.opengl.GL.context.detachShader(program,shader);
};
lime.graphics.opengl.GL.disable = function(cap) {
lime.graphics.opengl.GL.context.disable(cap);
};
lime.graphics.opengl.GL.disableVertexAttribArray = function(index) {
lime.graphics.opengl.GL.context.disableVertexAttribArray(index);
};
lime.graphics.opengl.GL.drawArrays = function(mode,first,count) {
lime.graphics.opengl.GL.context.drawArrays(mode,first,count);
};
lime.graphics.opengl.GL.drawElements = function(mode,count,type,offset) {
lime.graphics.opengl.GL.context.drawElements(mode,count,type,offset);
};
lime.graphics.opengl.GL.enable = function(cap) {
lime.graphics.opengl.GL.context.enable(cap);
};
lime.graphics.opengl.GL.enableVertexAttribArray = function(index) {
lime.graphics.opengl.GL.context.enableVertexAttribArray(index);
};
lime.graphics.opengl.GL.finish = function() {
lime.graphics.opengl.GL.context.finish();
};
lime.graphics.opengl.GL.flush = function() {
lime.graphics.opengl.GL.context.flush();
};
lime.graphics.opengl.GL.framebufferRenderbuffer = function(target,attachment,renderbuffertarget,renderbuffer) {
lime.graphics.opengl.GL.context.framebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer);
};
lime.graphics.opengl.GL.framebufferTexture2D = function(target,attachment,textarget,texture,level) {
lime.graphics.opengl.GL.context.framebufferTexture2D(target,attachment,textarget,texture,level);
};
lime.graphics.opengl.GL.frontFace = function(mode) {
lime.graphics.opengl.GL.context.frontFace(mode);
};
lime.graphics.opengl.GL.generateMipmap = function(target) {
lime.graphics.opengl.GL.context.generateMipmap(target);
};
lime.graphics.opengl.GL.getActiveAttrib = function(program,index) {
return lime.graphics.opengl.GL.context.getActiveAttrib(program,index);
};
lime.graphics.opengl.GL.getActiveUniform = function(program,index) {
return lime.graphics.opengl.GL.context.getActiveUniform(program,index);
};
lime.graphics.opengl.GL.getAttachedShaders = function(program) {
return lime.graphics.opengl.GL.context.getAttachedShaders(program);
};
lime.graphics.opengl.GL.getAttribLocation = function(program,name) {
return lime.graphics.opengl.GL.context.getAttribLocation(program,name);
};
lime.graphics.opengl.GL.getBufferParameter = function(target,pname) {
return lime.graphics.opengl.GL.context.getBufferParameter(target,pname);
};
lime.graphics.opengl.GL.getContextAttributes = function() {
return lime.graphics.opengl.GL.context.getContextAttributes();
};
lime.graphics.opengl.GL.getError = function() {
return lime.graphics.opengl.GL.context.getError();
};
lime.graphics.opengl.GL.getExtension = function(name) {
return lime.graphics.opengl.GL.context.getExtension(name);
};
lime.graphics.opengl.GL.getFramebufferAttachmentParameter = function(target,attachment,pname) {
return lime.graphics.opengl.GL.context.getFramebufferAttachmentParameter(target,attachment,pname);
};
lime.graphics.opengl.GL.getParameter = function(pname) {
return lime.graphics.opengl.GL.context.getParameter(pname);
};
lime.graphics.opengl.GL.getProgramInfoLog = function(program) {
return lime.graphics.opengl.GL.context.getProgramInfoLog(program);
};
lime.graphics.opengl.GL.getProgramParameter = function(program,pname) {
return lime.graphics.opengl.GL.context.getProgramParameter(program,pname);
};
lime.graphics.opengl.GL.getRenderbufferParameter = function(target,pname) {
return lime.graphics.opengl.GL.context.getRenderbufferParameter(target,pname);
};
lime.graphics.opengl.GL.getShaderInfoLog = function(shader) {
return lime.graphics.opengl.GL.context.getShaderInfoLog(shader);
};
lime.graphics.opengl.GL.getShaderParameter = function(shader,pname) {
return lime.graphics.opengl.GL.context.getShaderParameter(shader,pname);
};
lime.graphics.opengl.GL.getShaderPrecisionFormat = function(shadertype,precisiontype) {
return lime.graphics.opengl.GL.context.getShaderPrecisionFormat(shadertype,precisiontype);
};
lime.graphics.opengl.GL.getShaderSource = function(shader) {
return lime.graphics.opengl.GL.context.getShaderSource(shader);
};
lime.graphics.opengl.GL.getSupportedExtensions = function() {
return lime.graphics.opengl.GL.context.getSupportedExtensions();
};
lime.graphics.opengl.GL.getTexParameter = function(target,pname) {
return lime.graphics.opengl.GL.context.getTexParameter(target,pname);
};
lime.graphics.opengl.GL.getUniform = function(program,location) {
return lime.graphics.opengl.GL.context.getUniform(program,location);
};
lime.graphics.opengl.GL.getUniformLocation = function(program,name) {
return lime.graphics.opengl.GL.context.getUniformLocation(program,name);
};
lime.graphics.opengl.GL.getVertexAttrib = function(index,pname) {
return lime.graphics.opengl.GL.context.getVertexAttrib(index,pname);
};
lime.graphics.opengl.GL.getVertexAttribOffset = function(index,pname) {
return lime.graphics.opengl.GL.context.getVertexAttribOffset(index,pname);
};
lime.graphics.opengl.GL.hint = function(target,mode) {
lime.graphics.opengl.GL.context.hint(target,mode);
};
lime.graphics.opengl.GL.isBuffer = function(buffer) {
return lime.graphics.opengl.GL.context.isBuffer(buffer);
};
lime.graphics.opengl.GL.isContextLost = function() {
return lime.graphics.opengl.GL.context.isContextLost();
};
lime.graphics.opengl.GL.isEnabled = function(cap) {
return lime.graphics.opengl.GL.context.isEnabled(cap);
};
lime.graphics.opengl.GL.isFramebuffer = function(framebuffer) {
return lime.graphics.opengl.GL.context.isFramebuffer(framebuffer);
};
lime.graphics.opengl.GL.isProgram = function(program) {
return lime.graphics.opengl.GL.context.isProgram(program);
};
lime.graphics.opengl.GL.isRenderbuffer = function(renderbuffer) {
return lime.graphics.opengl.GL.context.isRenderbuffer(renderbuffer);
};
lime.graphics.opengl.GL.isShader = function(shader) {
return lime.graphics.opengl.GL.context.isShader(shader);
};
lime.graphics.opengl.GL.isTexture = function(texture) {
return lime.graphics.opengl.GL.context.isTexture(texture);
};
lime.graphics.opengl.GL.lineWidth = function(width) {
lime.graphics.opengl.GL.context.lineWidth(width);
};
lime.graphics.opengl.GL.linkProgram = function(program) {
lime.graphics.opengl.GL.context.linkProgram(program);
};
lime.graphics.opengl.GL.pixelStorei = function(pname,param) {
lime.graphics.opengl.GL.context.pixelStorei(pname,param);
};
lime.graphics.opengl.GL.polygonOffset = function(factor,units) {
lime.graphics.opengl.GL.context.polygonOffset(factor,units);
};
lime.graphics.opengl.GL.readPixels = function(x,y,width,height,format,type,pixels) {
lime.graphics.opengl.GL.context.readPixels(x,y,width,height,format,type,pixels);
};
lime.graphics.opengl.GL.renderbufferStorage = function(target,internalformat,width,height) {
lime.graphics.opengl.GL.context.renderbufferStorage(target,internalformat,width,height);
};
lime.graphics.opengl.GL.sampleCoverage = function(value,invert) {
lime.graphics.opengl.GL.context.sampleCoverage(value,invert);
};
lime.graphics.opengl.GL.scissor = function(x,y,width,height) {
lime.graphics.opengl.GL.context.scissor(x,y,width,height);
};
lime.graphics.opengl.GL.shaderSource = function(shader,source) {
lime.graphics.opengl.GL.context.shaderSource(shader,source);
};
lime.graphics.opengl.GL.stencilFunc = function(func,ref,mask) {
lime.graphics.opengl.GL.context.stencilFunc(func,ref,mask);
};
lime.graphics.opengl.GL.stencilFuncSeparate = function(face,func,ref,mask) {
lime.graphics.opengl.GL.context.stencilFuncSeparate(face,func,ref,mask);
};
lime.graphics.opengl.GL.stencilMask = function(mask) {
lime.graphics.opengl.GL.context.stencilMask(mask);
};
lime.graphics.opengl.GL.stencilMaskSeparate = function(face,mask) {
lime.graphics.opengl.GL.context.stencilMaskSeparate(face,mask);
};
lime.graphics.opengl.GL.stencilOp = function(fail,zfail,zpass) {
lime.graphics.opengl.GL.context.stencilOp(fail,zfail,zpass);
};
lime.graphics.opengl.GL.stencilOpSeparate = function(face,fail,zfail,zpass) {
lime.graphics.opengl.GL.context.stencilOpSeparate(face,fail,zfail,zpass);
};
lime.graphics.opengl.GL.texImage2D = function(target,level,internalformat,width,height,border,format,type,pixels) {
lime.graphics.opengl.GL.context.texImage2D(target,level,internalformat,width,height,border,format,type,pixels);
};
lime.graphics.opengl.GL.texParameterf = function(target,pname,param) {
lime.graphics.opengl.GL.context.texParameterf(target,pname,param);
};
lime.graphics.opengl.GL.texParameteri = function(target,pname,param) {
lime.graphics.opengl.GL.context.texParameteri(target,pname,param);
};
lime.graphics.opengl.GL.texSubImage2D = function(target,level,xoffset,yoffset,width,height,format,type,pixels) {
lime.graphics.opengl.GL.context.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels);
};
lime.graphics.opengl.GL.uniform1f = function(location,x) {
lime.graphics.opengl.GL.context.uniform1f(location,x);
};
lime.graphics.opengl.GL.uniform1fv = function(location,x) {
lime.graphics.opengl.GL.context.uniform1fv(location,x);
};
lime.graphics.opengl.GL.uniform1i = function(location,x) {
lime.graphics.opengl.GL.context.uniform1i(location,x);
};
lime.graphics.opengl.GL.uniform1iv = function(location,v) {
lime.graphics.opengl.GL.context.uniform1iv(location,v);
};
lime.graphics.opengl.GL.uniform2f = function(location,x,y) {
lime.graphics.opengl.GL.context.uniform2f(location,x,y);
};
lime.graphics.opengl.GL.uniform2fv = function(location,v) {
lime.graphics.opengl.GL.context.uniform2fv(location,v);
};
lime.graphics.opengl.GL.uniform2i = function(location,x,y) {
lime.graphics.opengl.GL.context.uniform2i(location,x,y);
};
lime.graphics.opengl.GL.uniform2iv = function(location,v) {
lime.graphics.opengl.GL.context.uniform2iv(location,v);
};
lime.graphics.opengl.GL.uniform3f = function(location,x,y,z) {
lime.graphics.opengl.GL.context.uniform3f(location,x,y,z);
};
lime.graphics.opengl.GL.uniform3fv = function(location,v) {
lime.graphics.opengl.GL.context.uniform3fv(location,v);
};
lime.graphics.opengl.GL.uniform3i = function(location,x,y,z) {
lime.graphics.opengl.GL.context.uniform3i(location,x,y,z);
};
lime.graphics.opengl.GL.uniform3iv = function(location,v) {
lime.graphics.opengl.GL.context.uniform3iv(location,v);
};
lime.graphics.opengl.GL.uniform4f = function(location,x,y,z,w) {
lime.graphics.opengl.GL.context.uniform4f(location,x,y,z,w);
};
lime.graphics.opengl.GL.uniform4fv = function(location,v) {
lime.graphics.opengl.GL.context.uniform4fv(location,v);
};
lime.graphics.opengl.GL.uniform4i = function(location,x,y,z,w) {
lime.graphics.opengl.GL.context.uniform4i(location,x,y,z,w);
};
lime.graphics.opengl.GL.uniform4iv = function(location,v) {
lime.graphics.opengl.GL.context.uniform4iv(location,v);
};
lime.graphics.opengl.GL.uniformMatrix2fv = function(location,transpose,v) {
lime.graphics.opengl.GL.context.uniformMatrix2fv(location,transpose,v);
};
lime.graphics.opengl.GL.uniformMatrix3fv = function(location,transpose,v) {
lime.graphics.opengl.GL.context.uniformMatrix3fv(location,transpose,v);
};
lime.graphics.opengl.GL.uniformMatrix4fv = function(location,transpose,v) {
lime.graphics.opengl.GL.context.uniformMatrix4fv(location,transpose,v);
};
lime.graphics.opengl.GL.useProgram = function(program) {
lime.graphics.opengl.GL.context.useProgram(program);
};
lime.graphics.opengl.GL.validateProgram = function(program) {
lime.graphics.opengl.GL.context.validateProgram(program);
};
lime.graphics.opengl.GL.vertexAttrib1f = function(indx,x) {
lime.graphics.opengl.GL.context.vertexAttrib1f(indx,x);
};
lime.graphics.opengl.GL.vertexAttrib1fv = function(indx,values) {
lime.graphics.opengl.GL.context.vertexAttrib1fv(indx,values);
};
lime.graphics.opengl.GL.vertexAttrib2f = function(indx,x,y) {
lime.graphics.opengl.GL.context.vertexAttrib2f(indx,x,y);
};
lime.graphics.opengl.GL.vertexAttrib2fv = function(indx,values) {
lime.graphics.opengl.GL.context.vertexAttrib2fv(indx,values);
};
lime.graphics.opengl.GL.vertexAttrib3f = function(indx,x,y,z) {
lime.graphics.opengl.GL.context.vertexAttrib3f(indx,x,y,z);
};
lime.graphics.opengl.GL.vertexAttrib3fv = function(indx,values) {
lime.graphics.opengl.GL.context.vertexAttrib3fv(indx,values);
};
lime.graphics.opengl.GL.vertexAttrib4f = function(indx,x,y,z,w) {
lime.graphics.opengl.GL.context.vertexAttrib4f(indx,x,y,z,w);
};
lime.graphics.opengl.GL.vertexAttrib4fv = function(indx,values) {
lime.graphics.opengl.GL.context.vertexAttrib4fv(indx,values);
};
lime.graphics.opengl.GL.vertexAttribPointer = function(indx,size,type,normalized,stride,offset) {
lime.graphics.opengl.GL.context.vertexAttribPointer(indx,size,type,normalized,stride,offset);
};
lime.graphics.opengl.GL.viewport = function(x,y,width,height) {
lime.graphics.opengl.GL.context.viewport(x,y,width,height);
};
lime.graphics.opengl.GL.get_version = function() {
return 2;
};
lime.graphics.utils = {};
lime.graphics.utils.ImageCanvasUtil = function() { };
$hxClasses["lime.graphics.utils.ImageCanvasUtil"] = lime.graphics.utils.ImageCanvasUtil;
lime.graphics.utils.ImageCanvasUtil.__name__ = ["lime","graphics","utils","ImageCanvasUtil"];
lime.graphics.utils.ImageCanvasUtil.colorTransform = function(image,rect,colorMatrix) {
lime.graphics.utils.ImageCanvasUtil.convertToCanvas(image);
lime.graphics.utils.ImageCanvasUtil.createImageData(image);
lime.graphics.utils.ImageDataUtil.colorTransform(image,rect,colorMatrix);
};
lime.graphics.utils.ImageCanvasUtil.convertToCanvas = function(image) {
var buffer = image.buffer;
if(buffer.__srcImage != null) {
if(buffer.__srcCanvas == null) {
lime.graphics.utils.ImageCanvasUtil.createCanvas(image,buffer.__srcImage.width,buffer.__srcImage.height);
buffer.__srcContext.drawImage(buffer.__srcImage,0,0);
}
buffer.__srcImage = null;
}
};
lime.graphics.utils.ImageCanvasUtil.convertToData = function(image) {
if(image.buffer.data == null) {
lime.graphics.utils.ImageCanvasUtil.convertToCanvas(image);
lime.graphics.utils.ImageCanvasUtil.createImageData(image);
image.buffer.__srcCanvas = null;
image.buffer.__srcContext = null;
}
};
lime.graphics.utils.ImageCanvasUtil.copyChannel = function(image,sourceImage,sourceRect,destPoint,sourceChannel,destChannel) {
lime.graphics.utils.ImageCanvasUtil.convertToCanvas(sourceImage);
lime.graphics.utils.ImageCanvasUtil.createImageData(sourceImage);
lime.graphics.utils.ImageCanvasUtil.convertToCanvas(image);
lime.graphics.utils.ImageCanvasUtil.createImageData(image);
lime.graphics.utils.ImageDataUtil.copyChannel(image,sourceImage,sourceRect,destPoint,sourceChannel,destChannel);
};
lime.graphics.utils.ImageCanvasUtil.copyPixels = function(image,sourceImage,sourceRect,destPoint,alphaImage,alphaPoint,mergeAlpha) {
if(mergeAlpha == null) mergeAlpha = false;
if(alphaImage != null && alphaImage.get_transparent()) {
if(alphaPoint == null) alphaPoint = new lime.math.Vector2();
var tempData = image.clone();
tempData.copyChannel(alphaImage,new lime.math.Rectangle(alphaPoint.x,alphaPoint.y,sourceRect.width,sourceRect.height),new lime.math.Vector2(sourceRect.x,sourceRect.y),lime.graphics.ImageChannel.ALPHA,lime.graphics.ImageChannel.ALPHA);
sourceImage = tempData;
}
lime.graphics.utils.ImageCanvasUtil.sync(image);
if(!mergeAlpha) {
if(image.get_transparent() && sourceImage.get_transparent()) image.buffer.__srcContext.clearRect(destPoint.x + image.offsetX,destPoint.y + image.offsetY,sourceRect.width + image.offsetX,sourceRect.height + image.offsetY);
}
lime.graphics.utils.ImageCanvasUtil.sync(sourceImage);
if(sourceImage.buffer.get_src() != null) image.buffer.__srcContext.drawImage(sourceImage.buffer.get_src(),sourceRect.x + sourceImage.offsetX | 0,sourceRect.y + sourceImage.offsetY | 0,sourceRect.width | 0,sourceRect.height | 0,destPoint.x + image.offsetX | 0,destPoint.y + image.offsetY | 0,sourceRect.width | 0,sourceRect.height | 0);
};
lime.graphics.utils.ImageCanvasUtil.createCanvas = function(image,width,height) {
var buffer = image.buffer;
if(buffer.__srcCanvas == null) {
buffer.__srcCanvas = window.document.createElement("canvas");
buffer.__srcCanvas.width = width;
buffer.__srcCanvas.height = height;
if(!image.get_transparent()) {
if(!image.get_transparent()) buffer.__srcCanvas.setAttribute("moz-opaque","true");
buffer.__srcContext = buffer.__srcCanvas.getContext ("2d", { alpha: false });
} else buffer.__srcContext = buffer.__srcCanvas.getContext("2d");
buffer.__srcContext.mozImageSmoothingEnabled = false;
buffer.__srcContext.webkitImageSmoothingEnabled = false;
buffer.__srcContext.imageSmoothingEnabled = false;
}
};
lime.graphics.utils.ImageCanvasUtil.createImageData = function(image) {
var buffer = image.buffer;
if(buffer.data == null) {
buffer.__srcImageData = buffer.__srcContext.getImageData(0,0,buffer.width,buffer.height);
buffer.data = buffer.__srcImageData.data;
}
};
lime.graphics.utils.ImageCanvasUtil.fillRect = function(image,rect,color) {
lime.graphics.utils.ImageCanvasUtil.convertToCanvas(image);
lime.graphics.utils.ImageCanvasUtil.sync(image);
if(rect.x == 0 && rect.y == 0 && rect.width == image.width && rect.height == image.height) {
if(image.get_transparent() && (color & -16777216) == 0) {
image.buffer.__srcCanvas.width = image.buffer.width;
return;
}
}
var a;
if(image.get_transparent()) a = (color & -16777216) >>> 24; else a = 255;
var r = (color & 16711680) >>> 16;
var g = (color & 65280) >>> 8;
var b = color & 255;
image.buffer.__srcContext.fillStyle = "rgba(" + r + ", " + g + ", " + b + ", " + a / 255 + ")";
image.buffer.__srcContext.fillRect(rect.x + image.offsetX,rect.y + image.offsetY,rect.width + image.offsetX,rect.height + image.offsetY);
};
lime.graphics.utils.ImageCanvasUtil.floodFill = function(image,x,y,color) {
lime.graphics.utils.ImageCanvasUtil.convertToCanvas(image);
lime.graphics.utils.ImageCanvasUtil.createImageData(image);
lime.graphics.utils.ImageDataUtil.floodFill(image,x,y,color);
};
lime.graphics.utils.ImageCanvasUtil.getPixel = function(image,x,y) {
lime.graphics.utils.ImageCanvasUtil.convertToCanvas(image);
lime.graphics.utils.ImageCanvasUtil.createImageData(image);
return lime.graphics.utils.ImageDataUtil.getPixel(image,x,y);
};
lime.graphics.utils.ImageCanvasUtil.getPixel32 = function(image,x,y) {
lime.graphics.utils.ImageCanvasUtil.convertToCanvas(image);
lime.graphics.utils.ImageCanvasUtil.createImageData(image);
return lime.graphics.utils.ImageDataUtil.getPixel32(image,x,y);
};
lime.graphics.utils.ImageCanvasUtil.getPixels = function(image,rect) {
lime.graphics.utils.ImageCanvasUtil.convertToCanvas(image);
lime.graphics.utils.ImageCanvasUtil.createImageData(image);
return lime.graphics.utils.ImageDataUtil.getPixels(image,rect);
};
lime.graphics.utils.ImageCanvasUtil.merge = function(image,sourceImage,sourceRect,destPoint,redMultiplier,greenMultiplier,blueMultiplier,alphaMultiplier) {
lime.graphics.utils.ImageCanvasUtil.convertToCanvas(sourceImage);
lime.graphics.utils.ImageCanvasUtil.createImageData(sourceImage);
lime.graphics.utils.ImageCanvasUtil.convertToCanvas(image);
lime.graphics.utils.ImageCanvasUtil.createImageData(image);
lime.graphics.utils.ImageDataUtil.merge(image,sourceImage,sourceRect,destPoint,redMultiplier,greenMultiplier,blueMultiplier,alphaMultiplier);
};
lime.graphics.utils.ImageCanvasUtil.resize = function(image,newWidth,newHeight) {
var buffer = image.buffer;
if(buffer.__srcCanvas == null) {
lime.graphics.utils.ImageCanvasUtil.createCanvas(image,newWidth,newHeight);
buffer.__srcContext.drawImage(buffer.get_src(),0,0,newWidth,newHeight);
} else {
var sourceCanvas = buffer.__srcCanvas;
buffer.__srcCanvas = null;
lime.graphics.utils.ImageCanvasUtil.createCanvas(image,newWidth,newHeight);
buffer.__srcContext.drawImage(sourceCanvas,0,0,newWidth,newHeight);
}
};
lime.graphics.utils.ImageCanvasUtil.setPixel = function(image,x,y,color) {
lime.graphics.utils.ImageCanvasUtil.convertToCanvas(image);
lime.graphics.utils.ImageCanvasUtil.createImageData(image);
lime.graphics.utils.ImageDataUtil.setPixel(image,x,y,color);
};
lime.graphics.utils.ImageCanvasUtil.setPixel32 = function(image,x,y,color) {
lime.graphics.utils.ImageCanvasUtil.convertToCanvas(image);
lime.graphics.utils.ImageCanvasUtil.createImageData(image);
lime.graphics.utils.ImageDataUtil.setPixel32(image,x,y,color);
};
lime.graphics.utils.ImageCanvasUtil.setPixels = function(image,rect,byteArray) {
lime.graphics.utils.ImageCanvasUtil.convertToCanvas(image);
lime.graphics.utils.ImageCanvasUtil.createImageData(image);
lime.graphics.utils.ImageDataUtil.setPixels(image,rect,byteArray);
};
lime.graphics.utils.ImageCanvasUtil.sync = function(image) {
if(image.dirty && image.type != lime.graphics.ImageType.DATA) {
image.buffer.__srcContext.putImageData(image.buffer.__srcImageData,0,0);
image.buffer.data = null;
image.dirty = false;
}
};
lime.graphics.utils.ImageDataUtil = function() { };
$hxClasses["lime.graphics.utils.ImageDataUtil"] = lime.graphics.utils.ImageDataUtil;
lime.graphics.utils.ImageDataUtil.__name__ = ["lime","graphics","utils","ImageDataUtil"];
lime.graphics.utils.ImageDataUtil.__alpha16 = null;
lime.graphics.utils.ImageDataUtil.__clamp = null;
lime.graphics.utils.ImageDataUtil.colorTransform = function(image,rect,colorMatrix) {
var data = image.buffer.data;
var stride = image.buffer.width * 4;
var offset;
var rowStart = Std["int"](rect.get_top() + image.offsetY);
var rowEnd = Std["int"](rect.get_bottom() + image.offsetY);
var columnStart = Std["int"](rect.get_left() + image.offsetX);
var columnEnd = Std["int"](rect.get_right() + image.offsetX);
var r;
var g;
var b;
var a;
var ex = 0;
var _g = rowStart;
while(_g < rowEnd) {
var row = _g++;
var _g1 = columnStart;
while(_g1 < columnEnd) {
var column = _g1++;
offset = row * stride + column * 4;
a = data[offset + 3] * colorMatrix[18] + colorMatrix[19] * 255 | 0;
if(a > 255) ex = a - 255; else ex = 0;
b = data[offset + 2] * colorMatrix[12] + colorMatrix[14] * 255 + ex | 0;
if(b > 255) ex = b - 255; else ex = 0;
g = data[offset + 1] * colorMatrix[6] + colorMatrix[9] * 255 + ex | 0;
if(g > 255) ex = g - 255; else ex = 0;
r = data[offset] * colorMatrix[0] + colorMatrix[4] * 255 + ex | 0;
if(r > 255) data[offset] = 255; else data[offset] = r;
if(g > 255) data[offset + 1] = 255; else data[offset + 1] = g;
if(b > 255) data[offset + 2] = 255; else data[offset + 2] = b;
if(a > 255) data[offset + 3] = 255; else data[offset + 3] = a;
}
}
image.dirty = true;
};
lime.graphics.utils.ImageDataUtil.copyChannel = function(image,sourceImage,sourceRect,destPoint,sourceChannel,destChannel) {
var destIdx;
switch(destChannel[1]) {
case 0:
destIdx = 0;
break;
case 1:
destIdx = 1;
break;
case 2:
destIdx = 2;
break;
case 3:
destIdx = 3;
break;
}
var srcIdx;
switch(sourceChannel[1]) {
case 0:
srcIdx = 0;
break;
case 1:
srcIdx = 1;
break;
case 2:
srcIdx = 2;
break;
case 3:
srcIdx = 3;
break;
}
var srcStride = sourceImage.buffer.width * 4 | 0;
var srcPosition = (sourceRect.x + sourceImage.offsetX) * 4 + srcStride * (sourceRect.y + sourceImage.offsetY) + srcIdx | 0;
var srcRowOffset = srcStride - (4 * (sourceRect.width + sourceImage.offsetX) | 0);
var srcRowEnd = 4 * (sourceRect.x + sourceImage.offsetX + sourceRect.width) | 0;
var srcData = sourceImage.buffer.data;
var destStride = image.buffer.width * 4 | 0;
var destPosition = (destPoint.x + image.offsetX) * 4 + destStride * (destPoint.y + image.offsetY) + destIdx | 0;
var destRowOffset = destStride - (4 * (sourceRect.width + image.offsetX) | 0);
var destRowEnd = 4 * (destPoint.x + image.offsetX + sourceRect.width) | 0;
var destData = image.buffer.data;
var length = sourceRect.width * sourceRect.height | 0;
var _g = 0;
while(_g < length) {
var i = _g++;
destData[destPosition] = srcData[srcPosition];
srcPosition += 4;
destPosition += 4;
if(srcPosition % srcStride > srcRowEnd) srcPosition += srcRowOffset;
if(destPosition % destStride > destRowEnd) destPosition += destRowOffset;
}
image.dirty = true;
};
lime.graphics.utils.ImageDataUtil.copyPixels = function(image,sourceImage,sourceRect,destPoint,alphaImage,alphaPoint,mergeAlpha) {
if(mergeAlpha == null) mergeAlpha = false;
if(alphaImage != null && alphaImage.get_transparent()) {
if(alphaPoint == null) alphaPoint = new lime.math.Vector2();
var tempData = image.clone();
tempData.copyChannel(alphaImage,new lime.math.Rectangle(alphaPoint.x,alphaPoint.y,sourceRect.width,sourceRect.height),new lime.math.Vector2(sourceRect.x,sourceRect.y),lime.graphics.ImageChannel.ALPHA,lime.graphics.ImageChannel.ALPHA);
sourceImage = tempData;
}
var rowOffset = destPoint.y + image.offsetY - sourceRect.y - sourceImage.offsetY | 0;
var columnOffset = destPoint.x + image.offsetX - sourceRect.x - sourceImage.offsetY | 0;
var sourceData = sourceImage.buffer.data;
var sourceStride = sourceImage.buffer.width * 4;
var sourceOffset = 0;
var data = image.buffer.data;
var stride = image.buffer.width * 4;
var offset = 0;
if(!mergeAlpha || !sourceImage.get_transparent()) {
var _g1 = Std["int"](sourceRect.get_top() + sourceImage.offsetY);
var _g = Std["int"](sourceRect.get_bottom() + sourceImage.offsetY);
while(_g1 < _g) {
var row = _g1++;
var _g3 = Std["int"](sourceRect.get_left() + sourceImage.offsetX);
var _g2 = Std["int"](sourceRect.get_right() + sourceImage.offsetX);
while(_g3 < _g2) {
var column = _g3++;
sourceOffset = row * sourceStride + column * 4;
offset = (row + rowOffset) * stride + (column + columnOffset) * 4;
data[offset] = sourceData[sourceOffset];
data[offset + 1] = sourceData[sourceOffset + 1];
data[offset + 2] = sourceData[sourceOffset + 2];
data[offset + 3] = sourceData[sourceOffset + 3];
}
}
} else {
var sourceAlpha;
var oneMinusSourceAlpha;
var _g11 = Std["int"](sourceRect.get_top() + sourceImage.offsetY);
var _g4 = Std["int"](sourceRect.get_bottom() + sourceImage.offsetY);
while(_g11 < _g4) {
var row1 = _g11++;
var _g31 = Std["int"](sourceRect.get_left() + sourceImage.offsetX);
var _g21 = Std["int"](sourceRect.get_right() + sourceImage.offsetX);
while(_g31 < _g21) {
var column1 = _g31++;
sourceOffset = row1 * sourceStride + column1 * 4;
offset = (row1 + rowOffset) * stride + (column1 + columnOffset) * 4;
sourceAlpha = sourceData[sourceOffset + 3] / 255;
oneMinusSourceAlpha = 1 - sourceAlpha;
data[offset] = lime.graphics.utils.ImageDataUtil.__clamp[sourceData[sourceOffset] + data[offset] * oneMinusSourceAlpha | 0];
data[offset + 1] = lime.graphics.utils.ImageDataUtil.__clamp[sourceData[sourceOffset + 1] + data[offset + 1] * oneMinusSourceAlpha | 0];
data[offset + 2] = lime.graphics.utils.ImageDataUtil.__clamp[sourceData[sourceOffset + 2] + data[offset + 2] * oneMinusSourceAlpha | 0];
data[offset + 3] = lime.graphics.utils.ImageDataUtil.__clamp[sourceData[sourceOffset + 3] + data[offset + 3] * oneMinusSourceAlpha | 0];
}
}
}
image.dirty = true;
};
lime.graphics.utils.ImageDataUtil.fillRect = function(image,rect,color) {
var a;
if(image.get_transparent()) a = (color & -16777216) >>> 24; else a = 255;
var r = (color & 16711680) >>> 16;
var g = (color & 65280) >>> 8;
var b = color & 255;
var rgba = r | g << 8 | b << 16 | a << 24;
var data = image.buffer.data;
if(rect.width == image.buffer.width && rect.height == image.buffer.height && rect.x == 0 && rect.y == 0 && image.offsetX == 0 && image.offsetY == 0) {
var length = image.buffer.width * image.buffer.height;
var j = 0;
var _g = 0;
while(_g < length) {
var i = _g++;
j = i * 4;
data[j] = r;
data[j + 1] = g;
data[j + 2] = b;
data[j + 3] = a;
}
} else {
var stride = image.buffer.width * 4;
var offset;
var rowStart = rect.y + image.offsetY | 0;
var rowEnd = Std["int"](rect.get_bottom() + image.offsetY);
var columnStart = rect.x + image.offsetX | 0;
var columnEnd = Std["int"](rect.get_right() + image.offsetX);
var _g1 = rowStart;
while(_g1 < rowEnd) {
var row = _g1++;
var _g11 = columnStart;
while(_g11 < columnEnd) {
var column = _g11++;
offset = row * stride + column * 4;
data[offset] = r;
data[offset + 1] = g;
data[offset + 2] = b;
data[offset + 3] = a;
}
}
}
image.dirty = true;
};
lime.graphics.utils.ImageDataUtil.floodFill = function(image,x,y,color) {
var data = image.buffer.data;
var offset = (y + image.offsetY) * (image.buffer.width * 4) + (x + image.offsetX) * 4;
var hitColorR = data[offset];
var hitColorG = data[offset + 1];
var hitColorB = data[offset + 2];
var hitColorA;
if(image.get_transparent()) hitColorA = data[offset + 3]; else hitColorA = 255;
var r = (color & 16711680) >>> 16;
var g = (color & 65280) >>> 8;
var b = color & 255;
var a;
if(image.get_transparent()) a = (color & -16777216) >>> 24; else a = 255;
if(hitColorR == r && hitColorG == g && hitColorB == b && hitColorA == a) return;
var dx = [0,-1,1,0];
var dy = [-1,0,0,1];
var minX = -image.offsetX;
var minY = -image.offsetY;
var maxX = minX + image.width;
var maxY = minY + image.height;
var queue = new Array();
queue.push(x);
queue.push(y);
while(queue.length > 0) {
var curPointY = queue.pop();
var curPointX = queue.pop();
var _g = 0;
while(_g < 4) {
var i = _g++;
var nextPointX = curPointX + dx[i];
var nextPointY = curPointY + dy[i];
if(nextPointX < minX || nextPointY < minY || nextPointX >= maxX || nextPointY >= maxY) continue;
var nextPointOffset = (nextPointY * image.width + nextPointX) * 4;
if(data[nextPointOffset] == hitColorR && data[nextPointOffset + 1] == hitColorG && data[nextPointOffset + 2] == hitColorB && data[nextPointOffset + 3] == hitColorA) {
data[nextPointOffset] = r;
data[nextPointOffset + 1] = g;
data[nextPointOffset + 2] = b;
data[nextPointOffset + 3] = a;
queue.push(nextPointX);
queue.push(nextPointY);
}
}
}
image.dirty = true;
};
lime.graphics.utils.ImageDataUtil.getPixel = function(image,x,y) {
var data = image.buffer.data;
var offset = 4 * (y + image.offsetY) * image.buffer.width + (x + image.offsetX) * 4;
if(image.get_premultiplied()) {
var unmultiply = 255.0 / data[offset + 3];
return lime.graphics.utils.ImageDataUtil.__clamp[data[offset] * unmultiply | 0] << 16 | lime.graphics.utils.ImageDataUtil.__clamp[data[offset + 1] * unmultiply | 0] << 8 | lime.graphics.utils.ImageDataUtil.__clamp[data[offset + 2] * unmultiply | 0];
} else return data[offset] << 16 | data[offset + 1] << 8 | data[offset + 2];
};
lime.graphics.utils.ImageDataUtil.getPixel32 = function(image,x,y) {
var data = image.buffer.data;
var offset = 4 * (y + image.offsetY) * image.buffer.width + (x + image.offsetX) * 4;
var a;
if(image.get_transparent()) a = data[offset + 3]; else a = 255;
if(image.get_premultiplied() && a != 0) {
var unmultiply = 255.0 / a;
return a << 24 | (function($this) {
var $r;
var index = Math.round(data[offset] * unmultiply);
$r = lime.graphics.utils.ImageDataUtil.__clamp[index];
return $r;
}(this)) << 16 | lime.graphics.utils.ImageDataUtil.__clamp[data[offset + 1] * unmultiply | 0] << 8 | lime.graphics.utils.ImageDataUtil.__clamp[data[offset + 2] * unmultiply | 0];
} else return a << 24 | data[offset] << 16 | data[offset + 1] << 8 | data[offset + 2];
};
lime.graphics.utils.ImageDataUtil.getPixels = function(image,rect) {
var byteArray = new lime.utils.ByteArray(image.width * image.height * 4);
var srcData = image.buffer.data;
var srcStride = image.buffer.width * 4 | 0;
var srcPosition = rect.x * 4 + srcStride * rect.y | 0;
var srcRowOffset = srcStride - (4 * rect.width | 0);
var srcRowEnd = 4 * (rect.x + rect.width) | 0;
var length = rect.width * rect.height | 0;
byteArray.set_length(length * 4);
var _g = 0;
while(_g < length) {
var i = _g++;
byteArray.__set(i * 4 + 1,srcData[srcPosition++]);
byteArray.__set(i * 4 + 2,srcData[srcPosition++]);
byteArray.__set(i * 4 + 3,srcData[srcPosition++]);
byteArray.__set(i * 4,srcData[srcPosition++]);
if(srcPosition % srcStride > srcRowEnd) srcPosition += srcRowOffset;
}
byteArray.position = 0;
return byteArray;
};
lime.graphics.utils.ImageDataUtil.merge = function(image,sourceImage,sourceRect,destPoint,redMultiplier,greenMultiplier,blueMultiplier,alphaMultiplier) {
var rowOffset = destPoint.y + image.offsetY - sourceRect.y - sourceImage.offsetY | 0;
var columnOffset = destPoint.x + image.offsetX - sourceRect.x - sourceImage.offsetY | 0;
var sourceData = sourceImage.buffer.data;
var sourceStride = sourceImage.buffer.width * 4;
var sourceOffset = 0;
var data = image.buffer.data;
var stride = image.buffer.width * 4;
var offset = 0;
var _g1 = Std["int"](sourceRect.get_top() + sourceImage.offsetY);
var _g = Std["int"](sourceRect.get_bottom() + sourceImage.offsetY);
while(_g1 < _g) {
var row = _g1++;
var _g3 = Std["int"](sourceRect.get_left() + sourceImage.offsetX);
var _g2 = Std["int"](sourceRect.get_right() + sourceImage.offsetX);
while(_g3 < _g2) {
var column = _g3++;
sourceOffset = row * sourceStride + column * 4;
offset = (row + rowOffset) * stride + (column + columnOffset) * 4;
data[offset] = (sourceData[offset] * redMultiplier + data[offset] * (256 - redMultiplier)) / 256 | 0;
data[offset + 1] = (sourceData[offset + 1] * greenMultiplier + data[offset + 1] * (256 - greenMultiplier)) / 256 | 0;
data[offset + 2] = (sourceData[offset + 2] * blueMultiplier + data[offset + 2] * (256 - blueMultiplier)) / 256 | 0;
data[offset + 3] = (sourceData[offset + 3] * alphaMultiplier + data[offset + 3] * (256 - alphaMultiplier)) / 256 | 0;
}
}
image.dirty = true;
};
lime.graphics.utils.ImageDataUtil.multiplyAlpha = function(image) {
var data = image.buffer.data;
if(data == null) return;
var index;
var a16;
var length = data.length / 4 | 0;
var _g = 0;
while(_g < length) {
var i = _g++;
index = i * 4;
var a161 = lime.graphics.utils.ImageDataUtil.__alpha16[data[index + 3]];
data[index] = data[index] * a161 >> 16;
data[index + 1] = data[index + 1] * a161 >> 16;
data[index + 2] = data[index + 2] * a161 >> 16;
}
image.buffer.premultiplied = true;
image.dirty = true;
};
lime.graphics.utils.ImageDataUtil.resize = function(image,newWidth,newHeight) {
var buffer = image.buffer;
var newBuffer = new lime.graphics.ImageBuffer(new Uint8Array(newWidth * newHeight * 4),newWidth,newHeight);
var imageWidth = image.width;
var imageHeight = image.height;
var data = image.get_data();
var newData = newBuffer.data;
var sourceIndex;
var sourceIndexX;
var sourceIndexY;
var sourceIndexXY;
var index;
var sourceX;
var sourceY;
var u;
var v;
var uRatio;
var vRatio;
var uOpposite;
var vOpposite;
var _g = 0;
while(_g < newHeight) {
var y = _g++;
var _g1 = 0;
while(_g1 < newWidth) {
var x = _g1++;
u = (x + 0.5) / newWidth * imageWidth - 0.5;
v = (y + 0.5) / newHeight * imageHeight - 0.5;
sourceX = u | 0;
sourceY = v | 0;
sourceIndex = (sourceY * imageWidth + sourceX) * 4;
if(sourceX < imageWidth - 1) sourceIndexX = sourceIndex + 4; else sourceIndexX = sourceIndex;
if(sourceY < imageHeight - 1) sourceIndexY = sourceIndex + imageWidth * 4; else sourceIndexY = sourceIndex;
if(sourceIndexX != sourceIndex) sourceIndexXY = sourceIndexY + 4; else sourceIndexXY = sourceIndexY;
index = (y * newWidth + x) * 4;
uRatio = u - sourceX;
vRatio = v - sourceY;
uOpposite = 1 - uRatio;
vOpposite = 1 - vRatio;
newData[index] = (data[sourceIndex] * uOpposite + data[sourceIndexX] * uRatio) * vOpposite + (data[sourceIndexY] * uOpposite + data[sourceIndexXY] * uRatio) * vRatio | 0;
newData[index + 1] = (data[sourceIndex + 1] * uOpposite + data[sourceIndexX + 1] * uRatio) * vOpposite + (data[sourceIndexY + 1] * uOpposite + data[sourceIndexXY + 1] * uRatio) * vRatio | 0;
newData[index + 2] = (data[sourceIndex + 2] * uOpposite + data[sourceIndexX + 2] * uRatio) * vOpposite + (data[sourceIndexY + 2] * uOpposite + data[sourceIndexXY + 2] * uRatio) * vRatio | 0;
if(data[sourceIndexX + 3] == 0 || data[sourceIndexY + 3] == 0 || data[sourceIndexXY + 3] == 0) newData[index + 3] = 0; else newData[index + 3] = data[sourceIndex + 3];
}
}
buffer.data = newData;
buffer.width = newWidth;
buffer.height = newHeight;
};
lime.graphics.utils.ImageDataUtil.resizeBuffer = function(image,newWidth,newHeight) {
var buffer = image.buffer;
var data = image.get_data();
var newData = new Uint8Array(newWidth * newHeight * 4);
var sourceIndex;
var index;
var _g1 = 0;
var _g = buffer.height;
while(_g1 < _g) {
var y = _g1++;
var _g3 = 0;
var _g2 = buffer.width;
while(_g3 < _g2) {
var x = _g3++;
sourceIndex = (y * buffer.width + x) * 4;
index = (y * newWidth + x) * 4;
newData[index] = data[sourceIndex];
newData[index + 1] = data[sourceIndex + 1];
newData[index + 2] = data[sourceIndex + 2];
newData[index + 3] = data[sourceIndex + 3];
}
}
buffer.data = newData;
buffer.width = newWidth;
buffer.height = newHeight;
};
lime.graphics.utils.ImageDataUtil.setPixel = function(image,x,y,color) {
var data = image.buffer.data;
var offset = 4 * (y + image.offsetY) * image.buffer.width + (x + image.offsetX) * 4;
data[offset] = (color & 16711680) >>> 16;
data[offset + 1] = (color & 65280) >>> 8;
data[offset + 2] = color & 255;
if(image.get_transparent()) data[offset + 3] = 255;
image.dirty = true;
};
lime.graphics.utils.ImageDataUtil.setPixel32 = function(image,x,y,color) {
var data = image.buffer.data;
var offset = 4 * (y + image.offsetY) * image.buffer.width + (x + image.offsetX) * 4;
var a;
if(image.get_transparent()) a = (color & -16777216) >>> 24; else a = 255;
if(image.get_transparent() && image.get_premultiplied()) {
var a16 = lime.graphics.utils.ImageDataUtil.__alpha16[a];
data[offset] = ((color & 16711680) >>> 16) * a16 >> 16;
data[offset + 1] = ((color & 65280) >>> 8) * a16 >> 16;
data[offset + 2] = (color & 255) * a16 >> 16;
data[offset + 3] = a;
} else {
data[offset] = (color & 16711680) >>> 16;
data[offset + 1] = (color & 65280) >>> 8;
data[offset + 2] = color & 255;
data[offset + 3] = a;
}
image.dirty = true;
};
lime.graphics.utils.ImageDataUtil.setPixels = function(image,rect,byteArray) {
var len = Math.round(rect.width * rect.height);
var data = image.buffer.data;
var offset = Math.round(image.buffer.width * (rect.y + image.offsetX) + (rect.x + image.offsetY));
var pos = offset * 4;
var boundR = Math.round(rect.x + rect.width + image.offsetX);
var width = image.buffer.width;
var color;
var _g = 0;
while(_g < len) {
var i = _g++;
if(pos % (width * 4) >= boundR * 4) pos += (width - boundR) * 4;
color = byteArray.readUnsignedInt();
data[pos++] = (color & 16711680) >>> 16;
data[pos++] = (color & 65280) >>> 8;
data[pos++] = color & 255;
data[pos++] = (color & -16777216) >>> 24;
}
image.dirty = true;
};
lime.graphics.utils.ImageDataUtil.unmultiplyAlpha = function(image) {
var data = image.buffer.data;
var index;
var a;
var unmultiply;
var length = data.length / 4 | 0;
var _g = 0;
while(_g < length) {
var i = _g++;
index = i * 4;
a = data[index + 3];
if(a != 0) {
unmultiply = 255.0 / a;
data[index] = lime.graphics.utils.ImageDataUtil.__clamp[data[index] * unmultiply | 0];
data[index + 1] = lime.graphics.utils.ImageDataUtil.__clamp[data[index + 1] * unmultiply | 0];
data[index + 2] = lime.graphics.utils.ImageDataUtil.__clamp[data[index + 2] * unmultiply | 0];
}
}
image.buffer.premultiplied = false;
image.dirty = true;
};
lime.math = {};
lime.math._ColorMatrix = {};
lime.math._ColorMatrix.ColorMatrix_Impl_ = function() { };
$hxClasses["lime.math._ColorMatrix.ColorMatrix_Impl_"] = lime.math._ColorMatrix.ColorMatrix_Impl_;
lime.math._ColorMatrix.ColorMatrix_Impl_.__name__ = ["lime","math","_ColorMatrix","ColorMatrix_Impl_"];
lime.math._ColorMatrix.ColorMatrix_Impl_.__properties__ = {set_redOffset:"set_redOffset",get_redOffset:"get_redOffset",set_redMultiplier:"set_redMultiplier",get_redMultiplier:"get_redMultiplier",set_greenOffset:"set_greenOffset",get_greenOffset:"get_greenOffset",set_greenMultiplier:"set_greenMultiplier",get_greenMultiplier:"get_greenMultiplier",set_color:"set_color",get_color:"get_color",set_blueOffset:"set_blueOffset",get_blueOffset:"get_blueOffset",set_blueMultiplier:"set_blueMultiplier",get_blueMultiplier:"get_blueMultiplier",set_alphaOffset:"set_alphaOffset",get_alphaOffset:"get_alphaOffset",set_alphaMultiplier:"set_alphaMultiplier",get_alphaMultiplier:"get_alphaMultiplier"}
lime.math._ColorMatrix.ColorMatrix_Impl_._new = function(data) {
var this1;
if(data != null && data.length == 20) this1 = data; else this1 = new Float32Array(lime.math._ColorMatrix.ColorMatrix_Impl_.__identity);
return this1;
};
lime.math._ColorMatrix.ColorMatrix_Impl_.clone = function(this1) {
return lime.math._ColorMatrix.ColorMatrix_Impl_._new(new Float32Array(this1));
};
lime.math._ColorMatrix.ColorMatrix_Impl_.concat = function(this1,second) {
var _g = this1;
var value = _g[0] + second[0];
_g[0] = value;
value;
var _g1 = this1;
var value1 = _g1[6] + second[6];
_g1[6] = value1;
value1;
var _g2 = this1;
var value2 = _g2[12] + second[12];
_g2[12] = value2;
value2;
var _g3 = this1;
var value3 = _g3[18] + second[18];
_g3[18] = value3;
value3;
};
lime.math._ColorMatrix.ColorMatrix_Impl_.copyFrom = function(this1,other) {
this1.set(other);
};
lime.math._ColorMatrix.ColorMatrix_Impl_.identity = function(this1) {
this1[0] = 1;
this1[1] = 0;
this1[2] = 0;
this1[3] = 0;
this1[4] = 0;
this1[5] = 0;
this1[6] = 1;
this1[7] = 0;
this1[8] = 0;
this1[9] = 0;
this1[10] = 0;
this1[11] = 0;
this1[12] = 1;
this1[13] = 0;
this1[14] = 0;
this1[15] = 0;
this1[16] = 0;
this1[17] = 0;
this1[18] = 1;
this1[19] = 0;
};
lime.math._ColorMatrix.ColorMatrix_Impl_.__toFlashColorTransform = function(this1) {
return null;
};
lime.math._ColorMatrix.ColorMatrix_Impl_.get_alphaMultiplier = function(this1) {
return this1[18];
};
lime.math._ColorMatrix.ColorMatrix_Impl_.set_alphaMultiplier = function(this1,value) {
this1[18] = value;
return value;
};
lime.math._ColorMatrix.ColorMatrix_Impl_.get_alphaOffset = function(this1) {
return this1[19] * 255;
};
lime.math._ColorMatrix.ColorMatrix_Impl_.set_alphaOffset = function(this1,value) {
this1[19] = value / 255;
return value;
};
lime.math._ColorMatrix.ColorMatrix_Impl_.get_blueMultiplier = function(this1) {
return this1[12];
};
lime.math._ColorMatrix.ColorMatrix_Impl_.set_blueMultiplier = function(this1,value) {
this1[12] = value;
return value;
};
lime.math._ColorMatrix.ColorMatrix_Impl_.get_blueOffset = function(this1) {
return this1[14] * 255;
};
lime.math._ColorMatrix.ColorMatrix_Impl_.set_blueOffset = function(this1,value) {
this1[14] = value / 255;
return value;
};
lime.math._ColorMatrix.ColorMatrix_Impl_.get_color = function(this1) {
return (this1[4] * 255 | 0) << 16 | (this1[9] * 255 | 0) << 8 | (this1[14] * 255 | 0);
};
lime.math._ColorMatrix.ColorMatrix_Impl_.set_color = function(this1,value) {
var value1 = value >> 16 & 255;
this1[4] = value1 / 255;
value1;
var value2 = value >> 8 & 255;
this1[9] = value2 / 255;
value2;
var value3 = value & 255;
this1[14] = value3 / 255;
value3;
this1[0] = 0;
0;
this1[6] = 0;
0;
this1[12] = 0;
0;
return lime.math._ColorMatrix.ColorMatrix_Impl_.get_color(this1);
};
lime.math._ColorMatrix.ColorMatrix_Impl_.get_greenMultiplier = function(this1) {
return this1[6];
};
lime.math._ColorMatrix.ColorMatrix_Impl_.set_greenMultiplier = function(this1,value) {
this1[6] = value;
return value;
};
lime.math._ColorMatrix.ColorMatrix_Impl_.get_greenOffset = function(this1) {
return this1[9] * 255;
};
lime.math._ColorMatrix.ColorMatrix_Impl_.set_greenOffset = function(this1,value) {
this1[9] = value / 255;
return value;
};
lime.math._ColorMatrix.ColorMatrix_Impl_.get_redMultiplier = function(this1) {
return this1[0];
};
lime.math._ColorMatrix.ColorMatrix_Impl_.set_redMultiplier = function(this1,value) {
this1[0] = value;
return value;
};
lime.math._ColorMatrix.ColorMatrix_Impl_.get_redOffset = function(this1) {
return this1[4] * 255;
};
lime.math._ColorMatrix.ColorMatrix_Impl_.set_redOffset = function(this1,value) {
this1[4] = value / 255;
return value;
};
lime.math._ColorMatrix.ColorMatrix_Impl_.get = function(this1,index) {
return this1[index];
};
lime.math._ColorMatrix.ColorMatrix_Impl_.set = function(this1,index,value) {
this1[index] = value;
return value;
};
lime.math.Matrix3 = function(a,b,c,d,tx,ty) {
if(ty == null) ty = 0;
if(tx == null) tx = 0;
if(d == null) d = 1;
if(c == null) c = 0;
if(b == null) b = 0;
if(a == null) a = 1;
this.a = a;
this.b = b;
this.c = c;
this.d = d;
this.tx = tx;
this.ty = ty;
};
$hxClasses["lime.math.Matrix3"] = lime.math.Matrix3;
lime.math.Matrix3.__name__ = ["lime","math","Matrix3"];
lime.math.Matrix3.prototype = {
clone: function() {
return new lime.math.Matrix3(this.a,this.b,this.c,this.d,this.tx,this.ty);
}
,concat: function(m) {
var a1 = this.a * m.a + this.b * m.c;
this.b = this.a * m.b + this.b * m.d;
this.a = a1;
var c1 = this.c * m.a + this.d * m.c;
this.d = this.c * m.b + this.d * m.d;
this.c = c1;
var tx1 = this.tx * m.a + this.ty * m.c + m.tx;
this.ty = this.tx * m.b + this.ty * m.d + m.ty;
this.tx = tx1;
}
,copyColumnFrom: function(column,vector4) {
if(column > 2) throw "Column " + column + " out of bounds (2)"; else if(column == 0) {
this.a = vector4.x;
this.c = vector4.y;
} else if(column == 1) {
this.b = vector4.x;
this.d = vector4.y;
} else {
this.tx = vector4.x;
this.ty = vector4.y;
}
}
,copyColumnTo: function(column,vector4) {
if(column > 2) throw "Column " + column + " out of bounds (2)"; else if(column == 0) {
vector4.x = this.a;
vector4.y = this.c;
vector4.z = 0;
} else if(column == 1) {
vector4.x = this.b;
vector4.y = this.d;
vector4.z = 0;
} else {
vector4.x = this.tx;
vector4.y = this.ty;
vector4.z = 1;
}
}
,copyFrom: function(sourceMatrix3) {
this.a = sourceMatrix3.a;
this.b = sourceMatrix3.b;
this.c = sourceMatrix3.c;
this.d = sourceMatrix3.d;
this.tx = sourceMatrix3.tx;
this.ty = sourceMatrix3.ty;
}
,copyRowFrom: function(row,vector4) {
if(row > 2) throw "Row " + row + " out of bounds (2)"; else if(row == 0) {
this.a = vector4.x;
this.c = vector4.y;
} else if(row == 1) {
this.b = vector4.x;
this.d = vector4.y;
} else {
this.tx = vector4.x;
this.ty = vector4.y;
}
}
,copyRowTo: function(row,vector4) {
if(row > 2) throw "Row " + row + " out of bounds (2)"; else if(row == 0) {
vector4.x = this.a;
vector4.y = this.b;
vector4.z = this.tx;
} else if(row == 1) {
vector4.x = this.c;
vector4.y = this.d;
vector4.z = this.ty;
} else {
vector4.x = 0;
vector4.y = 0;
vector4.z = 1;
}
}
,createBox: function(scaleX,scaleY,rotation,tx,ty) {
if(ty == null) ty = 0;
if(tx == null) tx = 0;
if(rotation == null) rotation = 0;
this.a = scaleX;
this.d = scaleY;
this.b = rotation;
this.tx = tx;
this.ty = ty;
}
,createGradientBox: function(width,height,rotation,tx,ty) {
if(ty == null) ty = 0;
if(tx == null) tx = 0;
if(rotation == null) rotation = 0;
this.a = width / 1638.4;
this.d = height / 1638.4;
if(rotation != 0) {
var cos = Math.cos(rotation);
var sin = Math.sin(rotation);
this.b = sin * this.d;
this.c = -sin * this.a;
this.a *= cos;
this.d *= cos;
} else {
this.b = 0;
this.c = 0;
}
this.tx = tx + width / 2;
this.ty = ty + height / 2;
}
,equals: function(Matrix3) {
return Matrix3 != null && this.tx == Matrix3.tx && this.ty == Matrix3.ty && this.a == Matrix3.a && this.b == Matrix3.b && this.c == Matrix3.c && this.d == Matrix3.d;
}
,deltaTransformVector2: function(Vector2) {
return new lime.math.Vector2(Vector2.x * this.a + Vector2.y * this.c,Vector2.x * this.b + Vector2.y * this.d);
}
,identity: function() {
this.a = 1;
this.b = 0;
this.c = 0;
this.d = 1;
this.tx = 0;
this.ty = 0;
}
,invert: function() {
var norm = this.a * this.d - this.b * this.c;
if(norm == 0) {
this.a = this.b = this.c = this.d = 0;
this.tx = -this.tx;
this.ty = -this.ty;
} else {
norm = 1.0 / norm;
var a1 = this.d * norm;
this.d = this.a * norm;
this.a = a1;
this.b *= -norm;
this.c *= -norm;
var tx1 = -this.a * this.tx - this.c * this.ty;
this.ty = -this.b * this.tx - this.d * this.ty;
this.tx = tx1;
}
return this;
}
,mult: function(m) {
var result = new lime.math.Matrix3(this.a,this.b,this.c,this.d,this.tx,this.ty);
result.concat(m);
return result;
}
,rotate: function(theta) {
var cos = Math.cos(theta);
var sin = Math.sin(theta);
var a1 = this.a * cos - this.b * sin;
this.b = this.a * sin + this.b * cos;
this.a = a1;
var c1 = this.c * cos - this.d * sin;
this.d = this.c * sin + this.d * cos;
this.c = c1;
var tx1 = this.tx * cos - this.ty * sin;
this.ty = this.tx * sin + this.ty * cos;
this.tx = tx1;
}
,scale: function(sx,sy) {
this.a *= sx;
this.b *= sy;
this.c *= sx;
this.d *= sy;
this.tx *= sx;
this.ty *= sy;
}
,setRotation: function(theta,scale) {
if(scale == null) scale = 1;
this.a = Math.cos(theta) * scale;
this.c = Math.sin(theta) * scale;
this.b = -this.c;
this.d = this.a;
}
,setTo: function(a,b,c,d,tx,ty) {
this.a = a;
this.b = b;
this.c = c;
this.d = d;
this.tx = tx;
this.ty = ty;
}
,to3DString: function(roundPixels) {
if(roundPixels == null) roundPixels = false;
if(roundPixels) return "Matrix33d(" + this.a + ", " + this.b + ", " + "0, 0, " + this.c + ", " + this.d + ", " + "0, 0, 0, 0, 1, 0, " + (this.tx | 0) + ", " + (this.ty | 0) + ", 0, 1)"; else return "Matrix33d(" + this.a + ", " + this.b + ", " + "0, 0, " + this.c + ", " + this.d + ", " + "0, 0, 0, 0, 1, 0, " + this.tx + ", " + this.ty + ", 0, 1)";
}
,toMozString: function() {
return "Matrix3(" + this.a + ", " + this.b + ", " + this.c + ", " + this.d + ", " + this.tx + "px, " + this.ty + "px)";
}
,toString: function() {
return "Matrix3(" + this.a + ", " + this.b + ", " + this.c + ", " + this.d + ", " + this.tx + ", " + this.ty + ")";
}
,transformVector2: function(pos) {
return new lime.math.Vector2(pos.x * this.a + pos.y * this.c + this.tx,pos.x * this.b + pos.y * this.d + this.ty);
}
,translate: function(dx,dy) {
var m = new lime.math.Matrix3();
m.tx = dx;
m.ty = dy;
this.concat(m);
}
,__cleanValues: function() {
this.a = Math.round(this.a * 1000) / 1000;
this.b = Math.round(this.b * 1000) / 1000;
this.c = Math.round(this.c * 1000) / 1000;
this.d = Math.round(this.d * 1000) / 1000;
this.tx = Math.round(this.tx * 10) / 10;
this.ty = Math.round(this.ty * 10) / 10;
}
,__transformX: function(pos) {
return pos.x * this.a + pos.y * this.c + this.tx;
}
,__transformY: function(pos) {
return pos.x * this.b + pos.y * this.d + this.ty;
}
,__translateTransformed: function(pos) {
this.tx = pos.x * this.a + pos.y * this.c + this.tx;
this.ty = pos.x * this.b + pos.y * this.d + this.ty;
}
,__class__: lime.math.Matrix3
};
lime.math._Matrix4 = {};
lime.math._Matrix4.Matrix4_Impl_ = function() { };
$hxClasses["lime.math._Matrix4.Matrix4_Impl_"] = lime.math._Matrix4.Matrix4_Impl_;
lime.math._Matrix4.Matrix4_Impl_.__name__ = ["lime","math","_Matrix4","Matrix4_Impl_"];
lime.math._Matrix4.Matrix4_Impl_.__properties__ = {set_position:"set_position",get_position:"get_position",get_determinant:"get_determinant"}
lime.math._Matrix4.Matrix4_Impl_._new = function(data) {
var this1;
if(data != null && data.length == 16) this1 = data; else this1 = new Float32Array(lime.math._Matrix4.Matrix4_Impl_.__identity);
return this1;
};
lime.math._Matrix4.Matrix4_Impl_.append = function(this1,lhs) {
var m111 = this1[0];
var m121 = this1[4];
var m131 = this1[8];
var m141 = this1[12];
var m112 = this1[1];
var m122 = this1[5];
var m132 = this1[9];
var m142 = this1[13];
var m113 = this1[2];
var m123 = this1[6];
var m133 = this1[10];
var m143 = this1[14];
var m114 = this1[3];
var m124 = this1[7];
var m134 = this1[11];
var m144 = this1[15];
var m211 = lime.math._Matrix4.Matrix4_Impl_.get(lhs,0);
var m221 = lime.math._Matrix4.Matrix4_Impl_.get(lhs,4);
var m231 = lime.math._Matrix4.Matrix4_Impl_.get(lhs,8);
var m241 = lime.math._Matrix4.Matrix4_Impl_.get(lhs,12);
var m212 = lime.math._Matrix4.Matrix4_Impl_.get(lhs,1);
var m222 = lime.math._Matrix4.Matrix4_Impl_.get(lhs,5);
var m232 = lime.math._Matrix4.Matrix4_Impl_.get(lhs,9);
var m242 = lime.math._Matrix4.Matrix4_Impl_.get(lhs,13);
var m213 = lime.math._Matrix4.Matrix4_Impl_.get(lhs,2);
var m223 = lime.math._Matrix4.Matrix4_Impl_.get(lhs,6);
var m233 = lime.math._Matrix4.Matrix4_Impl_.get(lhs,10);
var m243 = lime.math._Matrix4.Matrix4_Impl_.get(lhs,14);
var m214 = lime.math._Matrix4.Matrix4_Impl_.get(lhs,3);
var m224 = lime.math._Matrix4.Matrix4_Impl_.get(lhs,7);
var m234 = lime.math._Matrix4.Matrix4_Impl_.get(lhs,11);
var m244 = lime.math._Matrix4.Matrix4_Impl_.get(lhs,15);
this1[0] = m111 * m211 + m112 * m221 + m113 * m231 + m114 * m241;
this1[1] = m111 * m212 + m112 * m222 + m113 * m232 + m114 * m242;
this1[2] = m111 * m213 + m112 * m223 + m113 * m233 + m114 * m243;
this1[3] = m111 * m214 + m112 * m224 + m113 * m234 + m114 * m244;
this1[4] = m121 * m211 + m122 * m221 + m123 * m231 + m124 * m241;
this1[5] = m121 * m212 + m122 * m222 + m123 * m232 + m124 * m242;
this1[6] = m121 * m213 + m122 * m223 + m123 * m233 + m124 * m243;
this1[7] = m121 * m214 + m122 * m224 + m123 * m234 + m124 * m244;
this1[8] = m131 * m211 + m132 * m221 + m133 * m231 + m134 * m241;
this1[9] = m131 * m212 + m132 * m222 + m133 * m232 + m134 * m242;
this1[10] = m131 * m213 + m132 * m223 + m133 * m233 + m134 * m243;
this1[11] = m131 * m214 + m132 * m224 + m133 * m234 + m134 * m244;
this1[12] = m141 * m211 + m142 * m221 + m143 * m231 + m144 * m241;
this1[13] = m141 * m212 + m142 * m222 + m143 * m232 + m144 * m242;
this1[14] = m141 * m213 + m142 * m223 + m143 * m233 + m144 * m243;
this1[15] = m141 * m214 + m142 * m224 + m143 * m234 + m144 * m244;
};
lime.math._Matrix4.Matrix4_Impl_.appendRotation = function(this1,degrees,axis,pivotPoint) {
var m = lime.math._Matrix4.Matrix4_Impl_.getAxisRotation(axis.x,axis.y,axis.z,degrees);
if(pivotPoint != null) {
var p = pivotPoint;
lime.math._Matrix4.Matrix4_Impl_.appendTranslation(m,p.x,p.y,p.z);
}
lime.math._Matrix4.Matrix4_Impl_.append(this1,m);
};
lime.math._Matrix4.Matrix4_Impl_.appendScale = function(this1,xScale,yScale,zScale) {
lime.math._Matrix4.Matrix4_Impl_.append(this1,lime.math._Matrix4.Matrix4_Impl_._new(new Float32Array([xScale,0.0,0.0,0.0,0.0,yScale,0.0,0.0,0.0,0.0,zScale,0.0,0.0,0.0,0.0,1.0])));
};
lime.math._Matrix4.Matrix4_Impl_.appendTranslation = function(this1,x,y,z) {
this1[12] = this1[12] + x;
this1[13] = this1[13] + y;
this1[14] = this1[14] + z;
};
lime.math._Matrix4.Matrix4_Impl_.clone = function(this1) {
return lime.math._Matrix4.Matrix4_Impl_._new(new Float32Array(this1));
};
lime.math._Matrix4.Matrix4_Impl_.copyColumnFrom = function(this1,column,vector) {
switch(column) {
case 0:
this1[0] = vector.x;
this1[1] = vector.y;
this1[2] = vector.z;
this1[3] = vector.w;
break;
case 1:
this1[4] = vector.x;
this1[5] = vector.y;
this1[6] = vector.z;
this1[7] = vector.w;
break;
case 2:
this1[8] = vector.x;
this1[9] = vector.y;
this1[10] = vector.z;
this1[11] = vector.w;
break;
case 3:
this1[12] = vector.x;
this1[13] = vector.y;
this1[14] = vector.z;
this1[15] = vector.w;
break;
default:
throw "Error, Column " + column + " out of bounds [0, ..., 3]";
}
};
lime.math._Matrix4.Matrix4_Impl_.copyColumnTo = function(this1,column,vector) {
switch(column) {
case 0:
vector.x = this1[0];
vector.y = this1[1];
vector.z = this1[2];
vector.w = this1[3];
break;
case 1:
vector.x = this1[4];
vector.y = this1[5];
vector.z = this1[6];
vector.w = this1[7];
break;
case 2:
vector.x = this1[8];
vector.y = this1[9];
vector.z = this1[10];
vector.w = this1[11];
break;
case 3:
vector.x = this1[12];
vector.y = this1[13];
vector.z = this1[14];
vector.w = this1[15];
break;
default:
throw "Error, Column " + column + " out of bounds [0, ..., 3]";
}
};
lime.math._Matrix4.Matrix4_Impl_.copyFrom = function(this1,other) {
this1.set(other);
};
lime.math._Matrix4.Matrix4_Impl_.copythisFrom = function(this1,array,index,transposeValues) {
if(transposeValues == null) transposeValues = false;
if(index == null) index = 0;
if(transposeValues) lime.math._Matrix4.Matrix4_Impl_.transpose(this1);
var l = array.length - index;
var _g = 0;
while(_g < l) {
var c = _g++;
this1[c] = array[c + index];
}
if(transposeValues) lime.math._Matrix4.Matrix4_Impl_.transpose(this1);
};
lime.math._Matrix4.Matrix4_Impl_.copythisTo = function(this1,array,index,transposeValues) {
if(transposeValues == null) transposeValues = false;
if(index == null) index = 0;
if(transposeValues) lime.math._Matrix4.Matrix4_Impl_.transpose(this1);
var l = this1.length;
var _g = 0;
while(_g < l) {
var c = _g++;
array[c + index] = this1[c];
}
if(transposeValues) lime.math._Matrix4.Matrix4_Impl_.transpose(this1);
};
lime.math._Matrix4.Matrix4_Impl_.copyRowFrom = function(this1,row,vector) {
switch(row) {
case 0:
this1[0] = vector.x;
this1[4] = vector.y;
this1[8] = vector.z;
this1[12] = vector.w;
break;
case 1:
this1[1] = vector.x;
this1[5] = vector.y;
this1[9] = vector.z;
this1[13] = vector.w;
break;
case 2:
this1[2] = vector.x;
this1[6] = vector.y;
this1[10] = vector.z;
this1[14] = vector.w;
break;
case 3:
this1[3] = vector.x;
this1[7] = vector.y;
this1[11] = vector.z;
this1[15] = vector.w;
break;
default:
throw "Error, Row " + Std.string((function($this) {
var $r;
var $int = row;
$r = $int < 0?4294967296.0 + $int:$int + 0.0;
return $r;
}(this))) + " out of bounds [0, ..., 3]";
}
};
lime.math._Matrix4.Matrix4_Impl_.create2D = function(x,y,scale,rotation) {
if(rotation == null) rotation = 0;
if(scale == null) scale = 1;
var theta = rotation * Math.PI / 180.0;
var c = Math.cos(theta);
var s = Math.sin(theta);
return lime.math._Matrix4.Matrix4_Impl_._new(new Float32Array([c * scale,-s * scale,0,0,s * scale,c * scale,0,0,0,0,1,0,x,y,0,1]));
};
lime.math._Matrix4.Matrix4_Impl_.createABCD = function(a,b,c,d,tx,ty) {
return lime.math._Matrix4.Matrix4_Impl_._new(new Float32Array([a,b,0,0,c,d,0,0,0,0,1,0,tx,ty,0,1]));
};
lime.math._Matrix4.Matrix4_Impl_.createOrtho = function(x0,x1,y0,y1,zNear,zFar) {
var sx = 1.0 / (x1 - x0);
var sy = 1.0 / (y1 - y0);
var sz = 1.0 / (zFar - zNear);
return lime.math._Matrix4.Matrix4_Impl_._new(new Float32Array([2.0 * sx,0,0,0,0,2.0 * sy,0,0,0,0,-2. * sz,0,-(x0 + x1) * sx,-(y0 + y1) * sy,-(zNear + zFar) * sz,1]));
};
lime.math._Matrix4.Matrix4_Impl_.copyRowTo = function(this1,row,vector) {
switch(row) {
case 0:
vector.x = this1[0];
vector.y = this1[4];
vector.z = this1[8];
vector.w = this1[12];
break;
case 1:
vector.x = this1[1];
vector.y = this1[5];
vector.z = this1[9];
vector.w = this1[13];
break;
case 2:
vector.x = this1[2];
vector.y = this1[6];
vector.z = this1[10];
vector.w = this1[14];
break;
case 3:
vector.x = this1[3];
vector.y = this1[7];
vector.z = this1[11];
vector.w = this1[15];
break;
default:
throw "Error, Row " + row + " out of bounds [0, ..., 3]";
}
};
lime.math._Matrix4.Matrix4_Impl_.copyToMatrix4 = function(this1,other) {
(js.Boot.__cast(other , Float32Array)).set(this1);
};
lime.math._Matrix4.Matrix4_Impl_.deltaTransformVector = function(this1,v) {
var x = v.x;
var y = v.y;
var z = v.z;
return new lime.math.Vector4(x * this1[0] + y * this1[4] + z * this1[8] + this1[3],x * this1[1] + y * this1[5] + z * this1[9] + this1[7],x * this1[2] + y * this1[6] + z * this1[10] + this1[11],0);
};
lime.math._Matrix4.Matrix4_Impl_.identity = function(this1) {
this1[0] = 1;
this1[1] = 0;
this1[2] = 0;
this1[3] = 0;
this1[4] = 0;
this1[5] = 1;
this1[6] = 0;
this1[7] = 0;
this1[8] = 0;
this1[9] = 0;
this1[10] = 1;
this1[11] = 0;
this1[12] = 0;
this1[13] = 0;
this1[14] = 0;
this1[15] = 1;
};
lime.math._Matrix4.Matrix4_Impl_.interpolate = function(thisMat,toMat,percent) {
var m = lime.math._Matrix4.Matrix4_Impl_._new();
var _g = 0;
while(_g < 16) {
var i = _g++;
lime.math._Matrix4.Matrix4_Impl_.set(m,i,lime.math._Matrix4.Matrix4_Impl_.get(thisMat,i) + (lime.math._Matrix4.Matrix4_Impl_.get(toMat,i) - lime.math._Matrix4.Matrix4_Impl_.get(thisMat,i)) * percent);
}
return m;
};
lime.math._Matrix4.Matrix4_Impl_.interpolateTo = function(this1,toMat,percent) {
var _g = 0;
while(_g < 16) {
var i = _g++;
this1[i] = this1[i] + (lime.math._Matrix4.Matrix4_Impl_.get(toMat,i) - this1[i]) * percent;
}
};
lime.math._Matrix4.Matrix4_Impl_.invert = function(this1) {
var d = lime.math._Matrix4.Matrix4_Impl_.get_determinant(this1);
var invertable = Math.abs(d) > 0.00000000001;
if(invertable) {
d = 1 / d;
var m11 = this1[0];
var m21 = this1[4];
var m31 = this1[8];
var m41 = this1[12];
var m12 = this1[1];
var m22 = this1[5];
var m32 = this1[9];
var m42 = this1[13];
var m13 = this1[2];
var m23 = this1[6];
var m33 = this1[10];
var m43 = this1[14];
var m14 = this1[3];
var m24 = this1[7];
var m34 = this1[11];
var m44 = this1[15];
this1[0] = d * (m22 * (m33 * m44 - m43 * m34) - m32 * (m23 * m44 - m43 * m24) + m42 * (m23 * m34 - m33 * m24));
this1[1] = -d * (m12 * (m33 * m44 - m43 * m34) - m32 * (m13 * m44 - m43 * m14) + m42 * (m13 * m34 - m33 * m14));
this1[2] = d * (m12 * (m23 * m44 - m43 * m24) - m22 * (m13 * m44 - m43 * m14) + m42 * (m13 * m24 - m23 * m14));
this1[3] = -d * (m12 * (m23 * m34 - m33 * m24) - m22 * (m13 * m34 - m33 * m14) + m32 * (m13 * m24 - m23 * m14));
this1[4] = -d * (m21 * (m33 * m44 - m43 * m34) - m31 * (m23 * m44 - m43 * m24) + m41 * (m23 * m34 - m33 * m24));
this1[5] = d * (m11 * (m33 * m44 - m43 * m34) - m31 * (m13 * m44 - m43 * m14) + m41 * (m13 * m34 - m33 * m14));
this1[6] = -d * (m11 * (m23 * m44 - m43 * m24) - m21 * (m13 * m44 - m43 * m14) + m41 * (m13 * m24 - m23 * m14));
this1[7] = d * (m11 * (m23 * m34 - m33 * m24) - m21 * (m13 * m34 - m33 * m14) + m31 * (m13 * m24 - m23 * m14));
this1[8] = d * (m21 * (m32 * m44 - m42 * m34) - m31 * (m22 * m44 - m42 * m24) + m41 * (m22 * m34 - m32 * m24));
this1[9] = -d * (m11 * (m32 * m44 - m42 * m34) - m31 * (m12 * m44 - m42 * m14) + m41 * (m12 * m34 - m32 * m14));
this1[10] = d * (m11 * (m22 * m44 - m42 * m24) - m21 * (m12 * m44 - m42 * m14) + m41 * (m12 * m24 - m22 * m14));
this1[11] = -d * (m11 * (m22 * m34 - m32 * m24) - m21 * (m12 * m34 - m32 * m14) + m31 * (m12 * m24 - m22 * m14));
this1[12] = -d * (m21 * (m32 * m43 - m42 * m33) - m31 * (m22 * m43 - m42 * m23) + m41 * (m22 * m33 - m32 * m23));
this1[13] = d * (m11 * (m32 * m43 - m42 * m33) - m31 * (m12 * m43 - m42 * m13) + m41 * (m12 * m33 - m32 * m13));
this1[14] = -d * (m11 * (m22 * m43 - m42 * m23) - m21 * (m12 * m43 - m42 * m13) + m41 * (m12 * m23 - m22 * m13));
this1[15] = d * (m11 * (m22 * m33 - m32 * m23) - m21 * (m12 * m33 - m32 * m13) + m31 * (m12 * m23 - m22 * m13));
}
return invertable;
};
lime.math._Matrix4.Matrix4_Impl_.pointAt = function(this1,pos,at,up) {
if(at == null) at = new lime.math.Vector4(0,0,-1);
if(up == null) up = new lime.math.Vector4(0,-1,0);
var dir = new lime.math.Vector4(at.x - pos.x,at.y - pos.y,at.z - pos.z);
var vup = new lime.math.Vector4(up.x,up.y,up.z,up.w);
var right;
dir.normalize();
vup.normalize();
var dir2 = new lime.math.Vector4(dir.x,dir.y,dir.z,dir.w);
dir2.scaleBy(vup.x * dir.x + vup.y * dir.y + vup.z * dir.z);
vup = new lime.math.Vector4(vup.x - dir2.x,vup.y - dir2.y,vup.z - dir2.z);
if(Math.sqrt(vup.x * vup.x + vup.y * vup.y + vup.z * vup.z) > 0) vup.normalize(); else if(dir.x != 0) vup = new lime.math.Vector4(-dir.y,dir.x,0); else vup = new lime.math.Vector4(1,0,0);
right = new lime.math.Vector4(vup.y * dir.z - vup.z * dir.y,vup.z * dir.x - vup.x * dir.z,vup.x * dir.y - vup.y * dir.x,1);
right.normalize();
this1[0] = right.x;
this1[4] = right.y;
this1[8] = right.z;
this1[12] = 0.0;
this1[1] = vup.x;
this1[5] = vup.y;
this1[9] = vup.z;
this1[13] = 0.0;
this1[2] = dir.x;
this1[6] = dir.y;
this1[10] = dir.z;
this1[14] = 0.0;
this1[3] = pos.x;
this1[7] = pos.y;
this1[11] = pos.z;
this1[15] = 1.0;
};
lime.math._Matrix4.Matrix4_Impl_.prepend = function(this1,rhs) {
var m111 = lime.math._Matrix4.Matrix4_Impl_.get(rhs,0);
var m121 = lime.math._Matrix4.Matrix4_Impl_.get(rhs,4);
var m131 = lime.math._Matrix4.Matrix4_Impl_.get(rhs,8);
var m141 = lime.math._Matrix4.Matrix4_Impl_.get(rhs,12);
var m112 = lime.math._Matrix4.Matrix4_Impl_.get(rhs,1);
var m122 = lime.math._Matrix4.Matrix4_Impl_.get(rhs,5);
var m132 = lime.math._Matrix4.Matrix4_Impl_.get(rhs,9);
var m142 = lime.math._Matrix4.Matrix4_Impl_.get(rhs,13);
var m113 = lime.math._Matrix4.Matrix4_Impl_.get(rhs,2);
var m123 = lime.math._Matrix4.Matrix4_Impl_.get(rhs,6);
var m133 = lime.math._Matrix4.Matrix4_Impl_.get(rhs,10);
var m143 = lime.math._Matrix4.Matrix4_Impl_.get(rhs,14);
var m114 = lime.math._Matrix4.Matrix4_Impl_.get(rhs,3);
var m124 = lime.math._Matrix4.Matrix4_Impl_.get(rhs,7);
var m134 = lime.math._Matrix4.Matrix4_Impl_.get(rhs,11);
var m144 = lime.math._Matrix4.Matrix4_Impl_.get(rhs,15);
var m211 = this1[0];
var m221 = this1[4];
var m231 = this1[8];
var m241 = this1[12];
var m212 = this1[1];
var m222 = this1[5];
var m232 = this1[9];
var m242 = this1[13];
var m213 = this1[2];
var m223 = this1[6];
var m233 = this1[10];
var m243 = this1[14];
var m214 = this1[3];
var m224 = this1[7];
var m234 = this1[11];
var m244 = this1[15];
this1[0] = m111 * m211 + m112 * m221 + m113 * m231 + m114 * m241;
this1[1] = m111 * m212 + m112 * m222 + m113 * m232 + m114 * m242;
this1[2] = m111 * m213 + m112 * m223 + m113 * m233 + m114 * m243;
this1[3] = m111 * m214 + m112 * m224 + m113 * m234 + m114 * m244;
this1[4] = m121 * m211 + m122 * m221 + m123 * m231 + m124 * m241;
this1[5] = m121 * m212 + m122 * m222 + m123 * m232 + m124 * m242;
this1[6] = m121 * m213 + m122 * m223 + m123 * m233 + m124 * m243;
this1[7] = m121 * m214 + m122 * m224 + m123 * m234 + m124 * m244;
this1[8] = m131 * m211 + m132 * m221 + m133 * m231 + m134 * m241;
this1[9] = m131 * m212 + m132 * m222 + m133 * m232 + m134 * m242;
this1[10] = m131 * m213 + m132 * m223 + m133 * m233 + m134 * m243;
this1[11] = m131 * m214 + m132 * m224 + m133 * m234 + m134 * m244;
this1[12] = m141 * m211 + m142 * m221 + m143 * m231 + m144 * m241;
this1[13] = m141 * m212 + m142 * m222 + m143 * m232 + m144 * m242;
this1[14] = m141 * m213 + m142 * m223 + m143 * m233 + m144 * m243;
this1[15] = m141 * m214 + m142 * m224 + m143 * m234 + m144 * m244;
};
lime.math._Matrix4.Matrix4_Impl_.prependRotation = function(this1,degrees,axis,pivotPoint) {
var m = lime.math._Matrix4.Matrix4_Impl_.getAxisRotation(axis.x,axis.y,axis.z,degrees);
if(pivotPoint != null) {
var p = pivotPoint;
lime.math._Matrix4.Matrix4_Impl_.appendTranslation(m,p.x,p.y,p.z);
}
lime.math._Matrix4.Matrix4_Impl_.prepend(this1,m);
};
lime.math._Matrix4.Matrix4_Impl_.prependScale = function(this1,xScale,yScale,zScale) {
lime.math._Matrix4.Matrix4_Impl_.prepend(this1,lime.math._Matrix4.Matrix4_Impl_._new(new Float32Array([xScale,0.0,0.0,0.0,0.0,yScale,0.0,0.0,0.0,0.0,zScale,0.0,0.0,0.0,0.0,1.0])));
};
lime.math._Matrix4.Matrix4_Impl_.prependTranslation = function(this1,x,y,z) {
var m = lime.math._Matrix4.Matrix4_Impl_._new();
lime.math._Matrix4.Matrix4_Impl_.set_position(m,new lime.math.Vector4(x,y,z));
lime.math._Matrix4.Matrix4_Impl_.prepend(this1,m);
};
lime.math._Matrix4.Matrix4_Impl_.transformVector = function(this1,v) {
var x = v.x;
var y = v.y;
var z = v.z;
return new lime.math.Vector4(x * this1[0] + y * this1[4] + z * this1[8] + this1[12],x * this1[1] + y * this1[5] + z * this1[9] + this1[13],x * this1[2] + y * this1[6] + z * this1[10] + this1[14],x * this1[3] + y * this1[7] + z * this1[11] + this1[15]);
};
lime.math._Matrix4.Matrix4_Impl_.transformVectors = function(this1,ain,aout) {
var i = 0;
while(i + 3 <= ain.length) {
var x = ain[i];
var y = ain[i + 1];
var z = ain[i + 2];
aout[i] = x * this1[0] + y * this1[4] + z * this1[8] + this1[12];
aout[i + 1] = x * this1[1] + y * this1[5] + z * this1[9] + this1[13];
aout[i + 2] = x * this1[2] + y * this1[6] + z * this1[10] + this1[14];
i += 3;
}
};
lime.math._Matrix4.Matrix4_Impl_.transpose = function(this1) {
var othis = new Float32Array(this1);
this1[1] = othis[4];
this1[2] = othis[8];
this1[3] = othis[12];
this1[4] = othis[1];
this1[6] = othis[9];
this1[7] = othis[13];
this1[8] = othis[2];
this1[9] = othis[6];
this1[11] = othis[14];
this1[12] = othis[3];
this1[13] = othis[7];
this1[14] = othis[11];
};
lime.math._Matrix4.Matrix4_Impl_.getAxisRotation = function(x,y,z,degrees) {
var m = lime.math._Matrix4.Matrix4_Impl_._new();
var a1 = new lime.math.Vector4(x,y,z);
var rad = -degrees * (Math.PI / 180);
var c = Math.cos(rad);
var s = Math.sin(rad);
var t = 1.0 - c;
lime.math._Matrix4.Matrix4_Impl_.set(m,0,c + a1.x * a1.x * t);
lime.math._Matrix4.Matrix4_Impl_.set(m,5,c + a1.y * a1.y * t);
lime.math._Matrix4.Matrix4_Impl_.set(m,10,c + a1.z * a1.z * t);
var tmp1 = a1.x * a1.y * t;
var tmp2 = a1.z * s;
lime.math._Matrix4.Matrix4_Impl_.set(m,4,tmp1 + tmp2);
lime.math._Matrix4.Matrix4_Impl_.set(m,1,tmp1 - tmp2);
tmp1 = a1.x * a1.z * t;
tmp2 = a1.y * s;
lime.math._Matrix4.Matrix4_Impl_.set(m,8,tmp1 - tmp2);
lime.math._Matrix4.Matrix4_Impl_.set(m,2,tmp1 + tmp2);
tmp1 = a1.y * a1.z * t;
tmp2 = a1.x * s;
lime.math._Matrix4.Matrix4_Impl_.set(m,9,tmp1 + tmp2);
lime.math._Matrix4.Matrix4_Impl_.set(m,6,tmp1 - tmp2);
return m;
};
lime.math._Matrix4.Matrix4_Impl_.get_determinant = function(this1) {
return (this1[0] * this1[5] - this1[4] * this1[1]) * (this1[10] * this1[15] - this1[14] * this1[11]) - (this1[0] * this1[9] - this1[8] * this1[1]) * (this1[6] * this1[15] - this1[14] * this1[7]) + (this1[0] * this1[13] - this1[12] * this1[1]) * (this1[6] * this1[11] - this1[10] * this1[7]) + (this1[4] * this1[9] - this1[8] * this1[5]) * (this1[2] * this1[15] - this1[14] * this1[3]) - (this1[4] * this1[13] - this1[12] * this1[5]) * (this1[2] * this1[11] - this1[10] * this1[3]) + (this1[8] * this1[13] - this1[12] * this1[9]) * (this1[2] * this1[7] - this1[6] * this1[3]);
};
lime.math._Matrix4.Matrix4_Impl_.get_position = function(this1) {
return new lime.math.Vector4(this1[12],this1[13],this1[14]);
};
lime.math._Matrix4.Matrix4_Impl_.set_position = function(this1,val) {
this1[12] = val.x;
this1[13] = val.y;
this1[14] = val.z;
return val;
};
lime.math._Matrix4.Matrix4_Impl_.get = function(this1,index) {
return this1[index];
};
lime.math._Matrix4.Matrix4_Impl_.set = function(this1,index,value) {
this1[index] = value;
return value;
};
lime.math.Rectangle = function(x,y,width,height) {
if(height == null) height = 0;
if(width == null) width = 0;
if(y == null) y = 0;
if(x == null) x = 0;
this.x = x;
this.y = y;
this.width = width;
this.height = height;
};
$hxClasses["lime.math.Rectangle"] = lime.math.Rectangle;
lime.math.Rectangle.__name__ = ["lime","math","Rectangle"];
lime.math.Rectangle.prototype = {
clone: function() {
return new lime.math.Rectangle(this.x,this.y,this.width,this.height);
}
,contains: function(x,y) {
return x >= this.x && y >= this.y && x < this.get_right() && y < this.get_bottom();
}
,containsPoint: function(point) {
return this.contains(point.x,point.y);
}
,containsRect: function(rect) {
if(rect.width <= 0 || rect.height <= 0) return rect.x > this.x && rect.y > this.y && rect.get_right() < this.get_right() && rect.get_bottom() < this.get_bottom(); else return rect.x >= this.x && rect.y >= this.y && rect.get_right() <= this.get_right() && rect.get_bottom() <= this.get_bottom();
}
,copyFrom: function(sourceRect) {
this.x = sourceRect.x;
this.y = sourceRect.y;
this.width = sourceRect.width;
this.height = sourceRect.height;
}
,equals: function(toCompare) {
return toCompare != null && this.x == toCompare.x && this.y == toCompare.y && this.width == toCompare.width && this.height == toCompare.height;
}
,inflate: function(dx,dy) {
this.x -= dx;
this.width += dx * 2;
this.y -= dy;
this.height += dy * 2;
}
,inflatePoint: function(point) {
this.inflate(point.x,point.y);
}
,intersection: function(toIntersect) {
var x0;
if(this.x < toIntersect.x) x0 = toIntersect.x; else x0 = this.x;
var x1;
if(this.get_right() > toIntersect.get_right()) x1 = toIntersect.get_right(); else x1 = this.get_right();
if(x1 <= x0) return new lime.math.Rectangle();
var y0;
if(this.y < toIntersect.y) y0 = toIntersect.y; else y0 = this.y;
var y1;
if(this.get_bottom() > toIntersect.get_bottom()) y1 = toIntersect.get_bottom(); else y1 = this.get_bottom();
if(y1 <= y0) return new lime.math.Rectangle();
return new lime.math.Rectangle(x0,y0,x1 - x0,y1 - y0);
}
,intersects: function(toIntersect) {
var x0;
if(this.x < toIntersect.x) x0 = toIntersect.x; else x0 = this.x;
var x1;
if(this.get_right() > toIntersect.get_right()) x1 = toIntersect.get_right(); else x1 = this.get_right();
if(x1 <= x0) return false;
var y0;
if(this.y < toIntersect.y) y0 = toIntersect.y; else y0 = this.y;
var y1;
if(this.get_bottom() > toIntersect.get_bottom()) y1 = toIntersect.get_bottom(); else y1 = this.get_bottom();
return y1 > y0;
}
,isEmpty: function() {
return this.width <= 0 || this.height <= 0;
}
,offset: function(dx,dy) {
this.x += dx;
this.y += dy;
}
,offsetPoint: function(point) {
this.x += point.x;
this.y += point.y;
}
,setEmpty: function() {
this.x = this.y = this.width = this.height = 0;
}
,setTo: function(xa,ya,widtha,heighta) {
this.x = xa;
this.y = ya;
this.width = widtha;
this.height = heighta;
}
,transform: function(m) {
var tx0 = m.a * this.x + m.c * this.y;
var tx1 = tx0;
var ty0 = m.b * this.x + m.d * this.y;
var ty1 = tx0;
var tx = m.a * (this.x + this.width) + m.c * this.y;
var ty = m.b * (this.x + this.width) + m.d * this.y;
if(tx < tx0) tx0 = tx;
if(ty < ty0) ty0 = ty;
if(tx > tx1) tx1 = tx;
if(ty > ty1) ty1 = ty;
tx = m.a * (this.x + this.width) + m.c * (this.y + this.height);
ty = m.b * (this.x + this.width) + m.d * (this.y + this.height);
if(tx < tx0) tx0 = tx;
if(ty < ty0) ty0 = ty;
if(tx > tx1) tx1 = tx;
if(ty > ty1) ty1 = ty;
tx = m.a * this.x + m.c * (this.y + this.height);
ty = m.b * this.x + m.d * (this.y + this.height);
if(tx < tx0) tx0 = tx;
if(ty < ty0) ty0 = ty;
if(tx > tx1) tx1 = tx;
if(ty > ty1) ty1 = ty;
return new lime.math.Rectangle(tx0 + m.tx,ty0 + m.ty,tx1 - tx0,ty1 - ty0);
}
,union: function(toUnion) {
if(this.width == 0 || this.height == 0) return toUnion.clone(); else if(toUnion.width == 0 || toUnion.height == 0) return this.clone();
var x0;
if(this.x > toUnion.x) x0 = toUnion.x; else x0 = this.x;
var x1;
if(this.get_right() < toUnion.get_right()) x1 = toUnion.get_right(); else x1 = this.get_right();
var y0;
if(this.y > toUnion.y) y0 = toUnion.y; else y0 = this.y;
var y1;
if(this.get_bottom() < toUnion.get_bottom()) y1 = toUnion.get_bottom(); else y1 = this.get_bottom();
return new lime.math.Rectangle(x0,y0,x1 - x0,y1 - y0);
}
,__contract: function(x,y,width,height) {
if(this.width == 0 && this.height == 0) return;
var cacheRight = this.get_right();
var cacheBottom = this.get_bottom();
if(this.x < x) this.x = x;
if(this.y < y) this.y = y;
if(this.get_right() > x + width) this.width = x + width - this.x;
if(this.get_bottom() > y + height) this.height = y + height - this.y;
}
,__expand: function(x,y,width,height) {
if(this.width == 0 && this.height == 0) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
return;
}
var cacheRight = this.get_right();
var cacheBottom = this.get_bottom();
if(this.x > x) this.x = x;
if(this.y > y) this.y = y;
if(cacheRight < x + width) this.width = x + width - this.x;
if(cacheBottom < y + height) this.height = y + height - this.y;
}
,__toFlashRectangle: function() {
return null;
}
,get_bottom: function() {
return this.y + this.height;
}
,set_bottom: function(b) {
this.height = b - this.y;
return b;
}
,get_bottomRight: function() {
return new lime.math.Vector2(this.x + this.width,this.y + this.height);
}
,set_bottomRight: function(p) {
this.width = p.x - this.x;
this.height = p.y - this.y;
return p.clone();
}
,get_left: function() {
return this.x;
}
,set_left: function(l) {
this.width -= l - this.x;
this.x = l;
return l;
}
,get_right: function() {
return this.x + this.width;
}
,set_right: function(r) {
this.width = r - this.x;
return r;
}
,get_size: function() {
return new lime.math.Vector2(this.width,this.height);
}
,set_size: function(p) {
this.width = p.x;
this.height = p.y;
return p.clone();
}
,get_top: function() {
return this.y;
}
,set_top: function(t) {
this.height -= t - this.y;
this.y = t;
return t;
}
,get_topLeft: function() {
return new lime.math.Vector2(this.x,this.y);
}
,set_topLeft: function(p) {
this.x = p.x;
this.y = p.y;
return p.clone();
}
,__class__: lime.math.Rectangle
,__properties__: {set_topLeft:"set_topLeft",get_topLeft:"get_topLeft",set_top:"set_top",get_top:"get_top",set_size:"set_size",get_size:"get_size",set_right:"set_right",get_right:"get_right",set_left:"set_left",get_left:"get_left",set_bottomRight:"set_bottomRight",get_bottomRight:"get_bottomRight",set_bottom:"set_bottom",get_bottom:"get_bottom"}
};
lime.math.Vector2 = function(x,y) {
if(y == null) y = 0;
if(x == null) x = 0;
this.x = x;
this.y = y;
};
$hxClasses["lime.math.Vector2"] = lime.math.Vector2;
lime.math.Vector2.__name__ = ["lime","math","Vector2"];
lime.math.Vector2.distance = function(pt1,pt2) {
var dx = pt1.x - pt2.x;
var dy = pt1.y - pt2.y;
return Math.sqrt(dx * dx + dy * dy);
};
lime.math.Vector2.interpolate = function(pt1,pt2,f) {
return new lime.math.Vector2(pt2.x + f * (pt1.x - pt2.x),pt2.y + f * (pt1.y - pt2.y));
};
lime.math.Vector2.polar = function(len,angle) {
return new lime.math.Vector2(len * Math.cos(angle),len * Math.sin(angle));
};
lime.math.Vector2.prototype = {
add: function(v) {
return new lime.math.Vector2(v.x + this.x,v.y + this.y);
}
,clone: function() {
return new lime.math.Vector2(this.x,this.y);
}
,equals: function(toCompare) {
return toCompare != null && toCompare.x == this.x && toCompare.y == this.y;
}
,normalize: function(thickness) {
if(this.x == 0 && this.y == 0) return; else {
var norm = thickness / Math.sqrt(this.x * this.x + this.y * this.y);
this.x *= norm;
this.y *= norm;
}
}
,offset: function(dx,dy) {
this.x += dx;
this.y += dy;
}
,setTo: function(xa,ya) {
this.x = xa;
this.y = ya;
}
,subtract: function(v) {
return new lime.math.Vector2(this.x - v.x,this.y - v.y);
}
,__toFlashPoint: function() {
return null;
}
,get_length: function() {
return Math.sqrt(this.x * this.x + this.y * this.y);
}
,__class__: lime.math.Vector2
,__properties__: {get_length:"get_length"}
};
lime.math.Vector4 = function(x,y,z,w) {
if(w == null) w = 0.;
if(z == null) z = 0.;
if(y == null) y = 0.;
if(x == null) x = 0.;
this.w = w;
this.x = x;
this.y = y;
this.z = z;
};
$hxClasses["lime.math.Vector4"] = lime.math.Vector4;
lime.math.Vector4.__name__ = ["lime","math","Vector4"];
lime.math.Vector4.__properties__ = {get_Z_AXIS:"get_Z_AXIS",get_Y_AXIS:"get_Y_AXIS",get_X_AXIS:"get_X_AXIS"}
lime.math.Vector4.X_AXIS = null;
lime.math.Vector4.Y_AXIS = null;
lime.math.Vector4.Z_AXIS = null;
lime.math.Vector4.angleBetween = function(a,b) {
var a0 = new lime.math.Vector4(a.x,a.y,a.z,a.w);
a0.normalize();
var b0 = new lime.math.Vector4(b.x,b.y,b.z,b.w);
b0.normalize();
return Math.acos(a0.x * b0.x + a0.y * b0.y + a0.z * b0.z);
};
lime.math.Vector4.distance = function(pt1,pt2) {
var x = pt2.x - pt1.x;
var y = pt2.y - pt1.y;
var z = pt2.z - pt1.z;
return Math.sqrt(x * x + y * y + z * z);
};
lime.math.Vector4.get_X_AXIS = function() {
return new lime.math.Vector4(1,0,0);
};
lime.math.Vector4.get_Y_AXIS = function() {
return new lime.math.Vector4(0,1,0);
};
lime.math.Vector4.get_Z_AXIS = function() {
return new lime.math.Vector4(0,0,1);
};
lime.math.Vector4.prototype = {
add: function(a) {
return new lime.math.Vector4(this.x + a.x,this.y + a.y,this.z + a.z);
}
,clone: function() {
return new lime.math.Vector4(this.x,this.y,this.z,this.w);
}
,copyFrom: function(sourceVector4) {
this.x = sourceVector4.x;
this.y = sourceVector4.y;
this.z = sourceVector4.z;
}
,crossProduct: function(a) {
return new lime.math.Vector4(this.y * a.z - this.z * a.y,this.z * a.x - this.x * a.z,this.x * a.y - this.y * a.x,1);
}
,decrementBy: function(a) {
this.x -= a.x;
this.y -= a.y;
this.z -= a.z;
}
,dotProduct: function(a) {
return this.x * a.x + this.y * a.y + this.z * a.z;
}
,equals: function(toCompare,allFour) {
if(allFour == null) allFour = false;
return this.x == toCompare.x && this.y == toCompare.y && this.z == toCompare.z && (!allFour || this.w == toCompare.w);
}
,incrementBy: function(a) {
this.x += a.x;
this.y += a.y;
this.z += a.z;
}
,nearEquals: function(toCompare,tolerance,allFour) {
if(allFour == null) allFour = false;
return Math.abs(this.x - toCompare.x) < tolerance && Math.abs(this.y - toCompare.y) < tolerance && Math.abs(this.z - toCompare.z) < tolerance && (!allFour || Math.abs(this.w - toCompare.w) < tolerance);
}
,negate: function() {
this.x *= -1;
this.y *= -1;
this.z *= -1;
}
,normalize: function() {
var l = Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
if(l != 0) {
this.x /= l;
this.y /= l;
this.z /= l;
}
return l;
}
,project: function() {
this.x /= this.w;
this.y /= this.w;
this.z /= this.w;
}
,scaleBy: function(s) {
this.x *= s;
this.y *= s;
this.z *= s;
}
,setTo: function(xa,ya,za) {
this.x = xa;
this.y = ya;
this.z = za;
}
,subtract: function(a) {
return new lime.math.Vector4(this.x - a.x,this.y - a.y,this.z - a.z);
}
,toString: function() {
return "Vector4(" + this.x + ", " + this.y + ", " + this.z + ")";
}
,get_length: function() {
return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
}
,get_lengthSquared: function() {
return this.x * this.x + this.y * this.y + this.z * this.z;
}
,__class__: lime.math.Vector4
,__properties__: {get_lengthSquared:"get_lengthSquared",get_length:"get_length"}
};
lime.net = {};
lime.net.URLLoader = function(request) {
this.onSecurityError = new lime.app.Event();
this.onProgress = new lime.app.Event();
this.onOpen = new lime.app.Event();
this.onIOError = new lime.app.Event();
this.onHTTPStatus = new lime.app.Event();
this.onComplete = new lime.app.Event();
this.bytesLoaded = 0;
this.bytesTotal = 0;
this.set_dataFormat(lime.net.URLLoaderDataFormat.TEXT);
if(request != null) this.load(request);
};
$hxClasses["lime.net.URLLoader"] = lime.net.URLLoader;
lime.net.URLLoader.__name__ = ["lime","net","URLLoader"];
lime.net.URLLoader.prototype = {
close: function() {
}
,getData: function() {
return null;
}
,load: function(request) {
this.requestUrl(request.url,request.method,request.data,request.formatRequestHeaders());
}
,registerEvents: function(subject) {
var _g = this;
var self = this;
if(typeof XMLHttpRequestProgressEvent != "undefined") subject.addEventListener("progress",$bind(this,this.__onProgress),false);
subject.onreadystatechange = function() {
if(subject.readyState != 4) return;
var s;
try {
s = subject.status;
} catch( e ) {
s = null;
}
if(s == undefined) s = null;
if(s != null) {
var listeners = self.onHTTPStatus.listeners;
var repeat = self.onHTTPStatus.repeat;
var length = listeners.length;
var i = 0;
while(i < length) {
listeners[i](_g,s);
if(!repeat[i]) {
self.onHTTPStatus.remove(listeners[i]);
length--;
} else i++;
}
}
if(s != null && s >= 200 && s < 400) self.__onData(subject.response); else if(s == null) {
var listeners1 = self.onIOError.listeners;
var repeat1 = self.onIOError.repeat;
var length1 = listeners1.length;
var i1 = 0;
while(i1 < length1) {
listeners1[i1](_g,"Failed to connect or resolve host");
if(!repeat1[i1]) {
self.onIOError.remove(listeners1[i1]);
length1--;
} else i1++;
}
} else if(s == 12029) {
var listeners2 = self.onIOError.listeners;
var repeat2 = self.onIOError.repeat;
var length2 = listeners2.length;
var i2 = 0;
while(i2 < length2) {
listeners2[i2](_g,"Failed to connect to host");
if(!repeat2[i2]) {
self.onIOError.remove(listeners2[i2]);
length2--;
} else i2++;
}
} else if(s == 12007) {
var listeners3 = self.onIOError.listeners;
var repeat3 = self.onIOError.repeat;
var length3 = listeners3.length;
var i3 = 0;
while(i3 < length3) {
listeners3[i3](_g,"Unknown host");
if(!repeat3[i3]) {
self.onIOError.remove(listeners3[i3]);
length3--;
} else i3++;
}
} else if(s == 0) {
var listeners4 = self.onIOError.listeners;
var repeat4 = self.onIOError.repeat;
var length4 = listeners4.length;
var i4 = 0;
while(i4 < length4) {
listeners4[i4](_g,"Unable to make request (may be blocked due to cross-domain permissions)");
if(!repeat4[i4]) {
self.onIOError.remove(listeners4[i4]);
length4--;
} else i4++;
}
var listeners5 = self.onSecurityError.listeners;
var repeat5 = self.onSecurityError.repeat;
var length5 = listeners5.length;
var i5 = 0;
while(i5 < length5) {
listeners5[i5](_g,"Unable to make request (may be blocked due to cross-domain permissions)");
if(!repeat5[i5]) {
self.onSecurityError.remove(listeners5[i5]);
length5--;
} else i5++;
}
} else {
var listeners6 = self.onIOError.listeners;
var repeat6 = self.onIOError.repeat;
var length6 = listeners6.length;
var i6 = 0;
while(i6 < length6) {
listeners6[i6](_g,"Http Error #" + subject.status);
if(!repeat6[i6]) {
self.onIOError.remove(listeners6[i6]);
length6--;
} else i6++;
}
}
};
}
,requestUrl: function(url,method,data,requestHeaders) {
var xmlHttpRequest = new XMLHttpRequest();
this.registerEvents(xmlHttpRequest);
var uri = "";
if(js.Boot.__instanceof(data,lime.utils.ByteArray)) {
var data1 = data;
var _g = this.dataFormat;
switch(_g[1]) {
case 0:
uri = data1.data.buffer;
break;
default:
uri = data1.readUTFBytes(data1.length);
}
} else if(js.Boot.__instanceof(data,lime.net.URLVariables)) {
var data2 = data;
var _g1 = 0;
var _g11 = Reflect.fields(data2);
while(_g1 < _g11.length) {
var p = _g11[_g1];
++_g1;
if(uri.length != 0) uri += "&";
uri += encodeURIComponent(p) + "=" + StringTools.urlEncode(Reflect.field(data2,p));
}
} else if(data != null) uri = data.toString();
try {
if(method == "GET" && uri != null && uri != "") {
var question = url.split("?").length <= 1;
xmlHttpRequest.open("GET",url + (question?"?":"&") + Std.string(uri),true);
uri = "";
} else xmlHttpRequest.open(js.Boot.__cast(method , String),url,true);
} catch( e ) {
var listeners = this.onIOError.listeners;
var repeat = this.onIOError.repeat;
var length = listeners.length;
var i = 0;
while(i < length) {
listeners[i](this,e.toString());
if(!repeat[i]) {
this.onIOError.remove(listeners[i]);
length--;
} else i++;
}
return;
}
var _g2 = this.dataFormat;
switch(_g2[1]) {
case 0:
xmlHttpRequest.responseType = "arraybuffer";
break;
default:
}
var _g3 = 0;
while(_g3 < requestHeaders.length) {
var header = requestHeaders[_g3];
++_g3;
xmlHttpRequest.setRequestHeader(header.name,header.value);
}
xmlHttpRequest.send(uri);
var listeners1 = this.onOpen.listeners;
var repeat1 = this.onOpen.repeat;
var length1 = listeners1.length;
var i1 = 0;
while(i1 < length1) {
listeners1[i1](this);
if(!repeat1[i1]) {
this.onOpen.remove(listeners1[i1]);
length1--;
} else i1++;
}
this.getData = function() {
if(xmlHttpRequest.response != null) return xmlHttpRequest.response; else return xmlHttpRequest.responseText;
};
}
,__onData: function(_) {
var content = this.getData();
var _g = this.dataFormat;
switch(_g[1]) {
case 0:
this.data = lime.utils.ByteArray.__ofBuffer(content);
break;
default:
this.data = Std.string(content);
}
var listeners = this.onComplete.listeners;
var repeat = this.onComplete.repeat;
var length = listeners.length;
var i = 0;
while(i < length) {
listeners[i](this);
if(!repeat[i]) {
this.onComplete.remove(listeners[i]);
length--;
} else i++;
}
}
,__onProgress: function(event) {
this.bytesLoaded = event.loaded;
this.bytesTotal = event.total;
var listeners = this.onProgress.listeners;
var repeat = this.onProgress.repeat;
var length = listeners.length;
var i = 0;
while(i < length) {
listeners[i](this,this.bytesLoaded,this.bytesTotal);
if(!repeat[i]) {
this.onProgress.remove(listeners[i]);
length--;
} else i++;
}
}
,set_dataFormat: function(inputVal) {
if(inputVal == lime.net.URLLoaderDataFormat.BINARY && !Reflect.hasField(window,"ArrayBuffer")) this.dataFormat = lime.net.URLLoaderDataFormat.TEXT; else this.dataFormat = inputVal;
return this.dataFormat;
}
,__class__: lime.net.URLLoader
,__properties__: {set_dataFormat:"set_dataFormat"}
};
lime.net.URLLoaderDataFormat = $hxClasses["lime.net.URLLoaderDataFormat"] = { __ename__ : ["lime","net","URLLoaderDataFormat"], __constructs__ : ["BINARY","TEXT","VARIABLES"] };
lime.net.URLLoaderDataFormat.BINARY = ["BINARY",0];
lime.net.URLLoaderDataFormat.BINARY.toString = $estr;
lime.net.URLLoaderDataFormat.BINARY.__enum__ = lime.net.URLLoaderDataFormat;
lime.net.URLLoaderDataFormat.TEXT = ["TEXT",1];
lime.net.URLLoaderDataFormat.TEXT.toString = $estr;
lime.net.URLLoaderDataFormat.TEXT.__enum__ = lime.net.URLLoaderDataFormat;
lime.net.URLLoaderDataFormat.VARIABLES = ["VARIABLES",2];
lime.net.URLLoaderDataFormat.VARIABLES.toString = $estr;
lime.net.URLLoaderDataFormat.VARIABLES.__enum__ = lime.net.URLLoaderDataFormat;
lime.net.URLRequest = function(inURL) {
if(inURL != null) this.url = inURL;
this.requestHeaders = [];
this.method = "GET";
this.contentType = null;
};
$hxClasses["lime.net.URLRequest"] = lime.net.URLRequest;
lime.net.URLRequest.__name__ = ["lime","net","URLRequest"];
lime.net.URLRequest.prototype = {
formatRequestHeaders: function() {
var res = this.requestHeaders;
if(res == null) res = [];
if(this.method == "GET" || this.data == null) return res;
if(typeof(this.data) == "string" || js.Boot.__instanceof(this.data,lime.utils.ByteArray)) {
res = res.slice();
res.push(new lime.net.URLRequestHeader("Content-Type",this.contentType != null?this.contentType:"application/x-www-form-urlencoded"));
}
return res;
}
,__class__: lime.net.URLRequest
};
lime.net.URLRequestHeader = function(name,value) {
if(value == null) value = "";
if(name == null) name = "";
this.name = name;
this.value = value;
};
$hxClasses["lime.net.URLRequestHeader"] = lime.net.URLRequestHeader;
lime.net.URLRequestHeader.__name__ = ["lime","net","URLRequestHeader"];
lime.net.URLRequestHeader.prototype = {
__class__: lime.net.URLRequestHeader
};
lime.net._URLRequestMethod = {};
lime.net._URLRequestMethod.URLRequestMethod_Impl_ = function() { };
$hxClasses["lime.net._URLRequestMethod.URLRequestMethod_Impl_"] = lime.net._URLRequestMethod.URLRequestMethod_Impl_;
lime.net._URLRequestMethod.URLRequestMethod_Impl_.__name__ = ["lime","net","_URLRequestMethod","URLRequestMethod_Impl_"];
lime.net.URLVariables = function(inEncoded) {
if(inEncoded != null) this.decode(inEncoded);
};
$hxClasses["lime.net.URLVariables"] = lime.net.URLVariables;
lime.net.URLVariables.__name__ = ["lime","net","URLVariables"];
lime.net.URLVariables.prototype = {
decode: function(inVars) {
var fields = Reflect.fields(this);
var _g = 0;
while(_g < fields.length) {
var f = fields[_g];
++_g;
Reflect.deleteField(this,f);
}
var fields1 = inVars.split(";").join("&").split("&");
var _g1 = 0;
while(_g1 < fields1.length) {
var f1 = fields1[_g1];
++_g1;
var eq = f1.indexOf("=");
if(eq > 0) Reflect.setField(this,StringTools.urlDecode(HxOverrides.substr(f1,0,eq)),StringTools.urlDecode(HxOverrides.substr(f1,eq + 1,null))); else if(eq != 0) Reflect.setField(this,decodeURIComponent(f1.split("+").join(" ")),"");
}
}
,toString: function() {
var result = new Array();
var fields = Reflect.fields(this);
var _g = 0;
while(_g < fields.length) {
var f = fields[_g];
++_g;
result.push(encodeURIComponent(f) + "=" + StringTools.urlEncode(Reflect.field(this,f)));
}
return result.join("&");
}
,__class__: lime.net.URLVariables
};
lime.ui = {};
lime.ui._KeyCode = {};
lime.ui._KeyCode.KeyCode_Impl_ = function() { };
$hxClasses["lime.ui._KeyCode.KeyCode_Impl_"] = lime.ui._KeyCode.KeyCode_Impl_;
lime.ui._KeyCode.KeyCode_Impl_.__name__ = ["lime","ui","_KeyCode","KeyCode_Impl_"];
lime.ui._KeyModifier = {};
lime.ui._KeyModifier.KeyModifier_Impl_ = function() { };
$hxClasses["lime.ui._KeyModifier.KeyModifier_Impl_"] = lime.ui._KeyModifier.KeyModifier_Impl_;
lime.ui._KeyModifier.KeyModifier_Impl_.__name__ = ["lime","ui","_KeyModifier","KeyModifier_Impl_"];
lime.ui._KeyModifier.KeyModifier_Impl_.__properties__ = {set_shiftKey:"set_shiftKey",get_shiftKey:"get_shiftKey",set_numLock:"set_numLock",get_numLock:"get_numLock",set_metaKey:"set_metaKey",get_metaKey:"get_metaKey",set_ctrlKey:"set_ctrlKey",get_ctrlKey:"get_ctrlKey",set_capsLock:"set_capsLock",get_capsLock:"get_capsLock",set_altKey:"set_altKey",get_altKey:"get_altKey"}
lime.ui._KeyModifier.KeyModifier_Impl_.get_altKey = function(this1) {
return (this1 & 256) > 0 || (this1 & 512) > 0;
};
lime.ui._KeyModifier.KeyModifier_Impl_.set_altKey = function(this1,value) {
if(value) this1 |= 768; else this1 &= 268435455 - 768;
return value;
};
lime.ui._KeyModifier.KeyModifier_Impl_.get_capsLock = function(this1) {
return (this1 & 8192) > 0 || (this1 & 8192) > 0;
};
lime.ui._KeyModifier.KeyModifier_Impl_.set_capsLock = function(this1,value) {
if(value) this1 |= 8192; else this1 &= 268435455 - 8192;
return value;
};
lime.ui._KeyModifier.KeyModifier_Impl_.get_ctrlKey = function(this1) {
return (this1 & 64) > 0 || (this1 & 128) > 0;
};
lime.ui._KeyModifier.KeyModifier_Impl_.set_ctrlKey = function(this1,value) {
if(value) this1 |= 192; else this1 &= 268435455 - 192;
return value;
};
lime.ui._KeyModifier.KeyModifier_Impl_.get_metaKey = function(this1) {
return (this1 & 1024) > 0 || (this1 & 2048) > 0;
};
lime.ui._KeyModifier.KeyModifier_Impl_.set_metaKey = function(this1,value) {
if(value) this1 |= 3072; else this1 &= 268435455 - 3072;
return value;
};
lime.ui._KeyModifier.KeyModifier_Impl_.get_numLock = function(this1) {
return (this1 & 4096) > 0 || (this1 & 4096) > 0;
};
lime.ui._KeyModifier.KeyModifier_Impl_.set_numLock = function(this1,value) {
if(value) this1 |= 4096; else this1 &= 268435455 - 4096;
return value;
};
lime.ui._KeyModifier.KeyModifier_Impl_.get_shiftKey = function(this1) {
return (this1 & 1) > 0 || (this1 & 2) > 0;
};
lime.ui._KeyModifier.KeyModifier_Impl_.set_shiftKey = function(this1,value) {
if(value) this1 |= 3; else this1 &= 268435455 - 3;
return value;
};
lime.ui.Mouse = function() { };
$hxClasses["lime.ui.Mouse"] = lime.ui.Mouse;
lime.ui.Mouse.__name__ = ["lime","ui","Mouse"];
lime.ui.Mouse.__properties__ = {set_cursor:"set_cursor",get_cursor:"get_cursor"}
lime.ui.Mouse.hide = function() {
lime._backend.html5.HTML5Mouse.hide();
};
lime.ui.Mouse.show = function() {
lime._backend.html5.HTML5Mouse.show();
};
lime.ui.Mouse.get_cursor = function() {
return lime._backend.html5.HTML5Mouse.get_cursor();
};
lime.ui.Mouse.set_cursor = function(value) {
return lime._backend.html5.HTML5Mouse.set_cursor(value);
};
lime.ui.MouseCursor = $hxClasses["lime.ui.MouseCursor"] = { __ename__ : ["lime","ui","MouseCursor"], __constructs__ : ["ARROW","CROSSHAIR","DEFAULT","MOVE","POINTER","RESIZE_NESW","RESIZE_NS","RESIZE_NWSE","RESIZE_WE","TEXT","WAIT","WAIT_ARROW","CUSTOM"] };
lime.ui.MouseCursor.ARROW = ["ARROW",0];
lime.ui.MouseCursor.ARROW.toString = $estr;
lime.ui.MouseCursor.ARROW.__enum__ = lime.ui.MouseCursor;
lime.ui.MouseCursor.CROSSHAIR = ["CROSSHAIR",1];
lime.ui.MouseCursor.CROSSHAIR.toString = $estr;
lime.ui.MouseCursor.CROSSHAIR.__enum__ = lime.ui.MouseCursor;
lime.ui.MouseCursor.DEFAULT = ["DEFAULT",2];
lime.ui.MouseCursor.DEFAULT.toString = $estr;
lime.ui.MouseCursor.DEFAULT.__enum__ = lime.ui.MouseCursor;
lime.ui.MouseCursor.MOVE = ["MOVE",3];
lime.ui.MouseCursor.MOVE.toString = $estr;
lime.ui.MouseCursor.MOVE.__enum__ = lime.ui.MouseCursor;
lime.ui.MouseCursor.POINTER = ["POINTER",4];
lime.ui.MouseCursor.POINTER.toString = $estr;
lime.ui.MouseCursor.POINTER.__enum__ = lime.ui.MouseCursor;
lime.ui.MouseCursor.RESIZE_NESW = ["RESIZE_NESW",5];
lime.ui.MouseCursor.RESIZE_NESW.toString = $estr;
lime.ui.MouseCursor.RESIZE_NESW.__enum__ = lime.ui.MouseCursor;
lime.ui.MouseCursor.RESIZE_NS = ["RESIZE_NS",6];
lime.ui.MouseCursor.RESIZE_NS.toString = $estr;
lime.ui.MouseCursor.RESIZE_NS.__enum__ = lime.ui.MouseCursor;
lime.ui.MouseCursor.RESIZE_NWSE = ["RESIZE_NWSE",7];
lime.ui.MouseCursor.RESIZE_NWSE.toString = $estr;
lime.ui.MouseCursor.RESIZE_NWSE.__enum__ = lime.ui.MouseCursor;
lime.ui.MouseCursor.RESIZE_WE = ["RESIZE_WE",8];
lime.ui.MouseCursor.RESIZE_WE.toString = $estr;
lime.ui.MouseCursor.RESIZE_WE.__enum__ = lime.ui.MouseCursor;
lime.ui.MouseCursor.TEXT = ["TEXT",9];
lime.ui.MouseCursor.TEXT.toString = $estr;
lime.ui.MouseCursor.TEXT.__enum__ = lime.ui.MouseCursor;
lime.ui.MouseCursor.WAIT = ["WAIT",10];
lime.ui.MouseCursor.WAIT.toString = $estr;
lime.ui.MouseCursor.WAIT.__enum__ = lime.ui.MouseCursor;
lime.ui.MouseCursor.WAIT_ARROW = ["WAIT_ARROW",11];
lime.ui.MouseCursor.WAIT_ARROW.toString = $estr;
lime.ui.MouseCursor.WAIT_ARROW.__enum__ = lime.ui.MouseCursor;
lime.ui.MouseCursor.CUSTOM = ["CUSTOM",12];
lime.ui.MouseCursor.CUSTOM.toString = $estr;
lime.ui.MouseCursor.CUSTOM.__enum__ = lime.ui.MouseCursor;
lime.ui.Window = function(config) {
this.onWindowResize = new lime.app.Event();
this.onWindowMove = new lime.app.Event();
this.onWindowFocusOut = new lime.app.Event();
this.onWindowFocusIn = new lime.app.Event();
this.onWindowDeactivate = new lime.app.Event();
this.onWindowClose = new lime.app.Event();
this.onWindowActivate = new lime.app.Event();
this.onTouchStart = new lime.app.Event();
this.onTouchMove = new lime.app.Event();
this.onTouchEnd = new lime.app.Event();
this.onMouseWheel = new lime.app.Event();
this.onMouseUp = new lime.app.Event();
this.onMouseMove = new lime.app.Event();
this.onMouseDown = new lime.app.Event();
this.onKeyUp = new lime.app.Event();
this.onKeyDown = new lime.app.Event();
this.config = config;
this.width = 0;
this.height = 0;
this.fullscreen = false;
this.x = 0;
this.y = 0;
if(config != null) {
if(Object.prototype.hasOwnProperty.call(config,"width")) this.width = config.width;
if(Object.prototype.hasOwnProperty.call(config,"height")) this.height = config.height;
if(Object.prototype.hasOwnProperty.call(config,"fullscreen")) this.fullscreen = config.fullscreen;
}
this.backend = new lime._backend.html5.HTML5Window(this);
};
$hxClasses["lime.ui.Window"] = lime.ui.Window;
lime.ui.Window.__name__ = ["lime","ui","Window"];
lime.ui.Window.prototype = {
close: function() {
this.backend.close();
}
,create: function(application) {
this.backend.create(application);
if(this.currentRenderer != null) this.currentRenderer.create();
}
,move: function(x,y) {
this.backend.move(x,y);
this.x = x;
this.y = y;
}
,resize: function(width,height) {
this.backend.resize(width,height);
this.width = width;
this.height = height;
}
,setIcon: function(image) {
if(image == null) return;
this.backend.setIcon(image);
}
,__class__: lime.ui.Window
};
lime.utils.CompressionAlgorithm = $hxClasses["lime.utils.CompressionAlgorithm"] = { __ename__ : ["lime","utils","CompressionAlgorithm"], __constructs__ : ["DEFLATE","ZLIB","LZMA","GZIP"] };
lime.utils.CompressionAlgorithm.DEFLATE = ["DEFLATE",0];
lime.utils.CompressionAlgorithm.DEFLATE.toString = $estr;
lime.utils.CompressionAlgorithm.DEFLATE.__enum__ = lime.utils.CompressionAlgorithm;
lime.utils.CompressionAlgorithm.ZLIB = ["ZLIB",1];
lime.utils.CompressionAlgorithm.ZLIB.toString = $estr;
lime.utils.CompressionAlgorithm.ZLIB.__enum__ = lime.utils.CompressionAlgorithm;
lime.utils.CompressionAlgorithm.LZMA = ["LZMA",2];
lime.utils.CompressionAlgorithm.LZMA.toString = $estr;
lime.utils.CompressionAlgorithm.LZMA.__enum__ = lime.utils.CompressionAlgorithm;
lime.utils.CompressionAlgorithm.GZIP = ["GZIP",3];
lime.utils.CompressionAlgorithm.GZIP.toString = $estr;
lime.utils.CompressionAlgorithm.GZIP.__enum__ = lime.utils.CompressionAlgorithm;
lime.utils.GLUtils = function() { };
$hxClasses["lime.utils.GLUtils"] = lime.utils.GLUtils;
lime.utils.GLUtils.__name__ = ["lime","utils","GLUtils"];
lime.utils.GLUtils.compileShader = function(source,type) {
var shader = lime.graphics.opengl.GL.context.createShader(type);
lime.graphics.opengl.GL.context.shaderSource(shader,source);
lime.graphics.opengl.GL.context.compileShader(shader);
if(lime.graphics.opengl.GL.context.getShaderParameter(shader,35713) == 0) switch(type) {
case 35633:
throw "Error compiling vertex shader";
break;
case 35632:
throw "Error compiling fragment shader";
break;
default:
throw "Error compiling unknown shader type";
}
return shader;
};
lime.utils.GLUtils.createProgram = function(vertexSource,fragmentSource) {
var vertexShader = lime.utils.GLUtils.compileShader(vertexSource,35633);
var fragmentShader = lime.utils.GLUtils.compileShader(fragmentSource,35632);
var program = lime.graphics.opengl.GL.context.createProgram();
lime.graphics.opengl.GL.context.attachShader(program,vertexShader);
lime.graphics.opengl.GL.context.attachShader(program,fragmentShader);
lime.graphics.opengl.GL.context.linkProgram(program);
if(lime.graphics.opengl.GL.context.getProgramParameter(program,35714) == 0) throw "Unable to initialize the shader program.";
return program;
};
lime.utils.IDataInput = function() { };
$hxClasses["lime.utils.IDataInput"] = lime.utils.IDataInput;
lime.utils.IDataInput.__name__ = ["lime","utils","IDataInput"];
lime.utils.IDataInput.prototype = {
__class__: lime.utils.IDataInput
,__properties__: {set_endian:"set_endian",get_endian:"get_endian",get_bytesAvailable:"get_bytesAvailable"}
};
lime.utils.IMemoryRange = function() { };
$hxClasses["lime.utils.IMemoryRange"] = lime.utils.IMemoryRange;
lime.utils.IMemoryRange.__name__ = ["lime","utils","IMemoryRange"];
lime.utils.IMemoryRange.prototype = {
__class__: lime.utils.IMemoryRange
};
var motion = {};
motion.actuators = {};
motion.actuators.IGenericActuator = function() { };
$hxClasses["motion.actuators.IGenericActuator"] = motion.actuators.IGenericActuator;
motion.actuators.IGenericActuator.__name__ = ["motion","actuators","IGenericActuator"];
motion.actuators.IGenericActuator.prototype = {
__class__: motion.actuators.IGenericActuator
};
motion.actuators.GenericActuator = function(target,duration,properties) {
this._autoVisible = true;
this._delay = 0;
this._reflect = false;
this._repeat = 0;
this._reverse = false;
this._smartRotation = false;
this._snapping = false;
this.special = false;
this.target = target;
this.properties = properties;
this.duration = duration;
this._ease = motion.Actuate.defaultEase;
};
$hxClasses["motion.actuators.GenericActuator"] = motion.actuators.GenericActuator;
motion.actuators.GenericActuator.__name__ = ["motion","actuators","GenericActuator"];
motion.actuators.GenericActuator.__interfaces__ = [motion.actuators.IGenericActuator];
motion.actuators.GenericActuator.prototype = {
apply: function() {
var _g = 0;
var _g1 = Reflect.fields(this.properties);
while(_g < _g1.length) {
var i = _g1[_g];
++_g;
if(Object.prototype.hasOwnProperty.call(this.target,i)) Reflect.setField(this.target,i,Reflect.field(this.properties,i)); else Reflect.setProperty(this.target,i,Reflect.field(this.properties,i));
}
}
,autoVisible: function(value) {
if(value == null) value = true;
this._autoVisible = value;
return this;
}
,callMethod: function(method,params) {
if(params == null) params = [];
return method.apply(method,params);
}
,change: function() {
if(this._onUpdate != null) this.callMethod(this._onUpdate,this._onUpdateParams);
}
,complete: function(sendEvent) {
if(sendEvent == null) sendEvent = true;
if(sendEvent) {
this.change();
if(this._onComplete != null) this.callMethod(this._onComplete,this._onCompleteParams);
}
motion.Actuate.unload(this);
}
,delay: function(duration) {
this._delay = duration;
return this;
}
,ease: function(easing) {
this._ease = easing;
return this;
}
,move: function() {
}
,onComplete: function(handler,parameters) {
this._onComplete = handler;
if(parameters == null) this._onCompleteParams = []; else this._onCompleteParams = parameters;
if(this.duration == 0) this.complete();
return this;
}
,onRepeat: function(handler,parameters) {
this._onRepeat = handler;
if(parameters == null) this._onRepeatParams = []; else this._onRepeatParams = parameters;
return this;
}
,onUpdate: function(handler,parameters) {
this._onUpdate = handler;
if(parameters == null) this._onUpdateParams = []; else this._onUpdateParams = parameters;
return this;
}
,onPause: function(handler,parameters) {
this._onPause = handler;
if(parameters == null) this._onPauseParams = []; else this._onPauseParams = parameters;
return this;
}
,onResume: function(handler,parameters) {
this._onResume = handler;
if(parameters == null) this._onResumeParams = []; else this._onResumeParams = parameters;
return this;
}
,pause: function() {
if(this._onPause != null) this.callMethod(this._onPause,this._onPauseParams);
}
,reflect: function(value) {
if(value == null) value = true;
this._reflect = value;
this.special = true;
return this;
}
,repeat: function(times) {
if(times == null) times = -1;
this._repeat = times;
return this;
}
,resume: function() {
if(this._onResume != null) this.callMethod(this._onResume,this._onResumeParams);
}
,reverse: function(value) {
if(value == null) value = true;
this._reverse = value;
this.special = true;
return this;
}
,smartRotation: function(value) {
if(value == null) value = true;
this._smartRotation = value;
this.special = true;
return this;
}
,snapping: function(value) {
if(value == null) value = true;
this._snapping = value;
this.special = true;
return this;
}
,stop: function(properties,complete,sendEvent) {
}
,__class__: motion.actuators.GenericActuator
};
motion.actuators.SimpleActuator = function(target,duration,properties) {
this.active = true;
this.propertyDetails = new Array();
this.sendChange = false;
this.paused = false;
this.cacheVisible = false;
this.initialized = false;
this.setVisible = false;
this.toggleVisible = false;
this.startTime = openfl.Lib.getTimer() / 1000;
motion.actuators.GenericActuator.call(this,target,duration,properties);
if(!motion.actuators.SimpleActuator.addedEvent) {
motion.actuators.SimpleActuator.addedEvent = true;
openfl.Lib.current.stage.addEventListener(openfl.events.Event.ENTER_FRAME,motion.actuators.SimpleActuator.stage_onEnterFrame);
}
};
$hxClasses["motion.actuators.SimpleActuator"] = motion.actuators.SimpleActuator;
motion.actuators.SimpleActuator.__name__ = ["motion","actuators","SimpleActuator"];
motion.actuators.SimpleActuator.stage_onEnterFrame = function(event) {
var currentTime = openfl.Lib.getTimer() / 1000;
var actuator;
var j = 0;
var cleanup = false;
var _g1 = 0;
var _g = motion.actuators.SimpleActuator.actuatorsLength;
while(_g1 < _g) {
var i = _g1++;
actuator = motion.actuators.SimpleActuator.actuators[j];
if(actuator != null && actuator.active) {
if(currentTime >= actuator.timeOffset) actuator.update(currentTime);
j++;
} else {
motion.actuators.SimpleActuator.actuators.splice(j,1);
--motion.actuators.SimpleActuator.actuatorsLength;
}
}
};
motion.actuators.SimpleActuator.__super__ = motion.actuators.GenericActuator;
motion.actuators.SimpleActuator.prototype = $extend(motion.actuators.GenericActuator.prototype,{
setField_motion_actuators_SimpleActuator_T: function(target,propertyName,value) {
if(Object.prototype.hasOwnProperty.call(target,propertyName)) target[propertyName] = value; else Reflect.setProperty(target,propertyName,value);
}
,autoVisible: function(value) {
if(value == null) value = true;
this._autoVisible = value;
if(!value) {
this.toggleVisible = false;
if(this.setVisible) this.setField_motion_actuators_SimpleActuator_T(this.target,"visible",this.cacheVisible);
}
return this;
}
,delay: function(duration) {
this._delay = duration;
this.timeOffset = this.startTime + duration;
return this;
}
,getField: function(target,propertyName) {
var value = null;
if(Object.prototype.hasOwnProperty.call(target,propertyName)) value = Reflect.field(target,propertyName); else value = Reflect.getProperty(target,propertyName);
return value;
}
,initialize: function() {
var details;
var start;
var _g = 0;
var _g1 = Reflect.fields(this.properties);
while(_g < _g1.length) {
var i = _g1[_g];
++_g;
var isField = true;
if(Object.prototype.hasOwnProperty.call(this.target,i) && !(this.target.__properties__ && this.target.__properties__["set_" + i])) start = Reflect.field(this.target,i); else {
isField = false;
start = Reflect.getProperty(this.target,i);
}
if(typeof(start) == "number") {
details = new motion.actuators.PropertyDetails(this.target,i,start,this.getField(this.properties,i) - start,isField);
this.propertyDetails.push(details);
}
}
this.detailsLength = this.propertyDetails.length;
this.initialized = true;
}
,move: function() {
this.toggleVisible = Object.prototype.hasOwnProperty.call(this.properties,"alpha") && js.Boot.__instanceof(this.target,openfl.display.DisplayObject);
if(this.toggleVisible && this.properties.alpha != 0 && !this.getField(this.target,"visible")) {
this.setVisible = true;
this.cacheVisible = this.getField(this.target,"visible");
this.setField_motion_actuators_SimpleActuator_T(this.target,"visible",true);
}
this.timeOffset = this.startTime;
motion.actuators.SimpleActuator.actuators.push(this);
++motion.actuators.SimpleActuator.actuatorsLength;
}
,onUpdate: function(handler,parameters) {
this._onUpdate = handler;
if(parameters == null) this._onUpdateParams = []; else this._onUpdateParams = parameters;
this.sendChange = true;
return this;
}
,pause: function() {
if(!this.paused) {
this.paused = true;
motion.actuators.GenericActuator.prototype.pause.call(this);
this.pauseTime = openfl.Lib.getTimer();
}
}
,resume: function() {
if(this.paused) {
this.paused = false;
this.timeOffset += (openfl.Lib.getTimer() - this.pauseTime) / 1000;
motion.actuators.GenericActuator.prototype.resume.call(this);
}
}
,setProperty: function(details,value) {
if(details.isField) details.target[details.propertyName] = value; else Reflect.setProperty(details.target,details.propertyName,value);
}
,stop: function(properties,complete,sendEvent) {
if(this.active) {
if(properties == null) {
this.active = false;
if(complete) this.apply();
this.complete(sendEvent);
return;
}
var _g = 0;
var _g1 = Reflect.fields(properties);
while(_g < _g1.length) {
var i = _g1[_g];
++_g;
if(Object.prototype.hasOwnProperty.call(this.properties,i)) {
this.active = false;
if(complete) this.apply();
this.complete(sendEvent);
return;
}
}
}
}
,update: function(currentTime) {
if(!this.paused) {
var details;
var easing;
var i;
var tweenPosition = (currentTime - this.timeOffset) / this.duration;
if(tweenPosition > 1) tweenPosition = 1;
if(!this.initialized) this.initialize();
if(!this.special) {
easing = this._ease.calculate(tweenPosition);
var _g1 = 0;
var _g = this.detailsLength;
while(_g1 < _g) {
var i1 = _g1++;
details = this.propertyDetails[i1];
this.setProperty(details,details.start + details.change * easing);
}
} else {
if(!this._reverse) easing = this._ease.calculate(tweenPosition); else easing = this._ease.calculate(1 - tweenPosition);
var endValue;
var _g11 = 0;
var _g2 = this.detailsLength;
while(_g11 < _g2) {
var i2 = _g11++;
details = this.propertyDetails[i2];
if(this._smartRotation && (details.propertyName == "rotation" || details.propertyName == "rotationX" || details.propertyName == "rotationY" || details.propertyName == "rotationZ")) {
var rotation = details.change % 360;
if(rotation > 180) rotation -= 360; else if(rotation < -180) rotation += 360;
endValue = details.start + rotation * easing;
} else endValue = details.start + details.change * easing;
if(!this._snapping) {
if(details.isField) details.target[details.propertyName] = endValue; else Reflect.setProperty(details.target,details.propertyName,endValue);
} else this.setProperty(details,Math.round(endValue));
}
}
if(tweenPosition == 1) {
if(this._repeat == 0) {
this.active = false;
if(this.toggleVisible && this.getField(this.target,"alpha") == 0) this.setField_motion_actuators_SimpleActuator_T(this.target,"visible",false);
this.complete(true);
return;
} else {
if(this._onRepeat != null) this.callMethod(this._onRepeat,this._onRepeatParams);
if(this._reflect) this._reverse = !this._reverse;
this.startTime = currentTime;
this.timeOffset = this.startTime + this._delay;
if(this._repeat > 0) this._repeat--;
}
}
if(this.sendChange) this.change();
}
}
,__class__: motion.actuators.SimpleActuator
});
motion.easing = {};
motion.easing.Expo = function() { };
$hxClasses["motion.easing.Expo"] = motion.easing.Expo;
motion.easing.Expo.__name__ = ["motion","easing","Expo"];
motion.easing.Expo.__properties__ = {get_easeOut:"get_easeOut",get_easeInOut:"get_easeInOut",get_easeIn:"get_easeIn"}
motion.easing.Expo.get_easeIn = function() {
return new motion.easing.ExpoEaseIn();
};
motion.easing.Expo.get_easeInOut = function() {
return new motion.easing.ExpoEaseInOut();
};
motion.easing.Expo.get_easeOut = function() {
return new motion.easing.ExpoEaseOut();
};
motion.easing.IEasing = function() { };
$hxClasses["motion.easing.IEasing"] = motion.easing.IEasing;
motion.easing.IEasing.__name__ = ["motion","easing","IEasing"];
motion.easing.IEasing.prototype = {
__class__: motion.easing.IEasing
};
motion.easing.ExpoEaseOut = function() {
};
$hxClasses["motion.easing.ExpoEaseOut"] = motion.easing.ExpoEaseOut;
motion.easing.ExpoEaseOut.__name__ = ["motion","easing","ExpoEaseOut"];
motion.easing.ExpoEaseOut.__interfaces__ = [motion.easing.IEasing];
motion.easing.ExpoEaseOut.prototype = {
calculate: function(k) {
if(k == 1) return 1; else return 1 - Math.pow(2,-10 * k);
}
,ease: function(t,b,c,d) {
if(t == d) return b + c; else return c * (1 - Math.pow(2,-10 * t / d)) + b;
}
,__class__: motion.easing.ExpoEaseOut
};
motion.Actuate = function() { };
$hxClasses["motion.Actuate"] = motion.Actuate;
motion.Actuate.__name__ = ["motion","Actuate"];
motion.Actuate.apply = function(target,properties,customActuator) {
motion.Actuate.stop(target,properties);
if(customActuator == null) customActuator = motion.Actuate.defaultActuator;
var actuator = Type.createInstance(customActuator,[target,0,properties]);
actuator.apply();
return actuator;
};
motion.Actuate.effects = function(target,duration,overwrite) {
if(overwrite == null) overwrite = true;
return new motion._Actuate.EffectsOptions(target,duration,overwrite);
};
motion.Actuate.getLibrary = function(target,allowCreation) {
if(allowCreation == null) allowCreation = true;
if(!(motion.Actuate.targetLibraries.h.__keys__[target.__id__] != null) && allowCreation) motion.Actuate.targetLibraries.set(target,new Array());
return motion.Actuate.targetLibraries.h[target.__id__];
};
motion.Actuate.isActive = function() {
var result = false;
var $it0 = motion.Actuate.targetLibraries.iterator();
while( $it0.hasNext() ) {
var library = $it0.next();
result = true;
break;
}
return result;
};
motion.Actuate.motionPath = function(target,duration,properties,overwrite) {
if(overwrite == null) overwrite = true;
return motion.Actuate.tween(target,duration,properties,overwrite,motion.actuators.MotionPathActuator);
};
motion.Actuate.pause = function(target) {
if(js.Boot.__instanceof(target,motion.actuators.IGenericActuator)) {
var actuator = target;
actuator.pause();
} else {
var library = motion.Actuate.getLibrary(target,false);
if(library != null) {
var _g = 0;
while(_g < library.length) {
var actuator1 = library[_g];
++_g;
actuator1.pause();
}
}
}
};
motion.Actuate.pauseAll = function() {
var $it0 = motion.Actuate.targetLibraries.iterator();
while( $it0.hasNext() ) {
var library = $it0.next();
var _g = 0;
while(_g < library.length) {
var actuator = library[_g];
++_g;
actuator.pause();
}
}
};
motion.Actuate.reset = function() {
var $it0 = motion.Actuate.targetLibraries.iterator();
while( $it0.hasNext() ) {
var library = $it0.next();
var i = library.length - 1;
while(i >= 0) {
library[i].stop(null,false,false);
i--;
}
}
motion.Actuate.targetLibraries = new haxe.ds.ObjectMap();
};
motion.Actuate.resume = function(target) {
if(js.Boot.__instanceof(target,motion.actuators.IGenericActuator)) {
var actuator = target;
actuator.resume();
} else {
var library = motion.Actuate.getLibrary(target,false);
if(library != null) {
var _g = 0;
while(_g < library.length) {
var actuator1 = library[_g];
++_g;
actuator1.resume();
}
}
}
};
motion.Actuate.resumeAll = function() {
var $it0 = motion.Actuate.targetLibraries.iterator();
while( $it0.hasNext() ) {
var library = $it0.next();
var _g = 0;
while(_g < library.length) {
var actuator = library[_g];
++_g;
actuator.resume();
}
}
};
motion.Actuate.stop = function(target,properties,complete,sendEvent) {
if(sendEvent == null) sendEvent = true;
if(complete == null) complete = false;
if(target != null) {
if(js.Boot.__instanceof(target,motion.actuators.IGenericActuator)) {
var actuator = target;
actuator.stop(null,complete,sendEvent);
} else {
var library = motion.Actuate.getLibrary(target,false);
if(library != null) {
if(typeof(properties) == "string") {
var temp = { };
Reflect.setField(temp,properties,null);
properties = temp;
} else if((properties instanceof Array) && properties.__enum__ == null) {
var temp1 = { };
var _g = 0;
var _g1;
_g1 = js.Boot.__cast(properties , Array);
while(_g < _g1.length) {
var property = _g1[_g];
++_g;
Reflect.setField(temp1,property,null);
}
properties = temp1;
}
var i = library.length - 1;
while(i >= 0) {
library[i].stop(properties,complete,sendEvent);
i--;
}
}
}
}
};
motion.Actuate.timer = function(duration,customActuator) {
return motion.Actuate.tween(new motion._Actuate.TweenTimer(0),duration,new motion._Actuate.TweenTimer(1),false,customActuator);
};
motion.Actuate.transform = function(target,duration,overwrite) {
if(overwrite == null) overwrite = true;
if(duration == null) duration = 0;
return new motion._Actuate.TransformOptions(target,duration,overwrite);
};
motion.Actuate.tween = function(target,duration,properties,overwrite,customActuator) {
if(overwrite == null) overwrite = true;
if(target != null) {
if(duration > 0) {
if(customActuator == null) customActuator = motion.Actuate.defaultActuator;
var actuator = Type.createInstance(customActuator,[target,duration,properties]);
var library = motion.Actuate.getLibrary(actuator.target);
if(overwrite) {
var i = library.length - 1;
while(i >= 0) {
library[i].stop(actuator.properties,false,false);
i--;
}
library = motion.Actuate.getLibrary(actuator.target);
}
library.push(actuator);
actuator.move();
return actuator;
} else return motion.Actuate.apply(target,properties,customActuator);
}
return null;
};
motion.Actuate.unload = function(actuator) {
var target = actuator.target;
if(motion.Actuate.targetLibraries.h.__keys__[target.__id__] != null) {
HxOverrides.remove(motion.Actuate.targetLibraries.h[target.__id__],actuator);
if(motion.Actuate.targetLibraries.h[target.__id__].length == 0) motion.Actuate.targetLibraries.remove(target);
}
};
motion.Actuate.update = function(target,duration,start,end,overwrite) {
if(overwrite == null) overwrite = true;
var properties = { start : start, end : end};
return motion.Actuate.tween(target,duration,properties,overwrite,motion.actuators.MethodActuator);
};
motion._Actuate = {};
motion._Actuate.EffectsOptions = function(target,duration,overwrite) {
this.target = target;
this.duration = duration;
this.overwrite = overwrite;
};
$hxClasses["motion._Actuate.EffectsOptions"] = motion._Actuate.EffectsOptions;
motion._Actuate.EffectsOptions.__name__ = ["motion","_Actuate","EffectsOptions"];
motion._Actuate.EffectsOptions.prototype = {
filter: function(reference,properties) {
properties.filter = reference;
return motion.Actuate.tween(this.target,this.duration,properties,this.overwrite,motion.actuators.FilterActuator);
}
,__class__: motion._Actuate.EffectsOptions
};
motion._Actuate.TransformOptions = function(target,duration,overwrite) {
this.target = target;
this.duration = duration;
this.overwrite = overwrite;
};
$hxClasses["motion._Actuate.TransformOptions"] = motion._Actuate.TransformOptions;
motion._Actuate.TransformOptions.__name__ = ["motion","_Actuate","TransformOptions"];
motion._Actuate.TransformOptions.prototype = {
color: function(value,strength,alpha) {
if(strength == null) strength = 1;
if(value == null) value = 0;
var properties = { colorValue : value, colorStrength : strength};
if(alpha != null) properties.colorAlpha = alpha;
return motion.Actuate.tween(this.target,this.duration,properties,this.overwrite,motion.actuators.TransformActuator);
}
,sound: function(volume,pan) {
var properties = { };
if(volume != null) properties.soundVolume = volume;
if(pan != null) properties.soundPan = pan;
return motion.Actuate.tween(this.target,this.duration,properties,this.overwrite,motion.actuators.TransformActuator);
}
,__class__: motion._Actuate.TransformOptions
};
motion._Actuate.TweenTimer = function(progress) {
this.progress = progress;
};
$hxClasses["motion._Actuate.TweenTimer"] = motion._Actuate.TweenTimer;
motion._Actuate.TweenTimer.__name__ = ["motion","_Actuate","TweenTimer"];
motion._Actuate.TweenTimer.prototype = {
__class__: motion._Actuate.TweenTimer
};
motion.MotionPath = function() {
this._x = new motion.ComponentPath();
this._y = new motion.ComponentPath();
this._rotation = null;
};
$hxClasses["motion.MotionPath"] = motion.MotionPath;
motion.MotionPath.__name__ = ["motion","MotionPath"];
motion.MotionPath.prototype = {
bezier: function(x,y,controlX,controlY,strength) {
if(strength == null) strength = 1;
this._x.addPath(new motion.BezierPath(x,controlX,strength));
this._y.addPath(new motion.BezierPath(y,controlY,strength));
return this;
}
,line: function(x,y,strength) {
if(strength == null) strength = 1;
this._x.addPath(new motion.LinearPath(x,strength));
this._y.addPath(new motion.LinearPath(y,strength));
return this;
}
,get_rotation: function() {
if(this._rotation == null) this._rotation = new motion.RotationPath(this._x,this._y);
return this._rotation;
}
,get_x: function() {
return this._x;
}
,get_y: function() {
return this._y;
}
,__class__: motion.MotionPath
,__properties__: {get_y:"get_y",get_x:"get_x",get_rotation:"get_rotation"}
};
motion.IComponentPath = function() { };
$hxClasses["motion.IComponentPath"] = motion.IComponentPath;
motion.IComponentPath.__name__ = ["motion","IComponentPath"];
motion.IComponentPath.prototype = {
__class__: motion.IComponentPath
};
motion.ComponentPath = function() {
this.paths = new Array();
this.start = 0;
this.totalStrength = 0;
};
$hxClasses["motion.ComponentPath"] = motion.ComponentPath;
motion.ComponentPath.__name__ = ["motion","ComponentPath"];
motion.ComponentPath.__interfaces__ = [motion.IComponentPath];
motion.ComponentPath.prototype = {
addPath: function(path) {
this.paths.push(path);
this.totalStrength += path.strength;
}
,calculate: function(k) {
if(this.paths.length == 1) return this.paths[0].calculate(this.start,k); else {
var ratio = k * this.totalStrength;
var lastEnd = this.start;
var _g = 0;
var _g1 = this.paths;
while(_g < _g1.length) {
var path = _g1[_g];
++_g;
if(ratio > path.strength) {
ratio -= path.strength;
lastEnd = path.end;
} else return path.calculate(lastEnd,ratio / path.strength);
}
}
return 0;
}
,get_end: function() {
if(this.paths.length > 0) {
var path = this.paths[this.paths.length - 1];
return path.end;
} else return this.start;
}
,__class__: motion.ComponentPath
,__properties__: {get_end:"get_end"}
};
motion.BezierPath = function(end,control,strength) {
this.end = end;
this.control = control;
this.strength = strength;
};
$hxClasses["motion.BezierPath"] = motion.BezierPath;
motion.BezierPath.__name__ = ["motion","BezierPath"];
motion.BezierPath.prototype = {
calculate: function(start,k) {
return (1 - k) * (1 - k) * start + 2 * (1 - k) * k * this.control + k * k * this.end;
}
,__class__: motion.BezierPath
};
motion.LinearPath = function(end,strength) {
motion.BezierPath.call(this,end,0,strength);
};
$hxClasses["motion.LinearPath"] = motion.LinearPath;
motion.LinearPath.__name__ = ["motion","LinearPath"];
motion.LinearPath.__super__ = motion.BezierPath;
motion.LinearPath.prototype = $extend(motion.BezierPath.prototype,{
calculate: function(start,k) {
return start + k * (this.end - start);
}
,__class__: motion.LinearPath
});
motion.RotationPath = function(x,y) {
this.step = 0.01;
this._x = x;
this._y = y;
this.offset = 0;
this.start = this.calculate(0.0);
};
$hxClasses["motion.RotationPath"] = motion.RotationPath;
motion.RotationPath.__name__ = ["motion","RotationPath"];
motion.RotationPath.__interfaces__ = [motion.IComponentPath];
motion.RotationPath.prototype = {
calculate: function(k) {
var dX = this._x.calculate(k) - this._x.calculate(k + this.step);
var dY = this._y.calculate(k) - this._y.calculate(k + this.step);
var angle = Math.atan2(dY,dX) * (180 / Math.PI);
angle = (angle + this.offset) % 360;
return angle;
}
,get_end: function() {
return this.calculate(1.0);
}
,__class__: motion.RotationPath
,__properties__: {get_end:"get_end"}
};
motion.actuators.FilterActuator = function(target,duration,properties) {
this.filterIndex = -1;
motion.actuators.SimpleActuator.call(this,target,duration,properties);
if(js.Boot.__instanceof(properties.filter,Class)) {
this.filterClass = properties.filter;
if(target.get_filters().length == 0) target.set_filters([Type.createInstance(this.filterClass,[])]);
var _g = 0;
var _g1 = target.get_filters();
while(_g < _g1.length) {
var filter = _g1[_g];
++_g;
if(js.Boot.__instanceof(filter,this.filterClass)) this.filter = filter;
}
} else {
this.filterIndex = properties.filter;
this.filter = target.get_filters()[this.filterIndex];
}
};
$hxClasses["motion.actuators.FilterActuator"] = motion.actuators.FilterActuator;
motion.actuators.FilterActuator.__name__ = ["motion","actuators","FilterActuator"];
motion.actuators.FilterActuator.__super__ = motion.actuators.SimpleActuator;
motion.actuators.FilterActuator.prototype = $extend(motion.actuators.SimpleActuator.prototype,{
setField_openfl_display_DisplayObject: function(target,propertyName,value) {
if(Object.prototype.hasOwnProperty.call(target,propertyName)) target[propertyName] = value; else Reflect.setProperty(target,propertyName,value);
}
,apply: function() {
var _g = 0;
var _g1 = Reflect.fields(this.properties);
while(_g < _g1.length) {
var propertyName = _g1[_g];
++_g;
if(propertyName != "filter") Reflect.setField(this.filter,propertyName,Reflect.field(this.properties,propertyName));
}
var filters = this.getField(this.target,"filters");
Reflect.setField(filters,this.properties.filter,this.filter);
this.setField_openfl_display_DisplayObject(this.target,"filters",filters);
}
,initialize: function() {
var details;
var start;
var _g = 0;
var _g1 = Reflect.fields(this.properties);
while(_g < _g1.length) {
var propertyName = _g1[_g];
++_g;
if(propertyName != "filter") {
start = this.getField(this.filter,propertyName);
details = new motion.actuators.PropertyDetails(this.filter,propertyName,start,Reflect.field(this.properties,propertyName) - start);
this.propertyDetails.push(details);
}
}
this.detailsLength = this.propertyDetails.length;
this.initialized = true;
}
,update: function(currentTime) {
motion.actuators.SimpleActuator.prototype.update.call(this,currentTime);
var filters = this.target.get_filters();
if(this.filterIndex > -1) Reflect.setField(filters,this.properties.filter,this.filter); else {
var _g1 = 0;
var _g = filters.length;
while(_g1 < _g) {
var i = _g1++;
if(js.Boot.__instanceof(filters[i],this.filterClass)) filters[i] = this.filter;
}
}
this.setField_openfl_display_DisplayObject(this.target,"filters",filters);
}
,__class__: motion.actuators.FilterActuator
});
motion.actuators.MethodActuator = function(target,duration,properties) {
this.currentParameters = new Array();
this.tweenProperties = { };
motion.actuators.SimpleActuator.call(this,target,duration,properties);
if(!Object.prototype.hasOwnProperty.call(properties,"start")) this.properties.start = new Array();
if(!Object.prototype.hasOwnProperty.call(properties,"end")) this.properties.end = this.properties.start;
var _g1 = 0;
var _g = this.properties.start.length;
while(_g1 < _g) {
var i = _g1++;
this.currentParameters.push(this.properties.start[i]);
}
};
$hxClasses["motion.actuators.MethodActuator"] = motion.actuators.MethodActuator;
motion.actuators.MethodActuator.__name__ = ["motion","actuators","MethodActuator"];
motion.actuators.MethodActuator.__super__ = motion.actuators.SimpleActuator;
motion.actuators.MethodActuator.prototype = $extend(motion.actuators.SimpleActuator.prototype,{
apply: function() {
this.callMethod(this.target,this.properties.end);
}
,initialize: function() {
var details;
var propertyName;
var start;
var _g1 = 0;
var _g = this.properties.start.length;
while(_g1 < _g) {
var i = _g1++;
propertyName = "param" + i;
start = this.properties.start[i];
this.tweenProperties[propertyName] = start;
if(typeof(start) == "number" || ((start | 0) === start)) {
details = new motion.actuators.PropertyDetails(this.tweenProperties,propertyName,start,this.properties.end[i] - start);
this.propertyDetails.push(details);
}
}
this.detailsLength = this.propertyDetails.length;
this.initialized = true;
}
,update: function(currentTime) {
motion.actuators.SimpleActuator.prototype.update.call(this,currentTime);
if(this.active) {
var _g1 = 0;
var _g = this.properties.start.length;
while(_g1 < _g) {
var i = _g1++;
this.currentParameters[i] = Reflect.field(this.tweenProperties,"param" + i);
}
this.callMethod(this.target,this.currentParameters);
}
}
,__class__: motion.actuators.MethodActuator
});
motion.actuators.MotionPathActuator = function(target,duration,properties) {
motion.actuators.SimpleActuator.call(this,target,duration,properties);
};
$hxClasses["motion.actuators.MotionPathActuator"] = motion.actuators.MotionPathActuator;
motion.actuators.MotionPathActuator.__name__ = ["motion","actuators","MotionPathActuator"];
motion.actuators.MotionPathActuator.__super__ = motion.actuators.SimpleActuator;
motion.actuators.MotionPathActuator.prototype = $extend(motion.actuators.SimpleActuator.prototype,{
setField_motion_actuators_MotionPathActuator_T: function(target,propertyName,value) {
if(Object.prototype.hasOwnProperty.call(target,propertyName)) target[propertyName] = value; else Reflect.setProperty(target,propertyName,value);
}
,apply: function() {
var _g = 0;
var _g1 = Reflect.fields(this.properties);
while(_g < _g1.length) {
var propertyName = _g1[_g];
++_g;
if(Object.prototype.hasOwnProperty.call(this.target,propertyName)) Reflect.setField(this.target,propertyName,(js.Boot.__cast(Reflect.field(this.properties,propertyName) , motion.IComponentPath)).get_end()); else Reflect.setProperty(this.target,propertyName,(js.Boot.__cast(Reflect.field(this.properties,propertyName) , motion.IComponentPath)).get_end());
}
}
,initialize: function() {
var details;
var path;
var _g = 0;
var _g1 = Reflect.fields(this.properties);
while(_g < _g1.length) {
var propertyName = _g1[_g];
++_g;
path = js.Boot.__cast(Reflect.field(this.properties,propertyName) , motion.IComponentPath);
if(path != null) {
var isField = true;
if(Object.prototype.hasOwnProperty.call(this.target,propertyName)) path.start = Reflect.field(this.target,propertyName); else {
isField = false;
path.start = Reflect.getProperty(this.target,propertyName);
}
details = new motion.actuators.PropertyPathDetails(this.target,propertyName,path,isField);
this.propertyDetails.push(details);
}
}
this.detailsLength = this.propertyDetails.length;
this.initialized = true;
}
,update: function(currentTime) {
if(!this.paused) {
var details;
var easing;
var tweenPosition = (currentTime - this.timeOffset) / this.duration;
if(tweenPosition > 1) tweenPosition = 1;
if(!this.initialized) this.initialize();
if(!this.special) {
easing = this._ease.calculate(tweenPosition);
var _g = 0;
var _g1 = this.propertyDetails;
while(_g < _g1.length) {
var details1 = _g1[_g];
++_g;
if(details1.isField) Reflect.setField(details1.target,details1.propertyName,(js.Boot.__cast(details1 , motion.actuators.PropertyPathDetails)).path.calculate(easing)); else Reflect.setProperty(details1.target,details1.propertyName,(js.Boot.__cast(details1 , motion.actuators.PropertyPathDetails)).path.calculate(easing));
}
} else {
if(!this._reverse) easing = this._ease.calculate(tweenPosition); else easing = this._ease.calculate(1 - tweenPosition);
var endValue;
var _g2 = 0;
var _g11 = this.propertyDetails;
while(_g2 < _g11.length) {
var details2 = _g11[_g2];
++_g2;
if(!this._snapping) {
if(details2.isField) Reflect.setField(details2.target,details2.propertyName,(js.Boot.__cast(details2 , motion.actuators.PropertyPathDetails)).path.calculate(easing)); else Reflect.setProperty(details2.target,details2.propertyName,(js.Boot.__cast(details2 , motion.actuators.PropertyPathDetails)).path.calculate(easing));
} else if(details2.isField) Reflect.setField(details2.target,details2.propertyName,Math.round((js.Boot.__cast(details2 , motion.actuators.PropertyPathDetails)).path.calculate(easing))); else Reflect.setProperty(details2.target,details2.propertyName,Math.round((js.Boot.__cast(details2 , motion.actuators.PropertyPathDetails)).path.calculate(easing)));
}
}
if(tweenPosition == 1) {
if(this._repeat == 0) {
this.active = false;
if(this.toggleVisible && this.getField(this.target,"alpha") == 0) this.setField_motion_actuators_MotionPathActuator_T(this.target,"visible",false);
this.complete(true);
return;
} else {
if(this._onRepeat != null) this.callMethod(this._onRepeat,this._onRepeatParams);
if(this._reflect) this._reverse = !this._reverse;
this.startTime = currentTime;
this.timeOffset = this.startTime + this._delay;
if(this._repeat > 0) this._repeat--;
}
}
if(this.sendChange) this.change();
}
}
,__class__: motion.actuators.MotionPathActuator
});
motion.actuators.PropertyDetails = function(target,propertyName,start,change,isField) {
if(isField == null) isField = true;
this.target = target;
this.propertyName = propertyName;
this.start = start;
this.change = change;
this.isField = isField;
};
$hxClasses["motion.actuators.PropertyDetails"] = motion.actuators.PropertyDetails;
motion.actuators.PropertyDetails.__name__ = ["motion","actuators","PropertyDetails"];
motion.actuators.PropertyDetails.prototype = {
__class__: motion.actuators.PropertyDetails
};
motion.actuators.PropertyPathDetails = function(target,propertyName,path,isField) {
if(isField == null) isField = true;
motion.actuators.PropertyDetails.call(this,target,propertyName,0,0,isField);
this.path = path;
};
$hxClasses["motion.actuators.PropertyPathDetails"] = motion.actuators.PropertyPathDetails;
motion.actuators.PropertyPathDetails.__name__ = ["motion","actuators","PropertyPathDetails"];
motion.actuators.PropertyPathDetails.__super__ = motion.actuators.PropertyDetails;
motion.actuators.PropertyPathDetails.prototype = $extend(motion.actuators.PropertyDetails.prototype,{
__class__: motion.actuators.PropertyPathDetails
});
motion.actuators.TransformActuator = function(target,duration,properties) {
motion.actuators.SimpleActuator.call(this,target,duration,properties);
};
$hxClasses["motion.actuators.TransformActuator"] = motion.actuators.TransformActuator;
motion.actuators.TransformActuator.__name__ = ["motion","actuators","TransformActuator"];
motion.actuators.TransformActuator.__super__ = motion.actuators.SimpleActuator;
motion.actuators.TransformActuator.prototype = $extend(motion.actuators.SimpleActuator.prototype,{
setField_openfl_geom_Transform: function(target,propertyName,value) {
if(Object.prototype.hasOwnProperty.call(target,propertyName)) target[propertyName] = value; else Reflect.setProperty(target,propertyName,value);
}
,setField_motion_actuators_TransformActuator_T: function(target,propertyName,value) {
if(Object.prototype.hasOwnProperty.call(target,propertyName)) target[propertyName] = value; else Reflect.setProperty(target,propertyName,value);
}
,apply: function() {
this.initialize();
if(this.endColorTransform != null) {
var transform = this.getField(this.target,"transform");
this.setField_openfl_geom_Transform(transform,"colorTransform",this.endColorTransform);
}
if(this.endSoundTransform != null) this.setField_motion_actuators_TransformActuator_T(this.target,"soundTransform",this.endSoundTransform);
}
,initialize: function() {
if(Object.prototype.hasOwnProperty.call(this.properties,"colorValue") && js.Boot.__instanceof(this.target,openfl.display.DisplayObject)) this.initializeColor();
if(Object.prototype.hasOwnProperty.call(this.properties,"soundVolume") || Object.prototype.hasOwnProperty.call(this.properties,"soundPan")) this.initializeSound();
this.detailsLength = this.propertyDetails.length;
this.initialized = true;
}
,initializeColor: function() {
this.endColorTransform = new openfl.geom.ColorTransform();
var color = this.properties.colorValue;
var strength = this.properties.colorStrength;
if(strength < 1) {
var multiplier;
var offset;
if(strength < 0.5) {
multiplier = 1;
offset = strength * 2;
} else {
multiplier = 1 - (strength - 0.5) * 2;
offset = 1;
}
this.endColorTransform.redMultiplier = multiplier;
this.endColorTransform.greenMultiplier = multiplier;
this.endColorTransform.blueMultiplier = multiplier;
this.endColorTransform.redOffset = offset * (color >> 16 & 255);
this.endColorTransform.greenOffset = offset * (color >> 8 & 255);
this.endColorTransform.blueOffset = offset * (color & 255);
} else {
this.endColorTransform.redMultiplier = 0;
this.endColorTransform.greenMultiplier = 0;
this.endColorTransform.blueMultiplier = 0;
this.endColorTransform.redOffset = color >> 16 & 255;
this.endColorTransform.greenOffset = color >> 8 & 255;
this.endColorTransform.blueOffset = color & 255;
}
var propertyNames = ["redMultiplier","greenMultiplier","blueMultiplier","redOffset","greenOffset","blueOffset"];
if(Object.prototype.hasOwnProperty.call(this.properties,"colorAlpha")) {
this.endColorTransform.alphaMultiplier = this.properties.colorAlpha;
propertyNames.push("alphaMultiplier");
} else this.endColorTransform.alphaMultiplier = this.getField(this.target,"alpha");
var transform = this.getField(this.target,"transform");
var begin = this.getField(transform,"colorTransform");
this.tweenColorTransform = new openfl.geom.ColorTransform();
var details;
var start;
var _g = 0;
while(_g < propertyNames.length) {
var propertyName = propertyNames[_g];
++_g;
start = this.getField(begin,propertyName);
details = new motion.actuators.PropertyDetails(this.tweenColorTransform,propertyName,start,this.getField(this.endColorTransform,propertyName) - start);
this.propertyDetails.push(details);
}
}
,initializeSound: function() {
if(this.getField(this.target,"soundTransform") == null) this.setField_motion_actuators_TransformActuator_T(this.target,"soundTransform",new openfl.media.SoundTransform());
var start = this.getField(this.target,"soundTransform");
this.endSoundTransform = this.getField(this.target,"soundTransform");
this.tweenSoundTransform = new openfl.media.SoundTransform();
if(Object.prototype.hasOwnProperty.call(this.properties,"soundVolume")) {
this.endSoundTransform.volume = this.properties.soundVolume;
this.propertyDetails.push(new motion.actuators.PropertyDetails(this.tweenSoundTransform,"volume",start.volume,this.endSoundTransform.volume - start.volume));
}
if(Object.prototype.hasOwnProperty.call(this.properties,"soundPan")) {
this.endSoundTransform.pan = this.properties.soundPan;
this.propertyDetails.push(new motion.actuators.PropertyDetails(this.tweenSoundTransform,"pan",start.pan,this.endSoundTransform.pan - start.pan));
}
}
,update: function(currentTime) {
motion.actuators.SimpleActuator.prototype.update.call(this,currentTime);
if(this.endColorTransform != null) {
var transform = this.getField(this.target,"transform");
this.setField_openfl_geom_Transform(transform,"colorTransform",this.tweenColorTransform);
}
if(this.endSoundTransform != null) this.setField_motion_actuators_TransformActuator_T(this.target,"soundTransform",this.tweenSoundTransform);
}
,__class__: motion.actuators.TransformActuator
});
motion.easing.Bounce = function() { };
$hxClasses["motion.easing.Bounce"] = motion.easing.Bounce;
motion.easing.Bounce.__name__ = ["motion","easing","Bounce"];
motion.easing.Bounce.__properties__ = {get_easeOut:"get_easeOut",get_easeInOut:"get_easeInOut",get_easeIn:"get_easeIn"}
motion.easing.Bounce.get_easeIn = function() {
return new motion.easing.BounceEaseIn();
};
motion.easing.Bounce.get_easeInOut = function() {
return new motion.easing.BounceEaseInOut();
};
motion.easing.Bounce.get_easeOut = function() {
return new motion.easing.BounceEaseOut();
};
motion.easing.BounceEaseIn = function() {
};
$hxClasses["motion.easing.BounceEaseIn"] = motion.easing.BounceEaseIn;
motion.easing.BounceEaseIn.__name__ = ["motion","easing","BounceEaseIn"];
motion.easing.BounceEaseIn.__interfaces__ = [motion.easing.IEasing];
motion.easing.BounceEaseIn._ease = function(t,b,c,d) {
return c - motion.easing.BounceEaseOut._ease(d - t,0,c,d) + b;
};
motion.easing.BounceEaseIn.prototype = {
calculate: function(k) {
return 1 - motion.easing.BounceEaseOut._ease(1 - k,0,1,1);
}
,ease: function(t,b,c,d) {
return c - motion.easing.BounceEaseOut._ease(d - t,0,c,d) + b;
}
,__class__: motion.easing.BounceEaseIn
};
motion.easing.BounceEaseInOut = function() {
};
$hxClasses["motion.easing.BounceEaseInOut"] = motion.easing.BounceEaseInOut;
motion.easing.BounceEaseInOut.__name__ = ["motion","easing","BounceEaseInOut"];
motion.easing.BounceEaseInOut.__interfaces__ = [motion.easing.IEasing];
motion.easing.BounceEaseInOut.prototype = {
calculate: function(k) {
if(k < .5) return (1 - motion.easing.BounceEaseOut._ease(1 - k * 2,0,1,1)) * .5; else return motion.easing.BounceEaseOut._ease(k * 2 - 1,0,1,1) * .5 + .5;
}
,ease: function(t,b,c,d) {
if(t < d / 2) return (c - motion.easing.BounceEaseOut._ease(d - t * 2,0,c,d)) * .5 + b; else return motion.easing.BounceEaseOut._ease(t * 2 - d,0,c,d) * .5 + c * .5 + b;
}
,__class__: motion.easing.BounceEaseInOut
};
motion.easing.BounceEaseOut = function() {
};
$hxClasses["motion.easing.BounceEaseOut"] = motion.easing.BounceEaseOut;
motion.easing.BounceEaseOut.__name__ = ["motion","easing","BounceEaseOut"];
motion.easing.BounceEaseOut.__interfaces__ = [motion.easing.IEasing];
motion.easing.BounceEaseOut._ease = function(t,b,c,d) {
if((t /= d) < 0.363636363636363646) return c * (7.5625 * t * t) + b; else if(t < 0.727272727272727293) return c * (7.5625 * (t -= 0.545454545454545414) * t + .75) + b; else if(t < 0.909090909090909061) return c * (7.5625 * (t -= 0.818181818181818232) * t + .9375) + b; else return c * (7.5625 * (t -= 0.954545454545454586) * t + .984375) + b;
};
motion.easing.BounceEaseOut.prototype = {
calculate: function(k) {
return motion.easing.BounceEaseOut._ease(k,0,1,1);
}
,ease: function(t,b,c,d) {
return motion.easing.BounceEaseOut._ease(t,b,c,d);
}
,__class__: motion.easing.BounceEaseOut
};
motion.easing.Cubic = function() { };
$hxClasses["motion.easing.Cubic"] = motion.easing.Cubic;
motion.easing.Cubic.__name__ = ["motion","easing","Cubic"];
motion.easing.Cubic.__properties__ = {get_easeOut:"get_easeOut",get_easeInOut:"get_easeInOut",get_easeIn:"get_easeIn"}
motion.easing.Cubic.get_easeIn = function() {
return new motion.easing.CubicEaseIn();
};
motion.easing.Cubic.get_easeInOut = function() {
return new motion.easing.CubicEaseInOut();
};
motion.easing.Cubic.get_easeOut = function() {
return new motion.easing.CubicEaseOut();
};
motion.easing.CubicEaseIn = function() {
};
$hxClasses["motion.easing.CubicEaseIn"] = motion.easing.CubicEaseIn;
motion.easing.CubicEaseIn.__name__ = ["motion","easing","CubicEaseIn"];
motion.easing.CubicEaseIn.__interfaces__ = [motion.easing.IEasing];
motion.easing.CubicEaseIn.prototype = {
calculate: function(k) {
return k * k * k;
}
,ease: function(t,b,c,d) {
return c * (t /= d) * t * t + b;
}
,__class__: motion.easing.CubicEaseIn
};
motion.easing.CubicEaseInOut = function() {
};
$hxClasses["motion.easing.CubicEaseInOut"] = motion.easing.CubicEaseInOut;
motion.easing.CubicEaseInOut.__name__ = ["motion","easing","CubicEaseInOut"];
motion.easing.CubicEaseInOut.__interfaces__ = [motion.easing.IEasing];
motion.easing.CubicEaseInOut.prototype = {
calculate: function(k) {
if((k /= 0.5) < 1) return 0.5 * k * k * k; else return 0.5 * ((k -= 2) * k * k + 2);
}
,ease: function(t,b,c,d) {
if((t /= d / 2) < 1) return c / 2 * t * t * t + b; else return c / 2 * ((t -= 2) * t * t + 2) + b;
}
,__class__: motion.easing.CubicEaseInOut
};
motion.easing.CubicEaseOut = function() {
};
$hxClasses["motion.easing.CubicEaseOut"] = motion.easing.CubicEaseOut;
motion.easing.CubicEaseOut.__name__ = ["motion","easing","CubicEaseOut"];
motion.easing.CubicEaseOut.__interfaces__ = [motion.easing.IEasing];
motion.easing.CubicEaseOut.prototype = {
calculate: function(k) {
return --k * k * k + 1;
}
,ease: function(t,b,c,d) {
return c * ((t = t / d - 1) * t * t + 1) + b;
}
,__class__: motion.easing.CubicEaseOut
};
motion.easing.Elastic = function() { };
$hxClasses["motion.easing.Elastic"] = motion.easing.Elastic;
motion.easing.Elastic.__name__ = ["motion","easing","Elastic"];
motion.easing.Elastic.__properties__ = {get_easeOut:"get_easeOut",get_easeInOut:"get_easeInOut",get_easeIn:"get_easeIn"}
motion.easing.Elastic.get_easeIn = function() {
return new motion.easing.ElasticEaseIn(0.1,0.4);
};
motion.easing.Elastic.get_easeInOut = function() {
return new motion.easing.ElasticEaseInOut(0.1,0.4);
};
motion.easing.Elastic.get_easeOut = function() {
return new motion.easing.ElasticEaseOut(0.1,0.4);
};
motion.easing.ElasticEaseIn = function(a,p) {
this.a = a;
this.p = p;
};
$hxClasses["motion.easing.ElasticEaseIn"] = motion.easing.ElasticEaseIn;
motion.easing.ElasticEaseIn.__name__ = ["motion","easing","ElasticEaseIn"];
motion.easing.ElasticEaseIn.__interfaces__ = [motion.easing.IEasing];
motion.easing.ElasticEaseIn.prototype = {
calculate: function(k) {
if(k == 0) return 0;
if(k == 1) return 1;
var s;
if(this.a < 1) {
this.a = 1;
s = this.p / 4;
} else s = this.p / (2 * Math.PI) * Math.asin(1 / this.a);
return -(this.a * Math.pow(2,10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / this.p));
}
,ease: function(t,b,c,d) {
if(t == 0) return b;
if((t /= d) == 1) return b + c;
var s;
if(this.a < Math.abs(c)) {
this.a = c;
s = this.p / 4;
} else s = this.p / (2 * Math.PI) * Math.asin(c / this.a);
return -(this.a * Math.pow(2,10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / this.p)) + b;
}
,__class__: motion.easing.ElasticEaseIn
};
motion.easing.ElasticEaseInOut = function(a,p) {
this.a = a;
this.p = p;
};
$hxClasses["motion.easing.ElasticEaseInOut"] = motion.easing.ElasticEaseInOut;
motion.easing.ElasticEaseInOut.__name__ = ["motion","easing","ElasticEaseInOut"];
motion.easing.ElasticEaseInOut.__interfaces__ = [motion.easing.IEasing];
motion.easing.ElasticEaseInOut.prototype = {
calculate: function(k) {
if(k == 0) return 0;
if((k /= 0.5) == 2) return 1;
var p = 0.449999999999999956;
var a = 1;
var s = p / 4;
if(k < 1) return -0.5 * (Math.pow(2,10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p));
return Math.pow(2,-10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p) * 0.5 + 1;
}
,ease: function(t,b,c,d) {
if(t == 0) return b;
if((t /= d / 2) == 2) return b + c;
var s;
if(this.a < Math.abs(c)) {
this.a = c;
s = this.p / 4;
} else s = this.p / (2 * Math.PI) * Math.asin(c / this.a);
if(t < 1) return -0.5 * (this.a * Math.pow(2,10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / this.p)) + b;
return this.a * Math.pow(2,-10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / this.p) * 0.5 + c + b;
}
,__class__: motion.easing.ElasticEaseInOut
};
motion.easing.ElasticEaseOut = function(a,p) {
this.a = a;
this.p = p;
};
$hxClasses["motion.easing.ElasticEaseOut"] = motion.easing.ElasticEaseOut;
motion.easing.ElasticEaseOut.__name__ = ["motion","easing","ElasticEaseOut"];
motion.easing.ElasticEaseOut.__interfaces__ = [motion.easing.IEasing];
motion.easing.ElasticEaseOut.prototype = {
calculate: function(k) {
if(k == 0) return 0;
if(k == 1) return 1;
var s;
if(this.a < 1) {
this.a = 1;
s = this.p / 4;
} else s = this.p / (2 * Math.PI) * Math.asin(1 / this.a);
return this.a * Math.pow(2,-10 * k) * Math.sin((k - s) * (2 * Math.PI) / this.p) + 1;
}
,ease: function(t,b,c,d) {
if(t == 0) return b;
if((t /= d) == 1) return b + c;
var s;
if(this.a < Math.abs(c)) {
this.a = c;
s = this.p / 4;
} else s = this.p / (2 * Math.PI) * Math.asin(c / this.a);
return this.a * Math.pow(2,-10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / this.p) + c + b;
}
,__class__: motion.easing.ElasticEaseOut
};
motion.easing.ExpoEaseIn = function() {
};
$hxClasses["motion.easing.ExpoEaseIn"] = motion.easing.ExpoEaseIn;
motion.easing.ExpoEaseIn.__name__ = ["motion","easing","ExpoEaseIn"];
motion.easing.ExpoEaseIn.__interfaces__ = [motion.easing.IEasing];
motion.easing.ExpoEaseIn.prototype = {
calculate: function(k) {
if(k == 0) return 0; else return Math.pow(2,10 * (k - 1));
}
,ease: function(t,b,c,d) {
if(t == 0) return b; else return c * Math.pow(2,10 * (t / d - 1)) + b;
}
,__class__: motion.easing.ExpoEaseIn
};
motion.easing.ExpoEaseInOut = function() {
};
$hxClasses["motion.easing.ExpoEaseInOut"] = motion.easing.ExpoEaseInOut;
motion.easing.ExpoEaseInOut.__name__ = ["motion","easing","ExpoEaseInOut"];
motion.easing.ExpoEaseInOut.__interfaces__ = [motion.easing.IEasing];
motion.easing.ExpoEaseInOut.prototype = {
calculate: function(k) {
if(k == 0) return 0;
if(k == 1) return 1;
if((k /= 0.5) < 1.0) return 0.5 * Math.pow(2,10 * (k - 1));
return 0.5 * (2 - Math.pow(2,-10 * --k));
}
,ease: function(t,b,c,d) {
if(t == 0) return b;
if(t == d) return b + c;
if((t /= d / 2.0) < 1.0) return c / 2 * Math.pow(2,10 * (t - 1)) + b;
return c / 2 * (2 - Math.pow(2,-10 * --t)) + b;
}
,__class__: motion.easing.ExpoEaseInOut
};
motion.easing.Linear = function() { };
$hxClasses["motion.easing.Linear"] = motion.easing.Linear;
motion.easing.Linear.__name__ = ["motion","easing","Linear"];
motion.easing.Linear.__properties__ = {get_easeNone:"get_easeNone"}
motion.easing.Linear.get_easeNone = function() {
return new motion.easing.LinearEaseNone();
};
motion.easing.LinearEaseNone = function() {
};
$hxClasses["motion.easing.LinearEaseNone"] = motion.easing.LinearEaseNone;
motion.easing.LinearEaseNone.__name__ = ["motion","easing","LinearEaseNone"];
motion.easing.LinearEaseNone.__interfaces__ = [motion.easing.IEasing];
motion.easing.LinearEaseNone.prototype = {
calculate: function(k) {
return k;
}
,ease: function(t,b,c,d) {
return c * t / d + b;
}
,__class__: motion.easing.LinearEaseNone
};
motion.easing.Sine = function() { };
$hxClasses["motion.easing.Sine"] = motion.easing.Sine;
motion.easing.Sine.__name__ = ["motion","easing","Sine"];
motion.easing.Sine.__properties__ = {get_easeOut:"get_easeOut",get_easeInOut:"get_easeInOut",get_easeIn:"get_easeIn"}
motion.easing.Sine.get_easeIn = function() {
return new motion.easing.SineEaseIn();
};
motion.easing.Sine.get_easeInOut = function() {
return new motion.easing.SineEaseInOut();
};
motion.easing.Sine.get_easeOut = function() {
return new motion.easing.SineEaseOut();
};
motion.easing.SineEaseIn = function() {
};
$hxClasses["motion.easing.SineEaseIn"] = motion.easing.SineEaseIn;
motion.easing.SineEaseIn.__name__ = ["motion","easing","SineEaseIn"];
motion.easing.SineEaseIn.__interfaces__ = [motion.easing.IEasing];
motion.easing.SineEaseIn.prototype = {
calculate: function(k) {
return 1 - Math.cos(k * (Math.PI / 2));
}
,ease: function(t,b,c,d) {
return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;
}
,__class__: motion.easing.SineEaseIn
};
motion.easing.SineEaseInOut = function() {
};
$hxClasses["motion.easing.SineEaseInOut"] = motion.easing.SineEaseInOut;
motion.easing.SineEaseInOut.__name__ = ["motion","easing","SineEaseInOut"];
motion.easing.SineEaseInOut.__interfaces__ = [motion.easing.IEasing];
motion.easing.SineEaseInOut.prototype = {
calculate: function(k) {
return -(Math.cos(Math.PI * k) - 1) / 2;
}
,ease: function(t,b,c,d) {
return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b;
}
,__class__: motion.easing.SineEaseInOut
};
motion.easing.SineEaseOut = function() {
};
$hxClasses["motion.easing.SineEaseOut"] = motion.easing.SineEaseOut;
motion.easing.SineEaseOut.__name__ = ["motion","easing","SineEaseOut"];
motion.easing.SineEaseOut.__interfaces__ = [motion.easing.IEasing];
motion.easing.SineEaseOut.prototype = {
calculate: function(k) {
return Math.sin(k * (Math.PI / 2));
}
,ease: function(t,b,c,d) {
return c * Math.sin(t / d * (Math.PI / 2)) + b;
}
,__class__: motion.easing.SineEaseOut
};
openfl.IAssetCache = function() { };
$hxClasses["openfl.IAssetCache"] = openfl.IAssetCache;
openfl.IAssetCache.__name__ = ["openfl","IAssetCache"];
openfl.IAssetCache.prototype = {
__class__: openfl.IAssetCache
};
openfl.AssetCache = function() {
this.__enabled = true;
this.bitmapData = new haxe.ds.StringMap();
this.font = new haxe.ds.StringMap();
this.sound = new haxe.ds.StringMap();
};
$hxClasses["openfl.AssetCache"] = openfl.AssetCache;
openfl.AssetCache.__name__ = ["openfl","AssetCache"];
openfl.AssetCache.__interfaces__ = [openfl.IAssetCache];
openfl.AssetCache.prototype = {
clear: function(prefix) {
if(prefix == null) {
this.bitmapData = new haxe.ds.StringMap();
this.font = new haxe.ds.StringMap();
this.sound = new haxe.ds.StringMap();
} else {
var keys = this.bitmapData.keys();
while( keys.hasNext() ) {
var key = keys.next();
if(StringTools.startsWith(key,prefix)) this.bitmapData.remove(key);
}
var keys1 = this.font.keys();
while( keys1.hasNext() ) {
var key1 = keys1.next();
if(StringTools.startsWith(key1,prefix)) this.font.remove(key1);
}
var keys2 = this.sound.keys();
while( keys2.hasNext() ) {
var key2 = keys2.next();
if(StringTools.startsWith(key2,prefix)) this.sound.remove(key2);
}
}
}
,getBitmapData: function(id) {
return this.bitmapData.get(id);
}
,getFont: function(id) {
return this.font.get(id);
}
,getSound: function(id) {
return this.sound.get(id);
}
,hasBitmapData: function(id) {
return this.bitmapData.exists(id);
}
,hasFont: function(id) {
return this.font.exists(id);
}
,hasSound: function(id) {
return this.sound.exists(id);
}
,removeBitmapData: function(id) {
return this.bitmapData.remove(id);
}
,removeFont: function(id) {
return this.font.remove(id);
}
,removeSound: function(id) {
return this.sound.remove(id);
}
,setBitmapData: function(id,bitmapData) {
this.bitmapData.set(id,bitmapData);
}
,setFont: function(id,font) {
this.font.set(id,font);
}
,setSound: function(id,sound) {
this.sound.set(id,sound);
}
,get_enabled: function() {
return this.__enabled;
}
,set_enabled: function(value) {
return this.__enabled = value;
}
,__class__: openfl.AssetCache
,__properties__: {set_enabled:"set_enabled",get_enabled:"get_enabled"}
};
openfl.Assets = function() { };
$hxClasses["openfl.Assets"] = openfl.Assets;
openfl.Assets.__name__ = ["openfl","Assets"];
openfl.Assets.addEventListener = function(type,listener,useCapture,priority,useWeakReference) {
if(useWeakReference == null) useWeakReference = false;
if(priority == null) priority = 0;
if(useCapture == null) useCapture = false;
openfl.Assets.dispatcher.addEventListener(type,listener,useCapture,priority,useWeakReference);
};
openfl.Assets.dispatchEvent = function(event) {
return openfl.Assets.dispatcher.dispatchEvent(event);
};
openfl.Assets.exists = function(id,type) {
return lime.Assets.exists(id,type);
};
openfl.Assets.getBitmapData = function(id,useCache) {
if(useCache == null) useCache = true;
if(useCache && openfl.Assets.cache.get_enabled() && openfl.Assets.cache.hasBitmapData(id)) {
var bitmapData = openfl.Assets.cache.getBitmapData(id);
if(openfl.Assets.isValidBitmapData(bitmapData)) return bitmapData;
}
var image = lime.Assets.getImage(id,false);
if(image != null) {
var bitmapData1 = openfl.display.BitmapData.fromImage(image);
if(useCache && openfl.Assets.cache.get_enabled()) openfl.Assets.cache.setBitmapData(id,bitmapData1);
return bitmapData1;
}
return null;
};
openfl.Assets.getBytes = function(id) {
return lime.Assets.getBytes(id);
};
openfl.Assets.getFont = function(id,useCache) {
if(useCache == null) useCache = true;
if(useCache && openfl.Assets.cache.get_enabled() && openfl.Assets.cache.hasFont(id)) return openfl.Assets.cache.getFont(id);
var font = lime.Assets.getFont(id,false);
if(font != null) return font;
return new openfl.text.Font();
};
openfl.Assets.getLibrary = function(name) {
if(name == null || name == "") name = "default";
return lime.Assets.libraries.get(name);
};
openfl.Assets.getMovieClip = function(id) {
var libraryName = id.substring(0,id.indexOf(":"));
var symbolName;
var pos = id.indexOf(":") + 1;
symbolName = HxOverrides.substr(id,pos,null);
var library = openfl.Assets.getLibrary(libraryName);
if(library != null) {
if(library.exists(symbolName,"MOVIE_CLIP")) {
if(library.isLocal(symbolName,"MOVIE_CLIP")) return library.getMovieClip(symbolName); else null;
} else null;
} else null;
return null;
};
openfl.Assets.getMusic = function(id,useCache) {
if(useCache == null) useCache = true;
var path = lime.Assets.getPath(id);
if(path != null) return new openfl.media.Sound(new openfl.net.URLRequest(path));
return null;
};
openfl.Assets.getPath = function(id) {
return lime.Assets.getPath(id);
};
openfl.Assets.getSound = function(id,useCache) {
if(useCache == null) useCache = true;
if(useCache && openfl.Assets.cache.get_enabled() && openfl.Assets.cache.hasSound(id)) {
var sound = openfl.Assets.cache.getSound(id);
if(openfl.Assets.isValidSound(sound)) return sound;
}
var path = lime.Assets.getPath(id);
if(path != null) return new openfl.media.Sound(new openfl.net.URLRequest(path));
return null;
};
openfl.Assets.getText = function(id) {
return lime.Assets.getText(id);
};
openfl.Assets.hasEventListener = function(type) {
return openfl.Assets.dispatcher.hasEventListener(type);
};
openfl.Assets.isLocal = function(id,type,useCache) {
if(useCache == null) useCache = true;
if(useCache && openfl.Assets.cache.get_enabled()) {
if(type == "IMAGE" || type == null) {
if(openfl.Assets.cache.hasBitmapData(id)) return true;
}
if(type == "FONT" || type == null) {
if(openfl.Assets.cache.hasFont(id)) return true;
}
if(type == "SOUND" || type == "MUSIC" || type == null) {
if(openfl.Assets.cache.hasSound(id)) return true;
}
}
var libraryName = id.substring(0,id.indexOf(":"));
var symbolName;
var pos = id.indexOf(":") + 1;
symbolName = HxOverrides.substr(id,pos,null);
var library = openfl.Assets.getLibrary(libraryName);
if(library != null) return library.isLocal(symbolName,type);
return false;
};
openfl.Assets.isValidBitmapData = function(bitmapData) {
return bitmapData != null;
return true;
};
openfl.Assets.isValidSound = function(sound) {
return true;
};
openfl.Assets.list = function(type) {
return lime.Assets.list(type);
};
openfl.Assets.loadBitmapData = function(id,handler,useCache) {
if(useCache == null) useCache = true;
if(useCache && openfl.Assets.cache.get_enabled() && openfl.Assets.cache.hasBitmapData(id)) {
var bitmapData = openfl.Assets.cache.getBitmapData(id);
if(openfl.Assets.isValidBitmapData(bitmapData)) {
handler(bitmapData);
return;
}
}
lime.Assets.loadImage(id,function(image) {
if(image != null) {
var bitmapData1 = openfl.display.BitmapData.fromImage(image);
if(useCache && openfl.Assets.cache.get_enabled()) openfl.Assets.cache.setBitmapData(id,bitmapData1);
handler(bitmapData1);
}
},false);
};
openfl.Assets.loadBytes = function(id,handler) {
var libraryName = id.substring(0,id.indexOf(":"));
var symbolName;
var pos = id.indexOf(":") + 1;
symbolName = HxOverrides.substr(id,pos,null);
var library = openfl.Assets.getLibrary(libraryName);
if(library != null) {
if(library.exists(symbolName,"BINARY")) {
library.loadBytes(symbolName,handler);
return;
} else null;
} else null;
handler(null);
};
openfl.Assets.loadFont = function(id,handler,useCache) {
if(useCache == null) useCache = true;
if(useCache && openfl.Assets.cache.get_enabled() && openfl.Assets.cache.hasFont(id)) {
handler(openfl.Assets.cache.getFont(id));
return;
}
var libraryName = id.substring(0,id.indexOf(":"));
var symbolName;
var pos = id.indexOf(":") + 1;
symbolName = HxOverrides.substr(id,pos,null);
var library = openfl.Assets.getLibrary(libraryName);
if(library != null) {
if(library.exists(symbolName,"FONT")) {
if(useCache && openfl.Assets.cache.get_enabled()) library.loadFont(symbolName,function(font) {
openfl.Assets.cache.setFont(id,font);
handler(font);
}); else library.loadFont(symbolName,handler);
return;
} else null;
} else null;
handler(null);
};
openfl.Assets.loadLibrary = function(name,handler) {
lime.Assets.loadLibrary(name,handler);
};
openfl.Assets.loadMusic = function(id,handler,useCache) {
if(useCache == null) useCache = true;
handler(openfl.Assets.getMusic(id,useCache));
};
openfl.Assets.loadMovieClip = function(id,handler) {
var libraryName = id.substring(0,id.indexOf(":"));
var symbolName;
var pos = id.indexOf(":") + 1;
symbolName = HxOverrides.substr(id,pos,null);
var library = openfl.Assets.getLibrary(libraryName);
if(library != null) {
if(library.exists(symbolName,"MOVIE_CLIP")) {
library.loadMovieClip(symbolName,handler);
return;
} else null;
} else null;
handler(null);
};
openfl.Assets.loadSound = function(id,handler,useCache) {
if(useCache == null) useCache = true;
handler(openfl.Assets.getSound(id,useCache));
};
openfl.Assets.loadText = function(id,handler) {
lime.Assets.loadText(id,handler);
};
openfl.Assets.registerLibrary = function(name,library) {
lime.Assets.registerLibrary(name,library);
};
openfl.Assets.removeEventListener = function(type,listener,capture) {
if(capture == null) capture = false;
openfl.Assets.dispatcher.removeEventListener(type,listener,capture);
};
openfl.Assets.resolveClass = function(name) {
return Type.resolveClass(name);
};
openfl.Assets.resolveEnum = function(name) {
var value = Type.resolveEnum(name);
return value;
};
openfl.Assets.unloadLibrary = function(name) {
lime.Assets.unloadLibrary(name);
};
openfl.Assets.library_onEvent = function(library,type) {
if(type == "change") {
openfl.Assets.cache.clear();
openfl.Assets.dispatchEvent(new openfl.events.Event(openfl.events.Event.CHANGE));
}
};
openfl.AssetLibrary = function() {
lime.AssetLibrary.call(this);
};
$hxClasses["openfl.AssetLibrary"] = openfl.AssetLibrary;
openfl.AssetLibrary.__name__ = ["openfl","AssetLibrary"];
openfl.AssetLibrary.__super__ = lime.AssetLibrary;
openfl.AssetLibrary.prototype = $extend(lime.AssetLibrary.prototype,{
getMovieClip: function(id) {
return null;
}
,getMusic: function(id) {
return this.getSound(id);
}
,getSound: function(id) {
return null;
}
,loadMovieClip: function(id,handler) {
handler(this.getMovieClip(id));
}
,loadMusic: function(id,handler) {
handler(this.getMusic(id));
}
,loadSound: function(id,handler) {
handler(this.getSound(id));
}
,__class__: openfl.AssetLibrary
});
openfl._Assets = {};
openfl._Assets.AssetType_Impl_ = function() { };
$hxClasses["openfl._Assets.AssetType_Impl_"] = openfl._Assets.AssetType_Impl_;
openfl._Assets.AssetType_Impl_.__name__ = ["openfl","_Assets","AssetType_Impl_"];
openfl.display.MovieClip = function() {
openfl.display.Sprite.call(this);
this.__currentFrame = 0;
this.__currentLabels = [];
this.__totalFrames = 0;
this.enabled = true;
};
$hxClasses["openfl.display.MovieClip"] = openfl.display.MovieClip;
openfl.display.MovieClip.__name__ = ["openfl","display","MovieClip"];
openfl.display.MovieClip.__super__ = openfl.display.Sprite;
openfl.display.MovieClip.prototype = $extend(openfl.display.Sprite.prototype,{
gotoAndPlay: function(frame,scene) {
}
,gotoAndStop: function(frame,scene) {
}
,nextFrame: function() {
}
,play: function() {
}
,prevFrame: function() {
}
,stop: function() {
}
,get_currentFrame: function() {
return this.__currentFrame;
}
,get_currentFrameLabel: function() {
return this.__currentFrameLabel;
}
,get_currentLabel: function() {
return this.__currentLabel;
}
,get_currentLabels: function() {
return this.__currentLabels;
}
,get_framesLoaded: function() {
return this.__totalFrames;
}
,get_totalFrames: function() {
return this.__totalFrames;
}
,__class__: openfl.display.MovieClip
,__properties__: $extend(openfl.display.Sprite.prototype.__properties__,{get_totalFrames:"get_totalFrames",get_framesLoaded:"get_framesLoaded",get_currentLabels:"get_currentLabels",get_currentLabel:"get_currentLabel",get_currentFrameLabel:"get_currentFrameLabel",get_currentFrame:"get_currentFrame"})
});
openfl.display.LoaderInfo = function() {
openfl.events.EventDispatcher.call(this);
this.applicationDomain = openfl.system.ApplicationDomain.currentDomain;
this.bytesLoaded = 0;
this.bytesTotal = 0;
this.childAllowsParent = true;
this.parameters = { };
};
$hxClasses["openfl.display.LoaderInfo"] = openfl.display.LoaderInfo;
openfl.display.LoaderInfo.__name__ = ["openfl","display","LoaderInfo"];
openfl.display.LoaderInfo.create = function(loader) {
var loaderInfo = new openfl.display.LoaderInfo();
loaderInfo.uncaughtErrorEvents = new openfl.events.UncaughtErrorEvents();
if(loader != null) loaderInfo.loader = loader; else loaderInfo.url = openfl.display.LoaderInfo.__rootURL;
return loaderInfo;
};
openfl.display.LoaderInfo.__super__ = openfl.events.EventDispatcher;
openfl.display.LoaderInfo.prototype = $extend(openfl.events.EventDispatcher.prototype,{
__class__: openfl.display.LoaderInfo
});
openfl.system = {};
openfl.system.ApplicationDomain = function(parentDomain) {
if(parentDomain != null) this.parentDomain = parentDomain; else this.parentDomain = openfl.system.ApplicationDomain.currentDomain;
};
$hxClasses["openfl.system.ApplicationDomain"] = openfl.system.ApplicationDomain;
openfl.system.ApplicationDomain.__name__ = ["openfl","system","ApplicationDomain"];
openfl.system.ApplicationDomain.prototype = {
getDefinition: function(name) {
return Type.resolveClass(name);
}
,hasDefinition: function(name) {
return Type.resolveClass(name) != null;
}
,__class__: openfl.system.ApplicationDomain
};
openfl.events.UncaughtErrorEvents = function(target) {
openfl.events.EventDispatcher.call(this,target);
};
$hxClasses["openfl.events.UncaughtErrorEvents"] = openfl.events.UncaughtErrorEvents;
openfl.events.UncaughtErrorEvents.__name__ = ["openfl","events","UncaughtErrorEvents"];
openfl.events.UncaughtErrorEvents.__super__ = openfl.events.EventDispatcher;
openfl.events.UncaughtErrorEvents.prototype = $extend(openfl.events.EventDispatcher.prototype,{
__class__: openfl.events.UncaughtErrorEvents
});
openfl.geom = {};
openfl.geom.Matrix = function(a,b,c,d,tx,ty) {
if(ty == null) ty = 0;
if(tx == null) tx = 0;
if(d == null) d = 1;
if(c == null) c = 0;
if(b == null) b = 0;
if(a == null) a = 1;
this.a = a;
this.b = b;
this.c = c;
this.d = d;
this.tx = tx;
this.ty = ty;
this.__array = new Float32Array([a,b,c,d,tx,ty,0,0,1]);
};
$hxClasses["openfl.geom.Matrix"] = openfl.geom.Matrix;
openfl.geom.Matrix.__name__ = ["openfl","geom","Matrix"];
openfl.geom.Matrix.prototype = {
clone: function() {
return new openfl.geom.Matrix(this.a,this.b,this.c,this.d,this.tx,this.ty);
}
,concat: function(m) {
var a1 = this.a * m.a + this.b * m.c;
this.b = this.a * m.b + this.b * m.d;
this.a = a1;
var c1 = this.c * m.a + this.d * m.c;
this.d = this.c * m.b + this.d * m.d;
this.c = c1;
var tx1 = this.tx * m.a + this.ty * m.c + m.tx;
this.ty = this.tx * m.b + this.ty * m.d + m.ty;
this.tx = tx1;
}
,copyColumnFrom: function(column,vector3D) {
if(column > 2) throw "Column " + column + " out of bounds (2)"; else if(column == 0) {
this.a = vector3D.x;
this.c = vector3D.y;
} else if(column == 1) {
this.b = vector3D.x;
this.d = vector3D.y;
} else {
this.tx = vector3D.x;
this.ty = vector3D.y;
}
}
,copyColumnTo: function(column,vector3D) {
if(column > 2) throw "Column " + column + " out of bounds (2)"; else if(column == 0) {
vector3D.x = this.a;
vector3D.y = this.c;
vector3D.z = 0;
} else if(column == 1) {
vector3D.x = this.b;
vector3D.y = this.d;
vector3D.z = 0;
} else {
vector3D.x = this.tx;
vector3D.y = this.ty;
vector3D.z = 1;
}
}
,copyFrom: function(sourceMatrix) {
this.a = sourceMatrix.a;
this.b = sourceMatrix.b;
this.c = sourceMatrix.c;
this.d = sourceMatrix.d;
this.tx = sourceMatrix.tx;
this.ty = sourceMatrix.ty;
}
,copyRowFrom: function(row,vector3D) {
if(row > 2) throw "Row " + row + " out of bounds (2)"; else if(row == 0) {
this.a = vector3D.x;
this.c = vector3D.y;
} else if(row == 1) {
this.b = vector3D.x;
this.d = vector3D.y;
} else {
this.tx = vector3D.x;
this.ty = vector3D.y;
}
}
,copyRowTo: function(row,vector3D) {
if(row > 2) throw "Row " + row + " out of bounds (2)"; else if(row == 0) {
vector3D.x = this.a;
vector3D.y = this.b;
vector3D.z = this.tx;
} else if(row == 1) {
vector3D.x = this.c;
vector3D.y = this.d;
vector3D.z = this.ty;
} else {
vector3D.x = 0;
vector3D.y = 0;
vector3D.z = 1;
}
}
,createBox: function(scaleX,scaleY,rotation,tx,ty) {
if(ty == null) ty = 0;
if(tx == null) tx = 0;
if(rotation == null) rotation = 0;
if(rotation != 0) {
var cos = Math.cos(rotation);
var sin = Math.sin(rotation);
this.a = cos * scaleX;
this.b = sin * scaleY;
this.c = -sin * scaleX;
this.d = cos * scaleY;
} else {
this.a = scaleX;
this.b = 0;
this.c = 0;
this.d = scaleY;
}
this.tx = tx;
this.ty = ty;
}
,createGradientBox: function(width,height,rotation,tx,ty) {
if(ty == null) ty = 0;
if(tx == null) tx = 0;
if(rotation == null) rotation = 0;
this.a = width / 1638.4;
this.d = height / 1638.4;
if(rotation != 0) {
var cos = Math.cos(rotation);
var sin = Math.sin(rotation);
this.b = sin * this.d;
this.c = -sin * this.a;
this.a *= cos;
this.d *= cos;
} else {
this.b = 0;
this.c = 0;
}
this.tx = tx + width / 2;
this.ty = ty + height / 2;
}
,deltaTransformPoint: function(point) {
return new openfl.geom.Point(point.x * this.a + point.y * this.c,point.x * this.b + point.y * this.d);
}
,equals: function(matrix) {
return matrix != null && this.tx == matrix.tx && this.ty == matrix.ty && this.a == matrix.a && this.b == matrix.b && this.c == matrix.c && this.d == matrix.d;
}
,identity: function() {
this.a = 1;
this.b = 0;
this.c = 0;
this.d = 1;
this.tx = 0;
this.ty = 0;
}
,invert: function() {
var norm = this.a * this.d - this.b * this.c;
if(norm == 0) {
this.a = this.b = this.c = this.d = 0;
this.tx = -this.tx;
this.ty = -this.ty;
} else {
norm = 1.0 / norm;
var a1 = this.d * norm;
this.d = this.a * norm;
this.a = a1;
this.b *= -norm;
this.c *= -norm;
var tx1 = -this.a * this.tx - this.c * this.ty;
this.ty = -this.b * this.tx - this.d * this.ty;
this.tx = tx1;
}
return this;
}
,mult: function(m) {
var result = new openfl.geom.Matrix();
result.a = this.a * m.a + this.b * m.c;
result.b = this.a * m.b + this.b * m.d;
result.c = this.c * m.a + this.d * m.c;
result.d = this.c * m.b + this.d * m.d;
result.tx = this.tx * m.a + this.ty * m.c + m.tx;
result.ty = this.tx * m.b + this.ty * m.d + m.ty;
return result;
}
,rotate: function(theta) {
var cos = Math.cos(theta);
var sin = Math.sin(theta);
var a1 = this.a * cos - this.b * sin;
this.b = this.a * sin + this.b * cos;
this.a = a1;
var c1 = this.c * cos - this.d * sin;
this.d = this.c * sin + this.d * cos;
this.c = c1;
var tx1 = this.tx * cos - this.ty * sin;
this.ty = this.tx * sin + this.ty * cos;
this.tx = tx1;
}
,scale: function(sx,sy) {
this.a *= sx;
this.b *= sy;
this.c *= sx;
this.d *= sy;
this.tx *= sx;
this.ty *= sy;
}
,setRotation: function(theta,scale) {
if(scale == null) scale = 1;
this.a = Math.cos(theta) * scale;
this.c = Math.sin(theta) * scale;
this.b = -this.c;
this.d = this.a;
}
,setTo: function(a,b,c,d,tx,ty) {
this.a = a;
this.b = b;
this.c = c;
this.d = d;
this.tx = tx;
this.ty = ty;
}
,to3DString: function(roundPixels) {
if(roundPixels == null) roundPixels = false;
if(roundPixels) return "matrix3d(" + this.a + ", " + this.b + ", " + "0, 0, " + this.c + ", " + this.d + ", " + "0, 0, 0, 0, 1, 0, " + (this.tx | 0) + ", " + (this.ty | 0) + ", 0, 1)"; else return "matrix3d(" + this.a + ", " + this.b + ", " + "0, 0, " + this.c + ", " + this.d + ", " + "0, 0, 0, 0, 1, 0, " + this.tx + ", " + this.ty + ", 0, 1)";
}
,toMozString: function() {
return "matrix(" + this.a + ", " + this.b + ", " + this.c + ", " + this.d + ", " + this.tx + "px, " + this.ty + "px)";
}
,toString: function() {
return "matrix(" + this.a + ", " + this.b + ", " + this.c + ", " + this.d + ", " + this.tx + ", " + this.ty + ")";
}
,transformPoint: function(pos) {
return new openfl.geom.Point(pos.x * this.a + pos.y * this.c + this.tx,pos.x * this.b + pos.y * this.d + this.ty);
}
,translate: function(dx,dy) {
var m = new openfl.geom.Matrix();
m.tx = dx;
m.ty = dy;
this.concat(m);
}
,toArray: function(transpose) {
if(transpose == null) transpose = false;
if(transpose) {
this.__array[0] = this.a;
this.__array[1] = this.c;
this.__array[2] = 0;
this.__array[3] = this.b;
this.__array[4] = this.d;
this.__array[5] = 0;
this.__array[6] = this.tx;
this.__array[7] = this.ty;
this.__array[8] = 1;
} else {
this.__array[0] = this.a;
this.__array[1] = this.b;
this.__array[2] = this.tx;
this.__array[3] = this.c;
this.__array[4] = this.d;
this.__array[5] = this.ty;
this.__array[6] = 0;
this.__array[7] = 0;
this.__array[8] = 1;
}
return this.__array;
}
,__cleanValues: function() {
this.a = Math.round(this.a * 1000) / 1000;
this.b = Math.round(this.b * 1000) / 1000;
this.c = Math.round(this.c * 1000) / 1000;
this.d = Math.round(this.d * 1000) / 1000;
this.tx = Math.round(this.tx * 10) / 10;
this.ty = Math.round(this.ty * 10) / 10;
}
,__transformX: function(pos) {
return pos.x * this.a + pos.y * this.c + this.tx;
}
,__transformY: function(pos) {
return pos.x * this.b + pos.y * this.d + this.ty;
}
,__translateTransformed: function(pos) {
this.tx = pos.x * this.a + pos.y * this.c + this.tx;
this.ty = pos.x * this.b + pos.y * this.d + this.ty;
}
,__class__: openfl.geom.Matrix
};
openfl.Lib = function() { };
$hxClasses["openfl.Lib"] = openfl.Lib;
openfl.Lib.__name__ = ["openfl","Lib"];
openfl.Lib.application = null;
openfl.Lib["as"] = function(v,c) {
if(js.Boot.__instanceof(v,c)) return v; else return null;
};
openfl.Lib.attach = function(name) {
return new openfl.display.MovieClip();
};
openfl.Lib.embed = $hx_exports.openfl.embed = function(elementName,width,height,background,assetsPrefix) {
lime.system.System.embed(elementName,width,height,background,assetsPrefix);
};
openfl.Lib.getTimer = function() {
return lime.system.System.getTimer();
};
openfl.Lib.getURL = function(request,target) {
if(target == null) target = "_blank";
window.open(request.url,target);
};
openfl.Lib.notImplemented = function(api) {
if(!openfl.Lib.__sentWarnings.exists(api)) {
openfl.Lib.__sentWarnings.set(api,true);
null;
}
};
openfl.Lib.preventDefaultTouchMove = function() {
window.document.addEventListener("touchmove",function(evt) {
evt.preventDefault();
},false);
};
openfl.Lib.trace = function(arg) {
haxe.Log.trace(arg,{ fileName : "Lib.hx", lineNumber : 146, className : "openfl.Lib", methodName : "trace"});
};
openfl.Memory = function() { };
$hxClasses["openfl.Memory"] = openfl.Memory;
openfl.Memory.__name__ = ["openfl","Memory"];
openfl.Memory.gcRef = null;
openfl.Memory.len = null;
openfl.Memory._setPositionTemporarily = function(position,action) {
var oldPosition = openfl.Memory.gcRef.position;
openfl.Memory.gcRef.position = position;
var value = action();
openfl.Memory.gcRef.position = oldPosition;
return value;
};
openfl.Memory.getByte = function(addr) {
return openfl.Memory.gcRef.data.getInt8(addr);
};
openfl.Memory.getDouble = function(addr) {
return openfl.Memory._setPositionTemporarily(addr,function() {
return openfl.Memory.gcRef.readDouble();
});
};
openfl.Memory.getFloat = function(addr) {
return openfl.Memory._setPositionTemporarily(addr,function() {
return openfl.Memory.gcRef.readFloat();
});
};
openfl.Memory.getI32 = function(addr) {
return openfl.Memory._setPositionTemporarily(addr,function() {
return openfl.Memory.gcRef.readInt();
});
};
openfl.Memory.getUI16 = function(addr) {
return openfl.Memory._setPositionTemporarily(addr,function() {
return openfl.Memory.gcRef.readUnsignedShort();
});
};
openfl.Memory.select = function(inBytes) {
openfl.Memory.gcRef = inBytes;
if(inBytes != null) openfl.Memory.len = inBytes.length; else openfl.Memory.len = 0;
};
openfl.Memory.setByte = function(addr,v) {
openfl.Memory.gcRef.data.setUint8(addr,v);
};
openfl.Memory.setDouble = function(addr,v) {
openfl.Memory._setPositionTemporarily(addr,function() {
openfl.Memory.gcRef.writeDouble(v);
});
};
openfl.Memory.setFloat = function(addr,v) {
openfl.Memory._setPositionTemporarily(addr,function() {
openfl.Memory.gcRef.writeFloat(v);
});
};
openfl.Memory.setI16 = function(addr,v) {
openfl.Memory._setPositionTemporarily(addr,function() {
openfl.Memory.gcRef.writeUnsignedShort(v);
});
};
openfl.Memory.setI32 = function(addr,v) {
openfl.Memory._setPositionTemporarily(addr,function() {
openfl.Memory.gcRef.writeInt(v);
});
};
openfl._Vector = {};
openfl._Vector.Vector_Impl_ = function() { };
$hxClasses["openfl._Vector.Vector_Impl_"] = openfl._Vector.Vector_Impl_;
openfl._Vector.Vector_Impl_.__name__ = ["openfl","_Vector","Vector_Impl_"];
openfl._Vector.Vector_Impl_.__properties__ = {set_fixed:"set_fixed",get_fixed:"get_fixed",set_length:"set_length",get_length:"get_length"}
openfl._Vector.Vector_Impl_._new = function(length,fixed) {
if(fixed == null) fixed = false;
if(length == null) length = 0;
var this1;
this1 = new openfl.VectorData();
var this2;
this2 = new Array(length);
this1.data = this2;
this1.length = length;
this1.fixed = fixed;
return this1;
};
openfl._Vector.Vector_Impl_.concat = function(this1,a) {
var vectorData = new openfl.VectorData();
if(a != null) vectorData.length = this1.length + a.length; else vectorData.length = this1.length;
vectorData.fixed = false;
var this2;
this2 = new Array(vectorData.length);
vectorData.data = this2;
haxe.ds._Vector.Vector_Impl_.blit(this1.data,0,vectorData.data,0,this1.length);
if(a != null) haxe.ds._Vector.Vector_Impl_.blit(a.data,0,vectorData.data,this1.length,a.length);
return vectorData;
};
openfl._Vector.Vector_Impl_.copy = function(this1) {
var vectorData = new openfl.VectorData();
vectorData.length = this1.length;
vectorData.fixed = this1.fixed;
var this2;
this2 = new Array(this1.length);
vectorData.data = this2;
haxe.ds._Vector.Vector_Impl_.blit(this1.data,0,vectorData.data,0,this1.length);
return vectorData;
};
openfl._Vector.Vector_Impl_.iterator = function(this1) {
return new openfl.VectorDataIterator(this1);
};
openfl._Vector.Vector_Impl_.join = function(this1,sep) {
var output = "";
var _g1 = 0;
var _g = this1.length;
while(_g1 < _g) {
var i = _g1++;
if(i > 0) output += sep;
output += Std.string(this1.data[i]);
}
return output;
};
openfl._Vector.Vector_Impl_.pop = function(this1) {
var value = null;
if(!this1.fixed) {
if(this1.length > 0) {
this1.length--;
value = this1.data[this1.length];
}
}
return value;
};
openfl._Vector.Vector_Impl_.push = function(this1,x) {
if(!this1.fixed) {
this1.length++;
if(this1.data.length < this1.length) {
var data;
var this2;
this2 = new Array(this1.data.length + 10);
data = this2;
haxe.ds._Vector.Vector_Impl_.blit(this1.data,0,data,0,this1.data.length);
this1.data = data;
}
this1.data[this1.length - 1] = x;
}
return this1.length;
};
openfl._Vector.Vector_Impl_.reverse = function(this1) {
var data;
var this2;
this2 = new Array(this1.length);
data = this2;
var _g1 = 0;
var _g = this1.length;
while(_g1 < _g) {
var i = _g1++;
data[this1.length - 1 - i] = this1.data[i];
}
this1.data = data;
};
openfl._Vector.Vector_Impl_.shift = function(this1) {
if(!this1.fixed && this1.length > 0) {
this1.length--;
var value = this1.data[0];
haxe.ds._Vector.Vector_Impl_.blit(this1.data,1,this1.data,0,this1.length);
return value;
}
return null;
};
openfl._Vector.Vector_Impl_.unshift = function(this1,x) {
if(!this1.fixed) {
this1.length++;
if(this1.data.length < this1.length) {
var data;
var this2;
this2 = new Array(this1.length + 10);
data = this2;
haxe.ds._Vector.Vector_Impl_.blit(this1.data,0,data,1,this1.data.length);
this1.data = data;
} else haxe.ds._Vector.Vector_Impl_.blit(this1.data,0,this1.data,1,this1.length - 1);
this1.data[0] = x;
}
};
openfl._Vector.Vector_Impl_.slice = function(this1,pos,end) {
if(end == null) end = 0;
if(pos == null) pos = 0;
if(pos < 0) pos += this1.length;
if(end <= 0) end += this1.length;
if(end > this1.length) end = this1.length;
var length = end - pos;
if(length <= 0 || length > this1.length) length = this1.length;
var vectorData = new openfl.VectorData();
vectorData.length = end - pos;
vectorData.fixed = true;
var this2;
this2 = new Array(length);
vectorData.data = this2;
haxe.ds._Vector.Vector_Impl_.blit(this1.data,pos,vectorData.data,0,length);
return vectorData;
};
openfl._Vector.Vector_Impl_.sort = function(this1,f) {
var array = haxe.ds._Vector.Vector_Impl_.toArray(this1.data);
array.sort(f);
var vec;
var this2;
this2 = new Array(array.length);
vec = this2;
var _g1 = 0;
var _g = array.length;
while(_g1 < _g) {
var i = _g1++;
vec[i] = array[i];
}
this1.data = vec;
};
openfl._Vector.Vector_Impl_.splice = function(this1,pos,len) {
if(pos < 0) pos += this1.length;
if(pos + len > this1.length) len = this1.length - pos;
if(len < 0) len = 0;
var vectorData = new openfl.VectorData();
vectorData.length = len;
vectorData.fixed = false;
var this2;
this2 = new Array(len);
vectorData.data = this2;
haxe.ds._Vector.Vector_Impl_.blit(this1.data,pos,vectorData.data,0,len);
if(len > 0) {
this1.length -= len;
haxe.ds._Vector.Vector_Impl_.blit(this1.data,pos + len,this1.data,pos,this1.length - pos);
}
return vectorData;
};
openfl._Vector.Vector_Impl_.toString = function(this1) {
return haxe.ds._Vector.Vector_Impl_.toArray(this1.data).toString();
};
openfl._Vector.Vector_Impl_.indexOf = function(this1,x,from) {
if(from == null) from = 0;
var value = -1;
var _g1 = from;
var _g = this1.length;
while(_g1 < _g) {
var i = _g1++;
if(this1.data[i] == x) {
value = i;
break;
}
}
return value;
};
openfl._Vector.Vector_Impl_.lastIndexOf = function(this1,x,from) {
if(from == null) from = 0;
var value = -1;
var i = this1.length - 1;
while(i >= from) {
if(this1.data[i] == x) {
value = i;
break;
}
i--;
}
return value;
};
openfl._Vector.Vector_Impl_.ofArray = function(a) {
var vectorData = new openfl.VectorData();
vectorData.length = a.length;
vectorData.fixed = true;
var vec;
var this1;
this1 = new Array(a.length);
vec = this1;
var _g1 = 0;
var _g = a.length;
while(_g1 < _g) {
var i = _g1++;
vec[i] = a[i];
}
vectorData.data = vec;
return vectorData;
};
openfl._Vector.Vector_Impl_.convert = function(v) {
return v;
};
openfl._Vector.Vector_Impl_.get = function(this1,index) {
return this1.data[index];
};
openfl._Vector.Vector_Impl_.set = function(this1,key,value) {
if(!this1.fixed) {
if(key >= this1.length) this1.length = key + 1;
if(this1.data.length < this1.length) {
var data;
var this2;
this2 = new Array(this1.data.length + 10);
data = this2;
haxe.ds._Vector.Vector_Impl_.blit(this1.data,0,data,0,this1.data.length);
this1.data = data;
}
}
return this1.data[key] = value;
};
openfl._Vector.Vector_Impl_.fromArray = function(value) {
var vectorData = new openfl.VectorData();
vectorData.length = value.length;
vectorData.fixed = true;
var vec;
var this1;
this1 = new Array(value.length);
vec = this1;
var _g1 = 0;
var _g = value.length;
while(_g1 < _g) {
var i = _g1++;
vec[i] = value[i];
}
vectorData.data = vec;
return vectorData;
};
openfl._Vector.Vector_Impl_.toArray = function(this1) {
var value = new Array();
var _g1 = 0;
var _g = this1.data.length;
while(_g1 < _g) {
var i = _g1++;
value.push(this1.data[i]);
}
return value;
};
openfl._Vector.Vector_Impl_.fromHaxeVector = function(value) {
var vectorData = new openfl.VectorData();
vectorData.length = value.length;
vectorData.fixed = true;
vectorData.data = value;
return vectorData;
};
openfl._Vector.Vector_Impl_.toHaxeVector = function(this1) {
return this1.data;
};
openfl._Vector.Vector_Impl_.fromVectorData = function(value) {
return value;
};
openfl._Vector.Vector_Impl_.toVectorData = function(this1) {
return this1;
};
openfl._Vector.Vector_Impl_.get_length = function(this1) {
return this1.length;
};
openfl._Vector.Vector_Impl_.set_length = function(this1,value) {
if(!this1.fixed) {
if(value > this1.length) {
var data;
var this2;
this2 = new Array(value);
data = this2;
haxe.ds._Vector.Vector_Impl_.blit(this1.data,0,data,0,Std["int"](Math.min(this1.data.length,value)));
this1.data = data;
}
this1.length = value;
}
return value;
};
openfl._Vector.Vector_Impl_.get_fixed = function(this1) {
return this1.fixed;
};
openfl._Vector.Vector_Impl_.set_fixed = function(this1,value) {
return this1.fixed = value;
};
openfl.VectorData = function() {
this.length = 0;
};
$hxClasses["openfl.VectorData"] = openfl.VectorData;
openfl.VectorData.__name__ = ["openfl","VectorData"];
openfl.VectorData.prototype = {
__class__: openfl.VectorData
};
openfl.VectorDataIterator = function(data) {
this.index = 0;
this.vectorData = data;
};
$hxClasses["openfl.VectorDataIterator"] = openfl.VectorDataIterator;
openfl.VectorDataIterator.__name__ = ["openfl","VectorDataIterator"];
openfl.VectorDataIterator.prototype = {
hasNext: function() {
return this.index < this.vectorData.length;
}
,next: function() {
var index = this.index++;
return this.vectorData.data[index];
}
,__class__: openfl.VectorDataIterator
};
openfl._internal = {};
openfl._internal.renderer = {};
openfl._internal.renderer.AbstractRenderer = function(width,height) {
this.width = width;
this.height = height;
};
$hxClasses["openfl._internal.renderer.AbstractRenderer"] = openfl._internal.renderer.AbstractRenderer;
openfl._internal.renderer.AbstractRenderer.__name__ = ["openfl","_internal","renderer","AbstractRenderer"];
openfl._internal.renderer.AbstractRenderer.prototype = {
render: function(stage) {
}
,renderShape: function(shape) {
}
,resize: function(width,height) {
}
,__class__: openfl._internal.renderer.AbstractRenderer
};
openfl._internal.renderer.RenderSession = function() {
};
$hxClasses["openfl._internal.renderer.RenderSession"] = openfl._internal.renderer.RenderSession;
openfl._internal.renderer.RenderSession.__name__ = ["openfl","_internal","renderer","RenderSession"];
openfl._internal.renderer.RenderSession.prototype = {
__class__: openfl._internal.renderer.RenderSession
};
openfl._internal.renderer.canvas = {};
openfl._internal.renderer.canvas.CanvasBitmap = function() { };
$hxClasses["openfl._internal.renderer.canvas.CanvasBitmap"] = openfl._internal.renderer.canvas.CanvasBitmap;
openfl._internal.renderer.canvas.CanvasBitmap.__name__ = ["openfl","_internal","renderer","canvas","CanvasBitmap"];
openfl._internal.renderer.canvas.CanvasBitmap.render = function(bitmap,renderSession) {
if(!bitmap.__renderable || bitmap.__worldAlpha <= 0) return;
var context = renderSession.context;
if(bitmap.bitmapData != null && bitmap.bitmapData.__isValid) {
if(bitmap.__mask != null) renderSession.maskManager.pushMask(bitmap.__mask);
bitmap.bitmapData.__sync();
context.globalAlpha = bitmap.__worldAlpha;
var transform = bitmap.__worldTransform;
var scrollRect = bitmap.get_scrollRect();
if(renderSession.roundPixels) context.setTransform(transform.a,transform.b,transform.c,transform.d,transform.tx | 0,transform.ty | 0); else context.setTransform(transform.a,transform.b,transform.c,transform.d,transform.tx,transform.ty);
if(!bitmap.smoothing) {
context.mozImageSmoothingEnabled = false;
context.webkitImageSmoothingEnabled = false;
context.imageSmoothingEnabled = false;
}
if(scrollRect == null) context.drawImage(bitmap.bitmapData.__image.get_src(),0,0); else context.drawImage(bitmap.bitmapData.__image.get_src(),scrollRect.x,scrollRect.y,scrollRect.width,scrollRect.height,scrollRect.x,scrollRect.y,scrollRect.width,scrollRect.height);
if(!bitmap.smoothing) {
context.mozImageSmoothingEnabled = true;
context.webkitImageSmoothingEnabled = true;
context.imageSmoothingEnabled = true;
}
if(bitmap.__mask != null) renderSession.maskManager.popMask();
}
};
openfl._internal.renderer.canvas.CanvasGraphics = function() { };
$hxClasses["openfl._internal.renderer.canvas.CanvasGraphics"] = openfl._internal.renderer.canvas.CanvasGraphics;
openfl._internal.renderer.canvas.CanvasGraphics.__name__ = ["openfl","_internal","renderer","canvas","CanvasGraphics"];
openfl._internal.renderer.canvas.CanvasGraphics.bounds = null;
openfl._internal.renderer.canvas.CanvasGraphics.hasFill = null;
openfl._internal.renderer.canvas.CanvasGraphics.hasStroke = null;
openfl._internal.renderer.canvas.CanvasGraphics.inPath = null;
openfl._internal.renderer.canvas.CanvasGraphics.inversePendingMatrix = null;
openfl._internal.renderer.canvas.CanvasGraphics.pendingMatrix = null;
openfl._internal.renderer.canvas.CanvasGraphics.positionX = null;
openfl._internal.renderer.canvas.CanvasGraphics.positionY = null;
openfl._internal.renderer.canvas.CanvasGraphics.setFill = null;
openfl._internal.renderer.canvas.CanvasGraphics.context = null;
openfl._internal.renderer.canvas.CanvasGraphics.pattern = null;
openfl._internal.renderer.canvas.CanvasGraphics.beginPath = function() {
if(!openfl._internal.renderer.canvas.CanvasGraphics.inPath) {
openfl._internal.renderer.canvas.CanvasGraphics.context.beginPath();
openfl._internal.renderer.canvas.CanvasGraphics.inPath = true;
}
};
openfl._internal.renderer.canvas.CanvasGraphics.beginPatternFill = function(bitmapFill,bitmapRepeat) {
if(openfl._internal.renderer.canvas.CanvasGraphics.setFill || bitmapFill == null) return;
if(openfl._internal.renderer.canvas.CanvasGraphics.pattern == null) openfl._internal.renderer.canvas.CanvasGraphics.pattern = openfl._internal.renderer.canvas.CanvasGraphics.context.createPattern(bitmapFill.__image.get_src(),bitmapRepeat?"repeat":"no-repeat");
openfl._internal.renderer.canvas.CanvasGraphics.context.fillStyle = openfl._internal.renderer.canvas.CanvasGraphics.pattern;
openfl._internal.renderer.canvas.CanvasGraphics.setFill = true;
};
openfl._internal.renderer.canvas.CanvasGraphics.closePath = function(closeFill) {
if(openfl._internal.renderer.canvas.CanvasGraphics.inPath) {
if(openfl._internal.renderer.canvas.CanvasGraphics.hasFill) {
openfl._internal.renderer.canvas.CanvasGraphics.context.translate(-openfl._internal.renderer.canvas.CanvasGraphics.bounds.x,-openfl._internal.renderer.canvas.CanvasGraphics.bounds.y);
if(openfl._internal.renderer.canvas.CanvasGraphics.pendingMatrix != null) {
openfl._internal.renderer.canvas.CanvasGraphics.context.transform(openfl._internal.renderer.canvas.CanvasGraphics.pendingMatrix.a,openfl._internal.renderer.canvas.CanvasGraphics.pendingMatrix.b,openfl._internal.renderer.canvas.CanvasGraphics.pendingMatrix.c,openfl._internal.renderer.canvas.CanvasGraphics.pendingMatrix.d,openfl._internal.renderer.canvas.CanvasGraphics.pendingMatrix.tx,openfl._internal.renderer.canvas.CanvasGraphics.pendingMatrix.ty);
openfl._internal.renderer.canvas.CanvasGraphics.context.fill();
openfl._internal.renderer.canvas.CanvasGraphics.context.transform(openfl._internal.renderer.canvas.CanvasGraphics.inversePendingMatrix.a,openfl._internal.renderer.canvas.CanvasGraphics.inversePendingMatrix.b,openfl._internal.renderer.canvas.CanvasGraphics.inversePendingMatrix.c,openfl._internal.renderer.canvas.CanvasGraphics.inversePendingMatrix.d,openfl._internal.renderer.canvas.CanvasGraphics.inversePendingMatrix.tx,openfl._internal.renderer.canvas.CanvasGraphics.inversePendingMatrix.ty);
} else openfl._internal.renderer.canvas.CanvasGraphics.context.fill();
openfl._internal.renderer.canvas.CanvasGraphics.context.translate(openfl._internal.renderer.canvas.CanvasGraphics.bounds.x,openfl._internal.renderer.canvas.CanvasGraphics.bounds.y);
}
openfl._internal.renderer.canvas.CanvasGraphics.context.closePath();
if(openfl._internal.renderer.canvas.CanvasGraphics.hasStroke) openfl._internal.renderer.canvas.CanvasGraphics.context.stroke();
}
openfl._internal.renderer.canvas.CanvasGraphics.inPath = false;
if(closeFill) {
openfl._internal.renderer.canvas.CanvasGraphics.hasFill = false;
openfl._internal.renderer.canvas.CanvasGraphics.hasStroke = false;
openfl._internal.renderer.canvas.CanvasGraphics.pendingMatrix = null;
openfl._internal.renderer.canvas.CanvasGraphics.inversePendingMatrix = null;
}
};
openfl._internal.renderer.canvas.CanvasGraphics.drawRoundRect = function(x,y,width,height,rx,ry) {
if(ry == -1) ry = rx;
rx *= 0.5;
ry *= 0.5;
if(rx > width / 2) rx = width / 2;
if(ry > height / 2) ry = height / 2;
var xe = x + width;
var ye = y + height;
var cx1 = -rx + rx * openfl._internal.renderer.canvas.CanvasGraphics.SIN45;
var cx2 = -rx + rx * openfl._internal.renderer.canvas.CanvasGraphics.TAN22;
var cy1 = -ry + ry * openfl._internal.renderer.canvas.CanvasGraphics.SIN45;
var cy2 = -ry + ry * openfl._internal.renderer.canvas.CanvasGraphics.TAN22;
openfl._internal.renderer.canvas.CanvasGraphics.context.moveTo(xe,ye - ry);
openfl._internal.renderer.canvas.CanvasGraphics.context.quadraticCurveTo(xe,ye + cy2,xe + cx1,ye + cy1);
openfl._internal.renderer.canvas.CanvasGraphics.context.quadraticCurveTo(xe + cx2,ye,xe - rx,ye);
openfl._internal.renderer.canvas.CanvasGraphics.context.lineTo(x + rx,ye);
openfl._internal.renderer.canvas.CanvasGraphics.context.quadraticCurveTo(x - cx2,ye,x - cx1,ye + cy1);
openfl._internal.renderer.canvas.CanvasGraphics.context.quadraticCurveTo(x,ye + cy2,x,ye - ry);
openfl._internal.renderer.canvas.CanvasGraphics.context.lineTo(x,y + ry);
openfl._internal.renderer.canvas.CanvasGraphics.context.quadraticCurveTo(x,y - cy2,x - cx1,y - cy1);
openfl._internal.renderer.canvas.CanvasGraphics.context.quadraticCurveTo(x - cx2,y,x + rx,y);
openfl._internal.renderer.canvas.CanvasGraphics.context.lineTo(xe - rx,y);
openfl._internal.renderer.canvas.CanvasGraphics.context.quadraticCurveTo(xe + cx2,y,xe + cx1,y - cy1);
openfl._internal.renderer.canvas.CanvasGraphics.context.quadraticCurveTo(xe,y - cy2,xe,y + ry);
openfl._internal.renderer.canvas.CanvasGraphics.context.lineTo(xe,ye - ry);
};
openfl._internal.renderer.canvas.CanvasGraphics.render = function(graphics,renderSession) {
if(graphics.__dirty) {
openfl._internal.renderer.canvas.CanvasGraphics.bounds = graphics.__bounds;
openfl._internal.renderer.canvas.CanvasGraphics.hasFill = false;
openfl._internal.renderer.canvas.CanvasGraphics.hasStroke = false;
openfl._internal.renderer.canvas.CanvasGraphics.inPath = false;
openfl._internal.renderer.canvas.CanvasGraphics.positionX = 0;
openfl._internal.renderer.canvas.CanvasGraphics.positionY = 0;
if(!graphics.__visible || graphics.__commands.length == 0 || openfl._internal.renderer.canvas.CanvasGraphics.bounds == null || openfl._internal.renderer.canvas.CanvasGraphics.bounds.width == 0 || openfl._internal.renderer.canvas.CanvasGraphics.bounds.height == 0) {
graphics.__canvas = null;
graphics.__context = null;
} else {
if(graphics.__canvas == null) {
graphics.__canvas = window.document.createElement("canvas");
graphics.__context = graphics.__canvas.getContext("2d");
}
openfl._internal.renderer.canvas.CanvasGraphics.context = graphics.__context;
graphics.__canvas.width = Math.ceil(openfl._internal.renderer.canvas.CanvasGraphics.bounds.width);
graphics.__canvas.height = Math.ceil(openfl._internal.renderer.canvas.CanvasGraphics.bounds.height);
var offsetX = openfl._internal.renderer.canvas.CanvasGraphics.bounds.x;
var offsetY = openfl._internal.renderer.canvas.CanvasGraphics.bounds.y;
var bitmapFill = null;
var bitmapRepeat = false;
var _g = 0;
var _g1 = graphics.__commands;
try {
while(_g < _g1.length) {
var command = _g1[_g];
++_g;
switch(command[1]) {
case 0:
var smooth = command[5];
var repeat = command[4];
var matrix = command[3];
var bitmap = command[2];
openfl._internal.renderer.canvas.CanvasGraphics.closePath(false);
if(bitmap != bitmapFill || repeat != bitmapRepeat) {
bitmapFill = bitmap;
bitmapRepeat = repeat;
openfl._internal.renderer.canvas.CanvasGraphics.pattern = null;
openfl._internal.renderer.canvas.CanvasGraphics.setFill = false;
bitmap.__sync();
}
if(matrix != null) {
openfl._internal.renderer.canvas.CanvasGraphics.pendingMatrix = matrix;
openfl._internal.renderer.canvas.CanvasGraphics.inversePendingMatrix = new openfl.geom.Matrix(matrix.a,matrix.b,matrix.c,matrix.d,matrix.tx,matrix.ty);
openfl._internal.renderer.canvas.CanvasGraphics.inversePendingMatrix.invert();
} else {
openfl._internal.renderer.canvas.CanvasGraphics.pendingMatrix = null;
openfl._internal.renderer.canvas.CanvasGraphics.inversePendingMatrix = null;
}
openfl._internal.renderer.canvas.CanvasGraphics.hasFill = true;
break;
case 1:
var alpha = command[3];
var rgb = command[2];
openfl._internal.renderer.canvas.CanvasGraphics.closePath(false);
if(alpha == 1) openfl._internal.renderer.canvas.CanvasGraphics.context.fillStyle = "#" + StringTools.hex(rgb,6); else {
var r = (rgb & 16711680) >>> 16;
var g = (rgb & 65280) >>> 8;
var b = rgb & 255;
openfl._internal.renderer.canvas.CanvasGraphics.context.fillStyle = "rgba(" + r + ", " + g + ", " + b + ", " + alpha + ")";
}
bitmapFill = null;
openfl._internal.renderer.canvas.CanvasGraphics.setFill = true;
openfl._internal.renderer.canvas.CanvasGraphics.hasFill = true;
break;
case 2:
var y = command[7];
var x = command[6];
var cy2 = command[5];
var cx2 = command[4];
var cy1 = command[3];
var cx1 = command[2];
openfl._internal.renderer.canvas.CanvasGraphics.beginPatternFill(bitmapFill,bitmapRepeat);
openfl._internal.renderer.canvas.CanvasGraphics.beginPath();
openfl._internal.renderer.canvas.CanvasGraphics.context.bezierCurveTo(cx1 - offsetX,cy1 - offsetY,cx2 - offsetX,cy2 - offsetY,x - offsetX,y - offsetY);
openfl._internal.renderer.canvas.CanvasGraphics.positionX = x;
openfl._internal.renderer.canvas.CanvasGraphics.positionY = y;
break;
case 3:
var y1 = command[5];
var x1 = command[4];
var cy = command[3];
var cx = command[2];
openfl._internal.renderer.canvas.CanvasGraphics.beginPatternFill(bitmapFill,bitmapRepeat);
openfl._internal.renderer.canvas.CanvasGraphics.beginPath();
openfl._internal.renderer.canvas.CanvasGraphics.context.quadraticCurveTo(cx - offsetX,cy - offsetY,x1 - offsetX,y1 - offsetY);
openfl._internal.renderer.canvas.CanvasGraphics.positionX = x1;
openfl._internal.renderer.canvas.CanvasGraphics.positionY = y1;
break;
case 4:
var radius = command[4];
var y2 = command[3];
var x2 = command[2];
openfl._internal.renderer.canvas.CanvasGraphics.beginPatternFill(bitmapFill,bitmapRepeat);
openfl._internal.renderer.canvas.CanvasGraphics.beginPath();
openfl._internal.renderer.canvas.CanvasGraphics.context.moveTo(x2 - offsetX + radius,y2 - offsetY);
openfl._internal.renderer.canvas.CanvasGraphics.context.arc(x2 - offsetX,y2 - offsetY,radius,0,Math.PI * 2,true);
break;
case 5:
var height = command[5];
var width = command[4];
var y3 = command[3];
var x3 = command[2];
x3 -= offsetX;
y3 -= offsetY;
var kappa = .5522848;
var ox = width / 2 * kappa;
var oy = height / 2 * kappa;
var xe = x3 + width;
var ye = y3 + height;
var xm = x3 + width / 2;
var ym = y3 + height / 2;
openfl._internal.renderer.canvas.CanvasGraphics.beginPatternFill(bitmapFill,bitmapRepeat);
openfl._internal.renderer.canvas.CanvasGraphics.beginPath();
openfl._internal.renderer.canvas.CanvasGraphics.context.moveTo(x3,ym);
openfl._internal.renderer.canvas.CanvasGraphics.context.bezierCurveTo(x3,ym - oy,xm - ox,y3,xm,y3);
openfl._internal.renderer.canvas.CanvasGraphics.context.bezierCurveTo(xm + ox,y3,xe,ym - oy,xe,ym);
openfl._internal.renderer.canvas.CanvasGraphics.context.bezierCurveTo(xe,ym + oy,xm + ox,ye,xm,ye);
openfl._internal.renderer.canvas.CanvasGraphics.context.bezierCurveTo(xm - ox,ye,x3,ym + oy,x3,ym);
break;
case 6:
var height1 = command[5];
var width1 = command[4];
var y4 = command[3];
var x4 = command[2];
var optimizationUsed = false;
if(bitmapFill != null) {
var st = 0;
var sr = 0;
var sb = 0;
var sl = 0;
var canOptimizeMatrix = true;
if(openfl._internal.renderer.canvas.CanvasGraphics.pendingMatrix != null) {
if(openfl._internal.renderer.canvas.CanvasGraphics.pendingMatrix.b != 0 || openfl._internal.renderer.canvas.CanvasGraphics.pendingMatrix.c != 0) canOptimizeMatrix = false; else {
var stl = openfl._internal.renderer.canvas.CanvasGraphics.inversePendingMatrix.transformPoint(new openfl.geom.Point(x4,y4));
var sbr = openfl._internal.renderer.canvas.CanvasGraphics.inversePendingMatrix.transformPoint(new openfl.geom.Point(x4 + width1,y4 + height1));
st = stl.y;
sl = stl.x;
sb = sbr.y;
sr = sbr.x;
}
} else {
st = y4;
sl = x4;
sb = y4 + height1;
sr = x4 + width1;
}
if(canOptimizeMatrix && st >= 0 && sl >= 0 && sr <= bitmapFill.width && sb <= bitmapFill.height) {
optimizationUsed = true;
openfl._internal.renderer.canvas.CanvasGraphics.context.drawImage(bitmapFill.__image.get_src(),sl,st,sr - sl,sb - st,x4 - offsetX,y4 - offsetY,width1,height1);
}
}
if(!optimizationUsed) {
openfl._internal.renderer.canvas.CanvasGraphics.beginPatternFill(bitmapFill,bitmapRepeat);
openfl._internal.renderer.canvas.CanvasGraphics.beginPath();
openfl._internal.renderer.canvas.CanvasGraphics.context.rect(x4 - offsetX,y4 - offsetY,width1,height1);
}
break;
case 7:
var ry = command[7];
var rx = command[6];
var height2 = command[5];
var width2 = command[4];
var y5 = command[3];
var x5 = command[2];
openfl._internal.renderer.canvas.CanvasGraphics.beginPatternFill(bitmapFill,bitmapRepeat);
openfl._internal.renderer.canvas.CanvasGraphics.beginPath();
openfl._internal.renderer.canvas.CanvasGraphics.drawRoundRect(x5 - offsetX,y5 - offsetY,width2,height2,rx,ry);
break;
case 8:
var count = command[6];
var flags = command[5];
var smooth1 = command[4];
var tileData = command[3];
var sheet = command[2];
openfl._internal.renderer.canvas.CanvasGraphics.closePath(false);
var useScale = (flags & 1) > 0;
var useRotation = (flags & 2) > 0;
var useTransform = (flags & 16) > 0;
var useRGB = (flags & 4) > 0;
var useAlpha = (flags & 8) > 0;
var useRect = (flags & 32) > 0;
var useOrigin = (flags & 64) > 0;
var useBlendAdd = (flags & 65536) > 0;
if(useTransform) {
useScale = false;
useRotation = false;
}
var scaleIndex = 0;
var rotationIndex = 0;
var rgbIndex = 0;
var alphaIndex = 0;
var transformIndex = 0;
var numValues = 3;
if(useRect) if(useOrigin) numValues = 8; else numValues = 6;
if(useScale) {
scaleIndex = numValues;
numValues++;
}
if(useRotation) {
rotationIndex = numValues;
numValues++;
}
if(useTransform) {
transformIndex = numValues;
numValues += 4;
}
if(useRGB) {
rgbIndex = numValues;
numValues += 3;
}
if(useAlpha) {
alphaIndex = numValues;
numValues++;
}
var totalCount = tileData.length;
if(count >= 0 && totalCount > count) totalCount = count;
var itemCount = totalCount / numValues | 0;
var index = 0;
var rect = null;
var center = null;
var previousTileID = -1;
var surface;
sheet.__bitmap.__sync();
surface = sheet.__bitmap.__image.get_src();
if(useBlendAdd) openfl._internal.renderer.canvas.CanvasGraphics.context.globalCompositeOperation = "lighter";
while(index < totalCount) {
var tileID;
if(!useRect) tileID = tileData[index + 2] | 0; else tileID = -1;
if(!useRect && tileID != previousTileID) {
rect = sheet.__tileRects[tileID];
center = sheet.__centerPoints[tileID];
previousTileID = tileID;
} else if(useRect) {
rect = sheet.__rectTile;
rect.setTo(tileData[index + 2],tileData[index + 3],tileData[index + 4],tileData[index + 5]);
center = sheet.__point;
if(useOrigin) {
center.x = tileData[index + 6];
center.y = tileData[index + 7];
} else {
center.x = 0;
center.y = 0;
}
}
if(rect != null && rect.width > 0 && rect.height > 0 && center != null) {
openfl._internal.renderer.canvas.CanvasGraphics.context.save();
openfl._internal.renderer.canvas.CanvasGraphics.context.translate(tileData[index],tileData[index + 1]);
if(useRotation) openfl._internal.renderer.canvas.CanvasGraphics.context.rotate(tileData[index + rotationIndex]);
var scale = 1.0;
if(useScale) scale = tileData[index + scaleIndex];
if(useTransform) openfl._internal.renderer.canvas.CanvasGraphics.context.transform(tileData[index + transformIndex],tileData[index + transformIndex + 1],tileData[index + transformIndex + 2],tileData[index + transformIndex + 3],0,0);
if(useAlpha) openfl._internal.renderer.canvas.CanvasGraphics.context.globalAlpha = tileData[index + alphaIndex];
openfl._internal.renderer.canvas.CanvasGraphics.context.drawImage(surface,rect.x,rect.y,rect.width,rect.height,-center.x * scale,-center.y * scale,rect.width * scale,rect.height * scale);
openfl._internal.renderer.canvas.CanvasGraphics.context.restore();
}
index += numValues;
}
if(useBlendAdd) openfl._internal.renderer.canvas.CanvasGraphics.context.globalCompositeOperation = "source-over";
break;
case 10:
openfl._internal.renderer.canvas.CanvasGraphics.closePath(true);
break;
case 11:
var miterLimit = command[9];
var joints = command[8];
var caps = command[7];
var scaleMode = command[6];
var pixelHinting = command[5];
var alpha1 = command[4];
var color = command[3];
var thickness = command[2];
openfl._internal.renderer.canvas.CanvasGraphics.closePath(false);
if(thickness == null) openfl._internal.renderer.canvas.CanvasGraphics.hasStroke = false; else {
openfl._internal.renderer.canvas.CanvasGraphics.context.lineWidth = thickness;
if(joints == null) openfl._internal.renderer.canvas.CanvasGraphics.context.lineJoin = "round"; else openfl._internal.renderer.canvas.CanvasGraphics.context.lineJoin = Std.string(joints).toLowerCase();
if(caps == null) openfl._internal.renderer.canvas.CanvasGraphics.context.lineCap = "round"; else switch(caps[1]) {
case 0:
openfl._internal.renderer.canvas.CanvasGraphics.context.lineCap = "butt";
break;
default:
openfl._internal.renderer.canvas.CanvasGraphics.context.lineCap = Std.string(caps).toLowerCase();
}
if(miterLimit == null) openfl._internal.renderer.canvas.CanvasGraphics.context.miterLimit = 3; else openfl._internal.renderer.canvas.CanvasGraphics.context.miterLimit = miterLimit;
if(alpha1 == 1 || alpha1 == null) if(color == null) openfl._internal.renderer.canvas.CanvasGraphics.context.strokeStyle = "#000000"; else openfl._internal.renderer.canvas.CanvasGraphics.context.strokeStyle = "#" + StringTools.hex(color & 16777215,6); else {
var r1 = (color & 16711680) >>> 16;
var g1 = (color & 65280) >>> 8;
var b1 = color & 255;
if(color == null) openfl._internal.renderer.canvas.CanvasGraphics.context.strokeStyle = "#000000"; else openfl._internal.renderer.canvas.CanvasGraphics.context.strokeStyle = "rgba(" + r1 + ", " + g1 + ", " + b1 + ", " + alpha1 + ")";
}
openfl._internal.renderer.canvas.CanvasGraphics.hasStroke = true;
}
break;
case 12:
var y6 = command[3];
var x6 = command[2];
openfl._internal.renderer.canvas.CanvasGraphics.beginPatternFill(bitmapFill,bitmapRepeat);
openfl._internal.renderer.canvas.CanvasGraphics.beginPath();
openfl._internal.renderer.canvas.CanvasGraphics.context.lineTo(x6 - offsetX,y6 - offsetY);
openfl._internal.renderer.canvas.CanvasGraphics.positionX = x6;
openfl._internal.renderer.canvas.CanvasGraphics.positionY = y6;
break;
case 13:
var y7 = command[3];
var x7 = command[2];
openfl._internal.renderer.canvas.CanvasGraphics.beginPath();
openfl._internal.renderer.canvas.CanvasGraphics.context.moveTo(x7 - offsetX,y7 - offsetY);
openfl._internal.renderer.canvas.CanvasGraphics.positionX = x7;
openfl._internal.renderer.canvas.CanvasGraphics.positionY = y7;
break;
case 9:
var culling = command[5];
var uvtData = command[4];
var indices = command[3];
var vertices = command[2];
openfl._internal.renderer.canvas.CanvasGraphics.closePath(false);
var v = vertices;
var ind = indices;
var uvt = uvtData;
var pattern = null;
var colorFill = bitmapFill == null;
if(colorFill && uvt != null) throw "__break__";
if(!colorFill) {
if(uvtData == null) {
var this1;
this1 = new openfl.VectorData();
var this2;
this2 = new Array(0);
this1.data = this2;
this1.length = 0;
this1.fixed = false;
uvtData = this1;
var _g3 = 0;
var _g2 = v.length / 2 | 0;
while(_g3 < _g2) {
var i = _g3++;
if(!uvtData.fixed) {
uvtData.length++;
if(uvtData.data.length < uvtData.length) {
var data;
var this3;
this3 = new Array(uvtData.data.length + 10);
data = this3;
haxe.ds._Vector.Vector_Impl_.blit(uvtData.data,0,data,0,uvtData.data.length);
uvtData.data = data;
}
uvtData.data[uvtData.length - 1] = v.data[i * 2] / bitmapFill.width;
}
uvtData.length;
if(!uvtData.fixed) {
uvtData.length++;
if(uvtData.data.length < uvtData.length) {
var data1;
var this4;
this4 = new Array(uvtData.data.length + 10);
data1 = this4;
haxe.ds._Vector.Vector_Impl_.blit(uvtData.data,0,data1,0,uvtData.data.length);
uvtData.data = data1;
}
uvtData.data[uvtData.length - 1] = v.data[i * 2 + 1] / bitmapFill.height;
}
uvtData.length;
}
}
var skipT = uvtData.length != v.length;
var normalizedUvt = openfl._internal.renderer.canvas.CanvasGraphics.normalizeUvt(uvtData,skipT);
var maxUvt = normalizedUvt.max;
uvt = normalizedUvt.uvt;
if(maxUvt > 1) pattern = openfl._internal.renderer.canvas.CanvasGraphics.createTempPatternCanvas(bitmapFill,bitmapRepeat,openfl._internal.renderer.canvas.CanvasGraphics.bounds.width,openfl._internal.renderer.canvas.CanvasGraphics.bounds.height); else pattern = openfl._internal.renderer.canvas.CanvasGraphics.createTempPatternCanvas(bitmapFill,bitmapRepeat,bitmapFill.width,bitmapFill.height);
}
var i1 = 0;
var l = ind.length;
var a;
var b2;
var c;
var iax;
var iay;
var ibx;
var iby;
var icx;
var icy;
var x11;
var y11;
var x21;
var y21;
var x31;
var y31;
var uvx1;
var uvy1;
var uvx2;
var uvy2;
var uvx3;
var uvy3;
var denom;
var t1;
var t2;
var t3;
var t4;
var dx;
var dy;
while(i1 < l) {
a = i1;
b2 = i1 + 1;
c = i1 + 2;
iax = ind.data[a] * 2;
iay = ind.data[a] * 2 + 1;
ibx = ind.data[b2] * 2;
iby = ind.data[b2] * 2 + 1;
icx = ind.data[c] * 2;
icy = ind.data[c] * 2 + 1;
x11 = v.data[iax];
y11 = v.data[iay];
x21 = v.data[ibx];
y21 = v.data[iby];
x31 = v.data[icx];
y31 = v.data[icy];
switch(culling[1]) {
case 2:
if(!((x21 - x11) * (y31 - y11) - (y21 - y11) * (x31 - x11) < 0)) {
i1 += 3;
continue;
}
break;
case 0:
if((x21 - x11) * (y31 - y11) - (y21 - y11) * (x31 - x11) < 0) {
i1 += 3;
continue;
}
break;
default:
}
if(colorFill) {
openfl._internal.renderer.canvas.CanvasGraphics.context.beginPath();
openfl._internal.renderer.canvas.CanvasGraphics.context.moveTo(x11,y11);
openfl._internal.renderer.canvas.CanvasGraphics.context.lineTo(x21,y21);
openfl._internal.renderer.canvas.CanvasGraphics.context.lineTo(x31,y31);
openfl._internal.renderer.canvas.CanvasGraphics.context.closePath();
openfl._internal.renderer.canvas.CanvasGraphics.context.fill();
i1 += 3;
continue;
}
openfl._internal.renderer.canvas.CanvasGraphics.context.save();
openfl._internal.renderer.canvas.CanvasGraphics.context.beginPath();
openfl._internal.renderer.canvas.CanvasGraphics.context.moveTo(x11,y11);
openfl._internal.renderer.canvas.CanvasGraphics.context.lineTo(x21,y21);
openfl._internal.renderer.canvas.CanvasGraphics.context.lineTo(x31,y31);
openfl._internal.renderer.canvas.CanvasGraphics.context.closePath();
openfl._internal.renderer.canvas.CanvasGraphics.context.clip();
uvx1 = uvt.data[iax] * pattern.width;
uvx2 = uvt.data[ibx] * pattern.width;
uvx3 = uvt.data[icx] * pattern.width;
uvy1 = uvt.data[iay] * pattern.height;
uvy2 = uvt.data[iby] * pattern.height;
uvy3 = uvt.data[icy] * pattern.height;
denom = uvx1 * (uvy3 - uvy2) - uvx2 * uvy3 + uvx3 * uvy2 + (uvx2 - uvx3) * uvy1;
if(denom == 0) {
i1 += 3;
continue;
}
t1 = -(uvy1 * (x31 - x21) - uvy2 * x31 + uvy3 * x21 + (uvy2 - uvy3) * x11) / denom;
t2 = (uvy2 * y31 + uvy1 * (y21 - y31) - uvy3 * y21 + (uvy3 - uvy2) * y11) / denom;
t3 = (uvx1 * (x31 - x21) - uvx2 * x31 + uvx3 * x21 + (uvx2 - uvx3) * x11) / denom;
t4 = -(uvx2 * y31 + uvx1 * (y21 - y31) - uvx3 * y21 + (uvx3 - uvx2) * y11) / denom;
dx = (uvx1 * (uvy3 * x21 - uvy2 * x31) + uvy1 * (uvx2 * x31 - uvx3 * x21) + (uvx3 * uvy2 - uvx2 * uvy3) * x11) / denom;
dy = (uvx1 * (uvy3 * y21 - uvy2 * y31) + uvy1 * (uvx2 * y31 - uvx3 * y21) + (uvx3 * uvy2 - uvx2 * uvy3) * y11) / denom;
openfl._internal.renderer.canvas.CanvasGraphics.context.transform(t1,t2,t3,t4,dx,dy);
openfl._internal.renderer.canvas.CanvasGraphics.context.drawImage(pattern,0,0);
openfl._internal.renderer.canvas.CanvasGraphics.context.restore();
i1 += 3;
}
break;
}
}
} catch( e ) { if( e != "__break__" ) throw e; }
}
graphics.__dirty = false;
openfl._internal.renderer.canvas.CanvasGraphics.closePath(false);
}
};
openfl._internal.renderer.canvas.CanvasGraphics.renderMask = function(graphics,renderSession) {
if(graphics.__commands.length != 0) {
var context = renderSession.context;
var positionX = 0.0;
var positionY = 0.0;
var offsetX = 0;
var offsetY = 0;
var _g = 0;
var _g1 = graphics.__commands;
while(_g < _g1.length) {
var command = _g1[_g];
++_g;
switch(command[1]) {
case 2:
var y = command[7];
var x = command[6];
var cy2 = command[5];
var cy1 = command[4];
var cx2 = command[3];
var cx1 = command[2];
context.bezierCurveTo(cx1 - offsetX,cy1 - offsetY,cx2 - offsetX,cy2 - offsetY,x - offsetX,y - offsetY);
positionX = x;
positionY = y;
break;
case 3:
var y1 = command[5];
var x1 = command[4];
var cy = command[3];
var cx = command[2];
context.quadraticCurveTo(cx - offsetX,cy - offsetY,x1 - offsetX,y1 - offsetY);
positionX = x1;
positionY = y1;
break;
case 4:
var radius = command[4];
var y2 = command[3];
var x2 = command[2];
context.arc(x2 - offsetX,y2 - offsetY,radius,0,Math.PI * 2,true);
break;
case 5:
var height = command[5];
var width = command[4];
var y3 = command[3];
var x3 = command[2];
x3 -= offsetX;
y3 -= offsetY;
var kappa = .5522848;
var ox = width / 2 * kappa;
var oy = height / 2 * kappa;
var xe = x3 + width;
var ye = y3 + height;
var xm = x3 + width / 2;
var ym = y3 + height / 2;
context.moveTo(x3,ym);
context.bezierCurveTo(x3,ym - oy,xm - ox,y3,xm,y3);
context.bezierCurveTo(xm + ox,y3,xe,ym - oy,xe,ym);
context.bezierCurveTo(xe,ym + oy,xm + ox,ye,xm,ye);
context.bezierCurveTo(xm - ox,ye,x3,ym + oy,x3,ym);
break;
case 6:
var height1 = command[5];
var width1 = command[4];
var y4 = command[3];
var x4 = command[2];
context.rect(x4 - offsetX,y4 - offsetY,width1,height1);
break;
case 7:
var ry = command[7];
var rx = command[6];
var height2 = command[5];
var width2 = command[4];
var y5 = command[3];
var x5 = command[2];
openfl._internal.renderer.canvas.CanvasGraphics.drawRoundRect(x5 - offsetX,y5 - offsetY,width2,height2,rx,ry);
break;
case 12:
var y6 = command[3];
var x6 = command[2];
context.lineTo(x6 - offsetX,y6 - offsetY);
positionX = x6;
positionY = y6;
break;
case 13:
var y7 = command[3];
var x7 = command[2];
context.moveTo(x7 - offsetX,y7 - offsetY);
positionX = x7;
positionY = y7;
break;
default:
}
}
}
};
openfl._internal.renderer.canvas.CanvasGraphics.createTempPatternCanvas = function(bitmap,repeat,width,height) {
var canvas = window.document.createElement("canvas");
var context = canvas.getContext("2d");
canvas.width = Math.ceil(width);
canvas.height = Math.ceil(height);
context.fillStyle = context.createPattern(bitmap.__image.get_src(),repeat?"repeat":"no-repeat");
context.beginPath();
context.moveTo(0,0);
context.lineTo(0,height);
context.lineTo(width,height);
context.lineTo(width,0);
context.lineTo(0,0);
context.closePath();
context.fill();
return canvas;
};
openfl._internal.renderer.canvas.CanvasGraphics.isCCW = function(x1,y1,x2,y2,x3,y3) {
return (x2 - x1) * (y3 - y1) - (y2 - y1) * (x3 - x1) < 0;
};
openfl._internal.renderer.canvas.CanvasGraphics.normalizeUvt = function(uvt,skipT) {
if(skipT == null) skipT = false;
var max = Math.NEGATIVE_INFINITY;
var tmp = Math.NEGATIVE_INFINITY;
var len = uvt.length;
var _g1 = 1;
var _g = len + 1;
while(_g1 < _g) {
var t = _g1++;
if(skipT && t % 3 == 0) continue;
tmp = uvt.data[t - 1];
if(max < tmp) max = tmp;
}
var result;
var this1;
this1 = new openfl.VectorData();
var this2;
this2 = new Array(0);
this1.data = this2;
this1.length = 0;
this1.fixed = false;
result = this1;
var _g11 = 1;
var _g2 = len + 1;
while(_g11 < _g2) {
var t1 = _g11++;
if(skipT && t1 % 3 == 0) continue;
if(!result.fixed) {
result.length++;
if(result.data.length < result.length) {
var data;
var this3;
this3 = new Array(result.data.length + 10);
data = this3;
haxe.ds._Vector.Vector_Impl_.blit(result.data,0,data,0,result.data.length);
result.data = data;
}
result.data[result.length - 1] = uvt.data[t1 - 1] / max;
}
result.length;
}
return { max : max, uvt : result};
};
openfl._internal.renderer.canvas.CanvasRenderer = function(width,height,context) {
openfl._internal.renderer.AbstractRenderer.call(this,width,height);
this.context = context;
this.renderSession = new openfl._internal.renderer.RenderSession();
this.renderSession.context = context;
this.renderSession.roundPixels = true;
this.renderSession.renderer = this;
this.renderSession.maskManager = new openfl._internal.renderer.canvas.MaskManager(this.renderSession);
};
$hxClasses["openfl._internal.renderer.canvas.CanvasRenderer"] = openfl._internal.renderer.canvas.CanvasRenderer;
openfl._internal.renderer.canvas.CanvasRenderer.__name__ = ["openfl","_internal","renderer","canvas","CanvasRenderer"];
openfl._internal.renderer.canvas.CanvasRenderer.__super__ = openfl._internal.renderer.AbstractRenderer;
openfl._internal.renderer.canvas.CanvasRenderer.prototype = $extend(openfl._internal.renderer.AbstractRenderer.prototype,{
render: function(stage) {
this.context.setTransform(1,0,0,1,0,0);
this.context.globalAlpha = 1;
if(!stage.__transparent && stage.__clearBeforeRender) {
this.context.fillStyle = stage.__colorString;
this.context.fillRect(0,0,stage.stageWidth,stage.stageHeight);
} else if(stage.__transparent && stage.__clearBeforeRender) this.context.clearRect(0,0,stage.stageWidth,stage.stageHeight);
stage.__renderCanvas(this.renderSession);
}
,__class__: openfl._internal.renderer.canvas.CanvasRenderer
});
openfl._internal.renderer.canvas.CanvasShape = function() { };
$hxClasses["openfl._internal.renderer.canvas.CanvasShape"] = openfl._internal.renderer.canvas.CanvasShape;
openfl._internal.renderer.canvas.CanvasShape.__name__ = ["openfl","_internal","renderer","canvas","CanvasShape"];
openfl._internal.renderer.canvas.CanvasShape.render = function(shape,renderSession) {
if(!shape.__renderable || shape.__worldAlpha <= 0) return;
var graphics = shape.__graphics;
if(graphics != null) {
openfl._internal.renderer.canvas.CanvasGraphics.render(graphics,renderSession);
if(graphics.__canvas != null) {
if(shape.__mask != null) renderSession.maskManager.pushMask(shape.__mask);
var context = renderSession.context;
var scrollRect = shape.get_scrollRect();
context.globalAlpha = shape.__worldAlpha;
var transform = shape.__worldTransform;
if(renderSession.roundPixels) context.setTransform(transform.a,transform.b,transform.c,transform.d,transform.tx | 0,transform.ty | 0); else context.setTransform(transform.a,transform.b,transform.c,transform.d,transform.tx,transform.ty);
if(scrollRect == null) context.drawImage(graphics.__canvas,graphics.__bounds.x,graphics.__bounds.y); else context.drawImage(graphics.__canvas,scrollRect.x - graphics.__bounds.x,scrollRect.y - graphics.__bounds.y,scrollRect.width,scrollRect.height,graphics.__bounds.x + scrollRect.x,graphics.__bounds.y + scrollRect.y,scrollRect.width,scrollRect.height);
if(shape.__mask != null) renderSession.maskManager.popMask();
}
}
};
openfl._internal.renderer.canvas.CanvasTextField = function() { };
$hxClasses["openfl._internal.renderer.canvas.CanvasTextField"] = openfl._internal.renderer.canvas.CanvasTextField;
openfl._internal.renderer.canvas.CanvasTextField.__name__ = ["openfl","_internal","renderer","canvas","CanvasTextField"];
openfl._internal.renderer.canvas.CanvasTextField.context = null;
openfl._internal.renderer.canvas.CanvasTextField.render = function(textField,renderSession) {
if(!textField.__renderable || textField.__worldAlpha <= 0) return;
openfl._internal.renderer.canvas.CanvasTextField.update(textField);
if(textField.__canvas != null) {
var context = renderSession.context;
context.globalAlpha = textField.__worldAlpha;
var transform = textField.__worldTransform;
var scrollRect = textField.get_scrollRect();
if(renderSession.roundPixels) context.setTransform(transform.a,transform.b,transform.c,transform.d,transform.tx | 0,transform.ty | 0); else context.setTransform(transform.a,transform.b,transform.c,transform.d,transform.tx,transform.ty);
if(scrollRect == null) context.drawImage(textField.__canvas,0,0); else context.drawImage(textField.__canvas,scrollRect.x,scrollRect.y,scrollRect.width,scrollRect.height,scrollRect.x,scrollRect.y,scrollRect.width,scrollRect.height);
}
};
openfl._internal.renderer.canvas.CanvasTextField.renderText = function(textField,text,format,offsetX) {
openfl._internal.renderer.canvas.CanvasTextField.context.font = textField.__getFont(format);
openfl._internal.renderer.canvas.CanvasTextField.context.textBaseline = "top";
openfl._internal.renderer.canvas.CanvasTextField.context.fillStyle = "#" + StringTools.hex(format.color,6);
var lines = text.split("\n");
var yOffset = 0;
var _g = 0;
while(_g < lines.length) {
var line = lines[_g];
++_g;
var _g1 = format.align;
switch(_g1[1]) {
case 3:
openfl._internal.renderer.canvas.CanvasTextField.context.textAlign = "center";
openfl._internal.renderer.canvas.CanvasTextField.context.fillText(line,textField.__width / 2,2 + yOffset,textField.__width - 4);
break;
case 1:
openfl._internal.renderer.canvas.CanvasTextField.context.textAlign = "end";
openfl._internal.renderer.canvas.CanvasTextField.context.fillText(line,textField.__width - 2,2 + yOffset,textField.__width - 4);
break;
default:
openfl._internal.renderer.canvas.CanvasTextField.context.textAlign = "start";
openfl._internal.renderer.canvas.CanvasTextField.context.fillText(line,2 + offsetX,2 + yOffset,textField.__width - 4);
}
yOffset += textField.get_textHeight();
}
};
openfl._internal.renderer.canvas.CanvasTextField.update = function(textField) {
if(textField.__dirty) {
if((textField.__text == null || textField.__text == "") && !textField.background && !textField.border || (textField.get_width() <= 0 || textField.get_height() <= 0) && textField.autoSize != openfl.text.TextFieldAutoSize.LEFT) {
textField.__canvas = null;
textField.__context = null;
textField.__dirty = false;
} else {
if(textField.__canvas == null) {
textField.__canvas = window.document.createElement("canvas");
textField.__context = textField.__canvas.getContext("2d");
}
openfl._internal.renderer.canvas.CanvasTextField.context = textField.__context;
if(textField.__text != null && textField.__text != "") {
var text = textField.get_text();
if(textField.displayAsPassword) {
var length = text.length;
var mask = "";
var _g = 0;
while(_g < length) {
var i = _g++;
mask += "*";
}
text = mask;
}
var measurements = textField.__measureText();
var textWidth = 0.0;
var _g1 = 0;
while(_g1 < measurements.length) {
var measurement = measurements[_g1];
++_g1;
textWidth += measurement;
}
if(textField.autoSize == openfl.text.TextFieldAutoSize.LEFT) textField.__width = textWidth + 4;
textField.__canvas.width = Math.ceil(textField.__width);
textField.__canvas.height = Math.ceil(textField.__height);
if(textField.border || textField.background) {
textField.__context.rect(0.5,0.5,textField.__width - 1,textField.__height - 1);
if(textField.background) {
openfl._internal.renderer.canvas.CanvasTextField.context.fillStyle = "#" + StringTools.hex(textField.backgroundColor,6);
openfl._internal.renderer.canvas.CanvasTextField.context.fill();
}
if(textField.border) {
openfl._internal.renderer.canvas.CanvasTextField.context.lineWidth = 1;
openfl._internal.renderer.canvas.CanvasTextField.context.strokeStyle = "#" + StringTools.hex(textField.borderColor,6);
openfl._internal.renderer.canvas.CanvasTextField.context.stroke();
}
}
if(textField.__hasFocus && textField.__selectionStart == textField.__cursorPosition && textField.__showCursor) {
var cursorOffset = textField.__getTextWidth(text.substring(0,textField.__cursorPosition));
openfl._internal.renderer.canvas.CanvasTextField.context.fillStyle = "#" + StringTools.hex(textField.__textFormat.color,6);
openfl._internal.renderer.canvas.CanvasTextField.context.fillRect(cursorOffset,5,1,textField.__textFormat.size - 5);
} else if(textField.__hasFocus && Math.abs(textField.__selectionStart - textField.__cursorPosition) > 0 && !textField.__isKeyDown) {
var lowPos = Std["int"](Math.min(textField.__selectionStart,textField.__cursorPosition));
var highPos = Std["int"](Math.max(textField.__selectionStart,textField.__cursorPosition));
var xPos = textField.__getTextWidth(text.substring(0,lowPos));
var widthPos = textField.__getTextWidth(text.substring(lowPos,highPos));
openfl._internal.renderer.canvas.CanvasTextField.context.fillStyle = "#" + StringTools.hex(textField.__textFormat.color,6);
openfl._internal.renderer.canvas.CanvasTextField.context.fillRect(xPos,5,widthPos,textField.__textFormat.size - 5);
}
if(textField.__ranges == null) openfl._internal.renderer.canvas.CanvasTextField.renderText(textField,text,textField.__textFormat,0); else {
var currentIndex = 0;
var range;
var offsetX = 0.0;
var _g11 = 0;
var _g2 = textField.__ranges.length;
while(_g11 < _g2) {
var i1 = _g11++;
range = textField.__ranges[i1];
openfl._internal.renderer.canvas.CanvasTextField.renderText(textField,text.substring(range.start,range.end),range.format,offsetX);
offsetX += measurements[i1];
}
}
} else {
if(textField.autoSize == openfl.text.TextFieldAutoSize.LEFT) textField.__width = 4;
textField.__canvas.width = Math.ceil(textField.__width);
textField.__canvas.height = Math.ceil(textField.__height);
if(textField.border || textField.background) {
if(textField.border) openfl._internal.renderer.canvas.CanvasTextField.context.rect(0.5,0.5,textField.__width - 1,textField.__height - 1); else textField.__context.rect(0,0,textField.__width,textField.__height);
if(textField.background) {
openfl._internal.renderer.canvas.CanvasTextField.context.fillStyle = "#" + StringTools.hex(textField.backgroundColor,6);
openfl._internal.renderer.canvas.CanvasTextField.context.fill();
}
if(textField.border) {
openfl._internal.renderer.canvas.CanvasTextField.context.lineWidth = 1;
openfl._internal.renderer.canvas.CanvasTextField.context.lineCap = "square";
openfl._internal.renderer.canvas.CanvasTextField.context.strokeStyle = "#" + StringTools.hex(textField.borderColor,6);
openfl._internal.renderer.canvas.CanvasTextField.context.stroke();
}
}
}
textField.__dirty = false;
return true;
}
}
return false;
};
openfl._internal.renderer.canvas.MaskManager = function(renderSession) {
this.renderSession = renderSession;
};
$hxClasses["openfl._internal.renderer.canvas.MaskManager"] = openfl._internal.renderer.canvas.MaskManager;
openfl._internal.renderer.canvas.MaskManager.__name__ = ["openfl","_internal","renderer","canvas","MaskManager"];
openfl._internal.renderer.canvas.MaskManager.prototype = {
pushMask: function(mask) {
var context = this.renderSession.context;
context.save();
var transform = mask.__getTransform();
context.setTransform(transform.a,transform.c,transform.b,transform.d,transform.tx,transform.ty);
context.beginPath();
mask.__renderMask(this.renderSession);
context.clip();
}
,pushRect: function(rect,transform) {
var context = this.renderSession.context;
context.save();
context.setTransform(transform.a,transform.c,transform.b,transform.d,transform.tx,transform.ty);
context.beginPath();
context.rect(rect.x,rect.y,rect.width,rect.height);
context.clip();
}
,popMask: function() {
this.renderSession.context.restore();
}
,__class__: openfl._internal.renderer.canvas.MaskManager
};
openfl._internal.renderer.dom = {};
openfl._internal.renderer.dom.DOMBitmap = function() { };
$hxClasses["openfl._internal.renderer.dom.DOMBitmap"] = openfl._internal.renderer.dom.DOMBitmap;
openfl._internal.renderer.dom.DOMBitmap.__name__ = ["openfl","_internal","renderer","dom","DOMBitmap"];
openfl._internal.renderer.dom.DOMBitmap.render = function(bitmap,renderSession) {
if(bitmap.stage != null && bitmap.__worldVisible && bitmap.__renderable && bitmap.bitmapData != null && bitmap.bitmapData.__isValid) {
if(bitmap.bitmapData.__image.buffer.__srcImage != null) openfl._internal.renderer.dom.DOMBitmap.renderImage(bitmap,renderSession); else openfl._internal.renderer.dom.DOMBitmap.renderCanvas(bitmap,renderSession);
} else {
if(bitmap.__image != null) {
renderSession.element.removeChild(bitmap.__image);
bitmap.__image = null;
bitmap.__style = null;
}
if(bitmap.__canvas != null) {
renderSession.element.removeChild(bitmap.__canvas);
bitmap.__canvas = null;
bitmap.__style = null;
}
}
};
openfl._internal.renderer.dom.DOMBitmap.renderCanvas = function(bitmap,renderSession) {
if(bitmap.__image != null) {
renderSession.element.removeChild(bitmap.__image);
bitmap.__image = null;
}
if(bitmap.__canvas == null) {
bitmap.__canvas = window.document.createElement("canvas");
bitmap.__context = bitmap.__canvas.getContext("2d");
if(!bitmap.smoothing) {
bitmap.__context.mozImageSmoothingEnabled = false;
bitmap.__context.webkitImageSmoothingEnabled = false;
bitmap.__context.imageSmoothingEnabled = false;
}
openfl._internal.renderer.dom.DOMRenderer.initializeElement(bitmap,bitmap.__canvas,renderSession);
}
bitmap.bitmapData.__sync();
bitmap.__canvas.width = bitmap.bitmapData.width;
bitmap.__canvas.height = bitmap.bitmapData.height;
bitmap.__context.globalAlpha = bitmap.__worldAlpha;
bitmap.__context.drawImage(bitmap.bitmapData.__image.buffer.__srcCanvas,0,0);
openfl._internal.renderer.dom.DOMRenderer.applyStyle(bitmap,renderSession,true,false,true);
};
openfl._internal.renderer.dom.DOMBitmap.renderImage = function(bitmap,renderSession) {
if(bitmap.__canvas != null) {
renderSession.element.removeChild(bitmap.__canvas);
bitmap.__canvas = null;
}
if(bitmap.__image == null) {
bitmap.__image = window.document.createElement("img");
bitmap.__image.src = bitmap.bitmapData.__image.buffer.__srcImage.src;
openfl._internal.renderer.dom.DOMRenderer.initializeElement(bitmap,bitmap.__image,renderSession);
}
openfl._internal.renderer.dom.DOMRenderer.applyStyle(bitmap,renderSession,true,true,true);
};
openfl._internal.renderer.dom.DOMRenderer = function(width,height,element) {
openfl._internal.renderer.AbstractRenderer.call(this,width,height);
this.element = element;
this.renderSession = new openfl._internal.renderer.RenderSession();
this.renderSession.element = element;
this.renderSession.roundPixels = true;
var prefix = (function () {
var styles = window.getComputedStyle(document.documentElement, ''),
pre = (Array.prototype.slice
.call(styles)
.join('')
.match(/-(moz|webkit|ms)-/) || (styles.OLink === '' && ['', 'o'])
)[1],
dom = ('WebKit|Moz|MS|O').match(new RegExp('(' + pre + ')', 'i'))[1];
return {
dom: dom,
lowercase: pre,
css: '-' + pre + '-',
js: pre[0].toUpperCase() + pre.substr(1)
};
})();
this.renderSession.vendorPrefix = prefix.lowercase;
if(prefix.lowercase == "webkit") this.renderSession.transformProperty = "-webkit-transform"; else this.renderSession.transformProperty = "transform";
if(prefix.lowercase == "webkit") this.renderSession.transformOriginProperty = "-webkit-transform-origin"; else this.renderSession.transformOriginProperty = "transform-origin";
this.renderSession.renderer = this;
};
$hxClasses["openfl._internal.renderer.dom.DOMRenderer"] = openfl._internal.renderer.dom.DOMRenderer;
openfl._internal.renderer.dom.DOMRenderer.__name__ = ["openfl","_internal","renderer","dom","DOMRenderer"];
openfl._internal.renderer.dom.DOMRenderer.applyStyle = function(displayObject,renderSession,setTransform,setAlpha,setClip) {
var style = displayObject.__style;
if(setTransform && displayObject.__worldTransformChanged) style.setProperty(renderSession.transformProperty,displayObject.__worldTransform.to3DString(renderSession.roundPixels),null);
if(displayObject.__worldZ != ++renderSession.z) {
displayObject.__worldZ = renderSession.z;
style.setProperty("z-index",displayObject.__worldZ == null?"null":"" + displayObject.__worldZ,null);
}
if(setAlpha && displayObject.__worldAlphaChanged) {
if(displayObject.__worldAlpha < 1) style.setProperty("opacity",displayObject.__worldAlpha == null?"null":"" + displayObject.__worldAlpha,null); else style.removeProperty("opacity");
}
if(setClip && displayObject.__worldClipChanged) {
if(displayObject.__worldClip == null) style.removeProperty("clip"); else {
var clip = displayObject.__worldClip.transform(displayObject.__worldTransform.clone().invert());
style.setProperty("clip","rect(" + clip.y + "px, " + clip.get_right() + "px, " + clip.get_bottom() + "px, " + clip.x + "px)",null);
}
}
};
openfl._internal.renderer.dom.DOMRenderer.initializeElement = function(displayObject,element,renderSession) {
var style = displayObject.__style = element.style;
style.setProperty("position","absolute",null);
style.setProperty("top","0",null);
style.setProperty("left","0",null);
style.setProperty(renderSession.transformOriginProperty,"0 0 0",null);
renderSession.element.appendChild(element);
displayObject.__worldAlphaChanged = true;
displayObject.__worldClipChanged = true;
displayObject.__worldTransformChanged = true;
displayObject.__worldVisibleChanged = true;
displayObject.__worldZ = -1;
};
openfl._internal.renderer.dom.DOMRenderer.__super__ = openfl._internal.renderer.AbstractRenderer;
openfl._internal.renderer.dom.DOMRenderer.prototype = $extend(openfl._internal.renderer.AbstractRenderer.prototype,{
render: function(stage) {
this.element.style.background = stage.__colorString;
this.renderSession.z = 1;
stage.__renderDOM(this.renderSession);
}
,__class__: openfl._internal.renderer.dom.DOMRenderer
});
openfl._internal.renderer.dom.DOMShape = function() { };
$hxClasses["openfl._internal.renderer.dom.DOMShape"] = openfl._internal.renderer.dom.DOMShape;
openfl._internal.renderer.dom.DOMShape.__name__ = ["openfl","_internal","renderer","dom","DOMShape"];
openfl._internal.renderer.dom.DOMShape.render = function(shape,renderSession) {
var graphics = shape.__graphics;
if(shape.stage != null && shape.__worldVisible && shape.__renderable && graphics != null) {
if(graphics.__dirty || shape.__worldAlphaChanged || shape.__canvas == null && graphics.__canvas != null) {
openfl._internal.renderer.canvas.CanvasGraphics.render(graphics,renderSession);
if(graphics.__canvas != null) {
if(shape.__canvas == null) {
shape.__canvas = window.document.createElement("canvas");
shape.__context = shape.__canvas.getContext("2d");
openfl._internal.renderer.dom.DOMRenderer.initializeElement(shape,shape.__canvas,renderSession);
}
shape.__canvas.width = graphics.__canvas.width;
shape.__canvas.height = graphics.__canvas.height;
shape.__context.globalAlpha = shape.__worldAlpha;
shape.__context.drawImage(graphics.__canvas,0,0);
} else if(shape.__canvas != null) {
renderSession.element.removeChild(shape.__canvas);
shape.__canvas = null;
shape.__style = null;
}
}
if(shape.__canvas != null) {
if(shape.__worldTransformChanged || graphics.__transformDirty) {
graphics.__transformDirty = false;
var transform = new openfl.geom.Matrix();
transform.translate(graphics.__bounds.x,graphics.__bounds.y);
transform = transform.mult(shape.__worldTransform);
shape.__style.setProperty(renderSession.transformProperty,renderSession.roundPixels?"matrix3d(" + transform.a + ", " + transform.b + ", " + "0, 0, " + transform.c + ", " + transform.d + ", " + "0, 0, 0, 0, 1, 0, " + (transform.tx | 0) + ", " + (transform.ty | 0) + ", 0, 1)":"matrix3d(" + transform.a + ", " + transform.b + ", " + "0, 0, " + transform.c + ", " + transform.d + ", " + "0, 0, 0, 0, 1, 0, " + transform.tx + ", " + transform.ty + ", 0, 1)",null);
}
openfl._internal.renderer.dom.DOMRenderer.applyStyle(shape,renderSession,false,false,true);
}
} else if(shape.__canvas != null) {
renderSession.element.removeChild(shape.__canvas);
shape.__canvas = null;
shape.__style = null;
}
};
openfl._internal.renderer.dom.DOMTextField = function() { };
$hxClasses["openfl._internal.renderer.dom.DOMTextField"] = openfl._internal.renderer.dom.DOMTextField;
openfl._internal.renderer.dom.DOMTextField.__name__ = ["openfl","_internal","renderer","dom","DOMTextField"];
openfl._internal.renderer.dom.DOMTextField.render = function(textField,renderSession) {
if(textField.stage != null && textField.__worldVisible && textField.__renderable) {
if(textField.__dirty || textField.__div == null) {
if(textField.__text != "" || textField.background || textField.border) {
if(textField.__div == null) {
textField.__div = window.document.createElement("div");
openfl._internal.renderer.dom.DOMRenderer.initializeElement(textField,textField.__div,renderSession);
textField.__style.setProperty("cursor","inherit",null);
}
var style = textField.__style;
textField.__div.innerHTML = textField.__text;
if(textField.background) style.setProperty("background-color","#" + StringTools.hex(textField.backgroundColor,6),null); else style.removeProperty("background-color");
if(textField.border) style.setProperty("border","solid 1px #" + StringTools.hex(textField.borderColor,6),null); else style.removeProperty("border");
style.setProperty("font",textField.__getFont(textField.__textFormat),null);
style.setProperty("color","#" + StringTools.hex(textField.__textFormat.color,6),null);
if(textField.autoSize != openfl.text.TextFieldAutoSize.NONE) style.setProperty("width","auto",null); else style.setProperty("width",textField.__width + "px",null);
style.setProperty("height",textField.__height + "px",null);
var _g = textField.__textFormat.align;
switch(_g[1]) {
case 3:
style.setProperty("text-align","center",null);
break;
case 1:
style.setProperty("text-align","right",null);
break;
default:
style.setProperty("text-align","left",null);
}
textField.__dirty = false;
} else if(textField.__div != null) {
renderSession.element.removeChild(textField.__div);
textField.__div = null;
}
}
if(textField.__div != null) openfl._internal.renderer.dom.DOMRenderer.applyStyle(textField,renderSession,true,true,false);
} else if(textField.__div != null) {
renderSession.element.removeChild(textField.__div);
textField.__div = null;
textField.__style = null;
}
};
openfl._internal.renderer.opengl = {};
openfl._internal.renderer.opengl.GLBitmap = function() { };
$hxClasses["openfl._internal.renderer.opengl.GLBitmap"] = openfl._internal.renderer.opengl.GLBitmap;
openfl._internal.renderer.opengl.GLBitmap.__name__ = ["openfl","_internal","renderer","opengl","GLBitmap"];
openfl._internal.renderer.opengl.GLBitmap.render = function(bitmap,renderSession) {
if(!bitmap.__renderable || bitmap.__worldAlpha <= 0) return;
var i;
var j;
renderSession.spriteBatch.render(bitmap);
};
openfl._internal.renderer.opengl.GLRenderer = function(width,height,gl,transparent,antialias,preserveDrawingBuffer) {
if(preserveDrawingBuffer == null) preserveDrawingBuffer = false;
if(antialias == null) antialias = false;
if(transparent == null) transparent = false;
if(height == null) height = 600;
if(width == null) width = 800;
openfl._internal.renderer.AbstractRenderer.call(this,width,height);
this.transparent = transparent;
this.preserveDrawingBuffer = preserveDrawingBuffer;
this.width = width;
this.height = height;
this.options = { alpha : transparent, antialias : antialias, premultipliedAlpha : transparent, stencil : true, preserveDrawingBuffer : preserveDrawingBuffer};
this._glContextId = openfl._internal.renderer.opengl.GLRenderer.glContextId++;
this.gl = gl;
openfl._internal.renderer.opengl.GLRenderer.glContexts[this._glContextId] = gl;
if(openfl._internal.renderer.opengl.GLRenderer.blendModesWebGL == null) {
openfl._internal.renderer.opengl.GLRenderer.blendModesWebGL = new haxe.ds.EnumValueMap();
openfl._internal.renderer.opengl.GLRenderer.blendModesWebGL.set(openfl.display.BlendMode.NORMAL,[gl.ONE,gl.ONE_MINUS_SRC_ALPHA]);
openfl._internal.renderer.opengl.GLRenderer.blendModesWebGL.set(openfl.display.BlendMode.ADD,[gl.SRC_ALPHA,gl.DST_ALPHA]);
openfl._internal.renderer.opengl.GLRenderer.blendModesWebGL.set(openfl.display.BlendMode.MULTIPLY,[gl.DST_COLOR,gl.ONE_MINUS_SRC_ALPHA]);
openfl._internal.renderer.opengl.GLRenderer.blendModesWebGL.set(openfl.display.BlendMode.SCREEN,[gl.SRC_ALPHA,gl.ONE]);
openfl._internal.renderer.opengl.GLRenderer.blendModesWebGL.set(openfl.display.BlendMode.ALPHA,[gl.ONE,gl.ONE_MINUS_SRC_ALPHA]);
openfl._internal.renderer.opengl.GLRenderer.blendModesWebGL.set(openfl.display.BlendMode.DARKEN,[gl.ONE,gl.ONE_MINUS_SRC_ALPHA]);
openfl._internal.renderer.opengl.GLRenderer.blendModesWebGL.set(openfl.display.BlendMode.DIFFERENCE,[gl.ONE,gl.ONE_MINUS_SRC_ALPHA]);
openfl._internal.renderer.opengl.GLRenderer.blendModesWebGL.set(openfl.display.BlendMode.ERASE,[gl.ONE,gl.ONE_MINUS_SRC_ALPHA]);
openfl._internal.renderer.opengl.GLRenderer.blendModesWebGL.set(openfl.display.BlendMode.HARDLIGHT,[gl.ONE,gl.ONE_MINUS_SRC_ALPHA]);
openfl._internal.renderer.opengl.GLRenderer.blendModesWebGL.set(openfl.display.BlendMode.INVERT,[gl.ONE,gl.ONE_MINUS_SRC_ALPHA]);
openfl._internal.renderer.opengl.GLRenderer.blendModesWebGL.set(openfl.display.BlendMode.LAYER,[gl.ONE,gl.ONE_MINUS_SRC_ALPHA]);
openfl._internal.renderer.opengl.GLRenderer.blendModesWebGL.set(openfl.display.BlendMode.LIGHTEN,[gl.ONE,gl.ONE_MINUS_SRC_ALPHA]);
openfl._internal.renderer.opengl.GLRenderer.blendModesWebGL.set(openfl.display.BlendMode.OVERLAY,[gl.ONE,gl.ONE_MINUS_SRC_ALPHA]);
openfl._internal.renderer.opengl.GLRenderer.blendModesWebGL.set(openfl.display.BlendMode.SUBTRACT,[gl.ONE,gl.ONE_MINUS_SRC_ALPHA]);
}
this.projection = new openfl.geom.Point();
this.projection.x = this.width / 2;
this.projection.y = -this.height / 2;
this.offset = new openfl.geom.Point(0,0);
this.resize(this.width,this.height);
this.contextLost = false;
this.shaderManager = new openfl._internal.renderer.opengl.utils.ShaderManager(gl);
this.spriteBatch = new openfl._internal.renderer.opengl.utils.SpriteBatch(gl);
this.maskManager = new openfl._internal.renderer.opengl.utils.MaskManager(gl);
this.filterManager = new openfl._internal.renderer.opengl.utils.FilterManager(gl,this.transparent);
this.stencilManager = new openfl._internal.renderer.opengl.utils.StencilManager(gl);
this.blendModeManager = new openfl._internal.renderer.opengl.utils.BlendModeManager(gl);
this.renderSession = new openfl._internal.renderer.RenderSession();
this.renderSession.gl = this.gl;
this.renderSession.drawCount = 0;
this.renderSession.shaderManager = this.shaderManager;
this.renderSession.maskManager = this.maskManager;
this.renderSession.filterManager = this.filterManager;
this.renderSession.blendModeManager = this.blendModeManager;
this.renderSession.spriteBatch = this.spriteBatch;
this.renderSession.stencilManager = this.stencilManager;
this.renderSession.renderer = this;
gl.useProgram(this.shaderManager.defaultShader.program);
gl.disable(gl.DEPTH_TEST);
gl.disable(gl.CULL_FACE);
gl.enable(gl.BLEND);
gl.colorMask(true,true,true,this.transparent);
};
$hxClasses["openfl._internal.renderer.opengl.GLRenderer"] = openfl._internal.renderer.opengl.GLRenderer;
openfl._internal.renderer.opengl.GLRenderer.__name__ = ["openfl","_internal","renderer","opengl","GLRenderer"];
openfl._internal.renderer.opengl.GLRenderer.__super__ = openfl._internal.renderer.AbstractRenderer;
openfl._internal.renderer.opengl.GLRenderer.prototype = $extend(openfl._internal.renderer.AbstractRenderer.prototype,{
destroy: function() {
openfl._internal.renderer.opengl.GLRenderer.glContexts[this._glContextId] = null;
this.projection = null;
this.offset = null;
this.shaderManager.destroy();
this.spriteBatch.destroy();
this.maskManager.destroy();
this.filterManager.destroy();
this.shaderManager = null;
this.spriteBatch = null;
this.maskManager = null;
this.filterManager = null;
this.gl = null;
this.renderSession = null;
}
,handleContextLost: function(event) {
event.preventDefault();
this.contextLost = true;
}
,handleContextRestored: function() {
var gl = this.gl;
openfl._internal.renderer.opengl.GLRenderer.glContextId++;
this.shaderManager.setContext(gl);
this.spriteBatch.setContext(gl);
this.maskManager.setContext(gl);
this.filterManager.setContext(gl);
this.renderSession.gl = gl;
gl.disable(gl.DEPTH_TEST);
gl.disable(gl.CULL_FACE);
gl.enable(gl.BLEND);
gl.colorMask(true,true,true,this.transparent);
gl.viewport(0,0,this.width,this.height);
this.contextLost = false;
}
,render: function(stage) {
if(this.contextLost) return;
var gl = this.gl;
gl.viewport(0,0,this.width,this.height);
gl.bindFramebuffer(gl.FRAMEBUFFER,null);
if(this.transparent) gl.clearColor(0,0,0,0); else gl.clearColor(stage.__colorSplit[0] | 0,stage.__colorSplit[1] | 0,stage.__colorSplit[2] | 0,1);
gl.clear(gl.COLOR_BUFFER_BIT);
this.renderDisplayObject(stage,this.projection);
}
,renderDisplayObject: function(displayObject,projection,buffer) {
this.renderSession.blendModeManager.setBlendMode(openfl.display.BlendMode.NORMAL);
this.renderSession.drawCount = 0;
this.renderSession.currentBlendMode = null;
this.renderSession.projection = projection;
this.renderSession.offset = this.offset;
this.spriteBatch.begin(this.renderSession);
this.filterManager.begin(this.renderSession,buffer);
displayObject.__renderGL(this.renderSession);
this.spriteBatch.end();
}
,resize: function(width,height) {
openfl._internal.renderer.AbstractRenderer.prototype.resize.call(this,width,height);
this.gl.viewport(0,0,width,height);
this.projection.x = width / 2;
this.projection.y = -height / 2;
}
,__class__: openfl._internal.renderer.opengl.GLRenderer
});
openfl._internal.renderer.opengl.GLTextField = function() { };
$hxClasses["openfl._internal.renderer.opengl.GLTextField"] = openfl._internal.renderer.opengl.GLTextField;
openfl._internal.renderer.opengl.GLTextField.__name__ = ["openfl","_internal","renderer","opengl","GLTextField"];
openfl._internal.renderer.opengl.GLTextField.render = function(textField,renderSession) {
if(!textField.__renderable || textField.__worldAlpha <= 0) return;
var gl = renderSession.gl;
var changed = openfl._internal.renderer.canvas.CanvasTextField.update(textField);
if(textField.__texture == null) {
textField.__texture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D,textField.__texture);
gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR);
gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR);
changed = true;
}
if(changed) {
gl.bindTexture(gl.TEXTURE_2D,textField.__texture);
gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,textField.__canvas);
gl.bindTexture(gl.TEXTURE_2D,null);
}
};
openfl._internal.renderer.opengl.shaders = {};
openfl._internal.renderer.opengl.shaders.AbstractShader = function(gl) {
this._UID = openfl._internal.renderer.opengl.shaders.AbstractShader.__UID++;
this.gl = gl;
this.program = null;
this.attributes = [];
};
$hxClasses["openfl._internal.renderer.opengl.shaders.AbstractShader"] = openfl._internal.renderer.opengl.shaders.AbstractShader;
openfl._internal.renderer.opengl.shaders.AbstractShader.__name__ = ["openfl","_internal","renderer","opengl","shaders","AbstractShader"];
openfl._internal.renderer.opengl.shaders.AbstractShader.compileProgram = function(gl,vertexSrc,fragmentSrc) {
var fragmentShader = openfl._internal.renderer.opengl.shaders.AbstractShader.CompileFragmentShader(gl,fragmentSrc);
var vertexShader = openfl._internal.renderer.opengl.shaders.AbstractShader.CompileVertexShader(gl,vertexSrc);
var shaderProgram = gl.createProgram();
if(fragmentShader != null && vertexShader != null) {
gl.attachShader(shaderProgram,vertexShader);
gl.attachShader(shaderProgram,fragmentShader);
gl.linkProgram(shaderProgram);
if(gl.getProgramParameter(shaderProgram,gl.LINK_STATUS) == 0) null;
}
return shaderProgram;
};
openfl._internal.renderer.opengl.shaders.AbstractShader.CompileVertexShader = function(gl,shaderSrc) {
return openfl._internal.renderer.opengl.shaders.AbstractShader._CompileShader(gl,shaderSrc,gl.VERTEX_SHADER);
};
openfl._internal.renderer.opengl.shaders.AbstractShader.CompileFragmentShader = function(gl,shaderSrc) {
return openfl._internal.renderer.opengl.shaders.AbstractShader._CompileShader(gl,shaderSrc,gl.FRAGMENT_SHADER);
};
openfl._internal.renderer.opengl.shaders.AbstractShader._CompileShader = function(gl,shaderSrc,shaderType) {
var src = shaderSrc.join("\n");
var shader = gl.createShader(shaderType);
gl.shaderSource(shader,src);
gl.compileShader(shader);
if(gl.getShaderParameter(shader,gl.COMPILE_STATUS) == 0) return null;
return shader;
};
openfl._internal.renderer.opengl.shaders.AbstractShader.prototype = {
destroy: function() {
if(this.program != null) this.gl.deleteProgram(this.program);
this.uniforms = null;
this.gl = null;
this.attributes = null;
}
,init: function() {
var gl = this.gl;
var program = openfl._internal.renderer.opengl.shaders.AbstractShader.compileProgram(gl,this.vertexSrc,this.fragmentSrc);
gl.useProgram(program);
this.program = program;
}
,__class__: openfl._internal.renderer.opengl.shaders.AbstractShader
};
openfl._internal.renderer.opengl.shaders.ComplexPrimitiveShader = function(gl) {
openfl._internal.renderer.opengl.shaders.AbstractShader.call(this,gl);
this.fragmentSrc = ["precision mediump float;","varying vec4 vColor;","void main(void) {"," gl_FragColor = vColor;","}"];
this.vertexSrc = ["attribute vec2 aVertexPosition;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform vec3 tint;","uniform float alpha;","uniform vec3 color;","varying vec4 vColor;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vColor = vec4(color * alpha * tint, alpha);","}"];
this.init();
};
$hxClasses["openfl._internal.renderer.opengl.shaders.ComplexPrimitiveShader"] = openfl._internal.renderer.opengl.shaders.ComplexPrimitiveShader;
openfl._internal.renderer.opengl.shaders.ComplexPrimitiveShader.__name__ = ["openfl","_internal","renderer","opengl","shaders","ComplexPrimitiveShader"];
openfl._internal.renderer.opengl.shaders.ComplexPrimitiveShader.__super__ = openfl._internal.renderer.opengl.shaders.AbstractShader;
openfl._internal.renderer.opengl.shaders.ComplexPrimitiveShader.prototype = $extend(openfl._internal.renderer.opengl.shaders.AbstractShader.prototype,{
init: function() {
openfl._internal.renderer.opengl.shaders.AbstractShader.prototype.init.call(this);
var gl = this.gl;
this.projectionVector = gl.getUniformLocation(this.program,"projectionVector");
this.offsetVector = gl.getUniformLocation(this.program,"offsetVector");
this.tintColor = gl.getUniformLocation(this.program,"tint");
this.color = gl.getUniformLocation(this.program,"color");
this.aVertexPosition = gl.getAttribLocation(this.program,"aVertexPosition");
this.attributes = [this.aVertexPosition];
this.translationMatrix = gl.getUniformLocation(this.program,"translationMatrix");
this.alpha = gl.getUniformLocation(this.program,"alpha");
}
,__class__: openfl._internal.renderer.opengl.shaders.ComplexPrimitiveShader
});
openfl._internal.renderer.opengl.shaders.DefaultShader = function(gl) {
openfl._internal.renderer.opengl.shaders.AbstractShader.call(this,gl);
this.fragmentSrc = ["precision lowp float;","varying vec2 vTextureCoord;","varying vec4 vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"];
this.textureCount = 0;
this.attributes = [];
this.init();
};
$hxClasses["openfl._internal.renderer.opengl.shaders.DefaultShader"] = openfl._internal.renderer.opengl.shaders.DefaultShader;
openfl._internal.renderer.opengl.shaders.DefaultShader.__name__ = ["openfl","_internal","renderer","opengl","shaders","DefaultShader"];
openfl._internal.renderer.opengl.shaders.DefaultShader.__super__ = openfl._internal.renderer.opengl.shaders.AbstractShader;
openfl._internal.renderer.opengl.shaders.DefaultShader.prototype = $extend(openfl._internal.renderer.opengl.shaders.AbstractShader.prototype,{
init: function() {
if(this.vertexSrc == null) this.vertexSrc = openfl._internal.renderer.opengl.shaders.DefaultShader.defaultVertexSrc;
openfl._internal.renderer.opengl.shaders.AbstractShader.prototype.init.call(this);
var gl = this.gl;
this.uSampler = gl.getUniformLocation(this.program,"uSampler");
this.projectionVector = gl.getUniformLocation(this.program,"projectionVector");
this.offsetVector = gl.getUniformLocation(this.program,"offsetVector");
this.dimensions = gl.getUniformLocation(this.program,"dimensions");
this.aVertexPosition = gl.getAttribLocation(this.program,"aVertexPosition");
this.aTextureCoord = gl.getAttribLocation(this.program,"aTextureCoord");
this.colorAttribute = gl.getAttribLocation(this.program,"aColor");
if(this.colorAttribute == -1) this.colorAttribute = 2;
this.attributes = [this.aVertexPosition,this.aTextureCoord,this.colorAttribute];
if(this.uniforms != null) {
var $it0 = this.uniforms.keys();
while( $it0.hasNext() ) {
var key = $it0.next();
this.uniforms.get(key).uniformLocation = gl.getUniformLocation(this.program,key);
}
}
this.initUniforms();
}
,initSampler2D: function(uniform) {
if(uniform.value == null || uniform.value.baseTexture == null || uniform.value.baseTexture.hasLoaded == null) return;
var gl = this.gl;
gl.activeTexture(Reflect.field(gl,"TEXTURE" + this.textureCount));
gl.bindTexture(gl.TEXTURE_2D,uniform.value.baseTexture._glTextures[openfl._internal.renderer.opengl.GLRenderer.glContextId]);
if(uniform.textureData != null) {
var data = uniform.textureData;
var magFilter;
if(data.magFilter != 0) magFilter = data.magFilter; else magFilter = gl.LINEAR;
var minFilter;
if(data.minFilter != 0) minFilter = data.minFilter; else minFilter = gl.LINEAR;
var wrapS;
if(data.wrapS != 0) wrapS = data.wrapS; else wrapS = gl.CLAMP_TO_EDGE;
var wrapT;
if(data.wrapT != 0) wrapT = data.wrapT; else wrapT = gl.CLAMP_TO_EDGE;
var format;
if(data.luminance != 0) format = gl.LUMINANCE; else format = gl.RGBA;
if(data.repeat) {
wrapS = gl.REPEAT;
wrapT = gl.REPEAT;
}
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL,data.flip);
if(data.width != 0) {
var width;
if(data.width != 0) width = data.width; else width = 512;
var height;
if(data.height != 0) height = data.height; else height = 2;
var border;
if(data.border != 0) border = data.border; else border = 0;
gl.texImage2D(gl.TEXTURE_2D,0,format,width,height,border,format,gl.UNSIGNED_BYTE,null);
} else gl.texImage2D(gl.TEXTURE_2D,0,format,gl.RGBA,gl.UNSIGNED_BYTE,uniform.value.baseTexture.source);
gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,magFilter);
gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,minFilter);
gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,wrapS);
gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,wrapT);
}
gl.uniform1i(uniform.uniformLocation,this.textureCount);
uniform._init = true;
this.textureCount++;
}
,initUniforms: function() {
this.textureCount = 1;
var gl = this.gl;
var uniform;
if(this.uniforms == null) return;
var $it0 = this.uniforms.keys();
while( $it0.hasNext() ) {
var key = $it0.next();
uniform = this.uniforms.get(key);
var type = uniform.type;
if(type == "sampler2D") {
uniform._init = false;
if(uniform.value != null) this.initSampler2D(uniform);
} else if(type == "mat2" || type == "mat3" || type == "mat4") {
uniform.glMatrix = true;
uniform.glValueLength = 1;
if(type == "mat2") uniform.glFunc = $bind(gl,gl.uniformMatrix2fv); else if(type == "mat3") uniform.glFunc = $bind(gl,gl.uniformMatrix3fv); else if(type == "mat4") uniform.glFunc = $bind(gl,gl.uniformMatrix4fv);
} else {
uniform.glFunc = Reflect.field(gl,"uniform" + type);
if(type == "2f" || type == "2i") uniform.glValueLength = 2; else if(type == "3f" || type == "3i") uniform.glValueLength = 3; else if(type == "4f" || type == "4i") uniform.glValueLength = 4; else uniform.glValueLength = 1;
}
}
}
,syncUniforms: function() {
this.textureCount = 1;
var uniform;
var gl = this.gl;
if(this.uniforms == null) return;
var $it0 = this.uniforms.keys();
while( $it0.hasNext() ) {
var key = $it0.next();
uniform = this.uniforms.get(key);
if(uniform.glValueLength == 1) {
if(uniform.glMatrix == true) uniform.glFunc.call(gl,uniform.uniformLocation,uniform.transpose,uniform.value); else uniform.glFunc.call(gl,uniform.uniformLocation,uniform.value);
} else if(uniform.glValueLength == 2) uniform.glFunc.call(gl,uniform.uniformLocation,uniform.value.x,uniform.value.y); else if(uniform.glValueLength == 3) uniform.glFunc.call(gl,uniform.uniformLocation,uniform.value.x,uniform.value.y,uniform.value.z); else if(uniform.glValueLength == 4) uniform.glFunc.call(gl,uniform.uniformLocation,uniform.value.x,uniform.value.y,uniform.value.z,uniform.value.w); else if(uniform.type == "sampler2D") {
if(uniform._init) {
gl.activeTexture(Reflect.field(gl,"TEXTURE" + this.textureCount));
var tex = uniform.value.getTexture();
gl.bindTexture(gl.TEXTURE_2D,tex);
gl.uniform1i(uniform.uniformLocation,this.textureCount);
this.textureCount++;
} else this.initSampler2D(uniform);
}
}
}
,__class__: openfl._internal.renderer.opengl.shaders.DefaultShader
});
openfl._internal.renderer.opengl.shaders.DrawTrianglesShader = function(gl) {
openfl._internal.renderer.opengl.shaders.AbstractShader.call(this,gl);
this.vertexSrc = ["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute vec4 aColor;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","varying vec2 vPos;","varying vec4 vColor;","void main(void) {"," vec3 v = vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vPos = aTextureCoord;"," vColor = aColor;","}"];
this.fragmentSrc = ["precision mediump float;","uniform sampler2D sampler;","uniform vec3 color;","uniform bool useTexture;","uniform float alpha;","varying vec2 vPos;","varying vec4 vColor;","vec4 tmp;","void main(void) {"," if(useTexture) {"," tmp = texture2D(sampler, vPos);"," } else {"," tmp = vec4(color, 1.);"," }"," float a = tmp.a * vColor.a * alpha;"," gl_FragColor = vec4(vec3((tmp.rgb * vColor.rgb) * a), a);","}"];
this.init();
};
$hxClasses["openfl._internal.renderer.opengl.shaders.DrawTrianglesShader"] = openfl._internal.renderer.opengl.shaders.DrawTrianglesShader;
openfl._internal.renderer.opengl.shaders.DrawTrianglesShader.__name__ = ["openfl","_internal","renderer","opengl","shaders","DrawTrianglesShader"];
openfl._internal.renderer.opengl.shaders.DrawTrianglesShader.__super__ = openfl._internal.renderer.opengl.shaders.AbstractShader;
openfl._internal.renderer.opengl.shaders.DrawTrianglesShader.prototype = $extend(openfl._internal.renderer.opengl.shaders.AbstractShader.prototype,{
init: function() {
openfl._internal.renderer.opengl.shaders.AbstractShader.prototype.init.call(this);
this.translationMatrix = this.gl.getUniformLocation(this.program,"translationMatrix");
this.projectionVector = this.gl.getUniformLocation(this.program,"projectionVector");
this.offsetVector = this.gl.getUniformLocation(this.program,"offsetVector");
this.sampler = this.gl.getUniformLocation(this.program,"sampler");
this.alpha = this.gl.getUniformLocation(this.program,"alpha");
this.color = this.gl.getUniformLocation(this.program,"color");
this.useTexture = this.gl.getUniformLocation(this.program,"useTexture");
this.aVertexPosition = this.gl.getAttribLocation(this.program,"aVertexPosition");
this.aTextureCoord = this.gl.getAttribLocation(this.program,"aTextureCoord");
this.colorAttribute = this.gl.getAttribLocation(this.program,"aColor");
this.attributes = [this.aVertexPosition,this.aTextureCoord,this.colorAttribute];
}
,__class__: openfl._internal.renderer.opengl.shaders.DrawTrianglesShader
});
openfl._internal.renderer.opengl.shaders.FastShader = function(gl) {
openfl._internal.renderer.opengl.shaders.AbstractShader.call(this,gl);
this.fragmentSrc = ["precision lowp float;","varying vec2 vTextureCoord;","varying float vColor;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;","}"];
this.vertexSrc = ["attribute vec2 aVertexPosition;","attribute vec2 aPositionCoord;","attribute vec2 aScale;","attribute float aRotation;","attribute vec2 aTextureCoord;","attribute float aColor;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform mat3 uMatrix;","varying vec2 vTextureCoord;","varying float vColor;","const vec2 center = vec2(-1.0, 1.0);","void main(void) {"," vec2 v;"," vec2 sv = aVertexPosition * aScale;"," v.x = (sv.x) * cos(aRotation) - (sv.y) * sin(aRotation);"," v.y = (sv.x) * sin(aRotation) + (sv.y) * cos(aRotation);"," v = ( uMatrix * vec3(v + aPositionCoord , 1.0) ).xy ;"," gl_Position = vec4( ( v / projectionVector) + center , 0.0, 1.0);"," vTextureCoord = aTextureCoord;"," vColor = aColor;","}"];
this.textureCount = 0;
this.init();
};
$hxClasses["openfl._internal.renderer.opengl.shaders.FastShader"] = openfl._internal.renderer.opengl.shaders.FastShader;
openfl._internal.renderer.opengl.shaders.FastShader.__name__ = ["openfl","_internal","renderer","opengl","shaders","FastShader"];
openfl._internal.renderer.opengl.shaders.FastShader.__super__ = openfl._internal.renderer.opengl.shaders.AbstractShader;
openfl._internal.renderer.opengl.shaders.FastShader.prototype = $extend(openfl._internal.renderer.opengl.shaders.AbstractShader.prototype,{
init: function() {
openfl._internal.renderer.opengl.shaders.AbstractShader.prototype.init.call(this);
var gl = this.gl;
this.uSampler = gl.getUniformLocation(this.program,"uSampler");
this.projectionVector = gl.getUniformLocation(this.program,"projectionVector");
this.offsetVector = gl.getUniformLocation(this.program,"offsetVector");
this.dimensions = gl.getUniformLocation(this.program,"dimensions");
this.uMatrix = gl.getUniformLocation(this.program,"uMatrix");
this.aVertexPosition = gl.getAttribLocation(this.program,"aVertexPosition");
this.aPositionCoord = gl.getAttribLocation(this.program,"aPositionCoord");
this.aScale = gl.getAttribLocation(this.program,"aScale");
this.aRotation = gl.getAttribLocation(this.program,"aRotation");
this.aTextureCoord = gl.getAttribLocation(this.program,"aTextureCoord");
this.colorAttribute = gl.getAttribLocation(this.program,"aColor");
if(this.colorAttribute == -1) this.colorAttribute = 2;
this.attributes = [this.aVertexPosition,this.aPositionCoord,this.aScale,this.aRotation,this.aTextureCoord,this.colorAttribute];
}
,__class__: openfl._internal.renderer.opengl.shaders.FastShader
});
openfl._internal.renderer.opengl.shaders.FillShader = function(gl) {
openfl._internal.renderer.opengl.shaders.AbstractShader.call(this,gl);
this.vertexSrc = ["attribute vec2 aVertexPosition;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);","}"];
this.fragmentSrc = ["precision mediump float;","uniform vec3 color;","uniform float alpha;","void main(void) {"," gl_FragColor = vec4((color * alpha), alpha);","}"];
this.init();
};
$hxClasses["openfl._internal.renderer.opengl.shaders.FillShader"] = openfl._internal.renderer.opengl.shaders.FillShader;
openfl._internal.renderer.opengl.shaders.FillShader.__name__ = ["openfl","_internal","renderer","opengl","shaders","FillShader"];
openfl._internal.renderer.opengl.shaders.FillShader.__super__ = openfl._internal.renderer.opengl.shaders.AbstractShader;
openfl._internal.renderer.opengl.shaders.FillShader.prototype = $extend(openfl._internal.renderer.opengl.shaders.AbstractShader.prototype,{
init: function() {
openfl._internal.renderer.opengl.shaders.AbstractShader.prototype.init.call(this);
this.translationMatrix = this.gl.getUniformLocation(this.program,"translationMatrix");
this.projectionVector = this.gl.getUniformLocation(this.program,"projectionVector");
this.offsetVector = this.gl.getUniformLocation(this.program,"offsetVector");
this.color = this.gl.getUniformLocation(this.program,"color");
this.alpha = this.gl.getUniformLocation(this.program,"alpha");
this.aVertexPosition = this.gl.getAttribLocation(this.program,"aVertexPosition");
this.attributes = [this.aVertexPosition];
}
,__class__: openfl._internal.renderer.opengl.shaders.FillShader
});
openfl._internal.renderer.opengl.shaders.PatternFillShader = function(gl) {
openfl._internal.renderer.opengl.shaders.AbstractShader.call(this,gl);
this.vertexSrc = ["attribute vec2 aVertexPosition;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform mat3 patternMatrix;","varying vec2 vPos;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vPos = (patternMatrix * vec3(aVertexPosition, 1)).xy;","}"];
this.fragmentSrc = ["precision mediump float;","uniform float alpha;","uniform vec2 patternTL;","uniform vec2 patternBR;","uniform sampler2D sampler;","varying vec2 vPos;","void main(void) {"," vec2 pos = mix(patternTL, patternBR, vPos);"," vec4 tcol = texture2D(sampler, pos);"," gl_FragColor = vec4(tcol.rgb * alpha, tcol.a * alpha);","}"];
this.init();
};
$hxClasses["openfl._internal.renderer.opengl.shaders.PatternFillShader"] = openfl._internal.renderer.opengl.shaders.PatternFillShader;
openfl._internal.renderer.opengl.shaders.PatternFillShader.__name__ = ["openfl","_internal","renderer","opengl","shaders","PatternFillShader"];
openfl._internal.renderer.opengl.shaders.PatternFillShader.__super__ = openfl._internal.renderer.opengl.shaders.AbstractShader;
openfl._internal.renderer.opengl.shaders.PatternFillShader.prototype = $extend(openfl._internal.renderer.opengl.shaders.AbstractShader.prototype,{
init: function() {
openfl._internal.renderer.opengl.shaders.AbstractShader.prototype.init.call(this);
this.translationMatrix = this.gl.getUniformLocation(this.program,"translationMatrix");
this.projectionVector = this.gl.getUniformLocation(this.program,"projectionVector");
this.offsetVector = this.gl.getUniformLocation(this.program,"offsetVector");
this.patternMatrix = this.gl.getUniformLocation(this.program,"patternMatrix");
this.patternTL = this.gl.getUniformLocation(this.program,"patternTL");
this.patternBR = this.gl.getUniformLocation(this.program,"patternBR");
this.sampler = this.gl.getUniformLocation(this.program,"sampler");
this.alpha = this.gl.getUniformLocation(this.program,"alpha");
this.aVertexPosition = this.gl.getAttribLocation(this.program,"aVertexPosition");
this.attributes = [this.aVertexPosition];
}
,__class__: openfl._internal.renderer.opengl.shaders.PatternFillShader
});
openfl._internal.renderer.opengl.shaders.PrimitiveShader = function(gl) {
openfl._internal.renderer.opengl.shaders.AbstractShader.call(this,gl);
this.fragmentSrc = ["precision mediump float;","varying vec4 vColor;","void main(void) {"," gl_FragColor = vColor;","}"];
this.vertexSrc = ["attribute vec2 aVertexPosition;","attribute vec4 aColor;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","uniform float alpha;","uniform vec3 tint;","varying vec4 vColor;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vColor = aColor;","}"];
this.init();
};
$hxClasses["openfl._internal.renderer.opengl.shaders.PrimitiveShader"] = openfl._internal.renderer.opengl.shaders.PrimitiveShader;
openfl._internal.renderer.opengl.shaders.PrimitiveShader.__name__ = ["openfl","_internal","renderer","opengl","shaders","PrimitiveShader"];
openfl._internal.renderer.opengl.shaders.PrimitiveShader.__super__ = openfl._internal.renderer.opengl.shaders.AbstractShader;
openfl._internal.renderer.opengl.shaders.PrimitiveShader.prototype = $extend(openfl._internal.renderer.opengl.shaders.AbstractShader.prototype,{
init: function() {
openfl._internal.renderer.opengl.shaders.AbstractShader.prototype.init.call(this);
var gl = this.gl;
this.projectionVector = gl.getUniformLocation(this.program,"projectionVector");
this.offsetVector = gl.getUniformLocation(this.program,"offsetVector");
this.tintColor = gl.getUniformLocation(this.program,"tint");
this.aVertexPosition = gl.getAttribLocation(this.program,"aVertexPosition");
this.colorAttribute = gl.getAttribLocation(this.program,"aColor");
this.attributes = [this.aVertexPosition,this.colorAttribute];
this.translationMatrix = gl.getUniformLocation(this.program,"translationMatrix");
this.alpha = gl.getUniformLocation(this.program,"alpha");
}
,__class__: openfl._internal.renderer.opengl.shaders.PrimitiveShader
});
openfl._internal.renderer.opengl.shaders.StripShader = function(gl) {
openfl._internal.renderer.opengl.shaders.AbstractShader.call(this,gl);
this.fragmentSrc = ["precision mediump float;","varying vec2 vTextureCoord;","uniform float alpha;","uniform sampler2D uSampler;","void main(void) {"," gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y));","}"];
this.vertexSrc = ["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","uniform mat3 translationMatrix;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","varying vec2 vTextureCoord;","void main(void) {"," vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);"," v -= offsetVector.xyx;"," gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);"," vTextureCoord = aTextureCoord;","}"];
this.init();
};
$hxClasses["openfl._internal.renderer.opengl.shaders.StripShader"] = openfl._internal.renderer.opengl.shaders.StripShader;
openfl._internal.renderer.opengl.shaders.StripShader.__name__ = ["openfl","_internal","renderer","opengl","shaders","StripShader"];
openfl._internal.renderer.opengl.shaders.StripShader.__super__ = openfl._internal.renderer.opengl.shaders.AbstractShader;
openfl._internal.renderer.opengl.shaders.StripShader.prototype = $extend(openfl._internal.renderer.opengl.shaders.AbstractShader.prototype,{
init: function() {
openfl._internal.renderer.opengl.shaders.AbstractShader.prototype.init.call(this);
var gl = this.gl;
this.uSampler = gl.getUniformLocation(this.program,"uSampler");
this.projectionVector = gl.getUniformLocation(this.program,"projectionVector");
this.offsetVector = gl.getUniformLocation(this.program,"offsetVector");
this.colorAttribute = gl.getAttribLocation(this.program,"aColor");
this.aVertexPosition = gl.getAttribLocation(this.program,"aVertexPosition");
this.aTextureCoord = gl.getAttribLocation(this.program,"aTextureCoord");
this.attributes = [this.aVertexPosition,this.aTextureCoord];
this.translationMatrix = gl.getUniformLocation(this.program,"translationMatrix");
this.alpha = gl.getUniformLocation(this.program,"alpha");
}
,__class__: openfl._internal.renderer.opengl.shaders.StripShader
});
openfl._internal.renderer.opengl.utils = {};
openfl._internal.renderer.opengl.utils.BlendModeManager = function(gl) {
this.gl = gl;
this.currentBlendMode = null;
};
$hxClasses["openfl._internal.renderer.opengl.utils.BlendModeManager"] = openfl._internal.renderer.opengl.utils.BlendModeManager;
openfl._internal.renderer.opengl.utils.BlendModeManager.__name__ = ["openfl","_internal","renderer","opengl","utils","BlendModeManager"];
openfl._internal.renderer.opengl.utils.BlendModeManager.prototype = {
destroy: function() {
this.gl = null;
}
,setBlendMode: function(blendMode) {
if(blendMode == null) blendMode = openfl.display.BlendMode.NORMAL;
if(this.currentBlendMode == blendMode) return false;
this.currentBlendMode = blendMode;
var blendModeWebGL = openfl._internal.renderer.opengl.GLRenderer.blendModesWebGL.get(this.currentBlendMode);
this.gl.blendFunc(blendModeWebGL[0],blendModeWebGL[1]);
return true;
}
,__class__: openfl._internal.renderer.opengl.utils.BlendModeManager
};
openfl._internal.renderer.opengl.utils.DrawPath = function() {
this.type = openfl._internal.renderer.opengl.utils.GraphicType.Polygon;
this.points = [];
this.isRemovable = true;
this.fillIndex = 0;
this.line = new openfl._internal.renderer.opengl.utils.LineStyle();
this.fill = openfl._internal.renderer.opengl.utils.FillType.None;
};
$hxClasses["openfl._internal.renderer.opengl.utils.DrawPath"] = openfl._internal.renderer.opengl.utils.DrawPath;
openfl._internal.renderer.opengl.utils.DrawPath.__name__ = ["openfl","_internal","renderer","opengl","utils","DrawPath"];
openfl._internal.renderer.opengl.utils.DrawPath.getStack = function(graphics,gl) {
return openfl._internal.renderer.opengl.utils.PathBuiler.build(graphics,gl);
};
openfl._internal.renderer.opengl.utils.DrawPath.prototype = {
update: function(line,fill,fillIndex) {
this.updateLine(line);
this.fill = fill;
this.fillIndex = fillIndex;
}
,updateLine: function(line) {
this.line.width = line.width;
this.line.color = line.color & 16777215;
if(line.alpha == null) this.line.alpha = 1; else this.line.alpha = line.alpha;
if(line.scaleMode == null) this.line.scaleMode = openfl.display.LineScaleMode.NORMAL; else this.line.scaleMode = line.scaleMode;
if(line.caps == null) this.line.caps = openfl.display.CapsStyle.ROUND; else this.line.caps = line.caps;
if(line.joints == null) this.line.joints = openfl.display.JointStyle.ROUND; else this.line.joints = line.joints;
this.line.miterLimit = line.miterLimit;
}
,__class__: openfl._internal.renderer.opengl.utils.DrawPath
};
openfl._internal.renderer.opengl.utils.PathBuiler = function() { };
$hxClasses["openfl._internal.renderer.opengl.utils.PathBuiler"] = openfl._internal.renderer.opengl.utils.PathBuiler;
openfl._internal.renderer.opengl.utils.PathBuiler.__name__ = ["openfl","_internal","renderer","opengl","utils","PathBuiler"];
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath = null;
openfl._internal.renderer.opengl.utils.PathBuiler.__drawPaths = null;
openfl._internal.renderer.opengl.utils.PathBuiler.__line = null;
openfl._internal.renderer.opengl.utils.PathBuiler.__fill = null;
openfl._internal.renderer.opengl.utils.PathBuiler.closePath = function() {
var l = openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points.length;
if(l <= 0) return;
if(openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.type == openfl._internal.renderer.opengl.utils.GraphicType.Polygon && openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.fill != openfl._internal.renderer.opengl.utils.FillType.None) {
var sx = openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points[0];
var sy = openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points[1];
var ex = openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points[l - 2];
var ey = openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points[l - 1];
if(!(sx == ex && sy == ey)) {
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points.push(sx);
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points.push(sy);
}
}
};
openfl._internal.renderer.opengl.utils.PathBuiler.endFill = function() {
openfl._internal.renderer.opengl.utils.PathBuiler.__fill = openfl._internal.renderer.opengl.utils.FillType.None;
openfl._internal.renderer.opengl.utils.PathBuiler.__fillIndex++;
};
openfl._internal.renderer.opengl.utils.PathBuiler.moveTo = function(x,y) {
if(openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.isRemovable && openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points.length == 0) openfl._internal.renderer.opengl.utils.PathBuiler.__drawPaths.pop(); else openfl._internal.renderer.opengl.utils.PathBuiler.closePath();
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath = new openfl._internal.renderer.opengl.utils.DrawPath();
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.update(openfl._internal.renderer.opengl.utils.PathBuiler.__line,openfl._internal.renderer.opengl.utils.PathBuiler.__fill,openfl._internal.renderer.opengl.utils.PathBuiler.__fillIndex);
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.type = openfl._internal.renderer.opengl.utils.GraphicType.Polygon;
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points.push(x);
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points.push(y);
openfl._internal.renderer.opengl.utils.PathBuiler.__drawPaths.push(openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath);
};
openfl._internal.renderer.opengl.utils.PathBuiler.graphicDataPop = function() {
if(openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.isRemovable && openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points.length == 0) openfl._internal.renderer.opengl.utils.PathBuiler.__drawPaths.pop(); else openfl._internal.renderer.opengl.utils.PathBuiler.closePath();
};
openfl._internal.renderer.opengl.utils.PathBuiler.build = function(graphics,gl) {
var glStack = null;
var bounds = graphics.__bounds;
openfl._internal.renderer.opengl.utils.PathBuiler.__drawPaths = new Array();
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath = new openfl._internal.renderer.opengl.utils.DrawPath();
openfl._internal.renderer.opengl.utils.PathBuiler.__line = new openfl._internal.renderer.opengl.utils.LineStyle();
openfl._internal.renderer.opengl.utils.PathBuiler.__fill = openfl._internal.renderer.opengl.utils.FillType.None;
openfl._internal.renderer.opengl.utils.PathBuiler.__fillIndex = 0;
glStack = graphics.__glStack[openfl._internal.renderer.opengl.GLRenderer.glContextId];
if(glStack == null) glStack = graphics.__glStack[openfl._internal.renderer.opengl.GLRenderer.glContextId] = new openfl._internal.renderer.opengl.utils.GLStack(gl);
if(!graphics.__visible || graphics.__commands.length == 0 || bounds == null || bounds.width == 0 || bounds.height == 0) {
} else {
var _g = 0;
var _g1 = graphics.__commands;
while(_g < _g1.length) {
var command = _g1[_g];
++_g;
switch(command[1]) {
case 0:
var smooth = command[5];
var repeat = command[4];
var matrix = command[3];
var bitmap = command[2];
openfl._internal.renderer.opengl.utils.PathBuiler.endFill();
if(bitmap != null) openfl._internal.renderer.opengl.utils.PathBuiler.__fill = openfl._internal.renderer.opengl.utils.FillType.Texture(bitmap,matrix,repeat,smooth); else openfl._internal.renderer.opengl.utils.PathBuiler.__fill = openfl._internal.renderer.opengl.utils.FillType.None;
if(openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points.length == 0) {
if(openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.isRemovable && openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points.length == 0) openfl._internal.renderer.opengl.utils.PathBuiler.__drawPaths.pop(); else openfl._internal.renderer.opengl.utils.PathBuiler.closePath();
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath = new openfl._internal.renderer.opengl.utils.DrawPath();
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.update(openfl._internal.renderer.opengl.utils.PathBuiler.__line,openfl._internal.renderer.opengl.utils.PathBuiler.__fill,openfl._internal.renderer.opengl.utils.PathBuiler.__fillIndex);
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points = [];
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.type = openfl._internal.renderer.opengl.utils.GraphicType.Polygon;
openfl._internal.renderer.opengl.utils.PathBuiler.__drawPaths.push(openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath);
}
break;
case 1:
var alpha = command[3];
var rgb = command[2];
openfl._internal.renderer.opengl.utils.PathBuiler.endFill();
if(alpha > 0) openfl._internal.renderer.opengl.utils.PathBuiler.__fill = openfl._internal.renderer.opengl.utils.FillType.Color(rgb & 16777215,alpha); else openfl._internal.renderer.opengl.utils.PathBuiler.__fill = openfl._internal.renderer.opengl.utils.FillType.None;
if(openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points.length == 0) {
if(openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.isRemovable && openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points.length == 0) openfl._internal.renderer.opengl.utils.PathBuiler.__drawPaths.pop(); else openfl._internal.renderer.opengl.utils.PathBuiler.closePath();
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath = new openfl._internal.renderer.opengl.utils.DrawPath();
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.update(openfl._internal.renderer.opengl.utils.PathBuiler.__line,openfl._internal.renderer.opengl.utils.PathBuiler.__fill,openfl._internal.renderer.opengl.utils.PathBuiler.__fillIndex);
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points = [];
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.type = openfl._internal.renderer.opengl.utils.GraphicType.Polygon;
openfl._internal.renderer.opengl.utils.PathBuiler.__drawPaths.push(openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath);
}
break;
case 2:
var y = command[7];
var x = command[6];
var cy2 = command[5];
var cx2 = command[4];
var cy = command[3];
var cx = command[2];
if(openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points.length == 0) openfl._internal.renderer.opengl.utils.PathBuiler.moveTo(0,0);
var n = 20;
var dt = 0;
var dt2 = 0;
var dt3 = 0;
var t2 = 0;
var t3 = 0;
var points = openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points;
var fromX = points[points.length - 2];
var fromY = points[points.length - 1];
var px = 0;
var py = 0;
var tmp = 0;
var _g3 = 1;
var _g2 = n + 1;
while(_g3 < _g2) {
var i = _g3++;
tmp = i / n;
dt = 1 - tmp;
dt2 = dt * dt;
dt3 = dt2 * dt;
t2 = tmp * tmp;
t3 = t2 * tmp;
px = dt3 * fromX + 3 * dt2 * tmp * cx + 3 * dt * t2 * cx2 + t3 * x;
py = dt3 * fromY + 3 * dt2 * tmp * cy + 3 * dt * t2 * cy2 + t3 * y;
points.push(px);
points.push(py);
}
break;
case 3:
var y1 = command[5];
var x1 = command[4];
var cy1 = command[3];
var cx1 = command[2];
if(openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points.length == 0) openfl._internal.renderer.opengl.utils.PathBuiler.moveTo(0,0);
var xa = 0;
var ya = 0;
var n1 = 20;
var points1 = openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points;
var fromX1 = points1[points1.length - 2];
var fromY1 = points1[points1.length - 1];
var px1 = 0;
var py1 = 0;
var tmp1 = 0;
var _g31 = 1;
var _g21 = n1 + 1;
while(_g31 < _g21) {
var i1 = _g31++;
tmp1 = i1 / n1;
xa = fromX1 + (cx1 - fromX1) * tmp1;
ya = fromY1 + (cy1 - fromY1) * tmp1;
px1 = xa + (cx1 + (x1 - cx1) * tmp1 - xa) * tmp1;
py1 = ya + (cy1 + (y1 - cy1) * tmp1 - ya) * tmp1;
points1.push(px1);
points1.push(py1);
}
break;
case 4:
var radius = command[4];
var y2 = command[3];
var x2 = command[2];
if(openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.isRemovable && openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points.length == 0) openfl._internal.renderer.opengl.utils.PathBuiler.__drawPaths.pop(); else openfl._internal.renderer.opengl.utils.PathBuiler.closePath();
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath = new openfl._internal.renderer.opengl.utils.DrawPath();
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.update(openfl._internal.renderer.opengl.utils.PathBuiler.__line,openfl._internal.renderer.opengl.utils.PathBuiler.__fill,openfl._internal.renderer.opengl.utils.PathBuiler.__fillIndex);
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.type = openfl._internal.renderer.opengl.utils.GraphicType.Circle;
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points = [x2,y2,radius];
openfl._internal.renderer.opengl.utils.PathBuiler.__drawPaths.push(openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath);
break;
case 5:
var height = command[5];
var width = command[4];
var y3 = command[3];
var x3 = command[2];
if(openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.isRemovable && openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points.length == 0) openfl._internal.renderer.opengl.utils.PathBuiler.__drawPaths.pop(); else openfl._internal.renderer.opengl.utils.PathBuiler.closePath();
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath = new openfl._internal.renderer.opengl.utils.DrawPath();
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.update(openfl._internal.renderer.opengl.utils.PathBuiler.__line,openfl._internal.renderer.opengl.utils.PathBuiler.__fill,openfl._internal.renderer.opengl.utils.PathBuiler.__fillIndex);
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.type = openfl._internal.renderer.opengl.utils.GraphicType.Ellipse;
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points = [x3,y3,width,height];
openfl._internal.renderer.opengl.utils.PathBuiler.__drawPaths.push(openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath);
break;
case 6:
var height1 = command[5];
var width1 = command[4];
var y4 = command[3];
var x4 = command[2];
if(openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.isRemovable && openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points.length == 0) openfl._internal.renderer.opengl.utils.PathBuiler.__drawPaths.pop(); else openfl._internal.renderer.opengl.utils.PathBuiler.closePath();
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath = new openfl._internal.renderer.opengl.utils.DrawPath();
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.update(openfl._internal.renderer.opengl.utils.PathBuiler.__line,openfl._internal.renderer.opengl.utils.PathBuiler.__fill,openfl._internal.renderer.opengl.utils.PathBuiler.__fillIndex);
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.type = openfl._internal.renderer.opengl.utils.GraphicType.Rectangle(false);
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points = [x4,y4,width1,height1];
openfl._internal.renderer.opengl.utils.PathBuiler.__drawPaths.push(openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath);
break;
case 7:
var ry = command[7];
var rx = command[6];
var height2 = command[5];
var width2 = command[4];
var y5 = command[3];
var x5 = command[2];
if(ry == -1) ry = rx;
rx *= 0.5;
ry *= 0.5;
if(rx > width2 / 2) rx = width2 / 2;
if(ry > height2 / 2) ry = height2 / 2;
if(openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.isRemovable && openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points.length == 0) openfl._internal.renderer.opengl.utils.PathBuiler.__drawPaths.pop(); else openfl._internal.renderer.opengl.utils.PathBuiler.closePath();
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath = new openfl._internal.renderer.opengl.utils.DrawPath();
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.update(openfl._internal.renderer.opengl.utils.PathBuiler.__line,openfl._internal.renderer.opengl.utils.PathBuiler.__fill,openfl._internal.renderer.opengl.utils.PathBuiler.__fillIndex);
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.type = openfl._internal.renderer.opengl.utils.GraphicType.Rectangle(true);
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points = [x5,y5,width2,height2,rx,ry];
openfl._internal.renderer.opengl.utils.PathBuiler.__drawPaths.push(openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath);
break;
case 10:
openfl._internal.renderer.opengl.utils.PathBuiler.endFill();
break;
case 11:
var miterLimit = command[9];
var joints = command[8];
var caps = command[7];
var scaleMode = command[6];
var pixelHinting = command[5];
var alpha1 = command[4];
var color = command[3];
var thickness = command[2];
openfl._internal.renderer.opengl.utils.PathBuiler.__line = new openfl._internal.renderer.opengl.utils.LineStyle();
if(thickness == null || thickness == Math.NaN || thickness < 0) openfl._internal.renderer.opengl.utils.PathBuiler.__line.width = 0; else if(thickness == 0) openfl._internal.renderer.opengl.utils.PathBuiler.__line.width = 1; else openfl._internal.renderer.opengl.utils.PathBuiler.__line.width = thickness;
if(openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.isRemovable && openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points.length == 0) openfl._internal.renderer.opengl.utils.PathBuiler.__drawPaths.pop(); else openfl._internal.renderer.opengl.utils.PathBuiler.closePath();
openfl._internal.renderer.opengl.utils.PathBuiler.__line.color = color;
openfl._internal.renderer.opengl.utils.PathBuiler.__line.alpha = alpha1;
openfl._internal.renderer.opengl.utils.PathBuiler.__line.scaleMode = scaleMode;
openfl._internal.renderer.opengl.utils.PathBuiler.__line.caps = caps;
openfl._internal.renderer.opengl.utils.PathBuiler.__line.joints = joints;
openfl._internal.renderer.opengl.utils.PathBuiler.__line.miterLimit = miterLimit;
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath = new openfl._internal.renderer.opengl.utils.DrawPath();
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.update(openfl._internal.renderer.opengl.utils.PathBuiler.__line,openfl._internal.renderer.opengl.utils.PathBuiler.__fill,openfl._internal.renderer.opengl.utils.PathBuiler.__fillIndex);
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points = [];
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.type = openfl._internal.renderer.opengl.utils.GraphicType.Polygon;
openfl._internal.renderer.opengl.utils.PathBuiler.__drawPaths.push(openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath);
break;
case 12:
var y6 = command[3];
var x6 = command[2];
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points.push(x6);
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points.push(y6);
break;
case 13:
var y7 = command[3];
var x7 = command[2];
openfl._internal.renderer.opengl.utils.PathBuiler.moveTo(x7,y7);
break;
case 9:
var blendMode = command[7];
var colors = command[6];
var culling = command[5];
var uvtData = command[4];
var indices = command[3];
var vertices = command[2];
var isColor;
{
var _g22 = openfl._internal.renderer.opengl.utils.PathBuiler.__fill;
switch(_g22[1]) {
case 1:
isColor = true;
break;
default:
isColor = false;
}
}
if(isColor && uvtData != null) continue;
if(openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.isRemovable && openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points.length == 0) openfl._internal.renderer.opengl.utils.PathBuiler.__drawPaths.pop(); else openfl._internal.renderer.opengl.utils.PathBuiler.closePath();
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath = new openfl._internal.renderer.opengl.utils.DrawPath();
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.update(openfl._internal.renderer.opengl.utils.PathBuiler.__line,openfl._internal.renderer.opengl.utils.PathBuiler.__fill,openfl._internal.renderer.opengl.utils.PathBuiler.__fillIndex);
if(uvtData == null) {
var this1;
this1 = new openfl.VectorData();
var this2;
this2 = new Array(0);
this1.data = this2;
this1.length = 0;
this1.fixed = false;
uvtData = this1;
{
var _g23 = openfl._internal.renderer.opengl.utils.PathBuiler.__fill;
switch(_g23[1]) {
case 2:
var b = _g23[2];
var _g4 = 0;
var _g32 = vertices.length / 2 | 0;
while(_g4 < _g32) {
var i2 = _g4++;
if(!uvtData.fixed) {
uvtData.length++;
if(uvtData.data.length < uvtData.length) {
var data;
var this3;
this3 = new Array(uvtData.data.length + 10);
data = this3;
haxe.ds._Vector.Vector_Impl_.blit(uvtData.data,0,data,0,uvtData.data.length);
uvtData.data = data;
}
uvtData.data[uvtData.length - 1] = vertices.data[i2 * 2] / b.width;
}
uvtData.length;
if(!uvtData.fixed) {
uvtData.length++;
if(uvtData.data.length < uvtData.length) {
var data1;
var this4;
this4 = new Array(uvtData.data.length + 10);
data1 = this4;
haxe.ds._Vector.Vector_Impl_.blit(uvtData.data,0,data1,0,uvtData.data.length);
uvtData.data = data1;
}
uvtData.data[uvtData.length - 1] = vertices.data[i2 * 2 + 1] / b.height;
}
uvtData.length;
}
break;
default:
}
}
}
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.type = openfl._internal.renderer.opengl.utils.GraphicType.DrawTriangles(vertices,indices,uvtData,culling,colors,blendMode);
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.isRemovable = false;
openfl._internal.renderer.opengl.utils.PathBuiler.__drawPaths.push(openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath);
break;
case 8:
var count = command[6];
var flags = command[5];
var smooth1 = command[4];
var tileData = command[3];
var sheet = command[2];
if(openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.isRemovable && openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.points.length == 0) openfl._internal.renderer.opengl.utils.PathBuiler.__drawPaths.pop(); else openfl._internal.renderer.opengl.utils.PathBuiler.closePath();
openfl._internal.renderer.opengl.utils.PathBuiler.__fillIndex++;
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath = new openfl._internal.renderer.opengl.utils.DrawPath();
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.update(openfl._internal.renderer.opengl.utils.PathBuiler.__line,openfl._internal.renderer.opengl.utils.PathBuiler.__fill,openfl._internal.renderer.opengl.utils.PathBuiler.__fillIndex);
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.type = openfl._internal.renderer.opengl.utils.GraphicType.DrawTiles(sheet,tileData,smooth1,flags,count);
openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath.isRemovable = false;
openfl._internal.renderer.opengl.utils.PathBuiler.__drawPaths.push(openfl._internal.renderer.opengl.utils.PathBuiler.__currentPath);
break;
}
}
openfl._internal.renderer.opengl.utils.PathBuiler.closePath();
}
graphics.__drawPaths = openfl._internal.renderer.opengl.utils.PathBuiler.__drawPaths;
return glStack;
};
openfl._internal.renderer.opengl.utils.LineStyle = function() {
this.width = 0;
this.color = 0;
this.alpha = 1;
this.scaleMode = openfl.display.LineScaleMode.NORMAL;
this.caps = openfl.display.CapsStyle.ROUND;
this.joints = openfl.display.JointStyle.ROUND;
this.miterLimit = 3;
};
$hxClasses["openfl._internal.renderer.opengl.utils.LineStyle"] = openfl._internal.renderer.opengl.utils.LineStyle;
openfl._internal.renderer.opengl.utils.LineStyle.__name__ = ["openfl","_internal","renderer","opengl","utils","LineStyle"];
openfl._internal.renderer.opengl.utils.LineStyle.prototype = {
__class__: openfl._internal.renderer.opengl.utils.LineStyle
};
openfl._internal.renderer.opengl.utils.FillType = $hxClasses["openfl._internal.renderer.opengl.utils.FillType"] = { __ename__ : ["openfl","_internal","renderer","opengl","utils","FillType"], __constructs__ : ["None","Color","Texture","Gradient"] };
openfl._internal.renderer.opengl.utils.FillType.None = ["None",0];
openfl._internal.renderer.opengl.utils.FillType.None.toString = $estr;
openfl._internal.renderer.opengl.utils.FillType.None.__enum__ = openfl._internal.renderer.opengl.utils.FillType;
openfl._internal.renderer.opengl.utils.FillType.Color = function(color,alpha) { var $x = ["Color",1,color,alpha]; $x.__enum__ = openfl._internal.renderer.opengl.utils.FillType; $x.toString = $estr; return $x; };
openfl._internal.renderer.opengl.utils.FillType.Texture = function(bitmap,matrix,repeat,smooth) { var $x = ["Texture",2,bitmap,matrix,repeat,smooth]; $x.__enum__ = openfl._internal.renderer.opengl.utils.FillType; $x.toString = $estr; return $x; };
openfl._internal.renderer.opengl.utils.FillType.Gradient = ["Gradient",3];
openfl._internal.renderer.opengl.utils.FillType.Gradient.toString = $estr;
openfl._internal.renderer.opengl.utils.FillType.Gradient.__enum__ = openfl._internal.renderer.opengl.utils.FillType;
openfl._internal.renderer.opengl.utils.FilterManager = function(gl,transparent) {
this.transparent = transparent;
this.filterStack = [];
this.offsetX = 0;
this.offsetY = 0;
this.setContext(gl);
};
$hxClasses["openfl._internal.renderer.opengl.utils.FilterManager"] = openfl._internal.renderer.opengl.utils.FilterManager;
openfl._internal.renderer.opengl.utils.FilterManager.__name__ = ["openfl","_internal","renderer","opengl","utils","FilterManager"];
openfl._internal.renderer.opengl.utils.FilterManager.prototype = {
applyFilterPass: function(filter,filterArea,width,height) {
var gl = this.gl;
var shader = filter.shaders[openfl._internal.renderer.opengl.GLRenderer.glContextId];
if(shader == null) {
shader = new openfl._internal.renderer.opengl.shaders.DefaultShader(gl);
shader.fragmentSrc = filter.fragmentSrc;
shader.uniforms = filter.uniforms;
shader.init();
filter.shaders[openfl._internal.renderer.opengl.GLRenderer.glContextId] = shader;
}
this.renderSession.shaderManager.setShader(shader);
gl.uniform2f(shader.projectionVector,width / 2,-height / 2);
gl.uniform2f(shader.offsetVector,0,0);
if(filter.uniforms.dimensions != null) {
filter.uniforms.dimensions.value[0] = this.width + 0.0;
filter.uniforms.dimensions.value[1] = this.height + 0.0;
filter.uniforms.dimensions.value[2] = this.vertexArray[0];
filter.uniforms.dimensions.value[3] = this.vertexArray[5];
}
shader.syncUniforms();
gl.bindBuffer(gl.ARRAY_BUFFER,this.vertexBuffer);
gl.vertexAttribPointer(shader.aVertexPosition,2,gl.FLOAT,false,0,0);
gl.bindBuffer(gl.ARRAY_BUFFER,this.uvBuffer);
gl.vertexAttribPointer(shader.aTextureCoord,2,gl.FLOAT,false,0,0);
gl.bindBuffer(gl.ARRAY_BUFFER,this.colorBuffer);
gl.vertexAttribPointer(shader.colorAttribute,2,gl.FLOAT,false,0,0);
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,this.indexBuffer);
gl.drawElements(gl.TRIANGLES,6,gl.UNSIGNED_SHORT,0);
this.renderSession.drawCount++;
}
,begin: function(renderSession,buffer) {
this.renderSession = renderSession;
this.defaultShader = renderSession.shaderManager.defaultShader;
var projection = renderSession.projection;
this.width = projection.x * 2 | 0;
this.height = -projection.y * 2 | 0;
this.buffer = buffer;
}
,destroy: function() {
var gl = this.gl;
this.filterStack = null;
this.offsetX = 0;
this.offsetY = 0;
var _g = 0;
var _g1 = this.texturePool;
while(_g < _g1.length) {
var texture = _g1[_g];
++_g;
texture.destroy();
}
this.texturePool = null;
gl.deleteBuffer(this.vertexBuffer);
gl.deleteBuffer(this.uvBuffer);
gl.deleteBuffer(this.colorBuffer);
gl.deleteBuffer(this.indexBuffer);
}
,initShaderBuffers: function() {
var gl = this.gl;
this.vertexBuffer = gl.createBuffer();
this.uvBuffer = gl.createBuffer();
this.colorBuffer = gl.createBuffer();
this.indexBuffer = gl.createBuffer();
this.vertexArray = new Float32Array([0.0,0.0,1.0,0.0,0.0,1.0,1.0,1.0]);
gl.bindBuffer(gl.ARRAY_BUFFER,this.vertexBuffer);
gl.bufferData(gl.ARRAY_BUFFER,this.vertexArray,gl.STATIC_DRAW);
this.uvArray = new Float32Array([0.0,0.0,1.0,0.0,0.0,1.0,1.0,1.0]);
gl.bindBuffer(gl.ARRAY_BUFFER,this.uvBuffer);
gl.bufferData(gl.ARRAY_BUFFER,this.uvArray,gl.STATIC_DRAW);
this.colorArray = new Float32Array([1.0,16777215,1.0,16777215,1.0,16777215,1.0,16777215]);
gl.bindBuffer(gl.ARRAY_BUFFER,this.colorBuffer);
gl.bufferData(gl.ARRAY_BUFFER,this.colorArray,gl.STATIC_DRAW);
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,this.indexBuffer);
gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,1,3,2]),gl.STATIC_DRAW);
}
,popFilter: function() {
var gl = this.gl;
var filterBlock = this.filterStack.pop();
var filterArea = filterBlock._filterArea;
var texture = filterBlock._glFilterTexture;
var projection = this.renderSession.projection;
var offset = this.renderSession.offset;
if(filterBlock.filterPasses.length > 1) {
gl.viewport(0,0,filterArea.width | 0,filterArea.height | 0);
gl.bindBuffer(gl.ARRAY_BUFFER,this.vertexBuffer);
this.vertexArray[0] = 0;
this.vertexArray[1] = filterArea.height;
this.vertexArray[2] = filterArea.width;
this.vertexArray[3] = filterArea.height;
this.vertexArray[4] = 0;
this.vertexArray[5] = 0;
this.vertexArray[6] = filterArea.width;
this.vertexArray[7] = 0;
gl.bufferSubData(gl.ARRAY_BUFFER,0,this.vertexArray);
gl.bindBuffer(gl.ARRAY_BUFFER,this.uvBuffer);
this.uvArray[2] = filterArea.width / this.width;
this.uvArray[5] = filterArea.height / this.height;
this.uvArray[6] = filterArea.width / this.width;
this.uvArray[7] = filterArea.height / this.height;
gl.bufferSubData(gl.ARRAY_BUFFER,0,this.uvArray);
var inputTexture = texture;
var outputTexture = this.texturePool.pop();
if(outputTexture == null) outputTexture = new openfl._internal.renderer.opengl.utils.FilterTexture(gl,this.width,this.height);
outputTexture.resize(this.width,this.height);
gl.bindFramebuffer(gl.FRAMEBUFFER,outputTexture.frameBuffer);
gl.clear(gl.COLOR_BUFFER_BIT);
gl.disable(gl.BLEND);
var _g1 = 0;
var _g = filterBlock.filterPasses.length - 1 | 0;
while(_g1 < _g) {
var i = _g1++;
var filterPass = filterBlock.filterPasses[i];
gl.bindFramebuffer(gl.FRAMEBUFFER,outputTexture.frameBuffer);
gl.activeTexture(gl.TEXTURE0);
gl.bindTexture(gl.TEXTURE_2D,inputTexture.texture);
this.applyFilterPass(filterPass,filterArea,filterArea.width | 0,filterArea.height | 0);
var temp = inputTexture;
inputTexture = outputTexture;
outputTexture = temp;
}
gl.enable(gl.BLEND);
texture = inputTexture;
this.texturePool.push(outputTexture);
}
var filter = filterBlock.filterPasses[filterBlock.filterPasses.length - 1 | 0];
this.offsetX -= filterArea.x;
this.offsetY -= filterArea.y;
var sizeX = this.width;
var sizeY = this.height;
var offsetX = 0.0;
var offsetY = 0.0;
var buffer = this.buffer;
if(this.filterStack.length == 0) gl.colorMask(true,true,true,true); else {
var currentFilter = this.filterStack[this.filterStack.length - 1];
filterArea = currentFilter._filterArea;
sizeX = filterArea.width | 0;
sizeY = filterArea.height | 0;
offsetX = filterArea.x;
offsetY = filterArea.y;
buffer = currentFilter._glFilterTexture.frameBuffer;
}
projection.x = sizeX / 2;
projection.y = -sizeY / 2;
offset.x = offsetX;
offset.y = offsetY;
filterArea = filterBlock._filterArea;
var x = filterArea.x - offsetX;
var y = filterArea.y - offsetY;
gl.bindBuffer(gl.ARRAY_BUFFER,this.vertexBuffer);
this.vertexArray[0] = x;
this.vertexArray[1] = y + filterArea.height;
this.vertexArray[2] = x + filterArea.width;
this.vertexArray[3] = y + filterArea.height;
this.vertexArray[4] = x;
this.vertexArray[5] = y;
this.vertexArray[6] = x + filterArea.width;
this.vertexArray[7] = y;
gl.bufferSubData(gl.ARRAY_BUFFER,0,this.vertexArray);
gl.bindBuffer(gl.ARRAY_BUFFER,this.uvBuffer);
this.uvArray[2] = filterArea.width / this.width;
this.uvArray[5] = filterArea.height / this.height;
this.uvArray[6] = filterArea.width / this.width;
this.uvArray[7] = filterArea.height / this.height;
gl.bufferSubData(gl.ARRAY_BUFFER,0,this.uvArray);
gl.viewport(0,0,sizeX,sizeY);
gl.bindFramebuffer(gl.FRAMEBUFFER,buffer);
gl.activeTexture(gl.TEXTURE0);
gl.bindTexture(gl.TEXTURE_2D,texture.texture);
this.applyFilterPass(filter,filterArea,sizeX,sizeY);
this.renderSession.shaderManager.setShader(this.defaultShader);
gl.uniform2f(this.defaultShader.projectionVector,sizeX / 2,-sizeY / 2);
gl.uniform2f(this.defaultShader.offsetVector,-offsetX,-offsetY);
this.texturePool.push(texture);
filterBlock._glFilterTexture = null;
}
,pushFilter: function(filterBlock) {
var gl = this.gl;
var projection = this.renderSession.projection;
var offset = this.renderSession.offset;
if(filterBlock.target.filterArea != null) filterBlock._filterArea = filterBlock.target.filterArea; else filterBlock._filterArea = filterBlock.target.getBounds();
this.filterStack.push(filterBlock);
var filter = filterBlock.filterPasses[0];
this.offsetX += filterBlock._filterArea.x;
this.offsetY += filterBlock._filterArea.y;
var texture = this.texturePool.pop();
if(texture == null) texture = new openfl._internal.renderer.opengl.utils.FilterTexture(gl,this.width,this.height); else texture.resize(this.width,this.height);
gl.bindTexture(gl.TEXTURE_2D,texture.texture);
var filterArea = filterBlock._filterArea;
var padding = filter.padding;
filterArea.x -= padding;
filterArea.y -= padding;
filterArea.width += padding * 2;
filterArea.height += padding * 2;
if(filterArea.x < 0) filterArea.x = 0;
if(filterArea.width > this.width) filterArea.width = this.width;
if(filterArea.y < 0) filterArea.y = 0;
if(filterArea.height > this.height) filterArea.height = this.height;
gl.bindFramebuffer(gl.FRAMEBUFFER,texture.frameBuffer);
gl.viewport(0,0,filterArea.width | 0,filterArea.height | 0);
projection.x = filterArea.width / 2;
projection.y = -filterArea.height / 2;
offset.x = -filterArea.x;
offset.y = -filterArea.y;
this.renderSession.shaderManager.setShader(this.defaultShader);
gl.uniform2f(this.defaultShader.projectionVector,filterArea.width / 2,-filterArea.height / 2);
gl.uniform2f(this.defaultShader.offsetVector,-filterArea.x,-filterArea.y);
gl.colorMask(true,true,true,true);
gl.clearColor(0,0,0,0);
gl.clear(gl.COLOR_BUFFER_BIT);
filterBlock._glFilterTexture = texture;
}
,setContext: function(gl) {
this.gl = gl;
this.texturePool = [];
this.initShaderBuffers();
}
,__class__: openfl._internal.renderer.opengl.utils.FilterManager
};
openfl._internal.renderer.opengl.utils.FilterTexture = function(gl,width,height,smoothing) {
if(smoothing == null) smoothing = true;
this.gl = gl;
this.frameBuffer = gl.createFramebuffer();
this.texture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D,this.texture);
gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,smoothing?gl.LINEAR:gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,smoothing?gl.LINEAR:gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);
gl.bindFramebuffer(gl.FRAMEBUFFER,this.frameBuffer);
gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,this.texture,0);
this.renderBuffer = gl.createRenderbuffer();
gl.bindRenderbuffer(gl.RENDERBUFFER,this.renderBuffer);
gl.framebufferRenderbuffer(gl.FRAMEBUFFER,gl.DEPTH_STENCIL_ATTACHMENT,gl.RENDERBUFFER,this.renderBuffer);
this.resize(width,height);
};
$hxClasses["openfl._internal.renderer.opengl.utils.FilterTexture"] = openfl._internal.renderer.opengl.utils.FilterTexture;
openfl._internal.renderer.opengl.utils.FilterTexture.__name__ = ["openfl","_internal","renderer","opengl","utils","FilterTexture"];
openfl._internal.renderer.opengl.utils.FilterTexture.prototype = {
clear: function() {
var gl = this.gl;
gl.clearColor(0,0,0,0);
gl.clear(gl.COLOR_BUFFER_BIT);
}
,destroy: function() {
var gl = this.gl;
gl.deleteFramebuffer(this.frameBuffer);
gl.deleteTexture(this.texture);
this.frameBuffer = null;
this.texture = null;
}
,resize: function(width,height) {
if(this.width == width && this.height == height) return;
this.width = width;
this.height = height;
var gl = this.gl;
gl.bindTexture(gl.TEXTURE_2D,this.texture);
gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,width,height,0,gl.RGBA,gl.UNSIGNED_BYTE,null);
gl.bindRenderbuffer(gl.RENDERBUFFER,this.renderBuffer);
gl.renderbufferStorage(gl.RENDERBUFFER,gl.DEPTH_STENCIL,width,height);
}
,__class__: openfl._internal.renderer.opengl.utils.FilterTexture
};
openfl.geom.Rectangle = function(x,y,width,height) {
if(height == null) height = 0;
if(width == null) width = 0;
if(y == null) y = 0;
if(x == null) x = 0;
this.x = x;
this.y = y;
this.width = width;
this.height = height;
};
$hxClasses["openfl.geom.Rectangle"] = openfl.geom.Rectangle;
openfl.geom.Rectangle.__name__ = ["openfl","geom","Rectangle"];
openfl.geom.Rectangle.prototype = {
clone: function() {
return new openfl.geom.Rectangle(this.x,this.y,this.width,this.height);
}
,contains: function(x,y) {
return x >= this.x && y >= this.y && x < this.get_right() && y < this.get_bottom();
}
,containsPoint: function(point) {
return this.contains(point.x,point.y);
}
,containsRect: function(rect) {
if(rect.width <= 0 || rect.height <= 0) return rect.x > this.x && rect.y > this.y && rect.get_right() < this.get_right() && rect.get_bottom() < this.get_bottom(); else return rect.x >= this.x && rect.y >= this.y && rect.get_right() <= this.get_right() && rect.get_bottom() <= this.get_bottom();
}
,copyFrom: function(sourceRect) {
this.x = sourceRect.x;
this.y = sourceRect.y;
this.width = sourceRect.width;
this.height = sourceRect.height;
}
,equals: function(toCompare) {
return toCompare != null && this.x == toCompare.x && this.y == toCompare.y && this.width == toCompare.width && this.height == toCompare.height;
}
,inflate: function(dx,dy) {
this.x -= dx;
this.width += dx * 2;
this.y -= dy;
this.height += dy * 2;
}
,inflatePoint: function(point) {
this.inflate(point.x,point.y);
}
,intersection: function(toIntersect) {
var x0;
if(this.x < toIntersect.x) x0 = toIntersect.x; else x0 = this.x;
var x1;
if(this.get_right() > toIntersect.get_right()) x1 = toIntersect.get_right(); else x1 = this.get_right();
if(x1 <= x0) return new openfl.geom.Rectangle();
var y0;
if(this.y < toIntersect.y) y0 = toIntersect.y; else y0 = this.y;
var y1;
if(this.get_bottom() > toIntersect.get_bottom()) y1 = toIntersect.get_bottom(); else y1 = this.get_bottom();
if(y1 <= y0) return new openfl.geom.Rectangle();
return new openfl.geom.Rectangle(x0,y0,x1 - x0,y1 - y0);
}
,intersects: function(toIntersect) {
var x0;
if(this.x < toIntersect.x) x0 = toIntersect.x; else x0 = this.x;
var x1;
if(this.get_right() > toIntersect.get_right()) x1 = toIntersect.get_right(); else x1 = this.get_right();
if(x1 <= x0) return false;
var y0;
if(this.y < toIntersect.y) y0 = toIntersect.y; else y0 = this.y;
var y1;
if(this.get_bottom() > toIntersect.get_bottom()) y1 = toIntersect.get_bottom(); else y1 = this.get_bottom();
return y1 > y0;
}
,isEmpty: function() {
return this.width <= 0 || this.height <= 0;
}
,offset: function(dx,dy) {
this.x += dx;
this.y += dy;
}
,offsetPoint: function(point) {
this.x += point.x;
this.y += point.y;
}
,setEmpty: function() {
this.x = this.y = this.width = this.height = 0;
}
,setTo: function(xa,ya,widtha,heighta) {
this.x = xa;
this.y = ya;
this.width = widtha;
this.height = heighta;
}
,transform: function(m) {
var tx0 = m.a * this.x + m.c * this.y;
var tx1 = tx0;
var ty0 = m.b * this.x + m.d * this.y;
var ty1 = tx0;
var tx = m.a * (this.x + this.width) + m.c * this.y;
var ty = m.b * (this.x + this.width) + m.d * this.y;
if(tx < tx0) tx0 = tx;
if(ty < ty0) ty0 = ty;
if(tx > tx1) tx1 = tx;
if(ty > ty1) ty1 = ty;
tx = m.a * (this.x + this.width) + m.c * (this.y + this.height);
ty = m.b * (this.x + this.width) + m.d * (this.y + this.height);
if(tx < tx0) tx0 = tx;
if(ty < ty0) ty0 = ty;
if(tx > tx1) tx1 = tx;
if(ty > ty1) ty1 = ty;
tx = m.a * this.x + m.c * (this.y + this.height);
ty = m.b * this.x + m.d * (this.y + this.height);
if(tx < tx0) tx0 = tx;
if(ty < ty0) ty0 = ty;
if(tx > tx1) tx1 = tx;
if(ty > ty1) ty1 = ty;
return new openfl.geom.Rectangle(tx0 + m.tx,ty0 + m.ty,tx1 - tx0,ty1 - ty0);
}
,union: function(toUnion) {
if(this.width == 0 || this.height == 0) return toUnion.clone(); else if(toUnion.width == 0 || toUnion.height == 0) return this.clone();
var x0;
if(this.x > toUnion.x) x0 = toUnion.x; else x0 = this.x;
var x1;
if(this.get_right() < toUnion.get_right()) x1 = toUnion.get_right(); else x1 = this.get_right();
var y0;
if(this.y > toUnion.y) y0 = toUnion.y; else y0 = this.y;
var y1;
if(this.get_bottom() < toUnion.get_bottom()) y1 = toUnion.get_bottom(); else y1 = this.get_bottom();
return new openfl.geom.Rectangle(x0,y0,x1 - x0,y1 - y0);
}
,__contract: function(x,y,width,height) {
if(this.width == 0 && this.height == 0) return;
var cacheRight = this.get_right();
var cacheBottom = this.get_bottom();
if(this.x < x) this.x = x;
if(this.y < y) this.y = y;
if(this.get_right() > x + width) this.width = x + width - this.x;
if(this.get_bottom() > y + height) this.height = y + height - this.y;
}
,__expand: function(x,y,width,height) {
if(this.width == 0 && this.height == 0) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
return;
}
var cacheRight = this.get_right();
var cacheBottom = this.get_bottom();
if(this.x > x) {
this.x = x;
this.width = cacheRight - x;
}
if(this.y > y) {
this.y = y;
this.height = cacheBottom - y;
}
if(cacheRight < x + width) this.width = x + width - this.x;
if(cacheBottom < y + height) this.height = y + height - this.y;
}
,__toLimeRectangle: function() {
return new lime.math.Rectangle(this.x,this.y,this.width,this.height);
}
,get_bottom: function() {
return this.y + this.height;
}
,set_bottom: function(b) {
this.height = b - this.y;
return b;
}
,get_bottomRight: function() {
return new openfl.geom.Point(this.x + this.width,this.y + this.height);
}
,set_bottomRight: function(p) {
this.width = p.x - this.x;
this.height = p.y - this.y;
return p.clone();
}
,get_left: function() {
return this.x;
}
,set_left: function(l) {
this.width -= l - this.x;
this.x = l;
return l;
}
,get_right: function() {
return this.x + this.width;
}
,set_right: function(r) {
this.width = r - this.x;
return r;
}
,get_size: function() {
return new openfl.geom.Point(this.width,this.height);
}
,set_size: function(p) {
this.width = p.x;
this.height = p.y;
return p.clone();
}
,get_top: function() {
return this.y;
}
,set_top: function(t) {
this.height -= t - this.y;
this.y = t;
return t;
}
,get_topLeft: function() {
return new openfl.geom.Point(this.x,this.y);
}
,set_topLeft: function(p) {
this.x = p.x;
this.y = p.y;
return p.clone();
}
,__class__: openfl.geom.Rectangle
,__properties__: {set_topLeft:"set_topLeft",get_topLeft:"get_topLeft",set_top:"set_top",get_top:"get_top",set_size:"set_size",get_size:"get_size",set_right:"set_right",get_right:"get_right",set_left:"set_left",get_left:"get_left",set_bottomRight:"set_bottomRight",get_bottomRight:"get_bottomRight",set_bottom:"set_bottom",get_bottom:"get_bottom"}
};
openfl.geom.Point = function(x,y) {
if(y == null) y = 0;
if(x == null) x = 0;
this.x = x;
this.y = y;
};
$hxClasses["openfl.geom.Point"] = openfl.geom.Point;
openfl.geom.Point.__name__ = ["openfl","geom","Point"];
openfl.geom.Point.distance = function(pt1,pt2) {
var dx = pt1.x - pt2.x;
var dy = pt1.y - pt2.y;
return Math.sqrt(dx * dx + dy * dy);
};
openfl.geom.Point.interpolate = function(pt1,pt2,f) {
return new openfl.geom.Point(pt2.x + f * (pt1.x - pt2.x),pt2.y + f * (pt1.y - pt2.y));
};
openfl.geom.Point.polar = function(len,angle) {
return new openfl.geom.Point(len * Math.cos(angle),len * Math.sin(angle));
};
openfl.geom.Point.prototype = {
add: function(v) {
return new openfl.geom.Point(v.x + this.x,v.y + this.y);
}
,clone: function() {
return new openfl.geom.Point(this.x,this.y);
}
,copyFrom: function(sourcePoint) {
this.x = sourcePoint.x;
this.y = sourcePoint.y;
}
,equals: function(toCompare) {
return toCompare != null && toCompare.x == this.x && toCompare.y == this.y;
}
,normalize: function(thickness) {
if(this.x == 0 && this.y == 0) return; else {
var norm = thickness / Math.sqrt(this.x * this.x + this.y * this.y);
this.x *= norm;
this.y *= norm;
}
}
,offset: function(dx,dy) {
this.x += dx;
this.y += dy;
}
,setTo: function(xa,ya) {
this.x = xa;
this.y = ya;
}
,subtract: function(v) {
return new openfl.geom.Point(this.x - v.x,this.y - v.y);
}
,toString: function() {
return "(x=" + this.x + ", y=" + this.y + ")";
}
,__toLimeVector2: function() {
return new lime.math.Vector2(this.x,this.y);
}
,get_length: function() {
return Math.sqrt(this.x * this.x + this.y * this.y);
}
,__class__: openfl.geom.Point
,__properties__: {get_length:"get_length"}
};
openfl._internal.renderer.opengl.utils.GraphicsRenderer = function() { };
$hxClasses["openfl._internal.renderer.opengl.utils.GraphicsRenderer"] = openfl._internal.renderer.opengl.utils.GraphicsRenderer;
openfl._internal.renderer.opengl.utils.GraphicsRenderer.__name__ = ["openfl","_internal","renderer","opengl","utils","GraphicsRenderer"];
openfl._internal.renderer.opengl.utils.GraphicsRenderer.lastVertsBuffer = null;
openfl._internal.renderer.opengl.utils.GraphicsRenderer.lastBucketMode = null;
openfl._internal.renderer.opengl.utils.GraphicsRenderer.lastTexture = null;
openfl._internal.renderer.opengl.utils.GraphicsRenderer.lastTextureRepeat = null;
openfl._internal.renderer.opengl.utils.GraphicsRenderer.lastTextureSmooth = null;
openfl._internal.renderer.opengl.utils.GraphicsRenderer.buildCircle = function(path,glStack,localCoords) {
if(localCoords == null) localCoords = false;
var rectData = path.points;
var x = rectData[0];
var y = rectData[1];
var width = rectData[2];
var height;
if(rectData.length == 3) height = width; else height = rectData[3];
if(path.type == openfl._internal.renderer.opengl.utils.GraphicType.Ellipse) {
width /= 2;
height /= 2;
x += width;
y += height;
}
if(localCoords) {
x -= openfl._internal.renderer.opengl.utils.GraphicsRenderer.objectBounds.x;
y -= openfl._internal.renderer.opengl.utils.GraphicsRenderer.objectBounds.y;
}
var totalSegs = 40;
var seg = Math.PI * 2 / totalSegs;
var bucket = openfl._internal.renderer.opengl.utils.GraphicsRenderer.prepareBucket(path,glStack);
if(bucket != null) {
var verts = bucket.verts;
var indices = bucket.indices;
var vertPos = verts.length / 2 | 0;
indices.push(vertPos);
var _g1 = 0;
var _g = totalSegs + 1;
while(_g1 < _g) {
var i = _g1++;
verts.push(x);
verts.push(y);
verts.push(x + Math.sin(seg * i) * width);
verts.push(y + Math.cos(seg * i) * height);
indices.push(vertPos++);
indices.push(vertPos++);
}
indices.push(vertPos - 1);
}
if(path.line.width > 0) {
var tempPoints = path.points;
path.points = [];
var _g11 = 0;
var _g2 = totalSegs + 1;
while(_g11 < _g2) {
var i1 = _g11++;
path.points.push(x + Math.sin(seg * i1) * width);
path.points.push(y + Math.cos(seg * i1) * height);
}
openfl._internal.renderer.opengl.utils.GraphicsRenderer.buildLine(path,bucket.line);
path.points = tempPoints;
}
};
openfl._internal.renderer.opengl.utils.GraphicsRenderer.buildComplexPoly = function(path,glStack,localCoords) {
if(localCoords == null) localCoords = false;
if(path.points.length < 6) return;
var points = path.points.slice();
if(localCoords) {
var _g1 = 0;
var _g = points.length / 2 | 0;
while(_g1 < _g) {
var i = _g1++;
points[i * 2] -= openfl._internal.renderer.opengl.utils.GraphicsRenderer.objectBounds.x;
points[i * 2 + 1] -= openfl._internal.renderer.opengl.utils.GraphicsRenderer.objectBounds.y;
}
}
var bucket = openfl._internal.renderer.opengl.utils.GraphicsRenderer.prepareBucket(path,glStack);
bucket.drawMode = glStack.gl.TRIANGLE_FAN;
bucket.verts = points;
var indices = bucket.indices;
var length = points.length / 2 | 0;
var _g2 = 0;
while(_g2 < length) {
var i1 = _g2++;
indices.push(i1);
}
if(path.line.width > 0) openfl._internal.renderer.opengl.utils.GraphicsRenderer.buildLine(path,bucket.line,localCoords);
};
openfl._internal.renderer.opengl.utils.GraphicsRenderer.buildLine = function(path,bucket,localCoords) {
if(localCoords == null) localCoords = false;
var points = path.points;
if(points.length == 0) return;
if(localCoords) {
var _g1 = 0;
var _g = points.length / 2 | 0;
while(_g1 < _g) {
var i = _g1++;
points[i * 2] -= openfl._internal.renderer.opengl.utils.GraphicsRenderer.objectBounds.x;
points[i * 2 + 1] -= openfl._internal.renderer.opengl.utils.GraphicsRenderer.objectBounds.y;
}
}
if(path.line.width % 2 > 0) {
var _g11 = 0;
var _g2 = points.length;
while(_g11 < _g2) {
var i1 = _g11++;
points[i1] += 0.5;
}
}
var firstPoint = new openfl.geom.Point(points[0],points[1]);
var lastPoint = new openfl.geom.Point(points[points.length - 2 | 0],points[points.length - 1 | 0]);
if(firstPoint.x == lastPoint.x && firstPoint.y == lastPoint.y) {
points = points.slice();
points.pop();
points.pop();
lastPoint = new openfl.geom.Point(points[points.length - 2 | 0],points[points.length - 1 | 0]);
var midPointX = lastPoint.x + (firstPoint.x - lastPoint.x) * 0.5;
var midPointY = lastPoint.y + (firstPoint.y - lastPoint.y) * 0.5;
points.unshift(midPointY);
points.unshift(midPointX);
points.push(midPointX);
points.push(midPointY);
}
var verts = bucket.verts;
var indices = bucket.indices;
var length = points.length / 2 | 0;
var indexCount = points.length;
var indexStart = verts.length / 6 | 0;
var width = path.line.width / 2;
var color = openfl._internal.renderer.opengl.utils.GraphicsRenderer.hex2rgb(path.line.color);
var alpha = path.line.alpha;
var r = color[0] * alpha;
var g = color[1] * alpha;
var b = color[2] * alpha;
var px;
var py;
var p1x;
var p1y;
var p2x;
var p2y;
var p3x;
var p3y;
var perpx;
var perpy;
var perp2x;
var perp2y;
var perp3x;
var perp3y;
var a1;
var b1;
var c1;
var a2;
var b2;
var c2;
var denom;
var pdist;
var dist;
p1x = points[0];
p1y = points[1];
p2x = points[2];
p2y = points[3];
perpx = -(p1y - p2y);
perpy = p1x - p2x;
dist = Math.sqrt(Math.abs(perpx * perpx + perpy * perpy));
perpx = perpx / dist;
perpy = perpy / dist;
perpx = perpx * width;
perpy = perpy * width;
verts.push(p1x - perpx);
verts.push(p1y - perpy);
verts.push(r);
verts.push(g);
verts.push(b);
verts.push(alpha);
verts.push(p1x + perpx);
verts.push(p1y + perpy);
verts.push(r);
verts.push(g);
verts.push(b);
verts.push(alpha);
var _g12 = 1;
var _g3 = length - 1;
while(_g12 < _g3) {
var i2 = _g12++;
p1x = points[(i2 - 1) * 2];
p1y = points[(i2 - 1) * 2 + 1];
p2x = points[i2 * 2];
p2y = points[i2 * 2 + 1];
p3x = points[(i2 + 1) * 2];
p3y = points[(i2 + 1) * 2 + 1];
perpx = -(p1y - p2y);
perpy = p1x - p2x;
dist = Math.sqrt(Math.abs(perpx * perpx + perpy * perpy));
perpx = perpx / dist;
perpy = perpy / dist;
perpx = perpx * width;
perpy = perpy * width;
perp2x = -(p2y - p3y);
perp2y = p2x - p3x;
dist = Math.sqrt(Math.abs(perp2x * perp2x + perp2y * perp2y));
perp2x = perp2x / dist;
perp2y = perp2y / dist;
perp2x = perp2x * width;
perp2y = perp2y * width;
a1 = -perpy + p1y - (-perpy + p2y);
b1 = -perpx + p2x - (-perpx + p1x);
c1 = (-perpx + p1x) * (-perpy + p2y) - (-perpx + p2x) * (-perpy + p1y);
a2 = -perp2y + p3y - (-perp2y + p2y);
b2 = -perp2x + p2x - (-perp2x + p3x);
c2 = (-perp2x + p3x) * (-perp2y + p2y) - (-perp2x + p2x) * (-perp2y + p3y);
denom = a1 * b2 - a2 * b1;
if(Math.abs(denom) < 0.1) {
denom += 10.1;
verts.push(p2x - perpx);
verts.push(p2y - perpy);
verts.push(r);
verts.push(g);
verts.push(b);
verts.push(alpha);
verts.push(p2x + perpx);
verts.push(p2y + perpy);
verts.push(r);
verts.push(g);
verts.push(b);
verts.push(alpha);
continue;
}
px = (b1 * c2 - b2 * c1) / denom;
py = (a2 * c1 - a1 * c2) / denom;
pdist = (px - p2x) * (px - p2x) + (py - p2y) + (py - p2y);
if(pdist > 19600) {
perp3x = perpx - perp2x;
perp3y = perpy - perp2y;
dist = Math.sqrt(Math.abs(perp3x * perp3x + perp3y * perp3y));
perp3x = perp3x / dist;
perp3y = perp3y / dist;
perp3x = perp3x * width;
perp3y = perp3y * width;
verts.push(p2x - perp3x);
verts.push(p2y - perp3y);
verts.push(r);
verts.push(g);
verts.push(b);
verts.push(alpha);
verts.push(p2x + perp3x);
verts.push(p2y + perp3y);
verts.push(r);
verts.push(g);
verts.push(b);
verts.push(alpha);
verts.push(p2x - perp3x);
verts.push(p2y - perp3y);
verts.push(r);
verts.push(g);
verts.push(b);
verts.push(alpha);
indexCount++;
} else {
verts.push(px);
verts.push(py);
verts.push(r);
verts.push(g);
verts.push(b);
verts.push(alpha);
verts.push(p2x - (px - p2x));
verts.push(p2y - (py - p2y));
verts.push(r);
verts.push(g);
verts.push(b);
verts.push(alpha);
}
}
p1x = points[(length - 2) * 2];
p1y = points[(length - 2) * 2 + 1];
p2x = points[(length - 1) * 2];
p2y = points[(length - 1) * 2 + 1];
perpx = -(p1y - p2y);
perpy = p1x - p2x;
dist = Math.sqrt(Math.abs(perpx * perpx + perpy * perpy));
if(!Math.isFinite(dist)) null;
perpx = perpx / dist;
perpy = perpy / dist;
perpx = perpx * width;
perpy = perpy * width;
verts.push(p2x - perpx);
verts.push(p2y - perpy);
verts.push(r);
verts.push(g);
verts.push(b);
verts.push(alpha);
verts.push(p2x + perpx);
verts.push(p2y + perpy);
verts.push(r);
verts.push(g);
verts.push(b);
verts.push(alpha);
indices.push(indexStart);
var _g4 = 0;
while(_g4 < indexCount) {
var i3 = _g4++;
indices.push(indexStart++);
}
indices.push(indexStart - 1);
};
openfl._internal.renderer.opengl.utils.GraphicsRenderer.buildPoly = function(path,glStack) {
if(path.points.length < 6) return;
var points = path.points;
var l = points.length;
var sx = points[0];
var sy = points[1];
var ex = points[l - 2];
var ey = points[l - 1];
if(sx != ex || sy != ey) {
points.push(sx);
points.push(sy);
}
var length = points.length / 2 | 0;
var bucket = openfl._internal.renderer.opengl.utils.GraphicsRenderer.prepareBucket(path,glStack);
var verts = bucket.verts;
var indices = bucket.indices;
if(bucket != null) {
var triangles = openfl._internal.renderer.opengl.utils.PolyK.triangulate(points);
var vertPos = verts.length / 2;
var i = 0;
while(i < triangles.length) {
indices.push(triangles[i] + vertPos | 0);
indices.push(triangles[i] + vertPos | 0);
indices.push(triangles[i + 1] + vertPos | 0);
indices.push(triangles[i + 2] + vertPos | 0);
indices.push(triangles[i + 2] + vertPos | 0);
i += 3;
}
var _g = 0;
while(_g < length) {
var i1 = _g++;
verts.push(points[i1 * 2]);
verts.push(points[i1 * 2 + 1]);
}
}
if(path.line.width > 0) openfl._internal.renderer.opengl.utils.GraphicsRenderer.buildLine(path,bucket.line);
};
openfl._internal.renderer.opengl.utils.GraphicsRenderer.buildRectangle = function(path,glStack,localCoords) {
if(localCoords == null) localCoords = false;
var rectData = path.points;
var x = rectData[0];
var y = rectData[1];
var width = rectData[2];
var height = rectData[3];
if(localCoords) {
x -= openfl._internal.renderer.opengl.utils.GraphicsRenderer.objectBounds.x;
y -= openfl._internal.renderer.opengl.utils.GraphicsRenderer.objectBounds.y;
}
var bucket = openfl._internal.renderer.opengl.utils.GraphicsRenderer.prepareBucket(path,glStack);
if(bucket != null) {
var verts = bucket.verts;
var indices = bucket.indices;
var vertPos = verts.length / 2 | 0;
verts.push(x);
verts.push(y);
verts.push(x + width);
verts.push(y);
verts.push(x);
verts.push(y + height);
verts.push(x + width);
verts.push(y + height);
indices.push(vertPos);
indices.push(vertPos);
indices.push(vertPos + 1);
indices.push(vertPos + 2);
indices.push(vertPos + 3);
indices.push(vertPos + 3);
}
if(path.line.width > 0) {
var tempPoints = path.points;
path.points = [x,y,x + width,y,x + width,y + height,x,y + height,x,y];
openfl._internal.renderer.opengl.utils.GraphicsRenderer.buildLine(path,bucket.line);
path.points = tempPoints;
}
};
openfl._internal.renderer.opengl.utils.GraphicsRenderer.buildRoundedRectangle = function(path,glStack,localCoords) {
if(localCoords == null) localCoords = false;
var points = path.points.slice();
var x = points[0];
var y = points[1];
var width = points[2];
var height = points[3];
var radius = points[4];
if(localCoords) {
x -= openfl._internal.renderer.opengl.utils.GraphicsRenderer.objectBounds.x;
y -= openfl._internal.renderer.opengl.utils.GraphicsRenderer.objectBounds.y;
}
var recPoints = [];
recPoints.push(x);
recPoints.push(y + radius);
recPoints = recPoints.concat(openfl._internal.renderer.opengl.utils.GraphicsRenderer.quadraticBezierCurve(x,y + height - radius,x,y + height,x + radius,y + height));
recPoints = recPoints.concat(openfl._internal.renderer.opengl.utils.GraphicsRenderer.quadraticBezierCurve(x + width - radius,y + height,x + width,y + height,x + width,y + height - radius));
recPoints = recPoints.concat(openfl._internal.renderer.opengl.utils.GraphicsRenderer.quadraticBezierCurve(x + width,y + radius,x + width,y,x + width - radius,y));
recPoints = recPoints.concat(openfl._internal.renderer.opengl.utils.GraphicsRenderer.quadraticBezierCurve(x + radius,y,x,y,x,y + radius));
var bucket = openfl._internal.renderer.opengl.utils.GraphicsRenderer.prepareBucket(path,glStack);
if(bucket != null) {
var verts = bucket.verts;
var indices = bucket.indices;
var vecPos = verts.length / 2;
var triangles = openfl._internal.renderer.opengl.utils.PolyK.triangulate(recPoints);
var i = 0;
while(i < triangles.length) {
indices.push(triangles[i] + vecPos | 0);
indices.push(triangles[i] + vecPos | 0);
indices.push(triangles[i + 1] + vecPos | 0);
indices.push(triangles[i + 2] + vecPos | 0);
indices.push(triangles[i + 2] + vecPos | 0);
i += 3;
}
i = 0;
while(i < recPoints.length) {
verts.push(recPoints[i]);
verts.push(recPoints[++i]);
i++;
}
}
if(path.line.width > 0) {
var tempPoints = path.points;
path.points = recPoints;
openfl._internal.renderer.opengl.utils.GraphicsRenderer.buildLine(path,bucket.line);
path.points = tempPoints;
}
};
openfl._internal.renderer.opengl.utils.GraphicsRenderer.buildDrawTriangles = function(path,object,glStack,localCoords) {
if(localCoords == null) localCoords = false;
var args = path.type.slice(2);
var vertices = args[0];
var indices = args[1];
var uvtData = args[2];
var culling = args[3];
var colors = args[4];
var blendMode = args[5];
var a;
var b;
var c;
var d;
var tx;
var ty;
if(localCoords) {
a = 1.0;
b = 0.0;
c = 0.0;
d = 1.0;
tx = 0.0;
ty = 0.0;
} else {
a = object.__worldTransform.a;
b = object.__worldTransform.b;
c = object.__worldTransform.c;
d = object.__worldTransform.d;
tx = object.__worldTransform.tx;
ty = object.__worldTransform.ty;
}
var hasColors = colors != null && colors.length > 0;
var bucket = openfl._internal.renderer.opengl.utils.GraphicsRenderer.prepareBucket(path,glStack);
bucket.rawVerts = true;
bucket.glLength = indices.length;
bucket.stride = 8;
var vertsLength = bucket.glLength * bucket.stride;
var verts;
if(bucket.glVerts == null || bucket.glVerts.length < vertsLength) {
verts = new Float32Array(vertsLength);
bucket.glVerts = verts;
} else verts = bucket.glVerts;
var v0 = 0;
var v1 = 0;
var v2 = 0;
var i0 = 0;
var i1 = 0;
var i2 = 0;
var x0 = 0.0;
var y0 = 0.0;
var x1 = 0.0;
var y1 = 0.0;
var x2 = 0.0;
var y2 = 0.0;
var idx = 0;
var color = [1.,1.,1.,1.];
var ctmp = color;
var _g1 = 0;
var _g = indices.length / 3 | 0;
while(_g1 < _g) {
var i = _g1++;
i0 = indices.data[i * 3];
i1 = indices.data[i * 3 + 1];
i2 = indices.data[i * 3 + 2];
v0 = i0 * 2;
v1 = i1 * 2;
v2 = i2 * 2;
x0 = vertices.data[v0];
y0 = vertices.data[v0 + 1];
x1 = vertices.data[v1];
y1 = vertices.data[v1 + 1];
x2 = vertices.data[v2];
y2 = vertices.data[v2 + 1];
if(localCoords) {
x0 -= openfl._internal.renderer.opengl.utils.GraphicsRenderer.objectBounds.x;
y0 -= openfl._internal.renderer.opengl.utils.GraphicsRenderer.objectBounds.y;
x1 -= openfl._internal.renderer.opengl.utils.GraphicsRenderer.objectBounds.x;
y1 -= openfl._internal.renderer.opengl.utils.GraphicsRenderer.objectBounds.y;
x2 -= openfl._internal.renderer.opengl.utils.GraphicsRenderer.objectBounds.x;
y2 -= openfl._internal.renderer.opengl.utils.GraphicsRenderer.objectBounds.y;
}
switch(culling[1]) {
case 2:
if(!((x1 - x0) * (y2 - y0) - (y1 - y0) * (x2 - x0) < 0)) continue;
break;
case 0:
if((x1 - x0) * (y2 - y0) - (y1 - y0) * (x2 - x0) < 0) continue;
break;
default:
}
verts[idx++] = a * x0 + c * y0 + tx;
verts[idx++] = b * x0 + d * y0 + ty;
verts[idx++] = uvtData.data[v0];
verts[idx++] = uvtData.data[v0 + 1];
if(hasColors) {
ctmp = openfl._internal.renderer.opengl.utils.GraphicsRenderer.hex2rgba(colors.data[i0]);
verts[idx++] = ctmp[0];
verts[idx++] = ctmp[1];
verts[idx++] = ctmp[2];
verts[idx++] = ctmp[3];
} else {
verts[idx++] = color[0];
verts[idx++] = color[1];
verts[idx++] = color[2];
verts[idx++] = color[3];
}
verts[idx++] = a * x1 + c * y1 + tx;
verts[idx++] = b * x1 + d * y1 + ty;
verts[idx++] = uvtData.data[v1];
verts[idx++] = uvtData.data[v1 + 1];
if(hasColors) {
ctmp = openfl._internal.renderer.opengl.utils.GraphicsRenderer.hex2rgba(colors.data[i1]);
verts[idx++] = ctmp[0];
verts[idx++] = ctmp[1];
verts[idx++] = ctmp[2];
verts[idx++] = ctmp[3];
} else {
verts[idx++] = color[0];
verts[idx++] = color[1];
verts[idx++] = color[2];
verts[idx++] = color[3];
}
verts[idx++] = a * x2 + c * y2 + tx;
verts[idx++] = b * x2 + d * y2 + ty;
verts[idx++] = uvtData.data[v2];
verts[idx++] = uvtData.data[v2 + 1];
if(hasColors) {
ctmp = openfl._internal.renderer.opengl.utils.GraphicsRenderer.hex2rgba(colors.data[i2]);
verts[idx++] = ctmp[0];
verts[idx++] = ctmp[1];
verts[idx++] = ctmp[2];
verts[idx++] = ctmp[3];
} else {
verts[idx++] = color[0];
verts[idx++] = color[1];
verts[idx++] = color[2];
verts[idx++] = color[3];
}
}
};
openfl._internal.renderer.opengl.utils.GraphicsRenderer.buildDrawTiles = function(path,glStack) {
openfl._internal.renderer.opengl.utils.GraphicsRenderer.prepareBucket(path,glStack);
};
openfl._internal.renderer.opengl.utils.GraphicsRenderer.quadraticBezierCurve = function(fromX,fromY,cpX,cpY,toX,toY) {
var xa;
var ya;
var xb;
var yb;
var x;
var y;
var n = 20;
var points = [];
var getPt = function(n1,n2,perc) {
var diff = n2 - n1;
return n1 + diff * perc;
};
var j = 0.0;
var _g1 = 0;
var _g = n + 1;
while(_g1 < _g) {
var i = _g1++;
j = i / n;
xa = getPt(fromX,cpX,j);
ya = getPt(fromY,cpY,j);
xb = getPt(cpX,toX,j);
yb = getPt(cpY,toY,j);
x = getPt(xa,xb,j);
y = getPt(ya,yb,j);
points.push(x);
points.push(y);
}
return points;
};
openfl._internal.renderer.opengl.utils.GraphicsRenderer.render = function(object,renderSession) {
var graphics = object.__graphics;
var spritebatch = renderSession.spriteBatch;
var dirty = graphics.__dirty;
if(graphics.__commands.length <= 0) return;
if(dirty) openfl._internal.renderer.opengl.utils.GraphicsRenderer.updateGraphics(object,renderSession.gl,object.cacheAsBitmap);
if(object.cacheAsBitmap) {
if(dirty) {
var gl = renderSession.gl;
var bounds = graphics.__bounds;
var texture = graphics.__cachedTexture;
var w = Math.floor(bounds.width + 0.5);
var h = Math.floor(bounds.height + 0.5);
if(texture == null) {
texture = new openfl._internal.renderer.opengl.utils.FilterTexture(gl,w,h,false);
graphics.__cachedTexture = texture;
}
texture.resize(w,h);
gl.bindFramebuffer(gl.FRAMEBUFFER,texture.frameBuffer);
gl.viewport(0,0,w,h);
texture.clear();
openfl._internal.renderer.opengl.utils.GraphicsRenderer.renderGraphics(object,renderSession,new openfl.geom.Point(w / 2,-h / 2),true);
gl.bindFramebuffer(gl.FRAMEBUFFER,null);
gl.viewport(0,0,renderSession.renderer.width,renderSession.renderer.height);
}
if(!spritebatch.drawing) spritebatch.begin(renderSession);
spritebatch.renderCachedGraphics(object);
} else openfl._internal.renderer.opengl.utils.GraphicsRenderer.renderGraphics(object,renderSession,renderSession.projection,false);
};
openfl._internal.renderer.opengl.utils.GraphicsRenderer.renderGraphics = function(object,renderSession,projection,localCoords) {
if(localCoords == null) localCoords = false;
var graphics = object.__graphics;
var gl = renderSession.gl;
var offset = renderSession.offset;
var glStack = graphics.__glStack[openfl._internal.renderer.opengl.GLRenderer.glContextId];
var bucket;
var translationMatrix;
if(localCoords) translationMatrix = openfl.geom.Matrix.__identity; else translationMatrix = object.__worldTransform;
var batchDrawing = renderSession.spriteBatch.drawing;
var _g1 = 0;
var _g = glStack.buckets.length;
while(_g1 < _g) {
var i = _g1++;
batchDrawing = renderSession.spriteBatch.drawing;
bucket = glStack.buckets[i];
var _g2 = bucket.mode;
switch(_g2[1]) {
case 1:case 2:
if(batchDrawing && !localCoords) renderSession.spriteBatch.end();
renderSession.stencilManager.pushBucket(bucket,renderSession,projection,translationMatrix.toArray(true));
var shader = openfl._internal.renderer.opengl.utils.GraphicsRenderer.prepareShader(bucket,renderSession,object,projection,translationMatrix.toArray(false));
openfl._internal.renderer.opengl.utils.GraphicsRenderer.renderFill(bucket,shader,renderSession);
renderSession.stencilManager.popBucket(object,bucket,renderSession);
break;
case 5:
if(batchDrawing && !localCoords) renderSession.spriteBatch.end();
var shader1 = openfl._internal.renderer.opengl.utils.GraphicsRenderer.prepareShader(bucket,renderSession,object,projection,null);
openfl._internal.renderer.opengl.utils.GraphicsRenderer.renderDrawTriangles(bucket,shader1,renderSession);
break;
case 6:
if(!batchDrawing) renderSession.spriteBatch.begin(renderSession);
openfl._internal.renderer.opengl.utils.GraphicsRenderer.renderDrawTiles(object,bucket,renderSession);
break;
default:
}
var _g21 = 0;
var _g3 = bucket.data;
while(_g21 < _g3.length) {
var data = _g3[_g21];
++_g21;
if(data.line != null && data.line.verts.length > 0) {
batchDrawing = renderSession.spriteBatch.drawing;
if(batchDrawing && !localCoords) renderSession.spriteBatch.end();
var shader2 = renderSession.shaderManager.primitiveShader;
renderSession.shaderManager.setShader(shader2);
gl.uniformMatrix3fv(shader2.translationMatrix,false,translationMatrix.toArray(true));
gl.uniform2f(shader2.projectionVector,projection.x,-projection.y);
gl.uniform2f(shader2.offsetVector,-offset.x,-offset.y);
gl.uniform1f(shader2.alpha,object.__worldAlpha);
gl.bindBuffer(gl.ARRAY_BUFFER,data.line.vertsBuffer);
gl.vertexAttribPointer(shader2.aVertexPosition,2,gl.FLOAT,false,24,0);
gl.vertexAttribPointer(shader2.colorAttribute,4,gl.FLOAT,false,24,8);
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,data.line.indexBuffer);
gl.drawElements(gl.TRIANGLE_STRIP,data.line.indices.length,gl.UNSIGNED_SHORT,0);
}
}
batchDrawing = renderSession.spriteBatch.drawing;
if(!batchDrawing && !localCoords) renderSession.spriteBatch.begin(renderSession);
}
};
openfl._internal.renderer.opengl.utils.GraphicsRenderer.updateGraphics = function(object,gl,localCoords) {
if(localCoords == null) localCoords = false;
var graphics = object.__graphics;
openfl._internal.renderer.opengl.utils.GraphicsRenderer.objectPosition.setTo(object.get_x(),object.get_y());
if(graphics.__bounds != null) openfl._internal.renderer.opengl.utils.GraphicsRenderer.objectBounds.copyFrom(graphics.__bounds);
var glStack = null;
if(graphics.__dirty) glStack = openfl._internal.renderer.opengl.utils.DrawPath.getStack(graphics,gl);
graphics.__dirty = false;
var _g = 0;
var _g1 = glStack.buckets;
while(_g < _g1.length) {
var data = _g1[_g];
++_g;
data.reset();
openfl._internal.renderer.opengl.utils.GraphicsRenderer.bucketPool.push(data);
}
glStack.reset();
var _g11 = glStack.lastIndex;
var _g2 = graphics.__drawPaths.length;
while(_g11 < _g2) {
var i = _g11++;
var path = graphics.__drawPaths[i];
{
var _g21 = path.type;
switch(_g21[1]) {
case 0:
openfl._internal.renderer.opengl.utils.GraphicsRenderer.buildComplexPoly(path,glStack,localCoords);
break;
case 1:
var rounded = _g21[2];
if(rounded) openfl._internal.renderer.opengl.utils.GraphicsRenderer.buildRoundedRectangle(path,glStack,localCoords); else openfl._internal.renderer.opengl.utils.GraphicsRenderer.buildRectangle(path,glStack,localCoords);
break;
case 2:case 3:
openfl._internal.renderer.opengl.utils.GraphicsRenderer.buildCircle(path,glStack,localCoords);
break;
case 4:
openfl._internal.renderer.opengl.utils.GraphicsRenderer.buildDrawTriangles(path,object,glStack,localCoords);
break;
case 5:
openfl._internal.renderer.opengl.utils.GraphicsRenderer.prepareBucket(path,glStack);
break;
}
}
glStack.lastIndex++;
}
glStack.upload();
};
openfl._internal.renderer.opengl.utils.GraphicsRenderer.prepareBucket = function(path,glStack) {
var bucket = null;
{
var _g = path.fill;
switch(_g[1]) {
case 1:
var a = _g[3];
var c = _g[2];
bucket = openfl._internal.renderer.opengl.utils.GraphicsRenderer.switchBucket(path.fillIndex,glStack,openfl._internal.renderer.opengl.utils.BucketMode.Fill);
if(c == null) bucket.color = [0,0,0]; else bucket.color = [(c >> 16 & 255) / 255,(c >> 8 & 255) / 255,(c & 255) / 255];
bucket.alpha = a;
bucket.uploadTileBuffer = true;
break;
case 2:
var s = _g[5];
var r = _g[4];
var m = _g[3];
var b = _g[2];
bucket = openfl._internal.renderer.opengl.utils.GraphicsRenderer.switchBucket(path.fillIndex,glStack,openfl._internal.renderer.opengl.utils.BucketMode.PatternFill);
bucket.bitmap = b;
bucket.textureRepeat = r;
bucket.textureSmooth = s;
bucket.texture = b.getTexture(glStack.gl);
bucket.uploadTileBuffer = true;
var tMatrix = bucket.textureMatrix;
tMatrix.identity();
var pMatrix;
if(m == null) pMatrix = new openfl.geom.Matrix(); else pMatrix = new openfl.geom.Matrix(m.a,m.b,m.c,m.d,m.tx,m.ty);
pMatrix = pMatrix.invert();
pMatrix.__translateTransformed(new openfl.geom.Point(-openfl._internal.renderer.opengl.utils.GraphicsRenderer.objectPosition.x,-openfl._internal.renderer.opengl.utils.GraphicsRenderer.objectPosition.y));
var tx = pMatrix.tx / b.width;
var ty = pMatrix.ty / b.height;
tMatrix.concat(pMatrix);
bucket.textureTL.x = tx;
bucket.textureTL.y = ty;
bucket.textureBR.x = tx + 1;
bucket.textureBR.y = ty + 1;
tMatrix.scale(1 / b.width,1 / b.height);
bucket.textureMatrix = tMatrix;
break;
default:
bucket = openfl._internal.renderer.opengl.utils.GraphicsRenderer.switchBucket(path.fillIndex,glStack,openfl._internal.renderer.opengl.utils.BucketMode.Line);
bucket.uploadTileBuffer = false;
}
}
{
var _g1 = path.type;
switch(_g1[1]) {
case 4:
bucket.mode = openfl._internal.renderer.opengl.utils.BucketMode.DrawTriangles;
bucket.uploadTileBuffer = false;
break;
case 5:
bucket.mode = openfl._internal.renderer.opengl.utils.BucketMode.DrawTiles;
bucket.uploadTileBuffer = false;
break;
default:
}
}
bucket.graphicType = path.type;
var bucketData = bucket.getData();
return bucketData;
};
openfl._internal.renderer.opengl.utils.GraphicsRenderer.getBucket = function(glStack,mode) {
var b = openfl._internal.renderer.opengl.utils.GraphicsRenderer.bucketPool.pop();
if(b == null) b = new openfl._internal.renderer.opengl.utils.GLBucket(glStack.gl);
b.mode = mode;
glStack.buckets.push(b);
return b;
};
openfl._internal.renderer.opengl.utils.GraphicsRenderer.switchBucket = function(fillIndex,glStack,mode) {
var bucket;
if(glStack.buckets.length == 0) bucket = openfl._internal.renderer.opengl.utils.GraphicsRenderer.getBucket(glStack,mode); else {
bucket = glStack.buckets[glStack.buckets.length - 1];
if(bucket.fillIndex != fillIndex) bucket = openfl._internal.renderer.opengl.utils.GraphicsRenderer.getBucket(glStack,mode);
}
bucket.dirty = true;
bucket.fillIndex = fillIndex;
return bucket;
};
openfl._internal.renderer.opengl.utils.GraphicsRenderer.prepareShader = function(bucket,renderSession,object,projection,translationMatrix) {
var gl = renderSession.gl;
var offset = renderSession.offset;
var shader = null;
var _g = bucket.mode;
switch(_g[1]) {
case 1:
shader = renderSession.shaderManager.fillShader;
break;
case 2:
shader = renderSession.shaderManager.patternFillShader;
break;
case 5:
shader = renderSession.shaderManager.drawTrianglesShader;
break;
default:
shader = null;
}
if(shader == null) return null;
var newShader = renderSession.shaderManager.setShader(shader);
gl.uniform2f(shader.projectionVector,projection.x,-projection.y);
gl.uniform2f(shader.offsetVector,-offset.x,-offset.y);
gl.uniform1f(shader.alpha,object.__worldAlpha * bucket.alpha);
var _g1 = bucket.mode;
switch(_g1[1]) {
case 1:
gl.uniformMatrix3fv(shader.translationMatrix,false,translationMatrix);
gl.uniform3fv(shader.color,new Float32Array(bucket.color));
break;
case 2:
gl.uniformMatrix3fv(shader.translationMatrix,false,translationMatrix);
gl.uniform1i(shader.sampler,0);
gl.uniform2f(shader.patternTL,bucket.textureTL.x,bucket.textureTL.y);
gl.uniform2f(shader.patternBR,bucket.textureBR.x,bucket.textureBR.y);
gl.uniformMatrix3fv(shader.patternMatrix,false,bucket.textureMatrix.toArray(false));
break;
case 5:
if(bucket.texture != null) {
gl.uniform1i(shader.useTexture,1);
gl.uniform1i(shader.sampler,0);
} else {
gl.uniform1i(shader.useTexture,0);
gl.uniform3fv(shader.color,new Float32Array(bucket.color));
}
break;
default:
}
return shader;
};
openfl._internal.renderer.opengl.utils.GraphicsRenderer.renderFill = function(bucket,shader,renderSession) {
var gl = renderSession.gl;
if(bucket.mode == openfl._internal.renderer.opengl.utils.BucketMode.PatternFill && bucket.texture != null) openfl._internal.renderer.opengl.utils.GraphicsRenderer.bindTexture(gl,bucket);
gl.bindBuffer(gl.ARRAY_BUFFER,bucket.tileBuffer);
gl.vertexAttribPointer(shader.aVertexPosition,4,gl.SHORT,false,0,0);
gl.drawArrays(gl.TRIANGLE_STRIP,0,4);
};
openfl._internal.renderer.opengl.utils.GraphicsRenderer.renderDrawTriangles = function(bucket,shader,renderSession) {
var gl = renderSession.gl;
var _g = 0;
var _g1 = bucket.data;
while(_g < _g1.length) {
var data = _g1[_g];
++_g;
if(data.destroyed) continue;
if(bucket.texture == null) {
} else openfl._internal.renderer.opengl.utils.GraphicsRenderer.bindTexture(gl,bucket);
openfl._internal.renderer.opengl.utils.GraphicsRenderer.bindDrawTrianglesBuffer(gl,shader,data);
gl.drawArrays(gl.TRIANGLES,data.glStart,data.glLength);
}
};
openfl._internal.renderer.opengl.utils.GraphicsRenderer.renderDrawTiles = function(object,bucket,renderSession) {
var args = bucket.graphicType.slice(2);
renderSession.spriteBatch.renderTiles(object,args[0],args[1],args[2],args[3],args[4]);
};
openfl._internal.renderer.opengl.utils.GraphicsRenderer.bindDrawTrianglesBuffer = function(gl,shader,data) {
gl.bindBuffer(gl.ARRAY_BUFFER,data.vertsBuffer);
var stride = data.stride * 4;
gl.vertexAttribPointer(shader.aVertexPosition,2,gl.FLOAT,false,stride,0);
gl.vertexAttribPointer(shader.aTextureCoord,2,gl.FLOAT,false,stride,8);
gl.vertexAttribPointer(shader.colorAttribute,4,gl.FLOAT,false,stride,16);
};
openfl._internal.renderer.opengl.utils.GraphicsRenderer.bindTexture = function(gl,bucket) {
gl.bindTexture(gl.TEXTURE_2D,bucket.texture);
if(bucket.textureRepeat && bucket.bitmap.__image.get_powerOfTwo()) {
gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.REPEAT);
gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.REPEAT);
} else {
gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);
}
if(bucket.textureSmooth) {
gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR);
gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR);
} else {
gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST);
}
};
openfl._internal.renderer.opengl.utils.GraphicsRenderer.isCCW = function(x1,y1,x2,y2,x3,y3) {
return (x2 - x1) * (y3 - y1) - (y2 - y1) * (x3 - x1) < 0;
};
openfl._internal.renderer.opengl.utils.GraphicsRenderer.hex2rgb = function(hex) {
if(hex == null) return [0,0,0]; else return [(hex >> 16 & 255) / 255,(hex >> 8 & 255) / 255,(hex & 255) / 255];
};
openfl._internal.renderer.opengl.utils.GraphicsRenderer.hex2rgba = function(hex) {
if(hex == null) return [1,1,1,1]; else return [(hex >> 16 & 255) / 255,(hex >> 8 & 255) / 255,(hex & 255) / 255,(hex >> 24 & 255) / 255];
};
openfl._internal.renderer.opengl.utils.GLStack = function(gl) {
this.lastIndex = 0;
this.gl = gl;
this.buckets = [];
this.lastIndex = 0;
};
$hxClasses["openfl._internal.renderer.opengl.utils.GLStack"] = openfl._internal.renderer.opengl.utils.GLStack;
openfl._internal.renderer.opengl.utils.GLStack.__name__ = ["openfl","_internal","renderer","opengl","utils","GLStack"];
openfl._internal.renderer.opengl.utils.GLStack.prototype = {
reset: function() {
this.buckets = [];
this.lastIndex = 0;
}
,upload: function() {
var _g = 0;
var _g1 = this.buckets;
while(_g < _g1.length) {
var bucket = _g1[_g];
++_g;
if(bucket.dirty) bucket.upload();
}
}
,__class__: openfl._internal.renderer.opengl.utils.GLStack
};
openfl._internal.renderer.opengl.utils.GLBucket = function(gl) {
this.uploadTileBuffer = true;
this.textureSmooth = true;
this.textureRepeat = false;
this.data = [];
this.fillIndex = 0;
this.gl = gl;
this.color = [0,0,0];
this.lastIndex = 0;
this.alpha = 1;
this.dirty = true;
this.mode = openfl._internal.renderer.opengl.utils.BucketMode.Fill;
this.textureMatrix = new openfl.geom.Matrix();
this.textureTL = new openfl.geom.Point();
this.textureBR = new openfl.geom.Point(1,1);
};
$hxClasses["openfl._internal.renderer.opengl.utils.GLBucket"] = openfl._internal.renderer.opengl.utils.GLBucket;
openfl._internal.renderer.opengl.utils.GLBucket.__name__ = ["openfl","_internal","renderer","opengl","utils","GLBucket"];
openfl._internal.renderer.opengl.utils.GLBucket.prototype = {
getData: function() {
var result = null;
var remove = false;
var _g = 0;
var _g1 = this.data;
while(_g < _g1.length) {
var d = _g1[_g];
++_g;
if(d.destroyed) {
result = d;
remove = true;
break;
}
}
if(result == null) result = new openfl._internal.renderer.opengl.utils.GLBucketData(this.gl);
result.destroyed = false;
result.parent = this;
if(remove) HxOverrides.remove(this.data,result);
this.data.push(result);
return result;
}
,reset: function() {
var _g = 0;
var _g1 = this.data;
while(_g < _g1.length) {
var d = _g1[_g];
++_g;
d.destroy();
}
this.fillIndex = 0;
this.uploadTileBuffer = true;
this.graphicType = openfl._internal.renderer.opengl.utils.GraphicType.Polygon;
}
,upload: function() {
if(this.uploadTileBuffer) {
if(this.tileBuffer == null) {
this.tileBuffer = this.gl.createBuffer();
this.tile = [0,0,0,0,4096,0,1,0,0,4096,0,1,4096,4096,1,1];
this.glTile = new Int16Array(this.tile);
}
this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.tileBuffer);
this.gl.bufferData(this.gl.ARRAY_BUFFER,this.glTile,this.gl.STATIC_DRAW);
this.uploadTileBuffer = false;
}
var _g = 0;
var _g1 = this.data;
while(_g < _g1.length) {
var d = _g1[_g];
++_g;
if(!d.destroyed) d.upload();
}
this.dirty = false;
}
,__class__: openfl._internal.renderer.opengl.utils.GLBucket
};
openfl._internal.renderer.opengl.utils.GLBucketData = function(gl,initLine) {
if(initLine == null) initLine = true;
this.destroyed = false;
this.rawIndices = false;
this.stride = 0;
this.rawVerts = false;
this.lastVertsSize = 0;
this.glStart = 0;
this.glLength = 0;
this.gl = gl;
this.drawMode = gl.TRIANGLE_STRIP;
this.verts = [];
this.vertsBuffer = gl.createBuffer();
this.indices = [];
this.indexBuffer = gl.createBuffer();
if(initLine) this.line = new openfl._internal.renderer.opengl.utils.GLBucketData(gl,false);
};
$hxClasses["openfl._internal.renderer.opengl.utils.GLBucketData"] = openfl._internal.renderer.opengl.utils.GLBucketData;
openfl._internal.renderer.opengl.utils.GLBucketData.__name__ = ["openfl","_internal","renderer","opengl","utils","GLBucketData"];
openfl._internal.renderer.opengl.utils.GLBucketData.prototype = {
destroy: function() {
this.destroyed = true;
this.verts = [];
this.indices = [];
this.glLength = 0;
this.glStart = 0;
this.stride = 0;
this.rawVerts = false;
this.rawIndices = false;
if(this.line != null) this.line.destroy();
}
,upload: function() {
if(this.rawVerts && this.glVerts != null && this.glVerts.length > 0 || this.verts.length > 0) {
if(!this.rawVerts) this.glVerts = new Float32Array(this.verts);
this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.vertsBuffer);
if(this.glVerts.length <= this.lastVertsSize) {
var end = this.glLength * 4 * this.stride;
if(this.glLength > 0 && this.lastVertsSize > end) {
var view = this.glVerts.subarray(0,end);
this.gl.bufferSubData(this.gl.ARRAY_BUFFER,0,view);
view = null;
} else this.gl.bufferSubData(this.gl.ARRAY_BUFFER,0,this.glVerts);
} else {
this.gl.bufferData(this.gl.ARRAY_BUFFER,this.glVerts,this.gl.STREAM_DRAW);
this.lastVertsSize = this.glVerts.length;
}
}
if(this.glLength == 0 && (this.rawIndices && this.glIndices != null && this.glIndices.length > 0 || this.indices.length > 0)) {
if(!this.rawIndices) this.glIndices = new Uint16Array(this.indices);
this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.indexBuffer);
this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER,this.glIndices,this.gl.STREAM_DRAW);
}
if(this.line != null) this.line.upload();
}
,__class__: openfl._internal.renderer.opengl.utils.GLBucketData
};
openfl._internal.renderer.opengl.utils.BucketMode = $hxClasses["openfl._internal.renderer.opengl.utils.BucketMode"] = { __ename__ : ["openfl","_internal","renderer","opengl","utils","BucketMode"], __constructs__ : ["None","Fill","PatternFill","Line","PatternLine","DrawTriangles","DrawTiles"] };
openfl._internal.renderer.opengl.utils.BucketMode.None = ["None",0];
openfl._internal.renderer.opengl.utils.BucketMode.None.toString = $estr;
openfl._internal.renderer.opengl.utils.BucketMode.None.__enum__ = openfl._internal.renderer.opengl.utils.BucketMode;
openfl._internal.renderer.opengl.utils.BucketMode.Fill = ["Fill",1];
openfl._internal.renderer.opengl.utils.BucketMode.Fill.toString = $estr;
openfl._internal.renderer.opengl.utils.BucketMode.Fill.__enum__ = openfl._internal.renderer.opengl.utils.BucketMode;
openfl._internal.renderer.opengl.utils.BucketMode.PatternFill = ["PatternFill",2];
openfl._internal.renderer.opengl.utils.BucketMode.PatternFill.toString = $estr;
openfl._internal.renderer.opengl.utils.BucketMode.PatternFill.__enum__ = openfl._internal.renderer.opengl.utils.BucketMode;
openfl._internal.renderer.opengl.utils.BucketMode.Line = ["Line",3];
openfl._internal.renderer.opengl.utils.BucketMode.Line.toString = $estr;
openfl._internal.renderer.opengl.utils.BucketMode.Line.__enum__ = openfl._internal.renderer.opengl.utils.BucketMode;
openfl._internal.renderer.opengl.utils.BucketMode.PatternLine = ["PatternLine",4];
openfl._internal.renderer.opengl.utils.BucketMode.PatternLine.toString = $estr;
openfl._internal.renderer.opengl.utils.BucketMode.PatternLine.__enum__ = openfl._internal.renderer.opengl.utils.BucketMode;
openfl._internal.renderer.opengl.utils.BucketMode.DrawTriangles = ["DrawTriangles",5];
openfl._internal.renderer.opengl.utils.BucketMode.DrawTriangles.toString = $estr;
openfl._internal.renderer.opengl.utils.BucketMode.DrawTriangles.__enum__ = openfl._internal.renderer.opengl.utils.BucketMode;
openfl._internal.renderer.opengl.utils.BucketMode.DrawTiles = ["DrawTiles",6];
openfl._internal.renderer.opengl.utils.BucketMode.DrawTiles.toString = $estr;
openfl._internal.renderer.opengl.utils.BucketMode.DrawTiles.__enum__ = openfl._internal.renderer.opengl.utils.BucketMode;
openfl._internal.renderer.opengl.utils.GLGraphicsData = function(gl) {
this.indices = [];
this.data = [];
this.lastIndex = 0;
this.mode = 0;
this.dirty = true;
this.alpha = 1.0;
this.tint = [1.0,1.0,1.0];
this.gl = gl;
this.dataBuffer = gl.createBuffer();
this.indexBuffer = gl.createBuffer();
};
$hxClasses["openfl._internal.renderer.opengl.utils.GLGraphicsData"] = openfl._internal.renderer.opengl.utils.GLGraphicsData;
openfl._internal.renderer.opengl.utils.GLGraphicsData.__name__ = ["openfl","_internal","renderer","opengl","utils","GLGraphicsData"];
openfl._internal.renderer.opengl.utils.GLGraphicsData.prototype = {
reset: function() {
this.data = [];
this.indices = [];
this.lastIndex = 0;
}
,upload: function() {
this.glData = new Float32Array(this.data);
this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.dataBuffer);
this.gl.bufferData(this.gl.ARRAY_BUFFER,this.glData,this.gl.STATIC_DRAW);
this.glIndices = new Uint16Array(this.indices);
this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.indexBuffer);
this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER,this.glIndices,this.gl.STATIC_DRAW);
this.dirty = false;
}
,__class__: openfl._internal.renderer.opengl.utils.GLGraphicsData
};
openfl._internal.renderer.opengl.utils.PolyK = function() { };
$hxClasses["openfl._internal.renderer.opengl.utils.PolyK"] = openfl._internal.renderer.opengl.utils.PolyK;
openfl._internal.renderer.opengl.utils.PolyK.__name__ = ["openfl","_internal","renderer","opengl","utils","PolyK"];
openfl._internal.renderer.opengl.utils.PolyK.triangulate = function(p) {
var sign = true;
var n = p.length >> 1;
if(n < 3) return [];
var tgs = [];
var avl;
var _g = [];
var _g1 = 0;
while(_g1 < n) {
var i = _g1++;
_g.push(i);
}
avl = _g;
var i1 = 0;
var al = n;
var earFound = false;
while(al > 3) {
var i0 = avl[i1 % al];
var i11 = avl[(i1 + 1) % al];
var i2 = avl[(i1 + 2) % al];
var ax = p[2 * i0];
var ay = p[2 * i0 + 1];
var bx = p[2 * i11];
var by = p[2 * i11 + 1];
var cx = p[2 * i2];
var cy = p[2 * i2 + 1];
earFound = false;
if(openfl._internal.renderer.opengl.utils.PolyK._convex(ax,ay,bx,by,cx,cy,sign)) {
earFound = true;
var _g11 = 0;
while(_g11 < al) {
var j = _g11++;
var vi = avl[j];
if(vi == i0 || vi == i11 || vi == i2) continue;
if(openfl._internal.renderer.opengl.utils.PolyK._PointInTriangle(p[2 * vi],p[2 * vi + 1],ax,ay,bx,by,cx,cy)) {
earFound = false;
break;
}
}
}
if(earFound) {
tgs.push(i0);
tgs.push(i11);
tgs.push(i2);
avl.splice((i1 + 1) % al,1);
al--;
i1 = 0;
} else if(i1++ > 3 * al) {
if(sign) {
tgs = [];
var _g12 = [];
var _g2 = 0;
while(_g2 < n) {
var k = _g2++;
_g12.push(k);
}
avl = _g12;
i1 = 0;
al = n;
sign = false;
} else return [];
}
}
tgs.push(avl[0]);
tgs.push(avl[1]);
tgs.push(avl[2]);
return tgs;
};
openfl._internal.renderer.opengl.utils.PolyK._PointInTriangle = function(px,py,ax,ay,bx,by,cx,cy) {
var v0x = cx - ax | 0;
var v0y = cy - ay | 0;
var v1x = bx - ax | 0;
var v1y = by - ay | 0;
var v2x = px - ax | 0;
var v2y = py - ay | 0;
var dot00 = v0x * v0x + v0y * v0y;
var dot01 = v0x * v1x + v0y * v1y;
var dot02 = v0x * v2x + v0y * v2y;
var dot11 = v1x * v1x + v1y * v1y;
var dot12 = v1x * v2x + v1y * v2y;
var invDenom = 1 / (dot00 * dot11 - dot01 * dot01);
var u = (dot11 * dot02 - dot01 * dot12) * invDenom;
var v = (dot00 * dot12 - dot01 * dot02) * invDenom;
return u >= 0 && v >= 0 && u + v < 1;
};
openfl._internal.renderer.opengl.utils.PolyK._convex = function(ax,ay,bx,by,cx,cy,sign) {
return (ay - by) * (cx - bx) + (bx - ax) * (cy - by) >= 0 == sign;
};
openfl._internal.renderer.opengl.utils.GraphicType = $hxClasses["openfl._internal.renderer.opengl.utils.GraphicType"] = { __ename__ : ["openfl","_internal","renderer","opengl","utils","GraphicType"], __constructs__ : ["Polygon","Rectangle","Circle","Ellipse","DrawTriangles","DrawTiles"] };
openfl._internal.renderer.opengl.utils.GraphicType.Polygon = ["Polygon",0];
openfl._internal.renderer.opengl.utils.GraphicType.Polygon.toString = $estr;
openfl._internal.renderer.opengl.utils.GraphicType.Polygon.__enum__ = openfl._internal.renderer.opengl.utils.GraphicType;
openfl._internal.renderer.opengl.utils.GraphicType.Rectangle = function(rounded) { var $x = ["Rectangle",1,rounded]; $x.__enum__ = openfl._internal.renderer.opengl.utils.GraphicType; $x.toString = $estr; return $x; };
openfl._internal.renderer.opengl.utils.GraphicType.Circle = ["Circle",2];
openfl._internal.renderer.opengl.utils.GraphicType.Circle.toString = $estr;
openfl._internal.renderer.opengl.utils.GraphicType.Circle.__enum__ = openfl._internal.renderer.opengl.utils.GraphicType;
openfl._internal.renderer.opengl.utils.GraphicType.Ellipse = ["Ellipse",3];
openfl._internal.renderer.opengl.utils.GraphicType.Ellipse.toString = $estr;
openfl._internal.renderer.opengl.utils.GraphicType.Ellipse.__enum__ = openfl._internal.renderer.opengl.utils.GraphicType;
openfl._internal.renderer.opengl.utils.GraphicType.DrawTriangles = function(vertices,indices,uvtData,culling,colors,blendMode) { var $x = ["DrawTriangles",4,vertices,indices,uvtData,culling,colors,blendMode]; $x.__enum__ = openfl._internal.renderer.opengl.utils.GraphicType; $x.toString = $estr; return $x; };
openfl._internal.renderer.opengl.utils.GraphicType.DrawTiles = function(sheet,tileData,smooth,flags,count) { var $x = ["DrawTiles",5,sheet,tileData,smooth,flags,count]; $x.__enum__ = openfl._internal.renderer.opengl.utils.GraphicType; $x.toString = $estr; return $x; };
openfl._internal.renderer.opengl.utils._GraphicsRenderer = {};
openfl._internal.renderer.opengl.utils._GraphicsRenderer.RenderMode_Impl_ = function() { };
$hxClasses["openfl._internal.renderer.opengl.utils._GraphicsRenderer.RenderMode_Impl_"] = openfl._internal.renderer.opengl.utils._GraphicsRenderer.RenderMode_Impl_;
openfl._internal.renderer.opengl.utils._GraphicsRenderer.RenderMode_Impl_.__name__ = ["openfl","_internal","renderer","opengl","utils","_GraphicsRenderer","RenderMode_Impl_"];
openfl._internal.renderer.opengl.utils.MaskManager = function(gl) {
this.maskStack = [];
this.maskPosition = 0;
this.setContext(gl);
this.reverse = false;
this.count = 0;
};
$hxClasses["openfl._internal.renderer.opengl.utils.MaskManager"] = openfl._internal.renderer.opengl.utils.MaskManager;
openfl._internal.renderer.opengl.utils.MaskManager.__name__ = ["openfl","_internal","renderer","opengl","utils","MaskManager"];
openfl._internal.renderer.opengl.utils.MaskManager.prototype = {
destroy: function() {
this.maskStack = null;
this.gl = null;
}
,popMask: function(maskData,renderSession) {
var gl = this.gl;
renderSession.stencilManager.popStencil(maskData,maskData._webGL[openfl._internal.renderer.opengl.GLRenderer.glContextId].data[0],renderSession);
}
,pushMask: function(maskData,renderSession) {
var gl = renderSession.gl;
if(maskData.dirty) openfl._internal.renderer.opengl.utils.GraphicsRenderer.updateGraphics(maskData,gl);
if(maskData._webGL[openfl._internal.renderer.opengl.GLRenderer.glContextId].data.length == 0) return;
renderSession.stencilManager.pushStencil(maskData,maskData._webGL[openfl._internal.renderer.opengl.GLRenderer.glContextId].data[0],renderSession);
}
,setContext: function(gl) {
this.gl = gl;
}
,__class__: openfl._internal.renderer.opengl.utils.MaskManager
};
openfl._internal.renderer.opengl.utils.ShaderManager = function(gl) {
this.maxAttibs = 10;
this.attribState = [];
this.tempAttribState = [];
this.shaderMap = [];
var _g1 = 0;
var _g = this.maxAttibs;
while(_g1 < _g) {
var i = _g1++;
this.attribState[i] = false;
}
this.setContext(gl);
};
$hxClasses["openfl._internal.renderer.opengl.utils.ShaderManager"] = openfl._internal.renderer.opengl.utils.ShaderManager;
openfl._internal.renderer.opengl.utils.ShaderManager.__name__ = ["openfl","_internal","renderer","opengl","utils","ShaderManager"];
openfl._internal.renderer.opengl.utils.ShaderManager.prototype = {
destroy: function() {
this.attribState = null;
this.tempAttribState = null;
this.primitiveShader.destroy();
this.defaultShader.destroy();
this.fastShader.destroy();
this.stripShader.destroy();
this.fillShader.destroy();
this.patternFillShader.destroy();
this.drawTrianglesShader.destroy();
this.gl = null;
}
,setAttribs: function(attribs) {
var _g1 = 0;
var _g = this.tempAttribState.length;
while(_g1 < _g) {
var i = _g1++;
this.tempAttribState[i] = false;
}
var _g11 = 0;
var _g2 = attribs.length;
while(_g11 < _g2) {
var i1 = _g11++;
var attribId = attribs[i1];
this.tempAttribState[attribId] = true;
}
var gl = this.gl;
var _g12 = 0;
var _g3 = this.attribState.length;
while(_g12 < _g3) {
var i2 = _g12++;
if(this.attribState[i2] != this.tempAttribState[i2]) {
this.attribState[i2] = this.tempAttribState[i2];
if(this.tempAttribState[i2]) gl.enableVertexAttribArray(i2); else gl.disableVertexAttribArray(i2);
}
}
}
,setContext: function(gl) {
this.gl = gl;
this.primitiveShader = new openfl._internal.renderer.opengl.shaders.PrimitiveShader(gl);
this.complexPrimitiveShader = new openfl._internal.renderer.opengl.shaders.ComplexPrimitiveShader(gl);
this.defaultShader = new openfl._internal.renderer.opengl.shaders.DefaultShader(gl);
this.fastShader = new openfl._internal.renderer.opengl.shaders.FastShader(gl);
this.stripShader = new openfl._internal.renderer.opengl.shaders.StripShader(gl);
this.fillShader = new openfl._internal.renderer.opengl.shaders.FillShader(gl);
this.patternFillShader = new openfl._internal.renderer.opengl.shaders.PatternFillShader(gl);
this.drawTrianglesShader = new openfl._internal.renderer.opengl.shaders.DrawTrianglesShader(gl);
this.setShader(this.defaultShader);
}
,setShader: function(shader) {
if(this._currentId == shader._UID) return false;
this._currentId = shader._UID;
this.currentShader = shader;
this.gl.useProgram(shader.program);
this.setAttribs(shader.attributes);
return true;
}
,__class__: openfl._internal.renderer.opengl.utils.ShaderManager
};
openfl._internal.renderer.opengl.utils.SpriteBatch = function(gl) {
this.states = [];
this.vertSize = 6;
this.size = Math.floor(Math.pow(2,16) / this.vertSize);
var numVerts = this.size * 4 * this.vertSize;
var numIndices = this.size * 6;
this.vertices = new Float32Array(numVerts);
this.indices = new Uint16Array(numIndices);
this.lastIndexCount = 0;
var i = 0;
var j = 0;
while(i < numIndices) {
this.indices[i] = j;
this.indices[i + 1] = j + 1;
this.indices[i + 2] = j + 2;
this.indices[i + 3] = j;
this.indices[i + 4] = j + 2;
this.indices[i + 5] = j + 3;
i += 6;
j += 4;
}
this.drawing = false;
this.currentBatchSize = 0;
this.currentBaseTexture = null;
this.setContext(gl);
this.dirty = true;
this.currentState = new openfl._internal.renderer.opengl.utils._SpriteBatch.State();
};
$hxClasses["openfl._internal.renderer.opengl.utils.SpriteBatch"] = openfl._internal.renderer.opengl.utils.SpriteBatch;
openfl._internal.renderer.opengl.utils.SpriteBatch.__name__ = ["openfl","_internal","renderer","opengl","utils","SpriteBatch"];
openfl._internal.renderer.opengl.utils.SpriteBatch.prototype = {
begin: function(renderSession) {
this.renderSession = renderSession;
this.shader = renderSession.shaderManager.defaultShader;
this.drawing = true;
this.start();
}
,destroy: function() {
this.vertices = null;
this.indices = null;
this.gl.deleteBuffer(this.vertexBuffer);
this.gl.deleteBuffer(this.indexBuffer);
this.currentBaseTexture = null;
this.gl = null;
}
,end: function() {
this.flush();
this.drawing = false;
}
,flush: function() {
if(this.currentBatchSize == 0) return;
var gl = this.gl;
this.renderSession.shaderManager.setShader(this.renderSession.shaderManager.defaultShader);
if(this.dirty) {
this.dirty = false;
gl.activeTexture(gl.TEXTURE0);
gl.bindBuffer(gl.ARRAY_BUFFER,this.vertexBuffer);
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,this.indexBuffer);
var projection = this.renderSession.projection;
gl.uniform2f(this.shader.projectionVector,projection.x,projection.y);
var stride = this.vertSize * 4;
gl.vertexAttribPointer(this.shader.aVertexPosition,2,gl.FLOAT,false,stride,0);
gl.vertexAttribPointer(this.shader.aTextureCoord,2,gl.FLOAT,false,stride,8);
gl.vertexAttribPointer(this.shader.colorAttribute,2,gl.FLOAT,false,stride,16);
}
if(this.currentBatchSize > this.size * 0.5) gl.bufferSubData(gl.ARRAY_BUFFER,0,this.vertices); else {
var view = this.vertices.subarray(0,this.currentBatchSize * 4 * this.vertSize);
gl.bufferSubData(gl.ARRAY_BUFFER,0,view);
}
var nextState;
var batchSize = 0;
var start = 0;
this.currentState.texture = null;
this.currentState.textureSmooth = true;
this.currentState.blendMode = this.renderSession.blendModeManager.currentBlendMode;
var j = this.currentBatchSize;
var _g = 0;
while(_g < j) {
var i = _g++;
nextState = this.states[i];
if(this.currentState.texture != nextState.texture || this.currentState.blendMode != nextState.blendMode) {
this.renderBatch(this.currentState,batchSize,start);
start = i;
batchSize = 0;
this.currentState.texture = nextState.texture;
this.currentState.textureSmooth = nextState.textureSmooth;
this.currentState.blendMode = nextState.blendMode;
this.renderSession.blendModeManager.setBlendMode(this.currentState.blendMode);
}
batchSize++;
}
this.renderBatch(this.currentState,batchSize,start);
this.currentBatchSize = 0;
}
,render: function(sprite) {
var bitmapData = sprite.bitmapData;
var texture = bitmapData.getTexture(this.gl);
if(bitmapData == null) return;
if(this.currentBatchSize >= this.size) {
this.flush();
this.currentState.texture = texture;
}
var uvs = bitmapData.__uvData;
if(uvs == null) return;
var alpha = sprite.__worldAlpha;
var tint = 16777215;
var aX = 0;
var aY = 0;
var index = this.currentBatchSize * 4 * this.vertSize;
this.fillVertices(index,aX,aY,bitmapData.width,bitmapData.height,tint,alpha,uvs,sprite.__worldTransform);
this.setState(this.currentBatchSize,texture,null,sprite.blendMode);
this.currentBatchSize++;
}
,renderCachedGraphics: function(object) {
var cachedTexture = object.__graphics.__cachedTexture;
if(cachedTexture == null) return;
if(this.currentBatchSize >= this.size) {
this.flush();
this.currentBaseTexture = cachedTexture.texture;
}
var alpha = object.__worldAlpha;
var tint = 16777215;
var aX = 0;
var aY = 0;
var uvs = new openfl.display.TextureUvs();
uvs.x0 = 0;
uvs.y0 = 1;
uvs.x1 = 1;
uvs.y1 = 1;
uvs.x2 = 1;
uvs.y2 = 0;
uvs.x3 = 0;
uvs.y3 = 0;
var index = this.currentBatchSize * 4 * this.vertSize;
var worldTransform = object.__worldTransform.clone();
worldTransform.__translateTransformed(new openfl.geom.Point(object.__graphics.__bounds.x,object.__graphics.__bounds.y));
this.fillVertices(index,aX,aY,cachedTexture.width,cachedTexture.height,tint,alpha,uvs,worldTransform);
this.setState(this.currentBatchSize,cachedTexture.texture,null,object.blendMode);
this.currentBatchSize++;
}
,renderTiles: function(object,sheet,tileData,smooth,flags,count) {
if(count == null) count = -1;
if(flags == null) flags = 0;
if(smooth == null) smooth = false;
var texture = sheet.__bitmap.getTexture(this.gl);
if(texture == null) return;
var useScale = (flags & 1) > 0;
var useRotation = (flags & 2) > 0;
var useTransform = (flags & 16) > 0;
var useRGB = (flags & 4) > 0;
var useAlpha = (flags & 8) > 0;
var useRect = (flags & 32) > 0;
var useOrigin = (flags & 64) > 0;
var blendMode;
var _g = flags & 983040;
switch(_g) {
case 65536:
blendMode = openfl.display.BlendMode.ADD;
break;
case 131072:
blendMode = openfl.display.BlendMode.MULTIPLY;
break;
case 262144:
blendMode = openfl.display.BlendMode.SCREEN;
break;
default:
blendMode = openfl.display.BlendMode.NORMAL;
}
if(useTransform) {
useScale = false;
useRotation = false;
}
var scaleIndex = 0;
var rotationIndex = 0;
var rgbIndex = 0;
var alphaIndex = 0;
var transformIndex = 0;
var numValues = 3;
if(useRect) if(useOrigin) numValues = 8; else numValues = 6;
if(useScale) {
scaleIndex = numValues;
numValues++;
}
if(useRotation) {
rotationIndex = numValues;
numValues++;
}
if(useTransform) {
transformIndex = numValues;
numValues += 4;
}
if(useRGB) {
rgbIndex = numValues;
numValues += 3;
}
if(useAlpha) {
alphaIndex = numValues;
numValues++;
}
var totalCount = tileData.length;
if(count >= 0 && totalCount > count) totalCount = count;
var itemCount = totalCount / numValues | 0;
var iIndex = 0;
var tileID = -1;
var rect = sheet.__rectTile;
var tileUV = sheet.__rectUV;
var center = sheet.__point;
var x = 0.0;
var y = 0.0;
var alpha = 1.0;
var tint = 16777215;
var scale = 1.0;
var rotation = 0.0;
var cosTheta = 1.0;
var sinTheta = 0.0;
var a = 0.0;
var b = 0.0;
var c = 0.0;
var d = 0.0;
var tx = 0.0;
var ty = 0.0;
var ox = 0.0;
var oy = 0.0;
var matrix = new openfl.geom.Matrix();
var oMatrix = object.__worldTransform;
var uvs = new openfl.display.TextureUvs();
var bIndex = 0;
while(iIndex < totalCount) {
if(this.currentBatchSize >= this.size) {
this.flush();
this.currentBaseTexture = texture;
}
x = tileData[iIndex];
y = tileData[iIndex + 1];
if(useRect) {
tileID = -1;
rect.x = tileData[iIndex + 2];
rect.y = tileData[iIndex + 3];
rect.width = tileData[iIndex + 4];
rect.height = tileData[iIndex + 5];
if(useOrigin) {
center.x = tileData[iIndex + 6];
center.y = tileData[iIndex + 7];
} else {
center.x = 0;
center.y = 0;
}
tileUV.setTo(rect.get_left() / sheet.__bitmap.width,rect.get_top() / sheet.__bitmap.height,rect.get_right() / sheet.__bitmap.width,rect.get_bottom() / sheet.__bitmap.height);
} else {
tileID = (tileData[iIndex + 2] == null?0:tileData[iIndex + 2]) | 0;
rect = sheet.__tileRects[tileID];
center = sheet.__centerPoints[tileID];
tileUV = sheet.__tileUVs[tileID];
}
if(rect != null && rect.width > 0 && rect.height > 0 && center != null) {
alpha = 1;
tint = 16777215;
a = 1;
b = 0;
c = 0;
d = 1;
tx = 0;
ty = 0;
scale = 1.0;
rotation = 0.0;
cosTheta = 1.0;
sinTheta = 0.0;
matrix.identity();
if(useAlpha) alpha = tileData[iIndex + alphaIndex];
if(useRGB) tint = (tileData[iIndex + rgbIndex] * 255 | 0) << 16 | (tileData[iIndex + rgbIndex + 1] * 255 | 0) << 8 | (tileData[iIndex + rgbIndex + 2] * 255 | 0);
if(useScale) scale = tileData[iIndex + scaleIndex];
if(useRotation) {
rotation = tileData[iIndex + rotationIndex];
cosTheta = Math.cos(rotation);
sinTheta = Math.sin(rotation);
}
if(useTransform) {
a = tileData[iIndex + transformIndex];
b = tileData[iIndex + transformIndex + 1];
c = tileData[iIndex + transformIndex + 2];
d = tileData[iIndex + transformIndex + 3];
} else {
a = scale * cosTheta;
b = scale * sinTheta;
c = -b;
d = a;
}
ox = center.x * a + center.y * c;
oy = center.x * b + center.y * d;
tx = x - ox;
ty = y - oy;
matrix.a = a * oMatrix.a + b * oMatrix.c;
matrix.b = a * oMatrix.b + b * oMatrix.d;
matrix.c = c * oMatrix.a + d * oMatrix.c;
matrix.d = c * oMatrix.b + d * oMatrix.d;
matrix.tx = tx * oMatrix.a + ty * oMatrix.c;
matrix.ty = tx * oMatrix.b + ty * oMatrix.d;
uvs.x0 = tileUV.x;
uvs.y0 = tileUV.y;
uvs.x1 = tileUV.width;
uvs.y1 = tileUV.y;
uvs.x2 = tileUV.width;
uvs.y2 = tileUV.height;
uvs.x3 = tileUV.x;
uvs.y3 = tileUV.height;
bIndex = this.currentBatchSize * 4 * this.vertSize;
this.fillVertices(bIndex,0,0,rect.width,rect.height,tint,alpha,uvs,matrix);
this.setState(this.currentBatchSize,texture,smooth,blendMode);
this.currentBatchSize++;
}
iIndex += numValues;
}
}
,fillVertices: function(index,aX,aY,width,height,tint,alpha,uvs,matrix) {
var w0;
var w1;
var h0;
var h1;
w0 = width * (1 - aX);
w1 = width * -aX;
h0 = height * (1 - aY);
h1 = height * -aY;
var a = matrix.a;
var b = matrix.b;
var c = matrix.c;
var d = matrix.d;
var tx = matrix.tx;
var ty = matrix.ty;
this.vertices[index++] = a * w1 + c * h1 + tx;
this.vertices[index++] = d * h1 + b * w1 + ty;
this.vertices[index++] = uvs.x0;
this.vertices[index++] = uvs.y0;
this.vertices[index++] = alpha;
this.vertices[index++] = tint;
this.vertices[index++] = a * w0 + c * h1 + tx;
this.vertices[index++] = d * h1 + b * w0 + ty;
this.vertices[index++] = uvs.x1;
this.vertices[index++] = uvs.y1;
this.vertices[index++] = alpha;
this.vertices[index++] = tint;
this.vertices[index++] = a * w0 + c * h0 + tx;
this.vertices[index++] = d * h0 + b * w0 + ty;
this.vertices[index++] = uvs.x2;
this.vertices[index++] = uvs.y2;
this.vertices[index++] = alpha;
this.vertices[index++] = tint;
this.vertices[index++] = a * w1 + c * h0 + tx;
this.vertices[index++] = d * h0 + b * w1 + ty;
this.vertices[index++] = uvs.x3;
this.vertices[index++] = uvs.y3;
this.vertices[index++] = alpha;
this.vertices[index++] = tint;
}
,setState: function(index,texture,smooth,blendMode) {
if(smooth == null) smooth = true;
var state = this.states[this.currentBatchSize];
if(state == null) state = this.states[this.currentBatchSize] = new openfl._internal.renderer.opengl.utils._SpriteBatch.State();
state.texture = texture;
state.textureSmooth = smooth;
state.blendMode = blendMode;
}
,renderBatch: function(state,size,startIndex) {
if(size == 0) return;
this.gl.bindTexture(this.gl.TEXTURE_2D,state.texture);
if(state.textureSmooth) {
this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.LINEAR);
this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.LINEAR);
} else {
this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.NEAREST);
this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.NEAREST);
}
this.gl.drawElements(this.gl.TRIANGLES,size * 6,this.gl.UNSIGNED_SHORT,startIndex * 6 * 2);
this.renderSession.drawCount++;
}
,renderTilingSprite: function(tilingSprite) {
}
,setContext: function(gl) {
this.gl = gl;
this.vertexBuffer = gl.createBuffer();
this.indexBuffer = gl.createBuffer();
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,this.indexBuffer);
gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,this.indices,gl.STATIC_DRAW);
gl.bindBuffer(gl.ARRAY_BUFFER,this.vertexBuffer);
gl.bufferData(gl.ARRAY_BUFFER,this.vertices,gl.DYNAMIC_DRAW);
this.currentBlendMode = null;
}
,start: function() {
this.dirty = true;
}
,stop: function() {
this.flush();
}
,__class__: openfl._internal.renderer.opengl.utils.SpriteBatch
};
openfl._internal.renderer.opengl.utils._SpriteBatch = {};
openfl._internal.renderer.opengl.utils._SpriteBatch.State = function() {
this.textureSmooth = true;
};
$hxClasses["openfl._internal.renderer.opengl.utils._SpriteBatch.State"] = openfl._internal.renderer.opengl.utils._SpriteBatch.State;
openfl._internal.renderer.opengl.utils._SpriteBatch.State.__name__ = ["openfl","_internal","renderer","opengl","utils","_SpriteBatch","State"];
openfl._internal.renderer.opengl.utils._SpriteBatch.State.prototype = {
__class__: openfl._internal.renderer.opengl.utils._SpriteBatch.State
};
openfl._internal.renderer.opengl.utils.StencilManager = function(gl) {
this.stencilStack = [];
this.bucketStack = [];
this.setContext(gl);
this.reverse = true;
this.count = 0;
};
$hxClasses["openfl._internal.renderer.opengl.utils.StencilManager"] = openfl._internal.renderer.opengl.utils.StencilManager;
openfl._internal.renderer.opengl.utils.StencilManager.__name__ = ["openfl","_internal","renderer","opengl","utils","StencilManager"];
openfl._internal.renderer.opengl.utils.StencilManager.prototype = {
prepareGraphics: function(bucketData,renderSession,projection,translationMatrix) {
var offset = renderSession.offset;
var shader = renderSession.shaderManager.fillShader;
renderSession.shaderManager.setShader(shader);
this.gl.uniformMatrix3fv(shader.translationMatrix,false,translationMatrix);
this.gl.uniform2f(shader.projectionVector,projection.x,-projection.y);
this.gl.uniform2f(shader.offsetVector,-offset.x,-offset.y);
this.gl.bindBuffer(this.gl.ARRAY_BUFFER,bucketData.vertsBuffer);
this.gl.vertexAttribPointer(shader.aVertexPosition,2,this.gl.FLOAT,false,8,0);
this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,bucketData.indexBuffer);
}
,pushBucket: function(bucket,renderSession,projection,translationMatrix) {
if(this.bucketStack.length == 0) {
this.gl.enable(this.gl.STENCIL_TEST);
this.gl.clear(this.gl.STENCIL_BUFFER_BIT);
this.gl.stencilMask(255);
}
this.bucketStack.push(bucket);
this.gl.colorMask(false,false,false,false);
this.gl.stencilFunc(this.gl.NEVER,1,255);
this.gl.stencilOp(this.gl.INVERT,this.gl.KEEP,this.gl.KEEP);
this.gl.clear(this.gl.STENCIL_BUFFER_BIT);
var _g = 0;
var _g1 = bucket.data;
while(_g < _g1.length) {
var bucketData = _g1[_g];
++_g;
if(bucketData.destroyed) continue;
this.prepareGraphics(bucketData,renderSession,projection,translationMatrix);
this.gl.drawElements(bucketData.drawMode,bucketData.glIndices.length,this.gl.UNSIGNED_SHORT,0);
}
this.gl.colorMask(true,true,true,true);
this.gl.stencilOp(this.gl.KEEP,this.gl.KEEP,this.gl.KEEP);
this.gl.stencilFunc(this.gl.EQUAL,255,255);
}
,popBucket: function(object,bucket,renderSession) {
this.bucketStack.pop();
if(this.bucketStack.length == 0) this.gl.disable(this.gl.STENCIL_TEST);
}
,bindGraphics: function(object,glData,renderSession) {
var graphics = object.__graphics;
var projection = renderSession.projection;
var offset = renderSession.offset;
if(glData.mode == 1) {
var shader = renderSession.shaderManager.complexPrimitiveShader;
renderSession.shaderManager.setShader(shader);
this.gl.uniformMatrix3fv(shader.translationMatrix,false,object.__worldTransform.toArray(true));
this.gl.uniform2f(shader.projectionVector,projection.x,-projection.y);
this.gl.uniform2f(shader.offsetVector,-offset.x,-offset.y);
this.gl.uniform3fv(shader.tintColor,new Float32Array([1.,1.,1.]));
this.gl.uniform3fv(shader.color,new Float32Array(glData.tint));
this.gl.uniform1f(shader.alpha,object.__worldAlpha * glData.alpha);
this.gl.bindBuffer(this.gl.ARRAY_BUFFER,glData.dataBuffer);
this.gl.vertexAttribPointer(shader.aVertexPosition,2,this.gl.FLOAT,false,8,0);
this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,glData.indexBuffer);
} else {
var shader1 = renderSession.shaderManager.primitiveShader;
renderSession.shaderManager.setShader(shader1);
this.gl.uniformMatrix3fv(shader1.translationMatrix,false,object.__worldTransform.toArray(true));
this.gl.uniform2f(shader1.projectionVector,projection.x,-projection.y);
this.gl.uniform2f(shader1.offsetVector,-offset.x,-offset.y);
this.gl.uniform3fv(shader1.tintColor,new Float32Array([1.,1.,1.]));
this.gl.uniform1f(shader1.alpha,object.__worldAlpha);
this.gl.bindBuffer(this.gl.ARRAY_BUFFER,glData.dataBuffer);
this.gl.vertexAttribPointer(shader1.aVertexPosition,2,this.gl.FLOAT,false,24,0);
this.gl.vertexAttribPointer(shader1.colorAttribute,4,this.gl.FLOAT,false,24,8);
this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,glData.indexBuffer);
}
}
,destroy: function() {
this.stencilStack = null;
this.bucketStack = null;
this.gl = null;
}
,popStencil: function(object,glData,renderSession) {
this.stencilStack.pop();
this.count--;
if(this.stencilStack.length == 0) this.gl.disable(this.gl.STENCIL_TEST); else {
var level = this.count;
this.bindGraphics(object,glData,renderSession);
this.gl.colorMask(false,false,false,false);
if(glData.mode == 1) {
this.reverse = !this.reverse;
if(this.reverse) {
this.gl.stencilFunc(this.gl.EQUAL,255 - (level + 1),255);
this.gl.stencilOp(this.gl.KEEP,this.gl.KEEP,this.gl.INCR);
} else {
this.gl.stencilFunc(this.gl.EQUAL,level + 1,255);
this.gl.stencilOp(this.gl.KEEP,this.gl.KEEP,this.gl.DECR);
}
this.gl.drawElements(this.gl.TRIANGLE_FAN,4,this.gl.UNSIGNED_SHORT,(glData.indices.length - 4) * 2);
this.gl.stencilFunc(this.gl.ALWAYS,0,255);
this.gl.stencilOp(this.gl.KEEP,this.gl.KEEP,this.gl.INVERT);
this.gl.drawElements(this.gl.TRIANGLE_FAN,glData.indices.length - 4,this.gl.UNSIGNED_SHORT,0);
if(!this.reverse) this.gl.stencilFunc(this.gl.EQUAL,255 - level,255); else this.gl.stencilFunc(this.gl.EQUAL,level,255);
} else {
if(!this.reverse) {
this.gl.stencilFunc(this.gl.EQUAL,255 - (level + 1),255);
this.gl.stencilOp(this.gl.KEEP,this.gl.KEEP,this.gl.INCR);
} else {
this.gl.stencilFunc(this.gl.EQUAL,level + 1,255);
this.gl.stencilOp(this.gl.KEEP,this.gl.KEEP,this.gl.DECR);
}
this.gl.drawElements(this.gl.TRIANGLE_STRIP,glData.indices.length,this.gl.UNSIGNED_SHORT,0);
if(!this.reverse) this.gl.stencilFunc(this.gl.EQUAL,255 - level,255); else this.gl.stencilFunc(this.gl.EQUAL,level,255);
}
this.gl.colorMask(true,true,true,true);
this.gl.stencilOp(this.gl.KEEP,this.gl.KEEP,this.gl.KEEP);
}
}
,pushStencil: function(object,glData,renderSession) {
this.bindGraphics(object,glData,renderSession);
if(this.stencilStack.length == 0) {
this.gl.enable(this.gl.STENCIL_TEST);
this.gl.clear(this.gl.STENCIL_BUFFER_BIT);
this.reverse = true;
this.count = 0;
}
this.stencilStack.push(glData);
var level = this.count;
this.gl.colorMask(false,false,false,false);
this.gl.stencilFunc(this.gl.ALWAYS,0,255);
this.gl.stencilOp(this.gl.KEEP,this.gl.KEEP,this.gl.INVERT);
if(glData.mode == 1) {
this.gl.drawElements(this.gl.TRIANGLE_FAN,glData.indices.length - 4,this.gl.UNSIGNED_SHORT,0);
if(this.reverse) {
this.gl.stencilFunc(this.gl.EQUAL,255 - level,255);
this.gl.stencilOp(this.gl.KEEP,this.gl.KEEP,this.gl.DECR);
} else {
this.gl.stencilFunc(this.gl.EQUAL,level,255);
this.gl.stencilOp(this.gl.KEEP,this.gl.KEEP,this.gl.INCR);
}
this.gl.drawElements(this.gl.TRIANGLE_FAN,4,this.gl.UNSIGNED_SHORT,(glData.indices.length - 4) * 2);
if(this.reverse) this.gl.stencilFunc(this.gl.EQUAL,255 - (level + 1),255); else this.gl.stencilFunc(this.gl.EQUAL,level + 1,255);
this.reverse = !this.reverse;
} else {
if(!this.reverse) {
this.gl.stencilFunc(this.gl.EQUAL,255 - level,255);
this.gl.stencilOp(this.gl.KEEP,this.gl.KEEP,this.gl.DECR);
} else {
this.gl.stencilFunc(this.gl.EQUAL,level,255);
this.gl.stencilOp(this.gl.KEEP,this.gl.KEEP,this.gl.INCR);
}
this.gl.drawElements(this.gl.TRIANGLE_STRIP,glData.indices.length,this.gl.UNSIGNED_SHORT,0);
if(!this.reverse) this.gl.stencilFunc(this.gl.EQUAL,255 - (level + 1),255); else this.gl.stencilFunc(this.gl.EQUAL,level + 1,255);
}
this.gl.colorMask(true,true,true,true);
this.gl.stencilOp(this.gl.KEEP,this.gl.KEEP,this.gl.KEEP);
this.count++;
}
,setContext: function(gl) {
this.gl = gl;
}
,__class__: openfl._internal.renderer.opengl.utils.StencilManager
};
openfl.display.Application = function() {
this.__mouseOutStack = [];
lime.app.Application.call(this);
openfl.display.Application.__fixAndroidMath();
openfl.Lib.application = this;
};
$hxClasses["openfl.display.Application"] = openfl.display.Application;
openfl.display.Application.__name__ = ["openfl","display","Application"];
openfl.display.Application.__fixAndroidMath = function() {
if(window.navigator.userAgent.indexOf("Linux; U; Android 4") >= 0) {
var sin = Math.sin;
var cos = Math.cos;
Math.sin = function(x) {
if(x == 0) return 0; else return sin(x);
};
Math.cos = function(x1) {
if(x1 == 0) return 1; else return cos(x1);
};
}
};
openfl.display.Application.__super__ = lime.app.Application;
openfl.display.Application.prototype = $extend(lime.app.Application.prototype,{
convertKeyCode: function(keyCode) {
switch(keyCode) {
case 8:
return 8;
case 9:
return 9;
case 13:
return 13;
case 27:
return 27;
case 32:
return 32;
case 39:
return 222;
case 44:
return 188;
case 45:
return 189;
case 46:
return 190;
case 47:
return 191;
case 48:
return 48;
case 49:
return 49;
case 50:
return 50;
case 51:
return 51;
case 52:
return 52;
case 53:
return 53;
case 54:
return 54;
case 55:
return 55;
case 56:
return 56;
case 57:
return 57;
case 59:
return 186;
case 61:
return 187;
case 91:
return 219;
case 92:
return 220;
case 93:
return 221;
case 96:
return 192;
case 97:
return 65;
case 98:
return 66;
case 99:
return 67;
case 100:
return 68;
case 101:
return 69;
case 102:
return 70;
case 103:
return 71;
case 104:
return 72;
case 105:
return 73;
case 106:
return 74;
case 107:
return 75;
case 108:
return 76;
case 109:
return 77;
case 110:
return 78;
case 111:
return 79;
case 112:
return 80;
case 113:
return 81;
case 114:
return 82;
case 115:
return 83;
case 116:
return 84;
case 117:
return 85;
case 118:
return 86;
case 119:
return 87;
case 120:
return 88;
case 121:
return 89;
case 122:
return 90;
case 127:
return 46;
case 1073741881:
return 20;
case 1073741882:
return 112;
case 1073741883:
return 113;
case 1073741884:
return 114;
case 1073741885:
return 115;
case 1073741886:
return 116;
case 1073741887:
return 117;
case 1073741888:
return 118;
case 1073741889:
return 119;
case 1073741890:
return 120;
case 1073741891:
return 121;
case 1073741892:
return 122;
case 1073741893:
return 123;
case 1073741897:
return 45;
case 1073741898:
return 36;
case 1073741899:
return 33;
case 1073741901:
return 35;
case 1073741902:
return 34;
case 1073741903:
return 39;
case 1073741904:
return 37;
case 1073741905:
return 40;
case 1073741906:
return 38;
case 1073741908:
return 111;
case 1073741909:
return 106;
case 1073741910:
return 109;
case 1073741911:
return 107;
case 1073741912:
return 108;
case 1073741913:
return 97;
case 1073741914:
return 98;
case 1073741915:
return 99;
case 1073741916:
return 100;
case 1073741917:
return 101;
case 1073741918:
return 102;
case 1073741919:
return 103;
case 1073741920:
return 104;
case 1073741921:
return 105;
case 1073741922:
return 96;
case 1073741923:
return 110;
case 1073741928:
return 124;
case 1073741929:
return 125;
case 1073741930:
return 126;
case 1073742048:
return 17;
case 1073742049:
return 16;
case 1073742050:
return 18;
case 1073742052:
return 17;
case 1073742053:
return 16;
case 1073742054:
return 18;
default:
return keyCode;
}
}
,create: function(config) {
lime.app.Application.prototype.create.call(this,config);
this.stage = new openfl.display.Stage(this.windows[0].width,this.windows[0].height,config.background);
this.stage.addChild(openfl.Lib.current);
this.stage.align = openfl.display.StageAlign.TOP_LEFT;
this.stage.scaleMode = openfl.display.StageScaleMode.NO_SCALE;
}
,onKey: function(event) {
var stack = new Array();
if(this.stage.__focus == null) this.stage.__getInteractive(stack); else this.stage.__focus.__getInteractive(stack);
if(stack.length > 0) {
stack.reverse();
this.stage.__fireEvent(event,stack);
}
}
,onKeyDown: function(keyCode,modifier) {
var keyCode1 = this.convertKeyCode(keyCode);
var charCode = keyCode1;
this.onKey(new openfl.events.KeyboardEvent(openfl.events.KeyboardEvent.KEY_DOWN,true,false,charCode,keyCode1,null,lime.ui._KeyModifier.KeyModifier_Impl_.get_ctrlKey(modifier),lime.ui._KeyModifier.KeyModifier_Impl_.get_altKey(modifier),lime.ui._KeyModifier.KeyModifier_Impl_.get_shiftKey(modifier),lime.ui._KeyModifier.KeyModifier_Impl_.get_metaKey(modifier)));
}
,onKeyUp: function(keyCode,modifier) {
var keyCode1 = this.convertKeyCode(keyCode);
var charCode = keyCode1;
this.onKey(new openfl.events.KeyboardEvent(openfl.events.KeyboardEvent.KEY_UP,true,false,charCode,keyCode1,null,lime.ui._KeyModifier.KeyModifier_Impl_.get_ctrlKey(modifier),lime.ui._KeyModifier.KeyModifier_Impl_.get_altKey(modifier),lime.ui._KeyModifier.KeyModifier_Impl_.get_shiftKey(modifier),lime.ui._KeyModifier.KeyModifier_Impl_.get_metaKey(modifier)));
}
,onMouse: function(type,x,y,button) {
if(button > 2) return;
this.stage.__mouseX = x;
this.stage.__mouseY = y;
var stack = [];
var target = null;
var targetPoint = new openfl.geom.Point(x,y);
if(this.stage.__hitTest(x,y,false,stack,true)) target = stack[stack.length - 1]; else {
target = this.stage;
stack = [this.stage];
}
this.stage.__fireEvent(openfl.events.MouseEvent.__create(type,button,target == this.stage?targetPoint:target.globalToLocal(targetPoint),target),stack);
var clickType;
switch(type) {
case openfl.events.MouseEvent.MOUSE_UP:
clickType = openfl.events.MouseEvent.CLICK;
break;
case openfl.events.MouseEvent.MIDDLE_MOUSE_UP:
clickType = openfl.events.MouseEvent.MIDDLE_CLICK;
break;
case openfl.events.MouseEvent.RIGHT_MOUSE_UP:
clickType = openfl.events.MouseEvent.RIGHT_CLICK;
break;
default:
clickType = null;
}
if(clickType != null) {
this.stage.__fireEvent(openfl.events.MouseEvent.__create(clickType,button,target == this.stage?targetPoint:target.globalToLocal(targetPoint),target),stack);
if(type == openfl.events.MouseEvent.MOUSE_UP && (js.Boot.__cast(target , openfl.display.InteractiveObject)).doubleClickEnabled) {
var currentTime = openfl.Lib.getTimer();
if(currentTime - this.__lastClickTime < 500) {
this.stage.__fireEvent(openfl.events.MouseEvent.__create(openfl.events.MouseEvent.DOUBLE_CLICK,button,target == this.stage?targetPoint:target.globalToLocal(targetPoint),target),stack);
this.__lastClickTime = 0;
} else this.__lastClickTime = currentTime;
}
}
if(js.Boot.__instanceof(target,openfl.display.Sprite)) {
var targetSprite = target;
if(targetSprite.buttonMode && targetSprite.useHandCursor) lime.ui.Mouse.set_cursor(lime.ui.MouseCursor.POINTER); else lime.ui.Mouse.set_cursor(lime.ui.MouseCursor.ARROW);
} else if(js.Boot.__instanceof(target,openfl.display.SimpleButton)) {
var targetButton = target;
if(targetButton.useHandCursor) lime.ui.Mouse.set_cursor(lime.ui.MouseCursor.POINTER); else lime.ui.Mouse.set_cursor(lime.ui.MouseCursor.ARROW);
} else if(js.Boot.__instanceof(target,openfl.text.TextField)) {
var targetTextField = target;
if(targetTextField.type == openfl.text.TextFieldType.INPUT) lime.ui.Mouse.set_cursor(lime.ui.MouseCursor.TEXT); else lime.ui.Mouse.set_cursor(lime.ui.MouseCursor.ARROW);
} else lime.ui.Mouse.set_cursor(lime.ui.MouseCursor.ARROW);
var _g = 0;
var _g1 = this.__mouseOutStack;
while(_g < _g1.length) {
var target1 = _g1[_g];
++_g;
if(HxOverrides.indexOf(stack,target1,0) == -1) {
HxOverrides.remove(this.__mouseOutStack,target1);
var localPoint = target1.globalToLocal(targetPoint);
target1.dispatchEvent(new openfl.events.MouseEvent(openfl.events.MouseEvent.MOUSE_OUT,false,false,localPoint.x,localPoint.y,target1));
}
}
var _g2 = 0;
while(_g2 < stack.length) {
var target2 = stack[_g2];
++_g2;
if(HxOverrides.indexOf(this.__mouseOutStack,target2,0) == -1) {
if(target2.hasEventListener(openfl.events.MouseEvent.MOUSE_OVER)) {
var localPoint1 = target2.globalToLocal(targetPoint);
target2.dispatchEvent(new openfl.events.MouseEvent(openfl.events.MouseEvent.MOUSE_OVER,false,false,localPoint1.x,localPoint1.y,target2));
}
if(target2.hasEventListener(openfl.events.MouseEvent.MOUSE_OUT)) this.__mouseOutStack.push(target2);
}
}
if(this.stage.__dragObject != null) this.stage.__drag(targetPoint);
}
,onMouseDown: function(x,y,button) {
var type;
switch(button) {
case 1:
type = openfl.events.MouseEvent.MIDDLE_MOUSE_DOWN;
break;
case 2:
type = openfl.events.MouseEvent.RIGHT_MOUSE_DOWN;
break;
default:
type = openfl.events.MouseEvent.MOUSE_DOWN;
}
this.onMouse(type,x,y,button);
}
,onMouseMove: function(x,y,button) {
this.onMouse(openfl.events.MouseEvent.MOUSE_MOVE,x,y,0);
}
,onMouseUp: function(x,y,button) {
var type;
switch(button) {
case 1:
type = openfl.events.MouseEvent.MIDDLE_MOUSE_UP;
break;
case 2:
type = openfl.events.MouseEvent.RIGHT_MOUSE_UP;
break;
default:
type = openfl.events.MouseEvent.MOUSE_UP;
}
this.onMouse(type,x,y,button);
}
,onTouch: function(type,x,y,id) {
var point = new openfl.geom.Point(x,y);
this.stage.__mouseX = point.x;
this.stage.__mouseY = point.y;
var __stack = [];
var mouseType;
switch(type) {
case "touchBegin":
mouseType = openfl.events.MouseEvent.MOUSE_DOWN;
break;
case "touchMove":
mouseType = openfl.events.MouseEvent.MOUSE_MOVE;
break;
case "touchEnd":
mouseType = openfl.events.MouseEvent.MOUSE_UP;
break;
default:
mouseType = null;
}
if(this.stage.__hitTest(x,y,false,__stack,true)) {
var target = __stack[__stack.length - 1];
var localPoint = target.globalToLocal(point);
var touchEvent = openfl.events.TouchEvent.__create(type,null,localPoint,target);
touchEvent.touchPointID = id;
touchEvent.isPrimaryTouchPoint = true;
var mouseEvent = openfl.events.MouseEvent.__create(mouseType,0,localPoint,target);
mouseEvent.buttonDown = type != "touchEnd";
this.stage.__fireEvent(touchEvent,__stack);
this.stage.__fireEvent(mouseEvent,__stack);
} else {
var touchEvent1 = openfl.events.TouchEvent.__create(type,null,point,this.stage);
touchEvent1.touchPointID = id;
touchEvent1.isPrimaryTouchPoint = true;
var mouseEvent1 = openfl.events.MouseEvent.__create(mouseType,0,point,this.stage);
mouseEvent1.buttonDown = type != "touchEnd";
this.stage.__fireEvent(touchEvent1,[this.stage]);
this.stage.__fireEvent(mouseEvent1,[this.stage]);
}
if(type == "touchMove" && this.stage.__dragObject != null) this.stage.__drag(point);
}
,onTouchMove: function(x,y,id) {
this.onTouch("touchMove",x,y,id);
}
,onTouchEnd: function(x,y,id) {
this.onTouch("touchEnd",x,y,id);
}
,onTouchStart: function(x,y,id) {
this.onTouch("touchBegin",x,y,id);
}
,onWindowActivate: function() {
var event = new openfl.events.Event(openfl.events.Event.ACTIVATE);
this.stage.__broadcast(event,true);
}
,onWindowDeactivate: function() {
var event = new openfl.events.Event(openfl.events.Event.DEACTIVATE);
this.stage.__broadcast(event,true);
}
,onWindowResize: function(width,height) {
this.stage.stageWidth = width;
this.stage.stageHeight = height;
var event = new openfl.events.Event(openfl.events.Event.RESIZE);
this.stage.__broadcast(event,false);
}
,render: function(context) {
this.stage.__render(context);
}
,__class__: openfl.display.Application
});
openfl.display.Bitmap = function(bitmapData,pixelSnapping,smoothing) {
if(smoothing == null) smoothing = false;
openfl.display.DisplayObjectContainer.call(this);
this.bitmapData = bitmapData;
this.pixelSnapping = pixelSnapping;
this.smoothing = smoothing;
if(pixelSnapping == null) this.pixelSnapping = openfl.display.PixelSnapping.AUTO;
};
$hxClasses["openfl.display.Bitmap"] = openfl.display.Bitmap;
openfl.display.Bitmap.__name__ = ["openfl","display","Bitmap"];
openfl.display.Bitmap.__super__ = openfl.display.DisplayObjectContainer;
openfl.display.Bitmap.prototype = $extend(openfl.display.DisplayObjectContainer.prototype,{
__getBounds: function(rect,matrix) {
if(this.bitmapData != null) {
var bounds = new openfl.geom.Rectangle(0,0,this.bitmapData.width,this.bitmapData.height);
bounds = bounds.transform(this.__worldTransform);
rect.__expand(bounds.x,bounds.y,bounds.width,bounds.height);
}
}
,__hitTest: function(x,y,shapeFlag,stack,interactiveOnly) {
if(!this.get_visible() || this.bitmapData == null) return false;
var point = this.globalToLocal(new openfl.geom.Point(x,y));
if(point.x > 0 && point.y > 0 && point.x <= this.bitmapData.width && point.y <= this.bitmapData.height) {
if(stack != null && !interactiveOnly) stack.push(this);
return true;
}
return false;
}
,__renderCanvas: function(renderSession) {
openfl._internal.renderer.canvas.CanvasBitmap.render(this,renderSession);
}
,__renderDOM: function(renderSession) {
if(this.stage != null && this.__worldVisible && this.__renderable && this.bitmapData != null && this.bitmapData.__isValid) {
if(this.bitmapData.__image.buffer.__srcImage != null) openfl._internal.renderer.dom.DOMBitmap.renderImage(this,renderSession); else openfl._internal.renderer.dom.DOMBitmap.renderCanvas(this,renderSession);
} else {
if(this.__image != null) {
renderSession.element.removeChild(this.__image);
this.__image = null;
this.__style = null;
}
if(this.__canvas != null) {
renderSession.element.removeChild(this.__canvas);
this.__canvas = null;
this.__style = null;
}
}
}
,__renderGL: function(renderSession) {
openfl._internal.renderer.opengl.GLBitmap.render(this,renderSession);
}
,__renderMask: function(renderSession) {
renderSession.context.rect(0,0,this.get_width(),this.get_height());
}
,get_height: function() {
if(this.bitmapData != null) return this.bitmapData.height * this.get_scaleY();
return 0;
}
,set_height: function(value) {
if(this.bitmapData != null) {
if(value != this.bitmapData.height) {
if(!this.__transformDirty) {
this.__transformDirty = true;
openfl.display.DisplayObject.__worldTransformDirty++;
}
this.set_scaleY(value / this.bitmapData.height);
}
return value;
}
return 0;
}
,get_width: function() {
if(this.bitmapData != null) return this.bitmapData.width * this.get_scaleX();
return 0;
}
,set_width: function(value) {
if(this.bitmapData != null) {
if(value != this.bitmapData.width) {
if(!this.__transformDirty) {
this.__transformDirty = true;
openfl.display.DisplayObject.__worldTransformDirty++;
}
this.set_scaleX(value / this.bitmapData.width);
}
return value;
}
return 0;
}
,__class__: openfl.display.Bitmap
});
openfl.display.TextureUvs = function() {
this.y3 = 0;
this.y2 = 0;
this.y1 = 0;
this.y0 = 0;
this.x3 = 0;
this.x2 = 0;
this.x1 = 0;
this.x0 = 0;
};
$hxClasses["openfl.display.TextureUvs"] = openfl.display.TextureUvs;
openfl.display.TextureUvs.__name__ = ["openfl","display","TextureUvs"];
openfl.display.TextureUvs.prototype = {
__class__: openfl.display.TextureUvs
};
openfl.display.BlendMode = $hxClasses["openfl.display.BlendMode"] = { __ename__ : ["openfl","display","BlendMode"], __constructs__ : ["ADD","ALPHA","DARKEN","DIFFERENCE","ERASE","HARDLIGHT","INVERT","LAYER","LIGHTEN","MULTIPLY","NORMAL","OVERLAY","SCREEN","SUBTRACT"] };
openfl.display.BlendMode.ADD = ["ADD",0];
openfl.display.BlendMode.ADD.toString = $estr;
openfl.display.BlendMode.ADD.__enum__ = openfl.display.BlendMode;
openfl.display.BlendMode.ALPHA = ["ALPHA",1];
openfl.display.BlendMode.ALPHA.toString = $estr;
openfl.display.BlendMode.ALPHA.__enum__ = openfl.display.BlendMode;
openfl.display.BlendMode.DARKEN = ["DARKEN",2];
openfl.display.BlendMode.DARKEN.toString = $estr;
openfl.display.BlendMode.DARKEN.__enum__ = openfl.display.BlendMode;
openfl.display.BlendMode.DIFFERENCE = ["DIFFERENCE",3];
openfl.display.BlendMode.DIFFERENCE.toString = $estr;
openfl.display.BlendMode.DIFFERENCE.__enum__ = openfl.display.BlendMode;
openfl.display.BlendMode.ERASE = ["ERASE",4];
openfl.display.BlendMode.ERASE.toString = $estr;
openfl.display.BlendMode.ERASE.__enum__ = openfl.display.BlendMode;
openfl.display.BlendMode.HARDLIGHT = ["HARDLIGHT",5];
openfl.display.BlendMode.HARDLIGHT.toString = $estr;
openfl.display.BlendMode.HARDLIGHT.__enum__ = openfl.display.BlendMode;
openfl.display.BlendMode.INVERT = ["INVERT",6];
openfl.display.BlendMode.INVERT.toString = $estr;
openfl.display.BlendMode.INVERT.__enum__ = openfl.display.BlendMode;
openfl.display.BlendMode.LAYER = ["LAYER",7];
openfl.display.BlendMode.LAYER.toString = $estr;
openfl.display.BlendMode.LAYER.__enum__ = openfl.display.BlendMode;
openfl.display.BlendMode.LIGHTEN = ["LIGHTEN",8];
openfl.display.BlendMode.LIGHTEN.toString = $estr;
openfl.display.BlendMode.LIGHTEN.__enum__ = openfl.display.BlendMode;
openfl.display.BlendMode.MULTIPLY = ["MULTIPLY",9];
openfl.display.BlendMode.MULTIPLY.toString = $estr;
openfl.display.BlendMode.MULTIPLY.__enum__ = openfl.display.BlendMode;
openfl.display.BlendMode.NORMAL = ["NORMAL",10];
openfl.display.BlendMode.NORMAL.toString = $estr;
openfl.display.BlendMode.NORMAL.__enum__ = openfl.display.BlendMode;
openfl.display.BlendMode.OVERLAY = ["OVERLAY",11];
openfl.display.BlendMode.OVERLAY.toString = $estr;
openfl.display.BlendMode.OVERLAY.__enum__ = openfl.display.BlendMode;
openfl.display.BlendMode.SCREEN = ["SCREEN",12];
openfl.display.BlendMode.SCREEN.toString = $estr;
openfl.display.BlendMode.SCREEN.__enum__ = openfl.display.BlendMode;
openfl.display.BlendMode.SUBTRACT = ["SUBTRACT",13];
openfl.display.BlendMode.SUBTRACT.toString = $estr;
openfl.display.BlendMode.SUBTRACT.__enum__ = openfl.display.BlendMode;
openfl.display.CapsStyle = $hxClasses["openfl.display.CapsStyle"] = { __ename__ : ["openfl","display","CapsStyle"], __constructs__ : ["NONE","ROUND","SQUARE"] };
openfl.display.CapsStyle.NONE = ["NONE",0];
openfl.display.CapsStyle.NONE.toString = $estr;
openfl.display.CapsStyle.NONE.__enum__ = openfl.display.CapsStyle;
openfl.display.CapsStyle.ROUND = ["ROUND",1];
openfl.display.CapsStyle.ROUND.toString = $estr;
openfl.display.CapsStyle.ROUND.__enum__ = openfl.display.CapsStyle;
openfl.display.CapsStyle.SQUARE = ["SQUARE",2];
openfl.display.CapsStyle.SQUARE.toString = $estr;
openfl.display.CapsStyle.SQUARE.__enum__ = openfl.display.CapsStyle;
openfl.display.DirectRenderer = function(type) {
if(type == null) type = "DirectRenderer";
openfl.display.DisplayObject.call(this);
};
$hxClasses["openfl.display.DirectRenderer"] = openfl.display.DirectRenderer;
openfl.display.DirectRenderer.__name__ = ["openfl","display","DirectRenderer"];
openfl.display.DirectRenderer.__super__ = openfl.display.DisplayObject;
openfl.display.DirectRenderer.prototype = $extend(openfl.display.DisplayObject.prototype,{
get_render: function() {
return this.__render;
}
,set_render: function(value) {
return this.__render = value;
}
,__class__: openfl.display.DirectRenderer
,__properties__: $extend(openfl.display.DisplayObject.prototype.__properties__,{set_render:"set_render",get_render:"get_render"})
});
openfl.display.FrameLabel = function(name,frame) {
openfl.events.EventDispatcher.call(this);
this.__name = name;
this.__frame = frame;
};
$hxClasses["openfl.display.FrameLabel"] = openfl.display.FrameLabel;
openfl.display.FrameLabel.__name__ = ["openfl","display","FrameLabel"];
openfl.display.FrameLabel.__super__ = openfl.events.EventDispatcher;
openfl.display.FrameLabel.prototype = $extend(openfl.events.EventDispatcher.prototype,{
get_frame: function() {
return this.__frame;
}
,get_name: function() {
return this.__name;
}
,__class__: openfl.display.FrameLabel
,__properties__: {get_name:"get_name",get_frame:"get_frame"}
});
openfl.display.GradientType = $hxClasses["openfl.display.GradientType"] = { __ename__ : ["openfl","display","GradientType"], __constructs__ : ["RADIAL","LINEAR"] };
openfl.display.GradientType.RADIAL = ["RADIAL",0];
openfl.display.GradientType.RADIAL.toString = $estr;
openfl.display.GradientType.RADIAL.__enum__ = openfl.display.GradientType;
openfl.display.GradientType.LINEAR = ["LINEAR",1];
openfl.display.GradientType.LINEAR.toString = $estr;
openfl.display.GradientType.LINEAR.__enum__ = openfl.display.GradientType;
openfl.display.Graphics = function() {
this.__visible = true;
this.__glStack = [];
this.__dirty = true;
this.__commands = [];
this.__commands = new Array();
this.__halfStrokeWidth = 0;
this.__positionX = 0;
this.__positionY = 0;
};
$hxClasses["openfl.display.Graphics"] = openfl.display.Graphics;
openfl.display.Graphics.__name__ = ["openfl","display","Graphics"];
openfl.display.Graphics.prototype = {
beginBitmapFill: function(bitmap,matrix,repeat,smooth) {
if(smooth == null) smooth = false;
if(repeat == null) repeat = true;
this.__commands.push(openfl.display.DrawCommand.BeginBitmapFill(bitmap,matrix != null?new openfl.geom.Matrix(matrix.a,matrix.b,matrix.c,matrix.d,matrix.tx,matrix.ty):null,repeat,smooth));
this.__visible = true;
}
,beginFill: function(color,alpha) {
if(alpha == null) alpha = 1;
if(color == null) color = 0;
this.__commands.push(openfl.display.DrawCommand.BeginFill(color & 16777215,alpha));
if(alpha > 0) this.__visible = true;
}
,beginGradientFill: function(type,colors,alphas,ratios,matrix,spreadMethod,interpolationMethod,focalPointRatio) {
openfl.Lib.notImplemented("Graphics.beginGradientFill");
}
,clear: function() {
this.__commands = new Array();
this.__halfStrokeWidth = 0;
if(this.__bounds != null) {
this.__dirty = true;
this.__transformDirty = true;
this.__bounds = null;
}
this.__visible = false;
}
,copyFrom: function(sourceGraphics) {
this.__bounds = sourceGraphics.__bounds.clone();
this.__commands = sourceGraphics.__commands.slice();
this.__dirty = true;
this.__halfStrokeWidth = sourceGraphics.__halfStrokeWidth;
this.__positionX = sourceGraphics.__positionX;
this.__positionY = sourceGraphics.__positionY;
this.__transformDirty = true;
this.__visible = sourceGraphics.__visible;
}
,cubicCurveTo: function(controlX1,controlY1,controlX2,controlY2,anchorX,anchorY) {
this.__inflateBounds(this.__positionX - this.__halfStrokeWidth,this.__positionY - this.__halfStrokeWidth);
this.__inflateBounds(this.__positionX + this.__halfStrokeWidth,this.__positionY + this.__halfStrokeWidth);
this.__inflateBounds(controlX1,controlY1);
this.__inflateBounds(controlX2,controlY2);
this.__positionX = anchorX;
this.__positionY = anchorY;
this.__inflateBounds(this.__positionX - this.__halfStrokeWidth,this.__positionY - this.__halfStrokeWidth);
this.__inflateBounds(this.__positionX + this.__halfStrokeWidth,this.__positionY + this.__halfStrokeWidth);
this.__commands.push(openfl.display.DrawCommand.CubicCurveTo(controlX1,controlY1,controlX2,controlY2,anchorX,anchorY));
this.__dirty = true;
}
,curveTo: function(controlX,controlY,anchorX,anchorY) {
this.__inflateBounds(this.__positionX - this.__halfStrokeWidth,this.__positionY - this.__halfStrokeWidth);
this.__inflateBounds(this.__positionX + this.__halfStrokeWidth,this.__positionY + this.__halfStrokeWidth);
this.__inflateBounds(controlX,controlY);
this.__positionX = anchorX;
this.__positionY = anchorY;
this.__inflateBounds(this.__positionX - this.__halfStrokeWidth,this.__positionY - this.__halfStrokeWidth);
this.__inflateBounds(this.__positionX + this.__halfStrokeWidth,this.__positionY + this.__halfStrokeWidth);
this.__commands.push(openfl.display.DrawCommand.CurveTo(controlX,controlY,anchorX,anchorY));
this.__dirty = true;
}
,drawCircle: function(x,y,radius) {
if(radius <= 0) return;
this.__inflateBounds(x - radius - this.__halfStrokeWidth,y - radius - this.__halfStrokeWidth);
this.__inflateBounds(x + radius + this.__halfStrokeWidth,y + radius + this.__halfStrokeWidth);
this.__commands.push(openfl.display.DrawCommand.DrawCircle(x,y,radius));
this.__dirty = true;
}
,drawEllipse: function(x,y,width,height) {
if(width <= 0 || height <= 0) return;
this.__inflateBounds(x - this.__halfStrokeWidth,y - this.__halfStrokeWidth);
this.__inflateBounds(x + width + this.__halfStrokeWidth,y + height + this.__halfStrokeWidth);
this.__commands.push(openfl.display.DrawCommand.DrawEllipse(x,y,width,height));
this.__dirty = true;
}
,drawGraphicsData: function(graphicsData) {
openfl.Lib.notImplemented("Graphics.drawGraphicsData");
}
,drawPath: function(commands,data,winding) {
var dataIndex = 0;
var _g = 0;
while(_g < commands.length) {
var command = commands.data[_g];
++_g;
switch(command) {
case 1:
this.moveTo(data.data[dataIndex],data.data[dataIndex + 1]);
dataIndex += 2;
break;
case 2:
this.lineTo(data.data[dataIndex],data.data[dataIndex + 1]);
dataIndex += 2;
break;
case 3:
this.curveTo(data.data[dataIndex],data.data[dataIndex + 1],data.data[dataIndex + 2],data.data[dataIndex + 3]);
dataIndex += 4;
break;
case 6:
this.cubicCurveTo(data.data[dataIndex],data.data[dataIndex + 1],data.data[dataIndex + 2],data.data[dataIndex + 3],data.data[dataIndex + 4],data.data[dataIndex + 5]);
dataIndex += 6;
break;
default:
}
}
}
,drawRect: function(x,y,width,height) {
if(width <= 0 || height <= 0) return;
this.__inflateBounds(x - this.__halfStrokeWidth,y - this.__halfStrokeWidth);
this.__inflateBounds(x + width + this.__halfStrokeWidth,y + height + this.__halfStrokeWidth);
this.__commands.push(openfl.display.DrawCommand.DrawRect(x,y,width,height));
this.__dirty = true;
}
,drawRoundRect: function(x,y,width,height,rx,ry) {
if(ry == null) ry = -1;
if(width <= 0 || height <= 0) return;
this.__inflateBounds(x - this.__halfStrokeWidth,y - this.__halfStrokeWidth);
this.__inflateBounds(x + width + this.__halfStrokeWidth,y + height + this.__halfStrokeWidth);
this.__commands.push(openfl.display.DrawCommand.DrawRoundRect(x,y,width,height,rx,ry));
this.__dirty = true;
}
,drawRoundRectComplex: function(x,y,width,height,topLeftRadius,topRightRadius,bottomLeftRadius,bottomRightRadius) {
openfl.Lib.notImplemented("Graphics.drawRoundRectComplex");
}
,drawTiles: function(sheet,tileData,smooth,flags,count) {
if(count == null) count = -1;
if(flags == null) flags = 0;
if(smooth == null) smooth = false;
this.__inflateBounds(0,0);
this.__inflateBounds(openfl.Lib.current.stage.stageWidth,openfl.Lib.current.stage.stageHeight);
this.__commands.push(openfl.display.DrawCommand.DrawTiles(sheet,tileData,smooth,flags,count));
this.__dirty = true;
this.__visible = true;
}
,drawTriangles: function(vertices,indices,uvtData,culling,colors,blendMode) {
if(blendMode == null) blendMode = 0;
var vlen = vertices.length / 2 | 0;
if(culling == null) culling = openfl.display.TriangleCulling.NONE;
if(indices == null) {
if(vlen % 3 != 0) throw new openfl.errors.ArgumentError("Not enough vertices to close a triangle.");
var this1;
this1 = new openfl.VectorData();
var this2;
this2 = new Array(0);
this1.data = this2;
this1.length = 0;
this1.fixed = false;
indices = this1;
var _g = 0;
while(_g < vlen) {
var i = _g++;
if(!indices.fixed) {
indices.length++;
if(indices.data.length < indices.length) {
var data;
var this3;
this3 = new Array(indices.data.length + 10);
data = this3;
haxe.ds._Vector.Vector_Impl_.blit(indices.data,0,data,0,indices.data.length);
indices.data = data;
}
indices.data[indices.length - 1] = i;
}
indices.length;
}
}
this.__inflateBounds(0,0);
var tmpx = Math.NEGATIVE_INFINITY;
var tmpy = Math.NEGATIVE_INFINITY;
var maxX = Math.NEGATIVE_INFINITY;
var maxY = Math.NEGATIVE_INFINITY;
var _g1 = 0;
while(_g1 < vlen) {
var i1 = _g1++;
tmpx = vertices.data[i1 * 2];
tmpy = vertices.data[i1 * 2 + 1];
if(maxX < tmpx) maxX = tmpx;
if(maxY < tmpy) maxY = tmpy;
}
this.__inflateBounds(maxX,maxY);
this.__commands.push(openfl.display.DrawCommand.DrawTriangles(vertices,indices,uvtData,culling,colors,blendMode));
this.__dirty = true;
this.__visible = true;
}
,endFill: function() {
this.__commands.push(openfl.display.DrawCommand.EndFill);
}
,lineBitmapStyle: function(bitmap,matrix,repeat,smooth) {
if(smooth == null) smooth = false;
if(repeat == null) repeat = true;
openfl.Lib.notImplemented("Graphics.lineBitmapStyle");
}
,lineGradientStyle: function(type,colors,alphas,ratios,matrix,spreadMethod,interpolationMethod,focalPointRatio) {
openfl.Lib.notImplemented("Graphics.lineGradientStyle");
}
,lineStyle: function(thickness,color,alpha,pixelHinting,scaleMode,caps,joints,miterLimit) {
if(thickness != null) this.__halfStrokeWidth = thickness / 2; else this.__halfStrokeWidth = 0;
this.__commands.push(openfl.display.DrawCommand.LineStyle(thickness,color,alpha,pixelHinting,scaleMode,caps,joints,miterLimit));
if(thickness != null) this.__visible = true;
}
,lineTo: function(x,y) {
this.__inflateBounds(this.__positionX - this.__halfStrokeWidth,this.__positionY - this.__halfStrokeWidth);
this.__inflateBounds(this.__positionX + this.__halfStrokeWidth,this.__positionY + this.__halfStrokeWidth);
this.__positionX = x;
this.__positionY = y;
this.__inflateBounds(this.__positionX - this.__halfStrokeWidth,this.__positionY - this.__halfStrokeWidth);
this.__inflateBounds(this.__positionX + this.__halfStrokeWidth,this.__positionY + this.__halfStrokeWidth);
this.__commands.push(openfl.display.DrawCommand.LineTo(x,y));
this.__dirty = true;
}
,moveTo: function(x,y) {
this.__positionX = x;
this.__positionY = y;
this.__commands.push(openfl.display.DrawCommand.MoveTo(x,y));
}
,__getBounds: function(rect,matrix) {
if(this.__bounds == null) return;
var bounds = this.__bounds.clone().transform(matrix);
rect.__expand(bounds.x,bounds.y,bounds.width,bounds.height);
}
,__hitTest: function(x,y,shapeFlag,matrix) {
if(this.__bounds == null) return false;
var bounds = this.__bounds.clone().transform(matrix);
return x > bounds.x && y > bounds.y && x <= bounds.get_right() && y <= bounds.get_bottom();
}
,__inflateBounds: function(x,y) {
if(this.__bounds == null) {
this.__bounds = new openfl.geom.Rectangle(x,y,0,0);
this.__transformDirty = true;
return;
}
if(x < this.__bounds.x) {
this.__bounds.width += this.__bounds.x - x;
this.__bounds.x = x;
this.__transformDirty = true;
}
if(y < this.__bounds.y) {
this.__bounds.height += this.__bounds.y - y;
this.__bounds.y = y;
this.__transformDirty = true;
}
if(x > this.__bounds.x + this.__bounds.width) this.__bounds.width = x - this.__bounds.x;
if(y > this.__bounds.y + this.__bounds.height) this.__bounds.height = y - this.__bounds.y;
}
,__class__: openfl.display.Graphics
};
openfl.display.DrawCommand = $hxClasses["openfl.display.DrawCommand"] = { __ename__ : ["openfl","display","DrawCommand"], __constructs__ : ["BeginBitmapFill","BeginFill","CubicCurveTo","CurveTo","DrawCircle","DrawEllipse","DrawRect","DrawRoundRect","DrawTiles","DrawTriangles","EndFill","LineStyle","LineTo","MoveTo"] };
openfl.display.DrawCommand.BeginBitmapFill = function(bitmap,matrix,repeat,smooth) { var $x = ["BeginBitmapFill",0,bitmap,matrix,repeat,smooth]; $x.__enum__ = openfl.display.DrawCommand; $x.toString = $estr; return $x; };
openfl.display.DrawCommand.BeginFill = function(color,alpha) { var $x = ["BeginFill",1,color,alpha]; $x.__enum__ = openfl.display.DrawCommand; $x.toString = $estr; return $x; };
openfl.display.DrawCommand.CubicCurveTo = function(controlX1,controlY1,controlX2,controlY2,anchorX,anchorY) { var $x = ["CubicCurveTo",2,controlX1,controlY1,controlX2,controlY2,anchorX,anchorY]; $x.__enum__ = openfl.display.DrawCommand; $x.toString = $estr; return $x; };
openfl.display.DrawCommand.CurveTo = function(controlX,controlY,anchorX,anchorY) { var $x = ["CurveTo",3,controlX,controlY,anchorX,anchorY]; $x.__enum__ = openfl.display.DrawCommand; $x.toString = $estr; return $x; };
openfl.display.DrawCommand.DrawCircle = function(x,y,radius) { var $x = ["DrawCircle",4,x,y,radius]; $x.__enum__ = openfl.display.DrawCommand; $x.toString = $estr; return $x; };
openfl.display.DrawCommand.DrawEllipse = function(x,y,width,height) { var $x = ["DrawEllipse",5,x,y,width,height]; $x.__enum__ = openfl.display.DrawCommand; $x.toString = $estr; return $x; };
openfl.display.DrawCommand.DrawRect = function(x,y,width,height) { var $x = ["DrawRect",6,x,y,width,height]; $x.__enum__ = openfl.display.DrawCommand; $x.toString = $estr; return $x; };
openfl.display.DrawCommand.DrawRoundRect = function(x,y,width,height,rx,ry) { var $x = ["DrawRoundRect",7,x,y,width,height,rx,ry]; $x.__enum__ = openfl.display.DrawCommand; $x.toString = $estr; return $x; };
openfl.display.DrawCommand.DrawTiles = function(sheet,tileData,smooth,flags,count) { var $x = ["DrawTiles",8,sheet,tileData,smooth,flags,count]; $x.__enum__ = openfl.display.DrawCommand; $x.toString = $estr; return $x; };
openfl.display.DrawCommand.DrawTriangles = function(vertices,indices,uvtData,culling,colors,blendMode) { var $x = ["DrawTriangles",9,vertices,indices,uvtData,culling,colors,blendMode]; $x.__enum__ = openfl.display.DrawCommand; $x.toString = $estr; return $x; };
openfl.display.DrawCommand.EndFill = ["EndFill",10];
openfl.display.DrawCommand.EndFill.toString = $estr;
openfl.display.DrawCommand.EndFill.__enum__ = openfl.display.DrawCommand;
openfl.display.DrawCommand.LineStyle = function(thickness,color,alpha,pixelHinting,scaleMode,caps,joints,miterLimit) { var $x = ["LineStyle",11,thickness,color,alpha,pixelHinting,scaleMode,caps,joints,miterLimit]; $x.__enum__ = openfl.display.DrawCommand; $x.toString = $estr; return $x; };
openfl.display.DrawCommand.LineTo = function(x,y) { var $x = ["LineTo",12,x,y]; $x.__enum__ = openfl.display.DrawCommand; $x.toString = $estr; return $x; };
openfl.display.DrawCommand.MoveTo = function(x,y) { var $x = ["MoveTo",13,x,y]; $x.__enum__ = openfl.display.DrawCommand; $x.toString = $estr; return $x; };
openfl.display.GraphicsPathCommand = function() { };
$hxClasses["openfl.display.GraphicsPathCommand"] = openfl.display.GraphicsPathCommand;
openfl.display.GraphicsPathCommand.__name__ = ["openfl","display","GraphicsPathCommand"];
openfl.display.GraphicsPathWinding = $hxClasses["openfl.display.GraphicsPathWinding"] = { __ename__ : ["openfl","display","GraphicsPathWinding"], __constructs__ : ["EVEN_ODD","NON_ZERO"] };
openfl.display.GraphicsPathWinding.EVEN_ODD = ["EVEN_ODD",0];
openfl.display.GraphicsPathWinding.EVEN_ODD.toString = $estr;
openfl.display.GraphicsPathWinding.EVEN_ODD.__enum__ = openfl.display.GraphicsPathWinding;
openfl.display.GraphicsPathWinding.NON_ZERO = ["NON_ZERO",1];
openfl.display.GraphicsPathWinding.NON_ZERO.toString = $estr;
openfl.display.GraphicsPathWinding.NON_ZERO.__enum__ = openfl.display.GraphicsPathWinding;
openfl.display.IGraphicsData = function() { };
$hxClasses["openfl.display.IGraphicsData"] = openfl.display.IGraphicsData;
openfl.display.IGraphicsData.__name__ = ["openfl","display","IGraphicsData"];
openfl.display.IGraphicsData.prototype = {
__class__: openfl.display.IGraphicsData
};
openfl.display.GraphicsDataType = $hxClasses["openfl.display.GraphicsDataType"] = { __ename__ : ["openfl","display","GraphicsDataType"], __constructs__ : ["STROKE","SOLID","GRADIENT","PATH","BITMAP","END"] };
openfl.display.GraphicsDataType.STROKE = ["STROKE",0];
openfl.display.GraphicsDataType.STROKE.toString = $estr;
openfl.display.GraphicsDataType.STROKE.__enum__ = openfl.display.GraphicsDataType;
openfl.display.GraphicsDataType.SOLID = ["SOLID",1];
openfl.display.GraphicsDataType.SOLID.toString = $estr;
openfl.display.GraphicsDataType.SOLID.__enum__ = openfl.display.GraphicsDataType;
openfl.display.GraphicsDataType.GRADIENT = ["GRADIENT",2];
openfl.display.GraphicsDataType.GRADIENT.toString = $estr;
openfl.display.GraphicsDataType.GRADIENT.__enum__ = openfl.display.GraphicsDataType;
openfl.display.GraphicsDataType.PATH = ["PATH",3];
openfl.display.GraphicsDataType.PATH.toString = $estr;
openfl.display.GraphicsDataType.PATH.__enum__ = openfl.display.GraphicsDataType;
openfl.display.GraphicsDataType.BITMAP = ["BITMAP",4];
openfl.display.GraphicsDataType.BITMAP.toString = $estr;
openfl.display.GraphicsDataType.BITMAP.__enum__ = openfl.display.GraphicsDataType;
openfl.display.GraphicsDataType.END = ["END",5];
openfl.display.GraphicsDataType.END.toString = $estr;
openfl.display.GraphicsDataType.END.__enum__ = openfl.display.GraphicsDataType;
openfl.display.InterpolationMethod = $hxClasses["openfl.display.InterpolationMethod"] = { __ename__ : ["openfl","display","InterpolationMethod"], __constructs__ : ["RGB","LINEAR_RGB"] };
openfl.display.InterpolationMethod.RGB = ["RGB",0];
openfl.display.InterpolationMethod.RGB.toString = $estr;
openfl.display.InterpolationMethod.RGB.__enum__ = openfl.display.InterpolationMethod;
openfl.display.InterpolationMethod.LINEAR_RGB = ["LINEAR_RGB",1];
openfl.display.InterpolationMethod.LINEAR_RGB.toString = $estr;
openfl.display.InterpolationMethod.LINEAR_RGB.__enum__ = openfl.display.InterpolationMethod;
openfl.display.JPEGEncoderOptions = function(quality) {
if(quality == null) quality = 80;
this.quality = quality;
};
$hxClasses["openfl.display.JPEGEncoderOptions"] = openfl.display.JPEGEncoderOptions;
openfl.display.JPEGEncoderOptions.__name__ = ["openfl","display","JPEGEncoderOptions"];
openfl.display.JPEGEncoderOptions.prototype = {
__class__: openfl.display.JPEGEncoderOptions
};
openfl.display.JointStyle = $hxClasses["openfl.display.JointStyle"] = { __ename__ : ["openfl","display","JointStyle"], __constructs__ : ["MITER","ROUND","BEVEL"] };
openfl.display.JointStyle.MITER = ["MITER",0];
openfl.display.JointStyle.MITER.toString = $estr;
openfl.display.JointStyle.MITER.__enum__ = openfl.display.JointStyle;
openfl.display.JointStyle.ROUND = ["ROUND",1];
openfl.display.JointStyle.ROUND.toString = $estr;
openfl.display.JointStyle.ROUND.__enum__ = openfl.display.JointStyle;
openfl.display.JointStyle.BEVEL = ["BEVEL",2];
openfl.display.JointStyle.BEVEL.toString = $estr;
openfl.display.JointStyle.BEVEL.__enum__ = openfl.display.JointStyle;
openfl.display.LineScaleMode = $hxClasses["openfl.display.LineScaleMode"] = { __ename__ : ["openfl","display","LineScaleMode"], __constructs__ : ["HORIZONTAL","NONE","NORMAL","VERTICAL"] };
openfl.display.LineScaleMode.HORIZONTAL = ["HORIZONTAL",0];
openfl.display.LineScaleMode.HORIZONTAL.toString = $estr;
openfl.display.LineScaleMode.HORIZONTAL.__enum__ = openfl.display.LineScaleMode;
openfl.display.LineScaleMode.NONE = ["NONE",1];
openfl.display.LineScaleMode.NONE.toString = $estr;
openfl.display.LineScaleMode.NONE.__enum__ = openfl.display.LineScaleMode;
openfl.display.LineScaleMode.NORMAL = ["NORMAL",2];
openfl.display.LineScaleMode.NORMAL.toString = $estr;
openfl.display.LineScaleMode.NORMAL.__enum__ = openfl.display.LineScaleMode;
openfl.display.LineScaleMode.VERTICAL = ["VERTICAL",3];
openfl.display.LineScaleMode.VERTICAL.toString = $estr;
openfl.display.LineScaleMode.VERTICAL.__enum__ = openfl.display.LineScaleMode;
openfl.display.Loader = function() {
openfl.display.Sprite.call(this);
this.contentLoaderInfo = openfl.display.LoaderInfo.create(this);
};
$hxClasses["openfl.display.Loader"] = openfl.display.Loader;
openfl.display.Loader.__name__ = ["openfl","display","Loader"];
openfl.display.Loader.__super__ = openfl.display.Sprite;
openfl.display.Loader.prototype = $extend(openfl.display.Sprite.prototype,{
close: function() {
openfl.Lib.notImplemented("Loader.close");
}
,load: function(request,context) {
var extension = "";
var parts = request.url.split(".");
if(parts.length > 0) extension = parts[parts.length - 1].toLowerCase();
if(extension.indexOf("?") != -1) extension = extension.split("?")[0];
var transparent = true;
this.contentLoaderInfo.url = request.url;
if(request.contentType == null && request.contentType != "") switch(extension) {
case "swf":
this.contentLoaderInfo.contentType = "application/x-shockwave-flash";
break;
case "jpg":case "jpeg":
transparent = false;
this.contentLoaderInfo.contentType = "image/jpeg";
break;
case "png":
this.contentLoaderInfo.contentType = "image/png";
break;
case "gif":
this.contentLoaderInfo.contentType = "image/gif";
break;
default:
this.contentLoaderInfo.contentType = "application/x-www-form-urlencoded";
} else this.contentLoaderInfo.contentType = request.contentType;
openfl.display.BitmapData.fromFile(request.url,$bind(this,this.BitmapData_onLoad),$bind(this,this.BitmapData_onError));
}
,loadBytes: function(buffer) {
openfl.display.BitmapData.fromBytes(buffer,null,$bind(this,this.BitmapData_onLoad));
}
,unload: function() {
if(this.get_numChildren() > 0) {
while(this.get_numChildren() > 0) this.removeChildAt(0);
this.content = null;
this.contentLoaderInfo.url = null;
this.contentLoaderInfo.contentType = null;
this.contentLoaderInfo.content = null;
this.contentLoaderInfo.bytesLoaded = 0;
this.contentLoaderInfo.bytesTotal = 0;
this.contentLoaderInfo.width = 0;
this.contentLoaderInfo.height = 0;
var event = new openfl.events.Event(openfl.events.Event.UNLOAD);
event.currentTarget = this;
this.dispatchEvent(event);
}
}
,unloadAndStop: function(gc) {
if(gc == null) gc = true;
openfl.Lib.notImplemented("Loader.unloadAndStop");
}
,BitmapData_onLoad: function(bitmapData) {
this.contentLoaderInfo.content = new openfl.display.Bitmap(bitmapData);
this.content = this.contentLoaderInfo.content;
this.addChild(this.contentLoaderInfo.content);
var event = new openfl.events.Event(openfl.events.Event.COMPLETE);
event.target = this.contentLoaderInfo;
event.currentTarget = this.contentLoaderInfo;
this.contentLoaderInfo.dispatchEvent(event);
}
,BitmapData_onError: function() {
var event = new openfl.events.IOErrorEvent(openfl.events.IOErrorEvent.IO_ERROR);
event.target = this.contentLoaderInfo;
event.currentTarget = this.contentLoaderInfo;
this.contentLoaderInfo.dispatchEvent(event);
}
,__class__: openfl.display.Loader
});
openfl.display.OpenGLView = function() {
openfl.display.DirectRenderer.call(this,"OpenGLView");
if(!this.__added) {
this.__added = true;
null;
}
};
$hxClasses["openfl.display.OpenGLView"] = openfl.display.OpenGLView;
openfl.display.OpenGLView.__name__ = ["openfl","display","OpenGLView"];
openfl.display.OpenGLView.__properties__ = {get_isSupported:"get_isSupported"}
openfl.display.OpenGLView.isSupported = null;
openfl.display.OpenGLView.get_isSupported = function() {
if(!window.WebGLRenderingContext) return false;
if(lime.graphics.opengl.GL.context != null) return true; else {
var canvas = window.document.createElement("canvas");
var context = canvas.getContext("webgl");
if(context == null) context = canvas.getContext("experimental-webgl");
return context != null;
}
return true;
};
openfl.display.OpenGLView.__super__ = openfl.display.DirectRenderer;
openfl.display.OpenGLView.prototype = $extend(openfl.display.DirectRenderer.prototype,{
__renderCanvas: function(renderSession) {
}
,__renderDOM: function(renderSession) {
if(this.stage != null && this.__worldVisible && this.__renderable) {
if(!this.__added) {
renderSession.element.appendChild(this.__canvas);
this.__added = true;
openfl._internal.renderer.dom.DOMRenderer.initializeElement(this,this.__canvas,renderSession);
}
if(this.__context != null) {
var rect = null;
if(this.get_scrollRect() == null) rect = new openfl.geom.Rectangle(0,0,this.stage.stageWidth,this.stage.stageHeight); else rect = new openfl.geom.Rectangle(this.get_x() + this.get_scrollRect().x,this.get_y() + this.get_scrollRect().y,this.get_scrollRect().width,this.get_scrollRect().height);
if(this.__render != null) this.__render(rect);
}
} else if(this.__added) {
renderSession.element.removeChild(this.__canvas);
this.__added = false;
}
}
,__renderGL: function(renderSession) {
if(this.stage != null && this.__renderable) {
var rect = null;
if(this.get_scrollRect() == null) rect = new openfl.geom.Rectangle(0,0,this.stage.stageWidth,this.stage.stageHeight); else rect = new openfl.geom.Rectangle(this.get_x() + this.get_scrollRect().x,this.get_y() + this.get_scrollRect().y,this.get_scrollRect().width,this.get_scrollRect().height);
if(this.__render != null) this.__render(rect);
}
}
,__class__: openfl.display.OpenGLView
});
openfl.display.PNGEncoderOptions = function(fastCompression) {
if(fastCompression == null) fastCompression = false;
this.fastCompression = fastCompression;
};
$hxClasses["openfl.display.PNGEncoderOptions"] = openfl.display.PNGEncoderOptions;
openfl.display.PNGEncoderOptions.__name__ = ["openfl","display","PNGEncoderOptions"];
openfl.display.PNGEncoderOptions.prototype = {
__class__: openfl.display.PNGEncoderOptions
};
openfl.display.PixelSnapping = $hxClasses["openfl.display.PixelSnapping"] = { __ename__ : ["openfl","display","PixelSnapping"], __constructs__ : ["NEVER","AUTO","ALWAYS"] };
openfl.display.PixelSnapping.NEVER = ["NEVER",0];
openfl.display.PixelSnapping.NEVER.toString = $estr;
openfl.display.PixelSnapping.NEVER.__enum__ = openfl.display.PixelSnapping;
openfl.display.PixelSnapping.AUTO = ["AUTO",1];
openfl.display.PixelSnapping.AUTO.toString = $estr;
openfl.display.PixelSnapping.AUTO.__enum__ = openfl.display.PixelSnapping;
openfl.display.PixelSnapping.ALWAYS = ["ALWAYS",2];
openfl.display.PixelSnapping.ALWAYS.toString = $estr;
openfl.display.PixelSnapping.ALWAYS.__enum__ = openfl.display.PixelSnapping;
openfl.display.Preloader = function(display) {
lime.app.Preloader.call(this);
if(display != null) {
this.display = display;
openfl.Lib.current.addChild(display);
if(js.Boot.__instanceof(display,NMEPreloader)) (js.Boot.__cast(display , NMEPreloader)).onInit();
}
};
$hxClasses["openfl.display.Preloader"] = openfl.display.Preloader;
openfl.display.Preloader.__name__ = ["openfl","display","Preloader"];
openfl.display.Preloader.__super__ = lime.app.Preloader;
openfl.display.Preloader.prototype = $extend(lime.app.Preloader.prototype,{
load: function(urls,types) {
var sounds = [];
var musics = [];
var url = null;
var isAndroid = /Android/.test(navigator.userAgent);
var isChrome = /Chrome/.test(navigator.userAgent);
var _g1 = 0;
var _g = urls.length;
while(_g1 < _g) {
var i = _g1++;
url = urls[i];
var _g2 = types[i];
switch(_g2) {
case "SOUND":
var sound = haxe.io.Path.withoutExtension(url);
if(!HxOverrides.remove(sounds,sound)) this.total++;
sounds.push(sound);
break;
case "MUSIC":
var music = haxe.io.Path.withoutExtension(url);
if(isChrome) {
if(!HxOverrides.remove(musics,music)) this.total++;
musics.push(music);
} else {
var sound1 = haxe.io.Path.withoutExtension(url);
if(!HxOverrides.remove(sounds,sound1)) this.total++;
sounds.push(sound1);
}
break;
default:
}
}
if(isAndroid && !isChrome) {
while(sounds.length > 0) {
sounds.pop();
this.total--;
}
while(musics.length > 0) {
musics.pop();
this.total--;
}
}
var _g3 = 0;
while(_g3 < sounds.length) {
var soundName = sounds[_g3];
++_g3;
var sound2 = new openfl.media.Sound();
sound2.addEventListener(openfl.events.Event.COMPLETE,$bind(this,this.sound_onComplete));
sound2.addEventListener(openfl.events.IOErrorEvent.IO_ERROR,$bind(this,this.sound_onIOError));
sound2.load(new openfl.net.URLRequest(soundName + ".ogg"));
}
var _g4 = 0;
while(_g4 < musics.length) {
var musicName = musics[_g4];
++_g4;
this.loadAudioTag(musicName);
}
lime.app.Preloader.prototype.load.call(this,urls,types);
}
,loadAudioTag: function(id) {
var audio = new Audio();
co.doubleduck.utils.SoundMgr.audios.set(id,audio);
audio.addEventListener("canplaythrough",$bind(this,this.audio_onLoad));
audio.loop = true;
audio.onerror = $bind(this,this.handleLoadError);
audio.src = id + ".mp3";
}
,audio_onLoad: function(data) {
var audio = data.target;
audio.removeEventListener("canplaythrough",$bind(this,this.audio_onLoad));
this.sound_onComplete(null);
}
,start: function() {
if(this.display != null && js.Boot.__instanceof(this.display,NMEPreloader)) {
this.display.addEventListener(openfl.events.Event.COMPLETE,$bind(this,this.display_onComplete));
(js.Boot.__cast(this.display , NMEPreloader)).onLoaded();
} else lime.app.Preloader.prototype.start.call(this);
}
,update: function(loaded,total) {
if(this.display != null && js.Boot.__instanceof(this.display,NMEPreloader)) (js.Boot.__cast(this.display , NMEPreloader)).onUpdate(loaded,total);
}
,display_onComplete: function(event) {
this.display.removeEventListener(openfl.events.Event.COMPLETE,$bind(this,this.display_onComplete));
openfl.Lib.current.removeChild(this.display);
openfl.Lib.current.stage.set_focus(null);
this.display = null;
lime.app.Preloader.prototype.start.call(this);
}
,sound_onComplete: function(event) {
this.loaded++;
this.update(this.loaded,this.total);
if(this.loaded == this.total) this.start();
}
,sound_onIOError: function(event) {
this.loaded++;
this.update(this.loaded,this.total);
if(this.loaded == this.total) this.start();
}
,__class__: openfl.display.Preloader
});
openfl.display.Shape = function() {
openfl.display.DisplayObject.call(this);
};
$hxClasses["openfl.display.Shape"] = openfl.display.Shape;
openfl.display.Shape.__name__ = ["openfl","display","Shape"];
openfl.display.Shape.__super__ = openfl.display.DisplayObject;
openfl.display.Shape.prototype = $extend(openfl.display.DisplayObject.prototype,{
__getBounds: function(rect,matrix) {
if(this.__graphics != null) this.__graphics.__getBounds(rect,this.__worldTransform);
}
,__hitTest: function(x,y,shapeFlag,stack,interactiveOnly) {
if(this.get_visible() && this.__graphics != null && this.__graphics.__hitTest(x,y,shapeFlag,this.__getTransform())) {
if(!interactiveOnly) stack.push(this);
return true;
}
return false;
}
,__renderCanvas: function(renderSession) {
openfl._internal.renderer.canvas.CanvasShape.render(this,renderSession);
}
,__renderDOM: function(renderSession) {
openfl._internal.renderer.dom.DOMShape.render(this,renderSession);
}
,__renderGL: function(renderSession) {
if(!this.__renderable || this.__worldAlpha <= 0) return;
if(this.__graphics != null) openfl._internal.renderer.opengl.utils.GraphicsRenderer.render(this,renderSession);
}
,__renderMask: function(renderSession) {
if(this.__graphics != null) openfl._internal.renderer.canvas.CanvasGraphics.renderMask(this.__graphics,renderSession);
}
,get_graphics: function() {
if(this.__graphics == null) this.__graphics = new openfl.display.Graphics();
return this.__graphics;
}
,__class__: openfl.display.Shape
,__properties__: $extend(openfl.display.DisplayObject.prototype.__properties__,{get_graphics:"get_graphics"})
});
openfl.display.SimpleButton = function(upState,overState,downState,hitTestState) {
openfl.display.DisplayObjectContainer.call(this);
this.enabled = true;
this.trackAsMenu = false;
this.useHandCursor = true;
this.mouseChildren = false;
this.set_upState(upState != null?upState:this.__generateDefaultState());
this.set_overState(overState != null?overState:this.__generateDefaultState());
this.set_downState(downState != null?downState:this.__generateDefaultState());
this.set_hitTestState(hitTestState != null?hitTestState:this.__generateDefaultState());
this.set___currentState(this.upState);
};
$hxClasses["openfl.display.SimpleButton"] = openfl.display.SimpleButton;
openfl.display.SimpleButton.__name__ = ["openfl","display","SimpleButton"];
openfl.display.SimpleButton.__super__ = openfl.display.DisplayObjectContainer;
openfl.display.SimpleButton.prototype = $extend(openfl.display.DisplayObjectContainer.prototype,{
switchState: function(state) {
if(this.__currentState != null && this.__currentState.parent == this) this.removeChild(this.__currentState);
if(state != null) this.addChild(state);
}
,__generateDefaultState: function() {
return new openfl.display.DisplayObject();
}
,set_downState: function(downState) {
if(this.downState != null && this.__currentState == this.downState) this.set___currentState(downState);
return this.downState = downState;
}
,set_hitTestState: function(hitTestState) {
if(hitTestState != this.hitTestState) {
if(this.hitTestState != null && this.hitTestState.parent == this) this.removeChild(this.hitTestState);
this.removeEventListener(openfl.events.MouseEvent.MOUSE_DOWN,$bind(this,this.__this_onMouseDown));
this.removeEventListener(openfl.events.MouseEvent.MOUSE_OUT,$bind(this,this.__this_onMouseOut));
this.removeEventListener(openfl.events.MouseEvent.MOUSE_OVER,$bind(this,this.__this_onMouseOver));
this.removeEventListener(openfl.events.MouseEvent.MOUSE_UP,$bind(this,this.__this_onMouseUp));
if(hitTestState != null) {
this.addEventListener(openfl.events.MouseEvent.MOUSE_DOWN,$bind(this,this.__this_onMouseDown));
this.addEventListener(openfl.events.MouseEvent.MOUSE_OUT,$bind(this,this.__this_onMouseOut));
this.addEventListener(openfl.events.MouseEvent.MOUSE_OVER,$bind(this,this.__this_onMouseOver));
this.addEventListener(openfl.events.MouseEvent.MOUSE_UP,$bind(this,this.__this_onMouseUp));
hitTestState.set_alpha(0.0);
this.addChild(hitTestState);
}
}
return this.hitTestState = hitTestState;
}
,set_overState: function(overState) {
if(this.overState != null && this.__currentState == this.overState) this.set___currentState(overState);
return this.overState = overState;
}
,get_soundTransform: function() {
if(this.__soundTransform == null) this.__soundTransform = new openfl.media.SoundTransform();
return new openfl.media.SoundTransform(this.__soundTransform.volume,this.__soundTransform.pan);
}
,set_soundTransform: function(value) {
this.__soundTransform = new openfl.media.SoundTransform(value.volume,value.pan);
return value;
}
,set_upState: function(upState) {
if(this.upState != null && this.__currentState == this.upState) this.set___currentState(upState);
return this.upState = upState;
}
,set___currentState: function(state) {
if(this.__currentState == state) return state;
this.switchState(state);
return this.__currentState = state;
}
,__this_onMouseDown: function(event) {
this.set___currentState(this.downState);
}
,__this_onMouseOut: function(event) {
if(this.upState != this.__currentState) this.set___currentState(this.upState);
}
,__this_onMouseOver: function(event) {
if(this.overState != this.__currentState) this.set___currentState(this.overState);
}
,__this_onMouseUp: function(event) {
this.set___currentState(this.overState);
}
,__class__: openfl.display.SimpleButton
,__properties__: $extend(openfl.display.DisplayObjectContainer.prototype.__properties__,{set___currentState:"set___currentState",set_upState:"set_upState",set_soundTransform:"set_soundTransform",get_soundTransform:"get_soundTransform",set_overState:"set_overState",set_hitTestState:"set_hitTestState",set_downState:"set_downState"})
});
openfl.display.SpreadMethod = $hxClasses["openfl.display.SpreadMethod"] = { __ename__ : ["openfl","display","SpreadMethod"], __constructs__ : ["REPEAT","REFLECT","PAD"] };
openfl.display.SpreadMethod.REPEAT = ["REPEAT",0];
openfl.display.SpreadMethod.REPEAT.toString = $estr;
openfl.display.SpreadMethod.REPEAT.__enum__ = openfl.display.SpreadMethod;
openfl.display.SpreadMethod.REFLECT = ["REFLECT",1];
openfl.display.SpreadMethod.REFLECT.toString = $estr;
openfl.display.SpreadMethod.REFLECT.__enum__ = openfl.display.SpreadMethod;
openfl.display.SpreadMethod.PAD = ["PAD",2];
openfl.display.SpreadMethod.PAD.toString = $estr;
openfl.display.SpreadMethod.PAD.__enum__ = openfl.display.SpreadMethod;
openfl.display.Stage = function(width,height,color) {
this.__mouseY = 0;
this.__mouseX = 0;
openfl.display.Sprite.call(this);
if(color == null) {
this.__transparent = true;
this.set_color(0);
} else this.set_color(color);
this.set_name(null);
this.__mouseX = 0;
this.__mouseY = 0;
this.stageWidth = width;
this.stageHeight = height;
this.stage = this;
this.align = openfl.display.StageAlign.TOP_LEFT;
this.allowsFullScreen = false;
this.set_displayState(openfl.display.StageDisplayState.NORMAL);
this.frameRate = 60;
this.quality = openfl.display.StageQuality.HIGH;
this.scaleMode = openfl.display.StageScaleMode.NO_SCALE;
this.stageFocusRect = true;
this.__clearBeforeRender = true;
this.__stack = [];
var this1;
this1 = new openfl.VectorData();
var this2;
this2 = new Array(0);
this1.data = this2;
this1.length = 0;
this1.fixed = false;
this.stage3Ds = this1;
var this3 = this.stage3Ds;
var x = new openfl.display.Stage3D();
if(!this3.fixed) {
this3.length++;
if(this3.data.length < this3.length) {
var data;
var this4;
this4 = new Array(this3.data.length + 10);
data = this4;
haxe.ds._Vector.Vector_Impl_.blit(this3.data,0,data,0,this3.data.length);
this3.data = data;
}
this3.data[this3.length - 1] = x;
}
this3.length;
};
$hxClasses["openfl.display.Stage"] = openfl.display.Stage;
openfl.display.Stage.__name__ = ["openfl","display","Stage"];
openfl.display.Stage.__super__ = openfl.display.Sprite;
openfl.display.Stage.prototype = $extend(openfl.display.Sprite.prototype,{
globalToLocal: function(pos) {
return pos;
}
,invalidate: function() {
this.__invalidated = true;
}
,localToGlobal: function(pos) {
return pos;
}
,__drag: function(mouse) {
var parent = this.__dragObject.parent;
if(parent != null) mouse = parent.globalToLocal(mouse);
var x = mouse.x + this.__dragOffsetX;
var y = mouse.y + this.__dragOffsetY;
if(this.__dragBounds != null) {
if(x < this.__dragBounds.x) x = this.__dragBounds.x; else if(x > this.__dragBounds.get_right()) x = this.__dragBounds.get_right();
if(y < this.__dragBounds.y) y = this.__dragBounds.y; else if(y > this.__dragBounds.get_bottom()) y = this.__dragBounds.get_bottom();
}
this.__dragObject.set_x(x);
this.__dragObject.set_y(y);
}
,__fireEvent: function(event,stack) {
var length = stack.length;
if(length == 0) {
event.eventPhase = openfl.events.EventPhase.AT_TARGET;
event.target.__broadcast(event,false);
} else {
event.eventPhase = openfl.events.EventPhase.CAPTURING_PHASE;
event.target = stack[stack.length - 1];
var _g1 = 0;
var _g = length - 1;
while(_g1 < _g) {
var i = _g1++;
stack[i].__broadcast(event,false);
if(event.__isCancelled) return;
}
event.eventPhase = openfl.events.EventPhase.AT_TARGET;
event.target.__broadcast(event,false);
if(event.__isCancelled) return;
if(event.bubbles) {
event.eventPhase = openfl.events.EventPhase.BUBBLING_PHASE;
var i1 = length - 2;
while(i1 >= 0) {
stack[i1].__broadcast(event,false);
if(event.__isCancelled) return;
i1--;
}
}
}
}
,__getInteractive: function(stack) {
stack.push(this);
}
,__render: function(context) {
this.__broadcast(new openfl.events.Event(openfl.events.Event.ENTER_FRAME),true);
if(this.__invalidated) {
this.__invalidated = false;
this.__broadcast(new openfl.events.Event(openfl.events.Event.RENDER),true);
}
this.__renderable = true;
this.__update(false,true);
switch(context[1]) {
case 0:
var gl = context[2];
if(this.__renderer == null) this.__renderer = new openfl._internal.renderer.opengl.GLRenderer(this.stageWidth,this.stageHeight,gl);
this.__renderer.render(this);
break;
case 1:
var context1 = context[2];
if(this.__renderer == null) this.__renderer = new openfl._internal.renderer.canvas.CanvasRenderer(this.stageWidth,this.stageHeight,context1);
this.__renderer.render(this);
break;
case 2:
var element = context[2];
if(this.__renderer == null) this.__renderer = new openfl._internal.renderer.dom.DOMRenderer(this.stageWidth,this.stageHeight,element);
this.__renderer.render(this);
break;
default:
}
}
,__resize: function() {
}
,__startDrag: function(sprite,lockCenter,bounds) {
if(bounds == null) this.__dragBounds = null; else this.__dragBounds = bounds.clone();
this.__dragObject = sprite;
if(this.__dragObject != null) {
if(lockCenter) {
this.__dragOffsetX = -this.__dragObject.get_width() / 2;
this.__dragOffsetY = -this.__dragObject.get_height() / 2;
} else {
var mouse = new openfl.geom.Point(this.get_mouseX(),this.get_mouseY());
var parent = this.__dragObject.parent;
if(parent != null) mouse = parent.globalToLocal(mouse);
this.__dragOffsetX = this.__dragObject.get_x() - mouse.x;
this.__dragOffsetY = this.__dragObject.get_y() - mouse.y;
}
}
}
,__stopDrag: function(sprite) {
this.__dragBounds = null;
this.__dragObject = null;
}
,__update: function(transformOnly,updateChildren) {
if(transformOnly) {
if(openfl.display.DisplayObject.__worldTransformDirty > 0) {
openfl.display.Sprite.prototype.__update.call(this,true,updateChildren);
if(updateChildren) {
openfl.display.DisplayObject.__worldTransformDirty = 0;
this.__dirty = true;
}
}
} else if(openfl.display.DisplayObject.__worldTransformDirty > 0 || this.__dirty || openfl.display.DisplayObject.__worldRenderDirty > 0) {
openfl.display.Sprite.prototype.__update.call(this,false,updateChildren);
if(updateChildren) {
openfl.display.DisplayObject.__worldTransformDirty = 0;
openfl.display.DisplayObject.__worldRenderDirty = 0;
this.__dirty = false;
}
}
}
,get_mouseX: function() {
return this.__mouseX;
}
,get_mouseY: function() {
return this.__mouseY;
}
,canvas_onContextLost: function(event) {
}
,canvas_onContextRestored: function(event) {
}
,get_color: function() {
return this.__color;
}
,set_color: function(value) {
var r = (value & 16711680) >>> 16;
var g = (value & 65280) >>> 8;
var b = value & 255;
this.__colorSplit = [r / 255,g / 255,b / 255];
this.__colorString = "#" + StringTools.hex(value,6);
return this.__color = value;
}
,get_focus: function() {
return this.__focus;
}
,set_focus: function(value) {
if(value != this.__focus) {
if(this.__focus != null) {
var event = new openfl.events.FocusEvent(openfl.events.FocusEvent.FOCUS_OUT,true,false,value,false,0);
this.__stack = [];
this.__focus.__getInteractive(this.__stack);
this.__stack.reverse();
this.__fireEvent(event,this.__stack);
}
if(value != null) {
var event1 = new openfl.events.FocusEvent(openfl.events.FocusEvent.FOCUS_IN,true,false,this.__focus,false,0);
this.__stack = [];
value.__getInteractive(this.__stack);
this.__stack.reverse();
this.__fireEvent(event1,this.__stack);
}
this.__focus = value;
}
return this.__focus;
}
,set_displayState: function(value) {
this.displayState = value;
return value;
}
,__class__: openfl.display.Stage
,__properties__: $extend(openfl.display.Sprite.prototype.__properties__,{set_focus:"set_focus",get_focus:"get_focus",set_displayState:"set_displayState",set_color:"set_color",get_color:"get_color"})
});
openfl.display.Stage3D = function() {
openfl.events.EventDispatcher.call(this);
};
$hxClasses["openfl.display.Stage3D"] = openfl.display.Stage3D;
openfl.display.Stage3D.__name__ = ["openfl","display","Stage3D"];
openfl.display.Stage3D.__super__ = openfl.events.EventDispatcher;
openfl.display.Stage3D.prototype = $extend(openfl.events.EventDispatcher.prototype,{
requestContext3D: function(context3DRenderMode) {
if(context3DRenderMode == null) context3DRenderMode = "";
if(openfl.display.OpenGLView.get_isSupported()) {
this.context3D = new openfl.display3D.Context3D();
this.dispatchEvent(new openfl.events.Event(openfl.events.Event.CONTEXT3D_CREATE));
} else this.dispatchEvent(new openfl.events.ErrorEvent(openfl.events.ErrorEvent.ERROR));
}
,__class__: openfl.display.Stage3D
});
openfl.display.StageAlign = $hxClasses["openfl.display.StageAlign"] = { __ename__ : ["openfl","display","StageAlign"], __constructs__ : ["TOP_RIGHT","TOP_LEFT","TOP","RIGHT","LEFT","BOTTOM_RIGHT","BOTTOM_LEFT","BOTTOM"] };
openfl.display.StageAlign.TOP_RIGHT = ["TOP_RIGHT",0];
openfl.display.StageAlign.TOP_RIGHT.toString = $estr;
openfl.display.StageAlign.TOP_RIGHT.__enum__ = openfl.display.StageAlign;
openfl.display.StageAlign.TOP_LEFT = ["TOP_LEFT",1];
openfl.display.StageAlign.TOP_LEFT.toString = $estr;
openfl.display.StageAlign.TOP_LEFT.__enum__ = openfl.display.StageAlign;
openfl.display.StageAlign.TOP = ["TOP",2];
openfl.display.StageAlign.TOP.toString = $estr;
openfl.display.StageAlign.TOP.__enum__ = openfl.display.StageAlign;
openfl.display.StageAlign.RIGHT = ["RIGHT",3];
openfl.display.StageAlign.RIGHT.toString = $estr;
openfl.display.StageAlign.RIGHT.__enum__ = openfl.display.StageAlign;
openfl.display.StageAlign.LEFT = ["LEFT",4];
openfl.display.StageAlign.LEFT.toString = $estr;
openfl.display.StageAlign.LEFT.__enum__ = openfl.display.StageAlign;
openfl.display.StageAlign.BOTTOM_RIGHT = ["BOTTOM_RIGHT",5];
openfl.display.StageAlign.BOTTOM_RIGHT.toString = $estr;
openfl.display.StageAlign.BOTTOM_RIGHT.__enum__ = openfl.display.StageAlign;
openfl.display.StageAlign.BOTTOM_LEFT = ["BOTTOM_LEFT",6];
openfl.display.StageAlign.BOTTOM_LEFT.toString = $estr;
openfl.display.StageAlign.BOTTOM_LEFT.__enum__ = openfl.display.StageAlign;
openfl.display.StageAlign.BOTTOM = ["BOTTOM",7];
openfl.display.StageAlign.BOTTOM.toString = $estr;
openfl.display.StageAlign.BOTTOM.__enum__ = openfl.display.StageAlign;
openfl.display.StageDisplayState = $hxClasses["openfl.display.StageDisplayState"] = { __ename__ : ["openfl","display","StageDisplayState"], __constructs__ : ["NORMAL","FULL_SCREEN","FULL_SCREEN_INTERACTIVE"] };
openfl.display.StageDisplayState.NORMAL = ["NORMAL",0];
openfl.display.StageDisplayState.NORMAL.toString = $estr;
openfl.display.StageDisplayState.NORMAL.__enum__ = openfl.display.StageDisplayState;
openfl.display.StageDisplayState.FULL_SCREEN = ["FULL_SCREEN",1];
openfl.display.StageDisplayState.FULL_SCREEN.toString = $estr;
openfl.display.StageDisplayState.FULL_SCREEN.__enum__ = openfl.display.StageDisplayState;
openfl.display.StageDisplayState.FULL_SCREEN_INTERACTIVE = ["FULL_SCREEN_INTERACTIVE",2];
openfl.display.StageDisplayState.FULL_SCREEN_INTERACTIVE.toString = $estr;
openfl.display.StageDisplayState.FULL_SCREEN_INTERACTIVE.__enum__ = openfl.display.StageDisplayState;
openfl.display.StageQuality = $hxClasses["openfl.display.StageQuality"] = { __ename__ : ["openfl","display","StageQuality"], __constructs__ : ["BEST","HIGH","MEDIUM","LOW"] };
openfl.display.StageQuality.BEST = ["BEST",0];
openfl.display.StageQuality.BEST.toString = $estr;
openfl.display.StageQuality.BEST.__enum__ = openfl.display.StageQuality;
openfl.display.StageQuality.HIGH = ["HIGH",1];
openfl.display.StageQuality.HIGH.toString = $estr;
openfl.display.StageQuality.HIGH.__enum__ = openfl.display.StageQuality;
openfl.display.StageQuality.MEDIUM = ["MEDIUM",2];
openfl.display.StageQuality.MEDIUM.toString = $estr;
openfl.display.StageQuality.MEDIUM.__enum__ = openfl.display.StageQuality;
openfl.display.StageQuality.LOW = ["LOW",3];
openfl.display.StageQuality.LOW.toString = $estr;
openfl.display.StageQuality.LOW.__enum__ = openfl.display.StageQuality;
openfl.display.StageScaleMode = $hxClasses["openfl.display.StageScaleMode"] = { __ename__ : ["openfl","display","StageScaleMode"], __constructs__ : ["SHOW_ALL","NO_SCALE","NO_BORDER","EXACT_FIT"] };
openfl.display.StageScaleMode.SHOW_ALL = ["SHOW_ALL",0];
openfl.display.StageScaleMode.SHOW_ALL.toString = $estr;
openfl.display.StageScaleMode.SHOW_ALL.__enum__ = openfl.display.StageScaleMode;
openfl.display.StageScaleMode.NO_SCALE = ["NO_SCALE",1];
openfl.display.StageScaleMode.NO_SCALE.toString = $estr;
openfl.display.StageScaleMode.NO_SCALE.__enum__ = openfl.display.StageScaleMode;
openfl.display.StageScaleMode.NO_BORDER = ["NO_BORDER",2];
openfl.display.StageScaleMode.NO_BORDER.toString = $estr;
openfl.display.StageScaleMode.NO_BORDER.__enum__ = openfl.display.StageScaleMode;
openfl.display.StageScaleMode.EXACT_FIT = ["EXACT_FIT",3];
openfl.display.StageScaleMode.EXACT_FIT.toString = $estr;
openfl.display.StageScaleMode.EXACT_FIT.__enum__ = openfl.display.StageScaleMode;
openfl.display.Tilesheet = function(image) {
this.__bitmap = image;
this.__centerPoints = new Array();
this.__tileRects = new Array();
this.__tileUVs = new Array();
this.__rectTile = new openfl.geom.Rectangle();
this.__rectUV = new openfl.geom.Rectangle();
this.__point = new openfl.geom.Point();
};
$hxClasses["openfl.display.Tilesheet"] = openfl.display.Tilesheet;
openfl.display.Tilesheet.__name__ = ["openfl","display","Tilesheet"];
openfl.display.Tilesheet.prototype = {
addTileRect: function(rectangle,centerPoint) {
this.__tileRects.push(rectangle);
if(centerPoint == null) centerPoint = openfl.display.Tilesheet.__defaultPoint;
this.__centerPoints.push(centerPoint);
this.__tileUVs.push(new openfl.geom.Rectangle(rectangle.get_left() / this.__bitmap.width,rectangle.get_top() / this.__bitmap.height,rectangle.get_right() / this.__bitmap.width,rectangle.get_bottom() / this.__bitmap.height));
return this.__tileRects.length - 1;
}
,drawTiles: function(graphics,tileData,smooth,flags,count) {
if(count == null) count = -1;
if(flags == null) flags = 0;
if(smooth == null) smooth = false;
graphics.drawTiles(this,tileData,smooth,flags,count);
}
,getTileCenter: function(index) {
return this.__centerPoints[index];
}
,getTileRect: function(index) {
return this.__tileRects[index];
}
,getTileUVs: function(index) {
return this.__tileUVs[index];
}
,__class__: openfl.display.Tilesheet
};
openfl.display.TriangleCulling = $hxClasses["openfl.display.TriangleCulling"] = { __ename__ : ["openfl","display","TriangleCulling"], __constructs__ : ["NEGATIVE","NONE","POSITIVE"] };
openfl.display.TriangleCulling.NEGATIVE = ["NEGATIVE",0];
openfl.display.TriangleCulling.NEGATIVE.toString = $estr;
openfl.display.TriangleCulling.NEGATIVE.__enum__ = openfl.display.TriangleCulling;
openfl.display.TriangleCulling.NONE = ["NONE",1];
openfl.display.TriangleCulling.NONE.toString = $estr;
openfl.display.TriangleCulling.NONE.__enum__ = openfl.display.TriangleCulling;
openfl.display.TriangleCulling.POSITIVE = ["POSITIVE",2];
openfl.display.TriangleCulling.POSITIVE.toString = $estr;
openfl.display.TriangleCulling.POSITIVE.__enum__ = openfl.display.TriangleCulling;
openfl.display3D = {};
openfl.display3D.Context3D = function() {
this.disposed = false;
this._yFlip = 1;
this.vertexBuffersCreated = new Array();
this.indexBuffersCreated = new Array();
this.programsCreated = new Array();
this.texturesCreated = new Array();
this.samplerParameters = new Array();
var _g1 = 0;
var _g = openfl.display3D.Context3D.MAX_SAMPLERS;
while(_g1 < _g) {
var i = _g1++;
this.samplerParameters[i] = new openfl.display3D._Context3D.SamplerState();
this.samplerParameters[i].wrap = openfl.display3D.Context3DWrapMode.CLAMP;
this.samplerParameters[i].filter = openfl.display3D.Context3DTextureFilter.LINEAR;
this.samplerParameters[i].mipfilter = openfl.display3D.Context3DMipFilter.MIPNONE;
}
var stage = openfl.Lib.current.stage;
this.ogl = new openfl.display.OpenGLView();
this.ogl.set_scrollRect(new openfl.geom.Rectangle(0,0,stage.stageWidth,stage.stageHeight));
this.scrollRect = this.ogl.get_scrollRect().clone();
this.ogl.set_width(stage.stageWidth);
this.ogl.set_height(stage.stageHeight);
stage.addChildAt(this.ogl,0);
};
$hxClasses["openfl.display3D.Context3D"] = openfl.display3D.Context3D;
openfl.display3D.Context3D.__name__ = ["openfl","display3D","Context3D"];
openfl.display3D.Context3D.prototype = {
clear: function(red,green,blue,alpha,depth,stencil,mask) {
if(mask == null) mask = 17664;
if(stencil == null) stencil = 0;
if(depth == null) depth = 1;
if(alpha == null) alpha = 1;
if(blue == null) blue = 0;
if(green == null) green = 0;
if(red == null) red = 0;
if(!this.drawing) {
this.__updateBlendStatus();
this.drawing = true;
}
lime.graphics.opengl.GL.context.clearColor(red,green,blue,alpha);
lime.graphics.opengl.GL.context.clearDepth(depth);
lime.graphics.opengl.GL.context.clearStencil(stencil);
lime.graphics.opengl.GL.context.clear(mask);
}
,configureBackBuffer: function(width,height,antiAlias,enableDepthAndStencil) {
if(enableDepthAndStencil == null) enableDepthAndStencil = true;
if(enableDepthAndStencil) {
lime.graphics.opengl.GL.context.enable(2929);
lime.graphics.opengl.GL.context.enable(2960);
}
this.ogl.set_scrollRect(new openfl.geom.Rectangle(0,0,width,height));
this.ogl.set_width(width);
this.ogl.set_height(height);
this.scrollRect = this.ogl.get_scrollRect().clone();
lime.graphics.opengl.GL.context.viewport(this.scrollRect.x | 0,this.scrollRect.y | 0,this.scrollRect.width | 0,this.scrollRect.height | 0);
}
,createCubeTexture: function(size,format,optimizeForRenderToTexture,streamingLevels) {
if(streamingLevels == null) streamingLevels = 0;
var texture = new openfl.display3D.textures.CubeTexture(lime.graphics.opengl.GL.context.createTexture(),size);
this.texturesCreated.push(texture);
return texture;
}
,createIndexBuffer: function(numIndices) {
var indexBuffer = new openfl.display3D.IndexBuffer3D(lime.graphics.opengl.GL.context.createBuffer(),numIndices);
this.indexBuffersCreated.push(indexBuffer);
return indexBuffer;
}
,createProgram: function() {
var program = new openfl.display3D.Program3D(lime.graphics.opengl.GL.context.createProgram());
this.programsCreated.push(program);
return program;
}
,createRectangleTexture: function(width,height,format,optimizeForRenderToTexture) {
var texture = new openfl.display3D.textures.RectangleTexture(lime.graphics.opengl.GL.context.createTexture(),optimizeForRenderToTexture,width,height);
this.texturesCreated.push(texture);
return texture;
}
,createTexture: function(width,height,format,optimizeForRenderToTexture,streamingLevels) {
if(streamingLevels == null) streamingLevels = 0;
var texture = new openfl.display3D.textures.Texture(lime.graphics.opengl.GL.context.createTexture(),optimizeForRenderToTexture,width,height);
this.texturesCreated.push(texture);
return texture;
}
,createVertexBuffer: function(numVertices,data32PerVertex) {
var vertexBuffer = new openfl.display3D.VertexBuffer3D(lime.graphics.opengl.GL.context.createBuffer(),numVertices,data32PerVertex);
this.vertexBuffersCreated.push(vertexBuffer);
return vertexBuffer;
}
,dispose: function() {
var _g = 0;
var _g1 = this.vertexBuffersCreated;
while(_g < _g1.length) {
var vertexBuffer = _g1[_g];
++_g;
vertexBuffer.dispose();
}
this.vertexBuffersCreated = null;
var _g2 = 0;
var _g11 = this.indexBuffersCreated;
while(_g2 < _g11.length) {
var indexBuffer = _g11[_g2];
++_g2;
indexBuffer.dispose();
}
this.indexBuffersCreated = null;
var _g3 = 0;
var _g12 = this.programsCreated;
while(_g3 < _g12.length) {
var program = _g12[_g3];
++_g3;
program.dispose();
}
this.programsCreated = null;
this.samplerParameters = null;
var _g4 = 0;
var _g13 = this.texturesCreated;
while(_g4 < _g13.length) {
var texture = _g13[_g4];
++_g4;
texture.dispose();
}
this.texturesCreated = null;
if(this.framebuffer != null) {
lime.graphics.opengl.GL.context.deleteFramebuffer(this.framebuffer);
this.framebuffer = null;
}
if(this.renderbuffer != null) {
lime.graphics.opengl.GL.context.deleteRenderbuffer(this.renderbuffer);
this.renderbuffer = null;
}
this.disposed = true;
}
,drawToBitmapData: function(destination) {
}
,drawTriangles: function(indexBuffer,firstIndex,numTriangles) {
if(numTriangles == null) numTriangles = -1;
if(firstIndex == null) firstIndex = 0;
var location = lime.graphics.opengl.GL.context.getUniformLocation(this.currentProgram.glProgram,"yflip");
lime.graphics.opengl.GL.context.uniform1f(location,this._yFlip);
if(!this.drawing) throw new openfl.errors.Error("Need to clear before drawing if the buffer has not been cleared since the last present() call.");
var numIndices;
if(numTriangles == -1) numIndices = indexBuffer.numIndices; else numIndices = numTriangles * 3;
var byteOffset = firstIndex * 2;
lime.graphics.opengl.GL.context.bindBuffer(34963,indexBuffer.glBuffer);
lime.graphics.opengl.GL.context.drawElements(4,numIndices,5123,byteOffset);
}
,present: function() {
this.drawing = false;
lime.graphics.opengl.GL.context.useProgram(null);
lime.graphics.opengl.GL.context.bindBuffer(34962,null);
lime.graphics.opengl.GL.context.disable(2884);
if(this.framebuffer != null) lime.graphics.opengl.GL.context.bindFramebuffer(36160,null);
if(this.renderbuffer != null) lime.graphics.opengl.GL.context.bindRenderbuffer(36161,null);
}
,removeRenderMethod: function(func) {
this.ogl.set_render(null);
}
,setBlendFactors: function(sourceFactor,destinationFactor) {
this.blendEnabled = true;
this.blendSourceFactor = sourceFactor;
this.blendDestinationFactor = destinationFactor;
this.__updateBlendStatus();
}
,setColorMask: function(red,green,blue,alpha) {
lime.graphics.opengl.GL.context.colorMask(red,green,blue,alpha);
}
,setCulling: function(triangleFaceToCull) {
if(triangleFaceToCull == 0) lime.graphics.opengl.GL.context.disable(2884); else {
lime.graphics.opengl.GL.context.enable(2884);
switch(triangleFaceToCull) {
case 1029:
lime.graphics.opengl.GL.context.cullFace(1029);
break;
case 1028:
lime.graphics.opengl.GL.context.cullFace(1028);
break;
case 1032:
lime.graphics.opengl.GL.context.cullFace(1032);
break;
default:
throw "Unknown Context3DTriangleFace type.";
}
}
switch(triangleFaceToCull) {
case 1029:
this._yFlip = -1;
break;
case 1028:
this._yFlip = 1;
break;
case 1032:
this._yFlip = 1;
break;
case 0:
this._yFlip = 1;
break;
default:
throw "Unknown culling mode " + triangleFaceToCull + ".";
}
}
,setDepthTest: function(depthMask,passCompareMode) {
lime.graphics.opengl.GL.context.depthFunc(passCompareMode);
lime.graphics.opengl.GL.context.depthMask(depthMask);
}
,setGLSLProgramConstantsFromByteArray: function(locationName,data,byteArrayOffset) {
if(byteArrayOffset == null) byteArrayOffset = 0;
data.position = byteArrayOffset;
var location = lime.graphics.opengl.GL.context.getUniformLocation(this.currentProgram.glProgram,locationName);
lime.graphics.opengl.GL.uniform4f(location,data.readFloat(),data.readFloat(),data.readFloat(),data.readFloat());
}
,setGLSLProgramConstantsFromMatrix: function(locationName,matrix,transposedMatrix) {
if(transposedMatrix == null) transposedMatrix = false;
var location = lime.graphics.opengl.GL.context.getUniformLocation(this.currentProgram.glProgram,locationName);
lime.graphics.opengl.GL.uniformMatrix4fv(location,!transposedMatrix,new Float32Array((function($this) {
var $r;
var this1 = matrix.rawData;
var value = new Array();
{
var _g1 = 0;
var _g = this1.data.length;
while(_g1 < _g) {
var i = _g1++;
value.push(this1.data[i]);
}
}
$r = value;
return $r;
}(this))));
}
,setGLSLProgramConstantsFromVector4: function(locationName,data,startIndex) {
if(startIndex == null) startIndex = 0;
var location = lime.graphics.opengl.GL.context.getUniformLocation(this.currentProgram.glProgram,locationName);
lime.graphics.opengl.GL.context.uniform4f(location,data[startIndex],data[startIndex + 1],data[startIndex + 2],data[startIndex + 3]);
}
,setGLSLTextureAt: function(locationName,texture,textureIndex) {
switch(textureIndex) {
case 0:
lime.graphics.opengl.GL.context.activeTexture(33984);
break;
case 1:
lime.graphics.opengl.GL.context.activeTexture(33985);
break;
case 2:
lime.graphics.opengl.GL.context.activeTexture(33986);
break;
case 3:
lime.graphics.opengl.GL.context.activeTexture(33987);
break;
case 4:
lime.graphics.opengl.GL.context.activeTexture(33988);
break;
case 5:
lime.graphics.opengl.GL.context.activeTexture(33989);
break;
case 6:
lime.graphics.opengl.GL.context.activeTexture(33990);
break;
case 7:
lime.graphics.opengl.GL.context.activeTexture(33991);
break;
default:
throw "Does not support texture8 or more";
}
if(texture == null) {
lime.graphics.opengl.GL.context.bindTexture(3553,null);
lime.graphics.opengl.GL.context.bindTexture(34067,null);
return;
}
var location = lime.graphics.opengl.GL.context.getUniformLocation(this.currentProgram.glProgram,locationName);
if(js.Boot.__instanceof(texture,openfl.display3D.textures.Texture)) {
lime.graphics.opengl.GL.context.bindTexture(3553,(js.Boot.__cast(texture , openfl.display3D.textures.Texture)).glTexture);
lime.graphics.opengl.GL.context.uniform1i(location,textureIndex);
} else if(js.Boot.__instanceof(texture,openfl.display3D.textures.RectangleTexture)) {
lime.graphics.opengl.GL.context.bindTexture(3553,(js.Boot.__cast(texture , openfl.display3D.textures.RectangleTexture)).glTexture);
lime.graphics.opengl.GL.context.uniform1i(location,textureIndex);
} else if(js.Boot.__instanceof(texture,openfl.display3D.textures.CubeTexture)) {
lime.graphics.opengl.GL.context.bindTexture(34067,(js.Boot.__cast(texture , openfl.display3D.textures.CubeTexture)).glTexture);
lime.graphics.opengl.GL.context.uniform1i(location,textureIndex);
} else throw "Texture of type " + Type.getClassName(Type.getClass(texture)) + " not supported yet";
var parameters = this.samplerParameters[textureIndex];
if(parameters != null) this.setTextureParameters(texture,parameters.wrap,parameters.filter,parameters.mipfilter); else this.setTextureParameters(texture,openfl.display3D.Context3DWrapMode.CLAMP,openfl.display3D.Context3DTextureFilter.NEAREST,openfl.display3D.Context3DMipFilter.MIPNONE);
}
,setGLSLVertexBufferAt: function(locationName,buffer,bufferOffset,format) {
if(bufferOffset == null) bufferOffset = 0;
var location;
if(this.currentProgram != null && this.currentProgram.glProgram != null) location = lime.graphics.opengl.GL.context.getAttribLocation(this.currentProgram.glProgram,locationName); else location = -1;
if(buffer == null) {
if(location > -1) lime.graphics.opengl.GL.context.disableVertexAttribArray(location);
return;
}
lime.graphics.opengl.GL.context.bindBuffer(34962,buffer.glBuffer);
var dimension = 4;
var type = 5126;
var numBytes = 4;
if(format == openfl.display3D.Context3DVertexBufferFormat.BYTES_4) {
dimension = 4;
type = 5126;
numBytes = 4;
} else if(format == openfl.display3D.Context3DVertexBufferFormat.FLOAT_1) {
dimension = 1;
type = 5126;
numBytes = 4;
} else if(format == openfl.display3D.Context3DVertexBufferFormat.FLOAT_2) {
dimension = 2;
type = 5126;
numBytes = 4;
} else if(format == openfl.display3D.Context3DVertexBufferFormat.FLOAT_3) {
dimension = 3;
type = 5126;
numBytes = 4;
} else if(format == openfl.display3D.Context3DVertexBufferFormat.FLOAT_4) {
dimension = 4;
type = 5126;
numBytes = 4;
} else throw "Buffer format " + Std.string(format) + " is not supported";
lime.graphics.opengl.GL.context.enableVertexAttribArray(location);
lime.graphics.opengl.GL.context.vertexAttribPointer(location,dimension,type,false,buffer.data32PerVertex * numBytes,bufferOffset * numBytes);
}
,setProgram: function(program3D) {
var glProgram = null;
if(program3D != null) glProgram = program3D.glProgram;
lime.graphics.opengl.GL.context.useProgram(glProgram);
this.currentProgram = program3D;
}
,setProgramConstantsFromByteArray: function(programType,firstRegister,numRegisters,data,byteArrayOffset) {
data.position = byteArrayOffset;
var _g = 0;
while(_g < numRegisters) {
var i = _g++;
var locationName = this.__getUniformLocationNameFromAgalRegisterIndex(programType,firstRegister + i);
this.setGLSLProgramConstantsFromByteArray(locationName,data);
}
}
,setProgramConstantsFromMatrix: function(programType,firstRegister,matrix,transposedMatrix) {
if(transposedMatrix == null) transposedMatrix = false;
var d = matrix.rawData;
if(transposedMatrix) {
this.setProgramConstantsFromVector(programType,firstRegister,[d.data[0],d.data[4],d.data[8],d.data[12]],1);
this.setProgramConstantsFromVector(programType,firstRegister + 1,[d.data[1],d.data[5],d.data[9],d.data[13]],1);
this.setProgramConstantsFromVector(programType,firstRegister + 2,[d.data[2],d.data[6],d.data[10],d.data[14]],1);
this.setProgramConstantsFromVector(programType,firstRegister + 3,[d.data[3],d.data[7],d.data[11],d.data[15]],1);
} else {
this.setProgramConstantsFromVector(programType,firstRegister,[d.data[0],d.data[1],d.data[2],d.data[3]],1);
this.setProgramConstantsFromVector(programType,firstRegister + 1,[d.data[4],d.data[5],d.data[6],d.data[7]],1);
this.setProgramConstantsFromVector(programType,firstRegister + 2,[d.data[8],d.data[9],d.data[10],d.data[11]],1);
this.setProgramConstantsFromVector(programType,firstRegister + 3,[d.data[12],d.data[13],d.data[14],d.data[15]],1);
}
}
,setProgramConstantsFromVector: function(programType,firstRegister,data,numRegisters) {
if(numRegisters == null) numRegisters = 1;
var _g = 0;
while(_g < numRegisters) {
var i = _g++;
var currentIndex = i * 4;
var locationName = this.__getUniformLocationNameFromAgalRegisterIndex(programType,firstRegister + i);
this.setGLSLProgramConstantsFromVector4(locationName,data,currentIndex);
}
}
,setRenderMethod: function(func) {
this.ogl.set_render(function(rect) {
func(null);
});
}
,setRenderToBackBuffer: function() {
lime.graphics.opengl.GL.context.disable(2929);
lime.graphics.opengl.GL.context.disable(2960);
lime.graphics.opengl.GL.context.disable(3089);
if(this.framebuffer != null) lime.graphics.opengl.GL.context.bindFramebuffer(36160,null);
if(this.renderbuffer != null) lime.graphics.opengl.GL.context.bindRenderbuffer(36161,null);
}
,setRenderToTexture: function(texture,enableDepthAndStencil,antiAlias,surfaceSelector) {
if(surfaceSelector == null) surfaceSelector = 0;
if(antiAlias == null) antiAlias = 0;
if(enableDepthAndStencil == null) enableDepthAndStencil = false;
if(this.framebuffer == null) this.framebuffer = lime.graphics.opengl.GL.context.createFramebuffer();
lime.graphics.opengl.GL.context.bindFramebuffer(36160,this.framebuffer);
if(this.renderbuffer == null) this.renderbuffer = lime.graphics.opengl.GL.context.createRenderbuffer();
lime.graphics.opengl.GL.context.bindRenderbuffer(36161,this.renderbuffer);
lime.graphics.opengl.GL.context.renderbufferStorage(36161,6408,texture.width,texture.height);
lime.graphics.opengl.GL.context.framebufferTexture2D(36160,36064,3553,texture.glTexture,0);
lime.graphics.opengl.GL.context.renderbufferStorage(36161,34041,texture.width,texture.height);
lime.graphics.opengl.GL.context.framebufferRenderbuffer(36160,33306,36161,this.renderbuffer);
if(enableDepthAndStencil) {
lime.graphics.opengl.GL.context.enable(2929);
lime.graphics.opengl.GL.context.enable(2960);
}
lime.graphics.opengl.GL.context.bindTexture(3553,texture.glTexture);
lime.graphics.opengl.GL.context.texImage2D(3553,0,6408,texture.width,texture.height,0,6408,5121,null);
lime.graphics.opengl.GL.context.texParameteri(3553,10240,9729);
lime.graphics.opengl.GL.context.texParameteri(3553,10241,9985);
lime.graphics.opengl.GL.context.viewport(0,0,texture.width,texture.height);
}
,setSamplerStateAt: function(sampler,wrap,filter,mipfilter) {
if(0 <= sampler && sampler < openfl.display3D.Context3D.MAX_SAMPLERS) {
this.samplerParameters[sampler].wrap = wrap;
this.samplerParameters[sampler].filter = filter;
this.samplerParameters[sampler].mipfilter = mipfilter;
} else throw "Sampler is out of bounds.";
}
,setScissorRectangle: function(rectangle) {
if(rectangle == null) {
lime.graphics.opengl.GL.context.disable(3089);
return;
}
lime.graphics.opengl.GL.context.enable(3089);
lime.graphics.opengl.GL.context.scissor(rectangle.x | 0,rectangle.y | 0,rectangle.width | 0,rectangle.height | 0);
}
,setStencilActions: function(triangleFace,compareMode,actionOnBothPass,actionOnDepthFail,actionOnDepthPassStencilFail) {
this.stencilCompareMode = compareMode;
lime.graphics.opengl.GL.context.stencilOp(actionOnBothPass,actionOnDepthFail,actionOnDepthPassStencilFail);
lime.graphics.opengl.GL.context.stencilFunc(this.stencilCompareMode,this.stencilRef,this.stencilReadMask);
}
,setStencilReferenceValue: function(referenceValue,readMask,writeMask) {
if(writeMask == null) writeMask = 255;
if(readMask == null) readMask = 255;
this.stencilReadMask = readMask;
this.stencilRef = referenceValue;
lime.graphics.opengl.GL.context.stencilFunc(this.stencilCompareMode,this.stencilRef,this.stencilReadMask);
lime.graphics.opengl.GL.context.stencilMask(writeMask);
}
,setTextureAt: function(sampler,texture) {
var locationName = "fs" + sampler;
this.setGLSLTextureAt(locationName,texture,sampler);
}
,setTextureParameters: function(texture,wrap,filter,mipfilter) {
if(!openfl.display3D.Context3D.anisotropySupportTested) {
var ext = lime.graphics.opengl.GL.context.getExtension("EXT_texture_filter_anisotropic");
if(ext == null) ext = lime.graphics.opengl.GL.context.getExtension("MOZ_EXT_texture_filter_anisotropic");
if(ext == null) ext = lime.graphics.opengl.GL.context.getExtension("WEBKIT_EXT_texture_filter_anisotropic");
openfl.display3D.Context3D.supportsAnisotropy = ext != null;
openfl.display3D.Context3D.anisotropySupportTested = true;
lime.graphics.opengl.GL.context.texParameterf(3553,openfl.display3D.Context3D.TEXTURE_MAX_ANISOTROPY_EXT,(function($this) {
var $r;
var $int = openfl.display3D.Context3D.maxSupportedAnisotropy;
$r = $int < 0?4294967296.0 + $int:$int + 0.0;
return $r;
}(this)));
openfl.display3D.Context3D.maxSupportedAnisotropy = lime.graphics.opengl.GL.context.getTexParameter(3553,openfl.display3D.Context3D.TEXTURE_MAX_ANISOTROPY_EXT);
}
if(js.Boot.__instanceof(texture,openfl.display3D.textures.Texture)) {
switch(wrap[1]) {
case 0:
lime.graphics.opengl.GL.context.texParameteri(3553,10242,33071);
lime.graphics.opengl.GL.context.texParameteri(3553,10243,33071);
break;
case 1:
lime.graphics.opengl.GL.context.texParameteri(3553,10242,10497);
lime.graphics.opengl.GL.context.texParameteri(3553,10243,10497);
break;
}
switch(filter[1]) {
case 4:
lime.graphics.opengl.GL.context.texParameteri(3553,10240,9729);
if(openfl.display3D.Context3D.supportsAnisotropy) lime.graphics.opengl.GL.context.texParameterf(3553,openfl.display3D.Context3D.TEXTURE_MAX_ANISOTROPY_EXT,1);
break;
case 5:
lime.graphics.opengl.GL.context.texParameteri(3553,10240,9728);
if(openfl.display3D.Context3D.supportsAnisotropy) lime.graphics.opengl.GL.context.texParameterf(3553,openfl.display3D.Context3D.TEXTURE_MAX_ANISOTROPY_EXT,1);
break;
case 0:
if(openfl.display3D.Context3D.supportsAnisotropy) lime.graphics.opengl.GL.context.texParameterf(3553,openfl.display3D.Context3D.TEXTURE_MAX_ANISOTROPY_EXT,(function($this) {
var $r;
var a = openfl.display3D.Context3D.maxSupportedAnisotropy;
$r = (function($this) {
var $r;
var aNeg = 2 < 0;
var bNeg = a < 0;
$r = aNeg != bNeg?aNeg:2 > a;
return $r;
}($this));
return $r;
}(this))?(function($this) {
var $r;
var int1 = openfl.display3D.Context3D.maxSupportedAnisotropy;
$r = int1 < 0?4294967296.0 + int1:int1 + 0.0;
return $r;
}(this)):2);
break;
case 1:
if(openfl.display3D.Context3D.supportsAnisotropy) lime.graphics.opengl.GL.context.texParameterf(3553,openfl.display3D.Context3D.TEXTURE_MAX_ANISOTROPY_EXT,(function($this) {
var $r;
var a1 = openfl.display3D.Context3D.maxSupportedAnisotropy;
$r = (function($this) {
var $r;
var aNeg1 = 4 < 0;
var bNeg1 = a1 < 0;
$r = aNeg1 != bNeg1?aNeg1:4 > a1;
return $r;
}($this));
return $r;
}(this))?(function($this) {
var $r;
var int2 = openfl.display3D.Context3D.maxSupportedAnisotropy;
$r = int2 < 0?4294967296.0 + int2:int2 + 0.0;
return $r;
}(this)):4);
break;
case 2:
if(openfl.display3D.Context3D.supportsAnisotropy) lime.graphics.opengl.GL.context.texParameterf(3553,openfl.display3D.Context3D.TEXTURE_MAX_ANISOTROPY_EXT,(function($this) {
var $r;
var a2 = openfl.display3D.Context3D.maxSupportedAnisotropy;
$r = (function($this) {
var $r;
var aNeg2 = 8 < 0;
var bNeg2 = a2 < 0;
$r = aNeg2 != bNeg2?aNeg2:8 > a2;
return $r;
}($this));
return $r;
}(this))?(function($this) {
var $r;
var int3 = openfl.display3D.Context3D.maxSupportedAnisotropy;
$r = int3 < 0?4294967296.0 + int3:int3 + 0.0;
return $r;
}(this)):8);
break;
case 3:
if(openfl.display3D.Context3D.supportsAnisotropy) lime.graphics.opengl.GL.context.texParameterf(3553,openfl.display3D.Context3D.TEXTURE_MAX_ANISOTROPY_EXT,(function($this) {
var $r;
var a3 = openfl.display3D.Context3D.maxSupportedAnisotropy;
$r = (function($this) {
var $r;
var aNeg3 = 16 < 0;
var bNeg3 = a3 < 0;
$r = aNeg3 != bNeg3?aNeg3:16 > a3;
return $r;
}($this));
return $r;
}(this))?(function($this) {
var $r;
var int4 = openfl.display3D.Context3D.maxSupportedAnisotropy;
$r = int4 < 0?4294967296.0 + int4:int4 + 0.0;
return $r;
}(this)):16);
break;
}
switch(mipfilter[1]) {
case 0:
lime.graphics.opengl.GL.context.generateMipmap(3553);
lime.graphics.opengl.GL.context.texParameteri(3553,10241,9987);
break;
case 1:
lime.graphics.opengl.GL.context.generateMipmap(3553);
lime.graphics.opengl.GL.context.texParameteri(3553,10241,9984);
break;
case 2:
lime.graphics.opengl.GL.context.texParameteri(3553,10241,9729);
break;
}
} else if(js.Boot.__instanceof(texture,openfl.display3D.textures.RectangleTexture)) {
lime.graphics.opengl.GL.context.texParameteri(3553,10242,33071);
lime.graphics.opengl.GL.context.texParameteri(3553,10243,33071);
switch(filter[1]) {
case 4:
lime.graphics.opengl.GL.context.texParameteri(3553,10240,9729);
if(openfl.display3D.Context3D.supportsAnisotropy) lime.graphics.opengl.GL.context.texParameterf(3553,openfl.display3D.Context3D.TEXTURE_MAX_ANISOTROPY_EXT,1);
break;
case 5:
lime.graphics.opengl.GL.context.texParameteri(3553,10240,9728);
if(openfl.display3D.Context3D.supportsAnisotropy) lime.graphics.opengl.GL.context.texParameterf(3553,openfl.display3D.Context3D.TEXTURE_MAX_ANISOTROPY_EXT,1);
break;
case 0:
if(openfl.display3D.Context3D.supportsAnisotropy) lime.graphics.opengl.GL.context.texParameterf(3553,openfl.display3D.Context3D.TEXTURE_MAX_ANISOTROPY_EXT,(function($this) {
var $r;
var a4 = openfl.display3D.Context3D.maxSupportedAnisotropy;
$r = (function($this) {
var $r;
var aNeg4 = 2 < 0;
var bNeg4 = a4 < 0;
$r = aNeg4 != bNeg4?aNeg4:2 > a4;
return $r;
}($this));
return $r;
}(this))?(function($this) {
var $r;
var int5 = openfl.display3D.Context3D.maxSupportedAnisotropy;
$r = int5 < 0?4294967296.0 + int5:int5 + 0.0;
return $r;
}(this)):2);
break;
case 1:
if(openfl.display3D.Context3D.supportsAnisotropy) lime.graphics.opengl.GL.context.texParameterf(3553,openfl.display3D.Context3D.TEXTURE_MAX_ANISOTROPY_EXT,(function($this) {
var $r;
var a5 = openfl.display3D.Context3D.maxSupportedAnisotropy;
$r = (function($this) {
var $r;
var aNeg5 = 4 < 0;
var bNeg5 = a5 < 0;
$r = aNeg5 != bNeg5?aNeg5:4 > a5;
return $r;
}($this));
return $r;
}(this))?(function($this) {
var $r;
var int6 = openfl.display3D.Context3D.maxSupportedAnisotropy;
$r = int6 < 0?4294967296.0 + int6:int6 + 0.0;
return $r;
}(this)):4);
break;
case 2:
if(openfl.display3D.Context3D.supportsAnisotropy) lime.graphics.opengl.GL.context.texParameterf(3553,openfl.display3D.Context3D.TEXTURE_MAX_ANISOTROPY_EXT,(function($this) {
var $r;
var a6 = openfl.display3D.Context3D.maxSupportedAnisotropy;
$r = (function($this) {
var $r;
var aNeg6 = 8 < 0;
var bNeg6 = a6 < 0;
$r = aNeg6 != bNeg6?aNeg6:8 > a6;
return $r;
}($this));
return $r;
}(this))?(function($this) {
var $r;
var int7 = openfl.display3D.Context3D.maxSupportedAnisotropy;
$r = int7 < 0?4294967296.0 + int7:int7 + 0.0;
return $r;
}(this)):8);
break;
case 3:
if(openfl.display3D.Context3D.supportsAnisotropy) lime.graphics.opengl.GL.context.texParameterf(3553,openfl.display3D.Context3D.TEXTURE_MAX_ANISOTROPY_EXT,(function($this) {
var $r;
var a7 = openfl.display3D.Context3D.maxSupportedAnisotropy;
$r = (function($this) {
var $r;
var aNeg7 = 16 < 0;
var bNeg7 = a7 < 0;
$r = aNeg7 != bNeg7?aNeg7:16 > a7;
return $r;
}($this));
return $r;
}(this))?(function($this) {
var $r;
var int8 = openfl.display3D.Context3D.maxSupportedAnisotropy;
$r = int8 < 0?4294967296.0 + int8:int8 + 0.0;
return $r;
}(this)):16);
break;
}
lime.graphics.opengl.GL.context.texParameteri(3553,10241,9729);
} else if(js.Boot.__instanceof(texture,openfl.display3D.textures.CubeTexture)) {
switch(wrap[1]) {
case 0:
lime.graphics.opengl.GL.context.texParameteri(34067,10242,33071);
lime.graphics.opengl.GL.context.texParameteri(34067,10243,33071);
break;
case 1:
lime.graphics.opengl.GL.context.texParameteri(34067,10242,10497);
lime.graphics.opengl.GL.context.texParameteri(34067,10243,10497);
break;
}
switch(filter[1]) {
case 4:
lime.graphics.opengl.GL.context.texParameteri(34067,10240,9729);
if(openfl.display3D.Context3D.supportsAnisotropy) lime.graphics.opengl.GL.context.texParameterf(34067,openfl.display3D.Context3D.TEXTURE_MAX_ANISOTROPY_EXT,1);
break;
case 5:
lime.graphics.opengl.GL.context.texParameteri(34067,10240,9728);
if(openfl.display3D.Context3D.supportsAnisotropy) lime.graphics.opengl.GL.context.texParameterf(34067,openfl.display3D.Context3D.TEXTURE_MAX_ANISOTROPY_EXT,1);
break;
case 0:
if(openfl.display3D.Context3D.supportsAnisotropy) lime.graphics.opengl.GL.context.texParameterf(34067,openfl.display3D.Context3D.TEXTURE_MAX_ANISOTROPY_EXT,(function($this) {
var $r;
var a8 = openfl.display3D.Context3D.maxSupportedAnisotropy;
$r = (function($this) {
var $r;
var aNeg8 = 2 < 0;
var bNeg8 = a8 < 0;
$r = aNeg8 != bNeg8?aNeg8:2 > a8;
return $r;
}($this));
return $r;
}(this))?(function($this) {
var $r;
var int9 = openfl.display3D.Context3D.maxSupportedAnisotropy;
$r = int9 < 0?4294967296.0 + int9:int9 + 0.0;
return $r;
}(this)):2);
break;
case 1:
if(openfl.display3D.Context3D.supportsAnisotropy) lime.graphics.opengl.GL.context.texParameterf(34067,openfl.display3D.Context3D.TEXTURE_MAX_ANISOTROPY_EXT,(function($this) {
var $r;
var a9 = openfl.display3D.Context3D.maxSupportedAnisotropy;
$r = (function($this) {
var $r;
var aNeg9 = 4 < 0;
var bNeg9 = a9 < 0;
$r = aNeg9 != bNeg9?aNeg9:4 > a9;
return $r;
}($this));
return $r;
}(this))?(function($this) {
var $r;
var int10 = openfl.display3D.Context3D.maxSupportedAnisotropy;
$r = int10 < 0?4294967296.0 + int10:int10 + 0.0;
return $r;
}(this)):4);
break;
case 2:
if(openfl.display3D.Context3D.supportsAnisotropy) lime.graphics.opengl.GL.context.texParameterf(34067,openfl.display3D.Context3D.TEXTURE_MAX_ANISOTROPY_EXT,(function($this) {
var $r;
var a10 = openfl.display3D.Context3D.maxSupportedAnisotropy;
$r = (function($this) {
var $r;
var aNeg10 = 8 < 0;
var bNeg10 = a10 < 0;
$r = aNeg10 != bNeg10?aNeg10:8 > a10;
return $r;
}($this));
return $r;
}(this))?(function($this) {
var $r;
var int11 = openfl.display3D.Context3D.maxSupportedAnisotropy;
$r = int11 < 0?4294967296.0 + int11:int11 + 0.0;
return $r;
}(this)):8);
break;
case 3:
if(openfl.display3D.Context3D.supportsAnisotropy) lime.graphics.opengl.GL.context.texParameterf(34067,openfl.display3D.Context3D.TEXTURE_MAX_ANISOTROPY_EXT,(function($this) {
var $r;
var a11 = openfl.display3D.Context3D.maxSupportedAnisotropy;
$r = (function($this) {
var $r;
var aNeg11 = 16 < 0;
var bNeg11 = a11 < 0;
$r = aNeg11 != bNeg11?aNeg11:16 > a11;
return $r;
}($this));
return $r;
}(this))?(function($this) {
var $r;
var int12 = openfl.display3D.Context3D.maxSupportedAnisotropy;
$r = int12 < 0?4294967296.0 + int12:int12 + 0.0;
return $r;
}(this)):16);
break;
}
switch(mipfilter[1]) {
case 0:
lime.graphics.opengl.GL.context.texParameteri(34067,10241,9987);
break;
case 1:
lime.graphics.opengl.GL.context.texParameteri(34067,10241,9984);
break;
case 2:
lime.graphics.opengl.GL.context.texParameteri(34067,10241,9729);
break;
}
} else throw "Texture of type " + Type.getClassName(Type.getClass(texture)) + " not supported yet";
}
,setVertexBufferAt: function(index,buffer,bufferOffset,format) {
if(bufferOffset == null) bufferOffset = 0;
var locationName = "va" + index;
this.setGLSLVertexBufferAt(locationName,buffer,bufferOffset,format);
}
,__getUniformLocationNameFromAgalRegisterIndex: function(programType,firstRegister) {
if(programType == openfl.display3D.Context3DProgramType.VERTEX) return "vc" + firstRegister; else if(programType == openfl.display3D.Context3DProgramType.FRAGMENT) return "fc" + firstRegister;
throw "Program Type " + Std.string(programType) + " not supported";
}
,__updateBlendStatus: function() {
if(this.blendEnabled) {
lime.graphics.opengl.GL.context.enable(3042);
lime.graphics.opengl.GL.context.blendEquation(32774);
lime.graphics.opengl.GL.context.blendFunc(this.blendSourceFactor,this.blendDestinationFactor);
} else lime.graphics.opengl.GL.context.disable(3042);
}
,__class__: openfl.display3D.Context3D
};
openfl.display3D._Context3D = {};
openfl.display3D._Context3D.SamplerState = function() {
};
$hxClasses["openfl.display3D._Context3D.SamplerState"] = openfl.display3D._Context3D.SamplerState;
openfl.display3D._Context3D.SamplerState.__name__ = ["openfl","display3D","_Context3D","SamplerState"];
openfl.display3D._Context3D.SamplerState.prototype = {
__class__: openfl.display3D._Context3D.SamplerState
};
openfl.display3D.Context3DClearMask = function() { };
$hxClasses["openfl.display3D.Context3DClearMask"] = openfl.display3D.Context3DClearMask;
openfl.display3D.Context3DClearMask.__name__ = ["openfl","display3D","Context3DClearMask"];
openfl.display3D.Context3DMipFilter = $hxClasses["openfl.display3D.Context3DMipFilter"] = { __ename__ : ["openfl","display3D","Context3DMipFilter"], __constructs__ : ["MIPLINEAR","MIPNEAREST","MIPNONE"] };
openfl.display3D.Context3DMipFilter.MIPLINEAR = ["MIPLINEAR",0];
openfl.display3D.Context3DMipFilter.MIPLINEAR.toString = $estr;
openfl.display3D.Context3DMipFilter.MIPLINEAR.__enum__ = openfl.display3D.Context3DMipFilter;
openfl.display3D.Context3DMipFilter.MIPNEAREST = ["MIPNEAREST",1];
openfl.display3D.Context3DMipFilter.MIPNEAREST.toString = $estr;
openfl.display3D.Context3DMipFilter.MIPNEAREST.__enum__ = openfl.display3D.Context3DMipFilter;
openfl.display3D.Context3DMipFilter.MIPNONE = ["MIPNONE",2];
openfl.display3D.Context3DMipFilter.MIPNONE.toString = $estr;
openfl.display3D.Context3DMipFilter.MIPNONE.__enum__ = openfl.display3D.Context3DMipFilter;
openfl.display3D.Context3DProgramType = $hxClasses["openfl.display3D.Context3DProgramType"] = { __ename__ : ["openfl","display3D","Context3DProgramType"], __constructs__ : ["VERTEX","FRAGMENT"] };
openfl.display3D.Context3DProgramType.VERTEX = ["VERTEX",0];
openfl.display3D.Context3DProgramType.VERTEX.toString = $estr;
openfl.display3D.Context3DProgramType.VERTEX.__enum__ = openfl.display3D.Context3DProgramType;
openfl.display3D.Context3DProgramType.FRAGMENT = ["FRAGMENT",1];
openfl.display3D.Context3DProgramType.FRAGMENT.toString = $estr;
openfl.display3D.Context3DProgramType.FRAGMENT.__enum__ = openfl.display3D.Context3DProgramType;
openfl.display3D.Context3DTextureFilter = $hxClasses["openfl.display3D.Context3DTextureFilter"] = { __ename__ : ["openfl","display3D","Context3DTextureFilter"], __constructs__ : ["ANISOTROPIC2X","ANISOTROPIC4X","ANISOTROPIC8X","ANISOTROPIC16X","LINEAR","NEAREST"] };
openfl.display3D.Context3DTextureFilter.ANISOTROPIC2X = ["ANISOTROPIC2X",0];
openfl.display3D.Context3DTextureFilter.ANISOTROPIC2X.toString = $estr;
openfl.display3D.Context3DTextureFilter.ANISOTROPIC2X.__enum__ = openfl.display3D.Context3DTextureFilter;
openfl.display3D.Context3DTextureFilter.ANISOTROPIC4X = ["ANISOTROPIC4X",1];
openfl.display3D.Context3DTextureFilter.ANISOTROPIC4X.toString = $estr;
openfl.display3D.Context3DTextureFilter.ANISOTROPIC4X.__enum__ = openfl.display3D.Context3DTextureFilter;
openfl.display3D.Context3DTextureFilter.ANISOTROPIC8X = ["ANISOTROPIC8X",2];
openfl.display3D.Context3DTextureFilter.ANISOTROPIC8X.toString = $estr;
openfl.display3D.Context3DTextureFilter.ANISOTROPIC8X.__enum__ = openfl.display3D.Context3DTextureFilter;
openfl.display3D.Context3DTextureFilter.ANISOTROPIC16X = ["ANISOTROPIC16X",3];
openfl.display3D.Context3DTextureFilter.ANISOTROPIC16X.toString = $estr;
openfl.display3D.Context3DTextureFilter.ANISOTROPIC16X.__enum__ = openfl.display3D.Context3DTextureFilter;
openfl.display3D.Context3DTextureFilter.LINEAR = ["LINEAR",4];
openfl.display3D.Context3DTextureFilter.LINEAR.toString = $estr;
openfl.display3D.Context3DTextureFilter.LINEAR.__enum__ = openfl.display3D.Context3DTextureFilter;
openfl.display3D.Context3DTextureFilter.NEAREST = ["NEAREST",5];
openfl.display3D.Context3DTextureFilter.NEAREST.toString = $estr;
openfl.display3D.Context3DTextureFilter.NEAREST.__enum__ = openfl.display3D.Context3DTextureFilter;
openfl.display3D.Context3DTextureFormat = $hxClasses["openfl.display3D.Context3DTextureFormat"] = { __ename__ : ["openfl","display3D","Context3DTextureFormat"], __constructs__ : ["BGRA","COMPRESSED","COMPRESSED_ALPHA"] };
openfl.display3D.Context3DTextureFormat.BGRA = ["BGRA",0];
openfl.display3D.Context3DTextureFormat.BGRA.toString = $estr;
openfl.display3D.Context3DTextureFormat.BGRA.__enum__ = openfl.display3D.Context3DTextureFormat;
openfl.display3D.Context3DTextureFormat.COMPRESSED = ["COMPRESSED",1];
openfl.display3D.Context3DTextureFormat.COMPRESSED.toString = $estr;
openfl.display3D.Context3DTextureFormat.COMPRESSED.__enum__ = openfl.display3D.Context3DTextureFormat;
openfl.display3D.Context3DTextureFormat.COMPRESSED_ALPHA = ["COMPRESSED_ALPHA",2];
openfl.display3D.Context3DTextureFormat.COMPRESSED_ALPHA.toString = $estr;
openfl.display3D.Context3DTextureFormat.COMPRESSED_ALPHA.__enum__ = openfl.display3D.Context3DTextureFormat;
openfl.display3D._Context3DTriangleFace = {};
openfl.display3D._Context3DTriangleFace.Context3DTriangleFace_Impl_ = function() { };
$hxClasses["openfl.display3D._Context3DTriangleFace.Context3DTriangleFace_Impl_"] = openfl.display3D._Context3DTriangleFace.Context3DTriangleFace_Impl_;
openfl.display3D._Context3DTriangleFace.Context3DTriangleFace_Impl_.__name__ = ["openfl","display3D","_Context3DTriangleFace","Context3DTriangleFace_Impl_"];
openfl.display3D._Context3DTriangleFace.Context3DTriangleFace_Impl_._new = function(a) {
return a;
};
openfl.display3D._Context3DTriangleFace.Context3DTriangleFace_Impl_.fromInt = function(s) {
return s;
};
openfl.display3D._Context3DTriangleFace.Context3DTriangleFace_Impl_.toInt = function(this1) {
return this1;
};
openfl.display3D.Context3DVertexBufferFormat = $hxClasses["openfl.display3D.Context3DVertexBufferFormat"] = { __ename__ : ["openfl","display3D","Context3DVertexBufferFormat"], __constructs__ : ["BYTES_4","FLOAT_1","FLOAT_2","FLOAT_3","FLOAT_4"] };
openfl.display3D.Context3DVertexBufferFormat.BYTES_4 = ["BYTES_4",0];
openfl.display3D.Context3DVertexBufferFormat.BYTES_4.toString = $estr;
openfl.display3D.Context3DVertexBufferFormat.BYTES_4.__enum__ = openfl.display3D.Context3DVertexBufferFormat;
openfl.display3D.Context3DVertexBufferFormat.FLOAT_1 = ["FLOAT_1",1];
openfl.display3D.Context3DVertexBufferFormat.FLOAT_1.toString = $estr;
openfl.display3D.Context3DVertexBufferFormat.FLOAT_1.__enum__ = openfl.display3D.Context3DVertexBufferFormat;
openfl.display3D.Context3DVertexBufferFormat.FLOAT_2 = ["FLOAT_2",2];
openfl.display3D.Context3DVertexBufferFormat.FLOAT_2.toString = $estr;
openfl.display3D.Context3DVertexBufferFormat.FLOAT_2.__enum__ = openfl.display3D.Context3DVertexBufferFormat;
openfl.display3D.Context3DVertexBufferFormat.FLOAT_3 = ["FLOAT_3",3];
openfl.display3D.Context3DVertexBufferFormat.FLOAT_3.toString = $estr;
openfl.display3D.Context3DVertexBufferFormat.FLOAT_3.__enum__ = openfl.display3D.Context3DVertexBufferFormat;
openfl.display3D.Context3DVertexBufferFormat.FLOAT_4 = ["FLOAT_4",4];
openfl.display3D.Context3DVertexBufferFormat.FLOAT_4.toString = $estr;
openfl.display3D.Context3DVertexBufferFormat.FLOAT_4.__enum__ = openfl.display3D.Context3DVertexBufferFormat;
openfl.display3D.Context3DWrapMode = $hxClasses["openfl.display3D.Context3DWrapMode"] = { __ename__ : ["openfl","display3D","Context3DWrapMode"], __constructs__ : ["CLAMP","REPEAT"] };
openfl.display3D.Context3DWrapMode.CLAMP = ["CLAMP",0];
openfl.display3D.Context3DWrapMode.CLAMP.toString = $estr;
openfl.display3D.Context3DWrapMode.CLAMP.__enum__ = openfl.display3D.Context3DWrapMode;
openfl.display3D.Context3DWrapMode.REPEAT = ["REPEAT",1];
openfl.display3D.Context3DWrapMode.REPEAT.toString = $estr;
openfl.display3D.Context3DWrapMode.REPEAT.__enum__ = openfl.display3D.Context3DWrapMode;
openfl.display3D.IndexBuffer3D = function(glBuffer,numIndices) {
this.glBuffer = glBuffer;
this.numIndices = numIndices;
};
$hxClasses["openfl.display3D.IndexBuffer3D"] = openfl.display3D.IndexBuffer3D;
openfl.display3D.IndexBuffer3D.__name__ = ["openfl","display3D","IndexBuffer3D"];
openfl.display3D.IndexBuffer3D.prototype = {
dispose: function() {
lime.graphics.opengl.GL.context.deleteBuffer(this.glBuffer);
}
,uploadFromByteArray: function(byteArray,byteArrayOffset,startOffset,count) {
var bytesPerIndex = 2;
lime.graphics.opengl.GL.context.bindBuffer(34963,this.glBuffer);
var length = count * bytesPerIndex;
var offset = byteArrayOffset + startOffset * bytesPerIndex;
var indices;
indices = new Int16Array(length);
byteArray.position = offset;
var i = 0;
while(byteArray.position < length + offset) {
indices[i] = byteArray.readUnsignedByte();
i++;
}
lime.graphics.opengl.GL.context.bufferData(34963,indices,35044);
}
,uploadFromVector: function(data,startOffset,count) {
lime.graphics.opengl.GL.context.bindBuffer(34963,this.glBuffer);
var indices;
indices = new Int16Array(count);
var _g1 = startOffset;
var _g = startOffset + count;
while(_g1 < _g) {
var i = _g1++;
indices[i] = data.data[i];
}
lime.graphics.opengl.GL.context.bufferData(34963,indices,35044);
}
,__class__: openfl.display3D.IndexBuffer3D
};
openfl.display3D.Program3D = function(program) {
this.glProgram = program;
};
$hxClasses["openfl.display3D.Program3D"] = openfl.display3D.Program3D;
openfl.display3D.Program3D.__name__ = ["openfl","display3D","Program3D"];
openfl.display3D.Program3D.prototype = {
dispose: function() {
lime.graphics.opengl.GL.context.deleteProgram(this.glProgram);
}
,upload: function(vertexShader,fragmentShader) {
lime.graphics.opengl.GL.context.attachShader(this.glProgram,vertexShader);
lime.graphics.opengl.GL.context.attachShader(this.glProgram,fragmentShader);
lime.graphics.opengl.GL.context.linkProgram(this.glProgram);
if(lime.graphics.opengl.GL.context.getProgramParameter(this.glProgram,35714) == 0) {
var result = lime.graphics.opengl.GL.context.getProgramInfoLog(this.glProgram);
if(result != "") throw result;
}
}
,__class__: openfl.display3D.Program3D
};
openfl.display3D.VertexBuffer3D = function(glBuffer,numVertices,data32PerVertex) {
this.glBuffer = glBuffer;
this.numVertices = numVertices;
this.data32PerVertex = data32PerVertex;
};
$hxClasses["openfl.display3D.VertexBuffer3D"] = openfl.display3D.VertexBuffer3D;
openfl.display3D.VertexBuffer3D.__name__ = ["openfl","display3D","VertexBuffer3D"];
openfl.display3D.VertexBuffer3D.prototype = {
dispose: function() {
lime.graphics.opengl.GL.context.deleteBuffer(this.glBuffer);
}
,uploadFromByteArray: function(byteArray,byteArrayOffset,startOffset,count) {
var bytesPerVertex = this.data32PerVertex * 4;
lime.graphics.opengl.GL.context.bindBuffer(34962,this.glBuffer);
var length = count * bytesPerVertex;
var offset = byteArrayOffset + startOffset * bytesPerVertex;
var float32Array;
float32Array = new Float32Array(length);
byteArray.position = offset;
var i = 0;
while(byteArray.position < length + offset) {
float32Array[i] = byteArray.readUnsignedByte();
i++;
}
lime.graphics.opengl.GL.context.bufferData(34962,float32Array,35044);
}
,uploadFromFloat32Array: function(data,startVertex,numVertices) {
lime.graphics.opengl.GL.context.bindBuffer(34962,this.glBuffer);
lime.graphics.opengl.GL.context.bufferData(34962,data,35044);
}
,uploadFromVector: function(data,startVertex,numVertices) {
var bytesPerVertex = this.data32PerVertex * 4;
lime.graphics.opengl.GL.context.bindBuffer(34962,this.glBuffer);
var length = numVertices * this.data32PerVertex;
var offset = startVertex;
var float32Array;
float32Array = new Float32Array(length);
var _g1 = startVertex;
var _g = startVertex + length;
while(_g1 < _g) {
var i = _g1++;
float32Array[i] = data.data[i];
}
lime.graphics.opengl.GL.context.bufferData(34962,float32Array,35044);
float32Array = null;
}
,__class__: openfl.display3D.VertexBuffer3D
};
openfl.display3D.textures = {};
openfl.display3D.textures.TextureBase = function(glTexture,width,height) {
if(height == null) height = 0;
if(width == null) width = 0;
openfl.events.EventDispatcher.call(this);
this.width = width;
this.height = height;
this.glTexture = glTexture;
};
$hxClasses["openfl.display3D.textures.TextureBase"] = openfl.display3D.textures.TextureBase;
openfl.display3D.textures.TextureBase.__name__ = ["openfl","display3D","textures","TextureBase"];
openfl.display3D.textures.TextureBase.__super__ = openfl.events.EventDispatcher;
openfl.display3D.textures.TextureBase.prototype = $extend(openfl.events.EventDispatcher.prototype,{
dispose: function() {
lime.graphics.opengl.GL.context.deleteTexture(this.glTexture);
}
,__class__: openfl.display3D.textures.TextureBase
});
openfl.display3D.textures.CubeTexture = function(glTexture,size) {
openfl.display3D.textures.TextureBase.call(this,glTexture,size,size);
this.size = size;
this._textures = [];
var _g = 0;
while(_g < 6) {
var i = _g++;
this._textures[i] = lime.graphics.opengl.GL.context.createTexture();
}
};
$hxClasses["openfl.display3D.textures.CubeTexture"] = openfl.display3D.textures.CubeTexture;
openfl.display3D.textures.CubeTexture.__name__ = ["openfl","display3D","textures","CubeTexture"];
openfl.display3D.textures.CubeTexture.__super__ = openfl.display3D.textures.TextureBase;
openfl.display3D.textures.CubeTexture.prototype = $extend(openfl.display3D.textures.TextureBase.prototype,{
glTextureAt: function(index) {
return this._textures[index];
}
,uploadCompressedTextureFromByteArray: function(data,byteArrayOffset,async) {
if(async == null) async = false;
}
,uploadFromBitmapData: function(bitmapData,side,miplevel) {
if(miplevel == null) miplevel = 0;
var source = bitmapData.__image.get_data();
lime.graphics.opengl.GL.context.bindTexture(34067,this.glTexture);
switch(side) {
case 0:
lime.graphics.opengl.GL.context.texImage2D(34069,miplevel,6408,bitmapData.width,bitmapData.height,0,6408,5121,source);
break;
case 1:
lime.graphics.opengl.GL.context.texImage2D(34070,miplevel,6408,bitmapData.width,bitmapData.height,0,6408,5121,source);
break;
case 2:
lime.graphics.opengl.GL.context.texImage2D(34071,miplevel,6408,bitmapData.width,bitmapData.height,0,6408,5121,source);
break;
case 3:
lime.graphics.opengl.GL.context.texImage2D(34072,miplevel,6408,bitmapData.width,bitmapData.height,0,6408,5121,source);
break;
case 4:
lime.graphics.opengl.GL.context.texImage2D(34073,miplevel,6408,bitmapData.width,bitmapData.height,0,6408,5121,source);
break;
case 5:
lime.graphics.opengl.GL.context.texImage2D(34074,miplevel,6408,bitmapData.width,bitmapData.height,0,6408,5121,source);
break;
default:
throw "unknown side type";
}
lime.graphics.opengl.GL.context.bindTexture(34067,null);
}
,uploadFromByteArray: function(data,byteArrayOffset,side,miplevel) {
if(miplevel == null) miplevel = 0;
}
,__class__: openfl.display3D.textures.CubeTexture
});
openfl.display3D.textures.RectangleTexture = function(glTexture,optimize,width,height) {
this.optimizeForRenderToTexture = optimize;
if(this.optimizeForRenderToTexture == null) this.optimizeForRenderToTexture = false;
openfl.display3D.textures.TextureBase.call(this,glTexture,width,height);
};
$hxClasses["openfl.display3D.textures.RectangleTexture"] = openfl.display3D.textures.RectangleTexture;
openfl.display3D.textures.RectangleTexture.__name__ = ["openfl","display3D","textures","RectangleTexture"];
openfl.display3D.textures.RectangleTexture.__super__ = openfl.display3D.textures.TextureBase;
openfl.display3D.textures.RectangleTexture.prototype = $extend(openfl.display3D.textures.TextureBase.prototype,{
uploadFromBitmapData: function(bitmapData,miplevel) {
if(miplevel == null) miplevel = 0;
var p = lime.utils.ByteArray.__ofBuffer(bitmapData.__image.get_data().buffer);
this.width = bitmapData.width;
this.height = bitmapData.height;
this.uploadFromByteArray(p,0);
}
,uploadFromByteArray: function(data,byteArrayOffset) {
lime.graphics.opengl.GL.context.bindTexture(3553,this.glTexture);
if(this.optimizeForRenderToTexture) lime.graphics.opengl.GL.context.pixelStorei(37440,1);
lime.graphics.opengl.GL.context.texParameteri(3553,10240,9728);
lime.graphics.opengl.GL.context.texParameteri(3553,10241,9728);
lime.graphics.opengl.GL.context.texParameteri(3553,10242,33071);
lime.graphics.opengl.GL.context.texParameteri(3553,10243,33071);
var source = new Uint8Array(data.length);
data.position = byteArrayOffset;
var i = 0;
while(data.position < data.length) {
source[i] = data.readUnsignedByte();
i++;
}
lime.graphics.opengl.GL.context.texImage2D(3553,0,6408,this.width,this.height,0,6408,5121,source);
lime.graphics.opengl.GL.context.bindTexture(3553,null);
}
,__class__: openfl.display3D.textures.RectangleTexture
});
openfl.display3D.textures.Texture = function(glTexture,optimize,width,height) {
this.optimizeForRenderToTexture = optimize;
if(this.optimizeForRenderToTexture == null) this.optimizeForRenderToTexture = false;
openfl.display3D.textures.TextureBase.call(this,glTexture,width,height);
};
$hxClasses["openfl.display3D.textures.Texture"] = openfl.display3D.textures.Texture;
openfl.display3D.textures.Texture.__name__ = ["openfl","display3D","textures","Texture"];
openfl.display3D.textures.Texture.__super__ = openfl.display3D.textures.TextureBase;
openfl.display3D.textures.Texture.prototype = $extend(openfl.display3D.textures.TextureBase.prototype,{
uploadCompressedTextureFromByteArray: function(data,byteArrayOffset,async) {
if(async == null) async = false;
}
,uploadFromBitmapData: function(bitmapData,miplevel) {
if(miplevel == null) miplevel = 0;
var p = lime.utils.ByteArray.__ofBuffer(bitmapData.__image.get_data().buffer);
this.width = bitmapData.width;
this.height = bitmapData.height;
this.uploadFromByteArray(p,0,miplevel);
}
,uploadFromByteArray: function(data,byteArrayOffset,miplevel) {
if(miplevel == null) miplevel = 0;
lime.graphics.opengl.GL.context.bindTexture(3553,this.glTexture);
if(this.optimizeForRenderToTexture) {
lime.graphics.opengl.GL.context.pixelStorei(37440,1);
lime.graphics.opengl.GL.context.texParameteri(3553,10240,9728);
lime.graphics.opengl.GL.context.texParameteri(3553,10241,9728);
lime.graphics.opengl.GL.context.texParameteri(3553,10242,33071);
lime.graphics.opengl.GL.context.texParameteri(3553,10243,33071);
}
var source = new Uint8Array(data.length);
data.position = byteArrayOffset;
var i = 0;
while(data.position < data.length) {
source[i] = data.readUnsignedByte();
i++;
}
lime.graphics.opengl.GL.context.texImage2D(3553,miplevel,6408,this.width,this.height,0,6408,5121,source);
lime.graphics.opengl.GL.context.bindTexture(3553,null);
}
,__class__: openfl.display3D.textures.Texture
});
openfl.errors = {};
openfl.errors.Error = function(message,id) {
if(id == null) id = 0;
if(message == null) message = "";
this.message = message;
this.errorID = id;
this.name = "Error";
};
$hxClasses["openfl.errors.Error"] = openfl.errors.Error;
openfl.errors.Error.__name__ = ["openfl","errors","Error"];
openfl.errors.Error.prototype = {
getStackTrace: function() {
return haxe.CallStack.toString(haxe.CallStack.exceptionStack());
}
,toString: function() {
if(this.message != null) return this.message; else return "Error";
}
,__class__: openfl.errors.Error
};
openfl.errors.ArgumentError = function(inMessage) {
if(inMessage == null) inMessage = "";
openfl.errors.Error.call(this,inMessage);
};
$hxClasses["openfl.errors.ArgumentError"] = openfl.errors.ArgumentError;
openfl.errors.ArgumentError.__name__ = ["openfl","errors","ArgumentError"];
openfl.errors.ArgumentError.__super__ = openfl.errors.Error;
openfl.errors.ArgumentError.prototype = $extend(openfl.errors.Error.prototype,{
__class__: openfl.errors.ArgumentError
});
openfl.errors.IOError = function(message) {
if(message == null) message = "";
openfl.errors.Error.call(this,message);
};
$hxClasses["openfl.errors.IOError"] = openfl.errors.IOError;
openfl.errors.IOError.__name__ = ["openfl","errors","IOError"];
openfl.errors.IOError.__super__ = openfl.errors.Error;
openfl.errors.IOError.prototype = $extend(openfl.errors.Error.prototype,{
__class__: openfl.errors.IOError
});
openfl.errors.RangeError = function(inMessage) {
if(inMessage == null) inMessage = "";
openfl.errors.Error.call(this,inMessage,0);
};
$hxClasses["openfl.errors.RangeError"] = openfl.errors.RangeError;
openfl.errors.RangeError.__name__ = ["openfl","errors","RangeError"];
openfl.errors.RangeError.__super__ = openfl.errors.Error;
openfl.errors.RangeError.prototype = $extend(openfl.errors.Error.prototype,{
__class__: openfl.errors.RangeError
});
openfl.errors.TypeError = function(inMessage) {
if(inMessage == null) inMessage = "";
openfl.errors.Error.call(this,inMessage,0);
};
$hxClasses["openfl.errors.TypeError"] = openfl.errors.TypeError;
openfl.errors.TypeError.__name__ = ["openfl","errors","TypeError"];
openfl.errors.TypeError.__super__ = openfl.errors.Error;
openfl.errors.TypeError.prototype = $extend(openfl.errors.Error.prototype,{
__class__: openfl.errors.TypeError
});
openfl.events.TextEvent = function(type,bubbles,cancelable,text) {
if(text == null) text = "";
if(cancelable == null) cancelable = false;
if(bubbles == null) bubbles = false;
openfl.events.Event.call(this,type,bubbles,cancelable);
this.text = text;
};
$hxClasses["openfl.events.TextEvent"] = openfl.events.TextEvent;
openfl.events.TextEvent.__name__ = ["openfl","events","TextEvent"];
openfl.events.TextEvent.__super__ = openfl.events.Event;
openfl.events.TextEvent.prototype = $extend(openfl.events.Event.prototype,{
clone: function() {
return new openfl.events.TextEvent(this.type,this.bubbles,this.cancelable,this.text);
}
,toString: function() {
return "[TextEvent type=" + this.type + " bubbles=" + Std.string(this.bubbles) + " cancelable=" + Std.string(this.cancelable) + " text=" + this.text + "]";
}
,__class__: openfl.events.TextEvent
});
openfl.events.DataEvent = function(type,bubbles,cancelable,data) {
if(data == null) data = "";
if(cancelable == null) cancelable = false;
if(bubbles == null) bubbles = false;
openfl.events.TextEvent.call(this,type,bubbles,cancelable);
this.data = data;
};
$hxClasses["openfl.events.DataEvent"] = openfl.events.DataEvent;
openfl.events.DataEvent.__name__ = ["openfl","events","DataEvent"];
openfl.events.DataEvent.__super__ = openfl.events.TextEvent;
openfl.events.DataEvent.prototype = $extend(openfl.events.TextEvent.prototype,{
__class__: openfl.events.DataEvent
});
openfl.events.ErrorEvent = function(type,bubbles,cancelable,text,id) {
if(id == null) id = 0;
if(text == null) text = "";
if(cancelable == null) cancelable = false;
if(bubbles == null) bubbles = false;
openfl.events.TextEvent.call(this,type,bubbles,cancelable,text);
this.errorID = id;
};
$hxClasses["openfl.events.ErrorEvent"] = openfl.events.ErrorEvent;
openfl.events.ErrorEvent.__name__ = ["openfl","events","ErrorEvent"];
openfl.events.ErrorEvent.__super__ = openfl.events.TextEvent;
openfl.events.ErrorEvent.prototype = $extend(openfl.events.TextEvent.prototype,{
clone: function() {
return new openfl.events.ErrorEvent(this.type,this.bubbles,this.cancelable,this.text,this.errorID);
}
,toString: function() {
return "[ErrorEvent type=" + this.type + " bubbles=" + Std.string(this.bubbles) + " cancelable=" + Std.string(this.cancelable) + " text=" + this.text + " errorID=" + this.errorID + "]";
}
,__class__: openfl.events.ErrorEvent
});
openfl.events._EventDispatcher = {};
openfl.events._EventDispatcher.Listener = function(callback,useCapture,priority) {
this.callback = callback;
this.useCapture = useCapture;
this.priority = priority;
};
$hxClasses["openfl.events._EventDispatcher.Listener"] = openfl.events._EventDispatcher.Listener;
openfl.events._EventDispatcher.Listener.__name__ = ["openfl","events","_EventDispatcher","Listener"];
openfl.events._EventDispatcher.Listener.prototype = {
match: function(callback,useCapture) {
return Reflect.compareMethods(this.callback,callback) && this.useCapture == useCapture;
}
,__class__: openfl.events._EventDispatcher.Listener
};
openfl.events.EventPhase = $hxClasses["openfl.events.EventPhase"] = { __ename__ : ["openfl","events","EventPhase"], __constructs__ : ["CAPTURING_PHASE","AT_TARGET","BUBBLING_PHASE"] };
openfl.events.EventPhase.CAPTURING_PHASE = ["CAPTURING_PHASE",0];
openfl.events.EventPhase.CAPTURING_PHASE.toString = $estr;
openfl.events.EventPhase.CAPTURING_PHASE.__enum__ = openfl.events.EventPhase;
openfl.events.EventPhase.AT_TARGET = ["AT_TARGET",1];
openfl.events.EventPhase.AT_TARGET.toString = $estr;
openfl.events.EventPhase.AT_TARGET.__enum__ = openfl.events.EventPhase;
openfl.events.EventPhase.BUBBLING_PHASE = ["BUBBLING_PHASE",2];
openfl.events.EventPhase.BUBBLING_PHASE.toString = $estr;
openfl.events.EventPhase.BUBBLING_PHASE.__enum__ = openfl.events.EventPhase;
openfl.events.FocusEvent = function(type,bubbles,cancelable,relatedObject,shiftKey,keyCode) {
if(keyCode == null) keyCode = 0;
if(shiftKey == null) shiftKey = false;
if(cancelable == null) cancelable = false;
if(bubbles == null) bubbles = false;
openfl.events.Event.call(this,type,bubbles,cancelable);
this.keyCode = keyCode;
this.shiftKey = shiftKey;
this.relatedObject = relatedObject;
};
$hxClasses["openfl.events.FocusEvent"] = openfl.events.FocusEvent;
openfl.events.FocusEvent.__name__ = ["openfl","events","FocusEvent"];
openfl.events.FocusEvent.__super__ = openfl.events.Event;
openfl.events.FocusEvent.prototype = $extend(openfl.events.Event.prototype,{
clone: function() {
var event = new openfl.events.FocusEvent(this.type,this.bubbles,this.cancelable,this.relatedObject,this.shiftKey,this.keyCode);
event.target = this.target;
event.currentTarget = this.currentTarget;
event.eventPhase = this.eventPhase;
return event;
}
,toString: function() {
return "[FocusEvent type=" + this.type + " bubbles=" + Std.string(this.bubbles) + " cancelable=" + Std.string(this.cancelable) + " relatedObject=" + Std.string(this.relatedObject) + " shiftKey=" + Std.string(this.shiftKey) + " keyCode=" + this.keyCode + "]";
}
,__class__: openfl.events.FocusEvent
});
openfl.events.IOErrorEvent = function(type,bubbles,cancelable,text,id) {
if(id == null) id = 0;
if(text == null) text = "";
if(cancelable == null) cancelable = false;
if(bubbles == null) bubbles = true;
openfl.events.ErrorEvent.call(this,type,bubbles,cancelable,text,id);
};
$hxClasses["openfl.events.IOErrorEvent"] = openfl.events.IOErrorEvent;
openfl.events.IOErrorEvent.__name__ = ["openfl","events","IOErrorEvent"];
openfl.events.IOErrorEvent.__super__ = openfl.events.ErrorEvent;
openfl.events.IOErrorEvent.prototype = $extend(openfl.events.ErrorEvent.prototype,{
clone: function() {
return new openfl.events.IOErrorEvent(this.type,this.bubbles,this.cancelable,this.text,this.errorID);
}
,toString: function() {
return "[IOErrorEvent type=" + this.type + " bubbles=" + Std.string(this.bubbles) + " cancelable=" + Std.string(this.cancelable) + " text=" + this.text + " errorID=" + this.errorID + "]";
}
,__class__: openfl.events.IOErrorEvent
});
openfl.events.KeyboardEvent = function(type,bubbles,cancelable,charCodeValue,keyCodeValue,keyLocationValue,ctrlKeyValue,altKeyValue,shiftKeyValue,controlKeyValue,commandKeyValue) {
if(commandKeyValue == null) commandKeyValue = false;
if(controlKeyValue == null) controlKeyValue = false;
if(shiftKeyValue == null) shiftKeyValue = false;
if(altKeyValue == null) altKeyValue = false;
if(ctrlKeyValue == null) ctrlKeyValue = false;
if(keyCodeValue == null) keyCodeValue = 0;
if(charCodeValue == null) charCodeValue = 0;
if(cancelable == null) cancelable = false;
if(bubbles == null) bubbles = false;
openfl.events.Event.call(this,type,bubbles,cancelable);
this.charCode = charCodeValue;
this.keyCode = keyCodeValue;
if(keyLocationValue != null) this.keyLocation = keyLocationValue; else this.keyLocation = 0;
this.ctrlKey = ctrlKeyValue;
this.altKey = altKeyValue;
this.shiftKey = shiftKeyValue;
this.controlKey = controlKeyValue;
this.commandKey = commandKeyValue;
};
$hxClasses["openfl.events.KeyboardEvent"] = openfl.events.KeyboardEvent;
openfl.events.KeyboardEvent.__name__ = ["openfl","events","KeyboardEvent"];
openfl.events.KeyboardEvent.__super__ = openfl.events.Event;
openfl.events.KeyboardEvent.prototype = $extend(openfl.events.Event.prototype,{
clone: function() {
return new openfl.events.KeyboardEvent(this.type,this.bubbles,this.cancelable,this.charCode,this.keyCode,this.keyLocation,this.ctrlKey,this.altKey,this.shiftKey,this.controlKey,this.commandKey);
}
,toString: function() {
return "[KeyboardEvent type=" + this.type + " bubbles=" + Std.string(this.bubbles) + " cancelable=" + Std.string(this.cancelable) + " charCode=" + this.charCode + " keyCode=" + this.keyCode + " keyLocation=" + Std.string(this.keyLocation) + " ctrlKey=" + Std.string(this.ctrlKey) + " altKey=" + Std.string(this.altKey) + " shiftKey=" + Std.string(this.shiftKey) + "]";
}
,__class__: openfl.events.KeyboardEvent
});
openfl.events.MouseEvent = function(type,bubbles,cancelable,localX,localY,relatedObject,ctrlKey,altKey,shiftKey,buttonDown,delta,commandKey,clickCount) {
if(clickCount == null) clickCount = 0;
if(commandKey == null) commandKey = false;
if(delta == null) delta = 0;
if(buttonDown == null) buttonDown = false;
if(shiftKey == null) shiftKey = false;
if(altKey == null) altKey = false;
if(ctrlKey == null) ctrlKey = false;
if(localY == null) localY = 0;
if(localX == null) localX = 0;
if(cancelable == null) cancelable = false;
if(bubbles == null) bubbles = true;
openfl.events.Event.call(this,type,bubbles,cancelable);
this.shiftKey = shiftKey;
this.altKey = altKey;
this.ctrlKey = ctrlKey;
this.bubbles = bubbles;
this.relatedObject = relatedObject;
this.delta = delta;
this.localX = localX;
this.localY = localY;
this.buttonDown = buttonDown;
this.commandKey = commandKey;
this.clickCount = clickCount;
};
$hxClasses["openfl.events.MouseEvent"] = openfl.events.MouseEvent;
openfl.events.MouseEvent.__name__ = ["openfl","events","MouseEvent"];
openfl.events.MouseEvent.__create = function(type,button,local,target) {
var delta = 2;
switch(type) {
case openfl.events.MouseEvent.MOUSE_DOWN:case openfl.events.MouseEvent.MIDDLE_MOUSE_DOWN:case openfl.events.MouseEvent.RIGHT_MOUSE_DOWN:
openfl.events.MouseEvent.__buttonDown[button] = true;
break;
case openfl.events.MouseEvent.MOUSE_UP:case openfl.events.MouseEvent.MIDDLE_MOUSE_UP:case openfl.events.MouseEvent.RIGHT_MOUSE_UP:
openfl.events.MouseEvent.__buttonDown[button] = false;
break;
}
var pseudoEvent = new openfl.events.MouseEvent(type,true,false,local.x,local.y,null,false,false,false,openfl.events.MouseEvent.__buttonDown[button],delta);
pseudoEvent.stageX = openfl.Lib.current.stage.get_mouseX();
pseudoEvent.stageY = openfl.Lib.current.stage.get_mouseY();
pseudoEvent.target = target;
return pseudoEvent;
};
openfl.events.MouseEvent.__super__ = openfl.events.Event;
openfl.events.MouseEvent.prototype = $extend(openfl.events.Event.prototype,{
clone: function() {
return new openfl.events.MouseEvent(this.type,this.bubbles,this.cancelable,this.localX,this.localY,this.relatedObject,this.ctrlKey,this.altKey,this.shiftKey,this.buttonDown,this.delta,this.commandKey,this.clickCount);
}
,toString: function() {
return "[MouseEvent type=" + this.type + " bubbles=" + Std.string(this.bubbles) + " cancelable=" + Std.string(this.cancelable) + " localX=" + this.localX + " localY=" + this.localY + " relatedObject=" + Std.string(this.relatedObject) + " ctrlKey=" + Std.string(this.ctrlKey) + " altKey=" + Std.string(this.altKey) + " shiftKey=" + Std.string(this.shiftKey) + " buttonDown=" + Std.string(this.buttonDown) + " delta=" + this.delta + "]";
}
,updateAfterEvent: function() {
}
,__class__: openfl.events.MouseEvent
});
openfl.events.TouchEvent = function(type,bubbles,cancelable,localX,localY,sizeX,sizeY,relatedObject,ctrlKey,altKey,shiftKey,buttonDown,delta,commandKey,clickCount) {
if(clickCount == null) clickCount = 0;
if(commandKey == null) commandKey = false;
if(delta == null) delta = 0;
if(buttonDown == null) buttonDown = false;
if(shiftKey == null) shiftKey = false;
if(altKey == null) altKey = false;
if(ctrlKey == null) ctrlKey = false;
if(sizeY == null) sizeY = 1;
if(sizeX == null) sizeX = 1;
if(localY == null) localY = 0;
if(localX == null) localX = 0;
if(cancelable == null) cancelable = false;
if(bubbles == null) bubbles = true;
openfl.events.Event.call(this,type,bubbles,cancelable);
this.shiftKey = shiftKey;
this.altKey = altKey;
this.ctrlKey = ctrlKey;
this.bubbles = bubbles;
this.relatedObject = relatedObject;
this.delta = delta;
this.localX = localX;
this.localY = localY;
this.sizeX = sizeX;
this.sizeY = sizeY;
this.buttonDown = buttonDown;
this.commandKey = commandKey;
this.pressure = 1;
this.touchPointID = 0;
this.isPrimaryTouchPoint = true;
};
$hxClasses["openfl.events.TouchEvent"] = openfl.events.TouchEvent;
openfl.events.TouchEvent.__name__ = ["openfl","events","TouchEvent"];
openfl.events.TouchEvent.__create = function(type,touch,local,target) {
var evt = new openfl.events.TouchEvent(type,true,false,local.x,local.y,null,null,null,false,false,false,false,0,null,0);
evt.stageX = openfl.Lib.current.stage.get_mouseX();
evt.stageY = openfl.Lib.current.stage.get_mouseY();
evt.target = target;
return evt;
};
openfl.events.TouchEvent.__super__ = openfl.events.Event;
openfl.events.TouchEvent.prototype = $extend(openfl.events.Event.prototype,{
updateAfterEvent: function() {
}
,__class__: openfl.events.TouchEvent
});
openfl.filters = {};
openfl.filters.BitmapFilter = function() {
};
$hxClasses["openfl.filters.BitmapFilter"] = openfl.filters.BitmapFilter;
openfl.filters.BitmapFilter.__name__ = ["openfl","filters","BitmapFilter"];
openfl.filters.BitmapFilter.prototype = {
clone: function() {
return new openfl.filters.BitmapFilter();
}
,__applyFilter: function(sourceData,targetData,sourceRect,destPoint) {
}
,__class__: openfl.filters.BitmapFilter
};
openfl.geom.ColorTransform = function(redMultiplier,greenMultiplier,blueMultiplier,alphaMultiplier,redOffset,greenOffset,blueOffset,alphaOffset) {
if(alphaOffset == null) alphaOffset = 0;
if(blueOffset == null) blueOffset = 0;
if(greenOffset == null) greenOffset = 0;
if(redOffset == null) redOffset = 0;
if(alphaMultiplier == null) alphaMultiplier = 1;
if(blueMultiplier == null) blueMultiplier = 1;
if(greenMultiplier == null) greenMultiplier = 1;
if(redMultiplier == null) redMultiplier = 1;
this.redMultiplier = redMultiplier;
this.greenMultiplier = greenMultiplier;
this.blueMultiplier = blueMultiplier;
this.alphaMultiplier = alphaMultiplier;
this.redOffset = redOffset;
this.greenOffset = greenOffset;
this.blueOffset = blueOffset;
this.alphaOffset = alphaOffset;
};
$hxClasses["openfl.geom.ColorTransform"] = openfl.geom.ColorTransform;
openfl.geom.ColorTransform.__name__ = ["openfl","geom","ColorTransform"];
openfl.geom.ColorTransform.prototype = {
concat: function(second) {
this.redMultiplier += second.redMultiplier;
this.greenMultiplier += second.greenMultiplier;
this.blueMultiplier += second.blueMultiplier;
this.alphaMultiplier += second.alphaMultiplier;
}
,get_color: function() {
return (this.redOffset | 0) << 16 | (this.greenOffset | 0) << 8 | (this.blueOffset | 0);
}
,set_color: function(value) {
this.redOffset = value >> 16 & 255;
this.greenOffset = value >> 8 & 255;
this.blueOffset = value & 255;
this.redMultiplier = 0;
this.greenMultiplier = 0;
this.blueMultiplier = 0;
return this.get_color();
}
,__toLimeColorMatrix: function() {
return new Float32Array([this.redMultiplier,0,0,0,this.redOffset / 255,0,this.greenMultiplier,0,0,this.greenOffset / 255,0,0,this.blueMultiplier,0,this.blueOffset / 255,0,0,0,this.alphaMultiplier,this.alphaOffset / 255]);
}
,__class__: openfl.geom.ColorTransform
,__properties__: {set_color:"set_color",get_color:"get_color"}
};
openfl.geom.Matrix3D = function(v) {
if(v != null && v.length == 16) this.rawData = v; else {
var value = [1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0];
var vectorData = new openfl.VectorData();
vectorData.length = value.length;
vectorData.fixed = true;
var vec;
var this1;
this1 = new Array(value.length);
vec = this1;
var _g1 = 0;
var _g = value.length;
while(_g1 < _g) {
var i = _g1++;
vec[i] = value[i];
}
vectorData.data = vec;
this.rawData = vectorData;
}
};
$hxClasses["openfl.geom.Matrix3D"] = openfl.geom.Matrix3D;
openfl.geom.Matrix3D.__name__ = ["openfl","geom","Matrix3D"];
openfl.geom.Matrix3D.create2D = function(x,y,scale,rotation) {
if(rotation == null) rotation = 0;
if(scale == null) scale = 1;
var theta = rotation * Math.PI / 180.0;
var c = Math.cos(theta);
var s = Math.sin(theta);
return new openfl.geom.Matrix3D((function($this) {
var $r;
var value = [c * scale,-s * scale,0,0,s * scale,c * scale,0,0,0,0,1,0,x,y,0,1];
var vectorData = new openfl.VectorData();
vectorData.length = value.length;
vectorData.fixed = true;
{
var vec;
var this1;
this1 = new Array(value.length);
vec = this1;
var _g1 = 0;
var _g = value.length;
while(_g1 < _g) {
var i = _g1++;
vec[i] = value[i];
}
vectorData.data = vec;
}
$r = vectorData;
return $r;
}(this)));
};
openfl.geom.Matrix3D.createABCD = function(a,b,c,d,tx,ty) {
return new openfl.geom.Matrix3D((function($this) {
var $r;
var value = [a,b,0,0,c,d,0,0,0,0,1,0,tx,ty,0,1];
var vectorData = new openfl.VectorData();
vectorData.length = value.length;
vectorData.fixed = true;
{
var vec;
var this1;
this1 = new Array(value.length);
vec = this1;
var _g1 = 0;
var _g = value.length;
while(_g1 < _g) {
var i = _g1++;
vec[i] = value[i];
}
vectorData.data = vec;
}
$r = vectorData;
return $r;
}(this)));
};
openfl.geom.Matrix3D.createOrtho = function(x0,x1,y0,y1,zNear,zFar) {
var sx = 1.0 / (x1 - x0);
var sy = 1.0 / (y1 - y0);
var sz = 1.0 / (zFar - zNear);
return new openfl.geom.Matrix3D((function($this) {
var $r;
var value = [2.0 * sx,0,0,0,0,2.0 * sy,0,0,0,0,-2. * sz,0,-(x0 + x1) * sx,-(y0 + y1) * sy,-(zNear + zFar) * sz,1];
var vectorData = new openfl.VectorData();
vectorData.length = value.length;
vectorData.fixed = true;
{
var vec;
var this1;
this1 = new Array(value.length);
vec = this1;
var _g1 = 0;
var _g = value.length;
while(_g1 < _g) {
var i = _g1++;
vec[i] = value[i];
}
vectorData.data = vec;
}
$r = vectorData;
return $r;
}(this)));
};
openfl.geom.Matrix3D.interpolate = function(thisMat,toMat,percent) {
var m = new openfl.geom.Matrix3D();
var _g = 0;
while(_g < 16) {
var i = _g++;
var this1 = m.rawData;
if(!this1.fixed) {
if(i >= this1.length) this1.length = i + 1;
if(this1.data.length < this1.length) {
var data;
var this2;
this2 = new Array(this1.data.length + 10);
data = this2;
haxe.ds._Vector.Vector_Impl_.blit(this1.data,0,data,0,this1.data.length);
this1.data = data;
}
}
this1.data[i] = thisMat.rawData.data[i] + (toMat.rawData.data[i] - thisMat.rawData.data[i]) * percent;
}
return m;
};
openfl.geom.Matrix3D.getAxisRotation = function(x,y,z,degrees) {
var m = new openfl.geom.Matrix3D();
var a1 = new openfl.geom.Vector3D(x,y,z);
var rad = -degrees * (Math.PI / 180);
var c = Math.cos(rad);
var s = Math.sin(rad);
var t = 1.0 - c;
var this1 = m.rawData;
if(!this1.fixed) {
if(0 >= this1.length) this1.length = 1;
if(this1.data.length < this1.length) {
var data;
var this2;
this2 = new Array(this1.data.length + 10);
data = this2;
haxe.ds._Vector.Vector_Impl_.blit(this1.data,0,data,0,this1.data.length);
this1.data = data;
}
}
this1.data[0] = c + a1.x * a1.x * t;
var this3 = m.rawData;
if(!this3.fixed) {
if(5 >= this3.length) this3.length = 6;
if(this3.data.length < this3.length) {
var data1;
var this4;
this4 = new Array(this3.data.length + 10);
data1 = this4;
haxe.ds._Vector.Vector_Impl_.blit(this3.data,0,data1,0,this3.data.length);
this3.data = data1;
}
}
this3.data[5] = c + a1.y * a1.y * t;
var this5 = m.rawData;
if(!this5.fixed) {
if(10 >= this5.length) this5.length = 11;
if(this5.data.length < this5.length) {
var data2;
var this6;
this6 = new Array(this5.data.length + 10);
data2 = this6;
haxe.ds._Vector.Vector_Impl_.blit(this5.data,0,data2,0,this5.data.length);
this5.data = data2;
}
}
this5.data[10] = c + a1.z * a1.z * t;
var tmp1 = a1.x * a1.y * t;
var tmp2 = a1.z * s;
var this7 = m.rawData;
if(!this7.fixed) {
if(4 >= this7.length) this7.length = 5;
if(this7.data.length < this7.length) {
var data3;
var this8;
this8 = new Array(this7.data.length + 10);
data3 = this8;
haxe.ds._Vector.Vector_Impl_.blit(this7.data,0,data3,0,this7.data.length);
this7.data = data3;
}
}
this7.data[4] = tmp1 + tmp2;
var this9 = m.rawData;
if(!this9.fixed) {
if(1 >= this9.length) this9.length = 2;
if(this9.data.length < this9.length) {
var data4;
var this10;
this10 = new Array(this9.data.length + 10);
data4 = this10;
haxe.ds._Vector.Vector_Impl_.blit(this9.data,0,data4,0,this9.data.length);
this9.data = data4;
}
}
this9.data[1] = tmp1 - tmp2;
tmp1 = a1.x * a1.z * t;
tmp2 = a1.y * s;
var this11 = m.rawData;
if(!this11.fixed) {
if(8 >= this11.length) this11.length = 9;
if(this11.data.length < this11.length) {
var data5;
var this12;
this12 = new Array(this11.data.length + 10);
data5 = this12;
haxe.ds._Vector.Vector_Impl_.blit(this11.data,0,data5,0,this11.data.length);
this11.data = data5;
}
}
this11.data[8] = tmp1 - tmp2;
var this13 = m.rawData;
if(!this13.fixed) {
if(2 >= this13.length) this13.length = 3;
if(this13.data.length < this13.length) {
var data6;
var this14;
this14 = new Array(this13.data.length + 10);
data6 = this14;
haxe.ds._Vector.Vector_Impl_.blit(this13.data,0,data6,0,this13.data.length);
this13.data = data6;
}
}
this13.data[2] = tmp1 + tmp2;
tmp1 = a1.y * a1.z * t;
tmp2 = a1.x * s;
var this15 = m.rawData;
if(!this15.fixed) {
if(9 >= this15.length) this15.length = 10;
if(this15.data.length < this15.length) {
var data7;
var this16;
this16 = new Array(this15.data.length + 10);
data7 = this16;
haxe.ds._Vector.Vector_Impl_.blit(this15.data,0,data7,0,this15.data.length);
this15.data = data7;
}
}
this15.data[9] = tmp1 + tmp2;
var this17 = m.rawData;
if(!this17.fixed) {
if(6 >= this17.length) this17.length = 7;
if(this17.data.length < this17.length) {
var data8;
var this18;
this18 = new Array(this17.data.length + 10);
data8 = this18;
haxe.ds._Vector.Vector_Impl_.blit(this17.data,0,data8,0,this17.data.length);
this17.data = data8;
}
}
this17.data[6] = tmp1 - tmp2;
return m;
};
openfl.geom.Matrix3D.prototype = {
append: function(lhs) {
var m111 = this.rawData.data[0];
var m121 = this.rawData.data[4];
var m131 = this.rawData.data[8];
var m141 = this.rawData.data[12];
var m112 = this.rawData.data[1];
var m122 = this.rawData.data[5];
var m132 = this.rawData.data[9];
var m142 = this.rawData.data[13];
var m113 = this.rawData.data[2];
var m123 = this.rawData.data[6];
var m133 = this.rawData.data[10];
var m143 = this.rawData.data[14];
var m114 = this.rawData.data[3];
var m124 = this.rawData.data[7];
var m134 = this.rawData.data[11];
var m144 = this.rawData.data[15];
var m211 = lhs.rawData.data[0];
var m221 = lhs.rawData.data[4];
var m231 = lhs.rawData.data[8];
var m241 = lhs.rawData.data[12];
var m212 = lhs.rawData.data[1];
var m222 = lhs.rawData.data[5];
var m232 = lhs.rawData.data[9];
var m242 = lhs.rawData.data[13];
var m213 = lhs.rawData.data[2];
var m223 = lhs.rawData.data[6];
var m233 = lhs.rawData.data[10];
var m243 = lhs.rawData.data[14];
var m214 = lhs.rawData.data[3];
var m224 = lhs.rawData.data[7];
var m234 = lhs.rawData.data[11];
var m244 = lhs.rawData.data[15];
var this1 = this.rawData;
if(!this1.fixed) {
if(0 >= this1.length) this1.length = 1;
if(this1.data.length < this1.length) {
var data;
var this2;
this2 = new Array(this1.data.length + 10);
data = this2;
haxe.ds._Vector.Vector_Impl_.blit(this1.data,0,data,0,this1.data.length);
this1.data = data;
}
}
this1.data[0] = m111 * m211 + m112 * m221 + m113 * m231 + m114 * m241;
var this3 = this.rawData;
if(!this3.fixed) {
if(1 >= this3.length) this3.length = 2;
if(this3.data.length < this3.length) {
var data1;
var this4;
this4 = new Array(this3.data.length + 10);
data1 = this4;
haxe.ds._Vector.Vector_Impl_.blit(this3.data,0,data1,0,this3.data.length);
this3.data = data1;
}
}
this3.data[1] = m111 * m212 + m112 * m222 + m113 * m232 + m114 * m242;
var this5 = this.rawData;
if(!this5.fixed) {
if(2 >= this5.length) this5.length = 3;
if(this5.data.length < this5.length) {
var data2;
var this6;
this6 = new Array(this5.data.length + 10);
data2 = this6;
haxe.ds._Vector.Vector_Impl_.blit(this5.data,0,data2,0,this5.data.length);
this5.data = data2;
}
}
this5.data[2] = m111 * m213 + m112 * m223 + m113 * m233 + m114 * m243;
var this7 = this.rawData;
if(!this7.fixed) {
if(3 >= this7.length) this7.length = 4;
if(this7.data.length < this7.length) {
var data3;
var this8;
this8 = new Array(this7.data.length + 10);
data3 = this8;
haxe.ds._Vector.Vector_Impl_.blit(this7.data,0,data3,0,this7.data.length);
this7.data = data3;
}
}
this7.data[3] = m111 * m214 + m112 * m224 + m113 * m234 + m114 * m244;
var this9 = this.rawData;
if(!this9.fixed) {
if(4 >= this9.length) this9.length = 5;
if(this9.data.length < this9.length) {
var data4;
var this10;
this10 = new Array(this9.data.length + 10);
data4 = this10;
haxe.ds._Vector.Vector_Impl_.blit(this9.data,0,data4,0,this9.data.length);
this9.data = data4;
}
}
this9.data[4] = m121 * m211 + m122 * m221 + m123 * m231 + m124 * m241;
var this11 = this.rawData;
if(!this11.fixed) {
if(5 >= this11.length) this11.length = 6;
if(this11.data.length < this11.length) {
var data5;
var this12;
this12 = new Array(this11.data.length + 10);
data5 = this12;
haxe.ds._Vector.Vector_Impl_.blit(this11.data,0,data5,0,this11.data.length);
this11.data = data5;
}
}
this11.data[5] = m121 * m212 + m122 * m222 + m123 * m232 + m124 * m242;
var this13 = this.rawData;
if(!this13.fixed) {
if(6 >= this13.length) this13.length = 7;
if(this13.data.length < this13.length) {
var data6;
var this14;
this14 = new Array(this13.data.length + 10);
data6 = this14;
haxe.ds._Vector.Vector_Impl_.blit(this13.data,0,data6,0,this13.data.length);
this13.data = data6;
}
}
this13.data[6] = m121 * m213 + m122 * m223 + m123 * m233 + m124 * m243;
var this15 = this.rawData;
if(!this15.fixed) {
if(7 >= this15.length) this15.length = 8;
if(this15.data.length < this15.length) {
var data7;
var this16;
this16 = new Array(this15.data.length + 10);
data7 = this16;
haxe.ds._Vector.Vector_Impl_.blit(this15.data,0,data7,0,this15.data.length);
this15.data = data7;
}
}
this15.data[7] = m121 * m214 + m122 * m224 + m123 * m234 + m124 * m244;
var this17 = this.rawData;
if(!this17.fixed) {
if(8 >= this17.length) this17.length = 9;
if(this17.data.length < this17.length) {
var data8;
var this18;
this18 = new Array(this17.data.length + 10);
data8 = this18;
haxe.ds._Vector.Vector_Impl_.blit(this17.data,0,data8,0,this17.data.length);
this17.data = data8;
}
}
this17.data[8] = m131 * m211 + m132 * m221 + m133 * m231 + m134 * m241;
var this19 = this.rawData;
if(!this19.fixed) {
if(9 >= this19.length) this19.length = 10;
if(this19.data.length < this19.length) {
var data9;
var this20;
this20 = new Array(this19.data.length + 10);
data9 = this20;
haxe.ds._Vector.Vector_Impl_.blit(this19.data,0,data9,0,this19.data.length);
this19.data = data9;
}
}
this19.data[9] = m131 * m212 + m132 * m222 + m133 * m232 + m134 * m242;
var this21 = this.rawData;
if(!this21.fixed) {
if(10 >= this21.length) this21.length = 11;
if(this21.data.length < this21.length) {
var data10;
var this22;
this22 = new Array(this21.data.length + 10);
data10 = this22;
haxe.ds._Vector.Vector_Impl_.blit(this21.data,0,data10,0,this21.data.length);
this21.data = data10;
}
}
this21.data[10] = m131 * m213 + m132 * m223 + m133 * m233 + m134 * m243;
var this23 = this.rawData;
if(!this23.fixed) {
if(11 >= this23.length) this23.length = 12;
if(this23.data.length < this23.length) {
var data11;
var this24;
this24 = new Array(this23.data.length + 10);
data11 = this24;
haxe.ds._Vector.Vector_Impl_.blit(this23.data,0,data11,0,this23.data.length);
this23.data = data11;
}
}
this23.data[11] = m131 * m214 + m132 * m224 + m133 * m234 + m134 * m244;
var this25 = this.rawData;
if(!this25.fixed) {
if(12 >= this25.length) this25.length = 13;
if(this25.data.length < this25.length) {
var data12;
var this26;
this26 = new Array(this25.data.length + 10);
data12 = this26;
haxe.ds._Vector.Vector_Impl_.blit(this25.data,0,data12,0,this25.data.length);
this25.data = data12;
}
}
this25.data[12] = m141 * m211 + m142 * m221 + m143 * m231 + m144 * m241;
var this27 = this.rawData;
if(!this27.fixed) {
if(13 >= this27.length) this27.length = 14;
if(this27.data.length < this27.length) {
var data13;
var this28;
this28 = new Array(this27.data.length + 10);
data13 = this28;
haxe.ds._Vector.Vector_Impl_.blit(this27.data,0,data13,0,this27.data.length);
this27.data = data13;
}
}
this27.data[13] = m141 * m212 + m142 * m222 + m143 * m232 + m144 * m242;
var this29 = this.rawData;
if(!this29.fixed) {
if(14 >= this29.length) this29.length = 15;
if(this29.data.length < this29.length) {
var data14;
var this30;
this30 = new Array(this29.data.length + 10);
data14 = this30;
haxe.ds._Vector.Vector_Impl_.blit(this29.data,0,data14,0,this29.data.length);
this29.data = data14;
}
}
this29.data[14] = m141 * m213 + m142 * m223 + m143 * m233 + m144 * m243;
var this31 = this.rawData;
if(!this31.fixed) {
if(15 >= this31.length) this31.length = 16;
if(this31.data.length < this31.length) {
var data15;
var this32;
this32 = new Array(this31.data.length + 10);
data15 = this32;
haxe.ds._Vector.Vector_Impl_.blit(this31.data,0,data15,0,this31.data.length);
this31.data = data15;
}
}
this31.data[15] = m141 * m214 + m142 * m224 + m143 * m234 + m144 * m244;
}
,appendRotation: function(degrees,axis,pivotPoint) {
var m = openfl.geom.Matrix3D.getAxisRotation(axis.x,axis.y,axis.z,degrees);
if(pivotPoint != null) {
var p = pivotPoint;
m.appendTranslation(p.x,p.y,p.z);
}
this.append(m);
}
,appendScale: function(xScale,yScale,zScale) {
this.append(new openfl.geom.Matrix3D((function($this) {
var $r;
var value = [xScale,0.0,0.0,0.0,0.0,yScale,0.0,0.0,0.0,0.0,zScale,0.0,0.0,0.0,0.0,1.0];
var vectorData = new openfl.VectorData();
vectorData.length = value.length;
vectorData.fixed = true;
{
var vec;
var this1;
this1 = new Array(value.length);
vec = this1;
var _g1 = 0;
var _g = value.length;
while(_g1 < _g) {
var i = _g1++;
vec[i] = value[i];
}
vectorData.data = vec;
}
$r = vectorData;
return $r;
}(this))));
}
,appendTranslation: function(x,y,z) {
var this1 = this.rawData;
if(!this1.fixed) {
if(12 >= this1.length) this1.length = 13;
if(this1.data.length < this1.length) {
var data;
var this2;
this2 = new Array(this1.data.length + 10);
data = this2;
haxe.ds._Vector.Vector_Impl_.blit(this1.data,0,data,0,this1.data.length);
this1.data = data;
}
}
this1.data[12] = this.rawData.data[12] + x;
var this3 = this.rawData;
if(!this3.fixed) {
if(13 >= this3.length) this3.length = 14;
if(this3.data.length < this3.length) {
var data1;
var this4;
this4 = new Array(this3.data.length + 10);
data1 = this4;
haxe.ds._Vector.Vector_Impl_.blit(this3.data,0,data1,0,this3.data.length);
this3.data = data1;
}
}
this3.data[13] = this.rawData.data[13] + y;
var this5 = this.rawData;
if(!this5.fixed) {
if(14 >= this5.length) this5.length = 15;
if(this5.data.length < this5.length) {
var data2;
var this6;
this6 = new Array(this5.data.length + 10);
data2 = this6;
haxe.ds._Vector.Vector_Impl_.blit(this5.data,0,data2,0,this5.data.length);
this5.data = data2;
}
}
this5.data[14] = this.rawData.data[14] + z;
}
,clone: function() {
return new openfl.geom.Matrix3D((function($this) {
var $r;
var this1 = $this.rawData;
var vectorData = new openfl.VectorData();
vectorData.length = this1.length;
vectorData.fixed = this1.fixed;
{
var this2;
this2 = new Array(this1.length);
vectorData.data = this2;
}
haxe.ds._Vector.Vector_Impl_.blit(this1.data,0,vectorData.data,0,this1.length);
$r = vectorData;
return $r;
}(this)));
}
,copyColumnFrom: function(column,vector3D) {
switch(column) {
case 0:
var this1 = this.rawData;
if(!this1.fixed) {
if(0 >= this1.length) this1.length = 1;
if(this1.data.length < this1.length) {
var data;
var this2;
this2 = new Array(this1.data.length + 10);
data = this2;
haxe.ds._Vector.Vector_Impl_.blit(this1.data,0,data,0,this1.data.length);
this1.data = data;
}
}
this1.data[0] = vector3D.x;
var this3 = this.rawData;
if(!this3.fixed) {
if(1 >= this3.length) this3.length = 2;
if(this3.data.length < this3.length) {
var data1;
var this4;
this4 = new Array(this3.data.length + 10);
data1 = this4;
haxe.ds._Vector.Vector_Impl_.blit(this3.data,0,data1,0,this3.data.length);
this3.data = data1;
}
}
this3.data[1] = vector3D.y;
var this5 = this.rawData;
if(!this5.fixed) {
if(2 >= this5.length) this5.length = 3;
if(this5.data.length < this5.length) {
var data2;
var this6;
this6 = new Array(this5.data.length + 10);
data2 = this6;
haxe.ds._Vector.Vector_Impl_.blit(this5.data,0,data2,0,this5.data.length);
this5.data = data2;
}
}
this5.data[2] = vector3D.z;
var this7 = this.rawData;
if(!this7.fixed) {
if(3 >= this7.length) this7.length = 4;
if(this7.data.length < this7.length) {
var data3;
var this8;
this8 = new Array(this7.data.length + 10);
data3 = this8;
haxe.ds._Vector.Vector_Impl_.blit(this7.data,0,data3,0,this7.data.length);
this7.data = data3;
}
}
this7.data[3] = vector3D.w;
break;
case 1:
var this9 = this.rawData;
if(!this9.fixed) {
if(4 >= this9.length) this9.length = 5;
if(this9.data.length < this9.length) {
var data4;
var this10;
this10 = new Array(this9.data.length + 10);
data4 = this10;
haxe.ds._Vector.Vector_Impl_.blit(this9.data,0,data4,0,this9.data.length);
this9.data = data4;
}
}
this9.data[4] = vector3D.x;
var this11 = this.rawData;
if(!this11.fixed) {
if(5 >= this11.length) this11.length = 6;
if(this11.data.length < this11.length) {
var data5;
var this12;
this12 = new Array(this11.data.length + 10);
data5 = this12;
haxe.ds._Vector.Vector_Impl_.blit(this11.data,0,data5,0,this11.data.length);
this11.data = data5;
}
}
this11.data[5] = vector3D.y;
var this13 = this.rawData;
if(!this13.fixed) {
if(6 >= this13.length) this13.length = 7;
if(this13.data.length < this13.length) {
var data6;
var this14;
this14 = new Array(this13.data.length + 10);
data6 = this14;
haxe.ds._Vector.Vector_Impl_.blit(this13.data,0,data6,0,this13.data.length);
this13.data = data6;
}
}
this13.data[6] = vector3D.z;
var this15 = this.rawData;
if(!this15.fixed) {
if(7 >= this15.length) this15.length = 8;
if(this15.data.length < this15.length) {
var data7;
var this16;
this16 = new Array(this15.data.length + 10);
data7 = this16;
haxe.ds._Vector.Vector_Impl_.blit(this15.data,0,data7,0,this15.data.length);
this15.data = data7;
}
}
this15.data[7] = vector3D.w;
break;
case 2:
var this17 = this.rawData;
if(!this17.fixed) {
if(8 >= this17.length) this17.length = 9;
if(this17.data.length < this17.length) {
var data8;
var this18;
this18 = new Array(this17.data.length + 10);
data8 = this18;
haxe.ds._Vector.Vector_Impl_.blit(this17.data,0,data8,0,this17.data.length);
this17.data = data8;
}
}
this17.data[8] = vector3D.x;
var this19 = this.rawData;
if(!this19.fixed) {
if(9 >= this19.length) this19.length = 10;
if(this19.data.length < this19.length) {
var data9;
var this20;
this20 = new Array(this19.data.length + 10);
data9 = this20;
haxe.ds._Vector.Vector_Impl_.blit(this19.data,0,data9,0,this19.data.length);
this19.data = data9;
}
}
this19.data[9] = vector3D.y;
var this21 = this.rawData;
if(!this21.fixed) {
if(10 >= this21.length) this21.length = 11;
if(this21.data.length < this21.length) {
var data10;
var this22;
this22 = new Array(this21.data.length + 10);
data10 = this22;
haxe.ds._Vector.Vector_Impl_.blit(this21.data,0,data10,0,this21.data.length);
this21.data = data10;
}
}
this21.data[10] = vector3D.z;
var this23 = this.rawData;
if(!this23.fixed) {
if(11 >= this23.length) this23.length = 12;
if(this23.data.length < this23.length) {
var data11;
var this24;
this24 = new Array(this23.data.length + 10);
data11 = this24;
haxe.ds._Vector.Vector_Impl_.blit(this23.data,0,data11,0,this23.data.length);
this23.data = data11;
}
}
this23.data[11] = vector3D.w;
break;
case 3:
var this25 = this.rawData;
if(!this25.fixed) {
if(12 >= this25.length) this25.length = 13;
if(this25.data.length < this25.length) {
var data12;
var this26;
this26 = new Array(this25.data.length + 10);
data12 = this26;
haxe.ds._Vector.Vector_Impl_.blit(this25.data,0,data12,0,this25.data.length);
this25.data = data12;
}
}
this25.data[12] = vector3D.x;
var this27 = this.rawData;
if(!this27.fixed) {
if(13 >= this27.length) this27.length = 14;
if(this27.data.length < this27.length) {
var data13;
var this28;
this28 = new Array(this27.data.length + 10);
data13 = this28;
haxe.ds._Vector.Vector_Impl_.blit(this27.data,0,data13,0,this27.data.length);
this27.data = data13;
}
}
this27.data[13] = vector3D.y;
var this29 = this.rawData;
if(!this29.fixed) {
if(14 >= this29.length) this29.length = 15;
if(this29.data.length < this29.length) {
var data14;
var this30;
this30 = new Array(this29.data.length + 10);
data14 = this30;
haxe.ds._Vector.Vector_Impl_.blit(this29.data,0,data14,0,this29.data.length);
this29.data = data14;
}
}
this29.data[14] = vector3D.z;
var this31 = this.rawData;
if(!this31.fixed) {
if(15 >= this31.length) this31.length = 16;
if(this31.data.length < this31.length) {
var data15;
var this32;
this32 = new Array(this31.data.length + 10);
data15 = this32;
haxe.ds._Vector.Vector_Impl_.blit(this31.data,0,data15,0,this31.data.length);
this31.data = data15;
}
}
this31.data[15] = vector3D.w;
break;
default:
throw new openfl.errors.Error("Error, Column " + column + " out of bounds [0, ..., 3]");
}
}
,copyColumnTo: function(column,vector3D) {
switch(column) {
case 0:
vector3D.x = this.rawData.data[0];
vector3D.y = this.rawData.data[1];
vector3D.z = this.rawData.data[2];
vector3D.w = this.rawData.data[3];
break;
case 1:
vector3D.x = this.rawData.data[4];
vector3D.y = this.rawData.data[5];
vector3D.z = this.rawData.data[6];
vector3D.w = this.rawData.data[7];
break;
case 2:
vector3D.x = this.rawData.data[8];
vector3D.y = this.rawData.data[9];
vector3D.z = this.rawData.data[10];
vector3D.w = this.rawData.data[11];
break;
case 3:
vector3D.x = this.rawData.data[12];
vector3D.y = this.rawData.data[13];
vector3D.z = this.rawData.data[14];
vector3D.w = this.rawData.data[15];
break;
default:
throw new openfl.errors.Error("Error, Column " + column + " out of bounds [0, ..., 3]");
}
}
,copyFrom: function(other) {
var this1 = other.rawData;
var vectorData = new openfl.VectorData();
vectorData.length = this1.length;
vectorData.fixed = this1.fixed;
var this2;
this2 = new Array(this1.length);
vectorData.data = this2;
haxe.ds._Vector.Vector_Impl_.blit(this1.data,0,vectorData.data,0,this1.length);
this.rawData = vectorData;
}
,copyRawDataFrom: function(vector,index,transpose) {
if(transpose == null) transpose = false;
if(index == null) index = 0;
if(transpose) this.transpose();
var l = vector.length - index;
var _g = 0;
while(_g < l) {
var c = _g++;
var this1 = this.rawData;
if(!this1.fixed) {
if(c >= this1.length) this1.length = c + 1;
if(this1.data.length < this1.length) {
var data;
var this2;
this2 = new Array(this1.data.length + 10);
data = this2;
haxe.ds._Vector.Vector_Impl_.blit(this1.data,0,data,0,this1.data.length);
this1.data = data;
}
}
this1.data[c] = vector.data[c + index];
}
if(transpose) this.transpose();
}
,copyRawDataTo: function(vector,index,transpose) {
if(transpose == null) transpose = false;
if(index == null) index = 0;
if(transpose) this.transpose();
var l = this.rawData.length;
var _g = 0;
while(_g < l) {
var c = _g++;
var key = c + index;
if(!vector.fixed) {
if(key >= vector.length) vector.length = key + 1;
if(vector.data.length < vector.length) {
var data;
var this1;
this1 = new Array(vector.data.length + 10);
data = this1;
haxe.ds._Vector.Vector_Impl_.blit(vector.data,0,data,0,vector.data.length);
vector.data = data;
}
}
vector.data[key] = this.rawData.data[c];
}
if(transpose) this.transpose();
}
,copyRowFrom: function(row,vector3D) {
switch(row) {
case 0:
var this1 = this.rawData;
if(!this1.fixed) {
if(0 >= this1.length) this1.length = 1;
if(this1.data.length < this1.length) {
var data;
var this2;
this2 = new Array(this1.data.length + 10);
data = this2;
haxe.ds._Vector.Vector_Impl_.blit(this1.data,0,data,0,this1.data.length);
this1.data = data;
}
}
this1.data[0] = vector3D.x;
var this3 = this.rawData;
if(!this3.fixed) {
if(4 >= this3.length) this3.length = 5;
if(this3.data.length < this3.length) {
var data1;
var this4;
this4 = new Array(this3.data.length + 10);
data1 = this4;
haxe.ds._Vector.Vector_Impl_.blit(this3.data,0,data1,0,this3.data.length);
this3.data = data1;
}
}
this3.data[4] = vector3D.y;
var this5 = this.rawData;
if(!this5.fixed) {
if(8 >= this5.length) this5.length = 9;
if(this5.data.length < this5.length) {
var data2;
var this6;
this6 = new Array(this5.data.length + 10);
data2 = this6;
haxe.ds._Vector.Vector_Impl_.blit(this5.data,0,data2,0,this5.data.length);
this5.data = data2;
}
}
this5.data[8] = vector3D.z;
var this7 = this.rawData;
if(!this7.fixed) {
if(12 >= this7.length) this7.length = 13;
if(this7.data.length < this7.length) {
var data3;
var this8;
this8 = new Array(this7.data.length + 10);
data3 = this8;
haxe.ds._Vector.Vector_Impl_.blit(this7.data,0,data3,0,this7.data.length);
this7.data = data3;
}
}
this7.data[12] = vector3D.w;
break;
case 1:
var this9 = this.rawData;
if(!this9.fixed) {
if(1 >= this9.length) this9.length = 2;
if(this9.data.length < this9.length) {
var data4;
var this10;
this10 = new Array(this9.data.length + 10);
data4 = this10;
haxe.ds._Vector.Vector_Impl_.blit(this9.data,0,data4,0,this9.data.length);
this9.data = data4;
}
}
this9.data[1] = vector3D.x;
var this11 = this.rawData;
if(!this11.fixed) {
if(5 >= this11.length) this11.length = 6;
if(this11.data.length < this11.length) {
var data5;
var this12;
this12 = new Array(this11.data.length + 10);
data5 = this12;
haxe.ds._Vector.Vector_Impl_.blit(this11.data,0,data5,0,this11.data.length);
this11.data = data5;
}
}
this11.data[5] = vector3D.y;
var this13 = this.rawData;
if(!this13.fixed) {
if(9 >= this13.length) this13.length = 10;
if(this13.data.length < this13.length) {
var data6;
var this14;
this14 = new Array(this13.data.length + 10);
data6 = this14;
haxe.ds._Vector.Vector_Impl_.blit(this13.data,0,data6,0,this13.data.length);
this13.data = data6;
}
}
this13.data[9] = vector3D.z;
var this15 = this.rawData;
if(!this15.fixed) {
if(13 >= this15.length) this15.length = 14;
if(this15.data.length < this15.length) {
var data7;
var this16;
this16 = new Array(this15.data.length + 10);
data7 = this16;
haxe.ds._Vector.Vector_Impl_.blit(this15.data,0,data7,0,this15.data.length);
this15.data = data7;
}
}
this15.data[13] = vector3D.w;
break;
case 2:
var this17 = this.rawData;
if(!this17.fixed) {
if(2 >= this17.length) this17.length = 3;
if(this17.data.length < this17.length) {
var data8;
var this18;
this18 = new Array(this17.data.length + 10);
data8 = this18;
haxe.ds._Vector.Vector_Impl_.blit(this17.data,0,data8,0,this17.data.length);
this17.data = data8;
}
}
this17.data[2] = vector3D.x;
var this19 = this.rawData;
if(!this19.fixed) {
if(6 >= this19.length) this19.length = 7;
if(this19.data.length < this19.length) {
var data9;
var this20;
this20 = new Array(this19.data.length + 10);
data9 = this20;
haxe.ds._Vector.Vector_Impl_.blit(this19.data,0,data9,0,this19.data.length);
this19.data = data9;
}
}
this19.data[6] = vector3D.y;
var this21 = this.rawData;
if(!this21.fixed) {
if(10 >= this21.length) this21.length = 11;
if(this21.data.length < this21.length) {
var data10;
var this22;
this22 = new Array(this21.data.length + 10);
data10 = this22;
haxe.ds._Vector.Vector_Impl_.blit(this21.data,0,data10,0,this21.data.length);
this21.data = data10;
}
}
this21.data[10] = vector3D.z;
var this23 = this.rawData;
if(!this23.fixed) {
if(14 >= this23.length) this23.length = 15;
if(this23.data.length < this23.length) {
var data11;
var this24;
this24 = new Array(this23.data.length + 10);
data11 = this24;
haxe.ds._Vector.Vector_Impl_.blit(this23.data,0,data11,0,this23.data.length);
this23.data = data11;
}
}
this23.data[14] = vector3D.w;
break;
case 3:
var this25 = this.rawData;
if(!this25.fixed) {
if(3 >= this25.length) this25.length = 4;
if(this25.data.length < this25.length) {
var data12;
var this26;
this26 = new Array(this25.data.length + 10);
data12 = this26;
haxe.ds._Vector.Vector_Impl_.blit(this25.data,0,data12,0,this25.data.length);
this25.data = data12;
}
}
this25.data[3] = vector3D.x;
var this27 = this.rawData;
if(!this27.fixed) {
if(7 >= this27.length) this27.length = 8;
if(this27.data.length < this27.length) {
var data13;
var this28;
this28 = new Array(this27.data.length + 10);
data13 = this28;
haxe.ds._Vector.Vector_Impl_.blit(this27.data,0,data13,0,this27.data.length);
this27.data = data13;
}
}
this27.data[7] = vector3D.y;
var this29 = this.rawData;
if(!this29.fixed) {
if(11 >= this29.length) this29.length = 12;
if(this29.data.length < this29.length) {
var data14;
var this30;
this30 = new Array(this29.data.length + 10);
data14 = this30;
haxe.ds._Vector.Vector_Impl_.blit(this29.data,0,data14,0,this29.data.length);
this29.data = data14;
}
}
this29.data[11] = vector3D.z;
var this31 = this.rawData;
if(!this31.fixed) {
if(15 >= this31.length) this31.length = 16;
if(this31.data.length < this31.length) {
var data15;
var this32;
this32 = new Array(this31.data.length + 10);
data15 = this32;
haxe.ds._Vector.Vector_Impl_.blit(this31.data,0,data15,0,this31.data.length);
this31.data = data15;
}
}
this31.data[15] = vector3D.w;
break;
default:
throw new openfl.errors.Error("Error, Row " + Std.string((function($this) {
var $r;
var $int = row;
$r = $int < 0?4294967296.0 + $int:$int + 0.0;
return $r;
}(this))) + " out of bounds [0, ..., 3]");
}
}
,copyRowTo: function(row,vector3D) {
switch(row) {
case 0:
vector3D.x = this.rawData.data[0];
vector3D.y = this.rawData.data[4];
vector3D.z = this.rawData.data[8];
vector3D.w = this.rawData.data[12];
break;
case 1:
vector3D.x = this.rawData.data[1];
vector3D.y = this.rawData.data[5];
vector3D.z = this.rawData.data[9];
vector3D.w = this.rawData.data[13];
break;
case 2:
vector3D.x = this.rawData.data[2];
vector3D.y = this.rawData.data[6];
vector3D.z = this.rawData.data[10];
vector3D.w = this.rawData.data[14];
break;
case 3:
vector3D.x = this.rawData.data[3];
vector3D.y = this.rawData.data[7];
vector3D.z = this.rawData.data[11];
vector3D.w = this.rawData.data[15];
break;
default:
throw new openfl.errors.Error("Error, Row " + row + " out of bounds [0, ..., 3]");
}
}
,copyToMatrix3D: function(other) {
var this1 = this.rawData;
var vectorData = new openfl.VectorData();
vectorData.length = this1.length;
vectorData.fixed = this1.fixed;
var this2;
this2 = new Array(this1.length);
vectorData.data = this2;
haxe.ds._Vector.Vector_Impl_.blit(this1.data,0,vectorData.data,0,this1.length);
other.rawData = vectorData;
}
,decompose: function(orientationStyle) {
if(orientationStyle == null) orientationStyle = openfl.geom.Orientation3D.EULER_ANGLES;
var vec;
var this1;
this1 = new openfl.VectorData();
var this2;
this2 = new Array(0);
this1.data = this2;
this1.length = 0;
this1.fixed = false;
vec = this1;
var m = this.clone();
var mr;
var this3 = m.rawData;
var vectorData = new openfl.VectorData();
vectorData.length = this3.length;
vectorData.fixed = this3.fixed;
var this4;
this4 = new Array(this3.length);
vectorData.data = this4;
haxe.ds._Vector.Vector_Impl_.blit(this3.data,0,vectorData.data,0,this3.length);
mr = vectorData;
var pos = new openfl.geom.Vector3D(mr.data[12],mr.data[13],mr.data[14]);
if(!mr.fixed) {
if(12 >= mr.length) mr.length = 13;
if(mr.data.length < mr.length) {
var data;
var this5;
this5 = new Array(mr.data.length + 10);
data = this5;
haxe.ds._Vector.Vector_Impl_.blit(mr.data,0,data,0,mr.data.length);
mr.data = data;
}
}
mr.data[12] = 0;
if(!mr.fixed) {
if(13 >= mr.length) mr.length = 14;
if(mr.data.length < mr.length) {
var data1;
var this6;
this6 = new Array(mr.data.length + 10);
data1 = this6;
haxe.ds._Vector.Vector_Impl_.blit(mr.data,0,data1,0,mr.data.length);
mr.data = data1;
}
}
mr.data[13] = 0;
if(!mr.fixed) {
if(14 >= mr.length) mr.length = 15;
if(mr.data.length < mr.length) {
var data2;
var this7;
this7 = new Array(mr.data.length + 10);
data2 = this7;
haxe.ds._Vector.Vector_Impl_.blit(mr.data,0,data2,0,mr.data.length);
mr.data = data2;
}
}
mr.data[14] = 0;
var scale = new openfl.geom.Vector3D();
scale.x = Math.sqrt(mr.data[0] * mr.data[0] + mr.data[1] * mr.data[1] + mr.data[2] * mr.data[2]);
scale.y = Math.sqrt(mr.data[4] * mr.data[4] + mr.data[5] * mr.data[5] + mr.data[6] * mr.data[6]);
scale.z = Math.sqrt(mr.data[8] * mr.data[8] + mr.data[9] * mr.data[9] + mr.data[10] * mr.data[10]);
if(mr.data[0] * (mr.data[5] * mr.data[10] - mr.data[6] * mr.data[9]) - mr.data[1] * (mr.data[4] * mr.data[10] - mr.data[6] * mr.data[8]) + mr.data[2] * (mr.data[4] * mr.data[9] - mr.data[5] * mr.data[8]) < 0) scale.z = -scale.z;
if(!mr.fixed) {
if(0 >= mr.length) mr.length = 1;
if(mr.data.length < mr.length) {
var data3;
var this8;
this8 = new Array(mr.data.length + 10);
data3 = this8;
haxe.ds._Vector.Vector_Impl_.blit(mr.data,0,data3,0,mr.data.length);
mr.data = data3;
}
}
mr.data[0] = mr.data[0] / scale.x;
if(!mr.fixed) {
if(1 >= mr.length) mr.length = 2;
if(mr.data.length < mr.length) {
var data4;
var this9;
this9 = new Array(mr.data.length + 10);
data4 = this9;
haxe.ds._Vector.Vector_Impl_.blit(mr.data,0,data4,0,mr.data.length);
mr.data = data4;
}
}
mr.data[1] = mr.data[1] / scale.x;
if(!mr.fixed) {
if(2 >= mr.length) mr.length = 3;
if(mr.data.length < mr.length) {
var data5;
var this10;
this10 = new Array(mr.data.length + 10);
data5 = this10;
haxe.ds._Vector.Vector_Impl_.blit(mr.data,0,data5,0,mr.data.length);
mr.data = data5;
}
}
mr.data[2] = mr.data[2] / scale.x;
if(!mr.fixed) {
if(4 >= mr.length) mr.length = 5;
if(mr.data.length < mr.length) {
var data6;
var this11;
this11 = new Array(mr.data.length + 10);
data6 = this11;
haxe.ds._Vector.Vector_Impl_.blit(mr.data,0,data6,0,mr.data.length);
mr.data = data6;
}
}
mr.data[4] = mr.data[4] / scale.y;
if(!mr.fixed) {
if(5 >= mr.length) mr.length = 6;
if(mr.data.length < mr.length) {
var data7;
var this12;
this12 = new Array(mr.data.length + 10);
data7 = this12;
haxe.ds._Vector.Vector_Impl_.blit(mr.data,0,data7,0,mr.data.length);
mr.data = data7;
}
}
mr.data[5] = mr.data[5] / scale.y;
if(!mr.fixed) {
if(6 >= mr.length) mr.length = 7;
if(mr.data.length < mr.length) {
var data8;
var this13;
this13 = new Array(mr.data.length + 10);
data8 = this13;
haxe.ds._Vector.Vector_Impl_.blit(mr.data,0,data8,0,mr.data.length);
mr.data = data8;
}
}
mr.data[6] = mr.data[6] / scale.y;
if(!mr.fixed) {
if(8 >= mr.length) mr.length = 9;
if(mr.data.length < mr.length) {
var data9;
var this14;
this14 = new Array(mr.data.length + 10);
data9 = this14;
haxe.ds._Vector.Vector_Impl_.blit(mr.data,0,data9,0,mr.data.length);
mr.data = data9;
}
}
mr.data[8] = mr.data[8] / scale.z;
if(!mr.fixed) {
if(9 >= mr.length) mr.length = 10;
if(mr.data.length < mr.length) {
var data10;
var this15;
this15 = new Array(mr.data.length + 10);
data10 = this15;
haxe.ds._Vector.Vector_Impl_.blit(mr.data,0,data10,0,mr.data.length);
mr.data = data10;
}
}
mr.data[9] = mr.data[9] / scale.z;
if(!mr.fixed) {
if(10 >= mr.length) mr.length = 11;
if(mr.data.length < mr.length) {
var data11;
var this16;
this16 = new Array(mr.data.length + 10);
data11 = this16;
haxe.ds._Vector.Vector_Impl_.blit(mr.data,0,data11,0,mr.data.length);
mr.data = data11;
}
}
mr.data[10] = mr.data[10] / scale.z;
var rot = new openfl.geom.Vector3D();
switch(orientationStyle[1]) {
case 0:
rot.w = Math.acos((mr.data[0] + mr.data[5] + mr.data[10] - 1) / 2);
var len = Math.sqrt((mr.data[6] - mr.data[9]) * (mr.data[6] - mr.data[9]) + (mr.data[8] - mr.data[2]) * (mr.data[8] - mr.data[2]) + (mr.data[1] - mr.data[4]) * (mr.data[1] - mr.data[4]));
if(len != 0) {
rot.x = (mr.data[6] - mr.data[9]) / len;
rot.y = (mr.data[8] - mr.data[2]) / len;
rot.z = (mr.data[1] - mr.data[4]) / len;
} else rot.x = rot.y = rot.z = 0;
break;
case 2:
var tr = mr.data[0] + mr.data[5] + mr.data[10];
if(tr > 0) {
rot.w = Math.sqrt(1 + tr) / 2;
rot.x = (mr.data[6] - mr.data[9]) / (4 * rot.w);
rot.y = (mr.data[8] - mr.data[2]) / (4 * rot.w);
rot.z = (mr.data[1] - mr.data[4]) / (4 * rot.w);
} else if(mr.data[0] > mr.data[5] && mr.data[0] > mr.data[10]) {
rot.x = Math.sqrt(1 + mr.data[0] - mr.data[5] - mr.data[10]) / 2;
rot.w = (mr.data[6] - mr.data[9]) / (4 * rot.x);
rot.y = (mr.data[1] + mr.data[4]) / (4 * rot.x);
rot.z = (mr.data[8] + mr.data[2]) / (4 * rot.x);
} else if(mr.data[5] > mr.data[10]) {
rot.y = Math.sqrt(1 + mr.data[5] - mr.data[0] - mr.data[10]) / 2;
rot.x = (mr.data[1] + mr.data[4]) / (4 * rot.y);
rot.w = (mr.data[8] - mr.data[2]) / (4 * rot.y);
rot.z = (mr.data[6] + mr.data[9]) / (4 * rot.y);
} else {
rot.z = Math.sqrt(1 + mr.data[10] - mr.data[0] - mr.data[5]) / 2;
rot.x = (mr.data[8] + mr.data[2]) / (4 * rot.z);
rot.y = (mr.data[6] + mr.data[9]) / (4 * rot.z);
rot.w = (mr.data[1] - mr.data[4]) / (4 * rot.z);
}
break;
case 1:
rot.y = Math.asin(-mr.data[2]);
if(mr.data[2] != 1 && mr.data[2] != -1) {
rot.x = Math.atan2(mr.data[6],mr.data[10]);
rot.z = Math.atan2(mr.data[1],mr.data[0]);
} else {
rot.z = 0;
rot.x = Math.atan2(mr.data[4],mr.data[5]);
}
break;
}
if(!vec.fixed) {
vec.length++;
if(vec.data.length < vec.length) {
var data12;
var this17;
this17 = new Array(vec.data.length + 10);
data12 = this17;
haxe.ds._Vector.Vector_Impl_.blit(vec.data,0,data12,0,vec.data.length);
vec.data = data12;
}
vec.data[vec.length - 1] = pos;
}
vec.length;
if(!vec.fixed) {
vec.length++;
if(vec.data.length < vec.length) {
var data13;
var this18;
this18 = new Array(vec.data.length + 10);
data13 = this18;
haxe.ds._Vector.Vector_Impl_.blit(vec.data,0,data13,0,vec.data.length);
vec.data = data13;
}
vec.data[vec.length - 1] = rot;
}
vec.length;
if(!vec.fixed) {
vec.length++;
if(vec.data.length < vec.length) {
var data14;
var this19;
this19 = new Array(vec.data.length + 10);
data14 = this19;
haxe.ds._Vector.Vector_Impl_.blit(vec.data,0,data14,0,vec.data.length);
vec.data = data14;
}
vec.data[vec.length - 1] = scale;
}
vec.length;
return vec;
}
,deltaTransformVector: function(v) {
var x = v.x;
var y = v.y;
var z = v.z;
return new openfl.geom.Vector3D(x * this.rawData.data[0] + y * this.rawData.data[4] + z * this.rawData.data[8] + this.rawData.data[3],x * this.rawData.data[1] + y * this.rawData.data[5] + z * this.rawData.data[9] + this.rawData.data[7],x * this.rawData.data[2] + y * this.rawData.data[6] + z * this.rawData.data[10] + this.rawData.data[11],0);
}
,identity: function() {
var value = [1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0];
var vectorData = new openfl.VectorData();
vectorData.length = value.length;
vectorData.fixed = true;
var vec;
var this1;
this1 = new Array(value.length);
vec = this1;
var _g1 = 0;
var _g = value.length;
while(_g1 < _g) {
var i = _g1++;
vec[i] = value[i];
}
vectorData.data = vec;
this.rawData = vectorData;
}
,interpolateTo: function(toMat,percent) {
var _g = 0;
while(_g < 16) {
var i = _g++;
var this1 = this.rawData;
if(!this1.fixed) {
if(i >= this1.length) this1.length = i + 1;
if(this1.data.length < this1.length) {
var data;
var this2;
this2 = new Array(this1.data.length + 10);
data = this2;
haxe.ds._Vector.Vector_Impl_.blit(this1.data,0,data,0,this1.data.length);
this1.data = data;
}
}
this1.data[i] = this.rawData.data[i] + (toMat.rawData.data[i] - this.rawData.data[i]) * percent;
}
}
,invert: function() {
var d = (this.rawData.data[0] * this.rawData.data[5] - this.rawData.data[4] * this.rawData.data[1]) * (this.rawData.data[10] * this.rawData.data[15] - this.rawData.data[14] * this.rawData.data[11]) - (this.rawData.data[0] * this.rawData.data[9] - this.rawData.data[8] * this.rawData.data[1]) * (this.rawData.data[6] * this.rawData.data[15] - this.rawData.data[14] * this.rawData.data[7]) + (this.rawData.data[0] * this.rawData.data[13] - this.rawData.data[12] * this.rawData.data[1]) * (this.rawData.data[6] * this.rawData.data[11] - this.rawData.data[10] * this.rawData.data[7]) + (this.rawData.data[4] * this.rawData.data[9] - this.rawData.data[8] * this.rawData.data[5]) * (this.rawData.data[2] * this.rawData.data[15] - this.rawData.data[14] * this.rawData.data[3]) - (this.rawData.data[4] * this.rawData.data[13] - this.rawData.data[12] * this.rawData.data[5]) * (this.rawData.data[2] * this.rawData.data[11] - this.rawData.data[10] * this.rawData.data[3]) + (this.rawData.data[8] * this.rawData.data[13] - this.rawData.data[12] * this.rawData.data[9]) * (this.rawData.data[2] * this.rawData.data[7] - this.rawData.data[6] * this.rawData.data[3]);
var invertable = Math.abs(d) > 0.00000000001;
if(invertable) {
d = 1 / d;
var m11 = this.rawData.data[0];
var m21 = this.rawData.data[4];
var m31 = this.rawData.data[8];
var m41 = this.rawData.data[12];
var m12 = this.rawData.data[1];
var m22 = this.rawData.data[5];
var m32 = this.rawData.data[9];
var m42 = this.rawData.data[13];
var m13 = this.rawData.data[2];
var m23 = this.rawData.data[6];
var m33 = this.rawData.data[10];
var m43 = this.rawData.data[14];
var m14 = this.rawData.data[3];
var m24 = this.rawData.data[7];
var m34 = this.rawData.data[11];
var m44 = this.rawData.data[15];
var this1 = this.rawData;
if(!this1.fixed) {
if(0 >= this1.length) this1.length = 1;
if(this1.data.length < this1.length) {
var data;
var this2;
this2 = new Array(this1.data.length + 10);
data = this2;
haxe.ds._Vector.Vector_Impl_.blit(this1.data,0,data,0,this1.data.length);
this1.data = data;
}
}
this1.data[0] = d * (m22 * (m33 * m44 - m43 * m34) - m32 * (m23 * m44 - m43 * m24) + m42 * (m23 * m34 - m33 * m24));
var this3 = this.rawData;
if(!this3.fixed) {
if(1 >= this3.length) this3.length = 2;
if(this3.data.length < this3.length) {
var data1;
var this4;
this4 = new Array(this3.data.length + 10);
data1 = this4;
haxe.ds._Vector.Vector_Impl_.blit(this3.data,0,data1,0,this3.data.length);
this3.data = data1;
}
}
this3.data[1] = -d * (m12 * (m33 * m44 - m43 * m34) - m32 * (m13 * m44 - m43 * m14) + m42 * (m13 * m34 - m33 * m14));
var this5 = this.rawData;
if(!this5.fixed) {
if(2 >= this5.length) this5.length = 3;
if(this5.data.length < this5.length) {
var data2;
var this6;
this6 = new Array(this5.data.length + 10);
data2 = this6;
haxe.ds._Vector.Vector_Impl_.blit(this5.data,0,data2,0,this5.data.length);
this5.data = data2;
}
}
this5.data[2] = d * (m12 * (m23 * m44 - m43 * m24) - m22 * (m13 * m44 - m43 * m14) + m42 * (m13 * m24 - m23 * m14));
var this7 = this.rawData;
if(!this7.fixed) {
if(3 >= this7.length) this7.length = 4;
if(this7.data.length < this7.length) {
var data3;
var this8;
this8 = new Array(this7.data.length + 10);
data3 = this8;
haxe.ds._Vector.Vector_Impl_.blit(this7.data,0,data3,0,this7.data.length);
this7.data = data3;
}
}
this7.data[3] = -d * (m12 * (m23 * m34 - m33 * m24) - m22 * (m13 * m34 - m33 * m14) + m32 * (m13 * m24 - m23 * m14));
var this9 = this.rawData;
if(!this9.fixed) {
if(4 >= this9.length) this9.length = 5;
if(this9.data.length < this9.length) {
var data4;
var this10;
this10 = new Array(this9.data.length + 10);
data4 = this10;
haxe.ds._Vector.Vector_Impl_.blit(this9.data,0,data4,0,this9.data.length);
this9.data = data4;
}
}
this9.data[4] = -d * (m21 * (m33 * m44 - m43 * m34) - m31 * (m23 * m44 - m43 * m24) + m41 * (m23 * m34 - m33 * m24));
var this11 = this.rawData;
if(!this11.fixed) {
if(5 >= this11.length) this11.length = 6;
if(this11.data.length < this11.length) {
var data5;
var this12;
this12 = new Array(this11.data.length + 10);
data5 = this12;
haxe.ds._Vector.Vector_Impl_.blit(this11.data,0,data5,0,this11.data.length);
this11.data = data5;
}
}
this11.data[5] = d * (m11 * (m33 * m44 - m43 * m34) - m31 * (m13 * m44 - m43 * m14) + m41 * (m13 * m34 - m33 * m14));
var this13 = this.rawData;
if(!this13.fixed) {
if(6 >= this13.length) this13.length = 7;
if(this13.data.length < this13.length) {
var data6;
var this14;
this14 = new Array(this13.data.length + 10);
data6 = this14;
haxe.ds._Vector.Vector_Impl_.blit(this13.data,0,data6,0,this13.data.length);
this13.data = data6;
}
}
this13.data[6] = -d * (m11 * (m23 * m44 - m43 * m24) - m21 * (m13 * m44 - m43 * m14) + m41 * (m13 * m24 - m23 * m14));
var this15 = this.rawData;
if(!this15.fixed) {
if(7 >= this15.length) this15.length = 8;
if(this15.data.length < this15.length) {
var data7;
var this16;
this16 = new Array(this15.data.length + 10);
data7 = this16;
haxe.ds._Vector.Vector_Impl_.blit(this15.data,0,data7,0,this15.data.length);
this15.data = data7;
}
}
this15.data[7] = d * (m11 * (m23 * m34 - m33 * m24) - m21 * (m13 * m34 - m33 * m14) + m31 * (m13 * m24 - m23 * m14));
var this17 = this.rawData;
if(!this17.fixed) {
if(8 >= this17.length) this17.length = 9;
if(this17.data.length < this17.length) {
var data8;
var this18;
this18 = new Array(this17.data.length + 10);
data8 = this18;
haxe.ds._Vector.Vector_Impl_.blit(this17.data,0,data8,0,this17.data.length);
this17.data = data8;
}
}
this17.data[8] = d * (m21 * (m32 * m44 - m42 * m34) - m31 * (m22 * m44 - m42 * m24) + m41 * (m22 * m34 - m32 * m24));
var this19 = this.rawData;
if(!this19.fixed) {
if(9 >= this19.length) this19.length = 10;
if(this19.data.length < this19.length) {
var data9;
var this20;
this20 = new Array(this19.data.length + 10);
data9 = this20;
haxe.ds._Vector.Vector_Impl_.blit(this19.data,0,data9,0,this19.data.length);
this19.data = data9;
}
}
this19.data[9] = -d * (m11 * (m32 * m44 - m42 * m34) - m31 * (m12 * m44 - m42 * m14) + m41 * (m12 * m34 - m32 * m14));
var this21 = this.rawData;
if(!this21.fixed) {
if(10 >= this21.length) this21.length = 11;
if(this21.data.length < this21.length) {
var data10;
var this22;
this22 = new Array(this21.data.length + 10);
data10 = this22;
haxe.ds._Vector.Vector_Impl_.blit(this21.data,0,data10,0,this21.data.length);
this21.data = data10;
}
}
this21.data[10] = d * (m11 * (m22 * m44 - m42 * m24) - m21 * (m12 * m44 - m42 * m14) + m41 * (m12 * m24 - m22 * m14));
var this23 = this.rawData;
if(!this23.fixed) {
if(11 >= this23.length) this23.length = 12;
if(this23.data.length < this23.length) {
var data11;
var this24;
this24 = new Array(this23.data.length + 10);
data11 = this24;
haxe.ds._Vector.Vector_Impl_.blit(this23.data,0,data11,0,this23.data.length);
this23.data = data11;
}
}
this23.data[11] = -d * (m11 * (m22 * m34 - m32 * m24) - m21 * (m12 * m34 - m32 * m14) + m31 * (m12 * m24 - m22 * m14));
var this25 = this.rawData;
if(!this25.fixed) {
if(12 >= this25.length) this25.length = 13;
if(this25.data.length < this25.length) {
var data12;
var this26;
this26 = new Array(this25.data.length + 10);
data12 = this26;
haxe.ds._Vector.Vector_Impl_.blit(this25.data,0,data12,0,this25.data.length);
this25.data = data12;
}
}
this25.data[12] = -d * (m21 * (m32 * m43 - m42 * m33) - m31 * (m22 * m43 - m42 * m23) + m41 * (m22 * m33 - m32 * m23));
var this27 = this.rawData;
if(!this27.fixed) {
if(13 >= this27.length) this27.length = 14;
if(this27.data.length < this27.length) {
var data13;
var this28;
this28 = new Array(this27.data.length + 10);
data13 = this28;
haxe.ds._Vector.Vector_Impl_.blit(this27.data,0,data13,0,this27.data.length);
this27.data = data13;
}
}
this27.data[13] = d * (m11 * (m32 * m43 - m42 * m33) - m31 * (m12 * m43 - m42 * m13) + m41 * (m12 * m33 - m32 * m13));
var this29 = this.rawData;
if(!this29.fixed) {
if(14 >= this29.length) this29.length = 15;
if(this29.data.length < this29.length) {
var data14;
var this30;
this30 = new Array(this29.data.length + 10);
data14 = this30;
haxe.ds._Vector.Vector_Impl_.blit(this29.data,0,data14,0,this29.data.length);
this29.data = data14;
}
}
this29.data[14] = -d * (m11 * (m22 * m43 - m42 * m23) - m21 * (m12 * m43 - m42 * m13) + m41 * (m12 * m23 - m22 * m13));
var this31 = this.rawData;
if(!this31.fixed) {
if(15 >= this31.length) this31.length = 16;
if(this31.data.length < this31.length) {
var data15;
var this32;
this32 = new Array(this31.data.length + 10);
data15 = this32;
haxe.ds._Vector.Vector_Impl_.blit(this31.data,0,data15,0,this31.data.length);
this31.data = data15;
}
}
this31.data[15] = d * (m11 * (m22 * m33 - m32 * m23) - m21 * (m12 * m33 - m32 * m13) + m31 * (m12 * m23 - m22 * m13));
}
return invertable;
}
,pointAt: function(pos,at,up) {
if(at == null) at = new openfl.geom.Vector3D(0,0,-1);
if(up == null) up = new openfl.geom.Vector3D(0,-1,0);
var dir = new openfl.geom.Vector3D(at.x - pos.x,at.y - pos.y,at.z - pos.z);
var vup = new openfl.geom.Vector3D(up.x,up.y,up.z,up.w);
var right;
dir.normalize();
vup.normalize();
var dir2 = new openfl.geom.Vector3D(dir.x,dir.y,dir.z,dir.w);
dir2.scaleBy(vup.x * dir.x + vup.y * dir.y + vup.z * dir.z);
vup = new openfl.geom.Vector3D(vup.x - dir2.x,vup.y - dir2.y,vup.z - dir2.z);
if(Math.sqrt(vup.x * vup.x + vup.y * vup.y + vup.z * vup.z) > 0) vup.normalize(); else if(dir.x != 0) vup = new openfl.geom.Vector3D(-dir.y,dir.x,0); else vup = new openfl.geom.Vector3D(1,0,0);
right = new openfl.geom.Vector3D(vup.y * dir.z - vup.z * dir.y,vup.z * dir.x - vup.x * dir.z,vup.x * dir.y - vup.y * dir.x,1);
right.normalize();
var this1 = this.rawData;
if(!this1.fixed) {
if(0 >= this1.length) this1.length = 1;
if(this1.data.length < this1.length) {
var data;
var this2;
this2 = new Array(this1.data.length + 10);
data = this2;
haxe.ds._Vector.Vector_Impl_.blit(this1.data,0,data,0,this1.data.length);
this1.data = data;
}
}
this1.data[0] = right.x;
var this3 = this.rawData;
if(!this3.fixed) {
if(4 >= this3.length) this3.length = 5;
if(this3.data.length < this3.length) {
var data1;
var this4;
this4 = new Array(this3.data.length + 10);
data1 = this4;
haxe.ds._Vector.Vector_Impl_.blit(this3.data,0,data1,0,this3.data.length);
this3.data = data1;
}
}
this3.data[4] = right.y;
var this5 = this.rawData;
if(!this5.fixed) {
if(8 >= this5.length) this5.length = 9;
if(this5.data.length < this5.length) {
var data2;
var this6;
this6 = new Array(this5.data.length + 10);
data2 = this6;
haxe.ds._Vector.Vector_Impl_.blit(this5.data,0,data2,0,this5.data.length);
this5.data = data2;
}
}
this5.data[8] = right.z;
var this7 = this.rawData;
if(!this7.fixed) {
if(12 >= this7.length) this7.length = 13;
if(this7.data.length < this7.length) {
var data3;
var this8;
this8 = new Array(this7.data.length + 10);
data3 = this8;
haxe.ds._Vector.Vector_Impl_.blit(this7.data,0,data3,0,this7.data.length);
this7.data = data3;
}
}
this7.data[12] = 0.0;
var this9 = this.rawData;
if(!this9.fixed) {
if(1 >= this9.length) this9.length = 2;
if(this9.data.length < this9.length) {
var data4;
var this10;
this10 = new Array(this9.data.length + 10);
data4 = this10;
haxe.ds._Vector.Vector_Impl_.blit(this9.data,0,data4,0,this9.data.length);
this9.data = data4;
}
}
this9.data[1] = vup.x;
var this11 = this.rawData;
if(!this11.fixed) {
if(5 >= this11.length) this11.length = 6;
if(this11.data.length < this11.length) {
var data5;
var this12;
this12 = new Array(this11.data.length + 10);
data5 = this12;
haxe.ds._Vector.Vector_Impl_.blit(this11.data,0,data5,0,this11.data.length);
this11.data = data5;
}
}
this11.data[5] = vup.y;
var this13 = this.rawData;
if(!this13.fixed) {
if(9 >= this13.length) this13.length = 10;
if(this13.data.length < this13.length) {
var data6;
var this14;
this14 = new Array(this13.data.length + 10);
data6 = this14;
haxe.ds._Vector.Vector_Impl_.blit(this13.data,0,data6,0,this13.data.length);
this13.data = data6;
}
}
this13.data[9] = vup.z;
var this15 = this.rawData;
if(!this15.fixed) {
if(13 >= this15.length) this15.length = 14;
if(this15.data.length < this15.length) {
var data7;
var this16;
this16 = new Array(this15.data.length + 10);
data7 = this16;
haxe.ds._Vector.Vector_Impl_.blit(this15.data,0,data7,0,this15.data.length);
this15.data = data7;
}
}
this15.data[13] = 0.0;
var this17 = this.rawData;
if(!this17.fixed) {
if(2 >= this17.length) this17.length = 3;
if(this17.data.length < this17.length) {
var data8;
var this18;
this18 = new Array(this17.data.length + 10);
data8 = this18;
haxe.ds._Vector.Vector_Impl_.blit(this17.data,0,data8,0,this17.data.length);
this17.data = data8;
}
}
this17.data[2] = dir.x;
var this19 = this.rawData;
if(!this19.fixed) {
if(6 >= this19.length) this19.length = 7;
if(this19.data.length < this19.length) {
var data9;
var this20;
this20 = new Array(this19.data.length + 10);
data9 = this20;
haxe.ds._Vector.Vector_Impl_.blit(this19.data,0,data9,0,this19.data.length);
this19.data = data9;
}
}
this19.data[6] = dir.y;
var this21 = this.rawData;
if(!this21.fixed) {
if(10 >= this21.length) this21.length = 11;
if(this21.data.length < this21.length) {
var data10;
var this22;
this22 = new Array(this21.data.length + 10);
data10 = this22;
haxe.ds._Vector.Vector_Impl_.blit(this21.data,0,data10,0,this21.data.length);
this21.data = data10;
}
}
this21.data[10] = dir.z;
var this23 = this.rawData;
if(!this23.fixed) {
if(14 >= this23.length) this23.length = 15;
if(this23.data.length < this23.length) {
var data11;
var this24;
this24 = new Array(this23.data.length + 10);
data11 = this24;
haxe.ds._Vector.Vector_Impl_.blit(this23.data,0,data11,0,this23.data.length);
this23.data = data11;
}
}
this23.data[14] = 0.0;
var this25 = this.rawData;
if(!this25.fixed) {
if(3 >= this25.length) this25.length = 4;
if(this25.data.length < this25.length) {
var data12;
var this26;
this26 = new Array(this25.data.length + 10);
data12 = this26;
haxe.ds._Vector.Vector_Impl_.blit(this25.data,0,data12,0,this25.data.length);
this25.data = data12;
}
}
this25.data[3] = pos.x;
var this27 = this.rawData;
if(!this27.fixed) {
if(7 >= this27.length) this27.length = 8;
if(this27.data.length < this27.length) {
var data13;
var this28;
this28 = new Array(this27.data.length + 10);
data13 = this28;
haxe.ds._Vector.Vector_Impl_.blit(this27.data,0,data13,0,this27.data.length);
this27.data = data13;
}
}
this27.data[7] = pos.y;
var this29 = this.rawData;
if(!this29.fixed) {
if(11 >= this29.length) this29.length = 12;
if(this29.data.length < this29.length) {
var data14;
var this30;
this30 = new Array(this29.data.length + 10);
data14 = this30;
haxe.ds._Vector.Vector_Impl_.blit(this29.data,0,data14,0,this29.data.length);
this29.data = data14;
}
}
this29.data[11] = pos.z;
var this31 = this.rawData;
if(!this31.fixed) {
if(15 >= this31.length) this31.length = 16;
if(this31.data.length < this31.length) {
var data15;
var this32;
this32 = new Array(this31.data.length + 10);
data15 = this32;
haxe.ds._Vector.Vector_Impl_.blit(this31.data,0,data15,0,this31.data.length);
this31.data = data15;
}
}
this31.data[15] = 1.0;
}
,prepend: function(rhs) {
var m111 = rhs.rawData.data[0];
var m121 = rhs.rawData.data[4];
var m131 = rhs.rawData.data[8];
var m141 = rhs.rawData.data[12];
var m112 = rhs.rawData.data[1];
var m122 = rhs.rawData.data[5];
var m132 = rhs.rawData.data[9];
var m142 = rhs.rawData.data[13];
var m113 = rhs.rawData.data[2];
var m123 = rhs.rawData.data[6];
var m133 = rhs.rawData.data[10];
var m143 = rhs.rawData.data[14];
var m114 = rhs.rawData.data[3];
var m124 = rhs.rawData.data[7];
var m134 = rhs.rawData.data[11];
var m144 = rhs.rawData.data[15];
var m211 = this.rawData.data[0];
var m221 = this.rawData.data[4];
var m231 = this.rawData.data[8];
var m241 = this.rawData.data[12];
var m212 = this.rawData.data[1];
var m222 = this.rawData.data[5];
var m232 = this.rawData.data[9];
var m242 = this.rawData.data[13];
var m213 = this.rawData.data[2];
var m223 = this.rawData.data[6];
var m233 = this.rawData.data[10];
var m243 = this.rawData.data[14];
var m214 = this.rawData.data[3];
var m224 = this.rawData.data[7];
var m234 = this.rawData.data[11];
var m244 = this.rawData.data[15];
var this1 = this.rawData;
if(!this1.fixed) {
if(0 >= this1.length) this1.length = 1;
if(this1.data.length < this1.length) {
var data;
var this2;
this2 = new Array(this1.data.length + 10);
data = this2;
haxe.ds._Vector.Vector_Impl_.blit(this1.data,0,data,0,this1.data.length);
this1.data = data;
}
}
this1.data[0] = m111 * m211 + m112 * m221 + m113 * m231 + m114 * m241;
var this3 = this.rawData;
if(!this3.fixed) {
if(1 >= this3.length) this3.length = 2;
if(this3.data.length < this3.length) {
var data1;
var this4;
this4 = new Array(this3.data.length + 10);
data1 = this4;
haxe.ds._Vector.Vector_Impl_.blit(this3.data,0,data1,0,this3.data.length);
this3.data = data1;
}
}
this3.data[1] = m111 * m212 + m112 * m222 + m113 * m232 + m114 * m242;
var this5 = this.rawData;
if(!this5.fixed) {
if(2 >= this5.length) this5.length = 3;
if(this5.data.length < this5.length) {
var data2;
var this6;
this6 = new Array(this5.data.length + 10);
data2 = this6;
haxe.ds._Vector.Vector_Impl_.blit(this5.data,0,data2,0,this5.data.length);
this5.data = data2;
}
}
this5.data[2] = m111 * m213 + m112 * m223 + m113 * m233 + m114 * m243;
var this7 = this.rawData;
if(!this7.fixed) {
if(3 >= this7.length) this7.length = 4;
if(this7.data.length < this7.length) {
var data3;
var this8;
this8 = new Array(this7.data.length + 10);
data3 = this8;
haxe.ds._Vector.Vector_Impl_.blit(this7.data,0,data3,0,this7.data.length);
this7.data = data3;
}
}
this7.data[3] = m111 * m214 + m112 * m224 + m113 * m234 + m114 * m244;
var this9 = this.rawData;
if(!this9.fixed) {
if(4 >= this9.length) this9.length = 5;
if(this9.data.length < this9.length) {
var data4;
var this10;
this10 = new Array(this9.data.length + 10);
data4 = this10;
haxe.ds._Vector.Vector_Impl_.blit(this9.data,0,data4,0,this9.data.length);
this9.data = data4;
}
}
this9.data[4] = m121 * m211 + m122 * m221 + m123 * m231 + m124 * m241;
var this11 = this.rawData;
if(!this11.fixed) {
if(5 >= this11.length) this11.length = 6;
if(this11.data.length < this11.length) {
var data5;
var this12;
this12 = new Array(this11.data.length + 10);
data5 = this12;
haxe.ds._Vector.Vector_Impl_.blit(this11.data,0,data5,0,this11.data.length);
this11.data = data5;
}
}
this11.data[5] = m121 * m212 + m122 * m222 + m123 * m232 + m124 * m242;
var this13 = this.rawData;
if(!this13.fixed) {
if(6 >= this13.length) this13.length = 7;
if(this13.data.length < this13.length) {
var data6;
var this14;
this14 = new Array(this13.data.length + 10);
data6 = this14;
haxe.ds._Vector.Vector_Impl_.blit(this13.data,0,data6,0,this13.data.length);
this13.data = data6;
}
}
this13.data[6] = m121 * m213 + m122 * m223 + m123 * m233 + m124 * m243;
var this15 = this.rawData;
if(!this15.fixed) {
if(7 >= this15.length) this15.length = 8;
if(this15.data.length < this15.length) {
var data7;
var this16;
this16 = new Array(this15.data.length + 10);
data7 = this16;
haxe.ds._Vector.Vector_Impl_.blit(this15.data,0,data7,0,this15.data.length);
this15.data = data7;
}
}
this15.data[7] = m121 * m214 + m122 * m224 + m123 * m234 + m124 * m244;
var this17 = this.rawData;
if(!this17.fixed) {
if(8 >= this17.length) this17.length = 9;
if(this17.data.length < this17.length) {
var data8;
var this18;
this18 = new Array(this17.data.length + 10);
data8 = this18;
haxe.ds._Vector.Vector_Impl_.blit(this17.data,0,data8,0,this17.data.length);
this17.data = data8;
}
}
this17.data[8] = m131 * m211 + m132 * m221 + m133 * m231 + m134 * m241;
var this19 = this.rawData;
if(!this19.fixed) {
if(9 >= this19.length) this19.length = 10;
if(this19.data.length < this19.length) {
var data9;
var this20;
this20 = new Array(this19.data.length + 10);
data9 = this20;
haxe.ds._Vector.Vector_Impl_.blit(this19.data,0,data9,0,this19.data.length);
this19.data = data9;
}
}
this19.data[9] = m131 * m212 + m132 * m222 + m133 * m232 + m134 * m242;
var this21 = this.rawData;
if(!this21.fixed) {
if(10 >= this21.length) this21.length = 11;
if(this21.data.length < this21.length) {
var data10;
var this22;
this22 = new Array(this21.data.length + 10);
data10 = this22;
haxe.ds._Vector.Vector_Impl_.blit(this21.data,0,data10,0,this21.data.length);
this21.data = data10;
}
}
this21.data[10] = m131 * m213 + m132 * m223 + m133 * m233 + m134 * m243;
var this23 = this.rawData;
if(!this23.fixed) {
if(11 >= this23.length) this23.length = 12;
if(this23.data.length < this23.length) {
var data11;
var this24;
this24 = new Array(this23.data.length + 10);
data11 = this24;
haxe.ds._Vector.Vector_Impl_.blit(this23.data,0,data11,0,this23.data.length);
this23.data = data11;
}
}
this23.data[11] = m131 * m214 + m132 * m224 + m133 * m234 + m134 * m244;
var this25 = this.rawData;
if(!this25.fixed) {
if(12 >= this25.length) this25.length = 13;
if(this25.data.length < this25.length) {
var data12;
var this26;
this26 = new Array(this25.data.length + 10);
data12 = this26;
haxe.ds._Vector.Vector_Impl_.blit(this25.data,0,data12,0,this25.data.length);
this25.data = data12;
}
}
this25.data[12] = m141 * m211 + m142 * m221 + m143 * m231 + m144 * m241;
var this27 = this.rawData;
if(!this27.fixed) {
if(13 >= this27.length) this27.length = 14;
if(this27.data.length < this27.length) {
var data13;
var this28;
this28 = new Array(this27.data.length + 10);
data13 = this28;
haxe.ds._Vector.Vector_Impl_.blit(this27.data,0,data13,0,this27.data.length);
this27.data = data13;
}
}
this27.data[13] = m141 * m212 + m142 * m222 + m143 * m232 + m144 * m242;
var this29 = this.rawData;
if(!this29.fixed) {
if(14 >= this29.length) this29.length = 15;
if(this29.data.length < this29.length) {
var data14;
var this30;
this30 = new Array(this29.data.length + 10);
data14 = this30;
haxe.ds._Vector.Vector_Impl_.blit(this29.data,0,data14,0,this29.data.length);
this29.data = data14;
}
}
this29.data[14] = m141 * m213 + m142 * m223 + m143 * m233 + m144 * m243;
var this31 = this.rawData;
if(!this31.fixed) {
if(15 >= this31.length) this31.length = 16;
if(this31.data.length < this31.length) {
var data15;
var this32;
this32 = new Array(this31.data.length + 10);
data15 = this32;
haxe.ds._Vector.Vector_Impl_.blit(this31.data,0,data15,0,this31.data.length);
this31.data = data15;
}
}
this31.data[15] = m141 * m214 + m142 * m224 + m143 * m234 + m144 * m244;
}
,prependRotation: function(degrees,axis,pivotPoint) {
var m = openfl.geom.Matrix3D.getAxisRotation(axis.x,axis.y,axis.z,degrees);
if(pivotPoint != null) {
var p = pivotPoint;
m.appendTranslation(p.x,p.y,p.z);
}
this.prepend(m);
}
,prependScale: function(xScale,yScale,zScale) {
this.prepend(new openfl.geom.Matrix3D((function($this) {
var $r;
var value = [xScale,0.0,0.0,0.0,0.0,yScale,0.0,0.0,0.0,0.0,zScale,0.0,0.0,0.0,0.0,1.0];
var vectorData = new openfl.VectorData();
vectorData.length = value.length;
vectorData.fixed = true;
{
var vec;
var this1;
this1 = new Array(value.length);
vec = this1;
var _g1 = 0;
var _g = value.length;
while(_g1 < _g) {
var i = _g1++;
vec[i] = value[i];
}
vectorData.data = vec;
}
$r = vectorData;
return $r;
}(this))));
}
,prependTranslation: function(x,y,z) {
var m = new openfl.geom.Matrix3D();
m.set_position(new openfl.geom.Vector3D(x,y,z));
this.prepend(m);
}
,recompose: function(components,orientationStyle) {
if(components.length < 3 || components.data[2].x == 0 || components.data[2].y == 0 || components.data[2].z == 0) return false;
if(orientationStyle == null) orientationStyle = openfl.geom.Orientation3D.EULER_ANGLES;
this.identity();
var scale = [];
scale[0] = scale[1] = scale[2] = components.data[2].x;
scale[4] = scale[5] = scale[6] = components.data[2].y;
scale[8] = scale[9] = scale[10] = components.data[2].z;
switch(orientationStyle[1]) {
case 1:
var cx = Math.cos(components.data[1].x);
var cy = Math.cos(components.data[1].y);
var cz = Math.cos(components.data[1].z);
var sx = Math.sin(components.data[1].x);
var sy = Math.sin(components.data[1].y);
var sz = Math.sin(components.data[1].z);
var this1 = this.rawData;
if(!this1.fixed) {
if(0 >= this1.length) this1.length = 1;
if(this1.data.length < this1.length) {
var data;
var this2;
this2 = new Array(this1.data.length + 10);
data = this2;
haxe.ds._Vector.Vector_Impl_.blit(this1.data,0,data,0,this1.data.length);
this1.data = data;
}
}
this1.data[0] = cy * cz * scale[0];
var this3 = this.rawData;
if(!this3.fixed) {
if(1 >= this3.length) this3.length = 2;
if(this3.data.length < this3.length) {
var data1;
var this4;
this4 = new Array(this3.data.length + 10);
data1 = this4;
haxe.ds._Vector.Vector_Impl_.blit(this3.data,0,data1,0,this3.data.length);
this3.data = data1;
}
}
this3.data[1] = cy * sz * scale[1];
var this5 = this.rawData;
if(!this5.fixed) {
if(2 >= this5.length) this5.length = 3;
if(this5.data.length < this5.length) {
var data2;
var this6;
this6 = new Array(this5.data.length + 10);
data2 = this6;
haxe.ds._Vector.Vector_Impl_.blit(this5.data,0,data2,0,this5.data.length);
this5.data = data2;
}
}
this5.data[2] = -sy * scale[2];
var this7 = this.rawData;
if(!this7.fixed) {
if(3 >= this7.length) this7.length = 4;
if(this7.data.length < this7.length) {
var data3;
var this8;
this8 = new Array(this7.data.length + 10);
data3 = this8;
haxe.ds._Vector.Vector_Impl_.blit(this7.data,0,data3,0,this7.data.length);
this7.data = data3;
}
}
this7.data[3] = 0;
var this9 = this.rawData;
if(!this9.fixed) {
if(4 >= this9.length) this9.length = 5;
if(this9.data.length < this9.length) {
var data4;
var this10;
this10 = new Array(this9.data.length + 10);
data4 = this10;
haxe.ds._Vector.Vector_Impl_.blit(this9.data,0,data4,0,this9.data.length);
this9.data = data4;
}
}
this9.data[4] = (sx * sy * cz - cx * sz) * scale[4];
var this11 = this.rawData;
if(!this11.fixed) {
if(5 >= this11.length) this11.length = 6;
if(this11.data.length < this11.length) {
var data5;
var this12;
this12 = new Array(this11.data.length + 10);
data5 = this12;
haxe.ds._Vector.Vector_Impl_.blit(this11.data,0,data5,0,this11.data.length);
this11.data = data5;
}
}
this11.data[5] = (sx * sy * sz + cx * cz) * scale[5];
var this13 = this.rawData;
if(!this13.fixed) {
if(6 >= this13.length) this13.length = 7;
if(this13.data.length < this13.length) {
var data6;
var this14;
this14 = new Array(this13.data.length + 10);
data6 = this14;
haxe.ds._Vector.Vector_Impl_.blit(this13.data,0,data6,0,this13.data.length);
this13.data = data6;
}
}
this13.data[6] = sx * cy * scale[6];
var this15 = this.rawData;
if(!this15.fixed) {
if(7 >= this15.length) this15.length = 8;
if(this15.data.length < this15.length) {
var data7;
var this16;
this16 = new Array(this15.data.length + 10);
data7 = this16;
haxe.ds._Vector.Vector_Impl_.blit(this15.data,0,data7,0,this15.data.length);
this15.data = data7;
}
}
this15.data[7] = 0;
var this17 = this.rawData;
if(!this17.fixed) {
if(8 >= this17.length) this17.length = 9;
if(this17.data.length < this17.length) {
var data8;
var this18;
this18 = new Array(this17.data.length + 10);
data8 = this18;
haxe.ds._Vector.Vector_Impl_.blit(this17.data,0,data8,0,this17.data.length);
this17.data = data8;
}
}
this17.data[8] = (cx * sy * cz + sx * sz) * scale[8];
var this19 = this.rawData;
if(!this19.fixed) {
if(9 >= this19.length) this19.length = 10;
if(this19.data.length < this19.length) {
var data9;
var this20;
this20 = new Array(this19.data.length + 10);
data9 = this20;
haxe.ds._Vector.Vector_Impl_.blit(this19.data,0,data9,0,this19.data.length);
this19.data = data9;
}
}
this19.data[9] = (cx * sy * sz - sx * cz) * scale[9];
var this21 = this.rawData;
if(!this21.fixed) {
if(10 >= this21.length) this21.length = 11;
if(this21.data.length < this21.length) {
var data10;
var this22;
this22 = new Array(this21.data.length + 10);
data10 = this22;
haxe.ds._Vector.Vector_Impl_.blit(this21.data,0,data10,0,this21.data.length);
this21.data = data10;
}
}
this21.data[10] = cx * cy * scale[10];
var this23 = this.rawData;
if(!this23.fixed) {
if(11 >= this23.length) this23.length = 12;
if(this23.data.length < this23.length) {
var data11;
var this24;
this24 = new Array(this23.data.length + 10);
data11 = this24;
haxe.ds._Vector.Vector_Impl_.blit(this23.data,0,data11,0,this23.data.length);
this23.data = data11;
}
}
this23.data[11] = 0;
var this25 = this.rawData;
if(!this25.fixed) {
if(12 >= this25.length) this25.length = 13;
if(this25.data.length < this25.length) {
var data12;
var this26;
this26 = new Array(this25.data.length + 10);
data12 = this26;
haxe.ds._Vector.Vector_Impl_.blit(this25.data,0,data12,0,this25.data.length);
this25.data = data12;
}
}
this25.data[12] = components.data[0].x;
var this27 = this.rawData;
if(!this27.fixed) {
if(13 >= this27.length) this27.length = 14;
if(this27.data.length < this27.length) {
var data13;
var this28;
this28 = new Array(this27.data.length + 10);
data13 = this28;
haxe.ds._Vector.Vector_Impl_.blit(this27.data,0,data13,0,this27.data.length);
this27.data = data13;
}
}
this27.data[13] = components.data[0].y;
var this29 = this.rawData;
if(!this29.fixed) {
if(14 >= this29.length) this29.length = 15;
if(this29.data.length < this29.length) {
var data14;
var this30;
this30 = new Array(this29.data.length + 10);
data14 = this30;
haxe.ds._Vector.Vector_Impl_.blit(this29.data,0,data14,0,this29.data.length);
this29.data = data14;
}
}
this29.data[14] = components.data[0].z;
var this31 = this.rawData;
if(!this31.fixed) {
if(15 >= this31.length) this31.length = 16;
if(this31.data.length < this31.length) {
var data15;
var this32;
this32 = new Array(this31.data.length + 10);
data15 = this32;
haxe.ds._Vector.Vector_Impl_.blit(this31.data,0,data15,0,this31.data.length);
this31.data = data15;
}
}
this31.data[15] = 1;
break;
default:
var x = components.data[1].x;
var y = components.data[1].y;
var z = components.data[1].z;
var w = components.data[1].w;
if(Type.enumEq(orientationStyle,openfl.geom.Orientation3D.AXIS_ANGLE)) {
x *= Math.sin(w / 2);
y *= Math.sin(w / 2);
z *= Math.sin(w / 2);
w = Math.cos(w / 2);
}
var this33 = this.rawData;
if(!this33.fixed) {
if(0 >= this33.length) this33.length = 1;
if(this33.data.length < this33.length) {
var data16;
var this34;
this34 = new Array(this33.data.length + 10);
data16 = this34;
haxe.ds._Vector.Vector_Impl_.blit(this33.data,0,data16,0,this33.data.length);
this33.data = data16;
}
}
this33.data[0] = (1 - 2 * y * y - 2 * z * z) * scale[0];
var this35 = this.rawData;
if(!this35.fixed) {
if(1 >= this35.length) this35.length = 2;
if(this35.data.length < this35.length) {
var data17;
var this36;
this36 = new Array(this35.data.length + 10);
data17 = this36;
haxe.ds._Vector.Vector_Impl_.blit(this35.data,0,data17,0,this35.data.length);
this35.data = data17;
}
}
this35.data[1] = (2 * x * y + 2 * w * z) * scale[1];
var this37 = this.rawData;
if(!this37.fixed) {
if(2 >= this37.length) this37.length = 3;
if(this37.data.length < this37.length) {
var data18;
var this38;
this38 = new Array(this37.data.length + 10);
data18 = this38;
haxe.ds._Vector.Vector_Impl_.blit(this37.data,0,data18,0,this37.data.length);
this37.data = data18;
}
}
this37.data[2] = (2 * x * z - 2 * w * y) * scale[2];
var this39 = this.rawData;
if(!this39.fixed) {
if(3 >= this39.length) this39.length = 4;
if(this39.data.length < this39.length) {
var data19;
var this40;
this40 = new Array(this39.data.length + 10);
data19 = this40;
haxe.ds._Vector.Vector_Impl_.blit(this39.data,0,data19,0,this39.data.length);
this39.data = data19;
}
}
this39.data[3] = 0;
var this41 = this.rawData;
if(!this41.fixed) {
if(4 >= this41.length) this41.length = 5;
if(this41.data.length < this41.length) {
var data20;
var this42;
this42 = new Array(this41.data.length + 10);
data20 = this42;
haxe.ds._Vector.Vector_Impl_.blit(this41.data,0,data20,0,this41.data.length);
this41.data = data20;
}
}
this41.data[4] = (2 * x * y - 2 * w * z) * scale[4];
var this43 = this.rawData;
if(!this43.fixed) {
if(5 >= this43.length) this43.length = 6;
if(this43.data.length < this43.length) {
var data21;
var this44;
this44 = new Array(this43.data.length + 10);
data21 = this44;
haxe.ds._Vector.Vector_Impl_.blit(this43.data,0,data21,0,this43.data.length);
this43.data = data21;
}
}
this43.data[5] = (1 - 2 * x * x - 2 * z * z) * scale[5];
var this45 = this.rawData;
if(!this45.fixed) {
if(6 >= this45.length) this45.length = 7;
if(this45.data.length < this45.length) {
var data22;
var this46;
this46 = new Array(this45.data.length + 10);
data22 = this46;
haxe.ds._Vector.Vector_Impl_.blit(this45.data,0,data22,0,this45.data.length);
this45.data = data22;
}
}
this45.data[6] = (2 * y * z + 2 * w * x) * scale[6];
var this47 = this.rawData;
if(!this47.fixed) {
if(7 >= this47.length) this47.length = 8;
if(this47.data.length < this47.length) {
var data23;
var this48;
this48 = new Array(this47.data.length + 10);
data23 = this48;
haxe.ds._Vector.Vector_Impl_.blit(this47.data,0,data23,0,this47.data.length);
this47.data = data23;
}
}
this47.data[7] = 0;
var this49 = this.rawData;
if(!this49.fixed) {
if(8 >= this49.length) this49.length = 9;
if(this49.data.length < this49.length) {
var data24;
var this50;
this50 = new Array(this49.data.length + 10);
data24 = this50;
haxe.ds._Vector.Vector_Impl_.blit(this49.data,0,data24,0,this49.data.length);
this49.data = data24;
}
}
this49.data[8] = (2 * x * z + 2 * w * y) * scale[8];
var this51 = this.rawData;
if(!this51.fixed) {
if(9 >= this51.length) this51.length = 10;
if(this51.data.length < this51.length) {
var data25;
var this52;
this52 = new Array(this51.data.length + 10);
data25 = this52;
haxe.ds._Vector.Vector_Impl_.blit(this51.data,0,data25,0,this51.data.length);
this51.data = data25;
}
}
this51.data[9] = (2 * y * z - 2 * w * x) * scale[9];
var this53 = this.rawData;
if(!this53.fixed) {
if(10 >= this53.length) this53.length = 11;
if(this53.data.length < this53.length) {
var data26;
var this54;
this54 = new Array(this53.data.length + 10);
data26 = this54;
haxe.ds._Vector.Vector_Impl_.blit(this53.data,0,data26,0,this53.data.length);
this53.data = data26;
}
}
this53.data[10] = (1 - 2 * x * x - 2 * y * y) * scale[10];
var this55 = this.rawData;
if(!this55.fixed) {
if(11 >= this55.length) this55.length = 12;
if(this55.data.length < this55.length) {
var data27;
var this56;
this56 = new Array(this55.data.length + 10);
data27 = this56;
haxe.ds._Vector.Vector_Impl_.blit(this55.data,0,data27,0,this55.data.length);
this55.data = data27;
}
}
this55.data[11] = 0;
var this57 = this.rawData;
if(!this57.fixed) {
if(12 >= this57.length) this57.length = 13;
if(this57.data.length < this57.length) {
var data28;
var this58;
this58 = new Array(this57.data.length + 10);
data28 = this58;
haxe.ds._Vector.Vector_Impl_.blit(this57.data,0,data28,0,this57.data.length);
this57.data = data28;
}
}
this57.data[12] = components.data[0].x;
var this59 = this.rawData;
if(!this59.fixed) {
if(13 >= this59.length) this59.length = 14;
if(this59.data.length < this59.length) {
var data29;
var this60;
this60 = new Array(this59.data.length + 10);
data29 = this60;
haxe.ds._Vector.Vector_Impl_.blit(this59.data,0,data29,0,this59.data.length);
this59.data = data29;
}
}
this59.data[13] = components.data[0].y;
var this61 = this.rawData;
if(!this61.fixed) {
if(14 >= this61.length) this61.length = 15;
if(this61.data.length < this61.length) {
var data30;
var this62;
this62 = new Array(this61.data.length + 10);
data30 = this62;
haxe.ds._Vector.Vector_Impl_.blit(this61.data,0,data30,0,this61.data.length);
this61.data = data30;
}
}
this61.data[14] = components.data[0].z;
var this63 = this.rawData;
if(!this63.fixed) {
if(15 >= this63.length) this63.length = 16;
if(this63.data.length < this63.length) {
var data31;
var this64;
this64 = new Array(this63.data.length + 10);
data31 = this64;
haxe.ds._Vector.Vector_Impl_.blit(this63.data,0,data31,0,this63.data.length);
this63.data = data31;
}
}
this63.data[15] = 1;
}
if(components.data[2].x == 0) {
var this65 = this.rawData;
if(!this65.fixed) {
if(0 >= this65.length) this65.length = 1;
if(this65.data.length < this65.length) {
var data32;
var this66;
this66 = new Array(this65.data.length + 10);
data32 = this66;
haxe.ds._Vector.Vector_Impl_.blit(this65.data,0,data32,0,this65.data.length);
this65.data = data32;
}
}
this65.data[0] = 1e-15;
}
if(components.data[2].y == 0) {
var this67 = this.rawData;
if(!this67.fixed) {
if(5 >= this67.length) this67.length = 6;
if(this67.data.length < this67.length) {
var data33;
var this68;
this68 = new Array(this67.data.length + 10);
data33 = this68;
haxe.ds._Vector.Vector_Impl_.blit(this67.data,0,data33,0,this67.data.length);
this67.data = data33;
}
}
this67.data[5] = 1e-15;
}
if(components.data[2].z == 0) {
var this69 = this.rawData;
if(!this69.fixed) {
if(10 >= this69.length) this69.length = 11;
if(this69.data.length < this69.length) {
var data34;
var this70;
this70 = new Array(this69.data.length + 10);
data34 = this70;
haxe.ds._Vector.Vector_Impl_.blit(this69.data,0,data34,0,this69.data.length);
this69.data = data34;
}
}
this69.data[10] = 1e-15;
}
return !(components.data[2].x == 0 || components.data[2].y == 0 || components.data[2].y == 0);
}
,transformVector: function(v) {
var x = v.x;
var y = v.y;
var z = v.z;
return new openfl.geom.Vector3D(x * this.rawData.data[0] + y * this.rawData.data[4] + z * this.rawData.data[8] + this.rawData.data[12],x * this.rawData.data[1] + y * this.rawData.data[5] + z * this.rawData.data[9] + this.rawData.data[13],x * this.rawData.data[2] + y * this.rawData.data[6] + z * this.rawData.data[10] + this.rawData.data[14],x * this.rawData.data[3] + y * this.rawData.data[7] + z * this.rawData.data[11] + this.rawData.data[15]);
}
,transformVectors: function(vin,vout) {
var i = 0;
while(i + 3 <= vin.length) {
var x = vin.data[i];
var y = vin.data[i + 1];
var z = vin.data[i + 2];
if(!vout.fixed) {
if(i >= vout.length) vout.length = i + 1;
if(vout.data.length < vout.length) {
var data;
var this1;
this1 = new Array(vout.data.length + 10);
data = this1;
haxe.ds._Vector.Vector_Impl_.blit(vout.data,0,data,0,vout.data.length);
vout.data = data;
}
}
vout.data[i] = x * this.rawData.data[0] + y * this.rawData.data[4] + z * this.rawData.data[8] + this.rawData.data[12];
var key = i + 1;
if(!vout.fixed) {
if(key >= vout.length) vout.length = key + 1;
if(vout.data.length < vout.length) {
var data1;
var this2;
this2 = new Array(vout.data.length + 10);
data1 = this2;
haxe.ds._Vector.Vector_Impl_.blit(vout.data,0,data1,0,vout.data.length);
vout.data = data1;
}
}
vout.data[key] = x * this.rawData.data[1] + y * this.rawData.data[5] + z * this.rawData.data[9] + this.rawData.data[13];
var key1 = i + 2;
if(!vout.fixed) {
if(key1 >= vout.length) vout.length = key1 + 1;
if(vout.data.length < vout.length) {
var data2;
var this3;
this3 = new Array(vout.data.length + 10);
data2 = this3;
haxe.ds._Vector.Vector_Impl_.blit(vout.data,0,data2,0,vout.data.length);
vout.data = data2;
}
}
vout.data[key1] = x * this.rawData.data[2] + y * this.rawData.data[6] + z * this.rawData.data[10] + this.rawData.data[14];
i += 3;
}
}
,transpose: function() {
var oRawData;
var this1 = this.rawData;
var vectorData = new openfl.VectorData();
vectorData.length = this1.length;
vectorData.fixed = this1.fixed;
var this2;
this2 = new Array(this1.length);
vectorData.data = this2;
haxe.ds._Vector.Vector_Impl_.blit(this1.data,0,vectorData.data,0,this1.length);
oRawData = vectorData;
var this3 = this.rawData;
if(!this3.fixed) {
if(1 >= this3.length) this3.length = 2;
if(this3.data.length < this3.length) {
var data;
var this4;
this4 = new Array(this3.data.length + 10);
data = this4;
haxe.ds._Vector.Vector_Impl_.blit(this3.data,0,data,0,this3.data.length);
this3.data = data;
}
}
this3.data[1] = oRawData.data[4];
var this5 = this.rawData;
if(!this5.fixed) {
if(2 >= this5.length) this5.length = 3;
if(this5.data.length < this5.length) {
var data1;
var this6;
this6 = new Array(this5.data.length + 10);
data1 = this6;
haxe.ds._Vector.Vector_Impl_.blit(this5.data,0,data1,0,this5.data.length);
this5.data = data1;
}
}
this5.data[2] = oRawData.data[8];
var this7 = this.rawData;
if(!this7.fixed) {
if(3 >= this7.length) this7.length = 4;
if(this7.data.length < this7.length) {
var data2;
var this8;
this8 = new Array(this7.data.length + 10);
data2 = this8;
haxe.ds._Vector.Vector_Impl_.blit(this7.data,0,data2,0,this7.data.length);
this7.data = data2;
}
}
this7.data[3] = oRawData.data[12];
var this9 = this.rawData;
if(!this9.fixed) {
if(4 >= this9.length) this9.length = 5;
if(this9.data.length < this9.length) {
var data3;
var this10;
this10 = new Array(this9.data.length + 10);
data3 = this10;
haxe.ds._Vector.Vector_Impl_.blit(this9.data,0,data3,0,this9.data.length);
this9.data = data3;
}
}
this9.data[4] = oRawData.data[1];
var this11 = this.rawData;
if(!this11.fixed) {
if(6 >= this11.length) this11.length = 7;
if(this11.data.length < this11.length) {
var data4;
var this12;
this12 = new Array(this11.data.length + 10);
data4 = this12;
haxe.ds._Vector.Vector_Impl_.blit(this11.data,0,data4,0,this11.data.length);
this11.data = data4;
}
}
this11.data[6] = oRawData.data[9];
var this13 = this.rawData;
if(!this13.fixed) {
if(7 >= this13.length) this13.length = 8;
if(this13.data.length < this13.length) {
var data5;
var this14;
this14 = new Array(this13.data.length + 10);
data5 = this14;
haxe.ds._Vector.Vector_Impl_.blit(this13.data,0,data5,0,this13.data.length);
this13.data = data5;
}
}
this13.data[7] = oRawData.data[13];
var this15 = this.rawData;
if(!this15.fixed) {
if(8 >= this15.length) this15.length = 9;
if(this15.data.length < this15.length) {
var data6;
var this16;
this16 = new Array(this15.data.length + 10);
data6 = this16;
haxe.ds._Vector.Vector_Impl_.blit(this15.data,0,data6,0,this15.data.length);
this15.data = data6;
}
}
this15.data[8] = oRawData.data[2];
var this17 = this.rawData;
if(!this17.fixed) {
if(9 >= this17.length) this17.length = 10;
if(this17.data.length < this17.length) {
var data7;
var this18;
this18 = new Array(this17.data.length + 10);
data7 = this18;
haxe.ds._Vector.Vector_Impl_.blit(this17.data,0,data7,0,this17.data.length);
this17.data = data7;
}
}
this17.data[9] = oRawData.data[6];
var this19 = this.rawData;
if(!this19.fixed) {
if(11 >= this19.length) this19.length = 12;
if(this19.data.length < this19.length) {
var data8;
var this20;
this20 = new Array(this19.data.length + 10);
data8 = this20;
haxe.ds._Vector.Vector_Impl_.blit(this19.data,0,data8,0,this19.data.length);
this19.data = data8;
}
}
this19.data[11] = oRawData.data[14];
var this21 = this.rawData;
if(!this21.fixed) {
if(12 >= this21.length) this21.length = 13;
if(this21.data.length < this21.length) {
var data9;
var this22;
this22 = new Array(this21.data.length + 10);
data9 = this22;
haxe.ds._Vector.Vector_Impl_.blit(this21.data,0,data9,0,this21.data.length);
this21.data = data9;
}
}
this21.data[12] = oRawData.data[3];
var this23 = this.rawData;
if(!this23.fixed) {
if(13 >= this23.length) this23.length = 14;
if(this23.data.length < this23.length) {
var data10;
var this24;
this24 = new Array(this23.data.length + 10);
data10 = this24;
haxe.ds._Vector.Vector_Impl_.blit(this23.data,0,data10,0,this23.data.length);
this23.data = data10;
}
}
this23.data[13] = oRawData.data[7];
var this25 = this.rawData;
if(!this25.fixed) {
if(14 >= this25.length) this25.length = 15;
if(this25.data.length < this25.length) {
var data11;
var this26;
this26 = new Array(this25.data.length + 10);
data11 = this26;
haxe.ds._Vector.Vector_Impl_.blit(this25.data,0,data11,0,this25.data.length);
this25.data = data11;
}
}
this25.data[14] = oRawData.data[11];
}
,get_determinant: function() {
return (this.rawData.data[0] * this.rawData.data[5] - this.rawData.data[4] * this.rawData.data[1]) * (this.rawData.data[10] * this.rawData.data[15] - this.rawData.data[14] * this.rawData.data[11]) - (this.rawData.data[0] * this.rawData.data[9] - this.rawData.data[8] * this.rawData.data[1]) * (this.rawData.data[6] * this.rawData.data[15] - this.rawData.data[14] * this.rawData.data[7]) + (this.rawData.data[0] * this.rawData.data[13] - this.rawData.data[12] * this.rawData.data[1]) * (this.rawData.data[6] * this.rawData.data[11] - this.rawData.data[10] * this.rawData.data[7]) + (this.rawData.data[4] * this.rawData.data[9] - this.rawData.data[8] * this.rawData.data[5]) * (this.rawData.data[2] * this.rawData.data[15] - this.rawData.data[14] * this.rawData.data[3]) - (this.rawData.data[4] * this.rawData.data[13] - this.rawData.data[12] * this.rawData.data[5]) * (this.rawData.data[2] * this.rawData.data[11] - this.rawData.data[10] * this.rawData.data[3]) + (this.rawData.data[8] * this.rawData.data[13] - this.rawData.data[12] * this.rawData.data[9]) * (this.rawData.data[2] * this.rawData.data[7] - this.rawData.data[6] * this.rawData.data[3]);
}
,get_position: function() {
return new openfl.geom.Vector3D(this.rawData.data[12],this.rawData.data[13],this.rawData.data[14]);
}
,set_position: function(val) {
var this1 = this.rawData;
if(!this1.fixed) {
if(12 >= this1.length) this1.length = 13;
if(this1.data.length < this1.length) {
var data;
var this2;
this2 = new Array(this1.data.length + 10);
data = this2;
haxe.ds._Vector.Vector_Impl_.blit(this1.data,0,data,0,this1.data.length);
this1.data = data;
}
}
this1.data[12] = val.x;
var this3 = this.rawData;
if(!this3.fixed) {
if(13 >= this3.length) this3.length = 14;
if(this3.data.length < this3.length) {
var data1;
var this4;
this4 = new Array(this3.data.length + 10);
data1 = this4;
haxe.ds._Vector.Vector_Impl_.blit(this3.data,0,data1,0,this3.data.length);
this3.data = data1;
}
}
this3.data[13] = val.y;
var this5 = this.rawData;
if(!this5.fixed) {
if(14 >= this5.length) this5.length = 15;
if(this5.data.length < this5.length) {
var data2;
var this6;
this6 = new Array(this5.data.length + 10);
data2 = this6;
haxe.ds._Vector.Vector_Impl_.blit(this5.data,0,data2,0,this5.data.length);
this5.data = data2;
}
}
this5.data[14] = val.z;
return val;
}
,__class__: openfl.geom.Matrix3D
,__properties__: {set_position:"set_position",get_position:"get_position",get_determinant:"get_determinant"}
};
openfl.geom.Orientation3D = $hxClasses["openfl.geom.Orientation3D"] = { __ename__ : ["openfl","geom","Orientation3D"], __constructs__ : ["AXIS_ANGLE","EULER_ANGLES","QUATERNION"] };
openfl.geom.Orientation3D.AXIS_ANGLE = ["AXIS_ANGLE",0];
openfl.geom.Orientation3D.AXIS_ANGLE.toString = $estr;
openfl.geom.Orientation3D.AXIS_ANGLE.__enum__ = openfl.geom.Orientation3D;
openfl.geom.Orientation3D.EULER_ANGLES = ["EULER_ANGLES",1];
openfl.geom.Orientation3D.EULER_ANGLES.toString = $estr;
openfl.geom.Orientation3D.EULER_ANGLES.__enum__ = openfl.geom.Orientation3D;
openfl.geom.Orientation3D.QUATERNION = ["QUATERNION",2];
openfl.geom.Orientation3D.QUATERNION.toString = $estr;
openfl.geom.Orientation3D.QUATERNION.__enum__ = openfl.geom.Orientation3D;
openfl.geom.Transform = function(displayObject) {
this.__colorTransform = new openfl.geom.ColorTransform();
this.concatenatedColorTransform = new openfl.geom.ColorTransform();
this.concatenatedMatrix = new openfl.geom.Matrix();
this.pixelBounds = new openfl.geom.Rectangle();
this.__displayObject = displayObject;
this.__hasMatrix = true;
};
$hxClasses["openfl.geom.Transform"] = openfl.geom.Transform;
openfl.geom.Transform.__name__ = ["openfl","geom","Transform"];
openfl.geom.Transform.prototype = {
get_colorTransform: function() {
return this.__colorTransform;
}
,set_colorTransform: function(value) {
this.__colorTransform = value;
if(value != null) this.__displayObject.set_alpha(value.alphaMultiplier);
return this.__colorTransform;
}
,get_matrix: function() {
if(this.__hasMatrix) {
var matrix = new openfl.geom.Matrix();
matrix.scale(this.__displayObject.get_scaleX(),this.__displayObject.get_scaleY());
matrix.rotate(this.__displayObject.get_rotation() * (Math.PI / 180));
matrix.translate(this.__displayObject.get_x(),this.__displayObject.get_y());
return matrix;
}
return null;
}
,set_matrix: function(value) {
if(value == null) {
this.__hasMatrix = false;
return null;
}
this.__hasMatrix = true;
this.__hasMatrix3D = false;
if(this.__displayObject != null) {
this.__displayObject.set_x(value.tx);
this.__displayObject.set_y(value.ty);
this.__displayObject.set_scaleX(Math.sqrt(value.a * value.a + value.b * value.b));
this.__displayObject.set_scaleY(Math.sqrt(value.c * value.c + value.d * value.d));
this.__displayObject.set_rotation(Math.atan2(value.b,value.a) * (180 / Math.PI));
}
return value;
}
,get_matrix3D: function() {
if(this.__hasMatrix3D) {
var matrix = new openfl.geom.Matrix();
matrix.scale(this.__displayObject.get_scaleX(),this.__displayObject.get_scaleY());
matrix.rotate(this.__displayObject.get_rotation() * (Math.PI / 180));
matrix.translate(this.__displayObject.get_x(),this.__displayObject.get_y());
return new openfl.geom.Matrix3D((function($this) {
var $r;
var value = [matrix.a,matrix.b,0.0,0.0,matrix.c,matrix.d,0.0,0.0,0.0,0.0,1.0,0.0,matrix.tx,matrix.ty,0.0,1.0];
var vectorData = new openfl.VectorData();
vectorData.length = value.length;
vectorData.fixed = true;
{
var vec;
var this1;
this1 = new Array(value.length);
vec = this1;
var _g1 = 0;
var _g = value.length;
while(_g1 < _g) {
var i = _g1++;
vec[i] = value[i];
}
vectorData.data = vec;
}
$r = vectorData;
return $r;
}(this)));
}
return null;
}
,set_matrix3D: function(value) {
if(value == null) {
this.__hasMatrix3D = false;
return null;
}
this.__hasMatrix = false;
this.__hasMatrix3D = true;
if(this.__displayObject != null) {
this.__displayObject.set_x(value.rawData.data[12]);
this.__displayObject.set_y(value.rawData.data[13]);
this.__displayObject.set_scaleX(Math.sqrt(value.rawData.data[0] * value.rawData.data[0] + value.rawData.data[1] * value.rawData.data[1]));
this.__displayObject.set_scaleY(Math.sqrt(value.rawData.data[4] * value.rawData.data[4] + value.rawData.data[5] * value.rawData.data[5]));
this.__displayObject.set_rotation(Math.atan2(value.rawData.data[1],value.rawData.data[0]) * (180 / Math.PI));
}
return value;
}
,__class__: openfl.geom.Transform
,__properties__: {set_matrix3D:"set_matrix3D",get_matrix3D:"get_matrix3D",set_matrix:"set_matrix",get_matrix:"get_matrix",set_colorTransform:"set_colorTransform",get_colorTransform:"get_colorTransform"}
};
openfl.geom.Vector3D = function(x,y,z,w) {
if(w == null) w = 0;
if(z == null) z = 0;
if(y == null) y = 0;
if(x == null) x = 0;
this.w = w;
this.x = x;
this.y = y;
this.z = z;
};
$hxClasses["openfl.geom.Vector3D"] = openfl.geom.Vector3D;
openfl.geom.Vector3D.__name__ = ["openfl","geom","Vector3D"];
openfl.geom.Vector3D.__properties__ = {get_Z_AXIS:"get_Z_AXIS",get_Y_AXIS:"get_Y_AXIS",get_X_AXIS:"get_X_AXIS"}
openfl.geom.Vector3D.X_AXIS = null;
openfl.geom.Vector3D.Y_AXIS = null;
openfl.geom.Vector3D.Z_AXIS = null;
openfl.geom.Vector3D.angleBetween = function(a,b) {
var a0 = new openfl.geom.Vector3D(a.x,a.y,a.z,a.w);
a0.normalize();
var b0 = new openfl.geom.Vector3D(b.x,b.y,b.z,b.w);
b0.normalize();
return Math.acos(a0.x * b0.x + a0.y * b0.y + a0.z * b0.z);
};
openfl.geom.Vector3D.distance = function(pt1,pt2) {
var x = pt2.x - pt1.x;
var y = pt2.y - pt1.y;
var z = pt2.z - pt1.z;
return Math.sqrt(x * x + y * y + z * z);
};
openfl.geom.Vector3D.get_X_AXIS = function() {
return new openfl.geom.Vector3D(1,0,0);
};
openfl.geom.Vector3D.get_Y_AXIS = function() {
return new openfl.geom.Vector3D(0,1,0);
};
openfl.geom.Vector3D.get_Z_AXIS = function() {
return new openfl.geom.Vector3D(0,0,1);
};
openfl.geom.Vector3D.prototype = {
add: function(a) {
return new openfl.geom.Vector3D(this.x + a.x,this.y + a.y,this.z + a.z);
}
,clone: function() {
return new openfl.geom.Vector3D(this.x,this.y,this.z,this.w);
}
,copyFrom: function(sourceVector3D) {
this.x = sourceVector3D.x;
this.y = sourceVector3D.y;
this.z = sourceVector3D.z;
}
,crossProduct: function(a) {
return new openfl.geom.Vector3D(this.y * a.z - this.z * a.y,this.z * a.x - this.x * a.z,this.x * a.y - this.y * a.x,1);
}
,decrementBy: function(a) {
this.x -= a.x;
this.y -= a.y;
this.z -= a.z;
}
,dotProduct: function(a) {
return this.x * a.x + this.y * a.y + this.z * a.z;
}
,equals: function(toCompare,allFour) {
if(allFour == null) allFour = false;
return this.x == toCompare.x && this.y == toCompare.y && this.z == toCompare.z && (!allFour || this.w == toCompare.w);
}
,incrementBy: function(a) {
this.x += a.x;
this.y += a.y;
this.z += a.z;
}
,nearEquals: function(toCompare,tolerance,allFour) {
if(allFour == null) allFour = false;
return Math.abs(this.x - toCompare.x) < tolerance && Math.abs(this.y - toCompare.y) < tolerance && Math.abs(this.z - toCompare.z) < tolerance && (!allFour || Math.abs(this.w - toCompare.w) < tolerance);
}
,negate: function() {
this.x *= -1;
this.y *= -1;
this.z *= -1;
}
,normalize: function() {
var l = Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
if(l != 0) {
this.x /= l;
this.y /= l;
this.z /= l;
}
return l;
}
,project: function() {
this.x /= this.w;
this.y /= this.w;
this.z /= this.w;
}
,scaleBy: function(s) {
this.x *= s;
this.y *= s;
this.z *= s;
}
,setTo: function(xa,ya,za) {
this.x = xa;
this.y = ya;
this.z = za;
}
,subtract: function(a) {
return new openfl.geom.Vector3D(this.x - a.x,this.y - a.y,this.z - a.z);
}
,toString: function() {
return "Vector3D(" + this.x + ", " + this.y + ", " + this.z + ")";
}
,get_length: function() {
return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
}
,get_lengthSquared: function() {
return this.x * this.x + this.y * this.y + this.z * this.z;
}
,__class__: openfl.geom.Vector3D
,__properties__: {get_lengthSquared:"get_lengthSquared",get_length:"get_length"}
};
openfl.media = {};
openfl.media.ID3Info = function() {
};
$hxClasses["openfl.media.ID3Info"] = openfl.media.ID3Info;
openfl.media.ID3Info.__name__ = ["openfl","media","ID3Info"];
openfl.media.ID3Info.prototype = {
__class__: openfl.media.ID3Info
};
openfl.media.Sound = function(stream,context) {
openfl.events.EventDispatcher.call(this,this);
this.bytesLoaded = 0;
this.bytesTotal = 0;
this.id3 = null;
this.isBuffering = false;
this.length = 0;
this.url = null;
if(stream != null) this.load(stream,context);
};
$hxClasses["openfl.media.Sound"] = openfl.media.Sound;
openfl.media.Sound.__name__ = ["openfl","media","Sound"];
openfl.media.Sound.fromAudioBuffer = function(buffer) {
var sound = new openfl.media.Sound();
sound.__buffer = buffer;
return sound;
};
openfl.media.Sound.__super__ = openfl.events.EventDispatcher;
openfl.media.Sound.prototype = $extend(openfl.events.EventDispatcher.prototype,{
close: function() {
if(openfl.media.Sound.__registeredSounds.exists(this.__soundID)) createjs.Sound.removeSound(this.__soundID);
}
,load: function(stream,context) {
this.url = stream.url;
this.__soundID = haxe.io.Path.withoutExtension(stream.url);
if(!openfl.media.Sound.__registeredSounds.exists(this.__soundID)) {
openfl.media.Sound.__registeredSounds.set(this.__soundID,true);
createjs.Sound.addEventListener("fileload",$bind(this,this.SoundJS_onFileLoad));
createjs.Sound.addEventListener("fileerror",$bind(this,this.SoundJS_onFileError));
createjs.Sound.registerSound(this.url,this.__soundID);
} else this.dispatchEvent(new openfl.events.Event(openfl.events.Event.COMPLETE));
}
,loadCompressedDataFromByteArray: function(bytes,bytesLength,forcePlayAsMusic) {
if(forcePlayAsMusic == null) forcePlayAsMusic = false;
openfl.Lib.notImplemented("Sound.loadCompressedDataFromByteArray");
}
,loadPCMFromByteArray: function(bytes,samples,format,stereo,sampleRate) {
if(sampleRate == null) sampleRate = 44100;
if(stereo == null) stereo = true;
openfl.Lib.notImplemented("Sound.loadPCMFromByteArray");
}
,play: function(startTime,loops,sndTransform) {
if(loops == null) loops = 0;
if(startTime == null) startTime = 0.0;
if(sndTransform == null) sndTransform = new openfl.media.SoundTransform(1,0);
var instance = createjs.Sound.play(this.__soundID,"any",0,startTime | 0,loops,sndTransform.volume,sndTransform.pan);
return new openfl.media.SoundChannel(instance);
}
,get_id3: function() {
return new openfl.media.ID3Info();
}
,AudioBuffer_onURLLoad: function(buffer) {
this.__buffer = buffer;
this.dispatchEvent(new openfl.events.Event(openfl.events.Event.COMPLETE));
}
,SoundJS_onFileLoad: function(event) {
if(event.id == this.__soundID) {
createjs.Sound.removeEventListener("fileload",$bind(this,this.SoundJS_onFileLoad));
createjs.Sound.removeEventListener("fileerror",$bind(this,this.SoundJS_onFileError));
this.dispatchEvent(new openfl.events.Event(openfl.events.Event.COMPLETE));
}
}
,SoundJS_onFileError: function(event) {
if(event.id == this.__soundID) {
createjs.Sound.removeEventListener("fileload",$bind(this,this.SoundJS_onFileLoad));
createjs.Sound.removeEventListener("fileerror",$bind(this,this.SoundJS_onFileError));
this.dispatchEvent(new openfl.events.IOErrorEvent(openfl.events.IOErrorEvent.IO_ERROR));
}
}
,__class__: openfl.media.Sound
,__properties__: {get_id3:"get_id3"}
});
openfl.media.SoundChannel = function(soundInstance) {
openfl.events.EventDispatcher.call(this,this);
if(soundInstance != null) {
this.__soundInstance = soundInstance;
this.__soundInstance.addEventListener("complete",$bind(this,this.source_onComplete));
this.__isValid = true;
}
};
$hxClasses["openfl.media.SoundChannel"] = openfl.media.SoundChannel;
openfl.media.SoundChannel.__name__ = ["openfl","media","SoundChannel"];
openfl.media.SoundChannel.__super__ = openfl.events.EventDispatcher;
openfl.media.SoundChannel.prototype = $extend(openfl.events.EventDispatcher.prototype,{
stop: function() {
if(!this.__isValid) return;
this.__soundInstance.stop();
}
,__dispose: function() {
if(!this.__isValid) return;
this.__soundInstance.stop();
this.__soundInstance = null;
}
,get_position: function() {
if(!this.__isValid) return 0;
return this.__soundInstance.getPosition();
}
,set_position: function(value) {
if(!this.__isValid) return 0;
this.__soundInstance.setPosition(value | 0);
return this.__soundInstance.getPosition();
}
,get_soundTransform: function() {
if(!this.__isValid) return new openfl.media.SoundTransform();
return new openfl.media.SoundTransform(this.__soundInstance.getVolume(),this.__soundInstance.getPan());
}
,set_soundTransform: function(value) {
if(!this.__isValid) return value;
this.__soundInstance.setVolume(value.volume);
this.__soundInstance.setPan(value.pan);
return value;
}
,soundInstance_onComplete: function(_) {
this.dispatchEvent(new openfl.events.Event(openfl.events.Event.SOUND_COMPLETE));
}
,source_onComplete: function() {
this.dispatchEvent(new openfl.events.Event(openfl.events.Event.SOUND_COMPLETE));
}
,__class__: openfl.media.SoundChannel
,__properties__: {set_soundTransform:"set_soundTransform",get_soundTransform:"get_soundTransform",set_position:"set_position",get_position:"get_position"}
});
openfl.media.SoundLoaderContext = function(bufferTime,checkPolicyFile) {
if(checkPolicyFile == null) checkPolicyFile = false;
if(bufferTime == null) bufferTime = 0;
this.bufferTime = bufferTime;
this.checkPolicyFile = checkPolicyFile;
};
$hxClasses["openfl.media.SoundLoaderContext"] = openfl.media.SoundLoaderContext;
openfl.media.SoundLoaderContext.__name__ = ["openfl","media","SoundLoaderContext"];
openfl.media.SoundLoaderContext.prototype = {
__class__: openfl.media.SoundLoaderContext
};
openfl.media.SoundTransform = function(vol,panning) {
if(panning == null) panning = 0;
if(vol == null) vol = 1;
this.volume = vol;
this.pan = panning;
this.leftToLeft = 0;
this.leftToRight = 0;
this.rightToLeft = 0;
this.rightToRight = 0;
};
$hxClasses["openfl.media.SoundTransform"] = openfl.media.SoundTransform;
openfl.media.SoundTransform.__name__ = ["openfl","media","SoundTransform"];
openfl.media.SoundTransform.prototype = {
clone: function() {
return new openfl.media.SoundTransform(this.volume,this.pan);
}
,__class__: openfl.media.SoundTransform
};
openfl.net = {};
openfl.net.SharedObject = function() {
openfl.events.EventDispatcher.call(this);
};
$hxClasses["openfl.net.SharedObject"] = openfl.net.SharedObject;
openfl.net.SharedObject.__name__ = ["openfl","net","SharedObject"];
openfl.net.SharedObject.getLocal = function(name,localPath,secure) {
if(secure == null) secure = false;
if(localPath == null) localPath = window.location.href;
var so = new openfl.net.SharedObject();
so.__key = localPath + ":" + name;
var rawData = null;
try {
rawData = openfl.net.SharedObject.__getLocalStorage().getItem(so.__key);
} catch( e ) {
}
so.data = { };
if(rawData != null && rawData != "") {
var unserializer = new haxe.Unserializer(rawData);
unserializer.setResolver({ resolveEnum : Type.resolveEnum, resolveClass : openfl.net.SharedObject.resolveClass});
so.data = unserializer.unserialize();
}
if(so.data == null) so.data = { };
return so;
};
openfl.net.SharedObject.__getLocalStorage = function() {
var res = js.Browser.getLocalStorage();
if(res == null) throw new openfl.errors.Error("SharedObject not supported");
return res;
};
openfl.net.SharedObject.resolveClass = function(name) {
if(name != null) return Type.resolveClass(StringTools.replace(StringTools.replace(name,"jeash.","flash."),"browser.","flash."));
return null;
};
openfl.net.SharedObject.__super__ = openfl.events.EventDispatcher;
openfl.net.SharedObject.prototype = $extend(openfl.events.EventDispatcher.prototype,{
clear: function() {
this.data = { };
try {
openfl.net.SharedObject.__getLocalStorage().removeItem(this.__key);
} catch( e ) {
}
this.flush();
}
,flush: function(minDiskSpace) {
if(minDiskSpace == null) minDiskSpace = 0;
var data = haxe.Serializer.run(this.data);
try {
openfl.net.SharedObject.__getLocalStorage().removeItem(this.__key);
openfl.net.SharedObject.__getLocalStorage().setItem(this.__key,data);
} catch( e ) {
return openfl.net.SharedObjectFlushStatus.PENDING;
}
return openfl.net.SharedObjectFlushStatus.FLUSHED;
}
,setProperty: function(propertyName,value) {
if(this.data != null) this.data[propertyName] = value;
}
,get_size: function() {
var d = haxe.Serializer.run(this.data);
return haxe.io.Bytes.ofString(d).length;
}
,__class__: openfl.net.SharedObject
,__properties__: {get_size:"get_size"}
});
openfl.net.SharedObjectFlushStatus = $hxClasses["openfl.net.SharedObjectFlushStatus"] = { __ename__ : ["openfl","net","SharedObjectFlushStatus"], __constructs__ : ["FLUSHED","PENDING"] };
openfl.net.SharedObjectFlushStatus.FLUSHED = ["FLUSHED",0];
openfl.net.SharedObjectFlushStatus.FLUSHED.toString = $estr;
openfl.net.SharedObjectFlushStatus.FLUSHED.__enum__ = openfl.net.SharedObjectFlushStatus;
openfl.net.SharedObjectFlushStatus.PENDING = ["PENDING",1];
openfl.net.SharedObjectFlushStatus.PENDING.toString = $estr;
openfl.net.SharedObjectFlushStatus.PENDING.__enum__ = openfl.net.SharedObjectFlushStatus;
openfl.net.URLLoaderDataFormat = $hxClasses["openfl.net.URLLoaderDataFormat"] = { __ename__ : ["openfl","net","URLLoaderDataFormat"], __constructs__ : ["BINARY","TEXT","VARIABLES"] };
openfl.net.URLLoaderDataFormat.BINARY = ["BINARY",0];
openfl.net.URLLoaderDataFormat.BINARY.toString = $estr;
openfl.net.URLLoaderDataFormat.BINARY.__enum__ = openfl.net.URLLoaderDataFormat;
openfl.net.URLLoaderDataFormat.TEXT = ["TEXT",1];
openfl.net.URLLoaderDataFormat.TEXT.toString = $estr;
openfl.net.URLLoaderDataFormat.TEXT.__enum__ = openfl.net.URLLoaderDataFormat;
openfl.net.URLLoaderDataFormat.VARIABLES = ["VARIABLES",2];
openfl.net.URLLoaderDataFormat.VARIABLES.toString = $estr;
openfl.net.URLLoaderDataFormat.VARIABLES.__enum__ = openfl.net.URLLoaderDataFormat;
openfl.net.URLRequest = function(inURL) {
if(inURL != null) this.url = inURL;
this.requestHeaders = [];
this.method = openfl.net.URLRequestMethod.GET;
this.contentType = null;
};
$hxClasses["openfl.net.URLRequest"] = openfl.net.URLRequest;
openfl.net.URLRequest.__name__ = ["openfl","net","URLRequest"];
openfl.net.URLRequest.prototype = {
formatRequestHeaders: function() {
var res = this.requestHeaders;
if(res == null) res = [];
if(this.method == openfl.net.URLRequestMethod.GET || this.data == null) return res;
if(typeof(this.data) == "string" || js.Boot.__instanceof(this.data,lime.utils.ByteArray)) {
res = res.slice();
res.push(new openfl.net.URLRequestHeader("Content-Type",this.contentType != null?this.contentType:"application/x-www-form-urlencoded"));
}
return res;
}
,__class__: openfl.net.URLRequest
};
openfl.net.URLRequestHeader = function(name,value) {
if(value == null) value = "";
if(name == null) name = "";
this.name = name;
this.value = value;
};
$hxClasses["openfl.net.URLRequestHeader"] = openfl.net.URLRequestHeader;
openfl.net.URLRequestHeader.__name__ = ["openfl","net","URLRequestHeader"];
openfl.net.URLRequestHeader.prototype = {
__class__: openfl.net.URLRequestHeader
};
openfl.net.URLRequestMethod = function() { };
$hxClasses["openfl.net.URLRequestMethod"] = openfl.net.URLRequestMethod;
openfl.net.URLRequestMethod.__name__ = ["openfl","net","URLRequestMethod"];
openfl.system.LoaderContext = function(checkPolicyFile,applicationDomain,securityDomain) {
if(checkPolicyFile == null) checkPolicyFile = false;
this.checkPolicyFile = checkPolicyFile;
this.securityDomain = securityDomain;
this.applicationDomain = applicationDomain;
this.allowCodeImport = true;
this.allowLoadBytesCodeExecution = true;
};
$hxClasses["openfl.system.LoaderContext"] = openfl.system.LoaderContext;
openfl.system.LoaderContext.__name__ = ["openfl","system","LoaderContext"];
openfl.system.LoaderContext.prototype = {
__class__: openfl.system.LoaderContext
};
openfl.system.SecurityDomain = function() {
};
$hxClasses["openfl.system.SecurityDomain"] = openfl.system.SecurityDomain;
openfl.system.SecurityDomain.__name__ = ["openfl","system","SecurityDomain"];
openfl.system.SecurityDomain.prototype = {
__class__: openfl.system.SecurityDomain
};
openfl.text = {};
openfl.text.AntiAliasType = $hxClasses["openfl.text.AntiAliasType"] = { __ename__ : ["openfl","text","AntiAliasType"], __constructs__ : ["ADVANCED","NORMAL"] };
openfl.text.AntiAliasType.ADVANCED = ["ADVANCED",0];
openfl.text.AntiAliasType.ADVANCED.toString = $estr;
openfl.text.AntiAliasType.ADVANCED.__enum__ = openfl.text.AntiAliasType;
openfl.text.AntiAliasType.NORMAL = ["NORMAL",1];
openfl.text.AntiAliasType.NORMAL.toString = $estr;
openfl.text.AntiAliasType.NORMAL.__enum__ = openfl.text.AntiAliasType;
openfl.text.Font = function(name) {
lime.graphics.Font.call(this,name);
};
$hxClasses["openfl.text.Font"] = openfl.text.Font;
openfl.text.Font.__name__ = ["openfl","text","Font"];
openfl.text.Font.enumerateFonts = function(enumerateDeviceFonts) {
if(enumerateDeviceFonts == null) enumerateDeviceFonts = false;
return [];
};
openfl.text.Font.fromBytes = function(bytes) {
var font = new openfl.text.Font();
return font;
};
openfl.text.Font.fromFile = function(path) {
var font = new openfl.text.Font();
font.__fromFile(path);
return font;
};
openfl.text.Font.registerFont = function(font) {
var instance;
instance = js.Boot.__cast(Type.createInstance(font,[]) , openfl.text.Font);
if(instance != null) openfl.text.Font.__registeredFonts.push(instance);
};
openfl.text.Font.__super__ = lime.graphics.Font;
openfl.text.Font.prototype = $extend(lime.graphics.Font.prototype,{
__class__: openfl.text.Font
});
openfl.text.FontStyle = $hxClasses["openfl.text.FontStyle"] = { __ename__ : ["openfl","text","FontStyle"], __constructs__ : ["REGULAR","ITALIC","BOLD_ITALIC","BOLD"] };
openfl.text.FontStyle.REGULAR = ["REGULAR",0];
openfl.text.FontStyle.REGULAR.toString = $estr;
openfl.text.FontStyle.REGULAR.__enum__ = openfl.text.FontStyle;
openfl.text.FontStyle.ITALIC = ["ITALIC",1];
openfl.text.FontStyle.ITALIC.toString = $estr;
openfl.text.FontStyle.ITALIC.__enum__ = openfl.text.FontStyle;
openfl.text.FontStyle.BOLD_ITALIC = ["BOLD_ITALIC",2];
openfl.text.FontStyle.BOLD_ITALIC.toString = $estr;
openfl.text.FontStyle.BOLD_ITALIC.__enum__ = openfl.text.FontStyle;
openfl.text.FontStyle.BOLD = ["BOLD",3];
openfl.text.FontStyle.BOLD.toString = $estr;
openfl.text.FontStyle.BOLD.__enum__ = openfl.text.FontStyle;
openfl.text.FontType = $hxClasses["openfl.text.FontType"] = { __ename__ : ["openfl","text","FontType"], __constructs__ : ["DEVICE","EMBEDDED","EMBEDDED_CFF"] };
openfl.text.FontType.DEVICE = ["DEVICE",0];
openfl.text.FontType.DEVICE.toString = $estr;
openfl.text.FontType.DEVICE.__enum__ = openfl.text.FontType;
openfl.text.FontType.EMBEDDED = ["EMBEDDED",1];
openfl.text.FontType.EMBEDDED.toString = $estr;
openfl.text.FontType.EMBEDDED.__enum__ = openfl.text.FontType;
openfl.text.FontType.EMBEDDED_CFF = ["EMBEDDED_CFF",2];
openfl.text.FontType.EMBEDDED_CFF.toString = $estr;
openfl.text.FontType.EMBEDDED_CFF.__enum__ = openfl.text.FontType;
openfl.text.GridFitType = $hxClasses["openfl.text.GridFitType"] = { __ename__ : ["openfl","text","GridFitType"], __constructs__ : ["NONE","PIXEL","SUBPIXEL"] };
openfl.text.GridFitType.NONE = ["NONE",0];
openfl.text.GridFitType.NONE.toString = $estr;
openfl.text.GridFitType.NONE.__enum__ = openfl.text.GridFitType;
openfl.text.GridFitType.PIXEL = ["PIXEL",1];
openfl.text.GridFitType.PIXEL.toString = $estr;
openfl.text.GridFitType.PIXEL.__enum__ = openfl.text.GridFitType;
openfl.text.GridFitType.SUBPIXEL = ["SUBPIXEL",2];
openfl.text.GridFitType.SUBPIXEL.toString = $estr;
openfl.text.GridFitType.SUBPIXEL.__enum__ = openfl.text.GridFitType;
openfl.text.TextField = function() {
openfl.display.InteractiveObject.call(this);
this.__width = 100;
this.__height = 100;
this.__text = "";
this.set_type(openfl.text.TextFieldType.DYNAMIC);
this.set_autoSize(openfl.text.TextFieldAutoSize.NONE);
this.displayAsPassword = false;
this.embedFonts = false;
this.selectable = true;
this.set_borderColor(0);
this.set_border(false);
this.set_backgroundColor(16777215);
this.set_background(false);
this.gridFitType = openfl.text.GridFitType.PIXEL;
this.maxChars = 0;
this.multiline = false;
this.sharpness = 0;
this.scrollH = 0;
this.scrollV = 1;
this.set_wordWrap(false);
if(openfl.text.TextField.__defaultTextFormat == null) {
openfl.text.TextField.__defaultTextFormat = new openfl.text.TextFormat("Times New Roman",12,0,false,false,false,"","",openfl.text.TextFormatAlign.LEFT,0,0,0,0);
openfl.text.TextField.__defaultTextFormat.blockIndent = 0;
openfl.text.TextField.__defaultTextFormat.bullet = false;
openfl.text.TextField.__defaultTextFormat.letterSpacing = 0;
openfl.text.TextField.__defaultTextFormat.kerning = false;
}
this.__textFormat = openfl.text.TextField.__defaultTextFormat.clone();
};
$hxClasses["openfl.text.TextField"] = openfl.text.TextField;
openfl.text.TextField.__name__ = ["openfl","text","TextField"];
openfl.text.TextField.__defaultTextFormat = null;
openfl.text.TextField.__super__ = openfl.display.InteractiveObject;
openfl.text.TextField.prototype = $extend(openfl.display.InteractiveObject.prototype,{
appendText: function(text) {
var _g = this;
_g.set_text(_g.get_text() + text);
}
,getCharBoundaries: function(a) {
openfl.Lib.notImplemented("TextField.getCharBoundaries");
return null;
}
,getCharIndexAtPoint: function(x,y) {
openfl.Lib.notImplemented("TextField.getCharIndexAtPoint");
return 0;
}
,getLineIndexAtPoint: function(x,y) {
openfl.Lib.notImplemented("TextField.getLineIndexAtPoint");
return 0;
}
,getLineMetrics: function(lineIndex) {
openfl.Lib.notImplemented("TextField.getLineMetrics");
return new openfl.text.TextLineMetrics(0,0,0,0,0,0);
}
,getLineOffset: function(lineIndex) {
openfl.Lib.notImplemented("TextField.getLineOffset");
return 0;
}
,getLineText: function(lineIndex) {
openfl.Lib.notImplemented("TextField.getLineText");
return "";
}
,getTextFormat: function(beginIndex,endIndex) {
if(endIndex == null) endIndex = 0;
if(beginIndex == null) beginIndex = 0;
return this.__textFormat.clone();
}
,setSelection: function(beginIndex,endIndex) {
openfl.Lib.notImplemented("TextField.setSelection");
}
,setTextFormat: function(format,beginIndex,endIndex) {
if(endIndex == null) endIndex = 0;
if(beginIndex == null) beginIndex = 0;
if(format.font != null) this.__textFormat.font = format.font;
if(format.size != null) this.__textFormat.size = format.size;
if(format.color != null) this.__textFormat.color = format.color;
if(format.bold != null) this.__textFormat.bold = format.bold;
if(format.italic != null) this.__textFormat.italic = format.italic;
if(format.underline != null) this.__textFormat.underline = format.underline;
if(format.url != null) this.__textFormat.url = format.url;
if(format.target != null) this.__textFormat.target = format.target;
if(format.align != null) this.__textFormat.align = format.align;
if(format.leftMargin != null) this.__textFormat.leftMargin = format.leftMargin;
if(format.rightMargin != null) this.__textFormat.rightMargin = format.rightMargin;
if(format.indent != null) this.__textFormat.indent = format.indent;
if(format.leading != null) this.__textFormat.leading = format.leading;
if(format.blockIndent != null) this.__textFormat.blockIndent = format.blockIndent;
if(format.bullet != null) this.__textFormat.bullet = format.bullet;
if(format.kerning != null) this.__textFormat.kerning = format.kerning;
if(format.letterSpacing != null) this.__textFormat.letterSpacing = format.letterSpacing;
if(format.tabStops != null) this.__textFormat.tabStops = format.tabStops;
this.__dirty = true;
}
,__clipText: function(value) {
var textWidth = this.__getTextWidth(value);
var fillPer = textWidth / this.__width;
this.set_text(fillPer > 1?(function($this) {
var $r;
var _this = $this.get_text();
var pos = -1 * Math.floor($this.get_text().length / fillPer);
$r = HxOverrides.substr(_this,pos,null);
return $r;
}(this)):this.get_text());
return this.get_text() + "";
}
,__disableInputMode: function() {
this.this_onRemovedFromStage(null);
}
,__enableInputMode: function() {
this.__cursorPosition = -1;
if(this.__hiddenInput == null) {
this.__hiddenInput = window.document.createElement("input");
this.__hiddenInput.type = "text";
this.__hiddenInput.style.position = "absolute";
this.__hiddenInput.style.opacity = "0";
this.__hiddenInput.style.pointerEvents = "none";
this.__hiddenInput.style.left = this.get_x() + (this.__canvas != null?this.__canvas.offsetLeft:0) + "px";
this.__hiddenInput.style.top = this.get_y() + (this.__canvas != null?this.__canvas.offsetTop:0) + "px";
this.__hiddenInput.style.width = this.__width + "px";
this.__hiddenInput.style.height = this.__height + "px";
this.__hiddenInput.style.zIndex = "0";
if(this.maxChars > 0) this.__hiddenInput.maxLength = this.maxChars;
window.document.body.appendChild(this.__hiddenInput);
this.__hiddenInput.value = this.__text;
}
if(this.stage != null) this.this_onAddedToStage(null); else {
this.addEventListener(openfl.events.Event.ADDED_TO_STAGE,$bind(this,this.this_onAddedToStage));
this.addEventListener(openfl.events.Event.REMOVED_FROM_STAGE,$bind(this,this.this_onRemovedFromStage));
}
}
,__getBounds: function(rect,matrix) {
var bounds = new openfl.geom.Rectangle(0,0,this.__width,this.__height);
bounds.transform(this.__worldTransform);
rect.__expand(bounds.x,bounds.y,bounds.width,bounds.height);
}
,__getFont: function(format) {
var font;
if(format.italic) font = "italic "; else font = "normal ";
font += "normal ";
if(format.bold) font += "bold "; else font += "normal ";
font += format.size + "px";
font += "/" + (format.size + format.leading + 4) + "px ";
font += "'" + (function($this) {
var $r;
var _g = format.font;
$r = (function($this) {
var $r;
switch(_g) {
case "_sans":
$r = "sans-serif";
break;
case "_serif":
$r = "serif";
break;
case "_typewriter":
$r = "monospace";
break;
default:
$r = format.font;
}
return $r;
}($this));
return $r;
}(this));
font += "'";
return font;
}
,__getPosition: function(x,y) {
var value = this.get_text();
var text = value;
var totalW = 0;
var pos = text.length;
if(x < this.__getTextWidth(text)) {
var _g1 = 0;
var _g = text.length;
while(_g1 < _g) {
var i = _g1++;
totalW += this.__getTextWidth(text.charAt(i));
if(totalW >= x) {
pos = i;
break;
}
}
}
return pos;
}
,__getTextWidth: function(text) {
if(this.__context == null) {
this.__canvas = window.document.createElement("canvas");
this.__context = this.__canvas.getContext("2d");
}
this.__context.font = this.__getFont(this.__textFormat);
this.__context.textAlign = "left";
return this.__context.measureText(text).width;
}
,__hitTest: function(x,y,shapeFlag,stack,interactiveOnly) {
if(!this.get_visible() || interactiveOnly && !this.mouseEnabled) return false;
var point = this.globalToLocal(new openfl.geom.Point(x,y));
if(point.x > 0 && point.y > 0 && point.x <= this.__width && point.y <= this.__height) {
if(stack != null) stack.push(this);
return true;
}
return false;
}
,__measureText: function() {
if(this.__ranges == null) {
this.__context.font = this.__getFont(this.__textFormat);
return [this.__context.measureText(this.__text).width];
} else {
var measurements = [];
var _g = 0;
var _g1 = this.__ranges;
while(_g < _g1.length) {
var range = _g1[_g];
++_g;
this.__context.font = this.__getFont(range.format);
measurements.push(this.__context.measureText(this.get_text().substring(range.start,range.end)).width);
}
return measurements;
}
}
,__measureTextWithDOM: function() {
var div = this.__div;
if(this.__div == null) {
div = window.document.createElement("div");
div.innerHTML = new EReg("\n","g").replace(this.__text,"
");
div.style.setProperty("font",this.__getFont(this.__textFormat),null);
div.style.position = "absolute";
div.style.top = "110%";
window.document.body.appendChild(div);
}
this.__measuredWidth = div.clientWidth;
if(this.__div == null) div.style.width = Std.string(this.__width) + "px";
this.__measuredHeight = div.clientHeight;
if(this.__div == null) window.document.body.removeChild(div);
}
,__renderCanvas: function(renderSession) {
openfl._internal.renderer.canvas.CanvasTextField.render(this,renderSession);
}
,__renderDOM: function(renderSession) {
openfl._internal.renderer.dom.DOMTextField.render(this,renderSession);
}
,__renderGL: function(renderSession) {
openfl._internal.renderer.opengl.GLTextField.render(this,renderSession);
}
,__startCursorTimer: function() {
this.__cursorTimer = haxe.Timer.delay($bind(this,this.__startCursorTimer),500);
this.__showCursor = !this.__showCursor;
this.__dirty = true;
}
,__stopCursorTimer: function() {
if(this.__cursorTimer != null) this.__cursorTimer.stop();
}
,input_onKeyUp: function(event) {
this.__isKeyDown = false;
if(event == null) event == window.event;
this.__text = this.__hiddenInput.value;
this.__ranges = null;
this.__isHTML = false;
this.__cursorPosition = this.__hiddenInput.selectionStart;
this.__selectionStart = this.__cursorPosition;
this.__dirty = true;
this.dispatchEvent(new openfl.events.Event(openfl.events.Event.CHANGE,true));
}
,input_onKeyDown: function(event) {
this.__isKeyDown = true;
if(event == null) event == window.event;
var keyCode = event.which;
var isShift = event.shiftKey;
if(keyCode == 65 && (event.ctrlKey || event.metaKey)) {
this.__hiddenInput.selectionStart = 0;
this.__hiddenInput.selectionEnd = this.get_text().length;
event.preventDefault();
this.__dirty = true;
return;
}
if(keyCode == 17 || event.metaKey || event.ctrlKey) return;
this.__text = this.__hiddenInput.value;
this.__ranges = null;
this.__isHTML = false;
this.__selectionStart = this.__hiddenInput.selectionStart;
this.__dirty = true;
}
,stage_onFocusOut: function(event) {
this.__cursorPosition = -1;
this.__hasFocus = false;
this.__stopCursorTimer();
this.__hiddenInput.blur();
this.__dirty = true;
}
,stage_onMouseMove: function(event) {
if(this.__hasFocus && this.__selectionStart >= 0) {
this.__cursorPosition = this.__getPosition(event.localX,event.localY);
this.__dirty = true;
}
}
,stage_onMouseUp: function(event) {
var upPos = this.__getPosition(event.localX,event.localY);
var leftPos;
var rightPos;
leftPos = Std["int"](Math.min(this.__selectionStart,upPos));
rightPos = Std["int"](Math.max(this.__selectionStart,upPos));
this.__selectionStart = leftPos;
this.__cursorPosition = rightPos;
this.stage.removeEventListener(openfl.events.MouseEvent.MOUSE_MOVE,$bind(this,this.stage_onMouseMove));
this.stage.addEventListener(openfl.events.MouseEvent.MOUSE_UP,$bind(this,this.stage_onMouseUp));
this.stage.set_focus(this);
if(this.__cursorPosition < 0) {
this.__cursorPosition = this.__text.length;
this.__selectionStart = this.__cursorPosition;
}
this.__hiddenInput.focus();
this.__hiddenInput.selectionStart = this.__selectionStart;
this.__hiddenInput.selectionEnd = this.__cursorPosition;
this.__stopCursorTimer();
this.__startCursorTimer();
this.__hasFocus = true;
this.__dirty = true;
}
,this_onAddedToStage: function(event) {
this.stage.addEventListener(openfl.events.FocusEvent.FOCUS_OUT,$bind(this,this.stage_onFocusOut));
this.__hiddenInput.addEventListener("keydown",$bind(this,this.input_onKeyDown));
this.__hiddenInput.addEventListener("keyup",$bind(this,this.input_onKeyUp));
this.__hiddenInput.addEventListener("input",$bind(this,this.input_onKeyUp));
this.addEventListener(openfl.events.MouseEvent.MOUSE_DOWN,$bind(this,this.this_onMouseDown));
}
,this_onMouseDown: function(event) {
this.__selectionStart = this.__getPosition(event.localX,event.localY);
this.stage.addEventListener(openfl.events.MouseEvent.MOUSE_MOVE,$bind(this,this.stage_onMouseMove));
this.stage.addEventListener(openfl.events.MouseEvent.MOUSE_UP,$bind(this,this.stage_onMouseUp));
}
,this_onRemovedFromStage: function(event) {
if(this.stage != null) this.stage.removeEventListener(openfl.events.FocusEvent.FOCUS_OUT,$bind(this,this.stage_onFocusOut));
if(this.__hiddenInput != null) this.__hiddenInput.removeEventListener("keydown",$bind(this,this.input_onKeyDown));
if(this.__hiddenInput != null) this.__hiddenInput.removeEventListener("keyup",$bind(this,this.input_onKeyUp));
if(this.__hiddenInput != null) this.__hiddenInput.removeEventListener("input",$bind(this,this.input_onKeyUp));
this.removeEventListener(openfl.events.MouseEvent.MOUSE_DOWN,$bind(this,this.this_onMouseDown));
if(this.stage != null) this.stage.removeEventListener(openfl.events.MouseEvent.MOUSE_MOVE,$bind(this,this.stage_onMouseMove));
if(this.stage != null) this.stage.removeEventListener(openfl.events.MouseEvent.MOUSE_UP,$bind(this,this.stage_onMouseUp));
}
,set_autoSize: function(value) {
if(value != this.autoSize) this.__dirty = true;
return this.autoSize = value;
}
,set_background: function(value) {
if(value != this.background) this.__dirty = true;
return this.background = value;
}
,set_backgroundColor: function(value) {
if(value != this.backgroundColor) this.__dirty = true;
return this.backgroundColor = value;
}
,set_border: function(value) {
if(value != this.border) this.__dirty = true;
return this.border = value;
}
,set_borderColor: function(value) {
if(value != this.borderColor) this.__dirty = true;
return this.borderColor = value;
}
,get_bottomScrollV: function() {
return this.get_numLines();
}
,get_caretPos: function() {
return 0;
}
,get_defaultTextFormat: function() {
return this.__textFormat.clone();
}
,set_defaultTextFormat: function(value) {
this.__textFormat.__merge(value);
return value;
}
,get_height: function() {
return this.__height * this.get_scaleY();
}
,set_height: function(value) {
if(this.get_scaleY() != 1 || value != this.__height) {
if(!this.__transformDirty) {
this.__transformDirty = true;
openfl.display.DisplayObject.__worldTransformDirty++;
}
this.__dirty = true;
}
this.set_scaleY(1);
return this.__height = value;
}
,get_htmlText: function() {
return this.__text;
}
,set_htmlText: function(value) {
if(!this.__isHTML || this.__text != value) this.__dirty = true;
this.__ranges = null;
this.__isHTML = true;
if(this.__div == null) {
value = new EReg("
","g").replace(value,"\n");
value = new EReg("
","g").replace(value,"\n");
var segments = value.split("","g").replace(value,"");
if(this.__hiddenInput != null) this.__hiddenInput.value = value;
return this.__text = value;
} else {
value = "";
this.__ranges = [];
var _g = 0;
while(_g < segments.length) {
var segment = segments[_g];
++_g;
if(segment == "") continue;
var closeFontIndex = segment.indexOf("");
if(closeFontIndex > -1) {
var start = segment.indexOf(">") + 1;
var end = closeFontIndex;
var format = this.__textFormat.clone();
var faceIndex = segment.indexOf("face=");
var colorIndex = segment.indexOf("color=");
var sizeIndex = segment.indexOf("size=");
if(faceIndex > -1 && faceIndex < start) {
var len = segment.indexOf("\"",faceIndex);
format.font = HxOverrides.substr(segment,faceIndex + 6,len);
}
if(colorIndex > -1 && colorIndex < start) format.color = Std.parseInt("0x" + HxOverrides.substr(segment,colorIndex + 8,6));
if(sizeIndex > -1 && sizeIndex < start) format.size = Std.parseInt((function($this) {
var $r;
var len1 = segment.indexOf("\"",sizeIndex);
$r = HxOverrides.substr(segment,sizeIndex + 6,len1);
return $r;
}(this)));
var sub = segment.substring(start,end);
sub = new EReg("<.*?>","g").replace(sub,"");
this.__ranges.push(new openfl.text.TextFormatRange(format,value.length,value.length + sub.length));
value += sub;
if(closeFontIndex + 7 < segment.length) {
sub = HxOverrides.substr(segment,closeFontIndex + 7,null);
this.__ranges.push(new openfl.text.TextFormatRange(this.__textFormat,value.length,value.length + sub.length));
value += sub;
}
} else {
this.__ranges.push(new openfl.text.TextFormatRange(this.__textFormat,value.length,value.length + segment.length));
value += segment;
}
}
}
}
if(this.__hiddenInput != null) this.__hiddenInput.value = value;
return this.__text = value;
}
,get_maxScrollH: function() {
return 0;
}
,get_maxScrollV: function() {
return 1;
}
,get_numLines: function() {
if(this.get_text() != "" && this.get_text() != null) {
var count = this.get_text().split("\n").length;
if(this.__isHTML) count += this.get_text().split("
").length - 1;
return count;
}
return 1;
}
,get_text: function() {
if(this.__isHTML) {
}
return this.__text;
}
,set_text: function(value) {
if(this.__text != value && this.__hiddenInput != null) this.__hiddenInput.value = value;
if(this.__isHTML || this.__text != value) this.__dirty = true;
this.__ranges = null;
this.__isHTML = false;
return this.__text = value;
}
,get_textColor: function() {
return this.__textFormat.color;
}
,set_textColor: function(value) {
if(value != this.__textFormat.color) this.__dirty = true;
if(this.__ranges != null) {
var _g = 0;
var _g1 = this.__ranges;
while(_g < _g1.length) {
var range = _g1[_g];
++_g;
range.format.color = value;
}
}
return this.__textFormat.color = value;
}
,get_textWidth: function() {
if(this.__canvas != null) {
var sizes = this.__measureText();
var total = 0;
var _g = 0;
while(_g < sizes.length) {
var size = sizes[_g];
++_g;
total += size;
}
return total;
} else if(this.__div != null) return this.__div.clientWidth; else {
this.__measureTextWithDOM();
return this.__measuredWidth;
}
}
,get_textHeight: function() {
if(this.__canvas != null) return this.__textFormat.size * 1.185; else if(this.__div != null) return this.__div.clientHeight; else {
this.__measureTextWithDOM();
return this.__measuredHeight + this.__textFormat.size * 0.185;
}
}
,set_type: function(value) {
if(value != this.type) {
if(value == openfl.text.TextFieldType.INPUT) this.__enableInputMode(); else this.__disableInputMode();
this.__dirty = true;
}
return this.type = value;
}
,get_width: function() {
if(this.autoSize == openfl.text.TextFieldAutoSize.LEFT) return (this.get_textWidth() + 4) * this.get_scaleX(); else return this.__width * this.get_scaleX();
}
,set_width: function(value) {
if(this.get_scaleX() != 1 || this.__width != value) {
if(!this.__transformDirty) {
this.__transformDirty = true;
openfl.display.DisplayObject.__worldTransformDirty++;
}
this.__dirty = true;
}
this.set_scaleX(1);
return this.__width = value;
}
,get_wordWrap: function() {
return this.wordWrap;
}
,set_wordWrap: function(value) {
return this.wordWrap = value;
}
,__class__: openfl.text.TextField
,__properties__: $extend(openfl.display.InteractiveObject.prototype.__properties__,{set_wordWrap:"set_wordWrap",get_wordWrap:"get_wordWrap",set_type:"set_type",get_textWidth:"get_textWidth",get_textHeight:"get_textHeight",set_textColor:"set_textColor",get_textColor:"get_textColor",set_text:"set_text",get_text:"get_text",get_numLines:"get_numLines",get_maxScrollV:"get_maxScrollV",get_maxScrollH:"get_maxScrollH",set_htmlText:"set_htmlText",get_htmlText:"get_htmlText",set_defaultTextFormat:"set_defaultTextFormat",get_defaultTextFormat:"get_defaultTextFormat",get_caretPos:"get_caretPos",get_bottomScrollV:"get_bottomScrollV",set_borderColor:"set_borderColor",set_border:"set_border",set_backgroundColor:"set_backgroundColor",set_background:"set_background",set_autoSize:"set_autoSize"})
});
openfl.text.TextFormatRange = function(format,start,end) {
this.format = format;
this.start = start;
this.end = end;
};
$hxClasses["openfl.text.TextFormatRange"] = openfl.text.TextFormatRange;
openfl.text.TextFormatRange.__name__ = ["openfl","text","TextFormatRange"];
openfl.text.TextFormatRange.prototype = {
__class__: openfl.text.TextFormatRange
};
openfl.text.TextFieldAutoSize = $hxClasses["openfl.text.TextFieldAutoSize"] = { __ename__ : ["openfl","text","TextFieldAutoSize"], __constructs__ : ["CENTER","LEFT","NONE","RIGHT"] };
openfl.text.TextFieldAutoSize.CENTER = ["CENTER",0];
openfl.text.TextFieldAutoSize.CENTER.toString = $estr;
openfl.text.TextFieldAutoSize.CENTER.__enum__ = openfl.text.TextFieldAutoSize;
openfl.text.TextFieldAutoSize.LEFT = ["LEFT",1];
openfl.text.TextFieldAutoSize.LEFT.toString = $estr;
openfl.text.TextFieldAutoSize.LEFT.__enum__ = openfl.text.TextFieldAutoSize;
openfl.text.TextFieldAutoSize.NONE = ["NONE",2];
openfl.text.TextFieldAutoSize.NONE.toString = $estr;
openfl.text.TextFieldAutoSize.NONE.__enum__ = openfl.text.TextFieldAutoSize;
openfl.text.TextFieldAutoSize.RIGHT = ["RIGHT",3];
openfl.text.TextFieldAutoSize.RIGHT.toString = $estr;
openfl.text.TextFieldAutoSize.RIGHT.__enum__ = openfl.text.TextFieldAutoSize;
openfl.text.TextFieldType = $hxClasses["openfl.text.TextFieldType"] = { __ename__ : ["openfl","text","TextFieldType"], __constructs__ : ["DYNAMIC","INPUT"] };
openfl.text.TextFieldType.DYNAMIC = ["DYNAMIC",0];
openfl.text.TextFieldType.DYNAMIC.toString = $estr;
openfl.text.TextFieldType.DYNAMIC.__enum__ = openfl.text.TextFieldType;
openfl.text.TextFieldType.INPUT = ["INPUT",1];
openfl.text.TextFieldType.INPUT.toString = $estr;
openfl.text.TextFieldType.INPUT.__enum__ = openfl.text.TextFieldType;
openfl.text.TextFormat = function(font,size,color,bold,italic,underline,url,target,align,leftMargin,rightMargin,indent,leading) {
this.font = font;
this.size = size;
this.color = color;
this.bold = bold;
this.italic = italic;
this.underline = underline;
this.url = url;
this.target = target;
this.align = align;
this.leftMargin = leftMargin;
this.rightMargin = rightMargin;
this.indent = indent;
this.leading = leading;
};
$hxClasses["openfl.text.TextFormat"] = openfl.text.TextFormat;
openfl.text.TextFormat.__name__ = ["openfl","text","TextFormat"];
openfl.text.TextFormat.prototype = {
clone: function() {
var newFormat = new openfl.text.TextFormat(this.font,this.size,this.color,this.bold,this.italic,this.underline,this.url,this.target);
newFormat.align = this.align;
newFormat.leftMargin = this.leftMargin;
newFormat.rightMargin = this.rightMargin;
newFormat.indent = this.indent;
newFormat.leading = this.leading;
newFormat.blockIndent = this.blockIndent;
newFormat.bullet = this.bullet;
newFormat.kerning = this.kerning;
newFormat.letterSpacing = this.letterSpacing;
newFormat.tabStops = this.tabStops;
return newFormat;
}
,__merge: function(format) {
if(format.font != null) this.font = format.font;
if(format.size != null) this.size = format.size;
if(format.color != null) this.color = format.color;
if(format.bold != null) this.bold = format.bold;
if(format.italic != null) this.italic = format.italic;
if(format.underline != null) this.underline = format.underline;
if(format.url != null) this.url = format.url;
if(format.target != null) this.target = format.target;
if(format.align != null) this.align = format.align;
if(format.leftMargin != null) this.leftMargin = format.leftMargin;
if(format.rightMargin != null) this.rightMargin = format.rightMargin;
if(format.indent != null) this.indent = format.indent;
if(format.leading != null) this.leading = format.leading;
if(format.blockIndent != null) this.blockIndent = format.blockIndent;
if(format.bullet != null) this.bullet = format.bullet;
if(format.kerning != null) this.kerning = format.kerning;
if(format.letterSpacing != null) this.letterSpacing = format.letterSpacing;
if(format.tabStops != null) this.tabStops = format.tabStops;
}
,__class__: openfl.text.TextFormat
};
openfl.text.TextFormatAlign = $hxClasses["openfl.text.TextFormatAlign"] = { __ename__ : ["openfl","text","TextFormatAlign"], __constructs__ : ["LEFT","RIGHT","JUSTIFY","CENTER"] };
openfl.text.TextFormatAlign.LEFT = ["LEFT",0];
openfl.text.TextFormatAlign.LEFT.toString = $estr;
openfl.text.TextFormatAlign.LEFT.__enum__ = openfl.text.TextFormatAlign;
openfl.text.TextFormatAlign.RIGHT = ["RIGHT",1];
openfl.text.TextFormatAlign.RIGHT.toString = $estr;
openfl.text.TextFormatAlign.RIGHT.__enum__ = openfl.text.TextFormatAlign;
openfl.text.TextFormatAlign.JUSTIFY = ["JUSTIFY",2];
openfl.text.TextFormatAlign.JUSTIFY.toString = $estr;
openfl.text.TextFormatAlign.JUSTIFY.__enum__ = openfl.text.TextFormatAlign;
openfl.text.TextFormatAlign.CENTER = ["CENTER",3];
openfl.text.TextFormatAlign.CENTER.toString = $estr;
openfl.text.TextFormatAlign.CENTER.__enum__ = openfl.text.TextFormatAlign;
openfl.text.TextLineMetrics = function(x,width,height,ascent,descent,leading) {
this.x = x;
this.width = width;
this.height = height;
this.ascent = ascent;
this.descent = descent;
this.leading = leading;
};
$hxClasses["openfl.text.TextLineMetrics"] = openfl.text.TextLineMetrics;
openfl.text.TextLineMetrics.__name__ = ["openfl","text","TextLineMetrics"];
openfl.text.TextLineMetrics.prototype = {
__class__: openfl.text.TextLineMetrics
};
openfl.ui = {};
openfl.ui._KeyLocation = {};
openfl.ui._KeyLocation.KeyLocation_Impl_ = function() { };
$hxClasses["openfl.ui._KeyLocation.KeyLocation_Impl_"] = openfl.ui._KeyLocation.KeyLocation_Impl_;
openfl.ui._KeyLocation.KeyLocation_Impl_.__name__ = ["openfl","ui","_KeyLocation","KeyLocation_Impl_"];
openfl.ui.Keyboard = function() { };
$hxClasses["openfl.ui.Keyboard"] = openfl.ui.Keyboard;
openfl.ui.Keyboard.__name__ = ["openfl","ui","Keyboard"];
openfl.ui.Keyboard.capsLock = null;
openfl.ui.Keyboard.numLock = null;
openfl.ui.Keyboard.isAccessible = function() {
return false;
};
openfl.ui.Keyboard.__convertMozillaCode = function(code) {
switch(code) {
case 8:
return 8;
case 9:
return 9;
case 13:
return 13;
case 14:
return 13;
case 16:
return 16;
case 17:
return 17;
case 20:
return 20;
case 27:
return 27;
case 32:
return 32;
case 33:
return 33;
case 34:
return 34;
case 35:
return 35;
case 36:
return 36;
case 37:
return 37;
case 39:
return 39;
case 38:
return 38;
case 40:
return 40;
case 45:
return 45;
case 46:
return 46;
case 144:
return 144;
default:
return code;
}
};
openfl.ui.Keyboard.__convertWebkitCode = function(code) {
var _g = code.toLowerCase();
switch(_g) {
case "backspace":
return 8;
case "tab":
return 9;
case "enter":
return 13;
case "shift":
return 16;
case "control":
return 17;
case "capslock":
return 20;
case "escape":
return 27;
case "space":
return 32;
case "pageup":
return 33;
case "pagedown":
return 34;
case "end":
return 35;
case "home":
return 36;
case "left":
return 37;
case "right":
return 39;
case "up":
return 38;
case "down":
return 40;
case "insert":
return 45;
case "delete":
return 46;
case "numlock":
return 144;
case "break":
return 19;
}
if(code.indexOf("U+") == 0) return Std.parseInt("0x" + HxOverrides.substr(code,3,null));
throw "Unrecognized key code: " + code;
return 0;
};
var spritesheet = {};
spritesheet.Spritesheet = function(image,frames,behaviors,imageAlpha) {
this.sourceImage = image;
this.sourceImageAlpha = imageAlpha;
if(frames == null) {
this.frames = new Array();
this.totalFrames = 0;
} else {
this.frames = frames;
this.totalFrames = frames.length;
}
if(behaviors == null) this.behaviors = new haxe.ds.StringMap(); else this.behaviors = behaviors;
};
$hxClasses["spritesheet.Spritesheet"] = spritesheet.Spritesheet;
spritesheet.Spritesheet.__name__ = ["spritesheet","Spritesheet"];
spritesheet.Spritesheet.prototype = {
addBehavior: function(behavior) {
this.behaviors.set(behavior.name,behavior);
}
,addFrame: function(frame) {
this.frames.push(frame);
this.totalFrames++;
}
,generateBitmaps: function() {
var _g1 = 0;
var _g = this.totalFrames;
while(_g1 < _g) {
var i = _g1++;
this.generateBitmap(i);
}
}
,generateBitmap: function(index) {
var frame = this.frames[index];
var bitmapData = new openfl.display.BitmapData(frame.width,frame.height,true);
var sourceRectangle = new openfl.geom.Rectangle(frame.x,frame.y,frame.width,frame.height);
var targetPoint = new openfl.geom.Point();
bitmapData.copyPixels(this.sourceImage,sourceRectangle,targetPoint);
if(this.sourceImageAlpha != null) bitmapData.copyChannel(this.sourceImageAlpha,sourceRectangle,targetPoint,2,8);
frame.bitmapData = bitmapData;
}
,getFrame: function(index,autoGenerate) {
if(autoGenerate == null) autoGenerate = true;
var frame = this.frames[index];
if(frame != null && frame.bitmapData == null && autoGenerate) this.generateBitmap(index);
return frame;
}
,getFrameByName: function(frameName,autoGenerate) {
if(autoGenerate == null) autoGenerate = true;
var frameIndex = 0;
var frame = null;
var _g1 = 0;
var _g = this.totalFrames;
while(_g1 < _g) {
var index = _g1++;
if(this.frames[index].name == frameName) {
frameIndex = index;
frame = this.frames[index];
break;
}
}
if(frame != null && frame.bitmapData == null && autoGenerate) this.generateBitmap(frameIndex);
return frame;
}
,getFrameIDs: function() {
var ids = [];
var _g1 = 0;
var _g = this.totalFrames;
while(_g1 < _g) {
var i = _g1++;
ids.push(i);
}
return ids;
}
,getFrames: function() {
return this.frames.slice();
}
,merge: function(spritesheet) {
var cacheTotalFrames = this.totalFrames;
var _g1 = 0;
var _g = spritesheet.frames.length;
while(_g1 < _g) {
var i = _g1++;
if(spritesheet.frames[i].bitmapData == null && (spritesheet.sourceImage != this.sourceImage || spritesheet.sourceImageAlpha != this.sourceImageAlpha)) spritesheet.generateBitmap(i);
this.addFrame(spritesheet.frames[i]);
}
var $it0 = spritesheet.behaviors.iterator();
while( $it0.hasNext() ) {
var behavior = $it0.next();
if(!this.behaviors.exists(behavior.name)) {
var clone = behavior.clone();
clone.name = behavior.name;
var _g11 = 0;
var _g2 = behavior.frames.length;
while(_g11 < _g2) {
var i1 = _g11++;
behavior.frames[i1] += cacheTotalFrames;
}
this.addBehavior(behavior);
}
}
var ids = [];
var _g12 = cacheTotalFrames;
var _g3 = this.totalFrames;
while(_g12 < _g3) {
var i2 = _g12++;
ids.push(i2);
}
return ids;
}
,updateImage: function(image,imageAlpha) {
this.sourceImage = image;
this.sourceImageAlpha = imageAlpha;
var _g = 0;
var _g1 = this.frames;
while(_g < _g1.length) {
var frame = _g1[_g];
++_g;
if(frame.bitmapData != null) frame.bitmapData = null;
}
}
,__class__: spritesheet.Spritesheet
};
spritesheet.data = {};
spritesheet.data.BehaviorData = function(name,frames,loop,frameRate,originX,originY) {
if(originY == null) originY = 0;
if(originX == null) originX = 0;
if(frameRate == null) frameRate = 30;
if(loop == null) loop = false;
if(name == null) name = "";
if(name == "") name = "behavior" + spritesheet.data.BehaviorData.uniqueID++;
if(frames == null) frames = [];
this.name = name;
this.frames = frames;
this.loop = loop;
this.frameRate = frameRate;
this.originX = originX;
this.originY = originY;
this.frameData = new Array();
var _g1 = 0;
var _g = this.frames.length;
while(_g1 < _g) {
var i = _g1++;
this.frameData.push(null);
}
};
$hxClasses["spritesheet.data.BehaviorData"] = spritesheet.data.BehaviorData;
spritesheet.data.BehaviorData.__name__ = ["spritesheet","data","BehaviorData"];
spritesheet.data.BehaviorData.prototype = {
clone: function() {
return new spritesheet.data.BehaviorData("behavior" + spritesheet.data.BehaviorData.uniqueID++,this.frames.slice(),this.loop,this.frameRate,this.originX,this.originY);
}
,__class__: spritesheet.data.BehaviorData
};
spritesheet.data.SpritesheetFrame = function(x,y,width,height,offsetX,offsetY) {
if(offsetY == null) offsetY = 0;
if(offsetX == null) offsetX = 0;
if(height == null) height = 0;
if(width == null) width = 0;
if(y == null) y = 0;
if(x == null) x = 0;
this.x = x;
this.y = y;
this.width = width;
this.height = height;
this.offsetX = offsetX;
this.offsetY = offsetY;
};
$hxClasses["spritesheet.data.SpritesheetFrame"] = spritesheet.data.SpritesheetFrame;
spritesheet.data.SpritesheetFrame.__name__ = ["spritesheet","data","SpritesheetFrame"];
spritesheet.data.SpritesheetFrame.prototype = {
__class__: spritesheet.data.SpritesheetFrame
};
spritesheet.importers = {};
spritesheet.importers.BitmapImporter = function() { };
$hxClasses["spritesheet.importers.BitmapImporter"] = spritesheet.importers.BitmapImporter;
spritesheet.importers.BitmapImporter.__name__ = ["spritesheet","importers","BitmapImporter"];
spritesheet.importers.BitmapImporter.create = function(bitmapData,columns,rows,tileWidth,tileHeight,adjustLength,scale) {
if(scale == null) scale = 1;
if(adjustLength == null) adjustLength = 0;
var frames = [];
var totalLength = rows * columns + adjustLength;
var _g = 0;
while(_g < rows) {
var row = _g++;
var _g1 = 0;
while(_g1 < columns) {
var column = _g1++;
if(frames.length < totalLength) {
var x = tileWidth * column;
var y = tileHeight * row;
var frame = new spritesheet.data.SpritesheetFrame(x,y,tileWidth,tileHeight,0,0);
if(scale != 1) {
var sourceBitmapData = new openfl.display.BitmapData(tileWidth,tileHeight,true,0);
sourceBitmapData.copyPixels(bitmapData,new openfl.geom.Rectangle(x,y,tileWidth,tileHeight),new openfl.geom.Point());
var bitmap = new openfl.display.Bitmap(sourceBitmapData);
bitmap.smoothing = true;
var matrix = new openfl.geom.Matrix();
matrix.scale(scale,scale);
var bitmapData1 = new openfl.display.BitmapData(Math.round(tileWidth * scale),Math.round(tileHeight * scale),true,0);
bitmapData1.draw(bitmap,matrix);
frame.bitmapData = bitmapData1;
}
frames.push(frame);
}
}
}
while(frames.length < totalLength) frames.push(new spritesheet.data.SpritesheetFrame());
return new spritesheet.Spritesheet(bitmapData,frames);
};
function $iterator(o) { if( o instanceof Array ) return function() { return HxOverrides.iter(o); }; return typeof(o.iterator) == 'function' ? $bind(o,o.iterator) : o.iterator; }
var $_, $fid = 0;
function $bind(o,m) { if( m == null ) return null; if( m.__id__ == null ) m.__id__ = $fid++; var f; if( o.hx__closures__ == null ) o.hx__closures__ = {}; else f = o.hx__closures__[m.__id__]; if( f == null ) { f = function(){ return f.method.apply(f.scope, arguments); }; f.scope = o; f.method = m; o.hx__closures__[m.__id__] = f; } return f; }
if(Array.prototype.indexOf) HxOverrides.indexOf = function(a,o,i) {
return Array.prototype.indexOf.call(a,o,i);
};
Math.NaN = Number.NaN;
Math.NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY;
Math.POSITIVE_INFINITY = Number.POSITIVE_INFINITY;
$hxClasses.Math = Math;
Math.isFinite = function(i) {
return isFinite(i);
};
Math.isNaN = function(i1) {
return isNaN(i1);
};
String.prototype.__class__ = $hxClasses.String = String;
String.__name__ = ["String"];
$hxClasses.Array = Array;
Array.__name__ = ["Array"];
Date.prototype.__class__ = $hxClasses.Date = Date;
Date.__name__ = ["Date"];
var Int = $hxClasses.Int = { __name__ : ["Int"]};
var Dynamic = $hxClasses.Dynamic = { __name__ : ["Dynamic"]};
var Float = $hxClasses.Float = Number;
Float.__name__ = ["Float"];
var Bool = $hxClasses.Bool = Boolean;
Bool.__ename__ = ["Bool"];
var Class = $hxClasses.Class = { __name__ : ["Class"]};
var Enum = { };
haxe.Resource.content = [{ name : "__ASSET__:bitmap_co_doubleduck_utils_SplashBG", data : "LzlqLzRRQVlSWGhwWmdBQVNVa3FBQWdBQUFBQUFBQUFBQUFBQVAvc0FCRkVkV05yZVFBQkFBUUFBQUE4QUFELzRRT0JhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMd0E4UDNod1lXTnJaWFFnWW1WbmFXNDlJdSs3dnlJZ2FXUTlJbGMxVFRCTmNFTmxhR2xJZW5KbFUzcE9WR042YTJNNVpDSS9QaUE4ZURwNGJYQnRaWFJoSUhodGJHNXpPbmc5SW1Ga2IySmxPbTV6T20xbGRHRXZJaUI0T25odGNIUnJQU0pCWkc5aVpTQllUVkFnUTI5eVpTQTFMall0WXpBeE5DQTNPUzR4TlRZM09UY3NJREl3TVRRdk1EZ3ZNakF0TURrNk5UTTZNRElnSUNBZ0lDQWdJQ0krSUR4eVpHWTZVa1JHSUhodGJHNXpPbkprWmowaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1UazVPUzh3TWk4eU1pMXlaR1l0YzNsdWRHRjRMVzV6SXlJK0lEeHlaR1k2UkdWelkzSnBjSFJwYjI0Z2NtUm1PbUZpYjNWMFBTSWlJSGh0Ykc1ek9uaHRjRTFOUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmJXMHZJaUI0Yld4dWN6cHpkRkpsWmowaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wzTlVlWEJsTDFKbGMyOTFjbU5sVW1WbUl5SWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJYQk5UVHBQY21sbmFXNWhiRVJ2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2Wm1JNE5UZzNNalF0TlRNM1ppMDBOMkl5TFRsaU1tRXRPREV5WVRSaU5UbGpOR1ZsSWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pCRk5qazNSRGN3TkVKRU1URXhSVFJCTkVReVJUYzFSakZHTkRrNU9Ea3lJaUI0YlhCTlRUcEpibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPakJGTmprM1JEWkdORUpFTVRFeFJUUkJORVF5UlRjMVJqRkdORGs1T0RreUlpQjRiWEE2UTNKbFlYUnZjbFJ2YjJ3OUlrRmtiMkpsSUZCb2IzUnZjMmh2Y0NCRFF5QXlNREUwSUNoTllXTnBiblJ2YzJncElqNGdQSGh0Y0UxTk9rUmxjbWwyWldSR2NtOXRJSE4wVW1WbU9tbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZZalEzTVRJMVlXVXRaamRoWlMwME9HTmhMV0kxT1RndE16UmtaR1kzTURreU1ESXdJaUJ6ZEZKbFpqcGtiMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPbVppT0RVNE56STBMVFV6TjJZdE5EZGlNaTA1WWpKaExUZ3hNbUUwWWpVNVl6UmxaU0l2UGlBOEwzSmtaanBFWlhOamNtbHdkR2x2Ymo0Z1BDOXlaR1k2VWtSR1BpQThMM2c2ZUcxd2JXVjBZVDRnUEQ5NGNHRmphMlYwSUdWdVpEMGljaUkvUHYvdUFBNUJaRzlpWlFCa3dBQUFBQUgvMndDRUFBWUVCQVFGQkFZRkJRWUpCZ1VHQ1FzSUJnWUlDd3dLQ2dzS0Nnd1FEQXdNREF3TUVBd09EeEFQRGd3VEV4UVVFeE1jR3hzYkhCOGZIeDhmSHg4Zkh4OEJCd2NIRFF3TkdCQVFHQm9WRVJVYUh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZILy9BQUJFSUFqZ0JRQU1CRVFBQ0VRRURFUUgveEFEUEFBQUFCd0VCQUFBQUFBQUFBQUFBQUFBQkFnTUVCUVlIQUFnQkFBRUZBUUVCQUFBQUFBQUFBQUFBQUFFQUFnTUVCUVlIQ0JBQUFnRURBd0lFQXdNSENRUUhCQWdIQVFJREFBUUZFUklHSVRGQkloTUhVV0VVY1lFeWthRkNVaU1WQ0xIQlluS0NrcUt5TTlKMEZoZlJ3a05Ud3lSVjRXTWxKdkhpYzRPVG81UTEwelJVUlhVM0dCRUFBZ0VEQWdJSEJRY0NCUUlFQlFVQUFBRUNFUU1FSVJJeEJVRlJZWEVpRXdhQmthR3hNdkRCMGVGQ1VoUmlJL0Z5Z2pNVmtxS3lRelFXMGxOekpBZmlZNE5VSmYvYUFBd0RBUUFDRVFNUkFEOEF1UkZlYW5maEdGSWNJdXRPUTVNYXlyVGtTcGpaeFRpUkNSb2prRU5FY0JSRWRTRWRTRWRRRWRwU0VkU0VDS1FnNjBCb3ZIUVl4anlJVXhrVWh3b3BoR3hRQ2dORGFVcWdxY1JTRUVZVVJ3aElLS0hvYVNpbm9sUTJlbkVpRWpUaHdGSUlGSVIxSVIybElSMUlSMUVRSW9DRHJTQUtvS2F4akhNYTAxa2JZNVJhYXlOc1dVVTBZSEFwQUIwb0FEa1VnQkN0SUltNjBSeVkybFdub2xpeG5JdFBSS2h1MUVlZ2hvamdLUWpxUWpxUWdhUWpxUWpxUUFSUUVHV2tBWGlwckdNZXhWR3lHUTVRVTBqWXFCUUdodEtBQUNLUWdqQ2lGQ0VncHlKRU01YWVpV0kxZW5rcUV6UkNGcEJPcENPb2lPcEJPcENBcENCRklBZFJRQXhlTVVHTVk3aVdtTWliSFNMVFNOc1VBb0RRNEZBQU9sSUFZaWdBQWlpR29teTBncGlFcVU1RWlZeW1Tbm9taXhvNHA1S2hNMFFnVWduVWdIVUJBMGhIVWhIYVVoQWdVQkJsRklBdkVPdE5ZeGo2RVZHeUNRNlFVMWtiRlFLYU1EYVVnVk9JcEJFMkZFS0c4b3B5SkVNNWFlaWFJMWVua2lFaUtJNERTa0U3U2tJRFNpSTdTa0k2a0lDa0lFVVJDaUNnTlk2aVdtTWpreDVFbE1iSVd4d3EwQmpZb0JRR2hnS0FBZEtRZzJsQUFCRkVRUXJTSFZFblNuVkhKak9hT25Ka3NXTVpVMHFSRXlZZ1JSSGdhVWcxQjBOSVIyMmtJSGJRRlU3U2tDcDJsSVZRZEtRcWhsRkFBdEdLYXhqSDBBcU5rTWg0Z05NYklXeFVMVGFqV3cyMmxVYlU0clNxR29tNjBhamt4dEtLY21TUll5bUJxUkUwUnE5UEpVSkdpT0FwQ09vaU9wQk8wcENBMHBDTzBwQ09BcEFGNGxvTmpHeDdDbE1iSVpNZVJwVEd5SnNXVmFBeHNPRnBBcUR0b0NxZHBTRUgyMGhwMjJrS29CU2tHb20wZEVLWTNsaDFIYW5Ja2pJWXpRVklpYU1ocTBKcDVLcEFDSDVVYUMzQStqU29MY0Q2TktndHgzcFVBYmp2UlB3cEMzSGVqUUZ1QTlLa0xjR0Vab0NxS3hwVFdNYkhzQ1ZHeUdUSGlKVWJJV3hVSlFHMURiS0FLZ0ZhUXFpYnIwb2oweHRNT2hweUpJakNZVklpZUkxY1U5RXFDRVVRMUEyMGcxTzIwUlZPMlVoVk8ybWtLb0cyaUtvR2xJTlFWV2dCc2RReDlhYTJSeVpJUXgxRzJRU1k1UktiVWliRlF0Q28yb1lMU3FDb08ya0k3YlNxSVUyMGh0VHR0SVZRZGxFRlR2U29vVzRJMEd0UFNDcERXYTErVlNKRXNaalI3VTY5cWxTSlZNS0xVL0NqUVc4RVdwK0ZLZ3Q0UDB2eXBVQnZPK2wrVkxhTGVjYlUvQ2hRVzhENlkvQ2xRTzhBMnhvVUZ2QStuK1ZDZ3Q0ZElQbFRXZ09RN2hocU5vaWxJZUpFZEtpYUluSVZFVk5hR2JnZlNvVUZ1Q05IUURVU2VPa1BUR2s2R25vbGl5UG1RMUlpZUxHeklhZWlTb1gwelJEVU1JcUl0d1BvbWpRRzRIMFRTb0xjQVlhVkJiZ3BpTktnZHdReDBoMVF5Um5XbXNEWTlnaXFOc2hsSWZSUjlLWTJRdGpoVXBwRzJIQ1VLZ3FHMjBnVk8yMHFpcWR0bzFGVVYyMEtqS2doS0lLaWl4MDVBYkZGaHFSSVk1QnZwOWZDcEVnYndqMm12aFVpUVZjRUhzZmxVcWlQVjBJTEg1VS9hSHpRMzBQeW83UWVhZDlEOHFXMFhtbmZRL0todEY1b0JzVDhLRzBYbWhUWW40VXRvZk1DbXkrVkRhSHpBcHMvbFEyaDh3RVdueXByaUx6QmVLMitWUnVJeVV4MGx2OEFLb25FaWN3LzAveXBqaURlY1lQbFRkb3Q0Um9UUTJqbElRa2hQd29VSHFReW5oUHdweVJOR1F3bGhPdmFwRWllTWhBd2ZLbnBFbTRFVy95cHlRTjRvdHQ4cU5Ccm1IRnI4cU5BYnp2cGZsUm9EZUFiVS9DbFFPOFNhMitWQ2c1VEVqYm5YdFFhSDd4U08zT3ZhbzJCekhzTnY4cWlrUVNrT2tocU5rYmtLQ09tamFodGxLb3FnN2FBcWdiYVFxbmJhSXFpd1draGxSUlk2Y2hyWXNrZFNKRWJrT0k0ZGFtaWlOeUhDVzJ2aFUwWWtUbUxMWkU5aHJVeWdNZHdCN0FLTno2S1BpM1FmbnFhTUtpODRqcnJKY2V0TmZxc25hUWFkdzg4WVA1TjJ0VzdlRGVuOU1KUDJNUG1NaUxyM0E5dnJiWGZtN2R5UENMZkwva1ZoVnlISTh1WEMyL2JvR3N1b2k1ZmQ3MjlSdEZ1YmlUK2tsdStuK0xiVnFQcG5MZlJGZjZoM2lIZVA5emZiMjljUnJreGJ1M1FDNWplSWYzaU52NTZodStuc3VDcnNyM05NRGNrVzJHMWd1SVZudDVFbWdrR3FTeHNIUmg4bVhVR3NtVmx4ZEdxTVo1d0p4M3lwbXdQbkZNelh1UndiRlR0YnlYcHVwME9qcGFJWmdwSGdYNkorZXRmRzlQWlYxVlVkcS9xMC9NbFVteERHZTUvQk1oTXNQMWoya2pIUmZxb3pHcFA5Y2JsSDNtamY5TjVkdFYycVgrVjErSEVPNWx3V3lWbERwb3lNQVZZZFFRZXhCRlljcmJXakI1b29sbHA0Vkc0RFhjRmx0UGxVYnRqZk1EZlMvS21PMkRlRk50OHFZNEIzaVQyL3dBcWE0RGxNYnlXL3dBcWJzSkZNWnpXL3dBcWNvazBaaktTMTY5cWVvazZtSi9TZGUxT1VSM21CMXN6OEtjb2pYY0Zsc3ZsVDFFWTdvcUxINVVkbzN6UWZvVDhLTzBIbWhXc2ZsUTJoVjBRa3N2bFFjU1JYQkEyWFh0VEhFZjVncEhaNmVGUlNRMTNCeWx0cDRWREpFYm1LQ0dvbWdiZ2ZTcGpGdUFNZEFWUXBTZ0dwMjJsVU5UdHRLb3FpNGliNFU1SWpjaFZFcDZHdGppS09wWW9pa3lvKzZITkw3aXRoWW5HeVFDK3U1R0hvem96a3hJdm1kZENCNVdJMTFQalhVK25PVlc4dTVKWEZMYkZkRHBxUnJWME1vdS9lcjNBbW5OdkRlVEdiUUgwN0d5RGtBOXVxeHYvQUMxMWx6bFhMTVowbXRlMXNqbk9FWFIxcjdSQThoOTQ4dDBqdE9SVHEzWWxYdGsvS3hqQXFOOHc1VmE0Umg3ay93QVFLNHVpRXZkK0lRY0Y5M3NrMnMySGRRM2Q3Ni9qMSs5UTBocGt2VmVKRDZJKzVma09Vcm5SRDRqMjI5a3ZjYVlnelhHSXNsL3JUenNQN3FLS3EzUFdzZjB3KzN2SGJiei9BR3Iza3JiL0FNUCtiYzYzbktrakhpdHJaTC9ta2tQOGxVTG5ySzgvcGlsOXU0WGszWHhsOENTVCtIckNrZnQrUlpWMzhTaGdqSDVCR2FweTlXWmI2VUgrTExwbEw3ZXdaWkwrSCs3aWpMNFRra3J5S09rR1NoU1JHUHdNa1d4bC91bXJHUDZ3dnhmalNrZ2VSY1hDWHZLMWllUWM3OXU4NnRuY3h0WXp2cTR0V1l5Mk40aS9pTWJEb1QrUjFycWJPUmljMXQwZjEvOEFjdnQxRGE3bnRtcVMrM0F1dnVUN3dSNWpqVmxaNFozdERmSXo1Z2E2UEVFTzMwTnc4R09yRWp1dW56cUhsUEl2SnZTbGQxMi9UMi8xZmJwRmJ0VWRXTXVCZXdkeHlMRVcrYTVKa3JuR1dsNGdsc2NYWTdJNXZSWWFvODh6cStoZGZOc1VkQjNPdGM1em4xbmNWMXdzZlRGMHFWWlhaemVqcEVmOHAvaHZuc3JDUzg0amw3bTh1WVZML3VySmxKQk9BTlNrYzZxaFJ6K2p1QkJQd3F0eTcxdGVqTks5NG9BamNuRFd0VjJpWHNSemk0R1JqNDFlc3pXVjRyTllMTHJ2Z25RRm1pNjlnMmg4dmd3cnFQVUdEYnUybGsyK09sZTFQcDloYXVlS081RzA1N0w0akE0bWZLNU9UMHJTM0dyRURWbVk5RlJCNHN4N0N1U3hzU2QrNG9RVlpNcnhiYm9qQzgvL0FCSDVXSzcwczRMTEhXeFA3SkxyV1dWbCtMYU1nSDNDdXRoNlp4YmFYbXplN3ZvVHlqQ1AxTVh1ZjRoOHMyQ1BwMk5yQmZrYW5JaHkwQVFqOFN4dCtsOXJFVUkrbExDbnVjMjdYVi8rcnFIZVVsclh3amppZjhRdnFSb21jdFV2SWV4djdFZ1A5cnhFN1Q5eEgyVkJsK2xMZHhic2Vmc2VxOS80ZzJLU3JGbXJZRGxIR09SUmI4UmZ4WEQ2YXRBVHNtWCt0RzJqVnltWnl1L2p1bHlMWGIwZThqYmNlSkpTV255cWg1WTVYQnJMWi9La29Fc2JnMWF4K1ZPVUNWWFFCWWZLbktBdk5Ga3gvd0FxZW9ESGRJSG0zSzhmeEMwdGJpOHRaYm42dDJqaVNJcXVoUlF4SkxmYldyeXpsRTh1VFVXbzdlc0VadVJScm4zOHRrQjlEQ2FmQXpYSUgrVkszNCtrVXZxdWZEOHd0ZGJJUzgvaUp2VjFFZHZqYmY4QXJ5TTUvd0F5L3dBbFRMMHppUitxNC9mRkRIY2d1TWtSWjkrZVNYMDNvV3Q3WnJJUVNGaGdEZEI4MzNpckZua1BMMjZLc24vbS9BTUwwSk9pZFdhTDdSY2x5ZkpJc3JIazUzdWJxMWFKMWNvaVJySElDQW8yZ2VZc3BKckM5UmN1dFk4b2VWSGFtbjE4UjhybEhRdnpZL3Iycm1IQUt1bkN5MDhLaGxBWG1nL1M2ZUZRU2dMZUZOdlVMaUZUQ05GcFViUTVTRTJqcU5vZW1FS1V4anFoQ2xBTlFOdEtvYWxvZkh3bENBSzZTZkw0N2RESVY1MUltU0VSeUZSV0pLTkhRdXhsVkMwU1ZMQVpKbWRlL3dEaXZWNHJqOG1vODJQdlZSejhJN2xTaC94aGE3TDBsZTJaRGorNlB5SW95OFNLcjdOWmlTMk9hczE4eDlKTHVPUFhUVXg2by81bVdyUHJteFR5N3E3WS9ldnZOREhncFRVWDBtZzIvTU1mTG9KbGVGdmlmTXY1UjEvTlhucXZJMVo4cm11RkdTOEY1RGNSQ1dGeEpHM1poMnFSU3FVWjJuRjBhb3c1bUFCSklBSFVrOUJScU4yamNaYkhOS0loZHdtVTlveEltNzhtdXRUUEh1cGJ0a3FkZEdDaUhQcVZCVU8wRDFhVlJiU0U1bHhteDVSZ1o4WGRBTElmMmxsYy9wUVhDLzZjcW41SHY4UnFLdFlXWlBIdXE1QjZvaXZXVk9OT2s4NGxKV2hlSzRUWk91K0s0aStFaUVwSXYzTUNLOXRzWFZldEthNFRqOHlzbnVqcWV4ZVA1S3l5T0RzTDJ5Y1BhelFSbU1yMkdpZ0ZmdFVqUWl2bnZNc1RzWHBXN2lwT0xhZjI3U2x0cG9QMmxTTlRJN0JFUUZuZGpvQW82a2svS3E2YmJvdFdKbzhxNHpNUVFlNVVXWHRFTFd6WmhyaUtOQjFhT2E0SjhvK2F2WHZOckNsSGxxc3krcFdxUHZwOXhhMlVoUW4vQUh4NTJjeG5CaDdBdFBZWXlUMFk0NCtwdWIxenMwWFR2b3gyTDk5VStTNHNjVEhkKzVwS1NyM1I2RjdTS0xWdURuSXZQdC83ZTRuamVFUmIyMXQ3ck9YYStwbGJ1U05aQ1hZZjZLRmdkSW94NVFCMzcrTmNCekhtZHpKdXViYnAwSTVhL2tTdVNjbUlXL3MzN2V3WjU4dis3eklDM3F3NHlSaTFqRktlcGVPMy9EMTc2SFZSNENsTG0yUkswcmU1N1VCNUUzSGJYUXJIdkp4M2dsbkZEZVFZNk8xNUhkU0JvNXJRbURXTlRxN1RJbWlPRCtIcU5mblhRZWxJMzd0NnU1K1ZEajM5Qys4ME9WUW5LZGErR1BIOEN2OEFzN0prRzl5Y2JGajdHSzlsVU8xeTgrNExidzZhUE1DdjZZVTZMcjRtdXA5UVhJL3hwUmJwM2RQVWpieVo2VVBTMmQ1Qng3QjIvd0JSbDc2R3lqUDRSS3czdC9WUWFzMzNDdUF4OE81ZWRMY1hJcVFVbndNMHpYdi9BTVhnWmt4ZVB1Yi9BRS83YVFyYnhuOHU5L3pDdWdzZWxMc3RaeWpINC9rV28yWmRKVjUvNGo3a1NhTGk3R01mcXZjTVQvMWF1TDB0WVhHNi9nTzJ4WDZoOWpmNGlZWFlmVjRWSGo4WHRiamNmN3JyL1BUWitsSXRlQzU3MStERjVWZURMOWd2ZExobVpzNTViUzU5QzZ0NFpKbXNya2VuS1JHaFk3ZXBWKzM2SnJHeWVTWkZtU1VsV0xhVlZxdGZrUlN0eVJoSE92Y1cvd0NZTllOZjI4Rm0xbXNnaldGbTBmMUNwSkljbnR0cnR1WGNydDRlN2JKdmRUalRvTE1JS0hTV3ZnSHRyd08vNHhZWlhJNGFDOHlGMnJ5enp6YjMzRXl0dDhwYlorSFRzS3lzalc1SjlySkxXSGJrdHpWV3k2MmZDK0UyZW4wdUF4OFJIWXJhdzYvbEtrMUZSRTZ4WUxoRmU0cFh2Ukphd1dXSXNyZUdPRVBMTE15eG9xZEkwQ0Q4SUgvZVZwOHNqV2JmVWhsMktUVkNZL2g1dU1UYjQvTUxQZHd4MzkxY3FVdG5kVmtNRUVROCswbjhPNTI2MWkrcDdkeVZ5TFVYc1M0MDBxeWhlVDNWTkJ5UHVCd0hIdVV1ODNhcklPNlJ2NnpEN29nOVlkdmxHVGMxamJsOHZtTVVadm9Jc2U3bnRxemJSbHRQNlJnbUEvTHNxU1hwek0vWjhWK0kvWlBxSmJHOHQ0ZmxXQ1kvTVdrOGpkb3ZVQ09mN0w3Vy9OV2JrOHF5TFNyTzNKTHUvQVhpWEZFcEpiRWVGWlVvRGxNYnlRMVhsRWtVaHU4V2xReVJLcENMSlVUSHBpWldtTWNtRkswQTFMQzJSajJkRDFyZm56Tk9PaG1LeTZrYzcrbzVhc3B5cTZsdEtpSEVJcWVCRkprUDdqNGM1WDIvenRtbzNTL1N2UENQL2VXK2t5L25TdHZsRjd5OGlFdjZ2bm9WNVBVOC9lMm1SVzM1ZFlNVHBGZUs5dS96RXFhci9pVVYzWHEyeDVtREtYN0dwZmMvbWFWcVhpVE5MeFBIMmx1Skh1anBieE95ckdEMWZhZE91bllWNUJ0UjFXVG03WXBSK3ByM0ZwVmxSUWlBS3FqUlZIUUFVNnBpdE42c2plVlB1NHZtRitOamNqLzhscXM0a3Y3MFA4MGZtUlhvK0I5elBPaXNxaVBwMWJzUjhkTmE5NmxJbzFObTlxT1JYbVJ3OTFaM2NqVFNZK1JFamxZNnNZNUYxVlNUMzJsVDkxZVQrcjhPM1l5azRLaW5HclhiK1phc1MzVlhVWG4xYTVXcFoybmVyU3FMYWVmZVZXY1AvR21XdGk3UXd6WDdicFUwTElKdHJNeWc5TlFYSnIxL2tOeVgvR1JrdnFVSlU5bGFHWE5VM0x0Wm9XUDl1dmU3aDBza2ZGczFZWk93WmlURFB1dHl4K0xST3NzUWI0bFdGY0RmOVQ0R2NsL0xzK05mcVhIM3I3MFVYSzUwcFMrREU4emhQNGorU3dISDVDUEgybG5KMGtSYnBFallmMHhDak93K1ZTWVhPZVQ0Y3ZNdFdwT2E0T1ZaTmQxZEVKWEpMaEZlOHllU0srZ0xRQmhKZnh5R0ZHdHR3RFNoOWltSW5SdXJmaHIxQ0dSdXhsY2xwV0c1KzFWTFRuUzNWOVJLV3VBOXhMTzVpdWJmaldTaXVZR0R4U3FJdHl1T3pBbCs5WWQzMUpnWElPRS9GRjlCbXo1cFlrcU5WUmJMcm52dkhCaHBWdWVQWE1IcEtXbHlaamlFaVJxUE1TQSt6VWZIYldCYXM4b2xmVFRrMDM5RmRLL1AyVktFZjRqbW10M2QwRGJodnVMN2dQSlBqY1BqMzVJMGJheVN6dVVqdDJQWFI3bGlGNjk5blUxYzlRNFhMb1NUYjh1ZlZDbXZzNis3MmszTWJlUEY5VXV3WThzNDk3c1hsM0xtY3hoa3U5Vjh5WStkSm1palhzcVE5R0lIOUhVMC9sUHFIQ3NRVnFDY1k5YjZYMXNPSnpLMWJTZ2xSRXg3R2MrNC93QWV5dHhGZVFLc0dYWkk1TXAxRWtEb1NCSElyZmhUY2ZONGc5NjArZGN2ZVhhVnkwNjdkYWRmNW1uY2dya2QwSFVaZThsM0xjZTVPWVdXM0VEd2VsR2hERnhKSDZTbEplbzZiMVBZZEt0K25xTEVpazY4ZjhDWEdmaEpuaDN0RndlL3cxbGxjbzF6bVpycUpaV1M1bVpJVWJzeXJGQ1VIbGJVZFNhc3ZHM2ZXM0w3ZFI1OXpQbStTcjByYmROcmFMaEg3ZGUzVVM3VjQzanRQbmJveC9Ld0pweXhZZFNNaDUxMS9xbDd4bGtmYVgyMXZrME9EZ3RaUDBack12Yk9wK0lNWlVmbEZOZUhEb1ZPN1FrdDh6dndkVkptYmN3OXRzanhjcmQyZDIyU3dUdHNMVGxSZFd6SDhJWmhvSlVidHFCcUttcytaR1cxK0tQeFg0blk4ajU3TEluNVUxNHFjZTRjKzIzRThEbnJqS1RacXdpdm9MWllZSUZtWFVLNzdwSkN2d08zWldkelNWWnBkUytaMXRuSGpkazl5clExM0hXdGxqYkdDd3NZaEJaMnlDT0NGZGRGUWRnTlNUV2FhTUxTaXFMZ09oTlNIYlNrKzRmQkxyazhzRjdCbUd4eldVRWlDTDBFbVY5VHZKSlpsSTdhVk5hdnp0L1M2RlBKeHBTZFl5Mit5cGpVY2ptS0ppZXJoZC96MUdwcnBvdXFUS2llaU5CNFQ3SVpubG1IanpKNUZEamJHWjVFanQ0TFgxNWw5TnlubmFSMFhYcDRDdUU1MzZ1dTR1Ukt6R1AwOVBzcjJsSzdjdWJtazZGbmIrR0ZObms1aGVDVDlaclMzWmY3dW8vbHJDWHJqS3J3WDI5aEh1dS91K1JBNW4rSGZuOWpHWmNWazdET0t1cDlDWkdzcHovVmJXU0xYN1NLMWNUMTRxMHV3cDNmYjdoNnYzRnhvL2dSdkdQY3ZtdkRNcWNSbG9iaGZRME56aE1ocnZFWk9tK0NRN3ZMOEdVbGEzSjRlRHpTM3Z0dEtmV3Z2WFQ4eWFFb1hPR2tqMEhnODNpK1FZaURLNDJUMUxhY2RqMFpISDRrY2VES2E4K3o4SzVqM0hibXZFdmoyb2JxblJpMHNkWmMwU3hrTm5TcThrU3BpTExwVVRIcGhDS0E2b2RTYUtZR0x4MUxGa2NoNUQ0VmJ0a0VoL0RHa3FORklOWTVBVWNmRldHaC9OViswNmFsYVo0OGVHYkE1NlczUFNYRDNyeC8vcHBqcCtWVnIxcVVWbFliWC96TGZ6UmV0UzhLWnBQSXJpUzJ6THoyMGpJdHdxVFJzaEkxM0Q1ZlpYaVVJNmFuZmN2akc1WVZWV21oWk9QdG12UTlYSXpFaGgremhZRGVCOFdiK2FvNU5kQmw1cXM3cVcxN2VnWHo3RjhEazBIVXRhVGdBZFNkWW1xVEhsUzVGLzFMNW1iZWo0SDNIbnV3Z3pHUTlPTEc0YSt1NVdBQ24wSGlqQjAvU2xrQ3FvK2RleVpIcUxFdEtybW1Zc2JqbDlNWlAyVStMTnI5dmVMejhjd2pSM2pySms3MlQ2aSthUHFpdHRDcEVoUGRZMUdtdmlkVFhsZk91YVBOdnU1K25ndTQxY1hIY0krTDZueExSNnRaTlN6dEN5M1VVTVR6U3NFaWpVdkk1N0JWR3BOT2hGeWFqRlZiMFFtcUk4LzVLN2t5bWVsdUVCOVRJWGc5SmZIV1dVS2cvSVJYdDFtd3NQQlVIK2kzcjMwcXpGdXk0dnJQVTVhNEZ6SjZPNCtZanAyNmZHdm1lc3ExUklsSGFxaDhwa1pMRENYOS9NQXB0YmVXYm9mKzdRdC9OVi9FaEs3Y2pEcGxKTDN1aFZ1SkxnZVQ4VExzek9JWitwTjdiRi8vQU1SU2Z6MTlGYzRXM0R1UlhSQi9CRWVkcFprbDFHL05uNDQ3eVdDZGRBamxWa1hyNCtJcnhOTTREK1NsSnBoODNaakxZUzl4b21NQzMwRHdldW84eUNRYUZnRDQ2SHBVdGk5NWMxTmZwZFMzQ2RHbURoY1ZqY0ppNE1YaklSYjJWdXUyT01keWZGMlBkbVk5V1k5NkY3SWxkazV5ZFpNRXB1VHF4NzYzenFQY0NwazN1M3hlMnRieUhrbGxHSXhleUMyeTBhalJXa1lFd3o2RDlJN2RqSHgxRmR4Nk81cEpYZjQ4bjRaTHc5Nk5yazJVMVB5M3daUzg3bjU4alBZRzRqYWZJeDIwZGhBa0N0SlBjTEFXOVBWQnJ1WlZiYnI4QUs3dUZ1M2o3bXYxeXJUdDZhZk0zcjE2M1lpNXlkRVdURTR6M24vZGNkbll4eFlteVFzMFVWeGNxa3ZuTzQ2K2tyc09wN0UwN2ZkZXFnbDN2OERqTXJtL0xwWFhOMjk4bjA4Zmh3RjRiWDN3eEVxM0tpTEpLcDFlQ084OVFNUGhzbkNmbU90Snp2TGpCUHVmNGtjK1o4dHZMYksyb2RxVkd2Y2Fsak1uTGQ0NjJ1cG9IdEpwbzFlVzFsR2p4T1I1a2I1cWVsV1lLcVRwUTVLNVNNbWs2cFBpVTMzY3lKR0hzN01IclBPWkdIeWlYL3BlbmJhSFdlajdXNi9PZjdZMDk3L0lxSEZlYi84QURkamNRTFpDNEUwclhFc2hrS3NUc1ZRUHdub0FsWitSZ0s1SnlyUTlJczMvQUMwOUs5SnJkamZtNnNyZTVLN0RQRWt1elhYYnZVTnByOHRhd1RXaDRvcDlZdUpxUWRwQ1gvTk9PeE5kMk10OHNkMUVIaWRHRER6N2UydW1ualZpR0xjbEdxVlVWcDNZYXF1cGhVa3NkdGF4UE1kb1RZcDBCWTY2YWFBTHFTZGZoWFFUdVJ0d1RrNkpHTktTaEZObWo4Szl4ZmNYam5IL0FOM1lyaDJRdmJQMXBKMXVwYks1UCtwcHFGQUtkTlJyOTllZmM0c2NweThsM2JsNXhrMGxTTGowZDVVbGRnM1drdmNUdUsvaVZ1TGJJeDJuS3NRY2NraEFabWptdHBVQi9TMlRqUjlQZ0dGVWJ2cFBFdlFieGI5WjlVcVVmWlZjQktkdDhIUjl1aHVGdmR3M0VFVnhBNGtnbVJaSXBGT29aSEc1V0h5SU5jQkp1TGFlalFhRlM5MGVDMmZNT055d2hGWE5XU3RQaDd6VHpwTW8xOU1udjZjdW0xMSsvdUswdVQ4Mm5oMzQzSXZ3MThTNjBObEY4VnhSbUg4UG5JNVk4N05oM0pGdGxJRFBIRWYwSjRSdS9LVTFCK3l2VlBWZUxHN2pSdnJqR24vVEw4eXhkMWlwRzdUSlhtZHhESXNaeUoxNlZWa1RwaFJhdTNoVFZhY3VBWGNTQ3ZZeWdhZ1VwWTAxMENWNURaYWdSTXhlTTFORmtiSGtKcXpCa01pUXR6VjYweXROSG1YM254UXgvdVZsZ0JwRmZyRGZKOC9WVFkvK09NMTZuNmJ2NzhWTDl1aFBpdncwSmUwelVVV0N3V1dsdDF1cEk0VGF0dUpHMTRqdDFIZnI1VDNyeS9tbUk3ZVhkdExTazIvWTlmdk8xNU5CM3JMZ3BiZnRRbTdIbStKdW5XTmhKREs1QVZXWGNDVDRBcnIvQUNWbVN4cEltdmNwdXdWVlJvbmZWcXVadTA3MWo4YVF0cDNxMGhiUnJmNWpINCtFelh0d2tDRHR2T2hQMkR1ZnVxMWlZVjdJbHR0UmMzMmZlK0NHVGxHS3EyWnJ6SG4wbVdpYXdzQTBPUFArckkzUjVkUEFqOUZmbFhwdnA3MHNzUnE5ZWFsZDZGMFIvRjl2UVp0L0ozYUxnUkh0b2tPUTl4OEZDNjc3YUs0TXArQmVLTjVFUDNNbFMrc01xVU9YWFhIcVVmOEFxZEg4RE1uT3IwNEhwT0srdUZrSVRWd1NmSjM4YStmMDJhRXJNYWE2RUg3cVpOcmYyOXlyRUdON2xZN1pRZS83YVJWUCtIV3VtOUpZL25jeXNycWx1LzZWVXBUaWs2SG02Rjl1VHRIL0FPNmtqay9KSXRlNzh6anVzWEYvKzNMNUVlV3EyNUwrbG01cmY0eUxLM1ByRGJQNmgwa2Zxdlg0ZkN2RFZGdEk4M2pjZ3B1dkVOeVhPTmpPUDNtUWhJYVdPTWVnZTQzeU1FUS9QcTJ0WE9WNHY4akp0Mm53bEpWN3VrMDhXMnJ0Mk1laHN6M2cvTHN1dkk0YmU5dTVibTN2Mk1ickt4YlNRZ2xHWFh0MUduU3ZRdlZQSnJFY04zTGNJd2xicHdWTk9EVDZ6bytiWWR0V2QwVWs0OVhVYXY2d3J5MnB5dFNsZTZ1UlpNSGIyaW5wZFQ2di9WaUc3L01SWGFlaU1aVHlwWEgvQU9YSFR2bHA4cW0zeUsycFhYTDlxK1pHKzF1SXRiZXl1TTVJZ2EvdkpIaGlsUFV4MjhMYkFpL0RjNFptK1BUNFY2aFl0Vms1dmp3OWlPWTlWWjBybVU3ZGZERDVsNitvK2RXdGh6RzRxdVg5eWNkWVhzbHBEQTkwOExGSm5WZ2lobE9qS05kZGREVVRranFlVytsNzJUYVYxeVVGTGgwdjhpY3d2SUxiTDQ5TDIzREpHek1oUjlBd1pEb3c2RTA2RkpjREM1aGlUeGIwclU2Tng2aXJlNGZGczV5RzVzbng4c0tSV3lPcFNSMlJpN3NEcjBCR21paW9iOW1Vbm9iWElPYzJjU01sUGRXVFhEcVh0TXhlR2UzdHJxR1p0MDBSbGpZZzdocW1xblEvYUtoaTJvT3ZhZWs0OTFYTEttdUVsVmUxRzlXTGlPeXQ0eCtoRWkva1VDdVhPdXQyNlJRNEUzV2tPY0RDOHplK3JmWDE2Zk42czhzZ0h4RFNIVDgxZExqK0N6SHVPWnV6MWI3V1dMMmJ1MG45eWNURTBaVmw5WjlHME9oRURrR3VaOVozdi84QU51S2xQcC84U0s4cDEwb2VvZlVKOGE4TjNqZHBCNWpMY0t2bmZDNW02eDl5eitTU3d1M2lmcWZBbyt1aHJUeDhITlVQT3QyN20zOXlqTDVnZHROY0NUc0xPMHh1UHQ3Q3dpRU5wYVJyRGJRQW5ha2FEUlZCT3AwQXJQdTM1VGs1UFdURkdDV2dWYjZmNmhJeWdRbGdPdlhwVlYzNVZwUW5kbU8xdXA1dTl2THRiWDNOeFVrUCtuSmtuaVFEdHNuZDBINW5yNkh5N2JmS3FTNHExSDRKTWprcVd2WWVucHgzcnltNFFSWWdrZTVxaXQyOTBxRWpsUWZSeElnN2RhM3JPUEdDSzhwTmhpRjA3Vk80cGdLcXByaVRYWXZHMVBpeU5vZHhOVm1ESVpJZndQMnE3YmtWNW94aitKSEdiYi9BWmhSMGxqbnNaVythRVRSL3l2WGYra2IvQU5jUGFIR2RKTkZLd0ROZWNQdjdKZERMWjNLVFI2a0FCWk5OZXA2QWE3cXhmVnRqeTgrTStpNUQ0clQ4RHMvVGQ1UnVVZjJxdnhSYmVONEsxeDBJdUdaYmk4Y2RabE81VkI4RS93Q211UHYzbkowNEkwOC9NbGRlMzZZOVg0a3ZkM1RRMnMwcWFGNDQzZFFleEtxU05hZ2dxdEl6SnFrV3pORzl5K1NUUkk2ZWhEdVVONVl5ZE5ScitrVFhyRnIwVmd4WGkzeS8xZmdqRi9uM0d1Z2o3cm5ISXBRUkprbWpCN2lQYkgvbEFOYU5yMDV5KzFxcmNYL21xL215S1dYTjhaRURkWmRIY3lTU1BjU251ekVzZjd6VnF4bGJ0eDJ3U1M2a3FJcXl2THZJK2E2bnVPbjRZL2dQNTZqbGNsTHVJSlRjaStlMDBLUmM4d3lvT2ltZHlmc3RaVHJYTWV1VW84cW1sKzZIekp0bE5xN1RmN1hLTkhvanFHWDRxTkQvQU8ydkNhR2pjeDY2b28zdnJraC93NWpiUlNSOVZkbVFnalE3WVl6OGY2VWdydjhBL3dESE9Qdnpwei9aYmY4QTNOTDhTaEtOSkpHR2x0SlpuL1VDZ2ZkNXE5aHlZN3JjMS9TMThHUjNWV012OHYzR3o2NHlUTFR0Y1ByS1dCU04raUhVQTkvR3ZDbHUycWg1anRnNXV2RVplNGN3L3dDRTdoQjBCbGdVQWY4QTJxbithdGowd3E4d3RkNytUTnZsWC9xSUdiNGliME14ajV1M3AzVURmL21MWHFYUExlL0N1citoL2lkYnpDTmJFMS9TYmNadENSclhoNXdWVFBQZEtkbXZNWkhyNURGTVIvV0RKL05Yb2ZvU2xMdlg0ZnZPbDlQUDYvWVArQjN5SEFyYmcrZTNra0RENU94Y0gvRlhwbU5IdzA3VGpQVmVOSzNteWsrRTBwTDVNc1gxUHpxeHNPYktOblBieHI3S3ozMWhsbnNJN3R6TGNXL29wTUJJMzRtakxFYmR4NmtmR3MrNWdUM053bnRUNktWOXgwM0wvVTk3SHRLM1RjbHdMTngzRlcrQ3hhV0VFMHM2aG1rZWFZZ3V6dWRXUFFBQWZJVmFzWTNseHBWdnZNVE96WjVOMTNKL1V5VCtyQytZbm9PcCs2cG5BcUdKeXVaNHAzOFpXa1kvMnlXL25yR2V0dDl6UGNjYTN0c1JqMVJTK0J0aVRqWXUwK1hRYWZaWEtWTzdVTkRwSm45Si9ULzFOcDJmMXRPbEdvMlVIVFF3dTJ5TUR5cmFPcnBkcjVab1hqWlNqcVBNckVqVFhvZEs2WEh5N2M2UlQxb2NYQzZtOXIrcnVQUWZzdGpzTFB4aTN5VFdFQnl0cFBQQ3Q5NmErdG9ldjQ5TjM0WDByeDcxN2tYcmVkSzJweThxY0lTMjE4UHU3MVVNbzZta094WkdVTVVMQWdPTzRKR21vK3l1RFRBNG5seTk5dXZjMjJ2cGJGdVBUNUNZT1ZXL2lraStubTY5SlM3c0N1N3VRdzFGZTVZbnJuQThtTGIydEplSHU2Q0pYcHBVY2FzOUhjWHNyL0hjVnhPUHVTcTMxcFp3dzNIWGV2cUpHQXczZVBYeHJ4ZlB2cTdmdVRqd2xPVFh0WkxhalJLb2xtOHJjWS9GWkM5dURvTE8xbW1Yb05OeW9kdWgrMm1ZT1BLL2ZoYi9BSHlpdmV5ZTdHS2hXSmdQdGJadmRlNGZIWWU1UzU5ZHo4b0kya0ovS3RmUkhQNXEzaFRTNnFmY1ZyK2tLSHFXYzk2OGh1RUVST0JodnArSTF1SFRXZzhMVnZFQVF0UURRcHEzc2V2ZXVLMm1zMk9vWjBic2Fja05ZOWllcG9zaWtoOUJKMnEzYlpCSkZKOStNZDliN2RUWEtqV1RGM01GMkQ4RjNlay8rR1d1cTlOWkd6S2l2M0pvaWhwSkdLY0prVnIrOHNIUGt2clYwMC9wSjFINW1OYlByZXgvWnQzVitpZFBmL2dkSHlpN3N2cjdjQkxFUTVkNzMwTEI1STVRZk95c1ZWZE81YlR3cmlyc29LTlpIcG1USzBvYnBwTkdnN1o0c1hKRlBPYmlVUk9IbFlBYWtxZkFlRlpGVTVWU3BxY2hrN1pibkZiVjFHSnpxVGpvUjI4cWY1YTk4dWF3WHNPSWw5QzlneUVJOFRWYllRN1F3alVlR3YyMFZGQm9HcHdTNDhLemRwZ3VTMm1WdTQ1SllMZEpWYU9MVGVmVmlhUHB1SUhUZFdaNm01UmM1aGh1eGJrb3kzUmV2RFR1TE5OVStvMW16OTVlRUFBR0s2dHo4NFEzNTFaalhsdDMvd0RIbk1sdzh1WCtyOFVpV1Z4dmlVWDNYNWJpK1JaREd0aTVqTmEyc01tNHNySVJKSTQxR2pBZm9vSzdiMFB5REl3STNYZmp0bk54cHFub3E5WGF5S210VFBWWU5iM0xmRXYrWWFWMjFOMFpkdFJuR0w5cHJJeG91cHhjek4reWRJeUVYdWZJTzU4SzhJODNhcUk4dmxiVGsyeGx6MXduR2hFbzBYNmlCUVBrRzEvbXJiOUthOHdoL3EvOExObmt2L3FZKzM1R2RsekhwSU84WkRqK3lRMzgxZXM1a045bWNldU12a2R0a1JyYmt2Nlg4amFmWEo2anNlbysrdkEwZWE3aWxlNk9uN3VzTGtBK3ZET3dUNW95RXZyL0FIUlhZK2pMMG81RTRyZzRWOXovQUROM2tOeHE2MHYyL0lxZUd6YzlwTDlUWnYxSTBramJxQ1Bnd3IxU3plcHFqb2VZY3VzNXR2WmNYYytsTXRVUE9yWXIrMnQ1RWZ4MkVNUHo2VmVXWEhwUnhWNzBUZVQ4RnlMWGJWUDd4SzY1MGRwRnJibmQ0UEtlZy9zci93Qk5DV1gxSW54ZlJMclc5YzA2b3I3MytBeXhuTGJxMWU1a3VnMTA5d3lzRHVDaGRxNmFBYUhwVVZxKzR0dDYxTC9NZlNOdTY0K1RKVzR4alNsSzE3YTFIYzNPUFVoa2pGcXlsMVpRMjhIUWthYTlxa2xsSnBxaFFoNklrbW03cS82ZnpLYkFRa3NrQitBWmRmRWFBSCtTczZEbzJqdkk4V2pTT05aeU84c1k0WGJTNmdVSTZudVF2UU1LNTNOeFhhbFZmUytCMXZMc2xYWUtMK3BmYXBOQ2VxVlRRMkZjNTRETGhvbVVhbUs1aWMvSFRSa1A1QTlYZVh0K2RHaGtjNHQvMmsrcVMvQVU5dGZjaVBqQW14OTlBMHVOdUpQVjlTTHJKRTVBVW5hZnhLUXZidldiNnU5Snk1aTFkdFNVYjBZMG8rRWx4NDlEK0J6bERXTGIzTTRQY1JoMXpFQ2FqWGJMdWpZZmFHQXJ5Njk2UzVuYmRIWW0rNmtsOEJVSTNOKzhYRDhmQTV0WjJ5VndBZGtOdXAyay93QktSZ0ZBK3pXdERsM29UbU9SSmI0K1REcmw5MFZyOGhGaXhlVlRMNGl6dTBuU0s0dUlJNVpJbzVBMng1RURNaDhmS1RwWE1abUpPeGRsQ1NsNFpOYXByZytJNjFLbXJSVC9BSFh2cml3NGJjMjhwUHE1Q2FLMlFrNjZvQ1pYMCs2UFN1bDlDNGl2OHlnK2kyblAzYUw0c2t5SlJkRWlyZncvNDM2bm10NWtHR3FZMnhZS2ZoSmN1RUgrQkdyMDMxZmtiYk1ZZnVsOGloa1BWSTN5WjY4MHVNWkZEWDF0cmExQkM1dGRTWGJVZHgzaU1PcDYxdDJNdU1scVF5dHRBdGNSZ2E2MVlkNks2UUtES3hOZ1dDRXFldGNOREwxSjZzaDVaTHV5bDBiWGJXbGJsR2FFcmxDWXgrU1NaUjE2MFhDaEtuVW1JWmZuVXNHTWxFVDVGajF5L0djcmkyR3YxdHBOQ28vcE1oMi80dEsxTUcvNWQyTStxU0s4b25sTEJaQnJLOXRMMWdkWWpySW83blZTckQ4OWVxODN3UDV1TEswbWs1VW8zMW8wc1c5c25HZlVXU0xtdG5haHhaNDhyNmpGM1puQUxNVHIxMEJya1kraHJrdjl5OHZaSDgwYmQ3bnJuU3NhMDdSR2ZubVJrUmtTM2lSV0JCMUxNZEQwK0lxN2E5RFk2K3E1T1h1WDRsU2ZOWnRVU1JUTHgwVkZnVWRGQTYvQURzSzdDNDBsdFJpemRGUW1ZUGJmM0JuME1QSE1nNFlBZy9UdUJvZkhVZ1ZtUzVqanJqY2o3eURmSHJJWEpZeklZeSttc01oYnZhM3R1ZHM5dklOSFFrQTZFZllhdFc3a1p4VW91c1dPVHFMVzNIOC9kUkxOYTR1OHVJWEdxU3hXOHJxdytJWlZJTk1sa1c0dWpsRlB2UUtvVHZvOHpqNXZRdklaYmFjQU1ZYmlJeHZ0UFk3V0NuUTFMSEkzS3NXcEwzanZNZlF4dU1sY2p1cW43aUtkNThnK2RJT01xL2pHUHVOTy9rUHFENS9ZSHNwNGtpS3UyakVrNmRmRVU2MU5KYWh0eVNXby9HYm5BMEYzTUFPM25mOEE2YWkvalkzN0lmOEFTdndHK1hhL2JIM0lUbHpNa2k3SkpwWkU3Nk16TU5SOGlhTUxWbURyR0VVK3RSU0RHTnVMcW9wZXhCUHJMYlRVdnA5b05XUE1pUytZaHdNM1A0WHN2OStTcXY4QUZ4djJRLzZWK0JENVZuOXNmY2drdVRNeWhacmg1VkhVQjJaZ1B5MUxidFdZT3NJeGozSkw3aDhZMjQ4RWw3Q0tNWitwUDArNGFuUkFtdXArd1ZGSkpPcTBSRTFyb1BUQm1vcmN6eVcwNndMcHVtZUZ3ZzE2RFZpQUtLeUZXbTVWOWc1WEgxak43dTlKNlAwK1FBb3U1TURuSUw5VmZmcm44Z29lWk1HK1IzMVY5K3VmelV2TW1MZklBeVhMT3NoYnpyK0U5S0RjbTZnYmxXcElXMlIwWldKTU1vN01DUjErUkZUcTRwS2trV0lYcU92QmtvbkpzbnQycmZOcDg5dXY1U05haC9pV0cvcFJlWE1yMUtiMk1idkxHVnQwODd6dU93SkxmK3dWTkh5NEtrVjdpcmR5WEoxazNJSkZhY2l1TEdYSzJ1T25teGtMK2xMY3h4TzhhUHByb3pLT2gwcXRMT2lwN1cwbjFGVjNuVVpqTUoyWk92ajVxbldSMkR2UDdBeTVlSTkwUDNFR2ovSVhVSHpsMUNzZVR0d2RWTFJ0OFFORCtVVVhlaExSamxlaU9wTXkxeEVzVTE1SkxFaDNKSEk3c29PbW1vREhRVXkzYnNRazVSakdNbjBwSk1kNWtlczNYK0g3SEMzNHBmNVFqejVLOFlJM3hpdGxFYS80eTllZWVyY25ma3FDNFJqOC9zaXZMV1ZUUnBwYTQyYkpJeEdra3RWcE1tVVJ1MXd3N0dtcWJSSnNFM3VuUGpTZDZUSEsyaWVZcUIxckNSU0lqSzIxdlBHMnVtdFhjZTQ0c1pKRkludnpqN29nTjVkYTZLMUhmRVpHYlRMVGg4b0xtSU1EVVU0YldXb3VxSjIzdU5DRDhLZkNReVVUeTV5ZmlmS3JmbHVYeCtMeFYxYzI4VjNLYmQ0YmVSMUtTTVpFMFlEYjJhdldNSG0xditQQnluRlBhdUxSR3JqV2dlejlxdmRpKzA5UEIzRVlQak1Zb2Y4QU95bW5UNTVZWC9tTDJEWGVmV1RWcC9EejdvM09uMUgwbHFEMzlXNjNFZmRFcjFVbjZoc0xway9ZTWQ3dEtKeVhCWGZIODFmWWE3a1NXNnNITVVza2VwUm1DaHRWM0FIVHI4SzE4VytydHVNMXdrU1JkVWU1TEU2Mk5zZmpESC9rRmVYVCtwOTVRTU85M1BhKzU1QjdyNFEycWxMVE9SYVpDZFIvcGl6MDlWL3RNUlVMODY2bmxQTTFaeEoxNHdlbityaDhTZTNjcEY5aHVWbGFXMWpad1dWbWdodGJhTllvSWw2QlVRYlZBKzRWeTA1dWNuS1dyWkJ4UE1YOFNNRHQ3bHdCUjVwN0MyVlQ4U1pKRnJ1UFRrdi9BTFY5a244a1dySDBnKzR2c09lSDhXa3p5Wmczdm9QRkhMYk5BSStzckJOUXdkdXhQd3BjdTU3L0FDTHZsN050YTYxNnZZS0Y3YzZHZjhONDIvSnVUNC9BcGNDMWUvZG94Y011OEp0Um4xMmdycitIVHZXdm1aS3NXcFhLVjJra3BVVlMzKzZQczNKd1RDV21UT1ZHUStwdVBwMlFRK2tGL1pzNGJYZSt2NGRLenVXYzRXVk54MjdhS3ZHb3kzZDNPaHE5ei9EMTdlMytCamZIcE5aWGx4RkRJbDRaNUpWVU50WjIyTzIwNnJycFhQUjlSWkVKMW5SeFZkS0pmRWlWMlZTdzQ3MmM5cW9iSVdjZUd0N3ZZdWp6ek0wa3pIOVpuREE2bjVhQ3FIL1AzN2ttNDNQWXFVQkp6V3JxakR2ZVgydXMrTThueGRyeDlKR3RjNXF0cmFPMjhwT0hWUFRWejFLbmVwR3ZhdXU1UHpOMzdVbmM0dzR2c0pyVnlxMTZDODRiK0Z6RkxheHRtOHpjUGVFQXl4MmF4cEVwOFZEU0IyYlQ0OUt5cjNxZWRmQkJVN1NOMzMwSWxQOEEvbVBnbW1uMTJSMStQcVJmL3dBT29QOEEzTmtkVVBqK0lQUGtRT1c5b2NId1hsUERjcmpiMjZ1RGNadTN0cEk3bjB5RlVobTFCUlZPdXExWnQ4M3VaVm03R1NTcGJiMEhLNDVKcDlSZnZmZTN2YnIyMHlGcmFReVhWelBOYXh4d1JLMGpzVE9wOHFycVQycks1SEtNY3FMYm9sWDVFVm1pa2VhVDdZKzRvWGNlTlpIYjMxK25mL29ydHY4QWs4Yi9BT1pIM2xyekk5WkFYMWhmMkZ3MXRmVzB0cmNyK0tDYU5vMy9BTHJBR3JjTGtacXNXbXV3ZW1iNXdqK0cvRG5Fd1pMbDF6TzF6TEdKbng4RENLT0ZTTjIyU1RRdXpBZmkwMDBya3MvMUpLTW1yU1cxZnFlcFhsZWJkSWpvOFkvaHRML1I3b0JMcnQzQytmZHIyNytyV1ovemZNYWJ0bDNiL3dEVC9JbDhxNTFvcTN1ejdKWWZqM0c1T1VjY3ZKWmJDSW9aN1NjaVRSSldDcThjZ0NrZ01ScUcvTFc1eWJuMHNtYWhOTHhjR3Z2UXlGeDd0c3VKWkxuK0dmamR6aWt1OGJsYjJPZVMzRTBjVGlLVldaazNCUjBqUFU5TzlWSWVwcmlsU1VZMHIyalBQZFNLNDUvQy9rTGl5U2ZrR1hGamNPQVRaMnNZbUthK0R5TVZYWCtxTlBuVm5JOVRSVXFXNDdsMXZUNEJsZjZrVlRtM0dlUiswZkpiT1RDWm1VeDNzUmxndUZIcDd2VGJSNHBvdFdSd05SK1dyK0ZrMnVZV241a0Y0WHcrOU1mQ1NtdFViN3hOK0xjeDQxaitRU1lleWVTOGoxbVdTM2hjcE1oS1NMcXlrOUhVNmZLdVJ5MWR4N3NyZTZXbmErSFFReVRUb1BiL0FJUndlOFhiZVlISHpBRFFhMjBRSUgycW9xQ09kZWh3bkwzc1NxVmpJK3kvdGJjNi93RHdSYmNueHQ1Wm92ekI5S2tYUHNxUDY2OTZSTEZNclYvL0FBOGNEazFOdGMzOXFmRFNWSkFQdWROZnoxTkgxVGtSNHFEOW41a3FnWFhqbUd0T084ZnNzTGFPMGtGa2hSWlhBRE9TeFptWURwcVMxYzduWmtyOTJWeVdqa1RSZ09wSjZ6NU1takVheVRWRXlWUkd6eTB3a1VSTXlVS0RraEs0NVVTQ0ZxQ09JVkZqc2pwczdQSXBBUGVyRUxDUklzVmxSek1relNseWEyc1ZwSWl1WTFDVzR0bWhHUkV4bzVOcXVveUdtaGZyVzYzS0NEVkJPaE00a2xCZE5vQnIwcXhDUlhsQWtMZTU3ZGF0d21WcHdIcVNCaFZoT3BBMVE4Z2U4STA5eWVSLzd6LzRhMTZSeWovMHR2dSs4czIvcFI2cjVCeUtManZGN1RLemoveTBUMlVkeTM2c1V6SkV6ZjJkK3RlZVJzU3V6Y1kvVjRtdTJtdFBhVkxjYXlwM2xnR3h0cmpSdW1xTjM2SDRINTFBblZhRENHd1BKYmJNWlRPV2x0bzBlSHVVczJrSFpwREVKSC91bHRLZkt6S01ZeWZDYXF1NnRQalFrbkhha1lqNysyNlA3cjhXVmgwbml0VmI1ajZ4aC9QWFc4aWsxaVhYMVYvOEpMWitsbXJlOG1CeU9kOXZjdGpzYkExMWZNWXBJTGROTnptS1pXSUdwSFhRR3NIazkrTnJKaktUcEhYNUVGcHBOTm1LKzB2dGJ6L0g4K3crVnlHR21zc2ZaU3RKY1R6bEUwQmlkUm91N2NlckRzSzZibTNNOGVlUEtFWnB5ZlYzb3NYTGtYRnBNMGIrSmExTTN0dUpBT3R2ZjI3YS9KZzZmOWFzYjAzS21WVHJpeUt5L0VTbC9sYmova08yU3RaV2l1QmdJM2ltUTZNcnJBbzFCK09vcW5ISGpMTjh1YVRpN2xHbncrb1MwdWUweTcrRzdNWmk2NXpmUTNON1BjUVBZU1BJazBqeURjc2tlMXZNVDE2bXR6MURoV2JkbU1vUWpGcVZORWxwVHNKc2lUY1Mvd0R2RWlIbVB0dTdBYWZ2Z3FTZmhyRWF6ZVV2K3hrZi9UL0VpdGNIM0Y2NWZsYzdqTU85MWhNVkptTC9BSHFxMmtUSWgyblhWeVhPbWcwckZ0MmZNbHQzcTMvVTFYNERiVzJ2aTRHYlM4Njk5SldJdCtFU1IvRGZLbi8xYTBGeWZIL1ZsKzZDL01zYnJQVjhTa2N0NXY3Z1hYTCtNWWpsbVBqeGt0cmtiUytpaFZ0N0VQTDZZWWtNNi9yVnM4djVWWnRXYnR5M2RuZHJDVWRhVTYrcERxeGE4S1BSSEp1U1lyamVLbnkyVW1FRm5DeXF6OWZ4T2RxZ2FBbnFhNVNGdTVjYWpiaTV6ZlF2ektkcUc1MEt2d2ozZjQxeS9OelluR0NVVHhRdGNLMGlGRlpWWUtkTmV2NlE4S3MzK1daZGlLbmVqR01YMVNxNjlwTmRzcUtxblVpZmY2d3hrMkR3VjNkUkkxeEZtYk9LT2NqekNLVmo2cTYvcWtMMnJSNUhkbEdjMG5vN2NuN2hsbmlYL2sxOVoyV0d2SjcyM2t1ckxZeVhNTUtQSXhpZnl0NVl3emthSHJvS3hZcWJhOHRWbDBhcGZGNkRiVWF0YTBNYlhNZXdzWjJSY1M5VWpvRkZoZFAvQUNvYTJkL09IMmYvQU1zQzE1WDlZajdoKzZmRTVPQTMzRmJURjNXT0YzYStsajRKYmFXM2pBUnd5bFJJRjhvSytGU2NwNWRtL3dBcU4yYWh0VXF5YW1wUFh1NlJLMUd0ZDFXYXp4akpBZTNtTHlXdTcwOFREUHI4VEhiZy93RFZyS3liYjgrVWY2MnZpVlpMeGUwd0xDZnhHOHFqemkzdVdqU2JHbEhEV2NDK2JjdzhoM08zZ2E2Qzk2UmpHMy9hbkozdXViOFBiNFlyM0YxeGkxU2xGMkVKN3NlNkVQT254cGpzbXRCai9WR3JsU1c5WGIrcVQyMlZwY2k1VmV4Ti9teWpMZFNtMU5jSzlZRkNNZUJ0ZnNwak10aGZiMjF0Y3BFYmVlV2FXNGloYjhheFNrTW00Zm9rOVRwWE5jK3lZWE1sdURxa2t2YWlKeHF5NFRYWHpybjVYQ1dNQnBKYy9PcThwa3lnTlpMajUxREtaS29EZVNlb25Ja1VSdEpOVWJaS29pRHkwMGVvaUxTVUI2UVF5VUtEcUZmMkNwYWxyYWdlZ3AwVTJDVFNJekxXMHpSbGdoMHJXeHNlUm01RitKRDR5VXhYcTY5T3RXTDBkQ21wS3BwdU11ZDBDOWZDc1NlakxxV2hLd3owNk1pS1VSL0JjZk9yTUprRW9FamIzUGJyVnFFeXRPQjVPOTAyK285eTgrQjEzM3BqL01xMTZmeXAweGJiL3BGQmFIby8zcmcwOW9zeEdSL3BRVy8rR2FNVnhuSnBmL2VRZmEva3lyYStvZ2VGZTZzVVhzdk5tcnVRUGtjSkdiRjFZOVhtQUMyLzk4TXY1NkdkeXh4elBJaG9yanJIc2pMVi93RFQ0dmdUU3QxblhvR3Y4TVZ4UGM0SGtOeE81a21teUt5U3lIdXp2RUdZL2VUVjcxSGJqQzViakZVakdGRjNKak1qaWl2ZnhLVEd5NXZ4aklBYW1DM0VnSHg5RzUzL0FNOVhQVHNkK1BkaDEvZkdnN0g0TTJIQys1ZkM4ekFrOW5rNFNYR3BqTGdPcFBnVkozRDd4WEczdk1zUGJldHpnLzhBSzJ2WTFvQjRzdWpVUzVKN244T3dObzAxMWZ4dkoyamdSZzBqRTlnRkhXblkwTHVROXRtRXBQcm8xRmQ3ZitJWTQwdjFhRlg5L3N0akxuMnl2WW9MbEpKV250V1JGUFU2U2duODFhZnB6SmhQTWlvdldrdWg5UVlXWnhkV3RERXYrYi9KZitDUnhBUlEvdTRXcHNqS2QvcUdNL2Z0L05YVS93RHQrSDhyK1I1azY3dDIzVGI4cWsxSTlXcEhlMzNQYjdoV1d1TWxaMjZYTXR4Ym0zS08yMEFGMWZYWFJ2MWF0YzM1WTh5Mm9LYnQwbFdxVmZtS2lmRlZKWGx2dkRudVMzK0d2THEzaWhiQ1hQMWRzc2JNZHo2cWRHSkEvVXFuZ2NnV1BDNUYzSlQ4eU8zVkxUanFxQ3BGY0ViYml2NGgrQlhkbWt0M08xbGNFRDFJSkVmVUh4MEtxd1AzR3VTdThuNWhiZTN5dk0vcWpKVWZzZEdpSjR5NkpDcy84UW50MUdQTGR0Si9VamxQL1VvUjVUekI4TEZPK2NmeEYvR1g3dmdZdDdwODh4UEtlZFlyTVlrT0liUkxlSm1kU2hMeHpsK3phZURWMTNKc0s5YXhwd3ZKUms2NkoxMDJqNHdVVlJPcHEvOEFFemtZMTRIYTIwYmh2cThoRUR0SVBsampkL0Q1NlZoK21hVHlhcHA3WXY3a1FXSXRQVXpmK0d2L0FQMlEzLzhBanJuL0FEeDF2ZXBQL1RML0FEcjd4OS82UzhmeFI1Rm9jSmdMSkcyeVMzY2x5UDhBN2lNQlQrV1NzbjB6YTNYWnQ4TnRQZS95RzQvU3lWNDEvRU53MjV4VnEyV25ObmtSR3EzS01yNmVvQm94VXFyQWc5KzlaT1R5WE50VGNZMi9NZ3VFb3lqcXVpcWROZXNrZU9ucW5RbVQ3NyszSUd2NzJYL0gvczFXL3dDUHp2OEErdlAvQUxmeEdmeE8xR0srL1hOdU84c3kySXVjTGNDNVcxdDVZcDNBWWFGbkRLUE1GK2RkZjZheDc5cUUxZGc3ZFdxVmErNGtoYTJkTlRYK0daL0ZIMlhzSTVybEVsR0hraEtFOWRVamVQVDgxY3ZuMzRRejVRYjhYbWRUNldSdXhOeXFsb2VhZUQ4YVhrdkpiREJ0Yy9TQzgzTDlSdDM3ZGtiUCtIVmRkZHZ4cjBQUHl2SXRTdVVydC9FbWJvYnJ4UDJKNC94L01SWlM5dm55NzIvbXQ3ZVNKWTRsbEI2U01Oejd0dmdENDF4ZWY2a3VYYmJoRmJLOFhYV2dOV2FKUGRFNjlhNWFjeVdNQmpMYy9PcTBwazhZRFdTNCtkUXVSS29DRHovT28zSWtVQkY1cWEyUFVSRnBhRlI2aUpOSlFIcENaZWtHZ1V2UkhVSVI1R1VkcWtTQzd5Rk1hR251bFZoNVNhMDhHMm5MVXo4dkowME5DUEc4ZStNMVlEWGJYWTI3TVZFNXFkK1RabGVaeFVWdGtHTWZZR3NIT2FUb1c3RnhzbjhOUCt4VWE5cTUyOXhONnpxaWFpbXBpWTZVUjdEUDg2bGpJaGxFZndYUGJyVmlNeXZPQjVsOTFNZGRZejNEeWpTblUzTTR2cmQvaWtwM2o4amFyOTFlcWNrdnh2WWNLZEMydjJFRFZCM3lQM201cnlERTNXSnY1SVBvcnRRc3lvamh0RllNTkNYUGl2d3FwaGVtckdQZGpkaks0NVI2NWFlNmd0T3BGTVRJWGNkaE5ZTEtWczU1RW1taC9SWjRnd1JqOWdjMXV1eEIzRmNhOGNVMG4yT2xma0twSjREbXZKY0JiVFFZZSthMGhuY1NTaFZSdFdBMmc2c0c4S281L0pzYkxrcFhvYm5GVVdyWHlhQ3BOQ1dkNU5uK1JUMjc1VzVhOW5oVXhXL2xYZG94MTJnSUJyMXFUQjViWXhJdFdZN0l5MWVyKzhEbFVrcjMydDl3clFLMDNIcnRsWlF3ZUtQMVJvdzFIK21XMCt3MFljMXhwY0xrZmZRWXBJYmoyODUxNkQzQTQ5ZmlKQnF6ZlR1T24yYWFuOGxPZk1zZXRQTWo3dzdrZGpPQ2MweWw3QmFRWWk4RWs3aEZsbmhsamlYWDlKM2RRRlVlSm9YYy9IdHhjbk9PblUwS3B1K0wvaDQ0SEJZUXg1SjdxOHZnbytvdUVtTVNNLzZXeEFPaS9EWHJYSlhmVXQ5eWJqUlI2TktrVzZRcmYvdytlM056S3J3ZldXU2dhTkhEUHVWdm4rMVZ5RDlocGx2MUxrUjQ3WmV6OEE3cERUSmZ3MjhObnNIanhkOWVXbCtPc2R4T3l6eC8xV2pDeDlEOFFhczJQVWwzZDQxRng3TkFlWkpGQXUvNGMvY0tHWXBDOWpjeGErV1paeW1vL3F1Z0lyWVhxSEdwVjdsN0J5dW82TCtIUDNCY2pmTGo0aDRrM0RIK1NPbXYxSGpMOTN1L01QbUlZOHQ5aitZY2F3elplU1MzdjRJVHJjcFpsMmVKUCs4SVpWMVVIdnAycVRFNTVZdnoyS3NXK0ZlbnNFcHBzcGw1bjg5bGtpdGJ5L3VMOUViZERCSTdTNk5wcHFxOWV1bFhzZmwrUGp0eXQyNFFiNHRKSWxjbStJcHgva2VhNDFrM3ZjWEw5TGZLandPWFFFaFdJM0tWYng4dERPd0xXWGIyWEt1RmE2TnI0b0NaSTNtWDVyejNMV05qTXo1VElEZEhhUW9pcm9ISUxrN1FBRjZhbGoycXZpNEdMeStFcFFXeUw0MWJmRGh4RktYV1d5Ny9BSWN2Y0tFajBIc2JvRUFuWk9VSUpIVWFPbzdWWGg2aXhueDNMMkVYbW9aLzhnZmN2WFEybHNQbjlWSFQzNmd4T3QrNWg4eER1ei9oNDUxS0pUZFRXVnBzUXRFREtaQzdnZEU4aTZMcitzYWd1ZXBjWlVwdWZzRHVLUk53em1FZHpKYVBocjVwb0dLT2l3U09vWUh3WUFxUjh3YTFZNStQVGR2aFI5cUhHNiswM3RwRHhlMUdYeWlLL0lMbE9pblFpMWpZZmdYK21mMHo5d3JpT2VjNy9rUzh1Mi83Uy83dTN1Nmc3YWwrbXVmblhNeW1TeGdNWnJqNTFXbk1zUmdOSkovblVFcEV5aVYva09mYXlSWW9mTmNTZmhId3JWNVB5dVdaYzJyZ1ozTk9Zd3hMZTU4U3B0ekRQMlUydHlnbGkxNjZWMVdaNk5TajRIcWM1aCtyRkorSkZoeEhMTWRrbEFWOWt2aWpkRFhGNXZMTHVPNlNSMStKbldyNnJGa3FaTmZHczh2MENsNlE2Z1V0UkRRS1dvaG9SV1V6RmhhM1hvdU91dWxUV2NlY28xUnpydk1zMkJzN2U2Z0U4UTY5eFZaNU1yTXhyOFNIZVV2NzYzZ01ZSjI2VjBHUHp1c2FGT1dQcVo3bDdxUm5abTZtbXl1K1k2ajRLZzk0L083TDFyUHlWUm05aThDeHh5VlVUTFRpT1lwcWVtUlNpUFlaNm1qSWdsRWI1bmozSHMvQUljeFl4WFlVYUpJdzBrVCtwSXVqcjl4clJ3K1kzc2QxdHljZmw3aUNWc2liYjJpOXRvOXBPSjlUYWRmMmswemEvYjUrdGFqOVI1ai9BRi9CZmdSTzJUVUhBZmIrTzZqdWt3RmtKb2dBaDlJRlJwNDdENUNmbVJVUC9NNUxWSGNsVHZJM0JqOXVHY0Z1WnpjVGNmeDd6dCtKemJ4OWZ1QTBxUzF6UytsUlRsN3lPVUdoNWplTWNVeFZ3MTFqTVBaMmR5dzBNME1LSy8zTUJxUHVwWHM2N2NqU1VwTmQ0emF4Njk0d1k5YXpaWEtFcXRoRGVuWFhXbWVhTzhzSzE2eDdzYUhtQjhzSWJvL0dtK1lIeXd2MVorTkR6QStXT1lMclU5NnNXcmhIT0F0SmNlWHZVczU2RWFnSmZWZE85UXU0UDJCUHE5UVFlb1BRZzl0S2o4MFBsaU1NV1BobEUwTnJCRk1PZ2xTTkZmOEF2QWExSThxVFZHM1R2QjVaRzVyaW5FTTVNcytXeEZ0ZHpyMm1kQUhQOVpsMmx2dnF6WTVwZnRLa0p0SU93V3dmSHVNNE9TU1RENHkyc0pKVkN5eVFJRlpsSFVBdDMwb1h1WVhyMmx5VGxUckE0RXVidnAzcUYzQUsySVBlYW52VUx1a2l0aUwzWitOTWQwY3JZazEyeDZialRITWtVQkNTZW11WTlRR2swOVF5bVN4aU5KSmFnY2laUkdsemRSd3h0Skl3VlY2a21tcE9Ub2g3b2xWbEJseU1kOWxKN2t0ckhINVl5ZTFlditrdVgrVFkzU1hpWjVWNnN6WGR2Ykk2cENOMWR4VEF4cEdaVDhoWFMzOHUzRmFtYnkza0dYa1B3UmFJQzd4V1RqZjE0RU1PaDFERHVLNS9ObGJ1cHBxcDNXQjZZeXJOSk4wSi9BOHhuZzJXMlQ2anNKdittdUM1bHlOeHJLM3dPcXQzSlEwa1dhYmtHTWlUZjZ3YlVhZ0wxTllWdkN1emRFaXo1aUlTWG1yVFhQMDlqQVdieExkSzJNZjAvY2w5V2cyTXBTZElvYVQ1alBOY2VsTXd0MGI4SkZkSHk3MHRabTZUWnpucUxtR1ZoUnJHUGhMcm51REM3dnhNQjQ2MTUvaTh5VUlVSm5GRnZ3R0xXd3MxaitBckh5cjIrVlJ5VkNNNVRNVWliU3JHR3Fzam1aemQzRWJ5N1QxT3RkQkdMU0dXNDFaTjRtSlVpQkFxaGVsVm0vWWhSRW9yQWRTZEFPNXFFbVpSOGw3cFRSWHM3NHF4K3V3MWcyeTh2d1R0SkIwZjBqK2tGOFNOYTZyRDlOeW5aM3piaS9sM25PNVBQSVF1N0kwWm9saGZRM2RyRGRRTnZoblJaSTIrS3NOUlhPVGk0U2NYeFJzSnFTVFhCaitPYWlwREhFV1dmU25ieGppS3JjL09uYnhqZ0t4WFpWaDE2VTZONmpHeXRqNWJqVWQ2dUs1VWdjQnJjeWtlYXExNlhTU3dpTi9xZm5WZnpDVFlENjlMZURhQVp2blMzaDJoR21OTWN3cUk2dFppU0tzMlprVTRqcVdRN0tzVGxvUlJqcU5ubUlGVnBUSlZFUUZ3ZmpVSG1FbXdINmcvR2o1Z05oMzFKbytZTFlLeFRIVFdwWVRHU2lCTGM2RHZTbmNGR0EzTng4Nmc4d2wyQ2JYQitORGVPVURoSWRLY3BDMmlVa3ROY3h5aU5KSmRUVUxrVEtJaXoweW85SWllUkdJNG00OVhxdTA5S3M0YmZteHAxakw4YXdhS1BpY2JMUEFnZFNrQTYvTTE3Q3N0cTFHSzZqbmVUK2s2M25ldkxUb1E5bG0ra25DeHFxUktPcmVKcWxLZE5XenVVbzJ0SXBKSTU4bTl6QnNqaklrWTZMcU9tbFVMM01yVVl0cDhBVHkxS09uRWF5Y05ubU85NXROM1Zscm5KZW9KVmVobVN4NVNkYWkwWEhaY2NRWUI2NjZkUTNYU3BNUG5xWDFJbXN4OHJncWg3ZUN5dUowazBFZHdoOHlqcFhVMkwwYmtVMFg3V3liVDZSM2xZRmt0R1A2YURWVDh4VnFFM0YxUTNtZUpHL1lsQ1M2RFdKOHhaSjFMRFVWNFhHeEpuS1VJdTk1YkJHcENIdFZtM2hOOFJ5ZzJVamtuTG1uUmxGYkdKaFVHeXRzcW1QbGx1TDBFNjZFMXAzVW94SmJGdlV2MWttMkZmc3JCdVBVMklyUWd1Ui9WNXZLeGNWczVtdDdab1RkNTI2UTZPbG9Eb3NLRWZoZWR1bXZnTmE2ejByeWRYN25teittUER2T1U5VmM1L2kydGtmcmtNYnUxc3Jaell3UUpEWlJvSW83ZFJvaXg3ZE51bGVsM1lKT2k0SG5OaTVKeFVtL0YxajMycXZuL0FITGRZZVZpMHVHdXBMWmRlL3BFNzR2OEpyeWYxSGplVmsxL2Q5eDZyeVhJODJ3dXd2YVBXQ21halFxSHAxUmxDczhrNVpjMjk2dUN3YUxjNTJaZDdsdjlLMWlQVDFwai9sWHhyZDVKeVM1bVRxOUxmek1mbS9OcmVKQ3Irb2k4RG03N0M4aGh3OS9rSHlWbmxOM28za3dBYU84VWJuajZkTmpqcW84SzJQVW5KSVdiYXVXdjA4VEw1RHplZDl1TnppK0JvMXJkZm9rOVJYSFdyM1FkUE8yS3l2dVUxTE4xUkhGVUk4eUVOcDhLejNLakxLUW9zbW9wNmtOYUQ3cU5RVUNNeDBwcllVaGV5ZlVpcHNlUXk0aC9LM2txN042RmVLMUdjejZJYXAzSmFFMFVNL1ZxcHZKOW9QcTB0NE5wd2tKT2xGVEZRZUsyaTFjaTZJaGFHazgycmFmQ3ExeTVxU3hpSkdRMHplUDJuSXhZL0tuUmRSTkNqTm9LbHFOU0dzc3VwMEZReW1TeFFpelV5bzhUWTBxaEtuenZKeTI5ckRiUm9XTTdBRStGYm5JYkNuZXErZ2l1UzFTNnlQZ211cFk0N1dGZ0pkUE1SMkFycytZWjZ4NFY2VFZuZmNZcUs0aisxd3NRUU5kZnRKZGRTYTR6SzVuY3VTYlQwSzIxdjZoNnJXU1NMRXUzZjRBZDZ6M3VhcUtxclFXamp1cnE2U3pzb3pMY3lkbEhoOHpWckN3Wlg1VVhBclplWkd5cXNzTTN0aHl3V1ptOWFQMUNOZlMvbXJvZi9iOGFjZFRFZk81VjRFUGJjUXRUanB6S0RCbHJiVXkvUFNzU2VaZndzaFJmMGt1Tm12ZHZUS1JsTW96cWJkVDVsT2ovQUhWMzltN3ZnbWRCUE0zd1ZDMFRUeXYxTG12TVlwSXAvd0FaRWZjenFpblU2bXA0UmJFNHhpUkJzcGJ5Ym9QTFZ6ekZCRURodVpZTVpnb29RR0k4MVVMMlMyV0xkbEluSTAyZ0NxVFpZUkJjR1Zab3VWNWVUckxkNUdXMkRId2lzMFdKRkh5M0ZqWHMzcHV3cmVMQkxwUEZ2VnVRN21hMCtFU1B6V3EzdXZneUFqN3VsYk9RdkVaK0kvQjdSbHdpNEZyenZLV2hPZ3lWbkRkeGo0dkF4aWY4eEZlZCtzN0drWjl2ei93UFEvU2Q2c1pRTkpqZXVEVWpyMmhweUhPdzRUQjNlVWxHL3dDblRXT01kM2tieXhvUG16RUNydUZqTy9kamJYU3l0azNsYWc1dm9JakhZZHNEZ0ExMFJKbXNnV3ZjdmNucXp6bGRkZ1A2a2V1MVI4cTl0d01XTmkzdGlxVVI0cG01MHNxKzV5ZWxkTzRvM0s1SmpnNTdtRW42bXhLWHNERHVIZ1lQL0pyVlRNc3E1YWxGOVJzWU41MjcwV2pXTVprVXZMRzF2b2pxbHpFa3luNU9vYitldkVMc1hidU9QN1cwZXNSYWxGUHJSTHh6YjAxcXhHZFVRdU5HTnJrRU51SGpWVzh0YWtzR2RCdU5DM1VVaGNLYW1vUmdNcDBwc2tGQnJJK1lqNEdqanZVRjBrbjZwV2pMZ1ZWeEdOMzBqTlVyNzBMRnZpUis0MW4xTEZEdHhvMUZRVWcxYVFmS3BMZXJHeTREdVdUYWhOV3B6b2lLS3F5UExrbldxVzRzVUFCSk9ncExVUTZqajJyVnVFYUlpYnFJenlhZEIzcGx5UStDR3BOUVZKUURScUVaWCtTdGJLTXZNNEI4RjhUVTlqSG5kZElvRGxRcE9ZeUYzbXNoQmJJbnBRQTd0VDNJcnByV0hMQ2g1aitvWktFM0pkQk4yZGhaMks5Q0E1N3NlNXJIdjVGeTg2c3RKS0k3WjQyUStZYlQ0NjFYbzB4OVVSeVFZNkM0OVlNV2xQYnhxWnlrMVRvSzdjSXV0VFFQYUczVTVpN211bzlzeEE5RU4zMi9LdXQ1RHM4dDA0bkw4MHZiNTlocHVZeFVsK0lkazdRK2t3WTdmSFR3cmVNc3lYM0h2eGI4bzlHemZxWTlKOVBFL091YTU5YmhLamZFdDR6WmtlZmhhMnYybWJRSkwyKzJyWEpzbE9HM3FObkR1MDBaY0JaU25wclhINzBiVzFuTGlBemF0Ujg2Z3gyeC9iMk1VUTZDb0ozR3g2Z2tPMUFGUXNjSEZBQlRPUDVCY2ZrdVM0Q1poQ3NWK01qR1hJVU5EZXF1bW12aDZxa2ZhYTltOUtaTWJ1SkhYV0svSThlOVg0Y29abTZta3Z0OGhYazAxbmJ3UXpYTThkdWQ1UmZWZFUzYTlkQnVJMUlyZXlxSkp0ME1IQjNPVFNWU25YZVZqeG5OK0w1TDFCNkVrajJrcmdqUXgzSTJnNmp3RGFHdVQ5UzQvbTR6UzQwcXZacWRuNmN2ZVhmMU5tR29OZVJWUFNTdWM0SW5sNDFZdjFodXN6YWlaVDJJaURTZ0grMGdyclBSOFZMTDE2RWN6NnJtNFlVNkQvTzNQMU1rNFU2cXFNaS9rT3Y1NjlpakdrVHgyMW8xM2xHbmpFOXZMQzNWWlkyUWo1TXBGWjdWVlEzWXlvMHkwZTFkMjExd0RETXgxZUdFMjcvYkN4VCthdkV1ZVc5bVhOZHRmZWV1Y3ZudXNSWmNyZVFxZHA3SHRXZmFuVFFzVFJKUVdZbVhWdTFYN2RqZnF5dEs1dEhNVnZFaDAyL0twNFdvb2lsTnNVbXNsSzdsRk91WTZwVkFqZEdEeEVkS295aVRxUkczMlZzOFJCTGQzWllScVZWSTBVdkpKSTUwU09OQjFaMlBRQ2pnWTF5OWVWdTJxeVkzS3Z3dFczT2JwRkZjeVhMZWRnR2Y2R0RGMmV2bFIxK3FsMFBiMUdWMFJUOGxCKzJ2U2NmMGRCUi91eWRmNlRpYi9xbHVWTFVWVHRHMXQ3a1hMeXRhWGxzdHcwWkhyM0Z0cWdqQjY2TXJGZ1gwNjdWT3Radk1mUmphZmtUcTEwUytWUzVoK3FGVmVkR2xlbGZPaGFZcEk1WWtsaVlQRzRESTY5aUQ0MTV2T0VvU2NaS2tseFIya1pxU1RUcW1IMHBsUnc0dFYwMWFyTmhkSkZOaGJwOVNGSDMwcjArZ01FTjZnSmFqcTB0OTNuUDNWYXNXNjZrTnlZdFBvaTFQY2RFTWpxUnpuVWttcU1uVXNvVFBRYStGSkRxbGR6M0tZN1JYaHRCNnR3QjEwN0N1aTVSNmZ2WmJyU2tUSDVoenExajZOK0prTllvMTRGdTd0L1VsYnFGUFlWMitKeTIzanFpV3Awdkw3TVpRVTN4WVVTUng1Unp0M09BQkgwN0Uxajg4ZzV5akZkSkRuM28yNVZaclBGL2IzQ1Bid1BtSE10N2RMdldMWG9BYXU0dkxiZHVLVk5UamNqUHVUbHhJM2wvdDVZNG5JMnM4TWpESHl2dGtpSjdFMW1jNndZd3RPY0ZxaVRIelovUzJLWkN4NGZoSXZyYnowNGdpNmplZTljRmF1WDdyMnhMa3BVNGlYSDh4YjUrSVpqQXllbEpBeFFmQmdLMU1iTXU4dXVVbHdaWG5iVjFFN2ZjcTVxMEhvUTJ5Q1Job1p2aDg2NkplcTdUancxS3Y4T1ZTazVuanQvYW8rUnZaZldubE9zckh3ckNuelgrVGMxTENzN0VaUHl2TzIxemtyZTNoQmtFVC90ZFBnSzZqbDNMN2l0dVhDbzYxVnlWRFZRQlhISFZod0tBQTRGQmdxRHBUUVZCQXByRVVMM1E0NWF5dFpja2t0VGVRWTQrbm1MSlN3OWV5SjFKSVVqY1lXODRGZEw2YjVoNWMzYWsvRFBoMy9uOHpLNWhqUWNvM1pSM0tISHU2L1lGdytDdTd6TFdyM2txWmJqdHJaeU5oNzU5c2pTaTZLZ0NVSHU4Y2E2Qi9FZlBXdlFidCtWeEpTMTJsYmxIcHkxalpNN3NOYmR5T25ZVURtdkdyMjF5WnhtbWxoQWtzMk1rL1VlUmd3VDdFWWFyOGpWYWNtMG92Z2lqa2NxVnJJbTF3a3ZpYlJ3WGtTY2g0dFk1THRPeWVsZHA0clBGNVpBZnZHdGVWY3l4WFl2eWgwZEhjem9NVzk1bHRTNmVudkkvM1JqdUkrTXBsYmZYMWNMZDIrUUlYdVk0bjBrMC9zTWEwZlRHVXJPWkZ2cDBNL251TjUyTEtJU2JrM0g0N3UydEh2b2hQZTdUYnhBNmtpUWFwdTAxQ2J0ZEYzYWFtdmNKWDdhYVRhckk4WGhpWFhHVTFGN1ljV1FyZnM1ekdTQXdZalR4OHA2MVJhbzZHbW5WVkpyMmRSbDRyZHdudGE1TzhpMCtIN1RkLzFxOGc5Vld0dVczMkhxWEpMdTdIUmUxWHFLNXBJMW15dzJPaHQxL1BXOWp2d0dkZDRoM1hRNjBaSUNZNWlJYU9yRUhWRVV0R01KNHh1TlVMa2RTeEdSVzFoeHR4N2dXaTVYY2NmamJNM0NvdXBKbnVHYU5XNmRmS2taQS9yR3V5OUdZajIzYnNmOXpTSzd1TE9YOVRaTWQxdTNQL0FHOVcvdUlmS1hVMlludU1SaVdNZHNyR1BJNVBvUkNOZjlHSHdlZlR1ZXllUFhwWG9iazVhTDJzNGRKUjhUOWkvSDdha2ZtR3cySHhxWUhIMnk3dE4rM1VzVUpPcGxkenF4ZGozWTBtbEZiVUdPNlQzTWY4S3VETGpaNFNkV3RweXBQeWRGa0grYXZHdld0blpudC92akYvZDl4NmI2WXU3c1JMOXNtaXA4aDkzYmpFNXFXTkxPQ2ZHVzgwbHZLb2tiNnJXRjlrakVkRVRVNjdBZGRSMTZWcGNyOUVmeWNKWDNjMnprcXhWTlBhYkhudlYwOEtOU3NiaUdleWd1WVRyRFBHa3NaSTBKVjFETDArdzF4dTF3ckY4VU8zVjFDT0N6RTFYZXJKVXpvb1M3aGZ5MDYzQnlkQlNsUkVtc2F4cDhOSzAxSGFpcTNWa2RkUzdtK1hoVkM5Y3F5ekNOQnNhZ0pTTnovMVg3cm5OdC9xN1RwcFZ6QjJlYkhmOU5TREszZVc5dkV6YURKd2VoSkc2a1RuVU9XNzYxN3hnWExLc3BXMXBROGR6TE43K1J1dVBwSlBFVzR1RmpuU1lnS05HUVZqM0ZTVFBjK1VPTnl6Q1VYMEU3ZzdVeVphV0VxR2VWZFl5ZmlLNUwxQzNiY2J2UW1VdWRXVzNVMTdCY3J3UXRvaGtnTGU5dFYyRXVQaDhLMU1UUHRYWUpwbkhUdHVMSVhsR2VISjhoYldXT0JhemdjUExQcDBPbndySDU5elMzQzA0SjFiSjhheTI2akhtM0JNZHlmSExiWExNalJqeXNEOEs0VGwvTVpZODl5Tk9kdFNDY0J3RnRnTE5zZGI2c3FucSttZ3FYbXVXOGllOTZCaVdMSlpDM3NMT1M1bWNLc2FrOVRwMnJPc1daWEpLSzZSelpnL0wvZG5LNVAxclMzVVJXNEpVTjRrVjYzeWIwVGJoRlhMajFGNWU1YWxWdzJIbk1iMzh5RnQ1MURHdDY5QlE4TWVDTCtOaHVNZDFEWVJYa0pwQ2kwaHJEcUtBMWh3S0FLaGd0Tm9DcHpScXlsV0FaV0dqS1JxQ0QzQm9jQkdmelJYUEE3MTJDTkx3dTZrTCtRRm14MHJuVnVnNitnemYzYTd6a25PVmVpcmR4LzNGOGZ6NnlwWnZQRmxSLzdML3dDMzhoL3k3Q3BuTVFseFpGWlo0eDZ0czZFRlpFSTdBam9kUjJybzVJME0zSFY2RzZPclhBenppbkpjMXhUSzNmMFZpMlFzcjRicm13M2lKb3JoT25xQXQyM0Rvd3JENXJ5aU9XbHJ0bEhwN0RuTE01MnB2YXR5ZkZkcFo1L2RiTDNFRXR2ZWNUYVMxblJvNVkxdTR5U2pEUmhvUnAyckhqNldsQnFVYm5pWForWmFsazNHcU8zbyswWmUyaHc5M2g3L0FJbmY0NzZadFhraVNWVldXNHRXYnlzWFg4VWtKNmJnZW5RMTJWdXRLUGlUOHFqQ1Z1VmljYWZlZ3R6eE85T1NuVEwzYnptMFVSNHU3aVlwTUEzbU03NmRQVjdJZkE2Zk9wYmw2Y21tM3FqSnMrbkxOaDNJTlZqTGgySXQzc2pMT3MvS01MZHVKcm1DOVc3TXlnSXJyY1JxTmRuZ2RWNjF4M3FXMDUzSXpmVG9IQXRMSHJhWENKcERXcFJ0UHlWeDhyVkdheW5VZTJVdnArVTlxdDQ5emJveUM3R284WjBJMTFxM0tTSUVtSnJkb3JHTUh2VVN5RW5RZTdmU2NldldnM1VSVHVYMmpKbDdHOGVhUzF4MXdoc3NyY3drQ1FSbHc4U3E1LzB0ekZsOVRRN2RmRHVPcTlJNXl0M1oyWExiNWxOditaZmtjNzZreGQ5dU4xUjNiT1BjTFNHSkpseFdCc1VqZUtQV096akJNZHZBby8xSmlPdmdUOFdQM212U0UxQ0tWVGhKSjNKT1NYMiszRWhzampzZGlNRmticWFScFpwaHZ1THVUUXlTT1dHMVFCOCtpb3RPbnRoRnVUNzJDRGxPU1NYY2hYZ3RxWWNHWjVPbHplVFBQY1IrTVRkRVdKdjZTSWlnL092Q3ZVdWYvS3pKVFgwclNQY3VuMm5yUEpjVldNYU1lbmkrOFR5bnRydzdMNVU1SytzUzl4SVEwNnJJNlJ5a2VNaUtRRDI2L0h4cG1INmh6YkZueWJkeWx2NWR6NkMvT3pGKzB1RVVJS3JHaWhWVUJWVURRQURvQUJWQ0tjZ05wRDZQSG9GNmpyVjZHS3Fha01ybzZUR0tpYmdPdFc0NGFpcWtMdjFaRzM4dTNWQjk5WjJUY3BvV3JVYTZrV3hKT3RaemRTMGdwcEJDc0FSb2V4b29KVU9TOElpdkdhNnNmMlZ4M0srQnJwdVQrb2JtTTlyMWlZbk11VFF5RlZhU0tUQisrY05jdkZjUk9pNjZodENWcnRiWE5yT1JyRmszSjNjeFliSkU3ZytVU1I1cXprSkdtOEtmdnFsenl5cjJPMGFXZGsrWkEyZktDeE5rdHpMYkNjc0FkQU5UMXJ5cXpLYWxST2hrU1NvSHdrOXRKYmt4Vy8wd0hkU05LYmtLVmRYVU1Uc2h5WENXSVlYTjBpRmZ4S1NOYWZad2IxejZZdGhja1o1blBldXdzN2lTREhXNGwybnBKNEd1eTVkNkl2MzRxVTN0UWttK0JuSEp2Y0RPNTVuU2FVeDJ6SHBFcHJ2dVQrazhmRXBKcmRNZkczMWtCWTQrNnY1aEZib1c2K1p2Q3QvSnlZd1ZFV3JObVZ4MGlhSzBNZGxndlNrSVZrVFQ3OUt3SHF6b2J0TGRoMTZFWCs0d2x6QmFyY04rRTlxOHd1WWNveDNHVERKVXBVSThWU1pZRHFhQUdLcVJTcU5aRVpibTNFTVBQOVBrOHRiVzF3TzhMT0M0KzFWMUkrK3JkbkF2M1ZXRVcwVmJ1VmJnNlNra3h4RHlyalUySm55OEdTdDVzZGJJWHVMaU53d1FENGdkUWZsVEhoWFZOUWNXcFBnTCtUYmNYSk5VUlVsK281bmlwTS9uY2wvdy93QUI2L1QyNk9GbnZGQjI3cDVBZktyRWFDTmZNYTdubFhJYmRoS2MvRmM2K3J1S1RrN3kzVGRMWFZYajN2N2kyY2Z4UERyUGpFRnh4OE9MQytIcjJRM09SMTBCQ281T3dkT3EvR3QvYWtqV3dIMFFWSUVQbmVOMitTQWtpS3dYSVBXVUtQT0Q0TnBvYWphTGQvRlU5Vm95dlhIRE12RXU2TXh6L0pTVlArTFNoUXB5d1pyaHFRMTF4ek95VHdHMWhsdGNuYnlDU3l1ZHAwUngwOHhIUW93Nk1QaFFvVko0dHh0VVRVMXdmMjZDMzN2MXR6ajdXL3ZMVTJsMlYyWGR2dUQ3WEJJNk1PNms5dmxSWmV2S1VvcWNsUjlKQThjNURIeGozUnRybTVQcDQ3TndwYVR5SDhJZlhhcEovb3R0KzZzcm11TjV0cDA0clU1M0tmbDMxTG9rajBCTkNHSHpyaWJrS29zeGxRYWJTRHBWSnFoTlVFbHRPOUJ0aUVHMVZ3M3dxQjZPbzlhajlIMVVWZWpPcUs3UTB5TVVjc0RSeUtIamNiWFJocUdVOUNDRDRFVlZ5Sk5hcmlpVzMxRVRhWVN5czBaYkY1clRmcVhNY2hKWWtiZFc5VGZyMEduMlZzNC9xelB0L3IzZjVrbVpWNzAvaVQvUnQveXRvSStEeC9yeHp5aHJtZUp0ME1sdzNxQkNQRlU2SXYzQ3FmTWZVV1prNlhKK0hxV2krQlBpOG14cktleUdyNmVMOTRYSTI0Z21rekdOaTBHZy9lK09UOVVkQlBFUGwvN0Q0VlZlM0loL1V2dFFVSlN4NTBmMHNkMjAwTTBTVFFzSGlrQVpISFlnMW1wT0xvK0pxMXFxb21MQ0xxQ2ExY1NCVnV5SmkzdDk3YTZkQlcxWnRWWlNuT2d0ZGxZNGo5bFRYMm94RzI5V1ZDOGZmS2RPMnRjbGtTM1NOaTJxSWFrVkFTVkFOSUlVMFFobGlaL3NxU01Hd09WRHA4ZGFUcHRtaVZ3ZmlOYXQyMjRjR1J5MUt0eUhodUlGbkxjMjhmcFR4amNqTDAwSXJUeHVZWEhKUms2eFpEY3Nwb3JsdDdsOHJ3N1JMY1IvVVdpcm9wMDE3VjBUOUpXTDBheGUyVElibUxPQ1Q2Q0R2dmNya3R6ZFRUUTNKaGpsUFNNZUZkRGgranNXTnRLYTNNalZzcnQzZjNsM0swdHhNMGp0MVlrbXVseCtYV2JVVW94V2hJb0lZVDNBVG9POVNYTHFqb2lPZHltaURXVWR4ZVNCVTZJUHhOVkMvbk5LaUZhM1RaYjdTL1hHV3UySUtwMDZueEpyS2MzSm10L0tWaUZSbmNYOTNldHV1Sk5JL0JOYXYyY2RMV1J3WE4vVU4yKzNHRDhKdGMyWXVwcllRTWZJT3dyeUNlVktVZHJPK2pqeGpLb3lGVkdUaGhUV0Fybk03N01IOTE4ZndVZ2h6Zkk3dExDMHVEMTlGRzZ5emYyRnJZNUpneHYzYXkrbU92NEdaelBLZHEzNGZxa2Fqd0QyKzluc0JrTHZpdU90YlhKY214OE1VMlpudll2cUx0L1g2aVNTU1ZXSG5KMTJxZWxkNmxRNU51cFR2NGdQWXZqWjQxZWN0NHhZeDQvSll0UmQ1Q3h0eDZkdmUyOEozeUxKRW1pNzBBM0tkUERTbndhVWxKcXRCOEo3WFV5V3hneGNHT3RNdEhHMDRsSW50NEhjbUNPU1FhdExIRWZJcnNOTnpBYTExMXV6YnI1aVdyT3N0d2hHS3VKVnI3dThZTmNaaDdackJzblBIaVBWbGxpeDhCOUpWRTdtUjBhUmYyaFhjVDAxRlZYZ1FjM0o4RytCWDhXcTNOUmI0TFQ0OFNhNHZ6bURDNDU4VGxFdXJtUzFiLzRlOE1UVE5KYk4xVldic0dqUGw4eDdhVm1Yc1NVWnVNVTJ1Z3U0bk1GYWpzbW02Y09uVDhpNThjNUZhNTZ3YTdnamtnYU9WNEpyZWJUMUkzVHdiYVNPcWtFVlZsRnhkSG8wYTJMa3E5R3FWS09sQ1JrdVlJbmlqa2tWSG5ZcENyRUF1d0JZaFI0bmFDYUJQS1NUU2I0Z1hVSW50NUlUK21wQSszd3BBdVEzUmFNODVSam9iekMzZHJjcm9WWGNyZnBSeUllaktmQWlvMmpuTXEwcFFjWkdtK3puTmJua3ZGZlN5QkJ6R0prK2l2Mi83ellOWTVmN2FkL25YRDgweGxadTBYMHkxUm4ySnRxajR4MEx2TkhyMUhlc2U1R3VwWml4TGFhaG9QcVZybC9NYlBqNzIxczBEM2Q5ZGhuaXQwSVFDTkNBMGp1MnVnMVlEb0NUV2h5M2sxM05rMUJwS1BGc3M0bVBPL1BaQmE4ZTVGWnUvZGZKUnlMOUxad1JSQWErbGN1ek8ybmZ6SVZDL2tOZExqK2o2US91WFBIMkxUNG15dlQwdHRaVFVaZFhSNzlDMDhWNWxZY3NzcnVlenQ1N2Y2T1JZWjFuQy82aklISVJrWmd3R3RjbnpUbDF6R2xzblNyWFFjL1J3bTR5VkpSSlVSdFdLb3NscWMwYkdnNHNTa0p0REtHV1NKakhOSHFZNUFOZE5laEJCN3EzWWp4bzIyNE9xR1hZS2FveU90d2xoZWx3bm8yTXJnM2R1TlNMZVYvKzBUNHd1ZnllUFd0SndqZXBKZlVVYmR5Vmw3SmNPZ3VrTnFSdDIrUFlpcjl1dzBHVndsb3lzVVhYd3JZZzFDSlVlcks3eVROMjFwWjNGMWNQNmR0Ykkwa3pnRWtLdmdBT3BKN0FEdWF4OHE3SzdOVzRhdHVoY3RSVUZ1bHdSbmVONTVMZFppMHNieXcrakYrNVMzUXVXbVE2RXFKUnB0REhUcUIrSDRtdGptdm91NWlZbm55bW5OVWJqVHI3ZXN4T1crcXJlVmxPekNEMjlFdTdzNmkyUEdSWEVPSjFpWWtWTk1vUFRGb2JVdDFidDhLc1c3TmVJeVZ3WEtLb3ExdFNJNjFHODBxcjl0UlRta1NSaVJ1UzFsdEprOENwNlV5M2M4U1pJMW9VS3h1TWRKQWJXY3FYVml1MDE2emh6M1dvdnNOUEZ2MjVRVVcxVVp6OEh4c3ZxUEdTQy9WZE93clFqa3pYU0tYTExicTBSRjN3a1cxc3p2Y2VmOUVWTytZVEtWM2x1eU5XeUx4L0dEY1hTd0Q5cks1Ni9BQ3NqbVhNL0xpNU5tWC9BQjBuMXMwSzA5dk1SQmJJbWhENmVZZytOY0hQbnQ5eWJUTGNNV0tSMG50N2laQ0N6dVFPdzFweTU5ZlhTQzdoUnVLa3VBdEZ3ZkRSNmFxVzArSm9UNTdreS9VVjdmSnNlUDZTZUZaRE5ZT0tEQUdGTkFWWG1kN0pnTTV4Ym1ucE5OYThkeUFreUtvQ3pMYTNDK2xJNEEvVkJyb3ZUZVFvM1pRZjZscDdERzV6YWNvS1MvU2VtY1ZjWVhJd1I1ckdOQmNSWDhTT2wvQ0ZQcXhhYXA1eDFZRFhwcjJydERtaW4rOW5KWU1ad2EveFVCRTJkNUJHMkx3MlBYckpOUGREMDlRdjZxQml6TjJBRlIzYnNiY1hLVHBGQlNyb1pGbnZZak5Zdmpsdkhnc3ZKa3Jtd2lqMXhOeWtTTEx0VUIxaG5RSVZidnMzNmcrTllPQjYvdVJ1Umhlakh5dXRjVXVnMm9YN3FpbHhpdWdxTm43YmU1bDQya1hISHRoK3ZlM01FQS9JclNOK2F1a3YrdXVYdzRPVXU1RWp5dXFMSy9MSGVXMTVlV0Y3RUlMeXduZTF1WTBjU0lKSTlOZHJqUU1PdGRMeTdQaGwyWTNvSnFNdXNtdFhkNnJTZ25ESmxiU2E0a3htU21zR3VncG1XSlkyVm5qR2l1ZDZ0NGREcDNwWDhLTnlXNnJUSHhjNHR1RW5Hb1hMWm5rZVl1b01wY29MYTl4SVE0NjNSdkkwMFpEU3kvWk50MmdlQzFTdDh2bHNsdStybyszYUs5ZnUzV3B5MGxEZ3UzcGZ0NGR4SjhrNTNmWnlPSC9oNTNoczdiMDdtU1hxclQzQ0VQOEFURFhUeUllam54YnBWZXhpU3V4YldsT0hheXhsY3dsZVM4dlNLbys5OVg0akxsUEw3UElZeThodEZtaXZMMDdQUmxqWkdSR09zaDNmaDhxandOVlhibFdqVkNubVpzWnhrbzEzU0xOL0RWOVUyVDVLN3lGMFZMUlNmaXdENkZ2NlczeHJsUFU4YU9DNmRTbmhON3BWN0RmbzFMRHRYTnhWUzIzUU9MUWs5cWQ1QVBNS1o3bUxpV3RiSEZYTVZxMlV5RHlmdTZlOVpvbzdZUnFESmNOSW1qZ0xxQUZVK1ppQjJyWDVQaVhuZTNXNU9PM2pUNUUyTjVzcmk4cFMzclh3OFV1c3lyS2UxK1VTMk56YWNndDhzd0g3Y3hYRVNzTmZGWXlxNmZjYTdtVjNyM0wySFIzcnNrcXpkK011bHVLK0ZGb2Evd0MzSnhyY2FpczdUSERGUFpIMDdpeUdwRzl2TjZvYzZseEozM0VrNjE1N3piRWxDODNLVy9kcW45dW81cTVGUWxTTDNMci9BQjdTeG0yQThLeDNaQnZBRnJxZE5LQ3NWRDVnYzQ0NmE2VS8rR3h2bkNrZkhvYnVCaElOcmtFSSttdWdQY0VlS254RlhjVEJxbVY4aTRub3lWd3VKa3NiQ09DV1QxVEhxRkovUlhYb29QanRyWXNZKzJPcFVjK2dUeWMvcHJzWDhScWxuWHRxb2l4WWhVcVhJc09NdmlMckhtWnJkcHdwanVGR3JKSkc0a1J0UEhSa0ZaZUprdXhlamRTcTR1cFp5TEt1MjVRZWlrcUZkNC83ZkxZWlpjemxMMXNqa285M29IYVZqalp3UTBtaEpMT1FTQVQyMU5iblBQVTkzUGlyZTNaYjZ1TmZ5TWZrL0lMV0UzSlBkTjlKYVdoTGRBSzVWMjZuUktSeVdxcjFQVTA2TmxJVG5VR1NWRUhlbnltb2lTYkdVMXl6ZEY2RDQxVm5lYjRFMFlVR3g2OTZpSlJPUWFvMnZiUTA1Q01wTUdPZksza0xFcEw2aEtudFh0dnBxTUxtTEZTNG5sM1BzeS9ZeWQwRzBoOTYxOWpsRHRKNnNBOEQzclJ5T1c3VldKczhtOWRUM0tOMWFFUlBtYnJLM24wMFVaM2s2SW8vbE5ZR2JlV1BHc2pyYmZPbzVYMGw3NDN4MlBHd0NTUWJybHhxN2ZDdk9PWTh3bGtUL3BMVnUzVFY4U2FOWnhPRk5PUVFob29JUVU5aERpbWdHZWJ5OXZoOFBlWlM0QmFHemlhVjFIYzdmQWZiVXVQWWQyNG9MakprTis2cmNISjlCUjUvY09mUHl3NFMzalRqU1gwZWwzbE0wRldKSTM2RllWUGtsZGxQVGNRSzZLNzZmdTRhODI3R1U2Y0ZGUDR2b1JtWHN5VWx0MjdLOU12dUx2Zy9hWVlLeGhpNHJ5L05ZbTJLamY4QVRYQ1NRU3NlcGtFWkJqVXQvUnFoSDFQa0p1c1l2N2ltOEMyMTBpazNBckRCWGMzS2YrSWN2TG5vYmVSWHlNOHNOMWNTSnB1S1JyTkZJRTNhYWVRQ3E5M25GN0tleWNZdUxmRFZMNE1raGdRNktqcmczdTN4aGVMNDhjbjVHcHowa1prdnpkeFNRTWp1eFlSbjlraWVSU0Y2VlR6K1UzbmVrN1Z2KzMwVWRmYng2U3ZidWJWNHFsK3cyZHcyYXMvcmNSZXczOXB1S2V2YnNIVGV2ZGRSNGpXc2E5WW5hbHRtbkY5cFBHU2t0REV2ZWZnVVdBbGs1VGlaMm1HV3ZWanVNRzUxa2x1N2s5R3MyR3BMTWVyUm53Nmo0VjZMNk85VFhWVEduSGRDSzBhNk84aWQxMmRlTVgwRTd4SCtGM0s1S3pqdmVhNXVleGxtQWNZYkZGVUVRUFVMSmNNSExzUEhhTlBuWFkzcys3TjhhTHNLTnpNdVNmR2k3Qnp5ZitGYWEwc3BMbmhuSUxwNzJNYmt4MldaWm9KdEIrRDFWVkdqSjhEMW9XczY3QjhhOTRMZVhjaStOZTh4T0Y1NHBMbXl2TFZyREk0K1JvTCt3a0dqUXlxZW8rdzl3Zkd0L0d5STNJVldsT2cyYkYrTTQxUkdaQ2NwYVAxNnY1Ujk5VWJrdENyY2Voci9BUEREamllUDV5L0kvd0Q1bkllbXJmRllJZ1A1V3J6NzFCNDc2WFVodUs2S1Q3VGRiZXkxMDZWbjJzWWZPNFNFZGdOTzFhRU1VcnU2VVBuY011RTV0eDNrc2xyYjNXTlNHNHgxejlXZHNVTHpGWkkzTGtQc0w3U29ZanYwOGEyT1d4VU4wZWxtanl5bHh6dDdwUmxPUGgyOGFwMXAwVnI5eFVjN1p3QzN2SjhoaGNWZld5N2kwbUduQ3p4aCtvMFVIejZhL0N0VGZUaEtTL3pjRHJJNU95S1VidDJEcHd1eDhML0FQN0lXRXJQbUw2MnVKcmpEYlliVzBhWUZmMnlGM21WZGVoMmJsVWtlUDJWemZQcGJuR05QRXExT2E1aGYzWEtOSlNqeHAxbW8raVNlMWM1NVpUM0VkbnpjZWxhWTJ5bWFISlpPNWloZ01YK3FzUWNOUEl2UnRBaURxeEdncm9PUVlFYmwzZGNqdXR3VGI2dUdpOXJNcm1tVEtGdmJCMG5KcEw3eUd6ZVk1Zmk0RWpTL3RiZ3gzY0ZxaGEzRytiMVoxaTBkdzRUWHpkMVVWMU56a3VJNE9TakphVjQ4TkRCdGMyeUhjVUh0ZXRLOVpvNndySDVSMkZjdEMybzZIU09WUXQxT2tjWlA1QlF2M2xHSVlRcXlCbkRTT1didWE1NjZuSjFaZmpvTkpZdEtxVGdUUmtJZWt4UFFkS2kyajZpZ1ZWRlRKSkliVWFYTSttb1g4dFZydDNxSm9SSTJRc3gxSjFxakp0bGhCZGpHaW9ocWNZOUtlb2lxRVlDa09LSHkzSHcyV1JYSWVsckU0MGNnZGpYb2Zvem1zYmJkdWJPTDlWOHRsY2lwd1dwQU8yUXpNd2dzNG05UHNYSTZDdXI1dDZoczJZOGFzNXZsWElMbHg2b3VuSHVMV3VMakRzQTl5MzRuTmVVOHo1cmN5cDFmQTlNd09Yd3g0MFhFbXpXV2FJUTA0SVUwNElRMDVCQ0NuTWNHRk5ZMHFYdTJ6THdISTZkbWFGWC9BS3BtWFd0ZmtLVHpJVktITXY4QVpmZXZtUTExZTJDUktrN0s4VGpRSVFIQkduaU90ZTlPU1JlbmNnbHJ3SUtISjVERlhyVDhidjdqRUlkUDJNTGEyN0h4TFc3N28rdnlBcm51WThndzh1dStDcjFyUm1WZHR4M1ZoNGZsN2l3Mkh1MUxDd0hLNHRtdlJjcGFobmpKL3dEZVJIVjQvdEdvcmd1YWVqN3RqeFdYdmg4U1dHYjVhcGNWRjFyNzBYcXd5VnBrYk9LOHRaUmNXc3czUnVPb0krK3VSdVduQ1RpMVJvMG9UVTFWYW9SNGJ5K1BpTVV1SHl1SXZObVF5OHpXMlR0aEZKYnViK2NlaUdBZFhRalVLZkw0VS9Ndy93Q1MxT0U0K0cycXhkYStGYTloZ1g3VTdjNU5yd3VYSHZMTExBbVU5L2VOWSs3RysxdzJKdThyYnhOK0UzVHlyYmlUVDRvdmI0VnRlanJTOHU1UHBja3ZnWm1hL0VqWDhwbE1kaXNkY1pMSlhDV2xoYUlaYm01bE8xRVJlcFpqWFpGSTdGWlhHNWZHMitUeGx3bDNZWGFDVzJ1WWp1UjBic1FhUWp5NS9FNWk3WEhlNk5oa0xjQkpNMWltRjZvL1NlMWsybzUrZXh0djNWZjVmTnFUWFdpNWhUYWsxMW94ck56YklGUGNEVnRQc0ZXcjdvaXhlZEVla3Y0WjdPSmZheXltVWhudWJtNWxsMDhHTWhYUS9jQlhDNTYzWDIyTXN5OEJzZHRHTlJUck1FTm15UlJBRnJTakhRck5sTDkyK1RmOE84Umx1UDNhbVJXN2tGb3l6cVh0WWc0SjlXNUEvUUczUWZGdE9vNzArM1pVNUpWMjlwYndiU3Uzb3djbGJxL3FmUitmVWVaSmNQZU5MSGV3VDNVSm0xZUF4cklxdnFmK3gyZ0VycjAwV3RwdTIxUnlUcDFzOUl1Unhia0tTdmJveDQxbFUydjJhd1B1SGhiRnJEa0NvTUMwQ3pZdUo1QTl6YnlNMnJRdU5vSVVxZDJqRTdUNDF5bWU3TTVWaHhQUDhpVnAzSDVTYWgyL2QrWnBVZHR1SnJPaFlxUXVaRDVqajE5RmR6WnZDM1QyMmE5RDBRamFQRE1pYXNzUkRkWTl4L1NRajRuV3Q3bC9NUElTdFhFbmEzVjdWMjl2Y3pNek1Qelc1d2JWeWhUdjNWbU9iV0YzRkZicmo4YVdDeFhsNnNxenRLQiswS1JEYi9wdjAzRWpVOXEzOHJtMWl3OXYxdjhBcHBUMjk1aFl2S3J0enhQdzk1cHRxSllMS0NHNG1OeFBGRWlTM0REYVpIVlFHY2dkdHg2MXlGMjZtMjFvanFvUmFTUXp1aTBqYW5zTzFaTjl1VExjTkJzUlZZa0tqeVRsZDRNa09QY1h0QmxlU1NEYzhXdjdDMVRUVXZjTnF1aDA3SnIrU3J1SnkxM3RYcEg1bVhuODFqWThFRnZ1dm9NOHpYS1JuUlpTM3BGcGs3RlpZTDIxU1JsVGR1Vmt1SWREcnRjYWo0cVJwV3BoWVN0VGxGcXNYcW45eHlQUGViVHYyTGQyMUp4a3BOU1M2eTA4YjVsSmNQYTQ2L0c2U1FDS0c3QjFMdHA1ZlVIeGJUdVBHc25tZktIQk81QitIcTZ1NDJmVDNxcFpNNDJMc2FYS2ZWKzVycjZtV3VTM2R1L1FWemtyVFoyNm1odkpGRkVwWnlGVWZwTVFCK2VteHNOdlJWSCtaMWtUTHlYamFTbUk1UzBFbzdwNnlFajdnYXR4NVpreVZWYmw3aU41VnRjWklYaHZMUzVUZmJUSk1oNmhvMkREODFWTDFpNWErdUxqM29udDNJeTRPb0ROVmVwTWh2Y1c4TnhHWTVrRG9mQTArRTNGMVRFNHBxakU0TE8xdDEyd3hxZytRMHAwN2twY1hVVUlLUEJCelFSSUZORkJDR25JSVUwNElRMDRJbUtld2h4VFdBaStXNFE1empPUnhTblNTNmhaWWlmQ1FlWlA4UXF4aFpIazNvejZtVjhxMTVsdHg2ekZMVElwOUwvNXI5aGRRSDBidUJ1akpLblJnUjM4TmE5MHhjdUYyMHBwbVhhdkp4cTlIMDk0V2JPMktLZGpHUi9BQUgrV2pQTGd1RHFDV1RCRUZlMzl4ZE9DNExFa0xIRWcxSlp1Z1ZRTzVOWmVSazFXNlRwRkZHN2RjamRQYnJqbHh4L2k4RnBkYWk4bmRybTRpMTFXSnBOUDJhK0EyZ2RkUEd2S2ViWml5TDduSDZlQ09qd01kMnJTVDR2WHVIUExyNkxHMjJNekZ3QTluaWNsYlh0MUJ1VlhsamlKOHNXN28wZ0xCZ3Y2V21sUVljSE55Z3ZxbkNVVjJWNit6dEkrWnArVlhxYVpidWR6MzJJeW5IZmMzRVc4bDNIaFZkTXRacXBXV1hGWGlneU1FYlE3NFRvKzAvelUvd0JMNTZzWHBXWnVpbi80bCtKejJWYjNKU1JyRm5lOFU1dnhjeVc4a0dZd0dWaEtTTCtLT1NOeDVrY2QxSThRZW9yMFF6aFVEalBFT09CZGJmRDRERlE5TlNJNFlZazYrUDhBOUpOSVI0eDl6L2N1dzUzenU4ejBMTW1NdElWeCtIaVpHOVJvRmJmSk82Z0hiNmpIVWErRmFPR294aTVTZXZRVzhhZHVDYmxKSjhFVVBMM3RvOGdCbVJvaXUwRldCL0Y5bFB2WEl2cDBKYnMxMW0yL3duY3FsVzR5L0VuM3pXNmdYOW5NaWxvMFA0SkZkeDBYZDVkTmU1cm11WldVbXBJaXRPamFQUzhMYUdxTnVRK1NIOFVnSXJSaE1na2pwZ0dRcVJxQ05DRDJJcFhOVUJFZElwVmdQQWZoK1gyVmxYRTB5ekdnVUFtbUpEcWppMWo4eDFGV2NlT3BGTm5YYWRRQlJ5WWl0c2FrSFdxZENVSzJwK3ltU0NoSmsxNlZIS0k5TXpEbkh1Rko2MDJGNDNNb3VFMVMreXcwWklDQjFqZzhIbCtmWmZ0cTNpY3UzUGRQaDFkWnpmUFBVVU1aYkxldHo1RlZ1T1MyV0g0MCtFd2xzOW4rOGpzeWVSa2N5WGQwN2pWd1hBRzFXNjYveTF1TjBWRWNSL3lVNXBxQzhUMWxKOFgyZGtlejNtZTVlU3psVVF4TVV1clE2Um5Ud0kwSTE4UjhhYkVkaXhrblYvVExpWHZIWWEyeG1Dc3VVU2NqdGJMR282U200dVkzRThjc1IwYU5ZOXpxN2E2cm9POVo5N0lsTnl0T0ZYMzZkNTFQTCtSd1U0WlZxNVNLL3A5NkxUYThqNW55NjRDNEcxWGp1RWNIWmw4cEdYdVpSNEdDMDFYYUQ0R1EvZFdGT0ZpejlUOHlmVXZwWGUrbjJIYi9BTnlTcWx0ajhmY1ROdDdUOFhkbG16c2wxeU83QjNHYkpUTTBldjhBUnQ0L1RnVWZMYlVjdVlYZUVLUVhWRlUvUDRrWGxKOGRlOGVaUGlQQWNmaTdxNXVNUGpiWEgyOEx2Y3NiYUZGQ0twMU83YURyNGZHaGF6TDFhSnliYjYyS1Z1Smx1TDRqaEpNUFkzRWx1OWhmTkNqbWUya2UyblVzTlFHWkN1cFVIUTdoOXRlcXZsOEpXMHB4VDBWU3dzT0tpbTFyMXJRY3BmY3J3NnRKYjNBNUhqbzlSSkRKdFM5akEvVmRCc2wwK0JBTmN0ekwwaFp1TGRhOEV1ejhCOGJsMjN3ZStQVjBsbHd1Y3gyYXgwZC9qNWZVaGZVTXZaMGNkR1IxN3F5bnVEWG5XVmlYTWU0NFRXcStKb1diMGJrZDBSNmFya3dRMDRJVTA0SVEwNUJDR2lnaFRUa09FaFQyRU9LYXdCeFRXTktoekwydnduSkpXdlVkc2RseXVndllkTkgwN2VxblovNWExK1hjN3ZZdWkxaDFmZ1VNbkJqY2U1ZUdYWCtKakdTNHpkNE8ra3gvSUxsN080RGFXOHlSSzl2T3A3RkpTUnA5aEZkblo1cks3QlR0VWt2aXU5R0hPMDdjdHMzUjkyajlwWStMeTRQQ1hDM2tTU3kzb0g3TzduQ1M3TmU1alVlVmZ0QTFyTHpwM2NoYlpQdzlTMExtTzRXM1ZmVjFzdkVIdUZDVjg4a0xINHNHUS9rckVseXpxcWFVZVlkeEYzUE9vY2R5R1BrYzBOcmtvWUlWaWloZnp5V2JCaVRQYXBJZlRaMzFBYlh6ZkExWmh5N2ZhOHBPVVczN0pka3FhMFh1NnpPenJybkpUclZMbys5Rmx6bnVINnFHUnJoN3VYVGRvNTJSSnFOZk4ySFR4MHFsajh1VWRFcUlweXVHU3hacktEUFNYM0dMNjV3cXlzUzBtTmtlM2pubUo2c3Nhblp0WDQ2ZGE3cmx1SlBaNDIrenJNYkx5bEY2ZTB0cHcrVjVGUEUrZnl1UXppeEVOLzhBRUxoNUlGSStFWTBRbjdxNkhINWRGdnJPZnl1YnpTNkYzY1MwMzl2R01aTEZFZ1JVUUJRQUIwVHNPbjJWczNZTFkwam5iRTM1aWI2eksrVFd0dXQxS3lRb3JOQ1NDRlVIWFEvQVZnWDRxdkRvT3F4WnVpMTZUMG4vQUE1V0dMdC9hZkQzVnBhUjI5eGZLNzMwcUR6VFNSeU5HSGNucVRvdjJWeCtYTHh0TTZ1MHZDYVoxMTZWVUpCekFYOGF0V215T1ZCNnFnaXJxVlNGaWN0dXJWRmNzcGpvem9KcGJBR29vMktEbk1YVkZXcDR4U0dOaFpJdzFDY0V4SjBFVGExWGVPU2J3aldwcGtzY0ttVUQzRDVUanJNWFBHcFpMbTB1cit6SkdSdDEzQzM5VXNpTVFHRWg2b2RkZzEwb1c4YVZkM0duUVp2TU9hMmJMVnU1SnhjMXg2akNyVzZhM3RybTJDQ2U3c3RJWHRJR0JRZ2RCSkdkTmRyZzY2L3oxcTEwcWVjWm1MdHUwY2x0bHJ2NDFFOHJmU1JUUlA2Z1dCVTBOdHBxelBwOGZsVFhxUjQ5bE5OVTE2eUVzRXVzeGwzZ3g5azJSdnRRWllZejZjU0R3OWVidEd2K0krQXA4YlVwYUk3RGszSko1Rk5Ic1h4KzMrQm9uR1Bicm5FdCttUnlVT0l5VjliZExGYmg3ajZTeVR3V0NGVTJCdmk1MVkxWHllV080dHFtNHhmR2kxZmV6dnJlQi9IU3J0MDRMOEVhQ0xqa1dLWDE4MWdoZFFyMWVmR1hLejZmUDBKMXQ1Ry9zbGo4cXhMdnB1NHZva3BkbkQ4aVozcHkwUzl4STR6bkhIc3RISWNYY2ZVeVFuYlBBVmFLV0p2aEpGSUZrVDcxckV2MkxsbDBuRnhZMjNhM2RKbXZ1Rnk5czV5Qk1UYjZmdXpDbmZkalhWSkw5dENpSHdiNmRQTjhtYjRpdTQ5SDhyclhJbXV5UDRqb1cxdjYxSDUva1Y1NUdmWGVTMjd2cWRhNzVxcFlhcUoyOTlkV0V4YUI5dTRkUWVvSStZK1ZVcHgyc3F0T0xJOU0xZTRETXR5RzIzUzI4eEF6bG1vNlN4anA2NnFQKzFqNy93QklWenZQdVR4eTdUL2V1RCszeElWY2R1VzlmNmwxL21hNWJYVnZkMjBWMWJTQ1czblFTUXlyMURLdzFCRmVSenR5aEp4a3FORzNDU2trMXdZWTBFUENHbklJVTA0SVEwNUJDR25JSW1EVDJPRGltc2FIQnByQUdGTkFVejNjdGZyZU1XdU9BVXlYK1JzN2VQY0FkQzhuWDh3NjF2OEFwbTI1NWlYWVl2UDd5dDRzcGRSbW1WNGpKakwyV0MzbGtzWkFUK3dJM3drajRJM1VEK3FhOUp2OHN0WE9qYXpnTVBuVnhSVHJ1aU1UYjUyUG9ZcmU0SDZ5U0dNL2tjSCtXczJmSkpmcFpzUTU5Qi9WRm9UYTF6YzA4REcxaFNPRi9VS1NUYmd6TCtEWFlPeW5yUWh5YTVSMWExQmQ1MWFhMFRIa21OdTd3ZzVPNjlhTUhYNldKZGtPdjlMdXpmZlY3RjVSYnRhOFdadC9tczU2UlZFYUR4ckNXdHRqMGtsdDFFMGc2SzRCMnA0QUE5cTZYSHNKUjFSeXVYa3lsUFI2RTROb0FVQUtvN0FkQUt0SkZGc3JPUjUzaGJlYTVzTGtTdzNNVWtrRTI1TlVqR25ra2tjZEZTVUh5VlJ1NTBJMWk5SHcrM2YwR25ZNWJjbHRsR2pUbysvclM3VjBsZjhBM2JQbjdTR2EyaE1jemc3VmtPbjdJa2dGajRhanpDcUN0TzZsUkdwSzlHdzJwUFQ3eWE0Slljc3cwVjNpc1B5YTl4ZDNpcFZXU0FGYml6bFNWZlVqbFdDVWVUZHFRd0I3aXNYTDVmR00zR1hGSG9YcC9IdGN4eGxjZzNDUzBmU1hUQSs0dnV5K2N1c1hObXNITFo0eXliSTViTFhkcEtpVzhDUDZmbVdCL05JVCtqMHJOdTRkdURWS3RzYm40c3NlYWh1VW1hN3dubWMrU3ZwTUxsVGF0azF0SWNsWTN0bDZpMnQ5WTNHb0U4S1MrZEdSaHRrVGMyM1ZldldoR0tTTTl0OUpjNklEdFRTcUlKUEtJWUpabUJaWWtaeXE5eUZCT2crZlNraEdJdHpEbWoyVnZ5RVpzUGMzMENYMGVPaDIvU1cwVG5jdHMwWlh6c0UvRXpFa240VnkyYnptN0Mrb3hjZG5WeGZWNHUzdUtFOGlXN1Ewckc4OHhzM0JMYmx0NnJRMjhzUU1rTVNtUnpNWlBRRVVTanE1ZVh5b1BIVVYwcXVMWnZsb3FWZllYb3VxSkRqdko4ZG5ZSlh0bGtndUxjZ1hObmNBTE5FVzEyN2dwWWRkcDdId3FMRnk3ZCtPNjI2eEpKUmNYUmt2VmthVVQzWTRzbVR3aHlWdGErcmtySFR6SUNaR3R5VDZpYUQ4V211N1Q3ZEtVZEdZZlA4QUI4K3czRlZ1UjFYWDJubnl3NG5kNXZrME5salpGdDdpYUs0YUJ3U1ZZd3hsL1NrUDZPNXZ5ZDZkZHVxRWFzNXprK0s4bHUxTFNTVmRWMGtud2pnTmhObjhsYzg2ZVhHWXZFRzBodm81bUtOSlBlc1ZnakxxU0VRRHpNd1BZanNEclNpOTY4R3B2NEhKMm4vY1hEb0xKeG5qSFBPUFlwTU5iY2JqbGdoU1FwbUlicTJheWJZeFBxeW1MOXQvcEFOMVF1eDZWYVdSRkk3akc1bkMxYVVkdXFSWmVKOHp2TDdpZGxkUEZDazl3cGVLV0ViVWFFbjluSVVMU2JYWmRDeTdtMFBqVTZWZFdYOGJHbGRTbmM2U0o1QnpYQ1llUlV5VjJ6WGN2bWp0SXcwMDdEOVlScHF3SHpQU3BJeGJkRWk3Y3ZXN1duVDFJenprR2F1T1JaZUc5dG9wc1BiMllLeFhTYVEzOXh1R2pLN29TVWhIZ3ZjbnIwcTVEbFVieS92UnJIcVpuWHBlYkt0TnFYdmY1Q050RkJiUXJEQXV5TmRUcHFTU1dPcEpKMUpKUFVrMXMyN2NZUlVZcWlRWXhTVkVLK3BUd2ljNTNJZmlPb3FLN0dzU083R3FHdnFhZ2p1RDBJTlV5b1RYdEhuZERmOEFHNUE0aXRIYTR4VE9OTjF1emxaRVg0aUtYVVY1aDZxd1l3dWViRGc5SDNrL0xydEsyK2ppdnZOR05jbWpWQ0duSWNFTk9RUTdXczRqOVFxZG54cVh5cFVxTlUxV2czYWdpUVNGUFlSM2EyTjFjZytpaGJUdnBUNFdaVDRJaW5kakhpRWVONDNLT05HSGNWREtMVG94eWRRUlRHSXpuM2x1cmdyeDNIMlVwUytseUN6eDdHMnlJSWxQN1FkeU51dmV1dDlIWThwNUxhN0VaSE5MS3ZiYlRWVk42cnNLaHlLMEZ2ZDJlWGxhNXlWMUJNRGNQUEs4c3NzSjhzaUxxUUY4cmFnQUN2VnNyRWpCS1VVNVNUOXJYU1ovTXVRV0xlSzdlUEZSbDBkNE5ya0xTNXpsckJOWnRZWXk3Y3dSdTBva21XVnY5SXlkTmloaU51ZzE2MUJ0OFMzTGJGNmNkYTlGZWc0N001TGtZMk03c21wU1hGZGhiancvSGc2R1dVRWR3U3YvQUVWYy9pUjYyY3gvUG4xSWQyUEg4Ylp5YjFVeVRMMUJrSUpIekMvejFKREhqRjlwRmN5cHpYVWlUR3BQVHFhbUt4eDFIZWtJZ2N0eUhpc2Q3SmljamRwQmNFSTByTXBWQVRyc0RTNmJkd0hnM2hWUzlldFZjSk9uMjZ6Ung4UEpjUE5oRnVQRDdJbUxPTzFTM1UyaFZvRDFFa1pEaHZudUd1dFdMY1lwZUhnVXJzcE9YaTRsYTVObFRoT1EyTjdicVhseU51OW5jeEs2eGhnSkVXQ1RlL2xVbzgybTQrRlluT1VvdU11blg0SGVlaGVZenNPNnVOdWxmYndBOXdaSitGZTN0cHcxNDdTMTVSbVpXbDVTTFYxZWMydHE1K2lTNWVJK21aWFZ0WkRwNXU1NzF6MkpEZk56MW91QnVyV1RmejQrMDFQMmd2VmZOY0d1STRWa2h2OEFpTXRvakhYZEJKajd0ZlZLL282U21SUVFPdmxHdFFYRlNjMS9VUlQ0bTVWR0E2a0k2a0lwRjU3UGNadkhhSkxpNnM3QjNMdFl3T3FvTngxS0l4VXVpYW5zRDA4TktvLzhUanp2ZWJKZUw0RUVyRWExTEpkOFd3YjRHREF4UWZUNDIxV0VXa2NKMm1FMjdLOExJVHI1a1pBZXV1dmpyVjdKdFF1UmNHcXhrcVB1Sm9OclVMaE9OWTdFVDN0MUFYbHZjaXlQZVhNcEJaL1NYYkdvQ2hWVlZCT2dBN2ttcXVIaDI4YTJyZHRVaWg4NU9UcXlWME5XcURUaUtUUWlzUzhVdzBmSjVlUnJHZjNuTENMY25YeUJSMExCQittd0FCYjRDcysvSjAyOUE2M2p3OHp6S2VPbFBZWXR6aDVzeHhIbm9udHJxeGh4R2Urcmd5RW1ndGI5bEsyUDA4Wjdsb1JGK1d0YmxyMnVLNjErWkpibDR6SXVQOG56WEg4bGI1SEUzVDI5eGJPSkVVRW1OajJJZE5kckFqb2EzTGx1TTFSbG1TVDRtaFpiTEFZaTI1M3c2T0RIdzM4eHh2SXNPN3pTVzlsa0ozTWtkMURDQ0UyeTl0Qm9OU1BFbXMremFhdXEyM3g0TWRpWkU3TTlxZWo0VjRMMkZkdFlGZ2FTVjNhZThuYmZkM2tuV1dWejNMSDRmQmV3SGF1b3MyWTIxUkdsR05POThXTCtwVXc4WlhHZXhsdEpMSFBOc2toS3EwZTFpNTNqVmRpZ2F2ci9BRWFpbGVoSFJ2Z1JTdXhYRmltTXZaN215UzRuajlKcFN6SkdRUVJIdU96Y0QySlhRbWphazVScXgxdVRhcXhKczNISFBkSlBETEZiV3JwSEpmYlMwQWFSQTREc3Y0T2gvUzZmT29aWmNJemNKYWZJYTdxVGRWb3Vub0Myc2VUdjdxNGp4eXdTeFd5eGwya2tLYmpKcVFFWUJsL0NOYXpiK1JzbnRTcVZWQ1VwTlJwb09MUkwvQUhHNXU3aCtuZXd5THBjS0hWd2JPK0lWL012Z3NoRFZnYzF4MWtXWng2OVYzaFVKVzBwdFUyeStETmpKSGgyOEs4dE5zSWFjZ2hkZENEVDBFbDVNNUUyTkZyNlkzRDlLdE41aWR2YlFxTEdlL2RVZ21PcE5VQzhoSUduc0paT081eTJzb1hTVmVwN0d0UEN5NDIwMHpPeXNkemRVUm1UdWt1YnQ1VkdnWTlxejhtNHB6YlJac3cyeG9OeFZZbFppR1RqeVdFNW5tWk12YlhPUmxaR3VvY3FTanNsZ2hDazdOUnRWV2JRaGE5WjlLOHh4NFdGU05IMDA2RElzejhtN1Blbko4ZDM5STV5c3l6NCtHZEF3VmlHVU9wVmdDRDNVOVJYY1hIV0thTkhJbHVnbWlEbWlpbmlhS1ZkMGJkMTdkanFPbytGVkp3VWxSOENoT0NrcVBWTVhoeVBJYmVNUlcyYXU0NGxHaUk1amwyajVOSXJOK2VvMWFrdUU1SmV4L013cnZwbkNuS3V5ZzN0L3JiTzlHU3NicVFaTUh6M0U3dEw2eW51a3dKNnFmbDI4S1ovSDJ2ZEIrUHJldGU4bXl1UlkxMno1U2p0WFJUb0hXUXkzSU1vaGp5RitWdHozdGJOVEFoK1RPQ1pHSDMwNlZ1Yy9ybHAxTFJmaVZNTDB2aTJIdWEzeTdUclBLOGl4NmlPeHlqckFQd3czS0xjaGZrclA1OVBsclJWdWNmb20wdXA2L21PeXZTK0plbHVwdGZZTklZbVJIOVp6UE5PN1MzTXJqckpJNTFaaVA1QlRyVnZiR25Hdkh0WnRZdU5DemJWdVAwbzZDQnJTUXk0K2ViSHludTFzNVJUOXNmVkQrU21meDRwMWpXTDdQdzRGZks1VmozL0FLNEpseTl0cDViN2wxNW1zODhPVm40cmg3bkk0dkhOYkp2dVpFT3BmcXdqRHdNRmJVRDdLNS9uYnVPVVl5ZFUrbmdZOXJsTnZEazFiclNlcGxHV3krUXkyUXVzdGtaamMzOTY3VDNNN2QyZHVwUFRzUEFENFU2TVZGVVhBdW5xL3dCc01ESmI4cTR0akliaFlZK0o4YlNlNFJ3eGx1bXpiRjNBWFVLaVF2Q09wRzRrMWl5bHVjcGRiK1JCSjFadGxOQWRTRUtDSTZhbXBGYkJ1Q01ORFRHcUJRRkFSd3BDRlYwMHFhSTFna0NpMEJERzdqSGVzN0pnV0xiUE9IdWI2V040dnpyYjZvdHNweVMzdDdXMm1sTXFKTkZDTHE2bWpUdEY2cnlhNmVJclI1YW01UjdJaHRyeG1HK3BXN1VzMU5HOW10dVl1Yzd3NjhnYWJFWnV3a211WFJtVm9KYklHYUNkV1hzUStnL0o5bFVNN1JLYWRKUlpEZTRWSzd4M09ESldFVGFPenh4b3M4N0x0VnBkUE1GMTc2SHZYUll0L3dBeUtmWjhUVng3MitLSlgxYXNrNGs4VnM5eEZjdkdyWEVBWVF5a2VaUS9SZ0Q4NmE0SnRPbXFBNHB1dlNnZDJRdUw2MHNNZENrOTVkbVFxa3JtTlFrU0YzWXNBM3lIYnhxREt5ZktTZEsxRjRuSlJpcXRscTREak0zWlpMTkRLNDgyc04ybHZzRE9rc2NoUU9qZ0ZTUVJwcDNGWXVUZVZ5ZTVLbWhmd2JNMU9XK05FNkNyNHJGNHE5dTRzZmJKYXhUU0NWNDR4b3U0cUJxRjdEN0JWUmtjN0ViYzJvcWxTTzVJTGViajJSaXVEcEM5dTRkaDEyOU9qZjJUb2FESytRbDVjcThLRnQ0Tmx6bCtJWXErWnQwcndLa3g3L3RJL0kzNTFyekRtVmp5c2ljZWl2ejFINGR6ZmFpK3dtalZORm9JYWNnaFRUa0VJVFRod2lEVWpDS0EwMWdEZzAxZ0RnMDFqVE0rWDI5N2s4OXl4Ykcza3VwclhFMlZrc01LNzNKdUxrU3lCUVA2Q2ExNkI2WHQweDY5Y3Z2WDRHZGNpNXp1VVZhUml2ZXlMdnJQa0dRaU1GbGhid09HQmVXOGorbGlRZjBuazZuK3lEWGY1UE5iZTN3cHQrNHR6MzNmRENFcTl1aUlyTzhlejJEdDdXNXU3bTBtUzR1RXQyaWlTUU1wY0U5R1k2SFRiOEtvV2VZVG5OUmFXckljckN1MkVwU2NYVjAwcU5OYTF5QTdXa0k3V2tJN1drSTdXa0k0dG9DVDREWDhsQmlMTStTeFhCK0FZbk1XZHJMZThyNXJpN3FOOG5OTVRCWjJza3Bqa2pnZzJyNXltMEVueEhjMXgwcHp5THJjbjRZUFJHRzV1YnF6SmVvWFJlNEhTcnc0OW1lMnZKcmFmbHFYbTVCWTgzeE5uZlkrYlRxYi9IeGZUM2xxRzAvN05GVndoL3BFVmhxTzJzZW1MSUphTTF1Z0FPblNueEF4VU4wcVpNYUl1ZFdxQ2VySElDbWhBcENEcFVrUU1PUnJUMmhvaE91cW5XcTE2T2hKRm1NZTQvSHJLTEozMEdiSC93QW9jd3VMS0NlOGprMnk0M0xvcGhndXRyYUlZcGdxSkoxN2o0R284Vys0dlQ2by9GRDNXTHFlWmVRNGUrd09kdnNMZnJ0dTdDWm9KZmdkcDZNUGt5Nk1QdHJwYmR4U2lwTHBMQ2RTMGUwdVd4c2VZeWVBeVU3V3RweXJIeTRZWGlLek5ETmNFQ0Z0RjBPM2YwTlZzMkRsQ3EvUzZqTGlxaHFjZEh4aVRKWVc0a1FuQlhVOXBjM0NCZ3JtQnRESUZPNXZPTkRwVzF5KzlGNDZsd1hTYUdKTmVWWGhRbHJIamZMOGhiaTVodGJleWhjYXhMZlNPc3JMNEZvNDFiWnI4enJVVStaNitHT25hYVZ2RXZ6VlVrbDI4ZmdSV1NPWnRaVXhseFp5V1dXdTNTQ3oxSHFSTzhqQmQ4Y284ckJRZDJoMFB5cDh1WXhkdDAwbVZycW5GN0duR2IwWFY3R2FOZ09GWXZEWC93QmVsemRYZDRJbWhXUzVrVmdxdVFXMnFxcUJydEZaVnk3S2YxT3B1NC9MbzJwYnF1VXFkSll2VXFNdmJTdDU2UkJsbzRWYmRjVHhHVklocVdLeEVCMit3YmhUV1plWEgrNVRwYStSR21VRUVIUXFSb1Flb0lOTkt0QnZ4YktMeEs5VEd6dC84dFpLWS9Sekh0WjNUblV3T2Y4QXU1TzZIN3E1cm4zS3ZOWG13K3RjVjFyOFVWSUwrTzZmK1ZKLzlMNnU1OUJwVFZ4U1JvQ1pOT1FRaHB5Q0VKcHlIQ1FOU01JY0dtc0FjVTFnRkY2bW1zQlMvYm5KL1djbjVkS2x2SzZ5WCsxcjd5aUVMYm9JMGlCMTNGdnhIb09uMzE2anlPM3N4NHhwMElxOHVudWxjZFAxY2U0dW1XYi9BTWsycDdzdW41YTA3LzBtN2pMeGxGNVp4dVRQMjFwQWwyYlA2YWNYQmtDQ1FuUkdVQUFrRDlLcXNKdUxUWEZEdVlZTHlGRktXMmpyMWtOTjdZd2ZUTjlQbHJ3WDJua2xrTWJSRTZkQTBRVURUWDc2c0xNdTFydVpRbHlKYmRKeTMreW51S1phU3pTd0F5cHNuUXRIT242c3NaS3V2NVJXOWozZk1ncEdGQnRyWGowOTZFNWNwam9YWkpibU5IWDhTbHVvL0pRbGtXNHVqa2t4c3IwRTZOb1VZNUdON1dTNHRHdDdLK1dRMmNzdlI1REhvU1NuZFFWYlZkZXBxQ3ptcTVjMnBhVTRqMnBxamxHa1pWcFhwcDJDdXRYUWhYa1ZFWjNZS2lqVXNlZ0ErSm9OcEtvbTZJbGVlckpMN1YrMmwyd0pDV3VRdEhkd1E0YU82M0t2bTBPMElSdDhOSzQ3RmY4QWN1ZDVoUU03VU03QkVVdTdFS2lEcVNUMEFBK2RYaDU3QjlwY0ExbnlmRTRpU05YazRaeDJPMnZuN2lISlpXWVhFa2FudHZXRkJxUjEwYXNhdTl5bCs1a0VucWJSdDBwVUFCcjFvVkVIQU9sU0pBTzIwdG9xaFhHbFJ6VkFvSlRRaGtiUTZVNkxBeFVHcGhvU1RUYWFaUGdHSm5Ydkp4SzY1THdMSlkrelhmZHhHSzh0NGRkUFVlMGtFM3BhOWRONFFycldmRHczS2s3MWpROHorOTRqdk9VMnZMYlJpMk01YlpRWkswM0R6UnNFV0tXRnY2VWJKMXJld1orRGIweEhXNWFGRnhtVW14MlRzOGhCb1pyS2VLNGpCN0ZvbkRnSCs3VnVTcW11c2VhUDdrWTIweVVONXpmamR3bDd4N2s5L0hIYzI0MVc2c01qY0JXbGdsalA0bGZSbVZsL2swTlZzWEtkdTNLeE5hMDBIV0xqUzh2OXowTkgzNmRQaDBwTTlHVVFHS05wdUFiYWR5NmpYUWp4SHpwQ2NFd2ZVb0IyaU43ZFhNTnJKTGEyL3dCWE9nMVMzM2lQZjE2amUzUWRQalJJN3U1UmJpcXZxS2paWXJtUnZNVm1NamVRdWJaNXBydTJsWGJMREZPcER3UnlSNm82cU5wRzd4SGVocVpNTWJJM1J1VGEwcTJ1bEo5R25FSElYOE1qeVRvaTI2YUU5VHFvUHhJNlV4a1Y2YWJiU29VMnl5ZkllVDV0ZUpvTGFHSzlqUDF0eWtiUzZRRHFYMlNIUlNDQVI4RFZQT3pGWXRPYi93QVRGbGszYmt2SzhOSkxYcDA5cHMvSE1QZTRmRlI0KzV5RDVJUURiQmNTcUZrQ0RzckVFN3RQQTE1OWwzNDNaNzFIWlhpYWVQYWNJN1c5eEl0VlluUWsxT0hCQ2FjaHdpRFVqQ0hCcGpBS0EwMWdLMzdoWFBLTGJqZHhOeC8weE1pazNUbi9BRlZoL1RhSFh5N2dOZTlYK1dRc3l2SlhlSFIxVjdTbG15dUsyM0QyOWRPd2E4QzVaeFZjQmpNWmpMUzhqbGNEMWJYMFpKWkkyZHVzOXpLcWhOSkNkMi94cjFDMU9LaWtpeGhYN2V5TVlKOTFQbitKTmNrejBGdmtzZGg5alNYRjhaVzFUUWhGaFRjV2ZycnAxMG9aRXVnMWJOMVF1UmkxOWRmZ0k2MVZOVTdXa0lyMlE0RnhhL3ZKYnllMVlYRTdiNW1qbGxqRHNlNVpWWURyNDA1VGE0Tm1aZTVSajNKT1RXcjQ2c2xiUEU0cXl0a3RyU3poaGdUOE1hSXVuMjl1cCtkQXVXOFcxQ08yTVVrUW51RGlycklZV0tXemhhNHZiRzRqbmlpVHE3S2ZKSW8rMUdxU3pjMlRVdXBsRG5HTks1YVRpcXlqSlA3bVYzRWNGeTJTbUJ6VVJzTVlCcTlzc2ltNG0xL1JaazFFYS9IUTZtcm1UbnVhMngwajhXWmVOeWk1ZGY4QWRXeUhWWFYrN2dpQWx3K1doeWo0RzF0NUxySjQrWkh0VzJLMFppUWg0Slp2VUJpMmFhQmcydXZiU2xMSmhPeHNsWGR3MCtabDNzT2JrN0NUbEpQNGREYkxSN3g1Zko4bDRud2psV1JPMjl1SUx6SDVDM2pMQzNqdWJLY0lka1I2UnN5alZnbzA3VmtZS1VaVGlZNlRUYWZGRmY4QVpqanY3Kzl5Y0pieUk3V2RyTUw2OWtRZEVpdFI2dXJrOUZVdXFycWZqVStYYzIyMnhNOWRleXFOUHcrYmtFalJOTHllL3U4eXdoSlpZMXVaTkVpTG5xNWpWQXV2M1ZSU29rdW9ybDdadkNteVlhQW9PdXRLQ0V4UVZLaG9ORUFuSjJxTzRPUW5VUTQ2a0lPci9HbnhrQm9UbGxIYW83bHdkR0lDb3VtcDYwRkZVRTJlWFBkSGhTMi9Fc25nY2dWR1Q0TkNjcmk3NjNZK2pjNC9LM3JsNHBvV0dzY3FQMjBKQjA2ZDlLdFk5eHh1ZGsvdUhXMzBIbi9kV3RVbHFiQkRpK1I1NzJnNHlPQ1JpNWJCM2QxUHlTd2hDZlVyZTZNME40UTVVT0ZoTzFQbVIwT25USnV6MlhtNWRQQUVMamhOU1hGRmg0dXRySGhiVnJTNGx1NGJpTVQvQUZjN21TU1JwQnFTeFA4QUo0VmJSNk5oUWlyUzJ0eVRWYXQxclVsSHVJNDEzU09FVWR5eEFINTZKYmRGeEVyZkpXZHd6TEJPa3JMK0lLd0pGQ295RnlNdURxQmQ1WEgyYlJMZDNVVUR6c0k0VmtkVkxzeDBBVUU5ZFRSRzNMMElOS1RTcVZXMjl5Y0ZkNUs5dzkvclloWnBMYTN1M1A3R1hheFQ4ZjZEYWo5THA4NkxUcFhvTW1ITjdVNXl0ejhPclNmUS93QURPT1ZaNjV5RjlOWTJzeEZoYnlGQkpIME1ycWROZFI0QTBvV3QzSGdjeG5aRG5Od2kvQW43enVBWlNmSDgreEY5Y3NBODg1dFp6Mkd5WlBUWDgraHJNNXpqYnNXYTZWcjdpdGpUYXZSaytsMFBTek1hODNSMDRtelU1QkV5YWNFSXhweUhDSU5TTUlvRFRXQU9EVFdBcC91MWYzMXB3cTVGb3dYNnFSTFdkdW12cHphcVF1dng3VnFja3N4dVpLVDcxM21kek9VbFplM3AwSWZoL01iMkRIRGoxN0tHa3NvaDlLN2FBelcwUTZBRWZweDZiVDh1dGVrMzR5dCtCOE9ndGN0ek5yVUphdVBEdFg0b2ZKSHgvbDlsRmtRSkJORVhSSjBkb2JxM2NIUjEzSWRRZW5ic2FxY1RhakN4bVFVMVZOZXlVZmNOeHhyazhGMHR6YmNqbGxjSzBPeTdpV1JCRWRDcENJWXdaQVIrTTk2UkYvQXlJeTNSdXQ5SGlWZFBaVFh0Sm5ENGxNYmJ5SVo1THE1bmN6WFYxTWZQSklRQnJvUEtvQUFBVWRCU0wrTGlxMUZxcmxKdXJiNldQOWFSWk8xcENPMXBDRXJtNmh0b1dtbWJaR25WbU5BYk9haXF2Z1Y3SmMweDBQcFJXWmpGOWVONmNVbDAzMDhDN1FXM3pTa0hSVkhnTlNld29TblJWTWJQNXpic1EzUlZaUGgrWkIrODBMWW5CY040OWJUcGY0Mk8wbnlKek1KVm9iMjl2SmkxeThaQlBTTmh0NjlhandYdWNwUGpVNE55Y201UFZ2VVg5cUxLNWo5ditUWE1VUDFFMmV5R0x3TmhiS1NobWxhY1R5d3lPTk5rVWtXcXVhR1k2eml1cXJHVDRIc3kxZ2d0cmFPQ0NKSUlZMUN4d1JBS2lBZm9xRkFHZ3F1NURLQ2c2bW1oRkFkT2xQUTBIV25WQlFIV2xVVkNzY3Q5eE9KY1draHQ4dmRzTDI0WDFJYkcyaGx1cmxrQjAzK2xDcnNFMS9TYlFWRmR1UmlxeWFpdTNRYkthanhZNDR4eS9qM0o3U1M2d3QxOVFzTENPNGhkSGhtaWNqVUxMREtFa1RVZHRSMThLYkdTa3FwMVhZUGpKTlZSTTBRaFhPaWswMlRvZ29aTktkMVVYUFVuVVJlTzZYYm9hc1F2cW1wRzRHVmU2dHRqTFBrRnZuc200aTR4bHJDNHdmSzVHUjVWRVpScExDWmxRTXcyVGtxR0E2YnFNYis1MFgxTFZBY0d0VHkzelgyNnovRTF0N3E0ZUhJWVM5T21PemRtNGx0cHh0M0RxRHFqYmV1MXEyN09URzV3MGZVUFRKNzJFTFE4M3VjcEh2bHVNTmk3N0kydGxHektibWFDTFJJaUYvRXZuMUlxTFBmOXVuVzBnUzRIWWpPM0xZdFJaem1PR2VTV2VRUkw2U2VwTTVlUVJvUHdSaGlRcWpzS1VkRlE2dkJ1dU5pTVlTZTM3VjlnMXlHYnNyWHpYbHlONTdJU1hjL1lvMU5FWmV5WVErcVF4eG51QkRhNUpIanRwMTA3Tm9yRmtQUnZMclQ0d2szU2hWczg0VUoxVVdOK1QzV0t6dkxMdTl0Vm1GcGNSd2lOcDBNY2lPc2VqS05lMmpEdUswTWJIVW0xSk9qSzJYY2pmdnVldEhRUS9ka1p0STRTMjZSUm84akRYZVNTU1cxK0pOYUt4VW9LUFVOOGxiYWRKeVdNTnRCNWRDeTlpQm9BUGdLYkt3b3cwNkJydEtNU0l5Y2trVTNyeG5TU0lwTkdmNlVaQkg4bFpPVkJTVFQ2VVVydldlb3NUa1k4bGlyUElSblZMdUdPWUVmMDFCUDU2OGl2V25DYmkraDBPb3RUM1JVdXREZ21tb2tDRTA1RGhNbW5JSWlEVXJRNFVVMDFqUTROTVlDZys2dDE2dHh4L0RnOUxpNk4zTVAvQUhkc3VvL3hHdXU5R1l2bVplNzl2K1AzR2ZsK0s1YmgyMTl4UStSb2dQbzlWZG05U0tSZWpKODFQNXE5RzVqYVZYRjlPcFR6STBkUGFpSndQTEw3aitUTnpwdUQ2SmV3anBIY0l2WmgrcEtvN0hzZTFjN09EZ3htRnpLZVBjM2Y5UzZKZmd6UzczM0l3RUVOaFBiaVMraXZWYVJoQUFaSW8wMERGMFBYVU1kTnZlakMyNWZTcW5XM2VlV1lxTGpXU2wxZEM3UTF6N2s4WFNGV3RKcEwrZHhxdHRieHNYSHlmZHRWUDdSb3d0U2s2Sk5zTnpudU9sV0xjMzFKZlBxSmpBWnUyeldNaXY3ZFNnZlZaSVc2dEhJaDBkRzA4UWFZMDA2TXZZZVhHL2JVNC80UHFIMGNzVXE3bzNWMTFJM0tRdzFCMEkxSHdOQXN4a3BLcWRTcTVEbGQ4dDNQQmIrbkdJV0trRWJuR2gwNjllbXYyVUttUGU1aFBjNHhwb1JsOW1NaGVqYmNTYXg5RDZhalJkUjQ2VWlwZHlKM1BxZWhEWktPT1g2V09lVDBMT1M0alM4dVZqV1Y0b25PMHlJamRDUVNLWk50TFF5K1lTbEcxV0pJZThDU2psTmg3ZVlQR1NKYWNWVnNmaTdkR2E0bnVYdVNKM2xPZzExa0xhN1IybzRhU2h2YityVm5QUlZFYlY3YzhVRm5uTU54OWdHc2VDMmF6NUhhUDJjbklNZ3ZxTVQrdTF2YnZvRDRicXljaklxM0w5ei9BTzFDakhjemI3ZWJldE90VHFnU2pRY0NyS0l6dGFRZ2QxS29EdGFWUkhudmtXYmt3WHVMblh5RUhyVHlYbjFBTTYrcEhKRDZZVzJYWjA4aXhkQi9TMStkY3B6aU54NUNsbzFHbEUrQmxaS2x2cVdIMno1WGZjaTl3cHJsNDFBVEhNbHc2b3FheHJJdm9oZ3ZUUU1XMjYvT3JmS1pYWlRsS2IwcDBLaUpzUnljbTJiRFc2YUlqTzRDMURkbFJEb29qbmJyV2RKNmxoQ2J5YUNtU2tPU0drekJnUXczQTlDRDFCcXRPUklrWWh6bmdOc3VKejNHUFV0OExZNXZKVytWNDllbEJIamx1SVlCQTlqT3lqUzNra0lMSzU2UHI4ZWxiR0RsNnB2VnBVZlgzOXBXdVEydXZRVW5HY1N6WHRwd1Brbkk4OWpaYmJOWHovOEFEMWs3a3RCRGEzc1JhYTdVeGErcHJ0MnBvM2V0QzlmamVuR01YNGVQNUROT2wwUkQ0bjI3NTdsc0FaclNOY1BaeFcydGlrNDF1cm5hbmtHd2RJOS94TlptVHoreGFtb0x4YTBiWEJHeHV2VHQwaDRJcGFkYi9BeldLR1FiZzBiQ1pHS1RCZ2Q0ZFRvd2JYcnFEWFRXYU9LY1RIaWpwUTNRcjVaVU81RDh4LzAwOTE2T0tFL2lYVERSMk4valV1VUI5VjFLa01kZGpqdlhUNGNMZDIwcHJpL2d6Y3gxRzVEY3VJMlppckZUMElPaEZSUFFqWWc5NWJ0NjhXOGI0VjFrWHhBMDExcUdkeUxVbFhWY1NPVTA2cnFJYVl0ZXlRUjJnRXNzb09pNjZlVWRUcjhLd3NySmpHS2srQm5YSnAwb2JkN0w1V1M2NGFMQ2ZVWE9KbWUya1J2eEJDZDhmNWpwOTFlZGM3c3FOL2N2cG1xbTN5dTV1dFUvYTZGN0pySlJwblJ3eVRQdFFhbXBJUWI0QWNraFdmR1hVYWJpdW84ZEttZGlTUTJONkxJMEdnMFRoMU5NYUdpZ05OWURKZVpaQzV1dWU1R1MwdFpyNzl4WTN6UlFxU0VCL2F6U1NPZktpcXZjbjdCcWE3NzB0bDJNSzE1dDEwbE4waXYzTjZHTmZ5b3d2eWs5ZHNhSkZleVRQZHNydUFrdXhDUU9vQktna2ZucnZNbUx1Y2RIb0crblBqeEs3a1lkRzM2ZjBYRll0NkZHWmwySko4SHQ3YzM5NmZUWHBGSDRlSlp2NXEwT1RRVytXblFpNXl5SzNTMDZFU055cXBjeXFnMFhjZWdxOWNWSk5Jc3pWSk1iS3QwZ25paXZKNExTNkllNXRZbTJMSTRHM2N6RHpkUjBJQjYxUXVZVUp6M1AzREU1S3FVbW95NHBkSTRzYzFuc1BpNThkalpvb0xLUjJramZZVE5EdjAzTEhxZHZmdHFPbFZML0FDK2pjazZSNmlTMW1YckZwd3R0S0w5NjdpdnhYZHZqc3ZGY3M4ak02U0dmcVdlUW50dStKMTYxUXlMY1kwU00yMWRWcTZwT3ZUWHRMaHh2SGMxNVBheTMrQ3dnbng4Y2hoV2FhZElpWFVhdG9EMzAxOEt5Y25tTm16TGJONmw2UE1KenE0dzA3eVF2dmJuM1V1ck9hM0dBaVF5cVZEcmVSRXFUMllkUjJOVi8rYXhuK3I0TUY3SXV6ZzQ3T0s2elZZTVFMdm03Y3d4Mkp5ZzVkTlpSMllpeUVTMnVQc3BmcHhiUzNNbHlyTzF3MjNVcUlkU2ZsM0VEejRlWHMzSng3T0wvQUE5cGxLelBoUTBiaHZHTERqT0R0OFZaa3pTS0E5N2V2L3EzTnd3QWt1SlNTU1hjanhOVUozbmNsWDdJblVOcW9XdTJrMmdWY3RTb1F6UTlXNEduV3JpdWtMaVZYaytlNU5KbUZ3dkhwYlN3TU5zTHpJWmEvamFkVVYyZFlvWVlWZUxjN2VreFptYlJScDNKNlovTWViVzhWS3ROMGxKcE4wWGg3YVBWOEVoMExMayt3ZDhFNUprTTFqcmtaSVF0ZldNNWdrdUxVTWtNNjZia2xSSExNbW82RmR4NmpvZEtuNWZueHliU21sdGZTdXBqYmx0eGRDeTYxZUdGZjVYd1BpL0trakdadERKTkNDc04xREk4RTZLZXBVU3hGVzIvSTlLWk8zR1dra21ObEJTNG9VNHB3empYRkxPUzB3ZG1MWkptRDNFcnU4czByQWFBeVN5Rm5iUWR0VG9QQ25SU1NvdEVHTVV1Qk1TU0JSVEp6U0hwR081ZjNyK2o5eTVNUmNTV3FjVHRsZUNlOVZYa21OMHNKa0pWbEpHZ2tIcGJBcDYrTmFpOVAzN3VHc2lLYmxLZEZHbkZmdSszZVhvWWs5aW11bDBwOTVONEQzWTRobmJ3V2xzOXpieVBMNkVEM2NEd3hTeWxkd2pTWHpKdktqVUl4REg0Vms1M0pjckdWYmthZTFQMjZkQXBXcFJkSktqTFJKSURXSEtRa2h4RGF4UENYSjYxWnQySXlqVVpLYlRvUVdUK21saWx0cG8wbWdrQlNXS1JRNk1wN2hsYlVFZmJXVmV1N1hvVzRRcXRTbFNjSDRyRElra1dPVGJFd2VLM1o1WHQwWUhVTWx1N3RDcEhob2xWTCtkZmNhYjNUN2RQRW50NDl0T3RFTzNZbGpyM3JIYUx5TUE5NU9OUjRubGNlVmhIcDJPYkI5WFRvcTNjWTgzL0FPSXZYN2E5RzlJNTNtUWRtVDFqdzd1ajhQY1pHWGFVYmxlaVh6TTh2akRKWnJkVzUzTHBvZmlEOERYWFpDanMzeDRGUzZsdDNJbU9KNDNQbk93OGR0VTF1czFKSEZaVEFheHJLeEFhUTYvcUpxekQ1Vm5XZlVFY1hIdTNIMFJyL3EvTU9Oa1N0MWorN2gzbHY1aDdUKzRmSGNsZDNFMXArOU1URWtYL0FKMnlWbU1vWmlna0VBMWRYSFQxRStlbzFGWi9MZlhHTmt6aTdqMlNrcU5Qb2E2ZmFUTzVjM1ZrdE96NWw3NEw3SzRqTWUzOGNmS2NkSlpaaTV2cGJ3UzZlbGR4eEZsUkluL29QR25WRDhkZWhyaWVkK3FMa2MrZHpIblczdDIvMHY4QXdIUXh0NmJsbzJ5bzhtdzlqWmk1a3Q3V09DNEZ3UmNPaWdNMmhLZFQ5MVg4Uy9LZEt0dFUwSzl5Q1F5OXVzdCs3T2ROYVNIYmJaMkRhdXZiNmlEcXY1VjFGV09ZV3ZNeDZyamJmd1pZNWJkMjNkdlJMNW14RTF6YVIwUkpZWmtETUQrTHdxOWkwSzk5RXE1RzA2OXRLdkZWRktCck5hTllVQnBqUUF4bFdOR2tjNklnTE1ma0JxYUcydWcxdWhFY2V3R2R5UHNYbnJ6RldUM21aNW5lU1hBaVVvakcxZWRZbDFaeW9DaUNOajFQalUxN0t0VytaMjFkZExWaEt2ZWxWL0U1WnR6ckw5eiszd01peTlqbXNka0VqeWR2SEF0MDBpd21LVVRlZVBRbEdaUnQvRDIwK0Zlcjh1NS9hemJqakJOZE9wWmprT1U2TlVxUVdVdUZhSXlMRzV0eWZTRjF0L1pOSXBHcWh2bDhhT1htV25jZHRQeEpGZkl1eGJvaVE0S1AvTVpGL2xDditZMXBja1hpbSs0dWNyNHk5Zzh2RC81dWIrc2F0M2ZxWk5jK3BpT3RSakJ2ZlNoSURyOXY1T3RWOG1WSWtONlZJbGVFVjFlWEVkdGJydnZMdVJZSUZIY3ZJZG9yQ3YzVkNMa3pOazIrOW5zSGltQXRlTzhkc01MYkFiTE9KVVpoK2xKM2tmOEF0TVNhOHh5Ynp1M0hOOUp0VzdhaEZSNmlYQnF2UWVQYlFFT05lNXF4WlZHUlRMQmJwb28rSjcxdFdvVVJSa3gwcmFWWVdoRXdyM0JIVFdtU3VVQ29rRnlqanh6a0drRi9KamJzTDZadUkwV1ZYajFKQ1N4c1YzQUVralJnUlZiSXg3VitubUt1M2gxb0txdUE3NGRnWU9ONHMyYVhNbDdQTklacnE3bUNxMGprQlJvaUFLaXFvQVZSK2MxY3gzQzFIYkJVaVJTaTNxeWZGNVZqK1FOOHM0M2xKNUF2TENHN0pQZW1lZXgyd0pMT3dVc28zc0JxcTY2YWtkaHFlMnRObEtva2p4cnl6aWZQT0pHSE01dXlGdGJYTTA4ZHJDczR1V2prTEIwRXJwNVJ1VTZLZGRUb2UxZWljazlTcTVLTnJpNFc2TCtwNkxoM0doajVjMVJQb1ZDRXZ1UzViNkE0K0xJVHNaTGo5NHpvcnNFTjhScEcrbmJlUGpXN214dFN0dUNWYmpqUnVuWHdqM0U5N1p0b3ZxcHgrU04zOXJ1VTh6em1TeXQ5bHI0WFdOOU9KSW8xVkVqanVOZDJrS3I1dHZwL2lMRTZuU3ZMUFdIS3NibHJ0V3JUbEs0NDdwTjlQVjk0MmVPb1NwV3VuMm9hRWNsY0twVU1RRFhHZnlwcFVxRHlrTVpabTEzRTlhcXltK0pQR0lpWlE5TTNWSFVvTnBvUTNVZDZaSzNVa2pJb1h1N2hSa3VFWHhNU3l6NC9iZlFvdzFCTUIzT3YyTW00VmU1UGRkdklTNEtYaDkvNWtHZGIzMm4yYWc0LzJKOXQ4M2o4Vm1MQnJxMXNMcTBqbkZwREtESElaUDJxR1JtVXNmVDNiT25jQWFtb1orcXM3SGR5ekpwK0tqMDZ0UGp4S1Z2RWpLS2Flak1veS83eTR6bnpPcW1QSTRDOVc1akhVYW0zZmNSOWp4Nmo3RFhTMkhESXRVL1JkalQzL2d5ak5PTDdqMTRsNWIzK010OGhhdHV0N21PTzRnYjR4eXFHWDh6VjVaT0RoTnhseFRvL1lhdGwxS3BrUGNUaUdPNU5GeHU5eUNXK1VsUlhBZnBFclNmNmNVa3Y0VWtjZFZWdTQrNnRHMXlySXVXSGZqRnUydmYzMDZrUGxmaXBVWmpIdXZsSU1YenErd3R4dGl0cnFFM1gxRGRBa2t2bmpWaWVnRGJHcnNPU1daWGNXTjFhdUwyKzR6OGlWSk5kQmtSdTVZcnBzdGFTTVpyUzYrb3R6dU8waEdCNkN1d2paVHQ3WkxpcU1oaER3NzE5U2RUMHppY3BiNVhGV21TdHpyRGR4TEt1bmh1R3BIM0hwWEFYYlR0emNYeFRPcXRYRk9La3VrZHBNOGJibE9ocFJkQjdqVVZseWx3NmJTM1NwL09rME5WbElqUWFEUk1IVTAxb0JYZmNYSnlXUEVyeFlkeHVyN2JaV3l4Z2x5OXdkbmxBNms3ZGF1OHNzZVpmaXVyWDNGTFBtNDJtbHhsb3ZhWDNqUHVMZ2JYL0FJZjRmYVlqSldjVXNhMkZsZFhjRWR2RVRid0ZqNWQ3UDVoR2YwYXgrYStuY3UxQ2VSZTJyV3ZHcjFabHh0VHQwM1JhWEFROXlmYTIwNVZiV3NWc2lXNGpsRHkrbWZTUFE2N2d3SGlDVlB5TlZPVWM2bml5Y3F1dE5CWHJHN2dabDcyY2J4ZkdlTjIyS3MxRFRQREdvVkYwQVgxaHFzYUR3NmZhYTZQMDdsenYzbk9YQ3YzZEpUeVlLQ29qUCtESXdodlhZRldhYlJsUFFqYU5OQ0s5aTVFMDRTa3VsbWh5djZaUHRCekY1RmF2Y1R5YWtLeDBVZDJQd0ZQeTcwYmU2VDRCeUxpaFZzQldCVU1PeEFJKytpbUlqY3hKb3UzWHFRQi9QV2RteTFLbVN5eGV5K0NHVjU1RGRTTHJiWWVNM1QvRDFXOHNRL0wxKzZ1TzlSWlhsMmRxNHkwL0VaaVc5OXpzanFlbTQ1TlJYRHBtdTBQSUkvMGpVMElFVW1TRnJIcDV6OTFXclVLYWtFMzBFbERPVkhXcjBKMEs4b2gzdkFCVHBYcUlhcll4RjYwa2hQaDJGVVBQY21UK1hSRGhaejhhblV5TnhGbG5xUlhCcmlHZTZqaWpNa3JySEdPN3VRcWo3ejBxUlRHN1FzRi9hM0NscmVhT2RSM2FKMWNEKzZUU2M2Y1JiUVd1UUtZN29kZ3I5UnF0Uytab04ya1RsNGJTN2drdGIyQ081dFpodGxnbVVPakQ1cTJvcWxjdk9FdHlkR1R3alZHZjh6OXArTzViamN1UHdOblo0YS85YU81Z3UwaEdtK01ueXZ0OCsxbFlqcFdqaDgreUxWNk4yVXBUMjlEWVpRZlJ4Ukk4VDRwaitMWWtZMnplU1ptYjFMaTRsSUx5U0VBRStVS0FCcDBBRlpQTmVhWHMyNzVsMTFsU2k3RjFGbUs2M1VzRVZzV0dwcXJDelVEblFUdWJUeW5iUXVXTkIwSmtQS3p4dldkS3NXVzQ2b1dpbURpcDRTcU1hb0pYMWxGZVcwdHZJTlVtUm8yK3h3VlA4dFM3YU5OZEFLNlVNbTRyN2wzZU45dTdQaW1HZjFlVldrbHpZeVRzcE1WamJ4enVGbmtKNk0rMDZScDhlcDZWcFhQVHJ5YzZWMmFwWWUyWCtaMFduNGxUbHRpN2tmMmJhMXJxK2lLNjM5eU16NVV1VHhsN0pIOVRMa281RUtocnA5OHdabDcrb2Z4RFZ1eHJxLzRWdjlLMjkzQWs1enlyK05jcEJ1UzdlSmRQYkRsWHVGamVPUGNZMjdpdTQ3K0w2Smt2Q1NsajlHQkZCUEVnL0dSR3BVcDRuYVRWTFA4QVRHUGxiWnZ3N1pOdW5UWFZyMnYzRW5MK1QzcjF1TTRTK3B0T3ZSVFN2MjdCM0RpTFFXazhGM3JmUGVPMHQvUGNhTzl4Sy9WbmtKOGZoOFBDdFMzQ051S2pGVWl1Q083eGVVMmJWbnlxYmsvcXIrcDliKzJoV2M3Z1lyRmhQNjB0Mms1VlAvTXNaakdzU2dSUnF6YW5hbzEyNjlxTnVFWXFrVWt1dzUzTzVOYnhkWWF4aytuV25Vdm1VK2Rka3JvZW9CSTArVlNIT3pqUnRHbit5R1h1SmNWa01OSUMwT01sRFc4M1hUWk5xVEhyOFZJMSsrdVY1N1lVYmltdjFmY1Q4cm0wcFE2SXY1bWtFMWhwR3NFWTA5SUlnRFVyUTRPRFRXZ0ZZdW5qelB1Rmo3RGNEYWNmaU4vYzllaHVaUnNnVDdWR3JWMWZwdkZwVzQrbmg3Q3RiaDV1U2wwVzFWOTc0RDNrdjcwbnlHT3Y4UkxESGZZcThqdWJlUzRETkg1RlpXMVZkQ2RkL2JXdGJtVm1HVENWdVgweVZEWTVoeTZWK3pHTVdsTGRYVWI0SDNGNWR4L21rTDhzeTV5R0h5WlczdXl5ckZEYWwyMGhuaVJRQWlLM2xrK1IxUGF1UjV2NlpzL3huNUVhVGhyMnk2MStCek9iZ3p4V201YmwwL2lOZmVmT1djL0xuWkxpSjRMTzJqQ3VycXlueW1RNkVIVHhxanlISGxISFdqcktUL0F5Y2lhY2lad0hzakZrZmJUQzViR01NZnkyVzFGMU04bW9ndXhPelRDSzVYcm9RcmdMSXZVZk1WUGkrc3IyQm56bzkxamRUYjNhYUVtUHV0cFNqeDZlMEQyMTlvY2diWEtabmsxcUxYS1hjRnpZNHpIeWtQOEFUck1yUnlUdnAwM3Zyb3Z3WHI0MHZWUHExWlYyTWJML0FMVVdwUHRmR240a3V4M1c1UzA2a1o5eW4yeDVQeE8yRHpYQzMwY0txM29KRm83d3I1V1pHVmpxeTk5Tks2WGxYck5YNUtNbFNQQ3BFNVhMZEs2b29PUWp5VWwwcXZhU0taVjNReHFOemFhNmViVG9wcll1Y3p0M0c1Vm9rVnJsM2RMZ2JIN0E0ejZmamw3bEhVQ1hJWFRLcDhSSEFOZ0g5NG11RjlTWkcrK285RVY4elU1WkR3T1hXelhyTFVrRTl2Q3NhMGk1Y0p5MGlNbjJDdEcxQ3BUbktnKzlNanI0Q3JPd2hxTWJ5WnJpNWd4MXZQNlVzamd6T3JiZlRRQWtibS9SMWJTc3ptR1M0cFFoSlJuSnBhdWxPOHA1TnlyVUl2WHBweFMvTWpPUVoyOHdjTEpkZWxkc0cyUnZFMmpTZmNCdDhlOVZiZk1KeWs3VFNjbHhrbldQc0dMSXVRVldsTDRQM1VKTzJZaFJ1R2gwNmo0R3J0dEdySWMrcjFxYmNNb1Z2bi9PMDRwaFJjUlEvVlpPNkppeDlxZGRwY0RWcEpDT29qakIxWS9ZUEdyT1BiM3QxK2xjU1hHeFpYcmtiY1Bxa3lrZTNHZDQza2hsczM3aHlSWmU2Z2xoOUZyNVZhMmhSZzVaWW9YSWdqWG9QRFg1MXY4QUxhTlBTaUxYcWZsME1MeTdkdHR5YWx1Zlc5UGNSUEdlUSszdklPY0pqYlBDUTRnM1Y2MEZsbWNEY1MyZHloYVFoSElEeVJPcDZhcnQwL2twbSt0elpPT2pmMjRtaGV3TFU4SjNiZHlzNFFxMDFIcTFvNHBPdmZYdE5WdE1obWNWbTM0eHlDVmJpL1dJM09MeWlLSTB2N1FIYXpsQjBTZUlrQ1ZCMDZoaDBQVEo1bmh1eTkwZm9md09ic1hGTkZpdDdqY2c2MVV0WEtvZEtPb2plSGNoMDdpbzcrcUgyK0l6aGwxR2xWYmNxa3NrRmtYUnczNWFNbzYxQ21PdzRDRFNyYTRFVkJKaVQyR3RNYkhKRUZrdEJLZmpXWGtMVXUydUF5V1FvZFJVTVhRbGFxUFlMaFhBTlhJU3FReWpRd085ay80UjVKbTdUTlFTV1Z2ZjM4dDVZWHBRdGJ5Unk5UVBVVUhxUGdhN3ZCdnh1V28wZXFXcG9jaDVwWnhOOXU5NGQwcXAwMDk1VmVhWmpFM04xSExiWGtNeTZEVW80YncwOEt1b1p6L01zWEpwd25HWGN5MWUyMG9IRDJZTnFyWE0rMzdDMVdsS2xwbXY2WVZjZFA4QXFsOHlkM1ZTT3BvTmNwWmk5c3BJUDB6MWpQd1lkcUtaVXpjWHpyVGowOUhlWmhMamN4a2N2TmpzVGF0ZDM2aldSSTlDc2VnNmxtMTJqOHRNdlg0V2xXYm9qekRMVS9OY0lLcy9rYkQ3WDhTdmVOY2VlRy8wRi9lU21lZEZPN1owQ3FwSTduNDF5WE5NdU4rNVdQMHBVTHZMc2FWcUhpK3B1cGJpYXowalFFeWFja0VRQnFab2NIQnBqUURQT1UyMlY0cmw3alA0L2ROaHNpNnZsWTlON1F5am9KUDF2VEk3L0N1bDVUbkp4VnFXalhEdEtTdjNNTzQ1eC8yNS9WMlByN2laeEhKOGRrWTBJZFVkeHF2VUZHL3F0VzRkUmk4d3QzVXRTTDVkYzI4MXdsdHRWakVwOVZqMS9GK2lhUlM1bk9NcGJlcmlabmYyTmxKdVNDM2pScmlSWW90cWpVYjIwNmZkUU9NdTJvTjBpbDRuVDNucUhpSE51UDhBRWZhWGpReUY0MTlrcnV5RWxyWVFOOVJlWER5TVcycW9KMEM3dHBaaUZYVDdxOHN5dVdYc3pQdVJ0Um9sS2xlQ1F5dzI2UmluS1hRaDV4LzNaNC9md1pGOHloNDVOaTFpa3VvcitXTGFZNXQyeG9uUW4xT3FFYUFhNjFEekgwN2tZMDR3WDl6ZncycC9FdVhaU3RTY2JxMnlRTTNJK0djejRuZjVheHVHbXRzWVpRWk5ERExISWk2alZYRzRLNElJMUhVVkNzVEl4TDhiYzFTVTZkcXArUkU1eG5GOWg1MHlkMGJmSDNWd05Sc2pkbDErSkhUODVydnJVS3lTTXlUME5wOXU4S3VNNGhpTExidEtXNlBMODVKQnZZL2xhdWN6cCtiZm5MdCtSME9QSFphaXV3dWNBMDBBcHNVQ1JOMlV5Q1BhcDYrTmFOcVNwUXAzSTZqd3pBSjFxZHkwSTZGZWt5RVdFWm5kMStrbVp3R0kxa0R1Q2RwNzc5M1hROTY1UG1HREtNM2N0dXJlbXV2SHZLTXJMc3VuR01uN2E4ZGVzZ3M5a0xQSzRtTzhzVWtsdWJTWlpJb2hHekVsSEc1UEtDRDJxcnkvSHUycnVxOExJN2x5cThLYmFmVStndGlTZ29IMEkzQUhROUNOZXZXdWtXaHM4VGtsQjYwMVNFMFpUN3JPMCtVeUc3cjlMWjJNVnN2d0Z4Y1NOSVIvV01TQS9aVzVoeFg4V2I2ZHhvOGhsVG1OdnVsOG1WMzJsNGxqY255VE50bjdmNmg4UTBJdHNYY2dtTlpKUTJzMGtUZEdaZHUwYmgwcUhNeUoyclVWSFRkV3ZzNkNibjhuY3pKVjFpa3R2YzlhbHo1NXdPeTIyL0tPT1krS0RQNFdSYm9RMnlpRVhVTVozUEVWUUFiOUJxamFhNjlLaDVkekJ4bW96ZFl2cjZHWTF5TFVYdDBxcVB0UkRlNWZQN2pONC9pT1d4TndCZDJheTNscE9RT3JFb3VqZU9qTHFraWZiVzV6S1MwVCtsMXFhbnBqbGtjcXhmZzlMaWNkdmZyOEh3WnBQQytVMmZJc0hiNVMxOGdsQldlQW56UXpMMGtpYjVxMzVSMXJtSGJkcWJpLzhWMW1mZGcwMm1xTmFQdkoyUjlWb3kxSWtpUDNlbkw4cXAvVElucFZDc2tnSzFOSjZEVWhzdVFFWktQNGRxaWpmcG95UjJxbGZ5amNleUhJeEJ5YUdXOXhDMnlteHNGa2RJR25abTlXZVpVS21VeGdJRlU2aGRTZE5UVWs4K1ZxRGNJMXFwZE5HbituWHE0dnRLV1JhZFVtNklhWXVYR0Q2dTN4VHUyTXQ1dlR0bGtrYVgwL0tDOGF1NVp0b1k5RkpPM3Q4cXpkMTJVWXU3OWJXdlJYdCszRXY0bjB1bkNvOEpvVUxZQ3lzamFqNzZmRjBFMVVjdWJhN2dNTnhHazBUZmlpa1VPcCswTnFLdTI3blNpR1VPc2lKZUdjUUpaMXd0a3NqQS90QmJ4YWdueEhscXovQUNydjdwZThpVmlIN1Y3alAyOXBNOWlZakR4L2tPMjBERjF0THlCWEFMRWsrZE92ajhLMkxmUG1sU1VmY3lmRXZaT05IYmF1ZUhxYVRHdi9BQWg3bTY3VGU0b0Q5ZlpOcitUU3BmOEFuclA3WmZBdi93RE1jdzY3ZnVZdEY3WjVtOVAvQU1lNUJKSkFmeFdsZ2dnVWo0TTU4eEZWN3ZQbS9valR2SzE2N2xYOUx0MTdlcVBoTGZoc0ZpTUpaaXp4VnFsckFPckJSNW1QeGRqNW1QMjFpM3I4N3N0MDNWaXMyWVcxU0tvaDZUVEVpWVRZMDVJSVJqVDBnaUFOU3REZzROTmFBR0lWMUtPb1pHR2pLdzFCQjdnZzAzZ05hcVVUTSsyTFJ6UGQ4WXVWc25jN3BNZE1DMXN6ZjBkT3NmM1ZzNHZPWlEwdUxjdXZwTTZXSEtEclpkUDZYdy9JcStSaDVOWkpKSGs4TGRSa2dyOVJiRDZpTS9QVmV1bGJkclBzejRTUXllWE5KcWNKTHRXbzM0TmJMa2VWMjRhTjFUR28xMUtrcUZDSDAyUmRHK2JhMWJnMDlVTzVOYlY3SmoxUThYdDRJMWhzYmhiTzRta3h0bkRieVhEZXBjeXhxQVhZOWUvdytRNmExWXZ5aldrVHNNVERoYWJrb3BTa1YzbFhIbzc2YUhJSmJwTGNXeUZkekRWZ3V1N3k2L0RyVUJXNWxnSzVKWEVrNVJSVkpNdm1jUkJrUmk1MGhoelVDMnVSU1JTKzRSdHZqa1FhanpyMVhVK0Jxamw0RnUvS0VwOGJicWprcy9HcTk4WFN1akt5YmE2dWJtMHRHdXBwVGZYTU1FaU1RVllQSVAwZE9tbnlwOXkxQ0VYSkw2VXpMdVk2U1dyMWFQVjF2R2tTTEdvMFZBRlVmSURRVndTUnVzYytzRVhYeDhLZTNRWlNvZTN2SFE2NjBJWEdnU2hVY3RrSFlhYTFKSzgyUnEyaGhra3RieTJNRjJnbGlKRGJDU09xblVIVWFHcTg3bEJUeDQzRnRrcW9WeDRTS0pValVSeHFORVJSb0FQZ0FLYmFiNGozQlJWRm9rT0o3bmFuZW5YSjBRSXgxRTRycy9HbzQzQnpnVUQzanNMeHNUKytySmQ0aFJJTWlvN2lGWlJMSEwvOTIrb1B5Ylh3clo1Yms2U3RQOVhEdkpjR1N0Wk1Mai9UOTRsaDd1NnkyQS81aTR5R1NYUDhlV08wNVZiSjErdnhlM3BQcDR6d3F1dXZqdCtkYkVyQ3liTGkvclhUOG4rSkx6NjJzZS9CeC8ycHB1Sy9icnJIdVQxWGZRMG5IWHR0ZTJrTjVhU2lhMnVFV1dDWlQwWkhHcXNLNWJZNHRwOFVVR1lWN3ZjYm40M21Jc25hNnJ4Kytsa2tXSWZndHJ1WFJwVUduWkp0dTVSK3RyVzdpM25mdDdIOVVmaXZ5TkhrMmJIRXV0dlNNdW50WFI3Zm1YcjJrdGJ5eHgxL2xMcTBmSFdWM0hBOGNFbzBra01FYmVwY21QdXZxS1ZBQjZuYnJWVE51UmNvUWpyS0tvL2VRY3d2eHZYN2wyUDB5ZFY3a1BuOTFqYVkzRzV6TFk2TzI0OWxwSklyZTdndWx1TGlEMDIwM1hWc0ZVb3ZpZGpOdDhhMk1qMDNmaEZ0UGRLS3ExK0hXWjhsS0xhYStuVjlsZnRxWFJWUzRWWlVZTkd3REs2blVGVDFCQkhnYTVoMjZrcWxRR1ZkcWQ2TW8wUWt5S3ZWSkc0ZHhWSzdEcExOdGtSa0xDd3lFSDA5L2J4M1VHdXZweXFHR3Z4R3Zhb3JkeVVIV0xveVNVSXlWR3FnMjF0YTJsdWx0YXdwQmJ4RFNPR05RaUtQa0IwcFNrNU9yZFdHTVVsUkJ5MUpJY0ZKcHlRUUZrS25VVStPZ21od2s0WVZZaktwRzRuT3dOUG9GRFNaTmVvNzB4eEpJc2FzU085Q2hJRUpweVFSTmpUa2doQ2Fla0VJVFRrZ2pjTlV6UTRVRFV4b0FjTlRXZ0IxYW10QUZGYjUweG9Cbk9Mdmx4M01jMUZtMU5wa3NwT0hzWlpDUFJsdDR4dGpXT1R0dUhpdGRweTJVSFppb1BnTGsyUkMxZW5HNTRiazNwWGcwdUZHVzdXcngxcEc1TE8yZGtwVU1KWi8wWWxPdlgra2ZDa1ZNak1oYlhYSXpuTzNYclRkZEE1WXU2cU5BTjN5cEhIWjkzZEx0NGhlSDJuMW5PK1BXM2NMY200Y2ZLRlMydjVxbzh4bnRzU2ZZWmpWYmtGMjFQU2l1QjFOY1NhclFtWml6Zkx3cUp1bzdiUU9zbEFEUW9KS1RZMmdsSTVkZ2c4YWlscTZEa3FENkx5cUtuaXFJaGtON3lYcUZxQzh5U0NFRmxJcUZEMmhVdkhMRThNeWlTS1JTa2tiRFZXVmhvVkkrQkZTUW0wNm9ZNDFJajJoRVBCK1RaZkN6bmRpc2lZcDdGbjZuMGZNaksydmYweTRSdmx0UGpYYzhueVZlZzMrcnArM2Fabk9MMHBSdHhsK2l2M0RMQlR5OE41MWtlRVhoVVltOWxsdnVMVHIvcCtqS3hkcmREOEIxMmo0aGhXYnpUSDFjMXhYSHU2SDl6THp0Slc0VGo5RWw3cEw2b3YvQU1TN0dXNjlNRXVpVFJwS2dJY0s2aGdHVTZxMmgxNmc5UWF3SlhHbm9LTUtpYlhJWWtONWxiVU1ENGc5Q0RVTytqSDdERWMxN1E4cHQ4cExGaC9UdXNUS3hOdkkwcXh2R2pIOEVxdnBydDdibDExcjBYbC9xNjE1U1Y3Y3BMcVZhZ3QzTGtWdGVxKzNFMm5qTWJZZkFZL0Z5eWVzMWxiUlFOSitzWTFDNmpYdzZkSzRxOWxLVnlVa3FLVGJvUksxUlVRNWx5Tzk5bzdWV2xlcXlWV3FCSFlNdEo2aFJIVERhNUhoNFZWbEdqSjB4SXRTb09DbHFja0lLV3B5UVFoYWlrRUFTRlRxS2VoVUZsbURDcG9zYTRoSlprVWFzZEtrVVd3VlNJdTZ5bHFtdWgxSStGWGJQTGJ0emdpcGQ1bGF0OFdNcmJOUXp6R0lkNldUeStkbGVJZmk4d3QzdnBIeGFxU1JvaEMxUFNDSVRUcEdOV09sUFVSTnBDWWFwR2g0b3BKT2c3MDJnR1NFR0x1WkUzQWFDbnF5MlFTdkpDVTBFc0xiWEdsUXlnMFBqSk1LR3FOb0l6ekdGeFdhc21zc25icmNXN2RnMzRsUDZ5TU9xbjVpbjJyMDdjdDBYUmtONnpHNHFTVlVVVys5dXVUNDlqKzRzaXQ5Wmo4TnBlc1ZrVWZxckt2US9mVzlZNTNIaGNWTzRxSzNrV3RJUzNSNnBmaVJMWWZuU01VYmpzclArdEhORXluN3lhdnJtbU8vMUMvbFhseHR2M29hWXJnUFBNMWRUSTlvdUpSRCswdWJ6VWtrbnNnWDhYOGxNdjhBTmJNRlZQZFhxTTlRdjNHOU52YXpWZUcrM09CNHkvMWNXKzd5ckpzbHY1anEzWHVFWHNncm5jdm1GeTlvOUk5UmRzWWNiYnJ4bDFscmttL1JGWnNtVzBqbGVtQ2FGQTlJYlFNWk9sTllxQTI1M09XTkNDMUJMZ1B5U2cwWWFINFZPMVFoNGxRNVh6Sk1SY21LTzBlOW1TSVhFeUxJa0lXSXY2WTBNbjQzWnRkRkhnQ2VsVzhEazl6TDNTaTBveDYrc250MjdrdElSY3FjZWhMMjlwSzJGOURmV052ZVE2K2pjUnJLZ1lhTUF3MTBJK0lySnZXWlc1dUV1TVhRUGVPUTlSMEVNOHJhU1hjTWJ3RUxmV3Irclp5TjIzNmFNamYwSkY4cmZsOEt1OHZ6Slk5MVRYRHA3aXZrNDZ1d2NXVVRIWkMzNWZIYmNSdjVKc2ZtN0xNN3NGZWxkWnJlT2VWakpHeEgvY3k3WEg5b2VOZGFweG0wdUtiMC93QXN1S05oMmE0czU2T1BrK0wvQUQyMTRaTHQ0eGZaUXZtS3l0N2RXOHR2a29oYjV2R3ltMHkxc095em9BZDZmR09WU0hRL0ExeXZNc1IyTG0zbzZPNHhzZTRweHFoMlhOWjVZb0xwSjBxYUl4bzVub2lTRzdzUTJ0UnRFaUhNYzI1UlZpTEkyaEs0RzRhK05DVVIwUm1XcUtoSUZMVTZnUXBhblVDRkxVVWdoQzFPU0NNcnpKeDJ3NytiNFZleE1PZDJWSW9xWmVaQ3pHc21STXQzZFhaSlp0cWZDdlFPV2VuSXhWWm5ubk5mVTBwTnh0a2RmM2tWdEVRQnVldWk4cTNham9qbTQzTHQ2V3JGZU1RTkt6WE1nMDE3VjU1ejNLM3pvZW5lbjhQeTdkU3d2MHJuYUhVSVJtbENJV05QU0MzUVp3V3JYZTZXVC9USFlWRmR2YmRFUktPN1VPR3E0MFdDUXhNSW11bERkaDFwMXVOV1EzcFVSYkYwQUFIWVZjb1p6R09ZaFY3WXZwNWw4YXIzbzFSTlpsUmxlQjYxUWFMb2NOVFdnQncxTmFBTFIwS0RXT0ZhalFZd1dsMEZOWWtnZ2VvcUJGRmVoUURRY1BRQlE0eVUxaW9PN2Z5cUtrakVqa0t5U25hU1RUcE1Za1Zma25GckhQQ016VHpXczBmVDFvQ29aazExMnNIVng0OURwMHFmQTVwZXhhcUZLUzZIOHl6RzVPS2FoSnhyOXVrbGJLMmdzN1NHMGdCV0MzUlk0d1RxZHFqUWFrOXpWQzdPVTVPVXVNblZqS0MrNDFIUVIyNmxRUlZjMWdaTFRsMkg1WllLRmt0N3VEOTRMNGFCZ0VsUCtWdnVyZTVOa2VOVzVkZW40RGJ0OXdzWEk5RW92MzArOG1QZFRrZGpqK1JZRGt0c20yTyt0NUxYT0l2NGpIQzY3R1llTFFGeVFmRlNSV3Z6bXdycVVmMWRIZjFlMHA4anc1WExGMjVIWHkycXIrbHAxOTNIdXFTS3lxNks2TUdSZ0dWbDZnZ2pVRUg1MXhlMHZDaVNkS2NoclFZdlRoVUVwR29ORGtERElSME5PZ0NTRkdiVVZMUWFrTkplalZHNGtpRXkxS2c0S1dwMUFoR2NBYWswNUlSRzVIS3h3b1FwMWZ3cS9pNE03ajRGYTdsUWpvM3FRMFZsZDNjaG1kdWg3Q3U0NWZaampyaHFVNzNJcFplcmVnOVhFemFkWHJUL0FKMHdROUZXS2FqTEljZWxtUWtOMXFPNWxTa2gwZlI5cUhBaUlNN2NZZVQ2YVZmS1BHc08vd0FtZDZza1dJd2Rqd2xoc00vYVhpalJnRytGYy9rNEU3VDFSYnQza3h5MW5kWHpiYmRTVUg0aUt6N2w2TnRha1Y2K2s2RHVVcGJXTFI5bVVhR3FFYXluVXNLYTJhRWFHcmJhTEEreGwySUxoV1BieG93ZEdSWFkxUmFvcnVHUkF3WVZhcWpQY0dpUHpHUWo5TDBrT3BQZW9MMHRLRTFtMjYxSVFOVk5vdGhnMU1hQUtvYUZCckZsYWhRYUtlcDBvTUZBcGZVMUd3MEJEVTJnZzZ2UW9DZ1lQVFdnQnJkbW51emJRSTl4Y0t2cVBEQWp5dXFmck1xQmlvK1pxUzFqenVPa1ZVaXUzWVFYaWRCM2JYRVVzS1N4T0pJbkFaSFU2cVFmRUdpNHRPakJWUFZIVHkrWFNvNWhpaHNaRlZTekVCVkJMRTlBQU9wTlEwSGxBekh1RGY1V1JySGlvMlFhbFpjektQTDgvcDBidi9YYnA4SzFMZUZDMTRyM0g5djQvZ1ZKMzNMU0h2STlieXk0bmRZM0s0K1c5dVk1b3luS2hkUDZnZDJmWDE0ZE92azc5ZTlXNXUza3cySlVsMGNPUFYzTWhodXR5cStCcUVVOFUwU1RST0pJcEZEeHlMMURLdzFCQitZcm4zRnAwWm9JY1FySEtyeFNLSGpkU3JvZXhVOUNEVWxxcWRVTW10RE0vYzZXYXp2c1piVEZualZKUXNyZG5Rc3UxaWYxaDJiOHZqWFRUeVA1RnVML0FGcmo5dTAxUFNyL0FJMXk0djBTY2Z2K1JhK0tXZDdqdVA0aGJoakpaWkNCNWNaTWYwZlRkbGt0aWZqSHB1VDRxZjZKckw1amh0UmplWENYSHY4QXpLV1pLRU11N2Fqb295MDdtay92SnhYcktTR0FsNmNDaEZjaHlSdExTQlEvcEc3dVliVXphNmJGbGJ6TnI0SGFEcDg2a3R3clYvdGkyTms2TkxyYVF4eUY5amJmbVdIaHhOdkZhTGQyMDBHUWd0aVRITDlQSHZTNWJYL3RDM1RkM0liclUxdTY3dHFUa3FiTnRPL2cvZng5ZzJkcFc1eFNkZDI2dmR4WHVMSUpOUlVTSDBFNURxS1RRNURjdFFvUEUza0NnazA1UnFKNkVOZTVDU1Z6SEQySGMxMWZKdVJPODkwdUJ5Zk8rZnhzTGJIaU1ramlkdHJhcy94TmVnNDNMN1Z0VVNQTzcvTmIwNWJteHhaWFAwOHBpZjhBRDRWbTV1UHNlaDZsNlU1OHJrTnMzcVM2U0t3NkdzODc2TnhTNEJqcFNIbFg1WmlJNW9EY0tQTXRXc2U2NHN5OC9IVWxVcEZ2TkxCS0NyRWFIcldsazRVTDBOVnFjODAwYjM3WTN1UHZjWHNDZ3pBYU1mR3ZFL1VlSE94ZTE0RUZYWFVxM3VDeHNyOTQ0eG9yMUx5dU8rTldTUXV2Z01RMWJMUjBBb3JVeG9Bc2x6S28wREVDZ01jVUQ2ak1kU2RhWTBLZ0lhbXRDRkZQV20wQXl3WTNGUlNXNGtrN3QyRldJV1UxVmxPNWVhZEVNNyszRnZNVkIxSGhVRjJHMWtsdVc1RFF5VkEwUzBCRFUxb1FZTlRXZ0VOZmMwd2RoZm16dUhsQlJnazF3c1R0QkV6YWFDU1VEYXZmcjhQR3J0dmxsK2R2ekl4OEpIS1RTYnBMYXVNcVBhdTlrM0xLNlF5T2k3M1JHWlYrSkFKQSsrcUNWV09laUluQTh5dCtLOFdTOEUwc1dXblZwc3JkSXhMenlUQUVSYlNPNGJ5b0I4Z0tkS1Y2ZDV4dFZpOVk4ZjA5M3hiSVZHMUcwbmM4UzQwcCtyN2FKRC9oOXRlV2ZITE9LOVQwcnB4SlBORC9BTjIwOGpTK24vWTM3YW15R25OMDFTb3UraXBVanN4YWlxOGVQdjFKS1dUVTZWVmtUeFFsSXNjc2J4U0x1amtVbzZueFZob1IrU21MUjFRV2pJdnBKZUo4Z2t3bHdTY2JjZnRjWmNONHg2NmJTZjFrL0MzM0d0cThsa1cvTVgxTDZsOXVzekV2S250ZjB2Z0RtYy9hcVJZVzBadmJ5NDhrZHZHTjVZbndBSGYrU29zYkVrL0UvREZkSWJ0NWNGcXkrZTMyTHpHSjR6RFo1VWhaMWtkNFlBd2YwWVdPcVJGaDMyOWZzN1ZWejdrTGwzZERoMTliNnkzalFsR0ZKY1MxMnorYXFzRVN5Ukc4ejQvRG44TEphblFYTWY3UzBsUDZNZ0hZL3dCRnV4cTNadmVYS3ZSMGh4N3J0elVrT3VOMzZ5ZXpVdU12azlQSTRtMm11YkJuR2pKTkJLN0QrMHAxQitLa2l1cmNZeXhYWFdPMHpKcnp1YUtLZjF6aXE5NlF6dytYaHltT2l2SWh0M2pTV1BYVXBJUHhMOTNoOHE0dTVhMlNvYk42ekszTndsOVNIdSttVUlxRFRKV050a0xSN1c1WFdOaXJBam95c2hES3luNGdpbndrNHVxQktDYW94amplUDJOaGR0ZUF0TmRGUFNTUjlCc2pKQlpWQTdiaUJxZmxUM2NianQ2QUsycTE2U1hTVHdwcUhOQXM5UG9LZ2k1NjBLRGtSZVd1aWtleFQxYnBXcnluRTg2NmtaZk44enliVFloYXdoWTlUMUo3MTYvaVk4YlVFa2VLNXVWSzdjYlljeFJxZFFQTWFubFJLcFdoV1RvYUh3bjI1dE1qYkM5dlI1VDFBcm1NM0tjcFVPNDVWaStWRlM2U1E1WDdlV2xyWXRkV1BUWU5TS3psSTdEQjVwT0VrbTlETXJscm5UYWc2am9ha080aGRjNHBvQnJWNXJSbzVlcFlVNkxveVJ3M1Jvek9zNWpqWTNURFh5azlLM2NUSTNLaHplVloyU0xIN1pjcUdNeVloYy9zM09sY2Q2dzVjcnNOeTRtWmNra3krZTRObEJrcmVPOWcwSkhVNlY1N3l5NDdVdHJIMnFPUlV3MWRNMGRFSERVMW9RY05UR2dCdzFOYUFIRFUxb0FkV3B0QnBLMmVibWdoRVdnS2pzYWxqZGFWQ0NkaE4xRzl6ZXZQSVhZOVRVTTIyUGpDZ2tHcUpvY0dEVTFvUVlOUW9BcTl6eGJKeTVlWmx1SVRpYnB6Sk5HNFl5cnY2dWlqVGFkVHJvZFJYUVkzUFhhc2VYdDhTVkYxRm0xblhyY0hiU2k0T3ZIdDdDMklRQUZIUURvQjhoWE9VS2xBaTRqRkc2UzdOcEcxekdkMGNoWFhhMzZ5ZzlBZm1La1U1SlVxUk8zRnV0Qi82blNtVURRUlo5V05SdEQwanQxQ2dpSTVSeG13NUZZSmEzVE5ESkM0bHRycVBUMUkzSFE2YTlDR0hRaXA4YklsYWxWYTE0b2h2V1ZjVkdKOFo0aGh1UFJrMnFHVzlrR2s5L05vMHovTFg5RmY2SzBjbktuZDQ2UjZsd0JaeDQyK0hIckozZlZXaE1Ld1A1NmRGRFpJY1NQcWhxUm9ZaXZjam5OdmdjbXcvQTl2SWZzZlQrUnUzMjFyY3R5L0JLekxxZTM4Q0pZOU1xMWVqeFU0MUt2N2NYb2t1YnRFbUFReHE3VzU3bHQyM2NQbW9QWDVWWHliSGdjbitrNnZuOXkxUFpPUDF2UjkxS2w3M1ZtVU9mQzdxTkJBRnFOQWdCK3RGSVFiZlQ2QW9KU3lhS1RUbEdyRTNSRXhnZmIrZk54QzdtYlpIK2pYVzhxdGVUNGprK2J6Vjd3a056VENYUEdnek41azAxVTEyZUxuN2xxY0RuY3JVSG9admgrWjNOL2x6QVVJalZxVWN4M0pPSStYTFBLZ3BucHYyOTVWakpzUWxwTklJNUZHbWhPbFl1VmFjWkhRWVYrTW9JZGMxNVppYkxFU1FKTXJ5T05BQWRhclVOWEdnNXpTUmowRG1UZElSK0k2MUtqMHZEaHR0cE1iNU83TnZBV1h2UlkrL2Myb3pIa2w5Y1RYT3I5cXVZazZIS1p0K1VucUljYmNqSm8vZ0QxTlovTzdsYmJSbXRObW5TY2hCaVczRGFvUjFyeng0dXRTZkcrclVqdzFialIwd2NOVEdoQnc5TmFBSERVMW9BWVBUV2dCMWVtdEFEaDZiUUZBd2MwS0FEaDZiUVFjUFRHZ0JnOUJvQWNOVGFBRG8zV2hRREZsZWpRYlFGbjZVMW9WQlBkVEtCQjNVS0NvRHVwVUVEdW9VRWR1cFVBS1F0NXFkRkFZNFovTFQ2REJqS3NjaVBISW9lTndWZEdHb0lQY0VHbzFveVJESEhZVEQ0MTNrc2JWSUpKQm83cnFUcDMwMVluUWZaVWs3c3BjV1BsT1V1THFQdDFSMEdnRnFOQkFGcU5BZ0ZxTkJIYjZja0tnbktkVk5QaG94c28xUmUrRzgreG1QeC8wdDk1ZG5ZMTFPSGtSbEZJNWJOeHBSazMwRlg5d3VVVzNJN2tRMncxZ1hwclhVOHZ4bldyT041dG1SU291Sm5WcHg2R3p2eklpZmlPdFg0NGlqT3BTbnpSenNiQ3lCSjAwYUNReHQ4alZxN2l4bnhNcXhtenQ4QnBJdDA5MmpYTXpTRFhzVFdUbVlhZ3FvN3YwbHpEekwxSkV4SmNSUVJBazZkS3lUMkJ6VVVWM0o1RTNERlIrR210bVhrWDl4VU9RUmhpcXFOWE5TVzdtM1V4Y3RWSHZITUxKRXZxeWpRdDJyRTVobCtZOUNiRXhkTlNSa3NaNDVTeUhVR3N4eFRIeXc2T3FKQVBValJxQnc5TmFBSEQwMW9BY1BUV2hCZzlOb0NnY1BUYUFEQjZGQUJnOU5hRUhEMDFvQWNQVFdnQnc5TmFBSERVMW9Rb3JVS0RXS0I2VkFVT1orbE5hRWtBR3B0QWc3alFvQ2dPK2xRUjI2aFFSMjZsUVFwRy9tb3BEV2hjdjBwOUJ0QnE3ZVkweWc5QWI2VkFnYjZWQkFGcU5BZ0ZxTkJCUzFHZ3FBYjZLUWdDMU9vRWJ6MmozZjdHR05wSlg2SWlBc3hQeUE2MVl4NXVNbFFyNU5xTW9Pb2F3d0dmaUpqZkUzZzA3TjlQTi9zMTZkeXJQaEtDVXRIMm5qL08rV1hJWEc0cmN1elVmL3dERHViSjEvZGwzci91OHYreld2NTl2OTBmZWpCL2pYdjJTOXpCT0N6b0gvd0MyWGY4QStubC8yYVg4aTMrNlB2UVA0bDM5a3ZjeU11Y1J5RDZrRVltK0lYeEZ0Ti9zMWo4eHlZdlJPcDMzby9HOHFlK2ZoNzlCamU0WGxjNy9BUDdUZmJQaDlOTi9zMWlObm9sM01qTDlTOTZHNTQxeWZUcGg3NG4vQUhhYi9acU9WeElnZVJEOXk5Nkk4OFE1VEplbzh1RnZ0Z1AvQVBTemY3TlViMTl5VkVtVjFlZzU2dGU4azVJWmJWekJORThFcWZpaWtVbzQrMVdBTlpiaTY2bXpCeGFxdFVKbDZTUThSRDFLME9EaDZhMEFNSHByUWc0ZW10QURCNkZBQmc5TmFBSEQwMW9RWVBUYUFEaDZhMEFPSHB0QlVGQTlOb0Nnb3JVR2dCdzlOb05EaDZGQlVPTDBHaFVHOTg4djB4U0tiNmQ1R1NQNmdnSDB4STRRdjE2ZVVIcHJUVzlxYnBXaWJvUVpFbkcyMnVKUDMzdHh4KzA0cTJjdzE3Y3dacXg5TjUxbG5tblM3WGNCTEZPa2pNb1lnK1ZsQUlPbmgwckp3T2JTdVhKUnZTV3JTaEhaMTlLa3VGTzJ0VEl0dWNaeGNhdXZIVWlTNDFyV29iMUFkOUNnS0hiNlZCVURvL1dra0JvWDM5S2RRYlFRZHZOVFdoeVFUZFNvRTdkUm9JRGZTb0VMdUpvcENEckRJZXVocCt4Z3FnamhsN2lsdENtSmxxTkFtcyt5VmhhbXh5T1FLQTNYckNCWkNOU3FCQTJnK0dwYnJXM3lxMnFPWFRVNTduZHg3b3g2S1ZOT3JYTUk2a0k2a0k2a0k2a0k2a0k2a0l5MzMveHRvL0dyUEorbUJlMjkya0tUQWViMDVWYmNwUGlOVkJxbm1SVGpVMnVTWEplYTQ5RFJoUmVzNUk2d1FEMUswT0RoNmEwQVZRTzNZVTNhTmJCM0VkNmEwSUVQVGFDREI2RkJCZzlOYUFIRDAxb0FkWHByUWhRUFRXZ0NpdlRXZ0RNNXVGY210ajZNcFV1SW11dEI2U3pOR1pWaUoxMTNGQnIyMHAza3ZidU02WE03S3lsalYvdXVPNm5ZTHBuY00xeUxaYjZBM0JPZ2k5UmR4UHdIWHFhYTdNcVZvNkZsWkZ0eTJxVWQzVlVmYnFpb1MwTzMwS0NDeUNPV040cEZEeHVDcm93MUJCNkVFVWtxQ2FUVkdON094anRmS2x4Y3l4RC9BRTRaN2lXV05BTzIxWFk5dkRXbXVFYTFVWXA5YVNSWHRZa0lPcVE3MzBhRmlnTytoUVZBZDlLZ0JFVDVDNHk5cGg4WGJ4ejVHOFdTU1AxNWZRaFZJaW9Zcytqc2VyalJWWFdvNzEyM1p0dTVjYjJycVZYcVU4dks4cWlTcTJXREsrM3ZNY2Z4bkk4Z216TnBKYzRxSTNjbUd0clp2VGtnaTgwdzllVnQ1WVJoaXVpanJUT1Y4d3NabTVROExqKzUrS25XdjA4ZWpVeXJuTUwwWkp1bTBoektraXJJaDNJNERJM3hCR29OVHVORG9GcUJ1b1VDQVhvMENCdW8wRVA4YmErczQxN1ZMYmhVaHVUb1R5VzBLTHQyaXJhZ2lvNXNZWk94ajlNdW9xT2RzbHRYTlN1eUhSaUtyN1M2alkvWTQ2NERJZjc1L3dDRWxiZksxNEgzbk5jOC93QnlQK1g3MmFMY1R4Vzl2TGNTdHRpaFJwSkcrQ3FOU2Z5VnFKVk1PY2xGTnZnZ3RwZDI5M2F3M1ZzNGt0NTBXU0tSZXpLdzFCcE5VMEJidUtjVktPcVpYZWFYRjVFTFpJNUdTQjkyN2FkTldHbmZTdUc5WlpGNjJyYWpKeGc2MXAwdlEyK1ZRZzl6YXF4YmlGL2QzRnZKRE13a1NFK1YyYldUcjRFZkQ1MVk5STU5NjlibENiM0tIQjE4V3YzZHZzSStaMll3a210Sys0bHNybHNmaXJHUyt5RTYyOXJFTlhrYjU5Z0FPcEo4QUs3S01XM1JHTGZ2d3RRYzV1a1VSZkh1ZGNaejVrWEgzWTlXTHEwTW9NYjZmckFOM0gyVXk4MWFwdmFqWGhVaHdzKzFsVjh0MWE0cnBKMkthS1ZkMFRoMUJJM0tkUnFPL2FtV3IwTGlyRnFTN0M5S0xqbzFRenIzN09uQjQvOEFmb2Y4cjFGbC9SN1RYNUgvQUwvK2wvY2VlQzlaeVIxd2dIcVpvSWRYNjAyZ0NleFV0bUlUNnVtdWxQaWtWcmlkZENPdlpJL1dPenRVVWtTdzRDQWVtVUhoZzlCeEVIRDAxb0FjUFRXZ0IxZW10Q0ZGZW10QUZVYnFLWTBBcjBISU1iUGMyK0x1bGozM0YxTTEydXU1bWUyMTBJMC9SOGlqN0JwOGF1ZVUwcXJxK1o0ZDZodDVTenI5L2M5ME5JdGRFWG9sWHVOQncrUXdnRnZGZjRtenl1Tmo5VGZieVJycXdrVUtQTm9kTm1tcTlPbE10WHRqcTBjdGc1OHNhN0dialZ4cjJOMTdlem9LSlpYV2YraWl1RmxqK25odldzNG9TREpKY1JMY05GdUxuOE95TWFnOWRkdXBOQzViaFY5cXIzYUhxM0xmVjEyL2xXY2FNS3VVVTV2L0FFMStIU1dRdlZHaDZFQnZwVUZRN2ZTb0toMitsUVFPK2hRRkFSSlNvS2d5dnJ3NDdJNGZOcWRQM2RlSUptLzl4Yy9zWk5ma0N5dDkxUjVGanpiTTdmN282ZDYxTTNtbHYrMnBmdGZ3ZWh2NEZ2ZldoVjFFbHZjeGxaRjdncEl1akQ4aDByeXJXRXRPTVdabkZHQ1lxR2F4dDVjVE9TYmpEenpZNlFudVJidVZqYisxRnNhdldGZFYyTWJxNFRpcGUvajhhbXh5K2U2MHV1T251L0llYnFWQzZCdXBVRWR1bzBGUW1NTGNLcjZFMVl0RmE5RW5DNFBYV3JLUlZvTXNsY29zQkJQVTB5ZkFrdHgxS3JOSnE1TlZxR2drYkw3RkhYaitSLzN6L3dBSksyT1dyd1B2T2E1NS91Ui95L2V5ODhpV09UQlg4THlMRjlSQThDTzVDcUhtVXhvQ1Q4V1lDdE9IRkhONWlUdFNUZEtwcjM2R0tjRDl5NzNqR3VMeU1UM0dNVmlQVEgrckEydm0yYTl4cjNVMWZ1MkZQVmNUaU9WODZsamYyNXFzUGl2dDFGeXlQSU9PNXE0K3NzTXZibFpBTmJhNGs5QjBPZ0IwV1hhUER3cnpuMUY2WXk3OTUzTFhpaStpdkR1NkQwZmxucVhDOHVqbW92dDBEV0hMdUxjY1dlNXU4bEZjM0xydFMwc3o2N2Q5ZXJMNUFmdE5YdlRIcHUvaXVVN3VrcEtsUHhLM04vVTJKdFNqTGRUcTErM3RNLzVQeXJQODd5OE5uYVd6K2lySDZMSHhuY2RmRjNQUUZ0UEhzQlhkVzdjYmFxenp2T3pyMmZjVVlyVG9pdm0vdG9XamdQdFZuYlhMQyt6YXJhMjBhTUJBanE3eUZ1bWgyYWhWSDI2MWxjMng3V1phOHFYMDFUOTMyOXh2K251VzVHSmY4Nlhob21xY2VKcmx2YndXMEt3d0lJNGtHaXFQQ284ZkhoWmdvUVcySzZEcXB6YzNWdXJNNjkvenB3V1AvZm9QOHIwM0orazF1Ui83L3dEcGYzSG5RdlZLaDF3M0QxTFFJY1BRb0lVV1poMk5Ob0NoM3FFMEdoQWg2YlFBY1BUV2hCdzlOYUVSV2N5OTViU3dXdGx0RnhNQzdTTU53VkFkT3hJSDVhME9YNE1iemJtNlJYdjFLOXlVdHlqSGl5VXRremxxWXJiT1duMHQ1TmJ4M3RzeTZiTGkwbjE5S2RBQ2ROU3BCVTlxcjV1SjVNM0ZPcUk4YkozeWxCdE9VSDBkSTdWNm90Rm9WVjZhMEFZeWNkdzd3U3hSVzZXcnl1SmpQQUFrZ2xVNnE0YlR1Q2ZzcHl1eXJXdFNsa2N2czNiY3Jjb3JiUGlIaXhkMTZiSkpkalVnZ1N4cHNicU8rbXJMclNkM3NPUHQrZ2NkWEt5bktVUDIwWHpHZkcyenB0SUxDK2dGdEJqaXFNN2ZpbWtRRWJvdE9ucG5YZHJycnIwcDk5eDRyV28za2ZwTjQrZExLbS9wY3RxNjY5SllDOVZLSGVoZDlMYUk3ZlNvSTcxS1ZCQTc2RzBWQWJLSE9aUzd1clhCWXFmTHkyRVF1TWd0dVVIcEkzNFZHOHJ2a2JRbFl4MUlweWlxcFBpK0dqZkRpOU9DWFdVTXJtRUxNdHIxZlQyRFJtc2N6akxpM0Rsb0oxZUNZYUZaSTI3RldWdk1qcWZBam9hS1RoSk1uckMvYmRIV01rTy9yT1pYRnRIYVhuSXA0N1dKUWdpc0VXMkxBRFRWNUNaSDFQanRJcWhEbGVKR1RrcmFjbis3WDRhR2ZEbGY3cE45MmgxcFoyMWxBWW9BMmpNWkpIZG1rZDNiOFR1N0Vzekg0azFjZXBwV2JNYmNkc1ZvSzdxYlFsQTNVYUNBTFVxQ0ZJcmhvMjFCcHlBNDFId3pjcXJwclV5bXlKMlVNcm5JeVRIcWFhM1VramJvTlMrdENoSlEyejJHT3ZIc2wvdm4vaEpXdHk5ZUY5NXpIUGY5eVA4QWwrOWw2NUppRnpHQnZzWVNGTjFDeUl4N0IrNkg3bUFyUmhMYTB6bTh6SDg2MUtIN2wvZ2VYN3UxdWJTNm10cnBESGN3dVVtamJ1R1U2RUd0ZE9xUExMbHVVSk9NdEdoR2lNT3BDTnQ5aytOcGE0ZVhPVEovNW0rWXgyN0h1c0NIUTZmMW5CL0lLejhxZFhRN24wMWhLRnQzWDlVdUhkL2lhWFZVNlk2a0l6VCtJSTZjRWovMzZEL0s5UVpIMG16eUwvZi9BTkwrNDg0bDZxVU91R3dlcHFCREI2RkJBaDZiUUFZUFFvSU1IcHRBQnc5Q2dnd2VtdENJck8yRjFOTEJlV3ErbzhRTWNzUFR6S1NHVnV2Zll3MTIrTlhNSElWcWV1aVpXdlFsdVU0OXorM1lPY1lNalBlL1czMGt6R0szVzBnRTdFa0lITDZJcC9BZzhGcVRtZVJHNXRVYWFkWDQ5UGVHRnRPZStsTktkK3ZFbUZhc2xvbkZVYW1OQUZsYW1OQURocUZCQTc2RkFCV2VsUVFUZlIyaE85U2x0QWQ2bnpvVUVDSkJyU29JbWZiVG5xY05ta3hlVFgwTGE5dVpKa3k2bnl5eVROMEV6ZjhBWnlCZEVHN3lrQWFhR3NIblBMOGljLzVHUEtTbkdOS0xScGRuV3Vuck9heXNlVnVUYzFXTW54L0VkZTZOeHhlZmtXT2t3dzA1SE1STmw1b2RVamF5Q2tENnBlelNNK25wSDhYUTlkS3ErbUk1V3lYbVArd3VGZjNmMDluN3VqMmo4SlM4NWJQOVhWVDdjQ0dWK25ldWxvZEJRNHRTb0VMdXBVRWR1cFVFQnVvMENBV28wRUZacUtRcUNlK2pRSjIralFSdUhzRWRlTzVML2ZmL0FBVXJVd1Y0WDNuTWM5LzNJLzVmdlpwMGpyR2pPMnUxUVNkQVdPZzY5QU5TYXVtRTNSVk1OOXplUWNGek40SHRJYmo5NXBxazE3R25wcWR2UUs4Y20xbkkrNGo0MW9XSVRpdGVCd3ZPc3ZFdlNyRlMzOWZEM3A4ZmdaMmROZW5id3EwYzJUZkVlSjVMa3VVU3p0Vkt3S1FidTYwOGtTZUpKL1dQNklxTzVjVVZVdmN2d0o1TnhSanc2WDFIcFd3c2Jhd3NvTEsyWFpiMjBheFJMOEZVYUNzcHVycWVtMnJVYmNWR1BCS2d2UUpEcVFqTXY0aFQvd0RJVWY4QXY4SCtWNml2Y0RaNUYvdi9BT2wvY2ViaTFWcUhYalFQVTlCQWg2YlFBWVBRb0lNSHB0QkJnOUJvQWNQVGFDRGg2YTBJT3IwMW9Rb3IwMW9RcXJFMDFvQXNoTk1hRUxCcWEwQU1IcHRCSEY2VkJCR2twVUVFMzBhQ08zMHRvanQ5RGFJSGZTb0FDUVJ5eHRISW9lTndWZEdBS2tIdUNEU1NvQnhUVkh3RTdDeHNyRldTMWlFUWNndm9TU1NCb05TeEo2RG9QaFNsVmtkcXhDMnFRVkIrcjB5aElEdW9VRUJ1cFVFZHVwVUNCdW8wRUFXbzBFQVdvMEVKTTFPU0NjSG8wRWJwL0QrZGVPWlAvZmYvQUFVclJ3L3BmZWN2ejcvY2ovbCs5bWg1WE40dkV4eHlaQ2NRSk0vcHhhaG1MTm9XMEFVTWV3SnE3R0xmQTV5L2syN1NUbTZWSTNJY1o0ZHlhQ085dUxXQzdXZE4wVjNHZHJzdng5UkNySDc2ZEdjbzZGYTloWTJTbEtTVXE5UDVvZ0pQYlQyM3NyMjBpbmdrZVc4Y3BiUk5MS3lzeW9aRHJ0UFFiVjhUVXZuM0dqUGZKc0tFb3ByV1QwMWZlV3pDTmdvRnVNZGlZNDRJN0NVUXp4UnBzVlpDZ2ZUc054MnNOVFVNcThXYTJONVVhd3RwTGE2UHZPVGsrQmZLTmkxdkUrdlZqR1lUdUhuQzdpb1lqYVcyOWRBYVd4MHIwQ1diYWR6eTkzajZpUzNwK3NQeS9IdFRDelViWTNLV1dTdEZ1N09UMUlITEJXMEs2N0dLTjBPaC9FcG95aTA2TWpzMzQzWTdvdXEreU03L0FJaURwd0dQL2Y0UDhzbFJYZUJ2Y2kvMy93RFMvdVBOUmFvVWpyeGtIcWVnQVE5Tm9BTUhvVUVHRFVHaEJnOU5vSU9IcHRCQnc5Qm9Rb3IwMW9Rb3JVMW9SV0k0MnpPVnV4Y1N5a1JTdkZhSkc1alZWVHVmTHAxUHpxbmw1RXJWS2Uwd2I5MlU3alZlSEFmakE1S0gvUXZyMkw0QVM3eCtSZ2Fwcm1UNmRvbEs0dURZdGEydkpmVjJmdm4wVkNzM3FYY0FaUEtwSVhWQnJxMm1ncVdHZEdYRkwzanY1TjVkTmZZTzhMbDhrOTlOak1tcW02U05aNHBvMTJxMGJhRHpMcWREclZtTFVvN2tYY1RKYzI0eTRreVg2VXFGNFNhU25iUUJkOUtnaEc1dmJlMmo5U2VRUnFUb05lNVB3QUhVbjVDanRHenVSaXF0MEcwbWN0WVVFbHhIYzI4SjdUelc4MGNmMmwyWFFmZlVjWlFrNlJsRnZzYUlYa3hXclVrdXR4YVh5SDlvWkwrK3NMR3lsaEV1UmtDUlhFekgwRVFBczhyc2dZN0ZVZUhqcFJuS01GV2IyeERldXlVZkF0OG53UTZ5ZHBKamN0ZDR1YVdHYTRzbVZaSmJkL1VpWU9vZFdSOUJxcFZ2aDM2VWZDOVl0U1hXaFk5NTNJMWNYR1hTbUpLOU5vVGl5UFRXZ0I5OUtnanQxS2dRTjFLZ2dOMUdnZ045S2dnQzlHZ2hObXB5UVF1K2pRUnZIOFBaMTQzay93RGZ2L0JqcTlpcndzNWZuMys1SC9MOTdMbnlYRlp1NnltSnZjWUxkamoybmRrdUhkRjN5eCttamVSWDEyNms2VmZoSkpOUHBPUnpiRjJkeUVyZTN3YnVQYXFMM0ZXYjJ4ek1hTGJ3WDBSU0tKUkJkc1hFaXNJWlZraVZBTnF4eVN6YjJPdmJ3cVh6MTFHVStTWFVxS1MwV2oxcndkVlRxYmRXSlRlMnZJYmh0Wm10Q0NoaUNlcEtWUUMwanRvM0hrQllwdFp0T21wbytmRmZidEdTNUxlbHgyOVhGNmVGUlQ0ZEdySEZ2N2I1cGNsRExjWFVkeFpMY3ROTEUwanEzbGVQMDVOUXAxY3BFQWVvKzNUV2c3Nm9TUTVOZFUwM0pPTzZ2RjlhbytIR2kvTVd2ZUM4aXY0ciszbG10NElaTDI3eUZ2SXJPenZOUEcwVUt2NVFFVkZQbTAxb0s3RlU3cUQ3bks3MXhTaTNGSnpsTmNhMWFvdWpTbnRDV3ZBcytsOUhkM1AwZHhHSkFUWk5KTDZTK25CRkZESURzOHp4K20zUWp4cE85R2xBVytWWGxKU2x0ZXZDcnBwRkpQaHhWQ1k0UHhUSVlGcHZyWGpuYVNDQ09PWldZc2hRRXl4QUVBYlBVWXNEM092V21YYmlsd0xuTE1DZVBYZFI2TFg1cnVycVZ2OEFpS09uQUkvOS9nL3l5Vldud093NUYvdi9BT2wvY2VhQzFScEhYa2VIcXhRYUdEMDJnQVE5Q2dnNGVtMEVHRDBLQ0RoNmJRSWNOUW9JT3IwMmdoVkgwNi9DbXRDSVRoZzlTVjVqK20wc212OEFXYzFoODBscWM1YmRadGx2ckdMUW5PMjJDUS9CVC9KVG9yVkFmQWdNRm8zSU1oSi8zVUVNUS90RXVhNlRGWDlwZDdKdVhyeFNmWWl3TzlUSkdvSXMvV25VQUoyR056ZHhpb2N2RTYzVWM1Y3kyQ3FGa2lWWEtqMDIvVFpRdm1Wdkh0OEt5NTgxdHd2eXRUVzFMaEw4U0sxQzdLQ3VmVW4rbnBYZDE5cUxWdzdqcGx0bnpaaldTNVZQVlZwTkFZb05mS3FLM2kybXJlUGhXQnpybVc2NTVkZkJXbmUrdjhDellVSTBsUDZwNlI3Rjl4ZGNmeXBvYjZlZSt4OXRrSXJtSVFTMjBpQUx0WHR0Nk5wVlBsdDZPTFZiVk9ML0FIZmlHL3l4U3RxTUp5aHRkYTErWm50NWcwNHR6TlBTc3ZwclRNUnltQ3ozYUpiUzdoSS9wYTZnTEluY2ZGZm5WNythOHpIZXYrM0wzcC8vQUEvZVZzZFc3VjFPMjkwSnBydWt1UGR1NCt3THlXeUVWd3VTUmdVdU5rTXEvQWdIWXluNEhYUTFkNUpsY2JMWFcxOTVieXJkSmIvM2FmZ1JhdlhSTkVBdWoweG9RY05Rb0lIZFNvSURkUm9JN2RTb0lEZFJvSURkU29FSXpVNUlRbVg2MDZnalRmWnYzSHcvR3hlWXpNc1lMTzdrRTBWMkZMQkpBb1JsY0tDMmhBR2hBcXhabW82TXhlYmN2bmVwS0dyV2xEVmYrYi90di82NUYvY20vd0JpckhtUjZ6RC9BT0t5UDJQNEFmOEFPRDIyL3dEWEl2N2szK3hTOHlJditLeVAyUDRIZjg0UGJiLzF5TCs1Ti9zVXZNUXYrS3lmMlA0SGY4My9BRzIvOWNpL3VUZjdGTHpFTC9pc245aitCMy9PRDIyLzljaC91VGY3RkxlaGY4Vmsvc2Z3QS81eGUydi9BSzdEL2NtLzJLTzlDLzRySi9ZL2dBZmVUMnpIL3dEZllmN2szK3hTM0lYL0FCV1QreC9BeXYzdTkwOER5TEhXK0N3VG02dDBtVzV1YndxeUlTaWtJaWJnQ2Z4YWs2VUpPcHRjbzVkTzFKem5vNlVvWTJXb0pHK1J1K3JGQ0lNSG9VRUNHb1VFR0RVMmdnNGVnMEVPSHB0QkIxZWhRUW9yMDFvUUZ4TUk3V2FUOVNOMi9JcE5OYUd6ZEl0OWd3NFl5UXhSaDNDQXdBK1lnYWtrSHhybk9ZcHR1bldjN2p2VXRxc3JmaElQMkhXc3FoY0ViNDZXc256R241VFRyZjFJYlBnUWZHK3QxbHB2MXJoWXdmbEhHQi9QWFVZOGFXNDl4YjVjdEpQdEpsM3FaSTBCQnBLZFFCS1lPOFFZeTdzNGtZekdjdkx0N0FPRkk2RDlZRDh1dGN0emUwLzVDaytHMVVIMkowaktLNDFKZkE4cHMzaHRjTmMyNlF0alQ2TjFNaDBsZU5qckc1MTE2TXVuMzYxa1pXRkpOM0l1dS9WZFZlbEZleGZ1UTNwZUtTNFI2dXIza3JrODlFakRIWXJTV0NabGNHUXF4V1R0cHZBSFNxdG5GYjhkelJyNUVsbkxrMTVrNDdaTDVkeFR1YVQ1eGNqQTVtUzd2N1UrcXlTTVdWbFpDdnBoaitBN1Qwcm91VDRjTHR1VkZ0ZzlQYVZIZGR5S2xiWDB0dWowcjJkaEczZkxEbVo3T3hqamUzaHQwYWU1aGFOa1lUSVFxSTVJMjZBTVdHMDlhdjhBTHVWT3hPVTVmVndYZDBrcnpQT2xHTkdsRlZhcDA5WDI0aTZ5VnJORTR1ajAxb1FvSG9VQ0R2b1VFQnZvMEVkdnBVRUJ2bzBDQnZvMEVBV28wRUpNMU9TRUYzMGFDQ3MxRklRUXZUcUNBMzBhQkIzMHFCT0xVYUJDTTFPU0VKTWFja0lUWTA2Z0JNbW5VRVJZYXJOQ0FFTlFvSU1HcHRBaGcxQ2dnd2FoUUljTlRhQ0RxMU5vRVVWcURRZzVDU0l5T0F5T0NyS2V4QjZFVTFvVFZWUmtTdkhiMkliTFcrQWhHdnB4eXg3dG84QnVCMTZWVm5qUWs2bVhMbFhWSUVZcmtjZjRIdHBQc1o0ei9QVU1zS0RJbnl5NHVEUU92S29ob2JReUQ0TE9yTCtSdEtoZkxvdnArQkc4Tyt1aXZ0SmpCMlU5bFpNdHl5bTRua2VlYlorRU0vNkkxK0ZYVkJKSkxvTmZFc08zQ2o0anQzcHlSWVlpejA2ZzBhM2N0NUNodXJBdXQ3SHQyZWsyd3VvWUZrYnFGWUVhOUdxRy9qUXV4MnlTWkJmVXFib2ZXdUg0RGFLemxtbm15Rnd6VytSdUpESXNrTDZORW1nVkl0M1pnRlVhZ2pRbW0yOFdFYlN0dGJrdm4xa01NYXRaeTBtM1hUbzZsOXRCL0hjWlVEYkpmdTYvRVJ4bzM5NEQrU3E2NVhZcldueEo0d24weWI5aURoL2lTU2VwSk9wSitaTlhZd1VWUktpSlVxY0EzcUdqUUlkWG9VRU9JM3ByUVJVUFRhQkIzVXFDQTNVcUNBM1VhQ0EzVXFDQUxVYUJBTFVhQ0UzYW5KQ0V5OUdnZ0M5R2dnaGFuSkNDN3FOQkE3cU5BZzdxVkFnRnFOQWhHTk9TRUpNYWNrQVRKcDFCRVR1cXpRckE3cUZCVkRCcUZBaGcxTm9JTUdvVUVIRFVLQkRocWJRSW9yVTFvSXNqVTFvS0YwYW1ORGtMSzFOYUNIRFVLQk9MVUtBRVpIb3BEV0lNOU9vTkM3NlZBSGI2VkJBNzZWQkFoNkZCQWg2VkJCMWVoUUk1amVtTkRrS2g2RkFodDlDZ2dOMUdnVHQxS2dBTjFHZ1FOMUtnZ0MxR2dnakduSkNFaTFHZ0FDOUdnZ2hhblVFRjNVYUNPMzBhQkIzMHFEamkxR2dRcGFuVUVKc2FLUWhOalRrZ0VSdXF4UXAxQkRVS0NxR0RVS0JCRFVLQnFHRFVLQ0RocUZBaDFhbXRCRkZhZzBGQ3lOVFdoeUYwYW1ORGtMSzlOYUhCdzFOb0lCbnBVQXhDUjZja01ZaXowYURRdStsUUIyK2xRUU8rbFFRTytoUVFJZWxRSWRYb05CSE1iMHhvY2hZUFFvT0IzMEtDTzMwYUNBMzBxQ08zMGFCQTMwcUNBMzBhQ0NNMUdnaEptcHlRQW0rblVFQVhvMEVGTFVhQUEzMGFCQjMwcURrZHVvMENBV28wQ0ZKbzBFRUpwMUFFTUdxeFFvQWcwS0JxR0RVS0NxR0RVS0JCRFVLQnFIRFVLQkRxMU5vRVVWcUZCeUYwYW10RDBMSzFOYUhJVlZxYTBPRDc2RkJCV2VoUURFSGVuVUkySXM5R2d3THVwVUFkdXBVRUR2cFVFRHVvVUNDR3BVRUhWcUZBam1ONmEwUFFzR3B0QjRiZFFvSTdkUm9JRGRTb0VEZlJvSTdmU29JQXZSb0lJV28wRUpzMU9TQUpscWRRQUJhbFFRVXRSb0lEZFJvSUhkUm9PUU82bFFJRzZqUUlCYWpRSVV0Um9BaFExV0tHY0RyU29JRU5UYUJEQTBxQkRCcUZBaGdhQVE2dFRhQlFxclVHaDZGa2FtdEQwTEsxTmFISVVWcWJRY0czVUtCQ3MxR2cxaUR0Um9STVJMVWFER0J1cFVCVTdkU29JN2NhVkJBaHFGQWdocVZCQjFlaFFjaHpHOU5hSkVMaDZiUWVnZDFLZ2p0MUtnVHQxS2dnTjFHZ2dOMUtnZ04xR2dnQzFHZ2hOalRrZ01UTFVhRFFOMUdnZ3BhalFRRzZqUVIyNmxRSU82alFjZHVwVUhIRnFOQkJDYUlpRkJxeFF5d1FhRkFoZ2FGQkE2MEtCREEwS0JEaHFGQndkV29VQ2hWVFRhRDBLcTFDaEloWldwdEI2RkExQ2c0TnVvVUVKczFLZ3hpTHRSb1JzUkxVYUViQTNVcUFPM1VxQ0IzVXFDT0RVS0NEQnFWQWhsYnJRb0ZEbU5xYTBTeEZ3MUNoSWcyNmhRSjI2alFRRzZsUVZEdDFLZ2dOMUdnUU4xR2dncGFsUUFSbTZVNmdHSnMxR2dBdTZqUUFCYWpRUUc2alFSMjZsUUoyNmpRY2R1bzBIQTdxVkJCUzFHZ1QvOWs9"},{ name : "__ASSET__:file___ASSET__data_gameplay_js", data : "ewoJImxldmVsc0RhdGEiOiBbCgkJewoJCQkiaWQiOiAxLAoJCQkidHlwZSI6ICJub3JtYWwiLAoJCQkiYmFjayI6IDEsCgkJCSJwaW5hdGFzIjogWzNdLAoJCQkicGluYXRhSFAiOiAiMTAtMTAiLAoJCQkiY2FuZHlSZXdhcmQiOiAiMS0xIgoJCX0sCgkJewoJCQkiaWQiOiAyLAoJCQkiY291bnRUb1VubG9jayI6IDYsCgkJCSJ0eXBlIjogIm5vcm1hbCIsCgkJCSJiYWNrIjogMSwKCQkJInBpbmF0YXMiOiBbMyw5XSwKCQkJInBpbmF0YUhQIjogIjI2LTI4IiwKCQkJImNhbmR5UmV3YXJkIjogIjItMyIKCQl9LAoJCXsKCQkJImlkIjogMywKCQkJImNvdW50VG9VbmxvY2siOiAxMCwKCQkJInR5cGUiOiAibm9ybWFsIiwKCQkJImJhY2siOiAxLAoJCQkicGluYXRhcyI6IFszLDksMTFdLAoJCQkicGluYXRhSFAiOiAiNDMtNDYiLAoJCQkiY2FuZHlSZXdhcmQiOiAiNC01IgoJCX0sCgkJewoJCQkiaWQiOiA0LAoJCQkiY291bnRUb1VubG9jayI6IDEwLAoJCQkidHlwZSI6ICJub3JtYWwiLAoJCQkiYmFjayI6IDEsCgkJCSJwaW5hdGFzIjogWzMsOSwxMSwxM10sCgkJCSJwaW5hdGFIUCI6ICI2Ny03MiIsCgkJCSJjYW5keVJld2FyZCI6ICI2LTciCgkJfSwKCQl7CgkJCSJpZCI6IDUsCgkJCSJjb3VudFRvVW5sb2NrIjogNSwKCQkJInR5cGUiOiAiZ2lmdCIsCgkJCSJiYWNrIjogMSwKCQkJInBpbmF0YXMiOiBbMyw5LDExLDEzXSwKCQkJInBpbmF0YUhQIjogIjE0NS0xNjUiLAoJCQkiY2FuZHlSZXdhcmQiOiAiMTAtMTMiLAoJCQkiZ2lmdERhdGEiOiB7CgkJCQkiZHVyYXRpb24iOiAxNSwKCQkJCSJyZXdhcmRSYW5nZSI6ICIxLTcwMCIsCgkJCQkiaGl0c1JhbmdlIjogIjEtMTUwMCIKCQkJfQoJCX0sCgkJewoJCQkiaWQiOiA2LAoJCQkiY291bnRUb1VubG9jayI6IDEsCgkJCSJ0eXBlIjogIm5vcm1hbCIsCgkJCSJiYWNrIjogMSwKCQkJInBpbmF0YXMiOiBbMywyLDksMTEsMTNdLAoJCQkicGluYXRhSFAiOiAiMjEwLTIzMCIsCgkJCSJjYW5keVJld2FyZCI6ICIxNC0xOCIKCQl9LAoJCXsKCQkJImlkIjogNywKCQkJImNvdW50VG9VbmxvY2siOiAxMCwKCQkJInR5cGUiOiAibm9ybWFsIiwKCQkJImJhY2siOiAxLAoJCQkicGluYXRhcyI6IFszLDIsOSwxMSwxM10sCgkJCSJwaW5hdGFIUCI6ICIzMDAtMzI1IiwKCQkJImNhbmR5UmV3YXJkIjogIjIwLTI1IgoJCX0sCgkJewoJCQkiaWQiOiA4LAoJCQkiY291bnRUb1VubG9jayI6IDEwLAoJCQkidHlwZSI6ICJub3JtYWwiLAoJCQkiYmFjayI6IDIsCgkJCSJwaW5hdGFzIjogWzIsMyw3LDksMTEsMTNdLAoJCQkicGluYXRhSFAiOiAiNDgwLTUyMCIsCgkJCSJjYW5keVJld2FyZCI6ICIzMS0zNyIKCQl9LAoJCXsKCQkJImlkIjogOSwKCQkJImNvdW50VG9VbmxvY2siOiAxMiwKCQkJInR5cGUiOiAibm9ybWFsIiwKCQkJImJhY2siOiAyLAoJCQkicGluYXRhcyI6IFsyLDMsNyw5LDExLDEzXSwKCQkJInBpbmF0YUhQIjogIjExNTAtMTI5MCIsCgkJCSJjYW5keVJld2FyZCI6ICI3Ni04MyIKCQl9LAoJCXsKCQkJImlkIjogMTAsCgkJCSJjb3VudFRvVW5sb2NrIjogMTIsCgkJCSJ0eXBlIjogImdpZnQiLAoJCQkiYmFjayI6IDIsCgkJCSJwaW5hdGFzIjogWzIsMyw3LDksMTAsMTEsMTNdLAoJCQkicGluYXRhSFAiOiAiMTc1MC0xOTAwIiwKCQkJImNhbmR5UmV3YXJkIjogIjExNS0xMzMiLAoJCQkiZ2lmdERhdGEiOiB7CgkJCQkiZHVyYXRpb24iOiAxNSwKCQkJCSJyZXdhcmRSYW5nZSI6ICIxLTI1MDAiLAoJCQkJImhpdHNSYW5nZSI6ICIxLTEwSyIKCQkJfQoJCX0sCgkJewoJCQkiaWQiOiAxMSwKCQkJImNvdW50VG9VbmxvY2siOiAxLAoJCQkidHlwZSI6ICJub3JtYWwiLAoJCQkiYmFjayI6IDIsCgkJCSJwaW5hdGFzIjogWzIsMyw1LDcsOSwxMCwxMSwxM10sCgkJCSJwaW5hdGFIUCI6ICIyMzAwLTI3MDAiLAoJCQkiY2FuZHlSZXdhcmQiOiAiMTgwLTIxMCIKCQl9LAoJCXsKCQkJImlkIjogMTIsCgkJCSJjb3VudFRvVW5sb2NrIjogMTQsCgkJCSJ0eXBlIjogIm5vcm1hbCIsCgkJCSJiYWNrIjogMiwKCQkJInBpbmF0YXMiOiBbMiwzLDUsNyw5LDEwLDExLDEzXSwKCQkJInBpbmF0YUhQIjogIjQxNTAtNDQ1MCIsCgkJCSJjYW5keVJld2FyZCI6ICIyOTAtMzE1IgoJCX0sCgkJewoJCQkiaWQiOiAxMywKCQkJImNvdW50VG9VbmxvY2siOiAxNCwKCQkJInR5cGUiOiAibm9ybWFsIiwKCQkJImJhY2siOiAyLAoJCQkicGluYXRhcyI6IFsxLDIsMyw1LDcsOSwxMCwxMSwxM10sCgkJCSJwaW5hdGFIUCI6ICI5ODAwLTEwMjAwIiwKCQkJImNhbmR5UmV3YXJkIjogIjc3MC04MjAiCgkJfSwKCQl7CgkJCSJpZCI6IDE0LAoJCQkiY291bnRUb1VubG9jayI6IDE3LAoJCQkidHlwZSI6ICJub3JtYWwiLAoJCQkiYmFjayI6IDIsCgkJCSJwaW5hdGFzIjogWzEsMiwzLDUsNyw4LDksMTAsMTEsMTNdLAoJCQkicGluYXRhSFAiOiAiMTc1MDAtMTg1MDAiLAoJCQkiY2FuZHlSZXdhcmQiOiAiMTE1MC0xMjUwIgoJCX0sCgkJewoJCQkiaWQiOiAxNSwKCQkJImNvdW50VG9VbmxvY2siOiAxNywKCQkJInR5cGUiOiAiZ2lmdCIsCgkJCSJiYWNrIjogMiwKCQkJInBpbmF0YXMiOiBbMSwyLDMsNSw3LDgsOSwxMCwxMSwxM10sCgkJCSJwaW5hdGFIUCI6ICIyOTAwMC0zMTAwMCIsCgkJCSJjYW5keVJld2FyZCI6ICIxOTAwLTIxMDAiLAoJCQkiZ2lmdERhdGEiOiB7CgkJCQkiZHVyYXRpb24iOiAxNSwKCQkJCSJyZXdhcmRSYW5nZSI6ICIxLTlLIiwKCQkJCSJoaXRzUmFuZ2UiOiAiMS03MEsiCgkJCX0KCQl9LAoJCXsKCQkJImlkIjogMTYsCgkJCSJjb3VudFRvVW5sb2NrIjogMSwKCQkJInR5cGUiOiAibm9ybWFsIiwKCQkJImJhY2siOiAyLAoJCQkicGluYXRhcyI6IFsxLDIsMyw1LDcsOCw5LDEwLDExLDEyLDEzXSwKCQkJInBpbmF0YUhQIjogIjYwMDAwLTYyNTAwIiwKCQkJImNhbmR5UmV3YXJkIjogIjM3MDAtNDEwMCIKCQl9LAoJCXsKCQkJImlkIjogMTcsCgkJCSJjb3VudFRvVW5sb2NrIjogMTgsCgkJCSJ0eXBlIjogIm5vcm1hbCIsCgkJCSJiYWNrIjogMiwKCQkJInBpbmF0YXMiOiBbMSwyLDMsNSw3LDgsOSwxMCwxMSwxMiwxM10sCgkJCSJwaW5hdGFIUCI6ICIxMTAwMDAtMTEzMDAwIiwKCQkJImNhbmR5UmV3YXJkIjogIjc5MDAtODI1MCIKCQl9LAoJCXsKCQkJImlkIjogMTgsCgkJCSJjb3VudFRvVW5sb2NrIjogMTksCgkJCSJ0eXBlIjogIm5vcm1hbCIsCgkJCSJiYWNrIjogMywKCQkJInBpbmF0YXMiOiBbMSwyLDMsNCw1LDcsOCw5LDEwLDExLDEyLDEzXSwKCQkJInBpbmF0YUhQIjogIjIyMDAwMC0yMzAwMDAiLAoJCQkiY2FuZHlSZXdhcmQiOiAiMTUwMDAtMTYyMDAiCgkJfSwKCQl7CgkJCSJpZCI6IDE5LAoJCQkiY291bnRUb1VubG9jayI6IDE5LAoJCQkidHlwZSI6ICJub3JtYWwiLAoJCQkiYmFjayI6IDMsCgkJCSJwaW5hdGFzIjogWzEsMiwzLDQsNSw3LDgsOSwxMCwxMSwxMiwxM10sCgkJCSJwaW5hdGFIUCI6ICI0MzAwMDAtNDQ1MDAwIiwKCQkJImNhbmR5UmV3YXJkIjogIjMyMDAwLTM1MDAwIgoJCX0sCgkJewoJCQkiaWQiOiAyMCwKCQkJImNvdW50VG9VbmxvY2siOiAyMCwKCQkJInR5cGUiOiAiZ2lmdCIsCgkJCSJiYWNrIjogMywKCQkJInBpbmF0YXMiOiBbMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTNdLAoJCQkicGluYXRhSFAiOiAiOTAwMDAwLTkyMDAwMCIsCgkJCSJjYW5keVJld2FyZCI6ICI2MDAwMC02NDAwMCIsCgkJCSJnaWZ0RGF0YSI6IHsKCQkJCSJkdXJhdGlvbiI6IDE4LAoJCQkJInJld2FyZFJhbmdlIjogIjEtNjAwSyIsCgkJCQkiaGl0c1JhbmdlIjogIjEtMk0iCgkJCX0KCQl9LAoJCXsKCQkJImlkIjogMjEsCgkJCSJjb3VudFRvVW5sb2NrIjogMSwKCQkJInR5cGUiOiAibm9ybWFsIiwKCQkJImJhY2siOiAzLAoJCQkicGluYXRhcyI6IFsxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxM10sCgkJCSJwaW5hdGFIUCI6ICIxNTAwMDAwLTE1NTAwMDAiLAoJCQkiY2FuZHlSZXdhcmQiOiAiOTUwMDAtMTEwMDAwIgoJCX0sCgkJewoJCQkiaWQiOiAyMiwKCQkJImNvdW50VG9VbmxvY2siOiAyMCwKCQkJInR5cGUiOiAibm9ybWFsIiwKCQkJImJhY2siOiAzLAoJCQkicGluYXRhcyI6IFsxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxM10sCgkJCSJwaW5hdGFIUCI6ICIyNjUwSy0yNzUwSyIsCgkJCSJjYW5keVJld2FyZCI6ICIxNjVLLTE3M0siCgkJfSwKCQl7CgkJCSJpZCI6IDIzLAoJCQkiY291bnRUb1VubG9jayI6IDIwLAoJCQkidHlwZSI6ICJub3JtYWwiLAoJCQkiYmFjayI6IDMsCgkJCSJwaW5hdGFzIjogWzEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzXSwKCQkJInBpbmF0YUhQIjogIjQwMDBLLTQxNDBLIiwKCQkJImNhbmR5UmV3YXJkIjogIjIxMEstMjE4SyIKCQl9LAoJCXsKCQkJImlkIjogMjQsCgkJCSJjb3VudFRvVW5sb2NrIjogMjAsCgkJCSJ0eXBlIjogIm5vcm1hbCIsCgkJCSJiYWNrIjogMywKCQkJInBpbmF0YXMiOiBbMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTNdLAoJCQkicGluYXRhSFAiOiAiNjgwMEstNzAzMEsiLAoJCQkiY2FuZHlSZXdhcmQiOiAiMjkwSy0zMDRLIgoJCX0sCgkJewoJCQkiaWQiOiAyNSwKCQkJImNvdW50VG9VbmxvY2siOiAyMCwKCQkJInR5cGUiOiAiZ2lmdCIsCgkJCSJiYWNrIjogMywKCQkJInBpbmF0YXMiOiBbMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTNdLAoJCQkicGluYXRhSFAiOiAiMTIwMDBLLTEyODAwSyIsCgkJCSJjYW5keVJld2FyZCI6ICI0NzBLLTUzMEsiLAoJCQkiZ2lmdERhdGEiOiB7CgkJCQkiZHVyYXRpb24iOiAxOCwKCQkJCSJyZXdhcmRSYW5nZSI6ICIxLTVNIiwKCQkJCSJoaXRzUmFuZ2UiOiAiMS0yOE0iCgkJCX0KCQl9LAoJCXsKCQkJImlkIjogMjYsCgkJCSJjb3VudFRvVW5sb2NrIjogMSwKCQkJInR5cGUiOiAibm9ybWFsIiwKCQkJImJhY2siOiAzLAoJCQkicGluYXRhcyI6IFsxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxM10sCgkJCSJwaW5hdGFIUCI6ICI4ODAwSy05MDMwSyIsCgkJCSJjYW5keVJld2FyZCI6ICIzMjBLLTM4MEsiCgkJfQoJXSwKCSJtaXNzaW9uc0RhdGEiOiB7CgkJInR5cGVzIjogWwoJCQl7ImlkIjogImhvbGRfY2FuZGllcyIsICJkZXNjIjogIkhPTEQgIyBDQU5ESUVTIn0sCgkJCXsiaWQiOiAiYmVhdF9waW5hdGFzIiwgImRlc2MiOiAiQlJFQUsgT1BFTiAjIFBJbkFUQVMifSwKCQkJeyJpZCI6ICJnZXRfdG9vbCIsICJkZXNjIjogIkdFVCBUSEUgIyJ9LAoJCQl7ImlkIjogInJlYWNoX2hwcyIsICJkZXNjIjogIlJFQUNIICMgSFBTIn0sCgkJCXsiaWQiOiAicmVhY2hfbGV2ZWwiLCAiZGVzYyI6ICJVTkxPQ0sgTEVWRUwgIyJ9CgkJXSwKCQkiZGF0YSI6IFsKCQkJewoJCQkJInBhY2tJZCI6IDEsCgkJCQkicGluYXRhSWQiOiAzLAoJCQkJInJld2FyZCI6ICI1MDAiLAoJCQkJIm1pc3Npb25zIjogWwoJCQkJCXsiaWQiOiAicmVhY2hfbGV2ZWwiLCAidmFsdWUiOiAiMiJ9LAoJCQkJCXsiaWQiOiAicmVhY2hfbGV2ZWwiLCAidmFsdWUiOiAiMyJ9LAoJCQkJCXsiaWQiOiAiZ2V0X3Rvb2wiLCAidmFsdWUiOiAicGluYXRhLXNtYXNoZXIifSwKCQkJCQl7ImlkIjogImJlYXRfcGluYXRhcyIsICJ2YWx1ZSI6ICIxMCJ9LAoJCQkJCXsiaWQiOiAiZ2V0X3Rvb2wiLCAidmFsdWUiOiAicHVuY2gtaW50ZW5kZWQifSwKCQkJCQl7ImlkIjogInJlYWNoX2xldmVsIiwgInZhbHVlIjogIjcifSwKCQkJCQl7ImlkIjogImJlYXRfcGluYXRhcyIsICJ2YWx1ZSI6ICIyMCJ9LAoJCQkJCXsiaWQiOiAiaG9sZF9jYW5kaWVzIiwgInZhbHVlIjogIjQwMCJ9LAoJCQkJCXsiaWQiOiAicmVhY2hfbGV2ZWwiLCAidmFsdWUiOiAiOSJ9CgkJCQldCgkJCX0sCgkJCXsKCQkJCSJwYWNrSWQiOiAyLAoJCQkJInBpbmF0YUlkIjogNCwKCQkJCSJyZXdhcmQiOiAiNUsiLAoJCQkJIm1pc3Npb25zIjogWwoJCQkJCXsiaWQiOiAiZ2V0X3Rvb2wiLCAidmFsdWUiOiAiaGFtbWVyIn0sCgkJCQkJeyJpZCI6ICJyZWFjaF9sZXZlbCIsICJ2YWx1ZSI6ICIxMiJ9LAoJCQkJCXsiaWQiOiAicmVhY2hfaHBzIiwgInZhbHVlIjogIjQyMCJ9LAoJCQkJCXsiaWQiOiAiaG9sZF9jYW5kaWVzIiwgInZhbHVlIjogIjI1MDAifSwKCQkJCQl7ImlkIjogInJlYWNoX2xldmVsIiwgInZhbHVlIjogIjE0In0sCgkJCQkJeyJpZCI6ICJiZWF0X3BpbmF0YXMiLCAidmFsdWUiOiAiMTUifSwKCQkJCQl7ImlkIjogInJlYWNoX2hwcyIsICJ2YWx1ZSI6ICIyNTAwIn0sCgkJCQkJeyJpZCI6ICJob2xkX2NhbmRpZXMiLCAidmFsdWUiOiAiNjAwMCJ9LAoJCQkJCXsiaWQiOiAicmVhY2hfbGV2ZWwiLCAidmFsdWUiOiAiMTUifQoJCQkJXQoJCQl9LAoJCQl7CgkJCQkicGFja0lkIjogMywKCQkJCSJwaW5hdGFJZCI6IDYsCgkJCQkicmV3YXJkIjogIjgwSyIsCgkJCQkibWlzc2lvbnMiOiBbCgkJCQkJeyJpZCI6ICJnZXRfdG9vbCIsICJ2YWx1ZSI6ICJiYXR0bGUtYXhlIn0sCgkJCQkJeyJpZCI6ICJyZWFjaF9ocHMiLCAidmFsdWUiOiAiNDAwMCJ9LAoJCQkJCXsiaWQiOiAiaG9sZF9jYW5kaWVzIiwgInZhbHVlIjogIjE1SyJ9LAoJCQkJCXsiaWQiOiAiYmVhdF9waW5hdGFzIiwgInZhbHVlIjogIjI1In0sCgkJCQkJeyJpZCI6ICJyZWFjaF9sZXZlbCIsICJ2YWx1ZSI6ICIxNyJ9LAoJCQkJCXsiaWQiOiAicmVhY2hfaHBzIiwgInZhbHVlIjogIjE0SyJ9LAoJCQkJCXsiaWQiOiAiZ2V0X3Rvb2wiLCAidmFsdWUiOiAiYmF0LWNhbm5vbiJ9LAoJCQkJCXsiaWQiOiAiaG9sZF9jYW5kaWVzIiwgInZhbHVlIjogIjgwSyJ9LAoJCQkJCXsiaWQiOiAicmVhY2hfbGV2ZWwiLCAidmFsdWUiOiAiMTkifQoJCQkJXQoJCQl9LAoJCQl7CgkJCQkicGFja0lkIjogNCwKCQkJCSJwaW5hdGFJZCI6IDMsCgkJCQkicmV3YXJkIjogIjUwMEsiLAoJCQkJIm1pc3Npb25zIjogWwoJCQkJCXsiaWQiOiAicmVhY2hfaHBzIiwgInZhbHVlIjogIjIySyJ9LAoJCQkJCXsiaWQiOiAiYmVhdF9waW5hdGFzIiwgInZhbHVlIjogIjI1In0sCgkJCQkJeyJpZCI6ICJnZXRfdG9vbCIsICJ2YWx1ZSI6ICJiYXQtYmF0In0sCgkJCQkJeyJpZCI6ICJob2xkX2NhbmRpZXMiLCAidmFsdWUiOiAiNTAwSyJ9LAoJCQkJCXsiaWQiOiAicmVhY2hfbGV2ZWwiLCAidmFsdWUiOiAiMjIifSwKCQkJCQl7ImlkIjogInJlYWNoX2hwcyIsICJ2YWx1ZSI6ICIyMDBLIn0sCgkJCQkJeyJpZCI6ICJyZWFjaF9sZXZlbCIsICJ2YWx1ZSI6ICIyNCJ9LAoJCQkJCXsiaWQiOiAiaG9sZF9jYW5kaWVzIiwgInZhbHVlIjogIjJNIn0sCgkJCQkJeyJpZCI6ICJnZXRfdG9vbCIsICJ2YWx1ZSI6ICJtdXR0b24tY2hvcCJ9CgkJCQldCgkJCX0sCgkJCXsKCQkJCSJwYWNrSWQiOiA1LAoJCQkJInBpbmF0YUlkIjogNiwKCQkJCSJyZXdhcmQiOiAiMU0iLAoJCQkJIm1pc3Npb25zIjogWwoJCQkJCXsiaWQiOiAiaG9sZF9jYW5kaWVzIiwgInZhbHVlIjogIjNNIn0sCgkJCQkJeyJpZCI6ICJnZXRfdG9vbCIsICJ2YWx1ZSI6ICJ3cmVja2luZy1iYWxsIn0sCgkJCQkJeyJpZCI6ICJyZWFjaF9ocHMiLCAidmFsdWUiOiAiNjAwSyJ9LAoJCQkJCXsiaWQiOiAicmVhY2hfbGV2ZWwiLCAidmFsdWUiOiAiMjgifSwKCQkJCQl7ImlkIjogInJlYWNoX2xldmVsIiwgInZhbHVlIjogIjIwIn0sCgkJCQkJeyJpZCI6ICJnZXRfdG9vbCIsICJ2YWx1ZSI6ICJiYXQtYmF0In0sCgkJCQkJeyJpZCI6ICJyZWFjaF9sZXZlbCIsICJ2YWx1ZSI6ICIyMiJ9LAoJCQkJCXsiaWQiOiAiaG9sZF9jYW5kaWVzIiwgInZhbHVlIjogIjE1MEsifSwKCQkJCQl7ImlkIjogInJlYWNoX2hwcyIsICJ2YWx1ZSI6ICI5MDAwIn0KCQkJCV0KCQkJfQoJCV0KCX0sCgkidG9vbHNEYXRhIjogWwoJCXsKCQkJImlkIjogImdvb2Qtb2wtYmF0IiwKCQkJImFuaW1UeXBlIjogInNtYWNrIiwKCQkJImhwc0RhdGEiOiAiMToxLTM6Miw0OjMtMTE6MTAsMTI6MTEtMjcwOjQwLDMwMDo0MS0zSzoxMDAsMzUwMDoxMDEtN0s6MTUwLDhLOjE1MS0yNUs6MjAwLDI3SzoyMDEtMTAwS0s6MzAwLDhLIiwKCQkJInByaWNlRGF0YSI6ICIzOjItMjA6MTAsMjU6MTEtNDAwOjQwLDQ1MDo0MS02SzoxMDAsNjI1MDoxMDEtMjFLOjE1MCwyMUs6MTUxLTk0SzoyMDAsMTAwSzoyMDEtMU06MzAwLDI3SyIKCQl9LAoJCXsKCQkJImlkIjogInBpbmF0YS1zbWFzaGVyIiwKCQkJImFuaW1UeXBlIjogInNtYWNrIiwKCQkJImhwc0RhdGEiOiAiNToxLTEwMDoyMCwxMDc6MjEtMzgwOjEwMCw0NTA6MTAxLTZLOjIwMCw4MCIsCgkJCSJwcmljZURhdGEiOiAiMzU6MS0xMTA6MjAsMTE3OjIxLTkyMDoxMDAsMUs6MTAxLTIwSzoyMDAsNjAwIiwKCQkJInNob3dXaGVuUHJldiI6IDIKCQl9LAoJCXsKCQkJImlkIjogInB1bmNoLWludGVuZGVkIiwKCQkJImFuaW1UeXBlIjogInJhbSIsCgkJCSJocHNEYXRhIjogIjIyOjEtNDQwOjIwLDQ2MDoyMS0yMDQwOjEwMCwyMjAwOjEwMS05SzoyMDAsMTAwIiwKCQkJInByaWNlRGF0YSI6ICIyNTA6MS01OTA6MjAsNjE1OjIxLTMwMTU6MTAwLDMwNTU6MTAxLTMwSzoyMDAsODAwIiwKCQkJInNob3dXaGVuUHJldiI6IDEKCQl9LAoJCXsKCQkJImlkIjogImhhbW1lciIsCgkJCSJhbmltVHlwZSI6ICJzbWFjayIsCgkJCSJocHNEYXRhIjogIjc0OjEtMTUwMDoyMCwxNjAwOjIxLTk2MDA6MTAwLDk3MjA6MTAxLTIxNzIwOjIwMCwxNDAiLAoJCQkicHJpY2VEYXRhIjogIjEwMDA6MS0yNDUwOjIwLDI1NDA6MjEtOTc0MDoxMDAsMTBLOjEwMS02MEs6MjAwLDEyMDAiLAoJCQkic2hvd1doZW5QcmV2IjogMQoJCX0sCgkJewoJCQkiaWQiOiAiYmF0dGxlLWF4ZSIsCgkJCSJhbmltVHlwZSI6ICJzbWFjayIsCgkJCSJocHNEYXRhIjogIjI2MDoxLTUwMDA6MjAsNTI2MDoyMS0yNjA2MDoxMDAsMjYzNDA6MTAxLTU0NDAwOjIwMCwyOTAiLAoJCQkicHJpY2VEYXRhIjogIjQwMDA6MS0xMDAwMDoyMCwxMDM1MDoyMS0zODQwMDoxMDAsMzg5MDA6MTAxLTkwMDAwOjIwMCw3NTAiLAoJCQkic2hvd1doZW5QcmV2IjogMQoJCX0sCgkJewoJCQkiaWQiOiAiYmF0LWNhbm5vbiIsCgkJCSJhbmltVHlwZSI6ICJyYW0iLAoJCQkiaHBzRGF0YSI6ICI4MzA6MS0xNzkwMDoyMCwxODkwMDoyMS05OTAwMDoxMDAsMTAwMTUwOjEwMS0yMTUyMDA6MjAwLDEyMDAiLAoJCQkicHJpY2VEYXRhIjogIjE1MDAwOjEtMzUwMDA6MjAsMzYzMDA6MjEtMTQwNTAwOjEwMCwxNDI1MDA6MTAxLTQwMEs6MjAwLDVLIiwKCQkJInNob3dXaGVuUHJldiI6IDEKCQl9LAoJCXsKCQkJImlkIjogImJhdC1iYXQiLAoJCQkiYW5pbVR5cGUiOiAic21hY2siLAoJCQkiaHBzRGF0YSI6ICIyODAwOjEtNTUwMDA6MjAsNTgwMDA6MjEtMzAwMDAwOjEwMCwzMDMyMDA6MTAxLTYxMEs6MjAwLDMzMDAiLAoJCQkicHJpY2VEYXRhIjogIjUzMDAwOjEtMTkzMDAwOjIwLDIwMTUwMDoyMS04ODIwMDA6MTAwLDg5MjAwMDoxMDEtMjIwMDAwMDoyMDAsMTlLIiwKCQkJInNob3dXaGVuUHJldiI6IDEKCQl9LAoJCXsKCQkJImlkIjogIm11dHRvbi1jaG9wIiwKCQkJImFuaW1UeXBlIjogInNtYWNrIiwKCQkJImhwc0RhdGEiOiAiMTAwMDA6MS0xODAwMDA6MjAsMTg5MDAwOjIxLTkxMDAwMDoxMDAsOTIxMDAwOjEwMS0yMDIxMDA6MjAwLDEyMDAwIiwKCQkJInByaWNlRGF0YSI6ICIyMDAwMDA6MS03MDAwMDA6MjAsNzMwMDAwOjIxLTMxMzAwMDA6MTAwLDMyMDBLOjEwMS04NTAwSzoyMDAsNjVLIiwKCQkJInNob3dXaGVuUHJldiI6IDEKCQl9LAoJCXsKCQkJImlkIjogIndyZWNraW5nLWJhbGwiLAoJCQkiYW5pbVR5cGUiOiAicmFtIiwKCQkJImhwc0RhdGEiOiAiMzYwMDA6MS02OTYwMDA6MjAsNzMxMDAwOjIxLTM1MzEwMDA6MTAwLDM1NjgwMDA6MTAxLThNOjIwMCw0OUsiLAoJCQkicHJpY2VEYXRhIjogIjczMDAwMDoxLTIzMzAwMDA6MjAsMjQzMDAwMDoyMS0xMDQzMDAwMDoxMDAsMTA1NjAwMDA6MTAxLTgwTToyMDAsMU0iLAoJCQkic2hvd1doZW5QcmV2IjogMQoJCX0KCV0KfQ"},{ name : "__ASSET__:bitmap_co_doubleduck_utils_ProgFill", data : "aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU5jQUFBQW9DQVlBQUFCdHVXOTVBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBNEtXbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBEOTRjR0ZqYTJWMElHSmxaMmx1UFNMdnU3OGlJR2xrUFNKWE5VMHdUWEJEWldocFNIcHlaVk42VGxSamVtdGpPV1FpUHo0S1BIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVFXUnZZbVVnV0UxUUlFTnZjbVVnTlM0MkxXTXdNVFFnTnprdU1UVTJOemszTENBeU1ERTBMekE0THpJd0xUQTVPalV6T2pBeUlDQWdJQ0FnSUNBaVBnb2dJQ0E4Y21SbU9sSkVSaUI0Yld4dWN6cHlaR1k5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZNREl2TWpJdGNtUm1MWE41Ym5SaGVDMXVjeU1pUGdvZ0lDQWdJQ0E4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWdvZ0lDQWdJQ0FnSUNBZ0lDQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpQ2lBZ0lDQWdJQ0FnSUNBZ0lIaHRiRzV6T21SalBTSm9kSFJ3T2k4dmNIVnliQzV2Y21jdlpHTXZaV3hsYldWdWRITXZNUzR4THlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNmNHaHZkRzl6YUc5d1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM0JvYjNSdmMyaHZjQzh4TGpBdklnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02YzNSRmRuUTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpVVjJaVzUwSXlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNmRHbG1aajBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5MGFXWm1MekV1TUM4aUNpQWdJQ0FnSUNBZ0lDQWdJSGh0Ykc1ek9tVjRhV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdlpYaHBaaTh4TGpBdklqNEtJQ0FnSUNBZ0lDQWdQSGh0Y0RwRGNtVmhkRzl5Vkc5dmJENUJaRzlpWlNCUWFHOTBiM05vYjNBZ1EwTWdNakF4TkNBb1RXRmphVzUwYjNOb0tUd3ZlRzF3T2tOeVpXRjBiM0pVYjI5c1Bnb2dJQ0FnSUNBZ0lDQThlRzF3T2tOeVpXRjBaVVJoZEdVK01qQXhOQzB4TUMweE5GUXhOem8xTXpveU9Tc3dNem93TUR3dmVHMXdPa055WldGMFpVUmhkR1UrQ2lBZ0lDQWdJQ0FnSUR4NGJYQTZUVzlrYVdaNVJHRjBaVDR5TURFMExURXdMVEUwVkRFM09qVXpPalV4S3pBek9qQXdQQzk0YlhBNlRXOWthV1o1UkdGMFpUNEtJQ0FnSUNBZ0lDQWdQSGh0Y0RwTlpYUmhaR0YwWVVSaGRHVStNakF4TkMweE1DMHhORlF4TnpvMU16bzFNU3N3TXpvd01Ed3ZlRzF3T2sxbGRHRmtZWFJoUkdGMFpUNEtJQ0FnSUNBZ0lDQWdQR1JqT21admNtMWhkRDVwYldGblpTOXdibWM4TDJSak9tWnZjbTFoZEQ0S0lDQWdJQ0FnSUNBZ1BIQm9iM1J2YzJodmNEcERiMnh2Y2sxdlpHVStNend2Y0dodmRHOXphRzl3T2tOdmJHOXlUVzlrWlQ0S0lDQWdJQ0FnSUNBZ1BIaHRjRTFOT2tsdWMzUmhibU5sU1VRK2VHMXdMbWxwWkRwa1pEa3pPR1poTnkwMFpqUmpMVFEzTWprdE9HVmlNUzB5WWprNU1XTmlZalEzTnprOEwzaHRjRTFOT2tsdWMzUmhibU5sU1VRK0NpQWdJQ0FnSUNBZ0lEeDRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBuaHRjQzVrYVdRNlpHUTVNemhtWVRjdE5HWTBZeTAwTnpJNUxUaGxZakV0TW1JNU9URmpZbUkwTnpjNVBDOTRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBnb2dJQ0FnSUNBZ0lDQThlRzF3VFUwNlQzSnBaMmx1WVd4RWIyTjFiV1Z1ZEVsRVBuaHRjQzVrYVdRNlpHUTVNemhtWVRjdE5HWTBZeTAwTnpJNUxUaGxZakV0TW1JNU9URmpZbUkwTnpjNVBDOTRiWEJOVFRwUGNtbG5hVzVoYkVSdlkzVnRaVzUwU1VRK0NpQWdJQ0FnSUNBZ0lEeDRiWEJOVFRwSWFYTjBiM0o1UGdvZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT2xObGNUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVNCeVpHWTZjR0Z5YzJWVWVYQmxQU0pTWlhOdmRYSmpaU0krQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4emRFVjJkRHBoWTNScGIyNCtZM0psWVhSbFpEd3ZjM1JGZG5RNllXTjBhVzl1UGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGMzUkZkblE2YVc1emRHRnVZMlZKUkQ1NGJYQXVhV2xrT21Sa09UTTRabUUzTFRSbU5HTXRORGN5T1MwNFpXSXhMVEppT1RreFkySmlORGMzT1R3dmMzUkZkblE2YVc1emRHRnVZMlZKUkQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BITjBSWFowT25kb1pXNCtNakF4TkMweE1DMHhORlF4TnpvMU16b3lPU3N3TXpvd01Ed3ZjM1JGZG5RNmQyaGxiajRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhOMFJYWjBPbk52Wm5SM1lYSmxRV2RsYm5RK1FXUnZZbVVnVUdodmRHOXphRzl3SUVORElESXdNVFFnS0UxaFkybHVkRzl6YUNrOEwzTjBSWFowT25OdlpuUjNZWEpsUVdkbGJuUStDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0E4TDNKa1pqcFRaWEUrQ2lBZ0lDQWdJQ0FnSUR3dmVHMXdUVTA2U0dsemRHOXllVDRLSUNBZ0lDQWdJQ0FnUEhScFptWTZUM0pwWlc1MFlYUnBiMjQrTVR3dmRHbG1aanBQY21sbGJuUmhkR2x2Ymo0S0lDQWdJQ0FnSUNBZ1BIUnBabVk2V0ZKbGMyOXNkWFJwYjI0K056SXdNREF3THpFd01EQXdQQzkwYVdabU9saFNaWE52YkhWMGFXOXVQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFpVbVZ6YjJ4MWRHbHZiajQzTWpBd01EQXZNVEF3TURBOEwzUnBabVk2V1ZKbGMyOXNkWFJwYjI0K0NpQWdJQ0FnSUNBZ0lEeDBhV1ptT2xKbGMyOXNkWFJwYjI1VmJtbDBQakk4TDNScFptWTZVbVZ6YjJ4MWRHbHZibFZ1YVhRK0NpQWdJQ0FnSUNBZ0lEeGxlR2xtT2tOdmJHOXlVM0JoWTJVK05qVTFNelU4TDJWNGFXWTZRMjlzYjNKVGNHRmpaVDRLSUNBZ0lDQWdJQ0FnUEdWNGFXWTZVR2w0Wld4WVJHbHRaVzV6YVc5dVBqSXhOVHd2WlhocFpqcFFhWGhsYkZoRWFXMWxibk5wYjI0K0NpQWdJQ0FnSUNBZ0lEeGxlR2xtT2xCcGVHVnNXVVJwYldWdWMybHZiajQwTUR3dlpYaHBaanBRYVhobGJGbEVhVzFsYm5OcGIyNCtDaUFnSUNBZ0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBnb2dJQ0E4TDNKa1pqcFNSRVkrQ2p3dmVEcDRiWEJ0WlhSaFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvOFAzaHdZV05yWlhRZ1pXNWtQU0ozSWo4K1NZcVUwQUFBQUNCalNGSk5BQUI2SlFBQWdJTUFBUG4vQUFDQTZRQUFkVEFBQU9wZ0FBQTZtQUFBRjIrU1g4VkdBQUFnMUVsRVFWUjQydXlkZVhoVjFkWC9QL3NNZDg2OXVSbkpRRUJFVVZFUkVCeEJVVkhBdVE2dGRXalZpdm9xaXRVNnREaFVyZFdxdGI2MldxMW82MnVydHM0VFZMQ0RzeUtDSW9JeWszbTZ5YzJkejdSL2Y1d0xCQTBRSUJpZjU1ZVY1enhKVG03TzJXZnQ5VjN6M2tkSUtSbWdBUnFndmlkbGdBVURORUFENEJxZ0FSb0Exd0FOMEFDQjl2VVRRb2p0K2YreHdJbEFHWEEwRUFWTVlHdUJuQUNrRHhKWmNQSy85enVGZEkrVE5JMEE0QWZzYi9uMmVuNHU1Rlo0WnVZUDhWMFJIclVnaXAzcUFzZmVJRXY2TnVhK0ozSUFZNWNJdHlLd2tDb09hU0FOcUwyWWh6YmdmU0FHUEFjczY4Mjllc3BkaUsrZjdDVzRaZ0FYQzY5L3BILy9JL0FPT3dDdHJBWTFGRVZLQjdhVUpCRUNOVkpDNjF2UEVKbnpPQStPdTREQ1lESFN6UFdUZUVnUWdzSGhjaTU5NHprK0tWN0lVdzlYNGJQQU5yNGJpWjVBdWM0OTE2N2pwZllmTXZUV1c4aCt1UmhwWmtIMG45T2grSUxZWFcyMFBYWXpkRFd3KzRRQVE4WjZLQnFpWVp0eSsrSFZ4K1E0VUZTbDg5WFNCRy9mbWVMbVlTZHl6RzRIa001MmJWbmpDeEFvdEJoSjFxVGErS2hqTFc4Mkx5VmxHeDhDaithUDdRS1h0cDNqUGg2NFc2OGVzWGRrNms4SUhIUUNldVZ3MUtDR3RFQ2FlVU1rdGl6TFNrREFxQ05wV1BvT3Uxc0tZMFpNaFZSYnYyR0xVQWx2Zi9vMlg1WXU1YXYzcWhrMHRLZ1h4dmZiSkMrZkh0WE1TM2N2bzZrdXdlQ1R6a0QxZ05VR1dEWW8zejdJaENaQWcvVGFOU1JmdUlQUng1c2NjMjBsVFNzTVZ5bjFaN0Fod1I5V1NIV1p6TDR6eFpWbFIzUExFWmVDYllCamJsc2VWQTBVRGN3MHNVUVRmNjliZU5CREsrY2Y5RmxYdy84QVB3UGU3RFdmdHNOeTNRMWNVM1QyTEFwUHV3YXRKSUxWbVVhbUUwamI3TDNXOC9wSm1GbmFyejJhendZZHc4ZzlKa0EyM2o4VG9RZG95Y1lwZitseUdBcnpIeTlpOUxBQVJUVUY3dDliTE1qSmJUc1R1eFJiZ3B3cGVPU1BxN25uWG92MTNpUHdYdlFMcW8rZURJbE9yRlFjb1h6TEE1UU9RdmZocVM2ajVXOFAwL0dIU3pqK1dvM0RaMVRSV1dkaHBHVy9HVllob0hDd3h2MVhyR2ZrYTZQNHo0OXVkZVhMU0cyZnRWZFUwUHpnajBBNnhxKy9lSm1mTDNrVzRFYmc5dDVZcnQ3ZTdSRWxFTDZtOGxkektMbnNObEFValBYcmNSTHQyd1VzQU9FTmtHMWNqVjc3SmNQRGc4QVg3cVkydm1XeURZTEEzQ05tOGxON0doZE04ckhQK0RwTy9PRXlubjhpVHJMVGdXQS9oemhwQjY4UFp0d3lnaFdmVi9QYnMvOUx5WVBIVWovclpLeGtKMm9nM0M4U0xNMHNabk1IbFRNdXB2eTNTM2p0TnlVOE82TUoyd0RkMzM4OFV6UkJvdE9nWXgxY3Z0c0UxeEp0TDdEQWpTT05KSFRXQVlJYnhsM0lPMGYvZ21MZGYxdmUwUFJKdHZCK0pWUjRVZVdkOHdnZE9RVmpiVDFPc2pNLzJPMW5valJ6UkV1cWNVWWN5RkZ2M3NxaVZXOUR1QktFdW1zQUptVmVDM256MTVmdXVVQXhxRHBCUmVXNHdZZHo3OUdYOE5XSnQvUDNJYmRoUGpXSjAzN1V3TnE2REVUVS9nV1hLaURsUUgwT1QybVFxKzdmbCtYL0RsTzA4R1VhUDEySzRpLzQxcTBXUWtXdnJBRVVHdjg4bDViWFh3QjBscjJabzNXMWlTZlFmK0RTZE9pS1dkaHJZVWlrYU9kbFNnZ3dVOUJaeTJGRER1UGRZMjZpeEJPOEJyaDFaOEYxQmtKY1VYSHppd1JHajhkWXN6N1AzQjFubnBQcVFnK1hVSDN2Mjd6M3ZlbU0rZSt2ZVhqQkUrQU41UUhXMTZwTUlXMmtjY3dzZUNNdXNQeUZQTDlpUG04M2ZnYWVFS1Rib0tzUnJ3OG1IbmdrRnd3YlIva0lHSG1RSHpwdCtwMUUvbWkzSVdrUUdsTkkrZTVnR0lLKzdMQ1J0b1VTaktDVlZydDg2bjV0NFE1Q2VQd2dvUG5leTJtNFpnTGEzNmV5WCtZbWZ2QzdEdjduOVVySzl0Ukp4NXgrWTVWbFFyVElTOFZvbGVtTG44THFhSU5RaVN1M096VUJFanJXTTJMUS92em5pR3RSaExnUm1MYWo0QW9DVHhiLytGZUVEajBDWTMzOVJnYnZyTERiaVJqQ3lMSFhEYitIaSs1ZzF0Si9RRG9PcXI0TFlwWUNGbmJWTVhqT2RhenFXQVBsKzdDdVl4Mm5mZmhIbXJOeDBQMmJtQ2NFZExZd2ZmWFRYSEtPaGdqNklQc2RTV3c0UUZpQmtNNUxEOVR4eFpjUXJZeHVTSVAzalpFTUY1RmUrQWJ4MXg5QmpaYTdmSEVjbEZBVXZid0tvZWxJMjBRSlJyQ1NLYktybDNESTZURGpuZUhzTTYwSVJSWDlubVcxREFtMjRDZC9HTVRpMFN2WS80VWJzZElaQ0JUdEpNRHlDaVpleDhqQjQzbGsxRmtBZndNOE93S3VYM21Iai9GRXo3b0JzeW1XSDVqWXF2c2x2SDZFcW0wNUZkOHRXSFRTWFpoTldRb09PWVdFTCtTQ1N3LzJ2V3RvcEJsZnZoK1R5MGN5Zk83UFdkbXluRXNXUGNHNDZCQk8zMnNhWkRvMmFhZHdHYmUrK1N6eGd2VmNONzBHRXVaM282cGtBMFVxUkJUdW1yR1VVNjV3MEM5L25OTDlSMkVuWW4xbjVQMEYySjJ0dFA3dVluSnJscUNWVjZNUHJzR3FYMEhqTGFlVFcvTVppaStFazA1U2ZmdmpSQzkra0ZkK0E2L2R2QnJkTDNEcy9OVDNJOCtFZ0V5WEExSmgxaE9Wckp0WXk1alhyMmRkWnhONGduMlRqa3cwYytHK3AzRncwVzZSZklKanU4RGxCYVpIejd3T29ZT1RTVzdiRlJRQ21jc2dQTDdlQlk5QzRHUlRGRWJLeWZtOS9PR0wxM0FVMGZldW9XM2lkU3orZk5Rc3J0bnpPUFo0L21MbU5pM2xsY091ektkbmJWZHhCRXRZc3V3emJtNStpamwvSzhKZjVvTzR3M2VDZ2dMRGtKdzdlVG5YLzc2SzZPM3ZVM1hXanpHNk9zR3grazdyeDVvb1BPVVNQRVAzby9WL0wwRU5RK2N6OTdQK3NqRVk2NzVBaXc1eTVjREtZZFkzVTNidXBSVE1lSW9YYjQweTd6ZHRxS3BFMC90Zkd5a3FkRFZiUklxOEhIOVpBVXN5RGJURW12SnhkeC80NkZZR1ZJMjdScDRLY1BtVzFNbVdVSENtWHJHN1AzRGdjVmp0c1cyQ1JlaGVGSCtRaGw5TUpmN2F3M2lxcTl4S25uUlFmQ0UzNkhhK0thalN5T0R6aHlpNy9JOWMzdlF1VTE3K21Yc3YxZE8zcXN6S1FiS1p1dys5bkF1R0hzYlZlMHltdkhpNGE3V0VBRytJOWJFNjluOTNGdjl6SFV3NW9RYmFUTDR6VktUeC9FTnJlWEwrTUVwbkw2RDAwSU14R3RyUmlpcGNmdlZWM0dXYlNNT2svUG9ueWExWXlLcHBWYlROdm9HUzZiK2xadllYNk9WRFhVc3BGS1NWSTdldWp1ckxmNEE2OFJMKzlVQ0tYTkpCOC9VL3VEU1BJRmlva2s0Wi9PT1hDV1pHam1YY0hnZEJwbzlLUGtLQlRBY1RLMFl4b3FDOEVQamU5b0RydU1ENHFhakZFV1F1M1l0QTJFUUpSZkR0ZFJEdHM2L0hiR3BDalphakQ2ckJUbmFRVzd2RXRXZzltRml6bzVYaWswK0hjY2ZnaVRlQkwrSmFFaVZmek50VzVrclZ3Vi9vZnQrU1Q5ME5ZTE1QdVl4N3hwd0x5YWJOdEZIR3lyQmZZUVZ2em9kL3ZMd09TalFvVnNIcTU1Z3JMNnNmdm1mQStITW9HVk9CMmRLSzNkRk0vTldIa0xhRjBQUStFeG9yMW94dnhQNFVudlpUdEpMQjFEeXloT2haTTdGakxkakpXTGVhbWtDTkZOTXhieW4yVzMvaCtHdThGRmJyNUpMOWErMmxCTnVDU0pYS0gyK3JKL3BGSWZkTlBnZU14TTdIWEp1WitSd0Vpaml0Y2l6QWxONkNTd2VPOCsxeElOS2tkMXJSdHJFN1k1VC83RkhVY0FuTnYva3hlcldYcm44OXcvcnBJNG0vY0Q5cXBLUUhzQWlFMTAvYnlnWThhNy9peVlrL2hjTEJtOENpNm00Z3FxamZISWVVRUN3Qm9mRFB0ZSs1N3FRL3VuV0FPUmFZYWJETnZDWE5TMjR1d1lpaWFqNmJlamNYeFM3Z3ZKTnpISG5pTXF5c0RWVzZtMHpZVlJuQWJaRXV3TEw0NERNZ213QUhQTHVWMGpYL0Nkb2V2aG9sRUhKck9YMG9uV1pqUFVVL3ZKR3ErOTVCS3hxRVdiY2VhZVUyOTJBMEhWUVBEZmZld01nRDZ6ajh5bktTYmM1bUliUHVFejFPWGJma1k5OWFMSzlBRVREMzlrNGV2YkNSeHY5VGVIZkN0UkFNUWk2NVUxbnVIbU12eCtUUW9tRUFSL1k0bmg3TytVQUU5TXJka1psYzd3WWtoR3ZoSEtqNDVVdlVYWFVZcTAvZUc2TjJCWVduWEVIaHlUT3c0MjA5WnJiVWFCSHhwKzRpMkxpR0Y1eC9VZGUwbUsvTVR0WjAxcEd3TGE3Wjgxak8zZWNrOTMvVDdYbXJwa040RUd2YVYzRFNmMy9ENTEyTkhGdzBqTDhkT29QZC9GRTNsdW94TVNJMmphSDdjd25GRlZ6ZHg5Vkhuc2IzUnh6Q25xL2V5Z2tYcm1UTzAzc2hQS0x2TEpqTVovNnFOUGZuQmhNVUFiYUVDczJ0YXpWYTd0LzgrVmF5bk9DNlcwczU1OGYzc2V3eUQ4UHZ1NVBNd2ptRURqOE5yYmdFczdFZTRmR2pCTU5JMDhEcGFuTVYwbzY2MFk2RE5MSklJNE8wekI3REFrWDNZTVRpMFA0cG82OEFJd08yMmEwelE0S1JrWGo4QXNlVzNid2M4QVFGZ2FoQ3N0M0J6RWo2cXNIRU5pV1JLbzIwa21YTlhQam9zT3ZaZTQvOW9LTitGL1JpQ3JDeTdGVlFqbkFiMTN2bkZpbyt2NjFFU3BIMmRqUXJLd3BtU3gyQjBZZFNlTnBWQ0UrSW1nY1hVamJ6dHlnRlVhU1IvYWJBQ3dXWnl4Skt4c251ZXpnWDdEZVVtMnJuOE02YUJaeXl4MlJPcUJyTlJRdWZZTXdyTS9ta2RUbUVxeUJZQ2dYbFBMYjBlWWE5Y2hXRGc2VjhkdUo5dE9hU3pQejRNZkQ0ZDR5UlFnSExnTTVhcWl2S3FaOTJQZjk4b1lCeFI2d0Vyd0JmSDAyT0JoUXAzSFpkQzNPZWlzTmdud3VncU1wYnJ5UjU1K1VrVkhuYzdLQURNaU1oN25ES2o4cjUrUDFCakZwOUZ5dFBuNENkaUJIOS9nM2dCM1ZRRlk1dGtuam5CWXoxWDZBV1YyMVNJdEpCOFJlZytFTTl4cjFiVkphMmliU3RieXJYZlAxTEcxUkVwdG10RHhaVUJzaDFPUnZEUDA5QTRJOEtucnFzbFU5ZlRSSWRyT1U5ZlVsaGpjdkhWMi9wb0hHcGdUK3lZM3lWamp0bG9WS1Z3aXFONkdDTjRxRTZCYVVxaDE4VnhPc1ZqQW9PZ1V6WHJzdGUyalpsdmpCQnJXZmg2Tm1mVURTVVFIajdheWhTWWpRMFVIVE96UWh2RUd3TFkzM3RSdkQxeENHcnJabklTWmRSZU42dHBQMGFUZWN0NE5YU294ZzU5anpJeHJsOGoyTTU5Nk9IR2Z2UFdjemM4eml1MlBzRUx2N2dZZVkxZjg3c2NSZHd3Y2hUd2JGWk9lMU82cEl0a092YU9kOWFDSWczRWgwMGxISHNSZEhnQlJEeHVQbndaZ25tMXhwVFJUZUwxT3ZzbjBKRG04MjBjeHQ1MWFkdy9PbUZBTXgrcW9zbm5rMXczbGtGL09uQlNtYmQzRVlrclBDTE8wcWhMc3RlQnhleGVFMlFTY1BlNFQvQlUvRU0yNXZVYzArUS9lUU5jbDk5VEs1aEZUSllTUFdmbHFJVlYrQWtPdEhLeXNpdC9oSTczb3FuZWsra3VST3JPL0xkTHQ2YVN1THZMS0R0cGd2WWU0Sk42Y2d5c2wwT1Vyb0pPVE1qU1Rab2VEVS83ejZZNWNBelF3U0tCWTZoMHJqWTRibnJXMGgzMll3OU05UXJ4MmhqYUIxUnNISVNJeU5SVklFdkxQamluMmxxRitjd1VwSmttNDJtcUlpSVJjNnh1T25MRjdqemlJdmQ5aWU1YTdwL3ZJcUd0Z1ZsM3VOWmFXVElmZmtSd2hmWXFsa1V1aGVocWw5ektXeGtMb3ZUMVlZZGI4MzM4bStaZzBKVmtFSkJEMm0wdmZVOHBiVXJHVmw5QUxTdmdNNWFLa0tseko5NkYvT1B2SjVYNmhZeTdLVVpOS1RiV0gzaWZWd3c4bnVRYUlhdUJrQlFIYTRBdXcrS3F0NEMxcXhleGtyZjU5dzB2WWdQMzRyejV0T2RFTUsxWWpKZmV3b3FVS0c3NSt4ZVRwNEZ0Tmc4OUhnVmQ5MWN3Z2xuMVBPM1A3VURLc21VNU5TcElkYXN0aWdmc29LN0grcGcrRkRkZFJzVklHMUNRRU9wVVNDMmpvNFpZMGs5ZURsaXhZY1VqanlZbXN2dUk2UUpXbjU2S0VyQWd4b3BKdmJrWGRSZU9vYkVHMzlHalJTek16NlkwRHh1alB6WVBiVFBPcGhEcDMzTzFGc3FpTmNwMktaYlJwSVM2aGNvckh0UGN0RDNvMWlkWHQ1NU1Jc21QQ3g0MU9hUk0rTTRDVC9uUFZKQitkNGFtVjZVT3pTdklCTjNXRFl2UTd6UnBxQk1aY2lCWHQ1OU5NR3pWN2ZUdE15a284N0NWNkN3ZkhtS3RwZkN2RDUySnFjT0h3M3BHTHVNRklXNG1TR3pCUSt2Sjh1VmxaWnBHWTFyS0FoN3dDNEd6WVBkMmVMMmxxZ2FTakNDR2d4aWQzVWkvRVdvUVJXckk0VWRiMFdvMnFabTNsNEZrQUloVkV3VHJDZHY1cUxDdlNGYUNjbVdmRVV3RHRrRVJ3OGV6OHJpM1puVDlCbFRxdzRFVHdEaWRlNW5GTldOcyt3dDNGUHp1c21NbnR5Y25peVg1dVAzYStmU1lXUTRmN3BFV2hsVzFHYjR5LzNsbkhkRk1UUVpicUtqemVLS0N4dTQ4SXd3b3liNm9kUHB6ZU9DSWFIZDVOcGJ5cWtvMXpoN2VoUHIxNW8wdGxqY2ZsMFJSNTFSd3U5LzFjaGZuMDh3WlZJQXVtendRNnhSOFBLTEdlcmFBaFFrUDBHck9vZkl0RXRSQ29yeVNrVlNOdjF1V2g2OGt0b0x4K0JJQnljVnAvajgyd2xOUEIyN28zV25yTHJRZENTUzlzZHVZdXdraHdrejkyRGx2M0lZYVllQ0NrSFZRWktPbFlKRUkzaUNFbDlFc3Y4cGZoWS9sYUZqZFpLbDh6THNjNlNQVVNjR2lhK1JlRUlXdW4vYnBUcmRKN0FNeWJ4N096SFNrdExkZFlwcU5CYS9tT0w0RzZNY1BqMU1OdUZRWEtQejRYOWJlT1BrSEZOTFIwTlJvYXQ0ZDBXTHZoQ2dCMWlYYWlmbldEMHVTT3hweVVtaFdsRFVXUFBnUXArSWxKSCsvQjJjUkl6ZytPUFJDZ3FRQWpKZkxpWXhkemJaSlcraCtFTm9aVFdFSnB4QllPelJPT25rOXBsZ3g4RmJVOE9hWng4ZytNQVZOSno4QjN5QktKZ1pOd01vSFpmNzBnYk41NExLU0xtcDBGNHlMZXVZK0x4aHNMSnUzS0ZvbXdEWlBlWkNjYzhyR2grMGZNWEZIenhOZEVJdHQxODZoTWVmN3VLeFoySjhNS2VDZzZZRVdiWW95ZVFwdGFpSzRJMjVneG14cHc0ZDJ5RzRUajR2Vys1bDNvdHhqajIxRG9BVjd3NWgrS0YrOXpOZERyTExRUlJBc2cyZWZkSEI0MWY0YWtremQ3OVlTY21QYjBISHhNa21YVDVKaVJvcHhXNVlTZE9yZjhKNzFOa1VuZkV6MUdnaFZtc3JNcGZaeWZWZkVxMjBtdWJuL296NjVBVk12cm9NUEY2c3JNUXkzRjVvS3dlTzRVNmRvb0V2cEREdm5qak45U1lUendzejdDQXZ5VFliTXdzMWh6bjRvcHRQdzlZS3cwWkcwclRjWk1WL01xejdKTWUrVXdKTXVTRktSNzJGWTBtRWdHQ1p3aS9QcU9PdXhyTzQ5cVN6b2FOdUI3T0VHOVlsNXRPYUc5S2JHeHJXSFJNWktPVCtKYzl5MWVLbjM1UlNIdE1ieS9VRFJmZjUwbis2bWx6REtuSnREWmlkclhERkgxR0c3RUhpbVh1eGxyeU5FbzRTUE9iSDJKa2syU1gvSWJmdWMwS0huNHlUU3JnVHFIbmNnVGpPcGk2SUhsWXBLNkZDT2xaOGp2SEhuL0xlQWVmaks5OGIybGZUYVNicHNyT0VWUitGbmpCSUFYWU9Na2JlV21sZkMzaTZNV0REZVVVRlZlT0l1VGR3UXNVb2Jqem9Zb2pYdXBiWVNLRUtCWlFONHpUSTJsbFNSZzRUeWNHRDltSm9jQkIyZEIxZXIrU2lzd3RZc2p6SHFlZDFjTjFWQmpmY1hNK0pKNFo0NXJrcTkxNHROZ1R5b0pGZnl3ektiajkzZDhndG9DSEg1Rk1pZlBpNllQbzF6Zmg5QXBJT2REbmdGWWg4TS8vSGl5U21oT3BpeWVNZnBjaFZqc1BqMWJBN1k5MkVRV0IzTkNIQ3hWVGU4MTlFelJEc2xqYk0rdlh1TS9iQndrcXJvNDNTMDg2bjl0L1BzdVFmcnpQNndzRTROdWdxWkR0ZGxvdjhoZ1cyQ1ZaT011cGsxMThzMzBzbjBXcGpwaUZRS3ZFV3V1SWdGUGZ6WCsrY2ttemluV083TWRlSUkzMk1PaWxBdHN2QnNTRzIzblF0bndCSGdzZWpzdDgwbFVmdmVvdHJVeWU2Y3ZpTlpWRmJBbzV3SjBhUWI0Snc1ZGJHSm1kYnBHMkRqRFJKMlNZdFpnSTdBYysyTGdiNGQyL2R3cWdaYTVnWGUrdjV5ZVZILzREUzAyYVNXZlJ2MnYvM0V1eGdoT0NnR2twT3ZoVFBzUDBSWlVOZ2ozRTRIaTkyUnl0V0lnN2VBRmdtSXRZSVJoYnBDNEkvNUQ2a0orQnkwclkyQWs0dERKT2ErMDlVMDJKRnNwV3hIYlhVVzNIbXhaWmhJMUVRakFsV015bzhKSy9xOC9VcWFXRkxCd2VKSmxRY0tjazRKam5wQnJNQWZzVkR1S0NjYzRZY3doV0xuK2JVcXJIc08ySUs5NzkxTDgvVkwrS3RZMjhsbm1sblhiYVZSaU5CcDVYQmxBNENxRFNhK0NyV1RtV25Tam9qNlVyWS9QS2FLT2RmMWNyTW43ZHh4dzJEdU9HT0tIYXJUYXJOeGthUXlVZzhIb0hYNHdxTjF3dWFsdTlIOXVhSGIrZEI1WFNUb09ZYzQ2Y0dXVHkyQmpQclFNNXgyMEVkQ1g1WXRrQ3lmSldrdEZpUVREclVOa2lVM1FNb3Fvb3Q1ZWFhMlhHUXVnOFpDQ05qWGZuMG5UK3YyUEpKQ2RGTndDUTlKNXlFMkx6N0l4ODdTMFZENjJvbFZGWkY1MUp3REFlaENEZnA0Tms4dVNNRTVGS1NvaUVxUWtDeTNkbW9XQ0kxcnJkdVpmT1gxamFCckRzR05nOFJKV1pPWXJUa001UHU2aGQwajRzRklTQ2JzamoydEdMdWZheWUxei85Z0drSFQzWkRESlJOSUpLYkE4ZXdMZEtPU2RaeGdaT1ZKbG5ISW1PYlpLUkIyckV3SFJ0TDJwalN4cEEyUlhxUURqUEZ3clkxQU0vMkZseDNBcisyWUxIMCtrY3BKWVB4akpwSWNTaU1YbHlGVnIwblRpNk5sVTdBc3ZkaDFTSkVwQlRoT01oSUtRemFIYkh1YzJoY0NVSWdWQjA4UGhkZy9yRDczVmVBOUlmQTQ4ZUt4UmcwZFRxSklmdHgxcVBYY1BmOFdSd3plSDlHRjlZZ2dJeGo4VUZpTGFWNmtLRG1aMVc2aFlTZEkrWGt5RG9XTmc1K1JjZVNqdnU3ZExEek02UWhDSFN0WkZMMVNDYTA3czJwSHozSU0zcUE2NWM4ejZWN1RHSjVZaTBmeDllUWNneDBvYUhuM2N4S2Z5RnoxNnhraFc4RmwwOGFSRmZTSVpHVVJDT0NHMllVa3NsS0RqM1F6MHVQR1dReWJ2YlFjU1NtQlpvcVVmT0ZVMVVGank0SUJpQVVoSUlnaE1NUURRdjgvcTlsR2RkWmFDRUZYUmVZU1lsbGd6Y00yV1pZdUZUaTk0SmxTU0pGR3NjZkcrSzNmNTlMN3NBeHFGNS92c3pScmJpYmpzT3FUeEJGbGZuTEM5Qzk3b0FVMVFXdGs2K2xiUUNabVhYanRqeUloR1c2cFFtUkYwckxjSVd5cUJKcjFTSnluLytYNGVNOTZFRVZjeXRMVElRQ1JscHVCSnVVcm5jZlh5OUlOQWlFSWwxZTZhNHpJcnRaL2ExMXdsazVOaTdOVXowUUdpUnhURUZMR3hTV0I2bWFxSFBWOHk4eGZwOTlDRW1IbUprazQxaGtISE96SSsyWUdJNk5KWjJONExHbFJCRUNSUWhVRkJRaGNHMmF3Q00wdklwR3BTL0NpdzJMeU9aeTd3TmY5amJtMnZEajBUNmZmMzdsK2JjaFNnZURhU0F0bzF1OUttOUdiY3MxdXhMWEdubjlidUpEVVYxdEtQTTIzYkUzSlJSMHI4dE5yOTlkeHhVdVJoc3lFa05SV1hmTGNRejdZakYvbURTVHBKM0RkaVNtdFBFSUJVZEtPdXdzSGtYZDdLR2QvRE9vZVhDSXZITWhrZGpTSWFCNktmRUd1ZkxUWjFqU3ZKWkpGZnR3eHdIZlkxbWlDVjJvbTZWU3ZZcE8yakM1K3BNWE9PSGNERCthV2s1dG80WGkxbGFKRkNnb0tzUTZIV3lybThMZjRGVjBXd2ExWVVtVTdiamJYVGcyZUQzZzg3a1dyYWRNdDY0SnBBVERsUGo4YmhZeWtkcjBlVTBUYm5yKzV5dFlGRDZEb1NlZmdkM1oya01QVUw3NHE2aWJrajZxNnZKZVNqQ3llU3NtTnRac1hGUFFyZGp1Zk8xMzZhQ0VpMG12VzRjeC94NG1YT2pIRS9GaDViWS96ZTJZM1NvOXdyWGtzZ2UvY0l0N0hTbWJmMDd6YlRCSUFsOVlZZTR6OWV5MmJqZHVQV0FLaHBTa25CeW00MkRob09BQ1IwR2dDc0dHTHdXQkVHS3JaVEZIU3NwOEJkUm1PN2xzd2YrUnlXWVBBOTdiM2cxcTNzeG1NNi9GMy9qejhjVm4zNGpsMkc0WFJ2Y1Z5QnRXK1hhMzNiYVZqN2ZFSnNadFp0dWxPMm0yQmFrNGRMVkQweXJzMnFWSVh4Q3RNOGJad3llaENoVXJYL1RVaFlvaDNaa28wdnpmTENtSkxRZWxtbEF3ODJiOTBtRkg4SUJqODRQZERxTGRTT0lUMmpmMkRBbnJQdWJYZlVXejJjVDRmUWFqS21Lajk2UW9rRWk1WTFKM3NML1ljY0N5d0RCN1RpUm04cE1rRk1obTNTRGQwKzArcGlueGFJSmpqd3J3eVF0TE1GUEhvNnFhVy9EdDd0SnQ2TFcwVFpSUWthc1lVMTNkNWtYNVdzZ3FOZ3I1eG1zbzNWYUg1L3NYaGFwaGRuUVFpcGg0d3dYWU85aTVvdWp1MFdjbEo5dDFFVVBGQ3UvT2FjUC9XVEd6Smg2SExRUnBPNGVLaXE2cWlKMm9LRHRTRXRaOUtFTGhnUlZ2a3NsbW53YmUyK0l6YnVONlo4WldmUjdybWpzYk5WQ0E4QVczbmNwVnRXMWtaOFRHUkFPYXg0M1JnaEdVU0JtMWIvNkZ5WjBaenRycmFBQThpcGFmYjRrbUZEU2g3TkJxTDBVSTJuSkpLcndSN3RqdlZJbzlRYnFNYkkrYjhYU2FhWTZxSHM3VTBuSDg3RmVOdkw4NFJiaEE2Yk1pdjZLNFZzaWpmL1BRZFJkSUhnL29taHV6ZVhvQWNEeGhjK0M0WWlxMVdoTHJWdmZjRkowSGh3Z1drbHUxQ0tOdU9TSVVkUzJYN3MzM0J1WVBUZCswNjVHYVB6WjRIaHVWcDF2WFZLUGxaRnZhRVhZTzFkdlBXeUJzVmk4RjNTdm9hRGRvZU4vbXlyMG5VZUlMa2JZTWRLRnV0RkE3QTZ5UTVpV3MrN2wvNVh3V05hMnVCWDYwMWJuZXhqWFRFbzVvL3VpTlRPTDFSOUdDWVpSUXRNK3IzVUx6WUNjNjhOYXZabjA2eHIwTC9zWW5UY3NRMGlhbysvcGtLYnNpQkRuSHhIWWNMTWZlNGk1WE9kdENGWUpmanAzS1JPY1FydmwxQXkweGk0Qy8vemNuM2hESGxaYm9mTEVzU1dkTEN0Vk1iWEgxZ0ZCMWtKTEV2TDlnMWE5MFc2QjJTTEpzbEdBWUpSQ20rYVcva2wzMENoVmpDaEdLMHBjTG9YZWFONW9YNHNrY2xWb1J3Nk9seEhJcGxENW8xcFZJaXIwaENyMUJmcmRpUGkrdlh0Z0dITUUyTmpQdFRUdjE1eElPYS81d3pyK3NaS3l3OE5qejBVcXFzQk94emVPdm5SbThaWURqVUhYS1RPcnF2MlQycW8veE5YMUV4Ym9QK09IdWh6S3haRTlpUnFvUG1BVG1OcVJCRVlLc2JXRTVOb2JqTUh5NFRuRkV3VFRsZHdKWUZlVTZyNy9ld2wwUGRSQ2NQSjNJM3FPdzB6MnZVeEkrUDdubEN4Q2FoOEFoSjdtTFhqZkVXVUoweTNWdlEvbjVRMWp0RFhTODhRLzAyRUtPdkNCTTJiNVJNbDNXZHdaWUhwOGdFTlpZdFN4T2dSSENwMnZrcExsVHNpSUF2NnBUNGltZ1B0ZkpIY3RlNDYzNlpmWEFKR0ROTmp0TGVubXZSUkxHdEMzOWNIYTJmdFdrd2duZnd6ZGlIS0pvRUk2UlF4b1pOcTN4M2xIVG9rS2dnTExLM1NrOWNBcEdMc09hMXg3Z3ZmV0xtRnErTHlrMXR6RnhzYXVwMkJQa3hWVmY4TEgvWTJaZlcwRTRxTkxhWnFOci9iY1FVRlhCN3hQODVhOHR6SDVXRWozakZzcEdqOFdNTllOUUVJcjRobHVvK0FvdzZwWmpkalJqckZxTVo3ZDlFYm9INFEyNlZpZVRRRHJPTm5kWlZzTWxkUHpyTlFLdEM1azBxeEp2b1lkVXUrVW1jL3A1YmFSMDNFSzE0OENjSnhwSmZPRGowbjNHNGROMWNvYUZ2cDN0WGlLZjVBaW9YbnlxVHB1WjRMbkdUL2pycXZkb1NjWG5BT2NEemIyNTF2WXNCRm9ESEpYc2JQdEorcFZIWmdVL2ZHMUljTVE0dkRWN29SVlhnY2VQMExwdmR5N1k3djB3cElOTWRvQ2lFQ2daakcvWUFTajFUVmkyaVZmVnNaMWR2eEJQVTFRa01MOTFPWUZDeWJJdkhJWVBrNFNDR3BZdCt4VmNIbDBoblpab0FTOUJqNFdUU2FKb3V2dkhubUxiWEpyUStHa0lvWkI0N1JGS3Jud0lMVkpDWnVsN0dLc1dFeGczQmEydzNOMGVlMnNDWjVuNGh4K0FFcHVIVUJ6TU5LaXEyciticGVaSjl3dmlMU1lmUFJXbnJMR2F1OFpOWnMvaVVoclRYWGcyOEVYUVk3d2wyWHpyYlNIQWRCeVN0c0d5WkJPZmRkYnhidXNLMW5lMkxzZmRDUFN2MndYVUhkd3JYZ1BPQlNicmNJSWVLUXBxNFdKRjhia2J6TGdwYUxsei9xNnFZYVE2OE1kYUdSWXFkUXVZMzRMbEV2bjd4TzAwdFIwSnNvN0JrR292bGVVYVpqK3VTcFlTTkJWQ0lZMGxTK0swZDFxRWR0dkhUV2IwMkt3c2tZNkRFblMza3pPYlZoT2FlQ2E1THhlUVhmbytEdUFkTWdMRkYzSXp0MXRuaXV0UzE2K2lzTnhHRDJqZm1WaEw4MEtzM2lUUjVuRG9vS0dFUEY1YXM0bE5CUmtCMHBFNFBTVGlsQTBXWDI0S0NaSldqcFpzd216THhsUFlQQWU4QWZ4OTIvUFRkeTlpNkU0RmZQTXRKMzFGQ3BEQmZVTkZmMlVVSk80MmN4NTIzYmJBR3pvTmQrUXRJU2I1bHVXdGpMOFFSYmtKeDFrSlBBR2t0ak5ZM2pBbUQ2Njk2Z3MrR1BUOVcyNVMrZXZ1aUt5SVBQOWJjZDl5MHBtL1hpK1ZuK3o1WlBkak85WDhqZ0p5Z0w1OXVndjNsVThEMUF2dkJkaXUxUDNYY1NTbC9LYmxHcUFCR3FDK2M3c0dhSUFHYUFCY0F6UkFBK0Fhb0FINi81Nyszd0FLUUhCRll6NnFKZ0FBQUFCSlJVNUVya0pnZ2c9PQ"},{ name : "__ASSET__:file___ASSET__images_fonts_yellow_small_kern_txt", data : "ewoJImFueSI6IHsKCQkiYW55IjogLTIsCgkJIn4iOiAxCgl9LAoJIioiOiB7CgkJImFueSI6IDMKCX0sCgkiJCI6IHsKCQkiYW55IjogMQoJfQp9"},{ name : "__ASSET__:file___ASSET__images_fonts_yellow_big_kern_txt", data : "ewoJImFueSI6IHsKCQkiYW55IjogLTEKCX0sCgkiJCI6IHsKCQkiYW55IjogMgoJfQp9"},{ name : "__ASSET__:file___ASSET__images_atlas_1_json", data : "eyJkYXRhIjpbeyJwYXRoIjoiaW1hZ2VzL3R1dG9yaWFsL2F3YXkucG5nIiwid2lkdGgiOjI1MSwicm90YXRlZCI6ZmFsc2UsIngiOjQsInkiOjQsImhlaWdodCI6MjM1fSx7InBhdGgiOiJpbWFnZXMvdWkvbW9kYWxfYXdheS9iZy5wbmciLCJ3aWR0aCI6MjUwLCJyb3RhdGVkIjpmYWxzZSwieCI6MjU5LCJ5Ijo0LCJoZWlnaHQiOjIzNX0seyJwYXRoIjoiaW1hZ2VzL3BpbmF0YXMvcDEucG5nIiwid2lkdGgiOjE2Niwicm90YXRlZCI6ZmFsc2UsIngiOjUxMywieSI6NCwiaGVpZ2h0IjoxODB9LHsicGF0aCI6ImltYWdlcy9waW5hdGFzL3A3LWwucG5nIiwid2lkdGgiOjEwMSwicm90YXRlZCI6ZmFsc2UsIngiOjY4MywieSI6NCwiaGVpZ2h0IjoxNzV9LHsicGF0aCI6ImltYWdlcy9waW5hdGFzL3A3LXIucG5nIiwid2lkdGgiOjc1LCJyb3RhdGVkIjpmYWxzZSwieCI6Nzg4LCJ5Ijo0LCJoZWlnaHQiOjE3NX0seyJwYXRoIjoiaW1hZ2VzL3BpbmF0YXMvcDYucG5nIiwid2lkdGgiOjE2OSwicm90YXRlZCI6ZmFsc2UsIngiOjY4MywieSI6MTgzLCJoZWlnaHQiOjEyOX0seyJwYXRoIjoiaW1hZ2VzL3BpbmF0YXMvcDEyLnBuZyIsIndpZHRoIjoxNTIsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo4NjcsInkiOjQsImhlaWdodCI6MTY4fSx7InBhdGgiOiJpbWFnZXMvcGluYXRhcy9wOC5wbmciLCJ3aWR0aCI6MTUyLCJyb3RhdGVkIjpmYWxzZSwieCI6ODY3LCJ5IjoxNzYsImhlaWdodCI6MTY4fSx7InBhdGgiOiJpbWFnZXMvcGluYXRhcy9wMTItbC5wbmciLCJ3aWR0aCI6MTA2LCJyb3RhdGVkIjpmYWxzZSwieCI6NTEzLCJ5IjoxODgsImhlaWdodCI6MTY4fSx7InBhdGgiOiJpbWFnZXMvcGluYXRhcy9wOC1sLnBuZyIsIndpZHRoIjoxMDYsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo0LCJ5IjoyNDMsImhlaWdodCI6MTY4fSx7InBhdGgiOiJpbWFnZXMvcGluYXRhcy9wMTItci5wbmciLCJ3aWR0aCI6MTAyLCJyb3RhdGVkIjpmYWxzZSwieCI6MTE0LCJ5IjoyNDMsImhlaWdodCI6MTY4fSx7InBhdGgiOiJpbWFnZXMvcGluYXRhcy9wOC1yLnBuZyIsIndpZHRoIjoxMDIsInJvdGF0ZWQiOmZhbHNlLCJ4IjoyMjAsInkiOjI0MywiaGVpZ2h0IjoxNjh9LHsicGF0aCI6ImltYWdlcy9waW5hdGFzL3A1LnBuZyIsIndpZHRoIjoxNjEsInJvdGF0ZWQiOmZhbHNlLCJ4IjozMjYsInkiOjI0MywiaGVpZ2h0IjoxNjJ9LHsicGF0aCI6ImltYWdlcy9waW5hdGFzL3A1LXIucG5nIiwid2lkdGgiOjExMSwicm90YXRlZCI6ZmFsc2UsIngiOjYyMywieSI6MzE2LCJoZWlnaHQiOjE2Mn0seyJwYXRoIjoiaW1hZ2VzL3BpbmF0YXMvcDUtbC5wbmciLCJ3aWR0aCI6OTQsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo3MzgsInkiOjMxNiwiaGVpZ2h0IjoxNjJ9LHsicGF0aCI6ImltYWdlcy90b29sc19tZW51L3Rvb2xzL3dyZWNraW5nLWJhbGwvYW5pbS5wbmciLCJ3aWR0aCI6NDYsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo4MzYsInkiOjM0OCwiaGVpZ2h0IjoxNTl9LHsicGF0aCI6ImltYWdlcy9waW5hdGFzL3AxMS5wbmciLCJ3aWR0aCI6MTU2LCJyb3RhdGVkIjpmYWxzZSwieCI6MzI2LCJ5Ijo0MDksImhlaWdodCI6MTU1fSx7InBhdGgiOiJpbWFnZXMvcGluYXRhcy9wMTMucG5nIiwid2lkdGgiOjE1Niwicm90YXRlZCI6ZmFsc2UsIngiOjQsInkiOjQxNSwiaGVpZ2h0IjoxNTV9LHsicGF0aCI6ImltYWdlcy9waW5hdGFzL3AzLnBuZyIsIndpZHRoIjoxNTYsInJvdGF0ZWQiOmZhbHNlLCJ4IjoxNjQsInkiOjQxNSwiaGVpZ2h0IjoxNTV9LHsicGF0aCI6ImltYWdlcy9waW5hdGFzL3AxMS1yLnBuZyIsIndpZHRoIjoxMDEsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo4ODYsInkiOjM0OCwiaGVpZ2h0IjoxNTV9LHsicGF0aCI6ImltYWdlcy9waW5hdGFzL3AxMy1yLnBuZyIsIndpZHRoIjoxMDEsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo0OTEsInkiOjM2MCwiaGVpZ2h0IjoxNTV9LHsicGF0aCI6ImltYWdlcy9waW5hdGFzL3AzLXIucG5nIiwid2lkdGgiOjEwMSwicm90YXRlZCI6ZmFsc2UsIngiOjU5NiwieSI6NDgyLCJoZWlnaHQiOjE1NX0seyJwYXRoIjoiaW1hZ2VzL3BpbmF0YXMvcDExLWwucG5nIiwid2lkdGgiOjkzLCJyb3RhdGVkIjpmYWxzZSwieCI6NzAxLCJ5Ijo0ODIsImhlaWdodCI6MTU1fSx7InBhdGgiOiJpbWFnZXMvcGluYXRhcy9wMTMtbC5wbmciLCJ3aWR0aCI6OTMsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo4ODYsInkiOjUwNywiaGVpZ2h0IjoxNTV9LHsicGF0aCI6ImltYWdlcy9waW5hdGFzL3AzLWwucG5nIiwid2lkdGgiOjkzLCJyb3RhdGVkIjpmYWxzZSwieCI6NDg2LCJ5Ijo1MTksImhlaWdodCI6MTU1fSx7InBhdGgiOiJpbWFnZXMvcGluYXRhcy9wNC5wbmciLCJ3aWR0aCI6MTUxLCJyb3RhdGVkIjpmYWxzZSwieCI6MzI0LCJ5Ijo1NjgsImhlaWdodCI6MTUyfSx7InBhdGgiOiJpbWFnZXMvcGluYXRhcy9ib251cy5wbmciLCJ3aWR0aCI6MTUyLCJyb3RhdGVkIjpmYWxzZSwieCI6NCwieSI6NTc0LCJoZWlnaHQiOjE0MH0seyJwYXRoIjoiaW1hZ2VzL3BpbmF0YXMvcDQtbC5wbmciLCJ3aWR0aCI6MTM1LCJyb3RhdGVkIjpmYWxzZSwieCI6MTYwLCJ5Ijo1NzQsImhlaWdodCI6MTUyfSx7InBhdGgiOiJpbWFnZXMvcGluYXRhcy9wNC1yLnBuZyIsIndpZHRoIjo5MSwicm90YXRlZCI6ZmFsc2UsIngiOjU4MywieSI6NjQxLCJoZWlnaHQiOjE1Mn0seyJwYXRoIjoiaW1hZ2VzL3BpbmF0YXMvYm9udXMtbC5wbmciLCJ3aWR0aCI6OTUsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo2NzgsInkiOjY0MSwiaGVpZ2h0IjoxNDB9LHsicGF0aCI6ImltYWdlcy9waW5hdGFzL2JvbnVzLXIucG5nIiwid2lkdGgiOjkzLCJyb3RhdGVkIjpmYWxzZSwieCI6Nzc3LCJ5Ijo2NDEsImhlaWdodCI6MTQwfSx7InBhdGgiOiJpbWFnZXMvcGluYXRhcy9wMTAucG5nIiwid2lkdGgiOjEwOSwicm90YXRlZCI6ZmFsc2UsIngiOjg3NCwieSI6NjY2LCJoZWlnaHQiOjEzNn0seyJwYXRoIjoiaW1hZ2VzL3BpbmF0YXMvcDIucG5nIiwid2lkdGgiOjEwOSwicm90YXRlZCI6ZmFsc2UsIngiOjQsInkiOjcxOCwiaGVpZ2h0IjoxMzZ9LHsicGF0aCI6ImltYWdlcy9waW5hdGFzL3A5LnBuZyIsIndpZHRoIjoxMDksInJvdGF0ZWQiOmZhbHNlLCJ4IjoyOTksInkiOjcyNCwiaGVpZ2h0IjoxMzZ9LHsicGF0aCI6ImltYWdlcy9waW5hdGFzL3AxMC1sLnBuZyIsIndpZHRoIjo2Nywicm90YXRlZCI6ZmFsc2UsIngiOjQ3OSwieSI6Njc4LCJoZWlnaHQiOjEzNn0seyJwYXRoIjoiaW1hZ2VzL3BpbmF0YXMvcDItbC5wbmciLCJ3aWR0aCI6NjcsInJvdGF0ZWQiOmZhbHNlLCJ4IjoxMTcsInkiOjczMCwiaGVpZ2h0IjoxMzZ9LHsicGF0aCI6ImltYWdlcy9waW5hdGFzL3A5LWwucG5nIiwid2lkdGgiOjY3LCJyb3RhdGVkIjpmYWxzZSwieCI6MTg4LCJ5Ijo3MzAsImhlaWdodCI6MTM2fSx7InBhdGgiOiJpbWFnZXMvcGluYXRhcy9wMTAtci5wbmciLCJ3aWR0aCI6NjIsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo0MTIsInkiOjcyNCwiaGVpZ2h0IjoxMzZ9LHsicGF0aCI6ImltYWdlcy9waW5hdGFzL3AyLXIucG5nIiwid2lkdGgiOjYyLCJyb3RhdGVkIjpmYWxzZSwieCI6Njc4LCJ5Ijo3ODUsImhlaWdodCI6MTM2fSx7InBhdGgiOiJpbWFnZXMvcGluYXRhcy9wOS1yLnBuZyIsIndpZHRoIjo2Miwicm90YXRlZCI6ZmFsc2UsIngiOjc0NCwieSI6Nzg1LCJoZWlnaHQiOjEzNn0seyJwYXRoIjoiaW1hZ2VzL3Rvb2xzX21lbnUvYnRuX2JhY2sucG5nIiwid2lkdGgiOjEzMSwicm90YXRlZCI6ZmFsc2UsIngiOjgxMCwieSI6ODA2LCJoZWlnaHQiOjQ2fSx7InBhdGgiOiJpbWFnZXMvcGluYXRhcy9wNi1yLnBuZyIsIndpZHRoIjo5Niwicm90YXRlZCI6ZmFsc2UsIngiOjU1MCwieSI6Nzk3LCJoZWlnaHQiOjEyOX0seyJwYXRoIjoiaW1hZ2VzL3BpbmF0YXMvcDYtbC5wbmciLCJ3aWR0aCI6OTQsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo4MTAsInkiOjg1NiwiaGVpZ2h0IjoxMjl9LHsicGF0aCI6ImltYWdlcy9jYW5kaWVzMS5wbmciLCJ3aWR0aCI6MTIwLCJyb3RhdGVkIjpmYWxzZSwieCI6MjU5LCJ5Ijo4NjQsImhlaWdodCI6MTIwfSx7InBhdGgiOiJpbWFnZXMvY2FuZGllczIucG5nIiwid2lkdGgiOjEyMCwicm90YXRlZCI6ZmFsc2UsIngiOjM4MywieSI6ODY0LCJoZWlnaHQiOjEyMH0seyJwYXRoIjoiaW1hZ2VzL2NhbmRpZXMzLnBuZyIsIndpZHRoIjoxMjAsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo0LCJ5Ijo4NzAsImhlaWdodCI6MTIwfSx7InBhdGgiOiJpbWFnZXMvdG9vbHNfbWVudS9idG5fYnV5LnBuZyIsIndpZHRoIjoxMTAsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo5MDgsInkiOjg1NiwiaGVpZ2h0Ijo1MX0seyJwYXRoIjoiaW1hZ2VzL3Rvb2xzX21lbnUvYnRuX3VwZ3JhZGUucG5nIiwid2lkdGgiOjExMCwicm90YXRlZCI6ZmFsc2UsIngiOjEyOCwieSI6ODcwLCJoZWlnaHQiOjUwfSx7InBhdGgiOiJpbWFnZXMvdHV0b3JpYWwvaGFuZC5wbmciLCJ3aWR0aCI6NjYsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo3OTgsInkiOjUxMSwiaGVpZ2h0IjoxMDF9LHsicGF0aCI6ImltYWdlcy91aS9tb2RhbF9hd2F5L2J0bl9vay5wbmciLCJ3aWR0aCI6MTAwLCJyb3RhdGVkIjpmYWxzZSwieCI6OTA4LCJ5Ijo5MTEsImhlaWdodCI6NTB9LHsicGF0aCI6ImltYWdlcy90dXRvcmlhbC9idWJibGUucG5nIiwid2lkdGgiOjg1LCJyb3RhdGVkIjpmYWxzZSwieCI6MTI4LCJ5Ijo5MjQsImhlaWdodCI6ODV9LHsicGF0aCI6ImltYWdlcy91aS9idG5fbWlzc2lvbi5wbmciLCJ3aWR0aCI6NDYsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo2MjMsInkiOjE4OCwiaGVpZ2h0Ijo4NH0seyJwYXRoIjoiaW1hZ2VzL3VpL2J0bl90b29scy5wbmciLCJ3aWR0aCI6NDYsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo2NTAsInkiOjkyNSwiaGVpZ2h0Ijo4NH0seyJwYXRoIjoiaW1hZ2VzL3Rvb2xzX21lbnUvdG9vbHMvaGFtbWVyL3BpYy5wbmciLCJ3aWR0aCI6NzAsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo3MDAsInkiOjkyNSwiaGVpZ2h0Ijo3MX0seyJwYXRoIjoiaW1hZ2VzL3Rvb2xzX21lbnUvdG9vbHMvbXV0dG9uLWNob3AvcGljLnBuZyIsIndpZHRoIjo3MCwicm90YXRlZCI6ZmFsc2UsIngiOjUwNywieSI6OTMwLCJoZWlnaHQiOjcxfSx7InBhdGgiOiJpbWFnZXMvdG9vbHNfbWVudS90b29scy9iYXR0bGUtYXhlL2FuaW0ucG5nIiwid2lkdGgiOjQ3LCJyb3RhdGVkIjpmYWxzZSwieCI6NTgxLCJ5Ijo5MzAsImhlaWdodCI6Njl9LHsicGF0aCI6ImltYWdlcy91aS9zY3JvbGxfaXRlbS5wbmciLCJ3aWR0aCI6NjUsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo5MDgsInkiOjk2NSwiaGVpZ2h0Ijo1NX0seyJwYXRoIjoiaW1hZ2VzL2ZvbnRzL3llbGxvd19iaWcvYzEwMC5wbmciLCJ3aWR0aCI6MjIsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo2MjMsInkiOjI3NiwiaGVpZ2h0IjozNn0seyJwYXRoIjoiaW1hZ2VzL2ZvbnRzL3llbGxvd19iaWcvYzUxLnBuZyIsIndpZHRoIjoyMiwicm90YXRlZCI6ZmFsc2UsIngiOjY0OSwieSI6Mjc2LCJoZWlnaHQiOjM2fSx7InBhdGgiOiJpbWFnZXMvZm9udHMveWVsbG93X2JpZy9jNTMucG5nIiwid2lkdGgiOjIyLCJyb3RhdGVkIjpmYWxzZSwieCI6OTkxLCJ5IjozNDgsImhlaWdodCI6MzZ9LHsicGF0aCI6ImltYWdlcy9mb250cy95ZWxsb3dfYmlnL2M1Ni5wbmciLCJ3aWR0aCI6MjIsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo1OTYsInkiOjM2MCwiaGVpZ2h0IjozNn0seyJwYXRoIjoiaW1hZ2VzL2ZvbnRzL3llbGxvd19iaWcvYzgzLnBuZyIsIndpZHRoIjoyMiwicm90YXRlZCI6ZmFsc2UsIngiOjk5MSwieSI6Mzg4LCJoZWlnaHQiOjM2fSx7InBhdGgiOiJpbWFnZXMvZm9udHMveWVsbG93X2JpZy9jNTAucG5nIiwid2lkdGgiOjIxLCJyb3RhdGVkIjpmYWxzZSwieCI6NTk2LCJ5Ijo0MDAsImhlaWdodCI6MzZ9LHsicGF0aCI6ImltYWdlcy9mb250cy95ZWxsb3dfYmlnL2M1NS5wbmciLCJ3aWR0aCI6MjAsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo5OTEsInkiOjQyOCwiaGVpZ2h0IjozNn0seyJwYXRoIjoiaW1hZ2VzL2ZvbnRzL3llbGxvd19iaWcvYzExNS5wbmciLCJ3aWR0aCI6MTksInJvdGF0ZWQiOmZhbHNlLCJ4Ijo1OTYsInkiOjQ0MCwiaGVpZ2h0IjozNn0seyJwYXRoIjoiaW1hZ2VzL2ZvbnRzL3llbGxvd19iaWcvYzQzLnBuZyIsIndpZHRoIjoxOSwicm90YXRlZCI6ZmFsc2UsIngiOjk5MSwieSI6NDY4LCJoZWlnaHQiOjM2fSx7InBhdGgiOiJpbWFnZXMvZm9udHMveWVsbG93X2JpZy9jNDkucG5nIiwid2lkdGgiOjE5LCJyb3RhdGVkIjpmYWxzZSwieCI6OTgzLCJ5Ijo1MDgsImhlaWdodCI6MzZ9LHsicGF0aCI6ImltYWdlcy9mb250cy95ZWxsb3dfc21hbGwvYzQ5LnBuZyIsIndpZHRoIjoxMSwicm90YXRlZCI6ZmFsc2UsIngiOjQ5MSwieSI6MjQzLCJoZWlnaHQiOjIxfSx7InBhdGgiOiJpbWFnZXMvZm9udHMvcHVycGxlL2M0Mi5wbmciLCJ3aWR0aCI6MTQsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo0OTEsInkiOjI2OCwiaGVpZ2h0IjoxOX0seyJwYXRoIjoiaW1hZ2VzL2ZvbnRzL3B1cnBsZS9jODcucG5nIiwid2lkdGgiOjEyLCJyb3RhdGVkIjpmYWxzZSwieCI6NDkxLCJ5IjoyOTEsImhlaWdodCI6MTl9LHsicGF0aCI6ImltYWdlcy9mb250cy9wdXJwbGUvYzc3LnBuZyIsIndpZHRoIjoxMCwicm90YXRlZCI6ZmFsc2UsIngiOjQ5MSwieSI6MzE0LCJoZWlnaHQiOjE5fSx7InBhdGgiOiJpbWFnZXMvZm9udHMvcHVycGxlL2M4MS5wbmciLCJ3aWR0aCI6MTAsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo4MzYsInkiOjMxNiwiaGVpZ2h0IjoxOX0seyJwYXRoIjoiaW1hZ2VzL2ZvbnRzL3B1cnBsZS9jNzkucG5nIiwid2lkdGgiOjksInJvdGF0ZWQiOmZhbHNlLCJ4Ijo4NTAsInkiOjMxNiwiaGVpZ2h0IjoxOX0seyJwYXRoIjoiaW1hZ2VzL2ZvbnRzL3B1cnBsZS9jODkucG5nIiwid2lkdGgiOjksInJvdGF0ZWQiOmZhbHNlLCJ4Ijo0OTEsInkiOjMzNywiaGVpZ2h0IjoxOX0seyJwYXRoIjoiaW1hZ2VzL2ZvbnRzL3B1cnBsZS9jMTAwLnBuZyIsIndpZHRoIjo4LCJyb3RhdGVkIjpmYWxzZSwieCI6Nzk4LCJ5Ijo0ODIsImhlaWdodCI6MTl9LHsicGF0aCI6ImltYWdlcy9mb250cy9wdXJwbGUvYzExMC5wbmciLCJ3aWR0aCI6OCwicm90YXRlZCI6ZmFsc2UsIngiOjgxMCwieSI6NDgyLCJoZWlnaHQiOjE5fSx7InBhdGgiOiJpbWFnZXMvZm9udHMvcHVycGxlL2MxMTMucG5nIiwid2lkdGgiOjgsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo4MjIsInkiOjQ4MiwiaGVpZ2h0IjoxOX0seyJwYXRoIjoiaW1hZ2VzL2ZvbnRzL3B1cnBsZS9jNDgucG5nIiwid2lkdGgiOjgsInJvdGF0ZWQiOmZhbHNlLCJ4IjoxMDA2LCJ5Ijo1MDgsImhlaWdodCI6MTl9LHsicGF0aCI6ImltYWdlcy9mb250cy9wdXJwbGUvYzU2LnBuZyIsIndpZHRoIjo4LCJyb3RhdGVkIjpmYWxzZSwieCI6ODY4LCJ5Ijo1MTEsImhlaWdodCI6MTl9LHsicGF0aCI6ImltYWdlcy9mb250cy9wdXJwbGUvYzY2LnBuZyIsIndpZHRoIjo4LCJyb3RhdGVkIjpmYWxzZSwieCI6NTgzLCJ5Ijo1MTksImhlaWdodCI6MTl9LHsicGF0aCI6ImltYWdlcy9mb250cy9wdXJwbGUvYzY3LnBuZyIsIndpZHRoIjo4LCJyb3RhdGVkIjpmYWxzZSwieCI6MTAwNiwieSI6NTMxLCJoZWlnaHQiOjE5fSx7InBhdGgiOiJpbWFnZXMvZm9udHMvcHVycGxlL2M2OC5wbmciLCJ3aWR0aCI6OCwicm90YXRlZCI6ZmFsc2UsIngiOjg2OCwieSI6NTM0LCJoZWlnaHQiOjE5fSx7InBhdGgiOiJpbWFnZXMvZm9udHMvcHVycGxlL2M3MS5wbmciLCJ3aWR0aCI6OCwicm90YXRlZCI6ZmFsc2UsIngiOjU4MywieSI6NTQyLCJoZWlnaHQiOjE5fSx7InBhdGgiOiJpbWFnZXMvZm9udHMvcHVycGxlL2M3Mi5wbmciLCJ3aWR0aCI6OCwicm90YXRlZCI6ZmFsc2UsIngiOjk4MywieSI6NTQ4LCJoZWlnaHQiOjE5fSx7InBhdGgiOiJpbWFnZXMvZm9udHMvcHVycGxlL2M3NS5wbmciLCJ3aWR0aCI6OCwicm90YXRlZCI6ZmFsc2UsIngiOjk5NSwieSI6NTU0LCJoZWlnaHQiOjE5fSx7InBhdGgiOiJpbWFnZXMvZm9udHMvcHVycGxlL2M3OC5wbmciLCJ3aWR0aCI6OCwicm90YXRlZCI6ZmFsc2UsIngiOjEwMDcsInkiOjU1NCwiaGVpZ2h0IjoxOX0seyJwYXRoIjoiaW1hZ2VzL2ZvbnRzL3B1cnBsZS9jODAucG5nIiwid2lkdGgiOjgsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo4NjgsInkiOjU1NywiaGVpZ2h0IjoxOX0seyJwYXRoIjoiaW1hZ2VzL2ZvbnRzL3B1cnBsZS9jODIucG5nIiwid2lkdGgiOjgsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo1ODMsInkiOjU2NSwiaGVpZ2h0IjoxOX0seyJwYXRoIjoiaW1hZ2VzL2ZvbnRzL3B1cnBsZS9jODMucG5nIiwid2lkdGgiOjgsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo5ODMsInkiOjU3MSwiaGVpZ2h0IjoxOX0seyJwYXRoIjoiaW1hZ2VzL2ZvbnRzL3B1cnBsZS9jODQucG5nIiwid2lkdGgiOjgsInJvdGF0ZWQiOmZhbHNlLCJ4IjoyOTksInkiOjU3NCwiaGVpZ2h0IjoxOX0seyJwYXRoIjoiaW1hZ2VzL2ZvbnRzL3B1cnBsZS9jODUucG5nIiwid2lkdGgiOjgsInJvdGF0ZWQiOmZhbHNlLCJ4IjozMTEsInkiOjU3NCwiaGVpZ2h0IjoxOX0seyJwYXRoIjoiaW1hZ2VzL2ZvbnRzL3B1cnBsZS9jODYucG5nIiwid2lkdGgiOjgsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo5OTUsInkiOjU3NywiaGVpZ2h0IjoxOX0seyJwYXRoIjoiaW1hZ2VzL2ZvbnRzL3B1cnBsZS9jODgucG5nIiwid2lkdGgiOjgsInJvdGF0ZWQiOmZhbHNlLCJ4IjoxMDA3LCJ5Ijo1NzcsImhlaWdodCI6MTl9LHsicGF0aCI6ImltYWdlcy9mb250cy9wdXJwbGUvYzkwLnBuZyIsIndpZHRoIjo4LCJyb3RhdGVkIjpmYWxzZSwieCI6ODY4LCJ5Ijo1ODAsImhlaWdodCI6MTl9LHsicGF0aCI6ImltYWdlcy9mb250cy9wdXJwbGUvYzUxLnBuZyIsIndpZHRoIjo3LCJyb3RhdGVkIjpmYWxzZSwieCI6ODU2LCJ5IjoxODMsImhlaWdodCI6MTl9LHsicGF0aCI6ImltYWdlcy9mb250cy9wdXJwbGUvYzUyLnBuZyIsIndpZHRoIjo3LCJyb3RhdGVkIjpmYWxzZSwieCI6ODU2LCJ5IjoyMDYsImhlaWdodCI6MTl9LHsicGF0aCI6ImltYWdlcy9mb250cy9wdXJwbGUvYzUzLnBuZyIsIndpZHRoIjo3LCJyb3RhdGVkIjpmYWxzZSwieCI6ODU2LCJ5IjoyMjksImhlaWdodCI6MTl9LHsicGF0aCI6ImltYWdlcy9mb250cy9wdXJwbGUvYzU0LnBuZyIsIndpZHRoIjo3LCJyb3RhdGVkIjpmYWxzZSwieCI6ODU2LCJ5IjoyNTIsImhlaWdodCI6MTl9LHsicGF0aCI6ImltYWdlcy9mb250cy9wdXJwbGUvYzU3LnBuZyIsIndpZHRoIjo3LCJyb3RhdGVkIjpmYWxzZSwieCI6ODU2LCJ5IjoyNzUsImhlaWdodCI6MTl9LHsicGF0aCI6ImltYWdlcy9mb250cy9wdXJwbGUvYzc2LnBuZyIsIndpZHRoIjo3LCJyb3RhdGVkIjpmYWxzZSwieCI6NTgzLCJ5Ijo1ODgsImhlaWdodCI6MTl9LHsicGF0aCI6ImltYWdlcy9mb250cy9wdXJwbGUvYzY5LnBuZyIsIndpZHRoIjo2LCJyb3RhdGVkIjpmYWxzZSwieCI6NjczLCJ5IjoxODgsImhlaWdodCI6MTl9LHsicGF0aCI6ImltYWdlcy9mb250cy9wdXJwbGUvYzcwLnBuZyIsIndpZHRoIjo2LCJyb3RhdGVkIjpmYWxzZSwieCI6NjczLCJ5IjoyMTEsImhlaWdodCI6MTl9XX0"},{ name : "__ASSET__:file___ASSET__images_atlas_2_json", data : "eyJkYXRhIjpbeyJwYXRoIjoiaW1hZ2VzL3Rvb2xzX21lbnUvdG9vbHMvd3JlY2tpbmctYmFsbC9waWMucG5nIiwid2lkdGgiOjcwLCJyb3RhdGVkIjpmYWxzZSwieCI6NCwieSI6NCwiaGVpZ2h0Ijo3MX0seyJwYXRoIjoiaW1hZ2VzL3Rvb2xzX21lbnUvdG9vbHMvYmF0LWJhdC9waWMucG5nIiwid2lkdGgiOjcwLCJyb3RhdGVkIjpmYWxzZSwieCI6NzgsInkiOjQsImhlaWdodCI6NzB9LHsicGF0aCI6ImltYWdlcy90b29sc19tZW51L3Rvb2xzL2JhdC1jYW5ub24vcGljLnBuZyIsIndpZHRoIjo3MCwicm90YXRlZCI6ZmFsc2UsIngiOjE1MiwieSI6NCwiaGVpZ2h0Ijo3MH0seyJwYXRoIjoiaW1hZ2VzL3Rvb2xzX21lbnUvdG9vbHMvYmF0dGxlLWF4ZS9waWMucG5nIiwid2lkdGgiOjcwLCJyb3RhdGVkIjpmYWxzZSwieCI6MjI2LCJ5Ijo0LCJoZWlnaHQiOjcwfSx7InBhdGgiOiJpbWFnZXMvdG9vbHNfbWVudS90b29scy9nb29kLW9sLWJhdC9waWMucG5nIiwid2lkdGgiOjcwLCJyb3RhdGVkIjpmYWxzZSwieCI6MzAwLCJ5Ijo0LCJoZWlnaHQiOjcwfSx7InBhdGgiOiJpbWFnZXMvdG9vbHNfbWVudS90b29scy9waW5hdGEtc21hc2hlci9waWMucG5nIiwid2lkdGgiOjcwLCJyb3RhdGVkIjpmYWxzZSwieCI6Mzc0LCJ5Ijo0LCJoZWlnaHQiOjcwfSx7InBhdGgiOiJpbWFnZXMvdG9vbHNfbWVudS90b29scy9wdW5jaC1pbnRlbmRlZC9waWMucG5nIiwid2lkdGgiOjcwLCJyb3RhdGVkIjpmYWxzZSwieCI6NDQ4LCJ5Ijo0LCJoZWlnaHQiOjcwfSx7InBhdGgiOiJpbWFnZXMvdG9vbHNfbWVudS90b29scy9iYXQtYmF0L2FuaW0ucG5nIiwid2lkdGgiOjY5LCJyb3RhdGVkIjpmYWxzZSwieCI6NTIyLCJ5Ijo0LCJoZWlnaHQiOjcwfSx7InBhdGgiOiJpbWFnZXMvdWkvc2Nyb2xsX2l0ZW1fYWN0aXZlLnBuZyIsIndpZHRoIjo2NSwicm90YXRlZCI6ZmFsc2UsIngiOjU5NSwieSI6NCwiaGVpZ2h0Ijo1NX0seyJwYXRoIjoiaW1hZ2VzL3VpL3Njcm9sbF9pdGVtX2FsZXJ0LnBuZyIsIndpZHRoIjo2NSwicm90YXRlZCI6ZmFsc2UsIngiOjY2NCwieSI6NCwiaGVpZ2h0Ijo1NX0seyJwYXRoIjoiaW1hZ2VzL3VpL3Njcm9sbF9pdGVtX2JvbnVzLnBuZyIsIndpZHRoIjo2NSwicm90YXRlZCI6ZmFsc2UsIngiOjczMywieSI6NCwiaGVpZ2h0Ijo1NX0seyJwYXRoIjoiaW1hZ2VzL3VpL3Njcm9sbF9pdGVtX2JvbnVzX29mZi5wbmciLCJ3aWR0aCI6NjUsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo4MDIsInkiOjQsImhlaWdodCI6NTV9XX0"},{ name : "__ASSET__:file___ASSET__images_atlas_0_json", data : "eyJkYXRhIjpbeyJwYXRoIjoiaW1hZ2VzL2V4cGxvc2lvbi5wbmciLCJ3aWR0aCI6NzA4LCJyb3RhdGVkIjpmYWxzZSwieCI6NCwieSI6NCwiaGVpZ2h0IjoxMTh9LHsicGF0aCI6ImltYWdlcy9zdHJpa2UucG5nIiwid2lkdGgiOjY0MCwicm90YXRlZCI6ZmFsc2UsIngiOjQsInkiOjEyNiwiaGVpZ2h0IjozMn0seyJwYXRoIjoiaW1hZ2VzL3Rvb2xzX21lbnUvYmcucG5nIiwid2lkdGgiOjMzMCwicm90YXRlZCI6ZmFsc2UsIngiOjY0OCwieSI6MTI2LCJoZWlnaHQiOjU2OH0seyJwYXRoIjoiaW1hZ2VzL211bmNoZXIucG5nIiwid2lkdGgiOjUyMCwicm90YXRlZCI6ZmFsc2UsIngiOjQsInkiOjE2MiwiaGVpZ2h0IjozODd9LHsicGF0aCI6ImltYWdlcy9taXNzaW9ucy9iZy5wbmciLCJ3aWR0aCI6MzIwLCJyb3RhdGVkIjpmYWxzZSwieCI6NCwieSI6NTUzLCJoZWlnaHQiOjM3Nn0seyJwYXRoIjoiaW1hZ2VzL3Rvb2xzX21lbnUvaGVhZGVyLnBuZyIsIndpZHRoIjozMjEsInJvdGF0ZWQiOmZhbHNlLCJ4IjozMjgsInkiOjY5OCwiaGVpZ2h0Ijo2MH0seyJwYXRoIjoiaW1hZ2VzL3VpL3Njcm9sbF9mcm9udC5wbmciLCJ3aWR0aCI6MzIwLCJyb3RhdGVkIjpmYWxzZSwieCI6NjUzLCJ5Ijo2OTgsImhlaWdodCI6NzJ9LHsicGF0aCI6ImltYWdlcy90b29sc19tZW51L2l0ZW1fYmcucG5nIiwid2lkdGgiOjMwNSwicm90YXRlZCI6ZmFsc2UsIngiOjMyOCwieSI6NTUzLCJoZWlnaHQiOjgwfSx7InBhdGgiOiJpbWFnZXMvbWlzc2lvbnMvbWlzc2lvbl9iZy5wbmciLCJ3aWR0aCI6MzAwLCJyb3RhdGVkIjpmYWxzZSwieCI6NzE2LCJ5Ijo0LCJoZWlnaHQiOjYxfSx7InBhdGgiOiJpbWFnZXMvdWkvc2Nyb2xsX2JhY2sucG5nIiwid2lkdGgiOjI4MCwicm90YXRlZCI6ZmFsc2UsIngiOjMyOCwieSI6NzYyLCJoZWlnaHQiOjcyfSx7InBhdGgiOiJpbWFnZXMvdHV0b3JpYWwvbmV4dF9sZXZlbC5wbmciLCJ3aWR0aCI6Mjc2LCJyb3RhdGVkIjpmYWxzZSwieCI6NjEyLCJ5Ijo3NzQsImhlaWdodCI6NjZ9LHsicGF0aCI6ImltYWdlcy90dXRvcmlhbC9hdXRvX2hpdC5wbmciLCJ3aWR0aCI6MjcwLCJyb3RhdGVkIjpmYWxzZSwieCI6MzI4LCJ5Ijo4MzgsImhlaWdodCI6NjV9LHsicGF0aCI6ImltYWdlcy90dXRvcmlhbC9pbmNyZWFzZV9oaXRzLnBuZyIsIndpZHRoIjoyNzAsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo2MDIsInkiOjg0NCwiaGVpZ2h0Ijo2NX0seyJwYXRoIjoiaW1hZ2VzL3VpL3RhcGZhc3QucG5nIiwid2lkdGgiOjI1Niwicm90YXRlZCI6ZmFsc2UsIngiOjMyOCwieSI6OTA3LCJoZWlnaHQiOjcxfSx7InBhdGgiOiJpbWFnZXMvcm9wZS5wbmciLCJ3aWR0aCI6MTAsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo5ODIsInkiOjY5LCJoZWlnaHQiOjI1MH0seyJwYXRoIjoiaW1hZ2VzL21pc3Npb25zL2Jhcl9iZy5wbmciLCJ3aWR0aCI6MjM1LCJyb3RhdGVkIjpmYWxzZSwieCI6NzE2LCJ5Ijo2OSwiaGVpZ2h0IjoyNX0seyJwYXRoIjoiaW1hZ2VzL21pc3Npb25zL2Jhcl9maWxsLnBuZyIsIndpZHRoIjoyMzUsInJvdGF0ZWQiOmZhbHNlLCJ4IjozMjgsInkiOjYzNywiaGVpZ2h0IjoyNX0seyJwYXRoIjoiaW1hZ2VzL3BpbmF0YXMvcDEtbC5wbmciLCJ3aWR0aCI6MTEyLCJyb3RhdGVkIjpmYWxzZSwieCI6NTI4LCJ5IjoxNjIsImhlaWdodCI6MTgwfSx7InBhdGgiOiJpbWFnZXMvcGluYXRhcy9wMS1yLnBuZyIsIndpZHRoIjo4MCwicm90YXRlZCI6ZmFsc2UsIngiOjUyOCwieSI6MzQ2LCJoZWlnaHQiOjE4MH0seyJwYXRoIjoiaW1hZ2VzL3BpbmF0YXMvcDcucG5nIiwid2lkdGgiOjE0MCwicm90YXRlZCI6ZmFsc2UsIngiOjg3NiwieSI6ODQ0LCJoZWlnaHQiOjE3NX0seyJwYXRoIjoiaW1hZ2VzL3Rvb2xzX21lbnUvdG9vbHMvcHVuY2gtaW50ZW5kZWQvYW5pbS5wbmciLCJ3aWR0aCI6MzUsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo5ODIsInkiOjMyMywiaGVpZ2h0IjoxNjR9LHsicGF0aCI6ImltYWdlcy9taXNzaW9ucy9jaGVja21hcmsucG5nIiwid2lkdGgiOjE2MCwicm90YXRlZCI6ZmFsc2UsIngiOjU4OCwieSI6OTEzLCJoZWlnaHQiOjQwfSx7InBhdGgiOiJpbWFnZXMvdG9vbHNfbWVudS90b29scy9waW5hdGEtc21hc2hlci9uYW1lLnBuZyIsIndpZHRoIjoxNTksInJvdGF0ZWQiOmZhbHNlLCJ4Ijo3MTYsInkiOjk4LCJoZWlnaHQiOjIxfSx7InBhdGgiOiJpbWFnZXMvdG9vbHNfbWVudS90b29scy9wdW5jaC1pbnRlbmRlZC9uYW1lLnBuZyIsIndpZHRoIjoxNTgsInJvdGF0ZWQiOmZhbHNlLCJ4IjozMjgsInkiOjY2NiwiaGVpZ2h0IjoxOX0seyJwYXRoIjoiaW1hZ2VzL3VpL3RpbWVfYmFyX2JnLnBuZyIsIndpZHRoIjoxNDUsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo0LCJ5Ijo5MzMsImhlaWdodCI6MzB9LHsicGF0aCI6ImltYWdlcy91aS90aW1lX2Jhcl9maWxsLnBuZyIsIndpZHRoIjoxNDUsInJvdGF0ZWQiOmZhbHNlLCJ4IjoxNTMsInkiOjkzMywiaGVpZ2h0IjozMH0seyJwYXRoIjoiaW1hZ2VzL3Rvb2xzX21lbnUvdG9vbHMvd3JlY2tpbmctYmFsbC9uYW1lLnBuZyIsIndpZHRoIjoxNDUsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo0OTAsInkiOjY2NiwiaGVpZ2h0IjoxOX0seyJwYXRoIjoiaW1hZ2VzL3VpL2hwX2JnLnBuZyIsIndpZHRoIjoxNDAsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo1ODgsInkiOjk1NywiaGVpZ2h0IjoyNn0seyJwYXRoIjoiaW1hZ2VzL3VpL2hwX2ZpbGwucG5nIiwid2lkdGgiOjE0MCwicm90YXRlZCI6ZmFsc2UsIngiOjczMiwieSI6OTU3LCJoZWlnaHQiOjI2fSx7InBhdGgiOiJpbWFnZXMvdG9vbHNfbWVudS90b29scy9tdXR0b24tY2hvcC9uYW1lLnBuZyIsIndpZHRoIjoxMzUsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo0LCJ5Ijo5NjcsImhlaWdodCI6MTl9LHsicGF0aCI6ImltYWdlcy9taXNzaW9ucy9idG5fYmFjay5wbmciLCJ3aWR0aCI6MTMxLCJyb3RhdGVkIjpmYWxzZSwieCI6MTQzLCJ5Ijo5NjcsImhlaWdodCI6NDZ9LHsicGF0aCI6ImltYWdlcy90b29sc19tZW51L3Rvb2xzL2dvb2Qtb2wtYmF0L25hbWUucG5nIiwid2lkdGgiOjEyMCwicm90YXRlZCI6ZmFsc2UsIngiOjg5MiwieSI6Nzc0LCJoZWlnaHQiOjE5fSx7InBhdGgiOiJpbWFnZXMvdG9vbHNfbWVudS90b29scy9iYXQtY2Fubm9uL25hbWUucG5nIiwid2lkdGgiOjExOCwicm90YXRlZCI6ZmFsc2UsIngiOjg5MiwieSI6Nzk3LCJoZWlnaHQiOjE5fSx7InBhdGgiOiJpbWFnZXMvdG9vbHNfbWVudS90b29scy9iYXR0bGUtYXhlL25hbWUucG5nIiwid2lkdGgiOjExMCwicm90YXRlZCI6ZmFsc2UsIngiOjUyOCwieSI6NTMwLCJoZWlnaHQiOjE5fSx7InBhdGgiOiJpbWFnZXMvdG9vbHNfbWVudS90b29scy9oYW1tZXIvbmFtZS5wbmciLCJ3aWR0aCI6ODcsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo4NzksInkiOjk4LCJoZWlnaHQiOjE5fSx7InBhdGgiOiJpbWFnZXMvdG9vbHNfbWVudS90b29scy9iYXQtYmF0L25hbWUucG5nIiwid2lkdGgiOjc3LCJyb3RhdGVkIjpmYWxzZSwieCI6NTY3LCJ5Ijo2MzcsImhlaWdodCI6MTl9LHsicGF0aCI6ImltYWdlcy91aS9zY3JvbGxfYXJyb3cucG5nIiwid2lkdGgiOjM1LCJyb3RhdGVkIjpmYWxzZSwieCI6OTgyLCJ5Ijo0OTEsImhlaWdodCI6NzJ9LHsicGF0aCI6ImltYWdlcy90b29sc19tZW51L3Rvb2xzL3BpbmF0YS1zbWFzaGVyL2FuaW0ucG5nIiwid2lkdGgiOjI0LCJyb3RhdGVkIjpmYWxzZSwieCI6OTk2LCJ5Ijo2OSwiaGVpZ2h0Ijo3Mn0seyJwYXRoIjoiaW1hZ2VzL3Rvb2xzX21lbnUvdG9vbHMvYmF0LWNhbm5vbi9hbmltLnBuZyIsIndpZHRoIjoyMiwicm90YXRlZCI6ZmFsc2UsIngiOjk5NiwieSI6MTQ1LCJoZWlnaHQiOjcyfSx7InBhdGgiOiJpbWFnZXMvdG9vbHNfbWVudS90b29scy9oYW1tZXIvYW5pbS5wbmciLCJ3aWR0aCI6MzksInJvdGF0ZWQiOmZhbHNlLCJ4Ijo5NzcsInkiOjY5OCwiaGVpZ2h0Ijo2NH0seyJwYXRoIjoiaW1hZ2VzL3Rvb2xzX21lbnUvdG9vbHMvbXV0dG9uLWNob3AvYW5pbS5wbmciLCJ3aWR0aCI6MzgsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo5ODIsInkiOjU2NywiaGVpZ2h0Ijo2MX0seyJwYXRoIjoiaW1hZ2VzL2ZvbnRzL3llbGxvd19iaWcvYzEyNi5wbmciLCJ3aWR0aCI6NTEsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo3NTIsInkiOjkxMywiaGVpZ2h0IjozNn0seyJwYXRoIjoiaW1hZ2VzL3VpL2xldmVsX2Jhcl9iZy5wbmciLCJ3aWR0aCI6NTAsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo4OTIsInkiOjgyMCwiaGVpZ2h0IjoxMX0seyJwYXRoIjoiaW1hZ2VzL3VpL2xldmVsX2Jhcl9maWxsLnBuZyIsIndpZHRoIjo1MCwicm90YXRlZCI6ZmFsc2UsIngiOjk0NiwieSI6ODIwLCJoZWlnaHQiOjEwfSx7InBhdGgiOiJpbWFnZXMvZm9udHMvcHVycGxlL2MzNS5wbmciLCJ3aWR0aCI6NDUsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo4MDcsInkiOjkxMywiaGVpZ2h0IjoxOX0seyJwYXRoIjoiaW1hZ2VzL3VpL2F0dGVudGlvbl90YWcucG5nIiwid2lkdGgiOjQwLCJyb3RhdGVkIjpmYWxzZSwieCI6Mjc4LCJ5Ijo5NjcsImhlaWdodCI6NDB9LHsicGF0aCI6ImltYWdlcy9mb250cy95ZWxsb3dfYmlnL2M3Ny5wbmciLCJ3aWR0aCI6MzQsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo5ODIsInkiOjYzMiwiaGVpZ2h0IjozNn0seyJwYXRoIjoiaW1hZ2VzL2ZvbnRzL3llbGxvd19iaWcvYzM2LnBuZyIsIndpZHRoIjozMSwicm90YXRlZCI6ZmFsc2UsIngiOjYxMiwieSI6MzQ2LCJoZWlnaHQiOjM2fSx7InBhdGgiOiJpbWFnZXMvZm9udHMveWVsbG93X2JpZy9jNDIucG5nIiwid2lkdGgiOjMwLCJyb3RhdGVkIjpmYWxzZSwieCI6NjEyLCJ5IjozODYsImhlaWdodCI6MzZ9LHsicGF0aCI6ImltYWdlcy9mb250cy95ZWxsb3dfYmlnL2M3NS5wbmciLCJ3aWR0aCI6MjgsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo2MTIsInkiOjQyNiwiaGVpZ2h0IjozNn0seyJwYXRoIjoiaW1hZ2VzL2ZvbnRzL3llbGxvd19iaWcvYzc4LnBuZyIsIndpZHRoIjoyOCwicm90YXRlZCI6ZmFsc2UsIngiOjYxMiwieSI6NDY2LCJoZWlnaHQiOjM2fSx7InBhdGgiOiJpbWFnZXMvZm9udHMveWVsbG93X2JpZy9jNzkucG5nIiwid2lkdGgiOjI3LCJyb3RhdGVkIjpmYWxzZSwieCI6MzIyLCJ5Ijo5ODIsImhlaWdodCI6MzZ9LHsicGF0aCI6ImltYWdlcy9mb250cy95ZWxsb3dfYmlnL2M4MS5wbmciLCJ3aWR0aCI6MjcsInJvdGF0ZWQiOmZhbHNlLCJ4IjozNTMsInkiOjk4MiwiaGVpZ2h0IjozNn0seyJwYXRoIjoiaW1hZ2VzL2ZvbnRzL3llbGxvd19iaWcvYzY4LnBuZyIsIndpZHRoIjoyNiwicm90YXRlZCI6ZmFsc2UsIngiOjM4NCwieSI6OTgyLCJoZWlnaHQiOjM2fSx7InBhdGgiOiJpbWFnZXMvZm9udHMveWVsbG93X2JpZy9jODUucG5nIiwid2lkdGgiOjI2LCJyb3RhdGVkIjpmYWxzZSwieCI6NDE0LCJ5Ijo5ODIsImhlaWdodCI6MzZ9LHsicGF0aCI6ImltYWdlcy9mb250cy95ZWxsb3dfYmlnL2M2Ni5wbmciLCJ3aWR0aCI6MjUsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo0NDQsInkiOjk4MiwiaGVpZ2h0IjozNn0seyJwYXRoIjoiaW1hZ2VzL2ZvbnRzL3llbGxvd19iaWcvYzg0LnBuZyIsIndpZHRoIjoyNSwicm90YXRlZCI6ZmFsc2UsIngiOjQ3MywieSI6OTgyLCJoZWlnaHQiOjM2fSx7InBhdGgiOiJpbWFnZXMvZm9udHMveWVsbG93X2JpZy9jNDgucG5nIiwid2lkdGgiOjI0LCJyb3RhdGVkIjpmYWxzZSwieCI6OTk2LCJ5IjoyMjEsImhlaWdodCI6MzZ9LHsicGF0aCI6ImltYWdlcy9mb250cy95ZWxsb3dfYmlnL2MxMTMucG5nIiwid2lkdGgiOjIzLCJyb3RhdGVkIjpmYWxzZSwieCI6OTk2LCJ5IjoyNjEsImhlaWdodCI6MzZ9LHsicGF0aCI6ImltYWdlcy9mb250cy95ZWxsb3dfYmlnL2M1Mi5wbmciLCJ3aWR0aCI6MjMsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo1MDIsInkiOjk4MiwiaGVpZ2h0IjozNn0seyJwYXRoIjoiaW1hZ2VzL2ZvbnRzL3llbGxvd19iaWcvYzU0LnBuZyIsIndpZHRoIjoyMywicm90YXRlZCI6ZmFsc2UsIngiOjUyOSwieSI6OTgyLCJoZWlnaHQiOjM2fSx7InBhdGgiOiJpbWFnZXMvZm9udHMveWVsbG93X2JpZy9jNTcucG5nIiwid2lkdGgiOjIzLCJyb3RhdGVkIjpmYWxzZSwieCI6NTU2LCJ5Ijo5ODIsImhlaWdodCI6MzZ9LHsicGF0aCI6ImltYWdlcy9mb250cy95ZWxsb3dfYmlnL2M0NC5wbmciLCJ3aWR0aCI6MTMsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo4NTYsInkiOjkxMywiaGVpZ2h0IjozNX0seyJwYXRoIjoiaW1hZ2VzL2ZvbnRzL3llbGxvd19zbWFsbC9jMTI2LnBuZyIsIndpZHRoIjoyOSwicm90YXRlZCI6ZmFsc2UsIngiOjk4MiwieSI6NjcyLCJoZWlnaHQiOjIxfSx7InBhdGgiOiJpbWFnZXMvZm9udHMveWVsbG93X3NtYWxsL2M3Ny5wbmciLCJ3aWR0aCI6MjAsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo5NTUsInkiOjY5LCJoZWlnaHQiOjIxfSx7InBhdGgiOiJpbWFnZXMvZm9udHMveWVsbG93X3NtYWxsL2MzNi5wbmciLCJ3aWR0aCI6MTgsInJvdGF0ZWQiOmZhbHNlLCJ4IjozMDIsInkiOjkzMywiaGVpZ2h0IjoyMX0seyJwYXRoIjoiaW1hZ2VzL2ZvbnRzL3llbGxvd19zbWFsbC9jNDIucG5nIiwid2lkdGgiOjE3LCJyb3RhdGVkIjpmYWxzZSwieCI6NTgzLCJ5Ijo5ODcsImhlaWdodCI6MjF9LHsicGF0aCI6ImltYWdlcy9mb250cy95ZWxsb3dfc21hbGwvYzc1LnBuZyIsIndpZHRoIjoxNywicm90YXRlZCI6ZmFsc2UsIngiOjYwNCwieSI6OTg3LCJoZWlnaHQiOjIxfSx7InBhdGgiOiJpbWFnZXMvZm9udHMveWVsbG93X3NtYWxsL2M3OC5wbmciLCJ3aWR0aCI6MTcsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo2MjUsInkiOjk4NywiaGVpZ2h0IjoyMX0seyJwYXRoIjoiaW1hZ2VzL2ZvbnRzL3llbGxvd19zbWFsbC9jNzkucG5nIiwid2lkdGgiOjE2LCJyb3RhdGVkIjpmYWxzZSwieCI6NjQ2LCJ5Ijo5ODcsImhlaWdodCI6MjF9LHsicGF0aCI6ImltYWdlcy9mb250cy95ZWxsb3dfc21hbGwvYzgxLnBuZyIsIndpZHRoIjoxNiwicm90YXRlZCI6ZmFsc2UsIngiOjY2NiwieSI6OTg3LCJoZWlnaHQiOjIxfSx7InBhdGgiOiJpbWFnZXMvZm9udHMveWVsbG93X3NtYWxsL2M2Ni5wbmciLCJ3aWR0aCI6MTUsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo2ODYsInkiOjk4NywiaGVpZ2h0IjoyMX0seyJwYXRoIjoiaW1hZ2VzL2ZvbnRzL3llbGxvd19zbWFsbC9jNjgucG5nIiwid2lkdGgiOjE1LCJyb3RhdGVkIjpmYWxzZSwieCI6NzA1LCJ5Ijo5ODcsImhlaWdodCI6MjF9LHsicGF0aCI6ImltYWdlcy9mb250cy95ZWxsb3dfc21hbGwvYzg0LnBuZyIsIndpZHRoIjoxNSwicm90YXRlZCI6ZmFsc2UsIngiOjcyNCwieSI6OTg3LCJoZWlnaHQiOjIxfSx7InBhdGgiOiJpbWFnZXMvZm9udHMveWVsbG93X3NtYWxsL2M4NS5wbmciLCJ3aWR0aCI6MTUsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo3NDMsInkiOjk4NywiaGVpZ2h0IjoyMX0seyJwYXRoIjoiaW1hZ2VzL2ZvbnRzL3llbGxvd19zbWFsbC9jMTEzLnBuZyIsIndpZHRoIjoxNCwicm90YXRlZCI6ZmFsc2UsIngiOjc2MiwieSI6OTg3LCJoZWlnaHQiOjIxfSx7InBhdGgiOiJpbWFnZXMvZm9udHMveWVsbG93X3NtYWxsL2M0OC5wbmciLCJ3aWR0aCI6MTQsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo3ODAsInkiOjk4NywiaGVpZ2h0IjoyMX0seyJwYXRoIjoiaW1hZ2VzL2ZvbnRzL3llbGxvd19zbWFsbC9jNTQucG5nIiwid2lkdGgiOjE0LCJyb3RhdGVkIjpmYWxzZSwieCI6Nzk4LCJ5Ijo5ODcsImhlaWdodCI6MjF9LHsicGF0aCI6ImltYWdlcy9mb250cy95ZWxsb3dfc21hbGwvYzU3LnBuZyIsIndpZHRoIjoxNCwicm90YXRlZCI6ZmFsc2UsIngiOjgxNiwieSI6OTg3LCJoZWlnaHQiOjIxfSx7InBhdGgiOiJpbWFnZXMvZm9udHMveWVsbG93X3NtYWxsL2MxMDAucG5nIiwid2lkdGgiOjEzLCJyb3RhdGVkIjpmYWxzZSwieCI6ODM0LCJ5Ijo5ODcsImhlaWdodCI6MjF9LHsicGF0aCI6ImltYWdlcy9mb250cy95ZWxsb3dfc21hbGwvYzUxLnBuZyIsIndpZHRoIjoxMywicm90YXRlZCI6ZmFsc2UsIngiOjg1MSwieSI6OTg3LCJoZWlnaHQiOjIxfSx7InBhdGgiOiJpbWFnZXMvZm9udHMveWVsbG93X3NtYWxsL2M1Mi5wbmciLCJ3aWR0aCI6MTMsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo0LCJ5Ijo5OTAsImhlaWdodCI6MjF9LHsicGF0aCI6ImltYWdlcy9mb250cy95ZWxsb3dfc21hbGwvYzUzLnBuZyIsIndpZHRoIjoxMywicm90YXRlZCI6ZmFsc2UsIngiOjIxLCJ5Ijo5OTAsImhlaWdodCI6MjF9LHsicGF0aCI6ImltYWdlcy9mb250cy95ZWxsb3dfc21hbGwvYzU2LnBuZyIsIndpZHRoIjoxMywicm90YXRlZCI6ZmFsc2UsIngiOjM4LCJ5Ijo5OTAsImhlaWdodCI6MjF9LHsicGF0aCI6ImltYWdlcy9mb250cy95ZWxsb3dfc21hbGwvYzgzLnBuZyIsIndpZHRoIjoxMywicm90YXRlZCI6ZmFsc2UsIngiOjU1LCJ5Ijo5OTAsImhlaWdodCI6MjF9LHsicGF0aCI6ImltYWdlcy9mb250cy95ZWxsb3dfc21hbGwvYzExNS5wbmciLCJ3aWR0aCI6MTIsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo3MiwieSI6OTkwLCJoZWlnaHQiOjIxfSx7InBhdGgiOiJpbWFnZXMvZm9udHMveWVsbG93X3NtYWxsL2M1MC5wbmciLCJ3aWR0aCI6MTIsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo4OCwieSI6OTkwLCJoZWlnaHQiOjIxfSx7InBhdGgiOiJpbWFnZXMvZm9udHMveWVsbG93X3NtYWxsL2M1NS5wbmciLCJ3aWR0aCI6MTIsInJvdGF0ZWQiOmZhbHNlLCJ4IjoxMDQsInkiOjk5MCwiaGVpZ2h0IjoyMX0seyJwYXRoIjoiaW1hZ2VzL2ZvbnRzL3llbGxvd19zbWFsbC9jNDMucG5nIiwid2lkdGgiOjExLCJyb3RhdGVkIjpmYWxzZSwieCI6MTIwLCJ5Ijo5OTAsImhlaWdodCI6MjF9LHsicGF0aCI6ImltYWdlcy9mb250cy95ZWxsb3dfc21hbGwvYzQ0LnBuZyIsIndpZHRoIjo4LCJyb3RhdGVkIjpmYWxzZSwieCI6OTcwLCJ5Ijo5NCwiaGVpZ2h0IjoyMH0seyJwYXRoIjoiaW1hZ2VzL2ZvbnRzL3B1cnBsZS9jMTI2LnBuZyIsIndpZHRoIjoxOSwicm90YXRlZCI6ZmFsc2UsIngiOjYxMiwieSI6NTA2LCJoZWlnaHQiOjE5fSx7InBhdGgiOiJpbWFnZXMvZm9udHMvcHVycGxlL2MzNi5wbmciLCJ3aWR0aCI6MTUsInJvdGF0ZWQiOmZhbHNlLCJ4IjoxMDAwLCJ5Ijo4MjAsImhlaWdodCI6MTl9LHsicGF0aCI6ImltYWdlcy9mb250cy9wdXJwbGUvYzY1LnBuZyIsIndpZHRoIjo5LCJyb3RhdGVkIjpmYWxzZSwieCI6NjM1LCJ5Ijo1MDYsImhlaWdodCI6MTl9LHsicGF0aCI6ImltYWdlcy9mb250cy9wdXJwbGUvYzExNS5wbmciLCJ3aWR0aCI6Nywicm90YXRlZCI6ZmFsc2UsIngiOjYzNywieSI6NTUzLCJoZWlnaHQiOjE5fSx7InBhdGgiOiJpbWFnZXMvZm9udHMvcHVycGxlL2M0My5wbmciLCJ3aWR0aCI6Nywicm90YXRlZCI6ZmFsc2UsIngiOjYzNywieSI6NTc2LCJoZWlnaHQiOjE5fSx7InBhdGgiOiJpbWFnZXMvZm9udHMvcHVycGxlL2M1MC5wbmciLCJ3aWR0aCI6Nywicm90YXRlZCI6ZmFsc2UsIngiOjYzNywieSI6NTk5LCJoZWlnaHQiOjE5fSx7InBhdGgiOiJpbWFnZXMvZm9udHMvcHVycGxlL2M1NS5wbmciLCJ3aWR0aCI6Niwicm90YXRlZCI6ZmFsc2UsIngiOjEwMTQsInkiOjc5NywiaGVpZ2h0IjoxOX0seyJwYXRoIjoiaW1hZ2VzL2ZvbnRzL3B1cnBsZS9jMzIucG5nIiwid2lkdGgiOjUsInJvdGF0ZWQiOmZhbHNlLCJ4Ijo2MzksInkiOjY2MCwiaGVpZ2h0IjoxOX0seyJwYXRoIjoiaW1hZ2VzL2ZvbnRzL3B1cnBsZS9jNDkucG5nIiwid2lkdGgiOjUsInJvdGF0ZWQiOmZhbHNlLCJ4IjoxMDE1LCJ5Ijo2NzIsImhlaWdodCI6MTl9LHsicGF0aCI6ImltYWdlcy9mb250cy9wdXJwbGUvYzc0LnBuZyIsIndpZHRoIjo0LCJyb3RhdGVkIjpmYWxzZSwieCI6MTAxNiwieSI6NzY2LCJoZWlnaHQiOjE5fSx7InBhdGgiOiJpbWFnZXMvZm9udHMvcHVycGxlL2M0NC5wbmciLCJ3aWR0aCI6Mywicm90YXRlZCI6ZmFsc2UsIngiOjg2OCwieSI6OTg3LCJoZWlnaHQiOjE5fSx7InBhdGgiOiJpbWFnZXMvZm9udHMvcHVycGxlL2M3My5wbmciLCJ3aWR0aCI6Mywicm90YXRlZCI6ZmFsc2UsIngiOjEzNSwieSI6OTkwLCJoZWlnaHQiOjE5fV19"},{ name : "__ASSET__:file___ASSET__images_fonts_purple_kern_txt", data : "ewoJImFueSI6IHsKCQkiYW55IjogMCwKCQkiLCI6IDEsCgkJIn4iOiA1LAoJCSIjIjogNQoJfQp9"},{ name : "__ASSET__:bitmap_co_doubleduck_utils_ProgBG", data : "aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU5jQUFBQW9DQVlBQUFCdHVXOTVBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBNEtXbFVXSFJZVFV3NlkyOXRMbUZrYjJKbExuaHRjQUFBQUFBQVBEOTRjR0ZqYTJWMElHSmxaMmx1UFNMdnU3OGlJR2xrUFNKWE5VMHdUWEJEWldocFNIcHlaVk42VGxSamVtdGpPV1FpUHo0S1BIZzZlRzF3YldWMFlTQjRiV3h1Y3pwNFBTSmhaRzlpWlRwdWN6cHRaWFJoTHlJZ2VEcDRiWEIwYXowaVFXUnZZbVVnV0UxUUlFTnZjbVVnTlM0MkxXTXdNVFFnTnprdU1UVTJOemszTENBeU1ERTBMekE0THpJd0xUQTVPalV6T2pBeUlDQWdJQ0FnSUNBaVBnb2dJQ0E4Y21SbU9sSkVSaUI0Yld4dWN6cHlaR1k5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZNREl2TWpJdGNtUm1MWE41Ym5SaGVDMXVjeU1pUGdvZ0lDQWdJQ0E4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWdvZ0lDQWdJQ0FnSUNBZ0lDQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpQ2lBZ0lDQWdJQ0FnSUNBZ0lIaHRiRzV6T21SalBTSm9kSFJ3T2k4dmNIVnliQzV2Y21jdlpHTXZaV3hsYldWdWRITXZNUzR4THlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNmNHaHZkRzl6YUc5d1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM0JvYjNSdmMyaHZjQzh4TGpBdklnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02YzNSRmRuUTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpVVjJaVzUwSXlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNmRHbG1aajBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5MGFXWm1MekV1TUM4aUNpQWdJQ0FnSUNBZ0lDQWdJSGh0Ykc1ek9tVjRhV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdlpYaHBaaTh4TGpBdklqNEtJQ0FnSUNBZ0lDQWdQSGh0Y0RwRGNtVmhkRzl5Vkc5dmJENUJaRzlpWlNCUWFHOTBiM05vYjNBZ1EwTWdNakF4TkNBb1RXRmphVzUwYjNOb0tUd3ZlRzF3T2tOeVpXRjBiM0pVYjI5c1Bnb2dJQ0FnSUNBZ0lDQThlRzF3T2tOeVpXRjBaVVJoZEdVK01qQXhOQzB4TUMweE5GUXhOem8xTXpveU9Tc3dNem93TUR3dmVHMXdPa055WldGMFpVUmhkR1UrQ2lBZ0lDQWdJQ0FnSUR4NGJYQTZUVzlrYVdaNVJHRjBaVDR5TURFMExURXdMVEUwVkRFM09qVXpPalV3S3pBek9qQXdQQzk0YlhBNlRXOWthV1o1UkdGMFpUNEtJQ0FnSUNBZ0lDQWdQSGh0Y0RwTlpYUmhaR0YwWVVSaGRHVStNakF4TkMweE1DMHhORlF4TnpvMU16bzFNQ3N3TXpvd01Ed3ZlRzF3T2sxbGRHRmtZWFJoUkdGMFpUNEtJQ0FnSUNBZ0lDQWdQR1JqT21admNtMWhkRDVwYldGblpTOXdibWM4TDJSak9tWnZjbTFoZEQ0S0lDQWdJQ0FnSUNBZ1BIQm9iM1J2YzJodmNEcERiMnh2Y2sxdlpHVStNend2Y0dodmRHOXphRzl3T2tOdmJHOXlUVzlrWlQ0S0lDQWdJQ0FnSUNBZ1BIaHRjRTFOT2tsdWMzUmhibU5sU1VRK2VHMXdMbWxwWkRveU1UazRNVEkzWVMwMFpURXdMVFEyTldZdFlXWTRaUzFrTnpabE5UTTFaakZrTmpVOEwzaHRjRTFOT2tsdWMzUmhibU5sU1VRK0NpQWdJQ0FnSUNBZ0lEeDRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBuaHRjQzVrYVdRNk1qRTVPREV5TjJFdE5HVXhNQzAwTmpWbUxXRm1PR1V0WkRjMlpUVXpOV1l4WkRZMVBDOTRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBnb2dJQ0FnSUNBZ0lDQThlRzF3VFUwNlQzSnBaMmx1WVd4RWIyTjFiV1Z1ZEVsRVBuaHRjQzVrYVdRNk1qRTVPREV5TjJFdE5HVXhNQzAwTmpWbUxXRm1PR1V0WkRjMlpUVXpOV1l4WkRZMVBDOTRiWEJOVFRwUGNtbG5hVzVoYkVSdlkzVnRaVzUwU1VRK0NpQWdJQ0FnSUNBZ0lEeDRiWEJOVFRwSWFYTjBiM0o1UGdvZ0lDQWdJQ0FnSUNBZ0lDQThjbVJtT2xObGNUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVNCeVpHWTZjR0Z5YzJWVWVYQmxQU0pTWlhOdmRYSmpaU0krQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4emRFVjJkRHBoWTNScGIyNCtZM0psWVhSbFpEd3ZjM1JGZG5RNllXTjBhVzl1UGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGMzUkZkblE2YVc1emRHRnVZMlZKUkQ1NGJYQXVhV2xrT2pJeE9UZ3hNamRoTFRSbE1UQXRORFkxWmkxaFpqaGxMV1EzTm1VMU16Vm1NV1EyTlR3dmMzUkZkblE2YVc1emRHRnVZMlZKUkQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BITjBSWFowT25kb1pXNCtNakF4TkMweE1DMHhORlF4TnpvMU16b3lPU3N3TXpvd01Ed3ZjM1JGZG5RNmQyaGxiajRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhOMFJYWjBPbk52Wm5SM1lYSmxRV2RsYm5RK1FXUnZZbVVnVUdodmRHOXphRzl3SUVORElESXdNVFFnS0UxaFkybHVkRzl6YUNrOEwzTjBSWFowT25OdlpuUjNZWEpsUVdkbGJuUStDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lDQWdJQ0E4TDNKa1pqcFRaWEUrQ2lBZ0lDQWdJQ0FnSUR3dmVHMXdUVTA2U0dsemRHOXllVDRLSUNBZ0lDQWdJQ0FnUEhScFptWTZUM0pwWlc1MFlYUnBiMjQrTVR3dmRHbG1aanBQY21sbGJuUmhkR2x2Ymo0S0lDQWdJQ0FnSUNBZ1BIUnBabVk2V0ZKbGMyOXNkWFJwYjI0K056SXdNREF3THpFd01EQXdQQzkwYVdabU9saFNaWE52YkhWMGFXOXVQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFpVbVZ6YjJ4MWRHbHZiajQzTWpBd01EQXZNVEF3TURBOEwzUnBabVk2V1ZKbGMyOXNkWFJwYjI0K0NpQWdJQ0FnSUNBZ0lEeDBhV1ptT2xKbGMyOXNkWFJwYjI1VmJtbDBQakk4TDNScFptWTZVbVZ6YjJ4MWRHbHZibFZ1YVhRK0NpQWdJQ0FnSUNBZ0lEeGxlR2xtT2tOdmJHOXlVM0JoWTJVK05qVTFNelU4TDJWNGFXWTZRMjlzYjNKVGNHRmpaVDRLSUNBZ0lDQWdJQ0FnUEdWNGFXWTZVR2w0Wld4WVJHbHRaVzV6YVc5dVBqSXhOVHd2WlhocFpqcFFhWGhsYkZoRWFXMWxibk5wYjI0K0NpQWdJQ0FnSUNBZ0lEeGxlR2xtT2xCcGVHVnNXVVJwYldWdWMybHZiajQwTUR3dlpYaHBaanBRYVhobGJGbEVhVzFsYm5OcGIyNCtDaUFnSUNBZ0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBnb2dJQ0E4TDNKa1pqcFNSRVkrQ2p3dmVEcDRiWEJ0WlhSaFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvOFAzaHdZV05yWlhRZ1pXNWtQU0ozSWo4K1BLQ1R6Z0FBQUNCalNGSk5BQUI2SlFBQWdJTUFBUG4vQUFDQTZRQUFkVEFBQU9wZ0FBQTZtQUFBRjIrU1g4VkdBQUFHUVVsRVFWUjQydXlkUzJ4VVZSaUF2M1B2blprN0xkQVh0RWlySGJDaXBLU2lBWVZJMkJnTkVXR25MRmpRR0xFSk8waGNzcElRRWhOWXNZTFVrTGhCZHlqR2FIVFJDQlNWaUkwb2lrQ3JvZERhSjIzbmRSL0h4Ync3TTMzcGh1bi9KU2M1OTl4SEp1Zk1sLytjTStlZVVWcHJCRUg0LzdFeUdhWFVVdTVmQTdRRHp3QlBBanFkQk9GeFJLWFQzOEJ0NENid3oySWZrZ2xZMWhJL3hGUEFXOENyd0hhZ1R0cEZxRERHZ1Y3Z0crQlQ0QytXWXRraXVvWWR3SG5BeVl0U2tpUlZlbkxTMy91T1JUbTFDTGxPU2lWTGtzVEpoY3FsTW1MTk1lYUtBQmVBbDBwM1VoVzJVWVZ0VktVZUxOMEo0VEVlY0FIRS9TaHhQNG91LzIzK0h0Z1A5TTgxNXBwUHJtZUJIcUJ4OW9sNnE1RjZheTExNWhwQ1JoV21NcVYxaElyQTB4NEpQOHE0OXc5ajdrUEczT0ZTbHcwRHU0RGZseUpYQlBnUmFNZ3ZyTE1haVlTZW84NXN4RlFXams3ZzR5RlQra0xGUkRDbE1EQUpxQkNlZGhuM2h1bFAzR0s4V0xKUllPdnNDRGFmWEFIZ2o3UmdXZHJzRGxwRHo2R0F1QjlENDB0TENCWGVWVFN3alRBYUdFamM0czk0Myt4TCtvR042VW1QQXJtTU1zODhOMXVzanFwWGVOcmVUTktQRS9XblJTeGhXYUR4aWZyVEpQMDRUOXViNmFoNnBWUVA3MXhKTVV0RXJwZEp6ZThYaUxVMjJNcU1OeW0xTFN4cnFzMGFIaVlINkl0ZW5uMXFPM0J0dnNoMU92OWdvNzJGSjRJUkVVc1FnQmx2a2llQ0VUYmFXK2IwcHBSY0x3TTdNZ2VyclhWRTdFM01lSStrVmdVaEs5Z2pJdlltVmx2cjhvdDNwUDBwS1pjQ0R1VVA1RGJZN2JpK2c0OG5OU29JYVh3OFhOOWhnOTJPS294UGg4cko5U0t3TjNQUUZHaWh4bXdnb1dNb2xOU29JR1FEanlLaFk5U1lEVFFGV3ZKUDdRWE1Vbkx0Sk8vSDRqWEJGb2xZZ2pCUEJGc1RMSkNyRVhpK1NDN1R6QzFLREtrd05VWTlqazVJRFFwQ0dSeWRvTWFvSjZUQzJUTExZa3VSWEZyVG1zbXZ0T29JR0NGOExiOWxDVUxaeUtWOUFrYUlsVmJ1alN1dGVhcElMdC9QRGF6Q1JqVVdnYmtXTGdyQ3NrZWpzUWdRTnFxelpaNlhlMGZTS09oQ1pnc05xVGxCV0NCbWJnNkRZREFYa1l5Q2EvS01GQVJoOFJ3L25zdG41UXFGaUdieUtydVZnQ0FJYzZGUStIbkI2TXFWbkVkWnVWcGFHTW9zTDNSMEFvMG5nZ25DUEdyNWVManBXWFdsb0xlWGgwVnl2ZmNlTnpOeVRYdVBjTFNESVhJSlFsa01GSTUybUU0dkQxUUtQdnFJWDR2a09uaVFLMjF0M0FlWThpYUkrVk9ZeXBJYUZJUXltTW9pNWs4eDVVMEEwTmJHL2QyN3VWRWtWMU1UMS9mdjV5dEl2Y015NWc0UlVEYXlLNFlnbEVJVFVEWmo3bEQyM2NhMFA0a2l1UUNucTR1UE13Y1BuQUZjbmNCQW9wY2dGSGNKTFZ5ZDRJRXprQzNMOTJlMlhEUTM4MjFYRnoyUVdsWS82UFFUTmxiSTFMd2dGTVFzVGRoWXdhRFRuMzBkcTZ1TG51Wm12aTJZN3NodExKT2F2SmlZNEkybUppNGxreEJRUVY1YThSb2hGU2F1bzdJNlhoQ3gwTmlxaW9TTzhmMzAxemc2U1RBSVEwUHNxYTNsaTh4VlJaRUxvTGFXTDdxNzZRWndkSkpmb3RjQUNDcGJJcGl3N01VS0todUFYNkxYY0hRU2dPNXV1bk5pbGVrV1pqaHdnQk9IRDZmMjBaajBSdmc1ZWhrRGs1QVJGc0dFWlN0V3lBaGpZUEp6OURLVDNnZ0Fody9UZStBQUowcVB5MHB6NTh3WmpuVjJjaDFnMUgzQWpXZ1BubmFwTmxhbHU0Y2ltYkE4dEZJb3FvMVZlTnJsUnJTSFVmY0JBSjJkWEQ5emhtUEFuVkozRm8yNVpvbjM1cUZEdkgvdUhEc2h0VnIrR2ZzRkdnT3B2UU9TT29HblBSRk5xRUFVcGpJSnFoQUF3ODRndCtNL0VmTm5BSGozWGI0N2U1WVBnYzloOWo2RGVsNjVBSUxBYTZkUGMvRG9VZllDTnFRMnJsa1hqTERLYk1BMndpZ01QTzFLZXdnVmdha3NORDV4UDhZamI1VEJaRDhqN21EbWRQelVLVDQ3Y29UendOZEFzbFMwVzRoY3BJWGEydGZIN21QSGVQM2lSYlpsVGxoVTB4aHNwTXBZU2NnSVM2c0lGVUhDanhIMXB4aE9EdU15a3kzZnQ0OGZQdmlBcnpvNitKTFVWdS94Y2wzSmhjcVZZUlBRM3RQRGp1NXV0bDM0aEk1NGpCcHBDcUdTc2NOTTduK2J2bmZlNFlkZHU3aEs2dDhtZjV0dm5MWll1UUJxZ2ZWQTY5Z1k3WmN1c2Y3dVhkWmQ3V1YxL3dDMXBvazJsQXpBaE1jVFg2TThEeFZwWldMSGRrWTJiR0J3eng3dTFkZHpFeGdBN2dFVEM1a0VXWXBjR2FxQlptQjFPdDhBckNoNHNpQThqck1ZS2FaSi9ZUEpEREFDM0UvbkY4aC9reXQvUEZhWEZpd2diU05VQ0U1YXB2SHk0NnBGeVNVSXd2L0p2d01BR0JuTC9DRFJiWUFBQUFBQVNVVk9SSzVDWUlJPQ"}];
var this1;
this1 = new Array(256);
lime.graphics.utils.ImageDataUtil.__alpha16 = this1;
var _g = 0;
while(_g < 256) {
var i = _g++;
lime.graphics.utils.ImageDataUtil.__alpha16[i] = i * 65536 / 255 | 0;
}
var this2;
this2 = new Array(510);
lime.graphics.utils.ImageDataUtil.__clamp = this2;
var _g1 = 0;
while(_g1 < 255) {
var i1 = _g1++;
lime.graphics.utils.ImageDataUtil.__clamp[i1] = i1;
}
var _g11 = 255;
var _g2 = 511;
while(_g11 < _g2) {
var i2 = _g11++;
lime.graphics.utils.ImageDataUtil.__clamp[i2] = 255;
}
if(window.createjs != null) createjs.Sound.alternateExtensions = ["ogg","mp3","wav"];
lime.system.System.__moduleNames = null;
lime.system.System.__startTime = haxe.Timer.stamp();
lime.utils.ByteArray.lime_byte_array_overwrite_file = lime.system.System.load("lime","lime_byte_array_overwrite_file",2);
lime.utils.ByteArray.lime_byte_array_read_file = lime.system.System.load("lime","lime_byte_array_read_file",1);
lime.utils.ByteArray.lime_lzma_decode = lime.system.System.load("lime","lime_lzma_decode",1);
lime.utils.ByteArray.lime_lzma_encode = lime.system.System.load("lime","lime_lzma_encode",1);
__ASSET__data_gameplay_js.resourceName = "__ASSET__:file___ASSET__data_gameplay_js";
__ASSET__images_atlas_0_json.resourceName = "__ASSET__:file___ASSET__images_atlas_0_json";
__ASSET__images_atlas_1_json.resourceName = "__ASSET__:file___ASSET__images_atlas_1_json";
__ASSET__images_atlas_2_json.resourceName = "__ASSET__:file___ASSET__images_atlas_2_json";
__ASSET__images_fonts_purple_kern_txt.resourceName = "__ASSET__:file___ASSET__images_fonts_purple_kern_txt";
__ASSET__images_fonts_yellow_big_kern_txt.resourceName = "__ASSET__:file___ASSET__images_fonts_yellow_big_kern_txt";
__ASSET__images_fonts_yellow_small_kern_txt.resourceName = "__ASSET__:file___ASSET__images_fonts_yellow_small_kern_txt";
ApplicationMain.embeddedFiles = [];
openfl.display.DisplayObject.__instanceCount = 0;
openfl.display.DisplayObject.__worldRenderDirty = 0;
openfl.display.DisplayObject.__worldTransformDirty = 0;
GlobalVars.gameVersion = "1.1.0";
co.doubleduck.d2p2.P2Log.DATA_VER = "1.0.0";
co.doubleduck.d2p2.P2Log.DATA_KEY = "Data";
co.doubleduck.pinata.Game.GAME_DOMAIN = "pinata_muncher";
co.doubleduck.pinata.Game.KIZI = true;
co.doubleduck.pinata.core.LevelsBar.LEVEL_SELECTED_EVENT = "LevelSelectedEvent";
co.doubleduck.pinata.core.LevelBarItem.SELECTED_EVENT = "SelectedEvent";
co.doubleduck.pinata.core.LevelBarItem.NUM_FONT = "images/fonts/yellow_big";
co.doubleduck.pinata.core.MuncherAnim.SIZE_W = 130;
co.doubleduck.pinata.core.MuncherAnim.SIZE_H = 129;
co.doubleduck.pinata.core.MuncherAnim.SHEET_ROWS = 3;
co.doubleduck.pinata.core.MuncherAnim.SHEET_COLS = 4;
co.doubleduck.pinata.core.Session.BIG_FONT = "images/fonts/yellow_big";
co.doubleduck.pinata.core.Session.SMALL_FONT = "images/fonts/yellow_small";
co.doubleduck.pinata.core.missions.MissionItem.READY_DONE_EVENT = "ReadyDoneEvent";
co.doubleduck.pinata.core.missions.MissionItem.DONE_EVENT = "DoneEvent";
co.doubleduck.pinata.core.missions.MissionItem.ONGOING_EVENT = "OngoingEvent";
co.doubleduck.pinata.core.missions.MissionItem.DESC_FONT = "images/fonts/purple/";
co.doubleduck.pinata.core.missions.MissionScr.WON_PINATA_EVENT = "WonPinataEvent";
co.doubleduck.pinata.core.pinatas.Pinata.HIT_DMG_FONT = "images/fonts/yellow_big/";
co.doubleduck.pinata.core.pinatas.Pinata.OPENED_EVENT = "OpenedEvent";
co.doubleduck.pinata.core.pinatas.Pinata.CLEARING_EVENT = "ClearingEvent";
co.doubleduck.pinata.core.pinatas.Pinata.CLEARED_EVENT = "ClearedEvent";
co.doubleduck.pinata.core.pinatas.GiftPinata.REWARD_FONT = "images/fonts/yellow_big/";
co.doubleduck.pinata.core.pinatas.GiftPinata.HPS_RECALC_ITERVAL = 250;
co.doubleduck.pinata.core.pinatas.SlashAnim.SIZE_W = 160;
co.doubleduck.pinata.core.pinatas.SlashAnim.SIZE_H = 32;
co.doubleduck.pinata.core.pinatas.SlashAnim.SHEET_ROWS = 1;
co.doubleduck.pinata.core.pinatas.SlashAnim.SHEET_COLS = 4;
co.doubleduck.pinata.core.pinatas.ExplodeAnim.SIZE_W = 118;
co.doubleduck.pinata.core.pinatas.ExplodeAnim.SIZE_H = 118;
co.doubleduck.pinata.core.pinatas.ExplodeAnim.SHEET_ROWS = 1;
co.doubleduck.pinata.core.pinatas.ExplodeAnim.SHEET_COLS = 6;
co.doubleduck.pinata.core.tools.ToolAnims.TOOL_ANIM_TO_SHOW = 3;
co.doubleduck.pinata.core.tools.ToolItem.UPGRADED_EVENT = "UpgradedEvent";
co.doubleduck.pinata.core.tools.ToolItem.RETEST_NOTIF_EVENT = "RetestNotifEvent";
co.doubleduck.pinata.core.tools.ToolItem.YELLOW_FONT = "images/fonts/yellow_small/";
co.doubleduck.pinata.core.tools.ToolItem.THIN_FONT = "images/fonts/purple/";
co.doubleduck.pinata.core.tools.ToolsScr.NOTIF_TOOLS_COUNT = 2;
co.doubleduck.pinata.meta.AwayModal.YELLOW_FONT = "images/fonts/yellow_big/";
co.doubleduck.pinata.meta.BigInt.SUFFIX = "KMBTqQsSONdUD";
co.doubleduck.pinata.meta.FlowEvents.BACK_TO_MENU = "FlowBackToMenu";
co.doubleduck.pinata.meta.FlowEvents.START_SESSION = "FlowStartSession";
co.doubleduck.pinata.meta.FlowEvents.NEXT_SESSION = "FlowNextSession";
co.doubleduck.pinata.meta.FlowEvents.RESTART_SESSION = "FlowRestartSession";
co.doubleduck.pinata.meta.ScrolledList.BAND_FACTOR = 0.3;
co.doubleduck.pinata.meta.ScrolledList.BAND_RETURN = 190;
co.doubleduck.pinata.meta.ScrolledList.DRAG_THRESHOLD = 5;
co.doubleduck.pinata.meta.ScrolledList.SNAP_LIMIT = 4;
co.doubleduck.pinata.meta.Stats.UPDATE_CANDIES_EVENT = "UpdateCandiesEvent";
co.doubleduck.pinata.meta.Stats.UPDATE_HPS_EVENT = "UpdateHPSEvent";
co.doubleduck.pinata.meta.Stats.UPDATE_TOOL_EVENT = "UpdateToolEvent";
co.doubleduck.pinata.meta.Stats.UPDATE_LEVEL_EVENT = "UpdateToolEvent";
co.doubleduck.pinata.meta.Stats.BEAT_PINATA_EVENT = "UpdateToolEvent";
co.doubleduck.pinata.meta.Stats.BASIC_BAT_ID = "good-ol-bat";
co.doubleduck.pinata.meta.Stats.FIRST_AUTO_TOOL = "pinata-smasher";
co.doubleduck.utils.Button.BUTTON_ACT_EVENT = "BUTTON_ACT_EVENT";
co.doubleduck.utils.Button.DOWN_EVENT = null;
co.doubleduck.utils.Button.OUT_EVENT = null;
co.doubleduck.utils.Button.UP_EVENT = null;
co.doubleduck.utils.Button.SCALE_FACTOR = 0.93;
co.doubleduck.utils.Button.JIGGLE_FACTOR = 0.3;
co.doubleduck.utils.Button.defaultClickSound = null;
co.doubleduck.utils.DDAssets.scale = 1.0;
co.doubleduck.utils.DDAssets.globalSmoothing = false;
co.doubleduck.utils.DDAssets.prefix = "";
co.doubleduck.utils.DDAssets._cache = new haxe.ds.StringMap();
co.doubleduck.utils.DDAssets._spritesheetCache = new haxe.ds.StringMap();
co.doubleduck.utils.DDAssets.localisedPaths = new haxe.ds.StringMap();
openfl.events.Event.ACTIVATE = "activate";
openfl.events.Event.ADDED = "added";
openfl.events.Event.ADDED_TO_STAGE = "addedToStage";
openfl.events.Event.CANCEL = "cancel";
openfl.events.Event.CHANGE = "change";
openfl.events.Event.CLOSE = "close";
openfl.events.Event.COMPLETE = "complete";
openfl.events.Event.CONNECT = "connect";
openfl.events.Event.CONTEXT3D_CREATE = "context3DCreate";
openfl.events.Event.DEACTIVATE = "deactivate";
openfl.events.Event.ENTER_FRAME = "enterFrame";
openfl.events.Event.ID3 = "id3";
openfl.events.Event.INIT = "init";
openfl.events.Event.MOUSE_LEAVE = "mouseLeave";
openfl.events.Event.OPEN = "open";
openfl.events.Event.REMOVED = "removed";
openfl.events.Event.REMOVED_FROM_STAGE = "removedFromStage";
openfl.events.Event.RENDER = "render";
openfl.events.Event.RESIZE = "resize";
openfl.events.Event.SCROLL = "scroll";
openfl.events.Event.SELECT = "select";
openfl.events.Event.SOUND_COMPLETE = "soundComplete";
openfl.events.Event.TAB_CHILDREN_CHANGE = "tabChildrenChange";
openfl.events.Event.TAB_ENABLED_CHANGE = "tabEnabledChange";
openfl.events.Event.TAB_INDEX_CHANGE = "tabIndexChange";
openfl.events.Event.UNLOAD = "unload";
co.doubleduck.utils.Fonter.CHARSET_OFFSET = 32;
co.doubleduck.utils.Fonter.CHARSET_VALUES = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";
co.doubleduck.utils.Fonter._defaultFont = null;
co.doubleduck.utils.Fonter._fontCache = null;
co.doubleduck.utils.SplashBG.resourceType = "image/jpg";
co.doubleduck.utils.SplashBG.resourceName = "__ASSET__:bitmap_co_doubleduck_utils_SplashBG";
co.doubleduck.utils.ProgBG.resourceType = "image/png";
co.doubleduck.utils.ProgBG.resourceName = "__ASSET__:bitmap_co_doubleduck_utils_ProgBG";
co.doubleduck.utils.ProgFill.resourceType = "image/png";
co.doubleduck.utils.ProgFill.resourceName = "__ASSET__:bitmap_co_doubleduck_utils_ProgFill";
co.doubleduck.utils.SoundMgr.audios = new haxe.ds.StringMap();
co.doubleduck.utils.SoundMgr.isChrome = /Chrome/.test(navigator.userAgent);
co.doubleduck.utils.SoundMgr.isAndroidBrowser = /Android/.test(navigator.userAgent);
co.doubleduck.utils.SoundMgr.available = true;
co.doubleduck.utils.SoundMgr._idCounter = 0;
co.doubleduck.utils.SoundMgr._fileType = null;
co.doubleduck.utils.SoundMgr._forceHandle = "";
co.doubleduck.utils.TweenChain.allowNew = false;
co.doubleduck.utils.TweenChain.activeChains = [];
co.doubleduck.utils.TweenChain.count = 0;
co.doubleduck.utils.TweenChain.autoVisible = true;
com.funtomic.GameOps.apiURLPrefix = "http://tools.funtomic.com/";
com.funtomic.GameOps.gameOpsVersion = "0.6.3";
com.funtomic.GameOps.apiEventsLocation = "v2/events/";
com.funtomic.GameOps.apiTokensLocation = "v1/game_data/";
com.funtomic.GameOps.apiConfigLocation = "v1/config/";
com.funtomic.GameOps.apiSetUserEmailLocation = "v1/user_email_set/";
com.funtomic.GameOps.status = com.funtomic.GameOpsStatus.UNINITIALIZED;
com.funtomic.GameOps.MAX_SAVED_UNSENT_EVENTS = 1000;
com.funtomic.GameOps.localStorage = { };
com.funtomic.GameOps.gameStateGameOpsData = { };
com.funtomic.GameOps.gameOpsNEListeners = { };
com.funtomic.GameOps.flags = { };
com.funtomic.GameOps.productsInfoCache = { };
com.funtomic.GameOps.appsflyerConversionData = { };
com.funtomic.GameOps.firstSession = false;
com.funtomic.GameOps.isDebugMode = false;
com.funtomic.GameOps.levelsNumbers = new Array();
com.funtomic.GameOps.deferredReportEvents = new Array();
com.funtomic.GameOps.movesDuration = new Array();
com.funtomic.GameOps.timers = { };
com.funtomic.GameOpsLogger.logLevel = 0;
flambe.System.storage = new flambe.Storage();
flambe.System.external = new flambe.External();
haxe.Serializer.USE_CACHE = false;
haxe.Serializer.USE_ENUM_INDEX = false;
haxe.Serializer.BASE64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%:";
haxe.Unserializer.DEFAULT_RESOLVER = Type;
haxe.Unserializer.BASE64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%:";
haxe.Unserializer.CODES = null;
haxe.crypto.Base64.CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
haxe.crypto.Base64.BYTES = haxe.io.Bytes.ofString(haxe.crypto.Base64.CHARS);
haxe.ds.ObjectMap.count = 0;
js.Boot.__toStr = {}.toString;
lime.Assets.cache = new lime.AssetCache();
lime.Assets.libraries = new haxe.ds.StringMap();
lime.Assets.initialized = false;
lime._Assets.AssetType_Impl_.BINARY = "BINARY";
lime._Assets.AssetType_Impl_.FONT = "FONT";
lime._Assets.AssetType_Impl_.IMAGE = "IMAGE";
lime._Assets.AssetType_Impl_.MUSIC = "MUSIC";
lime._Assets.AssetType_Impl_.SOUND = "SOUND";
lime._Assets.AssetType_Impl_.TEMPLATE = "TEMPLATE";
lime._Assets.AssetType_Impl_.TEXT = "TEXT";
lime.app.Preloader.images = new haxe.ds.StringMap();
lime.app.Preloader.loaders = new haxe.ds.StringMap();
lime.audio.openal.AL.NONE = 0;
lime.audio.openal.AL.FALSE = 0;
lime.audio.openal.AL.TRUE = 1;
lime.audio.openal.AL.SOURCE_RELATIVE = 514;
lime.audio.openal.AL.CONE_INNER_ANGLE = 4097;
lime.audio.openal.AL.CONE_OUTER_ANGLE = 4098;
lime.audio.openal.AL.PITCH = 4099;
lime.audio.openal.AL.POSITION = 4100;
lime.audio.openal.AL.DIRECTION = 4101;
lime.audio.openal.AL.VELOCITY = 4102;
lime.audio.openal.AL.LOOPING = 4103;
lime.audio.openal.AL.BUFFER = 4105;
lime.audio.openal.AL.GAIN = 4106;
lime.audio.openal.AL.MIN_GAIN = 4109;
lime.audio.openal.AL.MAX_GAIN = 4110;
lime.audio.openal.AL.ORIENTATION = 4111;
lime.audio.openal.AL.SOURCE_STATE = 4112;
lime.audio.openal.AL.INITIAL = 4113;
lime.audio.openal.AL.PLAYING = 4114;
lime.audio.openal.AL.PAUSED = 4115;
lime.audio.openal.AL.STOPPED = 4116;
lime.audio.openal.AL.BUFFERS_QUEUED = 4117;
lime.audio.openal.AL.BUFFERS_PROCESSED = 4118;
lime.audio.openal.AL.REFERENCE_DISTANCE = 4128;
lime.audio.openal.AL.ROLLOFF_FACTOR = 4129;
lime.audio.openal.AL.CONE_OUTER_GAIN = 4130;
lime.audio.openal.AL.MAX_DISTANCE = 4131;
lime.audio.openal.AL.SEC_OFFSET = 4132;
lime.audio.openal.AL.SAMPLE_OFFSET = 4133;
lime.audio.openal.AL.BYTE_OFFSET = 4134;
lime.audio.openal.AL.SOURCE_TYPE = 4135;
lime.audio.openal.AL.STATIC = 4136;
lime.audio.openal.AL.STREAMING = 4137;
lime.audio.openal.AL.UNDETERMINED = 4144;
lime.audio.openal.AL.FORMAT_MONO8 = 4352;
lime.audio.openal.AL.FORMAT_MONO16 = 4353;
lime.audio.openal.AL.FORMAT_STEREO8 = 4354;
lime.audio.openal.AL.FORMAT_STEREO16 = 4355;
lime.audio.openal.AL.FREQUENCY = 8193;
lime.audio.openal.AL.BITS = 8194;
lime.audio.openal.AL.CHANNELS = 8195;
lime.audio.openal.AL.SIZE = 8196;
lime.audio.openal.AL.NO_ERROR = 0;
lime.audio.openal.AL.INVALID_NAME = 40961;
lime.audio.openal.AL.INVALID_ENUM = 40962;
lime.audio.openal.AL.INVALID_VALUE = 40963;
lime.audio.openal.AL.INVALID_OPERATION = 40964;
lime.audio.openal.AL.OUT_OF_MEMORY = 40965;
lime.audio.openal.AL.VENDOR = 45057;
lime.audio.openal.AL.VERSION = 45058;
lime.audio.openal.AL.RENDERER = 45059;
lime.audio.openal.AL.EXTENSIONS = 45060;
lime.audio.openal.AL.DOPPLER_FACTOR = 49152;
lime.audio.openal.AL.SPEED_OF_SOUND = 49155;
lime.audio.openal.AL.DOPPLER_VELOCITY = 49153;
lime.audio.openal.AL.DISTANCE_MODEL = 53248;
lime.audio.openal.AL.INVERSE_DISTANCE = 53249;
lime.audio.openal.AL.INVERSE_DISTANCE_CLAMPED = 53250;
lime.audio.openal.AL.LINEAR_DISTANCE = 53251;
lime.audio.openal.AL.LINEAR_DISTANCE_CLAMPED = 53252;
lime.audio.openal.AL.EXPONENT_DISTANCE = 53253;
lime.audio.openal.AL.EXPONENT_DISTANCE_CLAMPED = 53254;
lime.audio.openal.ALC.FALSE = 0;
lime.audio.openal.ALC.TRUE = 1;
lime.audio.openal.ALC.FREQUENCY = 4103;
lime.audio.openal.ALC.REFRESH = 4104;
lime.audio.openal.ALC.SYNC = 4105;
lime.audio.openal.ALC.MONO_SOURCES = 4112;
lime.audio.openal.ALC.STEREO_SOURCES = 4113;
lime.audio.openal.ALC.NO_ERROR = 0;
lime.audio.openal.ALC.INVALID_DEVICE = 40961;
lime.audio.openal.ALC.INVALID_CONTEXT = 40962;
lime.audio.openal.ALC.INVALID_ENUM = 40963;
lime.audio.openal.ALC.INVALID_VALUE = 40964;
lime.audio.openal.ALC.OUT_OF_MEMORY = 40965;
lime.audio.openal.ALC.ATTRIBUTES_SIZE = 4098;
lime.audio.openal.ALC.ALL_ATTRIBUTES = 4099;
lime.audio.openal.ALC.DEFAULT_DEVICE_SPECIFIER = 4100;
lime.audio.openal.ALC.DEVICE_SPECIFIER = 4101;
lime.audio.openal.ALC.EXTENSIONS = 4102;
lime.audio.openal.ALC.ENUMERATE_ALL_EXT = 1;
lime.audio.openal.ALC.DEFAULT_ALL_DEVICES_SPECIFIER = 4114;
lime.audio.openal.ALC.ALL_DEVICES_SPECIFIER = 4115;
lime.graphics.Image.__base64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
lime.graphics.opengl.GL.DEPTH_BUFFER_BIT = 256;
lime.graphics.opengl.GL.STENCIL_BUFFER_BIT = 1024;
lime.graphics.opengl.GL.COLOR_BUFFER_BIT = 16384;
lime.graphics.opengl.GL.POINTS = 0;
lime.graphics.opengl.GL.LINES = 1;
lime.graphics.opengl.GL.LINE_LOOP = 2;
lime.graphics.opengl.GL.LINE_STRIP = 3;
lime.graphics.opengl.GL.TRIANGLES = 4;
lime.graphics.opengl.GL.TRIANGLE_STRIP = 5;
lime.graphics.opengl.GL.TRIANGLE_FAN = 6;
lime.graphics.opengl.GL.ZERO = 0;
lime.graphics.opengl.GL.ONE = 1;
lime.graphics.opengl.GL.SRC_COLOR = 768;
lime.graphics.opengl.GL.ONE_MINUS_SRC_COLOR = 769;
lime.graphics.opengl.GL.SRC_ALPHA = 770;
lime.graphics.opengl.GL.ONE_MINUS_SRC_ALPHA = 771;
lime.graphics.opengl.GL.DST_ALPHA = 772;
lime.graphics.opengl.GL.ONE_MINUS_DST_ALPHA = 773;
lime.graphics.opengl.GL.DST_COLOR = 774;
lime.graphics.opengl.GL.ONE_MINUS_DST_COLOR = 775;
lime.graphics.opengl.GL.SRC_ALPHA_SATURATE = 776;
lime.graphics.opengl.GL.FUNC_ADD = 32774;
lime.graphics.opengl.GL.BLEND_EQUATION = 32777;
lime.graphics.opengl.GL.BLEND_EQUATION_RGB = 32777;
lime.graphics.opengl.GL.BLEND_EQUATION_ALPHA = 34877;
lime.graphics.opengl.GL.FUNC_SUBTRACT = 32778;
lime.graphics.opengl.GL.FUNC_REVERSE_SUBTRACT = 32779;
lime.graphics.opengl.GL.BLEND_DST_RGB = 32968;
lime.graphics.opengl.GL.BLEND_SRC_RGB = 32969;
lime.graphics.opengl.GL.BLEND_DST_ALPHA = 32970;
lime.graphics.opengl.GL.BLEND_SRC_ALPHA = 32971;
lime.graphics.opengl.GL.CONSTANT_COLOR = 32769;
lime.graphics.opengl.GL.ONE_MINUS_CONSTANT_COLOR = 32770;
lime.graphics.opengl.GL.CONSTANT_ALPHA = 32771;
lime.graphics.opengl.GL.ONE_MINUS_CONSTANT_ALPHA = 32772;
lime.graphics.opengl.GL.BLEND_COLOR = 32773;
lime.graphics.opengl.GL.ARRAY_BUFFER = 34962;
lime.graphics.opengl.GL.ELEMENT_ARRAY_BUFFER = 34963;
lime.graphics.opengl.GL.ARRAY_BUFFER_BINDING = 34964;
lime.graphics.opengl.GL.ELEMENT_ARRAY_BUFFER_BINDING = 34965;
lime.graphics.opengl.GL.STREAM_DRAW = 35040;
lime.graphics.opengl.GL.STATIC_DRAW = 35044;
lime.graphics.opengl.GL.DYNAMIC_DRAW = 35048;
lime.graphics.opengl.GL.BUFFER_SIZE = 34660;
lime.graphics.opengl.GL.BUFFER_USAGE = 34661;
lime.graphics.opengl.GL.CURRENT_VERTEX_ATTRIB = 34342;
lime.graphics.opengl.GL.FRONT = 1028;
lime.graphics.opengl.GL.BACK = 1029;
lime.graphics.opengl.GL.FRONT_AND_BACK = 1032;
lime.graphics.opengl.GL.CULL_FACE = 2884;
lime.graphics.opengl.GL.BLEND = 3042;
lime.graphics.opengl.GL.DITHER = 3024;
lime.graphics.opengl.GL.STENCIL_TEST = 2960;
lime.graphics.opengl.GL.DEPTH_TEST = 2929;
lime.graphics.opengl.GL.SCISSOR_TEST = 3089;
lime.graphics.opengl.GL.POLYGON_OFFSET_FILL = 32823;
lime.graphics.opengl.GL.SAMPLE_ALPHA_TO_COVERAGE = 32926;
lime.graphics.opengl.GL.SAMPLE_COVERAGE = 32928;
lime.graphics.opengl.GL.NO_ERROR = 0;
lime.graphics.opengl.GL.INVALID_ENUM = 1280;
lime.graphics.opengl.GL.INVALID_VALUE = 1281;
lime.graphics.opengl.GL.INVALID_OPERATION = 1282;
lime.graphics.opengl.GL.OUT_OF_MEMORY = 1285;
lime.graphics.opengl.GL.CW = 2304;
lime.graphics.opengl.GL.CCW = 2305;
lime.graphics.opengl.GL.LINE_WIDTH = 2849;
lime.graphics.opengl.GL.ALIASED_POINT_SIZE_RANGE = 33901;
lime.graphics.opengl.GL.ALIASED_LINE_WIDTH_RANGE = 33902;
lime.graphics.opengl.GL.CULL_FACE_MODE = 2885;
lime.graphics.opengl.GL.FRONT_FACE = 2886;
lime.graphics.opengl.GL.DEPTH_RANGE = 2928;
lime.graphics.opengl.GL.DEPTH_WRITEMASK = 2930;
lime.graphics.opengl.GL.DEPTH_CLEAR_VALUE = 2931;
lime.graphics.opengl.GL.DEPTH_FUNC = 2932;
lime.graphics.opengl.GL.STENCIL_CLEAR_VALUE = 2961;
lime.graphics.opengl.GL.STENCIL_FUNC = 2962;
lime.graphics.opengl.GL.STENCIL_FAIL = 2964;
lime.graphics.opengl.GL.STENCIL_PASS_DEPTH_FAIL = 2965;
lime.graphics.opengl.GL.STENCIL_PASS_DEPTH_PASS = 2966;
lime.graphics.opengl.GL.STENCIL_REF = 2967;
lime.graphics.opengl.GL.STENCIL_VALUE_MASK = 2963;
lime.graphics.opengl.GL.STENCIL_WRITEMASK = 2968;
lime.graphics.opengl.GL.STENCIL_BACK_FUNC = 34816;
lime.graphics.opengl.GL.STENCIL_BACK_FAIL = 34817;
lime.graphics.opengl.GL.STENCIL_BACK_PASS_DEPTH_FAIL = 34818;
lime.graphics.opengl.GL.STENCIL_BACK_PASS_DEPTH_PASS = 34819;
lime.graphics.opengl.GL.STENCIL_BACK_REF = 36003;
lime.graphics.opengl.GL.STENCIL_BACK_VALUE_MASK = 36004;
lime.graphics.opengl.GL.STENCIL_BACK_WRITEMASK = 36005;
lime.graphics.opengl.GL.VIEWPORT = 2978;
lime.graphics.opengl.GL.SCISSOR_BOX = 3088;
lime.graphics.opengl.GL.COLOR_CLEAR_VALUE = 3106;
lime.graphics.opengl.GL.COLOR_WRITEMASK = 3107;
lime.graphics.opengl.GL.UNPACK_ALIGNMENT = 3317;
lime.graphics.opengl.GL.PACK_ALIGNMENT = 3333;
lime.graphics.opengl.GL.MAX_TEXTURE_SIZE = 3379;
lime.graphics.opengl.GL.MAX_VIEWPORT_DIMS = 3386;
lime.graphics.opengl.GL.SUBPIXEL_BITS = 3408;
lime.graphics.opengl.GL.RED_BITS = 3410;
lime.graphics.opengl.GL.GREEN_BITS = 3411;
lime.graphics.opengl.GL.BLUE_BITS = 3412;
lime.graphics.opengl.GL.ALPHA_BITS = 3413;
lime.graphics.opengl.GL.DEPTH_BITS = 3414;
lime.graphics.opengl.GL.STENCIL_BITS = 3415;
lime.graphics.opengl.GL.POLYGON_OFFSET_UNITS = 10752;
lime.graphics.opengl.GL.POLYGON_OFFSET_FACTOR = 32824;
lime.graphics.opengl.GL.TEXTURE_BINDING_2D = 32873;
lime.graphics.opengl.GL.SAMPLE_BUFFERS = 32936;
lime.graphics.opengl.GL.SAMPLES = 32937;
lime.graphics.opengl.GL.SAMPLE_COVERAGE_VALUE = 32938;
lime.graphics.opengl.GL.SAMPLE_COVERAGE_INVERT = 32939;
lime.graphics.opengl.GL.COMPRESSED_TEXTURE_FORMATS = 34467;
lime.graphics.opengl.GL.DONT_CARE = 4352;
lime.graphics.opengl.GL.FASTEST = 4353;
lime.graphics.opengl.GL.NICEST = 4354;
lime.graphics.opengl.GL.GENERATE_MIPMAP_HINT = 33170;
lime.graphics.opengl.GL.BYTE = 5120;
lime.graphics.opengl.GL.UNSIGNED_BYTE = 5121;
lime.graphics.opengl.GL.SHORT = 5122;
lime.graphics.opengl.GL.UNSIGNED_SHORT = 5123;
lime.graphics.opengl.GL.INT = 5124;
lime.graphics.opengl.GL.UNSIGNED_INT = 5125;
lime.graphics.opengl.GL.FLOAT = 5126;
lime.graphics.opengl.GL.DEPTH_COMPONENT = 6402;
lime.graphics.opengl.GL.ALPHA = 6406;
lime.graphics.opengl.GL.RGB = 6407;
lime.graphics.opengl.GL.RGBA = 6408;
lime.graphics.opengl.GL.LUMINANCE = 6409;
lime.graphics.opengl.GL.LUMINANCE_ALPHA = 6410;
lime.graphics.opengl.GL.UNSIGNED_SHORT_4_4_4_4 = 32819;
lime.graphics.opengl.GL.UNSIGNED_SHORT_5_5_5_1 = 32820;
lime.graphics.opengl.GL.UNSIGNED_SHORT_5_6_5 = 33635;
lime.graphics.opengl.GL.FRAGMENT_SHADER = 35632;
lime.graphics.opengl.GL.VERTEX_SHADER = 35633;
lime.graphics.opengl.GL.MAX_VERTEX_ATTRIBS = 34921;
lime.graphics.opengl.GL.MAX_VERTEX_UNIFORM_VECTORS = 36347;
lime.graphics.opengl.GL.MAX_VARYING_VECTORS = 36348;
lime.graphics.opengl.GL.MAX_COMBINED_TEXTURE_IMAGE_UNITS = 35661;
lime.graphics.opengl.GL.MAX_VERTEX_TEXTURE_IMAGE_UNITS = 35660;
lime.graphics.opengl.GL.MAX_TEXTURE_IMAGE_UNITS = 34930;
lime.graphics.opengl.GL.MAX_FRAGMENT_UNIFORM_VECTORS = 36349;
lime.graphics.opengl.GL.SHADER_TYPE = 35663;
lime.graphics.opengl.GL.DELETE_STATUS = 35712;
lime.graphics.opengl.GL.LINK_STATUS = 35714;
lime.graphics.opengl.GL.VALIDATE_STATUS = 35715;
lime.graphics.opengl.GL.ATTACHED_SHADERS = 35717;
lime.graphics.opengl.GL.ACTIVE_UNIFORMS = 35718;
lime.graphics.opengl.GL.ACTIVE_ATTRIBUTES = 35721;
lime.graphics.opengl.GL.SHADING_LANGUAGE_VERSION = 35724;
lime.graphics.opengl.GL.CURRENT_PROGRAM = 35725;
lime.graphics.opengl.GL.NEVER = 512;
lime.graphics.opengl.GL.LESS = 513;
lime.graphics.opengl.GL.EQUAL = 514;
lime.graphics.opengl.GL.LEQUAL = 515;
lime.graphics.opengl.GL.GREATER = 516;
lime.graphics.opengl.GL.NOTEQUAL = 517;
lime.graphics.opengl.GL.GEQUAL = 518;
lime.graphics.opengl.GL.ALWAYS = 519;
lime.graphics.opengl.GL.KEEP = 7680;
lime.graphics.opengl.GL.REPLACE = 7681;
lime.graphics.opengl.GL.INCR = 7682;
lime.graphics.opengl.GL.DECR = 7683;
lime.graphics.opengl.GL.INVERT = 5386;
lime.graphics.opengl.GL.INCR_WRAP = 34055;
lime.graphics.opengl.GL.DECR_WRAP = 34056;
lime.graphics.opengl.GL.VENDOR = 7936;
lime.graphics.opengl.GL.RENDERER = 7937;
lime.graphics.opengl.GL.VERSION = 7938;
lime.graphics.opengl.GL.NEAREST = 9728;
lime.graphics.opengl.GL.LINEAR = 9729;
lime.graphics.opengl.GL.NEAREST_MIPMAP_NEAREST = 9984;
lime.graphics.opengl.GL.LINEAR_MIPMAP_NEAREST = 9985;
lime.graphics.opengl.GL.NEAREST_MIPMAP_LINEAR = 9986;
lime.graphics.opengl.GL.LINEAR_MIPMAP_LINEAR = 9987;
lime.graphics.opengl.GL.TEXTURE_MAG_FILTER = 10240;
lime.graphics.opengl.GL.TEXTURE_MIN_FILTER = 10241;
lime.graphics.opengl.GL.TEXTURE_WRAP_S = 10242;
lime.graphics.opengl.GL.TEXTURE_WRAP_T = 10243;
lime.graphics.opengl.GL.TEXTURE_2D = 3553;
lime.graphics.opengl.GL.TEXTURE = 5890;
lime.graphics.opengl.GL.TEXTURE_CUBE_MAP = 34067;
lime.graphics.opengl.GL.TEXTURE_BINDING_CUBE_MAP = 34068;
lime.graphics.opengl.GL.TEXTURE_CUBE_MAP_POSITIVE_X = 34069;
lime.graphics.opengl.GL.TEXTURE_CUBE_MAP_NEGATIVE_X = 34070;
lime.graphics.opengl.GL.TEXTURE_CUBE_MAP_POSITIVE_Y = 34071;
lime.graphics.opengl.GL.TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072;
lime.graphics.opengl.GL.TEXTURE_CUBE_MAP_POSITIVE_Z = 34073;
lime.graphics.opengl.GL.TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074;
lime.graphics.opengl.GL.MAX_CUBE_MAP_TEXTURE_SIZE = 34076;
lime.graphics.opengl.GL.TEXTURE0 = 33984;
lime.graphics.opengl.GL.TEXTURE1 = 33985;
lime.graphics.opengl.GL.TEXTURE2 = 33986;
lime.graphics.opengl.GL.TEXTURE3 = 33987;
lime.graphics.opengl.GL.TEXTURE4 = 33988;
lime.graphics.opengl.GL.TEXTURE5 = 33989;
lime.graphics.opengl.GL.TEXTURE6 = 33990;
lime.graphics.opengl.GL.TEXTURE7 = 33991;
lime.graphics.opengl.GL.TEXTURE8 = 33992;
lime.graphics.opengl.GL.TEXTURE9 = 33993;
lime.graphics.opengl.GL.TEXTURE10 = 33994;
lime.graphics.opengl.GL.TEXTURE11 = 33995;
lime.graphics.opengl.GL.TEXTURE12 = 33996;
lime.graphics.opengl.GL.TEXTURE13 = 33997;
lime.graphics.opengl.GL.TEXTURE14 = 33998;
lime.graphics.opengl.GL.TEXTURE15 = 33999;
lime.graphics.opengl.GL.TEXTURE16 = 34000;
lime.graphics.opengl.GL.TEXTURE17 = 34001;
lime.graphics.opengl.GL.TEXTURE18 = 34002;
lime.graphics.opengl.GL.TEXTURE19 = 34003;
lime.graphics.opengl.GL.TEXTURE20 = 34004;
lime.graphics.opengl.GL.TEXTURE21 = 34005;
lime.graphics.opengl.GL.TEXTURE22 = 34006;
lime.graphics.opengl.GL.TEXTURE23 = 34007;
lime.graphics.opengl.GL.TEXTURE24 = 34008;
lime.graphics.opengl.GL.TEXTURE25 = 34009;
lime.graphics.opengl.GL.TEXTURE26 = 34010;
lime.graphics.opengl.GL.TEXTURE27 = 34011;
lime.graphics.opengl.GL.TEXTURE28 = 34012;
lime.graphics.opengl.GL.TEXTURE29 = 34013;
lime.graphics.opengl.GL.TEXTURE30 = 34014;
lime.graphics.opengl.GL.TEXTURE31 = 34015;
lime.graphics.opengl.GL.ACTIVE_TEXTURE = 34016;
lime.graphics.opengl.GL.REPEAT = 10497;
lime.graphics.opengl.GL.CLAMP_TO_EDGE = 33071;
lime.graphics.opengl.GL.MIRRORED_REPEAT = 33648;
lime.graphics.opengl.GL.FLOAT_VEC2 = 35664;
lime.graphics.opengl.GL.FLOAT_VEC3 = 35665;
lime.graphics.opengl.GL.FLOAT_VEC4 = 35666;
lime.graphics.opengl.GL.INT_VEC2 = 35667;
lime.graphics.opengl.GL.INT_VEC3 = 35668;
lime.graphics.opengl.GL.INT_VEC4 = 35669;
lime.graphics.opengl.GL.BOOL = 35670;
lime.graphics.opengl.GL.BOOL_VEC2 = 35671;
lime.graphics.opengl.GL.BOOL_VEC3 = 35672;
lime.graphics.opengl.GL.BOOL_VEC4 = 35673;
lime.graphics.opengl.GL.FLOAT_MAT2 = 35674;
lime.graphics.opengl.GL.FLOAT_MAT3 = 35675;
lime.graphics.opengl.GL.FLOAT_MAT4 = 35676;
lime.graphics.opengl.GL.SAMPLER_2D = 35678;
lime.graphics.opengl.GL.SAMPLER_CUBE = 35680;
lime.graphics.opengl.GL.VERTEX_ATTRIB_ARRAY_ENABLED = 34338;
lime.graphics.opengl.GL.VERTEX_ATTRIB_ARRAY_SIZE = 34339;
lime.graphics.opengl.GL.VERTEX_ATTRIB_ARRAY_STRIDE = 34340;
lime.graphics.opengl.GL.VERTEX_ATTRIB_ARRAY_TYPE = 34341;
lime.graphics.opengl.GL.VERTEX_ATTRIB_ARRAY_NORMALIZED = 34922;
lime.graphics.opengl.GL.VERTEX_ATTRIB_ARRAY_POINTER = 34373;
lime.graphics.opengl.GL.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 34975;
lime.graphics.opengl.GL.VERTEX_PROGRAM_POINT_SIZE = 34370;
lime.graphics.opengl.GL.POINT_SPRITE = 34913;
lime.graphics.opengl.GL.COMPILE_STATUS = 35713;
lime.graphics.opengl.GL.LOW_FLOAT = 36336;
lime.graphics.opengl.GL.MEDIUM_FLOAT = 36337;
lime.graphics.opengl.GL.HIGH_FLOAT = 36338;
lime.graphics.opengl.GL.LOW_INT = 36339;
lime.graphics.opengl.GL.MEDIUM_INT = 36340;
lime.graphics.opengl.GL.HIGH_INT = 36341;
lime.graphics.opengl.GL.FRAMEBUFFER = 36160;
lime.graphics.opengl.GL.RENDERBUFFER = 36161;
lime.graphics.opengl.GL.RGBA4 = 32854;
lime.graphics.opengl.GL.RGB5_A1 = 32855;
lime.graphics.opengl.GL.RGB565 = 36194;
lime.graphics.opengl.GL.DEPTH_COMPONENT16 = 33189;
lime.graphics.opengl.GL.STENCIL_INDEX = 6401;
lime.graphics.opengl.GL.STENCIL_INDEX8 = 36168;
lime.graphics.opengl.GL.DEPTH_STENCIL = 34041;
lime.graphics.opengl.GL.RENDERBUFFER_WIDTH = 36162;
lime.graphics.opengl.GL.RENDERBUFFER_HEIGHT = 36163;
lime.graphics.opengl.GL.RENDERBUFFER_INTERNAL_FORMAT = 36164;
lime.graphics.opengl.GL.RENDERBUFFER_RED_SIZE = 36176;
lime.graphics.opengl.GL.RENDERBUFFER_GREEN_SIZE = 36177;
lime.graphics.opengl.GL.RENDERBUFFER_BLUE_SIZE = 36178;
lime.graphics.opengl.GL.RENDERBUFFER_ALPHA_SIZE = 36179;
lime.graphics.opengl.GL.RENDERBUFFER_DEPTH_SIZE = 36180;
lime.graphics.opengl.GL.RENDERBUFFER_STENCIL_SIZE = 36181;
lime.graphics.opengl.GL.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 36048;
lime.graphics.opengl.GL.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 36049;
lime.graphics.opengl.GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 36050;
lime.graphics.opengl.GL.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 36051;
lime.graphics.opengl.GL.COLOR_ATTACHMENT0 = 36064;
lime.graphics.opengl.GL.DEPTH_ATTACHMENT = 36096;
lime.graphics.opengl.GL.STENCIL_ATTACHMENT = 36128;
lime.graphics.opengl.GL.DEPTH_STENCIL_ATTACHMENT = 33306;
lime.graphics.opengl.GL.NONE = 0;
lime.graphics.opengl.GL.FRAMEBUFFER_COMPLETE = 36053;
lime.graphics.opengl.GL.FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 36054;
lime.graphics.opengl.GL.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 36055;
lime.graphics.opengl.GL.FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 36057;
lime.graphics.opengl.GL.FRAMEBUFFER_UNSUPPORTED = 36061;
lime.graphics.opengl.GL.FRAMEBUFFER_BINDING = 36006;
lime.graphics.opengl.GL.RENDERBUFFER_BINDING = 36007;
lime.graphics.opengl.GL.MAX_RENDERBUFFER_SIZE = 34024;
lime.graphics.opengl.GL.INVALID_FRAMEBUFFER_OPERATION = 1286;
lime.graphics.opengl.GL.UNPACK_FLIP_Y_WEBGL = 37440;
lime.graphics.opengl.GL.UNPACK_PREMULTIPLY_ALPHA_WEBGL = 37441;
lime.graphics.opengl.GL.CONTEXT_LOST_WEBGL = 37442;
lime.graphics.opengl.GL.UNPACK_COLORSPACE_CONVERSION_WEBGL = 37443;
lime.graphics.opengl.GL.BROWSER_DEFAULT_WEBGL = 37444;
lime.math._ColorMatrix.ColorMatrix_Impl_.__identity = [1.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0];
lime.math.Matrix3.__identity = new lime.math.Matrix3();
lime.math._Matrix4.Matrix4_Impl_.__identity = [1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0];
lime.net._URLRequestMethod.URLRequestMethod_Impl_.DELETE = "DELETE";
lime.net._URLRequestMethod.URLRequestMethod_Impl_.GET = "GET";
lime.net._URLRequestMethod.URLRequestMethod_Impl_.HEAD = "HEAD";
lime.net._URLRequestMethod.URLRequestMethod_Impl_.OPTIONS = "OPTIONS";
lime.net._URLRequestMethod.URLRequestMethod_Impl_.POST = "POST";
lime.net._URLRequestMethod.URLRequestMethod_Impl_.PUT = "PUT";
lime.ui._KeyCode.KeyCode_Impl_.UNKNOWN = 0;
lime.ui._KeyCode.KeyCode_Impl_.BACKSPACE = 8;
lime.ui._KeyCode.KeyCode_Impl_.TAB = 9;
lime.ui._KeyCode.KeyCode_Impl_.RETURN = 13;
lime.ui._KeyCode.KeyCode_Impl_.ESCAPE = 27;
lime.ui._KeyCode.KeyCode_Impl_.SPACE = 32;
lime.ui._KeyCode.KeyCode_Impl_.EXCLAMATION = 33;
lime.ui._KeyCode.KeyCode_Impl_.QUOTE = 34;
lime.ui._KeyCode.KeyCode_Impl_.HASH = 35;
lime.ui._KeyCode.KeyCode_Impl_.DOLLAR = 36;
lime.ui._KeyCode.KeyCode_Impl_.PERCENT = 37;
lime.ui._KeyCode.KeyCode_Impl_.AMPERSAND = 38;
lime.ui._KeyCode.KeyCode_Impl_.SINGLE_QUOTE = 39;
lime.ui._KeyCode.KeyCode_Impl_.LEFT_PARENTHESIS = 40;
lime.ui._KeyCode.KeyCode_Impl_.RIGHT_PARENTHESIS = 41;
lime.ui._KeyCode.KeyCode_Impl_.ASTERISK = 42;
lime.ui._KeyCode.KeyCode_Impl_.PLUS = 43;
lime.ui._KeyCode.KeyCode_Impl_.COMMA = 44;
lime.ui._KeyCode.KeyCode_Impl_.MINUS = 45;
lime.ui._KeyCode.KeyCode_Impl_.PERIOD = 46;
lime.ui._KeyCode.KeyCode_Impl_.SLASH = 47;
lime.ui._KeyCode.KeyCode_Impl_.NUMBER_0 = 48;
lime.ui._KeyCode.KeyCode_Impl_.NUMBER_1 = 49;
lime.ui._KeyCode.KeyCode_Impl_.NUMBER_2 = 50;
lime.ui._KeyCode.KeyCode_Impl_.NUMBER_3 = 51;
lime.ui._KeyCode.KeyCode_Impl_.NUMBER_4 = 52;
lime.ui._KeyCode.KeyCode_Impl_.NUMBER_5 = 53;
lime.ui._KeyCode.KeyCode_Impl_.NUMBER_6 = 54;
lime.ui._KeyCode.KeyCode_Impl_.NUMBER_7 = 55;
lime.ui._KeyCode.KeyCode_Impl_.NUMBER_8 = 56;
lime.ui._KeyCode.KeyCode_Impl_.NUMBER_9 = 57;
lime.ui._KeyCode.KeyCode_Impl_.COLON = 58;
lime.ui._KeyCode.KeyCode_Impl_.SEMICOLON = 59;
lime.ui._KeyCode.KeyCode_Impl_.LESS_THAN = 60;
lime.ui._KeyCode.KeyCode_Impl_.EQUALS = 61;
lime.ui._KeyCode.KeyCode_Impl_.GREATER_THAN = 62;
lime.ui._KeyCode.KeyCode_Impl_.QUESTION = 63;
lime.ui._KeyCode.KeyCode_Impl_.AT = 64;
lime.ui._KeyCode.KeyCode_Impl_.LEFT_BRACKET = 91;
lime.ui._KeyCode.KeyCode_Impl_.BACKSLASH = 92;
lime.ui._KeyCode.KeyCode_Impl_.RIGHT_BRACKET = 93;
lime.ui._KeyCode.KeyCode_Impl_.CARET = 94;
lime.ui._KeyCode.KeyCode_Impl_.UNDERSCORE = 95;
lime.ui._KeyCode.KeyCode_Impl_.GRAVE = 96;
lime.ui._KeyCode.KeyCode_Impl_.A = 97;
lime.ui._KeyCode.KeyCode_Impl_.B = 98;
lime.ui._KeyCode.KeyCode_Impl_.C = 99;
lime.ui._KeyCode.KeyCode_Impl_.D = 100;
lime.ui._KeyCode.KeyCode_Impl_.E = 101;
lime.ui._KeyCode.KeyCode_Impl_.F = 102;
lime.ui._KeyCode.KeyCode_Impl_.G = 103;
lime.ui._KeyCode.KeyCode_Impl_.H = 104;
lime.ui._KeyCode.KeyCode_Impl_.I = 105;
lime.ui._KeyCode.KeyCode_Impl_.J = 106;
lime.ui._KeyCode.KeyCode_Impl_.K = 107;
lime.ui._KeyCode.KeyCode_Impl_.L = 108;
lime.ui._KeyCode.KeyCode_Impl_.M = 109;
lime.ui._KeyCode.KeyCode_Impl_.N = 110;
lime.ui._KeyCode.KeyCode_Impl_.O = 111;
lime.ui._KeyCode.KeyCode_Impl_.P = 112;
lime.ui._KeyCode.KeyCode_Impl_.Q = 113;
lime.ui._KeyCode.KeyCode_Impl_.R = 114;
lime.ui._KeyCode.KeyCode_Impl_.S = 115;
lime.ui._KeyCode.KeyCode_Impl_.T = 116;
lime.ui._KeyCode.KeyCode_Impl_.U = 117;
lime.ui._KeyCode.KeyCode_Impl_.V = 118;
lime.ui._KeyCode.KeyCode_Impl_.W = 119;
lime.ui._KeyCode.KeyCode_Impl_.X = 120;
lime.ui._KeyCode.KeyCode_Impl_.Y = 121;
lime.ui._KeyCode.KeyCode_Impl_.Z = 122;
lime.ui._KeyCode.KeyCode_Impl_.DELETE = 127;
lime.ui._KeyCode.KeyCode_Impl_.CAPS_LOCK = 1073741881;
lime.ui._KeyCode.KeyCode_Impl_.F1 = 1073741882;
lime.ui._KeyCode.KeyCode_Impl_.F2 = 1073741883;
lime.ui._KeyCode.KeyCode_Impl_.F3 = 1073741884;
lime.ui._KeyCode.KeyCode_Impl_.F4 = 1073741885;
lime.ui._KeyCode.KeyCode_Impl_.F5 = 1073741886;
lime.ui._KeyCode.KeyCode_Impl_.F6 = 1073741887;
lime.ui._KeyCode.KeyCode_Impl_.F7 = 1073741888;
lime.ui._KeyCode.KeyCode_Impl_.F8 = 1073741889;
lime.ui._KeyCode.KeyCode_Impl_.F9 = 1073741890;
lime.ui._KeyCode.KeyCode_Impl_.F10 = 1073741891;
lime.ui._KeyCode.KeyCode_Impl_.F11 = 1073741892;
lime.ui._KeyCode.KeyCode_Impl_.F12 = 1073741893;
lime.ui._KeyCode.KeyCode_Impl_.PRINT_SCREEN = 1073741894;
lime.ui._KeyCode.KeyCode_Impl_.SCROLL_LOCK = 1073741895;
lime.ui._KeyCode.KeyCode_Impl_.PAUSE = 1073741896;
lime.ui._KeyCode.KeyCode_Impl_.INSERT = 1073741897;
lime.ui._KeyCode.KeyCode_Impl_.HOME = 1073741898;
lime.ui._KeyCode.KeyCode_Impl_.PAGE_UP = 1073741899;
lime.ui._KeyCode.KeyCode_Impl_.END = 1073741901;
lime.ui._KeyCode.KeyCode_Impl_.PAGE_DOWN = 1073741902;
lime.ui._KeyCode.KeyCode_Impl_.RIGHT = 1073741903;
lime.ui._KeyCode.KeyCode_Impl_.LEFT = 1073741904;
lime.ui._KeyCode.KeyCode_Impl_.DOWN = 1073741905;
lime.ui._KeyCode.KeyCode_Impl_.UP = 1073741906;
lime.ui._KeyCode.KeyCode_Impl_.NUM_LOCK = 1073741907;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_DIVIDE = 1073741908;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_MULTIPLY = 1073741909;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_MINUS = 1073741910;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_PLUS = 1073741911;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_ENTER = 1073741912;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_1 = 1073741913;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_2 = 1073741914;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_3 = 1073741915;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_4 = 1073741916;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_5 = 1073741917;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_6 = 1073741918;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_7 = 1073741919;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_8 = 1073741920;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_9 = 1073741921;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_0 = 1073741922;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_PERIOD = 1073741923;
lime.ui._KeyCode.KeyCode_Impl_.APPLICATION = 1073741925;
lime.ui._KeyCode.KeyCode_Impl_.POWER = 1073741926;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_EQUALS = 1073741927;
lime.ui._KeyCode.KeyCode_Impl_.F13 = 1073741928;
lime.ui._KeyCode.KeyCode_Impl_.F14 = 1073741929;
lime.ui._KeyCode.KeyCode_Impl_.F15 = 1073741930;
lime.ui._KeyCode.KeyCode_Impl_.F16 = 1073741931;
lime.ui._KeyCode.KeyCode_Impl_.F17 = 1073741932;
lime.ui._KeyCode.KeyCode_Impl_.F18 = 1073741933;
lime.ui._KeyCode.KeyCode_Impl_.F19 = 1073741934;
lime.ui._KeyCode.KeyCode_Impl_.F20 = 1073741935;
lime.ui._KeyCode.KeyCode_Impl_.F21 = 1073741936;
lime.ui._KeyCode.KeyCode_Impl_.F22 = 1073741937;
lime.ui._KeyCode.KeyCode_Impl_.F23 = 1073741938;
lime.ui._KeyCode.KeyCode_Impl_.F24 = 1073741939;
lime.ui._KeyCode.KeyCode_Impl_.EXECUTE = 1073741940;
lime.ui._KeyCode.KeyCode_Impl_.HELP = 1073741941;
lime.ui._KeyCode.KeyCode_Impl_.MENU = 1073741942;
lime.ui._KeyCode.KeyCode_Impl_.SELECT = 1073741943;
lime.ui._KeyCode.KeyCode_Impl_.STOP = 1073741944;
lime.ui._KeyCode.KeyCode_Impl_.AGAIN = 1073741945;
lime.ui._KeyCode.KeyCode_Impl_.UNDO = 1073741946;
lime.ui._KeyCode.KeyCode_Impl_.CUT = 1073741947;
lime.ui._KeyCode.KeyCode_Impl_.COPY = 1073741948;
lime.ui._KeyCode.KeyCode_Impl_.PASTE = 1073741949;
lime.ui._KeyCode.KeyCode_Impl_.FIND = 1073741950;
lime.ui._KeyCode.KeyCode_Impl_.MUTE = 1073741951;
lime.ui._KeyCode.KeyCode_Impl_.VOLUME_UP = 1073741952;
lime.ui._KeyCode.KeyCode_Impl_.VOLUME_DOWN = 1073741953;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_COMMA = 1073741957;
lime.ui._KeyCode.KeyCode_Impl_.ALT_ERASE = 1073741977;
lime.ui._KeyCode.KeyCode_Impl_.SYSTEM_REQUEST = 1073741978;
lime.ui._KeyCode.KeyCode_Impl_.CANCEL = 1073741979;
lime.ui._KeyCode.KeyCode_Impl_.CLEAR = 1073741980;
lime.ui._KeyCode.KeyCode_Impl_.PRIOR = 1073741981;
lime.ui._KeyCode.KeyCode_Impl_.RETURN2 = 1073741982;
lime.ui._KeyCode.KeyCode_Impl_.SEPARATOR = 1073741983;
lime.ui._KeyCode.KeyCode_Impl_.OUT = 1073741984;
lime.ui._KeyCode.KeyCode_Impl_.OPER = 1073741985;
lime.ui._KeyCode.KeyCode_Impl_.CLEAR_AGAIN = 1073741986;
lime.ui._KeyCode.KeyCode_Impl_.CRSEL = 1073741987;
lime.ui._KeyCode.KeyCode_Impl_.EXSEL = 1073741988;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_00 = 1073742000;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_000 = 1073742001;
lime.ui._KeyCode.KeyCode_Impl_.THOUSAND_SEPARATOR = 1073742002;
lime.ui._KeyCode.KeyCode_Impl_.DECIMAL_SEPARATOR = 1073742003;
lime.ui._KeyCode.KeyCode_Impl_.CURRENCY_UNIT = 1073742004;
lime.ui._KeyCode.KeyCode_Impl_.CURRENCY_SUBUNIT = 1073742005;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_LEFT_PARENTHESIS = 1073742006;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_RIGHT_PARENTHESIS = 1073742007;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_LEFT_BRACE = 1073742008;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_RIGHT_BRACE = 1073742009;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_TAB = 1073742010;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_BACKSPACE = 1073742011;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_A = 1073742012;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_B = 1073742013;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_C = 1073742014;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_D = 1073742015;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_E = 1073742016;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_F = 1073742017;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_XOR = 1073742018;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_POWER = 1073742019;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_PERCENT = 1073742020;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_LESS_THAN = 1073742021;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_GREATER_THAN = 1073742022;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_AMPERSAND = 1073742023;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_DOUBLE_AMPERSAND = 1073742024;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_VERTICAL_BAR = 1073742025;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_DOUBLE_VERTICAL_BAR = 1073742026;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_COLON = 1073742027;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_HASH = 1073742028;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_SPACE = 1073742029;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_AT = 1073742030;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_EXCLAMATION = 1073742031;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_MEM_STORE = 1073742032;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_MEM_RECALL = 1073742033;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_MEM_CLEAR = 1073742034;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_MEM_ADD = 1073742035;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_MEM_SUBTRACT = 1073742036;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_MEM_MULTIPLY = 1073742037;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_MEM_DIVIDE = 1073742038;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_PLUS_MINUS = 1073742039;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_CLEAR = 1073742040;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_CLEAR_ENTRY = 1073742041;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_BINARY = 1073742042;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_OCTAL = 1073742043;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_DECIMAL = 1073742044;
lime.ui._KeyCode.KeyCode_Impl_.NUMPAD_HEXADECIMAL = 1073742045;
lime.ui._KeyCode.KeyCode_Impl_.LEFT_CTRL = 1073742048;
lime.ui._KeyCode.KeyCode_Impl_.LEFT_SHIFT = 1073742049;
lime.ui._KeyCode.KeyCode_Impl_.LEFT_ALT = 1073742050;
lime.ui._KeyCode.KeyCode_Impl_.LEFT_META = 1073742051;
lime.ui._KeyCode.KeyCode_Impl_.RIGHT_CTRL = 1073742052;
lime.ui._KeyCode.KeyCode_Impl_.RIGHT_SHIFT = 1073742053;
lime.ui._KeyCode.KeyCode_Impl_.RIGHT_ALT = 1073742054;
lime.ui._KeyCode.KeyCode_Impl_.RIGHT_META = 1073742055;
lime.ui._KeyCode.KeyCode_Impl_.MODE = 1073742081;
lime.ui._KeyCode.KeyCode_Impl_.AUDIO_NEXT = 1073742082;
lime.ui._KeyCode.KeyCode_Impl_.AUDIO_PREVIOUS = 1073742083;
lime.ui._KeyCode.KeyCode_Impl_.AUDIO_STOP = 1073742084;
lime.ui._KeyCode.KeyCode_Impl_.AUDIO_PLAY = 1073742085;
lime.ui._KeyCode.KeyCode_Impl_.AUDIO_MUTE = 1073742086;
lime.ui._KeyCode.KeyCode_Impl_.MEDIA_SELECT = 1073742087;
lime.ui._KeyCode.KeyCode_Impl_.WWW = 1073742088;
lime.ui._KeyCode.KeyCode_Impl_.MAIL = 1073742089;
lime.ui._KeyCode.KeyCode_Impl_.CALCULATOR = 1073742090;
lime.ui._KeyCode.KeyCode_Impl_.COMPUTER = 1073742091;
lime.ui._KeyCode.KeyCode_Impl_.APP_CONTROL_SEARCH = 1073742092;
lime.ui._KeyCode.KeyCode_Impl_.APP_CONTROL_HOME = 1073742093;
lime.ui._KeyCode.KeyCode_Impl_.APP_CONTROL_BACK = 1073742094;
lime.ui._KeyCode.KeyCode_Impl_.APP_CONTROL_FORWARD = 1073742095;
lime.ui._KeyCode.KeyCode_Impl_.APP_CONTROL_STOP = 1073742096;
lime.ui._KeyCode.KeyCode_Impl_.APP_CONTROL_REFRESH = 1073742097;
lime.ui._KeyCode.KeyCode_Impl_.APP_CONTROL_BOOKMARKS = 1073742098;
lime.ui._KeyCode.KeyCode_Impl_.BRIGHTNESS_DOWN = 1073742099;
lime.ui._KeyCode.KeyCode_Impl_.BRIGHTNESS_UP = 1073742100;
lime.ui._KeyCode.KeyCode_Impl_.DISPLAY_SWITCH = 1073742101;
lime.ui._KeyCode.KeyCode_Impl_.BACKLIGHT_TOGGLE = 1073742102;
lime.ui._KeyCode.KeyCode_Impl_.BACKLIGHT_DOWN = 1073742103;
lime.ui._KeyCode.KeyCode_Impl_.BACKLIGHT_UP = 1073742104;
lime.ui._KeyCode.KeyCode_Impl_.EJECT = 1073742105;
lime.ui._KeyCode.KeyCode_Impl_.SLEEP = 1073742106;
lime.ui._KeyModifier.KeyModifier_Impl_.NONE = 0;
lime.ui._KeyModifier.KeyModifier_Impl_.LEFT_SHIFT = 1;
lime.ui._KeyModifier.KeyModifier_Impl_.RIGHT_SHIFT = 2;
lime.ui._KeyModifier.KeyModifier_Impl_.LEFT_CTRL = 64;
lime.ui._KeyModifier.KeyModifier_Impl_.RIGHT_CTRL = 128;
lime.ui._KeyModifier.KeyModifier_Impl_.LEFT_ALT = 256;
lime.ui._KeyModifier.KeyModifier_Impl_.RIGHT_ALT = 512;
lime.ui._KeyModifier.KeyModifier_Impl_.LEFT_META = 1024;
lime.ui._KeyModifier.KeyModifier_Impl_.RIGHT_META = 2048;
lime.ui._KeyModifier.KeyModifier_Impl_.NUM_LOCK = 4096;
lime.ui._KeyModifier.KeyModifier_Impl_.CAPS_LOCK = 8192;
lime.ui._KeyModifier.KeyModifier_Impl_.MODE = 16384;
lime.ui._KeyModifier.KeyModifier_Impl_.CTRL = 192;
lime.ui._KeyModifier.KeyModifier_Impl_.SHIFT = 3;
lime.ui._KeyModifier.KeyModifier_Impl_.ALT = 768;
lime.ui._KeyModifier.KeyModifier_Impl_.META = 3072;
motion.actuators.SimpleActuator.actuators = new Array();
motion.actuators.SimpleActuator.actuatorsLength = 0;
motion.actuators.SimpleActuator.addedEvent = false;
motion.Actuate.defaultActuator = motion.actuators.SimpleActuator;
motion.Actuate.defaultEase = motion.easing.Expo.get_easeOut();
motion.Actuate.targetLibraries = new haxe.ds.ObjectMap();
openfl.Assets.cache = new openfl.AssetCache();
openfl.Assets.dispatcher = new openfl.events.EventDispatcher();
openfl._Assets.AssetType_Impl_.BINARY = "BINARY";
openfl._Assets.AssetType_Impl_.FONT = "FONT";
openfl._Assets.AssetType_Impl_.IMAGE = "IMAGE";
openfl._Assets.AssetType_Impl_.MOVIE_CLIP = "MOVIE_CLIP";
openfl._Assets.AssetType_Impl_.MUSIC = "MUSIC";
openfl._Assets.AssetType_Impl_.SOUND = "SOUND";
openfl._Assets.AssetType_Impl_.TEMPLATE = "TEMPLATE";
openfl._Assets.AssetType_Impl_.TEXT = "TEXT";
openfl.display.LoaderInfo.__rootURL = window.document.URL;
openfl.system.ApplicationDomain.currentDomain = new openfl.system.ApplicationDomain(null);
openfl.geom.Matrix.__identity = new openfl.geom.Matrix();
openfl.Lib.current = new openfl.display.MovieClip();
openfl.Lib.__sentWarnings = new haxe.ds.StringMap();
openfl._internal.renderer.canvas.CanvasGraphics.SIN45 = 0.70710678118654752440084436210485;
openfl._internal.renderer.canvas.CanvasGraphics.TAN22 = 0.4142135623730950488016887242097;
openfl._internal.renderer.opengl.GLRenderer.blendModesWebGL = null;
openfl._internal.renderer.opengl.GLRenderer.glContextId = 0;
openfl._internal.renderer.opengl.GLRenderer.glContexts = [];
openfl._internal.renderer.opengl.shaders.AbstractShader.__UID = 0;
openfl._internal.renderer.opengl.shaders.DefaultShader.defaultVertexSrc = ["attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","attribute vec2 aColor;","uniform vec2 projectionVector;","uniform vec2 offsetVector;","varying vec2 vTextureCoord;","varying vec4 vColor;","const vec2 center = vec2(-1.0, 1.0);","void main(void) {"," gl_Position = vec4( ((aVertexPosition + offsetVector) / projectionVector) + center , 0.0, 1.0);"," vTextureCoord = aTextureCoord;"," vec3 color = mod(vec3(aColor.y/65536.0, aColor.y/256.0, aColor.y), 256.0) / 256.0;"," vColor = vec4(color * aColor.x, aColor.x);","}"];
openfl._internal.renderer.opengl.utils.PathBuiler.__fillIndex = 0;
openfl._internal.renderer.opengl.utils.GraphicsRenderer.graphicsDataPool = [];
openfl._internal.renderer.opengl.utils.GraphicsRenderer.bucketPool = [];
openfl._internal.renderer.opengl.utils.GraphicsRenderer.objectPosition = new openfl.geom.Point();
openfl._internal.renderer.opengl.utils.GraphicsRenderer.objectBounds = new openfl.geom.Rectangle();
openfl._internal.renderer.opengl.utils._GraphicsRenderer.RenderMode_Impl_.DEFAULT = 0;
openfl._internal.renderer.opengl.utils._GraphicsRenderer.RenderMode_Impl_.STENCIL = 1;
openfl.display.Graphics.TILE_SCALE = 1;
openfl.display.Graphics.TILE_ROTATION = 2;
openfl.display.Graphics.TILE_RGB = 4;
openfl.display.Graphics.TILE_ALPHA = 8;
openfl.display.Graphics.TILE_TRANS_2x2 = 16;
openfl.display.Graphics.TILE_RECT = 32;
openfl.display.Graphics.TILE_ORIGIN = 64;
openfl.display.Graphics.TILE_BLEND_NORMAL = 0;
openfl.display.Graphics.TILE_BLEND_ADD = 65536;
openfl.display.GraphicsPathCommand.LINE_TO = 2;
openfl.display.GraphicsPathCommand.MOVE_TO = 1;
openfl.display.GraphicsPathCommand.CURVE_TO = 3;
openfl.display.GraphicsPathCommand.WIDE_LINE_TO = 5;
openfl.display.GraphicsPathCommand.WIDE_MOVE_TO = 4;
openfl.display.GraphicsPathCommand.NO_OP = 0;
openfl.display.GraphicsPathCommand.CUBIC_CURVE_TO = 6;
openfl.display.OpenGLView.CONTEXT_LOST = "glcontextlost";
openfl.display.OpenGLView.CONTEXT_RESTORED = "glcontextrestored";
openfl.display.Tilesheet.TILE_SCALE = 1;
openfl.display.Tilesheet.TILE_ROTATION = 2;
openfl.display.Tilesheet.TILE_RGB = 4;
openfl.display.Tilesheet.TILE_ALPHA = 8;
openfl.display.Tilesheet.TILE_TRANS_2x2 = 16;
openfl.display.Tilesheet.TILE_RECT = 32;
openfl.display.Tilesheet.TILE_ORIGIN = 64;
openfl.display.Tilesheet.TILE_BLEND_NORMAL = 0;
openfl.display.Tilesheet.TILE_BLEND_ADD = 65536;
openfl.display.Tilesheet.TILE_BLEND_MULTIPLY = 131072;
openfl.display.Tilesheet.TILE_BLEND_SCREEN = 262144;
openfl.display.Tilesheet.TILE_BLEND_SUBTRACT = 524288;
openfl.display.Tilesheet.__defaultPoint = new openfl.geom.Point(0,0);
openfl.display3D.Context3D.TEXTURE_MAX_ANISOTROPY_EXT = 34046;
openfl.display3D.Context3D.MAX_SAMPLERS = 8;
openfl.display3D.Context3D.MAX_TEXTURE_MAX_ANISOTROPY_EXT = 34047;
openfl.display3D.Context3D.anisotropySupportTested = false;
openfl.display3D.Context3D.supportsAnisotropy = false;
openfl.display3D.Context3D.maxSupportedAnisotropy = 256;
openfl.display3D.Context3DClearMask.ALL = 17664;
openfl.display3D.Context3DClearMask.COLOR = 16384;
openfl.display3D.Context3DClearMask.DEPTH = 256;
openfl.display3D.Context3DClearMask.STENCIL = 1024;
openfl.display3D._Context3DTriangleFace.Context3DTriangleFace_Impl_.BACK = 1028;
openfl.display3D._Context3DTriangleFace.Context3DTriangleFace_Impl_.FRONT = 1029;
openfl.display3D._Context3DTriangleFace.Context3DTriangleFace_Impl_.FRONT_AND_BACK = 1032;
openfl.display3D._Context3DTriangleFace.Context3DTriangleFace_Impl_.NONE = 0;
openfl.errors.Error.DEFAULT_TO_STRING = "Error";
openfl.events.TextEvent.LINK = "link";
openfl.events.TextEvent.TEXT_INPUT = "textInput";
openfl.events.DataEvent.DATA = "data";
openfl.events.DataEvent.UPLOAD_COMPLETE_DATA = "uploadCompleteData";
openfl.events.ErrorEvent.ERROR = "error";
openfl.events.FocusEvent.FOCUS_IN = "focusIn";
openfl.events.FocusEvent.FOCUS_OUT = "focusOut";
openfl.events.FocusEvent.KEY_FOCUS_CHANGE = "keyFocusChange";
openfl.events.FocusEvent.MOUSE_FOCUS_CHANGE = "mouseFocusChange";
openfl.events.IOErrorEvent.IO_ERROR = "ioError";
openfl.events.KeyboardEvent.KEY_DOWN = "keyDown";
openfl.events.KeyboardEvent.KEY_UP = "keyUp";
openfl.events.MouseEvent.CLICK = "click";
openfl.events.MouseEvent.DOUBLE_CLICK = "doubleClick";
openfl.events.MouseEvent.MIDDLE_CLICK = "middleClick";
openfl.events.MouseEvent.MIDDLE_MOUSE_DOWN = "middleMouseDown";
openfl.events.MouseEvent.MIDDLE_MOUSE_UP = "middleMouseUp";
openfl.events.MouseEvent.MOUSE_DOWN = "mouseDown";
openfl.events.MouseEvent.MOUSE_MOVE = "mouseMove";
openfl.events.MouseEvent.MOUSE_OUT = "mouseOut";
openfl.events.MouseEvent.MOUSE_OVER = "mouseOver";
openfl.events.MouseEvent.MOUSE_UP = "mouseUp";
openfl.events.MouseEvent.MOUSE_WHEEL = "mouseWheel";
openfl.events.MouseEvent.RIGHT_CLICK = "rightClick";
openfl.events.MouseEvent.RIGHT_MOUSE_DOWN = "rightMouseDown";
openfl.events.MouseEvent.RIGHT_MOUSE_UP = "rightMouseUp";
openfl.events.MouseEvent.ROLL_OUT = "rollOut";
openfl.events.MouseEvent.ROLL_OVER = "rollOver";
openfl.events.MouseEvent.__buttonDown = [false,false,false];
openfl.events.TouchEvent.TOUCH_BEGIN = "touchBegin";
openfl.events.TouchEvent.TOUCH_END = "touchEnd";
openfl.events.TouchEvent.TOUCH_MOVE = "touchMove";
openfl.events.TouchEvent.TOUCH_OUT = "touchOut";
openfl.events.TouchEvent.TOUCH_OVER = "touchOver";
openfl.events.TouchEvent.TOUCH_ROLL_OUT = "touchRollOut";
openfl.events.TouchEvent.TOUCH_ROLL_OVER = "touchRollOver";
openfl.events.TouchEvent.TOUCH_TAP = "touchTap";
openfl.media.Sound.__registeredSounds = new haxe.ds.StringMap();
openfl.net.URLRequestMethod.DELETE = "DELETE";
openfl.net.URLRequestMethod.GET = "GET";
openfl.net.URLRequestMethod.HEAD = "HEAD";
openfl.net.URLRequestMethod.OPTIONS = "OPTIONS";
openfl.net.URLRequestMethod.POST = "POST";
openfl.net.URLRequestMethod.PUT = "PUT";
openfl.system.SecurityDomain.currentDomain = new openfl.system.SecurityDomain();
openfl.text.Font.__registeredFonts = new Array();
openfl.ui._KeyLocation.KeyLocation_Impl_.STANDARD = 0;
openfl.ui._KeyLocation.KeyLocation_Impl_.LEFT = 1;
openfl.ui._KeyLocation.KeyLocation_Impl_.RIGHT = 2;
openfl.ui._KeyLocation.KeyLocation_Impl_.NUM_PAD = 3;
openfl.ui.Keyboard.NUMBER_0 = 48;
openfl.ui.Keyboard.NUMBER_1 = 49;
openfl.ui.Keyboard.NUMBER_2 = 50;
openfl.ui.Keyboard.NUMBER_3 = 51;
openfl.ui.Keyboard.NUMBER_4 = 52;
openfl.ui.Keyboard.NUMBER_5 = 53;
openfl.ui.Keyboard.NUMBER_6 = 54;
openfl.ui.Keyboard.NUMBER_7 = 55;
openfl.ui.Keyboard.NUMBER_8 = 56;
openfl.ui.Keyboard.NUMBER_9 = 57;
openfl.ui.Keyboard.A = 65;
openfl.ui.Keyboard.B = 66;
openfl.ui.Keyboard.C = 67;
openfl.ui.Keyboard.D = 68;
openfl.ui.Keyboard.E = 69;
openfl.ui.Keyboard.F = 70;
openfl.ui.Keyboard.G = 71;
openfl.ui.Keyboard.H = 72;
openfl.ui.Keyboard.I = 73;
openfl.ui.Keyboard.J = 74;
openfl.ui.Keyboard.K = 75;
openfl.ui.Keyboard.L = 76;
openfl.ui.Keyboard.M = 77;
openfl.ui.Keyboard.N = 78;
openfl.ui.Keyboard.O = 79;
openfl.ui.Keyboard.P = 80;
openfl.ui.Keyboard.Q = 81;
openfl.ui.Keyboard.R = 82;
openfl.ui.Keyboard.S = 83;
openfl.ui.Keyboard.T = 84;
openfl.ui.Keyboard.U = 85;
openfl.ui.Keyboard.V = 86;
openfl.ui.Keyboard.W = 87;
openfl.ui.Keyboard.X = 88;
openfl.ui.Keyboard.Y = 89;
openfl.ui.Keyboard.Z = 90;
openfl.ui.Keyboard.NUMPAD_0 = 96;
openfl.ui.Keyboard.NUMPAD_1 = 97;
openfl.ui.Keyboard.NUMPAD_2 = 98;
openfl.ui.Keyboard.NUMPAD_3 = 99;
openfl.ui.Keyboard.NUMPAD_4 = 100;
openfl.ui.Keyboard.NUMPAD_5 = 101;
openfl.ui.Keyboard.NUMPAD_6 = 102;
openfl.ui.Keyboard.NUMPAD_7 = 103;
openfl.ui.Keyboard.NUMPAD_8 = 104;
openfl.ui.Keyboard.NUMPAD_9 = 105;
openfl.ui.Keyboard.NUMPAD_MULTIPLY = 106;
openfl.ui.Keyboard.NUMPAD_ADD = 107;
openfl.ui.Keyboard.NUMPAD_ENTER = 108;
openfl.ui.Keyboard.NUMPAD_SUBTRACT = 109;
openfl.ui.Keyboard.NUMPAD_DECIMAL = 110;
openfl.ui.Keyboard.NUMPAD_DIVIDE = 111;
openfl.ui.Keyboard.F1 = 112;
openfl.ui.Keyboard.F2 = 113;
openfl.ui.Keyboard.F3 = 114;
openfl.ui.Keyboard.F4 = 115;
openfl.ui.Keyboard.F5 = 116;
openfl.ui.Keyboard.F6 = 117;
openfl.ui.Keyboard.F7 = 118;
openfl.ui.Keyboard.F8 = 119;
openfl.ui.Keyboard.F9 = 120;
openfl.ui.Keyboard.F10 = 121;
openfl.ui.Keyboard.F11 = 122;
openfl.ui.Keyboard.F12 = 123;
openfl.ui.Keyboard.F13 = 124;
openfl.ui.Keyboard.F14 = 125;
openfl.ui.Keyboard.F15 = 126;
openfl.ui.Keyboard.BACKSPACE = 8;
openfl.ui.Keyboard.TAB = 9;
openfl.ui.Keyboard.ALTERNATE = 18;
openfl.ui.Keyboard.ENTER = 13;
openfl.ui.Keyboard.COMMAND = 15;
openfl.ui.Keyboard.SHIFT = 16;
openfl.ui.Keyboard.CONTROL = 17;
openfl.ui.Keyboard.CAPS_LOCK = 20;
openfl.ui.Keyboard.NUMPAD = 21;
openfl.ui.Keyboard.ESCAPE = 27;
openfl.ui.Keyboard.SPACE = 32;
openfl.ui.Keyboard.PAGE_UP = 33;
openfl.ui.Keyboard.PAGE_DOWN = 34;
openfl.ui.Keyboard.END = 35;
openfl.ui.Keyboard.HOME = 36;
openfl.ui.Keyboard.LEFT = 37;
openfl.ui.Keyboard.RIGHT = 39;
openfl.ui.Keyboard.UP = 38;
openfl.ui.Keyboard.DOWN = 40;
openfl.ui.Keyboard.INSERT = 45;
openfl.ui.Keyboard.DELETE = 46;
openfl.ui.Keyboard.NUMLOCK = 144;
openfl.ui.Keyboard.BREAK = 19;
openfl.ui.Keyboard.SEMICOLON = 186;
openfl.ui.Keyboard.EQUAL = 187;
openfl.ui.Keyboard.COMMA = 188;
openfl.ui.Keyboard.MINUS = 189;
openfl.ui.Keyboard.PERIOD = 190;
openfl.ui.Keyboard.SLASH = 191;
openfl.ui.Keyboard.BACKQUOTE = 192;
openfl.ui.Keyboard.LEFTBRACKET = 219;
openfl.ui.Keyboard.BACKSLASH = 220;
openfl.ui.Keyboard.RIGHTBRACKET = 221;
openfl.ui.Keyboard.QUOTE = 222;
openfl.ui.Keyboard.DOM_VK_CANCEL = 3;
openfl.ui.Keyboard.DOM_VK_HELP = 6;
openfl.ui.Keyboard.DOM_VK_BACK_SPACE = 8;
openfl.ui.Keyboard.DOM_VK_TAB = 9;
openfl.ui.Keyboard.DOM_VK_CLEAR = 12;
openfl.ui.Keyboard.DOM_VK_RETURN = 13;
openfl.ui.Keyboard.DOM_VK_ENTER = 14;
openfl.ui.Keyboard.DOM_VK_SHIFT = 16;
openfl.ui.Keyboard.DOM_VK_CONTROL = 17;
openfl.ui.Keyboard.DOM_VK_ALT = 18;
openfl.ui.Keyboard.DOM_VK_PAUSE = 19;
openfl.ui.Keyboard.DOM_VK_CAPS_LOCK = 20;
openfl.ui.Keyboard.DOM_VK_ESCAPE = 27;
openfl.ui.Keyboard.DOM_VK_SPACE = 32;
openfl.ui.Keyboard.DOM_VK_PAGE_UP = 33;
openfl.ui.Keyboard.DOM_VK_PAGE_DOWN = 34;
openfl.ui.Keyboard.DOM_VK_END = 35;
openfl.ui.Keyboard.DOM_VK_HOME = 36;
openfl.ui.Keyboard.DOM_VK_LEFT = 37;
openfl.ui.Keyboard.DOM_VK_UP = 38;
openfl.ui.Keyboard.DOM_VK_RIGHT = 39;
openfl.ui.Keyboard.DOM_VK_DOWN = 40;
openfl.ui.Keyboard.DOM_VK_PRINTSCREEN = 44;
openfl.ui.Keyboard.DOM_VK_INSERT = 45;
openfl.ui.Keyboard.DOM_VK_DELETE = 46;
openfl.ui.Keyboard.DOM_VK_0 = 48;
openfl.ui.Keyboard.DOM_VK_1 = 49;
openfl.ui.Keyboard.DOM_VK_2 = 50;
openfl.ui.Keyboard.DOM_VK_3 = 51;
openfl.ui.Keyboard.DOM_VK_4 = 52;
openfl.ui.Keyboard.DOM_VK_5 = 53;
openfl.ui.Keyboard.DOM_VK_6 = 54;
openfl.ui.Keyboard.DOM_VK_7 = 55;
openfl.ui.Keyboard.DOM_VK_8 = 56;
openfl.ui.Keyboard.DOM_VK_9 = 57;
openfl.ui.Keyboard.DOM_VK_SEMICOLON = 59;
openfl.ui.Keyboard.DOM_VK_EQUALS = 61;
openfl.ui.Keyboard.DOM_VK_A = 65;
openfl.ui.Keyboard.DOM_VK_B = 66;
openfl.ui.Keyboard.DOM_VK_C = 67;
openfl.ui.Keyboard.DOM_VK_D = 68;
openfl.ui.Keyboard.DOM_VK_E = 69;
openfl.ui.Keyboard.DOM_VK_F = 70;
openfl.ui.Keyboard.DOM_VK_G = 71;
openfl.ui.Keyboard.DOM_VK_H = 72;
openfl.ui.Keyboard.DOM_VK_I = 73;
openfl.ui.Keyboard.DOM_VK_J = 74;
openfl.ui.Keyboard.DOM_VK_K = 75;
openfl.ui.Keyboard.DOM_VK_L = 76;
openfl.ui.Keyboard.DOM_VK_M = 77;
openfl.ui.Keyboard.DOM_VK_N = 78;
openfl.ui.Keyboard.DOM_VK_O = 79;
openfl.ui.Keyboard.DOM_VK_P = 80;
openfl.ui.Keyboard.DOM_VK_Q = 81;
openfl.ui.Keyboard.DOM_VK_R = 82;
openfl.ui.Keyboard.DOM_VK_S = 83;
openfl.ui.Keyboard.DOM_VK_T = 84;
openfl.ui.Keyboard.DOM_VK_U = 85;
openfl.ui.Keyboard.DOM_VK_V = 86;
openfl.ui.Keyboard.DOM_VK_W = 87;
openfl.ui.Keyboard.DOM_VK_X = 88;
openfl.ui.Keyboard.DOM_VK_Y = 89;
openfl.ui.Keyboard.DOM_VK_Z = 90;
openfl.ui.Keyboard.DOM_VK_CONTEXT_MENU = 93;
openfl.ui.Keyboard.DOM_VK_NUMPAD0 = 96;
openfl.ui.Keyboard.DOM_VK_NUMPAD1 = 97;
openfl.ui.Keyboard.DOM_VK_NUMPAD2 = 98;
openfl.ui.Keyboard.DOM_VK_NUMPAD3 = 99;
openfl.ui.Keyboard.DOM_VK_NUMPAD4 = 100;
openfl.ui.Keyboard.DOM_VK_NUMPAD5 = 101;
openfl.ui.Keyboard.DOM_VK_NUMPAD6 = 102;
openfl.ui.Keyboard.DOM_VK_NUMPAD7 = 103;
openfl.ui.Keyboard.DOM_VK_NUMPAD8 = 104;
openfl.ui.Keyboard.DOM_VK_NUMPAD9 = 105;
openfl.ui.Keyboard.DOM_VK_MULTIPLY = 106;
openfl.ui.Keyboard.DOM_VK_ADD = 107;
openfl.ui.Keyboard.DOM_VK_SEPARATOR = 108;
openfl.ui.Keyboard.DOM_VK_SUBTRACT = 109;
openfl.ui.Keyboard.DOM_VK_DECIMAL = 110;
openfl.ui.Keyboard.DOM_VK_DIVIDE = 111;
openfl.ui.Keyboard.DOM_VK_F1 = 112;
openfl.ui.Keyboard.DOM_VK_F2 = 113;
openfl.ui.Keyboard.DOM_VK_F3 = 114;
openfl.ui.Keyboard.DOM_VK_F4 = 115;
openfl.ui.Keyboard.DOM_VK_F5 = 116;
openfl.ui.Keyboard.DOM_VK_F6 = 117;
openfl.ui.Keyboard.DOM_VK_F7 = 118;
openfl.ui.Keyboard.DOM_VK_F8 = 119;
openfl.ui.Keyboard.DOM_VK_F9 = 120;
openfl.ui.Keyboard.DOM_VK_F10 = 121;
openfl.ui.Keyboard.DOM_VK_F11 = 122;
openfl.ui.Keyboard.DOM_VK_F12 = 123;
openfl.ui.Keyboard.DOM_VK_F13 = 124;
openfl.ui.Keyboard.DOM_VK_F14 = 125;
openfl.ui.Keyboard.DOM_VK_F15 = 126;
openfl.ui.Keyboard.DOM_VK_F16 = 127;
openfl.ui.Keyboard.DOM_VK_F17 = 128;
openfl.ui.Keyboard.DOM_VK_F18 = 129;
openfl.ui.Keyboard.DOM_VK_F19 = 130;
openfl.ui.Keyboard.DOM_VK_F20 = 131;
openfl.ui.Keyboard.DOM_VK_F21 = 132;
openfl.ui.Keyboard.DOM_VK_F22 = 133;
openfl.ui.Keyboard.DOM_VK_F23 = 134;
openfl.ui.Keyboard.DOM_VK_F24 = 135;
openfl.ui.Keyboard.DOM_VK_NUM_LOCK = 144;
openfl.ui.Keyboard.DOM_VK_SCROLL_LOCK = 145;
openfl.ui.Keyboard.DOM_VK_COMMA = 188;
openfl.ui.Keyboard.DOM_VK_PERIOD = 190;
openfl.ui.Keyboard.DOM_VK_SLASH = 191;
openfl.ui.Keyboard.DOM_VK_BACK_QUOTE = 192;
openfl.ui.Keyboard.DOM_VK_OPEN_BRACKET = 219;
openfl.ui.Keyboard.DOM_VK_BACK_SLASH = 220;
openfl.ui.Keyboard.DOM_VK_CLOSE_BRACKET = 221;
openfl.ui.Keyboard.DOM_VK_QUOTE = 222;
openfl.ui.Keyboard.DOM_VK_META = 224;
openfl.ui.Keyboard.DOM_VK_KANA = 21;
openfl.ui.Keyboard.DOM_VK_HANGUL = 21;
openfl.ui.Keyboard.DOM_VK_JUNJA = 23;
openfl.ui.Keyboard.DOM_VK_FINAL = 24;
openfl.ui.Keyboard.DOM_VK_HANJA = 25;
openfl.ui.Keyboard.DOM_VK_KANJI = 25;
openfl.ui.Keyboard.DOM_VK_CONVERT = 28;
openfl.ui.Keyboard.DOM_VK_NONCONVERT = 29;
openfl.ui.Keyboard.DOM_VK_ACEPT = 30;
openfl.ui.Keyboard.DOM_VK_MODECHANGE = 31;
openfl.ui.Keyboard.DOM_VK_SELECT = 41;
openfl.ui.Keyboard.DOM_VK_PRINT = 42;
openfl.ui.Keyboard.DOM_VK_EXECUTE = 43;
openfl.ui.Keyboard.DOM_VK_SLEEP = 95;
spritesheet.data.BehaviorData.uniqueID = 0;
ApplicationMain.main();
})(typeof window != "undefined" ? window : exports);