@sbb-esta/lyne-elements-dev 4.0.0-dev.1775700454 → 4.0.0-dev.1775721561
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/base-elements/element.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EACV,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACxB,MAAM,KAAK,CAAC;AAqOb,MAAM,WAAW,kBAAkB;IACjC,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC9C;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,kBAAkB,CAAC;AACvE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,GAAG,kBAAkB,GAAG,IAAI,CAAC;AAqCjG,qBAAa,qBAAsB,SAAQ,KAAK;aACX,IAAI,EAAE,eAAe;gBAArB,IAAI,EAAE,eAAe;CAGzD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;IAC/D,kBAAkB,CAAC,CACjB,IAAI,EAAE,WAAW,EACjB,MAAM,CAAC,EAAE,iBAAiB,EAC1B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,IAAI,CAAC;CACT;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC7B,WAAW,SAAS,OAAO,EAAE,GAAG,IAAI,EACpC,GAAG,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,KACjC,OAAO,EAAE,GAAG,IAGd,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC7B,WAAW,SAAS,OAAO,EAAE,GAAG,IAAI,EACpC,GAAG,mBAAmB,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,KACvC,OAAO,EAAE,GAAG,IAId,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,OAAO,UAAU,CAAC;AAE/C,MAAM,WAAW,qBAAqB;IACpC,mBAAmB,CAAC,EAAE,cAAc,EAAE,CAAC;IACvC,IAAI,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;CACjC;AAED;;;GAGG;AAEH,qBAAa,UAAW,SAAQ,UAAU;IACxC,OAAc,CAAC,eAAe,CAAC,UAAQ;IACvC,gBAAuB,WAAW,EAAE,MAAM,CAAC;IAC3C,OAAc,mBAAmB,CAAC,EAAE,cAAc,EAAE,CAAC;IACrD,OAAc,IAAI,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAE9C,gBAAgB;IAChB,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAA0B;IAExE,OAAO,CAAC,YAAY,CAAC,CAA6B;IAClD,OAAO,CAAC,kBAAkB,CAAU;IACpC,OAAO,CAAC,kBAAkB,CAExB;IACF,OAAO,CAAC,iBAAiB,CAAwC;IACjE,OAAO,CAAC,aAAa,CAAC,CAAmB;IAEzC;;;;;;;OAOG;IACH,IAAW,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAE/C;IAED,+DAA+D;IAC/D,SAAS,KAAK,iBAAiB,IAAI,OAAO,CAEzC;;IA4DD,uEAAuE;WACzD,MAAM,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"element.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/base-elements/element.ts"],"names":[],"mappings":"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"}
|
|
@@ -254,7 +254,6 @@ var SbbElement = class extends LitElement {
|
|
|
254
254
|
if (!this.elementName) throw new Error(`The static property "elementName" is not defined on ${this.name}. Please define it to register the custom element.`);
|
|
255
255
|
if (!customElements.get(this.elementName)) {
|
|
256
256
|
customElements.define(this.elementName, this);
|
|
257
|
-
this.finalize();
|
|
258
257
|
const elementDependencies = [];
|
|
259
258
|
let ctor = this;
|
|
260
259
|
while (ctor["_$sbbElement$"]) {
|
|
@@ -369,4 +368,4 @@ var SbbElement = class extends LitElement {
|
|
|
369
368
|
//#endregion
|
|
370
369
|
export { SbbElement, SbbSlottedChangeEvent, appendAriaElements, removeAriaElements, ɵstateController };
|
|
371
370
|
|
|
372
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9iYXNlLWVsZW1lbnRzL2VsZW1lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgaXNTZXJ2ZXIsXG4gIExpdEVsZW1lbnQsXG4gIHR5cGUgUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBSZWFjdGl2ZUNvbnRyb2xsZXIsXG59IGZyb20gJ2xpdCc7XG5cbi8vIE1vc3Qgb2Ygb3VyIHRhcmdldCBicm93c2VycyBzdXBwb3J0IHRoZSA6c3RhdGUoKSBwc2V1ZG8gY2xhc3MsIGJ1dCBub3QgYWxsIG9mIHRoZW0uXG4vLyBXZSBwYXRjaCB0aGUgc3RhdGVzIHByb3BlcnR5IG9mIHRoZSBlbGVtZW50IGludGVybmFscyB0byB1c2UgYXR0cmlidXRlcyBpbnN0ZWFkLFxuLy8gaWYgOnN0YXRlKCkgaXMgbm90IHN1cHBvcnRlZC5cbi8vIE5vdGUgdGhhdCBmb3IgU1NSLCB0aGUgc3RhdGVzIHByb3BlcnR5IGlzIGEgc2ltcGxlIFNldCwgaW1wbGVtZW50ZWQgaW4gTGl0IFNTUi5cbnR5cGUgQ3VzdG9tU3RhdGVTZXRJbnRlcmZhY2UgPSBDdXN0b21TdGF0ZVNldDtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmNvbnN0IEN1c3RvbVN0YXRlU2V0UG9seWZpbGw6IChuZXcgKGhvc3Q6IExpdEVsZW1lbnQpID0+IEN1c3RvbVN0YXRlU2V0SW50ZXJmYWNlKSB8IG51bGwgPVxuICBpc1NlcnZlciB8fCAhQ1NTLnN1cHBvcnRzKCdzZWxlY3Rvcig6c3RhdGUobG9hZGluZykpJylcbiAgICA/IGNsYXNzIEN1c3RvbVN0YXRlU2V0XG4gICAgICAgIGV4dGVuZHMgU2V0PHN0cmluZz5cbiAgICAgICAgaW1wbGVtZW50cyBDdXN0b21TdGF0ZVNldEludGVyZmFjZSwgUmVhY3RpdmVDb250cm9sbGVyXG4gICAgICB7XG4gICAgICAgIHByaXZhdGUgX2FwcGxpZWQgPSBpc1NlcnZlcjtcblxuICAgICAgICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfaG9zdDogTGl0RWxlbWVudCkge1xuICAgICAgICAgIHN1cGVyKCk7XG4gICAgICAgICAgdGhpcy5faG9zdC5hZGRDb250cm9sbGVyKHRoaXMpO1xuICAgICAgICAgIGlmICghaXNTZXJ2ZXIpIHtcbiAgICAgICAgICAgIC8vIFdlIHdhbnQgdG8gYXBwbHkgdGhlIGF0dHJpYnV0ZXMgYXMgZWFybHkgYXMgcG9zc2libGUgd2hpY2ggY2FuXG4gICAgICAgICAgICAvLyBlaXRoZXIgYmUgdmlhIHRoaXMgUHJvbWlzZS5yZXNvbHZlKCkgb3IgdGhlIGNvbm5lY3RlZENhbGxiYWNrKCkuXG4gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHRoaXMuX2FwcGx5U3RhdGVzKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBvdmVycmlkZSBhZGQoc3RhdGU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICAgIGlmICh0aGlzLl9hcHBsaWVkKSB7XG4gICAgICAgICAgICB0aGlzLl90b2dnbGVTdGF0ZShzdGF0ZSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBzdXBlci5hZGQoc3RhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIG92ZXJyaWRlIGRlbGV0ZShzdGF0ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgICAgdGhpcy5fdG9nZ2xlU3RhdGUoc3RhdGUsIGZhbHNlKTtcbiAgICAgICAgICByZXR1cm4gc3VwZXIuZGVsZXRlKHN0YXRlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBvdmVycmlkZSBjbGVhcigpOiB2b2lkIHtcbiAgICAgICAgICB0aGlzLmZvckVhY2goKHN0YXRlKSA9PiB0aGlzLmRlbGV0ZShzdGF0ZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIGhvc3RDb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgICAgICAgdGhpcy5fYXBwbHlTdGF0ZXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByaXZhdGUgX3RvZ2dsZVN0YXRlKHN0YXRlOiBzdHJpbmcsIGVuYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgICB0aGlzLl9ob3N0LnRvZ2dsZUF0dHJpYnV0ZShgc3RhdGUtLSR7c3RhdGV9YCwgZW5hYmxlZCk7XG4gICAgICAgIH1cblxuICAgICAgICBwcml2YXRlIF9hcHBseVN0YXRlcygpOiB2b2lkIHtcbiAgICAgICAgICBpZiAodGhpcy5fYXBwbGllZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLl9hcHBsaWVkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmZvckVhY2goKHN0YXRlKSA9PiB0aGlzLl90b2dnbGVTdGF0ZShzdGF0ZSwgdHJ1ZSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgOiBudWxsO1xuXG5pZiAoIWlzU2VydmVyKSB7XG4gIC8vIFRoaXMgaXMgYSBwb2x5ZmlsbCBmb3IgdGhlIGFyaWEgZWxlbWVudHMgcHJvcGVydGllcyBvbiBFbGVtZW50SW50ZXJuYWxzIGFuZCBFbGVtZW50LlxuICBsZXQgbmV4dElkID0gMDtcbiAgY29uc3QgcmVzb2x2ZUhvc3QgPSAob3JpZ2luOiBFbGVtZW50SW50ZXJuYWxzIHwgRWxlbWVudCk6IEVsZW1lbnQgPT5cbiAgICBvcmlnaW4uc2hhZG93Um9vdD8uaG9zdCA/P1xuICAgIChvcmlnaW4gaW5zdGFuY2VvZiBFbGVtZW50XG4gICAgICA/IG9yaWdpblxuICAgICAgOiAoKCkgPT4ge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIHJlc29sdmUgcmVsYXRlZCBlbGVtZW50ISBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uJyk7XG4gICAgICAgIH0pKCkpO1xuICBjb25zdCBvYnNlcnZlck9wdGlvbnM6IE11dGF0aW9uT2JzZXJ2ZXJJbml0ID0geyBhdHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1dGVGaWx0ZXI6IFsnaWQnXSB9O1xuICBjb25zdCBhc3NpZ25FbGVtZW50ID0gKFxuICAgIGhvc3Q6IEVsZW1lbnQsXG4gICAgYXR0cmlidXRlOiBzdHJpbmcsXG4gICAgZWxlbWVudHM6IFJlY29yZDxzdHJpbmcsIEVsZW1lbnQ+LFxuICApOiB2b2lkID0+IHtcbiAgICAvLyBJbiBjYXNlIGJvdGggRWxlbWVudCBhbmQgRWxlbWVudEludGVybmFscyBwcm9wZXJ0aWVzIGFyZSBzZXQsXG4gICAgLy8gdGhlIGVsZW1lbnQgcmVmZXJlbmNlIGZyb20gRWxlbWVudCBoYXMgcHJpb3JpdHkuXG4gICAgY29uc3QgYWN0aXZlRWxlbWVudCA9IGVsZW1lbnRzW0VsZW1lbnQubmFtZV0gPz8gZWxlbWVudHNbRWxlbWVudEludGVybmFscy5uYW1lXTtcbiAgICBob3N0LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIChhY3RpdmVFbGVtZW50LmlkIHx8PSBgYXJpYS1yZWYtJHtuZXh0SWQrK31gKSk7XG4gIH07XG4gIGNvbnN0IGFzc2lnbkVsZW1lbnRzID0gKFxuICAgIGhvc3Q6IEVsZW1lbnQsXG4gICAgYXR0cmlidXRlOiBzdHJpbmcsXG4gICAgZWxlbWVudHM6IFJlY29yZDxzdHJpbmcsIEVsZW1lbnRbXT4sXG4gICk6IHZvaWQgPT4ge1xuICAgIC8vIEluIGNhc2UgYm90aCBFbGVtZW50IGFuZCBFbGVtZW50SW50ZXJuYWxzIHByb3BlcnRpZXMgYXJlIHNldCxcbiAgICAvLyB3ZSBjb21iaW5lIHRoZSBlbGVtZW50IHJlZmVyZW5jZXMuXG4gICAgaG9zdC5zZXRBdHRyaWJ1dGUoXG4gICAgICBhdHRyaWJ1dGUsXG4gICAgICBPYmplY3QudmFsdWVzKGVsZW1lbnRzKVxuICAgICAgICAucmVkdWNlKChjdXJyZW50LCBuZXh0KSA9PiBjdXJyZW50LmNvbmNhdChuZXh0KSlcbiAgICAgICAgLmZpbHRlcigodiwgaSwgYSkgPT4gYS5pbmRleE9mKHYpID09PSBpKVxuICAgICAgICAubWFwKChlKSA9PiBlLmlkIHx8IChlLmlkID0gYGFyaWEtcmVmLSR7bmV4dElkKyt9YCkpXG4gICAgICAgIC5qb2luKCcgJyksXG4gICAgKTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IHR5cGUgb2YgW0VsZW1lbnRJbnRlcm5hbHMsIEVsZW1lbnRdKSB7XG4gICAgY29uc3QgcHJvdG90eXBlID0gdHlwZS5wcm90b3R5cGU7XG4gICAgaWYgKCEoJ2FyaWFBY3RpdmVEZXNjZW5kYW50RWxlbWVudCcgaW4gcHJvdG90eXBlKSkge1xuICAgICAgY29uc3QgYXR0cmlidXRlID0gJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCc7XG4gICAgICBjb25zdCBzdG9yYWdlID0gbmV3IFdlYWtNYXA8XG4gICAgICAgIEVsZW1lbnQsXG4gICAgICAgIHsgZWxlbWVudHM6IFJlY29yZDxzdHJpbmcsIEVsZW1lbnQ+OyBvYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlciB9XG4gICAgICA+KCk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG90eXBlLCAnYXJpYUFjdGl2ZURlc2NlbmRhbnRFbGVtZW50Jywge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGdldCh0aGlzOiBFbGVtZW50SW50ZXJuYWxzIHwgRWxlbWVudCk6IEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgICBjb25zdCBob3N0ID0gcmVzb2x2ZUhvc3QodGhpcyk7XG4gICAgICAgICAgY29uc3QgaWQgPSBob3N0LmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpPy5zcGxpdCgvXFxzKy8pWzBdID8/IG51bGw7XG4gICAgICAgICAgcmV0dXJuIGlkXG4gICAgICAgICAgICA/ICgoaG9zdC5nZXRSb290Tm9kZSgpIGFzIERvY3VtZW50IHwgU2hhZG93Um9vdCkuZ2V0RWxlbWVudEJ5SWQ/LihpZCkgPz8gbnVsbClcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0KHRoaXM6IEVsZW1lbnRJbnRlcm5hbHMgfCBFbGVtZW50LCB2YWx1ZTogRWxlbWVudCB8IG51bGwpIHtcbiAgICAgICAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgISh2YWx1ZSBpbnN0YW5jZW9mIEVsZW1lbnQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgICAgICBgRmFpbGVkIHRvIHNldCB0aGUgJ2FyaWFBY3RpdmVEZXNjZW5kYW50RWxlbWVudCcgcHJvcGVydHkgb24gJyR7dHlwZS5uYW1lfSc6IEZhaWxlZCB0byBjb252ZXJ0IHZhbHVlIHRvICdFbGVtZW50Jy5gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBob3N0ID0gcmVzb2x2ZUhvc3QodGhpcyk7XG4gICAgICAgICAgY29uc3QgZW50cnkgPSBzdG9yYWdlLmdldChob3N0KTtcbiAgICAgICAgICBlbnRyeT8ub2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICAgICAgICBkZWxldGUgZW50cnkuZWxlbWVudHNbdHlwZS5uYW1lXTtcbiAgICAgICAgICAgICAgaWYgKCFPYmplY3Qua2V5cyhlbnRyeSkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgc3RvcmFnZS5kZWxldGUoaG9zdCk7XG4gICAgICAgICAgICAgICAgaG9zdC5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBlbnRyeS5vYnNlcnZlci5vYnNlcnZlKE9iamVjdC52YWx1ZXMoZW50cnkuZWxlbWVudHMpWzBdLCBvYnNlcnZlck9wdGlvbnMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmICghZW50cnkpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzOiBSZWNvcmQ8c3RyaW5nLCBFbGVtZW50PiA9IHsgW3R5cGUubmFtZV06IHZhbHVlIH07XG4gICAgICAgICAgICBhc3NpZ25FbGVtZW50KGhvc3QsIGF0dHJpYnV0ZSwgZWxlbWVudHMpO1xuICAgICAgICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiBhc3NpZ25FbGVtZW50KGhvc3QsIGF0dHJpYnV0ZSwgZWxlbWVudHMpKTtcbiAgICAgICAgICAgIG9ic2VydmVyLm9ic2VydmUodmFsdWUsIG9ic2VydmVyT3B0aW9ucyk7XG4gICAgICAgICAgICBzdG9yYWdlLnNldChob3N0LCB7IGVsZW1lbnRzLCBvYnNlcnZlciB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZW50cnkuZWxlbWVudHNbdHlwZS5uYW1lXSA9IHZhbHVlO1xuICAgICAgICAgICAgYXNzaWduRWxlbWVudChob3N0LCBhdHRyaWJ1dGUsIGVudHJ5LmVsZW1lbnRzKTtcbiAgICAgICAgICAgIE9iamVjdC52YWx1ZXMoZW50cnkuZWxlbWVudHMpLmZvckVhY2goKGUpID0+XG4gICAgICAgICAgICAgIGVudHJ5Lm9ic2VydmVyLm9ic2VydmUoZSwgb2JzZXJ2ZXJPcHRpb25zKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBbXG4gICAgICAnYXJpYUNvbnRyb2xzRWxlbWVudHMnLFxuICAgICAgJ2FyaWFEZXNjcmliZWRCeUVsZW1lbnRzJyxcbiAgICAgICdhcmlhRGV0YWlsc0VsZW1lbnRzJyxcbiAgICAgICdhcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMnLFxuICAgICAgJ2FyaWFMYWJlbGxlZEJ5RWxlbWVudHMnLFxuICAgICAgJ2FyaWFPd25zRWxlbWVudHMnLFxuICAgIF0pIHtcbiAgICAgIGlmICghKHByb3BlcnR5IGluIHByb3RvdHlwZSkpIHtcbiAgICAgICAgY29uc3Qgc3RvcmFnZSA9IG5ldyBXZWFrTWFwPFxuICAgICAgICAgIEVsZW1lbnQsXG4gICAgICAgICAgeyBlbGVtZW50czogUmVjb3JkPHN0cmluZywgRWxlbWVudFtdPjsgb2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXIgfVxuICAgICAgICA+KCk7XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZSA9IGBhcmlhLSR7cHJvcGVydHkuc2xpY2UoNCwgLTgpLnRvTG93ZXJDYXNlKCl9YDtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICBnZXQodGhpczogRWxlbWVudEludGVybmFscyB8IEVsZW1lbnQpOiByZWFkb25seSBFbGVtZW50W10gfCBudWxsIHtcbiAgICAgICAgICAgIGNvbnN0IGhvc3QgPSByZXNvbHZlSG9zdCh0aGlzKTtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzID0gaG9zdFxuICAgICAgICAgICAgICAuZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZSlcbiAgICAgICAgICAgICAgPy5zcGxpdCgvXFxzKy8pXG4gICAgICAgICAgICAgIC5maWx0ZXIoKHYsIGksIGEpID0+IGEuaW5kZXhPZih2KSA9PT0gaSlcbiAgICAgICAgICAgICAgLm1hcCgoaWQpID0+IChob3N0LmdldFJvb3ROb2RlKCkgYXMgRG9jdW1lbnQgfCBTaGFkb3dSb290KS5nZXRFbGVtZW50QnlJZD8uKGlkKSlcbiAgICAgICAgICAgICAgLmZpbHRlcigoZSkgPT4gZSBpbnN0YW5jZW9mIEVsZW1lbnQpO1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRzPy5sZW5ndGggPyBPYmplY3QuZnJlZXplKGVsZW1lbnRzKSA6IG51bGw7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZXQodGhpczogRWxlbWVudEludGVybmFscyB8IEVsZW1lbnQsIHZhbHVlOiBFbGVtZW50W10pIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgKCFBcnJheS5pc0FycmF5KHZhbHVlKSB8fCB2YWx1ZS5zb21lKChlbGVtZW50KSA9PiAhKGVsZW1lbnQgaW5zdGFuY2VvZiBFbGVtZW50KSkpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICAgICAgICBgRmFpbGVkIHRvIHNldCB0aGUgJyR7cHJvcGVydHl9JyBwcm9wZXJ0eSBvbiAnJHt0eXBlLm5hbWV9JzogRmFpbGVkIHRvIGNvbnZlcnQgdmFsdWUgdG8gJ0VsZW1lbnQnLmAsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGhvc3QgPSByZXNvbHZlSG9zdCh0aGlzKTtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWU/LmZpbHRlcigodiwgaSwgYSkgPT4gYS5pbmRleE9mKHYpID09PSBpKSA/PyBudWxsO1xuICAgICAgICAgICAgY29uc3QgZW50cnkgPSBzdG9yYWdlLmdldChob3N0KTtcbiAgICAgICAgICAgIGVudHJ5Py5vYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBlbnRyeS5lbGVtZW50c1t0eXBlLm5hbWVdO1xuICAgICAgICAgICAgICAgIGlmICghT2JqZWN0LmtleXMoZW50cnkuZWxlbWVudHMpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgc3RvcmFnZS5kZWxldGUoaG9zdCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIE9iamVjdC52YWx1ZXMoZW50cnkuZWxlbWVudHMpXG4gICAgICAgICAgICAgICAgICAgIC5yZWR1Y2UoKGN1cnJlbnQsIG5leHQpID0+IGN1cnJlbnQuY29uY2F0KG5leHQpKVxuICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaCgoZSkgPT4gZW50cnkub2JzZXJ2ZXIub2JzZXJ2ZShlLCBvYnNlcnZlck9wdGlvbnMpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIWVudHJ5KSB7XG4gICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzOiBSZWNvcmQ8c3RyaW5nLCBFbGVtZW50W10+ID0geyBbdHlwZS5uYW1lXTogdmFsdWUgfTtcbiAgICAgICAgICAgICAgYXNzaWduRWxlbWVudHMoaG9zdCwgYXR0cmlidXRlLCBlbGVtZW50cyk7XG4gICAgICAgICAgICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT5cbiAgICAgICAgICAgICAgICBhc3NpZ25FbGVtZW50cyhob3N0LCBhdHRyaWJ1dGUsIGVsZW1lbnRzKSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgdmFsdWUuZm9yRWFjaCgoZWxlbWVudCkgPT4gb2JzZXJ2ZXIub2JzZXJ2ZShlbGVtZW50LCBvYnNlcnZlck9wdGlvbnMpKTtcbiAgICAgICAgICAgICAgc3RvcmFnZS5zZXQoaG9zdCwgeyBlbGVtZW50cywgb2JzZXJ2ZXIgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBlbnRyeS5lbGVtZW50c1t0eXBlLm5hbWVdID0gdmFsdWU7XG4gICAgICAgICAgICAgIGFzc2lnbkVsZW1lbnRzKGhvc3QsIGF0dHJpYnV0ZSwgZW50cnkuZWxlbWVudHMpO1xuICAgICAgICAgICAgICBPYmplY3QudmFsdWVzKGVudHJ5LmVsZW1lbnRzKVxuICAgICAgICAgICAgICAgIC5yZWR1Y2UoKGN1cnJlbnQsIG5leHQpID0+IGN1cnJlbnQuY29uY2F0KG5leHQpKVxuICAgICAgICAgICAgICAgIC5mb3JFYWNoKChlKSA9PiBlbnRyeS5vYnNlcnZlci5vYnNlcnZlKGUsIG9ic2VydmVyT3B0aW9ucykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5jb25zdCBhdHRhY2hlZEVsZW1lbnRJbnRlcm5hbHMgPSBuZXcgV2Vha01hcDxFbGVtZW50LCBFbGVtZW50SW50ZXJuYWxzPigpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNiYlN0YXRlQ29udHJvbGxlciB7XG4gIGFkZCh2YWx1ZTogc3RyaW5nKTogdGhpcztcbiAgZGVsZXRlKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuO1xuICBoYXModmFsdWU6IHN0cmluZyk6IGJvb2xlYW47XG4gIHRvZ2dsZSh2YWx1ZTogc3RyaW5nLCBmb3JjZT86IGJvb2xlYW4pOiB2b2lkO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBzdGF0ZSBjb250cm9sbGVyIGZvciB0aGUgZ2l2ZW4gZWxlbWVudC5cbiAqIE5PVCBJTlRFTkRFRCBUTyBCRSBVU0VEIEJZIENPTlNVTUVSUyFcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gybVzdGF0ZUNvbnRyb2xsZXIoZWxlbWVudDogRWxlbWVudCk6IFNiYlN0YXRlQ29udHJvbGxlcjtcbmV4cG9ydCBmdW5jdGlvbiDJtXN0YXRlQ29udHJvbGxlcihlbGVtZW50OiBFbGVtZW50IHwgdW5kZWZpbmVkIHwgbnVsbCk6IFNiYlN0YXRlQ29udHJvbGxlciB8IG51bGw7XG5leHBvcnQgZnVuY3Rpb24gybVzdGF0ZUNvbnRyb2xsZXIoZWxlbWVudDogRWxlbWVudCB8IHVuZGVmaW5lZCB8IG51bGwpOiBTYmJTdGF0ZUNvbnRyb2xsZXIgfCBudWxsIHtcbiAgaWYgKCFlbGVtZW50KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3Qgc3RhdGVzID0gYXR0YWNoZWRFbGVtZW50SW50ZXJuYWxzLmdldChlbGVtZW50KT8uc3RhdGVzO1xuICBjb25zdCB0b2dnbGU6IFNiYlN0YXRlQ29udHJvbGxlclsndG9nZ2xlJ10gPSBmdW5jdGlvbiAodGhpczogU2JiU3RhdGVDb250cm9sbGVyLCB2YWx1ZSwgZm9yY2UpIHtcbiAgICBpZiAoZm9yY2UgfHwgKGZvcmNlICE9PSBmYWxzZSAmJiAhdGhpcy5oYXModmFsdWUpKSkge1xuICAgICAgdGhpcy5hZGQodmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlbGV0ZSh2YWx1ZSk7XG4gICAgfVxuICB9O1xuICBpZiAoc3RhdGVzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFkZCh2YWx1ZSkge1xuICAgICAgICBzdGF0ZXMuYWRkKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgZGVsZXRlOiAodmFsdWUpID0+IHN0YXRlcy5kZWxldGUodmFsdWUpLFxuICAgICAgaGFzOiAodmFsdWUpID0+IHN0YXRlcy5oYXModmFsdWUpLFxuICAgICAgdG9nZ2xlLFxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgLy8gSWYgbm8gRWxlbWVudEludGVybmFscyBpcyBhdHRhY2hlZCwgd2UgZmFsbCBiYWNrIHRvIHVzaW5nIGF0dHJpYnV0ZXMuIEUuZy4gZm9yIHRyaWdnZXJzLlxuICAgIHJldHVybiB7XG4gICAgICBhZGQodmFsdWUpIHtcbiAgICAgICAgZWxlbWVudC50b2dnbGVBdHRyaWJ1dGUoYHN0YXRlLS0ke3ZhbHVlfWAsIHRydWUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0sXG4gICAgICBkZWxldGU6ICh2YWx1ZSkgPT4gZWxlbWVudC50b2dnbGVBdHRyaWJ1dGUoYHN0YXRlLS0ke3ZhbHVlfWAsIGZhbHNlKSxcbiAgICAgIGhhczogKHZhbHVlKSA9PiBlbGVtZW50Lmhhc0F0dHJpYnV0ZShgc3RhdGUtLSR7dmFsdWV9YCksXG4gICAgICB0b2dnbGUsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2JiU2xvdHRlZENoYW5nZUV2ZW50IGV4dGVuZHMgRXZlbnQge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHNsb3Q6IEhUTUxTbG90RWxlbWVudCkge1xuICAgIHN1cGVyKCdzbG90dGVkY2hhbmdlJywgeyBjb21wb3NlZDogdHJ1ZSB9KTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNiYlByb3BlcnR5VmFsdWVzIHtcbiAgb2xkVmFsdWU/OiB1bmtub3duO1xuICB2YWx1ZT86IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2JiUmVhY3RpdmVDb250cm9sbGVyIGV4dGVuZHMgUmVhY3RpdmVDb250cm9sbGVyIHtcbiAgaG9zdFByb3BlcnR5VXBkYXRlPyhcbiAgICBuYW1lOiBQcm9wZXJ0eUtleSxcbiAgICB2YWx1ZXM/OiBTYmJQcm9wZXJ0eVZhbHVlcyxcbiAgICBvcHRpb25zPzogUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgKTogdm9pZDtcbn1cblxuLyoqXG4gKiBBcHBlbmRzIHRoZSBnaXZlbiBlbGVtZW50cyB0byB0aGUgZ2l2ZW4gYXJpYSB2YWx1ZSBhbmQgcmV0dXJucyB0aGVcbiAqIGNvbWJpbmVkIHZhbHVlIGFzIGEgbmV3IGFycmF5IG9yIG51bGwsIGlmIGJvdGggdmFsdWVzIHdlcmUgZW1wdHkuXG4gKi9cbmV4cG9ydCBjb25zdCBhcHBlbmRBcmlhRWxlbWVudHMgPSAoXG4gIGFyaWFWYWx1ZTogcmVhZG9ubHkgRWxlbWVudFtdIHwgbnVsbCxcbiAgLi4ubmV3RWxlbWVudHM6IChFbGVtZW50IHwgbnVsbClbXVxuKTogRWxlbWVudFtdIHwgbnVsbCA9PiB7XG4gIGNvbnN0IGVsZW1lbnRzID0gbmV3RWxlbWVudHMuZmlsdGVyKCh2KTogdiBpcyBFbGVtZW50ID0+ICEhdik7XG4gIHJldHVybiBhcmlhVmFsdWU/Lmxlbmd0aCA/IGFyaWFWYWx1ZS5jb25jYXQoZWxlbWVudHMpIDogbmV3RWxlbWVudHMubGVuZ3RoID8gZWxlbWVudHMgOiBudWxsO1xufTtcblxuLyoqXG4gKiBSZW1vdmVzIHRoZSBnaXZlbiBlbGVtZW50cyBmcm9tIHRoZSBnaXZlbiBhcmlhIHZhbHVlIGFuZCByZXR1cm5zXG4gKiB0aGUgcmVtYWluaW5nIGVsZW1lbnRzIGFzIGEgbmV3IGFycmF5IG9yIG51bGwsIGlmIHRoZSByZXN1bHQgaXMgZW1wdHkuXG4gKi9cbmV4cG9ydCBjb25zdCByZW1vdmVBcmlhRWxlbWVudHMgPSAoXG4gIGFyaWFWYWx1ZTogcmVhZG9ubHkgRWxlbWVudFtdIHwgbnVsbCxcbiAgLi4ucmVtb3ZhYmxlRWxlbWVudHM6IChFbGVtZW50IHwgbnVsbClbXVxuKTogRWxlbWVudFtdIHwgbnVsbCA9PiB7XG4gIHJlbW92YWJsZUVsZW1lbnRzID0gcmVtb3ZhYmxlRWxlbWVudHMuZmlsdGVyKCh2KSA9PiAhIXYpO1xuICBjb25zdCBlbGVtZW50cyA9IGFyaWFWYWx1ZT8uZmlsdGVyKCh2KSA9PiAhcmVtb3ZhYmxlRWxlbWVudHMuaW5jbHVkZXModikpID8/IG51bGw7XG4gIHJldHVybiBlbGVtZW50cz8ubGVuZ3RoID8gZWxlbWVudHMgOiBudWxsO1xufTtcblxuZXhwb3J0IHR5cGUgU2JiRWxlbWVudFR5cGUgPSB0eXBlb2YgU2JiRWxlbWVudDtcblxuZXhwb3J0IGludGVyZmFjZSBTYmJFbGVtZW50Q29uc3RydWN0b3Ige1xuICBlbGVtZW50RGVwZW5kZW5jaWVzPzogU2JiRWxlbWVudFR5cGVbXTtcbiAgcm9sZT86IEVsZW1lbnRJbnRlcm5hbHNbJ3JvbGUnXTtcbn1cblxuLyoqXG4gKiBBIGJhc2UgY2xhc3MgZm9yIGFsbCBTQkIgZWxlbWVudHMuXG4gKiBJbmNsdWRlcyBhdHRhY2hpbmcgRWxlbWVudEludGVybmFscywgaGFuZGxpbmcgaHlkcmF0aW9uLCBhbmQgbWFuYWdpbmcgc3RhdGUuXG4gKi9cbi8vIFRPRE8oYnJlYWtpbmctY2hhbmdlKTogSW5saW5lIGFuZCByZW1vdmUgU2JiRWxlbWVudEludGVybmFsc01peGluIGFuZCBTYmJIeWRyYXRpb25NaXhpbiBhcyBhIGJyZWFraW5nIGNoYW5nZVxuZXhwb3J0IGNsYXNzIFNiYkVsZW1lbnQgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBbJ18kc2JiRWxlbWVudCQnXSA9IHRydWU7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZztcbiAgcHVibGljIHN0YXRpYyBlbGVtZW50RGVwZW5kZW5jaWVzPzogU2JiRWxlbWVudFR5cGVbXTtcbiAgcHVibGljIHN0YXRpYyByb2xlPzogRWxlbWVudEludGVybmFsc1sncm9sZSddO1xuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGludGVybmFsczogRWxlbWVudEludGVybmFscyA9IHRoaXMuYXR0YWNoSW50ZXJuYWxzKCk7XG5cbiAgcHJpdmF0ZSBfY29udHJvbGxlcnM/OiBTZXQ8U2JiUmVhY3RpdmVDb250cm9sbGVyPjtcbiAgcHJpdmF0ZSBfaHlkcmF0aW9uUmVxdWlyZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgX2h5ZHJhdGlvbkNvbXBsZXRlID0gbmV3IFByb21pc2U8Ym9vbGVhbj4oXG4gICAgKHJlc29sdmUpID0+ICh0aGlzLl9yZXNvbHZlSHlkcmF0aW9uID0gcmVzb2x2ZSksXG4gICk7XG4gIHByaXZhdGUgX3Jlc29sdmVIeWRyYXRpb24hOiAoaHlkcmF0aW9uUmVxdWlyZWQ6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHByaXZhdGUgX3RleHRPYnNlcnZlcj86IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZWxlbWVudCBoYXMgY29tcGxldGVkIGh5ZHJhdGlvbi5cbiAgICogVGhlIFByb21pc2UgdmFsdWUgaXMgYSBib29sZWFuIHRoYXQgaXMgYHRydWVgIGlmIHRoZSBlbGVtZW50IHJlcXVpcmVkIGh5ZHJhdGlvblxuICAgKiBhbmQgYGZhbHNlYCBpZiBub3QuXG4gICAqXG4gICAqIEByZXR1cm4gQSBwcm9taXNlIG9mIGEgYm9vbGVhbiB0aGF0IHJlc29sdmVzIHRvIHRydWUgb25jZSB0aGUgaHlkcmF0aW9uIGNvbXBsZXRlZC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgZ2V0IGh5ZHJhdGlvbkNvbXBsZXRlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9oeWRyYXRpb25Db21wbGV0ZTtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHdoZXRoZXIgaHlkcmF0aW9uIGlzIHJlcXVpcmVkIGFuZCBub3QgY29tcGxldGVkLiAqL1xuICBwcm90ZWN0ZWQgZ2V0IGh5ZHJhdGlvblJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9oeWRyYXRpb25SZXF1aXJlZDtcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIGF0dGFjaGVkRWxlbWVudEludGVybmFscy5zZXQodGhpcywgdGhpcy5pbnRlcm5hbHMpO1xuICAgIGlmIChDdXN0b21TdGF0ZVNldFBvbHlmaWxsKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcy5pbnRlcm5hbHMsICdzdGF0ZXMnLCB7XG4gICAgICAgIHZhbHVlOiBuZXcgQ3VzdG9tU3RhdGVTZXRQb2x5ZmlsbCh0aGlzKSxcbiAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBXZSB1c2UgdGhlIEN1c3RvbVN0YXRlU2V0IHBvbHlmaWxsIGluIFNTUiwgd2hpY2ggcmVuZGVycyB0aGUgc3RhdGUgYXMgYXR0cmlidXRlc1xuICAgICAgLy8gd2hpY2ggY2FuIGJlIHRyYW5zZmVycmVkIHRvIGNsaWVudCBzaWRlLCB3aGVyZSB3ZSBjYW4gdGhlbiBjb252ZXJ0IFtzdGF0ZS0tKl1cbiAgICAgIC8vIGF0dHJpYnV0ZXMgdG8gaW50ZXJuYWwgc3RhdGUuXG4gICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgdGhpcy5nZXRBdHRyaWJ1dGVOYW1lcygpLmZpbHRlcigobikgPT4gbi5zdGFydHNXaXRoKCdzdGF0ZS0tJykpKSB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5hZGQobmFtZS5zbGljZSg3KSk7XG4gICAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCByb2xlID0gKHRoaXMuY29uc3RydWN0b3IgYXMgU2JiRWxlbWVudENvbnN0cnVjdG9yKS5yb2xlO1xuICAgIGlmIChyb2xlKSB7XG4gICAgICB0aGlzLmludGVybmFscy5yb2xlID0gcm9sZTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayB3aGV0aGVyIGh5ZHJhdGlvbiBpcyBuZWVkZWQgYnkgY2hlY2tpbmcgd2hldGhlciB0aGUgc2hhZG93IHJvb3RcbiAgICAvLyBpcyBhdmFpbGFibGUgZHVyaW5nIGNvbnN0cnVjdGlvbi91cGdyYWRlIHBoYXNlLlxuICAgIHRoaXMuX2h5ZHJhdGlvblJlcXVpcmVkID0gISF0aGlzLnNoYWRvd1Jvb3Q7XG4gICAgaWYgKCF0aGlzLl9oeWRyYXRpb25SZXF1aXJlZCkge1xuICAgICAgdGhpcy5fcmVzb2x2ZUh5ZHJhdGlvbihmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIER1cmluZyBoeWRyYXRpb24gcGhhc2UsIHdlIHdhbnQgdG8gc3VwcHJlc3Mgc2xvdGNoYW5nZSBldmVudHMgYXMgdGhleVxuICAgICAgLy8gY2FuIGNhdXNlIHJlbmRlciBkaWZmZXJlbmNlcywgd2hpY2ggd291bGQgYnJlYWsgaHlkcmF0aW9uLiBBZnRlclxuICAgICAgLy8gaHlkcmF0aW9uIGlzIGNvbXBsZXRlLCB3ZSBkaXNwYXRjaCBhIG1hbnVhbCBzbG90Y2hhbmdlIGV2ZW50LCBpZiB0aGVyZVxuICAgICAgLy8gYXJlIGVsZW1lbnRzIGFzc2lnbmVkIHRvIGEgc2xvdC5cbiAgICAgIGNvbnN0IHN1cHByZXNzU2xvdGNoYW5nZUV2ZW50ID0gKGV2ZW50OiBFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgICBpZiAodGhpcy5faHlkcmF0aW9uUmVxdWlyZWQpIHtcbiAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGNvbnN0IGV2ZW50T3B0aW9uczogRXZlbnRMaXN0ZW5lck9wdGlvbnMgPSB7IGNhcHR1cmU6IHRydWUgfTtcbiAgICAgIGNvbnN0IHNsb3RzID0gdGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yQWxsKCdzbG90Jyk7XG4gICAgICBpZiAoc2xvdHM/Lmxlbmd0aCkge1xuICAgICAgICBzbG90cy5mb3JFYWNoKChzbG90KSA9PlxuICAgICAgICAgIHNsb3QuYWRkRXZlbnRMaXN0ZW5lcignc2xvdGNoYW5nZScsIHN1cHByZXNzU2xvdGNoYW5nZUV2ZW50LCBldmVudE9wdGlvbnMpLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmh5ZHJhdGlvbkNvbXBsZXRlLnRoZW4oKCkgPT5cbiAgICAgICAgICBzbG90cy5mb3JFYWNoKChzbG90KSA9PiB7XG4gICAgICAgICAgICBzbG90LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Nsb3RjaGFuZ2UnLCBzdXBwcmVzc1Nsb3RjaGFuZ2VFdmVudCwgZXZlbnRPcHRpb25zKTtcbiAgICAgICAgICAgIGlmIChzbG90LmFzc2lnbmVkTm9kZXMoKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgICAgICAgICAgICBzbG90LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdzbG90Y2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiogUmVnaXN0ZXIgdGhlIGN1c3RvbSBlbGVtZW50IGluIHRoZSBnbG9iYWwgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LiAqL1xuICBwdWJsaWMgc3RhdGljIGRlZmluZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZWxlbWVudE5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFRoZSBzdGF0aWMgcHJvcGVydHkgXCJlbGVtZW50TmFtZVwiIGlzIG5vdCBkZWZpbmVkIG9uICR7dGhpcy5uYW1lfS4gUGxlYXNlIGRlZmluZSBpdCB0byByZWdpc3RlciB0aGUgY3VzdG9tIGVsZW1lbnQuYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudENsYXNzID0gY3VzdG9tRWxlbWVudHMuZ2V0KHRoaXMuZWxlbWVudE5hbWUpO1xuICAgIGlmICghZWxlbWVudENsYXNzKSB7XG4gICAgICBjdXN0b21FbGVtZW50cy5kZWZpbmUodGhpcy5lbGVtZW50TmFtZSwgdGhpcyBhcyB1bmtub3duIGFzIEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcik7XG4gICAgICAvLyBOZXh0LmpzIHJlLXJlbmRlcmluZyBzb21laG93IGZhaWxzLCBiZWNhdXNlIHRoZSBmaW5hbGl6YXRpb24gY2FsY3VsYXRpb25cbiAgICAgIC8vIGlzIGJyb2tlbiBpbiBTU1IuIFdlIGNhbGwgYGZpbmFsaXplKClgIGhlcmUgZXhwbGljaXRseSB0byBhdm9pZCB0aGF0LlxuICAgICAgdGhpcy5maW5hbGl6ZSgpO1xuICAgICAgY29uc3QgZWxlbWVudERlcGVuZGVuY2llczogU2JiRWxlbWVudFR5cGVbXSA9IFtdO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzXG4gICAgICBsZXQgY3RvcjogU2JiRWxlbWVudFR5cGUgPSB0aGlzO1xuICAgICAgd2hpbGUgKGN0b3JbJ18kc2JiRWxlbWVudCQnXSkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjdG9yLmVsZW1lbnREZXBlbmRlbmNpZXMpKSB7XG4gICAgICAgICAgZWxlbWVudERlcGVuZGVuY2llcy5wdXNoKC4uLmN0b3IuZWxlbWVudERlcGVuZGVuY2llcyk7XG4gICAgICAgIH1cbiAgICAgICAgY3RvciA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihjdG9yKTtcbiAgICAgIH1cbiAgICAgIG5ldyBTZXQoZWxlbWVudERlcGVuZGVuY2llcykuZm9yRWFjaCgoZGVwZW5kZW5jeSkgPT4gZGVwZW5kZW5jeS5kZWZpbmUoKSk7XG4gICAgfSBlbHNlIGlmIChpbXBvcnQubWV0YS5lbnYuREVWICYmIGVsZW1lbnRDbGFzcyAhPT0gdGhpcykge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgVGhlIGN1c3RvbSBlbGVtZW50IHdpdGggbmFtZSBcIiR7dGhpcy5lbGVtZW50TmFtZX1cIiBpcyBhbHJlYWR5IGRlZmluZWQuIFNraXBwaW5nLmAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBjcmVhdGVSZW5kZXJSb290KCk6IEhUTUxFbGVtZW50IHwgRG9jdW1lbnRGcmFnbWVudCB7XG4gICAgY29uc3Qgcm9vdCA9IHN1cGVyLmNyZWF0ZVJlbmRlclJvb3QoKTtcbiAgICB0aGlzLnNoYWRvd1Jvb3Q/LmFkZEV2ZW50TGlzdGVuZXIoJ3Nsb3RjaGFuZ2UnLCAoZSkgPT5cbiAgICAgIHRoaXMuX3Nsb3RjaGFuZ2VIYW5kbGVyKGUsIGUudGFyZ2V0IGFzIEhUTUxTbG90RWxlbWVudCksXG4gICAgKTtcbiAgICB0aGlzLnNoYWRvd1Jvb3Q/LmFkZEV2ZW50TGlzdGVuZXIoJ3Nsb3R0ZWRjaGFuZ2UnLCAoZSkgPT4gdGhpcy5fc2xvdGNoYW5nZUhhbmRsZXIoZSwgZS5zbG90KSwge1xuICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICB9KTtcbiAgICB0aGlzLnNoYWRvd1Jvb3RcbiAgICAgID8ucXVlcnlTZWxlY3RvckFsbD8uKCdzbG90JylcbiAgICAgIC5mb3JFYWNoKChzbG90KSA9PiB0aGlzLl9oYW5kbGVTbG90Q2hhbmdlRm9yU2xvdHRlZFN0YXRlKHNsb3QpKTtcblxuICAgIHJldHVybiByb290O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGBSZWFjdGl2ZUNvbnRyb2xsZXJgIHRvIHBhcnRpY2lwYXRlIGluIHRoZSBlbGVtZW50J3MgcmVhY3RpdmVcbiAgICogdXBkYXRlIGN5Y2xlLiBUaGUgZWxlbWVudCBhdXRvbWF0aWNhbGx5IGNhbGxzIGludG8gYW55IHJlZ2lzdGVyZWRcbiAgICogY29udHJvbGxlcnMgZHVyaW5nIGl0cyBsaWZlY3ljbGUgY2FsbGJhY2tzLlxuICAgKlxuICAgKiBJZiB0aGUgZWxlbWVudCBpcyBjb25uZWN0ZWQgd2hlbiBgYWRkQ29udHJvbGxlcigpYCBpcyBjYWxsZWQsIHRoZVxuICAgKiBjb250cm9sbGVyJ3MgYGhvc3RDb25uZWN0ZWQoKWAgY2FsbGJhY2sgd2lsbCBiZSBpbW1lZGlhdGVseSBjYWxsZWQuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgYWRkQ29udHJvbGxlcihjb250cm9sbGVyOiBTYmJSZWFjdGl2ZUNvbnRyb2xsZXIpOiB2b2lkIHtcbiAgICBzdXBlci5hZGRDb250cm9sbGVyKGNvbnRyb2xsZXIpO1xuICAgICh0aGlzLl9jb250cm9sbGVycyA/Pz0gbmV3IFNldCgpKS5hZGQoY29udHJvbGxlcik7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhIGBSZWFjdGl2ZUNvbnRyb2xsZXJgIGZyb20gdGhlIGVsZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgcmVtb3ZlQ29udHJvbGxlcihjb250cm9sbGVyOiBTYmJSZWFjdGl2ZUNvbnRyb2xsZXIpOiB2b2lkIHtcbiAgICBzdXBlci5yZW1vdmVDb250cm9sbGVyKGNvbnRyb2xsZXIpO1xuICAgIHRoaXMuX2NvbnRyb2xsZXJzPy5kZWxldGUoY29udHJvbGxlcik7XG4gIH1cblxuICAvKipcbiAgICogUmVxdWVzdHMgYW4gdXBkYXRlIHdoaWNoIGlzIHByb2Nlc3NlZCBhc3luY2hyb25vdXNseS4gVGhpcyBzaG91bGQgYmUgY2FsbGVkXG4gICAqIHdoZW4gYW4gZWxlbWVudCBzaG91bGQgdXBkYXRlIGJhc2VkIG9uIHNvbWUgc3RhdGUgbm90IHRyaWdnZXJlZCBieSBzZXR0aW5nXG4gICAqIGEgcmVhY3RpdmUgcHJvcGVydHkuIEluIHRoaXMgY2FzZSwgcGFzcyBubyBhcmd1bWVudHMuIEl0IHNob3VsZCBhbHNvIGJlXG4gICAqIGNhbGxlZCB3aGVuIG1hbnVhbGx5IGltcGxlbWVudGluZyBhIHByb3BlcnR5IHNldHRlci4gSW4gdGhpcyBjYXNlLCBwYXNzIHRoZVxuICAgKiBwcm9wZXJ0eSBgbmFtZWAgYW5kIGBvbGRWYWx1ZWAgdG8gZW5zdXJlIHRoYXQgYW55IGNvbmZpZ3VyZWQgcHJvcGVydHlcbiAgICogb3B0aW9ucyBhcmUgaG9ub3JlZC5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgbmFtZSBvZiByZXF1ZXN0aW5nIHByb3BlcnR5XG4gICAqIEBwYXJhbSBvbGRWYWx1ZSBvbGQgdmFsdWUgb2YgcmVxdWVzdGluZyBwcm9wZXJ0eVxuICAgKiBAcGFyYW0gb3B0aW9ucyBwcm9wZXJ0eSBvcHRpb25zIHRvIHVzZSBpbnN0ZWFkIG9mIHRoZSBwcmV2aW91c2x5XG4gICAqICAgICBjb25maWd1cmVkIG9wdGlvbnNcbiAgICogQHBhcmFtIHVzZU5ld1ZhbHVlIGlmIHRydWUsIHRoZSBuZXdWYWx1ZSBhcmd1bWVudCBpcyB1c2VkIGluc3RlYWQgb2ZcbiAgICogICAgIHJlYWRpbmcgdGhlIHByb3BlcnR5IHZhbHVlLiBUaGlzIGlzIGltcG9ydGFudCB0byB1c2UgaWYgdGhlIHJlYWN0aXZlXG4gICAqICAgICBwcm9wZXJ0eSBpcyBhIHN0YW5kYXJkIHByaXZhdGUgYWNjZXNzb3IsIGFzIG9wcG9zZWQgdG8gYSBwbGFpblxuICAgKiAgICAgcHJvcGVydHksIHNpbmNlIHByaXZhdGUgbWVtYmVycyBjYW4ndCBiZSBkeW5hbWljYWxseSByZWFkIGJ5IG5hbWUuXG4gICAqIEBwYXJhbSBuZXdWYWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSBwcm9wZXJ0eS4gVGhpcyBpcyBvbmx5IHVzZWQgaWZcbiAgICogICAgIGB1c2VOZXdWYWx1ZWAgaXMgdHJ1ZS5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSByZXF1ZXN0VXBkYXRlKFxuICAgIG5hbWU/OiBQcm9wZXJ0eUtleSxcbiAgICBvbGRWYWx1ZT86IHVua25vd24sXG4gICAgb3B0aW9ucz86IFByb3BlcnR5RGVjbGFyYXRpb24sXG4gICAgdXNlTmV3VmFsdWU/OiBib29sZWFuLFxuICAgIG5ld1ZhbHVlPzogdW5rbm93bixcbiAgKTogdm9pZCB7XG4gICAgc3VwZXIucmVxdWVzdFVwZGF0ZShuYW1lLCBvbGRWYWx1ZSwgb3B0aW9ucywgdXNlTmV3VmFsdWUsIG5ld1ZhbHVlKTtcbiAgICBpZiAobmFtZSkge1xuICAgICAgY29uc3QgdmFsdWVzOiBTYmJQcm9wZXJ0eVZhbHVlcyA9IHtcbiAgICAgICAgb2xkVmFsdWUsXG4gICAgICAgIHZhbHVlOiB1c2VOZXdWYWx1ZSA/IG5ld1ZhbHVlIDogdGhpc1tuYW1lIGFzIGtleW9mIHRoaXNdLFxuICAgICAgfTtcbiAgICAgIHRoaXMuX2NvbnRyb2xsZXJzPy5mb3JFYWNoKChjb250cm9sbGVyKSA9PlxuICAgICAgICBjb250cm9sbGVyLmhvc3RQcm9wZXJ0eVVwZGF0ZT8uKG5hbWUsIHZhbHVlcywgb3B0aW9ucyksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB1cGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgLy8gV2hlbiBoeWRyYXRpb24gaXMgbmVlZGVkLCB3ZSB3YWl0IHRoZSBoeWRyYXRpb24gcHJvY2VzcyB0byBmaW5pc2gsIHdoaWNoIGlzIHBhdGNoZWRcbiAgICAvLyBpbnRvIHRoZSB1cGRhdGUgbWV0aG9kIG9mIHRoZSBMaXRFbGVtZW50IGJhc2UgY2xhc3MuXG4gICAgc3VwZXIudXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmICh0aGlzLl9oeWRyYXRpb25SZXF1aXJlZCkge1xuICAgICAgdGhpcy5faHlkcmF0aW9uUmVxdWlyZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuX3Jlc29sdmVIeWRyYXRpb24odHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZVN0YXRlKHZhbHVlOiBzdHJpbmcsIGZvcmNlPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChmb3JjZSB8fCAoZm9yY2UgIT09IGZhbHNlICYmICF0aGlzLmludGVybmFscy5zdGF0ZXMuaGFzKHZhbHVlKSkpIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5hZGQodmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zbG90Y2hhbmdlSGFuZGxlcihldmVudDogRXZlbnQsIHNsb3Q6IEhUTUxTbG90RWxlbWVudCk6IHZvaWQge1xuICAgIGNvbnN0IHJlc29sdmVkU2xvdCA9IHRoaXMuc2hhZG93Um9vdCEuY29udGFpbnMoc2xvdClcbiAgICAgID8gc2xvdFxuICAgICAgOiBldmVudFxuICAgICAgICAgIC5jb21wb3NlZFBhdGgoKVxuICAgICAgICAgIC5maW5kKFxuICAgICAgICAgICAgKGVsKTogZWwgaXMgSFRNTFNsb3RFbGVtZW50ID0+XG4gICAgICAgICAgICAgIGVsIGluc3RhbmNlb2YgSFRNTFNsb3RFbGVtZW50ICYmIHRoaXMuc2hhZG93Um9vdCEuY29udGFpbnMoZWwpLFxuICAgICAgICAgICk7XG4gICAgaWYgKHJlc29sdmVkU2xvdCkge1xuICAgICAgdGhpcy5faGFuZGxlU2xvdENoYW5nZUZvclNsb3R0ZWRTdGF0ZShyZXNvbHZlZFNsb3QpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZVNsb3RDaGFuZ2VGb3JTbG90dGVkU3RhdGUoc2xvdDogSFRNTFNsb3RFbGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy5fdXBkYXRlU2xvdHRlZFN0YXRlKHNsb3QpO1xuICAgIGlmICghc2xvdC5uYW1lKSB7XG4gICAgICB0aGlzLl9vYnNlcnZlVGV4dE5vZGVzSW5TbG90KHNsb3QpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVNsb3R0ZWRTdGF0ZShzbG90OiBIVE1MU2xvdEVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBzdGF0ZU5hbWUgPSBzbG90Lm5hbWUgPyBgc2xvdHRlZC0ke3Nsb3QubmFtZX1gIDogJ3Nsb3R0ZWQnO1xuICAgIGNvbnN0IGhhc1Nsb3R0ZWRDb250ZW50ID0gdGhpcy5faGFzU2xvdHRlZENvbnRlbnQoc2xvdCk7XG4gICAgaWYgKGhhc1Nsb3R0ZWRDb250ZW50ICYmICF0aGlzLmludGVybmFscy5zdGF0ZXMuaGFzKHN0YXRlTmFtZSkpIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5hZGQoc3RhdGVOYW1lKTtcbiAgICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgU2JiU2xvdHRlZENoYW5nZUV2ZW50KHNsb3QpKTtcbiAgICB9IGVsc2UgaWYgKCFoYXNTbG90dGVkQ29udGVudCAmJiB0aGlzLmludGVybmFscy5zdGF0ZXMuaGFzKHN0YXRlTmFtZSkpIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5kZWxldGUoc3RhdGVOYW1lKTtcbiAgICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgU2JiU2xvdHRlZENoYW5nZUV2ZW50KHNsb3QpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vYnNlcnZlVGV4dE5vZGVzSW5TbG90KHNsb3Q6IEhUTUxTbG90RWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuX3RleHRPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgIC8vIE9ubHkgY3JlYXRlIHRoZSBNdXRhdGlvbk9ic2VydmVyIHdoZW4gaXQgaXMgYWN0dWFsbHkgbmVlZGVkIHRvIG9wdGltaXplIHBlcmZvcm1hbmNlLlxuICAgIHRoaXMuX3RleHRPYnNlcnZlciA/Pz0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgY29uc3Qgc2xvdCA9IHRoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3RvcjxIVE1MU2xvdEVsZW1lbnQ+KCdzbG90Om5vdChbbmFtZV0pJyk7XG4gICAgICBpZiAoc2xvdCkge1xuICAgICAgICB0aGlzLl91cGRhdGVTbG90dGVkU3RhdGUoc2xvdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl90ZXh0T2JzZXJ2ZXIhLmRpc2Nvbm5lY3QoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICAvLyBUZXh0IG5vZGVzIGNhbiBiZSBlbXB0eSBhbmQgZmlsbGVkIGxhdGVyIChvciB2aWNlIHZlcnNhKS5cbiAgICAvLyBGaWxsaW5nIGFuIGV4aXN0aW5nIG5vZGUgbGF0ZXIgd291bGQgbm90IHRyaWdnZXIgYW5vdGhlciBzbG90Y2hhbmdlIGV2ZW50LlxuICAgIC8vIFRoZXJlZm9yZSwgd2UgbmVlZCB0byBvYnNlcnZlIHRleHQgbm9kZXMgYW5kIGNoZWNrIGlmIHRoZXkgYmVjb21lIGZpbGxlZCBvciBlbXB0eS5cbiAgICAvLyBUaGlzIGlzIG9ubHkgbmVlZGVkIGZvciB0aGUgdW5uYW1lZCBzbG90IGFzIGZvciBldmVyeSBvdGhlciB0aGVyZSB3b3VsZFxuICAgIC8vIGJlIGEgdGFnIHdoaWNoIHRyaWdnZXJzIHRoZSBzbG90IGNoYW5nZSBldmVudC5cbiAgICAvLyBUaGUgbWFpbiByZWFzb24gaXMgdGhhdCBBbmd1bGFyIGNyZWF0ZXMgZW1wdHkgdGV4dCBub2RlcyBhbmQgZmlsbHMgdGhlbSBsYXRlci5cbiAgICBzbG90XG4gICAgICAuYXNzaWduZWROb2RlcygpXG4gICAgICAuZmlsdGVyKChuKSA9PiBuLm5vZGVUeXBlID09PSBuLlRFWFRfTk9ERSlcbiAgICAgIC5mb3JFYWNoKChub2RlKSA9PiB0aGlzLl90ZXh0T2JzZXJ2ZXIhLm9ic2VydmUobm9kZSwgeyBjaGFyYWN0ZXJEYXRhOiB0cnVlIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhc1Nsb3R0ZWRDb250ZW50KHNsb3Q6IEhUTUxTbG90RWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzbG90Lm5hbWVcbiAgICAgID8gc2xvdFxuICAgICAgICAgIC5hc3NpZ25lZEVsZW1lbnRzKClcbiAgICAgICAgICAuc29tZSgobm9kZSkgPT4gIShub2RlIGluc3RhbmNlb2YgSFRNTFNsb3RFbGVtZW50KSB8fCB0aGlzLl9oYXNTbG90dGVkQ29udGVudChub2RlKSlcbiAgICAgIDogc2xvdC5hc3NpZ25lZE5vZGVzKCkuc29tZSgobm9kZSkgPT4ge1xuICAgICAgICAgIHJldHVybiBub2RlIGluc3RhbmNlb2YgSFRNTFNsb3RFbGVtZW50XG4gICAgICAgICAgICA/IHRoaXMuX2hhc1Nsb3R0ZWRDb250ZW50KG5vZGUpXG4gICAgICAgICAgICA6IG5vZGUubm9kZVR5cGUgIT09IG5vZGUuVEVYVF9OT0RFIHx8ICEhbm9kZS50ZXh0Q29udGVudD8udHJpbSgpO1xuICAgICAgICB9KTtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudEV2ZW50TWFwIHtcbiAgICBzbG90dGVkY2hhbmdlOiBTYmJTbG90dGVkQ2hhbmdlRXZlbnQ7XG4gIH1cbiAgaW50ZXJmYWNlIFNoYWRvd1Jvb3RFdmVudE1hcCB7XG4gICAgc2xvdHRlZGNoYW5nZTogU2JiU2xvdHRlZENoYW5nZUV2ZW50O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBY0EsSUFBTSx5QkFDSixZQUFZLENBQUMsSUFBSSxTQUFTLGtEQUE0QixHQUNsRCxNQUFNLHVCQUNJLElB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
|
|
371
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9iYXNlLWVsZW1lbnRzL2VsZW1lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgaXNTZXJ2ZXIsXG4gIExpdEVsZW1lbnQsXG4gIHR5cGUgUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBSZWFjdGl2ZUNvbnRyb2xsZXIsXG59IGZyb20gJ2xpdCc7XG5cbi8vIE1vc3Qgb2Ygb3VyIHRhcmdldCBicm93c2VycyBzdXBwb3J0IHRoZSA6c3RhdGUoKSBwc2V1ZG8gY2xhc3MsIGJ1dCBub3QgYWxsIG9mIHRoZW0uXG4vLyBXZSBwYXRjaCB0aGUgc3RhdGVzIHByb3BlcnR5IG9mIHRoZSBlbGVtZW50IGludGVybmFscyB0byB1c2UgYXR0cmlidXRlcyBpbnN0ZWFkLFxuLy8gaWYgOnN0YXRlKCkgaXMgbm90IHN1cHBvcnRlZC5cbi8vIE5vdGUgdGhhdCBmb3IgU1NSLCB0aGUgc3RhdGVzIHByb3BlcnR5IGlzIGEgc2ltcGxlIFNldCwgaW1wbGVtZW50ZWQgaW4gTGl0IFNTUi5cbnR5cGUgQ3VzdG9tU3RhdGVTZXRJbnRlcmZhY2UgPSBDdXN0b21TdGF0ZVNldDtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmNvbnN0IEN1c3RvbVN0YXRlU2V0UG9seWZpbGw6IChuZXcgKGhvc3Q6IExpdEVsZW1lbnQpID0+IEN1c3RvbVN0YXRlU2V0SW50ZXJmYWNlKSB8IG51bGwgPVxuICBpc1NlcnZlciB8fCAhQ1NTLnN1cHBvcnRzKCdzZWxlY3Rvcig6c3RhdGUobG9hZGluZykpJylcbiAgICA/IGNsYXNzIEN1c3RvbVN0YXRlU2V0XG4gICAgICAgIGV4dGVuZHMgU2V0PHN0cmluZz5cbiAgICAgICAgaW1wbGVtZW50cyBDdXN0b21TdGF0ZVNldEludGVyZmFjZSwgUmVhY3RpdmVDb250cm9sbGVyXG4gICAgICB7XG4gICAgICAgIHByaXZhdGUgX2FwcGxpZWQgPSBpc1NlcnZlcjtcblxuICAgICAgICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfaG9zdDogTGl0RWxlbWVudCkge1xuICAgICAgICAgIHN1cGVyKCk7XG4gICAgICAgICAgdGhpcy5faG9zdC5hZGRDb250cm9sbGVyKHRoaXMpO1xuICAgICAgICAgIGlmICghaXNTZXJ2ZXIpIHtcbiAgICAgICAgICAgIC8vIFdlIHdhbnQgdG8gYXBwbHkgdGhlIGF0dHJpYnV0ZXMgYXMgZWFybHkgYXMgcG9zc2libGUgd2hpY2ggY2FuXG4gICAgICAgICAgICAvLyBlaXRoZXIgYmUgdmlhIHRoaXMgUHJvbWlzZS5yZXNvbHZlKCkgb3IgdGhlIGNvbm5lY3RlZENhbGxiYWNrKCkuXG4gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHRoaXMuX2FwcGx5U3RhdGVzKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBvdmVycmlkZSBhZGQoc3RhdGU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICAgIGlmICh0aGlzLl9hcHBsaWVkKSB7XG4gICAgICAgICAgICB0aGlzLl90b2dnbGVTdGF0ZShzdGF0ZSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBzdXBlci5hZGQoc3RhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIG92ZXJyaWRlIGRlbGV0ZShzdGF0ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgICAgdGhpcy5fdG9nZ2xlU3RhdGUoc3RhdGUsIGZhbHNlKTtcbiAgICAgICAgICByZXR1cm4gc3VwZXIuZGVsZXRlKHN0YXRlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBvdmVycmlkZSBjbGVhcigpOiB2b2lkIHtcbiAgICAgICAgICB0aGlzLmZvckVhY2goKHN0YXRlKSA9PiB0aGlzLmRlbGV0ZShzdGF0ZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIGhvc3RDb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgICAgICAgdGhpcy5fYXBwbHlTdGF0ZXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByaXZhdGUgX3RvZ2dsZVN0YXRlKHN0YXRlOiBzdHJpbmcsIGVuYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgICB0aGlzLl9ob3N0LnRvZ2dsZUF0dHJpYnV0ZShgc3RhdGUtLSR7c3RhdGV9YCwgZW5hYmxlZCk7XG4gICAgICAgIH1cblxuICAgICAgICBwcml2YXRlIF9hcHBseVN0YXRlcygpOiB2b2lkIHtcbiAgICAgICAgICBpZiAodGhpcy5fYXBwbGllZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLl9hcHBsaWVkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmZvckVhY2goKHN0YXRlKSA9PiB0aGlzLl90b2dnbGVTdGF0ZShzdGF0ZSwgdHJ1ZSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgOiBudWxsO1xuXG5pZiAoIWlzU2VydmVyKSB7XG4gIC8vIFRoaXMgaXMgYSBwb2x5ZmlsbCBmb3IgdGhlIGFyaWEgZWxlbWVudHMgcHJvcGVydGllcyBvbiBFbGVtZW50SW50ZXJuYWxzIGFuZCBFbGVtZW50LlxuICBsZXQgbmV4dElkID0gMDtcbiAgY29uc3QgcmVzb2x2ZUhvc3QgPSAob3JpZ2luOiBFbGVtZW50SW50ZXJuYWxzIHwgRWxlbWVudCk6IEVsZW1lbnQgPT5cbiAgICBvcmlnaW4uc2hhZG93Um9vdD8uaG9zdCA/P1xuICAgIChvcmlnaW4gaW5zdGFuY2VvZiBFbGVtZW50XG4gICAgICA/IG9yaWdpblxuICAgICAgOiAoKCkgPT4ge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIHJlc29sdmUgcmVsYXRlZCBlbGVtZW50ISBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uJyk7XG4gICAgICAgIH0pKCkpO1xuICBjb25zdCBvYnNlcnZlck9wdGlvbnM6IE11dGF0aW9uT2JzZXJ2ZXJJbml0ID0geyBhdHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1dGVGaWx0ZXI6IFsnaWQnXSB9O1xuICBjb25zdCBhc3NpZ25FbGVtZW50ID0gKFxuICAgIGhvc3Q6IEVsZW1lbnQsXG4gICAgYXR0cmlidXRlOiBzdHJpbmcsXG4gICAgZWxlbWVudHM6IFJlY29yZDxzdHJpbmcsIEVsZW1lbnQ+LFxuICApOiB2b2lkID0+IHtcbiAgICAvLyBJbiBjYXNlIGJvdGggRWxlbWVudCBhbmQgRWxlbWVudEludGVybmFscyBwcm9wZXJ0aWVzIGFyZSBzZXQsXG4gICAgLy8gdGhlIGVsZW1lbnQgcmVmZXJlbmNlIGZyb20gRWxlbWVudCBoYXMgcHJpb3JpdHkuXG4gICAgY29uc3QgYWN0aXZlRWxlbWVudCA9IGVsZW1lbnRzW0VsZW1lbnQubmFtZV0gPz8gZWxlbWVudHNbRWxlbWVudEludGVybmFscy5uYW1lXTtcbiAgICBob3N0LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIChhY3RpdmVFbGVtZW50LmlkIHx8PSBgYXJpYS1yZWYtJHtuZXh0SWQrK31gKSk7XG4gIH07XG4gIGNvbnN0IGFzc2lnbkVsZW1lbnRzID0gKFxuICAgIGhvc3Q6IEVsZW1lbnQsXG4gICAgYXR0cmlidXRlOiBzdHJpbmcsXG4gICAgZWxlbWVudHM6IFJlY29yZDxzdHJpbmcsIEVsZW1lbnRbXT4sXG4gICk6IHZvaWQgPT4ge1xuICAgIC8vIEluIGNhc2UgYm90aCBFbGVtZW50IGFuZCBFbGVtZW50SW50ZXJuYWxzIHByb3BlcnRpZXMgYXJlIHNldCxcbiAgICAvLyB3ZSBjb21iaW5lIHRoZSBlbGVtZW50IHJlZmVyZW5jZXMuXG4gICAgaG9zdC5zZXRBdHRyaWJ1dGUoXG4gICAgICBhdHRyaWJ1dGUsXG4gICAgICBPYmplY3QudmFsdWVzKGVsZW1lbnRzKVxuICAgICAgICAucmVkdWNlKChjdXJyZW50LCBuZXh0KSA9PiBjdXJyZW50LmNvbmNhdChuZXh0KSlcbiAgICAgICAgLmZpbHRlcigodiwgaSwgYSkgPT4gYS5pbmRleE9mKHYpID09PSBpKVxuICAgICAgICAubWFwKChlKSA9PiBlLmlkIHx8IChlLmlkID0gYGFyaWEtcmVmLSR7bmV4dElkKyt9YCkpXG4gICAgICAgIC5qb2luKCcgJyksXG4gICAgKTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IHR5cGUgb2YgW0VsZW1lbnRJbnRlcm5hbHMsIEVsZW1lbnRdKSB7XG4gICAgY29uc3QgcHJvdG90eXBlID0gdHlwZS5wcm90b3R5cGU7XG4gICAgaWYgKCEoJ2FyaWFBY3RpdmVEZXNjZW5kYW50RWxlbWVudCcgaW4gcHJvdG90eXBlKSkge1xuICAgICAgY29uc3QgYXR0cmlidXRlID0gJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCc7XG4gICAgICBjb25zdCBzdG9yYWdlID0gbmV3IFdlYWtNYXA8XG4gICAgICAgIEVsZW1lbnQsXG4gICAgICAgIHsgZWxlbWVudHM6IFJlY29yZDxzdHJpbmcsIEVsZW1lbnQ+OyBvYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlciB9XG4gICAgICA+KCk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG90eXBlLCAnYXJpYUFjdGl2ZURlc2NlbmRhbnRFbGVtZW50Jywge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGdldCh0aGlzOiBFbGVtZW50SW50ZXJuYWxzIHwgRWxlbWVudCk6IEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgICBjb25zdCBob3N0ID0gcmVzb2x2ZUhvc3QodGhpcyk7XG4gICAgICAgICAgY29uc3QgaWQgPSBob3N0LmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpPy5zcGxpdCgvXFxzKy8pWzBdID8/IG51bGw7XG4gICAgICAgICAgcmV0dXJuIGlkXG4gICAgICAgICAgICA/ICgoaG9zdC5nZXRSb290Tm9kZSgpIGFzIERvY3VtZW50IHwgU2hhZG93Um9vdCkuZ2V0RWxlbWVudEJ5SWQ/LihpZCkgPz8gbnVsbClcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0KHRoaXM6IEVsZW1lbnRJbnRlcm5hbHMgfCBFbGVtZW50LCB2YWx1ZTogRWxlbWVudCB8IG51bGwpIHtcbiAgICAgICAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgISh2YWx1ZSBpbnN0YW5jZW9mIEVsZW1lbnQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgICAgICBgRmFpbGVkIHRvIHNldCB0aGUgJ2FyaWFBY3RpdmVEZXNjZW5kYW50RWxlbWVudCcgcHJvcGVydHkgb24gJyR7dHlwZS5uYW1lfSc6IEZhaWxlZCB0byBjb252ZXJ0IHZhbHVlIHRvICdFbGVtZW50Jy5gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBob3N0ID0gcmVzb2x2ZUhvc3QodGhpcyk7XG4gICAgICAgICAgY29uc3QgZW50cnkgPSBzdG9yYWdlLmdldChob3N0KTtcbiAgICAgICAgICBlbnRyeT8ub2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICAgICAgICBkZWxldGUgZW50cnkuZWxlbWVudHNbdHlwZS5uYW1lXTtcbiAgICAgICAgICAgICAgaWYgKCFPYmplY3Qua2V5cyhlbnRyeSkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgc3RvcmFnZS5kZWxldGUoaG9zdCk7XG4gICAgICAgICAgICAgICAgaG9zdC5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBlbnRyeS5vYnNlcnZlci5vYnNlcnZlKE9iamVjdC52YWx1ZXMoZW50cnkuZWxlbWVudHMpWzBdLCBvYnNlcnZlck9wdGlvbnMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmICghZW50cnkpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzOiBSZWNvcmQ8c3RyaW5nLCBFbGVtZW50PiA9IHsgW3R5cGUubmFtZV06IHZhbHVlIH07XG4gICAgICAgICAgICBhc3NpZ25FbGVtZW50KGhvc3QsIGF0dHJpYnV0ZSwgZWxlbWVudHMpO1xuICAgICAgICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiBhc3NpZ25FbGVtZW50KGhvc3QsIGF0dHJpYnV0ZSwgZWxlbWVudHMpKTtcbiAgICAgICAgICAgIG9ic2VydmVyLm9ic2VydmUodmFsdWUsIG9ic2VydmVyT3B0aW9ucyk7XG4gICAgICAgICAgICBzdG9yYWdlLnNldChob3N0LCB7IGVsZW1lbnRzLCBvYnNlcnZlciB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZW50cnkuZWxlbWVudHNbdHlwZS5uYW1lXSA9IHZhbHVlO1xuICAgICAgICAgICAgYXNzaWduRWxlbWVudChob3N0LCBhdHRyaWJ1dGUsIGVudHJ5LmVsZW1lbnRzKTtcbiAgICAgICAgICAgIE9iamVjdC52YWx1ZXMoZW50cnkuZWxlbWVudHMpLmZvckVhY2goKGUpID0+XG4gICAgICAgICAgICAgIGVudHJ5Lm9ic2VydmVyLm9ic2VydmUoZSwgb2JzZXJ2ZXJPcHRpb25zKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBbXG4gICAgICAnYXJpYUNvbnRyb2xzRWxlbWVudHMnLFxuICAgICAgJ2FyaWFEZXNjcmliZWRCeUVsZW1lbnRzJyxcbiAgICAgICdhcmlhRGV0YWlsc0VsZW1lbnRzJyxcbiAgICAgICdhcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMnLFxuICAgICAgJ2FyaWFMYWJlbGxlZEJ5RWxlbWVudHMnLFxuICAgICAgJ2FyaWFPd25zRWxlbWVudHMnLFxuICAgIF0pIHtcbiAgICAgIGlmICghKHByb3BlcnR5IGluIHByb3RvdHlwZSkpIHtcbiAgICAgICAgY29uc3Qgc3RvcmFnZSA9IG5ldyBXZWFrTWFwPFxuICAgICAgICAgIEVsZW1lbnQsXG4gICAgICAgICAgeyBlbGVtZW50czogUmVjb3JkPHN0cmluZywgRWxlbWVudFtdPjsgb2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXIgfVxuICAgICAgICA+KCk7XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZSA9IGBhcmlhLSR7cHJvcGVydHkuc2xpY2UoNCwgLTgpLnRvTG93ZXJDYXNlKCl9YDtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICBnZXQodGhpczogRWxlbWVudEludGVybmFscyB8IEVsZW1lbnQpOiByZWFkb25seSBFbGVtZW50W10gfCBudWxsIHtcbiAgICAgICAgICAgIGNvbnN0IGhvc3QgPSByZXNvbHZlSG9zdCh0aGlzKTtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzID0gaG9zdFxuICAgICAgICAgICAgICAuZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZSlcbiAgICAgICAgICAgICAgPy5zcGxpdCgvXFxzKy8pXG4gICAgICAgICAgICAgIC5maWx0ZXIoKHYsIGksIGEpID0+IGEuaW5kZXhPZih2KSA9PT0gaSlcbiAgICAgICAgICAgICAgLm1hcCgoaWQpID0+IChob3N0LmdldFJvb3ROb2RlKCkgYXMgRG9jdW1lbnQgfCBTaGFkb3dSb290KS5nZXRFbGVtZW50QnlJZD8uKGlkKSlcbiAgICAgICAgICAgICAgLmZpbHRlcigoZSkgPT4gZSBpbnN0YW5jZW9mIEVsZW1lbnQpO1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRzPy5sZW5ndGggPyBPYmplY3QuZnJlZXplKGVsZW1lbnRzKSA6IG51bGw7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZXQodGhpczogRWxlbWVudEludGVybmFscyB8IEVsZW1lbnQsIHZhbHVlOiBFbGVtZW50W10pIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgKCFBcnJheS5pc0FycmF5KHZhbHVlKSB8fCB2YWx1ZS5zb21lKChlbGVtZW50KSA9PiAhKGVsZW1lbnQgaW5zdGFuY2VvZiBFbGVtZW50KSkpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICAgICAgICBgRmFpbGVkIHRvIHNldCB0aGUgJyR7cHJvcGVydHl9JyBwcm9wZXJ0eSBvbiAnJHt0eXBlLm5hbWV9JzogRmFpbGVkIHRvIGNvbnZlcnQgdmFsdWUgdG8gJ0VsZW1lbnQnLmAsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGhvc3QgPSByZXNvbHZlSG9zdCh0aGlzKTtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWU/LmZpbHRlcigodiwgaSwgYSkgPT4gYS5pbmRleE9mKHYpID09PSBpKSA/PyBudWxsO1xuICAgICAgICAgICAgY29uc3QgZW50cnkgPSBzdG9yYWdlLmdldChob3N0KTtcbiAgICAgICAgICAgIGVudHJ5Py5vYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBlbnRyeS5lbGVtZW50c1t0eXBlLm5hbWVdO1xuICAgICAgICAgICAgICAgIGlmICghT2JqZWN0LmtleXMoZW50cnkuZWxlbWVudHMpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgc3RvcmFnZS5kZWxldGUoaG9zdCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIE9iamVjdC52YWx1ZXMoZW50cnkuZWxlbWVudHMpXG4gICAgICAgICAgICAgICAgICAgIC5yZWR1Y2UoKGN1cnJlbnQsIG5leHQpID0+IGN1cnJlbnQuY29uY2F0KG5leHQpKVxuICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaCgoZSkgPT4gZW50cnkub2JzZXJ2ZXIub2JzZXJ2ZShlLCBvYnNlcnZlck9wdGlvbnMpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIWVudHJ5KSB7XG4gICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzOiBSZWNvcmQ8c3RyaW5nLCBFbGVtZW50W10+ID0geyBbdHlwZS5uYW1lXTogdmFsdWUgfTtcbiAgICAgICAgICAgICAgYXNzaWduRWxlbWVudHMoaG9zdCwgYXR0cmlidXRlLCBlbGVtZW50cyk7XG4gICAgICAgICAgICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT5cbiAgICAgICAgICAgICAgICBhc3NpZ25FbGVtZW50cyhob3N0LCBhdHRyaWJ1dGUsIGVsZW1lbnRzKSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgdmFsdWUuZm9yRWFjaCgoZWxlbWVudCkgPT4gb2JzZXJ2ZXIub2JzZXJ2ZShlbGVtZW50LCBvYnNlcnZlck9wdGlvbnMpKTtcbiAgICAgICAgICAgICAgc3RvcmFnZS5zZXQoaG9zdCwgeyBlbGVtZW50cywgb2JzZXJ2ZXIgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBlbnRyeS5lbGVtZW50c1t0eXBlLm5hbWVdID0gdmFsdWU7XG4gICAgICAgICAgICAgIGFzc2lnbkVsZW1lbnRzKGhvc3QsIGF0dHJpYnV0ZSwgZW50cnkuZWxlbWVudHMpO1xuICAgICAgICAgICAgICBPYmplY3QudmFsdWVzKGVudHJ5LmVsZW1lbnRzKVxuICAgICAgICAgICAgICAgIC5yZWR1Y2UoKGN1cnJlbnQsIG5leHQpID0+IGN1cnJlbnQuY29uY2F0KG5leHQpKVxuICAgICAgICAgICAgICAgIC5mb3JFYWNoKChlKSA9PiBlbnRyeS5vYnNlcnZlci5vYnNlcnZlKGUsIG9ic2VydmVyT3B0aW9ucykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5jb25zdCBhdHRhY2hlZEVsZW1lbnRJbnRlcm5hbHMgPSBuZXcgV2Vha01hcDxFbGVtZW50LCBFbGVtZW50SW50ZXJuYWxzPigpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNiYlN0YXRlQ29udHJvbGxlciB7XG4gIGFkZCh2YWx1ZTogc3RyaW5nKTogdGhpcztcbiAgZGVsZXRlKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuO1xuICBoYXModmFsdWU6IHN0cmluZyk6IGJvb2xlYW47XG4gIHRvZ2dsZSh2YWx1ZTogc3RyaW5nLCBmb3JjZT86IGJvb2xlYW4pOiB2b2lkO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBzdGF0ZSBjb250cm9sbGVyIGZvciB0aGUgZ2l2ZW4gZWxlbWVudC5cbiAqIE5PVCBJTlRFTkRFRCBUTyBCRSBVU0VEIEJZIENPTlNVTUVSUyFcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gybVzdGF0ZUNvbnRyb2xsZXIoZWxlbWVudDogRWxlbWVudCk6IFNiYlN0YXRlQ29udHJvbGxlcjtcbmV4cG9ydCBmdW5jdGlvbiDJtXN0YXRlQ29udHJvbGxlcihlbGVtZW50OiBFbGVtZW50IHwgdW5kZWZpbmVkIHwgbnVsbCk6IFNiYlN0YXRlQ29udHJvbGxlciB8IG51bGw7XG5leHBvcnQgZnVuY3Rpb24gybVzdGF0ZUNvbnRyb2xsZXIoZWxlbWVudDogRWxlbWVudCB8IHVuZGVmaW5lZCB8IG51bGwpOiBTYmJTdGF0ZUNvbnRyb2xsZXIgfCBudWxsIHtcbiAgaWYgKCFlbGVtZW50KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3Qgc3RhdGVzID0gYXR0YWNoZWRFbGVtZW50SW50ZXJuYWxzLmdldChlbGVtZW50KT8uc3RhdGVzO1xuICBjb25zdCB0b2dnbGU6IFNiYlN0YXRlQ29udHJvbGxlclsndG9nZ2xlJ10gPSBmdW5jdGlvbiAodGhpczogU2JiU3RhdGVDb250cm9sbGVyLCB2YWx1ZSwgZm9yY2UpIHtcbiAgICBpZiAoZm9yY2UgfHwgKGZvcmNlICE9PSBmYWxzZSAmJiAhdGhpcy5oYXModmFsdWUpKSkge1xuICAgICAgdGhpcy5hZGQodmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlbGV0ZSh2YWx1ZSk7XG4gICAgfVxuICB9O1xuICBpZiAoc3RhdGVzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFkZCh2YWx1ZSkge1xuICAgICAgICBzdGF0ZXMuYWRkKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgZGVsZXRlOiAodmFsdWUpID0+IHN0YXRlcy5kZWxldGUodmFsdWUpLFxuICAgICAgaGFzOiAodmFsdWUpID0+IHN0YXRlcy5oYXModmFsdWUpLFxuICAgICAgdG9nZ2xlLFxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgLy8gSWYgbm8gRWxlbWVudEludGVybmFscyBpcyBhdHRhY2hlZCwgd2UgZmFsbCBiYWNrIHRvIHVzaW5nIGF0dHJpYnV0ZXMuIEUuZy4gZm9yIHRyaWdnZXJzLlxuICAgIHJldHVybiB7XG4gICAgICBhZGQodmFsdWUpIHtcbiAgICAgICAgZWxlbWVudC50b2dnbGVBdHRyaWJ1dGUoYHN0YXRlLS0ke3ZhbHVlfWAsIHRydWUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0sXG4gICAgICBkZWxldGU6ICh2YWx1ZSkgPT4gZWxlbWVudC50b2dnbGVBdHRyaWJ1dGUoYHN0YXRlLS0ke3ZhbHVlfWAsIGZhbHNlKSxcbiAgICAgIGhhczogKHZhbHVlKSA9PiBlbGVtZW50Lmhhc0F0dHJpYnV0ZShgc3RhdGUtLSR7dmFsdWV9YCksXG4gICAgICB0b2dnbGUsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2JiU2xvdHRlZENoYW5nZUV2ZW50IGV4dGVuZHMgRXZlbnQge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHNsb3Q6IEhUTUxTbG90RWxlbWVudCkge1xuICAgIHN1cGVyKCdzbG90dGVkY2hhbmdlJywgeyBjb21wb3NlZDogdHJ1ZSB9KTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNiYlByb3BlcnR5VmFsdWVzIHtcbiAgb2xkVmFsdWU/OiB1bmtub3duO1xuICB2YWx1ZT86IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2JiUmVhY3RpdmVDb250cm9sbGVyIGV4dGVuZHMgUmVhY3RpdmVDb250cm9sbGVyIHtcbiAgaG9zdFByb3BlcnR5VXBkYXRlPyhcbiAgICBuYW1lOiBQcm9wZXJ0eUtleSxcbiAgICB2YWx1ZXM/OiBTYmJQcm9wZXJ0eVZhbHVlcyxcbiAgICBvcHRpb25zPzogUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgKTogdm9pZDtcbn1cblxuLyoqXG4gKiBBcHBlbmRzIHRoZSBnaXZlbiBlbGVtZW50cyB0byB0aGUgZ2l2ZW4gYXJpYSB2YWx1ZSBhbmQgcmV0dXJucyB0aGVcbiAqIGNvbWJpbmVkIHZhbHVlIGFzIGEgbmV3IGFycmF5IG9yIG51bGwsIGlmIGJvdGggdmFsdWVzIHdlcmUgZW1wdHkuXG4gKi9cbmV4cG9ydCBjb25zdCBhcHBlbmRBcmlhRWxlbWVudHMgPSAoXG4gIGFyaWFWYWx1ZTogcmVhZG9ubHkgRWxlbWVudFtdIHwgbnVsbCxcbiAgLi4ubmV3RWxlbWVudHM6IChFbGVtZW50IHwgbnVsbClbXVxuKTogRWxlbWVudFtdIHwgbnVsbCA9PiB7XG4gIGNvbnN0IGVsZW1lbnRzID0gbmV3RWxlbWVudHMuZmlsdGVyKCh2KTogdiBpcyBFbGVtZW50ID0+ICEhdik7XG4gIHJldHVybiBhcmlhVmFsdWU/Lmxlbmd0aCA/IGFyaWFWYWx1ZS5jb25jYXQoZWxlbWVudHMpIDogbmV3RWxlbWVudHMubGVuZ3RoID8gZWxlbWVudHMgOiBudWxsO1xufTtcblxuLyoqXG4gKiBSZW1vdmVzIHRoZSBnaXZlbiBlbGVtZW50cyBmcm9tIHRoZSBnaXZlbiBhcmlhIHZhbHVlIGFuZCByZXR1cm5zXG4gKiB0aGUgcmVtYWluaW5nIGVsZW1lbnRzIGFzIGEgbmV3IGFycmF5IG9yIG51bGwsIGlmIHRoZSByZXN1bHQgaXMgZW1wdHkuXG4gKi9cbmV4cG9ydCBjb25zdCByZW1vdmVBcmlhRWxlbWVudHMgPSAoXG4gIGFyaWFWYWx1ZTogcmVhZG9ubHkgRWxlbWVudFtdIHwgbnVsbCxcbiAgLi4ucmVtb3ZhYmxlRWxlbWVudHM6IChFbGVtZW50IHwgbnVsbClbXVxuKTogRWxlbWVudFtdIHwgbnVsbCA9PiB7XG4gIHJlbW92YWJsZUVsZW1lbnRzID0gcmVtb3ZhYmxlRWxlbWVudHMuZmlsdGVyKCh2KSA9PiAhIXYpO1xuICBjb25zdCBlbGVtZW50cyA9IGFyaWFWYWx1ZT8uZmlsdGVyKCh2KSA9PiAhcmVtb3ZhYmxlRWxlbWVudHMuaW5jbHVkZXModikpID8/IG51bGw7XG4gIHJldHVybiBlbGVtZW50cz8ubGVuZ3RoID8gZWxlbWVudHMgOiBudWxsO1xufTtcblxuZXhwb3J0IHR5cGUgU2JiRWxlbWVudFR5cGUgPSB0eXBlb2YgU2JiRWxlbWVudDtcblxuZXhwb3J0IGludGVyZmFjZSBTYmJFbGVtZW50Q29uc3RydWN0b3Ige1xuICBlbGVtZW50RGVwZW5kZW5jaWVzPzogU2JiRWxlbWVudFR5cGVbXTtcbiAgcm9sZT86IEVsZW1lbnRJbnRlcm5hbHNbJ3JvbGUnXTtcbn1cblxuLyoqXG4gKiBBIGJhc2UgY2xhc3MgZm9yIGFsbCBTQkIgZWxlbWVudHMuXG4gKiBJbmNsdWRlcyBhdHRhY2hpbmcgRWxlbWVudEludGVybmFscywgaGFuZGxpbmcgaHlkcmF0aW9uLCBhbmQgbWFuYWdpbmcgc3RhdGUuXG4gKi9cbi8vIFRPRE8oYnJlYWtpbmctY2hhbmdlKTogSW5saW5lIGFuZCByZW1vdmUgU2JiRWxlbWVudEludGVybmFsc01peGluIGFuZCBTYmJIeWRyYXRpb25NaXhpbiBhcyBhIGJyZWFraW5nIGNoYW5nZVxuZXhwb3J0IGNsYXNzIFNiYkVsZW1lbnQgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBbJ18kc2JiRWxlbWVudCQnXSA9IHRydWU7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZztcbiAgcHVibGljIHN0YXRpYyBlbGVtZW50RGVwZW5kZW5jaWVzPzogU2JiRWxlbWVudFR5cGVbXTtcbiAgcHVibGljIHN0YXRpYyByb2xlPzogRWxlbWVudEludGVybmFsc1sncm9sZSddO1xuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGludGVybmFsczogRWxlbWVudEludGVybmFscyA9IHRoaXMuYXR0YWNoSW50ZXJuYWxzKCk7XG5cbiAgcHJpdmF0ZSBfY29udHJvbGxlcnM/OiBTZXQ8U2JiUmVhY3RpdmVDb250cm9sbGVyPjtcbiAgcHJpdmF0ZSBfaHlkcmF0aW9uUmVxdWlyZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgX2h5ZHJhdGlvbkNvbXBsZXRlID0gbmV3IFByb21pc2U8Ym9vbGVhbj4oXG4gICAgKHJlc29sdmUpID0+ICh0aGlzLl9yZXNvbHZlSHlkcmF0aW9uID0gcmVzb2x2ZSksXG4gICk7XG4gIHByaXZhdGUgX3Jlc29sdmVIeWRyYXRpb24hOiAoaHlkcmF0aW9uUmVxdWlyZWQ6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHByaXZhdGUgX3RleHRPYnNlcnZlcj86IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZWxlbWVudCBoYXMgY29tcGxldGVkIGh5ZHJhdGlvbi5cbiAgICogVGhlIFByb21pc2UgdmFsdWUgaXMgYSBib29sZWFuIHRoYXQgaXMgYHRydWVgIGlmIHRoZSBlbGVtZW50IHJlcXVpcmVkIGh5ZHJhdGlvblxuICAgKiBhbmQgYGZhbHNlYCBpZiBub3QuXG4gICAqXG4gICAqIEByZXR1cm4gQSBwcm9taXNlIG9mIGEgYm9vbGVhbiB0aGF0IHJlc29sdmVzIHRvIHRydWUgb25jZSB0aGUgaHlkcmF0aW9uIGNvbXBsZXRlZC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgZ2V0IGh5ZHJhdGlvbkNvbXBsZXRlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9oeWRyYXRpb25Db21wbGV0ZTtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHdoZXRoZXIgaHlkcmF0aW9uIGlzIHJlcXVpcmVkIGFuZCBub3QgY29tcGxldGVkLiAqL1xuICBwcm90ZWN0ZWQgZ2V0IGh5ZHJhdGlvblJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9oeWRyYXRpb25SZXF1aXJlZDtcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIGF0dGFjaGVkRWxlbWVudEludGVybmFscy5zZXQodGhpcywgdGhpcy5pbnRlcm5hbHMpO1xuICAgIGlmIChDdXN0b21TdGF0ZVNldFBvbHlmaWxsKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcy5pbnRlcm5hbHMsICdzdGF0ZXMnLCB7XG4gICAgICAgIHZhbHVlOiBuZXcgQ3VzdG9tU3RhdGVTZXRQb2x5ZmlsbCh0aGlzKSxcbiAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBXZSB1c2UgdGhlIEN1c3RvbVN0YXRlU2V0IHBvbHlmaWxsIGluIFNTUiwgd2hpY2ggcmVuZGVycyB0aGUgc3RhdGUgYXMgYXR0cmlidXRlc1xuICAgICAgLy8gd2hpY2ggY2FuIGJlIHRyYW5zZmVycmVkIHRvIGNsaWVudCBzaWRlLCB3aGVyZSB3ZSBjYW4gdGhlbiBjb252ZXJ0IFtzdGF0ZS0tKl1cbiAgICAgIC8vIGF0dHJpYnV0ZXMgdG8gaW50ZXJuYWwgc3RhdGUuXG4gICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgdGhpcy5nZXRBdHRyaWJ1dGVOYW1lcygpLmZpbHRlcigobikgPT4gbi5zdGFydHNXaXRoKCdzdGF0ZS0tJykpKSB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5hZGQobmFtZS5zbGljZSg3KSk7XG4gICAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCByb2xlID0gKHRoaXMuY29uc3RydWN0b3IgYXMgU2JiRWxlbWVudENvbnN0cnVjdG9yKS5yb2xlO1xuICAgIGlmIChyb2xlKSB7XG4gICAgICB0aGlzLmludGVybmFscy5yb2xlID0gcm9sZTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayB3aGV0aGVyIGh5ZHJhdGlvbiBpcyBuZWVkZWQgYnkgY2hlY2tpbmcgd2hldGhlciB0aGUgc2hhZG93IHJvb3RcbiAgICAvLyBpcyBhdmFpbGFibGUgZHVyaW5nIGNvbnN0cnVjdGlvbi91cGdyYWRlIHBoYXNlLlxuICAgIHRoaXMuX2h5ZHJhdGlvblJlcXVpcmVkID0gISF0aGlzLnNoYWRvd1Jvb3Q7XG4gICAgaWYgKCF0aGlzLl9oeWRyYXRpb25SZXF1aXJlZCkge1xuICAgICAgdGhpcy5fcmVzb2x2ZUh5ZHJhdGlvbihmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIER1cmluZyBoeWRyYXRpb24gcGhhc2UsIHdlIHdhbnQgdG8gc3VwcHJlc3Mgc2xvdGNoYW5nZSBldmVudHMgYXMgdGhleVxuICAgICAgLy8gY2FuIGNhdXNlIHJlbmRlciBkaWZmZXJlbmNlcywgd2hpY2ggd291bGQgYnJlYWsgaHlkcmF0aW9uLiBBZnRlclxuICAgICAgLy8gaHlkcmF0aW9uIGlzIGNvbXBsZXRlLCB3ZSBkaXNwYXRjaCBhIG1hbnVhbCBzbG90Y2hhbmdlIGV2ZW50LCBpZiB0aGVyZVxuICAgICAgLy8gYXJlIGVsZW1lbnRzIGFzc2lnbmVkIHRvIGEgc2xvdC5cbiAgICAgIGNvbnN0IHN1cHByZXNzU2xvdGNoYW5nZUV2ZW50ID0gKGV2ZW50OiBFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgICBpZiAodGhpcy5faHlkcmF0aW9uUmVxdWlyZWQpIHtcbiAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGNvbnN0IGV2ZW50T3B0aW9uczogRXZlbnRMaXN0ZW5lck9wdGlvbnMgPSB7IGNhcHR1cmU6IHRydWUgfTtcbiAgICAgIGNvbnN0IHNsb3RzID0gdGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yQWxsKCdzbG90Jyk7XG4gICAgICBpZiAoc2xvdHM/Lmxlbmd0aCkge1xuICAgICAgICBzbG90cy5mb3JFYWNoKChzbG90KSA9PlxuICAgICAgICAgIHNsb3QuYWRkRXZlbnRMaXN0ZW5lcignc2xvdGNoYW5nZScsIHN1cHByZXNzU2xvdGNoYW5nZUV2ZW50LCBldmVudE9wdGlvbnMpLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmh5ZHJhdGlvbkNvbXBsZXRlLnRoZW4oKCkgPT5cbiAgICAgICAgICBzbG90cy5mb3JFYWNoKChzbG90KSA9PiB7XG4gICAgICAgICAgICBzbG90LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Nsb3RjaGFuZ2UnLCBzdXBwcmVzc1Nsb3RjaGFuZ2VFdmVudCwgZXZlbnRPcHRpb25zKTtcbiAgICAgICAgICAgIGlmIChzbG90LmFzc2lnbmVkTm9kZXMoKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgICAgICAgICAgICBzbG90LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdzbG90Y2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiogUmVnaXN0ZXIgdGhlIGN1c3RvbSBlbGVtZW50IGluIHRoZSBnbG9iYWwgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LiAqL1xuICBwdWJsaWMgc3RhdGljIGRlZmluZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZWxlbWVudE5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFRoZSBzdGF0aWMgcHJvcGVydHkgXCJlbGVtZW50TmFtZVwiIGlzIG5vdCBkZWZpbmVkIG9uICR7dGhpcy5uYW1lfS4gUGxlYXNlIGRlZmluZSBpdCB0byByZWdpc3RlciB0aGUgY3VzdG9tIGVsZW1lbnQuYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudENsYXNzID0gY3VzdG9tRWxlbWVudHMuZ2V0KHRoaXMuZWxlbWVudE5hbWUpO1xuICAgIGlmICghZWxlbWVudENsYXNzKSB7XG4gICAgICBjdXN0b21FbGVtZW50cy5kZWZpbmUodGhpcy5lbGVtZW50TmFtZSwgdGhpcyBhcyB1bmtub3duIGFzIEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcik7XG5cbiAgICAgIGNvbnN0IGVsZW1lbnREZXBlbmRlbmNpZXM6IFNiYkVsZW1lbnRUeXBlW10gPSBbXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhc1xuICAgICAgbGV0IGN0b3I6IFNiYkVsZW1lbnRUeXBlID0gdGhpcztcbiAgICAgIHdoaWxlIChjdG9yWydfJHNiYkVsZW1lbnQkJ10pIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY3Rvci5lbGVtZW50RGVwZW5kZW5jaWVzKSkge1xuICAgICAgICAgIGVsZW1lbnREZXBlbmRlbmNpZXMucHVzaCguLi5jdG9yLmVsZW1lbnREZXBlbmRlbmNpZXMpO1xuICAgICAgICB9XG4gICAgICAgIGN0b3IgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoY3Rvcik7XG4gICAgICB9XG4gICAgICBuZXcgU2V0KGVsZW1lbnREZXBlbmRlbmNpZXMpLmZvckVhY2goKGRlcGVuZGVuY3kpID0+IGRlcGVuZGVuY3kuZGVmaW5lKCkpO1xuICAgIH0gZWxzZSBpZiAoaW1wb3J0Lm1ldGEuZW52LkRFViAmJiBlbGVtZW50Q2xhc3MgIT09IHRoaXMpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYFRoZSBjdXN0b20gZWxlbWVudCB3aXRoIG5hbWUgXCIke3RoaXMuZWxlbWVudE5hbWV9XCIgaXMgYWxyZWFkeSBkZWZpbmVkLiBTa2lwcGluZy5gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgY3JlYXRlUmVuZGVyUm9vdCgpOiBIVE1MRWxlbWVudCB8IERvY3VtZW50RnJhZ21lbnQge1xuICAgIGNvbnN0IHJvb3QgPSBzdXBlci5jcmVhdGVSZW5kZXJSb290KCk7XG4gICAgdGhpcy5zaGFkb3dSb290Py5hZGRFdmVudExpc3RlbmVyKCdzbG90Y2hhbmdlJywgKGUpID0+XG4gICAgICB0aGlzLl9zbG90Y2hhbmdlSGFuZGxlcihlLCBlLnRhcmdldCBhcyBIVE1MU2xvdEVsZW1lbnQpLFxuICAgICk7XG4gICAgdGhpcy5zaGFkb3dSb290Py5hZGRFdmVudExpc3RlbmVyKCdzbG90dGVkY2hhbmdlJywgKGUpID0+IHRoaXMuX3Nsb3RjaGFuZ2VIYW5kbGVyKGUsIGUuc2xvdCksIHtcbiAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgfSk7XG4gICAgdGhpcy5zaGFkb3dSb290XG4gICAgICA/LnF1ZXJ5U2VsZWN0b3JBbGw/Lignc2xvdCcpXG4gICAgICAuZm9yRWFjaCgoc2xvdCkgPT4gdGhpcy5faGFuZGxlU2xvdENoYW5nZUZvclNsb3R0ZWRTdGF0ZShzbG90KSk7XG5cbiAgICByZXR1cm4gcm9vdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBgUmVhY3RpdmVDb250cm9sbGVyYCB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgZWxlbWVudCdzIHJlYWN0aXZlXG4gICAqIHVwZGF0ZSBjeWNsZS4gVGhlIGVsZW1lbnQgYXV0b21hdGljYWxseSBjYWxscyBpbnRvIGFueSByZWdpc3RlcmVkXG4gICAqIGNvbnRyb2xsZXJzIGR1cmluZyBpdHMgbGlmZWN5Y2xlIGNhbGxiYWNrcy5cbiAgICpcbiAgICogSWYgdGhlIGVsZW1lbnQgaXMgY29ubmVjdGVkIHdoZW4gYGFkZENvbnRyb2xsZXIoKWAgaXMgY2FsbGVkLCB0aGVcbiAgICogY29udHJvbGxlcidzIGBob3N0Q29ubmVjdGVkKClgIGNhbGxiYWNrIHdpbGwgYmUgaW1tZWRpYXRlbHkgY2FsbGVkLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGFkZENvbnRyb2xsZXIoY29udHJvbGxlcjogU2JiUmVhY3RpdmVDb250cm9sbGVyKTogdm9pZCB7XG4gICAgc3VwZXIuYWRkQ29udHJvbGxlcihjb250cm9sbGVyKTtcbiAgICAodGhpcy5fY29udHJvbGxlcnMgPz89IG5ldyBTZXQoKSkuYWRkKGNvbnRyb2xsZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSBgUmVhY3RpdmVDb250cm9sbGVyYCBmcm9tIHRoZSBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHJlbW92ZUNvbnRyb2xsZXIoY29udHJvbGxlcjogU2JiUmVhY3RpdmVDb250cm9sbGVyKTogdm9pZCB7XG4gICAgc3VwZXIucmVtb3ZlQ29udHJvbGxlcihjb250cm9sbGVyKTtcbiAgICB0aGlzLl9jb250cm9sbGVycz8uZGVsZXRlKGNvbnRyb2xsZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcXVlc3RzIGFuIHVwZGF0ZSB3aGljaCBpcyBwcm9jZXNzZWQgYXN5bmNocm9ub3VzbHkuIFRoaXMgc2hvdWxkIGJlIGNhbGxlZFxuICAgKiB3aGVuIGFuIGVsZW1lbnQgc2hvdWxkIHVwZGF0ZSBiYXNlZCBvbiBzb21lIHN0YXRlIG5vdCB0cmlnZ2VyZWQgYnkgc2V0dGluZ1xuICAgKiBhIHJlYWN0aXZlIHByb3BlcnR5LiBJbiB0aGlzIGNhc2UsIHBhc3Mgbm8gYXJndW1lbnRzLiBJdCBzaG91bGQgYWxzbyBiZVxuICAgKiBjYWxsZWQgd2hlbiBtYW51YWxseSBpbXBsZW1lbnRpbmcgYSBwcm9wZXJ0eSBzZXR0ZXIuIEluIHRoaXMgY2FzZSwgcGFzcyB0aGVcbiAgICogcHJvcGVydHkgYG5hbWVgIGFuZCBgb2xkVmFsdWVgIHRvIGVuc3VyZSB0aGF0IGFueSBjb25maWd1cmVkIHByb3BlcnR5XG4gICAqIG9wdGlvbnMgYXJlIGhvbm9yZWQuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIG5hbWUgb2YgcmVxdWVzdGluZyBwcm9wZXJ0eVxuICAgKiBAcGFyYW0gb2xkVmFsdWUgb2xkIHZhbHVlIG9mIHJlcXVlc3RpbmcgcHJvcGVydHlcbiAgICogQHBhcmFtIG9wdGlvbnMgcHJvcGVydHkgb3B0aW9ucyB0byB1c2UgaW5zdGVhZCBvZiB0aGUgcHJldmlvdXNseVxuICAgKiAgICAgY29uZmlndXJlZCBvcHRpb25zXG4gICAqIEBwYXJhbSB1c2VOZXdWYWx1ZSBpZiB0cnVlLCB0aGUgbmV3VmFsdWUgYXJndW1lbnQgaXMgdXNlZCBpbnN0ZWFkIG9mXG4gICAqICAgICByZWFkaW5nIHRoZSBwcm9wZXJ0eSB2YWx1ZS4gVGhpcyBpcyBpbXBvcnRhbnQgdG8gdXNlIGlmIHRoZSByZWFjdGl2ZVxuICAgKiAgICAgcHJvcGVydHkgaXMgYSBzdGFuZGFyZCBwcml2YXRlIGFjY2Vzc29yLCBhcyBvcHBvc2VkIHRvIGEgcGxhaW5cbiAgICogICAgIHByb3BlcnR5LCBzaW5jZSBwcml2YXRlIG1lbWJlcnMgY2FuJ3QgYmUgZHluYW1pY2FsbHkgcmVhZCBieSBuYW1lLlxuICAgKiBAcGFyYW0gbmV3VmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgcHJvcGVydHkuIFRoaXMgaXMgb25seSB1c2VkIGlmXG4gICAqICAgICBgdXNlTmV3VmFsdWVgIGlzIHRydWUuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgcmVxdWVzdFVwZGF0ZShcbiAgICBuYW1lPzogUHJvcGVydHlLZXksXG4gICAgb2xkVmFsdWU/OiB1bmtub3duLFxuICAgIG9wdGlvbnM/OiBQcm9wZXJ0eURlY2xhcmF0aW9uLFxuICAgIHVzZU5ld1ZhbHVlPzogYm9vbGVhbixcbiAgICBuZXdWYWx1ZT86IHVua25vd24sXG4gICk6IHZvaWQge1xuICAgIHN1cGVyLnJlcXVlc3RVcGRhdGUobmFtZSwgb2xkVmFsdWUsIG9wdGlvbnMsIHVzZU5ld1ZhbHVlLCBuZXdWYWx1ZSk7XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIGNvbnN0IHZhbHVlczogU2JiUHJvcGVydHlWYWx1ZXMgPSB7XG4gICAgICAgIG9sZFZhbHVlLFxuICAgICAgICB2YWx1ZTogdXNlTmV3VmFsdWUgPyBuZXdWYWx1ZSA6IHRoaXNbbmFtZSBhcyBrZXlvZiB0aGlzXSxcbiAgICAgIH07XG4gICAgICB0aGlzLl9jb250cm9sbGVycz8uZm9yRWFjaCgoY29udHJvbGxlcikgPT5cbiAgICAgICAgY29udHJvbGxlci5ob3N0UHJvcGVydHlVcGRhdGU/LihuYW1lLCB2YWx1ZXMsIG9wdGlvbnMpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIC8vIFdoZW4gaHlkcmF0aW9uIGlzIG5lZWRlZCwgd2Ugd2FpdCB0aGUgaHlkcmF0aW9uIHByb2Nlc3MgdG8gZmluaXNoLCB3aGljaCBpcyBwYXRjaGVkXG4gICAgLy8gaW50byB0aGUgdXBkYXRlIG1ldGhvZCBvZiB0aGUgTGl0RWxlbWVudCBiYXNlIGNsYXNzLlxuICAgIHN1cGVyLnVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAodGhpcy5faHlkcmF0aW9uUmVxdWlyZWQpIHtcbiAgICAgIHRoaXMuX2h5ZHJhdGlvblJlcXVpcmVkID0gZmFsc2U7XG4gICAgICB0aGlzLl9yZXNvbHZlSHlkcmF0aW9uKHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGVTdGF0ZSh2YWx1ZTogc3RyaW5nLCBmb3JjZT86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoZm9yY2UgfHwgKGZvcmNlICE9PSBmYWxzZSAmJiAhdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmhhcyh2YWx1ZSkpKSB7XG4gICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuYWRkKHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmRlbGV0ZSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2xvdGNoYW5nZUhhbmRsZXIoZXZlbnQ6IEV2ZW50LCBzbG90OiBIVE1MU2xvdEVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCByZXNvbHZlZFNsb3QgPSB0aGlzLnNoYWRvd1Jvb3QhLmNvbnRhaW5zKHNsb3QpXG4gICAgICA/IHNsb3RcbiAgICAgIDogZXZlbnRcbiAgICAgICAgICAuY29tcG9zZWRQYXRoKClcbiAgICAgICAgICAuZmluZChcbiAgICAgICAgICAgIChlbCk6IGVsIGlzIEhUTUxTbG90RWxlbWVudCA9PlxuICAgICAgICAgICAgICBlbCBpbnN0YW5jZW9mIEhUTUxTbG90RWxlbWVudCAmJiB0aGlzLnNoYWRvd1Jvb3QhLmNvbnRhaW5zKGVsKSxcbiAgICAgICAgICApO1xuICAgIGlmIChyZXNvbHZlZFNsb3QpIHtcbiAgICAgIHRoaXMuX2hhbmRsZVNsb3RDaGFuZ2VGb3JTbG90dGVkU3RhdGUocmVzb2x2ZWRTbG90KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVTbG90Q2hhbmdlRm9yU2xvdHRlZFN0YXRlKHNsb3Q6IEhUTUxTbG90RWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuX3VwZGF0ZVNsb3R0ZWRTdGF0ZShzbG90KTtcbiAgICBpZiAoIXNsb3QubmFtZSkge1xuICAgICAgdGhpcy5fb2JzZXJ2ZVRleHROb2Rlc0luU2xvdChzbG90KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVTbG90dGVkU3RhdGUoc2xvdDogSFRNTFNsb3RFbGVtZW50KTogdm9pZCB7XG4gICAgY29uc3Qgc3RhdGVOYW1lID0gc2xvdC5uYW1lID8gYHNsb3R0ZWQtJHtzbG90Lm5hbWV9YCA6ICdzbG90dGVkJztcbiAgICBjb25zdCBoYXNTbG90dGVkQ29udGVudCA9IHRoaXMuX2hhc1Nsb3R0ZWRDb250ZW50KHNsb3QpO1xuICAgIGlmIChoYXNTbG90dGVkQ29udGVudCAmJiAhdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmhhcyhzdGF0ZU5hbWUpKSB7XG4gICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuYWRkKHN0YXRlTmFtZSk7XG4gICAgICAvKiogQGludGVybmFsICovXG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IFNiYlNsb3R0ZWRDaGFuZ2VFdmVudChzbG90KSk7XG4gICAgfSBlbHNlIGlmICghaGFzU2xvdHRlZENvbnRlbnQgJiYgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmhhcyhzdGF0ZU5hbWUpKSB7XG4gICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKHN0YXRlTmFtZSk7XG4gICAgICAvKiogQGludGVybmFsICovXG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IFNiYlNsb3R0ZWRDaGFuZ2VFdmVudChzbG90KSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb2JzZXJ2ZVRleHROb2Rlc0luU2xvdChzbG90OiBIVE1MU2xvdEVsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLl90ZXh0T2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICAvLyBPbmx5IGNyZWF0ZSB0aGUgTXV0YXRpb25PYnNlcnZlciB3aGVuIGl0IGlzIGFjdHVhbGx5IG5lZWRlZCB0byBvcHRpbWl6ZSBwZXJmb3JtYW5jZS5cbiAgICB0aGlzLl90ZXh0T2JzZXJ2ZXIgPz89IG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHtcbiAgICAgIGNvbnN0IHNsb3QgPSB0aGlzLnNoYWRvd1Jvb3QhLnF1ZXJ5U2VsZWN0b3I8SFRNTFNsb3RFbGVtZW50Pignc2xvdDpub3QoW25hbWVdKScpO1xuICAgICAgaWYgKHNsb3QpIHtcbiAgICAgICAgdGhpcy5fdXBkYXRlU2xvdHRlZFN0YXRlKHNsb3QpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fdGV4dE9ic2VydmVyIS5kaXNjb25uZWN0KCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgLy8gVGV4dCBub2RlcyBjYW4gYmUgZW1wdHkgYW5kIGZpbGxlZCBsYXRlciAob3IgdmljZSB2ZXJzYSkuXG4gICAgLy8gRmlsbGluZyBhbiBleGlzdGluZyBub2RlIGxhdGVyIHdvdWxkIG5vdCB0cmlnZ2VyIGFub3RoZXIgc2xvdGNoYW5nZSBldmVudC5cbiAgICAvLyBUaGVyZWZvcmUsIHdlIG5lZWQgdG8gb2JzZXJ2ZSB0ZXh0IG5vZGVzIGFuZCBjaGVjayBpZiB0aGV5IGJlY29tZSBmaWxsZWQgb3IgZW1wdHkuXG4gICAgLy8gVGhpcyBpcyBvbmx5IG5lZWRlZCBmb3IgdGhlIHVubmFtZWQgc2xvdCBhcyBmb3IgZXZlcnkgb3RoZXIgdGhlcmUgd291bGRcbiAgICAvLyBiZSBhIHRhZyB3aGljaCB0cmlnZ2VycyB0aGUgc2xvdCBjaGFuZ2UgZXZlbnQuXG4gICAgLy8gVGhlIG1haW4gcmVhc29uIGlzIHRoYXQgQW5ndWxhciBjcmVhdGVzIGVtcHR5IHRleHQgbm9kZXMgYW5kIGZpbGxzIHRoZW0gbGF0ZXIuXG4gICAgc2xvdFxuICAgICAgLmFzc2lnbmVkTm9kZXMoKVxuICAgICAgLmZpbHRlcigobikgPT4gbi5ub2RlVHlwZSA9PT0gbi5URVhUX05PREUpXG4gICAgICAuZm9yRWFjaCgobm9kZSkgPT4gdGhpcy5fdGV4dE9ic2VydmVyIS5vYnNlcnZlKG5vZGUsIHsgY2hhcmFjdGVyRGF0YTogdHJ1ZSB9KSk7XG4gIH1cblxuICBwcml2YXRlIF9oYXNTbG90dGVkQ29udGVudChzbG90OiBIVE1MU2xvdEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc2xvdC5uYW1lXG4gICAgICA/IHNsb3RcbiAgICAgICAgICAuYXNzaWduZWRFbGVtZW50cygpXG4gICAgICAgICAgLnNvbWUoKG5vZGUpID0+ICEobm9kZSBpbnN0YW5jZW9mIEhUTUxTbG90RWxlbWVudCkgfHwgdGhpcy5faGFzU2xvdHRlZENvbnRlbnQobm9kZSkpXG4gICAgICA6IHNsb3QuYXNzaWduZWROb2RlcygpLnNvbWUoKG5vZGUpID0+IHtcbiAgICAgICAgICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIEhUTUxTbG90RWxlbWVudFxuICAgICAgICAgICAgPyB0aGlzLl9oYXNTbG90dGVkQ29udGVudChub2RlKVxuICAgICAgICAgICAgOiBub2RlLm5vZGVUeXBlICE9PSBub2RlLlRFWFRfTk9ERSB8fCAhIW5vZGUudGV4dENvbnRlbnQ/LnRyaW0oKTtcbiAgICAgICAgfSk7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRFdmVudE1hcCB7XG4gICAgc2xvdHRlZGNoYW5nZTogU2JiU2xvdHRlZENoYW5nZUV2ZW50O1xuICB9XG4gIGludGVyZmFjZSBTaGFkb3dSb290RXZlbnRNYXAge1xuICAgIHNsb3R0ZWRjaGFuZ2U6IFNiYlNsb3R0ZWRDaGFuZ2VFdmVudDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQWNBLElBQU0seUJBQ0osWUFBWSxDQUFDLElBQUksU0FBUyxrREFBNEIsR0FDbEQsTUFBTSx1QkFDSSxJQUFXO0NBS25CLFlBQTJCLE9BQWlCO0FBQzFDLFNBQU87QUFEa0IsT0FBQSxRQUFBO0FBRm5CLE9BQUEsV0FBVztBQUlqQixPQUFLLE1BQU0sY0FBYyxLQUFLO0FBQzlCLE1BQUksQ0FBQyxTQUdILFNBQVEsU0FBUyxDQUFDLFdBQVcsS0FBSyxjQUFjLENBQUM7O0NBSXJDLElBQUksT0FBYTtBQUMvQixNQUFJLEtBQUssU0FDUCxN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
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sbb-esta/lyne-elements-dev",
|
|
3
|
-
"version": "4.0.0-dev.
|
|
3
|
+
"version": "4.0.0-dev.1775721561",
|
|
4
4
|
"description": "Lyne Design System",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"design system",
|
|
7
7
|
"web components",
|
|
8
8
|
"lit",
|
|
9
|
-
"https://github.com/sbb-design-systems/lyne-components/commit/
|
|
9
|
+
"https://github.com/sbb-design-systems/lyne-components/commit/eaa911697e8c817cd694345c36c967c059619818"
|
|
10
10
|
],
|
|
11
11
|
"type": "module",
|
|
12
12
|
"exports": {
|