Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@meteor-it/logger

Package Overview
Dependencies
Maintainers
2
Versions
51
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@meteor-it/logger - npm Package Compare versions

Comparing version 2.3.21 to 2.3.22

EnumLoggerActions.d.ts

7

index.d.ts

@@ -74,3 +74,3 @@ export declare enum LOGGER_ACTIONS {

setLogger(logger: typeof Logger): void;
write(data: any): void;
write(data: LoggerAction): void;
}

@@ -97,3 +97,2 @@ export default class Logger {

deentAll(): void;
isDebugging(): boolean;
log(...params: any[]): void;

@@ -108,4 +107,4 @@ info(...params: any[]): void;

static noReceiversWarned: boolean;
write(data: LoggerAction): void;
private static _write;
_write(data: LoggerAction): void;
private static __write;
private static resetRepeating;

@@ -112,0 +111,0 @@ private static isRepeating;

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const DEBUG = process.env.DEBUG || '';
var LOGGER_ACTIONS;

@@ -55,3 +54,3 @@ (function (LOGGER_ACTIONS) {

this.times[name] = new Date().getTime();
this.write({
this._write({
type: LOGGER_ACTIONS.TIME_START,

@@ -66,3 +65,3 @@ timeName: name

}
this.write({
this._write({
type: LOGGER_ACTIONS.TIME_END,

@@ -77,3 +76,3 @@ timeName: name,

this.identationTime.push(new Date().getTime());
this.write({
this._write({
type: LOGGER_ACTIONS.IDENT,

@@ -87,3 +86,3 @@ identName: name

}
this.write({
this._write({
type: LOGGER_ACTIONS.DEENT,

@@ -99,8 +98,5 @@ identName: this.identation.pop(),

}
isDebugging() {
return DEBUG === '*' || DEBUG.split(',').indexOf(this.name) !== -1;
}
// LOG
log(...params) {
this.write({
this._write({
type: LOGGER_ACTIONS.LOG,

@@ -112,3 +108,3 @@ line: params.shift(),

info(...params) {
this.write({
this._write({
type: LOGGER_ACTIONS.LOG,

@@ -121,3 +117,3 @@ line: params.shift(),

warning(...params) {
this.write({
this._write({
type: LOGGER_ACTIONS.WARNING,

@@ -129,3 +125,3 @@ line: params.shift(),

warn(...params) {
this.write({
this._write({
type: LOGGER_ACTIONS.WARNING,

@@ -137,3 +133,3 @@ line: params.shift(),

error(...params) {
this.write({
this._write({
type: LOGGER_ACTIONS.ERROR,

@@ -145,3 +141,3 @@ line: params.shift(),

err(...params) {
this.write({
this._write({
type: LOGGER_ACTIONS.ERROR,

@@ -156,8 +152,7 @@ line: params.shift(),

// return;
if (DEBUG === '*' || ~DEBUG.split(',').indexOf(this.name))
this.write({
type: LOGGER_ACTIONS.DEBUG,
line: params.shift(),
params: params
});
this._write({
type: LOGGER_ACTIONS.DEBUG,
line: params.shift(),
params: params
});
}

@@ -167,3 +162,3 @@ // Progress

if (progress === true) {
this.write({
this._write({
type: LOGGER_ACTIONS.PROGRESS_START,

@@ -174,3 +169,3 @@ name

else if (progress === false) {
this.write({
this._write({
type: LOGGER_ACTIONS.PROGRESS_END,

@@ -181,3 +176,3 @@ name

else {
this.write({
this._write({
type: LOGGER_ACTIONS.PROGRESS,

@@ -190,3 +185,3 @@ name,

}
write(data) {
_write(data) {
if (!data.time)

@@ -198,8 +193,8 @@ data.time = new Date().getTime();

data.identationLength = this.identation.length;
Logger._write(data);
Logger.__write(data);
}
static _write(what) {
static __write(what) {
if (Logger.receivers.length === 0) {
if (!Logger.noReceiversWarned) {
console._log('No receivers are defined for logger! See docs for info about this!');
console._log('No receivers are defined for logger!\nSee docs for @meteor-it/logger for more info!');
Logger.noReceiversWarned = true;

@@ -264,4 +259,4 @@ }

consoleLogger = new Logger('console');
consoleLogger.___write = consoleLogger.write;
consoleLogger.write = (data) => {
consoleLogger.___write = consoleLogger._write;
consoleLogger._write = (data) => {
if (typeof data.line === 'string' && OTHER_LOGGER_MARK.test(data.line)) {

@@ -282,2 +277,2 @@ data.name = data.line.match(OTHER_LOGGER_MARK)[1];

//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInhyZXN0L25vZGVfbW9kdWxlcy9AbWV0ZW9yLWl0L2xvZ2dlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztBQUV0QyxJQUFZLGNBWVg7QUFaRCxXQUFZLGNBQWM7SUFDekIscURBQUssQ0FBQTtJQUNMLHFEQUFLLENBQUE7SUFDTCxpREFBRyxDQUFBO0lBQ0gseURBQU8sQ0FBQTtJQUNQLHFEQUFLLENBQUE7SUFDTCxxREFBSyxDQUFBO0lBQ0wsK0RBQVUsQ0FBQTtJQUNWLDJEQUFRLENBQUE7SUFDUiwyREFBUSxDQUFBO0lBQ1IsdUVBQWMsQ0FBQTtJQUNkLG9FQUFZLENBQUE7QUFDYixDQUFDLEVBWlcsY0FBYyxHQUFkLHNCQUFjLEtBQWQsc0JBQWMsUUFZekI7QUFnRUQsTUFBTSxrQkFBa0IsR0FBRztJQUMxQixjQUFjLENBQUMsS0FBSztJQUNwQixjQUFjLENBQUMsS0FBSztJQUNwQixjQUFjLENBQUMsVUFBVTtJQUN6QixjQUFjLENBQUMsUUFBUTtJQUN2QixjQUFjLENBQUMsUUFBUTtJQUN2QixjQUFjLENBQUMsY0FBYztJQUM3QixjQUFjLENBQUMsWUFBWTtDQUMzQixDQUFDO0FBRUYsSUFBSSxhQUFvQixDQUFDO0FBQ3pCLElBQUksWUFBbUIsQ0FBQztBQUV4QixNQUFhLGFBQWE7SUFHekIsU0FBUyxDQUFDLE1BQW9CO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxLQUFLLENBQUMsSUFBUTtRQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztJQUM5QyxDQUFDO0NBQ0Q7QUFURCxzQ0FTQztBQUVELG9CQUFvQjtBQUNwQixNQUFxQixNQUFNO0lBZTFCLFlBQVksSUFBVztRQVB2QixlQUFVLEdBQVksRUFBRSxDQUFDO1FBQ3pCLG1CQUFjLEdBQVks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QUFDO0FBQzlDLENBQUMsQ0FBQTtBQUNELFlBQVksR0FBRyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQVdwQyxJQUFJLENBQUUsT0FBZSxDQUFDLGdCQUFnQixFQUFFO0lBQ3ZDLEtBQUssSUFBSSxNQUFNLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxFQUFFO1FBQ3JFLE9BQWUsQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUksT0FBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25ELE9BQWUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBVSxFQUFFLEVBQUUsQ0FBRSxhQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7S0FDNUY7SUFDRyxPQUFlLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0NBQzVDIiwiZmlsZSI6InhyZXN0L25vZGVfbW9kdWxlcy9AbWV0ZW9yLWl0L2xvZ2dlci9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IERFQlVHID0gcHJvY2Vzcy5lbnYuREVCVUcgfHwgJyc7XG5cbmV4cG9ydCBlbnVtIExPR0dFUl9BQ1RJT05TIHtcblx0SURFTlQsXG5cdERFRU5ULFxuXHRMT0csXG5cdFdBUk5JTkcsXG5cdEVSUk9SLFxuXHRERUJVRyxcblx0VElNRV9TVEFSVCxcblx0VElNRV9FTkQsXG5cdFBST0dSRVNTLFxuXHRQUk9HUkVTU19TVEFSVCxcblx0UFJPR1JFU1NfRU5EXG59XG5leHBvcnQgdHlwZSBDb21tb25Mb2dBY3Rpb248RT4gPSB7XG5cdHR5cGU6RSxcblx0cGFyYW1zOmFueVtdXG59XG4vKipcbiAqIE5vcm1hbCBsb2cgYWN0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIEluZm9Mb2dBY3Rpb24gPSBDb21tb25Mb2dBY3Rpb248TE9HR0VSX0FDVElPTlMuTE9HPlxuLyoqXG4gKiBTcGVjaWFsIGVmZmVjdDogTG9nZ2VkIGluIHN0ZGVyciBpbnN0ZWFkIG9mIHN0ZG91dFxuICovXG5leHBvcnQgdHlwZSBXYXJuaW5nTG9nQWN0aW9uID0gQ29tbW9uTG9nQWN0aW9uPExPR0dFUl9BQ1RJT05TLldBUk5JTkc+XG4vKipcbiAqIFNwZWNpYWwgZWZmZWN0OiBMb2dnZWQgaW4gc3RkZXJyIGluc3RlYWQgb2Ygc3Rkb3V0XG4gKi9cbmV4cG9ydCB0eXBlIEVycm9yTG9nQWN0aW9uID0gQ29tbW9uTG9nQWN0aW9uPExPR0dFUl9BQ1RJT05TLkVSUk9SPlxuLyoqXG4gKiBTcGVjaWFsIGVmZmVjdDogRGVidWcgbG9nIGFjdGlvbiB3aWxsbid0IGJlIGxvZ2dlZCwgaWYgbmFtZSBpc24ndCBzcGVjaWZpZWQgaW4gREVCVUcgZW52IHZhcmlhYmxlXG4gKi9cbmV4cG9ydCB0eXBlIERlYnVnTG9nQWN0aW9uID0gQ29tbW9uTG9nQWN0aW9uPExPR0dFUl9BQ1RJT05TLkRFQlVHPlxuZXhwb3J0IHR5cGUgSWRlbnRBY3Rpb24gPSB7XG5cdHR5cGU6TE9HR0VSX0FDVElPTlMuSURFTlQ7XG5cdGlkZW50TmFtZTpzdHJpbmc7XG59XG5leHBvcnQgdHlwZSBEZWVudEFjdGlvbiA9IHtcblx0dHlwZTpMT0dHRVJfQUNUSU9OUy5ERUVOVDtcblx0aWRlbnROYW1lOnN0cmluZztcblx0aWRlbnRUaW1lOm51bWJlcjtcbn1cbmV4cG9ydCB0eXBlIFRpbWVTdGFydEFjdGlvbiA9IHtcblx0dHlwZTpMT0dHRVJfQUNUSU9OUy5USU1FX1NUQVJUO1xuXHR0aW1lTmFtZTpzdHJpbmc7XG59XG5leHBvcnQgdHlwZSBUaW1lRW5kQWN0aW9uID0ge1xuXHR0eXBlOkxPR0dFUl9BQ1RJT05TLlRJTUVfRU5EO1xuXHR0aW1lTmFtZTpzdHJpbmc7XG5cdHRpbWVUaW1lOm51bWJlcjtcbn1cbmV4cG9ydCB0eXBlIFByb2dyZXNzU3RhcnRBY3Rpb24gPSB7XG5cdHR5cGU6TE9HR0VSX0FDVElPTlMuUFJPR1JFU1NfU1RBUlRcbn1cbmV4cG9ydCB0eXBlIFByb2dyZXNzRW5kQWN0aW9uID0ge1xuXHR0eXBlOkxPR0dFUl9BQ1RJT05TLlBST0dSRVNTX0VORFxufVxuZXhwb3J0IHR5cGUgUHJvZ3Jlc3NBY3Rpb24gPSB7XG5cdHR5cGU6TE9HR0VSX0FDVElPTlMuUFJPR1JFU1MsXG5cdGluZm86c3RyaW5nLFxuXHRwcm9ncmVzczpudW1iZXJcbn1cbmV4cG9ydCB0eXBlIExvZ2dlckFjdGlvbiA9IHtcblx0cmVwZWF0cz86bnVtYmVyLFxuXHRyZXBlYXRlZD86IGJvb2xlYW4sXG5cdG5hbWU/OnN0cmluZyxcblx0bGluZT86c3RyaW5nLFxuXHR0aW1lPzpudW1iZXIsXG5cdGlkZW50YXRpb25MZW5ndGg/Om51bWJlclxufSYoXG5cdElkZW50QWN0aW9ufERlZW50QWN0aW9ufFxuXHRJbmZvTG9nQWN0aW9ufFdhcm5pbmdMb2dBY3Rpb258RXJyb3JMb2dBY3Rpb258RGVidWdMb2dBY3Rpb258XG5cdFRpbWVTdGFydEFjdGlvbnxUaW1lRW5kQWN0aW9ufFxuXHRQcm9ncmVzc1N0YXJ0QWN0aW9ufFByb2dyZXNzRW5kQWN0aW9ufFByb2dyZXNzQWN0aW9uXG4pO1xuXG5jb25zdCBSRVBFQVRBQkxFX0FDVElPTlMgPSBbXG5cdExPR0dFUl9BQ1RJT05TLklERU5ULFxuXHRMT0dHRVJfQUNUSU9OUy5ERUVOVCxcblx0TE9HR0VSX0FDVElPTlMuVElNRV9TVEFSVCxcblx0TE9HR0VSX0FDVElPTlMuVElNRV9FTkQsXG5cdExPR0dFUl9BQ1RJT05TLlBST0dSRVNTLFxuXHRMT0dHRVJfQUNUSU9OUy5QUk9HUkVTU19TVEFSVCxcblx0TE9HR0VSX0FDVElPTlMuUFJPR1JFU1NfRU5EXG5dO1xuXG5sZXQgY29uc29sZUxvZ2dlcjpMb2dnZXI7XG5sZXQgbG9nZ2VyTG9nZ2VyOkxvZ2dlcjtcblxuZXhwb3J0IGNsYXNzIEJhc2ljUmVjZWl2ZXIge1xuXHRsb2dnZXI6dHlwZW9mIExvZ2dlcjtcblxuXHRzZXRMb2dnZXIobG9nZ2VyOnR5cGVvZiBMb2dnZXIpIHtcblx0XHR0aGlzLmxvZ2dlciA9IGxvZ2dlcjtcblx0fVxuXHR3cml0ZShkYXRhOmFueSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignd3JpdGUoKTogTm90IGltcGxlbWVudGVkIScpO1xuXHR9XG59XG5cbi8vIFRPRE86IExvZ2dlciBVVUlEXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnZXIge1xuXHRzdGF0aWMgbmFtZUxlbmd0aCA9IDEyO1xuXHRzdGF0aWMgcmVwZWF0Q291bnQ6bnVtYmVyO1xuXHRzdGF0aWMgbGFzdFByb3ZpZGVyOnN0cmluZztcblx0c3RhdGljIGxhc3RNZXNzYWdlOmFueTtcblx0c3RhdGljIGxhc3RUeXBlOkxPR0dFUl9BQ1RJT05TO1xuXHRzdGF0aWMgcmVjZWl2ZXJzOkJhc2ljUmVjZWl2ZXJbXSA9IFtdO1xuXHRuYW1lOnN0cmluZztcblx0aWRlbnRhdGlvbjpzdHJpbmdbXSA9IFtdO1xuXHRpZGVudGF0aW9uVGltZTpudW1iZXJbXSA9IFtdO1xuXHR0aW1lczp7W2tleTpzdHJpbmddOm51bWJlcn0gPSB7fTtcblxuXHRzdGF0aWMgc2V0TmFtZUxlbmd0aChsZW5ndGg6bnVtYmVyKSB7XG5cdFx0TG9nZ2VyLm5hbWVMZW5ndGggPSBsZW5ndGg7XG5cdH1cblx0Y29uc3RydWN0b3IobmFtZTpzdHJpbmcpIHtcblx0XHR0aGlzLm5hbWUgPSBuYW1lLnRvVXBwZXJDYXNlKCk7XG5cdH1cblx0dGltZVN0YXJ0KG5hbWU6c3RyaW5nKSB7XG5cdFx0aWYgKHRoaXMudGltZXNbbmFtZV0pIHtcblx0XHRcdGxvZ2dlckxvZ2dlci53YXJuKCd0aW1lU3RhcnQoJXMpIGNhbGxlZCAyIHRpbWVzIHdpdGggc2FtZSBuYW1lIScsIG5hbWUpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0aGlzLnRpbWVzW25hbWVdID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG5cdFx0dGhpcy53cml0ZSh7XG5cdFx0XHR0eXBlOiBMT0dHRVJfQUNUSU9OUy5USU1FX1NUQVJULFxuXHRcdFx0dGltZU5hbWU6IG5hbWVcblx0XHR9KTtcblx0fVxuXHR0aW1lRW5kKG5hbWU6c3RyaW5nKSB7XG5cdFx0aWYgKCF0aGlzLnRpbWVzW25hbWVdKSB7XG5cdFx0XHRsb2dnZXJMb2dnZXIud2FybigndGltZUVuZCglcykgY2FsbGVkIHdpdGggdW5rbm93biBuYW1lIScsIG5hbWUpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0aGlzLndyaXRlKHtcblx0XHRcdHR5cGU6IExPR0dFUl9BQ1RJT05TLlRJTUVfRU5ELFxuXHRcdFx0dGltZU5hbWU6IG5hbWUsXG5cdFx0XHR0aW1lVGltZTogbmV3IERhdGUoKS5nZXRUaW1lKCkgLSB0aGlzLnRpbWVzW25hbWVdXG5cdFx0fSk7XG5cdFx0ZGVsZXRlIHRoaXMudGltZXNbbmFtZV07XG5cdH1cblx0aWRlbnQobmFtZTpzdHJpbmcpIHtcblx0XHR0aGlzLmlkZW50YXRpb24ucHVzaChuYW1lKTtcblx0XHR0aGlzLmlkZW50YXRpb25UaW1lLnB1c2gobmV3IERhdGUoKS5nZXRUaW1lKCkpO1xuXHRcdHRoaXMud3JpdGUoe1xuXHRcdFx0dHlwZTogTE9HR0VSX0FDVElPTlMuSURFTlQsXG5cdFx0XHRpZGVudE5hbWU6IG5hbWVcblx0XHR9KTtcblx0fVxuXHRkZWVudCgpIHtcblx0XHRpZiAodGhpcy5pZGVudGF0aW9uLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0aGlzLndyaXRlKHtcblx0XHRcdHR5cGU6IExPR0dFUl9BQ1RJT05TLkRFRU5ULFxuXHRcdFx0aWRlbnROYW1lOiB0aGlzLmlkZW50YXRpb24ucG9wKCksXG5cdFx0XHRpZGVudFRpbWU6IG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gdGhpcy5pZGVudGF0aW9uVGltZS5wb3AoKVxuXHRcdH0pO1xuXHR9XG5cdGRlZW50QWxsKCkge1xuXHRcdHdoaWxlICh0aGlzLmlkZW50YXRpb24ubGVuZ3RoID4gMCkge1xuXHRcdFx0dGhpcy5kZWVudCgpO1xuXHRcdH1cblx0fVxuXHRpc0RlYnVnZ2luZygpOmJvb2xlYW57XG4gICAgICAgIHJldHVybiBERUJVRyA9PT0gJyonIHx8IERFQlVHLnNwbGl0KCcsJykuaW5kZXhPZih0aGlzLm5hbWUpIT09LTFcbiAgICB9XG5cblx0Ly8gTE9HXG5cdGxvZyguLi5wYXJhbXM6YW55W10pIHtcblx0XHR0aGlzLndyaXRlKHtcblx0XHRcdHR5cGU6IExPR0dFUl9BQ1RJT05TLkxPRyxcblx0XHRcdGxpbmU6IHBhcmFtcy5zaGlmdCgpLFxuXHRcdFx0cGFyYW1zOiBwYXJhbXNcblx0XHR9KTtcblx0fVxuXHRpbmZvKC4uLnBhcmFtczphbnlbXSkge1xuXHRcdHRoaXMud3JpdGUoe1xuXHRcdFx0dHlwZTogTE9HR0VSX0FDVElPTlMuTE9HLFxuXHRcdFx0bGluZTogcGFyYW1zLnNoaWZ0KCksXG5cdFx0XHRwYXJhbXM6IHBhcmFtc1xuXHRcdH0pO1xuXHR9XG5cdC8vIFdBUk5JTkdcblx0d2FybmluZyguLi5wYXJhbXM6YW55W10pIHtcblx0XHR0aGlzLndyaXRlKHtcblx0XHRcdHR5cGU6IExPR0dFUl9BQ1RJT05TLldBUk5JTkcsXG5cdFx0XHRsaW5lOiBwYXJhbXMuc2hpZnQoKSxcblx0XHRcdHBhcmFtczogcGFyYW1zXG5cdFx0fSk7XG5cdH1cblx0d2FybiguLi5wYXJhbXM6YW55W10pIHtcblx0XHR0aGlzLndyaXRlKHtcblx0XHRcdHR5cGU6IExPR0dFUl9BQ1RJT05TLldBUk5JTkcsXG5cdFx0XHRsaW5lOiBwYXJhbXMuc2hpZnQoKSxcblx0XHRcdHBhcmFtczogcGFyYW1zXG5cdFx0fSk7XG5cdH1cblx0ZXJyb3IoLi4ucGFyYW1zOmFueVtdKSB7XG5cdFx0dGhpcy53cml0ZSh7XG5cdFx0XHR0eXBlOiBMT0dHRVJfQUNUSU9OUy5FUlJPUixcblx0XHRcdGxpbmU6IHBhcmFtcy5zaGlmdCgpLFxuXHRcdFx0cGFyYW1zOiBwYXJhbXNcblx0XHR9KTtcblx0fVxuXHRlcnIoLi4ucGFyYW1zOmFueVtdKSB7XG5cdFx0dGhpcy53cml0ZSh7XG5cdFx0XHR0eXBlOiBMT0dHRVJfQUNUSU9OUy5FUlJPUixcblx0XHRcdGxpbmU6IHBhcmFtcy5zaGlmdCgpLFxuXHRcdFx0cGFyYW1zOiBwYXJhbXNcblx0XHR9KTtcblx0fVxuXHQvLyBERUJVR1xuXHRkZWJ1ZyguLi5wYXJhbXM6YW55W10pIHtcblx0XHQvL2lmKERFQlVHID09PSAnLScpXG5cdFx0Ly9cdHJldHVybjtcblx0XHRpZiAoREVCVUcgPT09ICcqJyB8fCB+REVCVUcuc3BsaXQoJywnKS5pbmRleE9mKHRoaXMubmFtZSkpXG5cdFx0XHR0aGlzLndyaXRlKHtcblx0XHRcdFx0dHlwZTogTE9HR0VSX0FDVElPTlMuREVCVUcsXG5cdFx0XHRcdGxpbmU6IHBhcmFtcy5zaGlmdCgpLFxuXHRcdFx0XHRwYXJhbXM6IHBhcmFtc1xuXHRcdFx0fSk7XG5cdH1cblx0Ly8gUHJvZ3Jlc3Ncblx0cHJvZ3Jlc3MobmFtZTpzdHJpbmcsIHByb2dyZXNzOiBib29sZWFuIHwgbnVtYmVyLCBpbmZvPzogc3RyaW5nKSB7XG5cdFx0aWYgKHByb2dyZXNzID09PSB0cnVlKSB7XG5cdFx0XHR0aGlzLndyaXRlKHtcblx0XHRcdFx0dHlwZTogTE9HR0VSX0FDVElPTlMuUFJPR1JFU1NfU1RBUlQsXG5cdFx0XHRcdG5hbWVcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSBpZiAocHJvZ3Jlc3MgPT09IGZhbHNlKSB7XG5cdFx0XHR0aGlzLndyaXRlKHtcblx0XHRcdFx0dHlwZTogTE9HR0VSX0FDVElPTlMuUFJPR1JFU1NfRU5ELFxuXHRcdFx0XHRuYW1lXG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy53cml0ZSh7XG5cdFx0XHRcdHR5cGU6IExPR0dFUl9BQ1RJT05TLlBST0dSRVNTLFxuXHRcdFx0XHRuYW1lLFxuXHRcdFx0XHRwcm9ncmVzcyxcblx0XHRcdFx0aW5mb1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cdHN0YXRpYyBub1JlY2VpdmVyc1dhcm5lZCA9IGZhbHNlO1xuXHR3cml0ZShkYXRhOkxvZ2dlckFjdGlvbikge1xuXHRcdGlmICghZGF0YS50aW1lKVxuXHRcdFx0ZGF0YS50aW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG5cdFx0aWYgKCFkYXRhLm5hbWUpXG5cdFx0XHRkYXRhLm5hbWUgPSB0aGlzLm5hbWU7XG5cdFx0aWYgKCFkYXRhLmlkZW50YXRpb25MZW5ndGgpXG5cdFx0XHRkYXRhLmlkZW50YXRpb25MZW5ndGggPSB0aGlzLmlkZW50YXRpb24ubGVuZ3RoO1xuXHRcdExvZ2dlci5fd3JpdGUoZGF0YSk7XG5cdH1cblx0cHJpdmF0ZSBzdGF0aWMgX3dyaXRlKHdoYXQ6TG9nZ2VyQWN0aW9uKSB7XG5cdFx0aWYgKExvZ2dlci5yZWNlaXZlcnMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRpZiAoIUxvZ2dlci5ub1JlY2VpdmVyc1dhcm5lZCkge1xuXHRcdFx0XHRjb25zb2xlLl9sb2coJ05vIHJlY2VpdmVycyBhcmUgZGVmaW5lZCBmb3IgbG9nZ2VyISBTZWUgZG9jcyBmb3IgaW5mbyBhYm91dCB0aGlzIScpO1xuXHRcdFx0XHRMb2dnZXIubm9SZWNlaXZlcnNXYXJuZWQgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0c3dpdGNoICh3aGF0LnR5cGUpIHtcblx0XHRcdFx0Y2FzZSBMT0dHRVJfQUNUSU9OUy5ERUJVRzpcblx0XHRcdFx0Y2FzZSBMT0dHRVJfQUNUSU9OUy5MT0c6XG5cdFx0XHRcdFx0Y29uc29sZS5fbG9nKHdoYXQubGluZSwgLi4ud2hhdC5wYXJhbXMpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIExPR0dFUl9BQ1RJT05TLkVSUk9SOlxuXHRcdFx0XHRcdGNvbnNvbGUuX2Vycm9yKHdoYXQubGluZSwgLi4ud2hhdC5wYXJhbXMpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIExPR0dFUl9BQ1RJT05TLldBUk5JTkc6XG5cdFx0XHRcdFx0Y29uc29sZS5fd2Fybih3aGF0LmxpbmUsIC4uLndoYXQucGFyYW1zKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRjb25zb2xlLl9sb2cod2hhdCk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGlmIChMb2dnZXIuaXNSZXBlYXRpbmcod2hhdC5uYW1lLCB3aGF0LmxpbmUsIHdoYXQudHlwZSkpXG5cdFx0XHRMb2dnZXIucmVwZWF0Q291bnQrKztcblx0XHRlbHNlXG5cdFx0XHRMb2dnZXIucmVzZXRSZXBlYXRpbmcod2hhdC5uYW1lLCB3aGF0LmxpbmUsIHdoYXQudHlwZSk7XG5cdFx0aWYgKFJFUEVBVEFCTEVfQUNUSU9OUy5pbmRleE9mKHdoYXQudHlwZSkgPT09IC0xKVxuXHRcdFx0d2hhdC5yZXBlYXRzID0gTG9nZ2VyLnJlcGVhdENvdW50O1xuXHRcdHdoYXQucmVwZWF0ZWQgPSB3aGF0LnJlcGVhdHMgJiYgd2hhdC5yZXBlYXRzID4gMDtcblx0XHRMb2dnZXIucmVjZWl2ZXJzLmZvckVhY2gocmVjZWl2ZXIgPT4gcmVjZWl2ZXIud3JpdGUod2hhdCkpO1xuXHR9XG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVzZXRSZXBlYXRpbmcocHJvdmlkZXI6c3RyaW5nLCBtZXNzYWdlOnN0cmluZywgdHlwZTpMT0dHRVJfQUNUSU9OUykge1xuXHRcdExvZ2dlci5sYXN0UHJvdmlkZXIgPSBwcm92aWRlcjtcblx0XHRMb2dnZXIubGFzdE1lc3NhZ2UgPSBtZXNzYWdlO1xuXHRcdExvZ2dlci5sYXN0VHlwZSA9IHR5cGU7XG5cdFx0TG9nZ2VyLnJlcGVhdENvdW50ID0gMDtcblx0fVxuICAgIHByaXZhdGUgc3RhdGljIGlzUmVwZWF0aW5nKHByb3ZpZGVyOnN0cmluZywgbWVzc2FnZTpzdHJpbmcsIHR5cGU6TE9HR0VSX0FDVElPTlMpIHtcblx0XHRyZXR1cm4gTG9nZ2VyLmxhc3RQcm92aWRlciA9PT0gcHJvdmlkZXIgJiYgTG9nZ2VyLmxhc3RNZXNzYWdlID09PSBtZXNzYWdlICYmIExvZ2dlci5sYXN0VHlwZSA9PT0gdHlwZTtcblx0fVxuXHRzdGF0aWMgYWRkUmVjZWl2ZXIocmVjZWl2ZXI6QmFzaWNSZWNlaXZlcikge1xuXHRcdGlmIChMb2dnZXIucmVjZWl2ZXJzLmxlbmd0aCA9PT0gNClcblx0XHRcdGxvZ2dlckxvZ2dlci53YXJuKCdQb3NzaWJsZSBtZW1vcnkgbGVhayBkZXRlY3RlZDogNCBvciBtb3JlIHJlY2VpdmVycyBhcmUgYWRkZWQuJyk7XG5cdFx0cmVjZWl2ZXIuc2V0TG9nZ2VyKExvZ2dlcik7XG5cdFx0TG9nZ2VyLnJlY2VpdmVycy5wdXNoKHJlY2VpdmVyKTtcblx0fVxuXHRzdGF0aWMgZnJvbShuYW1lOnN0cmluZ3xMb2dnZXIpOkxvZ2dlciB7XG5cdCAgICBpZihuYW1lIGluc3RhbmNlb2YgTG9nZ2VyKVxuXHRcdFx0cmV0dXJuIG5hbWU7XG5cdFx0Ly8gRnJvbSBsb2dnZXIgb2YgYW5vdGhlciB2ZXJzaW9uPyBTaG91bGQgYmUgYXZvaWRlZCBpbiBhbnkgd2F5XG5cdFx0aWYodHlwZW9mIG5hbWU9PT0nb2JqZWN0JyYmJ3RpbWVTdGFydCcgaW4gKG5hbWUgYXMgYW55KSlcblx0XHRcdHJldHVybiBuYW1lO1xuXHQgICAgcmV0dXJuIG5ldyBMb2dnZXIobmFtZSk7XG4gICAgfVxufVxuXG4vLyBDb25zb2xlIG1vbmtleS1wYXRjaGluZ1xuLy8gQW5kIG5hbWVkIGNvbnNvbGUgc3VwcG9ydFxuY29uc3QgT1RIRVJfTE9HR0VSX01BUksgID0gL15cXFsoW2EtekEtWl0rKVxcXS87XG5cbmNvbnNvbGVMb2dnZXIgPSBuZXcgTG9nZ2VyKCdjb25zb2xlJyk7XG4oY29uc29sZUxvZ2dlciBhcyBhbnkpLl9fX3dyaXRlID0gY29uc29sZUxvZ2dlci53cml0ZTtcbmNvbnNvbGVMb2dnZXIud3JpdGUgPSAoZGF0YTphbnkpPT57XG5cdGlmKHR5cGVvZiBkYXRhLmxpbmU9PT0nc3RyaW5nJyYmT1RIRVJfTE9HR0VSX01BUksudGVzdChkYXRhLmxpbmUpKXtcblx0XHRkYXRhLm5hbWUgPSBkYXRhLmxpbmUubWF0Y2goT1RIRVJfTE9HR0VSX01BUkspWzFdO1xuXHRcdGRhdGEubGluZSA9IGRhdGEubGluZS5yZXBsYWNlKE9USEVSX0xPR0dFUl9NQVJLLCcnKS50cmltU3RhcnQoKTtcblx0fVxuXHRyZXR1cm4gKGNvbnNvbGVMb2dnZXIgYXMgYW55KS5fX193cml0ZShkYXRhKTtcbn1cbmxvZ2dlckxvZ2dlciA9IG5ldyBMb2dnZXIoJ2xvZ2dlcicpO1xuZXhwb3J0IHR5cGUgbG9nRnVuYz0oLi4ucGFyYW1zOmFueVtdKT0+dW5kZWZpbmVkO1xuZGVjbGFyZSBnbG9iYWwge1xuICAgIGludGVyZmFjZSBDb25zb2xlIHtcbiAgICAgICAgX2xvZzpsb2dGdW5jO1xuICAgICAgICBfZXJyb3I6bG9nRnVuYztcbiAgICAgICAgX3dhcm46bG9nRnVuYztcbiAgICAgICAgX2Vycjpsb2dGdW5jO1xuICAgICAgICBfd2FybmluZzpsb2dGdW5jO1xuICAgIH1cbn1cbmlmICghKGNvbnNvbGUgYXMgYW55KS5fcGF0Y2hlZEJ5TG9nZ2VyKSB7XG5cdGZvciAobGV0IG1ldGhvZCBvZiBbJ2xvZycsICdlcnJvcicsICd3YXJuJywgJ2VycicsICd3YXJuaW5nJywgJ2luZm8nXSkge1xuXHRcdChjb25zb2xlIGFzIGFueSlbJ18nICsgbWV0aG9kXSA9IChjb25zb2xlIGFzIGFueSlbbWV0aG9kXTtcbiAgICAgICAgKGNvbnNvbGUgYXMgYW55KVttZXRob2RdID0gKC4uLmFyZ3M6YW55W10pID0+IChjb25zb2xlTG9nZ2VyIGFzIGFueSlbbWV0aG9kXSguLi5hcmdzKTtcblx0fVxuICAgIChjb25zb2xlIGFzIGFueSkuX3BhdGNoZWRCeUxvZ2dlciA9IHRydWU7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInhwcmVzcy9ub2RlX21vZHVsZXMvQG1ldGVvci1pdC9sb2dnZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxJQUFZLGNBWVg7QUFaRCxXQUFZLGNBQWM7SUFDekIscURBQUssQ0FBQTtJQUNMLHFEQUFLLENBQUE7SUFDTCxpREFBRyxDQUFBO0lBQ0gseURBQU8sQ0FBQTtJQUNQLHFEQUFLLENBQUE7SUFDTCxxREFBSyxDQUFBO0lBQ0wsK0RBQVUsQ0FBQTtJQUNWLDJEQUFRLENBQUE7SUFDUiwyREFBUSxDQUFBO0lBQ1IsdUVBQWMsQ0FBQTtJQUNkLG9FQUFZLENBQUE7QUFDYixDQUFDLEVBWlcsY0FBYyxHQUFkLHNCQUFjLEtBQWQsc0JBQWMsUUFZekI7QUFnRUQsTUFBTSxrQkFBa0IsR0FBRztJQUMxQixjQUFjLENBQUMsS0FBSztJQUNwQixjQUFjLENBQUMsS0FBSztJQUNwQixjQUFjLENBQUMsVUFBVTtJQUN6QixjQUFjLENBQUMsUUFBUTtJQUN2QixjQUFjLENBQUMsUUFBUTtJQUN2QixjQUFjLENBQUMsY0FBYztJQUM3QixjQUFjLENBQUMsWUFBWTtDQUMzQixDQUFDO0FBRUYsSUFBSSxhQUFxQixDQUFDO0FBQzFCLElBQUksWUFBb0IsQ0FBQztBQUV6QixNQUFhLGFBQWE7SUFHekIsU0FBUyxDQUFDLE1BQXFCO1FBQzlCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxLQUFLLENBQUMsSUFBa0I7UUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBQzlDLENBQUM7Q0FDRDtBQVRELHNDQVNDO0FBRUQsb0JBQW9CO0FBQ3BCLE1BQXFCLE1BQU07SUFlMUIsWUFBWSxJQUFZO1FBUHhCLGVBQVUsR0FBYSxFQUFFLENBQUM7UUFDMUIsbUJBQWMsR0FBYSxFQUFFLENBQUM7UUFDOUIsVUFBSyxHQUE4QixFQUFFLENBQUM7UUFNckMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUxELE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBYztRQUNsQyxNQUFNLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztJQUM1QixDQUFDO0lBSUQsU0FBUyxDQUFDLElBQVk7UUFDckIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3JCLFlBQVksQ0FBQyxJQUFJLENBQUMsOENBQThDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDeEUsT0FBTztTQUNQO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDWCxJQUFJLEVBQUUsY0FBYyxDQUFDLFVBQVU7WUFDL0IsUUFBUSxFQUFFLElBQUk7U0FDZCxDQUFDLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxDQUFDLElBQVk7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDdEIsWUFBWSxDQUFDLElBQUksQ0FBQyx1Q0FBdUMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNqRSxPQUFPO1NBQ1A7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ1gsSUFBSSxFQUFFLGNBQWMsQ0FBQyxRQUFRO1lBQzdCLFFBQVEsRUFBRSxJQUFJO1lBQ2QsUUFBUSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7U0FDakQsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFDRCxLQUFLLENBQUMsSUFBWTtRQUNqQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUNYLElBQUksRUFBRSxjQUFjLENBQUMsS0FBSztZQUMxQixTQUFTLEVBQUUsSUFBSTtTQUNmLENBQUMsQ0FBQztJQUNKLENBQUM7SUFDRCxLQUFLO1FBQ0osSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDakMsT0FBTztTQUNQO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUNYLElBQUksRUFBRSxjQUFjLENBQUMsS0FBSztZQUMxQixTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDaEMsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUU7U0FDM0QsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUNELFFBQVE7UUFDUCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNsQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDYjtJQUNGLENBQUM7SUFFRCxNQUFNO0lBQ04sR0FBRyxDQUFDLEdBQUcsTUFBYTtRQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ1gsSUFBSSxFQUFFLGNBQWMsQ0FBQyxHQUFHO1lBQ3hCLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFO1lBQ3BCLE1BQU0sRUFBRSxNQUFNO1NBQ2QsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUNELElBQUksQ0FBQyxHQUFHLE1BQWE7UUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUNYLElBQUksRUFBRSxjQUFjLENBQUMsR0FBRztZQUN4QixJQUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRTtZQUNwQixNQUFNLEVBQUUsTUFBTTtTQUNkLENBQUMsQ0FBQztJQUNKLENBQUM7SUFDRCxVQUFVO0lBQ1YsT0FBTyxDQUFDLEdBQUcsTUFBYTtRQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ1gsSUFBSSxFQUFFLGNBQWMsQ0FBQyxPQUFPO1lBQzVCLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFO1lBQ3BCLE1BQU0sRUFBRSxNQUFNO1NBQ2QsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUNELElBQUksQ0FBQyxHQUFHLE1BQWE7UUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUNYLElBQUksRUFBRSxjQUFjLENBQUMsT0FBTztZQUM1QixJQUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRTtZQUNwQixNQUFNLEVBQUUsTUFBTTtTQUNkLENBQUMsQ0FBQztJQUNKLENBQUM7SUFDRCxLQUFLLENBQUMsR0FBRyxNQUFhO1FBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDWCxJQUFJLEVBQUUsY0FBYyxDQUFDLEtBQUs7WUFDMUIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUU7WUFDcEIsTUFBTSxFQUFFLE1BQU07U0FDZCxDQUFDLENBQUM7SUFDSixDQUFDO0lBQ0QsR0FBRyxDQUFDLEdBQUcsTUFBYTtRQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ1gsSUFBSSxFQUFFLGNBQWMsQ0FBQyxLQUFLO1lBQzFCLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFO1lBQ3BCLE1BQU0sRUFBRSxNQUFNO1NBQ2QsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUNELFFBQVE7SUFDUixLQUFLLENBQUMsR0FBRyxNQUFhO1FBQ3JCLG1CQUFtQjtRQUNuQixVQUFVO1FBQ1YsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUNYLElBQUksRUFBRSxjQUFjLENBQUMsS0FBSztZQUMxQixJQUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRTtZQUNwQixNQUFNLEVBQUUsTUFBTTtTQUNkLENBQUMsQ0FBQztJQUNKLENBQUM7SUFDRCxXQUFXO0lBQ1gsUUFBUSxDQUFDLElBQVksRUFBRSxRQUEwQixFQUFFLElBQWE7UUFDL0QsSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUM7Z0JBQ1gsSUFBSSxFQUFFLGNBQWMsQ0FBQyxjQUFjO2dCQUNuQyxJQUFJO2FBQ0osQ0FBQyxDQUFDO1NBQ0g7YUFBTSxJQUFJLFFBQVEsS0FBSyxLQUFLLEVBQUU7WUFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQztnQkFDWCxJQUFJLEVBQUUsY0FBYyxDQUFDLFlBQVk7Z0JBQ2pDLElBQUk7YUFDSixDQUFDLENBQUM7U0FDSDthQUFNO1lBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQztnQkFDWCxJQUFJLEVBQUUsY0FBYyxDQUFDLFFBQVE7Z0JBQzdCLElBQUk7Z0JBQ0osUUFBUTtnQkFDUixJQUFJO2FBQ0osQ0FBQyxDQUFDO1NBQ0g7SUFDRixDQUFDO0lBRUQsTUFBTSxDQUFDLElBQWtCO1FBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUNiLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7WUFDYixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0I7WUFDekIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBQ2hELE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUNPLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBa0I7UUFDeEMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRTtnQkFDOUIsT0FBTyxDQUFDLElBQUksQ0FBQyxxRkFBcUYsQ0FBQyxDQUFDO2dCQUNwRyxNQUFNLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO2FBQ2hDO1lBQ0QsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNsQixLQUFLLGNBQWMsQ0FBQyxLQUFLLENBQUM7Z0JBQzFCLEtBQUssY0FBYyxDQUFDLEdBQUc7b0JBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDeEMsTUFBTTtnQkFDUCxLQUFLLGNBQWMsQ0FBQyxLQUFLO29CQUN4QixPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQzFDLE1BQU07Z0JBQ1AsS0FBSyxjQUFjLENBQUMsT0FBTztvQkFDMUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUN6QyxNQUFNO2dCQUNQO29CQUNDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDcEI7WUFDRCxPQUFPO1NBQ1A7UUFDRCxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDdEQsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDOztZQUVyQixNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEQsSUFBSSxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFDTyxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQWdCLEVBQUUsT0FBZSxFQUFFLElBQW9CO1FBQ3BGLE1BQU0sQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDO1FBQy9CLE1BQU0sQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDO1FBQzdCLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLE1BQU0sQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFDTyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQWdCLEVBQUUsT0FBZSxFQUFFLElBQW9CO1FBQ2pGLE9BQU8sTUFBTSxDQUFDLFlBQVksS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLFdBQVcsS0FBSyxPQUFPLElBQUksTUFBTSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUM7SUFDdkcsQ0FBQztJQUNELE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBdUI7UUFDekMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQ2hDLFlBQVksQ0FBQyxJQUFJLENBQUMsK0RBQStELENBQUMsQ0FBQztRQUNwRixRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNCLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQXFCO1FBQ2hDLElBQUksSUFBSSxZQUFZLE1BQU07WUFDekIsT0FBTyxJQUFJLENBQUM7UUFDYiwrREFBK0Q7UUFDL0QsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksV0FBVyxJQUFLLElBQVk7WUFDM0QsT0FBTyxJQUFJLENBQUM7UUFDYixPQUFPLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUM7O0FBMU1NLGlCQUFVLEdBQUcsRUFBRSxDQUFDO0FBS2hCLGdCQUFTLEdBQW9CLEVBQUUsQ0FBQztBQXNJaEMsd0JBQWlCLEdBQUcsS0FBSyxDQUFDO0FBNUlsQyx5QkE0TUM7QUFFRCwwQkFBMEI7QUFDMUIsNEJBQTRCO0FBQzVCLE1BQU0saUJBQWlCLEdBQUcsa0JBQWtCLENBQUM7QUFFN0MsYUFBYSxHQUFHLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3JDLGFBQXFCLENBQUMsUUFBUSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUM7QUFDdkQsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQVMsRUFBRSxFQUFFO0lBQ3BDLElBQUksT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3ZFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0tBQ2pFO0lBQ0QsT0FBUSxhQUFxQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM5QyxDQUFDLENBQUE7QUFDRCxZQUFZLEdBQUcsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7QUFXcEMsSUFBSSxDQUFFLE9BQWUsQ0FBQyxnQkFBZ0IsRUFBRTtJQUN2QyxLQUFLLElBQUksTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsRUFBRTtRQUNyRSxPQUFlLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFJLE9BQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6RCxPQUFlLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQVcsRUFBRSxFQUFFLENBQUUsYUFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0tBQ3ZGO0lBQ0EsT0FBZSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztDQUN6QyIsImZpbGUiOiJ4cHJlc3Mvbm9kZV9tb2R1bGVzL0BtZXRlb3ItaXQvbG9nZ2VyL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gTE9HR0VSX0FDVElPTlMge1xuXHRJREVOVCxcblx0REVFTlQsXG5cdExPRyxcblx0V0FSTklORyxcblx0RVJST1IsXG5cdERFQlVHLFxuXHRUSU1FX1NUQVJULFxuXHRUSU1FX0VORCxcblx0UFJPR1JFU1MsXG5cdFBST0dSRVNTX1NUQVJULFxuXHRQUk9HUkVTU19FTkRcbn1cbmV4cG9ydCB0eXBlIENvbW1vbkxvZ0FjdGlvbjxFPiA9IHtcblx0dHlwZTogRSxcblx0cGFyYW1zOiBhbnlbXVxufVxuLyoqXG4gKiBOb3JtYWwgbG9nIGFjdGlvblxuICovXG5leHBvcnQgdHlwZSBJbmZvTG9nQWN0aW9uID0gQ29tbW9uTG9nQWN0aW9uPExPR0dFUl9BQ1RJT05TLkxPRz5cbi8qKlxuICogU3BlY2lhbCBlZmZlY3Q6IExvZ2dlZCBpbiBzdGRlcnIgaW5zdGVhZCBvZiBzdGRvdXRcbiAqL1xuZXhwb3J0IHR5cGUgV2FybmluZ0xvZ0FjdGlvbiA9IENvbW1vbkxvZ0FjdGlvbjxMT0dHRVJfQUNUSU9OUy5XQVJOSU5HPlxuLyoqXG4gKiBTcGVjaWFsIGVmZmVjdDogTG9nZ2VkIGluIHN0ZGVyciBpbnN0ZWFkIG9mIHN0ZG91dFxuICovXG5leHBvcnQgdHlwZSBFcnJvckxvZ0FjdGlvbiA9IENvbW1vbkxvZ0FjdGlvbjxMT0dHRVJfQUNUSU9OUy5FUlJPUj5cbi8qKlxuICogU3BlY2lhbCBlZmZlY3Q6IERlYnVnIGxvZyBhY3Rpb24gd2lsbG4ndCBiZSBsb2dnZWQsIGlmIG5hbWUgaXNuJ3Qgc3BlY2lmaWVkIGluIERFQlVHIGVudiB2YXJpYWJsZVxuICovXG5leHBvcnQgdHlwZSBEZWJ1Z0xvZ0FjdGlvbiA9IENvbW1vbkxvZ0FjdGlvbjxMT0dHRVJfQUNUSU9OUy5ERUJVRz5cbmV4cG9ydCB0eXBlIElkZW50QWN0aW9uID0ge1xuXHR0eXBlOiBMT0dHRVJfQUNUSU9OUy5JREVOVDtcblx0aWRlbnROYW1lOiBzdHJpbmc7XG59XG5leHBvcnQgdHlwZSBEZWVudEFjdGlvbiA9IHtcblx0dHlwZTogTE9HR0VSX0FDVElPTlMuREVFTlQ7XG5cdGlkZW50TmFtZTogc3RyaW5nO1xuXHRpZGVudFRpbWU6IG51bWJlcjtcbn1cbmV4cG9ydCB0eXBlIFRpbWVTdGFydEFjdGlvbiA9IHtcblx0dHlwZTogTE9HR0VSX0FDVElPTlMuVElNRV9TVEFSVDtcblx0dGltZU5hbWU6IHN0cmluZztcbn1cbmV4cG9ydCB0eXBlIFRpbWVFbmRBY3Rpb24gPSB7XG5cdHR5cGU6IExPR0dFUl9BQ1RJT05TLlRJTUVfRU5EO1xuXHR0aW1lTmFtZTogc3RyaW5nO1xuXHR0aW1lVGltZTogbnVtYmVyO1xufVxuZXhwb3J0IHR5cGUgUHJvZ3Jlc3NTdGFydEFjdGlvbiA9IHtcblx0dHlwZTogTE9HR0VSX0FDVElPTlMuUFJPR1JFU1NfU1RBUlRcbn1cbmV4cG9ydCB0eXBlIFByb2dyZXNzRW5kQWN0aW9uID0ge1xuXHR0eXBlOiBMT0dHRVJfQUNUSU9OUy5QUk9HUkVTU19FTkRcbn1cbmV4cG9ydCB0eXBlIFByb2dyZXNzQWN0aW9uID0ge1xuXHR0eXBlOiBMT0dHRVJfQUNUSU9OUy5QUk9HUkVTUyxcblx0aW5mbzogc3RyaW5nLFxuXHRwcm9ncmVzczogbnVtYmVyXG59XG5leHBvcnQgdHlwZSBMb2dnZXJBY3Rpb24gPSB7XG5cdHJlcGVhdHM/OiBudW1iZXIsXG5cdHJlcGVhdGVkPzogYm9vbGVhbixcblx0bmFtZT86IHN0cmluZyxcblx0bGluZT86IHN0cmluZyxcblx0dGltZT86IG51bWJlcixcblx0aWRlbnRhdGlvbkxlbmd0aD86IG51bWJlclxufSAmIChcblx0XHRJZGVudEFjdGlvbiB8IERlZW50QWN0aW9uIHxcblx0XHRJbmZvTG9nQWN0aW9uIHwgV2FybmluZ0xvZ0FjdGlvbiB8IEVycm9yTG9nQWN0aW9uIHwgRGVidWdMb2dBY3Rpb24gfFxuXHRcdFRpbWVTdGFydEFjdGlvbiB8IFRpbWVFbmRBY3Rpb24gfFxuXHRcdFByb2dyZXNzU3RhcnRBY3Rpb24gfCBQcm9ncmVzc0VuZEFjdGlvbiB8IFByb2dyZXNzQWN0aW9uXG5cdCk7XG5cbmNvbnN0IFJFUEVBVEFCTEVfQUNUSU9OUyA9IFtcblx0TE9HR0VSX0FDVElPTlMuSURFTlQsXG5cdExPR0dFUl9BQ1RJT05TLkRFRU5ULFxuXHRMT0dHRVJfQUNUSU9OUy5USU1FX1NUQVJULFxuXHRMT0dHRVJfQUNUSU9OUy5USU1FX0VORCxcblx0TE9HR0VSX0FDVElPTlMuUFJPR1JFU1MsXG5cdExPR0dFUl9BQ1RJT05TLlBST0dSRVNTX1NUQVJULFxuXHRMT0dHRVJfQUNUSU9OUy5QUk9HUkVTU19FTkRcbl07XG5cbmxldCBjb25zb2xlTG9nZ2VyOiBMb2dnZXI7XG5sZXQgbG9nZ2VyTG9nZ2VyOiBMb2dnZXI7XG5cbmV4cG9ydCBjbGFzcyBCYXNpY1JlY2VpdmVyIHtcblx0bG9nZ2VyOiB0eXBlb2YgTG9nZ2VyO1xuXG5cdHNldExvZ2dlcihsb2dnZXI6IHR5cGVvZiBMb2dnZXIpIHtcblx0XHR0aGlzLmxvZ2dlciA9IGxvZ2dlcjtcblx0fVxuXHR3cml0ZShkYXRhOiBMb2dnZXJBY3Rpb24pIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ3dyaXRlKCk6IE5vdCBpbXBsZW1lbnRlZCEnKTtcblx0fVxufVxuXG4vLyBUT0RPOiBMb2dnZXIgVVVJRFxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2VyIHtcblx0c3RhdGljIG5hbWVMZW5ndGggPSAxMjtcblx0c3RhdGljIHJlcGVhdENvdW50OiBudW1iZXI7XG5cdHN0YXRpYyBsYXN0UHJvdmlkZXI6IHN0cmluZztcblx0c3RhdGljIGxhc3RNZXNzYWdlOiBhbnk7XG5cdHN0YXRpYyBsYXN0VHlwZTogTE9HR0VSX0FDVElPTlM7XG5cdHN0YXRpYyByZWNlaXZlcnM6IEJhc2ljUmVjZWl2ZXJbXSA9IFtdO1xuXHRuYW1lOiBzdHJpbmc7XG5cdGlkZW50YXRpb246IHN0cmluZ1tdID0gW107XG5cdGlkZW50YXRpb25UaW1lOiBudW1iZXJbXSA9IFtdO1xuXHR0aW1lczogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuXG5cdHN0YXRpYyBzZXROYW1lTGVuZ3RoKGxlbmd0aDogbnVtYmVyKSB7XG5cdFx0TG9nZ2VyLm5hbWVMZW5ndGggPSBsZW5ndGg7XG5cdH1cblx0Y29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG5cdFx0dGhpcy5uYW1lID0gbmFtZS50b1VwcGVyQ2FzZSgpO1xuXHR9XG5cdHRpbWVTdGFydChuYW1lOiBzdHJpbmcpIHtcblx0XHRpZiAodGhpcy50aW1lc1tuYW1lXSkge1xuXHRcdFx0bG9nZ2VyTG9nZ2VyLndhcm4oJ3RpbWVTdGFydCglcykgY2FsbGVkIDIgdGltZXMgd2l0aCBzYW1lIG5hbWUhJywgbmFtZSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRoaXMudGltZXNbbmFtZV0gPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcblx0XHR0aGlzLl93cml0ZSh7XG5cdFx0XHR0eXBlOiBMT0dHRVJfQUNUSU9OUy5USU1FX1NUQVJULFxuXHRcdFx0dGltZU5hbWU6IG5hbWVcblx0XHR9KTtcblx0fVxuXHR0aW1lRW5kKG5hbWU6IHN0cmluZykge1xuXHRcdGlmICghdGhpcy50aW1lc1tuYW1lXSkge1xuXHRcdFx0bG9nZ2VyTG9nZ2VyLndhcm4oJ3RpbWVFbmQoJXMpIGNhbGxlZCB3aXRoIHVua25vd24gbmFtZSEnLCBuYW1lKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0dGhpcy5fd3JpdGUoe1xuXHRcdFx0dHlwZTogTE9HR0VSX0FDVElPTlMuVElNRV9FTkQsXG5cdFx0XHR0aW1lTmFtZTogbmFtZSxcblx0XHRcdHRpbWVUaW1lOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHRoaXMudGltZXNbbmFtZV1cblx0XHR9KTtcblx0XHRkZWxldGUgdGhpcy50aW1lc1tuYW1lXTtcblx0fVxuXHRpZGVudChuYW1lOiBzdHJpbmcpIHtcblx0XHR0aGlzLmlkZW50YXRpb24ucHVzaChuYW1lKTtcblx0XHR0aGlzLmlkZW50YXRpb25UaW1lLnB1c2gobmV3IERhdGUoKS5nZXRUaW1lKCkpO1xuXHRcdHRoaXMuX3dyaXRlKHtcblx0XHRcdHR5cGU6IExPR0dFUl9BQ1RJT05TLklERU5ULFxuXHRcdFx0aWRlbnROYW1lOiBuYW1lXG5cdFx0fSk7XG5cdH1cblx0ZGVlbnQoKSB7XG5cdFx0aWYgKHRoaXMuaWRlbnRhdGlvbi5sZW5ndGggPT09IDApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0dGhpcy5fd3JpdGUoe1xuXHRcdFx0dHlwZTogTE9HR0VSX0FDVElPTlMuREVFTlQsXG5cdFx0XHRpZGVudE5hbWU6IHRoaXMuaWRlbnRhdGlvbi5wb3AoKSxcblx0XHRcdGlkZW50VGltZTogbmV3IERhdGUoKS5nZXRUaW1lKCkgLSB0aGlzLmlkZW50YXRpb25UaW1lLnBvcCgpXG5cdFx0fSk7XG5cdH1cblx0ZGVlbnRBbGwoKSB7XG5cdFx0d2hpbGUgKHRoaXMuaWRlbnRhdGlvbi5sZW5ndGggPiAwKSB7XG5cdFx0XHR0aGlzLmRlZW50KCk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gTE9HXG5cdGxvZyguLi5wYXJhbXM6IGFueVtdKSB7XG5cdFx0dGhpcy5fd3JpdGUoe1xuXHRcdFx0dHlwZTogTE9HR0VSX0FDVElPTlMuTE9HLFxuXHRcdFx0bGluZTogcGFyYW1zLnNoaWZ0KCksXG5cdFx0XHRwYXJhbXM6IHBhcmFtc1xuXHRcdH0pO1xuXHR9XG5cdGluZm8oLi4ucGFyYW1zOiBhbnlbXSkge1xuXHRcdHRoaXMuX3dyaXRlKHtcblx0XHRcdHR5cGU6IExPR0dFUl9BQ1RJT05TLkxPRyxcblx0XHRcdGxpbmU6IHBhcmFtcy5zaGlmdCgpLFxuXHRcdFx0cGFyYW1zOiBwYXJhbXNcblx0XHR9KTtcblx0fVxuXHQvLyBXQVJOSU5HXG5cdHdhcm5pbmcoLi4ucGFyYW1zOiBhbnlbXSkge1xuXHRcdHRoaXMuX3dyaXRlKHtcblx0XHRcdHR5cGU6IExPR0dFUl9BQ1RJT05TLldBUk5JTkcsXG5cdFx0XHRsaW5lOiBwYXJhbXMuc2hpZnQoKSxcblx0XHRcdHBhcmFtczogcGFyYW1zXG5cdFx0fSk7XG5cdH1cblx0d2FybiguLi5wYXJhbXM6IGFueVtdKSB7XG5cdFx0dGhpcy5fd3JpdGUoe1xuXHRcdFx0dHlwZTogTE9HR0VSX0FDVElPTlMuV0FSTklORyxcblx0XHRcdGxpbmU6IHBhcmFtcy5zaGlmdCgpLFxuXHRcdFx0cGFyYW1zOiBwYXJhbXNcblx0XHR9KTtcblx0fVxuXHRlcnJvciguLi5wYXJhbXM6IGFueVtdKSB7XG5cdFx0dGhpcy5fd3JpdGUoe1xuXHRcdFx0dHlwZTogTE9HR0VSX0FDVElPTlMuRVJST1IsXG5cdFx0XHRsaW5lOiBwYXJhbXMuc2hpZnQoKSxcblx0XHRcdHBhcmFtczogcGFyYW1zXG5cdFx0fSk7XG5cdH1cblx0ZXJyKC4uLnBhcmFtczogYW55W10pIHtcblx0XHR0aGlzLl93cml0ZSh7XG5cdFx0XHR0eXBlOiBMT0dHRVJfQUNUSU9OUy5FUlJPUixcblx0XHRcdGxpbmU6IHBhcmFtcy5zaGlmdCgpLFxuXHRcdFx0cGFyYW1zOiBwYXJhbXNcblx0XHR9KTtcblx0fVxuXHQvLyBERUJVR1xuXHRkZWJ1ZyguLi5wYXJhbXM6IGFueVtdKSB7XG5cdFx0Ly9pZihERUJVRyA9PT0gJy0nKVxuXHRcdC8vXHRyZXR1cm47XG5cdFx0dGhpcy5fd3JpdGUoe1xuXHRcdFx0dHlwZTogTE9HR0VSX0FDVElPTlMuREVCVUcsXG5cdFx0XHRsaW5lOiBwYXJhbXMuc2hpZnQoKSxcblx0XHRcdHBhcmFtczogcGFyYW1zXG5cdFx0fSk7XG5cdH1cblx0Ly8gUHJvZ3Jlc3Ncblx0cHJvZ3Jlc3MobmFtZTogc3RyaW5nLCBwcm9ncmVzczogYm9vbGVhbiB8IG51bWJlciwgaW5mbz86IHN0cmluZykge1xuXHRcdGlmIChwcm9ncmVzcyA9PT0gdHJ1ZSkge1xuXHRcdFx0dGhpcy5fd3JpdGUoe1xuXHRcdFx0XHR0eXBlOiBMT0dHRVJfQUNUSU9OUy5QUk9HUkVTU19TVEFSVCxcblx0XHRcdFx0bmFtZVxuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIGlmIChwcm9ncmVzcyA9PT0gZmFsc2UpIHtcblx0XHRcdHRoaXMuX3dyaXRlKHtcblx0XHRcdFx0dHlwZTogTE9HR0VSX0FDVElPTlMuUFJPR1JFU1NfRU5ELFxuXHRcdFx0XHRuYW1lXG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5fd3JpdGUoe1xuXHRcdFx0XHR0eXBlOiBMT0dHRVJfQUNUSU9OUy5QUk9HUkVTUyxcblx0XHRcdFx0bmFtZSxcblx0XHRcdFx0cHJvZ3Jlc3MsXG5cdFx0XHRcdGluZm9cblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXHRzdGF0aWMgbm9SZWNlaXZlcnNXYXJuZWQgPSBmYWxzZTtcblx0X3dyaXRlKGRhdGE6IExvZ2dlckFjdGlvbikge1xuXHRcdGlmICghZGF0YS50aW1lKVxuXHRcdFx0ZGF0YS50aW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG5cdFx0aWYgKCFkYXRhLm5hbWUpXG5cdFx0XHRkYXRhLm5hbWUgPSB0aGlzLm5hbWU7XG5cdFx0aWYgKCFkYXRhLmlkZW50YXRpb25MZW5ndGgpXG5cdFx0XHRkYXRhLmlkZW50YXRpb25MZW5ndGggPSB0aGlzLmlkZW50YXRpb24ubGVuZ3RoO1xuXHRcdExvZ2dlci5fX3dyaXRlKGRhdGEpO1xuXHR9XG5cdHByaXZhdGUgc3RhdGljIF9fd3JpdGUod2hhdDogTG9nZ2VyQWN0aW9uKSB7XG5cdFx0aWYgKExvZ2dlci5yZWNlaXZlcnMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRpZiAoIUxvZ2dlci5ub1JlY2VpdmVyc1dhcm5lZCkge1xuXHRcdFx0XHRjb25zb2xlLl9sb2coJ05vIHJlY2VpdmVycyBhcmUgZGVmaW5lZCBmb3IgbG9nZ2VyIVxcblNlZSBkb2NzIGZvciBAbWV0ZW9yLWl0L2xvZ2dlciBmb3IgbW9yZSBpbmZvIScpO1xuXHRcdFx0XHRMb2dnZXIubm9SZWNlaXZlcnNXYXJuZWQgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0c3dpdGNoICh3aGF0LnR5cGUpIHtcblx0XHRcdFx0Y2FzZSBMT0dHRVJfQUNUSU9OUy5ERUJVRzpcblx0XHRcdFx0Y2FzZSBMT0dHRVJfQUNUSU9OUy5MT0c6XG5cdFx0XHRcdFx0Y29uc29sZS5fbG9nKHdoYXQubGluZSwgLi4ud2hhdC5wYXJhbXMpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIExPR0dFUl9BQ1RJT05TLkVSUk9SOlxuXHRcdFx0XHRcdGNvbnNvbGUuX2Vycm9yKHdoYXQubGluZSwgLi4ud2hhdC5wYXJhbXMpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIExPR0dFUl9BQ1RJT05TLldBUk5JTkc6XG5cdFx0XHRcdFx0Y29uc29sZS5fd2Fybih3aGF0LmxpbmUsIC4uLndoYXQucGFyYW1zKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRjb25zb2xlLl9sb2cod2hhdCk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGlmIChMb2dnZXIuaXNSZXBlYXRpbmcod2hhdC5uYW1lLCB3aGF0LmxpbmUsIHdoYXQudHlwZSkpXG5cdFx0XHRMb2dnZXIucmVwZWF0Q291bnQrKztcblx0XHRlbHNlXG5cdFx0XHRMb2dnZXIucmVzZXRSZXBlYXRpbmcod2hhdC5uYW1lLCB3aGF0LmxpbmUsIHdoYXQudHlwZSk7XG5cdFx0aWYgKFJFUEVBVEFCTEVfQUNUSU9OUy5pbmRleE9mKHdoYXQudHlwZSkgPT09IC0xKVxuXHRcdFx0d2hhdC5yZXBlYXRzID0gTG9nZ2VyLnJlcGVhdENvdW50O1xuXHRcdHdoYXQucmVwZWF0ZWQgPSB3aGF0LnJlcGVhdHMgJiYgd2hhdC5yZXBlYXRzID4gMDtcblx0XHRMb2dnZXIucmVjZWl2ZXJzLmZvckVhY2gocmVjZWl2ZXIgPT4gcmVjZWl2ZXIud3JpdGUod2hhdCkpO1xuXHR9XG5cdHByaXZhdGUgc3RhdGljIHJlc2V0UmVwZWF0aW5nKHByb3ZpZGVyOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZywgdHlwZTogTE9HR0VSX0FDVElPTlMpIHtcblx0XHRMb2dnZXIubGFzdFByb3ZpZGVyID0gcHJvdmlkZXI7XG5cdFx0TG9nZ2VyLmxhc3RNZXNzYWdlID0gbWVzc2FnZTtcblx0XHRMb2dnZXIubGFzdFR5cGUgPSB0eXBlO1xuXHRcdExvZ2dlci5yZXBlYXRDb3VudCA9IDA7XG5cdH1cblx0cHJpdmF0ZSBzdGF0aWMgaXNSZXBlYXRpbmcocHJvdmlkZXI6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nLCB0eXBlOiBMT0dHRVJfQUNUSU9OUykge1xuXHRcdHJldHVybiBMb2dnZXIubGFzdFByb3ZpZGVyID09PSBwcm92aWRlciAmJiBMb2dnZXIubGFzdE1lc3NhZ2UgPT09IG1lc3NhZ2UgJiYgTG9nZ2VyLmxhc3RUeXBlID09PSB0eXBlO1xuXHR9XG5cdHN0YXRpYyBhZGRSZWNlaXZlcihyZWNlaXZlcjogQmFzaWNSZWNlaXZlcikge1xuXHRcdGlmIChMb2dnZXIucmVjZWl2ZXJzLmxlbmd0aCA9PT0gNClcblx0XHRcdGxvZ2dlckxvZ2dlci53YXJuKCdQb3NzaWJsZSBtZW1vcnkgbGVhayBkZXRlY3RlZDogNCBvciBtb3JlIHJlY2VpdmVycyBhcmUgYWRkZWQuJyk7XG5cdFx0cmVjZWl2ZXIuc2V0TG9nZ2VyKExvZ2dlcik7XG5cdFx0TG9nZ2VyLnJlY2VpdmVycy5wdXNoKHJlY2VpdmVyKTtcblx0fVxuXHRzdGF0aWMgZnJvbShuYW1lOiBzdHJpbmcgfCBMb2dnZXIpOiBMb2dnZXIge1xuXHRcdGlmIChuYW1lIGluc3RhbmNlb2YgTG9nZ2VyKVxuXHRcdFx0cmV0dXJuIG5hbWU7XG5cdFx0Ly8gRnJvbSBsb2dnZXIgb2YgYW5vdGhlciB2ZXJzaW9uPyBTaG91bGQgYmUgYXZvaWRlZCBpbiBhbnkgd2F5XG5cdFx0aWYgKHR5cGVvZiBuYW1lID09PSAnb2JqZWN0JyAmJiAndGltZVN0YXJ0JyBpbiAobmFtZSBhcyBhbnkpKVxuXHRcdFx0cmV0dXJuIG5hbWU7XG5cdFx0cmV0dXJuIG5ldyBMb2dnZXIobmFtZSk7XG5cdH1cbn1cblxuLy8gQ29uc29sZSBtb25rZXktcGF0Y2hpbmdcbi8vIEFuZCBuYW1lZCBjb25zb2xlIHN1cHBvcnRcbmNvbnN0IE9USEVSX0xPR0dFUl9NQVJLID0gL15cXFsoW2EtekEtWl0rKVxcXS87XG5cbmNvbnNvbGVMb2dnZXIgPSBuZXcgTG9nZ2VyKCdjb25zb2xlJyk7XG4oY29uc29sZUxvZ2dlciBhcyBhbnkpLl9fX3dyaXRlID0gY29uc29sZUxvZ2dlci5fd3JpdGU7XG5jb25zb2xlTG9nZ2VyLl93cml0ZSA9IChkYXRhOiBhbnkpID0+IHtcblx0aWYgKHR5cGVvZiBkYXRhLmxpbmUgPT09ICdzdHJpbmcnICYmIE9USEVSX0xPR0dFUl9NQVJLLnRlc3QoZGF0YS5saW5lKSkge1xuXHRcdGRhdGEubmFtZSA9IGRhdGEubGluZS5tYXRjaChPVEhFUl9MT0dHRVJfTUFSSylbMV07XG5cdFx0ZGF0YS5saW5lID0gZGF0YS5saW5lLnJlcGxhY2UoT1RIRVJfTE9HR0VSX01BUkssICcnKS50cmltU3RhcnQoKTtcblx0fVxuXHRyZXR1cm4gKGNvbnNvbGVMb2dnZXIgYXMgYW55KS5fX193cml0ZShkYXRhKTtcbn1cbmxvZ2dlckxvZ2dlciA9IG5ldyBMb2dnZXIoJ2xvZ2dlcicpO1xuZXhwb3J0IHR5cGUgbG9nRnVuYyA9ICguLi5wYXJhbXM6IGFueVtdKSA9PiB1bmRlZmluZWQ7XG5kZWNsYXJlIGdsb2JhbCB7XG5cdGludGVyZmFjZSBDb25zb2xlIHtcblx0XHRfbG9nOiBsb2dGdW5jO1xuXHRcdF9lcnJvcjogbG9nRnVuYztcblx0XHRfd2FybjogbG9nRnVuYztcblx0XHRfZXJyOiBsb2dGdW5jO1xuXHRcdF93YXJuaW5nOiBsb2dGdW5jO1xuXHR9XG59XG5pZiAoIShjb25zb2xlIGFzIGFueSkuX3BhdGNoZWRCeUxvZ2dlcikge1xuXHRmb3IgKGxldCBtZXRob2Qgb2YgWydsb2cnLCAnZXJyb3InLCAnd2FybicsICdlcnInLCAnd2FybmluZycsICdpbmZvJ10pIHtcblx0XHQoY29uc29sZSBhcyBhbnkpWydfJyArIG1ldGhvZF0gPSAoY29uc29sZSBhcyBhbnkpW21ldGhvZF07XG5cdFx0KGNvbnNvbGUgYXMgYW55KVttZXRob2RdID0gKC4uLmFyZ3M6IGFueVtdKSA9PiAoY29uc29sZUxvZ2dlciBhcyBhbnkpW21ldGhvZF0oLi4uYXJncyk7XG5cdH1cblx0KGNvbnNvbGUgYXMgYW55KS5fcGF0Y2hlZEJ5TG9nZ2VyID0gdHJ1ZTtcbn1cbiJdfQ==

@@ -1,3 +0,1 @@

const DEBUG = process.env.DEBUG || '';
export enum LOGGER_ACTIONS {

@@ -17,4 +15,4 @@ IDENT,

export type CommonLogAction<E> = {
type:E,
params:any[]
type: E,
params: any[]
}

@@ -38,43 +36,43 @@ /**

export type IdentAction = {
type:LOGGER_ACTIONS.IDENT;
identName:string;
type: LOGGER_ACTIONS.IDENT;
identName: string;
}
export type DeentAction = {
type:LOGGER_ACTIONS.DEENT;
identName:string;
identTime:number;
type: LOGGER_ACTIONS.DEENT;
identName: string;
identTime: number;
}
export type TimeStartAction = {
type:LOGGER_ACTIONS.TIME_START;
timeName:string;
type: LOGGER_ACTIONS.TIME_START;
timeName: string;
}
export type TimeEndAction = {
type:LOGGER_ACTIONS.TIME_END;
timeName:string;
timeTime:number;
type: LOGGER_ACTIONS.TIME_END;
timeName: string;
timeTime: number;
}
export type ProgressStartAction = {
type:LOGGER_ACTIONS.PROGRESS_START
type: LOGGER_ACTIONS.PROGRESS_START
}
export type ProgressEndAction = {
type:LOGGER_ACTIONS.PROGRESS_END
type: LOGGER_ACTIONS.PROGRESS_END
}
export type ProgressAction = {
type:LOGGER_ACTIONS.PROGRESS,
info:string,
progress:number
type: LOGGER_ACTIONS.PROGRESS,
info: string,
progress: number
}
export type LoggerAction = {
repeats?:number,
repeats?: number,
repeated?: boolean,
name?:string,
line?:string,
time?:number,
identationLength?:number
}&(
IdentAction|DeentAction|
InfoLogAction|WarningLogAction|ErrorLogAction|DebugLogAction|
TimeStartAction|TimeEndAction|
ProgressStartAction|ProgressEndAction|ProgressAction
);
name?: string,
line?: string,
time?: number,
identationLength?: number
} & (
IdentAction | DeentAction |
InfoLogAction | WarningLogAction | ErrorLogAction | DebugLogAction |
TimeStartAction | TimeEndAction |
ProgressStartAction | ProgressEndAction | ProgressAction
);

@@ -91,12 +89,12 @@ const REPEATABLE_ACTIONS = [

let consoleLogger:Logger;
let loggerLogger:Logger;
let consoleLogger: Logger;
let loggerLogger: Logger;
export class BasicReceiver {
logger:typeof Logger;
logger: typeof Logger;
setLogger(logger:typeof Logger) {
setLogger(logger: typeof Logger) {
this.logger = logger;
}
write(data:any) {
write(data: LoggerAction) {
throw new Error('write(): Not implemented!');

@@ -109,19 +107,19 @@ }

static nameLength = 12;
static repeatCount:number;
static lastProvider:string;
static lastMessage:any;
static lastType:LOGGER_ACTIONS;
static receivers:BasicReceiver[] = [];
name:string;
identation:string[] = [];
identationTime:number[] = [];
times:{[key:string]:number} = {};
static repeatCount: number;
static lastProvider: string;
static lastMessage: any;
static lastType: LOGGER_ACTIONS;
static receivers: BasicReceiver[] = [];
name: string;
identation: string[] = [];
identationTime: number[] = [];
times: { [key: string]: number } = {};
static setNameLength(length:number) {
static setNameLength(length: number) {
Logger.nameLength = length;
}
constructor(name:string) {
constructor(name: string) {
this.name = name.toUpperCase();
}
timeStart(name:string) {
timeStart(name: string) {
if (this.times[name]) {

@@ -132,3 +130,3 @@ loggerLogger.warn('timeStart(%s) called 2 times with same name!', name);

this.times[name] = new Date().getTime();
this.write({
this._write({
type: LOGGER_ACTIONS.TIME_START,

@@ -138,3 +136,3 @@ timeName: name

}
timeEnd(name:string) {
timeEnd(name: string) {
if (!this.times[name]) {

@@ -144,3 +142,3 @@ loggerLogger.warn('timeEnd(%s) called with unknown name!', name);

}
this.write({
this._write({
type: LOGGER_ACTIONS.TIME_END,

@@ -152,6 +150,6 @@ timeName: name,

}
ident(name:string) {
ident(name: string) {
this.identation.push(name);
this.identationTime.push(new Date().getTime());
this.write({
this._write({
type: LOGGER_ACTIONS.IDENT,

@@ -165,3 +163,3 @@ identName: name

}
this.write({
this._write({
type: LOGGER_ACTIONS.DEENT,

@@ -177,9 +175,6 @@ identName: this.identation.pop(),

}
isDebugging():boolean{
return DEBUG === '*' || DEBUG.split(',').indexOf(this.name)!==-1
}
// LOG
log(...params:any[]) {
this.write({
log(...params: any[]) {
this._write({
type: LOGGER_ACTIONS.LOG,

@@ -190,4 +185,4 @@ line: params.shift(),

}
info(...params:any[]) {
this.write({
info(...params: any[]) {
this._write({
type: LOGGER_ACTIONS.LOG,

@@ -199,4 +194,4 @@ line: params.shift(),

// WARNING
warning(...params:any[]) {
this.write({
warning(...params: any[]) {
this._write({
type: LOGGER_ACTIONS.WARNING,

@@ -207,4 +202,4 @@ line: params.shift(),

}
warn(...params:any[]) {
this.write({
warn(...params: any[]) {
this._write({
type: LOGGER_ACTIONS.WARNING,

@@ -215,4 +210,4 @@ line: params.shift(),

}
error(...params:any[]) {
this.write({
error(...params: any[]) {
this._write({
type: LOGGER_ACTIONS.ERROR,

@@ -223,4 +218,4 @@ line: params.shift(),

}
err(...params:any[]) {
this.write({
err(...params: any[]) {
this._write({
type: LOGGER_ACTIONS.ERROR,

@@ -232,16 +227,15 @@ line: params.shift(),

// DEBUG
debug(...params:any[]) {
debug(...params: any[]) {
//if(DEBUG === '-')
// return;
if (DEBUG === '*' || ~DEBUG.split(',').indexOf(this.name))
this.write({
type: LOGGER_ACTIONS.DEBUG,
line: params.shift(),
params: params
});
this._write({
type: LOGGER_ACTIONS.DEBUG,
line: params.shift(),
params: params
});
}
// Progress
progress(name:string, progress: boolean | number, info?: string) {
progress(name: string, progress: boolean | number, info?: string) {
if (progress === true) {
this.write({
this._write({
type: LOGGER_ACTIONS.PROGRESS_START,

@@ -251,3 +245,3 @@ name

} else if (progress === false) {
this.write({
this._write({
type: LOGGER_ACTIONS.PROGRESS_END,

@@ -257,3 +251,3 @@ name

} else {
this.write({
this._write({
type: LOGGER_ACTIONS.PROGRESS,

@@ -267,3 +261,3 @@ name,

static noReceiversWarned = false;
write(data:LoggerAction) {
_write(data: LoggerAction) {
if (!data.time)

@@ -275,8 +269,8 @@ data.time = new Date().getTime();

data.identationLength = this.identation.length;
Logger._write(data);
Logger.__write(data);
}
private static _write(what:LoggerAction) {
private static __write(what: LoggerAction) {
if (Logger.receivers.length === 0) {
if (!Logger.noReceiversWarned) {
console._log('No receivers are defined for logger! See docs for info about this!');
console._log('No receivers are defined for logger!\nSee docs for @meteor-it/logger for more info!');
Logger.noReceiversWarned = true;

@@ -309,3 +303,3 @@ }

}
private static resetRepeating(provider:string, message:string, type:LOGGER_ACTIONS) {
private static resetRepeating(provider: string, message: string, type: LOGGER_ACTIONS) {
Logger.lastProvider = provider;

@@ -316,6 +310,6 @@ Logger.lastMessage = message;

}
private static isRepeating(provider:string, message:string, type:LOGGER_ACTIONS) {
private static isRepeating(provider: string, message: string, type: LOGGER_ACTIONS) {
return Logger.lastProvider === provider && Logger.lastMessage === message && Logger.lastType === type;
}
static addReceiver(receiver:BasicReceiver) {
static addReceiver(receiver: BasicReceiver) {
if (Logger.receivers.length === 4)

@@ -326,10 +320,10 @@ loggerLogger.warn('Possible memory leak detected: 4 or more receivers are added.');

}
static from(name:string|Logger):Logger {
if(name instanceof Logger)
static from(name: string | Logger): Logger {
if (name instanceof Logger)
return name;
// From logger of another version? Should be avoided in any way
if(typeof name==='object'&&'timeStart' in (name as any))
if (typeof name === 'object' && 'timeStart' in (name as any))
return name;
return new Logger(name);
}
return new Logger(name);
}
}

@@ -339,10 +333,10 @@

// And named console support
const OTHER_LOGGER_MARK = /^\[([a-zA-Z]+)\]/;
const OTHER_LOGGER_MARK = /^\[([a-zA-Z]+)\]/;
consoleLogger = new Logger('console');
(consoleLogger as any).___write = consoleLogger.write;
consoleLogger.write = (data:any)=>{
if(typeof data.line==='string'&&OTHER_LOGGER_MARK.test(data.line)){
(consoleLogger as any).___write = consoleLogger._write;
consoleLogger._write = (data: any) => {
if (typeof data.line === 'string' && OTHER_LOGGER_MARK.test(data.line)) {
data.name = data.line.match(OTHER_LOGGER_MARK)[1];
data.line = data.line.replace(OTHER_LOGGER_MARK,'').trimStart();
data.line = data.line.replace(OTHER_LOGGER_MARK, '').trimStart();
}

@@ -352,11 +346,11 @@ return (consoleLogger as any).___write(data);

loggerLogger = new Logger('logger');
export type logFunc=(...params:any[])=>undefined;
export type logFunc = (...params: any[]) => undefined;
declare global {
interface Console {
_log:logFunc;
_error:logFunc;
_warn:logFunc;
_err:logFunc;
_warning:logFunc;
}
interface Console {
_log: logFunc;
_error: logFunc;
_warn: logFunc;
_err: logFunc;
_warning: logFunc;
}
}

@@ -366,5 +360,5 @@ if (!(console as any)._patchedByLogger) {

(console as any)['_' + method] = (console as any)[method];
(console as any)[method] = (...args:any[]) => (consoleLogger as any)[method](...args);
(console as any)[method] = (...args: any[]) => (consoleLogger as any)[method](...args);
}
(console as any)._patchedByLogger = true;
(console as any)._patchedByLogger = true;
}
{
"name": "@meteor-it/logger",
"version": "2.3.21",
"version": "2.3.22",
"description": "Most powerfull logger for node.js",

@@ -25,3 +25,3 @@ "module": "index.mjs",

},
"gitHead": "13a378ab6afab3cac18cd00dd670900bf81d4a3e"
"gitHead": "83cbe8a05a804de102019587bedf77ad0c6b025c"
}

@@ -6,2 +6,3 @@ "use strict";

const terminal_1 = require("@meteor-it/terminal");
const DEBUG = process.env.DEBUG || '';
const { format } = util_1.default;

@@ -183,3 +184,4 @@ const ansiColors = {

case __1.LOGGER_ACTIONS.DEBUG:
writeDebugData(nameLimit, this, data);
if (DEBUG === '*' || ~DEBUG.split(',').indexOf(data.name))
writeDebugData(nameLimit, this, data);
break;

@@ -230,2 +232,2 @@ case __1.LOGGER_ACTIONS.TIME_START:

//# sourceMappingURL=data:application/json;charset=utf8;base64,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dCB1dGlsIGZyb20gJ3V0aWwnO1xuaW1wb3J0IExvZ2dlciwgeyBMT0dHRVJfQUNUSU9OUywgQmFzaWNSZWNlaXZlciB9IGZyb20gJy4uLyc7XG5pbXBvcnQge1xuXHR3cml0ZVN0ZG91dCxcblx0bW92ZUN1cnNvciwgY2xlYXJMaW5lLCBzYXZlLCByZXN0b3JlLCBzdGFydEJ1ZmZlcmluZywgZmx1c2hCdWZmZXJcbn0gZnJvbSAnQG1ldGVvci1pdC90ZXJtaW5hbCc7XG5cbmNvbnN0IHsgZm9ybWF0IH0gPSB1dGlsO1xuXG5jb25zdCBhbnNpQ29sb3JzOiB7IFtrZXk6IHN0cmluZ106IG51bWJlcltdIH0gPSB7XG5cdHJlc2V0OiBbMCwgMF0sXG5cblx0Ym9sZDogWzEsIDIyXSxcblx0ZGltOiBbMiwgMjJdLFxuXHRpdGFsaWM6IFszLCAyM10sXG5cdHVuZGVybGluZTogWzQsIDI0XSxcblx0aW52ZXJzZTogWzcsIDI3XSxcblx0aGlkZGVuOiBbOCwgMjhdLFxuXHRzdHJpa2V0aHJvdWdoOiBbOSwgMjldLFxuXG5cdGJsYWNrOiBbMzAsIDM5XSxcblx0cmVkOiBbMzEsIDM5XSxcblx0Z3JlZW46IFszMiwgMzldLFxuXHR5ZWxsb3c6IFszMywgMzldLFxuXHRibHVlOiBbMzQsIDM5XSxcblx0bWFnZW50YTogWzM1LCAzOV0sXG5cdGN5YW46IFszNiwgMzldLFxuXHR3aGl0ZTogWzM3LCAzOV0sXG5cdGdyYXk6IFs5MCwgMzldLFxuXG5cdGJnQmxhY2s6IFs0MCwgNDldLFxuXHRiZ1JlZDogWzQxLCA0OV0sXG5cdGJnR3JlZW46IFs0MiwgNDldLFxuXHRiZ1llbGxvdzogWzQzLCA0OV0sXG5cdGJnQmx1ZTogWzQ0LCA0OV0sXG5cdGJnTWFnZW50YTogWzQ1LCA0OV0sXG5cdGJnQ3lhbjogWzQ2LCA0OV0sXG5cdGJnV2hpdGU6IFs0NywgNDldXG59O1xuXG5mdW5jdGlvbiBzdHJpbmdpZnlJZGVudChuYW1lTGltaXQ6IG51bWJlciwgY291bnQ6IG51bWJlciwgc3ltYm9sTmVlZGVkOiBzdHJpbmcgPSB1bmRlZmluZWQpIHtcblx0cmV0dXJuIGAkeycgICcucmVwZWF0KGNvdW50KX0ke3N5bWJvbE5lZWRlZCA/IHN5bWJvbE5lZWRlZCA6ICcgJ31gO1xufVxuLy8gZnVuY3Rpb24gd3JpdGVEYXRlKGRhdGUpIHtcbi8vIFx0Ly8gd3JpdGVFc2NhcGUoJzM2bScpO1xuLy8gXHQvLyB3cml0ZVN0ZG91dCgobmV3IERhdGUoZGF0ZSkpLnRvTG9jYWxlVGltZVN0cmluZygpKTtcbi8vIFx0Ly8gd3JpdGVFc2NhcGUoJzBtJyk7XG4vLyB9XG5mdW5jdGlvbiBzdHJpbmdpZnlOYW1lKG5hbWVMaW1pdDogbnVtYmVyLCBsaW1pdDogbnVtYmVyLCBuYW1lOiBzdHJpbmcsIGVzY2FwZUNvZGUgPSAnNDRtJykge1xuXHRyZXR1cm4gYFxcdTAwMUJbJHtlc2NhcGVDb2RlfVxcdTAwMUJbMW0ke25hbWVMaW1pdCA9PT0gMCA/ICcnIDogbmFtZS50b1N0cmluZygpLnBhZFN0YXJ0KG5hbWVMaW1pdCwgJyAnKX1cXHUwMDFCWzBtYDtcbn1cbi8vIGZ1bmN0aW9uIHdyaXRlUmVwZWF0cyhjb3VudCwgbm9uZSA9IGZhbHNlKSB7XG4vLyBcdC8vIGlmKHByb2Nlc3MuZW52Lk5PX0NPTExBUFNFKW5vbmU9dHJ1ZTtcbi8vIFx0Ly8gaWYgKG5vbmUpIHtcbi8vIFx0Ly8gXHR3cml0ZVN0ZG91dCgnICAgICAgJyk7XG4vLyBcdC8vIH0gZWxzZSB7XG4vLyBcdC8vIFx0Y291bnQgKz0gMTtcbi8vIFx0Ly8gXHRpZiAoY291bnQgPj0gMjApIHdyaXRlRXNjYXBlKCczMW0nKTsgZWxzZSBpZiAoY291bnQgPj0gNSkgd3JpdGVFc2NhcGUoJzMzbScpOyBlbHNlIGlmIChjb3VudCA+PSAyKSB3cml0ZUVzY2FwZSgnMzJtJyk7IGVsc2Vcbi8vIFx0Ly8gXHRcdHdyaXRlRXNjYXBlKCc5MG0nKTtcbi8vIFx0Ly8gXHRpZiAoY291bnQgPj0gOTk5KSB3cml0ZVN0ZG91dCgneDk5OSsgJyk7IGVsc2UgaWYgKGNvdW50ID09PSAxKSB3cml0ZVN0ZG91dCgnICAgICAgJyk7IGVsc2Vcbi8vIFx0Ly8gXHRcdHdyaXRlU3Rkb3V0KCd4JyArIGZpeExlbmd0aChjb3VudC50b1N0cmluZygxMCksIDMsIGZhbHNlLCAnICcpICsgJyAgJyk7XG4vLyBcdC8vIFx0d3JpdGVFc2NhcGUoJzBtJyk7XG4vLyBcdC8vIH1cbi8vIH1cbmZ1bmN0aW9uIHN0cmluZ2lmeUlkZW50RGF0YShuYW1lTGltaXQ6IG51bWJlciwgcHJvdmlkZXI6IE5vZGVDb25zb2xlUmVjZWl2ZXIsIGRhdGE6IGFueSkge1xuXHQvLyB3cml0ZVJlcGVhdHMoMCwgdHJ1ZSk7XG5cdC8vIHdyaXRlRGF0ZShkYXRhLnRpbWUpO1xuXHRyZXR1cm4gYCR7c3RyaW5naWZ5TmFtZShuYW1lTGltaXQsIHByb3ZpZGVyLm5hbWVMaW1pdCwgZGF0YS5uYW1lKX0gXFx1MDAxQlszNW0ke3N0cmluZ2lmeUlkZW50KG5hbWVMaW1pdCwgZGF0YS5pZGVudGF0aW9uTGVuZ3RoIC0gMSwgJz4nKX1cXHUwMDFCWzFtICR7ZGF0YS5pZGVudE5hbWV9XFx1MDAxQlswbWA7XG59XG5mdW5jdGlvbiBzdHJpbmdpZnlEZWVudERhdGEobmFtZUxpbWl0OiBudW1iZXIsIHByb3ZpZGVyOiBOb2RlQ29uc29sZVJlY2VpdmVyLCBkYXRhOiBhbnkpIHtcblx0Ly8gd3JpdGVSZXBlYXRzKDAsIHRydWUpO1xuXHQvLyB3cml0ZURhdGUoZGF0YS50aW1lKTtcblx0cmV0dXJuIGAke3N0cmluZ2lmeU5hbWUobmFtZUxpbWl0LCBwcm92aWRlci5uYW1lTGltaXQsIGRhdGEubmFtZSl9IFxcdTAwMUJbMzVtJHtzdHJpbmdpZnlJZGVudChuYW1lTGltaXQsIGRhdGEuaWRlbnRhdGlvbkxlbmd0aCwgJzwnKX1cXHUwMDFCWzFtICR7ZGF0YS5pZGVudE5hbWV9XFx1MDAxQlsyMm0gKERvbmUgaW4gJHtkYXRhLmlkZW50VGltZX1tcylcXHUwMDFCWzBtYDtcbn1cbmZ1bmN0aW9uIHN0cmluZ2lmeVRpbWVTdGFydERhdGEobmFtZUxpbWl0OiBudW1iZXIsIHByb3ZpZGVyOiBOb2RlQ29uc29sZVJlY2VpdmVyLCBkYXRhOiBhbnkpIHtcblx0Ly8gd3JpdGVSZXBlYXRzKDAsIHRydWUpO1xuXHQvLyB3cml0ZURhdGUoZGF0YS50aW1lKTtcblx0cmV0dXJuIGBcXHUwMDFCWzM1bSR7c3RyaW5naWZ5TmFtZShuYW1lTGltaXQsIHByb3ZpZGVyLm5hbWVMaW1pdCwgZGF0YS5uYW1lLCAnMW0nKX1cXHUwMDFCWzMzbSR7c3RyaW5naWZ5SWRlbnQobmFtZUxpbWl0LCBkYXRhLmlkZW50YXRpb25MZW5ndGgpfSBUIFN0YXJ0ZWQgJHtkYXRhLnRpbWVOYW1lfWA7XG59XG5mdW5jdGlvbiBzdHJpbmdpZnlUaW1lRW5kRGF0YShuYW1lTGltaXQ6IG51bWJlciwgcHJvdmlkZXI6IE5vZGVDb25zb2xlUmVjZWl2ZXIsIGRhdGE6IGFueSkge1xuXHQvLyB3cml0ZVJlcGVhdHMoMCwgdHJ1ZSk7XG5cdC8vIHdyaXRlRGF0ZShkYXRhLnRpbWUpO1xuXHRyZXR1cm4gYFxcdTAwMUJbMzVtJHtzdHJpbmdpZnlOYW1lKG5hbWVMaW1pdCwgcHJvdmlkZXIubmFtZUxpbWl0LCBkYXRhLm5hbWUsICcxbScpfVxcdTAwMUJbMzRtJHtzdHJpbmdpZnlJZGVudChuYW1lTGltaXQsIGRhdGEuaWRlbnRhdGlvbkxlbmd0aCl9IFQgRmluaXNoZWQgJHtkYXRhLnRpbWVOYW1lfVxcdTAwMUJbMW0gaW4gJHtkYXRhLnRpbWVUaW1lfW1zXFx1MDAxQlswbWA7XG59XG5mdW5jdGlvbiBzdHJpbmdpZnlEYXRhKG5hbWVMaW1pdDogbnVtYmVyLCBkYXRhOiBhbnkpIHtcblx0bGV0IHVuY29sb3JlZCA9IGZvcm1hdChkYXRhLmxpbmUsIC4uLmRhdGEucGFyYW1zIHx8IFtdKTtcblx0cmV0dXJuIHVuY29sb3JlZC5yZXBsYWNlKC97KFxcLz8pKFtefV0rKX0vZywgKC4uLmQ6IGFueVtdKSA9PiB7XG5cdFx0aWYgKCFhbnNpQ29sb3JzW2RbMl1dKSByZXR1cm4gZFswXTtcblx0XHRyZXR1cm4gJ1xcdTAwMUJbJyArIGFuc2lDb2xvcnNbZFsyXV1bZFsxXSA9PT0gJy8nID8gMSA6IDBdICsgJ20nO1xuXHR9KTtcbn1cbi8vIGNvbnN0IFNUUklQUEVEX0RBVEU9KG5ldyBEYXRlKCkpLnRvTG9jYWxlVGltZVN0cmluZygpLnJlcGxhY2UoLy4vZywgJyAnKTtcbmZ1bmN0aW9uIHN0cmluZ2lmeUNvbW1vbkRhdGEobmFtZUxpbWl0OiBudW1iZXIsIGVzY2FwZUNvZGU6IHN0cmluZywgcHJvdmlkZXI6IE5vZGVDb25zb2xlUmVjZWl2ZXIsIGRhdGE6IGFueSkge1xuXHQvLyB3cml0ZVJlcGVhdHMoZGF0YS5yZXBlYXRzLCBmYWxzZSk7XG5cdC8vIHdyaXRlRGF0ZShkYXRhLnRpbWUpO1xuXHRjb25zdCBzdHJpbmdzID0gZGF0YS5zdHJpbmcuc3BsaXQoJ1xcbicpO1xuXHRsZXQgcmV0ID0gYFxcdTAwMUJbNDBtJHtzdHJpbmdpZnlOYW1lKG5hbWVMaW1pdCwgcHJvdmlkZXIubmFtZUxpbWl0LCBkYXRhLm5hbWUsIGVzY2FwZUNvZGUpfVxcdTAwMUJbMG0ke3N0cmluZ2lmeUlkZW50KG5hbWVMaW1pdCwgZGF0YS5pZGVudGF0aW9uTGVuZ3RoKX0ke3N0cmluZ3Muc2hpZnQoKX1gO1xuXHRmb3IgKGxldCBzdHJpbmcgb2Ygc3RyaW5ncykge1xuXHRcdHJldCArPSBgXFxuXFx1MDAxQls0MG0ke3N0cmluZ2lmeU5hbWUobmFtZUxpbWl0LCBwcm92aWRlci5uYW1lTGltaXQsICcgfCcsIGVzY2FwZUNvZGUpfVxcdTAwMUJbMG0ke3N0cmluZ2lmeUlkZW50KG5hbWVMaW1pdCwgZGF0YS5pZGVudGF0aW9uTGVuZ3RoKX0ke3N0cmluZ31gO1xuXHRcdC8vYCR7c3RyaW5naWZ5SWRlbnQoZGF0YS5pZGVudGF0aW9uTGVuZ3RoKX0ke3N0cmluZ2lmeU5hbWUocHJvdmlkZXIubmFtZUxpbWl0LCd8Jyxlc2NhcGVDb2RlKX0gJHtzdHJpbmd9XFxuYDtcblx0fVxuXHRyZXR1cm4gcmV0O1xufVxuZnVuY3Rpb24gd3JpdGVMb2dEYXRhKG5hbWVMaW1pdDogbnVtYmVyLCBwcm92aWRlcjogTm9kZUNvbnNvbGVSZWNlaXZlciwgZGF0YTogYW55KSB7XG5cdHdyaXRlU3Rkb3V0KHN0cmluZ2lmeUNvbW1vbkRhdGEobmFtZUxpbWl0LCAnMzRtJywgcHJvdmlkZXIsIGRhdGEpICsgJ1xcbicpO1xufVxuZnVuY3Rpb24gd3JpdGVFcnJvckRhdGEobmFtZUxpbWl0OiBudW1iZXIsIHByb3ZpZGVyOiBOb2RlQ29uc29sZVJlY2VpdmVyLCBkYXRhOiBhbnkpIHtcblx0d3JpdGVTdGRvdXQoc3RyaW5naWZ5Q29tbW9uRGF0YShuYW1lTGltaXQsICczMW0nLCBwcm92aWRlciwgZGF0YSkgKyAnXFxuJyk7XG59XG5mdW5jdGlvbiB3cml0ZVdhcm5pbmdEYXRhKG5hbWVMaW1pdDogbnVtYmVyLCBwcm92aWRlcjogTm9kZUNvbnNvbGVSZWNlaXZlciwgZGF0YTogYW55KSB7XG5cdHdyaXRlU3Rkb3V0KHN0cmluZ2lmeUNvbW1vbkRhdGEobmFtZUxpbWl0LCAnMzNtJywgcHJvdmlkZXIsIGRhdGEpICsgJ1xcbicpO1xufVxuZnVuY3Rpb24gd3JpdGVEZWJ1Z0RhdGEobmFtZUxpbWl0OiBudW1iZXIsIHByb3ZpZGVyOiBOb2RlQ29uc29sZVJlY2VpdmVyLCBkYXRhOiBhbnkpIHtcblx0d3JpdGVTdGRvdXQoc3RyaW5naWZ5Q29tbW9uRGF0YShuYW1lTGltaXQsICc5MG0nLCBwcm92aWRlciwgZGF0YSkgKyAnXFxuJyk7XG59XG5cbmludGVyZmFjZSBJUHJvZ3Jlc3NJdGVtIHtcblx0bmFtZTogc3RyaW5nLFxuXHRwcm9ncmVzczogbnVtYmVyLFxuXHR0aW1lOiBudW1iZXJcbn1cbmNvbnN0IHByb2dyZXNzZXM6IHsgW2tleTogc3RyaW5nXTogSVByb2dyZXNzSXRlbSB9ID0ge307XG5mdW5jdGlvbiBwcm9ncmVzc1N0YXJ0KG5hbWVMaW1pdDogbnVtYmVyLCBwcm92aWRlcjogTm9kZUNvbnNvbGVSZWNlaXZlciwgZGF0YTogYW55KSB7XG5cdHByb2dyZXNzZXNbZGF0YS5uYW1lXSA9IHtcblx0XHRuYW1lOiBkYXRhLm5hbWUsXG5cdFx0cHJvZ3Jlc3M6IDAsXG5cdFx0dGltZTogZGF0YS50aW1lXG5cdH07XG59XG5mdW5jdGlvbiBwcm9ncmVzc0VuZChuYW1lTGltaXQ6IG51bWJlciwgcHJvdmlkZXI6IE5vZGVDb25zb2xlUmVjZWl2ZXIsIGRhdGE6IGFueSkge1xuXHRkZWxldGUgcHJvZ3Jlc3Nlc1tkYXRhLm5hbWVdO1xufVxuZnVuY3Rpb24gcHJvZ3Jlc3MobmFtZUxpbWl0OiBudW1iZXIsIHByb3ZpZGVyOiBOb2RlQ29uc29sZVJlY2VpdmVyLCBkYXRhOiBhbnkpIHtcblx0aWYgKCFwcm9ncmVzc2VzW2RhdGEubmFtZV0pXG5cdFx0cmV0dXJuO1xuXHRwcm9ncmVzc2VzW2RhdGEubmFtZV0udGltZSA9IGRhdGEudGltZTtcblx0cHJvZ3Jlc3Nlc1tkYXRhLm5hbWVdLnByb2dyZXNzID0gZGF0YS5wcm9ncmVzcztcbn1cbmZ1bmN0aW9uIHJlbmRlclByb2dyZXNzKG5hbWVMaW1pdDogbnVtYmVyKSB7XG5cdHNhdmUoKTtcblx0bGV0IGkgPSAwO1xuXHRmb3IgKGxldCBwcm9ncmVzcyBvZiBPYmplY3QudmFsdWVzKHByb2dyZXNzZXMpKSB7XG5cdFx0bW92ZUN1cnNvcihpKTtcblx0XHRjbGVhckxpbmUoKTtcblx0XHRsZXQgcGVyY2VudCA9IE1hdGguY2VpbChwcm9ncmVzcy5wcm9ncmVzcyk7XG5cdFx0d3JpdGVTdGRvdXQoYFxcdTAwMUJbMzRtJHtwcm9ncmVzcy5uYW1lLnBhZFN0YXJ0KG5hbWVMaW1pdCl9ICR7KHBlcmNlbnQgKyAnJScpLnBhZFN0YXJ0KDQsICcgJyl9ICR7J3wnLnJlcGVhdChNYXRoLmNlaWwoKChwcm9jZXNzLnN0ZG91dCBhcyBhbnkpLmNvbHVtbnMgLSAxIC0gMyAtIDEgLSAxIC0gbmFtZUxpbWl0KSAvIDEwMCAqIHBlcmNlbnQpKX1gKTtcblx0XHQvLyB3cml0ZUVzY2FwZSgnMzRtJyk7XG5cdFx0Ly8gd3JpdGVTdGRvdXQoKDxJUHJvZ3Jlc3NJdGVtPnByb2dyZXNzKS5uYW1lLnBhZFN0YXJ0KDE4LCcgJykpO1xuXHRcdC8vIHdyaXRlU3Rkb3V0KCcgJyk7XG5cdFx0Ly8gd3JpdGVEYXRlKHByb2dyZXNzLnRpbWUpO1xuXHRcdC8vIHdyaXRlU3Rkb3V0KCcgJyk7XG5cdFx0Ly8gd3JpdGVTdGRvdXQoKHBlcmNlbnQrJyUnKS5wYWRTdGFydCg0LCcgJykpO1xuXHRcdC8vIHdyaXRlU3Rkb3V0KCcgJyk7XG5cdFx0Ly8gd3JpdGVTdGRvdXQoJ3wnLnJlcGVhdChNYXRoLmNlaWwoKCg8YW55PnByb2Nlc3Muc3Rkb3V0KS5jb2x1bW5zLTEtMy0xLTgtMS0xOCkvMTAwKnBlcmNlbnQpKSk7XG5cdFx0aSsrO1xuXHR9XG5cblx0cmVzdG9yZSgpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOb2RlQ29uc29sZVJlY2VpdmVyIGV4dGVuZHMgQmFzaWNSZWNlaXZlciB7XG5cdG5hbWVMaW1pdDogbnVtYmVyO1xuXG5cdGNvbnN0cnVjdG9yKG5hbWVMaW1pdCA9IDE4KSB7XG5cdFx0c3VwZXIoKTtcblx0XHR0aGlzLm5hbWVMaW1pdCA9IG5hbWVMaW1pdDtcblx0fVxuXG5cdHdyaXRlKGRhdGE6IGFueSkge1xuXHRcdGxldCB7IG5hbWVMaW1pdCB9ID0gdGhpcztcblx0XHRpZiAoT2JqZWN0LnZhbHVlcyhwcm9ncmVzc2VzKS5sZW5ndGggIT09IDApIHtcblx0XHRcdHN0YXJ0QnVmZmVyaW5nKCk7XG5cdFx0fVxuXHRcdGRhdGEuc3RyaW5nID0gc3RyaW5naWZ5RGF0YShuYW1lTGltaXQsIGRhdGEpO1xuXHRcdC8vIGlmIChkYXRhLnJlcGVhdGVkKSB7XG5cdFx0Ly8gXHRpZighcHJvY2Vzcy5lbnYuTk9fQ09MTEFQU0Upe1xuXHRcdC8vIFx0XHRzYXZlKCk7XG5cdFx0Ly8gXHRcdHdyaXRlRXNjYXBlKGRhdGEuc3RyaW5nLnNwbGl0KCdcXG4nKS5sZW5ndGggKyAnQScpO1xuXHRcdC8vIFx0XHQvL2RhdGEucmVwZWF0c1xuXHRcdC8vIFx0fVxuXHRcdC8vIH1cblx0XHRzd2l0Y2ggKGRhdGEudHlwZSkge1xuXHRcdFx0Y2FzZSBMT0dHRVJfQUNUSU9OUy5JREVOVDpcblx0XHRcdFx0d3JpdGVTdGRvdXQoc3RyaW5naWZ5SWRlbnREYXRhKG5hbWVMaW1pdCwgdGhpcywgZGF0YSkgKyAnXFxuJyk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBMT0dHRVJfQUNUSU9OUy5ERUVOVDpcblx0XHRcdFx0d3JpdGVTdGRvdXQoc3RyaW5naWZ5RGVlbnREYXRhKG5hbWVMaW1pdCwgdGhpcywgZGF0YSkgKyAnXFxuJyk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBMT0dHRVJfQUNUSU9OUy5MT0c6XG5cdFx0XHRcdHdyaXRlTG9nRGF0YShuYW1lTGltaXQsIHRoaXMsIGRhdGEpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgTE9HR0VSX0FDVElPTlMuRVJST1I6XG5cdFx0XHRcdHdyaXRlRXJyb3JEYXRhKG5hbWVMaW1pdCwgdGhpcywgZGF0YSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBMT0dHRVJfQUNUSU9OUy5XQVJOSU5HOlxuXHRcdFx0XHR3cml0ZVdhcm5pbmdEYXRhKG5hbWVMaW1pdCwgdGhpcywgZGF0YSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBMT0dHRVJfQUNUSU9OUy5ERUJVRzpcblx0XHRcdFx0d3JpdGVEZWJ1Z0RhdGEobmFtZUxpbWl0LCB0aGlzLCBkYXRhKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIExPR0dFUl9BQ1RJT05TLlRJTUVfU1RBUlQ6XG5cdFx0XHRcdHdyaXRlU3Rkb3V0KHN0cmluZ2lmeVRpbWVTdGFydERhdGEobmFtZUxpbWl0LCB0aGlzLCBkYXRhKSArICdcXG4nKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIExPR0dFUl9BQ1RJT05TLlRJTUVfRU5EOlxuXHRcdFx0XHR3cml0ZVN0ZG91dChzdHJpbmdpZnlUaW1lRW5kRGF0YShuYW1lTGltaXQsIHRoaXMsIGRhdGEpICsgJ1xcbicpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgTE9HR0VSX0FDVElPTlMuUFJPR1JFU1NfU1RBUlQ6XG5cdFx0XHRcdHByb2dyZXNzU3RhcnQobmFtZUxpbWl0LCB0aGlzLCBkYXRhKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIExPR0dFUl9BQ1RJT05TLlBST0dSRVNTX0VORDpcblx0XHRcdFx0cHJvZ3Jlc3NFbmQobmFtZUxpbWl0LCB0aGlzLCBkYXRhKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIExPR0dFUl9BQ1RJT05TLlBST0dSRVNTOlxuXHRcdFx0XHRwcm9ncmVzcyhuYW1lTGltaXQsIHRoaXMsIGRhdGEpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGNvbnNvbGUuX2xvZyhkYXRhKTtcblx0XHR9XG5cdFx0Ly8gaWYgKGRhdGEucmVwZWF0ZWQpIHtcblx0XHQvLyBcdGlmKCFwcm9jZXNzLmVudi5OT19DT0xMQVBTRSlyZXN0b3JlKCk7XG5cdFx0Ly8gfVxuXHRcdC8vIFRPRE86IFN1cHBvcnQgZm9yIG5vbi10dHkgdGVybWluYWxzXG5cdFx0aWYgKE9iamVjdC52YWx1ZXMocHJvZ3Jlc3NlcykubGVuZ3RoICE9PSAwKSB7XG5cdFx0XHRyZW5kZXJQcm9ncmVzcyhuYW1lTGltaXQpO1xuXHRcdFx0Zmx1c2hCdWZmZXIoKTtcblx0XHR9XG5cdH1cbn1cblxubGV0IHRlcm1pbmFsTG9nZ2VyID0gbmV3IExvZ2dlcigndGVybWluYWwnKTtcblxucHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCBlID0+IHtcblx0dGVybWluYWxMb2dnZXIuZXJyKCdVbmNhdWdodEV4Y2VwdGlvbjonKTtcblx0dGVybWluYWxMb2dnZXIuZXJyKGUuc3RhY2spO1xuXHQvLyBwcm9jZXNzLmV4aXQoMCk7XG59KTtcblxucHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgZSA9PiB7XG5cdHRlcm1pbmFsTG9nZ2VyLmVycignVW5oYW5kbGVkUmVqZWN0aW9uOicpO1xuXHR0ZXJtaW5hbExvZ2dlci5lcnIoZS5zdGFjayk7XG5cdC8vIHByb2Nlc3MuZXhpdCgwKTtcbn0pO1xuXG4vLyBwcm9jZXNzLm9uKCd3YXJuaW5nJywgZSA9PiB7XG4vLyBcdHRlcm1pbmFsTG9nZ2VyLndhcm4oZS5zdGFjayk7XG4vLyB9KTsiXX0=
//# sourceMappingURL=data:application/json;charset=utf8;base64,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QUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLG1CQUFtQjtBQUNwQixDQUFDLENBQUMsQ0FBQztBQUVILCtCQUErQjtBQUMvQixpQ0FBaUM7QUFDakMsTUFBTSIsImZpbGUiOiJsb2dnZXIvcmVjZWl2ZXJzL25vZGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdXRpbCBmcm9tICd1dGlsJztcbmltcG9ydCBMb2dnZXIsIHsgTE9HR0VSX0FDVElPTlMsIEJhc2ljUmVjZWl2ZXIgfSBmcm9tICcuLi8nO1xuaW1wb3J0IHtcblx0d3JpdGVTdGRvdXQsXG5cdG1vdmVDdXJzb3IsIGNsZWFyTGluZSwgc2F2ZSwgcmVzdG9yZSwgc3RhcnRCdWZmZXJpbmcsIGZsdXNoQnVmZmVyXG59IGZyb20gJ0BtZXRlb3ItaXQvdGVybWluYWwnO1xuXG5jb25zdCBERUJVRyA9IHByb2Nlc3MuZW52LkRFQlVHIHx8ICcnO1xuXG5jb25zdCB7IGZvcm1hdCB9ID0gdXRpbDtcblxuY29uc3QgYW5zaUNvbG9yczogeyBba2V5OiBzdHJpbmddOiBudW1iZXJbXSB9ID0ge1xuXHRyZXNldDogWzAsIDBdLFxuXG5cdGJvbGQ6IFsxLCAyMl0sXG5cdGRpbTogWzIsIDIyXSxcblx0aXRhbGljOiBbMywgMjNdLFxuXHR1bmRlcmxpbmU6IFs0LCAyNF0sXG5cdGludmVyc2U6IFs3LCAyN10sXG5cdGhpZGRlbjogWzgsIDI4XSxcblx0c3RyaWtldGhyb3VnaDogWzksIDI5XSxcblxuXHRibGFjazogWzMwLCAzOV0sXG5cdHJlZDogWzMxLCAzOV0sXG5cdGdyZWVuOiBbMzIsIDM5XSxcblx0eWVsbG93OiBbMzMsIDM5XSxcblx0Ymx1ZTogWzM0LCAzOV0sXG5cdG1hZ2VudGE6IFszNSwgMzldLFxuXHRjeWFuOiBbMzYsIDM5XSxcblx0d2hpdGU6IFszNywgMzldLFxuXHRncmF5OiBbOTAsIDM5XSxcblxuXHRiZ0JsYWNrOiBbNDAsIDQ5XSxcblx0YmdSZWQ6IFs0MSwgNDldLFxuXHRiZ0dyZWVuOiBbNDIsIDQ5XSxcblx0YmdZZWxsb3c6IFs0MywgNDldLFxuXHRiZ0JsdWU6IFs0NCwgNDldLFxuXHRiZ01hZ2VudGE6IFs0NSwgNDldLFxuXHRiZ0N5YW46IFs0NiwgNDldLFxuXHRiZ1doaXRlOiBbNDcsIDQ5XVxufTtcblxuZnVuY3Rpb24gc3RyaW5naWZ5SWRlbnQobmFtZUxpbWl0OiBudW1iZXIsIGNvdW50OiBudW1iZXIsIHN5bWJvbE5lZWRlZDogc3RyaW5nID0gdW5kZWZpbmVkKSB7XG5cdHJldHVybiBgJHsnICAnLnJlcGVhdChjb3VudCl9JHtzeW1ib2xOZWVkZWQgPyBzeW1ib2xOZWVkZWQgOiAnICd9YDtcbn1cbi8vIGZ1bmN0aW9uIHdyaXRlRGF0ZShkYXRlKSB7XG4vLyBcdC8vIHdyaXRlRXNjYXBlKCczNm0nKTtcbi8vIFx0Ly8gd3JpdGVTdGRvdXQoKG5ldyBEYXRlKGRhdGUpKS50b0xvY2FsZVRpbWVTdHJpbmcoKSk7XG4vLyBcdC8vIHdyaXRlRXNjYXBlKCcwbScpO1xuLy8gfVxuZnVuY3Rpb24gc3RyaW5naWZ5TmFtZShuYW1lTGltaXQ6IG51bWJlciwgbGltaXQ6IG51bWJlciwgbmFtZTogc3RyaW5nLCBlc2NhcGVDb2RlID0gJzQ0bScpIHtcblx0cmV0dXJuIGBcXHUwMDFCWyR7ZXNjYXBlQ29kZX1cXHUwMDFCWzFtJHtuYW1lTGltaXQgPT09IDAgPyAnJyA6IG5hbWUudG9TdHJpbmcoKS5wYWRTdGFydChuYW1lTGltaXQsICcgJyl9XFx1MDAxQlswbWA7XG59XG4vLyBmdW5jdGlvbiB3cml0ZVJlcGVhdHMoY291bnQsIG5vbmUgPSBmYWxzZSkge1xuLy8gXHQvLyBpZihwcm9jZXNzLmVudi5OT19DT0xMQVBTRSlub25lPXRydWU7XG4vLyBcdC8vIGlmIChub25lKSB7XG4vLyBcdC8vIFx0d3JpdGVTdGRvdXQoJyAgICAgICcpO1xuLy8gXHQvLyB9IGVsc2Uge1xuLy8gXHQvLyBcdGNvdW50ICs9IDE7XG4vLyBcdC8vIFx0aWYgKGNvdW50ID49IDIwKSB3cml0ZUVzY2FwZSgnMzFtJyk7IGVsc2UgaWYgKGNvdW50ID49IDUpIHdyaXRlRXNjYXBlKCczM20nKTsgZWxzZSBpZiAoY291bnQgPj0gMikgd3JpdGVFc2NhcGUoJzMybScpOyBlbHNlXG4vLyBcdC8vIFx0XHR3cml0ZUVzY2FwZSgnOTBtJyk7XG4vLyBcdC8vIFx0aWYgKGNvdW50ID49IDk5OSkgd3JpdGVTdGRvdXQoJ3g5OTkrICcpOyBlbHNlIGlmIChjb3VudCA9PT0gMSkgd3JpdGVTdGRvdXQoJyAgICAgICcpOyBlbHNlXG4vLyBcdC8vIFx0XHR3cml0ZVN0ZG91dCgneCcgKyBmaXhMZW5ndGgoY291bnQudG9TdHJpbmcoMTApLCAzLCBmYWxzZSwgJyAnKSArICcgICcpO1xuLy8gXHQvLyBcdHdyaXRlRXNjYXBlKCcwbScpO1xuLy8gXHQvLyB9XG4vLyB9XG5mdW5jdGlvbiBzdHJpbmdpZnlJZGVudERhdGEobmFtZUxpbWl0OiBudW1iZXIsIHByb3ZpZGVyOiBOb2RlQ29uc29sZVJlY2VpdmVyLCBkYXRhOiBhbnkpIHtcblx0Ly8gd3JpdGVSZXBlYXRzKDAsIHRydWUpO1xuXHQvLyB3cml0ZURhdGUoZGF0YS50aW1lKTtcblx0cmV0dXJuIGAke3N0cmluZ2lmeU5hbWUobmFtZUxpbWl0LCBwcm92aWRlci5uYW1lTGltaXQsIGRhdGEubmFtZSl9IFxcdTAwMUJbMzVtJHtzdHJpbmdpZnlJZGVudChuYW1lTGltaXQsIGRhdGEuaWRlbnRhdGlvbkxlbmd0aCAtIDEsICc+Jyl9XFx1MDAxQlsxbSAke2RhdGEuaWRlbnROYW1lfVxcdTAwMUJbMG1gO1xufVxuZnVuY3Rpb24gc3RyaW5naWZ5RGVlbnREYXRhKG5hbWVMaW1pdDogbnVtYmVyLCBwcm92aWRlcjogTm9kZUNvbnNvbGVSZWNlaXZlciwgZGF0YTogYW55KSB7XG5cdC8vIHdyaXRlUmVwZWF0cygwLCB0cnVlKTtcblx0Ly8gd3JpdGVEYXRlKGRhdGEudGltZSk7XG5cdHJldHVybiBgJHtzdHJpbmdpZnlOYW1lKG5hbWVMaW1pdCwgcHJvdmlkZXIubmFtZUxpbWl0LCBkYXRhLm5hbWUpfSBcXHUwMDFCWzM1bSR7c3RyaW5naWZ5SWRlbnQobmFtZUxpbWl0LCBkYXRhLmlkZW50YXRpb25MZW5ndGgsICc8Jyl9XFx1MDAxQlsxbSAke2RhdGEuaWRlbnROYW1lfVxcdTAwMUJbMjJtIChEb25lIGluICR7ZGF0YS5pZGVudFRpbWV9bXMpXFx1MDAxQlswbWA7XG59XG5mdW5jdGlvbiBzdHJpbmdpZnlUaW1lU3RhcnREYXRhKG5hbWVMaW1pdDogbnVtYmVyLCBwcm92aWRlcjogTm9kZUNvbnNvbGVSZWNlaXZlciwgZGF0YTogYW55KSB7XG5cdC8vIHdyaXRlUmVwZWF0cygwLCB0cnVlKTtcblx0Ly8gd3JpdGVEYXRlKGRhdGEudGltZSk7XG5cdHJldHVybiBgXFx1MDAxQlszNW0ke3N0cmluZ2lmeU5hbWUobmFtZUxpbWl0LCBwcm92aWRlci5uYW1lTGltaXQsIGRhdGEubmFtZSwgJzFtJyl9XFx1MDAxQlszM20ke3N0cmluZ2lmeUlkZW50KG5hbWVMaW1pdCwgZGF0YS5pZGVudGF0aW9uTGVuZ3RoKX0gVCBTdGFydGVkICR7ZGF0YS50aW1lTmFtZX1gO1xufVxuZnVuY3Rpb24gc3RyaW5naWZ5VGltZUVuZERhdGEobmFtZUxpbWl0OiBudW1iZXIsIHByb3ZpZGVyOiBOb2RlQ29uc29sZVJlY2VpdmVyLCBkYXRhOiBhbnkpIHtcblx0Ly8gd3JpdGVSZXBlYXRzKDAsIHRydWUpO1xuXHQvLyB3cml0ZURhdGUoZGF0YS50aW1lKTtcblx0cmV0dXJuIGBcXHUwMDFCWzM1bSR7c3RyaW5naWZ5TmFtZShuYW1lTGltaXQsIHByb3ZpZGVyLm5hbWVMaW1pdCwgZGF0YS5uYW1lLCAnMW0nKX1cXHUwMDFCWzM0bSR7c3RyaW5naWZ5SWRlbnQobmFtZUxpbWl0LCBkYXRhLmlkZW50YXRpb25MZW5ndGgpfSBUIEZpbmlzaGVkICR7ZGF0YS50aW1lTmFtZX1cXHUwMDFCWzFtIGluICR7ZGF0YS50aW1lVGltZX1tc1xcdTAwMUJbMG1gO1xufVxuZnVuY3Rpb24gc3RyaW5naWZ5RGF0YShuYW1lTGltaXQ6IG51bWJlciwgZGF0YTogYW55KSB7XG5cdGxldCB1bmNvbG9yZWQgPSBmb3JtYXQoZGF0YS5saW5lLCAuLi5kYXRhLnBhcmFtcyB8fCBbXSk7XG5cdHJldHVybiB1bmNvbG9yZWQucmVwbGFjZSgveyhcXC8/KShbXn1dKyl9L2csICguLi5kOiBhbnlbXSkgPT4ge1xuXHRcdGlmICghYW5zaUNvbG9yc1tkWzJdXSkgcmV0dXJuIGRbMF07XG5cdFx0cmV0dXJuICdcXHUwMDFCWycgKyBhbnNpQ29sb3JzW2RbMl1dW2RbMV0gPT09ICcvJyA/IDEgOiAwXSArICdtJztcblx0fSk7XG59XG4vLyBjb25zdCBTVFJJUFBFRF9EQVRFPShuZXcgRGF0ZSgpKS50b0xvY2FsZVRpbWVTdHJpbmcoKS5yZXBsYWNlKC8uL2csICcgJyk7XG5mdW5jdGlvbiBzdHJpbmdpZnlDb21tb25EYXRhKG5hbWVMaW1pdDogbnVtYmVyLCBlc2NhcGVDb2RlOiBzdHJpbmcsIHByb3ZpZGVyOiBOb2RlQ29uc29sZVJlY2VpdmVyLCBkYXRhOiBhbnkpIHtcblx0Ly8gd3JpdGVSZXBlYXRzKGRhdGEucmVwZWF0cywgZmFsc2UpO1xuXHQvLyB3cml0ZURhdGUoZGF0YS50aW1lKTtcblx0Y29uc3Qgc3RyaW5ncyA9IGRhdGEuc3RyaW5nLnNwbGl0KCdcXG4nKTtcblx0bGV0IHJldCA9IGBcXHUwMDFCWzQwbSR7c3RyaW5naWZ5TmFtZShuYW1lTGltaXQsIHByb3ZpZGVyLm5hbWVMaW1pdCwgZGF0YS5uYW1lLCBlc2NhcGVDb2RlKX1cXHUwMDFCWzBtJHtzdHJpbmdpZnlJZGVudChuYW1lTGltaXQsIGRhdGEuaWRlbnRhdGlvbkxlbmd0aCl9JHtzdHJpbmdzLnNoaWZ0KCl9YDtcblx0Zm9yIChsZXQgc3RyaW5nIG9mIHN0cmluZ3MpIHtcblx0XHRyZXQgKz0gYFxcblxcdTAwMUJbNDBtJHtzdHJpbmdpZnlOYW1lKG5hbWVMaW1pdCwgcHJvdmlkZXIubmFtZUxpbWl0LCAnIHwnLCBlc2NhcGVDb2RlKX1cXHUwMDFCWzBtJHtzdHJpbmdpZnlJZGVudChuYW1lTGltaXQsIGRhdGEuaWRlbnRhdGlvbkxlbmd0aCl9JHtzdHJpbmd9YDtcblx0XHQvL2Ake3N0cmluZ2lmeUlkZW50KGRhdGEuaWRlbnRhdGlvbkxlbmd0aCl9JHtzdHJpbmdpZnlOYW1lKHByb3ZpZGVyLm5hbWVMaW1pdCwnfCcsZXNjYXBlQ29kZSl9ICR7c3RyaW5nfVxcbmA7XG5cdH1cblx0cmV0dXJuIHJldDtcbn1cbmZ1bmN0aW9uIHdyaXRlTG9nRGF0YShuYW1lTGltaXQ6IG51bWJlciwgcHJvdmlkZXI6IE5vZGVDb25zb2xlUmVjZWl2ZXIsIGRhdGE6IGFueSkge1xuXHR3cml0ZVN0ZG91dChzdHJpbmdpZnlDb21tb25EYXRhKG5hbWVMaW1pdCwgJzM0bScsIHByb3ZpZGVyLCBkYXRhKSArICdcXG4nKTtcbn1cbmZ1bmN0aW9uIHdyaXRlRXJyb3JEYXRhKG5hbWVMaW1pdDogbnVtYmVyLCBwcm92aWRlcjogTm9kZUNvbnNvbGVSZWNlaXZlciwgZGF0YTogYW55KSB7XG5cdHdyaXRlU3Rkb3V0KHN0cmluZ2lmeUNvbW1vbkRhdGEobmFtZUxpbWl0LCAnMzFtJywgcHJvdmlkZXIsIGRhdGEpICsgJ1xcbicpO1xufVxuZnVuY3Rpb24gd3JpdGVXYXJuaW5nRGF0YShuYW1lTGltaXQ6IG51bWJlciwgcHJvdmlkZXI6IE5vZGVDb25zb2xlUmVjZWl2ZXIsIGRhdGE6IGFueSkge1xuXHR3cml0ZVN0ZG91dChzdHJpbmdpZnlDb21tb25EYXRhKG5hbWVMaW1pdCwgJzMzbScsIHByb3ZpZGVyLCBkYXRhKSArICdcXG4nKTtcbn1cbmZ1bmN0aW9uIHdyaXRlRGVidWdEYXRhKG5hbWVMaW1pdDogbnVtYmVyLCBwcm92aWRlcjogTm9kZUNvbnNvbGVSZWNlaXZlciwgZGF0YTogYW55KSB7XG5cdHdyaXRlU3Rkb3V0KHN0cmluZ2lmeUNvbW1vbkRhdGEobmFtZUxpbWl0LCAnOTBtJywgcHJvdmlkZXIsIGRhdGEpICsgJ1xcbicpO1xufVxuXG5pbnRlcmZhY2UgSVByb2dyZXNzSXRlbSB7XG5cdG5hbWU6IHN0cmluZyxcblx0cHJvZ3Jlc3M6IG51bWJlcixcblx0dGltZTogbnVtYmVyXG59XG5jb25zdCBwcm9ncmVzc2VzOiB7IFtrZXk6IHN0cmluZ106IElQcm9ncmVzc0l0ZW0gfSA9IHt9O1xuZnVuY3Rpb24gcHJvZ3Jlc3NTdGFydChuYW1lTGltaXQ6IG51bWJlciwgcHJvdmlkZXI6IE5vZGVDb25zb2xlUmVjZWl2ZXIsIGRhdGE6IGFueSkge1xuXHRwcm9ncmVzc2VzW2RhdGEubmFtZV0gPSB7XG5cdFx0bmFtZTogZGF0YS5uYW1lLFxuXHRcdHByb2dyZXNzOiAwLFxuXHRcdHRpbWU6IGRhdGEudGltZVxuXHR9O1xufVxuZnVuY3Rpb24gcHJvZ3Jlc3NFbmQobmFtZUxpbWl0OiBudW1iZXIsIHByb3ZpZGVyOiBOb2RlQ29uc29sZVJlY2VpdmVyLCBkYXRhOiBhbnkpIHtcblx0ZGVsZXRlIHByb2dyZXNzZXNbZGF0YS5uYW1lXTtcbn1cbmZ1bmN0aW9uIHByb2dyZXNzKG5hbWVMaW1pdDogbnVtYmVyLCBwcm92aWRlcjogTm9kZUNvbnNvbGVSZWNlaXZlciwgZGF0YTogYW55KSB7XG5cdGlmICghcHJvZ3Jlc3Nlc1tkYXRhLm5hbWVdKVxuXHRcdHJldHVybjtcblx0cHJvZ3Jlc3Nlc1tkYXRhLm5hbWVdLnRpbWUgPSBkYXRhLnRpbWU7XG5cdHByb2dyZXNzZXNbZGF0YS5uYW1lXS5wcm9ncmVzcyA9IGRhdGEucHJvZ3Jlc3M7XG59XG5mdW5jdGlvbiByZW5kZXJQcm9ncmVzcyhuYW1lTGltaXQ6IG51bWJlcikge1xuXHRzYXZlKCk7XG5cdGxldCBpID0gMDtcblx0Zm9yIChsZXQgcHJvZ3Jlc3Mgb2YgT2JqZWN0LnZhbHVlcyhwcm9ncmVzc2VzKSkge1xuXHRcdG1vdmVDdXJzb3IoaSk7XG5cdFx0Y2xlYXJMaW5lKCk7XG5cdFx0bGV0IHBlcmNlbnQgPSBNYXRoLmNlaWwocHJvZ3Jlc3MucHJvZ3Jlc3MpO1xuXHRcdHdyaXRlU3Rkb3V0KGBcXHUwMDFCWzM0bSR7cHJvZ3Jlc3MubmFtZS5wYWRTdGFydChuYW1lTGltaXQpfSAkeyhwZXJjZW50ICsgJyUnKS5wYWRTdGFydCg0LCAnICcpfSAkeyd8Jy5yZXBlYXQoTWF0aC5jZWlsKCgocHJvY2Vzcy5zdGRvdXQgYXMgYW55KS5jb2x1bW5zIC0gMSAtIDMgLSAxIC0gMSAtIG5hbWVMaW1pdCkgLyAxMDAgKiBwZXJjZW50KSl9YCk7XG5cdFx0Ly8gd3JpdGVFc2NhcGUoJzM0bScpO1xuXHRcdC8vIHdyaXRlU3Rkb3V0KCg8SVByb2dyZXNzSXRlbT5wcm9ncmVzcykubmFtZS5wYWRTdGFydCgxOCwnICcpKTtcblx0XHQvLyB3cml0ZVN0ZG91dCgnICcpO1xuXHRcdC8vIHdyaXRlRGF0ZShwcm9ncmVzcy50aW1lKTtcblx0XHQvLyB3cml0ZVN0ZG91dCgnICcpO1xuXHRcdC8vIHdyaXRlU3Rkb3V0KChwZXJjZW50KyclJykucGFkU3RhcnQoNCwnICcpKTtcblx0XHQvLyB3cml0ZVN0ZG91dCgnICcpO1xuXHRcdC8vIHdyaXRlU3Rkb3V0KCd8Jy5yZXBlYXQoTWF0aC5jZWlsKCgoPGFueT5wcm9jZXNzLnN0ZG91dCkuY29sdW1ucy0xLTMtMS04LTEtMTgpLzEwMCpwZXJjZW50KSkpO1xuXHRcdGkrKztcblx0fVxuXG5cdHJlc3RvcmUoKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTm9kZUNvbnNvbGVSZWNlaXZlciBleHRlbmRzIEJhc2ljUmVjZWl2ZXIge1xuXHRuYW1lTGltaXQ6IG51bWJlcjtcblxuXHRjb25zdHJ1Y3RvcihuYW1lTGltaXQgPSAxOCkge1xuXHRcdHN1cGVyKCk7XG5cdFx0dGhpcy5uYW1lTGltaXQgPSBuYW1lTGltaXQ7XG5cdH1cblxuXHR3cml0ZShkYXRhOiBhbnkpIHtcblx0XHRsZXQgeyBuYW1lTGltaXQgfSA9IHRoaXM7XG5cdFx0aWYgKE9iamVjdC52YWx1ZXMocHJvZ3Jlc3NlcykubGVuZ3RoICE9PSAwKSB7XG5cdFx0XHRzdGFydEJ1ZmZlcmluZygpO1xuXHRcdH1cblx0XHRkYXRhLnN0cmluZyA9IHN0cmluZ2lmeURhdGEobmFtZUxpbWl0LCBkYXRhKTtcblx0XHQvLyBpZiAoZGF0YS5yZXBlYXRlZCkge1xuXHRcdC8vIFx0aWYoIXByb2Nlc3MuZW52Lk5PX0NPTExBUFNFKXtcblx0XHQvLyBcdFx0c2F2ZSgpO1xuXHRcdC8vIFx0XHR3cml0ZUVzY2FwZShkYXRhLnN0cmluZy5zcGxpdCgnXFxuJykubGVuZ3RoICsgJ0EnKTtcblx0XHQvLyBcdFx0Ly9kYXRhLnJlcGVhdHNcblx0XHQvLyBcdH1cblx0XHQvLyB9XG5cdFx0c3dpdGNoIChkYXRhLnR5cGUpIHtcblx0XHRcdGNhc2UgTE9HR0VSX0FDVElPTlMuSURFTlQ6XG5cdFx0XHRcdHdyaXRlU3Rkb3V0KHN0cmluZ2lmeUlkZW50RGF0YShuYW1lTGltaXQsIHRoaXMsIGRhdGEpICsgJ1xcbicpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgTE9HR0VSX0FDVElPTlMuREVFTlQ6XG5cdFx0XHRcdHdyaXRlU3Rkb3V0KHN0cmluZ2lmeURlZW50RGF0YShuYW1lTGltaXQsIHRoaXMsIGRhdGEpICsgJ1xcbicpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgTE9HR0VSX0FDVElPTlMuTE9HOlxuXHRcdFx0XHR3cml0ZUxvZ0RhdGEobmFtZUxpbWl0LCB0aGlzLCBkYXRhKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIExPR0dFUl9BQ1RJT05TLkVSUk9SOlxuXHRcdFx0XHR3cml0ZUVycm9yRGF0YShuYW1lTGltaXQsIHRoaXMsIGRhdGEpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgTE9HR0VSX0FDVElPTlMuV0FSTklORzpcblx0XHRcdFx0d3JpdGVXYXJuaW5nRGF0YShuYW1lTGltaXQsIHRoaXMsIGRhdGEpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgTE9HR0VSX0FDVElPTlMuREVCVUc6XG5cdFx0XHRcdGlmIChERUJVRyA9PT0gJyonIHx8IH5ERUJVRy5zcGxpdCgnLCcpLmluZGV4T2YoZGF0YS5uYW1lKSlcblx0XHRcdFx0XHR3cml0ZURlYnVnRGF0YShuYW1lTGltaXQsIHRoaXMsIGRhdGEpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgTE9HR0VSX0FDVElPTlMuVElNRV9TVEFSVDpcblx0XHRcdFx0d3JpdGVTdGRvdXQoc3RyaW5naWZ5VGltZVN0YXJ0RGF0YShuYW1lTGltaXQsIHRoaXMsIGRhdGEpICsgJ1xcbicpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgTE9HR0VSX0FDVElPTlMuVElNRV9FTkQ6XG5cdFx0XHRcdHdyaXRlU3Rkb3V0KHN0cmluZ2lmeVRpbWVFbmREYXRhKG5hbWVMaW1pdCwgdGhpcywgZGF0YSkgKyAnXFxuJyk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBMT0dHRVJfQUNUSU9OUy5QUk9HUkVTU19TVEFSVDpcblx0XHRcdFx0cHJvZ3Jlc3NTdGFydChuYW1lTGltaXQsIHRoaXMsIGRhdGEpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgTE9HR0VSX0FDVElPTlMuUFJPR1JFU1NfRU5EOlxuXHRcdFx0XHRwcm9ncmVzc0VuZChuYW1lTGltaXQsIHRoaXMsIGRhdGEpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgTE9HR0VSX0FDVElPTlMuUFJPR1JFU1M6XG5cdFx0XHRcdHByb2dyZXNzKG5hbWVMaW1pdCwgdGhpcywgZGF0YSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0Y29uc29sZS5fbG9nKGRhdGEpO1xuXHRcdH1cblx0XHQvLyBpZiAoZGF0YS5yZXBlYXRlZCkge1xuXHRcdC8vIFx0aWYoIXByb2Nlc3MuZW52Lk5PX0NPTExBUFNFKXJlc3RvcmUoKTtcblx0XHQvLyB9XG5cdFx0Ly8gVE9ETzogU3VwcG9ydCBmb3Igbm9uLXR0eSB0ZXJtaW5hbHNcblx0XHRpZiAoT2JqZWN0LnZhbHVlcyhwcm9ncmVzc2VzKS5sZW5ndGggIT09IDApIHtcblx0XHRcdHJlbmRlclByb2dyZXNzKG5hbWVMaW1pdCk7XG5cdFx0XHRmbHVzaEJ1ZmZlcigpO1xuXHRcdH1cblx0fVxufVxuXG5sZXQgdGVybWluYWxMb2dnZXIgPSBuZXcgTG9nZ2VyKCd0ZXJtaW5hbCcpO1xuXG5wcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIGUgPT4ge1xuXHR0ZXJtaW5hbExvZ2dlci5lcnIoJ1VuY2F1Z2h0RXhjZXB0aW9uOicpO1xuXHR0ZXJtaW5hbExvZ2dlci5lcnIoZS5zdGFjayk7XG5cdC8vIHByb2Nlc3MuZXhpdCgwKTtcbn0pO1xuXG5wcm9jZXNzLm9uKCd1bmhhbmRsZWRSZWplY3Rpb24nLCBlID0+IHtcblx0dGVybWluYWxMb2dnZXIuZXJyKCdVbmhhbmRsZWRSZWplY3Rpb246Jyk7XG5cdHRlcm1pbmFsTG9nZ2VyLmVycihlLnN0YWNrKTtcblx0Ly8gcHJvY2Vzcy5leGl0KDApO1xufSk7XG5cbi8vIHByb2Nlc3Mub24oJ3dhcm5pbmcnLCBlID0+IHtcbi8vIFx0dGVybWluYWxMb2dnZXIud2FybihlLnN0YWNrKTtcbi8vIH0pO1xuIl19

@@ -8,2 +8,4 @@ import util from 'util';

const DEBUG = process.env.DEBUG || '';
const { format } = util;

@@ -200,3 +202,4 @@

case LOGGER_ACTIONS.DEBUG:
writeDebugData(nameLimit, this, data);
if (DEBUG === '*' || ~DEBUG.split(',').indexOf(data.name))
writeDebugData(nameLimit, this, data);
break;

@@ -248,2 +251,2 @@ case LOGGER_ACTIONS.TIME_START:

// terminalLogger.warn(e.stack);
// });
// });

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc