@nlabs/metropolisjs 1.0.2 → 1.0.7

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/lib/utils/api.js CHANGED
@@ -112,7 +112,7 @@ export const resolveRestEndpoint = (flux, endpoint)=>{
112
112
  }
113
113
  ], new Error('rest_endpoint_required'));
114
114
  }
115
- if (/^https?:\/\//i.test(targetEndpoint)) {
115
+ if (/^https?:\/\//i.test(targetEndpoint) || targetEndpoint.startsWith('/')) {
116
116
  return targetEndpoint;
117
117
  }
118
118
  const config = getConfigFromFlux(flux);
@@ -248,6 +248,14 @@ export const rumMutation = (flux, name, dataType, queryVariables, returnProperti
248
248
  const rumUrl = config.app?.api?.rum || config.app?.api?.public || '';
249
249
  return getGraphql(flux, rumUrl, false, query, options);
250
250
  };
251
+ export const rumRequest = (flux, batch, options = {})=>{
252
+ const config = getConfigFromFlux(flux);
253
+ const rumUrl = config.app?.api?.endpoints?.rum || config.app?.api?.rum || '';
254
+ return restRequest(flux, rumUrl, 'POST', batch, {
255
+ ...options,
256
+ authenticate: false
257
+ });
258
+ };
251
259
  export const uploadImage = (flux, image, options = {})=>{
252
260
  const config = getConfigFromFlux(flux);
253
261
  const uploadImageUrl = config.app?.api?.uploadImage || '';
@@ -354,4 +362,4 @@ export const refreshSession = async (flux, token, expires)=>{
354
362
  }
355
363
  };
356
364
 
357
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvdXRpbHMvYXBpLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXBpRXJyb3IsIGFqYXgsIGRlbCwgZ2V0LCBncmFwaHFsUXVlcnksIHBvc3QsIHB1dH0gZnJvbSAnQG5sYWJzL3JpcC1odW50ZXInO1xuaW1wb3J0IHtjYW1lbENhc2UsIGlzRW1wdHksIHVwcGVyRmlyc3R9IGZyb20gJ0BubGFicy91dGlscyc7XG5cbmltcG9ydCB7QVBQX0NPTlNUQU5UU30gZnJvbSAnLi4vc3RvcmVzL2FwcFN0b3JlLmpzJztcbmltcG9ydCB7VVNFUl9DT05TVEFOVFN9IGZyb20gJy4uL3N0b3Jlcy91c2VyU3RvcmUuanMnO1xuaW1wb3J0IHtnZXRDb25maWdGcm9tRmx1eH0gZnJvbSAnLi9jb25maWdVdGlscy5qcyc7XG5pbXBvcnQge2NsZWFyUGVyc2lzdGVkU2Vzc2lvbiwgZ2V0UmVmcmVzaFdpbmRvd01pbnV0ZXMsIGh5ZHJhdGVTZXNzaW9uRnJvbVN0b3JhZ2UsIHBhcnNlSnd0RXhwaXJ5TXMsIHN0b3JlU2Vzc2lvbn0gZnJvbSAnLi9zZXNzaW9uLmpzJztcblxuaW1wb3J0IHR5cGUge0ZsdXhBY3Rpb24sIEZsdXhGcmFtZXdvcmt9IGZyb20gJ0BubGFicy9hcmtoYW1qcyc7XG5pbXBvcnQgdHlwZSB7SHVudGVyT3B0aW9uc1R5cGUsIEh1bnRlclF1ZXJ5VHlwZX0gZnJvbSAnQG5sYWJzL3JpcC1odW50ZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwaU9wdGlvbnMge1xuICByZWFkb25seSBvblN1Y2Nlc3M/OiAoZGF0YTogYW55KSA9PiBQcm9taXNlPEZsdXhBY3Rpb24+O1xuICByZWFkb25seSB2YXJpYWJsZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuZXhwb3J0IHR5cGUgUmVzdE1ldGhvZCA9ICdERUxFVEUnIHwgJ0dFVCcgfCAnUEFUQ0gnIHwgJ1BPU1QnIHwgJ1BVVCcgfCAoc3RyaW5nICYge30pO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc3RBcGlPcHRpb25zIGV4dGVuZHMgSHVudGVyT3B0aW9uc1R5cGUge1xuICByZWFkb25seSBhdXRoZW50aWNhdGU/OiBib29sZWFuO1xuICByZWFkb25seSBvblN1Y2Nlc3M/OiAoZGF0YTogYW55KSA9PiBhbnk7XG59XG5cbmV4cG9ydCB0eXBlIFJlYWt0b3JEYkNvbGxlY3Rpb24gPVxuICAnYXBwcycgfFxuICAnY29ubmVjdGlvbnMnIHxcbiAgJ2NvbnRlbnRzJyB8XG4gICdjb252ZXJzYXRpb25zJyB8XG4gICdjcm0nIHxcbiAgJ2V2ZW50cycgfFxuICAnZmlsZXMnIHxcbiAgJ2dyb3VwcycgfFxuICAnaW1hZ2VzJyB8XG4gICdsb2NhdGlvbnMnIHxcbiAgJ21lc3NhZ2VzJyB8XG4gICdub3RpZmljYXRpb25zJyB8XG4gICdwYXltZW50cycgfFxuICAncGVybWlzc2lvbnMnIHxcbiAgJ3Bvc3RzJyB8XG4gICdwZXJzb25hcycgfFxuICAncmVhY3Rpb25zJyB8XG4gICdydW0nIHxcbiAgJ3N1YnNjcmlwdGlvbnMnIHxcbiAgJ3RhZ3MnIHxcbiAgJ3RyYW5zbGF0aW9ucycgfFxuICAndXNlcnMnIHxcbiAgJ3ZpZGVvcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBpUXVlcnlWYXJpYWJsZVR5cGUge1xuICByZWFkb25seSB0eXBlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZhbHVlOiB1bmtub3duO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwaVF1ZXJ5VmFyaWFibGVzIHtcbiAgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogQXBpUXVlcnlWYXJpYWJsZVR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBpUmVzdWx0c1R5cGUge1xuICByZWFkb25seSBba2V5OiBzdHJpbmddOiB1bmtub3duO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJldHJ5VHlwZSB7XG4gIHJlYWRvbmx5IHF1ZXJ5PzogSHVudGVyUXVlcnlUeXBlIHwgSHVudGVyUXVlcnlUeXBlW107XG4gIHJlYWRvbmx5IHJlcXVlc3Q/OiB7XG4gICAgcmVhZG9ubHkgbWV0aG9kOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgcGFyYW1zPzogdW5rbm93bjtcbiAgICByZWFkb25seSB1cmw6IHN0cmluZztcbiAgfTtcbiAgcmVhZG9ubHkgcmVzcG9uc2VNZXRob2Q6IChyZXN1bHRzOiBBcGlSZXN1bHRzVHlwZSkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXNzaW9uVHlwZSB7XG4gIHJlYWRvbmx5IGV4cGlyZXM/OiBudW1iZXI7XG4gIHJlYWRvbmx5IGlzc3VlZD86IG51bWJlcjtcbiAgcmVhZG9ubHkgdG9rZW4/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVzZXJJZD86IHN0cmluZztcbiAgcmVhZG9ubHkgdXNlcm5hbWU/OiBzdHJpbmc7XG59XG5cbmNvbnN0IERFRkFVTFRfUkVGUkVTSF9XSU5ET1dfTUlOVVRFUyA9IDU7XG5jb25zdCBERUZBVUxUX1NFU1NJT05fTUFYX01JTlVURVMgPSAxNTtcblxuY29uc3QgZ2V0TWludXRlc1VudGlsID0gKGV4cGlyZXNBdDogbnVtYmVyKTogbnVtYmVyID0+XG4gIE1hdGgucm91bmQoKGV4cGlyZXNBdCAtIERhdGUubm93KCkpIC8gKDEwMDAgKiA2MCkpO1xuXG5jb25zdCBjbGVhckludmFsaWRTZXNzaW9uU3RhdGUgPSBhc3luYyAoZmx1eDogRmx1eEZyYW1ld29yayk6IFByb21pc2U8dm9pZD4gPT4ge1xuICBhd2FpdCBjbGVhclBlcnNpc3RlZFNlc3Npb24oZmx1eCk7XG4gIGF3YWl0IGZsdXguY2xlYXJBcHBEYXRhKCk7XG4gIGF3YWl0IGZsdXguZGlzcGF0Y2goe3Nlc3Npb246IHt9LCB0eXBlOiBVU0VSX0NPTlNUQU5UUy5TSUdOX09VVF9TVUNDRVNTfSk7XG59O1xuXG5jb25zdCByZXNvbHZlQXV0aFRva2VuID0gYXN5bmMgKGZsdXg6IEZsdXhGcmFtZXdvcmspOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICBjb25zdCBzdGF0ZVNlc3Npb246IFNlc3Npb25UeXBlID0gKGZsdXguZ2V0U3RhdGUoJ3VzZXIuc2Vzc2lvbicpIHx8IHt9KSBhcyBTZXNzaW9uVHlwZTtcbiAgY29uc3QgaHlkcmF0ZWRTZXNzaW9uOiBTZXNzaW9uVHlwZSA9IHN0YXRlU2Vzc2lvbi50b2tlbiA/IHN0YXRlU2Vzc2lvbiA6IGF3YWl0IGh5ZHJhdGVTZXNzaW9uRnJvbVN0b3JhZ2UoZmx1eCk7XG4gIGNvbnN0IHtcbiAgICBleHBpcmVzOiBhdXRoRXhwaXJlcyA9IDAsXG4gICAgaXNzdWVkOiBhdXRoSXNzdWVkID0gMCxcbiAgICB0b2tlbjogaHlkcmF0ZWRUb2tlblxuICB9OiBTZXNzaW9uVHlwZSA9IGh5ZHJhdGVkU2Vzc2lvbiB8fCB7fTtcbiAgbGV0IHRva2VuID0gaHlkcmF0ZWRUb2tlbiB8fCBzdGF0ZVNlc3Npb24udG9rZW47XG5cbiAgaWYoIXRva2VuKSB7XG4gICAgdGhyb3cgbmV3IEFwaUVycm9yKFt7IG1lc3NhZ2U6ICdpbnZhbGlkX3Nlc3Npb24nIH1dLCBuZXcgRXJyb3IoJ2ludmFsaWRfc2Vzc2lvbicpKTtcbiAgfVxuXG4gIGNvbnN0IHRva2VuRXhwaXJlc0F0ID0gcGFyc2VKd3RFeHBpcnlNcyh0b2tlbik7XG5cbiAgaWYodG9rZW5FeHBpcmVzQXQgPiAwICYmIERhdGUubm93KCkgPj0gdG9rZW5FeHBpcmVzQXQpIHtcbiAgICB0aHJvdyBuZXcgQXBpRXJyb3IoW3sgbWVzc2FnZTogJ2V4cGlyZWRfc2Vzc2lvbicgfV0sIG5ldyBFcnJvcignZXhwaXJlZF9zZXNzaW9uJykpO1xuICB9XG5cbiAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnRnJvbUZsdXgoZmx1eCk7XG4gIGNvbnN0IG1pbnV0ZXNVbnRpbEV4cGlyeSA9IGdldE1pbnV0ZXNVbnRpbChOdW1iZXIoYXV0aEV4cGlyZXMgfHwgMCkpO1xuICBjb25zdCBzZXNzaW9uTGlmZXRpbWVNaW51dGVzID0gTWF0aC5yb3VuZCgoYXV0aEV4cGlyZXMgLSBhdXRoSXNzdWVkKSAvICgxMDAwICogNjApKTtcbiAgY29uc3QgcmVmcmVzaFdpbmRvd01pbnV0ZXMgPSBnZXRSZWZyZXNoV2luZG93TWludXRlcyhcbiAgICBzZXNzaW9uTGlmZXRpbWVNaW51dGVzIHx8IERFRkFVTFRfU0VTU0lPTl9NQVhfTUlOVVRFUyxcbiAgICBjb25maWcuYXBwPy5zZXNzaW9uIHx8IHt9XG4gICk7XG4gIGNvbnN0IHJlZnJlc2hFeHBpcmVzTWludXRlcyA9IE1hdGgubWF4KFxuICAgIDEsXG4gICAgTnVtYmVyKGNvbmZpZy5hcHA/LnNlc3Npb24/Lm1heE1pbnV0ZXMgfHwgc2Vzc2lvbkxpZmV0aW1lTWludXRlcyB8fCBERUZBVUxUX1NFU1NJT05fTUFYX01JTlVURVMpXG4gICk7XG5cbiAgaWYobWludXRlc1VudGlsRXhwaXJ5ID4gMCAmJiBtaW51dGVzVW50aWxFeHBpcnkgPD0gcmVmcmVzaFdpbmRvd01pbnV0ZXMpIHtcbiAgICBjb25zdCB7XG4gICAgICBzZXNzaW9uOiB1cGRhdGVkU2Vzc2lvbiA9IHt9XG4gICAgfTogQXBpUmVzdWx0c1R5cGUgPSAoYXdhaXQgcmVmcmVzaFNlc3Npb24oZmx1eCwgdG9rZW4sIHJlZnJlc2hFeHBpcmVzTWludXRlcykpIHx8IHt9O1xuICAgIGNvbnN0IHt0b2tlbjogbmV3VG9rZW59OiBTZXNzaW9uVHlwZSA9ICh1cGRhdGVkU2Vzc2lvbiB8fCB7fSk7XG5cbiAgICBpZighbmV3VG9rZW4pIHtcbiAgICAgIHRocm93IG5ldyBBcGlFcnJvcihbeyBtZXNzYWdlOiAnaW52YWxpZF9zZXNzaW9uJyB9XSwgbmV3IEVycm9yKCdpbnZhbGlkX3Nlc3Npb24nKSk7XG4gICAgfVxuXG4gICAgdG9rZW4gPSBuZXdUb2tlbjtcbiAgfVxuXG4gIHJldHVybiB0b2tlbjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRHcmFwaHFsID0gYXN5bmMgKFxuICBmbHV4OiBGbHV4RnJhbWV3b3JrLFxuICB1cmw6IHN0cmluZyxcbiAgYXV0aGVudGljYXRlOiBib29sZWFuLFxuICBxdWVyeTogSHVudGVyUXVlcnlUeXBlIHwgSHVudGVyUXVlcnlUeXBlW10sXG4gIG9wdGlvbnM6IEFwaU9wdGlvbnNcbik6IFByb21pc2U8QXBpUmVzdWx0c1R5cGU+ID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB7b25TdWNjZXNzfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgcmV0cnk6IFJldHJ5VHlwZSA9IHtxdWVyeSwgcmVzcG9uc2VNZXRob2Q6IG9uU3VjY2VzcyB8fCAoKCkgPT4ge30pfTtcbiAgICBjb25zdCBuZXR3b3JrVHlwZTogc3RyaW5nID0gZmx1eC5nZXRTdGF0ZSgnYXBwLm5ldHdvcmtUeXBlJykgYXMgc3RyaW5nO1xuXG4gICAgaWYobmV0d29ya1R5cGUgPT09ICdub25lJykge1xuICAgICAgcmV0dXJuIGZsdXguZGlzcGF0Y2goe3JldHJ5LCB0eXBlOiBBUFBfQ09OU1RBTlRTLkFQSV9ORVRXT1JLX0VSUk9SfSk7XG4gICAgfVxuXG4gICAgbGV0IHRva2VuOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBpZihhdXRoZW50aWNhdGUpIHtcbiAgICAgIHRva2VuID0gYXdhaXQgcmVzb2x2ZUF1dGhUb2tlbihmbHV4KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZ3JhcGhxbFF1ZXJ5KHVybCwgcXVlcnksIHt0b2tlbjogdG9rZW4gfHwgJyd9KVxuICAgICAgLnRoZW4oYXN5bmMgKHJlc3VsdHMpID0+IHtcbiAgICAgICAgYXdhaXQgZmx1eC5kaXNwYXRjaCh7dHlwZTogQVBQX0NPTlNUQU5UUy5BUElfTkVUV09SS19TVUNDRVNTfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgICB9KVxuICAgICAgLnRoZW4oKGRhdGEpID0+IChvblN1Y2Nlc3MgPyBvblN1Y2Nlc3MoZGF0YSkgOiBkYXRhKSlcbiAgICAgIC5jYXRjaChhc3luYyAoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc3Qge2Vycm9ycyA9IFtdfSA9IGVycm9yO1xuXG4gICAgICAgIGlmKG9uU3VjY2VzcyAmJiBlcnJvcnMuaW5jbHVkZXMoJ25ldHdvcmtfZXJyb3InKSkge1xuICAgICAgICAgIGF3YWl0IGZsdXguZGlzcGF0Y2goe3JldHJ5LCB0eXBlOiBBUFBfQ09OU1RBTlRTLkFQSV9ORVRXT1JLX0VSUk9SfSk7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgICAgICAgfSBlbHNlIGlmKGVycm9ycy5pbmNsdWRlcygnaW52YWxpZF9zZXNzaW9uJykgfHwgZXJyb3JzLmluY2x1ZGVzKCdleHBpcmVkX3Nlc3Npb24nKSkge1xuICAgICAgICAgIGF3YWl0IGNsZWFySW52YWxpZFNlc3Npb25TdGF0ZShmbHV4KTtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gICAgICB9KTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGNvbnN0IGVycm9ycyA9IGVycm9yIGluc3RhbmNlb2YgQXBpRXJyb3IgPyBlcnJvci5lcnJvcnMgOiBbXTtcbiAgICBjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnJztcblxuICAgIGlmKGVycm9ycy5pbmNsdWRlcygnaW52YWxpZF9zZXNzaW9uJykgfHwgZXJyb3JzLmluY2x1ZGVzKCdleHBpcmVkX3Nlc3Npb24nKSB8fCBtZXNzYWdlID09PSAnaW52YWxpZF9zZXNzaW9uJyB8fCBtZXNzYWdlID09PSAnZXhwaXJlZF9zZXNzaW9uJykge1xuICAgICAgYXdhaXQgY2xlYXJJbnZhbGlkU2Vzc2lvblN0YXRlKGZsdXgpO1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIHRocm93IGVycm9yO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcmVzb2x2ZVJlc3RFbmRwb2ludCA9IChcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgZW5kcG9pbnQ6IHN0cmluZ1xuKTogc3RyaW5nID0+IHtcbiAgY29uc3QgdGFyZ2V0RW5kcG9pbnQgPSBTdHJpbmcoZW5kcG9pbnQgfHwgJycpLnRyaW0oKTtcblxuICBpZihpc0VtcHR5KHRhcmdldEVuZHBvaW50KSkge1xuICAgIHRocm93IG5ldyBBcGlFcnJvcihbeyBtZXNzYWdlOiAnaW52YWxpZF91cmwnIH1dLCBuZXcgRXJyb3IoJ3Jlc3RfZW5kcG9pbnRfcmVxdWlyZWQnKSk7XG4gIH1cblxuICBpZigvXmh0dHBzPzpcXC9cXC8vaS50ZXN0KHRhcmdldEVuZHBvaW50KSkge1xuICAgIHJldHVybiB0YXJnZXRFbmRwb2ludDtcbiAgfVxuXG4gIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZ0Zyb21GbHV4KGZsdXgpO1xuICBjb25zdCBjb25maWd1cmVkRW5kcG9pbnQgPSBjb25maWcuYXBwPy5hcGk/LmVuZHBvaW50cz8uW3RhcmdldEVuZHBvaW50XSB8fCAnJztcblxuICBpZihpc0VtcHR5KGNvbmZpZ3VyZWRFbmRwb2ludCkpIHtcbiAgICB0aHJvdyBuZXcgQXBpRXJyb3IoW3sgbWVzc2FnZTogJ2ludmFsaWRfdXJsJyB9XSwgbmV3IEVycm9yKGByZXN0X2VuZHBvaW50X25vdF9jb25maWd1cmVkOiR7dGFyZ2V0RW5kcG9pbnR9YCkpO1xuICB9XG5cbiAgcmV0dXJuIGNvbmZpZ3VyZWRFbmRwb2ludDtcbn07XG5cbmV4cG9ydCBjb25zdCByZXN0UmVxdWVzdCA9IGFzeW5jIDxUID0gQXBpUmVzdWx0c1R5cGU+KFxuICBmbHV4OiBGbHV4RnJhbWV3b3JrLFxuICBlbmRwb2ludDogc3RyaW5nLFxuICBtZXRob2Q6IFJlc3RNZXRob2QgPSAnR0VUJyxcbiAgcGFyYW1zPzogdW5rbm93bixcbiAgb3B0aW9uczogUmVzdEFwaU9wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTxUPiA9PiB7XG4gIGNvbnN0IHthdXRoZW50aWNhdGUgPSBmYWxzZSwgb25TdWNjZXNzLCAuLi5odW50ZXJPcHRpb25zfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHVybCA9IHJlc29sdmVSZXN0RW5kcG9pbnQoZmx1eCwgZW5kcG9pbnQpO1xuICBjb25zdCByZXF1ZXN0TWV0aG9kID0gU3RyaW5nKG1ldGhvZCB8fCAnR0VUJykudG9VcHBlckNhc2UoKTtcbiAgY29uc3QgcmV0cnk6IFJldHJ5VHlwZSA9IHtcbiAgICByZXF1ZXN0OiB7bWV0aG9kOiByZXF1ZXN0TWV0aG9kLCBwYXJhbXMsIHVybH0sXG4gICAgcmVzcG9uc2VNZXRob2Q6IG9uU3VjY2VzcyB8fCAoKCkgPT4ge30pXG4gIH07XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBuZXR3b3JrVHlwZTogc3RyaW5nID0gZmx1eC5nZXRTdGF0ZSgnYXBwLm5ldHdvcmtUeXBlJykgYXMgc3RyaW5nO1xuXG4gICAgaWYobmV0d29ya1R5cGUgPT09ICdub25lJykge1xuICAgICAgcmV0dXJuIGZsdXguZGlzcGF0Y2goe3JldHJ5LCB0eXBlOiBBUFBfQ09OU1RBTlRTLkFQSV9ORVRXT1JLX0VSUk9SfSkgYXMgUHJvbWlzZTxUPjtcbiAgICB9XG5cbiAgICBjb25zdCB0b2tlbiA9IGF1dGhlbnRpY2F0ZSA/IGF3YWl0IHJlc29sdmVBdXRoVG9rZW4oZmx1eCkgOiBodW50ZXJPcHRpb25zLnRva2VuO1xuICAgIGNvbnN0IHJlcXVlc3RPcHRpb25zOiBIdW50ZXJPcHRpb25zVHlwZSA9IHtcbiAgICAgIC4uLmh1bnRlck9wdGlvbnMsXG4gICAgICAuLi4odG9rZW4gPyB7dG9rZW59IDoge30pXG4gICAgfTtcbiAgICBsZXQgZGF0YTogVDtcblxuICAgIHN3aXRjaChyZXF1ZXN0TWV0aG9kKSB7XG4gICAgICBjYXNlICdERUxFVEUnOlxuICAgICAgICBkYXRhID0gYXdhaXQgZGVsKHVybCwgcGFyYW1zLCByZXF1ZXN0T3B0aW9ucyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdHRVQnOlxuICAgICAgICBkYXRhID0gYXdhaXQgZ2V0KHVybCwgcGFyYW1zLCByZXF1ZXN0T3B0aW9ucyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdQT1NUJzpcbiAgICAgICAgZGF0YSA9IGF3YWl0IHBvc3QodXJsLCBwYXJhbXMsIHJlcXVlc3RPcHRpb25zKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ1BVVCc6XG4gICAgICAgIGRhdGEgPSBhd2FpdCBwdXQodXJsLCBwYXJhbXMsIHJlcXVlc3RPcHRpb25zKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGRhdGEgPSBhd2FpdCBhamF4KHVybCwgcmVxdWVzdE1ldGhvZCwgcGFyYW1zLCByZXF1ZXN0T3B0aW9ucyk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGF3YWl0IGZsdXguZGlzcGF0Y2goe3R5cGU6IEFQUF9DT05TVEFOVFMuQVBJX05FVFdPUktfU1VDQ0VTU30pO1xuXG4gICAgcmV0dXJuIG9uU3VjY2VzcyA/IG9uU3VjY2VzcyhkYXRhKSA6IGRhdGE7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBjb25zdCBlcnJvcnMgPSBlcnJvciBpbnN0YW5jZW9mIEFwaUVycm9yID8gZXJyb3IuZXJyb3JzIDogW107XG4gICAgY29uc3QgbWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJyc7XG5cbiAgICBpZihlcnJvcnMuaW5jbHVkZXMoJ2ludmFsaWRfc2Vzc2lvbicpIHx8IGVycm9ycy5pbmNsdWRlcygnZXhwaXJlZF9zZXNzaW9uJykgfHwgbWVzc2FnZSA9PT0gJ2ludmFsaWRfc2Vzc2lvbicgfHwgbWVzc2FnZSA9PT0gJ2V4cGlyZWRfc2Vzc2lvbicpIHtcbiAgICAgIGF3YWl0IGNsZWFySW52YWxpZFNlc3Npb25TdGF0ZShmbHV4KTtcbiAgICAgIHJldHVybiB7fSBhcyBUO1xuICAgIH1cblxuICAgIHRocm93IGVycm9yO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlUXVlcnkgPSAoXG4gIG5hbWU6IHN0cmluZyxcbiAgZGF0YVR5cGU6IFJlYWt0b3JEYkNvbGxlY3Rpb24sXG4gIHZhcmlhYmxlczogQXBpUXVlcnlWYXJpYWJsZXMgPSB7fSxcbiAgcmV0dXJuUHJvcGVydGllczogc3RyaW5nW10gPSBbXSxcbiAgdHlwZSA9ICdxdWVyeSdcbikgPT4ge1xuICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHsuLi52YXJpYWJsZXMgfHwge319O1xuICBjb25zdCB2YXJpYWJsZUtleXMgPSBPYmplY3Qua2V5cyhxdWVyeVZhcmlhYmxlcyk7XG4gIGNvbnN0IHF1ZXJ5TmFtZSA9IG5hbWUucmVwbGFjZSgvIC9nLCAnJyk7XG4gIGxldCBxdWVyeTogc3RyaW5nO1xuXG4gIGlmKHR5cGUgPT09ICdtdXRhdGlvbicpIHtcbiAgICBjb25zdCBtdXRhdGlvbk5hbWUgPSB1cHBlckZpcnN0KGNhbWVsQ2FzZShkYXRhVHlwZSkpICsgdXBwZXJGaXJzdChjYW1lbENhc2UocXVlcnlOYW1lKSk7XG4gICAgcXVlcnkgPSBgJHt0eXBlfSAke211dGF0aW9uTmFtZX0ke1xuICAgICAgdmFyaWFibGVLZXlzLmxlbmd0aFxuICAgICAgICA/IGAoJHt2YXJpYWJsZUtleXMubWFwKChrZXkpID0+IGAkJHtrZXl9OiAke3F1ZXJ5VmFyaWFibGVzW2tleV0udHlwZX1gKS5qb2luKCcsICcpfSlgXG4gICAgICAgIDogJydcbiAgICB9IHtcbiAgICAgICR7ZGF0YVR5cGV9IHtcbiAgICAgICAgJHtjYW1lbENhc2UocXVlcnlOYW1lKX0ke1xuICAgICAgICAgIHZhcmlhYmxlS2V5cy5sZW5ndGhcbiAgICAgICAgICAgID8gYCgke3ZhcmlhYmxlS2V5cy5tYXAoKGtleSkgPT4gYCR7a2V5fTogJCR7a2V5fWApLmpvaW4oJywgJyl9KWBcbiAgICAgICAgICAgIDogJydcbiAgICAgICAgfVxuICAgICAgICAke3JldHVyblByb3BlcnRpZXM/Lmxlbmd0aCA/IGB7JHtyZXR1cm5Qcm9wZXJ0aWVzLmpvaW4oJywgJyl9fWAgOiAnJ31cbiAgICAgIH1cbiAgICB9YDtcbiAgfSBlbHNlIHtcbiAgICBxdWVyeSA9IGAke3R5cGV9ICR7cXVlcnlOYW1lfSR7XG4gICAgICB2YXJpYWJsZUtleXMubGVuZ3RoXG4gICAgICAgID8gYCgke3ZhcmlhYmxlS2V5cy5tYXAoKGtleSkgPT4gYCQke2tleX06ICR7cXVlcnlWYXJpYWJsZXNba2V5XS50eXBlfWApLmpvaW4oJywgJyl9KWBcbiAgICAgICAgOiAnJ1xuICAgIH0ge1xuICAgICAgJHtkYXRhVHlwZX0ge1xuICAgICAgICAke2NhbWVsQ2FzZShxdWVyeU5hbWUpfSR7XG4gICAgICAgICAgdmFyaWFibGVLZXlzLmxlbmd0aFxuICAgICAgICAgICAgPyBgKCR7dmFyaWFibGVLZXlzLm1hcCgoa2V5KSA9PiBgJHtrZXl9OiAkJHtrZXl9YCkuam9pbignLCAnKX0pYFxuICAgICAgICAgICAgOiAnJ1xuICAgICAgICB9XG4gICAgICAgICR7cmV0dXJuUHJvcGVydGllcz8ubGVuZ3RoID8gYHske3JldHVyblByb3BlcnRpZXMuam9pbignLCAnKX19YCA6ICcnfVxuICAgICAgfVxuICAgIH1gO1xuICB9XG5cbiAgY29uc3QgdXBkYXRlZFZhcmlhYmxlcyA9IHZhcmlhYmxlS2V5cy5yZWR1Y2U8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KChxdWVyeURhdGEsIGtleSkgPT4ge1xuICAgIHF1ZXJ5RGF0YVtrZXldID0gcXVlcnlWYXJpYWJsZXNba2V5XS52YWx1ZTtcbiAgICByZXR1cm4gcXVlcnlEYXRhO1xuICB9LCB7fSk7XG5cbiAgcmV0dXJuIHtxdWVyeSwgdmFyaWFibGVzOiB1cGRhdGVkVmFyaWFibGVzfTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVNdXRhdGlvbiA9IChcbiAgbmFtZTogc3RyaW5nLFxuICBkYXRhVHlwZTogUmVha3RvckRiQ29sbGVjdGlvbixcbiAgdmFyaWFibGVzOiBBcGlRdWVyeVZhcmlhYmxlcyA9IHt9LFxuICByZXR1cm5Qcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdXG4pID0+IGNyZWF0ZVF1ZXJ5KG5hbWUsIGRhdGFUeXBlLCB2YXJpYWJsZXMsIHJldHVyblByb3BlcnRpZXMsICdtdXRhdGlvbicpO1xuXG5leHBvcnQgY29uc3QgYXBwUXVlcnkgPSA8VD4oXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIG5hbWU6IHN0cmluZyxcbiAgZGF0YVR5cGU6IFJlYWt0b3JEYkNvbGxlY3Rpb24sXG4gIHF1ZXJ5VmFyaWFibGVzOiBBcGlRdWVyeVZhcmlhYmxlcyxcbiAgcmV0dXJuUHJvcGVydGllczogc3RyaW5nW10sXG4gIG9wdGlvbnM6IEFwaU9wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTxUPiA9PiB7XG4gIGNvbnN0IHF1ZXJ5ID0gY3JlYXRlUXVlcnkobmFtZSwgZGF0YVR5cGUsIHF1ZXJ5VmFyaWFibGVzLCByZXR1cm5Qcm9wZXJ0aWVzKTtcbiAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnRnJvbUZsdXgoZmx1eCk7XG4gIGNvbnN0IGFwcFVybDogc3RyaW5nID0gY29uZmlnLmFwcD8uYXBpPy51cmwgfHwgJyc7XG4gIHJldHVybiBnZXRHcmFwaHFsKGZsdXgsIGFwcFVybCwgdHJ1ZSwgcXVlcnksIG9wdGlvbnMpIGFzIFByb21pc2U8VD47XG59O1xuXG5leHBvcnQgY29uc3QgYXBwTXV0YXRpb24gPSA8VD4oXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIG5hbWU6IHN0cmluZyxcbiAgZGF0YVR5cGU6IFJlYWt0b3JEYkNvbGxlY3Rpb24sXG4gIHF1ZXJ5VmFyaWFibGVzOiBBcGlRdWVyeVZhcmlhYmxlcyxcbiAgcmV0dXJuUHJvcGVydGllczogc3RyaW5nW10sXG4gIG9wdGlvbnM6IEFwaU9wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTxUPiA9PiB7XG4gIGNvbnN0IHF1ZXJ5ID0gY3JlYXRlTXV0YXRpb24obmFtZSwgZGF0YVR5cGUsIHF1ZXJ5VmFyaWFibGVzLCByZXR1cm5Qcm9wZXJ0aWVzKTtcbiAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnRnJvbUZsdXgoZmx1eCk7XG4gIGNvbnN0IGFwcFVybDogc3RyaW5nID0gY29uZmlnLmFwcD8uYXBpPy51cmwgfHwgJyc7XG4gIHJldHVybiBnZXRHcmFwaHFsKGZsdXgsIGFwcFVybCwgdHJ1ZSwgcXVlcnksIG9wdGlvbnMpIGFzIFByb21pc2U8VD47XG59O1xuXG5leHBvcnQgY29uc3QgcHVibGljUXVlcnkgPSA8VD4oXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIG5hbWU6IHN0cmluZyxcbiAgZGF0YVR5cGU6IFJlYWt0b3JEYkNvbGxlY3Rpb24sXG4gIHF1ZXJ5VmFyaWFibGVzOiBBcGlRdWVyeVZhcmlhYmxlcyxcbiAgcmV0dXJuUHJvcGVydGllczogc3RyaW5nW10sXG4gIG9wdGlvbnM6IEFwaU9wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTxUPiA9PiB7XG4gIGNvbnN0IHF1ZXJ5ID0gY3JlYXRlUXVlcnkobmFtZSwgZGF0YVR5cGUsIHF1ZXJ5VmFyaWFibGVzLCByZXR1cm5Qcm9wZXJ0aWVzKTtcbiAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnRnJvbUZsdXgoZmx1eCk7XG4gIGNvbnN0IHB1YmxpY1VybDogc3RyaW5nID0gY29uZmlnLmFwcD8uYXBpPy5wdWJsaWMgfHwgJyc7XG4gIHJldHVybiBnZXRHcmFwaHFsKGZsdXgsIHB1YmxpY1VybCwgZmFsc2UsIHF1ZXJ5LCBvcHRpb25zKSBhcyBQcm9taXNlPFQ+O1xufTtcblxuZXhwb3J0IGNvbnN0IHB1YmxpY011dGF0aW9uID0gPFQ+KFxuICBmbHV4OiBGbHV4RnJhbWV3b3JrLFxuICBuYW1lOiBzdHJpbmcsXG4gIGRhdGFUeXBlOiBSZWFrdG9yRGJDb2xsZWN0aW9uLFxuICBxdWVyeVZhcmlhYmxlczogQXBpUXVlcnlWYXJpYWJsZXMsXG4gIHJldHVyblByb3BlcnRpZXM6IHN0cmluZ1tdLFxuICBvcHRpb25zOiBBcGlPcHRpb25zID0ge31cbik6IFByb21pc2U8VD4gPT4ge1xuICBjb25zdCBxdWVyeSA9IGNyZWF0ZU11dGF0aW9uKG5hbWUsIGRhdGFUeXBlLCBxdWVyeVZhcmlhYmxlcywgcmV0dXJuUHJvcGVydGllcyk7XG4gIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZ0Zyb21GbHV4KGZsdXgpO1xuICBjb25zdCBwdWJsaWNVcmw6IHN0cmluZyA9IGNvbmZpZy5hcHA/LmFwaT8ucHVibGljIHx8ICcnO1xuICByZXR1cm4gZ2V0R3JhcGhxbChmbHV4LCBwdWJsaWNVcmwsIGZhbHNlLCBxdWVyeSwgb3B0aW9ucykgYXMgUHJvbWlzZTxUPjtcbn07XG5cbmV4cG9ydCBjb25zdCBydW1NdXRhdGlvbiA9IDxUPihcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgbmFtZTogc3RyaW5nLFxuICBkYXRhVHlwZTogUmVha3RvckRiQ29sbGVjdGlvbixcbiAgcXVlcnlWYXJpYWJsZXM6IEFwaVF1ZXJ5VmFyaWFibGVzLFxuICByZXR1cm5Qcm9wZXJ0aWVzOiBzdHJpbmdbXSxcbiAgb3B0aW9uczogQXBpT3B0aW9ucyA9IHt9XG4pOiBQcm9taXNlPFQ+ID0+IHtcbiAgY29uc3QgcXVlcnkgPSBjcmVhdGVNdXRhdGlvbihuYW1lLCBkYXRhVHlwZSwgcXVlcnlWYXJpYWJsZXMsIHJldHVyblByb3BlcnRpZXMpO1xuICBjb25zdCBjb25maWcgPSBnZXRDb25maWdGcm9tRmx1eChmbHV4KTtcbiAgY29uc3QgcnVtVXJsOiBzdHJpbmcgPSBjb25maWcuYXBwPy5hcGk/LnJ1bSB8fCBjb25maWcuYXBwPy5hcGk/LnB1YmxpYyB8fCAnJztcbiAgcmV0dXJuIGdldEdyYXBocWwoZmx1eCwgcnVtVXJsLCBmYWxzZSwgcXVlcnksIG9wdGlvbnMpIGFzIFByb21pc2U8VD47XG59O1xuXG5leHBvcnQgY29uc3QgdXBsb2FkSW1hZ2UgPSAoXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIGltYWdlOiBGb3JtRGF0YSB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBvcHRpb25zOiBIdW50ZXJPcHRpb25zVHlwZSA9IHt9XG4pOiBQcm9taXNlPEFwaVJlc3VsdHNUeXBlPiA9PiB7XG4gIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZ0Zyb21GbHV4KGZsdXgpO1xuICBjb25zdCB1cGxvYWRJbWFnZVVybDogc3RyaW5nID0gY29uZmlnLmFwcD8uYXBpPy51cGxvYWRJbWFnZSB8fCAnJztcbiAgY29uc3QgdG9rZW4gPSBmbHV4LmdldFN0YXRlKCd1c2VyLnNlc3Npb24udG9rZW4nKTtcblxuICBpZihpc0VtcHR5KHVwbG9hZEltYWdlVXJsKSkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgQXBpRXJyb3IoW3sgbWVzc2FnZTogJ2ludmFsaWRfdXJsJyB9XSwgbmV3IEVycm9yKCd1cGxvYWRfZW5kcG9pbnRfbm90X2NvbmZpZ3VyZWQnKSkpO1xuICB9XG5cbiAgaWYoaXNFbXB0eSh0b2tlbikpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEFwaUVycm9yKFt7IG1lc3NhZ2U6ICdpbnZhbGlkX3Nlc3Npb24nIH1dLCBuZXcgRXJyb3IoJ21pc3NpbmdfYXV0aF90b2tlbicpKSk7XG4gIH1cblxuICBjb25zdCBoZWFkZXJzID0gbmV3IEhlYWRlcnMoKTtcbiAgaGVhZGVycy5zZXQoJ0F1dGhvcml6YXRpb24nLCBgQmVhcmVyICR7dG9rZW59YCk7XG5cbiAgaWYodHlwZW9mIEZvcm1EYXRhICE9PSAndW5kZWZpbmVkJyAmJiBpbWFnZSBpbnN0YW5jZW9mIEZvcm1EYXRhKSB7XG4gICAgaGVhZGVycy5zZXQoJ0FjY2VwdCcsICdhcHBsaWNhdGlvbi9qc29uJyk7XG5cbiAgICByZXR1cm4gZmV0Y2godXBsb2FkSW1hZ2VVcmwsIHtcbiAgICAgIGJvZHk6IGltYWdlLFxuICAgICAgaGVhZGVycyxcbiAgICAgIG1ldGhvZDogJ1BPU1QnXG4gICAgfSkudGhlbihhc3luYyAocmVzcG9uc2UpID0+IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlVHlwZSA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKSB8fCAnJztcbiAgICAgIGNvbnN0IGRhdGEgPSByZXNwb25zZVR5cGUuaW5jbHVkZXMoJ2FwcGxpY2F0aW9uL2pzb24nKVxuICAgICAgICA/IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuICAgICAgICA6IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcblxuICAgICAgaWYoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcgJiYgZGF0YSAmJiAnZXJyb3InIGluIGRhdGFcbiAgICAgICAgICA/IFN0cmluZygoZGF0YSBhcyB7ZXJyb3I/OiBzdHJpbmd9KS5lcnJvciB8fCByZXNwb25zZS5zdGF0dXNUZXh0KVxuICAgICAgICAgIDogU3RyaW5nKGRhdGEgfHwgcmVzcG9uc2Uuc3RhdHVzVGV4dCk7XG4gICAgICAgIHRocm93IG5ldyBBcGlFcnJvcihbeyBtZXNzYWdlOiAndXBsb2FkX2Vycm9yJyB9XSwgbmV3IEVycm9yKG1lc3NhZ2UpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRhdGEgYXMgQXBpUmVzdWx0c1R5cGU7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcG9zdCh1cGxvYWRJbWFnZVVybCwgaW1hZ2UsIHtoZWFkZXJzLCAuLi5vcHRpb25zfSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVmcmVzaFNlc3Npb24gPSBhc3luYyAoXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIHRva2VuPzogc3RyaW5nLFxuICBleHBpcmVzPzogbnVtYmVyXG4pOiBQcm9taXNlPEZsdXhBY3Rpb24gfCBudWxsPiA9PiB7XG4gIGNvbnN0IHJlZnJlc2hUb2tlbiA9IGlzRW1wdHkodG9rZW4pID8gZmx1eC5nZXRTdGF0ZSgndXNlci5zZXNzaW9uLnRva2VuJykgOiB0b2tlbjtcblxuICBpZihpc0VtcHR5KHJlZnJlc2hUb2tlbikpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHRva2VuRXhwaXJlc0F0ID0gcGFyc2VKd3RFeHBpcnlNcyhTdHJpbmcocmVmcmVzaFRva2VuKSk7XG5cbiAgaWYodG9rZW5FeHBpcmVzQXQgPiAwICYmIERhdGUubm93KCkgPj0gdG9rZW5FeHBpcmVzQXQpIHtcbiAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcignZXhwaXJlZF9zZXNzaW9uJyk7XG4gICAgYXdhaXQgY2xlYXJJbnZhbGlkU2Vzc2lvblN0YXRlKGZsdXgpO1xuICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBVU0VSX0NPTlNUQU5UUy5HRVRfU0VTU0lPTl9FUlJPUn0pO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBjb25maWcgPSBnZXRDb25maWdGcm9tRmx1eChmbHV4KTtcbiAgICBjb25zdCByZXF1ZXN0ZWRFeHBpcmVzID0gTWF0aC5tYXgoXG4gICAgICAxLFxuICAgICAgTnVtYmVyKGV4cGlyZXMgfHwgY29uZmlnLmFwcD8uc2Vzc2lvbj8ubWF4TWludXRlcyB8fCBERUZBVUxUX1NFU1NJT05fTUFYX01JTlVURVMpXG4gICAgKTtcbiAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgIGV4cGlyZXM6IHtcbiAgICAgICAgdHlwZTogJ0ludCcsXG4gICAgICAgIHZhbHVlOiByZXF1ZXN0ZWRFeHBpcmVzXG4gICAgICB9LFxuICAgICAgdG9rZW46IHtcbiAgICAgICAgdHlwZTogJ1N0cmluZyEnLFxuICAgICAgICB2YWx1ZTogcmVmcmVzaFRva2VuXG4gICAgICB9XG4gICAgfTtcbiAgICBjb25zdCBvblN1Y2Nlc3MgPSBhc3luYyAoZGF0YTogQXBpUmVzdWx0c1R5cGUgPSB7fSk6IFByb21pc2U8Rmx1eEFjdGlvbj4gPT4ge1xuICAgICAgY29uc3QgcmF3U2Vzc2lvbkRhdGEgPSAoZGF0YSBhcyB7dXNlcnM/OiB7cmVmcmVzaFNlc3Npb24/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn19KT8udXNlcnM/LnJlZnJlc2hTZXNzaW9uO1xuICAgICAgY29uc3Qgc2Vzc2lvbkRhdGEgPSByYXdTZXNzaW9uRGF0YSAmJiB0eXBlb2YgcmF3U2Vzc2lvbkRhdGEgPT09ICdvYmplY3QnXG4gICAgICAgID8gcmF3U2Vzc2lvbkRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgICAgOiB7fTtcbiAgICAgIGNvbnN0IGN1cnJlbnRTZXNzaW9uID0gKGZsdXguZ2V0U3RhdGUoJ3VzZXIuc2Vzc2lvbicsIHt9KSB8fCB7fSkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICBjb25zdCBtZXJnZWRTZXNzaW9uID0gYXdhaXQgc3RvcmVTZXNzaW9uKGZsdXgsIHsuLi5jdXJyZW50U2Vzc2lvbiwgLi4uc2Vzc2lvbkRhdGF9KTtcbiAgICAgIHJldHVybiBmbHV4LmRpc3BhdGNoKHtzZXNzaW9uOiBtZXJnZWRTZXNzaW9uLCB0eXBlOiBVU0VSX0NPTlNUQU5UUy5VUERBVEVfU0VTU0lPTl9TVUNDRVNTfSk7XG4gICAgfTtcblxuICAgIHJldHVybiBhd2FpdCBwdWJsaWNNdXRhdGlvbihmbHV4LCAncmVmcmVzaFNlc3Npb24nLCAndXNlcnMnLCBxdWVyeVZhcmlhYmxlcywgWydleHBpcmVzJywgJ2lzc3VlZCcsICd0b2tlbiddLCB7XG4gICAgICBvblN1Y2Nlc3NcbiAgICB9KTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJyc7XG5cbiAgICBpZihlcnJvck1lc3NhZ2UgPT09ICdpbnZhbGlkX3Nlc3Npb24nIHx8IGVycm9yTWVzc2FnZSA9PT0gJ2V4cGlyZWRfc2Vzc2lvbicpIHtcbiAgICAgIGF3YWl0IGNsZWFySW52YWxpZFNlc3Npb25TdGF0ZShmbHV4KTtcbiAgICB9XG5cbiAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogVVNFUl9DT05TVEFOVFMuR0VUX1NFU1NJT05fRVJST1J9KTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufTtcbiJdLCJuYW1lcyI6WyJBcGlFcnJvciIsImFqYXgiLCJkZWwiLCJnZXQiLCJncmFwaHFsUXVlcnkiLCJwb3N0IiwicHV0IiwiY2FtZWxDYXNlIiwiaXNFbXB0eSIsInVwcGVyRmlyc3QiLCJBUFBfQ09OU1RBTlRTIiwiVVNFUl9DT05TVEFOVFMiLCJnZXRDb25maWdGcm9tRmx1eCIsImNsZWFyUGVyc2lzdGVkU2Vzc2lvbiIsImdldFJlZnJlc2hXaW5kb3dNaW51dGVzIiwiaHlkcmF0ZVNlc3Npb25Gcm9tU3RvcmFnZSIsInBhcnNlSnd0RXhwaXJ5TXMiLCJzdG9yZVNlc3Npb24iLCJERUZBVUxUX1JFRlJFU0hfV0lORE9XX01JTlVURVMiLCJERUZBVUxUX1NFU1NJT05fTUFYX01JTlVURVMiLCJnZXRNaW51dGVzVW50aWwiLCJleHBpcmVzQXQiLCJNYXRoIiwicm91bmQiLCJEYXRlIiwibm93IiwiY2xlYXJJbnZhbGlkU2Vzc2lvblN0YXRlIiwiZmx1eCIsImNsZWFyQXBwRGF0YSIsImRpc3BhdGNoIiwic2Vzc2lvbiIsInR5cGUiLCJTSUdOX09VVF9TVUNDRVNTIiwicmVzb2x2ZUF1dGhUb2tlbiIsInN0YXRlU2Vzc2lvbiIsImdldFN0YXRlIiwiaHlkcmF0ZWRTZXNzaW9uIiwidG9rZW4iLCJleHBpcmVzIiwiYXV0aEV4cGlyZXMiLCJpc3N1ZWQiLCJhdXRoSXNzdWVkIiwiaHlkcmF0ZWRUb2tlbiIsIm1lc3NhZ2UiLCJFcnJvciIsInRva2VuRXhwaXJlc0F0IiwiY29uZmlnIiwibWludXRlc1VudGlsRXhwaXJ5IiwiTnVtYmVyIiwic2Vzc2lvbkxpZmV0aW1lTWludXRlcyIsInJlZnJlc2hXaW5kb3dNaW51dGVzIiwiYXBwIiwicmVmcmVzaEV4cGlyZXNNaW51dGVzIiwibWF4IiwibWF4TWludXRlcyIsInVwZGF0ZWRTZXNzaW9uIiwicmVmcmVzaFNlc3Npb24iLCJuZXdUb2tlbiIsImdldEdyYXBocWwiLCJ1cmwiLCJhdXRoZW50aWNhdGUiLCJxdWVyeSIsIm9wdGlvbnMiLCJvblN1Y2Nlc3MiLCJyZXRyeSIsInJlc3BvbnNlTWV0aG9kIiwibmV0d29ya1R5cGUiLCJBUElfTkVUV09SS19FUlJPUiIsInRoZW4iLCJyZXN1bHRzIiwiQVBJX05FVFdPUktfU1VDQ0VTUyIsImRhdGEiLCJjYXRjaCIsImVycm9yIiwiZXJyb3JzIiwiaW5jbHVkZXMiLCJQcm9taXNlIiwicmVqZWN0IiwicmVzb2x2ZSIsInJlc29sdmVSZXN0RW5kcG9pbnQiLCJlbmRwb2ludCIsInRhcmdldEVuZHBvaW50IiwiU3RyaW5nIiwidHJpbSIsInRlc3QiLCJjb25maWd1cmVkRW5kcG9pbnQiLCJhcGkiLCJlbmRwb2ludHMiLCJyZXN0UmVxdWVzdCIsIm1ldGhvZCIsInBhcmFtcyIsImh1bnRlck9wdGlvbnMiLCJyZXF1ZXN0TWV0aG9kIiwidG9VcHBlckNhc2UiLCJyZXF1ZXN0IiwicmVxdWVzdE9wdGlvbnMiLCJjcmVhdGVRdWVyeSIsIm5hbWUiLCJkYXRhVHlwZSIsInZhcmlhYmxlcyIsInJldHVyblByb3BlcnRpZXMiLCJxdWVyeVZhcmlhYmxlcyIsInZhcmlhYmxlS2V5cyIsIk9iamVjdCIsImtleXMiLCJxdWVyeU5hbWUiLCJyZXBsYWNlIiwibXV0YXRpb25OYW1lIiwibGVuZ3RoIiwibWFwIiwia2V5Iiwiam9pbiIsInVwZGF0ZWRWYXJpYWJsZXMiLCJyZWR1Y2UiLCJxdWVyeURhdGEiLCJ2YWx1ZSIsImNyZWF0ZU11dGF0aW9uIiwiYXBwUXVlcnkiLCJhcHBVcmwiLCJhcHBNdXRhdGlvbiIsInB1YmxpY1F1ZXJ5IiwicHVibGljVXJsIiwicHVibGljIiwicHVibGljTXV0YXRpb24iLCJydW1NdXRhdGlvbiIsInJ1bVVybCIsInJ1bSIsInVwbG9hZEltYWdlIiwiaW1hZ2UiLCJ1cGxvYWRJbWFnZVVybCIsImhlYWRlcnMiLCJIZWFkZXJzIiwic2V0IiwiRm9ybURhdGEiLCJmZXRjaCIsImJvZHkiLCJyZXNwb25zZSIsInJlc3BvbnNlVHlwZSIsImpzb24iLCJ0ZXh0Iiwib2siLCJzdGF0dXNUZXh0IiwicmVmcmVzaFRva2VuIiwiR0VUX1NFU1NJT05fRVJST1IiLCJyZXF1ZXN0ZWRFeHBpcmVzIiwicmF3U2Vzc2lvbkRhdGEiLCJ1c2VycyIsInNlc3Npb25EYXRhIiwiY3VycmVudFNlc3Npb24iLCJtZXJnZWRTZXNzaW9uIiwiVVBEQVRFX1NFU1NJT05fU1VDQ0VTUyIsImVycm9yTWVzc2FnZSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUUEsUUFBUSxFQUFFQyxJQUFJLEVBQUVDLEdBQUcsRUFBRUMsR0FBRyxFQUFFQyxZQUFZLEVBQUVDLElBQUksRUFBRUMsR0FBRyxRQUFPLG9CQUFvQjtBQUNwRixTQUFRQyxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsVUFBVSxRQUFPLGVBQWU7QUFFNUQsU0FBUUMsYUFBYSxRQUFPLHdCQUF3QjtBQUNwRCxTQUFRQyxjQUFjLFFBQU8seUJBQXlCO0FBQ3RELFNBQVFDLGlCQUFpQixRQUFPLG1CQUFtQjtBQUNuRCxTQUFRQyxxQkFBcUIsRUFBRUMsdUJBQXVCLEVBQUVDLHlCQUF5QixFQUFFQyxnQkFBZ0IsRUFBRUMsWUFBWSxRQUFPLGVBQWU7QUF5RXZJLE1BQU1DLGlDQUFpQztBQUN2QyxNQUFNQyw4QkFBOEI7QUFFcEMsTUFBTUMsa0JBQWtCLENBQUNDLFlBQ3ZCQyxLQUFLQyxLQUFLLENBQUMsQUFBQ0YsQ0FBQUEsWUFBWUcsS0FBS0MsR0FBRyxFQUFDLElBQU0sQ0FBQSxPQUFPLEVBQUM7QUFFakQsTUFBTUMsMkJBQTJCLE9BQU9DO0lBQ3RDLE1BQU1kLHNCQUFzQmM7SUFDNUIsTUFBTUEsS0FBS0MsWUFBWTtJQUN2QixNQUFNRCxLQUFLRSxRQUFRLENBQUM7UUFBQ0MsU0FBUyxDQUFDO1FBQUdDLE1BQU1wQixlQUFlcUIsZ0JBQWdCO0lBQUE7QUFDekU7QUFFQSxNQUFNQyxtQkFBbUIsT0FBT047SUFDOUIsTUFBTU8sZUFBNkJQLEtBQUtRLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQztJQUNyRSxNQUFNQyxrQkFBK0JGLGFBQWFHLEtBQUssR0FBR0gsZUFBZSxNQUFNbkIsMEJBQTBCWTtJQUN6RyxNQUFNLEVBQ0pXLFNBQVNDLGNBQWMsQ0FBQyxFQUN4QkMsUUFBUUMsYUFBYSxDQUFDLEVB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
365
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvdXRpbHMvYXBpLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXBpRXJyb3IsIGFqYXgsIGRlbCwgZ2V0LCBncmFwaHFsUXVlcnksIHBvc3QsIHB1dH0gZnJvbSAnQG5sYWJzL3JpcC1odW50ZXInO1xuaW1wb3J0IHtjYW1lbENhc2UsIGlzRW1wdHksIHVwcGVyRmlyc3R9IGZyb20gJ0BubGFicy91dGlscyc7XG5cbmltcG9ydCB7QVBQX0NPTlNUQU5UU30gZnJvbSAnLi4vc3RvcmVzL2FwcFN0b3JlLmpzJztcbmltcG9ydCB7VVNFUl9DT05TVEFOVFN9IGZyb20gJy4uL3N0b3Jlcy91c2VyU3RvcmUuanMnO1xuaW1wb3J0IHtnZXRDb25maWdGcm9tRmx1eH0gZnJvbSAnLi9jb25maWdVdGlscy5qcyc7XG5pbXBvcnQge2NsZWFyUGVyc2lzdGVkU2Vzc2lvbiwgZ2V0UmVmcmVzaFdpbmRvd01pbnV0ZXMsIGh5ZHJhdGVTZXNzaW9uRnJvbVN0b3JhZ2UsIHBhcnNlSnd0RXhwaXJ5TXMsIHN0b3JlU2Vzc2lvbn0gZnJvbSAnLi9zZXNzaW9uLmpzJztcblxuaW1wb3J0IHR5cGUge0ZsdXhBY3Rpb24sIEZsdXhGcmFtZXdvcmt9IGZyb20gJ0BubGFicy9hcmtoYW1qcyc7XG5pbXBvcnQgdHlwZSB7SHVudGVyT3B0aW9uc1R5cGUsIEh1bnRlclF1ZXJ5VHlwZX0gZnJvbSAnQG5sYWJzL3JpcC1odW50ZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwaU9wdGlvbnMge1xuICByZWFkb25seSBvblN1Y2Nlc3M/OiAoZGF0YTogYW55KSA9PiBQcm9taXNlPEZsdXhBY3Rpb24+O1xuICByZWFkb25seSB2YXJpYWJsZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuZXhwb3J0IHR5cGUgUmVzdE1ldGhvZCA9ICdERUxFVEUnIHwgJ0dFVCcgfCAnUEFUQ0gnIHwgJ1BPU1QnIHwgJ1BVVCcgfCAoc3RyaW5nICYge30pO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc3RBcGlPcHRpb25zIGV4dGVuZHMgSHVudGVyT3B0aW9uc1R5cGUge1xuICByZWFkb25seSBhdXRoZW50aWNhdGU/OiBib29sZWFuO1xuICByZWFkb25seSBvblN1Y2Nlc3M/OiAoZGF0YTogYW55KSA9PiBhbnk7XG59XG5cbmV4cG9ydCB0eXBlIFJlYWt0b3JEYkNvbGxlY3Rpb24gPVxuICAnYXBwcycgfFxuICAnY29ubmVjdGlvbnMnIHxcbiAgJ2NvbnRlbnRzJyB8XG4gICdjb252ZXJzYXRpb25zJyB8XG4gICdjcm0nIHxcbiAgJ2V2ZW50cycgfFxuICAnZmlsZXMnIHxcbiAgJ2dyb3VwcycgfFxuICAnaW1hZ2VzJyB8XG4gICdsb2NhdGlvbnMnIHxcbiAgJ21lc3NhZ2VzJyB8XG4gICdub3RpZmljYXRpb25zJyB8XG4gICdwYXltZW50cycgfFxuICAncGVybWlzc2lvbnMnIHxcbiAgJ3Bvc3RzJyB8XG4gICdwZXJzb25hcycgfFxuICAncmVhY3Rpb25zJyB8XG4gICdydW0nIHxcbiAgJ3N1YnNjcmlwdGlvbnMnIHxcbiAgJ3RhZ3MnIHxcbiAgJ3RyYW5zbGF0aW9ucycgfFxuICAndXNlcnMnIHxcbiAgJ3ZpZGVvcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBpUXVlcnlWYXJpYWJsZVR5cGUge1xuICByZWFkb25seSB0eXBlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZhbHVlOiB1bmtub3duO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwaVF1ZXJ5VmFyaWFibGVzIHtcbiAgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogQXBpUXVlcnlWYXJpYWJsZVR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBpUmVzdWx0c1R5cGUge1xuICByZWFkb25seSBba2V5OiBzdHJpbmddOiB1bmtub3duO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJldHJ5VHlwZSB7XG4gIHJlYWRvbmx5IHF1ZXJ5PzogSHVudGVyUXVlcnlUeXBlIHwgSHVudGVyUXVlcnlUeXBlW107XG4gIHJlYWRvbmx5IHJlcXVlc3Q/OiB7XG4gICAgcmVhZG9ubHkgbWV0aG9kOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgcGFyYW1zPzogdW5rbm93bjtcbiAgICByZWFkb25seSB1cmw6IHN0cmluZztcbiAgfTtcbiAgcmVhZG9ubHkgcmVzcG9uc2VNZXRob2Q6IChyZXN1bHRzOiBBcGlSZXN1bHRzVHlwZSkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXNzaW9uVHlwZSB7XG4gIHJlYWRvbmx5IGV4cGlyZXM/OiBudW1iZXI7XG4gIHJlYWRvbmx5IGlzc3VlZD86IG51bWJlcjtcbiAgcmVhZG9ubHkgdG9rZW4/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVzZXJJZD86IHN0cmluZztcbiAgcmVhZG9ubHkgdXNlcm5hbWU/OiBzdHJpbmc7XG59XG5cbmNvbnN0IERFRkFVTFRfUkVGUkVTSF9XSU5ET1dfTUlOVVRFUyA9IDU7XG5jb25zdCBERUZBVUxUX1NFU1NJT05fTUFYX01JTlVURVMgPSAxNTtcblxuY29uc3QgZ2V0TWludXRlc1VudGlsID0gKGV4cGlyZXNBdDogbnVtYmVyKTogbnVtYmVyID0+XG4gIE1hdGgucm91bmQoKGV4cGlyZXNBdCAtIERhdGUubm93KCkpIC8gKDEwMDAgKiA2MCkpO1xuXG5jb25zdCBjbGVhckludmFsaWRTZXNzaW9uU3RhdGUgPSBhc3luYyAoZmx1eDogRmx1eEZyYW1ld29yayk6IFByb21pc2U8dm9pZD4gPT4ge1xuICBhd2FpdCBjbGVhclBlcnNpc3RlZFNlc3Npb24oZmx1eCk7XG4gIGF3YWl0IGZsdXguY2xlYXJBcHBEYXRhKCk7XG4gIGF3YWl0IGZsdXguZGlzcGF0Y2goe3Nlc3Npb246IHt9LCB0eXBlOiBVU0VSX0NPTlNUQU5UUy5TSUdOX09VVF9TVUNDRVNTfSk7XG59O1xuXG5jb25zdCByZXNvbHZlQXV0aFRva2VuID0gYXN5bmMgKGZsdXg6IEZsdXhGcmFtZXdvcmspOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICBjb25zdCBzdGF0ZVNlc3Npb246IFNlc3Npb25UeXBlID0gKGZsdXguZ2V0U3RhdGUoJ3VzZXIuc2Vzc2lvbicpIHx8IHt9KSBhcyBTZXNzaW9uVHlwZTtcbiAgY29uc3QgaHlkcmF0ZWRTZXNzaW9uOiBTZXNzaW9uVHlwZSA9IHN0YXRlU2Vzc2lvbi50b2tlbiA/IHN0YXRlU2Vzc2lvbiA6IGF3YWl0IGh5ZHJhdGVTZXNzaW9uRnJvbVN0b3JhZ2UoZmx1eCk7XG4gIGNvbnN0IHtcbiAgICBleHBpcmVzOiBhdXRoRXhwaXJlcyA9IDAsXG4gICAgaXNzdWVkOiBhdXRoSXNzdWVkID0gMCxcbiAgICB0b2tlbjogaHlkcmF0ZWRUb2tlblxuICB9OiBTZXNzaW9uVHlwZSA9IGh5ZHJhdGVkU2Vzc2lvbiB8fCB7fTtcbiAgbGV0IHRva2VuID0gaHlkcmF0ZWRUb2tlbiB8fCBzdGF0ZVNlc3Npb24udG9rZW47XG5cbiAgaWYoIXRva2VuKSB7XG4gICAgdGhyb3cgbmV3IEFwaUVycm9yKFt7IG1lc3NhZ2U6ICdpbnZhbGlkX3Nlc3Npb24nIH1dLCBuZXcgRXJyb3IoJ2ludmFsaWRfc2Vzc2lvbicpKTtcbiAgfVxuXG4gIGNvbnN0IHRva2VuRXhwaXJlc0F0ID0gcGFyc2VKd3RFeHBpcnlNcyh0b2tlbik7XG5cbiAgaWYodG9rZW5FeHBpcmVzQXQgPiAwICYmIERhdGUubm93KCkgPj0gdG9rZW5FeHBpcmVzQXQpIHtcbiAgICB0aHJvdyBuZXcgQXBpRXJyb3IoW3sgbWVzc2FnZTogJ2V4cGlyZWRfc2Vzc2lvbicgfV0sIG5ldyBFcnJvcignZXhwaXJlZF9zZXNzaW9uJykpO1xuICB9XG5cbiAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnRnJvbUZsdXgoZmx1eCk7XG4gIGNvbnN0IG1pbnV0ZXNVbnRpbEV4cGlyeSA9IGdldE1pbnV0ZXNVbnRpbChOdW1iZXIoYXV0aEV4cGlyZXMgfHwgMCkpO1xuICBjb25zdCBzZXNzaW9uTGlmZXRpbWVNaW51dGVzID0gTWF0aC5yb3VuZCgoYXV0aEV4cGlyZXMgLSBhdXRoSXNzdWVkKSAvICgxMDAwICogNjApKTtcbiAgY29uc3QgcmVmcmVzaFdpbmRvd01pbnV0ZXMgPSBnZXRSZWZyZXNoV2luZG93TWludXRlcyhcbiAgICBzZXNzaW9uTGlmZXRpbWVNaW51dGVzIHx8IERFRkFVTFRfU0VTU0lPTl9NQVhfTUlOVVRFUyxcbiAgICBjb25maWcuYXBwPy5zZXNzaW9uIHx8IHt9XG4gICk7XG4gIGNvbnN0IHJlZnJlc2hFeHBpcmVzTWludXRlcyA9IE1hdGgubWF4KFxuICAgIDEsXG4gICAgTnVtYmVyKGNvbmZpZy5hcHA/LnNlc3Npb24/Lm1heE1pbnV0ZXMgfHwgc2Vzc2lvbkxpZmV0aW1lTWludXRlcyB8fCBERUZBVUxUX1NFU1NJT05fTUFYX01JTlVURVMpXG4gICk7XG5cbiAgaWYobWludXRlc1VudGlsRXhwaXJ5ID4gMCAmJiBtaW51dGVzVW50aWxFeHBpcnkgPD0gcmVmcmVzaFdpbmRvd01pbnV0ZXMpIHtcbiAgICBjb25zdCB7XG4gICAgICBzZXNzaW9uOiB1cGRhdGVkU2Vzc2lvbiA9IHt9XG4gICAgfTogQXBpUmVzdWx0c1R5cGUgPSAoYXdhaXQgcmVmcmVzaFNlc3Npb24oZmx1eCwgdG9rZW4sIHJlZnJlc2hFeHBpcmVzTWludXRlcykpIHx8IHt9O1xuICAgIGNvbnN0IHt0b2tlbjogbmV3VG9rZW59OiBTZXNzaW9uVHlwZSA9ICh1cGRhdGVkU2Vzc2lvbiB8fCB7fSk7XG5cbiAgICBpZighbmV3VG9rZW4pIHtcbiAgICAgIHRocm93IG5ldyBBcGlFcnJvcihbeyBtZXNzYWdlOiAnaW52YWxpZF9zZXNzaW9uJyB9XSwgbmV3IEVycm9yKCdpbnZhbGlkX3Nlc3Npb24nKSk7XG4gICAgfVxuXG4gICAgdG9rZW4gPSBuZXdUb2tlbjtcbiAgfVxuXG4gIHJldHVybiB0b2tlbjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRHcmFwaHFsID0gYXN5bmMgKFxuICBmbHV4OiBGbHV4RnJhbWV3b3JrLFxuICB1cmw6IHN0cmluZyxcbiAgYXV0aGVudGljYXRlOiBib29sZWFuLFxuICBxdWVyeTogSHVudGVyUXVlcnlUeXBlIHwgSHVudGVyUXVlcnlUeXBlW10sXG4gIG9wdGlvbnM6IEFwaU9wdGlvbnNcbik6IFByb21pc2U8QXBpUmVzdWx0c1R5cGU+ID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB7b25TdWNjZXNzfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgcmV0cnk6IFJldHJ5VHlwZSA9IHtxdWVyeSwgcmVzcG9uc2VNZXRob2Q6IG9uU3VjY2VzcyB8fCAoKCkgPT4ge30pfTtcbiAgICBjb25zdCBuZXR3b3JrVHlwZTogc3RyaW5nID0gZmx1eC5nZXRTdGF0ZSgnYXBwLm5ldHdvcmtUeXBlJykgYXMgc3RyaW5nO1xuXG4gICAgaWYobmV0d29ya1R5cGUgPT09ICdub25lJykge1xuICAgICAgcmV0dXJuIGZsdXguZGlzcGF0Y2goe3JldHJ5LCB0eXBlOiBBUFBfQ09OU1RBTlRTLkFQSV9ORVRXT1JLX0VSUk9SfSk7XG4gICAgfVxuXG4gICAgbGV0IHRva2VuOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBpZihhdXRoZW50aWNhdGUpIHtcbiAgICAgIHRva2VuID0gYXdhaXQgcmVzb2x2ZUF1dGhUb2tlbihmbHV4KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZ3JhcGhxbFF1ZXJ5KHVybCwgcXVlcnksIHt0b2tlbjogdG9rZW4gfHwgJyd9KVxuICAgICAgLnRoZW4oYXN5bmMgKHJlc3VsdHMpID0+IHtcbiAgICAgICAgYXdhaXQgZmx1eC5kaXNwYXRjaCh7dHlwZTogQVBQX0NPTlNUQU5UUy5BUElfTkVUV09SS19TVUNDRVNTfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgICB9KVxuICAgICAgLnRoZW4oKGRhdGEpID0+IChvblN1Y2Nlc3MgPyBvblN1Y2Nlc3MoZGF0YSkgOiBkYXRhKSlcbiAgICAgIC5jYXRjaChhc3luYyAoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc3Qge2Vycm9ycyA9IFtdfSA9IGVycm9yO1xuXG4gICAgICAgIGlmKG9uU3VjY2VzcyAmJiBlcnJvcnMuaW5jbHVkZXMoJ25ldHdvcmtfZXJyb3InKSkge1xuICAgICAgICAgIGF3YWl0IGZsdXguZGlzcGF0Y2goe3JldHJ5LCB0eXBlOiBBUFBfQ09OU1RBTlRTLkFQSV9ORVRXT1JLX0VSUk9SfSk7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgICAgICAgfSBlbHNlIGlmKGVycm9ycy5pbmNsdWRlcygnaW52YWxpZF9zZXNzaW9uJykgfHwgZXJyb3JzLmluY2x1ZGVzKCdleHBpcmVkX3Nlc3Npb24nKSkge1xuICAgICAgICAgIGF3YWl0IGNsZWFySW52YWxpZFNlc3Npb25TdGF0ZShmbHV4KTtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gICAgICB9KTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGNvbnN0IGVycm9ycyA9IGVycm9yIGluc3RhbmNlb2YgQXBpRXJyb3IgPyBlcnJvci5lcnJvcnMgOiBbXTtcbiAgICBjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnJztcblxuICAgIGlmKGVycm9ycy5pbmNsdWRlcygnaW52YWxpZF9zZXNzaW9uJykgfHwgZXJyb3JzLmluY2x1ZGVzKCdleHBpcmVkX3Nlc3Npb24nKSB8fCBtZXNzYWdlID09PSAnaW52YWxpZF9zZXNzaW9uJyB8fCBtZXNzYWdlID09PSAnZXhwaXJlZF9zZXNzaW9uJykge1xuICAgICAgYXdhaXQgY2xlYXJJbnZhbGlkU2Vzc2lvblN0YXRlKGZsdXgpO1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIHRocm93IGVycm9yO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcmVzb2x2ZVJlc3RFbmRwb2ludCA9IChcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgZW5kcG9pbnQ6IHN0cmluZ1xuKTogc3RyaW5nID0+IHtcbiAgY29uc3QgdGFyZ2V0RW5kcG9pbnQgPSBTdHJpbmcoZW5kcG9pbnQgfHwgJycpLnRyaW0oKTtcblxuICBpZihpc0VtcHR5KHRhcmdldEVuZHBvaW50KSkge1xuICAgIHRocm93IG5ldyBBcGlFcnJvcihbeyBtZXNzYWdlOiAnaW52YWxpZF91cmwnIH1dLCBuZXcgRXJyb3IoJ3Jlc3RfZW5kcG9pbnRfcmVxdWlyZWQnKSk7XG4gIH1cblxuICBpZigvXmh0dHBzPzpcXC9cXC8vaS50ZXN0KHRhcmdldEVuZHBvaW50KSB8fCB0YXJnZXRFbmRwb2ludC5zdGFydHNXaXRoKCcvJykpIHtcbiAgICByZXR1cm4gdGFyZ2V0RW5kcG9pbnQ7XG4gIH1cblxuICBjb25zdCBjb25maWcgPSBnZXRDb25maWdGcm9tRmx1eChmbHV4KTtcbiAgY29uc3QgY29uZmlndXJlZEVuZHBvaW50ID0gY29uZmlnLmFwcD8uYXBpPy5lbmRwb2ludHM/Llt0YXJnZXRFbmRwb2ludF0gfHwgJyc7XG5cbiAgaWYoaXNFbXB0eShjb25maWd1cmVkRW5kcG9pbnQpKSB7XG4gICAgdGhyb3cgbmV3IEFwaUVycm9yKFt7IG1lc3NhZ2U6ICdpbnZhbGlkX3VybCcgfV0sIG5ldyBFcnJvcihgcmVzdF9lbmRwb2ludF9ub3RfY29uZmlndXJlZDoke3RhcmdldEVuZHBvaW50fWApKTtcbiAgfVxuXG4gIHJldHVybiBjb25maWd1cmVkRW5kcG9pbnQ7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzdFJlcXVlc3QgPSBhc3luYyA8VCA9IEFwaVJlc3VsdHNUeXBlPihcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgZW5kcG9pbnQ6IHN0cmluZyxcbiAgbWV0aG9kOiBSZXN0TWV0aG9kID0gJ0dFVCcsXG4gIHBhcmFtcz86IHVua25vd24sXG4gIG9wdGlvbnM6IFJlc3RBcGlPcHRpb25zID0ge31cbik6IFByb21pc2U8VD4gPT4ge1xuICBjb25zdCB7YXV0aGVudGljYXRlID0gZmFsc2UsIG9uU3VjY2VzcywgLi4uaHVudGVyT3B0aW9uc30gPSBvcHRpb25zO1xuICBjb25zdCB1cmwgPSByZXNvbHZlUmVzdEVuZHBvaW50KGZsdXgsIGVuZHBvaW50KTtcbiAgY29uc3QgcmVxdWVzdE1ldGhvZCA9IFN0cmluZyhtZXRob2QgfHwgJ0dFVCcpLnRvVXBwZXJDYXNlKCk7XG4gIGNvbnN0IHJldHJ5OiBSZXRyeVR5cGUgPSB7XG4gICAgcmVxdWVzdDoge21ldGhvZDogcmVxdWVzdE1ldGhvZCwgcGFyYW1zLCB1cmx9LFxuICAgIHJlc3BvbnNlTWV0aG9kOiBvblN1Y2Nlc3MgfHwgKCgpID0+IHt9KVxuICB9O1xuXG4gIHRyeSB7XG4gICAgY29uc3QgbmV0d29ya1R5cGU6IHN0cmluZyA9IGZsdXguZ2V0U3RhdGUoJ2FwcC5uZXR3b3JrVHlwZScpIGFzIHN0cmluZztcblxuICAgIGlmKG5ldHdvcmtUeXBlID09PSAnbm9uZScpIHtcbiAgICAgIHJldHVybiBmbHV4LmRpc3BhdGNoKHtyZXRyeSwgdHlwZTogQVBQX0NPTlNUQU5UUy5BUElfTkVUV09SS19FUlJPUn0pIGFzIFByb21pc2U8VD47XG4gICAgfVxuXG4gICAgY29uc3QgdG9rZW4gPSBhdXRoZW50aWNhdGUgPyBhd2FpdCByZXNvbHZlQXV0aFRva2VuKGZsdXgpIDogaHVudGVyT3B0aW9ucy50b2tlbjtcbiAgICBjb25zdCByZXF1ZXN0T3B0aW9uczogSHVudGVyT3B0aW9uc1R5cGUgPSB7XG4gICAgICAuLi5odW50ZXJPcHRpb25zLFxuICAgICAgLi4uKHRva2VuID8ge3Rva2VufSA6IHt9KVxuICAgIH07XG4gICAgbGV0IGRhdGE6IFQ7XG5cbiAgICBzd2l0Y2gocmVxdWVzdE1ldGhvZCkge1xuICAgICAgY2FzZSAnREVMRVRFJzpcbiAgICAgICAgZGF0YSA9IGF3YWl0IGRlbCh1cmwsIHBhcmFtcywgcmVxdWVzdE9wdGlvbnMpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnR0VUJzpcbiAgICAgICAgZGF0YSA9IGF3YWl0IGdldCh1cmwsIHBhcmFtcywgcmVxdWVzdE9wdGlvbnMpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnUE9TVCc6XG4gICAgICAgIGRhdGEgPSBhd2FpdCBwb3N0KHVybCwgcGFyYW1zLCByZXF1ZXN0T3B0aW9ucyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdQVVQnOlxuICAgICAgICBkYXRhID0gYXdhaXQgcHV0KHVybCwgcGFyYW1zLCByZXF1ZXN0T3B0aW9ucyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBkYXRhID0gYXdhaXQgYWpheCh1cmwsIHJlcXVlc3RNZXRob2QsIHBhcmFtcywgcmVxdWVzdE9wdGlvbnMpO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBhd2FpdCBmbHV4LmRpc3BhdGNoKHt0eXBlOiBBUFBfQ09OU1RBTlRTLkFQSV9ORVRXT1JLX1NVQ0NFU1N9KTtcblxuICAgIHJldHVybiBvblN1Y2Nlc3MgPyBvblN1Y2Nlc3MoZGF0YSkgOiBkYXRhO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgY29uc3QgZXJyb3JzID0gZXJyb3IgaW5zdGFuY2VvZiBBcGlFcnJvciA/IGVycm9yLmVycm9ycyA6IFtdO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICcnO1xuXG4gICAgaWYoZXJyb3JzLmluY2x1ZGVzKCdpbnZhbGlkX3Nlc3Npb24nKSB8fCBlcnJvcnMuaW5jbHVkZXMoJ2V4cGlyZWRfc2Vzc2lvbicpIHx8IG1lc3NhZ2UgPT09ICdpbnZhbGlkX3Nlc3Npb24nIHx8IG1lc3NhZ2UgPT09ICdleHBpcmVkX3Nlc3Npb24nKSB7XG4gICAgICBhd2FpdCBjbGVhckludmFsaWRTZXNzaW9uU3RhdGUoZmx1eCk7XG4gICAgICByZXR1cm4ge30gYXMgVDtcbiAgICB9XG5cbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVF1ZXJ5ID0gKFxuICBuYW1lOiBzdHJpbmcsXG4gIGRhdGFUeXBlOiBSZWFrdG9yRGJDb2xsZWN0aW9uLFxuICB2YXJpYWJsZXM6IEFwaVF1ZXJ5VmFyaWFibGVzID0ge30sXG4gIHJldHVyblByb3BlcnRpZXM6IHN0cmluZ1tdID0gW10sXG4gIHR5cGUgPSAncXVlcnknXG4pID0+IHtcbiAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7Li4udmFyaWFibGVzIHx8IHt9fTtcbiAgY29uc3QgdmFyaWFibGVLZXlzID0gT2JqZWN0LmtleXMocXVlcnlWYXJpYWJsZXMpO1xuICBjb25zdCBxdWVyeU5hbWUgPSBuYW1lLnJlcGxhY2UoLyAvZywgJycpO1xuICBsZXQgcXVlcnk6IHN0cmluZztcblxuICBpZih0eXBlID09PSAnbXV0YXRpb24nKSB7XG4gICAgY29uc3QgbXV0YXRpb25OYW1lID0gdXBwZXJGaXJzdChjYW1lbENhc2UoZGF0YVR5cGUpKSArIHVwcGVyRmlyc3QoY2FtZWxDYXNlKHF1ZXJ5TmFtZSkpO1xuICAgIHF1ZXJ5ID0gYCR7dHlwZX0gJHttdXRhdGlvbk5hbWV9JHtcbiAgICAgIHZhcmlhYmxlS2V5cy5sZW5ndGhcbiAgICAgICAgPyBgKCR7dmFyaWFibGVLZXlzLm1hcCgoa2V5KSA9PiBgJCR7a2V5fTogJHtxdWVyeVZhcmlhYmxlc1trZXldLnR5cGV9YCkuam9pbignLCAnKX0pYFxuICAgICAgICA6ICcnXG4gICAgfSB7XG4gICAgICAke2RhdGFUeXBlfSB7XG4gICAgICAgICR7Y2FtZWxDYXNlKHF1ZXJ5TmFtZSl9JHtcbiAgICAgICAgICB2YXJpYWJsZUtleXMubGVuZ3RoXG4gICAgICAgICAgICA/IGAoJHt2YXJpYWJsZUtleXMubWFwKChrZXkpID0+IGAke2tleX06ICQke2tleX1gKS5qb2luKCcsICcpfSlgXG4gICAgICAgICAgICA6ICcnXG4gICAgICAgIH1cbiAgICAgICAgJHtyZXR1cm5Qcm9wZXJ0aWVzPy5sZW5ndGggPyBgeyR7cmV0dXJuUHJvcGVydGllcy5qb2luKCcsICcpfX1gIDogJyd9XG4gICAgICB9XG4gICAgfWA7XG4gIH0gZWxzZSB7XG4gICAgcXVlcnkgPSBgJHt0eXBlfSAke3F1ZXJ5TmFtZX0ke1xuICAgICAgdmFyaWFibGVLZXlzLmxlbmd0aFxuICAgICAgICA/IGAoJHt2YXJpYWJsZUtleXMubWFwKChrZXkpID0+IGAkJHtrZXl9OiAke3F1ZXJ5VmFyaWFibGVzW2tleV0udHlwZX1gKS5qb2luKCcsICcpfSlgXG4gICAgICAgIDogJydcbiAgICB9IHtcbiAgICAgICR7ZGF0YVR5cGV9IHtcbiAgICAgICAgJHtjYW1lbENhc2UocXVlcnlOYW1lKX0ke1xuICAgICAgICAgIHZhcmlhYmxlS2V5cy5sZW5ndGhcbiAgICAgICAgICAgID8gYCgke3ZhcmlhYmxlS2V5cy5tYXAoKGtleSkgPT4gYCR7a2V5fTogJCR7a2V5fWApLmpvaW4oJywgJyl9KWBcbiAgICAgICAgICAgIDogJydcbiAgICAgICAgfVxuICAgICAgICAke3JldHVyblByb3BlcnRpZXM/Lmxlbmd0aCA/IGB7JHtyZXR1cm5Qcm9wZXJ0aWVzLmpvaW4oJywgJyl9fWAgOiAnJ31cbiAgICAgIH1cbiAgICB9YDtcbiAgfVxuXG4gIGNvbnN0IHVwZGF0ZWRWYXJpYWJsZXMgPSB2YXJpYWJsZUtleXMucmVkdWNlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PigocXVlcnlEYXRhLCBrZXkpID0+IHtcbiAgICBxdWVyeURhdGFba2V5XSA9IHF1ZXJ5VmFyaWFibGVzW2tleV0udmFsdWU7XG4gICAgcmV0dXJuIHF1ZXJ5RGF0YTtcbiAgfSwge30pO1xuXG4gIHJldHVybiB7cXVlcnksIHZhcmlhYmxlczogdXBkYXRlZFZhcmlhYmxlc307XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlTXV0YXRpb24gPSAoXG4gIG5hbWU6IHN0cmluZyxcbiAgZGF0YVR5cGU6IFJlYWt0b3JEYkNvbGxlY3Rpb24sXG4gIHZhcmlhYmxlczogQXBpUXVlcnlWYXJpYWJsZXMgPSB7fSxcbiAgcmV0dXJuUHJvcGVydGllczogc3RyaW5nW10gPSBbXVxuKSA9PiBjcmVhdGVRdWVyeShuYW1lLCBkYXRhVHlwZSwgdmFyaWFibGVzLCByZXR1cm5Qcm9wZXJ0aWVzLCAnbXV0YXRpb24nKTtcblxuZXhwb3J0IGNvbnN0IGFwcFF1ZXJ5ID0gPFQ+KFxuICBmbHV4OiBGbHV4RnJhbWV3b3JrLFxuICBuYW1lOiBzdHJpbmcsXG4gIGRhdGFUeXBlOiBSZWFrdG9yRGJDb2xsZWN0aW9uLFxuICBxdWVyeVZhcmlhYmxlczogQXBpUXVlcnlWYXJpYWJsZXMsXG4gIHJldHVyblByb3BlcnRpZXM6IHN0cmluZ1tdLFxuICBvcHRpb25zOiBBcGlPcHRpb25zID0ge31cbik6IFByb21pc2U8VD4gPT4ge1xuICBjb25zdCBxdWVyeSA9IGNyZWF0ZVF1ZXJ5KG5hbWUsIGRhdGFUeXBlLCBxdWVyeVZhcmlhYmxlcywgcmV0dXJuUHJvcGVydGllcyk7XG4gIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZ0Zyb21GbHV4KGZsdXgpO1xuICBjb25zdCBhcHBVcmw6IHN0cmluZyA9IGNvbmZpZy5hcHA/LmFwaT8udXJsIHx8ICcnO1xuICByZXR1cm4gZ2V0R3JhcGhxbChmbHV4LCBhcHBVcmwsIHRydWUsIHF1ZXJ5LCBvcHRpb25zKSBhcyBQcm9taXNlPFQ+O1xufTtcblxuZXhwb3J0IGNvbnN0IGFwcE11dGF0aW9uID0gPFQ+KFxuICBmbHV4OiBGbHV4RnJhbWV3b3JrLFxuICBuYW1lOiBzdHJpbmcsXG4gIGRhdGFUeXBlOiBSZWFrdG9yRGJDb2xsZWN0aW9uLFxuICBxdWVyeVZhcmlhYmxlczogQXBpUXVlcnlWYXJpYWJsZXMsXG4gIHJldHVyblByb3BlcnRpZXM6IHN0cmluZ1tdLFxuICBvcHRpb25zOiBBcGlPcHRpb25zID0ge31cbik6IFByb21pc2U8VD4gPT4ge1xuICBjb25zdCBxdWVyeSA9IGNyZWF0ZU11dGF0aW9uKG5hbWUsIGRhdGFUeXBlLCBxdWVyeVZhcmlhYmxlcywgcmV0dXJuUHJvcGVydGllcyk7XG4gIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZ0Zyb21GbHV4KGZsdXgpO1xuICBjb25zdCBhcHBVcmw6IHN0cmluZyA9IGNvbmZpZy5hcHA/LmFwaT8udXJsIHx8ICcnO1xuICByZXR1cm4gZ2V0R3JhcGhxbChmbHV4LCBhcHBVcmwsIHRydWUsIHF1ZXJ5LCBvcHRpb25zKSBhcyBQcm9taXNlPFQ+O1xufTtcblxuZXhwb3J0IGNvbnN0IHB1YmxpY1F1ZXJ5ID0gPFQ+KFxuICBmbHV4OiBGbHV4RnJhbWV3b3JrLFxuICBuYW1lOiBzdHJpbmcsXG4gIGRhdGFUeXBlOiBSZWFrdG9yRGJDb2xsZWN0aW9uLFxuICBxdWVyeVZhcmlhYmxlczogQXBpUXVlcnlWYXJpYWJsZXMsXG4gIHJldHVyblByb3BlcnRpZXM6IHN0cmluZ1tdLFxuICBvcHRpb25zOiBBcGlPcHRpb25zID0ge31cbik6IFByb21pc2U8VD4gPT4ge1xuICBjb25zdCBxdWVyeSA9IGNyZWF0ZVF1ZXJ5KG5hbWUsIGRhdGFUeXBlLCBxdWVyeVZhcmlhYmxlcywgcmV0dXJuUHJvcGVydGllcyk7XG4gIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZ0Zyb21GbHV4KGZsdXgpO1xuICBjb25zdCBwdWJsaWNVcmw6IHN0cmluZyA9IGNvbmZpZy5hcHA/LmFwaT8ucHVibGljIHx8ICcnO1xuICByZXR1cm4gZ2V0R3JhcGhxbChmbHV4LCBwdWJsaWNVcmwsIGZhbHNlLCBxdWVyeSwgb3B0aW9ucykgYXMgUHJvbWlzZTxUPjtcbn07XG5cbmV4cG9ydCBjb25zdCBwdWJsaWNNdXRhdGlvbiA9IDxUPihcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgbmFtZTogc3RyaW5nLFxuICBkYXRhVHlwZTogUmVha3RvckRiQ29sbGVjdGlvbixcbiAgcXVlcnlWYXJpYWJsZXM6IEFwaVF1ZXJ5VmFyaWFibGVzLFxuICByZXR1cm5Qcm9wZXJ0aWVzOiBzdHJpbmdbXSxcbiAgb3B0aW9uczogQXBpT3B0aW9ucyA9IHt9XG4pOiBQcm9taXNlPFQ+ID0+IHtcbiAgY29uc3QgcXVlcnkgPSBjcmVhdGVNdXRhdGlvbihuYW1lLCBkYXRhVHlwZSwgcXVlcnlWYXJpYWJsZXMsIHJldHVyblByb3BlcnRpZXMpO1xuICBjb25zdCBjb25maWcgPSBnZXRDb25maWdGcm9tRmx1eChmbHV4KTtcbiAgY29uc3QgcHVibGljVXJsOiBzdHJpbmcgPSBjb25maWcuYXBwPy5hcGk/LnB1YmxpYyB8fCAnJztcbiAgcmV0dXJuIGdldEdyYXBocWwoZmx1eCwgcHVibGljVXJsLCBmYWxzZSwgcXVlcnksIG9wdGlvbnMpIGFzIFByb21pc2U8VD47XG59O1xuXG5leHBvcnQgY29uc3QgcnVtTXV0YXRpb24gPSA8VD4oXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIG5hbWU6IHN0cmluZyxcbiAgZGF0YVR5cGU6IFJlYWt0b3JEYkNvbGxlY3Rpb24sXG4gIHF1ZXJ5VmFyaWFibGVzOiBBcGlRdWVyeVZhcmlhYmxlcyxcbiAgcmV0dXJuUHJvcGVydGllczogc3RyaW5nW10sXG4gIG9wdGlvbnM6IEFwaU9wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTxUPiA9PiB7XG4gIGNvbnN0IHF1ZXJ5ID0gY3JlYXRlTXV0YXRpb24obmFtZSwgZGF0YVR5cGUsIHF1ZXJ5VmFyaWFibGVzLCByZXR1cm5Qcm9wZXJ0aWVzKTtcbiAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnRnJvbUZsdXgoZmx1eCk7XG4gIGNvbnN0IHJ1bVVybDogc3RyaW5nID0gY29uZmlnLmFwcD8uYXBpPy5ydW0gfHwgY29uZmlnLmFwcD8uYXBpPy5wdWJsaWMgfHwgJyc7XG4gIHJldHVybiBnZXRHcmFwaHFsKGZsdXgsIHJ1bVVybCwgZmFsc2UsIHF1ZXJ5LCBvcHRpb25zKSBhcyBQcm9taXNlPFQ+O1xufTtcblxuZXhwb3J0IGNvbnN0IHJ1bVJlcXVlc3QgPSA8VD4oXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIGJhdGNoOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgb3B0aW9uczogUmVzdEFwaU9wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTxUPiA9PiB7XG4gIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZ0Zyb21GbHV4KGZsdXgpO1xuICBjb25zdCBydW1Vcmw6IHN0cmluZyA9IGNvbmZpZy5hcHA/LmFwaT8uZW5kcG9pbnRzPy5ydW0gfHwgY29uZmlnLmFwcD8uYXBpPy5ydW0gfHwgJyc7XG5cbiAgcmV0dXJuIHJlc3RSZXF1ZXN0PFQ+KGZsdXgsIHJ1bVVybCwgJ1BPU1QnLCBiYXRjaCwgey4uLm9wdGlvbnMsIGF1dGhlbnRpY2F0ZTogZmFsc2V9KTtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGxvYWRJbWFnZSA9IChcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgaW1hZ2U6IEZvcm1EYXRhIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIG9wdGlvbnM6IEh1bnRlck9wdGlvbnNUeXBlID0ge31cbik6IFByb21pc2U8QXBpUmVzdWx0c1R5cGU+ID0+IHtcbiAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnRnJvbUZsdXgoZmx1eCk7XG4gIGNvbnN0IHVwbG9hZEltYWdlVXJsOiBzdHJpbmcgPSBjb25maWcuYXBwPy5hcGk/LnVwbG9hZEltYWdlIHx8ICcnO1xuICBjb25zdCB0b2tlbiA9IGZsdXguZ2V0U3RhdGUoJ3VzZXIuc2Vzc2lvbi50b2tlbicpO1xuXG4gIGlmKGlzRW1wdHkodXBsb2FkSW1hZ2VVcmwpKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBBcGlFcnJvcihbeyBtZXNzYWdlOiAnaW52YWxpZF91cmwnIH1dLCBuZXcgRXJyb3IoJ3VwbG9hZF9lbmRwb2ludF9ub3RfY29uZmlndXJlZCcpKSk7XG4gIH1cblxuICBpZihpc0VtcHR5KHRva2VuKSkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgQXBpRXJyb3IoW3sgbWVzc2FnZTogJ2ludmFsaWRfc2Vzc2lvbicgfV0sIG5ldyBFcnJvcignbWlzc2luZ19hdXRoX3Rva2VuJykpKTtcbiAgfVxuXG4gIGNvbnN0IGhlYWRlcnMgPSBuZXcgSGVhZGVycygpO1xuICBoZWFkZXJzLnNldCgnQXV0aG9yaXphdGlvbicsIGBCZWFyZXIgJHt0b2tlbn1gKTtcblxuICBpZih0eXBlb2YgRm9ybURhdGEgIT09ICd1bmRlZmluZWQnICYmIGltYWdlIGluc3RhbmNlb2YgRm9ybURhdGEpIHtcbiAgICBoZWFkZXJzLnNldCgnQWNjZXB0JywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcblxuICAgIHJldHVybiBmZXRjaCh1cGxvYWRJbWFnZVVybCwge1xuICAgICAgYm9keTogaW1hZ2UsXG4gICAgICBoZWFkZXJzLFxuICAgICAgbWV0aG9kOiAnUE9TVCdcbiAgICB9KS50aGVuKGFzeW5jIChyZXNwb25zZSkgPT4ge1xuICAgICAgY29uc3QgcmVzcG9uc2VUeXBlID0gcmVzcG9uc2UuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpIHx8ICcnO1xuICAgICAgY29uc3QgZGF0YSA9IHJlc3BvbnNlVHlwZS5pbmNsdWRlcygnYXBwbGljYXRpb24vanNvbicpXG4gICAgICAgID8gYXdhaXQgcmVzcG9uc2UuanNvbigpXG4gICAgICAgIDogYXdhaXQgcmVzcG9uc2UudGV4dCgpO1xuXG4gICAgICBpZighcmVzcG9uc2Uub2spIHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyAmJiBkYXRhICYmICdlcnJvcicgaW4gZGF0YVxuICAgICAgICAgID8gU3RyaW5nKChkYXRhIGFzIHtlcnJvcj86IHN0cmluZ30pLmVycm9yIHx8IHJlc3BvbnNlLnN0YXR1c1RleHQpXG4gICAgICAgICAgOiBTdHJpbmcoZGF0YSB8fCByZXNwb25zZS5zdGF0dXNUZXh0KTtcbiAgICAgICAgdGhyb3cgbmV3IEFwaUVycm9yKFt7IG1lc3NhZ2U6ICd1cGxvYWRfZXJyb3InIH1dLCBuZXcgRXJyb3IobWVzc2FnZSkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZGF0YSBhcyBBcGlSZXN1bHRzVHlwZTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBwb3N0KHVwbG9hZEltYWdlVXJsLCBpbWFnZSwge2hlYWRlcnMsIC4uLm9wdGlvbnN9KTtcbn07XG5cbmV4cG9ydCBjb25zdCByZWZyZXNoU2Vzc2lvbiA9IGFzeW5jIChcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgdG9rZW4/OiBzdHJpbmcsXG4gIGV4cGlyZXM/OiBudW1iZXJcbik6IFByb21pc2U8Rmx1eEFjdGlvbiB8IG51bGw+ID0+IHtcbiAgY29uc3QgcmVmcmVzaFRva2VuID0gaXNFbXB0eSh0b2tlbikgPyBmbHV4LmdldFN0YXRlKCd1c2VyLnNlc3Npb24udG9rZW4nKSA6IHRva2VuO1xuXG4gIGlmKGlzRW1wdHkocmVmcmVzaFRva2VuKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgdG9rZW5FeHBpcmVzQXQgPSBwYXJzZUp3dEV4cGlyeU1zKFN0cmluZyhyZWZyZXNoVG9rZW4pKTtcblxuICBpZih0b2tlbkV4cGlyZXNBdCA+IDAgJiYgRGF0ZS5ub3coKSA+PSB0b2tlbkV4cGlyZXNBdCkge1xuICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKCdleHBpcmVkX3Nlc3Npb24nKTtcbiAgICBhd2FpdCBjbGVhckludmFsaWRTZXNzaW9uU3RhdGUoZmx1eCk7XG4gICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IFVTRVJfQ09OU1RBTlRTLkdFVF9TRVNTSU9OX0VSUk9SfSk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZ0Zyb21GbHV4KGZsdXgpO1xuICAgIGNvbnN0IHJlcXVlc3RlZEV4cGlyZXMgPSBNYXRoLm1heChcbiAgICAgIDEsXG4gICAgICBOdW1iZXIoZXhwaXJlcyB8fCBjb25maWcuYXBwPy5zZXNzaW9uPy5tYXhNaW51dGVzIHx8IERFRkFVTFRfU0VTU0lPTl9NQVhfTUlOVVRFUylcbiAgICApO1xuICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgZXhwaXJlczoge1xuICAgICAgICB0eXBlOiAnSW50JyxcbiAgICAgICAgdmFsdWU6IHJlcXVlc3RlZEV4cGlyZXNcbiAgICAgIH0sXG4gICAgICB0b2tlbjoge1xuICAgICAgICB0eXBlOiAnU3RyaW5nIScsXG4gICAgICAgIHZhbHVlOiByZWZyZXNoVG9rZW5cbiAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IG9uU3VjY2VzcyA9IGFzeW5jIChkYXRhOiBBcGlSZXN1bHRzVHlwZSA9IHt9KTogUHJvbWlzZTxGbHV4QWN0aW9uPiA9PiB7XG4gICAgICBjb25zdCByYXdTZXNzaW9uRGF0YSA9IChkYXRhIGFzIHt1c2Vycz86IHtyZWZyZXNoU2Vzc2lvbj86IFJlY29yZDxzdHJpbmcsIHVua25vd24+fX0pPy51c2Vycz8ucmVmcmVzaFNlc3Npb247XG4gICAgICBjb25zdCBzZXNzaW9uRGF0YSA9IHJhd1Nlc3Npb25EYXRhICYmIHR5cGVvZiByYXdTZXNzaW9uRGF0YSA9PT0gJ29iamVjdCdcbiAgICAgICAgPyByYXdTZXNzaW9uRGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgICA6IHt9O1xuICAgICAgY29uc3QgY3VycmVudFNlc3Npb24gPSAoZmx1eC5nZXRTdGF0ZSgndXNlci5zZXNzaW9uJywge30pIHx8IHt9KSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgIGNvbnN0IG1lcmdlZFNlc3Npb24gPSBhd2FpdCBzdG9yZVNlc3Npb24oZmx1eCwgey4uLmN1cnJlbnRTZXNzaW9uLCAuLi5zZXNzaW9uRGF0YX0pO1xuICAgICAgcmV0dXJuIGZsdXguZGlzcGF0Y2goe3Nlc3Npb246IG1lcmdlZFNlc3Npb24sIHR5cGU6IFVTRVJfQ09OU1RBTlRTLlVQREFURV9TRVNTSU9OX1NVQ0NFU1N9KTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGF3YWl0IHB1YmxpY011dGF0aW9uKGZsdXgsICdyZWZyZXNoU2Vzc2lvbicsICd1c2VycycsIHF1ZXJ5VmFyaWFibGVzLCBbJ2V4cGlyZXMnLCAnaXNzdWVkJywgJ3Rva2VuJ10sIHtcbiAgICAgIG9uU3VjY2Vzc1xuICAgIH0pO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnJztcblxuICAgIGlmKGVycm9yTWVzc2FnZSA9PT0gJ2ludmFsaWRfc2Vzc2lvbicgfHwgZXJyb3JNZXNzYWdlID09PSAnZXhwaXJlZF9zZXNzaW9uJykge1xuICAgICAgYXdhaXQgY2xlYXJJbnZhbGlkU2Vzc2lvblN0YXRlKGZsdXgpO1xuICAgIH1cblxuICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBVU0VSX0NPTlNUQU5UUy5HRVRfU0VTU0lPTl9FUlJPUn0pO1xuICAgIHJldHVybiBudWxsO1xuICB9XG59O1xuIl0sIm5hbWVzIjpbIkFwaUVycm9yIiwiYWpheCIsImRlbCIsImdldCIsImdyYXBocWxRdWVyeSIsInBvc3QiLCJwdXQiLCJjYW1lbENhc2UiLCJpc0VtcHR5IiwidXBwZXJGaXJzdCIsIkFQUF9DT05TVEFOVFMiLCJVU0VSX0NPTlNUQU5UUyIsImdldENvbmZpZ0Zyb21GbHV4IiwiY2xlYXJQZXJzaXN0ZWRTZXNzaW9uIiwiZ2V0UmVmcmVzaFdpbmRvd01pbnV0ZXMiLCJoeWRyYXRlU2Vzc2lvbkZyb21TdG9yYWdlIiwicGFyc2VKd3RFeHBpcnlNcyIsInN0b3JlU2Vzc2lvbiIsIkRFRkFVTFRfUkVGUkVTSF9XSU5ET1dfTUlOVVRFUyIsIkRFRkFVTFRfU0VTU0lPTl9NQVhfTUlOVVRFUyIsImdldE1pbnV0ZXNVbnRpbCIsImV4cGlyZXNBdCIsIk1hdGgiLCJyb3VuZCIsIkRhdGUiLCJub3ciLCJjbGVhckludmFsaWRTZXNzaW9uU3RhdGUiLCJmbHV4IiwiY2xlYXJBcHBEYXRhIiwiZGlzcGF0Y2giLCJzZXNzaW9uIiwidHlwZSIsIlNJR05fT1VUX1NVQ0NFU1MiLCJyZXNvbHZlQXV0aFRva2VuIiwic3RhdGVTZXNzaW9uIiwiZ2V0U3RhdGUiLCJoeWRyYXRlZFNlc3Npb24iLCJ0b2tlbiIsImV4cGlyZXMiLCJhdXRoRXhwaXJlcyIsImlzc3VlZCIsImF1dGhJc3N1ZWQiLCJoeWRyYXRlZFRva2VuIiwibWVzc2FnZSIsIkVycm9yIiwidG9rZW5FeHBpcmVzQXQiLCJjb25maWciLCJtaW51dGVzVW50aWxFeHBpcnkiLCJOdW1iZXIiLCJzZXNzaW9uTGlmZXRpbWVNaW51dGVzIiwicmVmcmVzaFdpbmRvd01pbnV0ZXMiLCJhcHAiLCJyZWZyZXNoRXhwaXJlc01pbnV0ZXMiLCJtYXgiLCJtYXhNaW51dGVzIiwidXBkYXRlZFNlc3Npb24iLCJyZWZyZXNoU2Vzc2lvbiIsIm5ld1Rva2VuIiwiZ2V0R3JhcGhxbCIsInVybCIsImF1dGhlbnRpY2F0ZSIsInF1ZXJ5Iiwib3B0aW9ucyIsIm9uU3VjY2VzcyIsInJldHJ5IiwicmVzcG9uc2VNZXRob2QiLCJuZXR3b3JrVHlwZSIsIkFQSV9ORVRXT1JLX0VSUk9SIiwidGhlbiIsInJlc3VsdHMiLCJBUElfTkVUV09SS19TVUNDRVNTIiwiZGF0YSIsImNhdGNoIiwiZXJyb3IiLCJlcnJvcnMiLCJpbmNsdWRlcyIsIlByb21pc2UiLCJyZWplY3QiLCJyZXNvbHZlIiwicmVzb2x2ZVJlc3RFbmRwb2ludCIsImVuZHBvaW50IiwidGFyZ2V0RW5kcG9pbnQiLCJTdHJpbmciLCJ0cmltIiwidGVzdCIsInN0YXJ0c1dpdGgiLCJjb25maWd1cmVkRW5kcG9pbnQiLCJhcGkiLCJlbmRwb2ludHMiLCJyZXN0UmVxdWVzdCIsIm1ldGhvZCIsInBhcmFtcyIsImh1bnRlck9wdGlvbnMiLCJyZXF1ZXN0TWV0aG9kIiwidG9VcHBlckNhc2UiLCJyZXF1ZXN0IiwicmVxdWVzdE9wdGlvbnMiLCJjcmVhdGVRdWVyeSIsIm5hbWUiLCJkYXRhVHlwZSIsInZhcmlhYmxlcyIsInJldHVyblByb3BlcnRpZXMiLCJxdWVyeVZhcmlhYmxlcyIsInZhcmlhYmxlS2V5cyIsIk9iamVjdCIsImtleXMiLCJxdWVyeU5hbWUiLCJyZXBsYWNlIiwibXV0YXRpb25OYW1lIiwibGVuZ3RoIiwibWFwIiwia2V5Iiwiam9pbiIsInVwZGF0ZWRWYXJpYWJsZXMiLCJyZWR1Y2UiLCJxdWVyeURhdGEiLCJ2YWx1ZSIsImNyZWF0ZU11dGF0aW9uIiwiYXBwUXVlcnkiLCJhcHBVcmwiLCJhcHBNdXRhdGlvbiIsInB1YmxpY1F1ZXJ5IiwicHVibGljVXJsIiwicHVibGljIiwicHVibGljTXV0YXRpb24iLCJydW1NdXRhdGlvbiIsInJ1bVVybCIsInJ1bSIsInJ1bVJlcXVlc3QiLCJiYXRjaCIsInVwbG9hZEltYWdlIiwiaW1hZ2UiLCJ1cGxvYWRJbWFnZVVybCIsImhlYWRlcnMiLCJIZWFkZXJzIiwic2V0IiwiRm9ybURhdGEiLCJmZXRjaCIsImJvZHkiLCJyZXNwb25zZSIsInJlc3BvbnNlVHlwZSIsImpzb24iLCJ0ZXh0Iiwib2siLCJzdGF0dXNUZXh0IiwicmVmcmVzaFRva2VuIiwiR0VUX1NFU1NJT05fRVJST1IiLCJyZXF1ZXN0ZWRFeHBpcmVzIiwicmF3U2Vzc2lvbkRhdGEiLCJ1c2VycyIsInNlc3Npb25EYXRhIiwiY3VycmVudFNlc3Npb24iLCJtZXJnZWRTZXNzaW9uIiwiVVBEQVRFX1NFU1NJT05fU1VDQ0VTUyIsImVycm9yTWVzc2FnZSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUUEsUUFBUSxFQUFFQyxJQUFJLEVBQUVDLEdBQUcsRUFBRUMsR0FBRyxFQUFFQyxZQUFZLEVBQUVDLElBQUksRUFBRUMsR0FBRyxRQUFPLG9CQUFvQjtBQUNwRixTQUFRQyxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsVUFBVSxRQUFPLGVBQWU7QUFFNUQsU0FBUUMsYUFBYSxRQUFPLHdCQUF3QjtBQUNwRCxTQUFRQyxjQUFjLFFBQU8seUJBQXlCO0FBQ3RELFNBQVFDLGlCQUFpQixRQUFPLG1CQUFtQjtBQUNuRCxTQUFRQyxxQkFBcUIsRUFBRUMsdUJBQXVCLEVBQUVDLHlCQUF5QixFQUFFQyxnQkFBZ0IsRUFBRUMsWUFBWSxRQUFPLGVBQWU7QUF5RXZJLE1BQU1DLGlDQUFpQztBQUN2QyxNQUFNQyw4QkFB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
@@ -2,11 +2,11 @@
2
2
  * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
3
3
  * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
4
  */
5
- export { appMutation, appQuery, getGraphql, publicMutation, publicQuery, rumMutation, refreshSession, resolveRestEndpoint, restRequest, uploadImage, type ApiResultsType, type ReaktorDbCollection, type RestApiOptions, type RestMethod, type SessionType } from './api.js';
5
+ export { appMutation, appQuery, getGraphql, publicMutation, publicQuery, rumMutation, rumRequest, refreshSession, resolveRestEndpoint, restRequest, uploadImage, type ApiResultsType, type ReaktorDbCollection, type RestApiOptions, type RestMethod, type SessionType } from './api.js';
6
6
  export { createAction, createActions, createAllActions, type ActionOptions, type ActionReturnType, type ActionType, type ActionTypes } from './actionFactory.js';
7
7
  export { createBaseActions, type BaseActionOptions } from './baseActionFactory.js';
8
8
  export { createValidatorFactory, createValidatorManager, type BaseAdapterOptions } from './validatorFactory.js';
9
- export { MetropolisContext, MetropolisProvider } from './MetropolisProvider.js';
9
+ export { MetropolisContext } from './MetropolisContext.js';
10
10
  export { PermissionGuard, PermissionLevel, usePermissions, type Permission, type PermissionGuardProps, type UsePermissionsReturn } from './permissionUtils.js';
11
11
  export { useContentActions, useAwsRum, useCrmActions, useEventActions, useGroupActions, useImageActions, useLocationActions, useMessageActions, useMetropolis, useMetropolisConfig, useMetropolisFlux, usePermissionActions, usePersonaActions, usePostActions, useReactionActions, useRestActions, useTagActions, useTranslationActions, useUserActions, useVideoActions, useWebsocketActions } from './useMetropolis.js';
12
12
  export { useConversationTyping, type ConversationTypingOptions, type UseConversationTypingOptions } from './useConversationTyping.js';
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
3
3
  * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
4
  */ // Export API utilities
5
- export { appMutation, appQuery, getGraphql, publicMutation, publicQuery, rumMutation, refreshSession, resolveRestEndpoint, restRequest, uploadImage } from './api.js';
5
+ export { appMutation, appQuery, getGraphql, publicMutation, publicQuery, rumMutation, rumRequest, refreshSession, resolveRestEndpoint, restRequest, uploadImage } from './api.js';
6
6
  // Export action factory
7
7
  export { createAction, createActions, createAllActions } from './actionFactory.js';
8
8
  // Export base action factory
@@ -10,7 +10,7 @@ export { createBaseActions } from './baseActionFactory.js';
10
10
  // Export validator factory
11
11
  export { createValidatorFactory, createValidatorManager } from './validatorFactory.js';
12
12
  // Export React hooks
13
- export { MetropolisContext, MetropolisProvider } from './MetropolisProvider.js';
13
+ export { MetropolisContext } from './MetropolisContext.js';
14
14
  export { PermissionGuard, PermissionLevel, usePermissions } from './permissionUtils.js';
15
15
  export { useContentActions, useAwsRum, useCrmActions, useEventActions, useGroupActions, useImageActions, useLocationActions, useMessageActions, useMetropolis, useMetropolisConfig, useMetropolisFlux, usePermissionActions, usePersonaActions, usePostActions, useReactionActions, useRestActions, useTagActions, useTranslationActions, useUserActions, useVideoActions, useWebsocketActions } from './useMetropolis.js';
16
16
  export { useConversationTyping } from './useConversationTyping.js';
@@ -23,4 +23,4 @@ export * from './i18n.js';
23
23
  export * from './location.js';
24
24
  export * from './session.js';
25
25
 
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvdXRpbHMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cblxuLy8gRXhwb3J0IEFQSSB1dGlsaXRpZXNcbmV4cG9ydCB7XG4gIGFwcE11dGF0aW9uLFxuICBhcHBRdWVyeSxcbiAgZ2V0R3JhcGhxbCxcbiAgcHVibGljTXV0YXRpb24sXG4gIHB1YmxpY1F1ZXJ5LFxuICBydW1NdXRhdGlvbixcbiAgcmVmcmVzaFNlc3Npb24sXG4gIHJlc29sdmVSZXN0RW5kcG9pbnQsXG4gIHJlc3RSZXF1ZXN0LFxuICB1cGxvYWRJbWFnZSxcbiAgdHlwZSBBcGlSZXN1bHRzVHlwZSxcbiAgdHlwZSBSZWFrdG9yRGJDb2xsZWN0aW9uLFxuICB0eXBlIFJlc3RBcGlPcHRpb25zLFxuICB0eXBlIFJlc3RNZXRob2QsXG4gIHR5cGUgU2Vzc2lvblR5cGVcbn0gZnJvbSAnLi9hcGkuanMnO1xuXG4vLyBFeHBvcnQgYWN0aW9uIGZhY3RvcnlcbmV4cG9ydCB7XG4gIGNyZWF0ZUFjdGlvbixcbiAgY3JlYXRlQWN0aW9ucyxcbiAgY3JlYXRlQWxsQWN0aW9ucyxcbiAgdHlwZSBBY3Rpb25PcHRpb25zLFxuICB0eXBlIEFjdGlvblJldHVyblR5cGUsXG4gIHR5cGUgQWN0aW9uVHlwZSxcbiAgdHlwZSBBY3Rpb25UeXBlc1xufSBmcm9tICcuL2FjdGlvbkZhY3RvcnkuanMnO1xuXG4vLyBFeHBvcnQgYmFzZSBhY3Rpb24gZmFjdG9yeVxuZXhwb3J0IHtcbiAgY3JlYXRlQmFzZUFjdGlvbnMsXG4gIHR5cGUgQmFzZUFjdGlvbk9wdGlvbnNcbn0gZnJvbSAnLi9iYXNlQWN0aW9uRmFjdG9yeS5qcyc7XG5cbi8vIEV4cG9ydCB2YWxpZGF0b3IgZmFjdG9yeVxuZXhwb3J0IHtcbiAgY3JlYXRlVmFsaWRhdG9yRmFjdG9yeSxcbiAgY3JlYXRlVmFsaWRhdG9yTWFuYWdlcixcbiAgdHlwZSBCYXNlQWRhcHRlck9wdGlvbnNcbn0gZnJvbSAnLi92YWxpZGF0b3JGYWN0b3J5LmpzJztcblxuLy8gRXhwb3J0IFJlYWN0IGhvb2tzXG5leHBvcnQge01ldHJvcG9saXNDb250ZXh0LCBNZXRyb3BvbGlzUHJvdmlkZXJ9IGZyb20gJy4vTWV0cm9wb2xpc1Byb3ZpZGVyLmpzJztcbmV4cG9ydCB7XG4gIFBlcm1pc3Npb25HdWFyZCxcbiAgUGVybWlzc2lvbkxldmVsLFxuICB1c2VQZXJtaXNzaW9ucyxcbiAgdHlwZSBQZXJtaXNzaW9uLFxuICB0eXBlIFBlcm1pc3Npb25HdWFyZFByb3BzLFxuICB0eXBlIFVzZVBlcm1pc3Npb25zUmV0dXJuXG59IGZyb20gJy4vcGVybWlzc2lvblV0aWxzLmpzJztcbmV4cG9ydCB7XG4gIHVzZUNvbnRlbnRBY3Rpb25zLFxuICB1c2VBd3NSdW0sXG4gIHVzZUNybUFjdGlvbnMsXG4gIHVzZUV2ZW50QWN0aW9ucyxcbiAgdXNlR3JvdXBBY3Rpb25zLFxuICB1c2VJbWFnZUFjdGlvbnMsXG4gIHVzZUxvY2F0aW9uQWN0aW9ucyxcbiAgdXNlTWVzc2FnZUFjdGlvbnMsXG4gIHVzZU1ldHJvcG9saXMsXG4gIHVzZU1ldHJvcG9saXNDb25maWcsXG4gIHVzZU1ldHJvcG9saXNGbHV4LFxuICB1c2VQZXJtaXNzaW9uQWN0aW9ucyxcbiAgdXNlUGVyc29uYUFjdGlvbnMsXG4gIHVzZVBvc3RBY3Rpb25zLFxuICB1c2VSZWFjdGlvbkFjdGlvbnMsXG4gIHVzZVJlc3RBY3Rpb25zLFxuICB1c2VUYWdBY3Rpb25zLFxuICB1c2VUcmFuc2xhdGlvbkFjdGlvbnMsXG4gIHVzZVVzZXJBY3Rpb25zLFxuICB1c2VWaWRlb0FjdGlvbnMsXG4gIHVzZVdlYnNvY2tldEFjdGlvbnNcbn0gZnJvbSAnLi91c2VNZXRyb3BvbGlzLmpzJztcbmV4cG9ydCB7dXNlQ29udmVyc2F0aW9uVHlwaW5nLCB0eXBlIENvbnZlcnNhdGlvblR5cGluZ09wdGlvbnMsIHR5cGUgVXNlQ29udmVyc2F0aW9uVHlwaW5nT3B0aW9uc30gZnJvbSAnLi91c2VDb252ZXJzYXRpb25UeXBpbmcuanMnO1xuZXhwb3J0IHt1c2VUcmFuc2xhdGlvbnN9IGZyb20gJy4vdXNlVHJhbnNsYXRpb25zLmpzJztcblxuLy8gRXhwb3J0IHV0aWxpdHkgZnVuY3Rpb25zXG5leHBvcnQgKiBmcm9tICcuL2FwcC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2RhdGVVdGlscy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGUuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9pMThuLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vbG9jYXRpb24uanMnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXNzaW9uLmpzJztcbiJdLCJuYW1lcyI6WyJhcHBNdXRhdGlvbiIsImFwcFF1ZXJ5IiwiZ2V0R3JhcGhxbCIsInB1YmxpY011dGF0aW9uIiwicHVibGljUXVlcnkiLCJydW1NdXRhdGlvbiIsInJlZnJlc2hTZXNzaW9uIiwicmVzb2x2ZVJlc3RFbmRwb2ludCIsInJlc3RSZXF1ZXN0IiwidXBsb2FkSW1hZ2UiLCJjcmVhdGVBY3Rpb24iLCJjcmVhdGVBY3Rpb25zIiwiY3JlYXRlQWxsQWN0aW9ucyIsImNyZWF0ZUJhc2VBY3Rpb25zIiwiY3JlYXRlVmFsaWRhdG9yRmFjdG9yeSIsImNyZWF0ZVZhbGlkYXRvck1hbmFnZXIiLCJNZXRyb3BvbGlzQ29udGV4dCIsIk1ldHJvcG9saXNQcm92aWRlciIsIlBlcm1pc3Npb25HdWFyZCIsIlBlcm1pc3Npb25MZXZlbCIsInVzZVBlcm1pc3Npb25zIiwidXNlQ29udGVudEFjdGlvbnMiLCJ1c2VBd3NSdW0iLCJ1c2VDcm1BY3Rpb25zIiwidXNlRXZlbnRBY3Rpb25zIiwidXNlR3JvdXBBY3Rpb25zIiwidXNlSW1hZ2VBY3Rpb25zIiwidXNlTG9jYXRpb25BY3Rpb25zIiwidXNlTWVzc2FnZUFjdGlvbnMiLCJ1c2VNZXRyb3BvbGlzIiwidXNlTWV0cm9wb2xpc0NvbmZpZyIsInVzZU1ldHJvcG9saXNGbHV4IiwidXNlUGVybWlzc2lvbkFjdGlvbnMiLCJ1c2VQZXJzb25hQWN0aW9ucyIsInVzZVBvc3RBY3Rpb25zIiwidXNlUmVhY3Rpb25BY3Rpb25zIiwidXNlUmVzdEFjdGlvbnMiLCJ1c2VUYWdBY3Rpb25zIiwidXNlVHJhbnNsYXRpb25BY3Rpb25zIiwidXNlVXNlckFjdGlvbnMiLCJ1c2VWaWRlb0FjdGlvbnMiLCJ1c2VXZWJzb2NrZXRBY3Rpb25zIiwidXNlQ29udmVyc2F0aW9uVHlwaW5nIiwidXNlVHJhbnNsYXRpb25zIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FFRCx1QkFBdUI7QUFDdkIsU0FDRUEsV0FBVyxFQUNYQyxRQUFRLEVBQ1JDLFVBQVUsRUFDVkMsY0FBYyxFQUNkQyxXQUFXLEVBQ1hDLFdBQVcsRUFDWEMsY0FBYyxFQUNkQyxtQkFBbUIsRUFDbkJDLFdBQVcsRUFDWEMsV0FBVyxRQU1OLFdBQVc7QUFFbEIsd0JBQXdCO0FBQ3hCLFNBQ0VDLFlBQVksRUFDWkMsYUFBYSxFQUNiQyxnQkFBZ0IsUUFLWCxxQkFBcUI7QUFFNUIsNkJBQTZCO0FBQzdCLFNBQ0VDLGlCQUFpQixRQUVaLHlCQUF5QjtBQUVoQywyQkFBMkI7QUFDM0IsU0FDRUMsc0JBQXNCLEVBQ3RCQyxzQkFBc0IsUUFFakIsd0JBQXdCO0FBRS9CLHFCQUFxQjtBQUNyQixTQUFRQyxpQkFBaUIsRUFBRUMsa0JBQWtCLFFBQU8sMEJBQTBCO0FBQzlFLFNBQ0VDLGVBQWUsRUFDZkMsZUFBZSxFQUNmQyxjQUFjLFFBSVQsdUJBQXVCO0FBQzlCLFNBQ0VDLGlCQUFpQixFQUNqQkMsU0FBUyxFQUNUQyxhQUFhLEVBQ2JDLGVBQWUsRUFDZkMsZUFBZSxFQUNmQyxlQUFlLEVBQ2ZDLGtCQUFrQixFQUNsQkMsaUJBQWlCLEVBQ2pCQyxhQUFhLEVBQ2JDLG1CQUFtQixFQUNuQkMsaUJBQWlCLEVBQ2pCQyxvQkFBb0IsRUFDcEJDLGlCQUFpQixFQUNqQkMsY0FBYyxFQUNkQyxrQkFBa0IsRUFDbEJDLGNBQWMsRUFDZEMsYUFBYSxFQUNiQyxxQkFBcUIsRUFDckJDLGNBQWMsRUFDZEMsZUFBZSxFQUNmQyxtQkFBbUIsUUFDZCxxQkFBcUI7QUFDNUIsU0FBUUMscUJBQXFCLFFBQTBFLDZCQUE2QjtBQUNwSSxTQUFRQyxlQUFlLFFBQU8sdUJBQXVCO0FBRXJELDJCQUEyQjtBQUMzQixjQUFjLFdBQVc7QUFDekIsY0FBYyxpQkFBaUI7QUFDL0IsY0FBYyxZQUFZO0FBQzFCLGNBQWMsWUFBWTtBQUMxQixjQUFjLGdCQUFnQjtBQUM5QixjQUFjLGVBQWUifQ==
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvdXRpbHMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cblxuLy8gRXhwb3J0IEFQSSB1dGlsaXRpZXNcbmV4cG9ydCB7XG4gIGFwcE11dGF0aW9uLFxuICBhcHBRdWVyeSxcbiAgZ2V0R3JhcGhxbCxcbiAgcHVibGljTXV0YXRpb24sXG4gIHB1YmxpY1F1ZXJ5LFxuICBydW1NdXRhdGlvbixcbiAgcnVtUmVxdWVzdCxcbiAgcmVmcmVzaFNlc3Npb24sXG4gIHJlc29sdmVSZXN0RW5kcG9pbnQsXG4gIHJlc3RSZXF1ZXN0LFxuICB1cGxvYWRJbWFnZSxcbiAgdHlwZSBBcGlSZXN1bHRzVHlwZSxcbiAgdHlwZSBSZWFrdG9yRGJDb2xsZWN0aW9uLFxuICB0eXBlIFJlc3RBcGlPcHRpb25zLFxuICB0eXBlIFJlc3RNZXRob2QsXG4gIHR5cGUgU2Vzc2lvblR5cGVcbn0gZnJvbSAnLi9hcGkuanMnO1xuXG4vLyBFeHBvcnQgYWN0aW9uIGZhY3RvcnlcbmV4cG9ydCB7XG4gIGNyZWF0ZUFjdGlvbixcbiAgY3JlYXRlQWN0aW9ucyxcbiAgY3JlYXRlQWxsQWN0aW9ucyxcbiAgdHlwZSBBY3Rpb25PcHRpb25zLFxuICB0eXBlIEFjdGlvblJldHVyblR5cGUsXG4gIHR5cGUgQWN0aW9uVHlwZSxcbiAgdHlwZSBBY3Rpb25UeXBlc1xufSBmcm9tICcuL2FjdGlvbkZhY3RvcnkuanMnO1xuXG4vLyBFeHBvcnQgYmFzZSBhY3Rpb24gZmFjdG9yeVxuZXhwb3J0IHtcbiAgY3JlYXRlQmFzZUFjdGlvbnMsXG4gIHR5cGUgQmFzZUFjdGlvbk9wdGlvbnNcbn0gZnJvbSAnLi9iYXNlQWN0aW9uRmFjdG9yeS5qcyc7XG5cbi8vIEV4cG9ydCB2YWxpZGF0b3IgZmFjdG9yeVxuZXhwb3J0IHtcbiAgY3JlYXRlVmFsaWRhdG9yRmFjdG9yeSxcbiAgY3JlYXRlVmFsaWRhdG9yTWFuYWdlcixcbiAgdHlwZSBCYXNlQWRhcHRlck9wdGlvbnNcbn0gZnJvbSAnLi92YWxpZGF0b3JGYWN0b3J5LmpzJztcblxuLy8gRXhwb3J0IFJlYWN0IGhvb2tzXG5leHBvcnQge01ldHJvcG9saXNDb250ZXh0fSBmcm9tICcuL01ldHJvcG9saXNDb250ZXh0LmpzJztcbmV4cG9ydCB7XG4gIFBlcm1pc3Npb25HdWFyZCxcbiAgUGVybWlzc2lvbkxldmVsLFxuICB1c2VQZXJtaXNzaW9ucyxcbiAgdHlwZSBQZXJtaXNzaW9uLFxuICB0eXBlIFBlcm1pc3Npb25HdWFyZFByb3BzLFxuICB0eXBlIFVzZVBlcm1pc3Npb25zUmV0dXJuXG59IGZyb20gJy4vcGVybWlzc2lvblV0aWxzLmpzJztcbmV4cG9ydCB7XG4gIHVzZUNvbnRlbnRBY3Rpb25zLFxuICB1c2VBd3NSdW0sXG4gIHVzZUNybUFjdGlvbnMsXG4gIHVzZUV2ZW50QWN0aW9ucyxcbiAgdXNlR3JvdXBBY3Rpb25zLFxuICB1c2VJbWFnZUFjdGlvbnMsXG4gIHVzZUxvY2F0aW9uQWN0aW9ucyxcbiAgdXNlTWVzc2FnZUFjdGlvbnMsXG4gIHVzZU1ldHJvcG9saXMsXG4gIHVzZU1ldHJvcG9saXNDb25maWcsXG4gIHVzZU1ldHJvcG9saXNGbHV4LFxuICB1c2VQZXJtaXNzaW9uQWN0aW9ucyxcbiAgdXNlUGVyc29uYUFjdGlvbnMsXG4gIHVzZVBvc3RBY3Rpb25zLFxuICB1c2VSZWFjdGlvbkFjdGlvbnMsXG4gIHVzZVJlc3RBY3Rpb25zLFxuICB1c2VUYWdBY3Rpb25zLFxuICB1c2VUcmFuc2xhdGlvbkFjdGlvbnMsXG4gIHVzZVVzZXJBY3Rpb25zLFxuICB1c2VWaWRlb0FjdGlvbnMsXG4gIHVzZVdlYnNvY2tldEFjdGlvbnNcbn0gZnJvbSAnLi91c2VNZXRyb3BvbGlzLmpzJztcbmV4cG9ydCB7dXNlQ29udmVyc2F0aW9uVHlwaW5nLCB0eXBlIENvbnZlcnNhdGlvblR5cGluZ09wdGlvbnMsIHR5cGUgVXNlQ29udmVyc2F0aW9uVHlwaW5nT3B0aW9uc30gZnJvbSAnLi91c2VDb252ZXJzYXRpb25UeXBpbmcuanMnO1xuZXhwb3J0IHt1c2VUcmFuc2xhdGlvbnN9IGZyb20gJy4vdXNlVHJhbnNsYXRpb25zLmpzJztcblxuLy8gRXhwb3J0IHV0aWxpdHkgZnVuY3Rpb25zXG5leHBvcnQgKiBmcm9tICcuL2FwcC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2RhdGVVdGlscy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGUuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9pMThuLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vbG9jYXRpb24uanMnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXNzaW9uLmpzJztcbiJdLCJuYW1lcyI6WyJhcHBNdXRhdGlvbiIsImFwcFF1ZXJ5IiwiZ2V0R3JhcGhxbCIsInB1YmxpY011dGF0aW9uIiwicHVibGljUXVlcnkiLCJydW1NdXRhdGlvbiIsInJ1bVJlcXVlc3QiLCJyZWZyZXNoU2Vzc2lvbiIsInJlc29sdmVSZXN0RW5kcG9pbnQiLCJyZXN0UmVxdWVzdCIsInVwbG9hZEltYWdlIiwiY3JlYXRlQWN0aW9uIiwiY3JlYXRlQWN0aW9ucyIsImNyZWF0ZUFsbEFjdGlvbnMiLCJjcmVhdGVCYXNlQWN0aW9ucyIsImNyZWF0ZVZhbGlkYXRvckZhY3RvcnkiLCJjcmVhdGVWYWxpZGF0b3JNYW5hZ2VyIiwiTWV0cm9wb2xpc0NvbnRleHQiLCJQZXJtaXNzaW9uR3VhcmQiLCJQZXJtaXNzaW9uTGV2ZWwiLCJ1c2VQZXJtaXNzaW9ucyIsInVzZUNvbnRlbnRBY3Rpb25zIiwidXNlQXdzUnVtIiwidXNlQ3JtQWN0aW9ucyIsInVzZUV2ZW50QWN0aW9ucyIsInVzZUdyb3VwQWN0aW9ucyIsInVzZUltYWdlQWN0aW9ucyIsInVzZUxvY2F0aW9uQWN0aW9ucyIsInVzZU1lc3NhZ2VBY3Rpb25zIiwidXNlTWV0cm9wb2xpcyIsInVzZU1ldHJvcG9saXNDb25maWciLCJ1c2VNZXRyb3BvbGlzRmx1eCIsInVzZVBlcm1pc3Npb25BY3Rpb25zIiwidXNlUGVyc29uYUFjdGlvbnMiLCJ1c2VQb3N0QWN0aW9ucyIsInVzZVJlYWN0aW9uQWN0aW9ucyIsInVzZVJlc3RBY3Rpb25zIiwidXNlVGFnQWN0aW9ucyIsInVzZVRyYW5zbGF0aW9uQWN0aW9ucyIsInVzZVVzZXJBY3Rpb25zIiwidXNlVmlkZW9BY3Rpb25zIiwidXNlV2Vic29ja2V0QWN0aW9ucyIsInVzZUNvbnZlcnNhdGlvblR5cGluZyIsInVzZVRyYW5zbGF0aW9ucyJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBRUQsdUJBQXVCO0FBQ3ZCLFNBQ0VBLFdBQVcsRUFDWEMsUUFBUSxFQUNSQyxVQUFVLEVBQ1ZDLGNBQWMsRUFDZEMsV0FBVyxFQUNYQyxXQUFXLEVBQ1hDLFVBQVUsRUFDVkMsY0FBYyxFQUNkQyxtQkFBbUIsRUFDbkJDLFdBQVcsRUFDWEMsV0FBVyxRQU1OLFdBQVc7QUFFbEIsd0JBQXdCO0FBQ3hCLFNBQ0VDLFlBQVksRUFDWkMsYUFBYSxFQUNiQyxnQkFBZ0IsUUFLWCxxQkFBcUI7QUFFNUIsNkJBQTZCO0FBQzdCLFNBQ0VDLGlCQUFpQixRQUVaLHlCQUF5QjtBQUVoQywyQkFBMkI7QUFDM0IsU0FDRUMsc0JBQXNCLEVBQ3RCQyxzQkFBc0IsUUFFakIsd0JBQXdCO0FBRS9CLHFCQUFxQjtBQUNyQixTQUFRQyxpQkFBaUIsUUFBTyx5QkFBeUI7QUFDekQsU0FDRUMsZUFBZSxFQUNmQyxlQUFlLEVBQ2ZDLGNBQWMsUUFJVCx1QkFBdUI7QUFDOUIsU0FDRUMsaUJBQWlCLEVBQ2pCQyxTQUFTLEVBQ1RDLGFBQWEsRUFDYkMsZUFBZSxFQUNmQyxlQUFlLEVBQ2ZDLGVBQWUsRUFDZkMsa0JBQWtCLEVBQ2xCQyxpQkFBaUIsRUFDakJDLGFBQWEsRUFDYkMsbUJBQW1CLEVBQ25CQyxpQkFBaUIsRUFDakJDLG9CQUFvQixFQUNwQkMsaUJBQWlCLEVBQ2pCQyxjQUFjLEVBQ2RDLGtCQUFrQixFQUNsQkMsY0FBYyxFQUNkQyxhQUFhLEVBQ2JDLHFCQUFxQixFQUNyQkMsY0FBYyxFQUNkQyxlQUFlLEVBQ2ZDLG1CQUFtQixRQUNkLHFCQUFxQjtBQUM1QixTQUFRQyxxQkFBcUIsUUFBMEUsNkJBQTZCO0FBQ3BJLFNBQVFDLGVBQWUsUUFBTyx1QkFBdUI7QUFFckQsMkJBQTJCO0FBQzNCLGNBQWMsV0FBVztBQUN6QixjQUFjLGlCQUFpQjtBQUMvQixjQUFjLFlBQVk7QUFDMUIsY0FBYyxZQUFZO0FBQzFCLGNBQWMsZ0JBQWdCO0FBQzlCLGNBQWMsZUFBZSJ9
@@ -4,20 +4,16 @@ import type { ActionType } from '../utils/actionFactory.js';
4
4
  /**
5
5
  * Main hook to access Metropolis actions.
6
6
  *
7
- * @param actionTypes - Optional array of action types to create. If not provided, creates all actions.
7
+ * @param actionTypes - Action types to create.
8
8
  * @returns Object containing the requested actions
9
9
  *
10
10
  * @example
11
11
  * ```tsx
12
- * // Get all actions (default behavior)
13
- * const {userActions, postActions} = useMetropolis();
14
- *
15
- * // Get only specific actions (more performant)
16
12
  * const {userActions} = useMetropolis(['user']);
17
13
  * const {userActions, postActions} = useMetropolis(['user', 'post']);
18
14
  * ```
19
15
  */
20
- export declare const useMetropolis: <T extends ActionType[] = ActionType[]>(actionTypes?: T) => Record<string, any>;
16
+ export declare const useMetropolis: <T extends ActionType[]>(actionTypes: T) => Record<string, any>;
21
17
  /**
22
18
  * Hook to access the Metropolis configuration from context.
23
19
  *
@@ -1,13 +1,12 @@
1
- import { useFlux } from '@nlabs/arkhamjs-utils-react';
2
1
  import { useContext, useMemo } from 'react';
3
- import { createActions, createAllActions } from '../utils/actionFactory.js';
4
- import { MetropolisContext } from './MetropolisProvider.js';
2
+ import { createActions } from '../utils/actionFactory.js';
3
+ import { MetropolisContext } from './MetropolisContext.js';
5
4
  /**
6
5
  * Builds action options from adapters in a type-safe way.
7
6
  */ const buildActionOptions = (adapters, config)=>{
8
7
  const awsRumOptions = config?.app?.rum || config?.app?.name ? {
9
8
  ...config?.app?.rum,
10
- appId: config?.app?.rum?.appId || config?.app?.name
9
+ analyticsId: config?.app?.rum?.analyticsId || config?.app?.name
11
10
  } : undefined;
12
11
  if (!adapters) {
13
12
  return awsRumOptions ? {
@@ -151,45 +150,31 @@ import { MetropolisContext } from './MetropolisProvider.js';
151
150
  /**
152
151
  * Main hook to access Metropolis actions.
153
152
  *
154
- * @param actionTypes - Optional array of action types to create. If not provided, creates all actions.
153
+ * @param actionTypes - Action types to create.
155
154
  * @returns Object containing the requested actions
156
155
  *
157
156
  * @example
158
157
  * ```tsx
159
- * // Get all actions (default behavior)
160
- * const {userActions, postActions} = useMetropolis();
161
- *
162
- * // Get only specific actions (more performant)
163
158
  * const {userActions} = useMetropolis(['user']);
164
159
  * const {userActions, postActions} = useMetropolis(['user', 'post']);
165
160
  * ```
166
161
  */ export const useMetropolis = (actionTypes)=>{
167
162
  const context = useContext(MetropolisContext);
168
- // Use flux from context if available, otherwise fall back to useFlux() for backward compatibility
169
- const contextFlux = context?.flux;
170
- const hookFlux = useFlux();
171
- const flux = contextFlux || hookFlux;
172
- const { adapters, config } = context;
163
+ if (!context) {
164
+ throw new Error('useMetropolis must be used within a Metropolis component.');
165
+ }
166
+ const { adapters, config, flux } = context;
173
167
  const actionOptions = useMemo(()=>buildActionOptions(adapters, config), [
174
168
  adapters,
175
169
  config
176
170
  ]);
177
171
  return useMemo(()=>{
178
- let actions;
179
- if (actionTypes && actionTypes.length > 0) {
180
- // Create only requested actions
181
- actions = createActions(actionTypes, flux, actionOptions);
182
- } else {
183
- // Create all actions (default behavior for backward compatibility)
184
- const allActions = createAllActions(flux, actionOptions);
185
- actions = allActions;
186
- }
187
- // Map to return keys (contentActions, userActions, etc.)
172
+ const actions = createActions(actionTypes, flux, actionOptions);
188
173
  return mapActionsToReturnKeys(actions);
189
174
  }, [
190
175
  flux,
191
176
  actionOptions,
192
- actionTypes?.join(',')
177
+ actionTypes.join(',')
193
178
  ]);
194
179
  };
195
180
  /**
@@ -205,7 +190,7 @@ import { MetropolisContext } from './MetropolisProvider.js';
205
190
  * ```
206
191
  */ export const useMetropolisConfig = ()=>{
207
192
  const context = useContext(MetropolisContext);
208
- if (!context?.config) {
193
+ if (!context) {
209
194
  throw new Error('useMetropolisConfig must be used within a Metropolis component. ' + 'Make sure your component is wrapped with <Metropolis> provider.');
210
195
  }
211
196
  return context.config;
@@ -223,9 +208,10 @@ import { MetropolisContext } from './MetropolisProvider.js';
223
208
  * ```
224
209
  */ export const useMetropolisFlux = ()=>{
225
210
  const context = useContext(MetropolisContext);
226
- const hookFlux = useFlux();
227
- // Use flux from context if available, otherwise fall back to useFlux() for backward compatibility
228
- return context?.flux || hookFlux;
211
+ if (!context) {
212
+ throw new Error('useMetropolisFlux must be used within a Metropolis component.');
213
+ }
214
+ return context.flux;
229
215
  };
230
216
  /**
231
217
  * Specialized hooks for individual action types.
@@ -345,4 +331,4 @@ export const useWebsocketActions = ()=>{
345
331
  return websocketActions;
346
332
  };
347
333
 
348
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvdXRpbHMvdXNlTWV0cm9wb2xpcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3VzZUZsdXh9IGZyb20gJ0BubGFicy9hcmtoYW1qcy11dGlscy1yZWFjdCc7XG5pbXBvcnQge3VzZUNvbnRleHQsIHVzZU1lbW99IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHR5cGUge0ZsdXhGcmFtZXdvcmt9IGZyb20gJ0BubGFicy9hcmtoYW1qcyc7XG5pbXBvcnQgdHlwZSB7TWV0cm9wb2xpc0Vudmlyb25tZW50Q29uZmlndXJhdGlvbn0gZnJvbSAnLi4vY29uZmlnL2luZGV4LmpzJztcbmltcG9ydCB7Y3JlYXRlQWN0aW9ucywgY3JlYXRlQWxsQWN0aW9uc30gZnJvbSAnLi4vdXRpbHMvYWN0aW9uRmFjdG9yeS5qcyc7XG5pbXBvcnQgdHlwZSB7TWV0cm9wb2xpc0FkYXB0ZXJzfSBmcm9tICcuL01ldHJvcG9saXNQcm92aWRlci5qcyc7XG5pbXBvcnQge01ldHJvcG9saXNDb250ZXh0fSBmcm9tICcuL01ldHJvcG9saXNQcm92aWRlci5qcyc7XG5pbXBvcnQgdHlwZSB7QWN0aW9uT3B0aW9ucywgQWN0aW9uVHlwZX0gZnJvbSAnLi4vdXRpbHMvYWN0aW9uRmFjdG9yeS5qcyc7XG5cbi8qKlxuICogQnVpbGRzIGFjdGlvbiBvcHRpb25zIGZyb20gYWRhcHRlcnMgaW4gYSB0eXBlLXNhZmUgd2F5LlxuICovXG5jb25zdCBidWlsZEFjdGlvbk9wdGlvbnMgPSAoXG4gIGFkYXB0ZXJzPzogTWV0cm9wb2xpc0FkYXB0ZXJzLFxuICBjb25maWc/OiBNZXRyb3BvbGlzRW52aXJvbm1lbnRDb25maWd1cmF0aW9uXG4pOiBQYXJ0aWFsPFJlY29yZDxBY3Rpb25UeXBlLCBBY3Rpb25PcHRpb25zPj4gPT4ge1xuICBjb25zdCBhd3NSdW1PcHRpb25zID0gY29uZmlnPy5hcHA/LnJ1bSB8fCBjb25maWc/LmFwcD8ubmFtZVxuICAgID8gey4uLmNvbmZpZz8uYXBwPy5ydW0sIGFwcElkOiBjb25maWc/LmFwcD8ucnVtPy5hcHBJZCB8fCBjb25maWc/LmFwcD8ubmFtZX1cbiAgICA6IHVuZGVmaW5lZDtcblxuICBpZiAoIWFkYXB0ZXJzKSB7XG4gICAgcmV0dXJuIGF3c1J1bU9wdGlvbnMgPyB7YXdzUnVtOiBhd3NSdW1PcHRpb25zfSA6IHt9O1xuICB9XG5cbiAgY29uc3Qgb3B0aW9uczogUGFydGlhbDxSZWNvcmQ8QWN0aW9uVHlwZSwgQWN0aW9uT3B0aW9ucz4+ID0ge307XG5cbiAgaWYoYXdzUnVtT3B0aW9ucykge1xuICAgIG9wdGlvbnMuYXdzUnVtID0gYXdzUnVtT3B0aW9ucztcbiAgfVxuXG4gIGlmIChhZGFwdGVycy5Db250ZW50KSB7XG4gICAgb3B0aW9ucy5jb250ZW50ID0ge2NvbnRlbnRBZGFwdGVyOiBhZGFwdGVycy5Db250ZW50fTtcbiAgfVxuICBpZiAoYWRhcHRlcnMuRXZlbnQpIHtcbiAgICBvcHRpb25zLmV2ZW50ID0ge2V2ZW50QWRhcHRlcjogYWRhcHRlcnMuRXZlbnR9O1xuICB9XG4gIGlmIChhZGFwdGVycy5JbWFnZSkge1xuICAgIG9wdGlvbnMuaW1hZ2UgPSB7aW1hZ2VBZGFwdGVyOiBhZGFwdGVycy5JbWFnZX07XG4gIH1cbiAgaWYgKGFkYXB0ZXJzLkxvY2F0aW9uKSB7XG4gICAgb3B0aW9ucy5sb2NhdGlvbiA9IHtsb2NhdGlvbkFkYXB0ZXI6IGFkYXB0ZXJzLkxvY2F0aW9ufTtcbiAgfVxuICBpZiAoYWRhcHRlcnMuTWVzc2FnZSkge1xuICAgIG9wdGlvbnMubWVzc2FnZSA9IHttZXNzYWdlQWRhcHRlcjogYWRhcHRlcnMuTWVzc2FnZX07XG4gIH1cbiAgaWYgKGFkYXB0ZXJzLlBlcm1pc3Npb24pIHtcbiAgICBvcHRpb25zLnBlcm1pc3Npb24gPSB7cGVybWlzc2lvbkFkYXB0ZXI6IGFkYXB0ZXJzLlBlcm1pc3Npb259O1xuICB9XG4gIGlmIChhZGFwdGVycy5Qb3N0KSB7XG4gICAgb3B0aW9ucy5wb3N0ID0ge3Bvc3RBZGFwdGVyOiBhZGFwdGVycy5Qb3N0fTtcbiAgfVxuICBpZiAoYWRhcHRlcnMuUGVyc29uYSkge1xuICAgIG9wdGlvbnMucGVyc29uYSA9IHtwZXJzb25hQWRhcHRlcjogYWRhcHRlcnMuUGVyc29uYX07XG4gIH1cbiAgaWYgKGFkYXB0ZXJzLlJlYWN0aW9uKSB7XG4gICAgb3B0aW9ucy5yZWFjdGlvbiA9IHtyZWFjdGlvbkFkYXB0ZXI6IGFkYXB0ZXJzLlJlYWN0aW9ufTtcbiAgfVxuICBpZiAoYWRhcHRlcnMuVGFnKSB7XG4gICAgb3B0aW9ucy50YWcgPSB7dGFnQWRhcHRlcjogYWRhcHRlcnMuVGFnfTtcbiAgfVxuICBpZiAoYWRhcHRlcnMuVHJhbnNsYXRpb24pIHtcbiAgICBvcHRpb25zLnRyYW5zbGF0aW9uID0ge3RyYW5zbGF0aW9uQWRhcHRlcjogYWRhcHRlcnMuVHJhbnNsYXRpb259O1xuICB9XG4gIGlmIChhZGFwdGVycy5Vc2VyKSB7XG4gICAgb3B0aW9ucy51c2VyID0ge3VzZXJBZGFwdGVyOiBhZGFwdGVycy5Vc2VyfTtcbiAgfVxuICBpZiAoYWRhcHRlcnMuVmlkZW8pIHtcbiAgICBvcHRpb25zLnZpZGVvID0ge3ZpZGVvQWRhcHRlcjogYWRhcHRlcnMuVmlkZW99O1xuICB9XG5cbiAgcmV0dXJuIG9wdGlvbnM7XG59O1xuXG4vKipcbiAqIE1hcHMgYWN0aW9uIHR5cGUga2V5cyB0byB0aGVpciBhY3Rpb24gbmFtZXMgZm9yIHJldHVybiBvYmplY3QuXG4gKi9cbmNvbnN0IG1hcEFjdGlvbnNUb1JldHVybktleXMgPSAoYWN0aW9uczogUmVjb3JkPHN0cmluZywgYW55Pik6IFJlY29yZDxzdHJpbmcsIGFueT4gPT4ge1xuICBjb25zdCBtYXBwZWQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblxuICBpZihhY3Rpb25zLmF3c1J1bSkge1xuICAgIG1hcHBlZC5hd3NSdW0gPSBhY3Rpb25zLmF3c1J1bTtcbiAgfVxuXG4gIGlmIChhY3Rpb25zLmNvbnRlbnQpIHtcbiAgICBtYXBwZWQuY29udGVudEFjdGlvbnMgPSBhY3Rpb25zLmNvbnRlbnQ7XG4gIH1cbiAgaWYgKGFjdGlvbnMuY3JtKSB7XG4gICAgbWFwcGVkLmNybUFjdGlvbnMgPSBhY3Rpb25zLmNybTtcbiAgfVxuICBpZiAoYWN0aW9ucy5ldmVudCkge1xuICAgIG1hcHBlZC5ldmVudEFjdGlvbnMgPSBhY3Rpb25zLmV2ZW50O1xuICB9XG4gIGlmIChhY3Rpb25zLmdyb3VwKSB7XG4gICAgbWFwcGVkLmdyb3VwQWN0aW9ucyA9IGFjdGlvbnMuZ3JvdXA7XG4gIH1cbiAgaWYgKGFjdGlvbnMuaW1hZ2UpIHtcbiAgICBtYXBwZWQuaW1hZ2VBY3Rpb25zID0gYWN0aW9ucy5pbWFnZTtcbiAgfVxuICBpZiAoYWN0aW9ucy5sb2NhdGlvbikge1xuICAgIG1hcHBlZC5sb2NhdGlvbkFjdGlvbnMgPSBhY3Rpb25zLmxvY2F0aW9uO1xuICB9XG4gIGlmIChhY3Rpb25zLm1lc3NhZ2UpIHtcbiAgICBtYXBwZWQubWVzc2FnZUFjdGlvbnMgPSBhY3Rpb25zLm1lc3NhZ2U7XG4gIH1cbiAgaWYgKGFjdGlvbnMucGVybWlzc2lvbikge1xuICAgIG1hcHBlZC5wZXJtaXNzaW9uQWN0aW9ucyA9IGFjdGlvbnMucGVybWlzc2lvbjtcbiAgfVxuICBpZiAoYWN0aW9ucy5wb3N0KSB7XG4gICAgbWFwcGVkLnBvc3RBY3Rpb25zID0gYWN0aW9ucy5wb3N0O1xuICB9XG4gIGlmIChhY3Rpb25zLnBlcnNvbmEpIHtcbiAgICBtYXBwZWQucGVyc29uYUFjdGlvbnMgPSBhY3Rpb25zLnBlcnNvbmE7XG4gIH1cbiAgaWYgKGFjdGlvbnMucmVhY3Rpb24pIHtcbiAgICBtYXBwZWQucmVhY3Rpb25BY3Rpb25zID0gYWN0aW9ucy5yZWFjdGlvbjtcbiAgfVxuICBpZiAoYWN0aW9ucy5yZXN0KSB7XG4gICAgbWFwcGVkLnJlc3RBY3Rpb25zID0gYWN0aW9ucy5yZXN0O1xuICB9XG4gIGlmIChhY3Rpb25zLnN1YnNjcmlwdGlvbikge1xuICAgIG1hcHBlZC5zdWJzY3JpcHRpb25BY3Rpb25zID0gYWN0aW9ucy5zdWJzY3JpcHRpb247XG4gIH1cbiAgaWYgKGFjdGlvbnMudGFnKSB7XG4gICAgbWFwcGVkLnRhZ0FjdGlvbnMgPSBhY3Rpb25zLnRhZztcbiAgfVxuICBpZiAoYWN0aW9ucy50cmFuc2xhdGlvbikge1xuICAgIG1hcHBlZC50cmFuc2xhdGlvbkFjdGlvbnMgPSBhY3Rpb25zLnRyYW5zbGF0aW9uO1xuICB9XG4gIGlmIChhY3Rpb25zLnVzZXIpIHtcbiAgICBtYXBwZWQudXNlckFjdGlvbnMgPSBhY3Rpb25zLnVzZXI7XG4gIH1cbiAgaWYgKGFjdGlvbnMudmlkZW8pIHtcbiAgICBtYXBwZWQudmlkZW9BY3Rpb25zID0gYWN0aW9ucy52aWRlbztcbiAgfVxuICBpZiAoYWN0aW9ucy53ZWJzb2NrZXQpIHtcbiAgICBtYXBwZWQud2Vic29ja2V0QWN0aW9ucyA9IGFjdGlvbnMud2Vic29ja2V0O1xuICB9XG5cbiAgcmV0dXJuIG1hcHBlZDtcbn07XG5cbi8qKlxuICogTWFpbiBob29rIHRvIGFjY2VzcyBNZXRyb3BvbGlzIGFjdGlvbnMuXG4gKlxuICogQHBhcmFtIGFjdGlvblR5cGVzIC0gT3B0aW9uYWwgYXJyYXkgb2YgYWN0aW9uIHR5cGVzIHRvIGNyZWF0ZS4gSWYgbm90IHByb3ZpZGVkLCBjcmVhdGVzIGFsbCBhY3Rpb25zLlxuICogQHJldHVybnMgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIHJlcXVlc3RlZCBhY3Rpb25zXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogLy8gR2V0IGFsbCBhY3Rpb25zIChkZWZhdWx0IGJlaGF2aW9yKVxuICogY29uc3Qge3VzZXJBY3Rpb25zLCBwb3N0QWN0aW9uc30gPSB1c2VNZXRyb3BvbGlzKCk7XG4gKlxuICogLy8gR2V0IG9ubHkgc3BlY2lmaWMgYWN0aW9ucyAobW9yZSBwZXJmb3JtYW50KVxuICogY29uc3Qge3VzZXJBY3Rpb25zfSA9IHVzZU1ldHJvcG9saXMoWyd1c2VyJ10pO1xuICogY29uc3Qge3VzZXJBY3Rpb25zLCBwb3N0QWN0aW9uc30gPSB1c2VNZXRyb3BvbGlzKFsndXNlcicsICdwb3N0J10pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VNZXRyb3BvbGlzID0gPFQgZXh0ZW5kcyBBY3Rpb25UeXBlW10gPSBBY3Rpb25UeXBlW10+KFxuICBhY3Rpb25UeXBlcz86IFRcbikgPT4ge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChNZXRyb3BvbGlzQ29udGV4dCk7XG4gIC8vIFVzZSBmbHV4IGZyb20gY29udGV4dCBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSBmYWxsIGJhY2sgdG8gdXNlRmx1eCgpIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gIGNvbnN0IGNvbnRleHRGbHV4ID0gY29udGV4dD8uZmx1eDtcbiAgY29uc3QgaG9va0ZsdXggPSB1c2VGbHV4KCk7XG4gIGNvbnN0IGZsdXggPSBjb250ZXh0Rmx1eCB8fCBob29rRmx1eDtcblxuICBjb25zdCB7YWRhcHRlcnMsIGNvbmZpZ30gPSBjb250ZXh0O1xuICBjb25zdCBhY3Rpb25PcHRpb25zID0gdXNlTWVtbygoKSA9PiBidWlsZEFjdGlvbk9wdGlvbnMoYWRhcHRlcnMsIGNvbmZpZyksIFthZGFwdGVycywgY29uZmlnXSk7XG5cbiAgcmV0dXJuIHVzZU1lbW8oKCkgPT4ge1xuICAgIGxldCBhY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4gICAgaWYgKGFjdGlvblR5cGVzICYmIGFjdGlvblR5cGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIENyZWF0ZSBvbmx5IHJlcXVlc3RlZCBhY3Rpb25zXG4gICAgICBhY3Rpb25zID0gY3JlYXRlQWN0aW9ucyhhY3Rpb25UeXBlcywgZmx1eCwgYWN0aW9uT3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENyZWF0ZSBhbGwgYWN0aW9ucyAoZGVmYXVsdCBiZWhhdmlvciBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSlcbiAgICAgIGNvbnN0IGFsbEFjdGlvbnMgPSBjcmVhdGVBbGxBY3Rpb25zKGZsdXgsIGFjdGlvbk9wdGlvbnMpO1xuICAgICAgYWN0aW9ucyA9IGFsbEFjdGlvbnM7XG4gICAgfVxuXG4gICAgLy8gTWFwIHRvIHJldHVybiBrZXlzIChjb250ZW50QWN0aW9ucywgdXNlckFjdGlvbnMsIGV0Yy4pXG4gICAgcmV0dXJuIG1hcEFjdGlvbnNUb1JldHVybktleXMoYWN0aW9ucyk7XG4gIH0sIFtmbHV4LCBhY3Rpb25PcHRpb25zLCBhY3Rpb25UeXBlcz8uam9pbignLCcpXSk7XG59O1xuXG4vKipcbiAqIEhvb2sgdG8gYWNjZXNzIHRoZSBNZXRyb3BvbGlzIGNvbmZpZ3VyYXRpb24gZnJvbSBjb250ZXh0LlxuICpcbiAqIEByZXR1cm5zIFRoZSByZXNvbHZlZCBlbnZpcm9ubWVudC1zcGVjaWZpYyBjb25maWd1cmF0aW9uXG4gKiBAdGhyb3dzIEVycm9yIGlmIHVzZWQgb3V0c2lkZSBvZiBNZXRyb3BvbGlzIGNvbXBvbmVudFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IGNvbmZpZyA9IHVzZU1ldHJvcG9saXNDb25maWcoKTtcbiAqIGNvbnN0IGFwaVVybCA9IGNvbmZpZy5hcHA/LmFwaT8udXJsO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VNZXRyb3BvbGlzQ29uZmlnID0gKCk6IE1ldHJvcG9saXNFbnZpcm9ubWVudENvbmZpZ3VyYXRpb24gPT4ge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChNZXRyb3BvbGlzQ29udGV4dCk7XG5cbiAgaWYgKCFjb250ZXh0Py5jb25maWcpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAndXNlTWV0cm9wb2xpc0NvbmZpZyBtdXN0IGJlIHVzZWQgd2l0aGluIGEgTWV0cm9wb2xpcyBjb21wb25lbnQuICcgK1xuICAgICAgJ01ha2Ugc3VyZSB5b3VyIGNvbXBvbmVudCBpcyB3cmFwcGVkIHdpdGggPE1ldHJvcG9saXM+IHByb3ZpZGVyLidcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGNvbnRleHQuY29uZmlnO1xufTtcblxuLyoqXG4gKiBIb29rIHRvIGFjY2VzcyB0aGUgRmx1eCBmcmFtZXdvcmsgaW5zdGFuY2UgZnJvbSBjb250ZXh0LlxuICpcbiAqIEByZXR1cm5zIFRoZSBGbHV4IGZyYW1ld29yayBpbnN0YW5jZVxuICogQHRocm93cyBFcnJvciBpZiB1c2VkIG91dHNpZGUgb2YgTWV0cm9wb2xpcyBjb21wb25lbnQgYW5kIG5vIEZsdXggYXZhaWxhYmxlXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgZmx1eCA9IHVzZU1ldHJvcG9saXNGbHV4KCk7XG4gKiBjb25zdCBzdGF0ZSA9IGZsdXguZ2V0U3RhdGUoJ3VzZXIuc2Vzc2lvbicpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VNZXRyb3BvbGlzRmx1eCA9ICgpOiBGbHV4RnJhbWV3b3JrID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoTWV0cm9wb2xpc0NvbnRleHQpO1xuICBjb25zdCBob29rRmx1eCA9IHVzZUZsdXgoKTtcblxuICAvLyBVc2UgZmx1eCBmcm9tIGNvbnRleHQgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2UgZmFsbCBiYWNrIHRvIHVzZUZsdXgoKSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICByZXR1cm4gY29udGV4dD8uZmx1eCB8fCBob29rRmx1eDtcbn07XG5cbi8qKlxuICogU3BlY2lhbGl6ZWQgaG9va3MgZm9yIGluZGl2aWR1YWwgYWN0aW9uIHR5cGVzLlxuICogVGhlc2UgaG9va3Mgb25seSBjcmVhdGUgdGhlIHNwZWNpZmljIGFjdGlvbiB0eXBlLCBpbXByb3ZpbmcgcGVyZm9ybWFuY2UuXG4gKi9cblxuZXhwb3J0IGNvbnN0IHVzZUNvbnRlbnRBY3Rpb25zID0gKCkgPT4ge1xuICBjb25zdCB7Y29udGVudEFjdGlvbnN9ID0gdXNlTWV0cm9wb2xpcyhbJ2NvbnRlbnQnXSk7XG4gIHJldHVybiBjb250ZW50QWN0aW9ucztcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VBd3NSdW0gPSAoKSA9PiB7XG4gIGNvbnN0IHthd3NSdW19ID0gdXNlTWV0cm9wb2xpcyhbJ2F3c1J1bSddKTtcbiAgcmV0dXJuIGF3c1J1bTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VDcm1BY3Rpb25zID0gKCkgPT4ge1xuICBjb25zdCB7Y3JtQWN0aW9uc30gPSB1c2VNZXRyb3BvbGlzKFsnY3JtJ10pO1xuICByZXR1cm4gY3JtQWN0aW9ucztcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VFdmVudEFjdGlvbnMgPSAoKSA9PiB7XG4gIGNvbnN0IHtldmVudEFjdGlvbnN9ID0gdXNlTWV0cm9wb2xpcyhbJ2V2ZW50J10pO1xuICByZXR1cm4gZXZlbnRBY3Rpb25zO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZUdyb3VwQWN0aW9ucyA9ICgpID0+IHtcbiAgY29uc3Qge2dyb3VwQWN0aW9uc30gPSB1c2VNZXRyb3BvbGlzKFsnZ3JvdXAnXSk7XG4gIHJldHVybiBncm91cEFjdGlvbnM7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlSW1hZ2VBY3Rpb25zID0gKCkgPT4ge1xuICBjb25zdCB7aW1hZ2VBY3Rpb25zfSA9IHVzZU1ldHJvcG9saXMoWydpbWFnZSddKTtcbiAgcmV0dXJuIGltYWdlQWN0aW9ucztcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VMb2NhdGlvbkFjdGlvbnMgPSAoKSA9PiB7XG4gIGNvbnN0IHtsb2NhdGlvbkFjdGlvbnN9ID0gdXNlTWV0cm9wb2xpcyhbJ2xvY2F0aW9uJ10pO1xuICByZXR1cm4gbG9jYXRpb25BY3Rpb25zO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZU1lc3NhZ2VBY3Rpb25zID0gKCkgPT4ge1xuICBjb25zdCB7bWVzc2FnZUFjdGlvbnN9ID0gdXNlTWV0cm9wb2xpcyhbJ21lc3NhZ2UnXSk7XG4gIHJldHVybiBtZXNzYWdlQWN0aW9ucztcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VTdWJzY3JpcHRpb25BY3Rpb25zID0gKCkgPT4ge1xuICBjb25zdCB7c3Vic2NyaXB0aW9uQWN0aW9uc30gPSB1c2VNZXRyb3BvbGlzKFsnc3Vic2NyaXB0aW9uJ10pO1xuICByZXR1cm4gc3Vic2NyaXB0aW9uQWN0aW9ucztcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VQZXJtaXNzaW9uQWN0aW9ucyA9ICgpID0+IHtcbiAgY29uc3Qge3Blcm1pc3Npb25BY3Rpb25zfSA9IHVzZU1ldHJvcG9saXMoWydwZXJtaXNzaW9uJ10pO1xuICByZXR1cm4gcGVybWlzc2lvbkFjdGlvbnM7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlUG9zdEFjdGlvbnMgPSAoKSA9PiB7XG4gIGNvbnN0IHtwb3N0QWN0aW9uc30gPSB1c2VNZXRyb3BvbGlzKFsncG9zdCddKTtcbiAgcmV0dXJuIHBvc3RBY3Rpb25zO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVBlcnNvbmFBY3Rpb25zID0gKCkgPT4ge1xuICBjb25zdCB7cGVyc29uYUFjdGlvbnN9ID0gdXNlTWV0cm9wb2xpcyhbJ3BlcnNvbmEnXSk7XG4gIHJldHVybiBwZXJzb25hQWN0aW9ucztcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VSZWFjdGlvbkFjdGlvbnMgPSAoKSA9PiB7XG4gIGNvbnN0IHtyZWFjdGlvbkFjdGlvbnN9ID0gdXNlTWV0cm9wb2xpcyhbJ3JlYWN0aW9uJ10pO1xuICByZXR1cm4gcmVhY3Rpb25BY3Rpb25zO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVJlc3RBY3Rpb25zID0gKCkgPT4ge1xuICBjb25zdCB7cmVzdEFjdGlvbnN9ID0gdXNlTWV0cm9wb2xpcyhbJ3Jlc3QnXSk7XG4gIHJldHVybiByZXN0QWN0aW9ucztcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VUYWdBY3Rpb25zID0gKCkgPT4ge1xuICBjb25zdCB7dGFnQWN0aW9uc30gPSB1c2VNZXRyb3BvbGlzKFsndGFnJ10pO1xuICByZXR1cm4gdGFnQWN0aW9ucztcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VWaWRlb0FjdGlvbnMgPSAoKSA9PiB7XG4gIGNvbnN0IHt2aWRlb0FjdGlvbnN9ID0gdXNlTWV0cm9wb2xpcyhbJ3ZpZGVvJ10pO1xuICByZXR1cm4gdmlkZW9BY3Rpb25zO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVRyYW5zbGF0aW9uQWN0aW9ucyA9ICgpID0+IHtcbiAgY29uc3Qge3RyYW5zbGF0aW9uQWN0aW9uc30gPSB1c2VNZXRyb3BvbGlzKFsndHJhbnNsYXRpb24nXSk7XG4gIHJldHVybiB0cmFuc2xhdGlvbkFjdGlvbnM7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlVXNlckFjdGlvbnMgPSAoKSA9PiB7XG4gIGNvbnN0IHt1c2VyQWN0aW9uc30gPSB1c2VNZXRyb3BvbGlzKFsndXNlciddKTtcbiAgcmV0dXJuIHVzZXJBY3Rpb25zO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVdlYnNvY2tldEFjdGlvbnMgPSAoKSA9PiB7XG4gIGNvbnN0IHt3ZWJzb2NrZXRBY3Rpb25zfSA9IHVzZU1ldHJvcG9saXMoWyd3ZWJzb2NrZXQnXSk7XG4gIHJldHVybiB3ZWJzb2NrZXRBY3Rpb25zO1xufTtcbiJdLCJuYW1lcyI6WyJ1c2VGbHV4IiwidXNlQ29udGV4dCIsInVzZU1lbW8iLCJjcmVhdGVBY3Rpb25zIiwiY3JlYXRlQWxsQWN0aW9ucyIsIk1ldHJvcG9saXNDb250ZXh0IiwiYnVpbGRBY3Rpb25PcHRpb25zIiwiYWRhcHRlcnMiLCJjb25maWciLCJhd3NSdW1PcHRpb25zIiwiYXBwIiwicnVtIiwibmFtZSIsImFwcElkIiwidW5kZWZpbmVkIiwiYXdzUnVtIiwib3B0aW9ucyIsIkNvbnRlbnQiLCJjb250ZW50IiwiY29udGVudEFkYXB0ZXIiLCJFdmVudCIsImV2ZW50IiwiZXZlbnRBZGFwdGVyIiwiSW1hZ2UiLCJpbWFnZSIsImltYWdlQWRhcHRlciIsIkxvY2F0aW9uIiwibG9jYXRpb24iLCJsb2NhdGlvbkFkYXB0ZXIiLCJNZXNzYWdlIiwibWVzc2FnZSIsIm1lc3NhZ2VBZGFwdGVyIiwiUGVybWlzc2lvbiIsInBlcm1pc3Npb24iLCJwZXJtaXNzaW9uQWRhcHRlciIsIlBvc3QiLCJwb3N0IiwicG9zdEFkYXB0ZXIiLCJQZXJzb25hIiwicGVyc29uYSIsInBlcnNvbmFBZGFwdGVyIiwiUmVhY3Rpb24iLCJyZWFjdGlvbiIsInJlYWN0aW9uQWRhcHRlciIsIlRhZyIsInRhZyIsInRhZ0FkYXB0ZXIiLCJUcmFuc2xhdGlvbiIsInRyYW5zbGF0aW9uIiwidHJhbnNsYXRpb25BZGFwdGVyIiwiVXNlciIsInVzZXIiLCJ1c2VyQWRhcHRlciIsIlZpZGVvIiwidmlkZW8iLCJ2aWRlb0FkYXB0ZXIiLCJtYXBBY3Rpb25zVG9SZXR1cm5LZXlzIiwiYWN0aW9ucyIsIm1hcHBlZCIsImNvbnRlbnRBY3Rpb25zIiwiY3JtIiwiY3JtQWN0aW9ucyIsImV2ZW50QWN0aW9ucyIsImdyb3VwIiwiZ3JvdXBBY3Rpb25zIiwiaW1hZ2VBY3Rpb25zIiwibG9jYXRpb25BY3Rpb25zIiwibWVzc2FnZUFjdGlvbnMiLCJwZXJtaXNzaW9uQWN0aW9ucyIsInBvc3RBY3Rpb25zIiwicGVyc29uYUFjdGlvbnMiLCJyZWFjdGlvbkFjdGlvbnMiLCJyZXN0IiwicmVzdEFjdGlvbnMiLCJzdWJzY3JpcHRpb24iLCJzdWJzY3JpcHRpb25BY3Rpb25zIiwidGFnQWN0aW9ucyIsInRyYW5zbGF0aW9uQWN0aW9ucyIsInVzZXJBY3Rpb25zIiwidmlkZW9BY3Rpb25zIiwid2Vic29ja2V0Iiwid2Vic29ja2V0QWN0aW9ucyIsInVzZU1ldHJvcG9saXMiLCJhY3Rpb25UeXBlcyIsImNvbnRleHQiLCJjb250ZXh0Rmx1eCIsImZsdXgiLCJob29rRmx1eCIsImFjdGlvbk9wdGlvbnMiLCJsZW5ndGgiLCJhbGxBY3Rpb25zIiwiam9pbiIsInVzZU1ldHJvcG9saXNDb25maWciLCJFcnJvciIsInVzZU1ldHJvcG9saXNGbHV4IiwidXNlQ29udGVudEFjdGlvbnMiLCJ1c2VBd3NSdW0iLCJ1c2VDcm1BY3Rpb25zIiwidXNlRXZlbnRBY3Rpb25zIiwidXNlR3JvdXBBY3Rpb25zIiwidXNlSW1hZ2VBY3Rpb25zIiwidXNlTG9jYXRpb25BY3Rpb25zIiwidXNlTWVzc2FnZUFjdGlvbnMiLCJ1c2VTdWJzY3JpcHRpb25BY3Rpb25zIiwidXNlUGVybWlzc2lvbkFjdGlvbnMiLCJ1c2VQb3N0QWN0aW9ucyIsInVzZVBlcnNvbmFBY3Rpb25zIiwidXNlUmVhY3Rpb25BY3Rpb25zIiwidXNlUmVzdEFjdGlvbnMiLCJ1c2VUYWdBY3Rpb25zIiwidXNlVmlkZW9BY3Rpb25zIiwidXNlVHJhbnNsYXRpb25BY3Rpb25zIiwidXNlVXNlckFjdGlvbnMiLCJ1c2VXZWJzb2NrZXRBY3Rpb25zIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFRQSxPQUFPLFFBQU8sOEJBQThCO0FBQ3BELFNBQVFDLFVBQVUsRUFBRUMsT0FBTyxRQUFPLFFBQVE7QUFJMUMsU0FBUUMsYUFBYSxFQUFFQyxnQkFBZ0IsUUFBTyw0QkFBNEI7QUFFMUUsU0FBUUMsaUJBQWlCLFFBQU8sMEJBQTBCO0FBRzFEOztDQUVDLEdBQ0QsTUFBTUMscUJBQXFCLENBQ3pCQyxVQUNBQztJQUVBLE1BQU1DLGdCQUFnQkQsUUFBUUUsS0FBS0MsT0FBT0gsUUFBUUUsS0FBS0UsT0FDbkQ7UUFBQyxHQUFHSixRQUFRRSxLQUFLQyxHQUFHO1FBQUVFLE9BQU9MLFFBQVFFLEtBQUtDLEtBQUtFLFNBQVNMLFFBQVFFLEtBQUtFO0lBQUksSUFDekVFO0lBRUosSUFBSSxDQUFDUCxVQUFVO1FBQ2IsT0FBT0UsZ0JBQWdCO1lBQUNNLFFBQVFOO1FBQWEsSUFBSSxDQUFDO0lBQ3BEO0lBRUEsTUFBTU8sVUFBc0QsQ0FBQztJQUU3RCxJQUFHUCxlQUFlO1FBQ2hCTyxRQUFRRCxNQUFNLEdBQUdOO0lBQ25CO0lBRUEsSUFBSUYsU0FBU1UsT0FBTyxFQUFFO1FBQ3BCRCxRQUFRRSxPQUFPLEdBQUc7WUFBQ0MsZ0JBQWdCWixTQUFTVSxPQUFPO1FBQUE7SUFDckQ7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
334
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvdXRpbHMvdXNlTWV0cm9wb2xpcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3VzZUNvbnRleHQsIHVzZU1lbW99IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHR5cGUge0ZsdXhGcmFtZXdvcmt9IGZyb20gJ0BubGFicy9hcmtoYW1qcyc7XG5pbXBvcnQgdHlwZSB7TWV0cm9wb2xpc0Vudmlyb25tZW50Q29uZmlndXJhdGlvbn0gZnJvbSAnLi4vY29uZmlnL2luZGV4LmpzJztcbmltcG9ydCB7Y3JlYXRlQWN0aW9uc30gZnJvbSAnLi4vdXRpbHMvYWN0aW9uRmFjdG9yeS5qcyc7XG5pbXBvcnQgdHlwZSB7TWV0cm9wb2xpc0FkYXB0ZXJzfSBmcm9tICcuL01ldHJvcG9saXNDb250ZXh0LmpzJztcbmltcG9ydCB7TWV0cm9wb2xpc0NvbnRleHR9IGZyb20gJy4vTWV0cm9wb2xpc0NvbnRleHQuanMnO1xuaW1wb3J0IHR5cGUge0FjdGlvbk9wdGlvbnMsIEFjdGlvblR5cGV9IGZyb20gJy4uL3V0aWxzL2FjdGlvbkZhY3RvcnkuanMnO1xuXG4vKipcbiAqIEJ1aWxkcyBhY3Rpb24gb3B0aW9ucyBmcm9tIGFkYXB0ZXJzIGluIGEgdHlwZS1zYWZlIHdheS5cbiAqL1xuY29uc3QgYnVpbGRBY3Rpb25PcHRpb25zID0gKFxuICBhZGFwdGVycz86IE1ldHJvcG9saXNBZGFwdGVycyxcbiAgY29uZmlnPzogTWV0cm9wb2xpc0Vudmlyb25tZW50Q29uZmlndXJhdGlvblxuKTogUGFydGlhbDxSZWNvcmQ8QWN0aW9uVHlwZSwgQWN0aW9uT3B0aW9ucz4+ID0+IHtcbiAgY29uc3QgYXdzUnVtT3B0aW9ucyA9IGNvbmZpZz8uYXBwPy5ydW0gfHwgY29uZmlnPy5hcHA/Lm5hbWVcbiAgICA/IHtcbiAgICAgIC4uLmNvbmZpZz8uYXBwPy5ydW0sXG4gICAgICBhbmFseXRpY3NJZDogY29uZmlnPy5hcHA/LnJ1bT8uYW5hbHl0aWNzSWQgfHwgY29uZmlnPy5hcHA/Lm5hbWVcbiAgICB9XG4gICAgOiB1bmRlZmluZWQ7XG5cbiAgaWYgKCFhZGFwdGVycykge1xuICAgIHJldHVybiBhd3NSdW1PcHRpb25zID8ge2F3c1J1bTogYXdzUnVtT3B0aW9uc30gOiB7fTtcbiAgfVxuXG4gIGNvbnN0IG9wdGlvbnM6IFBhcnRpYWw8UmVjb3JkPEFjdGlvblR5cGUsIEFjdGlvbk9wdGlvbnM+PiA9IHt9O1xuXG4gIGlmKGF3c1J1bU9wdGlvbnMpIHtcbiAgICBvcHRpb25zLmF3c1J1bSA9IGF3c1J1bU9wdGlvbnM7XG4gIH1cblxuICBpZiAoYWRhcHRlcnMuQ29udGVudCkge1xuICAgIG9wdGlvbnMuY29udGVudCA9IHtjb250ZW50QWRhcHRlcjogYWRhcHRlcnMuQ29udGVudH07XG4gIH1cbiAgaWYgKGFkYXB0ZXJzLkV2ZW50KSB7XG4gICAgb3B0aW9ucy5ldmVudCA9IHtldmVudEFkYXB0ZXI6IGFkYXB0ZXJzLkV2ZW50fTtcbiAgfVxuICBpZiAoYWRhcHRlcnMuSW1hZ2UpIHtcbiAgICBvcHRpb25zLmltYWdlID0ge2ltYWdlQWRhcHRlcjogYWRhcHRlcnMuSW1hZ2V9O1xuICB9XG4gIGlmIChhZGFwdGVycy5Mb2NhdGlvbikge1xuICAgIG9wdGlvbnMubG9jYXRpb24gPSB7bG9jYXRpb25BZGFwdGVyOiBhZGFwdGVycy5Mb2NhdGlvbn07XG4gIH1cbiAgaWYgKGFkYXB0ZXJzLk1lc3NhZ2UpIHtcbiAgICBvcHRpb25zLm1lc3NhZ2UgPSB7bWVzc2FnZUFkYXB0ZXI6IGFkYXB0ZXJzLk1lc3NhZ2V9O1xuICB9XG4gIGlmIChhZGFwdGVycy5QZXJtaXNzaW9uKSB7XG4gICAgb3B0aW9ucy5wZXJtaXNzaW9uID0ge3Blcm1pc3Npb25BZGFwdGVyOiBhZGFwdGVycy5QZXJtaXNzaW9ufTtcbiAgfVxuICBpZiAoYWRhcHRlcnMuUG9zdCkge1xuICAgIG9wdGlvbnMucG9zdCA9IHtwb3N0QWRhcHRlcjogYWRhcHRlcnMuUG9zdH07XG4gIH1cbiAgaWYgKGFkYXB0ZXJzLlBlcnNvbmEpIHtcbiAgICBvcHRpb25zLnBlcnNvbmEgPSB7cGVyc29uYUFkYXB0ZXI6IGFkYXB0ZXJzLlBlcnNvbmF9O1xuICB9XG4gIGlmIChhZGFwdGVycy5SZWFjdGlvbikge1xuICAgIG9wdGlvbnMucmVhY3Rpb24gPSB7cmVhY3Rpb25BZGFwdGVyOiBhZGFwdGVycy5SZWFjdGlvbn07XG4gIH1cbiAgaWYgKGFkYXB0ZXJzLlRhZykge1xuICAgIG9wdGlvbnMudGFnID0ge3RhZ0FkYXB0ZXI6IGFkYXB0ZXJzLlRhZ307XG4gIH1cbiAgaWYgKGFkYXB0ZXJzLlRyYW5zbGF0aW9uKSB7XG4gICAgb3B0aW9ucy50cmFuc2xhdGlvbiA9IHt0cmFuc2xhdGlvbkFkYXB0ZXI6IGFkYXB0ZXJzLlRyYW5zbGF0aW9ufTtcbiAgfVxuICBpZiAoYWRhcHRlcnMuVXNlcikge1xuICAgIG9wdGlvbnMudXNlciA9IHt1c2VyQWRhcHRlcjogYWRhcHRlcnMuVXNlcn07XG4gIH1cbiAgaWYgKGFkYXB0ZXJzLlZpZGVvKSB7XG4gICAgb3B0aW9ucy52aWRlbyA9IHt2aWRlb0FkYXB0ZXI6IGFkYXB0ZXJzLlZpZGVvfTtcbiAgfVxuXG4gIHJldHVybiBvcHRpb25zO1xufTtcblxuLyoqXG4gKiBNYXBzIGFjdGlvbiB0eXBlIGtleXMgdG8gdGhlaXIgYWN0aW9uIG5hbWVzIGZvciByZXR1cm4gb2JqZWN0LlxuICovXG5jb25zdCBtYXBBY3Rpb25zVG9SZXR1cm5LZXlzID0gKGFjdGlvbnM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0+IHtcbiAgY29uc3QgbWFwcGVkOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG5cbiAgaWYoYWN0aW9ucy5hd3NSdW0pIHtcbiAgICBtYXBwZWQuYXdzUnVtID0gYWN0aW9ucy5hd3NSdW07XG4gIH1cblxuICBpZiAoYWN0aW9ucy5jb250ZW50KSB7XG4gICAgbWFwcGVkLmNvbnRlbnRBY3Rpb25zID0gYWN0aW9ucy5jb250ZW50O1xuICB9XG4gIGlmIChhY3Rpb25zLmNybSkge1xuICAgIG1hcHBlZC5jcm1BY3Rpb25zID0gYWN0aW9ucy5jcm07XG4gIH1cbiAgaWYgKGFjdGlvbnMuZXZlbnQpIHtcbiAgICBtYXBwZWQuZXZlbnRBY3Rpb25zID0gYWN0aW9ucy5ldmVudDtcbiAgfVxuICBpZiAoYWN0aW9ucy5ncm91cCkge1xuICAgIG1hcHBlZC5ncm91cEFjdGlvbnMgPSBhY3Rpb25zLmdyb3VwO1xuICB9XG4gIGlmIChhY3Rpb25zLmltYWdlKSB7XG4gICAgbWFwcGVkLmltYWdlQWN0aW9ucyA9IGFjdGlvbnMuaW1hZ2U7XG4gIH1cbiAgaWYgKGFjdGlvbnMubG9jYXRpb24pIHtcbiAgICBtYXBwZWQubG9jYXRpb25BY3Rpb25zID0gYWN0aW9ucy5sb2NhdGlvbjtcbiAgfVxuICBpZiAoYWN0aW9ucy5tZXNzYWdlKSB7XG4gICAgbWFwcGVkLm1lc3NhZ2VBY3Rpb25zID0gYWN0aW9ucy5tZXNzYWdlO1xuICB9XG4gIGlmIChhY3Rpb25zLnBlcm1pc3Npb24pIHtcbiAgICBtYXBwZWQucGVybWlzc2lvbkFjdGlvbnMgPSBhY3Rpb25zLnBlcm1pc3Npb247XG4gIH1cbiAgaWYgKGFjdGlvbnMucG9zdCkge1xuICAgIG1hcHBlZC5wb3N0QWN0aW9ucyA9IGFjdGlvbnMucG9zdDtcbiAgfVxuICBpZiAoYWN0aW9ucy5wZXJzb25hKSB7XG4gICAgbWFwcGVkLnBlcnNvbmFBY3Rpb25zID0gYWN0aW9ucy5wZXJzb25hO1xuICB9XG4gIGlmIChhY3Rpb25zLnJlYWN0aW9uKSB7XG4gICAgbWFwcGVkLnJlYWN0aW9uQWN0aW9ucyA9IGFjdGlvbnMucmVhY3Rpb247XG4gIH1cbiAgaWYgKGFjdGlvbnMucmVzdCkge1xuICAgIG1hcHBlZC5yZXN0QWN0aW9ucyA9IGFjdGlvbnMucmVzdDtcbiAgfVxuICBpZiAoYWN0aW9ucy5zdWJzY3JpcHRpb24pIHtcbiAgICBtYXBwZWQuc3Vic2NyaXB0aW9uQWN0aW9ucyA9IGFjdGlvbnMuc3Vic2NyaXB0aW9uO1xuICB9XG4gIGlmIChhY3Rpb25zLnRhZykge1xuICAgIG1hcHBlZC50YWdBY3Rpb25zID0gYWN0aW9ucy50YWc7XG4gIH1cbiAgaWYgKGFjdGlvbnMudHJhbnNsYXRpb24pIHtcbiAgICBtYXBwZWQudHJhbnNsYXRpb25BY3Rpb25zID0gYWN0aW9ucy50cmFuc2xhdGlvbjtcbiAgfVxuICBpZiAoYWN0aW9ucy51c2VyKSB7XG4gICAgbWFwcGVkLnVzZXJBY3Rpb25zID0gYWN0aW9ucy51c2VyO1xuICB9XG4gIGlmIChhY3Rpb25zLnZpZGVvKSB7XG4gICAgbWFwcGVkLnZpZGVvQWN0aW9ucyA9IGFjdGlvbnMudmlkZW87XG4gIH1cbiAgaWYgKGFjdGlvbnMud2Vic29ja2V0KSB7XG4gICAgbWFwcGVkLndlYnNvY2tldEFjdGlvbnMgPSBhY3Rpb25zLndlYnNvY2tldDtcbiAgfVxuXG4gIHJldHVybiBtYXBwZWQ7XG59O1xuXG4vKipcbiAqIE1haW4gaG9vayB0byBhY2Nlc3MgTWV0cm9wb2xpcyBhY3Rpb25zLlxuICpcbiAqIEBwYXJhbSBhY3Rpb25UeXBlcyAtIEFjdGlvbiB0eXBlcyB0byBjcmVhdGUuXG4gKiBAcmV0dXJucyBPYmplY3QgY29udGFpbmluZyB0aGUgcmVxdWVzdGVkIGFjdGlvbnNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCB7dXNlckFjdGlvbnN9ID0gdXNlTWV0cm9wb2xpcyhbJ3VzZXInXSk7XG4gKiBjb25zdCB7dXNlckFjdGlvbnMsIHBvc3RBY3Rpb25zfSA9IHVzZU1ldHJvcG9saXMoWyd1c2VyJywgJ3Bvc3QnXSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IHVzZU1ldHJvcG9saXMgPSA8VCBleHRlbmRzIEFjdGlvblR5cGVbXT4oYWN0aW9uVHlwZXM6IFQpID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoTWV0cm9wb2xpc0NvbnRleHQpO1xuXG4gIGlmKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1c2VNZXRyb3BvbGlzIG11c3QgYmUgdXNlZCB3aXRoaW4gYSBNZXRyb3BvbGlzIGNvbXBvbmVudC4nKTtcbiAgfVxuXG4gIGNvbnN0IHthZGFwdGVycywgY29uZmlnLCBmbHV4fSA9IGNvbnRleHQ7XG4gIGNvbnN0IGFjdGlvbk9wdGlvbnMgPSB1c2VNZW1vKCgpID0+IGJ1aWxkQWN0aW9uT3B0aW9ucyhhZGFwdGVycywgY29uZmlnKSwgW2FkYXB0ZXJzLCBjb25maWddKTtcblxuICByZXR1cm4gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgYWN0aW9ucyA9IGNyZWF0ZUFjdGlvbnMoYWN0aW9uVHlwZXMsIGZsdXgsIGFjdGlvbk9wdGlvbnMpO1xuICAgIHJldHVybiBtYXBBY3Rpb25zVG9SZXR1cm5LZXlzKGFjdGlvbnMpO1xuICB9LCBbZmx1eCwgYWN0aW9uT3B0aW9ucywgYWN0aW9uVHlwZXMuam9pbignLCcpXSk7XG59O1xuXG4vKipcbiAqIEhvb2sgdG8gYWNjZXNzIHRoZSBNZXRyb3BvbGlzIGNvbmZpZ3VyYXRpb24gZnJvbSBjb250ZXh0LlxuICpcbiAqIEByZXR1cm5zIFRoZSByZXNvbHZlZCBlbnZpcm9ubWVudC1zcGVjaWZpYyBjb25maWd1cmF0aW9uXG4gKiBAdGhyb3dzIEVycm9yIGlmIHVzZWQgb3V0c2lkZSBvZiBNZXRyb3BvbGlzIGNvbXBvbmVudFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IGNvbmZpZyA9IHVzZU1ldHJvcG9saXNDb25maWcoKTtcbiAqIGNvbnN0IGFwaVVybCA9IGNvbmZpZy5hcHA/LmFwaT8udXJsO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VNZXRyb3BvbGlzQ29uZmlnID0gKCk6IE1ldHJvcG9saXNFbnZpcm9ubWVudENvbmZpZ3VyYXRpb24gPT4ge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChNZXRyb3BvbGlzQ29udGV4dCk7XG5cbiAgaWYoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAndXNlTWV0cm9wb2xpc0NvbmZpZyBtdXN0IGJlIHVzZWQgd2l0aGluIGEgTWV0cm9wb2xpcyBjb21wb25lbnQuICcgK1xuICAgICAgJ01ha2Ugc3VyZSB5b3VyIGNvbXBvbmVudCBpcyB3cmFwcGVkIHdpdGggPE1ldHJvcG9saXM+IHByb3ZpZGVyLidcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGNvbnRleHQuY29uZmlnO1xufTtcblxuLyoqXG4gKiBIb29rIHRvIGFjY2VzcyB0aGUgRmx1eCBmcmFtZXdvcmsgaW5zdGFuY2UgZnJvbSBjb250ZXh0LlxuICpcbiAqIEByZXR1cm5zIFRoZSBGbHV4IGZyYW1ld29yayBpbnN0YW5jZVxuICogQHRocm93cyBFcnJvciBpZiB1c2VkIG91dHNpZGUgb2YgTWV0cm9wb2xpcyBjb21wb25lbnQgYW5kIG5vIEZsdXggYXZhaWxhYmxlXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgZmx1eCA9IHVzZU1ldHJvcG9saXNGbHV4KCk7XG4gKiBjb25zdCBzdGF0ZSA9IGZsdXguZ2V0U3RhdGUoJ3VzZXIuc2Vzc2lvbicpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VNZXRyb3BvbGlzRmx1eCA9ICgpOiBGbHV4RnJhbWV3b3JrID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoTWV0cm9wb2xpc0NvbnRleHQpO1xuXG4gIGlmKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1c2VNZXRyb3BvbGlzRmx1eCBtdXN0IGJlIHVzZWQgd2l0aGluIGEgTWV0cm9wb2xpcyBjb21wb25lbnQuJyk7XG4gIH1cblxuICByZXR1cm4gY29udGV4dC5mbHV4O1xufTtcblxuLyoqXG4gKiBTcGVjaWFsaXplZCBob29rcyBmb3IgaW5kaXZpZHVhbCBhY3Rpb24gdHlwZXMuXG4gKiBUaGVzZSBob29rcyBvbmx5IGNyZWF0ZSB0aGUgc3BlY2lmaWMgYWN0aW9uIHR5cGUsIGltcHJvdmluZyBwZXJmb3JtYW5jZS5cbiAqL1xuXG5leHBvcnQgY29uc3QgdXNlQ29udGVudEFjdGlvbnMgPSAoKSA9PiB7XG4gIGNvbnN0IHtjb250ZW50QWN0aW9uc30gPSB1c2VNZXRyb3BvbGlzKFsnY29udGVudCddKTtcbiAgcmV0dXJuIGNvbnRlbnRBY3Rpb25zO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZUF3c1J1bSA9ICgpID0+IHtcbiAgY29uc3Qge2F3c1J1bX0gPSB1c2VNZXRyb3BvbGlzKFsnYXdzUnVtJ10pO1xuICByZXR1cm4gYXdzUnVtO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZUNybUFjdGlvbnMgPSAoKSA9PiB7XG4gIGNvbnN0IHtjcm1BY3Rpb25zfSA9IHVzZU1ldHJvcG9saXMoWydjcm0nXSk7XG4gIHJldHVybiBjcm1BY3Rpb25zO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZUV2ZW50QWN0aW9ucyA9ICgpID0+IHtcbiAgY29uc3Qge2V2ZW50QWN0aW9uc30gPSB1c2VNZXRyb3BvbGlzKFsnZXZlbnQnXSk7XG4gIHJldHVybiBldmVudEFjdGlvbnM7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlR3JvdXBBY3Rpb25zID0gKCkgPT4ge1xuICBjb25zdCB7Z3JvdXBBY3Rpb25zfSA9IHVzZU1ldHJvcG9saXMoWydncm91cCddKTtcbiAgcmV0dXJuIGdyb3VwQWN0aW9ucztcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VJbWFnZUFjdGlvbnMgPSAoKSA9PiB7XG4gIGNvbnN0IHtpbWFnZUFjdGlvbnN9ID0gdXNlTWV0cm9wb2xpcyhbJ2ltYWdlJ10pO1xuICByZXR1cm4gaW1hZ2VBY3Rpb25zO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZUxvY2F0aW9uQWN0aW9ucyA9ICgpID0+IHtcbiAgY29uc3Qge2xvY2F0aW9uQWN0aW9uc30gPSB1c2VNZXRyb3BvbGlzKFsnbG9jYXRpb24nXSk7XG4gIHJldHVybiBsb2NhdGlvbkFjdGlvbnM7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlTWVzc2FnZUFjdGlvbnMgPSAoKSA9PiB7XG4gIGNvbnN0IHttZXNzYWdlQWN0aW9uc30gPSB1c2VNZXRyb3BvbGlzKFsnbWVzc2FnZSddKTtcbiAgcmV0dXJuIG1lc3NhZ2VBY3Rpb25zO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVN1YnNjcmlwdGlvbkFjdGlvbnMgPSAoKSA9PiB7XG4gIGNvbnN0IHtzdWJzY3JpcHRpb25BY3Rpb25zfSA9IHVzZU1ldHJvcG9saXMoWydzdWJzY3JpcHRpb24nXSk7XG4gIHJldHVybiBzdWJzY3JpcHRpb25BY3Rpb25zO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVBlcm1pc3Npb25BY3Rpb25zID0gKCkgPT4ge1xuICBjb25zdCB7cGVybWlzc2lvbkFjdGlvbnN9ID0gdXNlTWV0cm9wb2xpcyhbJ3Blcm1pc3Npb24nXSk7XG4gIHJldHVybiBwZXJtaXNzaW9uQWN0aW9ucztcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VQb3N0QWN0aW9ucyA9ICgpID0+IHtcbiAgY29uc3Qge3Bvc3RBY3Rpb25zfSA9IHVzZU1ldHJvcG9saXMoWydwb3N0J10pO1xuICByZXR1cm4gcG9zdEFjdGlvbnM7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlUGVyc29uYUFjdGlvbnMgPSAoKSA9PiB7XG4gIGNvbnN0IHtwZXJzb25hQWN0aW9uc30gPSB1c2VNZXRyb3BvbGlzKFsncGVyc29uYSddKTtcbiAgcmV0dXJuIHBlcnNvbmFBY3Rpb25zO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVJlYWN0aW9uQWN0aW9ucyA9ICgpID0+IHtcbiAgY29uc3Qge3JlYWN0aW9uQWN0aW9uc30gPSB1c2VNZXRyb3BvbGlzKFsncmVhY3Rpb24nXSk7XG4gIHJldHVybiByZWFjdGlvbkFjdGlvbnM7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlUmVzdEFjdGlvbnMgPSAoKSA9PiB7XG4gIGNvbnN0IHtyZXN0QWN0aW9uc30gPSB1c2VNZXRyb3BvbGlzKFsncmVzdCddKTtcbiAgcmV0dXJuIHJlc3RBY3Rpb25zO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVRhZ0FjdGlvbnMgPSAoKSA9PiB7XG4gIGNvbnN0IHt0YWdBY3Rpb25zfSA9IHVzZU1ldHJvcG9saXMoWyd0YWcnXSk7XG4gIHJldHVybiB0YWdBY3Rpb25zO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVZpZGVvQWN0aW9ucyA9ICgpID0+IHtcbiAgY29uc3Qge3ZpZGVvQWN0aW9uc30gPSB1c2VNZXRyb3BvbGlzKFsndmlkZW8nXSk7XG4gIHJldHVybiB2aWRlb0FjdGlvbnM7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlVHJhbnNsYXRpb25BY3Rpb25zID0gKCkgPT4ge1xuICBjb25zdCB7dHJhbnNsYXRpb25BY3Rpb25zfSA9IHVzZU1ldHJvcG9saXMoWyd0cmFuc2xhdGlvbiddKTtcbiAgcmV0dXJuIHRyYW5zbGF0aW9uQWN0aW9ucztcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VVc2VyQWN0aW9ucyA9ICgpID0+IHtcbiAgY29uc3Qge3VzZXJBY3Rpb25zfSA9IHVzZU1ldHJvcG9saXMoWyd1c2VyJ10pO1xuICByZXR1cm4gdXNlckFjdGlvbnM7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlV2Vic29ja2V0QWN0aW9ucyA9ICgpID0+IHtcbiAgY29uc3Qge3dlYnNvY2tldEFjdGlvbnN9ID0gdXNlTWV0cm9wb2xpcyhbJ3dlYnNvY2tldCddKTtcbiAgcmV0dXJuIHdlYnNvY2tldEFjdGlvbnM7XG59O1xuIl0sIm5hbWVzIjpbInVzZUNvbnRleHQiLCJ1c2VNZW1vIiwiY3JlYXRlQWN0aW9ucyIsIk1ldHJvcG9saXNDb250ZXh0IiwiYnVpbGRBY3Rpb25PcHRpb25zIiwiYWRhcHRlcnMiLCJjb25maWciLCJhd3NSdW1PcHRpb25zIiwiYXBwIiwicnVtIiwibmFtZSIsImFuYWx5dGljc0lkIiwidW5kZWZpbmVkIiwiYXdzUnVtIiwib3B0aW9ucyIsIkNvbnRlbnQiLCJjb250ZW50IiwiY29udGVudEFkYXB0ZXIiLCJFdmVudCIsImV2ZW50IiwiZXZlbnRBZGFwdGVyIiwiSW1hZ2UiLCJpbWFnZSIsImltYWdlQWRhcHRlciIsIkxvY2F0aW9uIiwibG9jYXRpb24iLCJsb2NhdGlvbkFkYXB0ZXIiLCJNZXNzYWdlIiwibWVzc2FnZSIsIm1lc3NhZ2VBZGFwdGVyIiwiUGVybWlzc2lvbiIsInBlcm1pc3Npb24iLCJwZXJtaXNzaW9uQWRhcHRlciIsIlBvc3QiLCJwb3N0IiwicG9zdEFkYXB0ZXIiLCJQZXJzb25hIiwicGVyc29uYSIsInBlcnNvbmFBZGFwdGVyIiwiUmVhY3Rpb24iLCJyZWFjdGlvbiIsInJlYWN0aW9uQWRhcHRlciIsIlRhZyIsInRhZyIsInRhZ0FkYXB0ZXIiLCJUcmFuc2xhdGlvbiIsInRyYW5zbGF0aW9uIiwidHJhbnNsYXRpb25BZGFwdGVyIiwiVXNlciIsInVzZXIiLCJ1c2VyQWRhcHRlciIsIlZpZGVvIiwidmlkZW8iLCJ2aWRlb0FkYXB0ZXIiLCJtYXBBY3Rpb25zVG9SZXR1cm5LZXlzIiwiYWN0aW9ucyIsIm1hcHBlZCIsImNvbnRlbnRBY3Rpb25zIiwiY3JtIiwiY3JtQWN0aW9ucyIsImV2ZW50QWN0aW9ucyIsImdyb3VwIiwiZ3JvdXBBY3Rpb25zIiwiaW1hZ2VBY3Rpb25zIiwibG9jYXRpb25BY3Rpb25zIiwibWVzc2FnZUFjdGlvbnMiLCJwZXJtaXNzaW9uQWN0aW9ucyIsInBvc3RBY3Rpb25zIiwicGVyc29uYUFjdGlvbnMiLCJyZWFjdGlvbkFjdGlvbnMiLCJyZXN0IiwicmVzdEFjdGlvbnMiLCJzdWJzY3JpcHRpb24iLCJzdWJzY3JpcHRpb25BY3Rpb25zIiwidGFnQWN0aW9ucyIsInRyYW5zbGF0aW9uQWN0aW9ucyIsInVzZXJBY3Rpb25zIiwidmlkZW9BY3Rpb25zIiwid2Vic29ja2V0Iiwid2Vic29ja2V0QWN0aW9ucyIsInVzZU1ldHJvcG9saXMiLCJhY3Rpb25UeXBlcyIsImNvbnRleHQiLCJFcnJvciIsImZsdXgiLCJhY3Rpb25PcHRpb25zIiwiam9pbiIsInVzZU1ldHJvcG9saXNDb25maWciLCJ1c2VNZXRyb3BvbGlzRmx1eCIsInVzZUNvbnRlbnRBY3Rpb25zIiwidXNlQXdzUnVtIiwidXNlQ3JtQWN0aW9ucyIsInVzZUV2ZW50QWN0aW9ucyIsInVzZUdyb3VwQWN0aW9ucyIsInVzZUltYWdlQWN0aW9ucyIsInVzZUxvY2F0aW9uQWN0aW9ucyIsInVzZU1lc3NhZ2VBY3Rpb25zIiwidXNlU3Vic2NyaXB0aW9uQWN0aW9ucyIsInVzZVBlcm1pc3Npb25BY3Rpb25zIiwidXNlUG9zdEFjdGlvbnMiLCJ1c2VQZXJzb25hQWN0aW9ucyIsInVzZVJlYWN0aW9uQWN0aW9ucyIsInVzZVJlc3RBY3Rpb25zIiwidXNlVGFnQWN0aW9ucyIsInVzZVZpZGVvQWN0aW9ucyIsInVzZVRyYW5zbGF0aW9uQWN0aW9ucyIsInVzZVVzZXJBY3Rpb25zIiwidXNlV2Vic29ja2V0QWN0aW9ucyJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUUEsVUFBVSxFQUFFQyxPQUFPLFFBQU8sUUFBUTtBQUkxQyxTQUFRQyxhQUFhLFFBQU8sNEJBQTRCO0FBRXhELFNBQVFDLGlCQUFpQixRQUFPLHlCQUF5QjtBQUd6RDs7Q0FFQyxHQUNELE1BQU1DLHFCQUFxQixDQUN6QkMsVUFDQUM7SUFFQSxNQUFNQyxnQkFBZ0JELFFBQVFFLEtBQUtDLE9BQU9ILFFBQVFFLEtBQUtFLE9BQ25EO1FBQ0EsR0FBR0osUUFBUUUsS0FBS0MsR0FBRztRQUNuQkUsYUFBYUwsUUFBUUUsS0FBS0MsS0FBS0UsZUFBZUwsUUFBUUUsS0FBS0U7SUFDN0QsSUFDRUU7SUFFSixJQUFJLENBQUNQLFVBQVU7UUFDYixPQUFPRSxnQkFBZ0I7WUFBQ00sUUFBUU47UUFBYSxJQUFJLENBQUM7SUFDcEQ7SUFFQSxNQUFNTyxVQUFzRCxDQUFDO0lBRTdELElBQUdQLGVBQWU7UUFDaEJPLFFBQVFELE1BQU0sR0FBR047SUFDbkI7SUFFQSxJQUFJRixTQUFTVSxPQUFPLEVBQUU7UUFDcEJELFFBQVFFLE9BQU8sR0FBRztZQUFDQyxnQkFBZ0JaLFNBQVNVLE9BQU87UUFBQTtJQUNyRDtJQUNBLElBQUlWLFNBQVNhLEtBQUssRUFBRTtRQUNsQkosUUFBUUssS0FBSyxHQUFHO1lBQUNDLGNBQWNmLFNBQVNhLEtBQUs7UUFBQTtJQUMvQztJQUNBLElBQUliLFNBQVNnQixLQUFLLEVBQUU7UUFDbEJQLFFBQVFRLEtBQUssR0FBRztZQUFDQyxjQUFjbEIsU0FBU2dCLEtBQUs7UUFBQTtJQUMvQztJQUNBLElBQUloQixTQUFTbUIsUUFBUSxFQUFFO1FBQ3JCVixRQUFRVyxRQUFRLEdBQUc7WUFBQ0MsaUJBQWlCckIsU0FBU21CLFFBQVE7UUFBQTtJQUN4RDtJQUNBLElBQUluQixTQUFTc0IsT0FBTyxFQUFFO1FBQ3BCYixRQUFRYyxPQUFPLEdBQUc7WUFBQ0MsZ0JBQWdCeEIsU0FBU3NCLE9BQU87UUFBQTtJQUNyRDtJQUNBLElBQUl0QixTQUFTeUIsVUFBVSxFQUFFO1FBQ3ZCaEIsUUFBUWlCLFVBQVUsR0FBRztZQUFDQyxtQkFBbUIzQixTQUFTeUIsVUFBVTtRQUFBO0lBQzlEO0lBQ0EsSUFBSXpCLFNBQVM0QixJQUFJLEVBQUU7UUFDakJuQixRQUFRb0IsSUFBSSxHQUFHO1lBQUNDLGFBQWE5QixTQUFTNEIsSUFBSTtRQUFBO0lBQzVDO0lBQ0EsSUFBSTVCLFNBQVMrQixPQUFPLEVBQUU7UUFDcEJ0QixRQUFRdUIsT0FBTyxHQUFHO1lBQUNDLGdCQUFnQmpDLFNBQVMrQixPQUFPO1FBQUE7SUFDckQ7SUFDQSxJQUFJL0IsU0FBU2tDLFFBQVEsRUFBRTtRQUNyQnpCLFFBQVEwQixRQUFRLEdBQUc7WUFBQ0MsaUJBQWlCcEMsU0FBU2tDLFFBQVE7UUFBQTtJQUN4RDtJQUNBLElBQUlsQyxTQUFTcUMsR0FBRyxFQUFFO1FBQ2hCNUIsUUFBUTZCLEdBQUcsR0FBRztZQUFDQyxZQUFZdkMsU0FBU3FDLEdBQUc7UUFBQTtJQUN6QztJQUNBLElBQUlyQyxTQUFTd0MsV0FBVyxFQUFFO1FBQ3hCL0IsUUFBUWdDLFdBQVcsR0FBRztZQUFDQyxvQkFBb0IxQyxTQUFTd0MsV0FBVztRQUFBO0lBQ2pFO0lBQ0EsSUFBSXhDLFNBQVMyQyxJQUFJLEVBQUU7UUFDakJsQyxRQUFRbUMsSUFBSSxHQUFHO1lBQUNDLGFBQWE3QyxTQUFTMkMsSUFBSTtRQUFBO0lBQzVDO0lBQ0EsSUFBSTNDLFNBQVM4QyxLQUFLLEVBQUU7UUFDbEJyQyxRQUFRc0MsS0FBSyxHQUFHO1lBQUNDLGNBQWNoRCxTQUFTOEMsS0FBSztRQUFBO0lBQy9DO0lBRUEsT0FBT3JDO0FBQ1Q7QUFFQTs7Q0FFQyxHQUNELE1BQU13Qyx5QkFBeUIsQ0FBQ0M7SUFDOUIsTUFBTUMsU0FBOEIsQ0FBQztJQUVyQyxJQUFHRCxRQUFRMUMsTUFBTSxFQUFFO1FBQ2pCMkMsT0FBTzNDLE1BQU0sR0FBRzBDLFFBQVExQyxNQUFNO0lBQ2hDO0lBRUEsSUFBSTBDLFFBQVF2QyxPQUFPLEVBQUU7UUFDbkJ3QyxPQUFPQyxjQUFjLEdBQUdGLFFBQVF2QyxPQUFPO0lBQ3pDO0lBQ0EsSUFBSXVDLFFBQVFHLEdBQUcsRUFBRTtRQUNmRixPQUFPRyxVQUFVLEdBQUdKLFFBQVFHLEdBQUc7SUFDakM7SUFDQSxJQUFJSCxRQUFRcEMsS0FBSyxFQUFFO1FBQ2pCcUMsT0FBT0ksWUFBWSxHQUFHTCxRQUFRcEMsS0FBSztJQUNyQztJQUNBLElBQUlvQyxRQUFRTSxLQUFLLEVBQUU7UUFDakJMLE9BQU9NLFlBQVksR0FBR1AsUUFBUU0sS0FBSztJQUNyQztJQUNBLElBQUlOLFFBQVFqQyxLQUFLLEVBQUU7UUFDakJrQyxPQUFPTyxZQUFZLEdBQUdSLFFBQVFqQyxLQUFLO0lBQ3JDO0lBQ0EsSUFBSWlDLFFBQVE5QixRQUFRLEVBQUU7UUFDcEIrQixPQUFPUSxlQUFlLEdBQUdULFFBQVE5QixRQUFRO0lBQzNDO0lBQ0EsSUFBSThCLFFBQVEzQixPQUFPLEVBQUU7UUFDbkI0QixPQUFPUyxjQUFjLEdBQUdWLFFBQVEzQixPQUFPO0lBQ3pDO0lBQ0EsSUFBSTJCLFFBQVF4QixVQUFVLEVBQUU7UUFDdEJ5QixPQUFPVSxpQkFBaUIsR0FBR1gsUUFBUXhCLFVBQVU7SUFDL0M7SUFDQSxJQUFJd0IsUUFBUXJCLElBQUksRUFBRTtRQUNoQnNCLE9BQU9XLFdBQVcsR0FBR1osUUFBUXJCLElBQUk7SUFDbkM7SUFDQSxJQUFJcUIsUUFBUWxCLE9BQU8sRUFBRTtRQUNuQm1CLE9BQU9ZLGNBQWMsR0FBR2IsUUFBUWxCLE9BQU87SUFDekM7SUFDQSxJQUFJa0IsUUFBUWYsUUFBUSxFQUFFO1FBQ3BCZ0IsT0FBT2EsZUFBZSxHQUFHZCxRQUFRZixRQUFRO0lBQzNDO0lBQ0EsSUFBSWUsUUFBUWUsSUFBSSxFQUFFO1FBQ2hCZCxPQUFPZSxXQUFXLEdBQUdoQixRQUFRZSxJQUFJO0lBQ25DO0lBQ0EsSUFBSWYsUUFBUWlCLFlBQVksRUFBRTtRQUN4QmhCLE9BQU9pQixtQkFBbUIsR0FBR2xCLFFBQVFpQixZQUFZO0lBQ25EO0lBQ0EsSUFBSWpCLFFBQVFaLEdBQUcsRUFBRTtRQUNmYSxPQUFPa0IsVUFBVSxHQUFHbkIsUUFBUVosR0FBRztJQUNqQztJQUNBLElBQUlZLFFBQVFULFdBQVcsRUFBRTtRQUN2QlUsT0FBT21CLGtCQUFrQixHQUFHcEIsUUFBUVQsV0FBVztJQUNqRDtJQUNBLElBQUlTLFFBQVFOLElBQUksRUFBRTtRQUNoQk8sT0FBT29CLFdBQVcsR0FBR3JCLFFBQVFOLElBQUk7SUFDbkM7SUFDQSxJQUFJTSxRQUFRSCxLQUFLLEVBQUU7UUFDakJJLE9BQU9xQixZQUFZLEdBQUd0QixRQUFRSCxLQUFLO0lBQ3JDO0lBQ0EsSUFBSUcsUUFBUXVCLFNBQVMsRUFBRTtRQUNyQnRCLE9BQU91QixnQkFBZ0IsR0FBR3hCLFFBQVF1QixTQUFTO0lBQzdDO0lBRUEsT0FBT3RCO0FBQ1Q7QUFFQTs7Ozs7Ozs7Ozs7Q0FXQyxHQUNELE9BQU8sTUFBTXdCLGdCQUFnQixDQUF5QkM7SUFDcEQsTUFBTUMsVUFBVWxGLFdBQVdHO0lBRTNCLElBQUcsQ0FBQytFLFNBQVM7UUFDWCxNQUFNLElBQUlDLE1BQU07SUFDbEI7SUFFQSxNQUFNLEVBQUM5RSxRQUFRLEVBQUVDLE1BQU0sRUFBRThFLElBQUksRUFBQyxHQUFHRjtJQUNqQyxNQUFNRyxnQkFBZ0JwRixRQUFRLElBQU1HLG1CQUFtQkMsVUFBVUMsU0FBUztRQUFDRDtRQUFVQztLQUFPO0lBRTVGLE9BQU9MLFFBQVE7UUFDYixNQUFNc0QsVUFBVXJELGNBQWMrRSxhQUFhRyxNQUFNQztRQUNqRCxPQUFPL0IsdUJBQXVCQztJQUNoQyxHQUFHO1FBQUM2QjtRQUFNQztRQUFlSixZQUFZSyxJQUFJLENBQUM7S0FBSztBQUNqRCxFQUFFO0FBRUY7Ozs7Ozs7Ozs7O0NBV0MsR0FDRCxPQUFPLE1BQU1DLHNCQUFzQjtJQUNqQyxNQUFNTCxVQUFVbEYsV0FBV0c7SUFFM0IsSUFBRyxDQUFDK0UsU0FBUztRQUNYLE1BQU0sSUFBSUMsTUFDUixxRUFDQTtJQUVKO0lBRUEsT0FBT0QsUUFBUTVFLE1BQU07QUFDdkIsRUFBRTtBQUVGOzs7Ozs7Ozs7OztDQVdDLEdBQ0QsT0FBTyxNQUFNa0Ysb0JBQW9CO0lBQy9CLE1BQU1OLFVBQVVsRixXQUFXRztJQUUzQixJQUFHLENBQUMrRSxTQUFTO1FBQ1gsTUFBTSxJQUFJQyxNQUFNO0lBQ2xCO0lBRUEsT0FBT0QsUUFBUUUsSUFBSTtBQUNyQixFQUFFO0FBRUY7OztDQUdDLEdBRUQsT0FBTyxNQUFNSyxvQkFBb0I7SUFDL0IsTUFBTSxFQUFDaEMsY0FBYyxFQUFDLEdBQUd1QixjQUFjO1FBQUM7S0FBVTtJQUNsRCxPQUFPdkI7QUFDVCxFQUFFO0FBRUYsT0FBTyxNQUFNaUMsWUFBWTtJQUN2QixNQUFNLEVBQUM3RSxNQUFNLEVBQUMsR0FBR21FLGNBQWM7UUFBQztLQUFTO0lBQ3pDLE9BQU9uRTtBQUNULEVBQUU7QUFFRixPQUFPLE1BQU04RSxnQkFBZ0I7SUFDM0IsTUFBTSxFQUFDaEMsVUFBVSxFQUFDLEdBQUdxQixjQUFjO1FBQUM7S0FBTTtJQUMxQyxPQUFPckI7QUFDVCxFQUFFO0FBRUYsT0FBTyxNQUFNaUMsa0JBQWtCO0lBQzdCLE1BQU0sRUFBQ2hDLFlBQVksRUFBQyxHQUFHb0IsY0FBYztRQUFDO0tBQVE7SUFDOUMsT0FBT3BCO0FBQ1QsRUFBRTtBQUVGLE9BQU8sTUFBTWlDLGtCQUFrQjtJQUM3QixNQUFNLEVBQUMvQixZQUFZLEVBQUMsR0FBR2tCLGNBQWM7UUFBQztLQUFRO0lBQzlDLE9BQU9sQjtBQUNULEVBQUU7QUFFRixPQUFPLE1BQU1nQyxrQkFBa0I7SUFDN0IsTUFBTSxFQUFDL0IsWUFBWSxFQUFDLEdBQUdpQixjQUFjO1FBQUM7S0FBUTtJQUM5QyxPQUFPakI7QUFDVCxFQUFFO0FBRUYsT0FBTyxNQUFNZ0MscUJBQXFCO0lBQ2hDLE1BQU0sRUFBQy9CLGVBQWUsRUFBQyxHQUFHZ0IsY0FBYztRQUFDO0tBQVc7SUFDcEQsT0FBT2hCO0FBQ1QsRUFBRTtBQUVGLE9BQU8sTUFBTWdDLG9CQUFvQjtJQUMvQixNQUFNLEVBQUMvQixjQUFjLEVBQUMsR0FBR2UsY0FBYztRQUFDO0tBQVU7SUFDbEQsT0FBT2Y7QUFDVCxFQUFFO0FBRUYsT0FBTyxNQUFNZ0MseUJBQXlCO0lBQ3BDLE1BQU0sRUFBQ3hCLG1CQUFtQixFQUFDLEdBQUdPLGNBQWM7UUFBQztLQUFlO0lBQzVELE9BQU9QO0FBQ1QsRUFBRTtBQUVGLE9BQU8sTUFBTXlCLHVCQUF1QjtJQUNsQyxNQUFNLEVBQUNoQyxpQkFBaUIsRUFBQyxHQUFHYyxjQUFjO1FBQUM7S0FBYTtJQUN4RCxPQUFPZDtBQUNULEVBQUU7QUFFRixPQUFPLE1BQU1pQyxpQkFBaUI7SUFDNUIsTUFBTSxFQUFDaEMsV0FBVyxFQUFDLEdBQUdhLGNBQWM7UUFBQztLQUFPO0lBQzVDLE9BQU9iO0FBQ1QsRUFBRTtBQUVGLE9BQU8sTUFBTWlDLG9CQUFvQjtJQUMvQixNQUFNLEVBQUNoQyxjQUFjLEVBQUMsR0FBR1ksY0FBYztRQUFDO0tBQVU7SUFDbEQsT0FBT1o7QUFDVCxFQUFFO0FBRUYsT0FBTyxNQUFNaUMscUJBQXFCO0lBQ2hDLE1BQU0sRUFBQ2hDLGVBQWUsRUFBQyxHQUFHVyxjQUFjO1FBQUM7S0FBVztJQUNwRCxPQUFPWDtBQUNULEVBQUU7QUFFRixPQUFPLE1BQU1pQyxpQkFBaUI7SUFDNUIsTUFBTSxFQUFDL0IsV0FBVyxFQUFDLEdBQUdTLGNBQWM7UUFBQztLQUFPO0lBQzVDLE9BQU9UO0FBQ1QsRUFBRTtBQUVGLE9BQU8sTUFBTWdDLGdCQUFnQjtJQUMzQixNQUFNLEVBQUM3QixVQUFVLEVBQUMsR0FBR00sY0FBYztRQUFDO0tBQU07SUFDMUMsT0FBT047QUFDVCxFQUFFO0FBRUYsT0FBTyxNQUFNOEIsa0JBQWtCO0lBQzdCLE1BQU0sRUFBQzNCLFlBQVksRUFBQyxHQUFHRyxjQUFjO1FBQUM7S0FBUTtJQUM5QyxPQUFPSDtBQUNULEVBQUU7QUFFRixPQUFPLE1BQU00Qix3QkFBd0I7SUFDbkMsTUFBTSxFQUFDOUIsa0JBQWtCLEVBQUMsR0FBR0ssY0FBYztRQUFDO0tBQWM7SUFDMUQsT0FBT0w7QUFDVCxFQUFFO0FBRUYsT0FBTyxNQUFNK0IsaUJBQWlCO0lBQzVCLE1BQU0sRUFBQzlCLFdBQVcsRUFBQyxHQUFHSSxjQUFjO1FBQUM7S0FBTztJQUM1QyxPQUFPSjtBQUNULEVBQUU7QUFFRixPQUFPLE1BQU0rQixzQkFBc0I7SUFDakMsTUFBTSxFQUFDNUIsZ0JBQWdCLEVBQUMsR0FBR0MsY0FBYztRQUFDO0tBQVk7SUFDdEQsT0FBT0Q7QUFDVCxFQUFFIn0=
@@ -5,7 +5,9 @@
5
5
  import { useMetropolis } from './useMetropolis.js';
6
6
  export const useTranslations = (options = {})=>{
7
7
  const { locale = 'en', namespace, autoProcess = true, processInterval = 1000 } = options;
8
- const { translationActions } = useMetropolis();
8
+ const { translationActions } = useMetropolis([
9
+ 'translation'
10
+ ]);
9
11
  const processTimeoutRef = useRef(null);
10
12
  const lastProcessRef = useRef(0);
11
13
  const t = useCallback((key, fallback)=>{
@@ -102,4 +104,4 @@ export const useTranslations = (options = {})=>{
102
104
  };
103
105
  };
104
106
 
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvdXRpbHMvdXNlVHJhbnNsYXRpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDI1LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU1ldHJvcG9saXMgfSBmcm9tICcuL3VzZU1ldHJvcG9saXMuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZVRyYW5zbGF0aW9uc09wdGlvbnMge1xuICByZWFkb25seSBsb2NhbGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWVzcGFjZT86IHN0cmluZztcbiAgcmVhZG9ubHkgYXV0b1Byb2Nlc3M/OiBib29sZWFuO1xuICByZWFkb25seSBwcm9jZXNzSW50ZXJ2YWw/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlVHJhbnNsYXRpb25zUmV0dXJuIHtcbiAgcmVhZG9ubHkgdDogKGtleTogc3RyaW5nLCBmYWxsYmFjaz86IHN0cmluZykgPT4gc3RyaW5nO1xuICByZWFkb25seSBoYXNUcmFuc2xhdGlvbjogKGtleTogc3RyaW5nKSA9PiBib29sZWFuO1xuICByZWFkb25seSBxdWV1ZVRyYW5zbGF0aW9uOiAoa2V5OiBzdHJpbmcpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IHByb2Nlc3NQZW5kaW5nOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xuICByZWFkb25seSBpc0xvYWRpbmc6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGVycm9yOiBFcnJvciB8IG51bGw7XG59XG5cbmV4cG9ydCBjb25zdCB1c2VUcmFuc2xhdGlvbnMgPSAob3B0aW9uczogVXNlVHJhbnNsYXRpb25zT3B0aW9ucyA9IHt9KTogVXNlVHJhbnNsYXRpb25zUmV0dXJuID0+IHtcbiAgY29uc3Qge1xuICAgIGxvY2FsZSA9ICdlbicsXG4gICAgbmFtZXNwYWNlLFxuICAgIGF1dG9Qcm9jZXNzID0gdHJ1ZSxcbiAgICBwcm9jZXNzSW50ZXJ2YWwgPSAxMDAwXG4gIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IHt0cmFuc2xhdGlvbkFjdGlvbnN9ID0gdXNlTWV0cm9wb2xpcygpO1xuICBjb25zdCBwcm9jZXNzVGltZW91dFJlZiA9IHVzZVJlZjxSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGw+KG51bGwpO1xuICBjb25zdCBsYXN0UHJvY2Vzc1JlZiA9IHVzZVJlZjxudW1iZXI+KDApO1xuXG4gIGNvbnN0IHQgPSB1c2VDYWxsYmFjaygoa2V5OiBzdHJpbmcsIGZhbGxiYWNrPzogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgICBpZiAoIXRyYW5zbGF0aW9uQWN0aW9ucykge1xuICAgICAgcmV0dXJuIGZhbGxiYWNrIHx8IGtleTtcbiAgICB9XG5cbiAgICBjb25zdCB0cmFuc2xhdGlvbiA9IHRyYW5zbGF0aW9uQWN0aW9ucy5nZXRUcmFuc2xhdGlvbihrZXksIGxvY2FsZSwgbmFtZXNwYWNlKTtcblxuICAgIGlmICh0cmFuc2xhdGlvbikge1xuICAgICAgcmV0dXJuIHRyYW5zbGF0aW9uO1xuICAgIH1cblxuICAgIGlmIChhdXRvUHJvY2VzcyAmJiAhdHJhbnNsYXRpb25BY3Rpb25zLmhhc1RyYW5zbGF0aW9uKGtleSwgbG9jYWxlLCBuYW1lc3BhY2UpKSB7XG4gICAgICB0cmFuc2xhdGlvbkFjdGlvbnMucXVldWVUcmFuc2xhdGlvbktleShrZXksIGxvY2FsZSwgbmFtZXNwYWNlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsbGJhY2sgfHwga2V5O1xuICB9LCBbdHJhbnNsYXRpb25BY3Rpb25zLCBsb2NhbGUsIG5hbWVzcGFjZSwgYXV0b1Byb2Nlc3NdKTtcblxuICBjb25zdCBoYXNUcmFuc2xhdGlvbiA9IHVzZUNhbGxiYWNrKChrZXk6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICAgIGlmICghdHJhbnNsYXRpb25BY3Rpb25zKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRyYW5zbGF0aW9uQWN0aW9ucy5oYXNUcmFuc2xhdGlvbihrZXksIGxvY2FsZSwgbmFtZXNwYWNlKTtcbiAgfSwgW3RyYW5zbGF0aW9uQWN0aW9ucywgbG9jYWxlLCBuYW1lc3BhY2VdKTtcblxuICBjb25zdCBxdWV1ZVRyYW5zbGF0aW9uID0gdXNlQ2FsbGJhY2soKGtleTogc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgaWYgKCF0cmFuc2xhdGlvbkFjdGlvbnMpIHJldHVybjtcbiAgICB0cmFuc2xhdGlvbkFjdGlvbnMucXVldWVUcmFuc2xhdGlvbktleShrZXksIGxvY2FsZSwgbmFtZXNwYWNlKTtcbiAgfSwgW3RyYW5zbGF0aW9uQWN0aW9ucywgbG9jYWxlLCBuYW1lc3BhY2VdKTtcblxuICBjb25zdCBwcm9jZXNzUGVuZGluZyA9IHVzZUNhbGxiYWNrKGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBpZiAoIXRyYW5zbGF0aW9uQWN0aW9ucykgcmV0dXJuO1xuXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBpZiAobm93IC0gbGFzdFByb2Nlc3NSZWYuY3VycmVudCA8IHByb2Nlc3NJbnRlcnZhbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxhc3RQcm9jZXNzUmVmLmN1cnJlbnQgPSBub3c7XG4gICAgYXdhaXQgdHJhbnNsYXRpb25BY3Rpb25zLnByb2Nlc3NQZW5kaW5nVHJhbnNsYXRpb25zKGxvY2FsZSwgbmFtZXNwYWNlKTtcbiAgfSwgW3RyYW5zbGF0aW9uQWN0aW9ucywgbG9jYWxlLCBuYW1lc3BhY2UsIHByb2Nlc3NJbnRlcnZhbF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFhdXRvUHJvY2VzcyB8fCAhdHJhbnNsYXRpb25BY3Rpb25zKSByZXR1cm47XG5cbiAgICBjb25zdCBwcm9jZXNzUXVldWVkID0gKCkgPT4ge1xuICAgICAgcHJvY2Vzc1BlbmRpbmcoKTtcbiAgICB9O1xuXG4gICAgaWYgKHByb2Nlc3NUaW1lb3V0UmVmLmN1cnJlbnQpIHtcbiAgICAgIGNsZWFyVGltZW91dChwcm9jZXNzVGltZW91dFJlZi5jdXJyZW50KTtcbiAgICB9XG5cbiAgICBwcm9jZXNzVGltZW91dFJlZi5jdXJyZW50ID0gc2V0VGltZW91dChwcm9jZXNzUXVldWVkLCBwcm9jZXNzSW50ZXJ2YWwpO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChwcm9jZXNzVGltZW91dFJlZi5jdXJyZW50KSB7XG4gICAgICAgIGNsZWFyVGltZW91dChwcm9jZXNzVGltZW91dFJlZi5jdXJyZW50KTtcbiAgICAgIH1cbiAgICB9O1xuICB9LCBbYXV0b1Byb2Nlc3MsIHRyYW5zbGF0aW9uQWN0aW9ucywgcHJvY2Vzc1BlbmRpbmcsIHByb2Nlc3NJbnRlcnZhbF0pO1xuXG4gIGNvbnN0IGlzTG9hZGluZyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghdHJhbnNsYXRpb25BY3Rpb25zKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3Qgc3RhdGUgPSAodHJhbnNsYXRpb25BY3Rpb25zIGFzIGFueSkuZmx1eD8uZ2V0U3RhdGUoJ3RyYW5zbGF0aW9ucycpO1xuICAgIHJldHVybiBzdGF0ZT8uaXNRdWV1ZWluZyB8fCBmYWxzZTtcbiAgfSwgW3RyYW5zbGF0aW9uQWN0aW9uc10pO1xuXG4gIGNvbnN0IGVycm9yID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCF0cmFuc2xhdGlvbkFjdGlvbnMpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IHN0YXRlID0gKHRyYW5zbGF0aW9uQWN0aW9ucyBhcyBhbnkpLmZsdXg/LmdldFN0YXRlKCd0cmFuc2xhdGlvbnMnKTtcbiAgICByZXR1cm4gc3RhdGU/LmVycm9yIHx8IG51bGw7XG4gIH0sIFt0cmFuc2xhdGlvbkFjdGlvbnNdKTtcblxuICByZXR1cm4ge1xuICAgIHQsXG4gICAgaGFzVHJhbnNsYXRpb24sXG4gICAgcXVldWVUcmFuc2xhdGlvbixcbiAgICBwcm9jZXNzUGVuZGluZyxcbiAgICBpc0xvYWRpbmcsXG4gICAgZXJyb3JcbiAgfTtcbn07XG4iXSwibmFtZXMiOlsidXNlQ2FsbGJhY2siLCJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlUmVmIiwidXNlTWV0cm9wb2xpcyIsInVzZVRyYW5zbGF0aW9ucyIsIm9wdGlvbnMiLCJsb2NhbGUiLCJuYW1lc3BhY2UiLCJhdXRvUHJvY2VzcyIsInByb2Nlc3NJbnRlcnZhbCIsInRyYW5zbGF0aW9uQWN0aW9ucyIsInByb2Nlc3NUaW1lb3V0UmVmIiwibGFzdFByb2Nlc3NSZWYiLCJ0Iiwia2V5IiwiZmFsbGJhY2siLCJ0cmFuc2xhdGlvbiIsImdldFRyYW5zbGF0aW9uIiwiaGFzVHJhbnNsYXRpb24iLCJxdWV1ZVRyYW5zbGF0aW9uS2V5IiwicXVldWVUcmFuc2xhdGlvbiIsInByb2Nlc3NQZW5kaW5nIiwibm93IiwiRGF0ZSIsImN1cnJlbnQiLCJwcm9jZXNzUGVuZGluZ1RyYW5zbGF0aW9ucyIsInByb2Nlc3NRdWV1ZWQiLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0IiwiaXNMb2FkaW5nIiwic3RhdGUiLCJmbHV4IiwiZ2V0U3RhdGUiLCJpc1F1ZXVlaW5nIiwiZXJyb3IiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVNBLFdBQVcsRUFBRUMsU0FBUyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sUUFBUSxRQUFRO0FBRWhFLFNBQVNDLGFBQWEsUUFBUSxxQkFBcUI7QUFrQm5ELE9BQU8sTUFBTUMsa0JBQWtCLENBQUNDLFVBQWtDLENBQUMsQ0FBQztJQUNsRSxNQUFNLEVBQ0pDLFNBQVMsSUFBSSxFQUNiQyxTQUFT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
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvdXRpbHMvdXNlVHJhbnNsYXRpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDI1LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU1ldHJvcG9saXMgfSBmcm9tICcuL3VzZU1ldHJvcG9saXMuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZVRyYW5zbGF0aW9uc09wdGlvbnMge1xuICByZWFkb25seSBsb2NhbGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWVzcGFjZT86IHN0cmluZztcbiAgcmVhZG9ubHkgYXV0b1Byb2Nlc3M/OiBib29sZWFuO1xuICByZWFkb25seSBwcm9jZXNzSW50ZXJ2YWw/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlVHJhbnNsYXRpb25zUmV0dXJuIHtcbiAgcmVhZG9ubHkgdDogKGtleTogc3RyaW5nLCBmYWxsYmFjaz86IHN0cmluZykgPT4gc3RyaW5nO1xuICByZWFkb25seSBoYXNUcmFuc2xhdGlvbjogKGtleTogc3RyaW5nKSA9PiBib29sZWFuO1xuICByZWFkb25seSBxdWV1ZVRyYW5zbGF0aW9uOiAoa2V5OiBzdHJpbmcpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IHByb2Nlc3NQZW5kaW5nOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xuICByZWFkb25seSBpc0xvYWRpbmc6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGVycm9yOiBFcnJvciB8IG51bGw7XG59XG5cbmV4cG9ydCBjb25zdCB1c2VUcmFuc2xhdGlvbnMgPSAob3B0aW9uczogVXNlVHJhbnNsYXRpb25zT3B0aW9ucyA9IHt9KTogVXNlVHJhbnNsYXRpb25zUmV0dXJuID0+IHtcbiAgY29uc3Qge1xuICAgIGxvY2FsZSA9ICdlbicsXG4gICAgbmFtZXNwYWNlLFxuICAgIGF1dG9Qcm9jZXNzID0gdHJ1ZSxcbiAgICBwcm9jZXNzSW50ZXJ2YWwgPSAxMDAwXG4gIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IHt0cmFuc2xhdGlvbkFjdGlvbnN9ID0gdXNlTWV0cm9wb2xpcyhbJ3RyYW5zbGF0aW9uJ10pO1xuICBjb25zdCBwcm9jZXNzVGltZW91dFJlZiA9IHVzZVJlZjxSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGw+KG51bGwpO1xuICBjb25zdCBsYXN0UHJvY2Vzc1JlZiA9IHVzZVJlZjxudW1iZXI+KDApO1xuXG4gIGNvbnN0IHQgPSB1c2VDYWxsYmFjaygoa2V5OiBzdHJpbmcsIGZhbGxiYWNrPzogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgICBpZiAoIXRyYW5zbGF0aW9uQWN0aW9ucykge1xuICAgICAgcmV0dXJuIGZhbGxiYWNrIHx8IGtleTtcbiAgICB9XG5cbiAgICBjb25zdCB0cmFuc2xhdGlvbiA9IHRyYW5zbGF0aW9uQWN0aW9ucy5nZXRUcmFuc2xhdGlvbihrZXksIGxvY2FsZSwgbmFtZXNwYWNlKTtcblxuICAgIGlmICh0cmFuc2xhdGlvbikge1xuICAgICAgcmV0dXJuIHRyYW5zbGF0aW9uO1xuICAgIH1cblxuICAgIGlmIChhdXRvUHJvY2VzcyAmJiAhdHJhbnNsYXRpb25BY3Rpb25zLmhhc1RyYW5zbGF0aW9uKGtleSwgbG9jYWxlLCBuYW1lc3BhY2UpKSB7XG4gICAgICB0cmFuc2xhdGlvbkFjdGlvbnMucXVldWVUcmFuc2xhdGlvbktleShrZXksIGxvY2FsZSwgbmFtZXNwYWNlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsbGJhY2sgfHwga2V5O1xuICB9LCBbdHJhbnNsYXRpb25BY3Rpb25zLCBsb2NhbGUsIG5hbWVzcGFjZSwgYXV0b1Byb2Nlc3NdKTtcblxuICBjb25zdCBoYXNUcmFuc2xhdGlvbiA9IHVzZUNhbGxiYWNrKChrZXk6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICAgIGlmICghdHJhbnNsYXRpb25BY3Rpb25zKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRyYW5zbGF0aW9uQWN0aW9ucy5oYXNUcmFuc2xhdGlvbihrZXksIGxvY2FsZSwgbmFtZXNwYWNlKTtcbiAgfSwgW3RyYW5zbGF0aW9uQWN0aW9ucywgbG9jYWxlLCBuYW1lc3BhY2VdKTtcblxuICBjb25zdCBxdWV1ZVRyYW5zbGF0aW9uID0gdXNlQ2FsbGJhY2soKGtleTogc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgaWYgKCF0cmFuc2xhdGlvbkFjdGlvbnMpIHJldHVybjtcbiAgICB0cmFuc2xhdGlvbkFjdGlvbnMucXVldWVUcmFuc2xhdGlvbktleShrZXksIGxvY2FsZSwgbmFtZXNwYWNlKTtcbiAgfSwgW3RyYW5zbGF0aW9uQWN0aW9ucywgbG9jYWxlLCBuYW1lc3BhY2VdKTtcblxuICBjb25zdCBwcm9jZXNzUGVuZGluZyA9IHVzZUNhbGxiYWNrKGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBpZiAoIXRyYW5zbGF0aW9uQWN0aW9ucykgcmV0dXJuO1xuXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBpZiAobm93IC0gbGFzdFByb2Nlc3NSZWYuY3VycmVudCA8IHByb2Nlc3NJbnRlcnZhbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxhc3RQcm9jZXNzUmVmLmN1cnJlbnQgPSBub3c7XG4gICAgYXdhaXQgdHJhbnNsYXRpb25BY3Rpb25zLnByb2Nlc3NQZW5kaW5nVHJhbnNsYXRpb25zKGxvY2FsZSwgbmFtZXNwYWNlKTtcbiAgfSwgW3RyYW5zbGF0aW9uQWN0aW9ucywgbG9jYWxlLCBuYW1lc3BhY2UsIHByb2Nlc3NJbnRlcnZhbF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFhdXRvUHJvY2VzcyB8fCAhdHJhbnNsYXRpb25BY3Rpb25zKSByZXR1cm47XG5cbiAgICBjb25zdCBwcm9jZXNzUXVldWVkID0gKCkgPT4ge1xuICAgICAgcHJvY2Vzc1BlbmRpbmcoKTtcbiAgICB9O1xuXG4gICAgaWYgKHByb2Nlc3NUaW1lb3V0UmVmLmN1cnJlbnQpIHtcbiAgICAgIGNsZWFyVGltZW91dChwcm9jZXNzVGltZW91dFJlZi5jdXJyZW50KTtcbiAgICB9XG5cbiAgICBwcm9jZXNzVGltZW91dFJlZi5jdXJyZW50ID0gc2V0VGltZW91dChwcm9jZXNzUXVldWVkLCBwcm9jZXNzSW50ZXJ2YWwpO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChwcm9jZXNzVGltZW91dFJlZi5jdXJyZW50KSB7XG4gICAgICAgIGNsZWFyVGltZW91dChwcm9jZXNzVGltZW91dFJlZi5jdXJyZW50KTtcbiAgICAgIH1cbiAgICB9O1xuICB9LCBbYXV0b1Byb2Nlc3MsIHRyYW5zbGF0aW9uQWN0aW9ucywgcHJvY2Vzc1BlbmRpbmcsIHByb2Nlc3NJbnRlcnZhbF0pO1xuXG4gIGNvbnN0IGlzTG9hZGluZyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghdHJhbnNsYXRpb25BY3Rpb25zKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3Qgc3RhdGUgPSAodHJhbnNsYXRpb25BY3Rpb25zIGFzIGFueSkuZmx1eD8uZ2V0U3RhdGUoJ3RyYW5zbGF0aW9ucycpO1xuICAgIHJldHVybiBzdGF0ZT8uaXNRdWV1ZWluZyB8fCBmYWxzZTtcbiAgfSwgW3RyYW5zbGF0aW9uQWN0aW9uc10pO1xuXG4gIGNvbnN0IGVycm9yID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCF0cmFuc2xhdGlvbkFjdGlvbnMpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IHN0YXRlID0gKHRyYW5zbGF0aW9uQWN0aW9ucyBhcyBhbnkpLmZsdXg/LmdldFN0YXRlKCd0cmFuc2xhdGlvbnMnKTtcbiAgICByZXR1cm4gc3RhdGU/LmVycm9yIHx8IG51bGw7XG4gIH0sIFt0cmFuc2xhdGlvbkFjdGlvbnNdKTtcblxuICByZXR1cm4ge1xuICAgIHQsXG4gICAgaGFzVHJhbnNsYXRpb24sXG4gICAgcXVldWVUcmFuc2xhdGlvbixcbiAgICBwcm9jZXNzUGVuZGluZyxcbiAgICBpc0xvYWRpbmcsXG4gICAgZXJyb3JcbiAgfTtcbn07XG4iXSwibmFtZXMiOlsidXNlQ2FsbGJhY2siLCJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlUmVmIiwidXNlTWV0cm9wb2xpcyIsInVzZVRyYW5zbGF0aW9ucyIsIm9wdGlvbnMiLCJsb2NhbGUiLCJuYW1lc3BhY2UiLCJhdXRvUHJvY2VzcyIsInByb2Nlc3NJbnRlcnZhbCIsInRyYW5zbGF0aW9uQWN0aW9ucyIsInByb2Nlc3NUaW1lb3V0UmVmIiwibGFzdFByb2Nlc3NSZWYiLCJ0Iiwia2V5IiwiZmFsbGJhY2siLCJ0cmFuc2xhdGlvbiIsImdldFRyYW5zbGF0aW9uIiwiaGFzVHJhbnNsYXRpb24iLCJxdWV1ZVRyYW5zbGF0aW9uS2V5IiwicXVldWVUcmFuc2xhdGlvbiIsInByb2Nlc3NQZW5kaW5nIiwibm93IiwiRGF0ZSIsImN1cnJlbnQiLCJwcm9jZXNzUGVuZGluZ1RyYW5zbGF0aW9ucyIsInByb2Nlc3NRdWV1ZWQiLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0IiwiaXNMb2FkaW5nIiwic3RhdGUiLCJmbHV4IiwiZ2V0U3RhdGUiLCJpc1F1ZXVlaW5nIiwiZXJyb3IiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVNBLFdBQVcsRUFBRUMsU0FBUyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sUUFBUSxRQUFRO0FBRWhFLFNBQVNDLGFBQWEsUUFBUSxxQkFBcUI7QUFrQm5ELE9BQU8sTUFBTUMsa0JBQWtCLENBQUNDLFVBQWtDLENBQUMsQ0FBQztJQUNsRSxNQUFNLEVBQ0pDLFNBQVMs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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nlabs/metropolisjs",
3
- "version": "1.0.2",
3
+ "version": "1.0.7",
4
4
  "description": "MetropolisJS is a library to connect users to Reaktor",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
@@ -39,7 +39,7 @@
39
39
  },
40
40
  "types": "./lib/index.d.ts",
41
41
  "scripts": {
42
- "build": "lex compile --remove && npm run postbuild",
42
+ "build": "lex compile --remove",
43
43
  "build:dev": "NODE_ENV=development lex compile --remove",
44
44
  "postbuild": "npx tsc-esm-fix lib",
45
45
  "clean": "lex clean",
@@ -101,6 +101,9 @@
101
101
  "@nlabs/arkhamjs-utils-react": "^3.32.0",
102
102
  "react": "^19.1.0"
103
103
  },
104
+ "publishConfig": {
105
+ "access": "public"
106
+ },
104
107
  "overrides": {
105
108
  "cross-spawn": "^7.0.6",
106
109
  "got": "^14.6.5",