Section 1
//MD5 (com.adobe.crypto.MD5)
package com.adobe.crypto {
import flash.utils.*;
import com.adobe.utils.*;
public class MD5 {
public static var digest:ByteArray;
private static function ff(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{
return (transform(f, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7));
}
private static function f(_arg1:int, _arg2:int, _arg3:int):int{
return (((_arg1 & _arg2) | (~(_arg1) & _arg3)));
}
private static function g(_arg1:int, _arg2:int, _arg3:int):int{
return (((_arg1 & _arg3) | (_arg2 & ~(_arg3))));
}
private static function h(_arg1:int, _arg2:int, _arg3:int):int{
return (((_arg1 ^ _arg2) ^ _arg3));
}
private static function i(_arg1:int, _arg2:int, _arg3:int):int{
return ((_arg2 ^ (_arg1 | ~(_arg3))));
}
private static function transform(_arg1:Function, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int, _arg8:int):int{
var _local9:int;
_local9 = (((_arg2 + int(_arg1(_arg3, _arg4, _arg5))) + _arg6) + _arg8);
return ((IntUtil.rol(_local9, _arg7) + _arg3));
}
private static function hh(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{
return (transform(h, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7));
}
public static function hash(_arg1:String):String{
var _local2:ByteArray;
_local2 = new ByteArray();
_local2.writeUTFBytes(_arg1);
return (hashBinary(_local2));
}
private static function createBlocks(_arg1:ByteArray):Array{
var _local2:Array;
var _local3:int;
var _local4:int;
var _local5:int;
_local2 = new Array();
_local3 = (_arg1.length * 8);
_local4 = 0xFF;
_local5 = 0;
while (_local5 < _local3) {
_local2[int((_local5 >> 5))] = (_local2[int((_local5 >> 5))] | ((_arg1[(_local5 / 8)] & _local4) << (_local5 % 32)));
_local5 = (_local5 + 8);
};
_local2[int((_local3 >> 5))] = (_local2[int((_local3 >> 5))] | (128 << (_local3 % 32)));
_local2[int(((((_local3 + 64) >>> 9) << 4) + 14))] = _local3;
return (_local2);
}
public static function hashBinary(_arg1:ByteArray):String{
var _local2:int;
var _local3:int;
var _local4:int;
var _local5:int;
var _local6:int;
var _local7:int;
var _local8:int;
var _local9:int;
var _local10:Array;
var _local11:int;
var _local12:int;
_local2 = 1732584193;
_local3 = -271733879;
_local4 = -1732584194;
_local5 = 271733878;
_local10 = createBlocks(_arg1);
_local11 = _local10.length;
_local12 = 0;
while (_local12 < _local11) {
_local6 = _local2;
_local7 = _local3;
_local8 = _local4;
_local9 = _local5;
_local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 0))], 7, -680876936);
_local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 1))], 12, -389564586);
_local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 2))], 17, 606105819);
_local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 3))], 22, -1044525330);
_local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 4))], 7, -176418897);
_local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 5))], 12, 1200080426);
_local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 6))], 17, -1473231341);
_local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 7))], 22, -45705983);
_local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 8))], 7, 1770035416);
_local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 9))], 12, -1958414417);
_local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 10))], 17, -42063);
_local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 11))], 22, -1990404162);
_local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 12))], 7, 1804603682);
_local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 13))], 12, -40341101);
_local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 14))], 17, -1502002290);
_local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 15))], 22, 1236535329);
_local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 1))], 5, -165796510);
_local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 6))], 9, -1069501632);
_local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 11))], 14, 643717713);
_local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 0))], 20, -373897302);
_local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 5))], 5, -701558691);
_local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 10))], 9, 38016083);
_local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 15))], 14, -660478335);
_local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 4))], 20, -405537848);
_local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 9))], 5, 568446438);
_local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 14))], 9, -1019803690);
_local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 3))], 14, -187363961);
_local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 8))], 20, 1163531501);
_local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 13))], 5, -1444681467);
_local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 2))], 9, -51403784);
_local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 7))], 14, 1735328473);
_local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 12))], 20, -1926607734);
_local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 5))], 4, -378558);
_local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 8))], 11, -2022574463);
_local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 11))], 16, 1839030562);
_local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 14))], 23, -35309556);
_local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 1))], 4, -1530992060);
_local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 4))], 11, 1272893353);
_local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 7))], 16, -155497632);
_local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 10))], 23, -1094730640);
_local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 13))], 4, 681279174);
_local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 0))], 11, -358537222);
_local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 3))], 16, -722521979);
_local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 6))], 23, 76029189);
_local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 9))], 4, -640364487);
_local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 12))], 11, -421815835);
_local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 15))], 16, 530742520);
_local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 2))], 23, -995338651);
_local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 0))], 6, -198630844);
_local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 7))], 10, 1126891415);
_local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 14))], 15, -1416354905);
_local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 5))], 21, -57434055);
_local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 12))], 6, 1700485571);
_local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 3))], 10, -1894986606);
_local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 10))], 15, -1051523);
_local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 1))], 21, -2054922799);
_local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 8))], 6, 1873313359);
_local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 15))], 10, -30611744);
_local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 6))], 15, -1560198380);
_local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 13))], 21, 1309151649);
_local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 4))], 6, -145523070);
_local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 11))], 10, -1120210379);
_local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 2))], 15, 718787259);
_local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 9))], 21, -343485551);
_local2 = (_local2 + _local6);
_local3 = (_local3 + _local7);
_local4 = (_local4 + _local8);
_local5 = (_local5 + _local9);
_local12 = (_local12 + 16);
};
digest = new ByteArray();
digest.writeInt(_local2);
digest.writeInt(_local3);
digest.writeInt(_local4);
digest.writeInt(_local5);
digest.position = 0;
return ((((IntUtil.toHex(_local2) + IntUtil.toHex(_local3)) + IntUtil.toHex(_local4)) + IntUtil.toHex(_local5)));
}
private static function gg(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{
return (transform(g, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7));
}
private static function ii(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{
return (transform(i, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7));
}
public static function hashBytes(_arg1:ByteArray):String{
return (hashBinary(_arg1));
}
}
}//package com.adobe.crypto
Section 2
//JSON (com.adobe.serialization.json.JSON)
package com.adobe.serialization.json {
public class JSON {
public static function decode(_arg1:String){
var _local2:JSONDecoder;
_local2 = new JSONDecoder(_arg1);
return (_local2.getValue());
}
public static function encode(_arg1:Object):String{
var _local2:JSONEncoder;
_local2 = new JSONEncoder(_arg1);
return (_local2.getString());
}
}
}//package com.adobe.serialization.json
Section 3
//JSONDecoder (com.adobe.serialization.json.JSONDecoder)
package com.adobe.serialization.json {
public class JSONDecoder {
private var value;
private var tokenizer:JSONTokenizer;
private var token:JSONToken;
public function JSONDecoder(_arg1:String){
tokenizer = new JSONTokenizer(_arg1);
nextToken();
value = parseValue();
}
private function nextToken():JSONToken{
return ((token = tokenizer.getNextToken()));
}
private function parseObject():Object{
var _local1:Object;
var _local2:String;
_local1 = new Object();
nextToken();
if (token.type == JSONTokenType.RIGHT_BRACE){
return (_local1);
};
while (true) {
if (token.type == JSONTokenType.STRING){
_local2 = String(token.value);
nextToken();
if (token.type == JSONTokenType.COLON){
nextToken();
_local1[_local2] = parseValue();
nextToken();
if (token.type == JSONTokenType.RIGHT_BRACE){
return (_local1);
};
if (token.type == JSONTokenType.COMMA){
nextToken();
} else {
tokenizer.parseError(("Expecting } or , but found " + token.value));
};
} else {
tokenizer.parseError(("Expecting : but found " + token.value));
};
} else {
tokenizer.parseError(("Expecting string but found " + token.value));
};
};
return (null);
}
private function parseArray():Array{
var _local1:Array;
_local1 = new Array();
nextToken();
if (token.type == JSONTokenType.RIGHT_BRACKET){
return (_local1);
};
while (true) {
_local1.push(parseValue());
nextToken();
if (token.type == JSONTokenType.RIGHT_BRACKET){
return (_local1);
};
if (token.type == JSONTokenType.COMMA){
nextToken();
} else {
tokenizer.parseError(("Expecting ] or , but found " + token.value));
};
};
return (null);
}
public function getValue(){
return (value);
}
private function parseValue():Object{
if (token == null){
tokenizer.parseError("Unexpected end of input");
};
switch (token.type){
case JSONTokenType.LEFT_BRACE:
return (parseObject());
case JSONTokenType.LEFT_BRACKET:
return (parseArray());
case JSONTokenType.STRING:
case JSONTokenType.NUMBER:
case JSONTokenType.TRUE:
case JSONTokenType.FALSE:
case JSONTokenType.NULL:
return (token.value);
default:
tokenizer.parseError(("Unexpected " + token.value));
};
return (null);
}
}
}//package com.adobe.serialization.json
Section 4
//JSONEncoder (com.adobe.serialization.json.JSONEncoder)
package com.adobe.serialization.json {
import flash.utils.*;
public class JSONEncoder {
private var jsonString:String;
public function JSONEncoder(_arg1){
jsonString = convertToString(_arg1);
}
private function arrayToString(_arg1:Array):String{
var _local2:String;
var _local3:int;
_local2 = "";
_local3 = 0;
while (_local3 < _arg1.length) {
if (_local2.length > 0){
_local2 = (_local2 + ",");
};
_local2 = (_local2 + convertToString(_arg1[_local3]));
_local3++;
};
return ((("[" + _local2) + "]"));
}
private function convertToString(_arg1):String{
if ((_arg1 is String)){
return (escapeString((_arg1 as String)));
};
if ((_arg1 is Number)){
return ((isFinite((_arg1 as Number))) ? _arg1.toString() : "null");
} else {
if ((_arg1 is Boolean)){
return ((_arg1) ? "true" : "false");
} else {
if ((_arg1 is Array)){
return (arrayToString((_arg1 as Array)));
};
if ((((_arg1 is Object)) && (!((_arg1 == null))))){
return (objectToString(_arg1));
};
};
};
return ("null");
}
private function escapeString(_arg1:String):String{
var _local2:String;
var _local3:String;
var _local4:Number;
var _local5:int;
var _local6:String;
var _local7:String;
_local2 = "";
_local4 = _arg1.length;
_local5 = 0;
while (_local5 < _local4) {
_local3 = _arg1.charAt(_local5);
switch (_local3){
case "\"":
_local2 = (_local2 + "\\\"");
break;
case "\\":
_local2 = (_local2 + "\\\\");
break;
case "\b":
_local2 = (_local2 + "\\b");
break;
case "\f":
_local2 = (_local2 + "\\f");
break;
case "\n":
_local2 = (_local2 + "\\n");
break;
case "\r":
_local2 = (_local2 + "\\r");
break;
case "\t":
_local2 = (_local2 + "\\t");
break;
default:
if (_local3 < " "){
_local6 = _local3.charCodeAt(0).toString(16);
_local7 = ((_local6.length == 2)) ? "00" : "000";
_local2 = (_local2 + (("\\u" + _local7) + _local6));
} else {
_local2 = (_local2 + _local3);
};
};
_local5++;
};
return ((("\"" + _local2) + "\""));
}
private function objectToString(_arg1:Object):String{
var s:String;
var classInfo:XML;
var value:Object;
var key:String;
var v:XML;
var o = _arg1;
s = "";
classInfo = describeType(o);
if (classInfo.@name.toString() == "Object"){
for (key in o) {
value = o[key];
if ((value is Function)){
} else {
if (s.length > 0){
s = (s + ",");
};
s = (s + ((escapeString(key) + ":") + convertToString(value)));
};
};
} else {
for each (v in classInfo..*.(((name() == "variable")) || ((name() == "accessor")))) {
if (s.length > 0){
s = (s + ",");
};
s = (s + ((escapeString(v.@name.toString()) + ":") + convertToString(o[v.@name])));
};
};
return ((("{" + s) + "}"));
}
public function getString():String{
return (jsonString);
}
}
}//package com.adobe.serialization.json
Section 5
//JSONParseError (com.adobe.serialization.json.JSONParseError)
package com.adobe.serialization.json {
public class JSONParseError extends Error {
private var _text:String;
private var _location:int;
public function JSONParseError(_arg1:String="", _arg2:int=0, _arg3:String=""){
super(_arg1);
name = "JSONParseError";
_location = _arg2;
_text = _arg3;
}
public function get text():String{
return (_text);
}
public function get location():int{
return (_location);
}
}
}//package com.adobe.serialization.json
Section 6
//JSONToken (com.adobe.serialization.json.JSONToken)
package com.adobe.serialization.json {
public class JSONToken {
private var _value:Object;
private var _type:int;
public function JSONToken(_arg1:int=-1, _arg2:Object=null){
_type = _arg1;
_value = _arg2;
}
public function set value(_arg1:Object):void{
_value = _arg1;
}
public function get value():Object{
return (_value);
}
public function set type(_arg1:int):void{
_type = _arg1;
}
public function get type():int{
return (_type);
}
}
}//package com.adobe.serialization.json
Section 7
//JSONTokenizer (com.adobe.serialization.json.JSONTokenizer)
package com.adobe.serialization.json {
public class JSONTokenizer {
private var loc:int;
private var ch:String;
private var obj:Object;
private var jsonString:String;
public function JSONTokenizer(_arg1:String){
jsonString = _arg1;
loc = 0;
nextChar();
}
private function skipComments():void{
if (ch == "/"){
nextChar();
switch (ch){
case "/":
do {
nextChar();
} while (((!((ch == "\n"))) && (!((ch == "")))));
nextChar();
break;
case "*":
nextChar();
while (true) {
if (ch == "*"){
nextChar();
if (ch == "/"){
nextChar();
break;
};
} else {
nextChar();
};
if (ch == ""){
parseError("Multi-line comment not closed");
};
};
break;
default:
parseError((("Unexpected " + ch) + " encountered (expecting '/' or '*' )"));
};
};
}
private function isDigit(_arg1:String):Boolean{
return ((((_arg1 >= "0")) && ((_arg1 <= "9"))));
}
private function readNumber():JSONToken{
var _local1:JSONToken;
var _local2:String;
var _local3:Number;
_local1 = new JSONToken();
_local1.type = JSONTokenType.NUMBER;
_local2 = "";
if (ch == "-"){
_local2 = (_local2 + "-");
nextChar();
};
if (!isDigit(ch)){
parseError("Expecting a digit");
};
if (ch == "0"){
_local2 = (_local2 + ch);
nextChar();
if (isDigit(ch)){
parseError("A digit cannot immediately follow 0");
};
} else {
while (isDigit(ch)) {
_local2 = (_local2 + ch);
nextChar();
};
};
if (ch == "."){
_local2 = (_local2 + ".");
nextChar();
if (!isDigit(ch)){
parseError("Expecting a digit");
};
while (isDigit(ch)) {
_local2 = (_local2 + ch);
nextChar();
};
};
if ((((ch == "e")) || ((ch == "E")))){
_local2 = (_local2 + "e");
nextChar();
if ((((ch == "+")) || ((ch == "-")))){
_local2 = (_local2 + ch);
nextChar();
};
if (!isDigit(ch)){
parseError("Scientific notation number needs exponent value");
};
while (isDigit(ch)) {
_local2 = (_local2 + ch);
nextChar();
};
};
_local3 = Number(_local2);
if (((isFinite(_local3)) && (!(isNaN(_local3))))){
_local1.value = _local3;
return (_local1);
};
parseError((("Number " + _local3) + " is not valid!"));
return (null);
}
private function nextChar():String{
return ((ch = jsonString.charAt(loc++)));
}
public function getNextToken():JSONToken{
var _local1:JSONToken;
var _local2:String;
var _local3:String;
var _local4:String;
_local1 = new JSONToken();
skipIgnored();
switch (ch){
case "{":
_local1.type = JSONTokenType.LEFT_BRACE;
_local1.value = "{";
nextChar();
break;
case "}":
_local1.type = JSONTokenType.RIGHT_BRACE;
_local1.value = "}";
nextChar();
break;
case "[":
_local1.type = JSONTokenType.LEFT_BRACKET;
_local1.value = "[";
nextChar();
break;
case "]":
_local1.type = JSONTokenType.RIGHT_BRACKET;
_local1.value = "]";
nextChar();
break;
case ",":
_local1.type = JSONTokenType.COMMA;
_local1.value = ",";
nextChar();
break;
case ":":
_local1.type = JSONTokenType.COLON;
_local1.value = ":";
nextChar();
break;
case "t":
_local2 = ((("t" + nextChar()) + nextChar()) + nextChar());
if (_local2 == "true"){
_local1.type = JSONTokenType.TRUE;
_local1.value = true;
nextChar();
} else {
parseError(("Expecting 'true' but found " + _local2));
};
break;
case "f":
_local3 = (((("f" + nextChar()) + nextChar()) + nextChar()) + nextChar());
if (_local3 == "false"){
_local1.type = JSONTokenType.FALSE;
_local1.value = false;
nextChar();
} else {
parseError(("Expecting 'false' but found " + _local3));
};
break;
case "n":
_local4 = ((("n" + nextChar()) + nextChar()) + nextChar());
if (_local4 == "null"){
_local1.type = JSONTokenType.NULL;
_local1.value = null;
nextChar();
} else {
parseError(("Expecting 'null' but found " + _local4));
};
break;
case "\"":
_local1 = readString();
break;
default:
if (((isDigit(ch)) || ((ch == "-")))){
_local1 = readNumber();
} else {
if (ch == ""){
return (null);
};
parseError((("Unexpected " + ch) + " encountered"));
};
};
return (_local1);
}
private function skipWhite():void{
while (isWhiteSpace(ch)) {
nextChar();
};
}
private function isWhiteSpace(_arg1:String):Boolean{
return ((((((((_arg1 == " ")) || ((_arg1 == "\t")))) || ((_arg1 == "\n")))) || ((_arg1 == "\r"))));
}
public function parseError(_arg1:String):void{
throw (new JSONParseError(_arg1, loc, jsonString));
}
private function skipIgnored():void{
var _local1:int;
do {
_local1 = loc;
skipWhite();
skipComments();
} while (_local1 != loc);
}
private function isHexDigit(_arg1:String):Boolean{
var _local2:String;
_local2 = _arg1.toUpperCase();
return (((isDigit(_arg1)) || ((((_local2 >= "A")) && ((_local2 <= "F"))))));
}
private function readString():JSONToken{
var _local1:JSONToken;
var _local2:String;
var _local3:String;
var _local4:int;
_local1 = new JSONToken();
_local1.type = JSONTokenType.STRING;
_local2 = "";
nextChar();
while (((!((ch == "\""))) && (!((ch == ""))))) {
if (ch == "\\"){
nextChar();
switch (ch){
case "\"":
_local2 = (_local2 + "\"");
break;
case "/":
_local2 = (_local2 + "/");
break;
case "\\":
_local2 = (_local2 + "\\");
break;
case "b":
_local2 = (_local2 + "\b");
break;
case "f":
_local2 = (_local2 + "\f");
break;
case "n":
_local2 = (_local2 + "\n");
break;
case "r":
_local2 = (_local2 + "\r");
break;
case "t":
_local2 = (_local2 + "\t");
break;
case "u":
_local3 = "";
_local4 = 0;
while (_local4 < 4) {
if (!isHexDigit(nextChar())){
parseError((" Excepted a hex digit, but found: " + ch));
};
_local3 = (_local3 + ch);
_local4++;
};
_local2 = (_local2 + String.fromCharCode(parseInt(_local3, 16)));
break;
default:
_local2 = (_local2 + ("\\" + ch));
};
} else {
_local2 = (_local2 + ch);
};
nextChar();
};
if (ch == ""){
parseError("Unterminated string literal");
};
nextChar();
_local1.value = _local2;
return (_local1);
}
}
}//package com.adobe.serialization.json
Section 8
//JSONTokenType (com.adobe.serialization.json.JSONTokenType)
package com.adobe.serialization.json {
public class JSONTokenType {
public static const NUMBER:int = 11;
public static const FALSE:int = 8;
public static const RIGHT_BRACKET:int = 4;
public static const NULL:int = 9;
public static const TRUE:int = 7;
public static const RIGHT_BRACE:int = 2;
public static const UNKNOWN:int = -1;
public static const COMMA:int = 0;
public static const LEFT_BRACKET:int = 3;
public static const STRING:int = 10;
public static const LEFT_BRACE:int = 1;
public static const COLON:int = 6;
}
}//package com.adobe.serialization.json
Section 9
//IntUtil (com.adobe.utils.IntUtil)
package com.adobe.utils {
public class IntUtil {
private static var hexChars:String = "0123456789abcdef";
public static function toHex(_arg1:int, _arg2:Boolean=false):String{
var _local3:String;
var _local4:int;
var _local5:int;
_local3 = "";
if (_arg2){
_local4 = 0;
while (_local4 < 4) {
_local3 = (_local3 + (hexChars.charAt(((_arg1 >> (((3 - _local4) * 8) + 4)) & 15)) + hexChars.charAt(((_arg1 >> ((3 - _local4) * 8)) & 15))));
_local4++;
};
} else {
_local5 = 0;
while (_local5 < 4) {
_local3 = (_local3 + (hexChars.charAt(((_arg1 >> ((_local5 * 8) + 4)) & 15)) + hexChars.charAt(((_arg1 >> (_local5 * 8)) & 15))));
_local5++;
};
};
return (_local3);
}
public static function ror(_arg1:int, _arg2:int):uint{
var _local3:int;
_local3 = (32 - _arg2);
return (((_arg1 << _local3) | (_arg1 >>> (32 - _local3))));
}
public static function rol(_arg1:int, _arg2:int):int{
return (((_arg1 << _arg2) | (_arg1 >>> (32 - _arg2))));
}
}
}//package com.adobe.utils
Section 10
//DefaultAPIConnector (com.newgrounds.components.DefaultAPIConnector)
package com.newgrounds.components {
import com.newgrounds.*;
import flash.display.*;
import flash.events.*;
import flash.net.*;
public dynamic class DefaultAPIConnector extends MovieClip {
private var _initialized:Boolean;
public var viewLegalButton:SimpleButton;
public var closeButton:SimpleButton;
public var viewLatestButton:SimpleButton;
public function DefaultAPIConnector(){
visible = false;
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function onNewVersionAvailable(_arg1:NewgroundsAPIEvent):void{
gotoAndStop("new_version");
visible = true;
}
private function onMovieConnected(_arg1:NewgroundsAPIEvent):void{
if (!_arg1.success){
gotoAndStop("no_connect");
visible = true;
};
}
public function initialize(_arg1:Object):void{
_initialized = true;
NewgroundsAPI.addEventListener(NewgroundsAPIEvent.MOVIE_CONNECTED, onMovieConnected);
NewgroundsAPI.addEventListener(NewgroundsAPIEvent.NEW_VERSION_AVAILABLE, onNewVersionAvailable);
NewgroundsAPI.addEventListener(NewgroundsAPIEvent.HOST_BLOCKED, onHostBlocked);
NewgroundsAPI.setMovieVersion(_arg1.movie_version);
NewgroundsAPI.connectMovie(root, _arg1.movie_id.toString(), _arg1.enc_key);
if (NewgroundsAPI.isNewgrounds()){
trace(((NewgroundsAPI.isNewgrounds() + " ") + NewgroundsAPI.hasUserSession()));
if (((!(NewgroundsAPI.hasUserSession())) && (!(NewgroundsAPI.debugMode)))){
gotoAndStop("no_login");
visible = true;
};
};
}
private function onOfficialVersionClicked(_arg1:Event):void{
navigateToURL(new URLRequest(NewgroundsAPI.getOfficialVersionURL()), "_blank");
}
private function onEnterFrame(_arg1:Event):void{
var _local2:uint;
var _local3:uint;
if (((this.closeButton) && (!(this.closeButton.hasEventListener(MouseEvent.CLICK))))){
this.closeButton.addEventListener(MouseEvent.CLICK, onCloseButtonClicked);
};
if (((this.viewLatestButton) && (!(this.viewLatestButton.hasEventListener(MouseEvent.CLICK))))){
this.viewLatestButton.addEventListener(MouseEvent.CLICK, onOfficialVersionClicked);
};
if (((this.viewLegalButton) && (!(this.viewLegalButton.hasEventListener(MouseEvent.CLICK))))){
this.viewLegalButton.addEventListener(MouseEvent.CLICK, onOfficialVersionClicked);
};
if (((parent) && (visible))){
_local2 = parent.getChildIndex(this);
_local3 = (parent.numChildren - 1);
if (((parent) && (!((_local2 == _local3))))){
parent.setChildIndex(this, _local3);
};
};
}
private function onHostBlocked(_arg1:NewgroundsAPIEvent):void{
gotoAndStop("bad_host");
visible = true;
}
private function onCloseButtonClicked(_arg1:Event):void{
visible = false;
}
}
}//package com.newgrounds.components
Section 11
//DefaultMedalPopup (com.newgrounds.components.DefaultMedalPopup)
package com.newgrounds.components {
import com.newgrounds.*;
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.text.*;
public dynamic class DefaultMedalPopup extends MovieClip {
private const MEDAL_POPUP_TIME:uint = 3000;
public var medalValueText:TextField;
private var _initialized:Boolean;
private var _popDelay:Timer;
public var medalNameText:TextField;
public var medalContainer:MovieClip;
private var _medalIcon:Bitmap;
private var _medal:NewgroundsAPIMedal;
public function DefaultMedalPopup(){
addFrameScript(0, frame1, 9, frame10);
visible = false;
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
function frame10(){
medalNameText.text = _medal.name;
medalValueText.text = (_medal.value + "pts");
showMedalIcon(medalContainer);
stop();
}
private function onMedalUnlocked(_arg1:NewgroundsAPIEvent):void{
_medal = NewgroundsAPIMedal(_arg1.data);
_popDelay.start();
gotoAndPlay("medal_show");
visible = true;
}
function frame1(){
visible = false;
stop();
}
private function initialize():void{
_initialized = true;
NewgroundsAPI.addEventListener(NewgroundsAPIEvent.MEDAL_UNLOCKED, onMedalUnlocked);
_popDelay = new Timer(MEDAL_POPUP_TIME, 1);
_popDelay.addEventListener(TimerEvent.TIMER, onTimer);
}
private function showMedalIcon(_arg1:DisplayObjectContainer):void{
if (!_medal){
return;
};
_medalIcon = _medal.createIconBitmap();
_arg1.addChild(_medalIcon);
}
private function onTimer(_arg1:TimerEvent):void{
if (((_medalIcon) && (_medalIcon.parent))){
_medalIcon.parent.removeChild(_medalIcon);
_medalIcon = null;
};
gotoAndPlay("medal_hide");
_popDelay.stop();
}
private function onEnterFrame(_arg1:Event):void{
var _local2:uint;
var _local3:uint;
if (((!(_initialized)) && (stage))){
initialize();
};
if (((visible) && (parent))){
_local2 = parent.getChildIndex(this);
_local3 = (parent.numChildren - 1);
if (_local2 != _local3){
parent.swapChildrenAt(_local2, _local3);
};
};
}
}
}//package com.newgrounds.components
Section 12
//BaseN (com.newgrounds.BaseN)
package com.newgrounds {
import flash.utils.*;
public class BaseN {
private var _hashIndex:String;
private var _base:Number;
private var _hashVal:Dictionary;
public function BaseN(_arg1:String=null){
var _local2:uint;
super();
if (_arg1){
_hashIndex = _arg1;
} else {
_hashIndex = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`~@#$%^&*()+|;/";
};
_base = _hashIndex.length;
_hashVal = new Dictionary();
_local2 = 0;
while (_local2 < _base) {
_hashVal[_hashIndex.charAt(_local2)] = _local2;
_local2++;
};
}
private function baseNDecoder(_arg1:String):uint{
var _local2:uint;
var _local3:uint;
_local2 = 0;
_local3 = 0;
while (_local3 < _arg1.length) {
_local2 = (_local2 * _base);
_local2 = (_local2 + _hashVal[_arg1.charAt(_local3)]);
_local3++;
};
return (_local2);
}
public function decode(_arg1:String):Number{
var _local2:String;
var _local3:Array;
_local2 = "";
if (_arg1.charAt(0) == "-"){
_local2 = "-";
_arg1 = _arg1.substring(1);
};
_local3 = _arg1.split(".", 2);
_local2 = (_local2 + baseNDecoder(_local3[0]));
if (_local3.length > 1){
_local2 = (_local2 + ".");
_local2 = (_local2 + baseNDecoder(_local3[1]));
};
return (Number(_local2));
}
public function encode(_arg1:Number, _arg2:uint=1):String{
var _local3:String;
var _local4:String;
var _local5:Array;
_local3 = _arg1.toString();
_local4 = "";
if (_local3.charAt(0) == "-"){
_local4 = "-";
_local3 = _local3.substring(1);
};
_local5 = _local3.split(".", 2);
_local4 = (_local4 + baseNEncoder(_local5[0], _arg2));
if (_local5.length > 1){
_local4 = (_local4 + ("." + baseNEncoder(_local5[1])));
};
return (_local4);
}
private function baseNEncoder(_arg1:uint, _arg2:uint=1):String{
var _local3:String;
var _local4:uint;
_local3 = "";
_local4 = _arg1;
while (_local4 != 0) {
_local3 = (_hashIndex.charAt((_local4 % _base)) + _local3);
_local4 = (_local4 / _base);
};
if (_arg2){
while (_local3.length < _arg2) {
_local3 = (_hashIndex.charAt(0) + _local3);
};
};
return (_local3);
}
}
}//package com.newgrounds
Section 13
//NewgroundsAPI (com.newgrounds.NewgroundsAPI)
package com.newgrounds {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import com.adobe.serialization.json.*;
import flash.net.*;
import com.adobe.crypto.*;
import flash.system.*;
public class NewgroundsAPI {
private static const COMMANDS_WIKI_URL:String = "http://www.newgrounds.com/wiki/flashapi/commands/";
private static const PREVIEW_HOSTS:Array = ["localhost"];
private static const AD_TERMS_URL:String = "http://www.newgrounds.com/wiki/flashads/terms/";
private static const GATEWAY_URL:String = "http://www.ngads.com/gateway_v2.php";
private static var connected:Boolean;
private static var user_id:Number;
private static var _initialized:Boolean = false;
private static var user_email:String;
private static var publisher_id:Number;
private static var debug:Boolean;
private static var do_echo:Boolean = false;
private static var ad_url:String;
private static var session_id:String;
private static var timeoutTimer:Timer;
public static var errors:Dictionary = NewgroundsAPIError.init_codes();
private static var _medals:Array;
private static var user_name:String;
private static var tracker_id:uint;
private static var period_aliases:Object = {t:{name:"Today", alias:"TODAY"}, p:{name:"Yesterday", alias:"YESTERDAY"}, w:{name:"This Week", alias:"THIS_WEEK"}, m:{name:"This Month", alias:"THIS_MONTH"}, y:{name:"This Year", alias:"THIS_YEAR"}, a:{name:"All-Time", alias:"ALL_TIME"}};
private static var movie_id:String;
private static var _eventDispatcher:EventDispatcher = new EventDispatcher();
private static var encryption_key:String;
private static var host:String;
private static var loaders:Array = [];
private static var compressor:BaseN = new BaseN(compression_radix);
private static var score_page_counts:Object = new Object();
private static var _preload:Boolean = true;
private static var version:String;
public static var periods:Object = getPeriodAliases();
private static var root:DisplayObject;
private static var compression_radix:String = "/g8236klvBQ#&|;Zb*7CEA59%s`Oue1wziFp$rDVY@TKxUPWytSaGHJ>dmoMR^<0~4qNLhc(I+fjn)X";
private static var _preloadAssets:Array = [];
private static var sharedObjects:Object = new Object();
private static var save_file = null;
public static function setMovieVersion(_arg1:String):void{
if (((_arg1) && (!((_arg1 == ""))))){
version = _arg1;
};
}
public static function get preload():Boolean{
return (_preload);
}
public static function unlockMedal(_arg1:NewgroundsAPIMedal, _arg2:Boolean=false):void{
var _local3:Object;
sendMessage((("Attempting to unlock '" + _arg1.name) + "'"));
if (_arg1.unlocked){
sendWarning((("Medal '" + _arg1.name) + "' is already unlocked!"));
return;
};
_local3 = new Object();
_local3.medal_id = _arg1.id;
if (_arg2){
_local3.get_score = _arg2;
};
sendSecureCommand("unlockMedal", _local3);
}
public static function set preload(_arg1:Boolean):void{
_preload = _arg1;
}
private static function getHost():String{
return (host);
}
private static function uncompressHex(_arg1:String):String{
var _local2:uint;
var _local3:String;
var _local4:uint;
var _local5:uint;
var _local6:String;
var _local7:uint;
var _local8:String;
_local2 = uint(_arg1.charAt(0));
_local3 = "";
_local5 = 1;
while (_local5 < _arg1.length) {
_local6 = _arg1.substr(_local5, 4);
_local7 = uint(compressor.decode(_local6));
_local8 = _local7.toString(16);
if ((_local5 + 4) < _arg1.length){
_local4 = 6;
} else {
_local4 = _local2;
};
while (_local8.length < _local4) {
_local8 = ("0" + _local8);
};
_local3 = (_local3 + _local8);
_local5 = (_local5 + 4);
};
return (_local3);
}
public static function isFlashVersion(_arg1:uint, _arg2:uint=0, _arg3:uint=0, _arg4:uint=0):Boolean{
var _local6:Array;
var _local7:Array;
var _local8:uint;
_local6 = Capabilities.version.split(" ")[1].split(",");
_local7 = arguments;
_local8 = 0;
while (_local8 < _local7.length) {
_local6[_local8] = uint(_local6[_local8]);
_local8++;
};
_local8 = 0;
while (_local8 < _local7.length) {
if (_local6[_local8] > _local7[_local8]){
return (true);
};
if (_local6[_local8] < _local7[_local8]){
return (false);
};
_local8++;
};
return (true);
}
public static function getMedalByName(_arg1:String):NewgroundsAPIMedal{
var _local2:NewgroundsAPIMedal;
for each (_local2 in _medals) {
if (_local2.name == _arg1){
return (_local2);
};
};
return (null);
}
public static function hasUserEmail():Boolean{
return (((!((user_email == null))) && (!((user_email == "")))));
}
public static function loadLocal(_arg1:String){
var _local2:SharedObject;
if (!sharedObjects[_arg1]){
sharedObjects[_arg1] = SharedObject.getLocal(((("ng_ap_secure_" + movie_id) + "_") + _arg1));
};
_local2 = sharedObjects[_arg1];
_local2.flush();
if (_local2.data[_arg1]){
return (decodeData(sharedObjects.data[_arg1]));
};
return (null);
}
public static function getYesterdaysScores(_arg1:String, _arg2:Object):void{
getScores(_arg1, "y", _arg2, "getYesterdaysScores");
}
private static function callListener(_arg1:String, _arg2:Boolean=true, _arg3=undefined):void{
dispatchEvent(new NewgroundsAPIEvent(_arg1, _arg2, _arg3));
}
public static function sendSecureCommand(_arg1:String, _arg2:Object, _arg3:Object=null, _arg4:Object=null):void{
var _local5:String;
var _local6:uint;
var _local7:String;
var _local8:String;
var _local9:String;
if (((((!(debug)) && (!(hasUserSession())))) && (!(hasUserEmail())))){
sendError({command_id:getCommandID(_arg1)}, new NewgroundsAPIError("IDENTIFICATION_REQUIRED", (("You must be logged in or provide an e-mail address ( using NewgroundsAPI.setUserEmail(\"name@domain.com\"); ) to use " + _arg1) + "().")));
return;
};
if (!_arg1){
fatalError("Missing command", "sendSecureCommand");
};
if (!_arg2){
fatalError("Missing secure_params", "sendSecureCommand");
};
if (!_arg3){
_arg3 = new Object();
};
_local5 = "";
_local6 = 0;
while (_local6 < 16) {
_local5 = (_local5 + compression_radix.charAt(Math.floor((Math.random() * compression_radix.length))));
_local6++;
};
if (debug){
_arg2.session_id = "";
} else {
_arg2.session_id = session_id;
};
_arg2.as_version = 3;
_arg2.user_email = user_email;
_arg2.publisher_id = publisher_id;
_arg2.seed = _local5;
_arg2.command_id = getCommandID(_arg1);
_local7 = MD5.hash(_local5);
_local8 = RC4.encrypt(JSON.encode(_arg2), encryption_key);
_local9 = (_local7 + _local8);
_arg3.secure = compressHex(_local9);
sendCommand("securePacket", _arg3, false, _arg4);
}
private static function echo(_arg1:String):void{
if (do_echo){
trace(_arg1);
};
}
public static function getThisMonthsScores(_arg1:String, _arg2:Object):void{
getScores(_arg1, "m", _arg2, "getThisMonthsScores");
}
public static function getScores(_arg1:String, _arg2:String, _arg3:Object=null, _arg4:String=null):void{
var _local5:String;
if (!_arg3){
_arg3 = new Object();
};
if (!hasUserSession()){
callListener(NewgroundsAPIEvent.SCORES_LOADED, false, new NewgroundsAPIError("SITE_ID_REQUIRED", (("Host '" + getHost()) + "' does not have high scores enabled")));
return;
};
_arg3.publisher_id = publisher_id;
_arg3.period = _arg2;
_arg3.score = _arg1;
if (_arg3.user_id){
_local5 = _arg2;
} else {
_local5 = (_arg2 + "-u");
};
if (score_page_counts[_local5] == undefined){
_arg3.request_page_count = true;
};
sendCommand("getScores", _arg3);
}
public static function createAd():NewgroundsAPIAd{
sendMessage("You may see a security sandbox violation. This is normal!");
return (new NewgroundsAPIAd(ad_url));
}
private static function dispatchEvent(_arg1:Event):void{
_eventDispatcher.dispatchEvent(_arg1);
echo(("Fired Event: " + _arg1.type));
}
private static function getCommandName(_arg1:String):String{
return (_arg1);
}
public static function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{
_eventDispatcher.removeEventListener(_arg1, _arg2, _arg3);
}
public static function getThisWeeksScores(_arg1:String, _arg2:Object):void{
getScores(_arg1, "w", _arg2, "getThisWeeksScores");
}
public static function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:uint=0, _arg5:Boolean=false):void{
_eventDispatcher.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5);
}
private static function getPeriodAliases():Object{
var _local1:Object;
var _local2:String;
_local1 = new Object();
for (_local2 in period_aliases) {
_local1[period_aliases[_local2].alias] = _local2;
};
return (_local1);
}
public static function setUserEmail(_arg1:String):void{
user_email = _arg1;
}
public static function hasUserSession():Boolean{
return (((((!((session_id == null))) && (!((session_id == ""))))) && (!((publisher_id == 0)))));
}
public static function get medals():Array{
return ((_medals) ? _medals.concat() : []);
}
public static function get bytesLoaded():uint{
var _local1:uint;
var _local2:*;
_local1 = root.loaderInfo.bytesLoaded;
if (_preload){
for each (_local2 in _preloadAssets) {
_local1 = (_local1 + _local2.bytesLoaded);
};
};
return (_local1);
}
private static function compressHex(_arg1:String):String{
var _local2:uint;
var _local3:String;
var _local4:uint;
_local2 = (_arg1.length % 6);
_local3 = "";
_local4 = 0;
while (_local4 < _arg1.length) {
_local3 = (_local3 + compressor.encode(uint(("0x" + _arg1.substr(_local4, 6))), 4));
_local4 = (_local4 + 6);
};
return ((_local2.toString() + _local3));
}
public static function connectMovie(_arg1:DisplayObject, _arg2:String, _arg3:String):void{
initialize(_arg1);
if (connected){
return;
};
timeoutTimer.start();
if (!_arg2){
fatalError("NewgroundsAPI.connectMovie() - missing required movie_id parameter", "connectMovie");
};
movie_id = String(_arg2);
tracker_id = uint(movie_id.substring(0, movie_id.indexOf(":")));
encryption_key = _arg3;
debug = !(isPublishedHost());
connected = true;
sendCommand("connectMovie", {host:getHost(), movie_version:version});
}
public static function checkFilePrivs(_arg1:String, _arg2:String):void{
var _local3:uint;
var _local4:Object;
if (user_id){
_local3 = user_id;
} else {
_local3 = 0;
};
_local4 = {folder:_arg1, filename:_arg2, user_id:_local3, publisher_id:publisher_id};
sendCommand("checkFilePrivs", _local4);
}
private static function sendMessage(_arg1:String, _arg2:Boolean=false):String{
var _local3:String;
_local3 = ("[NewgroundsAPI] :: " + _arg1);
if (_arg2){
return (_local3);
};
trace(_local3);
return (null);
}
private static function sendError(_arg1:Object, _arg2:NewgroundsAPIError):void{
trace(((((("[NewgroundsAPI ERROR] :: " + getCommandName(_arg1.command_id)) + "() - ") + _arg2.name) + ":\n\t\t\t\t") + _arg2.message));
}
private static function fatalError(_arg1:String, _arg2:String):void{
if (_arg2){
_arg1 = (_arg1 + ((("\n\tSee " + COMMANDS_WIKI_URL) + _arg2.toLowerCase()) + " for additional information."));
};
throw (new Error(("***ERROR*** class=NewgroundsAPI\n\n" + _arg1)));
}
public static function unlockMedalByName(_arg1:String, _arg2:Boolean=false):void{
var _local3:NewgroundsAPIMedal;
_local3 = getMedalByName(_arg1);
if (_local3){
unlockMedal(_local3, _arg2);
};
}
static function reportAssetFailed(_arg1):void{
var _local2:uint;
_local2 = 0;
while (_local2 < _preloadAssets.length) {
if (_arg1 == _preloadAssets[_local2]){
_preloadAssets.splice(_local2, 1);
return;
};
_local2++;
};
}
public static function connectionTimeOut(_arg1:Event=null):void{
dispatchEvent(new NewgroundsAPIEvent(NewgroundsAPIEvent.MOVIE_CONNECTED, false, new NewgroundsAPIError("CONNECTION_FAILED", "Connection to NewgroundsAPI gateway timed out.")));
}
static function reportNewAsset(_arg1):void{
_preloadAssets.push(_arg1);
}
public static function unlockMedalById(_arg1:uint, _arg2:Boolean=false):void{
var _local3:NewgroundsAPIMedal;
_local3 = getMedalById(_arg1);
if (_local3){
unlockMedal(_local3, _arg2);
};
}
public static function hasPublisher():Boolean{
return (!((publisher_id == 0)));
}
private static function sendNotice(_arg1:String, _arg2:String=null):void{
if (_arg2){
_arg1 = (_arg1 + ((("\n[NewgroundsAPI NOTICE] :: \tSee " + COMMANDS_WIKI_URL) + _arg2.toLowerCase()) + " for additional information."));
};
trace(("[NewgroundsAPI NOTICE] :: " + _arg1));
}
public static function initialize(_arg1:DisplayObject):void{
var _local2:Object;
if (_initialized){
return;
};
_initialized = true;
NewgroundsAPI.root = _arg1;
timeoutTimer = new Timer(8000, 1);
if (_arg1.loaderInfo){
_local2 = _arg1.loaderInfo.parameters;
host = _arg1.loaderInfo.url;
};
if (_local2){
if (_local2.NewgroundsAPI_UserName){
user_name = _local2.NewgroundsAPI_UserName;
};
if (_local2.NewgroundsAPI_UserID){
user_id = _local2.NewgroundsAPI_UserID;
};
if (_local2.NewgroundsAPI_PublisherID){
publisher_id = _local2.NewgroundsAPI_PublisherID;
};
if (_local2.NewgroundsAPI_SessionID){
session_id = _local2.NewgroundsAPI_SessionID;
};
} else {
publisher_id = 1;
session_id = null;
user_id = 0;
user_name = "Guest";
};
if ((((host.indexOf("http://") > -1)) || ((host.indexOf("https://") > -1)))){
host = host.split("/")[2].toLowerCase();
} else {
host = "localhost";
};
}
public static function get debugMode():Boolean{
return (debug);
}
public static function getTodaysScores(_arg1:String, _arg2:Object):void{
getScores(_arg1, "t", _arg2, "getTodaysScores");
}
public static function get bytesTotal():uint{
var _local1:uint;
var _local2:*;
_local1 = root.loaderInfo.bytesTotal;
if (_preload){
for each (_local2 in _preloadAssets) {
_local1 = (_local1 + Math.max(_local2.bytesTotal, 1));
};
};
return (_local1);
}
public static function loadCustomLink(_arg1:String):void{
sendCommand("loadCustomLink", {host:getHost(), link:_arg1}, true);
}
public static function get percentLoaded():Number{
return ((bytesLoaded / bytesTotal));
}
public static function isPublishedHost():Boolean{
var _local1:String;
for each (_local1 in PREVIEW_HOSTS) {
if (getHost() == _local1){
return (false);
};
};
return (true);
}
public static function loadMySite():void{
sendCommand("loadMySite", {host:getHost()});
}
public static function getMedalById(_arg1:uint):NewgroundsAPIMedal{
var _local2:NewgroundsAPIMedal;
for each (_local2 in _medals) {
if (_local2.id == _arg1){
return (_local2);
};
};
return (null);
}
private static function loaderHandler(_arg1:Event):void{
var _local2:URLLoader;
var _local3:uint;
var _local4:Object;
var _local5:NewgroundsAPIError;
_local2 = URLLoader(_arg1.target);
echo((("INPUT: \n" + _local2.data) + "\n"));
_local3 = 0;
while (_local3 < loaders.length) {
if (loaders[_local3] == _local2){
loaders.splice(_local3, 1);
break;
};
_local3++;
};
_local3 = 0;
while (_local3 < _preloadAssets.length) {
if (_preloadAssets[_local3] == _local2){
_preloadAssets.splice(_local3, 1);
break;
};
_local3++;
};
if (_local2.data){
_local4 = JSON.decode(_local2.data);
} else {
_local4 = {success:false};
};
if (!_local4.success){
_local5 = new NewgroundsAPIError(_local4.error_code, _local4.error_msg);
sendError(_local4, _local5);
} else {
doEvent(_local4);
};
}
public static function getOfficialVersionURL():String{
var _local1:String;
_local1 = ((((((GATEWAY_URL + "?tracker_id=") + movie_id) + "&command_id=") + getCommandID("loadOfficalVersion")) + "&seed=") + Math.random());
if (debug){
_local1 = (_local1 + "&debug=1");
};
return (_local1);
}
public static function loadNewgrounds():void{
sendCommand("loadNewgrounds", {host:getHost()}, true);
}
public static function saveFile(_arg1:String, _arg2:String, _arg3:Object, _arg4):void{
}
public static function decodeData(_arg1:String){
return (JSON.decode(RC4.decrypt(uncompressHex(_arg1), encryption_key)));
}
public static function getFiles(_arg1:String, _arg2:Object):void{
}
public static function logCustomEvent(_arg1:String):void{
sendCommand("logCustomEvent", {host:getHost(), event:_arg1});
}
private static function sendCommand(_arg1:String, _arg2:Object, _arg3:Boolean=false, _arg4:Object=null):void{
var _local5:URLVariables;
var _local6:String;
var _local7:URLRequest;
var _local8:String;
var _local9:Array;
var _local10:String;
var _local11:URLLoader;
if (((!(connected)) && (!((_arg1 == "connectMovie"))))){
_local8 = (("NewgroundsAPI." + _arg1) + "() - NewgroundsAPI.connectMovie() must be called before this command can be called\n");
fatalError(_local8, "connectMovie");
};
_local5 = new URLVariables();
_local5.command_id = getCommandID(_arg1);
_local5.tracker_id = movie_id;
if (debug){
_local5.debug = debug;
};
if ((((_arg1 == "connectMovie")) && (preload))){
_local5.preload = 1;
};
if (_arg2){
for (_local6 in _arg2) {
_local5[_local6] = _arg2[_local6];
};
};
if (_arg4){
for (_local6 in _arg4) {
_local5[_local6] = _arg4[_local6];
};
};
echo((("OUTPUT: \n" + JSON.encode(_local5)) + "\n"));
_local7 = new URLRequest((((GATEWAY_URL + "?seed=") + Math.random()) + "&"));
_local7.data = _local5;
if (_arg3){
_local7.method = URLRequestMethod.GET;
_local7.data = _local5;
navigateToURL(_local7, "_blank");
} else {
_local9 = new Array();
for (_local10 in _local5) {
_local9.push(((_local10 + "=") + escape(_local5[_local10])));
};
echo(((("POST " + GATEWAY_URL) + "?") + _local9.join("&")));
_local7.method = URLRequestMethod.POST;
_local11 = new URLLoader();
_local11.addEventListener(Event.COMPLETE, loaderHandler);
_local11.addEventListener(IOErrorEvent.IO_ERROR, loaderErrorHandler);
loaders.push(_local11);
_local11.load(_local7);
if ((((_arg1 == "connectMovie")) && (preload))){
reportNewAsset(_local11);
};
trace(_local7.data);
};
}
public static function postScore(_arg1:String, _arg2:Number, _arg3:Boolean):void{
sendSecureCommand("postScore", {score:_arg1, value:_arg2, get_best:_arg3});
}
public static function finishFileSave(_arg1:String, _arg2:String, _arg3:String, _arg4:Boolean, _arg5, _arg6):void{
}
private static function loaderErrorHandler(_arg1:Event):void{
var _local2:URLLoader;
var _local3:uint;
_local2 = URLLoader(_arg1.target);
_local3 = 0;
while (_local3 < loaders.length) {
if (loaders[_local3] == _local2){
loaders.splice(_local3, 1);
break;
};
_local3++;
};
_local3 = 0;
while (_local3 < _preloadAssets.length) {
if (_preloadAssets[_local3] == _local2){
_preloadAssets.splice(_local3, 1);
break;
};
_local3++;
};
}
public static function encodeData(_arg1:Object):String{
return (compressHex(RC4.encrypt(JSON.encode(_arg1), encryption_key)));
}
public static function getThisYearsScores(_arg1:String, _arg2:Object):void{
getScores(_arg1, "y", _arg2, "getThisYearsScores");
}
private static function populateMedals(_arg1:Array):void{
var _local2:uint;
var _local3:Object;
if (_medals === null){
_medals = new Array();
_local2 = 0;
while (_local2 < _arg1.length) {
_local3 = _arg1[_local2];
_medals.push(NewgroundsAPIMedal.createFromObject(_local3));
_local2++;
};
};
}
private static function doEvent(_arg1:Object):void{
var _local2:String;
var _local3:Object;
var _local4:String;
var _local5:Boolean;
var _local6:String;
var _local7:NewgroundsAPIMedal;
switch (getCommandName(_arg1.command_id)){
case "connectMovie":
timeoutTimer.stop();
sendMessage("You have successfully connected to the Newgrounds API Gateway");
sendMessage((("Movie identified as \"" + _arg1.movie_name) + "\""));
callListener(NewgroundsAPIEvent.MOVIE_CONNECTED, _arg1.success, {movie_name:_arg1.movie_name});
_local5 = false;
if (_arg1.ad_status === -1){
_local2 = "This movie was not approved to run Flash Ads.";
sendWarning(_local2);
sendWarning((("visit " + AD_TERMS_URL) + " to view our approval guidelines"));
if (!_arg1.ad_url){
callListener(NewgroundsAPIEvent.ADS_APPROVED, false, new NewgroundsAPIError("FLASH_ADS_NOT_APPROVED", _local2));
} else {
_local5 = true;
};
} else {
if (_arg1.ad_status === 0){
_local2 = "Flash Ads are currently awaiting approval.";
sendNotice(_local2);
if (!_arg1.ad_url){
callListener(NewgroundsAPIEvent.ADS_APPROVED, false, new NewgroundsAPIError("FLASH_ADS_NOT_APPROVED", _local2));
} else {
_local5 = true;
};
};
};
if (_arg1.ad_url){
ad_url = unescape(_arg1.ad_url);
if (!_local5){
sendMessage("This movie has been approved to run Flash Ads!");
};
callListener(NewgroundsAPIEvent.ADS_APPROVED, true);
};
if (_arg1.deny_host){
_local2 = (getHost() + " does not have permission to run this movie!");
sendWarning(_local2);
sendWarning(("\tUpdate your API configuration to unblock " + getHost()));
callListener(NewgroundsAPIEvent.HOST_BLOCKED, true, {movie_url:unescape(_arg1.movie_url), redirect_url:getOfficialVersionURL()});
};
if (_arg1.movie_version){
sendWarning("According to your API Configuration, this version is out of date.");
if (version){
sendWarning(("\tThe this movie is version " + version));
};
sendWarning(("\tThe most current version is " + _arg1.movie_version));
callListener(NewgroundsAPIEvent.NEW_VERSION_AVAILABLE, true, {movie_version:_arg1.movie_version, movie_url:unescape(_arg1.movie_url), redirect_url:getOfficialVersionURL()});
};
if (_arg1.request_portal_url){
sendCommand("setPortalID", {portal_url:host});
};
if (_arg1.medals){
populateMedals(_arg1.medals);
};
break;
case "logCustomEvent":
if (_arg1.success){
sendMessage((("Event '" + _arg1.event) + "' was logged."));
};
callListener(NewgroundsAPIEvent.EVENT_LOGGED, _arg1.success, {event:_arg1.event});
break;
case "postScore":
if (_arg1.success){
_local4 = "User";
if (user_email){
_local4 = user_email;
} else {
if (user_name){
_local4 = user_name;
};
};
sendMessage((((((_local4 + " posted ") + _arg1.value) + " to '") + _arg1.score) + "'"));
_local3 = {score:_arg1.score, value:_arg1.value, username:_local4};
};
callListener(NewgroundsAPIEvent.SCORE_POSTED, _arg1.success, _local3);
break;
case "getScores":
if (_arg1.user_id){
_local6 = _arg1.period;
} else {
_local6 = (_arg1.period + "-u");
};
if (_arg1.total_pages){
score_page_counts[_local6] = _arg1.total_pages;
};
_local3.user_id = _arg1.user_id;
_local3.current_page = _arg1.current_page;
_local3.total_pages = score_page_counts[_local6];
_local3.scores = _arg1.scores;
_local3.period = getPeriodName(_arg1.period);
callListener(NewgroundsAPIEvent.SCORES_LOADED, _arg1.success, _local3);
break;
case "unlockMedal":
if (_medals){
_local7 = getMedalByName(_arg1.medal_name);
_local7.unlocked = true;
};
callListener(NewgroundsAPIEvent.MEDAL_UNLOCKED, _arg1.success, _local7);
break;
case "getMedals":
populateMedals(_arg1.medals);
callListener(NewgroundsAPIEvent.MEDALS_LOADED, _arg1.success, _local3);
break;
case "getFiles":
break;
case "getSystemFiles":
break;
case "saveFile":
save_file = null;
_local3 = {file_id:_arg1.file_id, filename:_arg1.filename, file_url:_arg1.file_url, thumbnail:_arg1.thumbnail, icon:_arg1.icon};
callListener(NewgroundsAPIEvent.FILE_SAVED, _arg1.success, _local3);
break;
case "checkFilePrivs":
if (save_file){
save_file.checkPrivs(_arg1);
} else {
_local3 = {filename:_arg1.filename, folder:_arg1.folder, can_read:_arg1.can_read, can_write:_arg1.can_write};
callListener(NewgroundsAPIEvent.FILE_PRIVS_LOADED, _arg1.success, _local3);
};
break;
};
}
public static function getPeriodAlias(_arg1:String):String{
var _local2:String;
for (_local2 in period_aliases) {
if (_local2 == _arg1){
return (period_aliases[_local2].alias);
};
};
return (null);
}
public static function loadMedals():void{
var _local1:Object;
if (_medals){
dispatchEvent(new NewgroundsAPIEvent(NewgroundsAPIEvent.MEDALS_LOADED, true, medals));
return;
};
_local1 = new Object();
if (hasUserSession()){
_local1.publisher_id = publisher_id;
_local1.user_id = user_id;
};
sendCommand("getMedals", _local1);
}
public static function saveLocal(_arg1:String, _arg2, _arg3:uint=0):void{
var _local4:SharedObject;
if (!sharedObjects[_arg1]){
sharedObjects[_arg1] = SharedObject.getLocal(((("ng_ap_secure_" + movie_id) + "_") + _arg1));
};
_local4 = sharedObjects[_arg1];
_local4.data[_arg1] = encodeData(_arg2);
_local4.flush();
}
private static function getCommandID(_arg1:String):String{
return (_arg1);
}
public static function getPeriodName(_arg1:String):String{
var _local2:String;
for (_local2 in period_aliases) {
if (_local2 == _arg1){
return (period_aliases[_local2].name);
};
};
return (null);
}
public static function hasEventListener(_arg1:String):Boolean{
return (_eventDispatcher.hasEventListener(_arg1));
}
public static function getAlltimeScores(_arg1:String, _arg2:Object):void{
getScores(_arg1, "a", _arg2, "getAlltimeScores");
}
private static function sendWarning(_arg1:String, _arg2:String=null):void{
if (_arg2){
_arg1 = (_arg1 + ((("\n[NewgroundsAPI WARNING] :: \tSee " + COMMANDS_WIKI_URL) + _arg2.toLowerCase()) + " for additional information."));
};
trace(("[NewgroundsAPI WARNING] :: " + _arg1));
}
public static function isNewgrounds():Boolean{
return ((((publisher_id == 1)) || ((getHost().toLowerCase().indexOf("ungrounded.net") > -1))));
}
}
}//package com.newgrounds
Section 14
//NewgroundsAPIAd (com.newgrounds.NewgroundsAPIAd)
package com.newgrounds {
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.system.*;
public class NewgroundsAPIAd extends Sprite {
private var _ad:Loader;
private var _adURLLoader:URLLoader;
private var _mask:Shape;
private static const REMOVED_FROM_STAGE:String = "removedFromStage";
private static var _currentAdUrl:URLRequest;
private static var _adResetTime:Number = 0;
public function NewgroundsAPIAd(_arg1:String){
var _local2:Shape;
super();
Security.allowDomain("http://server.cpmstar.com");
Security.allowDomain("http://www.cpmstar.com");
Security.allowDomain("https://server.cpmstar.com");
Security.allowDomain("https://www.cpmstar.com");
Security.allowInsecureDomain("http://server.cpmstar.com");
Security.allowInsecureDomain("http://www.cpmstar.com");
Security.allowInsecureDomain("https://server.cpmstar.com");
Security.allowInsecureDomain("https://www.cpmstar.com");
_local2 = new Shape();
_local2.graphics.beginFill(0);
_local2.graphics.moveTo(0, 0);
_local2.graphics.lineTo(300, 0);
_local2.graphics.lineTo(300, 250);
_local2.graphics.lineTo(0, 250);
_local2.graphics.lineTo(0, 0);
_local2.graphics.endFill();
_mask = new Shape();
_mask.graphics.beginFill(0);
_mask.graphics.moveTo(0, 0);
_mask.graphics.lineTo(300, 0);
_mask.graphics.lineTo(300, 250);
_mask.graphics.lineTo(0, 250);
_mask.graphics.lineTo(0, 0);
_mask.graphics.endFill();
addChild(_local2);
addChild(_mask);
_adURLLoader = new URLLoader();
_adURLLoader.addEventListener(Event.COMPLETE, adURLHandler);
_adURLLoader.addEventListener(IOErrorEvent.IO_ERROR, adErrorHandler);
if (((_arg1) && (hasAdElapsed))){
if (_arg1.indexOf("?") > -1){
_currentAdUrl = new URLRequest(((_arg1 + "&random=") + Math.random()));
} else {
_currentAdUrl = new URLRequest(((_arg1 + "?random=") + Math.random()));
};
};
if (_currentAdUrl){
_adURLLoader.load(_currentAdUrl);
} else {
trace("[NewgroundsAPI] :: No ad feed URL supplied to Newgrounds API ad!");
};
if (NewgroundsAPI.isFlashVersion(9, 0, 28)){
addEventListener(REMOVED_FROM_STAGE, removeAdHandler);
};
}
private function adLoadedHandler(_arg1:Event):void{
trace("[NewgroundsAPI] :: Ad loaded!");
dispatchEvent(new NewgroundsAPIEvent(NewgroundsAPIEvent.AD_ATTACHED, true));
}
private function get hasAdElapsed():Boolean{
var _local1:Date;
_local1 = new Date();
if (_local1.getTime() >= _adResetTime){
_adResetTime = (_local1.getTime() + ((1000 * 60) * 5));
return (true);
};
return (false);
}
private function adURLHandler(_arg1:Event):void{
var _local2:URLLoader;
_local2 = URLLoader(_arg1.target);
if (_local2.data){
loadAd(String(_local2.data));
} else {
dispatchEvent(new NewgroundsAPIEvent(NewgroundsAPIEvent.AD_ATTACHED, false, new NewgroundsAPIError("FLASH_ADS_NOT_APPROVED", "Unable to render ad")));
};
}
private function removeAdHandler(_arg1:Event):void{
removeAd();
}
private function adURLErrorHandler(_arg1:Event):void{
trace("[NewgroundsAPI] :: Unable to load ad feed!");
}
private function loadAd(_arg1:String):void{
if (_ad){
removeAd();
};
_ad = new Loader();
addChild(_ad);
_ad.mask = _mask;
_ad.addEventListener(Event.COMPLETE, adLoadedHandler);
_ad.addEventListener(IOErrorEvent.IO_ERROR, adErrorHandler);
_ad.load(new URLRequest(_arg1));
}
public function removeAd():void{
if (_adURLLoader){
try {
_adURLLoader.close();
} catch(e:Error) {
};
};
if (_ad){
trace("[NewgroundsAPI] :: Ad removed");
try {
_ad.close();
} catch(e:Error) {
};
try {
Object(_ad).unloadAndStop(true);
} catch(e:Error) {
_ad.unload();
};
if (_ad.parent){
_ad.parent.removeChild(_ad);
};
};
_ad = null;
}
private function adErrorHandler(_arg1:Event):void{
dispatchEvent(new NewgroundsAPIEvent(NewgroundsAPIEvent.AD_ATTACHED, false, new NewgroundsAPIError("FLASH_ADS_NOT_APPROVED", "Unable to render ad")));
removeAd();
}
}
}//package com.newgrounds
Section 15
//NewgroundsAPIError (com.newgrounds.NewgroundsAPIError)
package com.newgrounds {
import flash.utils.*;
public class NewgroundsAPIError {
public var message:String;
public var name:String;
public var code:Number;// = 0
public var alias:String;
private static const always_caps:Array = new Array("API", "URL", "ID");
public static const error_names:Object = init_names();
public static const aliases:Array = new Array("UNKNOWN_ERROR", "INVALID_API_ID", "MISSING_PARAM", "INVALID_STAT_ID", "INVALID_COMMAND_ID", "FLASH_ADS_NOT_APPROVED", "PERMISSION_DENIED", "IDENTIFICATION_REQUIRED", "INVALID_EMAIL_ADDRESS", "BANNED_USER", "SESSION_EXPIRED", "INVALID_SCORE", "INVALID_MEDAL", "INVALID_FOLDER", "FILE_NOT_FOUND", "SITE_ID_REQUIRED", "UPLOAD_IN_PROGRESS", "USER_CANCELLED", "CONFIRM_REQUEST", "CONNECTION_FAILED");
public static const error_codes:Object = init_codes();
public function NewgroundsAPIError(_arg1, _arg2:String){
code = 0;
super();
if ((_arg1 is String)){
_arg1 = error_codes[_arg1];
} else {
if (!(_arg1 is uint)){
_arg1 = 0;
};
};
trace(_arg1);
code = _arg1;
message = _arg2;
name = error_names[_arg1];
trace(name);
alias = aliases[_arg1];
}
public function isError():Boolean{
return (true);
}
private static function init_names():Array{
var _local1:Array;
var _local2:uint;
var _local3:Array;
var _local4:uint;
var _local5:String;
_local1 = new Array();
_local2 = 0;
while (_local2 < aliases.length) {
_local3 = aliases[_local2].toLowerCase().split("_");
_local4 = 0;
while (_local4 < _local3.length) {
_local3[_local4] = (_local3[_local4].substr(0, 1).toUpperCase() + _local3[_local4].substr(1, _local3[_local4].length));
for each (_local5 in always_caps) {
if (_local3[_local4].toUpperCase() == _local5){
_local3[_local4] = _local3[_local4].toUpperCase();
};
};
_local4++;
};
_local1[_local2] = _local3.join(" ");
_local2++;
};
return (_local1);
}
public static function init_codes():Dictionary{
var _local1:Dictionary;
var _local2:uint;
_local1 = new Dictionary();
_local2 = 0;
while (_local2 < aliases.length) {
_local1[aliases[_local2]] = _local2;
_local2++;
};
return (_local1);
}
}
}//package com.newgrounds
Section 16
//NewgroundsAPIEvent (com.newgrounds.NewgroundsAPIEvent)
package com.newgrounds {
import flash.events.*;
public class NewgroundsAPIEvent extends Event {
private var _success:Boolean;
private var _data;
private var _target;
public static const AD_ATTACHED:String = "adAttached";
public static const NEW_VERSION_AVAILABLE:String = "newVersionAvailable";
public static const FILE_SAVED:String = "fileSaved";
public static const ADS_APPROVED:String = "adsApproved";
public static const MEDALS_LOADED:String = "medalsLoaded";
public static const MEDAL_UNLOCKED:String = "medalUnlocked";
public static const EVENT_LOGGED:String = "eventLogged";
public static const SCORES_LOADED:String = "scoresLoaded";
public static const SCORE_POSTED:String = "scorePosted";
public static const HOST_BLOCKED:String = "hostBlocked";
public static const MOVIE_CONNECTED:String = "movieConnected";
public static const FILE_PRIVS_LOADED:String = "filePrivsLoaded";
public function NewgroundsAPIEvent(_arg1:String, _arg2:Boolean=true, _arg3=undefined){
super(_arg1);
_data = _arg3;
_success = _arg2;
}
public function get success():Boolean{
return (_success);
}
public function get data(){
return (_data);
}
}
}//package com.newgrounds
Section 17
//NewgroundsAPIMedal (com.newgrounds.NewgroundsAPIMedal)
package com.newgrounds {
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.system.*;
public class NewgroundsAPIMedal {
private var _unlocked:Boolean;// = false
private var _iconLoader:Loader;
private var _difficultyId:uint;
private var _icon:BitmapData;
private var _name:String;
private var _value:uint;
private var _iconUrl:URLRequest;
private var _id:uint;
private static const DIFFICULT_NAMES:Array = [null, "Easy", "Moderate", "Challenging", "Difficult", "Brutal"];
private static const DEFAULT_ICON:BitmapData = new BitmapData(40, 40, false, 0);
public function NewgroundsAPIMedal(_arg1:uint, _arg2:String, _arg3:uint, _arg4:uint, _arg5:Boolean, _arg6:String){
_unlocked = false;
_icon = DEFAULT_ICON;
super();
_id = _arg1;
_name = _arg2;
_value = _arg3;
_difficultyId = _arg4;
_unlocked = _arg5;
NewgroundsAPI.reportNewAsset(this);
_iconUrl = new URLRequest(_arg6);
_iconLoader = new Loader();
_iconLoader.contentLoaderInfo.addEventListener(Event.INIT, onIconLoaderInit);
_iconLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onIconLoaderError);
_iconLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onIconLoaderComplete);
_iconLoader.load(_iconUrl, new LoaderContext(true));
}
public function set unlocked(_arg1:Boolean):void{
_unlocked = _arg1;
}
public function get bytesLoaded():uint{
return ((_iconLoader) ? _iconLoader.contentLoaderInfo.bytesLoaded : 0);
}
public function get name():String{
return (_name);
}
private function onIconLoaderComplete(_arg1:Event):void{
var _local2:Bitmap;
trace((((("[NewgroundsAPI] :: Successfully loaded medal icon for " + name) + " (") + _iconUrl.url.split("/").pop()) + ")"));
_local2 = (_iconLoader.content as Bitmap);
_icon = _local2.bitmapData;
_iconLoader.unload();
_iconLoader = null;
}
public function get bytesTotal():uint{
return ((_iconLoader) ? _iconLoader.contentLoaderInfo.bytesTotal : 0);
}
public function get id():uint{
return (_id);
}
public function unlock():void{
if (!_unlocked){
NewgroundsAPI.unlockMedal(this);
};
}
private function onIconLoaderError(_arg1:IOErrorEvent):void{
trace((((("[NewgroundsAPI WARNING] :: Failed to load medal icon for " + name) + " (") + _iconUrl.url.split("/").pop()) + ")"));
_iconLoader.unload();
_iconLoader = null;
NewgroundsAPI.reportAssetFailed(this);
}
private function onIconLoaderInit(_arg1:Event):void{
trace((((("[NewgroundsAPI] :: Loading medal icon for " + name) + " (") + _iconUrl.url.split("/").pop()) + ")"));
}
public function get unlocked():Boolean{
return (_unlocked);
}
public function createIconBitmap():Bitmap{
return (new Bitmap(icon));
}
public function toString():String{
return ("");
}
public function get difficultyId():uint{
return (_difficultyId);
}
public function get value():uint{
return (_value);
}
public function get icon():BitmapData{
return (_icon);
}
public function get difficulty():String{
return (DIFFICULT_NAMES[_difficultyId]);
}
public static function createFromObject(_arg1:Object):NewgroundsAPIMedal{
return (new NewgroundsAPIMedal(_arg1.medal_id, _arg1.medal_name, _arg1.medal_value, _arg1.medal_difficulty, _arg1.medal_unlocked, _arg1.medal_icon));
}
}
}//package com.newgrounds
Section 18
//RC4 (com.newgrounds.RC4)
package com.newgrounds {
public class RC4 {
private static var mykey:Array = new Array(0xFF);
private static var sbox:Array = new Array(0xFF);
private static function charsToHex(_arg1:Array):String{
var _local2:String;
var _local3:Array;
var _local4:uint;
_local2 = new String("");
_local3 = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f");
_local4 = 0;
while (_local4 < _arg1.length) {
_local2 = (_local2 + (_local3[(_arg1[_local4] >> 4)] + _local3[(_arg1[_local4] & 15)]));
_local4++;
};
return (_local2);
}
public static function encrypt(_arg1:String, _arg2:String):String{
var _local3:Array;
var _local4:Array;
var _local5:Array;
_local3 = strToChars(_arg1);
_local4 = strToChars(_arg2);
_local5 = calculate(_local3, _local4);
return (charsToHex(_local5));
}
private static function hexToChars(_arg1:String):Array{
var _local2:Array;
var _local3:uint;
_local2 = new Array();
_local3 = ((_arg1.substr(0, 2))=="0x") ? 2 : 0;
while (_local3 < _arg1.length) {
_local2.push(parseInt(_arg1.substr(_local3, 2), 16));
_local3 = (_local3 + 2);
};
return (_local2);
}
public static function encryptbin(_arg1:String, _arg2:String):Array{
var _local3:Array;
var _local4:Array;
var _local5:Array;
_local3 = strToChars(_arg1);
_local4 = strToChars(_arg2);
_local5 = calculate(_local3, _local4);
return (_local5);
}
public static function decrypt(_arg1:String, _arg2:String):String{
var _local3:Array;
var _local4:Array;
var _local5:Array;
_local3 = hexToChars(_arg1);
_local4 = strToChars(_arg2);
_local5 = calculate(_local3, _local4);
return (charsToStr(_local5));
}
private static function strToChars(_arg1:String):Array{
var _local2:Array;
var _local3:uint;
_local2 = new Array();
_local3 = 0;
while (_local3 < _arg1.length) {
_local2.push(_arg1.charCodeAt(_local3));
_local3++;
};
return (_local2);
}
private static function calculate(_arg1:Array, _arg2:Array):Array{
var _local3:uint;
var _local4:uint;
var _local5:Array;
var _local6:uint;
var _local7:uint;
var _local8:uint;
var _local9:uint;
var _local10:uint;
initialize(_arg2);
_local3 = 0;
_local4 = 0;
_local5 = new Array();
_local9 = 0;
while (_local9 < _arg1.length) {
_local3 = ((_local3 + 1) % 0x0100);
_local4 = ((_local4 + sbox[_local3]) % 0x0100);
_local7 = sbox[_local3];
sbox[_local3] = sbox[_local4];
sbox[_local4] = _local7;
_local10 = ((sbox[_local3] + sbox[_local4]) % 0x0100);
_local6 = sbox[_local10];
_local8 = (_arg1[_local9] ^ _local6);
_local5.push(_local8);
_local9++;
};
return (_local5);
}
private static function initialize(_arg1:Array):void{
var _local2:uint;
var _local3:uint;
var _local4:uint;
var _local5:uint;
_local2 = 0;
_local4 = _arg1.length;
_local5 = 0;
while (_local5 <= 0xFF) {
mykey[_local5] = _arg1[(_local5 % _local4)];
sbox[_local5] = _local5;
_local5++;
};
_local5 = 0;
while (_local5 <= 0xFF) {
_local2 = (((_local2 + sbox[_local5]) + mykey[_local5]) % 0x0100);
_local3 = sbox[_local5];
sbox[_local5] = sbox[_local2];
sbox[_local2] = _local3;
_local5++;
};
}
private static function charsToStr(_arg1:Array):String{
var _local2:String;
var _local3:uint;
_local2 = new String("");
_local3 = 0;
while (_local3 < _arg1.length) {
_local2 = (_local2 + String.fromCharCode(_arg1[_local3]));
_local3++;
};
return (_local2);
}
}
}//package com.newgrounds
Section 19
//Action_6 (main_fla.Action_6)
package main_fla {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.net.*;
import flash.media.*;
import flash.text.*;
import flash.ui.*;
import flash.system.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.filters.*;
import flash.geom.*;
import flash.printing.*;
import flash.xml.*;
public dynamic class Action_6 extends MovieClip {
public function Action_6(){
addFrameScript(0, frame1);
}
public function onComplete(_arg1:Event):void{
MovieClip(parent).gotoAndPlay("loaded");
}
public function progressHandler(_arg1:ProgressEvent):void{
var _local2:int;
_local2 = Math.round(((_arg1.target.bytesLoaded / _arg1.target.bytesTotal) * 100));
MovieClip(parent).gotoAndStop(_local2);
}
function frame1(){
MovieClip(root).stop();
if (root.loaderInfo.bytesLoaded == root.loaderInfo.bytesTotal){
MovieClip(parent).gotoAndPlay("loaded");
};
root.loaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler);
root.loaderInfo.addEventListener(Event.COMPLETE, onComplete);
}
}
}//package main_fla
Section 20
//boomb_86 (main_fla.boomb_86)
package main_fla {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.net.*;
import flash.media.*;
import flash.text.*;
import flash.ui.*;
import flash.system.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.filters.*;
import flash.geom.*;
import flash.printing.*;
import flash.xml.*;
public dynamic class boomb_86 extends MovieClip {
public var ng_ad:MovieClip;
public function boomb_86(){
addFrameScript(0, frame1, 305, frame306);
}
function frame306(){
stop();
MovieClip(root).checkScore();
}
function frame1(){
MovieClip(root).winrar();
}
}
}//package main_fla
Section 21
//clip2_68 (main_fla.clip2_68)
package main_fla {
import flash.display.*;
public dynamic class clip2_68 extends MovieClip {
public function clip2_68(){
addFrameScript(247, frame248);
}
function frame248(){
MovieClip(root).play();
}
}
}//package main_fla
Section 22
//CloudSplode_92 (main_fla.CloudSplode_92)
package main_fla {
import flash.display.*;
public dynamic class CloudSplode_92 extends MovieClip {
public function CloudSplode_92(){
addFrameScript(7, frame8);
}
function frame8(){
stop();
}
}
}//package main_fla
Section 23
//Cutscene1_40 (main_fla.Cutscene1_40)
package main_fla {
import flash.display.*;
public dynamic class Cutscene1_40 extends MovieClip {
public function Cutscene1_40(){
addFrameScript(366, frame367);
}
function frame367(){
MovieClip(root).play();
}
}
}//package main_fla
Section 24
//dieomg_79 (main_fla.dieomg_79)
package main_fla {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.net.*;
import flash.media.*;
import flash.text.*;
import flash.ui.*;
import flash.system.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.filters.*;
import flash.geom.*;
import flash.printing.*;
import flash.xml.*;
public dynamic class dieomg_79 extends MovieClip {
public function dieomg_79(){
addFrameScript(31, frame32);
}
function frame32(){
stop();
MovieClip(root).scoreMC.gotoAndStop(2);
}
}
}//package main_fla
Section 25
//diezomg_84 (main_fla.diezomg_84)
package main_fla {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.net.*;
import flash.media.*;
import flash.text.*;
import flash.ui.*;
import flash.system.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.filters.*;
import flash.geom.*;
import flash.printing.*;
import flash.xml.*;
public dynamic class diezomg_84 extends MovieClip {
public function diezomg_84(){
addFrameScript(31, frame32);
}
function frame32(){
stop();
MovieClip(root).scoreMC.gotoAndStop(2);
}
}
}//package main_fla
Section 26
//FadeIn_35 (main_fla.FadeIn_35)
package main_fla {
import flash.display.*;
public dynamic class FadeIn_35 extends MovieClip {
public function FadeIn_35(){
addFrameScript(28, frame29);
}
function frame29(){
stop();
}
}
}//package main_fla
Section 27
//hero_53 (main_fla.hero_53)
package main_fla {
import flash.display.*;
public dynamic class hero_53 extends MovieClip {
public var jump:MovieClip;
public var flame:MovieClip;
public function hero_53(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package main_fla
Section 28
//Hero2_78 (main_fla.Hero2_78)
package main_fla {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.net.*;
import flash.media.*;
import flash.text.*;
import flash.ui.*;
import flash.system.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.filters.*;
import flash.geom.*;
import flash.printing.*;
import flash.xml.*;
public dynamic class Hero2_78 extends MovieClip {
public function Hero2_78(){
addFrameScript(0, frame1, 29, frame30);
}
function frame1(){
stop();
}
function frame30(){
this.lostGame = true;
}
}
}//package main_fla
Section 29
//HUD_59 (main_fla.HUD_59)
package main_fla {
import flash.display.*;
import flash.text.*;
public dynamic class HUD_59 extends MovieClip {
public var ng_ad:MovieClip;
public var score:TextField;
}
}//package main_fla
Section 30
//MainTimeline (main_fla.MainTimeline)
package main_fla {
import com.newgrounds.*;
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.net.*;
import flash.media.*;
import com.newgrounds.components.*;
import flash.text.*;
import flash.ui.*;
import flash.system.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.filters.*;
import flash.geom.*;
import flash.printing.*;
import flash.xml.*;
public dynamic class MainTimeline extends MovieClip {
public var keys:Array;
public var missiles:Array;
public var newgrounds:ContextMenuItem;
public var pauseMc:Pause;
public var startY;
public var retry_btn:SimpleButton;
public var ng_ad:MovieClip;
public var i:int;
public var medalTimer:Number;
public var score:Number;
public var play_button:SimpleButton;
public var cloudMc:cloud;
public var mDown:Boolean;
public var mySound:Russian_Techno;
public var fox:MovieClip;
public var clouds:Array;
public var API_Settings:Object;
public var hud:MovieClip;
public var credit:ContextMenuItem;
public var obj:Array;
public var pauseGame:Boolean;
public var bitmap:Bitmap;
public var sky:MovieClip;
public var soundVol:SoundTransform;
public var myChannel2:SoundChannel;
public var medal_popup:DefaultMedalPopup;
public var totalMissiles:Number;
public var yoop:ContextMenuItem;
public var bitmapData:BitmapData;
public var ground:MovieClip;
public var scrollOb:Object;
public var cloudDel:Boolean;
public var scoreMC:MovieClip;
public var kDown:Boolean;
public var myChannel:SoundChannel;
public var newgroundsAPIconnector:DefaultAPIConnector;
public var mySound1:Russian_Techno_8bit;
public var copyright:ContextMenuItem;
public var fm_menu:ContextMenu;
public var playmoregames:SimpleButton;
public var startClouds:Number;
public var allClouds:Number;
public var gameOver:Boolean;
public var skip_button:SimpleButton;
public var hero:MovieClip;
public function MainTimeline(){
addFrameScript(0, frame1, 1, frame2, 2, frame3, 3, frame4, 4, frame5, 5, frame6, 6, frame7, 7, frame8, 8, frame9);
}
public function loadHero(_arg1){
_arg1.xv = 0;
_arg1.yv = 0;
_arg1.health = 6;
_arg1.lostGame = false;
}
public function loop2(_arg1:Event):void{
pauseToggle2();
if (!pauseGame){
heroUpdate(hero);
hud.score.text = String(score);
sky.y = (sky.y - 10);
if (hero.hitTestObject(sky.win)){
stage.removeEventListener(Event.ENTER_FRAME, loop2);
gotoAndStop("winrar");
i = 0;
while (i < missiles.length) {
removeChild(missiles[i]);
i++;
};
};
i = 0;
while (i < missiles.length) {
missile(missiles[i]);
i++;
};
};
}
public function getPhysics(_arg1){
_arg1.xv = 0;
_arg1.yv = 0;
_arg1.jumpV = 24;
}
public function mouseD(_arg1:Event):void{
if (!mDown){
MouseDown();
};
}
public function skipEvent(_arg1:Event):void{
skip_button.removeEventListener(MouseEvent.CLICK, skipEvent);
play();
}
function frame3(){
stop();
myChannel = mySound.play(0, 9999);
myChannel2 = mySound1.play(0, 9999);
soundVol.volume = 0;
myChannel.soundTransform = soundVol;
soundVol.volume = 1;
myChannel2.soundTransform = soundVol;
skip_button.addEventListener(MouseEvent.CLICK, skipEvent);
}
function frame4(){
stop();
soundVol.volume = 1;
myChannel.soundTransform = soundVol;
soundVol.volume = 0;
myChannel2.soundTransform = soundVol;
medalTimer = 0;
fox.y = -(sky.height);
keys = new Array(0xFF);
obj = new Array(hero);
clouds = new Array();
scrollOb = hero;
bitmapData = new BitmapData(400, 500, true, 0);
bitmap = new Bitmap(bitmapData);
kDown = false;
pauseGame = false;
mDown = false;
score = 0;
startClouds = 3;
allClouds = (sky.height / 75);
startY = y;
gameOver = false;
cloudDel = false;
i = 0;
while (i < obj.length) {
getPhysics(obj[i]);
i++;
};
i = 0;
while (i < startClouds) {
getCloud(Math.round(((Math.random() * 400) + 50)), (y + Math.round(((Math.random() * 300) + 50))));
i++;
};
i = 0;
while (i < allClouds) {
getCloud(Math.round(((Math.random() * 400) + 50)), (y - Math.round((Math.random() * sky.height))));
i++;
};
i = 0;
while (i < keys.length) {
keys[i] = false;
i++;
};
stage.addEventListener(MouseEvent.CLICK, mouseD);
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyD);
stage.addEventListener(KeyboardEvent.KEY_UP, keyU);
stage.addEventListener(Event.ENTER_FRAME, loop);
}
function frame5(){
stop();
y = 0;
soundVol.volume = 0;
myChannel.soundTransform = soundVol;
soundVol.volume = 1;
myChannel2.soundTransform = soundVol;
skip_button.addEventListener(MouseEvent.CLICK, skipEvent);
medal_popup.y = 0;
}
public function checkScore(){
scoreMC.gotoAndStop(2);
if (score > 8999){
if (NewgroundsAPI.medals[2]){
NewgroundsAPI.medals[2].unlock();
};
};
}
function frame1(){
API_Settings = {movie_id:3256, enc_key:"e86010f46e9aab5c55d13b590942efef", movie_version:"1"};
newgroundsAPIconnector.initialize(API_Settings);
fm_menu = new ContextMenu();
copyright = new ContextMenuItem("Programming by Lochie.");
credit = new ContextMenuItem("Art by Zac.");
yoop = new ContextMenuItem("Music by WhirlGuy.");
newgrounds = new ContextMenuItem("Play more games at - Newgrounds.com!");
copyright.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, visit_lochie);
credit.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, visit_zac);
credit.separatorBefore = false;
yoop.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, visit_yoop);
newgrounds.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, visit_NG);
fm_menu.hideBuiltInItems();
fm_menu.customItems.push(copyright, credit, yoop, newgrounds);
this.contextMenu = fm_menu;
}
function frame7(){
removeChild(hud);
myChannel.stop();
myChannel2.stop();
retry_btn.addEventListener(MouseEvent.CLICK, retryEvent);
scoreMC.visible = false;
scoreMC.score.text = ("SCORE: " + String(score));
}
function frame9(){
myChannel.stop();
myChannel2.stop();
scoreMC.score.text = ("SCORE: " + String(score));
playmoregames.addEventListener(MouseEvent.CLICK, loadNGSite);
}
public function physics(_arg1){
if (mDown){
_arg1.jump.visible = false;
} else {
medalTimer++;
if (medalTimer == 300){
if (NewgroundsAPI.medals[0]){
NewgroundsAPI.medals[0].unlock();
};
};
_arg1.jump.visible = true;
};
_arg1.yv++;
_arg1.y = (_arg1.y + _arg1.yv);
_arg1.xv = (((mouseX - _arg1.x) * 0.1) + (_arg1.xv * 0.2));
_arg1.x = (_arg1.x + (_arg1.xv = (_arg1.xv * 0.96)));
_arg1.rotation = _arg1.xv;
while (ground.hitTestPoint(_arg1.x, _arg1.y, true)) {
_arg1.yv = 0;
_arg1.y--;
y = startY;
if (mDown == true){
i = 0;
while (i < clouds.length) {
removeChild(clouds[i]);
i++;
};
stage.removeEventListener(Event.ENTER_FRAME, loop);
stage.removeEventListener(KeyboardEvent.KEY_UP, keyU);
stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyD);
stage.removeEventListener(MouseEvent.CLICK, mouseD);
gotoAndStop("game1dead");
};
};
if (_arg1.yv < 0){
_arg1.flame.visible = mDown;
} else {
_arg1.flame.visible = false;
};
if (mDown){
if (_arg1.yv > 0){
frameChange(_arg1, 3);
} else {
frameChange(_arg1, 2);
};
} else {
frameChange(_arg1, 1);
};
if (fox.hitTestPoint(_arg1.x, _arg1.y, true)){
stage.removeEventListener(Event.ENTER_FRAME, loop);
stage.removeEventListener(KeyboardEvent.KEY_UP, keyU);
stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyD);
stage.removeEventListener(MouseEvent.CLICK, mouseD);
play();
};
}
public function getCloud(_arg1, _arg2){
var _local3:cloud;
_local3 = new cloud();
_local3.x = _arg1;
_local3.y = _arg2;
_local3.remove = false;
clouds.push(_local3);
frameChange(_local3, Math.round(((Math.random() * 2) + 1)));
addChild(_local3);
}
function frame8(){
myChannel.stop();
myChannel2.stop();
retry_btn.addEventListener(MouseEvent.CLICK, retryEvent2);
scoreMC.visible = false;
scoreMC.score.text = ("SCORE: " + String(score));
playmoregames.addEventListener(MouseEvent.CLICK, loadNGSite);
}
function frame2(){
stop();
myChannel = new SoundChannel();
myChannel2 = new SoundChannel();
soundVol = new SoundTransform();
mySound = new Russian_Techno();
mySound1 = new Russian_Techno_8bit();
play_button.addEventListener(MouseEvent.CLICK, playEvent);
playmoregames.addEventListener(MouseEvent.CLICK, loadNGSite);
}
function frame6(){
stop();
soundVol.volume = 1;
myChannel.soundTransform = soundVol;
soundVol.volume = 0;
myChannel2.soundTransform = soundVol;
missiles = new Array();
loadHero(hero);
totalMissiles = 4;
i = 0;
while (i < totalMissiles) {
getMissile();
i++;
};
bitmapData = new BitmapData(400, 500, true, 0);
bitmap = new Bitmap(bitmapData);
kDown = false;
pauseGame = false;
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyD);
stage.addEventListener(KeyboardEvent.KEY_UP, keyU);
stage.addEventListener(Event.ENTER_FRAME, loop2);
}
public function pauseToggle2():void{
if (keys[80]){
if (((!(pauseGame)) && (!(kDown)))){
pauseMc = new Pause();
stage.addChild(bitmap);
bitmapData.draw(stage);
stage.addChild(pauseMc);
pauseGame = true;
kDown = true;
soundVol.volume = 0;
myChannel.soundTransform = soundVol;
soundVol.volume = 1;
myChannel2.soundTransform = soundVol;
} else {
if (((pauseGame) && (!(kDown)))){
stage.removeChild(bitmap);
stage.removeChild(pauseMc);
pauseGame = false;
kDown = true;
soundVol.volume = 1;
myChannel.soundTransform = soundVol;
soundVol.volume = 0;
myChannel2.soundTransform = soundVol;
};
};
} else {
kDown = false;
};
}
public function loop(_arg1:Event):void{
pauseToggle();
if (!pauseGame){
i = 0;
while (i < obj.length) {
physics(obj[i]);
i++;
};
camera();
};
i = 0;
while (i < clouds.length) {
cloudUpdate(clouds[i], i);
i++;
};
}
public function MouseDown(){
hero.yv = -(hero.jumpV);
mDown = true;
}
public function winrar(){
scoreMC.gotoAndStop(1);
if (NewgroundsAPI.medals[1]){
NewgroundsAPI.medals[1].unlock();
};
}
public function retryEvent(_arg1:Event):void{
retry_btn.removeEventListener(MouseEvent.CLICK, retryEvent);
gotoAndStop(1);
}
public function pauseToggle():void{
if (keys[80]){
if (((!(pauseGame)) && (!(kDown)))){
pauseMc = new Pause();
stage.addChild(bitmap);
bitmapData.draw(stage);
stage.addChild(pauseMc);
pauseGame = true;
kDown = true;
soundVol.volume = 0;
myChannel.soundTransform = soundVol;
soundVol.volume = 1;
myChannel2.soundTransform = soundVol;
} else {
if (((pauseGame) && (!(kDown)))){
stage.removeChild(bitmap);
stage.removeChild(pauseMc);
pauseGame = false;
kDown = true;
soundVol.volume = 1;
myChannel.soundTransform = soundVol;
soundVol.volume = 0;
myChannel2.soundTransform = soundVol;
};
};
} else {
kDown = false;
};
}
public function getMissile(){
var _local1:Missile;
_local1 = new Missile();
reboot(_local1);
missiles.push(_local1);
addChild(_local1);
}
public function loadNGSite(_arg1:Event){
NewgroundsAPI.loadNewgrounds();
}
public function camera():void{
if (scrollOb.y < 250){
y = (-(scrollOb.y) + 250);
};
hud.y = -(y);
medal_popup.y = hud.y;
hud.parent.setChildIndex(hud, (hud.parent.numChildren - 1));
hud.score.text = String(score);
}
public function missile(_arg1){
if (((hero.hitTestPoint(_arg1.x, _arg1.y, true)) && (!((_arg1.currentFrame === 2))))){
score = (score - (100 + Math.round((Math.random() * 500))));
_arg1.gotoAndStop(2);
};
if (((hero.hitTestPoint(_arg1.p1.x, _arg1.p1.y, true)) && (!((_arg1.currentFrame === 2))))){
score = (score - (100 + Math.round((Math.random() * 500))));
_arg1.gotoAndStop(2);
};
_arg1.x = (_arg1.x + _arg1.xv);
_arg1.y = (_arg1.y - _arg1.yv);
if (_arg1.x < -10){
reboot(_arg1);
};
if (_arg1.x > 410){
reboot(_arg1);
};
if (_arg1.y < -50){
reboot(_arg1);
};
}
public function visit_NG(_arg1:Event){
var _local2:URLRequest;
_local2 = new URLRequest("http://ww.newgrounds.com/");
navigateToURL(_local2, "_parent");
}
public function lostGame(){
stage.removeEventListener(Event.ENTER_FRAME, loop2);
gotoAndStop("game2dead");
i = 0;
while (i < missiles.length) {
removeChild(missiles[i]);
i++;
};
}
public function visit_zac(_arg1:Event){
var _local2:URLRequest;
_local2 = new URLRequest("http://www.1227.com");
navigateToURL(_local2, "_parent");
}
public function heroUpdate(_arg1){
if (_arg1.lostGame == true){
lostGame();
};
if (score <= 0){
_arg1.play();
} else {
_arg1.yv = (((mouseY - _arg1.y) * 0.1) + (_arg1.yv * 0.2));
_arg1.xv = (((mouseX - _arg1.x) * 0.1) + (_arg1.xv * 0.2));
};
_arg1.y = (_arg1.y + (_arg1.yv = (_arg1.yv * 0.96)));
_arg1.x = (_arg1.x + (_arg1.xv = (_arg1.xv * 0.96)));
_arg1.rotation = -(_arg1.xv);
}
public function cloudUpdate(_arg1, _arg2){
if (cloudDel == true){
_arg1.remove = true;
};
if (y > (700 - _arg1.y)){
_arg1.remove = true;
};
if (_arg1.remove == true){
removeChild(clouds[_arg2]);
clouds.splice(_arg2, 1);
};
if (((((_arg1.hitTestPoint(scrollOb.x, scrollOb.y, true)) && ((_arg1.currentFrame < 4)))) && (mDown))){
score = (score + (100 + Math.round((Math.random() * 100))));
scrollOb.yv = -((scrollOb.jumpV + (Math.random() * 20)));
frameChange(_arg1, 5);
};
if (fox.hitTestObject(_arg1)){
_arg1.remove = true;
};
}
public function frameChange(_arg1:Object, _arg2:Number):void{
if (_arg1.currentFrame !== _arg2){
_arg1.gotoAndStop(_arg2);
};
}
public function retryEvent2(_arg1:Event):void{
retry_btn.removeEventListener(MouseEvent.CLICK, retryEvent2);
gotoAndStop(1);
}
public function reboot(_arg1){
_arg1.gotoAndStop(1);
_arg1.x = (Math.random() * 400);
_arg1.y = 500;
_arg1.xv = ((Math.random() * 2) - (Math.random() * 2));
_arg1.yv = ((Math.random() * 15) + 5);
_arg1.rotation = (-(Math.atan2(_arg1.yv, _arg1.xv)) / (Math.PI / 180));
}
public function keyD(_arg1:KeyboardEvent):void{
keys[_arg1.keyCode] = true;
}
public function playEvent(_arg1:Event):void{
play_button.removeEventListener(MouseEvent.CLICK, playEvent);
play();
}
public function visit_lochie(_arg1:Event){
var _local2:URLRequest;
_local2 = new URLRequest("http://night-mare.newgrounds.com");
navigateToURL(_local2, "_parent");
}
public function keyU(_arg1:KeyboardEvent):void{
keys[_arg1.keyCode] = false;
}
public function visit_yoop(_arg1:Event){
var _local2:URLRequest;
_local2 = new URLRequest("http://whirlguy.newgrounds.com");
navigateToURL(_local2, "_parent");
}
}
}//package main_fla
Section 31
//missile3_89 (main_fla.missile3_89)
package main_fla {
import flash.display.*;
public dynamic class missile3_89 extends MovieClip {
public function missile3_89(){
addFrameScript(23, frame24);
}
function frame24(){
stop();
}
}
}//package main_fla
Section 32
//MusicMC_39 (main_fla.MusicMC_39)
package main_fla {
import flash.display.*;
public dynamic class MusicMC_39 extends MovieClip {
public function MusicMC_39(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package main_fla
Section 33
//NewgroundsAPI_Ad_Unit_12 (main_fla.NewgroundsAPI_Ad_Unit_12)
package main_fla {
import com.newgrounds.*;
import flash.display.*;
public dynamic class NewgroundsAPI_Ad_Unit_12 extends MovieClip {
public var background:MovieClip;
public function NewgroundsAPI_Ad_Unit_12(){
addFrameScript(0, frame1);
}
function frame1(){
NewgroundsAPI.addEventListener(NewgroundsAPIEvent.ADS_APPROVED, onAdsApproved);
background.visible = false;
}
public function onAdsApproved(_arg1:NewgroundsAPIEvent):void{
addChild(NewgroundsAPI.createAd());
}
}
}//package main_fla
Section 34
//NG_AD_OBJECT_WITH_PRELOADER_3 (main_fla.NG_AD_OBJECT_WITH_PRELOADER_3)
package main_fla {
import flash.display.*;
public dynamic class NG_AD_OBJECT_WITH_PRELOADER_3 extends MovieClip {
public var poop:MovieClip;
public var ng_ad:MovieClip;
public var NG_Button:SimpleButton;
}
}//package main_fla
Section 35
//NG_TANK_10 (main_fla.NG_TANK_10)
package main_fla {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.net.*;
import flash.media.*;
import flash.text.*;
import flash.ui.*;
import flash.system.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.filters.*;
import flash.geom.*;
import flash.printing.*;
import flash.xml.*;
public dynamic class NG_TANK_10 extends MovieClip {
public var NG_Logo:SimpleButton;
public function NG_TANK_10(){
addFrameScript(0, frame1);
}
public function loadNGSite(_arg1:Event){
MovieClip(root).NewgroundsAPI.loadNewgrounds();
}
function frame1(){
NG_Logo.addEventListener(MouseEvent.CLICK, loadNGSite);
}
}
}//package main_fla
Section 36
//NG_TANKcopy_23 (main_fla.NG_TANKcopy_23)
package main_fla {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.net.*;
import flash.media.*;
import flash.text.*;
import flash.ui.*;
import flash.system.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.filters.*;
import flash.geom.*;
import flash.printing.*;
import flash.xml.*;
public dynamic class NG_TANKcopy_23 extends MovieClip {
public var NG_Logo:SimpleButton;
public function NG_TANKcopy_23(){
addFrameScript(0, frame1);
}
public function loadNGSite(_arg1:Event){
MovieClip(root).NewgroundsAPI.loadNewgrounds();
}
function frame1(){
NG_Logo.addEventListener(MouseEvent.CLICK, loadNGSite);
}
}
}//package main_fla
Section 37
//SCORELOL_83 (main_fla.SCORELOL_83)
package main_fla {
import flash.display.*;
import flash.text.*;
public dynamic class SCORELOL_83 extends MovieClip {
public var score:TextField;
public function SCORELOL_83(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package main_fla
Section 38
//Screenshots_26 (main_fla.Screenshots_26)
package main_fla {
import flash.display.*;
public dynamic class Screenshots_26 extends MovieClip {
public var bob:Number;
public function Screenshots_26(){
addFrameScript(0, frame1);
}
function frame1(){
bob = ((Math.random() * 5) + 1);
bob = Math.round(bob);
gotoAndStop(bob);
}
}
}//package main_fla
Section 39
//ShakeyHero_58 (main_fla.ShakeyHero_58)
package main_fla {
import flash.display.*;
public dynamic class ShakeyHero_58 extends MovieClip {
public function ShakeyHero_58(){
addFrameScript(105, frame106);
}
function frame106(){
gotoAndPlay(100);
}
}
}//package main_fla
Section 40
//skyart_50 (main_fla.skyart_50)
package main_fla {
import flash.display.*;
public dynamic class skyart_50 extends MovieClip {
public var win:MovieClip;
}
}//package main_fla
Section 41
//Symbol2_20 (main_fla.Symbol2_20)
package main_fla {
import flash.display.*;
public dynamic class Symbol2_20 extends MovieClip {
public function Symbol2_20(){
addFrameScript(6, frame7);
}
function frame7(){
stop();
}
}
}//package main_fla
Section 42
//Symbol5_48 (main_fla.Symbol5_48)
package main_fla {
import flash.display.*;
public dynamic class Symbol5_48 extends MovieClip {
public function Symbol5_48(){
addFrameScript(6, frame7);
}
function frame7(){
stop();
}
}
}//package main_fla
Section 43
//Symbol6_22 (main_fla.Symbol6_22)
package main_fla {
import flash.display.*;
public dynamic class Symbol6_22 extends MovieClip {
public function Symbol6_22(){
addFrameScript(6, frame7);
}
function frame7(){
stop();
}
}
}//package main_fla
Section 44
//X_LOAD_4 (main_fla.X_LOAD_4)
package main_fla {
import flash.display.*;
import flash.events.*;
public dynamic class X_LOAD_4 extends MovieClip {
public var NGButton:SimpleButton;
public function X_LOAD_4(){
addFrameScript(100, frame101, 150, frame151, 164, frame165);
}
function frame151(){
NGButton.addEventListener(MouseEvent.CLICK, PlayMovie);
}
function frame165(){
stop();
}
public function PlayMovie(_arg1:Event){
gotoAndStop("end");
MovieClip(root).play();
}
function frame101(){
play();
}
}
}//package main_fla
Section 45
//cloud (cloud)
package {
import flash.display.*;
public dynamic class cloud extends MovieClip {
public function cloud(){
addFrameScript(0, frame1, 3, frame4);
}
function frame1(){
stop();
}
function frame4(){
gotoAndStop(1);
}
}
}//package
Section 46
//Missile (Missile)
package {
import flash.display.*;
public dynamic class Missile extends MovieClip {
public var p1:MovieClip;
public function Missile(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 47
//Pause (Pause)
package {
import flash.display.*;
public dynamic class Pause extends MovieClip {
}
}//package
Section 48
//Russian_Techno (Russian_Techno)
package {
import flash.media.*;
public dynamic class Russian_Techno extends Sound {
}
}//package
Section 49
//Russian_Techno_8bit (Russian_Techno_8bit)
package {
import flash.media.*;
public dynamic class Russian_Techno_8bit extends Sound {
}
}//package