@merchi/product-form 1.19.29 → 1.19.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -18,6 +18,7 @@ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length)
18
18
  import { BLANK_TEMPLATE_ID, DEFAULT_ARTBOARD, FieldType } from './types';
19
19
  import { DEFAULT_DRAFT_FONT, cssFontFamily } from './draftFonts';
20
20
  import { productHasGroups } from './products';
21
+ import { pantoneByCode } from './pantoneColours';
21
22
  export function productHasDraftTemplates(product) {
22
23
  return Array.isArray(product === null || product === void 0 ? void 0 : product.draftTemplates) && product.draftTemplates.length > 0;
23
24
  }
@@ -161,6 +162,7 @@ export function canvasKindForFieldType(fieldType) {
161
162
  case FieldType.COLOUR_PICKER:
162
163
  case FieldType.COLOUR_SELECT:
163
164
  case FieldType.COLOUR_EXTRACT:
165
+ case FieldType.PANTONE_COLOUR_SELECT:
164
166
  return 'rect';
165
167
  default:
166
168
  return null;
@@ -221,6 +223,13 @@ export function variationCanvasContent(variation) {
221
223
  fill: normaliseCssColour(variation === null || variation === void 0 ? void 0 : variation.value) || '#000000'
222
224
  };
223
225
  }
226
+ if (type === FieldType.PANTONE_COLOUR_SELECT && field !== null && field !== void 0 && field.allowAllPantones) {
227
+ var _pantoneByCode;
228
+ return {
229
+ kind: kind,
230
+ fill: ((_pantoneByCode = pantoneByCode(variation === null || variation === void 0 ? void 0 : variation.value)) === null || _pantoneByCode === void 0 ? void 0 : _pantoneByCode.hex) || '#cccccc'
231
+ };
232
+ }
224
233
  var ids = parseSelectedOptionIds(variation.value);
225
234
  var option = ids.length ? optionById(variation, ids[0]) : null;
226
235
  var selected = ((variation === null || variation === void 0 ? void 0 : variation.selectedOptions) || [])[0];
@@ -624,4 +633,4 @@ export function printAreaGuides(template) {
624
633
  return bboxToPixels(bbox, width, height);
625
634
  });
626
635
  }
627
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCTEFOS19URU1QTEFURV9JRCIsIkRFRkFVTFRfQVJUQk9BUkQiLCJGaWVsZFR5cGUiLCJERUZBVUxUX0RSQUZUX0ZPTlQiLCJjc3NGb250RmFtaWx5IiwicHJvZHVjdEhhc0dyb3VwcyIsInByb2R1Y3RIYXNEcmFmdFRlbXBsYXRlcyIsInByb2R1Y3QiLCJBcnJheSIsImlzQXJyYXkiLCJkcmFmdFRlbXBsYXRlcyIsImxlbmd0aCIsInByb2R1Y3RBbGxvd3NDbGllbnREZXNpZ24iLCJCb29sZWFuIiwibmVlZHNEcmFmdGluZyIsImFsbG93Q2xpZW50RHJhZnRDb250cmlidXRpb24iLCJwcm9kdWN0SGFzVmFyaWF0aW9uR3JvdXBzIiwiZGVzaWduR3JvdXBDb3VudCIsImZvcm1WYWx1ZXMiLCJncm91cHMiLCJ2YXJpYXRpb25zR3JvdXBzIiwicGFyc2VTZWxlY3RlZE9wdGlvbklkcyIsInZhbHVlIiwidW5kZWZpbmVkIiwiU3RyaW5nIiwic3BsaXQiLCJtYXAiLCJzIiwicGFyc2VJbnQiLCJ0cmltIiwiZmlsdGVyIiwibiIsImlzTmFOIiwic2VsZWN0ZWRPcHRpb25JZHNGcm9tVmFyaWF0aW9ucyIsInZhcmlhdGlvbnMiLCJpZHMiLCJTZXQiLCJfaXRlcmF0b3IiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIl9zdGVwIiwiZG9uZSIsInZhcmlhdGlvbiIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJpZCIsImFkZCIsImVyciIsImUiLCJmIiwiaXNUZW1wbGF0ZVZpc2libGUiLCJ0ZW1wbGF0ZSIsInNlbGVjdGVkT3B0aW9uSWRzIiwicmVxdWlyZWQiLCJzZWxlY3RlZEJ5VmFyaWF0aW9uRmllbGRPcHRpb25zIiwiZXZlcnkiLCJvcHQiLCJoYXMiLCJ2aXNpYmxlVGVtcGxhdGVzRm9yR3JvdXAiLCJpbmRlcGVuZGVudFZhcmlhdGlvbnMiLCJncm91cFZhcmlhdGlvbnMiLCJzZWxlY3RlZCIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheSIsImJsYW5rVGVtcGxhdGUiLCJfcHJvZHVjdCRkcmFmdFRlbXBsYXQiLCJfcHJvZHVjdCRmZWF0dXJlSW1hZ2UiLCJfcHJvZHVjdCRkcmFmdFRlbXBsYXQyIiwiX3Byb2R1Y3QkZmVhdHVyZUltYWdlMiIsImZyb21Qcm9kdWN0IiwiTnVtYmVyIiwid2lkdGgiLCJmZWF0dXJlSW1hZ2UiLCJoZWlnaHQiLCJuYW1lIiwiZmlsZSIsImVkaXRlZEJ5VmFyaWF0aW9uRmllbGRzIiwidGVtcGxhdGVzRm9yR3JvdXAiLCJ2aXNpYmxlIiwidGVtcGxhdGVIYXNGaWxlIiwiZG93bmxvYWRVcmwiLCJjYWNoZWREb3dubG9hZFVybCIsInZpZXdVcmwiLCJjYWNoZWRWaWV3VXJsIiwidW5pcXVlRmlsZVRlbXBsYXRlcyIsInRlbXBsYXRlcyIsInNlZW4iLCJyZXN1bHQiLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwia2V5IiwicHVzaCIsImRvd25sb2FkYWJsZURyYWZ0VGVtcGxhdGVzIiwiaW5kZXBlbmRlbnQiLCJtYXRjaGVkIiwiX2l0ZXJhdG9yNCIsIl9zdGVwNCIsImdyb3VwIiwiYXBwbHkiLCJjYW52YXNLaW5kRm9yRmllbGRUeXBlIiwiZmllbGRUeXBlIiwiVEVYVF9JTlBVVCIsIlRFWFRfQVJFQSIsIk5VTUJFUl9JTlBVVCIsIlNFTEVDVCIsIlJBRElPIiwiQ0hFQ0tCT1giLCJGSUxFX1VQTE9BRCIsIklNQUdFX1NFTEVDVCIsIkNPTE9VUl9QSUNLRVIiLCJDT0xPVVJfU0VMRUNUIiwiQ09MT1VSX0VYVFJBQ1QiLCJvcHRpb25CeUlkIiwiX3ZhcmlhdGlvbiR2YXJpYXRpb25GIiwiZnJvbVNlbGVjdGFibGUiLCJzZWxlY3RhYmxlT3B0aW9ucyIsImZpbmQiLCJvcHRpb24iLCJvcHRpb25JZCIsInZhcmlhdGlvbkZpZWxkIiwib3B0aW9ucyIsInZhcmlhdGlvbkNhbnZhc0NvbnRlbnQiLCJmaWVsZCIsImtpbmQiLCJ0eXBlIiwibmFtZXMiLCJfb3B0aW9uQnlJZCIsInRleHQiLCJqb2luIiwidmFyaWF0aW9uRmlsZXMiLCJzcmMiLCJsaW5rZWRGaWxlIiwiZmlsbCIsIm5vcm1hbGlzZUNzc0NvbG91ciIsInNlbGVjdGVkT3B0aW9ucyIsImNvbG91ciIsIkhFWF9DT0xPVVIiLCJDU1NfRlVOQ1RJT05fQ09MT1VSIiwiX2xlbiIsImFyZ3VtZW50cyIsImNhbmRpZGF0ZXMiLCJfa2V5IiwiX2kiLCJfY2FuZGlkYXRlcyIsInJhdyIsInRlc3QiLCJsaW5rZWRWYXJpYXRpb25zRm9yVGVtcGxhdGUiLCJsaW5rZWRJZHMiLCJzaXplIiwiX3ZhcmlhdGlvbiR2YXJpYXRpb25GMiIsInZhcmlhdGlvbnNGb3JHcm91cCIsImdyb3VwSW5kZXgiLCJfZm9ybVZhbHVlcyR2YXJpYXRpb24iLCJpc1ZhbGlkQmJveCIsImJib3giLCJfYmJveCRtYXAiLCJfYmJveCRtYXAyIiwiX3NsaWNlZFRvQXJyYXkiLCJ4IiwieSIsInciLCJoIiwicmVnaW9uc0ZvclJvbGUiLCJjdXN0b21pc2F0aW9uTWFwIiwicm9sZSIsInJlZ2lvbnMiLCJyZWdpb24iLCJiYm94VG9QaXhlbHMiLCJfYmJveCIsImZpZWxkQmluZGluZ3NGcm9tIiwiX3RlbXBsYXRlJGN1c3RvbWlzYXRpIiwiZmllbGRCaW5kaW5ncyIsIml0ZW0iLCJmaWVsZElkIiwiYmluZGluZ0ZvckZpZWxkIiwiYmluZGluZ3MiLCJmaWVsZE5hbWUiLCJ0b0xvd2VyQ2FzZSIsImlzQ29sb3VyS2luZCIsImluZmVyQXJ0d29ya1JvbGUiLCJsaW5rZWRGaWVsZHMiLCJoYXNUZXh0Iiwic29tZSIsInJlc29sdmVBcnR3b3JrUm9sZSIsImluZmVycmVkIiwiYmluZGluZyIsImluZmVyVGV4dFRhcmdldEZpZWxkSWQiLCJ0YXJnZXRGaWVsZElkIiwidGV4dEZpZWxkIiwiZml0SW5zaWRlIiwiYm94IiwiY29udGVudFdpZHRoIiwiY29udGVudEhlaWdodCIsImxvY2tBc3BlY3RSYXRpbyIsIl9vYmplY3RTcHJlYWQiLCJzY2FsZSIsIk1hdGgiLCJtaW4iLCJzaG91bGRMb2NrSW1hZ2VBc3BlY3QiLCJhc3BlY3RSYXRpb0xvY2siLCJpc0JhY2tncm91bmRGaWxsIiwib2JqIiwiaXNGdWxsQXJ0Ym9hcmRGaWxsIiwiYXJ0V2lkdGgiLCJhcnRIZWlnaHQiLCJtZWFzdXJlRHJhZnRUZXh0IiwiZm9udFNpemUiLCJmb250RmFtaWx5IiwibGluZXMiLCJtYXgiLCJkb2N1bWVudCIsImNhbnZhcyIsImNyZWF0ZUVsZW1lbnQiLCJjdHgiLCJnZXRDb250ZXh0IiwiZm9udCIsImxpbmUiLCJtZWFzdXJlVGV4dCIsImNlaWwiLCJmaXRUZXh0Qm94IiwibWVhc3VyZWQiLCJwcmV2VyIsInByZXZIIiwicGxhY2VtZW50Qm94ZXMiLCJib2R5IiwicHJpbnQiLCJwbGFjZWhvbGRlcnMiLCJkZWZhdWx0UGxhY2VtZW50IiwiaW5kZXgiLCJwYWQiLCJjcmVhdGVPYmplY3RJZCIsIkRhdGUiLCJub3ciLCJyYW5kb20iLCJ0b1N0cmluZyIsInNsaWNlIiwic2VlZE9yU3luY0NhbnZhcyIsImV4aXN0aW5nIiwib2JqZWN0cyIsImRldGFjaGVkIiwiZGV0YWNoZWRGaWVsZElkcyIsImxpbmtlZCIsInVzZWRSZWdpb25zIiwiX2l0ZXJhdG9yNSIsIl9zdGVwNSIsIl9sb29wIiwiZmluZEluZGV4IiwibWVyY2hpRmllbGRJZCIsInNwbGljZSIsImFwcGx5Q29sb3VyVG9UZXh0IiwiY29sb3VyRmllbGRJZCIsInRleHRPYmoiLCJwbGFjZU9iamVjdCIsImNvbnRlbnQiLCJib3hlcyIsInJlZ2lvbkluZGV4IiwicGxhY2UiLCJuZXh0IiwiYXJ0d29ya1JvbGUiLCJsb2NrZWQiLCJyb3RhdGlvbiIsInNjYWxlWCIsInNjYWxlWSIsInJvdW5kIiwiT2JqZWN0IiwiYXNzaWduIiwidW5zaGlmdCIsIl9pdGVyYXRvcjYiLCJfc3RlcDYiLCJfbG9vcDIiLCJmb3VuZCIsIl9yZXQiLCJfaXRlcmF0b3I3IiwiX3N0ZXA3IiwidGFyZ2V0SWQiLCJmcm9tIiwiZGV0YWNoRmllbGQiLCJzdGF0ZSIsIm9iamVjdElkIiwidGFyZ2V0IiwiaW5jbHVkZXMiLCJwcmludEFyZWFHdWlkZXMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvZHJhZnRUZW1wbGF0ZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQkxBTktfVEVNUExBVEVfSUQsXG4gIERFRkFVTFRfQVJUQk9BUkQsXG4gIERyYWZ0QXJ0d29ya1JvbGUsXG4gIERyYWZ0Q2FudmFzT2JqZWN0LFxuICBEcmFmdENhbnZhc09iamVjdFR5cGUsXG4gIERyYWZ0Q2FudmFzU3RhdGUsXG4gIERyYWZ0RmllbGRCaW5kaW5nLFxuICBGaWVsZFR5cGUsXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgREVGQVVMVF9EUkFGVF9GT05ULCBjc3NGb250RmFtaWx5IH0gZnJvbSAnLi9kcmFmdEZvbnRzJztcbmltcG9ydCB7IHByb2R1Y3RIYXNHcm91cHMgfSBmcm9tICcuL3Byb2R1Y3RzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHByb2R1Y3RIYXNEcmFmdFRlbXBsYXRlcyhwcm9kdWN0OiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkocHJvZHVjdD8uZHJhZnRUZW1wbGF0ZXMpICYmIHByb2R1Y3QuZHJhZnRUZW1wbGF0ZXMubGVuZ3RoID4gMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2R1Y3RBbGxvd3NDbGllbnREZXNpZ24ocHJvZHVjdDogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiBCb29sZWFuKFxuICAgIHByb2R1Y3Q/Lm5lZWRzRHJhZnRpbmdcbiAgICAmJiBwcm9kdWN0Py5hbGxvd0NsaWVudERyYWZ0Q29udHJpYnV0aW9uXG4gICAgJiYgcHJvZHVjdEhhc0RyYWZ0VGVtcGxhdGVzKHByb2R1Y3QpLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvZHVjdEhhc1ZhcmlhdGlvbkdyb3Vwcyhwcm9kdWN0OiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIHByb2R1Y3RIYXNHcm91cHMocHJvZHVjdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXNpZ25Hcm91cENvdW50KHByb2R1Y3Q6IGFueSwgZm9ybVZhbHVlczogYW55KTogbnVtYmVyIHtcbiAgaWYgKCFwcm9kdWN0SGFzVmFyaWF0aW9uR3JvdXBzKHByb2R1Y3QpKSByZXR1cm4gMTtcbiAgY29uc3QgZ3JvdXBzID0gZm9ybVZhbHVlcz8udmFyaWF0aW9uc0dyb3VwcztcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZ3JvdXBzKSAmJiBncm91cHMubGVuZ3RoID4gMCA/IGdyb3Vwcy5sZW5ndGggOiAxO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTZWxlY3RlZE9wdGlvbklkcyh2YWx1ZTogYW55KTogbnVtYmVyW10ge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHJldHVybiBbXTtcbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSlcbiAgICAuc3BsaXQoJywnKVxuICAgIC5tYXAoKHMpID0+IHBhcnNlSW50KHMudHJpbSgpLCAxMCkpXG4gICAgLmZpbHRlcigobikgPT4gIWlzTmFOKG4pKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlbGVjdGVkT3B0aW9uSWRzRnJvbVZhcmlhdGlvbnModmFyaWF0aW9uczogYW55W10pOiBTZXQ8bnVtYmVyPiB7XG4gIGNvbnN0IGlkcyA9IG5ldyBTZXQ8bnVtYmVyPigpO1xuICBmb3IgKGNvbnN0IHZhcmlhdGlvbiBvZiB2YXJpYXRpb25zIHx8IFtdKSB7XG4gICAgZm9yIChjb25zdCBpZCBvZiBwYXJzZVNlbGVjdGVkT3B0aW9uSWRzKHZhcmlhdGlvbj8udmFsdWUpKSB7XG4gICAgICBpZHMuYWRkKGlkKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGlkcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVGVtcGxhdGVWaXNpYmxlKFxuICB0ZW1wbGF0ZTogYW55LFxuICBzZWxlY3RlZE9wdGlvbklkczogU2V0PG51bWJlcj4sXG4pOiBib29sZWFuIHtcbiAgY29uc3QgcmVxdWlyZWQgPSB0ZW1wbGF0ZT8uc2VsZWN0ZWRCeVZhcmlhdGlvbkZpZWxkT3B0aW9ucztcbiAgaWYgKCFBcnJheS5pc0FycmF5KHJlcXVpcmVkKSB8fCByZXF1aXJlZC5sZW5ndGggPT09IDApIHJldHVybiB0cnVlO1xuICByZXR1cm4gcmVxdWlyZWQuZXZlcnkoKG9wdDogYW55KSA9PiBvcHQ/LmlkICYmIHNlbGVjdGVkT3B0aW9uSWRzLmhhcyhvcHQuaWQpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZpc2libGVUZW1wbGF0ZXNGb3JHcm91cChcbiAgcHJvZHVjdDogYW55LFxuICBpbmRlcGVuZGVudFZhcmlhdGlvbnM6IGFueVtdLFxuICBncm91cFZhcmlhdGlvbnM6IGFueVtdLFxuKTogYW55W10ge1xuICBjb25zdCBzZWxlY3RlZCA9IHNlbGVjdGVkT3B0aW9uSWRzRnJvbVZhcmlhdGlvbnMoW1xuICAgIC4uLihpbmRlcGVuZGVudFZhcmlhdGlvbnMgfHwgW10pLFxuICAgIC4uLihncm91cFZhcmlhdGlvbnMgfHwgW10pLFxuICBdKTtcbiAgcmV0dXJuIChwcm9kdWN0Py5kcmFmdFRlbXBsYXRlcyB8fCBbXSkuZmlsdGVyKCh0ZW1wbGF0ZTogYW55KSA9PlxuICAgIGlzVGVtcGxhdGVWaXNpYmxlKHRlbXBsYXRlLCBzZWxlY3RlZClcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJsYW5rVGVtcGxhdGUocHJvZHVjdD86IGFueSkge1xuICBjb25zdCBmcm9tUHJvZHVjdCA9IE51bWJlcihwcm9kdWN0Py5kcmFmdFRlbXBsYXRlcz8uWzBdPy53aWR0aClcbiAgICB8fCBOdW1iZXIocHJvZHVjdD8uZmVhdHVyZUltYWdlPy53aWR0aClcbiAgICB8fCBERUZBVUxUX0FSVEJPQVJELndpZHRoO1xuICBjb25zdCBoZWlnaHQgPSBOdW1iZXIocHJvZHVjdD8uZHJhZnRUZW1wbGF0ZXM/LlswXT8uaGVpZ2h0KVxuICAgIHx8IE51bWJlcihwcm9kdWN0Py5mZWF0dXJlSW1hZ2U/LmhlaWdodClcbiAgICB8fCBERUZBVUxUX0FSVEJPQVJELmhlaWdodDtcbiAgcmV0dXJuIHtcbiAgICBpZDogQkxBTktfVEVNUExBVEVfSUQsXG4gICAgbmFtZTogJ0FydHdvcmsnLFxuICAgIHdpZHRoOiBmcm9tUHJvZHVjdCxcbiAgICBoZWlnaHQsXG4gICAgZmlsZTogbnVsbCxcbiAgICBlZGl0ZWRCeVZhcmlhdGlvbkZpZWxkczogW10sXG4gICAgc2VsZWN0ZWRCeVZhcmlhdGlvbkZpZWxkT3B0aW9uczogW10sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZW1wbGF0ZXNGb3JHcm91cChcbiAgcHJvZHVjdDogYW55LFxuICBpbmRlcGVuZGVudFZhcmlhdGlvbnM6IGFueVtdLFxuICBncm91cFZhcmlhdGlvbnM6IGFueVtdLFxuKTogYW55W10ge1xuICBjb25zdCB2aXNpYmxlID0gdmlzaWJsZVRlbXBsYXRlc0Zvckdyb3VwKFxuICAgIHByb2R1Y3QsXG4gICAgaW5kZXBlbmRlbnRWYXJpYXRpb25zLFxuICAgIGdyb3VwVmFyaWF0aW9ucyxcbiAgKTtcbiAgcmV0dXJuIHZpc2libGUubGVuZ3RoID8gdmlzaWJsZSA6IFtibGFua1RlbXBsYXRlKHByb2R1Y3QpXTtcbn1cblxuZnVuY3Rpb24gdGVtcGxhdGVIYXNGaWxlKHRlbXBsYXRlOiBhbnkpOiBib29sZWFuIHtcbiAgY29uc3QgZmlsZSA9IHRlbXBsYXRlPy5maWxlO1xuICBpZiAoIWZpbGUpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIEJvb2xlYW4oXG4gICAgZmlsZS5pZFxuICAgIHx8IGZpbGUuZG93bmxvYWRVcmxcbiAgICB8fCBmaWxlLmNhY2hlZERvd25sb2FkVXJsXG4gICAgfHwgZmlsZS52aWV3VXJsXG4gICAgfHwgZmlsZS5jYWNoZWRWaWV3VXJsLFxuICApO1xufVxuXG5mdW5jdGlvbiB1bmlxdWVGaWxlVGVtcGxhdGVzKHRlbXBsYXRlczogYW55W10pOiBhbnlbXSB7XG4gIGNvbnN0IHNlZW4gPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgY29uc3QgcmVzdWx0OiBhbnlbXSA9IFtdO1xuICBmb3IgKGNvbnN0IHRlbXBsYXRlIG9mIHRlbXBsYXRlcykge1xuICAgIGlmICghdGVtcGxhdGVIYXNGaWxlKHRlbXBsYXRlKSkgY29udGludWU7XG4gICAgY29uc3QgZmlsZSA9IHRlbXBsYXRlLmZpbGUgfHwge307XG4gICAgY29uc3Qga2V5ID0gdGVtcGxhdGU/LmlkICE9IG51bGxcbiAgICAgID8gYGlkOiR7dGVtcGxhdGUuaWR9YFxuICAgICAgOiBgZmlsZToke2ZpbGUuaWQgfHwgZmlsZS5kb3dubG9hZFVybCB8fCBmaWxlLnZpZXdVcmx9YDtcbiAgICBpZiAoc2Vlbi5oYXMoa2V5KSkgY29udGludWU7XG4gICAgc2Vlbi5hZGQoa2V5KTtcbiAgICByZXN1bHQucHVzaCh0ZW1wbGF0ZSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqIEJsYW5rIHRlbXBsYXRlcyB0aGUgY3VzdG9tZXIgY2FuIGRvd25sb2FkIGZvciB0aGUgb3B0aW9ucyBjdXJyZW50bHkgc2VsZWN0ZWQuICovXG5leHBvcnQgZnVuY3Rpb24gZG93bmxvYWRhYmxlRHJhZnRUZW1wbGF0ZXMocHJvZHVjdDogYW55LCBmb3JtVmFsdWVzOiBhbnkpOiBhbnlbXSB7XG4gIGNvbnN0IGluZGVwZW5kZW50ID0gZm9ybVZhbHVlcz8udmFyaWF0aW9ucyB8fCBbXTtcbiAgY29uc3QgZ3JvdXBzID0gcHJvZHVjdEhhc1ZhcmlhdGlvbkdyb3Vwcyhwcm9kdWN0KVxuICAgICYmIEFycmF5LmlzQXJyYXkoZm9ybVZhbHVlcz8udmFyaWF0aW9uc0dyb3VwcylcbiAgICAmJiBmb3JtVmFsdWVzLnZhcmlhdGlvbnNHcm91cHMubGVuZ3RoXG4gICAgPyBmb3JtVmFsdWVzLnZhcmlhdGlvbnNHcm91cHNcbiAgICA6IFt7fV07XG4gIGNvbnN0IG1hdGNoZWQ6IGFueVtdID0gW107XG4gIGZvciAoY29uc3QgZ3JvdXAgb2YgZ3JvdXBzKSB7XG4gICAgbWF0Y2hlZC5wdXNoKC4uLnZpc2libGVUZW1wbGF0ZXNGb3JHcm91cChcbiAgICAgIHByb2R1Y3QsXG4gICAgICBpbmRlcGVuZGVudCxcbiAgICAgIGdyb3VwPy52YXJpYXRpb25zIHx8IFtdLFxuICAgICkpO1xuICB9XG4gIGlmIChtYXRjaGVkLmxlbmd0aCkgcmV0dXJuIHVuaXF1ZUZpbGVUZW1wbGF0ZXMobWF0Y2hlZCk7XG4gIHJldHVybiB1bmlxdWVGaWxlVGVtcGxhdGVzKHByb2R1Y3Q/LmRyYWZ0VGVtcGxhdGVzIHx8IFtdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbnZhc0tpbmRGb3JGaWVsZFR5cGUoXG4gIGZpZWxkVHlwZTogYW55LFxuKTogRHJhZnRDYW52YXNPYmplY3RUeXBlIHwgbnVsbCB7XG4gIHN3aXRjaCAocGFyc2VJbnQoU3RyaW5nKGZpZWxkVHlwZSksIDEwKSkge1xuICAgIGNhc2UgRmllbGRUeXBlLlRFWFRfSU5QVVQ6XG4gICAgY2FzZSBGaWVsZFR5cGUuVEVYVF9BUkVBOlxuICAgIGNhc2UgRmllbGRUeXBlLk5VTUJFUl9JTlBVVDpcbiAgICBjYXNlIEZpZWxkVHlwZS5TRUxFQ1Q6XG4gICAgY2FzZSBGaWVsZFR5cGUuUkFESU86XG4gICAgY2FzZSBGaWVsZFR5cGUuQ0hFQ0tCT1g6XG4gICAgICByZXR1cm4gJ3RleHQnO1xuICAgIGNhc2UgRmllbGRUeXBlLkZJTEVfVVBMT0FEOlxuICAgIGNhc2UgRmllbGRUeXBlLklNQUdFX1NFTEVDVDpcbiAgICAgIHJldHVybiAnaW1hZ2UnO1xuICAgIGNhc2UgRmllbGRUeXBlLkNPTE9VUl9QSUNLRVI6XG4gICAgY2FzZSBGaWVsZFR5cGUuQ09MT1VSX1NFTEVDVDpcbiAgICBjYXNlIEZpZWxkVHlwZS5DT0xPVVJfRVhUUkFDVDpcbiAgICAgIHJldHVybiAncmVjdCc7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmZ1bmN0aW9uIG9wdGlvbkJ5SWQodmFyaWF0aW9uOiBhbnksIGlkOiBudW1iZXIpOiBhbnkgfCB1bmRlZmluZWQge1xuICBjb25zdCBmcm9tU2VsZWN0YWJsZSA9ICh2YXJpYXRpb24/LnNlbGVjdGFibGVPcHRpb25zIHx8IFtdKS5maW5kKFxuICAgIChvcHRpb246IGFueSkgPT4gb3B0aW9uLm9wdGlvbklkID09PSBpZCB8fCBvcHRpb24uaWQgPT09IGlkXG4gICk7XG4gIGlmIChmcm9tU2VsZWN0YWJsZSkgcmV0dXJuIGZyb21TZWxlY3RhYmxlO1xuICByZXR1cm4gKHZhcmlhdGlvbj8udmFyaWF0aW9uRmllbGQ/Lm9wdGlvbnMgfHwgW10pLmZpbmQoXG4gICAgKG9wdGlvbjogYW55KSA9PiBvcHRpb24uaWQgPT09IGlkIHx8IG9wdGlvbi5vcHRpb25JZCA9PT0gaWRcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhdGlvbkNhbnZhc0NvbnRlbnQodmFyaWF0aW9uOiBhbnkpOiB7XG4gIGtpbmQ6IERyYWZ0Q2FudmFzT2JqZWN0VHlwZSB8IG51bGw7XG4gIHRleHQ/OiBzdHJpbmc7XG4gIHNyYz86IHN0cmluZztcbiAgZmlsbD86IHN0cmluZztcbn0ge1xuICBjb25zdCBmaWVsZCA9IHZhcmlhdGlvbj8udmFyaWF0aW9uRmllbGQ7XG4gIGNvbnN0IGtpbmQgPSBjYW52YXNLaW5kRm9yRmllbGRUeXBlKGZpZWxkPy5maWVsZFR5cGUpO1xuICBpZiAoIWtpbmQpIHJldHVybiB7IGtpbmQ6IG51bGwgfTtcblxuICBjb25zdCB0eXBlID0gcGFyc2VJbnQoU3RyaW5nKGZpZWxkLmZpZWxkVHlwZSksIDEwKTtcblxuICBpZiAoa2luZCA9PT0gJ3RleHQnKSB7XG4gICAgaWYgKFxuICAgICAgdHlwZSA9PT0gRmllbGRUeXBlLlNFTEVDVFxuICAgICAgfHwgdHlwZSA9PT0gRmllbGRUeXBlLlJBRElPXG4gICAgICB8fCB0eXBlID09PSBGaWVsZFR5cGUuQ0hFQ0tCT1hcbiAgICApIHtcbiAgICAgIGNvbnN0IG5hbWVzID0gcGFyc2VTZWxlY3RlZE9wdGlvbklkcyh2YXJpYXRpb24udmFsdWUpXG4gICAgICAgIC5tYXAoKGlkKSA9PiBvcHRpb25CeUlkKHZhcmlhdGlvbiwgaWQpPy52YWx1ZSlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKTtcbiAgICAgIHJldHVybiB7IGtpbmQsIHRleHQ6IG5hbWVzLmpvaW4oJywgJykgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGtpbmQsXG4gICAgICB0ZXh0OiB2YXJpYXRpb24/LnZhbHVlICE9IG51bGwgJiYgdmFyaWF0aW9uLnZhbHVlICE9PSAnJ1xuICAgICAgICA/IFN0cmluZyh2YXJpYXRpb24udmFsdWUpXG4gICAgICAgIDogJycsXG4gICAgfTtcbiAgfVxuXG4gIGlmIChraW5kID09PSAnaW1hZ2UnKSB7XG4gICAgaWYgKHR5cGUgPT09IEZpZWxkVHlwZS5GSUxFX1VQTE9BRCkge1xuICAgICAgY29uc3QgZmlsZSA9ICh2YXJpYXRpb24/LnZhcmlhdGlvbkZpbGVzIHx8IFtdKVswXTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGtpbmQsXG4gICAgICAgIHNyYzogZmlsZT8udmlld1VybCB8fCBmaWxlPy5jYWNoZWRWaWV3VXJsIHx8ICcnLFxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgaWRzID0gcGFyc2VTZWxlY3RlZE9wdGlvbklkcyh2YXJpYXRpb24udmFsdWUpO1xuICAgIGNvbnN0IG9wdGlvbiA9IGlkcy5sZW5ndGggPyBvcHRpb25CeUlkKHZhcmlhdGlvbiwgaWRzWzBdKSA6IG51bGw7XG4gICAgY29uc3QgZmlsZSA9IG9wdGlvbj8ubGlua2VkRmlsZTtcbiAgICByZXR1cm4geyBraW5kLCBzcmM6IGZpbGU/LnZpZXdVcmwgfHwgZmlsZT8uY2FjaGVkVmlld1VybCB8fCAnJyB9O1xuICB9XG5cbiAgaWYgKHR5cGUgPT09IEZpZWxkVHlwZS5DT0xPVVJfUElDS0VSKSB7XG4gICAgcmV0dXJuIHsga2luZCwgZmlsbDogbm9ybWFsaXNlQ3NzQ29sb3VyKHZhcmlhdGlvbj8udmFsdWUpIHx8ICcjMDAwMDAwJyB9O1xuICB9XG4gIGNvbnN0IGlkcyA9IHBhcnNlU2VsZWN0ZWRPcHRpb25JZHModmFyaWF0aW9uLnZhbHVlKTtcbiAgY29uc3Qgb3B0aW9uID0gaWRzLmxlbmd0aCA/IG9wdGlvbkJ5SWQodmFyaWF0aW9uLCBpZHNbMF0pIDogbnVsbDtcbiAgY29uc3Qgc2VsZWN0ZWQgPSAodmFyaWF0aW9uPy5zZWxlY3RlZE9wdGlvbnMgfHwgW10pWzBdO1xuICByZXR1cm4ge1xuICAgIGtpbmQsXG4gICAgZmlsbDogbm9ybWFsaXNlQ3NzQ29sb3VyKFxuICAgICAgb3B0aW9uPy5jb2xvdXIsXG4gICAgICBzZWxlY3RlZD8uY29sb3VyLFxuICAgICAgb3B0aW9uPy52YWx1ZSxcbiAgICAgIHNlbGVjdGVkPy52YWx1ZSxcbiAgICAgIHZhcmlhdGlvbj8udmFsdWUsXG4gICAgKSxcbiAgfTtcbn1cblxuY29uc3QgSEVYX0NPTE9VUiA9IC9eIyhbMC05YS1mXXszfXxbMC05YS1mXXs2fXxbMC05YS1mXXs4fSkkL2k7XG5jb25zdCBDU1NfRlVOQ1RJT05fQ09MT1VSID0gL14ocmdiYT98aHNsYT8pXFwoL2k7XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpc2VDc3NDb2xvdXIoLi4uY2FuZGlkYXRlczogYW55W10pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBmb3IgKGNvbnN0IHZhbHVlIG9mIGNhbmRpZGF0ZXMpIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIGNvbnRpbnVlO1xuICAgIGNvbnN0IHJhdyA9IFN0cmluZyh2YWx1ZSkudHJpbSgpO1xuICAgIGlmICghcmF3IHx8IC9eXFxkKyQvLnRlc3QocmF3KSkgY29udGludWU7XG4gICAgaWYgKEhFWF9DT0xPVVIudGVzdChyYXcpKSB7XG4gICAgICBpZiAocmF3Lmxlbmd0aCA9PT0gNCkge1xuICAgICAgICByZXR1cm4gYCMke3Jhd1sxXX0ke3Jhd1sxXX0ke3Jhd1syXX0ke3Jhd1syXX0ke3Jhd1szXX0ke3Jhd1szXX1gO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJhdztcbiAgICB9XG4gICAgaWYgKENTU19GVU5DVElPTl9DT0xPVVIudGVzdChyYXcpKSByZXR1cm4gcmF3O1xuICAgIGlmICgvXlthLXpdW2Etelxccy1dezIsfSQvaS50ZXN0KHJhdykpIHJldHVybiByYXc7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpbmtlZFZhcmlhdGlvbnNGb3JUZW1wbGF0ZShcbiAgdGVtcGxhdGU6IGFueSxcbiAgdmFyaWF0aW9uczogYW55W10sXG4pOiBhbnlbXSB7XG4gIGNvbnN0IGxpbmtlZElkcyA9IG5ldyBTZXQoXG4gICAgKHRlbXBsYXRlPy5lZGl0ZWRCeVZhcmlhdGlvbkZpZWxkcyB8fCBbXSlcbiAgICAgIC5tYXAoKGZpZWxkOiBhbnkpID0+IGZpZWxkPy5pZClcbiAgICAgIC5maWx0ZXIoKGlkOiBhbnkpID0+IGlkICE9IG51bGwpXG4gICk7XG4gIGlmICghbGlua2VkSWRzLnNpemUpIHJldHVybiBbXTtcbiAgcmV0dXJuICh2YXJpYXRpb25zIHx8IFtdKS5maWx0ZXIoKHZhcmlhdGlvbikgPT5cbiAgICBsaW5rZWRJZHMuaGFzKHZhcmlhdGlvbj8udmFyaWF0aW9uRmllbGQ/LmlkKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWF0aW9uc0Zvckdyb3VwKFxuICBmb3JtVmFsdWVzOiBhbnksXG4gIGdyb3VwSW5kZXg6IG51bWJlcixcbik6IGFueVtdIHtcbiAgY29uc3QgaW5kZXBlbmRlbnQgPSBmb3JtVmFsdWVzPy52YXJpYXRpb25zIHx8IFtdO1xuICBjb25zdCBncm91cCA9IGZvcm1WYWx1ZXM/LnZhcmlhdGlvbnNHcm91cHM/Lltncm91cEluZGV4XT8udmFyaWF0aW9ucyB8fCBbXTtcbiAgcmV0dXJuIFsuLi5pbmRlcGVuZGVudCwgLi4uZ3JvdXBdO1xufVxuXG5mdW5jdGlvbiBpc1ZhbGlkQmJveChiYm94OiBhbnkpOiBiYm94IGlzIG51bWJlcltdIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGJib3gpIHx8IGJib3gubGVuZ3RoICE9PSA0KSByZXR1cm4gZmFsc2U7XG4gIGNvbnN0IFt4LCB5LCB3LCBoXSA9IGJib3gubWFwKE51bWJlcik7XG4gIHJldHVybiB3ID4gMCAmJiBoID4gMCAmJiB4ID49IDAgJiYgeCA8PSAxICYmIHkgPj0gMCAmJiB5IDw9IDE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpb25zRm9yUm9sZShjdXN0b21pc2F0aW9uTWFwOiBhbnksIHJvbGU6IHN0cmluZyk6IG51bWJlcltdW10ge1xuICBjb25zdCByZWdpb25zID0gY3VzdG9taXNhdGlvbk1hcD8ucmVnaW9ucztcbiAgaWYgKCFBcnJheS5pc0FycmF5KHJlZ2lvbnMpKSByZXR1cm4gW107XG4gIHJldHVybiByZWdpb25zXG4gICAgLmZpbHRlcigocmVnaW9uOiBhbnkpID0+IHJlZ2lvbj8ucm9sZSA9PT0gcm9sZSAmJiBpc1ZhbGlkQmJveChyZWdpb24uYmJveCkpXG4gICAgLm1hcCgocmVnaW9uOiBhbnkpID0+IHJlZ2lvbi5iYm94Lm1hcChOdW1iZXIpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJib3hUb1BpeGVscyhcbiAgYmJveDogbnVtYmVyW10sXG4gIHdpZHRoOiBudW1iZXIsXG4gIGhlaWdodDogbnVtYmVyLFxuKTogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfSB7XG4gIGNvbnN0IFt4LCB5LCB3LCBoXSA9IGJib3g7XG4gIHJldHVybiB7XG4gICAgeDogeCAqIHdpZHRoLFxuICAgIHk6IHkgKiBoZWlnaHQsXG4gICAgd2lkdGg6IHcgKiB3aWR0aCxcbiAgICBoZWlnaHQ6IGggKiBoZWlnaHQsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWVsZEJpbmRpbmdzRnJvbSh0ZW1wbGF0ZTogYW55KTogRHJhZnRGaWVsZEJpbmRpbmdbXSB7XG4gIGNvbnN0IHJhdyA9IHRlbXBsYXRlPy5jdXN0b21pc2F0aW9uTWFwPy5maWVsZEJpbmRpbmdzO1xuICBpZiAoIUFycmF5LmlzQXJyYXkocmF3KSkgcmV0dXJuIFtdO1xuICByZXR1cm4gcmF3LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtICYmIGl0ZW0uZmllbGRJZCAhPSBudWxsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpbmRpbmdGb3JGaWVsZChcbiAgYmluZGluZ3M6IERyYWZ0RmllbGRCaW5kaW5nW10sXG4gIGZpZWxkSWQ6IGFueSxcbik6IERyYWZ0RmllbGRCaW5kaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgaWQgPSBOdW1iZXIoZmllbGRJZCk7XG4gIHJldHVybiBiaW5kaW5ncy5maW5kKChpdGVtKSA9PiBOdW1iZXIoaXRlbS5maWVsZElkKSA9PT0gaWQpO1xufVxuXG5mdW5jdGlvbiBmaWVsZE5hbWUoZmllbGQ6IGFueSk6IHN0cmluZyB7XG4gIHJldHVybiBTdHJpbmcoZmllbGQ/Lm5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG59XG5cbmZ1bmN0aW9uIGlzQ29sb3VyS2luZChraW5kOiBEcmFmdENhbnZhc09iamVjdFR5cGUgfCBudWxsKTogYm9vbGVhbiB7XG4gIHJldHVybiBraW5kID09PSAncmVjdCc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmZlckFydHdvcmtSb2xlKFxuICBmaWVsZDogYW55LFxuICBsaW5rZWRGaWVsZHM6IGFueVtdID0gW10sXG4pOiBEcmFmdEFydHdvcmtSb2xlIHtcbiAgY29uc3Qga2luZCA9IGNhbnZhc0tpbmRGb3JGaWVsZFR5cGUoZmllbGQ/LmZpZWxkVHlwZSk7XG4gIGlmIChraW5kID09PSAnaW1hZ2UnKSByZXR1cm4gJ2ltYWdlJztcbiAgaWYgKGtpbmQgPT09ICd0ZXh0JykgcmV0dXJuICd0ZXh0JztcbiAgaWYgKCFpc0NvbG91cktpbmQoa2luZCkpIHJldHVybiAnYXV0byc7XG4gIGNvbnN0IG5hbWUgPSBmaWVsZE5hbWUoZmllbGQpO1xuICBpZiAoLyh0ZXh0fGZvbnR8bGV0dGVyfGNvcHkpLy50ZXN0KG5hbWUpKSByZXR1cm4gJ3RleHRfZmlsbCc7XG4gIGlmICgvKHdyaXN0fGJhbmR8YmFzZXxib2R5fGdyb3VuZHxibGFuaykvLnRlc3QobmFtZSkpIHJldHVybiAnYm9keV9jb2xvdXJfZmlsbCc7XG4gIGNvbnN0IGhhc1RleHQgPSBsaW5rZWRGaWVsZHMuc29tZShcbiAgICAoaXRlbSkgPT4gY2FudmFzS2luZEZvckZpZWxkVHlwZShpdGVtPy5maWVsZFR5cGUpID09PSAndGV4dCdcbiAgKTtcbiAgcmV0dXJuIGhhc1RleHQgPyAndGV4dF9maWxsJyA6ICdib2R5X2NvbG91cl9maWxsJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVBcnR3b3JrUm9sZShcbiAgZmllbGQ6IGFueSxcbiAgdGVtcGxhdGU6IGFueSxcbiAgbGlua2VkRmllbGRzOiBhbnlbXSA9IFtdLFxuKTogRHJhZnRBcnR3b3JrUm9sZSB7XG4gIGNvbnN0IGluZmVycmVkID0gaW5mZXJBcnR3b3JrUm9sZShmaWVsZCwgbGlua2VkRmllbGRzKTtcbiAgaWYgKGluZmVycmVkID09PSAnYm9keV9jb2xvdXJfZmlsbCcpIHJldHVybiAnYm9keV9jb2xvdXJfZmlsbCc7XG4gIGNvbnN0IGJpbmRpbmcgPSBiaW5kaW5nRm9yRmllbGQoZmllbGRCaW5kaW5nc0Zyb20odGVtcGxhdGUpLCBmaWVsZD8uaWQpO1xuICBpZiAoYmluZGluZz8ucm9sZSAmJiBiaW5kaW5nLnJvbGUgIT09ICdhdXRvJykgcmV0dXJuIGJpbmRpbmcucm9sZTtcbiAgcmV0dXJuIGluZmVycmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5mZXJUZXh0VGFyZ2V0RmllbGRJZChcbiAgZmllbGQ6IGFueSxcbiAgdGVtcGxhdGU6IGFueSxcbiAgbGlua2VkRmllbGRzOiBhbnlbXSA9IFtdLFxuKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgYmluZGluZyA9IGJpbmRpbmdGb3JGaWVsZChmaWVsZEJpbmRpbmdzRnJvbSh0ZW1wbGF0ZSksIGZpZWxkPy5pZCk7XG4gIGlmIChiaW5kaW5nPy50YXJnZXRGaWVsZElkICE9IG51bGwpIHJldHVybiBOdW1iZXIoYmluZGluZy50YXJnZXRGaWVsZElkKTtcbiAgY29uc3QgdGV4dEZpZWxkID0gbGlua2VkRmllbGRzLmZpbmQoXG4gICAgKGl0ZW0pID0+IGNhbnZhc0tpbmRGb3JGaWVsZFR5cGUoaXRlbT8uZmllbGRUeXBlKSA9PT0gJ3RleHQnICYmIGl0ZW0/LmlkICE9IG51bGxcbiAgKTtcbiAgcmV0dXJuIHRleHRGaWVsZD8uaWQgIT0gbnVsbCA/IE51bWJlcih0ZXh0RmllbGQuaWQpIDogdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZml0SW5zaWRlKFxuICBib3g6IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0sXG4gIGNvbnRlbnRXaWR0aDogbnVtYmVyLFxuICBjb250ZW50SGVpZ2h0OiBudW1iZXIsXG4gIGxvY2tBc3BlY3RSYXRpbyA9IHRydWUsXG4pOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9IHtcbiAgaWYgKFxuICAgICFsb2NrQXNwZWN0UmF0aW9cbiAgICB8fCAhKGNvbnRlbnRXaWR0aCA+IDApXG4gICAgfHwgIShjb250ZW50SGVpZ2h0ID4gMClcbiAgICB8fCAhKGJveC53aWR0aCA+IDApXG4gICAgfHwgIShib3guaGVpZ2h0ID4gMClcbiAgKSB7XG4gICAgcmV0dXJuIHsgLi4uYm94IH07XG4gIH1cbiAgY29uc3Qgc2NhbGUgPSBNYXRoLm1pbihib3gud2lkdGggLyBjb250ZW50V2lkdGgsIGJveC5oZWlnaHQgLyBjb250ZW50SGVpZ2h0KTtcbiAgY29uc3Qgd2lkdGggPSBjb250ZW50V2lkdGggKiBzY2FsZTtcbiAgY29uc3QgaGVpZ2h0ID0gY29udGVudEhlaWdodCAqIHNjYWxlO1xuICByZXR1cm4ge1xuICAgIHg6IGJveC54ICsgKGJveC53aWR0aCAtIHdpZHRoKSAvIDIsXG4gICAgeTogYm94LnkgKyAoYm94LmhlaWdodCAtIGhlaWdodCkgLyAyLFxuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZExvY2tJbWFnZUFzcGVjdChmaWVsZDogYW55LCB0ZW1wbGF0ZT86IGFueSk6IGJvb2xlYW4ge1xuICBjb25zdCBiaW5kaW5nID0gYmluZGluZ0ZvckZpZWxkKGZpZWxkQmluZGluZ3NGcm9tKHRlbXBsYXRlKSwgZmllbGQ/LmlkKTtcbiAgaWYgKHR5cGVvZiBiaW5kaW5nPy5sb2NrQXNwZWN0UmF0aW8gPT09ICdib29sZWFuJykgcmV0dXJuIGJpbmRpbmcubG9ja0FzcGVjdFJhdGlvO1xuICBpZiAodHlwZW9mIGZpZWxkPy5hc3BlY3RSYXRpb0xvY2sgPT09ICdib29sZWFuJykgcmV0dXJuIGZpZWxkLmFzcGVjdFJhdGlvTG9jaztcbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0JhY2tncm91bmRGaWxsKG9iajogeyB0eXBlPzogc3RyaW5nIH0pOiBib29sZWFuIHtcbiAgcmV0dXJuIG9iaj8udHlwZSA9PT0gJ3JlY3QnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNGdWxsQXJ0Ym9hcmRGaWxsKFxuICBvYmo6IHsgeD86IG51bWJlcjsgeT86IG51bWJlcjsgd2lkdGg/OiBudW1iZXI7IGhlaWdodD86IG51bWJlciB9LFxuICBhcnRXaWR0aDogbnVtYmVyLFxuICBhcnRIZWlnaHQ6IG51bWJlcixcbik6IGJvb2xlYW4ge1xuICByZXR1cm4gKFxuICAgIE51bWJlcihvYmoud2lkdGgpID49IGFydFdpZHRoICogMC45XG4gICAgJiYgTnVtYmVyKG9iai5oZWlnaHQpID49IGFydEhlaWdodCAqIDAuOVxuICAgICYmIE51bWJlcihvYmoueCkgPD0gYXJ0V2lkdGggKiAwLjA1XG4gICAgJiYgTnVtYmVyKG9iai55KSA8PSBhcnRIZWlnaHQgKiAwLjA1XG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZWFzdXJlRHJhZnRUZXh0KFxuICB0ZXh0OiBzdHJpbmcsXG4gIGZvbnRTaXplID0gNDgsXG4gIGZvbnRGYW1pbHk/OiBzdHJpbmcsXG4pOiB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0ge1xuICBjb25zdCBsaW5lcyA9IFN0cmluZyh0ZXh0IHx8ICdUZXh0Jykuc3BsaXQoJ1xcbicpO1xuICBjb25zdCBzaXplID0gTWF0aC5tYXgoMTIsIE51bWJlcihmb250U2l6ZSkgfHwgNDgpO1xuICBsZXQgd2lkdGggPSAwO1xuICBpZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIGlmIChjdHgpIHtcbiAgICAgIGN0eC5mb250ID0gYCR7c2l6ZX1weCAke2Nzc0ZvbnRGYW1pbHkoZm9udEZhbWlseSl9YDtcbiAgICAgIHdpZHRoID0gTWF0aC5tYXgoLi4ubGluZXMubWFwKChsaW5lKSA9PiBjdHgubWVhc3VyZVRleHQobGluZSB8fCAnICcpLndpZHRoKSwgMCk7XG4gICAgfVxuICB9XG4gIGlmICghKHdpZHRoID4gMCkpIHtcbiAgICB3aWR0aCA9IE1hdGgubWF4KC4uLmxpbmVzLm1hcCgobGluZSkgPT4gKGxpbmUgfHwgJyAnKS5sZW5ndGgpLCAxKSAqIHNpemUgKiAwLjYyO1xuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IE1hdGguY2VpbCh3aWR0aCArIHNpemUgKiAwLjE2KSxcbiAgICBoZWlnaHQ6IE1hdGguY2VpbChNYXRoLm1heCgxLCBsaW5lcy5sZW5ndGgpICogc2l6ZSAqIDEuMTUpLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZml0VGV4dEJveChcbiAgb2JqOiBQaWNrPERyYWZ0Q2FudmFzT2JqZWN0LCAneCcgfCAneScgfCAnd2lkdGgnIHwgJ2hlaWdodCcgfCAndGV4dCcgfCAnZm9udFNpemUnIHwgJ2ZvbnRGYW1pbHknPixcbik6IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0ge1xuICBjb25zdCBtZWFzdXJlZCA9IG1lYXN1cmVEcmFmdFRleHQob2JqLnRleHQgfHwgJ1RleHQnLCBvYmouZm9udFNpemUsIG9iai5mb250RmFtaWx5KTtcbiAgY29uc3Qgd2lkdGggPSBNYXRoLm1heCgyNCwgbWVhc3VyZWQud2lkdGgpO1xuICBjb25zdCBoZWlnaHQgPSBNYXRoLm1heCgyMCwgbWVhc3VyZWQuaGVpZ2h0KTtcbiAgY29uc3QgcHJldlcgPSBOdW1iZXIob2JqLndpZHRoKSA+IDAgPyBOdW1iZXIob2JqLndpZHRoKSA6IHdpZHRoO1xuICBjb25zdCBwcmV2SCA9IE51bWJlcihvYmouaGVpZ2h0KSA+IDAgPyBOdW1iZXIob2JqLmhlaWdodCkgOiBoZWlnaHQ7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHg6IChOdW1iZXIob2JqLngpIHx8IDApICsgKHByZXZXIC0gd2lkdGgpIC8gMixcbiAgICB5OiAoTnVtYmVyKG9iai55KSB8fCAwKSArIChwcmV2SCAtIGhlaWdodCkgLyAyLFxuICB9O1xufVxuXG5mdW5jdGlvbiBwbGFjZW1lbnRCb3hlcyhcbiAgcm9sZTogRHJhZnRBcnR3b3JrUm9sZSxcbiAga2luZDogRHJhZnRDYW52YXNPYmplY3RUeXBlLFxuICB0ZW1wbGF0ZTogYW55LFxuKTogbnVtYmVyW11bXSB7XG4gIGlmIChyb2xlID09PSAnYm9keV9jb2xvdXJfZmlsbCcgfHwga2luZCA9PT0gJ3JlY3QnKSB7XG4gICAgY29uc3QgYm9keSA9IHJlZ2lvbnNGb3JSb2xlKHRlbXBsYXRlPy5jdXN0b21pc2F0aW9uTWFwLCAnYm9keV9jb2xvdXJfZmlsbCcpO1xuICAgIGlmIChib2R5Lmxlbmd0aCkgcmV0dXJuIGJvZHk7XG4gICAgY29uc3QgcHJpbnQgPSByZWdpb25zRm9yUm9sZSh0ZW1wbGF0ZT8uY3VzdG9taXNhdGlvbk1hcCwgJ3ByaW50X2FyZWEnKTtcbiAgICBpZiAocHJpbnQubGVuZ3RoKSByZXR1cm4gcHJpbnQ7XG4gICAgcmV0dXJuIFtbMCwgMCwgMSwgMV1dO1xuICB9XG4gIGlmIChraW5kID09PSAndGV4dCcpIHtcbiAgICBjb25zdCBwbGFjZWhvbGRlcnMgPSByZWdpb25zRm9yUm9sZSh0ZW1wbGF0ZT8uY3VzdG9taXNhdGlvbk1hcCwgJ3RleHRfcGxhY2Vob2xkZXInKTtcbiAgICBpZiAocGxhY2Vob2xkZXJzLmxlbmd0aCkgcmV0dXJuIHBsYWNlaG9sZGVycztcbiAgICByZXR1cm4gcmVnaW9uc0ZvclJvbGUodGVtcGxhdGU/LmN1c3RvbWlzYXRpb25NYXAsICdwcmludF9hcmVhJyk7XG4gIH1cbiAgcmV0dXJuIHJlZ2lvbnNGb3JSb2xlKHRlbXBsYXRlPy5jdXN0b21pc2F0aW9uTWFwLCAncHJpbnRfYXJlYScpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdFBsYWNlbWVudChcbiAga2luZDogRHJhZnRDYW52YXNPYmplY3RUeXBlLFxuICBpbmRleDogbnVtYmVyLFxuICBhcnRXaWR0aDogbnVtYmVyLFxuICBhcnRIZWlnaHQ6IG51bWJlcixcbik6IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0ge1xuICBjb25zdCBwYWQgPSBNYXRoLm1heCgyNCwgYXJ0V2lkdGggKiAwLjA0KTtcbiAgaWYgKGtpbmQgPT09ICdpbWFnZScpIHtcbiAgICByZXR1cm4ge1xuICAgICAgeDogYXJ0V2lkdGggKiAwLjIsXG4gICAgICB5OiBhcnRIZWlnaHQgKiAwLjIsXG4gICAgICB3aWR0aDogYXJ0V2lkdGggKiAwLjYsXG4gICAgICBoZWlnaHQ6IGFydEhlaWdodCAqIDAuNixcbiAgICB9O1xuICB9XG4gIGlmIChraW5kID09PSAncmVjdCcpIHtcbiAgICByZXR1cm4geyB4OiAwLCB5OiAwLCB3aWR0aDogYXJ0V2lkdGgsIGhlaWdodDogYXJ0SGVpZ2h0IH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4OiBwYWQsXG4gICAgeTogcGFkICsgaW5kZXggKiBNYXRoLm1heCg2NCwgYXJ0SGVpZ2h0ICogMC4wOCksXG4gICAgd2lkdGg6IGFydFdpZHRoIC0gcGFkICogMixcbiAgICBoZWlnaHQ6IE1hdGgubWF4KDU2LCBhcnRIZWlnaHQgKiAwLjA3KSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU9iamVjdElkKCk6IHN0cmluZyB7XG4gIHJldHVybiBgb2JqLSR7RGF0ZS5ub3coKX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCA4KX1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VlZE9yU3luY0NhbnZhcyhcbiAgZXhpc3Rpbmc6IERyYWZ0Q2FudmFzU3RhdGUgfCBudWxsIHwgdW5kZWZpbmVkLFxuICB0ZW1wbGF0ZTogYW55LFxuICB2YXJpYXRpb25zOiBhbnlbXSxcbik6IERyYWZ0Q2FudmFzU3RhdGUge1xuICBjb25zdCB3aWR0aCA9IE51bWJlcih0ZW1wbGF0ZT8ud2lkdGgpIHx8IERFRkFVTFRfQVJUQk9BUkQud2lkdGg7XG4gIGNvbnN0IGhlaWdodCA9IE51bWJlcih0ZW1wbGF0ZT8uaGVpZ2h0KSB8fCBERUZBVUxUX0FSVEJPQVJELmhlaWdodDtcbiAgY29uc3Qgb2JqZWN0czogRHJhZnRDYW52YXNPYmplY3RbXSA9IChleGlzdGluZz8ub2JqZWN0cyB8fCBbXSkubWFwKChvYmopID0+IChcbiAgICBvYmoudHlwZSA9PT0gJ3RleHQnID8geyAuLi5vYmosIC4uLmZpdFRleHRCb3gob2JqKSB9IDogeyAuLi5vYmogfVxuICApKTtcbiAgY29uc3QgZGV0YWNoZWQgPSBuZXcgU2V0KGV4aXN0aW5nPy5kZXRhY2hlZEZpZWxkSWRzIHx8IFtdKTtcbiAgY29uc3QgbGlua2VkID0gbGlua2VkVmFyaWF0aW9uc0ZvclRlbXBsYXRlKHRlbXBsYXRlLCB2YXJpYXRpb25zKTtcbiAgY29uc3QgbGlua2VkRmllbGRzID0gbGlua2VkLm1hcCgodmFyaWF0aW9uKSA9PiB2YXJpYXRpb24/LnZhcmlhdGlvbkZpZWxkKS5maWx0ZXIoQm9vbGVhbik7XG4gIGNvbnN0IHVzZWRSZWdpb25zOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge307XG5cbiAgZm9yIChjb25zdCB2YXJpYXRpb24gb2YgbGlua2VkKSB7XG4gICAgY29uc3QgZmllbGQgPSB2YXJpYXRpb24/LnZhcmlhdGlvbkZpZWxkO1xuICAgIGlmIChyZXNvbHZlQXJ0d29ya1JvbGUoZmllbGQsIHRlbXBsYXRlLCBsaW5rZWRGaWVsZHMpICE9PSAndGV4dF9maWxsJykgY29udGludWU7XG4gICAgY29uc3QgaW5kZXggPSBvYmplY3RzLmZpbmRJbmRleChcbiAgICAgIChvYmopID0+IG9iai5tZXJjaGlGaWVsZElkID09PSBmaWVsZD8uaWQgJiYgb2JqLnR5cGUgPT09ICdyZWN0J1xuICAgICk7XG4gICAgaWYgKGluZGV4ID49IDApIG9iamVjdHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgfVxuXG4gIGNvbnN0IGFwcGx5Q29sb3VyVG9UZXh0ID0gKHRhcmdldEZpZWxkSWQ6IG51bWJlciB8IHVuZGVmaW5lZCwgZmlsbD86IHN0cmluZywgY29sb3VyRmllbGRJZD86IG51bWJlcikgPT4ge1xuICAgIGlmICghZmlsbCB8fCB0YXJnZXRGaWVsZElkID09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCB0ZXh0T2JqID0gb2JqZWN0cy5maW5kKChvYmopID0+IG9iai5tZXJjaGlGaWVsZElkID09PSB0YXJnZXRGaWVsZElkICYmIG9iai50eXBlID09PSAndGV4dCcpO1xuICAgIGlmICghdGV4dE9iaikgcmV0dXJuIGZhbHNlO1xuICAgIHRleHRPYmouZmlsbCA9IGZpbGw7XG4gICAgdGV4dE9iai5jb2xvdXJGaWVsZElkID0gY29sb3VyRmllbGRJZDtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBwbGFjZU9iamVjdCA9IChcbiAgICBraW5kOiBEcmFmdENhbnZhc09iamVjdFR5cGUsXG4gICAgcm9sZTogRHJhZnRBcnR3b3JrUm9sZSxcbiAgICBmaWVsZDogYW55LFxuICAgIGZpZWxkSWQ6IG51bWJlcixcbiAgICBjb250ZW50OiBSZXR1cm5UeXBlPHR5cGVvZiB2YXJpYXRpb25DYW52YXNDb250ZW50PixcbiAgKSA9PiB7XG4gICAgY29uc3QgYm94ZXMgPSBwbGFjZW1lbnRCb3hlcyhyb2xlLCBraW5kLCB0ZW1wbGF0ZSk7XG4gICAgY29uc3Qga2V5ID0gYCR7cm9sZX06JHtraW5kfWA7XG4gICAgY29uc3QgcmVnaW9uSW5kZXggPSB1c2VkUmVnaW9uc1trZXldIHx8IDA7XG4gICAgdXNlZFJlZ2lvbnNba2V5XSA9IHJlZ2lvbkluZGV4ICsgMTtcbiAgICBjb25zdCBib3ggPSBib3hlc1tyZWdpb25JbmRleF0gfHwgYm94ZXNbMF07XG4gICAgY29uc3QgcGxhY2UgPSBib3hcbiAgICAgID8gYmJveFRvUGl4ZWxzKGJveCwgd2lkdGgsIGhlaWdodClcbiAgICAgIDogZGVmYXVsdFBsYWNlbWVudChraW5kLCBvYmplY3RzLmxlbmd0aCwgd2lkdGgsIGhlaWdodCk7XG4gICAgY29uc3QgbG9ja0FzcGVjdFJhdGlvID0ga2luZCA9PT0gJ2ltYWdlJyA/IHNob3VsZExvY2tJbWFnZUFzcGVjdChmaWVsZCwgdGVtcGxhdGUpIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IG5leHQ6IERyYWZ0Q2FudmFzT2JqZWN0ID0ge1xuICAgICAgaWQ6IGNyZWF0ZU9iamVjdElkKCksXG4gICAgICB0eXBlOiBraW5kLFxuICAgICAgbWVyY2hpRmllbGRJZDogZmllbGRJZCxcbiAgICAgIGFydHdvcmtSb2xlOiByb2xlLFxuICAgICAgbG9ja2VkOiBraW5kID09PSAncmVjdCcsXG4gICAgICByb3RhdGlvbjogMCxcbiAgICAgIHNjYWxlWDogMSxcbiAgICAgIHNjYWxlWTogMSxcbiAgICAgIGxvY2tBc3BlY3RSYXRpbyxcbiAgICAgIC4uLnBsYWNlLFxuICAgICAgdGV4dDogY29udGVudC50ZXh0LFxuICAgICAgc3JjOiBjb250ZW50LnNyYyxcbiAgICAgIGZpbGw6IGNvbnRlbnQuZmlsbCB8fCAoa2luZCA9PT0gJ3RleHQnID8gJyMxMTExMTEnIDogdW5kZWZpbmVkKSxcbiAgICAgIGZvbnRGYW1pbHk6IGtpbmQgPT09ICd0ZXh0JyA/IERFRkFVTFRfRFJBRlRfRk9OVCA6IHVuZGVmaW5lZCxcbiAgICAgIGZvbnRTaXplOiBNYXRoLm1heCgyOCwgTWF0aC5yb3VuZChwbGFjZS5oZWlnaHQgKiAwLjYyKSksXG4gICAgfTtcbiAgICBpZiAoa2luZCA9PT0gJ3RleHQnKSBPYmplY3QuYXNzaWduKG5leHQsIGZpdFRleHRCb3gobmV4dCkpO1xuICAgIGlmIChraW5kID09PSAncmVjdCcpIG9iamVjdHMudW5zaGlmdChuZXh0KTtcbiAgICBlbHNlIG9iamVjdHMucHVzaChuZXh0KTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IHZhcmlhdGlvbiBvZiBsaW5rZWQpIHtcbiAgICBjb25zdCBmaWVsZCA9IHZhcmlhdGlvbj8udmFyaWF0aW9uRmllbGQ7XG4gICAgY29uc3QgZmllbGRJZCA9IGZpZWxkPy5pZDtcbiAgICBjb25zdCBjb250ZW50ID0gdmFyaWF0aW9uQ2FudmFzQ29udGVudCh2YXJpYXRpb24pO1xuICAgIGlmICghY29udGVudC5raW5kIHx8IGZpZWxkSWQgPT0gbnVsbCB8fCBkZXRhY2hlZC5oYXMoZmllbGRJZCkpIGNvbnRpbnVlO1xuICAgIGNvbnN0IHJvbGUgPSByZXNvbHZlQXJ0d29ya1JvbGUoZmllbGQsIHRlbXBsYXRlLCBsaW5rZWRGaWVsZHMpO1xuICAgIGlmIChyb2xlID09PSAndGV4dF9maWxsJykgY29udGludWU7XG5cbiAgICBjb25zdCBmb3VuZCA9IG9iamVjdHMuZmluZCgob2JqKSA9PiBvYmoubWVyY2hpRmllbGRJZCA9PT0gZmllbGRJZCk7XG4gICAgaWYgKGZvdW5kKSB7XG4gICAgICBpZiAoY29udGVudC5raW5kID09PSAndGV4dCcgJiYgY29udGVudC50ZXh0ICE9IG51bGwpIHtcbiAgICAgICAgZm91bmQudGV4dCA9IGNvbnRlbnQudGV4dDtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihmb3VuZCwgZml0VGV4dEJveChmb3VuZCkpO1xuICAgICAgfVxuICAgICAgaWYgKGNvbnRlbnQua2luZCA9PT0gJ2ltYWdlJyAmJiBjb250ZW50LnNyYykgZm91bmQuc3JjID0gY29udGVudC5zcmM7XG4gICAgICBpZiAoY29udGVudC5raW5kID09PSAncmVjdCcgJiYgY29udGVudC5maWxsKSBmb3VuZC5maWxsID0gY29udGVudC5maWxsO1xuICAgICAgaWYgKGZvdW5kLnR5cGUgPT09ICdpbWFnZScpIHtcbiAgICAgICAgZm91bmQubG9ja0FzcGVjdFJhdGlvID0gc2hvdWxkTG9ja0ltYWdlQXNwZWN0KGZpZWxkLCB0ZW1wbGF0ZSk7XG4gICAgICB9XG4gICAgICBpZiAoZm91bmQudHlwZSA9PT0gJ3JlY3QnKSB7XG4gICAgICAgIGZvdW5kLmxvY2tlZCA9IHRydWU7XG4gICAgICAgIGZvdW5kLmFydHdvcmtSb2xlID0gcm9sZTtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChjb250ZW50LmtpbmQgPT09ICd0ZXh0JyAmJiAhY29udGVudC50ZXh0KSBjb250aW51ZTtcbiAgICBpZiAoY29udGVudC5raW5kID09PSAnaW1hZ2UnICYmICFjb250ZW50LnNyYykgY29udGludWU7XG4gICAgaWYgKGNvbnRlbnQua2luZCA9PT0gJ3JlY3QnICYmICFjb250ZW50LmZpbGwpIGNvbnRpbnVlO1xuICAgIHBsYWNlT2JqZWN0KGNvbnRlbnQua2luZCwgcm9sZSwgZmllbGQsIGZpZWxkSWQsIGNvbnRlbnQpO1xuICB9XG5cbiAgZm9yIChjb25zdCB2YXJpYXRpb24gb2YgbGlua2VkKSB7XG4gICAgY29uc3QgZmllbGQgPSB2YXJpYXRpb24/LnZhcmlhdGlvbkZpZWxkO1xuICAgIGNvbnN0IGZpZWxkSWQgPSBmaWVsZD8uaWQ7XG4gICAgY29uc3QgY29udGVudCA9IHZhcmlhdGlvbkNhbnZhc0NvbnRlbnQodmFyaWF0aW9uKTtcbiAgICBpZiAoZmllbGRJZCA9PSBudWxsIHx8IGRldGFjaGVkLmhhcyhmaWVsZElkKSB8fCAhY29udGVudC5maWxsKSBjb250aW51ZTtcbiAgICBjb25zdCByb2xlID0gcmVzb2x2ZUFydHdvcmtSb2xlKGZpZWxkLCB0ZW1wbGF0ZSwgbGlua2VkRmllbGRzKTtcbiAgICBpZiAocm9sZSAhPT0gJ3RleHRfZmlsbCcpIGNvbnRpbnVlO1xuICAgIGNvbnN0IHRhcmdldElkID0gaW5mZXJUZXh0VGFyZ2V0RmllbGRJZChmaWVsZCwgdGVtcGxhdGUsIGxpbmtlZEZpZWxkcyk7XG4gICAgYXBwbHlDb2xvdXJUb1RleHQodGFyZ2V0SWQsIGNvbnRlbnQuZmlsbCwgZmllbGRJZCk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICBvYmplY3RzLFxuICAgIGRldGFjaGVkRmllbGRJZHM6IEFycmF5LmZyb20oZGV0YWNoZWQpLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGV0YWNoRmllbGQoXG4gIHN0YXRlOiBEcmFmdENhbnZhc1N0YXRlLFxuICBvYmplY3RJZDogc3RyaW5nLFxuKTogRHJhZnRDYW52YXNTdGF0ZSB7XG4gIGNvbnN0IHRhcmdldCA9IHN0YXRlLm9iamVjdHMuZmluZCgob2JqKSA9PiBvYmouaWQgPT09IG9iamVjdElkKTtcbiAgY29uc3QgZGV0YWNoZWRGaWVsZElkcyA9IFsuLi4oc3RhdGUuZGV0YWNoZWRGaWVsZElkcyB8fCBbXSldO1xuICBpZiAodGFyZ2V0Py5tZXJjaGlGaWVsZElkICE9IG51bGwgJiYgIWRldGFjaGVkRmllbGRJZHMuaW5jbHVkZXModGFyZ2V0Lm1lcmNoaUZpZWxkSWQpKSB7XG4gICAgZGV0YWNoZWRGaWVsZElkcy5wdXNoKHRhcmdldC5tZXJjaGlGaWVsZElkKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIG9iamVjdHM6IHN0YXRlLm9iamVjdHMuZmlsdGVyKChvYmopID0+IG9iai5pZCAhPT0gb2JqZWN0SWQpLFxuICAgIGRldGFjaGVkRmllbGRJZHMsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmludEFyZWFHdWlkZXModGVtcGxhdGU6IGFueSk6IEFycmF5PHtcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGhlaWdodDogbnVtYmVyO1xufT4ge1xuICBjb25zdCB3aWR0aCA9IE51bWJlcih0ZW1wbGF0ZT8ud2lkdGgpIHx8IERFRkFVTFRfQVJUQk9BUkQud2lkdGg7XG4gIGNvbnN0IGhlaWdodCA9IE51bWJlcih0ZW1wbGF0ZT8uaGVpZ2h0KSB8fCBERUZBVUxUX0FSVEJPQVJELmhlaWdodDtcbiAgcmV0dXJuIHJlZ2lvbnNGb3JSb2xlKHRlbXBsYXRlPy5jdXN0b21pc2F0aW9uTWFwLCAncHJpbnRfYXJlYScpLm1hcCgoYmJveCkgPT5cbiAgICBiYm94VG9QaXhlbHMoYmJveCwgd2lkdGgsIGhlaWdodClcbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxTQUNFQSxpQkFBaUIsRUFDakJDLGdCQUFnQixFQU1oQkMsU0FBUyxRQUNKLFNBQVM7QUFDaEIsU0FBU0Msa0JBQWtCLEVBQUVDLGFBQWEsUUFBUSxjQUFjO0FBQ2hFLFNBQVNDLGdCQUFnQixRQUFRLFlBQVk7QUFFN0MsT0FBTyxTQUFTQyx3QkFBd0JBLENBQUNDLE9BQVksRUFBVztFQUM5RCxPQUFPQyxLQUFLLENBQUNDLE9BQU8sQ0FBQ0YsT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUVHLGNBQWMsQ0FBQyxJQUFJSCxPQUFPLENBQUNHLGNBQWMsQ0FBQ0MsTUFBTSxHQUFHLENBQUM7QUFDcEY7QUFFQSxPQUFPLFNBQVNDLHlCQUF5QkEsQ0FBQ0wsT0FBWSxFQUFXO0VBQy9ELE9BQU9NLE9BQU8sQ0FDWixDQUFBTixPQUFPLGFBQVBB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
636
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCTEFOS19URU1QTEFURV9JRCIsIkRFRkFVTFRfQVJUQk9BUkQiLCJGaWVsZFR5cGUiLCJERUZBVUxUX0RSQUZUX0ZPTlQiLCJjc3NGb250RmFtaWx5IiwicHJvZHVjdEhhc0dyb3VwcyIsInBhbnRvbmVCeUNvZGUiLCJwcm9kdWN0SGFzRHJhZnRUZW1wbGF0ZXMiLCJwcm9kdWN0IiwiQXJyYXkiLCJpc0FycmF5IiwiZHJhZnRUZW1wbGF0ZXMiLCJsZW5ndGgiLCJwcm9kdWN0QWxsb3dzQ2xpZW50RGVzaWduIiwiQm9vbGVhbiIsIm5lZWRzRHJhZnRpbmciLCJhbGxvd0NsaWVudERyYWZ0Q29udHJpYnV0aW9uIiwicHJvZHVjdEhhc1ZhcmlhdGlvbkdyb3VwcyIsImRlc2lnbkdyb3VwQ291bnQiLCJmb3JtVmFsdWVzIiwiZ3JvdXBzIiwidmFyaWF0aW9uc0dyb3VwcyIsInBhcnNlU2VsZWN0ZWRPcHRpb25JZHMiLCJ2YWx1ZSIsInVuZGVmaW5lZCIsIlN0cmluZyIsInNwbGl0IiwibWFwIiwicyIsInBhcnNlSW50IiwidHJpbSIsImZpbHRlciIsIm4iLCJpc05hTiIsInNlbGVjdGVkT3B0aW9uSWRzRnJvbVZhcmlhdGlvbnMiLCJ2YXJpYXRpb25zIiwiaWRzIiwiU2V0IiwiX2l0ZXJhdG9yIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJfc3RlcCIsImRvbmUiLCJ2YXJpYXRpb24iLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwiaWQiLCJhZGQiLCJlcnIiLCJlIiwiZiIsImlzVGVtcGxhdGVWaXNpYmxlIiwidGVtcGxhdGUiLCJzZWxlY3RlZE9wdGlvbklkcyIsInJlcXVpcmVkIiwic2VsZWN0ZWRCeVZhcmlhdGlvbkZpZWxkT3B0aW9ucyIsImV2ZXJ5Iiwib3B0IiwiaGFzIiwidmlzaWJsZVRlbXBsYXRlc0Zvckdyb3VwIiwiaW5kZXBlbmRlbnRWYXJpYXRpb25zIiwiZ3JvdXBWYXJpYXRpb25zIiwic2VsZWN0ZWQiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJibGFua1RlbXBsYXRlIiwiX3Byb2R1Y3QkZHJhZnRUZW1wbGF0IiwiX3Byb2R1Y3QkZmVhdHVyZUltYWdlIiwiX3Byb2R1Y3QkZHJhZnRUZW1wbGF0MiIsIl9wcm9kdWN0JGZlYXR1cmVJbWFnZTIiLCJmcm9tUHJvZHVjdCIsIk51bWJlciIsIndpZHRoIiwiZmVhdHVyZUltYWdlIiwiaGVpZ2h0IiwibmFtZSIsImZpbGUiLCJlZGl0ZWRCeVZhcmlhdGlvbkZpZWxkcyIsInRlbXBsYXRlc0Zvckdyb3VwIiwidmlzaWJsZSIsInRlbXBsYXRlSGFzRmlsZSIsImRvd25sb2FkVXJsIiwiY2FjaGVkRG93bmxvYWRVcmwiLCJ2aWV3VXJsIiwiY2FjaGVkVmlld1VybCIsInVuaXF1ZUZpbGVUZW1wbGF0ZXMiLCJ0ZW1wbGF0ZXMiLCJzZWVuIiwicmVzdWx0IiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsImtleSIsInB1c2giLCJkb3dubG9hZGFibGVEcmFmdFRlbXBsYXRlcyIsImluZGVwZW5kZW50IiwibWF0Y2hlZCIsIl9pdGVyYXRvcjQiLCJfc3RlcDQiLCJncm91cCIsImFwcGx5IiwiY2FudmFzS2luZEZvckZpZWxkVHlwZSIsImZpZWxkVHlwZSIsIlRFWFRfSU5QVVQiLCJURVhUX0FSRUEiLCJOVU1CRVJfSU5QVVQiLCJTRUxFQ1QiLCJSQURJTyIsIkNIRUNLQk9YIiwiRklMRV9VUExPQUQiLCJJTUFHRV9TRUxFQ1QiLCJDT0xPVVJfUElDS0VSIiwiQ09MT1VSX1NFTEVDVCIsIkNPTE9VUl9FWFRSQUNUIiwiUEFOVE9ORV9DT0xPVVJfU0VMRUNUIiwib3B0aW9uQnlJZCIsIl92YXJpYXRpb24kdmFyaWF0aW9uRiIsImZyb21TZWxlY3RhYmxlIiwic2VsZWN0YWJsZU9wdGlvbnMiLCJmaW5kIiwib3B0aW9uIiwib3B0aW9uSWQiLCJ2YXJpYXRpb25GaWVsZCIsIm9wdGlvbnMiLCJ2YXJpYXRpb25DYW52YXNDb250ZW50IiwiZmllbGQiLCJraW5kIiwidHlwZSIsIm5hbWVzIiwiX29wdGlvbkJ5SWQiLCJ0ZXh0Iiwiam9pbiIsInZhcmlhdGlvbkZpbGVzIiwic3JjIiwibGlua2VkRmlsZSIsImZpbGwiLCJub3JtYWxpc2VDc3NDb2xvdXIiLCJhbGxvd0FsbFBhbnRvbmVzIiwiX3BhbnRvbmVCeUNvZGUiLCJoZXgiLCJzZWxlY3RlZE9wdGlvbnMiLCJjb2xvdXIiLCJIRVhfQ09MT1VSIiwiQ1NTX0ZVTkNUSU9OX0NPTE9VUiIsIl9sZW4iLCJhcmd1bWVudHMiLCJjYW5kaWRhdGVzIiwiX2tleSIsIl9pIiwiX2NhbmRpZGF0ZXMiLCJyYXciLCJ0ZXN0IiwibGlua2VkVmFyaWF0aW9uc0ZvclRlbXBsYXRlIiwibGlua2VkSWRzIiwic2l6ZSIsIl92YXJpYXRpb24kdmFyaWF0aW9uRjIiLCJ2YXJpYXRpb25zRm9yR3JvdXAiLCJncm91cEluZGV4IiwiX2Zvcm1WYWx1ZXMkdmFyaWF0aW9uIiwiaXNWYWxpZEJib3giLCJiYm94IiwiX2Jib3gkbWFwIiwiX2Jib3gkbWFwMiIsIl9zbGljZWRUb0FycmF5IiwieCIsInkiLCJ3IiwiaCIsInJlZ2lvbnNGb3JSb2xlIiwiY3VzdG9taXNhdGlvbk1hcCIsInJvbGUiLCJyZWdpb25zIiwicmVnaW9uIiwiYmJveFRvUGl4ZWxzIiwiX2Jib3giLCJmaWVsZEJpbmRpbmdzRnJvbSIsIl90ZW1wbGF0ZSRjdXN0b21pc2F0aSIsImZpZWxkQmluZGluZ3MiLCJpdGVtIiwiZmllbGRJZCIsImJpbmRpbmdGb3JGaWVsZCIsImJpbmRpbmdzIiwiZmllbGROYW1lIiwidG9Mb3dlckNhc2UiLCJpc0NvbG91cktpbmQiLCJpbmZlckFydHdvcmtSb2xlIiwibGlua2VkRmllbGRzIiwiaGFzVGV4dCIsInNvbWUiLCJyZXNvbHZlQXJ0d29ya1JvbGUiLCJpbmZlcnJlZCIsImJpbmRpbmciLCJpbmZlclRleHRUYXJnZXRGaWVsZElkIiwidGFyZ2V0RmllbGRJZCIsInRleHRGaWVsZCIsImZpdEluc2lkZSIsImJveCIsImNvbnRlbnRXaWR0aCIsImNvbnRlbnRIZWlnaHQiLCJsb2NrQXNwZWN0UmF0aW8iLCJfb2JqZWN0U3ByZWFkIiwic2NhbGUiLCJNYXRoIiwibWluIiwic2hvdWxkTG9ja0ltYWdlQXNwZWN0IiwiYXNwZWN0UmF0aW9Mb2NrIiwiaXNCYWNrZ3JvdW5kRmlsbCIsIm9iaiIsImlzRnVsbEFydGJvYXJkRmlsbCIsImFydFdpZHRoIiwiYXJ0SGVpZ2h0IiwibWVhc3VyZURyYWZ0VGV4dCIsImZvbnRTaXplIiwiZm9udEZhbWlseSIsImxpbmVzIiwibWF4IiwiZG9jdW1lbnQiLCJjYW52YXMiLCJjcmVhdGVFbGVtZW50IiwiY3R4IiwiZ2V0Q29udGV4dCIsImZvbnQiLCJsaW5lIiwibWVhc3VyZVRleHQiLCJjZWlsIiwiZml0VGV4dEJveCIsIm1lYXN1cmVkIiwicHJldlciLCJwcmV2SCIsInBsYWNlbWVudEJveGVzIiwiYm9keSIsInByaW50IiwicGxhY2Vob2xkZXJzIiwiZGVmYXVsdFBsYWNlbWVudCIsImluZGV4IiwicGFkIiwiY3JlYXRlT2JqZWN0SWQiLCJEYXRlIiwibm93IiwicmFuZG9tIiwidG9TdHJpbmciLCJzbGljZSIsInNlZWRPclN5bmNDYW52YXMiLCJleGlzdGluZyIsIm9iamVjdHMiLCJkZXRhY2hlZCIsImRldGFjaGVkRmllbGRJZHMiLCJsaW5rZWQiLCJ1c2VkUmVnaW9ucyIsIl9pdGVyYXRvcjUiLCJfc3RlcDUiLCJfbG9vcCIsImZpbmRJbmRleCIsIm1lcmNoaUZpZWxkSWQiLCJzcGxpY2UiLCJhcHBseUNvbG91clRvVGV4dCIsImNvbG91ckZpZWxkSWQiLCJ0ZXh0T2JqIiwicGxhY2VPYmplY3QiLCJjb250ZW50IiwiYm94ZXMiLCJyZWdpb25JbmRleCIsInBsYWNlIiwibmV4dCIsImFydHdvcmtSb2xlIiwibG9ja2VkIiwicm90YXRpb24iLCJzY2FsZVgiLCJzY2FsZVkiLCJyb3VuZCIsIk9iamVjdCIsImFzc2lnbiIsInVuc2hpZnQiLCJfaXRlcmF0b3I2IiwiX3N0ZXA2IiwiX2xvb3AyIiwiZm91bmQiLCJfcmV0IiwiX2l0ZXJhdG9yNyIsIl9zdGVwNyIsInRhcmdldElkIiwiZnJvbSIsImRldGFjaEZpZWxkIiwic3RhdGUiLCJvYmplY3RJZCIsInRhcmdldCIsImluY2x1ZGVzIiwicHJpbnRBcmVhR3VpZGVzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2RyYWZ0VGVtcGxhdGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJMQU5LX1RFTVBMQVRFX0lELFxuICBERUZBVUxUX0FSVEJPQVJELFxuICBEcmFmdEFydHdvcmtSb2xlLFxuICBEcmFmdENhbnZhc09iamVjdCxcbiAgRHJhZnRDYW52YXNPYmplY3RUeXBlLFxuICBEcmFmdENhbnZhc1N0YXRlLFxuICBEcmFmdEZpZWxkQmluZGluZyxcbiAgRmllbGRUeXBlLFxufSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IERFRkFVTFRfRFJBRlRfRk9OVCwgY3NzRm9udEZhbWlseSB9IGZyb20gJy4vZHJhZnRGb250cyc7XG5pbXBvcnQgeyBwcm9kdWN0SGFzR3JvdXBzIH0gZnJvbSAnLi9wcm9kdWN0cyc7XG5pbXBvcnQgeyBwYW50b25lQnlDb2RlIH0gZnJvbSAnLi9wYW50b25lQ29sb3Vycyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9kdWN0SGFzRHJhZnRUZW1wbGF0ZXMocHJvZHVjdDogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHByb2R1Y3Q/LmRyYWZ0VGVtcGxhdGVzKSAmJiBwcm9kdWN0LmRyYWZ0VGVtcGxhdGVzLmxlbmd0aCA+IDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9kdWN0QWxsb3dzQ2xpZW50RGVzaWduKHByb2R1Y3Q6IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gQm9vbGVhbihcbiAgICBwcm9kdWN0Py5uZWVkc0RyYWZ0aW5nXG4gICAgJiYgcHJvZHVjdD8uYWxsb3dDbGllbnREcmFmdENvbnRyaWJ1dGlvblxuICAgICYmIHByb2R1Y3RIYXNEcmFmdFRlbXBsYXRlcyhwcm9kdWN0KSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2R1Y3RIYXNWYXJpYXRpb25Hcm91cHMocHJvZHVjdDogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiBwcm9kdWN0SGFzR3JvdXBzKHByb2R1Y3QpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVzaWduR3JvdXBDb3VudChwcm9kdWN0OiBhbnksIGZvcm1WYWx1ZXM6IGFueSk6IG51bWJlciB7XG4gIGlmICghcHJvZHVjdEhhc1ZhcmlhdGlvbkdyb3Vwcyhwcm9kdWN0KSkgcmV0dXJuIDE7XG4gIGNvbnN0IGdyb3VwcyA9IGZvcm1WYWx1ZXM/LnZhcmlhdGlvbnNHcm91cHM7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KGdyb3VwcykgJiYgZ3JvdXBzLmxlbmd0aCA+IDAgPyBncm91cHMubGVuZ3RoIDogMTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU2VsZWN0ZWRPcHRpb25JZHModmFsdWU6IGFueSk6IG51bWJlcltdIHtcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09ICcnKSByZXR1cm4gW107XG4gIHJldHVybiBTdHJpbmcodmFsdWUpXG4gICAgLnNwbGl0KCcsJylcbiAgICAubWFwKChzKSA9PiBwYXJzZUludChzLnRyaW0oKSwgMTApKVxuICAgIC5maWx0ZXIoKG4pID0+ICFpc05hTihuKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3RlZE9wdGlvbklkc0Zyb21WYXJpYXRpb25zKHZhcmlhdGlvbnM6IGFueVtdKTogU2V0PG51bWJlcj4ge1xuICBjb25zdCBpZHMgPSBuZXcgU2V0PG51bWJlcj4oKTtcbiAgZm9yIChjb25zdCB2YXJpYXRpb24gb2YgdmFyaWF0aW9ucyB8fCBbXSkge1xuICAgIGZvciAoY29uc3QgaWQgb2YgcGFyc2VTZWxlY3RlZE9wdGlvbklkcyh2YXJpYXRpb24/LnZhbHVlKSkge1xuICAgICAgaWRzLmFkZChpZCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBpZHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1RlbXBsYXRlVmlzaWJsZShcbiAgdGVtcGxhdGU6IGFueSxcbiAgc2VsZWN0ZWRPcHRpb25JZHM6IFNldDxudW1iZXI+LFxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHJlcXVpcmVkID0gdGVtcGxhdGU/LnNlbGVjdGVkQnlWYXJpYXRpb25GaWVsZE9wdGlvbnM7XG4gIGlmICghQXJyYXkuaXNBcnJheShyZXF1aXJlZCkgfHwgcmVxdWlyZWQubGVuZ3RoID09PSAwKSByZXR1cm4gdHJ1ZTtcbiAgcmV0dXJuIHJlcXVpcmVkLmV2ZXJ5KChvcHQ6IGFueSkgPT4gb3B0Py5pZCAmJiBzZWxlY3RlZE9wdGlvbklkcy5oYXMob3B0LmlkKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2aXNpYmxlVGVtcGxhdGVzRm9yR3JvdXAoXG4gIHByb2R1Y3Q6IGFueSxcbiAgaW5kZXBlbmRlbnRWYXJpYXRpb25zOiBhbnlbXSxcbiAgZ3JvdXBWYXJpYXRpb25zOiBhbnlbXSxcbik6IGFueVtdIHtcbiAgY29uc3Qgc2VsZWN0ZWQgPSBzZWxlY3RlZE9wdGlvbklkc0Zyb21WYXJpYXRpb25zKFtcbiAgICAuLi4oaW5kZXBlbmRlbnRWYXJpYXRpb25zIHx8IFtdKSxcbiAgICAuLi4oZ3JvdXBWYXJpYXRpb25zIHx8IFtdKSxcbiAgXSk7XG4gIHJldHVybiAocHJvZHVjdD8uZHJhZnRUZW1wbGF0ZXMgfHwgW10pLmZpbHRlcigodGVtcGxhdGU6IGFueSkgPT5cbiAgICBpc1RlbXBsYXRlVmlzaWJsZSh0ZW1wbGF0ZSwgc2VsZWN0ZWQpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBibGFua1RlbXBsYXRlKHByb2R1Y3Q/OiBhbnkpIHtcbiAgY29uc3QgZnJvbVByb2R1Y3QgPSBOdW1iZXIocHJvZHVjdD8uZHJhZnRUZW1wbGF0ZXM/LlswXT8ud2lkdGgpXG4gICAgfHwgTnVtYmVyKHByb2R1Y3Q/LmZlYXR1cmVJbWFnZT8ud2lkdGgpXG4gICAgfHwgREVGQVVMVF9BUlRCT0FSRC53aWR0aDtcbiAgY29uc3QgaGVpZ2h0ID0gTnVtYmVyKHByb2R1Y3Q/LmRyYWZ0VGVtcGxhdGVzPy5bMF0/LmhlaWdodClcbiAgICB8fCBOdW1iZXIocHJvZHVjdD8uZmVhdHVyZUltYWdlPy5oZWlnaHQpXG4gICAgfHwgREVGQVVMVF9BUlRCT0FSRC5oZWlnaHQ7XG4gIHJldHVybiB7XG4gICAgaWQ6IEJMQU5LX1RFTVBMQVRFX0lELFxuICAgIG5hbWU6ICdBcnR3b3JrJyxcbiAgICB3aWR0aDogZnJvbVByb2R1Y3QsXG4gICAgaGVpZ2h0LFxuICAgIGZpbGU6IG51bGwsXG4gICAgZWRpdGVkQnlWYXJpYXRpb25GaWVsZHM6IFtdLFxuICAgIHNlbGVjdGVkQnlWYXJpYXRpb25GaWVsZE9wdGlvbnM6IFtdLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVtcGxhdGVzRm9yR3JvdXAoXG4gIHByb2R1Y3Q6IGFueSxcbiAgaW5kZXBlbmRlbnRWYXJpYXRpb25zOiBhbnlbXSxcbiAgZ3JvdXBWYXJpYXRpb25zOiBhbnlbXSxcbik6IGFueVtdIHtcbiAgY29uc3QgdmlzaWJsZSA9IHZpc2libGVUZW1wbGF0ZXNGb3JHcm91cChcbiAgICBwcm9kdWN0LFxuICAgIGluZGVwZW5kZW50VmFyaWF0aW9ucyxcbiAgICBncm91cFZhcmlhdGlvbnMsXG4gICk7XG4gIHJldHVybiB2aXNpYmxlLmxlbmd0aCA/IHZpc2libGUgOiBbYmxhbmtUZW1wbGF0ZShwcm9kdWN0KV07XG59XG5cbmZ1bmN0aW9uIHRlbXBsYXRlSGFzRmlsZSh0ZW1wbGF0ZTogYW55KTogYm9vbGVhbiB7XG4gIGNvbnN0IGZpbGUgPSB0ZW1wbGF0ZT8uZmlsZTtcbiAgaWYgKCFmaWxlKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBCb29sZWFuKFxuICAgIGZpbGUuaWRcbiAgICB8fCBmaWxlLmRvd25sb2FkVXJsXG4gICAgfHwgZmlsZS5jYWNoZWREb3dubG9hZFVybFxuICAgIHx8IGZpbGUudmlld1VybFxuICAgIHx8IGZpbGUuY2FjaGVkVmlld1VybCxcbiAgKTtcbn1cblxuZnVuY3Rpb24gdW5pcXVlRmlsZVRlbXBsYXRlcyh0ZW1wbGF0ZXM6IGFueVtdKTogYW55W10ge1xuICBjb25zdCBzZWVuID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGNvbnN0IHJlc3VsdDogYW55W10gPSBbXTtcbiAgZm9yIChjb25zdCB0ZW1wbGF0ZSBvZiB0ZW1wbGF0ZXMpIHtcbiAgICBpZiAoIXRlbXBsYXRlSGFzRmlsZSh0ZW1wbGF0ZSkpIGNvbnRpbnVlO1xuICAgIGNvbnN0IGZpbGUgPSB0ZW1wbGF0ZS5maWxlIHx8IHt9O1xuICAgIGNvbnN0IGtleSA9IHRlbXBsYXRlPy5pZCAhPSBudWxsXG4gICAgICA/IGBpZDoke3RlbXBsYXRlLmlkfWBcbiAgICAgIDogYGZpbGU6JHtmaWxlLmlkIHx8IGZpbGUuZG93bmxvYWRVcmwgfHwgZmlsZS52aWV3VXJsfWA7XG4gICAgaWYgKHNlZW4uaGFzKGtleSkpIGNvbnRpbnVlO1xuICAgIHNlZW4uYWRkKGtleSk7XG4gICAgcmVzdWx0LnB1c2godGVtcGxhdGUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKiBCbGFuayB0ZW1wbGF0ZXMgdGhlIGN1c3RvbWVyIGNhbiBkb3dubG9hZCBmb3IgdGhlIG9wdGlvbnMgY3VycmVudGx5IHNlbGVjdGVkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRvd25sb2FkYWJsZURyYWZ0VGVtcGxhdGVzKHByb2R1Y3Q6IGFueSwgZm9ybVZhbHVlczogYW55KTogYW55W10ge1xuICBjb25zdCBpbmRlcGVuZGVudCA9IGZvcm1WYWx1ZXM/LnZhcmlhdGlvbnMgfHwgW107XG4gIGNvbnN0IGdyb3VwcyA9IHByb2R1Y3RIYXNWYXJpYXRpb25Hcm91cHMocHJvZHVjdClcbiAgICAmJiBBcnJheS5pc0FycmF5KGZvcm1WYWx1ZXM/LnZhcmlhdGlvbnNHcm91cHMpXG4gICAgJiYgZm9ybVZhbHVlcy52YXJpYXRpb25zR3JvdXBzLmxlbmd0aFxuICAgID8gZm9ybVZhbHVlcy52YXJpYXRpb25zR3JvdXBzXG4gICAgOiBbe31dO1xuICBjb25zdCBtYXRjaGVkOiBhbnlbXSA9IFtdO1xuICBmb3IgKGNvbnN0IGdyb3VwIG9mIGdyb3Vwcykge1xuICAgIG1hdGNoZWQucHVzaCguLi52aXNpYmxlVGVtcGxhdGVzRm9yR3JvdXAoXG4gICAgICBwcm9kdWN0LFxuICAgICAgaW5kZXBlbmRlbnQsXG4gICAgICBncm91cD8udmFyaWF0aW9ucyB8fCBbXSxcbiAgICApKTtcbiAgfVxuICBpZiAobWF0Y2hlZC5sZW5ndGgpIHJldHVybiB1bmlxdWVGaWxlVGVtcGxhdGVzKG1hdGNoZWQpO1xuICByZXR1cm4gdW5pcXVlRmlsZVRlbXBsYXRlcyhwcm9kdWN0Py5kcmFmdFRlbXBsYXRlcyB8fCBbXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYW52YXNLaW5kRm9yRmllbGRUeXBlKFxuICBmaWVsZFR5cGU6IGFueSxcbik6IERyYWZ0Q2FudmFzT2JqZWN0VHlwZSB8IG51bGwge1xuICBzd2l0Y2ggKHBhcnNlSW50KFN0cmluZyhmaWVsZFR5cGUpLCAxMCkpIHtcbiAgICBjYXNlIEZpZWxkVHlwZS5URVhUX0lOUFVUOlxuICAgIGNhc2UgRmllbGRUeXBlLlRFWFRfQVJFQTpcbiAgICBjYXNlIEZpZWxkVHlwZS5OVU1CRVJfSU5QVVQ6XG4gICAgY2FzZSBGaWVsZFR5cGUuU0VMRUNUOlxuICAgIGNhc2UgRmllbGRUeXBlLlJBRElPOlxuICAgIGNhc2UgRmllbGRUeXBlLkNIRUNLQk9YOlxuICAgICAgcmV0dXJuICd0ZXh0JztcbiAgICBjYXNlIEZpZWxkVHlwZS5GSUxFX1VQTE9BRDpcbiAgICBjYXNlIEZpZWxkVHlwZS5JTUFHRV9TRUxFQ1Q6XG4gICAgICByZXR1cm4gJ2ltYWdlJztcbiAgICBjYXNlIEZpZWxkVHlwZS5DT0xPVVJfUElDS0VSOlxuICAgIGNhc2UgRmllbGRUeXBlLkNPTE9VUl9TRUxFQ1Q6XG4gICAgY2FzZSBGaWVsZFR5cGUuQ09MT1VSX0VYVFJBQ1Q6XG4gICAgY2FzZSBGaWVsZFR5cGUuUEFOVE9ORV9DT0xPVVJfU0VMRUNUOlxuICAgICAgcmV0dXJuICdyZWN0JztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZnVuY3Rpb24gb3B0aW9uQnlJZCh2YXJpYXRpb246IGFueSwgaWQ6IG51bWJlcik6IGFueSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGZyb21TZWxlY3RhYmxlID0gKHZhcmlhdGlvbj8uc2VsZWN0YWJsZU9wdGlvbnMgfHwgW10pLmZpbmQoXG4gICAgKG9wdGlvbjogYW55KSA9PiBvcHRpb24ub3B0aW9uSWQgPT09IGlkIHx8IG9wdGlvbi5pZCA9PT0gaWRcbiAgKTtcbiAgaWYgKGZyb21TZWxlY3RhYmxlKSByZXR1cm4gZnJvbVNlbGVjdGFibGU7XG4gIHJldHVybiAodmFyaWF0aW9uPy52YXJpYXRpb25GaWVsZD8ub3B0aW9ucyB8fCBbXSkuZmluZChcbiAgICAob3B0aW9uOiBhbnkpID0+IG9wdGlvbi5pZCA9PT0gaWQgfHwgb3B0aW9uLm9wdGlvbklkID09PSBpZFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWF0aW9uQ2FudmFzQ29udGVudCh2YXJpYXRpb246IGFueSk6IHtcbiAga2luZDogRHJhZnRDYW52YXNPYmplY3RUeXBlIHwgbnVsbDtcbiAgdGV4dD86IHN0cmluZztcbiAgc3JjPzogc3RyaW5nO1xuICBmaWxsPzogc3RyaW5nO1xufSB7XG4gIGNvbnN0IGZpZWxkID0gdmFyaWF0aW9uPy52YXJpYXRpb25GaWVsZDtcbiAgY29uc3Qga2luZCA9IGNhbnZhc0tpbmRGb3JGaWVsZFR5cGUoZmllbGQ/LmZpZWxkVHlwZSk7XG4gIGlmICgha2luZCkgcmV0dXJuIHsga2luZDogbnVsbCB9O1xuXG4gIGNvbnN0IHR5cGUgPSBwYXJzZUludChTdHJpbmcoZmllbGQuZmllbGRUeXBlKSwgMTApO1xuXG4gIGlmIChraW5kID09PSAndGV4dCcpIHtcbiAgICBpZiAoXG4gICAgICB0eXBlID09PSBGaWVsZFR5cGUuU0VMRUNUXG4gICAgICB8fCB0eXBlID09PSBGaWVsZFR5cGUuUkFESU9cbiAgICAgIHx8IHR5cGUgPT09IEZpZWxkVHlwZS5DSEVDS0JPWFxuICAgICkge1xuICAgICAgY29uc3QgbmFtZXMgPSBwYXJzZVNlbGVjdGVkT3B0aW9uSWRzKHZhcmlhdGlvbi52YWx1ZSlcbiAgICAgICAgLm1hcCgoaWQpID0+IG9wdGlvbkJ5SWQodmFyaWF0aW9uLCBpZCk/LnZhbHVlKVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgcmV0dXJuIHsga2luZCwgdGV4dDogbmFtZXMuam9pbignLCAnKSB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAga2luZCxcbiAgICAgIHRleHQ6IHZhcmlhdGlvbj8udmFsdWUgIT0gbnVsbCAmJiB2YXJpYXRpb24udmFsdWUgIT09ICcnXG4gICAgICAgID8gU3RyaW5nKHZhcmlhdGlvbi52YWx1ZSlcbiAgICAgICAgOiAnJyxcbiAgICB9O1xuICB9XG5cbiAgaWYgKGtpbmQgPT09ICdpbWFnZScpIHtcbiAgICBpZiAodHlwZSA9PT0gRmllbGRUeXBlLkZJTEVfVVBMT0FEKSB7XG4gICAgICBjb25zdCBmaWxlID0gKHZhcmlhdGlvbj8udmFyaWF0aW9uRmlsZXMgfHwgW10pWzBdO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAga2luZCxcbiAgICAgICAgc3JjOiBmaWxlPy52aWV3VXJsIHx8IGZpbGU/LmNhY2hlZFZpZXdVcmwgfHwgJycsXG4gICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBpZHMgPSBwYXJzZVNlbGVjdGVkT3B0aW9uSWRzKHZhcmlhdGlvbi52YWx1ZSk7XG4gICAgY29uc3Qgb3B0aW9uID0gaWRzLmxlbmd0aCA/IG9wdGlvbkJ5SWQodmFyaWF0aW9uLCBpZHNbMF0pIDogbnVsbDtcbiAgICBjb25zdCBmaWxlID0gb3B0aW9uPy5saW5rZWRGaWxlO1xuICAgIHJldHVybiB7IGtpbmQsIHNyYzogZmlsZT8udmlld1VybCB8fCBmaWxlPy5jYWNoZWRWaWV3VXJsIHx8ICcnIH07XG4gIH1cblxuICBpZiAodHlwZSA9PT0gRmllbGRUeXBlLkNPTE9VUl9QSUNLRVIpIHtcbiAgICByZXR1cm4geyBraW5kLCBmaWxsOiBub3JtYWxpc2VDc3NDb2xvdXIodmFyaWF0aW9uPy52YWx1ZSkgfHwgJyMwMDAwMDAnIH07XG4gIH1cbiAgaWYgKHR5cGUgPT09IEZpZWxkVHlwZS5QQU5UT05FX0NPTE9VUl9TRUxFQ1QgJiYgZmllbGQ/LmFsbG93QWxsUGFudG9uZXMpIHtcbiAgICByZXR1cm4geyBraW5kLCBmaWxsOiBwYW50b25lQnlDb2RlKHZhcmlhdGlvbj8udmFsdWUpPy5oZXggfHwgJyNjY2NjY2MnIH07XG4gIH1cbiAgY29uc3QgaWRzID0gcGFyc2VTZWxlY3RlZE9wdGlvbklkcyh2YXJpYXRpb24udmFsdWUpO1xuICBjb25zdCBvcHRpb24gPSBpZHMubGVuZ3RoID8gb3B0aW9uQnlJZCh2YXJpYXRpb24sIGlkc1swXSkgOiBudWxsO1xuICBjb25zdCBzZWxlY3RlZCA9ICh2YXJpYXRpb24/LnNlbGVjdGVkT3B0aW9ucyB8fCBbXSlbMF07XG4gIHJldHVybiB7XG4gICAga2luZCxcbiAgICBmaWxsOiBub3JtYWxpc2VDc3NDb2xvdXIoXG4gICAgICBvcHRpb24/LmNvbG91cixcbiAgICAgIHNlbGVjdGVkPy5jb2xvdXIsXG4gICAgICBvcHRpb24/LnZhbHVlLFxuICAgICAgc2VsZWN0ZWQ/LnZhbHVlLFxuICAgICAgdmFyaWF0aW9uPy52YWx1ZSxcbiAgICApLFxuICB9O1xufVxuXG5jb25zdCBIRVhfQ09MT1VSID0gL14jKFswLTlhLWZdezN9fFswLTlhLWZdezZ9fFswLTlhLWZdezh9KSQvaTtcbmNvbnN0IENTU19GVU5DVElPTl9DT0xPVVIgPSAvXihyZ2JhP3xoc2xhPylcXCgvaTtcblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGlzZUNzc0NvbG91ciguLi5jYW5kaWRhdGVzOiBhbnlbXSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGZvciAoY29uc3QgdmFsdWUgb2YgY2FuZGlkYXRlcykge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8IHZhbHVlID09PSAnJykgY29udGludWU7XG4gICAgY29uc3QgcmF3ID0gU3RyaW5nKHZhbHVlKS50cmltKCk7XG4gICAgaWYgKCFyYXcgfHwgL15cXGQrJC8udGVzdChyYXcpKSBjb250aW51ZTtcbiAgICBpZiAoSEVYX0NPTE9VUi50ZXN0KHJhdykpIHtcbiAgICAgIGlmIChyYXcubGVuZ3RoID09PSA0KSB7XG4gICAgICAgIHJldHVybiBgIyR7cmF3WzFdfSR7cmF3WzFdfSR7cmF3WzJdfSR7cmF3WzJdfSR7cmF3WzNdfSR7cmF3WzNdfWA7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmF3O1xuICAgIH1cbiAgICBpZiAoQ1NTX0ZVTkNUSU9OX0NPTE9VUi50ZXN0KHJhdykpIHJldHVybiByYXc7XG4gICAgaWYgKC9eW2Etel1bYS16XFxzLV17Mix9JC9pLnRlc3QocmF3KSkgcmV0dXJuIHJhdztcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlua2VkVmFyaWF0aW9uc0ZvclRlbXBsYXRlKFxuICB0ZW1wbGF0ZTogYW55LFxuICB2YXJpYXRpb25zOiBhbnlbXSxcbik6IGFueVtdIHtcbiAgY29uc3QgbGlua2VkSWRzID0gbmV3IFNldChcbiAgICAodGVtcGxhdGU/LmVkaXRlZEJ5VmFyaWF0aW9uRmllbGRzIHx8IFtdKVxuICAgICAgLm1hcCgoZmllbGQ6IGFueSkgPT4gZmllbGQ/LmlkKVxuICAgICAgLmZpbHRlcigoaWQ6IGFueSkgPT4gaWQgIT0gbnVsbClcbiAgKTtcbiAgaWYgKCFsaW5rZWRJZHMuc2l6ZSkgcmV0dXJuIFtdO1xuICByZXR1cm4gKHZhcmlhdGlvbnMgfHwgW10pLmZpbHRlcigodmFyaWF0aW9uKSA9PlxuICAgIGxpbmtlZElkcy5oYXModmFyaWF0aW9uPy52YXJpYXRpb25GaWVsZD8uaWQpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYXRpb25zRm9yR3JvdXAoXG4gIGZvcm1WYWx1ZXM6IGFueSxcbiAgZ3JvdXBJbmRleDogbnVtYmVyLFxuKTogYW55W10ge1xuICBjb25zdCBpbmRlcGVuZGVudCA9IGZvcm1WYWx1ZXM/LnZhcmlhdGlvbnMgfHwgW107XG4gIGNvbnN0IGdyb3VwID0gZm9ybVZhbHVlcz8udmFyaWF0aW9uc0dyb3Vwcz8uW2dyb3VwSW5kZXhdPy52YXJpYXRpb25zIHx8IFtdO1xuICByZXR1cm4gWy4uLmluZGVwZW5kZW50LCAuLi5ncm91cF07XG59XG5cbmZ1bmN0aW9uIGlzVmFsaWRCYm94KGJib3g6IGFueSk6IGJib3ggaXMgbnVtYmVyW10ge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoYmJveCkgfHwgYmJveC5sZW5ndGggIT09IDQpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgW3gsIHksIHcsIGhdID0gYmJveC5tYXAoTnVtYmVyKTtcbiAgcmV0dXJuIHcgPiAwICYmIGggPiAwICYmIHggPj0gMCAmJiB4IDw9IDEgJiYgeSA+PSAwICYmIHkgPD0gMTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lvbnNGb3JSb2xlKGN1c3RvbWlzYXRpb25NYXA6IGFueSwgcm9sZTogc3RyaW5nKTogbnVtYmVyW11bXSB7XG4gIGNvbnN0IHJlZ2lvbnMgPSBjdXN0b21pc2F0aW9uTWFwPy5yZWdpb25zO1xuICBpZiAoIUFycmF5LmlzQXJyYXkocmVnaW9ucykpIHJldHVybiBbXTtcbiAgcmV0dXJuIHJlZ2lvbnNcbiAgICAuZmlsdGVyKChyZWdpb246IGFueSkgPT4gcmVnaW9uPy5yb2xlID09PSByb2xlICYmIGlzVmFsaWRCYm94KHJlZ2lvbi5iYm94KSlcbiAgICAubWFwKChyZWdpb246IGFueSkgPT4gcmVnaW9uLmJib3gubWFwKE51bWJlcikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmJveFRvUGl4ZWxzKFxuICBiYm94OiBudW1iZXJbXSxcbiAgd2lkdGg6IG51bWJlcixcbiAgaGVpZ2h0OiBudW1iZXIsXG4pOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9IHtcbiAgY29uc3QgW3gsIHksIHcsIGhdID0gYmJveDtcbiAgcmV0dXJuIHtcbiAgICB4OiB4ICogd2lkdGgsXG4gICAgeTogeSAqIGhlaWdodCxcbiAgICB3aWR0aDogdyAqIHdpZHRoLFxuICAgIGhlaWdodDogaCAqIGhlaWdodCxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpZWxkQmluZGluZ3NGcm9tKHRlbXBsYXRlOiBhbnkpOiBEcmFmdEZpZWxkQmluZGluZ1tdIHtcbiAgY29uc3QgcmF3ID0gdGVtcGxhdGU/LmN1c3RvbWlzYXRpb25NYXA/LmZpZWxkQmluZGluZ3M7XG4gIGlmICghQXJyYXkuaXNBcnJheShyYXcpKSByZXR1cm4gW107XG4gIHJldHVybiByYXcuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0gJiYgaXRlbS5maWVsZElkICE9IG51bGwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmluZGluZ0ZvckZpZWxkKFxuICBiaW5kaW5nczogRHJhZnRGaWVsZEJpbmRpbmdbXSxcbiAgZmllbGRJZDogYW55LFxuKTogRHJhZnRGaWVsZEJpbmRpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBpZCA9IE51bWJlcihmaWVsZElkKTtcbiAgcmV0dXJuIGJpbmRpbmdzLmZpbmQoKGl0ZW0pID0+IE51bWJlcihpdGVtLmZpZWxkSWQpID09PSBpZCk7XG59XG5cbmZ1bmN0aW9uIGZpZWxkTmFtZShmaWVsZDogYW55KTogc3RyaW5nIHtcbiAgcmV0dXJuIFN0cmluZyhmaWVsZD8ubmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcbn1cblxuZnVuY3Rpb24gaXNDb2xvdXJLaW5kKGtpbmQ6IERyYWZ0Q2FudmFzT2JqZWN0VHlwZSB8IG51bGwpOiBib29sZWFuIHtcbiAgcmV0dXJuIGtpbmQgPT09ICdyZWN0Jztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluZmVyQXJ0d29ya1JvbGUoXG4gIGZpZWxkOiBhbnksXG4gIGxpbmtlZEZpZWxkczogYW55W10gPSBbXSxcbik6IERyYWZ0QXJ0d29ya1JvbGUge1xuICBjb25zdCBraW5kID0gY2FudmFzS2luZEZvckZpZWxkVHlwZShmaWVsZD8uZmllbGRUeXBlKTtcbiAgaWYgKGtpbmQgPT09ICdpbWFnZScpIHJldHVybiAnaW1hZ2UnO1xuICBpZiAoa2luZCA9PT0gJ3RleHQnKSByZXR1cm4gJ3RleHQnO1xuICBpZiAoIWlzQ29sb3VyS2luZChraW5kKSkgcmV0dXJuICdhdXRvJztcbiAgY29uc3QgbmFtZSA9IGZpZWxkTmFtZShmaWVsZCk7XG4gIGlmICgvKHRleHR8Zm9udHxsZXR0ZXJ8Y29weSkvLnRlc3QobmFtZSkpIHJldHVybiAndGV4dF9maWxsJztcbiAgaWYgKC8od3Jpc3R8YmFuZHxiYXNlfGJvZHl8Z3JvdW5kfGJsYW5rKS8udGVzdChuYW1lKSkgcmV0dXJuICdib2R5X2NvbG91cl9maWxsJztcbiAgY29uc3QgaGFzVGV4dCA9IGxpbmtlZEZpZWxkcy5zb21lKFxuICAgIChpdGVtKSA9PiBjYW52YXNLaW5kRm9yRmllbGRUeXBlKGl0ZW0/LmZpZWxkVHlwZSkgPT09ICd0ZXh0J1xuICApO1xuICByZXR1cm4gaGFzVGV4dCA/ICd0ZXh0X2ZpbGwnIDogJ2JvZHlfY29sb3VyX2ZpbGwnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUFydHdvcmtSb2xlKFxuICBmaWVsZDogYW55LFxuICB0ZW1wbGF0ZTogYW55LFxuICBsaW5rZWRGaWVsZHM6IGFueVtdID0gW10sXG4pOiBEcmFmdEFydHdvcmtSb2xlIHtcbiAgY29uc3QgaW5mZXJyZWQgPSBpbmZlckFydHdvcmtSb2xlKGZpZWxkLCBsaW5rZWRGaWVsZHMpO1xuICBpZiAoaW5mZXJyZWQgPT09ICdib2R5X2NvbG91cl9maWxsJykgcmV0dXJuICdib2R5X2NvbG91cl9maWxsJztcbiAgY29uc3QgYmluZGluZyA9IGJpbmRpbmdGb3JGaWVsZChmaWVsZEJpbmRpbmdzRnJvbSh0ZW1wbGF0ZSksIGZpZWxkPy5pZCk7XG4gIGlmIChiaW5kaW5nPy5yb2xlICYmIGJpbmRpbmcucm9sZSAhPT0gJ2F1dG8nKSByZXR1cm4gYmluZGluZy5yb2xlO1xuICByZXR1cm4gaW5mZXJyZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmZlclRleHRUYXJnZXRGaWVsZElkKFxuICBmaWVsZDogYW55LFxuICB0ZW1wbGF0ZTogYW55LFxuICBsaW5rZWRGaWVsZHM6IGFueVtdID0gW10sXG4pOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBjb25zdCBiaW5kaW5nID0gYmluZGluZ0ZvckZpZWxkKGZpZWxkQmluZGluZ3NGcm9tKHRlbXBsYXRlKSwgZmllbGQ/LmlkKTtcbiAgaWYgKGJpbmRpbmc/LnRhcmdldEZpZWxkSWQgIT0gbnVsbCkgcmV0dXJuIE51bWJlcihiaW5kaW5nLnRhcmdldEZpZWxkSWQpO1xuICBjb25zdCB0ZXh0RmllbGQgPSBsaW5rZWRGaWVsZHMuZmluZChcbiAgICAoaXRlbSkgPT4gY2FudmFzS2luZEZvckZpZWxkVHlwZShpdGVtPy5maWVsZFR5cGUpID09PSAndGV4dCcgJiYgaXRlbT8uaWQgIT0gbnVsbFxuICApO1xuICByZXR1cm4gdGV4dEZpZWxkPy5pZCAhPSBudWxsID8gTnVtYmVyKHRleHRGaWVsZC5pZCkgOiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXRJbnNpZGUoXG4gIGJveDogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfSxcbiAgY29udGVudFdpZHRoOiBudW1iZXIsXG4gIGNvbnRlbnRIZWlnaHQ6IG51bWJlcixcbiAgbG9ja0FzcGVjdFJhdGlvID0gdHJ1ZSxcbik6IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0ge1xuICBpZiAoXG4gICAgIWxvY2tBc3BlY3RSYXRpb1xuICAgIHx8ICEoY29udGVudFdpZHRoID4gMClcbiAgICB8fCAhKGNvbnRlbnRIZWlnaHQgPiAwKVxuICAgIHx8ICEoYm94LndpZHRoID4gMClcbiAgICB8fCAhKGJveC5oZWlnaHQgPiAwKVxuICApIHtcbiAgICByZXR1cm4geyAuLi5ib3ggfTtcbiAgfVxuICBjb25zdCBzY2FsZSA9IE1hdGgubWluKGJveC53aWR0aCAvIGNvbnRlbnRXaWR0aCwgYm94LmhlaWdodCAvIGNvbnRlbnRIZWlnaHQpO1xuICBjb25zdCB3aWR0aCA9IGNvbnRlbnRXaWR0aCAqIHNjYWxlO1xuICBjb25zdCBoZWlnaHQgPSBjb250ZW50SGVpZ2h0ICogc2NhbGU7XG4gIHJldHVybiB7XG4gICAgeDogYm94LnggKyAoYm94LndpZHRoIC0gd2lkdGgpIC8gMixcbiAgICB5OiBib3gueSArIChib3guaGVpZ2h0IC0gaGVpZ2h0KSAvIDIsXG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2hvdWxkTG9ja0ltYWdlQXNwZWN0KGZpZWxkOiBhbnksIHRlbXBsYXRlPzogYW55KTogYm9vbGVhbiB7XG4gIGNvbnN0IGJpbmRpbmcgPSBiaW5kaW5nRm9yRmllbGQoZmllbGRCaW5kaW5nc0Zyb20odGVtcGxhdGUpLCBmaWVsZD8uaWQpO1xuICBpZiAodHlwZW9mIGJpbmRpbmc/LmxvY2tBc3BlY3RSYXRpbyA9PT0gJ2Jvb2xlYW4nKSByZXR1cm4gYmluZGluZy5sb2NrQXNwZWN0UmF0aW87XG4gIGlmICh0eXBlb2YgZmllbGQ/LmFzcGVjdFJhdGlvTG9jayA9PT0gJ2Jvb2xlYW4nKSByZXR1cm4gZmllbGQuYXNwZWN0UmF0aW9Mb2NrO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQmFja2dyb3VuZEZpbGwob2JqOiB7IHR5cGU/OiBzdHJpbmcgfSk6IGJvb2xlYW4ge1xuICByZXR1cm4gb2JqPy50eXBlID09PSAncmVjdCc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Z1bGxBcnRib2FyZEZpbGwoXG4gIG9iajogeyB4PzogbnVtYmVyOyB5PzogbnVtYmVyOyB3aWR0aD86IG51bWJlcjsgaGVpZ2h0PzogbnVtYmVyIH0sXG4gIGFydFdpZHRoOiBudW1iZXIsXG4gIGFydEhlaWdodDogbnVtYmVyLFxuKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgTnVtYmVyKG9iai53aWR0aCkgPj0gYXJ0V2lkdGggKiAwLjlcbiAgICAmJiBOdW1iZXIob2JqLmhlaWdodCkgPj0gYXJ0SGVpZ2h0ICogMC45XG4gICAgJiYgTnVtYmVyKG9iai54KSA8PSBhcnRXaWR0aCAqIDAuMDVcbiAgICAmJiBOdW1iZXIob2JqLnkpIDw9IGFydEhlaWdodCAqIDAuMDVcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1lYXN1cmVEcmFmdFRleHQoXG4gIHRleHQ6IHN0cmluZyxcbiAgZm9udFNpemUgPSA0OCxcbiAgZm9udEZhbWlseT86IHN0cmluZyxcbik6IHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfSB7XG4gIGNvbnN0IGxpbmVzID0gU3RyaW5nKHRleHQgfHwgJ1RleHQnKS5zcGxpdCgnXFxuJyk7XG4gIGNvbnN0IHNpemUgPSBNYXRoLm1heCgxMiwgTnVtYmVyKGZvbnRTaXplKSB8fCA0OCk7XG4gIGxldCB3aWR0aCA9IDA7XG4gIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgaWYgKGN0eCkge1xuICAgICAgY3R4LmZvbnQgPSBgJHtzaXplfXB4ICR7Y3NzRm9udEZhbWlseShmb250RmFtaWx5KX1gO1xuICAgICAgd2lkdGggPSBNYXRoLm1heCguLi5saW5lcy5tYXAoKGxpbmUpID0+IGN0eC5tZWFzdXJlVGV4dChsaW5lIHx8ICcgJykud2lkdGgpLCAwKTtcbiAgICB9XG4gIH1cbiAgaWYgKCEod2lkdGggPiAwKSkge1xuICAgIHdpZHRoID0gTWF0aC5tYXgoLi4ubGluZXMubWFwKChsaW5lKSA9PiAobGluZSB8fCAnICcpLmxlbmd0aCksIDEpICogc2l6ZSAqIDAuNjI7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogTWF0aC5jZWlsKHdpZHRoICsgc2l6ZSAqIDAuMTYpLFxuICAgIGhlaWdodDogTWF0aC5jZWlsKE1hdGgubWF4KDEsIGxpbmVzLmxlbmd0aCkgKiBzaXplICogMS4xNSksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXRUZXh0Qm94KFxuICBvYmo6IFBpY2s8RHJhZnRDYW52YXNPYmplY3QsICd4JyB8ICd5JyB8ICd3aWR0aCcgfCAnaGVpZ2h0JyB8ICd0ZXh0JyB8ICdmb250U2l6ZScgfCAnZm9udEZhbWlseSc+LFxuKTogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfSB7XG4gIGNvbnN0IG1lYXN1cmVkID0gbWVhc3VyZURyYWZ0VGV4dChvYmoudGV4dCB8fCAnVGV4dCcsIG9iai5mb250U2l6ZSwgb2JqLmZvbnRGYW1pbHkpO1xuICBjb25zdCB3aWR0aCA9IE1hdGgubWF4KDI0LCBtZWFzdXJlZC53aWR0aCk7XG4gIGNvbnN0IGhlaWdodCA9IE1hdGgubWF4KDIwLCBtZWFzdXJlZC5oZWlnaHQpO1xuICBjb25zdCBwcmV2VyA9IE51bWJlcihvYmoud2lkdGgpID4gMCA/IE51bWJlcihvYmoud2lkdGgpIDogd2lkdGg7XG4gIGNvbnN0IHByZXZIID0gTnVtYmVyKG9iai5oZWlnaHQpID4gMCA/IE51bWJlcihvYmouaGVpZ2h0KSA6IGhlaWdodDtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeDogKE51bWJlcihvYmoueCkgfHwgMCkgKyAocHJldlcgLSB3aWR0aCkgLyAyLFxuICAgIHk6IChOdW1iZXIob2JqLnkpIHx8IDApICsgKHByZXZIIC0gaGVpZ2h0KSAvIDIsXG4gIH07XG59XG5cbmZ1bmN0aW9uIHBsYWNlbWVudEJveGVzKFxuICByb2xlOiBEcmFmdEFydHdvcmtSb2xlLFxuICBraW5kOiBEcmFmdENhbnZhc09iamVjdFR5cGUsXG4gIHRlbXBsYXRlOiBhbnksXG4pOiBudW1iZXJbXVtdIHtcbiAgaWYgKHJvbGUgPT09ICdib2R5X2NvbG91cl9maWxsJyB8fCBraW5kID09PSAncmVjdCcpIHtcbiAgICBjb25zdCBib2R5ID0gcmVnaW9uc0ZvclJvbGUodGVtcGxhdGU/LmN1c3RvbWlzYXRpb25NYXAsICdib2R5X2NvbG91cl9maWxsJyk7XG4gICAgaWYgKGJvZHkubGVuZ3RoKSByZXR1cm4gYm9keTtcbiAgICBjb25zdCBwcmludCA9IHJlZ2lvbnNGb3JSb2xlKHRlbXBsYXRlPy5jdXN0b21pc2F0aW9uTWFwLCAncHJpbnRfYXJlYScpO1xuICAgIGlmIChwcmludC5sZW5ndGgpIHJldHVybiBwcmludDtcbiAgICByZXR1cm4gW1swLCAwLCAxLCAxXV07XG4gIH1cbiAgaWYgKGtpbmQgPT09ICd0ZXh0Jykge1xuICAgIGNvbnN0IHBsYWNlaG9sZGVycyA9IHJlZ2lvbnNGb3JSb2xlKHRlbXBsYXRlPy5jdXN0b21pc2F0aW9uTWFwLCAndGV4dF9wbGFjZWhvbGRlcicpO1xuICAgIGlmIChwbGFjZWhvbGRlcnMubGVuZ3RoKSByZXR1cm4gcGxhY2Vob2xkZXJzO1xuICAgIHJldHVybiByZWdpb25zRm9yUm9sZSh0ZW1wbGF0ZT8uY3VzdG9taXNhdGlvbk1hcCwgJ3ByaW50X2FyZWEnKTtcbiAgfVxuICByZXR1cm4gcmVnaW9uc0ZvclJvbGUodGVtcGxhdGU/LmN1c3RvbWlzYXRpb25NYXAsICdwcmludF9hcmVhJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0UGxhY2VtZW50KFxuICBraW5kOiBEcmFmdENhbnZhc09iamVjdFR5cGUsXG4gIGluZGV4OiBudW1iZXIsXG4gIGFydFdpZHRoOiBudW1iZXIsXG4gIGFydEhlaWdodDogbnVtYmVyLFxuKTogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfSB7XG4gIGNvbnN0IHBhZCA9IE1hdGgubWF4KDI0LCBhcnRXaWR0aCAqIDAuMDQpO1xuICBpZiAoa2luZCA9PT0gJ2ltYWdlJykge1xuICAgIHJldHVybiB7XG4gICAgICB4OiBhcnRXaWR0aCAqIDAuMixcbiAgICAgIHk6IGFydEhlaWdodCAqIDAuMixcbiAgICAgIHdpZHRoOiBhcnRXaWR0aCAqIDAuNixcbiAgICAgIGhlaWdodDogYXJ0SGVpZ2h0ICogMC42LFxuICAgIH07XG4gIH1cbiAgaWYgKGtpbmQgPT09ICdyZWN0Jykge1xuICAgIHJldHVybiB7IHg6IDAsIHk6IDAsIHdpZHRoOiBhcnRXaWR0aCwgaGVpZ2h0OiBhcnRIZWlnaHQgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHg6IHBhZCxcbiAgICB5OiBwYWQgKyBpbmRleCAqIE1hdGgubWF4KDY0LCBhcnRIZWlnaHQgKiAwLjA4KSxcbiAgICB3aWR0aDogYXJ0V2lkdGggLSBwYWQgKiAyLFxuICAgIGhlaWdodDogTWF0aC5tYXgoNTYsIGFydEhlaWdodCAqIDAuMDcpLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlT2JqZWN0SWQoKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBvYmotJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIsIDgpfWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWVkT3JTeW5jQ2FudmFzKFxuICBleGlzdGluZzogRHJhZnRDYW52YXNTdGF0ZSB8IG51bGwgfCB1bmRlZmluZWQsXG4gIHRlbXBsYXRlOiBhbnksXG4gIHZhcmlhdGlvbnM6IGFueVtdLFxuKTogRHJhZnRDYW52YXNTdGF0ZSB7XG4gIGNvbnN0IHdpZHRoID0gTnVtYmVyKHRlbXBsYXRlPy53aWR0aCkgfHwgREVGQVVMVF9BUlRCT0FSRC53aWR0aDtcbiAgY29uc3QgaGVpZ2h0ID0gTnVtYmVyKHRlbXBsYXRlPy5oZWlnaHQpIHx8IERFRkFVTFRfQVJUQk9BUkQuaGVpZ2h0O1xuICBjb25zdCBvYmplY3RzOiBEcmFmdENhbnZhc09iamVjdFtdID0gKGV4aXN0aW5nPy5vYmplY3RzIHx8IFtdKS5tYXAoKG9iaikgPT4gKFxuICAgIG9iai50eXBlID09PSAndGV4dCcgPyB7IC4uLm9iaiwgLi4uZml0VGV4dEJveChvYmopIH0gOiB7IC4uLm9iaiB9XG4gICkpO1xuICBjb25zdCBkZXRhY2hlZCA9IG5ldyBTZXQoZXhpc3Rpbmc/LmRldGFjaGVkRmllbGRJZHMgfHwgW10pO1xuICBjb25zdCBsaW5rZWQgPSBsaW5rZWRWYXJpYXRpb25zRm9yVGVtcGxhdGUodGVtcGxhdGUsIHZhcmlhdGlvbnMpO1xuICBjb25zdCBsaW5rZWRGaWVsZHMgPSBsaW5rZWQubWFwKCh2YXJpYXRpb24pID0+IHZhcmlhdGlvbj8udmFyaWF0aW9uRmllbGQpLmZpbHRlcihCb29sZWFuKTtcbiAgY29uc3QgdXNlZFJlZ2lvbnM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fTtcblxuICBmb3IgKGNvbnN0IHZhcmlhdGlvbiBvZiBsaW5rZWQpIHtcbiAgICBjb25zdCBmaWVsZCA9IHZhcmlhdGlvbj8udmFyaWF0aW9uRmllbGQ7XG4gICAgaWYgKHJlc29sdmVBcnR3b3JrUm9sZShmaWVsZCwgdGVtcGxhdGUsIGxpbmtlZEZpZWxkcykgIT09ICd0ZXh0X2ZpbGwnKSBjb250aW51ZTtcbiAgICBjb25zdCBpbmRleCA9IG9iamVjdHMuZmluZEluZGV4KFxuICAgICAgKG9iaikgPT4gb2JqLm1lcmNoaUZpZWxkSWQgPT09IGZpZWxkPy5pZCAmJiBvYmoudHlwZSA9PT0gJ3JlY3QnXG4gICAgKTtcbiAgICBpZiAoaW5kZXggPj0gMCkgb2JqZWN0cy5zcGxpY2UoaW5kZXgsIDEpO1xuICB9XG5cbiAgY29uc3QgYXBwbHlDb2xvdXJUb1RleHQgPSAodGFyZ2V0RmllbGRJZDogbnVtYmVyIHwgdW5kZWZpbmVkLCBmaWxsPzogc3RyaW5nLCBjb2xvdXJGaWVsZElkPzogbnVtYmVyKSA9PiB7XG4gICAgaWYgKCFmaWxsIHx8IHRhcmdldEZpZWxkSWQgPT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IHRleHRPYmogPSBvYmplY3RzLmZpbmQoKG9iaikgPT4gb2JqLm1lcmNoaUZpZWxkSWQgPT09IHRhcmdldEZpZWxkSWQgJiYgb2JqLnR5cGUgPT09ICd0ZXh0Jyk7XG4gICAgaWYgKCF0ZXh0T2JqKSByZXR1cm4gZmFsc2U7XG4gICAgdGV4dE9iai5maWxsID0gZmlsbDtcbiAgICB0ZXh0T2JqLmNvbG91ckZpZWxkSWQgPSBjb2xvdXJGaWVsZElkO1xuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IHBsYWNlT2JqZWN0ID0gKFxuICAgIGtpbmQ6IERyYWZ0Q2FudmFzT2JqZWN0VHlwZSxcbiAgICByb2xlOiBEcmFmdEFydHdvcmtSb2xlLFxuICAgIGZpZWxkOiBhbnksXG4gICAgZmllbGRJZDogbnVtYmVyLFxuICAgIGNvbnRlbnQ6IFJldHVyblR5cGU8dHlwZW9mIHZhcmlhdGlvbkNhbnZhc0NvbnRlbnQ+LFxuICApID0+IHtcbiAgICBjb25zdCBib3hlcyA9IHBsYWNlbWVudEJveGVzKHJvbGUsIGtpbmQsIHRlbXBsYXRlKTtcbiAgICBjb25zdCBrZXkgPSBgJHtyb2xlfToke2tpbmR9YDtcbiAgICBjb25zdCByZWdpb25JbmRleCA9IHVzZWRSZWdpb25zW2tleV0gfHwgMDtcbiAgICB1c2VkUmVnaW9uc1trZXldID0gcmVnaW9uSW5kZXggKyAxO1xuICAgIGNvbnN0IGJveCA9IGJveGVzW3JlZ2lvbkluZGV4XSB8fCBib3hlc1swXTtcbiAgICBjb25zdCBwbGFjZSA9IGJveFxuICAgICAgPyBiYm94VG9QaXhlbHMoYm94LCB3aWR0aCwgaGVpZ2h0KVxuICAgICAgOiBkZWZhdWx0UGxhY2VtZW50KGtpbmQsIG9iamVjdHMubGVuZ3RoLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICBjb25zdCBsb2NrQXNwZWN0UmF0aW8gPSBraW5kID09PSAnaW1hZ2UnID8gc2hvdWxkTG9ja0ltYWdlQXNwZWN0KGZpZWxkLCB0ZW1wbGF0ZSkgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgbmV4dDogRHJhZnRDYW52YXNPYmplY3QgPSB7XG4gICAgICBpZDogY3JlYXRlT2JqZWN0SWQoKSxcbiAgICAgIHR5cGU6IGtpbmQsXG4gICAgICBtZXJjaGlGaWVsZElkOiBmaWVsZElkLFxuICAgICAgYXJ0d29ya1JvbGU6IHJvbGUsXG4gICAgICBsb2NrZWQ6IGtpbmQgPT09ICdyZWN0JyxcbiAgICAgIHJvdGF0aW9uOiAwLFxuICAgICAgc2NhbGVYOiAxLFxuICAgICAgc2NhbGVZOiAxLFxuICAgICAgbG9ja0FzcGVjdFJhdGlvLFxuICAgICAgLi4ucGxhY2UsXG4gICAgICB0ZXh0OiBjb250ZW50LnRleHQsXG4gICAgICBzcmM6IGNvbnRlbnQuc3JjLFxuICAgICAgZmlsbDogY29udGVudC5maWxsIHx8IChraW5kID09PSAndGV4dCcgPyAnIzExMTExMScgOiB1bmRlZmluZWQpLFxuICAgICAgZm9udEZhbWlseToga2luZCA9PT0gJ3RleHQnID8gREVGQVVMVF9EUkFGVF9GT05UIDogdW5kZWZpbmVkLFxuICAgICAgZm9udFNpemU6IE1hdGgubWF4KDI4LCBNYXRoLnJvdW5kKHBsYWNlLmhlaWdodCAqIDAuNjIpKSxcbiAgICB9O1xuICAgIGlmIChraW5kID09PSAndGV4dCcpIE9iamVjdC5hc3NpZ24obmV4dCwgZml0VGV4dEJveChuZXh0KSk7XG4gICAgaWYgKGtpbmQgPT09ICdyZWN0Jykgb2JqZWN0cy51bnNoaWZ0KG5leHQpO1xuICAgIGVsc2Ugb2JqZWN0cy5wdXNoKG5leHQpO1xuICB9O1xuXG4gIGZvciAoY29uc3QgdmFyaWF0aW9uIG9mIGxpbmtlZCkge1xuICAgIGNvbnN0IGZpZWxkID0gdmFyaWF0aW9uPy52YXJpYXRpb25GaWVsZDtcbiAgICBjb25zdCBmaWVsZElkID0gZmllbGQ/LmlkO1xuICAgIGNvbnN0IGNvbnRlbnQgPSB2YXJpYXRpb25DYW52YXNDb250ZW50KHZhcmlhdGlvbik7XG4gICAgaWYgKCFjb250ZW50LmtpbmQgfHwgZmllbGRJZCA9PSBudWxsIHx8IGRldGFjaGVkLmhhcyhmaWVsZElkKSkgY29udGludWU7XG4gICAgY29uc3Qgcm9sZSA9IHJlc29sdmVBcnR3b3JrUm9sZShmaWVsZCwgdGVtcGxhdGUsIGxpbmtlZEZpZWxkcyk7XG4gICAgaWYgKHJvbGUgPT09ICd0ZXh0X2ZpbGwnKSBjb250aW51ZTtcblxuICAgIGNvbnN0IGZvdW5kID0gb2JqZWN0cy5maW5kKChvYmopID0+IG9iai5tZXJjaGlGaWVsZElkID09PSBmaWVsZElkKTtcbiAgICBpZiAoZm91bmQpIHtcbiAgICAgIGlmIChjb250ZW50LmtpbmQgPT09ICd0ZXh0JyAmJiBjb250ZW50LnRleHQgIT0gbnVsbCkge1xuICAgICAgICBmb3VuZC50ZXh0ID0gY29udGVudC50ZXh0O1xuICAgICAgICBPYmplY3QuYXNzaWduKGZvdW5kLCBmaXRUZXh0Qm94KGZvdW5kKSk7XG4gICAgICB9XG4gICAgICBpZiAoY29udGVudC5raW5kID09PSAnaW1hZ2UnICYmIGNvbnRlbnQuc3JjKSBmb3VuZC5zcmMgPSBjb250ZW50LnNyYztcbiAgICAgIGlmIChjb250ZW50LmtpbmQgPT09ICdyZWN0JyAmJiBjb250ZW50LmZpbGwpIGZvdW5kLmZpbGwgPSBjb250ZW50LmZpbGw7XG4gICAgICBpZiAoZm91bmQudHlwZSA9PT0gJ2ltYWdlJykge1xuICAgICAgICBmb3VuZC5sb2NrQXNwZWN0UmF0aW8gPSBzaG91bGRMb2NrSW1hZ2VBc3BlY3QoZmllbGQsIHRlbXBsYXRlKTtcbiAgICAgIH1cbiAgICAgIGlmIChmb3VuZC50eXBlID09PSAncmVjdCcpIHtcbiAgICAgICAgZm91bmQubG9ja2VkID0gdHJ1ZTtcbiAgICAgICAgZm91bmQuYXJ0d29ya1JvbGUgPSByb2xlO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGNvbnRlbnQua2luZCA9PT0gJ3RleHQnICYmICFjb250ZW50LnRleHQpIGNvbnRpbnVlO1xuICAgIGlmIChjb250ZW50LmtpbmQgPT09ICdpbWFnZScgJiYgIWNvbnRlbnQuc3JjKSBjb250aW51ZTtcbiAgICBpZiAoY29udGVudC5raW5kID09PSAncmVjdCcgJiYgIWNvbnRlbnQuZmlsbCkgY29udGludWU7XG4gICAgcGxhY2VPYmplY3QoY29udGVudC5raW5kLCByb2xlLCBmaWVsZCwgZmllbGRJZCwgY29udGVudCk7XG4gIH1cblxuICBmb3IgKGNvbnN0IHZhcmlhdGlvbiBvZiBsaW5rZWQpIHtcbiAgICBjb25zdCBmaWVsZCA9IHZhcmlhdGlvbj8udmFyaWF0aW9uRmllbGQ7XG4gICAgY29uc3QgZmllbGRJZCA9IGZpZWxkPy5pZDtcbiAgICBjb25zdCBjb250ZW50ID0gdmFyaWF0aW9uQ2FudmFzQ29udGVudCh2YXJpYXRpb24pO1xuICAgIGlmIChmaWVsZElkID09IG51bGwgfHwgZGV0YWNoZWQuaGFzKGZpZWxkSWQpIHx8ICFjb250ZW50LmZpbGwpIGNvbnRpbnVlO1xuICAgIGNvbnN0IHJvbGUgPSByZXNvbHZlQXJ0d29ya1JvbGUoZmllbGQsIHRlbXBsYXRlLCBsaW5rZWRGaWVsZHMpO1xuICAgIGlmIChyb2xlICE9PSAndGV4dF9maWxsJykgY29udGludWU7XG4gICAgY29uc3QgdGFyZ2V0SWQgPSBpbmZlclRleHRUYXJnZXRGaWVsZElkKGZpZWxkLCB0ZW1wbGF0ZSwgbGlua2VkRmllbGRzKTtcbiAgICBhcHBseUNvbG91clRvVGV4dCh0YXJnZXRJZCwgY29udGVudC5maWxsLCBmaWVsZElkKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIG9iamVjdHMsXG4gICAgZGV0YWNoZWRGaWVsZElkczogQXJyYXkuZnJvbShkZXRhY2hlZCksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXRhY2hGaWVsZChcbiAgc3RhdGU6IERyYWZ0Q2FudmFzU3RhdGUsXG4gIG9iamVjdElkOiBzdHJpbmcsXG4pOiBEcmFmdENhbnZhc1N0YXRlIHtcbiAgY29uc3QgdGFyZ2V0ID0gc3RhdGUub2JqZWN0cy5maW5kKChvYmopID0+IG9iai5pZCA9PT0gb2JqZWN0SWQpO1xuICBjb25zdCBkZXRhY2hlZEZpZWxkSWRzID0gWy4uLihzdGF0ZS5kZXRhY2hlZEZpZWxkSWRzIHx8IFtdKV07XG4gIGlmICh0YXJnZXQ/Lm1lcmNoaUZpZWxkSWQgIT0gbnVsbCAmJiAhZGV0YWNoZWRGaWVsZElkcy5pbmNsdWRlcyh0YXJnZXQubWVyY2hpRmllbGRJZCkpIHtcbiAgICBkZXRhY2hlZEZpZWxkSWRzLnB1c2godGFyZ2V0Lm1lcmNoaUZpZWxkSWQpO1xuICB9XG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgb2JqZWN0czogc3RhdGUub2JqZWN0cy5maWx0ZXIoKG9iaikgPT4gb2JqLmlkICE9PSBvYmplY3RJZCksXG4gICAgZGV0YWNoZWRGaWVsZElkcyxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByaW50QXJlYUd1aWRlcyh0ZW1wbGF0ZTogYW55KTogQXJyYXk8e1xuICB4OiBudW1iZXI7XG4gIHk6IG51bWJlcjtcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG59PiB7XG4gIGNvbnN0IHdpZHRoID0gTnVtYmVyKHRlbXBsYXRlPy53aWR0aCkgfHwgREVGQVVMVF9BUlRCT0FSRC53aWR0aDtcbiAgY29uc3QgaGVpZ2h0ID0gTnVtYmVyKHRlbXBsYXRlPy5oZWlnaHQpIHx8IERFRkFVTFRfQVJUQk9BUkQuaGVpZ2h0O1xuICByZXR1cm4gcmVnaW9uc0ZvclJvbGUodGVtcGxhdGU/LmN1c3RvbWlzYXRpb25NYXAsICdwcmludF9hcmVhJykubWFwKChiYm94KSA9PlxuICAgIGJib3hUb1BpeGVscyhiYm94LCB3aWR0aCwgaGVpZ2h0KVxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLFNBQ0VBLGlCQUFpQixFQUNqQkMsZ0JBQWdC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
@@ -0,0 +1,6 @@
1
+ import { PANTONE_COLOURS, PantoneColour } from './pantoneColours.data';
2
+ export type { PantoneColour };
3
+ export { PANTONE_COLOURS };
4
+ export declare function normalisePantoneCode(value?: string | null): string | null;
5
+ export declare function pantoneByCode(value?: string | null): PantoneColour | null;
6
+ export declare function searchPantoneColours(query: string, limit?: number): PantoneColour[];
@@ -0,0 +1,6 @@
1
+ export interface PantoneColour {
2
+ code: string;
3
+ hex: string;
4
+ book: 'coated' | 'uncoated' | 'metallic' | 'pastel';
5
+ }
6
+ export declare const PANTONE_COLOURS: PantoneColour[];