@aws-cdk/aws-ec2-alpha 2.231.0-alpha.0 → 2.232.1-alpha.0

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/lib/util.js CHANGED
@@ -404,4 +404,4 @@ class CidrBlockIpv6 {
404
404
  }
405
405
  }
406
406
  exports.CidrBlockIpv6 = CidrBlockIpv6;
407
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHNFQUFzRTs7O0FBT3RFLDhDQVVDO0FBT0Qsd0VBRUM7QUFLRCw0QkFFQztBQWlCRCw0Q0FNQztBQUtELDRDQVFDO0FBRUQsMEJBRUM7QUF2RUQsaURBQXNFO0FBRXRFOztHQUVHO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQUMsSUFBZ0I7SUFDaEQsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUNiLEtBQUssb0JBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLFFBQVEsQ0FBQztRQUN4QyxLQUFLLG9CQUFVLENBQUMsZ0JBQWdCLENBQUM7UUFDakMsS0FBSyxvQkFBVSxDQUFDLG1CQUFtQjtZQUNqQyxPQUFPLFNBQVMsQ0FBQztRQUNuQixLQUFLLG9CQUFVLENBQUMsZ0JBQWdCO1lBQzlCLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLDhCQUE4QixDQUFDLE1BQWtCO0lBQy9ELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixRQUFRLENBQUMsSUFBWSxFQUFFLENBQVM7SUFDOUMsT0FBTyxHQUFHLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7QUFDakMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsSUFBWSwyQkFVWDtBQVZELFdBQVksMkJBQTJCO0lBQ3JDOztPQUVHO0lBQ0gsZ0RBQWlCLENBQUE7SUFFakI7O09BRUc7SUFDSCxrREFBbUIsQ0FBQTtBQUNyQixDQUFDLEVBVlcsMkJBQTJCLDJDQUEzQiwyQkFBMkIsUUFVdEM7QUFFRCxTQUFnQixnQkFBZ0IsQ0FBQyxNQUFnQjtJQUMvQyxJ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R0FBRyxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDbEQsQ0FBQztRQUNELE9BQU8sVUFBVSxDQUFDO0tBQ25CO0NBQ0Y7QUE1SEQsc0NBNEhDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50IG5vLWJpdHdpc2U6IFtcImVycm9yXCIsIHsgXCJhbGxvd1wiOiBbXCJ+XCIsIFwifFwiLCBcIjw8XCIsIFwiJlwiXSB9XSAqL1xuXG5pbXBvcnQgeyBJU3VibmV0LCBJU3VibmV0UmVmLCBTdWJuZXRUeXBlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5cbi8qKlxuICogVGhlIGRlZmF1bHQgbmFtZXMgZm9yIGV2ZXJ5IHN1Ym5ldCB0eXBlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0U3VibmV0TmFtZSh0eXBlOiBTdWJuZXRUeXBlKSB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgU3VibmV0VHlwZS5QVUJMSUM6IHJldHVybiAnUHVibGljJztcbiAgICBjYXNlIFN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX05BVDpcbiAgICBjYXNlIFN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUzpcbiAgICAgIHJldHVybiAnUHJpdmF0ZSc7XG4gICAgY2FzZSBTdWJuZXRUeXBlLlBSSVZBVEVfSVNPTEFURUQ6XG4gICAgICByZXR1cm4gJ0lzb2xhdGVkJztcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFJldHVybiBhIHN1Ym5ldCBuYW1lIGZyb20gaXRzIGNvbnN0cnVjdCBJRFxuICpcbiAqIEFsbCBzdWJuZXQgbmFtZXMgbG9vayBsaWtlIE5BTUUgPD4gXCJTdWJuZXRcIiA8PiBJTkRFWFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3VibmV0R3JvdXBOYW1lRnJvbUNvbnN0cnVjdElkKHN1Ym5ldDogSVN1Ym5ldFJlZikge1xuICByZXR1cm4gc3VibmV0Lm5vZGUuaWQucmVwbGFjZSgvU3VibmV0XFxkKyQvLCAnJyk7XG59XG5cbi8qKlxuICogTWFrZSB0aGUgc3VibmV0IGNvbnN0cnVjdCBJRCBmcm9tIGEgbmFtZSBhbmQgbnVtYmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdWJuZXRJZChuYW1lOiBzdHJpbmcsIGk6IG51bWJlcikge1xuICByZXR1cm4gYCR7bmFtZX1TdWJuZXQke2kgKyAxfWA7XG59XG5cbi8qKlxuICogVGhlIHN0YXR1cyBvZiBhIFRyYW5zaXQgR2F0ZXdheSBmZWF0dXJlLlxuICovXG5leHBvcnQgZW51bSBUcmFuc2l0R2F0ZXdheUZlYXR1cmVTdGF0dXMge1xuICAvKipcbiAgICogVGhlIGZlYXR1cmUgaXMgZW5hYmxlZC5cbiAgICovXG4gIEVOQUJMRSA9ICdlbmFibGUnLFxuXG4gIC8qKlxuICAgKiBUaGUgZmVhdHVyZSBpcyBkaXNhYmxlZC5cbiAgICovXG4gIERJU0FCTEUgPSAnZGlzYWJsZScsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGZWF0dXJlU3RhdHVzKHN0YXR1cz86IGJvb2xlYW4pOiBUcmFuc2l0R2F0ZXdheUZlYXR1cmVTdGF0dXMgfCB1bmRlZmluZWQge1xuICBpZiAoc3RhdHVzID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBzdGF0dXMgPyBUcmFuc2l0R2F0ZXdheUZlYXR1cmVTdGF0dXMuRU5BQkxFIDogVHJhbnNpdEdhdGV3YXlGZWF0dXJlU3RhdHVzLkRJU0FCTEU7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm4gdGhlIHVuaW9uIG9mIHRhYmxlIElEcyBmcm9tIGFsbCBzZWxlY3RlZCBzdWJuZXRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhbGxSb3V0ZVRhYmxlSWRzKHN1Ym5ldHM6IElTdWJuZXRbXSk6IHN0cmluZ1tdIHtcbiAgY29uc3QgcmV0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGZvciAoY29uc3Qgc3VibmV0IG9mIHN1Ym5ldHMpIHtcbiAgICBpZiAoc3VibmV0LnJvdXRlVGFibGUgJiYgc3VibmV0LnJvdXRlVGFibGUucm91dGVUYWJsZUlkKSB7XG4gICAgICByZXQuYWRkKHN1Ym5ldC5yb3V0ZVRhYmxlLnJvdXRlVGFibGVJZCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBBcnJheS5mcm9tKHJldCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuPEE+KHhzOiBBW11bXSk6IEFbXSB7XG4gIHJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLCB4cyk7XG59XG5cbi8qKlxuICogTmV0d29ya1V0aWxzIGNvbnRhaW5zIGhlbHBlcnMgdG8gd29yayB3aXRoIG5ldHdvcmsgY29uc3RydWN0cyAoc3VibmV0cy9yYW5nZXMpXG4gKi9cbmV4cG9ydCBjbGFzcyBOZXR3b3JrVXRpbHMge1xuICAvKipcbiAgICogVmFsaWRhdGVzIGFuIElQdjQgYWRkcmVzcyBzdHJpbmcuXG4gICAqXG4gICAqIEBwYXJhbSBpcEFkZHJlc3MgVGhlIElQdjQgYWRkcmVzcyBzdHJpbmcgdG8gYmUgdmFsaWRhdGVkLlxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBJUHY0IGFkZHJlc3MsIGZhbHNlIG90aGVyd2lzZS5cbiAgICogVmFsaWRhdGVzIGFuIElQdjQgc3RyaW5nXG4gICAqXG4gICAqIHJldHVybnMgdHJ1ZSBvZiB0aGUgc3RyaW5nIGNvbnRhaW5zIDQgbnVtYmVycyBiZXR3ZWVuIDAtMjU1IGRlbGltaXRlZCBieVxuICAgKiBhIGAuYCBjaGFyYWN0ZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdmFsaWRJcChpcEFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG9jdGV0cyA9IGlwQWRkcmVzcy5zcGxpdCgnLicpO1xuICAgIGlmIChvY3RldHMubGVuZ3RoICE9PSA0KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBvY3RldHMubWFwKChvY3RldDogc3RyaW5nKSA9PiBwYXJzZUludChvY3RldCwgMTApKS5cbiAgICAgIGV2ZXJ5KChvY3RldDogbnVtYmVyKSA9PiBvY3RldCA+PSAwICYmIG9jdGV0IDw9IDI1NSk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gSVB2NCBhZGRyZXNzIHRvIGl0cyBjb3JyZXNwb25kaW5nIG51bWVyaWNhbCB2YWx1ZS5cbiAgICpcbiAgICogVXNlcyB0aGUgZm9ybXVsYTpcbiAgICogKGZpcnN0IG9jdGV0ICogMjU2wrMpICsgKHNlY29uZCBvY3RldCAqIDI1NsKyKSArICh0aGlyZCBvY3RldCAqIDI1NikgK1xuICAgKiAoZm91cnRoIG9jdGV0KVxuICAgKlxuICAgKiBAcGFyYW0gIGlwQWRkcmVzcyB0aGUgSVAgYWRkcmVzcyAoZS5nLiAxNzQuNjYuMTczLjE2OClcbiAgICogQHJldHVybnMgdGhlIGludGVnZXIgdmFsdWUgb2YgdGhlIElQIGFkZHJlc3MgKGUuZyAyOTIzNjA1NDE2KVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpcFRvTnVtKGlwQWRkcmVzczogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMudmFsaWRJcChpcEFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7aXBBZGRyZXNzfSBpcyBub3QgdmFsaWRgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXBBZGRyZXNzXG4gICAgICAuc3BsaXQoJy4nKVxuICAgICAgLnJlZHVjZShcbiAgICAgICAgKHA6IG51bWJlciwgYzogc3RyaW5nLCBpOiBudW1iZXIpID0+IHAgKyBwYXJzZUludChjLCAxMCkgKiAyNTYgKiogKDMgLSBpKSxcbiAgICAgICAgMCxcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVGFrZXMgbnVtYmVyIGFuZCBjb252ZXJ0cyBpdCB0byBJUHY0IGFkZHJlc3Mgc3RyaW5nXG4gICAqXG4gICAqIFRha2VzIGEgbnVtYmVyIChlLmcgMjkyMzYwNTQxNikgYW5kIGNvbnZlcnRzIGl0IHRvIGFuIElQdjQgYWRkcmVzcyBzdHJpbmdcbiAgICogY3VycmVudGx5IG9ubHkgc3VwcG9ydHMgSVB2NFxuICAgKlxuICAgKiBAcGFyYW0gaXBOdW0gaW50ZWdlciB2YWx1ZSBvZiB0aGUgSVAgYWRkcmVzcyAoZS5nIDI5MjM2MDU0MTYpXG4gICAqIEByZXR1cm5zIElQdjQgYWRkcmVzcyAoZS5nLiAxNzQuNjYuMTczLjE2OClcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbnVtVG9JcChpcE51bTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAvLyB0aGlzIGFsbCBiZWNhdXNlIGJpdHdpc2UgbWF0aCBpcyBzaWduZWRcbiAgICBsZXQgcmVtYWluaW5nID0gaXBOdW07XG4gICAgY29uc3QgYWRkcmVzcyA9IG5ldyBBcnJheTxudW1iZXI+KCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICAgIGlmIChyZW1haW5pbmcgIT09IDApIHtcbiAgICAgICAgYWRkcmVzcy5wdXNoKE1hdGguZmxvb3IocmVtYWluaW5nIC8gMjU2ICoqICgzIC0gaSkpKTtcbiAgICAgICAgcmVtYWluaW5nID0gcmVtYWluaW5nICUgMjU2ICoqICgzIC0gaSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhZGRyZXNzLnB1c2goMCk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGlwQWRkcmVzczogc3RyaW5nID0gYWRkcmVzcy5qb2luKCcuJyk7XG4gICAgaWYgKCAhdGhpcy52YWxpZElwKGlwQWRkcmVzcykgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7aXBBZGRyZXNzfSBpcyBub3QgYSB2YWxpZCBJUCBBZGRyZXNzYCk7XG4gICAgfVxuICAgIHJldHVybiBpcEFkZHJlc3M7XG4gIH1cbn1cblxuLyoqXG4gKiBFeHBvcnRlZCBjbGFzcyBmcm9tIFZQQyB0byBzdXBwb3J0IHN1Ym5ldCBmaWx0ZXJpbmdcbiAqIGFuZCBDSURSIHZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGNsYXNzIENpZHJCbG9jayB7XG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIHRoZSBuZXRtYXNrIGZvciBhIGdpdmVuIENJRFIgbWFza1xuICAgKlxuICAgKiBUaGUgbmV0bWFzayBpcyBhIDMyLWJpdCBiaW5hcnkgdmFsdWUgdXNlZCB0byBzZXBhcmF0ZSB0aGUgbmV0d29yayBwb3J0aW9uIGZyb20gdGhlIGhvc3QgcG9ydGlvbiBvZiBhbiBJUHY0IGFkZHJlc3MuXG4gICAqIEl0IGlzIGNhbGN1bGF0ZWQgYmFzZWQgb24gdGhlIENJRFIgcHJlZml4IGxlbmd0aCAodGhlIG51bWJlciBvZiBiaXRzIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBuZXR3b3JrIHBvcnRpb24pLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZTpcbiAgICogQ2lkckJsb2NrLmNhbGN1bGF0ZU5ldG1hc2soMjQpIHJldHVybnMgJzI1NS4yNTUuMjU1LjAnXG4gICAqXG4gICAqIEBwYXJhbSBtYXNrIFRoZSBDSURSIHByZWZpeCBsZW5ndGggKGJldHdlZW4gMCBhbmQgMzIpIGZvciB3aGljaCB0byBjYWxjdWxhdGUgdGhlIG5ldG1hc2suXG4gICAgLy8gQ2FsY3VsYXRlIHRoZSBuZXRtYXNrIGJ5IHBlcmZvcm1pbmcgYSBiaXR3aXNlIE5PVCBvbiB0aGUgcmVzdWx0IG9mICgyXjMyIC0gMl4oMzIgLSBtYXNrKSlcbiAgICogQHJldHVybnMgVGhlIG5ldG1hc2sgc3RyaW5nIGluIElQdjQgYWRkcmVzcyBmb3JtYXQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNhbGN1bGF0ZU5ldG1hc2sobWFzazogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gTmV0d29ya1V0aWxzLm51bVRvSXAoMiAqKiAzMiAtIDIgKiogKDMyIC0gbWFzaykpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIG51bWJlciBJUCBhZGRyZXNzZXMgaW4gYSBDSURSIE1hc2tcbiAgICpcbiAgICogRm9yIGV4YW1wbGU6XG4gICAqIENpZHJCbG9jay5jYWxjdWxhdGVOZXRzaXplKDE2KSByZXR1cm5zIDY1NTM2XG4gICAqXG4gICAqIEBwYXJhbSBtYXNrIFRoZSBDSURSIHByZWZpeCBsZW5ndGggKGJldHdlZW4gMCBhbmQgMzIpIGZvciB3aGljaCB0byBjYWxjdWxhdGUgdGhlIG5ldHdvcmsgc2l6ZS5cbiAgICogQ2lkckJsb2NrLmNhbGN1bGF0ZU5ldHNpemUoMjQpIHJldHVybnMgMjU2XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNhbGN1bGF0ZU5ldHNpemUobWFzazogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gMiAqKiAoMzIgLSBtYXNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJUCBhZGRyZXNzIGluIHRoZSBDSURSIGJsb2NrLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNpZHI6IHN0cmluZztcblxuICAvKlxuICAgKiBUaGUgQ0lEUiBtYXNrIGUuZy4gZm9yIENJRFIgJzEwLjAuMC4wLzIxJyByZXR1cm5zIDIxXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbWFzazogbnVtYmVyO1xuXG4gIC8qXG4gICAqIFRoZSB0b3RhbCBudW1iZXIgb2YgSVAgYWRkcmVzc2VzIGluIHRoZSBDSURSXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbmV0d29ya1NpemU6IG51bWJlcjtcblxuICAvKlxuICAgKiBUaGUgbmV0d29yayBhZGRyZXNzIHByb3ZpZGVkIGluIENJRFIgY3JlYXRpb24gb2Zmc2V0IGJ5IHRoZSBOZXRzaXplIC0xXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IG5ldHdvcmtBZGRyZXNzOiBudW1iZXI7XG5cbiAgLypcbiAgICogUGFyc2VzIGVpdGhlciBDSURSIG5vdGF0aW9uIFN0cmluZyBvciB0d28gbnVtYmVycyByZXByZXNlbnRpbmcgdGhlIElQXG4gICAqIHNwYWNlXG4gICAqXG4gICAqIGNpZHIgZXhwZWN0cyBhIHN0cmluZyAnMTAuMC4wLjAvMTYnXG4gICAqIGlwQWRkcmVzcyBleHBlY3RzIGEgbnVtYmVyXG4gICAqIG1hc2sgZXhwZWN0cyBhIG51bWJlclxuICAgKlxuICAgKiBJZiB0aGUgZ2l2ZW4gYGNpZHJgIG9yIGBpcEFkZHJlc3NgIGlzIG5vdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBibG9jayxcbiAgICogdGhlbiB0aGUgbmV4dCBhdmFpbGFibGUgYmxvY2sgd2lsbCBiZSByZXR1cm5lZC4gRm9yIGV4YW1wbGUsIGlmXG4gICAqIGAxMC4wLjMuMS8yOGAgaXMgZ2l2ZW4gdGhlIHJldHVybmVkIGJsb2NrIHdpbGwgcmVwcmVzZW50IGAxMC4wLjMuMTYvMjhgLlxuICAgKi9cbiAgY29uc3RydWN0b3IoY2lkcjogc3RyaW5nKVxuICBjb25zdHJ1Y3RvcihpcEFkZHJlc3M6IG51bWJlciwgbWFzazogbnVtYmVyKVxuICBjb25zdHJ1Y3RvcihpcEFkZHJlc3NPckNpZHI6IHN0cmluZyB8IG51bWJlciwgbWFzaz86IG51bWJlcikge1xuICAgIGlmICh0eXBlb2YgaXBBZGRyZXNzT3JDaWRyID09PSAnc3RyaW5nJykge1xuICAgICAgdGhpcy5tYXNrID0gcGFyc2VJbnQoaXBBZGRyZXNzT3JDaWRyLnNwbGl0KCcvJylbMV0sIDEwKTtcbiAgICAgIHRoaXMubmV0d29ya0FkZHJlc3MgPSBOZXR3b3JrVXRpbHMuaXBUb051bShpcEFkZHJlc3NPckNpZHIuc3BsaXQoJy8nKVswXSkgK1xuICAgICAgICBDaWRyQmxvY2suY2FsY3VsYXRlTmV0c2l6ZSh0aGlzLm1hc2spIC0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHR5cGVvZiBtYXNrID09PSAnbnVtYmVyJykge1xuICAgICAgICB0aGlzLm1hc2sgPSBtYXNrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gdGhpcyBzaG91bGQgYmUgaW1wb3NzaWJsZVxuICAgICAgICB0aGlzLm1hc2sgPSAxNjtcbiAgICAgIH1cbiAgICAgIHRoaXMubmV0d29ya0FkZHJlc3MgPSBpcEFkZHJlc3NPckNpZHIgKyBDaWRyQmxvY2suY2FsY3VsYXRlTmV0c2l6ZSh0aGlzLm1hc2spIC0gMTtcbiAgICAgIHRoaXMubmV0d29ya1NpemUgPSAyICoqICgzMiAtIHRoaXMubWFzayk7XG4gICAgfVxuICAgIHRoaXMubmV0d29ya1NpemUgPSAyICoqICgzMiAtIHRoaXMubWFzayk7XG4gICAgdGhpcy5jaWRyID0gYCR7dGhpcy5taW5JcCgpfS8ke3RoaXMubWFza31gO1xuICB9XG5cbiAgLypcbiAgICogVGhlIG1heGltdW0gSVAgaW4gdGhlIENJRFIgQmxvY2sgZS5nLiAnMTAuMC44LjI1NSdcbiAgICovXG4gIHB1YmxpYyBtYXhJcCgpOiBzdHJpbmcge1xuICAgIC8vIG1pbiArICgyXigzMi1tYXNrKSkgLSAxIFt6ZXJvIG5lZWRzIHRvIGNvdW50XVxuICAgIHJldHVybiBOZXR3b3JrVXRpbHMubnVtVG9JcCh0aGlzLm1heEFkZHJlc3MoKSk7XG4gIH1cblxuICAvKlxuICAgKiBDaGVja3MgaWYgdGhpcyBDSURSIGJsb2NrIGZ1bGx5IGNvbnRhaW5zIHRoZSBwcm92aWRlZCBDSURSIGJsb2NrLlxuICAgKlxuICAgKiBAcGFyYW0gb3RoZXIgVGhlIENJRFIgYmxvY2sgdG8gY2hlY2sgZm9yIGNvbnRhaW5tZW50LlxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoaXMgQ0lEUiBibG9jayBmdWxseSBjb250YWlucyB0aGUgcHJvdmlkZWQgQ0lEUiBibG9jaywgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKlxuICAgKiBUaGUgbWluaW11bSBJUCBpbiB0aGUgQ0lEUiBCbG9jayBlLmcuICcxMC4wLjAuMCdcbiAgICovXG4gIHB1YmxpYyBtaW5JcCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBOZXR3b3JrVXRpbHMubnVtVG9JcCh0aGlzLm1pbkFkZHJlc3MoKSk7XG4gIH1cblxuICAvKlxuICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgcmVwcmVzZW50YXRpb24gZm9yIHRoZSBtaW5pbXVtIElQdjQgYWRkcmVzc1xuICAgKi9cbiAgcHVibGljIG1pbkFkZHJlc3MoKTogbnVtYmVyIHtcbiAgICBjb25zdCBkaXYgPSB0aGlzLm5ldHdvcmtBZGRyZXNzICUgdGhpcy5uZXR3b3JrU2l6ZTtcbiAgICByZXR1cm4gdGhpcy5uZXR3b3JrQWRkcmVzcyAtIGRpdjtcbiAgfVxuXG4gIC8qXG4gICAqIFJldHVybnMgdGhlIG51bWJlciByZXByZXNlbnRhdGlvbiBmb3IgdGhlIG1heGltdW0gSVB2NCBhZGRyZXNzXG4gICAqL1xuICBwdWJsaWMgbWF4QWRkcmVzcygpOiBudW1iZXIge1xuICAgIC8qKlxuICAgICAqIFRoZSBtYXhpbXVtIElQIGFkZHJlc3MgaW4gdGhlIENJRFIgYmxvY2sgaXMgY2FsY3VsYXRlZCBhcyB0aGUgbWluaW11bSBhZGRyZXNzICsgKDJeKDMyLW1hc2spKSAtIDEuXG4gICAgICogVGhpcyBpcyBiZWNhdXNlIHRoZSBtaW5pbXVtIGFkZHJlc3MgcmVwcmVzZW50cyB0aGUgbmV0d29yayBhZGRyZXNzLCBhbmQgdGhlIG1heGltdW0gYWRkcmVzcyBpcyB0aGUgYnJvYWRjYXN0IGFkZHJlc3MuXG4gICAgICovXG4gICAgLy8gbWluICsgKDJeKDMyLW1hc2spKSAtIDEgW3plcm8gbmVlZHMgdG8gY291bnRdXG4gICAgcmV0dXJuIHRoaXMubWluQWRkcmVzcygpICsgdGhpcy5uZXR3b3JrU2l6ZSAtIDE7XG4gIH1cblxuICAvKlxuICAgKiBSZXR1cm5zIHRoZSBuZXh0IGNvbnNlY3V0aXZlIENJRFIgYmxvY2sgb2YgdGhlIHNhbWUgbWFzayBzaXplIGZvbGxvd2luZyB0aGlzIENJRFIgYmxvY2suXG4gICAqXG4gICAqIEZvciBleGFtcGxlLCBpZiB0aGlzIENJRFIgYmxvY2sgaXMgJzEwLjAuMC4wLzI0JywgdGhlIG5leHQgYmxvY2sgd291bGQgYmUgJzEwLjAuMS4wLzI0Jy5cbiAgICpcbiAgICogUmV0dXJucyB0aGUgbmV4dCBDSURSIEJsb2NrIG9mIHRoZSBzYW1lIG1hc2sgc2l6ZVxuICAgKi9cbiAgcHVibGljIG5leHRCbG9jaygpOiBDaWRyQmxvY2sge1xuICAgIHJldHVybiBuZXcgQ2lkckJsb2NrKHRoaXMubWF4QWRkcmVzcygpICsgMSwgdGhpcy5tYXNrKTtcbiAgfVxuXG4gIC8qXG4gICAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIENpZHJCbG9jayBmdWxseSBjb250YWlucyB0aGUgcHJvdmlkZWQgQ2lkckJsb2NrXG4gICAqL1xuICBwdWJsaWMgY29udGFpbnNDaWRyKG90aGVyOiBDaWRyQmxvY2spOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMubWF4QWRkcmVzcygpID49IG90aGVyLm1heEFkZHJlc3MoKSkgJiZcbiAgICAgICh0aGlzLm1pbkFkZHJlc3MoKSA8PSBvdGhlci5taW5BZGRyZXNzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0d28gSVB2NCBhZGRyZXNzIHJhbmdlcyBvdmVybGFwLlxuICAgKlxuICAgKiBAcGFyYW0gcmFuZ2UxIFRoZSBmaXJzdCBJUCBhZGRyZXNzIHJhbmdlIHJlcHJlc2VudGVkIGFzIGFuIGFycmF5IFtzdGFydCwgZW5kXS5cbiAgICogQHBhcmFtIHJhbmdlMiBUaGUgc2Vjb25kIElQIGFkZHJlc3MgcmFuZ2UgcmVwcmVzZW50ZWQgYXMgYW4gYXJyYXkgW3N0YXJ0LCBlbmRdLlxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSB0d28gSVAgYWRkcmVzcyByYW5nZXMgb3ZlcmxhcCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKlxuICAgKiBOb3RlOiBUaGlzIG1ldGhvZCBhc3N1bWVzIHRoYXQgdGhlIHN0YXJ0IGFuZCBlbmQgYWRkcmVzc2VzIGFyZSB2YWxpZCBJUHY0IGFkZHJlc3Nlcy5cbiAgICovXG4gIHB1YmxpYyByYW5nZXNPdmVybGFwKHJhbmdlMTogW3N0cmluZywgc3RyaW5nXSwgcmFuZ2UyOiBbc3RyaW5nLCBzdHJpbmddKTogYm9vbGVhbiB7XG4gICAgY29uc3QgW3N0YXJ0MSwgZW5kMV0gPSByYW5nZTEubWFwKGlwID0+IE5ldHdvcmtVdGlscy5pcFRvTnVtKGlwKSk7XG4gICAgY29uc3QgW3N0YXJ0MiwgZW5kMl0gPSByYW5nZTIubWFwKGlwID0+IE5ldHdvcmtVdGlscy5pcFRvTnVtKGlwKSk7XG4gICAgLy8gQ2hlY2sgaWYgcmFuZ2VzIG92ZXJsYXBcbiAgICByZXR1cm4gc3RhcnQxIDw9IGVuZDIgJiYgc3RhcnQyIDw9IGVuZDE7XG4gIH1cbn1cblxuLyoqXG4gKiBDbGFzcyB3aXRoIGhlbHBlciBmdW5jdGlvbnMgdG8gc3VwcG9ydFxuICogU3VibmV0IElwdjYgQWRkcmVzcyBWYWxpZGF0aW9uXG4gKlxuICogVGhpcyBjbGFzcyBwcm92aWRlcyBtZXRob2RzIGZvciB3b3JraW5nIHdpdGggSVB2NiBDSURSIGJsb2NrcywgaW5jbHVkaW5nIGNhbGN1bGF0aW5nIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtXG4gKiBJUCBhZGRyZXNzZXMgaW4gYSBDSURSIGJsb2NrLCBhbmQgY2hlY2tpbmcgaWYgdHdvIENJRFIgYmxvY2tzIG92ZXJsYXAuXG4gKi9cbmV4cG9ydCBjbGFzcyBDaWRyQmxvY2tJcHY2IHtcbiAgLyoqXG4gICAqIElwdjYgQ0lEUiByYW5nZVxuICAgKi9cbiAgcHVibGljIGNpZHI6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBDSURSIHByZWZpeCBsZW5ndGggKG51bWJlciBvZiBiaXRzIHVzZWQgZm9yIHRoZSBuZXR3b3JrIHBvcnRpb24gb2YgdGhlIGFkZHJlc3MpLlxuICAgKi9cbiAgcHVibGljIGNpZHJQcmVmaXg6IG51bWJlcjtcbiAgcHJpdmF0ZSBpcFBhcnRzOiBiaWdpbnRbXTtcbiAgcHJpdmF0ZSBuZXR3b3JrQml0czogbnVtYmVyO1xuICBwcml2YXRlIG5ldHdvcmtQYXJ0OiBiaWdpbnRbXTtcblxuICBjb25zdHJ1Y3RvcihjaWRyOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNpZHIgPSBjaWRyO1xuICAgIGNvbnN0IFtpcEFkZHJlc3MsIHByZWZpeF0gPSBjaWRyLnNwbGl0KCcvJyk7XG4gICAgdGhpcy5jaWRyUHJlZml4ID0gcGFyc2VJbnQocHJlZml4LCAxMCk7XG4gICAgdGhpcy5pcFBhcnRzID0gdGhpcy5wYXJzZUJpZ0ludFBhcnRzKGlwQWRkcmVzcyk7XG4gICAgdGhpcy5uZXR3b3JrQml0cyA9IHRoaXMuY2lkclByZWZpeDtcbiAgICB0aGlzLm5ldHdvcmtQYXJ0ID0gdGhpcy5pcFBhcnRzLnNsaWNlKDAsIE1hdGguY2VpbCh0aGlzLm5ldHdvcmtCaXRzIC8gMTYpKTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VCaWdJbnRQYXJ0cyhpcEFkZHJlc3M6IHN0cmluZyk6IGJpZ2ludFtdIHtcbiAgICByZXR1cm4gaXBBZGRyZXNzLnNwbGl0KCc6JykubWFwKChwYXJ0KSA9PiBCaWdJbnQoYDB4JHtwYXJ0LnBhZFN0YXJ0KDQsICcwJyl9YCB8fCAnMCcpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBNaW5pbXVtIElQdjYgYWRkcmVzcyBmb3IgYSBwcm92aWRlZCBDSURSXG4gICAqL1xuICBwdWJsaWMgbWluSXAoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdGFydElQID0gWy4uLnRoaXMubmV0d29ya1BhcnRdO1xuICAgIGZvciAobGV0IGkgPSB0aGlzLm5ldHdvcmtQYXJ0Lmxlbmd0aDsgaSA8IDg7IGkrKykge1xuICAgICAgc3RhcnRJUC5wdXNoKEJpZ0ludCgwKSk7XG4gICAgfVxuICAgIHJldHVybiBzdGFydElQLm1hcCh0aGlzLmZvcm1hdElQdjZQYXJ0KS5qb2luKCc6Jyk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyB0aGUgbWF4aW11bSBJUHY2IGFkZHJlc3MgaW4gdGhlIENJRFIgYmxvY2tcbiAgICogQHJldHVybnMgVGhlIG1heGltdW0gSVB2NiBhZGRyZXNzIGFzIGEgc3RyaW5nXG4gICAqL1xuICBwdWJsaWMgbWF4SXAoKTogc3RyaW5nIHtcbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGUgaG93IG1hbnkgMTYtYml0IGJsb2NrcyBhcmUgbmVlZGVkIGZvciB0aGUgbmV0d29yayBwb3J0aW9uXG4gICAgICogZS5nLiBmb3IgLzU2LCBuZXR3b3JrUGFydExlbmd0aCA9IGNlaWwoNTYvMTYpID0gNCBibG9ja3NcbiAgICAgKi9cbiAgICBjb25zdCBuZXR3b3JrUGFydExlbmd0aCA9IE1hdGguY2VpbCh0aGlzLmNpZHJQcmVmaXggLyAxNik7XG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlIHJlbWFpbmluZyBiaXRzIGluIGxhc3QgbmV0d29yayBibG9ja1xuICAgICAqIGUuZy4gZm9yIC81NiwgcmVtYWluaW5nQml0cyA9IDU2ICUgMTYgPSA4IGJpdHNcbiAgICAgKi9cbiAgICBjb25zdCByZW1haW5pbmdCaXRzID0gdGhpcy5jaWRyUHJlZml4ICUgMTY7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGNvcHkgb2YgbmV0d29yayBwb3J0aW9uIG9mIGFkZHJlc3NcbiAgICAgKiBlLmcuIFsyMDAxLCBkYjgsIDAsIDBdIGZvciAyMDAxOmRiODo6LzU2XG4gICAgICovXG4gICAgY29uc3QgZW5kSVAgPSBbLi4udGhpcy5uZXR3b3JrUGFydF07XG5cbiAgICAvKipcbiAgICAgKiBJZiB0aGVyZSBhcmUgcmVtYWluaW5nIGJpdHMgaW4gbGFzdCBuZXR3b3JrIGJsb2NrLFxuICAgICAqIGNyZWF0ZSBhcHByb3ByaWF0ZSBiaXRtYXNrIGFuZCBhcHBseSB0byBsYXN0IG5ldHdvcmsgYmxvY2tcbiAgICAgKiBlLmcuIGZvciAvNTY6IG1hc2sgPSAoMSA8PCAoMTYtOCkpIC0gMSA9IDB4MDBGRlxuICAgICAqL1xuICAgIGlmIChyZW1haW5pbmdCaXRzID4gMCkge1xuICAgICAgY29uc3QgbGFzdE5ldHdvcmtJbmRleCA9IG5ldHdvcmtQYXJ0TGVuZ3RoIC0gMTtcbiAgICAgIGNvbnN0IG1hc2sgPSAoQmlnSW50KDEpIDw8IEJpZ0ludCgxNiAtIHJlbWFpbmluZ0JpdHMpKSAtIEJpZ0ludCgxKTtcbiAgICAgIC8qKlxuICAgICAgICogQXBwbHkgYml0bWFzayB0byBsYXN0IG5ldHdvcmsgYmxvY2sgdXNpbmcgYml0d2lzZSBPUlxuICAgICAgICogZS5nLiBpZiBsYXN0TmV0d29ya0luZGV4PTMgYW5kIG1hc2s9MHgwMEZGOlxuICAgICAgICogbmV0d29ya1BhcnRbM109MHgwMDAwIHwgMHgwMEZGID0gMHgwMEZGXG4gICAgICAgKi9cbiAgICAgIGVuZElQW2xhc3ROZXR3b3JrSW5kZXhdID0gdGhpcy5uZXR3b3JrUGFydFtsYXN0TmV0d29ya0luZGV4XSB8IG1hc2s7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmlsbCByZW1haW5pbmcgYmxvY2tzIHdpdGggbWF4aW11bSB2YWx1ZSAweEZGRkZcbiAgICAgKiBlLmcuIFsyMDAxLCBkYjgsIDAsIGZmLCBmZmZmLCBmZmZmLCBmZmZmLCBmZmZmXVxuICAgICAqL1xuICAgIGZvciAobGV0IGkgPSBuZXR3b3JrUGFydExlbmd0aDsgaSA8IDg7IGkrKykge1xuICAgICAgZW5kSVAucHVzaChCaWdJbnQoJzB4ZmZmZicpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IGJsb2NrcyB0byBoZXggc3RyaW5ncyBhbmQgam9pbiB3aXRoIGNvbG9uc1xuICAgICAqIGUuZy4gMjAwMTpkYjg6MDpmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmXG4gICAgICovXG4gICAgcmV0dXJuIGVuZElQLm1hcCh0aGlzLmZvcm1hdElQdjZQYXJ0KS5qb2luKCc6Jyk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdElQdjZQYXJ0ID0gKHBhcnQ6IGJpZ2ludCkgPT4gcGFydC50b1N0cmluZygxNikucGFkU3RhcnQoNCwgJzAnKTtcblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHJhbmdlMSBJcHY2IENJRFIgcmFuZ2UgdG8gY29tcGFyZVxuICAgKiBAcGFyYW0gcmFuZ2UyIElwdjYgQ0lEUiByYW5nZSB0byBjb21wYXJlXG4gICAqIEByZXR1cm5zIHRydWUgaWYgdHdvIHJhbmdlcyBvdmVybGFwLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIHB1YmxpYyByYW5nZXNPdmVybGFwKHJhbmdlMTogc3RyaW5nLCByYW5nZTI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIC8vIENyZWF0ZSBuZXcgQ2lkckJsb2NrSXB2NiBpbnN0YW5jZXMgZm9yIGJvdGggcmFuZ2VzXG4gICAgY29uc3QgY2lkcjEgPSBuZXcgQ2lkckJsb2NrSXB2NihyYW5nZTEpO1xuICAgIGNvbnN0IGNpZHIyID0gbmV3IENpZHJCbG9ja0lwdjYocmFuZ2UyKTtcblxuICAgIC8vIENvbnZlcnQgbWluIGFuZCBtYXggSVBzIHRvIG51bWVyaWMgdmFsdWVzIGZvciBjb21wYXJpc29uXG4gICAgY29uc3Qgc3RhcnQxID0gdGhpcy5pcHY2VG9OdW1iZXIoY2lkcjEubWluSXAoKSk7XG4gICAgY29uc3QgZW5kMSA9IHRoaXMuaXB2NlRvTnVtYmVyKGNpZHIxLm1heElwKCkpO1xuICAgIGNvbnN0IHN0YXJ0MiA9IHRoaXMuaXB2NlRvTnVtYmVyKGNpZHIyLm1pbklwKCkpO1xuICAgIGNvbnN0IGVuZDIgPSB0aGlzLmlwdjZUb051bWJlcihjaWRyMi5tYXhJcCgpKTtcblxuICAgIC8vIENoZWNrIGZvciBvdmVybGFwXG4gICAgcmV0dXJuIChzdGFydDEgPD0gZW5kMikgJiYgKHN0YXJ0MiA8PSBlbmQxKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBDb252ZXJ0cyBnaXZlbiBpcHY2IGFkZHJlc3MgcmFuZ2UgdG8gYmlnIGludCBudW1iZXJcbiAgICovXG4gIHByaXZhdGUgaXB2NlRvTnVtYmVyKGlwdjZBZGRyZXNzOiBzdHJpbmcpOiBiaWdpbnQge1xuICAgIGNvbnN0IGJsb2NrcyA9IHRoaXMucGFyc2VCaWdJbnRQYXJ0cyhpcHY2QWRkcmVzcyk7XG4gICAgbGV0IGlwdjZOdW1iZXIgPSBCaWdJbnQoMCk7XG4gICAgZm9yIChjb25zdCBibG9jayBvZiBibG9ja3MpIHtcbiAgICAgIC8qIHRzbGludDpkaXNhYmxlOm5vLWJpdHdpc2UgKi9cbiAgICAgIGlwdjZOdW1iZXIgPSAoaXB2Nk51bWJlciA8PCBCaWdJbnQoMTYpKSArIGJsb2NrO1xuICAgIH1cbiAgICByZXR1cm4gaXB2Nk51bWJlcjtcbiAgfVxufVxuIl19
407
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHNFQUFzRTs7O0FBT3RFLDhDQVVDO0FBT0Qsd0VBRUM7QUFLRCw0QkFFQztBQWlCRCw0Q0FNQztBQUtELDRDQVFDO0FBRUQsMEJBRUM7QUF2RUQsaURBQXNFO0FBRXRFOztHQUVHO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQUMsSUFBZ0I7SUFDaEQsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUNiLEtBQUssb0JBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLFFBQVEsQ0FBQztRQUN4QyxLQUFLLG9CQUFVLENBQUMsZ0JBQWdCLENBQUM7UUFDakMsS0FBSyxvQkFBVSxDQUFDLG1CQUFtQjtZQUNqQyxPQUFPLFNBQVMsQ0FBQztRQUNuQixLQUFLLG9CQUFVLENBQUMsZ0JBQWdCO1lBQzlCLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLDhCQUE4QixDQUFDLE1BQWtCO0lBQy9ELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixRQUFRLENBQUMsSUFBWSxFQUFFLENBQVM7SUFDOUMsT0FBTyxHQUFHLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7QUFDakMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsSUFBWSwyQkFVWDtBQVZELFdBQVksMkJBQTJCO0lBQ3JDOztPQUVHO0lBQ0gsZ0RBQWlCLENBQUE7SUFFakI7O09BRUc7SUFDSCxrREFBbUIsQ0FBQTtBQUNyQixDQUFDLEVBVlcsMkJBQTJCLDJDQUEzQiwyQkFBMkIsUUFVdEM7QUFFRCxTQUFnQixnQkFBZ0IsQ0FBQyxNQUFnQjtJQUMvQyxJ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R0FBRyxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDbEQsQ0FBQztRQUNELE9BQU8sVUFBVSxDQUFDO0tBQ25CO0NBQ0Y7QUE1SEQsc0NBNEhDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50IG5vLWJpdHdpc2U6IFtcImVycm9yXCIsIHsgXCJhbGxvd1wiOiBbXCJ+XCIsIFwifFwiLCBcIjw8XCIsIFwiJlwiXSB9XSAqL1xuXG5pbXBvcnQgeyBJU3VibmV0LCBJU3VibmV0UmVmLCBTdWJuZXRUeXBlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5cbi8qKlxuICogVGhlIGRlZmF1bHQgbmFtZXMgZm9yIGV2ZXJ5IHN1Ym5ldCB0eXBlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0U3VibmV0TmFtZSh0eXBlOiBTdWJuZXRUeXBlKSB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgU3VibmV0VHlwZS5QVUJMSUM6IHJldHVybiAnUHVibGljJztcbiAgICBjYXNlIFN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX05BVDpcbiAgICBjYXNlIFN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUzpcbiAgICAgIHJldHVybiAnUHJpdmF0ZSc7XG4gICAgY2FzZSBTdWJuZXRUeXBlLlBSSVZBVEVfSVNPTEFURUQ6XG4gICAgICByZXR1cm4gJ0lzb2xhdGVkJztcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFJldHVybiBhIHN1Ym5ldCBuYW1lIGZyb20gaXRzIGNvbnN0cnVjdCBJRFxuICpcbiAqIEFsbCBzdWJuZXQgbmFtZXMgbG9vayBsaWtlIE5BTUUgPD4gXCJTdWJuZXRcIiA8PiBJTkRFWFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3VibmV0R3JvdXBOYW1lRnJvbUNvbnN0cnVjdElkKHN1Ym5ldDogSVN1Ym5ldFJlZikge1xuICByZXR1cm4gc3VibmV0Lm5vZGUuaWQucmVwbGFjZSgvU3VibmV0XFxkKyQvLCAnJyk7XG59XG5cbi8qKlxuICogTWFrZSB0aGUgc3VibmV0IGNvbnN0cnVjdCBJRCBmcm9tIGEgbmFtZSBhbmQgbnVtYmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdWJuZXRJZChuYW1lOiBzdHJpbmcsIGk6IG51bWJlcikge1xuICByZXR1cm4gYCR7bmFtZX1TdWJuZXQke2kgKyAxfWA7XG59XG5cbi8qKlxuICogVGhlIHN0YXR1cyBvZiBhIFRyYW5zaXQgR2F0ZXdheSBmZWF0dXJlLlxuICovXG5leHBvcnQgZW51bSBUcmFuc2l0R2F0ZXdheUZlYXR1cmVTdGF0dXMge1xuICAvKipcbiAgICogVGhlIGZlYXR1cmUgaXMgZW5hYmxlZC5cbiAgICovXG4gIEVOQUJMRSA9ICdlbmFibGUnLFxuXG4gIC8qKlxuICAgKiBUaGUgZmVhdHVyZSBpcyBkaXNhYmxlZC5cbiAgICovXG4gIERJU0FCTEUgPSAnZGlzYWJsZScsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGZWF0dXJlU3RhdHVzKHN0YXR1cz86IGJvb2xlYW4pOiBUcmFuc2l0R2F0ZXdheUZlYXR1cmVTdGF0dXMgfCB1bmRlZmluZWQge1xuICBpZiAoc3RhdHVzID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBzdGF0dXMgPyBUcmFuc2l0R2F0ZXdheUZlYXR1cmVTdGF0dXMuRU5BQkxFIDogVHJhbnNpdEdhdGV3YXlGZWF0dXJlU3RhdHVzLkRJU0FCTEU7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm4gdGhlIHVuaW9uIG9mIHRhYmxlIElEcyBmcm9tIGFsbCBzZWxlY3RlZCBzdWJuZXRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhbGxSb3V0ZVRhYmxlSWRzKHN1Ym5ldHM6IElTdWJuZXRbXSk6IHN0cmluZ1tdIHtcbiAgY29uc3QgcmV0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGZvciAoY29uc3Qgc3VibmV0IG9mIHN1Ym5ldHMpIHtcbiAgICBpZiAoc3VibmV0LnJvdXRlVGFibGUgJiYgc3VibmV0LnJvdXRlVGFibGUucm91dGVUYWJsZUlkKSB7XG4gICAgICByZXQuYWRkKHN1Ym5ldC5yb3V0ZVRhYmxlLnJvdXRlVGFibGVJZCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBBcnJheS5mcm9tKHJldCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuPEE+KHhzOiBBW11bXSk6IEFbXSB7XG4gIHJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLCB4cyk7XG59XG5cbi8qKlxuICogTmV0d29ya1V0aWxzIGNvbnRhaW5zIGhlbHBlcnMgdG8gd29yayB3aXRoIG5ldHdvcmsgY29uc3RydWN0cyAoc3VibmV0cy9yYW5nZXMpXG4gKi9cbmV4cG9ydCBjbGFzcyBOZXR3b3JrVXRpbHMge1xuICAvKipcbiAgICogVmFsaWRhdGVzIGFuIElQdjQgYWRkcmVzcyBzdHJpbmcuXG4gICAqXG4gICAqIEBwYXJhbSBpcEFkZHJlc3MgVGhlIElQdjQgYWRkcmVzcyBzdHJpbmcgdG8gYmUgdmFsaWRhdGVkLlxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBJUHY0IGFkZHJlc3MsIGZhbHNlIG90aGVyd2lzZS5cbiAgICogVmFsaWRhdGVzIGFuIElQdjQgc3RyaW5nXG4gICAqXG4gICAqIHJldHVybnMgdHJ1ZSBvZiB0aGUgc3RyaW5nIGNvbnRhaW5zIDQgbnVtYmVycyBiZXR3ZWVuIDAtMjU1IGRlbGltaXRlZCBieVxuICAgKiBhIGAuYCBjaGFyYWN0ZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdmFsaWRJcChpcEFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG9jdGV0cyA9IGlwQWRkcmVzcy5zcGxpdCgnLicpO1xuICAgIGlmIChvY3RldHMubGVuZ3RoICE9PSA0KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBvY3RldHMubWFwKChvY3RldDogc3RyaW5nKSA9PiBwYXJzZUludChvY3RldCwgMTApKS5cbiAgICAgIGV2ZXJ5KChvY3RldDogbnVtYmVyKSA9PiBvY3RldCA+PSAwICYmIG9jdGV0IDw9IDI1NSk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gSVB2NCBhZGRyZXNzIHRvIGl0cyBjb3JyZXNwb25kaW5nIG51bWVyaWNhbCB2YWx1ZS5cbiAgICpcbiAgICogVXNlcyB0aGUgZm9ybXVsYTpcbiAgICogKGZpcnN0IG9jdGV0ICogMjU2wrMpICsgKHNlY29uZCBvY3RldCAqIDI1NsKyKSArICh0aGlyZCBvY3RldCAqIDI1NikgK1xuICAgKiAoZm91cnRoIG9jdGV0KVxuICAgKlxuICAgKiBAcGFyYW0gIGlwQWRkcmVzcyB0aGUgSVAgYWRkcmVzcyAoZS5nLiAxNzQuNjYuMTczLjE2OClcbiAgICogQHJldHVybnMgdGhlIGludGVnZXIgdmFsdWUgb2YgdGhlIElQIGFkZHJlc3MgKGUuZyAyOTIzNjA1NDE2KVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpcFRvTnVtKGlwQWRkcmVzczogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMudmFsaWRJcChpcEFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7aXBBZGRyZXNzfSBpcyBub3QgdmFsaWRgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXBBZGRyZXNzXG4gICAgICAuc3BsaXQoJy4nKVxuICAgICAgLnJlZHVjZShcbiAgICAgICAgKHA6IG51bWJlciwgYzogc3RyaW5nLCBpOiBudW1iZXIpID0+IHAgKyBwYXJzZUludChjLCAxMCkgKiAyNTYgKiogKDMgLSBpKSxcbiAgICAgICAgMCxcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVGFrZXMgbnVtYmVyIGFuZCBjb252ZXJ0cyBpdCB0byBJUHY0IGFkZHJlc3Mgc3RyaW5nXG4gICAqXG4gICAqIFRha2VzIGEgbnVtYmVyIChlLmcgMjkyMzYwNTQxNikgYW5kIGNvbnZlcnRzIGl0IHRvIGFuIElQdjQgYWRkcmVzcyBzdHJpbmdcbiAgICogY3VycmVudGx5IG9ubHkgc3VwcG9ydHMgSVB2NFxuICAgKlxuICAgKiBAcGFyYW0gaXBOdW0gaW50ZWdlciB2YWx1ZSBvZiB0aGUgSVAgYWRkcmVzcyAoZS5nIDI5MjM2MDU0MTYpXG4gICAqIEByZXR1cm5zIElQdjQgYWRkcmVzcyAoZS5nLiAxNzQuNjYuMTczLjE2OClcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbnVtVG9JcChpcE51bTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAvLyB0aGlzIGFsbCBiZWNhdXNlIGJpdHdpc2UgbWF0aCBpcyBzaWduZWRcbiAgICBsZXQgcmVtYWluaW5nID0gaXBOdW07XG4gICAgY29uc3QgYWRkcmVzcyA9IG5ldyBBcnJheTxudW1iZXI+KCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICAgIGlmIChyZW1haW5pbmcgIT09IDApIHtcbiAgICAgICAgYWRkcmVzcy5wdXNoKE1hdGguZmxvb3IocmVtYWluaW5nIC8gMjU2ICoqICgzIC0gaSkpKTtcbiAgICAgICAgcmVtYWluaW5nID0gcmVtYWluaW5nICUgMjU2ICoqICgzIC0gaSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhZGRyZXNzLnB1c2goMCk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGlwQWRkcmVzczogc3RyaW5nID0gYWRkcmVzcy5qb2luKCcuJyk7XG4gICAgaWYgKCAhdGhpcy52YWxpZElwKGlwQWRkcmVzcykgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7aXBBZGRyZXNzfSBpcyBub3QgYSB2YWxpZCBJUCBBZGRyZXNzYCk7XG4gICAgfVxuICAgIHJldHVybiBpcEFkZHJlc3M7XG4gIH1cbn1cblxuLyoqXG4gKiBFeHBvcnRlZCBjbGFzcyBmcm9tIFZQQyB0byBzdXBwb3J0IHN1Ym5ldCBmaWx0ZXJpbmdcbiAqIGFuZCBDSURSIHZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGNsYXNzIENpZHJCbG9jayB7XG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIHRoZSBuZXRtYXNrIGZvciBhIGdpdmVuIENJRFIgbWFza1xuICAgKlxuICAgKiBUaGUgbmV0bWFzayBpcyBhIDMyLWJpdCBiaW5hcnkgdmFsdWUgdXNlZCB0byBzZXBhcmF0ZSB0aGUgbmV0d29yayBwb3J0aW9uIGZyb20gdGhlIGhvc3QgcG9ydGlvbiBvZiBhbiBJUHY0IGFkZHJlc3MuXG4gICAqIEl0IGlzIGNhbGN1bGF0ZWQgYmFzZWQgb24gdGhlIENJRFIgcHJlZml4IGxlbmd0aCAodGhlIG51bWJlciBvZiBiaXRzIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBuZXR3b3JrIHBvcnRpb24pLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZTpcbiAgICogQ2lkckJsb2NrLmNhbGN1bGF0ZU5ldG1hc2soMjQpIHJldHVybnMgJzI1NS4yNTUuMjU1LjAnXG4gICAqXG4gICAqIEBwYXJhbSBtYXNrIFRoZSBDSURSIHByZWZpeCBsZW5ndGggKGJldHdlZW4gMCBhbmQgMzIpIGZvciB3aGljaCB0byBjYWxjdWxhdGUgdGhlIG5ldG1hc2suXG4gICAgLy8gQ2FsY3VsYXRlIHRoZSBuZXRtYXNrIGJ5IHBlcmZvcm1pbmcgYSBiaXR3aXNlIE5PVCBvbiB0aGUgcmVzdWx0IG9mICgyXjMyIC0gMl4oMzIgLSBtYXNrKSlcbiAgICogQHJldHVybnMgVGhlIG5ldG1hc2sgc3RyaW5nIGluIElQdjQgYWRkcmVzcyBmb3JtYXQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNhbGN1bGF0ZU5ldG1hc2sobWFzazogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gTmV0d29ya1V0aWxzLm51bVRvSXAoMiAqKiAzMiAtIDIgKiogKDMyIC0gbWFzaykpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIG51bWJlciBJUCBhZGRyZXNzZXMgaW4gYSBDSURSIE1hc2tcbiAgICpcbiAgICogRm9yIGV4YW1wbGU6XG4gICAqIENpZHJCbG9jay5jYWxjdWxhdGVOZXRzaXplKDE2KSByZXR1cm5zIDY1NTM2XG4gICAqXG4gICAqIEBwYXJhbSBtYXNrIFRoZSBDSURSIHByZWZpeCBsZW5ndGggKGJldHdlZW4gMCBhbmQgMzIpIGZvciB3aGljaCB0byBjYWxjdWxhdGUgdGhlIG5ldHdvcmsgc2l6ZS5cbiAgICogQ2lkckJsb2NrLmNhbGN1bGF0ZU5ldHNpemUoMjQpIHJldHVybnMgMjU2XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNhbGN1bGF0ZU5ldHNpemUobWFzazogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gMiAqKiAoMzIgLSBtYXNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJUCBhZGRyZXNzIGluIHRoZSBDSURSIGJsb2NrLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNpZHI6IHN0cmluZztcblxuICAvKlxuICAgKiBUaGUgQ0lEUiBtYXNrIGUuZy4gZm9yIENJRFIgJzEwLjAuMC4wLzIxJyByZXR1cm5zIDIxXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbWFzazogbnVtYmVyO1xuXG4gIC8qXG4gICAqIFRoZSB0b3RhbCBudW1iZXIgb2YgSVAgYWRkcmVzc2VzIGluIHRoZSBDSURSXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbmV0d29ya1NpemU6IG51bWJlcjtcblxuICAvKlxuICAgKiBUaGUgbmV0d29yayBhZGRyZXNzIHByb3ZpZGVkIGluIENJRFIgY3JlYXRpb24gb2Zmc2V0IGJ5IHRoZSBOZXRzaXplIC0xXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IG5ldHdvcmtBZGRyZXNzOiBudW1iZXI7XG5cbiAgLypcbiAgICogUGFyc2VzIGVpdGhlciBDSURSIG5vdGF0aW9uIFN0cmluZyBvciB0d28gbnVtYmVycyByZXByZXNlbnRpbmcgdGhlIElQXG4gICAqIHNwYWNlXG4gICAqXG4gICAqIGNpZHIgZXhwZWN0cyBhIHN0cmluZyAnMTAuMC4wLjAvMTYnXG4gICAqIGlwQWRkcmVzcyBleHBlY3RzIGEgbnVtYmVyXG4gICAqIG1hc2sgZXhwZWN0cyBhIG51bWJlclxuICAgKlxuICAgKiBJZiB0aGUgZ2l2ZW4gYGNpZHJgIG9yIGBpcEFkZHJlc3NgIGlzIG5vdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBibG9jayxcbiAgICogdGhlbiB0aGUgbmV4dCBhdmFpbGFibGUgYmxvY2sgd2lsbCBiZSByZXR1cm5lZC4gRm9yIGV4YW1wbGUsIGlmXG4gICAqIGAxMC4wLjMuMS8yOGAgaXMgZ2l2ZW4gdGhlIHJldHVybmVkIGJsb2NrIHdpbGwgcmVwcmVzZW50IGAxMC4wLjMuMTYvMjhgLlxuICAgKi9cbiAgY29uc3RydWN0b3IoY2lkcjogc3RyaW5nKTtcbiAgY29uc3RydWN0b3IoaXBBZGRyZXNzOiBudW1iZXIsIG1hc2s6IG51bWJlcik7XG4gIGNvbnN0cnVjdG9yKGlwQWRkcmVzc09yQ2lkcjogc3RyaW5nIHwgbnVtYmVyLCBtYXNrPzogbnVtYmVyKSB7XG4gICAgaWYgKHR5cGVvZiBpcEFkZHJlc3NPckNpZHIgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLm1hc2sgPSBwYXJzZUludChpcEFkZHJlc3NPckNpZHIuc3BsaXQoJy8nKVsxXSwgMTApO1xuICAgICAgdGhpcy5uZXR3b3JrQWRkcmVzcyA9IE5ldHdvcmtVdGlscy5pcFRvTnVtKGlwQWRkcmVzc09yQ2lkci5zcGxpdCgnLycpWzBdKSArXG4gICAgICAgIENpZHJCbG9jay5jYWxjdWxhdGVOZXRzaXplKHRoaXMubWFzaykgLSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodHlwZW9mIG1hc2sgPT09ICdudW1iZXInKSB7XG4gICAgICAgIHRoaXMubWFzayA9IG1hc2s7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyB0aGlzIHNob3VsZCBiZSBpbXBvc3NpYmxlXG4gICAgICAgIHRoaXMubWFzayA9IDE2O1xuICAgICAgfVxuICAgICAgdGhpcy5uZXR3b3JrQWRkcmVzcyA9IGlwQWRkcmVzc09yQ2lkciArIENpZHJCbG9jay5jYWxjdWxhdGVOZXRzaXplKHRoaXMubWFzaykgLSAxO1xuICAgICAgdGhpcy5uZXR3b3JrU2l6ZSA9IDIgKiogKDMyIC0gdGhpcy5tYXNrKTtcbiAgICB9XG4gICAgdGhpcy5uZXR3b3JrU2l6ZSA9IDIgKiogKDMyIC0gdGhpcy5tYXNrKTtcbiAgICB0aGlzLmNpZHIgPSBgJHt0aGlzLm1pbklwKCl9LyR7dGhpcy5tYXNrfWA7XG4gIH1cblxuICAvKlxuICAgKiBUaGUgbWF4aW11bSBJUCBpbiB0aGUgQ0lEUiBCbG9jayBlLmcuICcxMC4wLjguMjU1J1xuICAgKi9cbiAgcHVibGljIG1heElwKCk6IHN0cmluZyB7XG4gICAgLy8gbWluICsgKDJeKDMyLW1hc2spKSAtIDEgW3plcm8gbmVlZHMgdG8gY291bnRdXG4gICAgcmV0dXJuIE5ldHdvcmtVdGlscy5udW1Ub0lwKHRoaXMubWF4QWRkcmVzcygpKTtcbiAgfVxuXG4gIC8qXG4gICAqIENoZWNrcyBpZiB0aGlzIENJRFIgYmxvY2sgZnVsbHkgY29udGFpbnMgdGhlIHByb3ZpZGVkIENJRFIgYmxvY2suXG4gICAqXG4gICAqIEBwYXJhbSBvdGhlciBUaGUgQ0lEUiBibG9jayB0byBjaGVjayBmb3IgY29udGFpbm1lbnQuXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhpcyBDSURSIGJsb2NrIGZ1bGx5IGNvbnRhaW5zIHRoZSBwcm92aWRlZCBDSURSIGJsb2NrLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqXG4gICAqIFRoZSBtaW5pbXVtIElQIGluIHRoZSBDSURSIEJsb2NrIGUuZy4gJzEwLjAuMC4wJ1xuICAgKi9cbiAgcHVibGljIG1pbklwKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIE5ldHdvcmtVdGlscy5udW1Ub0lwKHRoaXMubWluQWRkcmVzcygpKTtcbiAgfVxuXG4gIC8qXG4gICAqIFJldHVybnMgdGhlIG51bWJlciByZXByZXNlbnRhdGlvbiBmb3IgdGhlIG1pbmltdW0gSVB2NCBhZGRyZXNzXG4gICAqL1xuICBwdWJsaWMgbWluQWRkcmVzcygpOiBudW1iZXIge1xuICAgIGNvbnN0IGRpdiA9IHRoaXMubmV0d29ya0FkZHJlc3MgJSB0aGlzLm5ldHdvcmtTaXplO1xuICAgIHJldHVybiB0aGlzLm5ldHdvcmtBZGRyZXNzIC0gZGl2O1xuICB9XG5cbiAgLypcbiAgICogUmV0dXJucyB0aGUgbnVtYmVyIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgbWF4aW11bSBJUHY0IGFkZHJlc3NcbiAgICovXG4gIHB1YmxpYyBtYXhBZGRyZXNzKCk6IG51bWJlciB7XG4gICAgLyoqXG4gICAgICogVGhlIG1heGltdW0gSVAgYWRkcmVzcyBpbiB0aGUgQ0lEUiBibG9jayBpcyBjYWxjdWxhdGVkIGFzIHRoZSBtaW5pbXVtIGFkZHJlc3MgKyAoMl4oMzItbWFzaykpIC0gMS5cbiAgICAgKiBUaGlzIGlzIGJlY2F1c2UgdGhlIG1pbmltdW0gYWRkcmVzcyByZXByZXNlbnRzIHRoZSBuZXR3b3JrIGFkZHJlc3MsIGFuZCB0aGUgbWF4aW11bSBhZGRyZXNzIGlzIHRoZSBicm9hZGNhc3QgYWRkcmVzcy5cbiAgICAgKi9cbiAgICAvLyBtaW4gKyAoMl4oMzItbWFzaykpIC0gMSBbemVybyBuZWVkcyB0byBjb3VudF1cbiAgICByZXR1cm4gdGhpcy5taW5BZGRyZXNzKCkgKyB0aGlzLm5ldHdvcmtTaXplIC0gMTtcbiAgfVxuXG4gIC8qXG4gICAqIFJldHVybnMgdGhlIG5leHQgY29uc2VjdXRpdmUgQ0lEUiBibG9jayBvZiB0aGUgc2FtZSBtYXNrIHNpemUgZm9sbG93aW5nIHRoaXMgQ0lEUiBibG9jay5cbiAgICpcbiAgICogRm9yIGV4YW1wbGUsIGlmIHRoaXMgQ0lEUiBibG9jayBpcyAnMTAuMC4wLjAvMjQnLCB0aGUgbmV4dCBibG9jayB3b3VsZCBiZSAnMTAuMC4xLjAvMjQnLlxuICAgKlxuICAgKiBSZXR1cm5zIHRoZSBuZXh0IENJRFIgQmxvY2sgb2YgdGhlIHNhbWUgbWFzayBzaXplXG4gICAqL1xuICBwdWJsaWMgbmV4dEJsb2NrKCk6IENpZHJCbG9jayB7XG4gICAgcmV0dXJuIG5ldyBDaWRyQmxvY2sodGhpcy5tYXhBZGRyZXNzKCkgKyAxLCB0aGlzLm1hc2spO1xuICB9XG5cbiAgLypcbiAgICogUmV0dXJucyB0cnVlIGlmIHRoaXMgQ2lkckJsb2NrIGZ1bGx5IGNvbnRhaW5zIHRoZSBwcm92aWRlZCBDaWRyQmxvY2tcbiAgICovXG4gIHB1YmxpYyBjb250YWluc0NpZHIob3RoZXI6IENpZHJCbG9jayk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5tYXhBZGRyZXNzKCkgPj0gb3RoZXIubWF4QWRkcmVzcygpKSAmJlxuICAgICAgKHRoaXMubWluQWRkcmVzcygpIDw9IG90aGVyLm1pbkFkZHJlc3MoKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHR3byBJUHY0IGFkZHJlc3MgcmFuZ2VzIG92ZXJsYXAuXG4gICAqXG4gICAqIEBwYXJhbSByYW5nZTEgVGhlIGZpcnN0IElQIGFkZHJlc3MgcmFuZ2UgcmVwcmVzZW50ZWQgYXMgYW4gYXJyYXkgW3N0YXJ0LCBlbmRdLlxuICAgKiBAcGFyYW0gcmFuZ2UyIFRoZSBzZWNvbmQgSVAgYWRkcmVzcyByYW5nZSByZXByZXNlbnRlZCBhcyBhbiBhcnJheSBbc3RhcnQsIGVuZF0uXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIHR3byBJUCBhZGRyZXNzIHJhbmdlcyBvdmVybGFwLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqXG4gICAqIE5vdGU6IFRoaXMgbWV0aG9kIGFzc3VtZXMgdGhhdCB0aGUgc3RhcnQgYW5kIGVuZCBhZGRyZXNzZXMgYXJlIHZhbGlkIElQdjQgYWRkcmVzc2VzLlxuICAgKi9cbiAgcHVibGljIHJhbmdlc092ZXJsYXAocmFuZ2UxOiBbc3RyaW5nLCBzdHJpbmddLCByYW5nZTI6IFtzdHJpbmcsIHN0cmluZ10pOiBib29sZWFuIHtcbiAgICBjb25zdCBbc3RhcnQxLCBlbmQxXSA9IHJhbmdlMS5tYXAoaXAgPT4gTmV0d29ya1V0aWxzLmlwVG9OdW0oaXApKTtcbiAgICBjb25zdCBbc3RhcnQyLCBlbmQyXSA9IHJhbmdlMi5tYXAoaXAgPT4gTmV0d29ya1V0aWxzLmlwVG9OdW0oaXApKTtcbiAgICAvLyBDaGVjayBpZiByYW5nZXMgb3ZlcmxhcFxuICAgIHJldHVybiBzdGFydDEgPD0gZW5kMiAmJiBzdGFydDIgPD0gZW5kMTtcbiAgfVxufVxuXG4vKipcbiAqIENsYXNzIHdpdGggaGVscGVyIGZ1bmN0aW9ucyB0byBzdXBwb3J0XG4gKiBTdWJuZXQgSXB2NiBBZGRyZXNzIFZhbGlkYXRpb25cbiAqXG4gKiBUaGlzIGNsYXNzIHByb3ZpZGVzIG1ldGhvZHMgZm9yIHdvcmtpbmcgd2l0aCBJUHY2IENJRFIgYmxvY2tzLCBpbmNsdWRpbmcgY2FsY3VsYXRpbmcgdGhlIG1pbmltdW0gYW5kIG1heGltdW1cbiAqIElQIGFkZHJlc3NlcyBpbiBhIENJRFIgYmxvY2ssIGFuZCBjaGVja2luZyBpZiB0d28gQ0lEUiBibG9ja3Mgb3ZlcmxhcC5cbiAqL1xuZXhwb3J0IGNsYXNzIENpZHJCbG9ja0lwdjYge1xuICAvKipcbiAgICogSXB2NiBDSURSIHJhbmdlXG4gICAqL1xuICBwdWJsaWMgY2lkcjogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIENJRFIgcHJlZml4IGxlbmd0aCAobnVtYmVyIG9mIGJpdHMgdXNlZCBmb3IgdGhlIG5ldHdvcmsgcG9ydGlvbiBvZiB0aGUgYWRkcmVzcykuXG4gICAqL1xuICBwdWJsaWMgY2lkclByZWZpeDogbnVtYmVyO1xuICBwcml2YXRlIGlwUGFydHM6IGJpZ2ludFtdO1xuICBwcml2YXRlIG5ldHdvcmtCaXRzOiBudW1iZXI7XG4gIHByaXZhdGUgbmV0d29ya1BhcnQ6IGJpZ2ludFtdO1xuXG4gIGNvbnN0cnVjdG9yKGNpZHI6IHN0cmluZykge1xuICAgIHRoaXMuY2lkciA9IGNpZHI7XG4gICAgY29uc3QgW2lwQWRkcmVzcywgcHJlZml4XSA9IGNpZHIuc3BsaXQoJy8nKTtcbiAgICB0aGlzLmNpZHJQcmVmaXggPSBwYXJzZUludChwcmVmaXgsIDEwKTtcbiAgICB0aGlzLmlwUGFydHMgPSB0aGlzLnBhcnNlQmlnSW50UGFydHMoaXBBZGRyZXNzKTtcbiAgICB0aGlzLm5ldHdvcmtCaXRzID0gdGhpcy5jaWRyUHJlZml4O1xuICAgIHRoaXMubmV0d29ya1BhcnQgPSB0aGlzLmlwUGFydHMuc2xpY2UoMCwgTWF0aC5jZWlsKHRoaXMubmV0d29ya0JpdHMgLyAxNikpO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZUJpZ0ludFBhcnRzKGlwQWRkcmVzczogc3RyaW5nKTogYmlnaW50W10ge1xuICAgIHJldHVybiBpcEFkZHJlc3Muc3BsaXQoJzonKS5tYXAoKHBhcnQpID0+IEJpZ0ludChgMHgke3BhcnQucGFkU3RhcnQoNCwgJzAnKX1gIHx8ICcwJykpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIE1pbmltdW0gSVB2NiBhZGRyZXNzIGZvciBhIHByb3ZpZGVkIENJRFJcbiAgICovXG4gIHB1YmxpYyBtaW5JcCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN0YXJ0SVAgPSBbLi4udGhpcy5uZXR3b3JrUGFydF07XG4gICAgZm9yIChsZXQgaSA9IHRoaXMubmV0d29ya1BhcnQubGVuZ3RoOyBpIDwgODsgaSsrKSB7XG4gICAgICBzdGFydElQLnB1c2goQmlnSW50KDApKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YXJ0SVAubWFwKHRoaXMuZm9ybWF0SVB2NlBhcnQpLmpvaW4oJzonKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIHRoZSBtYXhpbXVtIElQdjYgYWRkcmVzcyBpbiB0aGUgQ0lEUiBibG9ja1xuICAgKiBAcmV0dXJucyBUaGUgbWF4aW11bSBJUHY2IGFkZHJlc3MgYXMgYSBzdHJpbmdcbiAgICovXG4gIHB1YmxpYyBtYXhJcCgpOiBzdHJpbmcge1xuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZSBob3cgbWFueSAxNi1iaXQgYmxvY2tzIGFyZSBuZWVkZWQgZm9yIHRoZSBuZXR3b3JrIHBvcnRpb25cbiAgICAgKiBlLmcuIGZvciAvNTYsIG5ldHdvcmtQYXJ0TGVuZ3RoID0gY2VpbCg1Ni8xNikgPSA0IGJsb2Nrc1xuICAgICAqL1xuICAgIGNvbnN0IG5ldHdvcmtQYXJ0TGVuZ3RoID0gTWF0aC5jZWlsKHRoaXMuY2lkclByZWZpeCAvIDE2KTtcbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGUgcmVtYWluaW5nIGJpdHMgaW4gbGFzdCBuZXR3b3JrIGJsb2NrXG4gICAgICogZS5nLiBmb3IgLzU2LCByZW1haW5pbmdCaXRzID0gNTYgJSAxNiA9IDggYml0c1xuICAgICAqL1xuICAgIGNvbnN0IHJlbWFpbmluZ0JpdHMgPSB0aGlzLmNpZHJQcmVmaXggJSAxNjtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgY29weSBvZiBuZXR3b3JrIHBvcnRpb24gb2YgYWRkcmVzc1xuICAgICAqIGUuZy4gWzIwMDEsIGRiOCwgMCwgMF0gZm9yIDIwMDE6ZGI4OjovNTZcbiAgICAgKi9cbiAgICBjb25zdCBlbmRJUCA9IFsuLi50aGlzLm5ldHdvcmtQYXJ0XTtcblxuICAgIC8qKlxuICAgICAqIElmIHRoZXJlIGFyZSByZW1haW5pbmcgYml0cyBpbiBsYXN0IG5ldHdvcmsgYmxvY2ssXG4gICAgICogY3JlYXRlIGFwcHJvcHJpYXRlIGJpdG1hc2sgYW5kIGFwcGx5IHRvIGxhc3QgbmV0d29yayBibG9ja1xuICAgICAqIGUuZy4gZm9yIC81NjogbWFzayA9ICgxIDw8ICgxNi04KSkgLSAxID0gMHgwMEZGXG4gICAgICovXG4gICAgaWYgKHJlbWFpbmluZ0JpdHMgPiAwKSB7XG4gICAgICBjb25zdCBsYXN0TmV0d29ya0luZGV4ID0gbmV0d29ya1BhcnRMZW5ndGggLSAxO1xuICAgICAgY29uc3QgbWFzayA9IChCaWdJbnQoMSkgPDwgQmlnSW50KDE2IC0gcmVtYWluaW5nQml0cykpIC0gQmlnSW50KDEpO1xuICAgICAgLyoqXG4gICAgICAgKiBBcHBseSBiaXRtYXNrIHRvIGxhc3QgbmV0d29yayBibG9jayB1c2luZyBiaXR3aXNlIE9SXG4gICAgICAgKiBlLmcuIGlmIGxhc3ROZXR3b3JrSW5kZXg9MyBhbmQgbWFzaz0weDAwRkY6XG4gICAgICAgKiBuZXR3b3JrUGFydFszXT0weDAwMDAgfCAweDAwRkYgPSAweDAwRkZcbiAgICAgICAqL1xuICAgICAgZW5kSVBbbGFzdE5ldHdvcmtJbmRleF0gPSB0aGlzLm5ldHdvcmtQYXJ0W2xhc3ROZXR3b3JrSW5kZXhdIHwgbWFzaztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaWxsIHJlbWFpbmluZyBibG9ja3Mgd2l0aCBtYXhpbXVtIHZhbHVlIDB4RkZGRlxuICAgICAqIGUuZy4gWzIwMDEsIGRiOCwgMCwgZmYsIGZmZmYsIGZmZmYsIGZmZmYsIGZmZmZdXG4gICAgICovXG4gICAgZm9yIChsZXQgaSA9IG5ldHdvcmtQYXJ0TGVuZ3RoOyBpIDwgODsgaSsrKSB7XG4gICAgICBlbmRJUC5wdXNoKEJpZ0ludCgnMHhmZmZmJykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnQgYmxvY2tzIHRvIGhleCBzdHJpbmdzIGFuZCBqb2luIHdpdGggY29sb25zXG4gICAgICogZS5nLiAyMDAxOmRiODowOmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmZcbiAgICAgKi9cbiAgICByZXR1cm4gZW5kSVAubWFwKHRoaXMuZm9ybWF0SVB2NlBhcnQpLmpvaW4oJzonKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0SVB2NlBhcnQgPSAocGFydDogYmlnaW50KSA9PiBwYXJ0LnRvU3RyaW5nKDE2KS5wYWRTdGFydCg0LCAnMCcpO1xuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gcmFuZ2UxIElwdjYgQ0lEUiByYW5nZSB0byBjb21wYXJlXG4gICAqIEBwYXJhbSByYW5nZTIgSXB2NiBDSURSIHJhbmdlIHRvIGNvbXBhcmVcbiAgICogQHJldHVybnMgdHJ1ZSBpZiB0d28gcmFuZ2VzIG92ZXJsYXAsIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgcHVibGljIHJhbmdlc092ZXJsYXAocmFuZ2UxOiBzdHJpbmcsIHJhbmdlMjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgLy8gQ3JlYXRlIG5ldyBDaWRyQmxvY2tJcHY2IGluc3RhbmNlcyBmb3IgYm90aCByYW5nZXNcbiAgICBjb25zdCBjaWRyMSA9IG5ldyBDaWRyQmxvY2tJcHY2KHJhbmdlMSk7XG4gICAgY29uc3QgY2lkcjIgPSBuZXcgQ2lkckJsb2NrSXB2NihyYW5nZTIpO1xuXG4gICAgLy8gQ29udmVydCBtaW4gYW5kIG1heCBJUHMgdG8gbnVtZXJpYyB2YWx1ZXMgZm9yIGNvbXBhcmlzb25cbiAgICBjb25zdCBzdGFydDEgPSB0aGlzLmlwdjZUb051bWJlcihjaWRyMS5taW5JcCgpKTtcbiAgICBjb25zdCBlbmQxID0gdGhpcy5pcHY2VG9OdW1iZXIoY2lkcjEubWF4SXAoKSk7XG4gICAgY29uc3Qgc3RhcnQyID0gdGhpcy5pcHY2VG9OdW1iZXIoY2lkcjIubWluSXAoKSk7XG4gICAgY29uc3QgZW5kMiA9IHRoaXMuaXB2NlRvTnVtYmVyKGNpZHIyLm1heElwKCkpO1xuXG4gICAgLy8gQ2hlY2sgZm9yIG92ZXJsYXBcbiAgICByZXR1cm4gKHN0YXJ0MSA8PSBlbmQyKSAmJiAoc3RhcnQyIDw9IGVuZDEpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIENvbnZlcnRzIGdpdmVuIGlwdjYgYWRkcmVzcyByYW5nZSB0byBiaWcgaW50IG51bWJlclxuICAgKi9cbiAgcHJpdmF0ZSBpcHY2VG9OdW1iZXIoaXB2NkFkZHJlc3M6IHN0cmluZyk6IGJpZ2ludCB7XG4gICAgY29uc3QgYmxvY2tzID0gdGhpcy5wYXJzZUJpZ0ludFBhcnRzKGlwdjZBZGRyZXNzKTtcbiAgICBsZXQgaXB2Nk51bWJlciA9IEJpZ0ludCgwKTtcbiAgICBmb3IgKGNvbnN0IGJsb2NrIG9mIGJsb2Nrcykge1xuICAgICAgLyogdHNsaW50OmRpc2FibGU6bm8tYml0d2lzZSAqL1xuICAgICAgaXB2Nk51bWJlciA9IChpcHY2TnVtYmVyIDw8IEJpZ0ludCgxNikpICsgYmxvY2s7XG4gICAgfVxuICAgIHJldHVybiBpcHY2TnVtYmVyO1xuICB9XG59XG4iXX0=
@@ -1,10 +1,10 @@
1
1
  import { Resource } from 'aws-cdk-lib';
2
2
  import { ClientVpnEndpoint, ClientVpnEndpointOptions, EnableVpnGatewayOptions, FlowLog, FlowLogOptions, GatewayVpcEndpoint, GatewayVpcEndpointOptions, InterfaceVpcEndpoint, InterfaceVpcEndpointOptions, ISubnet, IVpc, SelectedSubnets, SubnetSelection, VpnConnection, VpnConnectionOptions, VpnConnectionType } from 'aws-cdk-lib/aws-ec2';
3
+ import { VPCReference } from 'aws-cdk-lib/aws-ec2/lib/ec2.generated';
4
+ import { Role } from 'aws-cdk-lib/aws-iam';
3
5
  import { DependencyGroup, IDependable } from 'constructs';
4
6
  import { EgressOnlyInternetGateway, InternetGateway, NatGateway, NatGatewayOptions, VPCPeeringConnection, VPCPeeringConnectionOptions, VPNGatewayV2 } from './route';
5
- import { Role } from 'aws-cdk-lib/aws-iam';
6
7
  import { IVPCCidrBlock } from './vpc-v2';
7
- import { VPCReference } from 'aws-cdk-lib/aws-ec2/lib/ec2.generated';
8
8
  /**
9
9
  * Options to define EgressOnlyInternetGateway for VPC
10
10
  */
@@ -5,17 +5,17 @@ const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
5
5
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
6
  const aws_cdk_lib_1 = require("aws-cdk-lib");
7
7
  const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
8
- const util_1 = require("./util");
8
+ const aws_iam_1 = require("aws-cdk-lib/aws-iam");
9
9
  const constructs_1 = require("constructs");
10
10
  const route_1 = require("./route");
11
- const aws_iam_1 = require("aws-cdk-lib/aws-iam");
11
+ const util_1 = require("./util");
12
12
  /**
13
13
  * Base class for creating a VPC (Virtual Private Cloud) in AWS.
14
14
  *
15
15
  * For more information, see the {@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.Vpc.html|AWS CDK Documentation on VPCs}.
16
16
  */
17
17
  class VpcV2Base extends aws_cdk_lib_1.Resource {
18
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.VpcV2Base", version: "2.231.0-alpha.0" };
18
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.VpcV2Base", version: "2.232.1-alpha.0" };
19
19
  /**
20
20
  * List of public subnets in this VPC
21
21
  */
@@ -530,4 +530,4 @@ function tap(x, fn) {
530
530
  fn(x);
531
531
  return x;
532
532
  }
533
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjLXYyLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ2cGMtdjItYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUEwRTtBQUMxRSxpREF1QjZCO0FBQzdCLGlDQUFtRjtBQUNuRiwyQ0FBa0Y7QUFDbEYsbUNBVWlCO0FBRWpCLGlEQUFzRjtBQWdNdEY7Ozs7R0FJRztBQUNILE1BQXNCLFNBQVUsU0FBUSxzQkFBUTs7SUFnQjlDOztPQUVHO0lBQ2EsYUFBYSxHQUFjLEVBQUUsQ0FBQztJQUU5Qzs7T0FFRztJQUNhLGNBQWMsR0FBYyxFQUFFLENBQUM7SUFPL0M7O09BRUc7SUFDYSxpQkFBaUIsR0FBYSxFQUFFLENBQUM7SUFPakQ7Ozs7T0FJRztJQUNnQixnQ0FBZ0MsR0FBRyxJQUFJLDRCQUFlLEVBQUUsQ0FBQztJQXNDNUU7O09BRUc7SUFDTywwQkFBMEIsR0FBWSxLQUFLLENBQUM7SUFFdEQ7OztPQUdHO0lBQ08sYUFBYSxDQUFVO0lBRWpDOzs7T0FHRztJQUNPLGtCQUFrQixDQUFVO0lBRXRDOzs7T0FHRztJQUNPLDRCQUE0QixDQUFVO0lBRWhEOzs7OztPQUtHO0lBQ0ksYUFBYSxDQUFDLFlBQTZCLEVBQUU7UUFDbEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV6QyxPQUFPO1lBQ0wsU0FBUyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1lBQ3ZDLElBQUksaUJBQWlCLEtBQWUsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xGLCtCQUErQixFQUFFLEdBQUcs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QUksQ0FBQyxHQUFHLHVCQUFVLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUNsRCxDQUFDO2dCQUNELE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQztTQUNGLENBQUMsQ0FBQztLQUNKO0lBRUQ7O09BRUc7SUFDSSxHQUFHLENBQUMsR0FBZ0I7UUFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDNUI7Q0FDRjtBQUVEOztHQUVHO0FBQ0gsU0FBUyxHQUFHLENBQUksQ0FBSSxFQUFFLEVBQWtCO0lBQ3RDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFubm90YXRpb25zLCBBd3MsIFJlc291cmNlLCBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQge1xuICBDZm5WUENHYXRld2F5QXR0YWNobWVudCxcbiAgQ2ZuVlBOR2F0ZXdheVJvdXRlUHJvcGFnYXRpb24sXG4gIENsaWVudFZwbkVuZHBvaW50LFxuICBDbGllbnRWcG5FbmRwb2ludE9wdGlvbnMsXG4gIEVuYWJsZVZwbkdhdGV3YXlPcHRpb25zLFxuICBGbG93TG9nLFxuICBGbG93TG9nT3B0aW9ucyxcbiAgRmxvd0xvZ1Jlc291cmNlVHlwZSxcbiAgR2F0ZXdheVZwY0VuZHBvaW50LFxuICBHYXRld2F5VnBjRW5kcG9pbnRPcHRpb25zLFxuICBJbnRlcmZhY2VWcGNFbmRwb2ludCxcbiAgSW50ZXJmYWNlVnBjRW5kcG9pbnRPcHRpb25zLFxuICBJU3VibmV0LFxuICBJVnBjLFxuICBTZWxlY3RlZFN1Ym5ldHMsXG4gIFN1Ym5ldEZpbHRlcixcbiAgU3VibmV0U2VsZWN0aW9uLFxuICBTdWJuZXRUeXBlLFxuICBWcG5Db25uZWN0aW9uLFxuICBWcG5Db25uZWN0aW9uT3B0aW9ucyxcbiAgVnBuQ29ubmVjdGlvblR5cGUsXG4gIFZwbkdhdGV3YXksXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0IHsgYWxsUm91dGVUYWJsZUlkcywgZmxhdHRlbiwgc3VibmV0R3JvdXBOYW1lRnJvbUNvbnN0cnVjdElkIH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCB7IERlcGVuZGFibGUsIERlcGVuZGVuY3lHcm91cCwgSUNvbnN0cnVjdCwgSURlcGVuZGFibGUgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7XG4gIEVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXksXG4gIEludGVybmV0R2F0ZXdheSxcbiAgTmF0Q29ubmVjdGl2aXR5VHlwZSxcbiAgTmF0R2F0ZXdheSxcbiAgTmF0R2F0ZXdheU9wdGlvbnMsXG4gIFJvdXRlLFxuICBWUENQZWVyaW5nQ29ubmVjdGlvbixcbiAgVlBDUGVlcmluZ0Nvbm5lY3Rpb25PcHRpb25zLFxuICBWUE5HYXRld2F5VjIsXG59IGZyb20gJy4vcm91dGUnO1xuaW1wb3J0IHsgSVN1Ym5ldFYyIH0gZnJvbSAnLi9zdWJuZXQtdjInO1xuaW1wb3J0IHsgQWNjb3VudFByaW5jaXBhbCwgRWZmZWN0LCBQb2xpY3lTdGF0ZW1lbnQsIFJvbGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IElWUENDaWRyQmxvY2sgfSBmcm9tICcuL3ZwYy12Mic7XG5pbXBvcnQgeyBWUENSZWZlcmVuY2UgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyL2xpYi9lYzIuZ2VuZXJhdGVkJztcblxuLyoqXG4gKiBPcHRpb25zIHRvIGRlZmluZSBFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5IGZvciBWUENcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBMaXN0IG9mIHN1Ym5ldHMgd2hlcmUgcm91dGUgdG8gRUdXIHdpbGwgYmUgYWRkZWRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyByb3V0ZSBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSBzdWJuZXRzPzogU3VibmV0U2VsZWN0aW9uW107XG5cbiAgLyoqXG4gICAqIERlc3RpbmF0aW9uIElwdjYgYWRkcmVzcyBmb3IgRUdXIHJvdXRlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gJzo6LzAnIGFsbCBJcHY2IHRyYWZmaWNcbiAgICovXG4gIHJlYWRvbmx5IGRlc3RpbmF0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgbmFtZSBvZiB0aGUgZWdyZXNzLW9ubHkgaW50ZXJuZXQgZ2F0ZXdheS5cbiAgICogUHJvdmlkZWQgbmFtZSB3aWxsIGJlIHVzZWQgZm9yIHRhZ2dpbmdcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBuYW1lIHRhZyBhc3NvY2lhdGVkIGFuZCBwcm92aXNpb25lZCB3aXRob3V0IGEgcmVzb3VyY2UgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgZWdyZXNzT25seUludGVybmV0R2F0ZXdheU5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyB0byBkZWZpbmUgSW50ZXJuZXRHYXRld2F5IGZvciBWUENcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlcm5ldEdhdGV3YXlPcHRpb25ze1xuXG4gIC8qKlxuICAgKiBEZXN0aW5hdGlvbiBJcHY2IGFkZHJlc3MgZm9yIEVHVyByb3V0ZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtICcwLjAuMC4wJyBhbGwgSXB2NCB0cmFmZmljXG4gICAqL1xuICByZWFkb25seSBpcHY0RGVzdGluYXRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlc3RpbmF0aW9uIElwdjYgYWRkcmVzcyBmb3IgRUdXIHJvdXRlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gJzo6LzAnIGFsbCBJcHY2IHRyYWZmaWNcbiAgICovXG4gIHJlYWRvbmx5IGlwdjZEZXN0aW5hdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlc291cmNlIG5hbWUgb2YgdGhlIGludGVybmV0IGdhdGV3YXkuXG4gICAqIFByb3ZpZGVkIG5hbWUgd2lsbCBiZSB1c2VkIGZvciB0YWdnaW5nXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcHJvdmlzaW9uZWQgd2l0aG91dCBhIHJlc291cmNlIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGludGVybmV0R2F0ZXdheU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIExpc3Qgb2Ygc3VibmV0cyB3aGVyZSByb3V0ZSB0byBJR1cgd2lsbCBiZSBhZGRlZFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHJvdXRlIGNyZWF0ZWQgZm9yIGFsbCBzdWJuZXRzIHdpdGggVHlwZSBgU3VibmV0VHlwZS5QdWJsaWNgXG4gICAqL1xuICByZWFkb25seSBzdWJuZXRzPzogU3VibmV0U2VsZWN0aW9uW107XG59XG5cbi8qKlxuICogT3B0aW9ucyB0byBkZWZpbmUgVlBOR2F0ZXdheVYyIGZvciBWUENcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWUE5HYXRld2F5VjJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIFZQTiBjb25uZWN0aW9uIHRoZSB2aXJ0dWFsIHByaXZhdGUgZ2F0ZXdheSBzdXBwb3J0cy5cbiAgICogQHNlZSBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1lYzItdnBuZ2F0ZXdheS5odG1sI2Nmbi1lYzItdnBuZ2F0ZXdheS10eXBlXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBWcG5Db25uZWN0aW9uVHlwZTtcblxuICAvKipcbiAgICogVGhlIHByaXZhdGUgQXV0b25vbW91cyBTeXN0ZW0gTnVtYmVyIChBU04pIGZvciB0aGUgQW1hem9uIHNpZGUgb2YgYSBCR1Agc2Vzc2lvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBBU04gc2V0IGZvciBCR1Agc2Vzc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgYW1hem9uU2lkZUFzbj86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHJlc291cmNlIG5hbWUgb2YgdGhlIFZQTiBnYXRld2F5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHJlc291cmNlIHByb3Zpc2lvbmVkIHdpdGhvdXQgYW55IG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHZwbkdhdGV3YXlOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTdWJuZXRzIHdoZXJlIHRoZSByb3V0ZSBwcm9wYWdhdGlvbiBzaG91bGQgYmUgYWRkZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gcHJvcG9nYXRpb24gZm9yIHJvdXRlc1xuICAgKi9cbiAgcmVhZG9ubHkgdnBuUm91dGVQcm9wYWdhdGlvbj86IFN1Ym5ldFNlbGVjdGlvbltdO1xufVxuXG4vKipcbiAqIFBsYWNlaG9sZGVyIHRvIHNlZSB3aGF0IGV4dHJhIHByb3BzIHdlIG1pZ2h0IG5lZWQsXG4gKiB3aWxsIGJlIGFkZGVkIHRvIG9yaWdpbmFsIElWUENcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJVnBjVjIgZXh0ZW5kcyBJVnBjIHtcbiAgLyoqXG4gICAqIFRoZSBzZWNvbmRhcnkgQ0lEUiBibG9ja3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBWUEMuXG4gICAqXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIHtAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL2xhdGVzdC91c2VyZ3VpZGUvdnBjLWNpZHItYmxvY2tzLmh0bWwjdnBjLXJlc2l6ZX0uXG4gICAqL1xuICByZWFkb25seSBzZWNvbmRhcnlDaWRyQmxvY2s/OiBJVlBDQ2lkckJsb2NrW107XG5cbiAgLyoqXG4gICAqIFRoZSBwcmltYXJ5IElQdjQgQ0lEUiBibG9jayBhc3NvY2lhdGVkIHdpdGggdGhlIFZQQy5cbiAgICogTmVlZGVkIGluIG9yZGVyIHRvIHZhbGlkYXRlIHRoZSB2cGMgcmFuZ2Ugb2Ygc3VibmV0XG4gICAqIGN1cnJlbnQgcHJvcCB2cGNDaWRyQmxvY2sgcmVmZXJzIHRvIHRoZSB0b2tlbiB2YWx1ZVxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3ZwYy9sYXRlc3QvdXNlcmd1aWRlL3ZwYy1jaWRyLWJsb2Nrcy5odG1sI3ZwYy1zaXppbmctaXB2NH0uXG4gICAqL1xuICByZWFkb25seSBpcHY0Q2lkckJsb2NrOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHRvIG92ZXJyaWRlIGluZmVycmVkIHJlZ2lvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGN1cnJlbnQgc3RhY2sncyBlbnZpcm9ubWVudCByZWdpb25cbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIEFXUyBhY2NvdW50IHRoYXQgb3ducyB0aGUgVlBDXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIGFjY291bnQgaWQgb2YgdGhlIHBhcmVudCBzdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgb3duZXJBY2NvdW50SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogSVB2NCBDSURSIHByb3Zpc2lvbmVkIHVuZGVyIHBvb2xcbiAgICogUmVxdWlyZWQgdG8gY2hlY2sgZm9yIG92ZXJsYXBwaW5nIENJRFJzIGFmdGVyIHByb3Zpc2lvbmluZ1xuICAgKiBpcyBjb21wbGV0ZSB1bmRlciBJUEFNIHBvb2xcbiAgICovXG4gIHJlYWRvbmx5IGlwdjRJcGFtUHJvdmlzaW9uZWRDaWRycz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBWcGNOYW1lIHRvIGJlIHVzZWQgZm9yIHRhZ2dpbmcgaXRzIGNvbXBvbmVudHNcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgdnBjTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQWRkIGFuIEVncmVzcyBvbmx5IEludGVybmV0IEdhdGV3YXkgdG8gY3VycmVudCBWUEMuXG4gICAqIENhbiBvbmx5IGJlIHVzZWQgZm9yIGlwdjYgZW5hYmxlZCBWUENzLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3ZwYy9sYXRlc3QvdXNlcmd1aWRlL2VncmVzcy1vbmx5LWludGVybmV0LWdhdGV3YXktYmFzaWNzLmh0bWx9LlxuICAgKi9cbiAgYWRkRWdyZXNzT25seUludGVybmV0R2F0ZXdheShvcHRpb25zPzogRWdyZXNzT25seUludGVybmV0R2F0ZXdheU9wdGlvbnMpOiBFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5O1xuXG4gIC8qKlxuICAgKiBBZGRzIGFuIEludGVybmV0IEdhdGV3YXkgdG8gY3VycmVudCBWUEMuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIHtAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL2xhdGVzdC91c2VyZ3VpZGUvdnBjLWlndy1pbnRlcm5ldC1hY2Nlc3MuaHRtbH0uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVmaW5lcyByb3V0ZSBmb3IgYWxsIGlwdjQoJzAuMC4wLjAnKSBhbmQgaXB2NiBhZGRyZXNzZXMoJzo6LzAnKVxuICAgKi9cbiAgYWRkSW50ZXJuZXRHYXRld2F5KG9wdGlvbnM/OiBJbnRlcm5ldEdhdGV3YXlPcHRpb25zKTogSW50ZXJuZXRHYXRld2F5O1xuXG4gIC8qKlxuICAgKiBBZGRzIFZQTiBHYXRld2F5IHRvIFZQQyBhbmQgc2V0IHJvdXRlIHByb3BvZ2F0aW9uLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWVjMi12cG5nYXRld2F5Lmh0bWx9LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHJvdXRlIHByb3BvZ2F0aW9uXG4gICAqL1xuICBlbmFibGVWcG5HYXRld2F5VjIob3B0aW9uczogVlBOR2F0ZXdheVYyT3B0aW9ucyk6IFZQTkdhdGV3YXlWMjtcblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBOQVQgR2F0ZXdheSB0byBWUENcbiAgICogQSBOQVQgZ2F0ZXdheSBpcyBhIE5ldHdvcmsgQWRkcmVzcyBUcmFuc2xhdGlvbiAoTkFUKSBzZXJ2aWNlLiBOQVQgR2F0ZXdheSBDb25uZWN0aXZpdHkgY2FuIGJlIG9mIHR5cGUgYFB1YmxpY2Agb3IgYFByaXZhdGVgLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3ZwYy9sYXRlc3QvdXNlcmd1aWRlL3ZwYy1uYXQtZ2F0ZXdheS5odG1sfS5cbiAgICpcbiAgICogQGRlZmF1bHQgQ29ubmVjdGl2aXR5VHlwZS5QdWJsaWNcbiAgICovXG4gIGFkZE5hdEdhdGV3YXkob3B0aW9uczogTmF0R2F0ZXdheU9wdGlvbnMpOiBOYXRHYXRld2F5O1xuXG4gIC8qKlxuICAgKiBBZGRzIGEgbmV3IHJvbGUgdG8gYWNjZXB0b3IgVlBDIGFjY291bnRcbiAgICogQSBjcm9zcyBhY2NvdW50IHJvbGUgaXMgcmVxdWlyZWQgZm9yIHRoZSBWUEMgdG8gcGVlciB3aXRoIGFub3RoZXIgYWNjb3VudC5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUge0BsaW5rIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL3BlZXItd2l0aC12cGMtaW4tYW5vdGhlci1hY2NvdW50Lmh0bWx9LlxuICAgKi9cbiAgY3JlYXRlQWNjZXB0b3JWcGNSb2xlKHJlcXVlc3RvckFjY291bnRJZDogc3RyaW5nKTogUm9sZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBwZWVyaW5nIGNvbm5lY3Rpb25cbiAgICogQSBwZWVyaW5nIGNvbm5lY3Rpb24gaXMgYSBwcml2YXRlIHZpcnR1YWwgbmV0d29yayBlc3RhYmxpc2hlZCBiZXR3ZWVuIHR3byBWUENzLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3ZwYy9sYXRlc3QvcGVlcmluZy93aGF0LWlzLXZwYy1wZWVyaW5nLmh0bWx9LlxuICAgKi9cbiAgY3JlYXRlUGVlcmluZ0Nvbm5lY3Rpb24oaWQ6IHN0cmluZywgb3B0aW9uczogVlBDUGVlcmluZ0Nvbm5lY3Rpb25PcHRpb25zKTogVlBDUGVlcmluZ0Nvbm5lY3Rpb247XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgY3JlYXRpbmcgYSBWUEMgKFZpcnR1YWwgUHJpdmF0ZSBDbG91ZCkgaW4gQVdTLlxuICpcbiAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIHtAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2RrL2FwaS92Mi9kb2NzL2F3cy1jZGstbGliLmF3c19lYzIuVnBjLmh0bWx8QVdTIENESyBEb2N1bWVudGF0aW9uIG9uIFZQQ3N9LlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVnBjVjJCYXNlIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJVnBjVjIge1xuICAvKipcbiAgICogSWRlbnRpZmllciBmb3IgdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB2cGNJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBcm4gb2YgdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB2cGNBcm46IHN0cmluZztcblxuICAvKipcbiAgICogQ0lEUiByYW5nZSBmb3IgdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB2cGNDaWRyQmxvY2s6IHN0cmluZztcblxuICAvKipcbiAgICogTGlzdCBvZiBwdWJsaWMgc3VibmV0cyBpbiB0aGlzIFZQQ1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHB1YmxpY1N1Ym5ldHM6IElTdWJuZXRbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIHByaXZhdGUgc3VibmV0cyBpbiB0aGlzIFZQQ1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByaXZhdGVTdWJuZXRzOiBJU3VibmV0W10gPSBbXTtcblxuICAvKipcbiAgICogTGlzdCBvZiBpc29sYXRlZCBzdWJuZXRzIGluIHRoaXMgVlBDXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgaXNvbGF0ZWRTdWJuZXRzOiBJU3VibmV0W107XG5cbiAgLyoqXG4gICAqIEFacyBmb3IgdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdmFpbGFiaWxpdHlab25lczogc3RyaW5nW10gPSBbXTtcblxuICAvKipcbiAgICogRGVwZW5kYWJsZSB0aGF0IGNhbiBiZSBkZXBlbmRlZCB1cG9uIHRvIGZvcmNlIGludGVybmV0IGNvbm5lY3Rpdml0eSBlc3RhYmxpc2hlZCBvbiB0aGUgVlBDXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgaW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZDogSURlcGVuZGFibGU7XG5cbiAgLyoqXG4gICAqIERlcGVuZGFibGUgdGhhdCBjYW4gYmUgZGVwZW5kZWQgdXBvbiB0byBmb3JjZSBpbnRlcm5ldCBjb25uZWN0aXZpdHkgZXN0YWJsaXNoZWQgb24gdGhlIFZQQ1xuICAgKiBBZGQgaWd3IHRvIHRoaXMgaWYgaXRzIGEgcHVibGljIHN1Ym5ldFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBfaW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZCA9IG5ldyBEZXBlbmRlbmN5R3JvdXAoKTtcblxuICAvKipcbiAgICogU2Vjb25kYXJ5IElQcyBmb3IgdGhlIFZQQywgY2FuIGJlIG11bHRpcGxlIElwdjQgb3IgSXB2NlxuICAgKiBJcHY0IHNob3VsZCBiZSB3aXRoaW4gUkZDIzE5MTggcmFuZ2VcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBzZWNvbmRhcnlDaWRyQmxvY2s/OiBJVlBDQ2lkckJsb2NrW107XG5cbiAgLyoqXG4gICAqIFRoZSBwcmltYXJ5IElQdjQgQ0lEUiBibG9jayBhc3NvY2lhdGVkIHdpdGggdGhlIFZQQy5cbiAgICogTmVlZGVkIGluIG9yZGVyIHRvIHZhbGlkYXRlIHRoZSB2cGMgcmFuZ2Ugb2Ygc3VibmV0XG4gICAqIGN1cnJlbnQgcHJvcCB2cGNDaWRyQmxvY2sgcmVmZXJzIHRvIHRoZSB0b2tlbiB2YWx1ZVxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3ZwYy9sYXRlc3QvdXNlcmd1aWRlL3ZwYy1jaWRyLWJsb2Nrcy5odG1sI3ZwYy1zaXppbmctaXB2NH0uXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgaXB2NENpZHJCbG9jazogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBWcGNOYW1lIHRvIGJlIHVzZWQgZm9yIHRhZ2dpbmcgaXRzIGNvbXBvbmVudHNcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB2cGNOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZWdpb24gZm9yIHRoaXMgVlBDXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElkZW50aWZpZXIgb2YgdGhlIG93bmVyIGZvciB0aGlzIFZQQ1xuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IG93bmVyQWNjb3VudElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElQdjQgQ0lEUiBwcm92aXNpb25lZCB1bmRlciBwb29sXG4gICAqIFJlcXVpcmVkIHRvIGNoZWNrIGZvciBvdmVybGFwcGluZyBDSURScyBhZnRlciBwcm92aXNpb25pbmdcbiAgICogaXMgY29tcGxldGUgdW5kZXIgSVBBTSBwb29sXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgaXB2NElwYW1Qcm92aXNpb25lZENpZHJzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIElmIHRoaXMgaXMgc2V0IHRvIHRydWUsIGRvbid0IGVycm9yIG91dCBvbiB0cnlpbmcgdG8gc2VsZWN0IHN1Ym5ldHNcbiAgICovXG4gIHByb3RlY3RlZCBpbmNvbXBsZXRlU3VibmV0RGVmaW5pdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBNdXRhYmxlIHByaXZhdGUgZmllbGQgZm9yIHRoZSB2cG5HYXRld2F5SWRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm90ZWN0ZWQgX3ZwbkdhdGV3YXlJZD86IHN0cmluZztcblxuICAvKipcbiAgICogTXV0YWJsZSBwcml2YXRlIGZpZWxkIGZvciB0aGUgaW50ZXJuZXRHYXRld2F5SWRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm90ZWN0ZWQgX2ludGVybmV0R2F0ZXdheUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNdXRhYmxlIHByaXZhdGUgZmllbGQgZm9yIHRoZSBFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5SWRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm90ZWN0ZWQgX2VncmVzc09ubHlJbnRlcm5ldEdhdGV3YXlJZD86IHN0cmluZztcblxuICAvKipcbiAgICogUmV0dXJuIGluZm9ybWF0aW9uIG9uIHRoZSBzdWJuZXRzIGFwcHJvcHJpYXRlIGZvciB0aGUgZ2l2ZW4gc2VsZWN0aW9uIHN0cmF0ZWd5XG4gICAqXG4gICAqIFJlcXVpcmVzIHRoYXQgYXQgbGVhc3Qgb25lIHN1Ym5ldCBpcyBtYXRjaGVkLCB0aHJvd3MgYSBkZXNjcmlwdGl2ZVxuICAgKiBlcnJvciBtZXNzYWdlIG90aGVyd2lzZS5cbiAgICovXG4gIHB1YmxpYyBzZWxlY3RTdWJuZXRzKHNlbGVjdGlvbjogU3VibmV0U2VsZWN0aW9uID0ge30pOiBTZWxlY3RlZFN1Ym5ldHMge1xuICAgIGNvbnN0IHN1Ym5ldHMgPSB0aGlzLnNlbGVjdFN1Ym5ldE9iamVjdHMoc2VsZWN0aW9uKTtcbiAgICBjb25zdCBwdWJzID0gbmV3IFNldCh0aGlzLnB1YmxpY1N1Ym5ldHMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Ym5ldElkczogc3VibmV0cy5tYXAocyA9PiBzLnN1Ym5ldElkKSxcbiAgICAgIGdldCBhdmFpbGFiaWxpdHlab25lcygpOiBzdHJpbmdbXSB7IHJldHVybiBzdWJuZXRzLm1hcChzID0+IHMuYXZhaWxhYmlsaXR5Wm9uZSk7IH0sXG4gICAgICBpbnRlcm5ldENvbm5lY3Rpdml0eUVzdGFibGlzaGVkOiB0YXAobmV3IENvbXBvc2l0ZURlcGVuZGFibGUoKSwgZCA9PiBzdWJuZXRzLmZvckVhY2gocyA9PiBkLmFkZChzLmludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQpKSksXG4gICAgICBzdWJuZXRzLFxuICAgICAgaGFzUHVibGljOiBzdWJuZXRzLnNvbWUocyA9PiBwdWJzLmhhcyhzKSksXG4gICAgICBpc1BlbmRpbmdMb29rdXA6IHRoaXMuaW5jb21wbGV0ZVN1Ym5ldERlZmluaXRpb24sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdnBjUmVmKCk6IFZQQ1JlZmVyZW5jZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZwY0lkOiB0aGlzLnZwY0lkLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIFZQTiBHYXRld2F5IHRvIHRoaXMgVlBDXG4gICAqIEBkZXByZWNhdGVkIHVzZSBlbmFibGVWcG5HYXRld2F5VjIgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBWUENWMi5Sb3V0ZVxuICAgKi9cbiAgcHVibGljIGVuYWJsZVZwbkdhdGV3YXkob3B0aW9uczogRW5hYmxlVnBuR2F0ZXdheU9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAodGhpcy52cG5HYXRld2F5SWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFZQTiBHYXRld2F5IGhhcyBhbHJlYWR5IGJlZW4gZW5hYmxlZC4nKTtcbiAgICB9XG5cbiAgICBjb25zdCB2cG5HYXRld2F5ID0gbmV3IFZwbkdhdGV3YXkodGhpcywgJ1ZwbkdhdGV3YXknLCB7XG4gICAgICBhbWF6b25TaWRlQXNuOiBvcHRpb25zLmFtYXpvblNpZGVBc24sXG4gICAgICB0eXBlOiBWcG5Db25uZWN0aW9uVHlwZS5JUFNFQ18xLFxuICAgIH0pO1xuXG4gICAgdGhpcy5fdnBuR2F0ZXdheUlkID0gdnBuR2F0ZXdheS5nYXRld2F5SWQ7XG5cbiAgICBjb25zdCBhdHRhY2htZW50ID0gbmV3IENmblZQQ0dhdGV3YXlBdHRhY2htZW50KHRoaXMsICdWUENWUE5HVycsIHtcbiAgICAgIHZwY0lkOiB0aGlzLnZwY0lkLFxuICAgICAgdnBuR2F0ZXdheUlkOiB0aGlzLl92cG5HYXRld2F5SWQsXG4gICAgfSk7XG5cbiAgICAvLyBQcm9wYWdhdGUgcm91dGVzIG9uIHJvdXRlIHRhYmxlcyBhc3NvY2lhdGVkIHdpdGggdGhlIHJpZ2h0IHN1Ym5ldHNcbiAgICBjb25zdCB2cG5Sb3V0ZVByb3BhZ2F0aW9uID0gb3B0aW9ucy52cG5Sb3V0ZVByb3BhZ2F0aW9uID8/IFt7fV07XG4gICAgY29uc3Qgcm91dGVUYWJsZUlkcyA9IGFsbFJvdXRlVGFibGVJZHMoZmxhdHRlbih2cG5Sb3V0ZVByb3BhZ2F0aW9uLm1hcChzID0+IHRoaXMuc2VsZWN0U3VibmV0cyhzKS5zdWJuZXRzKSkpO1xuXG4gICAgaWYgKHJvdXRlVGFibGVJZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICBBbm5vdGF0aW9ucy5vZih0aGlzKS5hZGRFcnJvcihgZW5hYmxlVnBuR2F0ZXdheTogbm8gc3VibmV0cyBtYXRjaGluZyBzZWxlY3Rpb246ICcke0pTT04uc3RyaW5naWZ5KHZwblJvdXRlUHJvcGFnYXRpb24pfScuIFNlbGVjdCBvdGhlciBzdWJuZXRzIHRvIGFkZCByb3V0ZXMgdG8uYCk7XG4gICAgfVxuXG4gICAgY29uc3Qgcm91dGVQcm9wYWdhdGlvbiA9IG5ldyBDZm5WUE5HYXRld2F5Um91dGVQcm9wYWdhdGlvbih0aGlzLCAnUm91dGVQcm9wYWdhdGlvbicsIHtcbiAgICAgIHJvdXRlVGFibGVJZHMsXG4gICAgICB2cG5HYXRld2F5SWQ6IHRoaXMuX3ZwbkdhdGV3YXlJZCxcbiAgICB9KTtcbiAgICAgIC8vIFRoZSBBV1M6OkVDMjo6VlBOR2F0ZXdheVJvdXRlUHJvcGFnYXRpb24gcmVzb3VyY2UgY2Fubm90IHVzZSB0aGUgVlBOIGdhdGV3YXlcbiAgICAgIC8vIHVudGlsIGl0IGhhcyBzdWNjZXNzZnVsbHkgYXR0YWNoZWQgdG8gdGhlIFZQQy5cbiAgICAgIC8vIFNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtZWMyLXZwbi1nYXRld2F5cm91dGVwcm9wLmh0bWxcbiAgICByb3V0ZVByb3BhZ2F0aW9uLm5vZGUuYWRkRGVwZW5kZW5jeShhdHRhY2htZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIFZQTkdBdGV3YXlWMiB0byB0aGlzIFZQQ1xuICAgKi9cbiAgcHVibGljIGVuYWJsZVZwbkdhdGV3YXlWMihvcHRpb25zOiBWUE5HYXRld2F5VjJPcHRpb25zKTogVlBOR2F0ZXdheVYyIHtcbiAgICBpZiAodGhpcy52cG5HYXRld2F5SWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFZQTiBHYXRld2F5IGhhcyBhbHJlYWR5IGJlZW4gZW5hYmxlZC4nKTtcbiAgICB9XG5cbiAgICBjb25zdCB2cG5HYXRld2F5ID0gbmV3IFZQTkdhdGV3YXlWMih0aGlzLCAnVnBuR2F0ZXdheScsIHtcbiAgICAgIHZwYzogdGhpcyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICB0aGlzLl9pbnRlcm5ldENvbm5lY3Rpdml0eUVzdGFibGlzaGVkLmFkZCh2cG5HYXRld2F5KTtcbiAgICB0aGlzLl92cG5HYXRld2F5SWQgPSB2cG5HYXRld2F5LnJvdXRlclRhcmdldElkO1xuXG4gICAgcmV0dXJuIHZwbkdhdGV3YXk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBWUE4gY29ubmVjdGlvbiB0byB0aGlzIFZQQ1xuICAgKi9cbiAgcHVibGljIGFkZFZwbkNvbm5lY3Rpb24oaWQ6IHN0cmluZywgb3B0aW9uczogVnBuQ29ubmVjdGlvbk9wdGlvbnMpOiBWcG5Db25uZWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IFZwbkNvbm5lY3Rpb24odGhpcywgaWQsIHtcbiAgICAgIHZwYzogdGhpcyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBjbGllbnQgVlBOIGVuZHBvaW50IHRvIHRoaXMgVlBDXG4gICAqL1xuICBwdWJsaWMgYWRkQ2xpZW50VnBuRW5kcG9pbnQoaWQ6IHN0cmluZywgb3B0aW9uczogQ2xpZW50VnBuRW5kcG9pbnRPcHRpb25zKTogQ2xpZW50VnBuRW5kcG9pbnQge1xuICAgIHJldHVybiBuZXcgQ2xpZW50VnBuRW5kcG9pbnQodGhpcywgaWQsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICB2cGM6IHRoaXMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBpbnRlcmZhY2UgZW5kcG9pbnQgdG8gdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyBhZGRJbnRlcmZhY2VFbmRwb2ludChpZDogc3RyaW5nLCBvcHRpb25zOiBJbnRlcmZhY2VWcGNFbmRwb2ludE9wdGlvbnMpOiBJbnRlcmZhY2VWcGNFbmRwb2ludCB7XG4gICAgcmV0dXJuIG5ldyBJbnRlcmZhY2VWcGNFbmRwb2ludCh0aGlzLCBpZCwge1xuICAgICAgdnBjOiB0aGlzLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgbmV3IGdhdGV3YXkgZW5kcG9pbnQgdG8gdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyBhZGRHYXRld2F5RW5kcG9pbnQoaWQ6IHN0cmluZywgb3B0aW9uczogR2F0ZXdheVZwY0VuZHBvaW50T3B0aW9ucyk6IEdhdGV3YXlWcGNFbmRwb2ludCB7XG4gICAgcmV0dXJuIG5ldyBHYXRld2F5VnBjRW5kcG9pbnQodGhpcywgaWQsIHtcbiAgICAgIHZwYzogdGhpcyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBFZ3Jlc3MgT25seSBJbnRlcm5ldCBHYXRld2F5IHRvIHRoaXMgVlBDIGFuZCBkZWZpbmVzIGEgbmV3IHJvdXRlXG4gICAqIHRvIHRoZSByb3V0ZSB0YWJsZSBvZiBnaXZlbiBzdWJuZXRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGluIGNhc2Ugb2Ygbm8gaW5wdXQgc3VibmV0cywgbm8gcm91dGUgaXMgY3JlYXRlZFxuICAgKi9cbiAgcHVibGljIGFkZEVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXkob3B0aW9ucz86IEVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXlPcHRpb25zKTogRWdyZXNzT25seUludGVybmV0R2F0ZXdheSB7XG4gICAgY29uc3QgZWd3ID0gbmV3IEVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXkodGhpcywgJ0VncmVzc09ubHlHVycsIHtcbiAgICAgIHZwYzogdGhpcyxcbiAgICAgIGVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXlOYW1lOiBvcHRpb25zPy5lZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5TmFtZSxcbiAgICB9KTtcbiAgICB0aGlzLl9lZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5SWQgPSBlZ3cucm91dGVyVGFyZ2V0SWQ7XG5cbiAgICBsZXQgdXNlSXB2NjtcbiAgICBpZiAodGhpcy5zZWNvbmRhcnlDaWRyQmxvY2spIHtcbiAgICAgIHVzZUlwdjYgPSAodGhpcy5zZWNvbmRhcnlDaWRyQmxvY2suc29tZSgoc2Vjb25kYXJ5QWRkcmVzcykgPT4gc2Vjb25kYXJ5QWRkcmVzcy5hbWF6b25Qcm92aWRlZElwdjZDaWRyQmxvY2sgPT09IHRydWUgfHxcbiAgICBzZWNvbmRhcnlBZGRyZXNzLmlwdjZJcGFtUG9vbElkICE9PSB1bmRlZmluZWQgfHwgc2Vjb25kYXJ5QWRkcmVzcy5pcHY2Q2lkckJsb2NrICE9PSB1bmRlZmluZWQpKTtcbiAgICB9XG5cbiAgICBpZiAoIXVzZUlwdjYpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRWdyZXNzIG9ubHkgSUdXIGNhbiBvbmx5IGJlIGFkZGVkIHRvIElwdjYgZW5hYmxlZCBWUEMnKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucz8uc3VibmV0cykge1xuICAgICAgLy8gVXNlIGhlbHBlciBmdW5jdGlvbiB0byBlbnN1cmUgdW5pcXVlIHN1Ym5ldHNcbiAgICAgIGNvbnN0IHN1Ym5ldHMgPSBmbGF0dGVuKG9wdGlvbnMuc3VibmV0cy5tYXAocyA9PiB0aGlzLnNlbGVjdFN1Ym5ldHMocykuc3VibmV0cykpO1xuICAgICAgdGhpcy5wcm9jZXNzU3VibmV0cyhzdWJuZXRzLCAoc3VibmV0KSA9PiB7XG4gICAgICAgIHRoaXMuY3JlYXRlRWdyZXNzUm91dGUoc3VibmV0LCBlZ3csIG9wdGlvbnMuZGVzdGluYXRpb24pO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBlZ3c7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHJvdXRlIGZvciBFR1cgd2l0aCBkZXN0aW5hdGlvbiBzZXQgdG8gb3V0Ym91bmQgSVB2NignOjovMCcpIG9yIGN1c3RvbSBpcHY2IGFkZHJlc3MuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVFZ3Jlc3NSb3V0ZShzdWJuZXQ6IElTdWJuZXRWMiwgZWd3OiBFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5LCBkZXN0aW5hdGlvbj86IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGRlc3RpbmF0aW9uSXB2NiA9IGRlc3RpbmF0aW9uID8/ICc6Oi8wJztcbiAgICBuZXcgUm91dGUodGhpcywgYCR7c3VibmV0Lm5vZGUuaWR9LUVncmVzc1JvdXRlYCwge1xuICAgICAgcm91dGVUYWJsZTogc3VibmV0LnJvdXRlVGFibGUsXG4gICAgICBkZXN0aW5hdGlvbjogZGVzdGluYXRpb25JcHY2LCAvLyBJUHY2IGRlZmF1bHQgcm91dGVcbiAgICAgIHRhcmdldDogeyBnYXRld2F5OiBlZ3cgfSxcbiAgICAgIHJvdXRlTmFtZTogJ0NES0VJR1dSb3V0ZScsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBJbnRlcm5ldCBHYXRld2F5IHRvIHRoaXMgVlBDXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gY3JlYXRlcyBhIG5ldyByb3V0ZSBmb3IgcHVibGljIHN1Ym5ldHMod2l0aCBhbGwgb3V0Ym91bmQgYWNjZXNzKSB0byB0aGUgSW50ZXJuZXQgR2F0ZXdheS5cbiAgICovXG4gIHB1YmxpYyBhZGRJbnRlcm5ldEdhdGV3YXkob3B0aW9ucz86IEludGVybmV0R2F0ZXdheU9wdGlvbnMpOiBJbnRlcm5ldEdhdGV3YXkge1xuICAgIGlmICh0aGlzLl9pbnRlcm5ldEdhdGV3YXlJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgSW50ZXJuZXQgR2F0ZXdheSBoYXMgYWxyZWFkeSBiZWVuIGVuYWJsZWQuJyk7XG4gICAgfVxuXG4gICAgY29uc3QgaWd3ID0gbmV3IEludGVybmV0R2F0ZXdheSh0aGlzLCAnSW50ZXJuZXRHYXRld2F5Jywge1xuICAgICAgdnBjOiB0aGlzLFxuICAgICAgaW50ZXJuZXRHYXRld2F5TmFtZTogb3B0aW9ucz8uaW50ZXJuZXRHYXRld2F5TmFtZSxcbiAgICB9KTtcblxuICAgIHRoaXMuX2ludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQuYWRkKGlndyk7XG4gICAgdGhpcy5faW50ZXJuZXRHYXRld2F5SWQgPSBpZ3cucm91dGVyVGFyZ2V0SWQ7XG5cbiAgICAvLyBBZGQgcm91dGVzIGZvciBzdWJuZXRzIGRlZmluZWQgYXMgYW4gaW5wdXRcbiAgICBpZiAob3B0aW9ucz8uc3VibmV0cykge1xuICAgICAgY29uc3Qgc3VibmV0cyA9IGZsYXR0ZW4ob3B0aW9ucy5zdWJuZXRzLm1hcChzID0+IHRoaXMuc2VsZWN0U3VibmV0cyhzKS5zdWJuZXRzKSk7XG4gICAgICAvLyBVc2UgaGVscGVyIGZ1bmN0aW9uIHRvIGVuc3VyZSB1bmlxdWUgc3VibmV0c1xuICAgICAgdGhpcy5wcm9jZXNzU3VibmV0cyhzdWJuZXRzLCAoc3VibmV0KSA9PiB7XG4gICAgICAgIHRoaXMuYWRkRGVmYXVsdEludGVybmV0Um91dGUoc3VibmV0LCBpZ3csIG9wdGlvbnMpO1xuICAgICAgfSk7XG4gICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gaW5wdXQgc3VibmV0cyBkZWZpbmVkLCBkZWZhdWx0IHJvdXRlIHdpbGwgYmUgYWRkZWQgdG8gYWxsIHB1YmxpYyBzdWJuZXRzXG4gICAgfSBlbHNlIGlmICghb3B0aW9ucz8uc3VibmV0cyAmJiB0aGlzLnB1YmxpY1N1Ym5ldHMpIHtcbiAgICAgIC8vIFRyYWNrIHJvdXRlIHRhYmxlcyB0aGF0IGhhdmUgYWxyZWFkeSBoYWQgcm91dGVzIGFkZGVkIHRvIHByZXZlbnQgZHVwbGljYXRlc1xuICAgICAgdGhpcy5wcm9jZXNzU3VibmV0cyh0aGlzLnB1YmxpY1N1Ym5ldHMsIChzdWJuZXQpID0+IHtcbiAgICAgICAgdGhpcy5hZGREZWZhdWx0SW50ZXJuZXRSb3V0ZShzdWJuZXQsIGlndywgb3B0aW9ucyk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGlndztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGRlZmF1bHQgcm91dGUgZm9yIHRoZSBpbnRlcm5ldCBnYXRld2F5XG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSBhZGREZWZhdWx0SW50ZXJuZXRSb3V0ZShzdWJuZXQ6IElTdWJuZXRWMiwgaWd3OiBJbnRlcm5ldEdhdGV3YXksIG9wdGlvbnM/OiBJbnRlcm5ldEdhdGV3YXlPcHRpb25zKTogdm9pZCB7XG4gICAgLy8gQWRkIGRlZmF1bHQgcm91dGUgdG8gSUdXIGZvciBJUHY2XG4gICAgaWYgKHN1Ym5ldC5pcHY2Q2lkckJsb2NrKSB7XG4gICAgICBuZXcgUm91dGUodGhpcywgYCR7c3VibmV0Lm5vZGUuaWR9LURlZmF1bHRJUHY2Um91dGVgLCB7XG4gICAgICAgIHJvdXRlVGFibGU6IHN1Ym5ldC5yb3V0ZVRhYmxlLFxuICAgICAgICBkZXN0aW5hdGlvbjogb3B0aW9ucz8uaXB2NkRlc3RpbmF0aW9uID8/ICc6Oi8wJyxcbiAgICAgICAgdGFyZ2V0OiB7IGdhdGV3YXk6IGlndyB9LFxuICAgICAgICByb3V0ZU5hbWU6ICdDREtEZWZhdWx0SVB2NlJvdXRlJyxcbiAgICAgIH0pO1xuICAgIH1cbiAgICAvLyBBZGQgZGVmYXVsdCByb3V0ZSB0byBJR1cgZm9yIElQdjRcbiAgICBuZXcgUm91dGUodGhpcywgYCR7c3VibmV0Lm5vZGUuaWR9LURlZmF1bHRSb3V0ZWAsIHtcbiAgICAgIHJvdXRlVGFibGU6IHN1Ym5ldC5yb3V0ZVRhYmxlLFxuICAgICAgZGVzdGluYXRpb246IG9wdGlvbnM/LmlwdjREZXN0aW5hdGlvbiA/PyAnMC4wLjAuMC8wJyxcbiAgICAgIHRhcmdldDogeyBnYXRld2F5OiBpZ3cgfSxcbiAgICAgIHJvdXRlTmFtZTogJ0NES0RlZmF1bHRJUHY0Um91dGUnLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBmdW5jdGlvbiB0byBwcm9jZXNzIHVuaXF1ZSBzdWJuZXRzIGFuZCByb3V0ZSB0YWJsZSBmb3IgYWRkaW5nIHJvdXRlc1xuICAgKi9cbiAgcHJpdmF0ZSBwcm9jZXNzU3VibmV0cyhcbiAgICBzdWJuZXRzOiBJU3VibmV0VjJbXSxcbiAgICByb3V0ZUhhbmRsZXI6IChzdWJuZXQ6IElTdWJuZXRWMikgPT4gdm9pZCxcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgcHJvY2Vzc2VkU3VibmV0cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGNvbnN0IHByb2Nlc3NlZFJvdXRlVGFibGVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgc3VibmV0cy5mb3JFYWNoKChzdWJuZXQpID0+IHtcbiAgICAgIGlmICghdGhpcy5wdWJsaWNTdWJuZXRzLmluY2x1ZGVzKHN1Ym5ldCkpIHtcbiAgICAgICAgQW5ub3RhdGlvbnMub2YodGhpcykuYWRkV2FybmluZ1YyKCdJbnRlcm5ldEdhdGV3YXlXYXJuaW5nJywgYEdpdmVuICR7c3VibmV0Lm5vZGUuaWR9IGlzIG5vdCBhIHB1YmxpYyBzdWJuZXQuIEludGVybmV0IEdhdGV3YXkgc2hvdWxkIGJlIGFkZGVkIG9ubHkgdG8gcHVibGljIHN1Ym5ldHMuYCk7XG4gICAgICB9XG4gICAgICBpZiAoIXByb2Nlc3NlZFN1Ym5ldHMuaGFzKHN1Ym5ldC5ub2RlLmlkKSkge1xuICAgICAgICBpZiAoc3VibmV0LnJvdXRlVGFibGUgJiYgIXByb2Nlc3NlZFJvdXRlVGFibGVzLmhhcyhzdWJuZXQucm91dGVUYWJsZS5yb3V0ZVRhYmxlSWQpKSB7XG4gICAgICAgICAgcm91dGVIYW5kbGVyKHN1Ym5ldCk7XG4gICAgICAgICAgcHJvY2Vzc2VkUm91dGVUYWJsZXMuYWRkKHN1Ym5ldC5yb3V0ZVRhYmxlLnJvdXRlVGFibGVJZCk7XG4gICAgICAgIH1cbiAgICAgICAgcHJvY2Vzc2VkU3VibmV0cy5hZGQoc3VibmV0Lm5vZGUuaWQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBuZXcgTkFUIEdhdGV3YXkgdG8gdGhlIGdpdmVuIHN1Ym5ldCBvZiB0aGlzIFZQQ1xuICAgKiBvZiBnaXZlbiBzdWJuZXRzLlxuICAgKi9cbiAgcHVibGljIGFkZE5hdEdhdGV3YXkob3B0aW9uczogTmF0R2F0ZXdheU9wdGlvbnMpOiBOYXRHYXRld2F5IHtcbiAgICBpZiAob3B0aW9ucy5jb25uZWN0aXZpdHlUeXBlID09PSBOYXRDb25uZWN0aXZpdHlUeXBlLlBVQkxJQyAmJiAhdGhpcy5faW50ZXJuZXRHYXRld2F5SWQpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ0Nhbm5vdCBhZGQgYSBQdWJsaWMgTkFUIEdhdGV3YXkgd2l0aG91dCBhbiBJbnRlcm5ldCBHYXRld2F5IGVuYWJsZWQgb24gVlBDJywgdGhpcyk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgTmF0R2F0ZXdheSh0aGlzLCBgTkFUR2F0ZXdheS0ke29wdGlvbnMuc3VibmV0Lm5vZGUuaWR9YCwge1xuICAgICAgdnBjOiB0aGlzLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgbmV3IGZsb3cgbG9nIHRvIHRoaXMgVlBDXG4gICAqL1xuICBwdWJsaWMgYWRkRmxvd0xvZyhpZDogc3RyaW5nLCBvcHRpb25zPzogRmxvd0xvZ09wdGlvbnMpOiBGbG93TG9nIHtcbiAgICByZXR1cm4gbmV3IEZsb3dMb2codGhpcywgaWQsIHtcbiAgICAgIHJlc291cmNlVHlwZTogRmxvd0xvZ1Jlc291cmNlVHlwZS5mcm9tVnBjKHRoaXMpLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHBlZXJpbmcgY29ubmVjdGlvbiByb2xlIGZvciBhY2NlcHRvciBWUENcbiAgICovXG4gIHB1YmxpYyBjcmVhdGVBY2NlcHRvclZwY1JvbGUocmVxdWVzdG9yQWNjb3VudElkOiBzdHJpbmcpOiBSb2xlIHtcbiAgICBjb25zdCBwZWVyaW5nUm9sZSA9IG5ldyBSb2xlKHRoaXMsICdWcGNQZWVyaW5nUm9sZScsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IEFjY291bnRQcmluY2lwYWwocmVxdWVzdG9yQWNjb3VudElkKSxcbiAgICAgIHJvbGVOYW1lOiAnVnBjUGVlcmluZ1JvbGUnLFxuICAgICAgZGVzY3JpcHRpb246ICdSZXN0cmljdGl2ZSByb2xlIGZvciBWUEMgcGVlcmluZycsXG4gICAgfSk7XG5cbiAgICBwZWVyaW5nUm9sZS5hZGRUb1BvbGljeShuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgYWN0aW9uczogWydlYzI6QWNjZXB0VnBjUGVlcmluZ0Nvbm5lY3Rpb24nXSxcbiAgICAgIHJlc291cmNlczogW2Bhcm46JHtBd3MuUEFSVElUSU9OfTplYzI6JHt0aGlzLnJlZ2lvbn06JHt0aGlzLm93bmVyQWNjb3VudElkfTp2cGMvJHt0aGlzLnZwY0lkfWBdLFxuICAgIH0pKTtcblxuICAgIHBlZXJpbmdSb2xlLmFkZFRvUG9saWN5KG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgYWN0aW9uczogWydlYzI6QWNjZXB0VnBjUGVlcmluZ0Nvbm5lY3Rpb24nXSxcbiAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgcmVzb3VyY2VzOiBbYGFybjoke0F3cy5QQVJUSVRJT059OmVjMjoke3RoaXMucmVnaW9ufToke3RoaXMub3duZXJBY2NvdW50SWR9OnZwYy1wZWVyaW5nLWNvbm5lY3Rpb24vKmBdLFxuICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICBTdHJpbmdFcXVhbHM6IHtcbiAgICAgICAgICAnZWMyOkFjY2VwdGVyVnBjJzogYGFybjoke0F3cy5QQVJUSVRJT059OmVjMjoke3RoaXMucmVnaW9ufToke3RoaXMub3duZXJBY2NvdW50SWR9OnZwYy8ke3RoaXMudnBjSWR9YCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSkpO1xuXG4gICAgcmV0dXJuIHBlZXJpbmdSb2xlO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBwZWVyaW5nIGNvbm5lY3Rpb25cbiAgICovXG4gIHB1YmxpYyBjcmVhdGVQZWVyaW5nQ29ubmVjdGlvbihpZDogc3RyaW5nLCBvcHRpb25zOiBWUENQZWVyaW5nQ29ubmVjdGlvbk9wdGlvbnMpOiBWUENQZWVyaW5nQ29ubmVjdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBWUENQZWVyaW5nQ29ubmVjdGlvbih0aGlzLCBpZCwge1xuICAgICAgcmVxdWVzdG9yVnBjOiB0aGlzLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBpZCBvZiB0aGUgVlBOIEdhdGV3YXkgKGlmIGVuYWJsZWQpXG4gICAqL1xuICBwdWJsaWMgZ2V0IHZwbkdhdGV3YXlJZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl92cG5HYXRld2F5SWQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgaWQgb2YgdGhlIEludGVybmV0IEdhdGV3YXkgKGlmIGVuYWJsZWQpXG4gICAqL1xuICBwdWJsaWMgZ2V0IGludGVybmV0R2F0ZXdheUlkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2ludGVybmV0R2F0ZXdheUlkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGlkIG9mIHRoZSBFZ3Jlc3MgT25seSBJbnRlcm5ldCBHYXRld2F5IChpZiBlbmFibGVkKVxuICAgKi9cbiAgcHVibGljIGdldCBlZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5SWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZWdyZXNzT25seUludGVybmV0R2F0ZXdheUlkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgc3VibmV0cyBhcHByb3ByaWF0ZSBmb3IgdGhlIHBsYWNlbWVudCBzdHJhdGVneVxuICAgKi9cbiAgcHJvdGVjdGVkIHNlbGVjdFN1Ym5ldE9iamVjdHMoc2VsZWN0aW9uOiBTdWJuZXRTZWxlY3Rpb24gPSB7fSk6IElTdWJuZXRbXSB7XG4gICAgc2VsZWN0aW9uID0gdGhpcy5yZWlmeVNlbGVjdGlvbkRlZmF1bHRzKHNlbGVjdGlvbik7XG5cbiAgICBpZiAoc2VsZWN0aW9uLnN1Ym5ldHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHNlbGVjdGlvbi5zdWJuZXRzO1xuICAgIH1cblxuICAgIGxldCBzdWJuZXRzO1xuXG4gICAgaWYgKHNlbGVjdGlvbi5zdWJuZXRHcm91cE5hbWUgIT09IHVuZGVmaW5lZCkgeyAvLyBTZWxlY3QgYnkgbmFtZVxuICAgICAgc3VibmV0cyA9IHRoaXMuc2VsZWN0U3VibmV0T2JqZWN0c0J5TmFtZShzZWxlY3Rpb24uc3VibmV0R3JvdXBOYW1lKTtcbiAgICB9IGVsc2UgeyAvLyBPciBzcGVjaWZ5IGJ5IHR5cGVcbiAgICAgIGNvbnN0IHR5cGUgPSBzZWxlY3Rpb24uc3VibmV0VHlwZSB8fCBTdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1M7XG4gICAgICBzdWJuZXRzID0gdGhpcy5zZWxlY3RTdWJuZXRPYmplY3RzQnlUeXBlKHR5cGUpO1xuICAgIH1cblxuICAgIC8vIEFwcGx5IGFsbCB0aGUgZmlsdGVyc1xuICAgIHN1Ym5ldHMgPSB0aGlzLmFwcGx5U3VibmV0RmlsdGVycyhzdWJuZXRzLCBzZWxlY3Rpb24uc3VibmV0RmlsdGVycyA/PyBbXSk7XG5cbiAgICByZXR1cm4gc3VibmV0cztcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlTdWJuZXRGaWx0ZXJzKHN1Ym5ldHM6IElTdWJuZXRbXSwgZmlsdGVyczogU3VibmV0RmlsdGVyW10pOiBJU3VibmV0W10ge1xuICAgIGxldCBmaWx0ZXJlZCA9IHN1Ym5ldHM7XG4gICAgLy8gQXBwbHkgZWFjaCBmaWx0ZXIgaW4gc2VxdWVuY2VcbiAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiBmaWx0ZXJzKSB7XG4gICAgICBmaWx0ZXJlZCA9IGZpbHRlci5zZWxlY3RTdWJuZXRzKGZpbHRlcmVkKTtcbiAgICB9XG4gICAgcmV0dXJuIGZpbHRlcmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RTdWJuZXRPYmplY3RzQnlOYW1lKGdyb3VwTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgYWxsU3VibmV0cyA9IFsuLi50aGlzLnB1YmxpY1N1Ym5ldHMsIC4uLnRoaXMucHJpdmF0ZVN1Ym5ldHMsIC4uLnRoaXMuaXNvbGF0ZWRTdWJuZXRzXTtcbiAgICBjb25zdCBzdWJuZXRzID0gYWxsU3VibmV0cy5maWx0ZXIocyA9PiBzdWJuZXRHcm91cE5hbWVGcm9tQ29uc3RydWN0SWQocykgPT09IGdyb3VwTmFtZSk7XG5cbiAgICBpZiAoc3VibmV0cy5sZW5ndGggPT09IDAgJiYgIXRoaXMuaW5jb21wbGV0ZVN1Ym5ldERlZmluaXRpb24pIHtcbiAgICAgIGNvbnN0IG5hbWVzID0gQXJyYXkuZnJvbShuZXcgU2V0KGFsbFN1Ym5ldHMubWFwKHN1Ym5ldEdyb3VwTmFtZUZyb21Db25zdHJ1Y3RJZCkpKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlcmUgYXJlIG5vIHN1Ym5ldCBncm91cHMgd2l0aCBuYW1lICcke2dyb3VwTmFtZX0nIGluIHRoaXMgVlBDLiBBdmFpbGFibGUgbmFtZXM6ICR7bmFtZXN9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1Ym5ldHM7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdFN1Ym5ldE9iamVjdHNCeVR5cGUoc3VibmV0VHlwZTogU3VibmV0VHlwZSk6IElTdWJuZXRbXSB7XG4gICAgdHlwZSBEZXByZWNhdGVkU3VibmV0VHlwZSA9ICdEZXByZWNhdGVkX0lzb2xhdGVkJyB8ICdEZXByZWNhdGVkX1ByaXZhdGUnO1xuICAgIGNvbnN0IGFsbFN1Ym5ldHM6IHsgW2tleSBpbiBTdWJuZXRUeXBlIHwgRGVwcmVjYXRlZFN1Ym5ldFR5cGVdPzogSVN1Ym5ldFtdIH0gPSB7XG4gICAgICBbU3VibmV0VHlwZS5QUklWQVRFX0lTT0xBVEVEXTogdGhpcy5pc29sYXRlZFN1Ym5ldHMsXG4gICAgICBbJ0RlcHJlY2F0ZWRfSXNvbGF0ZWQnXTogdGhpcy5pc29sYXRlZFN1Ym5ldHMsXG4gICAgICBbU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfTkFUXTogdGhpcy5wcml2YXRlU3VibmV0cyxcbiAgICAgIFtTdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1NdOiB0aGlzLnByaXZhdGVTdWJuZXRzLFxuICAgICAgWydEZXByZWNhdGVkX1ByaXZhdGUnXTogdGhpcy5wcml2YXRlU3VibmV0cyxcbiAgICAgIFtTdWJuZXRUeXBlLlBVQkxJQ106IHRoaXMucHVibGljU3VibmV0cyxcbiAgICB9O1xuXG4gICAgY29uc3Qgc3VibmV0cyA9IGFsbFN1Ym5ldHNbc3VibmV0VHlwZV0hO1xuXG4gICAgLy8gRm9yY2UgbWVyZ2UgY29uZmxpY3QgaGVyZSB3aXRoIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9wdWxsLzQwODlcbiAgICAvLyBzZWUgSW1wb3J0ZWRWcGNcblxuICAgIGlmIChzdWJuZXRzLmxlbmd0aCA9PT0gMCAmJiAhdGhpcy5pbmNvbXBsZXRlU3VibmV0RGVmaW5pdGlvbikge1xuICAgICAgY29uc3QgYXZhaWxhYmxlVHlwZXMgPSBPYmplY3QuZW50cmllcyhhbGxTdWJuZXRzKS5maWx0ZXIoKFtfLCBzdWJzXSkgPT4gc3Vicy5sZW5ndGggPiAwKS5tYXAoKFt0eXBlTmFtZSwgX10pID0+IHR5cGVOYW1lKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlcmUgYXJlIG5vICcke3N1Ym5ldFR5cGV9JyBzdWJuZXQgZ3JvdXBzIGluIHRoaXMgVlBDLiBBdmFpbGFibGUgdHlwZXM6ICR7YXZhaWxhYmxlVHlwZXN9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1Ym5ldHM7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgdGhlIGZpZWxkcyBpbiBhIFN1Ym5ldFNlbGVjdGlvbiBvYmplY3QsIGFuZCByZWlmeSBkZWZhdWx0cyBpZiBuZWNlc3NhcnlcbiAgICpcbiAgICogSW4gY2FzZSBvZiBkZWZhdWx0IHNlbGVjdGlvbiwgc2VsZWN0IHRoZSBmaXJzdCB0eXBlIG9mIFBSSVZBVEUsIElTT0xBVEVELFxuICAgKiBQVUJMSUMgKGluIHRoYXQgb3JkZXIpIHRoYXQgaGFzIGFueSBzdWJuZXRzLlxuICAgKi9cbiAgcHJpdmF0ZSByZWlmeVNlbGVjdGlvbkRlZmF1bHRzKHBsYWNlbWVudDogU3VibmV0U2VsZWN0aW9uKTogU3VibmV0U2VsZWN0aW9uIHtcbiAgICAvLyBUT0RPOiB0aHJvdyBlcnJvciBhcyBuZXcgVnBjVjIgY2Fubm90IHN1cHBvcnQgc3VibmV0TmFtZSBvciBzdWJuZXRHcm91cE5hbWUgYW55bW9yZVxuICAgIGlmICgnc3VibmV0TmFtZScgaW4gcGxhY2VtZW50ICYmIHBsYWNlbWVudC5zdWJuZXROYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChwbGFjZW1lbnQuc3VibmV0R3JvdXBOYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQbGVhc2UgdXNlIG9ubHkgXFwnc3VibmV0R3JvdXBOYW1lXFwnIChcXCdzdWJuZXROYW1lXFwnIGlzIGRlcHJlY2F0ZWQgYW5kIGhhcyB0aGUgc2FtZSBiZWhhdmlvciknKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIEFubm90YXRpb25zLm9mKHRoaXMpLmFkZFdhcm5pbmdWMignQGF3cy1jZGsvYXdzLWVjMjpzdWJuZXROYW1lRGVwcmVjYXRlZCcsICdVc2FnZSBvZiBcXCdzdWJuZXROYW1lXFwnIGluIFN1Ym5ldFNlbGVjdGlvbiBpcyBkZXByZWNhdGVkLCB1c2UgXFwnc3VibmV0R3JvdXBOYW1lXFwnIGluc3RlYWQnKTtcbiAgICAgIH1cbiAgICAgIHBsYWNlbWVudCA9IHsgLi4ucGxhY2VtZW50LCBzdWJuZXRHcm91cE5hbWU6IHBsYWNlbWVudC5zdWJuZXROYW1lIGFzIHN0cmluZyB9O1xuICAgIH1cblxuICAgIGNvbnN0IGV4Y2x1c2l2ZVNlbGVjdGlvbnM6IEFycmF5PGtleW9mIFN1Ym5ldFNlbGVjdGlvbj4gPSBbJ3N1Ym5ldHMnLCAnc3VibmV0VHlwZScsICdzdWJuZXRHcm91cE5hbWUnXTtcbiAgICBjb25zdCBwcm92aWRlZFNlbGVjdGlvbnMgPSBleGNsdXNpdmVTZWxlY3Rpb25zLmZpbHRlcihrZXkgPT4gcGxhY2VtZW50W2tleV0gIT09IHVuZGVmaW5lZCk7XG4gICAgaWYgKHByb3ZpZGVkU2VsZWN0aW9ucy5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE9ubHkgb25lIG9mICcke3Byb3ZpZGVkU2VsZWN0aW9uc30nIGNhbiBiZSBzdXBwbGllZCB0byBzdWJuZXQgc2VsZWN0aW9uLmApO1xuICAgIH1cblxuICAgIGlmIChwbGFjZW1lbnQuc3VibmV0VHlwZSA9PT0gdW5kZWZpbmVkICYmIHBsYWNlbWVudC5zdWJuZXRHcm91cE5hbWUgPT09IHVuZGVmaW5lZCAmJiBwbGFjZW1lbnQuc3VibmV0cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBSZXR1cm4gZGVmYXVsdCBzdWJuZXQgdHlwZSBiYXNlZCBvbiBzdWJuZXRzIHRoYXQgYWN0dWFsbHkgZXhpc3RcbiAgICAgIGxldCBzdWJuZXRUeXBlID0gdGhpcy5wcml2YXRlU3VibmV0cy5sZW5ndGhcbiAgICAgICAgPyBTdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MgOiB0aGlzLmlzb2xhdGVkU3VibmV0cy5sZW5ndGggPyBTdWJuZXRUeXBlLlBSSVZBVEVfSVNPTEFURUQgOiBTdWJuZXRUeXBlLlBVQkxJQztcbiAgICAgIHBsYWNlbWVudCA9IHsgLi4ucGxhY2VtZW50LCBzdWJuZXRUeXBlOiBzdWJuZXRUeXBlIH07XG4gICAgfVxuXG4gICAgLy8gRXN0YWJsaXNoIHdoaWNoIHN1Ym5ldCBmaWx0ZXJzIGFyZSBnb2luZyB0byBiZSB1c2VkXG4gICAgbGV0IHN1Ym5ldEZpbHRlcnMgPSBwbGFjZW1lbnQuc3VibmV0RmlsdGVycyA/PyBbXTtcblxuICAgIC8vIEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggZXhpc3RpbmcgYGF2YWlsYWJpbGl0eVpvbmVzYCBhbmQgYG9uZVBlckF6YCBmdW5jdGlvbmFsaXR5XG4gICAgaWYgKHBsYWNlbWVudC5hdmFpbGFiaWxpdHlab25lcyAhPT0gdW5kZWZpbmVkKSB7IC8vIEZpbHRlciBieSBBWnMsIGlmIHNwZWNpZmllZFxuICAgICAgc3VibmV0RmlsdGVycy5wdXNoKFN1Ym5ldEZpbHRlci5hdmFpbGFiaWxpdHlab25lcyhwbGFjZW1lbnQuYXZhaWxhYmlsaXR5Wm9uZXMpKTtcbiAgICB9XG4gICAgaWYgKCEhcGxhY2VtZW50Lm9uZVBlckF6KSB7IC8vIEVuc3VyZSBvbmUgcGVyIEFaIGlmIHNwZWNpZmllZFxuICAgICAgc3VibmV0RmlsdGVycy5wdXNoKFN1Ym5ldEZpbHRlci5vbmVQZXJBeigpKTtcbiAgICB9XG5cbiAgICAvLyBPdmVyd3JpdGUgdGhlIHByb3ZpZGVkIHBsYWNlbWVudCBmaWx0ZXJzIGFuZCByZW1vdmUgdGhlIGF2YWlsYWJpbGl0eVpvbmVzIGFuZCBvbmVQZXJBeiBwcm9wZXJ0aWVzXG4gICAgcGxhY2VtZW50ID0geyAuLi5wbGFjZW1lbnQsIHN1Ym5ldEZpbHRlcnM6IHN1Ym5ldEZpbHRlcnMsIGF2YWlsYWJpbGl0eVpvbmVzOiB1bmRlZmluZWQsIG9uZVBlckF6OiB1bmRlZmluZWQgfTtcbiAgICBjb25zdCB7IGF2YWlsYWJpbGl0eVpvbmVzLCBvbmVQZXJBeiwgLi4ucmVzdCB9ID0gcGxhY2VtZW50O1xuXG4gICAgcmV0dXJuIHJlc3Q7XG4gIH1cbn1cblxuY2xhc3MgQ29tcG9zaXRlRGVwZW5kYWJsZSBpbXBsZW1lbnRzIElEZXBlbmRhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXBlbmRhYmxlcyA9IG5ldyBBcnJheTxJRGVwZW5kYWJsZT4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBEZXBlbmRhYmxlLmltcGxlbWVudCh0aGlzLCB7XG4gICAgICBnZXQgZGVwZW5kZW5jeVJvb3RzKCkge1xuICAgICAgICBjb25zdCByZXQgPSBuZXcgQXJyYXk8SUNvbnN0cnVjdD4oKTtcbiAgICAgICAgZm9yIChjb25zdCBkZXAgb2Ygc2VsZi5kZXBlbmRhYmxlcykge1xuICAgICAgICAgIHJldC5wdXNoKC4uLkRlcGVuZGFibGUub2YoZGVwKS5kZXBlbmRlbmN5Um9vdHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGNvbnN0cnVjdCB0byB0aGUgZGVwZW5kZW5jeSByb290c1xuICAgKi9cbiAgcHVibGljIGFkZChkZXA6IElEZXBlbmRhYmxlKSB7XG4gICAgdGhpcy5kZXBlbmRhYmxlcy5wdXNoKGRlcCk7XG4gIH1cbn1cblxuLyoqXG4gKiBJbnZva2UgYSBmdW5jdGlvbiBvbiBhIHZhbHVlIChmb3IgaXRzIHNpZGUgZWZmZWN0KSBhbmQgcmV0dXJuIHRoZSB2YWx1ZVxuICovXG5mdW5jdGlvbiB0YXA8VD4oeDogVCwgZm46ICh4OiBUKSA9PiB2b2lkKTogVCB7XG4gIGZuKHgpO1xuICByZXR1cm4geDtcbn1cbiJdfQ==
533
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjLXYyLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ2cGMtdjItYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUEwRTtBQUMxRSxpREF1QjZCO0FBRTdCLGlEQUFzRjtBQUN0RiwyQ0FBa0Y7QUFDbEYsbUNBVWlCO0FBRWpCLGlDQUFtRjtBQStMbkY7Ozs7R0FJRztBQUNILE1BQXNCLFNBQVUsU0FBUSxzQkFBUTs7SUFnQjlDOztPQUVHO0lBQ2EsYUFBYSxHQUFjLEVBQUUsQ0FBQztJQUU5Qzs7T0FFRztJQUNhLGNBQWMsR0FBYyxFQUFFLENBQUM7SUFPL0M7O09BRUc7SUFDYSxpQkFBaUIsR0FBYSxFQUFFLENBQUM7SUFPakQ7Ozs7T0FJRztJQUNnQixnQ0FBZ0MsR0FBRyxJQUFJLDRCQUFlLEVBQUUsQ0FBQztJQXNDNUU7O09BRUc7SUFDTywwQkFBMEIsR0FBWSxLQUFLLENBQUM7SUFFdEQ7OztPQUdHO0lBQ08sYUFBYSxDQUFVO0lBRWpDOzs7T0FHRztJQUNPLGtCQUFrQixDQUFVO0lBRXRDOzs7T0FHRztJQUNPLDRCQUE0QixDQUFVO0lBRWhEOzs7OztPQUtHO0lBQ0ksYUFBYSxDQUFDLFlBQTZCLEVBQUU7UUFDbEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV6QyxPQUFPO1lBQ0wsU0FBUyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1lBQ3ZDLElBQUksaUJBQWlCLEtBQWUsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xGLCtCQUErQixFQUFFLEdBQUcs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QUksQ0FBQyxHQUFHLHVCQUFVLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUNsRCxDQUFDO2dCQUNELE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQztTQUNGLENBQUMsQ0FBQztLQUNKO0lBRUQ7O09BRUc7SUFDSSxHQUFHLENBQUMsR0FBZ0I7UUFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDNUI7Q0FDRjtBQUVEOztHQUVHO0FBQ0gsU0FBUyxHQUFHLENBQUksQ0FBSSxFQUFFLEVBQWtCO0lBQ3RDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFubm90YXRpb25zLCBBd3MsIFJlc291cmNlLCBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQge1xuICBDZm5WUENHYXRld2F5QXR0YWNobWVudCxcbiAgQ2ZuVlBOR2F0ZXdheVJvdXRlUHJvcGFnYXRpb24sXG4gIENsaWVudFZwbkVuZHBvaW50LFxuICBDbGllbnRWcG5FbmRwb2ludE9wdGlvbnMsXG4gIEVuYWJsZVZwbkdhdGV3YXlPcHRpb25zLFxuICBGbG93TG9nLFxuICBGbG93TG9nT3B0aW9ucyxcbiAgRmxvd0xvZ1Jlc291cmNlVHlwZSxcbiAgR2F0ZXdheVZwY0VuZHBvaW50LFxuICBHYXRld2F5VnBjRW5kcG9pbnRPcHRpb25zLFxuICBJbnRlcmZhY2VWcGNFbmRwb2ludCxcbiAgSW50ZXJmYWNlVnBjRW5kcG9pbnRPcHRpb25zLFxuICBJU3VibmV0LFxuICBJVnBjLFxuICBTZWxlY3RlZFN1Ym5ldHMsXG4gIFN1Ym5ldEZpbHRlcixcbiAgU3VibmV0U2VsZWN0aW9uLFxuICBTdWJuZXRUeXBlLFxuICBWcG5Db25uZWN0aW9uLFxuICBWcG5Db25uZWN0aW9uT3B0aW9ucyxcbiAgVnBuQ29ubmVjdGlvblR5cGUsXG4gIFZwbkdhdGV3YXksXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0IHsgVlBDUmVmZXJlbmNlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMi9saWIvZWMyLmdlbmVyYXRlZCc7XG5pbXBvcnQgeyBBY2NvdW50UHJpbmNpcGFsLCBFZmZlY3QsIFBvbGljeVN0YXRlbWVudCwgUm9sZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgRGVwZW5kYWJsZSwgRGVwZW5kZW5jeUdyb3VwLCBJQ29uc3RydWN0LCBJRGVwZW5kYWJsZSB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHtcbiAgRWdyZXNzT25seUludGVybmV0R2F0ZXdheSxcbiAgSW50ZXJuZXRHYXRld2F5LFxuICBOYXRDb25uZWN0aXZpdHlUeXBlLFxuICBOYXRHYXRld2F5LFxuICBOYXRHYXRld2F5T3B0aW9ucyxcbiAgUm91dGUsXG4gIFZQQ1BlZXJpbmdDb25uZWN0aW9uLFxuICBWUENQZWVyaW5nQ29ubmVjdGlvbk9wdGlvbnMsXG4gIFZQTkdhdGV3YXlWMixcbn0gZnJvbSAnLi9yb3V0ZSc7XG5pbXBvcnQgeyBJU3VibmV0VjIgfSBmcm9tICcuL3N1Ym5ldC12Mic7XG5pbXBvcnQgeyBhbGxSb3V0ZVRhYmxlSWRzLCBmbGF0dGVuLCBzdWJuZXRHcm91cE5hbWVGcm9tQ29uc3RydWN0SWQgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgSVZQQ0NpZHJCbG9jayB9IGZyb20gJy4vdnBjLXYyJztcblxuLyoqXG4gKiBPcHRpb25zIHRvIGRlZmluZSBFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5IGZvciBWUENcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBMaXN0IG9mIHN1Ym5ldHMgd2hlcmUgcm91dGUgdG8gRUdXIHdpbGwgYmUgYWRkZWRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyByb3V0ZSBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSBzdWJuZXRzPzogU3VibmV0U2VsZWN0aW9uW107XG5cbiAgLyoqXG4gICAqIERlc3RpbmF0aW9uIElwdjYgYWRkcmVzcyBmb3IgRUdXIHJvdXRlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gJzo6LzAnIGFsbCBJcHY2IHRyYWZmaWNcbiAgICovXG4gIHJlYWRvbmx5IGRlc3RpbmF0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgbmFtZSBvZiB0aGUgZWdyZXNzLW9ubHkgaW50ZXJuZXQgZ2F0ZXdheS5cbiAgICogUHJvdmlkZWQgbmFtZSB3aWxsIGJlIHVzZWQgZm9yIHRhZ2dpbmdcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBuYW1lIHRhZyBhc3NvY2lhdGVkIGFuZCBwcm92aXNpb25lZCB3aXRob3V0IGEgcmVzb3VyY2UgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgZWdyZXNzT25seUludGVybmV0R2F0ZXdheU5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyB0byBkZWZpbmUgSW50ZXJuZXRHYXRld2F5IGZvciBWUENcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlcm5ldEdhdGV3YXlPcHRpb25ze1xuXG4gIC8qKlxuICAgKiBEZXN0aW5hdGlvbiBJcHY2IGFkZHJlc3MgZm9yIEVHVyByb3V0ZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtICcwLjAuMC4wJyBhbGwgSXB2NCB0cmFmZmljXG4gICAqL1xuICByZWFkb25seSBpcHY0RGVzdGluYXRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlc3RpbmF0aW9uIElwdjYgYWRkcmVzcyBmb3IgRUdXIHJvdXRlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gJzo6LzAnIGFsbCBJcHY2IHRyYWZmaWNcbiAgICovXG4gIHJlYWRvbmx5IGlwdjZEZXN0aW5hdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlc291cmNlIG5hbWUgb2YgdGhlIGludGVybmV0IGdhdGV3YXkuXG4gICAqIFByb3ZpZGVkIG5hbWUgd2lsbCBiZSB1c2VkIGZvciB0YWdnaW5nXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcHJvdmlzaW9uZWQgd2l0aG91dCBhIHJlc291cmNlIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGludGVybmV0R2F0ZXdheU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIExpc3Qgb2Ygc3VibmV0cyB3aGVyZSByb3V0ZSB0byBJR1cgd2lsbCBiZSBhZGRlZFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHJvdXRlIGNyZWF0ZWQgZm9yIGFsbCBzdWJuZXRzIHdpdGggVHlwZSBgU3VibmV0VHlwZS5QdWJsaWNgXG4gICAqL1xuICByZWFkb25seSBzdWJuZXRzPzogU3VibmV0U2VsZWN0aW9uW107XG59XG5cbi8qKlxuICogT3B0aW9ucyB0byBkZWZpbmUgVlBOR2F0ZXdheVYyIGZvciBWUENcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWUE5HYXRld2F5VjJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIFZQTiBjb25uZWN0aW9uIHRoZSB2aXJ0dWFsIHByaXZhdGUgZ2F0ZXdheSBzdXBwb3J0cy5cbiAgICogQHNlZSBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1lYzItdnBuZ2F0ZXdheS5odG1sI2Nmbi1lYzItdnBuZ2F0ZXdheS10eXBlXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBWcG5Db25uZWN0aW9uVHlwZTtcblxuICAvKipcbiAgICogVGhlIHByaXZhdGUgQXV0b25vbW91cyBTeXN0ZW0gTnVtYmVyIChBU04pIGZvciB0aGUgQW1hem9uIHNpZGUgb2YgYSBCR1Agc2Vzc2lvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBBU04gc2V0IGZvciBCR1Agc2Vzc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgYW1hem9uU2lkZUFzbj86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHJlc291cmNlIG5hbWUgb2YgdGhlIFZQTiBnYXRld2F5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHJlc291cmNlIHByb3Zpc2lvbmVkIHdpdGhvdXQgYW55IG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHZwbkdhdGV3YXlOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTdWJuZXRzIHdoZXJlIHRoZSByb3V0ZSBwcm9wYWdhdGlvbiBzaG91bGQgYmUgYWRkZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gcHJvcG9nYXRpb24gZm9yIHJvdXRlc1xuICAgKi9cbiAgcmVhZG9ubHkgdnBuUm91dGVQcm9wYWdhdGlvbj86IFN1Ym5ldFNlbGVjdGlvbltdO1xufVxuXG4vKipcbiAqIFBsYWNlaG9sZGVyIHRvIHNlZSB3aGF0IGV4dHJhIHByb3BzIHdlIG1pZ2h0IG5lZWQsXG4gKiB3aWxsIGJlIGFkZGVkIHRvIG9yaWdpbmFsIElWUENcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJVnBjVjIgZXh0ZW5kcyBJVnBjIHtcbiAgLyoqXG4gICAqIFRoZSBzZWNvbmRhcnkgQ0lEUiBibG9ja3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBWUEMuXG4gICAqXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIHtAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL2xhdGVzdC91c2VyZ3VpZGUvdnBjLWNpZHItYmxvY2tzLmh0bWwjdnBjLXJlc2l6ZX0uXG4gICAqL1xuICByZWFkb25seSBzZWNvbmRhcnlDaWRyQmxvY2s/OiBJVlBDQ2lkckJsb2NrW107XG5cbiAgLyoqXG4gICAqIFRoZSBwcmltYXJ5IElQdjQgQ0lEUiBibG9jayBhc3NvY2lhdGVkIHdpdGggdGhlIFZQQy5cbiAgICogTmVlZGVkIGluIG9yZGVyIHRvIHZhbGlkYXRlIHRoZSB2cGMgcmFuZ2Ugb2Ygc3VibmV0XG4gICAqIGN1cnJlbnQgcHJvcCB2cGNDaWRyQmxvY2sgcmVmZXJzIHRvIHRoZSB0b2tlbiB2YWx1ZVxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3ZwYy9sYXRlc3QvdXNlcmd1aWRlL3ZwYy1jaWRyLWJsb2Nrcy5odG1sI3ZwYy1zaXppbmctaXB2NH0uXG4gICAqL1xuICByZWFkb25seSBpcHY0Q2lkckJsb2NrOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHRvIG92ZXJyaWRlIGluZmVycmVkIHJlZ2lvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGN1cnJlbnQgc3RhY2sncyBlbnZpcm9ubWVudCByZWdpb25cbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIEFXUyBhY2NvdW50IHRoYXQgb3ducyB0aGUgVlBDXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIGFjY291bnQgaWQgb2YgdGhlIHBhcmVudCBzdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgb3duZXJBY2NvdW50SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogSVB2NCBDSURSIHByb3Zpc2lvbmVkIHVuZGVyIHBvb2xcbiAgICogUmVxdWlyZWQgdG8gY2hlY2sgZm9yIG92ZXJsYXBwaW5nIENJRFJzIGFmdGVyIHByb3Zpc2lvbmluZ1xuICAgKiBpcyBjb21wbGV0ZSB1bmRlciBJUEFNIHBvb2xcbiAgICovXG4gIHJlYWRvbmx5IGlwdjRJcGFtUHJvdmlzaW9uZWRDaWRycz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBWcGNOYW1lIHRvIGJlIHVzZWQgZm9yIHRhZ2dpbmcgaXRzIGNvbXBvbmVudHNcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgdnBjTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQWRkIGFuIEVncmVzcyBvbmx5IEludGVybmV0IEdhdGV3YXkgdG8gY3VycmVudCBWUEMuXG4gICAqIENhbiBvbmx5IGJlIHVzZWQgZm9yIGlwdjYgZW5hYmxlZCBWUENzLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3ZwYy9sYXRlc3QvdXNlcmd1aWRlL2VncmVzcy1vbmx5LWludGVybmV0LWdhdGV3YXktYmFzaWNzLmh0bWx9LlxuICAgKi9cbiAgYWRkRWdyZXNzT25seUludGVybmV0R2F0ZXdheShvcHRpb25zPzogRWdyZXNzT25seUludGVybmV0R2F0ZXdheU9wdGlvbnMpOiBFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5O1xuXG4gIC8qKlxuICAgKiBBZGRzIGFuIEludGVybmV0IEdhdGV3YXkgdG8gY3VycmVudCBWUEMuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIHtAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL2xhdGVzdC91c2VyZ3VpZGUvdnBjLWlndy1pbnRlcm5ldC1hY2Nlc3MuaHRtbH0uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVmaW5lcyByb3V0ZSBmb3IgYWxsIGlwdjQoJzAuMC4wLjAnKSBhbmQgaXB2NiBhZGRyZXNzZXMoJzo6LzAnKVxuICAgKi9cbiAgYWRkSW50ZXJuZXRHYXRld2F5KG9wdGlvbnM/OiBJbnRlcm5ldEdhdGV3YXlPcHRpb25zKTogSW50ZXJuZXRHYXRld2F5O1xuXG4gIC8qKlxuICAgKiBBZGRzIFZQTiBHYXRld2F5IHRvIFZQQyBhbmQgc2V0IHJvdXRlIHByb3BvZ2F0aW9uLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWVjMi12cG5nYXRld2F5Lmh0bWx9LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHJvdXRlIHByb3BvZ2F0aW9uXG4gICAqL1xuICBlbmFibGVWcG5HYXRld2F5VjIob3B0aW9uczogVlBOR2F0ZXdheVYyT3B0aW9ucyk6IFZQTkdhdGV3YXlWMjtcblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBOQVQgR2F0ZXdheSB0byBWUENcbiAgICogQSBOQVQgZ2F0ZXdheSBpcyBhIE5ldHdvcmsgQWRkcmVzcyBUcmFuc2xhdGlvbiAoTkFUKSBzZXJ2aWNlLiBOQVQgR2F0ZXdheSBDb25uZWN0aXZpdHkgY2FuIGJlIG9mIHR5cGUgYFB1YmxpY2Agb3IgYFByaXZhdGVgLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3ZwYy9sYXRlc3QvdXNlcmd1aWRlL3ZwYy1uYXQtZ2F0ZXdheS5odG1sfS5cbiAgICpcbiAgICogQGRlZmF1bHQgQ29ubmVjdGl2aXR5VHlwZS5QdWJsaWNcbiAgICovXG4gIGFkZE5hdEdhdGV3YXkob3B0aW9uczogTmF0R2F0ZXdheU9wdGlvbnMpOiBOYXRHYXRld2F5O1xuXG4gIC8qKlxuICAgKiBBZGRzIGEgbmV3IHJvbGUgdG8gYWNjZXB0b3IgVlBDIGFjY291bnRcbiAgICogQSBjcm9zcyBhY2NvdW50IHJvbGUgaXMgcmVxdWlyZWQgZm9yIHRoZSBWUEMgdG8gcGVlciB3aXRoIGFub3RoZXIgYWNjb3VudC5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUge0BsaW5rIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL3BlZXItd2l0aC12cGMtaW4tYW5vdGhlci1hY2NvdW50Lmh0bWx9LlxuICAgKi9cbiAgY3JlYXRlQWNjZXB0b3JWcGNSb2xlKHJlcXVlc3RvckFjY291bnRJZDogc3RyaW5nKTogUm9sZTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBwZWVyaW5nIGNvbm5lY3Rpb25cbiAgICogQSBwZWVyaW5nIGNvbm5lY3Rpb24gaXMgYSBwcml2YXRlIHZpcnR1YWwgbmV0d29yayBlc3RhYmxpc2hlZCBiZXR3ZWVuIHR3byBWUENzLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3ZwYy9sYXRlc3QvcGVlcmluZy93aGF0LWlzLXZwYy1wZWVyaW5nLmh0bWx9LlxuICAgKi9cbiAgY3JlYXRlUGVlcmluZ0Nvbm5lY3Rpb24oaWQ6IHN0cmluZywgb3B0aW9uczogVlBDUGVlcmluZ0Nvbm5lY3Rpb25PcHRpb25zKTogVlBDUGVlcmluZ0Nvbm5lY3Rpb247XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgY3JlYXRpbmcgYSBWUEMgKFZpcnR1YWwgUHJpdmF0ZSBDbG91ZCkgaW4gQVdTLlxuICpcbiAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIHtAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2RrL2FwaS92Mi9kb2NzL2F3cy1jZGstbGliLmF3c19lYzIuVnBjLmh0bWx8QVdTIENESyBEb2N1bWVudGF0aW9uIG9uIFZQQ3N9LlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVnBjVjJCYXNlIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJVnBjVjIge1xuICAvKipcbiAgICogSWRlbnRpZmllciBmb3IgdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB2cGNJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBcm4gb2YgdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB2cGNBcm46IHN0cmluZztcblxuICAvKipcbiAgICogQ0lEUiByYW5nZSBmb3IgdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB2cGNDaWRyQmxvY2s6IHN0cmluZztcblxuICAvKipcbiAgICogTGlzdCBvZiBwdWJsaWMgc3VibmV0cyBpbiB0aGlzIFZQQ1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHB1YmxpY1N1Ym5ldHM6IElTdWJuZXRbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIHByaXZhdGUgc3VibmV0cyBpbiB0aGlzIFZQQ1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByaXZhdGVTdWJuZXRzOiBJU3VibmV0W10gPSBbXTtcblxuICAvKipcbiAgICogTGlzdCBvZiBpc29sYXRlZCBzdWJuZXRzIGluIHRoaXMgVlBDXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgaXNvbGF0ZWRTdWJuZXRzOiBJU3VibmV0W107XG5cbiAgLyoqXG4gICAqIEFacyBmb3IgdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdmFpbGFiaWxpdHlab25lczogc3RyaW5nW10gPSBbXTtcblxuICAvKipcbiAgICogRGVwZW5kYWJsZSB0aGF0IGNhbiBiZSBkZXBlbmRlZCB1cG9uIHRvIGZvcmNlIGludGVybmV0IGNvbm5lY3Rpdml0eSBlc3RhYmxpc2hlZCBvbiB0aGUgVlBDXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgaW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZDogSURlcGVuZGFibGU7XG5cbiAgLyoqXG4gICAqIERlcGVuZGFibGUgdGhhdCBjYW4gYmUgZGVwZW5kZWQgdXBvbiB0byBmb3JjZSBpbnRlcm5ldCBjb25uZWN0aXZpdHkgZXN0YWJsaXNoZWQgb24gdGhlIFZQQ1xuICAgKiBBZGQgaWd3IHRvIHRoaXMgaWYgaXRzIGEgcHVibGljIHN1Ym5ldFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBfaW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZCA9IG5ldyBEZXBlbmRlbmN5R3JvdXAoKTtcblxuICAvKipcbiAgICogU2Vjb25kYXJ5IElQcyBmb3IgdGhlIFZQQywgY2FuIGJlIG11bHRpcGxlIElwdjQgb3IgSXB2NlxuICAgKiBJcHY0IHNob3VsZCBiZSB3aXRoaW4gUkZDIzE5MTggcmFuZ2VcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBzZWNvbmRhcnlDaWRyQmxvY2s/OiBJVlBDQ2lkckJsb2NrW107XG5cbiAgLyoqXG4gICAqIFRoZSBwcmltYXJ5IElQdjQgQ0lEUiBibG9jayBhc3NvY2lhdGVkIHdpdGggdGhlIFZQQy5cbiAgICogTmVlZGVkIGluIG9yZGVyIHRvIHZhbGlkYXRlIHRoZSB2cGMgcmFuZ2Ugb2Ygc3VibmV0XG4gICAqIGN1cnJlbnQgcHJvcCB2cGNDaWRyQmxvY2sgcmVmZXJzIHRvIHRoZSB0b2tlbiB2YWx1ZVxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3ZwYy9sYXRlc3QvdXNlcmd1aWRlL3ZwYy1jaWRyLWJsb2Nrcy5odG1sI3ZwYy1zaXppbmctaXB2NH0uXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgaXB2NENpZHJCbG9jazogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBWcGNOYW1lIHRvIGJlIHVzZWQgZm9yIHRhZ2dpbmcgaXRzIGNvbXBvbmVudHNcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB2cGNOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZWdpb24gZm9yIHRoaXMgVlBDXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElkZW50aWZpZXIgb2YgdGhlIG93bmVyIGZvciB0aGlzIFZQQ1xuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IG93bmVyQWNjb3VudElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElQdjQgQ0lEUiBwcm92aXNpb25lZCB1bmRlciBwb29sXG4gICAqIFJlcXVpcmVkIHRvIGNoZWNrIGZvciBvdmVybGFwcGluZyBDSURScyBhZnRlciBwcm92aXNpb25pbmdcbiAgICogaXMgY29tcGxldGUgdW5kZXIgSVBBTSBwb29sXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgaXB2NElwYW1Qcm92aXNpb25lZENpZHJzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIElmIHRoaXMgaXMgc2V0IHRvIHRydWUsIGRvbid0IGVycm9yIG91dCBvbiB0cnlpbmcgdG8gc2VsZWN0IHN1Ym5ldHNcbiAgICovXG4gIHByb3RlY3RlZCBpbmNvbXBsZXRlU3VibmV0RGVmaW5pdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBNdXRhYmxlIHByaXZhdGUgZmllbGQgZm9yIHRoZSB2cG5HYXRld2F5SWRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm90ZWN0ZWQgX3ZwbkdhdGV3YXlJZD86IHN0cmluZztcblxuICAvKipcbiAgICogTXV0YWJsZSBwcml2YXRlIGZpZWxkIGZvciB0aGUgaW50ZXJuZXRHYXRld2F5SWRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm90ZWN0ZWQgX2ludGVybmV0R2F0ZXdheUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNdXRhYmxlIHByaXZhdGUgZmllbGQgZm9yIHRoZSBFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5SWRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm90ZWN0ZWQgX2VncmVzc09ubHlJbnRlcm5ldEdhdGV3YXlJZD86IHN0cmluZztcblxuICAvKipcbiAgICogUmV0dXJuIGluZm9ybWF0aW9uIG9uIHRoZSBzdWJuZXRzIGFwcHJvcHJpYXRlIGZvciB0aGUgZ2l2ZW4gc2VsZWN0aW9uIHN0cmF0ZWd5XG4gICAqXG4gICAqIFJlcXVpcmVzIHRoYXQgYXQgbGVhc3Qgb25lIHN1Ym5ldCBpcyBtYXRjaGVkLCB0aHJvd3MgYSBkZXNjcmlwdGl2ZVxuICAgKiBlcnJvciBtZXNzYWdlIG90aGVyd2lzZS5cbiAgICovXG4gIHB1YmxpYyBzZWxlY3RTdWJuZXRzKHNlbGVjdGlvbjogU3VibmV0U2VsZWN0aW9uID0ge30pOiBTZWxlY3RlZFN1Ym5ldHMge1xuICAgIGNvbnN0IHN1Ym5ldHMgPSB0aGlzLnNlbGVjdFN1Ym5ldE9iamVjdHMoc2VsZWN0aW9uKTtcbiAgICBjb25zdCBwdWJzID0gbmV3IFNldCh0aGlzLnB1YmxpY1N1Ym5ldHMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Ym5ldElkczogc3VibmV0cy5tYXAocyA9PiBzLnN1Ym5ldElkKSxcbiAgICAgIGdldCBhdmFpbGFiaWxpdHlab25lcygpOiBzdHJpbmdbXSB7IHJldHVybiBzdWJuZXRzLm1hcChzID0+IHMuYXZhaWxhYmlsaXR5Wm9uZSk7IH0sXG4gICAgICBpbnRlcm5ldENvbm5lY3Rpdml0eUVzdGFibGlzaGVkOiB0YXAobmV3IENvbXBvc2l0ZURlcGVuZGFibGUoKSwgZCA9PiBzdWJuZXRzLmZvckVhY2gocyA9PiBkLmFkZChzLmludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQpKSksXG4gICAgICBzdWJuZXRzLFxuICAgICAgaGFzUHVibGljOiBzdWJuZXRzLnNvbWUocyA9PiBwdWJzLmhhcyhzKSksXG4gICAgICBpc1BlbmRpbmdMb29rdXA6IHRoaXMuaW5jb21wbGV0ZVN1Ym5ldERlZmluaXRpb24sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdnBjUmVmKCk6IFZQQ1JlZmVyZW5jZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZwY0lkOiB0aGlzLnZwY0lkLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIFZQTiBHYXRld2F5IHRvIHRoaXMgVlBDXG4gICAqIEBkZXByZWNhdGVkIHVzZSBlbmFibGVWcG5HYXRld2F5VjIgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBWUENWMi5Sb3V0ZVxuICAgKi9cbiAgcHVibGljIGVuYWJsZVZwbkdhdGV3YXkob3B0aW9uczogRW5hYmxlVnBuR2F0ZXdheU9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAodGhpcy52cG5HYXRld2F5SWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFZQTiBHYXRld2F5IGhhcyBhbHJlYWR5IGJlZW4gZW5hYmxlZC4nKTtcbiAgICB9XG5cbiAgICBjb25zdCB2cG5HYXRld2F5ID0gbmV3IFZwbkdhdGV3YXkodGhpcywgJ1ZwbkdhdGV3YXknLCB7XG4gICAgICBhbWF6b25TaWRlQXNuOiBvcHRpb25zLmFtYXpvblNpZGVBc24sXG4gICAgICB0eXBlOiBWcG5Db25uZWN0aW9uVHlwZS5JUFNFQ18xLFxuICAgIH0pO1xuXG4gICAgdGhpcy5fdnBuR2F0ZXdheUlkID0gdnBuR2F0ZXdheS5nYXRld2F5SWQ7XG5cbiAgICBjb25zdCBhdHRhY2htZW50ID0gbmV3IENmblZQQ0dhdGV3YXlBdHRhY2htZW50KHRoaXMsICdWUENWUE5HVycsIHtcbiAgICAgIHZwY0lkOiB0aGlzLnZwY0lkLFxuICAgICAgdnBuR2F0ZXdheUlkOiB0aGlzLl92cG5HYXRld2F5SWQsXG4gICAgfSk7XG5cbiAgICAvLyBQcm9wYWdhdGUgcm91dGVzIG9uIHJvdXRlIHRhYmxlcyBhc3NvY2lhdGVkIHdpdGggdGhlIHJpZ2h0IHN1Ym5ldHNcbiAgICBjb25zdCB2cG5Sb3V0ZVByb3BhZ2F0aW9uID0gb3B0aW9ucy52cG5Sb3V0ZVByb3BhZ2F0aW9uID8/IFt7fV07XG4gICAgY29uc3Qgcm91dGVUYWJsZUlkcyA9IGFsbFJvdXRlVGFibGVJZHMoZmxhdHRlbih2cG5Sb3V0ZVByb3BhZ2F0aW9uLm1hcChzID0+IHRoaXMuc2VsZWN0U3VibmV0cyhzKS5zdWJuZXRzKSkpO1xuXG4gICAgaWYgKHJvdXRlVGFibGVJZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICBBbm5vdGF0aW9ucy5vZih0aGlzKS5hZGRFcnJvcihgZW5hYmxlVnBuR2F0ZXdheTogbm8gc3VibmV0cyBtYXRjaGluZyBzZWxlY3Rpb246ICcke0pTT04uc3RyaW5naWZ5KHZwblJvdXRlUHJvcGFnYXRpb24pfScuIFNlbGVjdCBvdGhlciBzdWJuZXRzIHRvIGFkZCByb3V0ZXMgdG8uYCk7XG4gICAgfVxuXG4gICAgY29uc3Qgcm91dGVQcm9wYWdhdGlvbiA9IG5ldyBDZm5WUE5HYXRld2F5Um91dGVQcm9wYWdhdGlvbih0aGlzLCAnUm91dGVQcm9wYWdhdGlvbicsIHtcbiAgICAgIHJvdXRlVGFibGVJZHMsXG4gICAgICB2cG5HYXRld2F5SWQ6IHRoaXMuX3ZwbkdhdGV3YXlJZCxcbiAgICB9KTtcbiAgICAgIC8vIFRoZSBBV1M6OkVDMjo6VlBOR2F0ZXdheVJvdXRlUHJvcGFnYXRpb24gcmVzb3VyY2UgY2Fubm90IHVzZSB0aGUgVlBOIGdhdGV3YXlcbiAgICAgIC8vIHVudGlsIGl0IGhhcyBzdWNjZXNzZnVsbHkgYXR0YWNoZWQgdG8gdGhlIFZQQy5cbiAgICAgIC8vIFNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtZWMyLXZwbi1nYXRld2F5cm91dGVwcm9wLmh0bWxcbiAgICByb3V0ZVByb3BhZ2F0aW9uLm5vZGUuYWRkRGVwZW5kZW5jeShhdHRhY2htZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIFZQTkdBdGV3YXlWMiB0byB0aGlzIFZQQ1xuICAgKi9cbiAgcHVibGljIGVuYWJsZVZwbkdhdGV3YXlWMihvcHRpb25zOiBWUE5HYXRld2F5VjJPcHRpb25zKTogVlBOR2F0ZXdheVYyIHtcbiAgICBpZiAodGhpcy52cG5HYXRld2F5SWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIFZQTiBHYXRld2F5IGhhcyBhbHJlYWR5IGJlZW4gZW5hYmxlZC4nKTtcbiAgICB9XG5cbiAgICBjb25zdCB2cG5HYXRld2F5ID0gbmV3IFZQTkdhdGV3YXlWMih0aGlzLCAnVnBuR2F0ZXdheScsIHtcbiAgICAgIHZwYzogdGhpcyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICB0aGlzLl9pbnRlcm5ldENvbm5lY3Rpdml0eUVzdGFibGlzaGVkLmFkZCh2cG5HYXRld2F5KTtcbiAgICB0aGlzLl92cG5HYXRld2F5SWQgPSB2cG5HYXRld2F5LnJvdXRlclRhcmdldElkO1xuXG4gICAgcmV0dXJuIHZwbkdhdGV3YXk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBWUE4gY29ubmVjdGlvbiB0byB0aGlzIFZQQ1xuICAgKi9cbiAgcHVibGljIGFkZFZwbkNvbm5lY3Rpb24oaWQ6IHN0cmluZywgb3B0aW9uczogVnBuQ29ubmVjdGlvbk9wdGlvbnMpOiBWcG5Db25uZWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IFZwbkNvbm5lY3Rpb24odGhpcywgaWQsIHtcbiAgICAgIHZwYzogdGhpcyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBjbGllbnQgVlBOIGVuZHBvaW50IHRvIHRoaXMgVlBDXG4gICAqL1xuICBwdWJsaWMgYWRkQ2xpZW50VnBuRW5kcG9pbnQoaWQ6IHN0cmluZywgb3B0aW9uczogQ2xpZW50VnBuRW5kcG9pbnRPcHRpb25zKTogQ2xpZW50VnBuRW5kcG9pbnQge1xuICAgIHJldHVybiBuZXcgQ2xpZW50VnBuRW5kcG9pbnQodGhpcywgaWQsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICB2cGM6IHRoaXMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBpbnRlcmZhY2UgZW5kcG9pbnQgdG8gdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyBhZGRJbnRlcmZhY2VFbmRwb2ludChpZDogc3RyaW5nLCBvcHRpb25zOiBJbnRlcmZhY2VWcGNFbmRwb2ludE9wdGlvbnMpOiBJbnRlcmZhY2VWcGNFbmRwb2ludCB7XG4gICAgcmV0dXJuIG5ldyBJbnRlcmZhY2VWcGNFbmRwb2ludCh0aGlzLCBpZCwge1xuICAgICAgdnBjOiB0aGlzLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgbmV3IGdhdGV3YXkgZW5kcG9pbnQgdG8gdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyBhZGRHYXRld2F5RW5kcG9pbnQoaWQ6IHN0cmluZywgb3B0aW9uczogR2F0ZXdheVZwY0VuZHBvaW50T3B0aW9ucyk6IEdhdGV3YXlWcGNFbmRwb2ludCB7XG4gICAgcmV0dXJuIG5ldyBHYXRld2F5VnBjRW5kcG9pbnQodGhpcywgaWQsIHtcbiAgICAgIHZwYzogdGhpcyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBFZ3Jlc3MgT25seSBJbnRlcm5ldCBHYXRld2F5IHRvIHRoaXMgVlBDIGFuZCBkZWZpbmVzIGEgbmV3IHJvdXRlXG4gICAqIHRvIHRoZSByb3V0ZSB0YWJsZSBvZiBnaXZlbiBzdWJuZXRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGluIGNhc2Ugb2Ygbm8gaW5wdXQgc3VibmV0cywgbm8gcm91dGUgaXMgY3JlYXRlZFxuICAgKi9cbiAgcHVibGljIGFkZEVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXkob3B0aW9ucz86IEVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXlPcHRpb25zKTogRWdyZXNzT25seUludGVybmV0R2F0ZXdheSB7XG4gICAgY29uc3QgZWd3ID0gbmV3IEVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXkodGhpcywgJ0VncmVzc09ubHlHVycsIHtcbiAgICAgIHZwYzogdGhpcyxcbiAgICAgIGVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXlOYW1lOiBvcHRpb25zPy5lZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5TmFtZSxcbiAgICB9KTtcbiAgICB0aGlzLl9lZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5SWQgPSBlZ3cucm91dGVyVGFyZ2V0SWQ7XG5cbiAgICBsZXQgdXNlSXB2NjtcbiAgICBpZiAodGhpcy5zZWNvbmRhcnlDaWRyQmxvY2spIHtcbiAgICAgIHVzZUlwdjYgPSAodGhpcy5zZWNvbmRhcnlDaWRyQmxvY2suc29tZSgoc2Vjb25kYXJ5QWRkcmVzcykgPT4gc2Vjb25kYXJ5QWRkcmVzcy5hbWF6b25Qcm92aWRlZElwdjZDaWRyQmxvY2sgPT09IHRydWUgfHxcbiAgICBzZWNvbmRhcnlBZGRyZXNzLmlwdjZJcGFtUG9vbElkICE9PSB1bmRlZmluZWQgfHwgc2Vjb25kYXJ5QWRkcmVzcy5pcHY2Q2lkckJsb2NrICE9PSB1bmRlZmluZWQpKTtcbiAgICB9XG5cbiAgICBpZiAoIXVzZUlwdjYpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRWdyZXNzIG9ubHkgSUdXIGNhbiBvbmx5IGJlIGFkZGVkIHRvIElwdjYgZW5hYmxlZCBWUEMnKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucz8uc3VibmV0cykge1xuICAgICAgLy8gVXNlIGhlbHBlciBmdW5jdGlvbiB0byBlbnN1cmUgdW5pcXVlIHN1Ym5ldHNcbiAgICAgIGNvbnN0IHN1Ym5ldHMgPSBmbGF0dGVuKG9wdGlvbnMuc3VibmV0cy5tYXAocyA9PiB0aGlzLnNlbGVjdFN1Ym5ldHMocykuc3VibmV0cykpO1xuICAgICAgdGhpcy5wcm9jZXNzU3VibmV0cyhzdWJuZXRzLCAoc3VibmV0KSA9PiB7XG4gICAgICAgIHRoaXMuY3JlYXRlRWdyZXNzUm91dGUoc3VibmV0LCBlZ3csIG9wdGlvbnMuZGVzdGluYXRpb24pO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBlZ3c7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHJvdXRlIGZvciBFR1cgd2l0aCBkZXN0aW5hdGlvbiBzZXQgdG8gb3V0Ym91bmQgSVB2NignOjovMCcpIG9yIGN1c3RvbSBpcHY2IGFkZHJlc3MuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVFZ3Jlc3NSb3V0ZShzdWJuZXQ6IElTdWJuZXRWMiwgZWd3OiBFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5LCBkZXN0aW5hdGlvbj86IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGRlc3RpbmF0aW9uSXB2NiA9IGRlc3RpbmF0aW9uID8/ICc6Oi8wJztcbiAgICBuZXcgUm91dGUodGhpcywgYCR7c3VibmV0Lm5vZGUuaWR9LUVncmVzc1JvdXRlYCwge1xuICAgICAgcm91dGVUYWJsZTogc3VibmV0LnJvdXRlVGFibGUsXG4gICAgICBkZXN0aW5hdGlvbjogZGVzdGluYXRpb25JcHY2LCAvLyBJUHY2IGRlZmF1bHQgcm91dGVcbiAgICAgIHRhcmdldDogeyBnYXRld2F5OiBlZ3cgfSxcbiAgICAgIHJvdXRlTmFtZTogJ0NES0VJR1dSb3V0ZScsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBJbnRlcm5ldCBHYXRld2F5IHRvIHRoaXMgVlBDXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gY3JlYXRlcyBhIG5ldyByb3V0ZSBmb3IgcHVibGljIHN1Ym5ldHMod2l0aCBhbGwgb3V0Ym91bmQgYWNjZXNzKSB0byB0aGUgSW50ZXJuZXQgR2F0ZXdheS5cbiAgICovXG4gIHB1YmxpYyBhZGRJbnRlcm5ldEdhdGV3YXkob3B0aW9ucz86IEludGVybmV0R2F0ZXdheU9wdGlvbnMpOiBJbnRlcm5ldEdhdGV3YXkge1xuICAgIGlmICh0aGlzLl9pbnRlcm5ldEdhdGV3YXlJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgSW50ZXJuZXQgR2F0ZXdheSBoYXMgYWxyZWFkeSBiZWVuIGVuYWJsZWQuJyk7XG4gICAgfVxuXG4gICAgY29uc3QgaWd3ID0gbmV3IEludGVybmV0R2F0ZXdheSh0aGlzLCAnSW50ZXJuZXRHYXRld2F5Jywge1xuICAgICAgdnBjOiB0aGlzLFxuICAgICAgaW50ZXJuZXRHYXRld2F5TmFtZTogb3B0aW9ucz8uaW50ZXJuZXRHYXRld2F5TmFtZSxcbiAgICB9KTtcblxuICAgIHRoaXMuX2ludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQuYWRkKGlndyk7XG4gICAgdGhpcy5faW50ZXJuZXRHYXRld2F5SWQgPSBpZ3cucm91dGVyVGFyZ2V0SWQ7XG5cbiAgICAvLyBBZGQgcm91dGVzIGZvciBzdWJuZXRzIGRlZmluZWQgYXMgYW4gaW5wdXRcbiAgICBpZiAob3B0aW9ucz8uc3VibmV0cykge1xuICAgICAgY29uc3Qgc3VibmV0cyA9IGZsYXR0ZW4ob3B0aW9ucy5zdWJuZXRzLm1hcChzID0+IHRoaXMuc2VsZWN0U3VibmV0cyhzKS5zdWJuZXRzKSk7XG4gICAgICAvLyBVc2UgaGVscGVyIGZ1bmN0aW9uIHRvIGVuc3VyZSB1bmlxdWUgc3VibmV0c1xuICAgICAgdGhpcy5wcm9jZXNzU3VibmV0cyhzdWJuZXRzLCAoc3VibmV0KSA9PiB7XG4gICAgICAgIHRoaXMuYWRkRGVmYXVsdEludGVybmV0Um91dGUoc3VibmV0LCBpZ3csIG9wdGlvbnMpO1xuICAgICAgfSk7XG4gICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gaW5wdXQgc3VibmV0cyBkZWZpbmVkLCBkZWZhdWx0IHJvdXRlIHdpbGwgYmUgYWRkZWQgdG8gYWxsIHB1YmxpYyBzdWJuZXRzXG4gICAgfSBlbHNlIGlmICghb3B0aW9ucz8uc3VibmV0cyAmJiB0aGlzLnB1YmxpY1N1Ym5ldHMpIHtcbiAgICAgIC8vIFRyYWNrIHJvdXRlIHRhYmxlcyB0aGF0IGhhdmUgYWxyZWFkeSBoYWQgcm91dGVzIGFkZGVkIHRvIHByZXZlbnQgZHVwbGljYXRlc1xuICAgICAgdGhpcy5wcm9jZXNzU3VibmV0cyh0aGlzLnB1YmxpY1N1Ym5ldHMsIChzdWJuZXQpID0+IHtcbiAgICAgICAgdGhpcy5hZGREZWZhdWx0SW50ZXJuZXRSb3V0ZShzdWJuZXQsIGlndywgb3B0aW9ucyk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGlndztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGRlZmF1bHQgcm91dGUgZm9yIHRoZSBpbnRlcm5ldCBnYXRld2F5XG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSBhZGREZWZhdWx0SW50ZXJuZXRSb3V0ZShzdWJuZXQ6IElTdWJuZXRWMiwgaWd3OiBJbnRlcm5ldEdhdGV3YXksIG9wdGlvbnM/OiBJbnRlcm5ldEdhdGV3YXlPcHRpb25zKTogdm9pZCB7XG4gICAgLy8gQWRkIGRlZmF1bHQgcm91dGUgdG8gSUdXIGZvciBJUHY2XG4gICAgaWYgKHN1Ym5ldC5pcHY2Q2lkckJsb2NrKSB7XG4gICAgICBuZXcgUm91dGUodGhpcywgYCR7c3VibmV0Lm5vZGUuaWR9LURlZmF1bHRJUHY2Um91dGVgLCB7XG4gICAgICAgIHJvdXRlVGFibGU6IHN1Ym5ldC5yb3V0ZVRhYmxlLFxuICAgICAgICBkZXN0aW5hdGlvbjogb3B0aW9ucz8uaXB2NkRlc3RpbmF0aW9uID8/ICc6Oi8wJyxcbiAgICAgICAgdGFyZ2V0OiB7IGdhdGV3YXk6IGlndyB9LFxuICAgICAgICByb3V0ZU5hbWU6ICdDREtEZWZhdWx0SVB2NlJvdXRlJyxcbiAgICAgIH0pO1xuICAgIH1cbiAgICAvLyBBZGQgZGVmYXVsdCByb3V0ZSB0byBJR1cgZm9yIElQdjRcbiAgICBuZXcgUm91dGUodGhpcywgYCR7c3VibmV0Lm5vZGUuaWR9LURlZmF1bHRSb3V0ZWAsIHtcbiAgICAgIHJvdXRlVGFibGU6IHN1Ym5ldC5yb3V0ZVRhYmxlLFxuICAgICAgZGVzdGluYXRpb246IG9wdGlvbnM/LmlwdjREZXN0aW5hdGlvbiA/PyAnMC4wLjAuMC8wJyxcbiAgICAgIHRhcmdldDogeyBnYXRld2F5OiBpZ3cgfSxcbiAgICAgIHJvdXRlTmFtZTogJ0NES0RlZmF1bHRJUHY0Um91dGUnLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBmdW5jdGlvbiB0byBwcm9jZXNzIHVuaXF1ZSBzdWJuZXRzIGFuZCByb3V0ZSB0YWJsZSBmb3IgYWRkaW5nIHJvdXRlc1xuICAgKi9cbiAgcHJpdmF0ZSBwcm9jZXNzU3VibmV0cyhcbiAgICBzdWJuZXRzOiBJU3VibmV0VjJbXSxcbiAgICByb3V0ZUhhbmRsZXI6IChzdWJuZXQ6IElTdWJuZXRWMikgPT4gdm9pZCxcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgcHJvY2Vzc2VkU3VibmV0cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGNvbnN0IHByb2Nlc3NlZFJvdXRlVGFibGVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgc3VibmV0cy5mb3JFYWNoKChzdWJuZXQpID0+IHtcbiAgICAgIGlmICghdGhpcy5wdWJsaWNTdWJuZXRzLmluY2x1ZGVzKHN1Ym5ldCkpIHtcbiAgICAgICAgQW5ub3RhdGlvbnMub2YodGhpcykuYWRkV2FybmluZ1YyKCdJbnRlcm5ldEdhdGV3YXlXYXJuaW5nJywgYEdpdmVuICR7c3VibmV0Lm5vZGUuaWR9IGlzIG5vdCBhIHB1YmxpYyBzdWJuZXQuIEludGVybmV0IEdhdGV3YXkgc2hvdWxkIGJlIGFkZGVkIG9ubHkgdG8gcHVibGljIHN1Ym5ldHMuYCk7XG4gICAgICB9XG4gICAgICBpZiAoIXByb2Nlc3NlZFN1Ym5ldHMuaGFzKHN1Ym5ldC5ub2RlLmlkKSkge1xuICAgICAgICBpZiAoc3VibmV0LnJvdXRlVGFibGUgJiYgIXByb2Nlc3NlZFJvdXRlVGFibGVzLmhhcyhzdWJuZXQucm91dGVUYWJsZS5yb3V0ZVRhYmxlSWQpKSB7XG4gICAgICAgICAgcm91dGVIYW5kbGVyKHN1Ym5ldCk7XG4gICAgICAgICAgcHJvY2Vzc2VkUm91dGVUYWJsZXMuYWRkKHN1Ym5ldC5yb3V0ZVRhYmxlLnJvdXRlVGFibGVJZCk7XG4gICAgICAgIH1cbiAgICAgICAgcHJvY2Vzc2VkU3VibmV0cy5hZGQoc3VibmV0Lm5vZGUuaWQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBuZXcgTkFUIEdhdGV3YXkgdG8gdGhlIGdpdmVuIHN1Ym5ldCBvZiB0aGlzIFZQQ1xuICAgKiBvZiBnaXZlbiBzdWJuZXRzLlxuICAgKi9cbiAgcHVibGljIGFkZE5hdEdhdGV3YXkob3B0aW9uczogTmF0R2F0ZXdheU9wdGlvbnMpOiBOYXRHYXRld2F5IHtcbiAgICBpZiAob3B0aW9ucy5jb25uZWN0aXZpdHlUeXBlID09PSBOYXRDb25uZWN0aXZpdHlUeXBlLlBVQkxJQyAmJiAhdGhpcy5faW50ZXJuZXRHYXRld2F5SWQpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ0Nhbm5vdCBhZGQgYSBQdWJsaWMgTkFUIEdhdGV3YXkgd2l0aG91dCBhbiBJbnRlcm5ldCBHYXRld2F5IGVuYWJsZWQgb24gVlBDJywgdGhpcyk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgTmF0R2F0ZXdheSh0aGlzLCBgTkFUR2F0ZXdheS0ke29wdGlvbnMuc3VibmV0Lm5vZGUuaWR9YCwge1xuICAgICAgdnBjOiB0aGlzLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgbmV3IGZsb3cgbG9nIHRvIHRoaXMgVlBDXG4gICAqL1xuICBwdWJsaWMgYWRkRmxvd0xvZyhpZDogc3RyaW5nLCBvcHRpb25zPzogRmxvd0xvZ09wdGlvbnMpOiBGbG93TG9nIHtcbiAgICByZXR1cm4gbmV3IEZsb3dMb2codGhpcywgaWQsIHtcbiAgICAgIHJlc291cmNlVHlwZTogRmxvd0xvZ1Jlc291cmNlVHlwZS5mcm9tVnBjKHRoaXMpLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHBlZXJpbmcgY29ubmVjdGlvbiByb2xlIGZvciBhY2NlcHRvciBWUENcbiAgICovXG4gIHB1YmxpYyBjcmVhdGVBY2NlcHRvclZwY1JvbGUocmVxdWVzdG9yQWNjb3VudElkOiBzdHJpbmcpOiBSb2xlIHtcbiAgICBjb25zdCBwZWVyaW5nUm9sZSA9IG5ldyBSb2xlKHRoaXMsICdWcGNQZWVyaW5nUm9sZScsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IEFjY291bnRQcmluY2lwYWwocmVxdWVzdG9yQWNjb3VudElkKSxcbiAgICAgIHJvbGVOYW1lOiAnVnBjUGVlcmluZ1JvbGUnLFxuICAgICAgZGVzY3JpcHRpb246ICdSZXN0cmljdGl2ZSByb2xlIGZvciBWUEMgcGVlcmluZycsXG4gICAgfSk7XG5cbiAgICBwZWVyaW5nUm9sZS5hZGRUb1BvbGljeShuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgYWN0aW9uczogWydlYzI6QWNjZXB0VnBjUGVlcmluZ0Nvbm5lY3Rpb24nXSxcbiAgICAgIHJlc291cmNlczogW2Bhcm46JHtBd3MuUEFSVElUSU9OfTplYzI6JHt0aGlzLnJlZ2lvbn06JHt0aGlzLm93bmVyQWNjb3VudElkfTp2cGMvJHt0aGlzLnZwY0lkfWBdLFxuICAgIH0pKTtcblxuICAgIHBlZXJpbmdSb2xlLmFkZFRvUG9saWN5KG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgYWN0aW9uczogWydlYzI6QWNjZXB0VnBjUGVlcmluZ0Nvbm5lY3Rpb24nXSxcbiAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgcmVzb3VyY2VzOiBbYGFybjoke0F3cy5QQVJUSVRJT059OmVjMjoke3RoaXMucmVnaW9ufToke3RoaXMub3duZXJBY2NvdW50SWR9OnZwYy1wZWVyaW5nLWNvbm5lY3Rpb24vKmBdLFxuICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICBTdHJpbmdFcXVhbHM6IHtcbiAgICAgICAgICAnZWMyOkFjY2VwdGVyVnBjJzogYGFybjoke0F3cy5QQVJUSVRJT059OmVjMjoke3RoaXMucmVnaW9ufToke3RoaXMub3duZXJBY2NvdW50SWR9OnZwYy8ke3RoaXMudnBjSWR9YCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSkpO1xuXG4gICAgcmV0dXJuIHBlZXJpbmdSb2xlO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBwZWVyaW5nIGNvbm5lY3Rpb25cbiAgICovXG4gIHB1YmxpYyBjcmVhdGVQZWVyaW5nQ29ubmVjdGlvbihpZDogc3RyaW5nLCBvcHRpb25zOiBWUENQZWVyaW5nQ29ubmVjdGlvbk9wdGlvbnMpOiBWUENQZWVyaW5nQ29ubmVjdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBWUENQZWVyaW5nQ29ubmVjdGlvbih0aGlzLCBpZCwge1xuICAgICAgcmVxdWVzdG9yVnBjOiB0aGlzLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBpZCBvZiB0aGUgVlBOIEdhdGV3YXkgKGlmIGVuYWJsZWQpXG4gICAqL1xuICBwdWJsaWMgZ2V0IHZwbkdhdGV3YXlJZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl92cG5HYXRld2F5SWQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgaWQgb2YgdGhlIEludGVybmV0IEdhdGV3YXkgKGlmIGVuYWJsZWQpXG4gICAqL1xuICBwdWJsaWMgZ2V0IGludGVybmV0R2F0ZXdheUlkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2ludGVybmV0R2F0ZXdheUlkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGlkIG9mIHRoZSBFZ3Jlc3MgT25seSBJbnRlcm5ldCBHYXRld2F5IChpZiBlbmFibGVkKVxuICAgKi9cbiAgcHVibGljIGdldCBlZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5SWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZWdyZXNzT25seUludGVybmV0R2F0ZXdheUlkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgc3VibmV0cyBhcHByb3ByaWF0ZSBmb3IgdGhlIHBsYWNlbWVudCBzdHJhdGVneVxuICAgKi9cbiAgcHJvdGVjdGVkIHNlbGVjdFN1Ym5ldE9iamVjdHMoc2VsZWN0aW9uOiBTdWJuZXRTZWxlY3Rpb24gPSB7fSk6IElTdWJuZXRbXSB7XG4gICAgc2VsZWN0aW9uID0gdGhpcy5yZWlmeVNlbGVjdGlvbkRlZmF1bHRzKHNlbGVjdGlvbik7XG5cbiAgICBpZiAoc2VsZWN0aW9uLnN1Ym5ldHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHNlbGVjdGlvbi5zdWJuZXRzO1xuICAgIH1cblxuICAgIGxldCBzdWJuZXRzO1xuXG4gICAgaWYgKHNlbGVjdGlvbi5zdWJuZXRHcm91cE5hbWUgIT09IHVuZGVmaW5lZCkgeyAvLyBTZWxlY3QgYnkgbmFtZVxuICAgICAgc3VibmV0cyA9IHRoaXMuc2VsZWN0U3VibmV0T2JqZWN0c0J5TmFtZShzZWxlY3Rpb24uc3VibmV0R3JvdXBOYW1lKTtcbiAgICB9IGVsc2UgeyAvLyBPciBzcGVjaWZ5IGJ5IHR5cGVcbiAgICAgIGNvbnN0IHR5cGUgPSBzZWxlY3Rpb24uc3VibmV0VHlwZSB8fCBTdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1M7XG4gICAgICBzdWJuZXRzID0gdGhpcy5zZWxlY3RTdWJuZXRPYmplY3RzQnlUeXBlKHR5cGUpO1xuICAgIH1cblxuICAgIC8vIEFwcGx5IGFsbCB0aGUgZmlsdGVyc1xuICAgIHN1Ym5ldHMgPSB0aGlzLmFwcGx5U3VibmV0RmlsdGVycyhzdWJuZXRzLCBzZWxlY3Rpb24uc3VibmV0RmlsdGVycyA/PyBbXSk7XG5cbiAgICByZXR1cm4gc3VibmV0cztcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlTdWJuZXRGaWx0ZXJzKHN1Ym5ldHM6IElTdWJuZXRbXSwgZmlsdGVyczogU3VibmV0RmlsdGVyW10pOiBJU3VibmV0W10ge1xuICAgIGxldCBmaWx0ZXJlZCA9IHN1Ym5ldHM7XG4gICAgLy8gQXBwbHkgZWFjaCBmaWx0ZXIgaW4gc2VxdWVuY2VcbiAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiBmaWx0ZXJzKSB7XG4gICAgICBmaWx0ZXJlZCA9IGZpbHRlci5zZWxlY3RTdWJuZXRzKGZpbHRlcmVkKTtcbiAgICB9XG4gICAgcmV0dXJuIGZpbHRlcmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RTdWJuZXRPYmplY3RzQnlOYW1lKGdyb3VwTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgYWxsU3VibmV0cyA9IFsuLi50aGlzLnB1YmxpY1N1Ym5ldHMsIC4uLnRoaXMucHJpdmF0ZVN1Ym5ldHMsIC4uLnRoaXMuaXNvbGF0ZWRTdWJuZXRzXTtcbiAgICBjb25zdCBzdWJuZXRzID0gYWxsU3VibmV0cy5maWx0ZXIocyA9PiBzdWJuZXRHcm91cE5hbWVGcm9tQ29uc3RydWN0SWQocykgPT09IGdyb3VwTmFtZSk7XG5cbiAgICBpZiAoc3VibmV0cy5sZW5ndGggPT09IDAgJiYgIXRoaXMuaW5jb21wbGV0ZVN1Ym5ldERlZmluaXRpb24pIHtcbiAgICAgIGNvbnN0IG5hbWVzID0gQXJyYXkuZnJvbShuZXcgU2V0KGFsbFN1Ym5ldHMubWFwKHN1Ym5ldEdyb3VwTmFtZUZyb21Db25zdHJ1Y3RJZCkpKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlcmUgYXJlIG5vIHN1Ym5ldCBncm91cHMgd2l0aCBuYW1lICcke2dyb3VwTmFtZX0nIGluIHRoaXMgVlBDLiBBdmFpbGFibGUgbmFtZXM6ICR7bmFtZXN9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1Ym5ldHM7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdFN1Ym5ldE9iamVjdHNCeVR5cGUoc3VibmV0VHlwZTogU3VibmV0VHlwZSk6IElTdWJuZXRbXSB7XG4gICAgdHlwZSBEZXByZWNhdGVkU3VibmV0VHlwZSA9ICdEZXByZWNhdGVkX0lzb2xhdGVkJyB8ICdEZXByZWNhdGVkX1ByaXZhdGUnO1xuICAgIGNvbnN0IGFsbFN1Ym5ldHM6IHsgW2tleSBpbiBTdWJuZXRUeXBlIHwgRGVwcmVjYXRlZFN1Ym5ldFR5cGVdPzogSVN1Ym5ldFtdIH0gPSB7XG4gICAgICBbU3VibmV0VHlwZS5QUklWQVRFX0lTT0xBVEVEXTogdGhpcy5pc29sYXRlZFN1Ym5ldHMsXG4gICAgICBbJ0RlcHJlY2F0ZWRfSXNvbGF0ZWQnXTogdGhpcy5pc29sYXRlZFN1Ym5ldHMsXG4gICAgICBbU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfTkFUXTogdGhpcy5wcml2YXRlU3VibmV0cyxcbiAgICAgIFtTdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1NdOiB0aGlzLnByaXZhdGVTdWJuZXRzLFxuICAgICAgWydEZXByZWNhdGVkX1ByaXZhdGUnXTogdGhpcy5wcml2YXRlU3VibmV0cyxcbiAgICAgIFtTdWJuZXRUeXBlLlBVQkxJQ106IHRoaXMucHVibGljU3VibmV0cyxcbiAgICB9O1xuXG4gICAgY29uc3Qgc3VibmV0cyA9IGFsbFN1Ym5ldHNbc3VibmV0VHlwZV0hO1xuXG4gICAgLy8gRm9yY2UgbWVyZ2UgY29uZmxpY3QgaGVyZSB3aXRoIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9wdWxsLzQwODlcbiAgICAvLyBzZWUgSW1wb3J0ZWRWcGNcblxuICAgIGlmIChzdWJuZXRzLmxlbmd0aCA9PT0gMCAmJiAhdGhpcy5pbmNvbXBsZXRlU3VibmV0RGVmaW5pdGlvbikge1xuICAgICAgY29uc3QgYXZhaWxhYmxlVHlwZXMgPSBPYmplY3QuZW50cmllcyhhbGxTdWJuZXRzKS5maWx0ZXIoKFtfLCBzdWJzXSkgPT4gc3Vicy5sZW5ndGggPiAwKS5tYXAoKFt0eXBlTmFtZSwgX10pID0+IHR5cGVOYW1lKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlcmUgYXJlIG5vICcke3N1Ym5ldFR5cGV9JyBzdWJuZXQgZ3JvdXBzIGluIHRoaXMgVlBDLiBBdmFpbGFibGUgdHlwZXM6ICR7YXZhaWxhYmxlVHlwZXN9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1Ym5ldHM7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgdGhlIGZpZWxkcyBpbiBhIFN1Ym5ldFNlbGVjdGlvbiBvYmplY3QsIGFuZCByZWlmeSBkZWZhdWx0cyBpZiBuZWNlc3NhcnlcbiAgICpcbiAgICogSW4gY2FzZSBvZiBkZWZhdWx0IHNlbGVjdGlvbiwgc2VsZWN0IHRoZSBmaXJzdCB0eXBlIG9mIFBSSVZBVEUsIElTT0xBVEVELFxuICAgKiBQVUJMSUMgKGluIHRoYXQgb3JkZXIpIHRoYXQgaGFzIGFueSBzdWJuZXRzLlxuICAgKi9cbiAgcHJpdmF0ZSByZWlmeVNlbGVjdGlvbkRlZmF1bHRzKHBsYWNlbWVudDogU3VibmV0U2VsZWN0aW9uKTogU3VibmV0U2VsZWN0aW9uIHtcbiAgICAvLyBUT0RPOiB0aHJvdyBlcnJvciBhcyBuZXcgVnBjVjIgY2Fubm90IHN1cHBvcnQgc3VibmV0TmFtZSBvciBzdWJuZXRHcm91cE5hbWUgYW55bW9yZVxuICAgIGlmICgnc3VibmV0TmFtZScgaW4gcGxhY2VtZW50ICYmIHBsYWNlbWVudC5zdWJuZXROYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChwbGFjZW1lbnQuc3VibmV0R3JvdXBOYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQbGVhc2UgdXNlIG9ubHkgXFwnc3VibmV0R3JvdXBOYW1lXFwnIChcXCdzdWJuZXROYW1lXFwnIGlzIGRlcHJlY2F0ZWQgYW5kIGhhcyB0aGUgc2FtZSBiZWhhdmlvciknKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIEFubm90YXRpb25zLm9mKHRoaXMpLmFkZFdhcm5pbmdWMignQGF3cy1jZGsvYXdzLWVjMjpzdWJuZXROYW1lRGVwcmVjYXRlZCcsICdVc2FnZSBvZiBcXCdzdWJuZXROYW1lXFwnIGluIFN1Ym5ldFNlbGVjdGlvbiBpcyBkZXByZWNhdGVkLCB1c2UgXFwnc3VibmV0R3JvdXBOYW1lXFwnIGluc3RlYWQnKTtcbiAgICAgIH1cbiAgICAgIHBsYWNlbWVudCA9IHsgLi4ucGxhY2VtZW50LCBzdWJuZXRHcm91cE5hbWU6IHBsYWNlbWVudC5zdWJuZXROYW1lIGFzIHN0cmluZyB9O1xuICAgIH1cblxuICAgIGNvbnN0IGV4Y2x1c2l2ZVNlbGVjdGlvbnM6IEFycmF5PGtleW9mIFN1Ym5ldFNlbGVjdGlvbj4gPSBbJ3N1Ym5ldHMnLCAnc3VibmV0VHlwZScsICdzdWJuZXRHcm91cE5hbWUnXTtcbiAgICBjb25zdCBwcm92aWRlZFNlbGVjdGlvbnMgPSBleGNsdXNpdmVTZWxlY3Rpb25zLmZpbHRlcihrZXkgPT4gcGxhY2VtZW50W2tleV0gIT09IHVuZGVmaW5lZCk7XG4gICAgaWYgKHByb3ZpZGVkU2VsZWN0aW9ucy5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE9ubHkgb25lIG9mICcke3Byb3ZpZGVkU2VsZWN0aW9uc30nIGNhbiBiZSBzdXBwbGllZCB0byBzdWJuZXQgc2VsZWN0aW9uLmApO1xuICAgIH1cblxuICAgIGlmIChwbGFjZW1lbnQuc3VibmV0VHlwZSA9PT0gdW5kZWZpbmVkICYmIHBsYWNlbWVudC5zdWJuZXRHcm91cE5hbWUgPT09IHVuZGVmaW5lZCAmJiBwbGFjZW1lbnQuc3VibmV0cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBSZXR1cm4gZGVmYXVsdCBzdWJuZXQgdHlwZSBiYXNlZCBvbiBzdWJuZXRzIHRoYXQgYWN0dWFsbHkgZXhpc3RcbiAgICAgIGxldCBzdWJuZXRUeXBlID0gdGhpcy5wcml2YXRlU3VibmV0cy5sZW5ndGhcbiAgICAgICAgPyBTdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MgOiB0aGlzLmlzb2xhdGVkU3VibmV0cy5sZW5ndGggPyBTdWJuZXRUeXBlLlBSSVZBVEVfSVNPTEFURUQgOiBTdWJuZXRUeXBlLlBVQkxJQztcbiAgICAgIHBsYWNlbWVudCA9IHsgLi4ucGxhY2VtZW50LCBzdWJuZXRUeXBlOiBzdWJuZXRUeXBlIH07XG4gICAgfVxuXG4gICAgLy8gRXN0YWJsaXNoIHdoaWNoIHN1Ym5ldCBmaWx0ZXJzIGFyZSBnb2luZyB0byBiZSB1c2VkXG4gICAgbGV0IHN1Ym5ldEZpbHRlcnMgPSBwbGFjZW1lbnQuc3VibmV0RmlsdGVycyA/PyBbXTtcblxuICAgIC8vIEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggZXhpc3RpbmcgYGF2YWlsYWJpbGl0eVpvbmVzYCBhbmQgYG9uZVBlckF6YCBmdW5jdGlvbmFsaXR5XG4gICAgaWYgKHBsYWNlbWVudC5hdmFpbGFiaWxpdHlab25lcyAhPT0gdW5kZWZpbmVkKSB7IC8vIEZpbHRlciBieSBBWnMsIGlmIHNwZWNpZmllZFxuICAgICAgc3VibmV0RmlsdGVycy5wdXNoKFN1Ym5ldEZpbHRlci5hdmFpbGFiaWxpdHlab25lcyhwbGFjZW1lbnQuYXZhaWxhYmlsaXR5Wm9uZXMpKTtcbiAgICB9XG4gICAgaWYgKCEhcGxhY2VtZW50Lm9uZVBlckF6KSB7IC8vIEVuc3VyZSBvbmUgcGVyIEFaIGlmIHNwZWNpZmllZFxuICAgICAgc3VibmV0RmlsdGVycy5wdXNoKFN1Ym5ldEZpbHRlci5vbmVQZXJBeigpKTtcbiAgICB9XG5cbiAgICAvLyBPdmVyd3JpdGUgdGhlIHByb3ZpZGVkIHBsYWNlbWVudCBmaWx0ZXJzIGFuZCByZW1vdmUgdGhlIGF2YWlsYWJpbGl0eVpvbmVzIGFuZCBvbmVQZXJBeiBwcm9wZXJ0aWVzXG4gICAgcGxhY2VtZW50ID0geyAuLi5wbGFjZW1lbnQsIHN1Ym5ldEZpbHRlcnM6IHN1Ym5ldEZpbHRlcnMsIGF2YWlsYWJpbGl0eVpvbmVzOiB1bmRlZmluZWQsIG9uZVBlckF6OiB1bmRlZmluZWQgfTtcbiAgICBjb25zdCB7IGF2YWlsYWJpbGl0eVpvbmVzLCBvbmVQZXJBeiwgLi4ucmVzdCB9ID0gcGxhY2VtZW50O1xuXG4gICAgcmV0dXJuIHJlc3Q7XG4gIH1cbn1cblxuY2xhc3MgQ29tcG9zaXRlRGVwZW5kYWJsZSBpbXBsZW1lbnRzIElEZXBlbmRhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXBlbmRhYmxlcyA9IG5ldyBBcnJheTxJRGVwZW5kYWJsZT4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBEZXBlbmRhYmxlLmltcGxlbWVudCh0aGlzLCB7XG4gICAgICBnZXQgZGVwZW5kZW5jeVJvb3RzKCkge1xuICAgICAgICBjb25zdCByZXQgPSBuZXcgQXJyYXk8SUNvbnN0cnVjdD4oKTtcbiAgICAgICAgZm9yIChjb25zdCBkZXAgb2Ygc2VsZi5kZXBlbmRhYmxlcykge1xuICAgICAgICAgIHJldC5wdXNoKC4uLkRlcGVuZGFibGUub2YoZGVwKS5kZXBlbmRlbmN5Um9vdHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGNvbnN0cnVjdCB0byB0aGUgZGVwZW5kZW5jeSByb290c1xuICAgKi9cbiAgcHVibGljIGFkZChkZXA6IElEZXBlbmRhYmxlKSB7XG4gICAgdGhpcy5kZXBlbmRhYmxlcy5wdXNoKGRlcCk7XG4gIH1cbn1cblxuLyoqXG4gKiBJbnZva2UgYSBmdW5jdGlvbiBvbiBhIHZhbHVlIChmb3IgaXRzIHNpZGUgZWZmZWN0KSBhbmQgcmV0dXJuIHRoZSB2YWx1ZVxuICovXG5mdW5jdGlvbiB0YXA8VD4oeDogVCwgZm46ICh4OiBUKSA9PiB2b2lkKTogVCB7XG4gIGZuKHgpO1xuICByZXR1cm4geDtcbn1cbiJdfQ==
package/lib/vpc-v2.d.ts CHANGED
@@ -2,8 +2,8 @@ import { CfnVPC, DefaultInstanceTenancy, ISubnet } from 'aws-cdk-lib/aws-ec2';
2
2
  import { CfnResource } from 'aws-cdk-lib/core';
3
3
  import { Construct, IDependable } from 'constructs';
4
4
  import { IpamOptions, IIpamPool } from './ipam';
5
- import { IVpcV2, VpcV2Base } from './vpc-v2-base';
6
5
  import { SubnetV2Attributes } from './subnet-v2';
6
+ import { IVpcV2, VpcV2Base } from './vpc-v2-base';
7
7
  /**
8
8
  * Additional props needed for secondary Address
9
9
  */