dcl-npc-toolkit 1.5.1 → 1.5.2-20251229114702.commit-02ef366

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
@@ -17,7 +17,7 @@ Capabilities of the NPCs in this library:
17
17
  The dialog messages can also require that the player chooses options, and any action can be triggered when the player picks an option or advances past a message.
18
18
 
19
19
  ## Install the library
20
-
20
+ <!--
21
21
  ## Via the Decentraland Editor
22
22
 
23
23
  Follow the steps in [Manage Dependencies](https://docs.decentraland.org/creator/development-guide/sdk7/libraries/manage-dependencies/#via-the-editor) with Visual Studio Code open on your project folder.
@@ -68,7 +68,7 @@ export let ILoveCats: Dialog[] = [
68
68
  },
69
69
  ]
70
70
  ```
71
-
71
+ -->
72
72
  ## Via the CLI
73
73
 
74
74
  1. Install the library as an npm bundle. Run this command in your scene's project folder:
@@ -177,6 +177,31 @@ With this default configuration, the NPC behaves in the following way:
177
177
 
178
178
  Many of these behaviors can be overridden or tweaked with the exposed properties.
179
179
 
180
+ ### Attach NPC behaviors to an existing entity
181
+
182
+ If you already created an entity with a Transform and (for CUSTOM NPCs) a GltfContainer, you can reuse it with `createFromEntity`:
183
+
184
+ ```ts
185
+ import { engine, Transform, GltfContainer } from '@dcl/sdk/ecs'
186
+ import { Vector3 } from '@dcl/sdk/math'
187
+ import { createFromEntity, NPCType } from 'dcl-npc-toolkit'
188
+
189
+ const npcEntity = engine.addEntity()
190
+ Transform.create(npcEntity, { position: Vector3.create(8, 0, 8) })
191
+ GltfContainer.create(npcEntity, { src: 'models/npc.glb' })
192
+
193
+ createFromEntity(npcEntity, {
194
+ type: NPCType.CUSTOM,
195
+ idleAnim: 'Idle',
196
+ walkingAnim: 'Walk',
197
+ onActivate: () => {
198
+ // ...
199
+ },
200
+ textBubble: true,
201
+ bubbleHeight: 2
202
+ })
203
+ ```
204
+
180
205
  ## SDK7 UI
181
206
 
182
207
  With sdk7, there are new ways to implement similar features from sdk6, one of them being the way 2D UI objects get created. To add the NPC dialogs to your sdk7 2D UI:
package/dist/bubble.js CHANGED
@@ -359,4 +359,4 @@ export function getBubbleTextLength(text) {
359
359
  return 40;
360
360
  }
361
361
  }
362
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnViYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2J1YmJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQVksV0FBVyxFQUFlLFNBQVMsRUFBaUIsTUFBTSxFQUEyQyxRQUFRLEVBQWMsWUFBWSxFQUFtQyxTQUFTLEVBQUMsU0FBUyxFQUFpQixtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUcxUSxPQUFPLEVBQVMsTUFBTSxFQUFjLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFpQixnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUN4RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQzdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUV4QyxNQUFNLENBQUMsSUFBSSxjQUFjLEdBQUcsdURBQXVELENBQUE7QUFFbkYsTUFBTSxDQUFDLElBQUksT0FBTyxHQUFxQixJQUFJLEdBQUcsRUFBRSxDQUFBO0FBRWhELElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQTtBQUNoQixJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUE7QUFFaEIsSUFBSSxvQkFBb0IsR0FBRyxDQUFDLENBQUE7QUFDNUIsSUFBSSxxQkFBcUIsR0FBRyxFQUFFLENBQUE7QUFDOUIsSUFBSSxtQkFBbUIsR0FBRyxFQUFFLENBQUE7QUFDNUIsSUFBSSxtQkFBbUIsR0FBRyxHQUFHLENBQUE7QUFFN0IsSUFBSSxrQkFBa0IsR0FBRyxHQUFHLENBQUE7QUFDNUIsSUFBSSxtQkFBbUIsR0FBRyxHQUFHLENBQUE7QUFDN0IsSUFBSSxpQkFBaUIsR0FBRyxHQUFHLENBQUE7QUFDM0IsSUFBSSxpQkFBaUIsR0FBRyxHQUFHLENBQUE7QUFFM0IsSUFBSSxrQkFBa0IsR0FBRyxDQUFDLEdBQUcsQ0FBQTtBQUM3QixJQUFJLG1CQUFtQixHQUFHLENBQUMsR0FBRyxD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Q2pCLFNBQVMsRUFBRSxHQUFHLEdBQUcsQ0FBQztLQUNuQjtJQUNELElBQUksRUFBRTtRQUNKLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQztRQUNwQixZQUFZLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFDckIsVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDO1FBQ2pCLFNBQVMsRUFBRSxHQUFHLEdBQUcsQ0FBQztLQUNuQjtJQUNELElBQUksRUFBRTtRQUNKLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQztRQUNwQixZQUFZLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFDckIsVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDO1FBQ2pCLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztLQUNqQjtDQUNKLENBQUE7QUFHRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsSUFBVztJQUMzQyxJQUFHLElBQUksQ0FBQyxNQUFNLElBQUksbUJBQW1CLEVBQUMsQ0FBQztRQUNuQyxPQUFPLEVBQUUsQ0FBQTtJQUNiLENBQUM7U0FDSSxJQUFHLElBQUksQ0FBQyxNQUFNLElBQUksbUJBQW1CLEVBQUMsQ0FBQztRQUN4QyxPQUFPLEVBQUUsQ0FBQTtJQUNiLENBQUM7U0FDSSxJQUFHLElBQUksQ0FBQyxNQUFNLElBQUkscUJBQXFCLEVBQUMsQ0FBQztRQUMxQyxPQUFPLEVBQUUsQ0FBQTtJQUNiLENBQUM7U0FDSSxJQUFHLElBQUksQ0FBQyxNQUFNLElBQUksb0JBQW9CLEVBQUMsQ0FBQztRQUN6QyxPQUFPLEVBQUUsQ0FBQTtJQUNiLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBBbmltYXRvciwgQXVkaW9Tb3VyY2UsIEF2YXRhclNoYXBlLCBCaWxsYm9hcmQsIEJpbGxib2FyZE1vZGUsIGVuZ2luZSwgRW50aXR5LCBGb250LCBHbHRmQ29udGFpbmVyLCBJbnB1dEFjdGlvbixNYXRlcmlhbCxNZXNoQ29sbGlkZXIsTWVzaFJlbmRlcmVyLHBvaW50ZXJFdmVudHNTeXN0ZW0sVGV4dEFsaWduTW9kZSxUZXh0U2hhcGUsVHJhbnNmb3JtLCBUcmFuc2Zvcm1UeXBlLCBWaXNpYmlsaXR5Q29tcG9uZW50IH0gZnJvbSAnQGRjbC9zZGsvZWNzJ1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnQGRjbC1zZGsvdXRpbHMnXG5pbXBvcnQgeyBEaWFsb2csIEltYWdlU2VjdGlvbiB9IGZyb20gJy4vdHlwZXMnXG5pbXBvcnQgeyBDb2xvcjMsQ29sb3I0LCBRdWF0ZXJuaW9uLCBWZWN0b3IzIH0gZnJvbSAnQGRjbC9zZGsvbWF0aCdcbmltcG9ydCB7IGFkZExpbmVCcmVhaywgYWRkTGluZUJyZWFrcywgZmluZERpYWxvZ0J5TmFtZSB9IGZyb20gJy4vZGlhbG9nJ1xuaW1wb3J0IHsgSXNUeXBpbmdCdWJibGUgfSBmcm9tICcuL2NvbXBvbmVudHMnXG5pbXBvcnQgeyBucGNEYXRhQ29tcG9uZW50IH0gZnJvbSAnLi9ucGMnXG5cbmV4cG9ydCBsZXQgYnViYmxlc1RleHR1cmUgPSAnaHR0cHM6Ly9kZWNlbnRyYWxhbmQub3JnL2ltYWdlcy91aS9kaWFsb2ctYnViYmxlcy5wbmcnXG5cbmV4cG9ydCBsZXQgYnViYmxlczogTWFwPEVudGl0eSwgYW55PiA9IG5ldyBNYXAoKVxuXG5sZXQgdGV4dFNpemUgPSAxXG5sZXQgdGV4dFlQb3MgPSAwICAgIFxuXG5sZXQgbWF4TGVuZ3RoU2hvcnRCdWJibGUgPSA4XG5sZXQgbWF4TGVuZ3RoTm9ybWFsQnViYmxlID0gMjVcbmxldCBtYXhMZW5ndGhMb25nQnViYmxlID0gNTBcbmxldCBtYXhMZW5ndGhIdWdlQnViYmxlID0gMTAwXG5cbmxldCBzaG9ydEJ1YmJsZVhPZmZzZXQgPSAwLjFcbmxldCBub3JtYWxCdWJibGVYT2Zmc2V0ID0gMC41XG5sZXQgbG9uZ0J1YmJsZVhPZmZzZXQgPSAwLjhcbmxldCBodWdlQnViYmxlWE9mZnNldCA9IDAuOFxuXG5sZXQgc2hvcnRCdWJibGVZT2Zmc2V0ID0gLTAuMlxubGV0IG5vcm1hbEJ1YmJsZVlPZmZzZXQgPSAtMC4yXG5sZXQgbG9uZ0J1YmJsZVlPZmZzZXQgPSAwXG5sZXQgaHVnZUJ1YmJsZVlPZmZzZXQgPSAwLjJcblxubGV0IHNob3J0QnViYmxlVGV4dFdpZHRoID0gMC43XG5sZXQgbm9ybWFsQnViYmxlVGV4dFdpZHRoID0gMS41XG5sZXQgbG9uZ0J1YmJsZVRleHRXaWR0aCA9IDJcbmxldCBodWdlQnViYmxlVGV4dFdpZHRoID0gMS41XG5cbmxldCBzaG9ydEJ1YmJsZVggPSAxMTYgKiAwLjAwNVxubGV0IHNob3J0QnViYmxlWSA9IDg0ICogMC4wMDVcblxubGV0IG5vcm1hbEJ1YmJsZVggPSAyODYgKiAwLjAwNVxubGV0IG5vcm1hbEJ1YmJsZVkgPSA4NCAqIDAuMDA1XG5cbmxldCBsb25nQnViYmxlWCA9IDQ5NyAqIDAuMDA1XG5sZXQgbG9uZ0J1YmJsZVkgPSAxNTMgKiAwLjAwNVxuXG5sZXQgaHVnZUJ1YmJsZVggPSA0OTcgKiAwLjAwNVxubGV0IGh1Z2VCdWJibGVZID0gMjM5ICogMC4wMDVcblxubGV0IGRlZmF1bHRZT2Zmc2V0ID0gMi41XG5cblxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGlhbG9nQnViYmxlKG5wYzpFbnRpdHksIGhlaWdodD86bnVtYmVyLCBzb3VuZD86c3RyaW5nKXtcbiAgICBsZXQgYmFzZVlPZmZzZXQgPSBoZWlnaHQgPyBoZWlnaHQgOiBkZWZhdWx0WU9mZnNldFxuXG4gICAgbGV0IHJvb3QgPSBlbmdpbmUuYWRkRW50aXR5KClcbiAgICBCaWxsYm9hcmQuY3JlYXRlKHJvb3Qse1xuICAgICAgICBiaWxsYm9hcmRNb2RlOkJpbGxib2FyZE1vZGUuQk1fWVxuICAgIH0pXG5cbiAgICBUcmFuc2Zvcm0uY3JlYXRlKHJvb3Qse1xuICAgICAgICBwYXJlbnQ6bnBjXG4gICAgfSlcblxuICAgIGxldCBjb250YWluZXIgPSBlbmdpbmUuYWRkRW50aXR5KClcbiAgICBUcmFuc2Zvcm0uY3JlYXRlKGNvbnRhaW5lcix7XG4gICAgICAgIHBhcmVudDpyb290LFxuICAgICAgICBwb3NpdGlvbjpWZWN0b3IzLmNyZWF0ZShzaG9ydEJ1YmJsZVhPZmZzZXQsYmFzZVlPZmZzZXQsMClcbiAgICB9KVxuXG4gICAgbGV0IHBhbmVsID0gZW5naW5lLmFkZEVudGl0eSgpXG4gICAgVHJhbnNmb3JtLmNyZWF0ZShwYW5lbCx7XG4gICAgICAgIHBhcmVudDpjb250YWluZXIsXG4gICAgICAgIHNjYWxlOiBWZWN0b3IzLmNyZWF0ZSgyLDEsMSksXG4gICAgICAgIC8vcm90YXRpb246UXVhdGVybmlvbi5mcm9tRXVsZXJEZWdyZWVzKDAsMCw5MClcbiAgICB9KVxuICAgIE1lc2hSZW5kZXJlci5zZXRQbGFuZShwYW5lbCxcbiAgICAgICAgc2V0VVZTZWN0aW9uKFxuICAgICAgICBidWJibGVPcHRpb25zLm5vcm1hbCxcbiAgICAgICAgMTAyNCxcbiAgICAgICAgMTAyNFxuICAgICAgKSlcblxuICAgIFZpc2liaWxpdHlDb21wb25lbnQuY3JlYXRlKHBhbmVsLCB7dmlzaWJsZTogZmFsc2V9KVxuXG4gICAgTWF0ZXJpYWwuc2V0QmFzaWNNYXRlcmlhbChwYW5lbCwge1xuICAgICAgICB0ZXh0dXJlOiBNYXRlcmlhbC5UZXh0dXJlLkNvbW1vbih7XG4gICAgICAgICAgc3JjOiBidWJibGVzVGV4dHVyZVxuICAgICAgICB9KSxcbiAgICAgICAgYWxwaGFUZXh0dXJlOiBNYXRlcmlhbC5UZXh0dXJlLkNvbW1vbih7XG4gICAgICAgICAgc3JjOiBidWJibGVzVGV4dHVyZVxuICAgICAgICB9KSxcbiAgICAgICAgYWxwaGFUZXN0OiAwLjVcbiAgICAgIH0pXG5cbiAgICBsZXQgdGV4dCA9IGVuZ2luZS5hZGRFbnRpdHkoKVxuICAgIFRyYW5zZm9ybS5jcmVhdGUodGV4dCx7XG4gICAgICAgIHBvc2l0aW9uOlZlY3RvcjMuY3JlYXRlKDAsdGV4dFlQb3MsIC0uMDUpLFxuICAgICAgICBwYXJlbnQ6Y29udGFpbmVyXG4gICAgfSlcbiAgICBUZXh0U2hhcGUuY3JlYXRlKHRleHQsIHtcbiAgICAgICAgdGV4dDpcIlwiLCBcbiAgICAgICAgZm9udFNpemU6dGV4dFNpemUsXG4gICAgICAgIGZvbnQ6IEZvbnQuRl9TQU5TX1NFUklGLFxuICAgICAgICB0ZXh0Q29sb3I6IENvbG9yNC5jcmVhdGUoMCwwLDAsMSksXG4gICAgICAgIHRleHRBbGlnbjpUZXh0QWxpZ25Nb2RlLlRBTV9NSURETEVfQ0VOVEVSXG4gICAgfSlcbiAgICBWaXNpYmlsaXR5Q29tcG9uZW50LmNyZWF0ZSh0ZXh0LCB7dmlzaWJsZTogZmFsc2V9KVxuXG4gICAgYnViYmxlcy5zZXQobnBjLCB7XG4gICAgICAgIGNvbnRhaW5lcjpjb250YWluZXIsXG4gICAgICAgIHBhbmVsOnBhbmVsLFxuICAgICAgICB0ZXh0OnRleHQsXG4gICAgICAgIGJhc2VZT2Zmc2V0OiBiYXNlWU9mZnNldCxcbiAgICAgICAgaXNCdWJibGVPcGVuOmZhbHNlLFxuICAgICAgICB0eXBpbmc6ZmFsc2UsXG4gICAgICAgIHZpc2libGVUZXh0OlwiXCIsXG4gICAgICAgIHZpc2libGVDaGFyczowLFxuICAgICAgICBmdWxsVGV4dDpcIlwiLFxuICAgICAgICB0aW1lcjowLFxuICAgICAgICBzcGVlZDozMCxcbiAgICAgICAgc2NyaXB0OltdLFxuICAgICAgICBpbmRleDowLFxuICAgICAgICBzb3VuZDogc291bmQgPyBzb3VuZCA6IHVuZGVmaW5lZCxcbiAgICAgICAgc291bmRQbGF5ZXI6IHNvdW5kID8gZW5naW5lLmFkZEVudGl0eSgpIDogdW5kZWZpbmVkLFxuICAgIH0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvcGVuQnViYmxlKG5wYzpFbnRpdHksIGRpYWxvZzpEaWFsb2dbXSwgc3RhcnRJbmRleD86bnVtYmVyIHwgc3RyaW5nKXtcbiAgICBsZXQgYnViYmxlID0gYnViYmxlcy5nZXQobnBjKVxuXG4gICAgYnViYmxlLnNjcmlwdCA9IGRpYWxvZy5zbGljZSgpXG4gICAgbGV0IGluZGV4OmFueVxuICAgIGlmICghc3RhcnRJbmRleCkge1xuICAgICAgaW5kZXggPSAwXG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygc3RhcnRJbmRleCA9PT0gJ251bWJlcicpIHtcbiAgICAgIGluZGV4ID0gc3RhcnRJbmRleFxuICAgIH0gZWxzZSB7XG4gICAgICBpbmRleCA9IGZpbmREaWFsb2dCeU5hbWUoZGlhbG9nLCBzdGFydEluZGV4KVxuICAgIH1cblxuICAgIGJ1YmJsZS5pbmRleCA9IGluZGV4XG4gICAgXG4gICAgbGV0IGN1cnJlbnRUZXh0OiBEaWFsb2cgPSBkaWFsb2dbYnViYmxlLmluZGV4XSA/IGRpYWxvZ1tidWJibGUuaW5kZXhdIDogeyB0ZXh0OiAnJyB9XG4gICAgYnViYmxlLmN1cnJlbnRUZXh0ID0gY3VycmVudFRleHRcblxuICAgIGlmIChjdXJyZW50VGV4dC5hdWRpbykge1xuICAgICAgICBBdWRpb1NvdXJjZS5jcmVhdGVPclJlcGxhY2UoYnViYmxlLnNvdW5kUGxheWVyLCB7XG4gICAgICAgICAgICBhdWRpb0NsaXBVcmw6IGN1cnJlbnRUZXh0LmF1ZGlvLFxuICAgICAgICAgICAgbG9vcDogZmFsc2UsXG4gICAgICAgICAgICBwbGF5aW5nOiBmYWxzZVxuICAgICAgICB9KVxuICAgICAgICBsZXQgYXVkaW8gPSBBdWRpb1NvdXJjZS5nZXRNdXRhYmxlKGJ1YmJsZS5zb3VuZFBsYXllcilcbiAgICAgICAgYXVkaW8udm9sdW1lID0gMC41XG4gICAgICAgIGF1ZGlvLnBsYXlpbmcgPSB0cnVlXG4gICAgfSBlbHNlIGlmIChidWJibGUuc291bmQpIHtcbiAgICAgICAgQXVkaW9Tb3VyY2UuY3JlYXRlT3JSZXBsYWNlKGJ1YmJsZS5zb3VuZFBsYXllciwge1xuICAgICAgICAgICAgYXVkaW9DbGlwVXJsOiBidWJibGUuc291bmQsXG4gICAgICAgICAgICBsb29wOiBmYWxzZSxcbiAgICAgICAgICAgIHBsYXlpbmc6IGZhbHNlXG4gICAgICAgIH0pXG4gICAgICAgIGxldCBhdWRpbyA9IEF1ZGlvU291cmNlLmdldE11dGFibGUoYnViYmxlLnNvdW5kUGxheWVyKVxuICAgICAgICBhdWRpby52b2x1bWUgPSAwLjVcbiAgICAgICAgYXVkaW8ucGxheWluZyA9IHRydWVcbiAgICB9XG5cbiAgICBsZXQgdGV4dCA9IGJ1YmJsZS50ZXh0XG4gICAgVGV4dFNoYXBlLmdldE11dGFibGUodGV4dCkuZm9udFNpemUgPSBjdXJyZW50VGV4dC5mb250U2l6ZSA/IGN1cnJlbnRUZXh0LmZvbnRTaXplIDogdGV4dFNpemVcbiAgICBUcmFuc2Zvcm0uZ2V0TXV0YWJsZSh0ZXh0KS5wb3NpdGlvbi55ID0gY3VycmVudFRleHQub2Zmc2V0WSA/IGN1cnJlbnRUZXh0Lm9mZnNldFkgKyB0ZXh0WVBvcyA6IHRleHRZUG9zXG4gICAgVHJhbnNmb3JtLmdldE11dGFibGUodGV4dCkucG9zaXRpb24ueCA9IGN1cnJlbnRUZXh0Lm9mZnNldFggPyBjdXJyZW50VGV4dC5vZmZzZXRYIDogMFxuXG4gICAgVmlzaWJpbGl0eUNvbXBvbmVudC5nZXRNdXRhYmxlKGJ1YmJsZS5wYW5lbCkudmlzaWJsZSA9IHRydWVcblxuICAgIGlmIChjdXJyZW50VGV4dC50ZXh0Lmxlbmd0aCA8IG1heExlbmd0aEh1Z2VCdWJibGUpIHtcbiAgICAgICAgY3VycmVudFRleHQudGV4dC5zbGljZSgwLCBtYXhMZW5ndGhIdWdlQnViYmxlKVxuICAgICAgfVxuXG4gICAgYmVnaW5UeXBpbmcoXG4gICAgICAgIG5wYyxcbiAgICAgICAgY3VycmVudFRleHQudGV4dCxcbiAgICAgICAgYnViYmxlLmluZGV4LFxuICAgICAgICBjdXJyZW50VGV4dC50aW1lT24gPyBjdXJyZW50VGV4dC50aW1lT24gOiB1bmRlZmluZWQsXG4gICAgICAgIGN1cnJlbnRUZXh0LnR5cGVTcGVlZCA/IGN1cnJlbnRUZXh0LnR5cGVTcGVlZCA6IHVuZGVmaW5lZCBcbiAgICApXG5cbiAgICBhZGp1c3RCdWJibGUobnBjLCBjdXJyZW50VGV4dC50ZXh0Lmxlbmd0aClcbiAgICBsYXlvdXREaWFsb2dXaW5kb3cobnBjLCBidWJibGUuaW5kZXgpXG4gICAgYnViYmxlLmlzQnViYmxlT3BlbiA9IHRydWVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsb3NlQnViYmxlKG5wYzpFbnRpdHkpe1xuICAgIGxldCBidWJibGUgPSBidWJibGVzLmdldChucGMpXG4gICAgICAgIGJ1YmJsZS5pc0J1YmJsZU9wZW4gPSBmYWxzZVxuICAgICAgICBidWJibGUudHlwaW5nID0gZmFsc2VcbiAgICAgICAgYnViYmxlLnZpc2libGVUZXh0ID0gXCJcIlxuICAgICAgICBidWJibGUudmlzaWJsZUNoYXJzID0gMFxuICAgICAgICBidWJibGUuZnVsbFRleHQgPSBcIlwiXG4gICAgICAgIGJ1YmJsZS50aW1lciA9IDBcbiAgICAgICAgYnViYmxlLmluZGV4ID0gMFxuICAgICAgICBidWJibGUuc2NyaXB0ID0gW11cbiAgICAgICAgYnViYmxlLmJ1dHRvbnMgPSAwXG4gICAgICAgIGJ1YmJsZS5tYXJnaW4gPSAwXG4gICAgICAgIGJ1YmJsZS5jdXJyZW50VGV4dCA9IG51bGxcbiAgICAgICAgVGV4dFNoYXBlLmdldE11dGFibGUoYnViYmxlLnRleHQpLnRleHQgPSBcIlwiXG4gICAgICAgIFZpc2liaWxpdHlDb21wb25lbnQuZ2V0TXV0YWJsZShidWJibGUudGV4dCkudmlzaWJsZSA9IGZhbHNlXG4gICAgICAgIFZpc2liaWxpdHlDb21wb25lbnQuZ2V0TXV0YWJsZShidWJibGUucGFuZWwpLnZpc2libGUgPSBmYWxzZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xvc2VCdWJibGVFbmRBbGwobnBjOkVudGl0eSk6IHZvaWQge1xuICAgIGxldCBidWJibGUgPSBidWJibGVzLmdldChucGMpXG4gICAgaWYgKGJ1YmJsZS5pc0J1YmJsZU9wZW4pIHtcbiAgICAgICAgYnViYmxlLmRvbmUgPSB0cnVlXG4gICAgICAgIGNsb3NlQnViYmxlKG5wYylcbiAgICB9XG4gIH1cblxuY29uc3QgREVGQVVMVF9TUEVFRCA9IDQ1XG5cbmNvbnN0IERFRkFVTFRfVElNRV9PTiA9IDNcblxuZnVuY3Rpb24gYmVnaW5UeXBpbmcobnBjOkVudGl0eSwgdGV4dDpzdHJpbmcsIHRleHRJZDpudW1iZXIsIHRpbWVPbj86bnVtYmVyLCBzcGVlZD86bnVtYmVyKXtcbiAgICBsZXQgZGlhbG9nRGF0YSA9IGJ1YmJsZXMuZ2V0KG5wYylcbiAgICBkaWFsb2dEYXRhLmZ1bGxUZXh0ID0gYWRkTGluZUJyZWFrKGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLnRleHQsIHRydWUpXG4gICAgZGlhbG9nRGF0YS50eXBpbmcgPSB0cnVlXG4gICAgZGlhbG9nRGF0YS5kb25lID0gZmFsc2VcbiAgICBkaWFsb2dEYXRhLnZpc2libGVUZXh0ID0gXCJcIlxuICAgIGRpYWxvZ0RhdGEudmlzaWJsZUNoYXJzID0gMFxuICAgIGRpYWxvZ0RhdGEudGltZXIgPSAwXG4gICAgZGlhbG9nRGF0YS5idXR0b25zID0gMFxuICAgIGRpYWxvZ0RhdGEudGltZU9uID0gdGltZU9uID8gdGltZU9uIDogREVGQVVMVF9USU1FX09OXG4gICAgZGlhbG9nRGF0YS5zcGVlZCA9IHNwZWVkID8gc3BlZWQgOiBERUZBVUxUX1NQRUVEXG5cbiAgICBkaWFsb2dEYXRhLm9wZW5UaW1lID0gTWF0aC5mbG9vcihEYXRlLm5vdygpKVxuXG4gICAgaWYoZGlhbG9nRGF0YS5zcGVlZCA8PSAwKXtcbiAgICAgICAgcnVzaFRleHQobnBjKVxuICAgIH1cbiAgICBlbHNle1xuICAgICAgICBpZighSXNUeXBpbmdCdWJibGUuaGFzKG5wYykpe1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ2NyZWF0aW5nIHR5cHVpbmcgYnViYmxlJylcbiAgICAgICAgICAgIElzVHlwaW5nQnViYmxlLmNyZWF0ZShucGMpXG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJ1c2hUZXh0KG5wYzpFbnRpdHkpe1xuICAgIGxldCBkaWFsb2dEYXRhID0gYnViYmxlcy5nZXQobnBjKVxuICAgIGRpYWxvZ0RhdGEudHlwaW5nID0gZmFsc2VcbiAgICBkaWFsb2dEYXRhLnRpbWVyID0gMFxuICAgIGRpYWxvZ0RhdGEudmlzaWJsZUNoYXJzID0gZGlhbG9nRGF0YS5mdWxsVGV4dC5sZW5ndGhcbiAgICBkaWFsb2dEYXRhLnZpc2libGVUZXh0ID0gZGlhbG9nRGF0YS5mdWxsVGV4dFxufVxuXG5mdW5jdGlvbiBhZGp1c3RCdWJibGUobnBjOkVudGl0eSwgdGV4dExlbmd0aDpudW1iZXIpe1xuICAgIGxldCBidWJibGUgPSBidWJibGVzLmdldChucGMpXG4gICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG5cbiAgICBpZiAodGV4dExlbmd0aCA8IG1heExlbmd0aFNob3J0QnViYmxlKSB7XG4gICAgICAgIE1lc2hSZW5kZXJlci5zZXRQbGFuZShidWJibGUucGFuZWwsXG4gICAgICAgICAgICBzZXRVVlNlY3Rpb24oXG4gICAgICAgICAgICBidWJibGVPcHRpb25zLnNob3J0LFxuICAgICAgICAgICAgMTAyNCxcbiAgICAgICAgICAgIDEwMjRcbiAgICAgICAgICApKVxuXG4gICAgICAgIFRyYW5zZm9ybS5nZXRNdXRhYmxlKGJ1YmJsZS5wYW5lbCkuc2NhbGUueCA9IHNob3J0QnViYmxlWFxuICAgICAgICBUcmFuc2Zvcm0uZ2V0TXV0YWJsZShidWJibGUucGFuZWwpLnNjYWxlLnkgPSBzaG9ydEJ1YmJsZVlcbiAgICAgICAgVHJhbnNmb3JtLmdldE11dGFibGUoYnViYmxlLmNvbnRhaW5lcikucG9zaXRpb24ueCA9IHNob3J0QnViYmxlWE9mZnNldCArIG5wY0RhdGEuYnViYmxlWE9mZnNldFxuICAgICAgICBUcmFuc2Zvcm0uZ2V0TXV0YWJsZShidWJibGUuY29udGFpbmVyKS5wb3NpdGlvbi55ID0gYnViYmxlLmJhc2VZT2Zmc2V0ICsgc2hvcnRCdWJibGVZT2Zmc2V0ICsgbnBjRGF0YS5idWJibGVZT2Zmc2V0XG4gICAgICAgIFRleHRTaGFwZS5nZXRNdXRhYmxlKGJ1YmJsZS50ZXh0KS53aWR0aCA9IHNob3J0QnViYmxlVGV4dFdpZHRoXG4gICAgICB9IGVsc2UgaWYgKHRleHRMZW5ndGggPCBtYXhMZW5ndGhOb3JtYWxCdWJibGUpIHtcbiAgICAgICAgTWVzaFJlbmRlcmVyLnNldFBsYW5lKGJ1YmJsZS5wYW5lbCxcbiAgICAgICAgICAgIHNldFVWU2VjdGlvbihcbiAgICAgICAgICAgIGJ1YmJsZU9wdGlvbnMubm9ybWFsLFxuICAgICAgICAgICAgMTAyNCxcbiAgICAgICAgICAgIDEwMjRcbiAgICAgICAgICApKVxuXG4gICAgICAgIFRyYW5zZm9ybS5nZXRNdXRhYmxlKGJ1YmJsZS5wYW5lbCkuc2NhbGUueCA9IG5vcm1hbEJ1YmJsZVhcbiAgICAgICAgVHJhbnNmb3JtLmdldE11dGFibGUoYnViYmxlLnBhbmVsKS5zY2FsZS55ID0gbm9ybWFsQnViYmxlWVxuICAgICAgICBUcmFuc2Zvcm0uZ2V0TXV0YWJsZShidWJibGUuY29udGFpbmVyKS5wb3NpdGlvbi54ID0gbm9ybWFsQnViYmxlWE9mZnNldCArIG5wY0RhdGEuYnViYmxlWE9mZnNldFxuICAgICAgICBUcmFuc2Zvcm0uZ2V0TXV0YWJsZShidWJibGUuY29udGFpbmVyKS5wb3NpdGlvbi55ID0gYnViYmxlLmJhc2VZT2Zmc2V0ICsgbm9ybWFsQnViYmxlWU9mZnNldCArIG5wY0RhdGEuYnViYmxlWU9mZnNldFxuICAgICAgICBUZXh0U2hhcGUuZ2V0TXV0YWJsZShidWJibGUudGV4dCkud2lkdGggPSBub3JtYWxCdWJibGVUZXh0V2lkdGhcbiAgICAgIH0gZWxzZSBpZiAodGV4dExlbmd0aCA8IG1heExlbmd0aExvbmdCdWJibGUpIHtcbiAgICAgICAgTWVzaFJlbmRlcmVyLnNldFBsYW5lKGJ1YmJsZS5wYW5lbCxcbiAgICAgICAgICAgIHNldFVWU2VjdGlvbihcbiAgICAgICAgICAgIGJ1YmJsZU9wdGlvbnMubG9uZyxcbiAgICAgICAgICAgIDEwMjQsXG4gICAgICAgICAgICAxMDI0XG4gICAgICAgICAgKSlcblxuICAgICAgICBUcmFuc2Zvcm0uZ2V0TXV0YWJsZShidWJibGUucGFuZWwpLnNjYWxlLnggPSBsb25nQnViYmxlWFxuICAgICAgICBUcmFuc2Zvcm0uZ2V0TXV0YWJsZShidWJibGUucGFuZWwpLnNjYWxlLnkgPSBsb25nQnViYmxlWVxuICAgICAgICBUcmFuc2Zvcm0uZ2V0TXV0YWJsZShidWJibGUuY29udGFpbmVyKS5wb3NpdGlvbi54ID0gbG9uZ0J1YmJsZVhPZmZzZXQgKyBucGNEYXRhLmJ1YmJsZVhPZmZzZXRcbiAgICAgICAgVHJhbnNmb3JtLmdldE11dGFibGUoYnViYmxlLmNvbnRhaW5lcikucG9zaXRpb24ueSA9IGJ1YmJsZS5iYXNlWU9mZnNldCArIGxvbmdCdWJibGVZT2Zmc2V0ICsgbnBjRGF0YS5idWJibGVZT2Zmc2V0XG4gICAgICAgIFRleHRTaGFwZS5nZXRNdXRhYmxlKGJ1YmJsZS50ZXh0KS53aWR0aCA9IGxvbmdCdWJibGVUZXh0V2lkdGhcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIE1lc2hSZW5kZXJlci5zZXRQbGFuZShidWJibGUucGFuZWwsXG4gICAgICAgICAgICBzZXRVVlNlY3Rpb24oXG4gICAgICAgICAgICBidWJibGVPcHRpb25zLmh1Z2UsXG4gICAgICAgICAgICAxMDI0LFxuICAgICAgICAgICAgMTAyNFxuICAgICAgICAgICkpXG4gICAgICAgIFRyYW5zZm9ybS5nZXRNdXRhYmxlKGJ1YmJsZS5wYW5lbCkuc2NhbGUueCA9IGh1Z2VCdWJibGVYXG4gICAgICAgIFRyYW5zZm9ybS5nZXRNdXRhYmxlKGJ1YmJsZS5wYW5lbCkuc2NhbGUueSA9IGh1Z2VCdWJibGVZXG4gICAgICAgIFRyYW5zZm9ybS5nZXRNdXRhYmxlKGJ1YmJsZS5jb250YWluZXIpLnBvc2l0aW9uLnggPSBodWdlQnViYmxlWE9mZnNldCArIG5wY0RhdGEuYnViYmxlWE9mZnNldFxuICAgICAgICBUcmFuc2Zvcm0uZ2V0TXV0YWJsZShidWJibGUuY29udGFpbmVyKS5wb3NpdGlvbi55ID0gYnViYmxlLmJhc2VZT2Zmc2V0ICsgaHVnZUJ1YmJsZVlPZmZzZXQgKyBucGNEYXRhLmJ1YmJsZVlPZmZzZXRcbiAgICAgICAgVGV4dFNoYXBlLmdldE11dGFibGUoYnViYmxlLnRleHQpLndpZHRoID0gaHVnZUJ1YmJsZVRleHRXaWR0aFxuICAgICAgfVxufVxuXG4vLyBBZGRzIHRoZSBidXR0b25zIG9yIG1vdXNlIGljb24gZGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIHdpbmRvd1xuZnVuY3Rpb24gbGF5b3V0RGlhbG9nV2luZG93KG5wYzpFbnRpdHksIHRleHRJZDogbnVtYmVyKTogdm9pZCB7XG4gICAgbGV0IGJ1YmJsZSA9IGJ1YmJsZXMuZ2V0KG5wYylcbiAgICBsZXQgY3VycmVudFRleHQ6IERpYWxvZyA9IGJ1YmJsZS5zY3JpcHRbdGV4dElkXVxuICAgICAgPyBidWJibGUuc2NyaXB0W3RleHRJZF1cbiAgICAgIDogeyB0ZXh0OiAnJyB9XG5cbiAgICAvLyBVcGRhdGUgdGV4dFxuICAgIGxldCB0ZXh0WSA9IGN1cnJlbnRUZXh0Lm9mZnNldFkgPyBjdXJyZW50VGV4dC5vZmZzZXRZICsgdGV4dFlQb3MgOiB0ZXh0WVBvc1xuXG4gICAgaWYgKGN1cnJlbnRUZXh0LmJ1dHRvbnMgJiYgY3VycmVudFRleHQuYnV0dG9ucy5sZW5ndGggPj0gMykge1xuICAgICAgdGV4dFkgKz0gNTBcbiAgICB9IGVsc2UgaWYgKGN1cnJlbnRUZXh0LmJ1dHRvbnMgJiYgY3VycmVudFRleHQuYnV0dG9ucy5sZW5ndGggPj0gMSkge1xuICAgICAgdGV4dFkgKz0gMjRcbiAgICB9XG4gICAgVGV4dFNoYXBlLmdldE11dGFibGUoYnViYmxlLnRleHQpLmZvbnRTaXplID0gY3VycmVudFRleHQuZm9udFNpemVcbiAgICA/IGN1cnJlbnRUZXh0LmZvbnRTaXplXG4gICAgOiB0ZXh0U2l6ZVxuICAgIFxuICAgIFZpc2liaWxpdHlDb21wb25lbnQuZ2V0TXV0YWJsZShidWJibGUudGV4dCkudmlzaWJsZSA9IHRydWVcbiAgICBUcmFuc2Zvcm0uZ2V0TXV0YWJsZShidWJibGUudGV4dCkucG9zaXRpb24ueSA9IHRleHRZXG5cbiAgICBpZiAoY3VycmVudFRleHQuYXVkaW8pIHtcbiAgICAgICAgQXVkaW9Tb3VyY2UuY3JlYXRlT3JSZXBsYWNlKGJ1YmJsZS5zb3VuZFBsYXllciwge1xuICAgICAgICAgICAgYXVkaW9DbGlwVXJsOiBjdXJyZW50VGV4dC5hdWRpbyxcbiAgICAgICAgICAgIGxvb3A6IGZhbHNlLFxuICAgICAgICAgICAgcGxheWluZzogZmFsc2VcbiAgICAgICAgfSlcbiAgICAgICAgbGV0IGF1ZGlvID0gQXVkaW9Tb3VyY2UuZ2V0TXV0YWJsZShidWJibGUuc291bmRQbGF5ZXIpXG4gICAgICAgIGF1ZGlvLnZvbHVtZSA9IDAuNVxuICAgICAgICBhdWRpby5wbGF5aW5nID0gdHJ1ZVxuICAgIH0gZWxzZSBpZiAoYnViYmxlLnNvdW5kKSB7XG4gICAgICAgIEF1ZGlvU291cmNlLmNyZWF0ZU9yUmVwbGFjZShidWJibGUuc291bmRQbGF5ZXIsIHtcbiAgICAgICAgICAgIGF1ZGlvQ2xpcFVybDogYnViYmxlLnNvdW5kLFxuICAgICAgICAgICAgbG9vcDogZmFsc2UsXG4gICAgICAgICAgICBwbGF5aW5nOiBmYWxzZVxuICAgICAgICB9KVxuICAgICAgICBsZXQgYXVkaW8gPSBBdWRpb1NvdXJjZS5nZXRNdXRhYmxlKGJ1YmJsZS5zb3VuZFBsYXllcilcbiAgICAgICAgYXVkaW8udm9sdW1lID0gMC41XG4gICAgICAgIGF1ZGlvLnBsYXlpbmcgPSB0cnVlXG4gICAgfVxuXG4gIH1cblxuLy8gUHJvZ3Jlc3NlcyB0ZXh0XG5leHBvcnQgZnVuY3Rpb24gbmV4dChucGM6RW50aXR5KTogdm9pZCB7XG4gICAgbGV0IGJ1YmJsZSA9IGJ1YmJsZXMuZ2V0KG5wYylcblxuICAgIGlmKGJ1YmJsZS5pc0J1YmJsZU9wZW4pe1xuICAgICAgbGV0IGN1cnJlbnRUZXh0ID0gYnViYmxlLnNjcmlwdFtidWJibGUuaW5kZXhdXG5cbiAgICAgIGlmKCFjdXJyZW50VGV4dCl7XG4gICAgICAgIGN1cnJlbnRUZXh0ID0gYnViYmxlLnNjcmlwdFtidWJibGUuaW5kZXgtMV1cbiAgICAgIH1cbiAgICBcbiAgICAgICAgaWYgKGN1cnJlbnRUZXh0LnRyaWdnZXJlZEJ5TmV4dCkge1xuICAgICAgICAgIGN1cnJlbnRUZXh0LnRyaWdnZXJlZEJ5TmV4dCgpXG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgaWYgKGN1cnJlbnRUZXh0LmlzRW5kT2ZEaWFsb2cpIHtcbiAgICAgICAgICBjbG9zZUJ1YmJsZShucGMpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICBcbiAgICAgICAvLyBVcGRhdGUgYWN0aXZlIHRleHRcbiAgICAgICAgIGJ1YmJsZS5pbmRleCsrXG4gICAgXG4gICAgICAgIC8vIFVwZGF0ZSBhY3RpdmUgdGV4dCB3aXRoIG5ldyBhY3RpdmUgdGV4dFxuICAgICAgICBjdXJyZW50VGV4dCA9IGJ1YmJsZS5zY3JpcHRbYnViYmxlLmluZGV4XVxuICAgIFxuICAgICAgICBpZiAoY3VycmVudFRleHQudGV4dC5sZW5ndGggPCBtYXhMZW5ndGhIdWdlQnViYmxlKSB7XG4gICAgICAgICAgY3VycmVudFRleHQudGV4dC5zbGljZSgwLCBtYXhMZW5ndGhIdWdlQnViYmxlKVxuICAgICAgICB9XG4gICAgXG4gICAgICAgIFRleHRTaGFwZS5nZXRNdXRhYmxlKGJ1YmJsZS50ZXh0KS50ZXh0ID0gXCJcIlxuICAgIFxuICAgICAgICBhZGp1c3RCdWJibGUobnBjLCBjdXJyZW50VGV4dC50ZXh0Lmxlbmd0aClcbiAgICBcbiAgICAgICAgYmVnaW5UeXBpbmcoXG4gICAgICAgICAgICBucGMsXG4gICAgICAgICAgICBjdXJyZW50VGV4dC50ZXh0LFxuICAgICAgICAgICAgYnViYmxlLmluZGV4LFxuICAgICAgICAgICAgY3VycmVudFRleHQudGltZU9uID8gY3VycmVudFRleHQudGltZU9uIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgY3VycmVudFRleHQudHlwZVNwZWVkID8gY3VycmVudFRleHQudHlwZVNwZWVkIDogdW5kZWZpbmVkIFxuICAgICAgICApXG4gICAgICBsYXlvdXREaWFsb2dXaW5kb3cobnBjLCBidWJibGUuaW5kZXgpXG4gICAgfVxuXG4gICAgXG4gIH1cblxuZnVuY3Rpb24gc2V0VVZTZWN0aW9uKFxuXHRzZWN0aW9uOiBJbWFnZVNlY3Rpb24sXG5cdHNpemVYOiBudW1iZXIsXG5cdHNpemVZOiBudW1iZXJcbiAgKSB7XG5cdHJldHVybiBzZXRVVnMoXG4gICAgICAgIHt4OiAgc2VjdGlvbi5zb3VyY2VMZWZ0ISAvIHNpemVYLCB5OiAoc2l6ZVkgLSBzZWN0aW9uLnNvdXJjZVRvcCEgLSBzZWN0aW9uLnNvdXJjZUhlaWdodCkgLyBzaXplWX0sXG4gICAgICAgIHt4OiAgKHNlY3Rpb24uc291cmNlTGVmdCEgKyBzZWN0aW9uLnNvdXJjZVdpZHRoKSAvIHNpemVYLCB5OiAoc2l6ZVkgLSBzZWN0aW9uLnNvdXJjZVRvcCEgLSBzZWN0aW9uLnNvdXJjZUhlaWdodCkgLyBzaXplWX0sXG4gICAgICAgIHt4OiAgKHNlY3Rpb24uc291cmNlTGVmdCEgKyBzZWN0aW9uLnNvdXJjZVdpZHRoKSAvIHNpemVYLCB5OiAgKHNpemVZIC0gc2VjdGlvbi5zb3VyY2VUb3AhKSAvIHNpemVZfSxcbiAgICAgICAge3g6ICBzZWN0aW9uLnNvdXJjZUxlZnQhIC8gc2l6ZVgsIHk6IChzaXplWSAtIHNlY3Rpb24uc291cmNlVG9wISkgLyBzaXplWX0sXG5cdClcbiAgfVxuXG5mdW5jdGlvbiBzZXRVVnMoXG5cdF91djAwOiBhbnksXG5cdF91djEwOiBhbnksXG5cdF91djExOiBhbnksXG5cdF91djAxOiBhbnlcbiAgKSB7XG5cblx0cmV0dXJuIFtcblx0ICBfdXYwMC54LFxuXHQgIF91djAwLnksXG4gIFxuICAgIF91djAxLngsXG5cdCAgX3V2MDEueSxcbiAgXG5cdCAgX3V2MTEueCxcblx0ICBfdXYxMS55LFxuXG4gICAgX3V2MTAueCxcblx0ICBfdXYxMC55LFxuXG5cdCAgXG5cdCAgLy8tLS0tXG5cdCAgX3V2MDAueCxcblx0ICBfdXYwMC55LFxuXG4gICAgX3V2MDEueCxcblx0ICBfdXYwMS55LFxuICAgIFxuICAgIF91djExLngsXG5cdCAgX3V2MTEueSxcbiAgICBcblx0ICBfdXYxMC54LFxuXHQgIF91djEwLnksXG4gIFxuXHQgXG4gIFxuXHQgXG5cdF1cbiAgfVxuXG4gIGxldCBidWJibGVPcHRpb25zOmFueSA9IHtcbiAgICBzaG9ydDoge1xuICAgICAgc291cmNlV2lkdGg6IDExNiAqIDIsXG4gICAgICBzb3VyY2VIZWlnaHQ6IDg0ICogMixcbiAgICAgIHNvdXJjZUxlZnQ6IDMwNSAqIDIsXG4gICAgICBzb3VyY2VUb3A6IDQxNyAqIDIsXG4gICAgfSxcbiAgICBub3JtYWw6IHtcbiAgICAgIHNvdXJjZVdpZHRoOiAyODYgKiAyLFxuICAgICAgc291cmNlSGVpZ2h0OiA4NCAqIDIsXG4gICAgICBzb3VyY2VMZWZ0OiA4ICogMixcbiAgICAgIHNvdXJjZVRvcDogNDE3ICogMixcbiAgICB9LFxuICAgIGxvbmc6IHtcbiAgICAgIHNvdXJjZVdpZHRoOiA0OTcgKiAyLFxuICAgICAgc291cmNlSGVpZ2h0OiAxNTMgKiAyLFxuICAgICAgc291cmNlTGVmdDogNiAqIDIsXG4gICAgICBzb3VyY2VUb3A6IDI1NCAqIDIsXG4gICAgfSxcbiAgICBodWdlOiB7XG4gICAgICBzb3VyY2VXaWR0aDogNDk3ICogMixcbiAgICAgIHNvdXJjZUhlaWdodDogMjM5ICogMixcbiAgICAgIHNvdXJjZUxlZnQ6IDYgKiAyLFxuICAgICAgc291cmNlVG9wOiA3ICogMixcbiAgICB9LFxufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRCdWJibGVUZXh0TGVuZ3RoKHRleHQ6c3RyaW5nKXtcbiAgICBpZih0ZXh0Lmxlbmd0aCA+PSBtYXhMZW5ndGhIdWdlQnViYmxlKXtcbiAgICAgICAgcmV0dXJuIDQwXG4gICAgfVxuICAgIGVsc2UgaWYodGV4dC5sZW5ndGggPj0gbWF4TGVuZ3RoTG9uZ0J1YmJsZSl7XG4gICAgICAgIHJldHVybiA0MFxuICAgIH1cbiAgICBlbHNlIGlmKHRleHQubGVuZ3RoID49IG1heExlbmd0aE5vcm1hbEJ1YmJsZSl7XG4gICAgICAgIHJldHVybiA0MFxuICAgIH1cbiAgICBlbHNlIGlmKHRleHQubGVuZ3RoID49IG1heExlbmd0aFNob3J0QnViYmxlKXtcbiAgICAgICAgcmV0dXJuIDQwXG4gICAgfVxuICB9Il19
362
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnViYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2J1YmJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQVksV0FBVyxFQUFlLFNBQVMsRUFBaUIsTUFBTSxFQUEyQyxRQUFRLEVBQWMsWUFBWSxFQUFtQyxTQUFTLEVBQUMsU0FBUyxFQUFpQixtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUUxUSxPQUFPLEVBQVMsTUFBTSxFQUFjLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFpQixnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUN4RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQzdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUV4QyxNQUFNLENBQUMsSUFBSSxjQUFjLEdBQUcsdURBQXVELENBQUE7QUFFbkYsTUFBTSxDQUFDLElBQUksT0FBTyxHQUFxQixJQUFJLEdBQUcsRUFBRSxDQUFBO0FBRWhELElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQTtBQUNoQixJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUE7QUFFaEIsSUFBSSxvQkFBb0IsR0FBRyxDQUFDLENBQUE7QUFDNUIsSUFBSSxxQkFBcUIsR0FBRyxFQUFFLENBQUE7QUFDOUIsSUFBSSxtQkFBbUIsR0FBRyxFQUFFLENBQUE7QUFDNUIsSUFBSSxtQkFBbUIsR0FBRyxHQUFHLENBQUE7QUFFN0IsSUFBSSxrQkFBa0IsR0FBRyxHQUFHLENBQUE7QUFDNUIsSUFBSSxtQkFBbUIsR0FBRyxHQUFHLENBQUE7QUFDN0IsSUFBSSxpQkFBaUIsR0FBRyxHQUFHLENBQUE7QUFDM0IsSUFBSSxpQkFBaUIsR0FBRyxHQUFHLENBQUE7QUFFM0IsSUFBSSxrQkFBa0IsR0FBRyxDQUFDLEdBQUcsQ0FBQTtBQUM3QixJQUFJLG1CQUFtQixHQUFHLENBQUMsR0FBRyxD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Q2pCLFNBQVMsRUFBRSxHQUFHLEdBQUcsQ0FBQztLQUNuQjtJQUNELElBQUksRUFBRTtRQUNKLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQztRQUNwQixZQUFZLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFDckIsVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDO1FBQ2pCLFNBQVMsRUFBRSxHQUFHLEdBQUcsQ0FBQztLQUNuQjtJQUNELElBQUksRUFBRTtRQUNKLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQztRQUNwQixZQUFZLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFDckIsVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDO1FBQ2pCLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztLQUNqQjtDQUNKLENBQUE7QUFHRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsSUFBVztJQUMzQyxJQUFHLElBQUksQ0FBQyxNQUFNLElBQUksbUJBQW1CLEVBQUMsQ0FBQztRQUNuQyxPQUFPLEVBQUUsQ0FBQTtJQUNiLENBQUM7U0FDSSxJQUFHLElBQUksQ0FBQyxNQUFNLElBQUksbUJBQW1CLEVBQUMsQ0FBQztRQUN4QyxPQUFPLEVBQUUsQ0FBQTtJQUNiLENBQUM7U0FDSSxJQUFHLElBQUksQ0FBQyxNQUFNLElBQUkscUJBQXFCLEVBQUMsQ0FBQztRQUMxQyxPQUFPLEVBQUUsQ0FBQTtJQUNiLENBQUM7U0FDSSxJQUFHLElBQUksQ0FBQyxNQUFNLElBQUksb0JBQW9CLEVBQUMsQ0FBQztRQUN6QyxPQUFPLEVBQUUsQ0FBQTtJQUNiLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBBbmltYXRvciwgQXVkaW9Tb3VyY2UsIEF2YXRhclNoYXBlLCBCaWxsYm9hcmQsIEJpbGxib2FyZE1vZGUsIGVuZ2luZSwgRW50aXR5LCBGb250LCBHbHRmQ29udGFpbmVyLCBJbnB1dEFjdGlvbixNYXRlcmlhbCxNZXNoQ29sbGlkZXIsTWVzaFJlbmRlcmVyLHBvaW50ZXJFdmVudHNTeXN0ZW0sVGV4dEFsaWduTW9kZSxUZXh0U2hhcGUsVHJhbnNmb3JtLCBUcmFuc2Zvcm1UeXBlLCBWaXNpYmlsaXR5Q29tcG9uZW50IH0gZnJvbSAnQGRjbC9zZGsvZWNzJ1xuaW1wb3J0IHsgRGlhbG9nLCBJbWFnZVNlY3Rpb24gfSBmcm9tICcuL3R5cGVzJ1xuaW1wb3J0IHsgQ29sb3IzLENvbG9yNCwgUXVhdGVybmlvbiwgVmVjdG9yMyB9IGZyb20gJ0BkY2wvc2RrL21hdGgnXG5pbXBvcnQgeyBhZGRMaW5lQnJlYWssIGFkZExpbmVCcmVha3MsIGZpbmREaWFsb2dCeU5hbWUgfSBmcm9tICcuL2RpYWxvZydcbmltcG9ydCB7IElzVHlwaW5nQnViYmxlIH0gZnJvbSAnLi9jb21wb25lbnRzJ1xuaW1wb3J0IHsgbnBjRGF0YUNvbXBvbmVudCB9IGZyb20gJy4vbnBjJ1xuXG5leHBvcnQgbGV0IGJ1YmJsZXNUZXh0dXJlID0gJ2h0dHBzOi8vZGVjZW50cmFsYW5kLm9yZy9pbWFnZXMvdWkvZGlhbG9nLWJ1YmJsZXMucG5nJ1xuXG5leHBvcnQgbGV0IGJ1YmJsZXM6IE1hcDxFbnRpdHksIGFueT4gPSBuZXcgTWFwKClcblxubGV0IHRleHRTaXplID0gMVxubGV0IHRleHRZUG9zID0gMCAgICBcblxubGV0IG1heExlbmd0aFNob3J0QnViYmxlID0gOFxubGV0IG1heExlbmd0aE5vcm1hbEJ1YmJsZSA9IDI1XG5sZXQgbWF4TGVuZ3RoTG9uZ0J1YmJsZSA9IDUwXG5sZXQgbWF4TGVuZ3RoSHVnZUJ1YmJsZSA9IDEwMFxuXG5sZXQgc2hvcnRCdWJibGVYT2Zmc2V0ID0gMC4xXG5sZXQgbm9ybWFsQnViYmxlWE9mZnNldCA9IDAuNVxubGV0IGxvbmdCdWJibGVYT2Zmc2V0ID0gMC44XG5sZXQgaHVnZUJ1YmJsZVhPZmZzZXQgPSAwLjhcblxubGV0IHNob3J0QnViYmxlWU9mZnNldCA9IC0wLjJcbmxldCBub3JtYWxCdWJibGVZT2Zmc2V0ID0gLTAuMlxubGV0IGxvbmdCdWJibGVZT2Zmc2V0ID0gMFxubGV0IGh1Z2VCdWJibGVZT2Zmc2V0ID0gMC4yXG5cbmxldCBzaG9ydEJ1YmJsZVRleHRXaWR0aCA9IDAuN1xubGV0IG5vcm1hbEJ1YmJsZVRleHRXaWR0aCA9IDEuNVxubGV0IGxvbmdCdWJibGVUZXh0V2lkdGggPSAyXG5sZXQgaHVnZUJ1YmJsZVRleHRXaWR0aCA9IDEuNVxuXG5sZXQgc2hvcnRCdWJibGVYID0gMTE2ICogMC4wMDVcbmxldCBzaG9ydEJ1YmJsZVkgPSA4NCAqIDAuMDA1XG5cbmxldCBub3JtYWxCdWJibGVYID0gMjg2ICogMC4wMDVcbmxldCBub3JtYWxCdWJibGVZID0gODQgKiAwLjAwNVxuXG5sZXQgbG9uZ0J1YmJsZVggPSA0OTcgKiAwLjAwNVxubGV0IGxvbmdCdWJibGVZID0gMTUzICogMC4wMDVcblxubGV0IGh1Z2VCdWJibGVYID0gNDk3ICogMC4wMDVcbmxldCBodWdlQnViYmxlWSA9IDIzOSAqIDAuMDA1XG5cbmxldCBkZWZhdWx0WU9mZnNldCA9IDIuNVxuXG5cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURpYWxvZ0J1YmJsZShucGM6RW50aXR5LCBoZWlnaHQ/Om51bWJlciwgc291bmQ/OnN0cmluZyl7XG4gICAgbGV0IGJhc2VZT2Zmc2V0ID0gaGVpZ2h0ID8gaGVpZ2h0IDogZGVmYXVsdFlPZmZzZXRcblxuICAgIGxldCByb290ID0gZW5naW5lLmFkZEVudGl0eSgpXG4gICAgQmlsbGJvYXJkLmNyZWF0ZShyb290LHtcbiAgICAgICAgYmlsbGJvYXJkTW9kZTpCaWxsYm9hcmRNb2RlLkJNX1lcbiAgICB9KVxuXG4gICAgVHJhbnNmb3JtLmNyZWF0ZShyb290LHtcbiAgICAgICAgcGFyZW50Om5wY1xuICAgIH0pXG5cbiAgICBsZXQgY29udGFpbmVyID0gZW5naW5lLmFkZEVudGl0eSgpXG4gICAgVHJhbnNmb3JtLmNyZWF0ZShjb250YWluZXIse1xuICAgICAgICBwYXJlbnQ6cm9vdCxcbiAgICAgICAgcG9zaXRpb246VmVjdG9yMy5jcmVhdGUoc2hvcnRCdWJibGVYT2Zmc2V0LGJhc2VZT2Zmc2V0LDApXG4gICAgfSlcblxuICAgIGxldCBwYW5lbCA9IGVuZ2luZS5hZGRFbnRpdHkoKVxuICAgIFRyYW5zZm9ybS5jcmVhdGUocGFuZWwse1xuICAgICAgICBwYXJlbnQ6Y29udGFpbmVyLFxuICAgICAgICBzY2FsZTogVmVjdG9yMy5jcmVhdGUoMiwxLDEpLFxuICAgICAgICAvL3JvdGF0aW9uOlF1YXRlcm5pb24uZnJvbUV1bGVyRGVncmVlcygwLDAsOTApXG4gICAgfSlcbiAgICBNZXNoUmVuZGVyZXIuc2V0UGxhbmUocGFuZWwsXG4gICAgICAgIHNldFVWU2VjdGlvbihcbiAgICAgICAgYnViYmxlT3B0aW9ucy5ub3JtYWwsXG4gICAgICAgIDEwMjQsXG4gICAgICAgIDEwMjRcbiAgICAgICkpXG5cbiAgICBWaXNpYmlsaXR5Q29tcG9uZW50LmNyZWF0ZShwYW5lbCwge3Zpc2libGU6IGZhbHNlfSlcblxuICAgIE1hdGVyaWFsLnNldEJhc2ljTWF0ZXJpYWwocGFuZWwsIHtcbiAgICAgICAgdGV4dHVyZTogTWF0ZXJpYWwuVGV4dHVyZS5Db21tb24oe1xuICAgICAgICAgIHNyYzogYnViYmxlc1RleHR1cmVcbiAgICAgICAgfSksXG4gICAgICAgIGFscGhhVGV4dHVyZTogTWF0ZXJpYWwuVGV4dHVyZS5Db21tb24oe1xuICAgICAgICAgIHNyYzogYnViYmxlc1RleHR1cmVcbiAgICAgICAgfSksXG4gICAgICAgIGFscGhhVGVzdDogMC41XG4gICAgICB9KVxuXG4gICAgbGV0IHRleHQgPSBlbmdpbmUuYWRkRW50aXR5KClcbiAgICBUcmFuc2Zvcm0uY3JlYXRlKHRleHQse1xuICAgICAgICBwb3NpdGlvbjpWZWN0b3IzLmNyZWF0ZSgwLHRleHRZUG9zLCAtLjA1KSxcbiAgICAgICAgcGFyZW50OmNvbnRhaW5lclxuICAgIH0pXG4gICAgVGV4dFNoYXBlLmNyZWF0ZSh0ZXh0LCB7XG4gICAgICAgIHRleHQ6XCJcIiwgXG4gICAgICAgIGZvbnRTaXplOnRleHRTaXplLFxuICAgICAgICBmb250OiBGb250LkZfU0FOU19TRVJJRixcbiAgICAgICAgdGV4dENvbG9yOiBDb2xvcjQuY3JlYXRlKDAsMCwwLDEpLFxuICAgICAgICB0ZXh0QWxpZ246VGV4dEFsaWduTW9kZS5UQU1fTUlERExFX0NFTlRFUlxuICAgIH0pXG4gICAgVmlzaWJpbGl0eUNvbXBvbmVudC5jcmVhdGUodGV4dCwge3Zpc2libGU6IGZhbHNlfSlcblxuICAgIGJ1YmJsZXMuc2V0KG5wYywge1xuICAgICAgICBjb250YWluZXI6Y29udGFpbmVyLFxuICAgICAgICBwYW5lbDpwYW5lbCxcbiAgICAgICAgdGV4dDp0ZXh0LFxuICAgICAgICBiYXNlWU9mZnNldDogYmFzZVlPZmZzZXQsXG4gICAgICAgIGlzQnViYmxlT3BlbjpmYWxzZSxcbiAgICAgICAgdHlwaW5nOmZhbHNlLFxuICAgICAgICB2aXNpYmxlVGV4dDpcIlwiLFxuICAgICAgICB2aXNpYmxlQ2hhcnM6MCxcbiAgICAgICAgZnVsbFRleHQ6XCJcIixcbiAgICAgICAgdGltZXI6MCxcbiAgICAgICAgc3BlZWQ6MzAsXG4gICAgICAgIHNjcmlwdDpbXSxcbiAgICAgICAgaW5kZXg6MCxcbiAgICAgICAgc291bmQ6IHNvdW5kID8gc291bmQgOiB1bmRlZmluZWQsXG4gICAgICAgIHNvdW5kUGxheWVyOiBzb3VuZCA/IGVuZ2luZS5hZGRFbnRpdHkoKSA6IHVuZGVmaW5lZCxcbiAgICB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gb3BlbkJ1YmJsZShucGM6RW50aXR5LCBkaWFsb2c6RGlhbG9nW10sIHN0YXJ0SW5kZXg/Om51bWJlciB8IHN0cmluZyl7XG4gICAgbGV0IGJ1YmJsZSA9IGJ1YmJsZXMuZ2V0KG5wYylcblxuICAgIGJ1YmJsZS5zY3JpcHQgPSBkaWFsb2cuc2xpY2UoKVxuICAgIGxldCBpbmRleDphbnlcbiAgICBpZiAoIXN0YXJ0SW5kZXgpIHtcbiAgICAgIGluZGV4ID0gMFxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHN0YXJ0SW5kZXggPT09ICdudW1iZXInKSB7XG4gICAgICBpbmRleCA9IHN0YXJ0SW5kZXhcbiAgICB9IGVsc2Uge1xuICAgICAgaW5kZXggPSBmaW5kRGlhbG9nQnlOYW1lKGRpYWxvZywgc3RhcnRJbmRleClcbiAgICB9XG5cbiAgICBidWJibGUuaW5kZXggPSBpbmRleFxuICAgIFxuICAgIGxldCBjdXJyZW50VGV4dDogRGlhbG9nID0gZGlhbG9nW2J1YmJsZS5pbmRleF0gPyBkaWFsb2dbYnViYmxlLmluZGV4XSA6IHsgdGV4dDogJycgfVxuICAgIGJ1YmJsZS5jdXJyZW50VGV4dCA9IGN1cnJlbnRUZXh0XG5cbiAgICBpZiAoY3VycmVudFRleHQuYXVkaW8pIHtcbiAgICAgICAgQXVkaW9Tb3VyY2UuY3JlYXRlT3JSZXBsYWNlKGJ1YmJsZS5zb3VuZFBsYXllciwge1xuICAgICAgICAgICAgYXVkaW9DbGlwVXJsOiBjdXJyZW50VGV4dC5hdWRpbyxcbiAgICAgICAgICAgIGxvb3A6IGZhbHNlLFxuICAgICAgICAgICAgcGxheWluZzogZmFsc2VcbiAgICAgICAgfSlcbiAgICAgICAgbGV0IGF1ZGlvID0gQXVkaW9Tb3VyY2UuZ2V0TXV0YWJsZShidWJibGUuc291bmRQbGF5ZXIpXG4gICAgICAgIGF1ZGlvLnZvbHVtZSA9IDAuNVxuICAgICAgICBhdWRpby5wbGF5aW5nID0gdHJ1ZVxuICAgIH0gZWxzZSBpZiAoYnViYmxlLnNvdW5kKSB7XG4gICAgICAgIEF1ZGlvU291cmNlLmNyZWF0ZU9yUmVwbGFjZShidWJibGUuc291bmRQbGF5ZXIsIHtcbiAgICAgICAgICAgIGF1ZGlvQ2xpcFVybDogYnViYmxlLnNvdW5kLFxuICAgICAgICAgICAgbG9vcDogZmFsc2UsXG4gICAgICAgICAgICBwbGF5aW5nOiBmYWxzZVxuICAgICAgICB9KVxuICAgICAgICBsZXQgYXVkaW8gPSBBdWRpb1NvdXJjZS5nZXRNdXRhYmxlKGJ1YmJsZS5zb3VuZFBsYXllcilcbiAgICAgICAgYXVkaW8udm9sdW1lID0gMC41XG4gICAgICAgIGF1ZGlvLnBsYXlpbmcgPSB0cnVlXG4gICAgfVxuXG4gICAgbGV0IHRleHQgPSBidWJibGUudGV4dFxuICAgIFRleHRTaGFwZS5nZXRNdXRhYmxlKHRleHQpLmZvbnRTaXplID0gY3VycmVudFRleHQuZm9udFNpemUgPyBjdXJyZW50VGV4dC5mb250U2l6ZSA6IHRleHRTaXplXG4gICAgVHJhbnNmb3JtLmdldE11dGFibGUodGV4dCkucG9zaXRpb24ueSA9IGN1cnJlbnRUZXh0Lm9mZnNldFkgPyBjdXJyZW50VGV4dC5vZmZzZXRZICsgdGV4dFlQb3MgOiB0ZXh0WVBvc1xuICAgIFRyYW5zZm9ybS5nZXRNdXRhYmxlKHRleHQpLnBvc2l0aW9uLnggPSBjdXJyZW50VGV4dC5vZmZzZXRYID8gY3VycmVudFRleHQub2Zmc2V0WCA6IDBcblxuICAgIFZpc2liaWxpdHlDb21wb25lbnQuZ2V0TXV0YWJsZShidWJibGUucGFuZWwpLnZpc2libGUgPSB0cnVlXG5cbiAgICBpZiAoY3VycmVudFRleHQudGV4dC5sZW5ndGggPCBtYXhMZW5ndGhIdWdlQnViYmxlKSB7XG4gICAgICAgIGN1cnJlbnRUZXh0LnRleHQuc2xpY2UoMCwgbWF4TGVuZ3RoSHVnZUJ1YmJsZSlcbiAgICAgIH1cblxuICAgIGJlZ2luVHlwaW5nKFxuICAgICAgICBucGMsXG4gICAgICAgIGN1cnJlbnRUZXh0LnRleHQsXG4gICAgICAgIGJ1YmJsZS5pbmRleCxcbiAgICAgICAgY3VycmVudFRleHQudGltZU9uID8gY3VycmVudFRleHQudGltZU9uIDogdW5kZWZpbmVkLFxuICAgICAgICBjdXJyZW50VGV4dC50eXBlU3BlZWQgPyBjdXJyZW50VGV4dC50eXBlU3BlZWQgOiB1bmRlZmluZWQgXG4gICAgKVxuXG4gICAgYWRqdXN0QnViYmxlKG5wYywgY3VycmVudFRleHQudGV4dC5sZW5ndGgpXG4gICAgbGF5b3V0RGlhbG9nV2luZG93KG5wYywgYnViYmxlLmluZGV4KVxuICAgIGJ1YmJsZS5pc0J1YmJsZU9wZW4gPSB0cnVlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbG9zZUJ1YmJsZShucGM6RW50aXR5KXtcbiAgICBsZXQgYnViYmxlID0gYnViYmxlcy5nZXQobnBjKVxuICAgICAgICBidWJibGUuaXNCdWJibGVPcGVuID0gZmFsc2VcbiAgICAgICAgYnViYmxlLnR5cGluZyA9IGZhbHNlXG4gICAgICAgIGJ1YmJsZS52aXNpYmxlVGV4dCA9IFwiXCJcbiAgICAgICAgYnViYmxlLnZpc2libGVDaGFycyA9IDBcbiAgICAgICAgYnViYmxlLmZ1bGxUZXh0ID0gXCJcIlxuICAgICAgICBidWJibGUudGltZXIgPSAwXG4gICAgICAgIGJ1YmJsZS5pbmRleCA9IDBcbiAgICAgICAgYnViYmxlLnNjcmlwdCA9IFtdXG4gICAgICAgIGJ1YmJsZS5idXR0b25zID0gMFxuICAgICAgICBidWJibGUubWFyZ2luID0gMFxuICAgICAgICBidWJibGUuY3VycmVudFRleHQgPSBudWxsXG4gICAgICAgIFRleHRTaGFwZS5nZXRNdXRhYmxlKGJ1YmJsZS50ZXh0KS50ZXh0ID0gXCJcIlxuICAgICAgICBWaXNpYmlsaXR5Q29tcG9uZW50LmdldE11dGFibGUoYnViYmxlLnRleHQpLnZpc2libGUgPSBmYWxzZVxuICAgICAgICBWaXNpYmlsaXR5Q29tcG9uZW50LmdldE11dGFibGUoYnViYmxlLnBhbmVsKS52aXNpYmxlID0gZmFsc2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsb3NlQnViYmxlRW5kQWxsKG5wYzpFbnRpdHkpOiB2b2lkIHtcbiAgICBsZXQgYnViYmxlID0gYnViYmxlcy5nZXQobnBjKVxuICAgIGlmIChidWJibGUuaXNCdWJibGVPcGVuKSB7XG4gICAgICAgIGJ1YmJsZS5kb25lID0gdHJ1ZVxuICAgICAgICBjbG9zZUJ1YmJsZShucGMpXG4gICAgfVxuICB9XG5cbmNvbnN0IERFRkFVTFRfU1BFRUQgPSA0NVxuXG5jb25zdCBERUZBVUxUX1RJTUVfT04gPSAzXG5cbmZ1bmN0aW9uIGJlZ2luVHlwaW5nKG5wYzpFbnRpdHksIHRleHQ6c3RyaW5nLCB0ZXh0SWQ6bnVtYmVyLCB0aW1lT24/Om51bWJlciwgc3BlZWQ/Om51bWJlcil7XG4gICAgbGV0IGRpYWxvZ0RhdGEgPSBidWJibGVzLmdldChucGMpXG4gICAgZGlhbG9nRGF0YS5mdWxsVGV4dCA9IGFkZExpbmVCcmVhayhkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS50ZXh0LCB0cnVlKVxuICAgIGRpYWxvZ0RhdGEudHlwaW5nID0gdHJ1ZVxuICAgIGRpYWxvZ0RhdGEuZG9uZSA9IGZhbHNlXG4gICAgZGlhbG9nRGF0YS52aXNpYmxlVGV4dCA9IFwiXCJcbiAgICBkaWFsb2dEYXRhLnZpc2libGVDaGFycyA9IDBcbiAgICBkaWFsb2dEYXRhLnRpbWVyID0gMFxuICAgIGRpYWxvZ0RhdGEuYnV0dG9ucyA9IDBcbiAgICBkaWFsb2dEYXRhLnRpbWVPbiA9IHRpbWVPbiA/IHRpbWVPbiA6IERFRkFVTFRfVElNRV9PTlxuICAgIGRpYWxvZ0RhdGEuc3BlZWQgPSBzcGVlZCA/IHNwZWVkIDogREVGQVVMVF9TUEVFRFxuXG4gICAgZGlhbG9nRGF0YS5vcGVuVGltZSA9IE1hdGguZmxvb3IoRGF0ZS5ub3coKSlcblxuICAgIGlmKGRpYWxvZ0RhdGEuc3BlZWQgPD0gMCl7XG4gICAgICAgIHJ1c2hUZXh0KG5wYylcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgICAgaWYoIUlzVHlwaW5nQnViYmxlLmhhcyhucGMpKXtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjcmVhdGluZyB0eXB1aW5nIGJ1YmJsZScpXG4gICAgICAgICAgICBJc1R5cGluZ0J1YmJsZS5jcmVhdGUobnBjKVxuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBydXNoVGV4dChucGM6RW50aXR5KXtcbiAgICBsZXQgZGlhbG9nRGF0YSA9IGJ1YmJsZXMuZ2V0KG5wYylcbiAgICBkaWFsb2dEYXRhLnR5cGluZyA9IGZhbHNlXG4gICAgZGlhbG9nRGF0YS50aW1lciA9IDBcbiAgICBkaWFsb2dEYXRhLnZpc2libGVDaGFycyA9IGRpYWxvZ0RhdGEuZnVsbFRleHQubGVuZ3RoXG4gICAgZGlhbG9nRGF0YS52aXNpYmxlVGV4dCA9IGRpYWxvZ0RhdGEuZnVsbFRleHRcbn1cblxuZnVuY3Rpb24gYWRqdXN0QnViYmxlKG5wYzpFbnRpdHksIHRleHRMZW5ndGg6bnVtYmVyKXtcbiAgICBsZXQgYnViYmxlID0gYnViYmxlcy5nZXQobnBjKVxuICAgIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuXG4gICAgaWYgKHRleHRMZW5ndGggPCBtYXhMZW5ndGhTaG9ydEJ1YmJsZSkge1xuICAgICAgICBNZXNoUmVuZGVyZXIuc2V0UGxhbmUoYnViYmxlLnBhbmVsLFxuICAgICAgICAgICAgc2V0VVZTZWN0aW9uKFxuICAgICAgICAgICAgYnViYmxlT3B0aW9ucy5zaG9ydCxcbiAgICAgICAgICAgIDEwMjQsXG4gICAgICAgICAgICAxMDI0XG4gICAgICAgICAgKSlcblxuICAgICAgICBUcmFuc2Zvcm0uZ2V0TXV0YWJsZShidWJibGUucGFuZWwpLnNjYWxlLnggPSBzaG9ydEJ1YmJsZVhcbiAgICAgICAgVHJhbnNmb3JtLmdldE11dGFibGUoYnViYmxlLnBhbmVsKS5zY2FsZS55ID0gc2hvcnRCdWJibGVZXG4gICAgICAgIFRyYW5zZm9ybS5nZXRNdXRhYmxlKGJ1YmJsZS5jb250YWluZXIpLnBvc2l0aW9uLnggPSBzaG9ydEJ1YmJsZVhPZmZzZXQgKyBucGNEYXRhLmJ1YmJsZVhPZmZzZXRcbiAgICAgICAgVHJhbnNmb3JtLmdldE11dGFibGUoYnViYmxlLmNvbnRhaW5lcikucG9zaXRpb24ueSA9IGJ1YmJsZS5iYXNlWU9mZnNldCArIHNob3J0QnViYmxlWU9mZnNldCArIG5wY0RhdGEuYnViYmxlWU9mZnNldFxuICAgICAgICBUZXh0U2hhcGUuZ2V0TXV0YWJsZShidWJibGUudGV4dCkud2lkdGggPSBzaG9ydEJ1YmJsZVRleHRXaWR0aFxuICAgICAgfSBlbHNlIGlmICh0ZXh0TGVuZ3RoIDwgbWF4TGVuZ3RoTm9ybWFsQnViYmxlKSB7XG4gICAgICAgIE1lc2hSZW5kZXJlci5zZXRQbGFuZShidWJibGUucGFuZWwsXG4gICAgICAgICAgICBzZXRVVlNlY3Rpb24oXG4gICAgICAgICAgICBidWJibGVPcHRpb25zLm5vcm1hbCxcbiAgICAgICAgICAgIDEwMjQsXG4gICAgICAgICAgICAxMDI0XG4gICAgICAgICAgKSlcblxuICAgICAgICBUcmFuc2Zvcm0uZ2V0TXV0YWJsZShidWJibGUucGFuZWwpLnNjYWxlLnggPSBub3JtYWxCdWJibGVYXG4gICAgICAgIFRyYW5zZm9ybS5nZXRNdXRhYmxlKGJ1YmJsZS5wYW5lbCkuc2NhbGUueSA9IG5vcm1hbEJ1YmJsZVlcbiAgICAgICAgVHJhbnNmb3JtLmdldE11dGFibGUoYnViYmxlLmNvbnRhaW5lcikucG9zaXRpb24ueCA9IG5vcm1hbEJ1YmJsZVhPZmZzZXQgKyBucGNEYXRhLmJ1YmJsZVhPZmZzZXRcbiAgICAgICAgVHJhbnNmb3JtLmdldE11dGFibGUoYnViYmxlLmNvbnRhaW5lcikucG9zaXRpb24ueSA9IGJ1YmJsZS5iYXNlWU9mZnNldCArIG5vcm1hbEJ1YmJsZVlPZmZzZXQgKyBucGNEYXRhLmJ1YmJsZVlPZmZzZXRcbiAgICAgICAgVGV4dFNoYXBlLmdldE11dGFibGUoYnViYmxlLnRleHQpLndpZHRoID0gbm9ybWFsQnViYmxlVGV4dFdpZHRoXG4gICAgICB9IGVsc2UgaWYgKHRleHRMZW5ndGggPCBtYXhMZW5ndGhMb25nQnViYmxlKSB7XG4gICAgICAgIE1lc2hSZW5kZXJlci5zZXRQbGFuZShidWJibGUucGFuZWwsXG4gICAgICAgICAgICBzZXRVVlNlY3Rpb24oXG4gICAgICAgICAgICBidWJibGVPcHRpb25zLmxvbmcsXG4gICAgICAgICAgICAxMDI0LFxuICAgICAgICAgICAgMTAyNFxuICAgICAgICAgICkpXG5cbiAgICAgICAgVHJhbnNmb3JtLmdldE11dGFibGUoYnViYmxlLnBhbmVsKS5zY2FsZS54ID0gbG9uZ0J1YmJsZVhcbiAgICAgICAgVHJhbnNmb3JtLmdldE11dGFibGUoYnViYmxlLnBhbmVsKS5zY2FsZS55ID0gbG9uZ0J1YmJsZVlcbiAgICAgICAgVHJhbnNmb3JtLmdldE11dGFibGUoYnViYmxlLmNvbnRhaW5lcikucG9zaXRpb24ueCA9IGxvbmdCdWJibGVYT2Zmc2V0ICsgbnBjRGF0YS5idWJibGVYT2Zmc2V0XG4gICAgICAgIFRyYW5zZm9ybS5nZXRNdXRhYmxlKGJ1YmJsZS5jb250YWluZXIpLnBvc2l0aW9uLnkgPSBidWJibGUuYmFzZVlPZmZzZXQgKyBsb25nQnViYmxlWU9mZnNldCArIG5wY0RhdGEuYnViYmxlWU9mZnNldFxuICAgICAgICBUZXh0U2hhcGUuZ2V0TXV0YWJsZShidWJibGUudGV4dCkud2lkdGggPSBsb25nQnViYmxlVGV4dFdpZHRoXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBNZXNoUmVuZGVyZXIuc2V0UGxhbmUoYnViYmxlLnBhbmVsLFxuICAgICAgICAgICAgc2V0VVZTZWN0aW9uKFxuICAgICAgICAgICAgYnViYmxlT3B0aW9ucy5odWdlLFxuICAgICAgICAgICAgMTAyNCxcbiAgICAgICAgICAgIDEwMjRcbiAgICAgICAgICApKVxuICAgICAgICBUcmFuc2Zvcm0uZ2V0TXV0YWJsZShidWJibGUucGFuZWwpLnNjYWxlLnggPSBodWdlQnViYmxlWFxuICAgICAgICBUcmFuc2Zvcm0uZ2V0TXV0YWJsZShidWJibGUucGFuZWwpLnNjYWxlLnkgPSBodWdlQnViYmxlWVxuICAgICAgICBUcmFuc2Zvcm0uZ2V0TXV0YWJsZShidWJibGUuY29udGFpbmVyKS5wb3NpdGlvbi54ID0gaHVnZUJ1YmJsZVhPZmZzZXQgKyBucGNEYXRhLmJ1YmJsZVhPZmZzZXRcbiAgICAgICAgVHJhbnNmb3JtLmdldE11dGFibGUoYnViYmxlLmNvbnRhaW5lcikucG9zaXRpb24ueSA9IGJ1YmJsZS5iYXNlWU9mZnNldCArIGh1Z2VCdWJibGVZT2Zmc2V0ICsgbnBjRGF0YS5idWJibGVZT2Zmc2V0XG4gICAgICAgIFRleHRTaGFwZS5nZXRNdXRhYmxlKGJ1YmJsZS50ZXh0KS53aWR0aCA9IGh1Z2VCdWJibGVUZXh0V2lkdGhcbiAgICAgIH1cbn1cblxuLy8gQWRkcyB0aGUgYnV0dG9ucyBvciBtb3VzZSBpY29uIGRlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiB3aW5kb3dcbmZ1bmN0aW9uIGxheW91dERpYWxvZ1dpbmRvdyhucGM6RW50aXR5LCB0ZXh0SWQ6IG51bWJlcik6IHZvaWQge1xuICAgIGxldCBidWJibGUgPSBidWJibGVzLmdldChucGMpXG4gICAgbGV0IGN1cnJlbnRUZXh0OiBEaWFsb2cgPSBidWJibGUuc2NyaXB0W3RleHRJZF1cbiAgICAgID8gYnViYmxlLnNjcmlwdFt0ZXh0SWRdXG4gICAgICA6IHsgdGV4dDogJycgfVxuXG4gICAgLy8gVXBkYXRlIHRleHRcbiAgICBsZXQgdGV4dFkgPSBjdXJyZW50VGV4dC5vZmZzZXRZID8gY3VycmVudFRleHQub2Zmc2V0WSArIHRleHRZUG9zIDogdGV4dFlQb3NcblxuICAgIGlmIChjdXJyZW50VGV4dC5idXR0b25zICYmIGN1cnJlbnRUZXh0LmJ1dHRvbnMubGVuZ3RoID49IDMpIHtcbiAgICAgIHRleHRZICs9IDUwXG4gICAgfSBlbHNlIGlmIChjdXJyZW50VGV4dC5idXR0b25zICYmIGN1cnJlbnRUZXh0LmJ1dHRvbnMubGVuZ3RoID49IDEpIHtcbiAgICAgIHRleHRZICs9IDI0XG4gICAgfVxuICAgIFRleHRTaGFwZS5nZXRNdXRhYmxlKGJ1YmJsZS50ZXh0KS5mb250U2l6ZSA9IGN1cnJlbnRUZXh0LmZvbnRTaXplXG4gICAgPyBjdXJyZW50VGV4dC5mb250U2l6ZVxuICAgIDogdGV4dFNpemVcbiAgICBcbiAgICBWaXNpYmlsaXR5Q29tcG9uZW50LmdldE11dGFibGUoYnViYmxlLnRleHQpLnZpc2libGUgPSB0cnVlXG4gICAgVHJhbnNmb3JtLmdldE11dGFibGUoYnViYmxlLnRleHQpLnBvc2l0aW9uLnkgPSB0ZXh0WVxuXG4gICAgaWYgKGN1cnJlbnRUZXh0LmF1ZGlvKSB7XG4gICAgICAgIEF1ZGlvU291cmNlLmNyZWF0ZU9yUmVwbGFjZShidWJibGUuc291bmRQbGF5ZXIsIHtcbiAgICAgICAgICAgIGF1ZGlvQ2xpcFVybDogY3VycmVudFRleHQuYXVkaW8sXG4gICAgICAgICAgICBsb29wOiBmYWxzZSxcbiAgICAgICAgICAgIHBsYXlpbmc6IGZhbHNlXG4gICAgICAgIH0pXG4gICAgICAgIGxldCBhdWRpbyA9IEF1ZGlvU291cmNlLmdldE11dGFibGUoYnViYmxlLnNvdW5kUGxheWVyKVxuICAgICAgICBhdWRpby52b2x1bWUgPSAwLjVcbiAgICAgICAgYXVkaW8ucGxheWluZyA9IHRydWVcbiAgICB9IGVsc2UgaWYgKGJ1YmJsZS5zb3VuZCkge1xuICAgICAgICBBdWRpb1NvdXJjZS5jcmVhdGVPclJlcGxhY2UoYnViYmxlLnNvdW5kUGxheWVyLCB7XG4gICAgICAgICAgICBhdWRpb0NsaXBVcmw6IGJ1YmJsZS5zb3VuZCxcbiAgICAgICAgICAgIGxvb3A6IGZhbHNlLFxuICAgICAgICAgICAgcGxheWluZzogZmFsc2VcbiAgICAgICAgfSlcbiAgICAgICAgbGV0IGF1ZGlvID0gQXVkaW9Tb3VyY2UuZ2V0TXV0YWJsZShidWJibGUuc291bmRQbGF5ZXIpXG4gICAgICAgIGF1ZGlvLnZvbHVtZSA9IDAuNVxuICAgICAgICBhdWRpby5wbGF5aW5nID0gdHJ1ZVxuICAgIH1cblxuICB9XG5cbi8vIFByb2dyZXNzZXMgdGV4dFxuZXhwb3J0IGZ1bmN0aW9uIG5leHQobnBjOkVudGl0eSk6IHZvaWQge1xuICAgIGxldCBidWJibGUgPSBidWJibGVzLmdldChucGMpXG5cbiAgICBpZihidWJibGUuaXNCdWJibGVPcGVuKXtcbiAgICAgIGxldCBjdXJyZW50VGV4dCA9IGJ1YmJsZS5zY3JpcHRbYnViYmxlLmluZGV4XVxuXG4gICAgICBpZighY3VycmVudFRleHQpe1xuICAgICAgICBjdXJyZW50VGV4dCA9IGJ1YmJsZS5zY3JpcHRbYnViYmxlLmluZGV4LTFdXG4gICAgICB9XG4gICAgXG4gICAgICAgIGlmIChjdXJyZW50VGV4dC50cmlnZ2VyZWRCeU5leHQpIHtcbiAgICAgICAgICBjdXJyZW50VGV4dC50cmlnZ2VyZWRCeU5leHQoKVxuICAgICAgICB9XG4gICAgXG4gICAgICAgIGlmIChjdXJyZW50VGV4dC5pc0VuZE9mRGlhbG9nKSB7XG4gICAgICAgICAgY2xvc2VCdWJibGUobnBjKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgXG4gICAgICAgLy8gVXBkYXRlIGFjdGl2ZSB0ZXh0XG4gICAgICAgICBidWJibGUuaW5kZXgrK1xuICAgIFxuICAgICAgICAvLyBVcGRhdGUgYWN0aXZlIHRleHQgd2l0aCBuZXcgYWN0aXZlIHRleHRcbiAgICAgICAgY3VycmVudFRleHQgPSBidWJibGUuc2NyaXB0W2J1YmJsZS5pbmRleF1cbiAgICBcbiAgICAgICAgaWYgKGN1cnJlbnRUZXh0LnRleHQubGVuZ3RoIDwgbWF4TGVuZ3RoSHVnZUJ1YmJsZSkge1xuICAgICAgICAgIGN1cnJlbnRUZXh0LnRleHQuc2xpY2UoMCwgbWF4TGVuZ3RoSHVnZUJ1YmJsZSlcbiAgICAgICAgfVxuICAgIFxuICAgICAgICBUZXh0U2hhcGUuZ2V0TXV0YWJsZShidWJibGUudGV4dCkudGV4dCA9IFwiXCJcbiAgICBcbiAgICAgICAgYWRqdXN0QnViYmxlKG5wYywgY3VycmVudFRleHQudGV4dC5sZW5ndGgpXG4gICAgXG4gICAgICAgIGJlZ2luVHlwaW5nKFxuICAgICAgICAgICAgbnBjLFxuICAgICAgICAgICAgY3VycmVudFRleHQudGV4dCxcbiAgICAgICAgICAgIGJ1YmJsZS5pbmRleCxcbiAgICAgICAgICAgIGN1cnJlbnRUZXh0LnRpbWVPbiA/IGN1cnJlbnRUZXh0LnRpbWVPbiA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGN1cnJlbnRUZXh0LnR5cGVTcGVlZCA/IGN1cnJlbnRUZXh0LnR5cGVTcGVlZCA6IHVuZGVmaW5lZCBcbiAgICAgICAgKVxuICAgICAgbGF5b3V0RGlhbG9nV2luZG93KG5wYywgYnViYmxlLmluZGV4KVxuICAgIH1cblxuICAgIFxuICB9XG5cbmZ1bmN0aW9uIHNldFVWU2VjdGlvbihcblx0c2VjdGlvbjogSW1hZ2VTZWN0aW9uLFxuXHRzaXplWDogbnVtYmVyLFxuXHRzaXplWTogbnVtYmVyXG4gICkge1xuXHRyZXR1cm4gc2V0VVZzKFxuICAgICAgICB7eDogIHNlY3Rpb24uc291cmNlTGVmdCEgLyBzaXplWCwgeTogKHNpemVZIC0gc2VjdGlvbi5zb3VyY2VUb3AhIC0gc2VjdGlvbi5zb3VyY2VIZWlnaHQpIC8gc2l6ZVl9LFxuICAgICAgICB7eDogIChzZWN0aW9uLnNvdXJjZUxlZnQhICsgc2VjdGlvbi5zb3VyY2VXaWR0aCkgLyBzaXplWCwgeTogKHNpemVZIC0gc2VjdGlvbi5zb3VyY2VUb3AhIC0gc2VjdGlvbi5zb3VyY2VIZWlnaHQpIC8gc2l6ZVl9LFxuICAgICAgICB7eDogIChzZWN0aW9uLnNvdXJjZUxlZnQhICsgc2VjdGlvbi5zb3VyY2VXaWR0aCkgLyBzaXplWCwgeTogIChzaXplWSAtIHNlY3Rpb24uc291cmNlVG9wISkgLyBzaXplWX0sXG4gICAgICAgIHt4OiAgc2VjdGlvbi5zb3VyY2VMZWZ0ISAvIHNpemVYLCB5OiAoc2l6ZVkgLSBzZWN0aW9uLnNvdXJjZVRvcCEpIC8gc2l6ZVl9LFxuXHQpXG4gIH1cblxuZnVuY3Rpb24gc2V0VVZzKFxuXHRfdXYwMDogYW55LFxuXHRfdXYxMDogYW55LFxuXHRfdXYxMTogYW55LFxuXHRfdXYwMTogYW55XG4gICkge1xuXG5cdHJldHVybiBbXG5cdCAgX3V2MDAueCxcblx0ICBfdXYwMC55LFxuICBcbiAgICBfdXYwMS54LFxuXHQgIF91djAxLnksXG4gIFxuXHQgIF91djExLngsXG5cdCAgX3V2MTEueSxcblxuICAgIF91djEwLngsXG5cdCAgX3V2MTAueSxcblxuXHQgIFxuXHQgIC8vLS0tLVxuXHQgIF91djAwLngsXG5cdCAgX3V2MDAueSxcblxuICAgIF91djAxLngsXG5cdCAgX3V2MDEueSxcbiAgICBcbiAgICBfdXYxMS54LFxuXHQgIF91djExLnksXG4gICAgXG5cdCAgX3V2MTAueCxcblx0ICBfdXYxMC55LFxuICBcblx0IFxuICBcblx0IFxuXHRdXG4gIH1cblxuICBsZXQgYnViYmxlT3B0aW9uczphbnkgPSB7XG4gICAgc2hvcnQ6IHtcbiAgICAgIHNvdXJjZVdpZHRoOiAxMTYgKiAyLFxuICAgICAgc291cmNlSGVpZ2h0OiA4NCAqIDIsXG4gICAgICBzb3VyY2VMZWZ0OiAzMDUgKiAyLFxuICAgICAgc291cmNlVG9wOiA0MTcgKiAyLFxuICAgIH0sXG4gICAgbm9ybWFsOiB7XG4gICAgICBzb3VyY2VXaWR0aDogMjg2ICogMixcbiAgICAgIHNvdXJjZUhlaWdodDogODQgKiAyLFxuICAgICAgc291cmNlTGVmdDogOCAqIDIsXG4gICAgICBzb3VyY2VUb3A6IDQxNyAqIDIsXG4gICAgfSxcbiAgICBsb25nOiB7XG4gICAgICBzb3VyY2VXaWR0aDogNDk3ICogMixcbiAgICAgIHNvdXJjZUhlaWdodDogMTUzICogMixcbiAgICAgIHNvdXJjZUxlZnQ6IDYgKiAyLFxuICAgICAgc291cmNlVG9wOiAyNTQgKiAyLFxuICAgIH0sXG4gICAgaHVnZToge1xuICAgICAgc291cmNlV2lkdGg6IDQ5NyAqIDIsXG4gICAgICBzb3VyY2VIZWlnaHQ6IDIzOSAqIDIsXG4gICAgICBzb3VyY2VMZWZ0OiA2ICogMixcbiAgICAgIHNvdXJjZVRvcDogNyAqIDIsXG4gICAgfSxcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QnViYmxlVGV4dExlbmd0aCh0ZXh0OnN0cmluZyl7XG4gICAgaWYodGV4dC5sZW5ndGggPj0gbWF4TGVuZ3RoSHVnZUJ1YmJsZSl7XG4gICAgICAgIHJldHVybiA0MFxuICAgIH1cbiAgICBlbHNlIGlmKHRleHQubGVuZ3RoID49IG1heExlbmd0aExvbmdCdWJibGUpe1xuICAgICAgICByZXR1cm4gNDBcbiAgICB9XG4gICAgZWxzZSBpZih0ZXh0Lmxlbmd0aCA+PSBtYXhMZW5ndGhOb3JtYWxCdWJibGUpe1xuICAgICAgICByZXR1cm4gNDBcbiAgICB9XG4gICAgZWxzZSBpZih0ZXh0Lmxlbmd0aCA+PSBtYXhMZW5ndGhTaG9ydEJ1YmJsZSl7XG4gICAgICAgIHJldHVybiA0MFxuICAgIH1cbiAgfSJdfQ==
package/dist/dialog.d.ts CHANGED
@@ -42,8 +42,8 @@ export declare function positionImageX(): any;
42
42
  export declare function positionImageY(): any;
43
43
  export declare function imageWidth(): any;
44
44
  export declare function imageHeight(): any;
45
- export declare function getPortrait(): any;
46
- export declare function getImage(): any;
45
+ export declare function getPortrait(): string;
46
+ export declare function getImage(): string;
47
47
  export declare function getText(): any;
48
48
  export declare function getTextColor(): Color4.MutableColor4;
49
49
  export declare function getTheme(): any;
package/dist/dialog.js CHANGED
@@ -1,4 +1,3 @@
1
- import * as utils from '@dcl-sdk/utils';
2
1
  import { AudioSource, engine } from "@dcl/sdk/ecs";
3
2
  import { activeNPC, clearNPC, closeDialogWindow, isActiveNpcSet, npcDataComponent, setActiveNPC, stopWalking } from "./npc";
4
3
  import { IsTypingDialog } from "./components";
@@ -6,6 +5,7 @@ import { NPCState } from "./types";
6
5
  import { leftClickSection, leftClickSectionbBlack, lightTheme, section, skipButtonSection, skipButtonSectionBlack } from './ui';
7
6
  import { getBubbleTextLength } from './bubble';
8
7
  import { Color4 } from '@dcl/sdk/math';
8
+ import { delayedFunction } from './utils/utils';
9
9
  export const npcDialogComponent = new Map();
10
10
  export const npcDialogTypingSystems = new Map();
11
11
  export const npcDialogInputListener = new Map();
@@ -121,10 +121,16 @@ export function imageHeight() {
121
121
  return !isActiveNpcSet() ? "" : npcDialogComponent.get(activeNPC).imageHeight;
122
122
  }
123
123
  export function getPortrait() {
124
- return !isActiveNpcSet() ? "" : npcDialogComponent.get(activeNPC).currentPortrait;
124
+ if (!isActiveNpcSet())
125
+ return lightTheme;
126
+ const p = npcDialogComponent.get(activeNPC).currentPortrait;
127
+ return typeof p === 'string' && p.length >= 0 ? p : lightTheme;
125
128
  }
126
129
  export function getImage() {
127
- return !isActiveNpcSet() ? "" : npcDialogComponent.get(activeNPC).dialogImageTexture;
130
+ if (!isActiveNpcSet())
131
+ return "";
132
+ const img = npcDialogComponent.get(activeNPC).dialogImageTexture;
133
+ return typeof img === 'string' ? img : "";
128
134
  }
129
135
  export function getText() {
130
136
  return !isActiveNpcSet() ? "" : npcDialogComponent.get(activeNPC).visibleText;
@@ -209,6 +215,8 @@ export function buttonClick(button) {
209
215
  }
210
216
  export function closeDialog(npc) {
211
217
  let dialogData = npcDialogComponent.get(npc);
218
+ if (!dialogData)
219
+ return;
212
220
  dialogData.visible = false;
213
221
  dialogData.typing = false;
214
222
  dialogData.visibleText = "";
@@ -324,7 +332,7 @@ function beginTyping(npc) {
324
332
  dialogData.margin = -25;
325
333
  }
326
334
  console.log(dialogData);
327
- utils.timers.setTimeout(function () {
335
+ delayedFunction(() => {
328
336
  console.log('setting question to true');
329
337
  dialogData.isQuestion = true;
330
338
  }, 700);
@@ -537,4 +545,4 @@ export function closeTag(dialogData, newChars) {
537
545
  }
538
546
  return;
539
547
  }
540
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2RpYWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssS0FBSyxNQUFNLGdCQUFnQixDQUFBO0FBRXZDLE9BQU8sRUFBRSxXQUFXLEVBQVUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFjLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQVksV0FBVyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2xKLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUMsT0FBTyxFQUFxQixRQUFRLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEksT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQXFCLElBQUksR0FBRyxFQUFFLENBQUE7QUFDN0QsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQXFCLElBQUksR0FBRyxFQUFFLENBQUE7QUFDakUsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQW9CLElBQUksR0FBRyxFQUFFLENBQUE7QUFFaEUsTUFBTSxDQUFOLElBQVksV0FNVDtBQU5ILFdBQVksV0FBVztJQUNuQixtREFBVyxDQUFBO0lBQ1gsaURBQVUsQ0FBQTtJQUNWLDZDQUFRLENBQUE7SUFDUixtREFBVyxDQUFBO0lBQ1gsbURBQVcsQ0FBQTtBQUNiLENBQUMsRUFOUyxXQUFXLEtBQVgsV0FBVyxRQU1wQjtBQUVILE1BQU0sQ0FBQyxJQUFJ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O1FBQ0gsVUFBVSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUE7SUFDN0IsQ0FBQztJQUVELElBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFDLENBQUM7UUFDNUMsVUFBVSxDQUFDLGtCQUFrQixHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUE7UUFDOUUsVUFBVSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7UUFDL0osVUFBVSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO1FBQzlKLFVBQVUsQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUE7UUFDdkosVUFBVSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMs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QUMsZ0JBQWdCLEVBQUUsQ0FBQTtZQUMzQyxDQUFDO1FBQ0gsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLElBQUksSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0IsSUFBSSxXQUFXLENBQUMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzNELElBQUksT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDMUQsVUFBVSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQTtZQUN0RCxDQUFDO1lBT0QsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQzVDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQTtZQUMzQyxDQUFDO1FBQ0gsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLElBQUksSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDOUIsSUFBSSxXQUFXLENBQUMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzNELElBQUksT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDMUQsVUFBVSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQTtZQUN0RCxDQUFDO1lBT0QsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQzVDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQTtZQUMzQyxDQUFDO1FBQ0gs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TyxHQUFFLElBQUksQ0FBQTtZQUVmLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBQyxDQUFDO2dCQUMxQyxRQUFRLEdBQUUsSUFBSSxDQUFBO1lBRWhCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUcsQ0FBQyxPQUFPLElBQUksUUFBUSxFQUFDLENBQUM7UUFDdkIsT0FBTTtJQUNSLENBQUM7SUFFRCxPQUFNLFVBQVUsQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksR0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFDLENBQUM7UUFDN0gsVUFBVSxDQUFDLFlBQVksSUFBRSxDQUFDLENBQUE7SUFDNUIsQ0FBQztJQUNELE9BQU07QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnQGRjbC1zZGsvdXRpbHMnXG5cbmltcG9ydCB7IEF1ZGlvU291cmNlLCBFbnRpdHksIGVuZ2luZSB9IGZyb20gXCJAZGNsL3Nkay9lY3NcIjtcbmltcG9ydCB7IGFjdGl2ZU5QQywgY2xlYXJOUEMsIGNsb3NlRGlhbG9nV2luZG93LCBmb2xsb3dQYXRoLCBpc0FjdGl2ZU5wY1NldCwgbnBjRGF0YUNvbXBvbmVudCwgc2V0QWN0aXZlTlBDLCBzdG9wUGF0aCwgc3RvcFdhbGtpbmcgfSBmcm9tIFwiLi9ucGNcIjtcbmltcG9ydCB7IElzVHlwaW5nRGlhbG9nIH0gZnJvbSBcIi4vY29tcG9uZW50c1wiO1xuaW1wb3J0IHsgaGFuZGxlRGlhbG9nVHlwaW5nIH0gZnJvbSBcIi4vc3lzdGVtc1wiO1xuaW1wb3J0IHsgRGlhbG9nLCBJbWFnZURhdGEsIE5QQ1N0YXRlIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IGxlZnRDbGlja1NlY3Rpb24sIGxlZnRDbGlja1NlY3Rpb25iQmxhY2ssIGxpZ2h0VGhlbWUsIHNlY3Rpb24sIHNraXBCdXR0b25TZWN0aW9uLCBza2lwQnV0dG9uU2VjdGlvbkJsYWNrIH0gZnJvbSAnLi91aSc7XG5pbXBvcnQgeyBnZXRCdWJibGVUZXh0TGVuZ3RoIH0gZnJvbSAnLi9idWJibGUnO1xuaW1wb3J0IHsgQ29sb3I0IH0gZnJvbSAnQGRjbC9zZGsvbWF0aCc7XG5cblxuZXhwb3J0IGNvbnN0IG5wY0RpYWxvZ0NvbXBvbmVudDogTWFwPEVudGl0eSwgYW55PiA9IG5ldyBNYXAoKVxuZXhwb3J0IGNvbnN0IG5wY0RpYWxvZ1R5cGluZ1N5c3RlbXM6IE1hcDxFbnRpdHksIGFueT4gPSBuZXcgTWFwKClcbmV4cG9ydCBjb25zdCBucGNEaWFsb2dJbnB1dExpc3RlbmVyOiBNYXA8RW50aXR5LGFueT4gPSBuZXcgTWFwKClcblxuZXhwb3J0IGVudW0gQ29uZmlybU1vZGUge1xuICAgIENvbmZpcm0gPSAwLFxuICAgIENhbmNlbCA9IDEsXG4gICAgTmV4dCA9IDIsXG4gICAgQnV0dG9uMyA9IDMsXG4gICAgQnV0dG9uNCA9IDRcbiAgfVxuXG5leHBvcnQgbGV0IFVJc2NhbGVNdWx0aXBsaWVyID0gMC43NVxuXG5sZXQgcG9ydHJhaXRYUG9zID0gLTUwICogVUlzY2FsZU11bHRpcGxpZXIgXG5sZXQgcG9ydHJhaXRZUG9zID0gMjAgKiBVSXNjYWxlTXVsdGlwbGllclxuXG5sZXQgaW1hZ2VYUG9zID0gMzUwICogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBpbWFnZVlQb3MgPSA1MCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5cbmxldCBwb3J0cmFpdFNjYWxlID0gMjU2ICogVUlzY2FsZU11bHRpcGxpZXIgXG5sZXQgaW1hZ2VTY2FsZSA9IDI1NiAqIFVJc2NhbGVNdWx0aXBsaWVyIFxuXG5sZXQgdGV4dFNpemUgPSAyNCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgdGV4dFlQb3MgPSAxMCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5cbmxldCBidXR0b25XaWR0aCA9IDE3NCogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBidXR0b25IZWlnaHQgPSA0NiogVUlzY2FsZU11bHRpcGxpZXJcblxuXG5sZXQgYnV0dG9uVGV4dFNpemUgPSAyMCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5cbmxldCBidXR0b24xWFBvcyA9IDE1MCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgYnV0dG9uMlhQb3MgPSAtODAgKiBVSXNjYWxlTXVsdGlwbGllclxubGV0IGJ1dHRvbjNYUG9zID0gLTgwICogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBidXR0b240WFBvcyA9IDE1MCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5cbmxldCBidXR0b24xWVBvcyA9IC02NSAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgYnV0dG9uMllQb3MgPSAtNjUgKiBVSXNjYWxlTXVsdGlwbGllclxubGV0IGJ1dHRvbjFZUG9zNCA9IC0yMCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgYnV0dG9uMllQb3M0ID0gLTIwICogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBidXR0b24zWVBvcyA9IC04MCAqIFVJc2NhbGVNdWx0aXBsaWVyXG5sZXQgYnV0dG9uNFlQb3MgPSAtODAgKiBVSXNjYWxlTXVsdGlwbGllclxuXG5sZXQgc2tpcEJ1dHRvblhQb3MgPSAtMzAwICogVUlzY2FsZU11bHRpcGxpZXJcbmxldCBza2lwQnV0dG9uWVBvcyA9IC0xMDAgKiBVSXNjYWxlTXVsdGlwbGllclxuXG5sZXQgYnV0dG9uSWNvbldpZHRoID0gMjYgKiBVSXNjYWxlTXVsdGlwbGllclxubGV0IGJ1dHRvbkljb25IZWlnaHQgPSAyNiAqIFVJc2NhbGVNdWx0aXBsaWVyXG5cbi8vXG5cbmV4cG9ydCBmdW5jdGlvbiBhZGREaWFsb2cobnBjOkVudGl0eSwgc291bmQ/OnN0cmluZywgZGVmYXVsdFBvcnRyYWl0PzpJbWFnZURhdGEpe1xuICAgIGNvbnNvbGUubG9nKCdhZGRpbmcgZGlhbG9nIGZvciBucGMnLCBucGMpXG4gICAgbnBjRGlhbG9nQ29tcG9uZW50LnNldChucGMsIHtcbiAgICAgICAgdHlwaW5nOnRydWUsXG4gICAgICAgIHZpc2libGU6ZmFsc2UsXG4gICAgICAgIHZpc2libGVUZXh0OlwiXCIsXG4gICAgICAgIHZpc2libGVDaGFyczowLFxuICAgICAgICBmdWxsVGV4dDpcIlwiLFxuICAgICAgICB0aW1lcjowLFxuICAgICAgICBzcGVlZDozMCxcbiAgICAgICAgb3JpZ2luYWxTY3JpcHQ6W10sXG4gICAgICAgIHNjcmlwdDpbXSxcbiAgICAgICAgaW5kZXg6MCxcbiAgICAgICAgc291bmQ6IHNvdW5kID8gc291bmQgOiB1bmRlZmluZWQsXG4gICAgICAgIHNvdW5kUGxheWVyOiBzb3VuZCA/IGVuZ2luZS5hZGRFbnRpdHkoKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZm9udFNpemU6MjIsXG4gICAgICAgIGlzUXVlc3Rpb246ZmFsc2UsXG4gICAgICAgIGJ1dHRvbnM6MCxcbiAgICAgICAgZGlzcGxheVBvcnRyYWl0OiBkZWZhdWx0UG9ydHJhaXQgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHRQb3J0cmFpdDogZGVmYXVsdFBvcnRyYWl0ID8gZGVmYXVsdFBvcnRyYWl0IDogbnVsbCxcbiAgICAgICAgZGVmYXVsdFBvcnRyYWl0VGV4dHVyZTogZGVmYXVsdFBvcnRyYWl0ID8gZGVmYXVsdFBvcnRyYWl0LnBhdGggOiBsaWdodFRoZW1lLFxuICAgICAgICBjdXJyZW50UG9ydHJhaXQ6IGRlZmF1bHRQb3J0cmFpdCA/IGRlZmF1bHRQb3J0cmFpdC5wYXRoIDogbGlnaHRUaGVtZSxcbiAgICAgICAgcG9ydHJhaXRXaWR0aDogZGVmYXVsdFBvcnRyYWl0ICYmIGRlZmF1bHRQb3J0cmFpdC53aWR0aCA/IGRlZmF1bHRQb3J0cmFpdC53aWR0aCAqIFVJc2NhbGVNdWx0aXBsaWVyIDogcG9ydHJhaXRTY2FsZSxcbiAgICAgICAgcG9ydHJhaXRIZWlnaHQ6IGRlZmF1bHRQb3J0cmFpdCAmJiBkZWZhdWx0UG9ydHJhaXQuaGVpZ2h0ID8gZGVmYXVsdFBvcnRyYWl0LmhlaWdodCAqIFVJc2NhbGVNdWx0aXBsaWVyIDogcG9ydHJhaXRTY2FsZSxcbiAgICAgICAgcG9ydHJhaXRYOiBkZWZhdWx0UG9ydHJhaXQgJiYgZGVmYXVsdFBvcnRyYWl0Lm9mZnNldFggPyBkZWZhdWx0UG9ydHJhaXQub2Zmc2V0WCAqIFVJc2NhbGVNdWx0aXBsaWVyICsgcG9ydHJhaXRYUG9zIDogcG9ydHJhaXRYUG9zLFxuICAgICAgICBwb3J0cmFpdFk6ICBkZWZhdWx0UG9ydHJhaXQgJiYgZGVmYXVsdFBvcnRyYWl0Lm9mZnNldFkgPyBkZWZhdWx0UG9ydHJhaXQub2Zmc2V0WSAqIFVJc2NhbGVNdWx0aXBsaWVyICsgcG9ydHJhaXRZUG9zIDogcG9ydHJhaXRZUG9zLFxuICAgICAgICBwb3J0YWl0U0hlaWdodDogZGVmYXVsdFBvcnRyYWl0ICYmIGRlZmF1bHRQb3J0cmFpdC5zZWN0aW9uICYmIGRlZmF1bHRQb3J0cmFpdC5zZWN0aW9uLnNvdXJjZUhlaWdodCA/IGRlZmF1bHRQb3J0cmFpdC5zZWN0aW9uLnNvdXJjZUhlaWdodCA6IDI1NixcbiAgICAgICAgcG9ydHJhaXRTV2lkdGg6IGRlZmF1bHRQb3J0cmFpdCAmJiBkZWZhdWx0UG9ydHJhaXQuc2VjdGlvbiAmJiBkZWZhdWx0UG9ydHJhaXQuc2VjdGlvbi5zb3VyY2VXaWR0aCA/IGRlZmF1bHRQb3J0cmFpdC5zZWN0aW9uLnNvdXJjZVdpZHRoIDogMjU2LFxuICAgICAgICBwb3J0YWl0U1RvcDogZGVmYXVsdFBvcnRyYWl0ICYmIGRlZmF1bHRQb3J0cmFpdC5zZWN0aW9uICYmIGRlZmF1bHRQb3J0cmFpdC5zZWN0aW9uLnNvdXJjZVRvcCA/IGRlZmF1bHRQb3J0cmFpdC5zZWN0aW9uLnNvdXJjZVRvcCA6IDAsXG4gICAgICAgIHBvcnRyYWl0U0xlZnQ6IGRlZmF1bHRQb3J0cmFpdCAmJiBkZWZhdWx0UG9ydHJhaXQuc2VjdGlvbiAmJiBkZWZhdWx0UG9ydHJhaXQuc2VjdGlvbi5zb3VyY2VMZWZ0ID8gZGVmYXVsdFBvcnRyYWl0LnNlY3Rpb24uc291cmNlTGVmdCA6IDBcbiAgICB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGxheUltYWdlKCl7XG4gIHJldHVybiAhaXNBY3RpdmVOcGNTZXQoKSA/IGZhbHNlIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLmRpc3BsYXlJbWFnZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGxheVBvcnRyYWl0KCl7XG4gIHJldHVybiAhaXNBY3RpdmVOcGNTZXQoKSA/IGZhbHNlIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLmRpc3BsYXlQb3J0cmFpdFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGxheVNraXBhYmxlKCl7XG4gIHJldHVybiAhaXNBY3RpdmVOcGNTZXQoKSA/IGZhbHNlIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLnNraXBhYmxlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTa2lwYWJsZVRoZW1lKCl7XG4gIHJldHVybiAhaXNBY3RpdmVOcGNTZXQoKSA/IHNraXBCdXR0b25TZWN0aW9uQmxhY2sgOiBucGNEYXRhQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLnRoZW1lID09IGxpZ2h0VGhlbWUgPyBza2lwQnV0dG9uU2VjdGlvbkJsYWNrIDogc2tpcEJ1dHRvblNlY3Rpb25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExlZnRDbGlja1RoZW1lKCl7XG4gIHJldHVybiAhaXNBY3RpdmVOcGNTZXQoKSA/IGxlZnRDbGlja1NlY3Rpb24gOiBucGNEYXRhQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLnRoZW1lID09IGxpZ2h0VGhlbWUgPyBsZWZ0Q2xpY2tTZWN0aW9uIDogbGVmdENsaWNrU2VjdGlvbmJCbGFja1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9zaXRpb25UZXh0WCgpe1xuICByZXR1cm4gIWlzQWN0aXZlTnBjU2V0KCkgPyBcIlwiIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLnBvc2l0aW9uWFxufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9zaXRpb25UZXh0WSgpe1xuICByZXR1cm4gIWlzQWN0aXZlTnBjU2V0KCkgPyBcIlwiIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLnBvc2l0aW9uWVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9zaXRpb25Qb3J0YWl0WCgpe1xuICByZXR1cm4gIWlzQWN0aXZlTnBjU2V0KCkgPyBcIlwiIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLnBvcnRyYWl0WFxufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9zaXRpb25Qb3J0YWl0WSgpe1xuICByZXR1cm4gIWlzQWN0aXZlTnBjU2V0KCkgPyBcIlwiIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLnBvcnRyYWl0WVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9ydHJhaXRXaWR0aCgpe1xuICByZXR1cm4gIWlzQWN0aXZlTnBjU2V0KCkgPyBcIlwiIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLnBvcnRyYWl0V2lkdGhcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvcnRyYWl0SGVpZ2h0KCl7XG4gIHJldHVybiAhaXNBY3RpdmVOcGNTZXQoKSA/IFwiXCIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykucG9ydHJhaXRIZWlnaHRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvc2l0aW9uSW1hZ2VYKCl7XG4gIHJldHVybiAhaXNBY3RpdmVOcGNTZXQoKSA/IFwiXCIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykuaW1hZ2VYXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3NpdGlvbkltYWdlWSgpe1xuICByZXR1cm4gIWlzQWN0aXZlTnBjU2V0KCkgPyBcIlwiIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLmltYWdlWVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW1hZ2VXaWR0aCgpe1xuICByZXR1cm4gIWlzQWN0aXZlTnBjU2V0KCkgPyBcIlwiIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLmltYWdlV2lkdGhcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGltYWdlSGVpZ2h0KCl7XG4gIHJldHVybiAhaXNBY3RpdmVOcGNTZXQoKSA/IFwiXCIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykuaW1hZ2VIZWlnaHRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBvcnRyYWl0KCl7XG4gIHJldHVybiAhaXNBY3RpdmVOcGNTZXQoKSA/IFwiXCIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykuY3VycmVudFBvcnRyYWl0XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbWFnZSgpe1xuICByZXR1cm4gIWlzQWN0aXZlTnBjU2V0KCkgPyBcIlwiIDogbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLmRpYWxvZ0ltYWdlVGV4dHVyZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGV4dCgpe1xuICAgIHJldHVybiAhaXNBY3RpdmVOcGNTZXQoKSA/IFwiXCIgOiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykudmlzaWJsZVRleHRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRleHRDb2xvcigpe1xuICByZXR1cm4gIWlzQWN0aXZlTnBjU2V0KCkgPyBDb2xvcjQuQmxhY2soKSA6IG5wY0RhdGFDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykudGhlbWUgPT0gbGlnaHRUaGVtZSA/IENvbG9yNC5CbGFjaygpIDogQ29sb3I0LldoaXRlKClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRoZW1lKCl7XG4gIHJldHVybiAhaXNBY3RpdmVOcGNTZXQoKSA/IGxpZ2h0VGhlbWUgOiBucGNEYXRhQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLnRoZW1lXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRCdXR0b25UZXh0KGJ1dHRvbjpudW1iZXIpe1xuICAgIGxldCB0ZXh0ID0gXCJcIlxuXG4gICAgaWYoYWN0aXZlTlBDICE9IDAgJiYgbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMpKXtcbiAgICAgICAgbGV0IGRpYWxvZ0RhdGEgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQylcbiAgICAgICAgaWYoZGlhbG9nRGF0YS5pc1F1ZXN0aW9uICYmIGRpYWxvZ0RhdGEuYnV0dG9ucyA+IGJ1dHRvbil7XG4gICAgICAgICAgICB0ZXh0ID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uYnV0dG9uc1tidXR0b25dLmxhYmVsXG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRleHRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldGJ1dHRvblNpemUoYnV0dG9uOm51bWJlcikge1xuICBsZXQgQnV0dG9uU2l6ZTogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkXG4gIGlmIChhY3RpdmVOUEMgIT0gMCAmJiBucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQykpIHtcbiAgICAgIGxldCBkaWFsb2dEYXRhID0gbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpO1xuICAgICAgaWYgKGRpYWxvZ0RhdGEuaXNRdWVzdGlvbiAmJiBkaWFsb2dEYXRhLmJ1dHRvbnMgPiBidXR0b24pIHtcbiAgICAgICAgICBpZiAoZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uYnV0dG9uc1tidXR0b25dLnNpemUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBCdXR0b25TaXplID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uYnV0dG9uc1tidXR0b25dPy5zaXplO1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgfVxuICByZXR1cm4gQnV0dG9uU2l6ZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9udFNpemUoKXtcbiAgICByZXR1cm4gIWlzQWN0aXZlTnBjU2V0KCkgPyAyMiA6IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDKS5mb250U2l6ZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QnV0dG9uRm9udFNpemUoYnV0dG9uOm51bWJlcil7XG4gIGxldCBCdXR0b25Gb250U2l6ZTogbnVtYmVyID0gMFxuICBpZiAoYWN0aXZlTlBDICE9IDAgJiYgbnBjRGlhbG9nQ29tcG9uZW50LmhhcyhhY3RpdmVOUEMpKSB7XG4gICAgICBsZXQgZGlhbG9nRGF0YSA9IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDKTtcbiAgICAgIGlmIChkaWFsb2dEYXRhLmlzUXVlc3Rpb24gJiYgZGlhbG9nRGF0YS5idXR0b25zID4gYnV0dG9uKSB7XG4gICAgICAgICAgaWYgKGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmJ1dHRvbnNbYnV0dG9uXS5mb250U2l6ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBCdXR0b25Gb250U2l6ZSA9IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmJ1dHRvbnNbYnV0dG9uXT8uZm9udFNpemU7XG4gICAgICAgICAgfSBlbHNlIHtCdXR0b25Gb250U2l6ZSA9IDE2fVxuICAgICAgfVxuICB9XG4gIHJldHVybiBCdXR0b25Gb250U2l6ZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGxheURpYWxvZygpe1xuICAgIHJldHVybiAhaXNBY3RpdmVOcGNTZXQoKSA/IGZhbHNlIDogIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDKS52aXNpYmxlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRXaW5kb3dIZWlnaHQoKSB7XG4gIGxldCB3aW5kb3dIZWlnaHRzOiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWRcbiAgaWYgKGFjdGl2ZU5QQyAhPSAwICYmIG5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDKSkge1xuICAgICAgbGV0IGRpYWxvZ0RhdGEgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQyk7XG4gICAgICBpZiAoZGlhbG9nRGF0YS5pc1F1ZXN0aW9uKSB7XG4gICAgICAgICAgaWYgKGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLndpbmRvd0hlaWdodCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB3aW5kb3dIZWlnaHRzID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0/LndpbmRvd0hlaWdodDtcbiAgICAgICAgICB9XG4gICAgICB9XG4gIH1cbiAgcmV0dXJuIHdpbmRvd0hlaWdodHNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3BsYXlCdXR0b24oYnV0dG9uOm51bWJlcil7XG4gICAgcmV0dXJuICFpc0FjdGl2ZU5wY1NldCgpID8gZmFsc2UgOiAgbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLmlzUXVlc3Rpb24gJiYgbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLmJ1dHRvbnMgPj0gYnV0dG9uXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXNwbGF5Rmlyc3RCdXR0b25Db250YWluZXIoKXtcbiAgICByZXR1cm4gIWlzQWN0aXZlTnBjU2V0KCkgPyBmYWxzZSA6ICBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykuaXNRdWVzdGlvbiAmJiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykuYnV0dG9ucyA+PSAxXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXNwbGF5U2Vjb25kQnV0dG9uQ29udGFpbmVyKCl7XG4gICAgcmV0dXJuICFpc0FjdGl2ZU5wY1NldCgpID8gZmFsc2UgOiAgbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLmlzUXVlc3Rpb24gJiYgbnBjRGlhbG9nQ29tcG9uZW50LmdldChhY3RpdmVOUEMpLmJ1dHRvbnMgPj0gM1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGV4dFBvc2l0aW9uKCl7XG4gICAgLy9jb25zb2xlLmxvZyhucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykuYnV0dG9ucylcbiAgICByZXR1cm4gIWlzQWN0aXZlTnBjU2V0KCkgPyB7dG9wOjAsIGxlZnQ6MH0gOiB7dG9wOm5wY0RpYWxvZ0NvbXBvbmVudC5nZXQoYWN0aXZlTlBDKS5tYXJnaW4gKyBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykucG9zaXRpb25ZLCBsZWZ0OiBucGNEaWFsb2dDb21wb25lbnQuZ2V0KGFjdGl2ZU5QQykucG9zaXRpb25YfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnV0dG9uQ2xpY2soYnV0dG9uOm51bWJlcil7XG4gICAgaWYoaXNBY3RpdmVOcGNTZXQoKSl7XG4gICAgICAgIGNvbmZpcm1UZXh0KGFjdGl2ZU5QQywgYnV0dG9uKVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsb3NlRGlhbG9nKG5wYzpFbnRpdHkpe1xuICAgIGxldCBkaWFsb2dEYXRhID0gbnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpXG4gICAgZGlhbG9nRGF0YS52aXNpYmxlID0gZmFsc2VcbiAgICBkaWFsb2dEYXRhLnR5cGluZyA9IGZhbHNlXG4gICAgZGlhbG9nRGF0YS52aXNpYmxlVGV4dCA9IFwiXCJcbiAgICBkaWFsb2dEYXRhLnZpc2libGVDaGFycyA9IDBcbiAgICBkaWFsb2dEYXRhLmZ1bGxUZXh0ID0gXCJcIlxuICAgIGRpYWxvZ0RhdGEudGltZXIgPSAwXG4gICAgZGlhbG9nRGF0YS5pbmRleCA9IDBcbiAgICBkaWFsb2dEYXRhLnNjcmlwdC5sZW5ndGggPSAwXG4gICAgZGlhbG9nRGF0YS5idXR0b25zID0gMFxuICAgIGRpYWxvZ0RhdGEubWFyZ2luID0gMFxuICAgIGRpYWxvZ0RhdGEuZGlzcGxheVBvcnRyYWl0ID0gZmFsc2VcbiAgICBkaWFsb2dEYXRhLnNraXBhYmxlID0gZmFsc2VcbiAgICBkaWFsb2dEYXRhLmRpc3BsYXlJbWFnZSA9IGZhbHNlXG4gICAgY29uc29sZS5sb2coJ2RpYWxvZyBkYXRhIGlzIG5vdyAnLCBkaWFsb2dEYXRhKVxuXG4gICAgaWYoSXNUeXBpbmdEaWFsb2cuaGFzKG5wYykpe1xuICAgICAgSXNUeXBpbmdEaWFsb2cuZGVsZXRlRnJvbShucGMpXG4gICAgfVxuICAgIC8vIGlmKG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykubWFudWFsU3RvcCl7XG4gICAgLy8gICBjb25zb2xlLmxvZygnZGlhbG9nIGVuZGVkLCBuZWVkdG8gd2FsayBhZ2FpbicpXG4gICAgLy8gICBmb2xsb3dQYXRoKG5wYylcbiAgICAvLyB9XG4gICAgY2xlYXJOUEMoKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFsayhucGM6RW50aXR5LCBkaWFsb2c6RGlhbG9nW10sIHN0YXJ0SW5kZXg/Om51bWJlciB8IHN0cmluZywgZHVyYXRpb24/Om51bWJlcil7XG4gICAgbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS5pbnRyb2R1Y2VkID0gdHJ1ZVxuICAgIGlmKG5wY0RpYWxvZ0NvbXBvbmVudC5oYXMobnBjKSl7XG5cbiAgICAgICAgc2V0QWN0aXZlTlBDKG5wYylcbiAgICAgICAgaWYobnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS5zdGF0ZSA9PSBOUENTdGF0ZS5GT0xMT1dQQVRIKXtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcInNwZWFraW5nIGRpYWxvZywgbmVlZCB0byBzdG9wIHBhdGhcIilcbiAgICAgICAgICBzdG9wV2Fsa2luZyhucGMpXG4gICAgICAgIH1cblxuICAgICAgICBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLnN0YXRlID0gTlBDU3RhdGUuVEFMS0lOR1xuXG5cbiAgICAgICAgbGV0IGluZGV4OmFueVxuXG4gICAgICAgIGlmICghc3RhcnRJbmRleCkge1xuICAgICAgICAgIGluZGV4ID0gMFxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBzdGFydEluZGV4ID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIGluZGV4ID0gc3RhcnRJbmRleFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGluZGV4ID0gZmluZERpYWxvZ0J5TmFtZShkaWFsb2csIHN0YXJ0SW5kZXgpXG4gICAgICAgIH1cblxuICAgICAgICBvcGVuRGlhbG9nKG5wYyxkaWFsb2csIGluZGV4KVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9wZW5EaWFsb2cobnBjOkVudGl0eSwgZGlhbG9nOkRpYWxvZ1tdLCBzdGFydEluZGV4Om51bWJlcil7XG4gICAgY29uc29sZS5sb2coJ3NjcmlwdCB0byB0YWxrIGlzJywgZGlhbG9nKVxuICAgIGxldCBkaWFsb2dEYXRhID0gbnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpXG4gICAgZGlhbG9nRGF0YS5zY3JpcHQgPSBkaWFsb2cuc2xpY2UoKVxuICAgIGRpYWxvZ0RhdGEuaW5kZXggPSBzdGFydEluZGV4XG5cbiAgICBjb25zb2xlLmxvZygnZGlhbG9nIGRhdGEgaXMgbm93JywgZGlhbG9nRGF0YSlcbiAgICBcbiAgICBsZXQgY3VycmVudFRleHQ6IERpYWxvZyA9IGRpYWxvZ1tzdGFydEluZGV4XSA/IGRpYWxvZ1tzdGFydEluZGV4XSA6IHsgdGV4dDogJycgfVxuXG4gICAgaWYgKGN1cnJlbnRUZXh0LmF1ZGlvKSB7XG4gICAgICAgIEF1ZGlvU291cmNlLmNyZWF0ZU9yUmVwbGFjZShkaWFsb2dEYXRhLnNvdW5kUGxheWVyLCB7XG4gICAgICAgICAgICBhdWRpb0NsaXBVcmw6IGN1cnJlbnRUZXh0LmF1ZGlvLFxuICAgICAgICAgICAgbG9vcDogZmFsc2UsXG4gICAgICAgICAgICBwbGF5aW5nOiBmYWxzZVxuICAgICAgICB9KVxuICAgICAgICBsZXQgYXVkaW8gPSBBdWRpb1NvdXJjZS5nZXRNdXRhYmxlKGRpYWxvZ0RhdGEuc291bmRQbGF5ZXIpXG4gICAgICAgIGF1ZGlvLnZvbHVtZSA9IDAuNVxuICAgICAgICBhdWRpby5wbGF5aW5nID0gdHJ1ZVxuICAgIH0gZWxzZSBpZiAoZGlhbG9nRGF0YS5zb3VuZCkge1xuICAgICAgICBBdWRpb1NvdXJjZS5jcmVhdGVPclJlcGxhY2UoZGlhbG9nRGF0YS5zb3VuZFBsYXllciwge1xuICAgICAgICAgICAgYXVkaW9DbGlwVXJsOiBkaWFsb2dEYXRhLnNvdW5kLFxuICAgICAgICAgICAgbG9vcDogZmFsc2UsXG4gICAgICAgICAgICBwbGF5aW5nOiBmYWxzZVxuICAgICAgICB9KVxuICAgICAgICBsZXQgYXVkaW8gPSBBdWRpb1NvdXJjZS5nZXRNdXRhYmxlKGRpYWxvZ0RhdGEuc291bmRQbGF5ZXIpXG4gICAgICAgIGF1ZGlvLnZvbHVtZSA9IDAuNVxuICAgICAgICBhdWRpby5wbGF5aW5nID0gdHJ1ZVxuICAgIH1cblxuICAgIC8vVE9ET1xuICAgIC8vc2V0IGltYWdlIG9uIHRoZSByaWdodFxuICAgIC8vc2V0IHRleHRcbiAgICBiZWdpblR5cGluZyhucGMpXG59IFxuXG5leHBvcnQgZnVuY3Rpb24gYWRkTGluZUJyZWFrKHRleHQ6c3RyaW5nLCBidWJibGU/OmJvb2xlYW4pe1xuICByZXR1cm4gbGluZUJyZWFrKHRleHQsIGJ1YmJsZT8gZ2V0QnViYmxlVGV4dExlbmd0aCh0ZXh0KSEgOiA0NSlcbn1cblxuZnVuY3Rpb24gYmVnaW5UeXBpbmcobnBjOkVudGl0eSl7XG4gICAgbGV0IGRpYWxvZ0RhdGEgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYylcbiAgICBkaWFsb2dEYXRhLmZ1bGxUZXh0ID0gYWRkTGluZUJyZWFrKGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLnRleHQpIC8vZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0udGV4dFxuICAgIGRpYWxvZ0RhdGEudmlzaWJsZSA9IHRydWVcbiAgICBkaWFsb2dEYXRhLnR5cGluZyA9IHRydWVcbiAgICBkaWFsb2dEYXRhLnZpc2libGVUZXh0ID0gXCJcIlxuICAgIGRpYWxvZ0RhdGEudmlzaWJsZUNoYXJzID0gMFxuICAgIGRpYWxvZ0RhdGEudGltZXIgPSAwXG4gICAgZGlhbG9nRGF0YS5pc1F1ZXN0aW9uID0gZmFsc2VcbiAgICBkaWFsb2dEYXRhLmJ1dHRvbnMgPSAwXG4gICAgZGlhbG9nRGF0YS5kaXNwbGF5UG9ydHJhaXQgPSBmYWxzZVxuICAgIGRpYWxvZ0RhdGEuZGlzcGxheUltYWdlID0gZmFsc2VcbiAgICBkaWFsb2dEYXRhLnNraXBhYmxlID0gZmFsc2VcblxuICAgIGxldCBjdXJyZW50VGV4dDogRGlhbG9nID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0gPyBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XSA6IHsgdGV4dDogJycgfVxuICAgIGlmKGN1cnJlbnRUZXh0LnBvcnRyYWl0KXtcbiAgICAgIGRpYWxvZ0RhdGEuY3VycmVudFBvcnRyYWl0ID0gY3VycmVudFRleHQucG9ydHJhaXQucGF0aFxuXG4gICAgICBkaWFsb2dEYXRhLnBvcnRyYWl0WCA9IGN1cnJlbnRUZXh0LnBvcnRyYWl0Lm9mZnNldFhcbiAgICAgID8gY3VycmVudFRleHQucG9ydHJhaXQub2Zmc2V0WCAqIFVJc2NhbGVNdWx0aXBsaWVyICsgcG9ydHJhaXRYUG9zXG4gICAgICA6IHBvcnRyYWl0WFBvc1xuXG4gICAgICBkaWFsb2dEYXRhLnBvcnRyYWl0WSA9IGN1cnJlbnRUZXh0LnBvcnRyYWl0Lm9mZnNldFlcbiAgICAgID8gY3VycmVudFRleHQucG9ydHJhaXQub2Zmc2V0WSAqIFVJc2NhbGVNdWx0aXBsaWVyICsgcG9ydHJhaXRZUG9zXG4gICAgICA6IHBvcnRyYWl0WVBvc1xuXG4gICAgICBkaWFsb2dEYXRhLnBvcnRyYWl0V2lkdGggPSBjdXJyZW50VGV4dC5wb3J0cmFpdC53aWR0aCA/IGN1cnJlbnRUZXh0LnBvcnRyYWl0LndpZHRoICogVUlzY2FsZU11bHRpcGxpZXIgOiBwb3J0cmFpdFNjYWxlXG5cbiAgICAgIGRpYWxvZ0RhdGEucG9ydHJhaXRIZWlnaHQgPSBjdXJyZW50VGV4dC5wb3J0cmFpdC5oZWlnaHQgPyBjdXJyZW50VGV4dC5wb3J0cmFpdC5oZWlnaHQgKiBVSXNjYWxlTXVsdGlwbGllciA6IHBvcnRyYWl0U2NhbGVcbiAgICAgIGRpYWxvZ0RhdGEuZGlzcGxheVBvcnRyYWl0ID0gdHJ1ZVxuICAgIH1lbHNlIGlmKGRpYWxvZ0RhdGEuZGVmYXVsdFBvcnRyYWl0KXtcbiAgICAgIGRpYWxvZ0RhdGEuY3VycmVudFBvcnRyYWl0ID0gZGlhbG9nRGF0YS5kZWZhdWx0UG9ydHJhaXRUZXh0dXJlXG4gICAgICBkaWFsb2dEYXRhLmRpc3BsYXlQb3J0cmFpdCA9IHRydWVcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgIGRpYWxvZ0RhdGEuZGlzcGxheVBvcnRyYWl0ID0gZmFsc2VcbiAgICB9XG5cbiAgICBpZihkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5pc1F1ZXN0aW9uKXtcbiAgICAgICAgZGlhbG9nRGF0YS5idXR0b25zID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uYnV0dG9ucy5sZW5ndGhcbiAgICAgICAgaWYoZGlhbG9nRGF0YS5idXR0b25zID49IDMpe1xuICAgICAgICAgICAgZGlhbG9nRGF0YS5tYXJnaW4gPSAtMjVcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmKGRpYWxvZ0RhdGEuYnV0dG9ucyA+PTEpe1xuICAgICAgICAgICAgZGlhbG9nRGF0YS5tYXJnaW4gPSAtMjVcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKGRpYWxvZ0RhdGEpXG4gICAgICAgIHV0aWxzLnRpbWVycy5zZXRUaW1lb3V0KFxuICAgICAgICAgICAgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3NldHRpbmcgcXVlc3Rpb24gdG8gdHJ1ZScpXG4gICAgICAgICAgICAgICAgZGlhbG9nRGF0YS5pc1F1ZXN0aW9uID0gdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIDcwMFxuICAgICAgICAgIClcbiAgICB9XG5cbiAgICBkaWFsb2dEYXRhLm9wZW5UaW1lID0gTWF0aC5mbG9vcihEYXRlLm5vdygpKVxuICAgIGlmKGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmZvbnRTaXplKXtcbiAgICAgICAgZGlhbG9nRGF0YS5mb250U2l6ZSA9IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmZvbnRTaXplXG4gICAgfVxuXG4gICAgaWYoZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uc2tpcGFibGUpe1xuICAgICAgZGlhbG9nRGF0YS5za2lwYWJsZSA9IHRydWVcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgIGRpYWxvZ0RhdGEuc2tpcGFibGUgPSBmYWxzZVxuICAgIH1cblxuICAgIGlmKGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmltYWdlKXtcbiAgICAgIGRpYWxvZ0RhdGEuZGlhbG9nSW1hZ2VUZXh0dXJlID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uaW1hZ2UucGF0aFxuICAgICAgZGlhbG9nRGF0YS5pbWFnZVggPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5pbWFnZS5vZmZzZXRYID8gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uaW1hZ2Uub2Zmc2V0WCAqIFVJc2NhbGVNdWx0aXBsaWVyICsgaW1hZ2VYUG9zIDogLTQwXG4gICAgICBkaWFsb2dEYXRhLmltYWdlWSA9IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmltYWdlLm9mZnNldFkgPyBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5pbWFnZS5vZmZzZXRZICogVUlzY2FsZU11bHRpcGxpZXIgKyBpbWFnZVlQb3MgOiA0MFxuICAgICAgZGlhbG9nRGF0YS5pbWFnZUhlaWdodCA9IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmltYWdlLmhlaWdodCA/IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmhlaWdodCAqIFVJc2NhbGVNdWx0aXBsaWVyIDogaW1hZ2VTY2FsZVxuICAgICAgZGlhbG9nRGF0YS5pbWFnZVdpZHRoID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uaW1hZ2Uud2lkdGggPyBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS53aWR0aCAqIFVJc2NhbGVNdWx0aXBsaWVyIDogaW1hZ2VTY2FsZVxuICAgICAgZGlhbG9nRGF0YS5kaXNwbGF5SW1hZ2UgPSB0cnVlXG4gICAgfVxuXG4gICAgZGlhbG9nRGF0YS5wb3NpdGlvblggPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5vZmZzZXRYID8gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0ub2Zmc2V0WCAqIFVJc2NhbGVNdWx0aXBsaWVyIDogJzIyJSdcbiAgICBkaWFsb2dEYXRhLnBvc2l0aW9uWSA9IGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLm9mZnNldFkgPyBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5vZmZzZXRZICogVUlzY2FsZU11bHRpcGxpZXIgKyB0ZXh0WVBvcyA6IHRleHRZUG9zXG4gICAgXG4gICAgaWYoZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uaGFzT3duUHJvcGVydHkoXCJ0eXBlU3BlZWRcIikpe1xuICAgICAgICBkaWFsb2dEYXRhLnNwZWVkID0gZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0udHlwZVNwZWVkXG4gICAgfVxuICAgIGVsc2V7XG4gICAgICAgIGRpYWxvZ0RhdGEuc3BlZWQgPSAzMFxuICAgIH1cblxuICAgIGlmKGRpYWxvZ0RhdGEuc3BlZWQgPD0gMCl7XG4gICAgICAgIHJ1c2hUZXh0KG5wYylcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgICAgaWYoIUlzVHlwaW5nRGlhbG9nLmhhcyhucGMpKXtcbiAgICAgICAgICAgIElzVHlwaW5nRGlhbG9nLmNyZWF0ZShucGMpXG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgLy8gaWYoIW5wY0RpYWxvZ1R5cGluZ1N5c3RlbXMuaGFzKG5wYykpe1xuICAgICAgICAvLyAgICAgbnBjRGlhbG9nVHlwaW5nU3lzdGVtcy5zZXQobnBjLGVuZ2luZS5hZGRTeXN0ZW0oaGFuZGxlRGlhbG9nVHlwaW5nKSlcbiAgICAgICAgLy8gfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZExpbmVCcmVha3MoZGlhbG9nOkRpYWxvZ1tdLCBidWJibGU/OmJvb2xlYW4pe1xuICAgIGxldCBjbGVhbmVkOkRpYWxvZ1tdID0gZGlhbG9nLnNsaWNlKClcbiAgICBjbGVhbmVkLmZvckVhY2goKGQpPT57XG4gICAgICBkLnRleHQgPSBsaW5lQnJlYWsoZC50ZXh0LCBidWJibGU/IGdldEJ1YmJsZVRleHRMZW5ndGgoZC50ZXh0KSEgOiA1MClcbiAgICB9KVxuICAgIHJldHVybiBjbGVhbmVkXG59XG5cbmZ1bmN0aW9uIGxpbmVCcmVhayh0ZXh0OiBzdHJpbmcsIG1heExpbmVMZW5ndGg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3Qgd29yZHMgPSB0ZXh0LnNwbGl0KCcgJyk7XG4gICAgbGV0IGN1cnJlbnRMaW5lID0gJyc7XG4gICAgY29uc3QgbGluZXMgPSBbXTtcbiAgXG4gICAgZm9yIChjb25zdCB3b3JkIG9mIHdvcmRzKSB7XG4gICAgICBpZiAoY3VycmVudExpbmUubGVuZ3RoICsgd29yZC5sZW5ndGggKyAxIDw9IG1heExpbmVMZW5ndGgpIHtcbiAgICAgICAgY3VycmVudExpbmUgKz0gYCR7d29yZH0gYDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxpbmVzLnB1c2goY3VycmVudExpbmUudHJpbSgpKTtcbiAgICAgICAgY3VycmVudExpbmUgPSBgJHt3b3JkfSBgO1xuICAgICAgfVxuICAgIH1cbiAgICBsaW5lcy5wdXNoKGN1cnJlbnRMaW5lLnRyaW0oKSk7XG4gICAgcmV0dXJuIGxpbmVzLmpvaW4oJ1xcbicpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlRGlhbG9nQ2xpY2soKXtcbiAgY29uc29sZS5sb2coJ2hhbmRsaW5nIGNsaWNrJylcbiAgICBsZXQgbnBjID0gYWN0aXZlTlBDXG4gICAgaWYobnBjRGlhbG9nQ29tcG9uZW50LmhhcyhucGMpKXtcbiAgICAgICAgbGV0IGRpYWxvZ0RhdGEgPSBucGNEaWFsb2dDb21wb25lbnQuZ2V0KG5wYylcbiAgICAgICAgaWYoIWRpYWxvZ0RhdGEudmlzaWJsZSB8fCAoTWF0aC5mbG9vcihEYXRlLm5vdygpKSAtIGRpYWxvZ0RhdGEub3BlblRpbWUgIDwgMTAwKSkgcmV0dXJuXG4gICAgICAgIFxuICAgICAgICBpZihkaWFsb2dEYXRhLnR5cGluZyl7XG4gICAgICAgICAgICBydXNoVGV4dChucGMpXG4gICAgICAgIH1cbiAgICAgICAgZWxzZXtcbiAgICAgICAgICAgIGNvbmZpcm1UZXh0KG5wYywgQ29uZmlybU1vZGUuTmV4dClcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1c2hUZXh0KG5wYzpFbnRpdHkpe1xuICAgIGxldCBkaWFsb2dEYXRhID0gbnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpXG4gICAgZGlhbG9nRGF0YS50eXBpbmcgPSBmYWxzZVxuICAgIGRpYWxvZ0RhdGEudGltZXIgPSAwXG4gICAgZGlhbG9nRGF0YS52aXNpYmxlQ2hhcnMgPSBkaWFsb2dEYXRhLmZ1bGxUZXh0Lmxlbmd0aFxuICAgIGRpYWxvZ0RhdGEudmlzaWJsZVRleHQgPSBkaWFsb2dEYXRhLmZ1bGxUZXh0XG4gICAgLy9lbmdpbmUucmVtb3ZlU3lzdGVtKG5wY0RpYWxvZ1R5cGluZ1N5c3RlbXMuZ2V0KG5wYykpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25maXJtVGV4dChucGM6RW50aXR5LCBtb2RlOiBDb25maXJtTW9kZSk6IHZvaWQge1xuICBjb25zb2xlLmxvZygnY29uZmlybSB0ZXh0JylcbiAgICBsZXQgZGlhbG9nRGF0YSA9IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQobnBjKVxuICAgIGRpYWxvZ0RhdGEub3BlblRpbWUgPSBNYXRoLmZsb29yKERhdGUubm93KCkpXG5cbiAgICBsZXQgY3VycmVudFRleHQgPSBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XVxuICAgIC8vIFVwZGF0ZSBhY3RpdmUgdGV4dFxuICAgIGlmIChtb2RlID09IENvbmZpcm1Nb2RlLk5leHQpIHtcbiAgICAgICAgaWYgKCFjdXJyZW50VGV4dC5pc1F1ZXN0aW9uKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFRleHQudHJpZ2dlcmVkQnlOZXh0KSB7XG4gICAgICAgICAgICBjdXJyZW50VGV4dC50cmlnZ2VyZWRCeU5leHQoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGN1cnJlbnRUZXh0LmlzRW5kT2ZEaWFsb2cpIHtcbiAgICAgICAgICAgIGNsb3NlRGlhbG9nKG5wYylcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGlhbG9nRGF0YS5pbmRleCsrXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9kZSA9PSBDb25maXJtTW9kZS5Db25maXJtKSB7XG4gICAgICAgIGlmIChjdXJyZW50VGV4dC5idXR0b25zICYmIGN1cnJlbnRUZXh0LmJ1dHRvbnMubGVuZ3RoID49IDEpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGN1cnJlbnRUZXh0LmJ1dHRvbnNbMF0uZ29Ub0RpYWxvZyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIGRpYWxvZ0RhdGEuaW5kZXggPSBjdXJyZW50VGV4dC5idXR0b25zWzBdLmdvVG9EaWFsb2dcbiAgICAgICAgICB9IFxuXG4gICAgICAgICAgLy9UT0RPXG4gICAgICAgICAgLy9hbGxvdyBkaWFsb2dzIHRvIGJlIGluZGV4IGJ5IG5hbWVcbiAgICAgICAgLy8gICBlbHNlIHtcbiAgICAgICAgLy8gICAgIHRoaXMuYWN0aXZlVGV4dElkID0gZmluZERpYWxvZ0J5TmFtZSh0aGlzLk5QQ1NjcmlwdCwgY3VycmVudFRleHQuYnV0dG9uc1swXS5nb1RvRGlhbG9nKVxuICAgICAgICAvLyAgIH1cbiAgICAgICAgICBpZiAoY3VycmVudFRleHQuYnV0dG9uc1swXS50cmlnZ2VyZWRBY3Rpb25zKSB7XG4gICAgICAgICAgICBjdXJyZW50VGV4dC5idXR0b25zWzBdLnRyaWdnZXJlZEFjdGlvbnMoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtb2RlID09IENvbmZpcm1Nb2RlLkNhbmNlbCkge1xuICAgICAgICBpZiAoY3VycmVudFRleHQuYnV0dG9ucyAmJiBjdXJyZW50VGV4dC5idXR0b25zLmxlbmd0aCA+PSAxKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBjdXJyZW50VGV4dC5idXR0b25zWzFdLmdvVG9EaWFsb2cgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBkaWFsb2dEYXRhLmluZGV4ID0gY3VycmVudFRleHQuYnV0dG9uc1sxXS5nb1RvRGlhbG9nXG4gICAgICAgICAgfSBcblxuICAgICAgICAgIC8vVE9ET1xuICAgICAgICAgIC8vYWxsb3cgZGlhbG9ncyB0byBiZSBpbmRleCBieSBuYW1lXG4gICAgICAgIC8vICAgZWxzZSB7XG4gICAgICAgIC8vICAgICB0aGlzLmFjdGl2ZVRleHRJZCA9IGZpbmREaWFsb2dCeU5hbWUodGhpcy5OUENTY3JpcHQsIGN1cnJlbnRUZXh0LmJ1dHRvbnNbMF0uZ29Ub0RpYWxvZylcbiAgICAgICAgLy8gICB9XG4gICAgICAgICAgaWYgKGN1cnJlbnRUZXh0LmJ1dHRvbnNbMV0udHJpZ2dlcmVkQWN0aW9ucykge1xuICAgICAgICAgICAgY3VycmVudFRleHQuYnV0dG9uc1sxXS50cmlnZ2VyZWRBY3Rpb25zKClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9kZSA9PSBDb25maXJtTW9kZS5CdXR0b24zKSB7XG4gICAgICAgIGlmIChjdXJyZW50VGV4dC5idXR0b25zICYmIGN1cnJlbnRUZXh0LmJ1dHRvbnMubGVuZ3RoID49IDEpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGN1cnJlbnRUZXh0LmJ1dHRvbnNbMl0uZ29Ub0RpYWxvZyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIGRpYWxvZ0RhdGEuaW5kZXggPSBjdXJyZW50VGV4dC5idXR0b25zWzJdLmdvVG9EaWFsb2dcbiAgICAgICAgICB9IFxuXG4gICAgICAgICAgLy9UT0RPXG4gICAgICAgICAgLy9hbGxvdyBkaWFsb2dzIHRvIGJlIGluZGV4IGJ5IG5hbWVcbiAgICAgICAgLy8gICBlbHNlIHtcbiAgICAgICAgLy8gICAgIHRoaXMuYWN0aXZlVGV4dElkID0gZmluZERpYWxvZ0J5TmFtZSh0aGlzLk5QQ1NjcmlwdCwgY3VycmVudFRleHQuYnV0dG9uc1swXS5nb1RvRGlhbG9nKVxuICAgICAgICAvLyAgIH1cbiAgICAgICAgICBpZiAoY3VycmVudFRleHQuYnV0dG9uc1syXS50cmlnZ2VyZWRBY3Rpb25zKSB7XG4gICAgICAgICAgICBjdXJyZW50VGV4dC5idXR0b25zWzJdLnRyaWdnZXJlZEFjdGlvbnMoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtb2RlID09IENvbmZpcm1Nb2RlLkJ1dHRvbjQpIHtcbiAgICAgICAgaWYgKGN1cnJlbnRUZXh0LmJ1dHRvbnMgJiYgY3VycmVudFRleHQuYnV0dG9ucy5sZW5ndGggPj0gMSkge1xuICAgICAgICAgIGlmICh0eXBlb2YgY3VycmVudFRleHQuYnV0dG9uc1szXS5nb1RvRGlhbG9nID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgZGlhbG9nRGF0YS5pbmRleCA9IGN1cnJlbnRUZXh0LmJ1dHRvbnNbM10uZ29Ub0RpYWxvZ1xuICAgICAgICAgIH0gXG5cbiAgICAgICAgICAvL1RPRE9cbiAgICAgICAgICAvL2FsbG93IGRpYWxvZ3MgdG8gYmUgaW5kZXggYnkgbmFtZVxuICAgICAgICAvLyAgIGVsc2Uge1xuICAgICAgICAvLyAgICAgdGhpcy5hY3RpdmVUZXh0SWQgPSBmaW5kRGlhbG9nQnlOYW1lKHRoaXMuTlBDU2NyaXB0LCBjdXJyZW50VGV4dC5idXR0b25zWzBdLmdvVG9EaWFsb2cpXG4gICAgICAgIC8vICAgfVxuICAgICAgICAgIGlmIChjdXJyZW50VGV4dC5idXR0b25zWzNdLnRyaWdnZXJlZEFjdGlvbnMpIHtcbiAgICAgICAgICAgIGN1cnJlbnRUZXh0LmJ1dHRvbnNbM10udHJpZ2dlcmVkQWN0aW9ucygpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICBiZWdpblR5cGluZyhucGMpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBza2lwRGlhbG9ncyhucGM6RW50aXR5KSB7XG4gIGxldCBkaWFsb2dEYXRhID0gbnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpXG4gIGlmICghZGlhbG9nRGF0YS52aXNpYmxlIHx8ICtEYXRlLm5vdygpIC0gZGlhbG9nRGF0YS5vcGVuVGltZSA8IDEwMCkgcmV0dXJuXG5cbiAgd2hpbGUgKFxuICAgIGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdICYmXG4gICAgICBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5za2lwYWJsZSAmJlxuICAgICAgICBkaWFsb2dEYXRhLnNjcmlwdFtkaWFsb2dEYXRhLmluZGV4XS5pc1F1ZXN0aW9uXG4gICl7XG4gICAgaWYoZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0udHJpZ2dlcmVkQnlOZXh0KXtcbiAgICAgIGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLnRyaWdnZXJlZEJ5TmV4dCgpXG4gICAgfVxuXG4gICAgaWYoZGlhbG9nRGF0YS5zY3JpcHRbZGlhbG9nRGF0YS5pbmRleF0uc2tpcGFibGUgJiZcbiAgICAgIGRpYWxvZ0RhdGEuc2NyaXB0W2RpYWxvZ0RhdGEuaW5kZXhdLmlzRW5kT2ZEaWFsb2dcbiAgICAgICl7XG4gICAgICAgIGNsb3NlRGlhbG9nV2luZG93KG5wYylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgXG4gICAgICBkaWFsb2dEYXRhLmluZGV4ICs9IDFcbiAgfVxuICBjb25maXJtVGV4dChucGMsIENvbmZpcm1Nb2RlLk5leHQpXG59XG5cbmV4cG9ydCB0eXBlIEltYWdlQXRsYXNEYXRhID0ge1xuICAgIGF0bGFzV2lkdGg6IG51bWJlcjtcbiAgICBhdGxhc0hlaWdodDogbnVtYmVyO1xuICAgIHNvdXJjZVdpZHRoOiBudW1iZXI7XG4gICAgc291cmNlSGVpZ2h0OiBudW1iZXI7XG4gICAgc291cmNlTGVmdDogbnVtYmVyO1xuICAgIHNvdXJjZVRvcDogbnVtYmVyO1xuICB9XG4gIFxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW1hZ2VBdGxhc01hcHBpbmcoZGF0YT86IEltYWdlQXRsYXNEYXRhKTogbnVtYmVyW10ge1xuICAgIGlmICghZGF0YSkgcmV0dXJuIFtdXG4gIFxuICAgIGNvbnN0IHtcbiAgICAgIGF0bGFzV2lkdGgsXG4gICAgICBhdGxhc0hlaWdodCxcbiAgICAgIHNvdXJjZVdpZHRoLFxuICAgICAgc291cmNlSGVpZ2h0LFxuICAgICAgc291cmNlVG9wLFxuICAgICAgc291cmNlTGVmdCxcbiAgICB9ID0gZGF0YVxuICBcbiAgICByZXR1cm4gW1xuICAgICAgc291cmNlTGVmdCAvIGF0bGFzV2lkdGgsIChhdGxhc0hlaWdodCAtIHNvdXJjZVRvcCAtIHNvdXJjZUhlaWdodCkgLyBhdGxhc0hlaWdodCxcbiAgICAgIHNvdXJjZUxlZnQgLyBhdGxhc1dpZHRoLCAoYXRsYXNIZWlnaHQgLSBzb3VyY2VUb3ApIC8gYXRsYXNIZWlnaHQsXG4gICAgICAoc291cmNlTGVmdCArIHNvdXJjZVdpZHRoKSAvIGF0bGFzV2lkdGgsIChhdGxhc0hlaWdodCAtIHNvdXJjZVRvcCkgLyBhdGxhc0hlaWdodCxcbiAgICAgIChzb3VyY2VMZWZ0ICsgc291cmNlV2lkdGgpIC8gYXRsYXNXaWR0aCwgKGF0bGFzSGVpZ2h0IC0gc291cmNlVG9wIC0gc291cmNlSGVpZ2h0KSAvIGF0bGFzSGVpZ2h0LFxuICAgIF1cbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiByZWFsV2lkdGgod2lkdGg/Om51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHdpZHRoID8gd2lkdGggOiBzZWN0aW9uLnNvdXJjZVdpZHRoXG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gcmVhbEhlaWdodChoZWlnaHQ/Om51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGhlaWdodCA/IGhlaWdodCA6IHNlY3Rpb24uc291cmNlSGVpZ2h0XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gZmluZERpYWxvZ0J5TmFtZShkaWFsb2dzOiBEaWFsb2dbXSwgbmFtZTogc3RyaW5nKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaWFsb2dzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoZGlhbG9nc1tpXS5uYW1lICYmIGRpYWxvZ3NbaV0ubmFtZSA9PSBuYW1lKSB7XG4gICAgICAgIHJldHVybiBpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAwXG4gIH1cblxuXG5cbmV4cG9ydCBmdW5jdGlvbiBjbG9zZVRhZyhkaWFsb2dEYXRhOmFueSwgbmV3Q2hhcnM6IG51bWJlcil7XG4gIGlmKGRpYWxvZ0RhdGEudmlzaWJsZUNoYXJzID09IDAgfHwgbmV3Q2hhcnMgPT0wICkgcmV0dXJuXG5cbmxldCBvcGVuVGFnOiBib29sZWFuID0gZmFsc2VcbmxldCBjbG9zZVRhZyA6IGJvb2xlYW4gPSBmYWxzZVxuZm9yKGxldCBpID0gZGlhbG9nRGF0YS52aXNpYmxlQ2hhcnMtbmV3Q2hhcnM7IGkgPCBkaWFsb2dEYXRhLnZpc2libGVDaGFycyA7IGkrKyl7XG4gIFxuICBpZighb3BlblRhZyl7XG4gICAgaWYoZGlhbG9nRGF0YS5mdWxsVGV4dC5zdWJzdHIoaSwgMSkgPT0gJzwnKXtcbiAgICAgIG9wZW5UYWc9IHRydWVcbiAgICAgIFxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZihkaWFsb2dEYXRhLmZ1bGxUZXh0LnN1YnN0cihpLCAxKSA9PSAnPicpe1xuICAgICAgY2xvc2VUYWc9IHRydWVcbiAgICAgIFxuICAgIH1cbiAgfVxufVxuXG5pZighb3BlblRhZyB8fCBjbG9zZVRhZyl7XHRcbiAgcmV0dXJuXG59XG5cbndoaWxlKGRpYWxvZ0RhdGEudmlzaWJsZUNoYXJzIDwgZGlhbG9nRGF0YS5mdWxsVGV4dC5sZW5ndGggJiYgZGlhbG9nRGF0YS5mdWxsVGV4dC5zdWJzdHIoZGlhbG9nRGF0YS52aXNpYmxlQ2hhcnMtMSwgMSkgIT0gJz4nKXtcbiAgZGlhbG9nRGF0YS52aXNpYmxlQ2hhcnMrPTFcbn1cbnJldHVyblxufVxuIl19
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=