dcl-npc-toolkit 1.5.2-20251229114702.commit-02ef366 → 1.5.2-20251229114921.commit-4a0a155

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.
package/README.md CHANGED
@@ -275,7 +275,16 @@ To configure other properties of an NPC, add a fourth argument as an `NPCData` o
275
275
 
276
276
  - `textBubble`: _(boolean)_ If true, NPC starts with a speech bubble object ready to be accessed from the start. Otherwise, they text bubble is only built on the first call to `talkBubble()` on the NPC.
277
277
 
278
- - `noUI`: _(boolean)_ If true, no UI object is built for UI dialogs for this NPC. This may help optimize the scene if this feature is not used.
278
+ - `noUI`: _(boolean)_ If true, no UI object is built for UI dialogs for this NPC. This may help optimize the scene if this feature is not used.
279
+
280
+
281
+ - `volume`: _(number)_ Controls dialogue audio volume, ranging from 0 to 1, default is 0.5.".
282
+
283
+
284
+
285
+
286
+
287
+
279
288
 
280
289
  ```ts
281
290
  export let myNPC = npc.create(
package/dist/dialog.js CHANGED
@@ -265,24 +265,14 @@ export function openDialog(npc, dialog, startIndex) {
265
265
  dialogData.index = startIndex;
266
266
  console.log('dialog data is now', dialogData);
267
267
  let currentText = dialog[startIndex] ? dialog[startIndex] : { text: '' };
268
- if (currentText.audio) {
269
- AudioSource.createOrReplace(dialogData.soundPlayer, {
270
- audioClipUrl: currentText.audio,
271
- loop: false,
272
- playing: false
273
- });
274
- let audio = AudioSource.getMutable(dialogData.soundPlayer);
275
- audio.volume = 0.5;
276
- audio.playing = true;
277
- }
278
- else if (dialogData.sound) {
268
+ if (dialogData.sound) {
279
269
  AudioSource.createOrReplace(dialogData.soundPlayer, {
280
270
  audioClipUrl: dialogData.sound,
281
271
  loop: false,
282
272
  playing: false
283
273
  });
284
274
  let audio = AudioSource.getMutable(dialogData.soundPlayer);
285
- audio.volume = 0.5;
275
+ audio.volume = npcDataComponent.get(npc).volume;
286
276
  audio.playing = true;
287
277
  }
288
278
  beginTyping(npc);
@@ -304,6 +294,16 @@ function beginTyping(npc) {
304
294
  dialogData.displayImage = false;
305
295
  dialogData.skipable = false;
306
296
  let currentText = dialogData.script[dialogData.index] ? dialogData.script[dialogData.index] : { text: '' };
297
+ if (currentText.audio) {
298
+ AudioSource.createOrReplace(dialogData.soundPlayer, {
299
+ audioClipUrl: currentText.audio,
300
+ loop: false,
301
+ playing: false
302
+ });
303
+ let audio = AudioSource.getMutable(dialogData.soundPlayer);
304
+ audio.volume = npcDataComponent.get(npc).volume;
305
+ audio.playing = true;
306
+ }
307
307
  if (currentText.portrait) {
308
308
  dialogData.currentPortrait = currentText.portrait.path;
309
309
  dialogData.portraitX = currentText.portrait.offsetX
@@ -545,4 +545,4 @@ export function closeTag(dialogData, newChars) {
545
545
  }
546
546
  return;
547
547
  }
548
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2RpYWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFVLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBYyxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFZLFdBQVcsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNsSixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTlDLE9BQU8sRUFBcUIsUUFBUSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hJLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHaEQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQXFCLElBQUksR0FBRyxFQUFFLENBQUE7QUFDN0QsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQXFCLElBQUksR0FBRyxFQUFFLENBQUE7QUFDakUsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQW9CLElBQUksR0FBRyxFQUFFLENBQUE7QUFFaEUsTUFBTSxDQUFOLElBQVksV0FNVDtBQU5ILFdBQVksV0FBVztJQUNuQixtREFBVyxDQUFBO0lBQ1gsaURBQVUsQ0FBQTtJQUNWLDZDQUFRLENBQUE7SUFDUixtREFBVyxDQUFBO0lBQ1gsbURBQVcsQ0FBQTtBQUNiLENBQUMsRUFOUyxXQUFXLEtBQVgsV0FBVyxRQU1wQjtBQUVILE1BQU0sQ0FBQyxJ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UUFDN0MsVUFBVSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUE7SUFDdEUsQ0FBQztJQUVELElBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFDLENBQUM7UUFDL0MsVUFBVSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUE7SUFDNUIsQ0FBQztTQUNHLENBQUM7UUFDSCxVQUFVLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQTtJQUM3QixDQUFDO0lBRUQsSUFBRyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUMsQ0FBQztRQUM1QyxVQUFVLENBQUMsa0JBQWtCLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQTtRQUM5RSxVQUFVLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsaUJBQWlCLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUMvSixVQUFVLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsaUJBQWlCLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7UUFDOUosVUFBVSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUs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SSxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsWUFBWSxHQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLFlBQVksRUFBRyxDQUFDLEVBQUUsRUFBQyxDQUFDO1FBRS9FLElBQUcsQ0FBQyxPQUFPLEVBQUMsQ0FBQztZQUNYLElBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBQyxDQUFDO2dCQUMxQyxPQUFPLEdBQUUsSUFBSSxDQUFBO1lBRWYsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBRyxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFDLENBQUM7Z0JBQzFDLFFBQVEsR0FBRSxJQUFJLENBQUE7WUFFaEIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBRyxDQUFDLE9BQU8sSUFBSSxRQUFRLEVBQUMsQ0FBQztRQUN2QixPQUFNO0lBQ1IsQ0FBQztJQUVELE9BQU0sVUFBVSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsWUFBWSxHQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUMsQ0FBQztRQUM3SCxVQUFVLENBQUMsWUFBWSxJQUFFLENBQUMsQ0FBQTtJQUM1QixDQUFDO0lBQ0QsT0FBTTtBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IEF1ZGlvU291cmNlLCBFbnRpdHksIGVuZ2luZSB9IGZyb20gXCJAZGNsL3Nkay9lY3NcIjtcbmltcG9ydCB7IGFjdGl2ZU5QQywgY2xlYXJOUEMsIGNsb3NlRGlhbG9nV2luZG93LCBmb2xsb3dQYXRoLCBpc0FjdGl2ZU5wY1NldCwgbnBjRGF0YUNvbXBvbmVudCwgc2V0QWN0aXZlTlBDLCBzdG9wUGF0aCwgc3RvcFdhbGtpbmcgfSBmcm9tIFwiLi9ucGNcIjtcbmltcG9ydCB7IElzVHlwaW5nRGlhbG9nIH0gZnJvbSBcIi4vY29tcG9uZW50c1wiO1xuaW1wb3J0IHsgaGFuZGxlRGlhbG9nVHlwaW5nIH0gZnJvbSBcIi4vc3lzdGVtc1wiO1xuaW1wb3J0IHsgRGlhbG9nLCBJbWFnZURhdGEsIE5QQ1N0YXRlIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IGxlZnRDbGlja1NlY3Rpb24sIGxlZnRDbGlja1NlY3Rpb25iQmxhY2ssIGxpZ2h0VGhlbWUsIHNlY3Rpb24sIHNraXBCdXR0b25TZWN0aW9uLCBza2lwQnV0dG9uU2VjdGlvbkJsYWNrIH0gZnJvbSAnLi91aSc7XG5pbXBvcnQgeyBnZXRCdWJibGVUZXh0TGVuZ3RoIH0gZnJvbSAnLi9idWJibGUnO1xuaW1wb3J0IHsgQ29sb3I0IH0gZnJvbSAnQGRjbC9zZGsvbWF0aCc7XG5pbXBvcnQgeyBkZWxheWVkRnVuY3Rpb24gfSBmcm9tICcuL3V0aWxzL3V0aWxzJztcblxuXG5leHBvcnQgY29uc3QgbnBjRGlhbG9nQ29tcG9uZW50OiBNYXA8RW50aXR5LCBhbnk+ID0gbmV3IE1hcCgpXG5leHBvcnQgY29uc3QgbnBjRGlhbG9nVHlwaW5nU3lzdGVtczogTWFwPEVudGl0eSwgYW55PiA9IG5ldyBNYXAoKVxuZXhwb3J0IGNvbnN0IG5wY0RpYWxvZ0lucHV0TGlzdGVuZXI6IE1hcDxFbnRpdHksYW55PiA9IG5ldyBNYXAoKVxuXG5leHBvcnQgZW51bSBDb25maXJtTW9kZSB7XG4gICAgQ29uZmlybSA9IDAsXG4gICAgQ2FuY2VsID0gMSxcbiAgICBOZXh0ID0gMixcbiAgICBCdXR0b24zID0gMyxcbiAgICBCdXR0b240ID0gNFxuICB9XG5cbmV4cG9ydCBsZXQgVUlzY2FsZU11bHRpcGxpZXIgPSAwLjc1XG5cbmxldCBwb3J0cmFpdFhQb3MgPSAtNTAgKiBVSXNjYWxlTXVsdGlwbGllciBcbmxldCBwb3J0cmFpdFlQb3MgPSAyMCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5cbmxldCBpbWFnZVhQb3MgPSAzNTAgKiBVSXNjYWxlTXVsdGlwbGllclxubGV0IGltYWdlWVBvcyA9IDUwICogVUlzY2FsZU11bHRpcGxpZXJcblxubGV0IHBvcnRyYWl0U2NhbGUgPSAyNTYgKiBVSXNjYWxlTXVsdGlwbGllciBcbmxldCBpbWFnZVNjYWxlID0gMjU2ICogVUlzY2FsZU11bHRpcGxpZXIgXG5cbmxldCB0ZXh0U2l6ZSA9IDI0ICogVUlzY2FsZU11bHRpcGxpZXJcbmxldCB0ZXh0WVBvcyA9IDEwICogVUlzY2FsZU11bHRpcGxpZXJcblxubGV0IGJ1dHRvbldpZHRoID0gMTc0KiBVSXNjYWxlTXVsdGlwbGllclxubGV0IGJ1dHRvbkhlaWdodCA9IDQ2KiBVSXNjYWxlTXVsdGlwbGllclxuXG5cbmxldCBidXR0b25UZXh0U2l6ZSA9IDIwICogVUlzY2FsZU11bHRpcGxpZXJcblxubGV0IGJ1dHRvbjFYUG9zID0gMTUwICogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBidXR0b24yWFBvcyA9IC04MCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgYnV0dG9uM1hQb3MgPSAtODAgKiBVSXNjYWxlTXVsdGlwbGllclxubGV0IGJ1dHRvbjRYUG9zID0gMTUwICogVUlzY2FsZU11bHRpcGxpZXJcblxubGV0IGJ1dHRvbjFZUG9zID0gLTY1ICogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBidXR0b24yWVBvcyA9IC02NSAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgYnV0dG9uMVlQb3M0ID0gLTIwICogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBidXR0b24yWVBvczQgPSAtMjAgKiBVSXNjYWxlTXVsdGlwbGllclxubGV0IGJ1dHRvbjNZUG9zID0gLTgwICogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBidXR0b240WVBvcyA9IC04MCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5cbmxldCBza2lwQnV0dG9uWFBvcyA9IC0zMDAgKiBVSXNjYWxlTXVsdGlwbGllclxubGV0IHNraXBCdXR0b25ZUG9zID0gLTEwMCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5cbmxldCBidXR0b25JY29uV2lkdGggPSAyNiAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgYnV0dG9uSWNvbkhlaWdodCA9IDI2ICogVUlzY2FsZU11bHRpcGxpZXJcblxuLy9cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZERpYWxvZyhucGM6RW50aXR5LCBzb3VuZD86c3RyaW5nLCBkZWZhdWx0UG9ydHJhaXQ/OkltYWdlRGF0YSl7XG4gICAgY29uc29sZS5sb2coJ2FkZGluZyBkaWFsb2cgZm9yIG5wYycsIG5wYylcbiAgICBucGNEaWFsb2dDb21wb25lbnQuc2V0KG5wYywge1xuICAgICAgICB0eXBpbmc6dHJ1ZSxcbiAgICAgICAgdmlzaWJsZTpmYWxzZSxcbiAgICAgICAgdmlzaWJsZVRleHQ6XCJcIixcbiAgICAgICAgdmlzaWJsZUNoYXJzOjAsXG4gICAgICAgIGZ1bGxUZXh0OlwiXCIsXG4gICAgICAgIHRpbWVyOjAsXG4gICAgICAgIHNwZWVkOjMwLFxuICAgICAgICBvcmlnaW5hbFNjcmlwdDpbXSxcbiAgICAgICAgc2NyaXB0OltdLFxuICAgICAgICBpbmRleDowLFxuICAgICAgICBzb3VuZDogc291bmQgPyBzb3VuZCA6IHVuZGVmaW5lZCxcbiAgICAgICAgc291bmRQbGF5ZXI6IHNvdW5kID8gZW5naW5lLmFkZEVudGl0eSgpIDogdW5kZWZpbmVkLFxuICAgICAgICBmb250U2l6ZToyMixcbiAgICAgICAgaXNRdWVzdGlvbjpmYWxzZSxcbiAgICAgICAgYnV0dG9uczowLFxuICAgICAgICBkaXNwbGF5UG9ydHJhaXQ6IGRlZmF1bHRQb3J0cmFpdCA/IHRydWUgOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdFBvcnRyYWl0OiBkZWZhdWx0UG9ydHJhaXQgPyBkZWZhdWx0UG9ydHJhaXQgOiBudWxsLFxuICAgICAgICBkZWZhdWx0UG9ydHJhaXRUZXh0dXJlOiBkZWZhdWx0UG9ydHJhaXQgPyBkZWZhdWx0UG9ydHJhaXQucGF0aCA6IGxpZ2h0VGhlbWUsXG4gICAgICAgIGN1cnJlbnRQb3J0cmFpdDogZGVmYXVsdFBvcnRyYWl0ID8gZGVmYXVsdFBvcnRyYWl0LnBhdGggOiBsaWdodFRoZW1lLFxuICAgICAgICBwb3J0cmFpdFdpZHRoOiBkZWZhdWx0UG9ydHJhaXQgJiYgZGVmYXVsdFBvcnRyYWl0LndpZHRoID8gZGVmYXVsdFBvcnRyYWl0LndpZHRoICogVUlzY2FsZU11bHRpcGxpZXIgOiBwb3J0cmFpdFNjYWxlLFxuICAgICAgICBwb3J0cmFpdEhlaWdodDogZGVmYXVsdFBvcnRyYWl0ICYmIGRlZmF1bHRQb3J0cmFpdC5oZWlnaHQgPyBkZWZhdWx0UG9ydHJhaXQuaGVpZ2h0ICogVUlzY2FsZU11bHRpcGxpZXIgOiBwb3J0cmFpdFNjYWxlLFxuICAgICAgICBwb3J0cmFpdFg6IGRlZmF1bHRQb3J0cmFpdCAmJiBkZWZhdWx0UG9ydHJhaXQub2Zmc2V0WCA/IGRlZmF1bHRQb3J0cmFpdC5vZmZzZXRYICogVUlzY2FsZU11bHRpcGxpZXIgKyBwb3J0cmFpdFhQb3MgOiBwb3J0cmFpdFhQb3MsXG4gICAgICAgIHBvcnRyYWl0WTogIGRlZmF1bHRQb3J0cmFpdCAmJiBkZWZhdWx0UG9ydHJhaXQub2Zmc2V0WSA/IGRlZmF1bHRQb3J0cmFpdC5vZmZzZXRZICogVUlzY2FsZU11bHRpcGxpZXIgKyBwb3J0cmFpdFlQb3MgOiBwb3J0cmFpdFlQb3MsXG4gICAgICAgIHBvcnRhaXRTSGVpZ2h0OiBkZWZhdWx0UG9ydHJhaXQgJiYgZGVmYXVsdFBvcnRyYWl0LnNlY3Rpb24gJiYgZGVmYXVsdFBvcnRyYWl0LnNlY3Rpb24uc291cmNlSGVpZ2h0ID8gZGVmYXVsdFBvcnRyYWl0LnNlY3Rpb24uc291cmNlSGVpZ2h0IDogMjU2LFxuICAgICAgICBwb3J0cmFpdFNXaWR0aDogZGVmYXVsdFBvcnRyYWl0ICYmIGRlZmF1bHRQb3J0cmFpdC5zZWN0aW9uICYmIGRlZmF1bHRQb3J0cmFpdC5zZWN0aW9uLnNvdXJjZVdpZHRoID8gZGVmYXVsdFBvcnRyYWl0LnNlY3Rpb24uc291cmNlV2lkdGggOiAyNTYsXG4gICAgICAgIHBvcnRhaXRTVG9wOiBkZWZhdWx0UG9ydHJhaXQgJiYgZGVmYXVsdFBvcnRyYWl0LnNlY3Rpb24gJiYgZGVmYXVsdFBvcnRyYWl0LnNlY3Rpb24uc291cmNlVG9wID8gZGVmYXVsdFBvcnRyYWl0LnNlY3Rpb24uc291cmNlVG9wIDogMCxcbiAgICAgICAgcG9ydHJhaXRTTGVmdDogZGVmYXVsdFBvcnRyYWl0ICYmIGRlZmF1bHRQb3J0cmFpdC5zZWN0aW9uICYmIGRlZmF1bHRQb3J0cmFpdC5zZWN0aW9uLnNvdXJjZUxlZnQgPyBkZWZhdWx0UG9ydHJhaXQuc2VjdGlvbi5zb3VyY2VMZWZ0IDogMFxuICAgIH0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXNwbGF5SW1hZ2UoKXtcbiAgcmV0dXJuICFpc0FjdGl2ZU5wY1NldCgpID8gZmFsc2UgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykuZGlzcGxheUltYWdlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXNwbGF5UG9ydHJhaXQoKXtcbiAgcmV0dXJuICFpc0FjdGl2ZU5wY1NldCgpID8gZmFsc2UgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykuZGlzcGxheVBvcnRyYWl0XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXNwbGF5U2tpcGFibGUoKXtcbiAgcmV0dXJuICFpc0FjdGl2ZU5wY1NldCgpID8gZmFsc2UgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykuc2tpcGFibGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNraXBhYmxlVGhlbWUoKXtcbiAgcmV0dXJuICFpc0FjdGl2ZU5wY1NldCgpID8gc2tpcEJ1dHRvblNlY3Rpb25CbGFjayA6IG5wY0RhdGFDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykudGhlbWUgPT0gbGlnaHRUaGVtZSA/IHNraXBCdXR0b25TZWN0aW9uQmxhY2sgOiBza2lwQnV0dG9uU2VjdGlvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGVmdENsaWNrVGhlbWUoKXtcbiAgcmV0dXJuICFpc0FjdGl2ZU5wY1NldCgpID8gbGVmdENsaWNrU2VjdGlvbiA6IG5wY0RhdGFDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykudGhlbWUgPT0gbGlnaHRUaGVtZSA/IGxlZnRDbGlja1NlY3Rpb24gOiBsZWZ0Q2xpY2tTZWN0aW9uYkJsYWNrXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3NpdGlvblRleHRYKCl7XG4gIHJldHVybiAhaXNBY3RpdmVOcGNTZXQoKSA/IFwiXCIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykucG9zaXRpb25YXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3NpdGlvblRleHRZKCl7XG4gIHJldHVybiAhaXNBY3RpdmVOcGNTZXQoKSA/IFwiXCIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykucG9zaXRpb25ZXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3NpdGlvblBvcnRhaXRYKCl7XG4gIHJldHVybiAhaXNBY3RpdmVOcGNTZXQoKSA/IFwiXCIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykucG9ydHJhaXRYXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3NpdGlvblBvcnRhaXRZKCl7XG4gIHJldHVybiAhaXNBY3RpdmVOcGNTZXQoKSA/IFwiXCIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykucG9ydHJhaXRZXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3J0cmFpdFdpZHRoKCl7XG4gIHJldHVybiAhaXNBY3RpdmVOcGNTZXQoKSA/IFwiXCIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykucG9ydHJhaXRXaWR0aFxufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9ydHJhaXRIZWlnaHQoKXtcbiAgcmV0dXJuICFpc0FjdGl2ZU5wY1NldCgpID8gXCJcIiA6IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDKS5wb3J0cmFpdEhlaWdodFxufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9zaXRpb25JbWFnZVgoKXtcbiAgcmV0dXJuICFpc0FjdGl2ZU5wY1NldCgpID8gXCJcIiA6IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDKS5pbWFnZVhcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvc2l0aW9uSW1hZ2VZKCl7XG4gIHJldHVybiAhaXNBY3RpdmVOcGNTZXQoKSA/IFwiXCIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykuaW1hZ2VZXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbWFnZVdpZHRoKCl7XG4gIHJldHVybiAhaXNBY3RpdmVOcGNTZXQoKSA/IFwiXCIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykuaW1hZ2VXaWR0aFxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW1hZ2VIZWlnaHQoKXtcbiAgcmV0dXJuICFpc0FjdGl2ZU5wY1NldCgpID8gXCJcIiA6IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDKS5pbWFnZUhlaWdodFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UG9ydHJhaXQoKXtcbiAgaWYgKCFpc0FjdGl2ZU5wY1NldCgpKSByZXR1cm4gbGlnaHRUaGVtZVxuICBjb25zdCBwID0gbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLmN1cnJlbnRQb3J0cmFpdFxuICByZXR1cm4gdHlwZW9mIHAgPT09ICdzdHJpbmcnICYmIHAubGVuZ3RoID49IDAgPyBwIDogbGlnaHRUaGVtZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW1hZ2UoKXtcbiAgaWYgKCFpc0FjdGl2ZU5wY1NldCgpKSByZXR1cm4gXCJcIlxuICBjb25zdCBpbWcgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykuZGlhbG9nSW1hZ2VUZXh0dXJlXG4gIHJldHVybiB0eXBlb2YgaW1nID09PSAnc3RyaW5nJyA/IGltZyA6IFwiXCJcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRleHQoKXtcbiAgICByZXR1cm4gIWlzQWN0aXZlTnBjU2V0KCkgPyBcIlwiIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLnZpc2libGVUZXh0XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZXh0Q29sb3IoKXtcbiAgcmV0dXJuICFpc0FjdGl2ZU5wY1NldCgpID8gQ29sb3I0LkJsYWNrKCkgOiBucGNEYXRhQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLnRoZW1lID09IGxpZ2h0VGhlbWUgPyBDb2xvcjQuQmxhY2soKSA6IENvbG9yNC5XaGl0ZSgpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUaGVtZSgpe1xuICByZXR1cm4gIWlzQWN0aXZlTnBjU2V0KCkgPyBsaWdodFRoZW1lIDogbnBjRGF0YUNvbXBvbmVudC5nZXQoYWN0aXZlTlBDKS50aGVtZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QnV0dG9uVGV4dChidXR0b246bnVtYmVyKXtcbiAgICBsZXQgdGV4dCA9IFwiXCJcblxuICAgIGlmKGFjdGl2ZU5QQyAhPSAwICYmIG5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDKSl7XG4gICAgICAgIGxldCBkaWFsb2dEYXRhID0gbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpXG4gICAgICAgIGlmKGRpYWxvZ0RhdGEuaXNRdWVzdGlvbiAmJiBkaWFsb2dEYXRhLmJ1dHRvbnMgPiBidXR0b24pe1xuICAgICAgICAgICAgdGV4dCA9IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmJ1dHRvbnNbYnV0dG9uXS5sYWJlbFxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0ZXh0XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRidXR0b25TaXplKGJ1dHRvbjpudW1iZXIpIHtcbiAgbGV0IEJ1dHRvblNpemU6IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZFxuICBpZiAoYWN0aXZlTlBDICE9IDAgJiYgbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMpKSB7XG4gICAgICBsZXQgZGlhbG9nRGF0YSA9IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDKTtcbiAgICAgIGlmIChkaWFsb2dEYXRhLmlzUXVlc3Rpb24gJiYgZGlhbG9nRGF0YS5idXR0b25zID4gYnV0dG9uKSB7XG4gICAgICAgICAgaWYgKGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmJ1dHRvbnNbYnV0dG9uXS5zaXplICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgQnV0dG9uU2l6ZSA9IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmJ1dHRvbnNbYnV0dG9uXT8uc2l6ZTtcbiAgICAgICAgICB9XG4gICAgICB9XG4gIH1cbiAgcmV0dXJuIEJ1dHRvblNpemVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZvbnRTaXplKCl7XG4gICAgcmV0dXJuICFpc0FjdGl2ZU5wY1NldCgpID8gMjIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykuZm9udFNpemVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEJ1dHRvbkZvbnRTaXplKGJ1dHRvbjpudW1iZXIpe1xuICBsZXQgQnV0dG9uRm9udFNpemU6IG51bWJlciA9IDBcbiAgaWYgKGFjdGl2ZU5QQyAhPSAwICYmIG5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDKSkge1xuICAgICAgbGV0IGRpYWxvZ0RhdGEgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyk7XG4gICAgICBpZiAoZGlhbG9nRGF0YS5pc1F1ZXN0aW9uICYmIGRpYWxvZ0RhdGEuYnV0dG9ucyA+IGJ1dHRvbikge1xuICAgICAgICAgIGlmIChkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5idXR0b25zW2J1dHRvbl0uZm9udFNpemUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgQnV0dG9uRm9udFNpemUgPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5idXR0b25zW2J1dHRvbl0/LmZvbnRTaXplO1xuICAgICAgICAgIH0gZWxzZSB7QnV0dG9uRm9udFNpemUgPSAxNn1cbiAgICAgIH1cbiAgfVxuICByZXR1cm4gQnV0dG9uRm9udFNpemVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3BsYXlEaWFsb2coKXtcbiAgICByZXR1cm4gIWlzQWN0aXZlTnBjU2V0KCkgPyBmYWxzZSA6ICBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykudmlzaWJsZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2luZG93SGVpZ2h0KCkge1xuICBsZXQgd2luZG93SGVpZ2h0czogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkXG4gIGlmIChhY3RpdmVOUEMgIT0gMCAmJiBucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQykpIHtcbiAgICAgIGxldCBkaWFsb2dEYXRhID0gbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpO1xuICAgICAgaWYgKGRpYWxvZ0RhdGEuaXNRdWVzdGlvbikge1xuICAgICAgICAgIGlmIChkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS53aW5kb3dIZWlnaHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgd2luZG93SGVpZ2h0cyA9IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdPy53aW5kb3dIZWlnaHQ7XG4gICAgICAgICAgfVxuICAgICAgfVxuICB9XG4gIHJldHVybiB3aW5kb3dIZWlnaHRzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXNwbGF5QnV0dG9uKGJ1dHRvbjpudW1iZXIpe1xuICAgIHJldHVybiAhaXNBY3RpdmVOcGNTZXQoKSA/IGZhbHNlIDogIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDKS5pc1F1ZXN0aW9uICYmIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDKS5idXR0b25zID49IGJ1dHRvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGxheUZpcnN0QnV0dG9uQ29udGFpbmVyKCl7XG4gICAgcmV0dXJuICFpc0FjdGl2ZU5wY1NldCgpID8gZmFsc2UgOiAgbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLmlzUXVlc3Rpb24gJiYgbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLmJ1dHRvbnMgPj0gMVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGxheVNlY29uZEJ1dHRvbkNvbnRhaW5lcigpe1xuICAgIHJldHVybiAhaXNBY3RpdmVOcGNTZXQoKSA/IGZhbHNlIDogIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDKS5pc1F1ZXN0aW9uICYmIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDKS5idXR0b25zID49IDNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRleHRQb3NpdGlvbigpe1xuICAgIC8vY29uc29sZS5sb2cobnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLmJ1dHRvbnMpXG4gICAgcmV0dXJuICFpc0FjdGl2ZU5wY1NldCgpID8ge3RvcDowLCBsZWZ0OjB9IDoge3RvcDpucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykubWFyZ2luICsgbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLnBvc2l0aW9uWSwgbGVmdDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLnBvc2l0aW9uWH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1dHRvbkNsaWNrKGJ1dHRvbjpudW1iZXIpe1xuICAgIGlmKGlzQWN0aXZlTnBjU2V0KCkpe1xuICAgICAgICBjb25maXJtVGV4dChhY3RpdmVOUEMsIGJ1dHRvbilcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbG9zZURpYWxvZyhucGM6RW50aXR5KXtcbiAgICBsZXQgZGlhbG9nRGF0YSA9IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQobnBjKVxuICAgIGlmKCFkaWFsb2dEYXRhKSByZXR1cm5cbiAgICBkaWFsb2dEYXRhLnZpc2libGUgPSBmYWxzZVxuICAgIGRpYWxvZ0RhdGEudHlwaW5nID0gZmFsc2VcbiAgICBkaWFsb2dEYXRhLnZpc2libGVUZXh0ID0gXCJcIlxuICAgIGRpYWxvZ0RhdGEudmlzaWJsZUNoYXJzID0gMFxuICAgIGRpYWxvZ0RhdGEuZnVsbFRleHQgPSBcIlwiXG4gICAgZGlhbG9nRGF0YS50aW1lciA9IDBcbiAgICBkaWFsb2dEYXRhLmluZGV4ID0gMFxuICAgIGRpYWxvZ0RhdGEuc2NyaXB0Lmxlbmd0aCA9IDBcbiAgICBkaWFsb2dEYXRhLmJ1dHRvbnMgPSAwXG4gICAgZGlhbG9nRGF0YS5tYXJnaW4gPSAwXG4gICAgZGlhbG9nRGF0YS5kaXNwbGF5UG9ydHJhaXQgPSBmYWxzZVxuICAgIGRpYWxvZ0RhdGEuc2tpcGFibGUgPSBmYWxzZVxuICAgIGRpYWxvZ0RhdGEuZGlzcGxheUltYWdlID0gZmFsc2VcbiAgICBjb25zb2xlLmxvZygnZGlhbG9nIGRhdGEgaXMgbm93ICcsIGRpYWxvZ0RhdGEpXG5cbiAgICBpZihJc1R5cGluZ0RpYWxvZy5oYXMobnBjKSl7XG4gICAgICBJc1R5cGluZ0RpYWxvZy5kZWxldGVGcm9tKG5wYylcbiAgICB9XG4gICAgLy8gaWYobnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS5tYW51YWxTdG9wKXtcbiAgICAvLyAgIGNvbnNvbGUubG9nKCdkaWFsb2cgZW5kZWQsIG5lZWR0byB3YWxrIGFnYWluJylcbiAgICAvLyAgIGZvbGxvd1BhdGgobnBjKVxuICAgIC8vIH1cbiAgICBjbGVhck5QQygpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWxrKG5wYzpFbnRpdHksIGRpYWxvZzpEaWFsb2dbXSwgc3RhcnRJbmRleD86bnVtYmVyIHwgc3RyaW5nLCBkdXJhdGlvbj86bnVtYmVyKXtcbiAgICBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLmludHJvZHVjZWQgPSB0cnVlXG4gICAgaWYobnBjRGlhbG9nQ29tcG9uZW50LmhhcyhucGMpKXtcblxuICAgICAgICBzZXRBY3RpdmVOUEMobnBjKVxuICAgICAgICBpZihucGNEYXRhQ29tcG9uZW50LmdldChucGMpLnN0YXRlID09IE5QQ1N0YXRlLkZPTExPV1BBVEgpe1xuICAgICAgICAgIGNvbnNvbGUubG9nKFwic3BlYWtpbmcgZGlhbG9nLCBuZWVkIHRvIHN0b3AgcGF0aFwiKVxuICAgICAgICAgIHN0b3BXYWxraW5nKG5wYylcbiAgICAgICAgfVxuXG4gICAgICAgIG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykuc3RhdGUgPSBOUENTdGF0ZS5UQUxLSU5HXG5cblxuICAgICAgICBsZXQgaW5kZXg6YW55XG5cbiAgICAgICAgaWYgKCFzdGFydEluZGV4KSB7XG4gICAgICAgICAgaW5kZXggPSAwXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHN0YXJ0SW5kZXggPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgaW5kZXggPSBzdGFydEluZGV4XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaW5kZXggPSBmaW5kRGlhbG9nQnlOYW1lKGRpYWxvZywgc3RhcnRJbmRleClcbiAgICAgICAgfVxuXG4gICAgICAgIG9wZW5EaWFsb2cobnBjLGRpYWxvZywgaW5kZXgpXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gb3BlbkRpYWxvZyhucGM6RW50aXR5LCBkaWFsb2c6RGlhbG9nW10sIHN0YXJ0SW5kZXg6bnVtYmVyKXtcbiAgICBjb25zb2xlLmxvZygnc2NyaXB0IHRvIHRhbGsgaXMnLCBkaWFsb2cpXG4gICAgbGV0IGRpYWxvZ0RhdGEgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYylcbiAgICBkaWFsb2dEYXRhLnNjcmlwdCA9IGRpYWxvZy5zbGljZSgpXG4gICAgZGlhbG9nRGF0YS5pbmRleCA9IHN0YXJ0SW5kZXhcblxuICAgIGNvbnNvbGUubG9nKCdkaWFsb2cgZGF0YSBpcyBub3cnLCBkaWFsb2dEYXRhKVxuICAgIFxuICAgIGxldCBjdXJyZW50VGV4dDogRGlhbG9nID0gZGlhbG9nW3N0YXJ0SW5kZXhdID8gZGlhbG9nW3N0YXJ0SW5kZXhdIDogeyB0ZXh0OiAnJyB9XG5cbiAgICBpZiAoY3VycmVudFRleHQuYXVkaW8pIHtcbiAgICAgICAgQXVkaW9Tb3VyY2UuY3JlYXRlT3JSZXBsYWNlKGRpYWxvZ0RhdGEuc291bmRQbGF5ZXIsIHtcbiAgICAgICAgICAgIGF1ZGlvQ2xpcFVybDogY3VycmVudFRleHQuYXVkaW8sXG4gICAgICAgICAgICBsb29wOiBmYWxzZSxcbiAgICAgICAgICAgIHBsYXlpbmc6IGZhbHNlXG4gICAgICAgIH0pXG4gICAgICAgIGxldCBhdWRpbyA9IEF1ZGlvU291cmNlLmdldE11dGFibGUoZGlhbG9nRGF0YS5zb3VuZFBsYXllcilcbiAgICAgICAgYXVkaW8udm9sdW1lID0gMC41XG4gICAgICAgIGF1ZGlvLnBsYXlpbmcgPSB0cnVlXG4gICAgfSBlbHNlIGlmIChkaWFsb2dEYXRhLnNvdW5kKSB7XG4gICAgICAgIEF1ZGlvU291cmNlLmNyZWF0ZU9yUmVwbGFjZShkaWFsb2dEYXRhLnNvdW5kUGxheWVyLCB7XG4gICAgICAgICAgICBhdWRpb0NsaXBVcmw6IGRpYWxvZ0RhdGEuc291bmQsXG4gICAgICAgICAgICBsb29wOiBmYWxzZSxcbiAgICAgICAgICAgIHBsYXlpbmc6IGZhbHNlXG4gICAgICAgIH0pXG4gICAgICAgIGxldCBhdWRpbyA9IEF1ZGlvU291cmNlLmdldE11dGFibGUoZGlhbG9nRGF0YS5zb3VuZFBsYXllcilcbiAgICAgICAgYXVkaW8udm9sdW1lID0gMC41XG4gICAgICAgIGF1ZGlvLnBsYXlpbmcgPSB0cnVlXG4gICAgfVxuXG4gICAgLy9UT0RPXG4gICAgLy9zZXQgaW1hZ2Ugb24gdGhlIHJpZ2h0XG4gICAgLy9zZXQgdGV4dFxuICAgIGJlZ2luVHlwaW5nKG5wYylcbn0gXG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRMaW5lQnJlYWsodGV4dDpzdHJpbmcsIGJ1YmJsZT86Ym9vbGVhbil7XG4gIHJldHVybiBsaW5lQnJlYWsodGV4dCwgYnViYmxlPyBnZXRCdWJibGVUZXh0TGVuZ3RoKHRleHQpISA6IDQ1KVxufVxuXG5mdW5jdGlvbiBiZWdpblR5cGluZyhucGM6RW50aXR5KXtcbiAgICBsZXQgZGlhbG9nRGF0YSA9IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQobnBjKVxuICAgIGRpYWxvZ0RhdGEuZnVsbFRleHQgPSBhZGRMaW5lQnJlYWsoZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0udGV4dCkgLy9kaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS50ZXh0XG4gICAgZGlhbG9nRGF0YS52aXNpYmxlID0gdHJ1ZVxuICAgIGRpYWxvZ0RhdGEudHlwaW5nID0gdHJ1ZVxuICAgIGRpYWxvZ0RhdGEudmlzaWJsZVRleHQgPSBcIlwiXG4gICAgZGlhbG9nRGF0YS52aXNpYmxlQ2hhcnMgPSAwXG4gICAgZGlhbG9nRGF0YS50aW1lciA9IDBcbiAgICBkaWFsb2dEYXRhLmlzUXVlc3Rpb24gPSBmYWxzZVxuICAgIGRpYWxvZ0RhdGEuYnV0dG9ucyA9IDBcbiAgICBkaWFsb2dEYXRhLmRpc3BsYXlQb3J0cmFpdCA9IGZhbHNlXG4gICAgZGlhbG9nRGF0YS5kaXNwbGF5SW1hZ2UgPSBmYWxzZVxuICAgIGRpYWxvZ0RhdGEuc2tpcGFibGUgPSBmYWxzZVxuXG4gICAgbGV0IGN1cnJlbnRUZXh0OiBEaWFsb2cgPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XSA/IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdIDogeyB0ZXh0OiAnJyB9XG4gICAgaWYoY3VycmVudFRleHQucG9ydHJhaXQpe1xuICAgICAgZGlhbG9nRGF0YS5jdXJyZW50UG9ydHJhaXQgPSBjdXJyZW50VGV4dC5wb3J0cmFpdC5wYXRoXG5cbiAgICAgIGRpYWxvZ0RhdGEucG9ydHJhaXRYID0gY3VycmVudFRleHQucG9ydHJhaXQub2Zmc2V0WFxuICAgICAgPyBjdXJyZW50VGV4dC5wb3J0cmFpdC5vZmZzZXRYICogVUlzY2FsZU11bHRpcGxpZXIgKyBwb3J0cmFpdFhQb3NcbiAgICAgIDogcG9ydHJhaXRYUG9zXG5cbiAgICAgIGRpYWxvZ0RhdGEucG9ydHJhaXRZID0gY3VycmVudFRleHQucG9ydHJhaXQub2Zmc2V0WVxuICAgICAgPyBjdXJyZW50VGV4dC5wb3J0cmFpdC5vZmZzZXRZICogVUlzY2FsZU11bHRpcGxpZXIgKyBwb3J0cmFpdFlQb3NcbiAgICAgIDogcG9ydHJhaXRZUG9zXG5cbiAgICAgIGRpYWxvZ0RhdGEucG9ydHJhaXRXaWR0aCA9IGN1cnJlbnRUZXh0LnBvcnRyYWl0LndpZHRoID8gY3VycmVudFRleHQucG9ydHJhaXQud2lkdGggKiBVSXNjYWxlTXVsdGlwbGllciA6IHBvcnRyYWl0U2NhbGVcblxuICAgICAgZGlhbG9nRGF0YS5wb3J0cmFpdEhlaWdodCA9IGN1cnJlbnRUZXh0LnBvcnRyYWl0LmhlaWdodCA/IGN1cnJlbnRUZXh0LnBvcnRyYWl0LmhlaWdodCAqIFVJc2NhbGVNdWx0aXBsaWVyIDogcG9ydHJhaXRTY2FsZVxuICAgICAgZGlhbG9nRGF0YS5kaXNwbGF5UG9ydHJhaXQgPSB0cnVlXG4gICAgfWVsc2UgaWYoZGlhbG9nRGF0YS5kZWZhdWx0UG9ydHJhaXQpe1xuICAgICAgZGlhbG9nRGF0YS5jdXJyZW50UG9ydHJhaXQgPSBkaWFsb2dEYXRhLmRlZmF1bHRQb3J0cmFpdFRleHR1cmVcbiAgICAgIGRpYWxvZ0RhdGEuZGlzcGxheVBvcnRyYWl0ID0gdHJ1ZVxuICAgIH1cbiAgICBlbHNle1xuICAgICAgZGlhbG9nRGF0YS5kaXNwbGF5UG9ydHJhaXQgPSBmYWxzZVxuICAgIH1cblxuICAgIGlmKGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmlzUXVlc3Rpb24pe1xuICAgICAgICBkaWFsb2dEYXRhLmJ1dHRvbnMgPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5idXR0b25zLmxlbmd0aFxuICAgICAgICBpZihkaWFsb2dEYXRhLmJ1dHRvbnMgPj0gMyl7XG4gICAgICAgICAgICBkaWFsb2dEYXRhLm1hcmdpbiA9IC0yNVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYoZGlhbG9nRGF0YS5idXR0b25zID49MSl7XG4gICAgICAgICAgICBkaWFsb2dEYXRhLm1hcmdpbiA9IC0yNVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coZGlhbG9nRGF0YSlcblxuICAgICAgICBkZWxheWVkRnVuY3Rpb24oKCkgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdzZXR0aW5nIHF1ZXN0aW9uIHRvIHRydWUnKVxuICAgICAgICAgIGRpYWxvZ0RhdGEuaXNRdWVzdGlvbiA9IHRydWVcbiAgICAgICAgfSwgNzAwKVxuICAgIH1cblxuICAgIGRpYWxvZ0RhdGEub3BlblRpbWUgPSBNYXRoLmZsb29yKERhdGUubm93KCkpXG4gICAgaWYoZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uZm9udFNpemUpe1xuICAgICAgICBkaWFsb2dEYXRhLmZvbnRTaXplID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uZm9udFNpemVcbiAgICB9XG5cbiAgICBpZihkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5za2lwYWJsZSl7XG4gICAgICBkaWFsb2dEYXRhLnNraXBhYmxlID0gdHJ1ZVxuICAgIH1cbiAgICBlbHNle1xuICAgICAgZGlhbG9nRGF0YS5za2lwYWJsZSA9IGZhbHNlXG4gICAgfVxuXG4gICAgaWYoZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uaW1hZ2Upe1xuICAgICAgZGlhbG9nRGF0YS5kaWFsb2dJbWFnZVRleHR1cmUgPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5pbWFnZS5wYXRoXG4gICAgICBkaWFsb2dEYXRhLmltYWdlWCA9IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmltYWdlLm9mZnNldFggPyBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5pbWFnZS5vZmZzZXRYICogVUlzY2FsZU11bHRpcGxpZXIgKyBpbWFnZVhQb3MgOiAtNDBcbiAgICAgIGRpYWxvZ0RhdGEuaW1hZ2VZID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uaW1hZ2Uub2Zmc2V0WSA/IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmltYWdlLm9mZnNldFkgKiBVSXNjYWxlTXVsdGlwbGllciArIGltYWdlWVBvcyA6IDQwXG4gICAgICBkaWFsb2dEYXRhLmltYWdlSGVpZ2h0ID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uaW1hZ2UuaGVpZ2h0ID8gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uaGVpZ2h0ICogVUlzY2FsZU11bHRpcGxpZXIgOiBpbWFnZVNjYWxlXG4gICAgICBkaWFsb2dEYXRhLmltYWdlV2lkdGggPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5pbWFnZS53aWR0aCA/IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLndpZHRoICogVUlzY2FsZU11bHRpcGxpZXIgOiBpbWFnZVNjYWxlXG4gICAgICBkaWFsb2dEYXRhLmRpc3BsYXlJbWFnZSA9IHRydWVcbiAgICB9XG5cbiAgICBkaWFsb2dEYXRhLnBvc2l0aW9uWCA9IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLm9mZnNldFggPyBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5vZmZzZXRYICogVUlzY2FsZU11bHRpcGxpZXIgOiAnMjIlJ1xuICAgIGRpYWxvZ0RhdGEucG9zaXRpb25ZID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0ub2Zmc2V0WSA/IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLm9mZnNldFkgKiBVSXNjYWxlTXVsdGlwbGllciArIHRleHRZUG9zIDogdGV4dFlQb3NcbiAgICBcbiAgICBpZihkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5oYXNPd25Qcm9wZXJ0eShcInR5cGVTcGVlZFwiKSl7XG4gICAgICAgIGRpYWxvZ0RhdGEuc3BlZWQgPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS50eXBlU3BlZWRcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgICAgZGlhbG9nRGF0YS5zcGVlZCA9IDMwXG4gICAgfVxuXG4gICAgaWYoZGlhbG9nRGF0YS5zcGVlZCA8PSAwKXtcbiAgICAgICAgcnVzaFRleHQobnBjKVxuICAgIH1cbiAgICBlbHNle1xuICAgICAgICBpZighSXNUeXBpbmdEaWFsb2cuaGFzKG5wYykpe1xuICAgICAgICAgICAgSXNUeXBpbmdEaWFsb2cuY3JlYXRlKG5wYylcbiAgICAgICAgfVxuICAgIFxuICAgICAgICAvLyBpZighbnBjRGlhbG9nVHlwaW5nU3lzdGVtcy5oYXMobnBjKSl7XG4gICAgICAgIC8vICAgICBucGNEaWFsb2dUeXBpbmdTeXN0ZW1zLnNldChucGMsZW5naW5lLmFkZFN5c3RlbShoYW5kbGVEaWFsb2dUeXBpbmcpKVxuICAgICAgICAvLyB9XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkTGluZUJyZWFrcyhkaWFsb2c6RGlhbG9nW10sIGJ1YmJsZT86Ym9vbGVhbil7XG4gICAgbGV0IGNsZWFuZWQ6RGlhbG9nW10gPSBkaWFsb2cuc2xpY2UoKVxuICAgIGNsZWFuZWQuZm9yRWFjaCgoZCk9PntcbiAgICAgIGQudGV4dCA9IGxpbmVCcmVhayhkLnRleHQsIGJ1YmJsZT8gZ2V0QnViYmxlVGV4dExlbmd0aChkLnRleHQpISA6IDUwKVxuICAgIH0pXG4gICAgcmV0dXJuIGNsZWFuZWRcbn1cblxuZnVuY3Rpb24gbGluZUJyZWFrKHRleHQ6IHN0cmluZywgbWF4TGluZUxlbmd0aDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCB3b3JkcyA9IHRleHQuc3BsaXQoJyAnKTtcbiAgICBsZXQgY3VycmVudExpbmUgPSAnJztcbiAgICBjb25zdCBsaW5lcyA9IFtdO1xuICBcbiAgICBmb3IgKGNvbnN0IHdvcmQgb2Ygd29yZHMpIHtcbiAgICAgIGlmIChjdXJyZW50TGluZS5sZW5ndGggKyB3b3JkLmxlbmd0aCArIDEgPD0gbWF4TGluZUxlbmd0aCkge1xuICAgICAgICBjdXJyZW50TGluZSArPSBgJHt3b3JkfSBgO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGluZXMucHVzaChjdXJyZW50TGluZS50cmltKCkpO1xuICAgICAgICBjdXJyZW50TGluZSA9IGAke3dvcmR9IGA7XG4gICAgICB9XG4gICAgfVxuICAgIGxpbmVzLnB1c2goY3VycmVudExpbmUudHJpbSgpKTtcbiAgICByZXR1cm4gbGluZXMuam9pbignXFxuJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVEaWFsb2dDbGljaygpe1xuICBjb25zb2xlLmxvZygnaGFuZGxpbmcgY2xpY2snKVxuICAgIGxldCBucGMgPSBhY3RpdmVOUENcbiAgICBpZihucGNEaWFsb2dDb21wb25lbnQuaGFzKG5wYykpe1xuICAgICAgICBsZXQgZGlhbG9nRGF0YSA9IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQobnBjKVxuICAgICAgICBpZighZGlhbG9nRGF0YS52aXNpYmxlIHx8IChNYXRoLmZsb29yKERhdGUubm93KCkpIC0gZGlhbG9nRGF0YS5vcGVuVGltZSAgPCAxMDApKSByZXR1cm5cbiAgICAgICAgXG4gICAgICAgIGlmKGRpYWxvZ0RhdGEudHlwaW5nKXtcbiAgICAgICAgICAgIHJ1c2hUZXh0KG5wYylcbiAgICAgICAgfVxuICAgICAgICBlbHNle1xuICAgICAgICAgICAgY29uZmlybVRleHQobnBjLCBDb25maXJtTW9kZS5OZXh0KVxuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVzaFRleHQobnBjOkVudGl0eSl7XG4gICAgbGV0IGRpYWxvZ0RhdGEgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYylcbiAgICBkaWFsb2dEYXRhLnR5cGluZyA9IGZhbHNlXG4gICAgZGlhbG9nRGF0YS50aW1lciA9IDBcbiAgICBkaWFsb2dEYXRhLnZpc2libGVDaGFycyA9IGRpYWxvZ0RhdGEuZnVsbFRleHQubGVuZ3RoXG4gICAgZGlhbG9nRGF0YS52aXNpYmxlVGV4dCA9IGRpYWxvZ0RhdGEuZnVsbFRleHRcbiAgICAvL2VuZ2luZS5yZW1vdmVTeXN0ZW0obnBjRGlhbG9nVHlwaW5nU3lzdGVtcy5nZXQobnBjKSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmZpcm1UZXh0KG5wYzpFbnRpdHksIG1vZGU6IENvbmZpcm1Nb2RlKTogdm9pZCB7XG4gIGNvbnNvbGUubG9nKCdjb25maXJtIHRleHQnKVxuICAgIGxldCBkaWFsb2dEYXRhID0gbnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpXG4gICAgZGlhbG9nRGF0YS5vcGVuVGltZSA9IE1hdGguZmxvb3IoRGF0ZS5ub3coKSlcblxuICAgIGxldCBjdXJyZW50VGV4dCA9IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdXG4gICAgLy8gVXBkYXRlIGFjdGl2ZSB0ZXh0XG4gICAgaWYgKG1vZGUgPT0gQ29uZmlybU1vZGUuTmV4dCkge1xuICAgICAgICBpZiAoIWN1cnJlbnRUZXh0LmlzUXVlc3Rpb24pIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50VGV4dC50cmlnZ2VyZWRCeU5leHQpIHtcbiAgICAgICAgICAgIGN1cnJlbnRUZXh0LnRyaWdnZXJlZEJ5TmV4dCgpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY3VycmVudFRleHQuaXNFbmRPZkRpYWxvZykge1xuICAgICAgICAgICAgY2xvc2VEaWFsb2cobnBjKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkaWFsb2dEYXRhLmluZGV4KytcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtb2RlID09IENvbmZpcm1Nb2RlLkNvbmZpcm0pIHtcbiAgICAgICAgaWYgKGN1cnJlbnRUZXh0LmJ1dHRvbnMgJiYgY3VycmVudFRleHQuYnV0dG9ucy5sZW5ndGggPj0gMSkge1xuICAgICAgICAgIGlmICh0eXBlb2YgY3VycmVudFRleHQuYnV0dG9uc1swXS5nb1RvRGlhbG9nID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgZGlhbG9nRGF0YS5pbmRleCA9IGN1cnJlbnRUZXh0LmJ1dHRvbnNbMF0uZ29Ub0RpYWxvZ1xuICAgICAgICAgIH0gXG5cbiAgICAgICAgICAvL1RPRE9cbiAgICAgICAgICAvL2FsbG93IGRpYWxvZ3MgdG8gYmUgaW5kZXggYnkgbmFtZVxuICAgICAgICAvLyAgIGVsc2Uge1xuICAgICAgICAvLyAgICAgdGhpcy5hY3RpdmVUZXh0SWQgPSBmaW5kRGlhbG9nQnlOYW1lKHRoaXMuTlBDU2NyaXB0LCBjdXJyZW50VGV4dC5idXR0b25zWzBdLmdvVG9EaWFsb2cpXG4gICAgICAgIC8vICAgfVxuICAgICAgICAgIGlmIChjdXJyZW50VGV4dC5idXR0b25zWzBdLnRyaWdnZXJlZEFjdGlvbnMpIHtcbiAgICAgICAgICAgIGN1cnJlbnRUZXh0LmJ1dHRvbnNbMF0udHJpZ2dlcmVkQWN0aW9ucygpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1vZGUgPT0gQ29uZmlybU1vZGUuQ2FuY2VsKSB7XG4gICAgICAgIGlmIChjdXJyZW50VGV4dC5idXR0b25zICYmIGN1cnJlbnRUZXh0LmJ1dHRvbnMubGVuZ3RoID49IDEpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGN1cnJlbnRUZXh0LmJ1dHRvbnNbMV0uZ29Ub0RpYWxvZyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIGRpYWxvZ0RhdGEuaW5kZXggPSBjdXJyZW50VGV4dC5idXR0b25zWzFdLmdvVG9EaWFsb2dcbiAgICAgICAgICB9IFxuXG4gICAgICAgICAgLy9UT0RPXG4gICAgICAgICAgLy9hbGxvdyBkaWFsb2dzIHRvIGJlIGluZGV4IGJ5IG5hbWVcbiAgICAgICAgLy8gICBlbHNlIHtcbiAgICAgICAgLy8gICAgIHRoaXMuYWN0aXZlVGV4dElkID0gZmluZERpYWxvZ0J5TmFtZSh0aGlzLk5QQ1NjcmlwdCwgY3VycmVudFRleHQuYnV0dG9uc1swXS5nb1RvRGlhbG9nKVxuICAgICAgICAvLyAgIH1cbiAgICAgICAgICBpZiAoY3VycmVudFRleHQuYnV0dG9uc1sxXS50cmlnZ2VyZWRBY3Rpb25zKSB7XG4gICAgICAgICAgICBjdXJyZW50VGV4dC5idXR0b25zWzFdLnRyaWdnZXJlZEFjdGlvbnMoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtb2RlID09IENvbmZpcm1Nb2RlLkJ1dHRvbjMpIHtcbiAgICAgICAgaWYgKGN1cnJlbnRUZXh0LmJ1dHRvbnMgJiYgY3VycmVudFRleHQuYnV0dG9ucy5sZW5ndGggPj0gMSkge1xuICAgICAgICAgIGlmICh0eXBlb2YgY3VycmVudFRleHQuYnV0dG9uc1syXS5nb1RvRGlhbG9nID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgZGlhbG9nRGF0YS5pbmRleCA9IGN1cnJlbnRUZXh0LmJ1dHRvbnNbMl0uZ29Ub0RpYWxvZ1xuICAgICAgICAgIH0gXG5cbiAgICAgICAgICAvL1RPRE9cbiAgICAgICAgICAvL2FsbG93IGRpYWxvZ3MgdG8gYmUgaW5kZXggYnkgbmFtZVxuICAgICAgICAvLyAgIGVsc2Uge1xuICAgICAgICAvLyAgICAgdGhpcy5hY3RpdmVUZXh0SWQgPSBmaW5kRGlhbG9nQnlOYW1lKHRoaXMuTlBDU2NyaXB0LCBjdXJyZW50VGV4dC5idXR0b25zWzBdLmdvVG9EaWFsb2cpXG4gICAgICAgIC8vICAgfVxuICAgICAgICAgIGlmIChjdXJyZW50VGV4dC5idXR0b25zWzJdLnRyaWdnZXJlZEFjdGlvbnMpIHtcbiAgICAgICAgICAgIGN1cnJlbnRUZXh0LmJ1dHRvbnNbMl0udHJpZ2dlcmVkQWN0aW9ucygpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1vZGUgPT0gQ29uZmlybU1vZGUuQnV0dG9uNCkge1xuICAgICAgICBpZiAoY3VycmVudFRleHQuYnV0dG9ucyAmJiBjdXJyZW50VGV4dC5idXR0b25zLmxlbmd0aCA+PSAxKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBjdXJyZW50VGV4dC5idXR0b25zWzNdLmdvVG9EaWFsb2cgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBkaWFsb2dEYXRhLmluZGV4ID0gY3VycmVudFRleHQuYnV0dG9uc1szXS5nb1RvRGlhbG9nXG4gICAgICAgICAgfSBcblxuICAgICAgICAgIC8vVE9ET1xuICAgICAgICAgIC8vYWxsb3cgZGlhbG9ncyB0byBiZSBpbmRleCBieSBuYW1lXG4gICAgICAgIC8vICAgZWxzZSB7XG4gICAgICAgIC8vICAgICB0aGlzLmFjdGl2ZVRleHRJZCA9IGZpbmREaWFsb2dCeU5hbWUodGhpcy5OUENTY3JpcHQsIGN1cnJlbnRUZXh0LmJ1dHRvbnNbMF0uZ29Ub0RpYWxvZylcbiAgICAgICAgLy8gICB9XG4gICAgICAgICAgaWYgKGN1cnJlbnRUZXh0LmJ1dHRvbnNbM10udHJpZ2dlcmVkQWN0aW9ucykge1xuICAgICAgICAgICAgY3VycmVudFRleHQuYnV0dG9uc1szXS50cmlnZ2VyZWRBY3Rpb25zKClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIGJlZ2luVHlwaW5nKG5wYylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNraXBEaWFsb2dzKG5wYzpFbnRpdHkpIHtcbiAgbGV0IGRpYWxvZ0RhdGEgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYylcbiAgaWYgKCFkaWFsb2dEYXRhLnZpc2libGUgfHwgK0RhdGUubm93KCkgLSBkaWFsb2dEYXRhLm9wZW5UaW1lIDwgMTAwKSByZXR1cm5cblxuICB3aGlsZSAoXG4gICAgZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0gJiZcbiAgICAgIGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLnNraXBhYmxlICYmXG4gICAgICAgIGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmlzUXVlc3Rpb25cbiAgKXtcbiAgICBpZihkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS50cmlnZ2VyZWRCeU5leHQpe1xuICAgICAgZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0udHJpZ2dlcmVkQnlOZXh0KClcbiAgICB9XG5cbiAgICBpZihkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5za2lwYWJsZSAmJlxuICAgICAgZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uaXNFbmRPZkRpYWxvZ1xuICAgICAgKXtcbiAgICAgICAgY2xvc2VEaWFsb2dXaW5kb3cobnBjKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICBcbiAgICAgIGRpYWxvZ0RhdGEuaW5kZXggKz0gMVxuICB9XG4gIGNvbmZpcm1UZXh0KG5wYywgQ29uZmlybU1vZGUuTmV4dClcbn1cblxuZXhwb3J0IHR5cGUgSW1hZ2VBdGxhc0RhdGEgPSB7XG4gICAgYXRsYXNXaWR0aDogbnVtYmVyO1xuICAgIGF0bGFzSGVpZ2h0OiBudW1iZXI7XG4gICAgc291cmNlV2lkdGg6IG51bWJlcjtcbiAgICBzb3VyY2VIZWlnaHQ6IG51bWJlcjtcbiAgICBzb3VyY2VMZWZ0OiBudW1iZXI7XG4gICAgc291cmNlVG9wOiBudW1iZXI7XG4gIH1cbiAgXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbWFnZUF0bGFzTWFwcGluZyhkYXRhPzogSW1hZ2VBdGxhc0RhdGEpOiBudW1iZXJbXSB7XG4gICAgaWYgKCFkYXRhKSByZXR1cm4gW11cbiAgXG4gICAgY29uc3Qge1xuICAgICAgYXRsYXNXaWR0aCxcbiAgICAgIGF0bGFzSGVpZ2h0LFxuICAgICAgc291cmNlV2lkdGgsXG4gICAgICBzb3VyY2VIZWlnaHQsXG4gICAgICBzb3VyY2VUb3AsXG4gICAgICBzb3VyY2VMZWZ0LFxuICAgIH0gPSBkYXRhXG4gIFxuICAgIHJldHVybiBbXG4gICAgICBzb3VyY2VMZWZ0IC8gYXRsYXNXaWR0aCwgKGF0bGFzSGVpZ2h0IC0gc291cmNlVG9wIC0gc291cmNlSGVpZ2h0KSAvIGF0bGFzSGVpZ2h0LFxuICAgICAgc291cmNlTGVmdCAvIGF0bGFzV2lkdGgsIChhdGxhc0hlaWdodCAtIHNvdXJjZVRvcCkgLyBhdGxhc0hlaWdodCxcbiAgICAgIChzb3VyY2VMZWZ0ICsgc291cmNlV2lkdGgpIC8gYXRsYXNXaWR0aCwgKGF0bGFzSGVpZ2h0IC0gc291cmNlVG9wKSAvIGF0bGFzSGVpZ2h0LFxuICAgICAgKHNvdXJjZUxlZnQgKyBzb3VyY2VXaWR0aCkgLyBhdGxhc1dpZHRoLCAoYXRsYXNIZWlnaHQgLSBzb3VyY2VUb3AgLSBzb3VyY2VIZWlnaHQpIC8gYXRsYXNIZWlnaHQsXG4gICAgXVxuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIHJlYWxXaWR0aCh3aWR0aD86bnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gd2lkdGggPyB3aWR0aCA6IHNlY3Rpb24uc291cmNlV2lkdGhcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiByZWFsSGVpZ2h0KGhlaWdodD86bnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gaGVpZ2h0ID8gaGVpZ2h0IDogc2VjdGlvbi5zb3VyY2VIZWlnaHRcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBmaW5kRGlhbG9nQnlOYW1lKGRpYWxvZ3M6IERpYWxvZ1tdLCBuYW1lOiBzdHJpbmcpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRpYWxvZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChkaWFsb2dzW2ldLm5hbWUgJiYgZGlhbG9nc1tpXS5uYW1lID09IG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIGlcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIDBcbiAgfVxuXG5cblxuZXhwb3J0IGZ1bmN0aW9uIGNsb3NlVGFnKGRpYWxvZ0RhdGE6YW55LCBuZXdDaGFyczogbnVtYmVyKXtcbiAgaWYoZGlhbG9nRGF0YS52aXNpYmxlQ2hhcnMgPT0gMCB8fCBuZXdDaGFycyA9PTAgKSByZXR1cm5cblxubGV0IG9wZW5UYWc6IGJvb2xlYW4gPSBmYWxzZVxubGV0IGNsb3NlVGFnIDogYm9vbGVhbiA9IGZhbHNlXG5mb3IobGV0IGkgPSBkaWFsb2dEYXRhLnZpc2libGVDaGFycy1uZXdDaGFyczsgaSA8IGRpYWxvZ0RhdGEudmlzaWJsZUNoYXJzIDsgaSsrKXtcbiAgXG4gIGlmKCFvcGVuVGFnKXtcbiAgICBpZihkaWFsb2dEYXRhLmZ1bGxUZXh0LnN1YnN0cihpLCAxKSA9PSAnPCcpe1xuICAgICAgb3BlblRhZz0gdHJ1ZVxuICAgICAgXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmKGRpYWxvZ0RhdGEuZnVsbFRleHQuc3Vic3RyKGksIDEpID09ICc+Jyl7XG4gICAgICBjbG9zZVRhZz0gdHJ1ZVxuICAgICAgXG4gICAgfVxuICB9XG59XG5cbmlmKCFvcGVuVGFnIHx8IGNsb3NlVGFnKXtcdFxuICByZXR1cm5cbn1cblxud2hpbGUoZGlhbG9nRGF0YS52aXNpYmxlQ2hhcnMgPCBkaWFsb2dEYXRhLmZ1bGxUZXh0Lmxlbmd0aCAmJiBkaWFsb2dEYXRhLmZ1bGxUZXh0LnN1YnN0cihkaWFsb2dEYXRhLnZpc2libGVDaGFycy0xLCAxKSAhPSAnPicpe1xuICBkaWFsb2dEYXRhLnZpc2libGVDaGFycys9MVxufVxucmV0dXJuXG59XG4iXX0=
548
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2RpYWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFVLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBYyxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFZLFdBQVcsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNsSixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTlDLE9BQU8sRUFBcUIsUUFBUSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hJLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHaEQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQXFCLElBQUksR0FBRyxFQUFFLENBQUE7QUFDN0QsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQXFCLElBQUksR0FBRyxFQUFFLENBQUE7QUFDakUsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQW9CLElBQUksR0FBRyxFQUFFLENBQUE7QUFFaEUsTUFBTSxDQUFOLElBQVksV0FNVDtBQU5ILFdBQVksV0FBVztJQUNuQixtREFBVyxDQUFBO0lBQ1gsaURBQVUsQ0FBQTtJQUNWLDZDQUFRLENBQUE7SUFDUixtREFBVyxDQUFBO0lBQ1gsbURBQVcsQ0FBQTtBQUNiLENBQUMsRUFOUyxXQUFXLEtBQVgsV0FBVyxRQU1wQjtBQUVILE1BQU0sQ0FBQyxJ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QTtJQUM1QyxJQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBQyxDQUFDO1FBQzdDLFVBQVUsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFBO0lBQ3RFLENBQUM7SUFFRCxJQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBQyxDQUFDO1FBQy9DLFVBQVUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFBO0lBQzVCLENBQUM7U0FDRyxDQUFDO1FBQ0gsVUFBVSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUE7SUFDN0IsQ0FBQztJQUVELElBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFDLENBQUM7UUFDNUMsVUFBVSxDQUFDLGtCQUFrQixHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUE7UUFDOUUsVUFBVSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7UUFDL0osVUFBVSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLGlCQUFpQixHQUFHLFNBQVMsQ0FB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LENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzNELElBQUksT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDMUQsVUFBVSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQTtZQUN0RCxDQUFDO1lBT0QsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQzVDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQTtZQUMzQyxDQUFDO1FBQ0gsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLElBQUksSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0IsSUFBSSxXQUFXLENBQUMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzNELElBQUksT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDMUQsVUFBVSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQTtZQUN0RCxDQUFDO1lBT0QsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQzVDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQTtZQUMzQyxDQUFDO1FBQ0gsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLElBQUksSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDOUIsSUFBSSxXQUFXLENBQUMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzNE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TTtJQUUxRCxJQUFJLE9BQU8sR0FBWSxLQUFLLENBQUE7SUFDNUIsSUFBSSxRQUFRLEdBQWEsS0FBSyxDQUFBO0lBQzlCLEtBQUksSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLFlBQVksR0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxZQUFZLEVBQUcsQ0FBQyxFQUFFLEVBQUMsQ0FBQztRQUUvRSxJQUFHLENBQUMsT0FBTyxFQUFDLENBQUM7WUFDWCxJQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUMsQ0FBQztnQkFDMUMsT0FBTyxHQUFFLElBQUksQ0FBQTtZQUVmLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBQyxDQUFDO2dCQUMxQyxRQUFRLEdBQUUsSUFBSSxDQUFBO1lBRWhCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUcsQ0FBQyxPQUFPLElBQUksUUFBUSxFQUFDLENBQUM7UUFDdkIsT0FBTTtJQUNSLENBQUM7SUFFRCxPQUFNLFVBQVUsQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksR0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFDLENBQUM7UUFDN0gsVUFBVSxDQUFDLFlBQVksSUFBRSxDQUFDLENBQUE7SUFDNUIsQ0FBQztJQUNELE9BQU07QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBBdWRpb1NvdXJjZSwgRW50aXR5LCBlbmdpbmUgfSBmcm9tIFwiQGRjbC9zZGsvZWNzXCI7XG5pbXBvcnQgeyBhY3RpdmVOUEMsIGNsZWFyTlBDLCBjbG9zZURpYWxvZ1dpbmRvdywgZm9sbG93UGF0aCwgaXNBY3RpdmVOcGNTZXQsIG5wY0RhdGFDb21wb25lbnQsIHNldEFjdGl2ZU5QQywgc3RvcFBhdGgsIHN0b3BXYWxraW5nIH0gZnJvbSBcIi4vbnBjXCI7XG5pbXBvcnQgeyBJc1R5cGluZ0RpYWxvZyB9IGZyb20gXCIuL2NvbXBvbmVudHNcIjtcbmltcG9ydCB7IGhhbmRsZURpYWxvZ1R5cGluZyB9IGZyb20gXCIuL3N5c3RlbXNcIjtcbmltcG9ydCB7IERpYWxvZywgSW1hZ2VEYXRhLCBOUENTdGF0ZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBsZWZ0Q2xpY2tTZWN0aW9uLCBsZWZ0Q2xpY2tTZWN0aW9uYkJsYWNrLCBsaWdodFRoZW1lLCBzZWN0aW9uLCBza2lwQnV0dG9uU2VjdGlvbiwgc2tpcEJ1dHRvblNlY3Rpb25CbGFjayB9IGZyb20gJy4vdWknO1xuaW1wb3J0IHsgZ2V0QnViYmxlVGV4dExlbmd0aCB9IGZyb20gJy4vYnViYmxlJztcbmltcG9ydCB7IENvbG9yNCB9IGZyb20gJ0BkY2wvc2RrL21hdGgnO1xuaW1wb3J0IHsgZGVsYXllZEZ1bmN0aW9uIH0gZnJvbSAnLi91dGlscy91dGlscyc7XG5cblxuZXhwb3J0IGNvbnN0IG5wY0RpYWxvZ0NvbXBvbmVudDogTWFwPEVudGl0eSwgYW55PiA9IG5ldyBNYXAoKVxuZXhwb3J0IGNvbnN0IG5wY0RpYWxvZ1R5cGluZ1N5c3RlbXM6IE1hcDxFbnRpdHksIGFueT4gPSBuZXcgTWFwKClcbmV4cG9ydCBjb25zdCBucGNEaWFsb2dJbnB1dExpc3RlbmVyOiBNYXA8RW50aXR5LGFueT4gPSBuZXcgTWFwKClcblxuZXhwb3J0IGVudW0gQ29uZmlybU1vZGUge1xuICAgIENvbmZpcm0gPSAwLFxuICAgIENhbmNlbCA9IDEsXG4gICAgTmV4dCA9IDIsXG4gICAgQnV0dG9uMyA9IDMsXG4gICAgQnV0dG9uNCA9IDRcbiAgfVxuXG5leHBvcnQgbGV0IFVJc2NhbGVNdWx0aXBsaWVyID0gMC43NVxuXG5sZXQgcG9ydHJhaXRYUG9zID0gLTUwICogVUlzY2FsZU11bHRpcGxpZXIgXG5sZXQgcG9ydHJhaXRZUG9zID0gMjAgKiBVSXNjYWxlTXVsdGlwbGllclxuXG5sZXQgaW1hZ2VYUG9zID0gMzUwICogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBpbWFnZVlQb3MgPSA1MCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5cbmxldCBwb3J0cmFpdFNjYWxlID0gMjU2ICogVUlzY2FsZU11bHRpcGxpZXIgXG5sZXQgaW1hZ2VTY2FsZSA9IDI1NiAqIFVJc2NhbGVNdWx0aXBsaWVyIFxuXG5sZXQgdGV4dFNpemUgPSAyNCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgdGV4dFlQb3MgPSAxMCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5cbmxldCBidXR0b25XaWR0aCA9IDE3NCogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBidXR0b25IZWlnaHQgPSA0NiogVUlzY2FsZU11bHRpcGxpZXJcblxuXG5sZXQgYnV0dG9uVGV4dFNpemUgPSAyMCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5cbmxldCBidXR0b24xWFBvcyA9IDE1MCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgYnV0dG9uMlhQb3MgPSAtODAgKiBVSXNjYWxlTXVsdGlwbGllclxubGV0IGJ1dHRvbjNYUG9zID0gLTgwICogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBidXR0b240WFBvcyA9IDE1MCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5cbmxldCBidXR0b24xWVBvcyA9IC02NSAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgYnV0dG9uMllQb3MgPSAtNjUgKiBVSXNjYWxlTXVsdGlwbGllclxubGV0IGJ1dHRvbjFZUG9zNCA9IC0yMCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgYnV0dG9uMllQb3M0ID0gLTIwICogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBidXR0b24zWVBvcyA9IC04MCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgYnV0dG9uNFlQb3MgPSAtODAgKiBVSXNjYWxlTXVsdGlwbGllclxuXG5sZXQgc2tpcEJ1dHRvblhQb3MgPSAtMzAwICogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBza2lwQnV0dG9uWVBvcyA9IC0xMDAgKiBVSXNjYWxlTXVsdGlwbGllclxuXG5sZXQgYnV0dG9uSWNvbldpZHRoID0gMjYgKiBVSXNjYWxlTXVsdGlwbGllclxubGV0IGJ1dHRvbkljb25IZWlnaHQgPSAyNiAqIFVJc2NhbGVNdWx0aXBsaWVyXG5cbi8vXG5cbmV4cG9ydCBmdW5jdGlvbiBhZGREaWFsb2cobnBjOkVudGl0eSwgc291bmQ/OnN0cmluZywgZGVmYXVsdFBvcnRyYWl0PzpJbWFnZURhdGEpe1xuICAgIGNvbnNvbGUubG9nKCdhZGRpbmcgZGlhbG9nIGZvciBucGMnLCBucGMpXG4gICAgbnBjRGlhbG9nQ29tcG9uZW50LnNldChucGMsIHtcbiAgICAgICAgdHlwaW5nOnRydWUsXG4gICAgICAgIHZpc2libGU6ZmFsc2UsXG4gICAgICAgIHZpc2libGVUZXh0OlwiXCIsXG4gICAgICAgIHZpc2libGVDaGFyczowLFxuICAgICAgICBmdWxsVGV4dDpcIlwiLFxuICAgICAgICB0aW1lcjowLFxuICAgICAgICBzcGVlZDozMCxcbiAgICAgICAgb3JpZ2luYWxTY3JpcHQ6W10sXG4gICAgICAgIHNjcmlwdDpbXSxcbiAgICAgICAgaW5kZXg6MCxcbiAgICAgICAgc291bmQ6IHNvdW5kID8gc291bmQgOiB1bmRlZmluZWQsXG4gICAgICAgIHNvdW5kUGxheWVyOiBzb3VuZCA/IGVuZ2luZS5hZGRFbnRpdHkoKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZm9udFNpemU6MjIsXG4gICAgICAgIGlzUXVlc3Rpb246ZmFsc2UsXG4gICAgICAgIGJ1dHRvbnM6MCxcbiAgICAgICAgZGlzcGxheVBvcnRyYWl0OiBkZWZhdWx0UG9ydHJhaXQgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHRQb3J0cmFpdDogZGVmYXVsdFBvcnRyYWl0ID8gZGVmYXVsdFBvcnRyYWl0IDogbnVsbCxcbiAgICAgICAgZGVmYXVsdFBvcnRyYWl0VGV4dHVyZTogZGVmYXVsdFBvcnRyYWl0ID8gZGVmYXVsdFBvcnRyYWl0LnBhdGggOiBsaWdodFRoZW1lLFxuICAgICAgICBjdXJyZW50UG9ydHJhaXQ6IGRlZmF1bHRQb3J0cmFpdCA/IGRlZmF1bHRQb3J0cmFpdC5wYXRoIDogbGlnaHRUaGVtZSxcbiAgICAgICAgcG9ydHJhaXRXaWR0aDogZGVmYXVsdFBvcnRyYWl0ICYmIGRlZmF1bHRQb3J0cmFpdC53aWR0aCA/IGRlZmF1bHRQb3J0cmFpdC53aWR0aCAqIFVJc2NhbGVNdWx0aXBsaWVyIDogcG9ydHJhaXRTY2FsZSxcbiAgICAgICAgcG9ydHJhaXRIZWlnaHQ6IGRlZmF1bHRQb3J0cmFpdCAmJiBkZWZhdWx0UG9ydHJhaXQuaGVpZ2h0ID8gZGVmYXVsdFBvcnRyYWl0LmhlaWdodCAqIFVJc2NhbGVNdWx0aXBsaWVyIDogcG9ydHJhaXRTY2FsZSxcbiAgICAgICAgcG9ydHJhaXRYOiBkZWZhdWx0UG9ydHJhaXQgJiYgZGVmYXVsdFBvcnRyYWl0Lm9mZnNldFggPyBkZWZhdWx0UG9ydHJhaXQub2Zmc2V0WCAqIFVJc2NhbGVNdWx0aXBsaWVyICsgcG9ydHJhaXRYUG9zIDogcG9ydHJhaXRYUG9zLFxuICAgICAgICBwb3J0cmFpdFk6ICBkZWZhdWx0UG9ydHJhaXQgJiYgZGVmYXVsdFBvcnRyYWl0Lm9mZnNldFkgPyBkZWZhdWx0UG9ydHJhaXQub2Zmc2V0WSAqIFVJc2NhbGVNdWx0aXBsaWVyICsgcG9ydHJhaXRZUG9zIDogcG9ydHJhaXRZUG9zLFxuICAgICAgICBwb3J0YWl0U0hlaWdodDogZGVmYXVsdFBvcnRyYWl0ICYmIGRlZmF1bHRQb3J0cmFpdC5zZWN0aW9uICYmIGRlZmF1bHRQb3J0cmFpdC5zZWN0aW9uLnNvdXJjZUhlaWdodCA/IGRlZmF1bHRQb3J0cmFpdC5zZWN0aW9uLnNvdXJjZUhlaWdodCA6IDI1NixcbiAgICAgICAgcG9ydHJhaXRTV2lkdGg6IGRlZmF1bHRQb3J0cmFpdCAmJiBkZWZhdWx0UG9ydHJhaXQuc2VjdGlvbiAmJiBkZWZhdWx0UG9ydHJhaXQuc2VjdGlvbi5zb3VyY2VXaWR0aCA/IGRlZmF1bHRQb3J0cmFpdC5zZWN0aW9uLnNvdXJjZVdpZHRoIDogMjU2LFxuICAgICAgICBwb3J0YWl0U1RvcDogZGVmYXVsdFBvcnRyYWl0ICYmIGRlZmF1bHRQb3J0cmFpdC5zZWN0aW9uICYmIGRlZmF1bHRQb3J0cmFpdC5zZWN0aW9uLnNvdXJjZVRvcCA/IGRlZmF1bHRQb3J0cmFpdC5zZWN0aW9uLnNvdXJjZVRvcCA6IDAsXG4gICAgICAgIHBvcnRyYWl0U0xlZnQ6IGRlZmF1bHRQb3J0cmFpdCAmJiBkZWZhdWx0UG9ydHJhaXQuc2VjdGlvbiAmJiBkZWZhdWx0UG9ydHJhaXQuc2VjdGlvbi5zb3VyY2VMZWZ0ID8gZGVmYXVsdFBvcnRyYWl0LnNlY3Rpb24uc291cmNlTGVmdCA6IDBcbiAgICB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGxheUltYWdlKCl7XG4gIHJldHVybiAhaXNBY3RpdmVOcGNTZXQoKSA/IGZhbHNlIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLmRpc3BsYXlJbWFnZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGxheVBvcnRyYWl0KCl7XG4gIHJldHVybiAhaXNBY3RpdmVOcGNTZXQoKSA/IGZhbHNlIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLmRpc3BsYXlQb3J0cmFpdFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGxheVNraXBhYmxlKCl7XG4gIHJldHVybiAhaXNBY3RpdmVOcGNTZXQoKSA/IGZhbHNlIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLnNraXBhYmxlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTa2lwYWJsZVRoZW1lKCl7XG4gIHJldHVybiAhaXNBY3RpdmVOcGNTZXQoKSA/IHNraXBCdXR0b25TZWN0aW9uQmxhY2sgOiBucGNEYXRhQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLnRoZW1lID09IGxpZ2h0VGhlbWUgPyBza2lwQnV0dG9uU2VjdGlvbkJsYWNrIDogc2tpcEJ1dHRvblNlY3Rpb25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExlZnRDbGlja1RoZW1lKCl7XG4gIHJldHVybiAhaXNBY3RpdmVOcGNTZXQoKSA/IGxlZnRDbGlja1NlY3Rpb24gOiBucGNEYXRhQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLnRoZW1lID09IGxpZ2h0VGhlbWUgPyBsZWZ0Q2xpY2tTZWN0aW9uIDogbGVmdENsaWNrU2VjdGlvbmJCbGFja1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9zaXRpb25UZXh0WCgpe1xuICByZXR1cm4gIWlzQWN0aXZlTnBjU2V0KCkgPyBcIlwiIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLnBvc2l0aW9uWFxufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9zaXRpb25UZXh0WSgpe1xuICByZXR1cm4gIWlzQWN0aXZlTnBjU2V0KCkgPyBcIlwiIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLnBvc2l0aW9uWVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9zaXRpb25Qb3J0YWl0WCgpe1xuICByZXR1cm4gIWlzQWN0aXZlTnBjU2V0KCkgPyBcIlwiIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLnBvcnRyYWl0WFxufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9zaXRpb25Qb3J0YWl0WSgpe1xuICByZXR1cm4gIWlzQWN0aXZlTnBjU2V0KCkgPyBcIlwiIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLnBvcnRyYWl0WVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9ydHJhaXRXaWR0aCgpe1xuICByZXR1cm4gIWlzQWN0aXZlTnBjU2V0KCkgPyBcIlwiIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLnBvcnRyYWl0V2lkdGhcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvcnRyYWl0SGVpZ2h0KCl7XG4gIHJldHVybiAhaXNBY3RpdmVOcGNTZXQoKSA/IFwiXCIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykucG9ydHJhaXRIZWlnaHRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvc2l0aW9uSW1hZ2VYKCl7XG4gIHJldHVybiAhaXNBY3RpdmVOcGNTZXQoKSA/IFwiXCIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykuaW1hZ2VYXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3NpdGlvbkltYWdlWSgpe1xuICByZXR1cm4gIWlzQWN0aXZlTnBjU2V0KCkgPyBcIlwiIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLmltYWdlWVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW1hZ2VXaWR0aCgpe1xuICByZXR1cm4gIWlzQWN0aXZlTnBjU2V0KCkgPyBcIlwiIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLmltYWdlV2lkdGhcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGltYWdlSGVpZ2h0KCl7XG4gIHJldHVybiAhaXNBY3RpdmVOcGNTZXQoKSA/IFwiXCIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykuaW1hZ2VIZWlnaHRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBvcnRyYWl0KCl7XG4gIGlmICghaXNBY3RpdmVOcGNTZXQoKSkgcmV0dXJuIGxpZ2h0VGhlbWVcbiAgY29uc3QgcCA9IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDKS5jdXJyZW50UG9ydHJhaXRcbiAgcmV0dXJuIHR5cGVvZiBwID09PSAnc3RyaW5nJyAmJiBwLmxlbmd0aCA+PSAwID8gcCA6IGxpZ2h0VGhlbWVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEltYWdlKCl7XG4gIGlmICghaXNBY3RpdmVOcGNTZXQoKSkgcmV0dXJuIFwiXCJcbiAgY29uc3QgaW1nID0gbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLmRpYWxvZ0ltYWdlVGV4dHVyZVxuICByZXR1cm4gdHlwZW9mIGltZyA9PT0gJ3N0cmluZycgPyBpbWcgOiBcIlwiXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZXh0KCl7XG4gICAgcmV0dXJuICFpc0FjdGl2ZU5wY1NldCgpID8gXCJcIiA6IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDKS52aXNpYmxlVGV4dFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGV4dENvbG9yKCl7XG4gIHJldHVybiAhaXNBY3RpdmVOcGNTZXQoKSA/IENvbG9yNC5CbGFjaygpIDogbnBjRGF0YUNvbXBvbmVudC5nZXQoYWN0aXZlTlBDKS50aGVtZSA9PSBsaWdodFRoZW1lID8gQ29sb3I0LkJsYWNrKCkgOiBDb2xvcjQuV2hpdGUoKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGhlbWUoKXtcbiAgcmV0dXJuICFpc0FjdGl2ZU5wY1NldCgpID8gbGlnaHRUaGVtZSA6IG5wY0RhdGFDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykudGhlbWVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEJ1dHRvblRleHQoYnV0dG9uOm51bWJlcil7XG4gICAgbGV0IHRleHQgPSBcIlwiXG5cbiAgICBpZihhY3RpdmVOUEMgIT0gMCAmJiBucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQykpe1xuICAgICAgICBsZXQgZGlhbG9nRGF0YSA9IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDKVxuICAgICAgICBpZihkaWFsb2dEYXRhLmlzUXVlc3Rpb24gJiYgZGlhbG9nRGF0YS5idXR0b25zID4gYnV0dG9uKXtcbiAgICAgICAgICAgIHRleHQgPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5idXR0b25zW2J1dHRvbl0ubGFiZWxcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGV4dFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0YnV0dG9uU2l6ZShidXR0b246bnVtYmVyKSB7XG4gIGxldCBCdXR0b25TaXplOiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWRcbiAgaWYgKGFjdGl2ZU5QQyAhPSAwICYmIG5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDKSkge1xuICAgICAgbGV0IGRpYWxvZ0RhdGEgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyk7XG4gICAgICBpZiAoZGlhbG9nRGF0YS5pc1F1ZXN0aW9uICYmIGRpYWxvZ0RhdGEuYnV0dG9ucyA+IGJ1dHRvbikge1xuICAgICAgICAgIGlmIChkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5idXR0b25zW2J1dHRvbl0uc2l6ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIEJ1dHRvblNpemUgPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5idXR0b25zW2J1dHRvbl0/LnNpemU7XG4gICAgICAgICAgfVxuICAgICAgfVxuICB9XG4gIHJldHVybiBCdXR0b25TaXplXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb250U2l6ZSgpe1xuICAgIHJldHVybiAhaXNBY3RpdmVOcGNTZXQoKSA/IDIyIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLmZvbnRTaXplXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRCdXR0b25Gb250U2l6ZShidXR0b246bnVtYmVyKXtcbiAgbGV0IEJ1dHRvbkZvbnRTaXplOiBudW1iZXIgPSAwXG4gIGlmIChhY3RpdmVOUEMgIT0gMCAmJiBucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQykpIHtcbiAgICAgIGxldCBkaWFsb2dEYXRhID0gbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpO1xuICAgICAgaWYgKGRpYWxvZ0RhdGEuaXNRdWVzdGlvbiAmJiBkaWFsb2dEYXRhLmJ1dHRvbnMgPiBidXR0b24pIHtcbiAgICAgICAgICBpZiAoZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uYnV0dG9uc1tidXR0b25dLmZvbnRTaXplICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIEJ1dHRvbkZvbnRTaXplID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uYnV0dG9uc1tidXR0b25dPy5mb250U2l6ZTtcbiAgICAgICAgICB9IGVsc2Uge0J1dHRvbkZvbnRTaXplID0gMTZ9XG4gICAgICB9XG4gIH1cbiAgcmV0dXJuIEJ1dHRvbkZvbnRTaXplXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXNwbGF5RGlhbG9nKCl7XG4gICAgcmV0dXJuICFpc0FjdGl2ZU5wY1NldCgpID8gZmFsc2UgOiAgbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLnZpc2libGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFdpbmRvd0hlaWdodCgpIHtcbiAgbGV0IHdpbmRvd0hlaWdodHM6IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZFxuICBpZiAoYWN0aXZlTlBDICE9IDAgJiYgbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMpKSB7XG4gICAgICBsZXQgZGlhbG9nRGF0YSA9IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDKTtcbiAgICAgIGlmIChkaWFsb2dEYXRhLmlzUXVlc3Rpb24pIHtcbiAgICAgICAgICBpZiAoZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0ud2luZG93SGVpZ2h0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHdpbmRvd0hlaWdodHMgPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XT8ud2luZG93SGVpZ2h0O1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgfVxuICByZXR1cm4gd2luZG93SGVpZ2h0c1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGxheUJ1dHRvbihidXR0b246bnVtYmVyKXtcbiAgICByZXR1cm4gIWlzQWN0aXZlTnBjU2V0KCkgPyBmYWxzZSA6ICBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykuaXNRdWVzdGlvbiAmJiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykuYnV0dG9ucyA+PSBidXR0b25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3BsYXlGaXJzdEJ1dHRvbkNvbnRhaW5lcigpe1xuICAgIHJldHVybiAhaXNBY3RpdmVOcGNTZXQoKSA/IGZhbHNlIDogIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDKS5pc1F1ZXN0aW9uICYmIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDKS5idXR0b25zID49IDFcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3BsYXlTZWNvbmRCdXR0b25Db250YWluZXIoKXtcbiAgICByZXR1cm4gIWlzQWN0aXZlTnBjU2V0KCkgPyBmYWxzZSA6ICBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykuaXNRdWVzdGlvbiAmJiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykuYnV0dG9ucyA+PSAzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZXh0UG9zaXRpb24oKXtcbiAgICAvL2NvbnNvbGUubG9nKG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDKS5idXR0b25zKVxuICAgIHJldHVybiAhaXNBY3RpdmVOcGNTZXQoKSA/IHt0b3A6MCwgbGVmdDowfSA6IHt0b3A6bnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLm1hcmdpbiArIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDKS5wb3NpdGlvblksIGxlZnQ6IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDKS5wb3NpdGlvblh9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidXR0b25DbGljayhidXR0b246bnVtYmVyKXtcbiAgICBpZihpc0FjdGl2ZU5wY1NldCgpKXtcbiAgICAgICAgY29uZmlybVRleHQoYWN0aXZlTlBDLCBidXR0b24pXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xvc2VEaWFsb2cobnBjOkVudGl0eSl7XG4gICAgbGV0IGRpYWxvZ0RhdGEgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYylcbiAgICBpZighZGlhbG9nRGF0YSkgcmV0dXJuXG4gICAgZGlhbG9nRGF0YS52aXNpYmxlID0gZmFsc2VcbiAgICBkaWFsb2dEYXRhLnR5cGluZyA9IGZhbHNlXG4gICAgZGlhbG9nRGF0YS52aXNpYmxlVGV4dCA9IFwiXCJcbiAgICBkaWFsb2dEYXRhLnZpc2libGVDaGFycyA9IDBcbiAgICBkaWFsb2dEYXRhLmZ1bGxUZXh0ID0gXCJcIlxuICAgIGRpYWxvZ0RhdGEudGltZXIgPSAwXG4gICAgZGlhbG9nRGF0YS5pbmRleCA9IDBcbiAgICBkaWFsb2dEYXRhLnNjcmlwdC5sZW5ndGggPSAwXG4gICAgZGlhbG9nRGF0YS5idXR0b25zID0gMFxuICAgIGRpYWxvZ0RhdGEubWFyZ2luID0gMFxuICAgIGRpYWxvZ0RhdGEuZGlzcGxheVBvcnRyYWl0ID0gZmFsc2VcbiAgICBkaWFsb2dEYXRhLnNraXBhYmxlID0gZmFsc2VcbiAgICBkaWFsb2dEYXRhLmRpc3BsYXlJbWFnZSA9IGZhbHNlXG4gICAgY29uc29sZS5sb2coJ2RpYWxvZyBkYXRhIGlzIG5vdyAnLCBkaWFsb2dEYXRhKVxuXG4gICAgaWYoSXNUeXBpbmdEaWFsb2cuaGFzKG5wYykpe1xuICAgICAgSXNUeXBpbmdEaWFsb2cuZGVsZXRlRnJvbShucGMpXG4gICAgfVxuICAgIC8vIGlmKG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykubWFudWFsU3RvcCl7XG4gICAgLy8gICBjb25zb2xlLmxvZygnZGlhbG9nIGVuZGVkLCBuZWVkdG8gd2FsayBhZ2FpbicpXG4gICAgLy8gICBmb2xsb3dQYXRoKG5wYylcbiAgICAvLyB9XG4gICAgY2xlYXJOUEMoKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFsayhucGM6RW50aXR5LCBkaWFsb2c6RGlhbG9nW10sIHN0YXJ0SW5kZXg/Om51bWJlciB8IHN0cmluZywgZHVyYXRpb24/Om51bWJlcil7XG4gICAgbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS5pbnRyb2R1Y2VkID0gdHJ1ZVxuICAgIGlmKG5wY0RpYWxvZ0NvbXBvbmVudC5oYXMobnBjKSl7XG5cbiAgICAgICAgc2V0QWN0aXZlTlBDKG5wYylcbiAgICAgICAgaWYobnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS5zdGF0ZSA9PSBOUENTdGF0ZS5GT0xMT1dQQVRIKXtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcInNwZWFraW5nIGRpYWxvZywgbmVlZCB0byBzdG9wIHBhdGhcIilcbiAgICAgICAgICBzdG9wV2Fsa2luZyhucGMpXG4gICAgICAgIH1cblxuICAgICAgICBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLnN0YXRlID0gTlBDU3RhdGUuVEFMS0lOR1xuXG5cbiAgICAgICAgbGV0IGluZGV4OmFueVxuXG4gICAgICAgIGlmICghc3RhcnRJbmRleCkge1xuICAgICAgICAgIGluZGV4ID0gMFxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBzdGFydEluZGV4ID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIGluZGV4ID0gc3RhcnRJbmRleFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGluZGV4ID0gZmluZERpYWxvZ0J5TmFtZShkaWFsb2csIHN0YXJ0SW5kZXgpXG4gICAgICAgIH1cblxuICAgICAgICBvcGVuRGlhbG9nKG5wYyxkaWFsb2csIGluZGV4KVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9wZW5EaWFsb2cobnBjOkVudGl0eSwgZGlhbG9nOkRpYWxvZ1tdLCBzdGFydEluZGV4Om51bWJlcil7XG4gICAgY29uc29sZS5sb2coJ3NjcmlwdCB0byB0YWxrIGlzJywgZGlhbG9nKVxuICAgIGxldCBkaWFsb2dEYXRhID0gbnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpXG4gICAgZGlhbG9nRGF0YS5zY3JpcHQgPSBkaWFsb2cuc2xpY2UoKVxuICAgIGRpYWxvZ0RhdGEuaW5kZXggPSBzdGFydEluZGV4XG5cbiAgICBjb25zb2xlLmxvZygnZGlhbG9nIGRhdGEgaXMgbm93JywgZGlhbG9nRGF0YSlcbiAgICBcbiAgICBsZXQgY3VycmVudFRleHQ6IERpYWxvZyA9IGRpYWxvZ1tzdGFydEluZGV4XSA/IGRpYWxvZ1tzdGFydEluZGV4XSA6IHsgdGV4dDogJycgfVxuXG4gICAgaWYgKGRpYWxvZ0RhdGEuc291bmQpIHtcbiAgICAgICAgQXVkaW9Tb3VyY2UuY3JlYXRlT3JSZXBsYWNlKGRpYWxvZ0RhdGEuc291bmRQbGF5ZXIsIHtcbiAgICAgICAgICAgIGF1ZGlvQ2xpcFVybDogZGlhbG9nRGF0YS5zb3VuZCxcbiAgICAgICAgICAgIGxvb3A6IGZhbHNlLFxuICAgICAgICAgICAgcGxheWluZzogZmFsc2VcbiAgICAgICAgfSlcbiAgICAgICAgbGV0IGF1ZGlvID0gQXVkaW9Tb3VyY2UuZ2V0TXV0YWJsZShkaWFsb2dEYXRhLnNvdW5kUGxheWVyKVxuICAgICAgICBhdWRpby52b2x1bWUgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLnZvbHVtZVxuICAgICAgICBhdWRpby5wbGF5aW5nID0gdHJ1ZVxuICAgIH1cblxuICAgIC8vVE9ET1xuICAgIC8vc2V0IGltYWdlIG9uIHRoZSByaWdodFxuICAgIC8vc2V0IHRleHRcbiAgICBiZWdpblR5cGluZyhucGMpXG59IFxuXG5leHBvcnQgZnVuY3Rpb24gYWRkTGluZUJyZWFrKHRleHQ6c3RyaW5nLCBidWJibGU/OmJvb2xlYW4pe1xuICByZXR1cm4gbGluZUJyZWFrKHRleHQsIGJ1YmJsZT8gZ2V0QnViYmxlVGV4dExlbmd0aCh0ZXh0KSEgOiA0NSlcbn1cblxuZnVuY3Rpb24gYmVnaW5UeXBpbmcobnBjOkVudGl0eSl7XG4gICAgbGV0IGRpYWxvZ0RhdGEgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYylcbiAgICBkaWFsb2dEYXRhLmZ1bGxUZXh0ID0gYWRkTGluZUJyZWFrKGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLnRleHQpIC8vZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0udGV4dFxuICAgIGRpYWxvZ0RhdGEudmlzaWJsZSA9IHRydWVcbiAgICBkaWFsb2dEYXRhLnR5cGluZyA9IHRydWVcbiAgICBkaWFsb2dEYXRhLnZpc2libGVUZXh0ID0gXCJcIlxuICAgIGRpYWxvZ0RhdGEudmlzaWJsZUNoYXJzID0gMFxuICAgIGRpYWxvZ0RhdGEudGltZXIgPSAwXG4gICAgZGlhbG9nRGF0YS5pc1F1ZXN0aW9uID0gZmFsc2VcbiAgICBkaWFsb2dEYXRhLmJ1dHRvbnMgPSAwXG4gICAgZGlhbG9nRGF0YS5kaXNwbGF5UG9ydHJhaXQgPSBmYWxzZVxuICAgIGRpYWxvZ0RhdGEuZGlzcGxheUltYWdlID0gZmFsc2VcbiAgICBkaWFsb2dEYXRhLnNraXBhYmxlID0gZmFsc2VcblxuICAgIGxldCBjdXJyZW50VGV4dDogRGlhbG9nID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0gPyBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XSA6IHsgdGV4dDogJycgfVxuXG4gICAgLy8gUGxheSBhdWRpbyBmb3IgdGhlIGN1cnJlbnQgZGlhbG9ndWUgZW50cnlcbiAgICBpZiAoY3VycmVudFRleHQuYXVkaW8pIHtcbiAgICAgIEF1ZGlvU291cmNlLmNyZWF0ZU9yUmVwbGFjZShkaWFsb2dEYXRhLnNvdW5kUGxheWVyLCB7XG4gICAgICAgIGF1ZGlvQ2xpcFVybDogY3VycmVudFRleHQuYXVkaW8sXG4gICAgICAgIGxvb3A6IGZhbHNlLFxuICAgICAgICBwbGF5aW5nOiBmYWxzZVxuICAgICAgfSlcbiAgICAgIGxldCBhdWRpbyA9IEF1ZGlvU291cmNlLmdldE11dGFibGUoZGlhbG9nRGF0YS5zb3VuZFBsYXllcilcbiAgICAgIGF1ZGlvLnZvbHVtZSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykudm9sdW1lXG4gICAgICBhdWRpby5wbGF5aW5nID0gdHJ1ZVxuICAgIH1cblxuICAgIGlmKGN1cnJlbnRUZXh0LnBvcnRyYWl0KXtcbiAgICAgIGRpYWxvZ0RhdGEuY3VycmVudFBvcnRyYWl0ID0gY3VycmVudFRleHQucG9ydHJhaXQucGF0aFxuXG4gICAgICBkaWFsb2dEYXRhLnBvcnRyYWl0WCA9IGN1cnJlbnRUZXh0LnBvcnRyYWl0Lm9mZnNldFhcbiAgICAgID8gY3VycmVudFRleHQucG9ydHJhaXQub2Zmc2V0WCAqIFVJc2NhbGVNdWx0aXBsaWVyICsgcG9ydHJhaXRYUG9zXG4gICAgICA6IHBvcnRyYWl0WFBvc1xuXG4gICAgICBkaWFsb2dEYXRhLnBvcnRyYWl0WSA9IGN1cnJlbnRUZXh0LnBvcnRyYWl0Lm9mZnNldFlcbiAgICAgID8gY3VycmVudFRleHQucG9ydHJhaXQub2Zmc2V0WSAqIFVJc2NhbGVNdWx0aXBsaWVyICsgcG9ydHJhaXRZUG9zXG4gICAgICA6IHBvcnRyYWl0WVBvc1xuXG4gICAgICBkaWFsb2dEYXRhLnBvcnRyYWl0V2lkdGggPSBjdXJyZW50VGV4dC5wb3J0cmFpdC53aWR0aCA/IGN1cnJlbnRUZXh0LnBvcnRyYWl0LndpZHRoICogVUlzY2FsZU11bHRpcGxpZXIgOiBwb3J0cmFpdFNjYWxlXG5cbiAgICAgIGRpYWxvZ0RhdGEucG9ydHJhaXRIZWlnaHQgPSBjdXJyZW50VGV4dC5wb3J0cmFpdC5oZWlnaHQgPyBjdXJyZW50VGV4dC5wb3J0cmFpdC5oZWlnaHQgKiBVSXNjYWxlTXVsdGlwbGllciA6IHBvcnRyYWl0U2NhbGVcbiAgICAgIGRpYWxvZ0RhdGEuZGlzcGxheVBvcnRyYWl0ID0gdHJ1ZVxuICAgIH1lbHNlIGlmKGRpYWxvZ0RhdGEuZGVmYXVsdFBvcnRyYWl0KXtcbiAgICAgIGRpYWxvZ0RhdGEuY3VycmVudFBvcnRyYWl0ID0gZGlhbG9nRGF0YS5kZWZhdWx0UG9ydHJhaXRUZXh0dXJlXG4gICAgICBkaWFsb2dEYXRhLmRpc3BsYXlQb3J0cmFpdCA9IHRydWVcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgIGRpYWxvZ0RhdGEuZGlzcGxheVBvcnRyYWl0ID0gZmFsc2VcbiAgICB9XG5cbiAgICBpZihkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5pc1F1ZXN0aW9uKXtcbiAgICAgICAgZGlhbG9nRGF0YS5idXR0b25zID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uYnV0dG9ucy5sZW5ndGhcbiAgICAgICAgaWYoZGlhbG9nRGF0YS5idXR0b25zID49IDMpe1xuICAgICAgICAgICAgZGlhbG9nRGF0YS5tYXJnaW4gPSAtMjVcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmKGRpYWxvZ0RhdGEuYnV0dG9ucyA+PTEpe1xuICAgICAgICAgICAgZGlhbG9nRGF0YS5tYXJnaW4gPSAtMjVcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKGRpYWxvZ0RhdGEpXG5cbiAgICAgICAgZGVsYXllZEZ1bmN0aW9uKCgpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnc2V0dGluZyBxdWVzdGlvbiB0byB0cnVlJylcbiAgICAgICAgICBkaWFsb2dEYXRhLmlzUXVlc3Rpb24gPSB0cnVlXG4gICAgICAgIH0sIDcwMClcbiAgICB9XG5cbiAgICBkaWFsb2dEYXRhLm9wZW5UaW1lID0gTWF0aC5mbG9vcihEYXRlLm5vdygpKVxuICAgIGlmKGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmZvbnRTaXplKXtcbiAgICAgICAgZGlhbG9nRGF0YS5mb250U2l6ZSA9IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmZvbnRTaXplXG4gICAgfVxuXG4gICAgaWYoZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uc2tpcGFibGUpe1xuICAgICAgZGlhbG9nRGF0YS5za2lwYWJsZSA9IHRydWVcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgIGRpYWxvZ0RhdGEuc2tpcGFibGUgPSBmYWxzZVxuICAgIH1cblxuICAgIGlmKGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmltYWdlKXtcbiAgICAgIGRpYWxvZ0RhdGEuZGlhbG9nSW1hZ2VUZXh0dXJlID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uaW1hZ2UucGF0aFxuICAgICAgZGlhbG9nRGF0YS5pbWFnZVggPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5pbWFnZS5vZmZzZXRYID8gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uaW1hZ2Uub2Zmc2V0WCAqIFVJc2NhbGVNdWx0aXBsaWVyICsgaW1hZ2VYUG9zIDogLTQwXG4gICAgICBkaWFsb2dEYXRhLmltYWdlWSA9IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmltYWdlLm9mZnNldFkgPyBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5pbWFnZS5vZmZzZXRZICogVUlzY2FsZU11bHRpcGxpZXIgKyBpbWFnZVlQb3MgOiA0MFxuICAgICAgZGlhbG9nRGF0YS5pbWFnZUhlaWdodCA9IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmltYWdlLmhlaWdodCA/IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmhlaWdodCAqIFVJc2NhbGVNdWx0aXBsaWVyIDogaW1hZ2VTY2FsZVxuICAgICAgZGlhbG9nRGF0YS5pbWFnZVdpZHRoID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uaW1hZ2Uud2lkdGggPyBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS53aWR0aCAqIFVJc2NhbGVNdWx0aXBsaWVyIDogaW1hZ2VTY2FsZVxuICAgICAgZGlhbG9nRGF0YS5kaXNwbGF5SW1hZ2UgPSB0cnVlXG4gICAgfVxuXG4gICAgZGlhbG9nRGF0YS5wb3NpdGlvblggPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5vZmZzZXRYID8gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0ub2Zmc2V0WCAqIFVJc2NhbGVNdWx0aXBsaWVyIDogJzIyJSdcbiAgICBkaWFsb2dEYXRhLnBvc2l0aW9uWSA9IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLm9mZnNldFkgPyBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5vZmZzZXRZICogVUlzY2FsZU11bHRpcGxpZXIgKyB0ZXh0WVBvcyA6IHRleHRZUG9zXG4gICAgXG4gICAgaWYoZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uaGFzT3duUHJvcGVydHkoXCJ0eXBlU3BlZWRcIikpe1xuICAgICAgICBkaWFsb2dEYXRhLnNwZWVkID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0udHlwZVNwZWVkXG4gICAgfVxuICAgIGVsc2V7XG4gICAgICAgIGRpYWxvZ0RhdGEuc3BlZWQgPSAzMFxuICAgIH1cblxuICAgIGlmKGRpYWxvZ0RhdGEuc3BlZWQgPD0gMCl7XG4gICAgICAgIHJ1c2hUZXh0KG5wYylcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgICAgaWYoIUlzVHlwaW5nRGlhbG9nLmhhcyhucGMpKXtcbiAgICAgICAgICAgIElzVHlwaW5nRGlhbG9nLmNyZWF0ZShucGMpXG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgLy8gaWYoIW5wY0RpYWxvZ1R5cGluZ1N5c3RlbXMuaGFzKG5wYykpe1xuICAgICAgICAvLyAgICAgbnBjRGlhbG9nVHlwaW5nU3lzdGVtcy5zZXQobnBjLGVuZ2luZS5hZGRTeXN0ZW0oaGFuZGxlRGlhbG9nVHlwaW5nKSlcbiAgICAgICAgLy8gfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZExpbmVCcmVha3MoZGlhbG9nOkRpYWxvZ1tdLCBidWJibGU/OmJvb2xlYW4pe1xuICAgIGxldCBjbGVhbmVkOkRpYWxvZ1tdID0gZGlhbG9nLnNsaWNlKClcbiAgICBjbGVhbmVkLmZvckVhY2goKGQpPT57XG4gICAgICBkLnRleHQgPSBsaW5lQnJlYWsoZC50ZXh0LCBidWJibGU/IGdldEJ1YmJsZVRleHRMZW5ndGgoZC50ZXh0KSEgOiA1MClcbiAgICB9KVxuICAgIHJldHVybiBjbGVhbmVkXG59XG5cbmZ1bmN0aW9uIGxpbmVCcmVhayh0ZXh0OiBzdHJpbmcsIG1heExpbmVMZW5ndGg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3Qgd29yZHMgPSB0ZXh0LnNwbGl0KCcgJyk7XG4gICAgbGV0IGN1cnJlbnRMaW5lID0gJyc7XG4gICAgY29uc3QgbGluZXMgPSBbXTtcbiAgXG4gICAgZm9yIChjb25zdCB3b3JkIG9mIHdvcmRzKSB7XG4gICAgICBpZiAoY3VycmVudExpbmUubGVuZ3RoICsgd29yZC5sZW5ndGggKyAxIDw9IG1heExpbmVMZW5ndGgpIHtcbiAgICAgICAgY3VycmVudExpbmUgKz0gYCR7d29yZH0gYDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxpbmVzLnB1c2goY3VycmVudExpbmUudHJpbSgpKTtcbiAgICAgICAgY3VycmVudExpbmUgPSBgJHt3b3JkfSBgO1xuICAgICAgfVxuICAgIH1cbiAgICBsaW5lcy5wdXNoKGN1cnJlbnRMaW5lLnRyaW0oKSk7XG4gICAgcmV0dXJuIGxpbmVzLmpvaW4oJ1xcbicpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlRGlhbG9nQ2xpY2soKXtcbiAgY29uc29sZS5sb2coJ2hhbmRsaW5nIGNsaWNrJylcbiAgICBsZXQgbnBjID0gYWN0aXZlTlBDXG4gICAgaWYobnBjRGlhbG9nQ29tcG9uZW50LmhhcyhucGMpKXtcbiAgICAgICAgbGV0IGRpYWxvZ0RhdGEgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYylcbiAgICAgICAgaWYoIWRpYWxvZ0RhdGEudmlzaWJsZSB8fCAoTWF0aC5mbG9vcihEYXRlLm5vdygpKSAtIGRpYWxvZ0RhdGEub3BlblRpbWUgIDwgMTAwKSkgcmV0dXJuXG4gICAgICAgIFxuICAgICAgICBpZihkaWFsb2dEYXRhLnR5cGluZyl7XG4gICAgICAgICAgICBydXNoVGV4dChucGMpXG4gICAgICAgIH1cbiAgICAgICAgZWxzZXtcbiAgICAgICAgICAgIGNvbmZpcm1UZXh0KG5wYywgQ29uZmlybU1vZGUuTmV4dClcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1c2hUZXh0KG5wYzpFbnRpdHkpe1xuICAgIGxldCBkaWFsb2dEYXRhID0gbnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpXG4gICAgZGlhbG9nRGF0YS50eXBpbmcgPSBmYWxzZVxuICAgIGRpYWxvZ0RhdGEudGltZXIgPSAwXG4gICAgZGlhbG9nRGF0YS52aXNpYmxlQ2hhcnMgPSBkaWFsb2dEYXRhLmZ1bGxUZXh0Lmxlbmd0aFxuICAgIGRpYWxvZ0RhdGEudmlzaWJsZVRleHQgPSBkaWFsb2dEYXRhLmZ1bGxUZXh0XG4gICAgLy9lbmdpbmUucmVtb3ZlU3lzdGVtKG5wY0RpYWxvZ1R5cGluZ1N5c3RlbXMuZ2V0KG5wYykpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25maXJtVGV4dChucGM6RW50aXR5LCBtb2RlOiBDb25maXJtTW9kZSk6IHZvaWQge1xuICBjb25zb2xlLmxvZygnY29uZmlybSB0ZXh0JylcbiAgICBsZXQgZGlhbG9nRGF0YSA9IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQobnBjKVxuICAgIGRpYWxvZ0RhdGEub3BlblRpbWUgPSBNYXRoLmZsb29yKERhdGUubm93KCkpXG5cbiAgICBsZXQgY3VycmVudFRleHQgPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XVxuICAgIC8vIFVwZGF0ZSBhY3RpdmUgdGV4dFxuICAgIGlmIChtb2RlID09IENvbmZpcm1Nb2RlLk5leHQpIHtcbiAgICAgICAgaWYgKCFjdXJyZW50VGV4dC5pc1F1ZXN0aW9uKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFRleHQudHJpZ2dlcmVkQnlOZXh0KSB7XG4gICAgICAgICAgICBjdXJyZW50VGV4dC50cmlnZ2VyZWRCeU5leHQoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGN1cnJlbnRUZXh0LmlzRW5kT2ZEaWFsb2cpIHtcbiAgICAgICAgICAgIGNsb3NlRGlhbG9nKG5wYylcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGlhbG9nRGF0YS5pbmRleCsrXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9kZSA9PSBDb25maXJtTW9kZS5Db25maXJtKSB7XG4gICAgICAgIGlmIChjdXJyZW50VGV4dC5idXR0b25zICYmIGN1cnJlbnRUZXh0LmJ1dHRvbnMubGVuZ3RoID49IDEpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGN1cnJlbnRUZXh0LmJ1dHRvbnNbMF0uZ29Ub0RpYWxvZyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIGRpYWxvZ0RhdGEuaW5kZXggPSBjdXJyZW50VGV4dC5idXR0b25zWzBdLmdvVG9EaWFsb2dcbiAgICAgICAgICB9IFxuXG4gICAgICAgICAgLy9UT0RPXG4gICAgICAgICAgLy9hbGxvdyBkaWFsb2dzIHRvIGJlIGluZGV4IGJ5IG5hbWVcbiAgICAgICAgLy8gICBlbHNlIHtcbiAgICAgICAgLy8gICAgIHRoaXMuYWN0aXZlVGV4dElkID0gZmluZERpYWxvZ0J5TmFtZSh0aGlzLk5QQ1NjcmlwdCwgY3VycmVudFRleHQuYnV0dG9uc1swXS5nb1RvRGlhbG9nKVxuICAgICAgICAvLyAgIH1cbiAgICAgICAgICBpZiAoY3VycmVudFRleHQuYnV0dG9uc1swXS50cmlnZ2VyZWRBY3Rpb25zKSB7XG4gICAgICAgICAgICBjdXJyZW50VGV4dC5idXR0b25zWzBdLnRyaWdnZXJlZEFjdGlvbnMoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtb2RlID09IENvbmZpcm1Nb2RlLkNhbmNlbCkge1xuICAgICAgICBpZiAoY3VycmVudFRleHQuYnV0dG9ucyAmJiBjdXJyZW50VGV4dC5idXR0b25zLmxlbmd0aCA+PSAxKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBjdXJyZW50VGV4dC5idXR0b25zWzFdLmdvVG9EaWFsb2cgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBkaWFsb2dEYXRhLmluZGV4ID0gY3VycmVudFRleHQuYnV0dG9uc1sxXS5nb1RvRGlhbG9nXG4gICAgICAgICAgfSBcblxuICAgICAgICAgIC8vVE9ET1xuICAgICAgICAgIC8vYWxsb3cgZGlhbG9ncyB0byBiZSBpbmRleCBieSBuYW1lXG4gICAgICAgIC8vICAgZWxzZSB7XG4gICAgICAgIC8vICAgICB0aGlzLmFjdGl2ZVRleHRJZCA9IGZpbmREaWFsb2dCeU5hbWUodGhpcy5OUENTY3JpcHQsIGN1cnJlbnRUZXh0LmJ1dHRvbnNbMF0uZ29Ub0RpYWxvZylcbiAgICAgICAgLy8gICB9XG4gICAgICAgICAgaWYgKGN1cnJlbnRUZXh0LmJ1dHRvbnNbMV0udHJpZ2dlcmVkQWN0aW9ucykge1xuICAgICAgICAgICAgY3VycmVudFRleHQuYnV0dG9uc1sxXS50cmlnZ2VyZWRBY3Rpb25zKClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9kZSA9PSBDb25maXJtTW9kZS5CdXR0b24zKSB7XG4gICAgICAgIGlmIChjdXJyZW50VGV4dC5idXR0b25zICYmIGN1cnJlbnRUZXh0LmJ1dHRvbnMubGVuZ3RoID49IDEpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGN1cnJlbnRUZXh0LmJ1dHRvbnNbMl0uZ29Ub0RpYWxvZyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIGRpYWxvZ0RhdGEuaW5kZXggPSBjdXJyZW50VGV4dC5idXR0b25zWzJdLmdvVG9EaWFsb2dcbiAgICAgICAgICB9IFxuXG4gICAgICAgICAgLy9UT0RPXG4gICAgICAgICAgLy9hbGxvdyBkaWFsb2dzIHRvIGJlIGluZGV4IGJ5IG5hbWVcbiAgICAgICAgLy8gICBlbHNlIHtcbiAgICAgICAgLy8gICAgIHRoaXMuYWN0aXZlVGV4dElkID0gZmluZERpYWxvZ0J5TmFtZSh0aGlzLk5QQ1NjcmlwdCwgY3VycmVudFRleHQuYnV0dG9uc1swXS5nb1RvRGlhbG9nKVxuICAgICAgICAvLyAgIH1cbiAgICAgICAgICBpZiAoY3VycmVudFRleHQuYnV0dG9uc1syXS50cmlnZ2VyZWRBY3Rpb25zKSB7XG4gICAgICAgICAgICBjdXJyZW50VGV4dC5idXR0b25zWzJdLnRyaWdnZXJlZEFjdGlvbnMoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtb2RlID09IENvbmZpcm1Nb2RlLkJ1dHRvbjQpIHtcbiAgICAgICAgaWYgKGN1cnJlbnRUZXh0LmJ1dHRvbnMgJiYgY3VycmVudFRleHQuYnV0dG9ucy5sZW5ndGggPj0gMSkge1xuICAgICAgICAgIGlmICh0eXBlb2YgY3VycmVudFRleHQuYnV0dG9uc1szXS5nb1RvRGlhbG9nID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgZGlhbG9nRGF0YS5pbmRleCA9IGN1cnJlbnRUZXh0LmJ1dHRvbnNbM10uZ29Ub0RpYWxvZ1xuICAgICAgICAgIH0gXG5cbiAgICAgICAgICAvL1RPRE9cbiAgICAgICAgICAvL2FsbG93IGRpYWxvZ3MgdG8gYmUgaW5kZXggYnkgbmFtZVxuICAgICAgICAvLyAgIGVsc2Uge1xuICAgICAgICAvLyAgICAgdGhpcy5hY3RpdmVUZXh0SWQgPSBmaW5kRGlhbG9nQnlOYW1lKHRoaXMuTlBDU2NyaXB0LCBjdXJyZW50VGV4dC5idXR0b25zWzBdLmdvVG9EaWFsb2cpXG4gICAgICAgIC8vICAgfVxuICAgICAgICAgIGlmIChjdXJyZW50VGV4dC5idXR0b25zWzNdLnRyaWdnZXJlZEFjdGlvbnMpIHtcbiAgICAgICAgICAgIGN1cnJlbnRUZXh0LmJ1dHRvbnNbM10udHJpZ2dlcmVkQWN0aW9ucygpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICBiZWdpblR5cGluZyhucGMpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBza2lwRGlhbG9ncyhucGM6RW50aXR5KSB7XG4gIGxldCBkaWFsb2dEYXRhID0gbnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpXG4gIGlmICghZGlhbG9nRGF0YS52aXNpYmxlIHx8ICtEYXRlLm5vdygpIC0gZGlhbG9nRGF0YS5vcGVuVGltZSA8IDEwMCkgcmV0dXJuXG5cbiAgd2hpbGUgKFxuICAgIGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdICYmXG4gICAgICBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5za2lwYWJsZSAmJlxuICAgICAgICBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5pc1F1ZXN0aW9uXG4gICl7XG4gICAgaWYoZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0udHJpZ2dlcmVkQnlOZXh0KXtcbiAgICAgIGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLnRyaWdnZXJlZEJ5TmV4dCgpXG4gICAgfVxuXG4gICAgaWYoZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uc2tpcGFibGUgJiZcbiAgICAgIGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmlzRW5kT2ZEaWFsb2dcbiAgICAgICl7XG4gICAgICAgIGNsb3NlRGlhbG9nV2luZG93KG5wYylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgXG4gICAgICBkaWFsb2dEYXRhLmluZGV4ICs9IDFcbiAgfVxuICBjb25maXJtVGV4dChucGMsIENvbmZpcm1Nb2RlLk5leHQpXG59XG5cbmV4cG9ydCB0eXBlIEltYWdlQXRsYXNEYXRhID0ge1xuICAgIGF0bGFzV2lkdGg6IG51bWJlcjtcbiAgICBhdGxhc0hlaWdodDogbnVtYmVyO1xuICAgIHNvdXJjZVdpZHRoOiBudW1iZXI7XG4gICAgc291cmNlSGVpZ2h0OiBudW1iZXI7XG4gICAgc291cmNlTGVmdDogbnVtYmVyO1xuICAgIHNvdXJjZVRvcDogbnVtYmVyO1xuICB9XG4gIFxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW1hZ2VBdGxhc01hcHBpbmcoZGF0YT86IEltYWdlQXRsYXNEYXRhKTogbnVtYmVyW10ge1xuICAgIGlmICghZGF0YSkgcmV0dXJuIFtdXG4gIFxuICAgIGNvbnN0IHtcbiAgICAgIGF0bGFzV2lkdGgsXG4gICAgICBhdGxhc0hlaWdodCxcbiAgICAgIHNvdXJjZVdpZHRoLFxuICAgICAgc291cmNlSGVpZ2h0LFxuICAgICAgc291cmNlVG9wLFxuICAgICAgc291cmNlTGVmdCxcbiAgICB9ID0gZGF0YVxuICBcbiAgICByZXR1cm4gW1xuICAgICAgc291cmNlTGVmdCAvIGF0bGFzV2lkdGgsIChhdGxhc0hlaWdodCAtIHNvdXJjZVRvcCAtIHNvdXJjZUhlaWdodCkgLyBhdGxhc0hlaWdodCxcbiAgICAgIHNvdXJjZUxlZnQgLyBhdGxhc1dpZHRoLCAoYXRsYXNIZWlnaHQgLSBzb3VyY2VUb3ApIC8gYXRsYXNIZWlnaHQsXG4gICAgICAoc291cmNlTGVmdCArIHNvdXJjZVdpZHRoKSAvIGF0bGFzV2lkdGgsIChhdGxhc0hlaWdodCAtIHNvdXJjZVRvcCkgLyBhdGxhc0hlaWdodCxcbiAgICAgIChzb3VyY2VMZWZ0ICsgc291cmNlV2lkdGgpIC8gYXRsYXNXaWR0aCwgKGF0bGFzSGVpZ2h0IC0gc291cmNlVG9wIC0gc291cmNlSGVpZ2h0KSAvIGF0bGFzSGVpZ2h0LFxuICAgIF1cbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiByZWFsV2lkdGgod2lkdGg/Om51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHdpZHRoID8gd2lkdGggOiBzZWN0aW9uLnNvdXJjZVdpZHRoXG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gcmVhbEhlaWdodChoZWlnaHQ/Om51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGhlaWdodCA/IGhlaWdodCA6IHNlY3Rpb24uc291cmNlSGVpZ2h0XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gZmluZERpYWxvZ0J5TmFtZShkaWFsb2dzOiBEaWFsb2dbXSwgbmFtZTogc3RyaW5nKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaWFsb2dzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoZGlhbG9nc1tpXS5uYW1lICYmIGRpYWxvZ3NbaV0ubmFtZSA9PSBuYW1lKSB7XG4gICAgICAgIHJldHVybiBpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAwXG4gIH1cblxuXG5cbmV4cG9ydCBmdW5jdGlvbiBjbG9zZVRhZyhkaWFsb2dEYXRhOmFueSwgbmV3Q2hhcnM6IG51bWJlcil7XG4gIGlmKGRpYWxvZ0RhdGEudmlzaWJsZUNoYXJzID09IDAgfHwgbmV3Q2hhcnMgPT0wICkgcmV0dXJuXG5cbmxldCBvcGVuVGFnOiBib29sZWFuID0gZmFsc2VcbmxldCBjbG9zZVRhZyA6IGJvb2xlYW4gPSBmYWxzZVxuZm9yKGxldCBpID0gZGlhbG9nRGF0YS52aXNpYmxlQ2hhcnMtbmV3Q2hhcnM7IGkgPCBkaWFsb2dEYXRhLnZpc2libGVDaGFycyA7IGkrKyl7XG4gIFxuICBpZighb3BlblRhZyl7XG4gICAgaWYoZGlhbG9nRGF0YS5mdWxsVGV4dC5zdWJzdHIoaSwgMSkgPT0gJzwnKXtcbiAgICAgIG9wZW5UYWc9IHRydWVcbiAgICAgIFxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZihkaWFsb2dEYXRhLmZ1bGxUZXh0LnN1YnN0cihpLCAxKSA9PSAnPicpe1xuICAgICAgY2xvc2VUYWc9IHRydWVcbiAgICAgIFxuICAgIH1cbiAgfVxufVxuXG5pZighb3BlblRhZyB8fCBjbG9zZVRhZyl7XHRcbiAgcmV0dXJuXG59XG5cbndoaWxlKGRpYWxvZ0RhdGEudmlzaWJsZUNoYXJzIDwgZGlhbG9nRGF0YS5mdWxsVGV4dC5sZW5ndGggJiYgZGlhbG9nRGF0YS5mdWxsVGV4dC5zdWJzdHIoZGlhbG9nRGF0YS52aXNpYmxlQ2hhcnMtMSwgMSkgIT0gJz4nKXtcbiAgZGlhbG9nRGF0YS52aXNpYmxlQ2hhcnMrPTFcbn1cbnJldHVyblxufVxuIl19
package/dist/npc.js CHANGED
@@ -59,7 +59,8 @@ export function create(transform, data) {
59
59
  turnSpeed: data && data.turningSpeed ? data.turningSpeed : 2,
60
60
  theme: data.darkUI ? darkTheme : lightTheme,
61
61
  bubbleXOffset: data.bubbleXOffset ? data.bubbleXOffset : 0,
62
- bubbleYOffset: data.bubbleYOffset ? data.bubbleYOffset : 0
62
+ bubbleYOffset: data.bubbleYOffset ? data.bubbleYOffset : 0,
63
+ volume: data && data.volume ? data.volume : 0.5
63
64
  });
64
65
  if (data && data.noUI) {
65
66
  }
@@ -641,4 +642,4 @@ function clearAnimationTimer(npc) {
641
642
  }
642
643
  return false;
643
644
  }
644
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL25wYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsUUFBUSxFQUNSLFdBQVcsRUFDWCxNQUFNLEVBRU4sYUFBYSxFQUViLFlBQVksRUFDWixZQUFZLEVBR1osbUJBQW1CLEVBQ25CLFNBQVMsRUFHVCxXQUFXLEVBQ1gsdUJBQXVCLEVBQ3hCLE1BQU0sY0FBYyxDQUFBO0FBQ3JCLE9BQU8sRUFBVSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDbkcsT0FBTyxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDeEgsT0FBTyxFQUE4QyxXQUFXLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBZSxNQUFNLFNBQVMsQ0FBQTtBQUNqSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUM1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBaUIsTUFBTSxlQUFlLENBQUE7QUFDbkcsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUtwQyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQXdCLElBQUksR0FBRyxFQUFFLENBQUE7QUFDM0QsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQXFCLElBQUksR0FBRyxFQUFFLENB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RUFBRSxRQUFRLENBQUMsUUFBUTtRQUN4QixRQUFRLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU07UUFDeEQsWUFBWSxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVM7UUFDMUYsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVM7UUFDNUQsU0FBUyxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUs7UUFDakQsU0FBUyxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVELEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVU7UUFDM0MsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUQsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDM0QsQ0FBQyxDQUFBO0lBRUYsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7U0FBTSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakMsU0FBUyxDQUNQLEdBQUcsRUFDSCxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFD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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFuaW1hdG9yLFxuICBBdmF0YXJTaGFwZSxcbiAgZW5naW5lLFxuICBFbnRpdHksXG4gIEdsdGZDb250YWluZXIsXG4gIElucHV0QWN0aW9uLFxuICBNZXNoQ29sbGlkZXIsXG4gIE1lc2hSZW5kZXJlcixcbiAgUEJBdmF0YXJTaGFwZSxcbiAgUEJHbHRmQ29udGFpbmVyLFxuICBwb2ludGVyRXZlbnRzU3lzdGVtLFxuICBUcmFuc2Zvcm0sXG4gIFRyYW5zZm9ybVR5cGUsXG4gIFBCQW5pbWF0aW9uU3RhdGUsXG4gIFRyaWdnZXJBcmVhLCBcbiAgdHJpZ2dlckFyZWFFdmVudHNTeXN0ZW1cbn0gZnJvbSAnQGRjbC9zZGsvZWNzJ1xuaW1wb3J0IHsgQ29sb3IzLCBRdWF0ZXJuaW9uLCBWZWN0b3IzIH0gZnJvbSAnQGRjbC9zZGsvbWF0aCdcbmltcG9ydCB7IGJ1YmJsZXMsIGNsb3NlQnViYmxlLCBjcmVhdGVEaWFsb2dCdWJibGUsIG9wZW5CdWJibGUgfSBmcm9tICcuL2J1YmJsZSdcbmltcG9ydCB7IElzRm9sbG93aW5nUGF0aCwgVHJhY2tVc2VyRmxhZyB9IGZyb20gJy4vY29tcG9uZW50cydcbmltcG9ydCB7IGFkZERpYWxvZywgY2xvc2VEaWFsb2csIGZpbmREaWFsb2dCeU5hbWUsIG5wY0RpYWxvZ0NvbXBvbmVudCwgb3BlbkRpYWxvZyB9IGZyb20gJy4vZGlhbG9nJ1xuaW1wb3J0IHsgZmFjZVVzZXJTeXN0ZW0sIGhhbmRsZUJ1YmJsZXR5cGluZywgaGFuZGxlRGlhbG9nVHlwaW5nLCBoYW5kbGVQYXRoVGltZXMsIGlucHV0TGlzdGVuZXJTeXN0ZW0gfSBmcm9tICcuL3N5c3RlbXMnXG5pbXBvcnQgeyBEaWFsb2csIEZvbGxvd1BhdGhEYXRhLCBJbWFnZURhdGEsIE5QQ0RhdGEsIE5QQ1BhdGhUeXBlLCBOUENTdGF0ZSwgTlBDVHlwZSwgVHJpZ2dlckRhdGEgfSBmcm9tICcuL3R5cGVzJ1xuaW1wb3J0IHsgZGFya1RoZW1lLCBsaWdodFRoZW1lIH0gZnJvbSAnLi91aSdcbmltcG9ydCB7IGRlYnVnVHJpZ2dlcnMsIGRlbGF5ZWRGdW5jdGlvbiwgY2xlYXJEZWxheWVkRnVuY3Rpb24sIERlbGF5ZWRIYW5kbGUgfSBmcm9tICcuL3V0aWxzL3V0aWxzJ1xuaW1wb3J0IHsgcGF0aHMgfSBmcm9tICcuL3V0aWxzL3BhdGgnXG5cblxudHlwZSBOUENEYXRhRnJvbUVudGl0eSA9IE9taXQ8TlBDRGF0YSwgJ3R5cGUnPiAmIHsgdHlwZT86IE5QQ1R5cGUgfVxuXG5leHBvcnQgY29uc3Qgd2Fsa2luZ1RpbWVyczogTWFwPEVudGl0eSwgbnVtYmVyPiA9IG5ldyBNYXAoKVxuZXhwb3J0IGNvbnN0IG5wY0RhdGFDb21wb25lbnQ6IE1hcDxFbnRpdHksIGFueT4gPSBuZXcgTWFwKClcbmV4cG9ydCBsZXQgTlVMTF9OUEM6IEVudGl0eSA9IDAgYXMgRW50aXR5XG5leHBvcnQgbGV0IGFjdGl2ZU5QQzogRW50aXR5ID0gTlVMTF9OUENcbmV4cG9ydCBsZXQgYmxhbmtEaWFsb2c6IG51bWJlciA9IDBcblxuZW5naW5lLmFkZFN5c3RlbShoYW5kbGVQYXRoVGltZXMpXG5lbmdpbmUuYWRkU3lzdGVtKGhhbmRsZURpYWxvZ1R5cGluZylcbmVuZ2luZS5hZGRTeXN0ZW0oaGFuZGxlQnViYmxldHlwaW5nKVxuZW5naW5lLmFkZFN5c3RlbShmYWNlVXNlclN5c3RlbSlcbmVuZ2luZS5hZGRTeXN0ZW0oaW5wdXRMaXN0ZW5lclN5c3RlbSlcblxuLy9UT0RPIE1BS0UgaXNDb29sZG93biBhbmQgbm8gbG9uZ2VyIGhhdmUgdG8gdHJhY2sgd2l0aCBtYXAgdG8gcmVtb3ZlIG1lbW9yeSBsZWFrIGlzc3Vlc1xuY29uc3QgaXNDb29sZG93bjogTWFwPEVudGl0eSwgYW55PiA9IG5ldyBNYXAoKVxuY29uc3Qgb25BY3RpdmF0ZUNiczogTWFwPEVudGl0eSwgYW55PiA9IG5ldyBNYXAoKVxuY29uc3Qgb25XYWxrQXdheUNiczogTWFwPEVudGl0eSwgYW55PiA9IG5ldyBNYXAoKVxuY29uc3QgYW5pbVRpbWVyczogTWFwPEVudGl0eSwgRGVsYXllZEhhbmRsZT4gPSBuZXcgTWFwKClcbmNvbnN0IHBvaW50UmVhY2hlZENhbGxiYWNrczogTWFwPEVudGl0eSwgYW55PiA9IG5ldyBNYXAoKVxuY29uc3Qgb25GaW5pc2hDYWxsYmFja3M6IE1hcDxFbnRpdHksIGFueT4gPSBuZXcgTWFwKClcblxuZXhwb3J0IGZ1bmN0aW9uIHNob3dEZWJ1ZyhkZWJ1ZzogYm9vbGVhbikge1xuICBpZihkZWJ1Zykge1xuICAgIGRlYnVnVHJpZ2dlcnMoKVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREYXRhKG5wYzogRW50aXR5KSB7XG4gIHJldHVybiBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGUodHJhbnNmb3JtOiBhbnksIGRhdGE6IE5QQ0RhdGEpIHtcbiAgbGV0IG5wYyA9IGVuZ2luZS5hZGRFbnRpdHkoKVxuXG4gIGxldCB0OiBUcmFuc2Zvcm1UeXBlID0ge1xuICAgIHBvc2l0aW9uOiB0cmFuc2Zvcm0ucG9zaXRpb24gPyB0cmFuc2Zvcm0ucG9zaXRpb24gOiBWZWN0b3IzLmNyZWF0ZSgwLCAwLCAwKSxcbiAgICByb3RhdGlvbjogdHJhbnNmb3JtLnJvdGF0aW9uID8gdHJhbnNmb3JtLnJvdGF0aW9uIDogUXVhdGVybmlvbi5aZXJvKCksXG4gICAgc2NhbGU6IHRyYW5zZm9ybS5zY2FsZSA/IHRyYW5zZm9ybS5zY2FsZSA6IFZlY3RvcjMuT25lKClcbiAgfVxuICBUcmFuc2Zvcm0uY3JlYXRlKG5wYywgdClcblxuICBucGNEYXRhQ29tcG9uZW50LnNldChucGMsIHtcbiAgICBpbnRyb2R1Y2VkOiBmYWxzZSxcbiAgICBpbkNvb2xkb3duOiBmYWxzZSxcbiAgICBjb29sRG93bkR1cmF0aW9uOiBkYXRhICYmIGRhdGEuY29vbERvd25EdXJhdGlvbiA/IGRhdGEuY29vbERvd25EdXJhdGlvbiA6IDUsXG4gICAgZmFjZVVzZXI6IGRhdGEgJiYgZGF0YS5mYWNlVXNlciA/IGRhdGEuZmFjZVVzZXIgOiB1bmRlZmluZWQsXG4gICAgd2Fsa2luZ1NwZWVkOiAyLFxuICAgIHdhbGtpbmdBbmltOiBkYXRhICYmIGRhdGEud2Fsa2luZ0FuaW0gPyBkYXRhLndhbGtpbmdBbmltIDogdW5kZWZpbmVkLFxuICAgIHBhdGhEYXRhOiBkYXRhLnBhdGhEYXRhID8gZGF0YS5wYXRoRGF0YSA6IHVuZGVmaW5lZCxcbiAgICBjdXJyZW50UGF0aERhdGE6IFtdLFxuICAgIG1hbnVhbFN0b3A6IGZhbHNlLFxuICAgIHBhdGhJbmRleDogMCxcbiAgICBzdGF0ZTogTlBDU3RhdGUuU1RBTkRJTkcsXG4gICAgaWRsZUFuaW06IGRhdGEgJiYgZGF0YS5pZGxlQW5pbSA/IGRhdGEuaWRsZUFuaW0gOiAnSWRsZScsXG4gICAgYnViYmxlSGVpZ2h0OiBkYXRhICYmIGRhdGEudGV4dEJ1YmJsZSAmJiBkYXRhLmJ1YmJsZUhlaWdodCA/IGRhdGEuYnViYmxlSGVpZ2h0IDogdW5kZWZpbmVkLFxuICAgIGJ1YmJsZVNvdW5kOiBkYXRhLmRpYWxvZ1NvdW5kID8gZGF0YS5kaWFsb2dTb3VuZCA6IHVuZGVmaW5lZCxcbiAgICBoYXNCdWJibGU6IGRhdGEgJiYgZGF0YS50ZXh0QnViYmxlID8gdHJ1ZSA6IGZhbHNlLFxuICAgIHR1cm5TcGVlZDogZGF0YSAmJiBkYXRhLnR1cm5pbmdTcGVlZCA/IGRhdGEudHVybmluZ1NwZWVkIDogMixcbiAgICB0aGVtZTogZGF0YS5kYXJrVUkgPyBkYXJrVGhlbWUgOiBsaWdodFRoZW1lLFxuICAgIGJ1YmJsZVhPZmZzZXQ6IGRhdGEuYnViYmxlWE9mZnNldCA/IGRhdGEuYnViYmxlWE9mZnNldCA6IDAsXG4gICAgYnViYmxlWU9mZnNldDogZGF0YS5idWJibGVZT2Zmc2V0ID8gZGF0YS5idWJibGVZT2Zmc2V0IDogMFxuICB9KVxuXG4gIGlmIChkYXRhICYmIGRhdGEubm9VSSkge1xuICB9IGVsc2UgaWYgKGRhdGEgJiYgZGF0YS5wb3J0cmFpdCkge1xuICAgIGFkZERpYWxvZyhcbiAgICAgIG5wYyxcbiAgICAgIGRhdGEgJiYgZGF0YS5kaWFsb2dTb3VuZCA/IGRhdGEuZGlhbG9nU291bmQgOiB1bmRlZmluZWQsXG4gICAgICB0eXBlb2YgZGF0YS5wb3J0cmFpdCA9PT0gYHN0cmluZ2AgPyB7IHBhdGg6IGRhdGEucG9ydHJhaXQgfSA6IGRhdGEucG9ydHJhaXRcbiAgICApXG4gIH0gZWxzZSB7XG4gICAgYWRkRGlhbG9nKG5wYywgZGF0YSAmJiBkYXRhLmRpYWxvZ1NvdW5kID8gZGF0YS5kaWFsb2dTb3VuZCA6IHVuZGVmaW5lZClcbiAgfVxuXG4gIGlmIChkYXRhICYmIGRhdGEudGV4dEJ1YmJsZSkge1xuICAgIGNyZWF0ZURpYWxvZ0J1YmJsZShucGMsIG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykuYnViYmxlSGVpZ2h0KVxuICB9XG5cbiAgb25BY3RpdmF0ZUNicy5zZXQobnBjLCAob3RoZXI6IEVudGl0eSkgPT4ge1xuICAgIGRhdGEub25BY3RpdmF0ZShvdGhlcilcbiAgfSlcblxuICBpZiAoZGF0YSAmJiBkYXRhLmhhc093blByb3BlcnR5KCdvbldhbGtBd2F5JykpIHtcbiAgICBvbldhbGtBd2F5Q2JzLnNldChucGMsIChvdGhlcjogRW50aXR5KSA9PiB7XG4gICAgICBpZiAoIWRhdGEgfHwgIWRhdGEuY29udGludWVPbldhbGtBd2F5KSB7XG4gICAgICAgIGlmIChucGNEaWFsb2dDb21wb25lbnQuaGFzKG5wYykpIHtcbiAgICAgICAgICBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYykudmlzaWJsZSA9IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChucGNEaWFsb2dDb21wb25lbnQuaGFzKG5wYykpIHtcbiAgICAgICAgICBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYykudmlzaWJsZSA9IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGRhdGEub25XYWxrQXdheSEob3RoZXIpXG4gICAgfSlcbiAgfVxuXG4gIGFkZE5QQ0JvbmVzKG5wYywgZGF0YSlcbiAgYWRkQ2xpY2tSZWFjdGlvbnMobnBjLCBkYXRhKVxuICBhZGRUcmlnZ2VyQXJlYShucGMsIGRhdGEpXG5cbiAgaWYgKGRhdGEgJiYgZGF0YS5wYXRoRGF0YSAmJiBkYXRhLnBhdGhEYXRhLnNwZWVkKSB7XG4gICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgbnBjRGF0YS53YWxraW5nU3BlZWQgPSBkYXRhLnBhdGhEYXRhLnNwZWVkXG4gIH1cblxuICBpZiAoZGF0YSAmJiBkYXRhLmNvb2xEb3duRHVyYXRpb24pIHtcbiAgICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgICBucGNEYXRhLmNvb2xEb3duRHVyYXRpb24gPSBkYXRhLmNvb2xEb3duRHVyYXRpb25cbiAgfVxuXG4gIGlmIChkYXRhICYmIGRhdGEucGF0aERhdGEpIHtcbiAgICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgICBucGNEYXRhLnBhdGhEYXRhLmxvb3AgPSB0cnVlXG4gICAgZm9sbG93UGF0aChucGMsIG5wY0RhdGEucGF0aERhdGEpXG4gIH1cblxuICByZXR1cm4gbnBjXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGcm9tRW50aXR5KGVudGl0eTogRW50aXR5LCBkYXRhOiBOUENEYXRhRnJvbUVudGl0eSkge1xuICBjb25zdCBucGMgPSBlbnRpdHlcblxuICBjb25zdCByZXNvbHZlZFR5cGUgPSAoZGF0YSAmJiBkYXRhLnR5cGUgIT09IHVuZGVmaW5lZCA/IGRhdGEudHlwZSA6IE5QQ1R5cGUuQ1VTVE9NKVxuXG4gIGlmICghVHJhbnNmb3JtLmhhcyhucGMpKSB7XG4gICAgY29uc29sZS5sb2coJ2NyZWF0ZUZyb21FbnRpdHk6IFByb3ZpZGVkIGVudGl0eSBpcyBtaXNzaW5nIFRyYW5zZm9ybSBjb21wb25lbnQnKVxuICB9XG5cbiAgaWYgKHJlc29sdmVkVHlwZSA9PT0gTlBDVHlwZS5DVVNUT00gJiYgIUdsdGZDb250YWluZXIuaGFzKG5wYykpIHtcbiAgICBjb25zb2xlLmxvZygnY3JlYXRlRnJvbUVudGl0eTogRXhwZWN0ZWQgYSBHbHRmQ29udGFpbmVyIG9uIENVU1RPTSBOUEMgZW50aXR5JylcbiAgfVxuXG4gIG5wY0RhdGFDb21wb25lbnQuc2V0KG5wYywge1xuICAgIGludHJvZHVjZWQ6IGZhbHNlLFxuICAgIGluQ29vbGRvd246IGZhbHNlLFxuICAgIGNvb2xEb3duRHVyYXRpb246IGRhdGEgJiYgZGF0YS5jb29sRG93bkR1cmF0aW9uID8gZGF0YS5jb29sRG93bkR1cmF0aW9uIDogNSxcbiAgICBmYWNlVXNlcjogZGF0YSAmJiBkYXRhLmZhY2VVc2VyID8gZGF0YS5mYWNlVXNlciA6IHVuZGVmaW5lZCxcbiAgICB3YWxraW5nU3BlZWQ6IDIsXG4gICAgd2Fsa2luZ0FuaW06IGRhdGEgJiYgZGF0YS53YWxraW5nQW5pbSA/IGRhdGEud2Fsa2luZ0FuaW0gOiB1bmRlZmluZWQsXG4gICAgcGF0aERhdGE6IGRhdGEucGF0aERhdGEgPyBkYXRhLnBhdGhEYXRhIDogdW5kZWZpbmVkLFxuICAgIGN1cnJlbnRQYXRoRGF0YTogW10sXG4gICAgbWFudWFsU3RvcDogZmFsc2UsXG4gICAgcGF0aEluZGV4OiAwLFxuICAgIHN0YXRlOiBOUENTdGF0ZS5TVEFORElORyxcbiAgICBpZGxlQW5pbTogZGF0YSAmJiBkYXRhLmlkbGVBbmltID8gZGF0YS5pZGxlQW5pbSA6ICdJZGxlJyxcbiAgICBidWJibGVIZWlnaHQ6IGRhdGEgJiYgZGF0YS50ZXh0QnViYmxlICYmIGRhdGEuYnViYmxlSGVpZ2h0ID8gZGF0YS5idWJibGVIZWlnaHQgOiB1bmRlZmluZWQsXG4gICAgYnViYmxlU291bmQ6IGRhdGEuZGlhbG9nU291bmQgPyBkYXRhLmRpYWxvZ1NvdW5kIDogdW5kZWZpbmVkLFxuICAgIGhhc0J1YmJsZTogZGF0YSAmJiBkYXRhLnRleHRCdWJibGUgPyB0cnVlIDogZmFsc2UsXG4gICAgdHVyblNwZWVkOiBkYXRhICYmIGRhdGEudHVybmluZ1NwZWVkID8gZGF0YS50dXJuaW5nU3BlZWQgOiAyLFxuICAgIHRoZW1lOiBkYXRhLmRhcmtVSSA/IGRhcmtUaGVtZSA6IGxpZ2h0VGhlbWUsXG4gICAgYnViYmxlWE9mZnNldDogZGF0YS5idWJibGVYT2Zmc2V0ID8gZGF0YS5idWJibGVYT2Zmc2V0IDogMCxcbiAgICBidWJibGVZT2Zmc2V0OiBkYXRhLmJ1YmJsZVlPZmZzZXQgPyBkYXRhLmJ1YmJsZVlPZmZzZXQgOiAwXG4gIH0pXG5cbiAgaWYgKGRhdGEgJiYgZGF0YS5ub1VJKSB7XG4gIH0gZWxzZSBpZiAoZGF0YSAmJiBkYXRhLnBvcnRyYWl0KSB7XG4gICAgYWRkRGlhbG9nKFxuICAgICAgbnBjLFxuICAgICAgZGF0YSAmJiBkYXRhLmRpYWxvZ1NvdW5kID8gZGF0YS5kaWFsb2dTb3VuZCA6IHVuZGVmaW5lZCxcbiAgICAgIHR5cGVvZiBkYXRhLnBvcnRyYWl0ID09PSBgc3RyaW5nYCA/IHsgcGF0aDogZGF0YS5wb3J0cmFpdCB9IDogZGF0YS5wb3J0cmFpdFxuICAgIClcbiAgfSBlbHNlIHtcbiAgICBhZGREaWFsb2cobnBjLCBkYXRhICYmIGRhdGEuZGlhbG9nU291bmQgPyBkYXRhLmRpYWxvZ1NvdW5kIDogdW5kZWZpbmVkKVxuICB9XG5cbiAgaWYgKGRhdGEgJiYgZGF0YS50ZXh0QnViYmxlKSB7XG4gICAgY3JlYXRlRGlhbG9nQnViYmxlKG5wYywgbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS5idWJibGVIZWlnaHQpXG4gIH1cblxuICBvbkFjdGl2YXRlQ2JzLnNldChucGMsIChvdGhlcjogRW50aXR5KSA9PiB7XG4gICAgZGF0YS5vbkFjdGl2YXRlKG90aGVyKVxuICB9KVxuXG4gIGlmIChkYXRhICYmIGRhdGEuaGFzT3duUHJvcGVydHkoJ29uV2Fsa0F3YXknKSkge1xuICAgIG9uV2Fsa0F3YXlDYnMuc2V0KG5wYywgKG90aGVyOiBFbnRpdHkpID0+IHtcbiAgICAgIGlmICghZGF0YSB8fCAhZGF0YS5jb250aW51ZU9uV2Fsa0F3YXkpIHtcbiAgICAgICAgaWYgKG5wY0RpYWxvZ0NvbXBvbmVudC5oYXMobnBjKSkge1xuICAgICAgICAgIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQobnBjKS52aXNpYmxlID0gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKG5wY0RpYWxvZ0NvbXBvbmVudC5oYXMobnBjKSkge1xuICAgICAgICAgIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQobnBjKS52aXNpYmxlID0gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZGF0YS5vbldhbGtBd2F5IShvdGhlcilcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgZGF0YVdpdGhUeXBlID0geyAuLi5kYXRhLCB0eXBlOiByZXNvbHZlZFR5cGUgfSBhcyBOUENEYXRhXG4gIHNlZWRBbmltYXRvckZvckV4aXN0aW5nKG5wYywgZGF0YVdpdGhUeXBlKVxuICBhZGRDbGlja1JlYWN0aW9ucyhucGMsIGRhdGFXaXRoVHlwZSlcbiAgYWRkVHJpZ2dlckFyZWEobnBjLCBkYXRhV2l0aFR5cGUpXG5cbiAgaWYgKGRhdGEgJiYgZGF0YS5wYXRoRGF0YSAmJiBkYXRhLnBhdGhEYXRhLnNwZWVkKSB7XG4gICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgbnBjRGF0YS53YWxraW5nU3BlZWQgPSBkYXRhLnBhdGhEYXRhLnNwZWVkXG4gIH1cblxuICBpZiAoZGF0YSAmJiBkYXRhLmNvb2xEb3duRHVyYXRpb24pIHtcbiAgICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgICBucGNEYXRhLmNvb2xEb3duRHVyYXRpb24gPSBkYXRhLmNvb2xEb3duRHVyYXRpb25cbiAgfVxuXG4gIGlmIChkYXRhICYmIGRhdGEucGF0aERhdGEpIHtcbiAgICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgICBucGNEYXRhLnBhdGhEYXRhLmxvb3AgPSB0cnVlXG4gICAgZm9sbG93UGF0aChucGMsIG5wY0RhdGEucGF0aERhdGEpXG4gIH1cblxuICByZXR1cm4gbnBjXG59XG5cbmZ1bmN0aW9uIGFkZE5QQ0JvbmVzKG5wYzogRW50aXR5LCBkYXRhOiBOUENEYXRhKSB7XG4gIGNvbnN0IG1vZGVsSXNTdHJpbmcgPSBkYXRhICYmIGRhdGEubW9kZWwgJiYgdHlwZW9mIGRhdGEubW9kZWwgPT09IGBzdHJpbmdgXG4gIGNvbnN0IG1vZGVsQXZhdGFyRGF0YTogUEJBdmF0YXJTaGFwZSB8IHVuZGVmaW5lZCA9IG1vZGVsSXNTdHJpbmdcbiAgICA/IHVuZGVmaW5lZFxuICAgIDogZGF0YS5tb2RlbCAmJiAoZGF0YS5tb2RlbCBhcyBhbnkpLmJvZHlTaGFwZVxuICAgICAgPyAoZGF0YS5tb2RlbCBhcyBQQkF2YXRhclNoYXBlKVxuICAgICAgOiB1bmRlZmluZWRcbiAgY29uc3QgbW9kZWxHTFRGRGF0YTogUEJHbHRmQ29udGFpbmVyIHwgdW5kZWZpbmVkID0gbW9kZWxJc1N0cmluZ1xuICAgID8gdW5kZWZpbmVkXG4gICAgOiBkYXRhLm1vZGVsICYmIChkYXRhLm1vZGVsIGFzIGFueSkuc3JjXG4gICAgICA/IChkYXRhLm1vZGVsIGFzIFBCR2x0ZkNvbnRhaW5lcilcbiAgICAgIDogdW5kZWZpbmVkXG5cbiAgc3dpdGNoIChkYXRhLnR5cGUpIHtcbiAgICBjYXNlIE5QQ1R5cGUuQVZBVEFSOlxuICAgICAgQXZhdGFyU2hhcGUuY3JlYXRlKFxuICAgICAgICBucGMsXG4gICAgICAgICFkYXRhIHx8ICFkYXRhLm1vZGVsIHx8ICFtb2RlbEF2YXRhckRhdGFcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgIGlkOiAnbnBjJyxcbiAgICAgICAgICAgIG5hbWU6ICdOUEMnLFxuICAgICAgICAgICAgYm9keVNoYXBlOiAndXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOkJhc2VNYWxlJyxcbiAgICAgICAgICAgIGVtb3RlczogW10sXG4gICAgICAgICAgICB3ZWFyYWJsZXM6IFtcbiAgICAgICAgICAgICAgJ3VybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczpmX2V5ZXNfMDAnLFxuICAgICAgICAgICAgICAndXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOmZfZXllYnJvd3NfMDAnLFxuICAgICAgICAgICAgICAndXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOmZfbW91dGhfMDAnLFxuICAgICAgICAgICAgICAndXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOmNvbWZ5X3Nwb3J0X3NhbmRhbHMnLFxuICAgICAgICAgICAgICAndXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOnNvY2Nlcl9wYW50cycsXG4gICAgICAgICAgICAgICd1cm46ZGVjZW50cmFsYW5kOm9mZi1jaGFpbjpiYXNlLWF2YXRhcnM6ZWxlZ2FudF9zd2VhdGVyJ1xuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgICA6IG1vZGVsQXZhdGFyRGF0YVxuICAgICAgKVxuICAgICAgYnJlYWtcblxuICAgIGNhc2UgTlBDVHlwZS5DVVNUT006XG4gICAgICBHbHRmQ29udGFpbmVyLmNyZWF0ZShcbiAgICAgICAgbnBjLFxuICAgICAgICBtb2RlbElzU3RyaW5nICYmIHR5cGVvZiBkYXRhLm1vZGVsID09PSBgc3RyaW5nYCA/IHsgc3JjOiBkYXRhICYmIGRhdGEubW9kZWwgPyBkYXRhLm1vZGVsIDogJycgfSA6IG1vZGVsR0xURkRhdGFcbiAgICAgIClcbiAgICAgIEFuaW1hdG9yLmNyZWF0ZShucGMsIHtcbiAgICAgICAgc3RhdGVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xpcDogZGF0YSAmJiBkYXRhLmlkbGVBbmltID8gZGF0YS5pZGxlQW5pbSA6ICdJZGxlJyxcbiAgICAgICAgICAgIGxvb3A6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0pXG5cbiAgICAgIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgICAgbnBjRGF0YS5pZGxlQW5pbSA9IGRhdGEgJiYgZGF0YS5pZGxlQW5pbSA/IGRhdGEuaWRsZUFuaW0gOiAnSWRsZSdcbiAgICAgIG5wY0RhdGEubGFzdFBsYXllZEFuaW0gPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLmlkbGVBbmltXG5cbiAgICAgIEFuaW1hdG9yLnBsYXlTaW5nbGVBbmltYXRpb24obnBjLCBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLmlkbGVBbmltKVxuXG4gICAgICBpZiAoZGF0YSAmJiBkYXRhLndhbGtpbmdBbmltKSB7XG4gICAgICAgIG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykud2Fsa2luZ0FuaW0gPSBkYXRhLndhbGtpbmdBbmltXG4gICAgICAgIGxldCBhbmltYXRpb25zID0gQW5pbWF0b3IuZ2V0TXV0YWJsZShucGMpXG4gICAgICAgIGFuaW1hdGlvbnMuc3RhdGVzLnB1c2goeyBjbGlwOiBkYXRhLndhbGtpbmdBbmltLCBsb29wOiB0cnVlIH0pXG4gICAgICB9XG5cbiAgICAgIGJyZWFrXG5cbiAgICBjYXNlIE5QQ1R5cGUuQkxBTks6XG4gICAgICBNZXNoUmVuZGVyZXIuc2V0Qm94KG5wYylcbiAgICAgIE1lc2hDb2xsaWRlci5zZXRCb3gobnBjKVxuICAgICAgYnJlYWtcbiAgfVxufVxuXG5mdW5jdGlvbiBzZWVkQW5pbWF0b3JGb3JFeGlzdGluZyhucGM6IEVudGl0eSwgZGF0YTogTlBDRGF0YSkge1xuICBpZiAoZGF0YS50eXBlICE9PSBOUENUeXBlLkNVU1RPTSkgcmV0dXJuXG5cbiAgY29uc3QgaWRsZUNsaXAgPSBkYXRhICYmIGRhdGEuaWRsZUFuaW0gPyBkYXRhLmlkbGVBbmltIDogJ0lkbGUnXG5cbiAgaWYgKCFBbmltYXRvci5oYXMobnBjKSkge1xuICAgIEFuaW1hdG9yLmNyZWF0ZShucGMsIHtcbiAgICAgIHN0YXRlczogW1xuICAgICAgICB7XG4gICAgICAgICAgY2xpcDogaWRsZUNsaXAsXG4gICAgICAgICAgbG9vcDogdHJ1ZVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSlcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBhbmltYXRpb25zID0gQW5pbWF0b3IuZ2V0TXV0YWJsZShucGMpXG4gICAgaWYgKGFuaW1hdGlvbnMuc3RhdGVzLmZpbHRlcigoYW5pbWF0aW9uOiBQQkFuaW1hdGlvblN0YXRlKSA9PiBhbmltYXRpb24uY2xpcCA9PT0gaWRsZUNsaXApLmxlbmd0aCA9PT0gMCkge1xuICAgICAgYW5pbWF0aW9ucy5zdGF0ZXMucHVzaCh7IGNsaXA6IGlkbGVDbGlwLCBsb29wOiB0cnVlIH0pXG4gICAgfVxuICB9XG5cbiAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gIG5wY0RhdGEuaWRsZUFuaW0gPSBpZGxlQ2xpcFxuICBucGNEYXRhLmxhc3RQbGF5ZWRBbmltID0gaWRsZUNsaXBcbiAgaWYgKHR5cGVvZiBpZGxlQ2xpcCA9PT0gJ3N0cmluZycgJiYgaWRsZUNsaXAubGVuZ3RoID4gMCkge1xuICAgIEFuaW1hdG9yLnBsYXlTaW5nbGVBbmltYXRpb24obnBjLCBpZGxlQ2xpcClcbiAgfVxuXG4gIGlmIChkYXRhICYmIGRhdGEud2Fsa2luZ0FuaW0pIHtcbiAgICBjb25zdCBhbmltYXRpb25zID0gQW5pbWF0b3IuZ2V0TXV0YWJsZShucGMpXG4gICAgaWYgKHR5cGVvZiBkYXRhLndhbGtpbmdBbmltID09PSAnc3RyaW5nJyAmJiBkYXRhLndhbGtpbmdBbmltLmxlbmd0aCA+IDAgJiYgYW5pbWF0aW9ucy5zdGF0ZXMuZmlsdGVyKChhbmltYXRpb246IFBCQW5pbWF0aW9uU3RhdGUpID0+IGFuaW1hdGlvbi5jbGlwID09PSBkYXRhLndhbGtpbmdBbmltISkubGVuZ3RoID09PSAwKSB7XG4gICAgICBhbmltYXRpb25zLnN0YXRlcy5wdXNoKHsgY2xpcDogZGF0YS53YWxraW5nQW5pbSEsIGxvb3A6IHRydWUgfSlcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBkYXRhLndhbGtpbmdBbmltID09PSAnc3RyaW5nJykge1xuICAgICAgbnBjRGF0YS53YWxraW5nQW5pbSA9IGRhdGEud2Fsa2luZ0FuaW1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkQ2xpY2tSZWFjdGlvbnMobnBjOiBFbnRpdHksIGRhdGE6IE5QQ0RhdGEpIHtcbiAgbGV0IGFjdGl2YXRlQnV0dG9uID0gZGF0YSAmJiBkYXRhLm9ubHlDbGlja1RyaWdnZXIgPyBJbnB1dEFjdGlvbi5JQV9QT0lOVEVSIDogSW5wdXRBY3Rpb24uSUFfUFJJTUFSWVxuXG4gIC8qXG4gIHBvaW50ZXJFdmVudHNTeXN0ZW0ub25Qb2ludGVyRG93bihcbiAgICAgIHtcbiAgICAgICAgICBlbnRpdHk6IG5wYyxcbiAgICAgICAgICBvcHRzOiB7XG4gICAgICAgICAgICAgIGJ1dHRvbjogYWN0aXZhdGVCdXR0b24sXG4gICAgICAgICAgICAgIGhvdmVyVGV4dDogZGF0YSAmJiBkYXRhLmhvdmVyVGV4dCA/IGRhdGEuaG92ZXJUZXh0IDogJ1RhbGsnLFxuICAgICAgICAgICAgICBzaG93RmVlZGJhY2s6IGRhdGEgJiYgZGF0YS5vbmx5RXh0ZXJuYWxUcmlnZ2VyID8gZmFsc2UgOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgfSxcbiAgICAgICgpID0+IHtcbiAgICAgICAgICBpZiAoaXNDb29sZG93bi5oYXMobnBjKSB8fCBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYykudmlzaWJsZSkgcmV0dXJuXG4gICAgICAgICAgYWN0aXZhdGUobnBjLCBlbmdpbmUuUGxheWVyRW50aXR5KVxuICAgICAgfSxcbiAgKVxuICAqL1xuXG4gIHBvaW50ZXJFdmVudHNTeXN0ZW0ub25Qb2ludGVyRG93bihcbiAgICBucGMsXG4gICAgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKGlzQ29vbGRvd24uaGFzKG5wYykgfHwgbnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpLnZpc2libGUpIHJldHVyblxuICAgICAgYWN0aXZhdGUobnBjLCBlbmdpbmUuUGxheWVyRW50aXR5KVxuICAgIH0sXG4gICAge1xuICAgICAgYnV0dG9uOiBhY3RpdmF0ZUJ1dHRvbixcbiAgICAgIGhvdmVyVGV4dDogZGF0YSAmJiBkYXRhLmhvdmVyVGV4dCA/IFN0cmluZyhkYXRhLmhvdmVyVGV4dCkgOiAnVGFsaycsXG4gICAgICBzaG93RmVlZGJhY2s6IGRhdGEgJiYgZGF0YS5vbmx5RXh0ZXJuYWxUcmlnZ2VyID8gZmFsc2UgOiB0cnVlXG4gICAgfVxuICApXG5cbiAgaWYgKGRhdGEgJiYgZGF0YS5vbmx5RXh0ZXJuYWxUcmlnZ2VyKSB7XG4gICAgcG9pbnRlckV2ZW50c1N5c3RlbS5yZW1vdmVPblBvaW50ZXJEb3duKG5wYylcbiAgfVxufVxuXG5mdW5jdGlvbiBhZGRUcmlnZ2VyQXJlYShucGM6IEVudGl0eSwgZGF0YTogTlBDRGF0YSkge1xuICBsZXQgdHJpZ2dlckRhdGE6IFRyaWdnZXJEYXRhID0ge31cblxuICBpZiAoIWRhdGEgfHwgKGRhdGEgJiYgIWRhdGEub25seUV4dGVybmFsVHJpZ2dlciAmJiAhZGF0YS5vbmx5Q2xpY2tUcmlnZ2VyICYmICFkYXRhLm9ubHlFVHJpZ2dlcikpIHtcbiAgICBvbkFjdGl2YXRlQ2JzLnNldChucGMsIChvdGhlcjogRW50aXR5KSA9PiB7XG4gICAgICBpZiAoaXNDb29sZG93bi5oYXMobnBjKSkge1xuICAgICAgICBjb25zb2xlLmxvZyhucGMsICcgaW4gY29vbGRvd24nKVxuICAgICAgICByZXR1cm5cbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIChucGNEaWFsb2dDb21wb25lbnQuaGFzKG5wYykgJiYgbnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpLnZpc2libGUpIHx8XG4gICAgICAgIChkYXRhICYmIGRhdGEub25seUV4dGVybmFsVHJpZ2dlcikgfHxcbiAgICAgICAgKGRhdGEgJiYgZGF0YS5vbmx5Q2xpY2tUcmlnZ2VyKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgZGF0YS5vbkFjdGl2YXRlKG90aGVyKVxuICAgIH0pXG4gICAgdHJpZ2dlckRhdGEub25DYW1lcmFFbnRlciA9IG9uQWN0aXZhdGVDYnMuZ2V0KG5wYylcbiAgfVxuXG4gIC8vIHdoZW4gZXhpdGluZyB0cmlnZ2VyXG4gIGlmICghZGF0YSB8fCAoZGF0YSAmJiAhZGF0YS5jb250aW51ZU9uV2Fsa0F3YXkpKSB7XG4gICAgdHJpZ2dlckRhdGEub25DYW1lcmFFeGl0ID0gKG90aGVyKSA9PiB7XG4gICAgICBoYW5kbGVXYWxrQXdheShucGMsIG90aGVyKVxuICAgIH1cbiAgfVxuXG4gIC8vIHdoZW4gZW50ZXJpbmcgdHJpZ2dlclxuICBpZiAoIWRhdGEgfHwgKGRhdGEgJiYgIWRhdGEub25seUV4dGVybmFsVHJpZ2dlciAmJiAhZGF0YS5vbmx5Q2xpY2tUcmlnZ2VyICYmICFkYXRhLm9ubHlFVHJpZ2dlcikpIHtcbiAgICB0cmlnZ2VyRGF0YS5vbkNhbWVyYUVudGVyID0gKG90aGVyKSA9PiB7XG4gICAgICBpZiAoaXNDb29sZG93bi5oYXMobnBjKSkge1xuICAgICAgICBjb25zb2xlLmxvZyhucGMsICcgaW4gY29vbGRvd24nKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIC8vIGVsc2UgaWYgKFxuICAgICAgLy8gICAgICh0aGlzLmRpYWxvZyAmJiB0aGlzLmRpYWxvZy5pc0RpYWxvZ09wZW4pIHx8XG4gICAgICAvLyAgICAgKGRhdGEgJiYgZGF0YS5vbmx5RXh0ZXJuYWxUcmlnZ2VyKSB8fFxuICAgICAgLy8gICAgIChkYXRhICYmIGRhdGEub25seUNsaWNrVHJpZ2dlcilcbiAgICAgIC8vICkge1xuICAgICAgLy8gICAgIHJldHVyblxuICAgICAgLy8gfVxuICAgICAgYWN0aXZhdGUobnBjLCBvdGhlcilcbiAgICB9XG4gIH1cblxuICAvLyBhZGQgdHJpZ2dlclxuXG4gIGlmICh0cmlnZ2VyRGF0YS5vbkNhbWVyYUVudGVyIHx8IHRyaWdnZXJEYXRhLm9uQ2FtZXJhRXhpdCkge1xuXG5cbiAgICBsZXQgc3BoZXJlU2NhbGUgPSB7XG4gICAgICB4OiBkYXRhLnJlYWN0RGlzdGFuY2UgIT0gdW5kZWZpbmVkID8gZGF0YS5yZWFjdERpc3RhbmNlIDogNixcbiAgICAgIHk6IGRhdGEucmVhY3REaXN0YW5jZSAhPSB1bmRlZmluZWQgPyBkYXRhLnJlYWN0RGlzdGFuY2UgOiA2LFxuICAgICAgejogZGF0YS5yZWFjdERpc3RhbmNlICE9IHVuZGVmaW5lZCA/IGRhdGEucmVhY3REaXN0YW5jZSA6IDZcbiAgICB9XG5cbiAgIGxldCB0cmlnZ2VyU3BoZXJlID0gZW5naW5lLmFkZEVudGl0eSgpXG5cbiAgIFRyYW5zZm9ybS5jcmVhdGUodHJpZ2dlclNwaGVyZSwge1xuICAgIHBvc2l0aW9uOiBWZWN0b3IzLlplcm8oKSxcbiAgICByb3RhdGlvbjogUXVhdGVybmlvbi5aZXJvKCksXG4gICAgc2NhbGU6IHNwaGVyZVNjYWxlLFxuICAgIHBhcmVudDogbnBjXG4gICB9KVxuXG4gICBUcmlnZ2VyQXJlYS5zZXRTcGhlcmUodHJpZ2dlclNwaGVyZSlcblxuICAgIHRyaWdnZXJBcmVhRXZlbnRzU3lzdGVtLm9uVHJpZ2dlckVudGVyKHRyaWdnZXJTcGhlcmUsIGZ1bmN0aW9uKHJlc3VsdCkge1xuICAgICAgaWYgKHRyaWdnZXJEYXRhLm9uQ2FtZXJhRW50ZXIpIHtcbiAgICAgICAgY29uc3QgZW50aXR5ID0gKHJlc3VsdD8udHJpZ2dlcj8uZW50aXR5ID8/IGVuZ2luZS5QbGF5ZXJFbnRpdHkpIGFzIEVudGl0eVxuICAgICAgICB0cmlnZ2VyRGF0YS5vbkNhbWVyYUVudGVyKGVudGl0eSlcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgdHJpZ2dlckFyZWFFdmVudHNTeXN0ZW0ub25UcmlnZ2VyRXhpdCh0cmlnZ2VyU3BoZXJlLCBmdW5jdGlvbihyZXN1bHQpIHtcbiAgICAgIGlmICh0cmlnZ2VyRGF0YS5vbkNhbWVyYUV4aXQpIHtcbiAgICAgICAgY29uc3QgZW50aXR5ID0gKHJlc3VsdD8udHJpZ2dlcj8uZW50aXR5ID8/IGVuZ2luZS5QbGF5ZXJFbnRpdHkpIGFzIEVudGl0eVxuICAgICAgICB0cmlnZ2VyRGF0YS5vbkNhbWVyYUV4aXQoZW50aXR5KVxuICAgICAgfVxuICAgIH0pXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvbGxvd1BhdGgobnBjOiBFbnRpdHksIGRhdGE/OiBGb2xsb3dQYXRoRGF0YSkge1xuICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgbGV0IHBhdGg6IGFueVtdID0gW11cblxuICBpZiAobnBjRGF0YS5mYWNlVXNlcikge1xuICAgIGlmIChUcmFja1VzZXJGbGFnLmhhcyhucGMpKSB7XG4gICAgICBUcmFja1VzZXJGbGFnLmRlbGV0ZUZyb20obnBjKVxuICAgIH1cbiAgfVxuXG4gIGlmIChucGNEYXRhLm1hbnVhbFN0b3ApIHtcbiAgICBsZXQgZHVyYXRpb24gPSBucGNEYXRhLnBhdGhEYXRhLnRvdGFsRHVyYXRpb25cbiAgICBsZXQgY3VycmVudFRpbWVyOiBudW1iZXIgPSB3YWxraW5nVGltZXJzLmdldChucGMpIVxuICAgIGNvbnNvbGUubG9nKCdjdXJyZW50IHRpbWUgaXMnLCBjdXJyZW50VGltZXIpXG4gICAgaWYgKGN1cnJlbnRUaW1lcikge1xuICAgICAgZHVyYXRpb24gLT0gY3VycmVudFRpbWVyXG4gICAgfVxuXG4gICAgbGV0IHBhdGg6IGFueVtdID0gW11cbiAgICBucGNEYXRhLnBhdGhEYXRhLnBhdGguZm9yRWFjaCgocDogYW55KSA9PiB7XG4gICAgICBwYXRoLnB1c2gocClcbiAgICB9KVxuICAgIHBhdGguc3BsaWNlKDAsIG5wY0RhdGEucGF0aEluZGV4KVxuXG4gICAgbGV0IHBvcyA9IFRyYW5zZm9ybS5nZXQobnBjKS5wb3NpdGlvblxuICAgIHBhdGgudW5zaGlmdChWZWN0b3IzLmNyZWF0ZShwb3MueCwgcG9zLnksIHBvcy56KSlcbiAgICB3YWxrTlBDKFxuICAgICAgbnBjLFxuICAgICAgbnBjRGF0YSxcbiAgICAgIG5wY0RhdGEucGF0aERhdGEucGF0aFR5cGUsXG4gICAgICBkdXJhdGlvbixcbiAgICAgIHBhdGgsXG4gICAgICBwb2ludFJlYWNoZWRDYWxsYmFja3MuZ2V0KG5wYyksXG4gICAgICBvbkZpbmlzaENhbGxiYWNrcy5nZXQobnBjKVxuICAgIClcbiAgfSBlbHNlIHtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgbnBjRGF0YS5wYXRoRGF0YSA9IGRhdGFcblxuICAgICAgaWYgKGRhdGEuc3RhcnRpbmdQb2ludCkge1xuICAgICAgICBkYXRhLnBhdGg/LnNwbGljZSgwLCBkYXRhLnN0YXJ0aW5nUG9pbnQgLSAxKVxuICAgICAgfVxuXG4gICAgICBsZXQgcG9zID0gVHJhbnNmb3JtLmdldChucGMpLnBvc2l0aW9uXG4gICAgICBwYXRoLnB1c2goVmVjdG9yMy5jcmVhdGUocG9zLngsIHBvcy55LCBwb3MueikpXG4gICAgICBkYXRhLnBhdGg/LmZvckVhY2goKHApID0+IHtcbiAgICAgICAgcGF0aC5wdXNoKHApXG4gICAgICB9KVxuXG4gICAgICBvbkZpbmlzaENhbGxiYWNrcy5zZXQobnBjLCAoKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdvbiBmaW5pc2hlZCBjYWxsYmFjaycpXG4gICAgICAgIGlmIChkYXRhICYmIGRhdGEub25GaW5pc2hDYWxsYmFjayAmJiAhZGF0YS5sb29wKSB7XG4gICAgICAgICAgZGF0YS5vbkZpbmlzaENhbGxiYWNrKClcbiAgICAgICAgfVxuICAgICAgICBzdG9wUGF0aChucGMpXG4gICAgICB9KVxuXG4gICAgICBwb2ludFJlYWNoZWRDYWxsYmFja3Muc2V0KG5wYywgKCkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnb24gcG9pbnQgcmVhY2hlZCBjYWxsYmFjaycpXG4gICAgICAgIGxldCBkYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgICAgICBkYXRhLnBhdGhJbmRleCArPSAxXG4gICAgICAgIGRhdGEub25SZWFjaGVkUG9pbnRDYWxsYmFjayA/IGRhdGEub25SZWFjaGVkUG9pbnRDYWxsYmFjayA6IHVuZGVmaW5lZFxuICAgICAgfSlcbiAgICAgIHdhbGtOUEMoXG4gICAgICAgIG5wYyxcbiAgICAgICAgbnBjRGF0YSxcbiAgICAgICAgZGF0YS5wYXRoVHlwZSEsXG4gICAgICAgIGRhdGEudG90YWxEdXJhdGlvbixcbiAgICAgICAgcGF0aCxcbiAgICAgICAgcG9pbnRSZWFjaGVkQ2FsbGJhY2tzLmdldChucGMpLFxuICAgICAgICBvbkZpbmlzaENhbGxiYWNrcy5nZXQobnBjKVxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobnBjRGF0YS5tYW51YWxTdG9wKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCd3ZSBoYXZlIG1hbnVhbCBzdG9wLCBuZWVkIHRvIHBpY2sgYmFjayB1cCB3aGVyZSB3ZSBsZWZ0IG9mZicpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmxvZygnd2UgYXJlIHRyeWluZyB0byBmb2xsb3cgYSBwYXRoIHdpdG91dCBzdGFydGluZyBvbmUgcHJpb3InKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB3YWxrTlBDKFxuICBucGM6IEVudGl0eSxcbiAgbnBjRGF0YTogYW55LFxuICB0eXBlOiBOUENQYXRoVHlwZSxcbiAgZHVyYXRpb246IG51bWJlcixcbiAgcGF0aDogVmVjdG9yM1tdLFxuICBwb2ludFJlYWNoZWRDYWxsYmFjaz86IGFueSxcbiAgZmluaXNoZWRDYWxsYmFjaz86IGFueVxuKSB7XG4gIGlmIChJc0ZvbGxvd2luZ1BhdGguaGFzKG5wYykpIHtcbiAgICBJc0ZvbGxvd2luZ1BhdGguZGVsZXRlRnJvbShucGMpXG4gICAgd2Fsa2luZ1RpbWVycy5kZWxldGUobnBjKVxuICB9XG4gIElzRm9sbG93aW5nUGF0aC5jcmVhdGUobnBjKVxuXG4gIGlmICh0eXBlKSB7XG4gICAgaWYgKHR5cGUgPT0gTlBDUGF0aFR5cGUuUklHSURfUEFUSCkge1xuICAgICAgcGF0aHMuc3RhcnRTdHJhaWdodFBhdGgoXG4gICAgICAgIG5wYyxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgZHVyYXRpb24sXG4gICAgICAgIHRydWUsXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICBmaW5pc2hlZENhbGxiYWNrKClcbiAgICAgICAgfSxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHBvaW50UmVhY2hlZENhbGxiYWNrKClcbiAgICAgICAgfVxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBwYXRocy5zdGFydFNtb290aFBhdGgoXG4gICAgICAgIG5wYyxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgZHVyYXRpb24sXG4gICAgICAgIDMwLFxuICAgICAgICB0cnVlLFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgZmluaXNoZWRDYWxsYmFjaygpXG4gICAgICAgIH0sXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICBwb2ludFJlYWNoZWRDYWxsYmFjaygpXG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcGF0aHMuc3RhcnRTbW9vdGhQYXRoKFxuICAgICAgbnBjLFxuICAgICAgcGF0aCxcbiAgICAgIGR1cmF0aW9uLFxuICAgICAgMjAsXG4gICAgICB0cnVlLFxuICAgICAgKCkgPT4ge1xuICAgICAgICBmaW5pc2hlZENhbGxiYWNrKClcbiAgICAgIH0sXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHBvaW50UmVhY2hlZENhbGxiYWNrKClcbiAgICAgIH1cbiAgICApXG4gIH1cblxuICBpZiAobnBjRGF0YS53YWxraW5nQW5pbSkge1xuICAgIGNsZWFyQW5pbWF0aW9uVGltZXIobnBjKVxuICAgIEFuaW1hdG9yLnBsYXlTaW5nbGVBbmltYXRpb24obnBjLCBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLndhbGtpbmdBbmltLCB0cnVlKVxuICAgIG5wY0RhdGEubGFzdFBsYXllZEFuaW0gPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLndhbGtpbmdBbmltXG4gIH1cbiAgbnBjRGF0YS5zdGF0ZSA9IE5QQ1N0YXRlLkZPTExPV1BBVEhcbiAgbnBjRGF0YS5tYW51YWxTdG9wID0gZmFsc2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0b3BXYWxraW5nKG5wYzogRW50aXR5LCBkdXJhdGlvbj86IG51bWJlciwgZmluaXNoZWQ/OiBib29sZWFuKSB7XG4gIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICBucGNEYXRhLnN0YXRlID0gTlBDU3RhdGUuU1RBTkRJTkdcbiAgbnBjRGF0YS5tYW51YWxTdG9wID0gdHJ1ZVxuXG4gIHN0b3BQYXRoKG5wYylcblxuICBpZiAoZHVyYXRpb24pIHtcbiAgICBkZWxheWVkRnVuY3Rpb24oKCkgPT4ge1xuICAgICAgaWYgKG5wY0RhdGEucGF0aCkge1xuICAgICAgICBBbmltYXRvci5zdG9wQWxsQW5pbWF0aW9ucyhucGMsIHRydWUpXG4gICAgICAgIGlmIChucGNEYXRhQ29tcG9uZW50LmdldChucGMpLndhbGtpbmdBbmltKSB7XG4gICAgICAgICAgY2xlYXJBbmltYXRpb25UaW1lcihucGMpXG4gICAgICAgICAgQW5pbWF0b3IucGxheVNpbmdsZUFuaW1hdGlvbihucGMsIG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykud2Fsa2luZ0FuaW0sIHRydWUpXG4gICAgICAgICAgbnBjRGF0YS5sYXN0UGxheWVkQW5pbSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykud2Fsa2luZ0FuaW1cbiAgICAgICAgfVxuICAgICAgICBsZXQgZHVyYXRpb24gPSBucGNEYXRhLnBhdGhEYXRhLnRvdGFsRHVyYXRpb25cbiAgICAgICAgbGV0IGN1cnJlbnRUaW1lcjogbnVtYmVyID0gd2Fsa2luZ1RpbWVycy5nZXQobnBjKSFcbiAgICAgICAgY29uc29sZS5sb2coJ2N1cnJlbnQgdGltZSBpcycsIGN1cnJlbnRUaW1lcilcbiAgICAgICAgaWYgKGN1cnJlbnRUaW1lcikge1xuICAgICAgICAgIGR1cmF0aW9uIC09IGN1cnJlbnRUaW1lclxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHBhdGg6IGFueVtdID0gW11cbiAgICAgICAgbnBjRGF0YS5wYXRoRGF0YS5wYXRoLmZvckVhY2goKHA6IGFueSkgPT4ge1xuICAgICAgICAgIHBhdGgucHVzaChwKVxuICAgICAgICB9KVxuICAgICAgICBwYXRoLnNwbGljZSgwLCBucGNEYXRhLnBhdGhJbmRleClcblxuICAgICAgICBsZXQgcG9zID0gVHJhbnNmb3JtLmdldChucGMpLnBvc2l0aW9uXG4gICAgICAgIHBhdGgudW5zaGlmdChWZWN0b3IzLmNyZWF0ZShwb3MueCwgcG9zLnksIHBvcy56KSlcblxuICAgICAgICAvL25wY0RhdGEubWFudWFsU3RvcCA9IGZhbHNlXG4gICAgICAgIHdhbGtOUEMoXG4gICAgICAgICAgbnBjLFxuICAgICAgICAgIG5wY0RhdGEsXG4gICAgICAgICAgbnBjRGF0YS5wYXRoRGF0YS5wYXRoVHlwZSxcbiAgICAgICAgICBkdXJhdGlvbixcbiAgICAgICAgICBwYXRoLFxuICAgICAgICAgIHBvaW50UmVhY2hlZENhbGxiYWNrcy5nZXQobnBjKSxcbiAgICAgICAgICBvbkZpbmlzaENhbGxiYWNrcy5nZXQobnBjKVxuICAgICAgICApXG4gICAgICB9XG5cbiAgICB9LCBkdXJhdGlvbiAqIDEwMDApXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0b3BQYXRoKG5wYzogRW50aXR5KSB7XG4gIHBhdGhzLnN0b3BQYXRoKG5wYylcbiAgSXNGb2xsb3dpbmdQYXRoLmRlbGV0ZUZyb20obnBjKVxuXG4gIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICBpZiAobnBjRGF0YS53YWxraW5nQW5pbSkge1xuICAgIGNsZWFyQW5pbWF0aW9uVGltZXIobnBjKVxuICAgIEFuaW1hdG9yLnBsYXlTaW5nbGVBbmltYXRpb24obnBjLCBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLmlkbGVBbmltKVxuICAgIG5wY0RhdGEubGFzdFBsYXllZEFuaW0gPSBucGNEYXRhLmlkbGVBbmltXG4gIH1cblxuICBpZiAoIW5wY0RhdGEubWFudWFsU3RvcCkge1xuICAgIGlmIChucGNEYXRhLnBhdGhEYXRhLmxvb3ApIHtcbiAgICAgIG5wY0RhdGEucGF0aEluZGV4ID0gMFxuICAgICAgd2Fsa2luZ1RpbWVycy5kZWxldGUobnBjKVxuICAgICAgY29uc29sZS5sb2coJ3dlIGFyZSBsb29waW5nIHBhdGgnLCBucGNEYXRhKVxuICAgICAgZm9sbG93UGF0aChucGMsIG5wY0RhdGEucGF0aERhdGEpXG4gICAgICBjb25zb2xlLmxvZyhucGNEYXRhKVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJOUEMoKSB7XG4gIGFjdGl2ZU5QQyA9IE5VTExfTlBDXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRBY3RpdmVOUEMobnBjOiBFbnRpdHkpIHtcbiAgYWN0aXZlTlBDID0gbnBjXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0FjdGl2ZU5wY1NldCgpIHtcbiAgcmV0dXJuIGFjdGl2ZU5QQyAmJiBucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQylcbn1cblxuLyoqXG4gKiBDYWxscyB0aGUgTlBDJ3MgYWN0aXZhdGlvbiBmdW5jdGlvbiAoc2V0IG9uIE5QQyBkZWZpbml0aW9uKS4gSWYgTlBDIGhhcyBgZmFjZVVzZXJgID0gdHJ1ZSwgaXQgd2lsbCByb3RhdGUgdG8gZmFjZSB0aGUgcGxheWVyLiBJdCBzdGFydHMgYSBjb29sZG93biBjb3VudGVyIHRvIGF2b2lkIHJlYWN0aXZhdGluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFjdGl2YXRlKG5wYzogRW50aXR5LCBvdGhlcjogRW50aXR5KSB7XG4gIGlmIChhY3RpdmVOUEMgIT0gMCkge1xuICAgIGNvbnNvbGUubG9nKCd3ZSBoYXZlIGEgY3VycmVudCBucGMsIG5lZWR0byByZW1vdmUnKVxuICAgIGVuZEludGVyYWN0aW9uKGFjdGl2ZU5QQylcbiAgICAvLyBjbG9zZURpYWxvZyhhY3RpdmVOUEMpXG4gIH1cblxuICBhY3RpdmVOUEMgPSBucGNcbiAgb25BY3RpdmF0ZUNicy5nZXQobnBjKShvdGhlcilcblxuICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgaWYgKG5wY0RhdGEuZmFjZVVzZXIpIHtcbiAgICBpZiAoVHJhY2tVc2VyRmxhZy5oYXMobnBjKSkge1xuICAgICAgVHJhY2tVc2VyRmxhZy5kZWxldGVGcm9tKG5wYylcbiAgICB9XG5cbiAgICBUcmFja1VzZXJGbGFnLmNyZWF0ZShucGMsIHtcbiAgICAgIGxvY2tYWlJvdGF0aW9uOiB0cnVlLFxuICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgcm90U3BlZWQ6IG5wY0RhdGEudHVyblNwZWVkXG4gICAgfSlcbiAgfVxuICBpc0Nvb2xkb3duLnNldChucGMsIHRydWUpXG4gIG5wY0RhdGEuaW5Db29sZG93biA9IHRydWVcblxuICBkZWxheWVkRnVuY3Rpb24oKCkgPT4gXG4gICAge1xuICAgICAgaXNDb29sZG93bi5kZWxldGUobnBjKVxuICAgICAgbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS5pbkNvb2xkb3duID0gZmFsc2VcbiAgICAgIGNvbnNvbGUubG9nKFwiY29vbGRvd24gZGVsZXRlZFwiKVxuICAgIH0sIDEwMDAgKiBucGNEYXRhLmNvb2xEb3duRHVyYXRpb25cbiAgKVxuXG4gIGNvbnNvbGUubG9nKCdhY3RpdmF0ZWQgbnBjLCcsIG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYyksIFwiY29vbGRvd24gZHVyYXRpb246IFwiLCBucGNEYXRhLmNvb2xEb3duRHVyYXRpb24pXG59XG5cbmZ1bmN0aW9uIGVuZEludGVyYWN0aW9uKG5wYzogRW50aXR5KSB7XG4gIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICBucGNEYXRhLnN0YXRlID0gTlBDU3RhdGUuU1RBTkRJTkdcblxuICBpZiAobnBjRGlhbG9nQ29tcG9uZW50LmhhcyhucGMpKSB7XG4gICAgLy99ICYmIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQobnBjKS52aXNpYmxlKSB7XG4gICAgY2xvc2VEaWFsb2cobnBjKVxuICB9XG5cbiAgaWYgKG5wY0RhdGEuZmFjZVVzZXIpIHtcbiAgICBpZiAoVHJhY2tVc2VyRmxhZy5oYXMobnBjKSkge1xuICAgICAgVHJhY2tVc2VyRmxhZy5kZWxldGVGcm9tKG5wYylcbiAgICB9XG4gIH1cblxuICBjb25zb2xlLmxvZygnZW5kaW5nIGludGVyYWN0aW9uJywgbnBjRGF0YSwgYnViYmxlcy5nZXQobnBjKSlcbiAgaWYgKG5wY0RhdGEuaGFzQnViYmxlICYmIGJ1YmJsZXMuZ2V0KG5wYykuaXNCdWJibGVPcGVuKSB7XG4gICAgY2xvc2VCdWJibGUobnBjKVxuICB9XG59XG5cbi8qKlxuICogRW5kcyBpbnRlcmFjdGlvbiBhbmQgY2FsbHMgdGhlIG9uV2Fsa0F3YXkgZnVuY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZVdhbGtBd2F5KG5wYzogRW50aXR5LCBvdGhlcjogRW50aXR5KSB7XG4gIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICBpZiAobnBjRGF0YS5zdGF0ZSA9PSBOUENTdGF0ZS5GT0xMT1dQQVRIKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBlbmRJbnRlcmFjdGlvbihucGMpXG5cbiAgaWYgKG9uV2Fsa0F3YXlDYnMuZ2V0KG5wYykpIHtcbiAgICBvbldhbGtBd2F5Q2JzLmdldChucGMpKG90aGVyKVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwbGF5QW5pbWF0aW9uKG5wYzogRW50aXR5LCBhbmltOiBzdHJpbmcsIG5vTG9vcD86IGJvb2xlYW4sIGR1cmF0aW9uPzogbnVtYmVyKSB7XG4gIGxldCBhbmltYXRpb25zID0gQW5pbWF0b3IuZ2V0TXV0YWJsZShucGMpXG4gIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuXG4gIGlmICghYW5pbWF0aW9ucyB8fCAhbnBjRGF0YSkgcmV0dXJuXG5cbiAgaWYgKGFuaW1hdGlvbnMuc3RhdGVzICYmIGFuaW1hdGlvbnMuc3RhdGVzLmZpbHRlcigoYW5pbWF0aW9uOiBQQkFuaW1hdGlvblN0YXRlKSA9PiBhbmltYXRpb24uY2xpcCA9PT0gYW5pbSkubGVuZ3RoID09IDApIHtcbiAgICBhbmltYXRpb25zLnN0YXRlcy5wdXNoKHsgY2xpcDogYW5pbSwgbG9vcDogbm9Mb29wID8gZmFsc2UgOiB0cnVlIH0pXG4gIH1cblxuICBpZiAobnBjRGF0YS5zdGF0ZSA9PSBOUENTdGF0ZS5GT0xMT1dQQVRIKSB7XG4gICAgcGF0aHMuc3RvcFBhdGgobnBjKVxuICB9XG5cbiAgY2xlYXJBbmltYXRpb25UaW1lcihucGMpXG5cbiAgQW5pbWF0b3Iuc3RvcEFsbEFuaW1hdGlvbnMobnBjLCB0cnVlKVxuICBBbmltYXRvci5wbGF5U2luZ2xlQW5pbWF0aW9uKG5wYywgYW5pbSwgdHJ1ZSlcbiAgaWYgKGR1cmF0aW9uKSB7XG4gICAgY29uc29sZS5sb2coJ2hhdmUgYSBkdXJhdGlvbiB0byBwbGF5IGFuaW1hdGlvbicpXG4gICAgY2xlYXJBbmltYXRpb25UaW1lcihucGMpXG4gICAgYW5pbVRpbWVycy5zZXQoXG4gICAgICBucGMsXG4gICAgICBkZWxheWVkRnVuY3Rpb24oKCkgPT4ge1xuICAgICAgICBjbGVhckFuaW1hdGlvblRpbWVyKG5wYylcbiAgICAgICAgQW5pbWF0b3Iuc3RvcEFsbEFuaW1hdGlvbnMobnBjLCB0cnVlKVxuICAgICAgICBpZiAobnBjRGF0YS5pZGxlQW5pbSkge1xuICAgICAgICAgIEFuaW1hdG9yLnBsYXlTaW5nbGVBbmltYXRpb24obnBjLCBucGNEYXRhLmlkbGVBbmltKVxuICAgICAgICAgIG5wY0RhdGEubGFzdFBsYXllZEFuaW0gPSBucGNEYXRhLmlkbGVBbmltXG4gICAgICAgIH1cbiAgICAgIH0sIDEwMDAgKiBkdXJhdGlvbilcbiAgICApXG4gIH1cbiAgXG5cbiAgbnBjRGF0YS5sYXN0UGxheWVkQW5pbSA9IGFuaW1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoYW5nZUlkbGVBbmltKG5wYzogRW50aXR5LCBhbmltYXRpb246IHN0cmluZywgcGxheT86IGJvb2xlYW4pIHtcbiAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gIG5wY0RhdGEuaWRsZUFuaW0gPSBhbmltYXRpb25cblxuICBsZXQgYW5pbWF0aW9ucyA9IEFuaW1hdG9yLmdldE11dGFibGUobnBjKVxuICBpZiAoYW5pbWF0aW9ucy5zdGF0ZXMuZmlsdGVyKChhbmltKSA9PiBhbmltLmNsaXAgPT09IGFuaW1hdGlvbikubGVuZ3RoID09IDApIHtcbiAgICBhbmltYXRpb25zLnN0YXRlcy5wdXNoKHsgY2xpcDogYW5pbWF0aW9uLCBsb29wOiB0cnVlIH0pXG4gIH1cblxuICBpZiAocGxheSkge1xuICAgIHBsYXlBbmltYXRpb24obnBjLCBhbmltYXRpb24sIHRydWUpXG4gICAgbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS5sYXN0UGxheWVkQW5pbSA9IGFuaW1hdGlvblxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWxrQnViYmxlKG5wYzogRW50aXR5LCBzY3JpcHQ6IERpYWxvZ1tdLCBzdGFydEluZGV4PzogbnVtYmVyIHwgc3RyaW5nKSB7XG4gIG9wZW5CdWJibGUobnBjLCBzY3JpcHQsIHN0YXJ0SW5kZXgpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEaWFsb2dXaW5kb3coZGVmYXVsdFBvcnRyYWl0PzogSW1hZ2VEYXRhLCBzb3VuZD86IHN0cmluZykge1xuICBsZXQgZGlhbG9nID0gZW5naW5lLmFkZEVudGl0eSgpXG4gIGFkZERpYWxvZyhkaWFsb2csIHNvdW5kLCBkZWZhdWx0UG9ydHJhaXQpXG4gIHJldHVybiBkaWFsb2dcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9wZW5EaWFsb2dXaW5kb3cobnBjOiBFbnRpdHksIGRpYWxvZzogRGlhbG9nW10sIHN0YXJ0SW5kZXg/OiBudW1iZXIgfCBzdHJpbmcpIHtcbiAgYWN0aXZlTlBDID0gbnBjXG5cbiAgaWYgKG5wY0RpYWxvZ0NvbXBvbmVudC5oYXMobnBjKSkge1xuICAgIGxldCBpbmRleDogYW55XG4gICAgaWYgKCFzdGFydEluZGV4KSB7XG4gICAgICBpbmRleCA9IDBcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBzdGFydEluZGV4ID09PSAnbnVtYmVyJykge1xuICAgICAgaW5kZXggPSBzdGFydEluZGV4XG4gICAgfSBlbHNlIHtcbiAgICAgIGluZGV4ID0gZmluZERpYWxvZ0J5TmFtZShkaWFsb2csIHN0YXJ0SW5kZXgpXG4gICAgfVxuICAgIG9wZW5EaWFsb2cobnBjLCBkaWFsb2csIGluZGV4KVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbG9zZURpYWxvZ1dpbmRvdyh3aW5kb3c6IEVudGl0eSkge1xuICBsZXQgZGlhbG9nID0gbnBjRGlhbG9nQ29tcG9uZW50LmdldCh3aW5kb3cpXG4gIGlmICh3aW5kb3cpIHtcbiAgICBjbG9zZURpYWxvZyhkaWFsb2cpXG4gIH1cbn1cblxuZnVuY3Rpb24gY2xlYXJBbmltYXRpb25UaW1lcihucGM6IEVudGl0eSk6IGJvb2xlYW4ge1xuICBpZiAoYW5pbVRpbWVycy5oYXMobnBjKSkge1xuICAgIGNsZWFyRGVsYXllZEZ1bmN0aW9uKGFuaW1UaW1lcnMuZ2V0KG5wYykpXG4gICAgYW5pbVRpbWVycy5kZWxldGUobnBjKVxuICAgIHJldHVybiB0cnVlXG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG4iXX0=
645
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL25wYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsUUFBUSxFQUNSLFdBQVcsRUFDWCxNQUFNLEVBRU4sYUFBYSxFQUViLFlBQVksRUFDWixZQUFZLEVBR1osbUJBQW1CLEVBQ25CLFNBQVMsRUFHVCxXQUFXLEVBQ1gsdUJBQXVCLEVBQ3hCLE1BQU0sY0FBYyxDQUFBO0FBQ3JCLE9BQU8sRUFBVSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDbkcsT0FBTyxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDeEgsT0FBTyxFQUE4QyxXQUFXLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBZSxNQUFNLFNBQVMsQ0FBQTtBQUNqSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUM1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBaUIsTUFBTSxlQUFlLENBQUE7QUFDbkcsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUtwQyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQXdCLElBQUksR0FBRyxFQUFFLENBQUE7QUFDM0QsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQXFCLElBQUksR0FBRyxFQUFFLENB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RUFBRSxRQUFRLENBQUMsUUFBUTtRQUN4QixRQUFRLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU07UUFDeEQsWUFBWSxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVM7UUFDMUYsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVM7UUFDNUQsU0FBUyxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUs7UUFDakQsU0FBUyxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVELEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVU7UUFDM0MsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUQsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUQsTUFBTSxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHO0tBQ2hELENBQUMsQ0FBQTtJQUVGLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDO1NBQU0sSUFBSSxJQUFJLElBQUksSUFBSSxDQUFD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QUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUN0QixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQTtBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBbmltYXRvcixcbiAgQXZhdGFyU2hhcGUsXG4gIGVuZ2luZSxcbiAgRW50aXR5LFxuICBHbHRmQ29udGFpbmVyLFxuICBJbnB1dEFjdGlvbixcbiAgTWVzaENvbGxpZGVyLFxuICBNZXNoUmVuZGVyZXIsXG4gIFBCQXZhdGFyU2hhcGUsXG4gIFBCR2x0ZkNvbnRhaW5lcixcbiAgcG9pbnRlckV2ZW50c1N5c3RlbSxcbiAgVHJhbnNmb3JtLFxuICBUcmFuc2Zvcm1UeXBlLFxuICBQQkFuaW1hdGlvblN0YXRlLFxuICBUcmlnZ2VyQXJlYSwgXG4gIHRyaWdnZXJBcmVhRXZlbnRzU3lzdGVtXG59IGZyb20gJ0BkY2wvc2RrL2VjcydcbmltcG9ydCB7IENvbG9yMywgUXVhdGVybmlvbiwgVmVjdG9yMyB9IGZyb20gJ0BkY2wvc2RrL21hdGgnXG5pbXBvcnQgeyBidWJibGVzLCBjbG9zZUJ1YmJsZSwgY3JlYXRlRGlhbG9nQnViYmxlLCBvcGVuQnViYmxlIH0gZnJvbSAnLi9idWJibGUnXG5pbXBvcnQgeyBJc0ZvbGxvd2luZ1BhdGgsIFRyYWNrVXNlckZsYWcgfSBmcm9tICcuL2NvbXBvbmVudHMnXG5pbXBvcnQgeyBhZGREaWFsb2csIGNsb3NlRGlhbG9nLCBmaW5kRGlhbG9nQnlOYW1lLCBucGNEaWFsb2dDb21wb25lbnQsIG9wZW5EaWFsb2cgfSBmcm9tICcuL2RpYWxvZydcbmltcG9ydCB7IGZhY2VVc2VyU3lzdGVtLCBoYW5kbGVCdWJibGV0eXBpbmcsIGhhbmRsZURpYWxvZ1R5cGluZywgaGFuZGxlUGF0aFRpbWVzLCBpbnB1dExpc3RlbmVyU3lzdGVtIH0gZnJvbSAnLi9zeXN0ZW1zJ1xuaW1wb3J0IHsgRGlhbG9nLCBGb2xsb3dQYXRoRGF0YSwgSW1hZ2VEYXRhLCBOUENEYXRhLCBOUENQYXRoVHlwZSwgTlBDU3RhdGUsIE5QQ1R5cGUsIFRyaWdnZXJEYXRhIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7IGRhcmtUaGVtZSwgbGlnaHRUaGVtZSB9IGZyb20gJy4vdWknXG5pbXBvcnQgeyBkZWJ1Z1RyaWdnZXJzLCBkZWxheWVkRnVuY3Rpb24sIGNsZWFyRGVsYXllZEZ1bmN0aW9uLCBEZWxheWVkSGFuZGxlIH0gZnJvbSAnLi91dGlscy91dGlscydcbmltcG9ydCB7IHBhdGhzIH0gZnJvbSAnLi91dGlscy9wYXRoJ1xuXG5cbnR5cGUgTlBDRGF0YUZyb21FbnRpdHkgPSBPbWl0PE5QQ0RhdGEsICd0eXBlJz4gJiB7IHR5cGU/OiBOUENUeXBlIH1cblxuZXhwb3J0IGNvbnN0IHdhbGtpbmdUaW1lcnM6IE1hcDxFbnRpdHksIG51bWJlcj4gPSBuZXcgTWFwKClcbmV4cG9ydCBjb25zdCBucGNEYXRhQ29tcG9uZW50OiBNYXA8RW50aXR5LCBhbnk+ID0gbmV3IE1hcCgpXG5leHBvcnQgbGV0IE5VTExfTlBDOiBFbnRpdHkgPSAwIGFzIEVudGl0eVxuZXhwb3J0IGxldCBhY3RpdmVOUEM6IEVudGl0eSA9IE5VTExfTlBDXG5leHBvcnQgbGV0IGJsYW5rRGlhbG9nOiBudW1iZXIgPSAwXG5cbmVuZ2luZS5hZGRTeXN0ZW0oaGFuZGxlUGF0aFRpbWVzKVxuZW5naW5lLmFkZFN5c3RlbShoYW5kbGVEaWFsb2dUeXBpbmcpXG5lbmdpbmUuYWRkU3lzdGVtKGhhbmRsZUJ1YmJsZXR5cGluZylcbmVuZ2luZS5hZGRTeXN0ZW0oZmFjZVVzZXJTeXN0ZW0pXG5lbmdpbmUuYWRkU3lzdGVtKGlucHV0TGlzdGVuZXJTeXN0ZW0pXG5cbi8vVE9ETyBNQUtFIGlzQ29vbGRvd24gYW5kIG5vIGxvbmdlciBoYXZlIHRvIHRyYWNrIHdpdGggbWFwIHRvIHJlbW92ZSBtZW1vcnkgbGVhayBpc3N1ZXNcbmNvbnN0IGlzQ29vbGRvd246IE1hcDxFbnRpdHksIGFueT4gPSBuZXcgTWFwKClcbmNvbnN0IG9uQWN0aXZhdGVDYnM6IE1hcDxFbnRpdHksIGFueT4gPSBuZXcgTWFwKClcbmNvbnN0IG9uV2Fsa0F3YXlDYnM6IE1hcDxFbnRpdHksIGFueT4gPSBuZXcgTWFwKClcbmNvbnN0IGFuaW1UaW1lcnM6IE1hcDxFbnRpdHksIERlbGF5ZWRIYW5kbGU+ID0gbmV3IE1hcCgpXG5jb25zdCBwb2ludFJlYWNoZWRDYWxsYmFja3M6IE1hcDxFbnRpdHksIGFueT4gPSBuZXcgTWFwKClcbmNvbnN0IG9uRmluaXNoQ2FsbGJhY2tzOiBNYXA8RW50aXR5LCBhbnk+ID0gbmV3IE1hcCgpXG5cbmV4cG9ydCBmdW5jdGlvbiBzaG93RGVidWcoZGVidWc6IGJvb2xlYW4pIHtcbiAgaWYoZGVidWcpIHtcbiAgICBkZWJ1Z1RyaWdnZXJzKClcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGF0YShucGM6IEVudGl0eSkge1xuICByZXR1cm4gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlKHRyYW5zZm9ybTogYW55LCBkYXRhOiBOUENEYXRhKSB7XG4gIGxldCBucGMgPSBlbmdpbmUuYWRkRW50aXR5KClcblxuICBsZXQgdDogVHJhbnNmb3JtVHlwZSA9IHtcbiAgICBwb3NpdGlvbjogdHJhbnNmb3JtLnBvc2l0aW9uID8gdHJhbnNmb3JtLnBvc2l0aW9uIDogVmVjdG9yMy5jcmVhdGUoMCwgMCwgMCksXG4gICAgcm90YXRpb246IHRyYW5zZm9ybS5yb3RhdGlvbiA/IHRyYW5zZm9ybS5yb3RhdGlvbiA6IFF1YXRlcm5pb24uWmVybygpLFxuICAgIHNjYWxlOiB0cmFuc2Zvcm0uc2NhbGUgPyB0cmFuc2Zvcm0uc2NhbGUgOiBWZWN0b3IzLk9uZSgpXG4gIH1cbiAgVHJhbnNmb3JtLmNyZWF0ZShucGMsIHQpXG5cbiAgbnBjRGF0YUNvbXBvbmVudC5zZXQobnBjLCB7XG4gICAgaW50cm9kdWNlZDogZmFsc2UsXG4gICAgaW5Db29sZG93bjogZmFsc2UsXG4gICAgY29vbERvd25EdXJhdGlvbjogZGF0YSAmJiBkYXRhLmNvb2xEb3duRHVyYXRpb24gPyBkYXRhLmNvb2xEb3duRHVyYXRpb24gOiA1LFxuICAgIGZhY2VVc2VyOiBkYXRhICYmIGRhdGEuZmFjZVVzZXIgPyBkYXRhLmZhY2VVc2VyIDogdW5kZWZpbmVkLFxuICAgIHdhbGtpbmdTcGVlZDogMixcbiAgICB3YWxraW5nQW5pbTogZGF0YSAmJiBkYXRhLndhbGtpbmdBbmltID8gZGF0YS53YWxraW5nQW5pbSA6IHVuZGVmaW5lZCxcbiAgICBwYXRoRGF0YTogZGF0YS5wYXRoRGF0YSA/IGRhdGEucGF0aERhdGEgOiB1bmRlZmluZWQsXG4gICAgY3VycmVudFBhdGhEYXRhOiBbXSxcbiAgICBtYW51YWxTdG9wOiBmYWxzZSxcbiAgICBwYXRoSW5kZXg6IDAsXG4gICAgc3RhdGU6IE5QQ1N0YXRlLlNUQU5ESU5HLFxuICAgIGlkbGVBbmltOiBkYXRhICYmIGRhdGEuaWRsZUFuaW0gPyBkYXRhLmlkbGVBbmltIDogJ0lkbGUnLFxuICAgIGJ1YmJsZUhlaWdodDogZGF0YSAmJiBkYXRhLnRleHRCdWJibGUgJiYgZGF0YS5idWJibGVIZWlnaHQgPyBkYXRhLmJ1YmJsZUhlaWdodCA6IHVuZGVmaW5lZCxcbiAgICBidWJibGVTb3VuZDogZGF0YS5kaWFsb2dTb3VuZCA/IGRhdGEuZGlhbG9nU291bmQgOiB1bmRlZmluZWQsXG4gICAgaGFzQnViYmxlOiBkYXRhICYmIGRhdGEudGV4dEJ1YmJsZSA/IHRydWUgOiBmYWxzZSxcbiAgICB0dXJuU3BlZWQ6IGRhdGEgJiYgZGF0YS50dXJuaW5nU3BlZWQgPyBkYXRhLnR1cm5pbmdTcGVlZCA6IDIsXG4gICAgdGhlbWU6IGRhdGEuZGFya1VJID8gZGFya1RoZW1lIDogbGlnaHRUaGVtZSxcbiAgICBidWJibGVYT2Zmc2V0OiBkYXRhLmJ1YmJsZVhPZmZzZXQgPyBkYXRhLmJ1YmJsZVhPZmZzZXQgOiAwLFxuICAgIGJ1YmJsZVlPZmZzZXQ6IGRhdGEuYnViYmxlWU9mZnNldCA/IGRhdGEuYnViYmxlWU9mZnNldCA6IDAsXG4gICAgdm9sdW1lOiBkYXRhICYmIGRhdGEudm9sdW1lID8gZGF0YS52b2x1bWUgOiAwLjVcbiAgfSlcblxuICBpZiAoZGF0YSAmJiBkYXRhLm5vVUkpIHtcbiAgfSBlbHNlIGlmIChkYXRhICYmIGRhdGEucG9ydHJhaXQpIHtcbiAgICBhZGREaWFsb2coXG4gICAgICBucGMsXG4gICAgICBkYXRhICYmIGRhdGEuZGlhbG9nU291bmQgPyBkYXRhLmRpYWxvZ1NvdW5kIDogdW5kZWZpbmVkLFxuICAgICAgdHlwZW9mIGRhdGEucG9ydHJhaXQgPT09IGBzdHJpbmdgID8geyBwYXRoOiBkYXRhLnBvcnRyYWl0IH0gOiBkYXRhLnBvcnRyYWl0XG4gICAgKVxuICB9IGVsc2Uge1xuICAgIGFkZERpYWxvZyhucGMsIGRhdGEgJiYgZGF0YS5kaWFsb2dTb3VuZCA/IGRhdGEuZGlhbG9nU291bmQgOiB1bmRlZmluZWQpXG4gIH1cblxuICBpZiAoZGF0YSAmJiBkYXRhLnRleHRCdWJibGUpIHtcbiAgICBjcmVhdGVEaWFsb2dCdWJibGUobnBjLCBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLmJ1YmJsZUhlaWdodClcbiAgfVxuXG4gIG9uQWN0aXZhdGVDYnMuc2V0KG5wYywgKG90aGVyOiBFbnRpdHkpID0+IHtcbiAgICBkYXRhLm9uQWN0aXZhdGUob3RoZXIpXG4gIH0pXG5cbiAgaWYgKGRhdGEgJiYgZGF0YS5oYXNPd25Qcm9wZXJ0eSgnb25XYWxrQXdheScpKSB7XG4gICAgb25XYWxrQXdheUNicy5zZXQobnBjLCAob3RoZXI6IEVudGl0eSkgPT4ge1xuICAgICAgaWYgKCFkYXRhIHx8ICFkYXRhLmNvbnRpbnVlT25XYWxrQXdheSkge1xuICAgICAgICBpZiAobnBjRGlhbG9nQ29tcG9uZW50LmhhcyhucGMpKSB7XG4gICAgICAgICAgbnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpLnZpc2libGUgPSBmYWxzZVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAobnBjRGlhbG9nQ29tcG9uZW50LmhhcyhucGMpKSB7XG4gICAgICAgICAgbnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpLnZpc2libGUgPSBmYWxzZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBkYXRhLm9uV2Fsa0F3YXkhKG90aGVyKVxuICAgIH0pXG4gIH1cblxuICBhZGROUENCb25lcyhucGMsIGRhdGEpXG4gIGFkZENsaWNrUmVhY3Rpb25zKG5wYywgZGF0YSlcbiAgYWRkVHJpZ2dlckFyZWEobnBjLCBkYXRhKVxuXG4gIGlmIChkYXRhICYmIGRhdGEucGF0aERhdGEgJiYgZGF0YS5wYXRoRGF0YS5zcGVlZCkge1xuICAgIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgIG5wY0RhdGEud2Fsa2luZ1NwZWVkID0gZGF0YS5wYXRoRGF0YS5zcGVlZFxuICB9XG5cbiAgaWYgKGRhdGEgJiYgZGF0YS5jb29sRG93bkR1cmF0aW9uKSB7XG4gICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgbnBjRGF0YS5jb29sRG93bkR1cmF0aW9uID0gZGF0YS5jb29sRG93bkR1cmF0aW9uXG4gIH1cblxuICBpZiAoZGF0YSAmJiBkYXRhLnBhdGhEYXRhKSB7XG4gICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgbnBjRGF0YS5wYXRoRGF0YS5sb29wID0gdHJ1ZVxuICAgIGZvbGxvd1BhdGgobnBjLCBucGNEYXRhLnBhdGhEYXRhKVxuICB9XG5cbiAgcmV0dXJuIG5wY1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRnJvbUVudGl0eShlbnRpdHk6IEVudGl0eSwgZGF0YTogTlBDRGF0YUZyb21FbnRpdHkpIHtcbiAgY29uc3QgbnBjID0gZW50aXR5XG5cbiAgY29uc3QgcmVzb2x2ZWRUeXBlID0gKGRhdGEgJiYgZGF0YS50eXBlICE9PSB1bmRlZmluZWQgPyBkYXRhLnR5cGUgOiBOUENUeXBlLkNVU1RPTSlcblxuICBpZiAoIVRyYW5zZm9ybS5oYXMobnBjKSkge1xuICAgIGNvbnNvbGUubG9nKCdjcmVhdGVGcm9tRW50aXR5OiBQcm92aWRlZCBlbnRpdHkgaXMgbWlzc2luZyBUcmFuc2Zvcm0gY29tcG9uZW50JylcbiAgfVxuXG4gIGlmIChyZXNvbHZlZFR5cGUgPT09IE5QQ1R5cGUuQ1VTVE9NICYmICFHbHRmQ29udGFpbmVyLmhhcyhucGMpKSB7XG4gICAgY29uc29sZS5sb2coJ2NyZWF0ZUZyb21FbnRpdHk6IEV4cGVjdGVkIGEgR2x0ZkNvbnRhaW5lciBvbiBDVVNUT00gTlBDIGVudGl0eScpXG4gIH1cblxuICBucGNEYXRhQ29tcG9uZW50LnNldChucGMsIHtcbiAgICBpbnRyb2R1Y2VkOiBmYWxzZSxcbiAgICBpbkNvb2xkb3duOiBmYWxzZSxcbiAgICBjb29sRG93bkR1cmF0aW9uOiBkYXRhICYmIGRhdGEuY29vbERvd25EdXJhdGlvbiA/IGRhdGEuY29vbERvd25EdXJhdGlvbiA6IDUsXG4gICAgZmFjZVVzZXI6IGRhdGEgJiYgZGF0YS5mYWNlVXNlciA/IGRhdGEuZmFjZVVzZXIgOiB1bmRlZmluZWQsXG4gICAgd2Fsa2luZ1NwZWVkOiAyLFxuICAgIHdhbGtpbmdBbmltOiBkYXRhICYmIGRhdGEud2Fsa2luZ0FuaW0gPyBkYXRhLndhbGtpbmdBbmltIDogdW5kZWZpbmVkLFxuICAgIHBhdGhEYXRhOiBkYXRhLnBhdGhEYXRhID8gZGF0YS5wYXRoRGF0YSA6IHVuZGVmaW5lZCxcbiAgICBjdXJyZW50UGF0aERhdGE6IFtdLFxuICAgIG1hbnVhbFN0b3A6IGZhbHNlLFxuICAgIHBhdGhJbmRleDogMCxcbiAgICBzdGF0ZTogTlBDU3RhdGUuU1RBTkRJTkcsXG4gICAgaWRsZUFuaW06IGRhdGEgJiYgZGF0YS5pZGxlQW5pbSA/IGRhdGEuaWRsZUFuaW0gOiAnSWRsZScsXG4gICAgYnViYmxlSGVpZ2h0OiBkYXRhICYmIGRhdGEudGV4dEJ1YmJsZSAmJiBkYXRhLmJ1YmJsZUhlaWdodCA/IGRhdGEuYnViYmxlSGVpZ2h0IDogdW5kZWZpbmVkLFxuICAgIGJ1YmJsZVNvdW5kOiBkYXRhLmRpYWxvZ1NvdW5kID8gZGF0YS5kaWFsb2dTb3VuZCA6IHVuZGVmaW5lZCxcbiAgICBoYXNCdWJibGU6IGRhdGEgJiYgZGF0YS50ZXh0QnViYmxlID8gdHJ1ZSA6IGZhbHNlLFxuICAgIHR1cm5TcGVlZDogZGF0YSAmJiBkYXRhLnR1cm5pbmdTcGVlZCA/IGRhdGEudHVybmluZ1NwZWVkIDogMixcbiAgICB0aGVtZTogZGF0YS5kYXJrVUkgPyBkYXJrVGhlbWUgOiBsaWdodFRoZW1lLFxuICAgIGJ1YmJsZVhPZmZzZXQ6IGRhdGEuYnViYmxlWE9mZnNldCA/IGRhdGEuYnViYmxlWE9mZnNldCA6IDAsXG4gICAgYnViYmxlWU9mZnNldDogZGF0YS5idWJibGVZT2Zmc2V0ID8gZGF0YS5idWJibGVZT2Zmc2V0IDogMFxuICB9KVxuXG4gIGlmIChkYXRhICYmIGRhdGEubm9VSSkge1xuICB9IGVsc2UgaWYgKGRhdGEgJiYgZGF0YS5wb3J0cmFpdCkge1xuICAgIGFkZERpYWxvZyhcbiAgICAgIG5wYyxcbiAgICAgIGRhdGEgJiYgZGF0YS5kaWFsb2dTb3VuZCA/IGRhdGEuZGlhbG9nU291bmQgOiB1bmRlZmluZWQsXG4gICAgICB0eXBlb2YgZGF0YS5wb3J0cmFpdCA9PT0gYHN0cmluZ2AgPyB7IHBhdGg6IGRhdGEucG9ydHJhaXQgfSA6IGRhdGEucG9ydHJhaXRcbiAgICApXG4gIH0gZWxzZSB7XG4gICAgYWRkRGlhbG9nKG5wYywgZGF0YSAmJiBkYXRhLmRpYWxvZ1NvdW5kID8gZGF0YS5kaWFsb2dTb3VuZCA6IHVuZGVmaW5lZClcbiAgfVxuXG4gIGlmIChkYXRhICYmIGRhdGEudGV4dEJ1YmJsZSkge1xuICAgIGNyZWF0ZURpYWxvZ0J1YmJsZShucGMsIG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykuYnViYmxlSGVpZ2h0KVxuICB9XG5cbiAgb25BY3RpdmF0ZUNicy5zZXQobnBjLCAob3RoZXI6IEVudGl0eSkgPT4ge1xuICAgIGRhdGEub25BY3RpdmF0ZShvdGhlcilcbiAgfSlcblxuICBpZiAoZGF0YSAmJiBkYXRhLmhhc093blByb3BlcnR5KCdvbldhbGtBd2F5JykpIHtcbiAgICBvbldhbGtBd2F5Q2JzLnNldChucGMsIChvdGhlcjogRW50aXR5KSA9PiB7XG4gICAgICBpZiAoIWRhdGEgfHwgIWRhdGEuY29udGludWVPbldhbGtBd2F5KSB7XG4gICAgICAgIGlmIChucGNEaWFsb2dDb21wb25lbnQuaGFzKG5wYykpIHtcbiAgICAgICAgICBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYykudmlzaWJsZSA9IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChucGNEaWFsb2dDb21wb25lbnQuaGFzKG5wYykpIHtcbiAgICAgICAgICBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYykudmlzaWJsZSA9IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGRhdGEub25XYWxrQXdheSEob3RoZXIpXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGRhdGFXaXRoVHlwZSA9IHsgLi4uZGF0YSwgdHlwZTogcmVzb2x2ZWRUeXBlIH0gYXMgTlBDRGF0YVxuICBzZWVkQW5pbWF0b3JGb3JFeGlzdGluZyhucGMsIGRhdGFXaXRoVHlwZSlcbiAgYWRkQ2xpY2tSZWFjdGlvbnMobnBjLCBkYXRhV2l0aFR5cGUpXG4gIGFkZFRyaWdnZXJBcmVhKG5wYywgZGF0YVdpdGhUeXBlKVxuXG4gIGlmIChkYXRhICYmIGRhdGEucGF0aERhdGEgJiYgZGF0YS5wYXRoRGF0YS5zcGVlZCkge1xuICAgIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgIG5wY0RhdGEud2Fsa2luZ1NwZWVkID0gZGF0YS5wYXRoRGF0YS5zcGVlZFxuICB9XG5cbiAgaWYgKGRhdGEgJiYgZGF0YS5jb29sRG93bkR1cmF0aW9uKSB7XG4gICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgbnBjRGF0YS5jb29sRG93bkR1cmF0aW9uID0gZGF0YS5jb29sRG93bkR1cmF0aW9uXG4gIH1cblxuICBpZiAoZGF0YSAmJiBkYXRhLnBhdGhEYXRhKSB7XG4gICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgbnBjRGF0YS5wYXRoRGF0YS5sb29wID0gdHJ1ZVxuICAgIGZvbGxvd1BhdGgobnBjLCBucGNEYXRhLnBhdGhEYXRhKVxuICB9XG5cbiAgcmV0dXJuIG5wY1xufVxuXG5mdW5jdGlvbiBhZGROUENCb25lcyhucGM6IEVudGl0eSwgZGF0YTogTlBDRGF0YSkge1xuICBjb25zdCBtb2RlbElzU3RyaW5nID0gZGF0YSAmJiBkYXRhLm1vZGVsICYmIHR5cGVvZiBkYXRhLm1vZGVsID09PSBgc3RyaW5nYFxuICBjb25zdCBtb2RlbEF2YXRhckRhdGE6IFBCQXZhdGFyU2hhcGUgfCB1bmRlZmluZWQgPSBtb2RlbElzU3RyaW5nXG4gICAgPyB1bmRlZmluZWRcbiAgICA6IGRhdGEubW9kZWwgJiYgKGRhdGEubW9kZWwgYXMgYW55KS5ib2R5U2hhcGVcbiAgICAgID8gKGRhdGEubW9kZWwgYXMgUEJBdmF0YXJTaGFwZSlcbiAgICAgIDogdW5kZWZpbmVkXG4gIGNvbnN0IG1vZGVsR0xURkRhdGE6IFBCR2x0ZkNvbnRhaW5lciB8IHVuZGVmaW5lZCA9IG1vZGVsSXNTdHJpbmdcbiAgICA/IHVuZGVmaW5lZFxuICAgIDogZGF0YS5tb2RlbCAmJiAoZGF0YS5tb2RlbCBhcyBhbnkpLnNyY1xuICAgICAgPyAoZGF0YS5tb2RlbCBhcyBQQkdsdGZDb250YWluZXIpXG4gICAgICA6IHVuZGVmaW5lZFxuXG4gIHN3aXRjaCAoZGF0YS50eXBlKSB7XG4gICAgY2FzZSBOUENUeXBlLkFWQVRBUjpcbiAgICAgIEF2YXRhclNoYXBlLmNyZWF0ZShcbiAgICAgICAgbnBjLFxuICAgICAgICAhZGF0YSB8fCAhZGF0YS5tb2RlbCB8fCAhbW9kZWxBdmF0YXJEYXRhXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICBpZDogJ25wYycsXG4gICAgICAgICAgICBuYW1lOiAnTlBDJyxcbiAgICAgICAgICAgIGJvZHlTaGFwZTogJ3VybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczpCYXNlTWFsZScsXG4gICAgICAgICAgICBlbW90ZXM6IFtdLFxuICAgICAgICAgICAgd2VhcmFibGVzOiBbXG4gICAgICAgICAgICAgICd1cm46ZGVjZW50cmFsYW5kOm9mZi1jaGFpbjpiYXNlLWF2YXRhcnM6Zl9leWVzXzAwJyxcbiAgICAgICAgICAgICAgJ3VybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczpmX2V5ZWJyb3dzXzAwJyxcbiAgICAgICAgICAgICAgJ3VybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczpmX21vdXRoXzAwJyxcbiAgICAgICAgICAgICAgJ3VybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczpjb21meV9zcG9ydF9zYW5kYWxzJyxcbiAgICAgICAgICAgICAgJ3VybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczpzb2NjZXJfcGFudHMnLFxuICAgICAgICAgICAgICAndXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOmVsZWdhbnRfc3dlYXRlcidcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgICAgOiBtb2RlbEF2YXRhckRhdGFcbiAgICAgIClcbiAgICAgIGJyZWFrXG5cbiAgICBjYXNlIE5QQ1R5cGUuQ1VTVE9NOlxuICAgICAgR2x0ZkNvbnRhaW5lci5jcmVhdGUoXG4gICAgICAgIG5wYyxcbiAgICAgICAgbW9kZWxJc1N0cmluZyAmJiB0eXBlb2YgZGF0YS5tb2RlbCA9PT0gYHN0cmluZ2AgPyB7IHNyYzogZGF0YSAmJiBkYXRhLm1vZGVsID8gZGF0YS5tb2RlbCA6ICcnIH0gOiBtb2RlbEdMVEZEYXRhXG4gICAgICApXG4gICAgICBBbmltYXRvci5jcmVhdGUobnBjLCB7XG4gICAgICAgIHN0YXRlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsaXA6IGRhdGEgJiYgZGF0YS5pZGxlQW5pbSA/IGRhdGEuaWRsZUFuaW0gOiAnSWRsZScsXG4gICAgICAgICAgICBsb29wOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9KVxuXG4gICAgICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgICAgIG5wY0RhdGEuaWRsZUFuaW0gPSBkYXRhICYmIGRhdGEuaWRsZUFuaW0gPyBkYXRhLmlkbGVBbmltIDogJ0lkbGUnXG4gICAgICBucGNEYXRhLmxhc3RQbGF5ZWRBbmltID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS5pZGxlQW5pbVxuXG4gICAgICBBbmltYXRvci5wbGF5U2luZ2xlQW5pbWF0aW9uKG5wYywgbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS5pZGxlQW5pbSlcblxuICAgICAgaWYgKGRhdGEgJiYgZGF0YS53YWxraW5nQW5pbSkge1xuICAgICAgICBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLndhbGtpbmdBbmltID0gZGF0YS53YWxraW5nQW5pbVxuICAgICAgICBsZXQgYW5pbWF0aW9ucyA9IEFuaW1hdG9yLmdldE11dGFibGUobnBjKVxuICAgICAgICBhbmltYXRpb25zLnN0YXRlcy5wdXNoKHsgY2xpcDogZGF0YS53YWxraW5nQW5pbSwgbG9vcDogdHJ1ZSB9KVxuICAgICAgfVxuXG4gICAgICBicmVha1xuXG4gICAgY2FzZSBOUENUeXBlLkJMQU5LOlxuICAgICAgTWVzaFJlbmRlcmVyLnNldEJveChucGMpXG4gICAgICBNZXNoQ29sbGlkZXIuc2V0Qm94KG5wYylcbiAgICAgIGJyZWFrXG4gIH1cbn1cblxuZnVuY3Rpb24gc2VlZEFuaW1hdG9yRm9yRXhpc3RpbmcobnBjOiBFbnRpdHksIGRhdGE6IE5QQ0RhdGEpIHtcbiAgaWYgKGRhdGEudHlwZSAhPT0gTlBDVHlwZS5DVVNUT00pIHJldHVyblxuXG4gIGNvbnN0IGlkbGVDbGlwID0gZGF0YSAmJiBkYXRhLmlkbGVBbmltID8gZGF0YS5pZGxlQW5pbSA6ICdJZGxlJ1xuXG4gIGlmICghQW5pbWF0b3IuaGFzKG5wYykpIHtcbiAgICBBbmltYXRvci5jcmVhdGUobnBjLCB7XG4gICAgICBzdGF0ZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGNsaXA6IGlkbGVDbGlwLFxuICAgICAgICAgIGxvb3A6IHRydWVcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgY29uc3QgYW5pbWF0aW9ucyA9IEFuaW1hdG9yLmdldE11dGFibGUobnBjKVxuICAgIGlmIChhbmltYXRpb25zLnN0YXRlcy5maWx0ZXIoKGFuaW1hdGlvbjogUEJBbmltYXRpb25TdGF0ZSkgPT4gYW5pbWF0aW9uLmNsaXAgPT09IGlkbGVDbGlwKS5sZW5ndGggPT09IDApIHtcbiAgICAgIGFuaW1hdGlvbnMuc3RhdGVzLnB1c2goeyBjbGlwOiBpZGxlQ2xpcCwgbG9vcDogdHJ1ZSB9KVxuICAgIH1cbiAgfVxuXG4gIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICBucGNEYXRhLmlkbGVBbmltID0gaWRsZUNsaXBcbiAgbnBjRGF0YS5sYXN0UGxheWVkQW5pbSA9IGlkbGVDbGlwXG4gIGlmICh0eXBlb2YgaWRsZUNsaXAgPT09ICdzdHJpbmcnICYmIGlkbGVDbGlwLmxlbmd0aCA+IDApIHtcbiAgICBBbmltYXRvci5wbGF5U2luZ2xlQW5pbWF0aW9uKG5wYywgaWRsZUNsaXApXG4gIH1cblxuICBpZiAoZGF0YSAmJiBkYXRhLndhbGtpbmdBbmltKSB7XG4gICAgY29uc3QgYW5pbWF0aW9ucyA9IEFuaW1hdG9yLmdldE11dGFibGUobnBjKVxuICAgIGlmICh0eXBlb2YgZGF0YS53YWxraW5nQW5pbSA9PT0gJ3N0cmluZycgJiYgZGF0YS53YWxraW5nQW5pbS5sZW5ndGggPiAwICYmIGFuaW1hdGlvbnMuc3RhdGVzLmZpbHRlcigoYW5pbWF0aW9uOiBQQkFuaW1hdGlvblN0YXRlKSA9PiBhbmltYXRpb24uY2xpcCA9PT0gZGF0YS53YWxraW5nQW5pbSEpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgYW5pbWF0aW9ucy5zdGF0ZXMucHVzaCh7IGNsaXA6IGRhdGEud2Fsa2luZ0FuaW0hLCBsb29wOiB0cnVlIH0pXG4gICAgfVxuICAgIGlmICh0eXBlb2YgZGF0YS53YWxraW5nQW5pbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIG5wY0RhdGEud2Fsa2luZ0FuaW0gPSBkYXRhLndhbGtpbmdBbmltXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFkZENsaWNrUmVhY3Rpb25zKG5wYzogRW50aXR5LCBkYXRhOiBOUENEYXRhKSB7XG4gIGxldCBhY3RpdmF0ZUJ1dHRvbiA9IGRhdGEgJiYgZGF0YS5vbmx5Q2xpY2tUcmlnZ2VyID8gSW5wdXRBY3Rpb24uSUFfUE9JTlRFUiA6IElucHV0QWN0aW9uLklBX1BSSU1BUllcblxuICAvKlxuICBwb2ludGVyRXZlbnRzU3lzdGVtLm9uUG9pbnRlckRvd24oXG4gICAgICB7XG4gICAgICAgICAgZW50aXR5OiBucGMsXG4gICAgICAgICAgb3B0czoge1xuICAgICAgICAgICAgICBidXR0b246IGFjdGl2YXRlQnV0dG9uLFxuICAgICAgICAgICAgICBob3ZlclRleHQ6IGRhdGEgJiYgZGF0YS5ob3ZlclRleHQgPyBkYXRhLmhvdmVyVGV4dCA6ICdUYWxrJyxcbiAgICAgICAgICAgICAgc2hvd0ZlZWRiYWNrOiBkYXRhICYmIGRhdGEub25seUV4dGVybmFsVHJpZ2dlciA/IGZhbHNlIDogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAoKSA9PiB7XG4gICAgICAgICAgaWYgKGlzQ29vbGRvd24uaGFzKG5wYykgfHwgbnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpLnZpc2libGUpIHJldHVyblxuICAgICAgICAgIGFjdGl2YXRlKG5wYywgZW5naW5lLlBsYXllckVudGl0eSlcbiAgICAgIH0sXG4gIClcbiAgKi9cblxuICBwb2ludGVyRXZlbnRzU3lzdGVtLm9uUG9pbnRlckRvd24oXG4gICAgbnBjLFxuICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChpc0Nvb2xkb3duLmhhcyhucGMpIHx8IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQobnBjKS52aXNpYmxlKSByZXR1cm5cbiAgICAgIGFjdGl2YXRlKG5wYywgZW5naW5lLlBsYXllckVudGl0eSlcbiAgICB9LFxuICAgIHtcbiAgICAgIGJ1dHRvbjogYWN0aXZhdGVCdXR0b24sXG4gICAgICBob3ZlclRleHQ6IGRhdGEgJiYgZGF0YS5ob3ZlclRleHQgPyBTdHJpbmcoZGF0YS5ob3ZlclRleHQpIDogJ1RhbGsnLFxuICAgICAgc2hvd0ZlZWRiYWNrOiBkYXRhICYmIGRhdGEub25seUV4dGVybmFsVHJpZ2dlciA/IGZhbHNlIDogdHJ1ZVxuICAgIH1cbiAgKVxuXG4gIGlmIChkYXRhICYmIGRhdGEub25seUV4dGVybmFsVHJpZ2dlcikge1xuICAgIHBvaW50ZXJFdmVudHNTeXN0ZW0ucmVtb3ZlT25Qb2ludGVyRG93bihucGMpXG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkVHJpZ2dlckFyZWEobnBjOiBFbnRpdHksIGRhdGE6IE5QQ0RhdGEpIHtcbiAgbGV0IHRyaWdnZXJEYXRhOiBUcmlnZ2VyRGF0YSA9IHt9XG5cbiAgaWYgKCFkYXRhIHx8IChkYXRhICYmICFkYXRhLm9ubHlFeHRlcm5hbFRyaWdnZXIgJiYgIWRhdGEub25seUNsaWNrVHJpZ2dlciAmJiAhZGF0YS5vbmx5RVRyaWdnZXIpKSB7XG4gICAgb25BY3RpdmF0ZUNicy5zZXQobnBjLCAob3RoZXI6IEVudGl0eSkgPT4ge1xuICAgICAgaWYgKGlzQ29vbGRvd24uaGFzKG5wYykpIHtcbiAgICAgICAgY29uc29sZS5sb2cobnBjLCAnIGluIGNvb2xkb3duJylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAobnBjRGlhbG9nQ29tcG9uZW50LmhhcyhucGMpICYmIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQobnBjKS52aXNpYmxlKSB8fFxuICAgICAgICAoZGF0YSAmJiBkYXRhLm9ubHlFeHRlcm5hbFRyaWdnZXIpIHx8XG4gICAgICAgIChkYXRhICYmIGRhdGEub25seUNsaWNrVHJpZ2dlcilcbiAgICAgICkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGRhdGEub25BY3RpdmF0ZShvdGhlcilcbiAgICB9KVxuICAgIHRyaWdnZXJEYXRhLm9uQ2FtZXJhRW50ZXIgPSBvbkFjdGl2YXRlQ2JzLmdldChucGMpXG4gIH1cblxuICAvLyB3aGVuIGV4aXRpbmcgdHJpZ2dlclxuICBpZiAoIWRhdGEgfHwgKGRhdGEgJiYgIWRhdGEuY29udGludWVPbldhbGtBd2F5KSkge1xuICAgIHRyaWdnZXJEYXRhLm9uQ2FtZXJhRXhpdCA9IChvdGhlcikgPT4ge1xuICAgICAgaGFuZGxlV2Fsa0F3YXkobnBjLCBvdGhlcilcbiAgICB9XG4gIH1cblxuICAvLyB3aGVuIGVudGVyaW5nIHRyaWdnZXJcbiAgaWYgKCFkYXRhIHx8IChkYXRhICYmICFkYXRhLm9ubHlFeHRlcm5hbFRyaWdnZXIgJiYgIWRhdGEub25seUNsaWNrVHJpZ2dlciAmJiAhZGF0YS5vbmx5RVRyaWdnZXIpKSB7XG4gICAgdHJpZ2dlckRhdGEub25DYW1lcmFFbnRlciA9IChvdGhlcikgPT4ge1xuICAgICAgaWYgKGlzQ29vbGRvd24uaGFzKG5wYykpIHtcbiAgICAgICAgY29uc29sZS5sb2cobnBjLCAnIGluIGNvb2xkb3duJylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICAvLyBlbHNlIGlmIChcbiAgICAgIC8vICAgICAodGhpcy5kaWFsb2cgJiYgdGhpcy5kaWFsb2cuaXNEaWFsb2dPcGVuKSB8fFxuICAgICAgLy8gICAgIChkYXRhICYmIGRhdGEub25seUV4dGVybmFsVHJpZ2dlcikgfHxcbiAgICAgIC8vICAgICAoZGF0YSAmJiBkYXRhLm9ubHlDbGlja1RyaWdnZXIpXG4gICAgICAvLyApIHtcbiAgICAgIC8vICAgICByZXR1cm5cbiAgICAgIC8vIH1cbiAgICAgIGFjdGl2YXRlKG5wYywgb3RoZXIpXG4gICAgfVxuICB9XG5cbiAgLy8gYWRkIHRyaWdnZXJcblxuICBpZiAodHJpZ2dlckRhdGEub25DYW1lcmFFbnRlciB8fCB0cmlnZ2VyRGF0YS5vbkNhbWVyYUV4aXQpIHtcblxuXG4gICAgbGV0IHNwaGVyZVNjYWxlID0ge1xuICAgICAgeDogZGF0YS5yZWFjdERpc3RhbmNlICE9IHVuZGVmaW5lZCA/IGRhdGEucmVhY3REaXN0YW5jZSA6IDYsXG4gICAgICB5OiBkYXRhLnJlYWN0RGlzdGFuY2UgIT0gdW5kZWZpbmVkID8gZGF0YS5yZWFjdERpc3RhbmNlIDogNixcbiAgICAgIHo6IGRhdGEucmVhY3REaXN0YW5jZSAhPSB1bmRlZmluZWQgPyBkYXRhLnJlYWN0RGlzdGFuY2UgOiA2XG4gICAgfVxuXG4gICBsZXQgdHJpZ2dlclNwaGVyZSA9IGVuZ2luZS5hZGRFbnRpdHkoKVxuXG4gICBUcmFuc2Zvcm0uY3JlYXRlKHRyaWdnZXJTcGhlcmUsIHtcbiAgICBwb3NpdGlvbjogVmVjdG9yMy5aZXJvKCksXG4gICAgcm90YXRpb246IFF1YXRlcm5pb24uWmVybygpLFxuICAgIHNjYWxlOiBzcGhlcmVTY2FsZSxcbiAgICBwYXJlbnQ6IG5wY1xuICAgfSlcblxuICAgVHJpZ2dlckFyZWEuc2V0U3BoZXJlKHRyaWdnZXJTcGhlcmUpXG5cbiAgICB0cmlnZ2VyQXJlYUV2ZW50c1N5c3RlbS5vblRyaWdnZXJFbnRlcih0cmlnZ2VyU3BoZXJlLCBmdW5jdGlvbihyZXN1bHQpIHtcbiAgICAgIGlmICh0cmlnZ2VyRGF0YS5vbkNhbWVyYUVudGVyKSB7XG4gICAgICAgIGNvbnN0IGVudGl0eSA9IChyZXN1bHQ/LnRyaWdnZXI/LmVudGl0eSA/PyBlbmdpbmUuUGxheWVyRW50aXR5KSBhcyBFbnRpdHlcbiAgICAgICAgdHJpZ2dlckRhdGEub25DYW1lcmFFbnRlcihlbnRpdHkpXG4gICAgICB9XG4gICAgfSlcblxuICAgIHRyaWdnZXJBcmVhRXZlbnRzU3lzdGVtLm9uVHJpZ2dlckV4aXQodHJpZ2dlclNwaGVyZSwgZnVuY3Rpb24ocmVzdWx0KSB7XG4gICAgICBpZiAodHJpZ2dlckRhdGEub25DYW1lcmFFeGl0KSB7XG4gICAgICAgIGNvbnN0IGVudGl0eSA9IChyZXN1bHQ/LnRyaWdnZXI/LmVudGl0eSA/PyBlbmdpbmUuUGxheWVyRW50aXR5KSBhcyBFbnRpdHlcbiAgICAgICAgdHJpZ2dlckRhdGEub25DYW1lcmFFeGl0KGVudGl0eSlcbiAgICAgIH1cbiAgICB9KVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb2xsb3dQYXRoKG5wYzogRW50aXR5LCBkYXRhPzogRm9sbG93UGF0aERhdGEpIHtcbiAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gIGxldCBwYXRoOiBhbnlbXSA9IFtdXG5cbiAgaWYgKG5wY0RhdGEuZmFjZVVzZXIpIHtcbiAgICBpZiAoVHJhY2tVc2VyRmxhZy5oYXMobnBjKSkge1xuICAgICAgVHJhY2tVc2VyRmxhZy5kZWxldGVGcm9tKG5wYylcbiAgICB9XG4gIH1cblxuICBpZiAobnBjRGF0YS5tYW51YWxTdG9wKSB7XG4gICAgbGV0IGR1cmF0aW9uID0gbnBjRGF0YS5wYXRoRGF0YS50b3RhbER1cmF0aW9uXG4gICAgbGV0IGN1cnJlbnRUaW1lcjogbnVtYmVyID0gd2Fsa2luZ1RpbWVycy5nZXQobnBjKSFcbiAgICBjb25zb2xlLmxvZygnY3VycmVudCB0aW1lIGlzJywgY3VycmVudFRpbWVyKVxuICAgIGlmIChjdXJyZW50VGltZXIpIHtcbiAgICAgIGR1cmF0aW9uIC09IGN1cnJlbnRUaW1lclxuICAgIH1cblxuICAgIGxldCBwYXRoOiBhbnlbXSA9IFtdXG4gICAgbnBjRGF0YS5wYXRoRGF0YS5wYXRoLmZvckVhY2goKHA6IGFueSkgPT4ge1xuICAgICAgcGF0aC5wdXNoKHApXG4gICAgfSlcbiAgICBwYXRoLnNwbGljZSgwLCBucGNEYXRhLnBhdGhJbmRleClcblxuICAgIGxldCBwb3MgPSBUcmFuc2Zvcm0uZ2V0KG5wYykucG9zaXRpb25cbiAgICBwYXRoLnVuc2hpZnQoVmVjdG9yMy5jcmVhdGUocG9zLngsIHBvcy55LCBwb3MueikpXG4gICAgd2Fsa05QQyhcbiAgICAgIG5wYyxcbiAgICAgIG5wY0RhdGEsXG4gICAgICBucGNEYXRhLnBhdGhEYXRhLnBhdGhUeXBlLFxuICAgICAgZHVyYXRpb24sXG4gICAgICBwYXRoLFxuICAgICAgcG9pbnRSZWFjaGVkQ2FsbGJhY2tzLmdldChucGMpLFxuICAgICAgb25GaW5pc2hDYWxsYmFja3MuZ2V0KG5wYylcbiAgICApXG4gIH0gZWxzZSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIG5wY0RhdGEucGF0aERhdGEgPSBkYXRhXG5cbiAgICAgIGlmIChkYXRhLnN0YXJ0aW5nUG9pbnQpIHtcbiAgICAgICAgZGF0YS5wYXRoPy5zcGxpY2UoMCwgZGF0YS5zdGFydGluZ1BvaW50IC0gMSlcbiAgICAgIH1cblxuICAgICAgbGV0IHBvcyA9IFRyYW5zZm9ybS5nZXQobnBjKS5wb3NpdGlvblxuICAgICAgcGF0aC5wdXNoKFZlY3RvcjMuY3JlYXRlKHBvcy54LCBwb3MueSwgcG9zLnopKVxuICAgICAgZGF0YS5wYXRoPy5mb3JFYWNoKChwKSA9PiB7XG4gICAgICAgIHBhdGgucHVzaChwKVxuICAgICAgfSlcblxuICAgICAgb25GaW5pc2hDYWxsYmFja3Muc2V0KG5wYywgKCkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnb24gZmluaXNoZWQgY2FsbGJhY2snKVxuICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLm9uRmluaXNoQ2FsbGJhY2sgJiYgIWRhdGEubG9vcCkge1xuICAgICAgICAgIGRhdGEub25GaW5pc2hDYWxsYmFjaygpXG4gICAgICAgIH1cbiAgICAgICAgc3RvcFBhdGgobnBjKVxuICAgICAgfSlcblxuICAgICAgcG9pbnRSZWFjaGVkQ2FsbGJhY2tzLnNldChucGMsICgpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ29uIHBvaW50IHJlYWNoZWQgY2FsbGJhY2snKVxuICAgICAgICBsZXQgZGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgICAgICAgZGF0YS5wYXRoSW5kZXggKz0gMVxuICAgICAgICBkYXRhLm9uUmVhY2hlZFBvaW50Q2FsbGJhY2sgPyBkYXRhLm9uUmVhY2hlZFBvaW50Q2FsbGJhY2sgOiB1bmRlZmluZWRcbiAgICAgIH0pXG4gICAgICB3YWxrTlBDKFxuICAgICAgICBucGMsXG4gICAgICAgIG5wY0RhdGEsXG4gICAgICAgIGRhdGEucGF0aFR5cGUhLFxuICAgICAgICBkYXRhLnRvdGFsRHVyYXRpb24sXG4gICAgICAgIHBhdGgsXG4gICAgICAgIHBvaW50UmVhY2hlZENhbGxiYWNrcy5nZXQobnBjKSxcbiAgICAgICAgb25GaW5pc2hDYWxsYmFja3MuZ2V0KG5wYylcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG5wY0RhdGEubWFudWFsU3RvcCkge1xuICAgICAgICBjb25zb2xlLmxvZygnd2UgaGF2ZSBtYW51YWwgc3RvcCwgbmVlZCB0byBwaWNrIGJhY2sgdXAgd2hlcmUgd2UgbGVmdCBvZmYnKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5sb2coJ3dlIGFyZSB0cnlpbmcgdG8gZm9sbG93IGEgcGF0aCB3aXRvdXQgc3RhcnRpbmcgb25lIHByaW9yJylcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gd2Fsa05QQyhcbiAgbnBjOiBFbnRpdHksXG4gIG5wY0RhdGE6IGFueSxcbiAgdHlwZTogTlBDUGF0aFR5cGUsXG4gIGR1cmF0aW9uOiBudW1iZXIsXG4gIHBhdGg6IFZlY3RvcjNbXSxcbiAgcG9pbnRSZWFjaGVkQ2FsbGJhY2s/OiBhbnksXG4gIGZpbmlzaGVkQ2FsbGJhY2s/OiBhbnlcbikge1xuICBpZiAoSXNGb2xsb3dpbmdQYXRoLmhhcyhucGMpKSB7XG4gICAgSXNGb2xsb3dpbmdQYXRoLmRlbGV0ZUZyb20obnBjKVxuICAgIHdhbGtpbmdUaW1lcnMuZGVsZXRlKG5wYylcbiAgfVxuICBJc0ZvbGxvd2luZ1BhdGguY3JlYXRlKG5wYylcblxuICBpZiAodHlwZSkge1xuICAgIGlmICh0eXBlID09IE5QQ1BhdGhUeXBlLlJJR0lEX1BBVEgpIHtcbiAgICAgIHBhdGhzLnN0YXJ0U3RyYWlnaHRQYXRoKFxuICAgICAgICBucGMsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIGR1cmF0aW9uLFxuICAgICAgICB0cnVlLFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgZmluaXNoZWRDYWxsYmFjaygpXG4gICAgICAgIH0sXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICBwb2ludFJlYWNoZWRDYWxsYmFjaygpXG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgcGF0aHMuc3RhcnRTbW9vdGhQYXRoKFxuICAgICAgICBucGMsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIGR1cmF0aW9uLFxuICAgICAgICAzMCxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIGZpbmlzaGVkQ2FsbGJhY2soKVxuICAgICAgICB9LFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgcG9pbnRSZWFjaGVkQ2FsbGJhY2soKVxuICAgICAgICB9XG4gICAgICApXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHBhdGhzLnN0YXJ0U21vb3RoUGF0aChcbiAgICAgIG5wYyxcbiAgICAgIHBhdGgsXG4gICAgICBkdXJhdGlvbixcbiAgICAgIDIwLFxuICAgICAgdHJ1ZSxcbiAgICAgICgpID0+IHtcbiAgICAgICAgZmluaXNoZWRDYWxsYmFjaygpXG4gICAgICB9LFxuICAgICAgKCkgPT4ge1xuICAgICAgICBwb2ludFJlYWNoZWRDYWxsYmFjaygpXG4gICAgICB9XG4gICAgKVxuICB9XG5cbiAgaWYgKG5wY0RhdGEud2Fsa2luZ0FuaW0pIHtcbiAgICBjbGVhckFuaW1hdGlvblRpbWVyKG5wYylcbiAgICBBbmltYXRvci5wbGF5U2luZ2xlQW5pbWF0aW9uKG5wYywgbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS53YWxraW5nQW5pbSwgdHJ1ZSlcbiAgICBucGNEYXRhLmxhc3RQbGF5ZWRBbmltID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS53YWxraW5nQW5pbVxuICB9XG4gIG5wY0RhdGEuc3RhdGUgPSBOUENTdGF0ZS5GT0xMT1dQQVRIXG4gIG5wY0RhdGEubWFudWFsU3RvcCA9IGZhbHNlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdG9wV2Fsa2luZyhucGM6IEVudGl0eSwgZHVyYXRpb24/OiBudW1iZXIsIGZpbmlzaGVkPzogYm9vbGVhbikge1xuICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgbnBjRGF0YS5zdGF0ZSA9IE5QQ1N0YXRlLlNUQU5ESU5HXG4gIG5wY0RhdGEubWFudWFsU3RvcCA9IHRydWVcblxuICBzdG9wUGF0aChucGMpXG5cbiAgaWYgKGR1cmF0aW9uKSB7XG4gICAgZGVsYXllZEZ1bmN0aW9uKCgpID0+IHtcbiAgICAgIGlmIChucGNEYXRhLnBhdGgpIHtcbiAgICAgICAgQW5pbWF0b3Iuc3RvcEFsbEFuaW1hdGlvbnMobnBjLCB0cnVlKVxuICAgICAgICBpZiAobnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS53YWxraW5nQW5pbSkge1xuICAgICAgICAgIGNsZWFyQW5pbWF0aW9uVGltZXIobnBjKVxuICAgICAgICAgIEFuaW1hdG9yLnBsYXlTaW5nbGVBbmltYXRpb24obnBjLCBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLndhbGtpbmdBbmltLCB0cnVlKVxuICAgICAgICAgIG5wY0RhdGEubGFzdFBsYXllZEFuaW0gPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLndhbGtpbmdBbmltXG4gICAgICAgIH1cbiAgICAgICAgbGV0IGR1cmF0aW9uID0gbnBjRGF0YS5wYXRoRGF0YS50b3RhbER1cmF0aW9uXG4gICAgICAgIGxldCBjdXJyZW50VGltZXI6IG51bWJlciA9IHdhbGtpbmdUaW1lcnMuZ2V0KG5wYykhXG4gICAgICAgIGNvbnNvbGUubG9nKCdjdXJyZW50IHRpbWUgaXMnLCBjdXJyZW50VGltZXIpXG4gICAgICAgIGlmIChjdXJyZW50VGltZXIpIHtcbiAgICAgICAgICBkdXJhdGlvbiAtPSBjdXJyZW50VGltZXJcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwYXRoOiBhbnlbXSA9IFtdXG4gICAgICAgIG5wY0RhdGEucGF0aERhdGEucGF0aC5mb3JFYWNoKChwOiBhbnkpID0+IHtcbiAgICAgICAgICBwYXRoLnB1c2gocClcbiAgICAgICAgfSlcbiAgICAgICAgcGF0aC5zcGxpY2UoMCwgbnBjRGF0YS5wYXRoSW5kZXgpXG5cbiAgICAgICAgbGV0IHBvcyA9IFRyYW5zZm9ybS5nZXQobnBjKS5wb3NpdGlvblxuICAgICAgICBwYXRoLnVuc2hpZnQoVmVjdG9yMy5jcmVhdGUocG9zLngsIHBvcy55LCBwb3MueikpXG5cbiAgICAgICAgLy9ucGNEYXRhLm1hbnVhbFN0b3AgPSBmYWxzZVxuICAgICAgICB3YWxrTlBDKFxuICAgICAgICAgIG5wYyxcbiAgICAgICAgICBucGNEYXRhLFxuICAgICAgICAgIG5wY0RhdGEucGF0aERhdGEucGF0aFR5cGUsXG4gICAgICAgICAgZHVyYXRpb24sXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICBwb2ludFJlYWNoZWRDYWxsYmFja3MuZ2V0KG5wYyksXG4gICAgICAgICAgb25GaW5pc2hDYWxsYmFja3MuZ2V0KG5wYylcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgfSwgZHVyYXRpb24gKiAxMDAwKVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdG9wUGF0aChucGM6IEVudGl0eSkge1xuICBwYXRocy5zdG9wUGF0aChucGMpXG4gIElzRm9sbG93aW5nUGF0aC5kZWxldGVGcm9tKG5wYylcblxuICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgaWYgKG5wY0RhdGEud2Fsa2luZ0FuaW0pIHtcbiAgICBjbGVhckFuaW1hdGlvblRpbWVyKG5wYylcbiAgICBBbmltYXRvci5wbGF5U2luZ2xlQW5pbWF0aW9uKG5wYywgbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS5pZGxlQW5pbSlcbiAgICBucGNEYXRhLmxhc3RQbGF5ZWRBbmltID0gbnBjRGF0YS5pZGxlQW5pbVxuICB9XG5cbiAgaWYgKCFucGNEYXRhLm1hbnVhbFN0b3ApIHtcbiAgICBpZiAobnBjRGF0YS5wYXRoRGF0YS5sb29wKSB7XG4gICAgICBucGNEYXRhLnBhdGhJbmRleCA9IDBcbiAgICAgIHdhbGtpbmdUaW1lcnMuZGVsZXRlKG5wYylcbiAgICAgIGNvbnNvbGUubG9nKCd3ZSBhcmUgbG9vcGluZyBwYXRoJywgbnBjRGF0YSlcbiAgICAgIGZvbGxvd1BhdGgobnBjLCBucGNEYXRhLnBhdGhEYXRhKVxuICAgICAgY29uc29sZS5sb2cobnBjRGF0YSlcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyTlBDKCkge1xuICBhY3RpdmVOUEMgPSBOVUxMX05QQ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0QWN0aXZlTlBDKG5wYzogRW50aXR5KSB7XG4gIGFjdGl2ZU5QQyA9IG5wY1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNBY3RpdmVOcGNTZXQoKSB7XG4gIHJldHVybiBhY3RpdmVOUEMgJiYgbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMpXG59XG5cbi8qKlxuICogQ2FsbHMgdGhlIE5QQydzIGFjdGl2YXRpb24gZnVuY3Rpb24gKHNldCBvbiBOUEMgZGVmaW5pdGlvbikuIElmIE5QQyBoYXMgYGZhY2VVc2VyYCA9IHRydWUsIGl0IHdpbGwgcm90YXRlIHRvIGZhY2UgdGhlIHBsYXllci4gSXQgc3RhcnRzIGEgY29vbGRvd24gY291bnRlciB0byBhdm9pZCByZWFjdGl2YXRpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhY3RpdmF0ZShucGM6IEVudGl0eSwgb3RoZXI6IEVudGl0eSkge1xuICBpZiAoYWN0aXZlTlBDICE9IDApIHtcbiAgICBjb25zb2xlLmxvZygnd2UgaGF2ZSBhIGN1cnJlbnQgbnBjLCBuZWVkdG8gcmVtb3ZlJylcbiAgICBlbmRJbnRlcmFjdGlvbihhY3RpdmVOUEMpXG4gICAgLy8gY2xvc2VEaWFsb2coYWN0aXZlTlBDKVxuICB9XG5cbiAgYWN0aXZlTlBDID0gbnBjXG4gIG9uQWN0aXZhdGVDYnMuZ2V0KG5wYykob3RoZXIpXG5cbiAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gIGlmIChucGNEYXRhLmZhY2VVc2VyKSB7XG4gICAgaWYgKFRyYWNrVXNlckZsYWcuaGFzKG5wYykpIHtcbiAgICAgIFRyYWNrVXNlckZsYWcuZGVsZXRlRnJvbShucGMpXG4gICAgfVxuXG4gICAgVHJhY2tVc2VyRmxhZy5jcmVhdGUobnBjLCB7XG4gICAgICBsb2NrWFpSb3RhdGlvbjogdHJ1ZSxcbiAgICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICAgIHJvdFNwZWVkOiBucGNEYXRhLnR1cm5TcGVlZFxuICAgIH0pXG4gIH1cbiAgaXNDb29sZG93bi5zZXQobnBjLCB0cnVlKVxuICBucGNEYXRhLmluQ29vbGRvd24gPSB0cnVlXG5cbiAgZGVsYXllZEZ1bmN0aW9uKCgpID0+IFxuICAgIHtcbiAgICAgIGlzQ29vbGRvd24uZGVsZXRlKG5wYylcbiAgICAgIG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykuaW5Db29sZG93biA9IGZhbHNlXG4gICAgICBjb25zb2xlLmxvZyhcImNvb2xkb3duIGRlbGV0ZWRcIilcbiAgICB9LCAxMDAwICogbnBjRGF0YS5jb29sRG93bkR1cmF0aW9uXG4gIClcblxuICBjb25zb2xlLmxvZygnYWN0aXZhdGVkIG5wYywnLCBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLCBcImNvb2xkb3duIGR1cmF0aW9uOiBcIiwgbnBjRGF0YS5jb29sRG93bkR1cmF0aW9uKVxufVxuXG5mdW5jdGlvbiBlbmRJbnRlcmFjdGlvbihucGM6IEVudGl0eSkge1xuICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgbnBjRGF0YS5zdGF0ZSA9IE5QQ1N0YXRlLlNUQU5ESU5HXG5cbiAgaWYgKG5wY0RpYWxvZ0NvbXBvbmVudC5oYXMobnBjKSkge1xuICAgIC8vfSAmJiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYykudmlzaWJsZSkge1xuICAgIGNsb3NlRGlhbG9nKG5wYylcbiAgfVxuXG4gIGlmIChucGNEYXRhLmZhY2VVc2VyKSB7XG4gICAgaWYgKFRyYWNrVXNlckZsYWcuaGFzKG5wYykpIHtcbiAgICAgIFRyYWNrVXNlckZsYWcuZGVsZXRlRnJvbShucGMpXG4gICAgfVxuICB9XG5cbiAgY29uc29sZS5sb2coJ2VuZGluZyBpbnRlcmFjdGlvbicsIG5wY0RhdGEsIGJ1YmJsZXMuZ2V0KG5wYykpXG4gIGlmIChucGNEYXRhLmhhc0J1YmJsZSAmJiBidWJibGVzLmdldChucGMpLmlzQnViYmxlT3Blbikge1xuICAgIGNsb3NlQnViYmxlKG5wYylcbiAgfVxufVxuXG4vKipcbiAqIEVuZHMgaW50ZXJhY3Rpb24gYW5kIGNhbGxzIHRoZSBvbldhbGtBd2F5IGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVXYWxrQXdheShucGM6IEVudGl0eSwgb3RoZXI6IEVudGl0eSkge1xuICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgaWYgKG5wY0RhdGEuc3RhdGUgPT0gTlBDU3RhdGUuRk9MTE9XUEFUSCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgZW5kSW50ZXJhY3Rpb24obnBjKVxuXG4gIGlmIChvbldhbGtBd2F5Q2JzLmdldChucGMpKSB7XG4gICAgb25XYWxrQXdheUNicy5nZXQobnBjKShvdGhlcilcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGxheUFuaW1hdGlvbihucGM6IEVudGl0eSwgYW5pbTogc3RyaW5nLCBub0xvb3A/OiBib29sZWFuLCBkdXJhdGlvbj86IG51bWJlcikge1xuICBsZXQgYW5pbWF0aW9ucyA9IEFuaW1hdG9yLmdldE11dGFibGUobnBjKVxuICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcblxuICBpZiAoIWFuaW1hdGlvbnMgfHwgIW5wY0RhdGEpIHJldHVyblxuXG4gIGlmIChhbmltYXRpb25zLnN0YXRlcyAmJiBhbmltYXRpb25zLnN0YXRlcy5maWx0ZXIoKGFuaW1hdGlvbjogUEJBbmltYXRpb25TdGF0ZSkgPT4gYW5pbWF0aW9uLmNsaXAgPT09IGFuaW0pLmxlbmd0aCA9PSAwKSB7XG4gICAgYW5pbWF0aW9ucy5zdGF0ZXMucHVzaCh7IGNsaXA6IGFuaW0sIGxvb3A6IG5vTG9vcCA/IGZhbHNlIDogdHJ1ZSB9KVxuICB9XG5cbiAgaWYgKG5wY0RhdGEuc3RhdGUgPT0gTlBDU3RhdGUuRk9MTE9XUEFUSCkge1xuICAgIHBhdGhzLnN0b3BQYXRoKG5wYylcbiAgfVxuXG4gIGNsZWFyQW5pbWF0aW9uVGltZXIobnBjKVxuXG4gIEFuaW1hdG9yLnN0b3BBbGxBbmltYXRpb25zKG5wYywgdHJ1ZSlcbiAgQW5pbWF0b3IucGxheVNpbmdsZUFuaW1hdGlvbihucGMsIGFuaW0sIHRydWUpXG4gIGlmIChkdXJhdGlvbikge1xuICAgIGNvbnNvbGUubG9nKCdoYXZlIGEgZHVyYXRpb24gdG8gcGxheSBhbmltYXRpb24nKVxuICAgIGNsZWFyQW5pbWF0aW9uVGltZXIobnBjKVxuICAgIGFuaW1UaW1lcnMuc2V0KFxuICAgICAgbnBjLFxuICAgICAgZGVsYXllZEZ1bmN0aW9uKCgpID0+IHtcbiAgICAgICAgY2xlYXJBbmltYXRpb25UaW1lcihucGMpXG4gICAgICAgIEFuaW1hdG9yLnN0b3BBbGxBbmltYXRpb25zKG5wYywgdHJ1ZSlcbiAgICAgICAgaWYgKG5wY0RhdGEuaWRsZUFuaW0pIHtcbiAgICAgICAgICBBbmltYXRvci5wbGF5U2luZ2xlQW5pbWF0aW9uKG5wYywgbnBjRGF0YS5pZGxlQW5pbSlcbiAgICAgICAgICBucGNEYXRhLmxhc3RQbGF5ZWRBbmltID0gbnBjRGF0YS5pZGxlQW5pbVxuICAgICAgICB9XG4gICAgICB9LCAxMDAwICogZHVyYXRpb24pXG4gICAgKVxuICB9XG4gIFxuXG4gIG5wY0RhdGEubGFzdFBsYXllZEFuaW0gPSBhbmltXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGFuZ2VJZGxlQW5pbShucGM6IEVudGl0eSwgYW5pbWF0aW9uOiBzdHJpbmcsIHBsYXk/OiBib29sZWFuKSB7XG4gIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICBucGNEYXRhLmlkbGVBbmltID0gYW5pbWF0aW9uXG5cbiAgbGV0IGFuaW1hdGlvbnMgPSBBbmltYXRvci5nZXRNdXRhYmxlKG5wYylcbiAgaWYgKGFuaW1hdGlvbnMuc3RhdGVzLmZpbHRlcigoYW5pbSkgPT4gYW5pbS5jbGlwID09PSBhbmltYXRpb24pLmxlbmd0aCA9PSAwKSB7XG4gICAgYW5pbWF0aW9ucy5zdGF0ZXMucHVzaCh7IGNsaXA6IGFuaW1hdGlvbiwgbG9vcDogdHJ1ZSB9KVxuICB9XG5cbiAgaWYgKHBsYXkpIHtcbiAgICBwbGF5QW5pbWF0aW9uKG5wYywgYW5pbWF0aW9uLCB0cnVlKVxuICAgIG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykubGFzdFBsYXllZEFuaW0gPSBhbmltYXRpb25cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFsa0J1YmJsZShucGM6IEVudGl0eSwgc2NyaXB0OiBEaWFsb2dbXSwgc3RhcnRJbmRleD86IG51bWJlciB8IHN0cmluZykge1xuICBvcGVuQnViYmxlKG5wYywgc2NyaXB0LCBzdGFydEluZGV4KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGlhbG9nV2luZG93KGRlZmF1bHRQb3J0cmFpdD86IEltYWdlRGF0YSwgc291bmQ/OiBzdHJpbmcpIHtcbiAgbGV0IGRpYWxvZyA9IGVuZ2luZS5hZGRFbnRpdHkoKVxuICBhZGREaWFsb2coZGlhbG9nLCBzb3VuZCwgZGVmYXVsdFBvcnRyYWl0KVxuICByZXR1cm4gZGlhbG9nXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvcGVuRGlhbG9nV2luZG93KG5wYzogRW50aXR5LCBkaWFsb2c6IERpYWxvZ1tdLCBzdGFydEluZGV4PzogbnVtYmVyIHwgc3RyaW5nKSB7XG4gIGFjdGl2ZU5QQyA9IG5wY1xuXG4gIGlmIChucGNEaWFsb2dDb21wb25lbnQuaGFzKG5wYykpIHtcbiAgICBsZXQgaW5kZXg6IGFueVxuICAgIGlmICghc3RhcnRJbmRleCkge1xuICAgICAgaW5kZXggPSAwXG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygc3RhcnRJbmRleCA9PT0gJ251bWJlcicpIHtcbiAgICAgIGluZGV4ID0gc3RhcnRJbmRleFxuICAgIH0gZWxzZSB7XG4gICAgICBpbmRleCA9IGZpbmREaWFsb2dCeU5hbWUoZGlhbG9nLCBzdGFydEluZGV4KVxuICAgIH1cbiAgICBvcGVuRGlhbG9nKG5wYywgZGlhbG9nLCBpbmRleClcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xvc2VEaWFsb2dXaW5kb3cod2luZG93OiBFbnRpdHkpIHtcbiAgbGV0IGRpYWxvZyA9IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQod2luZG93KVxuICBpZiAod2luZG93KSB7XG4gICAgY2xvc2VEaWFsb2coZGlhbG9nKVxuICB9XG59XG5cbmZ1bmN0aW9uIGNsZWFyQW5pbWF0aW9uVGltZXIobnBjOiBFbnRpdHkpOiBib29sZWFuIHtcbiAgaWYgKGFuaW1UaW1lcnMuaGFzKG5wYykpIHtcbiAgICBjbGVhckRlbGF5ZWRGdW5jdGlvbihhbmltVGltZXJzLmdldChucGMpKVxuICAgIGFuaW1UaW1lcnMuZGVsZXRlKG5wYylcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuIl19
package/dist/npcData.d.ts CHANGED
@@ -10,4 +10,5 @@ export declare const NPCDataComponent: import("@dcl/sdk/ecs").MapComponentDefini
10
10
  idleAnim: import("@dcl/sdk/ecs").ISchema<string>;
11
11
  lastPlayedAnim: import("@dcl/sdk/ecs").ISchema<string>;
12
12
  path: import("@dcl/sdk/ecs").ISchema<import("@dcl/sdk/ecs").Vector3Type[]>;
13
+ volume: import("@dcl/sdk/ecs").ISchema<number>;
13
14
  }>>;
package/dist/npcData.js CHANGED
@@ -10,6 +10,7 @@ export const NPCDataComponent = engine.defineComponent('npcdatacomponent', {
10
10
  walkingAnim: Schemas.String,
11
11
  idleAnim: Schemas.String,
12
12
  lastPlayedAnim: Schemas.String,
13
- path: Schemas.Array(Schemas.Vector3)
13
+ path: Schemas.Array(Schemas.Vector3),
14
+ volume: Schemas.Number
14
15
  });
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBjRGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ucGNEYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQzlDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsa0JBQWtCLEVBQUU7SUFDekUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxPQUFPO0lBQzNCLFVBQVUsRUFBRSxPQUFPLENBQUMsT0FBTztJQUMzQixnQkFBZ0IsRUFBRSxPQUFPLENBQUMsTUFBTTtJQUNoQyxRQUFRLEVBQUUsT0FBTyxDQUFDLE9BQU87SUFDekIsWUFBWSxFQUFFLE9BQU8sQ0FBQyxNQUFNO0lBQzVCLFlBQVksRUFBRSxPQUFPLENBQUMsTUFBTTtJQUM1QixLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU07SUFDckIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxNQUFNO0lBQzNCLFFBQVEsRUFBRSxPQUFPLENBQUMsTUFBTTtJQUN4QixjQUFjLEVBQUUsT0FBTyxDQUFDLE1BQU07SUFDOUIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztDQUNyQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY2hlbWFzLCBlbmdpbmUgfSBmcm9tICdAZGNsL3Nkay9lY3MnXG5leHBvcnQgY29uc3QgTlBDRGF0YUNvbXBvbmVudCA9IGVuZ2luZS5kZWZpbmVDb21wb25lbnQoJ25wY2RhdGFjb21wb25lbnQnLCB7XG4gIGludHJvZHVjZWQ6IFNjaGVtYXMuQm9vbGVhbixcbiAgaW5Db29sZG93bjogU2NoZW1hcy5Cb29sZWFuLFxuICBjb29sRG93bkR1cmF0aW9uOiBTY2hlbWFzLk51bWJlcixcbiAgZmFjZVVzZXI6IFNjaGVtYXMuQm9vbGVhbixcbiAgd2Fsa2luZ1NwZWVkOiBTY2hlbWFzLk51bWJlcixcbiAgYnViYmxlSGVpZ2h0OiBTY2hlbWFzLk51bWJlcixcbiAgc3RhdGU6IFNjaGVtYXMuU3RyaW5nLFxuICB3YWxraW5nQW5pbTogU2NoZW1hcy5TdHJpbmcsXG4gIGlkbGVBbmltOiBTY2hlbWFzLlN0cmluZyxcbiAgbGFzdFBsYXllZEFuaW06IFNjaGVtYXMuU3RyaW5nLFxuICBwYXRoOiBTY2hlbWFzLkFycmF5KFNjaGVtYXMuVmVjdG9yMylcbn0pXG4iXX0=
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBjRGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ucGNEYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQzlDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsa0JBQWtCLEVBQUU7SUFDekUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxPQUFPO0lBQzNCLFVBQVUsRUFBRSxPQUFPLENBQUMsT0FBTztJQUMzQixnQkFBZ0IsRUFBRSxPQUFPLENBQUMsTUFBTTtJQUNoQyxRQUFRLEVBQUUsT0FBTyxDQUFDLE9BQU87SUFDekIsWUFBWSxFQUFFLE9BQU8sQ0FBQyxNQUFNO0lBQzVCLFlBQVksRUFBRSxPQUFPLENBQUMsTUFBTTtJQUM1QixLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU07SUFDckIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxNQUFNO0lBQzNCLFFBQVEsRUFBRSxPQUFPLENBQUMsTUFBTTtJQUN4QixjQUFjLEVBQUUsT0FBTyxDQUFDLE1BQU07SUFDOUIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztJQUNwQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07Q0FDdkIsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2NoZW1hcywgZW5naW5lIH0gZnJvbSAnQGRjbC9zZGsvZWNzJ1xuZXhwb3J0IGNvbnN0IE5QQ0RhdGFDb21wb25lbnQgPSBlbmdpbmUuZGVmaW5lQ29tcG9uZW50KCducGNkYXRhY29tcG9uZW50Jywge1xuICBpbnRyb2R1Y2VkOiBTY2hlbWFzLkJvb2xlYW4sXG4gIGluQ29vbGRvd246IFNjaGVtYXMuQm9vbGVhbixcbiAgY29vbERvd25EdXJhdGlvbjogU2NoZW1hcy5OdW1iZXIsXG4gIGZhY2VVc2VyOiBTY2hlbWFzLkJvb2xlYW4sXG4gIHdhbGtpbmdTcGVlZDogU2NoZW1hcy5OdW1iZXIsXG4gIGJ1YmJsZUhlaWdodDogU2NoZW1hcy5OdW1iZXIsXG4gIHN0YXRlOiBTY2hlbWFzLlN0cmluZyxcbiAgd2Fsa2luZ0FuaW06IFNjaGVtYXMuU3RyaW5nLFxuICBpZGxlQW5pbTogU2NoZW1hcy5TdHJpbmcsXG4gIGxhc3RQbGF5ZWRBbmltOiBTY2hlbWFzLlN0cmluZyxcbiAgcGF0aDogU2NoZW1hcy5BcnJheShTY2hlbWFzLlZlY3RvcjMpLFxuICB2b2x1bWU6IFNjaGVtYXMuTnVtYmVyXG59KVxuIl19
package/dist/types.d.ts CHANGED
@@ -78,6 +78,7 @@ export type NPCData = {
78
78
  pathData?: FollowPathData;
79
79
  bubbleXOffset?: number;
80
80
  bubbleYOffset?: number;
81
+ volume: any;
81
82
  };
82
83
  export type FollowPathData = {
83
84
  startingPoint?: number;
package/dist/types.js CHANGED
@@ -36,4 +36,4 @@ export var NPCPathType;
36
36
  NPCPathType["SMOOTH_PATH"] = "smooth";
37
37
  NPCPathType["RIGID_PATH"] = "rigid";
38
38
  })(NPCPathType || (NPCPathType = {}));
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0ZBLE1BQU0sQ0FBTixJQUFZLFlBY1g7QUFkRCxXQUFZLFlBQVk7SUFDdEIsdUJBQU8sQ0FBQTtJQUNQLHVCQUFPLENBQUE7SUFDUCw2QkFBYSxDQUFBO0lBQ2IsMkJBQVcsQ0FBQTtJQUNYLHlDQUF5QixDQUFBO0lBQ3pCLHlDQUF5QixDQUFBO0lBQ3pCLDJDQUEyQixDQUFBO0lBQzNCLHVDQUF1QixDQUFBO0lBQ3ZCLDJDQUEyQixDQUFBO0lBQzNCLDJDQUEyQixDQUFBO0lBQzNCLDZDQUE2QixDQUFBO0lBQzdCLHlDQUF5QixDQUFBO0lBQ3pCLCtCQUFlLENBQUE7QUFDakIsQ0FBQyxFQWRXLFlBQVksS0FBWixZQUFZLFFBY3ZCO0FBNEhELE1BQU0sQ0FBTixJQUFZLFFBS1g7QUFMRCxXQUFZLFFBQVE7SUFDbEIsaUNBQXFCLENBQUE7SUFDckIsK0JBQW1CLENBQUE7SUFDbkIscUNBQXlCLENBQUE7QUFFM0IsQ0FBQyxFQUxXLFFBQVEsS0FBUixRQUFRLFFBS25CO0FBRUQsTUFBTSxDQUFOLElBQVksV0FHWDtBQUhELFdBQVksV0FBVztJQUNyQixnQ0FBaUIsQ0FBQTtJQUNqQixvQ0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBSFcsV0FBVyxLQUFYLFdBQVcsUUFHdEI7QUFFRCxNQUFNLENBQU4sSUFBWSxPQUlYO0FBSkQsV0FBWSxPQUFPO0lBQ2pCLDBCQUFlLENBQUE7SUFDZiw0QkFBaUIsQ0FBQTtJQUNqQiw0QkFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBSlcsT0FBTyxLQUFQLE9BQU8sUUFJbEI7QUFFRCxNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLHFDQUFzQixDQUFBO0lBQ3RCLG1DQUFvQixDQUFBO0FBQ3RCLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudGl0eSwgUEJBdmF0YXJTaGFwZSwgUEJHbHRmQ29udGFpbmVyIH0gZnJvbSAnQGRjbC9zZGsvZWNzJ1xuaW1wb3J0IHsgVmVjdG9yMyB9IGZyb20gJ0BkY2wvc2RrL21hdGgnXG5cbi8qKlxuICogRnJhZ21lbnQgb2YgYSBjb252ZXJzYXRpb24gd2l0aCBhbiBOUENcbiAqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBEaWFsb2cgLSBBbiBlbnRyeSBpbiBhbiBOUEMgY29udmVyc2F0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdGV4dCBUaGUgZGlhbG9nIHRleHRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBuYW1lIE9wdGlvbmFsIG5hbWUgb2YgdGhlIGRpYWxvZyBlbnRyeSwgdG8gbGluayBvdGhlciBlbnRyaWVzIHRvIHRoaXMgb25lIGFuZCBub3Qgd29ycnkgYWJvdXQgY2hhbmdlcyBpbiB0aGUgYXJyYXkgbGVuZ3RoXG4gKiBAcHJvcGVydHkge251bWJlcn0gZm9udFNpemUgU2l6ZSBvZiB0aGUgdGV4dFxuICogQHByb3BlcnR5IHtudW1iZXJ9IG9mZnNldFggT2Zmc2V0IG9mIHRoZSB0ZXh0IG9uIHRoZSBYIGF4aXMsIHJlbGF0aXZlIHRvIGl0cyBub3JtYWwgcG9zaXRpb24uXG4gKiBAcHJvcGVydHkge251bWJlcn0gb2Zmc2V0WSBPZmZzZXQgb2YgdGhlIHRleHQgb24gdGhlIFkgYXhpcywgcmVsYXRpdmUgdG8gaXRzIG5vcm1hbCBwb3NpdGlvbi5cbiAqIEBwcm9wZXJ0eSB7SW1hZ2VEYXRhfSBwb3J0cmFpdCBTZXRzIHRoZSBwb3J0cmFpdCBpbWFnZSB0byB1c2Ugb24gdGhlIGxlZnQuIFRoaXMgZmllbGQgZXhwZWN0cyBhIGBQb3J0cmFpdGAgb2JqZWN0LlxuICogQHByb3BlcnR5IHtJbWFnZURhdGF9IGltYWdlIFNldHMgYSBzZWNvbmQgaW1hZ2UgdG8gdXNlIG9uIHRoZSByaWdodCBvZiB0aGUgZGlhbG9nLCBhbmQgc2xpZ2h0bHkgdXAuIFRoaXMgZmllbGQgZXhwZWN0cyBhbiBgSW1hZ2VEYXRhYCBvYmplY3QuXG4gKiBAcHJvcGVydHkge251bWJlcn0gdHlwZVNwZWVkIFRoZSB0ZXh0IGFwcGVhcnMgb25lIGNoYXJhY3RlciBhdCBhIHRpbWUsIHNpbXVsYXRpbmcgdHlwaW5nLiBQbGF5ZXJzIGNhbiBjbGljayB0byBza2lwIHRoZSBhbmltYXRpb24uIFR1bmUgdGhlIHNwZWVkIG9mIHRoaXMgdHlwaW5nICgzMCBieSBkZWZhdWx0KSB0byBnbyBzbG93ZXIgb3IgZmFzdGVyLiBTZXQgdG8gXy0xXyB0byBza2lwIHRoZSBhbmltYXRpb24uXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGlzUXVlc3Rpb24gSWYgdHJ1ZSwgYWxsb3dzIHRvIHVzZSBidXR0b25zIHRvIHRyaWdnZXIgZGlmZmVyZW50IGFjdGlvbnNcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gaXNGaXhlZFNjcmVlbiBJZiB0cnVlLCBoYXMgbm8gYnV0dG9ucyBvciBcIm5leHQgcGFnZVwiIGZ1bmN0aW9uYWxpdHlcbiAqIEBwcm9wZXJ0eSB7QnV0dG9uRGF0YVtdfSBidXR0b25zIEFuIGFycmF5IG9mIGJ1dHRvbnMgYEJ1dHRvbkRhdGFgIG9iamVjdHMgdG8gdXNlIGluIGEgcXVlc3Rpb24gZW50cnlcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhdWRpbyBQYXRoIHRvIHNvdW5kIGZpbGUgdG8gcGxheSB3aGVuIHRoZSBkaWFsb2cgaXMgc2hvd24gaW4gdGhlIFVJXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHNraXBhYmxlIElmIHRydWUsIGEgXCJTa2lwXCIgYnV0dG9uIG9uIHRoZSBVSSBsZXRzIHBsYXllcnMgc2tpcCB0byB0aGUgbmV4dCBub24tc2tpcGFibGUgZW50cnkuXG4gKiBAcHJvcGVydHkge251bWJlcn0gdGltZU9uIEhvdyBsb25nIHRvIGtlZXAgdGhlIHRleHQgdmlzaWJsZSBiZWZvcmUgbW92aW5nIG9uIHRvIHRoZSBuZXh0IGVudHJ5LiBPbmx5IGZvciBidWJibGUgZGlhbG9ncyFcbiAqXG4gKi9cbmV4cG9ydCB0eXBlIERpYWxvZyA9IHtcbiAgdGV4dDogc3RyaW5nXG4gIHdpbmRvd0hlaWdodD86ICdhdXRvJyB8IG51bWJlclxuICBuYW1lPzogc3RyaW5nXG4gIGZvbnRTaXplPzogbnVtYmVyXG4gIG9mZnNldFg/OiBudW1iZXJcbiAgb2Zmc2V0WT86IG51bWJlclxuICB0eXBlU3BlZWQ/OiBudW1iZXJcbiAgaXNFbmRPZkRpYWxvZz86IGJvb2xlYW5cbiAgdHJpZ2dlcmVkQnlOZXh0PzogKCkgPT4gdm9pZFxuICBwb3J0cmFpdD86IEltYWdlRGF0YVxuICBpbWFnZT86IEltYWdlRGF0YVxuICBpc1F1ZXN0aW9uPzogYm9vbGVhblxuICBpc0ZpeGVkU2NyZWVuPzogYm9vbGVhblxuICBidXR0b25zPzogQnV0dG9uRGF0YVtdXG4gIGF1ZGlvPzogc3RyaW5nXG4gIHNraXBhYmxlPzogYm9vbGVhblxuICB0aW1lT24/OiBudW1iZXJcbn1cblxuLyoqXG4gKlxuICogQHR5cGVkZWYge09iamVjdH0gVHJpZ2dlckRhdGEgLSBPYmplY3Qgd2l0aCBkYXRhIGZvciBhIE5QQ1RyaWdnZXJDb21wb25lbnRcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBsYXllciAgbGF5ZXIgb2YgdGhlIFRyaWdnZXIsIHVzZWZ1bCB0byBkaXNjcmltaW5hdGUgYmV0d2VlbiB0cmlnZ2VyIGV2ZW50cy4gWW91IGNhbiBzZXQgbXVsdGlwbGUgbGF5ZXJzIGJ5IHVzaW5nIGEgfCBzeW1ib2wuIGRlZmF1bHRzIHRvIE5PX0xBWUVSU1xuICogQHByb3BlcnR5IHtudW1iZXJ9IHRyaWdnZXJlZEJ5TGF5ZXIgYWdhaW5zdCB3aGljaCBsYXllcnMgdG8gY2hlY2sgY29sbGlzaW9ucy4gZGVmYXVsdHMgdG8gTEFZRVJfMVxuICogQHByb3BlcnR5IHsoZW50aXR5OiBFbnRpdHkpID0+IHZvaWQgfSBvblRyaWdnZXJFbnRlciBjYWxsYmFjayB3aGVuIGFuIGVudGl0eSBvZiBhIHZhbGlkIGxheWVyIGVudGVycyB0aGUgdHJpZ2dlciBhcmVhXG4gKiBAcHJvcGVydHkgeyhlbnRpdHk6IEVudGl0eSkgPT4gdm9pZH0gb25UcmlnZ2VyRXhpdCBjYWxsYmFjayB3aGVuIGFuIGVudGl0eSBvZiBhIHZhbGlkIGxheWVyIGxlYXZlcyB0aGUgdHJpZ2dlciBhcmVhXG4gKiBAcHJvcGVydHkgeygpID0+IHZvaWR9IG9uQ2FtZXJhRW50ZXIgY2FsbGJhY2sgd2hlbiB0aGUgcGxheWVyIGVudGVycyB0aGUgdHJpZ2dlciBhcmVhXG4gKiBAcHJvcGVydHkgeygpID0+IHZvaWR9IG9uQ2FtZXJhRXhpdCBjYWxsYmFjayB3aGVuIHRoZSBwbGF5ZXIgbGVhdmVzIHRoZSB0cmlnZ2VyIGFyZWFcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZW5hYmxlRGVidWcgd2hlbiB0cnVlIG1ha2VzIHRoZSB0cmlnZ2VyIGFyZWEgdmlzaWJsZSBmb3IgZGVidWcgcHVycG9zZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFRyaWdnZXJEYXRhID0ge1xuICBsYXllcj86IG51bWJlclxuICB0cmlnZ2VyZWRCeUxheWVyPzogbnVtYmVyXG4gIG9uVHJpZ2dlckVudGVyPzogKG90aGVyOiBFbnRpdHkpID0+IHZvaWRcbiAgb25UcmlnZ2VyRXhpdD86IChvdGhlcjogRW50aXR5KSA9PiB2b2lkXG4gIG9uQ2FtZXJhRW50ZXI/OiAob3RoZXI6IEVudGl0eSkgPT4gdm9pZFxuICBvbkNhbWVyYUV4aXQ/OiAob3RoZXI6IEVudGl0eSkgPT4gdm9pZFxuICBlbmFibGVEZWJ1Zz86IGJvb2xlYW5cbn1cblxuLyoqXG4gKiBEYXRhIGZvciBCdXR0b24gdG8gc2hvdyBvbiBhIHF1ZXN0aW9uIGluIGEgRGlhbG9nIGVudHJ5XG4gKlxuICogQHR5cGVkZWYge09iamVjdH0gQnV0dG9uRGF0YSAtIE9iamVjdCB3aXRoIGRhdGEgZm9yIGEgRGlhbG9nIFVJIGJ1dHRvblxuICogQHByb3BlcnR5IHtzdHJpbmd8bnVtYmVyfSBnb1RvRGlhbG9nIFRoZSBpbmRleCBvciBuYW1lIG9mIHRoZSBuZXh0IGRpYWxvZyBlbnRyeSB0byBkaXNwbGF5IHdoZW4gYWN0aXZhdGVkLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGxhYmVsIFRoZSBsYWJlbCB0byBzaG93IG9uIHRoZSBidXR0b24uXG4gKiBAcHJvcGVydHkgeygpID0+IHZvaWR9IHRyaWdnZXJlZEFjdGlvbnMgQW4gYWRkaXRpb25hbCBmdW5jdGlvbiB0byBydW4gd2hlbmV2ZXIgdGhlIGJ1dHRvbiBpcyBhY3RpdmF0ZWRcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBmb250U2l6ZSBGb250IHNpemUgb2YgdGhlIHRleHRcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfW9mZnNldFggT2Zmc2V0IG9mIHRoZSB0ZXh0IG9uIHRoZSBYIGF4aXMsIHJlbGF0aXZlIHRvIGl0cyBub3JtYWwgcG9zaXRpb24uXG4gKiBAcHJvcGVydHkge251bWJlcn0gb2Zmc2V0WSBPZmZzZXQgb2YgdGhlIHRleHQgb24gdGhlIFkgYXhpcywgcmVsYXRpdmUgdG8gaXRzIG5vcm1hbCBwb3NpdGlvbi5cbiAqXG4gKi9cbmV4cG9ydCB0eXBlIEJ1dHRvbkRhdGEgPSB7XG4gIGdvVG9EaWFsb2c6IG51bWJlciB8IHN0cmluZ1xuICBsYWJlbDogc3RyaW5nXG4gIHRyaWdnZXJlZEFjdGlvbnM/OiAoKSA9PiB2b2lkXG4gIGZvbnRTaXplPzogbnVtYmVyXG4gIG9mZnNldFg/OiBudW1iZXJcbiAgb2Zmc2V0WT86IG51bWJlclxuICBzaXplPzogbnVtYmVyIHwgJ2F1dG8nXG59XG5cbmV4cG9ydCBlbnVtIEJ1dHRvblN0eWxlcyB7XG4gIEUgPSBgZWAsXG4gIEYgPSBgZmAsXG4gIERBUksgPSBgZGFya2AsXG4gIFJFRCA9IGByZWRgLFxuICBST1VOREJMQUNLID0gYHJvdW5kYmxhY2tgLFxuICBST1VORFdISVRFID0gYHJvdW5kd2hpdGVgLFxuICBST1VORFNJTFZFUiA9IGByb3VuZHNpbHZlcmAsXG4gIFJPVU5ER09MRCA9IGByb3VuZGdvbGRgLFxuICBTUVVBUkVCTEFDSyA9IGBzcXVhcmVibGFja2AsXG4gIFNRVUFSRVdISVRFID0gYHNxdWFyZXdoaXRlYCxcbiAgU1FVQVJFU0lMVkVSID0gYHNxdWFyZXNpbHZlcmAsXG4gIFNRVUFSRUdPTEQgPSBgc3F1YXJlZ29sZGAsXG4gIFdISVRFID0gYHdoaXRlYFxufVxuXG4vKipcbiAqIEFuIE5QQyBjYXBhYmxlIG9mIGhhdmluZyBjb252ZXJzYXRpb25zIHdpdGggdGhlIHBsYXllciwgYW5kIHBsYXkgZGlmZmVyZW50IGFuaW1hdGlvbnMuXG4gKlxuICogQHR5cGVkZWYge09iamVjdH0gTlBDRGF0YSBPYmplY3Qgd2l0aCBkYXRhIHRvIGluc3RhbmNlIGEgbmV3IE5QQ1xuICogQHByb3BlcnR5IHtzdHJpbmd8SW1hZ2VEYXRhfSBwb3J0cmFpdCAyRCBpbWFnZSB0byBzaG93IG9uIHRoZSBsZWZ0LWhhbmQgc2lkZSBvZiB0aGUgZGlhbG9nIHdpbmRvdy4gVGhlIHN0cnVjdHVyZSBvZiBhbiBgSW1hZ2VEYXRhYCBvYmplY3QgaXMgZGVzY3JpYmVkIGluIGRldGFpbCBiZWxvdy5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSByZWFjdERpc3RhbmNlIFJhZGl1cyBpbiBtZXRlcnMgZm9yIHRoZSBwbGF5ZXIgdG8gYWN0aXZhdGUgdGhlIE5QQyBvciB0cmlnZ2VyIHRoZSBgb25XYWxrQXdheSgpYCBmdW5jdGlvbiB3aGVuIGxlYXZpbmcgdGhlIHJhZGl1cy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBpZGxlQW5pbSBOYW1lIG9mIHRoZSBpZGxlIGFuaW1hdGlvbiBpbiB0aGUgbW9kZWwuIFRoaXMgYW5pbWF0aW9uIGlzIGFsd2F5cyBsb29wZWQuIEFmdGVyIHBsYXlpbmcgYSBub24tbG9vcGluZyBhbmltYXRpb24gaXQgcmV0dXJucyB0byBsb29waW5nIHRoaXMgb25lLlxuICogQHByb3BlcnR5IHtib29sZWFufSBmYWNlVXNlciBTZXQgaWYgdGhlIE5QQyByb3RhdGVzIHRvIGZhY2UgdGhlIHVzZXIgd2hpbGUgYWN0aXZlLlxuICogQHByb3BlcnR5IHtib29sZWFufSBvbmx5RXh0ZXJuYWxUcmlnZ2VyIElmIHRydWUsIHRoZSBOUEMgY2FuJ3QgYmUgYWN0aXZhdGVkIGJ5IGNsaWNraW5nIG9yIHdhbGtpbmcgbmVhci4gSnVzdCBieSBjYWxsaW5nIGl0cyBgYWN0aXZhdGUoKWAgZnVuY3Rpb24uXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IG9ubHlDbGlja1RyaWdnZXIgSWYgdHJ1ZSwgdGhlIE5QQyBjYW4ndCBiZSBhY3RpdmF0ZWQgYnkgd2Fsa2luZyBuZWFyLiBKdXN0IGJ5IGNsaWNraW5nIG9uIGl0IG9yIGNhbGxpbmcgaXRzIGBhY3RpdmF0ZSgpYCBmdW5jdGlvbi5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gb25seUVUcmlnZ2VyIElmIHRydWUsIHRoZSBOUEMgY2FuJ3QgYmUgYWN0aXZhdGVkIGJ5IHdhbGtpbmcgbmVhci4gSnVzdCBieSBwcmVzc2luZyBFIG9uIGl0IG9yIGNhbGxpbmcgaXRzIGBhY3RpdmF0ZSgpYCBmdW5jdGlvbi5cbiAqIEBwcm9wZXJ0eSB7KCkgPT4gdm9pZH0gb25XYWxrQXdheSBGdW5jdGlvbiB0byBjYWxsIGV2ZXJ5IHRpbWUgdGhlIHBsYXllciB3YWxrcyBvdXQgb2YgdGhlIGByZWFjdERpc3RhbmNlYCByYWRpdXMuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGNvbnRpbnVlT25XYWxrQXdheSBmIHRydWUsd2hlbiB0aGUgcGxheWVyIHdhbGtzIG91dCBvZiB0aGUgYHJlYWN0RGlzdGFuY2VgIHJhZGl1cywgdGhlIGRpYWxvZyB3aW5kb3cgc3RheXMgb3BlbiBhbmQgdGhlIE5QQyBrZWVwcyB0dXJuaW5nIHRvIGZhY2UgdGhlIHBsYXllciAoaWYgYXBwbGljYWJsZSkuIEl0IGRvZXNuJ3QgYWZmZWN0IHRoZSB0cmlnZ2VyaW5nIG9mIHRoZSBgb25XYWxrQXdheSgpYCBmdW5jdGlvbi5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZGFya1VJIElmIHRydWUsIHRoZSBkaWFsb2cgVUkgdXNlcyB0aGUgZGFyayB0aGVtZS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBjb29sRG93bkR1cmF0aW9uIENoYW5nZSB0aGUgY29vbGRvd24gcGVyaW9kIGZvciBhY3RpdmF0aW5nIHRoZSBOUEMgYWdhaW4uIFRoZSBudW1iZXIgaXMgaW4gc2Vjb25kcy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBob3ZlclRleHQgU2V0IHRoZSBVSSBob3ZlciBmZWVkYmFjayB3aGVuIHBvaW50aW5nIHRoZSBjdXJzb3IgYXQgdGhlIE5QQy4gX1RBTEtfIGJ5IGRlZmF1bHQuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZGlhbG9nU291bmQgUGF0aCB0byBzb3VuZCBmaWxlIHRvIHBsYXkgb25jZSBmb3IgZXZlcnkgbGluZSBvZiBkaWFsb2cgcmVhZCBvbiB0aGUgVUkuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gd2Fsa2luZ0FuaW0gQW5pbWF0aW9uIHRvIHBsYXkgd2hlbiB3YWxraW5nIHdpdGggZm9sbG93UGF0aFxuICogQHByb3BlcnR5IHtudW1iZXJ9IHdhbGtpbmdTcGVlZCBEZWZhdWx0IHNwZWVkIHRvIHVzZSB3aGVuIHdhbGtpbmcgd2l0aCBmb2xsb3dQYXRoXG4gKiBAcHJvcGVydHkge1ZlY3RvcjNbXX0gcGF0aCBBcnJheSBvZiBWZWN0b3IzIHBvaW50cyByZXByZXNlbnRpbmcgdGhlIGRlZmF1bHQgcGF0aCB0byB3YWxrIG92ZXIuIFRoZSBOUEMgd2lsbCB3YWxrIGxvb3Bpbmcgb3ZlciB0aGVzZSBwb2ludHNcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gdGV4dEJ1YmJsZSBJZiB0cnVlLCB0aGUgTlBDIGNhbiBkaXNwbGF5IHRleHQgYnViYmxlcyB3aXRoIGRpYWxvZ3NcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBidWJibGVIZWlnaHQgVGhlIGRlZmF1bHQgaGVpZ2h0IHRvIGRpc3BsYXkgdGV4dCBidWJibGVzIG92ZXIgdGhlIE5QQydzIHBvc2l0aW9uXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IG5vVUkgSWYgdHJ1ZSwgbm8gVUkgZGlhbG9nIGVsZW1lbnRzIGFyZSBjb25zdHJ1Y3RlZC4gVGhlIE5QQyBjYW4gdXNlIHNwZWVjaCBidWJibGVzLlxuICpcbiAqL1xuXG5leHBvcnQgdHlwZSBOUENEYXRhID0ge1xuICB0eXBlOiBOUENUeXBlXG4gIGJvZHk/OiBOUENCb2R5VHlwZVxuICBtb2RlbD86IHN0cmluZyB8IFBCR2x0ZkNvbnRhaW5lciB8IFBCQXZhdGFyU2hhcGVcblxuICB3YWxraW5nQW5pbT86IHN0cmluZ1xuICBwb3J0cmFpdD86IHN0cmluZyB8IEltYWdlRGF0YVxuICByZWFjdERpc3RhbmNlPzogbnVtYmVyXG4gIGlkbGVBbmltPzogc3RyaW5nXG4gIGZhY2VVc2VyPzogYm9vbGVhblxuICB0dXJuaW5nU3BlZWQ/OiBudW1iZXJcbiAgb25seUV4dGVybmFsVHJpZ2dlcj86IGJvb2xlYW5cbiAgb25seUNsaWNrVHJpZ2dlcj86IGJvb2xlYW5cbiAgb25seUVUcmlnZ2VyPzogYm9vbGVhblxuICBvbkFjdGl2YXRlOiAob3RoZXI6IEVudGl0eSkgPT4gdm9pZFxuICBvbldhbGtBd2F5PzogKG90aGVyOiBFbnRpdHkpID0+IHZvaWRcbiAgY29udGludWVPbldhbGtBd2F5PzogYm9vbGVhblxuICBkYXJrVUk/OiBib29sZWFuXG4gIGNvb2xEb3duRHVyYXRpb24/OiBudW1iZXJcbiAgaG92ZXJUZXh0Pzogc3RyaW5nXG4gIGRpYWxvZ1NvdW5kPzogc3RyaW5nXG4gIC8vZGlhbG9nQ3VzdG9tVGhlbWU/OiBUZXh0dXJlXG4gIHRleHRCdWJibGU/OiBib29sZWFuXG4gIGJ1YmJsZUhlaWdodD86IG51bWJlclxuICBub1VJPzogYm9vbGVhblxuXG4gIHBhdGhEYXRhPzogRm9sbG93UGF0aERhdGFcblxuICBidWJibGVYT2Zmc2V0PzogbnVtYmVyXG4gIGJ1YmJsZVlPZmZzZXQ/OiBudW1iZXJcbn1cblxuLyoqXG4gKiBNYWtlIGFuIE5QQyB3YWxrIGZvbGxvd2luZyBhIHBhdGhcbiAqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBGb2xsb3dQYXRoRGF0YSAtIE9iamVjdCB3aXRoIGRhdGEgdG8gZGVzY3JpYmUgYSBwYXRoIHRoYXQgYW4gTlBDIGNhbiB3YWxrXG4gKiBAcHJvcGVydHkge1ZlY3RvcjNbXX0gcGF0aCBBcnJheSBvZiBgVmVjdG9yM2AgcG9zaXRpb25zIHRvIHdhbGsgb3Zlci5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBzcGVlZCBTcGVlZCB0byBtb3ZlIGF0IHdoaWxlIHdhbGtpbmcgdGhpcyBwYXRoLiBJZiBubyBgc3BlZWRgIG9yIGB0b3RhbER1cmF0aW9uYCBpcyBwcm92aWRlZCwgaXQgdXNlcyB0aGUgTlBDJ3MgYHdhbGtpbmdTcGVlZGAsIHdoaWNoIGlzIF8yXyBieSBkZWZhdWx0LlxuICogQHByb3BlcnR5IHtudW1iZXJ9IHRvdGFsRHVyYXRpb24gVGhlIGR1cmF0aW9uIGluIF9zZWNvbmRzXyB0aGF0IHRoZSB3aG9sZSBwYXRoIHNob3VsZCB0YWtlLiBUaGUgTlBDIHdpbGwgbW92ZSBhdCB0aGUgY29uc3RhbnQgc3BlZWQgcmVxdWlyZWQgdG8gZmluaXNoIGluIHRoYXQgdGltZS4gVGhpcyB2YWx1ZSBvdmVycmlkZXMgdGhhdCBvZiB0aGUgX3NwZWVkXy5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gbG9vcCBfYm9vbGVhbl8gSWYgdHJ1ZSwgdGhlIE5QQyB3YWxrcyBpbiBjaXJjbGVzIG92ZXIgdGhlIHByb3ZpZGVkIHNldCBvZiBwb2ludHMgaW4gdGhlIHBhdGguIF9mYWxzZV8gYnkgZGVmYXVsdCwgdW5sZXNzIHRoZSBOUEMgaXMgaW5pdGlhdGVkIHdpdGggYSBgcGF0aGAsIGluIHdoaWNoIGNhc2UgaXQgc3RhcnRzIGFzIF90cnVlXy5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gY3VydmUgX2Jvb2xlYW5fIElmIHRydWUsIHRoZSBwYXRoIGlzIHRyYWNlZCBhIHNpbmdsZSBzbW9vdGggY3VydmUgdGhhdCBwYXNzZXMgb3ZlciBlYWNoIG9mIHRoZSBpbmRpY2F0ZWQgcG9pbnRzLiBUaGUgY3VydmUgaXMgbWFkZSBvdXQgb2Ygc3RyYWlnaHQtbGluZSBzZWdtZW50cywgdGhlIHBhdGggaXMgc3RvcmVkIHdpdGggNCB0aW1lcyBhcyBtYW55IHBvaW50cyBhcyBvcmlnaW5hbGx5IGRlZmluZWQuIF9mYWxzZV8gYnkgZGVmYXVsdC5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBzdGFydGluZ1BvaW50IEluZGV4IHBvc2l0aW9uIGZvciB3aGF0IHBvaW50IHRvIHN0YXJ0IGZyb20gb24gdGhlIHBhdGguIF8wXyBieSBkZWZhdWx0LlxuICogQHByb3BlcnR5IHsoKSA9PiB2b2lkfSBvbkZpbmlzaENhbGxiYWNrIEZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgTlBDIGZpbmlzaGVkIHdhbGtpbmcgb3ZlciBhbGwgdGhlIHBvaW50cyBvbiB0aGUgcGF0aC4gVGhpcyBpcyBvbmx5IGNhbGxlZCB3aGVuIGBsb29wYCBpcyBfZmFsc2VfLlxuICogQHByb3BlcnR5IHsoKSA9PiB2b2lkfSBvblJlYWNoZWRQb2ludENhbGxiYWNrIEZ1bmN0aW9uIHRvIGNhbGwgb25jZSBldmVyeSB0aW1lIHRoZSBOUEMgcmVhY2hlcyBhIHBvaW50IGluIHRoZSBwYXRoLlxuICpcbiAqL1xuZXhwb3J0IHR5cGUgRm9sbG93UGF0aERhdGEgPSB7XG4gIHN0YXJ0aW5nUG9pbnQ/OiBudW1iZXJcbiAgbG9vcD86IGJvb2xlYW5cbiAgY3VydmU/OiBib29sZWFuXG4gIHRvdGFsRHVyYXRpb246IG51bWJlclxuICBzcGVlZD86IG51bWJlclxuICBwYXRoPzogVmVjdG9yM1tdXG4gIHBhdGhUeXBlPzogTlBDUGF0aFR5cGVcbiAgb25GaW5pc2hDYWxsYmFjaz86ICgpID0+IHZvaWRcbiAgb25SZWFjaGVkUG9pbnRDYWxsYmFjaz86ICgpID0+IHZvaWRcbn1cblxuLyoqXG4gKiBDdXQgb3V0IGEgc2VjdGlvbiBvZiBhbiBpbWFnZSBmaWxlXG4gKlxuICogQHR5cGVkZWYge09iamVjdH0gSW1hZ2VTZWN0aW9uIC0gT2JqZWN0IHdpdGggZGF0YSB0byBvbmx5IGRpc3BsYXkgYSBzZWN0aW9uIG9mIGFuIGltYWdlXG4gKiBAcHJvcGVydHkge251bWJlcn0gc291cmNlV2lkdGggV2lkdGggaW4gcGl4ZWxzIHRvIHNlbGVjdCBmcm9tIGltYWdlLCBzdGFydGluZyBmcm9tIHRoZSBzb3VyY2VMZWZ0LCBnb2luZyByaWdodFxuICogQHByb3BlcnR5IHtudW1iZXJ9IHNvdXJjZUhlaWdodCBIZWlnaHQgaW4gcGl4ZWxzIHRvIHNlbGVjdCBmcm9tIGltYWdlLCBzdGFydGluZyBmcm9tIHRoZSBzb3VyY2VUb3AsIGdvaW5nIGRvd25cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBzb3VyY2VMZWZ0IExlZnRtb3N0IHBpeGVsIHRvIHNlbGVjdCBmcm9tIGltYWdlXG4gKiBAcHJvcGVydHkge251bWJlcn0gc291cmNlVG9wIFRvcG1vc3QgcGl4ZWwgdG8gc2VsZWN0IGZyb20gaW1hZ2VcbiAqXG4gKi9cbmV4cG9ydCB0eXBlIEltYWdlU2VjdGlvbiA9IHtcbiAgc291cmNlV2lkdGg6IG51bWJlclxuICBzb3VyY2VIZWlnaHQ6IG51bWJlclxuICBzb3VyY2VMZWZ0PzogbnVtYmVyXG4gIHNvdXJjZVRvcD86IG51bWJlclxufVxuXG4vKipcbiAqXG4gKlxuICogQHR5cGVkZWYge09iamVjdH0gSW1hZ2VEYXRhIC0gT2JqZWN0IHdpdGggZGF0YSBmb3IgZGlzcGxheWluZyBhbiBpbWFnZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IHBhdGggUGF0aCB0byB0aGUgaW1hZ2UgZmlsZS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBvZmZzZXRYIE9mZnNldCBvbiBYLCByZWxhdGl2ZSB0byB0aGUgbm9ybWFsIHBvc2l0aW9uIG9mIHRoZSBpbWFnZS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBvZmZzZXRZIE9mZnNldCBvbiBZLCByZWxhdGl2ZSB0byB0aGUgbm9ybWFsIHBvc2l0aW9uIG9mIHRoZSBpbWFnZS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBoZWlnaHQgVGhlIGhlaWdodCB0byBzaG93IHRoZSBpbWFnZSBvbnNjcmVlbi5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB3aWR0aCBUaGUgd2lkdGggdG8gc2hvdyB0aGUgaW1hZ2Ugb25zY3JlZW4uXG4gKiBAcHJvcGVydHkge0ltYWdlU2VjdGlvbn0gc2VjdGlvbiBVc2Ugb25seSBhIHNlY3Rpb24gb2YgdGhlIGltYWdlIGZpbGUsIHVzZWZ1bCB3aGVuIGFycmFuZ2luZyBtdWx0aXBsZSBpY29ucyBpbnRvIGFuIGltYWdlIGF0bGFzLiBUaGlzIGZpZWxkIHRha2VzIGFuIGBJbWFnZVNlY3Rpb25gIG9iamVjdCwgc3BlY2lmeWluZyBgc291cmNlV2lkdGhgIGFuZCBgc291cmNlSGVpZ2h0YCwgYW5kIG9wdGlvbmFsbHkgYWxzbyBgc291cmNlTGVmdGAgYW5kIGBzb3VyY2VUb3BgLlxuICpcbiAqL1xuZXhwb3J0IHR5cGUgSW1hZ2VEYXRhID0ge1xuICBwYXRoOiBzdHJpbmdcbiAgb2Zmc2V0WD86IG51bWJlclxuICBvZmZzZXRZPzogbnVtYmVyXG4gIGhlaWdodD86IG51bWJlclxuICB3aWR0aD86IG51bWJlclxuICBzZWN0aW9uPzogSW1hZ2VTZWN0aW9uXG59XG5cbmV4cG9ydCBlbnVtIE5QQ1N0YXRlIHtcbiAgU1RBTkRJTkcgPSAnc3RhbmRpbmcnLFxuICBUQUxLSU5HID0gJ3RhbGtpbmcnLFxuICBGT0xMT1dQQVRIID0gJ2ZvbGxvd1BhdGgnXG4gIC8vRk9MTE9XUExBWUVSID0gJ2ZvbGxvd1BsYXllcidcbn1cblxuZXhwb3J0IGVudW0gTlBDQm9keVR5cGUge1xuICBNQUxFID0gJ0Jhc2VNYWxlJyxcbiAgRkVNQUxFID0gJ0Jhc2VGZW1hbGUnXG59XG5cbmV4cG9ydCBlbnVtIE5QQ1R5cGUge1xuICBCTEFOSyA9ICdibGFuaycsXG4gIENVU1RPTSA9ICdjdXN0b20nLFxuICBBVkFUQVIgPSAnYXZhdGFyJ1xufVxuXG5leHBvcnQgZW51bSBOUENQYXRoVHlwZSB7XG4gIFNNT09USF9QQVRIID0gJ3Ntb290aCcsIC8vd2lsbCBmb2xsb3cgdGhlIHBhdGggYnV0IGNhbiBjdXQgc2hhcnAgY29ybmVyc1xuICBSSUdJRF9QQVRIID0gJ3JpZ2lkJyAvL3dpbGwgZW5zdXJlIGVhY2ggY29ybmVyIGlzIGhpdFxufVxuIl19
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0ZBLE1BQU0sQ0FBTixJQUFZLFlBY1g7QUFkRCxXQUFZLFlBQVk7SUFDdEIsdUJBQU8sQ0FBQTtJQUNQLHVCQUFPLENBQUE7SUFDUCw2QkFBYSxDQUFBO0lBQ2IsMkJBQVcsQ0FBQTtJQUNYLHlDQUF5QixDQUFBO0lBQ3pCLHlDQUF5QixDQUFBO0lBQ3pCLDJDQUEyQixDQUFBO0lBQzNCLHVDQUF1QixDQUFBO0lBQ3ZCLDJDQUEyQixDQUFBO0lBQzNCLDJDQUEyQixDQUFBO0lBQzNCLDZDQUE2QixDQUFBO0lBQzdCLHlDQUF5QixDQUFBO0lBQ3pCLCtCQUFlLENBQUE7QUFDakIsQ0FBQyxFQWRXLFlBQVksS0FBWixZQUFZLFFBY3ZCO0FBK0hELE1BQU0sQ0FBTixJQUFZLFFBS1g7QUFMRCxXQUFZLFFBQVE7SUFDbEIsaUNBQXFCLENBQUE7SUFDckIsK0JBQW1CLENBQUE7SUFDbkIscUNBQXlCLENBQUE7QUFFM0IsQ0FBQyxFQUxXLFFBQVEsS0FBUixRQUFRLFFBS25CO0FBRUQsTUFBTSxDQUFOLElBQVksV0FHWDtBQUhELFdBQVksV0FBVztJQUNyQixnQ0FBaUIsQ0FBQTtJQUNqQixvQ0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBSFcsV0FBVyxLQUFYLFdBQVcsUUFHdEI7QUFFRCxNQUFNLENBQU4sSUFBWSxPQUlYO0FBSkQsV0FBWSxPQUFPO0lBQ2pCLDBCQUFlLENBQUE7SUFDZiw0QkFBaUIsQ0FBQTtJQUNqQiw0QkFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBSlcsT0FBTyxLQUFQLE9BQU8sUUFJbEI7QUFFRCxNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLHFDQUFzQixDQUFBO0lBQ3RCLG1DQUFvQixDQUFBO0FBQ3RCLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudGl0eSwgUEJBdmF0YXJTaGFwZSwgUEJHbHRmQ29udGFpbmVyIH0gZnJvbSAnQGRjbC9zZGsvZWNzJ1xuaW1wb3J0IHsgVmVjdG9yMyB9IGZyb20gJ0BkY2wvc2RrL21hdGgnXG5cbi8qKlxuICogRnJhZ21lbnQgb2YgYSBjb252ZXJzYXRpb24gd2l0aCBhbiBOUENcbiAqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBEaWFsb2cgLSBBbiBlbnRyeSBpbiBhbiBOUEMgY29udmVyc2F0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdGV4dCBUaGUgZGlhbG9nIHRleHRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBuYW1lIE9wdGlvbmFsIG5hbWUgb2YgdGhlIGRpYWxvZyBlbnRyeSwgdG8gbGluayBvdGhlciBlbnRyaWVzIHRvIHRoaXMgb25lIGFuZCBub3Qgd29ycnkgYWJvdXQgY2hhbmdlcyBpbiB0aGUgYXJyYXkgbGVuZ3RoXG4gKiBAcHJvcGVydHkge251bWJlcn0gZm9udFNpemUgU2l6ZSBvZiB0aGUgdGV4dFxuICogQHByb3BlcnR5IHtudW1iZXJ9IG9mZnNldFggT2Zmc2V0IG9mIHRoZSB0ZXh0IG9uIHRoZSBYIGF4aXMsIHJlbGF0aXZlIHRvIGl0cyBub3JtYWwgcG9zaXRpb24uXG4gKiBAcHJvcGVydHkge251bWJlcn0gb2Zmc2V0WSBPZmZzZXQgb2YgdGhlIHRleHQgb24gdGhlIFkgYXhpcywgcmVsYXRpdmUgdG8gaXRzIG5vcm1hbCBwb3NpdGlvbi5cbiAqIEBwcm9wZXJ0eSB7SW1hZ2VEYXRhfSBwb3J0cmFpdCBTZXRzIHRoZSBwb3J0cmFpdCBpbWFnZSB0byB1c2Ugb24gdGhlIGxlZnQuIFRoaXMgZmllbGQgZXhwZWN0cyBhIGBQb3J0cmFpdGAgb2JqZWN0LlxuICogQHByb3BlcnR5IHtJbWFnZURhdGF9IGltYWdlIFNldHMgYSBzZWNvbmQgaW1hZ2UgdG8gdXNlIG9uIHRoZSByaWdodCBvZiB0aGUgZGlhbG9nLCBhbmQgc2xpZ2h0bHkgdXAuIFRoaXMgZmllbGQgZXhwZWN0cyBhbiBgSW1hZ2VEYXRhYCBvYmplY3QuXG4gKiBAcHJvcGVydHkge251bWJlcn0gdHlwZVNwZWVkIFRoZSB0ZXh0IGFwcGVhcnMgb25lIGNoYXJhY3RlciBhdCBhIHRpbWUsIHNpbXVsYXRpbmcgdHlwaW5nLiBQbGF5ZXJzIGNhbiBjbGljayB0byBza2lwIHRoZSBhbmltYXRpb24uIFR1bmUgdGhlIHNwZWVkIG9mIHRoaXMgdHlwaW5nICgzMCBieSBkZWZhdWx0KSB0byBnbyBzbG93ZXIgb3IgZmFzdGVyLiBTZXQgdG8gXy0xXyB0byBza2lwIHRoZSBhbmltYXRpb24uXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGlzUXVlc3Rpb24gSWYgdHJ1ZSwgYWxsb3dzIHRvIHVzZSBidXR0b25zIHRvIHRyaWdnZXIgZGlmZmVyZW50IGFjdGlvbnNcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gaXNGaXhlZFNjcmVlbiBJZiB0cnVlLCBoYXMgbm8gYnV0dG9ucyBvciBcIm5leHQgcGFnZVwiIGZ1bmN0aW9uYWxpdHlcbiAqIEBwcm9wZXJ0eSB7QnV0dG9uRGF0YVtdfSBidXR0b25zIEFuIGFycmF5IG9mIGJ1dHRvbnMgYEJ1dHRvbkRhdGFgIG9iamVjdHMgdG8gdXNlIGluIGEgcXVlc3Rpb24gZW50cnlcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhdWRpbyBQYXRoIHRvIHNvdW5kIGZpbGUgdG8gcGxheSB3aGVuIHRoZSBkaWFsb2cgaXMgc2hvd24gaW4gdGhlIFVJXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHNraXBhYmxlIElmIHRydWUsIGEgXCJTa2lwXCIgYnV0dG9uIG9uIHRoZSBVSSBsZXRzIHBsYXllcnMgc2tpcCB0byB0aGUgbmV4dCBub24tc2tpcGFibGUgZW50cnkuXG4gKiBAcHJvcGVydHkge251bWJlcn0gdGltZU9uIEhvdyBsb25nIHRvIGtlZXAgdGhlIHRleHQgdmlzaWJsZSBiZWZvcmUgbW92aW5nIG9uIHRvIHRoZSBuZXh0IGVudHJ5LiBPbmx5IGZvciBidWJibGUgZGlhbG9ncyFcbiAqXG4gKi9cbmV4cG9ydCB0eXBlIERpYWxvZyA9IHtcbiAgdGV4dDogc3RyaW5nXG4gIHdpbmRvd0hlaWdodD86ICdhdXRvJyB8IG51bWJlclxuICBuYW1lPzogc3RyaW5nXG4gIGZvbnRTaXplPzogbnVtYmVyXG4gIG9mZnNldFg/OiBudW1iZXJcbiAgb2Zmc2V0WT86IG51bWJlclxuICB0eXBlU3BlZWQ/OiBudW1iZXJcbiAgaXNFbmRPZkRpYWxvZz86IGJvb2xlYW5cbiAgdHJpZ2dlcmVkQnlOZXh0PzogKCkgPT4gdm9pZFxuICBwb3J0cmFpdD86IEltYWdlRGF0YVxuICBpbWFnZT86IEltYWdlRGF0YVxuICBpc1F1ZXN0aW9uPzogYm9vbGVhblxuICBpc0ZpeGVkU2NyZWVuPzogYm9vbGVhblxuICBidXR0b25zPzogQnV0dG9uRGF0YVtdXG4gIGF1ZGlvPzogc3RyaW5nXG4gIHNraXBhYmxlPzogYm9vbGVhblxuICB0aW1lT24/OiBudW1iZXJcbn1cblxuLyoqXG4gKlxuICogQHR5cGVkZWYge09iamVjdH0gVHJpZ2dlckRhdGEgLSBPYmplY3Qgd2l0aCBkYXRhIGZvciBhIE5QQ1RyaWdnZXJDb21wb25lbnRcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBsYXllciAgbGF5ZXIgb2YgdGhlIFRyaWdnZXIsIHVzZWZ1bCB0byBkaXNjcmltaW5hdGUgYmV0d2VlbiB0cmlnZ2VyIGV2ZW50cy4gWW91IGNhbiBzZXQgbXVsdGlwbGUgbGF5ZXJzIGJ5IHVzaW5nIGEgfCBzeW1ib2wuIGRlZmF1bHRzIHRvIE5PX0xBWUVSU1xuICogQHByb3BlcnR5IHtudW1iZXJ9IHRyaWdnZXJlZEJ5TGF5ZXIgYWdhaW5zdCB3aGljaCBsYXllcnMgdG8gY2hlY2sgY29sbGlzaW9ucy4gZGVmYXVsdHMgdG8gTEFZRVJfMVxuICogQHByb3BlcnR5IHsoZW50aXR5OiBFbnRpdHkpID0+IHZvaWQgfSBvblRyaWdnZXJFbnRlciBjYWxsYmFjayB3aGVuIGFuIGVudGl0eSBvZiBhIHZhbGlkIGxheWVyIGVudGVycyB0aGUgdHJpZ2dlciBhcmVhXG4gKiBAcHJvcGVydHkgeyhlbnRpdHk6IEVudGl0eSkgPT4gdm9pZH0gb25UcmlnZ2VyRXhpdCBjYWxsYmFjayB3aGVuIGFuIGVudGl0eSBvZiBhIHZhbGlkIGxheWVyIGxlYXZlcyB0aGUgdHJpZ2dlciBhcmVhXG4gKiBAcHJvcGVydHkgeygpID0+IHZvaWR9IG9uQ2FtZXJhRW50ZXIgY2FsbGJhY2sgd2hlbiB0aGUgcGxheWVyIGVudGVycyB0aGUgdHJpZ2dlciBhcmVhXG4gKiBAcHJvcGVydHkgeygpID0+IHZvaWR9IG9uQ2FtZXJhRXhpdCBjYWxsYmFjayB3aGVuIHRoZSBwbGF5ZXIgbGVhdmVzIHRoZSB0cmlnZ2VyIGFyZWFcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZW5hYmxlRGVidWcgd2hlbiB0cnVlIG1ha2VzIHRoZSB0cmlnZ2VyIGFyZWEgdmlzaWJsZSBmb3IgZGVidWcgcHVycG9zZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFRyaWdnZXJEYXRhID0ge1xuICBsYXllcj86IG51bWJlclxuICB0cmlnZ2VyZWRCeUxheWVyPzogbnVtYmVyXG4gIG9uVHJpZ2dlckVudGVyPzogKG90aGVyOiBFbnRpdHkpID0+IHZvaWRcbiAgb25UcmlnZ2VyRXhpdD86IChvdGhlcjogRW50aXR5KSA9PiB2b2lkXG4gIG9uQ2FtZXJhRW50ZXI/OiAob3RoZXI6IEVudGl0eSkgPT4gdm9pZFxuICBvbkNhbWVyYUV4aXQ/OiAob3RoZXI6IEVudGl0eSkgPT4gdm9pZFxuICBlbmFibGVEZWJ1Zz86IGJvb2xlYW5cbn1cblxuLyoqXG4gKiBEYXRhIGZvciBCdXR0b24gdG8gc2hvdyBvbiBhIHF1ZXN0aW9uIGluIGEgRGlhbG9nIGVudHJ5XG4gKlxuICogQHR5cGVkZWYge09iamVjdH0gQnV0dG9uRGF0YSAtIE9iamVjdCB3aXRoIGRhdGEgZm9yIGEgRGlhbG9nIFVJIGJ1dHRvblxuICogQHByb3BlcnR5IHtzdHJpbmd8bnVtYmVyfSBnb1RvRGlhbG9nIFRoZSBpbmRleCBvciBuYW1lIG9mIHRoZSBuZXh0IGRpYWxvZyBlbnRyeSB0byBkaXNwbGF5IHdoZW4gYWN0aXZhdGVkLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGxhYmVsIFRoZSBsYWJlbCB0byBzaG93IG9uIHRoZSBidXR0b24uXG4gKiBAcHJvcGVydHkgeygpID0+IHZvaWR9IHRyaWdnZXJlZEFjdGlvbnMgQW4gYWRkaXRpb25hbCBmdW5jdGlvbiB0byBydW4gd2hlbmV2ZXIgdGhlIGJ1dHRvbiBpcyBhY3RpdmF0ZWRcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBmb250U2l6ZSBGb250IHNpemUgb2YgdGhlIHRleHRcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfW9mZnNldFggT2Zmc2V0IG9mIHRoZSB0ZXh0IG9uIHRoZSBYIGF4aXMsIHJlbGF0aXZlIHRvIGl0cyBub3JtYWwgcG9zaXRpb24uXG4gKiBAcHJvcGVydHkge251bWJlcn0gb2Zmc2V0WSBPZmZzZXQgb2YgdGhlIHRleHQgb24gdGhlIFkgYXhpcywgcmVsYXRpdmUgdG8gaXRzIG5vcm1hbCBwb3NpdGlvbi5cbiAqXG4gKi9cbmV4cG9ydCB0eXBlIEJ1dHRvbkRhdGEgPSB7XG4gIGdvVG9EaWFsb2c6IG51bWJlciB8IHN0cmluZ1xuICBsYWJlbDogc3RyaW5nXG4gIHRyaWdnZXJlZEFjdGlvbnM/OiAoKSA9PiB2b2lkXG4gIGZvbnRTaXplPzogbnVtYmVyXG4gIG9mZnNldFg/OiBudW1iZXJcbiAgb2Zmc2V0WT86IG51bWJlclxuICBzaXplPzogbnVtYmVyIHwgJ2F1dG8nXG59XG5cbmV4cG9ydCBlbnVtIEJ1dHRvblN0eWxlcyB7XG4gIEUgPSBgZWAsXG4gIEYgPSBgZmAsXG4gIERBUksgPSBgZGFya2AsXG4gIFJFRCA9IGByZWRgLFxuICBST1VOREJMQUNLID0gYHJvdW5kYmxhY2tgLFxuICBST1VORFdISVRFID0gYHJvdW5kd2hpdGVgLFxuICBST1VORFNJTFZFUiA9IGByb3VuZHNpbHZlcmAsXG4gIFJPVU5ER09MRCA9IGByb3VuZGdvbGRgLFxuICBTUVVBUkVCTEFDSyA9IGBzcXVhcmVibGFja2AsXG4gIFNRVUFSRVdISVRFID0gYHNxdWFyZXdoaXRlYCxcbiAgU1FVQVJFU0lMVkVSID0gYHNxdWFyZXNpbHZlcmAsXG4gIFNRVUFSRUdPTEQgPSBgc3F1YXJlZ29sZGAsXG4gIFdISVRFID0gYHdoaXRlYFxufVxuXG4vKipcbiAqIEFuIE5QQyBjYXBhYmxlIG9mIGhhdmluZyBjb252ZXJzYXRpb25zIHdpdGggdGhlIHBsYXllciwgYW5kIHBsYXkgZGlmZmVyZW50IGFuaW1hdGlvbnMuXG4gKlxuICogQHR5cGVkZWYge09iamVjdH0gTlBDRGF0YSBPYmplY3Qgd2l0aCBkYXRhIHRvIGluc3RhbmNlIGEgbmV3IE5QQ1xuICogQHByb3BlcnR5IHtzdHJpbmd8SW1hZ2VEYXRhfSBwb3J0cmFpdCAyRCBpbWFnZSB0byBzaG93IG9uIHRoZSBsZWZ0LWhhbmQgc2lkZSBvZiB0aGUgZGlhbG9nIHdpbmRvdy4gVGhlIHN0cnVjdHVyZSBvZiBhbiBgSW1hZ2VEYXRhYCBvYmplY3QgaXMgZGVzY3JpYmVkIGluIGRldGFpbCBiZWxvdy5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSByZWFjdERpc3RhbmNlIFJhZGl1cyBpbiBtZXRlcnMgZm9yIHRoZSBwbGF5ZXIgdG8gYWN0aXZhdGUgdGhlIE5QQyBvciB0cmlnZ2VyIHRoZSBgb25XYWxrQXdheSgpYCBmdW5jdGlvbiB3aGVuIGxlYXZpbmcgdGhlIHJhZGl1cy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBpZGxlQW5pbSBOYW1lIG9mIHRoZSBpZGxlIGFuaW1hdGlvbiBpbiB0aGUgbW9kZWwuIFRoaXMgYW5pbWF0aW9uIGlzIGFsd2F5cyBsb29wZWQuIEFmdGVyIHBsYXlpbmcgYSBub24tbG9vcGluZyBhbmltYXRpb24gaXQgcmV0dXJucyB0byBsb29waW5nIHRoaXMgb25lLlxuICogQHByb3BlcnR5IHtib29sZWFufSBmYWNlVXNlciBTZXQgaWYgdGhlIE5QQyByb3RhdGVzIHRvIGZhY2UgdGhlIHVzZXIgd2hpbGUgYWN0aXZlLlxuICogQHByb3BlcnR5IHtib29sZWFufSBvbmx5RXh0ZXJuYWxUcmlnZ2VyIElmIHRydWUsIHRoZSBOUEMgY2FuJ3QgYmUgYWN0aXZhdGVkIGJ5IGNsaWNraW5nIG9yIHdhbGtpbmcgbmVhci4gSnVzdCBieSBjYWxsaW5nIGl0cyBgYWN0aXZhdGUoKWAgZnVuY3Rpb24uXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IG9ubHlDbGlja1RyaWdnZXIgSWYgdHJ1ZSwgdGhlIE5QQyBjYW4ndCBiZSBhY3RpdmF0ZWQgYnkgd2Fsa2luZyBuZWFyLiBKdXN0IGJ5IGNsaWNraW5nIG9uIGl0IG9yIGNhbGxpbmcgaXRzIGBhY3RpdmF0ZSgpYCBmdW5jdGlvbi5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gb25seUVUcmlnZ2VyIElmIHRydWUsIHRoZSBOUEMgY2FuJ3QgYmUgYWN0aXZhdGVkIGJ5IHdhbGtpbmcgbmVhci4gSnVzdCBieSBwcmVzc2luZyBFIG9uIGl0IG9yIGNhbGxpbmcgaXRzIGBhY3RpdmF0ZSgpYCBmdW5jdGlvbi5cbiAqIEBwcm9wZXJ0eSB7KCkgPT4gdm9pZH0gb25XYWxrQXdheSBGdW5jdGlvbiB0byBjYWxsIGV2ZXJ5IHRpbWUgdGhlIHBsYXllciB3YWxrcyBvdXQgb2YgdGhlIGByZWFjdERpc3RhbmNlYCByYWRpdXMuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGNvbnRpbnVlT25XYWxrQXdheSBmIHRydWUsd2hlbiB0aGUgcGxheWVyIHdhbGtzIG91dCBvZiB0aGUgYHJlYWN0RGlzdGFuY2VgIHJhZGl1cywgdGhlIGRpYWxvZyB3aW5kb3cgc3RheXMgb3BlbiBhbmQgdGhlIE5QQyBrZWVwcyB0dXJuaW5nIHRvIGZhY2UgdGhlIHBsYXllciAoaWYgYXBwbGljYWJsZSkuIEl0IGRvZXNuJ3QgYWZmZWN0IHRoZSB0cmlnZ2VyaW5nIG9mIHRoZSBgb25XYWxrQXdheSgpYCBmdW5jdGlvbi5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZGFya1VJIElmIHRydWUsIHRoZSBkaWFsb2cgVUkgdXNlcyB0aGUgZGFyayB0aGVtZS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBjb29sRG93bkR1cmF0aW9uIENoYW5nZSB0aGUgY29vbGRvd24gcGVyaW9kIGZvciBhY3RpdmF0aW5nIHRoZSBOUEMgYWdhaW4uIFRoZSBudW1iZXIgaXMgaW4gc2Vjb25kcy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBob3ZlclRleHQgU2V0IHRoZSBVSSBob3ZlciBmZWVkYmFjayB3aGVuIHBvaW50aW5nIHRoZSBjdXJzb3IgYXQgdGhlIE5QQy4gX1RBTEtfIGJ5IGRlZmF1bHQuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZGlhbG9nU291bmQgUGF0aCB0byBzb3VuZCBmaWxlIHRvIHBsYXkgb25jZSBmb3IgZXZlcnkgbGluZSBvZiBkaWFsb2cgcmVhZCBvbiB0aGUgVUkuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gd2Fsa2luZ0FuaW0gQW5pbWF0aW9uIHRvIHBsYXkgd2hlbiB3YWxraW5nIHdpdGggZm9sbG93UGF0aFxuICogQHByb3BlcnR5IHtudW1iZXJ9IHdhbGtpbmdTcGVlZCBEZWZhdWx0IHNwZWVkIHRvIHVzZSB3aGVuIHdhbGtpbmcgd2l0aCBmb2xsb3dQYXRoXG4gKiBAcHJvcGVydHkge1ZlY3RvcjNbXX0gcGF0aCBBcnJheSBvZiBWZWN0b3IzIHBvaW50cyByZXByZXNlbnRpbmcgdGhlIGRlZmF1bHQgcGF0aCB0byB3YWxrIG92ZXIuIFRoZSBOUEMgd2lsbCB3YWxrIGxvb3Bpbmcgb3ZlciB0aGVzZSBwb2ludHNcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gdGV4dEJ1YmJsZSBJZiB0cnVlLCB0aGUgTlBDIGNhbiBkaXNwbGF5IHRleHQgYnViYmxlcyB3aXRoIGRpYWxvZ3NcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBidWJibGVIZWlnaHQgVGhlIGRlZmF1bHQgaGVpZ2h0IHRvIGRpc3BsYXkgdGV4dCBidWJibGVzIG92ZXIgdGhlIE5QQydzIHBvc2l0aW9uXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IG5vVUkgSWYgdHJ1ZSwgbm8gVUkgZGlhbG9nIGVsZW1lbnRzIGFyZSBjb25zdHJ1Y3RlZC4gVGhlIE5QQyBjYW4gdXNlIHNwZWVjaCBidWJibGVzLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IHZvbHVtZSBTZXRzIHRoZSB2b2x1bWUgb2YgdGhlIE5QQydzIGF1ZGlvXG4gKlxuICovXG5cbmV4cG9ydCB0eXBlIE5QQ0RhdGEgPSB7XG4gIHR5cGU6IE5QQ1R5cGVcbiAgYm9keT86IE5QQ0JvZHlUeXBlXG4gIG1vZGVsPzogc3RyaW5nIHwgUEJHbHRmQ29udGFpbmVyIHwgUEJBdmF0YXJTaGFwZVxuXG4gIHdhbGtpbmdBbmltPzogc3RyaW5nXG4gIHBvcnRyYWl0Pzogc3RyaW5nIHwgSW1hZ2VEYXRhXG4gIHJlYWN0RGlzdGFuY2U/OiBudW1iZXJcbiAgaWRsZUFuaW0/OiBzdHJpbmdcbiAgZmFjZVVzZXI/OiBib29sZWFuXG4gIHR1cm5pbmdTcGVlZD86IG51bWJlclxuICBvbmx5RXh0ZXJuYWxUcmlnZ2VyPzogYm9vbGVhblxuICBvbmx5Q2xpY2tUcmlnZ2VyPzogYm9vbGVhblxuICBvbmx5RVRyaWdnZXI/OiBib29sZWFuXG4gIG9uQWN0aXZhdGU6IChvdGhlcjogRW50aXR5KSA9PiB2b2lkXG4gIG9uV2Fsa0F3YXk/OiAob3RoZXI6IEVudGl0eSkgPT4gdm9pZFxuICBjb250aW51ZU9uV2Fsa0F3YXk/OiBib29sZWFuXG4gIGRhcmtVST86IGJvb2xlYW5cbiAgY29vbERvd25EdXJhdGlvbj86IG51bWJlclxuICBob3ZlclRleHQ/OiBzdHJpbmdcbiAgZGlhbG9nU291bmQ/OiBzdHJpbmdcbiAgLy9kaWFsb2dDdXN0b21UaGVtZT86IFRleHR1cmVcbiAgdGV4dEJ1YmJsZT86IGJvb2xlYW5cbiAgYnViYmxlSGVpZ2h0PzogbnVtYmVyXG4gIG5vVUk/OiBib29sZWFuXG5cbiAgcGF0aERhdGE/OiBGb2xsb3dQYXRoRGF0YVxuXG4gIGJ1YmJsZVhPZmZzZXQ/OiBudW1iZXJcbiAgYnViYmxlWU9mZnNldD86IG51bWJlclxuXG4gIHZvbHVtZTogYW55XG59XG5cbi8qKlxuICogTWFrZSBhbiBOUEMgd2FsayBmb2xsb3dpbmcgYSBwYXRoXG4gKlxuICogQHR5cGVkZWYge09iamVjdH0gRm9sbG93UGF0aERhdGEgLSBPYmplY3Qgd2l0aCBkYXRhIHRvIGRlc2NyaWJlIGEgcGF0aCB0aGF0IGFuIE5QQyBjYW4gd2Fsa1xuICogQHByb3BlcnR5IHtWZWN0b3IzW119IHBhdGggQXJyYXkgb2YgYFZlY3RvcjNgIHBvc2l0aW9ucyB0byB3YWxrIG92ZXIuXG4gKiBAcHJvcGVydHkge251bWJlcn0gc3BlZWQgU3BlZWQgdG8gbW92ZSBhdCB3aGlsZSB3YWxraW5nIHRoaXMgcGF0aC4gSWYgbm8gYHNwZWVkYCBvciBgdG90YWxEdXJhdGlvbmAgaXMgcHJvdmlkZWQsIGl0IHVzZXMgdGhlIE5QQydzIGB3YWxraW5nU3BlZWRgLCB3aGljaCBpcyBfMl8gYnkgZGVmYXVsdC5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB0b3RhbER1cmF0aW9uIFRoZSBkdXJhdGlvbiBpbiBfc2Vjb25kc18gdGhhdCB0aGUgd2hvbGUgcGF0aCBzaG91bGQgdGFrZS4gVGhlIE5QQyB3aWxsIG1vdmUgYXQgdGhlIGNvbnN0YW50IHNwZWVkIHJlcXVpcmVkIHRvIGZpbmlzaCBpbiB0aGF0IHRpbWUuIFRoaXMgdmFsdWUgb3ZlcnJpZGVzIHRoYXQgb2YgdGhlIF9zcGVlZF8uXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGxvb3AgX2Jvb2xlYW5fIElmIHRydWUsIHRoZSBOUEMgd2Fsa3MgaW4gY2lyY2xlcyBvdmVyIHRoZSBwcm92aWRlZCBzZXQgb2YgcG9pbnRzIGluIHRoZSBwYXRoLiBfZmFsc2VfIGJ5IGRlZmF1bHQsIHVubGVzcyB0aGUgTlBDIGlzIGluaXRpYXRlZCB3aXRoIGEgYHBhdGhgLCBpbiB3aGljaCBjYXNlIGl0IHN0YXJ0cyBhcyBfdHJ1ZV8uXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGN1cnZlIF9ib29sZWFuXyBJZiB0cnVlLCB0aGUgcGF0aCBpcyB0cmFjZWQgYSBzaW5nbGUgc21vb3RoIGN1cnZlIHRoYXQgcGFzc2VzIG92ZXIgZWFjaCBvZiB0aGUgaW5kaWNhdGVkIHBvaW50cy4gVGhlIGN1cnZlIGlzIG1hZGUgb3V0IG9mIHN0cmFpZ2h0LWxpbmUgc2VnbWVudHMsIHRoZSBwYXRoIGlzIHN0b3JlZCB3aXRoIDQgdGltZXMgYXMgbWFueSBwb2ludHMgYXMgb3JpZ2luYWxseSBkZWZpbmVkLiBfZmFsc2VfIGJ5IGRlZmF1bHQuXG4gKiBAcHJvcGVydHkge251bWJlcn0gc3RhcnRpbmdQb2ludCBJbmRleCBwb3NpdGlvbiBmb3Igd2hhdCBwb2ludCB0byBzdGFydCBmcm9tIG9uIHRoZSBwYXRoLiBfMF8gYnkgZGVmYXVsdC5cbiAqIEBwcm9wZXJ0eSB7KCkgPT4gdm9pZH0gb25GaW5pc2hDYWxsYmFjayBGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIE5QQyBmaW5pc2hlZCB3YWxraW5nIG92ZXIgYWxsIHRoZSBwb2ludHMgb24gdGhlIHBhdGguIFRoaXMgaXMgb25seSBjYWxsZWQgd2hlbiBgbG9vcGAgaXMgX2ZhbHNlXy5cbiAqIEBwcm9wZXJ0eSB7KCkgPT4gdm9pZH0gb25SZWFjaGVkUG9pbnRDYWxsYmFjayBGdW5jdGlvbiB0byBjYWxsIG9uY2UgZXZlcnkgdGltZSB0aGUgTlBDIHJlYWNoZXMgYSBwb2ludCBpbiB0aGUgcGF0aC5cbiAqXG4gKi9cbmV4cG9ydCB0eXBlIEZvbGxvd1BhdGhEYXRhID0ge1xuICBzdGFydGluZ1BvaW50PzogbnVtYmVyXG4gIGxvb3A/OiBib29sZWFuXG4gIGN1cnZlPzogYm9vbGVhblxuICB0b3RhbER1cmF0aW9uOiBudW1iZXJcbiAgc3BlZWQ/OiBudW1iZXJcbiAgcGF0aD86IFZlY3RvcjNbXVxuICBwYXRoVHlwZT86IE5QQ1BhdGhUeXBlXG4gIG9uRmluaXNoQ2FsbGJhY2s/OiAoKSA9PiB2b2lkXG4gIG9uUmVhY2hlZFBvaW50Q2FsbGJhY2s/OiAoKSA9PiB2b2lkXG59XG5cbi8qKlxuICogQ3V0IG91dCBhIHNlY3Rpb24gb2YgYW4gaW1hZ2UgZmlsZVxuICpcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEltYWdlU2VjdGlvbiAtIE9iamVjdCB3aXRoIGRhdGEgdG8gb25seSBkaXNwbGF5IGEgc2VjdGlvbiBvZiBhbiBpbWFnZVxuICogQHByb3BlcnR5IHtudW1iZXJ9IHNvdXJjZVdpZHRoIFdpZHRoIGluIHBpeGVscyB0byBzZWxlY3QgZnJvbSBpbWFnZSwgc3RhcnRpbmcgZnJvbSB0aGUgc291cmNlTGVmdCwgZ29pbmcgcmlnaHRcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBzb3VyY2VIZWlnaHQgSGVpZ2h0IGluIHBpeGVscyB0byBzZWxlY3QgZnJvbSBpbWFnZSwgc3RhcnRpbmcgZnJvbSB0aGUgc291cmNlVG9wLCBnb2luZyBkb3duXG4gKiBAcHJvcGVydHkge251bWJlcn0gc291cmNlTGVmdCBMZWZ0bW9zdCBwaXhlbCB0byBzZWxlY3QgZnJvbSBpbWFnZVxuICogQHByb3BlcnR5IHtudW1iZXJ9IHNvdXJjZVRvcCBUb3Btb3N0IHBpeGVsIHRvIHNlbGVjdCBmcm9tIGltYWdlXG4gKlxuICovXG5leHBvcnQgdHlwZSBJbWFnZVNlY3Rpb24gPSB7XG4gIHNvdXJjZVdpZHRoOiBudW1iZXJcbiAgc291cmNlSGVpZ2h0OiBudW1iZXJcbiAgc291cmNlTGVmdD86IG51bWJlclxuICBzb3VyY2VUb3A/OiBudW1iZXJcbn1cblxuLyoqXG4gKlxuICpcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEltYWdlRGF0YSAtIE9iamVjdCB3aXRoIGRhdGEgZm9yIGRpc3BsYXlpbmcgYW4gaW1hZ2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwYXRoIFBhdGggdG8gdGhlIGltYWdlIGZpbGUuXG4gKiBAcHJvcGVydHkge251bWJlcn0gb2Zmc2V0WCBPZmZzZXQgb24gWCwgcmVsYXRpdmUgdG8gdGhlIG5vcm1hbCBwb3NpdGlvbiBvZiB0aGUgaW1hZ2UuXG4gKiBAcHJvcGVydHkge251bWJlcn0gb2Zmc2V0WSBPZmZzZXQgb24gWSwgcmVsYXRpdmUgdG8gdGhlIG5vcm1hbCBwb3NpdGlvbiBvZiB0aGUgaW1hZ2UuXG4gKiBAcHJvcGVydHkge251bWJlcn0gaGVpZ2h0IFRoZSBoZWlnaHQgdG8gc2hvdyB0aGUgaW1hZ2Ugb25zY3JlZW4uXG4gKiBAcHJvcGVydHkge251bWJlcn0gd2lkdGggVGhlIHdpZHRoIHRvIHNob3cgdGhlIGltYWdlIG9uc2NyZWVuLlxuICogQHByb3BlcnR5IHtJbWFnZVNlY3Rpb259IHNlY3Rpb24gVXNlIG9ubHkgYSBzZWN0aW9uIG9mIHRoZSBpbWFnZSBmaWxlLCB1c2VmdWwgd2hlbiBhcnJhbmdpbmcgbXVsdGlwbGUgaWNvbnMgaW50byBhbiBpbWFnZSBhdGxhcy4gVGhpcyBmaWVsZCB0YWtlcyBhbiBgSW1hZ2VTZWN0aW9uYCBvYmplY3QsIHNwZWNpZnlpbmcgYHNvdXJjZVdpZHRoYCBhbmQgYHNvdXJjZUhlaWdodGAsIGFuZCBvcHRpb25hbGx5IGFsc28gYHNvdXJjZUxlZnRgIGFuZCBgc291cmNlVG9wYC5cbiAqXG4gKi9cbmV4cG9ydCB0eXBlIEltYWdlRGF0YSA9IHtcbiAgcGF0aDogc3RyaW5nXG4gIG9mZnNldFg/OiBudW1iZXJcbiAgb2Zmc2V0WT86IG51bWJlclxuICBoZWlnaHQ/OiBudW1iZXJcbiAgd2lkdGg/OiBudW1iZXJcbiAgc2VjdGlvbj86IEltYWdlU2VjdGlvblxufVxuXG5leHBvcnQgZW51bSBOUENTdGF0ZSB7XG4gIFNUQU5ESU5HID0gJ3N0YW5kaW5nJyxcbiAgVEFMS0lORyA9ICd0YWxraW5nJyxcbiAgRk9MTE9XUEFUSCA9ICdmb2xsb3dQYXRoJ1xuICAvL0ZPTExPV1BMQVlFUiA9ICdmb2xsb3dQbGF5ZXInXG59XG5cbmV4cG9ydCBlbnVtIE5QQ0JvZHlUeXBlIHtcbiAgTUFMRSA9ICdCYXNlTWFsZScsXG4gIEZFTUFMRSA9ICdCYXNlRmVtYWxlJ1xufVxuXG5leHBvcnQgZW51bSBOUENUeXBlIHtcbiAgQkxBTksgPSAnYmxhbmsnLFxuICBDVVNUT00gPSAnY3VzdG9tJyxcbiAgQVZBVEFSID0gJ2F2YXRhcidcbn1cblxuZXhwb3J0IGVudW0gTlBDUGF0aFR5cGUge1xuICBTTU9PVEhfUEFUSCA9ICdzbW9vdGgnLCAvL3dpbGwgZm9sbG93IHRoZSBwYXRoIGJ1dCBjYW4gY3V0IHNoYXJwIGNvcm5lcnNcbiAgUklHSURfUEFUSCA9ICdyaWdpZCcgLy93aWxsIGVuc3VyZSBlYWNoIGNvcm5lciBpcyBoaXRcbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dcl-npc-toolkit",
3
- "version": "1.5.2-20251229114702.commit-02ef366",
3
+ "version": "1.5.2-20251229114921.commit-4a0a155",
4
4
  "description": "A collection of tools for creating Non-Player-Characters (NPCs). These are capable of having conversations with the player, and play different animations.",
5
5
  "main": "./dist/index.js",
6
6
  "typings": "./dist/index.d.ts",
@@ -36,5 +36,5 @@
36
36
  "dependencies": {
37
37
  "@dcl/js-runtime": "latest"
38
38
  },
39
- "commit": "02ef3662ba4c2304268c2a93c3d758dff97c0197"
39
+ "commit": "4a0a1552ffd7da70d417612d7d640a441e152b0b"
40
40
  }