@colijnit/configurator 12.0.13 → 12.0.15

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.
@@ -159,11 +159,15 @@ export class VariationUtils {
159
159
  repeaty: index.repeat.repeaty
160
160
  };
161
161
  }
162
- // variationSettings.settings =
163
- // await VariationUtils.LoadFileContentFromZip(zipContent.files['repeat.json'], 'repeat.json', false) || {};
164
162
  variationSettings.metalness = index.metalness;
165
163
  variationSettings.roughness = index.roughness;
166
- variationSettings.sheen = index.sheen;
164
+ if (index.sheen && typeof index.sheen === 'object') {
165
+ variationSettings.sheen = 1;
166
+ variationSettings.sheenColor = new THREE.Color(index.sheen.r, index.sheen.g, index.sheen.b);
167
+ }
168
+ else {
169
+ variationSettings.sheen = index.sheen;
170
+ }
167
171
  if (index.sheenColor) {
168
172
  variationSettings.sheenColor = new THREE.Color(index.sheenColor.r, index.sheenColor.g, index.sheenColor.b);
169
173
  }
@@ -349,4 +353,4 @@ export class VariationUtils {
349
353
  }
350
354
  }
351
355
  VariationUtils.MaterialCache = new Map();
352
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWF0aW9uLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL3ZhcmlhdGlvbi11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsYUFBYTtBQUNiLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUkxQixXQUFXO0FBQ1gsTUFBTSxPQUFPLGNBQWM7SUFHbEIsTUFBTSxDQUFDLFVBQVU7UUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU0sTUFBTSxDQUFPLGFBQWEsQ0FBQyxTQUFpQixFQUFFLFFBQWdCOztZQUNuRSxPQUFPLElBQUksT0FBTyxDQUFDLENBQU8sT0FBaUIsRUFBRSxNQUFnQixFQUFFLEVBQUU7Z0JBQy9ELElBQUksQ0FBQyxRQUFRLEVBQUU7b0JBQ2IsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNmO2dCQUNELElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ2xDLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUN2QztnQkFDRCxNQUFNLEVBQUUsR0FBVyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZFLElBQUk7b0JBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7d0JBQzVCLFNBQVMsSUFBSSxHQUFHLENBQUM7cUJBQ2xCO29CQUNELElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLEVBQUU7d0JBQy9DLE9BQU8sQ0FBQyxLQUFL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USxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JHLFFBQVEsR0FBRyxFQUFFO1lBQ1gsS0FBSyxLQUFLLENBQUM7WUFDWCxLQUFLLE1BQU07Z0JBQ1QsT0FBTyxNQUFNLENBQUM7WUFDaEIsS0FBSyxLQUFLO2dCQUNSLE9BQU8sS0FBSyxDQUFDO1lBQ2YsS0FBSyxLQUFLO2dCQUNSLE9BQU8sS0FBSyxDQUFDO1lBQ2Y7Z0JBQ0UsT0FBTyxNQUFNLENBQUM7U0FDakI7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ1YsTUFBTSxDQUFPLGFBQWEsQ0FBQyxJQUFJOztZQUNyQyxJQUFJO2dCQUNGLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQzFCLE9BQU8sTUFBTSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3BDO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1YsT0FBTyxJQUFJLENBQUM7YUFDYjtRQUNILENBQUM7S0FBQTs7QUF0VWMsNEJBQWEsR0FBcUIsSUFBSSxHQUFHLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFRIUkVFIGZyb20gXCJ0aHJlZVwiO1xyXG5pbXBvcnQge1ZhcmlhdGlvblNldHRpbmdzfSBmcm9tIFwiLi4vbW9kZWwvdmFyaWF0aW9uLXNldHRpbmdzXCI7XHJcbi8vIEB0cy1pZ25vcmVcclxuaW1wb3J0IEpTWmlwIGZyb20gXCJqc3ppcFwiO1xyXG5pbXBvcnQge0dMVEYsIEdMVEZMb2FkZXJ9IGZyb20gJ3RocmVlL2V4YW1wbGVzL2pzbS9sb2FkZXJzL0dMVEZMb2FkZXInO1xyXG5pbXBvcnQge01lc2gsIE9iamVjdDNEfSBmcm9tICd0aHJlZSc7XHJcblxyXG4vLyBAZHluYW1pY1xyXG5leHBvcnQgY2xhc3MgVmFyaWF0aW9uVXRpbHMge1xyXG4gIHByaXZhdGUgc3RhdGljIE1hdGVyaWFsQ2FjaGU6IE1hcDxzdHJpbmcsIGFueT4gPSBuZXcgTWFwKCk7XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgQ2xlYXJDYWNoZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuTWF0ZXJpYWxDYWNoZS5jbGVhcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBhc3luYyBMb2FkVmFyaWF0aW9uKGFzc2V0UGF0aDogc3RyaW5nLCBmaWxlTmFtZTogc3RyaW5nKTogUHJvbWlzZTxWYXJpYXRpb25TZXR0aW5ncz4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlOiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xyXG4gICAgICBpZiAoIWZpbGVOYW1lKSB7XHJcbiAgICAgICAgcmVzb2x2ZShudWxsKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZmlsZU5hbWUuaW5kZXhPZignaW9uZTNkJykgPCAwKSB7XHJcbiAgICAgICAgZmlsZU5hbWUgPSBmaWxlTmFtZS5jb25jYXQoJy5pb25lM2QnKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBpZDogc3RyaW5nID0gZmlsZU5hbWUuc3Vic3RyKDAsIGZpbGVOYW1lLmxhc3RJbmRleE9mKCcuaW9uZTNkJykpO1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGlmICghYXNzZXRQYXRoLmVuZHNXaXRoKCcvJykpIHtcclxuICAgICAgICAgIGFzc2V0UGF0aCArPSAnLyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghd2luZG93Lmhhc093blByb3BlcnR5KCdkb3dubG9hZFZhcmlhdGlvbicpKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdkb3dubG9hZFZhcmlhdGlvbiBub3QgZGVmaW5lZCBpbiB3aW5kb3cgZ2xvYmFsJyk7XHJcbiAgICAgICAgICByZWplY3QoJ2Rvd25sb2FkVmFyaWF0aW9uIG5vdCBkZWZpbmVkIGluIHdpbmRvdyBnbG9iYWwnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGZpbGU7XHJcbiAgICAgICAgaWYgKHRoaXMuTWF0ZXJpYWxDYWNoZS5oYXMoaWQpKSB7XHJcbiAgICAgICAgICByZXNvbHZlKHRoaXMuTWF0ZXJpYWxDYWNoZS5nZXQoaWQpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZmlsZSA9IGF3YWl0ICh3aW5kb3cgYXMgYW55KS5kb3dubG9hZFZhcmlhdGlvbihgJHthc3NldFBhdGgucmVwbGFjZSgnaHR0cHM6Ly9jZG4xLmNvbGlqbi1pdC5ubC8nLCAnJyl9dmFyaWF0aW9uLyR7ZmlsZU5hbWV9YCk7XHJcbiAgICAgICAgICBjb25zdCBzZXR0aW5nczogVmFyaWF0aW9uU2V0dGluZ3MgPSBhd2FpdCBWYXJpYXRpb25VdGlscy5HZXRWYXJpYXRpb25TZXR0aW5nc0Zyb21GaWxlKGlkLCBmaWxlKTtcclxuICAgICAgICAgIHRoaXMuTWF0ZXJpYWxDYWNoZS5zZXQoaWQsIHNldHRpbmdzKTtcclxuICAgICAgICAgIHJlc29sdmUoc2V0dGluZ3MpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgY29uc3QgbXV0ZSA9IGVycjtcclxuICAgICAgICByZWplY3QoZXJyKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyBwdWJsaWMgc3RhdGljIEdldE1hdGVyaWFsRnJvbU5hbWUodmFyaWF0aW9uRm9sZGVyOiBzdHJpbmcsIG1hdGVyaWFsOiBhbnkpOiBQcm9taXNlPE1lc2hTdGFuZGFyZE1hdGVyaWFsPiB7XHJcbiAgLy8gICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uKSA9PiB7XHJcbiAgLy8gICAgIGlmICghbWF0ZXJpYWwpIHtcclxuICAvLyAgICAgICByZXNvbHZlKG51bGwpO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIGlmICh0aGlzLk1hdGVyaWFsQ2FjaGUuaGFzKG1hdGVyaWFsLm5hbWUpKSB7XHJcbiAgLy8gICAgICAgcmVzb2x2ZSh0aGlzLk1hdGVyaWFsQ2FjaGUuZ2V0KG1hdGVyaWFsLm5hbWUpLmNsb25lKCkpO1xyXG4gIC8vICAgICB9IGVsc2Uge1xyXG4gIC8vICAgICAgIFZhcmlhdGlvblV0aWxzLkxvYWRWYXJpYXRpb24odmFyaWF0aW9uRm9sZGVyLCBtYXRlcmlhbC5uYW1lLCBmYWxzZSkudGhlbigoc2V0dGluZ3M6IFZhcmlhdGlvblNldHRpbmdzKSA9PiB7XHJcbiAgLy8gICAgICAgICBpZiAoc2V0dGluZ3MpIHtcclxuICAvLyAgICAgICAgICAgQXNzZXRVdGlscy5DcmVhdGVNYXRlcmlhbEZyb21Bc3NldChzZXR0aW5ncykudGhlbigobWF0ZXJpYWxPYmo6IE1hdGVyaWFsKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgY29uc3QgbWF0ZXJpYWxQYXJhbXM6IE1lc2hTdGFuZGFyZE1hdGVyaWFsUGFyYW1ldGVycyA9IHt9O1xyXG4gIC8vICAgICAgICAgICAgIG1hdGVyaWFsUGFyYW1zLm5hbWUgPSBtYXRlcmlhbC5uYW1lO1xyXG4gIC8vICAgICAgICAgICAgIG1hdGVyaWFsUGFyYW1zLm1hcCA9IG1hdGVyaWFsT2JqLnRleHR1cmU7XHJcbiAgLy8gICAgICAgICAgICAgbWF0ZXJpYWxQYXJhbXMubm9ybWFsTWFwID0gbWF0ZXJpYWxPYmoubm9ybWFsO1xyXG4gIC8vICAgICAgICAgICAgIG1hdGVyaWFsUGFyYW1zLmFvTWFwID0gbWF0ZXJpYWxPYmouYW87XHJcbiAgLy8gICAgICAgICAgICAgbWF0ZXJpYWxQYXJhbXMucm91Z2huZXNzTWFwID0gbWF0ZXJpYWxPYmoucm91Z2huZXNzO1xyXG4gIC8vICAgICAgICAgICAgIG1hdGVyaWFsUGFyYW1zLm1ldGFsbmVzc01hcCA9IG1hdGVyaWFsT2JqLm1ldGFsbmVzcztcclxuICAvLyAgICAgICAgICAgICBtYXRlcmlhbFBhcmFtcy5yb3VnaG5lc3MgPSAxO1xyXG4gIC8vICAgICAgICAgICAgIG1hdGVyaWFsUGFyYW1zLm1ldGFsbmVzcyA9IDE7XHJcbiAgLy8gICAgICAgICAgICAgY29uc3QgcGJyTWF0OiBNZXNoU3RhbmRhcmRNYXRlcmlhbCA9IG5ldyBNZXNoU3RhbmRhcmRNYXRlcmlhbChtYXRlcmlhbFBhcmFtcyk7XHJcbiAgLy8gICAgICAgICAgICAgdGhpcy5NYXRlcmlhbENhY2hlLnNldChtYXRlcmlhbC5uYW1lLCBwYnJNYXQpO1xyXG4gIC8vICAgICAgICAgICAgIHJlc29sdmUocGJyTWF0LmNsb25lKCkpO1xyXG4gIC8vICAgICAgICAgICB9KTtcclxuICAvLyAgICAgICAgIH0gZWxzZSB7XHJcbiAgLy8gICAgICAgICAgIHJlc29sdmUobWF0ZXJpYWwpO1xyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH0pO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGFzeW5jIEdldFZhcmlhdGlvblNldHRpbmdzRnJvbUZpbGUoaWQ6IHN0cmluZywgY29tcHJlc3NlZEZpbGU6IGFueSk6IFByb21pc2U8VmFyaWF0aW9uU2V0dGluZ3M+IHtcclxuICAgIGlmICghY29tcHJlc3NlZEZpbGUpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCB6aXBDb250ZW50ID0gYXdhaXQgVmFyaWF0aW9uVXRpbHMuR2V0WmlwQ29udGVudChjb21wcmVzc2VkRmlsZSk7XHJcbiAgICBjb25zdCB2YXJpYXRpb25TZXR0aW5nczogVmFyaWF0aW9uU2V0dGluZ3MgPSBuZXcgVmFyaWF0aW9uU2V0dGluZ3MoKTtcclxuICAgIGxldCBpbmRleDtcclxuICAgIHZhcmlhdGlvblNldHRpbmdzLmlkID0gaWQ7XHJcblxyXG4gICAgaWYgKHppcENvbnRlbnQpIHtcclxuICAgICAgaWYgKHppcENvbnRlbnQuZmlsZXNbJ21hdGVyaWFsLmdsYiddKSB7XHJcbiAgICAgICAgY29uc3QgbWF0ZXJpYWw6IHN0cmluZyA9IGF3YWl0IHppcENvbnRlbnQuZmlsZXNbJ21hdGVyaWFsLmdsYiddLmFzeW5jKCdhcnJheWJ1ZmZlcicpO1xyXG4gICAgICAgIHZhcmlhdGlvblNldHRpbmdzLm1hdGVyaWFsID0gYXdhaXQgVmFyaWF0aW9uVXRpbHMuTG9hZE1hdGVyaWFsRnJvbUdsYihtYXRlcmlhbCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHppcENvbnRlbnQuZmlsZXNbJ2luZGV4Lmpzb24nXSkge1xyXG4gICAgICAgICAgY29uc3QgaW5kZXhGaWxlOiBzdHJpbmcgPSBhd2FpdCB6aXBDb250ZW50LmZpbGVzWydpbmRleC5qc29uJ10uYXN5bmMoJ3N0cmluZycpO1xyXG4gICAgICAgICAgaW5kZXggPSBKU09OLnBhcnNlKGluZGV4RmlsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpbmRleCkge1xyXG4gICAgICAgICAgYXdhaXQgVmFyaWF0aW9uVXRpbHMuQ3JlYXRlU2V0dGluZ3NCYXNlZE9uSW5kZXgoaW5kZXgsIHZhcmlhdGlvblNldHRpbmdzLCB6aXBDb250ZW50KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgYXdhaXQgVmFyaWF0aW9uVXRpbHMuQ3JlYXRlU2V0dGluZ3NCYXNlZE9uRmlsZU5hbWUodmFyaWF0aW9uU2V0dGluZ3MsIHppcENvbnRlbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhcmlhdGlvblNldHRpbmdzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgQ3JlYXRlU2V0dGluZ3NCYXNlZE9uSW5kZXgoaW5kZXg6IGFueSwgdmFyaWF0aW9uU2V0dGluZ3M6IFZhcmlhdGlvblNldHRpbmdzLCB6aXBDb250ZW50OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmIChpbmRleC5ub3JtYWxGaWxlKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLm5vcm1hbCA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkxvYWRGaWxlQ29udGVudEZyb21aaXAoemlwQ29udGVudC5maWxlc1tpbmRleC5ub3JtYWxGaWxlXSwgaW5kZXgubm9ybWFsRmlsZSk7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLm5vcm1hbEZpbGVuYW1lID0gaW5kZXgubm9ybWFsRmlsZTtcclxuICAgIH1cclxuICAgIGlmIChpbmRleC5kaWZmdXNlRmlsZSkge1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy50ZXh0dXJlID0gYXdhaXQgVmFyaWF0aW9uVXRpbHMuTG9hZEZpbGVDb250ZW50RnJvbVppcCh6aXBDb250ZW50LmZpbGVzW2luZGV4LmRpZmZ1c2VGaWxlXSwgaW5kZXguZGlmZnVzZUZpbGUpO1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy50ZXh0dXJlRmlsZW5hbWUgPSBpbmRleC5kaWZmdXNlRmlsZTtcclxuICAgIH1cclxuICAgIGlmIChpbmRleC5vcm1GaWxlKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLm9ybSA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkxvYWRGaWxlQ29udGVudEZyb21aaXAoemlwQ29udGVudC5maWxlc1tpbmRleC5vcm1GaWxlXSwgaW5kZXgub3JtRmlsZSk7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLm9ybUZpbGVuYW1lID0gaW5kZXgub3JtRmlsZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChpbmRleC5hb0ZpbGUpIHtcclxuICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5hbyA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkxvYWRGaWxlQ29udGVudEZyb21aaXAoemlwQ29udGVudC5maWxlc1tpbmRleC5hb0ZpbGVdLCBpbmRleC5hb0ZpbGUpO1xyXG4gICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmFvRmlsZW5hbWUgPSBpbmRleC5hb0ZpbGU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGluZGV4Lm1ldGFsbmVzc0ZpbGUpIHtcclxuICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5tZXRhbG5lc3MgPSBhd2FpdCBWYXJpYXRpb25VdGlscy5Mb2FkRmlsZUNvbnRlbnRGcm9tWmlwKHppcENvbnRlbnQuZmlsZXNbaW5kZXgubWV0YWxuZXNzRmlsZV0sIGluZGV4Lm1ldGFsbmVzc0ZpbGUpO1xyXG4gICAgICAgIHZhcmlhdGlvblNldHRpbmdzLm1ldGFsbmVzc0ZpbGVuYW1lID0gaW5kZXgubWV0YWxuZXNzRmlsZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaW5kZXgucm91Z2huZXNzRmlsZSkge1xyXG4gICAgICAgIHZhcmlhdGlvblNldHRpbmdzLnJvdWdobmVzcyA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkxvYWRGaWxlQ29udGVudEZyb21aaXAoemlwQ29udGVudC5maWxlc1tpbmRleC5yb3VnaG5lc3NGaWxlXSwgaW5kZXgucm91Z2huZXNzRmlsZSk7XHJcbiAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3Mucm91Z2huZXNzRmlsZW5hbWUgPSBpbmRleC5yb3VnaG5lc3NGaWxlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoaW5kZXguZGlzcGxhY2VtZW50RmlsZSkge1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5kaXNwbGFjZW1lbnQgPSBhd2FpdCBWYXJpYXRpb25VdGlscy5Mb2FkRmlsZUNvbnRlbnRGcm9tWmlwKHppcENvbnRlbnQuZmlsZXNbaW5kZXguZGlzcGxhY2VtZW50RmlsZV0sIGluZGV4LmRpc3BsYWNlbWVudEZpbGUpO1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5kaXNwbGFjZW1lbnRGaWxlbmFtZSA9IGluZGV4LmRpc3BsYWNlbWVudEZpbGU7XHJcbiAgICB9XHJcbiAgICBpZiAoaW5kZXguZW1pc3NpdmVGaWxlKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLmVtaXNzaXZlID0gYXdhaXQgVmFyaWF0aW9uVXRpbHMuTG9hZEZpbGVDb250ZW50RnJvbVppcCh6aXBDb250ZW50LmZpbGVzW2luZGV4LmVtaXNzaXZlRmlsZV0sIGluZGV4LmVtaXNzaXZlRmlsZSk7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLmVtaXNzaXZlRmlsZW5hbWUgPSBpbmRleC5lbWlzc2l2ZUZpbGU7XHJcbiAgICB9XHJcbiAgICBpZiAoaW5kZXguZW52TWFwRmlsZSkge1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5lbnZNYXAgPSBhd2FpdCBWYXJpYXRpb25VdGlscy5Mb2FkRmlsZUNvbnRlbnRGcm9tWmlwKHppcENvbnRlbnQuZmlsZXNbaW5kZXguZW52TWFwRmlsZV0sIGluZGV4LmVudk1hcEZpbGUpO1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5lbnZNYXBGaWxlbmFtZSA9IGluZGV4LmVudk1hcEZpbGU7XHJcbiAgICB9XHJcbiAgICBpZiAoaW5kZXguc2hlZW5Db2xvck1hcEZpbGUpIHtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3Muc2hlZW5Db2xvck1hcCA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkxvYWRGaWxlQ29udGVudEZyb21aaXAoemlwQ29udGVudC5maWxlc1tpbmRleC5zaGVlbkNvbG9yTWFwRmlsZV0sIGluZGV4LnNoZWVuQ29sb3JNYXBGaWxlKTtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3Muc2hlZW5Db2xvck1hcEZpbGVuYW1lID0gaW5kZXguc2hlZW5Db2xvck1hcEZpbGU7XHJcbiAgICB9XHJcbiAgICBpZiAoaW5kZXguc2hlZW5Sb3VnaG5lc3NNYXBGaWxlKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLnNoZWVuUm91Z2huZXNzTWFwID0gYXdhaXQgVmFyaWF0aW9uVXRpbHMuTG9hZEZpbGVDb250ZW50RnJvbVppcCh6aXBDb250ZW50LmZpbGVzW2luZGV4LnNoZWVuUm91Z2huZXNzTWFwRmlsZV0sIGluZGV4LnNoZWVuUm91Z2huZXNzTWFwRmlsZSk7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLnNoZWVuUm91Z2huZXNzTWFwRmlsZW5hbWUgPSBpbmRleC5zaGVlbkNvbG9yTWFwRmlsZTtcclxuICAgIH1cclxuICAgIGlmIChpbmRleC5yZXBlYXQpIHtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3Muc2V0dGluZ3MgPSB7XHJcbiAgICAgICAgcmVwZWF0eDogaW5kZXgucmVwZWF0LnJlcGVhdHgsXHJcbiAgICAgICAgcmVwZWF0eTogaW5kZXgucmVwZWF0LnJlcGVhdHlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gdmFyaWF0aW9uU2V0dGluZ3Muc2V0dGluZ3MgPVxyXG4gICAgLy8gICAgIGF3YWl0IFZhcmlhdGlvblV0aWxzLkxvYWRGaWxlQ29udGVudEZyb21aaXAoemlwQ29udGVudC5maWxlc1sncmVwZWF0Lmpzb24nXSwgJ3JlcGVhdC5qc29uJywgZmFsc2UpIHx8IHt9O1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3MubWV0YWxuZXNzID0gaW5kZXgubWV0YWxuZXNzO1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3Mucm91Z2huZXNzID0gaW5kZXgucm91Z2huZXNzO1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3Muc2hlZW4gPSBpbmRleC5zaGVlbjtcclxuICAgIGlmIChpbmRleC5zaGVlbkNvbG9yKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLnNoZWVuQ29sb3IgPSBuZXcgVEhSRUUuQ29sb3IoaW5kZXguc2hlZW5Db2xvci5yLCBpbmRleC5zaGVlbkNvbG9yLmcsIGluZGV4LnNoZWVuQ29sb3IuYik7XHJcbiAgICB9XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy5zaGVlblJvdWdobmVzcyA9IGluZGV4LnNoZWVuUm91Z2huZXNzO1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3MuZW52TWFwSW50ZW5zaXR5ID0gaW5kZXguZW52TWFwSW50ZW5zaXR5O1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3MudHJhbnNwYXJlbnQgPSBpbmRleC50cmFuc3BhcmVudDtcclxuICAgIHZhcmlhdGlvblNldHRpbmdzLm9wYWNpdHkgPSBpbmRleC5vcGFjaXR5O1xyXG4gICAgaWYgKGluZGV4LmVtaXNzaXZlVmFsdWUpIHtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3MuZW1pc3NpdmVWYWx1ZSA9IG5ldyBUSFJFRS5Db2xvcihpbmRleC5lbWlzc2l2ZVZhbHVlLnIsIGluZGV4LmVtaXNzaXZlVmFsdWUuZywgaW5kZXguZW1pc3NpdmVWYWx1ZS5iKTtcclxuICAgIH1cclxuICAgIHZhcmlhdGlvblNldHRpbmdzLmVtaXNzaXZlSW50ZW5zaXR5ID0gaW5kZXguZW1pc3NpdmVJbnRlbnNpdHk7XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy5yZWZsZWN0aXZpdHkgPSBpbmRleC5yZWZsZWN0aXZpdHk7XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy5kaXNwbGFjZW1lbnRWYWx1ZSA9IGluZGV4LmRpc3BsYWNlbWVudFZhbHVlO1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3Muc2lkZSA9IGluZGV4LnNpZGU7XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy50cmFuc3BhcmVuY3kgPSBpbmRleC50cmFuc3BhcmVuY3k7XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy50cmFuc21pc3Npb24gPSBpbmRleC50cmFuc21pc3Npb247XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBhc3luYyBDcmVhdGVTZXR0aW5nc0Jhc2VkT25GaWxlTmFtZSh2YXJpYXRpb25TZXR0aW5nczogVmFyaWF0aW9uU2V0dGluZ3MsIHppcENvbnRlbnQ6IGFueSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgYWxsTG9hZGVkOiBQcm9taXNlPFZhcmlhdGlvblNldHRpbmdzPltdID0gW107XHJcbiAgICBmb3IgKGNvbnN0IGZpbGVOYW1lIGluIHppcENvbnRlbnQuZmlsZXMpIHtcclxuICAgICAgaWYgKHppcENvbnRlbnQuZmlsZXMuaGFzT3duUHJvcGVydHkoZmlsZU5hbWUpKSB7XHJcbiAgICAgICAgY29uc3QgZmlsZTogYW55ID0gYXdhaXQgemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV07XHJcbiAgICAgICAgaWYgKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ25vcm1hbCcpID4gLTEgJiYgdGhpcy5GaWxlSXNJbWFnZShmaWxlLm5hbWUpKSB7XHJcbiAgICAgICAgICBhbGxMb2FkZWQucHVzaCh6aXBDb250ZW50LmZpbGVzW2ZpbGVOYW1lXS5hc3luYygnYmFzZTY0JykudGhlbigobm9ybWFsRmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLm5vcm1hbCA9IGBkYXRhOmltYWdlLyR7dGhpcy5HZXRCYXNlNjRGaWxlVHlwZShmaWxlLm5hbWUpfTtiYXNlNjQsJHtub3JtYWxGaWxlfWA7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLm5vcm1hbEZpbGVuYW1lID0gZmlsZU5hbWU7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWxlLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdhbycpID4gLTEgJiYgdGhpcy5GaWxlSXNJbWFnZShmaWxlLm5hbWUpKSB7XHJcbiAgICAgICAgICBhbGxMb2FkZWQucHVzaCh6aXBDb250ZW50LmZpbGVzW2ZpbGVOYW1lXS5hc3luYygnYmFzZTY0JykudGhlbigoYW9GaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MuYW8gPSBgZGF0YTppbWFnZS8ke3RoaXMuR2V0QmFzZTY0RmlsZVR5cGUoZmlsZS5uYW1lKX07YmFzZTY0LCR7YW9GaWxlfWA7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmFvRmlsZW5hbWUgPSBmaWxlTmFtZTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ21ldGFsbmVzcycpID4gLTEgJiYgdGhpcy5GaWxlSXNJbWFnZShmaWxlLm5hbWUpKSB7XHJcbiAgICAgICAgICBhbGxMb2FkZWQucHVzaCh6aXBDb250ZW50LmZpbGVzW2ZpbGVOYW1lXS5hc3luYygnYmFzZTY0JykudGhlbigobWV0YWxuZXNzRmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLm1ldGFsbmVzcyA9IGBkYXRhOmltYWdlLyR7dGhpcy5HZXRCYXNlNjRGaWxlVHlwZShmaWxlLm5hbWUpfTtiYXNlNjQsJHttZXRhbG5lc3NGaWxlfWA7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLm1ldGFsbmVzc0ZpbGVuYW1lID0gZmlsZU5hbWU7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWxlLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdyb3VnaG5lc3MnKSA+IC0xICYmIHRoaXMuRmlsZUlzSW1hZ2UoZmlsZS5uYW1lKSkge1xyXG4gICAgICAgICAgYWxsTG9hZGVkLnB1c2goemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV0uYXN5bmMoJ2Jhc2U2NCcpLnRoZW4oKHJvdWdobmVzc0ZpbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5yb3VnaG5lc3MgPSBgZGF0YTppbWFnZS8ke3RoaXMuR2V0QmFzZTY0RmlsZVR5cGUoZmlsZS5uYW1lKX07YmFzZTY0LCR7cm91Z2huZXNzRmlsZX1gO1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5yb3VnaG5lc3NGaWxlbmFtZSA9IGZpbGVOYW1lO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZignZGlmZnVzZScpID4gLTEgJiYgdGhpcy5GaWxlSXNJbWFnZShmaWxlLm5hbWUpKSB7XHJcbiAgICAgICAgICBhbGxMb2FkZWQucHVzaCh6aXBDb250ZW50LmZpbGVzW2ZpbGVOYW1lXS5hc3luYygnYmFzZTY0JykudGhlbigoZGlmZnVzZUZpbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy50ZXh0dXJlID0gYGRhdGE6aW1hZ2UvJHt0aGlzLkdldEJhc2U2NEZpbGVUeXBlKGZpbGUubmFtZSl9O2Jhc2U2NCwke2RpZmZ1c2VGaWxlfWA7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLnRleHR1cmVGaWxlbmFtZSA9IGZpbGVOYW1lO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZignZGlzcGxhY2VtZW50JykgPiAtMSAmJiB0aGlzLkZpbGVJc0ltYWdlKGZpbGUubmFtZSkpIHtcclxuICAgICAgICAgIGFsbExvYWRlZC5wdXNoKHppcENvbnRlbnQuZmlsZXNbZmlsZU5hbWVdLmFzeW5jKCdiYXNlNjQnKS50aGVuKChkaXNwbGFjZW1lbnRGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MuZGlzcGxhY2VtZW50ID0gYGRhdGE6aW1hZ2UvJHt0aGlzLkdldEJhc2U2NEZpbGVUeXBlKGZpbGUubmFtZSl9O2Jhc2U2NCwke2Rpc3BsYWNlbWVudEZpbGV9YDtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MuZGlzcGxhY2VtZW50RmlsZW5hbWUgPSBmaWxlTmFtZTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2VtaXNzaXZlJykgPiAtMSAmJiB0aGlzLkZpbGVJc0ltYWdlKGZpbGUubmFtZSkpIHtcclxuICAgICAgICAgIGFsbExvYWRlZC5wdXNoKHppcENvbnRlbnQuZmlsZXNbZmlsZU5hbWVdLmFzeW5jKCdiYXNlNjQnKS50aGVuKChlbWlzc2l2ZUZpbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5lbWlzc2l2ZSA9IGBkYXRhOmltYWdlLyR7dGhpcy5HZXRCYXNlNjRGaWxlVHlwZShmaWxlLm5hbWUpfTtiYXNlNjQsJHtlbWlzc2l2ZUZpbGV9YDtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MuZW1pc3NpdmVGaWxlbmFtZSA9IGZpbGVOYW1lO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZignZW52TWFwJykgPiAtMSAmJiB0aGlzLkZpbGVJc0ltYWdlKGZpbGUubmFtZSkpIHtcclxuICAgICAgICAgIGFsbExvYWRlZC5wdXNoKHppcENvbnRlbnQuZmlsZXNbZmlsZU5hbWVdLmFzeW5jKCdiYXNlNjQnKS50aGVuKChlbnZNYXBGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MuZW52TWFwID0gYGRhdGE6aW1hZ2UvJHt0aGlzLkdldEJhc2U2NEZpbGVUeXBlKGZpbGUubmFtZSl9O2Jhc2U2NCwke2Vudk1hcEZpbGV9YDtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MuZW52TWFwRmlsZW5hbWUgPSBmaWxlTmFtZTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ3NoZWVuQ29sb3JNYXAnKSA+IC0xICYmIHRoaXMuRmlsZUlzSW1hZ2UoZmlsZS5uYW1lKSkge1xyXG4gICAgICAgICAgYWxsTG9hZGVkLnB1c2goemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV0uYXN5bmMoJ2Jhc2U2NCcpLnRoZW4oKHNoZWVuQ29sb3JNYXBGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3Muc2hlZW5Db2xvck1hcCA9IGBkYXRhOmltYWdlLyR7dGhpcy5HZXRCYXNlNjRGaWxlVHlwZShmaWxlLm5hbWUpfTtiYXNlNjQsJHtzaGVlbkNvbG9yTWFwRmlsZX1gO1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5zaGVlbkNvbG9yTWFwRmlsZW5hbWUgPSBmaWxlTmFtZTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ3NoZWVuUm91Z2huZXNzTWFwJykgPiAtMSAmJiB0aGlzLkZpbGVJc0ltYWdlKGZpbGUubmFtZSkpIHtcclxuICAgICAgICAgIGFsbExvYWRlZC5wdXNoKHppcENvbnRlbnQuZmlsZXNbZmlsZU5hbWVdLmFzeW5jKCdiYXNlNjQnKS50aGVuKChzaGVlblJvdWdobmVzc01hcEZpbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5zaGVlblJvdWdobmVzc01hcCA9IGBkYXRhOmltYWdlLyR7dGhpcy5HZXRCYXNlNjRGaWxlVHlwZShmaWxlLm5hbWUpfTtiYXNlNjQsJHtzaGVlblJvdWdobmVzc01hcEZpbGV9YDtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3Muc2hlZW5Sb3VnaG5lc3NNYXBGaWxlbmFtZSA9IGZpbGVOYW1lO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmlsZS5uYW1lLmluZGV4T2YoJy5qcCcpID4gLTEpIHtcclxuICAgICAgICAgIGFsbExvYWRlZC5wdXNoKHppcENvbnRlbnQuZmlsZXNbZmlsZU5hbWVdLmFzeW5jKCdiYXNlNjQnKS50aGVuKCh0ZXh0dXJlRmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLnRleHR1cmUgPSAnZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwnICsgdGV4dHVyZUZpbGU7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLnRleHR1cmVGaWxlbmFtZSA9IGZpbGVOYW1lO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmlsZS5uYW1lLmluZGV4T2YoJy5qc29uJykgPiAtMSkge1xyXG4gICAgICAgICAgYWxsTG9hZGVkLnB1c2goemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV0uYXN5bmMoJ3N0cmluZycpLnRoZW4oKHNldHRpbmdzRmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNldHRpbmdzRmlsZU9iaiA9IEpTT04ucGFyc2Uoc2V0dGluZ3NGaWxlKTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gc2V0dGluZ3NGaWxlT2JqKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHNldHRpbmdzRmlsZU9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5zZXR0aW5nc1trZXldID0gc2V0dGluZ3NGaWxlT2JqW2tleV07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBhd2FpdCBQcm9taXNlLmFsbChhbGxMb2FkZWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgTG9hZE1hdGVyaWFsRnJvbUpzb24obWF0ZXJpYWw6IGFueSk6IFRIUkVFLk1hdGVyaWFsIHtcclxuICAgIGNvbnN0IGxvYWRlciA9IG5ldyBUSFJFRS5NYXRlcmlhbExvYWRlcigpO1xyXG4gICAgaWYgKG1hdGVyaWFsLnRleHR1cmVzKSB7XHJcbiAgICAgIGNvbnN0IHRleHR1cmVzOiB7fSA9IHt9O1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdGVyaWFsLnRleHR1cmVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdGV4dHVyZXNbbWF0ZXJpYWwudGV4dHVyZXNbaV0udXVpZF0gPSBtYXRlcmlhbC50ZXh0dXJlc1tpXTtcclxuICAgICAgfVxyXG4gICAgICBsb2FkZXIuc2V0VGV4dHVyZXModGV4dHVyZXMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxvYWRlci5wYXJzZShtYXRlcmlhbCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBMb2FkTWF0ZXJpYWxGcm9tR2xiKG1hdGVyaWFsOiBhbnkpOiBQcm9taXNlPFRIUkVFLk1hdGVyaWFsPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmU6IEZ1bmN0aW9uLCByZWplY3Q6IEZ1bmN0aW9uKSA9PiB7XHJcbiAgICAgIGlmICghd2luZG93Lmhhc093blByb3BlcnR5KCdsb2FkR0xURicpKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignbG9hZEdMVEYgbm90IGRlZmluZWQgaW4gd2luZG93IGdsb2JhbCcpO1xyXG4gICAgICAgIHJldHVybiByZWplY3QoKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBvYmo6IFRIUkVFLk9iamVjdDNEID0gYXdhaXQgKHdpbmRvdyBhcyBhbnkpLmxvYWRHTFRGKG1hdGVyaWFsLCBmYWxzZSk7XHJcbiAgICAgIGlmIChvYmopIHtcclxuICAgICAgICByZXR1cm4gcmVzb2x2ZSgob2JqLmNoaWxkcmVuWzBdIGFzIE1lc2gpLm1hdGVyaWFsKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBMb2FkRmlsZUNvbnRlbnRGcm9tWmlwKHppcDogYW55LCBmaWxlTmFtZTogc3RyaW5nLCBiYXNlNjQ6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24pID0+IHtcclxuICAgICAgaWYgKHppcCAmJiBmaWxlTmFtZSkge1xyXG4gICAgICAgIHppcC5hc3luYyhiYXNlNjQgPyAnYmFzZTY0JyA6ICdzdHJpbmcnKS50aGVuKChmaWxlQ29udGVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoYmFzZTY0KSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUoYGRhdGE6aW1hZ2UvJHt0aGlzLkdldEJhc2U2NEZpbGVUeXBlKGZpbGVOYW1lKX07YmFzZTY0LCR7ZmlsZUNvbnRlbnR9YCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXNvbHZlKGZpbGVDb250ZW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXNvbHZlKHVuZGVmaW5lZCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgRmlsZUlzSW1hZ2UoZmlsZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZXh0OiBzdHJpbmcgPSBmaWxlTmFtZS5zdWJzdHJpbmcoZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKSArIDEsIGZpbGVOYW1lLmxlbmd0aCkudG9Mb3dlckNhc2UoKTtcclxuICAgIHN3aXRjaCAoZXh0KSB7XHJcbiAgICAgIGNhc2UgJ2pwZyc6XHJcbiAgICAgIGNhc2UgJ2pwZWcnOlxyXG4gICAgICBjYXNlICdwbmcnOlxyXG4gICAgICBjYXNlICdibXAnOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIEdldEJhc2U2NEZpbGVUeXBlKGZpbGVOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZXh0OiBzdHJpbmcgPSBmaWxlTmFtZS5zdWJzdHJpbmcoZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKSArIDEsIGZpbGVOYW1lLmxlbmd0aCkudG9Mb3dlckNhc2UoKTtcclxuICAgIHN3aXRjaCAoZXh0KSB7XHJcbiAgICAgIGNhc2UgJ2pwZyc6XHJcbiAgICAgIGNhc2UgJ2pwZWcnOlxyXG4gICAgICAgIHJldHVybiAnanBlZyc7XHJcbiAgICAgIGNhc2UgJ3BuZyc6XHJcbiAgICAgICAgcmV0dXJuICdwbmcnO1xyXG4gICAgICBjYXNlICdibXAnOlxyXG4gICAgICAgIHJldHVybiAnYm1wJztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJ2pwZWcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gR2V0IHRoZSBjb250ZW50XHJcbiAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgR2V0WmlwQ29udGVudChmaWxlKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGpzemlwID0gbmV3IEpTWmlwKCk7XHJcbiAgICAgIHJldHVybiBhd2FpdCBqc3ppcC5sb2FkQXN5bmMoZmlsZSk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
356
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWF0aW9uLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL3ZhcmlhdGlvbi11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsYUFBYTtBQUNiLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUkxQixXQUFXO0FBQ1gsTUFBTSxPQUFPLGNBQWM7SUFHbEIsTUFBTSxDQUFDLFVBQVU7UUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU0sTUFBTSxDQUFPLGFBQWEsQ0FBQyxTQUFpQixFQUFFLFFBQWdCOztZQUNuRSxPQUFPLElBQUksT0FBTyxDQUFDLENBQU8sT0FBaUIsRUFBRSxNQUFnQixFQUFFLEVBQUU7Z0JBQy9ELElBQUksQ0FBQyxRQUFRLEVBQUU7b0JBQ2IsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNmO2dCQUNELElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ2xDLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUN2QztnQkFDRCxNQUFNLEVBQUUsR0FBVyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZFLElBQUk7b0JBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7d0JBQzVCLFNBQVMsSUFBSSxHQUFHLENBQUM7cUJBQ2xCO29CQUNELElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLEVBQUU7d0JBQy9DLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0RBQWdELENBQUMsQ0FBQzt3QkFDaEUsTUFBTSxDQUFDLGdEQUFnRCxDQUFDLENBQUM7cUJBQzFEO29CQUNELElBQUksSUFBSSxDQUFDO29CQUNULElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUU7d0JBQzlCLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO3FCQUNyQzt5QkFBTTt3QkFDTCxJQUFJLEdBQUcsTUFBTyxNQUFjLENBQUMsaUJBQWlCLENBQUMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLDRCQUE0QixFQUFFLEVBQUUsQ0FBQyxhQUFhLFFBQVEsRUFBRSxDQUFDLENBQUM7d0JBQzlILE1BQU0sUUFBUSxHQUFzQixNQUFNLGNBQWMsQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7d0JBQ2hHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQzt3QkFDckMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO3FCQUNuQjtpQkFDRjtnQkFBQyxPQUFPLEdBQUcsRUFBRTtvQkFDWixNQUFNLElBQUksR0FBRyxHQUFHLENBQUM7b0JBQ2pCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDYjtZQUNILENBQUMsQ0FBQSxDQUFDLENBQUM7UUFDTCxDQUFDO0tBQUE7SUFFRCw2R0FBNkc7SUFDN0csZ0RBQWdEO0lBQ2hELHVCQUF1QjtJQUN2Qix1QkFBdUI7SUFDdkIsUUFBUTtJQUNSLG1EQUFtRDtJQUNuRCxnRUFBZ0U7SUFDaEUsZUFBZTtJQUNmLG9IQUFvSDtJQUNwSCwwQkFBMEI7SUFDMUIsMkZBQTJGO0lBQzNGLHlFQUF5RTtJQUN6RSxtREFBbUQ7SUFDbkQsd0RBQXdEO0lBQ3hELDZEQUE2RDtJQUM3RCxxREFBcUQ7SUFDckQsbUVBQW1FO0lBQ25FLG1FQUFtRTtJQUNuRSw0Q0FBNEM7SUFDNUMsNENBQTRDO0lBQzVDLDZGQUE2RjtJQUM3Riw2REFBNkQ7SUFDN0QsdUNBQXVDO0lBQ3ZDLGdCQUFnQjtJQUNoQixtQkFBbUI7SUFDbkIsK0JBQStCO0lBQy9CLFlBQVk7SUFDWixZQUFZO0lBQ1osUUFBUTtJQUNSLFFBQVE7SUFDUixJQUFJO0lBRUksTUFBTSxDQUFPLDRCQUE0QixDQUFDLEVBQVUsRUFBRSxjQUFtQjs7WUFDL0UsSUFBSSxDQUFDLGNBQWMsRUFBRTtnQkFDbkIsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUNELE1BQU0sVUFBVSxHQUFHLE1BQU0sY0FBYyxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUN0RSxNQUFNLGlCQUFpQixHQUFzQixJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFDckUsSUFBSSxLQUFLLENBQUM7WUFDVixpQkFBaUIsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1lBRTFCLElBQUksVUFBVSxFQUFFO2dCQUNkLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsRUFBRTtvQkFDcEMsTUFBTSxRQUFRLEdBQVcsTUFBTSxVQUFVLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDckYsaUJBQWlCLENBQUMsUUFBUSxHQUFHLE1BQU0sY0FBYyxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUNqRjtxQkFBTTtvQkFDTCxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEVBQUU7d0JBQ2xDLE1BQU0sU0FBUyxHQUFXLE1BQU0sVUFBVSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7d0JBQy9FLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO3FCQUMvQjtvQkFDRCxJQUFJLEtBQUssRUFBRTt3QkFDVCxNQUFNLGNBQWMsQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxDQUFDLENBQUM7cUJBQ3ZGO3lCQUFNO3dCQUNMLE1BQU0sY0FBYyxDQUFDLDZCQUE2QixDQUFDLGlCQUFpQixFQUFFLFVBQVUsQ0FBQyxDQUFDO3FCQUNuRjtpQkFDRjthQUNGO1lBQ0QsT0FBTyxpQkFBaUIsQ0FBQztRQUMzQixDQUFDO0tBQUE7SUFFTyxNQUFNLENBQU8sMEJBQTBCLENBQUMsS0FBVSxFQUFFLGlCQUFvQyxFQUFFLFVBQWU7O1lBQy9HLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRTtnQkFDcEIsaUJBQWlCLENBQUMsTUFBTSxHQUFHLE1BQU0sY0FBYyxDQUFDLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDN0gsaUJBQWlCLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7YUFDckQ7WUFDRCxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUU7Z0JBQ3JCLGlCQUFpQixDQUFDLE9BQU8sR0FBRyxNQUFNLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ2hJLGlCQUFpQixDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO2FBQ3ZEO1lBQ0QsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO2dCQUNqQixpQkFBaUIsQ0FBQyxHQUFHLEdBQUcsTUFBTSxjQUFjLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNwSCxpQkFBaUIsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQzthQUMvQztpQkFBTTtnQkFDTCxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7b0JBQ2hCLGlCQUFpQixDQUFDLEVBQUUsR0FBRyxNQUFNLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ2pILGlCQUFpQixDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO2lCQUM3QztnQkFDRCxJQUFJLEtBQUssQ0FBQyxhQUFhLEVBQUU7b0JBQ3ZCLGlCQUFpQixDQUFDLFNBQVMsR0FBRyxNQUFNLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsRUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQ3RJLGlCQUFpQixDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7aUJBQzNEO2dCQUNELElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRTtvQkFDdkIsaUJBQWlCLENBQUMsU0FBUyxHQUFHLE1BQU0sY0FBYyxDQUFDLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDdEksaUJBQWlCLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQztpQkFDM0Q7YUFDRjtZQUNELElBQUksS0FBSyxDQUFDLGdCQUFnQixFQUFFO2dCQUMxQixpQkFBaUIsQ0FBQyxZQUFZLEdBQUcsTUFBTSxjQUFjLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQkFDL0ksaUJBQWlCLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDO2FBQ2pFO1lBQ0QsSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFO2dCQUN0QixpQkFBaUIsQ0FBQyxRQUFRLEdBQUcsTUFBTSxjQUFjLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNuSSxpQkFBaUIsQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO2FBQ3pEO1lBQ0QsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFO2dCQUNwQixpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsTUFBTSxjQUFjLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUM3SCxpQkFBaUIsQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQzthQUNyRDtZQUNELElBQUksS0FBSyxDQUFDLGlCQUFpQixFQUFFO2dCQUMzQixpQkFBaUIsQ0FBQyxhQUFhLEdBQUcsTUFBTSxjQUFjLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFDbEosaUJBQWlCLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDO2FBQ25FO1lBQ0QsSUFBSSxLQUFLLENBQUMscUJBQXFCLEVBQUU7Z0JBQy9CLGlCQUFpQixDQUFDLGlCQUFpQixHQUFHLE1BQU0sY0FBYyxDQUFDLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7Z0JBQzlKLGlCQUFpQixDQUFDLHlCQUF5QixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQzthQUN2RTtZQUNELElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRTtnQkFDaEIsaUJBQWlCLENBQUMsUUFBUSxHQUFHO29CQUMzQixPQUFPLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPO29CQUM3QixPQUFPLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPO2lCQUM5QixDQUFBO2FBQ0Y7WUFDRCxpQkFBaUIsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztZQUM5QyxpQkFBaUIsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztZQUU5QyxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksT0FBTyxLQUFLLENBQUMsS0FBSyxLQUFLLFFBQVEsRUFBRTtnQkFDbEQsaUJBQWlCLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztnQkFDNUIsaUJBQWlCLENBQUMsVUFBVSxHQUFHLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzdGO2lCQUFNO2dCQUNMLGlCQUFpQixDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO2FBQ3ZDO1lBQ0QsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFO2dCQUNwQixpQkFBaUIsQ0FBQyxVQUFVLEdBQUcsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDNUc7WUFDRCxpQkFBaUIsQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQztZQUN4RCxpQkFBaUIsQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQztZQUMxRCxpQkFBaUIsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztZQUNsRCxpQkFBaUIsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUMxQyxJQUFJLEtBQUssQ0FBQyxhQUFhLEVBQUU7Z0JBQ3ZCLGlCQUFpQixDQUFDLGFBQWEsR0FBRyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN4SDtZQUNELGlCQUFpQixDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztZQUM5RCxpQkFBaUIsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztZQUNwRCxpQkFBaUIsQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsaUJBQWlCLENBQUM7WUFDOUQsaUJBQWlCLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDcEMsaUJBQWlCLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7WUFDcEQsaUJBQWlCLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFDdEQsQ0FBQztLQUFBO0lBRU8sTUFBTSxDQUFPLDZCQUE2QixDQUFDLGlCQUFvQyxFQUFFLFVBQWU7O1lBQ3RHLE1BQU0sU0FBUyxHQUFpQyxFQUFFLENBQUM7WUFDbkQsS0FBSyxNQUFNLFFBQVEsSUFBSSxVQUFVLENBQUMsS0FBSyxFQUFFO2dCQUN2QyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUM3QyxNQUFNLElBQUksR0FBUSxNQUFNLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ25ELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7d0JBQ2pGLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBZSxFQUFFLEVBQUU7NEJBQ2pGLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxjQUFjLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsVUFBVSxFQUFFLENBQUM7NEJBQ2xHLGlCQUFpQixDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUM7d0JBQzlDLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ0w7eUJBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTt3QkFDcEYsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTs0QkFDN0UsaUJBQWlCLENBQUMsRUFBRSxHQUFHLGNBQWMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxNQUFNLEVBQUUsQ0FBQzs0QkFDMUYsaUJBQWlCLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQzt3QkFDMUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDTDt5QkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO3dCQUMzRixTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLGFBQWtCLEVBQUUsRUFBRTs0QkFDcEYsaUJBQWlCLENBQUMsU0FBUyxHQUFHLGNBQWMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxhQUFhLEVBQUUsQ0FBQzs0QkFDeEcsaUJBQWlCLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDO3dCQUNqRCxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUNMO3lCQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7d0JBQzNGLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsYUFBa0IsRUFBRSxFQUFFOzRCQUNwRixpQkFBaUIsQ0FBQyxTQUFTLEdBQUcsY0FBYyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLGFBQWEsRUFBRSxDQUFDOzRCQUN4RyxpQkFBaUIsQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUM7d0JBQ2pELENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ0w7eUJBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTt3QkFDekYsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFnQixFQUFFLEVBQUU7NEJBQ2xGLGlCQUFpQixDQUFDLE9BQU8sR0FBRyxjQUFjLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsV0FBVyxFQUFFLENBQUM7NEJBQ3BHLGlCQUFpQixDQUFDLGVBQWUsR0FBRyxRQUFRLENBQUM7d0JBQy9DLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ0w7eUJBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTt3QkFDOUYsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxnQkFBcUIsRUFBRSxFQUFFOzRCQUN2RixpQkFBaUIsQ0FBQyxZQUFZLEdBQUcsY0FBYyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLGdCQUFnQixFQUFFLENBQUM7NEJBQzlHLGlCQUFpQixDQUFDLG9CQUFvQixHQUFHLFFBQVEsQ0FBQzt3QkFDcEQsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDTDt5QkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO3dCQUMxRixTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQWlCLEVBQUUsRUFBRTs0QkFDbkYsaUJBQWlCLENBQUMsUUFBUSxHQUFHLGNBQWMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxZQUFZLEVBQUUsQ0FBQzs0QkFDdEcsaUJBQWlCLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDO3dCQUNoRCxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUNMO3lCQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7d0JBQ3hGLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBZSxFQUFFLEVBQUU7NEJBQ2pGLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxjQUFjLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsVUFBVSxFQUFFLENBQUM7NEJBQ2xHLGlCQUFpQixDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUM7d0JBQzlDLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ0w7eUJBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTt3QkFDL0YsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxpQkFBc0IsRUFBRSxFQUFFOzRCQUN4RixpQkFBaUIsQ0FBQyxhQUFhLEdBQUcsY0FBYyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLGlCQUFpQixFQUFFLENBQUM7NEJBQ2hILGlCQUFpQixDQUFDLHFCQUFxQixHQUFHLFFBQVEsQ0FBQzt3QkFDckQsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDTDt5QkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7d0JBQ25HLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMscUJBQTBCLEVBQUUsRUFBRTs0QkFDNUYsaUJBQWlCLENBQUMsaUJBQWlCLEdBQUcsY0FBYyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLHFCQUFxQixFQUFFLENBQUM7NEJBQ3hILGlCQUFpQixDQUFDLHlCQUF5QixHQUFHLFFBQVEsQ0FBQzt3QkFDekQsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDTDt5QkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO3dCQUN4QyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQWdCLEVBQUUsRUFBRTs0QkFDbEYsaUJBQWlCLENBQUMsT0FBTyxHQUFHLHlCQUF5QixHQUFHLFdBQVcsQ0FBQzs0QkFDcEUsaUJBQWlCLENBQUMsZUFBZSxHQUFHLFFBQVEsQ0FBQzt3QkFDL0MsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDTDt5QkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO3dCQUMxQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQWlCLEVBQUUsRUFBRTs0QkFDbkYsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQzs0QkFDakQsS0FBSyxNQUFNLEdBQUcsSUFBSSxlQUFlLEVBQUU7Z0NBQ2pDLElBQUksZUFBZSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQ0FDdkMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztpQ0FDeEQ7NkJBQ0Y7d0JBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDTDtpQkFDRjthQUNGO1lBQ0QsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9CLENBQUM7S0FBQTtJQUVPLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxRQUFhO1FBQy9DLE1BQU0sTUFBTSxHQUFHLElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzFDLElBQUksUUFBUSxDQUFDLFFBQVEsRUFBRTtZQUNyQixNQUFNLFFBQVEsR0FBTyxFQUFFLENBQUM7WUFDeEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUNqRCxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzVEO1lBQ0QsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUM5QjtRQUNELE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU8sTUFBTSxDQUFDLG1CQUFtQixDQUFDLFFBQWE7UUFDOUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFPLE9BQWlCLEVBQUUsTUFBZ0IsRUFBRSxFQUFFO1lBQy9ELElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUN0QyxPQUFPLENBQUMsS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7Z0JBQ3ZELE9BQU8sTUFBTSxFQUFFLENBQUM7YUFDakI7WUFDRCxNQUFNLEdBQUcsR0FBbUIsTUFBTyxNQUFjLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM1RSxJQUFJLEdBQUcsRUFBRTtnQkFDUCxPQUFPLE9BQU8sQ0FBRSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3BEO1FBQ0gsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxNQUFNLENBQUMsc0JBQXNCLENBQUMsR0FBUSxFQUFFLFFBQWdCLEVBQUUsU0FBa0IsSUFBSTtRQUN0RixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBaUIsRUFBRSxFQUFFO1lBQ3ZDLElBQUksR0FBRyxJQUFJLFFBQVEsRUFBRTtnQkFDbkIsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBZ0IsRUFBRSxFQUFFO29CQUNoRSxJQUFJLE1BQU0sRUFBRTt3QkFDVixPQUFPLENBQUMsY0FBYyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLFdBQVcsV0FBVyxFQUFFLENBQUMsQ0FBQztxQkFDakY7eUJBQU07d0JBQ0wsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO3FCQUN0QjtnQkFDSCxDQUFDLENBQUMsQ0FBQzthQUNKO2lCQUFNO2dCQUNMLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUNwQjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBZ0I7UUFDekMsTUFBTSxHQUFHLEdBQVcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckcsUUFBUSxHQUFHLEVBQUU7WUFDWCxLQUFLLEtBQUssQ0FBQztZQUNYLEtBQUssTUFBTSxDQUFDO1lBQ1osS0FBSyxLQUFLLENBQUM7WUFDWCxLQUFLLEtBQUs7Z0JBQ1IsT0FBTyxJQUFJLENBQUM7WUFDZDtnQkFDRSxPQUFPLEtBQUssQ0FBQztTQUNoQjtJQUNILENBQUM7SUFFTyxNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBZ0I7UUFDL0MsTUFBTSxHQUFHLEdBQVcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckcsUUFBUSxHQUFHLEVBQUU7WUFDWCxLQUFLLEtBQUssQ0FBQztZQUNYLEtBQUssTUFBTTtnQkFDVCxPQUFPLE1BQU0sQ0FBQztZQUNoQixLQUFLLEtBQUs7Z0JBQ1IsT0FBTyxLQUFLLENBQUM7WUFDZixLQUFLLEtBQUs7Z0JBQ1IsT0FBTyxLQUFLLENBQUM7WUFDZjtnQkFDRSxPQUFPLE1BQU0sQ0FBQztTQUNqQjtJQUNILENBQUM7SUFFRCxrQkFBa0I7SUFDVixNQUFNLENBQU8sYUFBYSxDQUFDLElBQUk7O1lBQ3JDLElBQUk7Z0JBQ0YsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDMUIsT0FBTyxNQUFNLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDcEM7WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDVixPQUFPLElBQUksQ0FBQzthQUNiO1FBQ0gsQ0FBQztLQUFBOztBQTFVYyw0QkFBYSxHQUFxQixJQUFJLEdBQUcsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVEhSRUUgZnJvbSBcInRocmVlXCI7XHJcbmltcG9ydCB7VmFyaWF0aW9uU2V0dGluZ3N9IGZyb20gXCIuLi9tb2RlbC92YXJpYXRpb24tc2V0dGluZ3NcIjtcclxuLy8gQHRzLWlnbm9yZVxyXG5pbXBvcnQgSlNaaXAgZnJvbSBcImpzemlwXCI7XHJcbmltcG9ydCB7R0xURiwgR0xURkxvYWRlcn0gZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL2xvYWRlcnMvR0xURkxvYWRlcic7XHJcbmltcG9ydCB7TWVzaCwgT2JqZWN0M0R9IGZyb20gJ3RocmVlJztcclxuXHJcbi8vIEBkeW5hbWljXHJcbmV4cG9ydCBjbGFzcyBWYXJpYXRpb25VdGlscyB7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgTWF0ZXJpYWxDYWNoZTogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXAoKTtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBDbGVhckNhY2hlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5NYXRlcmlhbENhY2hlLmNsZWFyKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGFzeW5jIExvYWRWYXJpYXRpb24oYXNzZXRQYXRoOiBzdHJpbmcsIGZpbGVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPFZhcmlhdGlvblNldHRpbmdzPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmU6IEZ1bmN0aW9uLCByZWplY3Q6IEZ1bmN0aW9uKSA9PiB7XHJcbiAgICAgIGlmICghZmlsZU5hbWUpIHtcclxuICAgICAgICByZXNvbHZlKG51bGwpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChmaWxlTmFtZS5pbmRleE9mKCdpb25lM2QnKSA8IDApIHtcclxuICAgICAgICBmaWxlTmFtZSA9IGZpbGVOYW1lLmNvbmNhdCgnLmlvbmUzZCcpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGlkOiBzdHJpbmcgPSBmaWxlTmFtZS5zdWJzdHIoMCwgZmlsZU5hbWUubGFzdEluZGV4T2YoJy5pb25lM2QnKSk7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgaWYgKCFhc3NldFBhdGguZW5kc1dpdGgoJy8nKSkge1xyXG4gICAgICAgICAgYXNzZXRQYXRoICs9ICcvJztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF3aW5kb3cuaGFzT3duUHJvcGVydHkoJ2Rvd25sb2FkVmFyaWF0aW9uJykpIHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ2Rvd25sb2FkVmFyaWF0aW9uIG5vdCBkZWZpbmVkIGluIHdpbmRvdyBnbG9iYWwnKTtcclxuICAgICAgICAgIHJlamVjdCgnZG93bmxvYWRWYXJpYXRpb24gbm90IGRlZmluZWQgaW4gd2luZG93IGdsb2JhbCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgZmlsZTtcclxuICAgICAgICBpZiAodGhpcy5NYXRlcmlhbENhY2hlLmhhcyhpZCkpIHtcclxuICAgICAgICAgIHJlc29sdmUodGhpcy5NYXRlcmlhbENhY2hlLmdldChpZCkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBmaWxlID0gYXdhaXQgKHdpbmRvdyBhcyBhbnkpLmRvd25sb2FkVmFyaWF0aW9uKGAke2Fzc2V0UGF0aC5yZXBsYWNlKCdodHRwczovL2NkbjEuY29saWpuLWl0Lm5sLycsICcnKX12YXJpYXRpb24vJHtmaWxlTmFtZX1gKTtcclxuICAgICAgICAgIGNvbnN0IHNldHRpbmdzOiBWYXJpYXRpb25TZXR0aW5ncyA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkdldFZhcmlhdGlvblNldHRpbmdzRnJvbUZpbGUoaWQsIGZpbGUpO1xyXG4gICAgICAgICAgdGhpcy5NYXRlcmlhbENhY2hlLnNldChpZCwgc2V0dGluZ3MpO1xyXG4gICAgICAgICAgcmVzb2x2ZShzZXR0aW5ncyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICBjb25zdCBtdXRlID0gZXJyO1xyXG4gICAgICAgIHJlamVjdChlcnIpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIHB1YmxpYyBzdGF0aWMgR2V0TWF0ZXJpYWxGcm9tTmFtZSh2YXJpYXRpb25Gb2xkZXI6IHN0cmluZywgbWF0ZXJpYWw6IGFueSk6IFByb21pc2U8TWVzaFN0YW5kYXJkTWF0ZXJpYWw+IHtcclxuICAvLyAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24pID0+IHtcclxuICAvLyAgICAgaWYgKCFtYXRlcmlhbCkge1xyXG4gIC8vICAgICAgIHJlc29sdmUobnVsbCk7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgICAgaWYgKHRoaXMuTWF0ZXJpYWxDYWNoZS5oYXMobWF0ZXJpYWwubmFtZSkpIHtcclxuICAvLyAgICAgICByZXNvbHZlKHRoaXMuTWF0ZXJpYWxDYWNoZS5nZXQobWF0ZXJpYWwubmFtZSkuY2xvbmUoKSk7XHJcbiAgLy8gICAgIH0gZWxzZSB7XHJcbiAgLy8gICAgICAgVmFyaWF0aW9uVXRpbHMuTG9hZFZhcmlhdGlvbih2YXJpYXRpb25Gb2xkZXIsIG1hdGVyaWFsLm5hbWUsIGZhbHNlKS50aGVuKChzZXR0aW5nczogVmFyaWF0aW9uU2V0dGluZ3MpID0+IHtcclxuICAvLyAgICAgICAgIGlmIChzZXR0aW5ncykge1xyXG4gIC8vICAgICAgICAgICBBc3NldFV0aWxzLkNyZWF0ZU1hdGVyaWFsRnJvbUFzc2V0KHNldHRpbmdzKS50aGVuKChtYXRlcmlhbE9iajogTWF0ZXJpYWwpID0+IHtcclxuICAvLyAgICAgICAgICAgICBjb25zdCBtYXRlcmlhbFBhcmFtczogTWVzaFN0YW5kYXJkTWF0ZXJpYWxQYXJhbWV0ZXJzID0ge307XHJcbiAgLy8gICAgICAgICAgICAgbWF0ZXJpYWxQYXJhbXMubmFtZSA9IG1hdGVyaWFsLm5hbWU7XHJcbiAgLy8gICAgICAgICAgICAgbWF0ZXJpYWxQYXJhbXMubWFwID0gbWF0ZXJpYWxPYmoudGV4dHVyZTtcclxuICAvLyAgICAgICAgICAgICBtYXRlcmlhbFBhcmFtcy5ub3JtYWxNYXAgPSBtYXRlcmlhbE9iai5ub3JtYWw7XHJcbiAgLy8gICAgICAgICAgICAgbWF0ZXJpYWxQYXJhbXMuYW9NYXAgPSBtYXRlcmlhbE9iai5hbztcclxuICAvLyAgICAgICAgICAgICBtYXRlcmlhbFBhcmFtcy5yb3VnaG5lc3NNYXAgPSBtYXRlcmlhbE9iai5yb3VnaG5lc3M7XHJcbiAgLy8gICAgICAgICAgICAgbWF0ZXJpYWxQYXJhbXMubWV0YWxuZXNzTWFwID0gbWF0ZXJpYWxPYmoubWV0YWxuZXNzO1xyXG4gIC8vICAgICAgICAgICAgIG1hdGVyaWFsUGFyYW1zLnJvdWdobmVzcyA9IDE7XHJcbiAgLy8gICAgICAgICAgICAgbWF0ZXJpYWxQYXJhbXMubWV0YWxuZXNzID0gMTtcclxuICAvLyAgICAgICAgICAgICBjb25zdCBwYnJNYXQ6IE1lc2hTdGFuZGFyZE1hdGVyaWFsID0gbmV3IE1lc2hTdGFuZGFyZE1hdGVyaWFsKG1hdGVyaWFsUGFyYW1zKTtcclxuICAvLyAgICAgICAgICAgICB0aGlzLk1hdGVyaWFsQ2FjaGUuc2V0KG1hdGVyaWFsLm5hbWUsIHBick1hdCk7XHJcbiAgLy8gICAgICAgICAgICAgcmVzb2x2ZShwYnJNYXQuY2xvbmUoKSk7XHJcbiAgLy8gICAgICAgICAgIH0pO1xyXG4gIC8vICAgICAgICAgfSBlbHNlIHtcclxuICAvLyAgICAgICAgICAgcmVzb2x2ZShtYXRlcmlhbCk7XHJcbiAgLy8gICAgICAgICB9XHJcbiAgLy8gICAgICAgfSk7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH0pO1xyXG4gIC8vIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgR2V0VmFyaWF0aW9uU2V0dGluZ3NGcm9tRmlsZShpZDogc3RyaW5nLCBjb21wcmVzc2VkRmlsZTogYW55KTogUHJvbWlzZTxWYXJpYXRpb25TZXR0aW5ncz4ge1xyXG4gICAgaWYgKCFjb21wcmVzc2VkRmlsZSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNvbnN0IHppcENvbnRlbnQgPSBhd2FpdCBWYXJpYXRpb25VdGlscy5HZXRaaXBDb250ZW50KGNvbXByZXNzZWRGaWxlKTtcclxuICAgIGNvbnN0IHZhcmlhdGlvblNldHRpbmdzOiBWYXJpYXRpb25TZXR0aW5ncyA9IG5ldyBWYXJpYXRpb25TZXR0aW5ncygpO1xyXG4gICAgbGV0IGluZGV4O1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3MuaWQgPSBpZDtcclxuXHJcbiAgICBpZiAoemlwQ29udGVudCkge1xyXG4gICAgICBpZiAoemlwQ29udGVudC5maWxlc1snbWF0ZXJpYWwuZ2xiJ10pIHtcclxuICAgICAgICBjb25zdCBtYXRlcmlhbDogc3RyaW5nID0gYXdhaXQgemlwQ29udGVudC5maWxlc1snbWF0ZXJpYWwuZ2xiJ10uYXN5bmMoJ2FycmF5YnVmZmVyJyk7XHJcbiAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MubWF0ZXJpYWwgPSBhd2FpdCBWYXJpYXRpb25VdGlscy5Mb2FkTWF0ZXJpYWxGcm9tR2xiKG1hdGVyaWFsKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoemlwQ29udGVudC5maWxlc1snaW5kZXguanNvbiddKSB7XHJcbiAgICAgICAgICBjb25zdCBpbmRleEZpbGU6IHN0cmluZyA9IGF3YWl0IHppcENvbnRlbnQuZmlsZXNbJ2luZGV4Lmpzb24nXS5hc3luYygnc3RyaW5nJyk7XHJcbiAgICAgICAgICBpbmRleCA9IEpTT04ucGFyc2UoaW5kZXhGaWxlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGluZGV4KSB7XHJcbiAgICAgICAgICBhd2FpdCBWYXJpYXRpb25VdGlscy5DcmVhdGVTZXR0aW5nc0Jhc2VkT25JbmRleChpbmRleCwgdmFyaWF0aW9uU2V0dGluZ3MsIHppcENvbnRlbnQpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBhd2FpdCBWYXJpYXRpb25VdGlscy5DcmVhdGVTZXR0aW5nc0Jhc2VkT25GaWxlTmFtZSh2YXJpYXRpb25TZXR0aW5ncywgemlwQ29udGVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFyaWF0aW9uU2V0dGluZ3M7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBhc3luYyBDcmVhdGVTZXR0aW5nc0Jhc2VkT25JbmRleChpbmRleDogYW55LCB2YXJpYXRpb25TZXR0aW5nczogVmFyaWF0aW9uU2V0dGluZ3MsIHppcENvbnRlbnQ6IGFueSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKGluZGV4Lm5vcm1hbEZpbGUpIHtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3Mubm9ybWFsID0gYXdhaXQgVmFyaWF0aW9uVXRpbHMuTG9hZEZpbGVDb250ZW50RnJvbVppcCh6aXBDb250ZW50LmZpbGVzW2luZGV4Lm5vcm1hbEZpbGVdLCBpbmRleC5ub3JtYWxGaWxlKTtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3Mubm9ybWFsRmlsZW5hbWUgPSBpbmRleC5ub3JtYWxGaWxlO1xyXG4gICAgfVxyXG4gICAgaWYgKGluZGV4LmRpZmZ1c2VGaWxlKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLnRleHR1cmUgPSBhd2FpdCBWYXJpYXRpb25VdGlscy5Mb2FkRmlsZUNvbnRlbnRGcm9tWmlwKHppcENvbnRlbnQuZmlsZXNbaW5kZXguZGlmZnVzZUZpbGVdLCBpbmRleC5kaWZmdXNlRmlsZSk7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLnRleHR1cmVGaWxlbmFtZSA9IGluZGV4LmRpZmZ1c2VGaWxlO1xyXG4gICAgfVxyXG4gICAgaWYgKGluZGV4Lm9ybUZpbGUpIHtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3Mub3JtID0gYXdhaXQgVmFyaWF0aW9uVXRpbHMuTG9hZEZpbGVDb250ZW50RnJvbVppcCh6aXBDb250ZW50LmZpbGVzW2luZGV4Lm9ybUZpbGVdLCBpbmRleC5vcm1GaWxlKTtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3Mub3JtRmlsZW5hbWUgPSBpbmRleC5vcm1GaWxlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGluZGV4LmFvRmlsZSkge1xyXG4gICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmFvID0gYXdhaXQgVmFyaWF0aW9uVXRpbHMuTG9hZEZpbGVDb250ZW50RnJvbVppcCh6aXBDb250ZW50LmZpbGVzW2luZGV4LmFvRmlsZV0sIGluZGV4LmFvRmlsZSk7XHJcbiAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MuYW9GaWxlbmFtZSA9IGluZGV4LmFvRmlsZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaW5kZXgubWV0YWxuZXNzRmlsZSkge1xyXG4gICAgICAgIHZhcmlhdGlvblNldHRpbmdzLm1ldGFsbmVzcyA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkxvYWRGaWxlQ29udGVudEZyb21aaXAoemlwQ29udGVudC5maWxlc1tpbmRleC5tZXRhbG5lc3NGaWxlXSwgaW5kZXgubWV0YWxuZXNzRmlsZSk7XHJcbiAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MubWV0YWxuZXNzRmlsZW5hbWUgPSBpbmRleC5tZXRhbG5lc3NGaWxlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChpbmRleC5yb3VnaG5lc3NGaWxlKSB7XHJcbiAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3Mucm91Z2huZXNzID0gYXdhaXQgVmFyaWF0aW9uVXRpbHMuTG9hZEZpbGVDb250ZW50RnJvbVppcCh6aXBDb250ZW50LmZpbGVzW2luZGV4LnJvdWdobmVzc0ZpbGVdLCBpbmRleC5yb3VnaG5lc3NGaWxlKTtcclxuICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5yb3VnaG5lc3NGaWxlbmFtZSA9IGluZGV4LnJvdWdobmVzc0ZpbGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChpbmRleC5kaXNwbGFjZW1lbnRGaWxlKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLmRpc3BsYWNlbWVudCA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkxvYWRGaWxlQ29udGVudEZyb21aaXAoemlwQ29udGVudC5maWxlc1tpbmRleC5kaXNwbGFjZW1lbnRGaWxlXSwgaW5kZXguZGlzcGxhY2VtZW50RmlsZSk7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLmRpc3BsYWNlbWVudEZpbGVuYW1lID0gaW5kZXguZGlzcGxhY2VtZW50RmlsZTtcclxuICAgIH1cclxuICAgIGlmIChpbmRleC5lbWlzc2l2ZUZpbGUpIHtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3MuZW1pc3NpdmUgPSBhd2FpdCBWYXJpYXRpb25VdGlscy5Mb2FkRmlsZUNvbnRlbnRGcm9tWmlwKHppcENvbnRlbnQuZmlsZXNbaW5kZXguZW1pc3NpdmVGaWxlXSwgaW5kZXguZW1pc3NpdmVGaWxlKTtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3MuZW1pc3NpdmVGaWxlbmFtZSA9IGluZGV4LmVtaXNzaXZlRmlsZTtcclxuICAgIH1cclxuICAgIGlmIChpbmRleC5lbnZNYXBGaWxlKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLmVudk1hcCA9IGF3YWl0IFZhcmlhdGlvblV0aWxzLkxvYWRGaWxlQ29udGVudEZyb21aaXAoemlwQ29udGVudC5maWxlc1tpbmRleC5lbnZNYXBGaWxlXSwgaW5kZXguZW52TWFwRmlsZSk7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLmVudk1hcEZpbGVuYW1lID0gaW5kZXguZW52TWFwRmlsZTtcclxuICAgIH1cclxuICAgIGlmIChpbmRleC5zaGVlbkNvbG9yTWFwRmlsZSkge1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5zaGVlbkNvbG9yTWFwID0gYXdhaXQgVmFyaWF0aW9uVXRpbHMuTG9hZEZpbGVDb250ZW50RnJvbVppcCh6aXBDb250ZW50LmZpbGVzW2luZGV4LnNoZWVuQ29sb3JNYXBGaWxlXSwgaW5kZXguc2hlZW5Db2xvck1hcEZpbGUpO1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5zaGVlbkNvbG9yTWFwRmlsZW5hbWUgPSBpbmRleC5zaGVlbkNvbG9yTWFwRmlsZTtcclxuICAgIH1cclxuICAgIGlmIChpbmRleC5zaGVlblJvdWdobmVzc01hcEZpbGUpIHtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3Muc2hlZW5Sb3VnaG5lc3NNYXAgPSBhd2FpdCBWYXJpYXRpb25VdGlscy5Mb2FkRmlsZUNvbnRlbnRGcm9tWmlwKHppcENvbnRlbnQuZmlsZXNbaW5kZXguc2hlZW5Sb3VnaG5lc3NNYXBGaWxlXSwgaW5kZXguc2hlZW5Sb3VnaG5lc3NNYXBGaWxlKTtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3Muc2hlZW5Sb3VnaG5lc3NNYXBGaWxlbmFtZSA9IGluZGV4LnNoZWVuQ29sb3JNYXBGaWxlO1xyXG4gICAgfVxyXG4gICAgaWYgKGluZGV4LnJlcGVhdCkge1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5zZXR0aW5ncyA9IHtcclxuICAgICAgICByZXBlYXR4OiBpbmRleC5yZXBlYXQucmVwZWF0eCxcclxuICAgICAgICByZXBlYXR5OiBpbmRleC5yZXBlYXQucmVwZWF0eVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy5tZXRhbG5lc3MgPSBpbmRleC5tZXRhbG5lc3M7XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy5yb3VnaG5lc3MgPSBpbmRleC5yb3VnaG5lc3M7XHJcblxyXG4gICAgaWYgKGluZGV4LnNoZWVuICYmIHR5cGVvZiBpbmRleC5zaGVlbiA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3Muc2hlZW4gPSAxO1xyXG4gICAgICB2YXJpYXRpb25TZXR0aW5ncy5zaGVlbkNvbG9yID0gbmV3IFRIUkVFLkNvbG9yKGluZGV4LnNoZWVuLnIsIGluZGV4LnNoZWVuLmcsIGluZGV4LnNoZWVuLmIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3Muc2hlZW4gPSBpbmRleC5zaGVlbjtcclxuICAgIH1cclxuICAgIGlmIChpbmRleC5zaGVlbkNvbG9yKSB7XHJcbiAgICAgIHZhcmlhdGlvblNldHRpbmdzLnNoZWVuQ29sb3IgPSBuZXcgVEhSRUUuQ29sb3IoaW5kZXguc2hlZW5Db2xvci5yLCBpbmRleC5zaGVlbkNvbG9yLmcsIGluZGV4LnNoZWVuQ29sb3IuYik7XHJcbiAgICB9XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy5zaGVlblJvdWdobmVzcyA9IGluZGV4LnNoZWVuUm91Z2huZXNzO1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3MuZW52TWFwSW50ZW5zaXR5ID0gaW5kZXguZW52TWFwSW50ZW5zaXR5O1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3MudHJhbnNwYXJlbnQgPSBpbmRleC50cmFuc3BhcmVudDtcclxuICAgIHZhcmlhdGlvblNldHRpbmdzLm9wYWNpdHkgPSBpbmRleC5vcGFjaXR5O1xyXG4gICAgaWYgKGluZGV4LmVtaXNzaXZlVmFsdWUpIHtcclxuICAgICAgdmFyaWF0aW9uU2V0dGluZ3MuZW1pc3NpdmVWYWx1ZSA9IG5ldyBUSFJFRS5Db2xvcihpbmRleC5lbWlzc2l2ZVZhbHVlLnIsIGluZGV4LmVtaXNzaXZlVmFsdWUuZywgaW5kZXguZW1pc3NpdmVWYWx1ZS5iKTtcclxuICAgIH1cclxuICAgIHZhcmlhdGlvblNldHRpbmdzLmVtaXNzaXZlSW50ZW5zaXR5ID0gaW5kZXguZW1pc3NpdmVJbnRlbnNpdHk7XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy5yZWZsZWN0aXZpdHkgPSBpbmRleC5yZWZsZWN0aXZpdHk7XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy5kaXNwbGFjZW1lbnRWYWx1ZSA9IGluZGV4LmRpc3BsYWNlbWVudFZhbHVlO1xyXG4gICAgdmFyaWF0aW9uU2V0dGluZ3Muc2lkZSA9IGluZGV4LnNpZGU7XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy50cmFuc3BhcmVuY3kgPSBpbmRleC50cmFuc3BhcmVuY3k7XHJcbiAgICB2YXJpYXRpb25TZXR0aW5ncy50cmFuc21pc3Npb24gPSBpbmRleC50cmFuc21pc3Npb247XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBhc3luYyBDcmVhdGVTZXR0aW5nc0Jhc2VkT25GaWxlTmFtZSh2YXJpYXRpb25TZXR0aW5nczogVmFyaWF0aW9uU2V0dGluZ3MsIHppcENvbnRlbnQ6IGFueSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgYWxsTG9hZGVkOiBQcm9taXNlPFZhcmlhdGlvblNldHRpbmdzPltdID0gW107XHJcbiAgICBmb3IgKGNvbnN0IGZpbGVOYW1lIGluIHppcENvbnRlbnQuZmlsZXMpIHtcclxuICAgICAgaWYgKHppcENvbnRlbnQuZmlsZXMuaGFzT3duUHJvcGVydHkoZmlsZU5hbWUpKSB7XHJcbiAgICAgICAgY29uc3QgZmlsZTogYW55ID0gYXdhaXQgemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV07XHJcbiAgICAgICAgaWYgKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ25vcm1hbCcpID4gLTEgJiYgdGhpcy5GaWxlSXNJbWFnZShmaWxlLm5hbWUpKSB7XHJcbiAgICAgICAgICBhbGxMb2FkZWQucHVzaCh6aXBDb250ZW50LmZpbGVzW2ZpbGVOYW1lXS5hc3luYygnYmFzZTY0JykudGhlbigobm9ybWFsRmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLm5vcm1hbCA9IGBkYXRhOmltYWdlLyR7dGhpcy5HZXRCYXNlNjRGaWxlVHlwZShmaWxlLm5hbWUpfTtiYXNlNjQsJHtub3JtYWxGaWxlfWA7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLm5vcm1hbEZpbGVuYW1lID0gZmlsZU5hbWU7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWxlLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdhbycpID4gLTEgJiYgdGhpcy5GaWxlSXNJbWFnZShmaWxlLm5hbWUpKSB7XHJcbiAgICAgICAgICBhbGxMb2FkZWQucHVzaCh6aXBDb250ZW50LmZpbGVzW2ZpbGVOYW1lXS5hc3luYygnYmFzZTY0JykudGhlbigoYW9GaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MuYW8gPSBgZGF0YTppbWFnZS8ke3RoaXMuR2V0QmFzZTY0RmlsZVR5cGUoZmlsZS5uYW1lKX07YmFzZTY0LCR7YW9GaWxlfWA7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLmFvRmlsZW5hbWUgPSBmaWxlTmFtZTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ21ldGFsbmVzcycpID4gLTEgJiYgdGhpcy5GaWxlSXNJbWFnZShmaWxlLm5hbWUpKSB7XHJcbiAgICAgICAgICBhbGxMb2FkZWQucHVzaCh6aXBDb250ZW50LmZpbGVzW2ZpbGVOYW1lXS5hc3luYygnYmFzZTY0JykudGhlbigobWV0YWxuZXNzRmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLm1ldGFsbmVzcyA9IGBkYXRhOmltYWdlLyR7dGhpcy5HZXRCYXNlNjRGaWxlVHlwZShmaWxlLm5hbWUpfTtiYXNlNjQsJHttZXRhbG5lc3NGaWxlfWA7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLm1ldGFsbmVzc0ZpbGVuYW1lID0gZmlsZU5hbWU7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChmaWxlLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdyb3VnaG5lc3MnKSA+IC0xICYmIHRoaXMuRmlsZUlzSW1hZ2UoZmlsZS5uYW1lKSkge1xyXG4gICAgICAgICAgYWxsTG9hZGVkLnB1c2goemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV0uYXN5bmMoJ2Jhc2U2NCcpLnRoZW4oKHJvdWdobmVzc0ZpbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5yb3VnaG5lc3MgPSBgZGF0YTppbWFnZS8ke3RoaXMuR2V0QmFzZTY0RmlsZVR5cGUoZmlsZS5uYW1lKX07YmFzZTY0LCR7cm91Z2huZXNzRmlsZX1gO1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5yb3VnaG5lc3NGaWxlbmFtZSA9IGZpbGVOYW1lO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZignZGlmZnVzZScpID4gLTEgJiYgdGhpcy5GaWxlSXNJbWFnZShmaWxlLm5hbWUpKSB7XHJcbiAgICAgICAgICBhbGxMb2FkZWQucHVzaCh6aXBDb250ZW50LmZpbGVzW2ZpbGVOYW1lXS5hc3luYygnYmFzZTY0JykudGhlbigoZGlmZnVzZUZpbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy50ZXh0dXJlID0gYGRhdGE6aW1hZ2UvJHt0aGlzLkdldEJhc2U2NEZpbGVUeXBlKGZpbGUubmFtZSl9O2Jhc2U2NCwke2RpZmZ1c2VGaWxlfWA7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLnRleHR1cmVGaWxlbmFtZSA9IGZpbGVOYW1lO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZignZGlzcGxhY2VtZW50JykgPiAtMSAmJiB0aGlzLkZpbGVJc0ltYWdlKGZpbGUubmFtZSkpIHtcclxuICAgICAgICAgIGFsbExvYWRlZC5wdXNoKHppcENvbnRlbnQuZmlsZXNbZmlsZU5hbWVdLmFzeW5jKCdiYXNlNjQnKS50aGVuKChkaXNwbGFjZW1lbnRGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MuZGlzcGxhY2VtZW50ID0gYGRhdGE6aW1hZ2UvJHt0aGlzLkdldEJhc2U2NEZpbGVUeXBlKGZpbGUubmFtZSl9O2Jhc2U2NCwke2Rpc3BsYWNlbWVudEZpbGV9YDtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MuZGlzcGxhY2VtZW50RmlsZW5hbWUgPSBmaWxlTmFtZTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2VtaXNzaXZlJykgPiAtMSAmJiB0aGlzLkZpbGVJc0ltYWdlKGZpbGUubmFtZSkpIHtcclxuICAgICAgICAgIGFsbExvYWRlZC5wdXNoKHppcENvbnRlbnQuZmlsZXNbZmlsZU5hbWVdLmFzeW5jKCdiYXNlNjQnKS50aGVuKChlbWlzc2l2ZUZpbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5lbWlzc2l2ZSA9IGBkYXRhOmltYWdlLyR7dGhpcy5HZXRCYXNlNjRGaWxlVHlwZShmaWxlLm5hbWUpfTtiYXNlNjQsJHtlbWlzc2l2ZUZpbGV9YDtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MuZW1pc3NpdmVGaWxlbmFtZSA9IGZpbGVOYW1lO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZignZW52TWFwJykgPiAtMSAmJiB0aGlzLkZpbGVJc0ltYWdlKGZpbGUubmFtZSkpIHtcclxuICAgICAgICAgIGFsbExvYWRlZC5wdXNoKHppcENvbnRlbnQuZmlsZXNbZmlsZU5hbWVdLmFzeW5jKCdiYXNlNjQnKS50aGVuKChlbnZNYXBGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MuZW52TWFwID0gYGRhdGE6aW1hZ2UvJHt0aGlzLkdldEJhc2U2NEZpbGVUeXBlKGZpbGUubmFtZSl9O2Jhc2U2NCwke2Vudk1hcEZpbGV9YDtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3MuZW52TWFwRmlsZW5hbWUgPSBmaWxlTmFtZTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ3NoZWVuQ29sb3JNYXAnKSA+IC0xICYmIHRoaXMuRmlsZUlzSW1hZ2UoZmlsZS5uYW1lKSkge1xyXG4gICAgICAgICAgYWxsTG9hZGVkLnB1c2goemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV0uYXN5bmMoJ2Jhc2U2NCcpLnRoZW4oKHNoZWVuQ29sb3JNYXBGaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3Muc2hlZW5Db2xvck1hcCA9IGBkYXRhOmltYWdlLyR7dGhpcy5HZXRCYXNlNjRGaWxlVHlwZShmaWxlLm5hbWUpfTtiYXNlNjQsJHtzaGVlbkNvbG9yTWFwRmlsZX1gO1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5zaGVlbkNvbG9yTWFwRmlsZW5hbWUgPSBmaWxlTmFtZTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ3NoZWVuUm91Z2huZXNzTWFwJykgPiAtMSAmJiB0aGlzLkZpbGVJc0ltYWdlKGZpbGUubmFtZSkpIHtcclxuICAgICAgICAgIGFsbExvYWRlZC5wdXNoKHppcENvbnRlbnQuZmlsZXNbZmlsZU5hbWVdLmFzeW5jKCdiYXNlNjQnKS50aGVuKChzaGVlblJvdWdobmVzc01hcEZpbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5zaGVlblJvdWdobmVzc01hcCA9IGBkYXRhOmltYWdlLyR7dGhpcy5HZXRCYXNlNjRGaWxlVHlwZShmaWxlLm5hbWUpfTtiYXNlNjQsJHtzaGVlblJvdWdobmVzc01hcEZpbGV9YDtcclxuICAgICAgICAgICAgdmFyaWF0aW9uU2V0dGluZ3Muc2hlZW5Sb3VnaG5lc3NNYXBGaWxlbmFtZSA9IGZpbGVOYW1lO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmlsZS5uYW1lLmluZGV4T2YoJy5qcCcpID4gLTEpIHtcclxuICAgICAgICAgIGFsbExvYWRlZC5wdXNoKHppcENvbnRlbnQuZmlsZXNbZmlsZU5hbWVdLmFzeW5jKCdiYXNlNjQnKS50aGVuKCh0ZXh0dXJlRmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLnRleHR1cmUgPSAnZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwnICsgdGV4dHVyZUZpbGU7XHJcbiAgICAgICAgICAgIHZhcmlhdGlvblNldHRpbmdzLnRleHR1cmVGaWxlbmFtZSA9IGZpbGVOYW1lO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZmlsZS5uYW1lLmluZGV4T2YoJy5qc29uJykgPiAtMSkge1xyXG4gICAgICAgICAgYWxsTG9hZGVkLnB1c2goemlwQ29udGVudC5maWxlc1tmaWxlTmFtZV0uYXN5bmMoJ3N0cmluZycpLnRoZW4oKHNldHRpbmdzRmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNldHRpbmdzRmlsZU9iaiA9IEpTT04ucGFyc2Uoc2V0dGluZ3NGaWxlKTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gc2V0dGluZ3NGaWxlT2JqKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHNldHRpbmdzRmlsZU9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICB2YXJpYXRpb25TZXR0aW5ncy5zZXR0aW5nc1trZXldID0gc2V0dGluZ3NGaWxlT2JqW2tleV07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBhd2FpdCBQcm9taXNlLmFsbChhbGxMb2FkZWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgTG9hZE1hdGVyaWFsRnJvbUpzb24obWF0ZXJpYWw6IGFueSk6IFRIUkVFLk1hdGVyaWFsIHtcclxuICAgIGNvbnN0IGxvYWRlciA9IG5ldyBUSFJFRS5NYXRlcmlhbExvYWRlcigpO1xyXG4gICAgaWYgKG1hdGVyaWFsLnRleHR1cmVzKSB7XHJcbiAgICAgIGNvbnN0IHRleHR1cmVzOiB7fSA9IHt9O1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdGVyaWFsLnRleHR1cmVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdGV4dHVyZXNbbWF0ZXJpYWwudGV4dHVyZXNbaV0udXVpZF0gPSBtYXRlcmlhbC50ZXh0dXJlc1tpXTtcclxuICAgICAgfVxyXG4gICAgICBsb2FkZXIuc2V0VGV4dHVyZXModGV4dHVyZXMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxvYWRlci5wYXJzZShtYXRlcmlhbCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBMb2FkTWF0ZXJpYWxGcm9tR2xiKG1hdGVyaWFsOiBhbnkpOiBQcm9taXNlPFRIUkVFLk1hdGVyaWFsPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmU6IEZ1bmN0aW9uLCByZWplY3Q6IEZ1bmN0aW9uKSA9PiB7XHJcbiAgICAgIGlmICghd2luZG93Lmhhc093blByb3BlcnR5KCdsb2FkR0xURicpKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignbG9hZEdMVEYgbm90IGRlZmluZWQgaW4gd2luZG93IGdsb2JhbCcpO1xyXG4gICAgICAgIHJldHVybiByZWplY3QoKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBvYmo6IFRIUkVFLk9iamVjdDNEID0gYXdhaXQgKHdpbmRvdyBhcyBhbnkpLmxvYWRHTFRGKG1hdGVyaWFsLCBmYWxzZSk7XHJcbiAgICAgIGlmIChvYmopIHtcclxuICAgICAgICByZXR1cm4gcmVzb2x2ZSgob2JqLmNoaWxkcmVuWzBdIGFzIE1lc2gpLm1hdGVyaWFsKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBMb2FkRmlsZUNvbnRlbnRGcm9tWmlwKHppcDogYW55LCBmaWxlTmFtZTogc3RyaW5nLCBiYXNlNjQ6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24pID0+IHtcclxuICAgICAgaWYgKHppcCAmJiBmaWxlTmFtZSkge1xyXG4gICAgICAgIHppcC5hc3luYyhiYXNlNjQgPyAnYmFzZTY0JyA6ICdzdHJpbmcnKS50aGVuKChmaWxlQ29udGVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoYmFzZTY0KSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUoYGRhdGE6aW1hZ2UvJHt0aGlzLkdldEJhc2U2NEZpbGVUeXBlKGZpbGVOYW1lKX07YmFzZTY0LCR7ZmlsZUNvbnRlbnR9YCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXNvbHZlKGZpbGVDb250ZW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXNvbHZlKHVuZGVmaW5lZCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgRmlsZUlzSW1hZ2UoZmlsZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZXh0OiBzdHJpbmcgPSBmaWxlTmFtZS5zdWJzdHJpbmcoZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKSArIDEsIGZpbGVOYW1lLmxlbmd0aCkudG9Mb3dlckNhc2UoKTtcclxuICAgIHN3aXRjaCAoZXh0KSB7XHJcbiAgICAgIGNhc2UgJ2pwZyc6XHJcbiAgICAgIGNhc2UgJ2pwZWcnOlxyXG4gICAgICBjYXNlICdwbmcnOlxyXG4gICAgICBjYXNlICdibXAnOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIEdldEJhc2U2NEZpbGVUeXBlKGZpbGVOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZXh0OiBzdHJpbmcgPSBmaWxlTmFtZS5zdWJzdHJpbmcoZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKSArIDEsIGZpbGVOYW1lLmxlbmd0aCkudG9Mb3dlckNhc2UoKTtcclxuICAgIHN3aXRjaCAoZXh0KSB7XHJcbiAgICAgIGNhc2UgJ2pwZyc6XHJcbiAgICAgIGNhc2UgJ2pwZWcnOlxyXG4gICAgICAgIHJldHVybiAnanBlZyc7XHJcbiAgICAgIGNhc2UgJ3BuZyc6XHJcbiAgICAgICAgcmV0dXJuICdwbmcnO1xyXG4gICAgICBjYXNlICdibXAnOlxyXG4gICAgICAgIHJldHVybiAnYm1wJztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJ2pwZWcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gR2V0IHRoZSBjb250ZW50XHJcbiAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgR2V0WmlwQ29udGVudChmaWxlKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGpzemlwID0gbmV3IEpTWmlwKCk7XHJcbiAgICAgIHJldHVybiBhd2FpdCBqc3ppcC5sb2FkQXN5bmMoZmlsZSk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -720,11 +720,15 @@ class VariationUtils {
720
720
  repeaty: index.repeat.repeaty
721
721
  };
722
722
  }
723
- // variationSettings.settings =
724
- // await VariationUtils.LoadFileContentFromZip(zipContent.files['repeat.json'], 'repeat.json', false) || {};
725
723
  variationSettings.metalness = index.metalness;
726
724
  variationSettings.roughness = index.roughness;
727
- variationSettings.sheen = index.sheen;
725
+ if (index.sheen && typeof index.sheen === 'object') {
726
+ variationSettings.sheen = 1;
727
+ variationSettings.sheenColor = new THREE.Color(index.sheen.r, index.sheen.g, index.sheen.b);
728
+ }
729
+ else {
730
+ variationSettings.sheen = index.sheen;
731
+ }
728
732
  if (index.sheenColor) {
729
733
  variationSettings.sheenColor = new THREE.Color(index.sheenColor.r, index.sheenColor.g, index.sheenColor.b);
730
734
  }