“use strict”; module.exports = (function(){ var AssertionError = (function() {

function AssertionError(a) {
    this.constructor$(a);
    this.message = a;
    this.name = "AssertionError";
}
AssertionError.prototype = new Error();
AssertionError.prototype.constructor = AssertionError;
AssertionError.prototype.constructor$ = Error;
return AssertionError;

})();

function getParams(args) {

var params = [];
for (var i = 0; i < args.length; ++i) params.push("arg" + i);
return params;

}

function nativeAssert(callName, args, expect) {

try {
    var params = getParams(args);
    var constructorArgs = params;
    constructorArgs.push("return " +
            callName + "("+ params.join(",") + ");");
    var fn = Function.apply(null, constructorArgs);
    return fn.apply(null, args);
} catch (e) {
    if (!(e instanceof SyntaxError)) {
        throw e;
    } else {
        return expect;
    }
}

}

return function assert(boolExpr, message) {

if (boolExpr === true) return;

if (typeof boolExpr === "string" &&
    boolExpr.charAt(0) === "%") {
    var nativeCallName = boolExpr;
    var $_len = arguments.length;var args = new Array(Math.max($_len - 2, 0)); for(var $_i = 2; $_i < $_len; ++$_i) {args[$_i - 2] = arguments[$_i];};
    if (nativeAssert(nativeCallName, args, message) === message) return;
    message = (nativeCallName + " !== " + message);
}

var ret = new AssertionError(message);
if (Error.captureStackTrace) {
    Error.captureStackTrace(ret, assert);
}
throw ret;

}; })();