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

transformalizer

Package Overview
Dependencies
Maintainers
2
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

transformalizer - npm Package Compare versions

Comparing version 1.0.0 to 1.0.1

5

CHANGELOG.md

@@ -5,2 +5,7 @@ # Change Log

<a name="1.0.1"></a>
## [1.0.1](https://github.com/GaiamTV/transformalizer/compare/v1.0.0...v1.0.1) (2017-08-18)
<a name="1.0.0"></a>

@@ -7,0 +12,0 @@ # [1.0.0](https://github.com/GaiamTV/transformalizer/compare/v1.0.0-beta.2...v1.0.0) (2017-07-20)

12

dist/transformalizer.js

@@ -7,6 +7,6 @@ 'use strict';

var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
exports.default = createTransformalizer;

@@ -76,3 +76,3 @@

if (!(0, _utils.isString)(name)) {
throw new _utils.TransformError('Invalid "name" Property (non string)', { name: name, source: source, options: opts });
throw new _utils.TransformError('Invalid "name" Property (non string) actual type: \'' + (typeof name === 'undefined' ? 'undefined' : _typeof(name)) + '\'', { name: name, source: source, options: opts });
}

@@ -204,3 +204,3 @@ var docSchema = registry[name];

if (!(0, _utils.isString)(type)) {
throw new _utils.TransformError('Invalid type', args);
throw new _utils.TransformError('Invalid type, expected string but is \'' + (typeof type === 'undefined' ? 'undefined' : _typeof(type)) + '\'. ', args);
}

@@ -227,3 +227,3 @@ return type;

if (!(0, _utils.isString)(id)) {
throw new _utils.TransformError('Invalid id', args);
throw new _utils.TransformError('Invalid type, expected string but is \'' + (typeof id === 'undefined' ? 'undefined' : _typeof(id)) + '\'.', args);
}

@@ -510,2 +510,2 @@ return id;

module.exports = exports['default'];
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi90cmFuc2Zvcm1hbGl6ZXIuanMiXSwibmFtZXMiOlsiY3JlYXRlVHJhbnNmb3JtYWxpemVyIiwiYmFzZU9wdGlvbnMiLCJyZWdpc3RyeSIsInJlZ2lzdGVyIiwibmFtZSIsInNjaGVtYSIsInNjaGVtYU9wdGlvbnMiLCJvcHRpb25zIiwiRXJyb3IiLCJ1bmRlZmluZWQiLCJnZXRTY2hlbWEiLCJ0cmFuc2Zvcm0iLCJzb3VyY2UiLCJvcHRzIiwiZG9jU2NoZW1hIiwiT2JqZWN0IiwiYXNzaWduIiwiaW5jbHVkZSIsImNyZWF0ZUluY2x1ZGUiLCJkYXRhIiwidHJhbnNmb3JtU291cmNlIiwiaW5jbHVkZWQiLCJnZXQiLCJkb2N1bWVudCIsImpzb25hcGkiLCJ2ZXJzaW9uIiwidG9wTGV2ZWwiLCJmb3JFYWNoIiwicHJvcCIsInJlc3VsdCIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJ0cmFuc2Zvcm1EYXRhIiwiX3R5cGUiLCJfaWQiLCJkYXRhU2NoZW1hIiwic3RhdGUiLCJwYXJhbXMiLCJ0eXBlIiwiZ2V0VHlwZSIsImlkIiwiZ2V0SWQiLCJhdHRyaWJ1dGVzIiwiZ2V0QXR0cmlidXRlcyIsInJlbGF0aW9uc2hpcHMiLCJnZXRSZWxhdGlvbnNoaXBzIiwibGlua3MiLCJnZXRMaW5rcyIsIm1ldGEiLCJnZXRNZXRhIiwicmVzb3VyY2UiLCJvdGhlcnMiLCJyZWxTY2hlbWEiLCJrZXlzIiwicmVkdWNlIiwibWVtbyIsImtleSIsImZuIiwicmVsYXRpb25zaGlwIiwiZ2V0UmVsYXRpb25zaGlwIiwiaW52YWxpZERhdGEiLCJ0cmFuc2Zvcm1SZWxhdGlvbnNoaXBEYXRhIiwiaXRlbSIsImV4aXN0cyIsImFscmVhZHlJbmNsdWRlZCIsInB1c2giXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7a0JBYXdCQSxxQjs7QUFieEI7Ozs7QUFRQTs7Ozs7QUFLZSxTQUFTQSxxQkFBVCxHQUFpRDtBQUFBLE1BQWxCQyxXQUFrQix1RUFB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QUFDQSxXQUFPO0FBQ0w7Ozs7Ozs7QUFPQUQsWUFSSyx5QkFRZ0I7QUFBQSxZQUFaekIsSUFBWSxTQUFaQSxJQUFZO0FBQUEsWUFBTkUsRUFBTSxTQUFOQSxFQUFNOztBQUNuQixlQUFPd0IsZ0JBQW1CMUIsSUFBbkIsU0FBMkJFLEVBQTNCLENBQVA7QUFDRCxPQVZJOzs7QUFZTDs7Ozs7QUFLQTFCLGFBakJLLG1CQWlCR29DLFFBakJILEVBaUJhO0FBQ2hCYyx3QkFBbUJkLFNBQVNaLElBQTVCLFNBQW9DWSxTQUFTVixFQUE3QyxJQUFxRCxJQUFyRDtBQUNBdEIsaUJBQVMrQyxJQUFULENBQWNmLFFBQWQ7QUFDRCxPQXBCSTs7O0FBc0JMOzs7O0FBSUEvQixTQTFCSyxpQkEwQkM7QUFDSixlQUFPRCxRQUFQO0FBQ0Q7QUE1QkksS0FBUDtBQThCRDs7QUFFRCxTQUFPO0FBQ0xILGdDQURLO0FBRUw0QixnQ0FGSztBQUdMRixnQkFISztBQUlMa0Isb0NBSks7QUFLTGQsc0NBTEs7QUFNTHRDLHdCQU5LO0FBT0xnQyxvQkFQSztBQVFMdkMsc0JBUks7QUFTTFEsd0JBVEs7QUFVTHdCLGdDQVZLO0FBV0w2Qix3REFYSztBQVlMNUM7QUFaSyxHQUFQO0FBY0QiLCJmaWxlIjoidHJhbnNmb3JtYWxpemVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgaXNGdW5jdGlvbixcbiAgaXNPYmplY3QsXG4gIGlzU3RyaW5nLFxuICBUcmFuc2Zvcm1FcnJvcixcbiAgdmFsaWRhdGVTY2hlbWEsXG59IGZyb20gJy4vdXRpbHMnXG5cbi8qKlxuICogVHJhbnNmb3JtYWxpemVyIGZhY3RvcnkgZnVuY3Rpb24uXG4gKiBAcGFyYW0gIHtPYmplY3R9IFtiYXNlT3B0aW9ucz17fV1cbiAqIEByZXR1cm4ge09iamVjdH0gdHJhbnNmb3JtYWxpemVyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZVRyYW5zZm9ybWFsaXplcihiYXNlT3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHJlZ2lzdHJ5ID0ge31cblxuICAvKipcbiAgICogUmVnaXN0ZXIgYSBzY2hlbWFcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy5uYW1lIC0gc2NoZW1hIG5hbWUvaWRcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLnNjaGVtYSAtIHNjaGVtYSBkZWZpbml0aW9uXG4gICAqIEBwYXJhbSAge09iamVjdH0gW2FyZ3Mub3B0aW9ucz17fV0gLSBzY2hlbWEgb3B0aW9ucyB0byBiZSBtZXJnZWQgaW4gdG8gdHJhbnNmb3JtIG9wdGlvbnNcbiAgICogQHJldHVybiB7VW5kZWZpbmVkfVxuICAgKi9cbiAgZnVuY3Rpb24gcmVnaXN0ZXIoeyBuYW1lLCBzY2hlbWEsIG9wdGlvbnM6IHNjaGVtYU9wdGlvbnMgfSkge1xuICAgIGlmICghaXNTdHJpbmcobmFtZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBcIm5hbWVcIiBQcm9wZXJ0eSAobm9uIHN0cmluZyknKVxuICAgIH1cbiAgICByZWdpc3RyeVtuYW1lXSA9IHtcbiAgICAgIHNjaGVtYTogdmFsaWRhdGVTY2hlbWEoeyBuYW1lLCBzY2hlbWEgfSksXG4gICAgICBvcHRpb25zOiBzY2hlbWFPcHRpb25zLFxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgc2NoZW1hIGZyb20gdGhlIHJlZ2lzdHJ5IGJ5IG5hbWVcbiAgICogQHBhcmFtICB7U3RyaW5nfSBvcHRpb25zLm5hbWUgLSBzY2hlbWEgbmFtZS9pZFxuICAgKiBAcmV0dXJuIHtPYmplY3R9ICAgICAgICAgICAgICAtIHNjaGVtYVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0U2NoZW1hKHsgbmFtZSB9KSB7XG4gICAgcmV0dXJuIHJlZ2lzdHJ5W25hbWVdXG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtIHJhdyBkYXRhIGludG8gYSB2YWxpZCBKU09OIEFQSSBkb2N1bWVudFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtICB7U3RyaW5nfSBhcmdzLm5hbWUgLSB0aGUgdG9wIGxldmVsIHNjaGVtYSBuYW1lXG4gICAqIEBwYXJhbSAge09iamVjdHxPYmplY3RbXX0gYXJncy5zb3VyY2UgLSBhIHNpbmdsZSBzb3VyY2Ugb2JqZWN0IG9yIGFuIGFyYXkgb2Ygc291cmNlIG9iamVjdHNcbiAgICogQHBhcmFtICB7T2JqZWN0fSBbb3B0aW9ucz17fV0gLSBmdW5jdGlvbiBsZXZlbCBvcHRpb25zXG4gICAqIEByZXR1cm4ge09iamVjdH0gZG9jdW1lbnRcbiAgICovXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybSh7IG5hbWUsIHNvdXJjZSwgb3B0aW9uczogb3B0cyB9KSB7XG4gICAgaWYgKCFpc1N0cmluZyhuYW1lKSkge1xuICAgICAgdGhyb3cgbmV3IFRyYW5zZm9ybUVycm9yKCdJbnZhbGlkIFwibmFtZVwiIFByb3BlcnR5IChub24gc3RyaW5nKScsIHsgbmFtZSwgc291cmNlLCBvcHRpb25zOiBvcHRzIH0pXG4gICAgfVxuICAgIGNvbnN0IGRvY1NjaGVtYSA9IHJlZ2lzdHJ5W25hbWVdXG4gICAgaWYgKCFkb2NTY2hlbWEpIHtcbiAgICAgIHRocm93IG5ldyBUcmFuc2Zvcm1FcnJvcihgTWlzc2luZyBTY2hlbWE6ICR7bmFtZX1gLCB7IG5hbWUsIHNvdXJjZSwgb3B0aW9uczogb3B0cyB9KVxuICAgIH1cbiAgICBjb25zdCBvcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgYmFzZU9wdGlvbnMsIG9wdHMpXG4gICAgY29uc3QgaW5jbHVkZSA9IGNyZWF0ZUluY2x1ZGUoeyBzb3VyY2UsIG9wdGlvbnMgfSlcbiAgICBjb25zdCBkYXRhID0gdHJhbnNmb3JtU291cmNlKHsgZG9jU2NoZW1hLCBzb3VyY2UsIG9wdGlvbnMsIGluY2x1ZGUgfSlcbiAgICBjb25zdCBpbmNsdWRlZCA9IGluY2x1ZGUuZ2V0KClcbiAgICBjb25zdCBkb2N1bWVudCA9IHtcbiAgICAgIGpzb25hcGk6IHtcbiAgICAgICAgdmVyc2lvbjogJzEuMCcsXG4gICAgICB9LFxuICAgIH1cbiAgICAvLyBhZGQgdG9wIGxldmVsIHByb3BlcnRpZXMgaWYgYXZhaWxhYmxlXG4gICAgY29uc3QgdG9wTGV2ZWwgPSBbJ2xpbmtzJywgJ21ldGEnXVxuICAgIHRvcExldmVsLmZvckVhY2goKHByb3ApID0+IHtcbiAgICAgIGlmIChkb2NTY2hlbWEuc2NoZW1hW3Byb3BdKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGRvY1NjaGVtYS5zY2hlbWFbcHJvcF0oeyBzb3VyY2UsIG9wdGlvbnMsIGRhdGEsIGluY2x1ZGVkIH0pXG4gICAgICAgIGlmIChpc09iamVjdChyZXN1bHQpKSB7XG4gICAgICAgICAgZG9jdW1lbnRbcHJvcF0gPSByZXN1bHRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gICAgZG9jdW1lbnQuZGF0YSA9IGRhdGFcbiAgICBpZiAoaW5jbHVkZWQubGVuZ3RoKSB7XG4gICAgICBkb2N1bWVudC5pbmNsdWRlZCA9IGluY2x1ZGVkXG4gICAgfVxuICAgIHJldHVybiBkb2N1bWVudFxuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSBzb3VyY2UgaW50byB0aGUgXCJwcmltYXJ5IGRhdGFcIiBvZiB0aGUgZG9jdW1lbnRcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kb2NTY2hlbWEgLSB0aGUgdG9wIGxldmVsIHNjaGVtYSB1c2VkIGZvciB0cmFuc2Zvcm1pbmcgdGhlIGRvY3VtZW50XG4gICAqIEBwYXJhbSAge09iamVjdHxPYmplY3RbXX0gYXJncy5zb3VyY2UgLSBzb3VyY2UgZGF0YVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3Mub3B0aW9ucyAtIGZ1bmN0aW9uIGxldmVsIG9wdGlvbnNcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmluY2x1ZGUgLSBpbmNsdWRlIG9iamVjdFxuICAgKiBAcmV0dXJuIHtPYmplY3R8T2JqZWN0W119XG4gICAqL1xuICBmdW5jdGlvbiB0cmFuc2Zvcm1Tb3VyY2UoYXJncykge1xuICAgIGNvbnN0IHsgZG9jU2NoZW1hLCBzb3VyY2UsIG9wdGlvbnM6IG9wdHMsIGluY2x1ZGUgfSA9IGFyZ3NcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzb3VyY2UpKSB7XG4gICAgICByZXR1cm4gc291cmNlLm1hcChkYXRhID0+IHRyYW5zZm9ybURhdGEoeyBkb2NTY2hlbWEsIHNvdXJjZSwgb3B0aW9uczogb3B0cywgZGF0YSwgaW5jbHVkZSB9KSlcbiAgICB9XG4gICAgcmV0dXJuIHRyYW5zZm9ybURhdGEoeyBkb2NTY2hlbWEsIHNvdXJjZSwgb3B0aW9uczogb3B0cywgZGF0YTogc291cmNlLCBpbmNsdWRlIH0pXG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtIGEgc2luZ2xlIHNvdXJjZSBvYmplY3QgaW50byBhIHZhbGlkIHJlc291cmNlIG9iamVjdFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZG9jU2NoZW1hIC0gdGhlIHRvcCBsZXZlbCBzY2hlbWEgdXNlZCBmb3IgdHJhbnNmb3JtaW5nIHRoZSBkb2N1bWVudFxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlIC0gc291cmNlIGRhdGFcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLm9wdGlvbnMgLSBmdW5jdGlvbiBsZXZlbCBvcHRpb25zXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhIC0gY3VycmVudCBzb3VyY2Ugb2JqZWN0XG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5pbmNsdWRlIC0gaW5jbHVkZSBvYmplY3RcbiAgICogQHBhcmFtICB7U3RyaW5nfSBbYXJncy5fdHlwZV0gLSAoZm9yIHVzZSBieSB0cmFuc2Zvcm1SZWxhdGlvbnNoaXBEYXRhKVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IFthcmdzLl9pZF0gLSAoZm9yIHVzZSBieSB0cmFuc2Zvcm1SZWxhdGlvbnNoaXBEYXRhKVxuICAgKiBAcmV0dXJuIHtPYmplY3R9XG4gICAqL1xuICBmdW5jdGlvbiB0cmFuc2Zvcm1EYXRhKGFyZ3MpIHtcbiAgICBjb25zdCB7IGRvY1NjaGVtYSwgc291cmNlLCBvcHRpb25zLCBkYXRhLCBpbmNsdWRlLCBfdHlwZSwgX2lkIH0gPSBhcmdzXG4gICAgLy8gY2FsbCBkYXRhU2NoZW1hIGlmIGRlZmluZWQgYW5kIHN3aXRjaCBjb250ZXh0cyBpZiBuZWNlc3NhcnlcbiAgICBsZXQgZGF0YVNjaGVtYSA9IGRvY1NjaGVtYVxuICAgIGlmIChpc0Z1bmN0aW9uKGRvY1NjaGVtYS5zY2hlbWEuZGF0YS5kYXRhU2NoZW1hKSkge1xuICAgICAgY29uc3QgbmFtZSA9IGRvY1NjaGVtYS5zY2hlbWEuZGF0YS5kYXRhU2NoZW1hKHsgc291cmNlLCBkYXRhLCBvcHRpb25zIH0pXG4gICAgICBpZiAobmFtZSAhPT0gZG9jU2NoZW1hLm5hbWUpIHtcbiAgICAgICAgZGF0YVNjaGVtYSA9IHJlZ2lzdHJ5W25hbWVdXG4gICAgICAgIGlmICghZGF0YVNjaGVtYSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyBTY2hlbWE6ICR7bmFtZX1gKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHN0YXRlID0ge31cbiAgICBjb25zdCBwYXJhbXMgPSB7IGRhdGFTY2hlbWEsIHNvdXJjZSwgb3B0aW9ucywgZGF0YSwgc3RhdGUgfVxuICAgIGNvbnN0IHR5cGUgPSBwYXJhbXMudHlwZSA9IF90eXBlIHx8IGdldFR5cGUocGFyYW1zKVxuICAgIGNvbnN0IGlkID0gcGFyYW1zLmlkID0gX2lkIHx8IGdldElkKHBhcmFtcylcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gcGFyYW1zLmF0dHJpYnV0ZXMgPSBnZXRBdHRyaWJ1dGVzKHBhcmFtcylcbiAgICBjb25zdCByZWxhdGlvbnNoaXBzID0gcGFyYW1zLnJlbGF0aW9uc2hpcHMgPSBnZXRSZWxhdGlvbnNoaXBzKHsgaW5jbHVkZSwgLi4ucGFyYW1zIH0pXG4gICAgY29uc3QgbGlua3MgPSBwYXJhbXMubGlua3MgPSBnZXRMaW5rcyhwYXJhbXMpXG4gICAgY29uc3QgbWV0YSA9IHBhcmFtcy5tZXRhID0gZ2V0TWV0YShwYXJhbXMpXG4gICAgLy8gYnVpbGQgcmVzdWx0aW5nIHJlc291cmNlXG4gICAgY29uc3QgcmVzb3VyY2UgPSB7IHR5cGUsIGlkIH1cbiAgICBpZiAoaXNPYmplY3QoYXR0cmlidXRlcykpIHtcbiAgICAgIHJlc291cmNlLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzXG4gICAgfVxuICAgIGlmIChpc09iamVjdChyZWxhdGlvbnNoaXBzKSkge1xuICAgICAgcmVzb3VyY2UucmVsYXRpb25zaGlwcyA9IHJlbGF0aW9uc2hpcHNcbiAgICB9XG4gICAgaWYgKGlzT2JqZWN0KG1ldGEpKSB7XG4gICAgICByZXNvdXJjZS5tZXRhID0gbWV0YVxuICAgIH1cbiAgICBpZiAoaXNPYmplY3QobGlua3MpKSB7XG4gICAgICByZXNvdXJjZS5saW5rcyA9IGxpbmtzXG4gICAgfVxuICAgIHJldHVybiByZXNvdXJjZVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcmVzb3VyY2UgdHlwZSBmb3IgdGhlIGN1cnJlbnQgc291cmNlIG9iamVjdFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRhdGFTY2hlbWFcbiAgICogQHBhcmFtICB7T2JqZWN0fE9iamVjdFtdfSBhcmdzLnNvdXJjZVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3Mub3B0aW9uc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YVxuICAgKiBAcmV0dXJuIHtTdHJpbmd9IHR5cGVcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGZ1bmN0aW9uIGdldFR5cGUoYXJncykge1xuICAgIGNvbnN0IHsgZGF0YVNjaGVtYSwgLi4ub3RoZXJzIH0gPSBhcmdzXG4gICAgY29uc3QgdHlwZSA9IGRhdGFTY2hlbWEuc2NoZW1hLmRhdGEudHlwZShvdGhlcnMpXG4gICAgaWYgKCFpc1N0cmluZyh0eXBlKSkge1xuICAgICAgdGhyb3cgbmV3IFRyYW5zZm9ybUVycm9yKCdJbnZhbGlkIHR5cGUnLCBhcmdzKVxuICAgIH1cbiAgICByZXR1cm4gdHlwZVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcmVzb3VyY2UgaWQgZm9yIHRoZSBjdXJyZW50IHNvdXJjZSBvYmplY3RcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhU2NoZW1hXG4gICAqIEBwYXJhbSAge09iamVjdHxPYmplY3RbXX0gYXJncy5zb3VyY2VcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLm9wdGlvbnNcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRhdGFcbiAgICogQHBhcmFtICB7U3RyaW5nfSBhcmdzLnR5cGVcbiAgICogQHJldHVybiB7U3RyaW5nfSBpZFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0SWQoYXJncykge1xuICAgIGNvbnN0IHsgZGF0YVNjaGVtYSwgLi4ub3RoZXJzIH0gPSBhcmdzXG4gICAgY29uc3QgaWQgPSBkYXRhU2NoZW1hLnNjaGVtYS5kYXRhLmlkKG90aGVycylcbiAgICBpZiAoIWlzU3RyaW5nKGlkKSkge1xuICAgICAgdGhyb3cgbmV3IFRyYW5zZm9ybUVycm9yKCdJbnZhbGlkIGlkJywgYXJncylcbiAgICB9XG4gICAgcmV0dXJuIGlkXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSByZXNvdXJjZSBhdHRyaWJ1dGVzIG9iamVjdCBmb3IgdGhlIGN1cnJlbnQgc291cmNlIG9iamVjdFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRhdGFTY2hlbWFcbiAgICogQHBhcmFtICB7T2JqZWN0fE9iamVjdFtdfSBhcmdzLnNvdXJjZVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3Mub3B0aW9uc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGFyZ3MudHlwZVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGFyZ3MuaWRcbiAgICogQHJldHVybiB7T2JqZWN0fSBhdHRyaWJ1dGVzXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmdW5jdGlvbiBnZXRBdHRyaWJ1dGVzKGFyZ3MpIHtcbiAgICBjb25zdCB7IGRhdGFTY2hlbWEsIC4uLm90aGVycyB9ID0gYXJnc1xuICAgIGlmIChkYXRhU2NoZW1hLnNjaGVtYS5kYXRhLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBkYXRhU2NoZW1hLnNjaGVtYS5kYXRhLmF0dHJpYnV0ZXMob3RoZXJzKVxuICAgICAgcmV0dXJuIGF0dHJpYnV0ZXNcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcmVzb3VyY2UgcmVsYXRpb25zaGlwcyBvYmplY3QgZm9yIHRoZSBjdXJyZW50IHNvdXJjZSBvYmplY3RcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhU2NoZW1hXG4gICAqIEBwYXJhbSAge09iamVjdHxPYmplY3RbXX0gYXJncy5zb3VyY2VcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLm9wdGlvbnNcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRhdGFcbiAgICogQHBhcmFtICB7U3RyaW5nfSBhcmdzLnR5cGVcbiAgICogQHBhcmFtICB7U3RyaW5nfSBhcmdzLmlkXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5hdHRyaWJ1dGVzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5pbmNsdWRlXG4gICAqIEByZXR1cm4ge09iamVjdH0gcmVsYXRpb25zaGlwc1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0UmVsYXRpb25zaGlwcyhhcmdzKSB7XG4gICAgY29uc3QgeyBkYXRhU2NoZW1hLCAuLi5vdGhlcnMgfSA9IGFyZ3NcbiAgICBjb25zdCByZWxTY2hlbWEgPSBkYXRhU2NoZW1hLnNjaGVtYS5kYXRhLnJlbGF0aW9uc2hpcHNcbiAgICBpZiAocmVsU2NoZW1hKSB7XG4gICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocmVsU2NoZW1hKVxuICAgICAgY29uc3QgcmVsYXRpb25zaGlwcyA9IGtleXMucmVkdWNlKChtZW1vLCBrZXkpID0+IHtcbiAgICAgICAgY29uc3QgZm4gPSByZWxTY2hlbWFba2V5XVxuICAgICAgICBjb25zdCByZWxhdGlvbnNoaXAgPSBnZXRSZWxhdGlvbnNoaXAoeyBmbiwgLi4ub3RoZXJzIH0pXG4gICAgICAgIGlmIChpc09iamVjdChyZWxhdGlvbnNoaXApKSB7XG4gICAgICAgICAgbWVtb1trZXldID0gcmVsYXRpb25zaGlwXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lbW9cbiAgICAgIH0sIHt9KVxuICAgICAgaWYgKCFPYmplY3Qua2V5cyhyZWxhdGlvbnNoaXBzKS5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlbGF0aW9uc2hpcHNcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcmVzb3VyY2UgcmVsYXRpb25zaGlwIG9iamVjdCBmb3IgdGhlIGN1cnJlbnQgcmVsYXRpb25zaGlwIG9mIHRoZVxuICAgKiBjdXJyZW50IHNvdXJjZSBvYmplY3RcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5mblxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5vcHRpb25zXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy50eXBlXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy5pZFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuYXR0cmlidXRlc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuaW5jbHVkZVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IHJlbGF0aW9uc2hpcFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0UmVsYXRpb25zaGlwKGFyZ3MpIHtcbiAgICBjb25zdCB7IGZuLCBpbmNsdWRlLCAuLi5vdGhlcnMgfSA9IGFyZ3NcbiAgICBjb25zdCByZXN1bHQgPSBmbihvdGhlcnMpXG4gICAgaWYgKCFpc09iamVjdChyZXN1bHQpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICAgIGNvbnN0IHsgbWV0YSwgbGlua3MsIGRhdGEgfSA9IHJlc3VsdFxuICAgIGNvbnN0IGludmFsaWREYXRhID0gIWRhdGEgfHwgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnXG4gICAgaWYgKCFsaW5rcyAmJiAhbWV0YSAmJiBpbnZhbGlkRGF0YSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cbiAgICBjb25zdCByZWxhdGlvbnNoaXAgPSB7fVxuICAgIGlmICghaW52YWxpZERhdGEpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICAgIHJlbGF0aW9uc2hpcC5kYXRhID0gZGF0YS5tYXAoaXRlbSA9PiB0cmFuc2Zvcm1SZWxhdGlvbnNoaXBEYXRhKHtcbiAgICAgICAgICBpdGVtLFxuICAgICAgICAgIHNvdXJjZTogYXJncy5zb3VyY2UsXG4gICAgICAgICAgb3B0aW9uczogYXJncy5vcHRpb25zLFxuICAgICAgICAgIGluY2x1ZGUsXG4gICAgICAgIH0pKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVsYXRpb25zaGlwLmRhdGEgPSB0cmFuc2Zvcm1SZWxhdGlvbnNoaXBEYXRhKHtcbiAgICAgICAgICBpdGVtOiBkYXRhLFxuICAgICAgICAgIHNvdXJjZTogYXJncy5zb3VyY2UsXG4gICAgICAgICAgb3B0aW9uczogYXJncy5vcHRpb25zLFxuICAgICAgICAgIGluY2x1ZGUsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpc09iamVjdChtZXRhKSkge1xuICAgICAgcmVsYXRpb25zaGlwLm1ldGEgPSBtZXRhXG4gICAgfVxuICAgIGlmIChpc09iamVjdChsaW5rcykpIHtcbiAgICAgIHJlbGF0aW9uc2hpcC5saW5rcyA9IGxpbmtzXG4gICAgfVxuICAgIHJldHVybiByZWxhdGlvbnNoaXBcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRhdGEgZm9yIHRoZSBjdXJyZW50IHJlbGF0aW9uc2hpcCBvYmplY3QgZm9yIHRoZSBjdXJyZW50IHNvdXJjZVxuICAgKiBvYmplY3RcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5pdGVtIC0gdGhlIGN1cnJlbnQgZGF0YSBpdGVtXG4gICAqIEBwYXJhbSAge09iamVjdHxPYmplY3RbXX0gYXJncy5zb3VyY2VcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLm9wdGlvbnNcbiAgICogQHBhcmFtICB7RnVuY3Rpb259IGFyZ3MuaW5jbHVkZVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IGRhdGFcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybVJlbGF0aW9uc2hpcERhdGEoYXJncykge1xuICAgIGNvbnN0IHsgaXRlbSwgc291cmNlLCBvcHRpb25zLCBpbmNsdWRlIH0gPSBhcmdzXG4gICAgY29uc3QgeyBuYW1lLCBkYXRhLCBpbmNsdWRlZCwgbWV0YSB9ID0gaXRlbVxuICAgIGlmICghaXNTdHJpbmcobmFtZSkgfHwgIXJlZ2lzdHJ5W25hbWVdKSB7XG4gICAgICB0aHJvdyBuZXcgVHJhbnNmb3JtRXJyb3IoYE1pc3NpbmcgU2NoZW1hOiAke25hbWV9YCwgYXJncylcbiAgICB9XG4gICAgY29uc3QgcmVsU2NoZW1hID0gcmVnaXN0cnlbbmFtZV1cbiAgICBjb25zdCB0eXBlID0gZ2V0VHlwZSh7IGRhdGFTY2hlbWE6IHJlbFNjaGVtYSwgc291cmNlLCBvcHRpb25zLCBkYXRhIH0pXG4gICAgY29uc3QgaWQgPSBnZXRJZCh7IGRhdGFTY2hlbWE6IHJlbFNjaGVtYSwgc291cmNlLCBvcHRpb25zLCBkYXRhIH0pXG4gICAgY29uc3QgcmVzdWx0ID0geyB0eXBlLCBpZCB9XG4gICAgaWYgKGlzT2JqZWN0KG1ldGEpKSB7XG4gICAgICByZXN1bHQubWV0YSA9IG1ldGFcbiAgICB9XG4gICAgaWYgKGluY2x1ZGVkID09PSB0cnVlICYmICFpbmNsdWRlLmV4aXN0cyh7IHR5cGUsIGlkIH0pKSB7XG4gICAgICBjb25zdCByZXNvdXJjZSA9IHRyYW5zZm9ybURhdGEoe1xuICAgICAgICBkb2NTY2hlbWE6IHJlbFNjaGVtYSxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICBkYXRhLFxuICAgICAgICBpbmNsdWRlLFxuICAgICAgICBfdHlwZTogdHlwZSxcbiAgICAgICAgX2lkOiBpZCxcbiAgICAgIH0pXG4gICAgICBpbmNsdWRlLmluY2x1ZGUocmVzb3VyY2UpXG4gICAgfVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHJlc291cmNlIGxpbmtzIGZvciB0aGUgY3VycmVudCBzb3VyY2Ugb2JqZWN0XG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YVNjaGVtYVxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5vcHRpb25zXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy50eXBlXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy5pZFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuYXR0cmlidXRlc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MucmVsYXRpb25zaGlwc1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IGxpbmtzXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmdW5jdGlvbiBnZXRMaW5rcyhhcmdzKSB7XG4gICAgY29uc3QgeyBkYXRhU2NoZW1hLCAuLi5vdGhlcnMgfSA9IGFyZ3NcbiAgICBpZiAoZGF0YVNjaGVtYS5zY2hlbWEuZGF0YS5saW5rcykge1xuICAgICAgcmV0dXJuIGRhdGFTY2hlbWEuc2NoZW1hLmRhdGEubGlua3Mob3RoZXJzKVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSByZXNvdXJjZSBtZXRhIGZvciB0aGUgY3VycmVudCBzb3VyY2Ugb2JqZWN0XG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YVNjaGVtYVxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5vcHRpb25zXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy50eXBlXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy5pZFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuYXR0cmlidXRlc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MucmVsYXRpb25zaGlwc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MubGlua3NcbiAgICogQHJldHVybiB7T2JqZWN0fSBtZXRhXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmdW5jdGlvbiBnZXRNZXRhKGFyZ3MpIHtcbiAgICBjb25zdCB7IGRhdGFTY2hlbWEsIC4uLm90aGVycyB9ID0gYXJnc1xuICAgIGlmIChkYXRhU2NoZW1hLnNjaGVtYS5kYXRhLm1ldGEpIHtcbiAgICAgIHJldHVybiBkYXRhU2NoZW1hLnNjaGVtYS5kYXRhLm1ldGEob3RoZXJzKVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIGluY2x1ZGUgb2JqZWN0XG4gICAqIEByZXR1cm4ge09iamVjdH0gaW5jbHVkZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gY3JlYXRlSW5jbHVkZSgpIHtcbiAgICBjb25zdCBpbmNsdWRlZCA9IFtdXG4gICAgY29uc3QgYWxyZWFkeUluY2x1ZGVkID0ge31cbiAgICByZXR1cm4ge1xuICAgICAgLyoqXG4gICAgICAgKiBEZXRlcm1pbmUgd2hldGhlciBvciBub3QgYSBnaXZlbiByZXNvdXJjZSBoYXMgYWxyZWFkeSBiZWVuIGluY2x1ZGVkXG4gICAgICAgKiBAcGFyYW0ge09iamVjdH0gYXJnc1xuICAgICAgICogQHBhcmFtIHtTdHJpbmd9IGFyZ3MudHlwZVxuICAgICAgICogQHBhcmFtIHtTdHJpbmd9IGFyZ3MuaWRcbiAgICAgICAqIEByZXR1cm4ge0Jvb2xlYW59XG4gICAgICAgKi9cbiAgICAgIGV4aXN0cyh7IHR5cGUsIGlkIH0pIHtcbiAgICAgICAgcmV0dXJuIGFscmVhZHlJbmNsdWRlZFtgJHt0eXBlfToke2lkfWBdXG4gICAgICB9LFxuXG4gICAgICAvKipcbiAgICAgICAqIEFkZCBhbiBpbmNsdWRlZCByZXNvdXJjZSB0byB0aGUgaW5jbHVkZWQgc2VjdGlvbiBvZiB0aGUgZG9jdW1lbnRcbiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSByZXNvdXJjZVxuICAgICAgICogQHJldHVybiB7VW5kZWZpbmVkfVxuICAgICAgICovXG4gICAgICBpbmNsdWRlKHJlc291cmNlKSB7XG4gICAgICAgIGFscmVhZHlJbmNsdWRlZFtgJHtyZXNvdXJjZS50eXBlfToke3Jlc291cmNlLmlkfWBdID0gdHJ1ZVxuICAgICAgICBpbmNsdWRlZC5wdXNoKHJlc291cmNlKVxuICAgICAgfSxcblxuICAgICAgLyoqXG4gICAgICAgKiBSZXR1cm4gdGhlIGluY2x1ZGVkIGFycmF5IGluIGl0cyBjdXJyZW50IHN0YXRlXG4gICAgICAgKiBAcmV0dXJuIHtPYmplY3RbXX1cbiAgICAgICAqL1xuICAgICAgZ2V0KCkge1xuICAgICAgICByZXR1cm4gaW5jbHVkZWRcbiAgICAgIH0sXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBjcmVhdGVJbmNsdWRlLFxuICAgIGdldEF0dHJpYnV0ZXMsXG4gICAgZ2V0SWQsXG4gICAgZ2V0UmVsYXRpb25zaGlwLFxuICAgIGdldFJlbGF0aW9uc2hpcHMsXG4gICAgZ2V0U2NoZW1hLFxuICAgIGdldFR5cGUsXG4gICAgcmVnaXN0ZXIsXG4gICAgdHJhbnNmb3JtLFxuICAgIHRyYW5zZm9ybURhdGEsXG4gICAgdHJhbnNmb3JtUmVsYXRpb25zaGlwRGF0YSxcbiAgICB0cmFuc2Zvcm1Tb3VyY2UsXG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi90cmFuc2Zvcm1hbGl6ZXIuanMiXSwibmFtZXMiOlsiY3JlYXRlVHJhbnNmb3JtYWxpemVyIiwiYmFzZU9wdGlvbnMiLCJyZWdpc3RyeSIsInJlZ2lzdGVyIiwibmFtZSIsInNjaGVtYSIsInNjaGVtYU9wdGlvbnMiLCJvcHRpb25zIiwiRXJyb3IiLCJ1bmRlZmluZWQiLCJnZXRTY2hlbWEiLCJ0cmFuc2Zvcm0iLCJzb3VyY2UiLCJvcHRzIiwiZG9jU2NoZW1hIiwiT2JqZWN0IiwiYXNzaWduIiwiaW5jbHVkZSIsImNyZWF0ZUluY2x1ZGUiLCJkYXRhIiwidHJhbnNmb3JtU291cmNlIiwiaW5jbHVkZWQiLCJnZXQiLCJkb2N1bWVudCIsImpzb25hcGkiLCJ2ZXJzaW9uIiwidG9wTGV2ZWwiLCJmb3JFYWNoIiwicHJvcCIsInJlc3VsdCIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJ0cmFuc2Zvcm1EYXRhIiwiX3R5cGUiLCJfaWQiLCJkYXRhU2NoZW1hIiwic3RhdGUiLCJwYXJhbXMiLCJ0eXBlIiwiZ2V0VHlwZSIsImlkIiwiZ2V0SWQiLCJhdHRyaWJ1dGVzIiwiZ2V0QXR0cmlidXRlcyIsInJlbGF0aW9uc2hpcHMiLCJnZXRSZWxhdGlvbnNoaXBzIiwibGlua3MiLCJnZXRMaW5rcyIsIm1ldGEiLCJnZXRNZXRhIiwicmVzb3VyY2UiLCJvdGhlcnMiLCJyZWxTY2hlbWEiLCJrZXlzIiwicmVkdWNlIiwibWVtbyIsImtleSIsImZuIiwicmVsYXRpb25zaGlwIiwiZ2V0UmVsYXRpb25zaGlwIiwiaW52YWxpZERhdGEiLCJ0cmFuc2Zvcm1SZWxhdGlvbnNoaXBEYXRhIiwiaXRlbSIsImV4aXN0cyIsImFscmVhZHlJbmNsdWRlZCIsInB1c2giXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7a0JBYXdCQSxxQjs7QUFieEI7Ozs7QUFRQTs7Ozs7QUFLZSxTQUFTQSxxQkFBVCxHQUFpRDtBQUFBLE1BQWxCQyxXQUFrQix1RUFB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QixRQUFNRyxXQUFXLEVBQWpCO0FBQ0EsUUFBTThDLGtCQUFrQixFQUF4QjtBQUNBLFdBQU87QUFDTDs7Ozs7OztBQU9BRCxZQVJLLHlCQVFnQjtBQUFBLFlBQVp6QixJQUFZLFNBQVpBLElBQVk7QUFBQSxZQUFORSxFQUFNLFNBQU5BLEVBQU07O0FBQ25CLGVBQU93QixnQkFBbUIxQixJQUFuQixTQUEyQkUsRUFBM0IsQ0FBUDtBQUNELE9BVkk7OztBQVlMOzs7OztBQUtBMUIsYUFqQkssbUJBaUJHb0MsUUFqQkgsRUFpQmE7QUFDaEJjLHdCQUFtQmQsU0FBU1osSUFBNUIsU0FBb0NZLFNBQVNWLEVBQTdDLElBQXFELElBQXJEO0FBQ0F0QixpQkFBUytDLElBQVQsQ0FBY2YsUUFBZDtBQUNELE9BcEJJOzs7QUFzQkw7Ozs7QUFJQS9CLFNBMUJLLGlCQTBCQztBQUNKLGVBQU9ELFFBQVA7QUFDRDtBQTVCSSxLQUFQO0FBOEJEOztBQUVELFNBQU87QUFDTEgsZ0NBREs7QUFFTDRCLGdDQUZLO0FBR0xGLGdCQUhLO0FBSUxrQixvQ0FKSztBQUtMZCxzQ0FMSztBQU1MdEMsd0JBTks7QUFPTGdDLG9CQVBLO0FBUUx2QyxzQkFSSztBQVNMUSx3QkFUSztBQVVMd0IsZ0NBVks7QUFXTDZCLHdEQVhLO0FBWUw1QztBQVpLLEdBQVA7QUFjRCIsImZpbGUiOiJ0cmFuc2Zvcm1hbGl6ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBpc0Z1bmN0aW9uLFxuICBpc09iamVjdCxcbiAgaXNTdHJpbmcsXG4gIFRyYW5zZm9ybUVycm9yLFxuICB2YWxpZGF0ZVNjaGVtYSxcbn0gZnJvbSAnLi91dGlscydcblxuLyoqXG4gKiBUcmFuc2Zvcm1hbGl6ZXIgZmFjdG9yeSBmdW5jdGlvbi5cbiAqIEBwYXJhbSAge09iamVjdH0gW2Jhc2VPcHRpb25zPXt9XVxuICogQHJldHVybiB7T2JqZWN0fSB0cmFuc2Zvcm1hbGl6ZXJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlVHJhbnNmb3JtYWxpemVyKGJhc2VPcHRpb25zID0ge30pIHtcbiAgY29uc3QgcmVnaXN0cnkgPSB7fVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIHNjaGVtYVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtICB7U3RyaW5nfSBhcmdzLm5hbWUgLSBzY2hlbWEgbmFtZS9pZFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3Muc2NoZW1hIC0gc2NoZW1hIGRlZmluaXRpb25cbiAgICogQHBhcmFtICB7T2JqZWN0fSBbYXJncy5vcHRpb25zPXt9XSAtIHNjaGVtYSBvcHRpb25zIHRvIGJlIG1lcmdlZCBpbiB0byB0cmFuc2Zvcm0gb3B0aW9uc1xuICAgKiBAcmV0dXJuIHtVbmRlZmluZWR9XG4gICAqL1xuICBmdW5jdGlvbiByZWdpc3Rlcih7IG5hbWUsIHNjaGVtYSwgb3B0aW9uczogc2NoZW1hT3B0aW9ucyB9KSB7XG4gICAgaWYgKCFpc1N0cmluZyhuYW1lKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFwibmFtZVwiIFByb3BlcnR5IChub24gc3RyaW5nKScpXG4gICAgfVxuICAgIHJlZ2lzdHJ5W25hbWVdID0ge1xuICAgICAgc2NoZW1hOiB2YWxpZGF0ZVNjaGVtYSh7IG5hbWUsIHNjaGVtYSB9KSxcbiAgICAgIG9wdGlvbnM6IHNjaGVtYU9wdGlvbnMsXG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBzY2hlbWEgZnJvbSB0aGUgcmVnaXN0cnkgYnkgbmFtZVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IG9wdGlvbnMubmFtZSAtIHNjaGVtYSBuYW1lL2lkXG4gICAqIEByZXR1cm4ge09iamVjdH0gICAgICAgICAgICAgIC0gc2NoZW1hXG4gICAqL1xuICBmdW5jdGlvbiBnZXRTY2hlbWEoeyBuYW1lIH0pIHtcbiAgICByZXR1cm4gcmVnaXN0cnlbbmFtZV1cbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gcmF3IGRhdGEgaW50byBhIHZhbGlkIEpTT04gQVBJIGRvY3VtZW50XG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGFyZ3MubmFtZSAtIHRoZSB0b3AgbGV2ZWwgc2NoZW1hIG5hbWVcbiAgICogQHBhcmFtICB7T2JqZWN0fE9iamVjdFtdfSBhcmdzLnNvdXJjZSAtIGEgc2luZ2xlIHNvdXJjZSBvYmplY3Qgb3IgYW4gYXJheSBvZiBzb3VyY2Ugb2JqZWN0c1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IFtvcHRpb25zPXt9XSAtIGZ1bmN0aW9uIGxldmVsIG9wdGlvbnNcbiAgICogQHJldHVybiB7T2JqZWN0fSBkb2N1bWVudFxuICAgKi9cbiAgZnVuY3Rpb24gdHJhbnNmb3JtKHsgbmFtZSwgc291cmNlLCBvcHRpb25zOiBvcHRzIH0pIHtcbiAgICBpZiAoIWlzU3RyaW5nKG5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgVHJhbnNmb3JtRXJyb3IoYEludmFsaWQgXCJuYW1lXCIgUHJvcGVydHkgKG5vbiBzdHJpbmcpIGFjdHVhbCB0eXBlOiAnJHt0eXBlb2YgbmFtZX0nYCwgeyBuYW1lLCBzb3VyY2UsIG9wdGlvbnM6IG9wdHMgfSlcbiAgICB9XG4gICAgY29uc3QgZG9jU2NoZW1hID0gcmVnaXN0cnlbbmFtZV1cbiAgICBpZiAoIWRvY1NjaGVtYSkge1xuICAgICAgdGhyb3cgbmV3IFRyYW5zZm9ybUVycm9yKGBNaXNzaW5nIFNjaGVtYTogJHtuYW1lfWAsIHsgbmFtZSwgc291cmNlLCBvcHRpb25zOiBvcHRzIH0pXG4gICAgfVxuICAgIGNvbnN0IG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBiYXNlT3B0aW9ucywgb3B0cylcbiAgICBjb25zdCBpbmNsdWRlID0gY3JlYXRlSW5jbHVkZSh7IHNvdXJjZSwgb3B0aW9ucyB9KVxuICAgIGNvbnN0IGRhdGEgPSB0cmFuc2Zvcm1Tb3VyY2UoeyBkb2NTY2hlbWEsIHNvdXJjZSwgb3B0aW9ucywgaW5jbHVkZSB9KVxuICAgIGNvbnN0IGluY2x1ZGVkID0gaW5jbHVkZS5nZXQoKVxuICAgIGNvbnN0IGRvY3VtZW50ID0ge1xuICAgICAganNvbmFwaToge1xuICAgICAgICB2ZXJzaW9uOiAnMS4wJyxcbiAgICAgIH0sXG4gICAgfVxuICAgIC8vIGFkZCB0b3AgbGV2ZWwgcHJvcGVydGllcyBpZiBhdmFpbGFibGVcbiAgICBjb25zdCB0b3BMZXZlbCA9IFsnbGlua3MnLCAnbWV0YSddXG4gICAgdG9wTGV2ZWwuZm9yRWFjaCgocHJvcCkgPT4ge1xuICAgICAgaWYgKGRvY1NjaGVtYS5zY2hlbWFbcHJvcF0pIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZG9jU2NoZW1hLnNjaGVtYVtwcm9wXSh7IHNvdXJjZSwgb3B0aW9ucywgZGF0YSwgaW5jbHVkZWQgfSlcbiAgICAgICAgaWYgKGlzT2JqZWN0KHJlc3VsdCkpIHtcbiAgICAgICAgICBkb2N1bWVudFtwcm9wXSA9IHJlc3VsdFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgICBkb2N1bWVudC5kYXRhID0gZGF0YVxuICAgIGlmIChpbmNsdWRlZC5sZW5ndGgpIHtcbiAgICAgIGRvY3VtZW50LmluY2x1ZGVkID0gaW5jbHVkZWRcbiAgICB9XG4gICAgcmV0dXJuIGRvY3VtZW50XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtIHNvdXJjZSBpbnRvIHRoZSBcInByaW1hcnkgZGF0YVwiIG9mIHRoZSBkb2N1bWVudFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRvY1NjaGVtYSAtIHRoZSB0b3AgbGV2ZWwgc2NoZW1hIHVzZWQgZm9yIHRyYW5zZm9ybWluZyB0aGUgZG9jdW1lbnRcbiAgICogQHBhcmFtICB7T2JqZWN0fE9iamVjdFtdfSBhcmdzLnNvdXJjZSAtIHNvdXJjZSBkYXRhXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5vcHRpb25zIC0gZnVuY3Rpb24gbGV2ZWwgb3B0aW9uc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuaW5jbHVkZSAtIGluY2x1ZGUgb2JqZWN0XG4gICAqIEByZXR1cm4ge09iamVjdHxPYmplY3RbXX1cbiAgICovXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybVNvdXJjZShhcmdzKSB7XG4gICAgY29uc3QgeyBkb2NTY2hlbWEsIHNvdXJjZSwgb3B0aW9uczogb3B0cywgaW5jbHVkZSB9ID0gYXJnc1xuICAgIGlmIChBcnJheS5pc0FycmF5KHNvdXJjZSkpIHtcbiAgICAgIHJldHVybiBzb3VyY2UubWFwKGRhdGEgPT4gdHJhbnNmb3JtRGF0YSh7IGRvY1NjaGVtYSwgc291cmNlLCBvcHRpb25zOiBvcHRzLCBkYXRhLCBpbmNsdWRlIH0pKVxuICAgIH1cbiAgICByZXR1cm4gdHJhbnNmb3JtRGF0YSh7IGRvY1NjaGVtYSwgc291cmNlLCBvcHRpb25zOiBvcHRzLCBkYXRhOiBzb3VyY2UsIGluY2x1ZGUgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gYSBzaW5nbGUgc291cmNlIG9iamVjdCBpbnRvIGEgdmFsaWQgcmVzb3VyY2Ugb2JqZWN0XG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJnXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kb2NTY2hlbWEgLSB0aGUgdG9wIGxldmVsIHNjaGVtYSB1c2VkIGZvciB0cmFuc2Zvcm1pbmcgdGhlIGRvY3VtZW50XG4gICAqIEBwYXJhbSAge09iamVjdHxPYmplY3RbXX0gYXJncy5zb3VyY2UgLSBzb3VyY2UgZGF0YVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3Mub3B0aW9ucyAtIGZ1bmN0aW9uIGxldmVsIG9wdGlvbnNcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRhdGEgLSBjdXJyZW50IHNvdXJjZSBvYmplY3RcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmluY2x1ZGUgLSBpbmNsdWRlIG9iamVjdFxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IFthcmdzLl90eXBlXSAtIChmb3IgdXNlIGJ5IHRyYW5zZm9ybVJlbGF0aW9uc2hpcERhdGEpXG4gICAqIEBwYXJhbSAge1N0cmluZ30gW2FyZ3MuX2lkXSAtIChmb3IgdXNlIGJ5IHRyYW5zZm9ybVJlbGF0aW9uc2hpcERhdGEpXG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICovXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybURhdGEoYXJncykge1xuICAgIGNvbnN0IHsgZG9jU2NoZW1hLCBzb3VyY2UsIG9wdGlvbnMsIGRhdGEsIGluY2x1ZGUsIF90eXBlLCBfaWQgfSA9IGFyZ3NcbiAgICAvLyBjYWxsIGRhdGFTY2hlbWEgaWYgZGVmaW5lZCBhbmQgc3dpdGNoIGNvbnRleHRzIGlmIG5lY2Vzc2FyeVxuICAgIGxldCBkYXRhU2NoZW1hID0gZG9jU2NoZW1hXG4gICAgaWYgKGlzRnVuY3Rpb24oZG9jU2NoZW1hLnNjaGVtYS5kYXRhLmRhdGFTY2hlbWEpKSB7XG4gICAgICBjb25zdCBuYW1lID0gZG9jU2NoZW1hLnNjaGVtYS5kYXRhLmRhdGFTY2hlbWEoeyBzb3VyY2UsIGRhdGEsIG9wdGlvbnMgfSlcbiAgICAgIGlmIChuYW1lICE9PSBkb2NTY2hlbWEubmFtZSkge1xuICAgICAgICBkYXRhU2NoZW1hID0gcmVnaXN0cnlbbmFtZV1cbiAgICAgICAgaWYgKCFkYXRhU2NoZW1hKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIFNjaGVtYTogJHtuYW1lfWApXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3Qgc3RhdGUgPSB7fVxuICAgIGNvbnN0IHBhcmFtcyA9IHsgZGF0YVNjaGVtYSwgc291cmNlLCBvcHRpb25zLCBkYXRhLCBzdGF0ZSB9XG4gICAgY29uc3QgdHlwZSA9IHBhcmFtcy50eXBlID0gX3R5cGUgfHwgZ2V0VHlwZShwYXJhbXMpXG4gICAgY29uc3QgaWQgPSBwYXJhbXMuaWQgPSBfaWQgfHwgZ2V0SWQocGFyYW1zKVxuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBwYXJhbXMuYXR0cmlidXRlcyA9IGdldEF0dHJpYnV0ZXMocGFyYW1zKVxuICAgIGNvbnN0IHJlbGF0aW9uc2hpcHMgPSBwYXJhbXMucmVsYXRpb25zaGlwcyA9IGdldFJlbGF0aW9uc2hpcHMoeyBpbmNsdWRlLCAuLi5wYXJhbXMgfSlcbiAgICBjb25zdCBsaW5rcyA9IHBhcmFtcy5saW5rcyA9IGdldExpbmtzKHBhcmFtcylcbiAgICBjb25zdCBtZXRhID0gcGFyYW1zLm1ldGEgPSBnZXRNZXRhKHBhcmFtcylcbiAgICAvLyBidWlsZCByZXN1bHRpbmcgcmVzb3VyY2VcbiAgICBjb25zdCByZXNvdXJjZSA9IHsgdHlwZSwgaWQgfVxuICAgIGlmIChpc09iamVjdChhdHRyaWJ1dGVzKSkge1xuICAgICAgcmVzb3VyY2UuYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXNcbiAgICB9XG4gICAgaWYgKGlzT2JqZWN0KHJlbGF0aW9uc2hpcHMpKSB7XG4gICAgICByZXNvdXJjZS5yZWxhdGlvbnNoaXBzID0gcmVsYXRpb25zaGlwc1xuICAgIH1cbiAgICBpZiAoaXNPYmplY3QobWV0YSkpIHtcbiAgICAgIHJlc291cmNlLm1ldGEgPSBtZXRhXG4gICAgfVxuICAgIGlmIChpc09iamVjdChsaW5rcykpIHtcbiAgICAgIHJlc291cmNlLmxpbmtzID0gbGlua3NcbiAgICB9XG4gICAgcmV0dXJuIHJlc291cmNlXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSByZXNvdXJjZSB0eXBlIGZvciB0aGUgY3VycmVudCBzb3VyY2Ugb2JqZWN0XG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YVNjaGVtYVxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5vcHRpb25zXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhXG4gICAqIEByZXR1cm4ge1N0cmluZ30gdHlwZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0VHlwZShhcmdzKSB7XG4gICAgY29uc3QgeyBkYXRhU2NoZW1hLCAuLi5vdGhlcnMgfSA9IGFyZ3NcbiAgICBjb25zdCB0eXBlID0gZGF0YVNjaGVtYS5zY2hlbWEuZGF0YS50eXBlKG90aGVycylcbiAgICBpZiAoIWlzU3RyaW5nKHR5cGUpKSB7XG4gICAgICB0aHJvdyBuZXcgVHJhbnNmb3JtRXJyb3IoYEludmFsaWQgdHlwZSwgZXhwZWN0ZWQgc3RyaW5nIGJ1dCBpcyAnJHt0eXBlb2YgdHlwZX0nLiBgLCBhcmdzKVxuICAgIH1cbiAgICByZXR1cm4gdHlwZVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcmVzb3VyY2UgaWQgZm9yIHRoZSBjdXJyZW50IHNvdXJjZSBvYmplY3RcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhU2NoZW1hXG4gICAqIEBwYXJhbSAge09iamVjdHxPYmplY3RbXX0gYXJncy5zb3VyY2VcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLm9wdGlvbnNcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRhdGFcbiAgICogQHBhcmFtICB7U3RyaW5nfSBhcmdzLnR5cGVcbiAgICogQHJldHVybiB7U3RyaW5nfSBpZFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0SWQoYXJncykge1xuICAgIGNvbnN0IHsgZGF0YVNjaGVtYSwgLi4ub3RoZXJzIH0gPSBhcmdzXG4gICAgY29uc3QgaWQgPSBkYXRhU2NoZW1hLnNjaGVtYS5kYXRhLmlkKG90aGVycylcbiAgICBpZiAoIWlzU3RyaW5nKGlkKSkge1xuICAgICAgdGhyb3cgbmV3IFRyYW5zZm9ybUVycm9yKGBJbnZhbGlkIHR5cGUsIGV4cGVjdGVkIHN0cmluZyBidXQgaXMgJyR7dHlwZW9mIGlkfScuYCwgYXJncylcbiAgICB9XG4gICAgcmV0dXJuIGlkXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSByZXNvdXJjZSBhdHRyaWJ1dGVzIG9iamVjdCBmb3IgdGhlIGN1cnJlbnQgc291cmNlIG9iamVjdFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRhdGFTY2hlbWFcbiAgICogQHBhcmFtICB7T2JqZWN0fE9iamVjdFtdfSBhcmdzLnNvdXJjZVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3Mub3B0aW9uc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGFyZ3MudHlwZVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGFyZ3MuaWRcbiAgICogQHJldHVybiB7T2JqZWN0fSBhdHRyaWJ1dGVzXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmdW5jdGlvbiBnZXRBdHRyaWJ1dGVzKGFyZ3MpIHtcbiAgICBjb25zdCB7IGRhdGFTY2hlbWEsIC4uLm90aGVycyB9ID0gYXJnc1xuICAgIGlmIChkYXRhU2NoZW1hLnNjaGVtYS5kYXRhLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBkYXRhU2NoZW1hLnNjaGVtYS5kYXRhLmF0dHJpYnV0ZXMob3RoZXJzKVxuICAgICAgcmV0dXJuIGF0dHJpYnV0ZXNcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcmVzb3VyY2UgcmVsYXRpb25zaGlwcyBvYmplY3QgZm9yIHRoZSBjdXJyZW50IHNvdXJjZSBvYmplY3RcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhU2NoZW1hXG4gICAqIEBwYXJhbSAge09iamVjdHxPYmplY3RbXX0gYXJncy5zb3VyY2VcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLm9wdGlvbnNcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLmRhdGFcbiAgICogQHBhcmFtICB7U3RyaW5nfSBhcmdzLnR5cGVcbiAgICogQHBhcmFtICB7U3RyaW5nfSBhcmdzLmlkXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5hdHRyaWJ1dGVzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5pbmNsdWRlXG4gICAqIEByZXR1cm4ge09iamVjdH0gcmVsYXRpb25zaGlwc1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0UmVsYXRpb25zaGlwcyhhcmdzKSB7XG4gICAgY29uc3QgeyBkYXRhU2NoZW1hLCAuLi5vdGhlcnMgfSA9IGFyZ3NcbiAgICBjb25zdCByZWxTY2hlbWEgPSBkYXRhU2NoZW1hLnNjaGVtYS5kYXRhLnJlbGF0aW9uc2hpcHNcbiAgICBpZiAocmVsU2NoZW1hKSB7XG4gICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocmVsU2NoZW1hKVxuICAgICAgY29uc3QgcmVsYXRpb25zaGlwcyA9IGtleXMucmVkdWNlKChtZW1vLCBrZXkpID0+IHtcbiAgICAgICAgY29uc3QgZm4gPSByZWxTY2hlbWFba2V5XVxuICAgICAgICBjb25zdCByZWxhdGlvbnNoaXAgPSBnZXRSZWxhdGlvbnNoaXAoeyBmbiwgLi4ub3RoZXJzIH0pXG4gICAgICAgIGlmIChpc09iamVjdChyZWxhdGlvbnNoaXApKSB7XG4gICAgICAgICAgbWVtb1trZXldID0gcmVsYXRpb25zaGlwXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lbW9cbiAgICAgIH0sIHt9KVxuICAgICAgaWYgKCFPYmplY3Qua2V5cyhyZWxhdGlvbnNoaXBzKS5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlbGF0aW9uc2hpcHNcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcmVzb3VyY2UgcmVsYXRpb25zaGlwIG9iamVjdCBmb3IgdGhlIGN1cnJlbnQgcmVsYXRpb25zaGlwIG9mIHRoZVxuICAgKiBjdXJyZW50IHNvdXJjZSBvYmplY3RcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5mblxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5vcHRpb25zXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy50eXBlXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy5pZFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuYXR0cmlidXRlc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuaW5jbHVkZVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IHJlbGF0aW9uc2hpcFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0UmVsYXRpb25zaGlwKGFyZ3MpIHtcbiAgICBjb25zdCB7IGZuLCBpbmNsdWRlLCAuLi5vdGhlcnMgfSA9IGFyZ3NcbiAgICBjb25zdCByZXN1bHQgPSBmbihvdGhlcnMpXG4gICAgaWYgKCFpc09iamVjdChyZXN1bHQpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICAgIGNvbnN0IHsgbWV0YSwgbGlua3MsIGRhdGEgfSA9IHJlc3VsdFxuICAgIGNvbnN0IGludmFsaWREYXRhID0gIWRhdGEgfHwgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnXG4gICAgaWYgKCFsaW5rcyAmJiAhbWV0YSAmJiBpbnZhbGlkRGF0YSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cbiAgICBjb25zdCByZWxhdGlvbnNoaXAgPSB7fVxuICAgIGlmICghaW52YWxpZERhdGEpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICAgIHJlbGF0aW9uc2hpcC5kYXRhID0gZGF0YS5tYXAoaXRlbSA9PiB0cmFuc2Zvcm1SZWxhdGlvbnNoaXBEYXRhKHtcbiAgICAgICAgICBpdGVtLFxuICAgICAgICAgIHNvdXJjZTogYXJncy5zb3VyY2UsXG4gICAgICAgICAgb3B0aW9uczogYXJncy5vcHRpb25zLFxuICAgICAgICAgIGluY2x1ZGUsXG4gICAgICAgIH0pKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVsYXRpb25zaGlwLmRhdGEgPSB0cmFuc2Zvcm1SZWxhdGlvbnNoaXBEYXRhKHtcbiAgICAgICAgICBpdGVtOiBkYXRhLFxuICAgICAgICAgIHNvdXJjZTogYXJncy5zb3VyY2UsXG4gICAgICAgICAgb3B0aW9uczogYXJncy5vcHRpb25zLFxuICAgICAgICAgIGluY2x1ZGUsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpc09iamVjdChtZXRhKSkge1xuICAgICAgcmVsYXRpb25zaGlwLm1ldGEgPSBtZXRhXG4gICAgfVxuICAgIGlmIChpc09iamVjdChsaW5rcykpIHtcbiAgICAgIHJlbGF0aW9uc2hpcC5saW5rcyA9IGxpbmtzXG4gICAgfVxuICAgIHJldHVybiByZWxhdGlvbnNoaXBcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRhdGEgZm9yIHRoZSBjdXJyZW50IHJlbGF0aW9uc2hpcCBvYmplY3QgZm9yIHRoZSBjdXJyZW50IHNvdXJjZVxuICAgKiBvYmplY3RcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5pdGVtIC0gdGhlIGN1cnJlbnQgZGF0YSBpdGVtXG4gICAqIEBwYXJhbSAge09iamVjdHxPYmplY3RbXX0gYXJncy5zb3VyY2VcbiAgICogQHBhcmFtICB7T2JqZWN0fSBhcmdzLm9wdGlvbnNcbiAgICogQHBhcmFtICB7RnVuY3Rpb259IGFyZ3MuaW5jbHVkZVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IGRhdGFcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybVJlbGF0aW9uc2hpcERhdGEoYXJncykge1xuICAgIGNvbnN0IHsgaXRlbSwgc291cmNlLCBvcHRpb25zLCBpbmNsdWRlIH0gPSBhcmdzXG4gICAgY29uc3QgeyBuYW1lLCBkYXRhLCBpbmNsdWRlZCwgbWV0YSB9ID0gaXRlbVxuICAgIGlmICghaXNTdHJpbmcobmFtZSkgfHwgIXJlZ2lzdHJ5W25hbWVdKSB7XG4gICAgICB0aHJvdyBuZXcgVHJhbnNmb3JtRXJyb3IoYE1pc3NpbmcgU2NoZW1hOiAke25hbWV9YCwgYXJncylcbiAgICB9XG4gICAgY29uc3QgcmVsU2NoZW1hID0gcmVnaXN0cnlbbmFtZV1cbiAgICBjb25zdCB0eXBlID0gZ2V0VHlwZSh7IGRhdGFTY2hlbWE6IHJlbFNjaGVtYSwgc291cmNlLCBvcHRpb25zLCBkYXRhIH0pXG4gICAgY29uc3QgaWQgPSBnZXRJZCh7IGRhdGFTY2hlbWE6IHJlbFNjaGVtYSwgc291cmNlLCBvcHRpb25zLCBkYXRhIH0pXG4gICAgY29uc3QgcmVzdWx0ID0geyB0eXBlLCBpZCB9XG4gICAgaWYgKGlzT2JqZWN0KG1ldGEpKSB7XG4gICAgICByZXN1bHQubWV0YSA9IG1ldGFcbiAgICB9XG4gICAgaWYgKGluY2x1ZGVkID09PSB0cnVlICYmICFpbmNsdWRlLmV4aXN0cyh7IHR5cGUsIGlkIH0pKSB7XG4gICAgICBjb25zdCByZXNvdXJjZSA9IHRyYW5zZm9ybURhdGEoe1xuICAgICAgICBkb2NTY2hlbWE6IHJlbFNjaGVtYSxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICBkYXRhLFxuICAgICAgICBpbmNsdWRlLFxuICAgICAgICBfdHlwZTogdHlwZSxcbiAgICAgICAgX2lkOiBpZCxcbiAgICAgIH0pXG4gICAgICBpbmNsdWRlLmluY2x1ZGUocmVzb3VyY2UpXG4gICAgfVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHJlc291cmNlIGxpbmtzIGZvciB0aGUgY3VycmVudCBzb3VyY2Ugb2JqZWN0XG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YVNjaGVtYVxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5vcHRpb25zXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy50eXBlXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy5pZFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuYXR0cmlidXRlc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MucmVsYXRpb25zaGlwc1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IGxpbmtzXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmdW5jdGlvbiBnZXRMaW5rcyhhcmdzKSB7XG4gICAgY29uc3QgeyBkYXRhU2NoZW1hLCAuLi5vdGhlcnMgfSA9IGFyZ3NcbiAgICBpZiAoZGF0YVNjaGVtYS5zY2hlbWEuZGF0YS5saW5rcykge1xuICAgICAgcmV0dXJuIGRhdGFTY2hlbWEuc2NoZW1hLmRhdGEubGlua3Mob3RoZXJzKVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSByZXNvdXJjZSBtZXRhIGZvciB0aGUgY3VycmVudCBzb3VyY2Ugb2JqZWN0XG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuZGF0YVNjaGVtYVxuICAgKiBAcGFyYW0gIHtPYmplY3R8T2JqZWN0W119IGFyZ3Muc291cmNlXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5vcHRpb25zXG4gICAqIEBwYXJhbSAge09iamVjdH0gYXJncy5kYXRhXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy50eXBlXG4gICAqIEBwYXJhbSAge1N0cmluZ30gYXJncy5pZFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MuYXR0cmlidXRlc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MucmVsYXRpb25zaGlwc1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGFyZ3MubGlua3NcbiAgICogQHJldHVybiB7T2JqZWN0fSBtZXRhXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmdW5jdGlvbiBnZXRNZXRhKGFyZ3MpIHtcbiAgICBjb25zdCB7IGRhdGFTY2hlbWEsIC4uLm90aGVycyB9ID0gYXJnc1xuICAgIGlmIChkYXRhU2NoZW1hLnNjaGVtYS5kYXRhLm1ldGEpIHtcbiAgICAgIHJldHVybiBkYXRhU2NoZW1hLnNjaGVtYS5kYXRhLm1ldGEob3RoZXJzKVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIGluY2x1ZGUgb2JqZWN0XG4gICAqIEByZXR1cm4ge09iamVjdH0gaW5jbHVkZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gY3JlYXRlSW5jbHVkZSgpIHtcbiAgICBjb25zdCBpbmNsdWRlZCA9IFtdXG4gICAgY29uc3QgYWxyZWFkeUluY2x1ZGVkID0ge31cbiAgICByZXR1cm4ge1xuICAgICAgLyoqXG4gICAgICAgKiBEZXRlcm1pbmUgd2hldGhlciBvciBub3QgYSBnaXZlbiByZXNvdXJjZSBoYXMgYWxyZWFkeSBiZWVuIGluY2x1ZGVkXG4gICAgICAgKiBAcGFyYW0ge09iamVjdH0gYXJnc1xuICAgICAgICogQHBhcmFtIHtTdHJpbmd9IGFyZ3MudHlwZVxuICAgICAgICogQHBhcmFtIHtTdHJpbmd9IGFyZ3MuaWRcbiAgICAgICAqIEByZXR1cm4ge0Jvb2xlYW59XG4gICAgICAgKi9cbiAgICAgIGV4aXN0cyh7IHR5cGUsIGlkIH0pIHtcbiAgICAgICAgcmV0dXJuIGFscmVhZHlJbmNsdWRlZFtgJHt0eXBlfToke2lkfWBdXG4gICAgICB9LFxuXG4gICAgICAvKipcbiAgICAgICAqIEFkZCBhbiBpbmNsdWRlZCByZXNvdXJjZSB0byB0aGUgaW5jbHVkZWQgc2VjdGlvbiBvZiB0aGUgZG9jdW1lbnRcbiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSByZXNvdXJjZVxuICAgICAgICogQHJldHVybiB7VW5kZWZpbmVkfVxuICAgICAgICovXG4gICAgICBpbmNsdWRlKHJlc291cmNlKSB7XG4gICAgICAgIGFscmVhZHlJbmNsdWRlZFtgJHtyZXNvdXJjZS50eXBlfToke3Jlc291cmNlLmlkfWBdID0gdHJ1ZVxuICAgICAgICBpbmNsdWRlZC5wdXNoKHJlc291cmNlKVxuICAgICAgfSxcblxuICAgICAgLyoqXG4gICAgICAgKiBSZXR1cm4gdGhlIGluY2x1ZGVkIGFycmF5IGluIGl0cyBjdXJyZW50IHN0YXRlXG4gICAgICAgKiBAcmV0dXJuIHtPYmplY3RbXX1cbiAgICAgICAqL1xuICAgICAgZ2V0KCkge1xuICAgICAgICByZXR1cm4gaW5jbHVkZWRcbiAgICAgIH0sXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBjcmVhdGVJbmNsdWRlLFxuICAgIGdldEF0dHJpYnV0ZXMsXG4gICAgZ2V0SWQsXG4gICAgZ2V0UmVsYXRpb25zaGlwLFxuICAgIGdldFJlbGF0aW9uc2hpcHMsXG4gICAgZ2V0U2NoZW1hLFxuICAgIGdldFR5cGUsXG4gICAgcmVnaXN0ZXIsXG4gICAgdHJhbnNmb3JtLFxuICAgIHRyYW5zZm9ybURhdGEsXG4gICAgdHJhbnNmb3JtUmVsYXRpb25zaGlwRGF0YSxcbiAgICB0cmFuc2Zvcm1Tb3VyY2UsXG4gIH1cbn1cbiJdfQ==
{
"name": "transformalizer",
"version": "1.0.0",
"version": "1.0.1",
"description": "a bare bones node module for building JSON API v1.0 compliant payloads",

@@ -5,0 +5,0 @@ "main": "./dist/transformalizer.js",

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