parse-server 7.4.0-alpha.1 → 7.4.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -11,7 +11,7 @@
11
11
 
12
12
  [![Node Version](https://img.shields.io/badge/nodejs-18,_20,_22-green.svg?logo=node.js&style=flat)](https://nodejs.org)
13
13
  [![MongoDB Version](https://img.shields.io/badge/mongodb-4.2,_4.4,_5,_6,_7,_8-green.svg?logo=mongodb&style=flat)](https://www.mongodb.com)
14
- [![Postgres Version](https://img.shields.io/badge/postgresql-13,_14,_15,_16-green.svg?logo=postgresql&style=flat)](https://www.postgresql.org)
14
+ [![Postgres Version](https://img.shields.io/badge/postgresql-13,_14,_15,_16,_17-green.svg?logo=postgresql&style=flat)](https://www.postgresql.org)
15
15
 
16
16
  [![npm latest version](https://img.shields.io/npm/v/parse-server/latest.svg)](https://www.npmjs.com/package/parse-server)
17
17
  [![npm beta version](https://img.shields.io/npm/v/parse-server/beta.svg)](https://www.npmjs.com/package/parse-server)
@@ -152,10 +152,11 @@ Parse Server is continuously tested with the most recent releases of PostgreSQL
152
152
 
153
153
  | Version | PostGIS Version | End-of-Life | Parse Server Support | Compatible |
154
154
  |-------------|--------------------|---------------|----------------------|------------|
155
- | Postgres 13 | 3.1, 3.2, 3.3, 3.4 | November 2025 | <= 6.x (2023) | ✅ Yes |
156
- | Postgres 14 | 3.4 | November 2026 | <= 7.x (2024) | ✅ Yes |
157
- | Postgres 15 | 3.4 | November 2027 | <= 8.x (2025) | ✅ Yes |
158
- | Postgres 16 | 3.4 | November 2028 | <= 9.x (2026) | ✅ Yes |
155
+ | Postgres 13 | 3.1, 3.2, 3.3, 3.4, 3.5 | November 2025 | <= 6.x (2023) | ✅ Yes |
156
+ | Postgres 14 | 3.5 | November 2026 | <= 7.x (2024) | ✅ Yes |
157
+ | Postgres 15 | 3.5 | November 2027 | <= 8.x (2025) | ✅ Yes |
158
+ | Postgres 16 | 3.5 | November 2028 | <= 9.x (2026) | ✅ Yes |
159
+ | Postgres 17 | 3.5 | November 2029 | <= 9.x (2026) | ✅ Yes |
159
160
 
160
161
  ### Locally
161
162
 
@@ -106,7 +106,9 @@ OAuth.version = '1.0';
106
106
  OAuth.nonce = function () {
107
107
  var text = '';
108
108
  var possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
109
- for (var i = 0; i < 30; i++) text += possible.charAt(Math.floor(Math.random() * possible.length));
109
+ for (var i = 0; i < 30; i++) {
110
+ text += possible.charAt(Math.floor(Math.random() * possible.length));
111
+ }
110
112
  return text;
111
113
  };
112
114
  OAuth.buildParameterString = function (obj) {
@@ -199,4 +201,4 @@ OAuth.signRequest = function (request, oauth_parameters, consumer_secret, auth_t
199
201
  return request;
200
202
  };
201
203
  module.exports = OAuth;
202
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJodHRwcyIsInJlcXVpcmUiLCJjcnlwdG8iLCJQYXJzZSIsIk9BdXRoIiwib3B0aW9ucyIsIkVycm9yIiwiSU5URVJOQUxfU0VSVkVSX0VSUk9SIiwiY29uc3VtZXJfa2V5IiwiY29uc3VtZXJfc2VjcmV0IiwiYXV0aF90b2tlbiIsImF1dGhfdG9rZW5fc2VjcmV0IiwiaG9zdCIsIm9hdXRoX3BhcmFtcyIsInByb3RvdHlwZSIsInNlbmQiLCJtZXRob2QiLCJwYXRoIiwicGFyYW1zIiwiYm9keSIsInJlcXVlc3QiLCJidWlsZFJlcXVlc3QiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImh0dHBSZXF1ZXN0IiwicmVzIiwiZGF0YSIsIm9uIiwiY2h1bmsiLCJKU09OIiwicGFyc2UiLCJ3cml0ZSIsImVuZCIsImluZGV4T2YiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiYnVpbGRQYXJhbWV0ZXJTdHJpbmciLCJ0b1VwcGVyQ2FzZSIsIm9hdXRoX2NvbnN1bWVyX2tleSIsInNpZ25SZXF1ZXN0IiwiZ2V0IiwicG9zdCIsImVuY29kZSIsInN0ciIsInRvU3RyaW5nIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwicmVwbGFjZSIsInNpZ25hdHVyZU1ldGhvZCIsInZlcnNpb24iLCJub25jZSIsInRleHQiLCJwb3NzaWJsZSIsImkiLCJjaGFyQXQiLCJNYXRoIiwiZmxvb3IiLCJyYW5kb20iLCJvYmoiLCJzb3J0IiwibWFwIiwia2V5Iiwiam9pbiIsImJ1aWxkU2lnbmF0dXJlU3RyaW5nIiwidXJsIiwicGFyYW1ldGVycyIsInNpZ25hdHVyZSIsImNyZWF0ZUhtYWMiLCJ1cGRhdGUiLCJkaWdlc3QiLCJvYXV0aF9wYXJhbWV0ZXJzIiwib2F1dGhfbm9uY2UiLCJvYXV0aF90aW1lc3RhbXAiLCJEYXRlIiwiZ2V0VGltZSIsIm9hdXRoX3NpZ25hdHVyZV9tZXRob2QiLCJvYXV0aF92ZXJzaW9uIiwic2lnbmF0dXJlUGFyYW1zIiwicGFyYW1ldGVyc1RvTWVyZ2UiLCJrIiwicGFyYW1ldGVyU3RyaW5nIiwic2lnbmF0dXJlU3RyaW5nIiwic2lnbmF0dXJlS2V5Iiwib2F1dGhfc2lnbmF0dXJlIiwiaGVhZGVycyIsImF1dGhIZWFkZXIiLCJ2YWx1ZSIsIkF1dGhvcml6YXRpb24iLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0FkYXB0ZXJzL0F1dGgvT0F1dGgxQ2xpZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBodHRwcyA9IHJlcXVpcmUoJ2h0dHBzJyksXG4gIGNyeXB0byA9IHJlcXVpcmUoJ2NyeXB0bycpO1xudmFyIFBhcnNlID0gcmVxdWlyZSgncGFyc2Uvbm9kZScpLlBhcnNlO1xuXG52YXIgT0F1dGggPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5URVJOQUxfU0VSVkVSX0VSUk9SLCAnTm8gb3B0aW9ucyBwYXNzZWQgdG8gT0F1dGgnKTtcbiAgfVxuICB0aGlzLmNvbnN1bWVyX2tleSA9IG9wdGlvbnMuY29uc3VtZXJfa2V5O1xuICB0aGlzLmNvbnN1bWVyX3NlY3JldCA9IG9wdGlvbnMuY29uc3VtZXJfc2VjcmV0O1xuICB0aGlzLmF1dGhfdG9rZW4gPSBvcHRpb25zLmF1dGhfdG9rZW47XG4gIHRoaXMuYXV0aF90b2tlbl9zZWNyZXQgPSBvcHRpb25zLmF1dGhfdG9rZW5fc2VjcmV0O1xuICB0aGlzLmhvc3QgPSBvcHRpb25zLmhvc3Q7XG4gIHRoaXMub2F1dGhfcGFyYW1zID0gb3B0aW9ucy5vYXV0aF9wYXJhbXMgfHwge307XG59O1xuXG5PQXV0aC5wcm90b3R5cGUuc2VuZCA9IGZ1bmN0aW9uIChtZXRob2QsIHBhdGgsIHBhcmFtcywgYm9keSkge1xuICB2YXIgcmVxdWVzdCA9IHRoaXMuYnVpbGRSZXF1ZXN0KG1ldGhvZCwgcGF0aCwgcGFyYW1zLCBib2R5KTtcbiAgLy8gRW5jb2RlIHRoZSBib2R5IHByb3Blcmx5LCB0aGUgY3VycmVudCBQYXJzZSBJbXBsZW1lbnRhdGlvbiBkb24ndCBkbyBpdCBwcm9wZXJseVxuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHZhciBodHRwUmVxdWVzdCA9IGh0dHBzXG4gICAgICAucmVxdWVzdChyZXF1ZXN0LCBmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgIHZhciBkYXRhID0gJyc7XG4gICAgICAgIHJlcy5vbignZGF0YScsIGZ1bmN0aW9uIChjaHVuaykge1xuICAgICAgICAgIGRhdGEgKz0gY2h1bms7XG4gICAgICAgIH0pO1xuICAgICAgICByZXMub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBkYXRhID0gSlNPTi5wYXJzZShkYXRhKTtcbiAgICAgICAgICByZXNvbHZlKGRhdGEpO1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgICAub24oJ2Vycm9yJywgZnVuY3Rpb24gKCkge1xuICAgICAgICByZWplY3QoJ0ZhaWxlZCB0byBtYWtlIGFuIE9BdXRoIHJlcXVlc3QnKTtcbiAgICAgIH0pO1xuICAgIGlmIChyZXF1ZXN0LmJvZHkpIHtcbiAgICAgIGh0dHBSZXF1ZXN0LndyaXRlKHJlcXVlc3QuYm9keSk7XG4gICAgfVxuICAgIGh0dHBSZXF1ZXN0LmVuZCgpO1xuICB9KTtcbn07XG5cbk9BdXRoLnByb3RvdHlwZS5idWlsZFJlcXVlc3QgPSBmdW5jdGlvbiAobWV0aG9kLCBwYXRoLCBwYXJhbXMsIGJvZHkpIHtcbiAgaWYgKHBhdGguaW5kZXhPZignLycpICE9IDApIHtcbiAgICBwYXRoID0gJy8nICsgcGF0aDtcbiAgfVxuICBpZiAocGFyYW1zICYmIE9iamVjdC5rZXlzKHBhcmFtcykubGVuZ3RoID4gMCkge1xuICAgIHBhdGggKz0gJz8nICsgT0F1dGguYnVpbGRQYXJhbWV0ZXJTdHJpbmcocGFyYW1zKTtcbiAgfVxuXG4gIHZhciByZXF1ZXN0ID0ge1xuICAgIGhvc3Q6IHRoaXMuaG9zdCxcbiAgICBwYXRoOiBwYXRoLFxuICAgIG1ldGhvZDogbWV0aG9kLnRvVXBwZXJDYXNlKCksXG4gIH07XG5cbiAgdmFyIG9hdXRoX3BhcmFtcyA9IHRoaXMub2F1dGhfcGFyYW1zIHx8IHt9O1xuICBvYXV0aF9wYXJhbXMub2F1dGhfY29uc3VtZXJfa2V5ID0gdGhpcy5jb25zdW1lcl9rZXk7XG4gIGlmICh0aGlzLmF1dGhfdG9rZW4pIHtcbiAgICBvYXV0aF9wYXJhbXNbJ29hdXRoX3Rva2VuJ10gPSB0aGlzLmF1dGhfdG9rZW47XG4gIH1cblxuICByZXF1ZXN0ID0gT0F1dGguc2lnblJlcXVlc3QocmVxdWVzdCwgb2F1dGhfcGFyYW1zLCB0aGlzLmNvbnN1bWVyX3NlY3JldCwgdGhpcy5hdXRoX3Rva2VuX3NlY3JldCk7XG5cbiAgaWYgKGJvZHkgJiYgT2JqZWN0LmtleXMoYm9keSkubGVuZ3RoID4gMCkge1xuICAgIHJlcXVlc3QuYm9keSA9IE9BdXRoLmJ1aWxkUGFyYW1ldGVyU3RyaW5nKGJvZHkpO1xuICB9XG4gIHJldHVybiByZXF1ZXN0O1xufTtcblxuT0F1dGgucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChwYXRoLCBwYXJhbXMpIHtcbiAgcmV0dXJuIHRoaXMuc2VuZCgnR0VUJywgcGF0aCwgcGFyYW1zKTtcbn07XG5cbk9BdXRoLnByb3RvdHlwZS5wb3N0ID0gZnVuY3Rpb24gKHBhdGgsIHBhcmFtcywgYm9keSkge1xuICByZXR1cm4gdGhpcy5zZW5kKCdQT1NUJywgcGF0aCwgcGFyYW1zLCBib2R5KTtcbn07XG5cbi8qXG5cdFByb3BlciBzdHJpbmcgJWVzY2FwZSBlbmNvZGluZ1xuKi9cbk9BdXRoLmVuY29kZSA9IGZ1bmN0aW9uIChzdHIpIHtcbiAgLy8gICAgICAgZGlzY3VzcyBhdDogaHR0cDovL3BocGpzLm9yZy9mdW5jdGlvbnMvcmF3dXJsZW5jb2RlL1xuICAvLyAgICAgIG9yaWdpbmFsIGJ5OiBCcmV0dCBaYW1pciAoaHR0cDovL2JyZXR0LXphbWlyLm1lKVxuICAvLyAgICAgICAgIGlucHV0IGJ5OiB0cmF2Y1xuICAvLyAgICAgICAgIGlucHV0IGJ5OiBCcmV0dCBaYW1pciAoaHR0cDovL2JyZXR0LXphbWlyLm1lKVxuICAvLyAgICAgICAgIGlucHV0IGJ5OiBNaWNoYWVsIEdyaWVyXG4gIC8vICAgICAgICAgaW5wdXQgYnk6IFJhdGhlb3VzXG4gIC8vICAgICAgYnVnZml4ZWQgYnk6IEtldmluIHZhbiBab25uZXZlbGQgKGh0dHA6Ly9rZXZpbi52YW56b25uZXZlbGQubmV0KVxuICAvLyAgICAgIGJ1Z2ZpeGVkIGJ5OiBCcmV0dCBaYW1pciAoaHR0cDovL2JyZXR0LXphbWlyLm1lKVxuICAvLyAgICAgIGJ1Z2ZpeGVkIGJ5OiBKb3Jpc1xuICAvLyByZWltcGxlbWVudGVkIGJ5OiBCcmV0dCBaYW1pciAoaHR0cDovL2JyZXR0LXphbWlyLm1lKVxuICAvLyByZWltcGxlbWVudGVkIGJ5OiBCcmV0dCBaYW1pciAoaHR0cDovL2JyZXR0LXphbWlyLm1lKVxuICAvLyAgICAgICAgICAgICBub3RlOiBUaGlzIHJlZmxlY3RzIFBIUCA1LjMvNi4wKyBiZWhhdmlvclxuICAvLyAgICAgICAgICAgICBub3RlOiBQbGVhc2UgYmUgYXdhcmUgdGhhdCB0aGlzIGZ1bmN0aW9uIGV4cGVjdHMgdG8gZW5jb2RlIGludG8gVVRGLTggZW5jb2RlZCBzdHJpbmdzLCBhcyBmb3VuZCBvblxuICAvLyAgICAgICAgICAgICBub3RlOiBwYWdlcyBzZXJ2ZWQgYXMgVVRGLThcbiAgLy8gICAgICAgIGV4YW1wbGUgMTogcmF3dXJsZW5jb2RlKCdLZXZpbiB2YW4gWm9ubmV2ZWxkIScpO1xuICAvLyAgICAgICAgcmV0dXJucyAxOiAnS2V2aW4lMjB2YW4lMjBab25uZXZlbGQlMjEnXG4gIC8vICAgICAgICBleGFtcGxlIDI6IHJhd3VybGVuY29kZSgnaHR0cDovL2tldmluLnZhbnpvbm5ldmVsZC5uZXQvJyk7XG4gIC8vICAgICAgICByZXR1cm5zIDI6ICdodHRwJTNBJTJGJTJGa2V2aW4udmFuem9ubmV2ZWxkLm5ldCUyRidcbiAgLy8gICAgICAgIGV4YW1wbGUgMzogcmF3dXJsZW5jb2RlKCdodHRwOi8vd3d3Lmdvb2dsZS5ubC9zZWFyY2g/cT1waHAuanMmaWU9dXRmLTgmb2U9dXRmLTgmYXE9dCZybHM9Y29tLnVidW50dTplbi1VUzp1bm9mZmljaWFsJmNsaWVudD1maXJlZm94LWEnKTtcbiAgLy8gICAgICAgIHJldHVybnMgMzogJ2h0dHAlM0ElMkYlMkZ3d3cuZ29vZ2xlLm5sJTJGc2VhcmNoJTNGcSUzRHBocC5qcyUyNmllJTNEdXRmLTglMjZvZSUzRHV0Zi04JTI2YXElM0R0JTI2cmxzJTNEY29tLnVidW50dSUzQWVuLVVTJTNBdW5vZmZpY2lhbCUyNmNsaWVudCUzRGZpcmVmb3gtYSdcblxuICBzdHIgPSAoc3RyICsgJycpLnRvU3RyaW5nKCk7XG5cbiAgLy8gVGlsZGUgc2hvdWxkIGJlIGFsbG93ZWQgdW5lc2NhcGVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZiBQSFAgKGFzIHJlZmxlY3RlZCBiZWxvdyksIGJ1dCBpZiB5b3Ugd2FudCB0byByZWZsZWN0IGN1cnJlbnRcbiAgLy8gUEhQIGJlaGF2aW9yLCB5b3Ugd291bGQgbmVlZCB0byBhZGQgXCIucmVwbGFjZSgvfi9nLCAnJTdFJyk7XCIgdG8gdGhlIGZvbGxvd2luZy5cbiAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChzdHIpXG4gICAgLnJlcGxhY2UoLyEvZywgJyUyMScpXG4gICAgLnJlcGxhY2UoLycvZywgJyUyNycpXG4gICAgLnJlcGxhY2UoL1xcKC9nLCAnJTI4JylcbiAgICAucmVwbGFjZSgvXFwpL2csICclMjknKVxuICAgIC5yZXBsYWNlKC9cXCovZywgJyUyQScpO1xufTtcblxuT0F1dGguc2lnbmF0dXJlTWV0aG9kID0gJ0hNQUMtU0hBMSc7XG5PQXV0aC52ZXJzaW9uID0gJzEuMCc7XG5cbi8qXG5cdEdlbmVyYXRlIGEgbm9uY2VcbiovXG5PQXV0aC5ub25jZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRleHQgPSAnJztcbiAgdmFyIHBvc3NpYmxlID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5JztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDMwOyBpKyspIHRleHQgKz0gcG9zc2libGUuY2hhckF0KE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIHBvc3NpYmxlLmxlbmd0aCkpO1xuXG4gIHJldHVybiB0ZXh0O1xufTtcblxuT0F1dGguYnVpbGRQYXJhbWV0ZXJTdHJpbmcgPSBmdW5jdGlvbiAob2JqKSB7XG4gIC8vIFNvcnQga2V5cyBhbmQgZW5jb2RlIHZhbHVlc1xuICBpZiAob2JqKSB7XG4gICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopLnNvcnQoKTtcblxuICAgIC8vIE1hcCBrZXk9dmFsdWUsIGpvaW4gdGhlbSBieSAmXG4gICAgcmV0dXJuIGtleXNcbiAgICAgIC5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICByZXR1cm4ga2V5ICsgJz0nICsgT0F1dGguZW5jb2RlKG9ialtrZXldKTtcbiAgICAgIH0pXG4gICAgICAuam9pbignJicpO1xuICB9XG5cbiAgcmV0dXJuICcnO1xufTtcblxuLypcblx0QnVpbGQgdGhlIHNpZ25hdHVyZSBzdHJpbmcgZnJvbSB0aGUgb2JqZWN0XG4qL1xuXG5PQXV0aC5idWlsZFNpZ25hdHVyZVN0cmluZyA9IGZ1bmN0aW9uIChtZXRob2QsIHVybCwgcGFyYW1ldGVycykge1xuICByZXR1cm4gW21ldGhvZC50b1VwcGVyQ2FzZSgpLCBPQXV0aC5lbmNvZGUodXJsKSwgT0F1dGguZW5jb2RlKHBhcmFtZXRlcnMpXS5qb2luKCcmJyk7XG59O1xuXG4vKlxuXHRSZXR1bnMgZW5jb2RlZCBITUFDLVNIQTEgZnJvbSBrZXkgYW5kIHRleHRcbiovXG5PQXV0aC5zaWduYXR1cmUgPSBmdW5jdGlvbiAodGV4dCwga2V5KSB7XG4gIGNyeXB0byA9IHJlcXVpcmUoJ2NyeXB0bycpO1xuICByZXR1cm4gT0F1dGguZW5jb2RlKGNyeXB0by5jcmVhdGVIbWFjKCdzaGExJywga2V5KS51cGRhdGUodGV4dCkuZGlnZXN0KCdiYXNlNjQnKSk7XG59O1xuXG5PQXV0aC5zaWduUmVxdWVzdCA9IGZ1bmN0aW9uIChyZXF1ZXN0LCBvYXV0aF9wYXJhbWV0ZXJzLCBjb25zdW1lcl9zZWNyZXQsIGF1dGhfdG9rZW5fc2VjcmV0KSB7XG4gIG9hdXRoX3BhcmFtZXRlcnMgPSBvYXV0aF9wYXJhbWV0ZXJzIHx8IHt9O1xuXG4gIC8vIFNldCBkZWZhdWx0IHZhbHVlc1xuICBpZiAoIW9hdXRoX3BhcmFtZXRlcnMub2F1dGhfbm9uY2UpIHtcbiAgICBvYXV0aF9wYXJhbWV0ZXJzLm9hdXRoX25vbmNlID0gT0F1dGgubm9uY2UoKTtcbiAgfVxuICBpZiAoIW9hdXRoX3BhcmFtZXRlcnMub2F1dGhfdGltZXN0YW1wKSB7XG4gICAgb2F1dGhfcGFyYW1ldGVycy5vYXV0aF90aW1lc3RhbXAgPSBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCk7XG4gIH1cbiAgaWYgKCFvYXV0aF9wYXJhbWV0ZXJzLm9hdXRoX3NpZ25hdHVyZV9tZXRob2QpIHtcbiAgICBvYXV0aF9wYXJhbWV0ZXJzLm9hdXRoX3NpZ25hdHVyZV9tZXRob2QgPSBPQXV0aC5zaWduYXR1cmVNZXRob2Q7XG4gIH1cbiAgaWYgKCFvYXV0aF9wYXJhbWV0ZXJzLm9hdXRoX3ZlcnNpb24pIHtcbiAgICBvYXV0aF9wYXJhbWV0ZXJzLm9hdXRoX3ZlcnNpb24gPSBPQXV0aC52ZXJzaW9uO1xuICB9XG5cbiAgaWYgKCFhdXRoX3Rva2VuX3NlY3JldCkge1xuICAgIGF1dGhfdG9rZW5fc2VjcmV0ID0gJyc7XG4gIH1cbiAgLy8gRm9yY2UgR0VUIG1ldGhvZCBpZiB1bnNldFxuICBpZiAoIXJlcXVlc3QubWV0aG9kKSB7XG4gICAgcmVxdWVzdC5tZXRob2QgPSAnR0VUJztcbiAgfVxuXG4gIC8vIENvbGxlY3QgIGFsbCB0aGUgcGFyYW1ldGVycyBpbiBvbmUgc2lnbmF0dXJlUGFyYW1ldGVycyBvYmplY3RcbiAgdmFyIHNpZ25hdHVyZVBhcmFtcyA9IHt9O1xuICB2YXIgcGFyYW1ldGVyc1RvTWVyZ2UgPSBbcmVxdWVzdC5wYXJhbXMsIHJlcXVlc3QuYm9keSwgb2F1dGhfcGFyYW1ldGVyc107XG4gIGZvciAodmFyIGkgaW4gcGFyYW1ldGVyc1RvTWVyZ2UpIHtcbiAgICB2YXIgcGFyYW1ldGVycyA9IHBhcmFtZXRlcnNUb01lcmdlW2ldO1xuICAgIGZvciAodmFyIGsgaW4gcGFyYW1ldGVycykge1xuICAgICAgc2lnbmF0dXJlUGFyYW1zW2tdID0gcGFyYW1ldGVyc1trXTtcbiAgICB9XG4gIH1cblxuICAvLyBDcmVhdGUgYSBzdHJpbmcgYmFzZWQgb24gdGhlIHBhcmFtZXRlcnNcbiAgdmFyIHBhcmFtZXRlclN0cmluZyA9IE9BdXRoLmJ1aWxkUGFyYW1ldGVyU3RyaW5nKHNpZ25hdHVyZVBhcmFtcyk7XG5cbiAgLy8gQnVpbGQgdGhlIHNpZ25hdHVyZSBzdHJpbmdcbiAgdmFyIHVybCA9ICdodHRwczovLycgKyByZXF1ZXN0Lmhvc3QgKyAnJyArIHJlcXVlc3QucGF0aDtcblxuICB2YXIgc2lnbmF0dXJlU3RyaW5nID0gT0F1dGguYnVpbGRTaWduYXR1cmVTdHJpbmcocmVxdWVzdC5tZXRob2QsIHVybCwgcGFyYW1ldGVyU3RyaW5nKTtcbiAgLy8gSGFzaCB0aGUgc2lnbmF0dXJlIHN0cmluZ1xuICB2YXIgc2lnbmF0dXJlS2V5ID0gW09BdXRoLmVuY29kZShjb25zdW1lcl9zZWNyZXQpLCBPQXV0aC5lbmNvZGUoYXV0aF90b2tlbl9zZWNyZXQpXS5qb2luKCcmJyk7XG5cbiAgdmFyIHNpZ25hdHVyZSA9IE9BdXRoLnNpZ25hdHVyZShzaWduYXR1cmVTdHJpbmcsIHNpZ25hdHVyZUtleSk7XG5cbiAgLy8gU2V0IHRoZSBzaWduYXR1cmUgaW4gdGhlIHBhcmFtc1xuICBvYXV0aF9wYXJhbWV0ZXJzLm9hdXRoX3NpZ25hdHVyZSA9IHNpZ25hdHVyZTtcbiAgaWYgKCFyZXF1ZXN0LmhlYWRlcnMpIHtcbiAgICByZXF1ZXN0LmhlYWRlcnMgPSB7fTtcbiAgfVxuXG4gIC8vIFNldCB0aGUgYXV0aG9yaXphdGlvbiBoZWFkZXJcbiAgdmFyIGF1dGhIZWFkZXIgPSBPYmplY3Qua2V5cyhvYXV0aF9wYXJhbWV0ZXJzKVxuICAgIC5zb3J0KClcbiAgICAubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHZhciB2YWx1ZSA9IG9hdXRoX3BhcmFtZXRlcnNba2V5XTtcbiAgICAgIHJldHVybiBrZXkgKyAnPVwiJyArIHZhbHVlICsgJ1wiJztcbiAgICB9KVxuICAgIC5qb2luKCcsICcpO1xuXG4gIHJlcXVlc3QuaGVhZGVycy5BdXRob3JpemF0aW9uID0gJ09BdXRoICcgKyBhdXRoSGVhZGVyO1xuXG4gIC8vIFNldCB0aGUgY29udGVudCB0eXBlIGhlYWRlclxuICByZXF1ZXN0LmhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCc7XG4gIHJldHVybiByZXF1ZXN0O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBPQXV0aDtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxJQUFJQSxLQUFLLEdBQUdDLE9BQU8sQ0FBQyxPQUFPLENBQUM7RUFDMUJDLE1BQU0sR0FBR0QsT0FBTyxDQUFDLFFBQVEsQ0FBQztBQUM1QixJQUFJRSxLQUFLLEdBQUdGLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQ0UsS0FBSztBQUV2QyxJQUFJQyxLQUFLLEdBQUcsU0FBQUEsQ0FBVUMsT0FBTyxFQUFFO0VBQzdCLElBQUksQ0FBQ0EsT0FBTyxFQUFFO0lBQ1osTUFBTSxJQUFJRixLQUFLLENBQUNHLEtBQUssQ0FBQ0gsS0FBSyxDQUFDRyxLQUFLLENBQUNDLHFCQUFxQixFQUFFLDRCQUE0QixDQUFDO0VBQ3hGO0VBQ0EsSUFBSSxDQUFDQyxZQUFZLEdBQUdILE9BQU8sQ0FBQ0csWUFBWTtFQUN4QyxJQUFJLENBQUNDLGVBQWUs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
204
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJodHRwcyIsInJlcXVpcmUiLCJjcnlwdG8iLCJQYXJzZSIsIk9BdXRoIiwib3B0aW9ucyIsIkVycm9yIiwiSU5URVJOQUxfU0VSVkVSX0VSUk9SIiwiY29uc3VtZXJfa2V5IiwiY29uc3VtZXJfc2VjcmV0IiwiYXV0aF90b2tlbiIsImF1dGhfdG9rZW5fc2VjcmV0IiwiaG9zdCIsIm9hdXRoX3BhcmFtcyIsInByb3RvdHlwZSIsInNlbmQiLCJtZXRob2QiLCJwYXRoIiwicGFyYW1zIiwiYm9keSIsInJlcXVlc3QiLCJidWlsZFJlcXVlc3QiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImh0dHBSZXF1ZXN0IiwicmVzIiwiZGF0YSIsIm9uIiwiY2h1bmsiLCJKU09OIiwicGFyc2UiLCJ3cml0ZSIsImVuZCIsImluZGV4T2YiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiYnVpbGRQYXJhbWV0ZXJTdHJpbmciLCJ0b1VwcGVyQ2FzZSIsIm9hdXRoX2NvbnN1bWVyX2tleSIsInNpZ25SZXF1ZXN0IiwiZ2V0IiwicG9zdCIsImVuY29kZSIsInN0ciIsInRvU3RyaW5nIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwicmVwbGFjZSIsInNpZ25hdHVyZU1ldGhvZCIsInZlcnNpb24iLCJub25jZSIsInRleHQiLCJwb3NzaWJsZSIsImkiLCJjaGFyQXQiLCJNYXRoIiwiZmxvb3IiLCJyYW5kb20iLCJvYmoiLCJzb3J0IiwibWFwIiwia2V5Iiwiam9pbiIsImJ1aWxkU2lnbmF0dXJlU3RyaW5nIiwidXJsIiwicGFyYW1ldGVycyIsInNpZ25hdHVyZSIsImNyZWF0ZUhtYWMiLCJ1cGRhdGUiLCJkaWdlc3QiLCJvYXV0aF9wYXJhbWV0ZXJzIiwib2F1dGhfbm9uY2UiLCJvYXV0aF90aW1lc3RhbXAiLCJEYXRlIiwiZ2V0VGltZSIsIm9hdXRoX3NpZ25hdHVyZV9tZXRob2QiLCJvYXV0aF92ZXJzaW9uIiwic2lnbmF0dXJlUGFyYW1zIiwicGFyYW1ldGVyc1RvTWVyZ2UiLCJrIiwicGFyYW1ldGVyU3RyaW5nIiwic2lnbmF0dXJlU3RyaW5nIiwic2lnbmF0dXJlS2V5Iiwib2F1dGhfc2lnbmF0dXJlIiwiaGVhZGVycyIsImF1dGhIZWFkZXIiLCJ2YWx1ZSIsIkF1dGhvcml6YXRpb24iLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0FkYXB0ZXJzL0F1dGgvT0F1dGgxQ2xpZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBodHRwcyA9IHJlcXVpcmUoJ2h0dHBzJyksXG4gIGNyeXB0byA9IHJlcXVpcmUoJ2NyeXB0bycpO1xudmFyIFBhcnNlID0gcmVxdWlyZSgncGFyc2Uvbm9kZScpLlBhcnNlO1xuXG52YXIgT0F1dGggPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5URVJOQUxfU0VSVkVSX0VSUk9SLCAnTm8gb3B0aW9ucyBwYXNzZWQgdG8gT0F1dGgnKTtcbiAgfVxuICB0aGlzLmNvbnN1bWVyX2tleSA9IG9wdGlvbnMuY29uc3VtZXJfa2V5O1xuICB0aGlzLmNvbnN1bWVyX3NlY3JldCA9IG9wdGlvbnMuY29uc3VtZXJfc2VjcmV0O1xuICB0aGlzLmF1dGhfdG9rZW4gPSBvcHRpb25zLmF1dGhfdG9rZW47XG4gIHRoaXMuYXV0aF90b2tlbl9zZWNyZXQgPSBvcHRpb25zLmF1dGhfdG9rZW5fc2VjcmV0O1xuICB0aGlzLmhvc3QgPSBvcHRpb25zLmhvc3Q7XG4gIHRoaXMub2F1dGhfcGFyYW1zID0gb3B0aW9ucy5vYXV0aF9wYXJhbXMgfHwge307XG59O1xuXG5PQXV0aC5wcm90b3R5cGUuc2VuZCA9IGZ1bmN0aW9uIChtZXRob2QsIHBhdGgsIHBhcmFtcywgYm9keSkge1xuICB2YXIgcmVxdWVzdCA9IHRoaXMuYnVpbGRSZXF1ZXN0KG1ldGhvZCwgcGF0aCwgcGFyYW1zLCBib2R5KTtcbiAgLy8gRW5jb2RlIHRoZSBib2R5IHByb3Blcmx5LCB0aGUgY3VycmVudCBQYXJzZSBJbXBsZW1lbnRhdGlvbiBkb24ndCBkbyBpdCBwcm9wZXJseVxuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHZhciBodHRwUmVxdWVzdCA9IGh0dHBzXG4gICAgICAucmVxdWVzdChyZXF1ZXN0LCBmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgIHZhciBkYXRhID0gJyc7XG4gICAgICAgIHJlcy5vbignZGF0YScsIGZ1bmN0aW9uIChjaHVuaykge1xuICAgICAgICAgIGRhdGEgKz0gY2h1bms7XG4gICAgICAgIH0pO1xuICAgICAgICByZXMub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBkYXRhID0gSlNPTi5wYXJzZShkYXRhKTtcbiAgICAgICAgICByZXNvbHZlKGRhdGEpO1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgICAub24oJ2Vycm9yJywgZnVuY3Rpb24gKCkge1xuICAgICAgICByZWplY3QoJ0ZhaWxlZCB0byBtYWtlIGFuIE9BdXRoIHJlcXVlc3QnKTtcbiAgICAgIH0pO1xuICAgIGlmIChyZXF1ZXN0LmJvZHkpIHtcbiAgICAgIGh0dHBSZXF1ZXN0LndyaXRlKHJlcXVlc3QuYm9keSk7XG4gICAgfVxuICAgIGh0dHBSZXF1ZXN0LmVuZCgpO1xuICB9KTtcbn07XG5cbk9BdXRoLnByb3RvdHlwZS5idWlsZFJlcXVlc3QgPSBmdW5jdGlvbiAobWV0aG9kLCBwYXRoLCBwYXJhbXMsIGJvZHkpIHtcbiAgaWYgKHBhdGguaW5kZXhPZignLycpICE9IDApIHtcbiAgICBwYXRoID0gJy8nICsgcGF0aDtcbiAgfVxuICBpZiAocGFyYW1zICYmIE9iamVjdC5rZXlzKHBhcmFtcykubGVuZ3RoID4gMCkge1xuICAgIHBhdGggKz0gJz8nICsgT0F1dGguYnVpbGRQYXJhbWV0ZXJTdHJpbmcocGFyYW1zKTtcbiAgfVxuXG4gIHZhciByZXF1ZXN0ID0ge1xuICAgIGhvc3Q6IHRoaXMuaG9zdCxcbiAgICBwYXRoOiBwYXRoLFxuICAgIG1ldGhvZDogbWV0aG9kLnRvVXBwZXJDYXNlKCksXG4gIH07XG5cbiAgdmFyIG9hdXRoX3BhcmFtcyA9IHRoaXMub2F1dGhfcGFyYW1zIHx8IHt9O1xuICBvYXV0aF9wYXJhbXMub2F1dGhfY29uc3VtZXJfa2V5ID0gdGhpcy5jb25zdW1lcl9rZXk7XG4gIGlmICh0aGlzLmF1dGhfdG9rZW4pIHtcbiAgICBvYXV0aF9wYXJhbXNbJ29hdXRoX3Rva2VuJ10gPSB0aGlzLmF1dGhfdG9rZW47XG4gIH1cblxuICByZXF1ZXN0ID0gT0F1dGguc2lnblJlcXVlc3QocmVxdWVzdCwgb2F1dGhfcGFyYW1zLCB0aGlzLmNvbnN1bWVyX3NlY3JldCwgdGhpcy5hdXRoX3Rva2VuX3NlY3JldCk7XG5cbiAgaWYgKGJvZHkgJiYgT2JqZWN0LmtleXMoYm9keSkubGVuZ3RoID4gMCkge1xuICAgIHJlcXVlc3QuYm9keSA9IE9BdXRoLmJ1aWxkUGFyYW1ldGVyU3RyaW5nKGJvZHkpO1xuICB9XG4gIHJldHVybiByZXF1ZXN0O1xufTtcblxuT0F1dGgucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChwYXRoLCBwYXJhbXMpIHtcbiAgcmV0dXJuIHRoaXMuc2VuZCgnR0VUJywgcGF0aCwgcGFyYW1zKTtcbn07XG5cbk9BdXRoLnByb3RvdHlwZS5wb3N0ID0gZnVuY3Rpb24gKHBhdGgsIHBhcmFtcywgYm9keSkge1xuICByZXR1cm4gdGhpcy5zZW5kKCdQT1NUJywgcGF0aCwgcGFyYW1zLCBib2R5KTtcbn07XG5cbi8qXG5cdFByb3BlciBzdHJpbmcgJWVzY2FwZSBlbmNvZGluZ1xuKi9cbk9BdXRoLmVuY29kZSA9IGZ1bmN0aW9uIChzdHIpIHtcbiAgLy8gICAgICAgZGlzY3VzcyBhdDogaHR0cDovL3BocGpzLm9yZy9mdW5jdGlvbnMvcmF3dXJsZW5jb2RlL1xuICAvLyAgICAgIG9yaWdpbmFsIGJ5OiBCcmV0dCBaYW1pciAoaHR0cDovL2JyZXR0LXphbWlyLm1lKVxuICAvLyAgICAgICAgIGlucHV0IGJ5OiB0cmF2Y1xuICAvLyAgICAgICAgIGlucHV0IGJ5OiBCcmV0dCBaYW1pciAoaHR0cDovL2JyZXR0LXphbWlyLm1lKVxuICAvLyAgICAgICAgIGlucHV0IGJ5OiBNaWNoYWVsIEdyaWVyXG4gIC8vICAgICAgICAgaW5wdXQgYnk6IFJhdGhlb3VzXG4gIC8vICAgICAgYnVnZml4ZWQgYnk6IEtldmluIHZhbiBab25uZXZlbGQgKGh0dHA6Ly9rZXZpbi52YW56b25uZXZlbGQubmV0KVxuICAvLyAgICAgIGJ1Z2ZpeGVkIGJ5OiBCcmV0dCBaYW1pciAoaHR0cDovL2JyZXR0LXphbWlyLm1lKVxuICAvLyAgICAgIGJ1Z2ZpeGVkIGJ5OiBKb3Jpc1xuICAvLyByZWltcGxlbWVudGVkIGJ5OiBCcmV0dCBaYW1pciAoaHR0cDovL2JyZXR0LXphbWlyLm1lKVxuICAvLyByZWltcGxlbWVudGVkIGJ5OiBCcmV0dCBaYW1pciAoaHR0cDovL2JyZXR0LXphbWlyLm1lKVxuICAvLyAgICAgICAgICAgICBub3RlOiBUaGlzIHJlZmxlY3RzIFBIUCA1LjMvNi4wKyBiZWhhdmlvclxuICAvLyAgICAgICAgICAgICBub3RlOiBQbGVhc2UgYmUgYXdhcmUgdGhhdCB0aGlzIGZ1bmN0aW9uIGV4cGVjdHMgdG8gZW5jb2RlIGludG8gVVRGLTggZW5jb2RlZCBzdHJpbmdzLCBhcyBmb3VuZCBvblxuICAvLyAgICAgICAgICAgICBub3RlOiBwYWdlcyBzZXJ2ZWQgYXMgVVRGLThcbiAgLy8gICAgICAgIGV4YW1wbGUgMTogcmF3dXJsZW5jb2RlKCdLZXZpbiB2YW4gWm9ubmV2ZWxkIScpO1xuICAvLyAgICAgICAgcmV0dXJucyAxOiAnS2V2aW4lMjB2YW4lMjBab25uZXZlbGQlMjEnXG4gIC8vICAgICAgICBleGFtcGxlIDI6IHJhd3VybGVuY29kZSgnaHR0cDovL2tldmluLnZhbnpvbm5ldmVsZC5uZXQvJyk7XG4gIC8vICAgICAgICByZXR1cm5zIDI6ICdodHRwJTNBJTJGJTJGa2V2aW4udmFuem9ubmV2ZWxkLm5ldCUyRidcbiAgLy8gICAgICAgIGV4YW1wbGUgMzogcmF3dXJsZW5jb2RlKCdodHRwOi8vd3d3Lmdvb2dsZS5ubC9zZWFyY2g/cT1waHAuanMmaWU9dXRmLTgmb2U9dXRmLTgmYXE9dCZybHM9Y29tLnVidW50dTplbi1VUzp1bm9mZmljaWFsJmNsaWVudD1maXJlZm94LWEnKTtcbiAgLy8gICAgICAgIHJldHVybnMgMzogJ2h0dHAlM0ElMkYlMkZ3d3cuZ29vZ2xlLm5sJTJGc2VhcmNoJTNGcSUzRHBocC5qcyUyNmllJTNEdXRmLTglMjZvZSUzRHV0Zi04JTI2YXElM0R0JTI2cmxzJTNEY29tLnVidW50dSUzQWVuLVVTJTNBdW5vZmZpY2lhbCUyNmNsaWVudCUzRGZpcmVmb3gtYSdcblxuICBzdHIgPSAoc3RyICsgJycpLnRvU3RyaW5nKCk7XG5cbiAgLy8gVGlsZGUgc2hvdWxkIGJlIGFsbG93ZWQgdW5lc2NhcGVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZiBQSFAgKGFzIHJlZmxlY3RlZCBiZWxvdyksIGJ1dCBpZiB5b3Ugd2FudCB0byByZWZsZWN0IGN1cnJlbnRcbiAgLy8gUEhQIGJlaGF2aW9yLCB5b3Ugd291bGQgbmVlZCB0byBhZGQgXCIucmVwbGFjZSgvfi9nLCAnJTdFJyk7XCIgdG8gdGhlIGZvbGxvd2luZy5cbiAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChzdHIpXG4gICAgLnJlcGxhY2UoLyEvZywgJyUyMScpXG4gICAgLnJlcGxhY2UoLycvZywgJyUyNycpXG4gICAgLnJlcGxhY2UoL1xcKC9nLCAnJTI4JylcbiAgICAucmVwbGFjZSgvXFwpL2csICclMjknKVxuICAgIC5yZXBsYWNlKC9cXCovZywgJyUyQScpO1xufTtcblxuT0F1dGguc2lnbmF0dXJlTWV0aG9kID0gJ0hNQUMtU0hBMSc7XG5PQXV0aC52ZXJzaW9uID0gJzEuMCc7XG5cbi8qXG5cdEdlbmVyYXRlIGEgbm9uY2VcbiovXG5PQXV0aC5ub25jZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRleHQgPSAnJztcbiAgdmFyIHBvc3NpYmxlID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5JztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDMwOyBpKyspIHsgdGV4dCArPSBwb3NzaWJsZS5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogcG9zc2libGUubGVuZ3RoKSk7IH1cblxuICByZXR1cm4gdGV4dDtcbn07XG5cbk9BdXRoLmJ1aWxkUGFyYW1ldGVyU3RyaW5nID0gZnVuY3Rpb24gKG9iaikge1xuICAvLyBTb3J0IGtleXMgYW5kIGVuY29kZSB2YWx1ZXNcbiAgaWYgKG9iaikge1xuICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqKS5zb3J0KCk7XG5cbiAgICAvLyBNYXAga2V5PXZhbHVlLCBqb2luIHRoZW0gYnkgJlxuICAgIHJldHVybiBrZXlzXG4gICAgICAubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgcmV0dXJuIGtleSArICc9JyArIE9BdXRoLmVuY29kZShvYmpba2V5XSk7XG4gICAgICB9KVxuICAgICAgLmpvaW4oJyYnKTtcbiAgfVxuXG4gIHJldHVybiAnJztcbn07XG5cbi8qXG5cdEJ1aWxkIHRoZSBzaWduYXR1cmUgc3RyaW5nIGZyb20gdGhlIG9iamVjdFxuKi9cblxuT0F1dGguYnVpbGRTaWduYXR1cmVTdHJpbmcgPSBmdW5jdGlvbiAobWV0aG9kLCB1cmwsIHBhcmFtZXRlcnMpIHtcbiAgcmV0dXJuIFttZXRob2QudG9VcHBlckNhc2UoKSwgT0F1dGguZW5jb2RlKHVybCksIE9BdXRoLmVuY29kZShwYXJhbWV0ZXJzKV0uam9pbignJicpO1xufTtcblxuLypcblx0UmV0dW5zIGVuY29kZWQgSE1BQy1TSEExIGZyb20ga2V5IGFuZCB0ZXh0XG4qL1xuT0F1dGguc2lnbmF0dXJlID0gZnVuY3Rpb24gKHRleHQsIGtleSkge1xuICBjcnlwdG8gPSByZXF1aXJlKCdjcnlwdG8nKTtcbiAgcmV0dXJuIE9BdXRoLmVuY29kZShjcnlwdG8uY3JlYXRlSG1hYygnc2hhMScsIGtleSkudXBkYXRlKHRleHQpLmRpZ2VzdCgnYmFzZTY0JykpO1xufTtcblxuT0F1dGguc2lnblJlcXVlc3QgPSBmdW5jdGlvbiAocmVxdWVzdCwgb2F1dGhfcGFyYW1ldGVycywgY29uc3VtZXJfc2VjcmV0LCBhdXRoX3Rva2VuX3NlY3JldCkge1xuICBvYXV0aF9wYXJhbWV0ZXJzID0gb2F1dGhfcGFyYW1ldGVycyB8fCB7fTtcblxuICAvLyBTZXQgZGVmYXVsdCB2YWx1ZXNcbiAgaWYgKCFvYXV0aF9wYXJhbWV0ZXJzLm9hdXRoX25vbmNlKSB7XG4gICAgb2F1dGhfcGFyYW1ldGVycy5vYXV0aF9ub25jZSA9IE9BdXRoLm5vbmNlKCk7XG4gIH1cbiAgaWYgKCFvYXV0aF9wYXJhbWV0ZXJzLm9hdXRoX3RpbWVzdGFtcCkge1xuICAgIG9hdXRoX3BhcmFtZXRlcnMub2F1dGhfdGltZXN0YW1wID0gTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApO1xuICB9XG4gIGlmICghb2F1dGhfcGFyYW1ldGVycy5vYXV0aF9zaWduYXR1cmVfbWV0aG9kKSB7XG4gICAgb2F1dGhfcGFyYW1ldGVycy5vYXV0aF9zaWduYXR1cmVfbWV0aG9kID0gT0F1dGguc2lnbmF0dXJlTWV0aG9kO1xuICB9XG4gIGlmICghb2F1dGhfcGFyYW1ldGVycy5vYXV0aF92ZXJzaW9uKSB7XG4gICAgb2F1dGhfcGFyYW1ldGVycy5vYXV0aF92ZXJzaW9uID0gT0F1dGgudmVyc2lvbjtcbiAgfVxuXG4gIGlmICghYXV0aF90b2tlbl9zZWNyZXQpIHtcbiAgICBhdXRoX3Rva2VuX3NlY3JldCA9ICcnO1xuICB9XG4gIC8vIEZvcmNlIEdFVCBtZXRob2QgaWYgdW5zZXRcbiAgaWYgKCFyZXF1ZXN0Lm1ldGhvZCkge1xuICAgIHJlcXVlc3QubWV0aG9kID0gJ0dFVCc7XG4gIH1cblxuICAvLyBDb2xsZWN0ICBhbGwgdGhlIHBhcmFtZXRlcnMgaW4gb25lIHNpZ25hdHVyZVBhcmFtZXRlcnMgb2JqZWN0XG4gIHZhciBzaWduYXR1cmVQYXJhbXMgPSB7fTtcbiAgdmFyIHBhcmFtZXRlcnNUb01lcmdlID0gW3JlcXVlc3QucGFyYW1zLCByZXF1ZXN0LmJvZHksIG9hdXRoX3BhcmFtZXRlcnNdO1xuICBmb3IgKHZhciBpIGluIHBhcmFtZXRlcnNUb01lcmdlKSB7XG4gICAgdmFyIHBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzVG9NZXJnZVtpXTtcbiAgICBmb3IgKHZhciBrIGluIHBhcmFtZXRlcnMpIHtcbiAgICAgIHNpZ25hdHVyZVBhcmFtc1trXSA9IHBhcmFtZXRlcnNba107XG4gICAgfVxuICB9XG5cbiAgLy8gQ3JlYXRlIGEgc3RyaW5nIGJhc2VkIG9uIHRoZSBwYXJhbWV0ZXJzXG4gIHZhciBwYXJhbWV0ZXJTdHJpbmcgPSBPQXV0aC5idWlsZFBhcmFtZXRlclN0cmluZyhzaWduYXR1cmVQYXJhbXMpO1xuXG4gIC8vIEJ1aWxkIHRoZSBzaWduYXR1cmUgc3RyaW5nXG4gIHZhciB1cmwgPSAnaHR0cHM6Ly8nICsgcmVxdWVzdC5ob3N0ICsgJycgKyByZXF1ZXN0LnBhdGg7XG5cbiAgdmFyIHNpZ25hdHVyZVN0cmluZyA9IE9BdXRoLmJ1aWxkU2lnbmF0dXJlU3RyaW5nKHJlcXVlc3QubWV0aG9kLCB1cmwsIHBhcmFtZXRlclN0cmluZyk7XG4gIC8vIEhhc2ggdGhlIHNpZ25hdHVyZSBzdHJpbmdcbiAgdmFyIHNpZ25hdHVyZUtleSA9IFtPQXV0aC5lbmNvZGUoY29uc3VtZXJfc2VjcmV0KSwgT0F1dGguZW5jb2RlKGF1dGhfdG9rZW5fc2VjcmV0KV0uam9pbignJicpO1xuXG4gIHZhciBzaWduYXR1cmUgPSBPQXV0aC5zaWduYXR1cmUoc2lnbmF0dXJlU3RyaW5nLCBzaWduYXR1cmVLZXkpO1xuXG4gIC8vIFNldCB0aGUgc2lnbmF0dXJlIGluIHRoZSBwYXJhbXNcbiAgb2F1dGhfcGFyYW1ldGVycy5vYXV0aF9zaWduYXR1cmUgPSBzaWduYXR1cmU7XG4gIGlmICghcmVxdWVzdC5oZWFkZXJzKSB7XG4gICAgcmVxdWVzdC5oZWFkZXJzID0ge307XG4gIH1cblxuICAvLyBTZXQgdGhlIGF1dGhvcml6YXRpb24gaGVhZGVyXG4gIHZhciBhdXRoSGVhZGVyID0gT2JqZWN0LmtleXMob2F1dGhfcGFyYW1ldGVycylcbiAgICAuc29ydCgpXG4gICAgLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICB2YXIgdmFsdWUgPSBvYXV0aF9wYXJhbWV0ZXJzW2tleV07XG4gICAgICByZXR1cm4ga2V5ICsgJz1cIicgKyB2YWx1ZSArICdcIic7XG4gICAgfSlcbiAgICAuam9pbignLCAnKTtcblxuICByZXF1ZXN0LmhlYWRlcnMuQXV0aG9yaXphdGlvbiA9ICdPQXV0aCAnICsgYXV0aEhlYWRlcjtcblxuICAvLyBTZXQgdGhlIGNvbnRlbnQgdHlwZSBoZWFkZXJcbiAgcmVxdWVzdC5oZWFkZXJzWydDb250ZW50LVR5cGUnXSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnO1xuICByZXR1cm4gcmVxdWVzdDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gT0F1dGg7XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBSUEsS0FBSyxHQUFHQyxPQUFPLENBQUMsT0FBTyxDQUFDO0VBQzFCQyxNQUFNLEdBQUdELE9BQU8sQ0FBQyxRQUFRLENBQUM7QUFDNUIsSUFBSUUsS0FBSyxHQUFHRixPQUFPLENBQUMsWUFBWSxDQUFDLENBQUNFLEtBQUs7QUFFdkMsSUFBSUMsS0FBSyxHQUFHLFNBQUFBLENBQVVDLE9BQU8sRUFBRTtFQUM3QixJQUFJLENBQUNBLE9BQU8sRUFBRTtJQUNaLE1BQU0sSUFBSUYsS0FBSyxDQUFDRyxLQUFLLENBQUNILEtBQUssQ0FBQ0csS0FBSyxDQUFDQyxxQkFBcUIsRUFBRSw0QkFBNEIsQ0FBQztFQUN4RjtFQUNBLElBQUksQ0FBQ0MsWUFBWSxHQUFHSCxPQUFPLENBQUNHLFlBQVk7RUFDeEMsSUFBSSxDQUFDQyxl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
@@ -180,7 +180,9 @@ module.exports = function (authOptions = {}, enableAnonymousUsers = true) {
180
180
  };
181
181
  }
182
182
  const authAdapter = loadAuthAdapter(provider, authOptions);
183
- if (!authAdapter) return;
183
+ if (!authAdapter) {
184
+ return;
185
+ }
184
186
  const {
185
187
  adapter,
186
188
  appIds,
@@ -226,4 +228,4 @@ module.exports = function (authOptions = {}, enableAnonymousUsers = true) {
226
228
  });
227
229
  };
228
230
  module.exports.loadAuthAdapter = loadAuthAdapter;
229
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfQWRhcHRlckxvYWRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX25vZGUiLCJfQXV0aEFkYXB0ZXIiLCJfbWZhIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiYXBwbGUiLCJnY2VudGVyIiwiZ3BnYW1lcyIsImZhY2Vib29rIiwiaW5zdGFncmFtIiwibGlua2VkaW4iLCJtZWV0dXAiLCJnb29nbGUiLCJnaXRodWIiLCJ0d2l0dGVyIiwic3BvdGlmeSIsImRpZ2l0cyIsImphbnJhaW5lbmdhZ2UiLCJqYW5yYWluY2FwdHVyZSIsImxpbmUiLCJ2a29udGFrdGUiLCJxcSIsIndlY2hhdCIsIndlaWJvIiwib2F1dGgyIiwicGhhbnRhdXRoIiwibWljcm9zb2Z0Iiwia2V5Y2xvYWsiLCJsZGFwIiwiYW5vbnltb3VzIiwidmFsaWRhdGVBdXRoRGF0YSIsIlByb21pc2UiLCJyZXNvbHZlIiwidmFsaWRhdGVBcHBJZCIsInByb3ZpZGVycyIsIm1mYSIsImF1dGhBZGFwdGVyUG9saWNpZXMiLCJzb2xvIiwiYWRkaXRpb25hbCIsImF1dGhEYXRhVmFsaWRhdG9yIiwicHJvdmlkZXIiLCJhZGFwdGVyIiwiYXBwSWRzIiwib3B0aW9ucyIsImF1dGhEYXRhIiwicmVxIiwidXNlciIsInJlcXVlc3RPYmplY3QiLCJwb2xpY3kiLCJQYXJzZSIsIkVycm9yIiwiT1RIRVJfQ0FVU0UiLCJ2YWxpZGF0ZVNldFVwIiwidmFsaWRhdGVMb2dpbiIsInZhbGlkYXRlVXBkYXRlIiwiaXNMb2dnZWRJbiIsImF1dGgiLCJpZCIsImlzTWFzdGVyIiwiaGFzQXV0aERhdGFDb25maWd1cmVkIiwiZ2V0IiwibWV0aG9kIiwidmFsaWRhdG9yIiwibG9hZEF1dGhBZGFwdGVyIiwiYXV0aE9wdGlvbnMiLCJkZWZhdWx0QWRhcHRlciIsInByb3ZpZGVyT3B0aW9ucyIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIkF1dGhBZGFwdGVyIiwiYXNzaWduIiwia2V5cyIsImRlZmF1bHRBdXRoQWRhcHRlciIsImZvckVhY2giLCJrZXkiLCJleGlzdGluZyIsInRvU3RyaW5nIiwidW5kZWZpbmVkIiwib3B0aW9uYWxBZGFwdGVyIiwibG9hZEFkYXB0ZXIiLCJ2YWxpZGF0ZU9wdGlvbnMiLCJtb2R1bGUiLCJleHBvcnRzIiwiZW5hYmxlQW5vbnltb3VzVXNlcnMiLCJfZW5hYmxlQW5vbnltb3VzVXNlcnMiLCJzZXRFbmFibGVBbm9ueW1vdXNVc2VycyIsImVuYWJsZSIsImdldFZhbGlkYXRvckZvclByb3ZpZGVyIiwiYXV0aEFkYXB0ZXIiLCJydW5BZnRlckZpbmQiLCJhZGFwdGVycyIsImFsbCIsIm1hcCIsImFmdGVyRmluZCIsImlwIiwiY29uZmlnIiwibWFzdGVyIiwicmVzdWx0IiwiZnJlZXplIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0FkYXB0ZXJzL0F1dGgvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvYWRBZGFwdGVyIGZyb20gJy4uL0FkYXB0ZXJMb2FkZXInO1xuaW1wb3J0IFBhcnNlIGZyb20gJ3BhcnNlL25vZGUnO1xuaW1wb3J0IEF1dGhBZGFwdGVyIGZyb20gJy4vQXV0aEFkYXB0ZXInO1xuXG5jb25zdCBhcHBsZSA9IHJlcXVpcmUoJy4vYXBwbGUnKTtcbmNvbnN0IGdjZW50ZXIgPSByZXF1aXJlKCcuL2djZW50ZXInKTtcbmNvbnN0IGdwZ2FtZXMgPSByZXF1aXJlKCcuL2dwZ2FtZXMnKTtcbmNvbnN0IGZhY2Vib29rID0gcmVxdWlyZSgnLi9mYWNlYm9vaycpO1xuY29uc3QgaW5zdGFncmFtID0gcmVxdWlyZSgnLi9pbnN0YWdyYW0nKTtcbmNvbnN0IGxpbmtlZGluID0gcmVxdWlyZSgnLi9saW5rZWRpbicpO1xuY29uc3QgbWVldHVwID0gcmVxdWlyZSgnLi9tZWV0dXAnKTtcbmltcG9ydCBtZmEgZnJvbSAnLi9tZmEnO1xuY29uc3QgZ29vZ2xlID0gcmVxdWlyZSgnLi9nb29nbGUnKTtcbmNvbnN0IGdpdGh1YiA9IHJlcXVpcmUoJy4vZ2l0aHViJyk7XG5jb25zdCB0d2l0dGVyID0gcmVxdWlyZSgnLi90d2l0dGVyJyk7XG5jb25zdCBzcG90aWZ5ID0gcmVxdWlyZSgnLi9zcG90aWZ5Jyk7XG5jb25zdCBkaWdpdHMgPSByZXF1aXJlKCcuL3R3aXR0ZXInKTsgLy8gZGlnaXRzIHRva2VucyBhcmUgdmFsaWRhdGVkIGJ5IHR3aXR0ZXJcbmNvbnN0IGphbnJhaW5lbmdhZ2UgPSByZXF1aXJlKCcuL2phbnJhaW5lbmdhZ2UnKTtcbmNvbnN0IGphbnJhaW5jYXB0dXJlID0gcmVxdWlyZSgnLi9qYW5yYWluY2FwdHVyZScpO1xuY29uc3QgbGluZSA9IHJlcXVpcmUoJy4vbGluZScpO1xuY29uc3QgdmtvbnRha3RlID0gcmVxdWlyZSgnLi92a29udGFrdGUnKTtcbmNvbnN0IHFxID0gcmVxdWlyZSgnLi9xcScpO1xuY29uc3Qgd2VjaGF0ID0gcmVxdWlyZSgnLi93ZWNoYXQnKTtcbmNvbnN0IHdlaWJvID0gcmVxdWlyZSgnLi93ZWlibycpO1xuY29uc3Qgb2F1dGgyID0gcmVxdWlyZSgnLi9vYXV0aDInKTtcbmNvbnN0IHBoYW50YXV0aCA9IHJlcXVpcmUoJy4vcGhhbnRhdXRoJyk7XG5jb25zdCBtaWNyb3NvZnQgPSByZXF1aXJlKCcuL21pY3Jvc29mdCcpO1xuY29uc3Qga2V5Y2xvYWsgPSByZXF1aXJlKCcuL2tleWNsb2FrJyk7XG5jb25zdCBsZGFwID0gcmVxdWlyZSgnLi9sZGFwJyk7XG5cbmNvbnN0IGFub255bW91cyA9IHtcbiAgdmFsaWRhdGVBdXRoRGF0YTogKCkgPT4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfSxcbiAgdmFsaWRhdGVBcHBJZDogKCkgPT4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfSxcbn07XG5cbmNvbnN0IHByb3ZpZGVycyA9IHtcbiAgYXBwbGUsXG4gIGdjZW50ZXIsXG4gIGdwZ2FtZXMsXG4gIGZhY2Vib29rLFxuICBpbnN0YWdyYW0sXG4gIGxpbmtlZGluLFxuICBtZWV0dXAsXG4gIG1mYSxcbiAgZ29vZ2xlLFxuICBnaXRodWIsXG4gIHR3aXR0ZXIsXG4gIHNwb3RpZnksXG4gIGFub255bW91cyxcbiAgZGlnaXRzLFxuICBqYW5yYWluZW5nYWdlLFxuICBqYW5yYWluY2FwdHVyZSxcbiAgbGluZSxcbiAgdmtvbnRha3RlLFxuICBxcSxcbiAgd2VjaGF0LFxuICB3ZWlibyxcbiAgcGhhbnRhdXRoLFxuICBtaWNyb3NvZnQsXG4gIGtleWNsb2FrLFxuICBsZGFwLFxufTtcblxuLy8gSW5kZXhlZCBhdXRoIHBvbGljaWVzXG5jb25zdCBhdXRoQWRhcHRlclBvbGljaWVzID0ge1xuICBkZWZhdWx0OiB0cnVlLFxuICBzb2xvOiB0cnVlLFxuICBhZGRpdGlvbmFsOiB0cnVlLFxufTtcblxuZnVuY3Rpb24gYXV0aERhdGFWYWxpZGF0b3IocHJvdmlkZXIsIGFkYXB0ZXIsIGFwcElkcywgb3B0aW9ucykge1xuICByZXR1cm4gYXN5bmMgZnVuY3Rpb24gKGF1dGhEYXRhLCByZXEsIHVzZXIsIHJlcXVlc3RPYmplY3QpIHtcbiAgICBpZiAoYXBwSWRzICYmIHR5cGVvZiBhZGFwdGVyLnZhbGlkYXRlQXBwSWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGF3YWl0IFByb21pc2UucmVzb2x2ZShhZGFwdGVyLnZhbGlkYXRlQXBwSWQoYXBwSWRzLCBhdXRoRGF0YSwgb3B0aW9ucywgcmVxdWVzdE9iamVjdCkpO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBhZGFwdGVyLnBvbGljeSAmJlxuICAgICAgIWF1dGhBZGFwdGVyUG9saWNpZXNbYWRhcHRlci5wb2xpY3ldICYmXG4gICAgICB0eXBlb2YgYWRhcHRlci5wb2xpY3kgIT09ICdmdW5jdGlvbidcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgICAgUGFyc2UuRXJyb3IuT1RIRVJfQ0FVU0UsXG4gICAgICAgICdBdXRoQWRhcHRlciBwb2xpY3kgaXMgbm90IGNvbmZpZ3VyZWQgY29ycmVjdGx5LiBUaGUgdmFsdWUgbXVzdCBiZSBlaXRoZXIgXCJzb2xvXCIsIFwiYWRkaXRpb25hbFwiLCBcImRlZmF1bHRcIiBvciB1bmRlZmluZWQgKHdpbGwgYmUgaGFuZGxlZCBhcyBcImRlZmF1bHRcIiknXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGFkYXB0ZXIudmFsaWRhdGVBdXRoRGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIGFkYXB0ZXIudmFsaWRhdGVBdXRoRGF0YShhdXRoRGF0YSwgb3B0aW9ucywgcmVxdWVzdE9iamVjdCk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBhZGFwdGVyLnZhbGlkYXRlU2V0VXAgIT09ICdmdW5jdGlvbicgfHxcbiAgICAgIHR5cGVvZiBhZGFwdGVyLnZhbGlkYXRlTG9naW4gIT09ICdmdW5jdGlvbicgfHxcbiAgICAgIHR5cGVvZiBhZGFwdGVyLnZhbGlkYXRlVXBkYXRlICE9PSAnZnVuY3Rpb24nXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICAgIFBhcnNlLkVycm9yLk9USEVSX0NBVVNFLFxuICAgICAgICAnQWRhcHRlciBpcyBub3QgY29uZmlndXJlZC4gSW1wbGVtZW50IGVpdGhlciB2YWxpZGF0ZUF1dGhEYXRhIG9yIGFsbCBvZiB0aGUgZm9sbG93aW5nOiB2YWxpZGF0ZVNldFVwLCB2YWxpZGF0ZUxvZ2luIGFuZCB2YWxpZGF0ZVVwZGF0ZSdcbiAgICAgICk7XG4gICAgfVxuICAgIC8vIFdoZW4gbWFzdGVyS2V5IGlzIGRldGVjdGVkLCB3ZSBzaG91bGQgdHJpZ2dlciBhIGxvZ2dlZCBpbiB1c2VyXG4gICAgY29uc3QgaXNMb2dnZWRJbiA9XG4gICAgICAocmVxLmF1dGgudXNlciAmJiB1c2VyICYmIHJlcS5hdXRoLnVzZXIuaWQgPT09IHVzZXIuaWQpIHx8ICh1c2VyICYmIHJlcS5hdXRoLmlzTWFzdGVyKTtcbiAgICBsZXQgaGFzQXV0aERhdGFDb25maWd1cmVkID0gZmFsc2U7XG5cbiAgICBpZiAodXNlciAmJiB1c2VyLmdldCgnYXV0aERhdGEnKSAmJiB1c2VyLmdldCgnYXV0aERhdGEnKVtwcm92aWRlcl0pIHtcbiAgICAgIGhhc0F1dGhEYXRhQ29uZmlndXJlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGlzTG9nZ2VkSW4pIHtcbiAgICAgIC8vIFVzZXIgaXMgdXBkYXRpbmcgdGhlaXIgYXV0aERhdGFcbiAgICAgIGlmIChoYXNBdXRoRGF0YUNvbmZpZ3VyZWQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXRob2Q6ICd2YWxpZGF0ZVVwZGF0ZScsXG4gICAgICAgICAgdmFsaWRhdG9yOiAoKSA9PiBhZGFwdGVyLnZhbGlkYXRlVXBkYXRlKGF1dGhEYXRhLCBvcHRpb25zLCByZXF1ZXN0T2JqZWN0KSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIC8vIFNldCB1cCBpZiB0aGUgdXNlciBkb2VzIG5vdCBoYXZlIHRoZSBwcm92aWRlciBjb25maWd1cmVkXG4gICAgICByZXR1cm4ge1xuICAgICAgICBtZXRob2Q6ICd2YWxpZGF0ZVNldFVwJyxcbiAgICAgICAgdmFsaWRhdG9yOiAoKSA9PiBhZGFwdGVyLnZhbGlkYXRlU2V0VXAoYXV0aERhdGEsIG9wdGlvbnMsIHJlcXVlc3RPYmplY3QpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBOb3QgbG9nZ2VkIGluIGFuZCBhdXRoRGF0YSBpcyBjb25maWd1cmVkIG9uIHRoZSB1c2VyXG4gICAgaWYgKGhhc0F1dGhEYXRhQ29uZmlndXJlZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWV0aG9kOiAndmFsaWRhdGVMb2dpbicsXG4gICAgICAgIHZhbGlkYXRvcjogKCkgPT4gYWRhcHRlci52YWxpZGF0ZUxvZ2luKGF1dGhEYXRhLCBvcHRpb25zLCByZXF1ZXN0T2JqZWN0KSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gVXNlciBub3QgbG9nZ2VkIGluIGFuZCB0aGUgcHJvdmlkZXIgaXMgbm90IHNldCB1cCwgZm9yIGV4YW1wbGUgd2hlbiBhIG5ldyB1c2VyXG4gICAgLy8gc2lnbnMgdXAgb3IgYW4gZXhpc3RpbmcgdXNlciB1c2VzIGEgbmV3IGF1dGggcHJvdmlkZXJcbiAgICByZXR1cm4ge1xuICAgICAgbWV0aG9kOiAndmFsaWRhdGVTZXRVcCcsXG4gICAgICB2YWxpZGF0b3I6ICgpID0+IGFkYXB0ZXIudmFsaWRhdGVTZXRVcChhdXRoRGF0YSwgb3B0aW9ucywgcmVxdWVzdE9iamVjdCksXG4gICAgfTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gbG9hZEF1dGhBZGFwdGVyKHByb3ZpZGVyLCBhdXRoT3B0aW9ucykge1xuICAvLyBwcm92aWRlcnMgYXJlIGF1dGggcHJvdmlkZXJzIGltcGxlbWVudGVkIGJ5IGRlZmF1bHRcbiAgbGV0IGRlZmF1bHRBZGFwdGVyID0gcHJvdmlkZXJzW3Byb3ZpZGVyXTtcbiAgLy8gYXV0aE9wdGlvbnMgY2FuIGNvbnRhaW4gY29tcGxldGUgY3VzdG9tIGF1dGggYWRhcHRlcnMgb3JcbiAgLy8gYSBkZWZhdWx0IGF1dGggYWRhcHRlciBsaWtlIEZhY2Vib29rXG4gIGNvbnN0IHByb3ZpZGVyT3B0aW9ucyA9IGF1dGhPcHRpb25zW3Byb3ZpZGVyXTtcbiAgaWYgKFxuICAgIHByb3ZpZGVyT3B0aW9ucyAmJlxuICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwcm92aWRlck9wdGlvbnMsICdvYXV0aDInKSAmJlxuICAgIHByb3ZpZGVyT3B0aW9uc1snb2F1dGgyJ10gPT09IHRydWVcbiAgKSB7XG4gICAgZGVmYXVsdEFkYXB0ZXIgPSBvYXV0aDI7XG4gIH1cblxuICAvLyBEZWZhdWx0IHByb3ZpZGVyIG5vdCBmb3VuZCBhbmQgYSBjdXN0b20gYXV0aCBwcm92aWRlciB3YXMgbm90IHByb3ZpZGVkXG4gIGlmICghZGVmYXVsdEFkYXB0ZXIgJiYgIXByb3ZpZGVyT3B0aW9ucykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGFkYXB0ZXIgPVxuICAgIGRlZmF1bHRBZGFwdGVyIGluc3RhbmNlb2YgQXV0aEFkYXB0ZXIgPyBkZWZhdWx0QWRhcHRlciA6IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRBZGFwdGVyKTtcbiAgY29uc3Qga2V5cyA9IFtcbiAgICAndmFsaWRhdGVBdXRoRGF0YScsXG4gICAgJ3ZhbGlkYXRlQXBwSWQnLFxuICAgICd2YWxpZGF0ZVNldFVwJyxcbiAgICAndmFsaWRhdGVMb2dpbicsXG4gICAgJ3ZhbGlkYXRlVXBkYXRlJyxcbiAgICAnY2hhbGxlbmdlJyxcbiAgICAndmFsaWRhdGVPcHRpb25zJyxcbiAgICAncG9saWN5JyxcbiAgICAnYWZ0ZXJGaW5kJyxcbiAgXTtcbiAgY29uc3QgZGVmYXVsdEF1dGhBZGFwdGVyID0gbmV3IEF1dGhBZGFwdGVyKCk7XG4gIGtleXMuZm9yRWFjaChrZXkgPT4ge1xuICAgIGNvbnN0IGV4aXN0aW5nID0gYWRhcHRlcj8uW2tleV07XG4gICAgaWYgKFxuICAgICAgZXhpc3RpbmcgJiZcbiAgICAgIHR5cGVvZiBleGlzdGluZyA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgZXhpc3RpbmcudG9TdHJpbmcoKSA9PT0gZGVmYXVsdEF1dGhBZGFwdGVyW2tleV0udG9TdHJpbmcoKVxuICAgICkge1xuICAgICAgYWRhcHRlcltrZXldID0gbnVsbDtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBhcHBJZHMgPSBwcm92aWRlck9wdGlvbnMgPyBwcm92aWRlck9wdGlvbnMuYXBwSWRzIDogdW5kZWZpbmVkO1xuXG4gIC8vIFRyeSB0aGUgY29uZmlndXJhdGlvbiBtZXRob2RzXG4gIGlmIChwcm92aWRlck9wdGlvbnMpIHtcbiAgICBjb25zdCBvcHRpb25hbEFkYXB0ZXIgPSBsb2FkQWRhcHRlcihwcm92aWRlck9wdGlvbnMsIHVuZGVmaW5lZCwgcHJvdmlkZXJPcHRpb25zKTtcbiAgICBpZiAob3B0aW9uYWxBZGFwdGVyKSB7XG4gICAgICBrZXlzLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgaWYgKG9wdGlvbmFsQWRhcHRlcltrZXldKSB7XG4gICAgICAgICAgYWRhcHRlcltrZXldID0gb3B0aW9uYWxBZGFwdGVyW2tleV07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBpZiAoYWRhcHRlci52YWxpZGF0ZU9wdGlvbnMpIHtcbiAgICBhZGFwdGVyLnZhbGlkYXRlT3B0aW9ucyhwcm92aWRlck9wdGlvbnMpO1xuICB9XG5cbiAgcmV0dXJuIHsgYWRhcHRlciwgYXBwSWRzLCBwcm92aWRlck9wdGlvbnMgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXV0aE9wdGlvbnMgPSB7fSwgZW5hYmxlQW5vbnltb3VzVXNlcnMgPSB0cnVlKSB7XG4gIGxldCBfZW5hYmxlQW5vbnltb3VzVXNlcnMgPSBlbmFibGVBbm9ueW1vdXNVc2VycztcbiAgY29uc3Qgc2V0RW5hYmxlQW5vbnltb3VzVXNlcnMgPSBmdW5jdGlvbiAoZW5hYmxlKSB7XG4gICAgX2VuYWJsZUFub255bW91c1VzZXJzID0gZW5hYmxlO1xuICB9O1xuICAvLyBUbyBoYW5kbGUgdGhlIHRlc3QgY2FzZXMgb24gY29uZmlndXJhdGlvblxuICBjb25zdCBnZXRWYWxpZGF0b3JGb3JQcm92aWRlciA9IGZ1bmN0aW9uIChwcm92aWRlcikge1xuICAgIGlmIChwcm92aWRlciA9PT0gJ2Fub255bW91cycgJiYgIV9lbmFibGVBbm9ueW1vdXNVc2Vycykge1xuICAgICAgcmV0dXJuIHsgdmFsaWRhdG9yOiB1bmRlZmluZWQgfTtcbiAgICB9XG4gICAgY29uc3QgYXV0aEFkYXB0ZXIgPSBsb2FkQXV0aEFkYXB0ZXIocHJvdmlkZXIsIGF1dGhPcHRpb25zKTtcbiAgICBpZiAoIWF1dGhBZGFwdGVyKSByZXR1cm47XG4gICAgY29uc3QgeyBhZGFwdGVyLCBhcHBJZHMsIHByb3ZpZGVyT3B0aW9ucyB9ID0gYXV0aEFkYXB0ZXI7XG4gICAgcmV0dXJuIHsgdmFsaWRhdG9yOiBhdXRoRGF0YVZhbGlkYXRvcihwcm92aWRlciwgYWRhcHRlciwgYXBwSWRzLCBwcm92aWRlck9wdGlvbnMpLCBhZGFwdGVyIH07XG4gIH07XG5cbiAgY29uc3QgcnVuQWZ0ZXJGaW5kID0gYXN5bmMgKHJlcSwgYXV0aERhdGEpID0+IHtcbiAgICBpZiAoIWF1dGhEYXRhKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGFkYXB0ZXJzID0gT2JqZWN0LmtleXMoYXV0aERhdGEpO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgYWRhcHRlcnMubWFwKGFzeW5jIHByb3ZpZGVyID0+IHtcbiAgICAgICAgY29uc3QgYXV0aEFkYXB0ZXIgPSBnZXRWYWxpZGF0b3JGb3JQcm92aWRlcihwcm92aWRlcik7XG4gICAgICAgIGlmICghYXV0aEFkYXB0ZXIpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBhZGFwdGVyLCBwcm92aWRlck9wdGlvbnMgfSA9IGF1dGhBZGFwdGVyO1xuICAgICAgICBjb25zdCBhZnRlckZpbmQgPSBhZGFwdGVyLmFmdGVyRmluZDtcbiAgICAgICAgaWYgKGFmdGVyRmluZCAmJiB0eXBlb2YgYWZ0ZXJGaW5kID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgY29uc3QgcmVxdWVzdE9iamVjdCA9IHtcbiAgICAgICAgICAgIGlwOiByZXEuY29uZmlnLmlwLFxuICAgICAgICAgICAgdXNlcjogcmVxLmF1dGgudXNlcixcbiAgICAgICAgICAgIG1hc3RlcjogcmVxLmF1dGguaXNNYXN0ZXIsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBhZnRlckZpbmQuY2FsbChcbiAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICByZXF1ZXN0T2JqZWN0LFxuICAgICAgICAgICAgYXV0aERhdGFbcHJvdmlkZXJdLFxuICAgICAgICAgICAgcHJvdmlkZXJPcHRpb25zXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICBhdXRoRGF0YVtwcm92aWRlcl0gPSByZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIE9iamVjdC5mcmVlemUoe1xuICAgIGdldFZhbGlkYXRvckZvclByb3ZpZGVyLFxuICAgIHNldEVuYWJsZUFub255bW91c1VzZXJzLFxuICAgIHJ1bkFmdGVyRmluZCxcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cy5sb2FkQXV0aEFkYXB0ZXIgPSBsb2FkQXV0aEFkYXB0ZXI7XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBQUEsY0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsWUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBU0EsSUFBQUcsSUFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQXdCLFNBQUFELHVCQUFBSyxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBUHhCLE1BQU1HLEtBQUssR0FBR1AsT0FBTyxDQUFDLFNBQVMsQ0FBQztBQUNoQyxNQUFNUSxPQUFPLEdBQUdSLE9BQU8sQ0FBQyxXQUFXLENBQUM7QUFDcEMsTUFBTVMsT0FBTyxHQUFHVCxPQUFPLENBQUMsV0FBVyxDQUFDO0FBQ3BDLE1BQU1VLFFBQVEsR0FBR1YsT0FBTyxDQUFDLFlBQVksQ0FBQztBQUN0QyxNQUFNVyxTQUFTLEdBQUdYLE9BQU8sQ0FBQyxhQUFhLENBQUM7QUFDeEMsTUFBTVksUUFBUSxHQUFHWixPQUFPLENBQUMsWUFBWSxDQUFDO0FBQ3RDLE1BQU1hLE1BQU0sR0FBR2IsT0FBTyxDQUFDLFVBQVUsQ0FBQztBQUVsQyxNQUFNYyxNQUFNLEdBQUdkLE9BQU8sQ0FBQyxV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
231
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfQWRhcHRlckxvYWRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX25vZGUiLCJfQXV0aEFkYXB0ZXIiLCJfbWZhIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiYXBwbGUiLCJnY2VudGVyIiwiZ3BnYW1lcyIsImZhY2Vib29rIiwiaW5zdGFncmFtIiwibGlua2VkaW4iLCJtZWV0dXAiLCJnb29nbGUiLCJnaXRodWIiLCJ0d2l0dGVyIiwic3BvdGlmeSIsImRpZ2l0cyIsImphbnJhaW5lbmdhZ2UiLCJqYW5yYWluY2FwdHVyZSIsImxpbmUiLCJ2a29udGFrdGUiLCJxcSIsIndlY2hhdCIsIndlaWJvIiwib2F1dGgyIiwicGhhbnRhdXRoIiwibWljcm9zb2Z0Iiwia2V5Y2xvYWsiLCJsZGFwIiwiYW5vbnltb3VzIiwidmFsaWRhdGVBdXRoRGF0YSIsIlByb21pc2UiLCJyZXNvbHZlIiwidmFsaWRhdGVBcHBJZCIsInByb3ZpZGVycyIsIm1mYSIsImF1dGhBZGFwdGVyUG9saWNpZXMiLCJzb2xvIiwiYWRkaXRpb25hbCIsImF1dGhEYXRhVmFsaWRhdG9yIiwicHJvdmlkZXIiLCJhZGFwdGVyIiwiYXBwSWRzIiwib3B0aW9ucyIsImF1dGhEYXRhIiwicmVxIiwidXNlciIsInJlcXVlc3RPYmplY3QiLCJwb2xpY3kiLCJQYXJzZSIsIkVycm9yIiwiT1RIRVJfQ0FVU0UiLCJ2YWxpZGF0ZVNldFVwIiwidmFsaWRhdGVMb2dpbiIsInZhbGlkYXRlVXBkYXRlIiwiaXNMb2dnZWRJbiIsImF1dGgiLCJpZCIsImlzTWFzdGVyIiwiaGFzQXV0aERhdGFDb25maWd1cmVkIiwiZ2V0IiwibWV0aG9kIiwidmFsaWRhdG9yIiwibG9hZEF1dGhBZGFwdGVyIiwiYXV0aE9wdGlvbnMiLCJkZWZhdWx0QWRhcHRlciIsInByb3ZpZGVyT3B0aW9ucyIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIkF1dGhBZGFwdGVyIiwiYXNzaWduIiwia2V5cyIsImRlZmF1bHRBdXRoQWRhcHRlciIsImZvckVhY2giLCJrZXkiLCJleGlzdGluZyIsInRvU3RyaW5nIiwidW5kZWZpbmVkIiwib3B0aW9uYWxBZGFwdGVyIiwibG9hZEFkYXB0ZXIiLCJ2YWxpZGF0ZU9wdGlvbnMiLCJtb2R1bGUiLCJleHBvcnRzIiwiZW5hYmxlQW5vbnltb3VzVXNlcnMiLCJfZW5hYmxlQW5vbnltb3VzVXNlcnMiLCJzZXRFbmFibGVBbm9ueW1vdXNVc2VycyIsImVuYWJsZSIsImdldFZhbGlkYXRvckZvclByb3ZpZGVyIiwiYXV0aEFkYXB0ZXIiLCJydW5BZnRlckZpbmQiLCJhZGFwdGVycyIsImFsbCIsIm1hcCIsImFmdGVyRmluZCIsImlwIiwiY29uZmlnIiwibWFzdGVyIiwicmVzdWx0IiwiZnJlZXplIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0FkYXB0ZXJzL0F1dGgvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvYWRBZGFwdGVyIGZyb20gJy4uL0FkYXB0ZXJMb2FkZXInO1xuaW1wb3J0IFBhcnNlIGZyb20gJ3BhcnNlL25vZGUnO1xuaW1wb3J0IEF1dGhBZGFwdGVyIGZyb20gJy4vQXV0aEFkYXB0ZXInO1xuXG5jb25zdCBhcHBsZSA9IHJlcXVpcmUoJy4vYXBwbGUnKTtcbmNvbnN0IGdjZW50ZXIgPSByZXF1aXJlKCcuL2djZW50ZXInKTtcbmNvbnN0IGdwZ2FtZXMgPSByZXF1aXJlKCcuL2dwZ2FtZXMnKTtcbmNvbnN0IGZhY2Vib29rID0gcmVxdWlyZSgnLi9mYWNlYm9vaycpO1xuY29uc3QgaW5zdGFncmFtID0gcmVxdWlyZSgnLi9pbnN0YWdyYW0nKTtcbmNvbnN0IGxpbmtlZGluID0gcmVxdWlyZSgnLi9saW5rZWRpbicpO1xuY29uc3QgbWVldHVwID0gcmVxdWlyZSgnLi9tZWV0dXAnKTtcbmltcG9ydCBtZmEgZnJvbSAnLi9tZmEnO1xuY29uc3QgZ29vZ2xlID0gcmVxdWlyZSgnLi9nb29nbGUnKTtcbmNvbnN0IGdpdGh1YiA9IHJlcXVpcmUoJy4vZ2l0aHViJyk7XG5jb25zdCB0d2l0dGVyID0gcmVxdWlyZSgnLi90d2l0dGVyJyk7XG5jb25zdCBzcG90aWZ5ID0gcmVxdWlyZSgnLi9zcG90aWZ5Jyk7XG5jb25zdCBkaWdpdHMgPSByZXF1aXJlKCcuL3R3aXR0ZXInKTsgLy8gZGlnaXRzIHRva2VucyBhcmUgdmFsaWRhdGVkIGJ5IHR3aXR0ZXJcbmNvbnN0IGphbnJhaW5lbmdhZ2UgPSByZXF1aXJlKCcuL2phbnJhaW5lbmdhZ2UnKTtcbmNvbnN0IGphbnJhaW5jYXB0dXJlID0gcmVxdWlyZSgnLi9qYW5yYWluY2FwdHVyZScpO1xuY29uc3QgbGluZSA9IHJlcXVpcmUoJy4vbGluZScpO1xuY29uc3QgdmtvbnRha3RlID0gcmVxdWlyZSgnLi92a29udGFrdGUnKTtcbmNvbnN0IHFxID0gcmVxdWlyZSgnLi9xcScpO1xuY29uc3Qgd2VjaGF0ID0gcmVxdWlyZSgnLi93ZWNoYXQnKTtcbmNvbnN0IHdlaWJvID0gcmVxdWlyZSgnLi93ZWlibycpO1xuY29uc3Qgb2F1dGgyID0gcmVxdWlyZSgnLi9vYXV0aDInKTtcbmNvbnN0IHBoYW50YXV0aCA9IHJlcXVpcmUoJy4vcGhhbnRhdXRoJyk7XG5jb25zdCBtaWNyb3NvZnQgPSByZXF1aXJlKCcuL21pY3Jvc29mdCcpO1xuY29uc3Qga2V5Y2xvYWsgPSByZXF1aXJlKCcuL2tleWNsb2FrJyk7XG5jb25zdCBsZGFwID0gcmVxdWlyZSgnLi9sZGFwJyk7XG5cbmNvbnN0IGFub255bW91cyA9IHtcbiAgdmFsaWRhdGVBdXRoRGF0YTogKCkgPT4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfSxcbiAgdmFsaWRhdGVBcHBJZDogKCkgPT4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfSxcbn07XG5cbmNvbnN0IHByb3ZpZGVycyA9IHtcbiAgYXBwbGUsXG4gIGdjZW50ZXIsXG4gIGdwZ2FtZXMsXG4gIGZhY2Vib29rLFxuICBpbnN0YWdyYW0sXG4gIGxpbmtlZGluLFxuICBtZWV0dXAsXG4gIG1mYSxcbiAgZ29vZ2xlLFxuICBnaXRodWIsXG4gIHR3aXR0ZXIsXG4gIHNwb3RpZnksXG4gIGFub255bW91cyxcbiAgZGlnaXRzLFxuICBqYW5yYWluZW5nYWdlLFxuICBqYW5yYWluY2FwdHVyZSxcbiAgbGluZSxcbiAgdmtvbnRha3RlLFxuICBxcSxcbiAgd2VjaGF0LFxuICB3ZWlibyxcbiAgcGhhbnRhdXRoLFxuICBtaWNyb3NvZnQsXG4gIGtleWNsb2FrLFxuICBsZGFwLFxufTtcblxuLy8gSW5kZXhlZCBhdXRoIHBvbGljaWVzXG5jb25zdCBhdXRoQWRhcHRlclBvbGljaWVzID0ge1xuICBkZWZhdWx0OiB0cnVlLFxuICBzb2xvOiB0cnVlLFxuICBhZGRpdGlvbmFsOiB0cnVlLFxufTtcblxuZnVuY3Rpb24gYXV0aERhdGFWYWxpZGF0b3IocHJvdmlkZXIsIGFkYXB0ZXIsIGFwcElkcywgb3B0aW9ucykge1xuICByZXR1cm4gYXN5bmMgZnVuY3Rpb24gKGF1dGhEYXRhLCByZXEsIHVzZXIsIHJlcXVlc3RPYmplY3QpIHtcbiAgICBpZiAoYXBwSWRzICYmIHR5cGVvZiBhZGFwdGVyLnZhbGlkYXRlQXBwSWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGF3YWl0IFByb21pc2UucmVzb2x2ZShhZGFwdGVyLnZhbGlkYXRlQXBwSWQoYXBwSWRzLCBhdXRoRGF0YSwgb3B0aW9ucywgcmVxdWVzdE9iamVjdCkpO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBhZGFwdGVyLnBvbGljeSAmJlxuICAgICAgIWF1dGhBZGFwdGVyUG9saWNpZXNbYWRhcHRlci5wb2xpY3ldICYmXG4gICAgICB0eXBlb2YgYWRhcHRlci5wb2xpY3kgIT09ICdmdW5jdGlvbidcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgICAgUGFyc2UuRXJyb3IuT1RIRVJfQ0FVU0UsXG4gICAgICAgICdBdXRoQWRhcHRlciBwb2xpY3kgaXMgbm90IGNvbmZpZ3VyZWQgY29ycmVjdGx5LiBUaGUgdmFsdWUgbXVzdCBiZSBlaXRoZXIgXCJzb2xvXCIsIFwiYWRkaXRpb25hbFwiLCBcImRlZmF1bHRcIiBvciB1bmRlZmluZWQgKHdpbGwgYmUgaGFuZGxlZCBhcyBcImRlZmF1bHRcIiknXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGFkYXB0ZXIudmFsaWRhdGVBdXRoRGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIGFkYXB0ZXIudmFsaWRhdGVBdXRoRGF0YShhdXRoRGF0YSwgb3B0aW9ucywgcmVxdWVzdE9iamVjdCk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBhZGFwdGVyLnZhbGlkYXRlU2V0VXAgIT09ICdmdW5jdGlvbicgfHxcbiAgICAgIHR5cGVvZiBhZGFwdGVyLnZhbGlkYXRlTG9naW4gIT09ICdmdW5jdGlvbicgfHxcbiAgICAgIHR5cGVvZiBhZGFwdGVyLnZhbGlkYXRlVXBkYXRlICE9PSAnZnVuY3Rpb24nXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICAgIFBhcnNlLkVycm9yLk9USEVSX0NBVVNFLFxuICAgICAgICAnQWRhcHRlciBpcyBub3QgY29uZmlndXJlZC4gSW1wbGVtZW50IGVpdGhlciB2YWxpZGF0ZUF1dGhEYXRhIG9yIGFsbCBvZiB0aGUgZm9sbG93aW5nOiB2YWxpZGF0ZVNldFVwLCB2YWxpZGF0ZUxvZ2luIGFuZCB2YWxpZGF0ZVVwZGF0ZSdcbiAgICAgICk7XG4gICAgfVxuICAgIC8vIFdoZW4gbWFzdGVyS2V5IGlzIGRldGVjdGVkLCB3ZSBzaG91bGQgdHJpZ2dlciBhIGxvZ2dlZCBpbiB1c2VyXG4gICAgY29uc3QgaXNMb2dnZWRJbiA9XG4gICAgICAocmVxLmF1dGgudXNlciAmJiB1c2VyICYmIHJlcS5hdXRoLnVzZXIuaWQgPT09IHVzZXIuaWQpIHx8ICh1c2VyICYmIHJlcS5hdXRoLmlzTWFzdGVyKTtcbiAgICBsZXQgaGFzQXV0aERhdGFDb25maWd1cmVkID0gZmFsc2U7XG5cbiAgICBpZiAodXNlciAmJiB1c2VyLmdldCgnYXV0aERhdGEnKSAmJiB1c2VyLmdldCgnYXV0aERhdGEnKVtwcm92aWRlcl0pIHtcbiAgICAgIGhhc0F1dGhEYXRhQ29uZmlndXJlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGlzTG9nZ2VkSW4pIHtcbiAgICAgIC8vIFVzZXIgaXMgdXBkYXRpbmcgdGhlaXIgYXV0aERhdGFcbiAgICAgIGlmIChoYXNBdXRoRGF0YUNvbmZpZ3VyZWQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXRob2Q6ICd2YWxpZGF0ZVVwZGF0ZScsXG4gICAgICAgICAgdmFsaWRhdG9yOiAoKSA9PiBhZGFwdGVyLnZhbGlkYXRlVXBkYXRlKGF1dGhEYXRhLCBvcHRpb25zLCByZXF1ZXN0T2JqZWN0KSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIC8vIFNldCB1cCBpZiB0aGUgdXNlciBkb2VzIG5vdCBoYXZlIHRoZSBwcm92aWRlciBjb25maWd1cmVkXG4gICAgICByZXR1cm4ge1xuICAgICAgICBtZXRob2Q6ICd2YWxpZGF0ZVNldFVwJyxcbiAgICAgICAgdmFsaWRhdG9yOiAoKSA9PiBhZGFwdGVyLnZhbGlkYXRlU2V0VXAoYXV0aERhdGEsIG9wdGlvbnMsIHJlcXVlc3RPYmplY3QpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBOb3QgbG9nZ2VkIGluIGFuZCBhdXRoRGF0YSBpcyBjb25maWd1cmVkIG9uIHRoZSB1c2VyXG4gICAgaWYgKGhhc0F1dGhEYXRhQ29uZmlndXJlZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWV0aG9kOiAndmFsaWRhdGVMb2dpbicsXG4gICAgICAgIHZhbGlkYXRvcjogKCkgPT4gYWRhcHRlci52YWxpZGF0ZUxvZ2luKGF1dGhEYXRhLCBvcHRpb25zLCByZXF1ZXN0T2JqZWN0KSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gVXNlciBub3QgbG9nZ2VkIGluIGFuZCB0aGUgcHJvdmlkZXIgaXMgbm90IHNldCB1cCwgZm9yIGV4YW1wbGUgd2hlbiBhIG5ldyB1c2VyXG4gICAgLy8gc2lnbnMgdXAgb3IgYW4gZXhpc3RpbmcgdXNlciB1c2VzIGEgbmV3IGF1dGggcHJvdmlkZXJcbiAgICByZXR1cm4ge1xuICAgICAgbWV0aG9kOiAndmFsaWRhdGVTZXRVcCcsXG4gICAgICB2YWxpZGF0b3I6ICgpID0+IGFkYXB0ZXIudmFsaWRhdGVTZXRVcChhdXRoRGF0YSwgb3B0aW9ucywgcmVxdWVzdE9iamVjdCksXG4gICAgfTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gbG9hZEF1dGhBZGFwdGVyKHByb3ZpZGVyLCBhdXRoT3B0aW9ucykge1xuICAvLyBwcm92aWRlcnMgYXJlIGF1dGggcHJvdmlkZXJzIGltcGxlbWVudGVkIGJ5IGRlZmF1bHRcbiAgbGV0IGRlZmF1bHRBZGFwdGVyID0gcHJvdmlkZXJzW3Byb3ZpZGVyXTtcbiAgLy8gYXV0aE9wdGlvbnMgY2FuIGNvbnRhaW4gY29tcGxldGUgY3VzdG9tIGF1dGggYWRhcHRlcnMgb3JcbiAgLy8gYSBkZWZhdWx0IGF1dGggYWRhcHRlciBsaWtlIEZhY2Vib29rXG4gIGNvbnN0IHByb3ZpZGVyT3B0aW9ucyA9IGF1dGhPcHRpb25zW3Byb3ZpZGVyXTtcbiAgaWYgKFxuICAgIHByb3ZpZGVyT3B0aW9ucyAmJlxuICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwcm92aWRlck9wdGlvbnMsICdvYXV0aDInKSAmJlxuICAgIHByb3ZpZGVyT3B0aW9uc1snb2F1dGgyJ10gPT09IHRydWVcbiAgKSB7XG4gICAgZGVmYXVsdEFkYXB0ZXIgPSBvYXV0aDI7XG4gIH1cblxuICAvLyBEZWZhdWx0IHByb3ZpZGVyIG5vdCBmb3VuZCBhbmQgYSBjdXN0b20gYXV0aCBwcm92aWRlciB3YXMgbm90IHByb3ZpZGVkXG4gIGlmICghZGVmYXVsdEFkYXB0ZXIgJiYgIXByb3ZpZGVyT3B0aW9ucykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGFkYXB0ZXIgPVxuICAgIGRlZmF1bHRBZGFwdGVyIGluc3RhbmNlb2YgQXV0aEFkYXB0ZXIgPyBkZWZhdWx0QWRhcHRlciA6IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRBZGFwdGVyKTtcbiAgY29uc3Qga2V5cyA9IFtcbiAgICAndmFsaWRhdGVBdXRoRGF0YScsXG4gICAgJ3ZhbGlkYXRlQXBwSWQnLFxuICAgICd2YWxpZGF0ZVNldFVwJyxcbiAgICAndmFsaWRhdGVMb2dpbicsXG4gICAgJ3ZhbGlkYXRlVXBkYXRlJyxcbiAgICAnY2hhbGxlbmdlJyxcbiAgICAndmFsaWRhdGVPcHRpb25zJyxcbiAgICAncG9saWN5JyxcbiAgICAnYWZ0ZXJGaW5kJyxcbiAgXTtcbiAgY29uc3QgZGVmYXVsdEF1dGhBZGFwdGVyID0gbmV3IEF1dGhBZGFwdGVyKCk7XG4gIGtleXMuZm9yRWFjaChrZXkgPT4ge1xuICAgIGNvbnN0IGV4aXN0aW5nID0gYWRhcHRlcj8uW2tleV07XG4gICAgaWYgKFxuICAgICAgZXhpc3RpbmcgJiZcbiAgICAgIHR5cGVvZiBleGlzdGluZyA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgZXhpc3RpbmcudG9TdHJpbmcoKSA9PT0gZGVmYXVsdEF1dGhBZGFwdGVyW2tleV0udG9TdHJpbmcoKVxuICAgICkge1xuICAgICAgYWRhcHRlcltrZXldID0gbnVsbDtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBhcHBJZHMgPSBwcm92aWRlck9wdGlvbnMgPyBwcm92aWRlck9wdGlvbnMuYXBwSWRzIDogdW5kZWZpbmVkO1xuXG4gIC8vIFRyeSB0aGUgY29uZmlndXJhdGlvbiBtZXRob2RzXG4gIGlmIChwcm92aWRlck9wdGlvbnMpIHtcbiAgICBjb25zdCBvcHRpb25hbEFkYXB0ZXIgPSBsb2FkQWRhcHRlcihwcm92aWRlck9wdGlvbnMsIHVuZGVmaW5lZCwgcHJvdmlkZXJPcHRpb25zKTtcbiAgICBpZiAob3B0aW9uYWxBZGFwdGVyKSB7XG4gICAgICBrZXlzLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgaWYgKG9wdGlvbmFsQWRhcHRlcltrZXldKSB7XG4gICAgICAgICAgYWRhcHRlcltrZXldID0gb3B0aW9uYWxBZGFwdGVyW2tleV07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBpZiAoYWRhcHRlci52YWxpZGF0ZU9wdGlvbnMpIHtcbiAgICBhZGFwdGVyLnZhbGlkYXRlT3B0aW9ucyhwcm92aWRlck9wdGlvbnMpO1xuICB9XG5cbiAgcmV0dXJuIHsgYWRhcHRlciwgYXBwSWRzLCBwcm92aWRlck9wdGlvbnMgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXV0aE9wdGlvbnMgPSB7fSwgZW5hYmxlQW5vbnltb3VzVXNlcnMgPSB0cnVlKSB7XG4gIGxldCBfZW5hYmxlQW5vbnltb3VzVXNlcnMgPSBlbmFibGVBbm9ueW1vdXNVc2VycztcbiAgY29uc3Qgc2V0RW5hYmxlQW5vbnltb3VzVXNlcnMgPSBmdW5jdGlvbiAoZW5hYmxlKSB7XG4gICAgX2VuYWJsZUFub255bW91c1VzZXJzID0gZW5hYmxlO1xuICB9O1xuICAvLyBUbyBoYW5kbGUgdGhlIHRlc3QgY2FzZXMgb24gY29uZmlndXJhdGlvblxuICBjb25zdCBnZXRWYWxpZGF0b3JGb3JQcm92aWRlciA9IGZ1bmN0aW9uIChwcm92aWRlcikge1xuICAgIGlmIChwcm92aWRlciA9PT0gJ2Fub255bW91cycgJiYgIV9lbmFibGVBbm9ueW1vdXNVc2Vycykge1xuICAgICAgcmV0dXJuIHsgdmFsaWRhdG9yOiB1bmRlZmluZWQgfTtcbiAgICB9XG4gICAgY29uc3QgYXV0aEFkYXB0ZXIgPSBsb2FkQXV0aEFkYXB0ZXIocHJvdmlkZXIsIGF1dGhPcHRpb25zKTtcbiAgICBpZiAoIWF1dGhBZGFwdGVyKSB7IHJldHVybjsgfVxuICAgIGNvbnN0IHsgYWRhcHRlciwgYXBwSWRzLCBwcm92aWRlck9wdGlvbnMgfSA9IGF1dGhBZGFwdGVyO1xuICAgIHJldHVybiB7IHZhbGlkYXRvcjogYXV0aERhdGFWYWxpZGF0b3IocHJvdmlkZXIsIGFkYXB0ZXIsIGFwcElkcywgcHJvdmlkZXJPcHRpb25zKSwgYWRhcHRlciB9O1xuICB9O1xuXG4gIGNvbnN0IHJ1bkFmdGVyRmluZCA9IGFzeW5jIChyZXEsIGF1dGhEYXRhKSA9PiB7XG4gICAgaWYgKCFhdXRoRGF0YSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBhZGFwdGVycyA9IE9iamVjdC5rZXlzKGF1dGhEYXRhKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGFkYXB0ZXJzLm1hcChhc3luYyBwcm92aWRlciA9PiB7XG4gICAgICAgIGNvbnN0IGF1dGhBZGFwdGVyID0gZ2V0VmFsaWRhdG9yRm9yUHJvdmlkZXIocHJvdmlkZXIpO1xuICAgICAgICBpZiAoIWF1dGhBZGFwdGVyKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgYWRhcHRlciwgcHJvdmlkZXJPcHRpb25zIH0gPSBhdXRoQWRhcHRlcjtcbiAgICAgICAgY29uc3QgYWZ0ZXJGaW5kID0gYWRhcHRlci5hZnRlckZpbmQ7XG4gICAgICAgIGlmIChhZnRlckZpbmQgJiYgdHlwZW9mIGFmdGVyRmluZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGNvbnN0IHJlcXVlc3RPYmplY3QgPSB7XG4gICAgICAgICAgICBpcDogcmVxLmNvbmZpZy5pcCxcbiAgICAgICAgICAgIHVzZXI6IHJlcS5hdXRoLnVzZXIsXG4gICAgICAgICAgICBtYXN0ZXI6IHJlcS5hdXRoLmlzTWFzdGVyLFxuICAgICAgICAgIH07XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYWZ0ZXJGaW5kLmNhbGwoXG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgcmVxdWVzdE9iamVjdCxcbiAgICAgICAgICAgIGF1dGhEYXRhW3Byb3ZpZGVyXSxcbiAgICAgICAgICAgIHByb3ZpZGVyT3B0aW9uc1xuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgYXV0aERhdGFbcHJvdmlkZXJdID0gcmVzdWx0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9O1xuXG4gIHJldHVybiBPYmplY3QuZnJlZXplKHtcbiAgICBnZXRWYWxpZGF0b3JGb3JQcm92aWRlcixcbiAgICBzZXRFbmFibGVBbm9ueW1vdXNVc2VycyxcbiAgICBydW5BZnRlckZpbmQsXG4gIH0pO1xufTtcblxubW9kdWxlLmV4cG9ydHMubG9hZEF1dGhBZGFwdGVyID0gbG9hZEF1dGhBZGFwdGVyO1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBLElBQUFBLGNBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFlBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQVNBLElBQUFHLElBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUF3QixTQUFBRCx1QkFBQUssQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQVB4QixNQUFNRyxLQUFLLEdBQUdQLE9BQU8sQ0FBQyxTQUFTLENBQUM7QUFDaEMsTUFBTVEsT0FBTyxHQUFHUixPQUFPLENBQUMsV0FBVyxDQUFDO0FBQ3BDLE1BQU1TLE9BQU8sR0FBR1QsT0FBTyxDQUFDLFdBQVcsQ0FBQztBQUNwQyxNQUFNVSxRQUFRLEdBQUdWLE9BQU8sQ0FBQyxZQUFZLENBQUM7QUFDdEMsTUFBTVcsU0FBUyxHQUFHWCxPQUFPLENBQUMsYUFBYSxDQUFDO0FBQ3hDLE1BQU1ZLFFBQVEsR0FBR1osT0FBTyxDQUFDLFlBQVksQ0FBQztBQUN0QyxNQUFNYSxNQUFNLEdBQUdiLE9BQU8sQ0FBQyxVQUFVLENBQUM7QUFFbEMsTUFBTWMsTUFBTSxHQUFHZCxPQUFPLENB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
@@ -40,11 +40,15 @@ const {
40
40
  } = require('parse/node');
41
41
  const httpsRequest = require('./httpsRequest');
42
42
  const arraysEqual = (_arr1, _arr2) => {
43
- if (!Array.isArray(_arr1) || !Array.isArray(_arr2) || _arr1.length !== _arr2.length) return false;
43
+ if (!Array.isArray(_arr1) || !Array.isArray(_arr2) || _arr1.length !== _arr2.length) {
44
+ return false;
45
+ }
44
46
  var arr1 = _arr1.concat().sort();
45
47
  var arr2 = _arr2.concat().sort();
46
48
  for (var i = 0; i < arr1.length; i++) {
47
- if (arr1[i] !== arr2[i]) return false;
49
+ if (arr1[i] !== arr2[i]) {
50
+ return false;
51
+ }
48
52
  }
49
53
  return true;
50
54
  };
@@ -108,4 +112,4 @@ module.exports = {
108
112
  validateAppId,
109
113
  validateAuthData
110
114
  };
111
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYXJzZSIsInJlcXVpcmUiLCJodHRwc1JlcXVlc3QiLCJhcnJheXNFcXVhbCIsIl9hcnIxIiwiX2FycjIiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJhcnIxIiwiY29uY2F0Iiwic29ydCIsImFycjIiLCJpIiwiaGFuZGxlQXV0aCIsImFjY2Vzc190b2tlbiIsImlkIiwicm9sZXMiLCJncm91cHMiLCJjb25maWciLCJFcnJvciIsIk9CSkVDVF9OT1RfRk9VTkQiLCJyZXNwb25zZSIsImdldCIsImhvc3QiLCJwYXRoIiwiaGVhZGVycyIsIkF1dGhvcml6YXRpb24iLCJkYXRhIiwic3ViIiwiZSIsImVycm9yIiwiSlNPTiIsInBhcnNlIiwidGV4dCIsImVycm9yX2Rlc2NyaXB0aW9uIiwiSE9TVElOR19FUlJPUiIsInZhbGlkYXRlQXV0aERhdGEiLCJhdXRoRGF0YSIsIm9wdGlvbnMiLCJ2YWxpZGF0ZUFwcElkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0FkYXB0ZXJzL0F1dGgva2V5Y2xvYWsuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgIyBQYXJzZSBTZXJ2ZXIgS2V5Y2xvYWsgQXV0aGVudGljYXRpb25cblxuICAjIyBLZXljbG9hayBgYXV0aERhdGFgXG5cbiAgYGBgXG4gICAge1xuICAgICAgXCJrZXljbG9ha1wiOiB7XG4gICAgICAgIFwiYWNjZXNzX3Rva2VuXCI6IFwiYWNjZXNzIHRva2VuIHlvdSBnb3QgZnJvbSBrZXljbG9hayBKUyBjbGllbnQgYXV0aGVudGljYXRpb25cIixcbiAgICAgICAgXCJpZFwiOiBcInRoZSBpZCByZXRyaWV2ZWQgZnJvbSBjbGllbnQgYXV0aGVudGljYXRpb24gaW4gS2V5Y2xvYWtcIixcbiAgICAgICAgXCJyb2xlc1wiOiBbXCJ0aGUgcm9sZXMgcmV0cmlldmVkIGZyb20gY2xpZW50IGF1dGhlbnRpY2F0aW9uIGluIEtleWNsb2FrXCJdLFxuICAgICAgICBcImdyb3Vwc1wiOiBbXCJ0aGUgZ3JvdXBzIHJldHJpZXZlZCBmcm9tIGNsaWVudCBhdXRoZW50aWNhdGlvbiBpbiBLZXljbG9ha1wiXVxuICAgICAgfVxuICAgIH1cbiAgYGBgXG5cbiAgVGhlIGF1dGhlbnRpY2F0aW9uIG1vZHVsZSB3aWxsIHRlc3QgaWYgdGhlIGF1dGhEYXRhIGlzIHRoZSBzYW1lIGFzIHRoZVxuICB1c2VyaW5mbyBvYXV0aCBjYWxsLCBjb21wYXJpbmcgdGhlIGF0dHJpYnV0ZXNcblxuICBDb3B5IHRoZSBKU09OIGNvbmZpZyBmaWxlIGdlbmVyYXRlZCBvbiBLZXljbG9hayAoaHR0cHM6Ly93d3cua2V5Y2xvYWsub3JnL2RvY3MvbGF0ZXN0L3NlY3VyaW5nX2FwcHMvaW5kZXguaHRtbCNfamF2YXNjcmlwdF9hZGFwdGVyKVxuICBhbmQgcGFzdGUgaXQgaW5zaWRlIG9mIGEgZm9sZGVyIChFeC46IGBhdXRoL2tleWNsb2FrLmpzb25gKSBpbiB5b3VyIHNlcnZlci5cblxuICBUaGUgb3B0aW9ucyBwYXNzZWQgdG8gUGFyc2Ugc2VydmVyOlxuXG4gIGBgYFxuICAgIHtcbiAgICAgIGF1dGg6IHtcbiAgICAgICAga2V5Y2xvYWs6IHtcbiAgICAgICAgICBjb25maWc6IHJlcXVpcmUoYC4vYXV0aC9rZXljbG9hay5qc29uYClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgYGBgXG4qL1xuXG5jb25zdCB7IFBhcnNlIH0gPSByZXF1aXJlKCdwYXJzZS9ub2RlJyk7XG5jb25zdCBodHRwc1JlcXVlc3QgPSByZXF1aXJlKCcuL2h0dHBzUmVxdWVzdCcpO1xuXG5jb25zdCBhcnJheXNFcXVhbCA9IChfYXJyMSwgX2FycjIpID0+IHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KF9hcnIxKSB8fCAhQXJyYXkuaXNBcnJheShfYXJyMikgfHwgX2FycjEubGVuZ3RoICE9PSBfYXJyMi5sZW5ndGgpIHJldHVybiBmYWxzZTtcblxuICB2YXIgYXJyMSA9IF9hcnIxLmNvbmNhdCgpLnNvcnQoKTtcbiAgdmFyIGFycjIgPSBfYXJyMi5jb25jYXQoKS5zb3J0KCk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIxLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGFycjFbaV0gIT09IGFycjJbaV0pIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcblxuY29uc3QgaGFuZGxlQXV0aCA9IGFzeW5jICh7IGFjY2Vzc190b2tlbiwgaWQsIHJvbGVzLCBncm91cHMgfSA9IHt9LCB7IGNvbmZpZyB9ID0ge30pID0+IHtcbiAgaWYgKCEoYWNjZXNzX3Rva2VuICYmIGlkKSkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnTWlzc2luZyBhY2Nlc3MgdG9rZW4gYW5kL29yIFVzZXIgaWQnKTtcbiAgfVxuICBpZiAoIWNvbmZpZyB8fCAhKGNvbmZpZ1snYXV0aC1zZXJ2ZXItdXJsJ10gJiYgY29uZmlnWydyZWFsbSddKSkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnTWlzc2luZyBrZXljbG9hayBjb25maWd1cmF0aW9uJyk7XG4gIH1cbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGh0dHBzUmVxdWVzdC5nZXQoe1xuICAgICAgaG9zdDogY29uZmlnWydhdXRoLXNlcnZlci11cmwnXSxcbiAgICAgIHBhdGg6IGAvcmVhbG1zLyR7Y29uZmlnWydyZWFsbSddfS9wcm90b2NvbC9vcGVuaWQtY29ubmVjdC91c2VyaW5mb2AsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIEF1dGhvcml6YXRpb246ICdCZWFyZXIgJyArIGFjY2Vzc190b2tlbixcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgaWYgKFxuICAgICAgcmVzcG9uc2UgJiZcbiAgICAgIHJlc3BvbnNlLmRhdGEgJiZcbiAgICAgIHJlc3BvbnNlLmRhdGEuc3ViID09IGlkICYmXG4gICAgICBhcnJheXNFcXVhbChyZXNwb25zZS5kYXRhLnJvbGVzLCByb2xlcykgJiZcbiAgICAgIGFycmF5c0VxdWFsKHJlc3BvbnNlLmRhdGEuZ3JvdXBzLCBncm91cHMpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnSW52YWxpZCBhdXRoZW50aWNhdGlvbicpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKGUgaW5zdGFuY2VvZiBQYXJzZS5FcnJvcikge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gICAgY29uc3QgZXJyb3IgPSBKU09OLnBhcnNlKGUudGV4dCk7XG4gICAgaWYgKGVycm9yLmVycm9yX2Rlc2NyaXB0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSE9TVElOR19FUlJPUiwgZXJyb3IuZXJyb3JfZGVzY3JpcHRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICAgIFBhcnNlLkVycm9yLkhPU1RJTkdfRVJST1IsXG4gICAgICAgICdDb3VsZCBub3QgY29ubmVjdCB0byB0aGUgYXV0aGVudGljYXRpb24gc2VydmVyJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cbn07XG5cbi8qXG4gIEBwYXJhbSB7T2JqZWN0fSBhdXRoRGF0YTogdGhlIGNsaWVudCBwcm92aWRlZCBhdXRoRGF0YVxuICBAcGFyYW0ge3N0cmluZ30gYXV0aERhdGEuYWNjZXNzX3Rva2VuOiB0aGUgYWNjZXNzX3Rva2VuIHJldHJpZXZlZCBmcm9tIGNsaWVudCBhdXRoZW50aWNhdGlvbiBpbiBLZXljbG9ha1xuICBAcGFyYW0ge3N0cmluZ30gYXV0aERhdGEuaWQ6IHRoZSBpZCByZXRyaWV2ZWQgZnJvbSBjbGllbnQgYXV0aGVudGljYXRpb24gaW4gS2V5Y2xvYWtcbiAgQHBhcmFtIHtBcnJheX0gIGF1dGhEYXRhLnJvbGVzOiB0aGUgcm9sZXMgcmV0cmlldmVkIGZyb20gY2xpZW50IGF1dGhlbnRpY2F0aW9uIGluIEtleWNsb2FrXG4gIEBwYXJhbSB7QXJyYXl9ICBhdXRoRGF0YS5ncm91cHM6IHRoZSBncm91cHMgcmV0cmlldmVkIGZyb20gY2xpZW50IGF1dGhlbnRpY2F0aW9uIGluIEtleWNsb2FrXG4gIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zOiBhZGRpdGlvbmFsIG9wdGlvbnNcbiAgQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMuY29uZmlnOiB0aGUgY29uZmlnIG9iamVjdCBwYXNzZWQgZHVyaW5nIFBhcnNlIFNlcnZlciBpbnN0YW50aWF0aW9uXG4qL1xuZnVuY3Rpb24gdmFsaWRhdGVBdXRoRGF0YShhdXRoRGF0YSwgb3B0aW9ucyA9IHt9KSB7XG4gIHJldHVybiBoYW5kbGVBdXRoKGF1dGhEYXRhLCBvcHRpb25zKTtcbn1cblxuLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCBmdWxmaWxscyBpZiB0aGlzIGFwcCBpZCBpcyB2YWxpZC5cbmZ1bmN0aW9uIHZhbGlkYXRlQXBwSWQoKSB7XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHZhbGlkYXRlQXBwSWQsXG4gIHZhbGlkYXRlQXV0aERhdGEsXG59O1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE1BQU07RUFBRUE7QUFBTSxDQUFDLEdBQUdDLE9BQU8sQ0FBQyxZQUFZLENBQUM7QUFDdkMsTUFBTUMsWUFBWSxHQUFHRCxPQUFPLENBQUMsZ0JBQWdCLENBQUM7QUFFOUMsTUFBTUUs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
115
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYXJzZSIsInJlcXVpcmUiLCJodHRwc1JlcXVlc3QiLCJhcnJheXNFcXVhbCIsIl9hcnIxIiwiX2FycjIiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJhcnIxIiwiY29uY2F0Iiwic29ydCIsImFycjIiLCJpIiwiaGFuZGxlQXV0aCIsImFjY2Vzc190b2tlbiIsImlkIiwicm9sZXMiLCJncm91cHMiLCJjb25maWciLCJFcnJvciIsIk9CSkVDVF9OT1RfRk9VTkQiLCJyZXNwb25zZSIsImdldCIsImhvc3QiLCJwYXRoIiwiaGVhZGVycyIsIkF1dGhvcml6YXRpb24iLCJkYXRhIiwic3ViIiwiZSIsImVycm9yIiwiSlNPTiIsInBhcnNlIiwidGV4dCIsImVycm9yX2Rlc2NyaXB0aW9uIiwiSE9TVElOR19FUlJPUiIsInZhbGlkYXRlQXV0aERhdGEiLCJhdXRoRGF0YSIsIm9wdGlvbnMiLCJ2YWxpZGF0ZUFwcElkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0FkYXB0ZXJzL0F1dGgva2V5Y2xvYWsuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgIyBQYXJzZSBTZXJ2ZXIgS2V5Y2xvYWsgQXV0aGVudGljYXRpb25cblxuICAjIyBLZXljbG9hayBgYXV0aERhdGFgXG5cbiAgYGBgXG4gICAge1xuICAgICAgXCJrZXljbG9ha1wiOiB7XG4gICAgICAgIFwiYWNjZXNzX3Rva2VuXCI6IFwiYWNjZXNzIHRva2VuIHlvdSBnb3QgZnJvbSBrZXljbG9hayBKUyBjbGllbnQgYXV0aGVudGljYXRpb25cIixcbiAgICAgICAgXCJpZFwiOiBcInRoZSBpZCByZXRyaWV2ZWQgZnJvbSBjbGllbnQgYXV0aGVudGljYXRpb24gaW4gS2V5Y2xvYWtcIixcbiAgICAgICAgXCJyb2xlc1wiOiBbXCJ0aGUgcm9sZXMgcmV0cmlldmVkIGZyb20gY2xpZW50IGF1dGhlbnRpY2F0aW9uIGluIEtleWNsb2FrXCJdLFxuICAgICAgICBcImdyb3Vwc1wiOiBbXCJ0aGUgZ3JvdXBzIHJldHJpZXZlZCBmcm9tIGNsaWVudCBhdXRoZW50aWNhdGlvbiBpbiBLZXljbG9ha1wiXVxuICAgICAgfVxuICAgIH1cbiAgYGBgXG5cbiAgVGhlIGF1dGhlbnRpY2F0aW9uIG1vZHVsZSB3aWxsIHRlc3QgaWYgdGhlIGF1dGhEYXRhIGlzIHRoZSBzYW1lIGFzIHRoZVxuICB1c2VyaW5mbyBvYXV0aCBjYWxsLCBjb21wYXJpbmcgdGhlIGF0dHJpYnV0ZXNcblxuICBDb3B5IHRoZSBKU09OIGNvbmZpZyBmaWxlIGdlbmVyYXRlZCBvbiBLZXljbG9hayAoaHR0cHM6Ly93d3cua2V5Y2xvYWsub3JnL2RvY3MvbGF0ZXN0L3NlY3VyaW5nX2FwcHMvaW5kZXguaHRtbCNfamF2YXNjcmlwdF9hZGFwdGVyKVxuICBhbmQgcGFzdGUgaXQgaW5zaWRlIG9mIGEgZm9sZGVyIChFeC46IGBhdXRoL2tleWNsb2FrLmpzb25gKSBpbiB5b3VyIHNlcnZlci5cblxuICBUaGUgb3B0aW9ucyBwYXNzZWQgdG8gUGFyc2Ugc2VydmVyOlxuXG4gIGBgYFxuICAgIHtcbiAgICAgIGF1dGg6IHtcbiAgICAgICAga2V5Y2xvYWs6IHtcbiAgICAgICAgICBjb25maWc6IHJlcXVpcmUoYC4vYXV0aC9rZXljbG9hay5qc29uYClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgYGBgXG4qL1xuXG5jb25zdCB7IFBhcnNlIH0gPSByZXF1aXJlKCdwYXJzZS9ub2RlJyk7XG5jb25zdCBodHRwc1JlcXVlc3QgPSByZXF1aXJlKCcuL2h0dHBzUmVxdWVzdCcpO1xuXG5jb25zdCBhcnJheXNFcXVhbCA9IChfYXJyMSwgX2FycjIpID0+IHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KF9hcnIxKSB8fCAhQXJyYXkuaXNBcnJheShfYXJyMikgfHwgX2FycjEubGVuZ3RoICE9PSBfYXJyMi5sZW5ndGgpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgdmFyIGFycjEgPSBfYXJyMS5jb25jYXQoKS5zb3J0KCk7XG4gIHZhciBhcnIyID0gX2FycjIuY29uY2F0KCkuc29ydCgpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyMS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChhcnIxW2ldICE9PSBhcnIyW2ldKSB7IHJldHVybiBmYWxzZTsgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5jb25zdCBoYW5kbGVBdXRoID0gYXN5bmMgKHsgYWNjZXNzX3Rva2VuLCBpZCwgcm9sZXMsIGdyb3VwcyB9ID0ge30sIHsgY29uZmlnIH0gPSB7fSkgPT4ge1xuICBpZiAoIShhY2Nlc3NfdG9rZW4gJiYgaWQpKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsICdNaXNzaW5nIGFjY2VzcyB0b2tlbiBhbmQvb3IgVXNlciBpZCcpO1xuICB9XG4gIGlmICghY29uZmlnIHx8ICEoY29uZmlnWydhdXRoLXNlcnZlci11cmwnXSAmJiBjb25maWdbJ3JlYWxtJ10pKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsICdNaXNzaW5nIGtleWNsb2FrIGNvbmZpZ3VyYXRpb24nKTtcbiAgfVxuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgaHR0cHNSZXF1ZXN0LmdldCh7XG4gICAgICBob3N0OiBjb25maWdbJ2F1dGgtc2VydmVyLXVybCddLFxuICAgICAgcGF0aDogYC9yZWFsbXMvJHtjb25maWdbJ3JlYWxtJ119L3Byb3RvY29sL29wZW5pZC1jb25uZWN0L3VzZXJpbmZvYCxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgQXV0aG9yaXphdGlvbjogJ0JlYXJlciAnICsgYWNjZXNzX3Rva2VuLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICBpZiAoXG4gICAgICByZXNwb25zZSAmJlxuICAgICAgcmVzcG9uc2UuZGF0YSAmJlxuICAgICAgcmVzcG9uc2UuZGF0YS5zdWIgPT0gaWQgJiZcbiAgICAgIGFycmF5c0VxdWFsKHJlc3BvbnNlLmRhdGEucm9sZXMsIHJvbGVzKSAmJlxuICAgICAgYXJyYXlzRXF1YWwocmVzcG9uc2UuZGF0YS5ncm91cHMsIGdyb3VwcylcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsICdJbnZhbGlkIGF1dGhlbnRpY2F0aW9uJyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoZSBpbnN0YW5jZW9mIFBhcnNlLkVycm9yKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgICBjb25zdCBlcnJvciA9IEpTT04ucGFyc2UoZS50ZXh0KTtcbiAgICBpZiAoZXJyb3IuZXJyb3JfZGVzY3JpcHRpb24pIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5IT1NUSU5HX0VSUk9SLCBlcnJvci5lcnJvcl9kZXNjcmlwdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgICAgUGFyc2UuRXJyb3IuSE9TVElOR19FUlJPUixcbiAgICAgICAgJ0NvdWxkIG5vdCBjb25uZWN0IHRvIHRoZSBhdXRoZW50aWNhdGlvbiBzZXJ2ZXInXG4gICAgICApO1xuICAgIH1cbiAgfVxufTtcblxuLypcbiAgQHBhcmFtIHtPYmplY3R9IGF1dGhEYXRhOiB0aGUgY2xpZW50IHByb3ZpZGVkIGF1dGhEYXRhXG4gIEBwYXJhbSB7c3RyaW5nfSBhdXRoRGF0YS5hY2Nlc3NfdG9rZW46IHRoZSBhY2Nlc3NfdG9rZW4gcmV0cmlldmVkIGZyb20gY2xpZW50IGF1dGhlbnRpY2F0aW9uIGluIEtleWNsb2FrXG4gIEBwYXJhbSB7c3RyaW5nfSBhdXRoRGF0YS5pZDogdGhlIGlkIHJldHJpZXZlZCBmcm9tIGNsaWVudCBhdXRoZW50aWNhdGlvbiBpbiBLZXljbG9ha1xuICBAcGFyYW0ge0FycmF5fSAgYXV0aERhdGEucm9sZXM6IHRoZSByb2xlcyByZXRyaWV2ZWQgZnJvbSBjbGllbnQgYXV0aGVudGljYXRpb24gaW4gS2V5Y2xvYWtcbiAgQHBhcmFtIHtBcnJheX0gIGF1dGhEYXRhLmdyb3VwczogdGhlIGdyb3VwcyByZXRyaWV2ZWQgZnJvbSBjbGllbnQgYXV0aGVudGljYXRpb24gaW4gS2V5Y2xvYWtcbiAgQHBhcmFtIHtPYmplY3R9IG9wdGlvbnM6IGFkZGl0aW9uYWwgb3B0aW9uc1xuICBAcGFyYW0ge09iamVjdH0gb3B0aW9ucy5jb25maWc6IHRoZSBjb25maWcgb2JqZWN0IHBhc3NlZCBkdXJpbmcgUGFyc2UgU2VydmVyIGluc3RhbnRpYXRpb25cbiovXG5mdW5jdGlvbiB2YWxpZGF0ZUF1dGhEYXRhKGF1dGhEYXRhLCBvcHRpb25zID0ge30pIHtcbiAgcmV0dXJuIGhhbmRsZUF1dGgoYXV0aERhdGEsIG9wdGlvbnMpO1xufVxuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGZ1bGZpbGxzIGlmIHRoaXMgYXBwIGlkIGlzIHZhbGlkLlxuZnVuY3Rpb24gdmFsaWRhdGVBcHBJZCgpIHtcbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgdmFsaWRhdGVBcHBJZCxcbiAgdmFsaWRhdGVBdXRoRGF0YSxcbn07XG4iXSwibWFwcGluZ3MiOiI7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTTtFQUFFQTtBQUFNLENBQUMsR0FBR0MsT0FBTyxDQUFDLFlBQVksQ0FBQztBQUN2QyxNQUFNQyxZQUFZLEdBQUdELE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztBQUU5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
package/lib/Auth.js CHANGED
@@ -454,14 +454,18 @@ const findUsersWithAuthData = (config, authData) => {
454
454
  }) : Promise.resolve([]);
455
455
  };
456
456
  const hasMutatedAuthData = (authData, userAuthData) => {
457
- if (!userAuthData) return {
458
- hasMutatedAuthData: true,
459
- mutatedAuthData: authData
460
- };
457
+ if (!userAuthData) {
458
+ return {
459
+ hasMutatedAuthData: true,
460
+ mutatedAuthData: authData
461
+ };
462
+ }
461
463
  const mutatedAuthData = {};
462
464
  Object.keys(authData).forEach(provider => {
463
465
  // Anonymous provider is not handled this way
464
- if (provider === 'anonymous') return;
466
+ if (provider === 'anonymous') {
467
+ return;
468
+ }
465
469
  const providerData = authData[provider];
466
470
  const userProviderAuthData = userAuthData[provider];
467
471
  if (!(0, _util.isDeepStrictEqual)(providerData, userProviderAuthData)) {
@@ -605,4 +609,4 @@ module.exports = {
605
609
  checkIfUserHasProvidedConfiguredProvidersForLogin,
606
610
  handleAuthDataValidation
607
611
  };
608
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdXRpbCIsInJlcXVpcmUiLCJfdHJpZ2dlcnMiLCJfbG9nZ2VyIiwiX1Jlc3RRdWVyeSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfUmVzdFdyaXRlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0Iiwib3duS2V5cyIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiaSIsIl90b1ByaW1pdGl2ZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIlBhcnNlIiwiQXV0aCIsImNvbmZpZyIsImNhY2hlQ29udHJvbGxlciIsInVuZGVmaW5lZCIsImlzTWFzdGVyIiwiaXNNYWludGVuYW5jZSIsImlzUmVhZE9ubHkiLCJ1c2VyIiwiaW5zdGFsbGF0aW9uSWQiLCJ1c2VyUm9sZXMiLCJmZXRjaGVkUm9sZXMiLCJyb2xlUHJvbWlzZSIsInByb3RvdHlwZSIsImlzVW5hdXRoZW50aWNhdGVkIiwibWFzdGVyIiwibWFpbnRlbmFuY2UiLCJyZWFkT25seSIsIm5vYm9keSIsInNob3VsZFVwZGF0ZVNlc3Npb25FeHBpcnkiLCJzZXNzaW9uIiwicmVzZXRBZnRlciIsInNlc3Npb25MZW5ndGgiLCJsYXN0VXBkYXRlZCIsIkRhdGUiLCJ1cGRhdGVkQXQiLCJza2lwUmFuZ2UiLCJzZXRUaW1lIiwiZ2V0VGltZSIsInRocm90dGxlIiwicmVuZXdTZXNzaW9uSWZOZWVkZWQiLCJzZXNzaW9uVG9rZW4iLCJleHRlbmRTZXNzaW9uT25Vc2UiLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0IiwicXVlcnkiLCJSZXN0UXVlcnkiLCJtZXRob2QiLCJNZXRob2QiLCJnZXQiLCJhdXRoIiwicnVuQmVmb3JlRmluZCIsImNsYXNzTmFtZSIsInJlc3RXaGVyZSIsInJlc3RPcHRpb25zIiwibGltaXQiLCJyZXN1bHRzIiwiZXhlY3V0ZSIsImV4cGlyZXNBdCIsImdlbmVyYXRlU2Vzc2lvbkV4cGlyZXNBdCIsIlJlc3RXcml0ZSIsIm9iamVjdElkIiwiX2VuY29kZSIsImNvZGUiLCJFcnJvciIsIk9CSkVDVF9OT1RfRk9VTkQiLCJsb2dnZXIiLCJlcnJvciIsImdldEF1dGhGb3JTZXNzaW9uVG9rZW4iLCJ1c2VySlNPTiIsImNhY2hlZFVzZXIiLCJmcm9tSlNPTiIsIlByb21pc2UiLCJyZXNvbHZlIiwiaW5jbHVkZSIsIlF1ZXJ5IiwiU2Vzc2lvbiIsImVxdWFsVG8iLCJmaW5kIiwidXNlTWFzdGVyS2V5IiwibWFwIiwib2JqIiwidG9KU09OIiwiSU5WQUxJRF9TRVNTSU9OX1RPS0VOIiwibm93IiwiaXNvIiwic3RhcnRzV2l0aCIsIklOVEVSTkFMX1NFUlZFUl9FUlJPUiIsInBhc3N3b3JkIiwicHV0IiwidXNlck9iamVjdCIsImdldEF1dGhGb3JMZWdhY3lTZXNzaW9uVG9rZW4iLCJfc2Vzc2lvbl90b2tlbiIsInRoZW4iLCJyZXNwb25zZSIsImdldFVzZXJSb2xlcyIsIl9sb2FkUm9sZXMiLCJnZXRSb2xlc0ZvclVzZXIiLCJ1c2VycyIsIl9fdHlwZSIsImlkIiwiZWFjaCIsInJlc3VsdCIsIlJvbGUiLCJjYWNoZWRSb2xlcyIsInJvbGUiLCJjYWNoZVJvbGVzIiwicm9sZXNNYXAiLCJyZWR1Y2UiLCJtIiwibmFtZXMiLCJuYW1lIiwiaWRzIiwicm9sZU5hbWVzIiwiX2dldEFsbFJvbGVzTmFtZXNGb3JSb2xlSWRzIiwiQXJyYXkiLCJjbGVhclJvbGVDYWNoZSIsImRlbCIsImdldFJvbGVzQnlJZHMiLCJpbnMiLCJjb250YWluZWRJbiIsInJvbGVzIiwiJGluIiwicm9sZUlEcyIsInF1ZXJpZWRSb2xlcyIsInJvbGVJRCIsIndhc1F1ZXJpZWQiLCJTZXQiLCJyZXN1bHRNYXAiLCJtZW1vIiwiY29uY2F0IiwiZmluZFVzZXJzV2l0aEF1dGhEYXRhIiwiYXV0aERhdGEiLCJwcm92aWRlcnMiLCJwcm92aWRlciIsInF1ZXJ5S2V5IiwicSIsImRhdGFiYXNlIiwiJG9yIiwiaGFzTXV0YXRlZEF1dGhEYXRhIiwidXNlckF1dGhEYXRhIiwibXV0YXRlZEF1dGhEYXRhIiwicHJvdmlkZXJEYXRhIiwidXNlclByb3ZpZGVyQXV0aERhdGEiLCJpc0RlZXBTdHJpY3RFcXVhbCIsImNoZWNrSWZVc2VySGFzUHJvdmlkZWRDb25maWd1cmVkUHJvdmlkZXJzRm9yTG9naW4iLCJyZXEiLCJzYXZlZFVzZXJQcm92aWRlcnMiLCJhZGFwdGVyIiwiYXV0aERhdGFNYW5hZ2VyIiwiZ2V0VmFsaWRhdG9yRm9yUHJvdmlkZXIiLCJoYXNQcm92aWRlZEFTb2xvUHJvdmlkZXIiLCJzb21lIiwicG9saWN5IiwiYWRkaXRpb25Qcm92aWRlcnNOb3RGb3VuZCIsImhhc1Byb3ZpZGVkQXRMZWFzdE9uZUFkZGl0aW9uYWxQcm92aWRlciIsInJlcXVlc3RPYmplY3QiLCJpcCIsIk9USEVSX0NBVVNFIiwiam9pbiIsImhhbmRsZUF1dGhEYXRhVmFsaWRhdGlvbiIsImZvdW5kVXNlciIsIlVzZXIiLCJnZXRVc2VySWQiLCJmZXRjaCIsInVwZGF0ZWRPYmplY3QiLCJidWlsZFBhcnNlT2JqZWN0cyIsImdldFJlcXVlc3RPYmplY3QiLCJhY2MiLCJhdXRoRGF0YVJlc3BvbnNlIiwiYXV0aEtleXMiLCJzb3J0IiwidmFsaWRhdG9yIiwiYXV0aFByb3ZpZGVyIiwiZW5hYmxlZCIsIlVOU1VQUE9SVEVEX1NFUlZJQ0UiLCJ2YWxpZGF0aW9uUmVzdWx0IiwidHJpZ2dlck5hbWUiLCJkb05vdFNhdmUiLCJzYXZlIiwiZXJyIiwicmVzb2x2ZUVycm9yIiwiU0NSSVBUX0ZBSUxFRCIsIm1lc3NhZ2UiLCJ1c2VyU3RyaW5nIiwiZGF0YSIsIkpTT04iLCJzdHJpbmdpZnkiLCJhdXRoZW50aWNhdGlvblN0ZXAiLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL0F1dGguanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgUGFyc2UgPSByZXF1aXJlKCdwYXJzZS9ub2RlJyk7XG5pbXBvcnQgeyBpc0RlZXBTdHJpY3RFcXVhbCB9IGZyb20gJ3V0aWwnO1xuaW1wb3J0IHsgZ2V0UmVxdWVzdE9iamVjdCwgcmVzb2x2ZUVycm9yIH0gZnJvbSAnLi90cmlnZ2Vycyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgUmVzdFF1ZXJ5IGZyb20gJy4vUmVzdFF1ZXJ5JztcbmltcG9ydCBSZXN0V3JpdGUgZnJvbSAnLi9SZXN0V3JpdGUnO1xuXG4vLyBBbiBBdXRoIG9iamVjdCB0ZWxscyB5b3Ugd2hvIGlzIHJlcXVlc3Rpbmcgc29tZXRoaW5nIGFuZCB3aGV0aGVyXG4vLyB0aGUgbWFzdGVyIGtleSB3YXMgdXNlZC5cbi8vIHVzZXJPYmplY3QgaXMgYSBQYXJzZS5Vc2VyIGFuZCBjYW4gYmUgbnVsbCBpZiB0aGVyZSdzIG5vIHVzZXIuXG5mdW5jdGlvbiBBdXRoKHtcbiAgY29uZmlnLFxuICBjYWNoZUNvbnRyb2xsZXIgPSB1bmRlZmluZWQsXG4gIGlzTWFzdGVyID0gZmFsc2UsXG4gIGlzTWFpbnRlbmFuY2UgPSBmYWxzZSxcbiAgaXNSZWFkT25seSA9IGZhbHNlLFxuICB1c2VyLFxuICBpbnN0YWxsYXRpb25JZCxcbn0pIHtcbiAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gIHRoaXMuY2FjaGVDb250cm9sbGVyID0gY2FjaGVDb250cm9sbGVyIHx8IChjb25maWcgJiYgY29uZmlnLmNhY2hlQ29udHJvbGxlcik7XG4gIHRoaXMuaW5zdGFsbGF0aW9uSWQgPSBpbnN0YWxsYXRpb25JZDtcbiAgdGhpcy5pc01hc3RlciA9IGlzTWFzdGVyO1xuICB0aGlzLmlzTWFpbnRlbmFuY2UgPSBpc01haW50ZW5hbmNlO1xuICB0aGlzLnVzZXIgPSB1c2VyO1xuICB0aGlzLmlzUmVhZE9ubHkgPSBpc1JlYWRPbmx5O1xuXG4gIC8vIEFzc3VtaW5nIGEgdXNlcnMgcm9sZXMgd29uJ3QgY2hhbmdlIGR1cmluZyBhIHNpbmdsZSByZXF1ZXN0LCB3ZSdsbFxuICAvLyBvbmx5IGxvYWQgdGhlbSBvbmNlLlxuICB0aGlzLnVzZXJSb2xlcyA9IFtdO1xuICB0aGlzLmZldGNoZWRSb2xlcyA9IGZhbHNlO1xuICB0aGlzLnJvbGVQcm9taXNlID0gbnVsbDtcbn1cblxuLy8gV2hldGhlciB0aGlzIGF1dGggY291bGQgcG9zc2libHkgbW9kaWZ5IHRoZSBnaXZlbiB1c2VyIGlkLlxuLy8gSXQgc3RpbGwgY291bGQgYmUgZm9yYmlkZGVuIHZpYSBBQ0xzIGV2ZW4gaWYgdGhpcyByZXR1cm5zIHRydWUuXG5BdXRoLnByb3RvdHlwZS5pc1VuYXV0aGVudGljYXRlZCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuaXNNYXN0ZXIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHRoaXMuaXNNYWludGVuYW5jZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodGhpcy51c2VyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufTtcblxuLy8gQSBoZWxwZXIgdG8gZ2V0IGEgbWFzdGVyLWxldmVsIEF1dGggb2JqZWN0XG5mdW5jdGlvbiBtYXN0ZXIoY29uZmlnKSB7XG4gIHJldHVybiBuZXcgQXV0aCh7IGNvbmZpZywgaXNNYXN0ZXI6IHRydWUgfSk7XG59XG5cbi8vIEEgaGVscGVyIHRvIGdldCBhIG1haW50ZW5hbmNlLWxldmVsIEF1dGggb2JqZWN0XG5mdW5jdGlvbiBtYWludGVuYW5jZShjb25maWcpIHtcbiAgcmV0dXJuIG5ldyBBdXRoKHsgY29uZmlnLCBpc01haW50ZW5hbmNlOiB0cnVlIH0pO1xufVxuXG4vLyBBIGhlbHBlciB0byBnZXQgYSBtYXN0ZXItbGV2ZWwgQXV0aCBvYmplY3RcbmZ1bmN0aW9uIHJlYWRPbmx5KGNvbmZpZykge1xuICByZXR1cm4gbmV3IEF1dGgoeyBjb25maWcsIGlzTWFzdGVyOiB0cnVlLCBpc1JlYWRPbmx5OiB0cnVlIH0pO1xufVxuXG4vLyBBIGhlbHBlciB0byBnZXQgYSBub2JvZHktbGV2ZWwgQXV0aCBvYmplY3RcbmZ1bmN0aW9uIG5vYm9keShjb25maWcpIHtcbiAgcmV0dXJuIG5ldyBBdXRoKHsgY29uZmlnLCBpc01hc3RlcjogZmFsc2UgfSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgc2Vzc2lvbiBzaG91bGQgYmUgdXBkYXRlZCBiYXNlZCBvbiBsYXN0IHVwZGF0ZSB0aW1lICYgc2Vzc2lvbiBsZW5ndGguXG4gKi9cbmZ1bmN0aW9uIHNob3VsZFVwZGF0ZVNlc3Npb25FeHBpcnkoY29uZmlnLCBzZXNzaW9uKSB7XG4gIGNvbnN0IHJlc2V0QWZ0ZXIgPSBjb25maWcuc2Vzc2lvbkxlbmd0aCAvIDI7XG4gIGNvbnN0IGxhc3RVcGRhdGVkID0gbmV3IERhdGUoc2Vzc2lvbj8udXBkYXRlZEF0KTtcbiAgY29uc3Qgc2tpcFJhbmdlID0gbmV3IERhdGUoKTtcbiAgc2tpcFJhbmdlLnNldFRpbWUoc2tpcFJhbmdlLmdldFRpbWUoKSAtIHJlc2V0QWZ0ZXIgKiAxMDAwKTtcbiAgcmV0dXJuIGxhc3RVcGRhdGVkIDw9IHNraXBSYW5nZTtcbn1cblxuY29uc3QgdGhyb3R0bGUgPSB7fTtcbmNvbnN0IHJlbmV3U2Vzc2lvbklmTmVlZGVkID0gYXN5bmMgKHsgY29uZmlnLCBzZXNzaW9uLCBzZXNzaW9uVG9rZW4gfSkgPT4ge1xuICBpZiAoIWNvbmZpZz8uZXh0ZW5kU2Vzc2lvbk9uVXNlKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNsZWFyVGltZW91dCh0aHJvdHRsZVtzZXNzaW9uVG9rZW5dKTtcbiAgdGhyb3R0bGVbc2Vzc2lvblRva2VuXSA9IHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIXNlc3Npb24pIHtcbiAgICAgICAgY29uc3QgcXVlcnkgPSBhd2FpdCBSZXN0UXVlcnkoe1xuICAgICAgICAgIG1ldGhvZDogUmVzdFF1ZXJ5Lk1ldGhvZC5nZXQsXG4gICAgICAgICAgY29uZmlnLFxuICAgICAgICAgIGF1dGg6IG1hc3Rlcihjb25maWcpLFxuICAgICAgICAgIHJ1bkJlZm9yZUZpbmQ6IGZhbHNlLFxuICAgICAgICAgIGNsYXNzTmFtZTogJ19TZXNzaW9uJyxcbiAgICAgICAgICByZXN0V2hlcmU6IHsgc2Vzc2lvblRva2VuIH0sXG4gICAgICAgICAgcmVzdE9wdGlvbnM6IHsgbGltaXQ6IDEgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHsgcmVzdWx0cyB9ID0gYXdhaXQgcXVlcnkuZXhlY3V0ZSgpO1xuICAgICAgICBzZXNzaW9uID0gcmVzdWx0c1swXTtcbiAgICAgIH1cbiAgICAgIGlmICghc2hvdWxkVXBkYXRlU2Vzc2lvbkV4cGlyeShjb25maWcsIHNlc3Npb24pIHx8ICFzZXNzaW9uKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGV4cGlyZXNBdCA9IGNvbmZpZy5nZW5lcmF0ZVNlc3Npb25FeHBpcmVzQXQoKTtcbiAgICAgIGF3YWl0IG5ldyBSZXN0V3JpdGUoXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgbWFzdGVyKGNvbmZpZyksXG4gICAgICAgICdfU2Vzc2lvbicsXG4gICAgICAgIHsgb2JqZWN0SWQ6IHNlc3Npb24ub2JqZWN0SWQgfSxcbiAgICAgICAgeyBleHBpcmVzQXQ6IFBhcnNlLl9lbmNvZGUoZXhwaXJlc0F0KSB9XG4gICAgICApLmV4ZWN1dGUoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZT8uY29kZSAhPT0gUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCkge1xuICAgICAgICBsb2dnZXIuZXJyb3IoJ0NvdWxkIG5vdCB1cGRhdGUgc2Vzc2lvbiBleHBpcnk6ICcsIGUpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgNTAwKTtcbn07XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYW4gQXV0aCBvYmplY3RcbmNvbnN0IGdldEF1dGhGb3JTZXNzaW9uVG9rZW4gPSBhc3luYyBmdW5jdGlvbiAoe1xuICBjb25maWcsXG4gIGNhY2hlQ29udHJvbGxlcixcbiAgc2Vzc2lvblRva2VuLFxuICBpbnN0YWxsYXRpb25JZCxcbn0pIHtcbiAgY2FjaGVDb250cm9sbGVyID0gY2FjaGVDb250cm9sbGVyIHx8IChjb25maWcgJiYgY29uZmlnLmNhY2hlQ29udHJvbGxlcik7XG4gIGlmIChjYWNoZUNvbnRyb2xsZXIpIHtcbiAgICBjb25zdCB1c2VySlNPTiA9IGF3YWl0IGNhY2hlQ29udHJvbGxlci51c2VyLmdldChzZXNzaW9uVG9rZW4pO1xuICAgIGlmICh1c2VySlNPTikge1xuICAgICAgY29uc3QgY2FjaGVkVXNlciA9IFBhcnNlLk9iamVjdC5mcm9tSlNPTih1c2VySlNPTik7XG4gICAgICByZW5ld1Nlc3Npb25JZk5lZWRlZCh7IGNvbmZpZywgc2Vzc2lvblRva2VuIH0pO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShcbiAgICAgICAgbmV3IEF1dGgoe1xuICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICBjYWNoZUNvbnRyb2xsZXIsXG4gICAgICAgICAgaXNNYXN0ZXI6IGZhbHNlLFxuICAgICAgICAgIGluc3RhbGxhdGlvbklkLFxuICAgICAgICAgIHVzZXI6IGNhY2hlZFVzZXIsXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGxldCByZXN1bHRzO1xuICBpZiAoY29uZmlnKSB7XG4gICAgY29uc3QgcmVzdE9wdGlvbnMgPSB7XG4gICAgICBsaW1pdDogMSxcbiAgICAgIGluY2x1ZGU6ICd1c2VyJyxcbiAgICB9O1xuICAgIGNvbnN0IFJlc3RRdWVyeSA9IHJlcXVpcmUoJy4vUmVzdFF1ZXJ5Jyk7XG4gICAgY29uc3QgcXVlcnkgPSBhd2FpdCBSZXN0UXVlcnkoe1xuICAgICAgbWV0aG9kOiBSZXN0UXVlcnkuTWV0aG9kLmdldCxcbiAgICAgIGNvbmZpZyxcbiAgICAgIHJ1bkJlZm9yZUZpbmQ6IGZhbHNlLFxuICAgICAgYXV0aDogbWFzdGVyKGNvbmZpZyksXG4gICAgICBjbGFzc05hbWU6ICdfU2Vzc2lvbicsXG4gICAgICByZXN0V2hlcmU6IHsgc2Vzc2lvblRva2VuIH0sXG4gICAgICByZXN0T3B0aW9ucyxcbiAgICB9KTtcbiAgICByZXN1bHRzID0gKGF3YWl0IHF1ZXJ5LmV4ZWN1dGUoKSkucmVzdWx0cztcbiAgfSBlbHNlIHtcbiAgICByZXN1bHRzID0gKFxuICAgICAgYXdhaXQgbmV3IFBhcnNlLlF1ZXJ5KFBhcnNlLlNlc3Npb24pXG4gICAgICAgIC5saW1pdCgxKVxuICAgICAgICAuaW5jbHVkZSgndXNlcicpXG4gICAgICAgIC5lcXVhbFRvKCdzZXNzaW9uVG9rZW4nLCBzZXNzaW9uVG9rZW4pXG4gICAgICAgIC5maW5kKHsgdXNlTWFzdGVyS2V5OiB0cnVlIH0pXG4gICAgKS5tYXAob2JqID0+IG9iai50b0pTT04oKSk7XG4gIH1cblxuICBpZiAocmVzdWx0cy5sZW5ndGggIT09IDEgfHwgIXJlc3VsdHNbMF1bJ3VzZXInXSkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX1NFU1NJT05fVE9LRU4sICdJbnZhbGlkIHNlc3Npb24gdG9rZW4nKTtcbiAgfVxuICBjb25zdCBzZXNzaW9uID0gcmVzdWx0c1swXTtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKSxcbiAgICBleHBpcmVzQXQgPSBzZXNzaW9uLmV4cGlyZXNBdCA/IG5ldyBEYXRlKHNlc3Npb24uZXhwaXJlc0F0LmlzbykgOiB1bmRlZmluZWQ7XG4gIGlmIChleHBpcmVzQXQgPCBub3cpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9TRVNTSU9OX1RPS0VOLCAnU2Vzc2lvbiB0b2tlbiBpcyBleHBpcmVkLicpO1xuICB9XG4gIGNvbnN0IG9iaiA9IHNlc3Npb24udXNlcjtcblxuICBpZiAodHlwZW9mIG9ialsnb2JqZWN0SWQnXSA9PT0gJ3N0cmluZycgJiYgb2JqWydvYmplY3RJZCddLnN0YXJ0c1dpdGgoJ3JvbGU6JykpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5URVJOQUxfU0VSVkVSX0VSUk9SLCAnSW52YWxpZCBvYmplY3QgSUQuJyk7XG4gIH1cblxuICBkZWxldGUgb2JqLnBhc3N3b3JkO1xuICBvYmpbJ2NsYXNzTmFtZSddID0gJ19Vc2VyJztcbiAgb2JqWydzZXNzaW9uVG9rZW4nXSA9IHNlc3Npb25Ub2tlbjtcbiAgaWYgKGNhY2hlQ29udHJvbGxlcikge1xuICAgIGNhY2hlQ29udHJvbGxlci51c2VyLnB1dChzZXNzaW9uVG9rZW4sIG9iaik7XG4gIH1cbiAgcmVuZXdTZXNzaW9uSWZOZWVkZWQoeyBjb25maWcsIHNlc3Npb24sIHNlc3Npb25Ub2tlbiB9KTtcbiAgY29uc3QgdXNlck9iamVjdCA9IFBhcnNlLk9iamVjdC5mcm9tSlNPTihvYmopO1xuICByZXR1cm4gbmV3IEF1dGgoe1xuICAgIGNvbmZpZyxcbiAgICBjYWNoZUNvbnRyb2xsZXIsXG4gICAgaXNNYXN0ZXI6IGZhbHNlLFxuICAgIGluc3RhbGxhdGlvbklkLFxuICAgIHVzZXI6IHVzZXJPYmplY3QsXG4gIH0pO1xufTtcblxudmFyIGdldEF1dGhGb3JMZWdhY3lTZXNzaW9uVG9rZW4gPSBhc3luYyBmdW5jdGlvbiAoeyBjb25maWcsIHNlc3Npb25Ub2tlbiwgaW5zdGFsbGF0aW9uSWQgfSkge1xuICB2YXIgcmVzdE9wdGlvbnMgPSB7XG4gICAgbGltaXQ6IDEsXG4gIH07XG4gIGNvbnN0IFJlc3RRdWVyeSA9IHJlcXVpcmUoJy4vUmVzdFF1ZXJ5Jyk7XG4gIHZhciBxdWVyeSA9IGF3YWl0IFJlc3RRdWVyeSh7XG4gICAgbWV0aG9kOiBSZXN0UXVlcnkuTWV0aG9kLmdldCxcbiAgICBjb25maWcsXG4gICAgcnVuQmVmb3JlRmluZDogZmFsc2UsXG4gICAgYXV0aDogbWFzdGVyKGNvbmZpZyksXG4gICAgY2xhc3NOYW1lOiAnX1VzZXInLFxuICAgIHJlc3RXaGVyZTogeyBfc2Vzc2lvbl90b2tlbjogc2Vzc2lvblRva2VuIH0sXG4gICAgcmVzdE9wdGlvbnMsXG4gIH0pO1xuICByZXR1cm4gcXVlcnkuZXhlY3V0ZSgpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgIHZhciByZXN1bHRzID0gcmVzcG9uc2UucmVzdWx0cztcbiAgICBpZiAocmVzdWx0cy5sZW5ndGggIT09IDEpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX1NFU1NJT05fVE9LRU4sICdpbnZhbGlkIGxlZ2FjeSBzZXNzaW9uIHRva2VuJyk7XG4gICAgfVxuICAgIGNvbnN0IG9iaiA9IHJlc3VsdHNbMF07XG4gICAgb2JqLmNsYXNzTmFtZSA9ICdfVXNlcic7XG4gICAgY29uc3QgdXNlck9iamVjdCA9IFBhcnNlLk9iamVjdC5mcm9tSlNPTihvYmopO1xuICAgIHJldHVybiBuZXcgQXV0aCh7XG4gICAgICBjb25maWcsXG4gICAgICBpc01hc3RlcjogZmFsc2UsXG4gICAgICBpbnN0YWxsYXRpb25JZCxcbiAgICAgIHVzZXI6IHVzZXJPYmplY3QsXG4gICAgfSk7XG4gIH0pO1xufTtcblxuLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhbiBhcnJheSBvZiByb2xlIG5hbWVzXG5BdXRoLnByb3RvdHlwZS5nZXRVc2VyUm9sZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLmlzTWFzdGVyIHx8IHRoaXMuaXNNYWludGVuYW5jZSB8fCAhdGhpcy51c2VyKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gIH1cbiAgaWYgKHRoaXMuZmV0Y2hlZFJvbGVzKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLnVzZXJSb2xlcyk7XG4gIH1cbiAgaWYgKHRoaXMucm9sZVByb21pc2UpIHtcbiAgICByZXR1cm4gdGhpcy5yb2xlUHJvbWlzZTtcbiAgfVxuICB0aGlzLnJvbGVQcm9taXNlID0gdGhpcy5fbG9hZFJvbGVzKCk7XG4gIHJldHVybiB0aGlzLnJvbGVQcm9taXNlO1xufTtcblxuQXV0aC5wcm90b3R5cGUuZ2V0Um9sZXNGb3JVc2VyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAvL1N0YWNrIGFsbCBQYXJzZS5Sb2xlXG4gIGNvbnN0IHJlc3VsdHMgPSBbXTtcbiAgaWYgKHRoaXMuY29uZmlnKSB7XG4gICAgY29uc3QgcmVzdFdoZXJlID0ge1xuICAgICAgdXNlcnM6IHtcbiAgICAgICAgX190eXBlOiAnUG9pbnRlcicsXG4gICAgICAgIGNsYXNzTmFtZTogJ19Vc2VyJyxcbiAgICAgICAgb2JqZWN0SWQ6IHRoaXMudXNlci5pZCxcbiAgICAgIH0sXG4gICAgfTtcbiAgICBjb25zdCBSZXN0UXVlcnkgPSByZXF1aXJlKCcuL1Jlc3RRdWVyeScpO1xuICAgIGNvbnN0IHF1ZXJ5ID0gYXdhaXQgUmVzdFF1ZXJ5KHtcbiAgICAgIG1ldGhvZDogUmVzdFF1ZXJ5Lk1ldGhvZC5maW5kLFxuICAgICAgcnVuQmVmb3JlRmluZDogZmFsc2UsXG4gICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxuICAgICAgYXV0aDogbWFzdGVyKHRoaXMuY29uZmlnKSxcbiAgICAgIGNsYXNzTmFtZTogJ19Sb2xlJyxcbiAgICAgIHJlc3RXaGVyZSxcbiAgICB9KTtcbiAgICBhd2FpdCBxdWVyeS5lYWNoKHJlc3VsdCA9PiByZXN1bHRzLnB1c2gocmVzdWx0KSk7XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgbmV3IFBhcnNlLlF1ZXJ5KFBhcnNlLlJvbGUpXG4gICAgICAuZXF1YWxUbygndXNlcnMnLCB0aGlzLnVzZXIpXG4gICAgICAuZWFjaChyZXN1bHQgPT4gcmVzdWx0cy5wdXNoKHJlc3VsdC50b0pTT04oKSksIHsgdXNlTWFzdGVyS2V5OiB0cnVlIH0pO1xuICB9XG4gIHJldHVybiByZXN1bHRzO1xufTtcblxuLy8gSXRlcmF0ZXMgdGhyb3VnaCB0aGUgcm9sZSB0cmVlIGFuZCBjb21waWxlcyBhIHVzZXIncyByb2xlc1xuQXV0aC5wcm90b3R5cGUuX2xvYWRSb2xlcyA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuY2FjaGVDb250cm9sbGVyKSB7XG4gICAgY29uc3QgY2FjaGVkUm9sZXMgPSBhd2FpdCB0aGlzLmNhY2hlQ29udHJvbGxlci5yb2xlLmdldCh0aGlzLnVzZXIuaWQpO1xuICAgIGlmIChjYWNoZWRSb2xlcyAhPSBudWxsKSB7XG4gICAgICB0aGlzLmZldGNoZWRSb2xlcyA9IHRydWU7XG4gICAgICB0aGlzLnVzZXJSb2xlcyA9IGNhY2hlZFJvbGVzO1xuICAgICAgcmV0dXJuIGNhY2hlZFJvbGVzO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZpcnN0IGdldCB0aGUgcm9sZSBpZHMgdGhpcyB1c2VyIGlzIGRpcmVjdGx5IGEgbWVtYmVyIG9mXG4gIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCB0aGlzLmdldFJvbGVzRm9yVXNlcigpO1xuICBpZiAoIXJlc3VsdHMubGVuZ3RoKSB7XG4gICAgdGhpcy51c2VyUm9sZXMgPSBbXTtcbiAgICB0aGlzLmZldGNoZWRSb2xlcyA9IHRydWU7XG4gICAgdGhpcy5yb2xlUHJvbWlzZSA9IG51bGw7XG5cbiAgICB0aGlzLmNhY2hlUm9sZXMoKTtcbiAgICByZXR1cm4gdGhpcy51c2VyUm9sZXM7XG4gIH1cblxuICBjb25zdCByb2xlc01hcCA9IHJlc3VsdHMucmVkdWNlKFxuICAgIChtLCByKSA9PiB7XG4gICAgICBtLm5hbWVzLnB1c2goci5uYW1lKTtcbiAgICAgIG0uaWRzLnB1c2goci5vYmplY3RJZCk7XG4gICAgICByZXR1cm4gbTtcbiAgICB9LFxuICAgIHsgaWRzOiBbXSwgbmFtZXM6IFtdIH1cbiAgKTtcblxuICAvLyBydW4gdGhlIHJlY3Vyc2l2ZSBmaW5kaW5nXG4gIGNvbnN0IHJvbGVOYW1lcyA9IGF3YWl0IHRoaXMuX2dldEFsbFJvbGVzTmFtZXNGb3JSb2xlSWRzKHJvbGVzTWFwLmlkcywgcm9sZXNNYXAubmFtZXMpO1xuICB0aGlzLnVzZXJSb2xlcyA9IHJvbGVOYW1lcy5tYXAociA9PiB7XG4gICAgcmV0dXJuICdyb2xlOicgKyByO1xuICB9KTtcbiAgdGhpcy5mZXRjaGVkUm9sZXMgPSB0cnVlO1xuICB0aGlzLnJvbGVQcm9taXNlID0gbnVsbDtcbiAgdGhpcy5jYWNoZVJvbGVzKCk7XG4gIHJldHVybiB0aGlzLnVzZXJSb2xlcztcbn07XG5cbkF1dGgucHJvdG90eXBlLmNhY2hlUm9sZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghdGhpcy5jYWNoZUNvbnRyb2xsZXIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdGhpcy5jYWNoZUNvbnRyb2xsZXIucm9sZS5wdXQodGhpcy51c2VyLmlkLCBBcnJheSguLi50aGlzLnVzZXJSb2xlcykpO1xuICByZXR1cm4gdHJ1ZTtcbn07XG5cbkF1dGgucHJvdG90eXBlLmNsZWFyUm9sZUNhY2hlID0gZnVuY3Rpb24gKHNlc3Npb25Ub2tlbikge1xuICBpZiAoIXRoaXMuY2FjaGVDb250cm9sbGVyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHRoaXMuY2FjaGVDb250cm9sbGVyLnJvbGUuZGVsKHRoaXMudXNlci5pZCk7XG4gIHRoaXMuY2FjaGVDb250cm9sbGVyLnVzZXIuZGVsKHNlc3Npb25Ub2tlbik7XG4gIHJldHVybiB0cnVlO1xufTtcblxuQXV0aC5wcm90b3R5cGUuZ2V0Um9sZXNCeUlkcyA9IGFzeW5jIGZ1bmN0aW9uIChpbnMpIHtcbiAgY29uc3QgcmVzdWx0cyA9IFtdO1xuICAvLyBCdWlsZCBhbiBPUiBxdWVyeSBhY3Jvc3MgYWxsIHBhcmVudFJvbGVzXG4gIGlmICghdGhpcy5jb25maWcpIHtcbiAgICBhd2FpdCBuZXcgUGFyc2UuUXVlcnkoUGFyc2UuUm9sZSlcbiAgICAgIC5jb250YWluZWRJbihcbiAgICAgICAgJ3JvbGVzJyxcbiAgICAgICAgaW5zLm1hcChpZCA9PiB7XG4gICAgICAgICAgY29uc3Qgcm9sZSA9IG5ldyBQYXJzZS5PYmplY3QoUGFyc2UuUm9sZSk7XG4gICAgICAgICAgcm9sZS5pZCA9IGlkO1xuICAgICAgICAgIHJldHVybiByb2xlO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLmVhY2gocmVzdWx0ID0+IHJlc3VsdHMucHVzaChyZXN1bHQudG9KU09OKCkpLCB7IHVzZU1hc3RlcktleTogdHJ1ZSB9KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCByb2xlcyA9IGlucy5tYXAoaWQgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgX190eXBlOiAnUG9pbnRlcicsXG4gICAgICAgIGNsYXNzTmFtZTogJ19Sb2xlJyxcbiAgICAgICAgb2JqZWN0SWQ6IGlkLFxuICAgICAgfTtcbiAgICB9KTtcbiAgICBjb25zdCByZXN0V2hlcmUgPSB7IHJvbGVzOiB7ICRpbjogcm9sZXMgfSB9O1xuICAgIGNvbnN0IFJlc3RRdWVyeSA9IHJlcXVpcmUoJy4vUmVzdFF1ZXJ5Jyk7XG4gICAgY29uc3QgcXVlcnkgPSBhd2FpdCBSZXN0UXVlcnkoe1xuICAgICAgbWV0aG9kOiBSZXN0UXVlcnkuTWV0aG9kLmZpbmQsXG4gICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxuICAgICAgcnVuQmVmb3JlRmluZDogZmFsc2UsXG4gICAgICBhdXRoOiBtYXN0ZXIodGhpcy5jb25maWcpLFxuICAgICAgY2xhc3NOYW1lOiAnX1JvbGUnLFxuICAgICAgcmVzdFdoZXJlLFxuICAgIH0pO1xuICAgIGF3YWl0IHF1ZXJ5LmVhY2gocmVzdWx0ID0+IHJlc3VsdHMucHVzaChyZXN1bHQpKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0cztcbn07XG5cbi8vIEdpdmVuIGEgbGlzdCBvZiByb2xlSWRzLCBmaW5kIGFsbCB0aGUgcGFyZW50IHJvbGVzLCByZXR1cm5zIGEgcHJvbWlzZSB3aXRoIGFsbCBuYW1lc1xuQXV0aC5wcm90b3R5cGUuX2dldEFsbFJvbGVzTmFtZXNGb3JSb2xlSWRzID0gZnVuY3Rpb24gKHJvbGVJRHMsIG5hbWVzID0gW10sIHF1ZXJpZWRSb2xlcyA9IHt9KSB7XG4gIGNvbnN0IGlucyA9IHJvbGVJRHMuZmlsdGVyKHJvbGVJRCA9PiB7XG4gICAgY29uc3Qgd2FzUXVlcmllZCA9IHF1ZXJpZWRSb2xlc1tyb2xlSURdICE9PSB0cnVlO1xuICAgIHF1ZXJpZWRSb2xlc1tyb2xlSURdID0gdHJ1ZTtcbiAgICByZXR1cm4gd2FzUXVlcmllZDtcbiAgfSk7XG5cbiAgLy8gYWxsIHJvbGVzIGFyZSBhY2NvdW50ZWQgZm9yLCByZXR1cm4gdGhlIG5hbWVzXG4gIGlmIChpbnMubGVuZ3RoID09IDApIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFsuLi5uZXcgU2V0KG5hbWVzKV0pO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuZ2V0Um9sZXNCeUlkcyhpbnMpXG4gICAgLnRoZW4ocmVzdWx0cyA9PiB7XG4gICAgICAvLyBOb3RoaW5nIGZvdW5kXG4gICAgICBpZiAoIXJlc3VsdHMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobmFtZXMpO1xuICAgICAgfVxuICAgICAgLy8gTWFwIHRoZSByZXN1bHRzIHdpdGggYWxsIElkcyBhbmQgbmFtZXNcbiAgICAgIGNvbnN0IHJlc3VsdE1hcCA9IHJlc3VsdHMucmVkdWNlKFxuICAgICAgICAobWVtbywgcm9sZSkgPT4ge1xuICAgICAgICAgIG1lbW8ubmFtZXMucHVzaChyb2xlLm5hbWUpO1xuICAgICAgICAgIG1lbW8uaWRzLnB1c2gocm9sZS5vYmplY3RJZCk7XG4gICAgICAgICAgcmV0dXJuIG1lbW87XG4gICAgICAgIH0sXG4gICAgICAgIHsgaWRzOiBbXSwgbmFtZXM6IFtdIH1cbiAgICAgICk7XG4gICAgICAvLyBzdG9yZSB0aGUgbmV3IGZvdW5kIG5hbWVzXG4gICAgICBuYW1lcyA9IG5hbWVzLmNvbmNhdChyZXN1bHRNYXAubmFtZXMpO1xuICAgICAgLy8gZmluZCB0aGUgbmV4dCBvbmVzLCBjaXJjdWxhciByb2xlcyB3aWxsIGJlIGN1dFxuICAgICAgcmV0dXJuIHRoaXMuX2dldEFsbFJvbGVzTmFtZXNGb3JSb2xlSWRzKHJlc3VsdE1hcC5pZHMsIG5hbWVzLCBxdWVyaWVkUm9sZXMpO1xuICAgIH0pXG4gICAgLnRoZW4obmFtZXMgPT4ge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbLi4ubmV3IFNldChuYW1lcyldKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGZpbmRVc2Vyc1dpdGhBdXRoRGF0YSA9IChjb25maWcsIGF1dGhEYXRhKSA9PiB7XG4gIGNvbnN0IHByb3ZpZGVycyA9IE9iamVjdC5rZXlzKGF1dGhEYXRhKTtcbiAgY29uc3QgcXVlcnkgPSBwcm92aWRlcnNcbiAgICAucmVkdWNlKChtZW1vLCBwcm92aWRlcikgPT4ge1xuICAgICAgaWYgKCFhdXRoRGF0YVtwcm92aWRlcl0gfHwgKGF1dGhEYXRhICYmICFhdXRoRGF0YVtwcm92aWRlcl0uaWQpKSB7XG4gICAgICAgIHJldHVybiBtZW1vO1xuICAgICAgfVxuICAgICAgY29uc3QgcXVlcnlLZXkgPSBgYXV0aERhdGEuJHtwcm92aWRlcn0uaWRgO1xuICAgICAgY29uc3QgcXVlcnkgPSB7fTtcbiAgICAgIHF1ZXJ5W3F1ZXJ5S2V5XSA9IGF1dGhEYXRhW3Byb3ZpZGVyXS5pZDtcbiAgICAgIG1lbW8ucHVzaChxdWVyeSk7XG4gICAgICByZXR1cm4gbWVtbztcbiAgICB9LCBbXSlcbiAgICAuZmlsdGVyKHEgPT4ge1xuICAgICAgcmV0dXJuIHR5cGVvZiBxICE9PSAndW5kZWZpbmVkJztcbiAgICB9KTtcblxuICByZXR1cm4gcXVlcnkubGVuZ3RoID4gMFxuICAgID8gY29uZmlnLmRhdGFiYXNlLmZpbmQoJ19Vc2VyJywgeyAkb3I6IHF1ZXJ5IH0sIHsgbGltaXQ6IDIgfSlcbiAgICA6IFByb21pc2UucmVzb2x2ZShbXSk7XG59O1xuXG5jb25zdCBoYXNNdXRhdGVkQXV0aERhdGEgPSAoYXV0aERhdGEsIHVzZXJBdXRoRGF0YSkgPT4ge1xuICBpZiAoIXVzZXJBdXRoRGF0YSkgcmV0dXJuIHsgaGFzTXV0YXRlZEF1dGhEYXRhOiB0cnVlLCBtdXRhdGVkQXV0aERhdGE6IGF1dGhEYXRhIH07XG4gIGNvbnN0IG11dGF0ZWRBdXRoRGF0YSA9IHt9O1xuICBPYmplY3Qua2V5cyhhdXRoRGF0YSkuZm9yRWFjaChwcm92aWRlciA9PiB7XG4gICAgLy8gQW5vbnltb3VzIHByb3ZpZGVyIGlzIG5vdCBoYW5kbGVkIHRoaXMgd2F5XG4gICAgaWYgKHByb3ZpZGVyID09PSAnYW5vbnltb3VzJykgcmV0dXJuO1xuICAgIGNvbnN0IHByb3ZpZGVyRGF0YSA9IGF1dGhEYXRhW3Byb3ZpZGVyXTtcbiAgICBjb25zdCB1c2VyUHJvdmlkZXJBdXRoRGF0YSA9IHVzZXJBdXRoRGF0YVtwcm92aWRlcl07XG4gICAgaWYgKCFpc0RlZXBTdHJpY3RFcXVhbChwcm92aWRlckRhdGEsIHVzZXJQcm92aWRlckF1dGhEYXRhKSkge1xuICAgICAgbXV0YXRlZEF1dGhEYXRhW3Byb3ZpZGVyXSA9IHByb3ZpZGVyRGF0YTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBoYXNNdXRhdGVkQXV0aERhdGEgPSBPYmplY3Qua2V5cyhtdXRhdGVkQXV0aERhdGEpLmxlbmd0aCAhPT0gMDtcbiAgcmV0dXJuIHsgaGFzTXV0YXRlZEF1dGhEYXRhLCBtdXRhdGVkQXV0aERhdGEgfTtcbn07XG5cbmNvbnN0IGNoZWNrSWZVc2VySGFzUHJvdmlkZWRDb25maWd1cmVkUHJvdmlkZXJzRm9yTG9naW4gPSAoXG4gIHJlcSA9IHt9LFxuICBhdXRoRGF0YSA9IHt9LFxuICB1c2VyQXV0aERhdGEgPSB7fSxcbiAgY29uZmlnXG4pID0+IHtcbiAgY29uc3Qgc2F2ZWRVc2VyUHJvdmlkZXJzID0gT2JqZWN0LmtleXModXNlckF1dGhEYXRhKS5tYXAocHJvdmlkZXIgPT4gKHtcbiAgICBuYW1lOiBwcm92aWRlcixcbiAgICBhZGFwdGVyOiBjb25maWcuYXV0aERhdGFNYW5hZ2VyLmdldFZhbGlkYXRvckZvclByb3ZpZGVyKHByb3ZpZGVyKS5hZGFwdGVyLFxuICB9KSk7XG5cbiAgY29uc3QgaGFzUHJvdmlkZWRBU29sb1Byb3ZpZGVyID0gc2F2ZWRVc2VyUHJvdmlkZXJzLnNvbWUoXG4gICAgcHJvdmlkZXIgPT5cbiAgICAgIHByb3ZpZGVyICYmIHByb3ZpZGVyLmFkYXB0ZXIgJiYgcHJvdmlkZXIuYWRhcHRlci5wb2xpY3kgPT09ICdzb2xvJyAmJiBhdXRoRGF0YVtwcm92aWRlci5uYW1lXVxuICApO1xuXG4gIC8vIFNvbG8gcHJvdmlkZXJzIGNhbiBiZSBjb25zaWRlcmVkIGFzIHNhZmUsIHNvIHdlIGRvIG5vdCBoYXZlIHRvIGNoZWNrIGlmIHRoZSB1c2VyIG5lZWRzXG4gIC8vIHRvIHByb3ZpZGUgYW4gYWRkaXRpb25hbCBwcm92aWRlciB0byBsb2dpbi4gQW4gYXV0aCBhZGFwdGVyIHdpdGggXCJzb2xvXCIgKGxpa2Ugd2ViYXV0aG4pIG1lYW5zXG4gIC8vIG5vIFwiYWRkaXRpb25hbFwiIGF1dGggbmVlZHMgdG8gYmUgcHJvdmlkZWQgdG8gbG9naW4gKGxpa2UgT1RQLCBNRkEpXG4gIGlmIChoYXNQcm92aWRlZEFTb2xvUHJvdmlkZXIpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBhZGRpdGlvblByb3ZpZGVyc05vdEZvdW5kID0gW107XG4gIGNvbnN0IGhhc1Byb3ZpZGVkQXRMZWFzdE9uZUFkZGl0aW9uYWxQcm92aWRlciA9IHNhdmVkVXNlclByb3ZpZGVycy5zb21lKHByb3ZpZGVyID0+IHtcbiAgICBsZXQgcG9saWN5ID0gcHJvdmlkZXIuYWRhcHRlci5wb2xpY3k7XG4gICAgaWYgKHR5cGVvZiBwb2xpY3kgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnN0IHJlcXVlc3RPYmplY3QgPSB7XG4gICAgICAgIGlwOiByZXEuY29uZmlnLmlwLFxuICAgICAgICB1c2VyOiByZXEuYXV0aC51c2VyLFxuICAgICAgICBtYXN0ZXI6IHJlcS5hdXRoLmlzTWFzdGVyLFxuICAgICAgfTtcbiAgICAgIHBvbGljeSA9IHBvbGljeS5jYWxsKHByb3ZpZGVyLmFkYXB0ZXIsIHJlcXVlc3RPYmplY3QsIHVzZXJBdXRoRGF0YVtwcm92aWRlci5uYW1lXSk7XG4gICAgfVxuICAgIGlmIChwb2xpY3kgPT09ICdhZGRpdGlvbmFsJykge1xuICAgICAgaWYgKGF1dGhEYXRhW3Byb3ZpZGVyLm5hbWVdKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gUHVzaCBtaXNzaW5nIHByb3ZpZGVyIGZvciBlcnJvciBtZXNzYWdlXG4gICAgICAgIGFkZGl0aW9uUHJvdmlkZXJzTm90Rm91bmQucHVzaChwcm92aWRlci5uYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBpZiAoaGFzUHJvdmlkZWRBdExlYXN0T25lQWRkaXRpb25hbFByb3ZpZGVyIHx8ICFhZGRpdGlvblByb3ZpZGVyc05vdEZvdW5kLmxlbmd0aCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICBQYXJzZS5FcnJvci5PVEhFUl9DQVVTRSxcbiAgICBgTWlzc2luZyBhZGRpdGlvbmFsIGF1dGhEYXRhICR7YWRkaXRpb25Qcm92aWRlcnNOb3RGb3VuZC5qb2luKCcsJyl9YFxuICApO1xufTtcblxuLy8gVmFsaWRhdGUgZWFjaCBhdXRoRGF0YSBzdGVwLWJ5LXN0ZXAgYW5kIHJldHVybiB0aGUgcHJvdmlkZXIgcmVzcG9uc2VzXG5jb25zdCBoYW5kbGVBdXRoRGF0YVZhbGlkYXRpb24gPSBhc3luYyAoYXV0aERhdGEsIHJlcSwgZm91bmRVc2VyKSA9PiB7XG4gIGxldCB1c2VyO1xuICBpZiAoZm91bmRVc2VyKSB7XG4gICAgdXNlciA9IFBhcnNlLlVzZXIuZnJvbUpTT04oeyBjbGFzc05hbWU6ICdfVXNlcicsIC4uLmZvdW5kVXNlciB9KTtcbiAgICAvLyBGaW5kIHVzZXIgYnkgc2Vzc2lvbiBhbmQgY3VycmVudCBvYmplY3RJZDsgb25seSBwYXNzIHVzZXIgaWYgaXQncyB0aGUgY3VycmVudCB1c2VyIG9yIG1hc3RlciBrZXkgaXMgcHJvdmlkZWRcbiAgfSBlbHNlIGlmIChcbiAgICAocmVxLmF1dGggJiZcbiAgICAgIHJlcS5hdXRoLnVzZXIgJiZcbiAgICAgIHR5cGVvZiByZXEuZ2V0VXNlcklkID09PSAnZnVuY3Rpb24nICYmXG4gICAgICByZXEuZ2V0VXNlcklkKCkgPT09IHJlcS5hdXRoLnVzZXIuaWQpIHx8XG4gICAgKHJlcS5hdXRoICYmIHJlcS5hdXRoLmlzTWFzdGVyICYmIHR5cGVvZiByZXEuZ2V0VXNlcklkID09PSAnZnVuY3Rpb24nICYmIHJlcS5nZXRVc2VySWQoKSlcbiAgKSB7XG4gICAgdXNlciA9IG5ldyBQYXJzZS5Vc2VyKCk7XG4gICAgdXNlci5pZCA9IHJlcS5hdXRoLmlzTWFzdGVyID8gcmVxLmdldFVzZXJJZCgpIDogcmVxLmF1dGgudXNlci5pZDtcbiAgICBhd2FpdCB1c2VyLmZldGNoKHsgdXNlTWFzdGVyS2V5OiB0cnVlIH0pO1xuICB9XG5cbiAgY29uc3QgeyB1cGRhdGVkT2JqZWN0IH0gPSByZXEuYnVpbGRQYXJzZU9iamVjdHMoKTtcbiAgY29uc3QgcmVxdWVzdE9iamVjdCA9IGdldFJlcXVlc3RPYmplY3QodW5kZWZpbmVkLCByZXEuYXV0aCwgdXBkYXRlZE9iamVjdCwgdXNlciwgcmVxLmNvbmZpZyk7XG4gIC8vIFBlcmZvcm0gdmFsaWRhdGlvbiBhcyBzdGVwLWJ5LXN0ZXAgcGlwZWxpbmUgZm9yIGJldHRlciBlcnJvciBjb25zaXN0ZW5jeVxuICAvLyBhbmQgYWxzbyB0byBhdm9pZCB0byB0cmlnZ2VyIGEgcHJvdmlkZXIgKGxpa2UgT1RQIFNNUykgaWYgYW5vdGhlciBvbmUgZmFpbHNcbiAgY29uc3QgYWNjID0geyBhdXRoRGF0YToge30sIGF1dGhEYXRhUmVzcG9uc2U6IHt9IH07XG4gIGNvbnN0IGF1dGhLZXlzID0gT2JqZWN0LmtleXMoYXV0aERhdGEpLnNvcnQoKTtcbiAgZm9yIChjb25zdCBwcm92aWRlciBvZiBhdXRoS2V5cykge1xuICAgIGxldCBtZXRob2QgPSAnJztcbiAgICB0cnkge1xuICAgICAgaWYgKGF1dGhEYXRhW3Byb3ZpZGVyXSA9PT0gbnVsbCkge1xuICAgICAgICBhY2MuYXV0aERhdGFbcHJvdmlkZXJdID0gbnVsbDtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCB7IHZhbGlkYXRvciB9ID0gcmVxLmNvbmZpZy5hdXRoRGF0YU1hbmFnZXIuZ2V0VmFsaWRhdG9yRm9yUHJvdmlkZXIocHJvdmlkZXIpO1xuICAgICAgY29uc3QgYXV0aFByb3ZpZGVyID0gKHJlcS5jb25maWcuYXV0aCB8fCB7fSlbcHJvdmlkZXJdIHx8IHt9O1xuICAgICAgaWYgKCF2YWxpZGF0b3IgfHwgYXV0aFByb3ZpZGVyLmVuYWJsZWQgPT09IGZhbHNlKSB7XG4gICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgICAgICBQYXJzZS5FcnJvci5VTlNVUFBPUlRFRF9TRVJWSUNFLFxuICAgICAgICAgICdUaGlzIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCBpcyB1bnN1cHBvcnRlZC4nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBsZXQgdmFsaWRhdGlvblJlc3VsdCA9IGF3YWl0IHZhbGlkYXRvcihhdXRoRGF0YVtwcm92aWRlcl0sIHJlcSwgdXNlciwgcmVxdWVzdE9iamVjdCk7XG4gICAgICBtZXRob2QgPSB2YWxpZGF0aW9uUmVzdWx0ICYmIHZhbGlkYXRpb25SZXN1bHQubWV0aG9kO1xuICAgICAgcmVxdWVzdE9iamVjdC50cmlnZ2VyTmFtZSA9IG1ldGhvZDtcbiAgICAgIGlmICh2YWxpZGF0aW9uUmVzdWx0ICYmIHZhbGlkYXRpb25SZXN1bHQudmFsaWRhdG9yKSB7XG4gICAgICAgIHZhbGlkYXRpb25SZXN1bHQgPSBhd2FpdCB2YWxpZGF0aW9uUmVzdWx0LnZhbGlkYXRvcigpO1xuICAgICAgfVxuICAgICAgaWYgKCF2YWxpZGF0aW9uUmVzdWx0KSB7XG4gICAgICAgIGFjYy5hdXRoRGF0YVtwcm92aWRlcl0gPSBhdXRoRGF0YVtwcm92aWRlcl07XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFPYmplY3Qua2V5cyh2YWxpZGF0aW9uUmVzdWx0KS5sZW5ndGgpIHtcbiAgICAgICAgYWNjLmF1dGhEYXRhW3Byb3ZpZGVyXSA9IGF1dGhEYXRhW3Byb3ZpZGVyXTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWxpZGF0aW9uUmVzdWx0LnJlc3BvbnNlKSB7XG4gICAgICAgIGFjYy5hdXRoRGF0YVJlc3BvbnNlW3Byb3ZpZGVyXSA9IHZhbGlkYXRpb25SZXN1bHQucmVzcG9uc2U7XG4gICAgICB9XG4gICAgICAvLyBTb21lIGF1dGggcHJvdmlkZXJzIGFmdGVyIGluaXRpYWxpemF0aW9uIHdpbGwgYXZvaWQgdG8gcmVwbGFjZSBhdXRoRGF0YSBhbHJlYWR5IHN0b3JlZFxuICAgICAgaWYgKCF2YWxpZGF0aW9uUmVzdWx0LmRvTm90U2F2ZSkge1xuICAgICAgICBhY2MuYXV0aERhdGFbcHJvdmlkZXJdID0gdmFsaWRhdGlvblJlc3VsdC5zYXZlIHx8IGF1dGhEYXRhW3Byb3ZpZGVyXTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnN0IGUgPSByZXNvbHZlRXJyb3IoZXJyLCB7XG4gICAgICAgIGNvZGU6IFBhcnNlLkVycm9yLlNDUklQVF9GQUlMRUQsXG4gICAgICAgIG1lc3NhZ2U6ICdBdXRoIGZhaWxlZC4gVW5rbm93biBlcnJvci4nLFxuICAgICAgfSk7XG4gICAgICBjb25zdCB1c2VyU3RyaW5nID1cbiAgICAgICAgcmVxLmF1dGggJiYgcmVxLmF1dGgudXNlciA/IHJlcS5hdXRoLnVzZXIuaWQgOiByZXEuZGF0YS5vYmplY3RJZCB8fCB1bmRlZmluZWQ7XG4gICAgICBsb2dnZXIuZXJyb3IoXG4gICAgICAgIGBGYWlsZWQgcnVubmluZyBhdXRoIHN0ZXAgJHttZXRob2R9IGZvciAke3Byb3ZpZGVyfSBmb3IgdXNlciAke3VzZXJTdHJpbmd9IHdpdGggRXJyb3I6IGAgK1xuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGUpLFxuICAgICAgICB7XG4gICAgICAgICAgYXV0aGVudGljYXRpb25TdGVwOiBtZXRob2QsXG4gICAgICAgICAgZXJyb3I6IGUsXG4gICAgICAgICAgdXNlcjogdXNlclN0cmluZyxcbiAgICAgICAgICBwcm92aWRlcixcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG4gIHJldHVybiBhY2M7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgQXV0aCxcbiAgbWFzdGVyLFxuICBtYWludGVuYW5jZSxcbiAgbm9ib2R5LFxuICByZWFkT25seSxcbiAgc2hvdWxkVXBkYXRlU2Vzc2lvbkV4cGlyeSxcbiAgZ2V0QXV0aEZvclNlc3Npb25Ub2tlbixcbiAgZ2V0QXV0aEZvckxlZ2FjeVNlc3Npb25Ub2tlbixcbiAgZmluZFVzZXJzV2l0aEF1dGhEYXRhLFxuICBoYXNNdXRhdGVkQXV0aERhdGEsXG4gIGNoZWNrSWZVc2VySGFzUHJvdmlkZWRDb25maWd1cmVkUHJvdmlkZXJzRm9yTG9naW4sXG4gIGhhbmRsZUF1dGhEYXRhVmFsaWRhdGlvbixcbn07XG4iXSwibWFwcGluZ3MiOiI7O0FBQ0EsSUFBQUEsS0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsU0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsVUFBQSxHQUFBQyxzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQUssVUFBQSxHQUFBRCxzQkFBQSxDQUFBSixPQUFBO0FBQW9DLFNBQUFJLHVCQUFBRSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBQUEsU0FBQUcsUUFBQUgsQ0FBQSxFQUFBSSxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFQLENBQUEsT0FBQU0sTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQVIsQ0FBQSxHQUFBSSxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBWCxDQUFBLEVBQUFJLENBQUEsRUFBQVEsVUFBQSxPQUFBUCxDQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxDQUFBLEVBQUFJLENBQUEsWUFBQUosQ0FBQTtBQUFBLFNBQUFVLGNBQUFmLENBQUEsYUFBQUksQ0FBQSxNQUFBQSxDQUFBLEdBQUFZLFNBQUEsQ0FBQUMsTUFBQSxFQUFBYixDQUFBLFVBQUFDLENBQUEsV0FBQVcsU0FBQSxDQUFBWixDQUFBLElBQUFZLFNBQUEsQ0FBQVosQ0FBQSxRQUFBQSxDQUFBLE9BQUFELE9BQUEsQ0FBQUcsTUFBQSxDQUFBRCxDQUFBLE9BQUFhLE9BQUEsV0FBQWQsQ0FBQSxJQUFBZSxlQUFBLENBQUFuQixDQUFBLEVBQUFJLENBQUEsRUFBQUMsQ0FBQSxDQUFBRCxDQUFBLFNBQUFFLE1BQUEsQ0FBQWMseUJBQUEsR0FBQWQsTUFBQSxDQUFBZSxnQkFBQSxDQUFBckIsQ0FBQSxFQUFBTSxNQUFBLENBQUFjLHlCQUFBLENBQUFmLENBQUEsS0FBQUYsT0FBQSxDQUFBRyxNQUFBLENBQUFELENBQUEsR0FBQWEsT0FBQSxXQUFBZCxDQUFBLElBQUFFLE1BQUEsQ0FBQWdCLGNBQUEsQ0FBQXRCLENBQUEsRUFBQUksQ0FBQSxFQUFBRSxNQUFBLENBQUFLLHdCQUFBLENBQUFOLENBQUEsRUFBQUQsQ0FBQSxpQkFBQUosQ0FBQTtBQUFBLFNBQUFtQixnQkFBQW5CLENBQUEsRUFBQUksQ0FBQSxFQUFBQyxDQUFBLFlBQUFELENBQUEsR0FBQW1CLGNBQUEsQ0FBQW5CLENBQUEsTUFBQUosQ0FBQSxHQUFBTSxNQUFBLENBQUFnQixjQUFBLENBQUF0QixDQUFBLEVBQUFJLENBQUEsSUFBQW9CLEtBQUEsRUFBQW5CLENBQUEsRUFBQU8sVUFBQSxNQUFBYSxZQUFBLE1BQUFDLFFBQUEsVUFBQTFCLENBQUEsQ0FBQUksQ0FBQSxJQUFBQyxDQUFBLEVBQUFMLENBQUE7QUFBQSxTQUFBdUIsZUFBQWxCLENBQUEsUUFBQXNCLENBQUEsR0FBQUMsWUFBQSxDQUFBdkIsQ0FBQSx1Q0FBQXNCLENBQUEsR0FBQUEsQ0FBQSxHQUFBQSxDQUFBO0FBQUEsU0FBQUMsYUFBQXZCLENBQUEsRUFBQUQsQ0FBQSwyQkFBQUMsQ0FBQSxLQUFBQSxDQUFBLFNBQUFBLENBQUEsTUFBQUwsQ0FBQSxHQUFBSyxDQUFBLENBQUF3QixNQUFBLENBQUFDLFdBQUEsa0JBQUE5QixDQUFBLFFBQUEyQixDQUFBLEdBQUEzQixDQUFBLENBQUErQixJQUFBLENBQUExQixDQUFBLEVBQUFELENBQUEsdUNBQUF1QixDQUFBLFNBQUFBLENBQUEsWUFBQUssU0FBQSx5RUFBQTVCLENBQUEsR0FBQTZCLE1BQUEsR0FBQUMsTUFBQSxFQUFBN0IsQ0FBQTtBQUxwQyxNQUFNOEIsS0FBSyxHQUFHekMsT0FBTyxDQUFDLFlBQVksQ0FBQztBQU9uQztBQUNBO0FBQ0E7QUFDQSxTQUFTMEMsSUFBSUEsQ0FBQztFQUNaQyxNQUFNO0VBQ05DLGVBQWUsR0FBR0MsU0FBUztFQUMzQkMsUUFBUSxHQUFHLEtBQUs7RUFDaEJDLGFBQWEsR0FBRyxLQUFLO0VBQ3JCQyxVQUFVLEdBQUcsS0FBSztFQUNsQkMsSUFBSTtFQUNKQztBQUNGLENBQUMsRUFBRTtFQUNELElBQUksQ0FBQ1AsTUFBTSxHQUFHQSxNQUFNO0VBQ3BCLElBQUksQ0FBQ0MsZUFBZSxHQUFHQSxlQUFlLElBQUtELE1BQU0sSUFBSUEsTUFBTSxDQUFDQyxlQUFnQjtFQUM1RSxJQUFJLENBQUNNLGNBQWMsR0FBR0EsY0FBYztFQUNwQyxJQUFJLENBQUNKLFFBQVEsR0FBR0EsUUFBUTtFQUN4QixJQUFJLENBQUNDLGFBQWEsR0FBR0EsYUFBYTtFQUNsQyxJQUFJLENBQUNFLElBQUksR0FBR0EsSUFBSTtFQUNoQixJQUFJLENBQUNELFVBQVUsR0FBR0EsVUFBVTs7RUFFNUI7RUFDQTtFQUNBLElBQUksQ0FBQ0csU0FBUyxHQUFHLEVBQUU7RUFDbkIsSUFBSSxDQUFDQyxZQUFZLEdBQUcsS0FBSztFQUN6QixJQUFJLENBQUNDLFdBQVcsR0FBRyxJQUFJO0FBQ3pCOztBQUVBO0FBQ0E7QUFDQVgsSUFBSSxDQUFDWSxTQUFTLENBQUNDLGlCQUFpQixHQUFHLFlBQVk7RUFDN0MsSUFBSSxJQUFJLENBQUNULFFBQVEsRUFBRTtJQUNqQixPQUFPLEtBQUs7RUFDZDtFQUNBLElBQUksSUFBSSxDQUFDQyxhQUFhLEVBQUU7SUFDdEIsT0FBTyxLQUFLO0VBQ2Q7RUFDQSxJQUFJLElBQUksQ0FBQ0UsSUFBSSxFQUFFO0lBQ2IsT0FBTyxLQUFLO0VBQ2Q7RUFDQSxPQUFPLElBQUk7QUFDYixDQUFDOztBQUVEO0FBQ0EsU0FBU08sTUFBTUEsQ0FBQ2IsTUFBTSxFQUFFO0VBQ3RCLE9BQU8sSUFBSUQsSUFBSSxDQUFDO0lBQUVDLE1BQU07SUFBRUcsUUFBUSxFQUFFO0VBQUssQ0FBQyxDQUFDO0FBQzdDOztBQUVBO0FBQ0EsU0FBU1csV0FBV0EsQ0FBQ2QsTUFBTSxFQUFFO0VBQzNCLE9BQU8sSUFBSUQsSUFBSSxDQUFDO0lBQUVDLE1BQU07SUFBRUksYUFBYSxFQUFFO0VBQUssQ0FBQyxDQUFDO0FBQ2xEOztBQUVBO0FBQ0EsU0FBU1csUUFBUUEsQ0FBQ2YsTUFBTSxFQUFFO0VBQ3hCLE9BQU8sSUFBSUQsSUFBSSxDQUFDO0lBQUVDLE1BQU07SUFBRUcsUUFBUSxFQUFFLElBQUk7SUFBRUUsVUFBVSxFQUFFO0VBQUssQ0FBQyxDQUFDO0FBQy9EOztBQUVBO0FBQ0EsU0FBU1csTUFBTUEsQ0FBQ2hCLE1BQU0sRUFBRTtFQUN0QixPQUFPLElBQUlELElBQUksQ0FBQztJQUFFQyxNQUFNO0lBQUVHLFFBQVEsRUFBRTtFQUFNLENBQUMsQ0FBQztBQUM5Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTYyx5QkFBeUJBLENBQUNqQixNQUFNLEVBQUVrQixPQUFPLEVBQUU7RUFDbEQsTUFBTUMsVUFBVSxHQUFHbkIsTUFBTSxDQUFDb0IsYUFBYSxHQUFHLENBQUM7RUFDM0MsTUFBTUMsV0FBVyxHQUFHLElBQUlDLElBQUksQ0FBQ0osT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUVLLFNBQVMsQ0FBQztFQUNoRCxNQUFNQyxTQUFTLEdBQUcsSUFBSUYsSUFBSSxDQUFDLENBQUM7RUFDNUJFLFNBQVMsQ0FBQ0MsT0FBTyxDQUFDRCxTQUFTLENBQUNFLE9BQU8sQ0FBQyxDQUFDLEdBQUdQLFVBQVUsR0FBRyxJQUFJLENBQUM7RUFDMUQsT0FBT0UsV0FBVyxJQUFJRyxTQUFTO0FBQ2pDO0FBRUEsTUFBTUcsUUFBUSxHQUFHLENBQUMsQ0FBQztBQUNuQixNQUFNQyxvQkFBb0IsR0FBRyxNQUFBQSxDQUFPO0VBQUU1QixNQUFNO0VBQUVrQixPQUFPO0VBQUVXO0FBQWEsQ0FBQyxLQUFLO0VBQ3hFLElBQUksRUFBQzdCLE1BQU0sYUFBTkEsTUFBTSxlQUFOQSxNQUFNLENBQUU4QixrQkFBa0IsR0FBRTtJQUMvQjtFQUNGO0VBQ0FDLFlBQVksQ0FBQ0osUUFBUSxDQUFDRSxZQUFZLENBQUMsQ0FBQztFQUNwQ0YsUUFBUSxDQUFDRSxZQUFZLENBQUMsR0FBR0csVUFBVSxDQUFDLFlBQVk7SUFDOUMsSUFBSTtNQUNGLElBQUksQ0FBQ2QsT0FBTyxFQUFFO1FBQ1osTUFBTWUsS0FBSyxHQUFHLE1BQU0sSUFBQUMsa0JBQVMsRUFBQztVQUM1QkMsTUFBTSxFQUFFRCxrQkFBUyxDQUFDRSxNQUFNLENBQUNDLEdBQUc7VUFDNUJyQyxNQUFNO1VBQ05zQyxJQUFJLEVBQUV6QixNQUFNLENBQUNiLE1BQU0sQ0FBQztVQUNwQnVDLGFBQWEsRUFBRSxLQUFLO1VBQ3BCQyxTQUFTLEVBQUUsVUFBVTtVQUNyQkMsU0FBUyxFQUFFO1lBQUVaO1VBQWEsQ0FBQztVQUMzQmEsV0FBVyxFQUFFO1lBQUVDLEtBQUssRUFBRTtVQUFFO1FBQzFCLENBQUMsQ0FBQztRQUNGLE1BQU07VUFBRUM7UUFBUSxDQUFDLEdBQUcsTUFBTVgsS0FBSyxDQUFDWSxPQUFPLENBQUMsQ0FBQztRQUN6QzNCLE9BQU8sR0FBRzBCLE9BQU8sQ0FBQyxDQUFDLENBQUM7TUFDdEI7TUFDQSxJQUFJLENBQUMzQix5QkFBeUIsQ0FBQ2pCLE1BQU0sRUFBRWtCLE9BQU8sQ0FBQyxJQUFJLENBQUNBLE9BQU8sRUFBRTtRQUMzRDtNQUNGO01BQ0EsTUFBTTRCLFNBQVMsR0FBRzlDLE1BQU0sQ0FBQytDLHdCQUF3QixDQUFDLENBQUM7TUFDbkQsTUFBTSxJQUFJQyxrQkFBUyxDQUNqQmhELE1BQU0sRUFDTmEsTUFBTSxDQUFDYixNQUFNLENBQUMsRUFDZCxVQUFVLEVBQ1Y7UUFBRWlELFFBQVEsRUFBRS9CLE9BQU8sQ0FBQytCO01BQVMsQ0FBQyxFQUM5QjtRQUFFSCxTQUFTLEVBQUVoRCxLQUFLLENBQUNvRCxPQUFPLENBQUNKLFNBQVM7TUFBRSxDQUN4QyxDQUFDLENBQUNELE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQyxDQUFDLE9BQU9sRixDQUFDLEVBQUU7TUFDVixJQUFJLENBQUFBLENBQUMsYUFBREEsQ0FBQyx1QkFBREEsQ0FBQyxDQUFFd0YsSUFBSSxNQUFLckQsS0FBSyxDQUFDc0QsS0FBSyxDQUFDQyxnQkFBZ0IsRUFBRTtRQUM1Q0MsY0FBTSxDQUFDQyxLQUFLLENBQUMsbUNBQW1DLEVBQUU1RixDQUFDLENBQUM7TUFDdEQ7SUFDRjtFQUNGLENBQUMsRUFBRSxHQUFHLENBQUM7QUFDVCxDQUFDOztBQUVEO0FBQ0EsTUFBTTZGLHNCQUFzQixHQUFHLGVBQUFBLENBQWdCO0VBQzdDeEQsTUFBTTtFQUNOQyxlQUFlO0VBQ2Y0QixZQUFZO0VBQ1p0QjtBQUNGLENBQUMsRUFBRTtFQUNETixlQUFlLEdBQUdBLGVBQWUsSUFBS0QsTUFBTSxJQUFJQSxNQUFNLENBQUNDLGVBQWdCO0VBQ3ZFLElBQUlBLGVBQWUsRUFBRTtJQUNuQixNQUFNd0QsUUFBUSxHQUFHLE1BQU14RCxlQUFlLENBQUNLLElBQUksQ0FBQytCLEdBQUcsQ0FBQ1IsWUFBWSxDQUFDO0lBQzdELElBQUk0QixRQUFRLEVBQUU7TUFDWixNQUFNQyxVQUFVLEdBQUc1RCxLQUFLLENBQUM3QixNQUFNLENBQUMwRixRQUFRLENBQUNGLFFBQVEsQ0FBQztNQUNsRDdCLG9CQUFvQixDQUFDO1FBQUU1QixNQUFNO1FBQUU2QjtNQUFhLENBQUMsQ0FBQztNQUM5QyxPQUFPK0IsT0FBTyxDQUFDQyxPQUFPLENBQ3BCLElBQUk5RCxJQUFJLENBQUM7UUFDUEMsTUFBTTtRQUNOQyxlQUFlO1FBQ2ZFLFFBQVEsRUFBRSxLQUFLO1FBQ2ZJLGNBQWM7UUFDZEQsSUFBSSxFQUFFb0Q7TUFDUixDQUFDLENBQ0gsQ0FBQztJQUNIO0VBQ0Y7RUFFQSxJQUFJZCxPQUFPO0VBQ1gsSUFBSTVDLE1BQU0sRUFBRTtJQUNWLE1BQU0wQyxXQUFXLEdBQUc7TUFDbEJDLEtBQUssRUFBRSxDQUFDO01BQ1JtQixPQUFPLEVBQUU7SUFDWCxDQUFDO0lBQ0QsTUFBTTVCLFNBQVMsR0FBRzdFLE9BQU8sQ0FBQyxhQUFhLENBQUM7SUFDeEMsTUFBTTRFLEtBQUssR0FBRyxNQUFNQyxTQUFTLENBQUM7TUFDNUJDLE1BQU0sRUFBRUQsU0FBUyxDQUFDRSxNQUFNLENBQUNDLEdBQUc7TUFDNUJyQyxNQUFNO01BQ051QyxhQUFhLEVBQUUsS0FBSztNQUNwQkQsSUFBSSxFQUFFekIsTUFBTSxDQUFDYixNQUFNLENBQUM7TUFDcEJ3QyxTQUFTLEVBQUUsVUFBVTtNQUNyQkMsU0FBUyxFQUFFO1FBQUVaO01BQWEsQ0FBQztNQUMzQmE7SUFDRixDQUFDLENBQUM7SUFDRkUsT0FBTyxHQUFHLENBQUMsTUFBTVgsS0FBSyxDQUFDWSxPQUFPLENBQUMsQ0FBQyxFQUFFRCxPQUFPO0VBQzNDLENBQUMsTUFBTTtJQUNMQSxPQUFPLEdBQUcsQ0FDUixNQUFNLElBQUk5QyxLQUFLLENBQUNpRSxLQUFLLENBQUNqRSxLQUFLLENBQUNrRSxPQUFPLENBQUMsQ0FDakNyQixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ1JtQixPQUFPLENBQUMsTUFBTSxDQUFDLENBQ2ZHLE9BQU8sQ0FBQyxjQUFjLEVBQUVwQyxZQUFZLENBQUMsQ0FDckNxQyxJQUFJLENBQUM7TUFBRUMsWUFBWSxFQUFFO0lBQUssQ0FBQyxDQUFDLEVBQy9CQyxHQUFHLENBQUNDLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0VBQzVCO0VBRUEsSUFBSTFCLE9BQU8sQ0FBQ2hFLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQ2dFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRTtJQUMvQyxNQUFNLElBQUk5QyxLQUFLLENBQUNzRCxLQUFLLENBQUN0RCxLQUFLLENBQUNzRCxLQUFLLENBQUNtQixxQkFBcUIsRUFBRSx1QkFBdUIsQ0FBQztFQUNuRjtFQUNBLE1BQU1yRCxPQUFPLEdBQUcwQixPQUFPLENBQUMsQ0FBQyxDQUFDO0VBQzFCLE1BQU00QixHQUFHLEdBQUcsSUFBSWxELElBQUksQ0FBQyxDQUFDO0lBQ3BCd0IsU0FBUyxHQUFHNUIsT0FBTyxDQUFDNEIsU0FBUyxHQUFHLElBQUl4QixJQUFJLENBQUNKLE9BQU8sQ0FBQzRCLFNBQVMsQ0FBQzJCLEdBQUcsQ0FBQyxHQUFHdkUsU0FBUztFQUM3RSxJQUFJNEMsU0FBUyxHQUFHMEIsR0FBRyxFQUFFO0lBQ25CLE1BQU0sSUFBSTFFLEtBQUssQ0FBQ3NELEtBQUssQ0FBQ3RELEtBQUssQ0FBQ3NELEtBQUssQ0FBQ21CLHFCQUFxQixFQUFFLDJCQUEyQixDQUFDO0VBQ3ZGO0VBQ0EsTUFBTUYsR0FBRyxHQUFHbkQsT0FBTyxDQUFDWixJQUFJO0VBRXhCLElBQUksT0FBTytELEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxRQUFRLElBQUlBLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQ0ssVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFO0lBQzlFLE1BQU0sSUFBSTVFLEtBQUssQ0FBQ3NELEtBQUssQ0FBQ3RELEtBQUssQ0FBQ3NELEtBQUssQ0FBQ3VCLHFCQUFxQixFQUFFLG9CQUFvQixDQUFDO0VBQ2hGO0VBRUEsT0FBT04sR0FBRyxDQUFDTyxRQUFRO0VBQ25CUCxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUcsT0FBTztFQUMxQkEsR0FBRyxDQUFDLGNBQWMsQ0FBQyxHQUFHeEMsWUFBWTtFQUNsQyxJQUFJNUIsZUFBZSxFQUFFO0lBQ25CQSxlQUFlLENBQUNLLElBQUksQ0FBQ3VFLEdBQUcsQ0FBQ2hELFlBQVksRUFBRXdDLEdBQUcsQ0FBQztFQUM3QztFQUNBekMsb0JBQW9CLENBQUM7SUFBRTVCLE1BQU07SUFBRWtCLE9BQU87SUFBRVc7RUFBYSxDQUFDLENBQUM7RUFDdkQsTUFBTWlELFVBQVUsR0FBR2hGLEtBQUssQ0FBQzdCLE1BQU0sQ0FBQzBGLFFBQVEsQ0FBQ1UsR0FBRyxDQUFDO0VBQzdDLE9BQU8sSUFBSXRFLElBQUksQ0FBQztJQUNkQyxNQUFNO0lBQ05DLGVBQWU7SUFDZkUsUUFBUSxFQUFFLEtBQUs7SUFDZkksY0FBYztJQUNkRCxJQUFJLEVBQUV3RTtFQUNSLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxJQUFJQyw0QkFBNEIsR0FBRyxlQUFBQSxDQUFnQjtFQUFFL0UsTUFBTTtFQUFFNkIsWUFBWTtFQUFFdEI7QUFBZSxDQUFDLEVBQUU7RUFDM0YsSUFBSW1DLFdBQVcsR0FBRztJQUNoQkMsS0FBSyxFQUFFO0VBQ1QsQ0FBQztFQUNELE1BQU1ULFNBQVMsR0FBRzdFLE9BQU8sQ0FBQyxhQUFhLENBQUM7RUFDeEMsSUFBSTRFLEtBQUssR0FBRyxNQUFNQyxTQUFTLENBQUM7SUFDMUJDLE1BQU0sRUFBRUQsU0FBUyxDQUFDRSxNQUFNLENBQUNDLEdBQUc7SUFDNUJyQyxNQUFNO0lBQ051QyxhQUFhLEVBQUUsS0FBSztJQUNwQkQsSUFBSSxFQUFFekIsTUFBTSxDQUFDYixNQUFNLENBQUM7SUFDcEJ3QyxTQUFTLEVBQUUsT0FBTztJQUNsQkMsU0FBUyxFQUFFO01BQUV1QyxjQUFjLEVBQUVuRDtJQUFhLENBQUM7SUFDM0NhO0VBQ0YsQ0FBQyxDQUFDO0VBQ0YsT0FBT1QsS0FBSyxDQUFDWSxPQUFPLENBQUMsQ0FBQyxDQUFDb0MsSUFBSSxDQUFDQyxRQUFRLElBQUk7SUFDdEMsSUFBSXRDLE9BQU8sR0FBR3NDLFFBQVEsQ0FBQ3RDLE9BQU87SUFDOUIsSUFBSUEsT0FBTyxDQUFDaEUsTUFBTSxLQUFLLENBQUMsRUFBRTtNQUN4QixNQUFNLElBQUlrQixLQUFLLENBQUNzRCxLQUFLLENBQUN0RCxLQUFLLENBQUNzRCxLQUFLLENBQUNtQixxQkFBcUIsRUFBRSw4QkFBOEIsQ0FBQztJQUMxRjtJQUNBLE1BQU1GLEdBQUcsR0FBR3pCLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDdEJ5QixHQUFHLENBQUM3QixTQUFTLEdBQUcsT0FBTztJQUN2QixNQUFNc0MsVUFBVSxHQUFHaEYsS0FBSyxDQUFDN0IsTUFBTSxDQUFDMEYsUUFBUSxDQUFDVSxHQUFHLENBQUM7SUFDN0MsT0FBTyxJQUFJdEUsSUFBSSxDQUFDO01BQ2RDLE1BQU07TUFDTkcsUUFBUSxFQUFFLEtBQUs7TUFDZkksY0FBYztNQUNkRCxJQUFJLEVBQUV3RTtJQUNSLENBQUMsQ0FBQztFQUNKLENBQUMsQ0FBQztBQUNKLENBQUM7O0FBRUQ7QUFDQS9FLElBQUksQ0FBQ1ksU0FBUyxDQUFDd0UsWUFBWSxHQUFHLFlBQVk7RUFDeEMsSUFBSSxJQUFJLENBQUNoRixRQUFRLElBQUksSUFBSSxDQUFDQyxhQUFhLElBQUksQ0FBQyxJQUFJLENBQUNFLElBQUksRUFBRTtJQUNyRCxPQUFPc0QsT0FBTyxDQUFDQyxPQUFPLENBQUMsRUFBRSxDQUFDO0VBQzVCO0VBQ0EsSUFBSSxJQUFJLENBQUNwRCxZQUFZLEVBQUU7SUFDckIsT0FBT21ELE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLElBQUksQ0FBQ3JELFNBQVMsQ0FBQztFQUN4QztFQUNBLElBQUksSUFBSSxDQUFDRSxXQUFXLEVBQUU7SUFDcEIsT0FBTyxJQUFJLENBQUNBLFdBQVc7RUFDekI7RUFDQSxJQUFJLENBQUNBLFdBQVcsR0FBRyxJQUFJLENBQUMwRSxVQUFVLENBQUMsQ0FBQztFQUNwQyxPQUFPLElBQUksQ0FBQzFFLFdBQVc7QUFDekIsQ0FBQztBQUVEWCxJQUFJLENBQUNZLFNBQVMsQ0FBQzBFLGVBQWUsR0FBRyxrQkFBa0I7RUFDakQ7RUFDQSxNQUFNekMsT0FBTyxHQUFHLEVBQUU7RUFDbEIsSUFBSSxJQUFJLENBQUM1QyxNQUFNLEVBQUU7SUFDZixNQUFNeUMsU0FBUyxHQUFHO01BQ2hCNkMsS0FBSyxFQUFFO1FBQ0xDLE1BQU0sRUFBRSxTQUFTO1FBQ2pCL0MsU0FBUyxFQUFFLE9BQU87UUFDbEJTLFFBQVEsRUFBRSxJQUFJLENBQUMzQyxJQUFJLENBQUNrRjtNQUN0QjtJQUNGLENBQUM7SUFDRCxNQUFNdEQsU0FBUyxHQUFHN0UsT0FBTyxDQUFDLGFBQWEsQ0FBQztJQUN4QyxNQUFNNEUsS0FBSyxHQUFHLE1BQU1DLFNBQVMsQ0FBQztNQUM1QkMsTUFBTSxFQUFFRCxTQUFTLENBQUNFLE1BQU0sQ0FBQzhCLElBQUk7TUFDN0IzQixhQUFhLEVBQUUsS0FBSztNQUNwQnZDLE1BQU0sRUFBRSxJQUFJLENBQUNBLE1BQU07TUFDbkJzQyxJQUFJLEVBQUV6QixNQUFNLENBQUMsSUFBSSxDQUFDYixNQUFNLENBQUM7TUFDekJ3QyxTQUFTLEVBQUUsT0FBTztNQUNsQkM7SUFDRixDQUFDLENBQUM7SUFDRixNQUFNUixLQUFLLENBQUN3RCxJQUFJLENBQUNDLE1BQU0sSUFBSTlDLE9BQU8sQ0FBQ3BFLElBQUksQ0FBQ2tILE1BQU0sQ0FBQyxDQUFDO0VBQ2xELENBQUMsTUFBTTtJQUNMLE1BQU0sSUFBSTVGLEtBQUssQ0FBQ2lFLEtBQUssQ0FBQ2pFLEtBQUssQ0FBQzZGLElBQUksQ0FBQyxDQUM5QjFCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDM0QsSUFBSSxDQUFDLENBQzNCbUYsSUFBSSxDQUFDQyxNQUFNLElBQUk5QyxPQUFPLENBQUNwRSxJQUFJLENBQUNrSCxNQUFNLENBQUNwQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7TUFBRUgsWUFBWSxFQUFFO0lBQUssQ0FBQyxDQUFDO0VBQzFFO0VBQ0EsT0FBT3ZCLE9BQU87QUFDaEIsQ0FBQzs7QUFFRDtBQUNBN0MsSUFBSSxDQUFDWSxTQUFTLENBQUN5RSxVQUFVLEdBQUcsa0JBQWtCO0VBQzVDLElBQUksSUFBSSxDQUFDbkYsZUFBZSxFQUFFO0lBQ3hCLE1BQU0yRixXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMzRixlQUFlLENBQUM0RixJQUFJLENBQUN4RCxHQUFHLENBQUMsSUFBSSxDQUFDL0IsSUFBSSxDQUFDa0YsRUFBRSxDQUFDO0lBQ3JFLElBQUlJLFdBQVcsSUFBSSxJQUFJLEVBQUU7TUFDdkIsSUFBSSxDQUFDbkYsWUFBWSxHQUFHLElBQUk7TUFDeEIsSUFBSSxDQUFDRCxTQUFTLEdBQUdvRixXQUFXO01BQzVCLE9BQU9BLFdBQVc7SUFDcEI7RUFDRjs7RUFFQTtFQUNBLE1BQU1oRCxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUN5QyxlQUFlLENBQUMsQ0FBQztFQUM1QyxJQUFJLENBQUN6QyxPQUFPLENBQUNoRSxNQUFNLEVBQUU7SUFDbkIsSUFBSSxDQUFDNEIsU0FBUyxHQUFHLEVBQUU7SUFDbkIsSUFBSSxDQUFDQyxZQUFZLEdBQUcsSUFBSTtJQUN4QixJQUFJLENBQUNDLFdBQVcsR0FBRyxJQUFJO0lBRXZCLElBQUksQ0FBQ29GLFVBQVUsQ0FBQyxDQUFDO0lBQ2pCLE9BQU8sSUFBSSxDQUFDdEYsU0FBUztFQUN2QjtFQUVBLE1BQU11RixRQUFRLEdBQUduRCxPQUFPLENBQUNvRCxNQUFNLENBQzdCLENBQUNDLENBQUMsRUFBRWxJLENBQUMsS0FBSztJQUNSa0ksQ0FBQyxDQUFDQyxLQUFLLENBQUMxSCxJQUFJLENBQUNULENBQUMsQ0FBQ29JLElBQUksQ0FBQztJQUNwQkYsQ0FBQyxDQUFDRyxHQUFHLENBQUM1SCxJQUFJLENBQUNULENBQUMsQ0FBQ2tGLFFBQVEsQ0FBQztJQUN0QixPQUFPZ0QsQ0FBQztFQUNWLENBQUMsRUFDRDtJQUFFRyxHQUFHLEVBQUUsRUFBRTtJQUFFRixLQUFLLEVBQUU7RUFBRyxDQUN2QixDQUFDOztFQUVEO0VBQ0EsTUFBTUcsU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDQywyQkFBMkIsQ0FBQ1AsUUFBUSxDQUFDSyxHQUFHLEVBQUVMLFFBQVEsQ0FBQ0csS0FBSyxDQUFDO0VBQ3RGLElBQUksQ0FBQzFGLFNBQVMsR0FBRzZGLFNBQVMsQ0FBQ2pDLEdBQUcsQ0FBQ3JHLENBQUMsSUFBSTtJQUNsQyxPQUFPLE9BQU8sR0FBR0EsQ0FBQztFQUNwQixDQUFDLENBQUM7RUFDRixJQUFJLENBQUMwQyxZQUFZLEdBQUcsSUFBSTtFQUN4QixJQUFJLENBQUNDLFdBQVcsR0FBRyxJQUFJO0VBQ3ZCLElBQUksQ0FBQ29GLFVBQVUsQ0FBQyxDQUFDO0VBQ2pCLE9BQU8sSUFBSSxDQUFDdEYsU0FBUztBQUN2QixDQUFDO0FBRURULElBQUksQ0FBQ1ksU0FBUyxDQUFDbUYsVUFBVSxHQUFHLFlBQVk7RUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQzdGLGVBQWUsRUFBRTtJQUN6QixPQUFPLEtBQUs7RUFDZDtFQUNBLElBQUksQ0FBQ0EsZUFBZSxDQUFDNEYsSUFBSSxDQUFDaEIsR0FBRyxDQUFDLElBQUksQ0FBQ3ZFLElBQUksQ0FBQ2tGLEVBQUUsRUFBRWUsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDL0YsU0FBUyxDQUFDLENBQUM7RUFDckUsT0FBTyxJQUFJO0FBQ2IsQ0FBQztBQUVEVCxJQUFJLENBQUNZLFNBQVMsQ0FBQzZGLGNBQWMsR0FBRyxVQUFVM0UsWUFBWSxFQUFFO0VBQ3RELElBQUksQ0FBQyxJQUFJLENBQUM1QixlQUFlLEVBQUU7SUFDekIsT0FBTyxLQUFLO0VBQ2Q7RUFDQSxJQUFJLENBQUNBLGVBQWUsQ0FBQzRGLElBQUksQ0FBQ1ksR0FBRyxDQUFDLElBQUksQ0FBQ25HLElBQUksQ0FBQ2tGLEVBQUUsQ0FBQztFQUMzQyxJQUFJLENBQUN2RixlQUFlLENBQUNLLElBQUksQ0FBQ21HLEdBQUcsQ0FBQzVFLFlBQVksQ0FBQztFQUMzQyxPQUFPLElBQUk7QUFDYixDQUFDO0FBRUQ5QixJQUFJLENBQUNZLFNBQVMsQ0FBQytGLGFBQWEsR0FBRyxnQkFBZ0JDLEdBQUcsRUFBRTtFQUNsRCxNQUFNL0QsT0FBTyxHQUFHLEVBQUU7RUFDbEI7RUFDQSxJQUFJLENBQUMsSUFBSSxDQUFDNUMsTUFBTSxFQUFFO0lBQ2hCLE1BQU0sSUFBSUYsS0FBSyxDQUFDaUUsS0FBSyxDQUFDakUsS0FBSyxDQUFDNkYsSUFBSSxDQUFDLENBQzlCaUIsV0FBVyxDQUNWLE9BQU8sRUFDUEQsR0FBRyxDQUFDdkMsR0FBRyxDQUFDb0IsRUFBRSxJQUFJO01BQ1osTUFBTUssSUFBSSxHQUFHLElBQUkvRixLQUFLLENBQUM3QixNQUFNLENBQUM2QixLQUFLLENBQUM2RixJQUFJLENBQUM7TUFDekNFLElBQUksQ0FBQ0wsRUFBRSxHQUFHQSxFQUFFO01BQ1osT0FBT0ssSUFBSTtJQUNiLENBQUMsQ0FDSCxDQUFDLENBQ0FKLElBQUksQ0FBQ0MsTUFBTSxJQUFJOUMsT0FBTyxDQUFDcEUsSUFBSSxDQUFDa0gsTUFBTSxDQUFDcEIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO01BQUVILFlBQVksRUFBRTtJQUFLLENBQUMsQ0FBQztFQUMxRSxDQUFDLE1BQU07SUFDTCxNQUFNMEMsS0FBSyxHQUFHRixHQUFHLENBQUN2QyxHQUFHLENBQUNvQixFQUFFLElBQUk7TUFDMUIsT0FBTztRQUNMRCxNQUFNLEVBQUUsU0FBUztRQUNqQi9DLFNBQVMsRUFBRSxPQUFPO1FBQ2xCUyxRQUFRLEVBQUV1QztNQUNaLENBQUM7SUFDSCxDQUFDLENBQUM7SUFDRixNQUFNL0MsU0FBUyxHQUFHO01BQUVvRSxLQUFLLEVBQUU7UUFBRUMsR0FBRyxFQUFFRDtNQUFNO0lBQUUsQ0FBQztJQUMzQyxNQUFNM0UsU0FBUyxHQUFHN0UsT0FBTyxDQUFDLGFBQWEsQ0FBQztJQUN4QyxNQUFNNEUsS0FBSyxHQUFHLE1BQU1DLFNBQVMsQ0FBQztNQUM1QkMsTUFBTSxFQUFFRCxTQUFTLENBQUNFLE1BQU0sQ0FBQzhCLElBQUk7TUFDN0JsRSxNQUFNLEVBQUUsSUFBSSxDQUFDQSxNQUFNO01BQ25CdUMsYUFBYSxFQUFFLEtBQUs7TUFDcEJELElBQUksRUFBRXpCLE1BQU0sQ0FBQyxJQUFJLENBQUNiLE1BQU0sQ0FBQztNQUN6QndDLFNBQVMsRUFBRSxPQUFPO01BQ2xCQztJQUNGLENBQUMsQ0FBQztJQUNGLE1BQU1SLEtBQUssQ0FBQ3dELElBQUksQ0FBQ0MsTUFBTSxJQUFJOUMsT0FBTyxDQUFDcEUsSUFBSSxDQUFDa0gsTUFBTSxDQUFDLENBQUM7RUFDbEQ7RUFDQSxPQUFPOUMsT0FBTztBQUNoQixDQUFDOztBQUVEO0FBQ0E3QyxJQUFJLENBQUNZLFNBQVMsQ0FBQzJGLDJCQUEyQixHQUFHLFVBQVVTLE9BQU8sRUFBRWIsS0FBSyxHQUFHLEVBQUUsRUFBRWMsWUFBWSxHQUFHLENBQUMsQ0FBQyxFQUFFO0VBQzdGLE1BQU1MLEdBQUcsR0FBR0ksT0FBTyxDQUFDMUksTUFBTSxDQUFDNEksTUFBTSxJQUFJO0lBQ25DLE1BQU1DLFVBQVUsR0FBR0YsWUFBWSxDQUFDQyxNQUFNLENBQUMsS0FBSyxJQUFJO0lBQ2hERCxZQUFZLENBQUNDLE1BQU0sQ0FBQyxHQUFHLElBQUk7SUFDM0IsT0FBT0MsVUFBVTtFQUNuQixDQUFDLENBQUM7O0VBRUY7RUFDQSxJQUFJUCxHQUFHLENBQUMvSCxNQUFNLElBQUksQ0FBQyxFQUFFO0lBQ25CLE9BQU9nRixPQUFPLENBQUNDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsSUFBSXNELEdBQUcsQ0FBQ2pCLEtBQUssQ0FBQyxDQUFDLENBQUM7RUFDN0M7RUFFQSxPQUFPLElBQUksQ0FBQ1EsYUFBYSxDQUFDQyxHQUFHLENBQUMsQ0FDM0IxQixJQUFJLENBQUNyQyxPQUFPLElBQUk7SUFDZjtJQUNBLElBQUksQ0FBQ0EsT0FBTyxDQUFDaEUsTUFBTSxFQUFFO01BQ25CLE9BQU9nRixPQUFPLENBQUNDLE9BQU8sQ0FBQ3FDLEtBQUssQ0FBQztJQUMvQjtJQUNBO0lBQ0EsTUFBTWtCLFNBQVMsR0FBR3hFLE9BQU8sQ0FBQ29ELE1BQU0sQ0FDOUIsQ0FBQ3FCLElBQUksRUFBRXhCLElBQUksS0FBSztNQUNkd0IsSUFBSSxDQUFDbkIsS0FBSyxDQUFDMUgsSUFBSSxDQUFDcUgsSUFBSSxDQUFDTSxJQUFJLENBQUM7TUFDMUJrQixJQUFJLENBQUNqQixHQUFHLENBQUM1SCxJQUFJLENBQUNxSCxJQUFJLENBQUM1QyxRQUFRLENBQUM7TUFDNUIsT0FBT29FLElBQUk7SUFDYixDQUFDLEVBQ0Q7TUFBRWpCLEdBQUcsRUFBRSxFQUFFO01BQUVGLEtBQUssRUFBRTtJQUFHLENBQ3ZCLENBQUM7SUFDRDtJQUNBQSxLQUFLLEdBQUdBLEtBQUssQ0FBQ29CLE1BQU0sQ0FBQ0YsU0FBUyxDQUFDbEIsS0FBSyxDQUFDO0lBQ3JDO0lBQ0EsT0FBTyxJQUFJLENBQUNJLDJCQUEyQixDQUFDYyxTQUFTLENBQUNoQixHQUFHLEVBQUVGLEtBQUssRUFBRWMsWUFBWSxDQUFDO0VBQzdFLENBQUMsQ0FBQyxDQUNEL0IsSUFBSSxDQUFDaUIsS0FBSyxJQUFJO0lBQ2IsT0FBT3RDLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLENBQUMsR0FBRyxJQUFJc0QsR0FBRyxDQUFDakIsS0FBSyxDQUFDLENBQUMsQ0FBQztFQUM3QyxDQUFDLENBQUM7QUFDTixDQUFDO0FBRUQsTUFBTXFCLHFCQUFxQixHQUFHQSxDQUFDdkgsTUFBTSxFQUFFd0gsUUFBUSxLQUFLO0VBQ2xELE1BQU1DLFNBQVMsR0FBR3hKLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDc0osUUFBUSxDQUFDO0VBQ3ZDLE1BQU12RixLQUFLLEdBQUd3RixTQUFTLENBQ3BCekIsTUFBTSxDQUFDLENBQUNxQixJQUFJLEVBQUVLLFFBQVEsS0FBSztJQUMxQixJQUFJLENBQUNGLFFBQVEsQ0FBQ0UsUUFBUSxDQUFDLElBQUtGLFFBQVEsSUFBSSxDQUFDQSxRQUFRLENBQUNFLFFBQVEsQ0FBQyxDQUFDbEMsRUFBRyxFQUFFO01BQy9ELE9BQU82QixJQUFJO0lBQ2I7SUFDQSxNQUFNTSxRQUFRLEdBQUcsWUFBWUQsUUFBUSxLQUFLO0lBQzFDLE1BQU16RixLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ2hCQSxLQUFLLENBQUMwRixRQUFRLENBQUMsR0FBR0gsUUFBUSxDQUFDRSxRQUFRLENBQUMsQ0FBQ2xDLEVBQUU7SUFDdkM2QixJQUFJLENBQUM3SSxJQUFJLENBQUN5RCxLQUFLLENBQUM7SUFDaEIsT0FBT29GLElBQUk7RUFDYixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQ0xoSixNQUFNLENBQUN1SixDQUFDLElBQUk7SUFDWCxPQUFPLE9BQU9BLENBQUMsS0FBSyxXQUFXO0VBQ2pDLENBQUMsQ0FBQztFQUVKLE9BQU8zRixLQUFLLENBQUNyRCxNQUFNLEdBQUcsQ0FBQyxHQUNuQm9CLE1BQU0sQ0FBQzZILFFBQVEsQ0FBQzNELElBQUksQ0FBQyxPQUFPLEVBQUU7SUFBRTRELEdBQUcsRUFBRTdGO0VBQU0sQ0FBQyxFQUFFO0lBQUVVLEtBQUssRUFBRTtFQUFFLENBQUMsQ0FBQyxHQUMzRGlCLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLEVBQUUsQ0FBQztBQUN6QixDQUFDO0FBRUQsTUFBTWtFLGtCQUFrQixHQUFHQSxDQUFDUCxRQUFRLEVBQUVRLFlBQVksS0FBSztFQUNyRCxJQUFJLENBQUNBLFlBQVksRUFBRSxPQUFPO0lBQUVELGtCQUFrQixFQUFFLElBQUk7SUFBRUUsZUFBZSxFQUFFVDtFQUFTLENBQUM7RUFDakYsTUFBTVMsZUFBZSxHQUFHLENBQUMsQ0FBQztFQUMxQmhLLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDc0osUUFBUSxDQUFDLENBQUMzSSxPQUFPLENBQUM2SSxRQUFRLElBQUk7SUFDeEM7SUFDQSxJQUFJQSxRQUFRLEtBQUssV0FBVyxFQUFFO0lBQzlCLE1BQU1RLFlBQVksR0FBR1YsUUFBUSxDQUFDRSxRQUFRLENBQUM7SUFDdkMsTUFBTVMsb0JBQW9CLEdBQUdILFlBQVksQ0FBQ04sUUFBUSxDQUFDO0lBQ25ELElBQUksQ0FBQyxJQUFBVSx1QkFBaUIsRUFBQ0YsWUFBWSxFQUFFQyxvQkFBb0IsQ0FBQyxFQUFFO01BQzFERixlQUFlLENBQUNQLFFBQVEsQ0FBQyxHQUFHUSxZQUFZO0lBQzFDO0VBQ0YsQ0FBQyxDQUFDO0VBQ0YsTUFBTUgsa0JBQWtCLEdBQUc5SixNQUFNLENBQUNDLElBQUksQ0FBQytKLGVBQWUsQ0FBQyxDQUFDckosTUFBTSxLQUFLLENBQUM7RUFDcEUsT0FBTztJQUFFbUosa0JBQWtCO0lBQUVFO0VBQWdCLENBQUM7QUFDaEQsQ0FBQztBQUVELE1BQU1JLGlEQUFpRCxHQUFHQSxDQUN4REMsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUNSZCxRQUFRLEdBQUcsQ0FBQyxDQUFDLEVBQ2JRLFlBQVksR0FBRyxDQUFDLENBQUMsRUFDakJoSSxNQUFNLEtBQ0g7RUFDSCxNQUFNdUksa0JBQWtCLEdBQUd0SyxNQUFNLENBQUNDLElBQUksQ0FBQzhKLFlBQVksQ0FBQyxDQUFDNUQsR0FBRyxDQUFDc0QsUUFBUSxLQUFLO0lBQ3BFdkIsSUFBSSxFQUFFdUIsUUFBUTtJQUNkYyxPQUFPLEVBQUV4SSxNQUFNLENBQUN5SSxlQUFlLENBQUNDLHVCQUF1QixDQUFDaEIsUUFBUSxDQUFDLENBQUNjO0VBQ3BFLENBQUMsQ0FBQyxDQUFDO0VBRUgsTUFBTUcsd0JBQXdCLEdBQUdKLGtCQUFrQixDQUFDSyxJQUFJLENBQ3REbEIsUUFBUSxJQUNOQSxRQUFRLElBQUlBLFFBQVEsQ0FBQ2MsT0FBTyxJQUFJZCxRQUFRLENBQUNjLE9BQU8sQ0FBQ0ssTUFBTSxLQUFLLE1BQU0sSUFBSXJCLFFBQVEsQ0FBQ0UsUUFBUSxDQUFDdkIsSUFBSSxDQUNoRyxDQUFDOztFQUVEO0VBQ0E7RUFDQTtFQUNBLElBQUl3Qyx3QkFBd0IsRUFBRTtJQUM1QjtFQUNGO0VBRUEsTUFBTUcseUJBQXlCLEdBQUcsRUFBRTtFQUNwQyxNQUFNQyx1Q0FBdUMsR0FBR1Isa0JBQWtCLENBQUNLLElBQUksQ0FBQ2xCLFFBQVEsSUFBSTtJQUNsRixJQUFJbUIsTUFBTSxHQUFHbkIsUUFBUSxDQUFDYyxPQUFPLENBQUNLLE1BQU07SUFDcEMsSUFBSSxPQUFPQSxNQUFNLEtBQUssVUFBVSxFQUFFO01BQ2hDLE1BQU1HLGFBQWEsR0FBRztRQUNwQkMsRUFBRSxFQUFFWCxHQUFHLENBQUN0SSxNQUFNLENBQUNpSixFQUFFO1FBQ2pCM0ksSUFBSSxFQUFFZ0ksR0FBRyxDQUFDaEcsSUFBSSxDQUFDaEMsSUFBSTtRQUNuQk8sTUFBTSxFQUFFeUgsR0FBRyxDQUFDaEcsSUFBSSxDQUFDbkM7TUFDbkIsQ0FBQztNQUNEMEksTUFBTSxHQUFHQSxNQUFNLENBQUNuSixJQUFJLENBQUNnSSxRQUFRLENBQUNjLE9BQU8sRUFBRVEsYUFBYSxFQUFFaEIsWUFBWSxDQUFDTixRQUFRLENBQUN2QixJQUFJLENBQUMsQ0FBQztJQUNwRjtJQUNBLElBQUkwQyxNQUFNLEtBQUssWUFBWSxFQUFFO01BQzNCLElBQUlyQixRQUFRLENBQUNFLFFBQVEsQ0FBQ3ZCLElBQUksQ0FBQyxFQUFFO1FBQzNCLE9BQU8sSUFBSTtNQUNiLENBQUMsTUFBTTtRQUNMO1FBQ0EyQyx5QkFBeUIsQ0FBQ3RLLElBQUksQ0FBQ2tKLFFBQVEsQ0FBQ3ZCLElBQUksQ0FBQztNQUMvQztJQUNGO0VBQ0YsQ0FBQyxDQUFDO0VBQ0YsSUFBSTRDLHVDQUF1QyxJQUFJLENBQUNELHlCQUF5QixDQUFDbEssTUFBTSxFQUFFO0lBQ2hGO0VBQ0Y7RUFFQSxNQUFNLElBQUlrQixLQUFLLENBQUNzRCxLQUFLLENBQ25CdEQsS0FBSyxDQUFDc0QsS0FBSyxDQUFDOEYsV0FBVyxFQUN2QiwrQkFBK0JKLHlCQUF5QixDQUFDSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQ3BFLENBQUM7QUFDSCxDQUFDOztBQUVEO0FBQ0EsTUFBTUMsd0JBQXdCLEdBQUcsTUFBQUEsQ0FBTzVCLFFBQVEsRUFBRWMsR0FBRyxFQUFFZSxTQUFTLEtBQUs7RUFDbkUsSUFBSS9JLElBQUk7RUFDUixJQUFJK0ksU0FBUyxFQUFFO0lBQ2IvSSxJQUFJLEdBQUdSLEtBQUssQ0FBQ3dKLElBQUksQ0FBQzNGLFFBQVEsQ0FBQWpGLGFBQUE7TUFBRzhELFNBQVMsRUFBRTtJQUFPLEdBQUs2RyxTQUFTLENBQUUsQ0FBQztJQUNoRTtFQUNGLENBQUMsTUFBTSxJQUNKZixHQUFHLENBQUNoRyxJQUFJLElBQ1BnRyxHQUFHLENBQUNoRyxJQUFJLENBQUNoQyxJQUFJLElBQ2IsT0FBT2dJLEdBQUcsQ0FBQ2lCLFNBQVMsS0FBSyxVQUFVLElBQ25DakIsR0FBRyxDQUFDaUIsU0FBUyxDQUFDLENBQUMsS0FBS2pCLEdBQUcsQ0FBQ2hHLElBQUksQ0FBQ2hDLElBQUksQ0FBQ2tGLEVBQUUsSUFDckM4QyxHQUFHLENBQUNoRyxJQUFJLElBQUlnRyxHQUFHLENBQUNoRyxJQUFJLENBQUNuQyxRQUFRLElBQUksT0FBT21JLEdBQUcsQ0FBQ2lCLFNBQVMsS0FBSyxVQUFVLElBQUlqQixHQUFHLENBQUNpQixTQUFTLENBQUMsQ0FBRSxFQUN6RjtJQUNBakosSUFBSSxHQUFHLElBQUlSLEtBQUssQ0FBQ3dKLElBQUksQ0FBQyxDQUFDO0lBQ3ZCaEosSUFBSSxDQUFDa0YsRUFBRSxHQUFHOEMsR0FBRyxDQUFDaEcsSUFBSSxDQUFDbkMsUUFBUSxHQUFHbUksR0FBRyxDQUFDaUIsU0FBUyxDQUFDLENBQUMsR0FBR2pCLEdBQUcsQ0FBQ2hHLElBQUksQ0FBQ2hDLElBQUksQ0FBQ2tGLEVBQUU7SUFDaEUsTUFBTWxGLElBQUksQ0FBQ2tKLEtBQUssQ0FBQztNQUFFckYsWUFBWSxFQUFFO0lBQUssQ0FBQyxDQUFDO0VBQzFDO0VBRUEsTUFBTTtJQUFFc0Y7RUFBYyxDQUFDLEdBQUduQixHQUFHLENBQUNvQixpQkFBaUIsQ0FBQyxDQUFDO0VBQ2pELE1BQU1WLGFBQWEsR0FBRyxJQUFBVywwQkFBZ0IsRUFBQ3pKLFNBQVMsRUFBRW9JLEdBQUcsQ0FBQ2hHLElBQUksRUFBRW1ILGFBQWEsRUFBRW5KLElBQUksRUFBRWdJLEdBQUcsQ0FBQ3RJLE1BQU0sQ0FBQztFQUM1RjtFQUNBO0VBQ0EsTUFBTTRKLEdBQUcsR0FBRztJQUFFcEMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUFFcUMsZ0JBQWdCLEVBQUUsQ0FBQztFQUFFLENBQUM7RUFDbEQsTUFBTUMsUUFBUSxHQUFHN0wsTUFBTSxDQUFDQyxJQUFJLENBQUNzSixRQUFRLENBQUMsQ0FBQ3VDLElBQUksQ0FBQyxDQUFDO0VBQzdDLEtBQUssTUFBTXJDLFFBQVEsSUFBSW9DLFFBQVEsRUFBRTtJQUMvQixJQUFJM0gsTUFBTSxHQUFHLEVBQUU7SUFDZixJQUFJO01BQ0YsSUFBSXFGLFFBQVEsQ0FBQ0UsUUFBUSxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQy9Ca0MsR0FBRyxDQUFDcEMsUUFBUSxDQUFDRSxRQUFRLENBQUMsR0FBRyxJQUFJO1FBQzdCO01BQ0Y7TUFDQSxNQUFNO1FBQUVzQztNQUFVLENBQUMsR0FBRzFCLEdBQUcsQ0FBQ3RJLE1BQU0sQ0FBQ3lJLGVBQWUsQ0FBQ0MsdUJBQXVCLENBQUNoQixRQUFRLENBQUM7TUFDbEYsTUFBTXVDLFlBQVksR0FBRyxDQUFDM0IsR0FBRyxDQUFDdEksTUFBTSxDQUFDc0MsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFb0YsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO01BQzVELElBQUksQ0FBQ3NDLFNBQVMsSUFBSUMsWUFBWSxDQUFDQyxPQUFPLEtBQUssS0FBSyxFQUFFO1FBQ2hELE1BQU0sSUFBSXBLLEtBQUssQ0FBQ3NELEtBQUssQ0FDbkJ0RCxLQUFLLENBQUNzRCxLQUFLLENBQUMrRyxtQkFBbUIsRUFDL0IsNENBQ0YsQ0FBQztNQUNIO01BQ0EsSUFBSUMsZ0JBQWdCLEdBQUcsTUFBTUosU0FBUyxDQUFDeEMsUUFBUSxDQUFDRSxRQUFRLENBQUMsRUFBRVksR0FBRyxFQUFFaEksSUFBSSxFQUFFMEksYUFBYSxDQUFDO01BQ3BGN0csTUFBTSxHQUFHaUksZ0JBQWdCLElBQUlBLGdCQUFnQixDQUFDakksTUFBTTtNQUNwRDZHLGFBQWEsQ0FBQ3FCLFdBQVcsR0FBR2xJLE1BQU07TUFDbEMsSUFBSWlJLGdCQUFnQixJQUFJQSxnQkFBZ0IsQ0FBQ0osU0FBUyxFQUFFO1FBQ2xESSxnQkFBZ0IsR0FBRyxNQUFNQSxnQkFBZ0IsQ0FBQ0osU0FBUyxDQUFDLENBQUM7TUFDdkQ7TUFDQSxJQUFJLENBQUNJLGdCQUFnQixFQUFFO1FBQ3JCUixHQUFHLENBQUNwQyxRQUFRLENBQUNFLFFBQVEsQ0FBQyxHQUFHRixRQUFRLENBQUNFLFFBQVEsQ0FBQztRQUMzQztNQUNGO01BQ0EsSUFBSSxDQUFDekosTUFBTSxDQUFDQyxJQUFJLENBQUNrTSxnQkFBZ0IsQ0FBQyxDQUFDeEwsTUFBTSxFQUFFO1FBQ3pDZ0wsR0FBRyxDQUFDcEMsUUFBUSxDQUFDRSxRQUFRLENBQUMsR0FBR0YsUUFBUSxDQUFDRSxRQUFRLENBQUM7UUFDM0M7TUFDRjtNQUVBLElBQUkwQyxnQkFBZ0IsQ0FBQ2xGLFFBQVEsRUFBRTtRQUM3QjBFLEdBQUcsQ0FBQ0MsZ0JBQWdCLENBQUNuQyxRQUFRLENBQUMsR0FBRzBDLGdCQUFnQixDQUFDbEYsUUFBUTtNQUM1RDtNQUNBO01BQ0EsSUFBSSxDQUFDa0YsZ0JBQWdCLENBQUNFLFNBQVMsRUFBRTtRQUMvQlYsR0FBRyxDQUFDcEMsUUFBUSxDQUFDRSxRQUFRLENBQUMsR0FBRzBDLGdCQUFnQixDQUFDRyxJQUFJLElBQUkvQyxRQUFRLENBQUNFLFFBQVEsQ0FBQztNQUN0RTtJQUNGLENBQUMsQ0FBQyxPQUFPOEMsR0FBRyxFQUFFO01BQ1osTUFBTTdNLENBQUMsR0FBRyxJQUFBOE0sc0JBQVksRUFBQ0QsR0FBRyxFQUFFO1FBQzFCckgsSUFBSSxFQUFFckQsS0FBSyxDQUFDc0QsS0FBSyxDQUFDc0gsYUFBYTtRQUMvQkMsT0FBTyxFQUFFO01BQ1gsQ0FBQyxDQUFDO01BQ0YsTUFBTUMsVUFBVSxHQUNkdEMsR0FBRyxDQUFDaEcsSUFBSSxJQUFJZ0csR0FBRyxDQUFDaEcsSUFBSSxDQUFDaEMsSUFBSSxHQUFHZ0ksR0FBRyxDQUFDaEcsSUFBSSxDQUFDaEMsSUFBSSxDQUFDa0YsRUFBRSxHQUFHOEMsR0FBRyxDQUFDdUMsSUFBSSxDQUFDNUgsUUFBUSxJQUFJL0MsU0FBUztNQUMvRW9ELGNBQU0sQ0FBQ0MsS0FBSyxDQUNWLDRCQUE0QnBCLE1BQU0sUUFBUXVGLFFBQVEsYUFBYWtELFVBQVUsZUFBZSxHQUN0RkUsSUFBSSxDQUFDQyxTQUFTLENBQUNwTixDQUFDLENBQUMsRUFDbkI7UUFDRXFOLGtCQUFrQixFQUFFN0ksTUFBTTtRQUMxQm9CLEtBQUssRUFBRTVGLENBQUM7UUFDUjJDLElBQUksRUFBRXNLLFVBQVU7UUFDaEJsRDtNQUNGLENBQ0YsQ0FBQztNQUNELE1BQU0vSixDQUFDO0lBQ1Q7RUFDRjtFQUNBLE9BQU9pTSxHQUFHO0FBQ1osQ0FBQztBQUVEcUIsTUFBTSxDQUFDQyxPQUFPLEdBQUc7RUFDZm5MLElBQUk7RUFDSmMsTUFBTTtFQUNOQyxXQUFXO0VBQ1hFLE1BQU07RUFDTkQsUUFBUTtFQUNSRSx5QkFBeUI7RUFDekJ1QyxzQkFBc0I7RUFDdEJ1Qiw0QkFBNEI7RUFDNUJ3QyxxQkFBcUI7RUFDckJRLGtCQUFrQjtFQUNsQk0saURBQWlEO0VBQ2pEZTtBQUNGLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
612
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdXRpbCIsInJlcXVpcmUiLCJfdHJpZ2dlcnMiLCJfbG9nZ2VyIiwiX1Jlc3RRdWVyeSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfUmVzdFdyaXRlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0Iiwib3duS2V5cyIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiaSIsIl90b1ByaW1pdGl2ZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIlBhcnNlIiwiQXV0aCIsImNvbmZpZyIsImNhY2hlQ29udHJvbGxlciIsInVuZGVmaW5lZCIsImlzTWFzdGVyIiwiaXNNYWludGVuYW5jZSIsImlzUmVhZE9ubHkiLCJ1c2VyIiwiaW5zdGFsbGF0aW9uSWQiLCJ1c2VyUm9sZXMiLCJmZXRjaGVkUm9sZXMiLCJyb2xlUHJvbWlzZSIsInByb3RvdHlwZSIsImlzVW5hdXRoZW50aWNhdGVkIiwibWFzdGVyIiwibWFpbnRlbmFuY2UiLCJyZWFkT25seSIsIm5vYm9keSIsInNob3VsZFVwZGF0ZVNlc3Npb25FeHBpcnkiLCJzZXNzaW9uIiwicmVzZXRBZnRlciIsInNlc3Npb25MZW5ndGgiLCJsYXN0VXBkYXRlZCIsIkRhdGUiLCJ1cGRhdGVkQXQiLCJza2lwUmFuZ2UiLCJzZXRUaW1lIiwiZ2V0VGltZSIsInRocm90dGxlIiwicmVuZXdTZXNzaW9uSWZOZWVkZWQiLCJzZXNzaW9uVG9rZW4iLCJleHRlbmRTZXNzaW9uT25Vc2UiLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0IiwicXVlcnkiLCJSZXN0UXVlcnkiLCJtZXRob2QiLCJNZXRob2QiLCJnZXQiLCJhdXRoIiwicnVuQmVmb3JlRmluZCIsImNsYXNzTmFtZSIsInJlc3RXaGVyZSIsInJlc3RPcHRpb25zIiwibGltaXQiLCJyZXN1bHRzIiwiZXhlY3V0ZSIsImV4cGlyZXNBdCIsImdlbmVyYXRlU2Vzc2lvbkV4cGlyZXNBdCIsIlJlc3RXcml0ZSIsIm9iamVjdElkIiwiX2VuY29kZSIsImNvZGUiLCJFcnJvciIsIk9CSkVDVF9OT1RfRk9VTkQiLCJsb2dnZXIiLCJlcnJvciIsImdldEF1dGhGb3JTZXNzaW9uVG9rZW4iLCJ1c2VySlNPTiIsImNhY2hlZFVzZXIiLCJmcm9tSlNPTiIsIlByb21pc2UiLCJyZXNvbHZlIiwiaW5jbHVkZSIsIlF1ZXJ5IiwiU2Vzc2lvbiIsImVxdWFsVG8iLCJmaW5kIiwidXNlTWFzdGVyS2V5IiwibWFwIiwib2JqIiwidG9KU09OIiwiSU5WQUxJRF9TRVNTSU9OX1RPS0VOIiwibm93IiwiaXNvIiwic3RhcnRzV2l0aCIsIklOVEVSTkFMX1NFUlZFUl9FUlJPUiIsInBhc3N3b3JkIiwicHV0IiwidXNlck9iamVjdCIsImdldEF1dGhGb3JMZWdhY3lTZXNzaW9uVG9rZW4iLCJfc2Vzc2lvbl90b2tlbiIsInRoZW4iLCJyZXNwb25zZSIsImdldFVzZXJSb2xlcyIsIl9sb2FkUm9sZXMiLCJnZXRSb2xlc0ZvclVzZXIiLCJ1c2VycyIsIl9fdHlwZSIsImlkIiwiZWFjaCIsInJlc3VsdCIsIlJvbGUiLCJjYWNoZWRSb2xlcyIsInJvbGUiLCJjYWNoZVJvbGVzIiwicm9sZXNNYXAiLCJyZWR1Y2UiLCJtIiwibmFtZXMiLCJuYW1lIiwiaWRzIiwicm9sZU5hbWVzIiwiX2dldEFsbFJvbGVzTmFtZXNGb3JSb2xlSWRzIiwiQXJyYXkiLCJjbGVhclJvbGVDYWNoZSIsImRlbCIsImdldFJvbGVzQnlJZHMiLCJpbnMiLCJjb250YWluZWRJbiIsInJvbGVzIiwiJGluIiwicm9sZUlEcyIsInF1ZXJpZWRSb2xlcyIsInJvbGVJRCIsIndhc1F1ZXJpZWQiLCJTZXQiLCJyZXN1bHRNYXAiLCJtZW1vIiwiY29uY2F0IiwiZmluZFVzZXJzV2l0aEF1dGhEYXRhIiwiYXV0aERhdGEiLCJwcm92aWRlcnMiLCJwcm92aWRlciIsInF1ZXJ5S2V5IiwicSIsImRhdGFiYXNlIiwiJG9yIiwiaGFzTXV0YXRlZEF1dGhEYXRhIiwidXNlckF1dGhEYXRhIiwibXV0YXRlZEF1dGhEYXRhIiwicHJvdmlkZXJEYXRhIiwidXNlclByb3ZpZGVyQXV0aERhdGEiLCJpc0RlZXBTdHJpY3RFcXVhbCIsImNoZWNrSWZVc2VySGFzUHJvdmlkZWRDb25maWd1cmVkUHJvdmlkZXJzRm9yTG9naW4iLCJyZXEiLCJzYXZlZFVzZXJQcm92aWRlcnMiLCJhZGFwdGVyIiwiYXV0aERhdGFNYW5hZ2VyIiwiZ2V0VmFsaWRhdG9yRm9yUHJvdmlkZXIiLCJoYXNQcm92aWRlZEFTb2xvUHJvdmlkZXIiLCJzb21lIiwicG9saWN5IiwiYWRkaXRpb25Qcm92aWRlcnNOb3RGb3VuZCIsImhhc1Byb3ZpZGVkQXRMZWFzdE9uZUFkZGl0aW9uYWxQcm92aWRlciIsInJlcXVlc3RPYmplY3QiLCJpcCIsIk9USEVSX0NBVVNFIiwiam9pbiIsImhhbmRsZUF1dGhEYXRhVmFsaWRhdGlvbiIsImZvdW5kVXNlciIsIlVzZXIiLCJnZXRVc2VySWQiLCJmZXRjaCIsInVwZGF0ZWRPYmplY3QiLCJidWlsZFBhcnNlT2JqZWN0cyIsImdldFJlcXVlc3RPYmplY3QiLCJhY2MiLCJhdXRoRGF0YVJlc3BvbnNlIiwiYXV0aEtleXMiLCJzb3J0IiwidmFsaWRhdG9yIiwiYXV0aFByb3ZpZGVyIiwiZW5hYmxlZCIsIlVOU1VQUE9SVEVEX1NFUlZJQ0UiLCJ2YWxpZGF0aW9uUmVzdWx0IiwidHJpZ2dlck5hbWUiLCJkb05vdFNhdmUiLCJzYXZlIiwiZXJyIiwicmVzb2x2ZUVycm9yIiwiU0NSSVBUX0ZBSUxFRCIsIm1lc3NhZ2UiLCJ1c2VyU3RyaW5nIiwiZGF0YSIsIkpTT04iLCJzdHJpbmdpZnkiLCJhdXRoZW50aWNhdGlvblN0ZXAiLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL0F1dGguanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgUGFyc2UgPSByZXF1aXJlKCdwYXJzZS9ub2RlJyk7XG5pbXBvcnQgeyBpc0RlZXBTdHJpY3RFcXVhbCB9IGZyb20gJ3V0aWwnO1xuaW1wb3J0IHsgZ2V0UmVxdWVzdE9iamVjdCwgcmVzb2x2ZUVycm9yIH0gZnJvbSAnLi90cmlnZ2Vycyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgUmVzdFF1ZXJ5IGZyb20gJy4vUmVzdFF1ZXJ5JztcbmltcG9ydCBSZXN0V3JpdGUgZnJvbSAnLi9SZXN0V3JpdGUnO1xuXG4vLyBBbiBBdXRoIG9iamVjdCB0ZWxscyB5b3Ugd2hvIGlzIHJlcXVlc3Rpbmcgc29tZXRoaW5nIGFuZCB3aGV0aGVyXG4vLyB0aGUgbWFzdGVyIGtleSB3YXMgdXNlZC5cbi8vIHVzZXJPYmplY3QgaXMgYSBQYXJzZS5Vc2VyIGFuZCBjYW4gYmUgbnVsbCBpZiB0aGVyZSdzIG5vIHVzZXIuXG5mdW5jdGlvbiBBdXRoKHtcbiAgY29uZmlnLFxuICBjYWNoZUNvbnRyb2xsZXIgPSB1bmRlZmluZWQsXG4gIGlzTWFzdGVyID0gZmFsc2UsXG4gIGlzTWFpbnRlbmFuY2UgPSBmYWxzZSxcbiAgaXNSZWFkT25seSA9IGZhbHNlLFxuICB1c2VyLFxuICBpbnN0YWxsYXRpb25JZCxcbn0pIHtcbiAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gIHRoaXMuY2FjaGVDb250cm9sbGVyID0gY2FjaGVDb250cm9sbGVyIHx8IChjb25maWcgJiYgY29uZmlnLmNhY2hlQ29udHJvbGxlcik7XG4gIHRoaXMuaW5zdGFsbGF0aW9uSWQgPSBpbnN0YWxsYXRpb25JZDtcbiAgdGhpcy5pc01hc3RlciA9IGlzTWFzdGVyO1xuICB0aGlzLmlzTWFpbnRlbmFuY2UgPSBpc01haW50ZW5hbmNlO1xuICB0aGlzLnVzZXIgPSB1c2VyO1xuICB0aGlzLmlzUmVhZE9ubHkgPSBpc1JlYWRPbmx5O1xuXG4gIC8vIEFzc3VtaW5nIGEgdXNlcnMgcm9sZXMgd29uJ3QgY2hhbmdlIGR1cmluZyBhIHNpbmdsZSByZXF1ZXN0LCB3ZSdsbFxuICAvLyBvbmx5IGxvYWQgdGhlbSBvbmNlLlxuICB0aGlzLnVzZXJSb2xlcyA9IFtdO1xuICB0aGlzLmZldGNoZWRSb2xlcyA9IGZhbHNlO1xuICB0aGlzLnJvbGVQcm9taXNlID0gbnVsbDtcbn1cblxuLy8gV2hldGhlciB0aGlzIGF1dGggY291bGQgcG9zc2libHkgbW9kaWZ5IHRoZSBnaXZlbiB1c2VyIGlkLlxuLy8gSXQgc3RpbGwgY291bGQgYmUgZm9yYmlkZGVuIHZpYSBBQ0xzIGV2ZW4gaWYgdGhpcyByZXR1cm5zIHRydWUuXG5BdXRoLnByb3RvdHlwZS5pc1VuYXV0aGVudGljYXRlZCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuaXNNYXN0ZXIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHRoaXMuaXNNYWludGVuYW5jZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodGhpcy51c2VyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufTtcblxuLy8gQSBoZWxwZXIgdG8gZ2V0IGEgbWFzdGVyLWxldmVsIEF1dGggb2JqZWN0XG5mdW5jdGlvbiBtYXN0ZXIoY29uZmlnKSB7XG4gIHJldHVybiBuZXcgQXV0aCh7IGNvbmZpZywgaXNNYXN0ZXI6IHRydWUgfSk7XG59XG5cbi8vIEEgaGVscGVyIHRvIGdldCBhIG1haW50ZW5hbmNlLWxldmVsIEF1dGggb2JqZWN0XG5mdW5jdGlvbiBtYWludGVuYW5jZShjb25maWcpIHtcbiAgcmV0dXJuIG5ldyBBdXRoKHsgY29uZmlnLCBpc01haW50ZW5hbmNlOiB0cnVlIH0pO1xufVxuXG4vLyBBIGhlbHBlciB0byBnZXQgYSBtYXN0ZXItbGV2ZWwgQXV0aCBvYmplY3RcbmZ1bmN0aW9uIHJlYWRPbmx5KGNvbmZpZykge1xuICByZXR1cm4gbmV3IEF1dGgoeyBjb25maWcsIGlzTWFzdGVyOiB0cnVlLCBpc1JlYWRPbmx5OiB0cnVlIH0pO1xufVxuXG4vLyBBIGhlbHBlciB0byBnZXQgYSBub2JvZHktbGV2ZWwgQXV0aCBvYmplY3RcbmZ1bmN0aW9uIG5vYm9keShjb25maWcpIHtcbiAgcmV0dXJuIG5ldyBBdXRoKHsgY29uZmlnLCBpc01hc3RlcjogZmFsc2UgfSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgc2Vzc2lvbiBzaG91bGQgYmUgdXBkYXRlZCBiYXNlZCBvbiBsYXN0IHVwZGF0ZSB0aW1lICYgc2Vzc2lvbiBsZW5ndGguXG4gKi9cbmZ1bmN0aW9uIHNob3VsZFVwZGF0ZVNlc3Npb25FeHBpcnkoY29uZmlnLCBzZXNzaW9uKSB7XG4gIGNvbnN0IHJlc2V0QWZ0ZXIgPSBjb25maWcuc2Vzc2lvbkxlbmd0aCAvIDI7XG4gIGNvbnN0IGxhc3RVcGRhdGVkID0gbmV3IERhdGUoc2Vzc2lvbj8udXBkYXRlZEF0KTtcbiAgY29uc3Qgc2tpcFJhbmdlID0gbmV3IERhdGUoKTtcbiAgc2tpcFJhbmdlLnNldFRpbWUoc2tpcFJhbmdlLmdldFRpbWUoKSAtIHJlc2V0QWZ0ZXIgKiAxMDAwKTtcbiAgcmV0dXJuIGxhc3RVcGRhdGVkIDw9IHNraXBSYW5nZTtcbn1cblxuY29uc3QgdGhyb3R0bGUgPSB7fTtcbmNvbnN0IHJlbmV3U2Vzc2lvbklmTmVlZGVkID0gYXN5bmMgKHsgY29uZmlnLCBzZXNzaW9uLCBzZXNzaW9uVG9rZW4gfSkgPT4ge1xuICBpZiAoIWNvbmZpZz8uZXh0ZW5kU2Vzc2lvbk9uVXNlKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNsZWFyVGltZW91dCh0aHJvdHRsZVtzZXNzaW9uVG9rZW5dKTtcbiAgdGhyb3R0bGVbc2Vzc2lvblRva2VuXSA9IHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIXNlc3Npb24pIHtcbiAgICAgICAgY29uc3QgcXVlcnkgPSBhd2FpdCBSZXN0UXVlcnkoe1xuICAgICAgICAgIG1ldGhvZDogUmVzdFF1ZXJ5Lk1ldGhvZC5nZXQsXG4gICAgICAgICAgY29uZmlnLFxuICAgICAgICAgIGF1dGg6IG1hc3Rlcihjb25maWcpLFxuICAgICAgICAgIHJ1bkJlZm9yZUZpbmQ6IGZhbHNlLFxuICAgICAgICAgIGNsYXNzTmFtZTogJ19TZXNzaW9uJyxcbiAgICAgICAgICByZXN0V2hlcmU6IHsgc2Vzc2lvblRva2VuIH0sXG4gICAgICAgICAgcmVzdE9wdGlvbnM6IHsgbGltaXQ6IDEgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHsgcmVzdWx0cyB9ID0gYXdhaXQgcXVlcnkuZXhlY3V0ZSgpO1xuICAgICAgICBzZXNzaW9uID0gcmVzdWx0c1swXTtcbiAgICAgIH1cbiAgICAgIGlmICghc2hvdWxkVXBkYXRlU2Vzc2lvbkV4cGlyeShjb25maWcsIHNlc3Npb24pIHx8ICFzZXNzaW9uKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGV4cGlyZXNBdCA9IGNvbmZpZy5nZW5lcmF0ZVNlc3Npb25FeHBpcmVzQXQoKTtcbiAgICAgIGF3YWl0IG5ldyBSZXN0V3JpdGUoXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgbWFzdGVyKGNvbmZpZyksXG4gICAgICAgICdfU2Vzc2lvbicsXG4gICAgICAgIHsgb2JqZWN0SWQ6IHNlc3Npb24ub2JqZWN0SWQgfSxcbiAgICAgICAgeyBleHBpcmVzQXQ6IFBhcnNlLl9lbmNvZGUoZXhwaXJlc0F0KSB9XG4gICAgICApLmV4ZWN1dGUoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZT8uY29kZSAhPT0gUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCkge1xuICAgICAgICBsb2dnZXIuZXJyb3IoJ0NvdWxkIG5vdCB1cGRhdGUgc2Vzc2lvbiBleHBpcnk6ICcsIGUpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgNTAwKTtcbn07XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYW4gQXV0aCBvYmplY3RcbmNvbnN0IGdldEF1dGhGb3JTZXNzaW9uVG9rZW4gPSBhc3luYyBmdW5jdGlvbiAoe1xuICBjb25maWcsXG4gIGNhY2hlQ29udHJvbGxlcixcbiAgc2Vzc2lvblRva2VuLFxuICBpbnN0YWxsYXRpb25JZCxcbn0pIHtcbiAgY2FjaGVDb250cm9sbGVyID0gY2FjaGVDb250cm9sbGVyIHx8IChjb25maWcgJiYgY29uZmlnLmNhY2hlQ29udHJvbGxlcik7XG4gIGlmIChjYWNoZUNvbnRyb2xsZXIpIHtcbiAgICBjb25zdCB1c2VySlNPTiA9IGF3YWl0IGNhY2hlQ29udHJvbGxlci51c2VyLmdldChzZXNzaW9uVG9rZW4pO1xuICAgIGlmICh1c2VySlNPTikge1xuICAgICAgY29uc3QgY2FjaGVkVXNlciA9IFBhcnNlLk9iamVjdC5mcm9tSlNPTih1c2VySlNPTik7XG4gICAgICByZW5ld1Nlc3Npb25JZk5lZWRlZCh7IGNvbmZpZywgc2Vzc2lvblRva2VuIH0pO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShcbiAgICAgICAgbmV3IEF1dGgoe1xuICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICBjYWNoZUNvbnRyb2xsZXIsXG4gICAgICAgICAgaXNNYXN0ZXI6IGZhbHNlLFxuICAgICAgICAgIGluc3RhbGxhdGlvbklkLFxuICAgICAgICAgIHVzZXI6IGNhY2hlZFVzZXIsXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGxldCByZXN1bHRzO1xuICBpZiAoY29uZmlnKSB7XG4gICAgY29uc3QgcmVzdE9wdGlvbnMgPSB7XG4gICAgICBsaW1pdDogMSxcbiAgICAgIGluY2x1ZGU6ICd1c2VyJyxcbiAgICB9O1xuICAgIGNvbnN0IFJlc3RRdWVyeSA9IHJlcXVpcmUoJy4vUmVzdFF1ZXJ5Jyk7XG4gICAgY29uc3QgcXVlcnkgPSBhd2FpdCBSZXN0UXVlcnkoe1xuICAgICAgbWV0aG9kOiBSZXN0UXVlcnkuTWV0aG9kLmdldCxcbiAgICAgIGNvbmZpZyxcbiAgICAgIHJ1bkJlZm9yZUZpbmQ6IGZhbHNlLFxuICAgICAgYXV0aDogbWFzdGVyKGNvbmZpZyksXG4gICAgICBjbGFzc05hbWU6ICdfU2Vzc2lvbicsXG4gICAgICByZXN0V2hlcmU6IHsgc2Vzc2lvblRva2VuIH0sXG4gICAgICByZXN0T3B0aW9ucyxcbiAgICB9KTtcbiAgICByZXN1bHRzID0gKGF3YWl0IHF1ZXJ5LmV4ZWN1dGUoKSkucmVzdWx0cztcbiAgfSBlbHNlIHtcbiAgICByZXN1bHRzID0gKFxuICAgICAgYXdhaXQgbmV3IFBhcnNlLlF1ZXJ5KFBhcnNlLlNlc3Npb24pXG4gICAgICAgIC5saW1pdCgxKVxuICAgICAgICAuaW5jbHVkZSgndXNlcicpXG4gICAgICAgIC5lcXVhbFRvKCdzZXNzaW9uVG9rZW4nLCBzZXNzaW9uVG9rZW4pXG4gICAgICAgIC5maW5kKHsgdXNlTWFzdGVyS2V5OiB0cnVlIH0pXG4gICAgKS5tYXAob2JqID0+IG9iai50b0pTT04oKSk7XG4gIH1cblxuICBpZiAocmVzdWx0cy5sZW5ndGggIT09IDEgfHwgIXJlc3VsdHNbMF1bJ3VzZXInXSkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX1NFU1NJT05fVE9LRU4sICdJbnZhbGlkIHNlc3Npb24gdG9rZW4nKTtcbiAgfVxuICBjb25zdCBzZXNzaW9uID0gcmVzdWx0c1swXTtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKSxcbiAgICBleHBpcmVzQXQgPSBzZXNzaW9uLmV4cGlyZXNBdCA/IG5ldyBEYXRlKHNlc3Npb24uZXhwaXJlc0F0LmlzbykgOiB1bmRlZmluZWQ7XG4gIGlmIChleHBpcmVzQXQgPCBub3cpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9TRVNTSU9OX1RPS0VOLCAnU2Vzc2lvbiB0b2tlbiBpcyBleHBpcmVkLicpO1xuICB9XG4gIGNvbnN0IG9iaiA9IHNlc3Npb24udXNlcjtcblxuICBpZiAodHlwZW9mIG9ialsnb2JqZWN0SWQnXSA9PT0gJ3N0cmluZycgJiYgb2JqWydvYmplY3RJZCddLnN0YXJ0c1dpdGgoJ3JvbGU6JykpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5URVJOQUxfU0VSVkVSX0VSUk9SLCAnSW52YWxpZCBvYmplY3QgSUQuJyk7XG4gIH1cblxuICBkZWxldGUgb2JqLnBhc3N3b3JkO1xuICBvYmpbJ2NsYXNzTmFtZSddID0gJ19Vc2VyJztcbiAgb2JqWydzZXNzaW9uVG9rZW4nXSA9IHNlc3Npb25Ub2tlbjtcbiAgaWYgKGNhY2hlQ29udHJvbGxlcikge1xuICAgIGNhY2hlQ29udHJvbGxlci51c2VyLnB1dChzZXNzaW9uVG9rZW4sIG9iaik7XG4gIH1cbiAgcmVuZXdTZXNzaW9uSWZOZWVkZWQoeyBjb25maWcsIHNlc3Npb24sIHNlc3Npb25Ub2tlbiB9KTtcbiAgY29uc3QgdXNlck9iamVjdCA9IFBhcnNlLk9iamVjdC5mcm9tSlNPTihvYmopO1xuICByZXR1cm4gbmV3IEF1dGgoe1xuICAgIGNvbmZpZyxcbiAgICBjYWNoZUNvbnRyb2xsZXIsXG4gICAgaXNNYXN0ZXI6IGZhbHNlLFxuICAgIGluc3RhbGxhdGlvbklkLFxuICAgIHVzZXI6IHVzZXJPYmplY3QsXG4gIH0pO1xufTtcblxudmFyIGdldEF1dGhGb3JMZWdhY3lTZXNzaW9uVG9rZW4gPSBhc3luYyBmdW5jdGlvbiAoeyBjb25maWcsIHNlc3Npb25Ub2tlbiwgaW5zdGFsbGF0aW9uSWQgfSkge1xuICB2YXIgcmVzdE9wdGlvbnMgPSB7XG4gICAgbGltaXQ6IDEsXG4gIH07XG4gIGNvbnN0IFJlc3RRdWVyeSA9IHJlcXVpcmUoJy4vUmVzdFF1ZXJ5Jyk7XG4gIHZhciBxdWVyeSA9IGF3YWl0IFJlc3RRdWVyeSh7XG4gICAgbWV0aG9kOiBSZXN0UXVlcnkuTWV0aG9kLmdldCxcbiAgICBjb25maWcsXG4gICAgcnVuQmVmb3JlRmluZDogZmFsc2UsXG4gICAgYXV0aDogbWFzdGVyKGNvbmZpZyksXG4gICAgY2xhc3NOYW1lOiAnX1VzZXInLFxuICAgIHJlc3RXaGVyZTogeyBfc2Vzc2lvbl90b2tlbjogc2Vzc2lvblRva2VuIH0sXG4gICAgcmVzdE9wdGlvbnMsXG4gIH0pO1xuICByZXR1cm4gcXVlcnkuZXhlY3V0ZSgpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgIHZhciByZXN1bHRzID0gcmVzcG9uc2UucmVzdWx0cztcbiAgICBpZiAocmVzdWx0cy5sZW5ndGggIT09IDEpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX1NFU1NJT05fVE9LRU4sICdpbnZhbGlkIGxlZ2FjeSBzZXNzaW9uIHRva2VuJyk7XG4gICAgfVxuICAgIGNvbnN0IG9iaiA9IHJlc3VsdHNbMF07XG4gICAgb2JqLmNsYXNzTmFtZSA9ICdfVXNlcic7XG4gICAgY29uc3QgdXNlck9iamVjdCA9IFBhcnNlLk9iamVjdC5mcm9tSlNPTihvYmopO1xuICAgIHJldHVybiBuZXcgQXV0aCh7XG4gICAgICBjb25maWcsXG4gICAgICBpc01hc3RlcjogZmFsc2UsXG4gICAgICBpbnN0YWxsYXRpb25JZCxcbiAgICAgIHVzZXI6IHVzZXJPYmplY3QsXG4gICAgfSk7XG4gIH0pO1xufTtcblxuLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhbiBhcnJheSBvZiByb2xlIG5hbWVzXG5BdXRoLnByb3RvdHlwZS5nZXRVc2VyUm9sZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLmlzTWFzdGVyIHx8IHRoaXMuaXNNYWludGVuYW5jZSB8fCAhdGhpcy51c2VyKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gIH1cbiAgaWYgKHRoaXMuZmV0Y2hlZFJvbGVzKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLnVzZXJSb2xlcyk7XG4gIH1cbiAgaWYgKHRoaXMucm9sZVByb21pc2UpIHtcbiAgICByZXR1cm4gdGhpcy5yb2xlUHJvbWlzZTtcbiAgfVxuICB0aGlzLnJvbGVQcm9taXNlID0gdGhpcy5fbG9hZFJvbGVzKCk7XG4gIHJldHVybiB0aGlzLnJvbGVQcm9taXNlO1xufTtcblxuQXV0aC5wcm90b3R5cGUuZ2V0Um9sZXNGb3JVc2VyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAvL1N0YWNrIGFsbCBQYXJzZS5Sb2xlXG4gIGNvbnN0IHJlc3VsdHMgPSBbXTtcbiAgaWYgKHRoaXMuY29uZmlnKSB7XG4gICAgY29uc3QgcmVzdFdoZXJlID0ge1xuICAgICAgdXNlcnM6IHtcbiAgICAgICAgX190eXBlOiAnUG9pbnRlcicsXG4gICAgICAgIGNsYXNzTmFtZTogJ19Vc2VyJyxcbiAgICAgICAgb2JqZWN0SWQ6IHRoaXMudXNlci5pZCxcbiAgICAgIH0sXG4gICAgfTtcbiAgICBjb25zdCBSZXN0UXVlcnkgPSByZXF1aXJlKCcuL1Jlc3RRdWVyeScpO1xuICAgIGNvbnN0IHF1ZXJ5ID0gYXdhaXQgUmVzdFF1ZXJ5KHtcbiAgICAgIG1ldGhvZDogUmVzdFF1ZXJ5Lk1ldGhvZC5maW5kLFxuICAgICAgcnVuQmVmb3JlRmluZDogZmFsc2UsXG4gICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxuICAgICAgYXV0aDogbWFzdGVyKHRoaXMuY29uZmlnKSxcbiAgICAgIGNsYXNzTmFtZTogJ19Sb2xlJyxcbiAgICAgIHJlc3RXaGVyZSxcbiAgICB9KTtcbiAgICBhd2FpdCBxdWVyeS5lYWNoKHJlc3VsdCA9PiByZXN1bHRzLnB1c2gocmVzdWx0KSk7XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgbmV3IFBhcnNlLlF1ZXJ5KFBhcnNlLlJvbGUpXG4gICAgICAuZXF1YWxUbygndXNlcnMnLCB0aGlzLnVzZXIpXG4gICAgICAuZWFjaChyZXN1bHQgPT4gcmVzdWx0cy5wdXNoKHJlc3VsdC50b0pTT04oKSksIHsgdXNlTWFzdGVyS2V5OiB0cnVlIH0pO1xuICB9XG4gIHJldHVybiByZXN1bHRzO1xufTtcblxuLy8gSXRlcmF0ZXMgdGhyb3VnaCB0aGUgcm9sZSB0cmVlIGFuZCBjb21waWxlcyBhIHVzZXIncyByb2xlc1xuQXV0aC5wcm90b3R5cGUuX2xvYWRSb2xlcyA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuY2FjaGVDb250cm9sbGVyKSB7XG4gICAgY29uc3QgY2FjaGVkUm9sZXMgPSBhd2FpdCB0aGlzLmNhY2hlQ29udHJvbGxlci5yb2xlLmdldCh0aGlzLnVzZXIuaWQpO1xuICAgIGlmIChjYWNoZWRSb2xlcyAhPSBudWxsKSB7XG4gICAgICB0aGlzLmZldGNoZWRSb2xlcyA9IHRydWU7XG4gICAgICB0aGlzLnVzZXJSb2xlcyA9IGNhY2hlZFJvbGVzO1xuICAgICAgcmV0dXJuIGNhY2hlZFJvbGVzO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZpcnN0IGdldCB0aGUgcm9sZSBpZHMgdGhpcyB1c2VyIGlzIGRpcmVjdGx5IGEgbWVtYmVyIG9mXG4gIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCB0aGlzLmdldFJvbGVzRm9yVXNlcigpO1xuICBpZiAoIXJlc3VsdHMubGVuZ3RoKSB7XG4gICAgdGhpcy51c2VyUm9sZXMgPSBbXTtcbiAgICB0aGlzLmZldGNoZWRSb2xlcyA9IHRydWU7XG4gICAgdGhpcy5yb2xlUHJvbWlzZSA9IG51bGw7XG5cbiAgICB0aGlzLmNhY2hlUm9sZXMoKTtcbiAgICByZXR1cm4gdGhpcy51c2VyUm9sZXM7XG4gIH1cblxuICBjb25zdCByb2xlc01hcCA9IHJlc3VsdHMucmVkdWNlKFxuICAgIChtLCByKSA9PiB7XG4gICAgICBtLm5hbWVzLnB1c2goci5uYW1lKTtcbiAgICAgIG0uaWRzLnB1c2goci5vYmplY3RJZCk7XG4gICAgICByZXR1cm4gbTtcbiAgICB9LFxuICAgIHsgaWRzOiBbXSwgbmFtZXM6IFtdIH1cbiAgKTtcblxuICAvLyBydW4gdGhlIHJlY3Vyc2l2ZSBmaW5kaW5nXG4gIGNvbnN0IHJvbGVOYW1lcyA9IGF3YWl0IHRoaXMuX2dldEFsbFJvbGVzTmFtZXNGb3JSb2xlSWRzKHJvbGVzTWFwLmlkcywgcm9sZXNNYXAubmFtZXMpO1xuICB0aGlzLnVzZXJSb2xlcyA9IHJvbGVOYW1lcy5tYXAociA9PiB7XG4gICAgcmV0dXJuICdyb2xlOicgKyByO1xuICB9KTtcbiAgdGhpcy5mZXRjaGVkUm9sZXMgPSB0cnVlO1xuICB0aGlzLnJvbGVQcm9taXNlID0gbnVsbDtcbiAgdGhpcy5jYWNoZVJvbGVzKCk7XG4gIHJldHVybiB0aGlzLnVzZXJSb2xlcztcbn07XG5cbkF1dGgucHJvdG90eXBlLmNhY2hlUm9sZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghdGhpcy5jYWNoZUNvbnRyb2xsZXIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdGhpcy5jYWNoZUNvbnRyb2xsZXIucm9sZS5wdXQodGhpcy51c2VyLmlkLCBBcnJheSguLi50aGlzLnVzZXJSb2xlcykpO1xuICByZXR1cm4gdHJ1ZTtcbn07XG5cbkF1dGgucHJvdG90eXBlLmNsZWFyUm9sZUNhY2hlID0gZnVuY3Rpb24gKHNlc3Npb25Ub2tlbikge1xuICBpZiAoIXRoaXMuY2FjaGVDb250cm9sbGVyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHRoaXMuY2FjaGVDb250cm9sbGVyLnJvbGUuZGVsKHRoaXMudXNlci5pZCk7XG4gIHRoaXMuY2FjaGVDb250cm9sbGVyLnVzZXIuZGVsKHNlc3Npb25Ub2tlbik7XG4gIHJldHVybiB0cnVlO1xufTtcblxuQXV0aC5wcm90b3R5cGUuZ2V0Um9sZXNCeUlkcyA9IGFzeW5jIGZ1bmN0aW9uIChpbnMpIHtcbiAgY29uc3QgcmVzdWx0cyA9IFtdO1xuICAvLyBCdWlsZCBhbiBPUiBxdWVyeSBhY3Jvc3MgYWxsIHBhcmVudFJvbGVzXG4gIGlmICghdGhpcy5jb25maWcpIHtcbiAgICBhd2FpdCBuZXcgUGFyc2UuUXVlcnkoUGFyc2UuUm9sZSlcbiAgICAgIC5jb250YWluZWRJbihcbiAgICAgICAgJ3JvbGVzJyxcbiAgICAgICAgaW5zLm1hcChpZCA9PiB7XG4gICAgICAgICAgY29uc3Qgcm9sZSA9IG5ldyBQYXJzZS5PYmplY3QoUGFyc2UuUm9sZSk7XG4gICAgICAgICAgcm9sZS5pZCA9IGlkO1xuICAgICAgICAgIHJldHVybiByb2xlO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLmVhY2gocmVzdWx0ID0+IHJlc3VsdHMucHVzaChyZXN1bHQudG9KU09OKCkpLCB7IHVzZU1hc3RlcktleTogdHJ1ZSB9KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCByb2xlcyA9IGlucy5tYXAoaWQgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgX190eXBlOiAnUG9pbnRlcicsXG4gICAgICAgIGNsYXNzTmFtZTogJ19Sb2xlJyxcbiAgICAgICAgb2JqZWN0SWQ6IGlkLFxuICAgICAgfTtcbiAgICB9KTtcbiAgICBjb25zdCByZXN0V2hlcmUgPSB7IHJvbGVzOiB7ICRpbjogcm9sZXMgfSB9O1xuICAgIGNvbnN0IFJlc3RRdWVyeSA9IHJlcXVpcmUoJy4vUmVzdFF1ZXJ5Jyk7XG4gICAgY29uc3QgcXVlcnkgPSBhd2FpdCBSZXN0UXVlcnkoe1xuICAgICAgbWV0aG9kOiBSZXN0UXVlcnkuTWV0aG9kLmZpbmQsXG4gICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxuICAgICAgcnVuQmVmb3JlRmluZDogZmFsc2UsXG4gICAgICBhdXRoOiBtYXN0ZXIodGhpcy5jb25maWcpLFxuICAgICAgY2xhc3NOYW1lOiAnX1JvbGUnLFxuICAgICAgcmVzdFdoZXJlLFxuICAgIH0pO1xuICAgIGF3YWl0IHF1ZXJ5LmVhY2gocmVzdWx0ID0+IHJlc3VsdHMucHVzaChyZXN1bHQpKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0cztcbn07XG5cbi8vIEdpdmVuIGEgbGlzdCBvZiByb2xlSWRzLCBmaW5kIGFsbCB0aGUgcGFyZW50IHJvbGVzLCByZXR1cm5zIGEgcHJvbWlzZSB3aXRoIGFsbCBuYW1lc1xuQXV0aC5wcm90b3R5cGUuX2dldEFsbFJvbGVzTmFtZXNGb3JSb2xlSWRzID0gZnVuY3Rpb24gKHJvbGVJRHMsIG5hbWVzID0gW10sIHF1ZXJpZWRSb2xlcyA9IHt9KSB7XG4gIGNvbnN0IGlucyA9IHJvbGVJRHMuZmlsdGVyKHJvbGVJRCA9PiB7XG4gICAgY29uc3Qgd2FzUXVlcmllZCA9IHF1ZXJpZWRSb2xlc1tyb2xlSURdICE9PSB0cnVlO1xuICAgIHF1ZXJpZWRSb2xlc1tyb2xlSURdID0gdHJ1ZTtcbiAgICByZXR1cm4gd2FzUXVlcmllZDtcbiAgfSk7XG5cbiAgLy8gYWxsIHJvbGVzIGFyZSBhY2NvdW50ZWQgZm9yLCByZXR1cm4gdGhlIG5hbWVzXG4gIGlmIChpbnMubGVuZ3RoID09IDApIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFsuLi5uZXcgU2V0KG5hbWVzKV0pO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuZ2V0Um9sZXNCeUlkcyhpbnMpXG4gICAgLnRoZW4ocmVzdWx0cyA9PiB7XG4gICAgICAvLyBOb3RoaW5nIGZvdW5kXG4gICAgICBpZiAoIXJlc3VsdHMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobmFtZXMpO1xuICAgICAgfVxuICAgICAgLy8gTWFwIHRoZSByZXN1bHRzIHdpdGggYWxsIElkcyBhbmQgbmFtZXNcbiAgICAgIGNvbnN0IHJlc3VsdE1hcCA9IHJlc3VsdHMucmVkdWNlKFxuICAgICAgICAobWVtbywgcm9sZSkgPT4ge1xuICAgICAgICAgIG1lbW8ubmFtZXMucHVzaChyb2xlLm5hbWUpO1xuICAgICAgICAgIG1lbW8uaWRzLnB1c2gocm9sZS5vYmplY3RJZCk7XG4gICAgICAgICAgcmV0dXJuIG1lbW87XG4gICAgICAgIH0sXG4gICAgICAgIHsgaWRzOiBbXSwgbmFtZXM6IFtdIH1cbiAgICAgICk7XG4gICAgICAvLyBzdG9yZSB0aGUgbmV3IGZvdW5kIG5hbWVzXG4gICAgICBuYW1lcyA9IG5hbWVzLmNvbmNhdChyZXN1bHRNYXAubmFtZXMpO1xuICAgICAgLy8gZmluZCB0aGUgbmV4dCBvbmVzLCBjaXJjdWxhciByb2xlcyB3aWxsIGJlIGN1dFxuICAgICAgcmV0dXJuIHRoaXMuX2dldEFsbFJvbGVzTmFtZXNGb3JSb2xlSWRzKHJlc3VsdE1hcC5pZHMsIG5hbWVzLCBxdWVyaWVkUm9sZXMpO1xuICAgIH0pXG4gICAgLnRoZW4obmFtZXMgPT4ge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbLi4ubmV3IFNldChuYW1lcyldKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGZpbmRVc2Vyc1dpdGhBdXRoRGF0YSA9IChjb25maWcsIGF1dGhEYXRhKSA9PiB7XG4gIGNvbnN0IHByb3ZpZGVycyA9IE9iamVjdC5rZXlzKGF1dGhEYXRhKTtcbiAgY29uc3QgcXVlcnkgPSBwcm92aWRlcnNcbiAgICAucmVkdWNlKChtZW1vLCBwcm92aWRlcikgPT4ge1xuICAgICAgaWYgKCFhdXRoRGF0YVtwcm92aWRlcl0gfHwgKGF1dGhEYXRhICYmICFhdXRoRGF0YVtwcm92aWRlcl0uaWQpKSB7XG4gICAgICAgIHJldHVybiBtZW1vO1xuICAgICAgfVxuICAgICAgY29uc3QgcXVlcnlLZXkgPSBgYXV0aERhdGEuJHtwcm92aWRlcn0uaWRgO1xuICAgICAgY29uc3QgcXVlcnkgPSB7fTtcbiAgICAgIHF1ZXJ5W3F1ZXJ5S2V5XSA9IGF1dGhEYXRhW3Byb3ZpZGVyXS5pZDtcbiAgICAgIG1lbW8ucHVzaChxdWVyeSk7XG4gICAgICByZXR1cm4gbWVtbztcbiAgICB9LCBbXSlcbiAgICAuZmlsdGVyKHEgPT4ge1xuICAgICAgcmV0dXJuIHR5cGVvZiBxICE9PSAndW5kZWZpbmVkJztcbiAgICB9KTtcblxuICByZXR1cm4gcXVlcnkubGVuZ3RoID4gMFxuICAgID8gY29uZmlnLmRhdGFiYXNlLmZpbmQoJ19Vc2VyJywgeyAkb3I6IHF1ZXJ5IH0sIHsgbGltaXQ6IDIgfSlcbiAgICA6IFByb21pc2UucmVzb2x2ZShbXSk7XG59O1xuXG5jb25zdCBoYXNNdXRhdGVkQXV0aERhdGEgPSAoYXV0aERhdGEsIHVzZXJBdXRoRGF0YSkgPT4ge1xuICBpZiAoIXVzZXJBdXRoRGF0YSkgeyByZXR1cm4geyBoYXNNdXRhdGVkQXV0aERhdGE6IHRydWUsIG11dGF0ZWRBdXRoRGF0YTogYXV0aERhdGEgfTsgfVxuICBjb25zdCBtdXRhdGVkQXV0aERhdGEgPSB7fTtcbiAgT2JqZWN0LmtleXMoYXV0aERhdGEpLmZvckVhY2gocHJvdmlkZXIgPT4ge1xuICAgIC8vIEFub255bW91cyBwcm92aWRlciBpcyBub3QgaGFuZGxlZCB0aGlzIHdheVxuICAgIGlmIChwcm92aWRlciA9PT0gJ2Fub255bW91cycpIHsgcmV0dXJuOyB9XG4gICAgY29uc3QgcHJvdmlkZXJEYXRhID0gYXV0aERhdGFbcHJvdmlkZXJdO1xuICAgIGNvbnN0IHVzZXJQcm92aWRlckF1dGhEYXRhID0gdXNlckF1dGhEYXRhW3Byb3ZpZGVyXTtcbiAgICBpZiAoIWlzRGVlcFN0cmljdEVxdWFsKHByb3ZpZGVyRGF0YSwgdXNlclByb3ZpZGVyQXV0aERhdGEpKSB7XG4gICAgICBtdXRhdGVkQXV0aERhdGFbcHJvdmlkZXJdID0gcHJvdmlkZXJEYXRhO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGhhc011dGF0ZWRBdXRoRGF0YSA9IE9iamVjdC5rZXlzKG11dGF0ZWRBdXRoRGF0YSkubGVuZ3RoICE9PSAwO1xuICByZXR1cm4geyBoYXNNdXRhdGVkQXV0aERhdGEsIG11dGF0ZWRBdXRoRGF0YSB9O1xufTtcblxuY29uc3QgY2hlY2tJZlVzZXJIYXNQcm92aWRlZENvbmZpZ3VyZWRQcm92aWRlcnNGb3JMb2dpbiA9IChcbiAgcmVxID0ge30sXG4gIGF1dGhEYXRhID0ge30sXG4gIHVzZXJBdXRoRGF0YSA9IHt9LFxuICBjb25maWdcbikgPT4ge1xuICBjb25zdCBzYXZlZFVzZXJQcm92aWRlcnMgPSBPYmplY3Qua2V5cyh1c2VyQXV0aERhdGEpLm1hcChwcm92aWRlciA9PiAoe1xuICAgIG5hbWU6IHByb3ZpZGVyLFxuICAgIGFkYXB0ZXI6IGNvbmZpZy5hdXRoRGF0YU1hbmFnZXIuZ2V0VmFsaWRhdG9yRm9yUHJvdmlkZXIocHJvdmlkZXIpLmFkYXB0ZXIsXG4gIH0pKTtcblxuICBjb25zdCBoYXNQcm92aWRlZEFTb2xvUHJvdmlkZXIgPSBzYXZlZFVzZXJQcm92aWRlcnMuc29tZShcbiAgICBwcm92aWRlciA9PlxuICAgICAgcHJvdmlkZXIgJiYgcHJvdmlkZXIuYWRhcHRlciAmJiBwcm92aWRlci5hZGFwdGVyLnBvbGljeSA9PT0gJ3NvbG8nICYmIGF1dGhEYXRhW3Byb3ZpZGVyLm5hbWVdXG4gICk7XG5cbiAgLy8gU29sbyBwcm92aWRlcnMgY2FuIGJlIGNvbnNpZGVyZWQgYXMgc2FmZSwgc28gd2UgZG8gbm90IGhhdmUgdG8gY2hlY2sgaWYgdGhlIHVzZXIgbmVlZHNcbiAgLy8gdG8gcHJvdmlkZSBhbiBhZGRpdGlvbmFsIHByb3ZpZGVyIHRvIGxvZ2luLiBBbiBhdXRoIGFkYXB0ZXIgd2l0aCBcInNvbG9cIiAobGlrZSB3ZWJhdXRobikgbWVhbnNcbiAgLy8gbm8gXCJhZGRpdGlvbmFsXCIgYXV0aCBuZWVkcyB0byBiZSBwcm92aWRlZCB0byBsb2dpbiAobGlrZSBPVFAsIE1GQSlcbiAgaWYgKGhhc1Byb3ZpZGVkQVNvbG9Qcm92aWRlcikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGFkZGl0aW9uUHJvdmlkZXJzTm90Rm91bmQgPSBbXTtcbiAgY29uc3QgaGFzUHJvdmlkZWRBdExlYXN0T25lQWRkaXRpb25hbFByb3ZpZGVyID0gc2F2ZWRVc2VyUHJvdmlkZXJzLnNvbWUocHJvdmlkZXIgPT4ge1xuICAgIGxldCBwb2xpY3kgPSBwcm92aWRlci5hZGFwdGVyLnBvbGljeTtcbiAgICBpZiAodHlwZW9mIHBvbGljeSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVxdWVzdE9iamVjdCA9IHtcbiAgICAgICAgaXA6IHJlcS5jb25maWcuaXAsXG4gICAgICAgIHVzZXI6IHJlcS5hdXRoLnVzZXIsXG4gICAgICAgIG1hc3RlcjogcmVxLmF1dGguaXNNYXN0ZXIsXG4gICAgICB9O1xuICAgICAgcG9saWN5ID0gcG9saWN5LmNhbGwocHJvdmlkZXIuYWRhcHRlciwgcmVxdWVzdE9iamVjdCwgdXNlckF1dGhEYXRhW3Byb3ZpZGVyLm5hbWVdKTtcbiAgICB9XG4gICAgaWYgKHBvbGljeSA9PT0gJ2FkZGl0aW9uYWwnKSB7XG4gICAgICBpZiAoYXV0aERhdGFbcHJvdmlkZXIubmFtZV0pIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBQdXNoIG1pc3NpbmcgcHJvdmlkZXIgZm9yIGVycm9yIG1lc3NhZ2VcbiAgICAgICAgYWRkaXRpb25Qcm92aWRlcnNOb3RGb3VuZC5wdXNoKHByb3ZpZGVyLm5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIGlmIChoYXNQcm92aWRlZEF0TGVhc3RPbmVBZGRpdGlvbmFsUHJvdmlkZXIgfHwgIWFkZGl0aW9uUHJvdmlkZXJzTm90Rm91bmQubGVuZ3RoKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgIFBhcnNlLkVycm9yLk9USEVSX0NBVVNFLFxuICAgIGBNaXNzaW5nIGFkZGl0aW9uYWwgYXV0aERhdGEgJHthZGRpdGlvblByb3ZpZGVyc05vdEZvdW5kLmpvaW4oJywnKX1gXG4gICk7XG59O1xuXG4vLyBWYWxpZGF0ZSBlYWNoIGF1dGhEYXRhIHN0ZXAtYnktc3RlcCBhbmQgcmV0dXJuIHRoZSBwcm92aWRlciByZXNwb25zZXNcbmNvbnN0IGhhbmRsZUF1dGhEYXRhVmFsaWRhdGlvbiA9IGFzeW5jIChhdXRoRGF0YSwgcmVxLCBmb3VuZFVzZXIpID0+IHtcbiAgbGV0IHVzZXI7XG4gIGlmIChmb3VuZFVzZXIpIHtcbiAgICB1c2VyID0gUGFyc2UuVXNlci5mcm9tSlNPTih7IGNsYXNzTmFtZTogJ19Vc2VyJywgLi4uZm91bmRVc2VyIH0pO1xuICAgIC8vIEZpbmQgdXNlciBieSBzZXNzaW9uIGFuZCBjdXJyZW50IG9iamVjdElkOyBvbmx5IHBhc3MgdXNlciBpZiBpdCdzIHRoZSBjdXJyZW50IHVzZXIgb3IgbWFzdGVyIGtleSBpcyBwcm92aWRlZFxuICB9IGVsc2UgaWYgKFxuICAgIChyZXEuYXV0aCAmJlxuICAgICAgcmVxLmF1dGgudXNlciAmJlxuICAgICAgdHlwZW9mIHJlcS5nZXRVc2VySWQgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgIHJlcS5nZXRVc2VySWQoKSA9PT0gcmVxLmF1dGgudXNlci5pZCkgfHxcbiAgICAocmVxLmF1dGggJiYgcmVxLmF1dGguaXNNYXN0ZXIgJiYgdHlwZW9mIHJlcS5nZXRVc2VySWQgPT09ICdmdW5jdGlvbicgJiYgcmVxLmdldFVzZXJJZCgpKVxuICApIHtcbiAgICB1c2VyID0gbmV3IFBhcnNlLlVzZXIoKTtcbiAgICB1c2VyLmlkID0gcmVxLmF1dGguaXNNYXN0ZXIgPyByZXEuZ2V0VXNlcklkKCkgOiByZXEuYXV0aC51c2VyLmlkO1xuICAgIGF3YWl0IHVzZXIuZmV0Y2goeyB1c2VNYXN0ZXJLZXk6IHRydWUgfSk7XG4gIH1cblxuICBjb25zdCB7IHVwZGF0ZWRPYmplY3QgfSA9IHJlcS5idWlsZFBhcnNlT2JqZWN0cygpO1xuICBjb25zdCByZXF1ZXN0T2JqZWN0ID0gZ2V0UmVxdWVzdE9iamVjdCh1bmRlZmluZWQsIHJlcS5hdXRoLCB1cGRhdGVkT2JqZWN0LCB1c2VyLCByZXEuY29uZmlnKTtcbiAgLy8gUGVyZm9ybSB2YWxpZGF0aW9uIGFzIHN0ZXAtYnktc3RlcCBwaXBlbGluZSBmb3IgYmV0dGVyIGVycm9yIGNvbnNpc3RlbmN5XG4gIC8vIGFuZCBhbHNvIHRvIGF2b2lkIHRvIHRyaWdnZXIgYSBwcm92aWRlciAobGlrZSBPVFAgU01TKSBpZiBhbm90aGVyIG9uZSBmYWlsc1xuICBjb25zdCBhY2MgPSB7IGF1dGhEYXRhOiB7fSwgYXV0aERhdGFSZXNwb25zZToge30gfTtcbiAgY29uc3QgYXV0aEtleXMgPSBPYmplY3Qua2V5cyhhdXRoRGF0YSkuc29ydCgpO1xuICBmb3IgKGNvbnN0IHByb3ZpZGVyIG9mIGF1dGhLZXlzKSB7XG4gICAgbGV0IG1ldGhvZCA9ICcnO1xuICAgIHRyeSB7XG4gICAgICBpZiAoYXV0aERhdGFbcHJvdmlkZXJdID09PSBudWxsKSB7XG4gICAgICAgIGFjYy5hdXRoRGF0YVtwcm92aWRlcl0gPSBudWxsO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgdmFsaWRhdG9yIH0gPSByZXEuY29uZmlnLmF1dGhEYXRhTWFuYWdlci5nZXRWYWxpZGF0b3JGb3JQcm92aWRlcihwcm92aWRlcik7XG4gICAgICBjb25zdCBhdXRoUHJvdmlkZXIgPSAocmVxLmNvbmZpZy5hdXRoIHx8IHt9KVtwcm92aWRlcl0gfHwge307XG4gICAgICBpZiAoIXZhbGlkYXRvciB8fCBhdXRoUHJvdmlkZXIuZW5hYmxlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICAgIFBhcnNlLkVycm9yLlVOU1VQUE9SVEVEX1NFUlZJQ0UsXG4gICAgICAgICAgJ1RoaXMgYXV0aGVudGljYXRpb24gbWV0aG9kIGlzIHVuc3VwcG9ydGVkLidcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGxldCB2YWxpZGF0aW9uUmVzdWx0ID0gYXdhaXQgdmFsaWRhdG9yKGF1dGhEYXRhW3Byb3ZpZGVyXSwgcmVxLCB1c2VyLCByZXF1ZXN0T2JqZWN0KTtcbiAgICAgIG1ldGhvZCA9IHZhbGlkYXRpb25SZXN1bHQgJiYgdmFsaWRhdGlvblJlc3VsdC5tZXRob2Q7XG4gICAgICByZXF1ZXN0T2JqZWN0LnRyaWdnZXJOYW1lID0gbWV0aG9kO1xuICAgICAgaWYgKHZhbGlkYXRpb25SZXN1bHQgJiYgdmFsaWRhdGlvblJlc3VsdC52YWxpZGF0b3IpIHtcbiAgICAgICAgdmFsaWRhdGlvblJlc3VsdCA9IGF3YWl0IHZhbGlkYXRpb25SZXN1bHQudmFsaWRhdG9yKCk7XG4gICAgICB9XG4gICAgICBpZiAoIXZhbGlkYXRpb25SZXN1bHQpIHtcbiAgICAgICAgYWNjLmF1dGhEYXRhW3Byb3ZpZGVyXSA9IGF1dGhEYXRhW3Byb3ZpZGVyXTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoIU9iamVjdC5rZXlzKHZhbGlkYXRpb25SZXN1bHQpLmxlbmd0aCkge1xuICAgICAgICBhY2MuYXV0aERhdGFbcHJvdmlkZXJdID0gYXV0aERhdGFbcHJvdmlkZXJdO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbGlkYXRpb25SZXN1bHQucmVzcG9uc2UpIHtcbiAgICAgICAgYWNjLmF1dGhEYXRhUmVzcG9uc2VbcHJvdmlkZXJdID0gdmFsaWRhdGlvblJlc3VsdC5yZXNwb25zZTtcbiAgICAgIH1cbiAgICAgIC8vIFNvbWUgYXV0aCBwcm92aWRlcnMgYWZ0ZXIgaW5pdGlhbGl6YXRpb24gd2lsbCBhdm9pZCB0byByZXBsYWNlIGF1dGhEYXRhIGFscmVhZHkgc3RvcmVkXG4gICAgICBpZiAoIXZhbGlkYXRpb25SZXN1bHQuZG9Ob3RTYXZlKSB7XG4gICAgICAgIGFjYy5hdXRoRGF0YVtwcm92aWRlcl0gPSB2YWxpZGF0aW9uUmVzdWx0LnNhdmUgfHwgYXV0aERhdGFbcHJvdmlkZXJdO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc3QgZSA9IHJlc29sdmVFcnJvcihlcnIsIHtcbiAgICAgICAgY29kZTogUGFyc2UuRXJyb3IuU0NSSVBUX0ZBSUxFRCxcbiAgICAgICAgbWVzc2FnZTogJ0F1dGggZmFpbGVkLiBVbmtub3duIGVycm9yLicsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHVzZXJTdHJpbmcgPVxuICAgICAgICByZXEuYXV0aCAmJiByZXEuYXV0aC51c2VyID8gcmVxLmF1dGgudXNlci5pZCA6IHJlcS5kYXRhLm9iamVjdElkIHx8IHVuZGVmaW5lZDtcbiAgICAgIGxvZ2dlci5lcnJvcihcbiAgICAgICAgYEZhaWxlZCBydW5uaW5nIGF1dGggc3RlcCAke21ldGhvZH0gZm9yICR7cHJvdmlkZXJ9IGZvciB1c2VyICR7dXNlclN0cmluZ30gd2l0aCBFcnJvcjogYCArXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoZSksXG4gICAgICAgIHtcbiAgICAgICAgICBhdXRoZW50aWNhdGlvblN0ZXA6IG1ldGhvZCxcbiAgICAgICAgICBlcnJvcjogZSxcbiAgICAgICAgICB1c2VyOiB1c2VyU3RyaW5nLFxuICAgICAgICAgIHByb3ZpZGVyLFxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFjYztcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBBdXRoLFxuICBtYXN0ZXIsXG4gIG1haW50ZW5hbmNlLFxuICBub2JvZHksXG4gIHJlYWRPbmx5LFxuICBzaG91bGRVcGRhdGVTZXNzaW9uRXhwaXJ5LFxuICBnZXRBdXRoRm9yU2Vzc2lvblRva2VuLFxuICBnZXRBdXRoRm9yTGVnYWN5U2Vzc2lvblRva2VuLFxuICBmaW5kVXNlcnNXaXRoQXV0aERhdGEsXG4gIGhhc011dGF0ZWRBdXRoRGF0YSxcbiAgY2hlY2tJZlVzZXJIYXNQcm92aWRlZENvbmZpZ3VyZWRQcm92aWRlcnNGb3JMb2dpbixcbiAgaGFuZGxlQXV0aERhdGFWYWxpZGF0aW9uLFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFDQSxJQUFBQSxLQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxTQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxPQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxVQUFBLEdBQUFDLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBSyxVQUFB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