UNPKG

biojs-io-wig

Version:
192 lines (155 loc) 15.2 kB
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ biojsiowig = require('./index'); },{"./index":2}],2:[function(require,module,exports){ module.exports = require("./lib/biojsiowig"); },{"./lib/biojsiowig":3}],3:[function(require,module,exports){ /* * biojs-io-wig * https://github.com/anilthanki/biojs-io-wig * * Copyright (c) 2014 Anil Thanki * Licensed under the Apache 2 license. */ /** @class biojsiowig */ /** * Private Methods */ /* * Public Methods */ /** * Method responsible to say Hello * * @example * * biojsiowig.getRef(wig_data); * * @method getRef * @param {String} data file * @return {String[]} Returns chromosome list */ var wig = { } /** * @method getRef * @param {String} data file * @return {String[]} Returns chromosome list */ module.exports.hello = function(name){ return "hello " + name; }; module.exports.getRef = function(data){ var max = 0 var data_split = data.split("\n") var data_len = data_split.length; var chrom = []; if (data.indexOf("variableStep") >= 0 || data.indexOf("fixedStep") >= 0) { for (var i = 0; i < data_len; i++) { if (data_split[i].indexOf("chrom") >= 0) { var chr = data_split[i].split(/\s+/)[1].split("=")[1]; if (chrom.indexOf(chr) < 0) { chrom.push(chr); } } } } else { alert("Unknown format detected") } return chrom; }; module.exports.parse = function(data, ref_chr) { var self = this; var flag = false; var wig_file = []; var max = 0 var data_split = data.split("\n") var data_len = data_split.length; var span = null; var ref = false; if (data.indexOf("variableStep") >= 0) { var data_split = data.split("\n") var data_len = data_split.length; for (var i = 0; i < data_len; i++) { if (data_split[i].indexOf("chrom") >= 0) { var chr = data_split[i].split(/\s+/)[1].split("=")[1]; flag = false; if (chr == ref_chr) { if (data_split[i].indexOf("span") >= 0) { span = data_split[i].split(/\s+/)[2].split("=")[1] } flag = true; ref = true; } } else if (data_split[i].indexOf("#") >= 0) { continue; } else if (flag) { var temp_data = data_split[i].split(/\s+/); wig_file.push([temp_data[0], temp_data[1], span]); if (parseInt(temp_data[1]) > parseInt(max)) { max = temp_data[1]; } } } if (ref == false) { alert("Selected reference not found") } else if (wig_file.length > 0) { var start = parseInt(wig_file[0][0]);//config.requestedStart; var stop = parseInt(wig_file[wig_file.length - 1][0]); } else { alert("No data for selected reference") } } else if (data.indexOf("fixedStep") >= 0) { var data_split = data.split("\n") var data_len = data_split.length; var start = null; var step = null; var ref = false; for (var i = 0; i < data_len; i++) { if (data_split[i].indexOf("chrom") >= 0) { var line = data_split[i].split(/\s+/); var chr = data_split[i].split(/\s+/)[1].split("=")[1]; flag = false; if (chr == ref_chr) { start = line[2].split("=")[1]; step = line[3].split("=")[1]; if (data_split[i].indexOf("span") >= 0) { span = line[4].split("=")[1] } flag = true; ref = true; } } else if (data_split[i].indexOf("#") >= 0) { continue; } else if (flag) { var temp_data = data_split[i]; start = parseInt(start) + parseInt(step) wig_file.push([start, temp_data, span]); if (parseInt(temp_data) > parseInt(max)) { max = temp_data; } } } if (ref == false) { alert("Selected reference not found") } else if (wig_file.length > 0) { var start = parseInt(wig_file[0][0]);//config.requestedStart; var stop = parseInt(wig_file[wig_file.length - 1][0]); } else if (start == null || step == null) { alert("Unknown format detected") } else { alert("No data for selected reference") } } else { alert("Unknown format detected") } return wig_file; } },{}]},{},[1]) //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy90aGFua2lhL2Jpb2pzMi9iaW9qcy1pby13aWcvbm9kZV9tb2R1bGVzL2d1bHAtYnJvd3NlcmlmeS9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS9ub2RlX21vZHVsZXMvYnJvd3Nlci1wYWNrL19wcmVsdWRlLmpzIiwiL1VzZXJzL3RoYW5raWEvYmlvanMyL2Jpb2pzLWlvLXdpZy9mYWtlX2JhZWNiYjllLmpzIiwiL1VzZXJzL3RoYW5raWEvYmlvanMyL2Jpb2pzLWlvLXdpZy9pbmRleC5qcyIsIi9Vc2Vycy90aGFua2lhL2Jpb2pzMi9iaW9qcy1pby13aWcvbGliL2Jpb2pzaW93aWcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUNBQTtBQUNBOztBQ0RBO0FBQ0E7O0FDREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBhPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShvLCEwKTt0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK28rXCInXCIpfXZhciBmPW5bb109e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChmLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gcyhuP246ZSl9LGYsZi5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW29dLmV4cG9ydHN9dmFyIGk9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSkiLCJiaW9qc2lvd2lnID0gcmVxdWlyZSgnLi9pbmRleCcpO1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi9saWIvYmlvanNpb3dpZ1wiKTtcbiIsIi8qXG4gKiBiaW9qcy1pby13aWdcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmlsdGhhbmtpL2Jpb2pzLWlvLXdpZ1xuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNCBBbmlsIFRoYW5raVxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSAyIGxpY2Vuc2UuXG4gKi9cblxuLyoqXG5AY2xhc3MgYmlvanNpb3dpZ1xuICovXG5cbi8qKlxuICogUHJpdmF0ZSBNZXRob2RzXG4gKi9cblxuLypcbiAqIFB1YmxpYyBNZXRob2RzXG4gKi9cblxuLyoqXG4gKiBNZXRob2QgcmVzcG9uc2libGUgdG8gc2F5IEhlbGxvXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiAgICAgYmlvanNpb3dpZy5nZXRSZWYod2lnX2RhdGEpO1xuICpcbiAqIEBtZXRob2QgZ2V0UmVmXG4gKiBAcGFyYW0ge1N0cmluZ30gZGF0YSBmaWxlXG4gKiBAcmV0dXJuIHtTdHJpbmdbXX0gUmV0dXJucyBjaHJvbW9zb21lIGxpc3RcbiAqL1xuXG52YXIgd2lnID0geyB9XG5cblxuIC8qKlxuICogQG1ldGhvZCBnZXRSZWZcbiAqIEBwYXJhbSB7U3RyaW5nfSBkYXRhIGZpbGVcbiAqIEByZXR1cm4ge1N0cmluZ1tdfSBSZXR1cm5zIGNocm9tb3NvbWUgbGlzdFxuICovXG5cblxubW9kdWxlLmV4cG9ydHMuaGVsbG8gPSBmdW5jdGlvbihuYW1lKXtcbiAgIHJldHVybiBcImhlbGxvIFwiICsgbmFtZTtcbn07XG5cbm1vZHVsZS5leHBvcnRzLmdldFJlZiA9IGZ1bmN0aW9uKGRhdGEpe1xuXHR2YXIgbWF4ID0gMFxuICAgIHZhciBkYXRhX3NwbGl0ID0gZGF0YS5zcGxpdChcIlxcblwiKVxuICAgIHZhciBkYXRhX2xlbiA9IGRhdGFfc3BsaXQubGVuZ3RoO1xuICAgIHZhciBjaHJvbSA9IFtdO1xuICAgIGlmIChkYXRhLmluZGV4T2YoXCJ2YXJpYWJsZVN0ZXBcIikgPj0gMCB8fCBkYXRhLmluZGV4T2YoXCJmaXhlZFN0ZXBcIikgPj0gMCkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGFfbGVuOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChkYXRhX3NwbGl0W2ldLmluZGV4T2YoXCJjaHJvbVwiKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNociA9IGRhdGFfc3BsaXRbaV0uc3BsaXQoL1xccysvKVsxXS5zcGxpdChcIj1cIilbMV07XG4gICAgICAgICAgICAgICAgaWYgKGNocm9tLmluZGV4T2YoY2hyKSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY2hyb20ucHVzaChjaHIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGFsZXJ0KFwiVW5rbm93biBmb3JtYXQgZGV0ZWN0ZWRcIilcbiAgICB9XG5cdHJldHVybiBjaHJvbTtcbn07XG5cbm1vZHVsZS5leHBvcnRzLnBhcnNlID0gZnVuY3Rpb24oZGF0YSwgcmVmX2Nocikge1xuICAgXHQgIFx0dmFyIHNlbGYgPSB0aGlzO1xuXHRcdHZhciBmbGFnID0gZmFsc2U7XG5cbiAgICAgICAgdmFyIHdpZ19maWxlID0gW107XG4gICAgICAgIHZhciBtYXggPSAwXG4gICAgICAgIHZhciBkYXRhX3NwbGl0ID0gZGF0YS5zcGxpdChcIlxcblwiKVxuICAgICAgICB2YXIgZGF0YV9sZW4gPSBkYXRhX3NwbGl0Lmxlbmd0aDtcbiAgICAgICAgdmFyIHNwYW4gPSBudWxsO1xuICAgICAgICB2YXIgcmVmID0gZmFsc2U7XG4gICAgICAgIGlmIChkYXRhLmluZGV4T2YoXCJ2YXJpYWJsZVN0ZXBcIikgPj0gMCkge1xuXG4gICAgICAgICAgICB2YXIgZGF0YV9zcGxpdCA9IGRhdGEuc3BsaXQoXCJcXG5cIilcbiAgICAgICAgICAgIHZhciBkYXRhX2xlbiA9IGRhdGFfc3BsaXQubGVuZ3RoO1xuXG5cbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YV9sZW47IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChkYXRhX3NwbGl0W2ldLmluZGV4T2YoXCJjaHJvbVwiKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBjaHIgPSBkYXRhX3NwbGl0W2ldLnNwbGl0KC9cXHMrLylbMV0uc3BsaXQoXCI9XCIpWzFdO1xuICAgICAgICAgICAgICAgICAgICBmbGFnID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjaHIgPT0gcmVmX2Nocikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFfc3BsaXRbaV0uaW5kZXhPZihcInNwYW5cIikgPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYW4gPSBkYXRhX3NwbGl0W2ldLnNwbGl0KC9cXHMrLylbMl0uc3BsaXQoXCI9XCIpWzFdXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBmbGFnID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YV9zcGxpdFtpXS5pbmRleE9mKFwiI1wiKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZmxhZykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGVtcF9kYXRhID0gZGF0YV9zcGxpdFtpXS5zcGxpdCgvXFxzKy8pO1xuICAgICAgICAgICAgICAgICAgICB3aWdfZmlsZS5wdXNoKFt0ZW1wX2RhdGFbMF0sIHRlbXBfZGF0YVsxXSwgc3Bhbl0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VJbnQodGVtcF9kYXRhWzFdKSA+IHBhcnNlSW50KG1heCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heCA9IHRlbXBfZGF0YVsxXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuXG4gICAgICAgICAgICBpZiAocmVmID09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgYWxlcnQoXCJTZWxlY3RlZCByZWZlcmVuY2Ugbm90IGZvdW5kXCIpXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHdpZ19maWxlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB2YXIgc3RhcnQgPSBwYXJzZUludCh3aWdfZmlsZVswXVswXSk7Ly9jb25maWcucmVxdWVzdGVkU3RhcnQ7XG4gICAgICAgICAgICAgICAgdmFyIHN0b3AgPSBwYXJzZUludCh3aWdfZmlsZVt3aWdfZmlsZS5sZW5ndGggLSAxXVswXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBhbGVydChcIk5vIGRhdGEgZm9yIHNlbGVjdGVkIHJlZmVyZW5jZVwiKVxuICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChkYXRhLmluZGV4T2YoXCJmaXhlZFN0ZXBcIikgPj0gMCkge1xuICAgICAgICAgICAgdmFyIGRhdGFfc3BsaXQgPSBkYXRhLnNwbGl0KFwiXFxuXCIpXG4gICAgICAgICAgICB2YXIgZGF0YV9sZW4gPSBkYXRhX3NwbGl0Lmxlbmd0aDtcbiAgICAgICAgICAgIHZhciBzdGFydCA9IG51bGw7XG4gICAgICAgICAgICB2YXIgc3RlcCA9IG51bGw7XG4gICAgICAgICAgICB2YXIgcmVmID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YV9sZW47IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChkYXRhX3NwbGl0W2ldLmluZGV4T2YoXCJjaHJvbVwiKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBsaW5lID0gZGF0YV9zcGxpdFtpXS5zcGxpdCgvXFxzKy8pO1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBjaHIgPSBkYXRhX3NwbGl0W2ldLnNwbGl0KC9cXHMrLylbMV0uc3BsaXQoXCI9XCIpWzFdO1xuICAgICAgICAgICAgICAgICAgICBmbGFnID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNociA9PSByZWZfY2hyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydCA9IGxpbmVbMl0uc3BsaXQoXCI9XCIpWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcCA9IGxpbmVbM10uc3BsaXQoXCI9XCIpWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFfc3BsaXRbaV0uaW5kZXhPZihcInNwYW5cIikgPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYW4gPSBsaW5lWzRdLnNwbGl0KFwiPVwiKVsxXVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBmbGFnID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YV9zcGxpdFtpXS5pbmRleE9mKFwiI1wiKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZmxhZykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGVtcF9kYXRhID0gZGF0YV9zcGxpdFtpXTtcbiAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBwYXJzZUludChzdGFydCkgKyBwYXJzZUludChzdGVwKVxuICAgICAgICAgICAgICAgICAgICB3aWdfZmlsZS5wdXNoKFtzdGFydCwgdGVtcF9kYXRhLCBzcGFuXSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZUludCh0ZW1wX2RhdGEpID4gcGFyc2VJbnQobWF4KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF4ID0gdGVtcF9kYXRhO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgIGlmIChyZWYgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBhbGVydChcIlNlbGVjdGVkIHJlZmVyZW5jZSBub3QgZm91bmRcIilcbiAgICAgICAgICAgIH0gZWxzZSBpZiAod2lnX2ZpbGUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHZhciBzdGFydCA9IHBhcnNlSW50KHdpZ19maWxlWzBdWzBdKTsvL2NvbmZpZy5yZXF1ZXN0ZWRTdGFydDtcbiAgICAgICAgICAgICAgICB2YXIgc3RvcCA9IHBhcnNlSW50KHdpZ19maWxlW3dpZ19maWxlLmxlbmd0aCAtIDFdWzBdKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhcnQgPT0gbnVsbCB8fCBzdGVwID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBhbGVydChcIlVua25vd24gZm9ybWF0IGRldGVjdGVkXCIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBhbGVydChcIk5vIGRhdGEgZm9yIHNlbGVjdGVkIHJlZmVyZW5jZVwiKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYWxlcnQoXCJVbmtub3duIGZvcm1hdCBkZXRlY3RlZFwiKVxuICAgICAgICB9XG4gICAgXG5cbiAgICByZXR1cm4gd2lnX2ZpbGU7XG59XG5cblxuIFxuXG5cblxuIl19