ng-pli-commons 0.0.1867 → 0.0.1868

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.
@@ -823,11 +823,19 @@ export class TokenService {
823
823
  objectToken = '';
824
824
  }
825
825
  if (objectToken != null) {
826
- let value = Number(objectToken)
827
- ? objectToken
828
- : Array.isArray(objectToken)
829
- ? JSON.stringify(objectToken)
830
- : "'" + objectToken + "'";
826
+ let value;
827
+ if (Number(objectToken)) {
828
+ value = Number(objectToken);
829
+ }
830
+ else if (Array.isArray(objectToken)) {
831
+ value = Array.isArray(objectToken);
832
+ }
833
+ else if (JSON.stringify(objectToken)) {
834
+ value = objectToken.original_name ? "'" + objectToken.original_name + "'" : JSON.stringify(objectToken);
835
+ }
836
+ else {
837
+ value = "'" + objectToken + "'";
838
+ }
831
839
  replacedTokens = this.replaceToken(replacedTokens, tokensArray[i].value, value);
832
840
  // } else {
833
841
  // console.error(lObjectTokens, tokensArray);
@@ -1329,4 +1337,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
1329
1337
  type: Inject,
1330
1338
  args: [LOCALE_ID]
1331
1339
  }] } });
1332
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXBsaS1jb21tb25zL3NyYy9saWIvc2VydmljZXMvdG9rZW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUErQixVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFN0YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7OztBQU1sRCxNQUFNLE9BQU8sWUFBWTtJQW9XeEIsWUFDZ0MsV0FBVyxFQUNsQyxVQUFzQixFQUN0QixXQUF3QixFQUN4QixZQUEwQjtRQUhILGdCQUFXLEdBQVgsV0FBVyxDQUFBO1FBQ2xDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQWM7SUFDaEMsQ0FBQztJQUVKLGlGQUFpRjtJQUNqRix1QkFBdUIsQ0FBQyxVQUFVO1FBQ2pDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDdEMsMEJBQTBCO1lBQzFCLElBQUksZ0JBQWdCLEdBQVUsSUFBSSxDQUFDO1lBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDdEQsSUFBSSxFQUFFLENBQUMsVUFBZSxFQUFFLEVBQUU7b0JBQ3pCLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7d0JBQzFCLEtBQUssTUFBTSxLQUFLLElBQUksVUFBVSxFQUFFOzRCQUMvQixJQUFJLFVBQVUs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UUFDQyxHQUFHLEVBQUUsWUFBWSxDQUFDLHdCQUF3QjtRQUMxQyxLQUFLLEVBQUUscUJBQXFCO0tBQzVCO0lBQ0Q7UUFDQyxHQUFHLEVBQUUsWUFBWSxDQUFDLHlDQUF5QztRQUMzRCxLQUFLLEVBQUUsK0NBQStDO0tBQ3REO0lBQ0Q7UUFDQyxHQUFHLEVBQUUsWUFBWSxDQUFDLGtEQUFrRDtRQUNwRSxLQUFLLEVBQUUsNkNBQTZDO0tBQ3BEO0lBQ0Q7UUFDQyxHQUFHLEVBQUUsWUFBWSxDQUFDLHFCQUFxQjtRQUN2QyxLQUFLLEVBQUUsZ0JBQWdCO0tBQ3ZCO0lBQ0QsRUFBRSxHQUFHLEVBQUUsWUFBWSxDQUFDLCtCQUErQixFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRTtJQUNyRjtRQUNDLEdBQUcsRUFBRSxZQUFZLENBQUMsb0NBQW9DO1FBQ3RELEtBQUssRUFBRSx5QkFBeUI7S0FDaEM7SUFDRDtRQUNDLEdBQUcsRUFBRSxZQUFZLENBQUMsNENBQTRDO1FBQzlELEtBQUssRUFBRSxrQ0FBa0M7S0FDekM7Q0FDQSxDQUFBO0FBRUssMEJBQWEsR0FBRztJQUN0QixZQUFZLENBQUMsb0NBQW9DLENBQUMsV0FBVyxFQUFFO0lBQy9ELFlBQVksQ0FBQyx3Q0FBd0MsQ0FBQyxXQUFXLEVBQUU7SUFDbkUsWUFBWSxDQUFDLHNDQUFzQyxDQUFDLFdBQVcsRUFBRTtDQUNqRSxDQUFDO3lHQWxXVSxZQUFZLGtCQXFXZixhQUFhOzZHQXJXVixZQUFZLGNBRlosTUFBTTsyRkFFTixZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQjs7MEJBc1dFLE1BQU07MkJBQUMsYUFBYTswSEFoV0ksTUFBTTtzQkFBL0IsTUFBTTt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3VycmVuY3lQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBMT0NBTEVfSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGF0ZVV0aWwsIEhFQURFUl9KU09OLCBQbGlDbmZHdWFyYW50ZWVUb2tlbiwgVG9rZW4sIFV0aWxTdHJpbmcgfSBmcm9tICduZy1wbGktdXRpbCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRm9ybWlvVXRpbCB9IGZyb20gJy4uL3V0aWxzL2Zvcm1pby11dGlsJztcclxuaW1wb3J0IHsgRm9ybVNlcnZpY2UgfSBmcm9tICcuL2Zvcm0uc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUb2tlblNlcnZpY2Uge1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTSUdOX0xFVFRFUl9UQUdfSUQ6IHN0cmluZyA9ICdfc2lnbi1sZXR0ZXItdGFnLWlkJztcclxuXHJcblx0LyoqICovXHJcblx0QEluamVjdChMT0NBTEVfSUQpIHB1YmxpYyBsb2NhbGU6IHN0cmluZztcclxuXHJcblx0LyoqICovXHJcblx0c3RhdGljIFRPS0VOX0xBQkVMX0ZPUk06IHN0cmluZyA9ICdGcm0nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBUT0tFTl9MQUJFTF9CVURHRVQ6IHN0cmluZyA9ICdQcmVzdXB1ZXN0byc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFRPS0VOX0xBQkVMX0NBTENVTEFURUQ6IHN0cmluZyA9ICdDYWxjdWxhZG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBUT0tFTl9MQUJFTF9TTkFQU0hPVDogc3RyaW5nID0gJ1NuYXBzaG90JztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fTEFCRUxfU1RBVElDOiBzdHJpbmcgPSAnRXN0w6F0aWNvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fTEFCRUxfRE9DVU1FTlRPOiBzdHJpbmcgPSAnRG9jdW1lbnRvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fTEFCRUxfRE9DVU1FTlRPX0FOQUxJU0lTX0FVVE9NQVRJQ086IHN0cmluZyA9ICdBbsOhbGlzaXMgYXV0b23DoXRpY28gZGUgZG9jdW1lbnRvcyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFRPS0VOX0RPQ1VNRU5UT19BTkFMWVNJU19UWVBFOiBzdHJpbmcgPSAnZG9jdW1lbnRfYW5hbHlzaXMnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBUT0tFTl9MQUJFTF9UQVNLOiBzdHJpbmcgPSAnVGFyZWEnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBUT0tFTl9MQUJFTF9UQVNLTDogc3RyaW5nID0gJ3Rhc2snO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBUT0tFTl9MQUJFTF9HVUFSQU5URUU6IHN0cmluZyA9ICdHYXJhbnRpYSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX1RPVEFMX0FNT1VOVDogc3RyaW5nID0gJ3RvdGFsQW1vdW50JztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfQVBQTElDQVRJT05fUFJPQ0VTU19UT1RBTF9BTU9VTlQ6IHN0cmluZyA9ICdhcHBsaWNhdGlvblRvdGFsJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfQVBQTElDQVRJT05fUFJPQ0VTU19UT1RBTF9PV05fRk9VTkRTOiBzdHJpbmcgPSAnYXBwbGljYXRpb25Pd25Gb3VuZHMnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9BUFBMSUNBVElPTl9QUk9DRVNTX1RPVEFMX0ZJTkFOQ0lORzogc3RyaW5nID0gJ2FwcGxpY2F0aW9uRmluYW5jaW5nJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfTEVHQUxJWkFUSU9OX1BST0NFU1NfVE9UQUxfQU1PVU5UOiBzdHJpbmcgPSAnbGVnYWxpemF0aW9uVG90YWwnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9MRUdBTElaQVRJT05fUFJPQ0VTU19UT1RBTF9PV05fRk9VTkRTOiBzdHJpbmcgPVxyXG5cdFx0J2xlZ2FsaXphdGlvbk93bkZvdW5kcyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX0xFR0FMSVpBVElPTl9QUk9DRVNTX1RPVEFMX0ZJTkFOQ0lORzogc3RyaW5nID0gJ2xlZ2FsaXphdGlvbkZpbmFuY2luZyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX0lOU1VSQU5DRV9BTU9VTlQ6IHN0cmluZyA9ICdpbnN1cmFuY2VBbW91bnQnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBMRUdBTElaQVRJT05fT1JfQVBQTElDQVRJT05fVE9UQUxfRklOQU5DSU5HOiBzdHJpbmcgPVxyXG5cdFx0J2xlZ2xpemF0aW9uT3JBcHBsaWNhdGlvblRvdGFsRmluYW5jaW5nJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfUkVTVU1FX0NBVEVHT1JZX1lFQVI6IHN0cmluZyA9ICdyZXN1bWVDYXRlZ29yeVllYXInO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9GRUNIQV9GSU5BTkNJTkdfU1RBUlQ6IHN0cmluZyA9ICdmZWNoYUluaWNpb0ZpbmFuY2lhY2lvbic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX0ZFQ0hBX0ZJTkFOQ0lOR19FTkQ6IHN0cmluZyA9ICdmZWNoYUZpbkZpbmFuY2lhY2lvbic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfRFVSQVRJT05fU1RVRElFUzogc3RyaW5nID0gJ2R1cmFjaW9uRXN0dWRpb3MnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0ZJTkFOQ0lOR19EVVJBVElPTjogc3RyaW5nID0gJ2R1cmFjaW9uRmluYW5jaWFjaW9uJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfQ09ESUdPX1ZFUklGSUNBQ0lPTjogc3RyaW5nID0gJ2NvZGlnb1ZlcmlmaWNhY2lvbic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX0FfUVVJRU5fVkFfRElSSUdJRE86IHN0cmluZyA9ICdhUXVpZW5WYURpcmlnaWRvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfRkVDSEFfQUNUVUFMOiBzdHJpbmcgPSAnZmVjaGFBY3R1YWwnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9TVEFUVVNfTkFNRTogc3RyaW5nID0gJ3N0YXR1c05hbWUnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9QQVRST0NJTkFET1I6IHN0cmluZyA9ICdwbGlQYXRyb2NpbmFkb3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9QQVRST0NJTkFET1JfQ09SVE86IHN0cmluZyA9ICdwbGlQYXRyb2NpbmFkb3JDb3J0byc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX1BST0dSQU1BOiBzdHJpbmcgPSAncGxpUHJvZ3JhbWEnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9QUk9HUkFNQV9DT1JUTzogc3RyaW5nID0gJ3BsaVByb2dyYW1hQ29ydG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9QUk9NT0NJT046IHN0cmluZyA9ICdwbGlQcm9tb2Npb24nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9QUk9NT0NJT05fQ09SVE86IHN0cmluZyA9ICdwbGlQcm9tb2Npb25Db3J0byc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX0FOSU9fUFJPTU9DSU9OOiBzdHJpbmcgPSAnYW5pb1Byb21vY2lvbic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX0lTT19NT05FREFfQkFTRTogc3RyaW5nID0gJ2lzb01vbmVkYUJhc2UnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9TQUxVRE9fQ09NUExFTUVOVEFSSU86IHN0cmluZyA9ICdzYWx1ZG9Db21wbGVtZW50YXJpbyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX05VTUJFUl9BUFBMSUNBVElPTjogc3RyaW5nID0gJ251bWVyb1JhZGljYWRvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfVVNFUl9JTklUSUFMUzogc3RyaW5nID0gJ2luaWNpYWxlc1VzdWFyaW8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9MRVRURVJfU0lHTjogc3RyaW5nID0gJ2Zpcm1hQ2FydGEnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPTU1JVFRFRV9OQU1FOiBzdHJpbmcgPSAnY29taXRlTm9tYnJlJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT01NSVRURUVfU0VHTUVOVEFUSU9OOiBzdHJpbmcgPSAnY29taXRlU2VnbWVudGFjaW9uJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT01NSVRURUVfQUdHUlVQQVRJT046IHN0cmluZyA9ICdjb21pdGVBZ3J1cGFjaW9uJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT01NSVRURUVfQ1VUTElORV9EQVRFOiBzdHJpbmcgPSAnY29taXRlRmVjaGFMaW5lYSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09ORklSTV9MRUdBTElaQVRJT05fQVBQT0lOVE1FTlQ6IHN0cmluZyA9ICdjb25maXJtYWNpb25DaXRhJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT0RFQlRPUl9ET0NVTUVOVF9OVU1CRVI6IHN0cmluZyA9ICdudW1lcm9Eb2N1bWVudG9Db2RldWRvcic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfRE9DVU1FTlRfVFlQRTogc3RyaW5nID0gJ3RpcG9Eb2N1bWVudG9Db2RldWRvcic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfTkFNRTogc3RyaW5nID0gJ25vbWJyZXNDb2RldWRvcic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfTEFTVE5BTUU6IHN0cmluZyA9ICdhcGVsbGlkb3NDb2RldWRvcic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfVFlQRV9DT0RFQlRPUjogc3RyaW5nID0gJ3RpcG9QZXJzb25hQ29kZXVkb3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPREVCVE9SX1JFVklFV0VSOiBzdHJpbmcgPSAncmV2aXNvckNvZGV1ZG9yZXMnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX1RPVEFMX1dFSUdIVEVEOiBzdHJpbmcgPSAncG9uZGVyYWRvVG90YWwnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPTlNFQ1VUSVZFX0dVQVJBTlRFRTogc3RyaW5nID0gJ2NvbnNlY3V0aXZvR2FyYW50aWFzJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19EQVk6IHN0cmluZyA9ICdkaWEnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX01PTlRIOiBzdHJpbmcgPSAnbWVzJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19ZRUFSOiBzdHJpbmcgPSAnYW5vJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19SRVBSRVNFTlRBVElWRV9OQU1FOiBzdHJpbmcgPSAnbm9tYnJlc1JlcHJlc2VudGFudGUnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX1JFUFJFU0VOVEFUSVZFX0xBU1ROQU1FOiBzdHJpbmcgPSAnYXBlbGxpZG9zUmVwcmVzZW50YW50ZSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfUkVQUkVTRU5UQVRJVkVfRE9DVU1FTlRfTlVNQkVSOiBzdHJpbmcgPSAnY2VkdWxhUmVwcmVzZW50YW50ZSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ0lUWV9TSUdOQVRVUkU6IHN0cmluZyA9ICdjaXVkYWRGaXJtYSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfVVNFUl9UWVBFX0NSRURJVF9TVFVEWTogc3RyaW5nID0gJ3RpcG9Vc3VhcmlvRXN0dWRpb0NyZWRpdG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPREVCVE9SX1ZFSElDTEVTX1FVQU5USVRZOiBzdHJpbmcgPSAnY2FudGlkYWRWZWhpY3Vsb3NDb2RldWRvcic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfQVNTRVRTX1FVQU5USVRZOiBzdHJpbmcgPSAnY2FudGlkYWRCaWVuZXNDb2RldWRvcic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfTElTVF9DT0RFQlRPUlM6IHN0cmluZyA9ICdsaXN0YUNvZGV1ZG9yZXMnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5fSU5HUkVTT19DT0RFVURPUl9IQUJFQVNfREFUQTogc3RyaW5nID0gJ2luZ3Jlc29Db2RldWRvckhhYmVhc0RhdGEnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5fUERGX1JFU1VNRU5fQ09ERVVET1I6IHN0cmluZyA9ICdwZGZSZXN1bWVuQ29kZXVkb3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX1FVQU5USVRZX1ZFSElDTEVfQkVORUZJQ0lBUlk6IHN0cmluZyA9ICdjYW50aWRhZFZlaGljdWxvc1NlbGVjY2lvbmFkbyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfUVVBTlRJVFlfQVNTRVRTX0JFTkVGSUNJQVJZOiBzdHJpbmcgPSAnY2FudGlkYWRCaWVuZXNTZWxlY2Npb25hZG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0JFTl9DT0RJR086IHN0cmluZyA9ICdiZW5Db2RpZ28nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5fQ1JFRElUX1JFVklFV0VSX09CU0VSVkFUSU9OU19DT0RFQlRPUjogc3RyaW5nID1cclxuXHRcdCdjcmVkaXRSZXZpZXdlck9ic2VydmF0aW9uc0NvZGVidG9yJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOX0NSRURJVF9SRVZJRVdFUl9PQlNFUlZBVElPTlM6IHN0cmluZyA9ICdjcmVkaXRSZXZpZXdlck9ic2VydmF0aW9ucyc7XHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTl9UQUdfTkFNRTogc3RyaW5nID0gJ3RhZ05hbWUnO1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5fTkFNRV9SRVZJRVdFUl9UQVNLID0gJ25hbWVSZXZpd2VyVGFzayc7XHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTl9MQVNUX05BTUVfUkVWSUVXRVJfVEFTSyA9ICdsYXN0TmFtZVJldml3ZXJUYXNrJztcclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOX1RBU0tfVE9UQUxfQVNTSUdORURfVE9fUkVWSUVXRVIgPSAndGFza1RvdGFsQXNzaWduZWRUb1Jldmlld2VyJztcclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOUzogYW55W10gPSBbXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX1BBVFJPQ0lOQURPUixcclxuXHRcdFx0bGFiZWw6ICdQYXRyb2NpbmFkb3InXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9QUk9HUkFNQSxcclxuXHRcdFx0bGFiZWw6ICdQcm9ncmFtYSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX1BST01PQ0lPTixcclxuXHRcdFx0bGFiZWw6ICdQcm9tb2Npw7NuJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfQU5JT19QUk9NT0NJT04sXHJcblx0XHRcdGxhYmVsOiAnQcOxbyBwcm9tb2Npw7NuJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfSVNPX01PTkVEQV9CQVNFLFxyXG5cdFx0XHRsYWJlbDogJ0lTTyBNb25lZGEgYmFzZSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX1NBTFVET19DT01QTEVNRU5UQVJJTyxcclxuXHRcdFx0bGFiZWw6ICdTYWx1ZG8gY29tcGxlbWVudGFyaW8nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9DT0RJR09fVkVSSUZJQ0FDSU9OLFxyXG5cdFx0XHRsYWJlbDogJ0PDs2RpZ28gZGUgdmVyaWZpY2FjacOzbidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX0FfUVVJRU5fVkFfRElSSUdJRE8sXHJcblx0XHRcdGxhYmVsOiAnQSBxdWllbiB2YSBkaXJpZ2lkbydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX0ZFQ0hBX0FDVFVBTCxcclxuXHRcdFx0bGFiZWw6ICdGZWNoYSBhY3R1YWwnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9TVEFUVVNfTkFNRSxcclxuXHRcdFx0bGFiZWw6ICdFc3RhZG8gYWN0dWFsJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfTlVNQkVSX0FQUExJQ0FUSU9OLFxyXG5cdFx0XHRsYWJlbDogJ07Dum1lcm8gcmFkaWNhZG8nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9VU0VSX0lOSVRJQUxTLFxyXG5cdFx0XHRsYWJlbDogJ0luaWNpYWxlcyBkZSB1c3VhcmlvJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfTEVUVEVSX1NJR04sXHJcblx0XHRcdGxhYmVsOiAnRmlybWEgZGUgY2FydGFzJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT01NSVRURUVfTkFNRSxcclxuXHRcdFx0bGFiZWw6ICdOb21icmUgY29taXTDqSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09NTUlUVEVFX1NFR01FTlRBVElPTixcclxuXHRcdFx0bGFiZWw6ICdTZWdtZW50YWNpw7NuIGNvbWl0w6knXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPTU1JVFRFRV9BR0dSVVBBVElPTixcclxuXHRcdFx0bGFiZWw6ICdBZ3J1cGFjacOzbiBjb21pdMOpJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT01NSVRURUVfQ1VUTElORV9EQVRFLFxyXG5cdFx0XHRsYWJlbDogJ0ZlY2hhIEzDrW5lYSBkZSBjb3J0ZSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09ORklSTV9MRUdBTElaQVRJT05fQVBQT0lOVE1FTlQsXHJcblx0XHRcdGxhYmVsOiAnQ29uZmlybWFjacOzbiBkZSBjaXRhJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT0RFQlRPUl9ET0NVTUVOVF9OVU1CRVIsXHJcblx0XHRcdGxhYmVsOiAnTsO6bWVybyBkZSBkb2N1bWVudG8gZGUgY29kZXVkb3InXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPREVCVE9SX0RPQ1VNRU5UX1RZUEUsXHJcblx0XHRcdGxhYmVsOiAnVGlwbyBkZSBkb2N1bWVudG8gZGUgY29kZXVkb3InXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPREVCVE9SX05BTUUsXHJcblx0XHRcdGxhYmVsOiAnTm9tYnJlcyBjb2RldWRvcidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfTEFTVE5BTUUsXHJcblx0XHRcdGxhYmVsOiAnQXBlbGxpZG9zIGNvZGV1ZG9yJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19UWVBFX0NPREVCVE9SLFxyXG5cdFx0XHRsYWJlbDogJ1RpcG8gZGUgcGVyc29uYSBjb2RldWRvcidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfVkVISUNMRVNfUVVBTlRJVFksXHJcblx0XHRcdGxhYmVsOiAnQ2FudGlkYWQgdmVoaWN1bG9zIGNvZGV1ZG9yJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT0RFQlRPUl9BU1NFVFNfUVVBTlRJVFksXHJcblx0XHRcdGxhYmVsOiAnQ2FudGlkYWQgYmllbmVzIGNvZGV1ZG9yJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT0RFQlRPUl9SRVZJRVdFUixcclxuXHRcdFx0bGFiZWw6ICdSZXZpc29yIGRlIGNvZGV1ZG9yZXMnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1RPVEFMX1dFSUdIVEVELFxyXG5cdFx0XHRsYWJlbDogJ1BvbmRlcmFkbyB0b3RhbCdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09OU0VDVVRJVkVfR1VBUkFOVEVFLFxyXG5cdFx0XHRsYWJlbDogJ0NvbnNlY3V0aXZvIGRlIGdhcmFudGlhcydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfUkVQUkVTRU5UQVRJVkVfTkFNRSxcclxuXHRcdFx0bGFiZWw6ICdOb21icmVzIHJlcHJlc2VudGFudGUgbGVnYWwnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1JFUFJFU0VOVEFUSVZFX0xBU1ROQU1FLFxyXG5cdFx0XHRsYWJlbDogJ0FwZWxsaWRvcyByZXByZXNlbnRhbnRlIGxlZ2FsJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19SRVBSRVNFTlRBVElWRV9ET0NVTUVOVF9OVU1CRVIsXHJcblx0XHRcdGxhYmVsOiAnQ2VkdWxhIHJlcHJlc2VudGFudGUgbGVnYWwnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1VTRVJfVFlQRV9DUkVESVRfU1RVRFksXHJcblx0XHRcdGxhYmVsOiAnVGlwbyB1c3VhcmlvIGVzdHVkaW8gY3LDqWRpdG8nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0RBWSxcclxuXHRcdFx0bGFiZWw6ICdEaWEnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX01PTlRILFxyXG5cdFx0XHRsYWJlbDogJ01lcydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfWUVBUixcclxuXHRcdFx0bGFiZWw6ICdBw7FvJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DSVRZX1NJR05BVFVSRSxcclxuXHRcdFx0bGFiZWw6ICdDaXVkYWQgZGUgbGEgZmlybWEnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0xJU1RfQ09ERUJUT1JTLFxyXG5cdFx0XHRsYWJlbDogJ0xpc3RhIGRlIGNvZGV1ZG9yZXMnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5fSU5HUkVTT19DT0RFVURPUl9IQUJFQVNfREFUQSxcclxuXHRcdFx0bGFiZWw6ICdJbmdyZXNvIENvZGV1ZG9yIEhhYmVhcyBEYXRhJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOX1BERl9SRVNVTUVOX0NPREVVRE9SLFxyXG5cdFx0XHRsYWJlbDogJ1BkZiBjb2RldWRvcidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfUVVBTlRJVFlfVkVISUNMRV9CRU5FRklDSUFSWSxcclxuXHRcdFx0bGFiZWw6ICdDYW50aWRhZCBkZSB2ZWjDrWN1bG9zIGRlbCBzZWxlY2Npb25hZG8nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1FVQU5USVRZX0FTU0VUU19CRU5FRklDSUFSWSxcclxuXHRcdFx0bGFiZWw6ICdDYW50aWRhZCBiaWVuZXMgZGVsIHNlbGVjY2lvbmFkbydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQkVOX0NPRElHTyxcclxuXHRcdFx0bGFiZWw6ICdDw7NkaWdvIGJlbmVmaWNpYXJpbydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTl9DUkVESVRfUkVWSUVXRVJfT0JTRVJWQVRJT05TLFxyXG5cdFx0XHRsYWJlbDogJ09ic2VydmFjaW9uZXMgcmV2aXNvciBmaW5hbmNpZXJvIHNlbGVjY2lvbmFkbydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTl9DUkVESVRfUkVWSUVXRVJfT0JTRVJWQVRJT05TX0NPREVCVE9SLFxyXG5cdFx0XHRsYWJlbDogJ09ic2VydmFjaW9uZXMgcmV2aXNvciBmaW5hbmNpZXJvIGNvZGV1ZG9yZXMnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5fVEFHX05BTUUsXHJcblx0XHRcdGxhYmVsOiAnTm9tYnJlIGRlbCB0YWcnXHJcblx0XHR9LFxyXG5cdFx0eyBrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5fTkFNRV9SRVZJRVdFUl9UQVNLLCBsYWJlbDogJ05vbWJyZSByZXZpc29yIHRhcmVhcycgfSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOX0xBU1RfTkFNRV9SRVZJRVdFUl9UQVNLLFxyXG5cdFx0XHRsYWJlbDogJ0FwZWxsaWRvIHJldmlzb3IgdGFyZWFzJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOX1RBU0tfVE9UQUxfQVNTSUdORURfVE9fUkVWSUVXRVIsXHJcblx0XHRcdGxhYmVsOiAnVG90YWwgdGFyZWFzIGFzaWduYWRhcyBhIHJldmlzb3InXHJcblx0XHR9XHJcblx0XTtcclxuXHJcblx0c3RhdGljIGV4Y2x1ZGVkVG9rZW4gPSBbXHJcblx0XHRUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19VU0VSX1RZUEVfQ1JFRElUX1NUVURZLnRvTG93ZXJDYXNlKCksXHJcblx0XHRUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT0RFQlRPUl9WRUhJQ0xFU19RVUFOVElUWS50b0xvd2VyQ2FzZSgpLFxyXG5cdFx0VG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfQVNTRVRTX1FVQU5USVRZLnRvTG93ZXJDYXNlKClcclxuXHRdO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJpdmF0ZSBlbnZpcm9ubWVudCxcclxuXHRcdHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCxcclxuXHRcdHByaXZhdGUgZm9ybVNlcnZpY2U6IEZvcm1TZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBjdXJyZW5jeVBpcGU6IEN1cnJlbmN5UGlwZVxyXG5cdCkge31cclxuXHJcblx0LyoqIFRoaXMgcHJvbWlzZSBhbGxvd3MgdG8gZXhlY3V0ZSBhIGZ1bmN0aW9uIHdoZW4gY29uc3VsdGluZyB0aGUgZm9ybSBmaWVsZHMuICovXHJcblx0Z2V0Rm9ybUZpZWxkc0J5UHJvbUNvZGUocHJvbUNvZGlnbyk6IFByb21pc2U8YW55W10+IHtcclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdC8vIFNlYXJjaCB0aGUgZHluYW1pYyBmb3JtXHJcblx0XHRcdGxldCBsRm9ybUZpZWxkc1Rva2VuOiBhbnlbXSA9IG51bGw7XHJcblx0XHRcdHRoaXMuZm9ybVNlcnZpY2UuZ2V0QnlQcm9tQ29kaWdvKHByb21Db2RpZ28pLnN1YnNjcmliZSh7XHJcblx0XHRcdFx0bmV4dDogKGFycmF5Rm9ybXM6IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKGFycmF5Rm9ybXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0XHRmb3IgKGNvbnN0IGZvcm1zIG9mIGFycmF5Rm9ybXMpIHtcclxuXHRcdFx0XHRcdFx0XHRsZXQgY29tcG9uZW50cyA9IFtdO1xyXG5cclxuXHRcdFx0XHRcdFx0XHRjb21wb25lbnRzLnB1c2goLi4uRm9ybWlvVXRpbC5nZXRDb21wb25lbnRzKGZvcm1zLmNvbXBvbmVudHMpKTtcclxuXHJcblx0XHRcdFx0XHRcdFx0aWYgKGZvcm1zLmNvbXBvbmVudHMgJiYgZm9ybXMuY29tcG9uZW50cy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRmb3IgKGNvbnN0IGNvbXBvbmVudHMgb2YgZm9ybXMuY29tcG9uZW50cykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoY29tcG9uZW50cy5jb21wb25lbnRzICYmIGNvbXBvbmVudHMuY29tcG9uZW50cy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yIChjb25zdCBjb21wb25lbnQgb2YgY29tcG9uZW50cy5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoY29tcG9uZW50LmNvbHVtbnMgJiYgY29tcG9uZW50LmNvbHVtbnMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKGNvbnN0IGNDb21wb25lbnRzIG9mIGNvbXBvbmVudC5jb2x1bW5zKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y0NvbXBvbmVudHMuY29tcG9uZW50cyAmJlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y0NvbXBvbmVudHMuY29tcG9uZW50cy5sZW5ndGggPiAwXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKGNvbnN0IGl0ZXJhdG9yIG9mIGNDb21wb25lbnRzLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGl0ZXJhdG9yLnR5cGUgPT09ICdhZGRyZXNzJykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlbGV0ZSBpdGVyYXRvci5jb21wb25lbnRzO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0bGV0IGZvcm06IGFueSA9IGFycmF5Rm9ybXM7XHJcblx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdCFmb3JtIHx8XHJcblx0XHRcdFx0XHRcdCFmb3JtWzBdIHx8XHJcblx0XHRcdFx0XHRcdCFmb3JtWzBdLnByb21Db2RpZ28gfHxcclxuXHRcdFx0XHRcdFx0Zm9ybVswXS5wcm9tQ29kaWdvICE9IHByb21Db2RpZ29cclxuXHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHQvLyB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJzQwNCddKTtcclxuXHRcdFx0XHRcdFx0cmVzb2x2ZShsRm9ybUZpZWxkc1Rva2VuKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGxGb3JtRmllbGRzVG9rZW4gPSBbXTtcclxuXHRcdFx0XHRcdGZvciAobGV0IGZvcm1Db21wIG9mIGZvcm0pIHtcclxuXHRcdFx0XHRcdFx0bGV0IG5ld0NvbXBvbmVudHM6IGFueTtcclxuXHRcdFx0XHRcdFx0bGV0IGNvbXBvbmVudHM6IGFueVtdID0gW107XHJcblx0XHRcdFx0XHRcdGlmIChmb3JtQ29tcC5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbXBvbmVudHM7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb2x1bW5zO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdGlmIChuZXdDb21wb25lbnRzICYmIFV0aWxTdHJpbmcuaXNWYWxpZChmb3JtQ29tcC50aXRsZSkpIHtcclxuXHRcdFx0XHRcdFx0XHRsRm9ybUZpZWxkc1Rva2VuLnB1c2goe1xyXG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuZ2V0S2V5Rm9ybXVsYXJpbyhmb3JtQ29tcC50aXRsZSksXHJcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBmb3JtQ29tcC50aXRsZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0b2JqZWN0OiBmb3JtQ29tcFxyXG5cdFx0XHRcdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBbXVxyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdGxGb3JtRmllbGRzVG9rZW5bbEZvcm1GaWVsZHNUb2tlbi5sZW5ndGggLSAxXS52YWx1ZSA9XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmdldENvbXBvbmVuZXRGb3JtKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRjb21wb25lbnRzLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRuZXdDb21wb25lbnRzLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRudWxsLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRmYWxzZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0bnVsbFxyXG5cdFx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0cmVzb2x2ZShsRm9ybUZpZWxkc1Rva2VuKTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdGVycm9yOiAoZXJyb3IpID0+IHtcclxuXHRcdFx0XHRcdHJlamVjdChlcnJvcik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0Z2V0Rm9ybUZpZWxkc0J5Rm9ybUlkKGZvcm1JZDogc3RyaW5nKTogUHJvbWlzZTxhbnlbXT4ge1xyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0Ly8gU2VhcmNoIHRoZSBkeW5hbWljIGZvcm1cclxuXHRcdFx0bGV0IGxGb3JtRmllbGRzVG9rZW46IGFueVtdID0gbnVsbDtcclxuXHRcdFx0dGhpcy5mb3JtU2VydmljZS5nZXRCeUlkKGZvcm1JZCkuc3Vic2NyaWJlKFxyXG5cdFx0XHRcdChyZXN1bHQ6IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0bGV0IGZvcm06IGFueSA9IHJlc3VsdDtcclxuXHRcdFx0XHRcdGlmICghZm9ybSB8fCAhZm9ybVswXSkge1xyXG5cdFx0XHRcdFx0XHRyZXNvbHZlKGxGb3JtRmllbGRzVG9rZW4pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbiA9IFtdO1xyXG5cdFx0XHRcdFx0Zm9yIChsZXQgZm9ybUNvbXAgb2YgZm9ybSkge1xyXG5cdFx0XHRcdFx0XHRsZXQgbmV3Q29tcG9uZW50czogYW55O1xyXG5cdFx0XHRcdFx0XHRsZXQgY29tcG9uZW50czogYW55W10gPSBbXTtcclxuXHRcdFx0XHRcdFx0aWYgKGZvcm1Db21wLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29tcG9uZW50cztcclxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChmb3JtQ29tcC5jb2x1bW5zKSB7XHJcblx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbHVtbnM7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0aWYgKG5ld0NvbXBvbmVudHMgJiYgVXRpbFN0cmluZy5pc1ZhbGlkKGZvcm1Db21wLnRpdGxlKSkge1xyXG5cdFx0XHRcdFx0XHRcdGxGb3JtRmllbGRzVG9rZW4ucHVzaCh7XHJcblx0XHRcdFx0XHRcdFx0XHR0aXRsZToge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRrZXk6IFRva2VuU2VydmljZS5nZXRLZXlGb3JtdWxhcmlvKGZvcm1Db21wLnRpdGxlKSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZvcm1Db21wLnRpdGxlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRvYmplY3Q6IGZvcm1Db21wXHJcblx0XHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IFtdXHJcblx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbltsRm9ybUZpZWxkc1Rva2VuLmxlbmd0aCAtIDFdLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZ2V0Q29tcG9uZW5ldEZvcm0oXHJcblx0XHRcdFx0XHRcdFx0XHRcdGNvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG5ld0NvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG51bGwsXHJcblx0XHRcdFx0XHRcdFx0XHRcdGZhbHNlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRudWxsXHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRyZXNvbHZlKGxGb3JtRmllbGRzVG9rZW4pO1xyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0KGVycm9yKSA9PiB7XHJcblx0XHRcdFx0XHRyZWplY3QoZXJyb3IpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqIFRoaXMgcHJvbWlzZSBhbGxvd3MgdG8gZXhlY3V0ZSBhIGZ1bmN0aW9uIHdoZW4gY29uc3VsdGluZyB0aGUgZm9ybSBmaWVsZHMuICovXHJcblx0Z2V0Rm9ybVBhbmVsc0J5UHJvbUNvZGUocHJvbUNvZGlnbyk6IFByb21pc2U8YW55W10+IHtcclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdC8vIFNlYXJjaCB0aGUgZHluYW1pYyBmb3JtXHJcblx0XHRcdGxldCBsRm9ybVBhbm5lbHNUb2tlbjogYW55W10gPSBudWxsO1xyXG5cdFx0XHR0aGlzLmZvcm1TZXJ2aWNlLmdldEJ5UHJvbUNvZGlnbyhwcm9tQ29kaWdvKS5zdWJzY3JpYmUoXHJcblx0XHRcdFx0KHJlc3VsdDogYW55KSA9PiB7XHJcblx0XHRcdFx0XHRsZXQgZm9ybTogYW55ID0gcmVzdWx0O1xyXG5cdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHQhZm9ybSB8fFxyXG5cdFx0XHRcdFx0XHQhZm9ybVswXSB8fFxyXG5cdFx0XHRcdFx0XHQhZm9ybVswXS5wcm9tQ29kaWdvIHx8XHJcblx0XHRcdFx0XHRcdGZvcm1bMF0ucHJvbUNvZGlnbyAhPSBwcm9tQ29kaWdvXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0Ly8gdGhpcy5yb3V0ZXIubmF2aWdhdGUoWyc0MDQnXSk7XHJcblx0XHRcdFx0XHRcdHJlc29sdmUobEZvcm1QYW5uZWxzVG9rZW4pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0bEZvcm1QYW5uZWxzVG9rZW4gPSBbXTtcclxuXHRcdFx0XHRcdGZvciAobGV0IGZvcm1Db21wIG9mIGZvcm0pIHtcclxuXHRcdFx0XHRcdFx0bGV0IG5ld0NvbXBvbmVudHM6IGFueTtcclxuXHRcdFx0XHRcdFx0bGV0IGNvbXBvbmVudHM6IGFueVtdID0gW107XHJcblx0XHRcdFx0XHRcdGlmIChmb3JtQ29tcC5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbXBvbmVudHM7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb2x1bW5zO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdGlmIChuZXdDb21wb25lbnRzICYmIFV0aWxTdHJpbmcuaXNWYWxpZChmb3JtQ29tcC50aXRsZSkpIHtcclxuXHRcdFx0XHRcdFx0XHRsRm9ybVBhbm5lbHNUb2tlbi5wdXNoKHtcclxuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLmdldEtleUZvcm11bGFyaW8oZm9ybUNvbXAudGl0bGUpLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogZm9ybUNvbXAudGl0bGUsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG9iamVjdDogZm9ybUNvbXBcclxuXHRcdFx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogW11cclxuXHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0XHRsRm9ybVBhbm5lbHNUb2tlbltsRm9ybVBhbm5lbHNUb2tlbi5sZW5ndGggLSAxXS52YWx1ZSA9XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmdldFBhbmVsQ29tcG9uZW5ldChjb21wb25lbnRzLCBuZXdDb21wb25lbnRzLCBudWxsKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0cmVzb2x2ZShsRm9ybVBhbm5lbHNUb2tlbik7XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHQoZXJyb3IpID0+IHtcclxuXHRcdFx0XHRcdHJlamVjdChlcnJvcik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBIHJlY3Vyc2l2ZSBtZXRob2QgdG8gZ2V0IGFsbCB0aGUgaW5mb3JtYXRpb24gb2YgdGhlIGVkaXRHcmlkIGR5bmFtaWMgZm9ybVxyXG5cdCAqIEBwYXJhbSBjb21wb25lbnRzXHJcblx0ICogQHBhcmFtIGZvcm1cclxuXHQgKi9cclxuXHRnZXRQYW5lbENvbXBvbmVuZXQoY29tcG9uZW50czogYW55W10sIGZvcm06IGFueSwgcGFuZWxOYW1lOiBzdHJpbmcpOiBhbnlbXSB7XHJcblx0XHRmb3IgKGxldCBmb3JtQ29tcCBvZiBmb3JtKSB7XHJcblx0XHRcdGlmIChmb3JtQ29tcC50eXBlID09PSAncGFuZWwnKSB7XHJcblx0XHRcdFx0Y29tcG9uZW50cy5wdXNoKGZvcm1Db21wKTtcclxuXHRcdFx0fSBlbHNlIGlmIChmb3JtQ29tcC5jb21wb25lbnRzIHx8IGZvcm1Db21wLmNvbHVtbnMpIHtcclxuXHRcdFx0XHRsZXQgbmV3Q29tcG9uZW50czogYW55O1xyXG5cdFx0XHRcdGlmIChmb3JtQ29tcC5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29tcG9uZW50cztcclxuXHRcdFx0XHR9IGVsc2UgaWYgKGZvcm1Db21wLmNvbHVtbnMpIHtcclxuXHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb2x1bW5zO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRjb21wb25lbnRzID0gdGhpcy5nZXRQYW5lbENvbXBvbmVuZXQoY29tcG9uZW50cywgbmV3Q29tcG9uZW50cywgcGFuZWxOYW1lKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGNvbXBvbmVudHM7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBIHJlY3Vyc2l2ZSBtZXRob2QgdG8gZ2V0IGFsbCB0aGUgaW5mb3JtYXRpb24gb2YgdGhlIGNvbXBvbmVudHMgYSBjb2x1bW5zIG9mIHRoZSBkeW5hbWljIGZvcm1cclxuXHQgKiBAcGFyYW0gY29tcG9uZW50c1xyXG5cdCAqIEBwYXJhbSBmb3JtXHJcblx0ICovXHJcblx0Z2V0Q29tcG9uZW5ldEZvcm0oXHJcblx0XHRjb21wb25lbnRzOiBhbnlbXSxcclxuXHRcdGZvcm06IGFueSxcclxuXHRcdHBhbmVsTmFtZTogc3RyaW5nLFxyXG5cdFx0ZWRpdGdyaWQ6IGJvb2xlYW4sXHJcblx0XHRlZGl0R3JpZEtleTogc3RyaW5nXHJcblx0KTogYW55W10ge1xyXG5cdFx0Zm9yIChsZXQgZm9ybUNvbXAgb2YgZm9ybSkge1xyXG5cdFx0XHQvL01PLSAgbWFudGlzIDg3NDMgZml4IGFkZHJlc3MgdG9rZW5cclxuXHRcdFx0aWYgKChmb3JtQ29tcC5jb21wb25lbnRzIHx8IGZvcm1Db21wLmNvbHVtbnMpICYmIGZvcm1Db21wLnR5cGUgIT09ICdhZGRyZXNzJykge1xyXG5cdFx0XHRcdGxldCBuZXdDb21wb25lbnRzOiBhbnk7XHJcblx0XHRcdFx0aWYgKGZvcm1Db21wLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb21wb25lbnRzO1xyXG5cdFx0XHRcdFx0aWYgKGZvcm1Db21wLnR5cGUgPT09ICdlZGl0Z3JpZCcpIHtcclxuXHRcdFx0XHRcdFx0ZWRpdGdyaWQgPSB0cnVlO1xyXG5cdFx0XHRcdFx0XHRlZGl0R3JpZEtleSA9IGZvcm1Db21wLmtleTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9IGVsc2UgaWYgKGZvcm1Db21wLmNvbHVtbnMpIHtcclxuXHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb2x1bW5zO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZiAoZm9ybUNvbXAudHlwZSAmJiBmb3JtQ29tcC50eXBlID09PSAncGFuZWwnKSB7XHJcblx0XHRcdFx0XHRwYW5lbE5hbWUgPSBmb3JtQ29tcC50aXRsZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Y29tcG9uZW50cyA9IHRoaXMuZ2V0Q29tcG9uZW5ldEZvcm0oXHJcblx0XHRcdFx0XHRjb21wb25lbnRzLFxyXG5cdFx0XHRcdFx0bmV3Q29tcG9uZW50cyxcclxuXHRcdFx0XHRcdHBhbmVsTmFtZSxcclxuXHRcdFx0XHRcdGVkaXRncmlkLFxyXG5cdFx0XHRcdFx0ZWRpdEdyaWRLZXlcclxuXHRcdFx0XHQpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGZvcm1Db21wLnBhbmVsTmFtZSA9IHBhbmVsTmFtZTtcclxuXHRcdFx0XHRmb3JtQ29tcC5lZGl0Z3JpZCA9IGVkaXRncmlkO1xyXG5cdFx0XHRcdGZvcm1Db21wLmVkaXRHcmlkS2V5ID0gZWRpdEdyaWRLZXk7XHJcblx0XHRcdFx0Y29tcG9uZW50cy5wdXNoKGZvcm1Db21wKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGNvbXBvbmVudHM7XHJcblx0fVxyXG5cclxuXHQvKiogVGhpcyBwcm9taXNlIGFsbG93cyB0byBleGVjdXRlIGEgZnVuY3Rpb24gd2hlbiBjb25zdWx0aW5nIHRoZSBmb3JtIGZpZWxkcy4gKi9cclxuXHRnZXRGb3JtRWRpdEdyaWRGaWVsZHNCeVByb21Db2RlKHByb21Db2RpZ28pOiBQcm9taXNlPGFueVtdPiB7XHJcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHQvLyBTZWFyY2ggdGhlIGR5bmFtaWMgZm9ybVxyXG5cdFx0XHRsZXQgbEZvcm1GaWVsZHNUb2tlbjogYW55W10gPSBudWxsO1xyXG5cdFx0XHR0aGlzLmZvcm1TZXJ2aWNlLmdldEJ5UHJvbUNvZGlnbyhwcm9tQ29kaWdvKS5zdWJzY3JpYmUoXHJcblx0XHRcdFx0KHJlc3VsdDogYW55KSA9PiB7XHJcblx0XHRcdFx0XHRsZXQgZm9ybTogYW55ID0gcmVzdWx0O1xyXG5cdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHQhZm9ybSB8fFxyXG5cdFx0XHRcdFx0XHQhZm9ybVswXSB8fFxyXG5cdFx0XHRcdFx0XHQhZm9ybVswXS5wcm9tQ29kaWdvIHx8XHJcblx0XHRcdFx0XHRcdGZvcm1bMF0ucHJvbUNvZGlnbyAhPSBwcm9tQ29kaWdvXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0Ly8gdGhpcy5yb3V0ZXIubmF2aWdhdGUoWyc0MDQnXSk7XHJcblx0XHRcdFx0XHRcdHJlc29sdmUobEZvcm1GaWVsZHNUb2tlbik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRsRm9ybUZpZWxkc1Rva2VuID0gW107XHJcblx0XHRcdFx0XHRmb3IgKGxldCBmb3JtQ29tcCBvZiBmb3JtKSB7XHJcblx0XHRcdFx0XHRcdGxldCBuZXdDb21wb25lbnRzOiBhbnk7XHJcblx0XHRcdFx0XHRcdGxldCBjb21wb25lbnRzOiBhbnlbXSA9IFtdO1xyXG5cdFx0XHRcdFx0XHRpZiAoZm9ybUNvbXAuY29tcG9uZW50cykge1xyXG5cdFx0XHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb21wb25lbnRzO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGZvcm1Db21wLmNvbHVtbnMpIHtcclxuXHRcdFx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29sdW1ucztcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRpZiAobmV3Q29tcG9uZW50cyAmJiBVdGlsU3RyaW5nLmlzVmFsaWQoZm9ybUNvbXAudGl0bGUpKSB7XHJcblx0XHRcdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbi5wdXNoKHtcclxuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLmdldEtleUZvcm11bGFyaW8oZm9ybUNvbXAudGl0bGUpLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogZm9ybUNvbXAudGl0bGUsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG9iamVjdDogZm9ybUNvbXBcclxuXHRcdFx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogW11cclxuXHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0XHRsRm9ybUZpZWxkc1Rva2VuW2xGb3JtRmllbGRzVG9rZW4ubGVuZ3RoIC0gMV0udmFsdWUgPVxyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5nZXRFZGl0R3JpZENvbXBvbmVuZXQoY29tcG9uZW50cywgbmV3Q29tcG9uZW50cywgbnVsbCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdHJlc29sdmUobEZvcm1GaWVsZHNUb2tlbik7XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHQoZXJyb3IpID0+IHtcclxuXHRcdFx0XHRcdHJlamVjdChlcnJvcik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBIHJlY3Vyc2l2ZSBtZXRob2QgdG8gZ2V0IGFsbCB0aGUgaW5mb3JtYXRpb24gb2YgdGhlIGVkaXRHcmlkIGR5bmFtaWMgZm9ybVxyXG5cdCAqIEBwYXJhbSBjb21wb25lbnRzXHJcblx0ICogQHBhcmFtIGZvcm1cclxuXHQgKi9cclxuXHRnZXRFZGl0R3JpZENvbXBvbmVuZXQoY29tcG9uZW50czogYW55W10sIGZvcm06IGFueSwgcGFuZWxOYW1lOiBzdHJpbmcpOiBhbnlbXSB7XHJcblx0XHRmb3IgKGxldCBmb3JtQ29tcCBvZiBmb3JtKSB7XHJcblx0XHRcdGlmIChmb3JtQ29tcC50eXBlID09PSAnZWRpdGdyaWQnKSB7XHJcblx0XHRcdFx0Zm9ybUNvbXAucGFuZWxOYW1lID0gcGFuZWxOYW1lO1xyXG5cdFx0XHRcdGNvbXBvbmVudHMucHVzaChmb3JtQ29tcCk7XHJcblx0XHRcdH0gZWxzZSBpZiAoZm9ybUNvbXAuY29tcG9uZW50cyB8fCBmb3JtQ29tcC5jb2x1bW5zKSB7XHJcblx0XHRcdFx0bGV0IG5ld0NvbXBvbmVudHM6IGFueTtcclxuXHRcdFx0XHRpZiAoZm9ybUNvbXAuY29tcG9uZW50cykge1xyXG5cdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbXBvbmVudHM7XHJcblx0XHRcdFx0fSBlbHNlIGlmIChmb3JtQ29tcC5jb2x1bW5zKSB7XHJcblx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29sdW1ucztcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYgKGZvcm1Db21wLnR5cGUgJiYgZm9ybUNvbXAudHlwZSA9PT0gJ3BhbmVsJykge1xyXG5cdFx0XHRcdFx0cGFuZWxOYW1lID0gZm9ybUNvbXAudGl0bGU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGNvbXBvbmVudHMgPSB0aGlzLmdldEVkaXRHcmlkQ29tcG9uZW5ldChjb21wb25lbnRzLCBuZXdDb21wb25lbnRzLCBwYW5lbE5hbWUpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gY29tcG9uZW50cztcclxuXHR9XHJcblxyXG5cdC8qKiBJdCByZXR1cm5zIHRoZSB0b2tlbnMgYnkgcHJvbUNvZGlnbyAqL1xyXG5cdGdldExpc3RCeVByb21Db2RpZ28ocHJvbUNvZGU6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChcclxuXHRcdFx0dGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuY29uZmlndXJhdGlvbiArICd0b2tlbi9nZXRCeVByb21Db2RpZ28nLFxyXG5cdFx0XHR7IHBhcmFtczogbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ3Byb21Db2RpZ28nLCBwcm9tQ29kZS50b1N0cmluZygpKSB9XHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0LyoqIEl0IHJldHVybnMgdGhlIHRva2VuIGJ5IGlkICovXHJcblx0Z2V0QnlJZChpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmNvbmZpZ3VyYXRpb24gKyAndG9rZW4vZ2V0QnlJZCcsIHtcclxuXHRcdFx0cGFyYW1zOiBuZXcgSHR0cFBhcmFtcygpLnNldCgnaWQnLCBpZC50b1N0cmluZygpKVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgZGVsZXRlcyBhIGZvcm0gYnkgaWQgKi9cclxuXHRkZWxldGUoaWQpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5kZWxldGUoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmNvbmZpZ3VyYXRpb24gKyAndG9rZW4vZGVsZXRlJyxcclxuXHRcdFx0eyBwYXJhbXM6IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdpZCcsIGlkKSB9XHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0LyoqIEl0IHNhdmVzIHRoZSB0b2tlbiAqL1xyXG5cdHNhdmUodG9rZW46IFRva2VuKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdChcclxuXHRcdFx0dGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuY29uZmlndXJhdGlvbiArICd0b2tlbi9zYXZlJyxcclxuXHRcdFx0dG9rZW4sXHJcblx0XHRcdEhFQURFUl9KU09OXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGdldEtleUZvcm11bGFyaW8oZm9ybVRpdGxlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG5cdFx0aWYgKFV0aWxTdHJpbmcuaXNWYWxpZChmb3JtVGl0bGUpKSB7XHJcblx0XHRcdHJldHVybiAoXHJcblx0XHRcdFx0VXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9GT1JNKSArXHJcblx0XHRcdFx0VXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKGZvcm1UaXRsZSkucmVwbGFjZSgvXy9nLCAnLScpXHJcblx0XHRcdCk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gJyc7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgcmV0dXJucyB0aGUgdW5pcXVlIHZlcmlmaWNhdGlvbiBjb2RlICovXHJcblx0Z2V0VW5pcXVlVmVyaWZpY2F0aW9uQ29kZShsb2dpbjogc3RyaW5nLCB0b2tlbjogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KFxyXG5cdFx0XHR0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5kb2N1bWVudHNSZXBvc2l0b3J5ICtcclxuXHRcdFx0XHQnZG9jdW1lbnRvL2NvbnN1bHRhckNvZGlnb1VuaWNvLycgK1xyXG5cdFx0XHRcdGxvZ2luICtcclxuXHRcdFx0XHQnLycgK1xyXG5cdFx0XHRcdHRva2VuLFxyXG5cdFx0XHR7IHBhcmFtczogbmV3IEh0dHBQYXJhbXMoKSB9XHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0LyoqIEl0IHNlbmQgdGhlIGluZm9ybWF0aW9uIHRvIGNvcHkgdGhlIERvY3VtZW50IHZpZXdlciAqL1xyXG5cdGNvcHlEb2N1bWVudEluZm9ybWF0aW9uVmlld2VyKFxyXG5cdFx0bG9naW46IHN0cmluZyxcclxuXHRcdHRva2VuOiBzdHJpbmcsXHJcblx0XHR1bmlxdWVDb2RlOiBzdHJpbmcsXHJcblx0XHRkb2N1bWVudFVSTDogc3RyaW5nLFxyXG5cdFx0ZG9jdW1lbnROYW1lOiBzdHJpbmdcclxuXHQpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0bGV0IGluZm9Eb2N1bWVudG8gPSB7XHJcblx0XHRcdGNvZGlnb1VuaWNvOiB1bmlxdWVDb2RlLFxyXG5cdFx0XHRydXRhRG9jdW1lbnRvOiBkb2N1bWVudFVSTCxcclxuXHRcdFx0ZG9jdW1lbnROYW1lOiBkb2N1bWVudE5hbWVcclxuXHRcdH07XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmRvY3VtZW50c1JlcG9zaXRvcnkgK1xyXG5cdFx0XHRcdCdkb2N1bWVudG8vYWRpY2lvbmFyRG9jdW1lbnRvLycgK1xyXG5cdFx0XHRcdGxvZ2luICtcclxuXHRcdFx0XHQnLycgK1xyXG5cdFx0XHRcdHRva2VuLFxyXG5cdFx0XHRpbmZvRG9jdW1lbnRvLFxyXG5cdFx0XHRIRUFERVJfSlNPTlxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRLZXlCdWRnZXQoKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX0JVREdFVCk7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0S2V5RG9jdW1lbnQoKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX0RPQ1VNRU5UTyk7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0S2V5RG9jdW1lbnRBbmFseXNpcygpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fRE9DVU1FTlRPX0FOQUxZU0lTX1RZUEUpO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGdldEtleVRhc2soKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX1RBU0tMKTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRLZXlTdGF0aWMoKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX1NUQVRJQyk7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0S2V5Q2FsY3VsYXRlZCh0b2tlbjogVG9rZW4pOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIChcclxuXHRcdFx0VXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9DQUxDVUxBVEVEKSArXHJcblx0XHRcdCdfJyArXHJcblx0XHRcdFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyh0b2tlbi5uYW1lKVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRLZXlTbmFwc2hvdCh0b2tlbjogVG9rZW4pOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIChcclxuXHRcdFx0VXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9TTkFQU0hPVCkgK1xyXG5cdFx0XHQnXycgK1xyXG5cdFx0XHRVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnModG9rZW4ubmFtZSlcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0S2V5R3VhcmFudGVlKHRva2VuOiBQbGlDbmZHdWFyYW50ZWVUb2tlbik6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gKFxyXG5cdFx0XHRVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX0dVQVJBTlRFRSkgK1xyXG5cdFx0XHQnXycgK1xyXG5cdFx0XHRVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnModG9rZW4ubmFtZSlcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZXR1cm4gYSB2YWx1ZSB0aGF0IHJlcHJlc2VudCB0aGUgdHlwZSBvZiBsYWJlbDogMT1Gb3JtLCAyPUJ1ZGdldCwgMz1TdGF0aWMsIDQ9Q2FsY3VsYXRlZFxyXG5cdCAqIEBwYXJhbSBrZXkgVmFsdWUgdG8gZXZhbHVlYXRlXHJcblx0ICovXHJcblx0c3RhdGljIGdldEtleVR5cGUoa2V5OiBzdHJpbmcpOiBudW1iZXIge1xyXG5cdFx0a2V5ID0ga2V5LnJlcGxhY2UoJ3snLCAnJykucmVwbGFjZSgnfScsICcnKTtcclxuXHRcdGtleSA9IGtleS5zdWJzdHJpbmcoMSwga2V5LmluZGV4T2YoJ18nKSk7XHJcblx0XHRpZiAoa2V5LnN0YXJ0c1dpdGgoVXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9GT1JNKSkpIHtcclxuXHRcdFx0cmV0dXJuIDE7XHJcblx0XHR9IGVsc2UgaWYgKFxyXG5cdFx0XHRrZXkuc3RhcnRzV2l0aChVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX0JVREdFVCkpXHJcblx0XHQpIHtcclxuXHRcdFx0cmV0dXJuIDI7XHJcblx0XHR9IGVsc2UgaWYgKFxyXG5cdFx0XHRrZXkuc3RhcnRzV2l0aChVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX1NUQVRJQykpXHJcblx0XHQpIHtcclxuXHRcdFx0cmV0dXJuIDM7XHJcblx0XHR9IGVsc2UgaWYgKFxyXG5cdFx0XHRrZXkuc3RhcnRzV2l0aChcclxuXHRcdFx0XHRVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX0NBTENVTEFURUQpXHJcblx0XHRcdClcclxuXHRcdCkge1xyXG5cdFx0XHRyZXR1cm4gNDtcclxuXHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdGtleS5zdGFydHNXaXRoKFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfVEFTS0wpKVxyXG5cdFx0KSB7XHJcblx0XHRcdHJldHVybiA1O1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0a2V5LnN0YXJ0c1dpdGgoXHJcblx0XHRcdFx0VXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9ET0NVTUVOVE9fQU5BTFlTSVNfVFlQRSlcclxuXHRcdFx0KVxyXG5cdFx0KSB7XHJcblx0XHRcdHJldHVybiA2O1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIG51bGw7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEZXBlbmRzIG9mIHRoZSB0eXBlIG9mIGZvcm1GaWVsZFRva2VuIHJldHVybiBkZSB2YWx1ZSBvZiB0aGUgdmFsdWVEYXRhXHJcblx0ICogQHBhcmFtIGZvcm1GaWVsZFRva2VuXHJcblx0ICogQHBhcmFtIHZhbHVlRGF0YVxyXG5cdCAqL1xyXG5cdGdldFZhbHVlRnJvbUZvcm1GaWVsZChmb3JtRmllbGRUb2tlbjogYW55LCB2YWx1ZURhdGE6IGFueSk6IGFueSB7XHJcblx0XHRpZiAodHlwZW9mIHZhbHVlRGF0YSA9PSAnb2JqZWN0Jykge1xyXG5cdFx0XHRpZiAoZm9ybUZpZWxkVG9rZW4udHlwZSkge1xyXG5cdFx0XHRcdGlmIChmb3JtRmllbGRUb2tlbi50eXBlID09ICdhZGRyZXNzJykge1xyXG5cdFx0XHRcdFx0cmV0dXJuIHZhbHVlRGF0YS5mb3JtYXR0ZWRfYWRkcmVzcztcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0Zm9ybUZpZWxkVG9rZW4udHlwZSA9PSAnc2VsZWN0JyAmJlxyXG5cdFx0XHRcdFx0dmFsdWVEYXRhLmhhc093blByb3BlcnR5KGZvcm1GaWVsZFRva2VuLnNlYXJjaEZpZWxkKVxyXG5cdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0aWYgKHZhbHVlRGF0YS5oYXNPd25Qcm9wZXJ0eSgnb3JpZ2luYWxfbmFtZScpICE9PSAnJykge1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4gdmFsdWVEYXRhLm9yaWdpbmFsX25hbWU7XHJcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHZhbHVlRGF0YS5oYXNPd25Qcm9wZXJ0eSgnbmF0aXZlTmFtZScpICE9PSAnJykge1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4gdmFsdWVEYXRhLm5hdGl2ZU5hbWU7XHJcblx0XHRcdFx0XHR9IGVsc2UgaWYgKGZvcm1GaWVsZFRva2VuLnNlYXJjaEZpZWxkKSB7XHJcblx0XHRcdFx0XHRcdHJldHVybiB2YWx1ZURhdGFbZm9ybUZpZWxkVG9rZW4uc2VhcmNoRmllbGRdO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHZhbHVlRGF0YTtcclxuXHR9XHJcblx0Zm9ybWF0RGF0ZSh2YWx1ZTogRGF0ZSwgbG9jYWxlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG5cdFx0Y29uc3QgZGF0ZSA9IG5ldyBEYXRlKHZhbHVlKTtcclxuXHJcblx0XHRjb25zdCBtb250aHMgPSB7XHJcblx0XHRcdGVzOiBbXHJcblx0XHRcdFx0J2VuZXJvJyxcclxuXHRcdFx0XHQnZmVicmVybycsXHJcblx0XHRcdFx0J21hcnpvJyxcclxuXHRcdFx0XHQnYWJyaWwnLFxyXG5cdFx0XHRcdCdtYXlvJyxcclxuXHRcdFx0XHQnanVuaW8nLFxyXG5cdFx0XHRcdCdqdWxpbycsXHJcblx0XHRcdFx0J2Fnb3N0bycsXHJcblx0XHRcdFx0J3NlcHRpZW1icmUnLFxyXG5cdFx0XHRcdCdvY3R1YnJlJyxcclxuXHRcdFx0XHQnbm92aWVtYnJlJyxcclxuXHRcdFx0XHQnZGljaWVtYnJlJ1xyXG5cdFx0XHRdLFxyXG5cdFx0XHRlbjogW1xyXG5cdFx0XHRcdCdKYW51YXJ5JyxcclxuXHRcdFx0XHQnRmVicnVhcnknLFxyXG5cdFx0XHRcdCdNYXJjaCcsXHJcblx0XHRcdFx0J0FwcmlsJyxcclxuXHRcdFx0XHQnTWF5JyxcclxuXHRcdFx0XHQnSnVuZScsXHJcblx0XHRcdFx0J0p1bHknLFxyXG5cdFx0XHRcdCdBdWd1c3QnLFxyXG5cdFx0XHRcdCdTZXB0ZW1iZXInLFxyXG5cdFx0XHRcdCdPY3RvYmVyJyxcclxuXHRcdFx0XHQnTm92ZW1iZXInLFxyXG5cdFx0XHRcdCdEZWNlbWJlcidcclxuXHRcdFx0XSxcclxuXHRcdFx0ZnI6IFtcclxuXHRcdFx0XHQnamFudmllcicsXHJcblx0XHRcdFx0J2bDqXZyaWVyJyxcclxuXHRcdFx0XHQnbWFycycsXHJcblx0XHRcdFx0J2F2cmlsJyxcclxuXHRcdFx0XHQnbWFpJyxcclxuXHRcdFx0XHQnanVpbicsXHJcblx0XHRcdFx0J2p1aWxsZXQnLFxyXG5cdFx0XHRcdCdhb8O7dCcsXHJcblx0XHRcdFx0J3NlcHRlbWJyZScsXHJcblx0XHRcdFx0J29jdG9icmUnLFxyXG5cdFx0XHRcdCdub3ZlbWJyZScsXHJcblx0XHRcdFx0J2TDqWNlbWJyZSdcclxuXHRcdFx0XSxcclxuXHRcdFx0ZGU6IFtcclxuXHRcdFx0XHQnSmFudWFyJyxcclxuXHRcdFx0XHQnRmVicnVhcicsXHJcblx0XHRcdFx0J03DpHJ6JyxcclxuXHRcdFx0XHQnQXByaWwnLFxyXG5cdFx0XHRcdCdNYWknLFxyXG5cdFx0XHRcdCdKdW5pJyxcclxuXHRcdFx0XHQnSnVsaScsXHJcblx0XHRcdFx0J0F1Z3VzdCcsXHJcblx0XHRcdFx0J1NlcHRlbWJlcicsXHJcblx0XHRcdFx0J09rdG9iZXInLFxyXG5cdFx0XHRcdCdOb3ZlbWJlcicsXHJcblx0XHRcdFx0J0RlemVtYmVyJ1xyXG5cdFx0XHRdLFxyXG5cdFx0XHRpdDogW1xyXG5cdFx0XHRcdCdnZW5uYWlvJyxcclxuXHRcdFx0XHQnZmViYnJhaW8nLFxyXG5cdFx0XHRcdCdtYXJ6bycsXHJcblx0XHRcdFx0J2FwcmlsZScsXHJcblx0XHRcdFx0J21hZ2dpbycsXHJcblx0XHRcdFx0J2dpdWdubycsXHJcblx0XHRcdFx0J2x1Z2xpbycsXHJcblx0XHRcdFx0J2Fnb3N0bycsXHJcblx0XHRcdFx0J3NldHRlbWJyZScsXHJcblx0XHRcdFx0J290dG9icmUnLFxyXG5cdFx0XHRcdCdub3ZlbWJyZScsXHJcblx0XHRcdFx0J2RpY2VtYnJlJ1xyXG5cdFx0XHRdXHJcblx0XHR9O1xyXG5cclxuXHRcdGNvbnN0IGxvY2FsZU1vbnRocyA9IG1vbnRoc1tsb2NhbGVdO1xyXG5cclxuXHRcdGNvbnN0IG1vbnRoID0gbG9jYWxlTW9udGhzW2RhdGUuZ2V0TW9udGgoKV07XHJcblx0XHRjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xyXG5cclxuXHRcdHJldHVybiBgJHttb250aH0gJHt5ZWFyfWA7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFRyeSB0byBmaW5kIHRoZSB0b2tlbiBpbiB0aGUgc3RyaW5nVGV4dCBhbmQgcmVwbGFjZSB3aXRoIGRhdGFWYWx1ZS4gSWYgZGV0ZWN0IGZvcm1hdCBvZiBudW1iZXIgb3IgZGF0ZSB0cnkgdG8gZm9ybWF0IHRoZSBkYXRhVmFsdWVcclxuXHQgKiBAcGFyYW0gc3RyaW5nVGV4dFxyXG5cdCAqIEBwYXJhbSB0b2tlblxyXG5cdCAqIEBwYXJhbSBkYXRhVmFsdWVcclxuXHQgKi9cclxuXHRyZXBsYWNlVG9rZW4oc3RyaW5nVGV4dDogc3RyaW5nLCB0b2tlbjogYW55LCBkYXRhVmFsdWU6IGFueSwgbG9jYWxlPzogc3RyaW5nKTogc3RyaW5nIHtcclxuXHRcdGxldCB2YWx1ZVJlcGxhY2U6IHN0cmluZyA9IG51bGw7XHJcblx0XHRpZiAodG9rZW4gJiYgdG9rZW5bMF0gPT0gJyMnKSB7XHJcblx0XHRcdGxldCB0eXBlVG9rZW4gPSB0b2tlbi5zdWJzdHJpbmcoMSwgdG9rZW4uaW5kZXhPZignKCcpKTtcclxuXHRcdFx0aWYgKHR5cGVUb2tlbiA9PSAnZGF0ZScpIHtcclxuXHRcdFx0XHRsZXQgZGF0ZUZvcm1hdDogc3RyaW5nID0gdG9rZW4uc3Vic3RyaW5nKFxyXG5cdFx0XHRcdFx0dG9rZW4uaW5kZXhPZignfScpICsgMSxcclxuXHRcdFx0XHRcdHRva2VuLmluZGV4T2YoJyknKVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0ZGF0ZUZvcm1hdCA9IGRhdGVGb3JtYXQudHJpbSgpLnJlcGxhY2UoL1xcXCIvZywgJycpLnJlcGxhY2UoL1xcJy9nLCAnJyk7XHJcblx0XHRcdFx0bGV0IGRhdGVWYWx1ZSA9IERhdGVVdGlsLmdldERhdGUoZGF0YVZhbHVlKTtcclxuXHRcdFx0XHRpZiAobG9jYWxlICE9IG51bGwgJiYgbG9jYWxlKSB7XHJcblx0XHRcdFx0XHR2YWx1ZVJlcGxhY2UgPSB0aGlzLmZvcm1hdERhdGUoZGF0ZVZhbHVlLCBsb2NhbGUpO1xyXG5cdFx0XHRcdH0gZWxzZSBpZiAoZGF0ZVZhbHVlKSB7XHJcblx0XHRcdFx0XHR2YWx1ZVJlcGxhY2UgPSBEYXRlVXRpbC5nZXRNb21lbnQoZGF0ZVZhbHVlKS5mb3JtYXQoZGF0ZUZvcm1hdCk7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHZhbHVlUmVwbGFjZSA9ICcnO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBlbHNlIGlmICh0eXBlVG9rZW4gPT0gJ251bWJlcicpIHtcclxuXHRcdFx0XHRsZXQgbnVtYmVyVmFsdWU6IG51bWJlciA9IE51bWJlcihkYXRhVmFsdWUpO1xyXG5cdFx0XHRcdGlmIChudW1iZXJWYWx1ZSAhPSB1bmRlZmluZWQgJiYgIWlzTmFOKG51bWJlclZhbHVlKSkge1xyXG5cdFx0XHRcdFx0bGV0IG51bWJlckZvcm1hdDogc3RyaW5nID0gdG9rZW4uc3Vic3RyaW5nKFxyXG5cdFx0XHRcdFx0XHR0b2tlbi5pbmRleE9mKCd9JykgKyAxLFxyXG5cdFx0XHRcdFx0XHR0b2tlbi5pbmRleE9mKCcpJylcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRudW1iZXJGb3JtYXQgPSBudW1iZXJGb3JtYXQudHJpbSgpLnJlcGxhY2UoL1xcXCIvZywgJycpLnJlcGxhY2UoL1xcJy9nLCAnJyk7XHJcblx0XHRcdFx0XHR2YWx1ZVJlcGxhY2UgPSB0aGlzLmN1cnJlbmN5UGlwZS50cmFuc2Zvcm0oXHJcblx0XHRcdFx0XHRcdG51bWJlclZhbHVlLFxyXG5cdFx0XHRcdFx0XHR0aGlzLmxvY2FsZSxcclxuXHRcdFx0XHRcdFx0JycsXHJcblx0XHRcdFx0XHRcdG51bWJlckZvcm1hdFxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coXHJcblx0XHRcdFx0XHRcdCdFbCBkYXRvIFsnICtcclxuXHRcdFx0XHRcdFx0XHRkYXRhVmFsdWUgK1xyXG5cdFx0XHRcdFx0XHRcdCddIHBhcmEgZWwgdG9rZW4gWycgK1xyXG5cdFx0XHRcdFx0XHRcdHRva2VuICtcclxuXHRcdFx0XHRcdFx0XHQnXSB0aXBvIG7Dum1lcmljbyBubyBlcyB2YWxpZG8nXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0dmFsdWVSZXBsYWNlID0gJyc7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCd0aXBvIGRlIHRva2VuIGluZGVmaW5pZG8uIFt0eXBlVG9rZW5bJyArIHR5cGVUb2tlbiArICddXScpO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2UgaWYgKHRva2VuICYmIHRva2VuWzBdID09ICckJykge1xyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0ZGF0YVZhbHVlICE9PSBudWxsICYmXHJcblx0XHRcdFx0ZGF0YVZhbHVlICE9PSB1bmRlZmluZWQgJiZcclxuXHRcdFx0XHRkYXRhVmFsdWUub3JpZ2luYWxfbmFtZSAhPT0gdW5kZWZpbmVkICYmXHJcblx0XHRcdFx0ZGF0YVZhbHVlLm9yaWdpbmFsX25hbWUgIT09IG51bGxcclxuXHRcdFx0KSB7XHJcblx0XHRcdFx0dmFsdWVSZXBsYWNlID0gZGF0YVZhbHVlLm9yaWdpbmFsX25hbWU7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dmFsdWVSZXBsYWNlID0gZGF0YVZhbHVlO1xyXG5cdFx0XHR9XHJcblx0XHRcdC8vIHZhbHVlUmVwbGFjZSA9IGRhdGFWYWx1ZTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGNvbnNvbGUubG9nKCdFbCB0b2tlbiBubyBlcyB2YWxpZG8uIFt0b2tlblsnICsgdG9rZW4gKyAnXV0nKTtcclxuXHRcdH1cclxuXHRcdGlmIChzdHJpbmdUZXh0ICYmIHZhbHVlUmVwbGFjZSAhPT0gbnVsbCkge1xyXG5cdFx0XHQvLyByZXBsYWNlIHRleHQgaW4gYSBtb3JlIGVmZmljaWVudCB3YXlcclxuXHRcdFx0c3RyaW5nVGV4dCA9IHN0cmluZ1RleHQuc3BsaXQodG9rZW4pLmpvaW4odmFsdWVSZXBsYWNlKTtcclxuXHRcdFx0Ly9zdHJpbmdUZXh0ID0gc3RyaW5nVGV4dC5yZXBsYWNlKHRva2VuLCB2YWx1ZVJlcGxhY2UpO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHN0cmluZ1RleHQ7XHJcblx0fVxyXG5cclxuXHRnZXRMaXN0VG9rZW5zQnlTdHJpbmdTZWdtZW50YXRpb24oc3RyaW5nVGV4dDogc3RyaW5nKTogYW55W10ge1xyXG5cdFx0Y29uc3QgYXJyYXlUb2tlbiA9IHN0cmluZ1RleHQubWF0Y2goL1xcJHsoW159XSspXFx9L2cpO1xyXG5cdFx0Y29uc3QgYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUgPSBzdHJpbmdUZXh0Lm1hdGNoKC9cXCNkYXRlW14pXStcXCkvZyk7XHJcblx0XHRjb25zdCBhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyID0gc3RyaW5nVGV4dC5tYXRjaCgvXFwjbnVtYmVyW14pXStcXCkvZyk7XHJcblx0XHRsZXQgYXJyYXlUb2tlbkZvcm1hdHRlZCA9IFtdO1xyXG5cdFx0aWYgKFxyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkRGF0ZSAmJlxyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkRGF0ZS5sZW5ndGggPiAwICYmXHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIgJiZcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlci5sZW5ndGggPiAwXHJcblx0XHQpIHtcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZCA9IGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlLmNvbmNhdChhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyKTtcclxuXHRcdH0gZWxzZSBpZiAoYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUgJiYgYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkID0gYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUuc2xpY2UoKTtcclxuXHRcdH0gZWxzZSBpZiAoYXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlciAmJiBhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZCA9IGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIuc2xpY2UoKTtcclxuXHRcdH1cclxuXHRcdGNvbnN0IHJlc3VsdDogYW55W10gPSBbXTtcclxuXHJcblx0XHRpZiAoYXJyYXlUb2tlbikge1xyXG5cdFx0XHRmb3IgKGNvbnN0IHRva2VuIG9mIGFycmF5VG9rZW4pIHtcclxuXHRcdFx0XHRjb25zdCBpbmZvVG9rZW4gPSB7IGtleTogdG9rZW4sIHZhbHVlOiB0b2tlbiB9O1xyXG5cdFx0XHRcdGlmIChhcnJheVRva2VuRm9ybWF0dGVkKSB7XHJcblx0XHRcdFx0XHRmb3IgKGNvbnN0IHRva2VuRm9ybWF0dGVkIG9mIGFycmF5VG9rZW5Gb3JtYXR0ZWQpIHtcclxuXHRcdFx0XHRcdFx0Y29uc3QgaW5kZXggPSB0b2tlbkZvcm1hdHRlZC5pbmRleE9mKHRva2VuKTtcclxuXHRcdFx0XHRcdFx0aWYgKGluZGV4ID49IDApIHtcclxuXHRcdFx0XHRcdFx0XHRpbmZvVG9rZW4udmFsdWUgPSB0b2tlbkZvcm1hdHRlZDtcclxuXHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXN1bHQucHVzaChpbmZvVG9rZW4pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHJlc3VsdDtcclxuXHR9XHJcblxyXG5cdGNoYW5nZUlkUHJvcGVydGllc09mT2JqZWN0KG5vcm1hbGl6YXRpb25Db2x1bW5zOiBhbnlbXSwgbGlzdERhdGE6IGFueVtdKTogYW55W10ge1xyXG5cdFx0Y29uc3QgbmV3RGF0YSA9IFtdO1xyXG5cdFx0bGlzdERhdGEuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG5cdFx0XHRjb25zdCBvYmpEYXRhID0ge307XHJcblx0XHRcdE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goKHByb3BlcnR5KSA9PiB7XHJcblx0XHRcdFx0aWYgKGRhdGEuaGFzT3duUHJvcGVydHkocHJvcGVydHkpKSB7XHJcblx0XHRcdFx0XHRub3JtYWxpemF0aW9uQ29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuXHRcdFx0XHRcdFx0aWYgKGNvbHVtbi5pZENvbHVtbi50b1N0cmluZygpID09PSBwcm9wZXJ0eSkge1xyXG5cdFx0XHRcdFx0XHRcdG9iakRhdGFbY29sdW1uLmtleV0gPSBkYXRhW3Byb3BlcnR5XTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdFx0aWYgKG9iakRhdGEpIHtcclxuXHRcdFx0XHRuZXdEYXRhLnB1c2gob2JqRGF0YSk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdFx0cmV0dXJuIG5ld0RhdGE7XHJcblx0fVxyXG5cclxuXHRnZW5lcmF0ZUh0bWxCeVRva2Vuc0FuZERhdGEoaHRtbDogc3RyaW5nLCBsaXN0RGF0YTogYW55W10sIGxpc3RUb2tlbnM6IGFueVtdKTogc3RyaW5nW10ge1xyXG5cdFx0Y29uc3QgdHJhbnNsYXRlZENhcmRzOiBhbnlbXSA9IFtdO1xyXG5cdFx0bGlzdERhdGEuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG5cdFx0XHRjb25zdCBvYmpUb2tlbiA9IHt9O1xyXG5cdFx0XHRjb25zdCBodG1sVHJhbnNsYXRlZCA9IHsgaHRtbDogaHRtbCB9O1xyXG5cdFx0XHRPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKChwcm9wZXJ0eSkgPT4ge1xyXG5cdFx0XHRcdGxpc3RUb2tlbnMuZm9yRWFjaCgodG9rZW4pID0+IHtcclxuXHRcdFx0XHRcdGlmIChwcm9wZXJ0eSA9PSB0b2tlbi5rZXkucmVwbGFjZSgnJHsnLCAnJykucmVwbGFjZSgnfScsICcnKSkge1xyXG5cdFx0XHRcdFx0XHRvYmpUb2tlblt0b2tlbi5rZXldID0gZGF0YVtwcm9wZXJ0eV07XHJcblx0XHRcdFx0XHRcdGh0bWxUcmFuc2xhdGVkLmh0bWwgPSBodG1sVHJhbnNsYXRlZC5odG1sLnJlcGxhY2UoXHJcblx0XHRcdFx0XHRcdFx0dG9rZW4ua2V5LFxyXG5cdFx0XHRcdFx0XHRcdGRhdGFbcHJvcGVydHldXHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0pO1xyXG5cdFx0XHR0cmFuc2xhdGVkQ2FyZHMucHVzaChodG1sVHJhbnNsYXRlZCk7XHJcblx0XHR9KTtcclxuXHRcdHJldHVybiB0cmFuc2xhdGVkQ2FyZHM7XHJcblx0fVxyXG5cclxuXHRnZXRMaXN0VG9rZW5zQnlTdHJpbmcoc3RyaW5nVGV4dDogc3RyaW5nKTogYW55W10ge1xyXG5cdFx0dmFyIGFycmF5VG9rZW4gPSBzdHJpbmdUZXh0Lm1hdGNoKC9cXCR7KFtefV0rKVxcfS9nKTtcclxuXHRcdHZhciBhcnJheVRva2VuRm9ybWF0dGVkRGF0ZSA9IHN0cmluZ1RleHQubWF0Y2goL1xcI2RhdGVbXildK1xcKS9nKTtcclxuXHRcdHZhciBhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyID0gc3RyaW5nVGV4dC5tYXRjaCgvXFwjbnVtYmVyW14pXStcXCkvZyk7XHJcblx0XHR2YXIgYXJyYXlUb2tlbkZvcm1hdHRlZCA9IFtdO1xyXG5cdFx0aWYgKFxyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkRGF0ZSAmJlxyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkRGF0ZS5sZW5ndGggPiAwICYmXHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIgJiZcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlci5sZW5ndGggPiAwXHJcblx0XHQpIHtcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZCA9IGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlLmNvbmNhdChhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyKTtcclxuXHRcdH0gZWxzZSBpZiAoYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUgJiYgYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkID0gYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUuc2xpY2UoKTtcclxuXHRcdH0gZWxzZSBpZiAoYXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlciAmJiBhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZCA9IGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIuc2xpY2UoKTtcclxuXHRcdH1cclxuXHRcdHZhciByZXN1bHQ6IGFueVtdID0gW107XHJcblxyXG5cdFx0aWYgKGFycmF5VG9rZW4pIHtcclxuXHRcdFx0Zm9yIChjb25zdCB0b2tlbiBvZiBhcnJheVRva2VuKSB7XHJcblx0XHRcdFx0bGV0IGtleVR5cGU6IG51bWJlciA9IFRva2VuU2VydmljZS5nZXRLZXlUeXBlKHRva2VuKTtcclxuXHRcdFx0XHRpZiAoa2V5VHlwZSA9PT0gbnVsbCkge1xyXG5cdFx0XHRcdFx0Y29udGludWU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHZhciBpbmZvVG9rZW4gPSB7IGtleTogdG9rZW4sIHZhbHVlOiB0b2tlbiB9O1xyXG5cdFx0XHRcdGlmIChhcnJheVRva2VuRm9ybWF0dGVkKSB7XHJcblx0XHRcdFx0XHRmb3IgKGNvbnN0IHRva2VuRm9ybWF0dGVkIG9mIGFycmF5VG9rZW5Gb3JtYXR0ZWQpIHtcclxuXHRcdFx0XHRcdFx0dmFyIGluZGV4ID0gdG9rZW5Gb3JtYXR0ZWQuaW5kZXhPZih0b2tlbik7XHJcblx0XHRcdFx0XHRcdGlmIChpbmRleCA+PSAwKSB7XHJcblx0XHRcdFx0XHRcdFx0aW5mb1Rva2VuLnZhbHVlID0gdG9rZW5Gb3JtYXR0ZWQ7XHJcblx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0cmVzdWx0LnB1c2goaW5mb1Rva2VuKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiByZXN1bHQ7XHJcblxyXG5cdFx0Ly8gbGV0IHRva2VuczogYW55W10gPSBbXTtcclxuXHRcdC8vIGxldCBpID0gdGhpcy5uZXh0VmFsaWRQb3NpdGlvblRva2VucyhzdHJpbmdUZXh0LCAwKTtcclxuXHRcdC8vIGxldCBjb3VudCA9IDA7XHJcblx0XHQvLyB3aGlsZSAoaSA+PSAwICYmIGNvdW50IDw9IDEwKSB7XHJcblx0XHQvLyAgIGxldCBpbmZvVG9rZW46IHt9ID0gbnVsbDtcclxuXHRcdC8vICAgbGV0IG5leHRJOiBudW1iZXIgPSBpO1xyXG5cdFx0Ly8gICBsZXQgY2hhcmFjdGVyID0gc3RyaW5nVGV4dC5zdWJzdHJpbmcoaSwgKGkgKyAxKSk7XHJcblx0XHQvLyAgIGlmIChjaGFyYWN0ZXIgPT0gXCIkXCIpIHtcclxuXHRcdC8vICAgICBsZXQgbmV4dENoYXJhY3RlciA9IHN0cmluZ1RleHQuc3Vic3RyaW5nKChpICsgMSksIChpICsgMikpO1xyXG5cdFx0Ly8gICAgIC8vIFRoZSBuZXh0IGNoYXJhY3RlciBuZWVkIHRvIGJlIGEgeyBzaWduXHJcblx0XHQvLyAgICAgaWYgKG5leHRDaGFyYWN0ZXIgIT0gXCJ7XCIpIHtcclxuXHRcdC8vICAgICAgIGkgPSB0aGlzLm5leHRWYWxpZFBvc2l0aW9uVG9rZW5zKHN0cmluZ1RleHQsIG5leHRJICsgMSk7XHJcblx0XHQvLyAgICAgICBjb250aW51ZTtcclxuXHRcdC8vICAgICB9XHJcblx0XHQvLyAgICAgbGV0IGtleVRva2VuOiBzdHJpbmcgPSBzdHJpbmdUZXh0LnN1YnN0cmluZyhpLCBzdHJpbmdUZXh0LmluZGV4T2YoXCJ9XCIsIGkpICsgMSk7XHJcblx0XHQvLyAgICAgLy8gSWYgdGhlIHRva2VuIGhhdmUgYSB2YWxpZCBrZXkgdHlwZVxyXG5cdFx0Ly8gICAgIGxldCBrZXlUeXBlOiBudW1iZXIgPSBUb2tlblNlcnZpY2UuZ2V0S2V5VHlwZShrZXlUb2tlbi5yZXBsYWNlKFwie1wiLCBcIlwiKS5yZXBsYWNlKFwifVwiLCBcIlwiKSk7XHJcblx0XHQvLyAgICAgaWYgKGtleVR5cGUgPT09IG51bGwpIHtcclxuXHRcdC8vICAgICAgIGkgPSB0aGlzLm5leHRWYWxpZFBvc2l0aW9uVG9rZW5zKHN0cmluZ1RleHQsIG5leHRJICsgMSk7XHJcblx0XHQvLyAgICAgICBjb250aW51ZTtcclxuXHRcdC8vICAgICB9XHJcblx0XHQvLyAgICAgaW5mb1Rva2VuID0ge1xyXG5cdFx0Ly8gICAgICAga2V5OiBrZXlUb2tlbixcclxuXHRcdC8vICAgICAgIHZhbHVlOiBrZXlUb2tlblxyXG5cdFx0Ly8gICAgIH07XHJcblx0XHQvLyAgICAgbmV4dEkgPSBzdHJpbmdUZXh0LmluZGV4T2YoXCJ9XCIsIGkpO1xyXG5cdFx0Ly8gICB9IGVsc2Uge1xyXG5cdFx0Ly8gICAgIGxldCBuZXh0U2lnbjogbnVtYmVyID0gc3RyaW5nVGV4dC5pbmRleE9mKFwiJFwiLCBpKTtcclxuXHRcdC8vICAgICAvLyBXZSBpbmx5IHN1cHBvcnQgI2RhdGUoJCBhbmQgI251bWJlcigkIGluIHRoaXMgMiBzY2VuYXJpb3MgdGhlIGxlbmdodCBjYW4ndCBiZSBtb3JlIHRoYW4gMTAgY2hhcmFjdGVyc1xyXG5cdFx0Ly8gICAgIGlmIChuZXh0U2lnbiA8IDAgfHwgKG5leHRTaWduIC0gaSkgPiAxMCkge1xyXG5cdFx0Ly8gICAgICAgaSA9IHRoaXMubmV4dFZhbGlkUG9zaXRpb25Ub2tlbnMoc3RyaW5nVGV4dCwgbmV4dEkgKyAxKTtcclxuXHRcdC8vICAgICAgIGNvbnRpbnVlO1xyXG5cdFx0Ly8gICAgIH1cclxuXHRcdC8vICAgICBsZXQga2V5VG9rZW46IHN0cmluZyA9IHN0cmluZ1RleHQuc3Vic3RyaW5nKHN0cmluZ1RleHQuaW5kZXhPZihcIiRcIiwgaSksIHN0cmluZ1RleHQuaW5kZXhPZihcIn1cIiwgaSkgKyAxKTtcclxuXHRcdC8vICAgICBsZXQgdmFsdWVUb2tlbjogc3RyaW5nID0gc3RyaW5nVGV4dC5zdWJzdHJpbmcoaSwgc3RyaW5nVGV4dC5pbmRleE9mKFwiKVwiLCBpKSArIDEpO1xyXG5cdFx0Ly8gICAgIGluZm9Ub2tlbiA9IHtcclxuXHRcdC8vICAgICAgIGtleToga2V5VG9rZW4sXHJcblx0XHQvLyAgICAgICB2YWx1ZTogdmFsdWVUb2tlblxyXG5cdFx0Ly8gICAgIH07XHJcblx0XHQvLyAgICAgbmV4dEkgPSBzdHJpbmdUZXh0LmluZGV4T2YoXCIpXCIsIGkpO1xyXG5cdFx0Ly8gICB9XHJcblx0XHQvLyAgIHRva2Vucy5wdXNoKGluZm9Ub2tlbik7XHJcblx0XHQvLyAgIGkgPSB0aGlzLm5leHRWYWxpZFBvc2l0aW9uVG9rZW5zKHN0cmluZ1RleHQsIG5leHRJKTtcclxuXHRcdC8vICAgY291bnQrKztcclxuXHRcdC8vIH1cclxuXHRcdC8vIHJldHVybiB0b2tlbnM7XHJcblx0fVxyXG5cclxuXHRuZXh0VmFsaWRQb3NpdGlvblRva2VucyhzdHJpbmdUZXh0OiBzdHJpbmcsIG5leHRJOiBudW1iZXIpOiBudW1iZXIge1xyXG5cdFx0bGV0IHRva2VuRG9sbGFyU2lnbjogbnVtYmVyID0gc3RyaW5nVGV4dC5pbmRleE9mKCckJywgbmV4dEkpO1xyXG5cdFx0bGV0IHRva2VuTnVtU2lnbjogbnVtYmVyID0gc3RyaW5nVGV4dC5pbmRleE9mKCcjJywgbmV4dEkpO1xyXG5cdFx0bGV0IGk6IG51bWJlciA9XHJcblx0XHRcdHRva2VuRG9sbGFyU2lnbiA8IDAgJiYgdG9rZW5OdW1TaWduID49IDBcclxuXHRcdFx0XHQ/IHRva2VuTnVtU2lnblxyXG5cdFx0XHRcdDogdG9rZW5OdW1TaWduIDwgMCAmJiB0b2tlbkRvbGxhclNpZ24gPj0gMFxyXG5cdFx0XHRcdD8gdG9rZW5Eb2xsYXJTaWduXHJcblx0XHRcdFx0OiB0b2tlbkRvbGxhclNpZ24gPCB0b2tlbk51bVNpZ25cclxuXHRcdFx0XHQ/IHRva2VuRG9sbGFyU2lnblxyXG5cdFx0XHRcdDogdG9rZW5OdW1TaWduO1xyXG5cdFx0cmV0dXJuIGk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJdCByZXVzZXMgcmVwbGFjZVRva2Vuc0Zyb21MaXN0T2JqZWN0UHVibGljIGJ1dCBzZXQgYWxsIGtleXMgbG9iamVjdHRva2VucyBhcyBsb3dlcmNhc2VcclxuXHQgKiBAcGFyYW0gdG9rZW5OYW1lXHJcblx0ICogQHBhcmFtIGZvcm11bGFcclxuXHQgKiBAcGFyYW0gbE9iamVjdFRva2Vuc1xyXG5cdCAqL1xyXG5cdHJlcGxhY2VUb2tlbnNGcm9tTGlzdE9iamVjdFB1YmxpYyhcclxuXHRcdHRva2VuTmFtZTogc3RyaW5nLFxyXG5cdFx0Zm9ybXVsYTogc3RyaW5nLFxyXG5cdFx0bE9iamVjdFRva2VuczogYW55W11cclxuXHQpOiBzdHJpbmcge1xyXG5cdFx0bGV0IGxEYXRhT3JnOiBhbnlbXSA9IFtdO1xyXG5cdFx0aWYgKGxPYmplY3RUb2tlbnMpIHtcclxuXHRcdFx0Zm9yIChsZXQgZGF0YUZvcm0gaW4gbE9iamVjdFRva2Vucykge1xyXG5cdFx0XHRcdGxEYXRhT3JnW2RhdGFGb3JtLnRvTG93ZXJDYXNlKCldID0gbE9iamVjdFRva2Vuc1tkYXRhRm9ybV07XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiB0aGlzLnJlcGxhY2VUb2tlbnNGcm9tTGlzdE9iamVjdCh0b2tlbk5hbWUsIGZvcm11bGEsIGxEYXRhT3JnKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQHBhcmFtIHRva2VuTmFtZSB0b2tlbiBuYW1lXHJcblx0ICogQHBhcmFtIGZvcm11bGEgU3RyaW5nIHdpdGggdGhlIGZvcm11bGEgdG8gZXhlY3V0ZVxyXG5cdCAqIEBwYXJhbSBsT2JqZWN0VG9rZW5zIExpc3Qgb2YgdG9rZW5zIHdpdGggdGhlIHZhbHVlcyB0byByZXBsYWNlXHJcblx0ICovXHJcblx0cmVwbGFjZVRva2Vuc0Zyb21MaXN0T2JqZWN0KHRva2VuTmFtZTogc3RyaW5nLCBmb3JtdWxhOiBzdHJpbmcsIGxPYmplY3RUb2tlbnM6IGFueSk6IHN0cmluZyB7XHJcblx0XHRpZiAoIWZvcm11bGEgfHwgZm9ybXVsYS5sZW5ndGggPT0gMCkge1xyXG5cdFx0XHR0aHJvdyB7XHJcblx0XHRcdFx0bWVzc2FnZTogJ0xhIGZvcm11bGEgZGVsIHRva2VuICcgKyB0b2tlbk5hbWUgKyAnIGVzdGEgdmFjw61hJyxcclxuXHRcdFx0XHR0aXRsZTogJ0FsZXJ0YSEnLFxyXG5cdFx0XHRcdGVycm9yOlxyXG5cdFx0XHRcdFx0J0xhIGZvcm11bGEgZGVsIHRva2VuICcgKyB0b2tlbk5hbWUgKyAnIGVzdGEgdmFjw61hLiBbZm9ybXVsYVsnICsgZm9ybXVsYSArICddXSdcclxuXHRcdFx0fTtcclxuXHRcdH1cclxuXHRcdGxldCByZXBsYWNlZFRva2Vuczogc3RyaW5nID0gZm9ybXVsYS50b1N0cmluZygpO1xyXG5cdFx0aWYgKHJlcGxhY2VkVG9rZW5zLnN0YXJ0c1dpdGgoJ2ZpbGU6Ly8nKSkge1xyXG5cdFx0XHRyZXR1cm4gcmVwbGFjZWRUb2tlbnM7XHJcblx0XHR9XHJcblx0XHQvLyBGaW5kIHRoZSB0b2tlbnMgaW4gdGhlIGZvcm11bGFcclxuXHRcdGxldCB0b2tlbnNBcnJheTogYW55W10gPSB0aGlzLmdldExpc3RUb2tlbnNCeVN0cmluZyhyZXBsYWNlZFRva2Vucyk7XHJcblx0XHRpZiAodG9rZW5zQXJyYXkubGVuZ3RoID09IDApIHtcclxuXHRcdFx0cmV0dXJuIHJlcGxhY2VkVG9rZW5zO1xyXG5cdFx0fVxyXG5cdFx0Ly8gSWYgdGhlcmUgYW55IHRva2VuLCB0cnkgdG8gcmVwbGFjZVxyXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0b2tlbnNBcnJheS5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRsZXQgb2JqZWN0VG9rZW4gPVxyXG5cdFx0XHRcdGxPYmplY3RUb2tlbnNbdG9rZW5zQXJyYXlbaV0ua2V5XSAhPT0gdW5kZWZpbmVkXHJcblx0XHRcdFx0XHQ/IGxPYmplY3RUb2tlbnNbdG9rZW5zQXJyYXlbaV0ua2V5XVxyXG5cdFx0XHRcdFx0OiBudWxsO1xyXG5cdFx0XHRsZXQgY2xlYXJLZXk7XHJcblx0XHRcdGlmIChvYmplY3RUb2tlbiA9PSBudWxsKSB7XHJcblx0XHRcdFx0Y2xlYXJLZXkgPSB0b2tlbnNBcnJheVtpXS5rZXkucmVwbGFjZSgnJHsnLCAnJykucmVwbGFjZSgnfScsICcnKS50b0xvd2VyQ2FzZSgpO1xyXG5cdFx0XHRcdG9iamVjdFRva2VuID1cclxuXHRcdFx0XHRcdGxPYmplY3RUb2tlbnNbY2xlYXJLZXldICE9PSB1bmRlZmluZWQgPyBsT2JqZWN0VG9rZW5zW2NsZWFyS2V5XSA6IG51bGw7XHJcblxyXG5cdFx0XHRcdGlmIChvYmplY3RUb2tlbiA9PSBudWxsKSB7XHJcblx0XHRcdFx0XHRjbGVhcktleSA9IHRva2Vuc0FycmF5W2ldLmtleVxyXG5cdFx0XHRcdFx0XHQucmVwbGFjZSgneycsICcnKVxyXG5cdFx0XHRcdFx0XHQucmVwbGFjZSgnfScsICcnKVxyXG5cdFx0XHRcdFx0XHQuc3BsaXQoJ18nKVsxXVxyXG5cdFx0XHRcdFx0XHQudG9Mb3dlckNhc2UoKTtcclxuXHRcdFx0XHRcdG9iamVjdFRva2VuID1cclxuXHRcdFx0XHRcdFx0bE9iamVjdFRva2Vuc1tjbGVhcktleV0gIT09IHVuZGVmaW5lZCA/IGxPYmplY3RUb2tlbnNbY2xlYXJLZXldIDogbnVsbDtcclxuXHRcdFx0XHRcdGlmIChvYmplY3RUb2tlbiA9PT0gbnVsbCB8fCBvYmplY3RUb2tlbiA9PT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdFx0XHRcdGNvbnN0IGFycmF5S2V5ID0gdG9rZW5zQXJyYXlbaV0ua2V5XHJcblx0XHRcdFx0XHRcdFx0LnJlcGxhY2UoJ3snLCAnJylcclxuXHRcdFx0XHRcdFx0XHQucmVwbGFjZSgnfScsICcnKVxyXG5cdFx0XHRcdFx0XHRcdC5zcGxpdCgnXycpWzFdXHJcblx0XHRcdFx0XHRcdFx0LnNwbGl0KCcuJyk7XHJcblx0XHRcdFx0XHRcdGlmIChhcnJheUtleS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRcdFx0bGV0IHZhbHVlID0gbE9iamVjdFRva2VucztcclxuXHRcdFx0XHRcdFx0XHRmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlLZXkubGVuZ3RoOyBpbmRleCsrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRsZXQgZWxlbWVudCA9IGFycmF5S2V5W2luZGV4XTtcclxuXHRcdFx0XHRcdFx0XHRcdGlmIChpbmRleCA9PSAwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGVsZW1lbnQgPSBlbGVtZW50LnRvTG93ZXJDYXNlKCk7XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZSA9IHZhbHVlW2VsZW1lbnRdO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRvYmplY3RUb2tlbiA9IHZhbHVlO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdGlmIChvYmplY3RUb2tlbiA9PSBudWxsKSB7XHJcblx0XHRcdFx0Ly8gSWYgbm90IGZpbmQgdGhlIHRva2VuLCBieSBkZWZhdWx0IHB1dCBhbiBlbXB0eSBzdHJpbmdcclxuXHRcdFx0XHQvKmlmIChUb2tlblNlcnZpY2UuZXhjbHVkZWRUb2tlbi5pbmRleE9mKGNsZWFyS2V5KSA9PT0gLTEpIHtcclxuXHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoXHJcblx0XHRcdFx0XHRcdCdFbCB0b2tlbiAnICsgdG9rZW5zQXJyYXlbaV0udmFsdWUgKyAnIG5vIGZ1ZSBlbmNvbnRyYWRvLicsXHJcblx0XHRcdFx0XHRcdGxPYmplY3RUb2tlbnMsXHJcblx0XHRcdFx0XHRcdHRva2Vuc0FycmF5XHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdH0qL1xyXG5cdFx0XHRcdG9iamVjdFRva2VuID0gJyc7XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKG9iamVjdFRva2VuICE9IG51bGwpIHtcclxuXHRcdFx0XHRsZXQgdmFsdWU6IGFueSA9IE51bWJlcihvYmplY3RUb2tlbilcclxuXHRcdFx0XHRcdD8gb2JqZWN0VG9rZW5cclxuXHRcdFx0XHRcdDogQXJyYXkuaXNBcnJheShvYmplY3RUb2tlbilcclxuXHRcdFx0XHRcdD8gSlNPTi5zdHJpbmdpZnkob2JqZWN0VG9rZW4pXHJcblx0XHRcdFx0XHQ6IFwiJ1wiICsgb2JqZWN0VG9rZW4gKyBcIidcIjtcclxuXHRcdFx0XHRyZXBsYWNlZFRva2VucyA9IHRoaXMucmVwbGFjZVRva2VuKHJlcGxhY2VkVG9rZW5zLCB0b2tlbnNBcnJheVtpXS52YWx1ZSwgdmFsdWUpO1xyXG5cdFx0XHRcdC8vIH0gZWxzZSB7XHJcblx0XHRcdFx0Ly8gICBjb25zb2xlLmVycm9yKGxPYmplY3RUb2tlbnMsIHRva2Vuc0FycmF5KTtcclxuXHRcdFx0XHQvLyAgIHRocm93IHtcclxuXHRcdFx0XHQvLyAgICAgbWVzc2FnZTogXCJObyBzZSBlbmNvbnRyw7MgdmFsb3IgcGFyYSB1biB0b2tlblwiLFxyXG5cdFx0XHRcdC8vICAgICB0aXRsZTogXCJBbGVydGEhXCIsXHJcblx0XHRcdFx0Ly8gICAgIGVycm9yOiBcIkVsIHRva2VuIFwiICsgdG9rZW5zQXJyYXlbaV0udmFsdWUgKyBcIiBubyBmdWUgZW5jb250cmFkby5cIlxyXG5cdFx0XHRcdC8vICAgfTtcclxuXHRcdFx0XHQvL1xyXG5cdFx0XHRcdC8vIFNpIGVzIGxhIHVsdGltYSBpdGVyYWNpb24geSBsYSBmb3JtdWxhIHRpZW5lIFsgZXMgcG9ycXVlIHRpZW5lIHVuIGFycmF5IGVuIGVsIHZhbG9yIHF1ZSByZXNvbHZpbyBlbCB0b2tlblxyXG5cdFx0XHRcdGlmIChpID09IHRva2Vuc0FycmF5Lmxlbmd0aCAtIDEgJiYgcmVwbGFjZWRUb2tlbnMuaW5jbHVkZXMoJ1snKSkge1xyXG5cdFx0XHRcdFx0Ly8gU2UgcG9uZW4gdG9kb3MgbG9zIG9wZXJhbmRvcyBjb21vIGVsZW1lbnRvcyBlbiB1biBhcnJheSBbJ2V4cHJlc2lvbiBhJywgJyYmJywgJ0V4cHJlc2lvbiBCJ11cclxuXHRcdFx0XHRcdGxldCBmb3JtRXhwcmVzc2lvbnM6IHN0cmluZ1tdID0gcmVwbGFjZWRUb2tlbnMuc3BsaXQoLyAoXFx8XFx8fCYmKSAvKTtcclxuXHRcdFx0XHRcdGxldCBsQXV4Zm9ybUV4cHJlc3Npb246IHN0cmluZ1tdID0gW107XHJcblx0XHRcdFx0XHRmb3JtRXhwcmVzc2lvbnMuZm9yRWFjaCgoZXhwcmVzc2lvbjogc3RyaW5nKSA9PiB7XHJcblx0XHRcdFx0XHRcdGlmIChleHByZXNzaW9uLmNoYXJBdCgwKSA9PSAnWycpIHtcclxuXHRcdFx0XHRcdFx0XHRsZXQgaXNUYWdGb3VuZDogc3RyaW5nID0gJyc7XHJcblx0XHRcdFx0XHRcdFx0aXNUYWdGb3VuZCA9IHRoaXMuZmluZFRhZyhleHByZXNzaW9uKTtcclxuXHRcdFx0XHRcdFx0XHRsQXV4Zm9ybUV4cHJlc3Npb24ucHVzaChpc1RhZ0ZvdW5kKTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRsQXV4Zm9ybUV4cHJlc3Npb24ucHVzaChleHByZXNzaW9uKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRyZXBsYWNlZFRva2VucyA9IGxBdXhmb3JtRXhwcmVzc2lvbi5qb2luKCcgJyk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcmVwbGFjZWRUb2tlbnM7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBNRXRvZG8gcXVlIHRlbmllbmRvIHVuYSBleHByZXNpb24gZGUgbGEgZm9ybWEgWyd0YWcxJywgJ3RhZzInXT09dGFnM1xyXG5cdCAqIGV2YWx1YSBzaSB0YWczIGhhY2UgcGFydGUgZGVsIGFycmF5IHNpIHRpZW5lIGVsIG9wZXJhZG9yID09LlxyXG5cdCAqIFNpIHRpZW5lIGVsIG9wZXJhZG9yICE9IGV4YW1pbmEgcXVlIHRhZzMgbm8gaGFnYSBwYXJ0ZSBkZWwgYXJyYXkrXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gZXhwcmVzc2lvbiBPcGVyYW5kbyBxdWUgZXZhbHVhIHRhZy4gRXMgZGUgbGEgZm9ybWEgWyd0YWcxJywgJ3RhZzInXT09dGFnM1xyXG5cdCAqIEByZXR1cm5zIFJldG9ybmEgJ3RydWUnIG8gJ2ZhbHNlJyBlbiBzdHJpbmcgcXVlIGRlc3B1ZXMgc2VyYSBwYXNhZG8gYSB1biBldmFsKClcclxuXHQgKiBtYXMgYWRlbGFudGUgZW4gZWwgZmx1am9cclxuXHQgKi9cclxuXHRmaW5kVGFnKGV4cHJlc3Npb246IHN0cmluZyk6IHN0cmluZyB7XHJcblx0XHRsZXQgcmVnZXhPcGVyYXRvciA9IG5ldyBSZWdFeHAoJyg9PT18PT18IT09fCE9KScpO1xyXG5cdFx0Ly8gUmV0b3JuYSBlbCBvcGVyYWRvclxyXG5cdFx0bGV0IG9wZXJhdG9yOiBzdHJpbmdbXSA9IGV4cHJlc3Npb24ubWF0Y2gocmVnZXhPcGVyYXRvcik7XHJcblx0XHQvLyBTaSBubyBlbmN1ZW50cmEgdW4gb3BlcmFkb3Igc2VndW4gZWwgcGF0cm9uIHJldG9ybmEgJ2ZhbHNlJ1xyXG5cdFx0Ly8gcGFyYSBldml0YXIgcmVzdWx0YWRvcyBpbmVzcGVyYWRvc1xyXG5cdFx0aWYgKG9wZXJhdG9yID09IG51bGwpIHtcclxuXHRcdFx0Y29uc29sZS5lcnJvcignTm8gc2UgZW5jb250cm8gdW4gb3BlcmFkb3IgcGVybWl0aWRvIHBhcmEgbGEgZXhwcmVzaW9uJyk7XHJcblx0XHRcdHJldHVybiAnZmFsc2UnO1xyXG5cdFx0fVxyXG5cdFx0Ly8gU2VwYXJhIGxhIHNlbnRlbmNpYSBwb3IgZWwgb3BlcmFkb3JcclxuXHRcdC8vIExhIHByaW1lcmEgcGFydGUgZXMgZWwgdmFsb3IgcG9yIGVsIGN1YWwgc2UgcmVtcGxhemEgZWwgdG9rZW4gcXVlIGVzIHVuIGFycmF5IGVuIHN0cmluZyBcIlsnYScsICdiJ11cIlxyXG5cdFx0Ly8gRWwgc2VndW5kbyBlcyBlbCB2YWxvciBjb24gZWwgY3VhbCBzZSB2YSBhIGNvbXBhcmFyXHJcblx0XHRsZXQgdmFsdWVUb2tlbiwgdmFsdWVUb0NvbXBhcmU7XHJcblx0XHRbdmFsdWVUb2tlbiwgdmFsdWVUb0NvbXBhcmVdID0gZXhwcmVzc2lvbi5zcGxpdChvcGVyYXRvclswXSk7XHJcblx0XHQvLyBTZSBsaW1waWEgZWwgc3RyaW5nIGNvcnJlc3BvbmRpZW50ZSBhbCBhcnJheSBwYXJhIHF1ZSBsb3MgZWxlbWVudG9zIHF1ZWRlbiBzZXBhcmFkb3MgcG9yIFwiLFwiXHJcblx0XHR2YWx1ZVRva2VuID0gdmFsdWVUb2tlbi5yZXBsYWNlKC9bXmEtekEtWjAtOSAsXS9nLCAnJyk7XHJcblx0XHQvLyBTaSBubyBoYXkgdGFncyBhc29jaWFkb3MgYWwgcmVnaXN0cm8gc2UgZGV2dWVsdmUgJ2ZhbHNlJ1xyXG5cdFx0aWYgKCF2YWx1ZVRva2VuKSB7XHJcblx0XHRcdGNvbnNvbGUuZXJyb3IoJ05vIGhheSB0YWdzIGFzb2NpYWRvcyBhIGVzdGEgYXBsaWNhY2nDs24nKTtcclxuXHRcdFx0cmV0dXJuICdmYWxzZSc7XHJcblx0XHR9XHJcblx0XHQvLyBTZSBsaW1waWEgZWwgc3RyaW5nIGNvcnJlc3BvbmRpZW50ZSBhbCB2YWxvciBwb3IgY29tcGFyYXJcclxuXHRcdHZhbHVlVG9Db21wYXJlID0gdmFsdWVUb0NvbXBhcmUucmVwbGFjZSgvW15hLXpBLVowLTkgXS9nLCAnJyk7XHJcblx0XHQvLyBFbCBzdHJpbmcgY29ycmVzcG9uZGllbnRlIGFsIGFycmF5IHBhc2EgYSBzZXIgdGlwbyBhcnJheVxyXG5cdFx0dmFsdWVUb2tlbiA9IHZhbHVlVG9rZW4uc3BsaXQoJywnKTtcclxuXHJcblx0XHQvLyBTZSB0cmF0YSBkZSBjb25zdGF0YXIgc2kgZWwgdmFsb3IgYSBjb21wYXJhciBzZSBlbmN1ZXRyYSBvIG5vIGRlbnRyb1xyXG5cdFx0Ly8gU2kgZWwgb3BlcmFkb3IgcXVlIHNlIGVuY29udHJvID09IHJldHVybmEgdHJ1ZSBzaSBsbyBlbmN1ZW50cmFcclxuXHRcdGxldCBpc1RhZ0ZvdW5kOiBib29sZWFuID0gdHJ1ZTtcclxuXHRcdHN3aXRjaCAob3BlcmF0b3JbMF0pIHtcclxuXHRcdFx0Y2FzZSAnPT0nOlxyXG5cdFx0XHRcdGlzVGFnRm91bmQgPSB2YWx1ZVRva2VuLnNvbWUoKHRhZykgPT4gdGFnID09IHZhbHVlVG9Db21wYXJlKTtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSAnPT09JzpcclxuXHRcdFx0XHRpc1RhZ0ZvdW5kID0gdmFsdWVUb2tlbi5zb21lKCh0YWcpID0+IHRhZyA9PT0gdmFsdWVUb0NvbXBhcmUpO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlICchPT0nOlxyXG5cdFx0XHRcdGlzVGFnRm91bmQgPSB2YWx1ZVRva2VuLnNvbWUoKHRhZykgPT4gdGFnICE9PSB2YWx1ZVRvQ29tcGFyZSk7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgJyE9JzpcclxuXHRcdFx0XHRpc1RhZ0ZvdW5kID0gdmFsdWVUb2tlbi5zb21lKCh0YWcpID0+IHRhZyAhPSB2YWx1ZVRvQ29tcGFyZSk7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHR9XHJcblx0XHRleHByZXNzaW9uID0gaXNUYWdGb3VuZCA/ICd0cnVlJyA6ICdmYWxzZSc7XHJcblx0XHRyZXR1cm4gZXhwcmVzc2lvbjtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRyeSB0byBldmFsIHRoZSBmb3JtdWxhIGRlcGVuZCBvZiB0aGUgdHlwZSBvZiBmaWVsZHMuXHJcblx0ICogQHBhcmFtIGxTdGF0aWNUb2tlblxyXG5cdCAqIEBwYXJhbSBmb3JtdWxhTmFtZVxyXG5cdCAqIEBwYXJhbSBmb3JtdWxhXHJcblx0ICovXHJcblx0dmFsaWRhdGVGb3JtdWxhKGxTdGF0aWNUb2tlbjogYW55LCBmb3JtdWxhTmFtZTogc3RyaW5nLCBmb3JtdWxhOiBzdHJpbmcpOiBib29sZWFuIHtcclxuXHRcdGxldCBldmFsRm9ybXVsYTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdFx0Ly8gVG8gdmFsaWRhdGUgdGhlIGZvcm11bGEsIGZpcnN0IG9yZ2FuaXplIHRoZSBpbmZvIHRvIGtleSAtIHZhbHVlIGFycmF5XHJcblx0XHRsZXQgb2JqZWN0VG9rZW5zOiBhbnlbXSA9IFtdO1xyXG5cdFx0Zm9yIChsZXQgcGFuZWwgb2YgbFN0YXRpY1Rva2VuKSB7XHJcblx0XHRcdGZvciAobGV0IGdyb3VwVG9rZW4gb2YgcGFuZWwudmFsdWUpIHtcclxuXHRcdFx0XHRmb3IgKGxldCBzdGF0aWNUb2tlbiBvZiBncm91cFRva2VuLnZhbHVlKSB7XHJcblx0XHRcdFx0XHRmb3IgKGxldCBhcnJheVRva2VuSW5mbyBvZiBzdGF0aWNUb2tlbikge1xyXG5cdFx0XHRcdFx0XHRvYmplY3RUb2tlbnNbYXJyYXlUb2tlbkluZm8ua2V5XSA9IGFycmF5VG9rZW5JbmZvLm9iamVjdFxyXG5cdFx0XHRcdFx0XHRcdD8gYXJyYXlUb2tlbkluZm8ub2JqZWN0LnR5cGUgPT0gJ251bWJlcidcclxuXHRcdFx0XHRcdFx0XHRcdD8gJzAnXHJcblx0XHRcdFx0XHRcdFx0XHQ6ICcnXHJcblx0XHRcdFx0XHRcdFx0OiAnJztcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHRyeSB7XHJcblx0XHRcdGZvcm11bGEgPSB0aGlzLnJlcGxhY2VUb2tlbnNGcm9tTGlzdE9iamVjdChmb3JtdWxhTmFtZSwgZm9ybXVsYSwgb2JqZWN0VG9rZW5zKTtcclxuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XHJcblx0XHRcdC8vY29uc29sZS5lcnJvcihlcnJvcik7XHJcblx0XHRcdHRocm93IGVycm9yO1xyXG5cdFx0fVxyXG5cdFx0aWYgKGZvcm11bGEgIT09IG51bGwpIHtcclxuXHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRsZXQgcmVzdWx0ID0gZm9ybXVsYS5zdGFydHNXaXRoKCdmaWxlOi8vJykgPyBmb3JtdWxhIDogZXZhbChmb3JtdWxhKTtcclxuXHRcdFx0XHRldmFsRm9ybXVsYSA9IHRydWU7XHJcblx0XHRcdH0gY2F0Y2ggKGUpIHtcclxuXHRcdFx0XHQvL2NvbnNvbGUuZXJyb3IoXCJFcnJvciBldmFsdWF0aW5nIHRoZSBmb3JtdWxhXCIsIGUpO1xyXG5cdFx0XHRcdHRocm93IHtcclxuXHRcdFx0XHRcdG1lc3NhZ2U6ICdMYSBmb3JtdWxhIG5vIGZ1ZSBwb3NpYmxlIGV2YWx1YXInLFxyXG5cdFx0XHRcdFx0dGl0bGU6ICdBbGVydGEhJyxcclxuXHRcdFx0XHRcdGVycm9yOiBlXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGV2YWxGb3JtdWxhO1xyXG5cdH1cclxuXHJcblx0Z2V0Q29uZmlnQ2xvbmluZ1Rva2VuTWFwKG9sZFBQUDogbnVtYmVyLCBuZXdQUFA6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChcclxuXHRcdFx0dGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuY29uZmlndXJhdGlvbiArICd0b2tlbi9nZXRDb25maWdDbG9uaW5nVG9rZW5NYXAnLFxyXG5cdFx0XHR7XHJcblx0XHRcdFx0cGFyYW1zOiBuZXcgSHR0cFBhcmFtcygpXHJcblx0XHRcdFx0XHQuc2V0KCdvbGRQUFAnLCBvbGRQUFAudG9TdHJpbmcoKSlcclxuXHRcdFx0XHRcdC5zZXQoJ25ld1BQUCcsIG5ld1BQUC50b1N0cmluZygpKVxyXG5cdFx0XHR9XHJcblx0XHQpO1xyXG5cdH1cclxufVxyXG4iXX0=
1340
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXBsaS1jb21tb25zL3NyYy9saWIvc2VydmljZXMvdG9rZW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUErQixVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFN0YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7OztBQU1sRCxNQUFNLE9BQU8sWUFBWTtJQW9XeEIsWUFDZ0MsV0FBVyxFQUNsQyxVQUFzQixFQUN0QixXQUF3QixFQUN4QixZQUEwQjtRQUhILGdCQUFXLEdBQVgsV0FBVyxDQUFBO1FBQ2xDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQWM7SUFDaEMsQ0FBQztJQUVKLGlGQUFpRjtJQUNqRix1QkFBdUIsQ0FBQyxVQUFVO1FBQ2pDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDdEMsMEJBQTBCO1lBQzFCLElBQUksZ0JBQWdCLEdBQVUsSUFBSSxDQUFDO1lBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDdEQsSUFBSSxFQUFFLENBQUMsVUFBZSxFQUFFLEVBQUU7b0JBQ3pCLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7d0JBQzFCLEtBQUssTUFBTSxLQUFLLElBQUksVUFBVSxFQUFFOzRCQUMvQixJQUFJLFVBQVUs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QUFNOzJGQUVOLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCOzswQkFzV0UsTUFBTTsyQkFBQyxhQUFhOzBIQWhXSSxNQUFNO3NCQUEvQixNQUFNO3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXJyZW5jeVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIExPQ0FMRV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEYXRlVXRpbCwgSEVBREVSX0pTT04sIFBsaUNuZkd1YXJhbnRlZVRva2VuLCBUb2tlbiwgVXRpbFN0cmluZyB9IGZyb20gJ25nLXBsaS11dGlsJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBGb3JtaW9VdGlsIH0gZnJvbSAnLi4vdXRpbHMvZm9ybWlvLXV0aWwnO1xyXG5pbXBvcnQgeyBGb3JtU2VydmljZSB9IGZyb20gJy4vZm9ybS5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRva2VuU2VydmljZSB7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNJR05fTEVUVEVSX1RBR19JRDogc3RyaW5nID0gJ19zaWduLWxldHRlci10YWctaWQnO1xyXG5cclxuXHQvKiogKi9cclxuXHRASW5qZWN0KExPQ0FMRV9JRCkgcHVibGljIGxvY2FsZTogc3RyaW5nO1xyXG5cclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fTEFCRUxfRk9STTogc3RyaW5nID0gJ0ZybSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFRPS0VOX0xBQkVMX0JVREdFVDogc3RyaW5nID0gJ1ByZXN1cHVlc3RvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fTEFCRUxfQ0FMQ1VMQVRFRDogc3RyaW5nID0gJ0NhbGN1bGFkbyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFRPS0VOX0xBQkVMX1NOQVBTSE9UOiBzdHJpbmcgPSAnU25hcHNob3QnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBUT0tFTl9MQUJFTF9TVEFUSUM6IHN0cmluZyA9ICdFc3TDoXRpY28nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBUT0tFTl9MQUJFTF9ET0NVTUVOVE86IHN0cmluZyA9ICdEb2N1bWVudG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBUT0tFTl9MQUJFTF9ET0NVTUVOVE9fQU5BTElTSVNfQVVUT01BVElDTzogc3RyaW5nID0gJ0Fuw6FsaXNpcyBhdXRvbcOhdGljbyBkZSBkb2N1bWVudG9zJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fRE9DVU1FTlRPX0FOQUxZU0lTX1RZUEU6IHN0cmluZyA9ICdkb2N1bWVudF9hbmFseXNpcyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFRPS0VOX0xBQkVMX1RBU0s6IHN0cmluZyA9ICdUYXJlYSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFRPS0VOX0xBQkVMX1RBU0tMOiBzdHJpbmcgPSAndGFzayc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFRPS0VOX0xBQkVMX0dVQVJBTlRFRTogc3RyaW5nID0gJ0dhcmFudGlhJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfVE9UQUxfQU1PVU5UOiBzdHJpbmcgPSAndG90YWxBbW91bnQnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9BUFBMSUNBVElPTl9QUk9DRVNTX1RPVEFMX0FNT1VOVDogc3RyaW5nID0gJ2FwcGxpY2F0aW9uVG90YWwnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9BUFBMSUNBVElPTl9QUk9DRVNTX1RPVEFMX09XTl9GT1VORFM6IHN0cmluZyA9ICdhcHBsaWNhdGlvbk93bkZvdW5kcyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX0FQUExJQ0FUSU9OX1BST0NFU1NfVE9UQUxfRklOQU5DSU5HOiBzdHJpbmcgPSAnYXBwbGljYXRpb25GaW5hbmNpbmcnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9MRUdBTElaQVRJT05fUFJPQ0VTU19UT1RBTF9BTU9VTlQ6IHN0cmluZyA9ICdsZWdhbGl6YXRpb25Ub3RhbCc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX0xFR0FMSVpBVElPTl9QUk9DRVNTX1RPVEFMX09XTl9GT1VORFM6IHN0cmluZyA9XHJcblx0XHQnbGVnYWxpemF0aW9uT3duRm91bmRzJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfTEVHQUxJWkFUSU9OX1BST0NFU1NfVE9UQUxfRklOQU5DSU5HOiBzdHJpbmcgPSAnbGVnYWxpemF0aW9uRmluYW5jaW5nJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfSU5TVVJBTkNFX0FNT1VOVDogc3RyaW5nID0gJ2luc3VyYW5jZUFtb3VudCc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIExFR0FMSVpBVElPTl9PUl9BUFBMSUNBVElPTl9UT1RBTF9GSU5BTkNJTkc6IHN0cmluZyA9XHJcblx0XHQnbGVnbGl6YXRpb25PckFwcGxpY2F0aW9uVG90YWxGaW5hbmNpbmcnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9SRVNVTUVfQ0FURUdPUllfWUVBUjogc3RyaW5nID0gJ3Jlc3VtZUNhdGVnb3J5WWVhcic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX0ZFQ0hBX0ZJTkFOQ0lOR19TVEFSVDogc3RyaW5nID0gJ2ZlY2hhSW5pY2lvRmluYW5jaWFjaW9uJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfRkVDSEFfRklOQU5DSU5HX0VORDogc3RyaW5nID0gJ2ZlY2hhRmluRmluYW5jaWFjaW9uJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19EVVJBVElPTl9TVFVESUVTOiBzdHJpbmcgPSAnZHVyYWNpb25Fc3R1ZGlvcyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfRklOQU5DSU5HX0RVUkFUSU9OOiBzdHJpbmcgPSAnZHVyYWNpb25GaW5hbmNpYWNpb24nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9DT0RJR09fVkVSSUZJQ0FDSU9OOiBzdHJpbmcgPSAnY29kaWdvVmVyaWZpY2FjaW9uJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfQV9RVUlFTl9WQV9ESVJJR0lETzogc3RyaW5nID0gJ2FRdWllblZhRGlyaWdpZG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9GRUNIQV9BQ1RVQUw6IHN0cmluZyA9ICdmZWNoYUFjdHVhbCc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX1NUQVRVU19OQU1FOiBzdHJpbmcgPSAnc3RhdHVzTmFtZSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX1BBVFJPQ0lOQURPUjogc3RyaW5nID0gJ3BsaVBhdHJvY2luYWRvcic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX1BBVFJPQ0lOQURPUl9DT1JUTzogc3RyaW5nID0gJ3BsaVBhdHJvY2luYWRvckNvcnRvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfUFJPR1JBTUE6IHN0cmluZyA9ICdwbGlQcm9ncmFtYSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX1BST0dSQU1BX0NPUlRPOiBzdHJpbmcgPSAncGxpUHJvZ3JhbWFDb3J0byc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX1BST01PQ0lPTjogc3RyaW5nID0gJ3BsaVByb21vY2lvbic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX1BST01PQ0lPTl9DT1JUTzogc3RyaW5nID0gJ3BsaVByb21vY2lvbkNvcnRvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfQU5JT19QUk9NT0NJT046IHN0cmluZyA9ICdhbmlvUHJvbW9jaW9uJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfSVNPX01PTkVEQV9CQVNFOiBzdHJpbmcgPSAnaXNvTW9uZWRhQmFzZSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX1NBTFVET19DT01QTEVNRU5UQVJJTzogc3RyaW5nID0gJ3NhbHVkb0NvbXBsZW1lbnRhcmlvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfTlVNQkVSX0FQUExJQ0FUSU9OOiBzdHJpbmcgPSAnbnVtZXJvUmFkaWNhZG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9VU0VSX0lOSVRJQUxTOiBzdHJpbmcgPSAnaW5pY2lhbGVzVXN1YXJpbyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX0xFVFRFUl9TSUdOOiBzdHJpbmcgPSAnZmlybWFDYXJ0YSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09NTUlUVEVFX05BTUU6IHN0cmluZyA9ICdjb21pdGVOb21icmUnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPTU1JVFRFRV9TRUdNRU5UQVRJT046IHN0cmluZyA9ICdjb21pdGVTZWdtZW50YWNpb24nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPTU1JVFRFRV9BR0dSVVBBVElPTjogc3RyaW5nID0gJ2NvbWl0ZUFncnVwYWNpb24nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPTU1JVFRFRV9DVVRMSU5FX0RBVEU6IHN0cmluZyA9ICdjb21pdGVGZWNoYUxpbmVhJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT05GSVJNX0xFR0FMSVpBVElPTl9BUFBPSU5UTUVOVDogc3RyaW5nID0gJ2NvbmZpcm1hY2lvbkNpdGEnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPREVCVE9SX0RPQ1VNRU5UX05VTUJFUjogc3RyaW5nID0gJ251bWVyb0RvY3VtZW50b0NvZGV1ZG9yJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT0RFQlRPUl9ET0NVTUVOVF9UWVBFOiBzdHJpbmcgPSAndGlwb0RvY3VtZW50b0NvZGV1ZG9yJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT0RFQlRPUl9OQU1FOiBzdHJpbmcgPSAnbm9tYnJlc0NvZGV1ZG9yJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT0RFQlRPUl9MQVNUTkFNRTogc3RyaW5nID0gJ2FwZWxsaWRvc0NvZGV1ZG9yJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19UWVBFX0NPREVCVE9SOiBzdHJpbmcgPSAndGlwb1BlcnNvbmFDb2RldWRvcic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfUkVWSUVXRVI6IHN0cmluZyA9ICdyZXZpc29yQ29kZXVkb3Jlcyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfVE9UQUxfV0VJR0hURUQ6IHN0cmluZyA9ICdwb25kZXJhZG9Ub3RhbCc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09OU0VDVVRJVkVfR1VBUkFOVEVFOiBzdHJpbmcgPSAnY29uc2VjdXRpdm9HYXJhbnRpYXMnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0RBWTogc3RyaW5nID0gJ2RpYSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfTU9OVEg6IHN0cmluZyA9ICdtZXMnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX1lFQVI6IHN0cmluZyA9ICdhbm8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX1JFUFJFU0VOVEFUSVZFX05BTUU6IHN0cmluZyA9ICdub21icmVzUmVwcmVzZW50YW50ZSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfUkVQUkVTRU5UQVRJVkVfTEFTVE5BTUU6IHN0cmluZyA9ICdhcGVsbGlkb3NSZXByZXNlbnRhbnRlJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19SRVBSRVNFTlRBVElWRV9ET0NVTUVOVF9OVU1CRVI6IHN0cmluZyA9ICdjZWR1bGFSZXByZXNlbnRhbnRlJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DSVRZX1NJR05BVFVSRTogc3RyaW5nID0gJ2NpdWRhZEZpcm1hJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19VU0VSX1RZUEVfQ1JFRElUX1NUVURZOiBzdHJpbmcgPSAndGlwb1VzdWFyaW9Fc3R1ZGlvQ3JlZGl0byc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfVkVISUNMRVNfUVVBTlRJVFk6IHN0cmluZyA9ICdjYW50aWRhZFZlaGljdWxvc0NvZGV1ZG9yJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT0RFQlRPUl9BU1NFVFNfUVVBTlRJVFk6IHN0cmluZyA9ICdjYW50aWRhZEJpZW5lc0NvZGV1ZG9yJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19MSVNUX0NPREVCVE9SUzogc3RyaW5nID0gJ2xpc3RhQ29kZXVkb3Jlcyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTl9JTkdSRVNPX0NPREVVRE9SX0hBQkVBU19EQVRBOiBzdHJpbmcgPSAnaW5ncmVzb0NvZGV1ZG9ySGFiZWFzRGF0YSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTl9QREZfUkVTVU1FTl9DT0RFVURPUjogc3RyaW5nID0gJ3BkZlJlc3VtZW5Db2RldWRvcic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfUVVBTlRJVFlfVkVISUNMRV9CRU5FRklDSUFSWTogc3RyaW5nID0gJ2NhbnRpZGFkVmVoaWN1bG9zU2VsZWNjaW9uYWRvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19RVUFOVElUWV9BU1NFVFNfQkVORUZJQ0lBUlk6IHN0cmluZyA9ICdjYW50aWRhZEJpZW5lc1NlbGVjY2lvbmFkbyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQkVOX0NPRElHTzogc3RyaW5nID0gJ2JlbkNvZGlnbyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTl9DUkVESVRfUkVWSUVXRVJfT0JTRVJWQVRJT05TX0NPREVCVE9SOiBzdHJpbmcgPVxyXG5cdFx0J2NyZWRpdFJldmlld2VyT2JzZXJ2YXRpb25zQ29kZWJ0b3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5fQ1JFRElUX1JFVklFV0VSX09CU0VSVkFUSU9OUzogc3RyaW5nID0gJ2NyZWRpdFJldmlld2VyT2JzZXJ2YXRpb25zJztcclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOX1RBR19OQU1FOiBzdHJpbmcgPSAndGFnTmFtZSc7XHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTl9OQU1FX1JFVklFV0VSX1RBU0sgPSAnbmFtZVJldml3ZXJUYXNrJztcclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOX0xBU1RfTkFNRV9SRVZJRVdFUl9UQVNLID0gJ2xhc3ROYW1lUmV2aXdlclRhc2snO1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5fVEFTS19UT1RBTF9BU1NJR05FRF9UT19SRVZJRVdFUiA9ICd0YXNrVG90YWxBc3NpZ25lZFRvUmV2aWV3ZXInO1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TOiBhbnlbXSA9IFtcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfUEFUUk9DSU5BRE9SLFxyXG5cdFx0XHRsYWJlbDogJ1BhdHJvY2luYWRvcidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX1BST0dSQU1BLFxyXG5cdFx0XHRsYWJlbDogJ1Byb2dyYW1hJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfUFJPTU9DSU9OLFxyXG5cdFx0XHRsYWJlbDogJ1Byb21vY2nDs24nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9BTklPX1BST01PQ0lPTixcclxuXHRcdFx0bGFiZWw6ICdBw7FvIHByb21vY2nDs24nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9JU09fTU9ORURBX0JBU0UsXHJcblx0XHRcdGxhYmVsOiAnSVNPIE1vbmVkYSBiYXNlJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfU0FMVURPX0NPTVBMRU1FTlRBUklPLFxyXG5cdFx0XHRsYWJlbDogJ1NhbHVkbyBjb21wbGVtZW50YXJpbydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX0NPRElHT19WRVJJRklDQUNJT04sXHJcblx0XHRcdGxhYmVsOiAnQ8OzZGlnbyBkZSB2ZXJpZmljYWNpw7NuJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfQV9RVUlFTl9WQV9ESVJJR0lETyxcclxuXHRcdFx0bGFiZWw6ICdBIHF1aWVuIHZhIGRpcmlnaWRvJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfRkVDSEFfQUNUVUFMLFxyXG5cdFx0XHRsYWJlbDogJ0ZlY2hhIGFjdHVhbCdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX1NUQVRVU19OQU1FLFxyXG5cdFx0XHRsYWJlbDogJ0VzdGFkbyBhY3R1YWwnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9OVU1CRVJfQVBQTElDQVRJT04sXHJcblx0XHRcdGxhYmVsOiAnTsO6bWVybyByYWRpY2FkbydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX1VTRVJfSU5JVElBTFMsXHJcblx0XHRcdGxhYmVsOiAnSW5pY2lhbGVzIGRlIHVzdWFyaW8nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9MRVRURVJfU0lHTixcclxuXHRcdFx0bGFiZWw6ICdGaXJtYSBkZSBjYXJ0YXMnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPTU1JVFRFRV9OQU1FLFxyXG5cdFx0XHRsYWJlbDogJ05vbWJyZSBjb21pdMOpJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT01NSVRURUVfU0VHTUVOVEFUSU9OLFxyXG5cdFx0XHRsYWJlbDogJ1NlZ21lbnRhY2nDs24gY29taXTDqSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09NTUlUVEVFX0FHR1JVUEFUSU9OLFxyXG5cdFx0XHRsYWJlbDogJ0FncnVwYWNpw7NuIGNvbWl0w6knXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPTU1JVFRFRV9DVVRMSU5FX0RBVEUsXHJcblx0XHRcdGxhYmVsOiAnRmVjaGEgTMOtbmVhIGRlIGNvcnRlJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT05GSVJNX0xFR0FMSVpBVElPTl9BUFBPSU5UTUVOVCxcclxuXHRcdFx0bGFiZWw6ICdDb25maXJtYWNpw7NuIGRlIGNpdGEnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPREVCVE9SX0RPQ1VNRU5UX05VTUJFUixcclxuXHRcdFx0bGFiZWw6ICdOw7ptZXJvIGRlIGRvY3VtZW50byBkZSBjb2RldWRvcidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfRE9DVU1FTlRfVFlQRSxcclxuXHRcdFx0bGFiZWw6ICdUaXBvIGRlIGRvY3VtZW50byBkZSBjb2RldWRvcidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfTkFNRSxcclxuXHRcdFx0bGFiZWw6ICdOb21icmVzIGNvZGV1ZG9yJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT0RFQlRPUl9MQVNUTkFNRSxcclxuXHRcdFx0bGFiZWw6ICdBcGVsbGlkb3MgY29kZXVkb3InXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1RZUEVfQ09ERUJUT1IsXHJcblx0XHRcdGxhYmVsOiAnVGlwbyBkZSBwZXJzb25hIGNvZGV1ZG9yJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT0RFQlRPUl9WRUhJQ0xFU19RVUFOVElUWSxcclxuXHRcdFx0bGFiZWw6ICdDYW50aWRhZCB2ZWhpY3Vsb3MgY29kZXVkb3InXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPREVCVE9SX0FTU0VUU19RVUFOVElUWSxcclxuXHRcdFx0bGFiZWw6ICdDYW50aWRhZCBiaWVuZXMgY29kZXVkb3InXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPREVCVE9SX1JFVklFV0VSLFxyXG5cdFx0XHRsYWJlbDogJ1Jldmlzb3IgZGUgY29kZXVkb3JlcydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfVE9UQUxfV0VJR0hURUQsXHJcblx0XHRcdGxhYmVsOiAnUG9uZGVyYWRvIHRvdGFsJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT05TRUNVVElWRV9HVUFSQU5URUUsXHJcblx0XHRcdGxhYmVsOiAnQ29uc2VjdXRpdm8gZGUgZ2FyYW50aWFzJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19SRVBSRVNFTlRBVElWRV9OQU1FLFxyXG5cdFx0XHRsYWJlbDogJ05vbWJyZXMgcmVwcmVzZW50YW50ZSBsZWdhbCdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfUkVQUkVTRU5UQVRJVkVfTEFTVE5BTUUsXHJcblx0XHRcdGxhYmVsOiAnQXBlbGxpZG9zIHJlcHJlc2VudGFudGUgbGVnYWwnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1JFUFJFU0VOVEFUSVZFX0RPQ1VNRU5UX05VTUJFUixcclxuXHRcdFx0bGFiZWw6ICdDZWR1bGEgcmVwcmVzZW50YW50ZSBsZWdhbCdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfVVNFUl9UWVBFX0NSRURJVF9TVFVEWSxcclxuXHRcdFx0bGFiZWw6ICdUaXBvIHVzdWFyaW8gZXN0dWRpbyBjcsOpZGl0bydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfREFZLFxyXG5cdFx0XHRsYWJlbDogJ0RpYSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfTU9OVEgsXHJcblx0XHRcdGxhYmVsOiAnTWVzJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19ZRUFSLFxyXG5cdFx0XHRsYWJlbDogJ0HDsW8nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NJVFlfU0lHTkFUVVJFLFxyXG5cdFx0XHRsYWJlbDogJ0NpdWRhZCBkZSBsYSBmaXJtYSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfTElTVF9DT0RFQlRPUlMsXHJcblx0XHRcdGxhYmVsOiAnTGlzdGEgZGUgY29kZXVkb3JlcydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTl9JTkdSRVNPX0NPREVVRE9SX0hBQkVBU19EQVRBLFxyXG5cdFx0XHRsYWJlbDogJ0luZ3Jlc28gQ29kZXVkb3IgSGFiZWFzIERhdGEnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5fUERGX1JFU1VNRU5fQ09ERVVET1IsXHJcblx0XHRcdGxhYmVsOiAnUGRmIGNvZGV1ZG9yJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19RVUFOVElUWV9WRUhJQ0xFX0JFTkVGSUNJQVJZLFxyXG5cdFx0XHRsYWJlbDogJ0NhbnRpZGFkIGRlIHZlaMOtY3Vsb3MgZGVsIHNlbGVjY2lvbmFkbydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfUVVBTlRJVFlfQVNTRVRTX0JFTkVGSUNJQVJZLFxyXG5cdFx0XHRsYWJlbDogJ0NhbnRpZGFkIGJpZW5lcyBkZWwgc2VsZWNjaW9uYWRvJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19CRU5fQ09ESUdPLFxyXG5cdFx0XHRsYWJlbDogJ0PDs2RpZ28gYmVuZWZpY2lhcmlvJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOX0NSRURJVF9SRVZJRVdFUl9PQlNFUlZBVElPTlMsXHJcblx0XHRcdGxhYmVsOiAnT2JzZXJ2YWNpb25lcyByZXZpc29yIGZpbmFuY2llcm8gc2VsZWNjaW9uYWRvJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOX0NSRURJVF9SRVZJRVdFUl9PQlNFUlZBVElPTlNfQ09ERUJUT1IsXHJcblx0XHRcdGxhYmVsOiAnT2JzZXJ2YWNpb25lcyByZXZpc29yIGZpbmFuY2llcm8gY29kZXVkb3JlcydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTl9UQUdfTkFNRSxcclxuXHRcdFx0bGFiZWw6ICdOb21icmUgZGVsIHRhZydcclxuXHRcdH0sXHJcblx0XHR7IGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTl9OQU1FX1JFVklFV0VSX1RBU0ssIGxhYmVsOiAnTm9tYnJlIHJldmlzb3IgdGFyZWFzJyB9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5fTEFTVF9OQU1FX1JFVklFV0VSX1RBU0ssXHJcblx0XHRcdGxhYmVsOiAnQXBlbGxpZG8gcmV2aXNvciB0YXJlYXMnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5fVEFTS19UT1RBTF9BU1NJR05FRF9UT19SRVZJRVdFUixcclxuXHRcdFx0bGFiZWw6ICdUb3RhbCB0YXJlYXMgYXNpZ25hZGFzIGEgcmV2aXNvcidcclxuXHRcdH1cclxuXHRdO1xyXG5cclxuXHRzdGF0aWMgZXhjbHVkZWRUb2tlbiA9IFtcclxuXHRcdFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1VTRVJfVFlQRV9DUkVESVRfU1RVRFkudG9Mb3dlckNhc2UoKSxcclxuXHRcdFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPREVCVE9SX1ZFSElDTEVTX1FVQU5USVRZLnRvTG93ZXJDYXNlKCksXHJcblx0XHRUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT0RFQlRPUl9BU1NFVFNfUVVBTlRJVFkudG9Mb3dlckNhc2UoKVxyXG5cdF07XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0QEluamVjdCgnZW52aXJvbm1lbnQnKSBwcml2YXRlIGVudmlyb25tZW50LFxyXG5cdFx0cHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxyXG5cdFx0cHJpdmF0ZSBmb3JtU2VydmljZTogRm9ybVNlcnZpY2UsXHJcblx0XHRwcml2YXRlIGN1cnJlbmN5UGlwZTogQ3VycmVuY3lQaXBlXHJcblx0KSB7fVxyXG5cclxuXHQvKiogVGhpcyBwcm9taXNlIGFsbG93cyB0byBleGVjdXRlIGEgZnVuY3Rpb24gd2hlbiBjb25zdWx0aW5nIHRoZSBmb3JtIGZpZWxkcy4gKi9cclxuXHRnZXRGb3JtRmllbGRzQnlQcm9tQ29kZShwcm9tQ29kaWdvKTogUHJvbWlzZTxhbnlbXT4ge1xyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0Ly8gU2VhcmNoIHRoZSBkeW5hbWljIGZvcm1cclxuXHRcdFx0bGV0IGxGb3JtRmllbGRzVG9rZW46IGFueVtdID0gbnVsbDtcclxuXHRcdFx0dGhpcy5mb3JtU2VydmljZS5nZXRCeVByb21Db2RpZ28ocHJvbUNvZGlnbykuc3Vic2NyaWJlKHtcclxuXHRcdFx0XHRuZXh0OiAoYXJyYXlGb3JtczogYW55KSA9PiB7XHJcblx0XHRcdFx0XHRpZiAoYXJyYXlGb3Jtcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRcdGZvciAoY29uc3QgZm9ybXMgb2YgYXJyYXlGb3Jtcykge1xyXG5cdFx0XHRcdFx0XHRcdGxldCBjb21wb25lbnRzID0gW107XHJcblxyXG5cdFx0XHRcdFx0XHRcdGNvbXBvbmVudHMucHVzaCguLi5Gb3JtaW9VdGlsLmdldENvbXBvbmVudHMoZm9ybXMuY29tcG9uZW50cykpO1xyXG5cclxuXHRcdFx0XHRcdFx0XHRpZiAoZm9ybXMuY29tcG9uZW50cyAmJiBmb3Jtcy5jb21wb25lbnRzLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgY29tcG9uZW50cyBvZiBmb3Jtcy5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChjb21wb25lbnRzLmNvbXBvbmVudHMgJiYgY29tcG9uZW50cy5jb21wb25lbnRzLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiBjb21wb25lbnRzLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChjb21wb25lbnQuY29sdW1ucyAmJiBjb21wb25lbnQuY29sdW1ucy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgY0NvbXBvbmVudHMgb2YgY29tcG9uZW50LmNvbHVtbnMpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjQ29tcG9uZW50cy5jb21wb25lbnRzICYmXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjQ29tcG9uZW50cy5jb21wb25lbnRzLmxlbmd0aCA+IDBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgaXRlcmF0b3Igb2YgY0NvbXBvbmVudHMuY29tcG9uZW50cykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoaXRlcmF0b3IudHlwZSA9PT0gJ2FkZHJlc3MnKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVsZXRlIGl0ZXJhdG9yLmNvbXBvbmVudHM7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRsZXQgZm9ybTogYW55ID0gYXJyYXlGb3JtcztcclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0IWZvcm0gfHxcclxuXHRcdFx0XHRcdFx0IWZvcm1bMF0gfHxcclxuXHRcdFx0XHRcdFx0IWZvcm1bMF0ucHJvbUNvZGlnbyB8fFxyXG5cdFx0XHRcdFx0XHRmb3JtWzBdLnByb21Db2RpZ28gIT0gcHJvbUNvZGlnb1xyXG5cdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdC8vIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnNDA0J10pO1xyXG5cdFx0XHRcdFx0XHRyZXNvbHZlKGxGb3JtRmllbGRzVG9rZW4pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbiA9IFtdO1xyXG5cdFx0XHRcdFx0Zm9yIChsZXQgZm9ybUNvbXAgb2YgZm9ybSkge1xyXG5cdFx0XHRcdFx0XHRsZXQgbmV3Q29tcG9uZW50czogYW55O1xyXG5cdFx0XHRcdFx0XHRsZXQgY29tcG9uZW50czogYW55W10gPSBbXTtcclxuXHRcdFx0XHRcdFx0aWYgKGZvcm1Db21wLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29tcG9uZW50cztcclxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChmb3JtQ29tcC5jb2x1bW5zKSB7XHJcblx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbHVtbnM7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0aWYgKG5ld0NvbXBvbmVudHMgJiYgVXRpbFN0cmluZy5pc1ZhbGlkKGZvcm1Db21wLnRpdGxlKSkge1xyXG5cdFx0XHRcdFx0XHRcdGxGb3JtRmllbGRzVG9rZW4ucHVzaCh7XHJcblx0XHRcdFx0XHRcdFx0XHR0aXRsZToge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRrZXk6IFRva2VuU2VydmljZS5nZXRLZXlGb3JtdWxhcmlvKGZvcm1Db21wLnRpdGxlKSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZvcm1Db21wLnRpdGxlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRvYmplY3Q6IGZvcm1Db21wXHJcblx0XHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IFtdXHJcblx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbltsRm9ybUZpZWxkc1Rva2VuLmxlbmd0aCAtIDFdLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZ2V0Q29tcG9uZW5ldEZvcm0oXHJcblx0XHRcdFx0XHRcdFx0XHRcdGNvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG5ld0NvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG51bGwsXHJcblx0XHRcdFx0XHRcdFx0XHRcdGZhbHNlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRudWxsXHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRyZXNvbHZlKGxGb3JtRmllbGRzVG9rZW4pO1xyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0ZXJyb3I6IChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdFx0cmVqZWN0KGVycm9yKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRnZXRGb3JtRmllbGRzQnlGb3JtSWQoZm9ybUlkOiBzdHJpbmcpOiBQcm9taXNlPGFueVtdPiB7XHJcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHQvLyBTZWFyY2ggdGhlIGR5bmFtaWMgZm9ybVxyXG5cdFx0XHRsZXQgbEZvcm1GaWVsZHNUb2tlbjogYW55W10gPSBudWxsO1xyXG5cdFx0XHR0aGlzLmZvcm1TZXJ2aWNlLmdldEJ5SWQoZm9ybUlkKS5zdWJzY3JpYmUoXHJcblx0XHRcdFx0KHJlc3VsdDogYW55KSA9PiB7XHJcblx0XHRcdFx0XHRsZXQgZm9ybTogYW55ID0gcmVzdWx0O1xyXG5cdFx0XHRcdFx0aWYgKCFmb3JtIHx8ICFmb3JtWzBdKSB7XHJcblx0XHRcdFx0XHRcdHJlc29sdmUobEZvcm1GaWVsZHNUb2tlbik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRsRm9ybUZpZWxkc1Rva2VuID0gW107XHJcblx0XHRcdFx0XHRmb3IgKGxldCBmb3JtQ29tcCBvZiBmb3JtKSB7XHJcblx0XHRcdFx0XHRcdGxldCBuZXdDb21wb25lbnRzOiBhbnk7XHJcblx0XHRcdFx0XHRcdGxldCBjb21wb25lbnRzOiBhbnlbXSA9IFtdO1xyXG5cdFx0XHRcdFx0XHRpZiAoZm9ybUNvbXAuY29tcG9uZW50cykge1xyXG5cdFx0XHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb21wb25lbnRzO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGZvcm1Db21wLmNvbHVtbnMpIHtcclxuXHRcdFx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29sdW1ucztcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRpZiAobmV3Q29tcG9uZW50cyAmJiBVdGlsU3RyaW5nLmlzVmFsaWQoZm9ybUNvbXAudGl0bGUpKSB7XHJcblx0XHRcdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbi5wdXNoKHtcclxuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLmdldEtleUZvcm11bGFyaW8oZm9ybUNvbXAudGl0bGUpLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogZm9ybUNvbXAudGl0bGUsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG9iamVjdDogZm9ybUNvbXBcclxuXHRcdFx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogW11cclxuXHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0XHRsRm9ybUZpZWxkc1Rva2VuW2xGb3JtRmllbGRzVG9rZW4ubGVuZ3RoIC0gMV0udmFsdWUgPVxyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5nZXRDb21wb25lbmV0Rm9ybShcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29tcG9uZW50cyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0bnVsbCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZmFsc2UsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG51bGxcclxuXHRcdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdHJlc29sdmUobEZvcm1GaWVsZHNUb2tlbik7XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHQoZXJyb3IpID0+IHtcclxuXHRcdFx0XHRcdHJlamVjdChlcnJvcik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKiogVGhpcyBwcm9taXNlIGFsbG93cyB0byBleGVjdXRlIGEgZnVuY3Rpb24gd2hlbiBjb25zdWx0aW5nIHRoZSBmb3JtIGZpZWxkcy4gKi9cclxuXHRnZXRGb3JtUGFuZWxzQnlQcm9tQ29kZShwcm9tQ29kaWdvKTogUHJvbWlzZTxhbnlbXT4ge1xyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0Ly8gU2VhcmNoIHRoZSBkeW5hbWljIGZvcm1cclxuXHRcdFx0bGV0IGxGb3JtUGFubmVsc1Rva2VuOiBhbnlbXSA9IG51bGw7XHJcblx0XHRcdHRoaXMuZm9ybVNlcnZpY2UuZ2V0QnlQcm9tQ29kaWdvKHByb21Db2RpZ28pLnN1YnNjcmliZShcclxuXHRcdFx0XHQocmVzdWx0OiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdGxldCBmb3JtOiBhbnkgPSByZXN1bHQ7XHJcblx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdCFmb3JtIHx8XHJcblx0XHRcdFx0XHRcdCFmb3JtWzBdIHx8XHJcblx0XHRcdFx0XHRcdCFmb3JtWzBdLnByb21Db2RpZ28gfHxcclxuXHRcdFx0XHRcdFx0Zm9ybVswXS5wcm9tQ29kaWdvICE9IHByb21Db2RpZ29cclxuXHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHQvLyB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJzQwNCddKTtcclxuXHRcdFx0XHRcdFx0cmVzb2x2ZShsRm9ybVBhbm5lbHNUb2tlbik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRsRm9ybVBhbm5lbHNUb2tlbiA9IFtdO1xyXG5cdFx0XHRcdFx0Zm9yIChsZXQgZm9ybUNvbXAgb2YgZm9ybSkge1xyXG5cdFx0XHRcdFx0XHRsZXQgbmV3Q29tcG9uZW50czogYW55O1xyXG5cdFx0XHRcdFx0XHRsZXQgY29tcG9uZW50czogYW55W10gPSBbXTtcclxuXHRcdFx0XHRcdFx0aWYgKGZvcm1Db21wLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29tcG9uZW50cztcclxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChmb3JtQ29tcC5jb2x1bW5zKSB7XHJcblx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbHVtbnM7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0aWYgKG5ld0NvbXBvbmVudHMgJiYgVXRpbFN0cmluZy5pc1ZhbGlkKGZvcm1Db21wLnRpdGxlKSkge1xyXG5cdFx0XHRcdFx0XHRcdGxGb3JtUGFubmVsc1Rva2VuLnB1c2goe1xyXG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuZ2V0S2V5Rm9ybXVsYXJpbyhmb3JtQ29tcC50aXRsZSksXHJcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBmb3JtQ29tcC50aXRsZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0b2JqZWN0OiBmb3JtQ29tcFxyXG5cdFx0XHRcdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBbXVxyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdGxGb3JtUGFubmVsc1Rva2VuW2xGb3JtUGFubmVsc1Rva2VuLmxlbmd0aCAtIDFdLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZ2V0UGFuZWxDb21wb25lbmV0KGNvbXBvbmVudHMsIG5ld0NvbXBvbmVudHMsIG51bGwpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRyZXNvbHZlKGxGb3JtUGFubmVsc1Rva2VuKTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdFx0cmVqZWN0KGVycm9yKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdCk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVjdXJzaXZlIG1ldGhvZCB0byBnZXQgYWxsIHRoZSBpbmZvcm1hdGlvbiBvZiB0aGUgZWRpdEdyaWQgZHluYW1pYyBmb3JtXHJcblx0ICogQHBhcmFtIGNvbXBvbmVudHNcclxuXHQgKiBAcGFyYW0gZm9ybVxyXG5cdCAqL1xyXG5cdGdldFBhbmVsQ29tcG9uZW5ldChjb21wb25lbnRzOiBhbnlbXSwgZm9ybTogYW55LCBwYW5lbE5hbWU6IHN0cmluZyk6IGFueVtdIHtcclxuXHRcdGZvciAobGV0IGZvcm1Db21wIG9mIGZvcm0pIHtcclxuXHRcdFx0aWYgKGZvcm1Db21wLnR5cGUgPT09ICdwYW5lbCcpIHtcclxuXHRcdFx0XHRjb21wb25lbnRzLnB1c2goZm9ybUNvbXApO1xyXG5cdFx0XHR9IGVsc2UgaWYgKGZvcm1Db21wLmNvbXBvbmVudHMgfHwgZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdGxldCBuZXdDb21wb25lbnRzOiBhbnk7XHJcblx0XHRcdFx0aWYgKGZvcm1Db21wLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb21wb25lbnRzO1xyXG5cdFx0XHRcdH0gZWxzZSBpZiAoZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbHVtbnM7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGNvbXBvbmVudHMgPSB0aGlzLmdldFBhbmVsQ29tcG9uZW5ldChjb21wb25lbnRzLCBuZXdDb21wb25lbnRzLCBwYW5lbE5hbWUpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gY29tcG9uZW50cztcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVjdXJzaXZlIG1ldGhvZCB0byBnZXQgYWxsIHRoZSBpbmZvcm1hdGlvbiBvZiB0aGUgY29tcG9uZW50cyBhIGNvbHVtbnMgb2YgdGhlIGR5bmFtaWMgZm9ybVxyXG5cdCAqIEBwYXJhbSBjb21wb25lbnRzXHJcblx0ICogQHBhcmFtIGZvcm1cclxuXHQgKi9cclxuXHRnZXRDb21wb25lbmV0Rm9ybShcclxuXHRcdGNvbXBvbmVudHM6IGFueVtdLFxyXG5cdFx0Zm9ybTogYW55LFxyXG5cdFx0cGFuZWxOYW1lOiBzdHJpbmcsXHJcblx0XHRlZGl0Z3JpZDogYm9vbGVhbixcclxuXHRcdGVkaXRHcmlkS2V5OiBzdHJpbmdcclxuXHQpOiBhbnlbXSB7XHJcblx0XHRmb3IgKGxldCBmb3JtQ29tcCBvZiBmb3JtKSB7XHJcblx0XHRcdC8vTU8tICBtYW50aXMgODc0MyBmaXggYWRkcmVzcyB0b2tlblxyXG5cdFx0XHRpZiAoKGZvcm1Db21wLmNvbXBvbmVudHMgfHwgZm9ybUNvbXAuY29sdW1ucykgJiYgZm9ybUNvbXAudHlwZSAhPT0gJ2FkZHJlc3MnKSB7XHJcblx0XHRcdFx0bGV0IG5ld0NvbXBvbmVudHM6IGFueTtcclxuXHRcdFx0XHRpZiAoZm9ybUNvbXAuY29tcG9uZW50cykge1xyXG5cdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbXBvbmVudHM7XHJcblx0XHRcdFx0XHRpZiAoZm9ybUNvbXAudHlwZSA9PT0gJ2VkaXRncmlkJykge1xyXG5cdFx0XHRcdFx0XHRlZGl0Z3JpZCA9IHRydWU7XHJcblx0XHRcdFx0XHRcdGVkaXRHcmlkS2V5ID0gZm9ybUNvbXAua2V5O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gZWxzZSBpZiAoZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbHVtbnM7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChmb3JtQ29tcC50eXBlICYmIGZvcm1Db21wLnR5cGUgPT09ICdwYW5lbCcpIHtcclxuXHRcdFx0XHRcdHBhbmVsTmFtZSA9IGZvcm1Db21wLnRpdGxlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRjb21wb25lbnRzID0gdGhpcy5nZXRDb21wb25lbmV0Rm9ybShcclxuXHRcdFx0XHRcdGNvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRuZXdDb21wb25lbnRzLFxyXG5cdFx0XHRcdFx0cGFuZWxOYW1lLFxyXG5cdFx0XHRcdFx0ZWRpdGdyaWQsXHJcblx0XHRcdFx0XHRlZGl0R3JpZEtleVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0Zm9ybUNvbXAucGFuZWxOYW1lID0gcGFuZWxOYW1lO1xyXG5cdFx0XHRcdGZvcm1Db21wLmVkaXRncmlkID0gZWRpdGdyaWQ7XHJcblx0XHRcdFx0Zm9ybUNvbXAuZWRpdEdyaWRLZXkgPSBlZGl0R3JpZEtleTtcclxuXHRcdFx0XHRjb21wb25lbnRzLnB1c2goZm9ybUNvbXApO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gY29tcG9uZW50cztcclxuXHR9XHJcblxyXG5cdC8qKiBUaGlzIHByb21pc2UgYWxsb3dzIHRvIGV4ZWN1dGUgYSBmdW5jdGlvbiB3aGVuIGNvbnN1bHRpbmcgdGhlIGZvcm0gZmllbGRzLiAqL1xyXG5cdGdldEZvcm1FZGl0R3JpZEZpZWxkc0J5UHJvbUNvZGUocHJvbUNvZGlnbyk6IFByb21pc2U8YW55W10+IHtcclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdC8vIFNlYXJjaCB0aGUgZHluYW1pYyBmb3JtXHJcblx0XHRcdGxldCBsRm9ybUZpZWxkc1Rva2VuOiBhbnlbXSA9IG51bGw7XHJcblx0XHRcdHRoaXMuZm9ybVNlcnZpY2UuZ2V0QnlQcm9tQ29kaWdvKHByb21Db2RpZ28pLnN1YnNjcmliZShcclxuXHRcdFx0XHQocmVzdWx0OiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdGxldCBmb3JtOiBhbnkgPSByZXN1bHQ7XHJcblx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdCFmb3JtIHx8XHJcblx0XHRcdFx0XHRcdCFmb3JtWzBdIHx8XHJcblx0XHRcdFx0XHRcdCFmb3JtWzBdLnByb21Db2RpZ28gfHxcclxuXHRcdFx0XHRcdFx0Zm9ybVswXS5wcm9tQ29kaWdvICE9IHByb21Db2RpZ29cclxuXHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHQvLyB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJzQwNCddKTtcclxuXHRcdFx0XHRcdFx0cmVzb2x2ZShsRm9ybUZpZWxkc1Rva2VuKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGxGb3JtRmllbGRzVG9rZW4gPSBbXTtcclxuXHRcdFx0XHRcdGZvciAobGV0IGZvcm1Db21wIG9mIGZvcm0pIHtcclxuXHRcdFx0XHRcdFx0bGV0IG5ld0NvbXBvbmVudHM6IGFueTtcclxuXHRcdFx0XHRcdFx0bGV0IGNvbXBvbmVudHM6IGFueVtdID0gW107XHJcblx0XHRcdFx0XHRcdGlmIChmb3JtQ29tcC5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbXBvbmVudHM7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb2x1bW5zO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdGlmIChuZXdDb21wb25lbnRzICYmIFV0aWxTdHJpbmcuaXNWYWxpZChmb3JtQ29tcC50aXRsZSkpIHtcclxuXHRcdFx0XHRcdFx0XHRsRm9ybUZpZWxkc1Rva2VuLnB1c2goe1xyXG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuZ2V0S2V5Rm9ybXVsYXJpbyhmb3JtQ29tcC50aXRsZSksXHJcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBmb3JtQ29tcC50aXRsZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0b2JqZWN0OiBmb3JtQ29tcFxyXG5cdFx0XHRcdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBbXVxyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdGxGb3JtRmllbGRzVG9rZW5bbEZvcm1GaWVsZHNUb2tlbi5sZW5ndGggLSAxXS52YWx1ZSA9XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmdldEVkaXRHcmlkQ29tcG9uZW5ldChjb21wb25lbnRzLCBuZXdDb21wb25lbnRzLCBudWxsKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0cmVzb2x2ZShsRm9ybUZpZWxkc1Rva2VuKTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdFx0cmVqZWN0KGVycm9yKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdCk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVjdXJzaXZlIG1ldGhvZCB0byBnZXQgYWxsIHRoZSBpbmZvcm1hdGlvbiBvZiB0aGUgZWRpdEdyaWQgZHluYW1pYyBmb3JtXHJcblx0ICogQHBhcmFtIGNvbXBvbmVudHNcclxuXHQgKiBAcGFyYW0gZm9ybVxyXG5cdCAqL1xyXG5cdGdldEVkaXRHcmlkQ29tcG9uZW5ldChjb21wb25lbnRzOiBhbnlbXSwgZm9ybTogYW55LCBwYW5lbE5hbWU6IHN0cmluZyk6IGFueVtdIHtcclxuXHRcdGZvciAobGV0IGZvcm1Db21wIG9mIGZvcm0pIHtcclxuXHRcdFx0aWYgKGZvcm1Db21wLnR5cGUgPT09ICdlZGl0Z3JpZCcpIHtcclxuXHRcdFx0XHRmb3JtQ29tcC5wYW5lbE5hbWUgPSBwYW5lbE5hbWU7XHJcblx0XHRcdFx0Y29tcG9uZW50cy5wdXNoKGZvcm1Db21wKTtcclxuXHRcdFx0fSBlbHNlIGlmIChmb3JtQ29tcC5jb21wb25lbnRzIHx8IGZvcm1Db21wLmNvbHVtbnMpIHtcclxuXHRcdFx0XHRsZXQgbmV3Q29tcG9uZW50czogYW55O1xyXG5cdFx0XHRcdGlmIChmb3JtQ29tcC5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29tcG9uZW50cztcclxuXHRcdFx0XHR9IGVsc2UgaWYgKGZvcm1Db21wLmNvbHVtbnMpIHtcclxuXHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb2x1bW5zO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZiAoZm9ybUNvbXAudHlwZSAmJiBmb3JtQ29tcC50eXBlID09PSAncGFuZWwnKSB7XHJcblx0XHRcdFx0XHRwYW5lbE5hbWUgPSBmb3JtQ29tcC50aXRsZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Y29tcG9uZW50cyA9IHRoaXMuZ2V0RWRpdEdyaWRDb21wb25lbmV0KGNvbXBvbmVudHMsIG5ld0NvbXBvbmVudHMsIHBhbmVsTmFtZSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiBjb21wb25lbnRzO1xyXG5cdH1cclxuXHJcblx0LyoqIEl0IHJldHVybnMgdGhlIHRva2VucyBieSBwcm9tQ29kaWdvICovXHJcblx0Z2V0TGlzdEJ5UHJvbUNvZGlnbyhwcm9tQ29kZTogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KFxyXG5cdFx0XHR0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5jb25maWd1cmF0aW9uICsgJ3Rva2VuL2dldEJ5UHJvbUNvZGlnbycsXHJcblx0XHRcdHsgcGFyYW1zOiBuZXcgSHR0cFBhcmFtcygpLnNldCgncHJvbUNvZGlnbycsIHByb21Db2RlLnRvU3RyaW5nKCkpIH1cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgcmV0dXJucyB0aGUgdG9rZW4gYnkgaWQgKi9cclxuXHRnZXRCeUlkKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQodGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuY29uZmlndXJhdGlvbiArICd0b2tlbi9nZXRCeUlkJywge1xyXG5cdFx0XHRwYXJhbXM6IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdpZCcsIGlkLnRvU3RyaW5nKCkpXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKiBJdCBkZWxldGVzIGEgZm9ybSBieSBpZCAqL1xyXG5cdGRlbGV0ZShpZCk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LmRlbGV0ZShcclxuXHRcdFx0dGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuY29uZmlndXJhdGlvbiArICd0b2tlbi9kZWxldGUnLFxyXG5cdFx0XHR7IHBhcmFtczogbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ2lkJywgaWQpIH1cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgc2F2ZXMgdGhlIHRva2VuICovXHJcblx0c2F2ZSh0b2tlbjogVG9rZW4pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KFxyXG5cdFx0XHR0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5jb25maWd1cmF0aW9uICsgJ3Rva2VuL3NhdmUnLFxyXG5cdFx0XHR0b2tlbixcclxuXHRcdFx0SEVBREVSX0pTT05cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0S2V5Rm9ybXVsYXJpbyhmb3JtVGl0bGU6IHN0cmluZyk6IHN0cmluZyB7XHJcblx0XHRpZiAoVXRpbFN0cmluZy5pc1ZhbGlkKGZvcm1UaXRsZSkpIHtcclxuXHRcdFx0cmV0dXJuIChcclxuXHRcdFx0XHRVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX0ZPUk0pICtcclxuXHRcdFx0XHRVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoZm9ybVRpdGxlKS5yZXBsYWNlKC9fL2csICctJylcclxuXHRcdFx0KTtcclxuXHRcdH1cclxuXHRcdHJldHVybiAnJztcclxuXHR9XHJcblxyXG5cdC8qKiBJdCByZXR1cm5zIHRoZSB1bmlxdWUgdmVyaWZpY2F0aW9uIGNvZGUgKi9cclxuXHRnZXRVbmlxdWVWZXJpZmljYXRpb25Db2RlKGxvZ2luOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmRvY3VtZW50c1JlcG9zaXRvcnkgK1xyXG5cdFx0XHRcdCdkb2N1bWVudG8vY29uc3VsdGFyQ29kaWdvVW5pY28vJyArXHJcblx0XHRcdFx0bG9naW4gK1xyXG5cdFx0XHRcdCcvJyArXHJcblx0XHRcdFx0dG9rZW4sXHJcblx0XHRcdHsgcGFyYW1zOiBuZXcgSHR0cFBhcmFtcygpIH1cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgc2VuZCB0aGUgaW5mb3JtYXRpb24gdG8gY29weSB0aGUgRG9jdW1lbnQgdmlld2VyICovXHJcblx0Y29weURvY3VtZW50SW5mb3JtYXRpb25WaWV3ZXIoXHJcblx0XHRsb2dpbjogc3RyaW5nLFxyXG5cdFx0dG9rZW46IHN0cmluZyxcclxuXHRcdHVuaXF1ZUNvZGU6IHN0cmluZyxcclxuXHRcdGRvY3VtZW50VVJMOiBzdHJpbmcsXHJcblx0XHRkb2N1bWVudE5hbWU6IHN0cmluZ1xyXG5cdCk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRsZXQgaW5mb0RvY3VtZW50byA9IHtcclxuXHRcdFx0Y29kaWdvVW5pY286IHVuaXF1ZUNvZGUsXHJcblx0XHRcdHJ1dGFEb2N1bWVudG86IGRvY3VtZW50VVJMLFxyXG5cdFx0XHRkb2N1bWVudE5hbWU6IGRvY3VtZW50TmFtZVxyXG5cdFx0fTtcclxuXHRcdHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdChcclxuXHRcdFx0dGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuZG9jdW1lbnRzUmVwb3NpdG9yeSArXHJcblx0XHRcdFx0J2RvY3VtZW50by9hZGljaW9uYXJEb2N1bWVudG8vJyArXHJcblx0XHRcdFx0bG9naW4gK1xyXG5cdFx0XHRcdCcvJyArXHJcblx0XHRcdFx0dG9rZW4sXHJcblx0XHRcdGluZm9Eb2N1bWVudG8sXHJcblx0XHRcdEhFQURFUl9KU09OXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGdldEtleUJ1ZGdldCgpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfQlVER0VUKTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRLZXlEb2N1bWVudCgpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfRE9DVU1FTlRPKTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRLZXlEb2N1bWVudEFuYWx5c2lzKCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gVXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9ET0NVTUVOVE9fQU5BTFlTSVNfVFlQRSk7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0S2V5VGFzaygpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfVEFTS0wpO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGdldEtleVN0YXRpYygpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfU1RBVElDKTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRLZXlDYWxjdWxhdGVkKHRva2VuOiBUb2tlbik6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gKFxyXG5cdFx0XHRVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX0NBTENVTEFURUQpICtcclxuXHRcdFx0J18nICtcclxuXHRcdFx0VXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKHRva2VuLm5hbWUpXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGdldEtleVNuYXBzaG90KHRva2VuOiBUb2tlbik6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gKFxyXG5cdFx0XHRVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX1NOQVBTSE9UKSArXHJcblx0XHRcdCdfJyArXHJcblx0XHRcdFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyh0b2tlbi5uYW1lKVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRLZXlHdWFyYW50ZWUodG9rZW46IFBsaUNuZkd1YXJhbnRlZVRva2VuKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiAoXHJcblx0XHRcdFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfR1VBUkFOVEVFKSArXHJcblx0XHRcdCdfJyArXHJcblx0XHRcdFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyh0b2tlbi5uYW1lKVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJldHVybiBhIHZhbHVlIHRoYXQgcmVwcmVzZW50IHRoZSB0eXBlIG9mIGxhYmVsOiAxPUZvcm0sIDI9QnVkZ2V0LCAzPVN0YXRpYywgND1DYWxjdWxhdGVkXHJcblx0ICogQHBhcmFtIGtleSBWYWx1ZSB0byBldmFsdWVhdGVcclxuXHQgKi9cclxuXHRzdGF0aWMgZ2V0S2V5VHlwZShrZXk6IHN0cmluZyk6IG51bWJlciB7XHJcblx0XHRrZXkgPSBrZXkucmVwbGFjZSgneycsICcnKS5yZXBsYWNlKCd9JywgJycpO1xyXG5cdFx0a2V5ID0ga2V5LnN1YnN0cmluZygxLCBrZXkuaW5kZXhPZignXycpKTtcclxuXHRcdGlmIChrZXkuc3RhcnRzV2l0aChVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX0ZPUk0pKSkge1xyXG5cdFx0XHRyZXR1cm4gMTtcclxuXHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdGtleS5zdGFydHNXaXRoKFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfQlVER0VUKSlcclxuXHRcdCkge1xyXG5cdFx0XHRyZXR1cm4gMjtcclxuXHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdGtleS5zdGFydHNXaXRoKFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfU1RBVElDKSlcclxuXHRcdCkge1xyXG5cdFx0XHRyZXR1cm4gMztcclxuXHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdGtleS5zdGFydHNXaXRoKFxyXG5cdFx0XHRcdFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfQ0FMQ1VMQVRFRClcclxuXHRcdFx0KVxyXG5cdFx0KSB7XHJcblx0XHRcdHJldHVybiA0O1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0a2V5LnN0YXJ0c1dpdGgoVXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9UQVNLTCkpXHJcblx0XHQpIHtcclxuXHRcdFx0cmV0dXJuIDU7XHJcblx0XHR9IGVsc2UgaWYgKFxyXG5cdFx0XHRrZXkuc3RhcnRzV2l0aChcclxuXHRcdFx0XHRVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0RPQ1VNRU5UT19BTkFMWVNJU19UWVBFKVxyXG5cdFx0XHQpXHJcblx0XHQpIHtcclxuXHRcdFx0cmV0dXJuIDY7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gbnVsbDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIERlcGVuZHMgb2YgdGhlIHR5cGUgb2YgZm9ybUZpZWxkVG9rZW4gcmV0dXJuIGRlIHZhbHVlIG9mIHRoZSB2YWx1ZURhdGFcclxuXHQgKiBAcGFyYW0gZm9ybUZpZWxkVG9rZW5cclxuXHQgKiBAcGFyYW0gdmFsdWVEYXRhXHJcblx0ICovXHJcblx0Z2V0VmFsdWVGcm9tRm9ybUZpZWxkKGZvcm1GaWVsZFRva2VuOiBhbnksIHZhbHVlRGF0YTogYW55KTogYW55IHtcclxuXHRcdGlmICh0eXBlb2YgdmFsdWVEYXRhID09ICdvYmplY3QnKSB7XHJcblx0XHRcdGlmIChmb3JtRmllbGRUb2tlbi50eXBlKSB7XHJcblx0XHRcdFx0aWYgKGZvcm1GaWVsZFRva2VuLnR5cGUgPT0gJ2FkZHJlc3MnKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gdmFsdWVEYXRhLmZvcm1hdHRlZF9hZGRyZXNzO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRmb3JtRmllbGRUb2tlbi50eXBlID09ICdzZWxlY3QnICYmXHJcblx0XHRcdFx0XHR2YWx1ZURhdGEuaGFzT3duUHJvcGVydHkoZm9ybUZpZWxkVG9rZW4uc2VhcmNoRmllbGQpXHJcblx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRpZiAodmFsdWVEYXRhLmhhc093blByb3BlcnR5KCdvcmlnaW5hbF9uYW1lJykgIT09ICcnKSB7XHJcblx0XHRcdFx0XHRcdHJldHVybiB2YWx1ZURhdGEub3JpZ2luYWxfbmFtZTtcclxuXHRcdFx0XHRcdH0gZWxzZSBpZiAodmFsdWVEYXRhLmhhc093blByb3BlcnR5KCduYXRpdmVOYW1lJykgIT09ICcnKSB7XHJcblx0XHRcdFx0XHRcdHJldHVybiB2YWx1ZURhdGEubmF0aXZlTmFtZTtcclxuXHRcdFx0XHRcdH0gZWxzZSBpZiAoZm9ybUZpZWxkVG9rZW4uc2VhcmNoRmllbGQpIHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIHZhbHVlRGF0YVtmb3JtRmllbGRUb2tlbi5zZWFyY2hGaWVsZF07XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gdmFsdWVEYXRhO1xyXG5cdH1cclxuXHRmb3JtYXREYXRlKHZhbHVlOiBEYXRlLCBsb2NhbGU6IHN0cmluZyk6IHN0cmluZyB7XHJcblx0XHRjb25zdCBkYXRlID0gbmV3IERhdGUodmFsdWUpO1xyXG5cclxuXHRcdGNvbnN0IG1vbnRocyA9IHtcclxuXHRcdFx0ZXM6IFtcclxuXHRcdFx0XHQnZW5lcm8nLFxyXG5cdFx0XHRcdCdmZWJyZXJvJyxcclxuXHRcdFx0XHQnbWFyem8nLFxyXG5cdFx0XHRcdCdhYnJpbCcsXHJcblx0XHRcdFx0J21heW8nLFxyXG5cdFx0XHRcdCdqdW5pbycsXHJcblx0XHRcdFx0J2p1bGlvJyxcclxuXHRcdFx0XHQnYWdvc3RvJyxcclxuXHRcdFx0XHQnc2VwdGllbWJyZScsXHJcblx0XHRcdFx0J29jdHVicmUnLFxyXG5cdFx0XHRcdCdub3ZpZW1icmUnLFxyXG5cdFx0XHRcdCdkaWNpZW1icmUnXHJcblx0XHRcdF0sXHJcblx0XHRcdGVuOiBbXHJcblx0XHRcdFx0J0phbnVhcnknLFxyXG5cdFx0XHRcdCdGZWJydWFyeScsXHJcblx0XHRcdFx0J01hcmNoJyxcclxuXHRcdFx0XHQnQXByaWwnLFxyXG5cdFx0XHRcdCdNYXknLFxyXG5cdFx0XHRcdCdKdW5lJyxcclxuXHRcdFx0XHQnSnVseScsXHJcblx0XHRcdFx0J0F1Z3VzdCcsXHJcblx0XHRcdFx0J1NlcHRlbWJlcicsXHJcblx0XHRcdFx0J09jdG9iZXInLFxyXG5cdFx0XHRcdCdOb3ZlbWJlcicsXHJcblx0XHRcdFx0J0RlY2VtYmVyJ1xyXG5cdFx0XHRdLFxyXG5cdFx0XHRmcjogW1xyXG5cdFx0XHRcdCdqYW52aWVyJyxcclxuXHRcdFx0XHQnZsOpdnJpZXInLFxyXG5cdFx0XHRcdCdtYXJzJyxcclxuXHRcdFx0XHQnYXZyaWwnLFxyXG5cdFx0XHRcdCdtYWknLFxyXG5cdFx0XHRcdCdqdWluJyxcclxuXHRcdFx0XHQnanVpbGxldCcsXHJcblx0XHRcdFx0J2Fvw7t0JyxcclxuXHRcdFx0XHQnc2VwdGVtYnJlJyxcclxuXHRcdFx0XHQnb2N0b2JyZScsXHJcblx0XHRcdFx0J25vdmVtYnJlJyxcclxuXHRcdFx0XHQnZMOpY2VtYnJlJ1xyXG5cdFx0XHRdLFxyXG5cdFx0XHRkZTogW1xyXG5cdFx0XHRcdCdKYW51YXInLFxyXG5cdFx0XHRcdCdGZWJydWFyJyxcclxuXHRcdFx0XHQnTcOkcnonLFxyXG5cdFx0XHRcdCdBcHJpbCcsXHJcblx0XHRcdFx0J01haScsXHJcblx0XHRcdFx0J0p1bmknLFxyXG5cdFx0XHRcdCdKdWxpJyxcclxuXHRcdFx0XHQnQXVndXN0JyxcclxuXHRcdFx0XHQnU2VwdGVtYmVyJyxcclxuXHRcdFx0XHQnT2t0b2JlcicsXHJcblx0XHRcdFx0J05vdmVtYmVyJyxcclxuXHRcdFx0XHQnRGV6ZW1iZXInXHJcblx0XHRcdF0sXHJcblx0XHRcdGl0OiBbXHJcblx0XHRcdFx0J2dlbm5haW8nLFxyXG5cdFx0XHRcdCdmZWJicmFpbycsXHJcblx0XHRcdFx0J21hcnpvJyxcclxuXHRcdFx0XHQnYXByaWxlJyxcclxuXHRcdFx0XHQnbWFnZ2lvJyxcclxuXHRcdFx0XHQnZ2l1Z25vJyxcclxuXHRcdFx0XHQnbHVnbGlvJyxcclxuXHRcdFx0XHQnYWdvc3RvJyxcclxuXHRcdFx0XHQnc2V0dGVtYnJlJyxcclxuXHRcdFx0XHQnb3R0b2JyZScsXHJcblx0XHRcdFx0J25vdmVtYnJlJyxcclxuXHRcdFx0XHQnZGljZW1icmUnXHJcblx0XHRcdF1cclxuXHRcdH07XHJcblxyXG5cdFx0Y29uc3QgbG9jYWxlTW9udGhzID0gbW9udGhzW2xvY2FsZV07XHJcblxyXG5cdFx0Y29uc3QgbW9udGggPSBsb2NhbGVNb250aHNbZGF0ZS5nZXRNb250aCgpXTtcclxuXHRcdGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XHJcblxyXG5cdFx0cmV0dXJuIGAke21vbnRofSAke3llYXJ9YDtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogVHJ5IHRvIGZpbmQgdGhlIHRva2VuIGluIHRoZSBzdHJpbmdUZXh0IGFuZCByZXBsYWNlIHdpdGggZGF0YVZhbHVlLiBJZiBkZXRlY3QgZm9ybWF0IG9mIG51bWJlciBvciBkYXRlIHRyeSB0byBmb3JtYXQgdGhlIGRhdGFWYWx1ZVxyXG5cdCAqIEBwYXJhbSBzdHJpbmdUZXh0XHJcblx0ICogQHBhcmFtIHRva2VuXHJcblx0ICogQHBhcmFtIGRhdGFWYWx1ZVxyXG5cdCAqL1xyXG5cdHJlcGxhY2VUb2tlbihzdHJpbmdUZXh0OiBzdHJpbmcsIHRva2VuOiBhbnksIGRhdGFWYWx1ZTogYW55LCBsb2NhbGU/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG5cdFx0bGV0IHZhbHVlUmVwbGFjZTogc3RyaW5nID0gbnVsbDtcclxuXHRcdGlmICh0b2tlbiAmJiB0b2tlblswXSA9PSAnIycpIHtcclxuXHRcdFx0bGV0IHR5cGVUb2tlbiA9IHRva2VuLnN1YnN0cmluZygxLCB0b2tlbi5pbmRleE9mKCcoJykpO1xyXG5cdFx0XHRpZiAodHlwZVRva2VuID09ICdkYXRlJykge1xyXG5cdFx0XHRcdGxldCBkYXRlRm9ybWF0OiBzdHJpbmcgPSB0b2tlbi5zdWJzdHJpbmcoXHJcblx0XHRcdFx0XHR0b2tlbi5pbmRleE9mKCd9JykgKyAxLFxyXG5cdFx0XHRcdFx0dG9rZW4uaW5kZXhPZignKScpXHJcblx0XHRcdFx0KTtcclxuXHRcdFx0XHRkYXRlRm9ybWF0ID0gZGF0ZUZvcm1hdC50cmltKCkucmVwbGFjZSgvXFxcIi9nLCAnJykucmVwbGFjZSgvXFwnL2csICcnKTtcclxuXHRcdFx0XHRsZXQgZGF0ZVZhbHVlID0gRGF0ZVV0aWwuZ2V0RGF0ZShkYXRhVmFsdWUpO1xyXG5cdFx0XHRcdGlmIChsb2NhbGUgIT0gbnVsbCAmJiBsb2NhbGUpIHtcclxuXHRcdFx0XHRcdHZhbHVlUmVwbGFjZSA9IHRoaXMuZm9ybWF0RGF0ZShkYXRlVmFsdWUsIGxvY2FsZSk7XHJcblx0XHRcdFx0fSBlbHNlIGlmIChkYXRlVmFsdWUpIHtcclxuXHRcdFx0XHRcdHZhbHVlUmVwbGFjZSA9IERhdGVVdGlsLmdldE1vbWVudChkYXRlVmFsdWUpLmZvcm1hdChkYXRlRm9ybWF0KTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0dmFsdWVSZXBsYWNlID0gJyc7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2UgaWYgKHR5cGVUb2tlbiA9PSAnbnVtYmVyJykge1xyXG5cdFx0XHRcdGxldCBudW1iZXJWYWx1ZTogbnVtYmVyID0gTnVtYmVyKGRhdGFWYWx1ZSk7XHJcblx0XHRcdFx0aWYgKG51bWJlclZhbHVlICE9IHVuZGVmaW5lZCAmJiAhaXNOYU4obnVtYmVyVmFsdWUpKSB7XHJcblx0XHRcdFx0XHRsZXQgbnVtYmVyRm9ybWF0OiBzdHJpbmcgPSB0b2tlbi5zdWJzdHJpbmcoXHJcblx0XHRcdFx0XHRcdHRva2VuLmluZGV4T2YoJ30nKSArIDEsXHJcblx0XHRcdFx0XHRcdHRva2VuLmluZGV4T2YoJyknKVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdG51bWJlckZvcm1hdCA9IG51bWJlckZvcm1hdC50cmltKCkucmVwbGFjZSgvXFxcIi9nLCAnJykucmVwbGFjZSgvXFwnL2csICcnKTtcclxuXHRcdFx0XHRcdHZhbHVlUmVwbGFjZSA9IHRoaXMuY3VycmVuY3lQaXBlLnRyYW5zZm9ybShcclxuXHRcdFx0XHRcdFx0bnVtYmVyVmFsdWUsXHJcblx0XHRcdFx0XHRcdHRoaXMubG9jYWxlLFxyXG5cdFx0XHRcdFx0XHQnJyxcclxuXHRcdFx0XHRcdFx0bnVtYmVyRm9ybWF0XHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhcclxuXHRcdFx0XHRcdFx0J0VsIGRhdG8gWycgK1xyXG5cdFx0XHRcdFx0XHRcdGRhdGFWYWx1ZSArXHJcblx0XHRcdFx0XHRcdFx0J10gcGFyYSBlbCB0b2tlbiBbJyArXHJcblx0XHRcdFx0XHRcdFx0dG9rZW4gK1xyXG5cdFx0XHRcdFx0XHRcdCddIHRpcG8gbsO6bWVyaWNvIG5vIGVzIHZhbGlkbydcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHR2YWx1ZVJlcGxhY2UgPSAnJztcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0Y29uc29sZS5sb2coJ3RpcG8gZGUgdG9rZW4gaW5kZWZpbmlkby4gW3R5cGVUb2tlblsnICsgdHlwZVRva2VuICsgJ11dJyk7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSBpZiAodG9rZW4gJiYgdG9rZW5bMF0gPT0gJyQnKSB7XHJcblx0XHRcdGlmIChcclxuXHRcdFx0XHRkYXRhVmFsdWUgIT09IG51bGwgJiZcclxuXHRcdFx0XHRkYXRhVmFsdWUgIT09IHVuZGVmaW5lZCAmJlxyXG5cdFx0XHRcdGRhdGFWYWx1ZS5vcmlnaW5hbF9uYW1lICE9PSB1bmRlZmluZWQgJiZcclxuXHRcdFx0XHRkYXRhVmFsdWUub3JpZ2luYWxfbmFtZSAhPT0gbnVsbFxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHR2YWx1ZVJlcGxhY2UgPSBkYXRhVmFsdWUub3JpZ2luYWxfbmFtZTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR2YWx1ZVJlcGxhY2UgPSBkYXRhVmFsdWU7XHJcblx0XHRcdH1cclxuXHRcdFx0Ly8gdmFsdWVSZXBsYWNlID0gZGF0YVZhbHVlO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Y29uc29sZS5sb2coJ0VsIHRva2VuIG5vIGVzIHZhbGlkby4gW3Rva2VuWycgKyB0b2tlbiArICddXScpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHN0cmluZ1RleHQgJiYgdmFsdWVSZXBsYWNlICE9PSBudWxsKSB7XHJcblx0XHRcdC8vIHJlcGxhY2UgdGV4dCBpbiBhIG1vcmUgZWZmaWNpZW50IHdheVxyXG5cdFx0XHRzdHJpbmdUZXh0ID0gc3RyaW5nVGV4dC5zcGxpdCh0b2tlbikuam9pbih2YWx1ZVJlcGxhY2UpO1xyXG5cdFx0XHQvL3N0cmluZ1RleHQgPSBzdHJpbmdUZXh0LnJlcGxhY2UodG9rZW4sIHZhbHVlUmVwbGFjZSk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gc3RyaW5nVGV4dDtcclxuXHR9XHJcblxyXG5cdGdldExpc3RUb2tlbnNCeVN0cmluZ1NlZ21lbnRhdGlvbihzdHJpbmdUZXh0OiBzdHJpbmcpOiBhbnlbXSB7XHJcblx0XHRjb25zdCBhcnJheVRva2VuID0gc3RyaW5nVGV4dC5tYXRjaCgvXFwkeyhbXn1dKylcXH0vZyk7XHJcblx0XHRjb25zdCBhcnJheVRva2VuRm9ybWF0dGVkRGF0ZSA9IHN0cmluZ1RleHQubWF0Y2goL1xcI2RhdGVbXildK1xcKS9nKTtcclxuXHRcdGNvbnN0IGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIgPSBzdHJpbmdUZXh0Lm1hdGNoKC9cXCNudW1iZXJbXildK1xcKS9nKTtcclxuXHRcdGxldCBhcnJheVRva2VuRm9ybWF0dGVkID0gW107XHJcblx0XHRpZiAoXHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlICYmXHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlLmxlbmd0aCA+IDAgJiZcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlciAmJlxyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyLmxlbmd0aCA+IDBcclxuXHRcdCkge1xyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkID0gYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUuY29uY2F0KGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIpO1xyXG5cdFx0fSBlbHNlIGlmIChhcnJheVRva2VuRm9ybWF0dGVkRGF0ZSAmJiBhcnJheVRva2VuRm9ybWF0dGVkRGF0ZS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWQgPSBhcnJheVRva2VuRm9ybWF0dGVkRGF0ZS5zbGljZSgpO1xyXG5cdFx0fSBlbHNlIGlmIChhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyICYmIGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkID0gYXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlci5zbGljZSgpO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3QgcmVzdWx0OiBhbnlbXSA9IFtdO1xyXG5cclxuXHRcdGlmIChhcnJheVRva2VuKSB7XHJcblx0XHRcdGZvciAoY29uc3QgdG9rZW4gb2YgYXJyYXlUb2tlbikge1xyXG5cdFx0XHRcdGNvbnN0IGluZm9Ub2tlbiA9IHsga2V5OiB0b2tlbiwgdmFsdWU6IHRva2VuIH07XHJcblx0XHRcdFx0aWYgKGFycmF5VG9rZW5Gb3JtYXR0ZWQpIHtcclxuXHRcdFx0XHRcdGZvciAoY29uc3QgdG9rZW5Gb3JtYXR0ZWQgb2YgYXJyYXlUb2tlbkZvcm1hdHRlZCkge1xyXG5cdFx0XHRcdFx0XHRjb25zdCBpbmRleCA9IHRva2VuRm9ybWF0dGVkLmluZGV4T2YodG9rZW4pO1xyXG5cdFx0XHRcdFx0XHRpZiAoaW5kZXggPj0gMCkge1xyXG5cdFx0XHRcdFx0XHRcdGluZm9Ub2tlbi52YWx1ZSA9IHRva2VuRm9ybWF0dGVkO1xyXG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHJlc3VsdC5wdXNoKGluZm9Ub2tlbik7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gcmVzdWx0O1xyXG5cdH1cclxuXHJcblx0Y2hhbmdlSWRQcm9wZXJ0aWVzT2ZPYmplY3Qobm9ybWFsaXphdGlvbkNvbHVtbnM6IGFueVtdLCBsaXN0RGF0YTogYW55W10pOiBhbnlbXSB7XHJcblx0XHRjb25zdCBuZXdEYXRhID0gW107XHJcblx0XHRsaXN0RGF0YS5mb3JFYWNoKChkYXRhKSA9PiB7XHJcblx0XHRcdGNvbnN0IG9iakRhdGEgPSB7fTtcclxuXHRcdFx0T2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaCgocHJvcGVydHkpID0+IHtcclxuXHRcdFx0XHRpZiAoZGF0YS5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkpIHtcclxuXHRcdFx0XHRcdG5vcm1hbGl6YXRpb25Db2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG5cdFx0XHRcdFx0XHRpZiAoY29sdW1uLmlkQ29sdW1uLnRvU3RyaW5nKCkgPT09IHByb3BlcnR5KSB7XHJcblx0XHRcdFx0XHRcdFx0b2JqRGF0YVtjb2x1bW4ua2V5XSA9IGRhdGFbcHJvcGVydHldO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0XHRpZiAob2JqRGF0YSkge1xyXG5cdFx0XHRcdG5ld0RhdGEucHVzaChvYmpEYXRhKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0XHRyZXR1cm4gbmV3RGF0YTtcclxuXHR9XHJcblxyXG5cdGdlbmVyYXRlSHRtbEJ5VG9rZW5zQW5kRGF0YShodG1sOiBzdHJpbmcsIGxpc3REYXRhOiBhbnlbXSwgbGlzdFRva2VuczogYW55W10pOiBzdHJpbmdbXSB7XHJcblx0XHRjb25zdCB0cmFuc2xhdGVkQ2FyZHM6IGFueVtdID0gW107XHJcblx0XHRsaXN0RGF0YS5mb3JFYWNoKChkYXRhKSA9PiB7XHJcblx0XHRcdGNvbnN0IG9ialRva2VuID0ge307XHJcblx0XHRcdGNvbnN0IGh0bWxUcmFuc2xhdGVkID0geyBodG1sOiBodG1sIH07XHJcblx0XHRcdE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goKHByb3BlcnR5KSA9PiB7XHJcblx0XHRcdFx0bGlzdFRva2Vucy5mb3JFYWNoKCh0b2tlbikgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKHByb3BlcnR5ID09IHRva2VuLmtleS5yZXBsYWNlKCckeycsICcnKS5yZXBsYWNlKCd9JywgJycpKSB7XHJcblx0XHRcdFx0XHRcdG9ialRva2VuW3Rva2VuLmtleV0gPSBkYXRhW3Byb3BlcnR5XTtcclxuXHRcdFx0XHRcdFx0aHRtbFRyYW5zbGF0ZWQuaHRtbCA9IGh0bWxUcmFuc2xhdGVkLmh0bWwucmVwbGFjZShcclxuXHRcdFx0XHRcdFx0XHR0b2tlbi5rZXksXHJcblx0XHRcdFx0XHRcdFx0ZGF0YVtwcm9wZXJ0eV1cclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSk7XHJcblx0XHRcdHRyYW5zbGF0ZWRDYXJkcy5wdXNoKGh0bWxUcmFuc2xhdGVkKTtcclxuXHRcdH0pO1xyXG5cdFx0cmV0dXJuIHRyYW5zbGF0ZWRDYXJkcztcclxuXHR9XHJcblxyXG5cdGdldExpc3RUb2tlbnNCeVN0cmluZyhzdHJpbmdUZXh0OiBzdHJpbmcpOiBhbnlbXSB7XHJcblx0XHR2YXIgYXJyYXlUb2tlbiA9IHN0cmluZ1RleHQubWF0Y2goL1xcJHsoW159XSspXFx9L2cpO1xyXG5cdFx0dmFyIGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlID0gc3RyaW5nVGV4dC5tYXRjaCgvXFwjZGF0ZVteKV0rXFwpL2cpO1xyXG5cdFx0dmFyIGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIgPSBzdHJpbmdUZXh0Lm1hdGNoKC9cXCNudW1iZXJbXildK1xcKS9nKTtcclxuXHRcdHZhciBhcnJheVRva2VuRm9ybWF0dGVkID0gW107XHJcblx0XHRpZiAoXHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlICYmXHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlLmxlbmd0aCA+IDAgJiZcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlciAmJlxyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyLmxlbmd0aCA+IDBcclxuXHRcdCkge1xyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkID0gYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUuY29uY2F0KGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIpO1xyXG5cdFx0fSBlbHNlIGlmIChhcnJheVRva2VuRm9ybWF0dGVkRGF0ZSAmJiBhcnJheVRva2VuRm9ybWF0dGVkRGF0ZS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWQgPSBhcnJheVRva2VuRm9ybWF0dGVkRGF0ZS5zbGljZSgpO1xyXG5cdFx0fSBlbHNlIGlmIChhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyICYmIGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkID0gYXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlci5zbGljZSgpO1xyXG5cdFx0fVxyXG5cdFx0dmFyIHJlc3VsdDogYW55W10gPSBbXTtcclxuXHJcblx0XHRpZiAoYXJyYXlUb2tlbikge1xyXG5cdFx0XHRmb3IgKGNvbnN0IHRva2VuIG9mIGFycmF5VG9rZW4pIHtcclxuXHRcdFx0XHRsZXQga2V5VHlwZTogbnVtYmVyID0gVG9rZW5TZXJ2aWNlLmdldEtleVR5cGUodG9rZW4pO1xyXG5cdFx0XHRcdGlmIChrZXlUeXBlID09PSBudWxsKSB7XHJcblx0XHRcdFx0XHRjb250aW51ZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dmFyIGluZm9Ub2tlbiA9IHsga2V5OiB0b2tlbiwgdmFsdWU6IHRva2VuIH07XHJcblx0XHRcdFx0aWYgKGFycmF5VG9rZW5Gb3JtYXR0ZWQpIHtcclxuXHRcdFx0XHRcdGZvciAoY29uc3QgdG9rZW5Gb3JtYXR0ZWQgb2YgYXJyYXlUb2tlbkZvcm1hdHRlZCkge1xyXG5cdFx0XHRcdFx0XHR2YXIgaW5kZXggPSB0b2tlbkZvcm1hdHRlZC5pbmRleE9mKHRva2VuKTtcclxuXHRcdFx0XHRcdFx0aWYgKGluZGV4ID49IDApIHtcclxuXHRcdFx0XHRcdFx0XHRpbmZvVG9rZW4udmFsdWUgPSB0b2tlbkZvcm1hdHRlZDtcclxuXHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXN1bHQucHVzaChpbmZvVG9rZW4pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHJlc3VsdDtcclxuXHJcblx0XHQvLyBsZXQgdG9rZW5zOiBhbnlbXSA9IFtdO1xyXG5cdFx0Ly8gbGV0IGkgPSB0aGlzLm5leHRWYWxpZFBvc2l0aW9uVG9rZW5zKHN0cmluZ1RleHQsIDApO1xyXG5cdFx0Ly8gbGV0IGNvdW50ID0gMDtcclxuXHRcdC8vIHdoaWxlIChpID49IDAgJiYgY291bnQgPD0gMTApIHtcclxuXHRcdC8vICAgbGV0IGluZm9Ub2tlbjoge30gPSBudWxsO1xyXG5cdFx0Ly8gICBsZXQgbmV4dEk6IG51bWJlciA9IGk7XHJcblx0XHQvLyAgIGxldCBjaGFyYWN0ZXIgPSBzdHJpbmdUZXh0LnN1YnN0cmluZyhpLCAoaSArIDEpKTtcclxuXHRcdC8vICAgaWYgKGNoYXJhY3RlciA9PSBcIiRcIikge1xyXG5cdFx0Ly8gICAgIGxldCBuZXh0Q2hhcmFjdGVyID0gc3RyaW5nVGV4dC5zdWJzdHJpbmcoKGkgKyAxKSwgKGkgKyAyKSk7XHJcblx0XHQvLyAgICAgLy8gVGhlIG5leHQgY2hhcmFjdGVyIG5lZWQgdG8gYmUgYSB7IHNpZ25cclxuXHRcdC8vICAgICBpZiAobmV4dENoYXJhY3RlciAhPSBcIntcIikge1xyXG5cdFx0Ly8gICAgICAgaSA9IHRoaXMubmV4dFZhbGlkUG9zaXRpb25Ub2tlbnMoc3RyaW5nVGV4dCwgbmV4dEkgKyAxKTtcclxuXHRcdC8vICAgICAgIGNvbnRpbnVlO1xyXG5cdFx0Ly8gICAgIH1cclxuXHRcdC8vICAgICBsZXQga2V5VG9rZW46IHN0cmluZyA9IHN0cmluZ1RleHQuc3Vic3RyaW5nKGksIHN0cmluZ1RleHQuaW5kZXhPZihcIn1cIiwgaSkgKyAxKTtcclxuXHRcdC8vICAgICAvLyBJZiB0aGUgdG9rZW4gaGF2ZSBhIHZhbGlkIGtleSB0eXBlXHJcblx0XHQvLyAgICAgbGV0IGtleVR5cGU6IG51bWJlciA9IFRva2VuU2VydmljZS5nZXRLZXlUeXBlKGtleVRva2VuLnJlcGxhY2UoXCJ7XCIsIFwiXCIpLnJlcGxhY2UoXCJ9XCIsIFwiXCIpKTtcclxuXHRcdC8vICAgICBpZiAoa2V5VHlwZSA9PT0gbnVsbCkge1xyXG5cdFx0Ly8gICAgICAgaSA9IHRoaXMubmV4dFZhbGlkUG9zaXRpb25Ub2tlbnMoc3RyaW5nVGV4dCwgbmV4dEkgKyAxKTtcclxuXHRcdC8vICAgICAgIGNvbnRpbnVlO1xyXG5cdFx0Ly8gICAgIH1cclxuXHRcdC8vICAgICBpbmZvVG9rZW4gPSB7XHJcblx0XHQvLyAgICAgICBrZXk6IGtleVRva2VuLFxyXG5cdFx0Ly8gICAgICAgdmFsdWU6IGtleVRva2VuXHJcblx0XHQvLyAgICAgfTtcclxuXHRcdC8vICAgICBuZXh0SSA9IHN0cmluZ1RleHQuaW5kZXhPZihcIn1cIiwgaSk7XHJcblx0XHQvLyAgIH0gZWxzZSB7XHJcblx0XHQvLyAgICAgbGV0IG5leHRTaWduOiBudW1iZXIgPSBzdHJpbmdUZXh0LmluZGV4T2YoXCIkXCIsIGkpO1xyXG5cdFx0Ly8gICAgIC8vIFdlIGlubHkgc3VwcG9ydCAjZGF0ZSgkIGFuZCAjbnVtYmVyKCQgaW4gdGhpcyAyIHNjZW5hcmlvcyB0aGUgbGVuZ2h0IGNhbid0IGJlIG1vcmUgdGhhbiAxMCBjaGFyYWN0ZXJzXHJcblx0XHQvLyAgICAgaWYgKG5leHRTaWduIDwgMCB8fCAobmV4dFNpZ24gLSBpKSA+IDEwKSB7XHJcblx0XHQvLyAgICAgICBpID0gdGhpcy5uZXh0VmFsaWRQb3NpdGlvblRva2VucyhzdHJpbmdUZXh0LCBuZXh0SSArIDEpO1xyXG5cdFx0Ly8gICAgICAgY29udGludWU7XHJcblx0XHQvLyAgICAgfVxyXG5cdFx0Ly8gICAgIGxldCBrZXlUb2tlbjogc3RyaW5nID0gc3RyaW5nVGV4dC5zdWJzdHJpbmcoc3RyaW5nVGV4dC5pbmRleE9mKFwiJFwiLCBpKSwgc3RyaW5nVGV4dC5pbmRleE9mKFwifVwiLCBpKSArIDEpO1xyXG5cdFx0Ly8gICAgIGxldCB2YWx1ZVRva2VuOiBzdHJpbmcgPSBzdHJpbmdUZXh0LnN1YnN0cmluZyhpLCBzdHJpbmdUZXh0LmluZGV4T2YoXCIpXCIsIGkpICsgMSk7XHJcblx0XHQvLyAgICAgaW5mb1Rva2VuID0ge1xyXG5cdFx0Ly8gICAgICAga2V5OiBrZXlUb2tlbixcclxuXHRcdC8vICAgICAgIHZhbHVlOiB2YWx1ZVRva2VuXHJcblx0XHQvLyAgICAgfTtcclxuXHRcdC8vICAgICBuZXh0SSA9IHN0cmluZ1RleHQuaW5kZXhPZihcIilcIiwgaSk7XHJcblx0XHQvLyAgIH1cclxuXHRcdC8vICAgdG9rZW5zLnB1c2goaW5mb1Rva2VuKTtcclxuXHRcdC8vICAgaSA9IHRoaXMubmV4dFZhbGlkUG9zaXRpb25Ub2tlbnMoc3RyaW5nVGV4dCwgbmV4dEkpO1xyXG5cdFx0Ly8gICBjb3VudCsrO1xyXG5cdFx0Ly8gfVxyXG5cdFx0Ly8gcmV0dXJuIHRva2VucztcclxuXHR9XHJcblxyXG5cdG5leHRWYWxpZFBvc2l0aW9uVG9rZW5zKHN0cmluZ1RleHQ6IHN0cmluZywgbmV4dEk6IG51bWJlcik6IG51bWJlciB7XHJcblx0XHRsZXQgdG9rZW5Eb2xsYXJTaWduOiBudW1iZXIgPSBzdHJpbmdUZXh0LmluZGV4T2YoJyQnLCBuZXh0SSk7XHJcblx0XHRsZXQgdG9rZW5OdW1TaWduOiBudW1iZXIgPSBzdHJpbmdUZXh0LmluZGV4T2YoJyMnLCBuZXh0SSk7XHJcblx0XHRsZXQgaTogbnVtYmVyID1cclxuXHRcdFx0dG9rZW5Eb2xsYXJTaWduIDwgMCAmJiB0b2tlbk51bVNpZ24gPj0gMFxyXG5cdFx0XHRcdD8gdG9rZW5OdW1TaWduXHJcblx0XHRcdFx0OiB0b2tlbk51bVNpZ24gPCAwICYmIHRva2VuRG9sbGFyU2lnbiA+PSAwXHJcblx0XHRcdFx0PyB0b2tlbkRvbGxhclNpZ25cclxuXHRcdFx0XHQ6IHRva2VuRG9sbGFyU2lnbiA8IHRva2VuTnVtU2lnblxyXG5cdFx0XHRcdD8gdG9rZW5Eb2xsYXJTaWduXHJcblx0XHRcdFx0OiB0b2tlbk51bVNpZ247XHJcblx0XHRyZXR1cm4gaTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEl0IHJldXNlcyByZXBsYWNlVG9rZW5zRnJvbUxpc3RPYmplY3RQdWJsaWMgYnV0IHNldCBhbGwga2V5cyBsb2JqZWN0dG9rZW5zIGFzIGxvd2VyY2FzZVxyXG5cdCAqIEBwYXJhbSB0b2tlbk5hbWVcclxuXHQgKiBAcGFyYW0gZm9ybXVsYVxyXG5cdCAqIEBwYXJhbSBsT2JqZWN0VG9rZW5zXHJcblx0ICovXHJcblx0cmVwbGFjZVRva2Vuc0Zyb21MaXN0T2JqZWN0UHVibGljKFxyXG5cdFx0dG9rZW5OYW1lOiBzdHJpbmcsXHJcblx0XHRmb3JtdWxhOiBzdHJpbmcsXHJcblx0XHRsT2JqZWN0VG9rZW5zOiBhbnlbXVxyXG5cdCk6IHN0cmluZyB7XHJcblx0XHRsZXQgbERhdGFPcmc6IGFueVtdID0gW107XHJcblx0XHRpZiAobE9iamVjdFRva2Vucykge1xyXG5cdFx0XHRmb3IgKGxldCBkYXRhRm9ybSBpbiBsT2JqZWN0VG9rZW5zKSB7XHJcblx0XHRcdFx0bERhdGFPcmdbZGF0YUZvcm0udG9Mb3dlckNhc2UoKV0gPSBsT2JqZWN0VG9rZW5zW2RhdGFGb3JtXTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHRoaXMucmVwbGFjZVRva2Vuc0Zyb21MaXN0T2JqZWN0KHRva2VuTmFtZSwgZm9ybXVsYSwgbERhdGFPcmcpO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBAcGFyYW0gdG9rZW5OYW1lIHRva2VuIG5hbWVcclxuXHQgKiBAcGFyYW0gZm9ybXVsYSBTdHJpbmcgd2l0aCB0aGUgZm9ybXVsYSB0byBleGVjdXRlXHJcblx0ICogQHBhcmFtIGxPYmplY3RUb2tlbnMgTGlzdCBvZiB0b2tlbnMgd2l0aCB0aGUgdmFsdWVzIHRvIHJlcGxhY2VcclxuXHQgKi9cclxuXHRyZXBsYWNlVG9rZW5zRnJvbUxpc3RPYmplY3QodG9rZW5OYW1lOiBzdHJpbmcsIGZvcm11bGE6IHN0cmluZywgbE9iamVjdFRva2VuczogYW55KTogc3RyaW5nIHtcclxuXHRcdGlmICghZm9ybXVsYSB8fCBmb3JtdWxhLmxlbmd0aCA9PSAwKSB7XHJcblx0XHRcdHRocm93IHtcclxuXHRcdFx0XHRtZXNzYWdlOiAnTGEgZm9ybXVsYSBkZWwgdG9rZW4gJyArIHRva2VuTmFtZSArICcgZXN0YSB2YWPDrWEnLFxyXG5cdFx0XHRcdHRpdGxlOiAnQWxlcnRhIScsXHJcblx0XHRcdFx0ZXJyb3I6XHJcblx0XHRcdFx0XHQnTGEgZm9ybXVsYSBkZWwgdG9rZW4gJyArIHRva2VuTmFtZSArICcgZXN0YSB2YWPDrWEuIFtmb3JtdWxhWycgKyBmb3JtdWxhICsgJ11dJ1xyXG5cdFx0XHR9O1xyXG5cdFx0fVxyXG5cdFx0bGV0IHJlcGxhY2VkVG9rZW5zOiBzdHJpbmcgPSBmb3JtdWxhLnRvU3RyaW5nKCk7XHJcblx0XHRpZiAocmVwbGFjZWRUb2tlbnMuc3RhcnRzV2l0aCgnZmlsZTovLycpKSB7XHJcblx0XHRcdHJldHVybiByZXBsYWNlZFRva2VucztcclxuXHRcdH1cclxuXHRcdC8vIEZpbmQgdGhlIHRva2VucyBpbiB0aGUgZm9ybXVsYVxyXG5cdFx0bGV0IHRva2Vuc0FycmF5OiBhbnlbXSA9IHRoaXMuZ2V0TGlzdFRva2Vuc0J5U3RyaW5nKHJlcGxhY2VkVG9rZW5zKTtcclxuXHRcdGlmICh0b2tlbnNBcnJheS5sZW5ndGggPT0gMCkge1xyXG5cdFx0XHRyZXR1cm4gcmVwbGFjZWRUb2tlbnM7XHJcblx0XHR9XHJcblx0XHQvLyBJZiB0aGVyZSBhbnkgdG9rZW4sIHRyeSB0byByZXBsYWNlXHJcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRva2Vuc0FycmF5Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdGxldCBvYmplY3RUb2tlbiA9XHJcblx0XHRcdFx0bE9iamVjdFRva2Vuc1t0b2tlbnNBcnJheVtpXS5rZXldICE9PSB1bmRlZmluZWRcclxuXHRcdFx0XHRcdD8gbE9iamVjdFRva2Vuc1t0b2tlbnNBcnJheVtpXS5rZXldXHJcblx0XHRcdFx0XHQ6IG51bGw7XHJcblx0XHRcdGxldCBjbGVhcktleTtcclxuXHRcdFx0aWYgKG9iamVjdFRva2VuID09IG51bGwpIHtcclxuXHRcdFx0XHRjbGVhcktleSA9IHRva2Vuc0FycmF5W2ldLmtleS5yZXBsYWNlKCckeycsICcnKS5yZXBsYWNlKCd9JywgJycpLnRvTG93ZXJDYXNlKCk7XHJcblx0XHRcdFx0b2JqZWN0VG9rZW4gPVxyXG5cdFx0XHRcdFx0bE9iamVjdFRva2Vuc1tjbGVhcktleV0gIT09IHVuZGVmaW5lZCA/IGxPYmplY3RUb2tlbnNbY2xlYXJLZXldIDogbnVsbDtcclxuXHJcblx0XHRcdFx0aWYgKG9iamVjdFRva2VuID09IG51bGwpIHtcclxuXHRcdFx0XHRcdGNsZWFyS2V5ID0gdG9rZW5zQXJyYXlbaV0ua2V5XHJcblx0XHRcdFx0XHRcdC5yZXBsYWNlKCd7JywgJycpXHJcblx0XHRcdFx0XHRcdC5yZXBsYWNlKCd9JywgJycpXHJcblx0XHRcdFx0XHRcdC5zcGxpdCgnXycpWzFdXHJcblx0XHRcdFx0XHRcdC50b0xvd2VyQ2FzZSgpO1xyXG5cdFx0XHRcdFx0b2JqZWN0VG9rZW4gPVxyXG5cdFx0XHRcdFx0XHRsT2JqZWN0VG9rZW5zW2NsZWFyS2V5XSAhPT0gdW5kZWZpbmVkID8gbE9iamVjdFRva2Vuc1tjbGVhcktleV0gOiBudWxsO1xyXG5cdFx0XHRcdFx0aWYgKG9iamVjdFRva2VuID09PSBudWxsIHx8IG9iamVjdFRva2VuID09PSB1bmRlZmluZWQpIHtcclxuXHRcdFx0XHRcdFx0Y29uc3QgYXJyYXlLZXkgPSB0b2tlbnNBcnJheVtpXS5rZXlcclxuXHRcdFx0XHRcdFx0XHQucmVwbGFjZSgneycsICcnKVxyXG5cdFx0XHRcdFx0XHRcdC5yZXBsYWNlKCd9JywgJycpXHJcblx0XHRcdFx0XHRcdFx0LnNwbGl0KCdfJylbMV1cclxuXHRcdFx0XHRcdFx0XHQuc3BsaXQoJy4nKTtcclxuXHRcdFx0XHRcdFx0aWYgKGFycmF5S2V5Lmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdFx0XHRsZXQgdmFsdWUgPSBsT2JqZWN0VG9rZW5zO1xyXG5cdFx0XHRcdFx0XHRcdGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhcnJheUtleS5sZW5ndGg7IGluZGV4KyspIHtcclxuXHRcdFx0XHRcdFx0XHRcdGxldCBlbGVtZW50ID0gYXJyYXlLZXlbaW5kZXhdO1xyXG5cdFx0XHRcdFx0XHRcdFx0aWYgKGluZGV4ID09IDApIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZWxlbWVudCA9IGVsZW1lbnQudG9Mb3dlckNhc2UoKTtcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlID0gdmFsdWVbZWxlbWVudF07XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdG9iamVjdFRva2VuID0gdmFsdWU7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKG9iamVjdFRva2VuID09IG51bGwpIHtcclxuXHRcdFx0XHQvLyBJZiBub3QgZmluZCB0aGUgdG9rZW4sIGJ5IGRlZmF1bHQgcHV0IGFuIGVtcHR5IHN0cmluZ1xyXG5cdFx0XHRcdC8qaWYgKFRva2VuU2VydmljZS5leGNsdWRlZFRva2VuLmluZGV4T2YoY2xlYXJLZXkpID09PSAtMSkge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5lcnJvcihcclxuXHRcdFx0XHRcdFx0J0VsIHRva2VuICcgKyB0b2tlbnNBcnJheVtpXS52YWx1ZSArICcgbm8gZnVlIGVuY29udHJhZG8uJyxcclxuXHRcdFx0XHRcdFx0bE9iamVjdFRva2VucyxcclxuXHRcdFx0XHRcdFx0dG9rZW5zQXJyYXlcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0fSovXHJcblx0XHRcdFx0b2JqZWN0VG9rZW4gPSAnJztcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAob2JqZWN0VG9rZW4gIT0gbnVsbCkge1xyXG5cdFx0XHRcdGxldCB2YWx1ZTogYW55O1xyXG5cdFx0XHRcdGlmKE51bWJlcihvYmplY3RUb2tlbikpe1xyXG5cdFx0XHRcdFx0dmFsdWUgPSBOdW1iZXIob2JqZWN0VG9rZW4pO1xyXG5cdFx0XHRcdH1lbHNlIGlmKEFycmF5LmlzQXJyYXkob2JqZWN0VG9rZW4pKXtcclxuXHRcdFx0XHRcdHZhbHVlID0gQXJyYXkuaXNBcnJheShvYmplY3RUb2tlbik7XHJcblx0XHRcdFx0fWVsc2UgaWYoSlNPTi5zdHJpbmdpZnkob2JqZWN0VG9rZW4pKXtcclxuXHRcdFx0XHRcdHZhbHVlID0gb2JqZWN0VG9rZW4ub3JpZ2luYWxfbmFtZSA/IFwiJ1wiICsgb2JqZWN0VG9rZW4ub3JpZ2luYWxfbmFtZSArIFwiJ1wiIDogSlNPTi5zdHJpbmdpZnkob2JqZWN0VG9rZW4pO1xyXG5cdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0dmFsdWUgPSBcIidcIiArIG9iamVjdFRva2VuICsgXCInXCI7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHJlcGxhY2VkVG9rZW5zID0gdGhpcy5yZXBsYWNlVG9rZW4ocmVwbGFjZWRUb2tlbnMsIHRva2Vuc0FycmF5W2ldLnZhbHVlLCB2YWx1ZSk7XHJcblx0XHRcdFx0Ly8gfSBlbHNlIHtcclxuXHRcdFx0XHQvLyAgIGNvbnNvbGUuZXJyb3IobE9iamVjdFRva2VucywgdG9rZW5zQXJyYXkpO1xyXG5cdFx0XHRcdC8vICAgdGhyb3cge1xyXG5cdFx0XHRcdC8vICAgICBtZXNzYWdlOiBcIk5vIHNlIGVuY29udHLDsyB2YWxvciBwYXJhIHVuIHRva2VuXCIsXHJcblx0XHRcdFx0Ly8gICAgIHRpdGxlOiBcIkFsZXJ0YSFcIixcclxuXHRcdFx0XHQvLyAgICAgZXJyb3I6IFwiRWwgdG9rZW4gXCIgKyB0b2tlbnNBcnJheVtpXS52YWx1ZSArIFwiIG5vIGZ1ZSBlbmNvbnRyYWRvLlwiXHJcblx0XHRcdFx0Ly8gICB9O1xyXG5cdFx0XHRcdC8vXHJcblx0XHRcdFx0Ly8gU2kgZXMgbGEgdWx0aW1hIGl0ZXJhY2lvbiB5IGxhIGZvcm11bGEgdGllbmUgWyBlcyBwb3JxdWUgdGllbmUgdW4gYXJyYXkgZW4gZWwgdmFsb3IgcXVlIHJlc29sdmlvIGVsIHRva2VuXHJcblx0XHRcdFx0aWYgKGkgPT0gdG9rZW5zQXJyYXkubGVuZ3RoIC0gMSAmJiByZXBsYWNlZFRva2Vucy5pbmNsdWRlcygnWycpKSB7XHJcblx0XHRcdFx0XHQvLyBTZSBwb25lbiB0b2RvcyBsb3Mgb3BlcmFuZG9zIGNvbW8gZWxlbWVudG9zIGVuIHVuIGFycmF5IFsnZXhwcmVzaW9uIGEnLCAnJiYnLCAnRXhwcmVzaW9uIEInXVxyXG5cdFx0XHRcdFx0bGV0IGZvcm1FeHByZXNzaW9uczogc3RyaW5nW10gPSByZXBsYWNlZFRva2Vucy5zcGxpdCgvIChcXHxcXHx8JiYpIC8pO1xyXG5cdFx0XHRcdFx0bGV0IGxBdXhmb3JtRXhwcmVzc2lvbjogc3RyaW5nW10gPSBbXTtcclxuXHRcdFx0XHRcdGZvcm1FeHByZXNzaW9ucy5mb3JFYWNoKChleHByZXNzaW9uOiBzdHJpbmcpID0+IHtcclxuXHRcdFx0XHRcdFx0aWYgKGV4cHJlc3Npb24uY2hhckF0KDApID09ICdbJykge1xyXG5cdFx0XHRcdFx0XHRcdGxldCBpc1RhZ0ZvdW5kOiBzdHJpbmcgPSAnJztcclxuXHRcdFx0XHRcdFx0XHRpc1RhZ0ZvdW5kID0gdGhpcy5maW5kVGFnKGV4cHJlc3Npb24pO1xyXG5cdFx0XHRcdFx0XHRcdGxBdXhmb3JtRXhwcmVzc2lvbi5wdXNoKGlzVGFnRm91bmQpO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdGxBdXhmb3JtRXhwcmVzc2lvbi5wdXNoKGV4cHJlc3Npb24pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdHJlcGxhY2VkVG9rZW5zID0gbEF1eGZvcm1FeHByZXNzaW9uLmpvaW4oJyAnKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiByZXBsYWNlZFRva2VucztcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIE1FdG9kbyBxdWUgdGVuaWVuZG8gdW5hIGV4cHJlc2lvbiBkZSBsYSBmb3JtYSBbJ3RhZzEnLCAndGFnMiddPT10YWczXHJcblx0ICogZXZhbHVhIHNpIHRhZzMgaGFjZSBwYXJ0ZSBkZWwgYXJyYXkgc2kgdGllbmUgZWwgb3BlcmFkb3IgPT0uXHJcblx0ICogU2kgdGllbmUgZWwgb3BlcmFkb3IgIT0gZXhhbWluYSBxdWUgdGFnMyBubyBoYWdhIHBhcnRlIGRlbCBhcnJheStcclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBleHByZXNzaW9uIE9wZXJhbmRvIHF1ZSBldmFsdWEgdGFnLiBFcyBkZSBsYSBmb3JtYSBbJ3RhZzEnLCAndGFnMiddPT10YWczXHJcblx0ICogQHJldHVybnMgUmV0b3JuYSAndHJ1ZScgbyAnZmFsc2UnIGVuIHN0cmluZyBxdWUgZGVzcHVlcyBzZXJhIHBhc2FkbyBhIHVuIGV2YWwoKVxyXG5cdCAqIG1hcyBhZGVsYW50ZSBlbiBlbCBmbHVqb1xyXG5cdCAqL1xyXG5cdGZpbmRUYWcoZXhwcmVzc2lvbjogc3RyaW5nKTogc3RyaW5nIHtcclxuXHRcdGxldCByZWdleE9wZXJhdG9yID0gbmV3IFJlZ0V4cCgnKD09PXw9PXwhPT18IT0pJyk7XHJcblx0XHQvLyBSZXRvcm5hIGVsIG9wZXJhZG9yXHJcblx0XHRsZXQgb3BlcmF0b3I6IHN0cmluZ1tdID0gZXhwcmVzc2lvbi5tYXRjaChyZWdleE9wZXJhdG9yKTtcclxuXHRcdC8vIFNpIG5vIGVuY3VlbnRyYSB1biBvcGVyYWRvciBzZWd1biBlbCBwYXRyb24gcmV0b3JuYSAnZmFsc2UnXHJcblx0XHQvLyBwYXJhIGV2aXRhciByZXN1bHRhZG9zIGluZXNwZXJhZG9zXHJcblx0XHRpZiAob3BlcmF0b3IgPT0gbnVsbCkge1xyXG5cdFx0XHRjb25zb2xlLmVycm9yKCdObyBzZSBlbmNvbnRybyB1biBvcGVyYWRvciBwZXJtaXRpZG8gcGFyYSBsYSBleHByZXNpb24nKTtcclxuXHRcdFx0cmV0dXJuICdmYWxzZSc7XHJcblx0XHR9XHJcblx0XHQvLyBTZXBhcmEgbGEgc2VudGVuY2lhIHBvciBlbCBvcGVyYWRvclxyXG5cdFx0Ly8gTGEgcHJpbWVyYSBwYXJ0ZSBlcyBlbCB2YWxvciBwb3IgZWwgY3VhbCBzZSByZW1wbGF6YSBlbCB0b2tlbiBxdWUgZXMgdW4gYXJyYXkgZW4gc3RyaW5nIFwiWydhJywgJ2InXVwiXHJcblx0XHQvLyBFbCBzZWd1bmRvIGVzIGVsIHZhbG9yIGNvbiBlbCBjdWFsIHNlIHZhIGEgY29tcGFyYXJcclxuXHRcdGxldCB2YWx1ZVRva2VuLCB2YWx1ZVRvQ29tcGFyZTtcclxuXHRcdFt2YWx1ZVRva2VuLCB2YWx1ZVRvQ29tcGFyZV0gPSBleHByZXNzaW9uLnNwbGl0KG9wZXJhdG9yWzBdKTtcclxuXHRcdC8vIFNlIGxpbXBpYSBlbCBzdHJpbmcgY29ycmVzcG9uZGllbnRlIGFsIGFycmF5IHBhcmEgcXVlIGxvcyBlbGVtZW50b3MgcXVlZGVuIHNlcGFyYWRvcyBwb3IgXCIsXCJcclxuXHRcdHZhbHVlVG9rZW4gPSB2YWx1ZVRva2VuLnJlcGxhY2UoL1teYS16QS1aMC05ICxdL2csICcnKTtcclxuXHRcdC8vIFNpIG5vIGhheSB0YWdzIGFzb2NpYWRvcyBhbCByZWdpc3RybyBzZSBkZXZ1ZWx2ZSAnZmFsc2UnXHJcblx0XHRpZiAoIXZhbHVlVG9rZW4pIHtcclxuXHRcdFx0Y29uc29sZS5lcnJvcignTm8gaGF5IHRhZ3MgYXNvY2lhZG9zIGEgZXN0YSBhcGxpY2FjacOzbicpO1xyXG5cdFx0XHRyZXR1cm4gJ2ZhbHNlJztcclxuXHRcdH1cclxuXHRcdC8vIFNlIGxpbXBpYSBlbCBzdHJpbmcgY29ycmVzcG9uZGllbnRlIGFsIHZhbG9yIHBvciBjb21wYXJhclxyXG5cdFx0dmFsdWVUb0NvbXBhcmUgPSB2YWx1ZVRvQ29tcGFyZS5yZXBsYWNlKC9bXmEtekEtWjAtOSBdL2csICcnKTtcclxuXHRcdC8vIEVsIHN0cmluZyBjb3JyZXNwb25kaWVudGUgYWwgYXJyYXkgcGFzYSBhIHNlciB0aXBvIGFycmF5XHJcblx0XHR2YWx1ZVRva2VuID0gdmFsdWVUb2tlbi5zcGxpdCgnLCcpO1xyXG5cclxuXHRcdC8vIFNlIHRyYXRhIGRlIGNvbnN0YXRhciBzaSBlbCB2YWxvciBhIGNvbXBhcmFyIHNlIGVuY3VldHJhIG8gbm8gZGVudHJvXHJcblx0XHQvLyBTaSBlbCBvcGVyYWRvciBxdWUgc2UgZW5jb250cm8gPT0gcmV0dXJuYSB0cnVlIHNpIGxvIGVuY3VlbnRyYVxyXG5cdFx0bGV0IGlzVGFnRm91bmQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cdFx0c3dpdGNoIChvcGVyYXRvclswXSkge1xyXG5cdFx0XHRjYXNlICc9PSc6XHJcblx0XHRcdFx0aXNUYWdGb3VuZCA9IHZhbHVlVG9rZW4uc29tZSgodGFnKSA9PiB0YWcgPT0gdmFsdWVUb0NvbXBhcmUpO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlICc9PT0nOlxyXG5cdFx0XHRcdGlzVGFnRm91bmQgPSB2YWx1ZVRva2VuLnNvbWUoKHRhZykgPT4gdGFnID09PSB2YWx1ZVRvQ29tcGFyZSk7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgJyE9PSc6XHJcblx0XHRcdFx0aXNUYWdGb3VuZCA9IHZhbHVlVG9rZW4uc29tZSgodGFnKSA9PiB0YWcgIT09IHZhbHVlVG9Db21wYXJlKTtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSAnIT0nOlxyXG5cdFx0XHRcdGlzVGFnRm91bmQgPSB2YWx1ZVRva2VuLnNvbWUoKHRhZykgPT4gdGFnICE9IHZhbHVlVG9Db21wYXJlKTtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdH1cclxuXHRcdGV4cHJlc3Npb24gPSBpc1RhZ0ZvdW5kID8gJ3RydWUnIDogJ2ZhbHNlJztcclxuXHRcdHJldHVybiBleHByZXNzaW9uO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVHJ5IHRvIGV2YWwgdGhlIGZvcm11bGEgZGVwZW5kIG9mIHRoZSB0eXBlIG9mIGZpZWxkcy5cclxuXHQgKiBAcGFyYW0gbFN0YXRpY1Rva2VuXHJcblx0ICogQHBhcmFtIGZvcm11bGFOYW1lXHJcblx0ICogQHBhcmFtIGZvcm11bGFcclxuXHQgKi9cclxuXHR2YWxpZGF0ZUZvcm11bGEobFN0YXRpY1Rva2VuOiBhbnksIGZvcm11bGFOYW1lOiBzdHJpbmcsIGZvcm11bGE6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG5cdFx0bGV0IGV2YWxGb3JtdWxhOiBib29sZWFuID0gZmFsc2U7XHJcblx0XHQvLyBUbyB2YWxpZGF0ZSB0aGUgZm9ybXVsYSwgZmlyc3Qgb3JnYW5pemUgdGhlIGluZm8gdG8ga2V5IC0gdmFsdWUgYXJyYXlcclxuXHRcdGxldCBvYmplY3RUb2tlbnM6IGFueVtdID0gW107XHJcblx0XHRmb3IgKGxldCBwYW5lbCBvZiBsU3RhdGljVG9rZW4pIHtcclxuXHRcdFx0Zm9yIChsZXQgZ3JvdXBUb2tlbiBvZiBwYW5lbC52YWx1ZSkge1xyXG5cdFx0XHRcdGZvciAobGV0IHN0YXRpY1Rva2VuIG9mIGdyb3VwVG9rZW4udmFsdWUpIHtcclxuXHRcdFx0XHRcdGZvciAobGV0IGFycmF5VG9rZW5JbmZvIG9mIHN0YXRpY1Rva2VuKSB7XHJcblx0XHRcdFx0XHRcdG9iamVjdFRva2Vuc1thcnJheVRva2VuSW5mby5rZXldID0gYXJyYXlUb2tlbkluZm8ub2JqZWN0XHJcblx0XHRcdFx0XHRcdFx0PyBhcnJheVRva2VuSW5mby5vYmplY3QudHlwZSA9PSAnbnVtYmVyJ1xyXG5cdFx0XHRcdFx0XHRcdFx0PyAnMCdcclxuXHRcdFx0XHRcdFx0XHRcdDogJydcclxuXHRcdFx0XHRcdFx0XHQ6ICcnO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0dHJ5IHtcclxuXHRcdFx0Zm9ybXVsYSA9IHRoaXMucmVwbGFjZVRva2Vuc0Zyb21MaXN0T2JqZWN0KGZvcm11bGFOYW1lLCBmb3JtdWxhLCBvYmplY3RUb2tlbnMpO1xyXG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcclxuXHRcdFx0Ly9jb25zb2xlLmVycm9yKGVycm9yKTtcclxuXHRcdFx0dGhyb3cgZXJyb3I7XHJcblx0XHR9XHJcblx0XHRpZiAoZm9ybXVsYSAhPT0gbnVsbCkge1xyXG5cdFx0XHR0cnkge1xyXG5cdFx0XHRcdGxldCByZXN1bHQgPSBmb3JtdWxhLnN0YXJ0c1dpdGgoJ2ZpbGU6Ly8nKSA/IGZvcm11bGEgOiBldmFsKGZvcm11bGEpO1xyXG5cdFx0XHRcdGV2YWxGb3JtdWxhID0gdHJ1ZTtcclxuXHRcdFx0fSBjYXRjaCAoZSkge1xyXG5cdFx0XHRcdC8vY29uc29sZS5lcnJvcihcIkVycm9yIGV2YWx1YXRpbmcgdGhlIGZvcm11bGFcIiwgZSk7XHJcblx0XHRcdFx0dGhyb3cge1xyXG5cdFx0XHRcdFx0bWVzc2FnZTogJ0xhIGZvcm11bGEgbm8gZnVlIHBvc2libGUgZXZhbHVhcicsXHJcblx0XHRcdFx0XHR0aXRsZTogJ0FsZXJ0YSEnLFxyXG5cdFx0XHRcdFx0ZXJyb3I6IGVcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gZXZhbEZvcm11bGE7XHJcblx0fVxyXG5cclxuXHRnZXRDb25maWdDbG9uaW5nVG9rZW5NYXAob2xkUFBQOiBudW1iZXIsIG5ld1BQUDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KFxyXG5cdFx0XHR0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5jb25maWd1cmF0aW9uICsgJ3Rva2VuL2dldENvbmZpZ0Nsb25pbmdUb2tlbk1hcCcsXHJcblx0XHRcdHtcclxuXHRcdFx0XHRwYXJhbXM6IG5ldyBIdHRwUGFyYW1zKClcclxuXHRcdFx0XHRcdC5zZXQoJ29sZFBQUCcsIG9sZFBQUC50b1N0cmluZygpKVxyXG5cdFx0XHRcdFx0LnNldCgnbmV3UFBQJywgbmV3UFBQLnRvU3RyaW5nKCkpXHJcblx0XHRcdH1cclxuXHRcdCk7XHJcblx0fVxyXG59XHJcbiJdfQ==
@@ -22,8 +22,8 @@ export const VERSION = {
22
22
  },
23
23
  "suffix": "2408-gd9b6624e-dirty",
24
24
  "semverString": "0.0.18+2408.gd9b6624e",
25
- "version": "0.0.1867",
26
- "buildTimestamp": "2024-02-07T23:50:37.125Z"
25
+ "version": "0.0.1868",
26
+ "buildTimestamp": "2024-02-07T23:58:18.556Z"
27
27
  };
28
28
  /* tslint:enable */
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nLXBsaS1jb21tb25zL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJFQUEyRTtBQUMzRSxvQkFBb0I7QUFDcEIsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHO0lBQ25CLE9BQU8sRUFBRSxJQUFJO0lBQ2IsS0FBSyxFQUFFLDhCQUE4QjtJQUNyQyxNQUFNLEVBQUUsV0FBVztJQUNuQixVQUFVLEVBQUUsSUFBSTtJQUNoQixLQUFLLEVBQUUsU0FBUztJQUNoQixRQUFRLEVBQUU7UUFDTixTQUFTLEVBQUU7WUFDUCxPQUFPLEVBQUUsS0FBSztZQUNkLG1CQUFtQixFQUFFLEtBQUs7U0FDN0I7UUFDRCxPQUFPLEVBQUUsS0FBSztRQUNkLEtBQUssRUFBRSxTQUFTO1FBQ2hCLE9BQU8sRUFBRSxDQUFDO1FBQ1YsT0FBTyxFQUFFLENBQUM7UUFDVixPQUFPLEVBQUUsRUFBRTtRQUNYLFlBQVksRUFBRSxFQUFFO1FBQ2hCLE9BQU8sRUFBRSxFQUFFO1FBQ1gsU0FBUyxFQUFFLFFBQVE7S0FDdEI7SUFDRCxRQUFRLEVBQUUsc0JBQXNCO0lBQ2hDLGNBQWMsRUFBRSx1QkFBdUI7SUFDdkMsU0FBUyxFQUFFLFVBQVU7SUFDckIsZ0JBQWdCLEVBQUUsMEJBQTBCO0NBQy9DLENBQUM7QUFDRixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJTVBPUlRBTlQ6IFRISVMgRklMRSBJUyBBVVRPIEdFTkVSQVRFRCEgRE8gTk9UIE1BTlVBTExZIEVESVQgT1IgQ0hFQ0tJTiFcbi8qIHRzbGludDpkaXNhYmxlICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IHtcbiAgICBcImRpcnR5XCI6IHRydWUsXG4gICAgXCJyYXdcIjogXCJ2MC4wLjE4LTI0MDgtZ2Q5YjY2MjRlLWRpcnR5XCIsXG4gICAgXCJoYXNoXCI6IFwiZ2Q5YjY2MjRlXCIsXG4gICAgXCJkaXN0YW5jZVwiOiAyNDA4LFxuICAgIFwidGFnXCI6IFwidjAuMC4xOFwiLFxuICAgIFwic2VtdmVyXCI6IHtcbiAgICAgICAgXCJvcHRpb25zXCI6IHtcbiAgICAgICAgICAgIFwibG9vc2VcIjogZmFsc2UsXG4gICAgICAgICAgICBcImluY2x1ZGVQcmVyZWxlYXNlXCI6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwibG9vc2VcIjogZmFsc2UsXG4gICAgICAgIFwicmF3XCI6IFwidjAuMC4xOFwiLFxuICAgICAgICBcIm1ham9yXCI6IDAsXG4gICAgICAgIFwibWlub3JcIjogMCxcbiAgICAgICAgXCJwYXRjaFwiOiAxOCxcbiAgICAgICAgXCJwcmVyZWxlYXNlXCI6IFtdLFxuICAgICAgICBcImJ1aWxkXCI6IFtdLFxuICAgICAgICBcInZlcnNpb25cIjogXCIwLjAuMThcIlxuICAgIH0sXG4gICAgXCJzdWZmaXhcIjogXCIyNDA4LWdkOWI2NjI0ZS1kaXJ0eVwiLFxuICAgIFwic2VtdmVyU3RyaW5nXCI6IFwiMC4wLjE4KzI0MDguZ2Q5YjY2MjRlXCIsXG4gICAgXCJ2ZXJzaW9uXCI6IFwiMC4wLjE4NjdcIixcbiAgICBcImJ1aWxkVGltZXN0YW1wXCI6IFwiMjAyNC0wMi0wN1QyMzo1MDozNy4xMjVaXCJcbn07XG4vKiB0c2xpbnQ6ZW5hYmxlICovXG4iXX0=
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nLXBsaS1jb21tb25zL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJFQUEyRTtBQUMzRSxvQkFBb0I7QUFDcEIsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHO0lBQ25CLE9BQU8sRUFBRSxJQUFJO0lBQ2IsS0FBSyxFQUFFLDhCQUE4QjtJQUNyQyxNQUFNLEVBQUUsV0FBVztJQUNuQixVQUFVLEVBQUUsSUFBSTtJQUNoQixLQUFLLEVBQUUsU0FBUztJQUNoQixRQUFRLEVBQUU7UUFDTixTQUFTLEVBQUU7WUFDUCxPQUFPLEVBQUUsS0FBSztZQUNkLG1CQUFtQixFQUFFLEtBQUs7U0FDN0I7UUFDRCxPQUFPLEVBQUUsS0FBSztRQUNkLEtBQUssRUFBRSxTQUFTO1FBQ2hCLE9BQU8sRUFBRSxDQUFDO1FBQ1YsT0FBTyxFQUFFLENBQUM7UUFDVixPQUFPLEVBQUUsRUFBRTtRQUNYLFlBQVksRUFBRSxFQUFFO1FBQ2hCLE9BQU8sRUFBRSxFQUFFO1FBQ1gsU0FBUyxFQUFFLFFBQVE7S0FDdEI7SUFDRCxRQUFRLEVBQUUsc0JBQXNCO0lBQ2hDLGNBQWMsRUFBRSx1QkFBdUI7SUFDdkMsU0FBUyxFQUFFLFVBQVU7SUFDckIsZ0JBQWdCLEVBQUUsMEJBQTBCO0NBQy9DLENBQUM7QUFDRixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJTVBPUlRBTlQ6IFRISVMgRklMRSBJUyBBVVRPIEdFTkVSQVRFRCEgRE8gTk9UIE1BTlVBTExZIEVESVQgT1IgQ0hFQ0tJTiFcbi8qIHRzbGludDpkaXNhYmxlICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IHtcbiAgICBcImRpcnR5XCI6IHRydWUsXG4gICAgXCJyYXdcIjogXCJ2MC4wLjE4LTI0MDgtZ2Q5YjY2MjRlLWRpcnR5XCIsXG4gICAgXCJoYXNoXCI6IFwiZ2Q5YjY2MjRlXCIsXG4gICAgXCJkaXN0YW5jZVwiOiAyNDA4LFxuICAgIFwidGFnXCI6IFwidjAuMC4xOFwiLFxuICAgIFwic2VtdmVyXCI6IHtcbiAgICAgICAgXCJvcHRpb25zXCI6IHtcbiAgICAgICAgICAgIFwibG9vc2VcIjogZmFsc2UsXG4gICAgICAgICAgICBcImluY2x1ZGVQcmVyZWxlYXNlXCI6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwibG9vc2VcIjogZmFsc2UsXG4gICAgICAgIFwicmF3XCI6IFwidjAuMC4xOFwiLFxuICAgICAgICBcIm1ham9yXCI6IDAsXG4gICAgICAgIFwibWlub3JcIjogMCxcbiAgICAgICAgXCJwYXRjaFwiOiAxOCxcbiAgICAgICAgXCJwcmVyZWxlYXNlXCI6IFtdLFxuICAgICAgICBcImJ1aWxkXCI6IFtdLFxuICAgICAgICBcInZlcnNpb25cIjogXCIwLjAuMThcIlxuICAgIH0sXG4gICAgXCJzdWZmaXhcIjogXCIyNDA4LWdkOWI2NjI0ZS1kaXJ0eVwiLFxuICAgIFwic2VtdmVyU3RyaW5nXCI6IFwiMC4wLjE4KzI0MDguZ2Q5YjY2MjRlXCIsXG4gICAgXCJ2ZXJzaW9uXCI6IFwiMC4wLjE4NjhcIixcbiAgICBcImJ1aWxkVGltZXN0YW1wXCI6IFwiMjAyNC0wMi0wN1QyMzo1ODoxOC41NTZaXCJcbn07XG4vKiB0c2xpbnQ6ZW5hYmxlICovXG4iXX0=