@bitgo-beta/abstract-utxo 1.6.1-alpha.180 → 1.6.1-alpha.181

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"crossChainRecovery.d.ts","sourceRoot":"","sources":["../../../src/recovery/crossChainRecovery.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAIhD,oBAAY,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC;AAO1D,OAAO,EAAE,SAAS,EAAE,OAAO,EAA4B,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAKxE,MAAM,WAAW,+BAA+B;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,aAAK,OAAO,GAAG;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,WAAW,0BAA0B,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM;IAClF,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,wBAAwB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM;IAChF,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,aAAK,QAAQ,GAAG;IACd,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,EAAE,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrF,wBAAwB,IAAI,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChE,CAAC;AAEF,wBAAsB,SAAS,CAC7B,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,gBAAgB,EACtB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC,CAgB7B;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,YAAY,EAAE,gBAAgB,EAC9B,MAAM,EAAE,OAAO,GAAG,QAAQ,GACzB,OAAO,CAAC,cAAc,CAAC,CAczB;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAanG;AAsRD,aAAK,aAAa,GAAG;IACnB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,4CAA4C;IAC5C,YAAY,EAAE,gBAAgB,CAAC;IAC/B,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,eAAe,EAAE,MAAM,CAAC;IACxB,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gCAAgC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,EAC9E,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAsDlF"}
1
+ {"version":3,"file":"crossChainRecovery.d.ts","sourceRoot":"","sources":["../../../src/recovery/crossChainRecovery.ts"],"names":[],"mappings":"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"}
@@ -159,6 +159,7 @@ async function getFeeRateSatVB(coin) {
159
159
  btc: 80,
160
160
  tbtc: 80,
161
161
  tbtcsig: 80,
162
+ tbtcbgsig: 80,
162
163
  ltc: 100,
163
164
  tltc: 100,
164
165
  doge: 1000,
@@ -328,4 +329,4 @@ async function recoverCrossChain(bitgo, params) {
328
329
  }
329
330
  }
330
331
  exports.recoverCrossChain = recoverCrossChain;
331
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvc3NDaGFpblJlY292ZXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JlY292ZXJ5L2Nyb3NzQ2hhaW5SZWNvdmVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7R0FFRztBQUNILHFDQUFxQztBQUVyQyxnREFBZ0Q7QUFDaEQsbURBQTZEO0FBRTdELE1BQU0sRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztBQU14RSxtREFBa0Q7QUFFbEQsbURBQW9GO0FBR3BGLGlEQUE4QztBQUM5QyxrQ0FBeUQ7QUF5Q2xELEtBQUssVUFBVSxTQUFTLENBQzdCLEtBQWdCLEVBQ2hCLElBQXNCLEVBQ3RCLFFBQWdCO0lBRWhCLElBQUk7UUFDRixPQUFPLE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0tBQ25EO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDViwrQ0FBK0M7UUFDL0Msa0pBQWtKO1FBQ2xKLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxHQUFHLEVBQUU7WUFDbkIsTUFBTSxDQUFDLENBQUM7U0FDVDtLQUNGO0lBRUQsSUFBSTtRQUNGLE9BQU8sTUFBTSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7S0FDcEQ7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLFFBQVEsbUJBQW1CLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7S0FDcEY7QUFDSCxDQUFDO0FBcEJELDhCQW9CQztBQUVEOzs7O0dBSUc7QUFDSSxLQUFLLFVBQVUsYUFBYSxDQUNqQyxZQUE4QixFQUM5QixNQUEwQjtJQUUxQixJQUFJLEtBQXFCLENB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R0FBRyxFQUFFO1FBQ1AsT0FBTztZQUNMLE9BQU8sRUFBRSxNQUFNLFlBQVksaUJBQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtZQUN6QixLQUFLO1lBQ0wsTUFBTTtZQUNOLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRTtZQUN4QyxZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUU7WUFDNUMsY0FBYztTQUNmLENBQUM7S0FDSDtTQUFNO1FBQ0wsT0FBTztZQUNMLEtBQUs7WUFDTCxNQUFNO1lBQ04sUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRO1lBQ3pCLE9BQU8sRUFBRSxVQUFVLENBQUMsV0FBVyxFQUFFLGNBQWMsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztZQUM5RSxPQUFPLEVBQUUsTUFBTSxDQUFDLGVBQWU7WUFDL0IsSUFBSSxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFO1NBQ25DLENBQUM7S0FDSDtBQUNILENBQUM7QUF6REQsOENBeURDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0ICogYXMgQmx1ZWJpcmQgZnJvbSAnYmx1ZWJpcmQnO1xuXG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IGJpcDMyLCBCSVAzMkludGVyZmFjZSB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuY29uc3QgeyB1bnNwZW50U3VtLCBzY3JpcHRUeXBlRm9yQ2hhaW4sIG91dHB1dFNjcmlwdHMgfSA9IHV0eG9saWIuYml0Z287XG5leHBvcnQgdHlwZSBSb290V2FsbGV0S2V5cyA9IHV0eG9saWIuYml0Z28uUm9vdFdhbGxldEtleXM7XG50eXBlIFVuc3BlbnQ8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludCA9IG51bWJlcj4gPSB1dHhvbGliLmJpdGdvLlVuc3BlbnQ8VE51bWJlcj47XG50eXBlIFdhbGxldFVuc3BlbnQ8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludCA9IG51bWJlcj4gPSB1dHhvbGliLmJpdGdvLldhbGxldFVuc3BlbnQ8VE51bWJlcj47XG50eXBlIFdhbGxldFVuc3BlbnRMZWdhY3k8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludCA9IG51bWJlcj4gPSB1dHhvbGliLmJpdGdvLldhbGxldFVuc3BlbnRMZWdhY3k8VE51bWJlcj47XG5cbmltcG9ydCB7IERpbWVuc2lvbnMgfSBmcm9tICdAYml0Z28tYmV0YS91bnNwZW50cyc7XG5cbmltcG9ydCB7IEJpdEdvQmFzZSwgSVdhbGxldCwgS2V5Y2hhaW4sIFRyaXBsZSwgV2FsbGV0IH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RVdHhvQ29pbiwgVHJhbnNhY3Rpb25JbmZvIH0gZnJvbSAnLi4vYWJzdHJhY3RVdHhvQ29pbic7XG5cbmltcG9ydCB7IGRlY3J5cHQgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstYXBpJztcbmltcG9ydCB7IHNpZ25BbmRWZXJpZnlXYWxsZXRUcmFuc2FjdGlvbiB9IGZyb20gJy4uL3NpZ24nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkUmVjb3ZlcnlUcmFuc2FjdGlvbk9wdGlvbnMge1xuICB3YWxsZXQ6IHN0cmluZztcbiAgZmF1bHR5VHhJZDogc3RyaW5nO1xuICByZWNvdmVyeUFkZHJlc3M6IHN0cmluZztcbn1cblxudHlwZSBGZWVJbmZvID0ge1xuICBzaXplOiBudW1iZXI7XG4gIGZlZVJhdGU6IG51bWJlcjtcbiAgZmVlOiBudW1iZXI7XG4gIHBheUdvRmVlOiBudW1iZXI7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIENyb3NzQ2hhaW5SZWNvdmVyeVVuc2lnbmVkPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQgPSBudW1iZXI+IHtcbiAgdHhIZXg6IHN0cmluZztcbiAgdHhJbmZvOiBUcmFuc2FjdGlvbkluZm88VE51bWJlcj47XG4gIHdhbGxldElkOiBzdHJpbmc7XG4gIGZlZUluZm86IEZlZUluZm87XG4gIGFkZHJlc3M6IHN0cmluZztcbiAgY29pbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyb3NzQ2hhaW5SZWNvdmVyeVNpZ25lZDxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50ID0gbnVtYmVyPiB7XG4gIHZlcnNpb246IDEgfCAyO1xuICB0eEhleDogc3RyaW5nO1xuICB0eEluZm86IFRyYW5zYWN0aW9uSW5mbzxUTnVtYmVyPjtcbiAgd2FsbGV0SWQ6IHN0cmluZztcbiAgc291cmNlQ29pbjogc3RyaW5nO1xuICByZWNvdmVyeUNvaW46IHN0cmluZztcbiAgcmVjb3ZlcnlBZGRyZXNzPzogc3RyaW5nO1xuICByZWNvdmVyeUFtb3VudD86IFROdW1iZXI7XG59XG5cbnR5cGUgV2FsbGV0VjEgPSB7XG4gIGtleWNoYWluczogeyB4cHViOiBzdHJpbmcgfVtdO1xuICBhZGRyZXNzKHsgYWRkcmVzcyB9OiB7IGFkZHJlc3M6IHN0cmluZyB9KTogUHJvbWlzZTx7IGNoYWluOiBudW1iZXI7IGluZGV4OiBudW1iZXIgfT47XG4gIGdldEVuY3J5cHRlZFVzZXJLZXljaGFpbigpOiBQcm9taXNlPHsgZW5jcnlwdGVkWHBydjogc3RyaW5nIH0+O1xufTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFdhbGxldChcbiAgYml0Z286IEJpdEdvQmFzZSxcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbixcbiAgd2FsbGV0SWQ6IHN0cmluZ1xuKTogUHJvbWlzZTxJV2FsbGV0IHwgV2FsbGV0VjE+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgY29pbi53YWxsZXRzKCkuZ2V0KHsgaWQ6IHdhbGxldElkIH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gVE9ETzogQkctNDYzNjQgaGFuZGxlIGVycm9ycyBtb3JlIGdyYWNlZnVsbHlcbiAgICAvLyBUaGUgdjIgZW5kcG9pbnQgY29pbi53YWxsZXRzKCkuZ2V0KCkgbWF5IHRocm93IDQwNCBvciA0MDAgZXJyb3JzLCBidXQgdGhpcyBzaG91bGQgbm90IHByZXZlbnQgdXMgZnJvbSBzZWFyY2hpbmcgZm9yIHRoZSB3YWxsZXRJZCBpbiB2MSB3YWxsZXRzLlxuICAgIGlmIChlLnN0YXR1cyA+PSA1MDApIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgYml0Z28ud2FsbGV0cygpLmdldCh7IGlkOiB3YWxsZXRJZCB9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgY291bGQgbm90IGdldCB3YWxsZXQgJHt3YWxsZXRJZH0gZnJvbSB2MSBvciB2MjogJHtlLnRvU3RyaW5nKCl9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0gcmVjb3ZlcnlDb2luXG4gKiBAcGFyYW0gd2FsbGV0XG4gKiBAcmV0dXJuIHdhbGxldCBwdWJrZXlzXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRXYWxsZXRLZXlzKFxuICByZWNvdmVyeUNvaW46IEFic3RyYWN0VXR4b0NvaW4sXG4gIHdhbGxldDogSVdhbGxldCB8IFdhbGxldFYxXG4pOiBQcm9taXNlPFJvb3RXYWxsZXRLZXlzPiB7XG4gIGxldCB4cHViczogVHJpcGxlPHN0cmluZz47XG5cbiAgaWYgKHdhbGxldCBpbnN0YW5jZW9mIFdhbGxldCkge1xuICAgIGNvbnN0IGtleWNoYWlucyA9IChhd2FpdCByZWNvdmVyeUNvaW4ua2V5Y2hhaW5zKCkuZ2V0S2V5c0ZvclNpZ25pbmcoeyB3YWxsZXQgfSkpIGFzIHVua25vd24gYXMgS2V5Y2hhaW5bXTtcbiAgICBpZiAoa2V5Y2hhaW5zLmxlbmd0aCAhPT0gMykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCB0cmlwbGUgZ290ICR7a2V5Y2hhaW5zLmxlbmd0aH1gKTtcbiAgICB9XG4gICAgeHB1YnMgPSBrZXljaGFpbnMubWFwKChrKSA9PiBrLnB1YikgYXMgVHJpcGxlPHN0cmluZz47XG4gIH0gZWxzZSB7XG4gICAgeHB1YnMgPSAod2FsbGV0IGFzIFdhbGxldFYxKS5rZXljaGFpbnMubWFwKChrKSA9PiBrLnhwdWIpIGFzIFRyaXBsZTxzdHJpbmc+O1xuICB9XG5cbiAgcmV0dXJuIG5ldyB1dHhvbGliLmJpdGdvLlJvb3RXYWxsZXRLZXlzKHhwdWJzLm1hcCgoaykgPT4gYmlwMzIuZnJvbUJhc2U1OChrKSkgYXMgVHJpcGxlPEJJUDMySW50ZXJmYWNlPik7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpc1dhbGxldEFkZHJlc3Mod2FsbGV0OiBJV2FsbGV0IHwgV2FsbGV0VjEsIGFkZHJlc3M6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICB0cnkge1xuICAgIGxldCBhZGRyZXNzRGF0YTtcbiAgICBpZiAod2FsbGV0IGluc3RhbmNlb2YgV2FsbGV0KSB7XG4gICAgICBhZGRyZXNzRGF0YSA9IGF3YWl0IHdhbGxldC5nZXRBZGRyZXNzKHsgYWRkcmVzcyB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWRkcmVzc0RhdGEgPSBhd2FpdCAod2FsbGV0IGFzIFdhbGxldFYxKS5hZGRyZXNzKHsgYWRkcmVzcyB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWRkcmVzc0RhdGEgIT09IHVuZGVmaW5lZDtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSBjb2luXG4gKiBAcGFyYW0gdHhpZFxuICogQHBhcmFtIGFtb3VudFR5cGVcbiAqIEBwYXJhbSB3YWxsZXRcbiAqIEBwYXJhbSBhcGlLZXkgLSBhIGJsb2NrY2hhaXIgYXBpIGtleVxuICogQHJldHVybiBhbGwgdW5zcGVudHMgZm9yIHRyYW5zYWN0aW9uIG91dHB1dHMsIGluY2x1ZGluZyBvdXRwdXRzIGZyb20gb3RoZXIgdHJhbnNhY3Rpb25zXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldEFsbFJlY292ZXJ5T3V0cHV0czxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50ID0gbnVtYmVyPihcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbixcbiAgdHhpZDogc3RyaW5nLFxuICBhbW91bnRUeXBlOiAnbnVtYmVyJyB8ICdiaWdpbnQnID0gJ251bWJlcicsXG4gIHdhbGxldDogSVdhbGxldCB8IFdhbGxldFYxLFxuICBhcGlLZXk/OiBzdHJpbmdcbik6IFByb21pc2U8VW5zcGVudDxUTnVtYmVyPltdPiB7XG4gIGNvbnN0IGFwaSA9IGNvaW4uZ2V0UmVjb3ZlcnlQcm92aWRlcihhcGlLZXkpO1xuICBjb25zdCB0eCA9IGF3YWl0IGFwaS5nZXRUcmFuc2FjdGlvbklPKHR4aWQpO1xuICBjb25zdCB3YWxsZXRBZGRyZXNzZXMgPSAoXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICB0eC5vdXRwdXRzLm1hcChhc3luYyAob3V0cHV0KSA9PiB7XG4gICAgICAgIC8vIEZvciBzb21lIGNvaW5zIChiY2gpIHdlIG5lZWQgdG8gY29udmVydCB0aGUgYWRkcmVzcyB0byBsZWdhY3kgZm9ybWF0IHNpbmNlIHRoZSBhcGkgcmV0dXJucyB0aGUgYWRkcmVzc1xuICAgICAgICAvLyBpbiBub24gbGVnYWN5IGZvcm1hdC4gSG93ZXZlciwgd2Ugd2FudCB0byBrZWVwIHRoZSBhZGRyZXNzIGluIHRoZSBzYW1lIGZvcm1hdCBhcyB0aGUgcmVzcG9uc2Ugc2luY2Ugd2VcbiAgICAgICAgLy8gYXJlIGdvaW5nIHRvIGhpdCB0aGUgQVBJIGFnYWluIHRvIGZldGNoIGFkZHJlc3MgdW5zcGVudHMuXG4gICAgICAgIGNvbnN0IGNhbm9uaWNhbEFkZHJlc3MgPSBjb2luLmNhbm9uaWNhbEFkZHJlc3Mob3V0cHV0LmFkZHJlc3MpO1xuICAgICAgICBjb25zdCBpc1dhbGxldE93bmVkID0gYXdhaXQgaXNXYWxsZXRBZGRyZXNzKHdhbGxldCwgY2Fub25pY2FsQWRkcmVzcyk7XG4gICAgICAgIHJldHVybiBpc1dhbGxldE93bmVkID8gb3V0cHV0LmFkZHJlc3MgOiBudWxsO1xuICAgICAgfSlcbiAgICApXG4gICkuZmlsdGVyKChhZGRyZXNzKSA9PiBhZGRyZXNzICE9PSBudWxsKTtcblxuICBjb25zdCB1bnNwZW50cyA9IGF3YWl0IGFwaS5nZXRVbnNwZW50c0ZvckFkZHJlc3Nlcyh3YWxsZXRBZGRyZXNzZXMgYXMgc3RyaW5nW10pO1xuICBpZiAodW5zcGVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBObyByZWNvdmVyeSB1bnNwZW50cyBmb3VuZC5gKTtcbiAgfVxuICAvLyB0aGUgYXBpIG1heSByZXR1cm4gY2FzaGFkZHIncyBpbnN0ZWFkIG9mIGxlZ2FjeSBmb3IgQkNIIGFuZCBCQ0hBXG4gIC8vIGRvd25zdHJlYW0gcHJvY2Vzc2VzJ3Mgb25seSBleHBlY3QgbGVnYWN5IGFkZHJlc3Nlc1xuICByZXR1cm4gdW5zcGVudHMubWFwKChyZWNvdmVyeU91dHB1dCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5yZWNvdmVyeU91dHB1dCxcbiAgICAgIGFkZHJlc3M6IGNvaW4uY2Fub25pY2FsQWRkcmVzcyhyZWNvdmVyeU91dHB1dC5hZGRyZXNzKSxcbiAgICAgIHZhbHVlOiB1dHhvbGliLmJpdGdvLnRvVE51bWJlcjxUTnVtYmVyPihCaWdJbnQocmVjb3ZlcnlPdXRwdXQudmFsdWUpLCBhbW91bnRUeXBlKSxcbiAgICB9O1xuICB9KTtcbn1cblxuLyoqXG4gKiBEYXRhIHJlcXVpcmVkIGZvciBhZGRyZXNzIGFuZCBzaWduYXR1cmUgZGVyaXZhdGlvblxuICovXG50eXBlIFNjcmlwdElkID0ge1xuICBjaGFpbjogbnVtYmVyO1xuICBpbmRleDogbnVtYmVyO1xufTtcblxuYXN5bmMgZnVuY3Rpb24gZ2V0U2NyaXB0SWQoY29pbjogQWJzdHJhY3RVdHhvQ29pbiwgd2FsbGV0OiBJV2FsbGV0IHwgV2FsbGV0VjEsIHNjcmlwdDogQnVmZmVyKTogUHJvbWlzZTxTY3JpcHRJZD4ge1xuICBjb25zdCBhZGRyZXNzID0gdXR4b2xpYi5hZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQoc2NyaXB0LCBjb2luLm5ldHdvcmspO1xuICBsZXQgYWRkcmVzc0RhdGE6IHsgY2hhaW46IG51bWJlcjsgaW5kZXg6IG51bWJlciB9O1xuICBpZiAod2FsbGV0IGluc3RhbmNlb2YgV2FsbGV0KSB7XG4gICAgYWRkcmVzc0RhdGEgPSBhd2FpdCB3YWxsZXQuZ2V0QWRkcmVzcyh7IGFkZHJlc3MgfSk7XG4gIH0gZWxzZSB7XG4gICAgYWRkcmVzc0RhdGEgPSBhd2FpdCAod2FsbGV0IGFzIFdhbGxldFYxKS5hZGRyZXNzKHsgYWRkcmVzcyB9KTtcbiAgfVxuICBpZiAodHlwZW9mIGFkZHJlc3NEYXRhLmNoYWluID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgYWRkcmVzc0RhdGEuaW5kZXggPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHsgY2hhaW46IGFkZHJlc3NEYXRhLmNoYWluLCBpbmRleDogYWRkcmVzc0RhdGEuaW5kZXggfTtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBhZGRyZXNzIGRhdGE6ICR7SlNPTi5zdHJpbmdpZnkoYWRkcmVzc0RhdGEpfWApO1xufVxuXG4vKipcbiAqIExvb2t1cCBhZGRyZXNzIGRhdGEgZnJvbSB1bnNwZW50cyBvbiBzb3VyY2VDb2luIGluIGFkZHJlc3MgZGF0YWJhc2Ugb2YgcmVjb3ZlcnlDb2luLlxuICogUmV0dXJuIGZ1bGwgd2FsbGV0VW5zcGVudHMgaW5jbHVkaW5nIHNjcmlwdElkIGluIHNvdXJjZUNvaW4gZm9ybWF0LlxuICpcbiAqIEBwYXJhbSBzb3VyY2VDb2luXG4gKiBAcGFyYW0gcmVjb3ZlcnlDb2luXG4gKiBAcGFyYW0gdW5zcGVudHNcbiAqIEBwYXJhbSB3YWxsZXRcbiAqIEByZXR1cm4gd2FsbGV0VW5zcGVudHNcbiAqL1xuYXN5bmMgZnVuY3Rpb24gdG9XYWxsZXRVbnNwZW50czxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50ID0gbnVtYmVyPihcbiAgc291cmNlQ29pbjogQWJzdHJhY3RVdHhvQ29pbixcbiAgcmVjb3ZlcnlDb2luOiBBYnN0cmFjdFV0eG9Db2luLFxuICB1bnNwZW50czogVW5zcGVudDxUTnVtYmVyPltdLFxuICB3YWxsZXQ6IElXYWxsZXQgfCBXYWxsZXRWMVxuKTogUHJvbWlzZTxXYWxsZXRVbnNwZW50PFROdW1iZXI+W10+IHtcbiAgY29uc3QgYWRkcmVzc2VzID0gbmV3IFNldCh1bnNwZW50cy5tYXAoKHUpID0+IHUuYWRkcmVzcykpO1xuICByZXR1cm4gKFxuICAgIGF3YWl0IEJsdWViaXJkLm1hcFNlcmllcyhhZGRyZXNzZXMsIGFzeW5jIChhZGRyZXNzKTogUHJvbWlzZTxXYWxsZXRVbnNwZW50PFROdW1iZXI+W10+ID0+IHtcbiAgICAgIGxldCBzY3JpcHRJZDtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNjcmlwdElkID0gYXdhaXQgZ2V0U2NyaXB0SWQocmVjb3ZlcnlDb2luLCB3YWxsZXQsIHV0eG9saWIuYWRkcmVzcy50b091dHB1dFNjcmlwdChhZGRyZXNzLCBzb3VyY2VDb2luLm5ldHdvcmspKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgZXJyb3IgZ2V0dGluZyBzY3JpcHRJZCBmb3IgJHthZGRyZXNzfTpgLCBlKTtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuc3BlbnRzXG4gICAgICAgIC5maWx0ZXIoKHUpID0+IHUuYWRkcmVzcyA9PT0gYWRkcmVzcylcbiAgICAgICAgLm1hcCgodSkgPT4gKHtcbiAgICAgICAgICAuLi51LFxuICAgICAgICAgIC4uLnNjcmlwdElkLFxuICAgICAgICB9KSk7XG4gICAgfSlcbiAgKS5mbGF0KCk7XG59XG5cbi8qKlxuICogQHBhcmFtIGNvaW5cbiAqIEByZXR1cm4gZmVlUmF0ZSBmb3IgdHJhbnNhY3Rpb25cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0RmVlUmF0ZVNhdFZCKGNvaW46IEFic3RyYWN0VXR4b0NvaW4pOiBQcm9taXNlPG51bWJlcj4ge1xuICAvLyBUT0RPOiB1c2UgZmVlUmF0ZSBBUElcbiAgY29uc3QgZmVlUmF0ZSA9IHtcbiAgICBiY2g6IDIwLFxuICAgIHRiY2g6IDIwLFxuICAgIGJjaGE6IDIwLFxuICAgIHRiY2hhOiAyMCxcbiAgICBic3Y6IDIwLFxuICAgIHRic3Y6IDIwLFxuICAgIGJ0YzogODAsXG4gICAgdGJ0YzogODAsXG4gICAgdGJ0Y3NpZzogODAsXG4gICAgbHRjOiAxMDAsXG4gICAgdGx0YzogMTAwLFxuICAgIGRvZ2U6IDEwMDAsXG4gICAgdGRvZ2U6IDEwMDAsXG4gIH1bY29pbi5nZXRDaGFpbigpXTtcblxuICBpZiAoIWZlZVJhdGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG5vIGZlZVJhdGUgZm9yICR7Y29pbi5nZXRDaGFpbigpfWApO1xuICB9XG5cbiAgcmV0dXJuIGZlZVJhdGU7XG59XG5cbi8qKlxuICogQHBhcmFtIHhwcnZcbiAqIEBwYXJhbSBwYXNzcGhyYXNlXG4gKiBAcGFyYW0gd2FsbGV0XG4gKiBAcmV0dXJuIHNpZ25pbmcga2V5XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldFBydih4cHJ2Pzogc3RyaW5nLCBwYXNzcGhyYXNlPzogc3RyaW5nLCB3YWxsZXQ/OiBJV2FsbGV0IHwgV2FsbGV0VjEpOiBQcm9taXNlPEJJUDMySW50ZXJmYWNlPiB7XG4gIGlmICh4cHJ2KSB7XG4gICAgY29uc3Qga2V5ID0gYmlwMzIuZnJvbUJhc2U1OCh4cHJ2KTtcbiAgICBpZiAoa2V5LmlzTmV1dGVyZWQoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBub3QgYSBwcml2YXRlIGtleWApO1xuICAgIH1cbiAgICByZXR1cm4ga2V5O1xuICB9XG5cbiAgaWYgKCF3YWxsZXQgfHwgIXBhc3NwaHJhc2UpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG5vIHhwcnYgZ2l2ZW46IG5lZWQgd2FsbGV0IGFuZCBwYXNzcGhyYXNlIHRvIGNvbnRpbnVlYCk7XG4gIH1cblxuICBsZXQgZW5jcnlwdGVkUHJ2OiBzdHJpbmc7XG4gIGlmICh3YWxsZXQgaW5zdGFuY2VvZiBXYWxsZXQpIHtcbiAgICBlbmNyeXB0ZWRQcnYgPSAoYXdhaXQgd2FsbGV0LmdldEVuY3J5cHRlZFVzZXJLZXljaGFpbigpKS5lbmNyeXB0ZWRQcnY7XG4gIH0gZWxzZSB7XG4gICAgZW5jcnlwdGVkUHJ2ID0gKGF3YWl0ICh3YWxsZXQgYXMgV2FsbGV0VjEpLmdldEVuY3J5cHRlZFVzZXJLZXljaGFpbigpKS5lbmNyeXB0ZWRYcHJ2O1xuICB9XG5cbiAgcmV0dXJuIGdldFBydihkZWNyeXB0KHBhc3NwaHJhc2UsIGVuY3J5cHRlZFBydikpO1xufVxuXG4vKipcbiAqIEBwYXJhbSBuZXR3b3JrXG4gKiBAcGFyYW0gdW5zcGVudHNcbiAqIEBwYXJhbSB0YXJnZXRBZGRyZXNzXG4gKiBAcGFyYW0gZmVlUmF0ZVNhdFZCXG4gKiBAcGFyYW0gc2lnbmVyIC0gaWYgc2V0LCBzaWduIHRyYW5zYWN0aW9uXG4gKiBAcGFyYW0gYW1vdW50VHlwZVxuICogQHJldHVybiB0cmFuc2FjdGlvbiBzcGVuZGluZyBmdWxsIGlucHV0IGFtb3VudCB0byB0YXJnZXRBZGRyZXNzXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVN3ZWVwVHJhbnNhY3Rpb248VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludCA9IG51bWJlcj4oXG4gIG5ldHdvcms6IHV0eG9saWIuTmV0d29yayxcbiAgdW5zcGVudHM6IFdhbGxldFVuc3BlbnQ8VE51bWJlcj5bXSxcbiAgdGFyZ2V0QWRkcmVzczogc3RyaW5nLFxuICBmZWVSYXRlU2F0VkI6IG51bWJlcixcbiAgc2lnbmVyPzogdXR4b2xpYi5iaXRnby5XYWxsZXRVbnNwZW50U2lnbmVyPFJvb3RXYWxsZXRLZXlzPixcbiAgYW1vdW50VHlwZTogJ251bWJlcicgfCAnYmlnaW50JyA9ICdudW1iZXInXG4pOiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbjxUTnVtYmVyPiB7XG4gIGNvbnN0IGlucHV0VmFsdWUgPSB1bnNwZW50U3VtPFROdW1iZXI+KHVuc3BlbnRzLCBhbW91bnRUeXBlKTtcbiAgY29uc3QgdnNpemUgPSBEaW1lbnNpb25zLmZyb21VbnNwZW50cyh1bnNwZW50cywge1xuICAgIHAydHI6IHsgc2NyaXB0UGF0aExldmVsOiAxIH0sXG4gICAgcDJ0ck11c2lnMjogeyBzY3JpcHRQYXRoTGV2ZWw6IHVuZGVmaW5lZCB9LFxuICB9KVxuICAgIC5wbHVzKERpbWVuc2lvbnMuZnJvbU91dHB1dCh7IHNjcmlwdDogdXR4b2xpYi5hZGRyZXNzLnRvT3V0cHV0U2NyaXB0KHRhcmdldEFkZHJlc3MsIG5ldHdvcmspIH0pKVxuICAgIC5nZXRWU2l6ZSgpO1xuICBjb25zdCBmZWUgPSB2c2l6ZSAqIGZlZVJhdGVTYXRWQjtcblxuICBjb25zdCB0cmFuc2FjdGlvbkJ1aWxkZXIgPSB1dHhvbGliLmJpdGdvLmNyZWF0ZVRyYW5zYWN0aW9uQnVpbGRlckZvck5ldHdvcms8VE51bWJlcj4obmV0d29yayk7XG4gIHRyYW5zYWN0aW9uQnVpbGRlci5hZGRPdXRwdXQoXG4gICAgdGFyZ2V0QWRkcmVzcyxcbiAgICB1dHhvbGliLmJpdGdvLnRvVE51bWJlcjxUTnVtYmVyPihCaWdJbnQoaW5wdXRWYWx1ZSkgLSBCaWdJbnQoZmVlKSwgYW1vdW50VHlwZSlcbiAgKTtcbiAgdW5zcGVudHMuZm9yRWFjaCgodW5zcGVudCkgPT4ge1xuICAgIHV0eG9saWIuYml0Z28uYWRkVG9UcmFuc2FjdGlvbkJ1aWxkZXIodHJhbnNhY3Rpb25CdWlsZGVyLCB1bnNwZW50KTtcbiAgfSk7XG4gIGxldCB0cmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uQnVpbGRlci5idWlsZEluY29tcGxldGUoKTtcbiAgaWYgKHNpZ25lcikge1xuICAgIHRyYW5zYWN0aW9uID0gc2lnbkFuZFZlcmlmeVdhbGxldFRyYW5zYWN0aW9uPFROdW1iZXI+KHRyYW5zYWN0aW9uQnVpbGRlciwgdW5zcGVudHMsIHNpZ25lciwge1xuICAgICAgaXNMYXN0U2lnbmF0dXJlOiBmYWxzZSxcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gdHJhbnNhY3Rpb247XG59XG5cbmZ1bmN0aW9uIGdldFR4SW5mbzxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50ID0gbnVtYmVyPihcbiAgdHJhbnNhY3Rpb246IHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uPFROdW1iZXI+LFxuICB1bnNwZW50czogV2FsbGV0VW5zcGVudDxUTnVtYmVyPltdLFxuICB3YWxsZXRJZDogc3RyaW5nLFxuICB3YWxsZXRLZXlzOiBSb290V2FsbGV0S2V5cyxcbiAgYW1vdW50VHlwZTogJ251bWJlcicgfCAnYmlnaW50JyA9ICdudW1iZXInXG4pOiBUcmFuc2FjdGlvbkluZm88VE51bWJlcj4ge1xuICBjb25zdCBpbnB1dEFtb3VudCA9IHV0eG9saWIuYml0Z28udW5zcGVudFN1bTxUTnVtYmVyPih1bnNwZW50cywgYW1vdW50VHlwZSk7XG4gIGNvbnN0IG91dHB1dEFtb3VudCA9IHV0eG9saWIuYml0Z28udG9UTnVtYmVyPFROdW1iZXI+KFxuICAgIHRyYW5zYWN0aW9uLm91dHMucmVkdWNlKChzdW0sIG8pID0+IHN1bSArIEJpZ0ludChvLnZhbHVlKSwgQmlnSW50KDApKSxcbiAgICBhbW91bnRUeXBlXG4gICk7XG4gIGNvbnN0IG91dHB1dHMgPSB0cmFuc2FjdGlvbi5vdXRzLm1hcCgobykgPT4gKHtcbiAgICBhZGRyZXNzOiB1dHhvbGliLmFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdChvLnNjcmlwdCwgdHJhbnNhY3Rpb24ubmV0d29yayksXG4gICAgdmFsdWVTdHJpbmc6IG8udmFsdWUudG9TdHJpbmcoKSxcbiAgICBjaGFuZ2U6IGZhbHNlLFxuICB9KSk7XG4gIGNvbnN0IGlucHV0cyA9IHVuc3BlbnRzLm1hcCgodSkgPT4ge1xuICAgIC8vIE5PVEU6XG4gICAgLy8gVGhlIGByZWRlZW1TY3JpcHRgIGFuZCBgd2FsbGV0U2NyaXB0YCBwcm9wZXJ0aWVzIGFyZSByZXF1aXJlZCBmb3IgbGVnYWN5IHZlcnNpb25zIG9mIEJpdEdvSlNcbiAgICAvLyB3aGljaCBtaWdodCByZXF1aXJlIHRoZXNlIHNjcmlwdHMgZm9yIHNpZ25pbmcuIFRoZSBXYWxsZXQgUmVjb3ZlcnkgV2l6YXJkIChXUlcpIGNhbiBjcmVhdGVcbiAgICAvLyB1bnNpZ25lZCBwcmVidWlsZHMgdGhhdCBhcmUgc3VibWl0dGVkIHRvIEJpdEdvSlMgaW5zdGFuY2VzIHdoaWNoIGFyZSBub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWVcbiAgICAvLyB2ZXJzaW9uLlxuICAgIGNvbnN0IGFkZHJlc3NLZXlzID0gd2FsbGV0S2V5cy5kZXJpdmVGb3JDaGFpbkFuZEluZGV4KHUuY2hhaW4sIHUuaW5kZXgpO1xuICAgIGNvbnN0IHNjcmlwdFR5cGUgPSBzY3JpcHRUeXBlRm9yQ2hhaW4odS5jaGFpbik7XG4gICAgY29uc3QgeyByZWRlZW1TY3JpcHQsIHdpdG5lc3NTY3JpcHQgfSA9IG91dHB1dFNjcmlwdHMuY3JlYXRlT3V0cHV0U2NyaXB0Mm9mMyhhZGRyZXNzS2V5cy5wdWJsaWNLZXlzLCBzY3JpcHRUeXBlKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi51LFxuICAgICAgd2FsbGV0OiB3YWxsZXRJZCxcbiAgICAgIGZyb21XYWxsZXQ6IHdhbGxldElkLFxuICAgICAgcmVkZWVtU2NyaXB0OiByZWRlZW1TY3JpcHQ/LnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIHdpdG5lc3NTY3JpcHQ6IHdpdG5lc3NTY3JpcHQ/LnRvU3RyaW5nKCdoZXgnKSxcbiAgICB9IGFzIFdhbGxldFVuc3BlbnRMZWdhY3k8VE51bWJlcj47XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGlucHV0QW1vdW50LFxuICAgIG91dHB1dEFtb3VudCxcbiAgICBtaW5lckZlZTogaW5wdXRBbW91bnQgLSBvdXRwdXRBbW91bnQsXG4gICAgc3BlbmRBbW91bnQ6IG91dHB1dEFtb3VudCxcbiAgICBpbnB1dHMsXG4gICAgdW5zcGVudHM6IGlucHV0cyxcbiAgICBvdXRwdXRzLFxuICAgIGV4dGVybmFsT3V0cHV0czogb3V0cHV0cyxcbiAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICBwYXlHb0ZlZTogMCxcbiAgfSAvKiBjYXN0IHRvIFRyYW5zYWN0aW9uSW5mbyB0byBhbGxvdyBleHRyYSBmaWVsZHMgbWF5IGJlIHJlcXVpcmVkIGJ5IGxlZ2FjeSBjb25zdW1lcnMgb2YgdGhpcyBkYXRhICovIGFzIFRyYW5zYWN0aW9uSW5mbzxUTnVtYmVyPjtcbn1cblxuZnVuY3Rpb24gZ2V0RmVlSW5mbzxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50ID0gbnVtYmVyPihcbiAgdHJhbnNhY3Rpb246IHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uPFROdW1iZXI+LFxuICB1bnNwZW50czogV2FsbGV0VW5zcGVudDxUTnVtYmVyPltdLFxuICBhbW91bnRUeXBlOiAnbnVtYmVyJyB8ICdiaWdpbnQnID0gJ251bWJlcidcbik6IEZlZUluZm8ge1xuICBjb25zdCB2c2l6ZSA9IERpbWVuc2lvbnMuZnJvbVVuc3BlbnRzKHVuc3BlbnRzLCB7XG4gICAgcDJ0cjogeyBzY3JpcHRQYXRoTGV2ZWw6IDEgfSxcbiAgICBwMnRyTXVzaWcyOiB7IHNjcmlwdFBhdGhMZXZlbDogdW5kZWZpbmVkIH0sXG4gIH0pXG4gICAgLnBsdXMoRGltZW5zaW9ucy5mcm9tT3V0cHV0cyh0cmFuc2FjdGlvbi5vdXRzKSlcbiAgICAuZ2V0VlNpemUoKTtcbiAgY29uc3QgaW5wdXRBbW91bnQgPSB1dHhvbGliLmJpdGdvLnVuc3BlbnRTdW08VE51bWJlcj4odW5zcGVudHMsIGFtb3VudFR5cGUpO1xuICBjb25zdCBvdXRwdXRBbW91bnQgPSB0cmFuc2FjdGlvbi5vdXRzLnJlZHVjZSgoc3VtLCBvKSA9PiBzdW0gKyBCaWdJbnQoby52YWx1ZSksIEJpZ0ludCgwKSk7XG4gIGNvbnN0IGZlZSA9IE51bWJlcihCaWdJbnQoaW5wdXRBbW91bnQpIC0gb3V0cHV0QW1vdW50KTtcbiAgcmV0dXJuIHtcbiAgICBzaXplOiB2c2l6ZSxcbiAgICBmZWUsXG4gICAgZmVlUmF0ZTogZmVlIC8gdnNpemUsXG4gICAgcGF5R29GZWU6IDAsXG4gIH07XG59XG5cbnR5cGUgUmVjb3ZlclBhcmFtcyA9IHtcbiAgLyoqIFdhbGxldCBJRCAoY2FuIGJlIHYxIHdhbGxldCBvciB2MiB3YWxsZXQpICovXG4gIHdhbGxldElkOiBzdHJpbmc7XG4gIC8qKiBDb2luIHRvIGNyZWF0ZSB0aGUgdHJhbnNhY3Rpb24gZm9yICovXG4gIHNvdXJjZUNvaW46IEFic3RyYWN0VXR4b0NvaW47XG4gIC8qKiBDb2luIHRoYXQgd2FsbGV0IGtleXMgd2VyZSBzZXQgdXAgZm9yICovXG4gIHJlY292ZXJ5Q29pbjogQWJzdHJhY3RVdHhvQ29pbjtcbiAgLyoqIFNvdXJjZSBjb2luIHRyYW5zYWN0aW9uIHRvIHJlY292ZXIgb3V0cHV0cyBmcm9tIChzb3VyY2VDb2luKSAqL1xuICB0eGlkOiBzdHJpbmc7XG4gIC8qKiBTb3VyY2UgY29pbiBhZGRyZXNzIHRvIHNlbmQgdGhlIGZ1bmRzIHRvICovXG4gIHJlY292ZXJ5QWRkcmVzczogc3RyaW5nO1xuICAvKiogSWYgc2V0LCBkZWNyeXB0cyBwcml2YXRlIGtleSBhbmQgc2lnbnMgdHJhbnNhY3Rpb24gKi9cbiAgd2FsbGV0UGFzc3BocmFzZT86IHN0cmluZztcbiAgLyoqIElmIHNldCwgc2lnbnMgdHJhbnNhY3Rpb24gKi9cbiAgeHBydj86IHN0cmluZztcbiAgLyoqIGZvciB1dHhvIGNvaW5zIG90aGVyIHRoYW4gW0JUQyxUQlRDXSB0aGlzIGlzIGEgQmxvY2sgQ2hhaXIgYXBpIGtleSAqKi9cbiAgYXBpS2V5Pzogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBSZWNvdmVyIHdhbGxldCBkZXBvc2l0cyB0aGF0IHdlcmUgcmVjZWl2ZWQgb24gdGhlIHdyb25nIGJsb2NrY2hhaW5cbiAqIChmb3IgaW5zdGFuY2UgYml0Y29pbiBkZXBvc2l0cyB0aGF0IHdlcmUgcmVjZWl2ZWQgZm9yIGEgbGl0ZWNvaW4gd2FsbGV0KS5cbiAqXG4gKiBGZXRjaGVzIHRoZSB1bnNwZW50IGRhdGEgZnJvbSBCaXRHbydzIHB1YmxpYyBibG9ja2NoYWluIEFQSSBhbmQgdGhlIHNjcmlwdCBkYXRhIGZyb20gdGhlIHVzZXInc1xuICogd2FsbGV0LlxuICpcbiAqIEBwYXJhbSB7Qml0R29CYXNlfSBiaXRnb1xuICogQHBhcmFtIHtSZWNvdmVyUGFyYW1zfSBwYXJhbXNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlY292ZXJDcm9zc0NoYWluPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQgPSBudW1iZXI+KFxuICBiaXRnbzogQml0R29CYXNlLFxuICBwYXJhbXM6IFJlY292ZXJQYXJhbXNcbik6IFByb21pc2U8Q3Jvc3NDaGFpblJlY292ZXJ5U2lnbmVkPFROdW1iZXI+IHwgQ3Jvc3NDaGFpblJlY292ZXJ5VW5zaWduZWQ8VE51bWJlcj4+IHtcbiAgY29uc3Qgd2FsbGV0ID0gYXdhaXQgZ2V0V2FsbGV0KGJpdGdvLCBwYXJhbXMucmVjb3ZlcnlDb2luLCBwYXJhbXMud2FsbGV0SWQpO1xuICBjb25zdCB1bnNwZW50cyA9IGF3YWl0IGdldEFsbFJlY292ZXJ5T3V0cHV0czxUTnVtYmVyPihcbiAgICBwYXJhbXMuc291cmNlQ29pbixcbiAgICBwYXJhbXMudHhpZCxcbiAgICBwYXJhbXMuc291cmNlQ29pbi5hbW91bnRUeXBlLFxuICAgIHdhbGxldCxcbiAgICBwYXJhbXMuYXBpS2V5XG4gICk7XG4gIGNvbnN0IHdhbGxldFVuc3BlbnRzID0gYXdhaXQgdG9XYWxsZXRVbnNwZW50czxUTnVtYmVyPihwYXJhbXMuc291cmNlQ29pbiwgcGFyYW1zLnJlY292ZXJ5Q29pbiwgdW5zcGVudHMsIHdhbGxldCk7XG4gIGNvbnN0IHdhbGxldEtleXMgPSBhd2FpdCBnZXRXYWxsZXRLZXlzKHBhcmFtcy5yZWNvdmVyeUNvaW4sIHdhbGxldCk7XG4gIGNvbnN0IHBydiA9XG4gICAgcGFyYW1zLnhwcnYgfHwgcGFyYW1zLndhbGxldFBhc3NwaHJhc2UgPyBhd2FpdCBnZXRQcnYocGFyYW1zLnhwcnYsIHBhcmFtcy53YWxsZXRQYXNzcGhyYXNlLCB3YWxsZXQpIDogdW5kZWZpbmVkO1xuICBjb25zdCBzaWduZXIgPSBwcnZcbiAgICA/IG5ldyB1dHhvbGliLmJpdGdvLldhbGxldFVuc3BlbnRTaWduZXI8Um9vdFdhbGxldEtleXM+KHdhbGxldEtleXMsIHBydiwgd2FsbGV0S2V5cy5iaXRnbylcbiAgICA6IHVuZGVmaW5lZDtcbiAgY29uc3QgZmVlUmF0ZVNhdFZCID0gYXdhaXQgZ2V0RmVlUmF0ZVNhdFZCKHBhcmFtcy5zb3VyY2VDb2luKTtcbiAgY29uc3QgdHJhbnNhY3Rpb24gPSBjcmVhdGVTd2VlcFRyYW5zYWN0aW9uPFROdW1iZXI+KFxuICAgIHBhcmFtcy5zb3VyY2VDb2luLm5ldHdvcmssXG4gICAgd2FsbGV0VW5zcGVudHMsXG4gICAgcGFyYW1zLnJlY292ZXJ5QWRkcmVzcyxcbiAgICBmZWVSYXRlU2F0VkIsXG4gICAgc2lnbmVyLFxuICAgIHBhcmFtcy5zb3VyY2VDb2luLmFtb3VudFR5cGVcbiAgKTtcbiAgY29uc3QgcmVjb3ZlcnlBbW91bnQgPSB0cmFuc2FjdGlvbi5vdXRzWzBdLnZhbHVlO1xuICBjb25zdCB0eEhleCA9IHRyYW5zYWN0aW9uLnRvQnVmZmVyKCkudG9TdHJpbmcoJ2hleCcpO1xuICBjb25zdCB0eEluZm8gPSBnZXRUeEluZm88VE51bWJlcj4oXG4gICAgdHJhbnNhY3Rpb24sXG4gICAgd2FsbGV0VW5zcGVudHMsXG4gICAgcGFyYW1zLndhbGxldElkLFxuICAgIHdhbGxldEtleXMsXG4gICAgcGFyYW1zLnNvdXJjZUNvaW4uYW1vdW50VHlwZVxuICApO1xuICBpZiAocHJ2KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZlcnNpb246IHdhbGxldCBpbnN0YW5jZW9mIFdhbGxldCA/IDIgOiAxLFxuICAgICAgd2FsbGV0SWQ6IHBhcmFtcy53YWxsZXRJZCxcbiAgICAgIHR4SGV4LFxuICAgICAgdHhJbmZvLFxuICAgICAgc291cmNlQ29pbjogcGFyYW1zLnNvdXJjZUNvaW4uZ2V0Q2hhaW4oKSxcbiAgICAgIHJlY292ZXJ5Q29pbjogcGFyYW1zLnJlY292ZXJ5Q29pbi5nZXRDaGFpbigpLFxuICAgICAgcmVjb3ZlcnlBbW91bnQsXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHhIZXgsXG4gICAgICB0eEluZm8sXG4gICAgICB3YWxsZXRJZDogcGFyYW1zLndhbGxldElkLFxuICAgICAgZmVlSW5mbzogZ2V0RmVlSW5mbyh0cmFuc2FjdGlvbiwgd2FsbGV0VW5zcGVudHMsIHBhcmFtcy5zb3VyY2VDb2luLmFtb3VudFR5cGUpLFxuICAgICAgYWRkcmVzczogcGFyYW1zLnJlY292ZXJ5QWRkcmVzcyxcbiAgICAgIGNvaW46IHBhcmFtcy5zb3VyY2VDb2luLmdldENoYWluKCksXG4gICAgfTtcbiAgfVxufVxuIl19
332
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvc3NDaGFpblJlY292ZXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JlY292ZXJ5L2Nyb3NzQ2hhaW5SZWNvdmVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7R0FFRztBQUNILHFDQUFxQztBQUVyQyxnREFBZ0Q7QUFDaEQsbURBQTZEO0FBRTdELE1BQU0sRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztBQU14RSxtREFBa0Q7QUFFbEQsbURBQW9GO0FBR3BGLGlEQUE4QztBQUM5QyxrQ0FBeUQ7QUF5Q2xELEtBQUssVUFBVSxTQUFTLENBQzdCLEtBQWdCLEVBQ2hCLElBQXNCLEVBQ3RCLFFBQWdCO0lBRWhCLElBQUk7UUFDRixPQUFPLE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0tBQ25EO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDViwrQ0FBK0M7UUFDL0Msa0pBQWtKO1FBQ2xKLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxHQUFHLEVBQUU7WUFDbkIsTUFBTSxDQUFDLENBQUM7U0FDVDtLQUNGO0lBRUQsSUFBSTtRQUNGLE9BQU8sTUFBTSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7S0FDcEQ7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLFFBQVEsbUJBQW1CLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7S0FDcEY7QUFDSCxDQUFDO0FBcEJELDhCQW9CQztBQUVEOzs7O0dBSUc7QUFDSSxLQUFLLFVBQVUsYUFBYSxDQUNqQyxZQUE4QixFQUM5QixNQUEwQjtJQUUxQixJQUFJLEtBQXFCLENB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QUM3QixDQUFDO0lBQ0YsSUFBSSxHQUFHLEVBQUU7UUFDUCxPQUFPO1lBQ0wsT0FBTyxFQUFFLE1BQU0sWUFBWSxpQkFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRO1lBQ3pCLEtBQUs7WUFDTCxNQUFNO1lBQ04sVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFO1lBQ3hDLFlBQVksRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRTtZQUM1QyxjQUFjO1NBQ2YsQ0FBQztLQUNIO1NBQU07UUFDTCxPQUFPO1lBQ0wsS0FBSztZQUNMLE1BQU07WUFDTixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7WUFDekIsT0FBTyxFQUFFLFVBQVUsQ0FBQyxXQUFXLEVBQUUsY0FBYyxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO1lBQzlFLE9BQU8sRUFBRSxNQUFNLENBQUMsZUFBZTtZQUMvQixJQUFJLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUU7U0FDbkMsQ0FBQztLQUNIO0FBQ0gsQ0FBQztBQXpERCw4Q0F5REMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICovXG5pbXBvcnQgKiBhcyBCbHVlYmlyZCBmcm9tICdibHVlYmlyZCc7XG5cbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IHsgYmlwMzIsIEJJUDMySW50ZXJmYWNlIH0gZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuXG5jb25zdCB7IHVuc3BlbnRTdW0sIHNjcmlwdFR5cGVGb3JDaGFpbiwgb3V0cHV0U2NyaXB0cyB9ID0gdXR4b2xpYi5iaXRnbztcbmV4cG9ydCB0eXBlIFJvb3RXYWxsZXRLZXlzID0gdXR4b2xpYi5iaXRnby5Sb290V2FsbGV0S2V5cztcbnR5cGUgVW5zcGVudDxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50ID0gbnVtYmVyPiA9IHV0eG9saWIuYml0Z28uVW5zcGVudDxUTnVtYmVyPjtcbnR5cGUgV2FsbGV0VW5zcGVudDxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50ID0gbnVtYmVyPiA9IHV0eG9saWIuYml0Z28uV2FsbGV0VW5zcGVudDxUTnVtYmVyPjtcbnR5cGUgV2FsbGV0VW5zcGVudExlZ2FjeTxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50ID0gbnVtYmVyPiA9IHV0eG9saWIuYml0Z28uV2FsbGV0VW5zcGVudExlZ2FjeTxUTnVtYmVyPjtcblxuaW1wb3J0IHsgRGltZW5zaW9ucyB9IGZyb20gJ0BiaXRnby1iZXRhL3Vuc3BlbnRzJztcblxuaW1wb3J0IHsgQml0R29CYXNlLCBJV2FsbGV0LCBLZXljaGFpbiwgVHJpcGxlLCBXYWxsZXQgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdFV0eG9Db2luLCBUcmFuc2FjdGlvbkluZm8gfSBmcm9tICcuLi9hYnN0cmFjdFV0eG9Db2luJztcblxuaW1wb3J0IHsgZGVjcnlwdCB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1hcGknO1xuaW1wb3J0IHsgc2lnbkFuZFZlcmlmeVdhbGxldFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vc2lnbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRSZWNvdmVyeVRyYW5zYWN0aW9uT3B0aW9ucyB7XG4gIHdhbGxldDogc3RyaW5nO1xuICBmYXVsdHlUeElkOiBzdHJpbmc7XG4gIHJlY292ZXJ5QWRkcmVzczogc3RyaW5nO1xufVxuXG50eXBlIEZlZUluZm8gPSB7XG4gIHNpemU6IG51bWJlcjtcbiAgZmVlUmF0ZTogbnVtYmVyO1xuICBmZWU6IG51bWJlcjtcbiAgcGF5R29GZWU6IG51bWJlcjtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3Jvc3NDaGFpblJlY292ZXJ5VW5zaWduZWQ8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludCA9IG51bWJlcj4ge1xuICB0eEhleDogc3RyaW5nO1xuICB0eEluZm86IFRyYW5zYWN0aW9uSW5mbzxUTnVtYmVyPjtcbiAgd2FsbGV0SWQ6IHN0cmluZztcbiAgZmVlSW5mbzogRmVlSW5mbztcbiAgYWRkcmVzczogc3RyaW5nO1xuICBjb2luOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3Jvc3NDaGFpblJlY292ZXJ5U2lnbmVkPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQgPSBudW1iZXI+IHtcbiAgdmVyc2lvbjogMSB8IDI7XG4gIHR4SGV4OiBzdHJpbmc7XG4gIHR4SW5mbzogVHJhbnNhY3Rpb25JbmZvPFROdW1iZXI+O1xuICB3YWxsZXRJZDogc3RyaW5nO1xuICBzb3VyY2VDb2luOiBzdHJpbmc7XG4gIHJlY292ZXJ5Q29pbjogc3RyaW5nO1xuICByZWNvdmVyeUFkZHJlc3M/OiBzdHJpbmc7XG4gIHJlY292ZXJ5QW1vdW50PzogVE51bWJlcjtcbn1cblxudHlwZSBXYWxsZXRWMSA9IHtcbiAga2V5Y2hhaW5zOiB7IHhwdWI6IHN0cmluZyB9W107XG4gIGFkZHJlc3MoeyBhZGRyZXNzIH06IHsgYWRkcmVzczogc3RyaW5nIH0pOiBQcm9taXNlPHsgY2hhaW46IG51bWJlcjsgaW5kZXg6IG51bWJlciB9PjtcbiAgZ2V0RW5jcnlwdGVkVXNlcktleWNoYWluKCk6IFByb21pc2U8eyBlbmNyeXB0ZWRYcHJ2OiBzdHJpbmcgfT47XG59O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0V2FsbGV0KFxuICBiaXRnbzogQml0R29CYXNlLFxuICBjb2luOiBBYnN0cmFjdFV0eG9Db2luLFxuICB3YWxsZXRJZDogc3RyaW5nXG4pOiBQcm9taXNlPElXYWxsZXQgfCBXYWxsZXRWMT4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBjb2luLndhbGxldHMoKS5nZXQoeyBpZDogd2FsbGV0SWQgfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBUT0RPOiBCRy00NjM2NCBoYW5kbGUgZXJyb3JzIG1vcmUgZ3JhY2VmdWxseVxuICAgIC8vIFRoZSB2MiBlbmRwb2ludCBjb2luLndhbGxldHMoKS5nZXQoKSBtYXkgdGhyb3cgNDA0IG9yIDQwMCBlcnJvcnMsIGJ1dCB0aGlzIHNob3VsZCBub3QgcHJldmVudCB1cyBmcm9tIHNlYXJjaGluZyBmb3IgdGhlIHdhbGxldElkIGluIHYxIHdhbGxldHMuXG4gICAgaWYgKGUuc3RhdHVzID49IDUwMCkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBiaXRnby53YWxsZXRzKCkuZ2V0KHsgaWQ6IHdhbGxldElkIH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBjb3VsZCBub3QgZ2V0IHdhbGxldCAke3dhbGxldElkfSBmcm9tIHYxIG9yIHYyOiAke2UudG9TdHJpbmcoKX1gKTtcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSByZWNvdmVyeUNvaW5cbiAqIEBwYXJhbSB3YWxsZXRcbiAqIEByZXR1cm4gd2FsbGV0IHB1YmtleXNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFdhbGxldEtleXMoXG4gIHJlY292ZXJ5Q29pbjogQWJzdHJhY3RVdHhvQ29pbixcbiAgd2FsbGV0OiBJV2FsbGV0IHwgV2FsbGV0VjFcbik6IFByb21pc2U8Um9vdFdhbGxldEtleXM+IHtcbiAgbGV0IHhwdWJzOiBUcmlwbGU8c3RyaW5nPjtcblxuICBpZiAod2FsbGV0IGluc3RhbmNlb2YgV2FsbGV0KSB7XG4gICAgY29uc3Qga2V5Y2hhaW5zID0gKGF3YWl0IHJlY292ZXJ5Q29pbi5rZXljaGFpbnMoKS5nZXRLZXlzRm9yU2lnbmluZyh7IHdhbGxldCB9KSkgYXMgdW5rbm93biBhcyBLZXljaGFpbltdO1xuICAgIGlmIChrZXljaGFpbnMubGVuZ3RoICE9PSAzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkIHRyaXBsZSBnb3QgJHtrZXljaGFpbnMubGVuZ3RofWApO1xuICAgIH1cbiAgICB4cHVicyA9IGtleWNoYWlucy5tYXAoKGspID0+IGsucHViKSBhcyBUcmlwbGU8c3RyaW5nPjtcbiAgfSBlbHNlIHtcbiAgICB4cHVicyA9ICh3YWxsZXQgYXMgV2FsbGV0VjEpLmtleWNoYWlucy5tYXAoKGspID0+IGsueHB1YikgYXMgVHJpcGxlPHN0cmluZz47XG4gIH1cblxuICByZXR1cm4gbmV3IHV0eG9saWIuYml0Z28uUm9vdFdhbGxldEtleXMoeHB1YnMubWFwKChrKSA9PiBiaXAzMi5mcm9tQmFzZTU4KGspKSBhcyBUcmlwbGU8QklQMzJJbnRlcmZhY2U+KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlzV2FsbGV0QWRkcmVzcyh3YWxsZXQ6IElXYWxsZXQgfCBXYWxsZXRWMSwgYWRkcmVzczogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIHRyeSB7XG4gICAgbGV0IGFkZHJlc3NEYXRhO1xuICAgIGlmICh3YWxsZXQgaW5zdGFuY2VvZiBXYWxsZXQpIHtcbiAgICAgIGFkZHJlc3NEYXRhID0gYXdhaXQgd2FsbGV0LmdldEFkZHJlc3MoeyBhZGRyZXNzIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBhZGRyZXNzRGF0YSA9IGF3YWl0ICh3YWxsZXQgYXMgV2FsbGV0VjEpLmFkZHJlc3MoeyBhZGRyZXNzIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBhZGRyZXNzRGF0YSAhPT0gdW5kZWZpbmVkO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogQHBhcmFtIGNvaW5cbiAqIEBwYXJhbSB0eGlkXG4gKiBAcGFyYW0gYW1vdW50VHlwZVxuICogQHBhcmFtIHdhbGxldFxuICogQHBhcmFtIGFwaUtleSAtIGEgYmxvY2tjaGFpciBhcGkga2V5XG4gKiBAcmV0dXJuIGFsbCB1bnNwZW50cyBmb3IgdHJhbnNhY3Rpb24gb3V0cHV0cywgaW5jbHVkaW5nIG91dHB1dHMgZnJvbSBvdGhlciB0cmFuc2FjdGlvbnNcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0QWxsUmVjb3ZlcnlPdXRwdXRzPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQgPSBudW1iZXI+KFxuICBjb2luOiBBYnN0cmFjdFV0eG9Db2luLFxuICB0eGlkOiBzdHJpbmcsXG4gIGFtb3VudFR5cGU6ICdudW1iZXInIHwgJ2JpZ2ludCcgPSAnbnVtYmVyJyxcbiAgd2FsbGV0OiBJV2FsbGV0IHwgV2FsbGV0VjEsXG4gIGFwaUtleT86IHN0cmluZ1xuKTogUHJvbWlzZTxVbnNwZW50PFROdW1iZXI+W10+IHtcbiAgY29uc3QgYXBpID0gY29pbi5nZXRSZWNvdmVyeVByb3ZpZGVyKGFwaUtleSk7XG4gIGNvbnN0IHR4ID0gYXdhaXQgYXBpLmdldFRyYW5zYWN0aW9uSU8odHhpZCk7XG4gIGNvbnN0IHdhbGxldEFkZHJlc3NlcyA9IChcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHR4Lm91dHB1dHMubWFwKGFzeW5jIChvdXRwdXQpID0+IHtcbiAgICAgICAgLy8gRm9yIHNvbWUgY29pbnMgKGJjaCkgd2UgbmVlZCB0byBjb252ZXJ0IHRoZSBhZGRyZXNzIHRvIGxlZ2FjeSBmb3JtYXQgc2luY2UgdGhlIGFwaSByZXR1cm5zIHRoZSBhZGRyZXNzXG4gICAgICAgIC8vIGluIG5vbiBsZWdhY3kgZm9ybWF0LiBIb3dldmVyLCB3ZSB3YW50IHRvIGtlZXAgdGhlIGFkZHJlc3MgaW4gdGhlIHNhbWUgZm9ybWF0IGFzIHRoZSByZXNwb25zZSBzaW5jZSB3ZVxuICAgICAgICAvLyBhcmUgZ29pbmcgdG8gaGl0IHRoZSBBUEkgYWdhaW4gdG8gZmV0Y2ggYWRkcmVzcyB1bnNwZW50cy5cbiAgICAgICAgY29uc3QgY2Fub25pY2FsQWRkcmVzcyA9IGNvaW4uY2Fub25pY2FsQWRkcmVzcyhvdXRwdXQuYWRkcmVzcyk7XG4gICAgICAgIGNvbnN0IGlzV2FsbGV0T3duZWQgPSBhd2FpdCBpc1dhbGxldEFkZHJlc3Mod2FsbGV0LCBjYW5vbmljYWxBZGRyZXNzKTtcbiAgICAgICAgcmV0dXJuIGlzV2FsbGV0T3duZWQgPyBvdXRwdXQuYWRkcmVzcyA6IG51bGw7XG4gICAgICB9KVxuICAgIClcbiAgKS5maWx0ZXIoKGFkZHJlc3MpID0+IGFkZHJlc3MgIT09IG51bGwpO1xuXG4gIGNvbnN0IHVuc3BlbnRzID0gYXdhaXQgYXBpLmdldFVuc3BlbnRzRm9yQWRkcmVzc2VzKHdhbGxldEFkZHJlc3NlcyBhcyBzdHJpbmdbXSk7XG4gIGlmICh1bnNwZW50cy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHJlY292ZXJ5IHVuc3BlbnRzIGZvdW5kLmApO1xuICB9XG4gIC8vIHRoZSBhcGkgbWF5IHJldHVybiBjYXNoYWRkcidzIGluc3RlYWQgb2YgbGVnYWN5IGZvciBCQ0ggYW5kIEJDSEFcbiAgLy8gZG93bnN0cmVhbSBwcm9jZXNzZXMncyBvbmx5IGV4cGVjdCBsZWdhY3kgYWRkcmVzc2VzXG4gIHJldHVybiB1bnNwZW50cy5tYXAoKHJlY292ZXJ5T3V0cHV0KSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnJlY292ZXJ5T3V0cHV0LFxuICAgICAgYWRkcmVzczogY29pbi5jYW5vbmljYWxBZGRyZXNzKHJlY292ZXJ5T3V0cHV0LmFkZHJlc3MpLFxuICAgICAgdmFsdWU6IHV0eG9saWIuYml0Z28udG9UTnVtYmVyPFROdW1iZXI+KEJpZ0ludChyZWNvdmVyeU91dHB1dC52YWx1ZSksIGFtb3VudFR5cGUpLFxuICAgIH07XG4gIH0pO1xufVxuXG4vKipcbiAqIERhdGEgcmVxdWlyZWQgZm9yIGFkZHJlc3MgYW5kIHNpZ25hdHVyZSBkZXJpdmF0aW9uXG4gKi9cbnR5cGUgU2NyaXB0SWQgPSB7XG4gIGNoYWluOiBudW1iZXI7XG4gIGluZGV4OiBudW1iZXI7XG59O1xuXG5hc3luYyBmdW5jdGlvbiBnZXRTY3JpcHRJZChjb2luOiBBYnN0cmFjdFV0eG9Db2luLCB3YWxsZXQ6IElXYWxsZXQgfCBXYWxsZXRWMSwgc2NyaXB0OiBCdWZmZXIpOiBQcm9taXNlPFNjcmlwdElkPiB7XG4gIGNvbnN0IGFkZHJlc3MgPSB1dHhvbGliLmFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdChzY3JpcHQsIGNvaW4ubmV0d29yayk7XG4gIGxldCBhZGRyZXNzRGF0YTogeyBjaGFpbjogbnVtYmVyOyBpbmRleDogbnVtYmVyIH07XG4gIGlmICh3YWxsZXQgaW5zdGFuY2VvZiBXYWxsZXQpIHtcbiAgICBhZGRyZXNzRGF0YSA9IGF3YWl0IHdhbGxldC5nZXRBZGRyZXNzKHsgYWRkcmVzcyB9KTtcbiAgfSBlbHNlIHtcbiAgICBhZGRyZXNzRGF0YSA9IGF3YWl0ICh3YWxsZXQgYXMgV2FsbGV0VjEpLmFkZHJlc3MoeyBhZGRyZXNzIH0pO1xuICB9XG4gIGlmICh0eXBlb2YgYWRkcmVzc0RhdGEuY2hhaW4gPT09ICdudW1iZXInICYmIHR5cGVvZiBhZGRyZXNzRGF0YS5pbmRleCA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4geyBjaGFpbjogYWRkcmVzc0RhdGEuY2hhaW4sIGluZGV4OiBhZGRyZXNzRGF0YS5pbmRleCB9O1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGFkZHJlc3MgZGF0YTogJHtKU09OLnN0cmluZ2lmeShhZGRyZXNzRGF0YSl9YCk7XG59XG5cbi8qKlxuICogTG9va3VwIGFkZHJlc3MgZGF0YSBmcm9tIHVuc3BlbnRzIG9uIHNvdXJjZUNvaW4gaW4gYWRkcmVzcyBkYXRhYmFzZSBvZiByZWNvdmVyeUNvaW4uXG4gKiBSZXR1cm4gZnVsbCB3YWxsZXRVbnNwZW50cyBpbmNsdWRpbmcgc2NyaXB0SWQgaW4gc291cmNlQ29pbiBmb3JtYXQuXG4gKlxuICogQHBhcmFtIHNvdXJjZUNvaW5cbiAqIEBwYXJhbSByZWNvdmVyeUNvaW5cbiAqIEBwYXJhbSB1bnNwZW50c1xuICogQHBhcmFtIHdhbGxldFxuICogQHJldHVybiB3YWxsZXRVbnNwZW50c1xuICovXG5hc3luYyBmdW5jdGlvbiB0b1dhbGxldFVuc3BlbnRzPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQgPSBudW1iZXI+KFxuICBzb3VyY2VDb2luOiBBYnN0cmFjdFV0eG9Db2luLFxuICByZWNvdmVyeUNvaW46IEFic3RyYWN0VXR4b0NvaW4sXG4gIHVuc3BlbnRzOiBVbnNwZW50PFROdW1iZXI+W10sXG4gIHdhbGxldDogSVdhbGxldCB8IFdhbGxldFYxXG4pOiBQcm9taXNlPFdhbGxldFVuc3BlbnQ8VE51bWJlcj5bXT4ge1xuICBjb25zdCBhZGRyZXNzZXMgPSBuZXcgU2V0KHVuc3BlbnRzLm1hcCgodSkgPT4gdS5hZGRyZXNzKSk7XG4gIHJldHVybiAoXG4gICAgYXdhaXQgQmx1ZWJpcmQubWFwU2VyaWVzKGFkZHJlc3NlcywgYXN5bmMgKGFkZHJlc3MpOiBQcm9taXNlPFdhbGxldFVuc3BlbnQ8VE51bWJlcj5bXT4gPT4ge1xuICAgICAgbGV0IHNjcmlwdElkO1xuICAgICAgdHJ5IHtcbiAgICAgICAgc2NyaXB0SWQgPSBhd2FpdCBnZXRTY3JpcHRJZChyZWNvdmVyeUNvaW4sIHdhbGxldCwgdXR4b2xpYi5hZGRyZXNzLnRvT3V0cHV0U2NyaXB0KGFkZHJlc3MsIHNvdXJjZUNvaW4ubmV0d29yaykpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBlcnJvciBnZXR0aW5nIHNjcmlwdElkIGZvciAke2FkZHJlc3N9OmAsIGUpO1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICByZXR1cm4gdW5zcGVudHNcbiAgICAgICAgLmZpbHRlcigodSkgPT4gdS5hZGRyZXNzID09PSBhZGRyZXNzKVxuICAgICAgICAubWFwKCh1KSA9PiAoe1xuICAgICAgICAgIC4uLnUsXG4gICAgICAgICAgLi4uc2NyaXB0SWQsXG4gICAgICAgIH0pKTtcbiAgICB9KVxuICApLmZsYXQoKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gY29pblxuICogQHJldHVybiBmZWVSYXRlIGZvciB0cmFuc2FjdGlvblxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRGZWVSYXRlU2F0VkIoY29pbjogQWJzdHJhY3RVdHhvQ29pbik6IFByb21pc2U8bnVtYmVyPiB7XG4gIC8vIFRPRE86IHVzZSBmZWVSYXRlIEFQSVxuICBjb25zdCBmZWVSYXRlID0ge1xuICAgIGJjaDogMjAsXG4gICAgdGJjaDogMjAsXG4gICAgYmNoYTogMjAsXG4gICAgdGJjaGE6IDIwLFxuICAgIGJzdjogMjAsXG4gICAgdGJzdjogMjAsXG4gICAgYnRjOiA4MCxcbiAgICB0YnRjOiA4MCxcbiAgICB0YnRjc2lnOiA4MCxcbiAgICB0YnRjYmdzaWc6IDgwLFxuICAgIGx0YzogMTAwLFxuICAgIHRsdGM6IDEwMCxcbiAgICBkb2dlOiAxMDAwLFxuICAgIHRkb2dlOiAxMDAwLFxuICB9W2NvaW4uZ2V0Q2hhaW4oKV07XG5cbiAgaWYgKCFmZWVSYXRlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBubyBmZWVSYXRlIGZvciAke2NvaW4uZ2V0Q2hhaW4oKX1gKTtcbiAgfVxuXG4gIHJldHVybiBmZWVSYXRlO1xufVxuXG4vKipcbiAqIEBwYXJhbSB4cHJ2XG4gKiBAcGFyYW0gcGFzc3BocmFzZVxuICogQHBhcmFtIHdhbGxldFxuICogQHJldHVybiBzaWduaW5nIGtleVxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRQcnYoeHBydj86IHN0cmluZywgcGFzc3BocmFzZT86IHN0cmluZywgd2FsbGV0PzogSVdhbGxldCB8IFdhbGxldFYxKTogUHJvbWlzZTxCSVAzMkludGVyZmFjZT4ge1xuICBpZiAoeHBydikge1xuICAgIGNvbnN0IGtleSA9IGJpcDMyLmZyb21CYXNlNTgoeHBydik7XG4gICAgaWYgKGtleS5pc05ldXRlcmVkKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgbm90IGEgcHJpdmF0ZSBrZXlgKTtcbiAgICB9XG4gICAgcmV0dXJuIGtleTtcbiAgfVxuXG4gIGlmICghd2FsbGV0IHx8ICFwYXNzcGhyYXNlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBubyB4cHJ2IGdpdmVuOiBuZWVkIHdhbGxldCBhbmQgcGFzc3BocmFzZSB0byBjb250aW51ZWApO1xuICB9XG5cbiAgbGV0IGVuY3J5cHRlZFBydjogc3RyaW5nO1xuICBpZiAod2FsbGV0IGluc3RhbmNlb2YgV2FsbGV0KSB7XG4gICAgZW5jcnlwdGVkUHJ2ID0gKGF3YWl0IHdhbGxldC5nZXRFbmNyeXB0ZWRVc2VyS2V5Y2hhaW4oKSkuZW5jcnlwdGVkUHJ2O1xuICB9IGVsc2Uge1xuICAgIGVuY3J5cHRlZFBydiA9IChhd2FpdCAod2FsbGV0IGFzIFdhbGxldFYxKS5nZXRFbmNyeXB0ZWRVc2VyS2V5Y2hhaW4oKSkuZW5jcnlwdGVkWHBydjtcbiAgfVxuXG4gIHJldHVybiBnZXRQcnYoZGVjcnlwdChwYXNzcGhyYXNlLCBlbmNyeXB0ZWRQcnYpKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gbmV0d29ya1xuICogQHBhcmFtIHVuc3BlbnRzXG4gKiBAcGFyYW0gdGFyZ2V0QWRkcmVzc1xuICogQHBhcmFtIGZlZVJhdGVTYXRWQlxuICogQHBhcmFtIHNpZ25lciAtIGlmIHNldCwgc2lnbiB0cmFuc2FjdGlvblxuICogQHBhcmFtIGFtb3VudFR5cGVcbiAqIEByZXR1cm4gdHJhbnNhY3Rpb24gc3BlbmRpbmcgZnVsbCBpbnB1dCBhbW91bnQgdG8gdGFyZ2V0QWRkcmVzc1xuICovXG5mdW5jdGlvbiBjcmVhdGVTd2VlcFRyYW5zYWN0aW9uPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQgPSBudW1iZXI+KFxuICBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmssXG4gIHVuc3BlbnRzOiBXYWxsZXRVbnNwZW50PFROdW1iZXI+W10sXG4gIHRhcmdldEFkZHJlc3M6IHN0cmluZyxcbiAgZmVlUmF0ZVNhdFZCOiBudW1iZXIsXG4gIHNpZ25lcj86IHV0eG9saWIuYml0Z28uV2FsbGV0VW5zcGVudFNpZ25lcjxSb290V2FsbGV0S2V5cz4sXG4gIGFtb3VudFR5cGU6ICdudW1iZXInIHwgJ2JpZ2ludCcgPSAnbnVtYmVyJ1xuKTogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb248VE51bWJlcj4ge1xuICBjb25zdCBpbnB1dFZhbHVlID0gdW5zcGVudFN1bTxUTnVtYmVyPih1bnNwZW50cywgYW1vdW50VHlwZSk7XG4gIGNvbnN0IHZzaXplID0gRGltZW5zaW9ucy5mcm9tVW5zcGVudHModW5zcGVudHMsIHtcbiAgICBwMnRyOiB7IHNjcmlwdFBhdGhMZXZlbDogMSB9LFxuICAgIHAydHJNdXNpZzI6IHsgc2NyaXB0UGF0aExldmVsOiB1bmRlZmluZWQgfSxcbiAgfSlcbiAgICAucGx1cyhEaW1lbnNpb25zLmZyb21PdXRwdXQoeyBzY3JpcHQ6IHV0eG9saWIuYWRkcmVzcy50b091dHB1dFNjcmlwdCh0YXJnZXRBZGRyZXNzLCBuZXR3b3JrKSB9KSlcbiAgICAuZ2V0VlNpemUoKTtcbiAgY29uc3QgZmVlID0gdnNpemUgKiBmZWVSYXRlU2F0VkI7XG5cbiAgY29uc3QgdHJhbnNhY3Rpb25CdWlsZGVyID0gdXR4b2xpYi5iaXRnby5jcmVhdGVUcmFuc2FjdGlvbkJ1aWxkZXJGb3JOZXR3b3JrPFROdW1iZXI+KG5ldHdvcmspO1xuICB0cmFuc2FjdGlvbkJ1aWxkZXIuYWRkT3V0cHV0KFxuICAgIHRhcmdldEFkZHJlc3MsXG4gICAgdXR4b2xpYi5iaXRnby50b1ROdW1iZXI8VE51bWJlcj4oQmlnSW50KGlucHV0VmFsdWUpIC0gQmlnSW50KGZlZSksIGFtb3VudFR5cGUpXG4gICk7XG4gIHVuc3BlbnRzLmZvckVhY2goKHVuc3BlbnQpID0+IHtcbiAgICB1dHhvbGliLmJpdGdvLmFkZFRvVHJhbnNhY3Rpb25CdWlsZGVyKHRyYW5zYWN0aW9uQnVpbGRlciwgdW5zcGVudCk7XG4gIH0pO1xuICBsZXQgdHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbkJ1aWxkZXIuYnVpbGRJbmNvbXBsZXRlKCk7XG4gIGlmIChzaWduZXIpIHtcbiAgICB0cmFuc2FjdGlvbiA9IHNpZ25BbmRWZXJpZnlXYWxsZXRUcmFuc2FjdGlvbjxUTnVtYmVyPih0cmFuc2FjdGlvbkJ1aWxkZXIsIHVuc3BlbnRzLCBzaWduZXIsIHtcbiAgICAgIGlzTGFzdFNpZ25hdHVyZTogZmFsc2UsXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHRyYW5zYWN0aW9uO1xufVxuXG5mdW5jdGlvbiBnZXRUeEluZm88VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludCA9IG51bWJlcj4oXG4gIHRyYW5zYWN0aW9uOiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbjxUTnVtYmVyPixcbiAgdW5zcGVudHM6IFdhbGxldFVuc3BlbnQ8VE51bWJlcj5bXSxcbiAgd2FsbGV0SWQ6IHN0cmluZyxcbiAgd2FsbGV0S2V5czogUm9vdFdhbGxldEtleXMsXG4gIGFtb3VudFR5cGU6ICdudW1iZXInIHwgJ2JpZ2ludCcgPSAnbnVtYmVyJ1xuKTogVHJhbnNhY3Rpb25JbmZvPFROdW1iZXI+IHtcbiAgY29uc3QgaW5wdXRBbW91bnQgPSB1dHhvbGliLmJpdGdvLnVuc3BlbnRTdW08VE51bWJlcj4odW5zcGVudHMsIGFtb3VudFR5cGUpO1xuICBjb25zdCBvdXRwdXRBbW91bnQgPSB1dHhvbGliLmJpdGdvLnRvVE51bWJlcjxUTnVtYmVyPihcbiAgICB0cmFuc2FjdGlvbi5vdXRzLnJlZHVjZSgoc3VtLCBvKSA9PiBzdW0gKyBCaWdJbnQoby52YWx1ZSksIEJpZ0ludCgwKSksXG4gICAgYW1vdW50VHlwZVxuICApO1xuICBjb25zdCBvdXRwdXRzID0gdHJhbnNhY3Rpb24ub3V0cy5tYXAoKG8pID0+ICh7XG4gICAgYWRkcmVzczogdXR4b2xpYi5hZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQoby5zY3JpcHQsIHRyYW5zYWN0aW9uLm5ldHdvcmspLFxuICAgIHZhbHVlU3RyaW5nOiBvLnZhbHVlLnRvU3RyaW5nKCksXG4gICAgY2hhbmdlOiBmYWxzZSxcbiAgfSkpO1xuICBjb25zdCBpbnB1dHMgPSB1bnNwZW50cy5tYXAoKHUpID0+IHtcbiAgICAvLyBOT1RFOlxuICAgIC8vIFRoZSBgcmVkZWVtU2NyaXB0YCBhbmQgYHdhbGxldFNjcmlwdGAgcHJvcGVydGllcyBhcmUgcmVxdWlyZWQgZm9yIGxlZ2FjeSB2ZXJzaW9ucyBvZiBCaXRHb0pTXG4gICAgLy8gd2hpY2ggbWlnaHQgcmVxdWlyZSB0aGVzZSBzY3JpcHRzIGZvciBzaWduaW5nLiBUaGUgV2FsbGV0IFJlY292ZXJ5IFdpemFyZCAoV1JXKSBjYW4gY3JlYXRlXG4gICAgLy8gdW5zaWduZWQgcHJlYnVpbGRzIHRoYXQgYXJlIHN1Ym1pdHRlZCB0byBCaXRHb0pTIGluc3RhbmNlcyB3aGljaCBhcmUgbm90IG5lY2Vzc2FyaWx5IHRoZSBzYW1lXG4gICAgLy8gdmVyc2lvbi5cbiAgICBjb25zdCBhZGRyZXNzS2V5cyA9IHdhbGxldEtleXMuZGVyaXZlRm9yQ2hhaW5BbmRJbmRleCh1LmNoYWluLCB1LmluZGV4KTtcbiAgICBjb25zdCBzY3JpcHRUeXBlID0gc2NyaXB0VHlwZUZvckNoYWluKHUuY2hhaW4pO1xuICAgIGNvbnN0IHsgcmVkZWVtU2NyaXB0LCB3aXRuZXNzU2NyaXB0IH0gPSBvdXRwdXRTY3JpcHRzLmNyZWF0ZU91dHB1dFNjcmlwdDJvZjMoYWRkcmVzc0tleXMucHVibGljS2V5cywgc2NyaXB0VHlwZSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udSxcbiAgICAgIHdhbGxldDogd2FsbGV0SWQsXG4gICAgICBmcm9tV2FsbGV0OiB3YWxsZXRJZCxcbiAgICAgIHJlZGVlbVNjcmlwdDogcmVkZWVtU2NyaXB0Py50b1N0cmluZygnaGV4JyksXG4gICAgICB3aXRuZXNzU2NyaXB0OiB3aXRuZXNzU2NyaXB0Py50b1N0cmluZygnaGV4JyksXG4gICAgfSBhcyBXYWxsZXRVbnNwZW50TGVnYWN5PFROdW1iZXI+O1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBpbnB1dEFtb3VudCxcbiAgICBvdXRwdXRBbW91bnQsXG4gICAgbWluZXJGZWU6IGlucHV0QW1vdW50IC0gb3V0cHV0QW1vdW50LFxuICAgIHNwZW5kQW1vdW50OiBvdXRwdXRBbW91bnQsXG4gICAgaW5wdXRzLFxuICAgIHVuc3BlbnRzOiBpbnB1dHMsXG4gICAgb3V0cHV0cyxcbiAgICBleHRlcm5hbE91dHB1dHM6IG91dHB1dHMsXG4gICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgcGF5R29GZWU6IDAsXG4gIH0gLyogY2FzdCB0byBUcmFuc2FjdGlvbkluZm8gdG8gYWxsb3cgZXh0cmEgZmllbGRzIG1heSBiZSByZXF1aXJlZCBieSBsZWdhY3kgY29uc3VtZXJzIG9mIHRoaXMgZGF0YSAqLyBhcyBUcmFuc2FjdGlvbkluZm88VE51bWJlcj47XG59XG5cbmZ1bmN0aW9uIGdldEZlZUluZm88VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludCA9IG51bWJlcj4oXG4gIHRyYW5zYWN0aW9uOiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbjxUTnVtYmVyPixcbiAgdW5zcGVudHM6IFdhbGxldFVuc3BlbnQ8VE51bWJlcj5bXSxcbiAgYW1vdW50VHlwZTogJ251bWJlcicgfCAnYmlnaW50JyA9ICdudW1iZXInXG4pOiBGZWVJbmZvIHtcbiAgY29uc3QgdnNpemUgPSBEaW1lbnNpb25zLmZyb21VbnNwZW50cyh1bnNwZW50cywge1xuICAgIHAydHI6IHsgc2NyaXB0UGF0aExldmVsOiAxIH0sXG4gICAgcDJ0ck11c2lnMjogeyBzY3JpcHRQYXRoTGV2ZWw6IHVuZGVmaW5lZCB9LFxuICB9KVxuICAgIC5wbHVzKERpbWVuc2lvbnMuZnJvbU91dHB1dHModHJhbnNhY3Rpb24ub3V0cykpXG4gICAgLmdldFZTaXplKCk7XG4gIGNvbnN0IGlucHV0QW1vdW50ID0gdXR4b2xpYi5iaXRnby51bnNwZW50U3VtPFROdW1iZXI+KHVuc3BlbnRzLCBhbW91bnRUeXBlKTtcbiAgY29uc3Qgb3V0cHV0QW1vdW50ID0gdHJhbnNhY3Rpb24ub3V0cy5yZWR1Y2UoKHN1bSwgbykgPT4gc3VtICsgQmlnSW50KG8udmFsdWUpLCBCaWdJbnQoMCkpO1xuICBjb25zdCBmZWUgPSBOdW1iZXIoQmlnSW50KGlucHV0QW1vdW50KSAtIG91dHB1dEFtb3VudCk7XG4gIHJldHVybiB7XG4gICAgc2l6ZTogdnNpemUsXG4gICAgZmVlLFxuICAgIGZlZVJhdGU6IGZlZSAvIHZzaXplLFxuICAgIHBheUdvRmVlOiAwLFxuICB9O1xufVxuXG50eXBlIFJlY292ZXJQYXJhbXMgPSB7XG4gIC8qKiBXYWxsZXQgSUQgKGNhbiBiZSB2MSB3YWxsZXQgb3IgdjIgd2FsbGV0KSAqL1xuICB3YWxsZXRJZDogc3RyaW5nO1xuICAvKiogQ29pbiB0byBjcmVhdGUgdGhlIHRyYW5zYWN0aW9uIGZvciAqL1xuICBzb3VyY2VDb2luOiBBYnN0cmFjdFV0eG9Db2luO1xuICAvKiogQ29pbiB0aGF0IHdhbGxldCBrZXlzIHdlcmUgc2V0IHVwIGZvciAqL1xuICByZWNvdmVyeUNvaW46IEFic3RyYWN0VXR4b0NvaW47XG4gIC8qKiBTb3VyY2UgY29pbiB0cmFuc2FjdGlvbiB0byByZWNvdmVyIG91dHB1dHMgZnJvbSAoc291cmNlQ29pbikgKi9cbiAgdHhpZDogc3RyaW5nO1xuICAvKiogU291cmNlIGNvaW4gYWRkcmVzcyB0byBzZW5kIHRoZSBmdW5kcyB0byAqL1xuICByZWNvdmVyeUFkZHJlc3M6IHN0cmluZztcbiAgLyoqIElmIHNldCwgZGVjcnlwdHMgcHJpdmF0ZSBrZXkgYW5kIHNpZ25zIHRyYW5zYWN0aW9uICovXG4gIHdhbGxldFBhc3NwaHJhc2U/OiBzdHJpbmc7XG4gIC8qKiBJZiBzZXQsIHNpZ25zIHRyYW5zYWN0aW9uICovXG4gIHhwcnY/OiBzdHJpbmc7XG4gIC8qKiBmb3IgdXR4byBjb2lucyBvdGhlciB0aGFuIFtCVEMsVEJUQ10gdGhpcyBpcyBhIEJsb2NrIENoYWlyIGFwaSBrZXkgKiovXG4gIGFwaUtleT86IHN0cmluZztcbn07XG5cbi8qKlxuICogUmVjb3ZlciB3YWxsZXQgZGVwb3NpdHMgdGhhdCB3ZXJlIHJlY2VpdmVkIG9uIHRoZSB3cm9uZyBibG9ja2NoYWluXG4gKiAoZm9yIGluc3RhbmNlIGJpdGNvaW4gZGVwb3NpdHMgdGhhdCB3ZXJlIHJlY2VpdmVkIGZvciBhIGxpdGVjb2luIHdhbGxldCkuXG4gKlxuICogRmV0Y2hlcyB0aGUgdW5zcGVudCBkYXRhIGZyb20gQml0R28ncyBwdWJsaWMgYmxvY2tjaGFpbiBBUEkgYW5kIHRoZSBzY3JpcHQgZGF0YSBmcm9tIHRoZSB1c2VyJ3NcbiAqIHdhbGxldC5cbiAqXG4gKiBAcGFyYW0ge0JpdEdvQmFzZX0gYml0Z29cbiAqIEBwYXJhbSB7UmVjb3ZlclBhcmFtc30gcGFyYW1zXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWNvdmVyQ3Jvc3NDaGFpbjxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50ID0gbnVtYmVyPihcbiAgYml0Z286IEJpdEdvQmFzZSxcbiAgcGFyYW1zOiBSZWNvdmVyUGFyYW1zXG4pOiBQcm9taXNlPENyb3NzQ2hhaW5SZWNvdmVyeVNpZ25lZDxUTnVtYmVyPiB8IENyb3NzQ2hhaW5SZWNvdmVyeVVuc2lnbmVkPFROdW1iZXI+PiB7XG4gIGNvbnN0IHdhbGxldCA9IGF3YWl0IGdldFdhbGxldChiaXRnbywgcGFyYW1zLnJlY292ZXJ5Q29pbiwgcGFyYW1zLndhbGxldElkKTtcbiAgY29uc3QgdW5zcGVudHMgPSBhd2FpdCBnZXRBbGxSZWNvdmVyeU91dHB1dHM8VE51bWJlcj4oXG4gICAgcGFyYW1zLnNvdXJjZUNvaW4sXG4gICAgcGFyYW1zLnR4aWQsXG4gICAgcGFyYW1zLnNvdXJjZUNvaW4uYW1vdW50VHlwZSxcbiAgICB3YWxsZXQsXG4gICAgcGFyYW1zLmFwaUtleVxuICApO1xuICBjb25zdCB3YWxsZXRVbnNwZW50cyA9IGF3YWl0IHRvV2FsbGV0VW5zcGVudHM8VE51bWJlcj4ocGFyYW1zLnNvdXJjZUNvaW4sIHBhcmFtcy5yZWNvdmVyeUNvaW4sIHVuc3BlbnRzLCB3YWxsZXQpO1xuICBjb25zdCB3YWxsZXRLZXlzID0gYXdhaXQgZ2V0V2FsbGV0S2V5cyhwYXJhbXMucmVjb3ZlcnlDb2luLCB3YWxsZXQpO1xuICBjb25zdCBwcnYgPVxuICAgIHBhcmFtcy54cHJ2IHx8IHBhcmFtcy53YWxsZXRQYXNzcGhyYXNlID8gYXdhaXQgZ2V0UHJ2KHBhcmFtcy54cHJ2LCBwYXJhbXMud2FsbGV0UGFzc3BocmFzZSwgd2FsbGV0KSA6IHVuZGVmaW5lZDtcbiAgY29uc3Qgc2lnbmVyID0gcHJ2XG4gICAgPyBuZXcgdXR4b2xpYi5iaXRnby5XYWxsZXRVbnNwZW50U2lnbmVyPFJvb3RXYWxsZXRLZXlzPih3YWxsZXRLZXlzLCBwcnYsIHdhbGxldEtleXMuYml0Z28pXG4gICAgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IGZlZVJhdGVTYXRWQiA9IGF3YWl0IGdldEZlZVJhdGVTYXRWQihwYXJhbXMuc291cmNlQ29pbik7XG4gIGNvbnN0IHRyYW5zYWN0aW9uID0gY3JlYXRlU3dlZXBUcmFuc2FjdGlvbjxUTnVtYmVyPihcbiAgICBwYXJhbXMuc291cmNlQ29pbi5uZXR3b3JrLFxuICAgIHdhbGxldFVuc3BlbnRzLFxuICAgIHBhcmFtcy5yZWNvdmVyeUFkZHJlc3MsXG4gICAgZmVlUmF0ZVNhdFZCLFxuICAgIHNpZ25lcixcbiAgICBwYXJhbXMuc291cmNlQ29pbi5hbW91bnRUeXBlXG4gICk7XG4gIGNvbnN0IHJlY292ZXJ5QW1vdW50ID0gdHJhbnNhY3Rpb24ub3V0c1swXS52YWx1ZTtcbiAgY29uc3QgdHhIZXggPSB0cmFuc2FjdGlvbi50b0J1ZmZlcigpLnRvU3RyaW5nKCdoZXgnKTtcbiAgY29uc3QgdHhJbmZvID0gZ2V0VHhJbmZvPFROdW1iZXI+KFxuICAgIHRyYW5zYWN0aW9uLFxuICAgIHdhbGxldFVuc3BlbnRzLFxuICAgIHBhcmFtcy53YWxsZXRJZCxcbiAgICB3YWxsZXRLZXlzLFxuICAgIHBhcmFtcy5zb3VyY2VDb2luLmFtb3VudFR5cGVcbiAgKTtcbiAgaWYgKHBydikge1xuICAgIHJldHVybiB7XG4gICAgICB2ZXJzaW9uOiB3YWxsZXQgaW5zdGFuY2VvZiBXYWxsZXQgPyAyIDogMSxcbiAgICAgIHdhbGxldElkOiBwYXJhbXMud2FsbGV0SWQsXG4gICAgICB0eEhleCxcbiAgICAgIHR4SW5mbyxcbiAgICAgIHNvdXJjZUNvaW46IHBhcmFtcy5zb3VyY2VDb2luLmdldENoYWluKCksXG4gICAgICByZWNvdmVyeUNvaW46IHBhcmFtcy5yZWNvdmVyeUNvaW4uZ2V0Q2hhaW4oKSxcbiAgICAgIHJlY292ZXJ5QW1vdW50LFxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR4SGV4LFxuICAgICAgdHhJbmZvLFxuICAgICAgd2FsbGV0SWQ6IHBhcmFtcy53YWxsZXRJZCxcbiAgICAgIGZlZUluZm86IGdldEZlZUluZm8odHJhbnNhY3Rpb24sIHdhbGxldFVuc3BlbnRzLCBwYXJhbXMuc291cmNlQ29pbi5hbW91bnRUeXBlKSxcbiAgICAgIGFkZHJlc3M6IHBhcmFtcy5yZWNvdmVyeUFkZHJlc3MsXG4gICAgICBjb2luOiBwYXJhbXMuc291cmNlQ29pbi5nZXRDaGFpbigpLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==