UNPKG

project-braingames-simply

Version:
122 lines (110 loc) 13.8 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.runGcdGame = exports.runCalcGame = exports.runEvenGame = undefined; var _readlineSync = require('readline-sync'); var _readlineSync2 = _interopRequireDefault(_readlineSync); var _commonFuncs = require('./commonFuncs'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var getRandom = function getRandom(minNum, maxNum) { var min = minNum || 0; var max = maxNum || 100; return Math.floor(Math.random() * (max - min + 1)) + min; }; var isCorrect = function isCorrect(user, userAnswer, rightAnswer) { if (userAnswer === rightAnswer) { console.log('Correct!'); } else { console.log('"' + userAnswer + '" is wrong answer ;(. Correct answer was "' + rightAnswer + '"'); console.log('Let\'s try again, ' + user + '!'); } return userAnswer === rightAnswer; }; var getGCD = function getGCD(a, b) { var maxNum = a > b ? a : b; var gcd = 1; for (var i = 1; i <= maxNum; i += 1) { if (a % i === 0 && b % i === 0) gcd = i; } return gcd; }; var runEvenGame = function runEvenGame(user, times) { if (!user) (0, _commonFuncs.welcome)(); console.log('Answer "yes" if number even otherwise answer "no".'); var runTimes = times || 3; var userName = user || (0, _commonFuncs.askName)(); for (var i = 0; i < runTimes; i += 1) { var numQuestion = getRandom(); console.log('Question: ' + numQuestion); var rightAnswer = numQuestion % 2 === 0 ? 'yes' : 'no'; var userAnswer = _readlineSync2.default.question('Your answer: '); if (!isCorrect(userName, userAnswer, rightAnswer)) return; } console.log('Congratulations, ' + userName + '!'); }; var runCalcGame = function runCalcGame(user, times) { if (!user) (0, _commonFuncs.welcome)(); console.log('What is the result of the expression?'); var runTimes = times || 3; var userName = user || (0, _commonFuncs.askName)(); var expressionType = ['add', 'substract', 'multiply']; var expressionTypeLength = expressionType.length - 1; var add = function add(a, b) { return a + b; }; var substract = function substract(a, b) { return a - b; }; var multiply = function multiply(a, b) { return a * b; }; for (var i = 0; i < runTimes; i += 1) { var a = getRandom(); var b = getRandom(); var expressionTypeNumber = getRandom(0, expressionTypeLength); var rightAnswer = void 0; var userAnswer = void 0; switch (expressionTypeNumber) { case 0: console.log('Question: ' + a + ' + ' + b); rightAnswer = add(a, b); userAnswer = _readlineSync2.default.question('Your answer: '); break; case 1: console.log('Question: ' + a + ' - ' + b); rightAnswer = substract(a, b); userAnswer = _readlineSync2.default.question('Your answer: '); break; case 2: console.log('Question: ' + a + ' * ' + b); rightAnswer = multiply(a, b); userAnswer = _readlineSync2.default.question('Your answer: '); break; default: break; } if (!isCorrect(userName, Number(userAnswer), rightAnswer)) return; } console.log('Congratulations, ' + userName + '!'); }; var runGcdGame = function runGcdGame(user, times) { if (!user) (0, _commonFuncs.welcome)(); console.log('Find the greatest common divisor of given numbers.'); var runTimes = times || 3; var userName = user || (0, _commonFuncs.askName)(); for (var i = 0; i < runTimes; i += 1) { var multiply = getRandom(1, 10); var a = getRandom(1, 10) * multiply; var b = getRandom(1, 10) * multiply; var rightAnswer = getGCD(a, b); console.log('Question: ' + a + ' ' + b); var userAnswer = _readlineSync2.default.question('Your answer: '); if (!isCorrect(userName, Number(userAnswer), rightAnswer)) return; } console.log('Congratulations, ' + userName + '!'); }; exports.runEvenGame = runEvenGame; exports.runCalcGame = runCalcGame; exports.runGcdGame = runGcdGame; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9nYW1lcy5qcyJdLCJuYW1lcyI6WyJnZXRSYW5kb20iLCJtaW5OdW0iLCJtYXhOdW0iLCJtaW4iLCJtYXgiLCJNYXRoIiwiZmxvb3IiLCJyYW5kb20iLCJpc0NvcnJlY3QiLCJ1c2VyIiwidXNlckFuc3dlciIsInJpZ2h0QW5zd2VyIiwiY29uc29sZSIsImxvZyIsImdldEdDRCIsImEiLCJiIiwiZ2NkIiwiaSIsInJ1bkV2ZW5HYW1lIiwidGltZXMiLCJydW5UaW1lcyIsInVzZXJOYW1lIiwibnVtUXVlc3Rpb24iLCJyZWFkbGluZVN5bmMiLCJxdWVzdGlvbiIsInJ1bkNhbGNHYW1lIiwiZXhwcmVzc2lvblR5cGUiLCJleHByZXNzaW9uVHlwZUxlbmd0aCIsImxlbmd0aCIsImFkZCIsInN1YnN0cmFjdCIsIm11bHRpcGx5IiwiZXhwcmVzc2lvblR5cGVOdW1iZXIiLCJOdW1iZXIiLCJydW5HY2RHYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Ozs7QUFDQTs7OztBQUVBLElBQU1BLFlBQVksU0FBWkEsU0FBWSxDQUFDQyxNQUFELEVBQVNDLE1BQVQsRUFBb0I7QUFDcEMsTUFBTUMsTUFBTUYsVUFBVSxDQUF0QjtBQUNBLE1BQU1HLE1BQU1GLFVBQVUsR0FBdEI7QUFDQSxTQUFPRyxLQUFLQyxLQUFMLENBQVdELEtBQUtFLE1BQUwsTUFBaUJILE1BQU1ELEdBQU4sR0FBWSxDQUE3QixDQUFYLElBQThDQSxHQUFyRDtBQUNELENBSkQ7O0FBTUEsSUFBTUssWUFBWSxTQUFaQSxTQUFZLENBQUNDLElBQUQsRUFBT0MsVUFBUCxFQUFtQkMsV0FBbkIsRUFBbUM7QUFDbkQsTUFBSUQsZUFBZUMsV0FBbkIsRUFBZ0M7QUFDOUJDLFlBQVFDLEdBQVIsQ0FBWSxVQUFaO0FBQ0QsR0FGRCxNQUVPO0FBQ0xELFlBQVFDLEdBQVIsT0FBZ0JILFVBQWhCLGtEQUF1RUMsV0FBdkU7QUFDQUMsWUFBUUMsR0FBUix3QkFBZ0NKLElBQWhDO0FBQ0Q7QUFDRCxTQUFPQyxlQUFlQyxXQUF0QjtBQUNELENBUkQ7O0FBVUEsSUFBTUcsU0FBUyxTQUFUQSxNQUFTLENBQUNDLENBQUQsRUFBSUMsQ0FBSixFQUFVO0FBQ3ZCLE1BQU1kLFNBQVNhLElBQUlDLENBQUosR0FBUUQsQ0FBUixHQUFZQyxDQUEzQjtBQUNBLE1BQUlDLE1BQU0sQ0FBVjtBQUNBLE9BQUssSUFBSUMsSUFBSSxDQUFiLEVBQWdCQSxLQUFLaEIsTUFBckIsRUFBNkJnQixLQUFLLENBQWxDLEVBQXFDO0FBQ25DLFFBQUlILElBQUlHLENBQUosS0FBVSxDQUFWLElBQWVGLElBQUlFLENBQUosS0FBVSxDQUE3QixFQUFnQ0QsTUFBTUMsQ0FBTjtBQUNqQztBQUNELFNBQU9ELEdBQVA7QUFDRCxDQVBEOztBQVNBLElBQU1FLGNBQWMsU0FBZEEsV0FBYyxDQUFDVixJQUFELEVBQU9XLEtBQVAsRUFBaUI7QUFDbkMsTUFBSSxDQUFDWCxJQUFMLEVBQVc7QUFDWEcsVUFBUUMsR0FBUixDQUFZLG9EQUFaO0FBQ0EsTUFBTVEsV0FBV0QsU0FBUyxDQUExQjtBQUNBLE1BQU1FLFdBQVdiLFFBQVEsMkJBQXpCO0FBQ0EsT0FBSyxJQUFJUyxJQUFJLENBQWIsRUFBZ0JBLElBQUlHLFFBQXBCLEVBQThCSCxLQUFLLENBQW5DLEVBQXNDO0FBQ3BDLFFBQU1LLGNBQWN2QixXQUFwQjtBQUNBWSxZQUFRQyxHQUFSLGdCQUF5QlUsV0FBekI7QUFDQSxRQUFNWixjQUFjWSxjQUFjLENBQWQsS0FBb0IsQ0FBcEIsR0FBd0IsS0FBeEIsR0FBZ0MsSUFBcEQ7QUFDQSxRQUFNYixhQUFhYyx1QkFBYUMsUUFBYixDQUFzQixlQUF0QixDQUFuQjtBQUNBLFFBQUksQ0FBQ2pCLFVBQVVjLFFBQVYsRUFBb0JaLFVBQXBCLEVBQWdDQyxXQUFoQyxDQUFMLEVBQW1EO0FBQ3BEO0FBQ0RDLFVBQVFDLEdBQVIsdUJBQWdDUyxRQUFoQztBQUNELENBYkQ7O0FBZUEsSUFBTUksY0FBYyxTQUFkQSxXQUFjLENBQUNqQixJQUFELEVBQU9XLEtBQVAsRUFBaUI7QUFDbkMsTUFBSSxDQUFDWCxJQUFMLEVBQVc7QUFDWEcsVUFBUUMsR0FBUixDQUFZLHVDQUFaO0FBQ0EsTUFBTVEsV0FBV0QsU0FBUyxDQUExQjtBQUNBLE1BQU1FLFdBQVdiLFFBQVEsMkJBQXpCO0FBQ0EsTUFBTWtCLGlCQUFpQixDQUFDLEtBQUQsRUFBUSxXQUFSLEVBQXFCLFVBQXJCLENBQXZCO0FBQ0EsTUFBTUMsdUJBQXVCRCxlQUFlRSxNQUFmLEdBQXdCLENBQXJEO0FBQ0EsTUFBTUMsTUFBTSxTQUFOQSxHQUFNLENBQUNmLENBQUQsRUFBSUMsQ0FBSjtBQUFBLFdBQVVELElBQUlDLENBQWQ7QUFBQSxHQUFaO0FBQ0EsTUFBTWUsWUFBWSxTQUFaQSxTQUFZLENBQUNoQixDQUFELEVBQUlDLENBQUo7QUFBQSxXQUFVRCxJQUFJQyxDQUFkO0FBQUEsR0FBbEI7QUFDQSxNQUFNZ0IsV0FBVyxTQUFYQSxRQUFXLENBQUNqQixDQUFELEVBQUlDLENBQUo7QUFBQSxXQUFVRCxJQUFJQyxDQUFkO0FBQUEsR0FBakI7QUFDQSxPQUFLLElBQUlFLElBQUksQ0FBYixFQUFnQkEsSUFBSUcsUUFBcEIsRUFBOEJILEtBQUssQ0FBbkMsRUFBc0M7QUFDcEMsUUFBTUgsSUFBSWYsV0FBVjtBQUNBLFFBQU1nQixJQUFJaEIsV0FBVjtBQUNBLFFBQU1pQyx1QkFBdUJqQyxVQUFVLENBQVYsRUFBYTRCLG9CQUFiLENBQTdCO0FBQ0EsUUFBSWpCLG9CQUFKO0FBQ0EsUUFBSUQsbUJBQUo7QUFDQSxZQUFRdUIsb0JBQVI7QUFDRSxXQUFLLENBQUw7QUFDRXJCLGdCQUFRQyxHQUFSLGdCQUF5QkUsQ0FBekIsV0FBZ0NDLENBQWhDO0FBQ0FMLHNCQUFjbUIsSUFBSWYsQ0FBSixFQUFPQyxDQUFQLENBQWQ7QUFDQU4scUJBQWFjLHVCQUFhQyxRQUFiLENBQXNCLGVBQXRCLENBQWI7QUFDQTtBQUNGLFdBQUssQ0FBTDtBQUNFYixnQkFBUUMsR0FBUixnQkFBeUJFLENBQXpCLFdBQWdDQyxDQUFoQztBQUNBTCxzQkFBY29CLFVBQVVoQixDQUFWLEVBQWFDLENBQWIsQ0FBZDtBQUNBTixxQkFBYWMsdUJBQWFDLFFBQWIsQ0FBc0IsZUFBdEIsQ0FBYjtBQUNBO0FBQ0YsV0FBSyxDQUFMO0FBQ0ViLGdCQUFRQyxHQUFSLGdCQUF5QkUsQ0FBekIsV0FBZ0NDLENBQWhDO0FBQ0FMLHNCQUFjcUIsU0FBU2pCLENBQVQsRUFBWUMsQ0FBWixDQUFkO0FBQ0FOLHFCQUFhYyx1QkFBYUMsUUFBYixDQUFzQixlQUF0QixDQUFiO0FBQ0E7QUFDRjtBQUNFO0FBakJKO0FBbUJBLFFBQUksQ0FBQ2pCLFVBQVVjLFFBQVYsRUFBb0JZLE9BQU94QixVQUFQLENBQXBCLEVBQXdDQyxXQUF4QyxDQUFMLEVBQTJEO0FBQzVEO0FBQ0RDLFVBQVFDLEdBQVIsdUJBQWdDUyxRQUFoQztBQUNELENBdENEOztBQXdDQSxJQUFNYSxhQUFhLFNBQWJBLFVBQWEsQ0FBQzFCLElBQUQsRUFBT1csS0FBUCxFQUFpQjtBQUNsQyxNQUFJLENBQUNYLElBQUwsRUFBVztBQUNYRyxVQUFRQyxHQUFSLENBQVksb0RBQVo7QUFDQSxNQUFNUSxXQUFXRCxTQUFTLENBQTFCO0FBQ0EsTUFBTUUsV0FBV2IsUUFBUSwyQkFBekI7QUFDQSxPQUFLLElBQUlTLElBQUksQ0FBYixFQUFnQkEsSUFBSUcsUUFBcEIsRUFBOEJILEtBQUssQ0FBbkMsRUFBc0M7QUFDcEMsUUFBTWMsV0FBV2hDLFVBQVUsQ0FBVixFQUFhLEVBQWIsQ0FBakI7QUFDQSxRQUFNZSxJQUFJZixVQUFVLENBQVYsRUFBYSxFQUFiLElBQW1CZ0MsUUFBN0I7QUFDQSxRQUFNaEIsSUFBSWhCLFVBQVUsQ0FBVixFQUFhLEVBQWIsSUFBbUJnQyxRQUE3QjtBQUNBLFFBQU1yQixjQUFjRyxPQUFPQyxDQUFQLEVBQVVDLENBQVYsQ0FBcEI7QUFDQUosWUFBUUMsR0FBUixnQkFBeUJFLENBQXpCLFNBQThCQyxDQUE5QjtBQUNBLFFBQU1OLGFBQWFjLHVCQUFhQyxRQUFiLENBQXNCLGVBQXRCLENBQW5CO0FBQ0EsUUFBSSxDQUFDakIsVUFBVWMsUUFBVixFQUFvQlksT0FBT3hCLFVBQVAsQ0FBcEIsRUFBd0NDLFdBQXhDLENBQUwsRUFBMkQ7QUFDNUQ7QUFDREMsVUFBUUMsR0FBUix1QkFBZ0NTLFFBQWhDO0FBQ0QsQ0FmRDs7UUFpQlNILFcsR0FBQUEsVztRQUFhTyxXLEdBQUFBLFc7UUFBYVMsVSxHQUFBQSxVIiwiZmlsZSI6ImdhbWVzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlYWRsaW5lU3luYyBmcm9tICdyZWFkbGluZS1zeW5jJztcbmltcG9ydCB7IHdlbGNvbWUsIGFza05hbWUgfSBmcm9tICcuL2NvbW1vbkZ1bmNzJztcblxuY29uc3QgZ2V0UmFuZG9tID0gKG1pbk51bSwgbWF4TnVtKSA9PiB7XG4gIGNvbnN0IG1pbiA9IG1pbk51bSB8fCAwO1xuICBjb25zdCBtYXggPSBtYXhOdW0gfHwgMTAwO1xuICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbiArIDEpKSArIG1pbjtcbn07XG5cbmNvbnN0IGlzQ29ycmVjdCA9ICh1c2VyLCB1c2VyQW5zd2VyLCByaWdodEFuc3dlcikgPT4ge1xuICBpZiAodXNlckFuc3dlciA9PT0gcmlnaHRBbnN3ZXIpIHtcbiAgICBjb25zb2xlLmxvZygnQ29ycmVjdCEnKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmxvZyhgXCIke3VzZXJBbnN3ZXJ9XCIgaXMgd3JvbmcgYW5zd2VyIDsoLiBDb3JyZWN0IGFuc3dlciB3YXMgXCIke3JpZ2h0QW5zd2VyfVwiYCk7XG4gICAgY29uc29sZS5sb2coYExldCdzIHRyeSBhZ2FpbiwgJHt1c2VyfSFgKTtcbiAgfVxuICByZXR1cm4gdXNlckFuc3dlciA9PT0gcmlnaHRBbnN3ZXI7XG59O1xuXG5jb25zdCBnZXRHQ0QgPSAoYSwgYikgPT4ge1xuICBjb25zdCBtYXhOdW0gPSBhID4gYiA/IGEgOiBiO1xuICBsZXQgZ2NkID0gMTtcbiAgZm9yIChsZXQgaSA9IDE7IGkgPD0gbWF4TnVtOyBpICs9IDEpIHtcbiAgICBpZiAoYSAlIGkgPT09IDAgJiYgYiAlIGkgPT09IDApIGdjZCA9IGk7XG4gIH1cbiAgcmV0dXJuIGdjZDtcbn07XG5cbmNvbnN0IHJ1bkV2ZW5HYW1lID0gKHVzZXIsIHRpbWVzKSA9PiB7XG4gIGlmICghdXNlcikgd2VsY29tZSgpO1xuICBjb25zb2xlLmxvZygnQW5zd2VyIFwieWVzXCIgaWYgbnVtYmVyIGV2ZW4gb3RoZXJ3aXNlIGFuc3dlciBcIm5vXCIuJyk7XG4gIGNvbnN0IHJ1blRpbWVzID0gdGltZXMgfHwgMztcbiAgY29uc3QgdXNlck5hbWUgPSB1c2VyIHx8IGFza05hbWUoKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBydW5UaW1lczsgaSArPSAxKSB7XG4gICAgY29uc3QgbnVtUXVlc3Rpb24gPSBnZXRSYW5kb20oKTtcbiAgICBjb25zb2xlLmxvZyhgUXVlc3Rpb246ICR7bnVtUXVlc3Rpb259YCk7XG4gICAgY29uc3QgcmlnaHRBbnN3ZXIgPSBudW1RdWVzdGlvbiAlIDIgPT09IDAgPyAneWVzJyA6ICdubyc7XG4gICAgY29uc3QgdXNlckFuc3dlciA9IHJlYWRsaW5lU3luYy5xdWVzdGlvbignWW91ciBhbnN3ZXI6ICcpO1xuICAgIGlmICghaXNDb3JyZWN0KHVzZXJOYW1lLCB1c2VyQW5zd2VyLCByaWdodEFuc3dlcikpIHJldHVybjtcbiAgfVxuICBjb25zb2xlLmxvZyhgQ29uZ3JhdHVsYXRpb25zLCAke3VzZXJOYW1lfSFgKTtcbn07XG5cbmNvbnN0IHJ1bkNhbGNHYW1lID0gKHVzZXIsIHRpbWVzKSA9PiB7XG4gIGlmICghdXNlcikgd2VsY29tZSgpO1xuICBjb25zb2xlLmxvZygnV2hhdCBpcyB0aGUgcmVzdWx0IG9mIHRoZSBleHByZXNzaW9uPycpO1xuICBjb25zdCBydW5UaW1lcyA9IHRpbWVzIHx8IDM7XG4gIGNvbnN0IHVzZXJOYW1lID0gdXNlciB8fCBhc2tOYW1lKCk7XG4gIGNvbnN0IGV4cHJlc3Npb25UeXBlID0gWydhZGQnLCAnc3Vic3RyYWN0JywgJ211bHRpcGx5J107XG4gIGNvbnN0IGV4cHJlc3Npb25UeXBlTGVuZ3RoID0gZXhwcmVzc2lvblR5cGUubGVuZ3RoIC0gMTtcbiAgY29uc3QgYWRkID0gKGEsIGIpID0+IGEgKyBiO1xuICBjb25zdCBzdWJzdHJhY3QgPSAoYSwgYikgPT4gYSAtIGI7XG4gIGNvbnN0IG11bHRpcGx5ID0gKGEsIGIpID0+IGEgKiBiO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHJ1blRpbWVzOyBpICs9IDEpIHtcbiAgICBjb25zdCBhID0gZ2V0UmFuZG9tKCk7XG4gICAgY29uc3QgYiA9IGdldFJhbmRvbSgpO1xuICAgIGNvbnN0IGV4cHJlc3Npb25UeXBlTnVtYmVyID0gZ2V0UmFuZG9tKDAsIGV4cHJlc3Npb25UeXBlTGVuZ3RoKTtcbiAgICBsZXQgcmlnaHRBbnN3ZXI7XG4gICAgbGV0IHVzZXJBbnN3ZXI7XG4gICAgc3dpdGNoIChleHByZXNzaW9uVHlwZU51bWJlcikge1xuICAgICAgY2FzZSAwOlxuICAgICAgICBjb25zb2xlLmxvZyhgUXVlc3Rpb246ICR7YX0gKyAke2J9YCk7XG4gICAgICAgIHJpZ2h0QW5zd2VyID0gYWRkKGEsIGIpO1xuICAgICAgICB1c2VyQW5zd2VyID0gcmVhZGxpbmVTeW5jLnF1ZXN0aW9uKCdZb3VyIGFuc3dlcjogJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxOlxuICAgICAgICBjb25zb2xlLmxvZyhgUXVlc3Rpb246ICR7YX0gLSAke2J9YCk7XG4gICAgICAgIHJpZ2h0QW5zd2VyID0gc3Vic3RyYWN0KGEsIGIpO1xuICAgICAgICB1c2VyQW5zd2VyID0gcmVhZGxpbmVTeW5jLnF1ZXN0aW9uKCdZb3VyIGFuc3dlcjogJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBjb25zb2xlLmxvZyhgUXVlc3Rpb246ICR7YX0gKiAke2J9YCk7XG4gICAgICAgIHJpZ2h0QW5zd2VyID0gbXVsdGlwbHkoYSwgYik7XG4gICAgICAgIHVzZXJBbnN3ZXIgPSByZWFkbGluZVN5bmMucXVlc3Rpb24oJ1lvdXIgYW5zd2VyOiAnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgaWYgKCFpc0NvcnJlY3QodXNlck5hbWUsIE51bWJlcih1c2VyQW5zd2VyKSwgcmlnaHRBbnN3ZXIpKSByZXR1cm47XG4gIH1cbiAgY29uc29sZS5sb2coYENvbmdyYXR1bGF0aW9ucywgJHt1c2VyTmFtZX0hYCk7XG59O1xuXG5jb25zdCBydW5HY2RHYW1lID0gKHVzZXIsIHRpbWVzKSA9PiB7XG4gIGlmICghdXNlcikgd2VsY29tZSgpO1xuICBjb25zb2xlLmxvZygnRmluZCB0aGUgZ3JlYXRlc3QgY29tbW9uIGRpdmlzb3Igb2YgZ2l2ZW4gbnVtYmVycy4nKTtcbiAgY29uc3QgcnVuVGltZXMgPSB0aW1lcyB8fCAzO1xuICBjb25zdCB1c2VyTmFtZSA9IHVzZXIgfHwgYXNrTmFtZSgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHJ1blRpbWVzOyBpICs9IDEpIHtcbiAgICBjb25zdCBtdWx0aXBseSA9IGdldFJhbmRvbSgxLCAxMCk7XG4gICAgY29uc3QgYSA9IGdldFJhbmRvbSgxLCAxMCkgKiBtdWx0aXBseTtcbiAgICBjb25zdCBiID0gZ2V0UmFuZG9tKDEsIDEwKSAqIG11bHRpcGx5O1xuICAgIGNvbnN0IHJpZ2h0QW5zd2VyID0gZ2V0R0NEKGEsIGIpO1xuICAgIGNvbnNvbGUubG9nKGBRdWVzdGlvbjogJHthfSAke2J9YCk7XG4gICAgY29uc3QgdXNlckFuc3dlciA9IHJlYWRsaW5lU3luYy5xdWVzdGlvbignWW91ciBhbnN3ZXI6ICcpO1xuICAgIGlmICghaXNDb3JyZWN0KHVzZXJOYW1lLCBOdW1iZXIodXNlckFuc3dlciksIHJpZ2h0QW5zd2VyKSkgcmV0dXJuO1xuICB9XG4gIGNvbnNvbGUubG9nKGBDb25ncmF0dWxhdGlvbnMsICR7dXNlck5hbWV9IWApO1xufTtcblxuZXhwb3J0IHsgcnVuRXZlbkdhbWUsIHJ1bkNhbGNHYW1lLCBydW5HY2RHYW1lIH07XG4iXX0=