UNPKG

@kazekyo/nau-graphql-codegen-preset

Version:

A GraphQL Code Generator preset for Nau

204 lines (201 loc) 22.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getFragmentDefinitionsByDocumentFiles = exports.getFragmentDefinitions = exports.getFragmentDefinitionByName = exports.getDirectives = exports.edgesField = exports.cursorField = exports.connectionIdField = exports.addFieldWithoutDuplication = exports.addFieldToSelectionSetNodeWithoutDuplication = void 0; exports.getOperationDefinitions = getOperationDefinitions; exports.typenameField = exports.pageInfoField = exports.nodeField = exports.isSameNameFieldNode = exports.idField = void 0; var _graphql = require("graphql"); var _nonNullable = require("./nonNullable"); function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); 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 = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } var pageInfoField = { kind: _graphql.Kind.FIELD, name: { kind: _graphql.Kind.NAME, value: 'pageInfo' }, selectionSet: { kind: _graphql.Kind.SELECTION_SET, selections: [{ kind: _graphql.Kind.FIELD, name: { kind: _graphql.Kind.NAME, value: 'hasNextPage' } }, { kind: _graphql.Kind.FIELD, name: { kind: _graphql.Kind.NAME, value: 'endCursor' } }, { kind: _graphql.Kind.FIELD, name: { kind: _graphql.Kind.NAME, value: 'hasPreviousPage' } }, { kind: _graphql.Kind.FIELD, name: { kind: _graphql.Kind.NAME, value: 'startCursor' } }] } }; exports.pageInfoField = pageInfoField; var cursorField = { kind: _graphql.Kind.FIELD, name: { kind: _graphql.Kind.NAME, value: 'cursor' } }; exports.cursorField = cursorField; var idField = { kind: _graphql.Kind.FIELD, name: { kind: _graphql.Kind.NAME, value: 'id' } }; exports.idField = idField; var typenameField = { kind: _graphql.Kind.FIELD, name: { kind: _graphql.Kind.NAME, value: '__typename' } }; exports.typenameField = typenameField; var nodeField = { kind: _graphql.Kind.FIELD, name: { kind: _graphql.Kind.NAME, value: 'node' }, selectionSet: { kind: _graphql.Kind.SELECTION_SET, selections: [idField, typenameField] } }; exports.nodeField = nodeField; var edgesField = { kind: _graphql.Kind.FIELD, name: { kind: _graphql.Kind.NAME, value: 'edges' }, selectionSet: { kind: _graphql.Kind.SELECTION_SET, selections: [nodeField, cursorField] } }; exports.edgesField = edgesField; var connectionIdField = { kind: _graphql.Kind.FIELD, name: { kind: _graphql.Kind.NAME, value: '_connectionId' }, directives: [{ kind: _graphql.Kind.DIRECTIVE, name: { kind: _graphql.Kind.NAME, value: 'client' } }] }; exports.connectionIdField = connectionIdField; function getOperationDefinitions(doc) { return doc.definitions.filter(function (definition) { return definition.kind === 'OperationDefinition'; }); } var getFragmentDefinitions = function getFragmentDefinitions(documentNode) { return documentNode.definitions.filter(function (definition) { return definition.kind === 'FragmentDefinition'; }); }; exports.getFragmentDefinitions = getFragmentDefinitions; var getFragmentDefinitionsByDocumentFiles = function getFragmentDefinitionsByDocumentFiles(documentFiles) { return documentFiles.map(function (file) { var _file$document; return (_file$document = file.document) === null || _file$document === void 0 ? void 0 : _file$document.definitions; }).filter(_nonNullable.nonNullable).flat().filter(function (definition) { return definition.kind === _graphql.Kind.FRAGMENT_DEFINITION; }); }; exports.getFragmentDefinitionsByDocumentFiles = getFragmentDefinitionsByDocumentFiles; var getFragmentDefinitionByName = function getFragmentDefinitionByName(_ref) { var fragmentDefinitions = _ref.fragmentDefinitions, fragmentName = _ref.fragmentName; return fragmentDefinitions.find(function (definition) { return definition.name.value === fragmentName; }); }; exports.getFragmentDefinitionByName = getFragmentDefinitionByName; var getDirectives = function getDirectives(_ref2) { var _node$directives; var node = _ref2.node, directiveNames = _ref2.directiveNames; var directives = node === null || node === void 0 ? void 0 : (_node$directives = node.directives) === null || _node$directives === void 0 ? void 0 : _node$directives.filter(function (directive) { return directiveNames.find(function (name) { return name === directive.name.value; }); }); if (!directives) return []; return directives; }; exports.getDirectives = getDirectives; var isSameNameFieldNode = function isSameNameFieldNode(_ref3) { var selection = _ref3.selection, name = _ref3.name; return selection.kind === _graphql.Kind.FIELD && selection.name.value === name; }; // Add the field, but do nothing if the field already exists exports.isSameNameFieldNode = isSameNameFieldNode; var addFieldWithoutDuplication = function addFieldWithoutDuplication(_ref4) { var fieldNode = _ref4.fieldNode, additionalFields = _ref4.additionalFields; if (!fieldNode.selectionSet) return fieldNode; var selectionSet = addFieldToSelectionSetNodeWithoutDuplication({ selectionSetNode: fieldNode.selectionSet, additionalFields: additionalFields }); return _objectSpread(_objectSpread({}, fieldNode), {}, { selectionSet: selectionSet }); }; // Add the field, but do nothing if the field already exists exports.addFieldWithoutDuplication = addFieldWithoutDuplication; var addFieldToSelectionSetNodeWithoutDuplication = function addFieldToSelectionSetNodeWithoutDuplication(_ref5) { var selectionSetNode = _ref5.selectionSetNode, additionalFields = _ref5.additionalFields; var selections = selectionSetNode.selections; var fieldNodes = additionalFields.filter(function (fieldNode) { return !selections.find(function (selection) { return isSameNameFieldNode({ selection: selection, name: fieldNode.name.value }); }); }); if (fieldNodes.length === 0) return selectionSetNode; return _objectSpread(_objectSpread({}, selectionSetNode), {}, { selections: [].concat(_toConsumableArray(selections), _toConsumableArray(fieldNodes)) }); }; exports.addFieldToSelectionSetNodeWithoutDuplication = addFieldToSelectionSetNodeWithoutDuplication; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYWdlSW5mb0ZpZWxkIiwia2luZCIsIktpbmQiLCJGSUVMRCIsIm5hbWUiLCJOQU1FIiwidmFsdWUiLCJzZWxlY3Rpb25TZXQiLCJTRUxFQ1RJT05fU0VUIiwic2VsZWN0aW9ucyIsImN1cnNvckZpZWxkIiwiaWRGaWVsZCIsInR5cGVuYW1lRmllbGQiLCJub2RlRmllbGQiLCJlZGdlc0ZpZWxkIiwiY29ubmVjdGlvbklkRmllbGQiLCJkaXJlY3RpdmVzIiwiRElSRUNUSVZFIiwiZ2V0T3BlcmF0aW9uRGVmaW5pdGlvbnMiLCJkb2MiLCJkZWZpbml0aW9ucyIsImZpbHRlciIsImRlZmluaXRpb24iLCJnZXRGcmFnbWVudERlZmluaXRpb25zIiwiZG9jdW1lbnROb2RlIiwiZ2V0RnJhZ21lbnREZWZpbml0aW9uc0J5RG9jdW1lbnRGaWxlcyIsImRvY3VtZW50RmlsZXMiLCJtYXAiLCJmaWxlIiwiZG9jdW1lbnQiLCJub25OdWxsYWJsZSIsImZsYXQiLCJGUkFHTUVOVF9ERUZJTklUSU9OIiwiZ2V0RnJhZ21lbnREZWZpbml0aW9uQnlOYW1lIiwiZnJhZ21lbnREZWZpbml0aW9ucyIsImZyYWdtZW50TmFtZSIsImZpbmQiLCJnZXREaXJlY3RpdmVzIiwibm9kZSIsImRpcmVjdGl2ZU5hbWVzIiwiZGlyZWN0aXZlIiwiaXNTYW1lTmFtZUZpZWxkTm9kZSIsInNlbGVjdGlvbiIsImFkZEZpZWxkV2l0aG91dER1cGxpY2F0aW9uIiwiZmllbGROb2RlIiwiYWRkaXRpb25hbEZpZWxkcyIsImFkZEZpZWxkVG9TZWxlY3Rpb25TZXROb2RlV2l0aG91dER1cGxpY2F0aW9uIiwic2VsZWN0aW9uU2V0Tm9kZSIsImZpZWxkTm9kZXMiLCJsZW5ndGgiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvZ3JhcGhxbEFTVC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlcyB9IGZyb20gJ0BncmFwaHFsLWNvZGVnZW4vcGx1Z2luLWhlbHBlcnMnO1xuaW1wb3J0IHsgRGlyZWN0aXZlTmFtZSB9IGZyb20gJ0BrYXpla3lvL25hdSc7XG5pbXBvcnQge1xuICBEaXJlY3RpdmVOb2RlLFxuICBEb2N1bWVudE5vZGUsXG4gIEZpZWxkTm9kZSxcbiAgRnJhZ21lbnREZWZpbml0aW9uTm9kZSxcbiAgS2luZCxcbiAgT3BlcmF0aW9uRGVmaW5pdGlvbk5vZGUsXG4gIFNlbGVjdGlvbk5vZGUsXG4gIFNlbGVjdGlvblNldE5vZGUsXG59IGZyb20gJ2dyYXBocWwnO1xuaW1wb3J0IHsgbm9uTnVsbGFibGUgfSBmcm9tICcuL25vbk51bGxhYmxlJztcblxuZXhwb3J0IGNvbnN0IHBhZ2VJbmZvRmllbGQ6IEZpZWxkTm9kZSA9IHtcbiAga2luZDogS2luZC5GSUVMRCxcbiAgbmFtZTogeyBraW5kOiBLaW5kLk5BTUUsIHZhbHVlOiAncGFnZUluZm8nIH0sXG4gIHNlbGVjdGlvblNldDoge1xuICAgIGtpbmQ6IEtpbmQuU0VMRUNUSU9OX1NFVCxcbiAgICBzZWxlY3Rpb25zOiBbXG4gICAgICB7IGtpbmQ6IEtpbmQuRklFTEQsIG5hbWU6IHsga2luZDogS2luZC5OQU1FLCB2YWx1ZTogJ2hhc05leHRQYWdlJyB9IH0sXG4gICAgICB7IGtpbmQ6IEtpbmQuRklFTEQsIG5hbWU6IHsga2luZDogS2luZC5OQU1FLCB2YWx1ZTogJ2VuZEN1cnNvcicgfSB9LFxuICAgICAgeyBraW5kOiBLaW5kLkZJRUxELCBuYW1lOiB7IGtpbmQ6IEtpbmQuTkFNRSwgdmFsdWU6ICdoYXNQcmV2aW91c1BhZ2UnIH0gfSxcbiAgICAgIHsga2luZDogS2luZC5GSUVMRCwgbmFtZTogeyBraW5kOiBLaW5kLk5BTUUsIHZhbHVlOiAnc3RhcnRDdXJzb3InIH0gfSxcbiAgICBdLFxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IGN1cnNvckZpZWxkOiBGaWVsZE5vZGUgPSB7IGtpbmQ6IEtpbmQuRklFTEQsIG5hbWU6IHsga2luZDogS2luZC5OQU1FLCB2YWx1ZTogJ2N1cnNvcicgfSB9O1xuXG5leHBvcnQgY29uc3QgaWRGaWVsZDogRmllbGROb2RlID0geyBraW5kOiBLaW5kLkZJRUxELCBuYW1lOiB7IGtpbmQ6IEtpbmQuTkFNRSwgdmFsdWU6ICdpZCcgfSB9O1xuXG5leHBvcnQgY29uc3QgdHlwZW5hbWVGaWVsZDogRmllbGROb2RlID0geyBraW5kOiBLaW5kLkZJRUxELCBuYW1lOiB7IGtpbmQ6IEtpbmQuTkFNRSwgdmFsdWU6ICdfX3R5cGVuYW1lJyB9IH07XG5cbmV4cG9ydCBjb25zdCBub2RlRmllbGQ6IEZpZWxkTm9kZSA9IHtcbiAga2luZDogS2luZC5GSUVMRCxcbiAgbmFtZTogeyBraW5kOiBLaW5kLk5BTUUsIHZhbHVlOiAnbm9kZScgfSxcbiAgc2VsZWN0aW9uU2V0OiB7XG4gICAga2luZDogS2luZC5TRUxFQ1RJT05fU0VULFxuICAgIHNlbGVjdGlvbnM6IFtpZEZpZWxkLCB0eXBlbmFtZUZpZWxkXSxcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBlZGdlc0ZpZWxkOiBGaWVsZE5vZGUgPSB7XG4gIGtpbmQ6IEtpbmQuRklFTEQsXG4gIG5hbWU6IHsga2luZDogS2luZC5OQU1FLCB2YWx1ZTogJ2VkZ2VzJyB9LFxuICBzZWxlY3Rpb25TZXQ6IHtcbiAgICBraW5kOiBLaW5kLlNFTEVDVElPTl9TRVQsXG4gICAgc2VsZWN0aW9uczogW25vZGVGaWVsZCwgY3Vyc29yRmllbGRdLFxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IGNvbm5lY3Rpb25JZEZpZWxkOiBGaWVsZE5vZGUgPSB7XG4gIGtpbmQ6IEtpbmQuRklFTEQsXG4gIG5hbWU6IHsga2luZDogS2luZC5OQU1FLCB2YWx1ZTogJ19jb25uZWN0aW9uSWQnIH0sXG4gIGRpcmVjdGl2ZXM6IFt7IGtpbmQ6IEtpbmQuRElSRUNUSVZFLCBuYW1lOiB7IGtpbmQ6IEtpbmQuTkFNRSwgdmFsdWU6ICdjbGllbnQnIH0gfV0sXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3BlcmF0aW9uRGVmaW5pdGlvbnMoZG9jOiBEb2N1bWVudE5vZGUpOiBPcGVyYXRpb25EZWZpbml0aW9uTm9kZVtdIHtcbiAgcmV0dXJuIGRvYy5kZWZpbml0aW9ucy5maWx0ZXIoKGRlZmluaXRpb24pID0+IGRlZmluaXRpb24ua2luZCA9PT0gJ09wZXJhdGlvbkRlZmluaXRpb24nKSBhcyBPcGVyYXRpb25EZWZpbml0aW9uTm9kZVtdO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0RnJhZ21lbnREZWZpbml0aW9ucyA9IChkb2N1bWVudE5vZGU6IERvY3VtZW50Tm9kZSk6IEZyYWdtZW50RGVmaW5pdGlvbk5vZGVbXSA9PiB7XG4gIHJldHVybiBkb2N1bWVudE5vZGUuZGVmaW5pdGlvbnMuZmlsdGVyKFxuICAgIChkZWZpbml0aW9uKTogZGVmaW5pdGlvbiBpcyBGcmFnbWVudERlZmluaXRpb25Ob2RlID0+IGRlZmluaXRpb24ua2luZCA9PT0gJ0ZyYWdtZW50RGVmaW5pdGlvbicsXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RnJhZ21lbnREZWZpbml0aW9uc0J5RG9jdW1lbnRGaWxlcyA9IChcbiAgZG9jdW1lbnRGaWxlczogVHlwZXMuRG9jdW1lbnRGaWxlW10sXG4pOiBGcmFnbWVudERlZmluaXRpb25Ob2RlW10gPT4ge1xuICByZXR1cm4gZG9jdW1lbnRGaWxlc1xuICAgIC5tYXAoKGZpbGUpID0+IGZpbGUuZG9jdW1lbnQ/LmRlZmluaXRpb25zKVxuICAgIC5maWx0ZXIobm9uTnVsbGFibGUpXG4gICAgLmZsYXQoKVxuICAgIC5maWx0ZXIoKGRlZmluaXRpb24pOiBkZWZpbml0aW9uIGlzIEZyYWdtZW50RGVmaW5pdGlvbk5vZGUgPT4gZGVmaW5pdGlvbi5raW5kID09PSBLaW5kLkZSQUdNRU5UX0RFRklOSVRJT04pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZyYWdtZW50RGVmaW5pdGlvbkJ5TmFtZSA9ICh7XG4gIGZyYWdtZW50RGVmaW5pdGlvbnMsXG4gIGZyYWdtZW50TmFtZSxcbn06IHtcbiAgZnJhZ21lbnREZWZpbml0aW9uczogRnJhZ21lbnREZWZpbml0aW9uTm9kZVtdO1xuICBmcmFnbWVudE5hbWU6IHN0cmluZztcbn0pOiBGcmFnbWVudERlZmluaXRpb25Ob2RlIHwgdW5kZWZpbmVkID0+IHtcbiAgcmV0dXJuIGZyYWdtZW50RGVmaW5pdGlvbnMuZmluZCgoZGVmaW5pdGlvbikgPT4gZGVmaW5pdGlvbi5uYW1lLnZhbHVlID09PSBmcmFnbWVudE5hbWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERpcmVjdGl2ZXMgPSAoe1xuICBub2RlLFxuICBkaXJlY3RpdmVOYW1lcyxcbn06IHtcbiAgbm9kZTogRmllbGROb2RlIHwgU2VsZWN0aW9uTm9kZSB8IG51bGw7XG4gIGRpcmVjdGl2ZU5hbWVzOiBEaXJlY3RpdmVOYW1lW107XG59KTogRGlyZWN0aXZlTm9kZVtdID0+IHtcbiAgY29uc3QgZGlyZWN0aXZlcyA9IG5vZGU/LmRpcmVjdGl2ZXM/LmZpbHRlcigoZGlyZWN0aXZlKSA9PlxuICAgIGRpcmVjdGl2ZU5hbWVzLmZpbmQoKG5hbWUpID0+IG5hbWUgPT09IGRpcmVjdGl2ZS5uYW1lLnZhbHVlKSxcbiAgKTtcbiAgaWYgKCFkaXJlY3RpdmVzKSByZXR1cm4gW107XG4gIHJldHVybiBkaXJlY3RpdmVzO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU2FtZU5hbWVGaWVsZE5vZGUgPSAoeyBzZWxlY3Rpb24sIG5hbWUgfTogeyBzZWxlY3Rpb246IFNlbGVjdGlvbk5vZGU7IG5hbWU6IHN0cmluZyB9KTogYm9vbGVhbiA9PiB7XG4gIHJldHVybiBzZWxlY3Rpb24ua2luZCA9PT0gS2luZC5GSUVMRCAmJiBzZWxlY3Rpb24ubmFtZS52YWx1ZSA9PT0gbmFtZTtcbn07XG5cbi8vIEFkZCB0aGUgZmllbGQsIGJ1dCBkbyBub3RoaW5nIGlmIHRoZSBmaWVsZCBhbHJlYWR5IGV4aXN0c1xuZXhwb3J0IGNvbnN0IGFkZEZpZWxkV2l0aG91dER1cGxpY2F0aW9uID0gKHtcbiAgZmllbGROb2RlLFxuICBhZGRpdGlvbmFsRmllbGRzLFxufToge1xuICBmaWVsZE5vZGU6IEZpZWxkTm9kZTtcbiAgYWRkaXRpb25hbEZpZWxkczogRmllbGROb2RlW107XG59KTogRmllbGROb2RlID0+IHtcbiAgaWYgKCFmaWVsZE5vZGUuc2VsZWN0aW9uU2V0KSByZXR1cm4gZmllbGROb2RlO1xuICBjb25zdCBzZWxlY3Rpb25TZXQgPSBhZGRGaWVsZFRvU2VsZWN0aW9uU2V0Tm9kZVdpdGhvdXREdXBsaWNhdGlvbih7XG4gICAgc2VsZWN0aW9uU2V0Tm9kZTogZmllbGROb2RlLnNlbGVjdGlvblNldCxcbiAgICBhZGRpdGlvbmFsRmllbGRzLFxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIC4uLmZpZWxkTm9kZSxcbiAgICBzZWxlY3Rpb25TZXQsXG4gIH07XG59O1xuXG4vLyBBZGQgdGhlIGZpZWxkLCBidXQgZG8gbm90aGluZyBpZiB0aGUgZmllbGQgYWxyZWFkeSBleGlzdHNcbmV4cG9ydCBjb25zdCBhZGRGaWVsZFRvU2VsZWN0aW9uU2V0Tm9kZVdpdGhvdXREdXBsaWNhdGlvbiA9ICh7XG4gIHNlbGVjdGlvblNldE5vZGUsXG4gIGFkZGl0aW9uYWxGaWVsZHMsXG59OiB7XG4gIHNlbGVjdGlvblNldE5vZGU6IFNlbGVjdGlvblNldE5vZGU7XG4gIGFkZGl0aW9uYWxGaWVsZHM6IEZpZWxkTm9kZVtdO1xufSk6IFNlbGVjdGlvblNldE5vZGUgPT4ge1xuICBjb25zdCBzZWxlY3Rpb25zID0gc2VsZWN0aW9uU2V0Tm9kZS5zZWxlY3Rpb25zO1xuXG4gIGNvbnN0IGZpZWxkTm9kZXMgPSBhZGRpdGlvbmFsRmllbGRzLmZpbHRlcihcbiAgICAoZmllbGROb2RlKSA9PiAhc2VsZWN0aW9ucy5maW5kKChzZWxlY3Rpb24pID0+IGlzU2FtZU5hbWVGaWVsZE5vZGUoeyBzZWxlY3Rpb24sIG5hbWU6IGZpZWxkTm9kZS5uYW1lLnZhbHVlIH0pKSxcbiAgKTtcbiAgaWYgKGZpZWxkTm9kZXMubGVuZ3RoID09PSAwKSByZXR1cm4gc2VsZWN0aW9uU2V0Tm9kZTtcblxuICByZXR1cm4ge1xuICAgIC4uLnNlbGVjdGlvblNldE5vZGUsXG4gICAgc2VsZWN0aW9uczogWy4uLnNlbGVjdGlvbnMsIC4uLmZpZWxkTm9kZXNdLFxuICB9O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFFQTtBQVVBO0FBQTRDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVyQyxJQUFNQSxhQUF3QixHQUFHO0VBQ3RDQyxJQUFJLEVBQUVDLGFBQUksQ0FBQ0MsS0FBSztFQUNoQkMsSUFBSSxFQUFFO0lBQUVILElBQUksRUFBRUMsYUFBSSxDQUFDRyxJQUFJO0lBQUVDLEtBQUssRUFBRTtFQUFXLENBQUM7RUFDNUNDLFlBQVksRUFBRTtJQUNaTixJQUFJLEVBQUVDLGFBQUksQ0FBQ00sYUFBYTtJQUN4QkMsVUFBVSxFQUFFLENBQ1Y7TUFBRVIsSUFBSSxFQUFFQyxhQUFJLENBQUNDLEtBQUs7TUFBRUMsSUFBSSxFQUFFO1FBQUVILElBQUksRUFBRUMsYUFBSSxDQUFDRyxJQUFJO1FBQUVDLEtBQUssRUFBRTtNQUFjO0lBQUUsQ0FBQyxFQUNyRTtNQUFFTCxJQUFJLEVBQUVDLGFBQUksQ0FBQ0MsS0FBSztNQUFFQyxJQUFJLEVBQUU7UUFBRUgsSUFBSSxFQUFFQyxhQUFJLENBQUNHLElBQUk7UUFBRUMsS0FBSyxFQUFFO01BQVk7SUFBRSxDQUFDLEVBQ25FO01BQUVMLElBQUksRUFBRUMsYUFBSSxDQUFDQyxLQUFLO01BQUVDLElBQUksRUFBRTtRQUFFSCxJQUFJLEVBQUVDLGFBQUksQ0FBQ0csSUFBSTtRQUFFQyxLQUFLLEVBQUU7TUFBa0I7SUFBRSxDQUFDLEVBQ3pFO01BQUVMLElBQUksRUFBRUMsYUFBSSxDQUFDQyxLQUFLO01BQUVDLElBQUksRUFBRTtRQUFFSCxJQUFJLEVBQUVDLGFBQUksQ0FBQ0csSUFBSTtRQUFFQyxLQUFLLEVBQUU7TUFBYztJQUFFLENBQUM7RUFFekU7QUFDRixDQUFDO0FBQUM7QUFFSyxJQUFNSSxXQUFz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