ng-pli-commons 0.0.1364 → 0.0.1367

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.
@@ -17,41 +17,67 @@ export class TokenService {
17
17
  return new Promise((resolve, reject) => {
18
18
  // Search the dynamic form
19
19
  let lFormFieldsToken = null;
20
- this.formService.getByPromCodigo(promCodigo).subscribe((result) => {
21
- let form = result;
22
- if (!form ||
23
- !form[0] ||
24
- !form[0].promCodigo ||
25
- form[0].promCodigo != promCodigo) {
26
- // this.router.navigate(['404']);
27
- resolve(lFormFieldsToken);
28
- }
29
- lFormFieldsToken = [];
30
- for (let formComp of form) {
31
- let newComponents;
32
- let components = [];
33
- if (formComp.components) {
34
- newComponents = formComp.components;
20
+ this.formService.getByPromCodigo(promCodigo).subscribe({
21
+ next: (arrayForms) => {
22
+ if (arrayForms.length > 0) {
23
+ for (const forms of arrayForms) {
24
+ if (forms.components && forms.components.length > 0) {
25
+ for (const components of forms.components) {
26
+ if (components.components && components.components.length > 0) {
27
+ for (const component of components.components) {
28
+ if (component.columns && component.columns.length > 0) {
29
+ for (const cComponents of component.columns) {
30
+ if (cComponents.components && cComponents.components.length > 0) {
31
+ for (const iterator of cComponents.components) {
32
+ if (iterator.type === 'address') {
33
+ delete iterator.components;
34
+ }
35
+ }
36
+ }
37
+ }
38
+ }
39
+ }
40
+ }
41
+ }
42
+ }
43
+ }
35
44
  }
36
- else if (formComp.columns) {
37
- newComponents = formComp.columns;
45
+ let form = arrayForms;
46
+ if (!form ||
47
+ !form[0] ||
48
+ !form[0].promCodigo ||
49
+ form[0].promCodigo != promCodigo) {
50
+ // this.router.navigate(['404']);
51
+ resolve(lFormFieldsToken);
38
52
  }
39
- if (newComponents && UtilString.isValid(formComp.title)) {
40
- lFormFieldsToken.push({
41
- title: {
42
- key: TokenService.getKeyFormulario(formComp.title),
43
- value: formComp.title,
44
- object: formComp
45
- },
46
- value: []
47
- });
48
- lFormFieldsToken[lFormFieldsToken.length - 1].value =
49
- this.getComponenetForm(components, newComponents, null, false, null);
53
+ lFormFieldsToken = [];
54
+ for (let formComp of form) {
55
+ let newComponents;
56
+ let components = [];
57
+ if (formComp.components) {
58
+ newComponents = formComp.components;
59
+ }
60
+ else if (formComp.columns) {
61
+ newComponents = formComp.columns;
62
+ }
63
+ if (newComponents && UtilString.isValid(formComp.title)) {
64
+ lFormFieldsToken.push({
65
+ title: {
66
+ key: TokenService.getKeyFormulario(formComp.title),
67
+ value: formComp.title,
68
+ object: formComp
69
+ },
70
+ value: []
71
+ });
72
+ lFormFieldsToken[lFormFieldsToken.length - 1].value =
73
+ this.getComponenetForm(components, newComponents, null, false, null);
74
+ }
50
75
  }
76
+ resolve(lFormFieldsToken);
77
+ },
78
+ error: (error) => {
79
+ reject(error);
51
80
  }
52
- resolve(lFormFieldsToken);
53
- }, (error) => {
54
- reject(error);
55
81
  });
56
82
  });
57
83
  }
@@ -1080,4 +1106,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
1080
1106
  type: Inject,
1081
1107
  args: [LOCALE_ID]
1082
1108
  }] } });
1083
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXBsaS1jb21tb25zL3NyYy9saWIvc2VydmljZXMvdG9rZW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSTlELE9BQU8sRUFBUyxXQUFXLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBd0IsTUFBTSxhQUFhLENBQUM7Ozs7O0FBSzdGLE1BQU0sT0FBTyxZQUFZO0lBK1V4QixZQUNnQyxXQUFXLEVBQ2xDLFVBQXNCLEVBQ3RCLFdBQXdCLEVBQ3hCLFlBQTBCO1FBSEgsZ0JBQVcsR0FBWCxXQUFXLENBQUE7UUFDbEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztJQUNoQyxDQUFDO0lBRUosaUZBQWlGO0lBQ2pGLHVCQUF1QixDQUFDLFVBQVU7UUFDakMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUN0QywwQkFBMEI7WUFDMUIsSUFBSSxnQkFBZ0IsR0FBVSxJQUFJLENBQUM7WUFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUNyRCxDQUFDLE1BQVcsRUFBRSxFQUFFO2dCQUNmLElBQUksSUFBSSxHQUFRLE1BQU0sQ0FBQztnQkFDdkIsSUFDQyxDQUFDLElBQUk7b0JBQ0wsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO29CQUNSLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVU7b0JBQ25CLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FB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QUFLLEVBQUUsNkNBQTZDO0tBQ3BEO0NBQ0EsQ0FBQTtBQUVLLDBCQUFhLEdBQUc7SUFDdEIsWUFBWSxDQUFDLG9DQUFvQyxDQUFDLFdBQVcsRUFBRTtJQUMvRCxZQUFZLENBQUMsd0NBQXdDLENBQUMsV0FBVyxFQUFFO0lBQ25FLFlBQVksQ0FBQyxzQ0FBc0MsQ0FBQyxXQUFXLEVBQUU7Q0FDakUsQ0FBQzt5R0E3VVUsWUFBWSxrQkFnVmYsYUFBYTs2R0FoVlYsWUFBWSxjQUZaLE1BQU07MkZBRU4sWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEI7OzBCQWlWRSxNQUFNOzJCQUFDLGFBQWE7MEhBM1VJLE1BQU07c0JBQS9CLE1BQU07dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCwgTE9DQUxFX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBGb3JtU2VydmljZSB9IGZyb20gJy4vZm9ybS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ3VycmVuY3lQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgVG9rZW4sIEhFQURFUl9KU09OLCBVdGlsU3RyaW5nLCBEYXRlVXRpbCwgUGxpQ25mR3VhcmFudGVlVG9rZW4gfSBmcm9tICduZy1wbGktdXRpbCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUb2tlblNlcnZpY2Uge1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTSUdOX0xFVFRFUl9UQUdfSUQ6IHN0cmluZyA9ICdfc2lnbi1sZXR0ZXItdGFnLWlkJztcclxuXHJcblx0LyoqICovXHJcblx0QEluamVjdChMT0NBTEVfSUQpIHB1YmxpYyBsb2NhbGU6IHN0cmluZztcclxuXHJcblx0LyoqICovXHJcblx0c3RhdGljIFRPS0VOX0xBQkVMX0ZPUk06IHN0cmluZyA9ICdGcm0nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBUT0tFTl9MQUJFTF9CVURHRVQ6IHN0cmluZyA9ICdQcmVzdXB1ZXN0byc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFRPS0VOX0xBQkVMX0NBTENVTEFURUQ6IHN0cmluZyA9ICdDYWxjdWxhZG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBUT0tFTl9MQUJFTF9TTkFQU0hPVDogc3RyaW5nID0gJ1NuYXBzaG90JztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fTEFCRUxfU1RBVElDOiBzdHJpbmcgPSAnRXN0w6F0aWNvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fTEFCRUxfRE9DVU1FTlRPOiBzdHJpbmcgPSAnRG9jdW1lbnRvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fTEFCRUxfVEFTSzogc3RyaW5nID0gJ1RhcmVhJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fTEFCRUxfVEFTS0w6IHN0cmluZyA9ICd0YXNrJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fTEFCRUxfR1VBUkFOVEVFOiBzdHJpbmcgPSAnR2FyYW50aWEnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9UT1RBTF9BTU9VTlQ6IHN0cmluZyA9ICd0b3RhbEFtb3VudCc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX0FQUExJQ0FUSU9OX1BST0NFU1NfVE9UQUxfQU1PVU5UOiBzdHJpbmcgPSAnYXBwbGljYXRpb25Ub3RhbCc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX0FQUExJQ0FUSU9OX1BST0NFU1NfVE9UQUxfT1dOX0ZPVU5EUzogc3RyaW5nID0gJ2FwcGxpY2F0aW9uT3duRm91bmRzJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfQVBQTElDQVRJT05fUFJPQ0VTU19UT1RBTF9GSU5BTkNJTkc6IHN0cmluZyA9ICdhcHBsaWNhdGlvbkZpbmFuY2luZyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX0xFR0FMSVpBVElPTl9QUk9DRVNTX1RPVEFMX0FNT1VOVDogc3RyaW5nID0gJ2xlZ2FsaXphdGlvblRvdGFsJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfTEVHQUxJWkFUSU9OX1BST0NFU1NfVE9UQUxfT1dOX0ZPVU5EUzogc3RyaW5nID1cclxuXHRcdCdsZWdhbGl6YXRpb25Pd25Gb3VuZHMnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9MRUdBTElaQVRJT05fUFJPQ0VTU19UT1RBTF9GSU5BTkNJTkc6IHN0cmluZyA9ICdsZWdhbGl6YXRpb25GaW5hbmNpbmcnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9JTlNVUkFOQ0VfQU1PVU5UOiBzdHJpbmcgPSAnaW5zdXJhbmNlQW1vdW50JztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgTEVHQUxJWkFUSU9OX09SX0FQUExJQ0FUSU9OX1RPVEFMX0ZJTkFOQ0lORzogc3RyaW5nID1cclxuXHRcdCdsZWdsaXphdGlvbk9yQXBwbGljYXRpb25Ub3RhbEZpbmFuY2luZyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX1JFU1VNRV9DQVRFR09SWV9ZRUFSOiBzdHJpbmcgPSAncmVzdW1lQ2F0ZWdvcnlZZWFyJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfRkVDSEFfRklOQU5DSU5HX1NUQVJUOiBzdHJpbmcgPSAnZmVjaGFJbmljaW9GaW5hbmNpYWNpb24nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9GRUNIQV9GSU5BTkNJTkdfRU5EOiBzdHJpbmcgPSAnZmVjaGFGaW5GaW5hbmNpYWNpb24nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0RVUkFUSU9OX1NUVURJRVM6IHN0cmluZyA9ICdkdXJhY2lvbkVzdHVkaW9zJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19GSU5BTkNJTkdfRFVSQVRJT046IHN0cmluZyA9ICdkdXJhY2lvbkZpbmFuY2lhY2lvbic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX0NPRElHT19WRVJJRklDQUNJT046IHN0cmluZyA9ICdjb2RpZ29WZXJpZmljYWNpb24nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9BX1FVSUVOX1ZBX0RJUklHSURPOiBzdHJpbmcgPSAnYVF1aWVuVmFEaXJpZ2lkbyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX0ZFQ0hBX0FDVFVBTDogc3RyaW5nID0gJ2ZlY2hhQWN0dWFsJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfU1RBVFVTX05BTUU6IHN0cmluZyA9ICdzdGF0dXNOYW1lJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfUEFUUk9DSU5BRE9SOiBzdHJpbmcgPSAncGxpUGF0cm9jaW5hZG9yJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfUEFUUk9DSU5BRE9SX0NPUlRPOiBzdHJpbmcgPSAncGxpUGF0cm9jaW5hZG9yQ29ydG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9QUk9HUkFNQTogc3RyaW5nID0gJ3BsaVByb2dyYW1hJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfUFJPR1JBTUFfQ09SVE86IHN0cmluZyA9ICdwbGlQcm9ncmFtYUNvcnRvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfUFJPTU9DSU9OOiBzdHJpbmcgPSAncGxpUHJvbW9jaW9uJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfUFJPTU9DSU9OX0NPUlRPOiBzdHJpbmcgPSAncGxpUHJvbW9jaW9uQ29ydG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9BTklPX1BST01PQ0lPTjogc3RyaW5nID0gJ2FuaW9Qcm9tb2Npb24nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9JU09fTU9ORURBX0JBU0U6IHN0cmluZyA9ICdpc29Nb25lZGFCYXNlJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfU0FMVURPX0NPTVBMRU1FTlRBUklPOiBzdHJpbmcgPSAnc2FsdWRvQ29tcGxlbWVudGFyaW8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9OVU1CRVJfQVBQTElDQVRJT046IHN0cmluZyA9ICdudW1lcm9SYWRpY2Fkbyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX1VTRVJfSU5JVElBTFM6IHN0cmluZyA9ICdpbmljaWFsZXNVc3VhcmlvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfTEVUVEVSX1NJR046IHN0cmluZyA9ICdmaXJtYUNhcnRhJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT01NSVRURUVfTkFNRTogc3RyaW5nID0gJ2NvbWl0ZU5vbWJyZSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09NTUlUVEVFX1NFR01FTlRBVElPTjogc3RyaW5nID0gJ2NvbWl0ZVNlZ21lbnRhY2lvbic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09NTUlUVEVFX0FHR1JVUEFUSU9OOiBzdHJpbmcgPSAnY29taXRlQWdydXBhY2lvbic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09NTUlUVEVFX0NVVExJTkVfREFURTogc3RyaW5nID0gJ2NvbWl0ZUZlY2hhTGluZWEnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPTkZJUk1fTEVHQUxJWkFUSU9OX0FQUE9JTlRNRU5UOiBzdHJpbmcgPSAnY29uZmlybWFjaW9uQ2l0YSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfRE9DVU1FTlRfTlVNQkVSOiBzdHJpbmcgPSAnbnVtZXJvRG9jdW1lbnRvQ29kZXVkb3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPREVCVE9SX0RPQ1VNRU5UX1RZUEU6IHN0cmluZyA9ICd0aXBvRG9jdW1lbnRvQ29kZXVkb3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPREVCVE9SX05BTUU6IHN0cmluZyA9ICdub21icmVzQ29kZXVkb3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPREVCVE9SX0xBU1ROQU1FOiBzdHJpbmcgPSAnYXBlbGxpZG9zQ29kZXVkb3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX1RZUEVfQ09ERUJUT1I6IHN0cmluZyA9ICd0aXBvUGVyc29uYUNvZGV1ZG9yJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT0RFQlRPUl9SRVZJRVdFUjogc3RyaW5nID0gJ3Jldmlzb3JDb2RldWRvcmVzJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19UT1RBTF9XRUlHSFRFRDogc3RyaW5nID0gJ3BvbmRlcmFkb1RvdGFsJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT05TRUNVVElWRV9HVUFSQU5URUU6IHN0cmluZyA9ICdjb25zZWN1dGl2b0dhcmFudGlhcyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfREFZOiBzdHJpbmcgPSAnZGlhJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19NT05USDogc3RyaW5nID0gJ21lcyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfWUVBUjogc3RyaW5nID0gJ2Fubyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfUkVQUkVTRU5UQVRJVkVfTkFNRTogc3RyaW5nID0gJ25vbWJyZXNSZXByZXNlbnRhbnRlJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19SRVBSRVNFTlRBVElWRV9MQVNUTkFNRTogc3RyaW5nID0gJ2FwZWxsaWRvc1JlcHJlc2VudGFudGUnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX1JFUFJFU0VOVEFUSVZFX0RPQ1VNRU5UX05VTUJFUjogc3RyaW5nID0gJ2NlZHVsYVJlcHJlc2VudGFudGUnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NJVFlfU0lHTkFUVVJFOiBzdHJpbmcgPSAnY2l1ZGFkRmlybWEnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX1VTRVJfVFlQRV9DUkVESVRfU1RVRFk6IHN0cmluZyA9ICd0aXBvVXN1YXJpb0VzdHVkaW9DcmVkaXRvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT0RFQlRPUl9WRUhJQ0xFU19RVUFOVElUWTogc3RyaW5nID0gJ2NhbnRpZGFkVmVoaWN1bG9zQ29kZXVkb3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPREVCVE9SX0FTU0VUU19RVUFOVElUWTogc3RyaW5nID0gJ2NhbnRpZGFkQmllbmVzQ29kZXVkb3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0xJU1RfQ09ERUJUT1JTOiBzdHJpbmcgPSAnbGlzdGFDb2RldWRvcmVzJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOX0lOR1JFU09fQ09ERVVET1JfSEFCRUFTX0RBVEE6IHN0cmluZyA9ICdpbmdyZXNvQ29kZXVkb3JIYWJlYXNEYXRhJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOX1BERl9SRVNVTUVOX0NPREVVRE9SOiBzdHJpbmcgPSAncGRmUmVzdW1lbkNvZGV1ZG9yJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19RVUFOVElUWV9WRUhJQ0xFX0JFTkVGSUNJQVJZOiBzdHJpbmcgPSAnY2FudGlkYWRWZWhpY3Vsb3NTZWxlY2Npb25hZG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX1FVQU5USVRZX0FTU0VUU19CRU5FRklDSUFSWTogc3RyaW5nID0gJ2NhbnRpZGFkQmllbmVzU2VsZWNjaW9uYWRvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19CRU5fQ09ESUdPOiBzdHJpbmcgPSAnYmVuQ29kaWdvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOX0NSRURJVF9SRVZJRVdFUl9PQlNFUlZBVElPTlNfQ09ERUJUT1I6IHN0cmluZyA9XHJcblx0XHQnY3JlZGl0UmV2aWV3ZXJPYnNlcnZhdGlvbnNDb2RlYnRvcic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTl9DUkVESVRfUkVWSUVXRVJfT0JTRVJWQVRJT05TOiBzdHJpbmcgPSAnY3JlZGl0UmV2aWV3ZXJPYnNlcnZhdGlvbnMnO1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TOiBhbnlbXSA9IFtcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfUEFUUk9DSU5BRE9SLFxyXG5cdFx0XHRsYWJlbDogJ1BhdHJvY2luYWRvcidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX1BST0dSQU1BLFxyXG5cdFx0XHRsYWJlbDogJ1Byb2dyYW1hJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfUFJPTU9DSU9OLFxyXG5cdFx0XHRsYWJlbDogJ1Byb21vY2nDs24nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9BTklPX1BST01PQ0lPTixcclxuXHRcdFx0bGFiZWw6ICdBw7FvIHByb21vY2nDs24nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9JU09fTU9ORURBX0JBU0UsXHJcblx0XHRcdGxhYmVsOiAnSVNPIE1vbmVkYSBiYXNlJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfU0FMVURPX0NPTVBMRU1FTlRBUklPLFxyXG5cdFx0XHRsYWJlbDogJ1NhbHVkbyBjb21wbGVtZW50YXJpbydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX0NPRElHT19WRVJJRklDQUNJT04sXHJcblx0XHRcdGxhYmVsOiAnQ8OzZGlnbyBkZSB2ZXJpZmljYWNpw7NuJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfQV9RVUlFTl9WQV9ESVJJR0lETyxcclxuXHRcdFx0bGFiZWw6ICdBIHF1aWVuIHZhIGRpcmlnaWRvJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfRkVDSEFfQUNUVUFMLFxyXG5cdFx0XHRsYWJlbDogJ0ZlY2hhIGFjdHVhbCdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX1NUQVRVU19OQU1FLFxyXG5cdFx0XHRsYWJlbDogJ0VzdGFkbyBhY3R1YWwnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9OVU1CRVJfQVBQTElDQVRJT04sXHJcblx0XHRcdGxhYmVsOiAnTsO6bWVybyByYWRpY2FkbydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX1VTRVJfSU5JVElBTFMsXHJcblx0XHRcdGxhYmVsOiAnSW5pY2lhbGVzIGRlIHVzdWFyaW8nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9MRVRURVJfU0lHTixcclxuXHRcdFx0bGFiZWw6ICdGaXJtYSBkZSBjYXJ0YXMnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPTU1JVFRFRV9OQU1FLFxyXG5cdFx0XHRsYWJlbDogJ05vbWJyZSBjb21pdMOpJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT01NSVRURUVfU0VHTUVOVEFUSU9OLFxyXG5cdFx0XHRsYWJlbDogJ1NlZ21lbnRhY2nDs24gY29taXTDqSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09NTUlUVEVFX0FHR1JVUEFUSU9OLFxyXG5cdFx0XHRsYWJlbDogJ0FncnVwYWNpw7NuIGNvbWl0w6knXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPTU1JVFRFRV9DVVRMSU5FX0RBVEUsXHJcblx0XHRcdGxhYmVsOiAnRmVjaGEgTMOtbmVhIGRlIGNvcnRlJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT05GSVJNX0xFR0FMSVpBVElPTl9BUFBPSU5UTUVOVCxcclxuXHRcdFx0bGFiZWw6ICdDb25maXJtYWNpw7NuIGRlIGNpdGEnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPREVCVE9SX0RPQ1VNRU5UX05VTUJFUixcclxuXHRcdFx0bGFiZWw6ICdOw7ptZXJvIGRlIGRvY3VtZW50byBkZSBjb2RldWRvcidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfRE9DVU1FTlRfVFlQRSxcclxuXHRcdFx0bGFiZWw6ICdUaXBvIGRlIGRvY3VtZW50byBkZSBjb2RldWRvcidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfTkFNRSxcclxuXHRcdFx0bGFiZWw6ICdOb21icmVzIGNvZGV1ZG9yJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT0RFQlRPUl9MQVNUTkFNRSxcclxuXHRcdFx0bGFiZWw6ICdBcGVsbGlkb3MgY29kZXVkb3InXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1RZUEVfQ09ERUJUT1IsXHJcblx0XHRcdGxhYmVsOiAnVGlwbyBkZSBwZXJzb25hIGNvZGV1ZG9yJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT0RFQlRPUl9WRUhJQ0xFU19RVUFOVElUWSxcclxuXHRcdFx0bGFiZWw6ICdDYW50aWRhZCB2ZWhpY3Vsb3MgY29kZXVkb3InXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPREVCVE9SX0FTU0VUU19RVUFOVElUWSxcclxuXHRcdFx0bGFiZWw6ICdDYW50aWRhZCBiaWVuZXMgY29kZXVkb3InXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPREVCVE9SX1JFVklFV0VSLFxyXG5cdFx0XHRsYWJlbDogJ1Jldmlzb3IgZGUgY29kZXVkb3JlcydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfVE9UQUxfV0VJR0hURUQsXHJcblx0XHRcdGxhYmVsOiAnUG9uZGVyYWRvIHRvdGFsJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT05TRUNVVElWRV9HVUFSQU5URUUsXHJcblx0XHRcdGxhYmVsOiAnQ29uc2VjdXRpdm8gZGUgZ2FyYW50aWFzJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19SRVBSRVNFTlRBVElWRV9OQU1FLFxyXG5cdFx0XHRsYWJlbDogJ05vbWJyZXMgcmVwcmVzZW50YW50ZSBsZWdhbCdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfUkVQUkVTRU5UQVRJVkVfTEFTVE5BTUUsXHJcblx0XHRcdGxhYmVsOiAnQXBlbGxpZG9zIHJlcHJlc2VudGFudGUgbGVnYWwnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1JFUFJFU0VOVEFUSVZFX0RPQ1VNRU5UX05VTUJFUixcclxuXHRcdFx0bGFiZWw6ICdDZWR1bGEgcmVwcmVzZW50YW50ZSBsZWdhbCdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfVVNFUl9UWVBFX0NSRURJVF9TVFVEWSxcclxuXHRcdFx0bGFiZWw6ICdUaXBvIHVzdWFyaW8gZXN0dWRpbyBjcsOpZGl0bydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfREFZLFxyXG5cdFx0XHRsYWJlbDogJ0RpYSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfTU9OVEgsXHJcblx0XHRcdGxhYmVsOiAnTWVzJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19ZRUFSLFxyXG5cdFx0XHRsYWJlbDogJ0HDsW8nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NJVFlfU0lHTkFUVVJFLFxyXG5cdFx0XHRsYWJlbDogJ0NpdWRhZCBkZSBsYSBmaXJtYSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfTElTVF9DT0RFQlRPUlMsXHJcblx0XHRcdGxhYmVsOiAnTGlzdGEgZGUgY29kZXVkb3JlcydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTl9JTkdSRVNPX0NPREVVRE9SX0hBQkVBU19EQVRBLFxyXG5cdFx0XHRsYWJlbDogJ0luZ3Jlc28gQ29kZXVkb3IgSGFiZWFzIERhdGEnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5fUERGX1JFU1VNRU5fQ09ERVVET1IsXHJcblx0XHRcdGxhYmVsOiAnUGRmIGNvZGV1ZG9yJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19RVUFOVElUWV9WRUhJQ0xFX0JFTkVGSUNJQVJZLFxyXG5cdFx0XHRsYWJlbDogJ0NhbnRpZGFkIGRlIHZlaMOtY3Vsb3MgZGVsIHNlbGVjY2lvbmFkbydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfUVVBTlRJVFlfQVNTRVRTX0JFTkVGSUNJQVJZLFxyXG5cdFx0XHRsYWJlbDogJ0NhbnRpZGFkIGJpZW5lcyBkZWwgc2VsZWNjaW9uYWRvJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19CRU5fQ09ESUdPLFxyXG5cdFx0XHRsYWJlbDogJ0PDs2RpZ28gYmVuZWZpY2lhcmlvJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOX0NSRURJVF9SRVZJRVdFUl9PQlNFUlZBVElPTlMsXHJcblx0XHRcdGxhYmVsOiAnT2JzZXJ2YWNpb25lcyByZXZpc29yIGZpbmFuY2llcm8gc2VsZWNjaW9uYWRvJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOX0NSRURJVF9SRVZJRVdFUl9PQlNFUlZBVElPTlNfQ09ERUJUT1IsXHJcblx0XHRcdGxhYmVsOiAnT2JzZXJ2YWNpb25lcyByZXZpc29yIGZpbmFuY2llcm8gY29kZXVkb3JlcydcclxuXHRcdH1cclxuXHRdO1xyXG5cclxuXHRzdGF0aWMgZXhjbHVkZWRUb2tlbiA9IFtcclxuXHRcdFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1VTRVJfVFlQRV9DUkVESVRfU1RVRFkudG9Mb3dlckNhc2UoKSxcclxuXHRcdFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPREVCVE9SX1ZFSElDTEVTX1FVQU5USVRZLnRvTG93ZXJDYXNlKCksXHJcblx0XHRUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT0RFQlRPUl9BU1NFVFNfUVVBTlRJVFkudG9Mb3dlckNhc2UoKVxyXG5cdF07XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0QEluamVjdCgnZW52aXJvbm1lbnQnKSBwcml2YXRlIGVudmlyb25tZW50LFxyXG5cdFx0cHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxyXG5cdFx0cHJpdmF0ZSBmb3JtU2VydmljZTogRm9ybVNlcnZpY2UsXHJcblx0XHRwcml2YXRlIGN1cnJlbmN5UGlwZTogQ3VycmVuY3lQaXBlXHJcblx0KSB7fVxyXG5cclxuXHQvKiogVGhpcyBwcm9taXNlIGFsbG93cyB0byBleGVjdXRlIGEgZnVuY3Rpb24gd2hlbiBjb25zdWx0aW5nIHRoZSBmb3JtIGZpZWxkcy4gKi9cclxuXHRnZXRGb3JtRmllbGRzQnlQcm9tQ29kZShwcm9tQ29kaWdvKTogUHJvbWlzZTxhbnlbXT4ge1xyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0Ly8gU2VhcmNoIHRoZSBkeW5hbWljIGZvcm1cclxuXHRcdFx0bGV0IGxGb3JtRmllbGRzVG9rZW46IGFueVtdID0gbnVsbDtcclxuXHRcdFx0dGhpcy5mb3JtU2VydmljZS5nZXRCeVByb21Db2RpZ28ocHJvbUNvZGlnbykuc3Vic2NyaWJlKFxyXG5cdFx0XHRcdChyZXN1bHQ6IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0bGV0IGZvcm06IGFueSA9IHJlc3VsdDtcclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0IWZvcm0gfHxcclxuXHRcdFx0XHRcdFx0IWZvcm1bMF0gfHxcclxuXHRcdFx0XHRcdFx0IWZvcm1bMF0ucHJvbUNvZGlnbyB8fFxyXG5cdFx0XHRcdFx0XHRmb3JtWzBdLnByb21Db2RpZ28gIT0gcHJvbUNvZGlnb1xyXG5cdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdC8vIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnNDA0J10pO1xyXG5cdFx0XHRcdFx0XHRyZXNvbHZlKGxGb3JtRmllbGRzVG9rZW4pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbiA9IFtdO1xyXG5cdFx0XHRcdFx0Zm9yIChsZXQgZm9ybUNvbXAgb2YgZm9ybSkge1xyXG5cdFx0XHRcdFx0XHRsZXQgbmV3Q29tcG9uZW50czogYW55O1xyXG5cdFx0XHRcdFx0XHRsZXQgY29tcG9uZW50czogYW55W10gPSBbXTtcclxuXHRcdFx0XHRcdFx0aWYgKGZvcm1Db21wLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29tcG9uZW50cztcclxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChmb3JtQ29tcC5jb2x1bW5zKSB7XHJcblx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbHVtbnM7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0aWYgKG5ld0NvbXBvbmVudHMgJiYgVXRpbFN0cmluZy5pc1ZhbGlkKGZvcm1Db21wLnRpdGxlKSkge1xyXG5cdFx0XHRcdFx0XHRcdGxGb3JtRmllbGRzVG9rZW4ucHVzaCh7XHJcblx0XHRcdFx0XHRcdFx0XHR0aXRsZToge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRrZXk6IFRva2VuU2VydmljZS5nZXRLZXlGb3JtdWxhcmlvKGZvcm1Db21wLnRpdGxlKSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZvcm1Db21wLnRpdGxlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRvYmplY3Q6IGZvcm1Db21wXHJcblx0XHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IFtdXHJcblx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbltsRm9ybUZpZWxkc1Rva2VuLmxlbmd0aCAtIDFdLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZ2V0Q29tcG9uZW5ldEZvcm0oXHJcblx0XHRcdFx0XHRcdFx0XHRcdGNvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG5ld0NvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG51bGwsXHJcblx0XHRcdFx0XHRcdFx0XHRcdGZhbHNlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRudWxsXHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRyZXNvbHZlKGxGb3JtRmllbGRzVG9rZW4pO1xyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0KGVycm9yKSA9PiB7XHJcblx0XHRcdFx0XHRyZWplY3QoZXJyb3IpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0Z2V0Rm9ybUZpZWxkc0J5Rm9ybUlkKGZvcm1JZDogc3RyaW5nKTogUHJvbWlzZTxhbnlbXT4ge1xyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0Ly8gU2VhcmNoIHRoZSBkeW5hbWljIGZvcm1cclxuXHRcdFx0bGV0IGxGb3JtRmllbGRzVG9rZW46IGFueVtdID0gbnVsbDtcclxuXHRcdFx0dGhpcy5mb3JtU2VydmljZS5nZXRCeUlkKGZvcm1JZCkuc3Vic2NyaWJlKFxyXG5cdFx0XHRcdChyZXN1bHQ6IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0bGV0IGZvcm06IGFueSA9IHJlc3VsdDtcclxuXHRcdFx0XHRcdGlmICghZm9ybSB8fCAhZm9ybVswXSkge1xyXG5cdFx0XHRcdFx0XHRyZXNvbHZlKGxGb3JtRmllbGRzVG9rZW4pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbiA9IFtdO1xyXG5cdFx0XHRcdFx0Zm9yIChsZXQgZm9ybUNvbXAgb2YgZm9ybSkge1xyXG5cdFx0XHRcdFx0XHRsZXQgbmV3Q29tcG9uZW50czogYW55O1xyXG5cdFx0XHRcdFx0XHRsZXQgY29tcG9uZW50czogYW55W10gPSBbXTtcclxuXHRcdFx0XHRcdFx0aWYgKGZvcm1Db21wLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29tcG9uZW50cztcclxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChmb3JtQ29tcC5jb2x1bW5zKSB7XHJcblx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbHVtbnM7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0aWYgKG5ld0NvbXBvbmVudHMgJiYgVXRpbFN0cmluZy5pc1ZhbGlkKGZvcm1Db21wLnRpdGxlKSkge1xyXG5cdFx0XHRcdFx0XHRcdGxGb3JtRmllbGRzVG9rZW4ucHVzaCh7XHJcblx0XHRcdFx0XHRcdFx0XHR0aXRsZToge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRrZXk6IFRva2VuU2VydmljZS5nZXRLZXlGb3JtdWxhcmlvKGZvcm1Db21wLnRpdGxlKSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZvcm1Db21wLnRpdGxlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRvYmplY3Q6IGZvcm1Db21wXHJcblx0XHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IFtdXHJcblx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbltsRm9ybUZpZWxkc1Rva2VuLmxlbmd0aCAtIDFdLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZ2V0Q29tcG9uZW5ldEZvcm0oXHJcblx0XHRcdFx0XHRcdFx0XHRcdGNvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG5ld0NvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG51bGwsXHJcblx0XHRcdFx0XHRcdFx0XHRcdGZhbHNlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRudWxsXHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRyZXNvbHZlKGxGb3JtRmllbGRzVG9rZW4pO1xyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0KGVycm9yKSA9PiB7XHJcblx0XHRcdFx0XHRyZWplY3QoZXJyb3IpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqIFRoaXMgcHJvbWlzZSBhbGxvd3MgdG8gZXhlY3V0ZSBhIGZ1bmN0aW9uIHdoZW4gY29uc3VsdGluZyB0aGUgZm9ybSBmaWVsZHMuICovXHJcblx0Z2V0Rm9ybVBhbmVsc0J5UHJvbUNvZGUocHJvbUNvZGlnbyk6IFByb21pc2U8YW55W10+IHtcclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdC8vIFNlYXJjaCB0aGUgZHluYW1pYyBmb3JtXHJcblx0XHRcdGxldCBsRm9ybVBhbm5lbHNUb2tlbjogYW55W10gPSBudWxsO1xyXG5cdFx0XHR0aGlzLmZvcm1TZXJ2aWNlLmdldEJ5UHJvbUNvZGlnbyhwcm9tQ29kaWdvKS5zdWJzY3JpYmUoXHJcblx0XHRcdFx0KHJlc3VsdDogYW55KSA9PiB7XHJcblx0XHRcdFx0XHRsZXQgZm9ybTogYW55ID0gcmVzdWx0O1xyXG5cdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHQhZm9ybSB8fFxyXG5cdFx0XHRcdFx0XHQhZm9ybVswXSB8fFxyXG5cdFx0XHRcdFx0XHQhZm9ybVswXS5wcm9tQ29kaWdvIHx8XHJcblx0XHRcdFx0XHRcdGZvcm1bMF0ucHJvbUNvZGlnbyAhPSBwcm9tQ29kaWdvXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0Ly8gdGhpcy5yb3V0ZXIubmF2aWdhdGUoWyc0MDQnXSk7XHJcblx0XHRcdFx0XHRcdHJlc29sdmUobEZvcm1QYW5uZWxzVG9rZW4pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0bEZvcm1QYW5uZWxzVG9rZW4gPSBbXTtcclxuXHRcdFx0XHRcdGZvciAobGV0IGZvcm1Db21wIG9mIGZvcm0pIHtcclxuXHRcdFx0XHRcdFx0bGV0IG5ld0NvbXBvbmVudHM6IGFueTtcclxuXHRcdFx0XHRcdFx0bGV0IGNvbXBvbmVudHM6IGFueVtdID0gW107XHJcblx0XHRcdFx0XHRcdGlmIChmb3JtQ29tcC5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbXBvbmVudHM7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb2x1bW5zO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdGlmIChuZXdDb21wb25lbnRzICYmIFV0aWxTdHJpbmcuaXNWYWxpZChmb3JtQ29tcC50aXRsZSkpIHtcclxuXHRcdFx0XHRcdFx0XHRsRm9ybVBhbm5lbHNUb2tlbi5wdXNoKHtcclxuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLmdldEtleUZvcm11bGFyaW8oZm9ybUNvbXAudGl0bGUpLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogZm9ybUNvbXAudGl0bGUsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG9iamVjdDogZm9ybUNvbXBcclxuXHRcdFx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogW11cclxuXHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0XHRsRm9ybVBhbm5lbHNUb2tlbltsRm9ybVBhbm5lbHNUb2tlbi5sZW5ndGggLSAxXS52YWx1ZSA9XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmdldFBhbmVsQ29tcG9uZW5ldChjb21wb25lbnRzLCBuZXdDb21wb25lbnRzLCBudWxsKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0cmVzb2x2ZShsRm9ybVBhbm5lbHNUb2tlbik7XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHQoZXJyb3IpID0+IHtcclxuXHRcdFx0XHRcdHJlamVjdChlcnJvcik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBIHJlY3Vyc2l2ZSBtZXRob2QgdG8gZ2V0IGFsbCB0aGUgaW5mb3JtYXRpb24gb2YgdGhlIGVkaXRHcmlkIGR5bmFtaWMgZm9ybVxyXG5cdCAqIEBwYXJhbSBjb21wb25lbnRzXHJcblx0ICogQHBhcmFtIGZvcm1cclxuXHQgKi9cclxuXHRnZXRQYW5lbENvbXBvbmVuZXQoY29tcG9uZW50czogYW55W10sIGZvcm06IGFueSwgcGFuZWxOYW1lOiBzdHJpbmcpOiBhbnlbXSB7XHJcblx0XHRmb3IgKGxldCBmb3JtQ29tcCBvZiBmb3JtKSB7XHJcblx0XHRcdGlmIChmb3JtQ29tcC50eXBlID09PSAncGFuZWwnKSB7XHJcblx0XHRcdFx0Y29tcG9uZW50cy5wdXNoKGZvcm1Db21wKTtcclxuXHRcdFx0fSBlbHNlIGlmIChmb3JtQ29tcC5jb21wb25lbnRzIHx8IGZvcm1Db21wLmNvbHVtbnMpIHtcclxuXHRcdFx0XHRsZXQgbmV3Q29tcG9uZW50czogYW55O1xyXG5cdFx0XHRcdGlmIChmb3JtQ29tcC5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29tcG9uZW50cztcclxuXHRcdFx0XHR9IGVsc2UgaWYgKGZvcm1Db21wLmNvbHVtbnMpIHtcclxuXHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb2x1bW5zO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRjb21wb25lbnRzID0gdGhpcy5nZXRQYW5lbENvbXBvbmVuZXQoY29tcG9uZW50cywgbmV3Q29tcG9uZW50cywgcGFuZWxOYW1lKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGNvbXBvbmVudHM7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBIHJlY3Vyc2l2ZSBtZXRob2QgdG8gZ2V0IGFsbCB0aGUgaW5mb3JtYXRpb24gb2YgdGhlIGNvbXBvbmVudHMgYSBjb2x1bW5zIG9mIHRoZSBkeW5hbWljIGZvcm1cclxuXHQgKiBAcGFyYW0gY29tcG9uZW50c1xyXG5cdCAqIEBwYXJhbSBmb3JtXHJcblx0ICovXHJcblx0Z2V0Q29tcG9uZW5ldEZvcm0oXHJcblx0XHRjb21wb25lbnRzOiBhbnlbXSxcclxuXHRcdGZvcm06IGFueSxcclxuXHRcdHBhbmVsTmFtZTogc3RyaW5nLFxyXG5cdFx0ZWRpdGdyaWQ6IGJvb2xlYW4sXHJcblx0XHRlZGl0R3JpZEtleTogc3RyaW5nXHJcblx0KTogYW55W10ge1xyXG5cdFx0Zm9yIChsZXQgZm9ybUNvbXAgb2YgZm9ybSkge1xyXG5cdFx0XHRpZiAoZm9ybUNvbXAuY29tcG9uZW50cyB8fCBmb3JtQ29tcC5jb2x1bW5zKSB7XHJcblx0XHRcdFx0bGV0IG5ld0NvbXBvbmVudHM6IGFueTtcclxuXHRcdFx0XHRpZiAoZm9ybUNvbXAuY29tcG9uZW50cykge1xyXG5cdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbXBvbmVudHM7XHJcblx0XHRcdFx0XHRpZiAoZm9ybUNvbXAudHlwZSA9PT0gJ2VkaXRncmlkJykge1xyXG5cdFx0XHRcdFx0XHRlZGl0Z3JpZCA9IHRydWU7XHJcblx0XHRcdFx0XHRcdGVkaXRHcmlkS2V5ID0gZm9ybUNvbXAua2V5O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gZWxzZSBpZiAoZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbHVtbnM7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChmb3JtQ29tcC50eXBlICYmIGZvcm1Db21wLnR5cGUgPT09ICdwYW5lbCcpIHtcclxuXHRcdFx0XHRcdHBhbmVsTmFtZSA9IGZvcm1Db21wLnRpdGxlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRjb21wb25lbnRzID0gdGhpcy5nZXRDb21wb25lbmV0Rm9ybShcclxuXHRcdFx0XHRcdGNvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRuZXdDb21wb25lbnRzLFxyXG5cdFx0XHRcdFx0cGFuZWxOYW1lLFxyXG5cdFx0XHRcdFx0ZWRpdGdyaWQsXHJcblx0XHRcdFx0XHRlZGl0R3JpZEtleVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0Zm9ybUNvbXAucGFuZWxOYW1lID0gcGFuZWxOYW1lO1xyXG5cdFx0XHRcdGZvcm1Db21wLmVkaXRncmlkID0gZWRpdGdyaWQ7XHJcblx0XHRcdFx0Zm9ybUNvbXAuZWRpdEdyaWRLZXkgPSBlZGl0R3JpZEtleTtcclxuXHRcdFx0XHRjb21wb25lbnRzLnB1c2goZm9ybUNvbXApO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gY29tcG9uZW50cztcclxuXHR9XHJcblxyXG5cdC8qKiBUaGlzIHByb21pc2UgYWxsb3dzIHRvIGV4ZWN1dGUgYSBmdW5jdGlvbiB3aGVuIGNvbnN1bHRpbmcgdGhlIGZvcm0gZmllbGRzLiAqL1xyXG5cdGdldEZvcm1FZGl0R3JpZEZpZWxkc0J5UHJvbUNvZGUocHJvbUNvZGlnbyk6IFByb21pc2U8YW55W10+IHtcclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdC8vIFNlYXJjaCB0aGUgZHluYW1pYyBmb3JtXHJcblx0XHRcdGxldCBsRm9ybUZpZWxkc1Rva2VuOiBhbnlbXSA9IG51bGw7XHJcblx0XHRcdHRoaXMuZm9ybVNlcnZpY2UuZ2V0QnlQcm9tQ29kaWdvKHByb21Db2RpZ28pLnN1YnNjcmliZShcclxuXHRcdFx0XHQocmVzdWx0OiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdGxldCBmb3JtOiBhbnkgPSByZXN1bHQ7XHJcblx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdCFmb3JtIHx8XHJcblx0XHRcdFx0XHRcdCFmb3JtWzBdIHx8XHJcblx0XHRcdFx0XHRcdCFmb3JtWzBdLnByb21Db2RpZ28gfHxcclxuXHRcdFx0XHRcdFx0Zm9ybVswXS5wcm9tQ29kaWdvICE9IHByb21Db2RpZ29cclxuXHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHQvLyB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJzQwNCddKTtcclxuXHRcdFx0XHRcdFx0cmVzb2x2ZShsRm9ybUZpZWxkc1Rva2VuKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGxGb3JtRmllbGRzVG9rZW4gPSBbXTtcclxuXHRcdFx0XHRcdGZvciAobGV0IGZvcm1Db21wIG9mIGZvcm0pIHtcclxuXHRcdFx0XHRcdFx0bGV0IG5ld0NvbXBvbmVudHM6IGFueTtcclxuXHRcdFx0XHRcdFx0bGV0IGNvbXBvbmVudHM6IGFueVtdID0gW107XHJcblx0XHRcdFx0XHRcdGlmIChmb3JtQ29tcC5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbXBvbmVudHM7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb2x1bW5zO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdGlmIChuZXdDb21wb25lbnRzICYmIFV0aWxTdHJpbmcuaXNWYWxpZChmb3JtQ29tcC50aXRsZSkpIHtcclxuXHRcdFx0XHRcdFx0XHRsRm9ybUZpZWxkc1Rva2VuLnB1c2goe1xyXG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuZ2V0S2V5Rm9ybXVsYXJpbyhmb3JtQ29tcC50aXRsZSksXHJcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBmb3JtQ29tcC50aXRsZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0b2JqZWN0OiBmb3JtQ29tcFxyXG5cdFx0XHRcdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBbXVxyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdGxGb3JtRmllbGRzVG9rZW5bbEZvcm1GaWVsZHNUb2tlbi5sZW5ndGggLSAxXS52YWx1ZSA9XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmdldEVkaXRHcmlkQ29tcG9uZW5ldChjb21wb25lbnRzLCBuZXdDb21wb25lbnRzLCBudWxsKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0cmVzb2x2ZShsRm9ybUZpZWxkc1Rva2VuKTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdFx0cmVqZWN0KGVycm9yKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdCk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVjdXJzaXZlIG1ldGhvZCB0byBnZXQgYWxsIHRoZSBpbmZvcm1hdGlvbiBvZiB0aGUgZWRpdEdyaWQgZHluYW1pYyBmb3JtXHJcblx0ICogQHBhcmFtIGNvbXBvbmVudHNcclxuXHQgKiBAcGFyYW0gZm9ybVxyXG5cdCAqL1xyXG5cdGdldEVkaXRHcmlkQ29tcG9uZW5ldChjb21wb25lbnRzOiBhbnlbXSwgZm9ybTogYW55LCBwYW5lbE5hbWU6IHN0cmluZyk6IGFueVtdIHtcclxuXHRcdGZvciAobGV0IGZvcm1Db21wIG9mIGZvcm0pIHtcclxuXHRcdFx0aWYgKGZvcm1Db21wLnR5cGUgPT09ICdlZGl0Z3JpZCcpIHtcclxuXHRcdFx0XHRmb3JtQ29tcC5wYW5lbE5hbWUgPSBwYW5lbE5hbWU7XHJcblx0XHRcdFx0Y29tcG9uZW50cy5wdXNoKGZvcm1Db21wKTtcclxuXHRcdFx0fSBlbHNlIGlmIChmb3JtQ29tcC5jb21wb25lbnRzIHx8IGZvcm1Db21wLmNvbHVtbnMpIHtcclxuXHRcdFx0XHRsZXQgbmV3Q29tcG9uZW50czogYW55O1xyXG5cdFx0XHRcdGlmIChmb3JtQ29tcC5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29tcG9uZW50cztcclxuXHRcdFx0XHR9IGVsc2UgaWYgKGZvcm1Db21wLmNvbHVtbnMpIHtcclxuXHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb2x1bW5zO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZiAoZm9ybUNvbXAudHlwZSAmJiBmb3JtQ29tcC50eXBlID09PSAncGFuZWwnKSB7XHJcblx0XHRcdFx0XHRwYW5lbE5hbWUgPSBmb3JtQ29tcC50aXRsZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Y29tcG9uZW50cyA9IHRoaXMuZ2V0RWRpdEdyaWRDb21wb25lbmV0KGNvbXBvbmVudHMsIG5ld0NvbXBvbmVudHMsIHBhbmVsTmFtZSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiBjb21wb25lbnRzO1xyXG5cdH1cclxuXHJcblx0LyoqIEl0IHJldHVybnMgdGhlIHRva2VucyBieSBwcm9tQ29kaWdvICovXHJcblx0Z2V0TGlzdEJ5UHJvbUNvZGlnbyhwcm9tQ29kZTogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KFxyXG5cdFx0XHR0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5jb25maWd1cmF0aW9uICsgJ3Rva2VuL2dldEJ5UHJvbUNvZGlnbycsXHJcblx0XHRcdHsgcGFyYW1zOiBuZXcgSHR0cFBhcmFtcygpLnNldCgncHJvbUNvZGlnbycsIHByb21Db2RlLnRvU3RyaW5nKCkpIH1cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgcmV0dXJucyB0aGUgdG9rZW4gYnkgaWQgKi9cclxuXHRnZXRCeUlkKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQodGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuY29uZmlndXJhdGlvbiArICd0b2tlbi9nZXRCeUlkJywge1xyXG5cdFx0XHRwYXJhbXM6IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdpZCcsIGlkLnRvU3RyaW5nKCkpXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKiBJdCBkZWxldGVzIGEgZm9ybSBieSBpZCAqL1xyXG5cdGRlbGV0ZShpZCk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LmRlbGV0ZShcclxuXHRcdFx0dGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuY29uZmlndXJhdGlvbiArICd0b2tlbi9kZWxldGUnLFxyXG5cdFx0XHR7IHBhcmFtczogbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ2lkJywgaWQpIH1cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgc2F2ZXMgdGhlIHRva2VuICovXHJcblx0c2F2ZSh0b2tlbjogVG9rZW4pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KFxyXG5cdFx0XHR0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5jb25maWd1cmF0aW9uICsgJ3Rva2VuL3NhdmUnLFxyXG5cdFx0XHR0b2tlbixcclxuXHRcdFx0SEVBREVSX0pTT05cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0S2V5Rm9ybXVsYXJpbyhmb3JtVGl0bGU6IHN0cmluZyk6IHN0cmluZyB7XHJcblx0XHRpZiAoVXRpbFN0cmluZy5pc1ZhbGlkKGZvcm1UaXRsZSkpIHtcclxuXHRcdFx0cmV0dXJuIChcclxuXHRcdFx0XHRVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX0ZPUk0pICtcclxuXHRcdFx0XHRVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoZm9ybVRpdGxlKS5yZXBsYWNlKC9fL2csICctJylcclxuXHRcdFx0KTtcclxuXHRcdH1cclxuXHRcdHJldHVybiAnJztcclxuXHR9XHJcblxyXG5cdC8qKiBJdCByZXR1cm5zIHRoZSB1bmlxdWUgdmVyaWZpY2F0aW9uIGNvZGUgKi9cclxuXHRnZXRVbmlxdWVWZXJpZmljYXRpb25Db2RlKGxvZ2luOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmRvY3VtZW50c1JlcG9zaXRvcnkgK1xyXG5cdFx0XHRcdCdkb2N1bWVudG8vY29uc3VsdGFyQ29kaWdvVW5pY28vJyArXHJcblx0XHRcdFx0bG9naW4gK1xyXG5cdFx0XHRcdCcvJyArXHJcblx0XHRcdFx0dG9rZW4sXHJcblx0XHRcdHsgcGFyYW1zOiBuZXcgSHR0cFBhcmFtcygpIH1cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgc2VuZCB0aGUgaW5mb3JtYXRpb24gdG8gY29weSB0aGUgRG9jdW1lbnQgdmlld2VyICovXHJcblx0Y29weURvY3VtZW50SW5mb3JtYXRpb25WaWV3ZXIoXHJcblx0XHRsb2dpbjogc3RyaW5nLFxyXG5cdFx0dG9rZW46IHN0cmluZyxcclxuXHRcdHVuaXF1ZUNvZGU6IHN0cmluZyxcclxuXHRcdGRvY3VtZW50VVJMOiBzdHJpbmcsXHJcblx0XHRkb2N1bWVudE5hbWU6IHN0cmluZ1xyXG5cdCk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRsZXQgaW5mb0RvY3VtZW50byA9IHtcclxuXHRcdFx0Y29kaWdvVW5pY286IHVuaXF1ZUNvZGUsXHJcblx0XHRcdHJ1dGFEb2N1bWVudG86IGRvY3VtZW50VVJMLFxyXG5cdFx0XHRkb2N1bWVudE5hbWU6IGRvY3VtZW50TmFtZVxyXG5cdFx0fTtcclxuXHRcdHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdChcclxuXHRcdFx0dGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuZG9jdW1lbnRzUmVwb3NpdG9yeSArXHJcblx0XHRcdFx0J2RvY3VtZW50by9hZGljaW9uYXJEb2N1bWVudG8vJyArXHJcblx0XHRcdFx0bG9naW4gK1xyXG5cdFx0XHRcdCcvJyArXHJcblx0XHRcdFx0dG9rZW4sXHJcblx0XHRcdGluZm9Eb2N1bWVudG8sXHJcblx0XHRcdEhFQURFUl9KU09OXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGdldEtleUJ1ZGdldCgpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfQlVER0VUKTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRLZXlEb2N1bWVudCgpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfRE9DVU1FTlRPKTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRLZXlUYXNrKCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gVXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9UQVNLTCk7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0S2V5U3RhdGljKCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gVXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9TVEFUSUMpO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGdldEtleUNhbGN1bGF0ZWQodG9rZW46IFRva2VuKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiAoXHJcblx0XHRcdFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfQ0FMQ1VMQVRFRCkgK1xyXG5cdFx0XHQnXycgK1xyXG5cdFx0XHRVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnModG9rZW4ubmFtZSlcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0S2V5U25hcHNob3QodG9rZW46IFRva2VuKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiAoXHJcblx0XHRcdFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfU05BUFNIT1QpICtcclxuXHRcdFx0J18nICtcclxuXHRcdFx0VXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKHRva2VuLm5hbWUpXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGdldEtleUd1YXJhbnRlZSh0b2tlbjogUGxpQ25mR3VhcmFudGVlVG9rZW4pOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIChcclxuXHRcdFx0VXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9HVUFSQU5URUUpICtcclxuXHRcdFx0J18nICtcclxuXHRcdFx0VXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKHRva2VuLm5hbWUpXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmV0dXJuIGEgdmFsdWUgdGhhdCByZXByZXNlbnQgdGhlIHR5cGUgb2YgbGFiZWw6IDE9Rm9ybSwgMj1CdWRnZXQsIDM9U3RhdGljLCA0PUNhbGN1bGF0ZWRcclxuXHQgKiBAcGFyYW0ga2V5IFZhbHVlIHRvIGV2YWx1ZWF0ZVxyXG5cdCAqL1xyXG5cdHN0YXRpYyBnZXRLZXlUeXBlKGtleTogc3RyaW5nKTogbnVtYmVyIHtcclxuXHRcdGtleSA9IGtleS5yZXBsYWNlKCd7JywgJycpLnJlcGxhY2UoJ30nLCAnJyk7XHJcblx0XHRrZXkgPSBrZXkuc3Vic3RyaW5nKDEsIGtleS5pbmRleE9mKCdfJykpO1xyXG5cdFx0aWYgKGtleS5zdGFydHNXaXRoKFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfRk9STSkpKSB7XHJcblx0XHRcdHJldHVybiAxO1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0a2V5LnN0YXJ0c1dpdGgoVXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9CVURHRVQpKVxyXG5cdFx0KSB7XHJcblx0XHRcdHJldHVybiAyO1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0a2V5LnN0YXJ0c1dpdGgoVXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9TVEFUSUMpKVxyXG5cdFx0KSB7XHJcblx0XHRcdHJldHVybiAzO1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0a2V5LnN0YXJ0c1dpdGgoXHJcblx0XHRcdFx0VXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9DQUxDVUxBVEVEKVxyXG5cdFx0XHQpXHJcblx0XHQpIHtcclxuXHRcdFx0cmV0dXJuIDQ7XHJcblx0XHR9IGVsc2UgaWYgKFxyXG5cdFx0XHRrZXkuc3RhcnRzV2l0aChVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX1RBU0tMKSlcclxuXHRcdCkge1xyXG5cdFx0XHRyZXR1cm4gNTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBudWxsO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRGVwZW5kcyBvZiB0aGUgdHlwZSBvZiBmb3JtRmllbGRUb2tlbiByZXR1cm4gZGUgdmFsdWUgb2YgdGhlIHZhbHVlRGF0YVxyXG5cdCAqIEBwYXJhbSBmb3JtRmllbGRUb2tlblxyXG5cdCAqIEBwYXJhbSB2YWx1ZURhdGFcclxuXHQgKi9cclxuXHRnZXRWYWx1ZUZyb21Gb3JtRmllbGQoZm9ybUZpZWxkVG9rZW46IGFueSwgdmFsdWVEYXRhOiBhbnkpOiBhbnkge1xyXG5cdFx0aWYgKHR5cGVvZiB2YWx1ZURhdGEgPT0gJ29iamVjdCcpIHtcclxuXHRcdFx0aWYgKGZvcm1GaWVsZFRva2VuLnR5cGUpIHtcclxuXHRcdFx0XHRpZiAoZm9ybUZpZWxkVG9rZW4udHlwZSA9PSAnYWRkcmVzcycpIHtcclxuXHRcdFx0XHRcdHJldHVybiB2YWx1ZURhdGEuZm9ybWF0dGVkX2FkZHJlc3M7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdGZvcm1GaWVsZFRva2VuLnR5cGUgPT0gJ3NlbGVjdCcgJiZcclxuXHRcdFx0XHRcdGZvcm1GaWVsZFRva2VuLnNlYXJjaEZpZWxkICYmXHJcblx0XHRcdFx0XHR2YWx1ZURhdGEuaGFzT3duUHJvcGVydHkoZm9ybUZpZWxkVG9rZW4uc2VhcmNoRmllbGQpXHJcblx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gdmFsdWVEYXRhW2Zvcm1GaWVsZFRva2VuLnNlYXJjaEZpZWxkXTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiB2YWx1ZURhdGE7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUcnkgdG8gZmluZCB0aGUgdG9rZW4gaW4gdGhlIHN0cmluZ1RleHQgYW5kIHJlcGxhY2Ugd2l0aCBkYXRhVmFsdWUuIElmIGRldGVjdCBmb3JtYXQgb2YgbnVtYmVyIG9yIGRhdGUgdHJ5IHRvIGZvcm1hdCB0aGUgZGF0YVZhbHVlXHJcblx0ICogQHBhcmFtIHN0cmluZ1RleHRcclxuXHQgKiBAcGFyYW0gdG9rZW5cclxuXHQgKiBAcGFyYW0gZGF0YVZhbHVlXHJcblx0ICovXHJcblx0cmVwbGFjZVRva2VuKHN0cmluZ1RleHQ6IHN0cmluZywgdG9rZW46IGFueSwgZGF0YVZhbHVlOiBhbnkpOiBzdHJpbmcge1xyXG5cdFx0bGV0IHZhbHVlUmVwbGFjZTogc3RyaW5nID0gbnVsbDtcclxuXHRcdGlmICh0b2tlbiAmJiB0b2tlblswXSA9PSAnIycpIHtcclxuXHRcdFx0bGV0IHR5cGVUb2tlbiA9IHRva2VuLnN1YnN0cmluZygxLCB0b2tlbi5pbmRleE9mKCcoJykpO1xyXG5cdFx0XHRpZiAodHlwZVRva2VuID09ICdkYXRlJykge1xyXG5cdFx0XHRcdGxldCBkYXRlRm9ybWF0OiBzdHJpbmcgPSB0b2tlbi5zdWJzdHJpbmcoXHJcblx0XHRcdFx0XHR0b2tlbi5pbmRleE9mKCd9JykgKyAxLFxyXG5cdFx0XHRcdFx0dG9rZW4uaW5kZXhPZignKScpXHJcblx0XHRcdFx0KTtcclxuXHRcdFx0XHRkYXRlRm9ybWF0ID0gZGF0ZUZvcm1hdC50cmltKCkucmVwbGFjZSgvXFxcIi9nLCAnJykucmVwbGFjZSgvXFwnL2csICcnKTtcclxuXHRcdFx0XHRsZXQgZGF0ZVZhbHVlID0gRGF0ZVV0aWwuZ2V0RGF0ZShkYXRhVmFsdWUpO1xyXG5cdFx0XHRcdGlmIChkYXRlVmFsdWUpIHtcclxuXHRcdFx0XHRcdHZhbHVlUmVwbGFjZSA9IERhdGVVdGlsLmdldE1vbWVudChkYXRlVmFsdWUpLmZvcm1hdChkYXRlRm9ybWF0KTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0dmFsdWVSZXBsYWNlID0gJyc7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2UgaWYgKHR5cGVUb2tlbiA9PSAnbnVtYmVyJykge1xyXG5cdFx0XHRcdGxldCBudW1iZXJWYWx1ZTogbnVtYmVyID0gTnVtYmVyKGRhdGFWYWx1ZSk7XHJcblx0XHRcdFx0aWYgKG51bWJlclZhbHVlICE9IHVuZGVmaW5lZCAmJiAhaXNOYU4obnVtYmVyVmFsdWUpKSB7XHJcblx0XHRcdFx0XHRsZXQgbnVtYmVyRm9ybWF0OiBzdHJpbmcgPSB0b2tlbi5zdWJzdHJpbmcoXHJcblx0XHRcdFx0XHRcdHRva2VuLmluZGV4T2YoJ30nKSArIDEsXHJcblx0XHRcdFx0XHRcdHRva2VuLmluZGV4T2YoJyknKVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdG51bWJlckZvcm1hdCA9IG51bWJlckZvcm1hdC50cmltKCkucmVwbGFjZSgvXFxcIi9nLCAnJykucmVwbGFjZSgvXFwnL2csICcnKTtcclxuXHRcdFx0XHRcdHZhbHVlUmVwbGFjZSA9IHRoaXMuY3VycmVuY3lQaXBlLnRyYW5zZm9ybShcclxuXHRcdFx0XHRcdFx0bnVtYmVyVmFsdWUsXHJcblx0XHRcdFx0XHRcdHRoaXMubG9jYWxlLFxyXG5cdFx0XHRcdFx0XHQnJyxcclxuXHRcdFx0XHRcdFx0bnVtYmVyRm9ybWF0XHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhcclxuXHRcdFx0XHRcdFx0J0VsIGRhdG8gWycgK1xyXG5cdFx0XHRcdFx0XHRcdGRhdGFWYWx1ZSArXHJcblx0XHRcdFx0XHRcdFx0J10gcGFyYSBlbCB0b2tlbiBbJyArXHJcblx0XHRcdFx0XHRcdFx0dG9rZW4gK1xyXG5cdFx0XHRcdFx0XHRcdCddIHRpcG8gbsO6bWVyaWNvIG5vIGVzIHZhbGlkbydcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHR2YWx1ZVJlcGxhY2UgPSAnJztcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0Y29uc29sZS5sb2coJ3RpcG8gZGUgdG9rZW4gaW5kZWZpbmlkby4gW3R5cGVUb2tlblsnICsgdHlwZVRva2VuICsgJ11dJyk7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSBpZiAodG9rZW4gJiYgdG9rZW5bMF0gPT0gJyQnKSB7XHJcblx0XHRcdHZhbHVlUmVwbGFjZSA9IGRhdGFWYWx1ZTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGNvbnNvbGUubG9nKCdFbCB0b2tlbiBubyBlcyB2YWxpZG8uIFt0b2tlblsnICsgdG9rZW4gKyAnXV0nKTtcclxuXHRcdH1cclxuXHRcdGlmIChzdHJpbmdUZXh0ICYmIHZhbHVlUmVwbGFjZSAhPT0gbnVsbCkge1xyXG5cdFx0XHQvLyByZXBsYWNlIHRleHQgaW4gYSBtb3JlIGVmZmljaWVudCB3YXlcclxuXHRcdFx0c3RyaW5nVGV4dCA9IHN0cmluZ1RleHQuc3BsaXQodG9rZW4pLmpvaW4odmFsdWVSZXBsYWNlKTtcclxuXHRcdFx0Ly9zdHJpbmdUZXh0ID0gc3RyaW5nVGV4dC5yZXBsYWNlKHRva2VuLCB2YWx1ZVJlcGxhY2UpO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHN0cmluZ1RleHQ7XHJcblx0fVxyXG5cclxuXHRnZXRMaXN0VG9rZW5zQnlTdHJpbmdTZWdtZW50YXRpb24oc3RyaW5nVGV4dDogc3RyaW5nKTogYW55W10ge1xyXG5cdFx0Y29uc3QgYXJyYXlUb2tlbiA9IHN0cmluZ1RleHQubWF0Y2goL1xcJHsoW159XSspXFx9L2cpO1xyXG5cdFx0Y29uc3QgYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUgPSBzdHJpbmdUZXh0Lm1hdGNoKC9cXCNkYXRlW14pXStcXCkvZyk7XHJcblx0XHRjb25zdCBhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyID0gc3RyaW5nVGV4dC5tYXRjaCgvXFwjbnVtYmVyW14pXStcXCkvZyk7XHJcblx0XHRsZXQgYXJyYXlUb2tlbkZvcm1hdHRlZCA9IFtdO1xyXG5cdFx0aWYgKFxyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkRGF0ZSAmJlxyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkRGF0ZS5sZW5ndGggPiAwICYmXHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIgJiZcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlci5sZW5ndGggPiAwXHJcblx0XHQpIHtcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZCA9IGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlLmNvbmNhdChhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyKTtcclxuXHRcdH0gZWxzZSBpZiAoYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUgJiYgYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkID0gYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUuc2xpY2UoKTtcclxuXHRcdH0gZWxzZSBpZiAoYXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlciAmJiBhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZCA9IGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIuc2xpY2UoKTtcclxuXHRcdH1cclxuXHRcdGNvbnN0IHJlc3VsdDogYW55W10gPSBbXTtcclxuXHJcblx0XHRpZiAoYXJyYXlUb2tlbikge1xyXG5cdFx0XHRmb3IgKGNvbnN0IHRva2VuIG9mIGFycmF5VG9rZW4pIHtcclxuXHRcdFx0XHRjb25zdCBpbmZvVG9rZW4gPSB7IGtleTogdG9rZW4sIHZhbHVlOiB0b2tlbiB9O1xyXG5cdFx0XHRcdGlmIChhcnJheVRva2VuRm9ybWF0dGVkKSB7XHJcblx0XHRcdFx0XHRmb3IgKGNvbnN0IHRva2VuRm9ybWF0dGVkIG9mIGFycmF5VG9rZW5Gb3JtYXR0ZWQpIHtcclxuXHRcdFx0XHRcdFx0Y29uc3QgaW5kZXggPSB0b2tlbkZvcm1hdHRlZC5pbmRleE9mKHRva2VuKTtcclxuXHRcdFx0XHRcdFx0aWYgKGluZGV4ID49IDApIHtcclxuXHRcdFx0XHRcdFx0XHRpbmZvVG9rZW4udmFsdWUgPSB0b2tlbkZvcm1hdHRlZDtcclxuXHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXN1bHQucHVzaChpbmZvVG9rZW4pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHJlc3VsdDtcclxuXHR9XHJcblxyXG5cdGNoYW5nZUlkUHJvcGVydGllc09mT2JqZWN0KG5vcm1hbGl6YXRpb25Db2x1bW5zOiBhbnlbXSwgbGlzdERhdGE6IGFueVtdKTogYW55W10ge1xyXG5cdFx0Y29uc3QgbmV3RGF0YSA9IFtdO1xyXG5cdFx0bGlzdERhdGEuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG5cdFx0XHRjb25zdCBvYmpEYXRhID0ge307XHJcblx0XHRcdE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goKHByb3BlcnR5KSA9PiB7XHJcblx0XHRcdFx0aWYgKGRhdGEuaGFzT3duUHJvcGVydHkocHJvcGVydHkpKSB7XHJcblx0XHRcdFx0XHRub3JtYWxpemF0aW9uQ29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuXHRcdFx0XHRcdFx0aWYgKGNvbHVtbi5pZENvbHVtbi50b1N0cmluZygpID09PSBwcm9wZXJ0eSkge1xyXG5cdFx0XHRcdFx0XHRcdG9iakRhdGFbY29sdW1uLmtleV0gPSBkYXRhW3Byb3BlcnR5XTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdFx0aWYgKG9iakRhdGEpIHtcclxuXHRcdFx0XHRuZXdEYXRhLnB1c2gob2JqRGF0YSk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdFx0cmV0dXJuIG5ld0RhdGE7XHJcblx0fVxyXG5cclxuXHRnZW5lcmF0ZUh0bWxCeVRva2Vuc0FuZERhdGEoaHRtbDogc3RyaW5nLCBsaXN0RGF0YTogYW55W10sIGxpc3RUb2tlbnM6IGFueVtdKTogc3RyaW5nW10ge1xyXG5cdFx0Y29uc3QgdHJhbnNsYXRlZENhcmRzOiBhbnlbXSA9IFtdO1xyXG5cdFx0bGlzdERhdGEuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG5cdFx0XHRjb25zdCBvYmpUb2tlbiA9IHt9O1xyXG5cdFx0XHRjb25zdCBodG1sVHJhbnNsYXRlZCA9IHsgaHRtbDogaHRtbCB9O1xyXG5cdFx0XHRPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKChwcm9wZXJ0eSkgPT4ge1xyXG5cdFx0XHRcdGxpc3RUb2tlbnMuZm9yRWFjaCgodG9rZW4pID0+IHtcclxuXHRcdFx0XHRcdGlmIChwcm9wZXJ0eSA9PSB0b2tlbi5rZXkucmVwbGFjZSgnJHsnLCAnJykucmVwbGFjZSgnfScsICcnKSkge1xyXG5cdFx0XHRcdFx0XHRvYmpUb2tlblt0b2tlbi5rZXldID0gZGF0YVtwcm9wZXJ0eV07XHJcblx0XHRcdFx0XHRcdGh0bWxUcmFuc2xhdGVkLmh0bWwgPSBodG1sVHJhbnNsYXRlZC5odG1sLnJlcGxhY2UoXHJcblx0XHRcdFx0XHRcdFx0dG9rZW4ua2V5LFxyXG5cdFx0XHRcdFx0XHRcdGRhdGFbcHJvcGVydHldXHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0pO1xyXG5cdFx0XHR0cmFuc2xhdGVkQ2FyZHMucHVzaChodG1sVHJhbnNsYXRlZCk7XHJcblx0XHR9KTtcclxuXHRcdHJldHVybiB0cmFuc2xhdGVkQ2FyZHM7XHJcblx0fVxyXG5cclxuXHRnZXRMaXN0VG9rZW5zQnlTdHJpbmcoc3RyaW5nVGV4dDogc3RyaW5nKTogYW55W10ge1xyXG5cdFx0dmFyIGFycmF5VG9rZW4gPSBzdHJpbmdUZXh0Lm1hdGNoKC9cXCR7KFtefV0rKVxcfS9nKTtcclxuXHRcdHZhciBhcnJheVRva2VuRm9ybWF0dGVkRGF0ZSA9IHN0cmluZ1RleHQubWF0Y2goL1xcI2RhdGVbXildK1xcKS9nKTtcclxuXHRcdHZhciBhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyID0gc3RyaW5nVGV4dC5tYXRjaCgvXFwjbnVtYmVyW14pXStcXCkvZyk7XHJcblx0XHR2YXIgYXJyYXlUb2tlbkZvcm1hdHRlZCA9IFtdO1xyXG5cdFx0aWYgKFxyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkRGF0ZSAmJlxyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkRGF0ZS5sZW5ndGggPiAwICYmXHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIgJiZcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlci5sZW5ndGggPiAwXHJcblx0XHQpIHtcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZCA9IGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlLmNvbmNhdChhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyKTtcclxuXHRcdH0gZWxzZSBpZiAoYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUgJiYgYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkID0gYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUuc2xpY2UoKTtcclxuXHRcdH0gZWxzZSBpZiAoYXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlciAmJiBhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZCA9IGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIuc2xpY2UoKTtcclxuXHRcdH1cclxuXHRcdHZhciByZXN1bHQ6IGFueVtdID0gW107XHJcblxyXG5cdFx0aWYgKGFycmF5VG9rZW4pIHtcclxuXHRcdFx0Zm9yIChjb25zdCB0b2tlbiBvZiBhcnJheVRva2VuKSB7XHJcblx0XHRcdFx0bGV0IGtleVR5cGU6IG51bWJlciA9IFRva2VuU2VydmljZS5nZXRLZXlUeXBlKHRva2VuKTtcclxuXHRcdFx0XHRpZiAoa2V5VHlwZSA9PT0gbnVsbCkge1xyXG5cdFx0XHRcdFx0Y29udGludWU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHZhciBpbmZvVG9rZW4gPSB7IGtleTogdG9rZW4sIHZhbHVlOiB0b2tlbiB9O1xyXG5cdFx0XHRcdGlmIChhcnJheVRva2VuRm9ybWF0dGVkKSB7XHJcblx0XHRcdFx0XHRmb3IgKGNvbnN0IHRva2VuRm9ybWF0dGVkIG9mIGFycmF5VG9rZW5Gb3JtYXR0ZWQpIHtcclxuXHRcdFx0XHRcdFx0dmFyIGluZGV4ID0gdG9rZW5Gb3JtYXR0ZWQuaW5kZXhPZih0b2tlbik7XHJcblx0XHRcdFx0XHRcdGlmIChpbmRleCA+PSAwKSB7XHJcblx0XHRcdFx0XHRcdFx0aW5mb1Rva2VuLnZhbHVlID0gdG9rZW5Gb3JtYXR0ZWQ7XHJcblx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0cmVzdWx0LnB1c2goaW5mb1Rva2VuKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiByZXN1bHQ7XHJcblxyXG5cdFx0Ly8gbGV0IHRva2VuczogYW55W10gPSBbXTtcclxuXHRcdC8vIGxldCBpID0gdGhpcy5uZXh0VmFsaWRQb3NpdGlvblRva2VucyhzdHJpbmdUZXh0LCAwKTtcclxuXHRcdC8vIGxldCBjb3VudCA9IDA7XHJcblx0XHQvLyB3aGlsZSAoaSA+PSAwICYmIGNvdW50IDw9IDEwKSB7XHJcblx0XHQvLyAgIGxldCBpbmZvVG9rZW46IHt9ID0gbnVsbDtcclxuXHRcdC8vICAgbGV0IG5leHRJOiBudW1iZXIgPSBpO1xyXG5cdFx0Ly8gICBsZXQgY2hhcmFjdGVyID0gc3RyaW5nVGV4dC5zdWJzdHJpbmcoaSwgKGkgKyAxKSk7XHJcblx0XHQvLyAgIGlmIChjaGFyYWN0ZXIgPT0gXCIkXCIpIHtcclxuXHRcdC8vICAgICBsZXQgbmV4dENoYXJhY3RlciA9IHN0cmluZ1RleHQuc3Vic3RyaW5nKChpICsgMSksIChpICsgMikpO1xyXG5cdFx0Ly8gICAgIC8vIFRoZSBuZXh0IGNoYXJhY3RlciBuZWVkIHRvIGJlIGEgeyBzaWduXHJcblx0XHQvLyAgICAgaWYgKG5leHRDaGFyYWN0ZXIgIT0gXCJ7XCIpIHtcclxuXHRcdC8vICAgICAgIGkgPSB0aGlzLm5leHRWYWxpZFBvc2l0aW9uVG9rZW5zKHN0cmluZ1RleHQsIG5leHRJICsgMSk7XHJcblx0XHQvLyAgICAgICBjb250aW51ZTtcclxuXHRcdC8vICAgICB9XHJcblx0XHQvLyAgICAgbGV0IGtleVRva2VuOiBzdHJpbmcgPSBzdHJpbmdUZXh0LnN1YnN0cmluZyhpLCBzdHJpbmdUZXh0LmluZGV4T2YoXCJ9XCIsIGkpICsgMSk7XHJcblx0XHQvLyAgICAgLy8gSWYgdGhlIHRva2VuIGhhdmUgYSB2YWxpZCBrZXkgdHlwZVxyXG5cdFx0Ly8gICAgIGxldCBrZXlUeXBlOiBudW1iZXIgPSBUb2tlblNlcnZpY2UuZ2V0S2V5VHlwZShrZXlUb2tlbi5yZXBsYWNlKFwie1wiLCBcIlwiKS5yZXBsYWNlKFwifVwiLCBcIlwiKSk7XHJcblx0XHQvLyAgICAgaWYgKGtleVR5cGUgPT09IG51bGwpIHtcclxuXHRcdC8vICAgICAgIGkgPSB0aGlzLm5leHRWYWxpZFBvc2l0aW9uVG9rZW5zKHN0cmluZ1RleHQsIG5leHRJICsgMSk7XHJcblx0XHQvLyAgICAgICBjb250aW51ZTtcclxuXHRcdC8vICAgICB9XHJcblx0XHQvLyAgICAgaW5mb1Rva2VuID0ge1xyXG5cdFx0Ly8gICAgICAga2V5OiBrZXlUb2tlbixcclxuXHRcdC8vICAgICAgIHZhbHVlOiBrZXlUb2tlblxyXG5cdFx0Ly8gICAgIH07XHJcblx0XHQvLyAgICAgbmV4dEkgPSBzdHJpbmdUZXh0LmluZGV4T2YoXCJ9XCIsIGkpO1xyXG5cdFx0Ly8gICB9IGVsc2Uge1xyXG5cdFx0Ly8gICAgIGxldCBuZXh0U2lnbjogbnVtYmVyID0gc3RyaW5nVGV4dC5pbmRleE9mKFwiJFwiLCBpKTtcclxuXHRcdC8vICAgICAvLyBXZSBpbmx5IHN1cHBvcnQgI2RhdGUoJCBhbmQgI251bWJlcigkIGluIHRoaXMgMiBzY2VuYXJpb3MgdGhlIGxlbmdodCBjYW4ndCBiZSBtb3JlIHRoYW4gMTAgY2hhcmFjdGVyc1xyXG5cdFx0Ly8gICAgIGlmIChuZXh0U2lnbiA8IDAgfHwgKG5leHRTaWduIC0gaSkgPiAxMCkge1xyXG5cdFx0Ly8gICAgICAgaSA9IHRoaXMubmV4dFZhbGlkUG9zaXRpb25Ub2tlbnMoc3RyaW5nVGV4dCwgbmV4dEkgKyAxKTtcclxuXHRcdC8vICAgICAgIGNvbnRpbnVlO1xyXG5cdFx0Ly8gICAgIH1cclxuXHRcdC8vICAgICBsZXQga2V5VG9rZW46IHN0cmluZyA9IHN0cmluZ1RleHQuc3Vic3RyaW5nKHN0cmluZ1RleHQuaW5kZXhPZihcIiRcIiwgaSksIHN0cmluZ1RleHQuaW5kZXhPZihcIn1cIiwgaSkgKyAxKTtcclxuXHRcdC8vICAgICBsZXQgdmFsdWVUb2tlbjogc3RyaW5nID0gc3RyaW5nVGV4dC5zdWJzdHJpbmcoaSwgc3RyaW5nVGV4dC5pbmRleE9mKFwiKVwiLCBpKSArIDEpO1xyXG5cdFx0Ly8gICAgIGluZm9Ub2tlbiA9IHtcclxuXHRcdC8vICAgICAgIGtleToga2V5VG9rZW4sXHJcblx0XHQvLyAgICAgICB2YWx1ZTogdmFsdWVUb2tlblxyXG5cdFx0Ly8gICAgIH07XHJcblx0XHQvLyAgICAgbmV4dEkgPSBzdHJpbmdUZXh0LmluZGV4T2YoXCIpXCIsIGkpO1xyXG5cdFx0Ly8gICB9XHJcblx0XHQvLyAgIHRva2Vucy5wdXNoKGluZm9Ub2tlbik7XHJcblx0XHQvLyAgIGkgPSB0aGlzLm5leHRWYWxpZFBvc2l0aW9uVG9rZW5zKHN0cmluZ1RleHQsIG5leHRJKTtcclxuXHRcdC8vICAgY291bnQrKztcclxuXHRcdC8vIH1cclxuXHRcdC8vIHJldHVybiB0b2tlbnM7XHJcblx0fVxyXG5cclxuXHRuZXh0VmFsaWRQb3NpdGlvblRva2VucyhzdHJpbmdUZXh0OiBzdHJpbmcsIG5leHRJOiBudW1iZXIpOiBudW1iZXIge1xyXG5cdFx0bGV0IHRva2VuRG9sbGFyU2lnbjogbnVtYmVyID0gc3RyaW5nVGV4dC5pbmRleE9mKCckJywgbmV4dEkpO1xyXG5cdFx0bGV0IHRva2VuTnVtU2lnbjogbnVtYmVyID0gc3RyaW5nVGV4dC5pbmRleE9mKCcjJywgbmV4dEkpO1xyXG5cdFx0bGV0IGk6IG51bWJlciA9XHJcblx0XHRcdHRva2VuRG9sbGFyU2lnbiA8IDAgJiYgdG9rZW5OdW1TaWduID49IDBcclxuXHRcdFx0XHQ/IHRva2VuTnVtU2lnblxyXG5cdFx0XHRcdDogdG9rZW5OdW1TaWduIDwgMCAmJiB0b2tlbkRvbGxhclNpZ24gPj0gMFxyXG5cdFx0XHRcdD8gdG9rZW5Eb2xsYXJTaWduXHJcblx0XHRcdFx0OiB0b2tlbkRvbGxhclNpZ24gPCB0b2tlbk51bVNpZ25cclxuXHRcdFx0XHQ/IHRva2VuRG9sbGFyU2lnblxyXG5cdFx0XHRcdDogdG9rZW5OdW1TaWduO1xyXG5cdFx0cmV0dXJuIGk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJdCByZXVzZXMgcmVwbGFjZVRva2Vuc0Zyb21MaXN0T2JqZWN0UHVibGljIGJ1dCBzZXQgYWxsIGtleXMgbG9iamVjdHRva2VucyBhcyBsb3dlcmNhc2VcclxuXHQgKiBAcGFyYW0gdG9rZW5OYW1lXHJcblx0ICogQHBhcmFtIGZvcm11bGFcclxuXHQgKiBAcGFyYW0gbE9iamVjdFRva2Vuc1xyXG5cdCAqL1xyXG5cdHJlcGxhY2VUb2tlbnNGcm9tTGlzdE9iamVjdFB1YmxpYyhcclxuXHRcdHRva2VuTmFtZTogc3RyaW5nLFxyXG5cdFx0Zm9ybXVsYTogc3RyaW5nLFxyXG5cdFx0bE9iamVjdFRva2VuczogYW55W11cclxuXHQpOiBzdHJpbmcge1xyXG5cdFx0bGV0IGxEYXRhT3JnOiBhbnlbXSA9IFtdO1xyXG5cdFx0aWYgKGxPYmplY3RUb2tlbnMpIHtcclxuXHRcdFx0Zm9yIChsZXQgZGF0YUZvcm0gaW4gbE9iamVjdFRva2Vucykge1xyXG5cdFx0XHRcdGxEYXRhT3JnW2RhdGFGb3JtLnRvTG93ZXJDYXNlKCldID0gbE9iamVjdFRva2Vuc1tkYXRhRm9ybV07XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiB0aGlzLnJlcGxhY2VUb2tlbnNGcm9tTGlzdE9iamVjdCh0b2tlbk5hbWUsIGZvcm11bGEsIGxEYXRhT3JnKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQHBhcmFtIHRva2VuTmFtZSB0b2tlbiBuYW1lXHJcblx0ICogQHBhcmFtIGZvcm11bGEgU3RyaW5nIHdpdGggdGhlIGZvcm11bGEgdG8gZXhlY3V0ZVxyXG5cdCAqIEBwYXJhbSBsT2JqZWN0VG9rZW5zIExpc3Qgb2YgdG9rZW5zIHdpdGggdGhlIHZhbHVlcyB0byByZXBsYWNlXHJcblx0ICovXHJcblx0cmVwbGFjZVRva2Vuc0Zyb21MaXN0T2JqZWN0KHRva2VuTmFtZTogc3RyaW5nLCBmb3JtdWxhOiBzdHJpbmcsIGxPYmplY3RUb2tlbnM6IGFueSk6IHN0cmluZyB7XHJcblx0XHRpZiAoIWZvcm11bGEgfHwgZm9ybXVsYS5sZW5ndGggPT0gMCkge1xyXG5cdFx0XHR0aHJvdyB7XHJcblx0XHRcdFx0bWVzc2FnZTogJ0xhIGZvcm11bGEgZGVsIHRva2VuICcgKyB0b2tlbk5hbWUgKyAnIGVzdGEgdmFjw61hJyxcclxuXHRcdFx0XHR0aXRsZTogJ0FsZXJ0YSEnLFxyXG5cdFx0XHRcdGVycm9yOlxyXG5cdFx0XHRcdFx0J0xhIGZvcm11bGEgZGVsIHRva2VuICcgKyB0b2tlbk5hbWUgKyAnIGVzdGEgdmFjw61hLiBbZm9ybXVsYVsnICsgZm9ybXVsYSArICddXSdcclxuXHRcdFx0fTtcclxuXHRcdH1cclxuXHRcdGxldCByZXBsYWNlZFRva2Vuczogc3RyaW5nID0gZm9ybXVsYS50b1N0cmluZygpO1xyXG5cdFx0aWYgKHJlcGxhY2VkVG9rZW5zLnN0YXJ0c1dpdGgoJ2ZpbGU6Ly8nKSkge1xyXG5cdFx0XHRyZXR1cm4gcmVwbGFjZWRUb2tlbnM7XHJcblx0XHR9XHJcblx0XHQvLyBGaW5kIHRoZSB0b2tlbnMgaW4gdGhlIGZvcm11bGFcclxuXHRcdGxldCB0b2tlbnNBcnJheTogYW55W10gPSB0aGlzLmdldExpc3RUb2tlbnNCeVN0cmluZyhyZXBsYWNlZFRva2Vucyk7XHJcblx0XHRpZiAodG9rZW5zQXJyYXkubGVuZ3RoID09IDApIHtcclxuXHRcdFx0cmV0dXJuIHJlcGxhY2VkVG9rZW5zO1xyXG5cdFx0fVxyXG5cdFx0Ly8gSWYgdGhlcmUgYW55IHRva2VuLCB0cnkgdG8gcmVwbGFjZVxyXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0b2tlbnNBcnJheS5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRsZXQgb2JqZWN0VG9rZW4gPVxyXG5cdFx0XHRcdGxPYmplY3RUb2tlbnNbdG9rZW5zQXJyYXlbaV0ua2V5XSAhPT0gdW5kZWZpbmVkXHJcblx0XHRcdFx0XHQ/IGxPYmplY3RUb2tlbnNbdG9rZW5zQXJyYXlbaV0ua2V5XVxyXG5cdFx0XHRcdFx0OiBudWxsO1xyXG5cdFx0XHRsZXQgY2xlYXJLZXk7XHJcblx0XHRcdGlmIChvYmplY3RUb2tlbiA9PSBudWxsKSB7XHJcblx0XHRcdFx0Y2xlYXJLZXkgPSB0b2tlbnNBcnJheVtpXS5rZXkucmVwbGFjZSgnJHsnLCAnJykucmVwbGFjZSgnfScsICcnKS50b0xvd2VyQ2FzZSgpO1xyXG5cdFx0XHRcdG9iamVjdFRva2VuID1cclxuXHRcdFx0XHRcdGxPYmplY3RUb2tlbnNbY2xlYXJLZXldICE9PSB1bmRlZmluZWQgPyBsT2JqZWN0VG9rZW5zW2NsZWFyS2V5XSA6IG51bGw7XHJcblxyXG5cdFx0XHRcdGlmIChvYmplY3RUb2tlbiA9PSBudWxsKSB7XHJcblx0XHRcdFx0XHRjbGVhcktleSA9IHRva2Vuc0FycmF5W2ldLmtleVxyXG5cdFx0XHRcdFx0XHQucmVwbGFjZSgneycsICcnKVxyXG5cdFx0XHRcdFx0XHQucmVwbGFjZSgnfScsICcnKVxyXG5cdFx0XHRcdFx0XHQuc3BsaXQoJ18nKVsxXVxyXG5cdFx0XHRcdFx0XHQudG9Mb3dlckNhc2UoKTtcclxuXHRcdFx0XHRcdG9iamVjdFRva2VuID1cclxuXHRcdFx0XHRcdFx0bE9iamVjdFRva2Vuc1tjbGVhcktleV0gIT09IHVuZGVmaW5lZCA/IGxPYmplY3RUb2tlbnNbY2xlYXJLZXldIDogbnVsbDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKG9iamVjdFRva2VuID09IG51bGwpIHtcclxuXHRcdFx0XHQvLyBJZiBub3QgZmluZCB0aGUgdG9rZW4sIGJ5IGRlZmF1bHQgcHV0IGFuIGVtcHR5IHN0cmluZ1xyXG5cdFx0XHRcdC8qaWYgKFRva2VuU2VydmljZS5leGNsdWRlZFRva2VuLmluZGV4T2YoY2xlYXJLZXkpID09PSAtMSkge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5lcnJvcihcclxuXHRcdFx0XHRcdFx0J0VsIHRva2VuICcgKyB0b2tlbnNBcnJheVtpXS52YWx1ZSArICcgbm8gZnVlIGVuY29udHJhZG8uJyxcclxuXHRcdFx0XHRcdFx0bE9iamVjdFRva2VucyxcclxuXHRcdFx0XHRcdFx0dG9rZW5zQXJyYXlcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0fSovXHJcblx0XHRcdFx0b2JqZWN0VG9rZW4gPSAnJztcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAob2JqZWN0VG9rZW4gIT0gbnVsbCkge1xyXG5cdFx0XHRcdGxldCB2YWx1ZTogYW55ID0gTnVtYmVyKG9iamVjdFRva2VuKVxyXG5cdFx0XHRcdFx0PyBvYmplY3RUb2tlblxyXG5cdFx0XHRcdFx0OiBBcnJheS5pc0FycmF5KG9iamVjdFRva2VuKVxyXG5cdFx0XHRcdFx0PyBKU09OLnN0cmluZ2lmeShvYmplY3RUb2tlbilcclxuXHRcdFx0XHRcdDogXCInXCIgKyBvYmplY3RUb2tlbiArIFwiJ1wiO1xyXG5cdFx0XHRcdHJlcGxhY2VkVG9rZW5zID0gdGhpcy5yZXBsYWNlVG9rZW4ocmVwbGFjZWRUb2tlbnMsIHRva2Vuc0FycmF5W2ldLnZhbHVlLCB2YWx1ZSk7XHJcblx0XHRcdFx0Ly8gfSBlbHNlIHtcclxuXHRcdFx0XHQvLyAgIGNvbnNvbGUuZXJyb3IobE9iamVjdFRva2VucywgdG9rZW5zQXJyYXkpO1xyXG5cdFx0XHRcdC8vICAgdGhyb3cge1xyXG5cdFx0XHRcdC8vICAgICBtZXNzYWdlOiBcIk5vIHNlIGVuY29udHLDsyB2YWxvciBwYXJhIHVuIHRva2VuXCIsXHJcblx0XHRcdFx0Ly8gICAgIHRpdGxlOiBcIkFsZXJ0YSFcIixcclxuXHRcdFx0XHQvLyAgICAgZXJyb3I6IFwiRWwgdG9rZW4gXCIgKyB0b2tlbnNBcnJheVtpXS52YWx1ZSArIFwiIG5vIGZ1ZSBlbmNvbnRyYWRvLlwiXHJcblx0XHRcdFx0Ly8gICB9O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcmVwbGFjZWRUb2tlbnM7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUcnkgdG8gZXZhbCB0aGUgZm9ybXVsYSBkZXBlbmQgb2YgdGhlIHR5cGUgb2YgZmllbGRzLlxyXG5cdCAqIEBwYXJhbSBsU3RhdGljVG9rZW5cclxuXHQgKiBAcGFyYW0gZm9ybXVsYU5hbWVcclxuXHQgKiBAcGFyYW0gZm9ybXVsYVxyXG5cdCAqL1xyXG5cdHZhbGlkYXRlRm9ybXVsYShsU3RhdGljVG9rZW46IGFueSwgZm9ybXVsYU5hbWU6IHN0cmluZywgZm9ybXVsYTogc3RyaW5nKTogYm9vbGVhbiB7XHJcblx0XHRsZXQgZXZhbEZvcm11bGE6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRcdC8vIFRvIHZhbGlkYXRlIHRoZSBmb3JtdWxhLCBmaXJzdCBvcmdhbml6ZSB0aGUgaW5mbyB0byBrZXkgLSB2YWx1ZSBhcnJheVxyXG5cdFx0bGV0IG9iamVjdFRva2VuczogYW55W10gPSBbXTtcclxuXHRcdGZvciAobGV0IHBhbmVsIG9mIGxTdGF0aWNUb2tlbikge1xyXG5cdFx0XHRmb3IgKGxldCBncm91cFRva2VuIG9mIHBhbmVsLnZhbHVlKSB7XHJcblx0XHRcdFx0Zm9yIChsZXQgc3RhdGljVG9rZW4gb2YgZ3JvdXBUb2tlbi52YWx1ZSkge1xyXG5cdFx0XHRcdFx0Zm9yIChsZXQgYXJyYXlUb2tlbkluZm8gb2Ygc3RhdGljVG9rZW4pIHtcclxuXHRcdFx0XHRcdFx0b2JqZWN0VG9rZW5zW2FycmF5VG9rZW5JbmZvLmtleV0gPSBhcnJheVRva2VuSW5mby5vYmplY3RcclxuXHRcdFx0XHRcdFx0XHQ/IGFycmF5VG9rZW5JbmZvLm9iamVjdC50eXBlID09ICdudW1iZXInXHJcblx0XHRcdFx0XHRcdFx0XHQ/ICcwJ1xyXG5cdFx0XHRcdFx0XHRcdFx0OiAnJ1xyXG5cdFx0XHRcdFx0XHRcdDogJyc7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHR0cnkge1xyXG5cdFx0XHRmb3JtdWxhID0gdGhpcy5yZXBsYWNlVG9rZW5zRnJvbUxpc3RPYmplY3QoZm9ybXVsYU5hbWUsIGZvcm11bGEsIG9iamVjdFRva2Vucyk7XHJcblx0XHR9IGNhdGNoIChlcnJvcikge1xyXG5cdFx0XHQvL2NvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG5cdFx0XHR0aHJvdyBlcnJvcjtcclxuXHRcdH1cclxuXHRcdGlmIChmb3JtdWxhICE9PSBudWxsKSB7XHJcblx0XHRcdHRyeSB7XHJcblx0XHRcdFx0bGV0IHJlc3VsdCA9IGZvcm11bGEuc3RhcnRzV2l0aCgnZmlsZTovLycpID8gZm9ybXVsYSA6IGV2YWwoZm9ybXVsYSk7XHJcblx0XHRcdFx0ZXZhbEZvcm11bGEgPSB0cnVlO1xyXG5cdFx0XHR9IGNhdGNoIChlKSB7XHJcblx0XHRcdFx0Ly9jb25zb2xlLmVycm9yKFwiRXJyb3IgZXZhbHVhdGluZyB0aGUgZm9ybXVsYVwiLCBlKTtcclxuXHRcdFx0XHR0aHJvdyB7XHJcblx0XHRcdFx0XHRtZXNzYWdlOiAnTGEgZm9ybXVsYSBubyBmdWUgcG9zaWJsZSBldmFsdWFyJyxcclxuXHRcdFx0XHRcdHRpdGxlOiAnQWxlcnRhIScsXHJcblx0XHRcdFx0XHRlcnJvcjogZVxyXG5cdFx0XHRcdH07XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiBldmFsRm9ybXVsYTtcclxuXHR9XHJcblxyXG5cdGdldENvbmZpZ0Nsb25pbmdUb2tlbk1hcChvbGRQUFA6IG51bWJlciwgbmV3UFBQOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmNvbmZpZ3VyYXRpb24gKyAndG9rZW4vZ2V0Q29uZmlnQ2xvbmluZ1Rva2VuTWFwJyxcclxuXHRcdFx0e1xyXG5cdFx0XHRcdHBhcmFtczogbmV3IEh0dHBQYXJhbXMoKVxyXG5cdFx0XHRcdFx0LnNldCgnb2xkUFBQJywgb2xkUFBQLnRvU3RyaW5nKCkpXHJcblx0XHRcdFx0XHQuc2V0KCduZXdQUFAnLCBuZXdQUFAudG9TdHJpbmcoKSlcclxuXHRcdFx0fVxyXG5cdFx0KTtcclxuXHR9XHJcbn1cclxuIl19
1109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXBsaS1jb21tb25zL3NyYy9saWIvc2VydmljZXMvdG9rZW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSTlELE9BQU8sRUFBUyxXQUFXLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBd0IsTUFBTSxhQUFhLENBQUM7Ozs7O0FBSzdGLE1BQU0sT0FBTyxZQUFZO0lBK1V4QixZQUNnQyxXQUFXLEVBQ2xDLFVBQXNCLEVBQ3RCLFdBQXdCLEVBQ3hCLFlBQTBCO1FBSEgsZ0JBQVcsR0FBWCxXQUFXLENBQUE7UUFDbEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztJQUMvQixDQUFDO0lBRUwsaUZBQWlGO0lBQ2pGLHVCQUF1QixDQUFDLFVBQVU7UUFDakMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUN0QywwQkFBMEI7WUFDMUIsSUFBSSxnQkFBZ0IsR0FBVSxJQUFJLENBQUM7WUFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUN0RCxJQUFJLEVBQUUsQ0FBQyxVQUFlLEVBQUUsRUFBRTtvQkFDekIsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTt3QkFDMUIsS0FBSyxNQUFNLEtBQUssSUFBSSxVQUFVLEVBQUU7NEJBQy9CLElBQUksS0FBSyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FB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QUFDO3lHQTdVVSxZQUFZLGtCQWdWZixhQUFhOzZHQWhWVixZQUFZLGNBRlosTUFBTTsyRkFFTixZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQjs7MEJBaVZFLE1BQU07MkJBQUMsYUFBYTswSEEzVUksTUFBTTtzQkFBL0IsTUFBTTt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBMT0NBTEVfSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEZvcm1TZXJ2aWNlIH0gZnJvbSAnLi9mb3JtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDdXJyZW5jeVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBUb2tlbiwgSEVBREVSX0pTT04sIFV0aWxTdHJpbmcsIERhdGVVdGlsLCBQbGlDbmZHdWFyYW50ZWVUb2tlbiB9IGZyb20gJ25nLXBsaS11dGlsJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRva2VuU2VydmljZSB7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNJR05fTEVUVEVSX1RBR19JRDogc3RyaW5nID0gJ19zaWduLWxldHRlci10YWctaWQnO1xyXG5cclxuXHQvKiogKi9cclxuXHRASW5qZWN0KExPQ0FMRV9JRCkgcHVibGljIGxvY2FsZTogc3RyaW5nO1xyXG5cclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fTEFCRUxfRk9STTogc3RyaW5nID0gJ0ZybSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFRPS0VOX0xBQkVMX0JVREdFVDogc3RyaW5nID0gJ1ByZXN1cHVlc3RvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgVE9LRU5fTEFCRUxfQ0FMQ1VMQVRFRDogc3RyaW5nID0gJ0NhbGN1bGFkbyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFRPS0VOX0xBQkVMX1NOQVBTSE9UOiBzdHJpbmcgPSAnU25hcHNob3QnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBUT0tFTl9MQUJFTF9TVEFUSUM6IHN0cmluZyA9ICdFc3TDoXRpY28nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBUT0tFTl9MQUJFTF9ET0NVTUVOVE86IHN0cmluZyA9ICdEb2N1bWVudG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBUT0tFTl9MQUJFTF9UQVNLOiBzdHJpbmcgPSAnVGFyZWEnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBUT0tFTl9MQUJFTF9UQVNLTDogc3RyaW5nID0gJ3Rhc2snO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBUT0tFTl9MQUJFTF9HVUFSQU5URUU6IHN0cmluZyA9ICdHYXJhbnRpYSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX1RPVEFMX0FNT1VOVDogc3RyaW5nID0gJ3RvdGFsQW1vdW50JztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfQVBQTElDQVRJT05fUFJPQ0VTU19UT1RBTF9BTU9VTlQ6IHN0cmluZyA9ICdhcHBsaWNhdGlvblRvdGFsJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfQVBQTElDQVRJT05fUFJPQ0VTU19UT1RBTF9PV05fRk9VTkRTOiBzdHJpbmcgPSAnYXBwbGljYXRpb25Pd25Gb3VuZHMnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9BUFBMSUNBVElPTl9QUk9DRVNTX1RPVEFMX0ZJTkFOQ0lORzogc3RyaW5nID0gJ2FwcGxpY2F0aW9uRmluYW5jaW5nJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfTEVHQUxJWkFUSU9OX1BST0NFU1NfVE9UQUxfQU1PVU5UOiBzdHJpbmcgPSAnbGVnYWxpemF0aW9uVG90YWwnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9MRUdBTElaQVRJT05fUFJPQ0VTU19UT1RBTF9PV05fRk9VTkRTOiBzdHJpbmcgPVxyXG5cdFx0J2xlZ2FsaXphdGlvbk93bkZvdW5kcyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX0xFR0FMSVpBVElPTl9QUk9DRVNTX1RPVEFMX0ZJTkFOQ0lORzogc3RyaW5nID0gJ2xlZ2FsaXphdGlvbkZpbmFuY2luZyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX0lOU1VSQU5DRV9BTU9VTlQ6IHN0cmluZyA9ICdpbnN1cmFuY2VBbW91bnQnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBMRUdBTElaQVRJT05fT1JfQVBQTElDQVRJT05fVE9UQUxfRklOQU5DSU5HOiBzdHJpbmcgPVxyXG5cdFx0J2xlZ2xpemF0aW9uT3JBcHBsaWNhdGlvblRvdGFsRmluYW5jaW5nJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgQlVER0VUX1RPS0VOU19LRVlfUkVTVU1FX0NBVEVHT1JZX1lFQVI6IHN0cmluZyA9ICdyZXN1bWVDYXRlZ29yeVllYXInO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0tFWV9GRUNIQV9GSU5BTkNJTkdfU1RBUlQ6IHN0cmluZyA9ICdmZWNoYUluaWNpb0ZpbmFuY2lhY2lvbic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfS0VZX0ZFQ0hBX0ZJTkFOQ0lOR19FTkQ6IHN0cmluZyA9ICdmZWNoYUZpbkZpbmFuY2lhY2lvbic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIEJVREdFVF9UT0tFTlNfRFVSQVRJT05fU1RVRElFUzogc3RyaW5nID0gJ2R1cmFjaW9uRXN0dWRpb3MnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBCVURHRVRfVE9LRU5TX0ZJTkFOQ0lOR19EVVJBVElPTjogc3RyaW5nID0gJ2R1cmFjaW9uRmluYW5jaWFjaW9uJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfQ09ESUdPX1ZFUklGSUNBQ0lPTjogc3RyaW5nID0gJ2NvZGlnb1ZlcmlmaWNhY2lvbic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX0FfUVVJRU5fVkFfRElSSUdJRE86IHN0cmluZyA9ICdhUXVpZW5WYURpcmlnaWRvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfRkVDSEFfQUNUVUFMOiBzdHJpbmcgPSAnZmVjaGFBY3R1YWwnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9TVEFUVVNfTkFNRTogc3RyaW5nID0gJ3N0YXR1c05hbWUnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9QQVRST0NJTkFET1I6IHN0cmluZyA9ICdwbGlQYXRyb2NpbmFkb3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9QQVRST0NJTkFET1JfQ09SVE86IHN0cmluZyA9ICdwbGlQYXRyb2NpbmFkb3JDb3J0byc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX1BST0dSQU1BOiBzdHJpbmcgPSAncGxpUHJvZ3JhbWEnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9QUk9HUkFNQV9DT1JUTzogc3RyaW5nID0gJ3BsaVByb2dyYW1hQ29ydG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9QUk9NT0NJT046IHN0cmluZyA9ICdwbGlQcm9tb2Npb24nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9QUk9NT0NJT05fQ09SVE86IHN0cmluZyA9ICdwbGlQcm9tb2Npb25Db3J0byc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX0FOSU9fUFJPTU9DSU9OOiBzdHJpbmcgPSAnYW5pb1Byb21vY2lvbic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX0lTT19NT05FREFfQkFTRTogc3RyaW5nID0gJ2lzb01vbmVkYUJhc2UnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9TQUxVRE9fQ09NUExFTUVOVEFSSU86IHN0cmluZyA9ICdzYWx1ZG9Db21wbGVtZW50YXJpbyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfS0VZX05VTUJFUl9BUFBMSUNBVElPTjogc3RyaW5nID0gJ251bWVyb1JhZGljYWRvJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19LRVlfVVNFUl9JTklUSUFMUzogc3RyaW5nID0gJ2luaWNpYWxlc1VzdWFyaW8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0tFWV9MRVRURVJfU0lHTjogc3RyaW5nID0gJ2Zpcm1hQ2FydGEnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPTU1JVFRFRV9OQU1FOiBzdHJpbmcgPSAnY29taXRlTm9tYnJlJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT01NSVRURUVfU0VHTUVOVEFUSU9OOiBzdHJpbmcgPSAnY29taXRlU2VnbWVudGFjaW9uJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT01NSVRURUVfQUdHUlVQQVRJT046IHN0cmluZyA9ICdjb21pdGVBZ3J1cGFjaW9uJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT01NSVRURUVfQ1VUTElORV9EQVRFOiBzdHJpbmcgPSAnY29taXRlRmVjaGFMaW5lYSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09ORklSTV9MRUdBTElaQVRJT05fQVBQT0lOVE1FTlQ6IHN0cmluZyA9ICdjb25maXJtYWNpb25DaXRhJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19DT0RFQlRPUl9ET0NVTUVOVF9OVU1CRVI6IHN0cmluZyA9ICdudW1lcm9Eb2N1bWVudG9Db2RldWRvcic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfRE9DVU1FTlRfVFlQRTogc3RyaW5nID0gJ3RpcG9Eb2N1bWVudG9Db2RldWRvcic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfTkFNRTogc3RyaW5nID0gJ25vbWJyZXNDb2RldWRvcic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfTEFTVE5BTUU6IHN0cmluZyA9ICdhcGVsbGlkb3NDb2RldWRvcic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfVFlQRV9DT0RFQlRPUjogc3RyaW5nID0gJ3RpcG9QZXJzb25hQ29kZXVkb3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPREVCVE9SX1JFVklFV0VSOiBzdHJpbmcgPSAncmV2aXNvckNvZGV1ZG9yZXMnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX1RPVEFMX1dFSUdIVEVEOiBzdHJpbmcgPSAncG9uZGVyYWRvVG90YWwnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPTlNFQ1VUSVZFX0dVQVJBTlRFRTogc3RyaW5nID0gJ2NvbnNlY3V0aXZvR2FyYW50aWFzJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19EQVk6IHN0cmluZyA9ICdkaWEnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX01PTlRIOiBzdHJpbmcgPSAnbWVzJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19ZRUFSOiBzdHJpbmcgPSAnYW5vJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOU19SRVBSRVNFTlRBVElWRV9OQU1FOiBzdHJpbmcgPSAnbm9tYnJlc1JlcHJlc2VudGFudGUnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX1JFUFJFU0VOVEFUSVZFX0xBU1ROQU1FOiBzdHJpbmcgPSAnYXBlbGxpZG9zUmVwcmVzZW50YW50ZSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfUkVQUkVTRU5UQVRJVkVfRE9DVU1FTlRfTlVNQkVSOiBzdHJpbmcgPSAnY2VkdWxhUmVwcmVzZW50YW50ZSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ0lUWV9TSUdOQVRVUkU6IHN0cmluZyA9ICdjaXVkYWRGaXJtYSc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfVVNFUl9UWVBFX0NSRURJVF9TVFVEWTogc3RyaW5nID0gJ3RpcG9Vc3VhcmlvRXN0dWRpb0NyZWRpdG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0NPREVCVE9SX1ZFSElDTEVTX1FVQU5USVRZOiBzdHJpbmcgPSAnY2FudGlkYWRWZWhpY3Vsb3NDb2RldWRvcic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfQVNTRVRTX1FVQU5USVRZOiBzdHJpbmcgPSAnY2FudGlkYWRCaWVuZXNDb2RldWRvcic7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfTElTVF9DT0RFQlRPUlM6IHN0cmluZyA9ICdsaXN0YUNvZGV1ZG9yZXMnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5fSU5HUkVTT19DT0RFVURPUl9IQUJFQVNfREFUQTogc3RyaW5nID0gJ2luZ3Jlc29Db2RldWRvckhhYmVhc0RhdGEnO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5fUERGX1JFU1VNRU5fQ09ERVVET1I6IHN0cmluZyA9ICdwZGZSZXN1bWVuQ29kZXVkb3InO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX1FVQU5USVRZX1ZFSElDTEVfQkVORUZJQ0lBUlk6IHN0cmluZyA9ICdjYW50aWRhZFZlaGljdWxvc1NlbGVjY2lvbmFkbyc7XHJcblx0LyoqICovXHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlNfUVVBTlRJVFlfQVNTRVRTX0JFTkVGSUNJQVJZOiBzdHJpbmcgPSAnY2FudGlkYWRCaWVuZXNTZWxlY2Npb25hZG8nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5TX0JFTl9DT0RJR086IHN0cmluZyA9ICdiZW5Db2RpZ28nO1xyXG5cdC8qKiAqL1xyXG5cdHN0YXRpYyBTVEFUSUNfVE9LRU5fQ1JFRElUX1JFVklFV0VSX09CU0VSVkFUSU9OU19DT0RFQlRPUjogc3RyaW5nID1cclxuXHRcdCdjcmVkaXRSZXZpZXdlck9ic2VydmF0aW9uc0NvZGVidG9yJztcclxuXHQvKiogKi9cclxuXHRzdGF0aWMgU1RBVElDX1RPS0VOX0NSRURJVF9SRVZJRVdFUl9PQlNFUlZBVElPTlM6IHN0cmluZyA9ICdjcmVkaXRSZXZpZXdlck9ic2VydmF0aW9ucyc7XHJcblx0c3RhdGljIFNUQVRJQ19UT0tFTlM6IGFueVtdID0gW1xyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9QQVRST0NJTkFET1IsXHJcblx0XHRcdGxhYmVsOiAnUGF0cm9jaW5hZG9yJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfUFJPR1JBTUEsXHJcblx0XHRcdGxhYmVsOiAnUHJvZ3JhbWEnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9QUk9NT0NJT04sXHJcblx0XHRcdGxhYmVsOiAnUHJvbW9jacOzbidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX0FOSU9fUFJPTU9DSU9OLFxyXG5cdFx0XHRsYWJlbDogJ0HDsW8gcHJvbW9jacOzbidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX0lTT19NT05FREFfQkFTRSxcclxuXHRcdFx0bGFiZWw6ICdJU08gTW9uZWRhIGJhc2UnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9TQUxVRE9fQ09NUExFTUVOVEFSSU8sXHJcblx0XHRcdGxhYmVsOiAnU2FsdWRvIGNvbXBsZW1lbnRhcmlvJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfQ09ESUdPX1ZFUklGSUNBQ0lPTixcclxuXHRcdFx0bGFiZWw6ICdDw7NkaWdvIGRlIHZlcmlmaWNhY2nDs24nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9BX1FVSUVOX1ZBX0RJUklHSURPLFxyXG5cdFx0XHRsYWJlbDogJ0EgcXVpZW4gdmEgZGlyaWdpZG8nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0tFWV9GRUNIQV9BQ1RVQUwsXHJcblx0XHRcdGxhYmVsOiAnRmVjaGEgYWN0dWFsJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfU1RBVFVTX05BTUUsXHJcblx0XHRcdGxhYmVsOiAnRXN0YWRvIGFjdHVhbCdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX05VTUJFUl9BUFBMSUNBVElPTixcclxuXHRcdFx0bGFiZWw6ICdOw7ptZXJvIHJhZGljYWRvJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19LRVlfVVNFUl9JTklUSUFMUyxcclxuXHRcdFx0bGFiZWw6ICdJbmljaWFsZXMgZGUgdXN1YXJpbydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfS0VZX0xFVFRFUl9TSUdOLFxyXG5cdFx0XHRsYWJlbDogJ0Zpcm1hIGRlIGNhcnRhcydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09NTUlUVEVFX05BTUUsXHJcblx0XHRcdGxhYmVsOiAnTm9tYnJlIGNvbWl0w6knXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPTU1JVFRFRV9TRUdNRU5UQVRJT04sXHJcblx0XHRcdGxhYmVsOiAnU2VnbWVudGFjacOzbiBjb21pdMOpJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT01NSVRURUVfQUdHUlVQQVRJT04sXHJcblx0XHRcdGxhYmVsOiAnQWdydXBhY2nDs24gY29taXTDqSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09NTUlUVEVFX0NVVExJTkVfREFURSxcclxuXHRcdFx0bGFiZWw6ICdGZWNoYSBMw61uZWEgZGUgY29ydGUnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPTkZJUk1fTEVHQUxJWkFUSU9OX0FQUE9JTlRNRU5ULFxyXG5cdFx0XHRsYWJlbDogJ0NvbmZpcm1hY2nDs24gZGUgY2l0YSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfRE9DVU1FTlRfTlVNQkVSLFxyXG5cdFx0XHRsYWJlbDogJ07Dum1lcm8gZGUgZG9jdW1lbnRvIGRlIGNvZGV1ZG9yJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT0RFQlRPUl9ET0NVTUVOVF9UWVBFLFxyXG5cdFx0XHRsYWJlbDogJ1RpcG8gZGUgZG9jdW1lbnRvIGRlIGNvZGV1ZG9yJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19DT0RFQlRPUl9OQU1FLFxyXG5cdFx0XHRsYWJlbDogJ05vbWJyZXMgY29kZXVkb3InXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPREVCVE9SX0xBU1ROQU1FLFxyXG5cdFx0XHRsYWJlbDogJ0FwZWxsaWRvcyBjb2RldWRvcidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfVFlQRV9DT0RFQlRPUixcclxuXHRcdFx0bGFiZWw6ICdUaXBvIGRlIHBlcnNvbmEgY29kZXVkb3InXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPREVCVE9SX1ZFSElDTEVTX1FVQU5USVRZLFxyXG5cdFx0XHRsYWJlbDogJ0NhbnRpZGFkIHZlaGljdWxvcyBjb2RldWRvcidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfQVNTRVRTX1FVQU5USVRZLFxyXG5cdFx0XHRsYWJlbDogJ0NhbnRpZGFkIGJpZW5lcyBjb2RldWRvcidcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfUkVWSUVXRVIsXHJcblx0XHRcdGxhYmVsOiAnUmV2aXNvciBkZSBjb2RldWRvcmVzJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19UT1RBTF9XRUlHSFRFRCxcclxuXHRcdFx0bGFiZWw6ICdQb25kZXJhZG8gdG90YWwnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPTlNFQ1VUSVZFX0dVQVJBTlRFRSxcclxuXHRcdFx0bGFiZWw6ICdDb25zZWN1dGl2byBkZSBnYXJhbnRpYXMnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1JFUFJFU0VOVEFUSVZFX05BTUUsXHJcblx0XHRcdGxhYmVsOiAnTm9tYnJlcyByZXByZXNlbnRhbnRlIGxlZ2FsJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19SRVBSRVNFTlRBVElWRV9MQVNUTkFNRSxcclxuXHRcdFx0bGFiZWw6ICdBcGVsbGlkb3MgcmVwcmVzZW50YW50ZSBsZWdhbCdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfUkVQUkVTRU5UQVRJVkVfRE9DVU1FTlRfTlVNQkVSLFxyXG5cdFx0XHRsYWJlbDogJ0NlZHVsYSByZXByZXNlbnRhbnRlIGxlZ2FsJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19VU0VSX1RZUEVfQ1JFRElUX1NUVURZLFxyXG5cdFx0XHRsYWJlbDogJ1RpcG8gdXN1YXJpbyBlc3R1ZGlvIGNyw6lkaXRvJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19EQVksXHJcblx0XHRcdGxhYmVsOiAnRGlhJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19NT05USCxcclxuXHRcdFx0bGFiZWw6ICdNZXMnXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1lFQVIsXHJcblx0XHRcdGxhYmVsOiAnQcOxbydcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ0lUWV9TSUdOQVRVUkUsXHJcblx0XHRcdGxhYmVsOiAnQ2l1ZGFkIGRlIGxhIGZpcm1hJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19MSVNUX0NPREVCVE9SUyxcclxuXHRcdFx0bGFiZWw6ICdMaXN0YSBkZSBjb2RldWRvcmVzJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOX0lOR1JFU09fQ09ERVVET1JfSEFCRUFTX0RBVEEsXHJcblx0XHRcdGxhYmVsOiAnSW5ncmVzbyBDb2RldWRvciBIYWJlYXMgRGF0YSdcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTl9QREZfUkVTVU1FTl9DT0RFVURPUixcclxuXHRcdFx0bGFiZWw6ICdQZGYgY29kZXVkb3InXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX1FVQU5USVRZX1ZFSElDTEVfQkVORUZJQ0lBUlksXHJcblx0XHRcdGxhYmVsOiAnQ2FudGlkYWQgZGUgdmVow61jdWxvcyBkZWwgc2VsZWNjaW9uYWRvJ1xyXG5cdFx0fSxcclxuXHRcdHtcclxuXHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuU1RBVElDX1RPS0VOU19RVUFOVElUWV9BU1NFVFNfQkVORUZJQ0lBUlksXHJcblx0XHRcdGxhYmVsOiAnQ2FudGlkYWQgYmllbmVzIGRlbCBzZWxlY2Npb25hZG8nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0JFTl9DT0RJR08sXHJcblx0XHRcdGxhYmVsOiAnQ8OzZGlnbyBiZW5lZmljaWFyaW8nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5fQ1JFRElUX1JFVklFV0VSX09CU0VSVkFUSU9OUyxcclxuXHRcdFx0bGFiZWw6ICdPYnNlcnZhY2lvbmVzIHJldmlzb3IgZmluYW5jaWVybyBzZWxlY2Npb25hZG8nXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRrZXk6IFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5fQ1JFRElUX1JFVklFV0VSX09CU0VSVkFUSU9OU19DT0RFQlRPUixcclxuXHRcdFx0bGFiZWw6ICdPYnNlcnZhY2lvbmVzIHJldmlzb3IgZmluYW5jaWVybyBjb2RldWRvcmVzJ1xyXG5cdFx0fVxyXG5cdF07XHJcblxyXG5cdHN0YXRpYyBleGNsdWRlZFRva2VuID0gW1xyXG5cdFx0VG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfVVNFUl9UWVBFX0NSRURJVF9TVFVEWS50b0xvd2VyQ2FzZSgpLFxyXG5cdFx0VG9rZW5TZXJ2aWNlLlNUQVRJQ19UT0tFTlNfQ09ERUJUT1JfVkVISUNMRVNfUVVBTlRJVFkudG9Mb3dlckNhc2UoKSxcclxuXHRcdFRva2VuU2VydmljZS5TVEFUSUNfVE9LRU5TX0NPREVCVE9SX0FTU0VUU19RVUFOVElUWS50b0xvd2VyQ2FzZSgpXHJcblx0XTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRASW5qZWN0KCdlbnZpcm9ubWVudCcpIHByaXZhdGUgZW52aXJvbm1lbnQsXHJcblx0XHRwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXHJcblx0XHRwcml2YXRlIGZvcm1TZXJ2aWNlOiBGb3JtU2VydmljZSxcclxuXHRcdHByaXZhdGUgY3VycmVuY3lQaXBlOiBDdXJyZW5jeVBpcGVcclxuXHQpIHsgfVxyXG5cclxuXHQvKiogVGhpcyBwcm9taXNlIGFsbG93cyB0byBleGVjdXRlIGEgZnVuY3Rpb24gd2hlbiBjb25zdWx0aW5nIHRoZSBmb3JtIGZpZWxkcy4gKi9cclxuXHRnZXRGb3JtRmllbGRzQnlQcm9tQ29kZShwcm9tQ29kaWdvKTogUHJvbWlzZTxhbnlbXT4ge1xyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0Ly8gU2VhcmNoIHRoZSBkeW5hbWljIGZvcm1cclxuXHRcdFx0bGV0IGxGb3JtRmllbGRzVG9rZW46IGFueVtdID0gbnVsbDtcclxuXHRcdFx0dGhpcy5mb3JtU2VydmljZS5nZXRCeVByb21Db2RpZ28ocHJvbUNvZGlnbykuc3Vic2NyaWJlKHtcclxuXHRcdFx0XHRuZXh0OiAoYXJyYXlGb3JtczogYW55KSA9PiB7XHJcblx0XHRcdFx0XHRpZiAoYXJyYXlGb3Jtcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRcdGZvciAoY29uc3QgZm9ybXMgb2YgYXJyYXlGb3Jtcykge1xyXG5cdFx0XHRcdFx0XHRcdGlmIChmb3Jtcy5jb21wb25lbnRzICYmIGZvcm1zLmNvbXBvbmVudHMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0Zm9yIChjb25zdCBjb21wb25lbnRzIG9mIGZvcm1zLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNvbXBvbmVudHMuY29tcG9uZW50cyAmJiBjb21wb25lbnRzLmNvbXBvbmVudHMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgY29tcG9uZW50IG9mIGNvbXBvbmVudHMuY29tcG9uZW50cykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNvbXBvbmVudC5jb2x1bW5zICYmIGNvbXBvbmVudC5jb2x1bW5zLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yIChjb25zdCBjQ29tcG9uZW50cyBvZiBjb21wb25lbnQuY29sdW1ucykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChjQ29tcG9uZW50cy5jb21wb25lbnRzICYmIGNDb21wb25lbnRzLmNvbXBvbmVudHMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yIChjb25zdCBpdGVyYXRvciBvZiBjQ29tcG9uZW50cy5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChpdGVyYXRvci50eXBlID09PSAnYWRkcmVzcycpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkZWxldGUgaXRlcmF0b3IuY29tcG9uZW50cztcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0fSBcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRsZXQgZm9ybTogYW55ID0gYXJyYXlGb3JtcztcclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0IWZvcm0gfHxcclxuXHRcdFx0XHRcdFx0IWZvcm1bMF0gfHxcclxuXHRcdFx0XHRcdFx0IWZvcm1bMF0ucHJvbUNvZGlnbyB8fFxyXG5cdFx0XHRcdFx0XHRmb3JtWzBdLnByb21Db2RpZ28gIT0gcHJvbUNvZGlnb1xyXG5cdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdC8vIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnNDA0J10pO1xyXG5cdFx0XHRcdFx0XHRyZXNvbHZlKGxGb3JtRmllbGRzVG9rZW4pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbiA9IFtdO1xyXG5cdFx0XHRcdFx0Zm9yIChsZXQgZm9ybUNvbXAgb2YgZm9ybSkge1xyXG5cdFx0XHRcdFx0XHRsZXQgbmV3Q29tcG9uZW50czogYW55O1xyXG5cdFx0XHRcdFx0XHRsZXQgY29tcG9uZW50czogYW55W10gPSBbXTtcclxuXHRcdFx0XHRcdFx0aWYgKGZvcm1Db21wLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29tcG9uZW50cztcclxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChmb3JtQ29tcC5jb2x1bW5zKSB7XHJcblx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbHVtbnM7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0aWYgKG5ld0NvbXBvbmVudHMgJiYgVXRpbFN0cmluZy5pc1ZhbGlkKGZvcm1Db21wLnRpdGxlKSkge1xyXG5cdFx0XHRcdFx0XHRcdGxGb3JtRmllbGRzVG9rZW4ucHVzaCh7XHJcblx0XHRcdFx0XHRcdFx0XHR0aXRsZToge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRrZXk6IFRva2VuU2VydmljZS5nZXRLZXlGb3JtdWxhcmlvKGZvcm1Db21wLnRpdGxlKSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZvcm1Db21wLnRpdGxlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRvYmplY3Q6IGZvcm1Db21wXHJcblx0XHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IFtdXHJcblx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbltsRm9ybUZpZWxkc1Rva2VuLmxlbmd0aCAtIDFdLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZ2V0Q29tcG9uZW5ldEZvcm0oXHJcblx0XHRcdFx0XHRcdFx0XHRcdGNvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG5ld0NvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG51bGwsXHJcblx0XHRcdFx0XHRcdFx0XHRcdGZhbHNlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRudWxsXHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRyZXNvbHZlKGxGb3JtRmllbGRzVG9rZW4pO1xyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0ZXJyb3I6IChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdFx0cmVqZWN0KGVycm9yKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRnZXRGb3JtRmllbGRzQnlGb3JtSWQoZm9ybUlkOiBzdHJpbmcpOiBQcm9taXNlPGFueVtdPiB7XHJcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHQvLyBTZWFyY2ggdGhlIGR5bmFtaWMgZm9ybVxyXG5cdFx0XHRsZXQgbEZvcm1GaWVsZHNUb2tlbjogYW55W10gPSBudWxsO1xyXG5cdFx0XHR0aGlzLmZvcm1TZXJ2aWNlLmdldEJ5SWQoZm9ybUlkKS5zdWJzY3JpYmUoXHJcblx0XHRcdFx0KHJlc3VsdDogYW55KSA9PiB7XHJcblx0XHRcdFx0XHRsZXQgZm9ybTogYW55ID0gcmVzdWx0O1xyXG5cdFx0XHRcdFx0aWYgKCFmb3JtIHx8ICFmb3JtWzBdKSB7XHJcblx0XHRcdFx0XHRcdHJlc29sdmUobEZvcm1GaWVsZHNUb2tlbik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRsRm9ybUZpZWxkc1Rva2VuID0gW107XHJcblx0XHRcdFx0XHRmb3IgKGxldCBmb3JtQ29tcCBvZiBmb3JtKSB7XHJcblx0XHRcdFx0XHRcdGxldCBuZXdDb21wb25lbnRzOiBhbnk7XHJcblx0XHRcdFx0XHRcdGxldCBjb21wb25lbnRzOiBhbnlbXSA9IFtdO1xyXG5cdFx0XHRcdFx0XHRpZiAoZm9ybUNvbXAuY29tcG9uZW50cykge1xyXG5cdFx0XHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb21wb25lbnRzO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGZvcm1Db21wLmNvbHVtbnMpIHtcclxuXHRcdFx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29sdW1ucztcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRpZiAobmV3Q29tcG9uZW50cyAmJiBVdGlsU3RyaW5nLmlzVmFsaWQoZm9ybUNvbXAudGl0bGUpKSB7XHJcblx0XHRcdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbi5wdXNoKHtcclxuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGtleTogVG9rZW5TZXJ2aWNlLmdldEtleUZvcm11bGFyaW8oZm9ybUNvbXAudGl0bGUpLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogZm9ybUNvbXAudGl0bGUsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG9iamVjdDogZm9ybUNvbXBcclxuXHRcdFx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogW11cclxuXHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0XHRsRm9ybUZpZWxkc1Rva2VuW2xGb3JtRmllbGRzVG9rZW4ubGVuZ3RoIC0gMV0udmFsdWUgPVxyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5nZXRDb21wb25lbmV0Rm9ybShcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29tcG9uZW50cyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0bnVsbCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZmFsc2UsXHJcblx0XHRcdFx0XHRcdFx0XHRcdG51bGxcclxuXHRcdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdHJlc29sdmUobEZvcm1GaWVsZHNUb2tlbik7XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHQoZXJyb3IpID0+IHtcclxuXHRcdFx0XHRcdHJlamVjdChlcnJvcik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKiogVGhpcyBwcm9taXNlIGFsbG93cyB0byBleGVjdXRlIGEgZnVuY3Rpb24gd2hlbiBjb25zdWx0aW5nIHRoZSBmb3JtIGZpZWxkcy4gKi9cclxuXHRnZXRGb3JtUGFuZWxzQnlQcm9tQ29kZShwcm9tQ29kaWdvKTogUHJvbWlzZTxhbnlbXT4ge1xyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0Ly8gU2VhcmNoIHRoZSBkeW5hbWljIGZvcm1cclxuXHRcdFx0bGV0IGxGb3JtUGFubmVsc1Rva2VuOiBhbnlbXSA9IG51bGw7XHJcblx0XHRcdHRoaXMuZm9ybVNlcnZpY2UuZ2V0QnlQcm9tQ29kaWdvKHByb21Db2RpZ28pLnN1YnNjcmliZShcclxuXHRcdFx0XHQocmVzdWx0OiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdGxldCBmb3JtOiBhbnkgPSByZXN1bHQ7XHJcblx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdCFmb3JtIHx8XHJcblx0XHRcdFx0XHRcdCFmb3JtWzBdIHx8XHJcblx0XHRcdFx0XHRcdCFmb3JtWzBdLnByb21Db2RpZ28gfHxcclxuXHRcdFx0XHRcdFx0Zm9ybVswXS5wcm9tQ29kaWdvICE9IHByb21Db2RpZ29cclxuXHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHQvLyB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJzQwNCddKTtcclxuXHRcdFx0XHRcdFx0cmVzb2x2ZShsRm9ybVBhbm5lbHNUb2tlbik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRsRm9ybVBhbm5lbHNUb2tlbiA9IFtdO1xyXG5cdFx0XHRcdFx0Zm9yIChsZXQgZm9ybUNvbXAgb2YgZm9ybSkge1xyXG5cdFx0XHRcdFx0XHRsZXQgbmV3Q29tcG9uZW50czogYW55O1xyXG5cdFx0XHRcdFx0XHRsZXQgY29tcG9uZW50czogYW55W10gPSBbXTtcclxuXHRcdFx0XHRcdFx0aWYgKGZvcm1Db21wLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29tcG9uZW50cztcclxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChmb3JtQ29tcC5jb2x1bW5zKSB7XHJcblx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbHVtbnM7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0aWYgKG5ld0NvbXBvbmVudHMgJiYgVXRpbFN0cmluZy5pc1ZhbGlkKGZvcm1Db21wLnRpdGxlKSkge1xyXG5cdFx0XHRcdFx0XHRcdGxGb3JtUGFubmVsc1Rva2VuLnB1c2goe1xyXG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0a2V5OiBUb2tlblNlcnZpY2UuZ2V0S2V5Rm9ybXVsYXJpbyhmb3JtQ29tcC50aXRsZSksXHJcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBmb3JtQ29tcC50aXRsZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0b2JqZWN0OiBmb3JtQ29tcFxyXG5cdFx0XHRcdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBbXVxyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdGxGb3JtUGFubmVsc1Rva2VuW2xGb3JtUGFubmVsc1Rva2VuLmxlbmd0aCAtIDFdLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZ2V0UGFuZWxDb21wb25lbmV0KGNvbXBvbmVudHMsIG5ld0NvbXBvbmVudHMsIG51bGwpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRyZXNvbHZlKGxGb3JtUGFubmVsc1Rva2VuKTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdFx0cmVqZWN0KGVycm9yKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdCk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVjdXJzaXZlIG1ldGhvZCB0byBnZXQgYWxsIHRoZSBpbmZvcm1hdGlvbiBvZiB0aGUgZWRpdEdyaWQgZHluYW1pYyBmb3JtXHJcblx0ICogQHBhcmFtIGNvbXBvbmVudHNcclxuXHQgKiBAcGFyYW0gZm9ybVxyXG5cdCAqL1xyXG5cdGdldFBhbmVsQ29tcG9uZW5ldChjb21wb25lbnRzOiBhbnlbXSwgZm9ybTogYW55LCBwYW5lbE5hbWU6IHN0cmluZyk6IGFueVtdIHtcclxuXHRcdGZvciAobGV0IGZvcm1Db21wIG9mIGZvcm0pIHtcclxuXHRcdFx0aWYgKGZvcm1Db21wLnR5cGUgPT09ICdwYW5lbCcpIHtcclxuXHRcdFx0XHRjb21wb25lbnRzLnB1c2goZm9ybUNvbXApO1xyXG5cdFx0XHR9IGVsc2UgaWYgKGZvcm1Db21wLmNvbXBvbmVudHMgfHwgZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdGxldCBuZXdDb21wb25lbnRzOiBhbnk7XHJcblx0XHRcdFx0aWYgKGZvcm1Db21wLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb21wb25lbnRzO1xyXG5cdFx0XHRcdH0gZWxzZSBpZiAoZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbHVtbnM7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGNvbXBvbmVudHMgPSB0aGlzLmdldFBhbmVsQ29tcG9uZW5ldChjb21wb25lbnRzLCBuZXdDb21wb25lbnRzLCBwYW5lbE5hbWUpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gY29tcG9uZW50cztcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVjdXJzaXZlIG1ldGhvZCB0byBnZXQgYWxsIHRoZSBpbmZvcm1hdGlvbiBvZiB0aGUgY29tcG9uZW50cyBhIGNvbHVtbnMgb2YgdGhlIGR5bmFtaWMgZm9ybVxyXG5cdCAqIEBwYXJhbSBjb21wb25lbnRzXHJcblx0ICogQHBhcmFtIGZvcm1cclxuXHQgKi9cclxuXHRnZXRDb21wb25lbmV0Rm9ybShcclxuXHRcdGNvbXBvbmVudHM6IGFueVtdLFxyXG5cdFx0Zm9ybTogYW55LFxyXG5cdFx0cGFuZWxOYW1lOiBzdHJpbmcsXHJcblx0XHRlZGl0Z3JpZDogYm9vbGVhbixcclxuXHRcdGVkaXRHcmlkS2V5OiBzdHJpbmdcclxuXHQpOiBhbnlbXSB7XHJcblx0XHRmb3IgKGxldCBmb3JtQ29tcCBvZiBmb3JtKSB7XHJcblx0XHRcdGlmIChmb3JtQ29tcC5jb21wb25lbnRzIHx8IGZvcm1Db21wLmNvbHVtbnMpIHtcclxuXHRcdFx0XHRsZXQgbmV3Q29tcG9uZW50czogYW55O1xyXG5cdFx0XHRcdGlmIChmb3JtQ29tcC5jb21wb25lbnRzKSB7XHJcblx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29tcG9uZW50cztcclxuXHRcdFx0XHRcdGlmIChmb3JtQ29tcC50eXBlID09PSAnZWRpdGdyaWQnKSB7XHJcblx0XHRcdFx0XHRcdGVkaXRncmlkID0gdHJ1ZTtcclxuXHRcdFx0XHRcdFx0ZWRpdEdyaWRLZXkgPSBmb3JtQ29tcC5rZXk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBlbHNlIGlmIChmb3JtQ29tcC5jb2x1bW5zKSB7XHJcblx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29sdW1ucztcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYgKGZvcm1Db21wLnR5cGUgJiYgZm9ybUNvbXAudHlwZSA9PT0gJ3BhbmVsJykge1xyXG5cdFx0XHRcdFx0cGFuZWxOYW1lID0gZm9ybUNvbXAudGl0bGU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGNvbXBvbmVudHMgPSB0aGlzLmdldENvbXBvbmVuZXRGb3JtKFxyXG5cdFx0XHRcdFx0Y29tcG9uZW50cyxcclxuXHRcdFx0XHRcdG5ld0NvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRwYW5lbE5hbWUsXHJcblx0XHRcdFx0XHRlZGl0Z3JpZCxcclxuXHRcdFx0XHRcdGVkaXRHcmlkS2V5XHJcblx0XHRcdFx0KTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRmb3JtQ29tcC5wYW5lbE5hbWUgPSBwYW5lbE5hbWU7XHJcblx0XHRcdFx0Zm9ybUNvbXAuZWRpdGdyaWQgPSBlZGl0Z3JpZDtcclxuXHRcdFx0XHRmb3JtQ29tcC5lZGl0R3JpZEtleSA9IGVkaXRHcmlkS2V5O1xyXG5cdFx0XHRcdGNvbXBvbmVudHMucHVzaChmb3JtQ29tcCk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiBjb21wb25lbnRzO1xyXG5cdH1cclxuXHJcblx0LyoqIFRoaXMgcHJvbWlzZSBhbGxvd3MgdG8gZXhlY3V0ZSBhIGZ1bmN0aW9uIHdoZW4gY29uc3VsdGluZyB0aGUgZm9ybSBmaWVsZHMuICovXHJcblx0Z2V0Rm9ybUVkaXRHcmlkRmllbGRzQnlQcm9tQ29kZShwcm9tQ29kaWdvKTogUHJvbWlzZTxhbnlbXT4ge1xyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0Ly8gU2VhcmNoIHRoZSBkeW5hbWljIGZvcm1cclxuXHRcdFx0bGV0IGxGb3JtRmllbGRzVG9rZW46IGFueVtdID0gbnVsbDtcclxuXHRcdFx0dGhpcy5mb3JtU2VydmljZS5nZXRCeVByb21Db2RpZ28ocHJvbUNvZGlnbykuc3Vic2NyaWJlKFxyXG5cdFx0XHRcdChyZXN1bHQ6IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0bGV0IGZvcm06IGFueSA9IHJlc3VsdDtcclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0IWZvcm0gfHxcclxuXHRcdFx0XHRcdFx0IWZvcm1bMF0gfHxcclxuXHRcdFx0XHRcdFx0IWZvcm1bMF0ucHJvbUNvZGlnbyB8fFxyXG5cdFx0XHRcdFx0XHRmb3JtWzBdLnByb21Db2RpZ28gIT0gcHJvbUNvZGlnb1xyXG5cdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdC8vIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnNDA0J10pO1xyXG5cdFx0XHRcdFx0XHRyZXNvbHZlKGxGb3JtRmllbGRzVG9rZW4pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbiA9IFtdO1xyXG5cdFx0XHRcdFx0Zm9yIChsZXQgZm9ybUNvbXAgb2YgZm9ybSkge1xyXG5cdFx0XHRcdFx0XHRsZXQgbmV3Q29tcG9uZW50czogYW55O1xyXG5cdFx0XHRcdFx0XHRsZXQgY29tcG9uZW50czogYW55W10gPSBbXTtcclxuXHRcdFx0XHRcdFx0aWYgKGZvcm1Db21wLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdFx0XHRuZXdDb21wb25lbnRzID0gZm9ybUNvbXAuY29tcG9uZW50cztcclxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChmb3JtQ29tcC5jb2x1bW5zKSB7XHJcblx0XHRcdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbHVtbnM7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0aWYgKG5ld0NvbXBvbmVudHMgJiYgVXRpbFN0cmluZy5pc1ZhbGlkKGZvcm1Db21wLnRpdGxlKSkge1xyXG5cdFx0XHRcdFx0XHRcdGxGb3JtRmllbGRzVG9rZW4ucHVzaCh7XHJcblx0XHRcdFx0XHRcdFx0XHR0aXRsZToge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRrZXk6IFRva2VuU2VydmljZS5nZXRLZXlGb3JtdWxhcmlvKGZvcm1Db21wLnRpdGxlKSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGZvcm1Db21wLnRpdGxlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRvYmplY3Q6IGZvcm1Db21wXHJcblx0XHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IFtdXHJcblx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdFx0bEZvcm1GaWVsZHNUb2tlbltsRm9ybUZpZWxkc1Rva2VuLmxlbmd0aCAtIDFdLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZ2V0RWRpdEdyaWRDb21wb25lbmV0KGNvbXBvbmVudHMsIG5ld0NvbXBvbmVudHMsIG51bGwpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRyZXNvbHZlKGxGb3JtRmllbGRzVG9rZW4pO1xyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0KGVycm9yKSA9PiB7XHJcblx0XHRcdFx0XHRyZWplY3QoZXJyb3IpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQSByZWN1cnNpdmUgbWV0aG9kIHRvIGdldCBhbGwgdGhlIGluZm9ybWF0aW9uIG9mIHRoZSBlZGl0R3JpZCBkeW5hbWljIGZvcm1cclxuXHQgKiBAcGFyYW0gY29tcG9uZW50c1xyXG5cdCAqIEBwYXJhbSBmb3JtXHJcblx0ICovXHJcblx0Z2V0RWRpdEdyaWRDb21wb25lbmV0KGNvbXBvbmVudHM6IGFueVtdLCBmb3JtOiBhbnksIHBhbmVsTmFtZTogc3RyaW5nKTogYW55W10ge1xyXG5cdFx0Zm9yIChsZXQgZm9ybUNvbXAgb2YgZm9ybSkge1xyXG5cdFx0XHRpZiAoZm9ybUNvbXAudHlwZSA9PT0gJ2VkaXRncmlkJykge1xyXG5cdFx0XHRcdGZvcm1Db21wLnBhbmVsTmFtZSA9IHBhbmVsTmFtZTtcclxuXHRcdFx0XHRjb21wb25lbnRzLnB1c2goZm9ybUNvbXApO1xyXG5cdFx0XHR9IGVsc2UgaWYgKGZvcm1Db21wLmNvbXBvbmVudHMgfHwgZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdGxldCBuZXdDb21wb25lbnRzOiBhbnk7XHJcblx0XHRcdFx0aWYgKGZvcm1Db21wLmNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHRcdG5ld0NvbXBvbmVudHMgPSBmb3JtQ29tcC5jb21wb25lbnRzO1xyXG5cdFx0XHRcdH0gZWxzZSBpZiAoZm9ybUNvbXAuY29sdW1ucykge1xyXG5cdFx0XHRcdFx0bmV3Q29tcG9uZW50cyA9IGZvcm1Db21wLmNvbHVtbnM7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChmb3JtQ29tcC50eXBlICYmIGZvcm1Db21wLnR5cGUgPT09ICdwYW5lbCcpIHtcclxuXHRcdFx0XHRcdHBhbmVsTmFtZSA9IGZvcm1Db21wLnRpdGxlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRjb21wb25lbnRzID0gdGhpcy5nZXRFZGl0R3JpZENvbXBvbmVuZXQoY29tcG9uZW50cywgbmV3Q29tcG9uZW50cywgcGFuZWxOYW1lKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGNvbXBvbmVudHM7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgcmV0dXJucyB0aGUgdG9rZW5zIGJ5IHByb21Db2RpZ28gKi9cclxuXHRnZXRMaXN0QnlQcm9tQ29kaWdvKHByb21Db2RlOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmNvbmZpZ3VyYXRpb24gKyAndG9rZW4vZ2V0QnlQcm9tQ29kaWdvJyxcclxuXHRcdFx0eyBwYXJhbXM6IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdwcm9tQ29kaWdvJywgcHJvbUNvZGUudG9TdHJpbmcoKSkgfVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdC8qKiBJdCByZXR1cm5zIHRoZSB0b2tlbiBieSBpZCAqL1xyXG5cdGdldEJ5SWQoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldCh0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5jb25maWd1cmF0aW9uICsgJ3Rva2VuL2dldEJ5SWQnLCB7XHJcblx0XHRcdHBhcmFtczogbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ2lkJywgaWQudG9TdHJpbmcoKSlcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqIEl0IGRlbGV0ZXMgYSBmb3JtIGJ5IGlkICovXHJcblx0ZGVsZXRlKGlkKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdHJldHVybiB0aGlzLmh0dHBDbGllbnQuZGVsZXRlKFxyXG5cdFx0XHR0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5jb25maWd1cmF0aW9uICsgJ3Rva2VuL2RlbGV0ZScsXHJcblx0XHRcdHsgcGFyYW1zOiBuZXcgSHR0cFBhcmFtcygpLnNldCgnaWQnLCBpZCkgfVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdC8qKiBJdCBzYXZlcyB0aGUgdG9rZW4gKi9cclxuXHRzYXZlKHRva2VuOiBUb2tlbik6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmNvbmZpZ3VyYXRpb24gKyAndG9rZW4vc2F2ZScsXHJcblx0XHRcdHRva2VuLFxyXG5cdFx0XHRIRUFERVJfSlNPTlxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRLZXlGb3JtdWxhcmlvKGZvcm1UaXRsZTogc3RyaW5nKTogc3RyaW5nIHtcclxuXHRcdGlmIChVdGlsU3RyaW5nLmlzVmFsaWQoZm9ybVRpdGxlKSkge1xyXG5cdFx0XHRyZXR1cm4gKFxyXG5cdFx0XHRcdFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfRk9STSkgK1xyXG5cdFx0XHRcdFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhmb3JtVGl0bGUpLnJlcGxhY2UoL18vZywgJy0nKVxyXG5cdFx0XHQpO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuICcnO1xyXG5cdH1cclxuXHJcblx0LyoqIEl0IHJldHVybnMgdGhlIHVuaXF1ZSB2ZXJpZmljYXRpb24gY29kZSAqL1xyXG5cdGdldFVuaXF1ZVZlcmlmaWNhdGlvbkNvZGUobG9naW46IHN0cmluZywgdG9rZW46IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChcclxuXHRcdFx0dGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuZG9jdW1lbnRzUmVwb3NpdG9yeSArXHJcblx0XHRcdCdkb2N1bWVudG8vY29uc3VsdGFyQ29kaWdvVW5pY28vJyArXHJcblx0XHRcdGxvZ2luICtcclxuXHRcdFx0Jy8nICtcclxuXHRcdFx0dG9rZW4sXHJcblx0XHRcdHsgcGFyYW1zOiBuZXcgSHR0cFBhcmFtcygpIH1cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgc2VuZCB0aGUgaW5mb3JtYXRpb24gdG8gY29weSB0aGUgRG9jdW1lbnQgdmlld2VyICovXHJcblx0Y29weURvY3VtZW50SW5mb3JtYXRpb25WaWV3ZXIoXHJcblx0XHRsb2dpbjogc3RyaW5nLFxyXG5cdFx0dG9rZW46IHN0cmluZyxcclxuXHRcdHVuaXF1ZUNvZGU6IHN0cmluZyxcclxuXHRcdGRvY3VtZW50VVJMOiBzdHJpbmcsXHJcblx0XHRkb2N1bWVudE5hbWU6IHN0cmluZ1xyXG5cdCk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRsZXQgaW5mb0RvY3VtZW50byA9IHtcclxuXHRcdFx0Y29kaWdvVW5pY286IHVuaXF1ZUNvZGUsXHJcblx0XHRcdHJ1dGFEb2N1bWVudG86IGRvY3VtZW50VVJMLFxyXG5cdFx0XHRkb2N1bWVudE5hbWU6IGRvY3VtZW50TmFtZVxyXG5cdFx0fTtcclxuXHRcdHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdChcclxuXHRcdFx0dGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuZG9jdW1lbnRzUmVwb3NpdG9yeSArXHJcblx0XHRcdCdkb2N1bWVudG8vYWRpY2lvbmFyRG9jdW1lbnRvLycgK1xyXG5cdFx0XHRsb2dpbiArXHJcblx0XHRcdCcvJyArXHJcblx0XHRcdHRva2VuLFxyXG5cdFx0XHRpbmZvRG9jdW1lbnRvLFxyXG5cdFx0XHRIRUFERVJfSlNPTlxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRLZXlCdWRnZXQoKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX0JVREdFVCk7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0S2V5RG9jdW1lbnQoKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiBVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX0RPQ1VNRU5UTyk7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgZ2V0S2V5VGFzaygpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfVEFTS0wpO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGdldEtleVN0YXRpYygpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfU1RBVElDKTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRLZXlDYWxjdWxhdGVkKHRva2VuOiBUb2tlbik6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gKFxyXG5cdFx0XHRVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX0NBTENVTEFURUQpICtcclxuXHRcdFx0J18nICtcclxuXHRcdFx0VXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKHRva2VuLm5hbWUpXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGdldEtleVNuYXBzaG90KHRva2VuOiBUb2tlbik6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gKFxyXG5cdFx0XHRVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX1NOQVBTSE9UKSArXHJcblx0XHRcdCdfJyArXHJcblx0XHRcdFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyh0b2tlbi5uYW1lKVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRLZXlHdWFyYW50ZWUodG9rZW46IFBsaUNuZkd1YXJhbnRlZVRva2VuKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiAoXHJcblx0XHRcdFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfR1VBUkFOVEVFKSArXHJcblx0XHRcdCdfJyArXHJcblx0XHRcdFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyh0b2tlbi5uYW1lKVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJldHVybiBhIHZhbHVlIHRoYXQgcmVwcmVzZW50IHRoZSB0eXBlIG9mIGxhYmVsOiAxPUZvcm0sIDI9QnVkZ2V0LCAzPVN0YXRpYywgND1DYWxjdWxhdGVkXHJcblx0ICogQHBhcmFtIGtleSBWYWx1ZSB0byBldmFsdWVhdGVcclxuXHQgKi9cclxuXHRzdGF0aWMgZ2V0S2V5VHlwZShrZXk6IHN0cmluZyk6IG51bWJlciB7XHJcblx0XHRrZXkgPSBrZXkucmVwbGFjZSgneycsICcnKS5yZXBsYWNlKCd9JywgJycpO1xyXG5cdFx0a2V5ID0ga2V5LnN1YnN0cmluZygxLCBrZXkuaW5kZXhPZignXycpKTtcclxuXHRcdGlmIChrZXkuc3RhcnRzV2l0aChVdGlsU3RyaW5nLnJlcGxhY2VBY2NlbnRTcGFjZXNPdGhlcnMoVG9rZW5TZXJ2aWNlLlRPS0VOX0xBQkVMX0ZPUk0pKSkge1xyXG5cdFx0XHRyZXR1cm4gMTtcclxuXHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdGtleS5zdGFydHNXaXRoKFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfQlVER0VUKSlcclxuXHRcdCkge1xyXG5cdFx0XHRyZXR1cm4gMjtcclxuXHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdGtleS5zdGFydHNXaXRoKFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfU1RBVElDKSlcclxuXHRcdCkge1xyXG5cdFx0XHRyZXR1cm4gMztcclxuXHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdGtleS5zdGFydHNXaXRoKFxyXG5cdFx0XHRcdFV0aWxTdHJpbmcucmVwbGFjZUFjY2VudFNwYWNlc090aGVycyhUb2tlblNlcnZpY2UuVE9LRU5fTEFCRUxfQ0FMQ1VMQVRFRClcclxuXHRcdFx0KVxyXG5cdFx0KSB7XHJcblx0XHRcdHJldHVybiA0O1xyXG5cdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0a2V5LnN0YXJ0c1dpdGgoVXRpbFN0cmluZy5yZXBsYWNlQWNjZW50U3BhY2VzT3RoZXJzKFRva2VuU2VydmljZS5UT0tFTl9MQUJFTF9UQVNLTCkpXHJcblx0XHQpIHtcclxuXHRcdFx0cmV0dXJuIDU7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gbnVsbDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIERlcGVuZHMgb2YgdGhlIHR5cGUgb2YgZm9ybUZpZWxkVG9rZW4gcmV0dXJuIGRlIHZhbHVlIG9mIHRoZSB2YWx1ZURhdGFcclxuXHQgKiBAcGFyYW0gZm9ybUZpZWxkVG9rZW5cclxuXHQgKiBAcGFyYW0gdmFsdWVEYXRhXHJcblx0ICovXHJcblx0Z2V0VmFsdWVGcm9tRm9ybUZpZWxkKGZvcm1GaWVsZFRva2VuOiBhbnksIHZhbHVlRGF0YTogYW55KTogYW55IHtcclxuXHRcdGlmICh0eXBlb2YgdmFsdWVEYXRhID09ICdvYmplY3QnKSB7XHJcblx0XHRcdGlmIChmb3JtRmllbGRUb2tlbi50eXBlKSB7XHJcblx0XHRcdFx0aWYgKGZvcm1GaWVsZFRva2VuLnR5cGUgPT0gJ2FkZHJlc3MnKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gdmFsdWVEYXRhLmZvcm1hdHRlZF9hZGRyZXNzO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRmb3JtRmllbGRUb2tlbi50eXBlID09ICdzZWxlY3QnICYmXHJcblx0XHRcdFx0XHRmb3JtRmllbGRUb2tlbi5zZWFyY2hGaWVsZCAmJlxyXG5cdFx0XHRcdFx0dmFsdWVEYXRhLmhhc093blByb3BlcnR5KGZvcm1GaWVsZFRva2VuLnNlYXJjaEZpZWxkKVxyXG5cdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0cmV0dXJuIHZhbHVlRGF0YVtmb3JtRmllbGRUb2tlbi5zZWFyY2hGaWVsZF07XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gdmFsdWVEYXRhO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVHJ5IHRvIGZpbmQgdGhlIHRva2VuIGluIHRoZSBzdHJpbmdUZXh0IGFuZCByZXBsYWNlIHdpdGggZGF0YVZhbHVlLiBJZiBkZXRlY3QgZm9ybWF0IG9mIG51bWJlciBvciBkYXRlIHRyeSB0byBmb3JtYXQgdGhlIGRhdGFWYWx1ZVxyXG5cdCAqIEBwYXJhbSBzdHJpbmdUZXh0XHJcblx0ICogQHBhcmFtIHRva2VuXHJcblx0ICogQHBhcmFtIGRhdGFWYWx1ZVxyXG5cdCAqL1xyXG5cdHJlcGxhY2VUb2tlbihzdHJpbmdUZXh0OiBzdHJpbmcsIHRva2VuOiBhbnksIGRhdGFWYWx1ZTogYW55KTogc3RyaW5nIHtcclxuXHRcdGxldCB2YWx1ZVJlcGxhY2U6IHN0cmluZyA9IG51bGw7XHJcblx0XHRpZiAodG9rZW4gJiYgdG9rZW5bMF0gPT0gJyMnKSB7XHJcblx0XHRcdGxldCB0eXBlVG9rZW4gPSB0b2tlbi5zdWJzdHJpbmcoMSwgdG9rZW4uaW5kZXhPZignKCcpKTtcclxuXHRcdFx0aWYgKHR5cGVUb2tlbiA9PSAnZGF0ZScpIHtcclxuXHRcdFx0XHRsZXQgZGF0ZUZvcm1hdDogc3RyaW5nID0gdG9rZW4uc3Vic3RyaW5nKFxyXG5cdFx0XHRcdFx0dG9rZW4uaW5kZXhPZignfScpICsgMSxcclxuXHRcdFx0XHRcdHRva2VuLmluZGV4T2YoJyknKVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0ZGF0ZUZvcm1hdCA9IGRhdGVGb3JtYXQudHJpbSgpLnJlcGxhY2UoL1xcXCIvZywgJycpLnJlcGxhY2UoL1xcJy9nLCAnJyk7XHJcblx0XHRcdFx0bGV0IGRhdGVWYWx1ZSA9IERhdGVVdGlsLmdldERhdGUoZGF0YVZhbHVlKTtcclxuXHRcdFx0XHRpZiAoZGF0ZVZhbHVlKSB7XHJcblx0XHRcdFx0XHR2YWx1ZVJlcGxhY2UgPSBEYXRlVXRpbC5nZXRNb21lbnQoZGF0ZVZhbHVlKS5mb3JtYXQoZGF0ZUZvcm1hdCk7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHZhbHVlUmVwbGFjZSA9ICcnO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBlbHNlIGlmICh0eXBlVG9rZW4gPT0gJ251bWJlcicpIHtcclxuXHRcdFx0XHRsZXQgbnVtYmVyVmFsdWU6IG51bWJlciA9IE51bWJlcihkYXRhVmFsdWUpO1xyXG5cdFx0XHRcdGlmIChudW1iZXJWYWx1ZSAhPSB1bmRlZmluZWQgJiYgIWlzTmFOKG51bWJlclZhbHVlKSkge1xyXG5cdFx0XHRcdFx0bGV0IG51bWJlckZvcm1hdDogc3RyaW5nID0gdG9rZW4uc3Vic3RyaW5nKFxyXG5cdFx0XHRcdFx0XHR0b2tlbi5pbmRleE9mKCd9JykgKyAxLFxyXG5cdFx0XHRcdFx0XHR0b2tlbi5pbmRleE9mKCcpJylcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRudW1iZXJGb3JtYXQgPSBudW1iZXJGb3JtYXQudHJpbSgpLnJlcGxhY2UoL1xcXCIvZywgJycpLnJlcGxhY2UoL1xcJy9nLCAnJyk7XHJcblx0XHRcdFx0XHR2YWx1ZVJlcGxhY2UgPSB0aGlzLmN1cnJlbmN5UGlwZS50cmFuc2Zvcm0oXHJcblx0XHRcdFx0XHRcdG51bWJlclZhbHVlLFxyXG5cdFx0XHRcdFx0XHR0aGlzLmxvY2FsZSxcclxuXHRcdFx0XHRcdFx0JycsXHJcblx0XHRcdFx0XHRcdG51bWJlckZvcm1hdFxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coXHJcblx0XHRcdFx0XHRcdCdFbCBkYXRvIFsnICtcclxuXHRcdFx0XHRcdFx0ZGF0YVZhbHVlICtcclxuXHRcdFx0XHRcdFx0J10gcGFyYSBlbCB0b2tlbiBbJyArXHJcblx0XHRcdFx0XHRcdHRva2VuICtcclxuXHRcdFx0XHRcdFx0J10gdGlwbyBuw7ptZXJpY28gbm8gZXMgdmFsaWRvJ1xyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdHZhbHVlUmVwbGFjZSA9ICcnO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRjb25zb2xlLmxvZygndGlwbyBkZSB0b2tlbiBpbmRlZmluaWRvLiBbdHlwZVRva2VuWycgKyB0eXBlVG9rZW4gKyAnXV0nKTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIGlmICh0b2tlbiAmJiB0b2tlblswXSA9PSAnJCcpIHtcclxuXHRcdFx0dmFsdWVSZXBsYWNlID0gZGF0YVZhbHVlO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Y29uc29sZS5sb2coJ0VsIHRva2VuIG5vIGVzIHZhbGlkby4gW3Rva2VuWycgKyB0b2tlbiArICddXScpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHN0cmluZ1RleHQgJiYgdmFsdWVSZXBsYWNlICE9PSBudWxsKSB7XHJcblx0XHRcdC8vIHJlcGxhY2UgdGV4dCBpbiBhIG1vcmUgZWZmaWNpZW50IHdheVxyXG5cdFx0XHRzdHJpbmdUZXh0ID0gc3RyaW5nVGV4dC5zcGxpdCh0b2tlbikuam9pbih2YWx1ZVJlcGxhY2UpO1xyXG5cdFx0XHQvL3N0cmluZ1RleHQgPSBzdHJpbmdUZXh0LnJlcGxhY2UodG9rZW4sIHZhbHVlUmVwbGFjZSk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gc3RyaW5nVGV4dDtcclxuXHR9XHJcblxyXG5cdGdldExpc3RUb2tlbnNCeVN0cmluZ1NlZ21lbnRhdGlvbihzdHJpbmdUZXh0OiBzdHJpbmcpOiBhbnlbXSB7XHJcblx0XHRjb25zdCBhcnJheVRva2VuID0gc3RyaW5nVGV4dC5tYXRjaCgvXFwkeyhbXn1dKylcXH0vZyk7XHJcblx0XHRjb25zdCBhcnJheVRva2VuRm9ybWF0dGVkRGF0ZSA9IHN0cmluZ1RleHQubWF0Y2goL1xcI2RhdGVbXildK1xcKS9nKTtcclxuXHRcdGNvbnN0IGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIgPSBzdHJpbmdUZXh0Lm1hdGNoKC9cXCNudW1iZXJbXildK1xcKS9nKTtcclxuXHRcdGxldCBhcnJheVRva2VuRm9ybWF0dGVkID0gW107XHJcblx0XHRpZiAoXHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlICYmXHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlLmxlbmd0aCA+IDAgJiZcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlciAmJlxyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyLmxlbmd0aCA+IDBcclxuXHRcdCkge1xyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkID0gYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUuY29uY2F0KGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIpO1xyXG5cdFx0fSBlbHNlIGlmIChhcnJheVRva2VuRm9ybWF0dGVkRGF0ZSAmJiBhcnJheVRva2VuRm9ybWF0dGVkRGF0ZS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWQgPSBhcnJheVRva2VuRm9ybWF0dGVkRGF0ZS5zbGljZSgpO1xyXG5cdFx0fSBlbHNlIGlmIChhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyICYmIGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkID0gYXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlci5zbGljZSgpO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3QgcmVzdWx0OiBhbnlbXSA9IFtdO1xyXG5cclxuXHRcdGlmIChhcnJheVRva2VuKSB7XHJcblx0XHRcdGZvciAoY29uc3QgdG9rZW4gb2YgYXJyYXlUb2tlbikge1xyXG5cdFx0XHRcdGNvbnN0IGluZm9Ub2tlbiA9IHsga2V5OiB0b2tlbiwgdmFsdWU6IHRva2VuIH07XHJcblx0XHRcdFx0aWYgKGFycmF5VG9rZW5Gb3JtYXR0ZWQpIHtcclxuXHRcdFx0XHRcdGZvciAoY29uc3QgdG9rZW5Gb3JtYXR0ZWQgb2YgYXJyYXlUb2tlbkZvcm1hdHRlZCkge1xyXG5cdFx0XHRcdFx0XHRjb25zdCBpbmRleCA9IHRva2VuRm9ybWF0dGVkLmluZGV4T2YodG9rZW4pO1xyXG5cdFx0XHRcdFx0XHRpZiAoaW5kZXggPj0gMCkge1xyXG5cdFx0XHRcdFx0XHRcdGluZm9Ub2tlbi52YWx1ZSA9IHRva2VuRm9ybWF0dGVkO1xyXG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHJlc3VsdC5wdXNoKGluZm9Ub2tlbik7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gcmVzdWx0O1xyXG5cdH1cclxuXHJcblx0Y2hhbmdlSWRQcm9wZXJ0aWVzT2ZPYmplY3Qobm9ybWFsaXphdGlvbkNvbHVtbnM6IGFueVtdLCBsaXN0RGF0YTogYW55W10pOiBhbnlbXSB7XHJcblx0XHRjb25zdCBuZXdEYXRhID0gW107XHJcblx0XHRsaXN0RGF0YS5mb3JFYWNoKChkYXRhKSA9PiB7XHJcblx0XHRcdGNvbnN0IG9iakRhdGEgPSB7fTtcclxuXHRcdFx0T2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaCgocHJvcGVydHkpID0+IHtcclxuXHRcdFx0XHRpZiAoZGF0YS5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkpIHtcclxuXHRcdFx0XHRcdG5vcm1hbGl6YXRpb25Db2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG5cdFx0XHRcdFx0XHRpZiAoY29sdW1uLmlkQ29sdW1uLnRvU3RyaW5nKCkgPT09IHByb3BlcnR5KSB7XHJcblx0XHRcdFx0XHRcdFx0b2JqRGF0YVtjb2x1bW4ua2V5XSA9IGRhdGFbcHJvcGVydHldO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0XHRpZiAob2JqRGF0YSkge1xyXG5cdFx0XHRcdG5ld0RhdGEucHVzaChvYmpEYXRhKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0XHRyZXR1cm4gbmV3RGF0YTtcclxuXHR9XHJcblxyXG5cdGdlbmVyYXRlSHRtbEJ5VG9rZW5zQW5kRGF0YShodG1sOiBzdHJpbmcsIGxpc3REYXRhOiBhbnlbXSwgbGlzdFRva2VuczogYW55W10pOiBzdHJpbmdbXSB7XHJcblx0XHRjb25zdCB0cmFuc2xhdGVkQ2FyZHM6IGFueVtdID0gW107XHJcblx0XHRsaXN0RGF0YS5mb3JFYWNoKChkYXRhKSA9PiB7XHJcblx0XHRcdGNvbnN0IG9ialRva2VuID0ge307XHJcblx0XHRcdGNvbnN0IGh0bWxUcmFuc2xhdGVkID0geyBodG1sOiBodG1sIH07XHJcblx0XHRcdE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goKHByb3BlcnR5KSA9PiB7XHJcblx0XHRcdFx0bGlzdFRva2Vucy5mb3JFYWNoKCh0b2tlbikgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKHByb3BlcnR5ID09IHRva2VuLmtleS5yZXBsYWNlKCckeycsICcnKS5yZXBsYWNlKCd9JywgJycpKSB7XHJcblx0XHRcdFx0XHRcdG9ialRva2VuW3Rva2VuLmtleV0gPSBkYXRhW3Byb3BlcnR5XTtcclxuXHRcdFx0XHRcdFx0aHRtbFRyYW5zbGF0ZWQuaHRtbCA9IGh0bWxUcmFuc2xhdGVkLmh0bWwucmVwbGFjZShcclxuXHRcdFx0XHRcdFx0XHR0b2tlbi5rZXksXHJcblx0XHRcdFx0XHRcdFx0ZGF0YVtwcm9wZXJ0eV1cclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSk7XHJcblx0XHRcdHRyYW5zbGF0ZWRDYXJkcy5wdXNoKGh0bWxUcmFuc2xhdGVkKTtcclxuXHRcdH0pO1xyXG5cdFx0cmV0dXJuIHRyYW5zbGF0ZWRDYXJkcztcclxuXHR9XHJcblxyXG5cdGdldExpc3RUb2tlbnNCeVN0cmluZyhzdHJpbmdUZXh0OiBzdHJpbmcpOiBhbnlbXSB7XHJcblx0XHR2YXIgYXJyYXlUb2tlbiA9IHN0cmluZ1RleHQubWF0Y2goL1xcJHsoW159XSspXFx9L2cpO1xyXG5cdFx0dmFyIGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlID0gc3RyaW5nVGV4dC5tYXRjaCgvXFwjZGF0ZVteKV0rXFwpL2cpO1xyXG5cdFx0dmFyIGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIgPSBzdHJpbmdUZXh0Lm1hdGNoKC9cXCNudW1iZXJbXildK1xcKS9nKTtcclxuXHRcdHZhciBhcnJheVRva2VuRm9ybWF0dGVkID0gW107XHJcblx0XHRpZiAoXHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlICYmXHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWREYXRlLmxlbmd0aCA+IDAgJiZcclxuXHRcdFx0YXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlciAmJlxyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyLmxlbmd0aCA+IDBcclxuXHRcdCkge1xyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkID0gYXJyYXlUb2tlbkZvcm1hdHRlZERhdGUuY29uY2F0KGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIpO1xyXG5cdFx0fSBlbHNlIGlmIChhcnJheVRva2VuRm9ybWF0dGVkRGF0ZSAmJiBhcnJheVRva2VuRm9ybWF0dGVkRGF0ZS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdGFycmF5VG9rZW5Gb3JtYXR0ZWQgPSBhcnJheVRva2VuRm9ybWF0dGVkRGF0ZS5zbGljZSgpO1xyXG5cdFx0fSBlbHNlIGlmIChhcnJheVRva2VuRm9ybWF0dGVkTnVtYmVyICYmIGFycmF5VG9rZW5Gb3JtYXR0ZWROdW1iZXIubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRhcnJheVRva2VuRm9ybWF0dGVkID0gYXJyYXlUb2tlbkZvcm1hdHRlZE51bWJlci5zbGljZSgpO1xyXG5cdFx0fVxyXG5cdFx0dmFyIHJlc3VsdDogYW55W10gPSBbXTtcclxuXHJcblx0XHRpZiAoYXJyYXlUb2tlbikge1xyXG5cdFx0XHRmb3IgKGNvbnN0IHRva2VuIG9mIGFycmF5VG9rZW4pIHtcclxuXHRcdFx0XHRsZXQga2V5VHlwZTogbnVtYmVyID0gVG9rZW5TZXJ2aWNlLmdldEtleVR5cGUodG9rZW4pO1xyXG5cdFx0XHRcdGlmIChrZXlUeXBlID09PSBudWxsKSB7XHJcblx0XHRcdFx0XHRjb250aW51ZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dmFyIGluZm9Ub2tlbiA9IHsga2V5OiB0b2tlbiwgdmFsdWU6IHRva2VuIH07XHJcblx0XHRcdFx0aWYgKGFycmF5VG9rZW5Gb3JtYXR0ZWQpIHtcclxuXHRcdFx0XHRcdGZvciAoY29uc3QgdG9rZW5Gb3JtYXR0ZWQgb2YgYXJyYXlUb2tlbkZvcm1hdHRlZCkge1xyXG5cdFx0XHRcdFx0XHR2YXIgaW5kZXggPSB0b2tlbkZvcm1hdHRlZC5pbmRleE9mKHRva2VuKTtcclxuXHRcdFx0XHRcdFx0aWYgKGluZGV4ID49IDApIHtcclxuXHRcdFx0XHRcdFx0XHRpbmZvVG9rZW4udmFsdWUgPSB0b2tlbkZvcm1hdHRlZDtcclxuXHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXN1bHQucHVzaChpbmZvVG9rZW4pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHJlc3VsdDtcclxuXHJcblx0XHQvLyBsZXQgdG9rZW5zOiBhbnlbXSA9IFtdO1xyXG5cdFx0Ly8gbGV0IGkgPSB0aGlzLm5leHRWYWxpZFBvc2l0aW9uVG9rZW5zKHN0cmluZ1RleHQsIDApO1xyXG5cdFx0Ly8gbGV0IGNvdW50ID0gMDtcclxuXHRcdC8vIHdoaWxlIChpID49IDAgJiYgY291bnQgPD0gMTApIHtcclxuXHRcdC8vICAgbGV0IGluZm9Ub2tlbjoge30gPSBudWxsO1xyXG5cdFx0Ly8gICBsZXQgbmV4dEk6IG51bWJlciA9IGk7XHJcblx0XHQvLyAgIGxldCBjaGFyYWN0ZXIgPSBzdHJpbmdUZXh0LnN1YnN0cmluZyhpLCAoaSArIDEpKTtcclxuXHRcdC8vICAgaWYgKGNoYXJhY3RlciA9PSBcIiRcIikge1xyXG5cdFx0Ly8gICAgIGxldCBuZXh0Q2hhcmFjdGVyID0gc3RyaW5nVGV4dC5zdWJzdHJpbmcoKGkgKyAxKSwgKGkgKyAyKSk7XHJcblx0XHQvLyAgICAgLy8gVGhlIG5leHQgY2hhcmFjdGVyIG5lZWQgdG8gYmUgYSB7IHNpZ25cclxuXHRcdC8vICAgICBpZiAobmV4dENoYXJhY3RlciAhPSBcIntcIikge1xyXG5cdFx0Ly8gICAgICAgaSA9IHRoaXMubmV4dFZhbGlkUG9zaXRpb25Ub2tlbnMoc3RyaW5nVGV4dCwgbmV4dEkgKyAxKTtcclxuXHRcdC8vICAgICAgIGNvbnRpbnVlO1xyXG5cdFx0Ly8gICAgIH1cclxuXHRcdC8vICAgICBsZXQga2V5VG9rZW46IHN0cmluZyA9IHN0cmluZ1RleHQuc3Vic3RyaW5nKGksIHN0cmluZ1RleHQuaW5kZXhPZihcIn1cIiwgaSkgKyAxKTtcclxuXHRcdC8vICAgICAvLyBJZiB0aGUgdG9rZW4gaGF2ZSBhIHZhbGlkIGtleSB0eXBlXHJcblx0XHQvLyAgICAgbGV0IGtleVR5cGU6IG51bWJlciA9IFRva2VuU2VydmljZS5nZXRLZXlUeXBlKGtleVRva2VuLnJlcGxhY2UoXCJ7XCIsIFwiXCIpLnJlcGxhY2UoXCJ9XCIsIFwiXCIpKTtcclxuXHRcdC8vICAgICBpZiAoa2V5VHlwZSA9PT0gbnVsbCkge1xyXG5cdFx0Ly8gICAgICAgaSA9IHRoaXMubmV4dFZhbGlkUG9zaXRpb25Ub2tlbnMoc3RyaW5nVGV4dCwgbmV4dEkgKyAxKTtcclxuXHRcdC8vICAgICAgIGNvbnRpbnVlO1xyXG5cdFx0Ly8gICAgIH1cclxuXHRcdC8vICAgICBpbmZvVG9rZW4gPSB7XHJcblx0XHQvLyAgICAgICBrZXk6IGtleVRva2VuLFxyXG5cdFx0Ly8gICAgICAgdmFsdWU6IGtleVRva2VuXHJcblx0XHQvLyAgICAgfTtcclxuXHRcdC8vICAgICBuZXh0SSA9IHN0cmluZ1RleHQuaW5kZXhPZihcIn1cIiwgaSk7XHJcblx0XHQvLyAgIH0gZWxzZSB7XHJcblx0XHQvLyAgICAgbGV0IG5leHRTaWduOiBudW1iZXIgPSBzdHJpbmdUZXh0LmluZGV4T2YoXCIkXCIsIGkpO1xyXG5cdFx0Ly8gICAgIC8vIFdlIGlubHkgc3VwcG9ydCAjZGF0ZSgkIGFuZCAjbnVtYmVyKCQgaW4gdGhpcyAyIHNjZW5hcmlvcyB0aGUgbGVuZ2h0IGNhbid0IGJlIG1vcmUgdGhhbiAxMCBjaGFyYWN0ZXJzXHJcblx0XHQvLyAgICAgaWYgKG5leHRTaWduIDwgMCB8fCAobmV4dFNpZ24gLSBpKSA+IDEwKSB7XHJcblx0XHQvLyAgICAgICBpID0gdGhpcy5uZXh0VmFsaWRQb3NpdGlvblRva2VucyhzdHJpbmdUZXh0LCBuZXh0SSArIDEpO1xyXG5cdFx0Ly8gICAgICAgY29udGludWU7XHJcblx0XHQvLyAgICAgfVxyXG5cdFx0Ly8gICAgIGxldCBrZXlUb2tlbjogc3RyaW5nID0gc3RyaW5nVGV4dC5zdWJzdHJpbmcoc3RyaW5nVGV4dC5pbmRleE9mKFwiJFwiLCBpKSwgc3RyaW5nVGV4dC5pbmRleE9mKFwifVwiLCBpKSArIDEpO1xyXG5cdFx0Ly8gICAgIGxldCB2YWx1ZVRva2VuOiBzdHJpbmcgPSBzdHJpbmdUZXh0LnN1YnN0cmluZyhpLCBzdHJpbmdUZXh0LmluZGV4T2YoXCIpXCIsIGkpICsgMSk7XHJcblx0XHQvLyAgICAgaW5mb1Rva2VuID0ge1xyXG5cdFx0Ly8gICAgICAga2V5OiBrZXlUb2tlbixcclxuXHRcdC8vICAgICAgIHZhbHVlOiB2YWx1ZVRva2VuXHJcblx0XHQvLyAgICAgfTtcclxuXHRcdC8vICAgICBuZXh0SSA9IHN0cmluZ1RleHQuaW5kZXhPZihcIilcIiwgaSk7XHJcblx0XHQvLyAgIH1cclxuXHRcdC8vICAgdG9rZW5zLnB1c2goaW5mb1Rva2VuKTtcclxuXHRcdC8vICAgaSA9IHRoaXMubmV4dFZhbGlkUG9zaXRpb25Ub2tlbnMoc3RyaW5nVGV4dCwgbmV4dEkpO1xyXG5cdFx0Ly8gICBjb3VudCsrO1xyXG5cdFx0Ly8gfVxyXG5cdFx0Ly8gcmV0dXJuIHRva2VucztcclxuXHR9XHJcblxyXG5cdG5leHRWYWxpZFBvc2l0aW9uVG9rZW5zKHN0cmluZ1RleHQ6IHN0cmluZywgbmV4dEk6IG51bWJlcik6IG51bWJlciB7XHJcblx0XHRsZXQgdG9rZW5Eb2xsYXJTaWduOiBudW1iZXIgPSBzdHJpbmdUZXh0LmluZGV4T2YoJyQnLCBuZXh0SSk7XHJcblx0XHRsZXQgdG9rZW5OdW1TaWduOiBudW1iZXIgPSBzdHJpbmdUZXh0LmluZGV4T2YoJyMnLCBuZXh0SSk7XHJcblx0XHRsZXQgaTogbnVtYmVyID1cclxuXHRcdFx0dG9rZW5Eb2xsYXJTaWduIDwgMCAmJiB0b2tlbk51bVNpZ24gPj0gMFxyXG5cdFx0XHRcdD8gdG9rZW5OdW1TaWduXHJcblx0XHRcdFx0OiB0b2tlbk51bVNpZ24gPCAwICYmIHRva2VuRG9sbGFyU2lnbiA+PSAwXHJcblx0XHRcdFx0XHQ/IHRva2VuRG9sbGFyU2lnblxyXG5cdFx0XHRcdFx0OiB0b2tlbkRvbGxhclNpZ24gPCB0b2tlbk51bVNpZ25cclxuXHRcdFx0XHRcdFx0PyB0b2tlbkRvbGxhclNpZ25cclxuXHRcdFx0XHRcdFx0OiB0b2tlbk51bVNpZ247XHJcblx0XHRyZXR1cm4gaTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEl0IHJldXNlcyByZXBsYWNlVG9rZW5zRnJvbUxpc3RPYmplY3RQdWJsaWMgYnV0IHNldCBhbGwga2V5cyBsb2JqZWN0dG9rZW5zIGFzIGxvd2VyY2FzZVxyXG5cdCAqIEBwYXJhbSB0b2tlbk5hbWVcclxuXHQgKiBAcGFyYW0gZm9ybXVsYVxyXG5cdCAqIEBwYXJhbSBsT2JqZWN0VG9rZW5zXHJcblx0ICovXHJcblx0cmVwbGFjZVRva2Vuc0Zyb21MaXN0T2JqZWN0UHVibGljKFxyXG5cdFx0dG9rZW5OYW1lOiBzdHJpbmcsXHJcblx0XHRmb3JtdWxhOiBzdHJpbmcsXHJcblx0XHRsT2JqZWN0VG9rZW5zOiBhbnlbXVxyXG5cdCk6IHN0cmluZyB7XHJcblx0XHRsZXQgbERhdGFPcmc6IGFueVtdID0gW107XHJcblx0XHRpZiAobE9iamVjdFRva2Vucykge1xyXG5cdFx0XHRmb3IgKGxldCBkYXRhRm9ybSBpbiBsT2JqZWN0VG9rZW5zKSB7XHJcblx0XHRcdFx0bERhdGFPcmdbZGF0YUZvcm0udG9Mb3dlckNhc2UoKV0gPSBsT2JqZWN0VG9rZW5zW2RhdGFGb3JtXTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHRoaXMucmVwbGFjZVRva2Vuc0Zyb21MaXN0T2JqZWN0KHRva2VuTmFtZSwgZm9ybXVsYSwgbERhdGFPcmcpO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBAcGFyYW0gdG9rZW5OYW1lIHRva2VuIG5hbWVcclxuXHQgKiBAcGFyYW0gZm9ybXVsYSBTdHJpbmcgd2l0aCB0aGUgZm9ybXVsYSB0byBleGVjdXRlXHJcblx0ICogQHBhcmFtIGxPYmplY3RUb2tlbnMgTGlzdCBvZiB0b2tlbnMgd2l0aCB0aGUgdmFsdWVzIHRvIHJlcGxhY2VcclxuXHQgKi9cclxuXHRyZXBsYWNlVG9rZW5zRnJvbUxpc3RPYmplY3QodG9rZW5OYW1lOiBzdHJpbmcsIGZvcm11bGE6IHN0cmluZywgbE9iamVjdFRva2VuczogYW55KTogc3RyaW5nIHtcclxuXHRcdGlmICghZm9ybXVsYSB8fCBmb3JtdWxhLmxlbmd0aCA9PSAwKSB7XHJcblx0XHRcdHRocm93IHtcclxuXHRcdFx0XHRtZXNzYWdlOiAnTGEgZm9ybXVsYSBkZWwgdG9rZW4gJyArIHRva2VuTmFtZSArICcgZXN0YSB2YWPDrWEnLFxyXG5cdFx0XHRcdHRpdGxlOiAnQWxlcnRhIScsXHJcblx0XHRcdFx0ZXJyb3I6XHJcblx0XHRcdFx0XHQnTGEgZm9ybXVsYSBkZWwgdG9rZW4gJyArIHRva2VuTmFtZSArICcgZXN0YSB2YWPDrWEuIFtmb3JtdWxhWycgKyBmb3JtdWxhICsgJ11dJ1xyXG5cdFx0XHR9O1xyXG5cdFx0fVxyXG5cdFx0bGV0IHJlcGxhY2VkVG9rZW5zOiBzdHJpbmcgPSBmb3JtdWxhLnRvU3RyaW5nKCk7XHJcblx0XHRpZiAocmVwbGFjZWRUb2tlbnMuc3RhcnRzV2l0aCgnZmlsZTovLycpKSB7XHJcblx0XHRcdHJldHVybiByZXBsYWNlZFRva2VucztcclxuXHRcdH1cclxuXHRcdC8vIEZpbmQgdGhlIHRva2VucyBpbiB0aGUgZm9ybXVsYVxyXG5cdFx0bGV0IHRva2Vuc0FycmF5OiBhbnlbXSA9IHRoaXMuZ2V0TGlzdFRva2Vuc0J5U3RyaW5nKHJlcGxhY2VkVG9rZW5zKTtcclxuXHRcdGlmICh0b2tlbnNBcnJheS5sZW5ndGggPT0gMCkge1xyXG5cdFx0XHRyZXR1cm4gcmVwbGFjZWRUb2tlbnM7XHJcblx0XHR9XHJcblx0XHQvLyBJZiB0aGVyZSBhbnkgdG9rZW4sIHRyeSB0byByZXBsYWNlXHJcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRva2Vuc0FycmF5Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdGxldCBvYmplY3RUb2tlbiA9XHJcblx0XHRcdFx0bE9iamVjdFRva2Vuc1t0b2tlbnNBcnJheVtpXS5rZXldICE9PSB1bmRlZmluZWRcclxuXHRcdFx0XHRcdD8gbE9iamVjdFRva2Vuc1t0b2tlbnNBcnJheVtpXS5rZXldXHJcblx0XHRcdFx0XHQ6IG51bGw7XHJcblx0XHRcdGxldCBjbGVhcktleTtcclxuXHRcdFx0aWYgKG9iamVjdFRva2VuID09IG51bGwpIHtcclxuXHRcdFx0XHRjbGVhcktleSA9IHRva2Vuc0FycmF5W2ldLmtleS5yZXBsYWNlKCckeycsICcnKS5yZXBsYWNlKCd9JywgJycpLnRvTG93ZXJDYXNlKCk7XHJcblx0XHRcdFx0b2JqZWN0VG9rZW4gPVxyXG5cdFx0XHRcdFx0bE9iamVjdFRva2Vuc1tjbGVhcktleV0gIT09IHVuZGVmaW5lZCA/IGxPYmplY3RUb2tlbnNbY2xlYXJLZXldIDogbnVsbDtcclxuXHJcblx0XHRcdFx0aWYgKG9iamVjdFRva2VuID09IG51bGwpIHtcclxuXHRcdFx0XHRcdGNsZWFyS2V5ID0gdG9rZW5zQXJyYXlbaV0ua2V5XHJcblx0XHRcdFx0XHRcdC5yZXBsYWNlKCd7JywgJycpXHJcblx0XHRcdFx0XHRcdC5yZXBsYWNlKCd9JywgJycpXHJcblx0XHRcdFx0XHRcdC5zcGxpdCgnXycpWzFdXHJcblx0XHRcdFx0XHRcdC50b0xvd2VyQ2FzZSgpO1xyXG5cdFx0XHRcdFx0b2JqZWN0VG9rZW4gPVxyXG5cdFx0XHRcdFx0XHRsT2JqZWN0VG9rZW5zW2NsZWFyS2V5XSAhPT0gdW5kZWZpbmVkID8gbE9iamVjdFRva2Vuc1tjbGVhcktleV0gOiBudWxsO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAob2JqZWN0VG9rZW4gPT0gbnVsbCkge1xyXG5cdFx0XHRcdC8vIElmIG5vdCBmaW5kIHRoZSB0b2tlbiwgYnkgZGVmYXVsdCBwdXQgYW4gZW1wdHkgc3RyaW5nXHJcblx0XHRcdFx0LyppZiAoVG9rZW5TZXJ2aWNlLmV4Y2x1ZGVkVG9rZW4uaW5kZXhPZihjbGVhcktleSkgPT09IC0xKSB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmVycm9yKFxyXG5cdFx0XHRcdFx0XHQnRWwgdG9rZW4gJyArIHRva2Vuc0FycmF5W2ldLnZhbHVlICsgJyBubyBmdWUgZW5jb250cmFkby4nLFxyXG5cdFx0XHRcdFx0XHRsT2JqZWN0VG9rZW5zLFxyXG5cdFx0XHRcdFx0XHR0b2tlbnNBcnJheVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHR9Ki9cclxuXHRcdFx0XHRvYmplY3RUb2tlbiA9ICcnO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmIChvYmplY3RUb2tlbiAhPSBudWxsKSB7XHJcblx0XHRcdFx0bGV0IHZhbHVlOiBhbnkgPSBOdW1iZXIob2JqZWN0VG9rZW4pXHJcblx0XHRcdFx0XHQ/IG9iamVjdFRva2VuXHJcblx0XHRcdFx0XHQ6IEFycmF5LmlzQXJyYXkob2JqZWN0VG9rZW4pXHJcblx0XHRcdFx0XHRcdD8gSlNPTi5zdHJpbmdpZnkob2JqZWN0VG9rZW4pXHJcblx0XHRcdFx0XHRcdDogXCInXCIgKyBvYmplY3RUb2tlbiArIFwiJ1wiO1xyXG5cdFx0XHRcdHJlcGxhY2VkVG9rZW5zID0gdGhpcy5yZXBsYWNlVG9rZW4ocmVwbGFjZWRUb2tlbnMsIHRva2Vuc0FycmF5W2ldLnZhbHVlLCB2YWx1ZSk7XHJcblx0XHRcdFx0Ly8gfSBlbHNlIHtcclxuXHRcdFx0XHQvLyAgIGNvbnNvbGUuZXJyb3IobE9iamVjdFRva2VucywgdG9rZW5zQXJyYXkpO1xyXG5cdFx0XHRcdC8vICAgdGhyb3cge1xyXG5cdFx0XHRcdC8vICAgICBtZXNzYWdlOiBcIk5vIHNlIGVuY29udHLDsyB2YWxvciBwYXJhIHVuIHRva2VuXCIsXHJcblx0XHRcdFx0Ly8gICAgIHRpdGxlOiBcIkFsZXJ0YSFcIixcclxuXHRcdFx0XHQvLyAgICAgZXJyb3I6IFwiRWwgdG9rZW4gXCIgKyB0b2tlbnNBcnJheVtpXS52YWx1ZSArIFwiIG5vIGZ1ZSBlbmNvbnRyYWRvLlwiXHJcblx0XHRcdFx0Ly8gICB9O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcmVwbGFjZWRUb2tlbnM7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUcnkgdG8gZXZhbCB0aGUgZm9ybXVsYSBkZXBlbmQgb2YgdGhlIHR5cGUgb2YgZmllbGRzLlxyXG5cdCAqIEBwYXJhbSBsU3RhdGljVG9rZW5cclxuXHQgKiBAcGFyYW0gZm9ybXVsYU5hbWVcclxuXHQgKiBAcGFyYW0gZm9ybXVsYVxyXG5cdCAqL1xyXG5cdHZhbGlkYXRlRm9ybXVsYShsU3RhdGljVG9rZW46IGFueSwgZm9ybXVsYU5hbWU6IHN0cmluZywgZm9ybXVsYTogc3RyaW5nKTogYm9vbGVhbiB7XHJcblx0XHRsZXQgZXZhbEZvcm11bGE6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRcdC8vIFRvIHZhbGlkYXRlIHRoZSBmb3JtdWxhLCBmaXJzdCBvcmdhbml6ZSB0aGUgaW5mbyB0byBrZXkgLSB2YWx1ZSBhcnJheVxyXG5cdFx0bGV0IG9iamVjdFRva2VuczogYW55W10gPSBbXTtcclxuXHRcdGZvciAobGV0IHBhbmVsIG9mIGxTdGF0aWNUb2tlbikge1xyXG5cdFx0XHRmb3IgKGxldCBncm91cFRva2VuIG9mIHBhbmVsLnZhbHVlKSB7XHJcblx0XHRcdFx0Zm9yIChsZXQgc3RhdGljVG9rZW4gb2YgZ3JvdXBUb2tlbi52YWx1ZSkge1xyXG5cdFx0XHRcdFx0Zm9yIChsZXQgYXJyYXlUb2tlbkluZm8gb2Ygc3RhdGljVG9rZW4pIHtcclxuXHRcdFx0XHRcdFx0b2JqZWN0VG9rZW5zW2FycmF5VG9rZW5JbmZvLmtleV0gPSBhcnJheVRva2VuSW5mby5vYmplY3RcclxuXHRcdFx0XHRcdFx0XHQ/IGFycmF5VG9rZW5JbmZvLm9iamVjdC50eXBlID09ICdudW1iZXInXHJcblx0XHRcdFx0XHRcdFx0XHQ/ICcwJ1xyXG5cdFx0XHRcdFx0XHRcdFx0OiAnJ1xyXG5cdFx0XHRcdFx0XHRcdDogJyc7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHR0cnkge1xyXG5cdFx0XHRmb3JtdWxhID0gdGhpcy5yZXBsYWNlVG9rZW5zRnJvbUxpc3RPYmplY3QoZm9ybXVsYU5hbWUsIGZvcm11bGEsIG9iamVjdFRva2Vucyk7XHJcblx0XHR9IGNhdGNoIChlcnJvcikge1xyXG5cdFx0XHQvL2NvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG5cdFx0XHR0aHJvdyBlcnJvcjtcclxuXHRcdH1cclxuXHRcdGlmIChmb3JtdWxhICE9PSBudWxsKSB7XHJcblx0XHRcdHRyeSB7XHJcblx0XHRcdFx0bGV0IHJlc3VsdCA9IGZvcm11bGEuc3RhcnRzV2l0aCgnZmlsZTovLycpID8gZm9ybXVsYSA6IGV2YWwoZm9ybXVsYSk7XHJcblx0XHRcdFx0ZXZhbEZvcm11bGEgPSB0cnVlO1xyXG5cdFx0XHR9IGNhdGNoIChlKSB7XHJcblx0XHRcdFx0Ly9jb25zb2xlLmVycm9yKFwiRXJyb3IgZXZhbHVhdGluZyB0aGUgZm9ybXVsYVwiLCBlKTtcclxuXHRcdFx0XHR0aHJvdyB7XHJcblx0XHRcdFx0XHRtZXNzYWdlOiAnTGEgZm9ybXVsYSBubyBmdWUgcG9zaWJsZSBldmFsdWFyJyxcclxuXHRcdFx0XHRcdHRpdGxlOiAnQWxlcnRhIScsXHJcblx0XHRcdFx0XHRlcnJvcjogZVxyXG5cdFx0XHRcdH07XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiBldmFsRm9ybXVsYTtcclxuXHR9XHJcblxyXG5cdGdldENvbmZpZ0Nsb25pbmdUb2tlbk1hcChvbGRQUFA6IG51bWJlciwgbmV3UFBQOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmNvbmZpZ3VyYXRpb24gKyAndG9rZW4vZ2V0Q29uZmlnQ2xvbmluZ1Rva2VuTWFwJyxcclxuXHRcdFx0e1xyXG5cdFx0XHRcdHBhcmFtczogbmV3IEh0dHBQYXJhbXMoKVxyXG5cdFx0XHRcdFx0LnNldCgnb2xkUFBQJywgb2xkUFBQLnRvU3RyaW5nKCkpXHJcblx0XHRcdFx0XHQuc2V0KCduZXdQUFAnLCBuZXdQUFAudG9TdHJpbmcoKSlcclxuXHRcdFx0fVxyXG5cdFx0KTtcclxuXHR9XHJcbn1cclxuIl19
@@ -2,9 +2,9 @@
2
2
  /* tslint:disable */
3
3
  export const VERSION = {
4
4
  "dirty": true,
5
- "raw": "v0.0.18-1874-g692b78c-dirty",
6
- "hash": "g692b78c",
7
- "distance": 1874,
5
+ "raw": "v0.0.18-1881-g7a09ede-dirty",
6
+ "hash": "g7a09ede",
7
+ "distance": 1881,
8
8
  "tag": "v0.0.18",
9
9
  "semver": {
10
10
  "options": {
@@ -20,10 +20,10 @@ export const VERSION = {
20
20
  "build": [],
21
21
  "version": "0.0.18"
22
22
  },
23
- "suffix": "1874-g692b78c-dirty",
24
- "semverString": "0.0.18+1874.g692b78c",
25
- "version": "0.0.1364",
26
- "buildTimestamp": "2022-03-07T14:54:47.043Z"
23
+ "suffix": "1881-g7a09ede-dirty",
24
+ "semverString": "0.0.18+1881.g7a09ede",
25
+ "version": "0.0.1367",
26
+ "buildTimestamp": "2022-03-10T13:00:55.549Z"
27
27
  };
28
28
  /* tslint:enable */
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nLXBsaS1jb21tb25zL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJFQUEyRTtBQUMzRSxvQkFBb0I7QUFDcEIsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHO0lBQ25CLE9BQU8sRUFBRSxJQUFJO0lBQ2IsS0FBSyxFQUFFLDZCQUE2QjtJQUNwQyxNQUFNLEVBQUUsVUFBVTtJQUNsQixVQUFVLEVBQUUsSUFBSTtJQUNoQixLQUFLLEVBQUUsU0FBUztJQUNoQixRQUFRLEVBQUU7UUFDTixTQUFTLEVBQUU7WUFDUCxPQUFPLEVBQUUsS0FBSztZQUNkLG1CQUFtQixFQUFFLEtBQUs7U0FDN0I7UUFDRCxPQUFPLEVBQUUsS0FBSztRQUNkLEtBQUssRUFBRSxTQUFTO1FBQ2hCLE9BQU8sRUFBRSxDQUFDO1FBQ1YsT0FBTyxFQUFFLENBQUM7UUFDVixPQUFPLEVBQUUsRUFBRTtRQUNYLFlBQVksRUFBRSxFQUFFO1FBQ2hCLE9BQU8sRUFBRSxFQUFFO1FBQ1gsU0FBUyxFQUFFLFFBQVE7S0FDdEI7SUFDRCxRQUFRLEVBQUUscUJBQXFCO0lBQy9CLGNBQWMsRUFBRSxzQkFBc0I7SUFDdEMsU0FBUyxFQUFFLFVBQVU7SUFDckIsZ0JBQWdCLEVBQUUsMEJBQTBCO0NBQy9DLENBQUM7QUFDRixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJTVBPUlRBTlQ6IFRISVMgRklMRSBJUyBBVVRPIEdFTkVSQVRFRCEgRE8gTk9UIE1BTlVBTExZIEVESVQgT1IgQ0hFQ0tJTiFcbi8qIHRzbGludDpkaXNhYmxlICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IHtcbiAgICBcImRpcnR5XCI6IHRydWUsXG4gICAgXCJyYXdcIjogXCJ2MC4wLjE4LTE4NzQtZzY5MmI3OGMtZGlydHlcIixcbiAgICBcImhhc2hcIjogXCJnNjkyYjc4Y1wiLFxuICAgIFwiZGlzdGFuY2VcIjogMTg3NCxcbiAgICBcInRhZ1wiOiBcInYwLjAuMThcIixcbiAgICBcInNlbXZlclwiOiB7XG4gICAgICAgIFwib3B0aW9uc1wiOiB7XG4gICAgICAgICAgICBcImxvb3NlXCI6IGZhbHNlLFxuICAgICAgICAgICAgXCJpbmNsdWRlUHJlcmVsZWFzZVwiOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBcImxvb3NlXCI6IGZhbHNlLFxuICAgICAgICBcInJhd1wiOiBcInYwLjAuMThcIixcbiAgICAgICAgXCJtYWpvclwiOiAwLFxuICAgICAgICBcIm1pbm9yXCI6IDAsXG4gICAgICAgIFwicGF0Y2hcIjogMTgsXG4gICAgICAgIFwicHJlcmVsZWFzZVwiOiBbXSxcbiAgICAgICAgXCJidWlsZFwiOiBbXSxcbiAgICAgICAgXCJ2ZXJzaW9uXCI6IFwiMC4wLjE4XCJcbiAgICB9LFxuICAgIFwic3VmZml4XCI6IFwiMTg3NC1nNjkyYjc4Yy1kaXJ0eVwiLFxuICAgIFwic2VtdmVyU3RyaW5nXCI6IFwiMC4wLjE4KzE4NzQuZzY5MmI3OGNcIixcbiAgICBcInZlcnNpb25cIjogXCIwLjAuMTM2NFwiLFxuICAgIFwiYnVpbGRUaW1lc3RhbXBcIjogXCIyMDIyLTAzLTA3VDE0OjU0OjQ3LjA0M1pcIlxufTtcbi8qIHRzbGludDplbmFibGUgKi9cbiJdfQ==
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nLXBsaS1jb21tb25zL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJFQUEyRTtBQUMzRSxvQkFBb0I7QUFDcEIsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHO0lBQ25CLE9BQU8sRUFBRSxJQUFJO0lBQ2IsS0FBSyxFQUFFLDZCQUE2QjtJQUNwQyxNQUFNLEVBQUUsVUFBVTtJQUNsQixVQUFVLEVBQUUsSUFBSTtJQUNoQixLQUFLLEVBQUUsU0FBUztJQUNoQixRQUFRLEVBQUU7UUFDTixTQUFTLEVBQUU7WUFDUCxPQUFPLEVBQUUsS0FBSztZQUNkLG1CQUFtQixFQUFFLEtBQUs7U0FDN0I7UUFDRCxPQUFPLEVBQUUsS0FBSztRQUNkLEtBQUssRUFBRSxTQUFTO1FBQ2hCLE9BQU8sRUFBRSxDQUFDO1FBQ1YsT0FBTyxFQUFFLENBQUM7UUFDVixPQUFPLEVBQUUsRUFBRTtRQUNYLFlBQVksRUFBRSxFQUFFO1FBQ2hCLE9BQU8sRUFBRSxFQUFFO1FBQ1gsU0FBUyxFQUFFLFFBQVE7S0FDdEI7SUFDRCxRQUFRLEVBQUUscUJBQXFCO0lBQy9CLGNBQWMsRUFBRSxzQkFBc0I7SUFDdEMsU0FBUyxFQUFFLFVBQVU7SUFDckIsZ0JBQWdCLEVBQUUsMEJBQTBCO0NBQy9DLENBQUM7QUFDRixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJTVBPUlRBTlQ6IFRISVMgRklMRSBJUyBBVVRPIEdFTkVSQVRFRCEgRE8gTk9UIE1BTlVBTExZIEVESVQgT1IgQ0hFQ0tJTiFcbi8qIHRzbGludDpkaXNhYmxlICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IHtcbiAgICBcImRpcnR5XCI6IHRydWUsXG4gICAgXCJyYXdcIjogXCJ2MC4wLjE4LTE4ODEtZzdhMDllZGUtZGlydHlcIixcbiAgICBcImhhc2hcIjogXCJnN2EwOWVkZVwiLFxuICAgIFwiZGlzdGFuY2VcIjogMTg4MSxcbiAgICBcInRhZ1wiOiBcInYwLjAuMThcIixcbiAgICBcInNlbXZlclwiOiB7XG4gICAgICAgIFwib3B0aW9uc1wiOiB7XG4gICAgICAgICAgICBcImxvb3NlXCI6IGZhbHNlLFxuICAgICAgICAgICAgXCJpbmNsdWRlUHJlcmVsZWFzZVwiOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBcImxvb3NlXCI6IGZhbHNlLFxuICAgICAgICBcInJhd1wiOiBcInYwLjAuMThcIixcbiAgICAgICAgXCJtYWpvclwiOiAwLFxuICAgICAgICBcIm1pbm9yXCI6IDAsXG4gICAgICAgIFwicGF0Y2hcIjogMTgsXG4gICAgICAgIFwicHJlcmVsZWFzZVwiOiBbXSxcbiAgICAgICAgXCJidWlsZFwiOiBbXSxcbiAgICAgICAgXCJ2ZXJzaW9uXCI6IFwiMC4wLjE4XCJcbiAgICB9LFxuICAgIFwic3VmZml4XCI6IFwiMTg4MS1nN2EwOWVkZS1kaXJ0eVwiLFxuICAgIFwic2VtdmVyU3RyaW5nXCI6IFwiMC4wLjE4KzE4ODEuZzdhMDllZGVcIixcbiAgICBcInZlcnNpb25cIjogXCIwLjAuMTM2N1wiLFxuICAgIFwiYnVpbGRUaW1lc3RhbXBcIjogXCIyMDIyLTAzLTEwVDEzOjAwOjU1LjU0OVpcIlxufTtcbi8qIHRzbGludDplbmFibGUgKi9cbiJdfQ==