ng-pli-commons 0.0.1902 → 0.0.1904

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.
@@ -83,27 +83,6 @@ export class AuthenticationService {
83
83
  });
84
84
  }
85
85
  async getLink(patCodigo) {
86
- let loginMultiUrl = '';
87
- let registerForm = 'registro-multiaplicacion/create/' + patCodigo;
88
- const loginUrl = new URL(this.environment.host.frontend.frontoffice + registerForm);
89
- try {
90
- loginMultiUrl = loginUrl.href;
91
- }
92
- catch (error) { }
93
- return loginMultiUrl;
94
- }
95
- async getLinkMono(promCodigo) {
96
- // https://dev.colfuturo.org/plic/frontoffice/term/362/-1
97
- let loginMultiUrl = '';
98
- let termsLink = 'term/' + promCodigo + '/-1';
99
- const loginUrl = new URL(this.environment.host.frontend.frontoffice + termsLink);
100
- try {
101
- loginMultiUrl = loginUrl.href;
102
- }
103
- catch (error) { }
104
- return loginMultiUrl;
105
- }
106
- async getLinkOld(patCodigo) {
107
86
  let logoutUrl = '';
108
87
  const loginUrl = new URL(this.environment.host.frontend.login);
109
88
  const idPatrocinador = loginUrl.searchParams.get('idPatrocinador');
@@ -129,4 +108,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
129
108
  type: Inject,
130
109
  args: ['environment']
131
110
  }] }, { type: i1.HttpClient }, { type: i2.HashService }]; } });
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXBsaS1jb21tb25zL3NyYy9saWIvc2VydmljZXMvYXV0aGVudGljYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFRLE1BQU0sYUFBYSxDQUFDOzs7O0FBTXBFLE1BQU0sT0FBTyxxQkFBcUI7SUFJakMsWUFDZ0MsV0FBZ0IsRUFDdkMsVUFBc0IsRUFDdEIsV0FBd0I7UUFGRCxnQkFBVyxHQUFYLFdBQVcsQ0FBSztRQUN2QyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBTmpDLG9FQUFvRTtRQUM1RCxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFVLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFLakQsQ0FBQztJQUVyQzs7O09BR0c7SUFDSCxLQUFLLENBQUMsSUFBUztRQUNkLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNyQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLDRCQUE0QixFQUMxRSxJQUFJLEVBQ0osV0FBVyxDQUNYLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBRUgsY0FBYyxDQUFDLElBQVM7UUFDdkIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDMUIsSUFBSSxDQUFDLFdBQVcs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cUJBQXFCLGNBRnJCLE1BQU07MkZBRU4scUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQjs7MEJBTUUsTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBIRUFERVJfSlNPTiwgQXV0aGVudGljYXRpb25VdGlsLCBVc2VyIH0gZnJvbSAnbmctcGxpLXV0aWwnO1xyXG5pbXBvcnQgeyBIYXNoU2VydmljZSB9IGZyb20gJy4vaGFzaC5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dGhlbnRpY2F0aW9uU2VydmljZSB7XHJcblx0LyoqIFRoaXMgb2JzZXJ2YWJsZSBhbGxvd3MgdG8gdmVyaWZ5IGlmIHRoZSB1c2VyIGlzIGF1dGhlbnRpY2F0ZWQgKi9cclxuXHRwcml2YXRlIGlzTG9naW5TdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihBdXRoZW50aWNhdGlvblV0aWwuaGFzVG9rZW4oKSk7XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0QEluamVjdCgnZW52aXJvbm1lbnQnKSBwcml2YXRlIGVudmlyb25tZW50OiBhbnksXHJcblx0XHRwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXHJcblx0XHRwcml2YXRlIGhhc2hTZXJ2aWNlOiBIYXNoU2VydmljZSkge31cclxuXHJcblx0LyoqXHJcblx0ICogSXQgYWxsb3dzIHRvIGxvZ2luIHdpdGggdGhlIGFwcCB3aXRoIHVzZXJuYW1lIGFuZCBwYXNzd29yZFxyXG5cdCAqIEBwYXJhbSB1c2VyIEl0XHJcblx0ICovXHJcblx0bG9naW4odXNlcjogYW55KSB7XHJcblx0XHRsb2NhbFN0b3JhZ2UuY2xlYXIoKTtcclxuXHRcdHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdChcclxuXHRcdFx0dGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuY29uZmlndXJhdGlvbiArICdzZXNpb24vZ2V0QnlMb2dpbkFuZFNlc2lvbicsXHJcblx0XHRcdHVzZXIsXHJcblx0XHRcdEhFQURFUl9KU09OXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0LypfbG9naW4odXNlcjogYW55KSB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmNvbmZpZ3VyYXRpb24gKyAnc2VzaW9uL2dldEJ5TG9naW5BbmRTZXNpb24nLFxyXG5cdFx0XHR1c2VyLFxyXG5cdFx0XHRIRUFERVJfSlNPTlxyXG5cdFx0KTtcclxuXHR9Ki9cclxuXHJcblx0Z2V0VXNlckJ5TG9naW4odXNlcjogYW55KSB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmNvbmZpZ3VyYXRpb24gKyAnc2VzaW9uL2dldEJ5TG9naW4nLFxyXG5cdFx0XHR1c2VyLFxyXG5cdFx0XHRIRUFERVJfSlNPTlxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdC8qKiBJdCByZXR1cm5zIHRoZSBzZXNzaW9uIGluZm8gKi9cclxuXHRnZXRUb2tlbkJ5TG9naW4obG9naW46IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldCh0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5wbGlzICsgJ2xvZ2luL2dldFNlc3Npb24nLCB7XHJcblx0XHRcdHBhcmFtczogbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ2xvZ2luJywgbG9naW4pXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEl0IGFsbG93cyB0byBsb2dvdXRcclxuXHQgKi9cclxuXHRsb2dvdXQocmVkaXJlY3RVUkw/OiBzdHJpbmcpIHtcclxuXHRcdHRoaXMucmVtb3ZlVG9rZW5zKCk7XHJcblx0XHR3aW5kb3cubG9jYXRpb24uaHJlZiA9IHJlZGlyZWN0VVJMID8gcmVkaXJlY3RVUkwgOiB0aGlzLmVudmlyb25tZW50Lmhvc3QuZnJvbnRlbmQubG9naW47XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJdCBhbGxvd3MgdG8gYXNzaWduIGEgbmV3IHZhbHVlIHRvIHRoZSB0b2tlblxyXG5cdCAqIEBwYXJhbSB0b2tlblxyXG5cdCAqL1xyXG5cdHNldFRva2VuKHRva2VuX3JlcXVlc3Q6IHN0cmluZykge1xyXG5cdFx0QXV0aGVudGljYXRpb25VdGlsLnNldFRva2VuKHRva2VuX3JlcXVlc3QpO1xyXG5cdFx0dGhpcy5pc0xvZ2luU3ViamVjdC5uZXh0KHRydWUpO1xyXG5cdH1cclxuXHJcblx0LyoqIGl0IHZlcmlmaWVzIGlmIHRoZXJlIGlzIHRva2VuICovXHJcblx0dmVyaWZ5VG9rZW4oKSB7XHJcblx0XHR0aGlzLmlzTG9naW5TdWJqZWN0Lm5leHQoQXV0aGVudGljYXRpb25VdGlsLnZlcmlmeVRva2VuKCkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSXQgYWxsb3dzIHRvIHJlbW92ZSB0aGUgdG9rZW5cclxuXHQgKi9cclxuXHRwcml2YXRlIHJlbW92ZVRva2VucygpIHtcclxuXHRcdGxvY2FsU3RvcmFnZS5jbGVhcigpO1xyXG5cdFx0dGhpcy5pc0xvZ2luU3ViamVjdC5uZXh0KGZhbHNlKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEl0IGhhcyBhIG9ic2VydmFibGUgdG8gbm90aWZ5IGlmIHRoZSB1c2VyIGlzIGF1dGhlbnRpY2F0ZWRcclxuXHQgKi9cclxuXHRpc0F1dGhlbnRpY2F0ZWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcblx0XHRyZXR1cm4gdGhpcy5pc0xvZ2luU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZ2V0SGFzaChcclxuXHRcdGlkUGF0cm9jaW5hZG9yOiBzdHJpbmcsXHJcblx0XHRpZFBsYXRhZm9ybWE6IHN0cmluZyxcclxuXHRcdGlkUGF0cm9jaW5hZG9yUExJQzogc3RyaW5nXHJcblx0KTogUHJvbWlzZTxzdHJpbmc+IHtcclxuXHRcdGNvbnN0IGVycm9yTWVzc2FnZSA9ICdObyBzZSBwdWRvIGdlbmVyYXIgZWwgaGFzaCc7XHJcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHR0aGlzLmhhc2hTZXJ2aWNlLmdldEhhc2goaWRQYXRyb2NpbmFkb3IsIGlkUGxhdGFmb3JtYSwgaWRQYXRyb2NpbmFkb3JQTElDKS5zdWJzY3JpYmUoXHJcblx0XHRcdFx0KHJlc3BvbnNlKSA9PiB7XHJcblx0XHRcdFx0XHRpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuaGFzaCkge1xyXG5cdFx0XHRcdFx0XHRyZXNvbHZlKHJlc3BvbnNlLmhhc2gpO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0cmVqZWN0KGVycm9yTWVzc2FnZSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHQoZXJyb3IpID0+IHJlamVjdChlcnJvck1lc3NhZ2UpXHJcblx0XHRcdCk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIGdldExpbmsocGF0Q29kaWdvOiBzdHJpbmcpIHtcclxuXHRcdGxldCBsb2dpbk11bHRpVXJsID0gJyc7XHJcblx0XHRsZXQgcmVnaXN0ZXJGb3JtID0gJ3JlZ2lzdHJvLW11bHRpYXBsaWNhY2lvbi9jcmVhdGUvJyArIHBhdENvZGlnbztcclxuXHRcdGNvbnN0IGxvZ2luVXJsID0gbmV3IFVSTCh0aGlzLmVudmlyb25tZW50Lmhvc3QuZnJvbnRlbmQuZnJvbnRvZmZpY2UgKyByZWdpc3RlckZvcm0pO1xyXG5cdFx0dHJ5IHtcclxuXHRcdFx0bG9naW5NdWx0aVVybCA9IGxvZ2luVXJsLmhyZWY7XHJcblx0XHR9IGNhdGNoIChlcnJvcikge31cclxuXHRcdHJldHVybiBsb2dpbk11bHRpVXJsO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgZ2V0TGlua01vbm8ocHJvbUNvZGlnbzogc3RyaW5nKSB7XHJcblx0XHQvLyBodHRwczovL2Rldi5jb2xmdXR1cm8ub3JnL3BsaWMvZnJvbnRvZmZpY2UvdGVybS8zNjIvLTFcclxuXHRcdGxldCBsb2dpbk11bHRpVXJsID0gJyc7XHJcblx0XHRsZXQgdGVybXNMaW5rID0gJ3Rlcm0vJyArIHByb21Db2RpZ28gKyAnLy0xJztcclxuXHRcdGNvbnN0IGxvZ2luVXJsID0gbmV3IFVSTCh0aGlzLmVudmlyb25tZW50Lmhvc3QuZnJvbnRlbmQuZnJvbnRvZmZpY2UgKyB0ZXJtc0xpbmspO1xyXG5cdFx0dHJ5IHtcclxuXHRcdFx0bG9naW5NdWx0aVVybCA9IGxvZ2luVXJsLmhyZWY7XHJcblx0XHR9IGNhdGNoIChlcnJvcikge31cclxuXHRcdHJldHVybiBsb2dpbk11bHRpVXJsO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgZ2V0TGlua09sZChwYXRDb2RpZ286IHN0cmluZykge1xyXG5cdFx0bGV0IGxvZ291dFVybCA9ICcnO1xyXG5cdFx0Y29uc3QgbG9naW5VcmwgPSBuZXcgVVJMKHRoaXMuZW52aXJvbm1lbnQuaG9zdC5mcm9udGVuZC5sb2dpbik7XHJcblx0XHRjb25zdCBpZFBhdHJvY2luYWRvciA9IGxvZ2luVXJsLnNlYXJjaFBhcmFtcy5nZXQoJ2lkUGF0cm9jaW5hZG9yJyk7XHJcblx0XHRjb25zdCBpZFBsYXRhZm9ybWEgPSBsb2dpblVybC5zZWFyY2hQYXJhbXMuZ2V0KCdpZFBsYXRhZm9ybWEnKTtcclxuXHRcdGxvZ2luVXJsLnNlYXJjaFBhcmFtcy5hcHBlbmQoJ2lkUGF0cm9jaW5hZG9yUExJQycsIHBhdENvZGlnbyk7XHJcblx0XHR0cnkge1xyXG5cdFx0XHRsZXQgaGFzaCA9IGF3YWl0IHRoaXMuZ2V0SGFzaChpZFBhdHJvY2luYWRvciwgaWRQbGF0YWZvcm1hLCBwYXRDb2RpZ28pO1xyXG5cdFx0XHRsb2dpblVybC5zZWFyY2hQYXJhbXMuc2V0KCdoYXNoJywgaGFzaCk7XHJcblx0XHRcdGxvZ291dFVybCA9IGxvZ2luVXJsLmhyZWY7XHJcblx0XHR9IGNhdGNoIChlcnJvcikge31cclxuXHRcdHJldHVybiBsb2dvdXRVcmw7XHJcblx0fVxyXG59XHJcbiJdfQ==
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXBsaS1jb21tb25zL3NyYy9saWIvc2VydmljZXMvYXV0aGVudGljYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFRLE1BQU0sYUFBYSxDQUFDOzs7O0FBTXBFLE1BQU0sT0FBTyxxQkFBcUI7SUFJakMsWUFDZ0MsV0FBZ0IsRUFDdkMsVUFBc0IsRUFDdEIsV0FBd0I7UUFGRCxnQkFBVyxHQUFYLFdBQVcsQ0FBSztRQUN2QyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBTmpDLG9FQUFvRTtRQUM1RCxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFVLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFLakQsQ0FBQztJQUVyQzs7O09BR0c7SUFDSCxLQUFLLENBQUMsSUFBUztRQUNkLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNyQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLDRCQUE0QixFQUMxRSxJQUFJLEVBQ0osV0FBVyxDQUNYLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBRUgsY0FBYyxDQUFDLElBQVM7UUFDdkIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDMUIsSUFBSSxDQUFDLFdBQVcs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LElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQztZQUN2RSxRQUFRLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDeEMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7U0FDMUI7UUFBQyxPQUFPLEtBQUssRUFBRSxHQUFFO1FBQ2xCLE9BQU8sU0FBUyxDQUFDO0lBQ2xCLENBQUM7O2tIQWxIVyxxQkFBcUIsa0JBS3hCLGFBQWE7c0hBTFYscUJBQXFCLGNBRnJCLE1BQU07MkZBRU4scUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQjs7MEJBTUUsTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBIRUFERVJfSlNPTiwgQXV0aGVudGljYXRpb25VdGlsLCBVc2VyIH0gZnJvbSAnbmctcGxpLXV0aWwnO1xyXG5pbXBvcnQgeyBIYXNoU2VydmljZSB9IGZyb20gJy4vaGFzaC5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dGhlbnRpY2F0aW9uU2VydmljZSB7XHJcblx0LyoqIFRoaXMgb2JzZXJ2YWJsZSBhbGxvd3MgdG8gdmVyaWZ5IGlmIHRoZSB1c2VyIGlzIGF1dGhlbnRpY2F0ZWQgKi9cclxuXHRwcml2YXRlIGlzTG9naW5TdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihBdXRoZW50aWNhdGlvblV0aWwuaGFzVG9rZW4oKSk7XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0QEluamVjdCgnZW52aXJvbm1lbnQnKSBwcml2YXRlIGVudmlyb25tZW50OiBhbnksXHJcblx0XHRwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXHJcblx0XHRwcml2YXRlIGhhc2hTZXJ2aWNlOiBIYXNoU2VydmljZSkge31cclxuXHJcblx0LyoqXHJcblx0ICogSXQgYWxsb3dzIHRvIGxvZ2luIHdpdGggdGhlIGFwcCB3aXRoIHVzZXJuYW1lIGFuZCBwYXNzd29yZFxyXG5cdCAqIEBwYXJhbSB1c2VyIEl0XHJcblx0ICovXHJcblx0bG9naW4odXNlcjogYW55KSB7XHJcblx0XHRsb2NhbFN0b3JhZ2UuY2xlYXIoKTtcclxuXHRcdHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdChcclxuXHRcdFx0dGhpcy5lbnZpcm9ubWVudC5ob3N0LmJhY2tlbmQuY29uZmlndXJhdGlvbiArICdzZXNpb24vZ2V0QnlMb2dpbkFuZFNlc2lvbicsXHJcblx0XHRcdHVzZXIsXHJcblx0XHRcdEhFQURFUl9KU09OXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0LypfbG9naW4odXNlcjogYW55KSB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmNvbmZpZ3VyYXRpb24gKyAnc2VzaW9uL2dldEJ5TG9naW5BbmRTZXNpb24nLFxyXG5cdFx0XHR1c2VyLFxyXG5cdFx0XHRIRUFERVJfSlNPTlxyXG5cdFx0KTtcclxuXHR9Ki9cclxuXHJcblx0Z2V0VXNlckJ5TG9naW4odXNlcjogYW55KSB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QoXHJcblx0XHRcdHRoaXMuZW52aXJvbm1lbnQuaG9zdC5iYWNrZW5kLmNvbmZpZ3VyYXRpb24gKyAnc2VzaW9uL2dldEJ5TG9naW4nLFxyXG5cdFx0XHR1c2VyLFxyXG5cdFx0XHRIRUFERVJfSlNPTlxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdC8qKiBJdCByZXR1cm5zIHRoZSBzZXNzaW9uIGluZm8gKi9cclxuXHRnZXRUb2tlbkJ5TG9naW4obG9naW46IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldCh0aGlzLmVudmlyb25tZW50Lmhvc3QuYmFja2VuZC5wbGlzICsgJ2xvZ2luL2dldFNlc3Npb24nLCB7XHJcblx0XHRcdHBhcmFtczogbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ2xvZ2luJywgbG9naW4pXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEl0IGFsbG93cyB0byBsb2dvdXRcclxuXHQgKi9cclxuXHRsb2dvdXQocmVkaXJlY3RVUkw/OiBzdHJpbmcpIHtcclxuXHRcdHRoaXMucmVtb3ZlVG9rZW5zKCk7XHJcblx0XHR3aW5kb3cubG9jYXRpb24uaHJlZiA9IHJlZGlyZWN0VVJMID8gcmVkaXJlY3RVUkwgOiB0aGlzLmVudmlyb25tZW50Lmhvc3QuZnJvbnRlbmQubG9naW47XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJdCBhbGxvd3MgdG8gYXNzaWduIGEgbmV3IHZhbHVlIHRvIHRoZSB0b2tlblxyXG5cdCAqIEBwYXJhbSB0b2tlblxyXG5cdCAqL1xyXG5cdHNldFRva2VuKHRva2VuX3JlcXVlc3Q6IHN0cmluZykge1xyXG5cdFx0QXV0aGVudGljYXRpb25VdGlsLnNldFRva2VuKHRva2VuX3JlcXVlc3QpO1xyXG5cdFx0dGhpcy5pc0xvZ2luU3ViamVjdC5uZXh0KHRydWUpO1xyXG5cdH1cclxuXHJcblx0LyoqIGl0IHZlcmlmaWVzIGlmIHRoZXJlIGlzIHRva2VuICovXHJcblx0dmVyaWZ5VG9rZW4oKSB7XHJcblx0XHR0aGlzLmlzTG9naW5TdWJqZWN0Lm5leHQoQXV0aGVudGljYXRpb25VdGlsLnZlcmlmeVRva2VuKCkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSXQgYWxsb3dzIHRvIHJlbW92ZSB0aGUgdG9rZW5cclxuXHQgKi9cclxuXHRwcml2YXRlIHJlbW92ZVRva2VucygpIHtcclxuXHRcdGxvY2FsU3RvcmFnZS5jbGVhcigpO1xyXG5cdFx0dGhpcy5pc0xvZ2luU3ViamVjdC5uZXh0KGZhbHNlKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEl0IGhhcyBhIG9ic2VydmFibGUgdG8gbm90aWZ5IGlmIHRoZSB1c2VyIGlzIGF1dGhlbnRpY2F0ZWRcclxuXHQgKi9cclxuXHRpc0F1dGhlbnRpY2F0ZWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcblx0XHRyZXR1cm4gdGhpcy5pc0xvZ2luU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZ2V0SGFzaChcclxuXHRcdGlkUGF0cm9jaW5hZG9yOiBzdHJpbmcsXHJcblx0XHRpZFBsYXRhZm9ybWE6IHN0cmluZyxcclxuXHRcdGlkUGF0cm9jaW5hZG9yUExJQzogc3RyaW5nXHJcblx0KTogUHJvbWlzZTxzdHJpbmc+IHtcclxuXHRcdGNvbnN0IGVycm9yTWVzc2FnZSA9ICdObyBzZSBwdWRvIGdlbmVyYXIgZWwgaGFzaCc7XHJcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHR0aGlzLmhhc2hTZXJ2aWNlLmdldEhhc2goaWRQYXRyb2NpbmFkb3IsIGlkUGxhdGFmb3JtYSwgaWRQYXRyb2NpbmFkb3JQTElDKS5zdWJzY3JpYmUoXHJcblx0XHRcdFx0KHJlc3BvbnNlKSA9PiB7XHJcblx0XHRcdFx0XHRpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuaGFzaCkge1xyXG5cdFx0XHRcdFx0XHRyZXNvbHZlKHJlc3BvbnNlLmhhc2gpO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0cmVqZWN0KGVycm9yTWVzc2FnZSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHQoZXJyb3IpID0+IHJlamVjdChlcnJvck1lc3NhZ2UpXHJcblx0XHRcdCk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIGdldExpbmsocGF0Q29kaWdvOiBzdHJpbmcpIHtcclxuXHRcdGxldCBsb2dvdXRVcmwgPSAnJztcclxuXHRcdGNvbnN0IGxvZ2luVXJsID0gbmV3IFVSTCh0aGlzLmVudmlyb25tZW50Lmhvc3QuZnJvbnRlbmQubG9naW4pO1xyXG5cdFx0Y29uc3QgaWRQYXRyb2NpbmFkb3IgPSBsb2dpblVybC5zZWFyY2hQYXJhbXMuZ2V0KCdpZFBhdHJvY2luYWRvcicpO1xyXG5cdFx0Y29uc3QgaWRQbGF0YWZvcm1hID0gbG9naW5Vcmwuc2VhcmNoUGFyYW1zLmdldCgnaWRQbGF0YWZvcm1hJyk7XHJcblx0XHRsb2dpblVybC5zZWFyY2hQYXJhbXMuYXBwZW5kKCdpZFBhdHJvY2luYWRvclBMSUMnLCBwYXRDb2RpZ28pO1xyXG5cdFx0dHJ5IHtcclxuXHRcdFx0bGV0IGhhc2ggPSBhd2FpdCB0aGlzLmdldEhhc2goaWRQYXRyb2NpbmFkb3IsIGlkUGxhdGFmb3JtYSwgcGF0Q29kaWdvKTtcclxuXHRcdFx0bG9naW5Vcmwuc2VhcmNoUGFyYW1zLnNldCgnaGFzaCcsIGhhc2gpO1xyXG5cdFx0XHRsb2dvdXRVcmwgPSBsb2dpblVybC5ocmVmO1xyXG5cdFx0fSBjYXRjaCAoZXJyb3IpIHt9XHJcblx0XHRyZXR1cm4gbG9nb3V0VXJsO1xyXG5cdH1cclxuXHJcbn1cclxuIl19
@@ -71,7 +71,7 @@ export class FormioUtil {
71
71
  !Object.prototype.hasOwnProperty.call(data[key], 'callingCodes') &&
72
72
  !Object.prototype.hasOwnProperty.call(data[key], 'nativeName') &&
73
73
  !Object.prototype.hasOwnProperty.call(data[key], 'original_name') &&
74
- !Object.prototype.hasOwnProperty.call(data[key], 'fullname') &&
74
+ !Object.prototype.hasOwnProperty.call(data[key], 'fullName') &&
75
75
  FormioUtil.getSelectBoxes(data[key])) {
76
76
  // remove item from array
77
77
  array.splice(i, 1);
@@ -82,7 +82,7 @@ export class FormioUtil {
82
82
  !Object.prototype.hasOwnProperty.call(data[key], 'callingCodes') &&
83
83
  !Object.prototype.hasOwnProperty.call(data[key], 'nativeName') &&
84
84
  !Object.prototype.hasOwnProperty.call(data[key], 'original_name') &&
85
- !Object.prototype.hasOwnProperty.call(data[key], 'fullname') &&
85
+ !Object.prototype.hasOwnProperty.call(data[key], 'fullName') &&
86
86
  !FormioUtil.getSelectBoxes(data[key])) {
87
87
  }
88
88
  else if (data[key] != undefined && data[key] != null && data[key] != '') {
@@ -577,4 +577,4 @@ export class FormioUtil {
577
577
  return result;
578
578
  }
579
579
  }
580
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWlvLXV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wbGktY29tbW9ucy9zcmMvbGliL3V0aWxzL2Zvcm1pby11dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFFQUFxRTtBQUNyRSxPQUFPLEtBQUssTUFBTSxNQUFNLGdDQUFnQyxDQUFDO0FBRXpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQztBQUVyQixNQUFNLE9BQU8sVUFBVTtJQUN0Qjs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLDZCQUE2QixDQUFDLFVBQVU7UUFDOUMsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksVUFBVSxFQUFFO1lBQ2YsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ2pCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQztZQUNsQixLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRTtnQkFDbkMsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEtBQUssRUFBRTtvQkFDaEQsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO3dCQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO3FCQUNwQjtvQkFDRCxNQUFNLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQztvQkFDaEYsS0FBSyxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7aUJBQzFDO2dCQUNELE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO29CQUNqQixLQUFLLEVBQUUs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QUUsUUFBUTtZQUNsQixjQUFjLEVBQUUsY0FBYztTQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxVQUFpQjtRQUMxQyxPQUFPLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssTUFBTSxDQUFDLG9CQUFvQixDQUFDLFVBQWlCO1FBQ3BELCtCQUErQjtRQUMvQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxVQUFVLEVBQUU7WUFDZiwwQkFBMEI7WUFDMUIsS0FBSyxNQUFNLFNBQVMsSUFBSSxVQUFVLEVBQUU7Z0JBQ25DLGtHQUFrRztnQkFDbEcsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLFVBQVUsQ0FBQyxRQUFRLEVBQUU7b0JBQ3ZELDBGQUEwRjtvQkFDMUYsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLFVBQVUsQ0FBQyxLQUFLLEVBQUU7d0JBQ3BELE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7cUJBQ3ZCO2lCQUNEO2FBQ0Q7U0FDRDtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaW1wb3J0ICogYXMgdXRpbHNfIGZyb20gJ2Zvcm1pb2pzLXByb3llY3Rvc2NvbGZ1dHVyby91dGlscy91dGlscyc7XHJcbmltcG9ydCAqIGFzIHV0aWxzXyBmcm9tICdmb3JtaW9qcy1jb2xmdXR1cm8vdXRpbHMvdXRpbHMnO1xyXG5pbXBvcnQgeyBJZlN0bXQgfSBmcm9tICdAYW5ndWxhci9jb21waWxlcic7XHJcbmltcG9ydCB7IFRva2VuU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Rva2VuLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFRm9ybWlvS2V5IH0gZnJvbSAnbmctcGxpLXV0aWwnO1xyXG5jb25zdCB1dGlscyA9IHV0aWxzXztcclxuXHJcbmV4cG9ydCBjbGFzcyBGb3JtaW9VdGlsIHtcclxuXHQvKipcclxuXHQgKiBJdCByZXR1cm5zIHRoZSBjb21wb25lbnRzIGZvcm1hdGVkIGJ5IHBhbmVsXHJcblx0ICogQHBhcmFtIGNvbXBvbmVudHNcclxuXHQgKiBAcmV0dXJuIHRoZSBvYmplY3QgaXMgW3twYW5lbDogLCBpdGVtczogW3sgdmFsdWU6ICwgbGFiZWw6IH1dfV1cclxuXHQgKi9cclxuXHRzdGF0aWMgZ2V0Rm9ybWF0dGVkQ29tcG9uZW50c0J5UGFuZWwoY29tcG9uZW50cyk6IGFueVtdIHtcclxuXHRcdGxldCByZXN1bHQgPSBbXTtcclxuXHRcdGlmIChjb21wb25lbnRzKSB7XHJcblx0XHRcdGxldCBncm91cCA9IG51bGw7XHJcblx0XHRcdGxldCBvYmplY3QgPSBudWxsO1xyXG5cdFx0XHRmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiBjb21wb25lbnRzKSB7XHJcblx0XHRcdFx0aWYgKGNvbXBvbmVudFtFRm9ybWlvS2V5LlRJVExFX1BBTkVMXSAhPT0gZ3JvdXApIHtcclxuXHRcdFx0XHRcdGlmIChncm91cCAhPT0gbnVsbCkge1xyXG5cdFx0XHRcdFx0XHRyZXN1bHQucHVzaChvYmplY3QpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0b2JqZWN0ID0geyBsYWJlbDogY29tcG9uZW50W0VGb3JtaW9LZXkuVElUTEVfUEFORUxdLCBpdGVtczogW10sIHRvZ2dsZTogZmFsc2UgfTtcclxuXHRcdFx0XHRcdGdyb3VwID0gY29tcG9uZW50W0VGb3JtaW9LZXkuVElUTEVfUEFORUxdO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRvYmplY3QuaXRlbXMucHVzaCh7XHJcblx0XHRcdFx0XHRsYWJlbDogY29tcG9uZW50W0VGb3JtaW9LZXkuTEFCRUxdLFxyXG5cdFx0XHRcdFx0dmFsdWU6IGNvbXBvbmVudFtFRm9ybWlvS2V5LktFWV1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoZ3JvdXAgIT09IG51bGwpIHJlc3VsdC5wdXNoKG9iamVjdCk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcmVzdWx0O1xyXG5cdH1cclxuXHRzdGF0aWMgZ2V0U2VsZWN0Qm94ZXMoc2VsZWN0Qm94ZSkge1xyXG5cdFx0dmFyIGlzdHJ1ZSA9IGZhbHNlO1xyXG5cclxuXHRcdGlmIChzZWxlY3RCb3hlICE9IHVuZGVmaW5lZCAmJiBzZWxlY3RCb3hlICE9IG51bGwgJiYgdHlwZW9mIHNlbGVjdEJveGUgPT09ICdvYmplY3QnKSB7XHJcblx0XHRcdGxldCBkYXRhSGFzVHJ1ZSA9IE9iamVjdC52YWx1ZXMoc2VsZWN0Qm94ZSk7XHJcblxyXG5cdFx0XHRkYXRhSGFzVHJ1ZS5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSkge1xyXG5cdFx0XHRcdGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyAmJiB2YWx1ZSkge1xyXG5cdFx0XHRcdFx0aXN0cnVlID0gdmFsdWU7XHJcblx0XHRcdFx0XHRyZXR1cm4gdmFsdWU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBFeHBlY3RlZCBvdXRwdXQ6IEFycmF5IFtcInNvbWVzdHJpbmdcIiwgNDIsIGZhbHNlXVxyXG5cclxuXHRcdHJldHVybiBpc3RydWU7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJdCByZXR1cm5zIHRoZSBjb21wb25lbnRzIGFyZSByZXF1aXJlZCBhY2NvcmRpbmcgd2l0aCBkYXRhXHJcblx0ICogQHBhcmFtIGNvbXBvbmVudHMgYXJyYXkgb2YgY29tcG9uZW50c1xyXG5cdCAqIEBwYXJhbSBkYXRhXHJcblx0ICovXHJcblx0c3RhdGljIGdldFJlcXVpcmVkQ29tcG9uZW50c0J5RGF0YShjb21wb25lbnRzLCBkYXRhKSB7XHJcblx0XHQvLyBnZXQgdGhlIHJlcXVpcmVkIGNvbXBvbmVudHNcclxuXHJcblx0XHRsZXQgYXJyYXkgPSBGb3JtaW9VdGlsLmdldFJlcXVpcmVkQ29tcG9uZW50cyhjb21wb25lbnRzKTtcclxuXHJcblx0XHQvLyBpZiBub3QgZGF0YSB0aGVuIHJldHVybiBjb21wb25lbnRzXHJcblx0XHRpZiAoZGF0YSAmJiBhcnJheSkge1xyXG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0Y29uc3QgY29tcG9uZW50ID0gYXJyYXlbaV07XHJcblx0XHRcdFx0Ly8gdXNlIGZvcm1pbyB0byBjaGVjayBjb25kaXRpb24gYWNjb3JkaW5nIHdpdGggZGF0YVxyXG5cdFx0XHRcdGlmICh1dGlscy5jaGVja0NvbmRpdGlvbihjb21wb25lbnQsIG51bGwsIGRhdGEsIG51bGwsIG51bGwpKSB7XHJcblx0XHRcdFx0XHRjb25zdCBrZXkgPSBjb21wb25lbnRbRUZvcm1pb0tleS5LRVldO1xyXG5cclxuXHRcdFx0XHRcdGlmIChBcnJheS5pc0FycmF5KGRhdGFba2V5XSkgJiYgZGF0YVtrZXldLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdFx0Ly8gcmVtb3ZlIGl0ZW0gZnJvbSBhcnJheVxyXG5cdFx0XHRcdFx0XHRhcnJheS5zcGxpY2UoaSwgMSk7XHJcblx0XHRcdFx0XHRcdGktLTtcclxuXHRcdFx0XHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdFx0XHRcdHR5cGVvZiBkYXRhW2tleV0gPT09ICdvYmplY3QnICYmXHJcblx0XHRcdFx0XHRcdCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZGF0YVtrZXldLCAnZm9ybWF0dGVkX2FkZHJlc3MnKSAmJlxyXG5cdFx0XHRcdFx0XHQhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGFba2V5XSwgJ2NhbGxpbmdDb2RlcycpICYmXHJcblx0XHRcdFx0XHRcdCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZGF0YVtrZXldLCAnbmF0aXZlTmFtZScpICYmXHJcblx0XHRcdFx0XHRcdCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZGF0YVtrZXldLCAnb3JpZ2luYWxfbmFtZScpICYmXHJcblx0XHRcdFx0XHRcdCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZGF0YVtrZXldLCAnZnVsbG5hbWUnKSAmJlxyXG5cdFx0XHRcdFx0XHRGb3JtaW9VdGlsLmdldFNlbGVjdEJveGVzKGRhdGFba2V5XSlcclxuXHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHQvLyByZW1vdmUgaXRlbSBmcm9tIGFycmF5XHJcblx0XHRcdFx0XHRcdGFycmF5LnNwbGljZShpLCAxKTtcclxuXHRcdFx0XHRcdFx0aS0tO1xyXG5cdFx0XHRcdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0XHRcdFx0dHlwZW9mIGRhdGFba2V5XSA9PT0gJ29iamVjdCcgJiZcclxuXHRcdFx0XHRcdFx0IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkYXRhW2tleV0sICdmb3JtYXR0ZWRfYWRkcmVzcycpICYmXHJcblx0XHRcdFx0XHRcdCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZGF0YVtrZXldLCAnY2FsbGluZ0NvZGVzJykgJiZcclxuXHRcdFx0XHRcdFx0IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkYXRhW2tleV0sICduYXRpdmVOYW1lJykgJiZcclxuXHRcdFx0XHRcdFx0IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkYXRhW2tleV0sICdvcmlnaW5hbF9uYW1lJykgJiZcclxuXHRcdFx0XHRcdFx0IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkYXRhW2tleV0sICdmdWxsbmFtZScpICYmXHJcblx0XHRcdFx0XHRcdCFGb3JtaW9VdGlsLmdldFNlbGVjdEJveGVzKGRhdGFba2V5XSlcclxuXHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0fSBlbHNlIGlmIChkYXRhW2tleV0gIT0gdW5kZWZpbmVkICYmIGRhdGFba2V5XSAhPSBudWxsICYmIGRhdGFba2V5XSAhPSAnJykge1xyXG5cdFx0XHRcdFx0XHQvLyByZW1vdmUgaXRlbSBmcm9tIGFycmF5XHJcblx0XHRcdFx0XHRcdGFycmF5LnNwbGljZShpLCAxKTtcclxuXHRcdFx0XHRcdFx0aS0tO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHRcdGNvbXBvbmVudC5jdXN0b21Db25kaXRpb25hbCAmJlxyXG5cdFx0XHRcdFx0XHRcdGNvbXBvbmVudC5jdXN0b21Db25kaXRpb25hbC5pbmNsdWRlcygnc2hvdycpXHJcblx0XHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHRcdC8vIHJlbW92ZSBpdGVtIGZyb20gYXJyYXlcclxuXHRcdFx0XHRcdFx0XHRhcnJheS5zcGxpY2UoaSwgMSk7XHJcblx0XHRcdFx0XHRcdFx0aS0tO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdC8vIHJlbW92ZSBpdGVtIGZyb20gYXJyYXlcclxuXHRcdFx0XHRcdGFycmF5LnNwbGljZShpLCAxKTtcclxuXHRcdFx0XHRcdGktLTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiBhcnJheTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEl0IHJldHVybnMgdGhlIGNvbXBvbmVudHMgdGhhdCBhcmUgcmVxdWlyZWRcclxuXHQgKiBAcGFyYW0gY29tcG9uZW50cyBhcnJheSBvZiBjb21wb25lbnRzXHJcblx0ICovXHJcblx0c3RhdGljIGdldFVuaXF1ZUNvbXBvbmVudHMoY29tcG9uZW50cykge1xyXG5cdFx0cmV0dXJuIEZvcm1pb1V0aWwuZ2V0Q29tcG9uZW50c0J5RmVhdHVyZShjb21wb25lbnRzLCBbRUZvcm1pb0tleS5VTklRVUVdLCB0cnVlKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEl0IHJldHVybnMgdGhlIGNvbXBvbmVudHMgdGhhdCBhcmUgcmVxdWlyZWRcclxuXHQgKiBAcGFyYW0gY29tcG9uZW50cyBhcnJheSBvZiBjb21wb25lbnRzXHJcblx0ICovXHJcblx0c3RhdGljIGdldFJlcXVpcmVkQ29tcG9uZW50cyhjb21wb25lbnRzKSB7XHJcblx0XHRyZXR1cm4gRm9ybWlvVXRpbC5nZXRDb21wb25lbnRzQnlGZWF0dXJlKFxyXG5cdFx0XHRjb21wb25lbnRzLFxyXG5cdFx0XHRbRUZvcm1pb0tleS5WQUxJREFURSwgRUZvcm1pb0tleS5SRVFVSVJFRF0sXHJcblx0XHRcdHRydWVcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJdCByZXR1cm5zIHRoZSBjb21wb25lbnRzIHRoYXQgaGF2ZSBhIHNwZWNpZmljIGZlYXR1cmUgZGVmaW5lZCBieSBwcm9wZXJ0aWVzIGFuZCB2YWx1ZVxyXG5cdCAqIEBwYXJhbSBjb21wb25lbnRzIGFycmF5IG9mIGNvbXBvbmVudHNcclxuXHQgKiBAcGFyYW0gcHJvcGVydGllcyBwYXRoIG9mIHByb3BlcnRpZXMgZXhhbXBsZSBbdmFsaWRhdGUsIHJlcXVpcmVkXSBvciBbdW5pcXVlXVxyXG5cdCAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgdGhhdCBzaG91bGQgaGF2ZSB0aGUgcHJvcGVydHlcclxuXHQgKi9cclxuXHRwcml2YXRlIHN0YXRpYyBnZXRDb21wb25lbnRzQnlGZWF0dXJlKGNvbXBvbmVudHM6IGFueVtdLCBwcm9wZXJ0aWVzOiBzdHJpbmdbXSwgdmFsdWU6IGFueSkge1xyXG5cdFx0bGV0IHJlc3VsdCA9IFtdO1xyXG5cdFx0aWYgKHByb3BlcnRpZXMgJiYgcHJvcGVydGllcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdC8vIGdldCBjb21wb25lbnRzXHJcblx0XHRcdGNvbnN0IGZpZWxkczogYW55W10gPSBGb3JtaW9VdGlsLmdldENvbXBvbmVudHMoY29tcG9uZW50cyk7XHJcblxyXG5cdFx0XHQvLyBnZXQgZmlyc3QgYW5kIGxhc3QgcHJvcGVydHlcclxuXHRcdFx0Y29uc3QgZmlyc3RQcm9wZXJ0eSA9IHByb3BlcnRpZXNbMF07XHJcblx0XHRcdGNvbnN0IGxhc3RQcm9wZXJ0eSA9IHByb3BlcnRpZXNbcHJvcGVydGllcy5sZW5ndGggLSAxXTtcclxuXHJcblx0XHRcdGlmIChmaWVsZHMpIHtcclxuXHRcdFx0XHQvLyBpdGVyYXRlIHRoZSBmaWVsZHNcclxuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGZpZWxkcy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0Ly8gaXQgY29udGFpbnMgdGhlIGVudGlyZSBvYmplY3QgZmllbGRcclxuXHRcdFx0XHRcdGNvbnN0IGZpZWxkID0gZmllbGRzW2ldO1xyXG5cdFx0XHRcdFx0Ly8gaXQgY29udGFpbnMgdGhlIGN1cnJlbnQgY29tcG9uZW50IGFuZCBpdCBpcyBnb25uYSBiZSB0aGUgY29tcG9uZW50IG9mIGV2ZXJ5IHByb3BlcnR5XHJcblx0XHRcdFx0XHRsZXQgY29tcG9uZW50ID0gZmllbGQ7XHJcblx0XHRcdFx0XHRpZiAoZmllbGRbZmlyc3RQcm9wZXJ0eV0pIHtcclxuXHRcdFx0XHRcdFx0Zm9yIChsZXQgaiA9IDA7IGogPCBwcm9wZXJ0aWVzLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0XHRcdFx0Y29uc3QgcHJvcGVydHkgPSBwcm9wZXJ0aWVzW2pdO1xyXG5cdFx0XHRcdFx0XHRcdC8vIGlmIGNvbXBvbmVudC5wcm9wZXJ0eSBkb2VzbnQgZXhpc3QgdGhlbiBicmVha1xyXG5cdFx0XHRcdFx0XHRcdGlmICghY29tcG9uZW50W3Byb3BlcnR5XSkgYnJlYWs7XHJcblx0XHRcdFx0XHRcdFx0aWYgKHByb3BlcnR5ID09PSBsYXN0UHJvcGVydHkpIHtcclxuXHRcdFx0XHRcdFx0XHRcdC8vIGl0IGlzIHRoZSBsYXN0IHByb3BlcnR5IHNvIGlmIHRoZSB2YWx1ZSBpcyBlcXVhbHMgdG8gY29tcG9uZW50Lmxhc3Rwcm9wZXJ0eSB0aGVuIGl0IGlzIGFkZGVkIHRvIHJlc3VsdFxyXG5cdFx0XHRcdFx0XHRcdFx0aWYgKGNvbXBvbmVudFtwcm9wZXJ0eV0gPT0gdmFsdWUpIHJlc3VsdC5wdXNoKGZpZWxkKTtcclxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0Ly8gb3RoZXJ3aXNlIGNvbXBvbmVudCB3aWxsIGJlIGVxdWFsIHRvIHRoZSBjb21wb25lbnQucHJvcGVydHlcclxuXHRcdFx0XHRcdFx0XHRcdGNvbXBvbmVudCA9IGNvbXBvbmVudFtwcm9wZXJ0eV07XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcmVzdWx0O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSXQgcmV0dXJucyB0aGUgY29tcG9uZW50c1xyXG5cdCAqIEBwYXJhbSBjb21wb25lbnRzXHJcblx0ICovXHJcblx0c3RhdGljIGdldENvbXBvbmVudHMoY29tcG9uZW50czogYW55W10pOiBhbnlbXSB7XHJcblx0XHRyZXR1cm4gRm9ybWlvVXRpbC5nZXRDb21wb25lbnRzQnlSZWN1cnNpb24oY29tcG9uZW50cywgJycsIG51bGwpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSXQgcmV0dXJucyB0aGUgY29tcG9uZW50cyBhcnJheSBvZiB0aGUgZm9ybSBieSByZWN1cnNpb25cclxuXHQgKiBAcGFyYW0gY29tcG9uZW50cyBhcnJheSBvZiBjb21wb25lbnRzXHJcblx0ICogQHBhcmFtIHRpdGxlUGFuZWwgbmFtZSBvZiBwYXJlbnQgcGFuZWwsIHNvIGNoaWxkcmVuIGNvbXBvbmVudHMgd2lsbCBpbmhlcml0IHRoZSBwYW5lbE5hbWVcclxuXHQgKiBAcGFyYW0gY29uZGl0aW9uYWxPYmplY3QgY29uZGl0aW9uYWwgb2JqZWN0IGl0IHdpbGwgYmUgaW5oZXJpdGVkIGZyb20gcGFuZWwge2NvbmRpdGlvbmFsOiB7IGVxOiAsIHZhbHVlOiAsIHdoZW46ICwganNvbjogfSwgY3VzdG9tQ29uZGl0aW9uYWw6IH1cclxuXHQgKi9cclxuXHRwcml2YXRlIHN0YXRpYyBnZXRDb21wb25lbnRzQnlSZWN1cnNpb24oXHJcblx0XHRjb21wb25lbnRzOiBhbnlbXSxcclxuXHRcdHRpdGxlUGFuZWw6IHN0cmluZyxcclxuXHRcdGNvbmRpdGlvbmFsUGFyZW50OiBhbnlcclxuXHQpOiBhbnlbXSB7XHJcblx0XHQvLyBpdCBjb250YWlucyB0aGUgcmVzdWx0IGFycmF5XHJcblx0XHRsZXQgcmVzdWx0ID0gW107XHJcblx0XHRpZiAoY29tcG9uZW50cykge1xyXG5cdFx0XHQvLyBpdGVyYXRlIG92ZXIgY29tcG9uZW50c1xyXG5cdFx0XHRmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiBjb21wb25lbnRzKSB7XHJcblx0XHRcdFx0Ly8gYXZvaWQgdGhlIGVkaXRncmlkIGNvbXBvbmVudCBvdCBpZiBpdCBoYXMgYSBkaWZmZXJlbnQgYmVoYXZpb3IgaXQgc2hvdWxkIGhhdmUgYW4gZWxzZSBzdGF0ZW1lbnRcclxuXHRcdFx0XHRpZiAoY29tcG9uZW50W0VGb3JtaW9LZXkuVFlQRV0gIT09IEVGb3JtaW9LZXkuRURJVEdSSUQpIHtcclxuXHRcdFx0XHRcdC8vIGlmIGNvbXBvbmVudCBpcyBwYW5lbCB0aGVuIHRpdGxlUGFuZWwgdmFyaWFibGUgaXMgY2hhbmdlZCwgYW5kIGl0IGlzIGdvbm5hIGJlIGluaGVyaXRlZFxyXG5cdFx0XHRcdFx0aWYgKGNvbXBvbmVudFtFRm9ybWlvS2V5LlRZUEVdID09PSBFRm9ybWlvS2V5LlBBTkVMKSB7XHJcblx0XHRcdFx0XHRcdHRpdGxlUGFuZWwgPSBjb21wb25lbnRbRUZvcm1pb0tleS5USVRMRV07XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHQodHlwZW9mIGNvbXBvbmVudFtFRm9ybWlvS2V5LkNPTVBPTkVOVFNdICE9PSAndW5kZWZpbmVkJyB8fFxyXG5cdFx0XHRcdFx0XHRcdHR5cGVvZiBjb21wb25lbnRbRUZvcm1pb0tleS5DT0xVTU5TXSAhPT0gJ3VuZGVmaW5lZCcpICYmXHJcblx0XHRcdFx0XHRcdCh0eXBlb2YgY29tcG9uZW50W0VGb3JtaW9LZXkuVFlQRV0gPT0gJ3VuZGVmaW5lZCcgfHxcclxuXHRcdFx0XHRcdFx0XHRjb21wb25lbnRbRUZvcm1pb0tleS5UWVBFXSAhPT0gRUZvcm1pb0tleS5UWVBFX0FERFJFU1MpXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0aWYgKGNvbXBvbmVudFsndHlwZSddICE9PSAnYWRkcmVzcycpIHtcclxuXHRcdFx0XHRcdFx0XHQvLyByZXNvbHZlIGNvbmRpdGlvbmFsIHBhcmVudCBjb25kaXRpb25hbFxyXG5cdFx0XHRcdFx0XHRcdGNvbnN0IGNvbmRpdGlvbmFsID0gdGhpcy5yZXNvbHZlSW5oZXJpdGFuY2VDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsUGFyZW50LFxyXG5cdFx0XHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuQ09ORElUSU9OQUxdLFxyXG5cdFx0XHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuQ1VTVE9NX0NPTkRJVElPTkFMXSxcclxuXHRcdFx0XHRcdFx0XHRcdGNvbXBvbmVudFtFRm9ybWlvS2V5LklEXVxyXG5cdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdFx0Ly8gY2hhbmdlIGNvbmRpdGlvblxyXG5cdFx0XHRcdFx0XHRcdGlmIChjb25kaXRpb25hbCkgY29uZGl0aW9uYWxQYXJlbnQgPSBjb25kaXRpb25hbDtcclxuXHRcdFx0XHRcdFx0XHQvLyBpdCBjb250YWlucyB0aGUgc3ViY29tcG9uZW50cyBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIGNvbXBvbmVudCBpZiBpdCBoYXMgY29tcG9uZW50cyBvciBjb2x1bW5zXHJcblx0XHRcdFx0XHRcdFx0bGV0IHN1YkNvbXBvbmVudHMgPVxyXG5cdFx0XHRcdFx0XHRcdFx0dHlwZW9mIGNvbXBvbmVudFtFRm9ybWlvS2V5LkNPTVBPTkVOVFNdICE9PSAndW5kZWZpbmVkJ1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQ/IGNvbXBvbmVudFtFRm9ybWlvS2V5LkNPTVBPTkVOVFNdXHJcblx0XHRcdFx0XHRcdFx0XHRcdDogY29tcG9uZW50W0VGb3JtaW9LZXkuQ09MVU1OU107XHJcblx0XHRcdFx0XHRcdFx0Ly8gaWYgY29tcG9uZW50IGhhcyBzdWJDb21wb25lbnRzLCB0aGVuIGV4ZWN1dGUgdGhlIHJlY3Vyc2lvbiBmdW5jdGlvbiB0byBnZXQgdGhlIHJlY3Vyc2lvbm5SZXN1bHRcclxuXHRcdFx0XHRcdFx0XHRjb25zdCByZWN1cnNpb25SZXN1bHQgPSBGb3JtaW9VdGlsLmdldENvbXBvbmVudHNCeVJlY3Vyc2lvbihcclxuXHRcdFx0XHRcdFx0XHRcdHN1YkNvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRcdFx0XHR0aXRsZVBhbmVsLFxyXG5cdFx0XHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxQYXJlbnRcclxuXHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdC8vIGlmIHJlY3Vyc2lvbiByZXN1bHQgdGhlbiByZXN1bHQgY29uY2F0cyB0aGUgcmVjdXJzaW9uUmVzdWx0XHJcblx0XHRcdFx0XHRcdFx0aWYgKHJlY3Vyc2lvblJlc3VsdCkgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdChyZWN1cnNpb25SZXN1bHQpO1xyXG5cdFx0XHRcdFx0XHRcdC8vIHJlc2V0IGNvbmRpdGlvbmFsIFBhcmVudFxyXG5cdFx0XHRcdFx0XHRcdGlmIChjb21wb25lbnRbRUZvcm1pb0tleS5JRF0gPT0gY29uZGl0aW9uYWxQYXJlbnQuaWQpXHJcblx0XHRcdFx0XHRcdFx0XHRjb25kaXRpb25hbFBhcmVudCA9IHVuZGVmaW5lZDtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRyZXN1bHQucHVzaChjb21wb25lbnQpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHQvLyBhdm9pZCB0aGUgY29tcG9uZW50IHR5cGUgYnV0dG9uXHJcblx0XHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0XHRjb21wb25lbnRbRUZvcm1pb0tleS5UWVBFXSAhPT0gRUZvcm1pb0tleS5CVVRUT04gJiZcclxuXHRcdFx0XHRcdFx0XHRjb21wb25lbnRbRUZvcm1pb0tleS5LRVldICYmXHJcblx0XHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuTEFCRUxdXHJcblx0XHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHRcdC8vIHJlc29sdmUgY29uZGl0aW9uYWwgY29uZGl0aW9uYWwgb2JqZWN0XHJcblx0XHRcdFx0XHRcdFx0bGV0IGNvbmRpdGlvbmFsID0gdGhpcy5yZXNvbHZlSW5oZXJpdGFuY2VDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsUGFyZW50LFxyXG5cdFx0XHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuQ09ORElUSU9OQUxdLFxyXG5cdFx0XHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuQ1VTVE9NX0NPTkRJVElPTkFMXSxcclxuXHRcdFx0XHRcdFx0XHRcdGNvbXBvbmVudFtFRm9ybWlvS2V5LklEXVxyXG5cdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdFx0aWYgKCFjb25kaXRpb25hbCkgY29uZGl0aW9uYWwgPSBjb25kaXRpb25hbFBhcmVudDtcclxuXHRcdFx0XHRcdFx0XHRjb21wb25lbnRbRUZvcm1pb0tleS5DT05ESVRJT05BTF0gPSBjb25kaXRpb25hbFtFRm9ybWlvS2V5LkNPTkRJVElPTkFMXTtcclxuXHRcdFx0XHRcdFx0XHRjb21wb25lbnRbRUZvcm1pb0tleS5DVVNUT01fQ09ORElUSU9OQUxdID1cclxuXHRcdFx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsW0VGb3JtaW9LZXkuQ1VTVE9NX0NPTkRJVElPTkFMXTtcclxuXHRcdFx0XHRcdFx0XHQvLyBhZGQgbmFtUGFuZWwgYXMgcHJvcGVydHlcclxuXHRcdFx0XHRcdFx0XHRjb21wb25lbnRbRUZvcm1pb0tleS5USVRMRV9QQU5FTF0gPSB0aXRsZVBhbmVsO1xyXG5cdFx0XHRcdFx0XHRcdC8vIGFkZCBjb21wb25lbnQgdG8gdGhlIHJlc3VsdFxyXG5cdFx0XHRcdFx0XHRcdHJlc3VsdC5wdXNoKGNvbXBvbmVudCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9IGVsc2UgaWYgKGNvbXBvbmVudFtFRm9ybWlvS2V5LlRZUEVdID09PSBFRm9ybWlvS2V5LkVESVRHUklEKSB7XHJcblx0XHRcdFx0XHRpZiAoY29tcG9uZW50LnZhbGlkYXRlLnJlcXVpcmVkKSB7XHJcblx0XHRcdFx0XHRcdHJlc3VsdC5wdXNoKGNvbXBvbmVudCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcmVzdWx0O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSXQgcmV0dXJucyB0aGUgY29tcG9uZW50c1xyXG5cdCAqIEBwYXJhbSBjb21wb25lbnRzXHJcblx0ICogQHBhcmFtIGtlZXBFZGl0R3JpZHNcclxuXHQgKi9cclxuXHRzdGF0aWMgZ2V0Q29tcG9uZW50c1dpdGhFZGl0R3JpZHMoY29tcG9uZW50czogYW55W10pOiBhbnlbXSB7XHJcblx0XHRyZXR1cm4gRm9ybWlvVXRpbC5nZXRDb21wb25lbnRzQnlSZWN1cnNpb25XaXRoRWRpdEdyaWRzKGNvbXBvbmVudHMsICcnLCBudWxsKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEl0IHJldHVybnMgdGhlIGNvbXBvbmVudHMgYXJyYXkgb2YgdGhlIGZvcm0gYnkgcmVjdXJzaW9uXHJcblx0ICogQHBhcmFtIGNvbXBvbmVudHMgYXJyYXkgb2YgY29tcG9uZW50c1xyXG5cdCAqIEBwYXJhbSB0aXRsZVBhbmVsIG5hbWUgb2YgcGFyZW50IHBhbmVsLCBzbyBjaGlsZHJlbiBjb21wb25lbnRzIHdpbGwgaW5oZXJpdCB0aGUgcGFuZWxOYW1lXHJcblx0ICogQHBhcmFtIGNvbmRpdGlvbmFsT2JqZWN0IGNvbmRpdGlvbmFsIG9iamVjdCBpdCB3aWxsIGJlIGluaGVyaXRlZCBmcm9tIHBhbmVsIHtjb25kaXRpb25hbDogeyBlcTogLCB2YWx1ZTogLCB3aGVuOiAsIGpzb246IH0sIGN1c3RvbUNvbmRpdGlvbmFsOiB9XHJcblx0ICovXHJcblx0cHJpdmF0ZSBzdGF0aWMgZ2V0Q29tcG9uZW50c0J5UmVjdXJzaW9uV2l0aEVkaXRHcmlkcyhcclxuXHRcdGNvbXBvbmVudHM6IGFueVtdLFxyXG5cdFx0dGl0bGVQYW5lbDogc3RyaW5nLFxyXG5cdFx0Y29uZGl0aW9uYWxQYXJlbnQ6IGFueVxyXG5cdCk6IGFueVtdIHtcclxuXHRcdC8vIGl0IGNvbnRhaW5zIHRoZSByZXN1bHQgYXJyYXlcclxuXHRcdGxldCByZXN1bHQgPSBbXTtcclxuXHRcdGlmIChjb21wb25lbnRzKSB7XHJcblx0XHRcdC8vIGl0ZXJhdGUgb3ZlciBjb21wb25lbnRzXHJcblx0XHRcdGZvciAoY29uc3QgY29tcG9uZW50IG9mIGNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHQvLyBhdm9pZCB0aGUgZWRpdGdyaWQgY29tcG9uZW50IG90IGlmIGl0IGhhcyBhIGRpZmZlcmVudCBiZWhhdmlvciBpdCBzaG91bGQgaGF2ZSBhbiBlbHNlIHN0YXRlbWVudFxyXG5cclxuXHRcdFx0XHQvLyBpZiBjb21wb25lbnQgaXMgcGFuZWwgdGhlbiB0aXRsZVBhbmVsIHZhcmlhYmxlIGlzIGNoYW5nZWQsIGFuZCBpdCBpcyBnb25uYSBiZSBpbmhlcml0ZWRcclxuXHRcdFx0XHRpZiAoY29tcG9uZW50W0VGb3JtaW9LZXkuVFlQRV0gPT09IEVGb3JtaW9LZXkuUEFORUwpIHtcclxuXHRcdFx0XHRcdHRpdGxlUGFuZWwgPSBjb21wb25lbnRbRUZvcm1pb0tleS5USVRMRV07XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHQodHlwZW9mIGNvbXBvbmVudFtFRm9ybWlvS2V5LkNPTVBPTkVOVFNdICE9PSAndW5kZWZpbmVkJyB8fFxyXG5cdFx0XHRcdFx0XHR0eXBlb2YgY29tcG9uZW50W0VGb3JtaW9LZXkuQ09MVU1OU10gIT09ICd1bmRlZmluZWQnKSAmJlxyXG5cdFx0XHRcdFx0KHR5cGVvZiBjb21wb25lbnRbRUZvcm1pb0tleS5UWVBFXSA9PSAndW5kZWZpbmVkJyB8fFxyXG5cdFx0XHRcdFx0XHRjb21wb25lbnRbRUZvcm1pb0tleS5UWVBFXSAhPT0gRUZvcm1pb0tleS5UWVBFX0FERFJFU1MpXHJcblx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHQvLyByZXNvbHZlIGNvbmRpdGlvbmFsIHBhcmVudCBjb25kaXRpb25hbFxyXG5cdFx0XHRcdFx0Y29uc3QgY29uZGl0aW9uYWwgPSB0aGlzLnJlc29sdmVJbmhlcml0YW5jZUNvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbFBhcmVudCxcclxuXHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuQ09ORElUSU9OQUxdLFxyXG5cdFx0XHRcdFx0XHRjb21wb25lbnRbRUZvcm1pb0tleS5DVVNUT01fQ09ORElUSU9OQUxdLFxyXG5cdFx0XHRcdFx0XHRjb21wb25lbnRbRUZvcm1pb0tleS5JRF1cclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHQvLyBjaGFuZ2UgY29uZGl0aW9uXHJcblx0XHRcdFx0XHRpZiAoY29uZGl0aW9uYWwpIGNvbmRpdGlvbmFsUGFyZW50ID0gY29uZGl0aW9uYWw7XHJcblx0XHRcdFx0XHQvLyBpdCBjb250YWlucyB0aGUgc3ViY29tcG9uZW50cyBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIGNvbXBvbmVudCBpZiBpdCBoYXMgY29tcG9uZW50cyBvciBjb2x1bW5zXHJcblx0XHRcdFx0XHRsZXQgc3ViQ29tcG9uZW50cyA9XHJcblx0XHRcdFx0XHRcdHR5cGVvZiBjb21wb25lbnRbRUZvcm1pb0tleS5DT01QT05FTlRTXSAhPT0gJ3VuZGVmaW5lZCdcclxuXHRcdFx0XHRcdFx0XHQ/IGNvbXBvbmVudFtFRm9ybWlvS2V5LkNPTVBPTkVOVFNdXHJcblx0XHRcdFx0XHRcdFx0OiBjb21wb25lbnRbRUZvcm1pb0tleS5DT0xVTU5TXTtcclxuXHJcblx0XHRcdFx0XHRpZiAoY29tcG9uZW50W0VGb3JtaW9LZXkuVFlQRV0gPT09IEVGb3JtaW9LZXkuRURJVEdSSUQpIHtcclxuXHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuVElUTEVfUEFORUxdID0gdGl0bGVQYW5lbDtcclxuXHRcdFx0XHRcdFx0cmVzdWx0LnB1c2goY29tcG9uZW50KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdC8vIGlmIGNvbXBvbmVudCBoYXMgc3ViQ29tcG9uZW50cywgdGhlbiBleGVjdXRlIHRoZSByZWN1cnNpb24gZnVuY3Rpb24gdG8gZ2V0IHRoZSByZWN1cnNpb25uUmVzdWx0XHJcblx0XHRcdFx0XHRjb25zdCByZWN1cnNpb25SZXN1bHQgPSBGb3JtaW9VdGlsLmdldENvbXBvbmVudHNCeVJlY3Vyc2lvbldpdGhFZGl0R3JpZHMoXHJcblx0XHRcdFx0XHRcdHN1YkNvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRcdHRpdGxlUGFuZWwsXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsUGFyZW50XHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0Ly8gaWYgcmVjdXJzaW9uIHJlc3VsdCB0aGVuIHJlc3VsdCBjb25jYXRzIHRoZSByZWN1cnNpb25SZXN1bHRcclxuXHRcdFx0XHRcdGlmIChyZWN1cnNpb25SZXN1bHQpIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQocmVjdXJzaW9uUmVzdWx0KTtcclxuXHRcdFx0XHRcdC8vIHJlc2V0IGNvbmRpdGlvbmFsIFBhcmVudFxyXG5cdFx0XHRcdFx0aWYgKGNvbXBvbmVudFtFRm9ybWlvS2V5LklEXSA9PSBjb25kaXRpb25hbFBhcmVudC5pZClcclxuXHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxQYXJlbnQgPSB1bmRlZmluZWQ7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdC8vIGF2b2lkIHRoZSBjb21wb25lbnQgdHlwZSBidXR0b25cclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuVFlQRV0gIT09IEVGb3JtaW9LZXkuQlVUVE9OICYmXHJcblx0XHRcdFx0XHRcdGNvbXBvbmVudFtFRm9ybWlvS2V5LktFWV0gJiZcclxuXHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuTEFCRUxdXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0Ly8gcmVzb2x2ZSBjb25kaXRpb25hbCBjb25kaXRpb25hbCBvYmplY3RcclxuXHRcdFx0XHRcdFx0bGV0IGNvbmRpdGlvbmFsID0gdGhpcy5yZXNvbHZlSW5oZXJpdGFuY2VDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRjb25kaXRpb25hbFBhcmVudCxcclxuXHRcdFx0XHRcdFx0XHRjb21wb25lbnRbRUZvcm1pb0tleS5DT05ESVRJT05BTF0sXHJcblx0XHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuQ1VTVE9NX0NPTkRJVElPTkFMXSxcclxuXHRcdFx0XHRcdFx0XHRjb21wb25lbnRbRUZvcm1pb0tleS5JRF1cclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0aWYgKCFjb25kaXRpb25hbCkgY29uZGl0aW9uYWwgPSBjb25kaXRpb25hbFBhcmVudDtcclxuXHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuQ09ORElUSU9OQUxdID0gY29uZGl0aW9uYWxbRUZvcm1pb0tleS5DT05ESVRJT05BTF07XHJcblx0XHRcdFx0XHRcdGNvbXBvbmVudFtFRm9ybWlvS2V5LkNVU1RPTV9DT05ESVRJT05BTF0gPVxyXG5cdFx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsW0VGb3JtaW9LZXkuQ1VTVE9NX0NPTkRJVElPTkFMXTtcclxuXHRcdFx0XHRcdFx0Ly8gYWRkIG5hbVBhbmVsIGFzIHByb3BlcnR5XHJcblx0XHRcdFx0XHRcdGNvbXBvbmVudFtFRm9ybWlvS2V5LlRJVExFX1BBTkVMXSA9IHRpdGxlUGFuZWw7XHJcblx0XHRcdFx0XHRcdC8vIGFkZCBjb21wb25lbnQgdG8gdGhlIHJlc3VsdFxyXG5cdFx0XHRcdFx0XHRyZXN1bHQucHVzaChjb21wb25lbnQpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHJlc3VsdDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEl0IHJlc29sdmUgdGhlIGluaGVyaXRhbmNlIGNvbmRpdGlvbmFsXHJcblx0ICogQHBhcmFtIGNvbmRpdGlvbmFsT2JqZWN0XHJcblx0ICogQHBhcmFtIGNvbmRpdGlvbmFsXHJcblx0ICogQHBhcmFtIGN1c3RvbUNvbmRpdGlvbmFsXHJcblx0ICovXHJcblx0cHJpdmF0ZSBzdGF0aWMgcmVzb2x2ZUluaGVyaXRhbmNlQ29uZGl0aW9uYWwoXHJcblx0XHRjb25kaXRpb25hbE9iamVjdCxcclxuXHRcdGNvbmRpdGlvbmFsLFxyXG5cdFx0Y3VzdG9tQ29uZGl0aW9uYWwsXHJcblx0XHRwYXJlbnRJZFxyXG5cdCk6IGFueSB7XHJcblx0XHQvLyB2YWxpZGF0ZSBpZiB0aGVyZSBpcyBhIGNvbmRpdGlvbiB3aXRoIHRoZSBuZXcgZmllbGRzXHJcblx0XHRpZiAoXHJcblx0XHRcdCFjb25kaXRpb25hbE9iamVjdCB8fFxyXG5cdFx0XHRjdXN0b21Db25kaXRpb25hbCB8fFxyXG5cdFx0XHQoY29uZGl0aW9uYWwgJiYgY29uZGl0aW9uYWxbRUZvcm1pb0tleS5XSEVOXSAmJiBjb25kaXRpb25hbFtFRm9ybWlvS2V5LkVRXSkgfHxcclxuXHRcdFx0KGNvbmRpdGlvbmFsICYmIGNvbmRpdGlvbmFsW0VGb3JtaW9LZXkuSlNPTl0pXHJcblx0XHQpIHtcclxuXHRcdFx0cmV0dXJuIHsgY29uZGl0aW9uYWw6IGNvbmRpdGlvbmFsLCBjdXN0b21Db25kaXRpb25hbDogY3VzdG9tQ29uZGl0aW9uYWwsIGlkOiBwYXJlbnRJZCB9O1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIG51bGw7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJdCByZXR1cm5zIHRoZSBlZGl0IGdyaWQgY29tcG9uZW50c1xyXG5cdCAqIEBwYXJhbSBjb21wb25lbnRzXHJcblx0ICovXHJcblx0c3RhdGljIGdldEVkaXRHcmlkS2V5TGFiZWxzKGNvbXBvbmVudHM6IGFueVtdKTogYW55W10ge1xyXG5cdFx0cmV0dXJuIEZvcm1pb1V0aWwuZ2V0RWRpdEdyaWRLZXlMYWJlbHNCeVJlY3Vyc2lvbihjb21wb25lbnRzLCAnJywgbnVsbCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJdCByZXR1cm5zIHRoZSBjb21wb25lbnRzIGVkaXQgZ3JpZCBhcnJheSBvZiB0aGUgZm9ybSBieSByZWN1cnNpb25cclxuXHQgKiBAcGFyYW0gY29tcG9uZW50cyBhcnJheSBvZiBjb21wb25lbnRzXHJcblx0ICogQHBhcmFtIHRpdGxlUGFuZWwgbmFtZSBvZiBwYXJlbnQgcGFuZWwsIHNvIGNoaWxkcmVuIGNvbXBvbmVudHMgd2lsbCBpbmhlcml0IHRoZSBwYW5lbE5hbWVcclxuXHQgKiBAcGFyYW0gY29uZGl0aW9uYWxPYmplY3QgY29uZGl0aW9uYWwgb2JqZWN0IGl0IHdpbGwgYmUgaW5oZXJpdGVkIGZyb20gcGFuZWwge2NvbmRpdGlvbmFsOiB7IGVxOiAsIHZhbHVlOiAsIHdoZW46ICwganNvbjogfSwgY3VzdG9tQ29uZGl0aW9uYWw6IH1cclxuXHQgKi9cclxuXHRwcml2YXRlIHN0YXRpYyBnZXRFZGl0R3JpZEtleUxhYmVsc0J5UmVjdXJzaW9uKFxyXG5cdFx0Y29tcG9uZW50czogYW55W10sXHJcblx0XHR0aXRsZVBhbmVsOiBzdHJpbmcsXHJcblx0XHRjb25kaXRpb25hbFBhcmVudDogYW55XHJcblx0KTogYW55W10ge1xyXG5cdFx0Ly8gaXQgY29udGFpbnMgdGhlIHJlc3VsdCBhcnJheVxyXG5cdFx0bGV0IHJlc3VsdCA9IFtdO1xyXG5cdFx0aWYgKGNvbXBvbmVudHMpIHtcclxuXHRcdFx0Ly8gaXRlcmF0ZSBvdmVyIGNvbXBvbmVudHNcclxuXHRcdFx0Zm9yIChjb25zdCBjb21wb25lbnQgb2YgY29tcG9uZW50cykge1xyXG5cdFx0XHRcdC8vIGlmIGNvbXBvbmVudCBpcyBwYW5lbCB0aGVuIHRpdGxlUGFuZWwgdmFyaWFibGUgaXMgY2hhbmdlZCwgYW5kIGl0IGlzIGdvbm5hIGJlIGluaGVyaXRlZFxyXG5cdFx0XHRcdGlmIChjb21wb25lbnRbRUZvcm1pb0tleS5UWVBFXSA9PT0gRUZvcm1pb0tleS5QQU5FTCkge1xyXG5cdFx0XHRcdFx0dGl0bGVQYW5lbCA9IGNvbXBvbmVudFtFRm9ybWlvS2V5LlRJVExFXTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdCh0eXBlb2YgY29tcG9uZW50W0VGb3JtaW9LZXkuQ09NUE9ORU5UU10gIT09ICd1bmRlZmluZWQnIHx8XHJcblx0XHRcdFx0XHRcdHR5cGVvZiBjb21wb25lbnRbRUZvcm1pb0tleS5DT0xVTU5TXSAhPT0gJ3VuZGVmaW5lZCcpICYmXHJcblx0XHRcdFx0XHQodHlwZW9mIGNvbXBvbmVudFtFRm9ybWlvS2V5LlRZUEVdID09ICd1bmRlZmluZWQnIHx8XHJcblx0XHRcdFx0XHRcdGNvbXBvbmVudFtFRm9ybWlvS2V5LlRZUEVdICE9PSBFRm9ybWlvS2V5LlRZUEVfQUREUkVTUylcclxuXHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdC8vIHJlc29sdmUgY29uZGl0aW9uYWwgcGFyZW50IGNvbmRpdGlvbmFsXHJcblx0XHRcdFx0XHRjb25zdCBjb25kaXRpb25hbCA9IHRoaXMucmVzb2x2ZUluaGVyaXRhbmNlQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsUGFyZW50LFxyXG5cdFx0XHRcdFx0XHRjb21wb25lbnRbRUZvcm1pb0tleS5DT05ESVRJT05BTF0sXHJcblx0XHRcdFx0XHRcdGNvbXBvbmVudFtFRm9ybWlvS2V5LkNVU1RPTV9DT05ESVRJT05BTF0sXHJcblx0XHRcdFx0XHRcdGNvbXBvbmVudFtFRm9ybWlvS2V5LklEXVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdC8vIGNoYW5nZSBjb25kaXRpb25cclxuXHRcdFx0XHRcdGlmIChjb25kaXRpb25hbCkgY29uZGl0aW9uYWxQYXJlbnQgPSBjb25kaXRpb25hbDtcclxuXHRcdFx0XHRcdC8vIGl0IGNvbnRhaW5zIHRoZSBzdWJjb21wb25lbnRzIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgY29tcG9uZW50IGlmIGl0IGhhcyBjb21wb25lbnRzIG9yIGNvbHVtbnNcclxuXHRcdFx0XHRcdGxldCBzdWJDb21wb25lbnRzID1cclxuXHRcdFx0XHRcdFx0dHlwZW9mIGNvbXBvbmVudFtFRm9ybWlvS2V5LkNPTVBPTkVOVFNdICE9PSAndW5kZWZpbmVkJ1xyXG5cdFx0XHRcdFx0XHRcdD8gY29tcG9uZW50W0VGb3JtaW9LZXkuQ09NUE9ORU5UU11cclxuXHRcdFx0XHRcdFx0XHQ6IGNvbXBvbmVudFtFRm9ybWlvS2V5LkNPTFVNTlNdO1xyXG5cdFx0XHRcdFx0aWYgKGNvbXBvbmVudFtFRm9ybWlvS2V5LlRZUEVdID09IEVGb3JtaW9LZXkuRURJVEdSSUQpIHtcclxuXHRcdFx0XHRcdFx0Ly8gYWRkIG5hbVBhbmVsIGFzIHByb3BlcnR5XHJcblx0XHRcdFx0XHRcdGNvbXBvbmVudFtFRm9ybWlvS2V5LlRJVExFX1BBTkVMXSA9IHRpdGxlUGFuZWw7XHJcblx0XHRcdFx0XHRcdC8vIGFkZCBjb21wb25lbnQgdG8gdGhlIHJlc3VsdFxyXG5cdFx0XHRcdFx0XHRyZXN1bHQucHVzaChjb21wb25lbnQpO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0Ly8gaWYgY29tcG9uZW50IGhhcyBzdWJDb21wb25lbnRzLCB0aGVuIGV4ZWN1dGUgdGhlIHJlY3Vyc2lvbiBmdW5jdGlvbiB0byBnZXQgdGhlIHJlY3Vyc2lvbm5SZXN1bHRcclxuXHRcdFx0XHRcdFx0Y29uc3QgcmVjdXJzaW9uUmVzdWx0ID0gRm9ybWlvVXRpbC5nZXRFZGl0R3JpZEtleUxhYmVsc0J5UmVjdXJzaW9uKFxyXG5cdFx0XHRcdFx0XHRcdHN1YkNvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRcdFx0dGl0bGVQYW5lbCxcclxuXHRcdFx0XHRcdFx0XHRjb25kaXRpb25hbFBhcmVudFxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHQvLyBpZiByZWN1cnNpb24gcmVzdWx0IHRoZW4gcmVzdWx0IGNvbmNhdHMgdGhlIHJlY3Vyc2lvblJlc3VsdFxyXG5cdFx0XHRcdFx0XHRpZiAocmVjdXJzaW9uUmVzdWx0KSByZXN1bHQgPSByZXN1bHQuY29uY2F0KHJlY3Vyc2lvblJlc3VsdCk7XHJcblx0XHRcdFx0XHRcdC8vIHJlc2V0IGNvbmRpdGlvbmFsIFBhcmVudFxyXG5cdFx0XHRcdFx0XHRpZiAoY29tcG9uZW50W0VGb3JtaW9LZXkuSURdID09IGNvbmRpdGlvbmFsUGFyZW50LmlkKVxyXG5cdFx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsUGFyZW50ID0gdW5kZWZpbmVkO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcmVzdWx0O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSXQgcmV0dXJucyB0aGUgY29tcG9uZW50c1xyXG5cdCAqIEBwYXJhbSBjb21wb25lbnRzXHJcblx0ICogQHBhcmFtIGtlZXBFZGl0R3JpZHNcclxuXHQgKi9cclxuXHRzdGF0aWMgZ2V0Q29tcG9uZW50c0ludG9FZGl0R3JpZHMoY29tcG9uZW50czogYW55W10sIGVkaXRHcmlkTmFtZTogc3RyaW5nKTogYW55W10ge1xyXG5cdFx0cmV0dXJuIEZvcm1pb1V0aWwuZ2V0Q29tcG9uZW50c0J5UmVjdXJzaW9uSW50b0VkaXRHcmlkcyhcclxuXHRcdFx0Y29tcG9uZW50cyxcclxuXHRcdFx0JycsXHJcblx0XHRcdG51bGwsXHJcblx0XHRcdGVkaXRHcmlkTmFtZSxcclxuXHRcdFx0ZmFsc2VcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJdCByZXR1cm5zIHRoZSBjb21wb25lbnRzIGFycmF5IG9mIHRoZSBmb3JtIGJ5IHJlY3Vyc2lvblxyXG5cdCAqIEBwYXJhbSBjb21wb25lbnRzIGFycmF5IG9mIGNvbXBvbmVudHNcclxuXHQgKiBAcGFyYW0gdGl0bGVQYW5lbCBuYW1lIG9mIHBhcmVudCBwYW5lbCwgc28gY2hpbGRyZW4gY29tcG9uZW50cyB3aWxsIGluaGVyaXQgdGhlIHBhbmVsTmFtZVxyXG5cdCAqIEBwYXJhbSBjb25kaXRpb25hbE9iamVjdCBjb25kaXRpb25hbCBvYmplY3QgaXQgd2lsbCBiZSBpbmhlcml0ZWQgZnJvbSBwYW5lbCB7Y29uZGl0aW9uYWw6IHsgZXE6ICwgdmFsdWU6ICwgd2hlbjogLCBqc29uOiB9LCBjdXN0b21Db25kaXRpb25hbDogfVxyXG5cdCAqL1xyXG5cdHByaXZhdGUgc3RhdGljIGdldENvbXBvbmVudHNCeVJlY3Vyc2lvbkludG9FZGl0R3JpZHMoXHJcblx0XHRjb21wb25lbnRzOiBhbnlbXSxcclxuXHRcdHRpdGxlUGFuZWw6IHN0cmluZyxcclxuXHRcdGNvbmRpdGlvbmFsUGFyZW50OiBhbnksXHJcblx0XHRlZGl0R3JpZE5hbWU6IHN0cmluZyxcclxuXHRcdGV4aXN0RWRpdEdyaWQ6IGJvb2xlYW5cclxuXHQpOiBhbnlbXSB7XHJcblx0XHQvLyBpdCBjb250YWlucyB0aGUgcmVzdWx0IGFycmF5XHJcblx0XHRsZXQgcmVzdWx0ID0gW107XHJcblx0XHRpZiAoY29tcG9uZW50cykge1xyXG5cdFx0XHQvLyBpdGVyYXRlIG92ZXIgY29tcG9uZW50c1xyXG5cdFx0XHRmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiBjb21wb25lbnRzKSB7XHJcblx0XHRcdFx0Ly8gYXZvaWQgdGhlIGVkaXRncmlkIGNvbXBvbmVudCBvdCBpZiBpdCBoYXMgYSBkaWZmZXJlbnQgYmVoYXZpb3IgaXQgc2hvdWxkIGhhdmUgYW4gZWxzZSBzdGF0ZW1lbnRcclxuXHJcblx0XHRcdFx0Ly8gaWYgY29tcG9uZW50IGlzIHBhbmVsIHRoZW4gdGl0bGVQYW5lbCB2YXJpYWJsZSBpcyBjaGFuZ2VkLCBhbmQgaXQgaXMgZ29ubmEgYmUgaW5oZXJpdGVkXHJcblx0XHRcdFx0aWYgKGNvbXBvbmVudFtFRm9ybWlvS2V5LlRZUEVdID09PSBFRm9ybWlvS2V5LlBBTkVMKSB7XHJcblx0XHRcdFx0XHR0aXRsZVBhbmVsID0gY29tcG9uZW50W0VGb3JtaW9LZXkuVElUTEVdO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0KHR5cGVvZiBjb21wb25lbnRbRUZvcm1pb0tleS5DT01QT05FTlRTXSAhPT0gJ3VuZGVmaW5lZCcgfHxcclxuXHRcdFx0XHRcdFx0dHlwZW9mIGNvbXBvbmVudFtFRm9ybWlvS2V5LkNPTFVNTlNdICE9PSAndW5kZWZpbmVkJykgJiZcclxuXHRcdFx0XHRcdCh0eXBlb2YgY29tcG9uZW50W0VGb3JtaW9LZXkuVFlQRV0gPT0gJ3VuZGVmaW5lZCcgfHxcclxuXHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuVFlQRV0gIT09IEVGb3JtaW9LZXkuVFlQRV9BRERSRVNTKVxyXG5cdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0Ly8gcmVzb2x2ZSBjb25kaXRpb25hbCBwYXJlbnQgY29uZGl0aW9uYWxcclxuXHRcdFx0XHRcdGNvbnN0IGNvbmRpdGlvbmFsID0gdGhpcy5yZXNvbHZlSW5oZXJpdGFuY2VDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxQYXJlbnQsXHJcblx0XHRcdFx0XHRcdGNvbXBvbmVudFtFRm9ybWlvS2V5LkNPTkRJVElPTkFMXSxcclxuXHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuQ1VTVE9NX0NPTkRJVElPTkFMXSxcclxuXHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuSURdXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0Ly8gY2hhbmdlIGNvbmRpdGlvblxyXG5cdFx0XHRcdFx0aWYgKGNvbmRpdGlvbmFsKSBjb25kaXRpb25hbFBhcmVudCA9IGNvbmRpdGlvbmFsO1xyXG5cdFx0XHRcdFx0Ly8gaXQgY29udGFpbnMgdGhlIHN1YmNvbXBvbmVudHMgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBjb21wb25lbnQgaWYgaXQgaGFzIGNvbXBvbmVudHMgb3IgY29sdW1uc1xyXG5cdFx0XHRcdFx0bGV0IHN1YkNvbXBvbmVudHMgPVxyXG5cdFx0XHRcdFx0XHR0eXBlb2YgY29tcG9uZW50W0VGb3JtaW9LZXkuQ09NUE9ORU5UU10gIT09ICd1bmRlZmluZWQnXHJcblx0XHRcdFx0XHRcdFx0PyBjb21wb25lbnRbRUZvcm1pb0tleS5DT01QT05FTlRTXVxyXG5cdFx0XHRcdFx0XHRcdDogY29tcG9uZW50W0VGb3JtaW9LZXkuQ09MVU1OU107XHJcblxyXG5cdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHRjb21wb25lbnRbRUZvcm1pb0tleS5UWVBFXSA9PT0gRUZvcm1pb0tleS5FRElUR1JJRCAmJlxyXG5cdFx0XHRcdFx0XHRjb21wb25lbnRbJ2tleSddID09IGVkaXRHcmlkTmFtZVxyXG5cdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdGV4aXN0RWRpdEdyaWQgPSB0cnVlO1xyXG5cdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0KHR5cGVvZiBjb21wb25lbnRbRUZvcm1pb0tleS5DT01QT05FTlRTXSAhPT0gJ3VuZGVmaW5lZCcgfHxcclxuXHRcdFx0XHRcdFx0XHRcdHR5cGVvZiBjb21wb25lbnRbRUZvcm1pb0tleS5DT0xVTU5TXSAhPT0gJ3VuZGVmaW5lZCcpICYmXHJcblx0XHRcdFx0XHRcdFx0KHR5cGVvZiBjb21wb25lbnRbRUZvcm1pb0tleS5UWVBFXSA9PSAndW5kZWZpbmVkJyB8fFxyXG5cdFx0XHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuVFlQRV0gIT09IEVGb3JtaW9LZXkuVFlQRV9BRERSRVNTKVxyXG5cdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHQvLyByZXNvbHZlIGNvbmRpdGlvbmFsIHBhcmVudCBjb25kaXRpb25hbFxyXG5cdFx0XHRcdFx0XHRcdGNvbnN0IGNvbmRpdGlvbmFsID0gdGhpcy5yZXNvbHZlSW5oZXJpdGFuY2VDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsUGFyZW50LFxyXG5cdFx0XHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuQ09ORElUSU9OQUxdLFxyXG5cdFx0XHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuQ1VTVE9NX0NPTkRJVElPTkFMXSxcclxuXHRcdFx0XHRcdFx0XHRcdGNvbXBvbmVudFtFRm9ybWlvS2V5LklEXVxyXG5cdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdFx0Ly8gY2hhbmdlIGNvbmRpdGlvblxyXG5cdFx0XHRcdFx0XHRcdGlmIChjb25kaXRpb25hbCkgY29uZGl0aW9uYWxQYXJlbnQgPSBjb25kaXRpb25hbDtcclxuXHRcdFx0XHRcdFx0XHQvLyBpdCBjb250YWlucyB0aGUgc3ViY29tcG9uZW50cyBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIGNvbXBvbmVudCBpZiBpdCBoYXMgY29tcG9uZW50cyBvciBjb2x1bW5zXHJcblx0XHRcdFx0XHRcdFx0bGV0IHN1YkNvbXBvbmVudHMgPVxyXG5cdFx0XHRcdFx0XHRcdFx0dHlwZW9mIGNvbXBvbmVudFtFRm9ybWlvS2V5LkNPTVBPTkVOVFNdICE9PSAndW5kZWZpbmVkJ1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQ/IGNvbXBvbmVudFtFRm9ybWlvS2V5LkNPTVBPTkVOVFNdXHJcblx0XHRcdFx0XHRcdFx0XHRcdDogY29tcG9uZW50W0VGb3JtaW9LZXkuQ09MVU1OU107XHJcblxyXG5cdFx0XHRcdFx0XHRcdC8vIGlmIGNvbXBvbmVudCBoYXMgc3ViQ29tcG9uZW50cywgdGhlbiBleGVjdXRlIHRoZSByZWN1cnNpb24gZnVuY3Rpb24gdG8gZ2V0IHRoZSByZWN1cnNpb25uUmVzdWx0XHJcblx0XHRcdFx0XHRcdFx0Y29uc3QgcmVjdXJzaW9uUmVzdWx0ID1cclxuXHRcdFx0XHRcdFx0XHRcdEZvcm1pb1V0aWwuZ2V0Q29tcG9uZW50c0J5UmVjdXJzaW9uSW50b0VkaXRHcmlkcyhcclxuXHRcdFx0XHRcdFx0XHRcdFx0c3ViQ29tcG9uZW50cyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0dGl0bGVQYW5lbCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxQYXJlbnQsXHJcblx0XHRcdFx0XHRcdFx0XHRcdGVkaXRHcmlkTmFtZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZXhpc3RFZGl0R3JpZFxyXG5cdFx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0XHQvLyBpZiByZWN1cnNpb24gcmVzdWx0IHRoZW4gcmVzdWx0IGNvbmNhdHMgdGhlIHJlY3Vyc2lvblJlc3VsdFxyXG5cdFx0XHRcdFx0XHRcdGlmIChyZWN1cnNpb25SZXN1bHQpIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQocmVjdXJzaW9uUmVzdWx0KTtcclxuXHRcdFx0XHRcdFx0XHQvLyByZXNldCBjb25kaXRpb25hbCBQYXJlbnRcclxuXHRcdFx0XHRcdFx0XHRpZiAoY29tcG9uZW50ICYmIGNvbmRpdGlvbmFsUGFyZW50KSB7XHJcblx0XHRcdFx0XHRcdFx0XHRpZiAoY29tcG9uZW50W0VGb3JtaW9LZXkuSURdID09IGNvbmRpdGlvbmFsUGFyZW50LmlkKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRjb25kaXRpb25hbFBhcmVudCA9IHVuZGVmaW5lZDtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0Ly8gYXZvaWQgdGhlIGNvbXBvbmVudCB0eXBlIGJ1dHRvblxyXG5cdFx0XHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0XHRcdGNvbXBvbmVudFtFRm9ybWlvS2V5LlRZUEVdICE9PSBFRm9ybWlvS2V5LkJVVFRPTiAmJlxyXG5cdFx0XHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuS0VZXSAmJlxyXG5cdFx0XHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuTEFCRUxdICYmXHJcblx0XHRcdFx0XHRcdFx0XHRleGlzdEVkaXRHcmlkXHJcblx0XHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0XHQvLyByZXNvbHZlIGNvbmRpdGlvbmFsIGNvbmRpdGlvbmFsIG9iamVjdFxyXG5cdFx0XHRcdFx0XHRcdFx0bGV0IGNvbmRpdGlvbmFsID0gdGhpcy5yZXNvbHZlSW5oZXJpdGFuY2VDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxQYXJlbnQsXHJcblx0XHRcdFx0XHRcdFx0XHRcdGNvbXBvbmVudFtFRm9ybWlvS2V5LkNPTkRJVElPTkFMXSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuQ1VTVE9NX0NPTkRJVElPTkFMXSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuSURdXHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCFjb25kaXRpb25hbCkgY29uZGl0aW9uYWwgPSBjb25kaXRpb25hbFBhcmVudDtcclxuXHRcdFx0XHRcdFx0XHRcdGNvbXBvbmVudFtFRm9ybWlvS2V5LkNPTkRJVElPTkFMXSA9XHJcblx0XHRcdFx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsW0VGb3JtaW9LZXkuQ09ORElUSU9OQUxdO1xyXG5cdFx0XHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuQ1VTVE9NX0NPTkRJVElPTkFMXSA9XHJcblx0XHRcdFx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsW0VGb3JtaW9LZXkuQ1VTVE9NX0NPTkRJVElPTkFMXTtcclxuXHRcdFx0XHRcdFx0XHRcdC8vIGFkZCBuYW1QYW5lbCBhcyBwcm9wZXJ0eVxyXG5cdFx0XHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuVElUTEVfUEFORUxdID0gdGl0bGVQYW5lbDtcclxuXHRcdFx0XHRcdFx0XHRcdC8vIGFkZCBjb21wb25lbnQgdG8gdGhlIHJlc3VsdFxyXG5cdFx0XHRcdFx0XHRcdFx0cmVzdWx0LnB1c2goY29tcG9uZW50KTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdC8vIGlmIGNvbXBvbmVudCBoYXMgc3ViQ29tcG9uZW50cywgdGhlbiBleGVjdXRlIHRoZSByZWN1cnNpb24gZnVuY3Rpb24gdG8gZ2V0IHRoZSByZWN1cnNpb25uUmVzdWx0XHJcblx0XHRcdFx0XHRjb25zdCByZWN1cnNpb25SZXN1bHQgPSBGb3JtaW9VdGlsLmdldENvbXBvbmVudHNCeVJlY3Vyc2lvbkludG9FZGl0R3JpZHMoXHJcblx0XHRcdFx0XHRcdHN1YkNvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRcdHRpdGxlUGFuZWwsXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsUGFyZW50LFxyXG5cdFx0XHRcdFx0XHRlZGl0R3JpZE5hbWUsXHJcblx0XHRcdFx0XHRcdGV4aXN0RWRpdEdyaWRcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHQvLyBpZiByZWN1cnNpb24gcmVzdWx0IHRoZW4gcmVzdWx0IGNvbmNhdHMgdGhlIHJlY3Vyc2lvblJlc3VsdFxyXG5cdFx0XHRcdFx0aWYgKHJlY3Vyc2lvblJlc3VsdCkgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdChyZWN1cnNpb25SZXN1bHQpO1xyXG5cdFx0XHRcdFx0Ly8gcmVzZXQgY29uZGl0aW9uYWwgUGFyZW50XHJcblx0XHRcdFx0XHRpZiAoY29tcG9uZW50ICYmIGNvbmRpdGlvbmFsUGFyZW50KSB7XHJcblx0XHRcdFx0XHRcdGlmIChjb21wb25lbnRbRUZvcm1pb0tleS5JRF0gPT0gY29uZGl0aW9uYWxQYXJlbnQuaWQpXHJcblx0XHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxQYXJlbnQgPSB1bmRlZmluZWQ7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdC8vIGF2b2lkIHRoZSBjb21wb25lbnQgdHlwZSBidXR0b25cclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuVFlQRV0gIT09IEVGb3JtaW9LZXkuQlVUVE9OICYmXHJcblx0XHRcdFx0XHRcdGNvbXBvbmVudFtFRm9ybWlvS2V5LktFWV0gJiZcclxuXHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuTEFCRUxdICYmXHJcblx0XHRcdFx0XHRcdGV4aXN0RWRpdEdyaWRcclxuXHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHQvLyByZXNvbHZlIGNvbmRpdGlvbmFsIGNvbmRpdGlvbmFsIG9iamVjdFxyXG5cdFx0XHRcdFx0XHRsZXQgY29uZGl0aW9uYWwgPSB0aGlzLnJlc29sdmVJbmhlcml0YW5jZUNvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsUGFyZW50LFxyXG5cdFx0XHRcdFx0XHRcdGNvbXBvbmVudFtFRm9ybWlvS2V5LkNPTkRJVElPTkFMXSxcclxuXHRcdFx0XHRcdFx0XHRjb21wb25lbnRbRUZvcm1pb0tleS5DVVNUT01fQ09ORElUSU9OQUxdLFxyXG5cdFx0XHRcdFx0XHRcdGNvbXBvbmVudFtFRm9ybWlvS2V5LklEXVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRpZiAoIWNvbmRpdGlvbmFsKSBjb25kaXRpb25hbCA9IGNvbmRpdGlvbmFsUGFyZW50O1xyXG5cdFx0XHRcdFx0XHRjb21wb25lbnRbRUZvcm1pb0tleS5DT05ESVRJT05BTF0gPSBjb25kaXRpb25hbFtFRm9ybWlvS2V5LkNPTkRJVElPTkFMXTtcclxuXHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuQ1VTVE9NX0NPTkRJVElPTkFMXSA9XHJcblx0XHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxbRUZvcm1pb0tleS5DVVNUT01fQ09ORElUSU9OQUxdO1xyXG5cdFx0XHRcdFx0XHQvLyBhZGQgbmFtUGFuZWwgYXMgcHJvcGVydHlcclxuXHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuVElUTEVfUEFORUxdID0gdGl0bGVQYW5lbDtcclxuXHRcdFx0XHRcdFx0Ly8gYWRkIGNvbXBvbmVudCB0byB0aGUgcmVzdWx0XHJcblx0XHRcdFx0XHRcdHJlc3VsdC5wdXNoKGNvbXBvbmVudCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcmVzdWx0O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ3JlYXRlIDIgamFzb24gb2JqZWN0cyBvZiBkYXRhIGZvcm0gYnkgY29tcG9uZW50IGtleSBhbmQgb3RoZXIgYnkgY29tcG9uZW50IGtleSBhbmQgdGl0bGUgZm9ybSBrZXlcclxuXHQgKiBAcGFyYW0gZGF0YUZvcm0gZGF0YUZvcm0gbW9kZWwgb2JqZWN0XHJcblx0ICogQHJldHVybnMgT2JqZWN0IG9mIDIgZWxlbWVudFxyXG5cdCAqL1xyXG5cdHN0YXRpYyBjcmVhdGVMaXN0RGF0YUJ5RGF0YUZvcm1MaXN0KGRhdGFGb3JtOiBhbnksIGxpc3RGb3JtOiBhbnlbXSk6IGFueSB7XHJcblx0XHRsZXQgbGlzdERhdGE6IGFueSA9IHt9O1xyXG5cdFx0bGV0IGxpc3REYXRhQnlGb3JtOiBhbnkgPSB7fTtcclxuXHRcdGlmIChkYXRhRm9ybSAmJiBkYXRhRm9ybS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdGxpc3REYXRhID0ge307XHJcblx0XHRcdGxpc3REYXRhQnlGb3JtID0ge307XHJcblx0XHRcdGxldCBkRm9ybTogYW55O1xyXG5cdFx0XHRmb3IgKGRGb3JtIG9mIGRhdGFGb3JtKSB7XHJcblx0XHRcdFx0aWYgKCFkRm9ybS5kYXRhKSB7XHJcblx0XHRcdFx0XHRjb250aW51ZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Y29uc3QgZm9ybSA9IGxpc3RGb3JtLmZpbmQoZnVuY3Rpb24gKGZvcm1UbXApIHtcclxuXHRcdFx0XHRcdHJldHVybiBmb3JtVG1wLmlkID09IGRGb3JtLmZvcm1JZDtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHRpZiAoIWZvcm0pIHtcclxuXHRcdFx0XHRcdC8vY29uc29sZS5lcnJvcignTm8gc2UgZW5jb250csOzIGVsIGZvcm11bGFyaW8gY29uIGlkICcgKyBkRm9ybS5mb3JtSWQpO1xyXG5cdFx0XHRcdFx0Y29udGludWU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGNvbnN0IGtleUZvcm1UaXRsZSA9IFRva2VuU2VydmljZS5nZXRLZXlGb3JtdWxhcmlvKGZvcm0udGl0bGUpICsgJ18nO1xyXG5cdFx0XHRcdGZvciAoY29uc3Qga2V5IGluIGRGb3JtLmRhdGEpIHtcclxuXHRcdFx0XHRcdGxpc3REYXRhW2tleV0gPSBkRm9ybS5kYXRhW2tleV07XHJcblx0XHRcdFx0XHRsaXN0RGF0YUJ5Rm9ybVtrZXlGb3JtVGl0bGUgKyBrZXldID0gZEZvcm0uZGF0YVtrZXldO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0bGlzdERhdGE6IGxpc3REYXRhLFxyXG5cdFx0XHRsaXN0RGF0YUJ5Rm9ybTogbGlzdERhdGFCeUZvcm1cclxuXHRcdH07XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJdCByZXR1cm5zIHRoZSBjb21wb25lbnRzXHJcblx0ICogQHBhcmFtIGNvbXBvbmVudHNcclxuXHQgKi9cclxuXHRzdGF0aWMgZ2V0UGFuZWxDb21wb25lbnRzKGNvbXBvbmVudHM6IGFueVtdKTogYW55W10ge1xyXG5cdFx0cmV0dXJuIEZvcm1pb1V0aWwuZ2V0Q29tcG9uZW50c0J5UGFuZWwoY29tcG9uZW50cyk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJdCByZXR1cm5zIHRoZSBjb21wb25lbnRzIGFycmF5IG9mIHRoZSBmb3JtXHJcblx0ICogQHBhcmFtIGNvbXBvbmVudHMgYXJyYXkgb2YgY29tcG9uZW50c1xyXG5cdCAqL1xyXG5cdHByaXZhdGUgc3RhdGljIGdldENvbXBvbmVudHNCeVBhbmVsKGNvbXBvbmVudHM6IGFueVtdKTogYW55W10ge1xyXG5cdFx0Ly8gaXQgY29udGFpbnMgdGhlIHJlc3VsdCBhcnJheVxyXG5cdFx0bGV0IHJlc3VsdCA9IFtdO1xyXG5cdFx0aWYgKGNvbXBvbmVudHMpIHtcclxuXHRcdFx0Ly8gaXRlcmF0ZSBvdmVyIGNvbXBvbmVudHNcclxuXHRcdFx0Zm9yIChjb25zdCBjb21wb25lbnQgb2YgY29tcG9uZW50cykge1xyXG5cdFx0XHRcdC8vIGF2b2lkIHRoZSBlZGl0Z3JpZCBjb21wb25lbnQgb3QgaWYgaXQgaGFzIGEgZGlmZmVyZW50IGJlaGF2aW9yIGl0IHNob3VsZCBoYXZlIGFuIGVsc2Ugc3RhdGVtZW50XHJcblx0XHRcdFx0aWYgKGNvbXBvbmVudFtFRm9ybWlvS2V5LlRZUEVdICE9PSBFRm9ybWlvS2V5LkVESVRHUklEKSB7XHJcblx0XHRcdFx0XHQvLyBpZiBjb21wb25lbnQgaXMgcGFuZWwgdGhlbiB0aXRsZVBhbmVsIHZhcmlhYmxlIGlzIGNoYW5nZWQsIGFuZCBpdCBpcyBnb25uYSBiZSBpbmhlcml0ZWRcclxuXHRcdFx0XHRcdGlmIChjb21wb25lbnRbRUZvcm1pb0tleS5UWVBFXSA9PT0gRUZvcm1pb0tleS5QQU5FTCkge1xyXG5cdFx0XHRcdFx0XHRyZXN1bHQucHVzaChjb21wb25lbnQpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHJlc3VsdDtcclxuXHR9XHJcbn1cclxuIl19
580
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWlvLXV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wbGktY29tbW9ucy9zcmMvbGliL3V0aWxzL2Zvcm1pby11dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFFQUFxRTtBQUNyRSxPQUFPLEtBQUssTUFBTSxNQUFNLGdDQUFnQyxDQUFDO0FBRXpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQztBQUVyQixNQUFNLE9BQU8sVUFBVTtJQUN0Qjs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLDZCQUE2QixDQUFDLFVBQVU7UUFDOUMsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksVUFBVSxFQUFFO1lBQ2YsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ2pCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQztZQUNsQixLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRTtnQkFDbkMsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEtBQUssRUFBRTtvQkFDaEQsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO3dCQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO3FCQUNwQjtvQkFDRCxNQUFNLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQztvQkFDaEYsS0FBSyxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7aUJBQzFDO2dCQUNELE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO29CQUNqQixLQUFLLEVBQUUsU0FBUyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7b0JBQ2xDLEtBQUssRUFBRSxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztpQkFDaEMsQ0FBQyxDQUFDO2FBQ0g7WUFDRCxJQUFJLEtBQUssS0FBSyxJQUFJO2dCQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDeEM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNmLENBQUM7SUFDRCxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQVU7UUFDL0IsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBRW5CLElBQUksVUFBVSxJQUFJLFNBQVMsSUFBSSxVQUFVLElBQUksSUFBSSxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsRUFBRTtZQUNwRixJQUFJLFdBQVcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRTVDLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBVSxLQUFLO2dCQUNsQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEVBQUU7b0JBQ3hDLE1BQU0sR0FBRyxLQUFLLENBQUM7b0JBQ2YsT0FBTyxLQUFLLENBQUM7aUJBQ2I7WUFDRixDQUFDLENBQUMsQ0FBQztTQUNIO1FBRUQsbURBQW1EO1FBRW5ELE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsMkJBQTJCLENBQUMsVUFBVSxFQUFFLElBQUk7UUFDbEQsOEJBQThCO1FBRTlCLElBQUksS0FBSyxHQUFHLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV6RCxxQ0FBcUM7UUFDckMsSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFO1lBQ2xCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN0QyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzNCLG9EQUFvRDtnQkFDcEQsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRTtvQkFDNUQsTUFBTSxHQUFHLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFFdEMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO3dCQUNyRCx5QkFBeUI7d0JBQ3pCLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUNuQixDQUFDLEVBQUUsQ0FBQztxQkFDSjt5QkFBTSxJQUNOLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFFBQVE7d0JBQzdCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxtQkFBbUIsQ0FBQzt3QkFDckUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGNBQWMsQ0FBQzt3QkFDaEUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFlBQVksQ0FBQzt3QkFDOUQsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGVBQWUsQ0FBQzt3QkFDakUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFVBQVUsQ0FBQzt3QkFDNUQsVUFBVSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDbkM7d0JBQ0QseUJBQXlCO3dCQUN6QixLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDbkIsQ0FBQyxFQUFFLENBQUM7cUJBQ0o7eUJBQU0sSUFDTixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxRQUFRO3dCQUM3QixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsbUJBQW1CLENBQUM7d0JBQ3JFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxjQUFjLENBQUM7d0JBQ2hFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxZQUFZLENBQUM7d0JBQzlELENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxlQUFlLENBQUM7d0JBQ2pFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxVQUFVLENBQUM7d0JBQzVELENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDcEM7cUJBQ0Q7eUJBQU0sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRTt3QkFDMUUseUJBQXlCO3dCQUN6QixLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDbkIsQ0FBQyxFQUFFLENBQUM7cUJBQ0o7eUJBQU07d0JBQ04sSUFDQyxTQUFTLENBQUMsaUJBQWlCOzRCQUMzQixTQUFTLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUMzQzs0QkFDRCx5QkFBeUI7NEJBQ3pCLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDOzRCQUNuQixDQUFDLEVBQUUsQ0FBQzt5QkFDSjtxQkFDRDtpQkFDRDtxQkFBTTtvQkFDTix5QkFBeUI7b0JBQ3pCLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUNuQixDQUFDLEVBQUUsQ0FBQztpQkFDSjthQUNEO1NBQ0Q7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsbUJBQW1CLENBQUMsVUFBVTtRQUNwQyxPQUFPLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVO1FBQ3RDLE9BQU8sVUFBVSxDQUFDLHNCQUFzQixDQUN2QyxVQUFVLEVBQ1YsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFDMUMsSUFBSSxDQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxNQUFNLENBQUMsc0JBQXNCLENBQUMsVUFBaUIsRUFBRSxVQUFvQixFQUFFLEtBQVU7UUFDeEYsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksVUFBVSxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3hDLGlCQUFpQjtZQUNqQixNQUFNLE1BQU0sR0FBVSxVQUFVLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRTNELDhCQUE4QjtZQUM5QixNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEMsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFFdkQsSUFBSSxNQUFNLEVBQUU7Z0JBQ1gscUJBQXFCO2dCQUNyQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDdkMsc0NBQXNDO29CQUN0QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3hCLHVGQUF1RjtvQkFDdkYsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDO29CQUN0QixJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsRUFBRTt3QkFDekIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7NEJBQzNDLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDL0IsZ0RBQWdEOzRCQUNoRCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztnQ0FBRSxNQUFNOzRCQUNoQyxJQUFJLFFBQVEsS0FBSyxZQUFZLEVBQUU7Z0NBQzlCLHlHQUF5RztnQ0FDekcsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSztvQ0FBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDOzZCQUNyRDtpQ0FBTTtnQ0FDTiw4REFBOEQ7Z0NBQzlELFNBQVMsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7NkJBQ2hDO3lCQUNEO3FCQUNEO2lCQUNEO2FBQ0Q7U0FDRDtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxhQUFhLENBQUMsVUFBaUI7UUFDckMsT0FBTyxVQUFVLENBQUMsd0JBQXdCLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxNQUFNLENBQUMsd0JBQXdCLENBQ3RDLFVBQWlCLEVBQ2pCLFVBQWtCLEVBQ2xCLGlCQUFzQjtRQUV0QiwrQkFBK0I7UUFDL0IsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksVUFBVSxFQUFFO1lBQ2YsMEJBQTBCO1lBQzFCLEtBQUssTUFBTSxTQUFTLElBQUksVUFBVSxFQUFFO2dCQUNuQyxrR0FBa0c7Z0JBQ2xHLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxVQUFVLENBQUMsUUFBUSxFQUFFO29CQUN2RCwwRkFBMEY7b0JBQzFGLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxVQUFVLENBQUMsS0FBSyxFQUFFO3dCQUNwRCxVQUFVLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztxQkFDekM7b0JBRUQsSUFDQyxDQUFDLE9BQU8sU0FBUyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxXQUFXO3dCQUN2RCxPQUFPLFNBQVMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssV0FBVyxDQUFDO3dCQUN0RCxDQUFDLE9BQU8sU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxXQUFXOzRCQUNoRCxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFDdkQ7d0JBQ0QsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssU0FBUyxFQUFFOzRCQUNwQyx5Q0FBeUM7NEJBQ3pDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyw2QkFBNkIsQ0FDckQsaUJBQWlCLEVBQ2pCLFNBQVMsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQ2pDLFNBQVMsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsRUFDeEMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FDeEIsQ0FBQzs0QkFDRixtQkFBbUI7NEJBQ25CLElBQUksV0FBVztnQ0FBRSxpQkFBaUIsR0FBRyxXQUFXLENBQUM7NEJBQ2pELG9HQUFvRzs0QkFDcEcsSUFBSSxhQUFhLEdBQ2hCLE9BQU8sU0FBUyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxXQUFXO2dDQUN0RCxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7Z0NBQ2xDLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDOzRCQUNsQyxrR0FBa0c7NEJBQ2xHLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyx3QkFBd0IsQ0FDMUQsYUFBYSxFQUNiLFVBQVUsRUFDVixpQkFBaUIsQ0FDakIsQ0FBQzs0QkFDRiw4REFBOEQ7NEJBQzlELElBQUksZUFBZTtnQ0FBRSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQzs0QkFDN0QsMkJBQTJCOzRCQUMzQixJQUFJLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLElBQUksaUJBQWlCLENBQUMsRUFBRTtnQ0FDbkQsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO3lCQUMvQjs2QkFBTTs0QkFDTixNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO3lCQUN2QjtxQkFDRDt5QkFBTTt3QkFDTixrQ0FBa0M7d0JBQ2xDLElBQ0MsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxVQUFVLENBQUMsTUFBTTs0QkFDaEQsU0FBUyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7NEJBQ3pCLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQzFCOzRCQUNELHlDQUF5Qzs0QkFDekMsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixDQUNuRCxpQkFBaUIsRUFDakIsU0FBUyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFDakMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUN4QyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUN4QixDQUFDOzRCQUNGLElBQUksQ0FBQyxXQUFXO2dDQUFFLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQzs0QkFDbEQsU0FBUyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsR0FBRyxXQUFXLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDOzRCQUN4RSxTQUFTLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDO2dDQUN2QyxXQUFXLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLENBQUM7NEJBQzVDLDJCQUEyQjs0QkFDM0IsU0FBUyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsR0FBRyxVQUFVLENBQUM7NEJBQy9DLDhCQUE4Qjs0QkFDOUIsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzt5QkFDdkI7cUJBQ0Q7aUJBQ0Q7cUJBQU0sSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLFVBQVUsQ0FBQyxRQUFRLEVBQUU7b0JBQzlELElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUU7d0JBQ2hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7cUJBQ3ZCO2lCQUNEO2FBQ0Q7U0FDRDtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsMEJBQTBCLENBQUMsVUFBaUI7UUFDbEQsT0FBTyxVQUFVLENBQUMscUNBQXFDLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxNQUFNLENBQUMscUNBQXFDLENBQ25ELFVBQWlCLEVBQ2pCLFVBQWtCLEVBQ2xCLGlCQUFzQjtRQUV0QiwrQkFBK0I7UUFDL0IsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksVUFBVSxFQUFFO1lBQ2YsMEJBQTBCO1lBQzFCLEtBQUssTUFBTSxTQUFTLElBQUksVUFBVSxFQUFFO2dCQUNuQyxrR0FBa0c7Z0JBRWxHLDBGQUEwRjtnQkFDMUYsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLFVBQVUsQ0FBQyxLQUFLLEVBQUU7b0JBQ3BELFVBQVUsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUN6QztnQkFFRCxJQUNDLENBQUMsT0FBTyxTQUFTLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLFdBQVc7b0JBQ3ZELE9BQU8sU0FBUyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxXQUFXLENBQUM7b0JBQ3RELENBQUMsT0FBTyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLFdBQVc7d0JBQ2hELFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUN2RDtvQkFDRCx5Q0FBeUM7b0JBQ3pDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyw2QkFBNkIsQ0FDckQsaUJBQWlCLEVBQ2pCLFNBQVMsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQ2pDLFNBQVMsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsRUFDeEMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FDeEIsQ0FBQztvQkFDRixtQkFBbUI7b0JBQ25CLElBQUksV0FBVzt3QkFBRSxpQkFBaUIsR0FBRyxXQUFXLENBQUM7b0JBQ2pELG9HQUFvRztvQkFDcEcsSUFBSSxhQUFhLEdBQ2hCLE9BQU8sU0FBUyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxXQUFXO3dCQUN0RCxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7d0JBQ2xDLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUVsQyxJQUFJLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxDQUFDLFFBQVEsRUFBRTt3QkFDdkQsU0FBUyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsR0FBRyxVQUFVLENBQUM7d0JBQy9DLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7cUJBQ3ZCO29CQUNELGtHQUFrRztvQkFDbEcsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDLHFDQUFxQyxDQUN2RSxhQUFhLEVBQ2IsVUFBVSxFQUNWLGlCQUFpQixDQUNqQixDQUFDO29CQUNGLDhEQUE4RDtvQkFDOUQsSUFBSSxlQUFlO3dCQUFFLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO29CQUM3RCwyQkFBMkI7b0JBQzNCLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxFQUFFO3dCQUNuRCxpQkFBaUIsR0FBRyxTQUFTLENBQUM7aUJBQy9CO3FCQUFNO29CQUNOLGtDQUFrQztvQkFDbEMsSUFDQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLFVBQVUsQ0FBQyxNQUFNO3dCQUNoRCxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQzt3QkFDekIsU0FBUyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFDMUI7d0JBQ0QseUNBQXlDO3dCQUN6QyxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsNkJBQTZCLENBQ25ELGlCQUFpQixFQUNqQixTQUFTLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUNqQyxTQUFTLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLEVBQ3hDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQ3hCLENBQUM7d0JBQ0YsSUFBSSxDQUFDLFdBQVc7NEJBQUUsV0FBVyxHQUFHLGlCQUFpQixDQUFDO3dCQUNsRCxTQUFTLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7d0JBQ3hFLFNBQVMsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUM7NEJBQ3ZDLFdBQVcsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FBQzt3QkFDNUMsMkJBQTJCO3dCQUMzQixTQUFTLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxHQUFHLFVBQVUsQ0FBQzt3QkFDL0MsOEJBQThCO3dCQUM5QixNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO3FCQUN2QjtpQkFDRDthQUNEO1NBQ0Q7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNmLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLE1BQU0sQ0FBQyw2QkFBNkIsQ0FDM0MsaUJBQWlCLEVBQ2pCLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsUUFBUTtRQUVSLHVEQUF1RDtRQUN2RCxJQUNDLENBQUMsaUJBQWlCO1lBQ2xCLGlCQUFpQjtZQUNqQixDQUFDLFdBQVcsSUFBSSxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLFdBQVcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDM0UsQ0FBQyxXQUFXLElBQUksV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUM1QztZQUNELE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQztTQUN4RjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxVQUFpQjtRQUM1QyxPQUFPLFVBQVUsQ0FBQywrQkFBK0IsQ0FBQyxVQUFVLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLE1BQU0sQ0FBQywrQkFBK0IsQ0FDN0MsVUFBaUIsRUFDakIsVUFBa0IsRUFDbEIsaUJBQXNCO1FBRXRCLCtCQUErQjtRQUMvQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxVQUFVLEVBQUU7WUFDZiwwQkFBMEI7WUFDMUIsS0FBSyxNQUFNLFNBQVMsSUFBSSxVQUFVLEVBQUU7Z0JBQ25DLDBGQUEwRjtnQkFDMUYsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLFVBQVUsQ0FBQyxLQUFLLEVBQUU7b0JBQ3BELFVBQVUsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUN6QztnQkFFRCxJQUNDLENBQUMsT0FBTyxTQUFTLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLFdBQVc7b0JBQ3ZELE9BQU8sU0FBUyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxXQUFXLENBQUM7b0JBQ3RELENBQUMsT0FBTyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLFdBQVc7d0JBQ2hELFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUN2RDtvQkFDRCx5Q0FBeUM7b0JBQ3pDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyw2QkFBNkIsQ0FDckQsaUJBQWlCLEVBQ2pCLFNBQVMsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQ2pDLFNBQVMsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsRUFDeEMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FDeEIsQ0FBQztvQkFDRixtQkFBbUI7b0JBQ25CLElBQUksV0FBVzt3QkFBRSxpQkFBaUIsR0FBRyxXQUFXLENBQUM7b0JBQ2pELG9HQUFvRztvQkFDcEcsSUFBSSxhQUFhLEdBQ2hCLE9BQU8sU0FBUyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxXQUFXO3dCQUN0RCxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7d0JBQ2xDLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNsQyxJQUFJLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLFFBQVEsRUFBRTt3QkFDdEQsMkJBQTJCO3dCQUMzQixTQUFTLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxHQUFHLFVBQVUsQ0FBQzt3QkFDL0MsOEJBQThCO3dCQUM5QixNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO3FCQUN2Qjt5QkFBTTt3QkFDTixrR0FBa0c7d0JBQ2xHLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQywrQkFBK0IsQ0FDakUsYUFBYSxFQUNiLFVBQVUsRUFDVixpQkFBaUIsQ0FDakIsQ0FBQzt3QkFDRiw4REFBOEQ7d0JBQzlELElBQUksZUFBZTs0QkFBRSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQzt3QkFDN0QsMkJBQTJCO3dCQUMzQixJQUFJLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLElBQUksaUJBQWlCLENBQUMsRUFBRTs0QkFDbkQsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO3FCQUMvQjtpQkFDRDtxQkFBTTtpQkFDTjthQUNEO1NBQ0Q7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNmLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLDBCQUEwQixDQUFDLFVBQWlCLEVBQUUsWUFBb0I7UUFDeEUsT0FBTyxVQUFVLENBQUMscUNBQXFDLENBQ3RELFVBQVUsRUFDVixFQUFFLEVBQ0YsSUFBSSxFQUNKLFlBQVksRUFDWixLQUFLLENBQ0wsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLE1BQU0sQ0FBQyxxQ0FBcUMsQ0FDbkQsVUFBaUIsRUFDakIsVUFBa0IsRUFDbEIsaUJBQXNCLEVBQ3RCLFlBQW9CLEVBQ3BCLGFBQXNCO1FBRXRCLCtCQUErQjtRQUMvQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxVQUFVLEVBQUU7WUFDZiwwQkFBMEI7WUFDMUIsS0FBSyxNQUFNLFNBQVMsSUFBSSxVQUFVLEVBQUU7Z0JBQ25DLGtHQUFrRztnQkFFbEcsMEZBQTBGO2dCQUMxRixJQUFJLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxDQUFDLEtBQUssRUFBRTtvQkFDcEQsVUFBVSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ3pDO2dCQUVELElBQ0MsQ0FBQyxPQUFPLFNBQVMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEtBQUssV0FBVztvQkFDdkQsT0FBTyxTQUFTLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFdBQVcsQ0FBQztvQkFDdEQsQ0FBQyxPQUFPLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksV0FBVzt3QkFDaEQsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxVQUFVLENBQUMsWUFBWSxDQUFDLEVBQ3ZEO29CQUNELHlDQUF5QztvQkFDekMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixDQUNyRCxpQkFBaUIsRUFDakIsU0FBUyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFDakMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUN4QyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUN4QixDQUFDO29CQUNGLG1CQUFtQjtvQkFDbkIsSUFBSSxXQUFXO3dCQUFFLGlCQUFpQixHQUFHLFdBQVcsQ0FBQztvQkFDakQsb0dBQW9HO29CQUNwRyxJQUFJLGFBQWEsR0FDaEIsT0FBTyxTQUFTLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLFdBQVc7d0JBQ3RELENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQzt3QkFDbEMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBRWxDLElBQ0MsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxVQUFVLENBQUMsUUFBUTt3QkFDbEQsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLFlBQVksRUFDL0I7d0JBQ0QsYUFBYSxHQUFHLElBQUksQ0FBQzt3QkFDckIsSUFDQyxDQUFDLE9BQU8sU0FBUyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxXQUFXOzRCQUN2RCxPQUFPLFNBQVMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssV0FBVyxDQUFDOzRCQUN0RCxDQUFDLE9BQU8sU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxXQUFXO2dDQUNoRCxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFDdkQ7NEJBQ0QseUNBQXlDOzRCQUN6QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsNkJBQTZCLENBQ3JELGlCQUFpQixFQUNqQixTQUFTLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUNqQyxTQUFTLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLEVBQ3hDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQ3hCLENBQUM7NEJBQ0YsbUJBQW1COzRCQUNuQixJQUFJLFdBQVc7Z0NBQUUsaUJBQWlCLEdBQUcsV0FBVyxDQUFDOzRCQUNqRCxvR0FBb0c7NEJBQ3BHLElBQUksYUFBYSxHQUNoQixPQUFPLFNBQVMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEtBQUssV0FBVztnQ0FDdEQsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO2dDQUNsQyxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQzs0QkFFbEMsa0dBQWtHOzRCQUNsRyxNQUFNLGVBQWUsR0FDcEIsVUFBVSxDQUFDLHFDQUFxQyxDQUMvQyxhQUFhLEVBQ2IsVUFBVSxFQUNWLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osYUFBYSxDQUNiLENBQUM7NEJBQ0gsOERBQThEOzRCQUM5RCxJQUFJLGVBQWU7Z0NBQUUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7NEJBQzdELDJCQUEyQjs0QkFDM0IsSUFBSSxTQUFTLElBQUksaUJBQWlCLEVBQUU7Z0NBQ25DLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxFQUFFO29DQUNuRCxpQkFBaUIsR0FBRyxTQUFTLENBQUM7NkJBQy9CO3lCQUNEOzZCQUFNOzRCQUNOLGtDQUFrQzs0QkFDbEMsSUFDQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLFVBQVUsQ0FBQyxNQUFNO2dDQUNoRCxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztnQ0FDekIsU0FBUyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7Z0NBQzNCLGFBQWEsRUFDWjtnQ0FDRCx5Q0FBeUM7Z0NBQ3pDLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyw2QkFBNkIsQ0FDbkQsaUJBQWlCLEVBQ2pCLFNBQVMsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQ2pDLFNBQVMsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsRUFDeEMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FDeEIsQ0FBQztnQ0FDRixJQUFJLENBQUMsV0FBVztvQ0FBRSxXQUFXLEdBQUcsaUJBQWlCLENBQUM7Z0NBQ2xELFNBQVMsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDO29DQUNoQyxXQUFXLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dDQUNyQyxTQUFTLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDO29DQUN2QyxXQUFXLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLENBQUM7Z0NBQzVDLDJCQUEyQjtnQ0FDM0IsU0FBUyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsR0FBRyxVQUFVLENBQUM7Z0NBQy9DLDhCQUE4QjtnQ0FDOUIsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzs2QkFDdkI7eUJBQ0Q7cUJBQ0Q7b0JBQ0Qsa0dBQWtHO29CQUNsRyxNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUMscUNBQXFDLENBQ3ZFLGFBQWEsRUFDYixVQUFVLEVBQ1YsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixhQUFhLENBQ2IsQ0FBQztvQkFDRiw4REFBOEQ7b0JBQzlELElBQUksZUFBZTt3QkFBRSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztvQkFDN0QsMkJBQTJCO29CQUMzQixJQUFJLFNBQVMsSUFBSSxpQkFBaUIsRUFBRTt3QkFDbkMsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFJLGlCQUFpQixDQUFDLEVBQUU7NEJBQ25ELGlCQUFpQixHQUFHLFNBQVMsQ0FBQztxQkFDL0I7aUJBQ0Q7cUJBQU07b0JBQ04sa0NBQWtDO29CQUNsQyxJQUNDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxDQUFDLE1BQU07d0JBQ2hELFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO3dCQUN6QixTQUFTLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQzt3QkFDM0IsYUFBYSxFQUNaO3dCQUNELHlDQUF5Qzt3QkFDekMsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixDQUNuRCxpQkFBaUIsRUFDakIsU0FBUyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFDakMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUN4QyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUN4QixDQUFDO3dCQUNGLElBQUksQ0FBQyxXQUFXOzRCQUFFLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQzt3QkFDbEQsU0FBUyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsR0FBRyxXQUFXLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO3dCQUN4RSxTQUFTLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDOzRCQUN2QyxXQUFXLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLENBQUM7d0JBQzVDLDJCQUEyQjt3QkFDM0IsU0FBUyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsR0FBRyxVQUFVLENBQUM7d0JBQy9DLDhCQUE4Qjt3QkFDOUIsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztxQkFDdkI7aUJBQ0Q7YUFDRDtTQUNEO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDZixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxRQUFhLEVBQUUsUUFBZTtRQUNqRSxJQUFJLFFBQVEsR0FBUSxFQUFFLENBQUM7UUFDdkIsSUFBSSxjQUFjLEdBQVEsRUFBRSxDQUFDO1FBQzdCLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3BDLFFBQVEsR0FBRyxFQUFFLENBQUM7WUFDZCxjQUFjLEdBQUcsRUFBRSxDQUFDO1lBQ3BCLElBQUksS0FBVSxDQUFDO1lBQ2YsS0FBSyxLQUFLLElBQUksUUFBUSxFQUFFO2dCQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRTtvQkFDaEIsU0FBUztpQkFDVDtnQkFDRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsT0FBTztvQkFDM0MsT0FBTyxPQUFPLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUM7Z0JBQ25DLENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxJQUFJLEVBQUU7b0JBQ1YsdUVBQXVFO29CQUN2RSxTQUFTO2lCQUNUO2dCQUNELE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDO2dCQUNyRSxLQUFLLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUU7b0JBQzdCLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNoQyxjQUFjLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ3JEO2FBQ0Q7U0FDRDtRQUNELE9BQU87WUFDTixRQUFRLEVBQUUsUUFBUTtZQUNsQixjQUFjLEVBQUUsY0FBYztTQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxVQUFpQjtRQUMxQyxPQUFPLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssTUFBTSxDQUFDLG9CQUFvQixDQUFDLFVBQWlCO1FBQ3BELCtCQUErQjtRQUMvQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxVQUFVLEVBQUU7WUFDZiwwQkFBMEI7WUFDMUIsS0FBSyxNQUFNLFNBQVMsSUFBSSxVQUFVLEVBQUU7Z0JBQ25DLGtHQUFrRztnQkFDbEcsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLFVBQVUsQ0FBQyxRQUFRLEVBQUU7b0JBQ3ZELDBGQUEwRjtvQkFDMUYsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLFVBQVUsQ0FBQyxLQUFLLEVBQUU7d0JBQ3BELE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7cUJBQ3ZCO2lCQUNEO2FBQ0Q7U0FDRDtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaW1wb3J0ICogYXMgdXRpbHNfIGZyb20gJ2Zvcm1pb2pzLXByb3llY3Rvc2NvbGZ1dHVyby91dGlscy91dGlscyc7XHJcbmltcG9ydCAqIGFzIHV0aWxzXyBmcm9tICdmb3JtaW9qcy1jb2xmdXR1cm8vdXRpbHMvdXRpbHMnO1xyXG5pbXBvcnQgeyBJZlN0bXQgfSBmcm9tICdAYW5ndWxhci9jb21waWxlcic7XHJcbmltcG9ydCB7IFRva2VuU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Rva2VuLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFRm9ybWlvS2V5IH0gZnJvbSAnbmctcGxpLXV0aWwnO1xyXG5jb25zdCB1dGlscyA9IHV0aWxzXztcclxuXHJcbmV4cG9ydCBjbGFzcyBGb3JtaW9VdGlsIHtcclxuXHQvKipcclxuXHQgKiBJdCByZXR1cm5zIHRoZSBjb21wb25lbnRzIGZvcm1hdGVkIGJ5IHBhbmVsXHJcblx0ICogQHBhcmFtIGNvbXBvbmVudHNcclxuXHQgKiBAcmV0dXJuIHRoZSBvYmplY3QgaXMgW3twYW5lbDogLCBpdGVtczogW3sgdmFsdWU6ICwgbGFiZWw6IH1dfV1cclxuXHQgKi9cclxuXHRzdGF0aWMgZ2V0Rm9ybWF0dGVkQ29tcG9uZW50c0J5UGFuZWwoY29tcG9uZW50cyk6IGFueVtdIHtcclxuXHRcdGxldCByZXN1bHQgPSBbXTtcclxuXHRcdGlmIChjb21wb25lbnRzKSB7XHJcblx0XHRcdGxldCBncm91cCA9IG51bGw7XHJcblx0XHRcdGxldCBvYmplY3QgPSBudWxsO1xyXG5cdFx0XHRmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiBjb21wb25lbnRzKSB7XHJcblx0XHRcdFx0aWYgKGNvbXBvbmVudFtFRm9ybWlvS2V5LlRJVExFX1BBTkVMXSAhPT0gZ3JvdXApIHtcclxuXHRcdFx0XHRcdGlmIChncm91cCAhPT0gbnVsbCkge1xyXG5cdFx0XHRcdFx0XHRyZXN1bHQucHVzaChvYmplY3QpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0b2JqZWN0ID0geyBsYWJlbDogY29tcG9uZW50W0VGb3JtaW9LZXkuVElUTEVfUEFORUxdLCBpdGVtczogW10sIHRvZ2dsZTogZmFsc2UgfTtcclxuXHRcdFx0XHRcdGdyb3VwID0gY29tcG9uZW50W0VGb3JtaW9LZXkuVElUTEVfUEFORUxdO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRvYmplY3QuaXRlbXMucHVzaCh7XHJcblx0XHRcdFx0XHRsYWJlbDogY29tcG9uZW50W0VGb3JtaW9LZXkuTEFCRUxdLFxyXG5cdFx0XHRcdFx0dmFsdWU6IGNvbXBvbmVudFtFRm9ybWlvS2V5LktFWV1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoZ3JvdXAgIT09IG51bGwpIHJlc3VsdC5wdXNoKG9iamVjdCk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcmVzdWx0O1xyXG5cdH1cclxuXHRzdGF0aWMgZ2V0U2VsZWN0Qm94ZXMoc2VsZWN0Qm94ZSkge1xyXG5cdFx0dmFyIGlzdHJ1ZSA9IGZhbHNlO1xyXG5cclxuXHRcdGlmIChzZWxlY3RCb3hlICE9IHVuZGVmaW5lZCAmJiBzZWxlY3RCb3hlICE9IG51bGwgJiYgdHlwZW9mIHNlbGVjdEJveGUgPT09ICdvYmplY3QnKSB7XHJcblx0XHRcdGxldCBkYXRhSGFzVHJ1ZSA9IE9iamVjdC52YWx1ZXMoc2VsZWN0Qm94ZSk7XHJcblxyXG5cdFx0XHRkYXRhSGFzVHJ1ZS5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSkge1xyXG5cdFx0XHRcdGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyAmJiB2YWx1ZSkge1xyXG5cdFx0XHRcdFx0aXN0cnVlID0gdmFsdWU7XHJcblx0XHRcdFx0XHRyZXR1cm4gdmFsdWU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBFeHBlY3RlZCBvdXRwdXQ6IEFycmF5IFtcInNvbWVzdHJpbmdcIiwgNDIsIGZhbHNlXVxyXG5cclxuXHRcdHJldHVybiBpc3RydWU7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJdCByZXR1cm5zIHRoZSBjb21wb25lbnRzIGFyZSByZXF1aXJlZCBhY2NvcmRpbmcgd2l0aCBkYXRhXHJcblx0ICogQHBhcmFtIGNvbXBvbmVudHMgYXJyYXkgb2YgY29tcG9uZW50c1xyXG5cdCAqIEBwYXJhbSBkYXRhXHJcblx0ICovXHJcblx0c3RhdGljIGdldFJlcXVpcmVkQ29tcG9uZW50c0J5RGF0YShjb21wb25lbnRzLCBkYXRhKSB7XHJcblx0XHQvLyBnZXQgdGhlIHJlcXVpcmVkIGNvbXBvbmVudHNcclxuXHJcblx0XHRsZXQgYXJyYXkgPSBGb3JtaW9VdGlsLmdldFJlcXVpcmVkQ29tcG9uZW50cyhjb21wb25lbnRzKTtcclxuXHJcblx0XHQvLyBpZiBub3QgZGF0YSB0aGVuIHJldHVybiBjb21wb25lbnRzXHJcblx0XHRpZiAoZGF0YSAmJiBhcnJheSkge1xyXG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0Y29uc3QgY29tcG9uZW50ID0gYXJyYXlbaV07XHJcblx0XHRcdFx0Ly8gdXNlIGZvcm1pbyB0byBjaGVjayBjb25kaXRpb24gYWNjb3JkaW5nIHdpdGggZGF0YVxyXG5cdFx0XHRcdGlmICh1dGlscy5jaGVja0NvbmRpdGlvbihjb21wb25lbnQsIG51bGwsIGRhdGEsIG51bGwsIG51bGwpKSB7XHJcblx0XHRcdFx0XHRjb25zdCBrZXkgPSBjb21wb25lbnRbRUZvcm1pb0tleS5LRVldO1xyXG5cclxuXHRcdFx0XHRcdGlmIChBcnJheS5pc0FycmF5KGRhdGFba2V5XSkgJiYgZGF0YVtrZXldLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdFx0Ly8gcmVtb3ZlIGl0ZW0gZnJvbSBhcnJheVxyXG5cdFx0XHRcdFx0XHRhcnJheS5zcGxpY2UoaSwgMSk7XHJcblx0XHRcdFx0XHRcdGktLTtcclxuXHRcdFx0XHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdFx0XHRcdHR5cGVvZiBkYXRhW2tleV0gPT09ICdvYmplY3QnICYmXHJcblx0XHRcdFx0XHRcdCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZGF0YVtrZXldLCAnZm9ybWF0dGVkX2FkZHJlc3MnKSAmJlxyXG5cdFx0XHRcdFx0XHQhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGFba2V5XSwgJ2NhbGxpbmdDb2RlcycpICYmXHJcblx0XHRcdFx0XHRcdCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZGF0YVtrZXldLCAnbmF0aXZlTmFtZScpICYmXHJcblx0XHRcdFx0XHRcdCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZGF0YVtrZXldLCAnb3JpZ2luYWxfbmFtZScpICYmXHJcblx0XHRcdFx0XHRcdCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZGF0YVtrZXldLCAnZnVsbE5hbWUnKSAmJlxyXG5cdFx0XHRcdFx0XHRGb3JtaW9VdGlsLmdldFNlbGVjdEJveGVzKGRhdGFba2V5XSlcclxuXHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHQvLyByZW1vdmUgaXRlbSBmcm9tIGFycmF5XHJcblx0XHRcdFx0XHRcdGFycmF5LnNwbGljZShpLCAxKTtcclxuXHRcdFx0XHRcdFx0aS0tO1xyXG5cdFx0XHRcdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0XHRcdFx0dHlwZW9mIGRhdGFba2V5XSA9PT0gJ29iamVjdCcgJiZcclxuXHRcdFx0XHRcdFx0IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkYXRhW2tleV0sICdmb3JtYXR0ZWRfYWRkcmVzcycpICYmXHJcblx0XHRcdFx0XHRcdCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZGF0YVtrZXldLCAnY2FsbGluZ0NvZGVzJykgJiZcclxuXHRcdFx0XHRcdFx0IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkYXRhW2tleV0sICduYXRpdmVOYW1lJykgJiZcclxuXHRcdFx0XHRcdFx0IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkYXRhW2tleV0sICdvcmlnaW5hbF9uYW1lJykgJiZcclxuXHRcdFx0XHRcdFx0IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkYXRhW2tleV0sICdmdWxsTmFtZScpICYmXHJcblx0XHRcdFx0XHRcdCFGb3JtaW9VdGlsLmdldFNlbGVjdEJveGVzKGRhdGFba2V5XSlcclxuXHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0fSBlbHNlIGlmIChkYXRhW2tleV0gIT0gdW5kZWZpbmVkICYmIGRhdGFba2V5XSAhPSBudWxsICYmIGRhdGFba2V5XSAhPSAnJykge1xyXG5cdFx0XHRcdFx0XHQvLyByZW1vdmUgaXRlbSBmcm9tIGFycmF5XHJcblx0XHRcdFx0XHRcdGFycmF5LnNwbGljZShpLCAxKTtcclxuXHRcdFx0XHRcdFx0aS0tO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHRcdGNvbXBvbmVudC5jdXN0b21Db25kaXRpb25hbCAmJlxyXG5cdFx0XHRcdFx0XHRcdGNvbXBvbmVudC5jdXN0b21Db25kaXRpb25hbC5pbmNsdWRlcygnc2hvdycpXHJcblx0XHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHRcdC8vIHJlbW92ZSBpdGVtIGZyb20gYXJyYXlcclxuXHRcdFx0XHRcdFx0XHRhcnJheS5zcGxpY2UoaSwgMSk7XHJcblx0XHRcdFx0XHRcdFx0aS0tO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdC8vIHJlbW92ZSBpdGVtIGZyb20gYXJyYXlcclxuXHRcdFx0XHRcdGFycmF5LnNwbGljZShpLCAxKTtcclxuXHRcdFx0XHRcdGktLTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiBhcnJheTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEl0IHJldHVybnMgdGhlIGNvbXBvbmVudHMgdGhhdCBhcmUgcmVxdWlyZWRcclxuXHQgKiBAcGFyYW0gY29tcG9uZW50cyBhcnJheSBvZiBjb21wb25lbnRzXHJcblx0ICovXHJcblx0c3RhdGljIGdldFVuaXF1ZUNvbXBvbmVudHMoY29tcG9uZW50cykge1xyXG5cdFx0cmV0dXJuIEZvcm1pb1V0aWwuZ2V0Q29tcG9uZW50c0J5RmVhdHVyZShjb21wb25lbnRzLCBbRUZvcm1pb0tleS5VTklRVUVdLCB0cnVlKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEl0IHJldHVybnMgdGhlIGNvbXBvbmVudHMgdGhhdCBhcmUgcmVxdWlyZWRcclxuXHQgKiBAcGFyYW0gY29tcG9uZW50cyBhcnJheSBvZiBjb21wb25lbnRzXHJcblx0ICovXHJcblx0c3RhdGljIGdldFJlcXVpcmVkQ29tcG9uZW50cyhjb21wb25lbnRzKSB7XHJcblx0XHRyZXR1cm4gRm9ybWlvVXRpbC5nZXRDb21wb25lbnRzQnlGZWF0dXJlKFxyXG5cdFx0XHRjb21wb25lbnRzLFxyXG5cdFx0XHRbRUZvcm1pb0tleS5WQUxJREFURSwgRUZvcm1pb0tleS5SRVFVSVJFRF0sXHJcblx0XHRcdHRydWVcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJdCByZXR1cm5zIHRoZSBjb21wb25lbnRzIHRoYXQgaGF2ZSBhIHNwZWNpZmljIGZlYXR1cmUgZGVmaW5lZCBieSBwcm9wZXJ0aWVzIGFuZCB2YWx1ZVxyXG5cdCAqIEBwYXJhbSBjb21wb25lbnRzIGFycmF5IG9mIGNvbXBvbmVudHNcclxuXHQgKiBAcGFyYW0gcHJvcGVydGllcyBwYXRoIG9mIHByb3BlcnRpZXMgZXhhbXBsZSBbdmFsaWRhdGUsIHJlcXVpcmVkXSBvciBbdW5pcXVlXVxyXG5cdCAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgdGhhdCBzaG91bGQgaGF2ZSB0aGUgcHJvcGVydHlcclxuXHQgKi9cclxuXHRwcml2YXRlIHN0YXRpYyBnZXRDb21wb25lbnRzQnlGZWF0dXJlKGNvbXBvbmVudHM6IGFueVtdLCBwcm9wZXJ0aWVzOiBzdHJpbmdbXSwgdmFsdWU6IGFueSkge1xyXG5cdFx0bGV0IHJlc3VsdCA9IFtdO1xyXG5cdFx0aWYgKHByb3BlcnRpZXMgJiYgcHJvcGVydGllcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdC8vIGdldCBjb21wb25lbnRzXHJcblx0XHRcdGNvbnN0IGZpZWxkczogYW55W10gPSBGb3JtaW9VdGlsLmdldENvbXBvbmVudHMoY29tcG9uZW50cyk7XHJcblxyXG5cdFx0XHQvLyBnZXQgZmlyc3QgYW5kIGxhc3QgcHJvcGVydHlcclxuXHRcdFx0Y29uc3QgZmlyc3RQcm9wZXJ0eSA9IHByb3BlcnRpZXNbMF07XHJcblx0XHRcdGNvbnN0IGxhc3RQcm9wZXJ0eSA9IHByb3BlcnRpZXNbcHJvcGVydGllcy5sZW5ndGggLSAxXTtcclxuXHJcblx0XHRcdGlmIChmaWVsZHMpIHtcclxuXHRcdFx0XHQvLyBpdGVyYXRlIHRoZSBmaWVsZHNcclxuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGZpZWxkcy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0Ly8gaXQgY29udGFpbnMgdGhlIGVudGlyZSBvYmplY3QgZmllbGRcclxuXHRcdFx0XHRcdGNvbnN0IGZpZWxkID0gZmllbGRzW2ldO1xyXG5cdFx0XHRcdFx0Ly8gaXQgY29udGFpbnMgdGhlIGN1cnJlbnQgY29tcG9uZW50IGFuZCBpdCBpcyBnb25uYSBiZSB0aGUgY29tcG9uZW50IG9mIGV2ZXJ5IHByb3BlcnR5XHJcblx0XHRcdFx0XHRsZXQgY29tcG9uZW50ID0gZmllbGQ7XHJcblx0XHRcdFx0XHRpZiAoZmllbGRbZmlyc3RQcm9wZXJ0eV0pIHtcclxuXHRcdFx0XHRcdFx0Zm9yIChsZXQgaiA9IDA7IGogPCBwcm9wZXJ0aWVzLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0XHRcdFx0Y29uc3QgcHJvcGVydHkgPSBwcm9wZXJ0aWVzW2pdO1xyXG5cdFx0XHRcdFx0XHRcdC8vIGlmIGNvbXBvbmVudC5wcm9wZXJ0eSBkb2VzbnQgZXhpc3QgdGhlbiBicmVha1xyXG5cdFx0XHRcdFx0XHRcdGlmICghY29tcG9uZW50W3Byb3BlcnR5XSkgYnJlYWs7XHJcblx0XHRcdFx0XHRcdFx0aWYgKHByb3BlcnR5ID09PSBsYXN0UHJvcGVydHkpIHtcclxuXHRcdFx0XHRcdFx0XHRcdC8vIGl0IGlzIHRoZSBsYXN0IHByb3BlcnR5IHNvIGlmIHRoZSB2YWx1ZSBpcyBlcXVhbHMgdG8gY29tcG9uZW50Lmxhc3Rwcm9wZXJ0eSB0aGVuIGl0IGlzIGFkZGVkIHRvIHJlc3VsdFxyXG5cdFx0XHRcdFx0XHRcdFx0aWYgKGNvbXBvbmVudFtwcm9wZXJ0eV0gPT0gdmFsdWUpIHJlc3VsdC5wdXNoKGZpZWxkKTtcclxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0Ly8gb3RoZXJ3aXNlIGNvbXBvbmVudCB3aWxsIGJlIGVxdWFsIHRvIHRoZSBjb21wb25lbnQucHJvcGVydHlcclxuXHRcdFx0XHRcdFx0XHRcdGNvbXBvbmVudCA9IGNvbXBvbmVudFtwcm9wZXJ0eV07XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcmVzdWx0O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSXQgcmV0dXJucyB0aGUgY29tcG9uZW50c1xyXG5cdCAqIEBwYXJhbSBjb21wb25lbnRzXHJcblx0ICovXHJcblx0c3RhdGljIGdldENvbXBvbmVudHMoY29tcG9uZW50czogYW55W10pOiBhbnlbXSB7XHJcblx0XHRyZXR1cm4gRm9ybWlvVXRpbC5nZXRDb21wb25lbnRzQnlSZWN1cnNpb24oY29tcG9uZW50cywgJycsIG51bGwpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSXQgcmV0dXJucyB0aGUgY29tcG9uZW50cyBhcnJheSBvZiB0aGUgZm9ybSBieSByZWN1cnNpb25cclxuXHQgKiBAcGFyYW0gY29tcG9uZW50cyBhcnJheSBvZiBjb21wb25lbnRzXHJcblx0ICogQHBhcmFtIHRpdGxlUGFuZWwgbmFtZSBvZiBwYXJlbnQgcGFuZWwsIHNvIGNoaWxkcmVuIGNvbXBvbmVudHMgd2lsbCBpbmhlcml0IHRoZSBwYW5lbE5hbWVcclxuXHQgKiBAcGFyYW0gY29uZGl0aW9uYWxPYmplY3QgY29uZGl0aW9uYWwgb2JqZWN0IGl0IHdpbGwgYmUgaW5oZXJpdGVkIGZyb20gcGFuZWwge2NvbmRpdGlvbmFsOiB7IGVxOiAsIHZhbHVlOiAsIHdoZW46ICwganNvbjogfSwgY3VzdG9tQ29uZGl0aW9uYWw6IH1cclxuXHQgKi9cclxuXHRwcml2YXRlIHN0YXRpYyBnZXRDb21wb25lbnRzQnlSZWN1cnNpb24oXHJcblx0XHRjb21wb25lbnRzOiBhbnlbXSxcclxuXHRcdHRpdGxlUGFuZWw6IHN0cmluZyxcclxuXHRcdGNvbmRpdGlvbmFsUGFyZW50OiBhbnlcclxuXHQpOiBhbnlbXSB7XHJcblx0XHQvLyBpdCBjb250YWlucyB0aGUgcmVzdWx0IGFycmF5XHJcblx0XHRsZXQgcmVzdWx0ID0gW107XHJcblx0XHRpZiAoY29tcG9uZW50cykge1xyXG5cdFx0XHQvLyBpdGVyYXRlIG92ZXIgY29tcG9uZW50c1xyXG5cdFx0XHRmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiBjb21wb25lbnRzKSB7XHJcblx0XHRcdFx0Ly8gYXZvaWQgdGhlIGVkaXRncmlkIGNvbXBvbmVudCBvdCBpZiBpdCBoYXMgYSBkaWZmZXJlbnQgYmVoYXZpb3IgaXQgc2hvdWxkIGhhdmUgYW4gZWxzZSBzdGF0ZW1lbnRcclxuXHRcdFx0XHRpZiAoY29tcG9uZW50W0VGb3JtaW9LZXkuVFlQRV0gIT09IEVGb3JtaW9LZXkuRURJVEdSSUQpIHtcclxuXHRcdFx0XHRcdC8vIGlmIGNvbXBvbmVudCBpcyBwYW5lbCB0aGVuIHRpdGxlUGFuZWwgdmFyaWFibGUgaXMgY2hhbmdlZCwgYW5kIGl0IGlzIGdvbm5hIGJlIGluaGVyaXRlZFxyXG5cdFx0XHRcdFx0aWYgKGNvbXBvbmVudFtFRm9ybWlvS2V5LlRZUEVdID09PSBFRm9ybWlvS2V5LlBBTkVMKSB7XHJcblx0XHRcdFx0XHRcdHRpdGxlUGFuZWwgPSBjb21wb25lbnRbRUZvcm1pb0tleS5USVRMRV07XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHQodHlwZW9mIGNvbXBvbmVudFtFRm9ybWlvS2V5LkNPTVBPTkVOVFNdICE9PSAndW5kZWZpbmVkJyB8fFxyXG5cdFx0XHRcdFx0XHRcdHR5cGVvZiBjb21wb25lbnRbRUZvcm1pb0tleS5DT0xVTU5TXSAhPT0gJ3VuZGVmaW5lZCcpICYmXHJcblx0XHRcdFx0XHRcdCh0eXBlb2YgY29tcG9uZW50W0VGb3JtaW9LZXkuVFlQRV0gPT0gJ3VuZGVmaW5lZCcgfHxcclxuXHRcdFx0XHRcdFx0XHRjb21wb25lbnRbRUZvcm1pb0tleS5UWVBFXSAhPT0gRUZvcm1pb0tleS5UWVBFX0FERFJFU1MpXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0aWYgKGNvbXBvbmVudFsndHlwZSddICE9PSAnYWRkcmVzcycpIHtcclxuXHRcdFx0XHRcdFx0XHQvLyByZXNvbHZlIGNvbmRpdGlvbmFsIHBhcmVudCBjb25kaXRpb25hbFxyXG5cdFx0XHRcdFx0XHRcdGNvbnN0IGNvbmRpdGlvbmFsID0gdGhpcy5yZXNvbHZlSW5oZXJpdGFuY2VDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsUGFyZW50LFxyXG5cdFx0XHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuQ09ORElUSU9OQUxdLFxyXG5cdFx0XHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuQ1VTVE9NX0NPTkRJVElPTkFMXSxcclxuXHRcdFx0XHRcdFx0XHRcdGNvbXBvbmVudFtFRm9ybWlvS2V5LklEXVxyXG5cdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdFx0Ly8gY2hhbmdlIGNvbmRpdGlvblxyXG5cdFx0XHRcdFx0XHRcdGlmIChjb25kaXRpb25hbCkgY29uZGl0aW9uYWxQYXJlbnQgPSBjb25kaXRpb25hbDtcclxuXHRcdFx0XHRcdFx0XHQvLyBpdCBjb250YWlucyB0aGUgc3ViY29tcG9uZW50cyBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIGNvbXBvbmVudCBpZiBpdCBoYXMgY29tcG9uZW50cyBvciBjb2x1bW5zXHJcblx0XHRcdFx0XHRcdFx0bGV0IHN1YkNvbXBvbmVudHMgPVxyXG5cdFx0XHRcdFx0XHRcdFx0dHlwZW9mIGNvbXBvbmVudFtFRm9ybWlvS2V5LkNPTVBPTkVOVFNdICE9PSAndW5kZWZpbmVkJ1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQ/IGNvbXBvbmVudFtFRm9ybWlvS2V5LkNPTVBPTkVOVFNdXHJcblx0XHRcdFx0XHRcdFx0XHRcdDogY29tcG9uZW50W0VGb3JtaW9LZXkuQ09MVU1OU107XHJcblx0XHRcdFx0XHRcdFx0Ly8gaWYgY29tcG9uZW50IGhhcyBzdWJDb21wb25lbnRzLCB0aGVuIGV4ZWN1dGUgdGhlIHJlY3Vyc2lvbiBmdW5jdGlvbiB0byBnZXQgdGhlIHJlY3Vyc2lvbm5SZXN1bHRcclxuXHRcdFx0XHRcdFx0XHRjb25zdCByZWN1cnNpb25SZXN1bHQgPSBGb3JtaW9VdGlsLmdldENvbXBvbmVudHNCeVJlY3Vyc2lvbihcclxuXHRcdFx0XHRcdFx0XHRcdHN1YkNvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRcdFx0XHR0aXRsZVBhbmVsLFxyXG5cdFx0XHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxQYXJlbnRcclxuXHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdC8vIGlmIHJlY3Vyc2lvbiByZXN1bHQgdGhlbiByZXN1bHQgY29uY2F0cyB0aGUgcmVjdXJzaW9uUmVzdWx0XHJcblx0XHRcdFx0XHRcdFx0aWYgKHJlY3Vyc2lvblJlc3VsdCkgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdChyZWN1cnNpb25SZXN1bHQpO1xyXG5cdFx0XHRcdFx0XHRcdC8vIHJlc2V0IGNvbmRpdGlvbmFsIFBhcmVudFxyXG5cdFx0XHRcdFx0XHRcdGlmIChjb21wb25lbnRbRUZvcm1pb0tleS5JRF0gPT0gY29uZGl0aW9uYWxQYXJlbnQuaWQpXHJcblx0XHRcdFx0XHRcdFx0XHRjb25kaXRpb25hbFBhcmVudCA9IHVuZGVmaW5lZDtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRyZXN1bHQucHVzaChjb21wb25lbnQpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHQvLyBhdm9pZCB0aGUgY29tcG9uZW50IHR5cGUgYnV0dG9uXHJcblx0XHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0XHRjb21wb25lbnRbRUZvcm1pb0tleS5UWVBFXSAhPT0gRUZvcm1pb0tleS5CVVRUT04gJiZcclxuXHRcdFx0XHRcdFx0XHRjb21wb25lbnRbRUZvcm1pb0tleS5LRVldICYmXHJcblx0XHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuTEFCRUxdXHJcblx0XHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHRcdC8vIHJlc29sdmUgY29uZGl0aW9uYWwgY29uZGl0aW9uYWwgb2JqZWN0XHJcblx0XHRcdFx0XHRcdFx0bGV0IGNvbmRpdGlvbmFsID0gdGhpcy5yZXNvbHZlSW5oZXJpdGFuY2VDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsUGFyZW50LFxyXG5cdFx0XHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuQ09ORElUSU9OQUxdLFxyXG5cdFx0XHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuQ1VTVE9NX0NPTkRJVElPTkFMXSxcclxuXHRcdFx0XHRcdFx0XHRcdGNvbXBvbmVudFtFRm9ybWlvS2V5LklEXVxyXG5cdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdFx0aWYgKCFjb25kaXRpb25hbCkgY29uZGl0aW9uYWwgPSBjb25kaXRpb25hbFBhcmVudDtcclxuXHRcdFx0XHRcdFx0XHRjb21wb25lbnRbRUZvcm1pb0tleS5DT05ESVRJT05BTF0gPSBjb25kaXRpb25hbFtFRm9ybWlvS2V5LkNPTkRJVElPTkFMXTtcclxuXHRcdFx0XHRcdFx0XHRjb21wb25lbnRbRUZvcm1pb0tleS5DVVNUT01fQ09ORElUSU9OQUxdID1cclxuXHRcdFx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsW0VGb3JtaW9LZXkuQ1VTVE9NX0NPTkRJVElPTkFMXTtcclxuXHRcdFx0XHRcdFx0XHQvLyBhZGQgbmFtUGFuZWwgYXMgcHJvcGVydHlcclxuXHRcdFx0XHRcdFx0XHRjb21wb25lbnRbRUZvcm1pb0tleS5USVRMRV9QQU5FTF0gPSB0aXRsZVBhbmVsO1xyXG5cdFx0XHRcdFx0XHRcdC8vIGFkZCBjb21wb25lbnQgdG8gdGhlIHJlc3VsdFxyXG5cdFx0XHRcdFx0XHRcdHJlc3VsdC5wdXNoKGNvbXBvbmVudCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9IGVsc2UgaWYgKGNvbXBvbmVudFtFRm9ybWlvS2V5LlRZUEVdID09PSBFRm9ybWlvS2V5LkVESVRHUklEKSB7XHJcblx0XHRcdFx0XHRpZiAoY29tcG9uZW50LnZhbGlkYXRlLnJlcXVpcmVkKSB7XHJcblx0XHRcdFx0XHRcdHJlc3VsdC5wdXNoKGNvbXBvbmVudCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcmVzdWx0O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSXQgcmV0dXJucyB0aGUgY29tcG9uZW50c1xyXG5cdCAqIEBwYXJhbSBjb21wb25lbnRzXHJcblx0ICogQHBhcmFtIGtlZXBFZGl0R3JpZHNcclxuXHQgKi9cclxuXHRzdGF0aWMgZ2V0Q29tcG9uZW50c1dpdGhFZGl0R3JpZHMoY29tcG9uZW50czogYW55W10pOiBhbnlbXSB7XHJcblx0XHRyZXR1cm4gRm9ybWlvVXRpbC5nZXRDb21wb25lbnRzQnlSZWN1cnNpb25XaXRoRWRpdEdyaWRzKGNvbXBvbmVudHMsICcnLCBudWxsKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEl0IHJldHVybnMgdGhlIGNvbXBvbmVudHMgYXJyYXkgb2YgdGhlIGZvcm0gYnkgcmVjdXJzaW9uXHJcblx0ICogQHBhcmFtIGNvbXBvbmVudHMgYXJyYXkgb2YgY29tcG9uZW50c1xyXG5cdCAqIEBwYXJhbSB0aXRsZVBhbmVsIG5hbWUgb2YgcGFyZW50IHBhbmVsLCBzbyBjaGlsZHJlbiBjb21wb25lbnRzIHdpbGwgaW5oZXJpdCB0aGUgcGFuZWxOYW1lXHJcblx0ICogQHBhcmFtIGNvbmRpdGlvbmFsT2JqZWN0IGNvbmRpdGlvbmFsIG9iamVjdCBpdCB3aWxsIGJlIGluaGVyaXRlZCBmcm9tIHBhbmVsIHtjb25kaXRpb25hbDogeyBlcTogLCB2YWx1ZTogLCB3aGVuOiAsIGpzb246IH0sIGN1c3RvbUNvbmRpdGlvbmFsOiB9XHJcblx0ICovXHJcblx0cHJpdmF0ZSBzdGF0aWMgZ2V0Q29tcG9uZW50c0J5UmVjdXJzaW9uV2l0aEVkaXRHcmlkcyhcclxuXHRcdGNvbXBvbmVudHM6IGFueVtdLFxyXG5cdFx0dGl0bGVQYW5lbDogc3RyaW5nLFxyXG5cdFx0Y29uZGl0aW9uYWxQYXJlbnQ6IGFueVxyXG5cdCk6IGFueVtdIHtcclxuXHRcdC8vIGl0IGNvbnRhaW5zIHRoZSByZXN1bHQgYXJyYXlcclxuXHRcdGxldCByZXN1bHQgPSBbXTtcclxuXHRcdGlmIChjb21wb25lbnRzKSB7XHJcblx0XHRcdC8vIGl0ZXJhdGUgb3ZlciBjb21wb25lbnRzXHJcblx0XHRcdGZvciAoY29uc3QgY29tcG9uZW50IG9mIGNvbXBvbmVudHMpIHtcclxuXHRcdFx0XHQvLyBhdm9pZCB0aGUgZWRpdGdyaWQgY29tcG9uZW50IG90IGlmIGl0IGhhcyBhIGRpZmZlcmVudCBiZWhhdmlvciBpdCBzaG91bGQgaGF2ZSBhbiBlbHNlIHN0YXRlbWVudFxyXG5cclxuXHRcdFx0XHQvLyBpZiBjb21wb25lbnQgaXMgcGFuZWwgdGhlbiB0aXRsZVBhbmVsIHZhcmlhYmxlIGlzIGNoYW5nZWQsIGFuZCBpdCBpcyBnb25uYSBiZSBpbmhlcml0ZWRcclxuXHRcdFx0XHRpZiAoY29tcG9uZW50W0VGb3JtaW9LZXkuVFlQRV0gPT09IEVGb3JtaW9LZXkuUEFORUwpIHtcclxuXHRcdFx0XHRcdHRpdGxlUGFuZWwgPSBjb21wb25lbnRbRUZvcm1pb0tleS5USVRMRV07XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHQodHlwZW9mIGNvbXBvbmVudFtFRm9ybWlvS2V5LkNPTVBPTkVOVFNdICE9PSAndW5kZWZpbmVkJyB8fFxyXG5cdFx0XHRcdFx0XHR0eXBlb2YgY29tcG9uZW50W0VGb3JtaW9LZXkuQ09MVU1OU10gIT09ICd1bmRlZmluZWQnKSAmJlxyXG5cdFx0XHRcdFx0KHR5cGVvZiBjb21wb25lbnRbRUZvcm1pb0tleS5UWVBFXSA9PSAndW5kZWZpbmVkJyB8fFxyXG5cdFx0XHRcdFx0XHRjb21wb25lbnRbRUZvcm1pb0tleS5UWVBFXSAhPT0gRUZvcm1pb0tleS5UWVBFX0FERFJFU1MpXHJcblx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHQvLyByZXNvbHZlIGNvbmRpdGlvbmFsIHBhcmVudCBjb25kaXRpb25hbFxyXG5cdFx0XHRcdFx0Y29uc3QgY29uZGl0aW9uYWwgPSB0aGlzLnJlc29sdmVJbmhlcml0YW5jZUNvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbFBhcmVudCxcclxuXHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuQ09ORElUSU9OQUxdLFxyXG5cdFx0XHRcdFx0XHRjb21wb25lbnRbRUZvcm1pb0tleS5DVVNUT01fQ09ORElUSU9OQUxdLFxyXG5cdFx0XHRcdFx0XHRjb21wb25lbnRbRUZvcm1pb0tleS5JRF1cclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHQvLyBjaGFuZ2UgY29uZGl0aW9uXHJcblx0XHRcdFx0XHRpZiAoY29uZGl0aW9uYWwpIGNvbmRpdGlvbmFsUGFyZW50ID0gY29uZGl0aW9uYWw7XHJcblx0XHRcdFx0XHQvLyBpdCBjb250YWlucyB0aGUgc3ViY29tcG9uZW50cyBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIGNvbXBvbmVudCBpZiBpdCBoYXMgY29tcG9uZW50cyBvciBjb2x1bW5zXHJcblx0XHRcdFx0XHRsZXQgc3ViQ29tcG9uZW50cyA9XHJcblx0XHRcdFx0XHRcdHR5cGVvZiBjb21wb25lbnRbRUZvcm1pb0tleS5DT01QT05FTlRTXSAhPT0gJ3VuZGVmaW5lZCdcclxuXHRcdFx0XHRcdFx0XHQ/IGNvbXBvbmVudFtFRm9ybWlvS2V5LkNPTVBPTkVOVFNdXHJcblx0XHRcdFx0XHRcdFx0OiBjb21wb25lbnRbRUZvcm1pb0tleS5DT0xVTU5TXTtcclxuXHJcblx0XHRcdFx0XHRpZiAoY29tcG9uZW50W0VGb3JtaW9LZXkuVFlQRV0gPT09IEVGb3JtaW9LZXkuRURJVEdSSUQpIHtcclxuXHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuVElUTEVfUEFORUxdID0gdGl0bGVQYW5lbDtcclxuXHRcdFx0XHRcdFx0cmVzdWx0LnB1c2goY29tcG9uZW50KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdC8vIGlmIGNvbXBvbmVudCBoYXMgc3ViQ29tcG9uZW50cywgdGhlbiBleGVjdXRlIHRoZSByZWN1cnNpb24gZnVuY3Rpb24gdG8gZ2V0IHRoZSByZWN1cnNpb25uUmVzdWx0XHJcblx0XHRcdFx0XHRjb25zdCByZWN1cnNpb25SZXN1bHQgPSBGb3JtaW9VdGlsLmdldENvbXBvbmVudHNCeVJlY3Vyc2lvbldpdGhFZGl0R3JpZHMoXHJcblx0XHRcdFx0XHRcdHN1YkNvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRcdHRpdGxlUGFuZWwsXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsUGFyZW50XHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0Ly8gaWYgcmVjdXJzaW9uIHJlc3VsdCB0aGVuIHJlc3VsdCBjb25jYXRzIHRoZSByZWN1cnNpb25SZXN1bHRcclxuXHRcdFx0XHRcdGlmIChyZWN1cnNpb25SZXN1bHQpIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQocmVjdXJzaW9uUmVzdWx0KTtcclxuXHRcdFx0XHRcdC8vIHJlc2V0IGNvbmRpdGlvbmFsIFBhcmVudFxyXG5cdFx0XHRcdFx0aWYgKGNvbXBvbmVudFtFRm9ybWlvS2V5LklEXSA9PSBjb25kaXRpb25hbFBhcmVudC5pZClcclxuXHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxQYXJlbnQgPSB1bmRlZmluZWQ7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdC8vIGF2b2lkIHRoZSBjb21wb25lbnQgdHlwZSBidXR0b25cclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuVFlQRV0gIT09IEVGb3JtaW9LZXkuQlVUVE9OICYmXHJcblx0XHRcdFx0XHRcdGNvbXBvbmVudFtFRm9ybWlvS2V5LktFWV0gJiZcclxuXHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuTEFCRUxdXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0Ly8gcmVzb2x2ZSBjb25kaXRpb25hbCBjb25kaXRpb25hbCBvYmplY3RcclxuXHRcdFx0XHRcdFx0bGV0IGNvbmRpdGlvbmFsID0gdGhpcy5yZXNvbHZlSW5oZXJpdGFuY2VDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRjb25kaXRpb25hbFBhcmVudCxcclxuXHRcdFx0XHRcdFx0XHRjb21wb25lbnRbRUZvcm1pb0tleS5DT05ESVRJT05BTF0sXHJcblx0XHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuQ1VTVE9NX0NPTkRJVElPTkFMXSxcclxuXHRcdFx0XHRcdFx0XHRjb21wb25lbnRbRUZvcm1pb0tleS5JRF1cclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0aWYgKCFjb25kaXRpb25hbCkgY29uZGl0aW9uYWwgPSBjb25kaXRpb25hbFBhcmVudDtcclxuXHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuQ09ORElUSU9OQUxdID0gY29uZGl0aW9uYWxbRUZvcm1pb0tleS5DT05ESVRJT05BTF07XHJcblx0XHRcdFx0XHRcdGNvbXBvbmVudFtFRm9ybWlvS2V5LkNVU1RPTV9DT05ESVRJT05BTF0gPVxyXG5cdFx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsW0VGb3JtaW9LZXkuQ1VTVE9NX0NPTkRJVElPTkFMXTtcclxuXHRcdFx0XHRcdFx0Ly8gYWRkIG5hbVBhbmVsIGFzIHByb3BlcnR5XHJcblx0XHRcdFx0XHRcdGNvbXBvbmVudFtFRm9ybWlvS2V5LlRJVExFX1BBTkVMXSA9IHRpdGxlUGFuZWw7XHJcblx0XHRcdFx0XHRcdC8vIGFkZCBjb21wb25lbnQgdG8gdGhlIHJlc3VsdFxyXG5cdFx0XHRcdFx0XHRyZXN1bHQucHVzaChjb21wb25lbnQpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHJlc3VsdDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEl0IHJlc29sdmUgdGhlIGluaGVyaXRhbmNlIGNvbmRpdGlvbmFsXHJcblx0ICogQHBhcmFtIGNvbmRpdGlvbmFsT2JqZWN0XHJcblx0ICogQHBhcmFtIGNvbmRpdGlvbmFsXHJcblx0ICogQHBhcmFtIGN1c3RvbUNvbmRpdGlvbmFsXHJcblx0ICovXHJcblx0cHJpdmF0ZSBzdGF0aWMgcmVzb2x2ZUluaGVyaXRhbmNlQ29uZGl0aW9uYWwoXHJcblx0XHRjb25kaXRpb25hbE9iamVjdCxcclxuXHRcdGNvbmRpdGlvbmFsLFxyXG5cdFx0Y3VzdG9tQ29uZGl0aW9uYWwsXHJcblx0XHRwYXJlbnRJZFxyXG5cdCk6IGFueSB7XHJcblx0XHQvLyB2YWxpZGF0ZSBpZiB0aGVyZSBpcyBhIGNvbmRpdGlvbiB3aXRoIHRoZSBuZXcgZmllbGRzXHJcblx0XHRpZiAoXHJcblx0XHRcdCFjb25kaXRpb25hbE9iamVjdCB8fFxyXG5cdFx0XHRjdXN0b21Db25kaXRpb25hbCB8fFxyXG5cdFx0XHQoY29uZGl0aW9uYWwgJiYgY29uZGl0aW9uYWxbRUZvcm1pb0tleS5XSEVOXSAmJiBjb25kaXRpb25hbFtFRm9ybWlvS2V5LkVRXSkgfHxcclxuXHRcdFx0KGNvbmRpdGlvbmFsICYmIGNvbmRpdGlvbmFsW0VGb3JtaW9LZXkuSlNPTl0pXHJcblx0XHQpIHtcclxuXHRcdFx0cmV0dXJuIHsgY29uZGl0aW9uYWw6IGNvbmRpdGlvbmFsLCBjdXN0b21Db25kaXRpb25hbDogY3VzdG9tQ29uZGl0aW9uYWwsIGlkOiBwYXJlbnRJZCB9O1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIG51bGw7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJdCByZXR1cm5zIHRoZSBlZGl0IGdyaWQgY29tcG9uZW50c1xyXG5cdCAqIEBwYXJhbSBjb21wb25lbnRzXHJcblx0ICovXHJcblx0c3RhdGljIGdldEVkaXRHcmlkS2V5TGFiZWxzKGNvbXBvbmVudHM6IGFueVtdKTogYW55W10ge1xyXG5cdFx0cmV0dXJuIEZvcm1pb1V0aWwuZ2V0RWRpdEdyaWRLZXlMYWJlbHNCeVJlY3Vyc2lvbihjb21wb25lbnRzLCAnJywgbnVsbCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJdCByZXR1cm5zIHRoZSBjb21wb25lbnRzIGVkaXQgZ3JpZCBhcnJheSBvZiB0aGUgZm9ybSBieSByZWN1cnNpb25cclxuXHQgKiBAcGFyYW0gY29tcG9uZW50cyBhcnJheSBvZiBjb21wb25lbnRzXHJcblx0ICogQHBhcmFtIHRpdGxlUGFuZWwgbmFtZSBvZiBwYXJlbnQgcGFuZWwsIHNvIGNoaWxkcmVuIGNvbXBvbmVudHMgd2lsbCBpbmhlcml0IHRoZSBwYW5lbE5hbWVcclxuXHQgKiBAcGFyYW0gY29uZGl0aW9uYWxPYmplY3QgY29uZGl0aW9uYWwgb2JqZWN0IGl0IHdpbGwgYmUgaW5oZXJpdGVkIGZyb20gcGFuZWwge2NvbmRpdGlvbmFsOiB7IGVxOiAsIHZhbHVlOiAsIHdoZW46ICwganNvbjogfSwgY3VzdG9tQ29uZGl0aW9uYWw6IH1cclxuXHQgKi9cclxuXHRwcml2YXRlIHN0YXRpYyBnZXRFZGl0R3JpZEtleUxhYmVsc0J5UmVjdXJzaW9uKFxyXG5cdFx0Y29tcG9uZW50czogYW55W10sXHJcblx0XHR0aXRsZVBhbmVsOiBzdHJpbmcsXHJcblx0XHRjb25kaXRpb25hbFBhcmVudDogYW55XHJcblx0KTogYW55W10ge1xyXG5cdFx0Ly8gaXQgY29udGFpbnMgdGhlIHJlc3VsdCBhcnJheVxyXG5cdFx0bGV0IHJlc3VsdCA9IFtdO1xyXG5cdFx0aWYgKGNvbXBvbmVudHMpIHtcclxuXHRcdFx0Ly8gaXRlcmF0ZSBvdmVyIGNvbXBvbmVudHNcclxuXHRcdFx0Zm9yIChjb25zdCBjb21wb25lbnQgb2YgY29tcG9uZW50cykge1xyXG5cdFx0XHRcdC8vIGlmIGNvbXBvbmVudCBpcyBwYW5lbCB0aGVuIHRpdGxlUGFuZWwgdmFyaWFibGUgaXMgY2hhbmdlZCwgYW5kIGl0IGlzIGdvbm5hIGJlIGluaGVyaXRlZFxyXG5cdFx0XHRcdGlmIChjb21wb25lbnRbRUZvcm1pb0tleS5UWVBFXSA9PT0gRUZvcm1pb0tleS5QQU5FTCkge1xyXG5cdFx0XHRcdFx0dGl0bGVQYW5lbCA9IGNvbXBvbmVudFtFRm9ybWlvS2V5LlRJVExFXTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdCh0eXBlb2YgY29tcG9uZW50W0VGb3JtaW9LZXkuQ09NUE9ORU5UU10gIT09ICd1bmRlZmluZWQnIHx8XHJcblx0XHRcdFx0XHRcdHR5cGVvZiBjb21wb25lbnRbRUZvcm1pb0tleS5DT0xVTU5TXSAhPT0gJ3VuZGVmaW5lZCcpICYmXHJcblx0XHRcdFx0XHQodHlwZW9mIGNvbXBvbmVudFtFRm9ybWlvS2V5LlRZUEVdID09ICd1bmRlZmluZWQnIHx8XHJcblx0XHRcdFx0XHRcdGNvbXBvbmVudFtFRm9ybWlvS2V5LlRZUEVdICE9PSBFRm9ybWlvS2V5LlRZUEVfQUREUkVTUylcclxuXHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdC8vIHJlc29sdmUgY29uZGl0aW9uYWwgcGFyZW50IGNvbmRpdGlvbmFsXHJcblx0XHRcdFx0XHRjb25zdCBjb25kaXRpb25hbCA9IHRoaXMucmVzb2x2ZUluaGVyaXRhbmNlQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsUGFyZW50LFxyXG5cdFx0XHRcdFx0XHRjb21wb25lbnRbRUZvcm1pb0tleS5DT05ESVRJT05BTF0sXHJcblx0XHRcdFx0XHRcdGNvbXBvbmVudFtFRm9ybWlvS2V5LkNVU1RPTV9DT05ESVRJT05BTF0sXHJcblx0XHRcdFx0XHRcdGNvbXBvbmVudFtFRm9ybWlvS2V5LklEXVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdC8vIGNoYW5nZSBjb25kaXRpb25cclxuXHRcdFx0XHRcdGlmIChjb25kaXRpb25hbCkgY29uZGl0aW9uYWxQYXJlbnQgPSBjb25kaXRpb25hbDtcclxuXHRcdFx0XHRcdC8vIGl0IGNvbnRhaW5zIHRoZSBzdWJjb21wb25lbnRzIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgY29tcG9uZW50IGlmIGl0IGhhcyBjb21wb25lbnRzIG9yIGNvbHVtbnNcclxuXHRcdFx0XHRcdGxldCBzdWJDb21wb25lbnRzID1cclxuXHRcdFx0XHRcdFx0dHlwZW9mIGNvbXBvbmVudFtFRm9ybWlvS2V5LkNPTVBPTkVOVFNdICE9PSAndW5kZWZpbmVkJ1xyXG5cdFx0XHRcdFx0XHRcdD8gY29tcG9uZW50W0VGb3JtaW9LZXkuQ09NUE9ORU5UU11cclxuXHRcdFx0XHRcdFx0XHQ6IGNvbXBvbmVudFtFRm9ybWlvS2V5LkNPTFVNTlNdO1xyXG5cdFx0XHRcdFx0aWYgKGNvbXBvbmVudFtFRm9ybWlvS2V5LlRZUEVdID09IEVGb3JtaW9LZXkuRURJVEdSSUQpIHtcclxuXHRcdFx0XHRcdFx0Ly8gYWRkIG5hbVBhbmVsIGFzIHByb3BlcnR5XHJcblx0XHRcdFx0XHRcdGNvbXBvbmVudFtFRm9ybWlvS2V5LlRJVExFX1BBTkVMXSA9IHRpdGxlUGFuZWw7XHJcblx0XHRcdFx0XHRcdC8vIGFkZCBjb21wb25lbnQgdG8gdGhlIHJlc3VsdFxyXG5cdFx0XHRcdFx0XHRyZXN1bHQucHVzaChjb21wb25lbnQpO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0Ly8gaWYgY29tcG9uZW50IGhhcyBzdWJDb21wb25lbnRzLCB0aGVuIGV4ZWN1dGUgdGhlIHJlY3Vyc2lvbiBmdW5jdGlvbiB0byBnZXQgdGhlIHJlY3Vyc2lvbm5SZXN1bHRcclxuXHRcdFx0XHRcdFx0Y29uc3QgcmVjdXJzaW9uUmVzdWx0ID0gRm9ybWlvVXRpbC5nZXRFZGl0R3JpZEtleUxhYmVsc0J5UmVjdXJzaW9uKFxyXG5cdFx0XHRcdFx0XHRcdHN1YkNvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRcdFx0dGl0bGVQYW5lbCxcclxuXHRcdFx0XHRcdFx0XHRjb25kaXRpb25hbFBhcmVudFxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHQvLyBpZiByZWN1cnNpb24gcmVzdWx0IHRoZW4gcmVzdWx0IGNvbmNhdHMgdGhlIHJlY3Vyc2lvblJlc3VsdFxyXG5cdFx0XHRcdFx0XHRpZiAocmVjdXJzaW9uUmVzdWx0KSByZXN1bHQgPSByZXN1bHQuY29uY2F0KHJlY3Vyc2lvblJlc3VsdCk7XHJcblx0XHRcdFx0XHRcdC8vIHJlc2V0IGNvbmRpdGlvbmFsIFBhcmVudFxyXG5cdFx0XHRcdFx0XHRpZiAoY29tcG9uZW50W0VGb3JtaW9LZXkuSURdID09IGNvbmRpdGlvbmFsUGFyZW50LmlkKVxyXG5cdFx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsUGFyZW50ID0gdW5kZWZpbmVkO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcmVzdWx0O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSXQgcmV0dXJucyB0aGUgY29tcG9uZW50c1xyXG5cdCAqIEBwYXJhbSBjb21wb25lbnRzXHJcblx0ICogQHBhcmFtIGtlZXBFZGl0R3JpZHNcclxuXHQgKi9cclxuXHRzdGF0aWMgZ2V0Q29tcG9uZW50c0ludG9FZGl0R3JpZHMoY29tcG9uZW50czogYW55W10sIGVkaXRHcmlkTmFtZTogc3RyaW5nKTogYW55W10ge1xyXG5cdFx0cmV0dXJuIEZvcm1pb1V0aWwuZ2V0Q29tcG9uZW50c0J5UmVjdXJzaW9uSW50b0VkaXRHcmlkcyhcclxuXHRcdFx0Y29tcG9uZW50cyxcclxuXHRcdFx0JycsXHJcblx0XHRcdG51bGwsXHJcblx0XHRcdGVkaXRHcmlkTmFtZSxcclxuXHRcdFx0ZmFsc2VcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJdCByZXR1cm5zIHRoZSBjb21wb25lbnRzIGFycmF5IG9mIHRoZSBmb3JtIGJ5IHJlY3Vyc2lvblxyXG5cdCAqIEBwYXJhbSBjb21wb25lbnRzIGFycmF5IG9mIGNvbXBvbmVudHNcclxuXHQgKiBAcGFyYW0gdGl0bGVQYW5lbCBuYW1lIG9mIHBhcmVudCBwYW5lbCwgc28gY2hpbGRyZW4gY29tcG9uZW50cyB3aWxsIGluaGVyaXQgdGhlIHBhbmVsTmFtZVxyXG5cdCAqIEBwYXJhbSBjb25kaXRpb25hbE9iamVjdCBjb25kaXRpb25hbCBvYmplY3QgaXQgd2lsbCBiZSBpbmhlcml0ZWQgZnJvbSBwYW5lbCB7Y29uZGl0aW9uYWw6IHsgZXE6ICwgdmFsdWU6ICwgd2hlbjogLCBqc29uOiB9LCBjdXN0b21Db25kaXRpb25hbDogfVxyXG5cdCAqL1xyXG5cdHByaXZhdGUgc3RhdGljIGdldENvbXBvbmVudHNCeVJlY3Vyc2lvbkludG9FZGl0R3JpZHMoXHJcblx0XHRjb21wb25lbnRzOiBhbnlbXSxcclxuXHRcdHRpdGxlUGFuZWw6IHN0cmluZyxcclxuXHRcdGNvbmRpdGlvbmFsUGFyZW50OiBhbnksXHJcblx0XHRlZGl0R3JpZE5hbWU6IHN0cmluZyxcclxuXHRcdGV4aXN0RWRpdEdyaWQ6IGJvb2xlYW5cclxuXHQpOiBhbnlbXSB7XHJcblx0XHQvLyBpdCBjb250YWlucyB0aGUgcmVzdWx0IGFycmF5XHJcblx0XHRsZXQgcmVzdWx0ID0gW107XHJcblx0XHRpZiAoY29tcG9uZW50cykge1xyXG5cdFx0XHQvLyBpdGVyYXRlIG92ZXIgY29tcG9uZW50c1xyXG5cdFx0XHRmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiBjb21wb25lbnRzKSB7XHJcblx0XHRcdFx0Ly8gYXZvaWQgdGhlIGVkaXRncmlkIGNvbXBvbmVudCBvdCBpZiBpdCBoYXMgYSBkaWZmZXJlbnQgYmVoYXZpb3IgaXQgc2hvdWxkIGhhdmUgYW4gZWxzZSBzdGF0ZW1lbnRcclxuXHJcblx0XHRcdFx0Ly8gaWYgY29tcG9uZW50IGlzIHBhbmVsIHRoZW4gdGl0bGVQYW5lbCB2YXJpYWJsZSBpcyBjaGFuZ2VkLCBhbmQgaXQgaXMgZ29ubmEgYmUgaW5oZXJpdGVkXHJcblx0XHRcdFx0aWYgKGNvbXBvbmVudFtFRm9ybWlvS2V5LlRZUEVdID09PSBFRm9ybWlvS2V5LlBBTkVMKSB7XHJcblx0XHRcdFx0XHR0aXRsZVBhbmVsID0gY29tcG9uZW50W0VGb3JtaW9LZXkuVElUTEVdO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0KHR5cGVvZiBjb21wb25lbnRbRUZvcm1pb0tleS5DT01QT05FTlRTXSAhPT0gJ3VuZGVmaW5lZCcgfHxcclxuXHRcdFx0XHRcdFx0dHlwZW9mIGNvbXBvbmVudFtFRm9ybWlvS2V5LkNPTFVNTlNdICE9PSAndW5kZWZpbmVkJykgJiZcclxuXHRcdFx0XHRcdCh0eXBlb2YgY29tcG9uZW50W0VGb3JtaW9LZXkuVFlQRV0gPT0gJ3VuZGVmaW5lZCcgfHxcclxuXHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuVFlQRV0gIT09IEVGb3JtaW9LZXkuVFlQRV9BRERSRVNTKVxyXG5cdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0Ly8gcmVzb2x2ZSBjb25kaXRpb25hbCBwYXJlbnQgY29uZGl0aW9uYWxcclxuXHRcdFx0XHRcdGNvbnN0IGNvbmRpdGlvbmFsID0gdGhpcy5yZXNvbHZlSW5oZXJpdGFuY2VDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxQYXJlbnQsXHJcblx0XHRcdFx0XHRcdGNvbXBvbmVudFtFRm9ybWlvS2V5LkNPTkRJVElPTkFMXSxcclxuXHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuQ1VTVE9NX0NPTkRJVElPTkFMXSxcclxuXHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuSURdXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0Ly8gY2hhbmdlIGNvbmRpdGlvblxyXG5cdFx0XHRcdFx0aWYgKGNvbmRpdGlvbmFsKSBjb25kaXRpb25hbFBhcmVudCA9IGNvbmRpdGlvbmFsO1xyXG5cdFx0XHRcdFx0Ly8gaXQgY29udGFpbnMgdGhlIHN1YmNvbXBvbmVudHMgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBjb21wb25lbnQgaWYgaXQgaGFzIGNvbXBvbmVudHMgb3IgY29sdW1uc1xyXG5cdFx0XHRcdFx0bGV0IHN1YkNvbXBvbmVudHMgPVxyXG5cdFx0XHRcdFx0XHR0eXBlb2YgY29tcG9uZW50W0VGb3JtaW9LZXkuQ09NUE9ORU5UU10gIT09ICd1bmRlZmluZWQnXHJcblx0XHRcdFx0XHRcdFx0PyBjb21wb25lbnRbRUZvcm1pb0tleS5DT01QT05FTlRTXVxyXG5cdFx0XHRcdFx0XHRcdDogY29tcG9uZW50W0VGb3JtaW9LZXkuQ09MVU1OU107XHJcblxyXG5cdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHRjb21wb25lbnRbRUZvcm1pb0tleS5UWVBFXSA9PT0gRUZvcm1pb0tleS5FRElUR1JJRCAmJlxyXG5cdFx0XHRcdFx0XHRjb21wb25lbnRbJ2tleSddID09IGVkaXRHcmlkTmFtZVxyXG5cdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdGV4aXN0RWRpdEdyaWQgPSB0cnVlO1xyXG5cdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0KHR5cGVvZiBjb21wb25lbnRbRUZvcm1pb0tleS5DT01QT05FTlRTXSAhPT0gJ3VuZGVmaW5lZCcgfHxcclxuXHRcdFx0XHRcdFx0XHRcdHR5cGVvZiBjb21wb25lbnRbRUZvcm1pb0tleS5DT0xVTU5TXSAhPT0gJ3VuZGVmaW5lZCcpICYmXHJcblx0XHRcdFx0XHRcdFx0KHR5cGVvZiBjb21wb25lbnRbRUZvcm1pb0tleS5UWVBFXSA9PSAndW5kZWZpbmVkJyB8fFxyXG5cdFx0XHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuVFlQRV0gIT09IEVGb3JtaW9LZXkuVFlQRV9BRERSRVNTKVxyXG5cdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHQvLyByZXNvbHZlIGNvbmRpdGlvbmFsIHBhcmVudCBjb25kaXRpb25hbFxyXG5cdFx0XHRcdFx0XHRcdGNvbnN0IGNvbmRpdGlvbmFsID0gdGhpcy5yZXNvbHZlSW5oZXJpdGFuY2VDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsUGFyZW50LFxyXG5cdFx0XHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuQ09ORElUSU9OQUxdLFxyXG5cdFx0XHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuQ1VTVE9NX0NPTkRJVElPTkFMXSxcclxuXHRcdFx0XHRcdFx0XHRcdGNvbXBvbmVudFtFRm9ybWlvS2V5LklEXVxyXG5cdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdFx0Ly8gY2hhbmdlIGNvbmRpdGlvblxyXG5cdFx0XHRcdFx0XHRcdGlmIChjb25kaXRpb25hbCkgY29uZGl0aW9uYWxQYXJlbnQgPSBjb25kaXRpb25hbDtcclxuXHRcdFx0XHRcdFx0XHQvLyBpdCBjb250YWlucyB0aGUgc3ViY29tcG9uZW50cyBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIGNvbXBvbmVudCBpZiBpdCBoYXMgY29tcG9uZW50cyBvciBjb2x1bW5zXHJcblx0XHRcdFx0XHRcdFx0bGV0IHN1YkNvbXBvbmVudHMgPVxyXG5cdFx0XHRcdFx0XHRcdFx0dHlwZW9mIGNvbXBvbmVudFtFRm9ybWlvS2V5LkNPTVBPTkVOVFNdICE9PSAndW5kZWZpbmVkJ1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQ/IGNvbXBvbmVudFtFRm9ybWlvS2V5LkNPTVBPTkVOVFNdXHJcblx0XHRcdFx0XHRcdFx0XHRcdDogY29tcG9uZW50W0VGb3JtaW9LZXkuQ09MVU1OU107XHJcblxyXG5cdFx0XHRcdFx0XHRcdC8vIGlmIGNvbXBvbmVudCBoYXMgc3ViQ29tcG9uZW50cywgdGhlbiBleGVjdXRlIHRoZSByZWN1cnNpb24gZnVuY3Rpb24gdG8gZ2V0IHRoZSByZWN1cnNpb25uUmVzdWx0XHJcblx0XHRcdFx0XHRcdFx0Y29uc3QgcmVjdXJzaW9uUmVzdWx0ID1cclxuXHRcdFx0XHRcdFx0XHRcdEZvcm1pb1V0aWwuZ2V0Q29tcG9uZW50c0J5UmVjdXJzaW9uSW50b0VkaXRHcmlkcyhcclxuXHRcdFx0XHRcdFx0XHRcdFx0c3ViQ29tcG9uZW50cyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0dGl0bGVQYW5lbCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxQYXJlbnQsXHJcblx0XHRcdFx0XHRcdFx0XHRcdGVkaXRHcmlkTmFtZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZXhpc3RFZGl0R3JpZFxyXG5cdFx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0XHQvLyBpZiByZWN1cnNpb24gcmVzdWx0IHRoZW4gcmVzdWx0IGNvbmNhdHMgdGhlIHJlY3Vyc2lvblJlc3VsdFxyXG5cdFx0XHRcdFx0XHRcdGlmIChyZWN1cnNpb25SZXN1bHQpIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQocmVjdXJzaW9uUmVzdWx0KTtcclxuXHRcdFx0XHRcdFx0XHQvLyByZXNldCBjb25kaXRpb25hbCBQYXJlbnRcclxuXHRcdFx0XHRcdFx0XHRpZiAoY29tcG9uZW50ICYmIGNvbmRpdGlvbmFsUGFyZW50KSB7XHJcblx0XHRcdFx0XHRcdFx0XHRpZiAoY29tcG9uZW50W0VGb3JtaW9LZXkuSURdID09IGNvbmRpdGlvbmFsUGFyZW50LmlkKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRjb25kaXRpb25hbFBhcmVudCA9IHVuZGVmaW5lZDtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0Ly8gYXZvaWQgdGhlIGNvbXBvbmVudCB0eXBlIGJ1dHRvblxyXG5cdFx0XHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0XHRcdGNvbXBvbmVudFtFRm9ybWlvS2V5LlRZUEVdICE9PSBFRm9ybWlvS2V5LkJVVFRPTiAmJlxyXG5cdFx0XHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuS0VZXSAmJlxyXG5cdFx0XHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuTEFCRUxdICYmXHJcblx0XHRcdFx0XHRcdFx0XHRleGlzdEVkaXRHcmlkXHJcblx0XHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0XHQvLyByZXNvbHZlIGNvbmRpdGlvbmFsIGNvbmRpdGlvbmFsIG9iamVjdFxyXG5cdFx0XHRcdFx0XHRcdFx0bGV0IGNvbmRpdGlvbmFsID0gdGhpcy5yZXNvbHZlSW5oZXJpdGFuY2VDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxQYXJlbnQsXHJcblx0XHRcdFx0XHRcdFx0XHRcdGNvbXBvbmVudFtFRm9ybWlvS2V5LkNPTkRJVElPTkFMXSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuQ1VTVE9NX0NPTkRJVElPTkFMXSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuSURdXHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCFjb25kaXRpb25hbCkgY29uZGl0aW9uYWwgPSBjb25kaXRpb25hbFBhcmVudDtcclxuXHRcdFx0XHRcdFx0XHRcdGNvbXBvbmVudFtFRm9ybWlvS2V5LkNPTkRJVElPTkFMXSA9XHJcblx0XHRcdFx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsW0VGb3JtaW9LZXkuQ09ORElUSU9OQUxdO1xyXG5cdFx0XHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuQ1VTVE9NX0NPTkRJVElPTkFMXSA9XHJcblx0XHRcdFx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsW0VGb3JtaW9LZXkuQ1VTVE9NX0NPTkRJVElPTkFMXTtcclxuXHRcdFx0XHRcdFx0XHRcdC8vIGFkZCBuYW1QYW5lbCBhcyBwcm9wZXJ0eVxyXG5cdFx0XHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuVElUTEVfUEFORUxdID0gdGl0bGVQYW5lbDtcclxuXHRcdFx0XHRcdFx0XHRcdC8vIGFkZCBjb21wb25lbnQgdG8gdGhlIHJlc3VsdFxyXG5cdFx0XHRcdFx0XHRcdFx0cmVzdWx0LnB1c2goY29tcG9uZW50KTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdC8vIGlmIGNvbXBvbmVudCBoYXMgc3ViQ29tcG9uZW50cywgdGhlbiBleGVjdXRlIHRoZSByZWN1cnNpb24gZnVuY3Rpb24gdG8gZ2V0IHRoZSByZWN1cnNpb25uUmVzdWx0XHJcblx0XHRcdFx0XHRjb25zdCByZWN1cnNpb25SZXN1bHQgPSBGb3JtaW9VdGlsLmdldENvbXBvbmVudHNCeVJlY3Vyc2lvbkludG9FZGl0R3JpZHMoXHJcblx0XHRcdFx0XHRcdHN1YkNvbXBvbmVudHMsXHJcblx0XHRcdFx0XHRcdHRpdGxlUGFuZWwsXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsUGFyZW50LFxyXG5cdFx0XHRcdFx0XHRlZGl0R3JpZE5hbWUsXHJcblx0XHRcdFx0XHRcdGV4aXN0RWRpdEdyaWRcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHQvLyBpZiByZWN1cnNpb24gcmVzdWx0IHRoZW4gcmVzdWx0IGNvbmNhdHMgdGhlIHJlY3Vyc2lvblJlc3VsdFxyXG5cdFx0XHRcdFx0aWYgKHJlY3Vyc2lvblJlc3VsdCkgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdChyZWN1cnNpb25SZXN1bHQpO1xyXG5cdFx0XHRcdFx0Ly8gcmVzZXQgY29uZGl0aW9uYWwgUGFyZW50XHJcblx0XHRcdFx0XHRpZiAoY29tcG9uZW50ICYmIGNvbmRpdGlvbmFsUGFyZW50KSB7XHJcblx0XHRcdFx0XHRcdGlmIChjb21wb25lbnRbRUZvcm1pb0tleS5JRF0gPT0gY29uZGl0aW9uYWxQYXJlbnQuaWQpXHJcblx0XHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxQYXJlbnQgPSB1bmRlZmluZWQ7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdC8vIGF2b2lkIHRoZSBjb21wb25lbnQgdHlwZSBidXR0b25cclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuVFlQRV0gIT09IEVGb3JtaW9LZXkuQlVUVE9OICYmXHJcblx0XHRcdFx0XHRcdGNvbXBvbmVudFtFRm9ybWlvS2V5LktFWV0gJiZcclxuXHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuTEFCRUxdICYmXHJcblx0XHRcdFx0XHRcdGV4aXN0RWRpdEdyaWRcclxuXHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHQvLyByZXNvbHZlIGNvbmRpdGlvbmFsIGNvbmRpdGlvbmFsIG9iamVjdFxyXG5cdFx0XHRcdFx0XHRsZXQgY29uZGl0aW9uYWwgPSB0aGlzLnJlc29sdmVJbmhlcml0YW5jZUNvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsUGFyZW50LFxyXG5cdFx0XHRcdFx0XHRcdGNvbXBvbmVudFtFRm9ybWlvS2V5LkNPTkRJVElPTkFMXSxcclxuXHRcdFx0XHRcdFx0XHRjb21wb25lbnRbRUZvcm1pb0tleS5DVVNUT01fQ09ORElUSU9OQUxdLFxyXG5cdFx0XHRcdFx0XHRcdGNvbXBvbmVudFtFRm9ybWlvS2V5LklEXVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRpZiAoIWNvbmRpdGlvbmFsKSBjb25kaXRpb25hbCA9IGNvbmRpdGlvbmFsUGFyZW50O1xyXG5cdFx0XHRcdFx0XHRjb21wb25lbnRbRUZvcm1pb0tleS5DT05ESVRJT05BTF0gPSBjb25kaXRpb25hbFtFRm9ybWlvS2V5LkNPTkRJVElPTkFMXTtcclxuXHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuQ1VTVE9NX0NPTkRJVElPTkFMXSA9XHJcblx0XHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxbRUZvcm1pb0tleS5DVVNUT01fQ09ORElUSU9OQUxdO1xyXG5cdFx0XHRcdFx0XHQvLyBhZGQgbmFtUGFuZWwgYXMgcHJvcGVydHlcclxuXHRcdFx0XHRcdFx0Y29tcG9uZW50W0VGb3JtaW9LZXkuVElUTEVfUEFORUxdID0gdGl0bGVQYW5lbDtcclxuXHRcdFx0XHRcdFx0Ly8gYWRkIGNvbXBvbmVudCB0byB0aGUgcmVzdWx0XHJcblx0XHRcdFx0XHRcdHJlc3VsdC5wdXNoKGNvbXBvbmVudCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcmVzdWx0O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ3JlYXRlIDIgamFzb24gb2JqZWN0cyBvZiBkYXRhIGZvcm0gYnkgY29tcG9uZW50IGtleSBhbmQgb3RoZXIgYnkgY29tcG9uZW50IGtleSBhbmQgdGl0bGUgZm9ybSBrZXlcclxuXHQgKiBAcGFyYW0gZGF0YUZvcm0gZGF0YUZvcm0gbW9kZWwgb2JqZWN0XHJcblx0ICogQHJldHVybnMgT2JqZWN0IG9mIDIgZWxlbWVudFxyXG5cdCAqL1xyXG5cdHN0YXRpYyBjcmVhdGVMaXN0RGF0YUJ5RGF0YUZvcm1MaXN0KGRhdGFGb3JtOiBhbnksIGxpc3RGb3JtOiBhbnlbXSk6IGFueSB7XHJcblx0XHRsZXQgbGlzdERhdGE6IGFueSA9IHt9O1xyXG5cdFx0bGV0IGxpc3REYXRhQnlGb3JtOiBhbnkgPSB7fTtcclxuXHRcdGlmIChkYXRhRm9ybSAmJiBkYXRhRm9ybS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdGxpc3REYXRhID0ge307XHJcblx0XHRcdGxpc3REYXRhQnlGb3JtID0ge307XHJcblx0XHRcdGxldCBkRm9ybTogYW55O1xyXG5cdFx0XHRmb3IgKGRGb3JtIG9mIGRhdGFGb3JtKSB7XHJcblx0XHRcdFx0aWYgKCFkRm9ybS5kYXRhKSB7XHJcblx0XHRcdFx0XHRjb250aW51ZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Y29uc3QgZm9ybSA9IGxpc3RGb3JtLmZpbmQoZnVuY3Rpb24gKGZvcm1UbXApIHtcclxuXHRcdFx0XHRcdHJldHVybiBmb3JtVG1wLmlkID09IGRGb3JtLmZvcm1JZDtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHRpZiAoIWZvcm0pIHtcclxuXHRcdFx0XHRcdC8vY29uc29sZS5lcnJvcignTm8gc2UgZW5jb250csOzIGVsIGZvcm11bGFyaW8gY29uIGlkICcgKyBkRm9ybS5mb3JtSWQpO1xyXG5cdFx0XHRcdFx0Y29udGludWU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGNvbnN0IGtleUZvcm1UaXRsZSA9IFRva2VuU2VydmljZS5nZXRLZXlGb3JtdWxhcmlvKGZvcm0udGl0bGUpICsgJ18nO1xyXG5cdFx0XHRcdGZvciAoY29uc3Qga2V5IGluIGRGb3JtLmRhdGEpIHtcclxuXHRcdFx0XHRcdGxpc3REYXRhW2tleV0gPSBkRm9ybS5kYXRhW2tleV07XHJcblx0XHRcdFx0XHRsaXN0RGF0YUJ5Rm9ybVtrZXlGb3JtVGl0bGUgKyBrZXldID0gZEZvcm0uZGF0YVtrZXldO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0bGlzdERhdGE6IGxpc3REYXRhLFxyXG5cdFx0XHRsaXN0RGF0YUJ5Rm9ybTogbGlzdERhdGFCeUZvcm1cclxuXHRcdH07XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJdCByZXR1cm5zIHRoZSBjb21wb25lbnRzXHJcblx0ICogQHBhcmFtIGNvbXBvbmVudHNcclxuXHQgKi9cclxuXHRzdGF0aWMgZ2V0UGFuZWxDb21wb25lbnRzKGNvbXBvbmVudHM6IGFueVtdKTogYW55W10ge1xyXG5cdFx0cmV0dXJuIEZvcm1pb1V0aWwuZ2V0Q29tcG9uZW50c0J5UGFuZWwoY29tcG9uZW50cyk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJdCByZXR1cm5zIHRoZSBjb21wb25lbnRzIGFycmF5IG9mIHRoZSBmb3JtXHJcblx0ICogQHBhcmFtIGNvbXBvbmVudHMgYXJyYXkgb2YgY29tcG9uZW50c1xyXG5cdCAqL1xyXG5cdHByaXZhdGUgc3RhdGljIGdldENvbXBvbmVudHNCeVBhbmVsKGNvbXBvbmVudHM6IGFueVtdKTogYW55W10ge1xyXG5cdFx0Ly8gaXQgY29udGFpbnMgdGhlIHJlc3VsdCBhcnJheVxyXG5cdFx0bGV0IHJlc3VsdCA9IFtdO1xyXG5cdFx0aWYgKGNvbXBvbmVudHMpIHtcclxuXHRcdFx0Ly8gaXRlcmF0ZSBvdmVyIGNvbXBvbmVudHNcclxuXHRcdFx0Zm9yIChjb25zdCBjb21wb25lbnQgb2YgY29tcG9uZW50cykge1xyXG5cdFx0XHRcdC8vIGF2b2lkIHRoZSBlZGl0Z3JpZCBjb21wb25lbnQgb3QgaWYgaXQgaGFzIGEgZGlmZmVyZW50IGJlaGF2aW9yIGl0IHNob3VsZCBoYXZlIGFuIGVsc2Ugc3RhdGVtZW50XHJcblx0XHRcdFx0aWYgKGNvbXBvbmVudFtFRm9ybWlvS2V5LlRZUEVdICE9PSBFRm9ybWlvS2V5LkVESVRHUklEKSB7XHJcblx0XHRcdFx0XHQvLyBpZiBjb21wb25lbnQgaXMgcGFuZWwgdGhlbiB0aXRsZVBhbmVsIHZhcmlhYmxlIGlzIGNoYW5nZWQsIGFuZCBpdCBpcyBnb25uYSBiZSBpbmhlcml0ZWRcclxuXHRcdFx0XHRcdGlmIChjb21wb25lbnRbRUZvcm1pb0tleS5UWVBFXSA9PT0gRUZvcm1pb0tleS5QQU5FTCkge1xyXG5cdFx0XHRcdFx0XHRyZXN1bHQucHVzaChjb21wb25lbnQpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHJlc3VsdDtcclxuXHR9XHJcbn1cclxuIl19
@@ -2,9 +2,9 @@
2
2
  /* tslint:disable */
3
3
  export const VERSION = {
4
4
  "dirty": true,
5
- "raw": "v0.0.18-2466-g0160c36d-dirty",
6
- "hash": "g0160c36d",
7
- "distance": 2466,
5
+ "raw": "v0.0.18-2471-g53ea7921-dirty",
6
+ "hash": "g53ea7921",
7
+ "distance": 2471,
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": "2466-g0160c36d-dirty",
24
- "semverString": "0.0.18+2466.g0160c36d",
25
- "version": "0.0.1902",
26
- "buildTimestamp": "2024-05-14T19:41:20.046Z"
23
+ "suffix": "2471-g53ea7921-dirty",
24
+ "semverString": "0.0.18+2471.g53ea7921",
25
+ "version": "0.0.1904",
26
+ "buildTimestamp": "2024-05-23T21:11:45.197Z"
27
27
  };
28
28
  /* tslint:enable */
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nLXBsaS1jb21tb25zL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJFQUEyRTtBQUMzRSxvQkFBb0I7QUFDcEIsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHO0lBQ25CLE9BQU8sRUFBRSxJQUFJO0lBQ2IsS0FBSyxFQUFFLDhCQUE4QjtJQUNyQyxNQUFNLEVBQUUsV0FBVztJQUNuQixVQUFVLEVBQUUsSUFBSTtJQUNoQixLQUFLLEVBQUUsU0FBUztJQUNoQixRQUFRLEVBQUU7UUFDTixTQUFTLEVBQUU7WUFDUCxPQUFPLEVBQUUsS0FBSztZQUNkLG1CQUFtQixFQUFFLEtBQUs7U0FDN0I7UUFDRCxPQUFPLEVBQUUsS0FBSztRQUNkLEtBQUssRUFBRSxTQUFTO1FBQ2hCLE9BQU8sRUFBRSxDQUFDO1FBQ1YsT0FBTyxFQUFFLENBQUM7UUFDVixPQUFPLEVBQUUsRUFBRTtRQUNYLFlBQVksRUFBRSxFQUFFO1FBQ2hCLE9BQU8sRUFBRSxFQUFFO1FBQ1gsU0FBUyxFQUFFLFFBQVE7S0FDdEI7SUFDRCxRQUFRLEVBQUUsc0JBQXNCO0lBQ2hDLGNBQWMsRUFBRSx1QkFBdUI7SUFDdkMsU0FBUyxFQUFFLFVBQVU7SUFDckIsZ0JBQWdCLEVBQUUsMEJBQTBCO0NBQy9DLENBQUM7QUFDRixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJTVBPUlRBTlQ6IFRISVMgRklMRSBJUyBBVVRPIEdFTkVSQVRFRCEgRE8gTk9UIE1BTlVBTExZIEVESVQgT1IgQ0hFQ0tJTiFcbi8qIHRzbGludDpkaXNhYmxlICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IHtcbiAgICBcImRpcnR5XCI6IHRydWUsXG4gICAgXCJyYXdcIjogXCJ2MC4wLjE4LTI0NjYtZzAxNjBjMzZkLWRpcnR5XCIsXG4gICAgXCJoYXNoXCI6IFwiZzAxNjBjMzZkXCIsXG4gICAgXCJkaXN0YW5jZVwiOiAyNDY2LFxuICAgIFwidGFnXCI6IFwidjAuMC4xOFwiLFxuICAgIFwic2VtdmVyXCI6IHtcbiAgICAgICAgXCJvcHRpb25zXCI6IHtcbiAgICAgICAgICAgIFwibG9vc2VcIjogZmFsc2UsXG4gICAgICAgICAgICBcImluY2x1ZGVQcmVyZWxlYXNlXCI6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwibG9vc2VcIjogZmFsc2UsXG4gICAgICAgIFwicmF3XCI6IFwidjAuMC4xOFwiLFxuICAgICAgICBcIm1ham9yXCI6IDAsXG4gICAgICAgIFwibWlub3JcIjogMCxcbiAgICAgICAgXCJwYXRjaFwiOiAxOCxcbiAgICAgICAgXCJwcmVyZWxlYXNlXCI6IFtdLFxuICAgICAgICBcImJ1aWxkXCI6IFtdLFxuICAgICAgICBcInZlcnNpb25cIjogXCIwLjAuMThcIlxuICAgIH0sXG4gICAgXCJzdWZmaXhcIjogXCIyNDY2LWcwMTYwYzM2ZC1kaXJ0eVwiLFxuICAgIFwic2VtdmVyU3RyaW5nXCI6IFwiMC4wLjE4KzI0NjYuZzAxNjBjMzZkXCIsXG4gICAgXCJ2ZXJzaW9uXCI6IFwiMC4wLjE5MDJcIixcbiAgICBcImJ1aWxkVGltZXN0YW1wXCI6IFwiMjAyNC0wNS0xNFQxOTo0MToyMC4wNDZaXCJcbn07XG4vKiB0c2xpbnQ6ZW5hYmxlICovXG4iXX0=
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nLXBsaS1jb21tb25zL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJFQUEyRTtBQUMzRSxvQkFBb0I7QUFDcEIsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHO0lBQ25CLE9BQU8sRUFBRSxJQUFJO0lBQ2IsS0FBSyxFQUFFLDhCQUE4QjtJQUNyQyxNQUFNLEVBQUUsV0FBVztJQUNuQixVQUFVLEVBQUUsSUFBSTtJQUNoQixLQUFLLEVBQUUsU0FBUztJQUNoQixRQUFRLEVBQUU7UUFDTixTQUFTLEVBQUU7WUFDUCxPQUFPLEVBQUUsS0FBSztZQUNkLG1CQUFtQixFQUFFLEtBQUs7U0FDN0I7UUFDRCxPQUFPLEVBQUUsS0FBSztRQUNkLEtBQUssRUFBRSxTQUFTO1FBQ2hCLE9BQU8sRUFBRSxDQUFDO1FBQ1YsT0FBTyxFQUFFLENBQUM7UUFDVixPQUFPLEVBQUUsRUFBRTtRQUNYLFlBQVksRUFBRSxFQUFFO1FBQ2hCLE9BQU8sRUFBRSxFQUFFO1FBQ1gsU0FBUyxFQUFFLFFBQVE7S0FDdEI7SUFDRCxRQUFRLEVBQUUsc0JBQXNCO0lBQ2hDLGNBQWMsRUFBRSx1QkFBdUI7SUFDdkMsU0FBUyxFQUFFLFVBQVU7SUFDckIsZ0JBQWdCLEVBQUUsMEJBQTBCO0NBQy9DLENBQUM7QUFDRixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJTVBPUlRBTlQ6IFRISVMgRklMRSBJUyBBVVRPIEdFTkVSQVRFRCEgRE8gTk9UIE1BTlVBTExZIEVESVQgT1IgQ0hFQ0tJTiFcbi8qIHRzbGludDpkaXNhYmxlICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IHtcbiAgICBcImRpcnR5XCI6IHRydWUsXG4gICAgXCJyYXdcIjogXCJ2MC4wLjE4LTI0NzEtZzUzZWE3OTIxLWRpcnR5XCIsXG4gICAgXCJoYXNoXCI6IFwiZzUzZWE3OTIxXCIsXG4gICAgXCJkaXN0YW5jZVwiOiAyNDcxLFxuICAgIFwidGFnXCI6IFwidjAuMC4xOFwiLFxuICAgIFwic2VtdmVyXCI6IHtcbiAgICAgICAgXCJvcHRpb25zXCI6IHtcbiAgICAgICAgICAgIFwibG9vc2VcIjogZmFsc2UsXG4gICAgICAgICAgICBcImluY2x1ZGVQcmVyZWxlYXNlXCI6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwibG9vc2VcIjogZmFsc2UsXG4gICAgICAgIFwicmF3XCI6IFwidjAuMC4xOFwiLFxuICAgICAgICBcIm1ham9yXCI6IDAsXG4gICAgICAgIFwibWlub3JcIjogMCxcbiAgICAgICAgXCJwYXRjaFwiOiAxOCxcbiAgICAgICAgXCJwcmVyZWxlYXNlXCI6IFtdLFxuICAgICAgICBcImJ1aWxkXCI6IFtdLFxuICAgICAgICBcInZlcnNpb25cIjogXCIwLjAuMThcIlxuICAgIH0sXG4gICAgXCJzdWZmaXhcIjogXCIyNDcxLWc1M2VhNzkyMS1kaXJ0eVwiLFxuICAgIFwic2VtdmVyU3RyaW5nXCI6IFwiMC4wLjE4KzI0NzEuZzUzZWE3OTIxXCIsXG4gICAgXCJ2ZXJzaW9uXCI6IFwiMC4wLjE5MDRcIixcbiAgICBcImJ1aWxkVGltZXN0YW1wXCI6IFwiMjAyNC0wNS0yM1QyMToxMTo0NS4xOTdaXCJcbn07XG4vKiB0c2xpbnQ6ZW5hYmxlICovXG4iXX0=
@@ -595,31 +595,6 @@ class AuthenticationService {
595
595
  });
596
596
  }
597
597
  getLink(patCodigo) {
598
- return __awaiter(this, void 0, void 0, function* () {
599
- let loginMultiUrl = '';
600
- let registerForm = 'registro-multiaplicacion/create/' + patCodigo;
601
- const loginUrl = new URL(this.environment.host.frontend.frontoffice + registerForm);
602
- try {
603
- loginMultiUrl = loginUrl.href;
604
- }
605
- catch (error) { }
606
- return loginMultiUrl;
607
- });
608
- }
609
- getLinkMono(promCodigo) {
610
- return __awaiter(this, void 0, void 0, function* () {
611
- // https://dev.colfuturo.org/plic/frontoffice/term/362/-1
612
- let loginMultiUrl = '';
613
- let termsLink = 'term/' + promCodigo + '/-1';
614
- const loginUrl = new URL(this.environment.host.frontend.frontoffice + termsLink);
615
- try {
616
- loginMultiUrl = loginUrl.href;
617
- }
618
- catch (error) { }
619
- return loginMultiUrl;
620
- });
621
- }
622
- getLinkOld(patCodigo) {
623
598
  return __awaiter(this, void 0, void 0, function* () {
624
599
  let logoutUrl = '';
625
600
  const loginUrl = new URL(this.environment.host.frontend.login);
@@ -1338,7 +1313,7 @@ class FormioUtil {
1338
1313
  !Object.prototype.hasOwnProperty.call(data[key], 'callingCodes') &&
1339
1314
  !Object.prototype.hasOwnProperty.call(data[key], 'nativeName') &&
1340
1315
  !Object.prototype.hasOwnProperty.call(data[key], 'original_name') &&
1341
- !Object.prototype.hasOwnProperty.call(data[key], 'fullname') &&
1316
+ !Object.prototype.hasOwnProperty.call(data[key], 'fullName') &&
1342
1317
  FormioUtil.getSelectBoxes(data[key])) {
1343
1318
  // remove item from array
1344
1319
  array.splice(i, 1);
@@ -1349,7 +1324,7 @@ class FormioUtil {
1349
1324
  !Object.prototype.hasOwnProperty.call(data[key], 'callingCodes') &&
1350
1325
  !Object.prototype.hasOwnProperty.call(data[key], 'nativeName') &&
1351
1326
  !Object.prototype.hasOwnProperty.call(data[key], 'original_name') &&
1352
- !Object.prototype.hasOwnProperty.call(data[key], 'fullname') &&
1327
+ !Object.prototype.hasOwnProperty.call(data[key], 'fullName') &&
1353
1328
  !FormioUtil.getSelectBoxes(data[key])) {
1354
1329
  }
1355
1330
  else if (data[key] != undefined && data[key] != null && data[key] != '') {
@@ -16504,9 +16479,9 @@ class CustomValidator {
16504
16479
  /* tslint:disable */
16505
16480
  const VERSION = {
16506
16481
  "dirty": true,
16507
- "raw": "v0.0.18-2466-g0160c36d-dirty",
16508
- "hash": "g0160c36d",
16509
- "distance": 2466,
16482
+ "raw": "v0.0.18-2471-g53ea7921-dirty",
16483
+ "hash": "g53ea7921",
16484
+ "distance": 2471,
16510
16485
  "tag": "v0.0.18",
16511
16486
  "semver": {
16512
16487
  "options": {
@@ -16522,10 +16497,10 @@ const VERSION = {
16522
16497
  "build": [],
16523
16498
  "version": "0.0.18"
16524
16499
  },
16525
- "suffix": "2466-g0160c36d-dirty",
16526
- "semverString": "0.0.18+2466.g0160c36d",
16527
- "version": "0.0.1902",
16528
- "buildTimestamp": "2024-05-14T19:41:20.046Z"
16500
+ "suffix": "2471-g53ea7921-dirty",
16501
+ "semverString": "0.0.18+2471.g53ea7921",
16502
+ "version": "0.0.1904",
16503
+ "buildTimestamp": "2024-05-23T21:11:45.197Z"
16529
16504
  };
16530
16505
  /* tslint:enable */
16531
16506