Socket
Socket
Sign inDemoInstall

email-templates

Package Overview
Dependencies
Maintainers
1
Versions
137
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

email-templates - npm Package Compare versions

Comparing version 6.0.0 to 6.0.1

8

lib/index.js
"use strict";
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }

@@ -167,3 +169,3 @@

return this.render(str, _objectSpread({}, locals, type === 'html' ? {} : {
return this.render(str, _objectSpread({}, locals, {}, type === 'html' ? {} : {
pretty: false

@@ -284,2 +286,2 @@ }));

module.exports = Email;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJmcyIsInJlcXVpcmUiLCJwYXRoIiwiSTE4TiIsIl8iLCJhdXRvQmluZCIsImNvbnNvbGlkYXRlIiwiZGVidWciLCJnZXRQYXRocyIsImh0bWxUb1RleHQiLCJpcyIsImp1aWNlIiwibm9kZW1haWxlciIsInBpZnkiLCJwcmV2aWV3RW1haWwiLCJqdWljZVJlc291cmNlcyIsImh0bWwiLCJvcHRpb25zIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJlcnIiLCJlbnYiLCJwcm9jZXNzIiwiTk9ERV9FTlYiLCJ0b0xvd2VyQ2FzZSIsInN0YXQiLCJyZWFkRmlsZSIsIkVtYWlsIiwiY29uc3RydWN0b3IiLCJjb25maWciLCJqdWljZU9wdGlvbnMiLCJkaXNhYmxlSnVpY2UiLCJyZW5kZXIiLCJjdXN0b21SZW5kZXIiLCJtZXJnZSIsInZpZXdzIiwicm9vdCIsImV4dGVuc2lvbiIsIm1hcCIsImhicyIsIm5qayIsImVuZ2luZVNvdXJjZSIsImxvY2FscyIsImNhY2hlIiwiaW5jbHVkZXMiLCJwcmV0dHkiLCJtZXNzYWdlIiwic2VuZCIsInByZXZpZXciLCJpMThuIiwiYmluZCIsInRleHRPbmx5IiwiaWdub3JlSW1hZ2UiLCJzdWJqZWN0UHJlZml4IiwicHJlc2VydmVJbXBvcnRhbnQiLCJ3ZWJSZXNvdXJjZXMiLCJyZWxhdGl2ZVRvIiwiaW1hZ2VzIiwidHJhbnNwb3J0IiwiaXNGdW5jdGlvbiIsInNlbmRNYWlsIiwiY3JlYXRlVHJhbnNwb3J0IiwiZ2V0VGVtcGxhdGVQYXRoIiwidGVtcGxhdGUiLCJ2aWV3IiwiaXNBYnNvbHV0ZSIsImRpcm5hbWUiLCJiYXNlbmFtZSIsInBhdGhzIiwiZmlsZVBhdGgiLCJyZWwiLCJ0ZW1wbGF0ZUV4aXN0cyIsInN0YXRzIiwiaXNGaWxlIiwiRXJyb3IiLCJjaGVja0FuZFJlbmRlciIsInR5cGUiLCJzdHIiLCJleGlzdHMiLCJleHQiLCJyZXMiLCJlbmdpbmVOYW1lIiwicmVuZGVyRm4iLCJpc09iamVjdCIsInJlZ2lzdGVyIiwidXNlciIsImlzU3RyaW5nIiwibGFzdF9sb2NhbGUiLCJsb2NhbGUiLCJzZXRMb2NhbGUiLCJyZW5kZXJBbGwiLCJub2RlbWFpbGVyTWVzc2FnZSIsInN1YmplY3QiLCJ0ZXh0IiwiYWxsIiwidHJpbSIsImZyb21TdHJpbmciLCJzdHJpbmciLCJlbXB0eVN0cmluZ09yV2hpdGVzcGFjZSIsImlzQXJyYXkiLCJhdHRhY2htZW50cyIsImlzRW1wdHkiLCJkZWZhdWx0c0RlZXAiLCJvbWl0IiwiT2JqZWN0Iiwia2V5cyIsIm9iaiIsImFzc2lnbiIsImpzb25UcmFuc3BvcnQiLCJvcmlnaW5hbE1lc3NhZ2UiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxNQUFNQSxFQUFFLEdBQUdDLE9BQU8sQ0FBQyxJQUFELENBQWxCOztBQUNBLE1BQU1DLElBQUksR0FBR0QsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsTUFBTUUsSUFBSSxHQUFHRixPQUFPLENBQUMsYUFBRCxDQUFwQjs7QUFDQSxNQUFNRyxDQUFDLEdBQUdILE9BQU8sQ0FBQyxRQUFELENBQWpCOztBQUNBLE1BQU1JLFFBQVEsR0FBR0osT0FBTyxDQUFDLFdBQUQsQ0FBeEI7O0FBQ0EsTUFBTUssV0FBVyxHQUFHTCxPQUFPLENBQUMsYUFBRCxDQUEzQjs7QUFDQSxNQUFNTSxLQUFLLEdBQUdOLE9BQU8sQ0FBQyxPQUFELENBQVAsQ0FBaUIsaUJBQWpCLENBQWQ7O0FBQ0EsTUFBTU8sUUFBUSxHQUFHUCxPQUFPLENBQUMsV0FBRCxDQUF4Qjs7QUFDQSxNQUFNUSxVQUFVLEdBQUdSLE9BQU8sQ0FBQyxjQUFELENBQTFCOztBQUNBLE1BQU1TLEVBQUUsR0FBR1QsT0FBTyxDQUFDLGtCQUFELENBQWxCOztBQUNBLE1BQU1VLEtBQUssR0FBR1YsT0FBTyxDQUFDLE9BQUQsQ0FBckI7O0FBQ0EsTUFBTVcsVUFBVSxHQUFHWCxPQUFPLENBQUMsWUFBRCxDQUEx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LEVBQVUsS0FBS2pCLE1BQUwsQ0FBWW1CLE9BQXRCLENBQWxCLENBREYsS0FFSyxNQUFNbkMsWUFBWSxDQUFDaUMsT0FBRCxDQUFsQjtBQUNOOztBQUVELFFBQUksQ0FBQyxLQUFLakIsTUFBTCxDQUFZa0IsSUFBakIsRUFBdUI7QUFDckJ6QyxNQUFBQSxLQUFLLENBQUMsZ0RBQUQsQ0FBTCxDQURxQixDQUVyQjtBQUNBOztBQUNBLFdBQUt1QixNQUFMLENBQVk2QixTQUFaLEdBQXdCL0MsVUFBVSxDQUFDa0QsZUFBWCxDQUEyQjtBQUNqRCtDLFFBQUFBLGFBQWEsRUFBRTtBQURrQyxPQUEzQixDQUF4QjtBQUdEOztBQUVELFVBQU01QixHQUFHLEdBQUcsTUFBTSxLQUFLbkQsTUFBTCxDQUFZNkIsU0FBWixDQUFzQkUsUUFBdEIsQ0FBK0JkLE9BQS9CLENBQWxCO0FBQ0F4QyxJQUFBQSxLQUFLLENBQUMsY0FBRCxDQUFMO0FBQ0EwRSxJQUFBQSxHQUFHLENBQUM2QixlQUFKLEdBQXNCL0QsT0FBdEI7QUFDQSxXQUFPa0MsR0FBUDtBQUNEOztBQS9RUzs7QUFrUlo4QixNQUFNLENBQUNDLE9BQVAsR0FBaUJwRixLQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKTtcbmNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5jb25zdCBJMThOID0gcmVxdWlyZSgnQGxhZGpzL2kxOG4nKTtcbmNvbnN0IF8gPSByZXF1aXJlKCdsb2Rhc2gnKTtcbmNvbnN0IGF1dG9CaW5kID0gcmVxdWlyZSgnYXV0by1iaW5kJyk7XG5jb25zdCBjb25zb2xpZGF0ZSA9IHJlcXVpcmUoJ2NvbnNvbGlkYXRlJyk7XG5jb25zdCBkZWJ1ZyA9IHJlcXVpcmUoJ2RlYnVnJykoJ2VtYWlsLXRlbXBsYXRlcycpO1xuY29uc3QgZ2V0UGF0aHMgPSByZXF1aXJlKCdnZXQtcGF0aHMnKTtcbmNvbnN0IGh0bWxUb1RleHQgPSByZXF1aXJlKCdodG1sLXRvLXRleHQnKTtcbmNvbnN0IGlzID0gcmVxdWlyZSgnQHNpbmRyZXNvcmh1cy9pcycpO1xuY29uc3QganVpY2UgPSByZXF1aXJlKCdqdWljZScpO1xuY29uc3Qgbm9kZW1haWxlciA9IHJlcXVpcmUoJ25vZGVtYWlsZXInKTtcbmNvbnN0IHBpZnkgPSByZXF1aXJlKCdwaWZ5Jyk7XG5jb25zdCBwcmV2aWV3RW1haWwgPSByZXF1aXJlKCdwcmV2aWV3LWVtYWlsJyk7XG5cbi8vIHByb21pc2UgdmVyc2lvbiBvZiBganVpY2UuanVpY2VSZXNvdXJjZXNgXG5jb25zdCBqdWljZVJlc291cmNlcyA9IChodG1sLCBvcHRpb25zKSA9PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAganVpY2UuanVpY2VSZXNvdXJjZXMoaHRtbCwgb3B0aW9ucywgKGVyciwgaHRtbCkgPT4ge1xuICAgICAgaWYgKGVycikgcmV0dXJuIHJlamVjdChlcnIpO1xuICAgICAgcmVzb2x2ZShodG1sKTtcbiAgICB9KTtcbiAgfSk7XG59O1xuXG5jb25zdCBlbnYgPSAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgfHwgJ2RldmVsb3BtZW50JykudG9Mb3dlckNhc2UoKTtcbmNvbnN0IHN0YXQgPSBwaWZ5KGZzLnN0YXQpO1xuY29uc3QgcmVhZEZpbGUgPSBwaWZ5KGZzLnJlYWRGaWxlKTtcblxuY2xhc3MgRW1haWwge1xuICBjb25zdHJ1Y3Rvcihjb25maWcgPSB7fSkge1xuICAgIGRlYnVnKCdjb25maWcgcGFzc2VkICVPJywgY29uZmlnKTtcblxuICAgIC8vIDIueCBiYWNrd2FyZHMgY29tcGF0aWJsZSBzdXBwb3J0XG4gICAgaWYgKGNvbmZpZy5qdWljZU9wdGlvbnMpIHtcbiAgICAgIGNvbmZpZy5qdWljZVJlc291cmNlcyA9IGNvbmZpZy5qdWljZU9wdGlvbnM7XG4gICAgICBkZWxldGUgY29uZmlnLmp1aWNlT3B0aW9ucztcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnLmRpc2FibGVKdWljZSkge1xuICAgICAgY29uZmlnLmp1aWNlID0gZmFsc2U7XG4gICAgICBkZWxldGUgY29uZmlnLmRpc2FibGVKdWljZTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnLnJlbmRlcikge1xuICAgICAgY29uZmlnLmN1c3RvbVJlbmRlciA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5jb25maWcgPSBfLm1lcmdlKFxuICAgICAge1xuICAgICAgICB2aWV3czoge1xuICAgICAgICAgIC8vIGRpcmVjdG9yeSB3aGVyZSBlbWFpbCB0ZW1wbGF0ZXMgcmVzaWRlXG4gICAgICAgICAgcm9vdDogcGF0aC5yZXNvbHZlKCdlbWFpbHMnKSxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAvLyBkZWZhdWx0IGZpbGUgZXh0ZW5zaW9uIGZvciB0ZW1wbGF0ZVxuICAgICAgICAgICAgZXh0ZW5zaW9uOiAncHVnJyxcbiAgICAgICAgICAgIG1hcDoge1xuICAgICAgICAgICAgICBoYnM6ICdoYW5kbGViYXJzJyxcbiAgICAgICAgICAgICAgbmprOiAnbnVuanVja3MnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW5naW5lU291cmNlOiBjb25zb2xpZGF0ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gbG9jYWxzIHRvIHBhc3MgdG8gdGVtcGxhdGVzIGZvciByZW5kZXJpbmdcbiAgICAgICAgICBsb2NhbHM6IHtcbiAgICAgICAgICAgIC8vIHR1cm4gb24gY2FjaGluZyBmb3Igbm9uLWRldmVsb3BtZW50IGVudmlyb25tZW50c1xuICAgICAgICAgICAgY2FjaGU6ICFbJ2RldmVsb3BtZW50JywgJ3Rlc3QnXS5pbmNsdWRlcyhlbnYpLFxuICAgICAgICAgICAgLy8gcHJldHR5IGlzIGF1dG9tYXRpY2FsbHkgc2V0IHRvIGBmYWxzZWAgZm9yIHN1YmplY3QvdGV4dFxuICAgICAgICAgICAgcHJldHR5OiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAvLyA8aHR0cHM6Ly9ub2RlbWFpbGVyLmNvbS9tZXNzYWdlLz5cbiAgICAgICAgbWVzc2FnZToge30sXG4gICAgICAgIHNlbmQ6ICFbJ2RldmVsb3BtZW50JywgJ3Rlc3QnXS5pbmNsdWRlcyhlbnYpLFxuICAgICAgICBwcmV2aWV3OiBlbnYgPT09ICdkZXZlbG9wbWVudCcsXG4gICAgICAgIC8vIDxodHRwczovL2dpdGh1Yi5jb20vbGFkanMvaTE4bj5cbiAgICAgICAgLy8gc2V0IHRvIGFuIG9iamVjdCB0byBjb25maWd1cmUgYW5kIGVuYWJsZSBpdFxuICAgICAgICBpMThuOiBmYWxzZSxcbiAgICAgICAgLy8gcGFzcyBhIGN1c3RvbSByZW5kZXIgZnVuY3Rpb24gaWYgbmVjZXNzYXJ5XG4gICAgICAgIHJlbmRlcjogdGhpcy5yZW5kZXIuYmluZCh0aGlzKSxcbiAgICAgICAgY3VzdG9tUmVuZGVyOiBmYWxzZSxcbiAgICAgICAgLy8gZm9yY2UgdGV4dC1vbmx5IHJlbmRlcmluZyBvZiB0ZW1wbGF0ZSAoZGlzcmVnYXJkcyB0ZW1wbGF0ZSBmb2xkZXIpXG4gICAgICAgIHRleHRPbmx5OiBmYWxzZSxcbiAgICAgICAgLy8gPGh0dHBzOi8vZ2l0aHViLmNvbS93ZXJrODUvbm9kZS1odG1sLXRvLXRleHQ+XG4gICAgICAgIGh0bWxUb1RleHQ6IHtcbiAgICAgICAgICBpZ25vcmVJbWFnZTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBzdWJqZWN0UHJlZml4OiBmYWxzZSxcbiAgICAgICAgLy8gPGh0dHBzOi8vZ2l0aHViLmNvbS9BdXRvbWF0dGljL2p1aWNlPlxuICAgICAgICBqdWljZTogdHJ1ZSxcbiAgICAgICAganVpY2VSZXNvdXJjZXM6IHtcbiAgICAgICAgICBwcmVzZXJ2ZUltcG9ydGFudDogdHJ1ZSxcbiAgICAgICAgICB3ZWJSZXNvdXJjZXM6IHtcbiAgICAgICAgICAgIHJlbGF0aXZlVG86IHBhdGgucmVzb2x2ZSgnYnVpbGQnKSxcbiAgICAgICAgICAgIGltYWdlczogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIC8vIHBhc3MgYSB0cmFuc3BvcnQgY29uZmlndXJhdGlvbiBvYmplY3Qgb3IgYSB0cmFuc3BvcnQgaW5zdGFuY2VcbiAgICAgICAgLy8gKGUuZy4gYW4gaW5zdGFuY2UgaXMgY3JlYXRlZCB2aWEgYG5vZGVtYWlsZXIuY3JlYXRlVHJhbnNwb3J0YClcbiAgICAgICAgLy8gPGh0dHBzOi8vbm9kZW1haWxlci5jb20vdHJhbnNwb3J0cy8+XG4gICAgICAgIHRyYW5zcG9ydDoge31cbiAgICAgIH0sXG4gICAgICBjb25maWdcbiAgICApO1xuXG4gICAgLy8gb3ZlcnJpZGUgZXhpc3RpbmcgbWV0aG9kXG4gICAgdGhpcy5yZW5kZXIgPSB0aGlzLmNvbmZpZy5yZW5kZXI7XG5cbiAgICBpZiAoIV8uaXNGdW5jdGlvbih0aGlzLmNvbmZpZy50cmFuc3BvcnQuc2VuZE1haWwpKVxuICAgICAgdGhpcy5jb25maWcudHJhbnNwb3J0ID0gbm9kZW1haWxlci5jcmVhdGVUcmFuc3BvcnQodGhpcy5jb25maWcudHJhbnNwb3J0KTtcblxuICAgIGRlYnVnKCd0cmFuc2Zvcm1lZCBjb25maWcgJU8nLCB0aGlzLmNvbmZpZyk7XG5cbiAgICBhdXRvQmluZCh0aGlzKTtcbiAgfVxuXG4gIC8vIHNob3J0aGFuZCB1c2Ugb2YgYGp1aWNlUmVzb3VyY2VzYCB3aXRoIHRoZSBjb25maWdcbiAgLy8gKG1haW5seSBmb3IgY3VzdG9tIHJlbmRlcnMgbGlrZSBmcm9tIGEgZGF0YWJhc2UpXG4gIGp1aWNlUmVzb3VyY2VzKGh0bWwpIHtcbiAgICByZXR1cm4ganVpY2VSZXNvdXJjZXMoaHRtbCwgdGhpcy5jb25maWcuanVpY2VSZXNvdXJjZXMpO1xuICB9XG5cbiAgLy8gYSBzaW1wbGUgaGVscGVyIGZ1bmN0aW9uIHRoYXQgZ2V0cyB0aGUgYWN0dWFsIGZpbGUgcGF0aCBmb3IgdGhlIHRlbXBsYXRlXG4gIGFzeW5jIGdldFRlbXBsYXRlUGF0aCh0ZW1wbGF0ZSkge1xuICAgIGNvbnN0IFtyb290LCB2aWV3XSA9IHBhdGguaXNBYnNvbHV0ZSh0ZW1wbGF0ZSlcbiAgICAgID8gW3BhdGguZGlybmFtZSh0ZW1wbGF0ZSksIHBhdGguYmFzZW5hbWUodGVtcGxhdGUpXVxuICAgICAgOiBbdGhpcy5jb25maWcudmlld3Mucm9vdCwgdGVtcGxhdGVdO1xuICAgIGNvbnN0IHBhdGhzID0gYXdhaXQgZ2V0UGF0aHMoXG4gICAgICByb290LFxuICAgICAgdmlldyxcbiAgICAgIHRoaXMuY29uZmlnLnZpZXdzLm9wdGlvbnMuZXh0ZW5zaW9uXG4gICAgKTtcbiAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGgucmVzb2x2ZShyb290LCBwYXRocy5yZWwpO1xuICAgIHJldHVybiB7IGZpbGVQYXRoLCBwYXRocyB9O1xuICB9XG5cbiAgLy8gcmV0dXJucyB0cnVlIG9yIGZhbHNlIGlmIGEgdGVtcGxhdGUgZXhpc3RzXG4gIC8vICh1c2VzIHNhbWUgbG9vay11cCBhcHByb2FjaCBhcyBgcmVuZGVyYCBmdW5jdGlvbilcbiAgYXN5bmMgdGVtcGxhdGVFeGlzdHModmlldykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IGZpbGVQYXRoIH0gPSBhd2FpdCB0aGlzLmdldFRlbXBsYXRlUGF0aCh2aWV3KTtcbiAgICAgIGNvbnN0IHN0YXRzID0gYXdhaXQgc3RhdChmaWxlUGF0aCk7XG4gICAgICBpZiAoIXN0YXRzLmlzRmlsZSgpKSB0aHJvdyBuZXcgRXJyb3IoYCR7ZmlsZVBhdGh9IHdhcyBub3QgYSBmaWxlYCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGRlYnVnKCd0ZW1wbGF0ZUV4aXN0cycsIGVycik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY2hlY2tBbmRSZW5kZXIodHlwZSwgdGVtcGxhdGUsIGxvY2Fscykge1xuICAgIGNvbnN0IHN0ciA9IGAke3RlbXBsYXRlfS8ke3R5cGV9YDtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmN1c3RvbVJlbmRlcikge1xuICAgICAgY29uc3QgZXhpc3RzID0gYXdhaXQgdGhpcy50ZW1wbGF0ZUV4aXN0cyhzdHIpO1xuICAgICAgaWYgKCFleGlzdHMpIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5yZW5kZXIoc3RyLCB7XG4gICAgICAuLi5sb2NhbHMsXG4gICAgICAuLi4odHlwZSA9PT0gJ2h0bWwnID8ge30gOiB7IHByZXR0eTogZmFsc2UgfSlcbiAgICB9KTtcbiAgfVxuXG4gIC8vIHByb21pc2UgdmVyc2lvbiBvZiBjb25zb2xpZGF0ZSdzIHJlbmRlclxuICAvLyBpbnNwaXJlZCBieSBrb2Etdmlld3MgYW5kIHJlLXVzZXMgdGhlIHNhbWUgY29uZmlnXG4gIC8vIDxodHRwczovL2dpdGh1Yi5jb20vcXVlY2tlenova29hLXZpZXdzPlxuICBhc3luYyByZW5kZXIodmlldywgbG9jYWxzID0ge30pIHtcbiAgICBjb25zdCB7IG1hcCwgZW5naW5lU291cmNlIH0gPSB0aGlzLmNvbmZpZy52aWV3cy5vcHRpb25zO1xuICAgIGNvbnN0IHsgZmlsZVBhdGgsIHBhdGhzIH0gPSBhd2FpdCB0aGlzLmdldFRlbXBsYXRlUGF0aCh2aWV3KTtcbiAgICBpZiAocGF0aHMuZXh0ID09PSAnaHRtbCcgJiYgIW1hcCkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgcmVhZEZpbGUoZmlsZVBhdGgsICd1dGY4Jyk7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGNvbnN0IGVuZ2luZU5hbWUgPSBtYXAgJiYgbWFwW3BhdGhzLmV4dF0gPyBtYXBbcGF0aHMuZXh0XSA6IHBhdGhzLmV4dDtcbiAgICBjb25zdCByZW5kZXJGbiA9IGVuZ2luZVNvdXJjZVtlbmdpbmVOYW1lXTtcbiAgICBpZiAoIWVuZ2luZU5hbWUgfHwgIXJlbmRlckZuKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRW5naW5lIG5vdCBmb3VuZCBmb3IgdGhlIFwiLiR7cGF0aHMuZXh0fVwiIGZpbGUgZXh0ZW5zaW9uYFxuICAgICAgKTtcblxuICAgIGlmIChfLmlzT2JqZWN0KHRoaXMuY29uZmlnLmkxOG4pKSB7XG4gICAgICBjb25zdCBpMThuID0gbmV3IEkxOE4oeyAuLi50aGlzLmNvbmZpZy5pMThuLCByZWdpc3RlcjogbG9jYWxzIH0pO1xuXG4gICAgICAvLyBzdXBwb3J0IGBsb2NhbHMudXNlci5sYXN0X2xvY2FsZWBcbiAgICAgIC8vIChlLmcuIGZvciA8aHR0cHM6Ly9sYWQuanMub3JnPilcbiAgICAgIGlmIChfLmlzT2JqZWN0KGxvY2Fscy51c2VyKSAmJiBfLmlzU3RyaW5nKGxvY2Fscy51c2VyLmxhc3RfbG9jYWxlKSlcbiAgICAgICAgbG9jYWxzLmxvY2FsZSA9IGxvY2Fscy51c2VyLmxhc3RfbG9jYWxlO1xuXG4gICAgICBpZiAoXy5pc1N0cmluZyhsb2NhbHMubG9jYWxlKSkgaTE4bi5zZXRMb2NhbGUobG9jYWxzLmxvY2FsZSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzID0gYXdhaXQgcGlmeShyZW5kZXJGbikoZmlsZVBhdGgsIGxvY2Fscyk7XG4gICAgLy8gdHJhbnNmb3JtIHRoZSBodG1sIHdpdGgganVpY2UgdXNpbmcgcmVtb3RlIHBhdGhzXG4gICAgLy8gZ29vZ2xlIG5vdyBzdXBwb3J0cyBtZWRpYSBxdWVyaWVzXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vZ21haWwvZGVzaWduL3JlZmVyZW5jZS9zdXBwb3J0ZWRfY3NzXG4gICAgaWYgKCF0aGlzLmNvbmZpZy5qdWljZSkgcmV0dXJuIHJlcztcbiAgICBjb25zdCBodG1sID0gYXdhaXQgdGhpcy5qdWljZVJlc291cmNlcyhyZXMpO1xuICAgIHJldHVybiBodG1sO1xuICB9XG5cbiAgYXN5bmMgcmVuZGVyQWxsKHRlbXBsYXRlLCBsb2NhbHMgPSB7fSwgbm9kZW1haWxlck1lc3NhZ2UgPSB7fSkge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSB7IC4uLm5vZGVtYWlsZXJNZXNzYWdlIH07XG5cbiAgICBpZiAodGVtcGxhdGUpIHtcbiAgICAgIGNvbnN0IFtzdWJqZWN0LCBodG1sLCB0ZXh0XSA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBbJ3N1YmplY3QnLCAnaHRtbCcsICd0ZXh0J10ubWFwKHR5cGUgPT5cbiAgICAgICAgICB0aGlzLmNoZWNrQW5kUmVuZGVyKHR5cGUsIHRlbXBsYXRlLCBsb2NhbHMpXG4gICAgICAgIClcbiAgICAgICk7XG5cbiAgICAgIGlmIChzdWJqZWN0KSBtZXNzYWdlLnN1YmplY3QgPSBzdWJqZWN0LnRyaW0oKTtcbiAgICAgIGlmIChodG1sKSBtZXNzYWdlLmh0bWwgPSBodG1sO1xuICAgICAgaWYgKHRleHQpIG1lc3NhZ2UudGV4dCA9IHRleHQ7XG4gICAgfVxuXG4gICAgaWYgKG1lc3NhZ2Uuc3ViamVjdCAmJiB0aGlzLmNvbmZpZy5zdWJqZWN0UHJlZml4KVxuICAgICAgbWVzc2FnZS5zdWJqZWN0ID0gdGhpcy5jb25maWcuc3ViamVjdFByZWZpeCArIG1lc3NhZ2Uuc3ViamVjdDtcblxuICAgIGlmICh0aGlzLmNvbmZpZy5odG1sVG9UZXh0ICYmIG1lc3NhZ2UuaHRtbCAmJiAhbWVzc2FnZS50ZXh0KVxuICAgICAgLy8gd2UnZCB1c2Ugbm9kZW1haWxlci1odG1sLXRvLXRleHQgcGx1Z2luXG4gICAgICAvLyBidXQgd2UgcmVhbGx5IGRvbid0IG5lZWQgdG8gc3VwcG9ydCBjaWRcbiAgICAgIC8vIDxodHRwczovL2dpdGh1Yi5jb20vYW5kcmlzOS9ub2RlbWFpbGVyLWh0bWwtdG8tdGV4dD5cbiAgICAgIG1lc3NhZ2UudGV4dCA9IGh0bWxUb1RleHQuZnJvbVN0cmluZyhcbiAgICAgICAgbWVzc2FnZS5odG1sLFxuICAgICAgICB0aGlzLmNvbmZpZy5odG1sVG9UZXh0XG4gICAgICApO1xuXG4gICAgLy8gaWYgd2Ugb25seSB3YW50IGEgdGV4dC1iYXNlZCB2ZXJzaW9uIG9mIHRoZSBlbWFpbFxuICAgIGlmICh0aGlzLmNvbmZpZy50ZXh0T25seSkgZGVsZXRlIG1lc3NhZ2UuaHRtbDtcblxuICAgIC8vIGlmIG5vIHN1YmplY3QsIGh0bWwsIG9yIHRleHQgY29udGVudCBleGlzdHMgdGhlbiB3ZSBzaG91bGRcbiAgICAvLyB0aHJvdyBhbiBlcnJvciB0aGF0IHNheXMgYXQgbGVhc3Qgb25lIG11c3QgYmUgZm91bmRcbiAgICAvLyBvdGhlcndpc2UgdGhlIGVtYWlsIHdvdWxkIGJlIGJsYW5rIChkZWZlYXRzIHB1cnBvc2Ugb2YgZW1haWwtdGVtcGxhdGVzKVxuICAgIGlmIChcbiAgICAgICghaXMuc3RyaW5nKG1lc3NhZ2Uuc3ViamVjdCkgfHxcbiAgICAgICAgaXMuZW1wdHlTdHJpbmdPcldoaXRlc3BhY2UobWVzc2FnZS5zdWJqZWN0KSkgJiZcbiAgICAgICghaXMuc3RyaW5nKG1lc3NhZ2UudGV4dCkgfHwgaXMuZW1wdHlTdHJpbmdPcldoaXRlc3BhY2UobWVzc2FnZS50ZXh0KSkgJiZcbiAgICAgICghaXMuc3RyaW5nKG1lc3NhZ2UuaHRtbCkgfHwgaXMuZW1wdHlTdHJpbmdPcldoaXRlc3BhY2UobWVzc2FnZS5odG1sKSkgJiZcbiAgICAgIF8uaXNBcnJheShtZXNzYWdlLmF0dGFjaG1lbnRzKSAmJlxuICAgICAgXy5pc0VtcHR5KG1lc3NhZ2UuYXR0YWNobWVudHMpXG4gICAgKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgTm8gY29udGVudCB3YXMgcGFzc2VkIGZvciBzdWJqZWN0LCBodG1sLCB0ZXh0LCBub3IgYXR0YWNobWVudHMgbWVzc2FnZSBwcm9wcy4gQ2hlY2sgdGhhdCB0aGUgZmlsZXMgZm9yIHRoZSB0ZW1wbGF0ZSBcIiR7dGVtcGxhdGV9XCIgZXhpc3QuYFxuICAgICAgKTtcblxuICAgIHJldHVybiBtZXNzYWdlO1xuICB9XG5cbiAgYXN5bmMgc2VuZChvcHRpb25zID0ge30pIHtcbiAgICBvcHRpb25zID0ge1xuICAgICAgdGVtcGxhdGU6ICcnLFxuICAgICAgbWVzc2FnZToge30sXG4gICAgICBsb2NhbHM6IHt9LFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH07XG5cbiAgICBsZXQgeyB0ZW1wbGF0ZSwgbWVzc2FnZSwgbG9jYWxzIH0gPSBvcHRpb25zO1xuXG4gICAgY29uc3QgYXR0YWNobWVudHMgPVxuICAgICAgbWVzc2FnZS5hdHRhY2htZW50cyB8fCB0aGlzLmNvbmZpZy5tZXNzYWdlLmF0dGFjaG1lbnRzIHx8IFtdO1xuXG4gICAgbWVzc2FnZSA9IF8uZGVmYXVsdHNEZWVwKFxuICAgICAge30sXG4gICAgICBfLm9taXQobWVzc2FnZSwgJ2F0dGFjaG1lbnRzJyksXG4gICAgICBfLm9taXQodGhpcy5jb25maWcubWVzc2FnZSwgJ2F0dGFjaG1lbnRzJylcbiAgICApO1xuICAgIGxvY2FscyA9IF8uZGVmYXVsdHNEZWVwKHt9LCB0aGlzLmNvbmZpZy52aWV3cy5sb2NhbHMsIGxvY2Fscyk7XG5cbiAgICBpZiAoYXR0YWNobWVudHMpIG1lc3NhZ2UuYXR0YWNobWVudHMgPSBhdHRhY2htZW50cztcblxuICAgIGRlYnVnKCd0ZW1wbGF0ZSAlcycsIHRlbXBsYXRlKTtcbiAgICBkZWJ1ZygnbWVzc2FnZSAlTycsIG1lc3NhZ2UpO1xuICAgIGRlYnVnKCdsb2NhbHMgKGtleXMgb25seSk6ICVPJywgT2JqZWN0LmtleXMobG9jYWxzKSk7XG5cbiAgICAvLyBnZXQgYWxsIGF2YWlsYWJsZSB0ZW1wbGF0ZXNcbiAgICBjb25zdCBvYmogPSBhd2FpdCB0aGlzLnJlbmRlckFsbCh0ZW1wbGF0ZSwgbG9jYWxzLCBtZXNzYWdlKTtcblxuICAgIC8vIGFzc2lnbiB0aGUgb2JqZWN0IHZhcmlhYmxlcyBvdmVyIHRvIHRoZSBtZXNzYWdlXG4gICAgT2JqZWN0LmFzc2lnbihtZXNzYWdlLCBvYmopO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnLnByZXZpZXcpIHtcbiAgICAgIGRlYnVnKCd1c2luZyBgcHJldmlldy1lbWFpbGAgdG8gcHJldmlldyBlbWFpbCcpO1xuICAgICAgaWYgKF8uaXNPYmplY3QodGhpcy5jb25maWcucHJldmlldykpXG4gICAgICAgIGF3YWl0IHByZXZpZXdFbWFpbChtZXNzYWdlLCB0aGlzLmNvbmZpZy5wcmV2aWV3KTtcbiAgICAgIGVsc2UgYXdhaXQgcHJldmlld0VtYWlsKG1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5jb25maWcuc2VuZCkge1xuICAgICAgZGVidWcoJ3NlbmQgZGlzYWJsZWQgc28gd2UgYXJlIGVuc3VyaW5nIEpTT05UcmFuc3BvcnQnKTtcbiAgICAgIC8vIDxodHRwczovL2dpdGh1Yi5jb20vbm9kZW1haWxlci9ub2RlbWFpbGVyL2lzc3Vlcy83OTg+XG4gICAgICAvLyBpZiAodGhpcy5jb25maWcudHJhbnNwb3J0Lm5hbWUgIT09ICdKU09OVHJhbnNwb3J0JylcbiAgICAgIHRoaXMuY29uZmlnLnRyYW5zcG9ydCA9IG5vZGVtYWlsZXIuY3JlYXRlVHJhbnNwb3J0KHtcbiAgICAgICAganNvblRyYW5zcG9ydDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5jb25maWcudHJhbnNwb3J0LnNlbmRNYWlsKG1lc3NhZ2UpO1xuICAgIGRlYnVnKCdtZXNzYWdlIHNlbnQnKTtcbiAgICByZXMub3JpZ2luYWxNZXNzYWdlID0gbWVzc2FnZTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gRW1haWw7XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJmcyIsInJlcXVpcmUiLCJwYXRoIiwiSTE4TiIsIl8iLCJhdXRvQmluZCIsImNvbnNvbGlkYXRlIiwiZGVidWciLCJnZXRQYXRocyIsImh0bWxUb1RleHQiLCJpcyIsImp1aWNlIiwibm9kZW1haWxlciIsInBpZnkiLCJwcmV2aWV3RW1haWwiLCJqdWljZVJlc291cmNlcyIsImh0bWwiLCJvcHRpb25zIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJlcnIiLCJlbnYiLCJwcm9jZXNzIiwiTk9ERV9FTlYiLCJ0b0xvd2VyQ2FzZSIsInN0YXQiLCJyZWFkRmlsZSIsIkVtYWlsIiwiY29uc3RydWN0b3IiLCJjb25maWciLCJqdWljZU9wdGlvbnMiLCJkaXNhYmxlSnVpY2UiLCJyZW5kZXIiLCJjdXN0b21SZW5kZXIiLCJtZXJnZSIsInZpZXdzIiwicm9vdCIsImV4dGVuc2lvbiIsIm1hcCIsImhicyIsIm5qayIsImVuZ2luZVNvdXJjZSIsImxvY2FscyIsImNhY2hlIiwiaW5jbHVkZXMiLCJwcmV0dHkiLCJtZXNzYWdlIiwic2VuZCIsInByZXZpZXciLCJpMThuIiwiYmluZCIsInRleHRPbmx5IiwiaWdub3JlSW1hZ2UiLCJzdWJqZWN0UHJlZml4IiwicHJlc2VydmVJbXBvcnRhbnQiLCJ3ZWJSZXNvdXJjZXMiLCJyZWxhdGl2ZVRvIiwiaW1hZ2VzIiwidHJhbnNwb3J0IiwiaXNGdW5jdGlvbiIsInNlbmRNYWlsIiwiY3JlYXRlVHJhbnNwb3J0IiwiZ2V0VGVtcGxhdGVQYXRoIiwidGVtcGxhdGUiLCJ2aWV3IiwiaXNBYnNvbHV0ZSIsImRpcm5hbWUiLCJiYXNlbmFtZSIsInBhdGhzIiwiZmlsZVBhdGgiLCJyZWwiLCJ0ZW1wbGF0ZUV4aXN0cyIsInN0YXRzIiwiaXNGaWxlIiwiRXJyb3IiLCJjaGVja0FuZFJlbmRlciIsInR5cGUiLCJzdHIiLCJleGlzdHMiLCJleHQiLCJyZXMiLCJlbmdpbmVOYW1lIiwicmVuZGVyRm4iLCJpc09iamVjdCIsInJlZ2lzdGVyIiwidXNlciIsImlzU3RyaW5nIiwibGFzdF9sb2NhbGUiLCJsb2NhbGUiLCJzZXRMb2NhbGUiLCJyZW5kZXJBbGwiLCJub2RlbWFpbGVyTWVzc2FnZSIsInN1YmplY3QiLCJ0ZXh0IiwiYWxsIiwidHJpbSIsImZyb21TdHJpbmciLCJzdHJpbmciLCJlbXB0eVN0cmluZ09yV2hpdGVzcGFjZSIsImlzQXJyYXkiLCJhdHRhY2htZW50cyIsImlzRW1wdHkiLCJkZWZhdWx0c0RlZXAiLCJvbWl0IiwiT2JqZWN0Iiwia2V5cyIsIm9iaiIsImFzc2lnbiIsImpzb25UcmFuc3BvcnQiLCJvcmlnaW5hbE1lc3NhZ2UiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLE1BQU1BLEVBQUUsR0FBR0MsT0FBTyxDQUFDLElBQUQsQ0FBbEI7O0FBQ0EsTUFBTUMsSUFBSSxHQUFHRCxPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFDQSxNQUFNRSxJQUFJLEdBQUdGLE9BQU8sQ0FBQyxhQUFELENBQXBCOztBQUNBLE1BQU1HLENBQUMsR0FBR0gsT0FBTyxDQUFDLFFBQUQsQ0FBakI7O0FBQ0EsTUFBTUksUUFBUSxHQUFHSixPQUFPLENBQUMsV0FBRCxDQUF4Qjs7QUFDQSxNQUFNSyxXQUFXLEdBQUdMLE9BQU8sQ0FBQyxhQUFELENBQTNCOztBQUNBLE1BQU1NLEtBQUssR0FBR04sT0FBTyxDQUFDLE9BQUQsQ0FBUCxDQUFpQixpQkFBakIsQ0FBZDs7QUFDQSxNQUFNTyxRQUFRLEdBQUdQLE9BQU8sQ0FBQyxXQUFELENBQXhCOztBQUNBLE1BQU1RLFVBQVUsR0FBR1IsT0FBTyxDQUFDLGNBQUQsQ0FBMUI7O0FBQ0EsTUFBTVMsRUFBRSxHQUFHVCxPQUFPLENBQUMsa0JBQUQsQ0FBbEI7O0FBQ0EsTUFBTVUsS0FBSyxHQUFHVixPQUFPLENBQUMsT0FBRCxDQUFyQjs7QUFDQSxNQUFNVyxVQUFVLEdBQUdYLE9BQU8sQ0FBQyxZQUFELENB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QUQsRUFBVSxLQUFLakIsTUFBTCxDQUFZbUIsT0FBdEIsQ0FBbEIsQ0FERixLQUVLLE1BQU1uQyxZQUFZLENBQUNpQyxPQUFELENBQWxCO0FBQ047O0FBRUQsUUFBSSxDQUFDLEtBQUtqQixNQUFMLENBQVlrQixJQUFqQixFQUF1QjtBQUNyQnpDLE1BQUFBLEtBQUssQ0FBQyxnREFBRCxDQUFMLENBRHFCLENBRXJCO0FBQ0E7O0FBQ0EsV0FBS3VCLE1BQUwsQ0FBWTZCLFNBQVosR0FBd0IvQyxVQUFVLENBQUNrRCxlQUFYLENBQTJCO0FBQ2pEK0MsUUFBQUEsYUFBYSxFQUFFO0FBRGtDLE9BQTNCLENBQXhCO0FBR0Q7O0FBRUQsVUFBTTVCLEdBQUcsR0FBRyxNQUFNLEtBQUtuRCxNQUFMLENBQVk2QixTQUFaLENBQXNCRSxRQUF0QixDQUErQmQsT0FBL0IsQ0FBbEI7QUFDQXhDLElBQUFBLEtBQUssQ0FBQyxjQUFELENBQUw7QUFDQTBFLElBQUFBLEdBQUcsQ0FBQzZCLGVBQUosR0FBc0IvRCxPQUF0QjtBQUNBLFdBQU9rQyxHQUFQO0FBQ0Q7O0FBL1FTOztBQWtSWjhCLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQnBGLEtBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZnMgPSByZXF1aXJlKCdmcycpO1xuY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcbmNvbnN0IEkxOE4gPSByZXF1aXJlKCdAbGFkanMvaTE4bicpO1xuY29uc3QgXyA9IHJlcXVpcmUoJ2xvZGFzaCcpO1xuY29uc3QgYXV0b0JpbmQgPSByZXF1aXJlKCdhdXRvLWJpbmQnKTtcbmNvbnN0IGNvbnNvbGlkYXRlID0gcmVxdWlyZSgnY29uc29saWRhdGUnKTtcbmNvbnN0IGRlYnVnID0gcmVxdWlyZSgnZGVidWcnKSgnZW1haWwtdGVtcGxhdGVzJyk7XG5jb25zdCBnZXRQYXRocyA9IHJlcXVpcmUoJ2dldC1wYXRocycpO1xuY29uc3QgaHRtbFRvVGV4dCA9IHJlcXVpcmUoJ2h0bWwtdG8tdGV4dCcpO1xuY29uc3QgaXMgPSByZXF1aXJlKCdAc2luZHJlc29yaHVzL2lzJyk7XG5jb25zdCBqdWljZSA9IHJlcXVpcmUoJ2p1aWNlJyk7XG5jb25zdCBub2RlbWFpbGVyID0gcmVxdWlyZSgnbm9kZW1haWxlcicpO1xuY29uc3QgcGlmeSA9IHJlcXVpcmUoJ3BpZnknKTtcbmNvbnN0IHByZXZpZXdFbWFpbCA9IHJlcXVpcmUoJ3ByZXZpZXctZW1haWwnKTtcblxuLy8gcHJvbWlzZSB2ZXJzaW9uIG9mIGBqdWljZS5qdWljZVJlc291cmNlc2BcbmNvbnN0IGp1aWNlUmVzb3VyY2VzID0gKGh0bWwsIG9wdGlvbnMpID0+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBqdWljZS5qdWljZVJlc291cmNlcyhodG1sLCBvcHRpb25zLCAoZXJyLCBodG1sKSA9PiB7XG4gICAgICBpZiAoZXJyKSByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICByZXNvbHZlKGh0bWwpO1xuICAgIH0pO1xuICB9KTtcbn07XG5cbmNvbnN0IGVudiA9IChwcm9jZXNzLmVudi5OT0RFX0VOViB8fCAnZGV2ZWxvcG1lbnQnKS50b0xvd2VyQ2FzZSgpO1xuY29uc3Qgc3RhdCA9IHBpZnkoZnMuc3RhdCk7XG5jb25zdCByZWFkRmlsZSA9IHBpZnkoZnMucmVhZEZpbGUpO1xuXG5jbGFzcyBFbWFpbCB7XG4gIGNvbnN0cnVjdG9yKGNvbmZpZyA9IHt9KSB7XG4gICAgZGVidWcoJ2NvbmZpZyBwYXNzZWQgJU8nLCBjb25maWcpO1xuXG4gICAgLy8gMi54IGJhY2t3YXJkcyBjb21wYXRpYmxlIHN1cHBvcnRcbiAgICBpZiAoY29uZmlnLmp1aWNlT3B0aW9ucykge1xuICAgICAgY29uZmlnLmp1aWNlUmVzb3VyY2VzID0gY29uZmlnLmp1aWNlT3B0aW9ucztcbiAgICAgIGRlbGV0ZSBjb25maWcuanVpY2VPcHRpb25zO1xuICAgIH1cblxuICAgIGlmIChjb25maWcuZGlzYWJsZUp1aWNlKSB7XG4gICAgICBjb25maWcuanVpY2UgPSBmYWxzZTtcbiAgICAgIGRlbGV0ZSBjb25maWcuZGlzYWJsZUp1aWNlO1xuICAgIH1cblxuICAgIGlmIChjb25maWcucmVuZGVyKSB7XG4gICAgICBjb25maWcuY3VzdG9tUmVuZGVyID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmZpZyA9IF8ubWVyZ2UoXG4gICAgICB7XG4gICAgICAgIHZpZXdzOiB7XG4gICAgICAgICAgLy8gZGlyZWN0b3J5IHdoZXJlIGVtYWlsIHRlbXBsYXRlcyByZXNpZGVcbiAgICAgICAgICByb290OiBwYXRoLnJlc29sdmUoJ2VtYWlscycpLFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIC8vIGRlZmF1bHQgZmlsZSBleHRlbnNpb24gZm9yIHRlbXBsYXRlXG4gICAgICAgICAgICBleHRlbnNpb246ICdwdWcnLFxuICAgICAgICAgICAgbWFwOiB7XG4gICAgICAgICAgICAgIGhiczogJ2hhbmRsZWJhcnMnLFxuICAgICAgICAgICAgICBuams6ICdudW5qdWNrcydcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbmdpbmVTb3VyY2U6IGNvbnNvbGlkYXRlXG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBsb2NhbHMgdG8gcGFzcyB0byB0ZW1wbGF0ZXMgZm9yIHJlbmRlcmluZ1xuICAgICAgICAgIGxvY2Fsczoge1xuICAgICAgICAgICAgLy8gdHVybiBvbiBjYWNoaW5nIGZvciBub24tZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzXG4gICAgICAgICAgICBjYWNoZTogIVsnZGV2ZWxvcG1lbnQnLCAndGVzdCddLmluY2x1ZGVzKGVudiksXG4gICAgICAgICAgICAvLyBwcmV0dHkgaXMgYXV0b21hdGljYWxseSBzZXQgdG8gYGZhbHNlYCBmb3Igc3ViamVjdC90ZXh0XG4gICAgICAgICAgICBwcmV0dHk6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIC8vIDxodHRwczovL25vZGVtYWlsZXIuY29tL21lc3NhZ2UvPlxuICAgICAgICBtZXNzYWdlOiB7fSxcbiAgICAgICAgc2VuZDogIVsnZGV2ZWxvcG1lbnQnLCAndGVzdCddLmluY2x1ZGVzKGVudiksXG4gICAgICAgIHByZXZpZXc6IGVudiA9PT0gJ2RldmVsb3BtZW50JyxcbiAgICAgICAgLy8gPGh0dHBzOi8vZ2l0aHViLmNvbS9sYWRqcy9pMThuPlxuICAgICAgICAvLyBzZXQgdG8gYW4gb2JqZWN0IHRvIGNvbmZpZ3VyZSBhbmQgZW5hYmxlIGl0XG4gICAgICAgIGkxOG46IGZhbHNlLFxuICAgICAgICAvLyBwYXNzIGEgY3VzdG9tIHJlbmRlciBmdW5jdGlvbiBpZiBuZWNlc3NhcnlcbiAgICAgICAgcmVuZGVyOiB0aGlzLnJlbmRlci5iaW5kKHRoaXMpLFxuICAgICAgICBjdXN0b21SZW5kZXI6IGZhbHNlLFxuICAgICAgICAvLyBmb3JjZSB0ZXh0LW9ubHkgcmVuZGVyaW5nIG9mIHRlbXBsYXRlIChkaXNyZWdhcmRzIHRlbXBsYXRlIGZvbGRlcilcbiAgICAgICAgdGV4dE9ubHk6IGZhbHNlLFxuICAgICAgICAvLyA8aHR0cHM6Ly9naXRodWIuY29tL3dlcms4NS9ub2RlLWh0bWwtdG8tdGV4dD5cbiAgICAgICAgaHRtbFRvVGV4dDoge1xuICAgICAgICAgIGlnbm9yZUltYWdlOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHN1YmplY3RQcmVmaXg6IGZhbHNlLFxuICAgICAgICAvLyA8aHR0cHM6Ly9naXRodWIuY29tL0F1dG9tYXR0aWMvanVpY2U+XG4gICAgICAgIGp1aWNlOiB0cnVlLFxuICAgICAgICBqdWljZVJlc291cmNlczoge1xuICAgICAgICAgIHByZXNlcnZlSW1wb3J0YW50OiB0cnVlLFxuICAgICAgICAgIHdlYlJlc291cmNlczoge1xuICAgICAgICAgICAgcmVsYXRpdmVUbzogcGF0aC5yZXNvbHZlKCdidWlsZCcpLFxuICAgICAgICAgICAgaW1hZ2VzOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgLy8gcGFzcyBhIHRyYW5zcG9ydCBjb25maWd1cmF0aW9uIG9iamVjdCBvciBhIHRyYW5zcG9ydCBpbnN0YW5jZVxuICAgICAgICAvLyAoZS5nLiBhbiBpbnN0YW5jZSBpcyBjcmVhdGVkIHZpYSBgbm9kZW1haWxlci5jcmVhdGVUcmFuc3BvcnRgKVxuICAgICAgICAvLyA8aHR0cHM6Ly9ub2RlbWFpbGVyLmNvbS90cmFuc3BvcnRzLz5cbiAgICAgICAgdHJhbnNwb3J0OiB7fVxuICAgICAgfSxcbiAgICAgIGNvbmZpZ1xuICAgICk7XG5cbiAgICAvLyBvdmVycmlkZSBleGlzdGluZyBtZXRob2RcbiAgICB0aGlzLnJlbmRlciA9IHRoaXMuY29uZmlnLnJlbmRlcjtcblxuICAgIGlmICghXy5pc0Z1bmN0aW9uKHRoaXMuY29uZmlnLnRyYW5zcG9ydC5zZW5kTWFpbCkpXG4gICAgICB0aGlzLmNvbmZpZy50cmFuc3BvcnQgPSBub2RlbWFpbGVyLmNyZWF0ZVRyYW5zcG9ydCh0aGlzLmNvbmZpZy50cmFuc3BvcnQpO1xuXG4gICAgZGVidWcoJ3RyYW5zZm9ybWVkIGNvbmZpZyAlTycsIHRoaXMuY29uZmlnKTtcblxuICAgIGF1dG9CaW5kKHRoaXMpO1xuICB9XG5cbiAgLy8gc2hvcnRoYW5kIHVzZSBvZiBganVpY2VSZXNvdXJjZXNgIHdpdGggdGhlIGNvbmZpZ1xuICAvLyAobWFpbmx5IGZvciBjdXN0b20gcmVuZGVycyBsaWtlIGZyb20gYSBkYXRhYmFzZSlcbiAganVpY2VSZXNvdXJjZXMoaHRtbCkge1xuICAgIHJldHVybiBqdWljZVJlc291cmNlcyhodG1sLCB0aGlzLmNvbmZpZy5qdWljZVJlc291cmNlcyk7XG4gIH1cblxuICAvLyBhIHNpbXBsZSBoZWxwZXIgZnVuY3Rpb24gdGhhdCBnZXRzIHRoZSBhY3R1YWwgZmlsZSBwYXRoIGZvciB0aGUgdGVtcGxhdGVcbiAgYXN5bmMgZ2V0VGVtcGxhdGVQYXRoKHRlbXBsYXRlKSB7XG4gICAgY29uc3QgW3Jvb3QsIHZpZXddID0gcGF0aC5pc0Fic29sdXRlKHRlbXBsYXRlKVxuICAgICAgPyBbcGF0aC5kaXJuYW1lKHRlbXBsYXRlKSwgcGF0aC5iYXNlbmFtZSh0ZW1wbGF0ZSldXG4gICAgICA6IFt0aGlzLmNvbmZpZy52aWV3cy5yb290LCB0ZW1wbGF0ZV07XG4gICAgY29uc3QgcGF0aHMgPSBhd2FpdCBnZXRQYXRocyhcbiAgICAgIHJvb3QsXG4gICAgICB2aWV3LFxuICAgICAgdGhpcy5jb25maWcudmlld3Mub3B0aW9ucy5leHRlbnNpb25cbiAgICApO1xuICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5yZXNvbHZlKHJvb3QsIHBhdGhzLnJlbCk7XG4gICAgcmV0dXJuIHsgZmlsZVBhdGgsIHBhdGhzIH07XG4gIH1cblxuICAvLyByZXR1cm5zIHRydWUgb3IgZmFsc2UgaWYgYSB0ZW1wbGF0ZSBleGlzdHNcbiAgLy8gKHVzZXMgc2FtZSBsb29rLXVwIGFwcHJvYWNoIGFzIGByZW5kZXJgIGZ1bmN0aW9uKVxuICBhc3luYyB0ZW1wbGF0ZUV4aXN0cyh2aWV3KSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgZmlsZVBhdGggfSA9IGF3YWl0IHRoaXMuZ2V0VGVtcGxhdGVQYXRoKHZpZXcpO1xuICAgICAgY29uc3Qgc3RhdHMgPSBhd2FpdCBzdGF0KGZpbGVQYXRoKTtcbiAgICAgIGlmICghc3RhdHMuaXNGaWxlKCkpIHRocm93IG5ldyBFcnJvcihgJHtmaWxlUGF0aH0gd2FzIG5vdCBhIGZpbGVgKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgZGVidWcoJ3RlbXBsYXRlRXhpc3RzJywgZXJyKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBjaGVja0FuZFJlbmRlcih0eXBlLCB0ZW1wbGF0ZSwgbG9jYWxzKSB7XG4gICAgY29uc3Qgc3RyID0gYCR7dGVtcGxhdGV9LyR7dHlwZX1gO1xuICAgIGlmICghdGhpcy5jb25maWcuY3VzdG9tUmVuZGVyKSB7XG4gICAgICBjb25zdCBleGlzdHMgPSBhd2FpdCB0aGlzLnRlbXBsYXRlRXhpc3RzKHN0cik7XG4gICAgICBpZiAoIWV4aXN0cykgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnJlbmRlcihzdHIsIHtcbiAgICAgIC4uLmxvY2FscyxcbiAgICAgIC4uLih0eXBlID09PSAnaHRtbCcgPyB7fSA6IHsgcHJldHR5OiBmYWxzZSB9KVxuICAgIH0pO1xuICB9XG5cbiAgLy8gcHJvbWlzZSB2ZXJzaW9uIG9mIGNvbnNvbGlkYXRlJ3MgcmVuZGVyXG4gIC8vIGluc3BpcmVkIGJ5IGtvYS12aWV3cyBhbmQgcmUtdXNlcyB0aGUgc2FtZSBjb25maWdcbiAgLy8gPGh0dHBzOi8vZ2l0aHViLmNvbS9xdWVja2V6ei9rb2Etdmlld3M+XG4gIGFzeW5jIHJlbmRlcih2aWV3LCBsb2NhbHMgPSB7fSkge1xuICAgIGNvbnN0IHsgbWFwLCBlbmdpbmVTb3VyY2UgfSA9IHRoaXMuY29uZmlnLnZpZXdzLm9wdGlvbnM7XG4gICAgY29uc3QgeyBmaWxlUGF0aCwgcGF0aHMgfSA9IGF3YWl0IHRoaXMuZ2V0VGVtcGxhdGVQYXRoKHZpZXcpO1xuICAgIGlmIChwYXRocy5leHQgPT09ICdodG1sJyAmJiAhbWFwKSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCByZWFkRmlsZShmaWxlUGF0aCwgJ3V0ZjgnKTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgY29uc3QgZW5naW5lTmFtZSA9IG1hcCAmJiBtYXBbcGF0aHMuZXh0XSA/IG1hcFtwYXRocy5leHRdIDogcGF0aHMuZXh0O1xuICAgIGNvbnN0IHJlbmRlckZuID0gZW5naW5lU291cmNlW2VuZ2luZU5hbWVdO1xuICAgIGlmICghZW5naW5lTmFtZSB8fCAhcmVuZGVyRm4pXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBFbmdpbmUgbm90IGZvdW5kIGZvciB0aGUgXCIuJHtwYXRocy5leHR9XCIgZmlsZSBleHRlbnNpb25gXG4gICAgICApO1xuXG4gICAgaWYgKF8uaXNPYmplY3QodGhpcy5jb25maWcuaTE4bikpIHtcbiAgICAgIGNvbnN0IGkxOG4gPSBuZXcgSTE4Tih7IC4uLnRoaXMuY29uZmlnLmkxOG4sIHJlZ2lzdGVyOiBsb2NhbHMgfSk7XG5cbiAgICAgIC8vIHN1cHBvcnQgYGxvY2Fscy51c2VyLmxhc3RfbG9jYWxlYFxuICAgICAgLy8gKGUuZy4gZm9yIDxodHRwczovL2xhZC5qcy5vcmc+KVxuICAgICAgaWYgKF8uaXNPYmplY3QobG9jYWxzLnVzZXIpICYmIF8uaXNTdHJpbmcobG9jYWxzLnVzZXIubGFzdF9sb2NhbGUpKVxuICAgICAgICBsb2NhbHMubG9jYWxlID0gbG9jYWxzLnVzZXIubGFzdF9sb2NhbGU7XG5cbiAgICAgIGlmIChfLmlzU3RyaW5nKGxvY2Fscy5sb2NhbGUpKSBpMThuLnNldExvY2FsZShsb2NhbHMubG9jYWxlKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCBwaWZ5KHJlbmRlckZuKShmaWxlUGF0aCwgbG9jYWxzKTtcbiAgICAvLyB0cmFuc2Zvcm0gdGhlIGh0bWwgd2l0aCBqdWljZSB1c2luZyByZW1vdGUgcGF0aHNcbiAgICAvLyBnb29nbGUgbm93IHN1cHBvcnRzIG1lZGlhIHF1ZXJpZXNcbiAgICAvLyBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9nbWFpbC9kZXNpZ24vcmVmZXJlbmNlL3N1cHBvcnRlZF9jc3NcbiAgICBpZiAoIXRoaXMuY29uZmlnLmp1aWNlKSByZXR1cm4gcmVzO1xuICAgIGNvbnN0IGh0bWwgPSBhd2FpdCB0aGlzLmp1aWNlUmVzb3VyY2VzKHJlcyk7XG4gICAgcmV0dXJuIGh0bWw7XG4gIH1cblxuICBhc3luYyByZW5kZXJBbGwodGVtcGxhdGUsIGxvY2FscyA9IHt9LCBub2RlbWFpbGVyTWVzc2FnZSA9IHt9KSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IHsgLi4ubm9kZW1haWxlck1lc3NhZ2UgfTtcblxuICAgIGlmICh0ZW1wbGF0ZSkge1xuICAgICAgY29uc3QgW3N1YmplY3QsIGh0bWwsIHRleHRdID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIFsnc3ViamVjdCcsICdodG1sJywgJ3RleHQnXS5tYXAodHlwZSA9PlxuICAgICAgICAgIHRoaXMuY2hlY2tBbmRSZW5kZXIodHlwZSwgdGVtcGxhdGUsIGxvY2FscylcbiAgICAgICAgKVxuICAgICAgKTtcblxuICAgICAgaWYgKHN1YmplY3QpIG1lc3NhZ2Uuc3ViamVjdCA9IHN1YmplY3QudHJpbSgpO1xuICAgICAgaWYgKGh0bWwpIG1lc3NhZ2UuaHRtbCA9IGh0bWw7XG4gICAgICBpZiAodGV4dCkgbWVzc2FnZS50ZXh0ID0gdGV4dDtcbiAgICB9XG5cbiAgICBpZiAobWVzc2FnZS5zdWJqZWN0ICYmIHRoaXMuY29uZmlnLnN1YmplY3RQcmVmaXgpXG4gICAgICBtZXNzYWdlLnN1YmplY3QgPSB0aGlzLmNvbmZpZy5zdWJqZWN0UHJlZml4ICsgbWVzc2FnZS5zdWJqZWN0O1xuXG4gICAgaWYgKHRoaXMuY29uZmlnLmh0bWxUb1RleHQgJiYgbWVzc2FnZS5odG1sICYmICFtZXNzYWdlLnRleHQpXG4gICAgICAvLyB3ZSdkIHVzZSBub2RlbWFpbGVyLWh0bWwtdG8tdGV4dCBwbHVnaW5cbiAgICAgIC8vIGJ1dCB3ZSByZWFsbHkgZG9uJ3QgbmVlZCB0byBzdXBwb3J0IGNpZFxuICAgICAgLy8gPGh0dHBzOi8vZ2l0aHViLmNvbS9hbmRyaXM5L25vZGVtYWlsZXItaHRtbC10by10ZXh0PlxuICAgICAgbWVzc2FnZS50ZXh0ID0gaHRtbFRvVGV4dC5mcm9tU3RyaW5nKFxuICAgICAgICBtZXNzYWdlLmh0bWwsXG4gICAgICAgIHRoaXMuY29uZmlnLmh0bWxUb1RleHRcbiAgICAgICk7XG5cbiAgICAvLyBpZiB3ZSBvbmx5IHdhbnQgYSB0ZXh0LWJhc2VkIHZlcnNpb24gb2YgdGhlIGVtYWlsXG4gICAgaWYgKHRoaXMuY29uZmlnLnRleHRPbmx5KSBkZWxldGUgbWVzc2FnZS5odG1sO1xuXG4gICAgLy8gaWYgbm8gc3ViamVjdCwgaHRtbCwgb3IgdGV4dCBjb250ZW50IGV4aXN0cyB0aGVuIHdlIHNob3VsZFxuICAgIC8vIHRocm93IGFuIGVycm9yIHRoYXQgc2F5cyBhdCBsZWFzdCBvbmUgbXVzdCBiZSBmb3VuZFxuICAgIC8vIG90aGVyd2lzZSB0aGUgZW1haWwgd291bGQgYmUgYmxhbmsgKGRlZmVhdHMgcHVycG9zZSBvZiBlbWFpbC10ZW1wbGF0ZXMpXG4gICAgaWYgKFxuICAgICAgKCFpcy5zdHJpbmcobWVzc2FnZS5zdWJqZWN0KSB8fFxuICAgICAgICBpcy5lbXB0eVN0cmluZ09yV2hpdGVzcGFjZShtZXNzYWdlLnN1YmplY3QpKSAmJlxuICAgICAgKCFpcy5zdHJpbmcobWVzc2FnZS50ZXh0KSB8fCBpcy5lbXB0eVN0cmluZ09yV2hpdGVzcGFjZShtZXNzYWdlLnRleHQpKSAmJlxuICAgICAgKCFpcy5zdHJpbmcobWVzc2FnZS5odG1sKSB8fCBpcy5lbXB0eVN0cmluZ09yV2hpdGVzcGFjZShtZXNzYWdlLmh0bWwpKSAmJlxuICAgICAgXy5pc0FycmF5KG1lc3NhZ2UuYXR0YWNobWVudHMpICYmXG4gICAgICBfLmlzRW1wdHkobWVzc2FnZS5hdHRhY2htZW50cylcbiAgICApXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBObyBjb250ZW50IHdhcyBwYXNzZWQgZm9yIHN1YmplY3QsIGh0bWwsIHRleHQsIG5vciBhdHRhY2htZW50cyBtZXNzYWdlIHByb3BzLiBDaGVjayB0aGF0IHRoZSBmaWxlcyBmb3IgdGhlIHRlbXBsYXRlIFwiJHt0ZW1wbGF0ZX1cIiBleGlzdC5gXG4gICAgICApO1xuXG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH1cblxuICBhc3luYyBzZW5kKG9wdGlvbnMgPSB7fSkge1xuICAgIG9wdGlvbnMgPSB7XG4gICAgICB0ZW1wbGF0ZTogJycsXG4gICAgICBtZXNzYWdlOiB7fSxcbiAgICAgIGxvY2Fsczoge30sXG4gICAgICAuLi5vcHRpb25zXG4gICAgfTtcblxuICAgIGxldCB7IHRlbXBsYXRlLCBtZXNzYWdlLCBsb2NhbHMgfSA9IG9wdGlvbnM7XG5cbiAgICBjb25zdCBhdHRhY2htZW50cyA9XG4gICAgICBtZXNzYWdlLmF0dGFjaG1lbnRzIHx8IHRoaXMuY29uZmlnLm1lc3NhZ2UuYXR0YWNobWVudHMgfHwgW107XG5cbiAgICBtZXNzYWdlID0gXy5kZWZhdWx0c0RlZXAoXG4gICAgICB7fSxcbiAgICAgIF8ub21pdChtZXNzYWdlLCAnYXR0YWNobWVudHMnKSxcbiAgICAgIF8ub21pdCh0aGlzLmNvbmZpZy5tZXNzYWdlLCAnYXR0YWNobWVudHMnKVxuICAgICk7XG4gICAgbG9jYWxzID0gXy5kZWZhdWx0c0RlZXAoe30sIHRoaXMuY29uZmlnLnZpZXdzLmxvY2FscywgbG9jYWxzKTtcblxuICAgIGlmIChhdHRhY2htZW50cykgbWVzc2FnZS5hdHRhY2htZW50cyA9IGF0dGFjaG1lbnRzO1xuXG4gICAgZGVidWcoJ3RlbXBsYXRlICVzJywgdGVtcGxhdGUpO1xuICAgIGRlYnVnKCdtZXNzYWdlICVPJywgbWVzc2FnZSk7XG4gICAgZGVidWcoJ2xvY2FscyAoa2V5cyBvbmx5KTogJU8nLCBPYmplY3Qua2V5cyhsb2NhbHMpKTtcblxuICAgIC8vIGdldCBhbGwgYXZhaWxhYmxlIHRlbXBsYXRlc1xuICAgIGNvbnN0IG9iaiA9IGF3YWl0IHRoaXMucmVuZGVyQWxsKHRlbXBsYXRlLCBsb2NhbHMsIG1lc3NhZ2UpO1xuXG4gICAgLy8gYXNzaWduIHRoZSBvYmplY3QgdmFyaWFibGVzIG92ZXIgdG8gdGhlIG1lc3NhZ2VcbiAgICBPYmplY3QuYXNzaWduKG1lc3NhZ2UsIG9iaik7XG5cbiAgICBpZiAodGhpcy5jb25maWcucHJldmlldykge1xuICAgICAgZGVidWcoJ3VzaW5nIGBwcmV2aWV3LWVtYWlsYCB0byBwcmV2aWV3IGVtYWlsJyk7XG4gICAgICBpZiAoXy5pc09iamVjdCh0aGlzLmNvbmZpZy5wcmV2aWV3KSlcbiAgICAgICAgYXdhaXQgcHJldmlld0VtYWlsKG1lc3NhZ2UsIHRoaXMuY29uZmlnLnByZXZpZXcpO1xuICAgICAgZWxzZSBhd2FpdCBwcmV2aWV3RW1haWwobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmNvbmZpZy5zZW5kKSB7XG4gICAgICBkZWJ1Zygnc2VuZCBkaXNhYmxlZCBzbyB3ZSBhcmUgZW5zdXJpbmcgSlNPTlRyYW5zcG9ydCcpO1xuICAgICAgLy8gPGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlbWFpbGVyL25vZGVtYWlsZXIvaXNzdWVzLzc5OD5cbiAgICAgIC8vIGlmICh0aGlzLmNvbmZpZy50cmFuc3BvcnQubmFtZSAhPT0gJ0pTT05UcmFuc3BvcnQnKVxuICAgICAgdGhpcy5jb25maWcudHJhbnNwb3J0ID0gbm9kZW1haWxlci5jcmVhdGVUcmFuc3BvcnQoe1xuICAgICAgICBqc29uVHJhbnNwb3J0OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmNvbmZpZy50cmFuc3BvcnQuc2VuZE1haWwobWVzc2FnZSk7XG4gICAgZGVidWcoJ21lc3NhZ2Ugc2VudCcpO1xuICAgIHJlcy5vcmlnaW5hbE1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIHJldHVybiByZXM7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBFbWFpbDtcbiJdfQ==
{
"name": "email-templates",
"description": "Create, preview, and send custom email templates for Node.js. Highly configurable and supports automatic inline CSS, stylesheets, embedded images and fonts, and much more! Made for sending beautiful emails with Lad.",
"version": "6.0.0",
"version": "6.0.1",
"author": "Nick Baugh <niftylettuce@gmail.com> (http://niftylettuce.com)",

@@ -19,12 +19,12 @@ "bugs": {

"dependencies": {
"@ladjs/i18n": "^1.1.0",
"@sindresorhus/is": "^0.17.1",
"@ladjs/i18n": "^1.2.0",
"@sindresorhus/is": "^1.0.0",
"auto-bind": "^2.1.0",
"consolidate": "^0.15.1",
"debug": "^4.1.1",
"get-paths": "^0.0.4",
"get-paths": "^0.0.7",
"html-to-text": "^5.1.1",
"juice": "^5.2.0",
"lodash": "^4.17.11",
"nodemailer": "^6.2.1",
"lodash": "^4.17.15",
"nodemailer": "^6.3.0",
"pify": "^4.0.1",

@@ -34,23 +34,23 @@ "preview-email": "^1.0.1"

"devDependencies": {
"@babel/cli": "^7.4.4",
"@babel/core": "^7.4.5",
"@babel/preset-env": "^7.4.5",
"@commitlint/cli": "^8.0.0",
"@commitlint/config-conventional": "^8.0.0",
"ava": "^2.1.0",
"@babel/cli": "^7.5.5",
"@babel/core": "^7.5.5",
"@babel/preset-env": "^7.5.5",
"@commitlint/cli": "^8.1.0",
"@commitlint/config-conventional": "^8.1.0",
"ava": "^2.3.0",
"cheerio": "^1.0.0-rc.2",
"codecov": "^3.5.0",
"cross-env": "^5.2.0",
"ejs": "^2.6.2",
"eslint": "^6.0.0",
"cross-env": "^5.2.1",
"ejs": "^2.7.1",
"eslint": "^6.3.0",
"eslint-config-xo-lass": "^1.0.3",
"eslint-plugin-node": "^9.1.0",
"eslint-plugin-node": "^10.0.0",
"fixpack": "^2.3.1",
"husky": "^2.4.1",
"lint-staged": "^8.2.1",
"husky": "^3.0.5",
"lint-staged": "^9.2.5",
"nodemailer-sendgrid": "^1.0.3",
"nyc": "^14.1.1",
"pug": "^2.0.4",
"remark-cli": "^6.0.1",
"remark-preset-github": "^0.0.14",
"remark-cli": "^7.0.0",
"remark-preset-github": "^0.0.16",
"xo": "^0.24.0"

@@ -57,0 +57,0 @@ },

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