UNPKG

rr-table

Version:

Responsive and customizable React Table

193 lines (187 loc) 21.9 kB
"use strict"; var _index = _interopRequireDefault(require("./index")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } describe('selectItems', function () { var data = { name: 'Anne', surname: 'bella', info: { age: 35, color: 'blue' }, company: { job: 'singer' }, pets: ['dog', 'cat'] }; it('should return [data] when data is a string', function () { var items = (0, _index.default)({ data: 'hello' }); expect(items).toEqual(['hello']); }); it('should return an array of only the strings from the data when there is no keys', function () { var expected = ['Anne', 'bella']; var items = (0, _index.default)({ data: data }); expect(items).toEqual(expected); }); it('should return an array of values of the listed keys', function () { var keys = ['name', 'surname', 'info.age', 'company.job', 'pets[0]']; var expected = ['Anne', 'bella', 35, 'singer', 'dog']; var items = (0, _index.default)({ data: data, keys: keys }); expect(items).toEqual(expected); }); it('should return an array of values of the listed keys - one cell should accept an array of string', function () { var keys = ['name', 'surname', 'info.age', 'company.job', 'pets']; var separator = ', '; var expected = ['Anne', 'bella', 35, 'singer', 'dog, cat']; var items = (0, _index.default)({ data: data, keys: keys, separator: separator }); expect(items).toEqual(expected); }); it('should return an array of values of the listed keys - one cell should accept an array of numbers', function () { var dataWithNumbers = { name: 'Anne', surname: 'bella', info: { age: 35 }, company: { job: 'singer' }, ca: [50000, 120000] }; var keys = ['name', 'surname', 'info.age', 'company.job', 'ca']; var expected = ['Anne', 'bella', 35, 'singer', '50000 - 120000']; var items = (0, _index.default)({ data: dataWithNumbers, keys: keys }); expect(items).toEqual(expected); }); it('should return an array of values of the listed keys - one cell should accept an array of numbers in keys', function () { var dataWithNumbers = { name: 'Anne', surname: 'bella', info: { age: 35 }, company: { job: 'singer' }, ca: { min: 30000, max: 200000 } }; var keys = ['name', 'surname', 'info.age', 'company.job', ['ca.min', 'ca.max']]; var expected = ['Anne', 'bella', 35, 'singer', '30000 - 200000']; var items = (0, _index.default)({ data: dataWithNumbers, keys: keys }); expect(items).toEqual(expected); }); it('should return an array of values of the listed keys - when key is an object it should display the "display" key and if it is undefined display the replacement', function () { var keys = ['name', 'surname', 'info.age', 'company.job', { display: 'color', replaceBy: 'info.color' }, 'pets']; var separator = ', '; var expected = ['Anne', 'bella', 35, 'singer', 'blue', 'dog, cat']; var items = (0, _index.default)({ data: data, keys: keys, separator: separator }); expect(items).toEqual(expected); }); it('should return an array of values of the listed keys - when key is an object it should display the "display" key and if it is undefined display the first replacement in the list that is not undefined', function () { var keys = ['name', 'surname', 'info.age', 'company.job', { display: 'color', replaceBy: ['company.color', 'info.color'] }, 'pets']; var separator = ', '; var expected = ['Anne', 'bella', 35, 'singer', 'blue', 'dog, cat']; var items = (0, _index.default)({ data: data, keys: keys, separator: separator }); expect(items).toEqual(expected); }); it('should normalize the text when the key is an object and has a "normalize" key', function () { var normalizeFunc = function normalizeFunc(text) { return text.toUpperCase(); }; var keys = [{ display: 'name', normalize: normalizeFunc }, 'surname', 'info.age', 'company.job', { display: 'color', replaceBy: ['company.color', 'info.color'] }, 'pets']; var separator = ', '; var expected = ['ANNE', 'bella', 35, 'singer', 'blue', 'dog, cat']; var items = (0, _index.default)({ data: data, keys: keys, separator: separator }); expect(items).toEqual(expected); }); it('should normalize the text when the key is an object and has a "normalize" key and display is an array', function () { var normalizeFunc = function normalizeFunc(text) { return text.toUpperCase(); }; var keys = [{ display: 'name', normalize: normalizeFunc }, 'surname', 'info.age', 'company.job', { display: 'color', replaceBy: ['company.color', 'info.color'] }, { display: ['pets[0]', 'pets[1]'], normalize: normalizeFunc }]; var separator = ', '; var expected = ['ANNE', 'bella', 35, 'singer', 'blue', 'DOG, CAT']; var items = (0, _index.default)({ data: data, keys: keys, separator: separator }); expect(items).toEqual(expected); }); it('should return the right value when key is a function', function () { var normalizeFunc = function normalizeFunc(text) { return text.toUpperCase(); }; var keys = [{ display: 'name', normalize: normalizeFunc }, 'surname', 'info.age', 'company.job', { display: 'color', replaceBy: ['company.color', 'info.color'] }, function (d) { return d.pets.join(', ').toUpperCase(); }]; var separator = ', '; var expected = ['ANNE', 'bella', 35, 'singer', 'blue', 'DOG, CAT']; var items = (0, _index.default)({ data: data, keys: keys, separator: separator }); expect(items).toEqual(expected); }); }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9zZWxlY3RJdGVtcy9zZWxlY3RJdGVtcy50ZXN0LmpzIl0sIm5hbWVzIjpbImRlc2NyaWJlIiwiZGF0YSIsIm5hbWUiLCJzdXJuYW1lIiwiaW5mbyIsImFnZSIsImNvbG9yIiwiY29tcGFueSIsImpvYiIsInBldHMiLCJpdCIsIml0ZW1zIiwiZXhwZWN0IiwidG9FcXVhbCIsImV4cGVjdGVkIiwia2V5cyIsInNlcGFyYXRvciIsImRhdGFXaXRoTnVtYmVycyIsImNhIiwibWluIiwibWF4IiwiZGlzcGxheSIsInJlcGxhY2VCeSIsIm5vcm1hbGl6ZUZ1bmMiLCJ0ZXh0IiwidG9VcHBlckNhc2UiLCJub3JtYWxpemUiLCJkIiwiam9pbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7OztBQUVBQSxRQUFRLENBQUMsYUFBRCxFQUFnQixZQUFNO0FBQzVCLE1BQU1DLElBQUksR0FBRztBQUNYQyxJQUFBQSxJQUFJLEVBQUUsTUFESztBQUVYQyxJQUFBQSxPQUFPLEVBQUUsT0FGRTtBQUdYQyxJQUFBQSxJQUFJLEVBQUU7QUFBRUMsTUFBQUEsR0FBRyxFQUFFLEVBQVA7QUFBV0MsTUFBQUEsS0FBSyxFQUFFO0FBQWxCLEtBSEs7QUFJWEMsSUFBQUEsT0FBTyxFQUFFO0FBQUVDLE1BQUFBLEdBQUcsRUFBRTtBQUFQLEtBSkU7QUFLWEMsSUFBQUEsSUFBSSxFQUFFLENBQUMsS0FBRCxFQUFRLEtBQVI7QUFMSyxHQUFiO0FBUUFDLEVBQUFBLEVBQUUsQ0FBQyw0Q0FBRCxFQUErQyxZQUFNO0FBQ3JELFFBQU1DLEtBQUssR0FBRyxvQkFBWTtBQUFFVixNQUFBQSxJQUFJLEVBQUU7QUFBUixLQUFaLENBQWQ7QUFDQVcsSUFBQUEsTUFBTSxDQUFDRCxLQUFELENBQU4sQ0FBY0UsT0FBZCxDQUFzQixDQUFDLE9BQUQsQ0FBdEI7QUFDRCxHQUhDLENBQUY7QUFLQUgsRUFBQUEsRUFBRSxDQUFDLGdGQUFELEVBQW1GLFlBQU07QUFDekYsUUFBTUks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T0FBZCxDQUFzQkMsUUFBdEI7QUFDRCxHQWRDLENBQUY7QUFlRCxDQTdJTyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHNlbGVjdEl0ZW1zIGZyb20gJy4vaW5kZXgnO1xuXG5kZXNjcmliZSgnc2VsZWN0SXRlbXMnLCAoKSA9PiB7XG4gIGNvbnN0IGRhdGEgPSB7XG4gICAgbmFtZTogJ0FubmUnLFxuICAgIHN1cm5hbWU6ICdiZWxsYScsXG4gICAgaW5mbzogeyBhZ2U6IDM1LCBjb2xvcjogJ2JsdWUnIH0sXG4gICAgY29tcGFueTogeyBqb2I6ICdzaW5nZXInIH0sXG4gICAgcGV0czogWydkb2cnLCAnY2F0J10sXG4gIH07XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gW2RhdGFdIHdoZW4gZGF0YSBpcyBhIHN0cmluZycsICgpID0+IHtcbiAgICBjb25zdCBpdGVtcyA9IHNlbGVjdEl0ZW1zKHsgZGF0YTogJ2hlbGxvJyB9KTtcbiAgICBleHBlY3QoaXRlbXMpLnRvRXF1YWwoWydoZWxsbyddKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gYW4gYXJyYXkgb2Ygb25seSB0aGUgc3RyaW5ncyBmcm9tIHRoZSBkYXRhIHdoZW4gdGhlcmUgaXMgbm8ga2V5cycsICgpID0+IHtcbiAgICBjb25zdCBleHBlY3RlZCA9IFsnQW5uZScsICdiZWxsYSddO1xuICAgIGNvbnN0IGl0ZW1zID0gc2VsZWN0SXRlbXMoeyBkYXRhIH0pO1xuICAgIGV4cGVjdChpdGVtcykudG9FcXVhbChleHBlY3RlZCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIGFuIGFycmF5IG9mIHZhbHVlcyBvZiB0aGUgbGlzdGVkIGtleXMnLCAoKSA9PiB7XG4gICAgY29uc3Qga2V5cyA9IFsnbmFtZScsICdzdXJuYW1lJywgJ2luZm8uYWdlJywgJ2NvbXBhbnkuam9iJywgJ3BldHNbMF0nXTtcbiAgICBjb25zdCBleHBlY3RlZCA9IFsnQW5uZScsICdiZWxsYScsIDM1LCAnc2luZ2VyJywgJ2RvZyddO1xuICAgIGNvbnN0IGl0ZW1zID0gc2VsZWN0SXRlbXMoeyBkYXRhLCBrZXlzIH0pO1xuICAgIGV4cGVjdChpdGVtcykudG9FcXVhbChleHBlY3RlZCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIGFuIGFycmF5IG9mIHZhbHVlcyBvZiB0aGUgbGlzdGVkIGtleXMgLSBvbmUgY2VsbCBzaG91bGQgYWNjZXB0IGFuIGFycmF5IG9mIHN0cmluZycsICgpID0+IHtcbiAgICBjb25zdCBrZXlzID0gWyduYW1lJywgJ3N1cm5hbWUnLCAnaW5mby5hZ2UnLCAnY29tcGFueS5qb2InLCAncGV0cyddO1xuICAgIGNvbnN0IHNlcGFyYXRvciA9ICcsICc7XG4gICAgY29uc3QgZXhwZWN0ZWQgPSBbJ0FubmUnLCAnYmVsbGEnLCAzNSwgJ3NpbmdlcicsICdkb2csIGNhdCddO1xuICAgIGNvbnN0IGl0ZW1zID0gc2VsZWN0SXRlbXMoeyBkYXRhLCBrZXlzLCBzZXBhcmF0b3IgfSk7XG4gICAgZXhwZWN0KGl0ZW1zKS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gYW4gYXJyYXkgb2YgdmFsdWVzIG9mIHRoZSBsaXN0ZWQga2V5cyAtIG9uZSBjZWxsIHNob3VsZCBhY2NlcHQgYW4gYXJyYXkgb2YgbnVtYmVycycsICgpID0+IHtcbiAgICBjb25zdCBkYXRhV2l0aE51bWJlcnMgPSB7XG4gICAgICBuYW1lOiAnQW5uZScsXG4gICAgICBzdXJuYW1lOiAnYmVsbGEnLFxuICAgICAgaW5mbzogeyBhZ2U6IDM1IH0sXG4gICAgICBjb21wYW55OiB7IGpvYjogJ3NpbmdlcicgfSxcbiAgICAgIGNhOiBbNTAwMDAsIDEyMDAwMF0sXG4gICAgfTtcblxuICAgIGNvbnN0IGtleXMgPSBbJ25hbWUnLCAnc3VybmFtZScsICdpbmZvLmFnZScsICdjb21wYW55LmpvYicsICdjYSddO1xuICAgIGNvbnN0IGV4cGVjdGVkID0gWydBbm5lJywgJ2JlbGxhJywgMzUsICdzaW5nZXInLCAnNTAwMDAgLSAxMjAwMDAnXTtcbiAgICBjb25zdCBpdGVtcyA9IHNlbGVjdEl0ZW1zKHsgZGF0YTogZGF0YVdpdGhOdW1iZXJzLCBrZXlzIH0pO1xuICAgIGV4cGVjdChpdGVtcykudG9FcXVhbChleHBlY3RlZCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIGFuIGFycmF5IG9mIHZhbHVlcyBvZiB0aGUgbGlzdGVkIGtleXMgLSBvbmUgY2VsbCBzaG91bGQgYWNjZXB0IGFuIGFycmF5IG9mIG51bWJlcnMgaW4ga2V5cycsICgpID0+IHtcbiAgICBjb25zdCBkYXRhV2l0aE51bWJlcnMgPSB7XG4gICAgICBuYW1lOiAnQW5uZScsXG4gICAgICBzdXJuYW1lOiAnYmVsbGEnLFxuICAgICAgaW5mbzogeyBhZ2U6IDM1IH0sXG4gICAgICBjb21wYW55OiB7IGpvYjogJ3NpbmdlcicgfSxcbiAgICAgIGNhOiB7IG1pbjogMzAwMDAsIG1heDogMjAwMDAwIH0sXG4gICAgfTtcbiAgICBjb25zdCBrZXlzID0gWyduYW1lJywgJ3N1cm5hbWUnLCAnaW5mby5hZ2UnLCAnY29tcGFueS5qb2InLCBbJ2NhLm1pbicsICdjYS5tYXgnXV07XG4gICAgY29uc3QgZXhwZWN0ZWQgPSBbJ0FubmUnLCAnYmVsbGEnLCAzNSwgJ3NpbmdlcicsICczMDAwMCAtIDIwMDAwMCddO1xuICAgIGNvbnN0IGl0ZW1zID0gc2VsZWN0SXRlbXMoeyBkYXRhOiBkYXRhV2l0aE51bWJlcnMsIGtleXMgfSk7XG4gICAgZXhwZWN0KGl0ZW1zKS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gYW4gYXJyYXkgb2YgdmFsdWVzIG9mIHRoZSBsaXN0ZWQga2V5cyAtIHdoZW4ga2V5IGlzIGFuIG9iamVjdCBpdCBzaG91bGQgZGlzcGxheSB0aGUgXCJkaXNwbGF5XCIga2V5IGFuZCBpZiBpdCBpcyB1bmRlZmluZWQgZGlzcGxheSB0aGUgcmVwbGFjZW1lbnQnLCAoKSA9PiB7XG4gICAgY29uc3Qga2V5cyA9IFtcbiAgICAgICduYW1lJyxcbiAgICAgICdzdXJuYW1lJyxcbiAgICAgICdpbmZvLmFnZScsXG4gICAgICAnY29tcGFueS5qb2InLFxuICAgICAgeyBkaXNwbGF5OiAnY29sb3InLCByZXBsYWNlQnk6ICdpbmZvLmNvbG9yJyB9LFxuICAgICAgJ3BldHMnLFxuICAgIF07XG4gICAgY29uc3Qgc2VwYXJhdG9yID0gJywgJztcbiAgICBjb25zdCBleHBlY3RlZCA9IFsnQW5uZScsICdiZWxsYScsIDM1LCAnc2luZ2VyJywgJ2JsdWUnLCAnZG9nLCBjYXQnXTtcbiAgICBjb25zdCBpdGVtcyA9IHNlbGVjdEl0ZW1zKHsgZGF0YSwga2V5cywgc2VwYXJhdG9yIH0pO1xuICAgIGV4cGVjdChpdGVtcykudG9FcXVhbChleHBlY3RlZCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIGFuIGFycmF5IG9mIHZhbHVlcyBvZiB0aGUgbGlzdGVkIGtleXMgLSB3aGVuIGtleSBpcyBhbiBvYmplY3QgaXQgc2hvdWxkIGRpc3BsYXkgdGhlIFwiZGlzcGxheVwiIGtleSBhbmQgaWYgaXQgaXMgdW5kZWZpbmVkIGRpc3BsYXkgdGhlIGZpcnN0IHJlcGxhY2VtZW50IGluIHRoZSBsaXN0IHRoYXQgaXMgbm90IHVuZGVmaW5lZCcsICgpID0+IHtcbiAgICBjb25zdCBrZXlzID0gW1xuICAgICAgJ25hbWUnLFxuICAgICAgJ3N1cm5hbWUnLFxuICAgICAgJ2luZm8uYWdlJyxcbiAgICAgICdjb21wYW55LmpvYicsXG4gICAgICB7IGRpc3BsYXk6ICdjb2xvcicsIHJlcGxhY2VCeTogWydjb21wYW55LmNvbG9yJywgJ2luZm8uY29sb3InXSB9LFxuICAgICAgJ3BldHMnLFxuICAgIF07XG4gICAgY29uc3Qgc2VwYXJhdG9yID0gJywgJztcbiAgICBjb25zdCBleHBlY3RlZCA9IFsnQW5uZScsICdiZWxsYScsIDM1LCAnc2luZ2VyJywgJ2JsdWUnLCAnZG9nLCBjYXQnXTtcbiAgICBjb25zdCBpdGVtcyA9IHNlbGVjdEl0ZW1zKHsgZGF0YSwga2V5cywgc2VwYXJhdG9yIH0pO1xuICAgIGV4cGVjdChpdGVtcykudG9FcXVhbChleHBlY3RlZCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbm9ybWFsaXplIHRoZSB0ZXh0IHdoZW4gdGhlIGtleSBpcyBhbiBvYmplY3QgYW5kIGhhcyBhIFwibm9ybWFsaXplXCIga2V5JywgKCkgPT4ge1xuICAgIGNvbnN0IG5vcm1hbGl6ZUZ1bmMgPSB0ZXh0ID0+IHRleHQudG9VcHBlckNhc2UoKTtcbiAgICBjb25zdCBrZXlzID0gW1xuICAgICAgeyBkaXNwbGF5OiAnbmFtZScsIG5vcm1hbGl6ZTogbm9ybWFsaXplRnVuYyB9LFxuICAgICAgJ3N1cm5hbWUnLFxuICAgICAgJ2luZm8uYWdlJyxcbiAgICAgICdjb21wYW55LmpvYicsXG4gICAgICB7IGRpc3BsYXk6ICdjb2xvcicsIHJlcGxhY2VCeTogWydjb21wYW55LmNvbG9yJywgJ2luZm8uY29sb3InXSB9LFxuICAgICAgJ3BldHMnLFxuICAgIF07XG4gICAgY29uc3Qgc2VwYXJhdG9yID0gJywgJztcbiAgICBjb25zdCBleHBlY3RlZCA9IFsnQU5ORScsICdiZWxsYScsIDM1LCAnc2luZ2VyJywgJ2JsdWUnLCAnZG9nLCBjYXQnXTtcbiAgICBjb25zdCBpdGVtcyA9IHNlbGVjdEl0ZW1zKHsgZGF0YSwga2V5cywgc2VwYXJhdG9yIH0pO1xuICAgIGV4cGVjdChpdGVtcykudG9FcXVhbChleHBlY3RlZCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbm9ybWFsaXplIHRoZSB0ZXh0IHdoZW4gdGhlIGtleSBpcyBhbiBvYmplY3QgYW5kIGhhcyBhIFwibm9ybWFsaXplXCIga2V5IGFuZCBkaXNwbGF5IGlzIGFuIGFycmF5JywgKCkgPT4ge1xuICAgIGNvbnN0IG5vcm1hbGl6ZUZ1bmMgPSB0ZXh0ID0+IHRleHQudG9VcHBlckNhc2UoKTtcbiAgICBjb25zdCBrZXlzID0gW1xuICAgICAgeyBkaXNwbGF5OiAnbmFtZScsIG5vcm1hbGl6ZTogbm9ybWFsaXplRnVuYyB9LFxuICAgICAgJ3N1cm5hbWUnLFxuICAgICAgJ2luZm8uYWdlJyxcbiAgICAgICdjb21wYW55LmpvYicsXG4gICAgICB7IGRpc3BsYXk6ICdjb2xvcicsIHJlcGxhY2VCeTogWydjb21wYW55LmNvbG9yJywgJ2luZm8uY29sb3InXSB9LFxuICAgICAgeyBkaXNwbGF5OiBbJ3BldHNbMF0nLCAncGV0c1sxXSddLCBub3JtYWxpemU6IG5vcm1hbGl6ZUZ1bmMgfSxcbiAgICBdO1xuICAgIGNvbnN0IHNlcGFyYXRvciA9ICcsICc7XG4gICAgY29uc3QgZXhwZWN0ZWQgPSBbJ0FOTkUnLCAnYmVsbGEnLCAzNSwgJ3NpbmdlcicsICdibHVlJywgJ0RPRywgQ0FUJ107XG4gICAgY29uc3QgaXRlbXMgPSBzZWxlY3RJdGVtcyh7IGRhdGEsIGtleXMsIHNlcGFyYXRvciB9KTtcbiAgICBleHBlY3QoaXRlbXMpLnRvRXF1YWwoZXhwZWN0ZWQpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVybiB0aGUgcmlnaHQgdmFsdWUgd2hlbiBrZXkgaXMgYSBmdW5jdGlvbicsICgpID0+IHtcbiAgICBjb25zdCBub3JtYWxpemVGdW5jID0gdGV4dCA9PiB0ZXh0LnRvVXBwZXJDYXNlKCk7XG4gICAgY29uc3Qga2V5cyA9IFtcbiAgICAgIHsgZGlzcGxheTogJ25hbWUnLCBub3JtYWxpemU6IG5vcm1hbGl6ZUZ1bmMgfSxcbiAgICAgICdzdXJuYW1lJyxcbiAgICAgICdpbmZvLmFnZScsXG4gICAgICAnY29tcGFueS5qb2InLFxuICAgICAgeyBkaXNwbGF5OiAnY29sb3InLCByZXBsYWNlQnk6IFsnY29tcGFueS5jb2xvcicsICdpbmZvLmNvbG9yJ10gfSxcbiAgICAgIGQgPT4gZC5wZXRzLmpvaW4oJywgJykudG9VcHBlckNhc2UoKSxcbiAgICBdO1xuICAgIGNvbnN0IHNlcGFyYXRvciA9ICcsICc7XG4gICAgY29uc3QgZXhwZWN0ZWQgPSBbJ0FOTkUnLCAnYmVsbGEnLCAzNSwgJ3NpbmdlcicsICdibHVlJywgJ0RPRywgQ0FUJ107XG4gICAgY29uc3QgaXRlbXMgPSBzZWxlY3RJdGVtcyh7IGRhdGEsIGtleXMsIHNlcGFyYXRvciB9KTtcbiAgICBleHBlY3QoaXRlbXMpLnRvRXF1YWwoZXhwZWN0ZWQpO1xuICB9KTtcbn0pO1xuIl19