@datagrok-libraries/utils 4.6.6 → 4.6.7
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/package.json
CHANGED
|
@@ -205,7 +205,7 @@ export class FormsViewer extends DG.JsViewer {
|
|
|
205
205
|
canvas.width = molSize.x * window.devicePixelRatio;
|
|
206
206
|
canvas.height = molSize.y * window.devicePixelRatio;
|
|
207
207
|
const ctx = canvas.getContext('2d');
|
|
208
|
-
ctx.fillRect(0, 0, canvas.width, canvas.height);
|
|
208
|
+
// ctx.fillRect(0, 0, canvas.width, canvas.height);
|
|
209
209
|
ctx.scale(window.devicePixelRatio, window.devicePixelRatio);
|
|
210
210
|
canvas.setAttribute('column', name);
|
|
211
211
|
gridCell.render({ context: ctx, bounds: new DG.Rect(0, 0, molSize.x, molSize.y) });
|
|
@@ -297,4 +297,4 @@ export class FormsViewer extends DG.JsViewer {
|
|
|
297
297
|
this.virtualView.setData(this.indexes.length + (this.showCurrentRow ? 1 : 0) + (this.showMouseOverRow ? 1 : 0), (i) => this.renderForm(i));
|
|
298
298
|
}
|
|
299
299
|
}
|
|
300
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMtdmlld2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZm9ybXMtdmlld2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEtBQUssSUFBSSxNQUFNLG1CQUFtQixDQUFDO0FBQzFDLE9BQU8sRUFBYSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8scUJBQXFCLENBQUM7QUFFN0IsTUFBTSwyQkFBMkIsR0FBRywrREFBK0QsQ0FBQztBQUNwRyxNQUFNLHdCQUF3QixHQUFHLEVBQUUsQ0FBQztBQUVwQyxNQUFNLE9BQU8sV0FBWSxTQUFRLEVBQUUsQ0FBQyxRQUFRO0lBQzFDLElBQUksSUFBSSxLQUFhLE9BQU8sYUFBYSxDQUFDLENBQUMsQ0FBQztJQWtCNUMsSUFBSSxTQUFTLENBQUMsRUFBZ0I7UUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLGVBQWUsQ0FBQyxJQUFjO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLFFBQWtCO1FBQzVCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENB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LENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2ZpbHRlcn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0ICcuLi8uLi9jc3MvZm9ybXMuY3NzJztcblxuY29uc3QgQ09MU19MSU1JVF9FWENFRURFRF9XQVJOSU5HID0gYE51bWJlciBvZiBjb2x1bW5zIGlzIG1vcmUgdGhhbiAyMC4gRmlyc3QgMjAgY29sdW1ucyBhcmUgc2hvd25gO1xuY29uc3QgQk9PTEVBTl9JTlBVVF9UT1BfTUFSR0lOID0gMTU7XG5cbmV4cG9ydCBjbGFzcyBGb3Jtc1ZpZXdlciBleHRlbmRzIERHLkpzVmlld2VyIHtcbiAgZ2V0IHR5cGUoKTogc3RyaW5nIHsgcmV0dXJuICdGb3Jtc1ZpZXdlcic7IH1cbiAgbW9sZWN1bGVTaXplOiAnc21hbGwnIHwgJ25vcm1hbCcgfCAnbGFyZ2UnO1xuICBmaWVsZHNDb2x1bW5OYW1lczogc3RyaW5nW107XG4gIGNvbG9yQ29kZTogYm9vbGVhbjtcbiAgc2hvd0N1cnJlbnRSb3c6IGJvb2xlYW47XG4gIHNob3dNb3VzZU92ZXJSb3c6IGJvb2xlYW47XG4gIHNob3dTZWxlY3RlZFJvd3M6IGJvb2xlYW47XG4gIHNob3dGaXhlZFJvd3MgPSBmYWxzZTtcbiAgaW5kZXhlczogbnVtYmVyW107XG4gIGNvbHVtbkhlYWRlcnNEaXY6IEhUTUxEaXZFbGVtZW50O1xuICB2aXJ0dWFsVmlldzogREcuVmlydHVhbFZpZXc7XG4gIGNvbHVtbkxhYmVsV2lkdGg6IG51bWJlciA9IDA7XG4gIGN1cnJlbnRSb3dJbmRpY2F0b3IgPSB1aS5kaXYoJycsICdkNC1tdWx0aS1mb3JtLWZvcm0taW5kaWNhdG9yIGQ0LW11bHRpLWZvcm0tZm9ybS1pbmRpY2F0b3ItY3VycmVudC1yb3cnKTtcbiAgbW91c2VPdmVyUm93SW5kaWNhdG9yID0gdWkuZGl2KCcnLCAnZDQtbXVsdGktZm9ybS1mb3JtLWluZGljYXRvciBkNC1tdWx0aS1mb3JtLWZvcm0taW5kaWNhdG9yLW1vdXNlLW92ZXItcm93Jyk7XG4gIHNwbGl0Q29sTGVmdDogSFRNTEVsZW1lbnQ7XG4gIHNwbGl0Q29sUmlnaHQ6IEhUTUxFbGVtZW50O1xuICBpbnB1dENsaWNrZWQ6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgc2V0IGRhdGFmcmFtZShkZjogREcuRGF0YUZyYW1lKSB7XG4gICAgdGhpcy5kYXRhRnJhbWUgPSBkZjtcbiAgICB0aGlzLm9uVGFibGVBdHRhY2hlZCgpO1xuICB9XG5cbiAgc2V0IGZpeGVkUm93TnVtYmVycyhpZHhzOiBudW1iZXJbXSkge1xuICAgIHRoaXMuaW5kZXhlcyA9IGlkeHM7XG4gICAgdGhpcy5zaG93Q3VycmVudFJvdyA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd01vdXNlT3ZlclJvdyA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd1NlbGVjdGVkUm93cyA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd0ZpeGVkUm93cyA9IHRydWU7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHNldCBjb2x1bW5zKGNvbE5hbWVzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuZmllbGRzQ29sdW1uTmFtZXMgPSBjb2xOYW1lcztcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldE1vbGVjdWxlU2l6ZSgpOiBERy5Qb2ludCB7XG4gICAgc3dpdGNoICh0aGlzLm1vbGVjdWxlU2l6ZSkge1xuICAgICAgY2FzZSAnbm9ybWFsJzogcmV0dXJuIG5ldyBERy5Qb2ludCgyMDAsIDEwMCk7XG4gICAgICBjYXNlICdsYXJnZSc6IHJldHVybiBuZXcgREcuUG9pbnQoMzAwLCAxNTApO1xuICAgICAgY2FzZSAnc21hbGwnOlxuICAgICAgZGVmYXVsdDogcmV0dXJuIG5ldyBERy5Qb2ludCgxMjAsIDYwKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5oZWxwVXJsID0gJ2h0dHBzOi8vZGF0YWdyb2suYWkvaGVscC92aXN1YWxpemUvdmlld2Vycy9mb3Jtcyc7XG5cbiAgICAvLyBwcm9wZXJ0aWVzXG4gICAgdGhpcy5maWVsZHNDb2x1bW5OYW1lcyA9IHRoaXMuYWRkUHJvcGVydHkoJ2ZpZWxkc0NvbHVtbk5hbWVzJywgREcuVFlQRS5DT0xVTU5fTElTVCk7XG4gICAgdGhpcy5jb2xvckNvZGUgPSB0aGlzLmJvb2woJ2NvbG9yQ29kZScsIHRydWUpO1xuICAgIHRoaXMuc2hvd0N1cnJlbnRSb3cgPSB0aGlzLmJvb2woJ3Nob3dDdXJyZW50Um93JywgdHJ1ZSk7XG4gICAgdGhpcy5zaG93TW91c2VPdmVyUm93ID0gdGhpcy5ib29sKCdzaG93TW91c2VPdmVyUm93JywgdHJ1ZSk7XG4gICAgdGhpcy5zaG93U2VsZWN0ZWRSb3dzID0gdGhpcy5ib29sKCdzaG93U2VsZWN0ZWRSb3dzJywgdHJ1ZSk7XG4gICAgdGhpcy5tb2xlY3VsZVNpemUgPSB0aGlzLnN0cmluZygnbW9sZWN1bGVTaXplJywgJ3NtYWxsJywge2Nob2ljZXM6IFsnc21hbGwnLCAnbm9ybWFsJywgJ2xhcmdlJ119KSBhcyAnc21hbGwnIHwgJ25vcm1hbCcgfCAnbGFyZ2UnO1xuXG4gICAgLy9maWVsZHNcbiAgICB0aGlzLmluZGV4ZXMgPSBbXTtcblxuICAgIC8vIGluaXRcbiAgICB0aGlzLnJvb3QuY2xhc3NMaXN0LmFkZCgnZDQtbXVsdGktZm9ybScpO1xuICAgIHRoaXMuY29sdW1uSGVhZGVyc0RpdiA9IHVpLmRpdihbXSwgJ2Q0LW11bHRpLWZvcm0taGVhZGVyJyk7XG4gICAgdGhpcy52aXJ0dWFsVmlldyA9IHVpLnZpcnR1YWxWaWV3KDAsIChpOiBudW1iZXIpID0+IHRoaXMucmVuZGVyRm9ybShpKSwgZmFsc2UsIDEpO1xuICAgIGNvbnN0IGNvbHVtbkhlYWRlcnNCb3ggPSB1aS5kaXYodGhpcy5jb2x1bW5IZWFkZXJzRGl2KTtcbiAgICBjb25zdCBmb3JtV2l0aEhlYWRlckRpdiA9IHVpLnNwbGl0SChbY29sdW1uSGVhZGVyc0JveCwgdGhpcy52aXJ0dWFsVmlldy5yb290XSwgbnVsbCwgdHJ1ZSk7XG4gICAgdGhpcy5yb290LmFwcGVuZENoaWxkKGZvcm1XaXRoSGVhZGVyRGl2KTtcblxuICAgIHRoaXMuc3BsaXRDb2xMZWZ0ID0gZm9ybVdpdGhIZWFkZXJEaXYuZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgdGhpcy5zcGxpdENvbFJpZ2h0ID0gZm9ybVdpdGhIZWFkZXJEaXYubGFzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudDtcblxuICAgIHVpLnRvb2x0aXAuYmluZCh0aGlzLmN1cnJlbnRSb3dJbmRpY2F0b3IsICdDdXJyZW50IHJvdycpO1xuICAgIHVpLnRvb2x0aXAuYmluZCh0aGlzLm1vdXNlT3ZlclJvd0luZGljYXRvciwgJ01vdXNlIG92ZXIgcm93Jyk7XG5cbiAgICB1aS50b29scy53YWl0Rm9yRWxlbWVudEluRG9tKHRoaXMucm9vdCkudGhlbigoXykgPT4ge1xuICAgICAgdGhpcy5jb2x1bW5IZWFkZXJzRGl2LnN0eWxlLmNzc1RleHQgPSBgXG4gICAgICAgIG92ZWZsb3c6aGlkZGVuIWltcG9ydGFudDtcbiAgICAgICAgbWluLXdpZHRoOiAxNTBweDtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICBgO1xuICAgICAgdGhpcy5zcGxpdENvbExlZnQuc3R5bGUuY3NzVGV4dCA9IGBcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbiFpbXBvcnRhbnQ7XG4gICAgICBgO1xuICAgICAgY29sdW1uSGVhZGVyc0JveC5zdHlsZS5jc3NUZXh0ID0gYFxuICAgICAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgICAgICAgd2lkdGg6MTAwJTtcbiAgICAgICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgICAgIGRpc3BsYXk6ZmxleDtcbiAgICAgICAgcGFkZGluZy1yaWdodDoxN3B4O1xuICAgICAgICBvdmVyZmxvdzogc2Nyb2xsIWltcG9ydGFudDtcbiAgICAgIGA7XG5cbiAgICAgIGNvbHVtbkhlYWRlcnNCb3guYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgKGU6IEV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMudmlydHVhbFZpZXcucm9vdC5zY3JvbGxUb3AgPSBjb2x1bW5IZWFkZXJzQm94LnNjcm9sbFRvcDtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnZpcnR1YWxWaWV3LnJvb3QuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgKGU6IEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbHVtbkhlYWRlcnNCb3guc2Nyb2xsVG9wID0gdGhpcy52aXJ0dWFsVmlldy5yb290LnNjcm9sbFRvcDtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdWkudG9vbHMud2FpdEZvckVsZW1lbnRJbkRvbSh0aGlzLnZpcnR1YWxWaWV3LnJvb3QpLnRoZW4oKF8pID0+IHtcbiAgICAgIHRoaXMuZml0SGVhZGVyVG9MYWJlbFdpZHRoKCk7XG4gICAgfSk7XG4gIH1cblxuICBmaXRIZWFkZXJUb0xhYmVsV2lkdGgod2lkdGg/OiBudW1iZXIpIHtcbiAgICBjb25zdCB3ID0gd2lkdGggPz8gdGhpcy5jb2x1bW5MYWJlbFdpZHRoO1xuICAgIGNvbnN0IHJvb3RXaWR0aCA9IHRoaXMucm9vdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICB0aGlzLnNwbGl0Q29sTGVmdC5zdHlsZS53aWR0aCA9IGAke3cgKyAzMH1weGA7XG4gICAgdGhpcy5zcGxpdENvbFJpZ2h0LnN0eWxlLndpZHRoID0gYCR7cm9vdFdpZHRoIC0gdyAtIDMwIC0gNH1weGA7XG4gIH1cblxuICBnZXRDb2x1bW5XaWR0aChlbDpIVE1MRWxlbWVudCkge1xuICAgIHJldHVybiBwYXJzZUludChlbC5zdHlsZS53aWR0aCk7XG4gIH1cblxuICBvblRhYmxlQXR0YWNoZWQoKSB7XG4gICAgaWYgKHRoaXMuZmllbGRzQ29sdW1uTmFtZXMgPT09IG51bGwpXG4gICAgICB0aGlzLnNldEZpZWxkc0NvbHVtbk5hbWVzKHRoaXMuZGF0YUZyYW1lLmNvbHVtbnMubmFtZXMoKSk7XG5cbiAgICBjb25zdCBzdWIgPSAoc3RyZWFtOiBPYnNlcnZhYmxlPHVua25vd24+LCBhY3Rpb246IEZ1bmN0aW9uKSA9PiB7XG4gICAgICB0aGlzLnN1YnMucHVzaChERy5kZWJvdW5jZShzdHJlYW0sIDUwKS5zdWJzY3JpYmUoKF8pID0+IGFjdGlvbigpKSk7XG4gICAgfTtcblxuICAgIHN1Yih0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24ub25DaGFuZ2VkLCAoKSA9PiB0aGlzLnJlbmRlcigpKTtcbiAgICBzdWIodGhpcy5kYXRhRnJhbWUuZmlsdGVyLm9uQ2hhbmdlZCwgKCkgPT4gdGhpcy5yZW5kZXIoKSk7XG5cbiAgICBzdWIodGhpcy5kYXRhRnJhbWUub25NZXRhZGF0YUNoYW5nZWQsICgpID0+IHRoaXMucmVuZGVyKCkpO1xuXG4gICAgc3ViKHRoaXMuZGF0YUZyYW1lLm9uQ29sdW1uc1JlbW92ZWQsICgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlRmllbGRzQ29sdW1uTmFtZXMoKTtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfSk7XG5cbiAgICBzdWIodGhpcy5kYXRhRnJhbWUub25DdXJyZW50Um93Q2hhbmdlZC5waXBlKGZpbHRlcigoXykgPT4gdGhpcy5zaG93Q3VycmVudFJvdykpLFxuICAgICAgKCkgPT4gdGhpcy52aXJ0dWFsVmlldy5yZWZyZXNoSXRlbSh0aGlzLmN1cnJlbnRSb3dQb3MhKSk7XG5cbiAgICBzdWIodGhpcy5kYXRhRnJhbWUub25Nb3VzZU92ZXJSb3dDaGFuZ2VkLnBpcGUoZmlsdGVyKChfKSA9PiB0aGlzLnNob3dNb3VzZU92ZXJSb3cpKSxcbiAgICAgICgpID0+IHRoaXMudmlydHVhbFZpZXcucmVmcmVzaEl0ZW0odGhpcy5tb3VzZU92ZXJQb3MhKSk7XG5cbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgc2V0RmllbGRzQ29sdW1uTmFtZXMoZGZDb2x1bW5zOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuZmllbGRzQ29sdW1uTmFtZXMgPSBkZkNvbHVtbnMubGVuZ3RoID4gMjAgPyBkZkNvbHVtbnMuc2xpY2UoMCwgMjApIDogZGZDb2x1bW5zO1xuICB9XG5cbiAgdXBkYXRlRmllbGRzQ29sdW1uTmFtZXMoKSB7XG4gICAgY29uc3QgbmV3Q29sdW1ucyA9IHRoaXMuZGF0YUZyYW1lLmNvbHVtbnMubmFtZXMoKTtcbiAgICBsZXQgY291bnRlciA9IHRoaXMuZmllbGRzQ29sdW1uTmFtZXMubGVuZ3RoO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnRlcjsgaSsrKSB7XG4gICAgICBjb25zdCBjb2xJZHggPSBuZXdDb2x1bW5zLmluZGV4T2YodGhpcy5maWVsZHNDb2x1bW5OYW1lc1tpXSk7XG4gICAgICBpZiAoY29sSWR4ID09PSAtMSkge1xuICAgICAgICB0aGlzLmZpZWxkc0NvbHVtbk5hbWVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgY291bnRlci0tO1xuICAgICAgICBpLS07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25Qcm9wZXJ0eUNoYW5nZWQocHJvcGVydHk6IERHLlByb3BlcnR5KTogdm9pZCB7XG4gICAgaWYgKChwcm9wZXJ0eS5uYW1lID09PSAnc2hvd0N1cnJlbnRSb3cnIHx8IHByb3BlcnR5Lm5hbWUgPT09ICdzaG93TW91c2VPdmVyUm93JyB8fFxuICAgICAgcHJvcGVydHkubmFtZSA9PT0gJ3Nob3dTZWxlY3RlZFJvd3MnICYmIHByb3BlcnR5LmdldCh0aGlzKSA9PT0gdHJ1ZSkgJiYgdGhpcy5zaG93Rml4ZWRSb3dzKVxuICAgICAgZ3Jvay5zaGVsbC53YXJuaW5nKGBDYW5ub3Qgc2V0ICR7cHJvcGVydHkubmFtZX0gdG8gdHJ1ZSBzaW5jZSBmaXhlZCByb3dzIGFyZSBzZXRgKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgcmVuZGVySGVhZGVyKCkge1xuICAgIHVpLmVtcHR5KHRoaXMuY29sdW1uSGVhZGVyc0Rpdik7XG4gICAgY29uc3QgZm9ybSA9IHRoaXMucmVuZGVyRm9ybSgwLCB0cnVlKTtcbiAgICBmb3JtLmNsYXNzTGlzdC5hZGQoJ3RlbXAnKTtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZvcm0pO1xuXG4gICAgZm9yIChjb25zdCBuYW1lIG9mIHRoaXMuZmllbGRzQ29sdW1uTmFtZXMpIHtcbiAgICAgIGNvbnN0IGZvcm1GaWVsZCA9IGZvcm0ucXVlcnlTZWxlY3RvcignW2NvbHVtbj1cIicgKyBuYW1lICsgJ1wiXScpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICBpZiAoZm9ybUZpZWxkKSB7XG4gICAgICAgIGNvbnN0IGNvbHVtbkxhYmVsID0gdWkuYmluZCh0aGlzLmRhdGFGcmFtZS5jb2wobmFtZSksIHVpLmRpdlRleHQobmFtZSkpO1xuICAgICAgICBjb25zdCBjbG9zZUljb24gPSB1aS5pY29uRkEoJ3RpbWVzJywgKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZmllbGRzQ29sdW1uTmFtZXMgPSB0aGlzLmZpZWxkc0NvbHVtbk5hbWVzLmZpbHRlcigodmFsdWUpID0+IHZhbHVlICE9PSBuYW1lKTtcbiAgICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgY29sdW1uTGFiZWxDb250YWluZXIgPSB1aS5kaXYoW2NvbHVtbkxhYmVsLCBjbG9zZUljb25dLCAnZDQtbXVsdGktZm9ybS1jb2x1bW4tbmFtZSBkNC1mbGV4LXJvdycpO1xuICAgICAgICBjb25zdCBvZmZzZXRUb3AgPSBmb3JtRmllbGQudHlwZSA9PT0gJ2NoZWNrYm94JyA/XG4gICAgICAgICAgZm9ybUZpZWxkLm9mZnNldFRvcCAtIEJPT0xFQU5fSU5QVVRfVE9QX01BUkdJTiA6IGZvcm1GaWVsZC5vZmZzZXRUb3A7XG4gICAgICAgIGNvbHVtbkxhYmVsQ29udGFpbmVyLnN0eWxlLnRvcCA9IGAke29mZnNldFRvcCArIDEwfXB4YDtcbiAgICAgICAgdGhpcy5jb2x1bW5IZWFkZXJzRGl2LmFwcGVuZENoaWxkKGNvbHVtbkxhYmVsQ29udGFpbmVyKTtcbiAgICAgICAgY29sdW1uTGFiZWwub25jbGljayA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgdGhpcy5kYXRhRnJhbWUuY3VycmVudENvbCA9IHRoaXMuZGF0YUZyYW1lLmNvbChuYW1lKSE7XG4gICAgICAgIH07XG4gICAgICAgIGlmIChjb2x1bW5MYWJlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCA+IHRoaXMuY29sdW1uTGFiZWxXaWR0aClcbiAgICAgICAgICB0aGlzLmNvbHVtbkxhYmVsV2lkdGggPSBjb2x1bW5MYWJlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICAgICAgY29sdW1uTGFiZWxDb250YWluZXIub25tb3VzZWVudGVyID0gKGU6IE1vdXNlRXZlbnQpID0+IGNsb3NlSWNvbi5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnO1xuICAgICAgICBjb2x1bW5MYWJlbENvbnRhaW5lci5vbm1vdXNlbGVhdmUgPSAoZTogTW91c2VFdmVudCkgPT4gY2xvc2VJY29uLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3JtLnJlbW92ZSgpO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRSb3dQb3MoKSB7IHJldHVybiB0aGlzLnNob3dDdXJyZW50Um93ID8gMCA6IG51bGw7IH1cbiAgZ2V0IG1vdXNlT3ZlclBvcygpIHsgcmV0dXJuIHRoaXMuc2hvd01vdXNlT3ZlclJvdyA/ICh0aGlzLnNob3dDdXJyZW50Um93ID8gMSA6IDApIDogbnVsbDsgfVxuXG4gIGdldEdyaWQoKSB7XG4gICAgaWYgKHRoaXMudmlldyAmJiAodGhpcy52aWV3IGFzIERHLlRhYmxlVmlldykuZ3JpZClcbiAgICAgIHJldHVybiAodGhpcy52aWV3IGFzIERHLlRhYmxlVmlldykuZ3JpZDtcbiAgICBpZiAodGhpcy5kYXRhRnJhbWUgJiYgZ3Jvay5zaGVsbC50diAmJiBncm9rLnNoZWxsLnR2LmRhdGFGcmFtZSA9PT0gdGhpcy5kYXRhRnJhbWUgJiYgZ3Jvay5zaGVsbC50di5ncmlkKVxuICAgICAgcmV0dXJuIGdyb2suc2hlbGwudHYuZ3JpZDtcbiAgICBjb25zdCB0diA9IEFycmF5LmZyb20oZ3Jvay5zaGVsbC50YWJsZVZpZXdzKS5maW5kKCh0dikgPT4gdHYuZGF0YUZyYW1lID09PSB0aGlzLmRhdGFGcmFtZSk7XG4gICAgaWYgKHR2ICYmIHR2LmdyaWQpXG4gICAgICByZXR1cm4gdHYuZ3JpZDtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJlbmRlckZvcm0ocm93OiBudW1iZXIsIGhlYWRlcj86IGJvb2xlYW4pIHtcbiAgICBjb25zdCBzYXZlZElkeCA9IHJvdztcbiAgICBpZiAoaGVhZGVyKVxuICAgICAgcm93ID0gMDtcbiAgICBlbHNlIHtcbiAgICAgIGlmICh0aGlzLnNob3dDdXJyZW50Um93ICYmIHJvdyA9PT0gdGhpcy5jdXJyZW50Um93UG9zKVxuICAgICAgICByb3cgPSB0aGlzLmRhdGFGcmFtZS5jdXJyZW50Um93SWR4O1xuICAgICAgZWxzZSBpZiAodGhpcy5zaG93TW91c2VPdmVyUm93ICYmIHJvdyA9PT0gdGhpcy5tb3VzZU92ZXJQb3MpXG4gICAgICAgIHJvdyA9IHRoaXMuZGF0YUZyYW1lLm1vdXNlT3ZlclJvd0lkeDtcbiAgICAgIGVsc2VcbiAgICAgICAgcm93ID0gdGhpcy5pbmRleGVzW3JvdyAtICh0aGlzLnNob3dDdXJyZW50Um93ID8gMSA6IDApIC0gKHRoaXMuc2hvd01vdXNlT3ZlclJvdyA/IDEgOiAwKV07XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybSA9IHVpLmRpdlYoXG4gICAgICB0aGlzLmZpZWxkc0NvbHVtbk5hbWVzLm1hcCgobmFtZSkgPT4ge1xuICAgICAgICBsZXQgcmVzRGl2OiBIVE1MRWxlbWVudCA9IHVpLmRpdigpO1xuICAgICAgICBpZiAocm93ID09PSAtMSlcbiAgICAgICAgICByZXR1cm4gcmVzRGl2O1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgZ3JpZCA9IHRoaXMuZ2V0R3JpZCgpO1xuICAgICAgICAgIC8vIGZvciBtb2xlY3VsZXMsIHVzZSB0aGUgZ3JpZENvbCByZW5kZXJlciBpbnN0ZWFkIG9mIGlucHV0QmFzZVxuICAgICAgICAgIGNvbnN0IGNvbCA9IHRoaXMuZGF0YUZyYW1lLmNvbChuYW1lKSE7XG4gICAgICAgICAgaWYgKGNvbC5zZW1UeXBlID09PSBERy5TRU1UWVBFLk1PTEVDVUxFICYmIGdyaWQ/LmNvbChuYW1lKT8ucmVuZGVyZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IG1vbFNpemUgPSB0aGlzLmdldE1vbGVjdWxlU2l6ZSgpO1xuICAgICAgICAgICAgY29uc3QgcmVuZGVyZXIgPSBncmlkLmNvbChuYW1lKSEucmVuZGVyZXIhO1xuICAgICAgICAgICAgY29uc3QgZ3JpZENlbGwgPSBERy5HcmlkQ2VsbC5mcm9tQ29sdW1uUm93KGdyaWQsIG5hbWUsIGdyaWQudGFibGVSb3dUb0dyaWQocm93KSk7XG4gICAgICAgICAgICBjb25zdCBjYW52YXMgPSB1aS5jYW52YXMobW9sU2l6ZS54LCBtb2xTaXplLnkpO1xuICAgICAgICAgICAgY2FudmFzLndpZHRoID0gbW9sU2l6ZS54ICogd2luZG93LmRldmljZVBpeGVsUmF0aW87XG4gICAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gbW9sU2l6ZS55ICogd2luZG93LmRldmljZVBpeGVsUmF0aW87XG4gICAgICAgICAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKSE7XG4gICAgICAgICAgICBjdHguZmlsbFJlY3QoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTtcbiAgICAgICAgICAgIGN0eC5zY2FsZSh3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbywgd2luZG93LmRldmljZVBpeGVsUmF0aW8pO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBjYW52YXMuc2V0QXR0cmlidXRlKCdjb2x1bW4nLCBuYW1lKTtcblxuICAgICAgICAgICAgZ3JpZENlbGwucmVuZGVyKHtjb250ZXh0OiBjdHgsIGJvdW5kczogbmV3IERHLlJlY3QoMCwgMCwgbW9sU2l6ZS54LCBtb2xTaXplLnkpfSk7XG4gICAgICAgICAgICByZXNEaXYgPSBjYW52YXM7XG4gICAgICAgICAgICByZXNEaXYuc3R5bGUuYmFja2dyb3VuZCA9ICd3aGl0ZSc7IC8vIGZpeGVzIGJlZm9yZSBjaGFuZ2VzIG9mIHZpZXJ0dWFsIHZpZXcgbm90IHJlbW92aW5nIG9sZCBpdGVtc1xuICAgICAgICAgICAgcmVzRGl2Lm9uY2xpY2sgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmRhdGFGcmFtZS5jdXJyZW50Q2VsbCA9IHRoaXMuZGF0YUZyYW1lLmNlbGwocm93LCBuYW1lKTtcbiAgICAgICAgICAgICAgdGhpcy5pbnB1dENsaWNrZWQubmV4dChuYW1lKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB1aS50b29sdGlwLmJpbmQocmVzRGl2LCBuYW1lKTtcblxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBpbnB1dCA9IERHLklucHV0QmFzZS5mb3JDb2x1bW4oY29sKTtcbiAgICAgICAgICAgIGlmIChpbnB1dCkge1xuICAgICAgICAgICAgICBpZiAodGhpcy5kYXRhRnJhbWUuY29sKG5hbWUpIS5zZW1UeXBlID09PSBERy5TRU1UWVBFLk1PTEVDVUxFKVxuICAgICAgICAgICAgICAgIGlucHV0LmlucHV0LmNsYXNzTGlzdC5hZGQoYGQ0LW11bHRpLWZvcm0tbW9sZWN1bGUtaW5wdXQtJHt0aGlzLm1vbGVjdWxlU2l6ZX1gKTtcbiAgICAgICAgICAgICAgaW5wdXQuaW5wdXQuc2V0QXR0cmlidXRlKCdjb2x1bW4nLCBuYW1lKTtcbiAgICAgICAgICAgICAgaW5wdXQudmFsdWUgPSB0aGlzLmRhdGFGcmFtZS5nZXQobmFtZSwgcm93KTtcbiAgICAgICAgICAgICAgaW5wdXQucmVhZE9ubHkgPSB0cnVlO1xuXG4gICAgICAgICAgICAgIGlmICh0aGlzLmNvbG9yQ29kZSkge1xuICAgICAgICAgICAgICAgIGlmIChncmlkKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBncmlkQ2VsbElkeCA9IGdyaWQuZ2V0Um93T3JkZXIoKS5pbmRleE9mKHJvdyk7XG4gICAgICAgICAgICAgICAgICBpZiAoZ3JpZENlbGxJZHggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbG9yID0gZ3JpZC5jZWxsKG5hbWUsIGdyaWRDZWxsSWR4KS5jb2xvcjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdyaWQuY29sKG5hbWUpPy5pc1RleHRDb2xvckNvZGVkKVxuICAgICAgICAgICAgICAgICAgICAgIGlucHV0LmlucHV0LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCBgY29sb3I6JHtERy5Db2xvci50b0h0bWwoY29sb3IpfSFpbXBvcnRhbnQ7YCk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIGlucHV0LmlucHV0LnNldEF0dHJpYnV0ZSgnc3R5bGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYGNvbG9yOiR7REcuQ29sb3IudG9IdG1sKERHLkNvbG9yLmdldENvbnRyYXN0Q29sb3IoY29sb3IpKX0haW1wb3J0YW50O2ApO1xuICAgICAgICAgICAgICAgICAgICAgIGlucHV0LmlucHV0LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IERHLkNvbG9yLnRvSHRtbChjb2xvcik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaW5wdXQuaW5wdXQub25jbGljayA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhRnJhbWUuY3VycmVudENlbGwgPSB0aGlzLmRhdGFGcmFtZS5jZWxsKHJvdywgbmFtZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dENsaWNrZWQubmV4dChuYW1lKTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgdWkudG9vbHRpcC5iaW5kKGlucHV0LmlucHV0LCBuYW1lKTtcblxuICAgICAgICAgICAgICByZXNEaXYgPSBpbnB1dC5pbnB1dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzRGl2O1xuICAgICAgfVxuICAgICAgKSwgJ2Q0LW11bHRpLWZvcm0tZm9ybScpO1xuXG4gICAgaWYgKHRoaXMuc2hvd01vdXNlT3ZlclJvdyAmJiBzYXZlZElkeCA9PSB0aGlzLm1vdXNlT3ZlclBvcylcbiAgICAgIGZvcm0uYXBwZW5kKHRoaXMubW91c2VPdmVyUm93SW5kaWNhdG9yKTtcbiAgICBpZiAodGhpcy5zaG93Q3VycmVudFJvdyAmJiBzYXZlZElkeCA9PT0gdGhpcy5jdXJyZW50Um93UG9zKVxuICAgICAgZm9ybS5hcHBlbmQodGhpcy5jdXJyZW50Um93SW5kaWNhdG9yKTtcblxuICAgIGZvcm0ub25jbGljayA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50LmN0cmxLZXkgJiYgZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gcm93OyBpKyspXG4gICAgICAgICAgdGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLnNldChpLCBmYWxzZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZXZlbnQuY3RybEtleSkge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRTZWxlY3Rpb24gPSB0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24uZ2V0KHJvdyk7XG4gICAgICAgICAgdGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLnNldChyb3csICFjdXJyZW50U2VsZWN0aW9uKTtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHRoaXMuZGF0YUZyYW1lLnJvd0NvdW50OyBpKyspXG4gICAgICAgICAgICB0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24uc2V0KGksIGkgPD0gcm93KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoIXRoaXMuc2hvd0N1cnJlbnRSb3cgfHwgc2F2ZWRJZHggIT09IHRoaXMuY3VycmVudFJvd1BvcylcbiAgICAgICAgICAgIHRoaXMuZGF0YUZyYW1lLmN1cnJlbnRSb3dJZHggPSByb3c7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIGlmICghdGhpcy5zaG93TW91c2VPdmVyUm93IHx8IHNhdmVkSWR4ICE9PSB0aGlzLm1vdXNlT3ZlclBvcykge1xuICAgICAgZm9ybS5vbm1vdXNlZW50ZXIgPSAoKSA9PiB0aGlzLmRhdGFGcmFtZS5tb3VzZU92ZXJSb3dJZHggPSByb3c7XG4gICAgICBmb3JtLm9ubW91c2VsZWF2ZSA9ICgpID0+IHRoaXMuZGF0YUZyYW1lLm1vdXNlT3ZlclJvd0lkeCA9IC0xO1xuICAgIH1cbiAgICByZXR1cm4gZm9ybTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAoIXRoaXMuc2hvd0ZpeGVkUm93cykge1xuICAgICAgaWYgKHRoaXMuc2hvd1NlbGVjdGVkUm93cykge1xuICAgICAgICB0aGlzLmluZGV4ZXMgPSB0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24udHJ1ZUNvdW50ID4gMCA/XG4gICAgICAgICAgQXJyYXkuZnJvbSh0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24uZ2V0U2VsZWN0ZWRJbmRleGVzKCkpIDogW107XG4gICAgICB9XG4gICAgICBlbHNlXG4gICAgICAgIHRoaXMuaW5kZXhlcyA9IFtdO1xuICAgIH1cblxuICAgIHVpLmVtcHR5KHRoaXMuY29sdW1uSGVhZGVyc0Rpdik7XG5cbiAgICB0aGlzLnJlbmRlckhlYWRlcigpO1xuXG4gICAgdGhpcy52aXJ0dWFsVmlldy5zZXREYXRhKFxuICAgICAgdGhpcy5pbmRleGVzLmxlbmd0aCArICh0aGlzLnNob3dDdXJyZW50Um93ID8gMSA6IDApICsgKHRoaXMuc2hvd01vdXNlT3ZlclJvdyA/IDEgOiAwKSxcbiAgICAgIChpOiBudW1iZXIpID0+IHRoaXMucmVuZGVyRm9ybShpKSk7XG4gIH1cbn1cbiJdfQ==
|
|
300
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMtdmlld2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZm9ybXMtdmlld2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEtBQUssSUFBSSxNQUFNLG1CQUFtQixDQUFDO0FBQzFDLE9BQU8sRUFBYSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8scUJBQXFCLENBQUM7QUFFN0IsTUFBTSwyQkFBMkIsR0FBRywrREFBK0QsQ0FBQztBQUNwRyxNQUFNLHdCQUF3QixHQUFHLEVBQUUsQ0FBQztBQUVwQyxNQUFNLE9BQU8sV0FBWSxTQUFRLEVBQUUsQ0FBQyxRQUFRO0lBQzFDLElBQUksSUFBSSxLQUFhLE9BQU8sYUFBYSxDQUFDLENBQUMsQ0FBQztJQWtCNUMsSUFBSSxTQUFTLENBQUMsRUFBZ0I7UUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLGVBQWUsQ0FBQyxJQUFjO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLFFBQWtCO1FBQzVCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENB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ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2ZpbHRlcn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0ICcuLi8uLi9jc3MvZm9ybXMuY3NzJztcblxuY29uc3QgQ09MU19MSU1JVF9FWENFRURFRF9XQVJOSU5HID0gYE51bWJlciBvZiBjb2x1bW5zIGlzIG1vcmUgdGhhbiAyMC4gRmlyc3QgMjAgY29sdW1ucyBhcmUgc2hvd25gO1xuY29uc3QgQk9PTEVBTl9JTlBVVF9UT1BfTUFSR0lOID0gMTU7XG5cbmV4cG9ydCBjbGFzcyBGb3Jtc1ZpZXdlciBleHRlbmRzIERHLkpzVmlld2VyIHtcbiAgZ2V0IHR5cGUoKTogc3RyaW5nIHsgcmV0dXJuICdGb3Jtc1ZpZXdlcic7IH1cbiAgbW9sZWN1bGVTaXplOiAnc21hbGwnIHwgJ25vcm1hbCcgfCAnbGFyZ2UnO1xuICBmaWVsZHNDb2x1bW5OYW1lczogc3RyaW5nW107XG4gIGNvbG9yQ29kZTogYm9vbGVhbjtcbiAgc2hvd0N1cnJlbnRSb3c6IGJvb2xlYW47XG4gIHNob3dNb3VzZU92ZXJSb3c6IGJvb2xlYW47XG4gIHNob3dTZWxlY3RlZFJvd3M6IGJvb2xlYW47XG4gIHNob3dGaXhlZFJvd3MgPSBmYWxzZTtcbiAgaW5kZXhlczogbnVtYmVyW107XG4gIGNvbHVtbkhlYWRlcnNEaXY6IEhUTUxEaXZFbGVtZW50O1xuICB2aXJ0dWFsVmlldzogREcuVmlydHVhbFZpZXc7XG4gIGNvbHVtbkxhYmVsV2lkdGg6IG51bWJlciA9IDA7XG4gIGN1cnJlbnRSb3dJbmRpY2F0b3IgPSB1aS5kaXYoJycsICdkNC1tdWx0aS1mb3JtLWZvcm0taW5kaWNhdG9yIGQ0LW11bHRpLWZvcm0tZm9ybS1pbmRpY2F0b3ItY3VycmVudC1yb3cnKTtcbiAgbW91c2VPdmVyUm93SW5kaWNhdG9yID0gdWkuZGl2KCcnLCAnZDQtbXVsdGktZm9ybS1mb3JtLWluZGljYXRvciBkNC1tdWx0aS1mb3JtLWZvcm0taW5kaWNhdG9yLW1vdXNlLW92ZXItcm93Jyk7XG4gIHNwbGl0Q29sTGVmdDogSFRNTEVsZW1lbnQ7XG4gIHNwbGl0Q29sUmlnaHQ6IEhUTUxFbGVtZW50O1xuICBpbnB1dENsaWNrZWQ6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgc2V0IGRhdGFmcmFtZShkZjogREcuRGF0YUZyYW1lKSB7XG4gICAgdGhpcy5kYXRhRnJhbWUgPSBkZjtcbiAgICB0aGlzLm9uVGFibGVBdHRhY2hlZCgpO1xuICB9XG5cbiAgc2V0IGZpeGVkUm93TnVtYmVycyhpZHhzOiBudW1iZXJbXSkge1xuICAgIHRoaXMuaW5kZXhlcyA9IGlkeHM7XG4gICAgdGhpcy5zaG93Q3VycmVudFJvdyA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd01vdXNlT3ZlclJvdyA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd1NlbGVjdGVkUm93cyA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd0ZpeGVkUm93cyA9IHRydWU7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHNldCBjb2x1bW5zKGNvbE5hbWVzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuZmllbGRzQ29sdW1uTmFtZXMgPSBjb2xOYW1lcztcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldE1vbGVjdWxlU2l6ZSgpOiBERy5Qb2ludCB7XG4gICAgc3dpdGNoICh0aGlzLm1vbGVjdWxlU2l6ZSkge1xuICAgICAgY2FzZSAnbm9ybWFsJzogcmV0dXJuIG5ldyBERy5Qb2ludCgyMDAsIDEwMCk7XG4gICAgICBjYXNlICdsYXJnZSc6IHJldHVybiBuZXcgREcuUG9pbnQoMzAwLCAxNTApO1xuICAgICAgY2FzZSAnc21hbGwnOlxuICAgICAgZGVmYXVsdDogcmV0dXJuIG5ldyBERy5Qb2ludCgxMjAsIDYwKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5oZWxwVXJsID0gJ2h0dHBzOi8vZGF0YWdyb2suYWkvaGVscC92aXN1YWxpemUvdmlld2Vycy9mb3Jtcyc7XG5cbiAgICAvLyBwcm9wZXJ0aWVzXG4gICAgdGhpcy5maWVsZHNDb2x1bW5OYW1lcyA9IHRoaXMuYWRkUHJvcGVydHkoJ2ZpZWxkc0NvbHVtbk5hbWVzJywgREcuVFlQRS5DT0xVTU5fTElTVCk7XG4gICAgdGhpcy5jb2xvckNvZGUgPSB0aGlzLmJvb2woJ2NvbG9yQ29kZScsIHRydWUpO1xuICAgIHRoaXMuc2hvd0N1cnJlbnRSb3cgPSB0aGlzLmJvb2woJ3Nob3dDdXJyZW50Um93JywgdHJ1ZSk7XG4gICAgdGhpcy5zaG93TW91c2VPdmVyUm93ID0gdGhpcy5ib29sKCdzaG93TW91c2VPdmVyUm93JywgdHJ1ZSk7XG4gICAgdGhpcy5zaG93U2VsZWN0ZWRSb3dzID0gdGhpcy5ib29sKCdzaG93U2VsZWN0ZWRSb3dzJywgdHJ1ZSk7XG4gICAgdGhpcy5tb2xlY3VsZVNpemUgPSB0aGlzLnN0cmluZygnbW9sZWN1bGVTaXplJywgJ3NtYWxsJywge2Nob2ljZXM6IFsnc21hbGwnLCAnbm9ybWFsJywgJ2xhcmdlJ119KSBhcyAnc21hbGwnIHwgJ25vcm1hbCcgfCAnbGFyZ2UnO1xuXG4gICAgLy9maWVsZHNcbiAgICB0aGlzLmluZGV4ZXMgPSBbXTtcblxuICAgIC8vIGluaXRcbiAgICB0aGlzLnJvb3QuY2xhc3NMaXN0LmFkZCgnZDQtbXVsdGktZm9ybScpO1xuICAgIHRoaXMuY29sdW1uSGVhZGVyc0RpdiA9IHVpLmRpdihbXSwgJ2Q0LW11bHRpLWZvcm0taGVhZGVyJyk7XG4gICAgdGhpcy52aXJ0dWFsVmlldyA9IHVpLnZpcnR1YWxWaWV3KDAsIChpOiBudW1iZXIpID0+IHRoaXMucmVuZGVyRm9ybShpKSwgZmFsc2UsIDEpO1xuICAgIGNvbnN0IGNvbHVtbkhlYWRlcnNCb3ggPSB1aS5kaXYodGhpcy5jb2x1bW5IZWFkZXJzRGl2KTtcbiAgICBjb25zdCBmb3JtV2l0aEhlYWRlckRpdiA9IHVpLnNwbGl0SChbY29sdW1uSGVhZGVyc0JveCwgdGhpcy52aXJ0dWFsVmlldy5yb290XSwgbnVsbCwgdHJ1ZSk7XG4gICAgdGhpcy5yb290LmFwcGVuZENoaWxkKGZvcm1XaXRoSGVhZGVyRGl2KTtcblxuICAgIHRoaXMuc3BsaXRDb2xMZWZ0ID0gZm9ybVdpdGhIZWFkZXJEaXYuZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgdGhpcy5zcGxpdENvbFJpZ2h0ID0gZm9ybVdpdGhIZWFkZXJEaXYubGFzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudDtcblxuICAgIHVpLnRvb2x0aXAuYmluZCh0aGlzLmN1cnJlbnRSb3dJbmRpY2F0b3IsICdDdXJyZW50IHJvdycpO1xuICAgIHVpLnRvb2x0aXAuYmluZCh0aGlzLm1vdXNlT3ZlclJvd0luZGljYXRvciwgJ01vdXNlIG92ZXIgcm93Jyk7XG5cbiAgICB1aS50b29scy53YWl0Rm9yRWxlbWVudEluRG9tKHRoaXMucm9vdCkudGhlbigoXykgPT4ge1xuICAgICAgdGhpcy5jb2x1bW5IZWFkZXJzRGl2LnN0eWxlLmNzc1RleHQgPSBgXG4gICAgICAgIG92ZWZsb3c6aGlkZGVuIWltcG9ydGFudDtcbiAgICAgICAgbWluLXdpZHRoOiAxNTBweDtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICBgO1xuICAgICAgdGhpcy5zcGxpdENvbExlZnQuc3R5bGUuY3NzVGV4dCA9IGBcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbiFpbXBvcnRhbnQ7XG4gICAgICBgO1xuICAgICAgY29sdW1uSGVhZGVyc0JveC5zdHlsZS5jc3NUZXh0ID0gYFxuICAgICAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgICAgICAgd2lkdGg6MTAwJTtcbiAgICAgICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgICAgIGRpc3BsYXk6ZmxleDtcbiAgICAgICAgcGFkZGluZy1yaWdodDoxN3B4O1xuICAgICAgICBvdmVyZmxvdzogc2Nyb2xsIWltcG9ydGFudDtcbiAgICAgIGA7XG5cbiAgICAgIGNvbHVtbkhlYWRlcnNCb3guYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgKGU6IEV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMudmlydHVhbFZpZXcucm9vdC5zY3JvbGxUb3AgPSBjb2x1bW5IZWFkZXJzQm94LnNjcm9sbFRvcDtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnZpcnR1YWxWaWV3LnJvb3QuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgKGU6IEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbHVtbkhlYWRlcnNCb3guc2Nyb2xsVG9wID0gdGhpcy52aXJ0dWFsVmlldy5yb290LnNjcm9sbFRvcDtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdWkudG9vbHMud2FpdEZvckVsZW1lbnRJbkRvbSh0aGlzLnZpcnR1YWxWaWV3LnJvb3QpLnRoZW4oKF8pID0+IHtcbiAgICAgIHRoaXMuZml0SGVhZGVyVG9MYWJlbFdpZHRoKCk7XG4gICAgfSk7XG4gIH1cblxuICBmaXRIZWFkZXJUb0xhYmVsV2lkdGgod2lkdGg/OiBudW1iZXIpIHtcbiAgICBjb25zdCB3ID0gd2lkdGggPz8gdGhpcy5jb2x1bW5MYWJlbFdpZHRoO1xuICAgIGNvbnN0IHJvb3RXaWR0aCA9IHRoaXMucm9vdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICB0aGlzLnNwbGl0Q29sTGVmdC5zdHlsZS53aWR0aCA9IGAke3cgKyAzMH1weGA7XG4gICAgdGhpcy5zcGxpdENvbFJpZ2h0LnN0eWxlLndpZHRoID0gYCR7cm9vdFdpZHRoIC0gdyAtIDMwIC0gNH1weGA7XG4gIH1cblxuICBnZXRDb2x1bW5XaWR0aChlbDpIVE1MRWxlbWVudCkge1xuICAgIHJldHVybiBwYXJzZUludChlbC5zdHlsZS53aWR0aCk7XG4gIH1cblxuICBvblRhYmxlQXR0YWNoZWQoKSB7XG4gICAgaWYgKHRoaXMuZmllbGRzQ29sdW1uTmFtZXMgPT09IG51bGwpXG4gICAgICB0aGlzLnNldEZpZWxkc0NvbHVtbk5hbWVzKHRoaXMuZGF0YUZyYW1lLmNvbHVtbnMubmFtZXMoKSk7XG5cbiAgICBjb25zdCBzdWIgPSAoc3RyZWFtOiBPYnNlcnZhYmxlPHVua25vd24+LCBhY3Rpb246IEZ1bmN0aW9uKSA9PiB7XG4gICAgICB0aGlzLnN1YnMucHVzaChERy5kZWJvdW5jZShzdHJlYW0sIDUwKS5zdWJzY3JpYmUoKF8pID0+IGFjdGlvbigpKSk7XG4gICAgfTtcblxuICAgIHN1Yih0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24ub25DaGFuZ2VkLCAoKSA9PiB0aGlzLnJlbmRlcigpKTtcbiAgICBzdWIodGhpcy5kYXRhRnJhbWUuZmlsdGVyLm9uQ2hhbmdlZCwgKCkgPT4gdGhpcy5yZW5kZXIoKSk7XG5cbiAgICBzdWIodGhpcy5kYXRhRnJhbWUub25NZXRhZGF0YUNoYW5nZWQsICgpID0+IHRoaXMucmVuZGVyKCkpO1xuXG4gICAgc3ViKHRoaXMuZGF0YUZyYW1lLm9uQ29sdW1uc1JlbW92ZWQsICgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlRmllbGRzQ29sdW1uTmFtZXMoKTtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfSk7XG5cbiAgICBzdWIodGhpcy5kYXRhRnJhbWUub25DdXJyZW50Um93Q2hhbmdlZC5waXBlKGZpbHRlcigoXykgPT4gdGhpcy5zaG93Q3VycmVudFJvdykpLFxuICAgICAgKCkgPT4gdGhpcy52aXJ0dWFsVmlldy5yZWZyZXNoSXRlbSh0aGlzLmN1cnJlbnRSb3dQb3MhKSk7XG5cbiAgICBzdWIodGhpcy5kYXRhRnJhbWUub25Nb3VzZU92ZXJSb3dDaGFuZ2VkLnBpcGUoZmlsdGVyKChfKSA9PiB0aGlzLnNob3dNb3VzZU92ZXJSb3cpKSxcbiAgICAgICgpID0+IHRoaXMudmlydHVhbFZpZXcucmVmcmVzaEl0ZW0odGhpcy5tb3VzZU92ZXJQb3MhKSk7XG5cbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgc2V0RmllbGRzQ29sdW1uTmFtZXMoZGZDb2x1bW5zOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuZmllbGRzQ29sdW1uTmFtZXMgPSBkZkNvbHVtbnMubGVuZ3RoID4gMjAgPyBkZkNvbHVtbnMuc2xpY2UoMCwgMjApIDogZGZDb2x1bW5zO1xuICB9XG5cbiAgdXBkYXRlRmllbGRzQ29sdW1uTmFtZXMoKSB7XG4gICAgY29uc3QgbmV3Q29sdW1ucyA9IHRoaXMuZGF0YUZyYW1lLmNvbHVtbnMubmFtZXMoKTtcbiAgICBsZXQgY291bnRlciA9IHRoaXMuZmllbGRzQ29sdW1uTmFtZXMubGVuZ3RoO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnRlcjsgaSsrKSB7XG4gICAgICBjb25zdCBjb2xJZHggPSBuZXdDb2x1bW5zLmluZGV4T2YodGhpcy5maWVsZHNDb2x1bW5OYW1lc1tpXSk7XG4gICAgICBpZiAoY29sSWR4ID09PSAtMSkge1xuICAgICAgICB0aGlzLmZpZWxkc0NvbHVtbk5hbWVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgY291bnRlci0tO1xuICAgICAgICBpLS07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25Qcm9wZXJ0eUNoYW5nZWQocHJvcGVydHk6IERHLlByb3BlcnR5KTogdm9pZCB7XG4gICAgaWYgKChwcm9wZXJ0eS5uYW1lID09PSAnc2hvd0N1cnJlbnRSb3cnIHx8IHByb3BlcnR5Lm5hbWUgPT09ICdzaG93TW91c2VPdmVyUm93JyB8fFxuICAgICAgcHJvcGVydHkubmFtZSA9PT0gJ3Nob3dTZWxlY3RlZFJvd3MnICYmIHByb3BlcnR5LmdldCh0aGlzKSA9PT0gdHJ1ZSkgJiYgdGhpcy5zaG93Rml4ZWRSb3dzKVxuICAgICAgZ3Jvay5zaGVsbC53YXJuaW5nKGBDYW5ub3Qgc2V0ICR7cHJvcGVydHkubmFtZX0gdG8gdHJ1ZSBzaW5jZSBmaXhlZCByb3dzIGFyZSBzZXRgKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgcmVuZGVySGVhZGVyKCkge1xuICAgIHVpLmVtcHR5KHRoaXMuY29sdW1uSGVhZGVyc0Rpdik7XG4gICAgY29uc3QgZm9ybSA9IHRoaXMucmVuZGVyRm9ybSgwLCB0cnVlKTtcbiAgICBmb3JtLmNsYXNzTGlzdC5hZGQoJ3RlbXAnKTtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZvcm0pO1xuXG4gICAgZm9yIChjb25zdCBuYW1lIG9mIHRoaXMuZmllbGRzQ29sdW1uTmFtZXMpIHtcbiAgICAgIGNvbnN0IGZvcm1GaWVsZCA9IGZvcm0ucXVlcnlTZWxlY3RvcignW2NvbHVtbj1cIicgKyBuYW1lICsgJ1wiXScpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICBpZiAoZm9ybUZpZWxkKSB7XG4gICAgICAgIGNvbnN0IGNvbHVtbkxhYmVsID0gdWkuYmluZCh0aGlzLmRhdGFGcmFtZS5jb2wobmFtZSksIHVpLmRpdlRleHQobmFtZSkpO1xuICAgICAgICBjb25zdCBjbG9zZUljb24gPSB1aS5pY29uRkEoJ3RpbWVzJywgKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZmllbGRzQ29sdW1uTmFtZXMgPSB0aGlzLmZpZWxkc0NvbHVtbk5hbWVzLmZpbHRlcigodmFsdWUpID0+IHZhbHVlICE9PSBuYW1lKTtcbiAgICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgY29sdW1uTGFiZWxDb250YWluZXIgPSB1aS5kaXYoW2NvbHVtbkxhYmVsLCBjbG9zZUljb25dLCAnZDQtbXVsdGktZm9ybS1jb2x1bW4tbmFtZSBkNC1mbGV4LXJvdycpO1xuICAgICAgICBjb25zdCBvZmZzZXRUb3AgPSBmb3JtRmllbGQudHlwZSA9PT0gJ2NoZWNrYm94JyA/XG4gICAgICAgICAgZm9ybUZpZWxkLm9mZnNldFRvcCAtIEJPT0xFQU5fSU5QVVRfVE9QX01BUkdJTiA6IGZvcm1GaWVsZC5vZmZzZXRUb3A7XG4gICAgICAgIGNvbHVtbkxhYmVsQ29udGFpbmVyLnN0eWxlLnRvcCA9IGAke29mZnNldFRvcCArIDEwfXB4YDtcbiAgICAgICAgdGhpcy5jb2x1bW5IZWFkZXJzRGl2LmFwcGVuZENoaWxkKGNvbHVtbkxhYmVsQ29udGFpbmVyKTtcbiAgICAgICAgY29sdW1uTGFiZWwub25jbGljayA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgdGhpcy5kYXRhRnJhbWUuY3VycmVudENvbCA9IHRoaXMuZGF0YUZyYW1lLmNvbChuYW1lKSE7XG4gICAgICAgIH07XG4gICAgICAgIGlmIChjb2x1bW5MYWJlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCA+IHRoaXMuY29sdW1uTGFiZWxXaWR0aClcbiAgICAgICAgICB0aGlzLmNvbHVtbkxhYmVsV2lkdGggPSBjb2x1bW5MYWJlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICAgICAgY29sdW1uTGFiZWxDb250YWluZXIub25tb3VzZWVudGVyID0gKGU6IE1vdXNlRXZlbnQpID0+IGNsb3NlSWNvbi5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnO1xuICAgICAgICBjb2x1bW5MYWJlbENvbnRhaW5lci5vbm1vdXNlbGVhdmUgPSAoZTogTW91c2VFdmVudCkgPT4gY2xvc2VJY29uLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3JtLnJlbW92ZSgpO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRSb3dQb3MoKSB7IHJldHVybiB0aGlzLnNob3dDdXJyZW50Um93ID8gMCA6IG51bGw7IH1cbiAgZ2V0IG1vdXNlT3ZlclBvcygpIHsgcmV0dXJuIHRoaXMuc2hvd01vdXNlT3ZlclJvdyA/ICh0aGlzLnNob3dDdXJyZW50Um93ID8gMSA6IDApIDogbnVsbDsgfVxuXG4gIGdldEdyaWQoKSB7XG4gICAgaWYgKHRoaXMudmlldyAmJiAodGhpcy52aWV3IGFzIERHLlRhYmxlVmlldykuZ3JpZClcbiAgICAgIHJldHVybiAodGhpcy52aWV3IGFzIERHLlRhYmxlVmlldykuZ3JpZDtcbiAgICBpZiAodGhpcy5kYXRhRnJhbWUgJiYgZ3Jvay5zaGVsbC50diAmJiBncm9rLnNoZWxsLnR2LmRhdGFGcmFtZSA9PT0gdGhpcy5kYXRhRnJhbWUgJiYgZ3Jvay5zaGVsbC50di5ncmlkKVxuICAgICAgcmV0dXJuIGdyb2suc2hlbGwudHYuZ3JpZDtcbiAgICBjb25zdCB0diA9IEFycmF5LmZyb20oZ3Jvay5zaGVsbC50YWJsZVZpZXdzKS5maW5kKCh0dikgPT4gdHYuZGF0YUZyYW1lID09PSB0aGlzLmRhdGFGcmFtZSk7XG4gICAgaWYgKHR2ICYmIHR2LmdyaWQpXG4gICAgICByZXR1cm4gdHYuZ3JpZDtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJlbmRlckZvcm0ocm93OiBudW1iZXIsIGhlYWRlcj86IGJvb2xlYW4pIHtcbiAgICBjb25zdCBzYXZlZElkeCA9IHJvdztcbiAgICBpZiAoaGVhZGVyKVxuICAgICAgcm93ID0gMDtcbiAgICBlbHNlIHtcbiAgICAgIGlmICh0aGlzLnNob3dDdXJyZW50Um93ICYmIHJvdyA9PT0gdGhpcy5jdXJyZW50Um93UG9zKVxuICAgICAgICByb3cgPSB0aGlzLmRhdGFGcmFtZS5jdXJyZW50Um93SWR4O1xuICAgICAgZWxzZSBpZiAodGhpcy5zaG93TW91c2VPdmVyUm93ICYmIHJvdyA9PT0gdGhpcy5tb3VzZU92ZXJQb3MpXG4gICAgICAgIHJvdyA9IHRoaXMuZGF0YUZyYW1lLm1vdXNlT3ZlclJvd0lkeDtcbiAgICAgIGVsc2VcbiAgICAgICAgcm93ID0gdGhpcy5pbmRleGVzW3JvdyAtICh0aGlzLnNob3dDdXJyZW50Um93ID8gMSA6IDApIC0gKHRoaXMuc2hvd01vdXNlT3ZlclJvdyA/IDEgOiAwKV07XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybSA9IHVpLmRpdlYoXG4gICAgICB0aGlzLmZpZWxkc0NvbHVtbk5hbWVzLm1hcCgobmFtZSkgPT4ge1xuICAgICAgICBsZXQgcmVzRGl2OiBIVE1MRWxlbWVudCA9IHVpLmRpdigpO1xuICAgICAgICBpZiAocm93ID09PSAtMSlcbiAgICAgICAgICByZXR1cm4gcmVzRGl2O1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgZ3JpZCA9IHRoaXMuZ2V0R3JpZCgpO1xuICAgICAgICAgIC8vIGZvciBtb2xlY3VsZXMsIHVzZSB0aGUgZ3JpZENvbCByZW5kZXJlciBpbnN0ZWFkIG9mIGlucHV0QmFzZVxuICAgICAgICAgIGNvbnN0IGNvbCA9IHRoaXMuZGF0YUZyYW1lLmNvbChuYW1lKSE7XG4gICAgICAgICAgaWYgKGNvbC5zZW1UeXBlID09PSBERy5TRU1UWVBFLk1PTEVDVUxFICYmIGdyaWQ/LmNvbChuYW1lKT8ucmVuZGVyZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IG1vbFNpemUgPSB0aGlzLmdldE1vbGVjdWxlU2l6ZSgpO1xuICAgICAgICAgICAgY29uc3QgcmVuZGVyZXIgPSBncmlkLmNvbChuYW1lKSEucmVuZGVyZXIhO1xuICAgICAgICAgICAgY29uc3QgZ3JpZENlbGwgPSBERy5HcmlkQ2VsbC5mcm9tQ29sdW1uUm93KGdyaWQsIG5hbWUsIGdyaWQudGFibGVSb3dUb0dyaWQocm93KSk7XG4gICAgICAgICAgICBjb25zdCBjYW52YXMgPSB1aS5jYW52YXMobW9sU2l6ZS54LCBtb2xTaXplLnkpO1xuICAgICAgICAgICAgY2FudmFzLndpZHRoID0gbW9sU2l6ZS54ICogd2luZG93LmRldmljZVBpeGVsUmF0aW87XG4gICAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gbW9sU2l6ZS55ICogd2luZG93LmRldmljZVBpeGVsUmF0aW87XG4gICAgICAgICAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKSE7XG4gICAgICAgICAgICAvLyBjdHguZmlsbFJlY3QoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTtcbiAgICAgICAgICAgIGN0eC5zY2FsZSh3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbywgd2luZG93LmRldmljZVBpeGVsUmF0aW8pO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBjYW52YXMuc2V0QXR0cmlidXRlKCdjb2x1bW4nLCBuYW1lKTtcblxuICAgICAgICAgICAgZ3JpZENlbGwucmVuZGVyKHtjb250ZXh0OiBjdHgsIGJvdW5kczogbmV3IERHLlJlY3QoMCwgMCwgbW9sU2l6ZS54LCBtb2xTaXplLnkpfSk7XG4gICAgICAgICAgICByZXNEaXYgPSBjYW52YXM7XG4gICAgICAgICAgICByZXNEaXYuc3R5bGUuYmFja2dyb3VuZCA9ICd3aGl0ZSc7IC8vIGZpeGVzIGJlZm9yZSBjaGFuZ2VzIG9mIHZpZXJ0dWFsIHZpZXcgbm90IHJlbW92aW5nIG9sZCBpdGVtc1xuICAgICAgICAgICAgcmVzRGl2Lm9uY2xpY2sgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmRhdGFGcmFtZS5jdXJyZW50Q2VsbCA9IHRoaXMuZGF0YUZyYW1lLmNlbGwocm93LCBuYW1lKTtcbiAgICAgICAgICAgICAgdGhpcy5pbnB1dENsaWNrZWQubmV4dChuYW1lKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB1aS50b29sdGlwLmJpbmQocmVzRGl2LCBuYW1lKTtcblxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBpbnB1dCA9IERHLklucHV0QmFzZS5mb3JDb2x1bW4oY29sKTtcbiAgICAgICAgICAgIGlmIChpbnB1dCkge1xuICAgICAgICAgICAgICBpZiAodGhpcy5kYXRhRnJhbWUuY29sKG5hbWUpIS5zZW1UeXBlID09PSBERy5TRU1UWVBFLk1PTEVDVUxFKVxuICAgICAgICAgICAgICAgIGlucHV0LmlucHV0LmNsYXNzTGlzdC5hZGQoYGQ0LW11bHRpLWZvcm0tbW9sZWN1bGUtaW5wdXQtJHt0aGlzLm1vbGVjdWxlU2l6ZX1gKTtcbiAgICAgICAgICAgICAgaW5wdXQuaW5wdXQuc2V0QXR0cmlidXRlKCdjb2x1bW4nLCBuYW1lKTtcbiAgICAgICAgICAgICAgaW5wdXQudmFsdWUgPSB0aGlzLmRhdGFGcmFtZS5nZXQobmFtZSwgcm93KTtcbiAgICAgICAgICAgICAgaW5wdXQucmVhZE9ubHkgPSB0cnVlO1xuXG4gICAgICAgICAgICAgIGlmICh0aGlzLmNvbG9yQ29kZSkge1xuICAgICAgICAgICAgICAgIGlmIChncmlkKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBncmlkQ2VsbElkeCA9IGdyaWQuZ2V0Um93T3JkZXIoKS5pbmRleE9mKHJvdyk7XG4gICAgICAgICAgICAgICAgICBpZiAoZ3JpZENlbGxJZHggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbG9yID0gZ3JpZC5jZWxsKG5hbWUsIGdyaWRDZWxsSWR4KS5jb2xvcjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdyaWQuY29sKG5hbWUpPy5pc1RleHRDb2xvckNvZGVkKVxuICAgICAgICAgICAgICAgICAgICAgIGlucHV0LmlucHV0LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCBgY29sb3I6JHtERy5Db2xvci50b0h0bWwoY29sb3IpfSFpbXBvcnRhbnQ7YCk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIGlucHV0LmlucHV0LnNldEF0dHJpYnV0ZSgnc3R5bGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYGNvbG9yOiR7REcuQ29sb3IudG9IdG1sKERHLkNvbG9yLmdldENvbnRyYXN0Q29sb3IoY29sb3IpKX0haW1wb3J0YW50O2ApO1xuICAgICAgICAgICAgICAgICAgICAgIGlucHV0LmlucHV0LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IERHLkNvbG9yLnRvSHRtbChjb2xvcik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaW5wdXQuaW5wdXQub25jbGljayA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhRnJhbWUuY3VycmVudENlbGwgPSB0aGlzLmRhdGFGcmFtZS5jZWxsKHJvdywgbmFtZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dENsaWNrZWQubmV4dChuYW1lKTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgdWkudG9vbHRpcC5iaW5kKGlucHV0LmlucHV0LCBuYW1lKTtcblxuICAgICAgICAgICAgICByZXNEaXYgPSBpbnB1dC5pbnB1dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzRGl2O1xuICAgICAgfVxuICAgICAgKSwgJ2Q0LW11bHRpLWZvcm0tZm9ybScpO1xuXG4gICAgaWYgKHRoaXMuc2hvd01vdXNlT3ZlclJvdyAmJiBzYXZlZElkeCA9PSB0aGlzLm1vdXNlT3ZlclBvcylcbiAgICAgIGZvcm0uYXBwZW5kKHRoaXMubW91c2VPdmVyUm93SW5kaWNhdG9yKTtcbiAgICBpZiAodGhpcy5zaG93Q3VycmVudFJvdyAmJiBzYXZlZElkeCA9PT0gdGhpcy5jdXJyZW50Um93UG9zKVxuICAgICAgZm9ybS5hcHBlbmQodGhpcy5jdXJyZW50Um93SW5kaWNhdG9yKTtcblxuICAgIGZvcm0ub25jbGljayA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50LmN0cmxLZXkgJiYgZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gcm93OyBpKyspXG4gICAgICAgICAgdGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLnNldChpLCBmYWxzZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZXZlbnQuY3RybEtleSkge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRTZWxlY3Rpb24gPSB0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24uZ2V0KHJvdyk7XG4gICAgICAgICAgdGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLnNldChyb3csICFjdXJyZW50U2VsZWN0aW9uKTtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHRoaXMuZGF0YUZyYW1lLnJvd0NvdW50OyBpKyspXG4gICAgICAgICAgICB0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24uc2V0KGksIGkgPD0gcm93KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoIXRoaXMuc2hvd0N1cnJlbnRSb3cgfHwgc2F2ZWRJZHggIT09IHRoaXMuY3VycmVudFJvd1BvcylcbiAgICAgICAgICAgIHRoaXMuZGF0YUZyYW1lLmN1cnJlbnRSb3dJZHggPSByb3c7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIGlmICghdGhpcy5zaG93TW91c2VPdmVyUm93IHx8IHNhdmVkSWR4ICE9PSB0aGlzLm1vdXNlT3ZlclBvcykge1xuICAgICAgZm9ybS5vbm1vdXNlZW50ZXIgPSAoKSA9PiB0aGlzLmRhdGFGcmFtZS5tb3VzZU92ZXJSb3dJZHggPSByb3c7XG4gICAgICBmb3JtLm9ubW91c2VsZWF2ZSA9ICgpID0+IHRoaXMuZGF0YUZyYW1lLm1vdXNlT3ZlclJvd0lkeCA9IC0xO1xuICAgIH1cbiAgICByZXR1cm4gZm9ybTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAoIXRoaXMuc2hvd0ZpeGVkUm93cykge1xuICAgICAgaWYgKHRoaXMuc2hvd1NlbGVjdGVkUm93cykge1xuICAgICAgICB0aGlzLmluZGV4ZXMgPSB0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24udHJ1ZUNvdW50ID4gMCA/XG4gICAgICAgICAgQXJyYXkuZnJvbSh0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24uZ2V0U2VsZWN0ZWRJbmRleGVzKCkpIDogW107XG4gICAgICB9XG4gICAgICBlbHNlXG4gICAgICAgIHRoaXMuaW5kZXhlcyA9IFtdO1xuICAgIH1cblxuICAgIHVpLmVtcHR5KHRoaXMuY29sdW1uSGVhZGVyc0Rpdik7XG5cbiAgICB0aGlzLnJlbmRlckhlYWRlcigpO1xuXG4gICAgdGhpcy52aXJ0dWFsVmlldy5zZXREYXRhKFxuICAgICAgdGhpcy5pbmRleGVzLmxlbmd0aCArICh0aGlzLnNob3dDdXJyZW50Um93ID8gMSA6IDApICsgKHRoaXMuc2hvd01vdXNlT3ZlclJvdyA/IDEgOiAwKSxcbiAgICAgIChpOiBudW1iZXIpID0+IHRoaXMucmVuZGVyRm9ybShpKSk7XG4gIH1cbn1cbiJdfQ==
|