parse-server 9.6.1 → 9.7.0-alpha.2

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/rest.js CHANGED
@@ -13,6 +13,7 @@ var Parse = require('parse/node').Parse;
13
13
  var RestQuery = require('./RestQuery');
14
14
  var RestWrite = require('./RestWrite');
15
15
  var triggers = require('./triggers');
16
+ const Auth = require('./Auth');
16
17
  const {
17
18
  enforceRoleSecurity
18
19
  } = require('./SharedRest');
@@ -216,10 +217,13 @@ function update(config, auth, className, restWhere, restObject, clientSDK, conte
216
217
  const hasLiveQuery = checkLiveQuery(className, config);
217
218
  if (hasTriggers || hasLiveQuery) {
218
219
  // Do not use find, as it runs the before finds
220
+ // Use master auth when protectedFieldsTriggerExempt is true to bypass
221
+ // protectedFields filtering, so triggers see the full original object
222
+ const queryAuth = config.protectedFieldsTriggerExempt ? Auth.master(config) : auth;
219
223
  const query = await RestQuery({
220
224
  method: RestQuery.Method.get,
221
225
  config,
222
- auth,
226
+ auth: queryAuth,
223
227
  className,
224
228
  restWhere,
225
229
  runAfterFind: false,
@@ -257,4 +261,4 @@ module.exports = {
257
261
  get,
258
262
  update
259
263
  };
260
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYXJzZSIsInJlcXVpcmUiLCJSZXN0UXVlcnkiLCJSZXN0V3JpdGUiLCJ0cmlnZ2VycyIsImVuZm9yY2VSb2xlU2VjdXJpdHkiLCJjcmVhdGVTYW5pdGl6ZWRFcnJvciIsImNoZWNrVHJpZ2dlcnMiLCJjbGFzc05hbWUiLCJjb25maWciLCJ0eXBlcyIsInNvbWUiLCJ0cmlnZ2VyVHlwZSIsImdldFRyaWdnZXIiLCJUeXBlcyIsImFwcGxpY2F0aW9uSWQiLCJjaGVja0xpdmVRdWVyeSIsImxpdmVRdWVyeUNvbnRyb2xsZXIiLCJoYXNMaXZlUXVlcnkiLCJydW5GaW5kVHJpZ2dlcnMiLCJhdXRoIiwicmVzdFdoZXJlIiwicmVzdE9wdGlvbnMiLCJjbGllbnRTREsiLCJjb250ZXh0Iiwib3B0aW9ucyIsImlzR2V0IiwiZXhwbGFpbiIsImlzTWFzdGVyIiwiYWxsb3dQdWJsaWNFeHBsYWluIiwiZGF0YWJhc2VPcHRpb25zIiwiRXJyb3IiLCJJTlZBTElEX1FVRVJZIiwicmVzdWx0IiwibWF5YmVSdW5RdWVyeVRyaWdnZXIiLCJiZWZvcmVGaW5kIiwib2JqZWN0cyIsIm9iamVjdHNGcm9tQmVmb3JlRmluZCIsIm9iamVjdHNGb3JBZnRlckZpbmQiLCJpc01haW50ZW5hbmNlIiwiaWRzIiwiQXJyYXkiLCJpc0FycmF5IiwibWFwIiwibyIsImlkIiwib2JqZWN0SWQiLCJmaWx0ZXIiLCJCb29sZWFuIiwibGVuZ3RoIiwicmVmaWx0ZXJXaGVyZSIsIiRpbiIsInJlZmlsdGVyUXVlcnkiLCJtZXRob2QiLCJNZXRob2QiLCJnZXQiLCJmaW5kIiwicnVuQmVmb3JlRmluZCIsInJ1bkFmdGVyRmluZCIsInJlZmlsdGVyZWQiLCJleGVjdXRlIiwicmVzdWx0cyIsImFmdGVyRmluZFByb2Nlc3NlZE9iamVjdHMiLCJtYXliZVJ1bkFmdGVyRmluZFRyaWdnZXIiLCJhZnRlckZpbmQiLCJRdWVyeSIsIndpdGhKU09OIiwid2hlcmUiLCJxdWVyeSIsImRlbCIsIklOVkFMSURfSlNPTiIsImlzVW5hdXRoZW50aWNhdGVkIiwiU0VTU0lPTl9NSVNTSU5HIiwiaW5mbGF0ZWRPYmplY3QiLCJzY2hlbWFDb250cm9sbGVyIiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0aGVuIiwiaGFzVHJpZ2dlcnMiLCJvcCIsInJlc3BvbnNlIiwiZmlyc3RSZXN1bHQiLCJ1c2VyIiwiSU5WQUxJRF9TRVNTSU9OX1RPS0VOIiwiY2FjaGVBZGFwdGVyIiwiY2FjaGVDb250cm9sbGVyIiwic2Vzc2lvblRva2VuIiwiT2JqZWN0IiwiZnJvbUpTT04iLCJtYXliZVJ1blRyaWdnZXIiLCJiZWZvcmVEZWxldGUiLCJPQkpFQ1RfTk9UX0ZPVU5EIiwiZ2V0VXNlclJvbGVzIiwiZGF0YWJhc2UiLCJsb2FkU2NoZW1hIiwicyIsImFjbCIsInB1c2giLCJjb25jYXQiLCJ1c2VyUm9sZXMiLCJkZXN0cm95IiwicGVybXMiLCJnZXRDbGFzc0xldmVsUGVybWlzc2lvbnMiLCJvbkFmdGVyRGVsZXRlIiwiYWZ0ZXJEZWxldGUiLCJjYXRjaCIsImVycm9yIiwiaGFuZGxlU2Vzc2lvbk1pc3NpbmdFcnJvciIsImNyZWF0ZSIsInJlc3RPYmplY3QiLCJ3cml0ZSIsInVwZGF0ZSIsIm9yaWdpbmFsUmVzdE9iamVjdCIsImNvZGUiLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL3Jlc3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBmaWxlIGNvbnRhaW5zIGhlbHBlcnMgZm9yIHJ1bm5pbmcgb3BlcmF0aW9ucyBpbiBSRVNUIGZvcm1hdC5cbi8vIFRoZSBnb2FsIGlzIHRoYXQgaGFuZGxlcnMgdGhhdCBleHBsaWNpdGx5IGhhbmRsZSBhbiBleHByZXNzIHJvdXRlXG4vLyBzaG91bGQganVzdCBiZSBzaGFsbG93IHdyYXBwZXJzIGFyb3VuZCB0aGluZ3MgaW4gdGhpcyBmaWxlLCBidXRcbi8vIHRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgbm90IGV4cGxpY2l0bHkgZGVwZW5kIG9uIHRoZSByZXF1ZXN0XG4vLyBvYmplY3QuXG4vLyBUaGlzIG1lYW5zIHRoYXQgb25lIG9mIHRoZXNlIGhhbmRsZXJzIGNhbiBzdXBwb3J0IG11bHRpcGxlXG4vLyByb3V0ZXMuIFRoYXQncyB1c2VmdWwgZm9yIHRoZSByb3V0ZXMgdGhhdCBkbyByZWFsbHkgc2ltaWxhclxuLy8gdGhpbmdzLlxuXG52YXIgUGFyc2UgPSByZXF1aXJlKCdwYXJzZS9ub2RlJykuUGFyc2U7XG5cbnZhciBSZXN0UXVlcnkgPSByZXF1aXJlKCcuL1Jlc3RRdWVyeScpO1xudmFyIFJlc3RXcml0ZSA9IHJlcXVpcmUoJy4vUmVzdFdyaXRlJyk7XG52YXIgdHJpZ2dlcnMgPSByZXF1aXJlKCcuL3RyaWdnZXJzJyk7XG5jb25zdCB7IGVuZm9yY2VSb2xlU2VjdXJpdHkgfSA9IHJlcXVpcmUoJy4vU2hhcmVkUmVzdCcpO1xuY29uc3QgeyBjcmVhdGVTYW5pdGl6ZWRFcnJvciB9ID0gcmVxdWlyZSgnLi9FcnJvcicpO1xuXG5mdW5jdGlvbiBjaGVja1RyaWdnZXJzKGNsYXNzTmFtZSwgY29uZmlnLCB0eXBlcykge1xuICByZXR1cm4gdHlwZXMuc29tZSh0cmlnZ2VyVHlwZSA9PiB7XG4gICAgcmV0dXJuIHRyaWdnZXJzLmdldFRyaWdnZXIoY2xhc3NOYW1lLCB0cmlnZ2Vycy5UeXBlc1t0cmlnZ2VyVHlwZV0sIGNvbmZpZy5hcHBsaWNhdGlvbklkKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGNoZWNrTGl2ZVF1ZXJ5KGNsYXNzTmFtZSwgY29uZmlnKSB7XG4gIHJldHVybiBjb25maWcubGl2ZVF1ZXJ5Q29udHJvbGxlciAmJiBjb25maWcubGl2ZVF1ZXJ5Q29udHJvbGxlci5oYXNMaXZlUXVlcnkoY2xhc3NOYW1lKTtcbn1cbmFzeW5jIGZ1bmN0aW9uIHJ1bkZpbmRUcmlnZ2VycyhcbiAgY29uZmlnLFxuICBhdXRoLFxuICBjbGFzc05hbWUsXG4gIHJlc3RXaGVyZSxcbiAgcmVzdE9wdGlvbnMsXG4gIGNsaWVudFNESyxcbiAgY29udGV4dCxcbiAgb3B0aW9ucyA9IHt9XG4pIHtcbiAgY29uc3QgeyBpc0dldCB9ID0gb3B0aW9ucztcblxuICBpZiAocmVzdE9wdGlvbnMgJiYgcmVzdE9wdGlvbnMuZXhwbGFpbiAmJiAhYXV0aC5pc01hc3Rlcikge1xuICAgIGNvbnN0IGFsbG93UHVibGljRXhwbGFpbiA9IGNvbmZpZy5kYXRhYmFzZU9wdGlvbnM/LmFsbG93UHVibGljRXhwbGFpbiA/PyBmYWxzZTtcblxuICAgIGlmICghYWxsb3dQdWJsaWNFeHBsYWluKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICAgIFBhcnNlLkVycm9yLklOVkFMSURfUVVFUlksXG4gICAgICAgICdVc2luZyB0aGUgZXhwbGFpbiBxdWVyeSBwYXJhbWV0ZXIgcmVxdWlyZXMgdGhlIG1hc3RlciBrZXknXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJ1biBiZWZvcmVGaW5kIHRyaWdnZXIgLSBtYXkgbW9kaWZ5IHF1ZXJ5IG9yIHJldHVybiBvYmplY3RzIGRpcmVjdGx5XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRyaWdnZXJzLm1heWJlUnVuUXVlcnlUcmlnZ2VyKFxuICAgIHRyaWdnZXJzLlR5cGVzLmJlZm9yZUZpbmQsXG4gICAgY2xhc3NOYW1lLFxuICAgIHJlc3RXaGVyZSxcbiAgICByZXN0T3B0aW9ucyxcbiAgICBjb25maWcsXG4gICAgYXV0aCxcbiAgICBjb250ZXh0LFxuICAgIGlzR2V0XG4gICk7XG5cbiAgcmVzdFdoZXJlID0gcmVzdWx0LnJlc3RXaGVyZSB8fCByZXN0V2hlcmU7XG4gIHJlc3RPcHRpb25zID0gcmVzdWx0LnJlc3RPcHRpb25zIHx8IHJlc3RPcHRpb25zO1xuXG4gIC8vIFNob3J0LWNpcmN1aXQgcGF0aDogYmVmb3JlRmluZCByZXR1cm5lZCBvYmplY3RzIGRpcmVjdGx5XG4gIC8vIFNlY3VyaXR5IHJpc2s6IFRoZXNlIG9iamVjdHMgbWF5IGhhdmUgYmVlbiBmZXRjaGVkIHdpdGggbWFzdGVyIHByaXZpbGVnZXNcbiAgaWYgKHJlc3VsdD8ub2JqZWN0cykge1xuICAgIGNvbnN0IG9iamVjdHNGcm9tQmVmb3JlRmluZCA9IHJlc3VsdC5vYmplY3RzO1xuXG4gICAgbGV0IG9iamVjdHNGb3JBZnRlckZpbmQgPSBvYmplY3RzRnJvbUJlZm9yZUZpbmQ7XG5cbiAgICAvLyBTZWN1cml0eSBjaGVjazogUmUtZmlsdGVyIG9iamVjdHMgaWYgbm90IG1hc3RlciB0byBlbnN1cmUgQUNML0NMUCBjb21wbGlhbmNlXG4gICAgaWYgKCFhdXRoPy5pc01hc3RlciAmJiAhYXV0aD8uaXNNYWludGVuYW5jZSkge1xuICAgICAgY29uc3QgaWRzID0gKEFycmF5LmlzQXJyYXkob2JqZWN0c0Zyb21CZWZvcmVGaW5kKSA/IG9iamVjdHNGcm9tQmVmb3JlRmluZCA6IFtvYmplY3RzRnJvbUJlZm9yZUZpbmRdKVxuICAgICAgICAubWFwKG8gPT4gKG8gJiYgKG8uaWQgfHwgby5vYmplY3RJZCkpIHx8IG51bGwpXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbik7XG5cbiAgICAgIC8vIE9iamVjdHMgd2l0aG91dCBJRHMgYXJlKG5vcm1hbGx5KSB1bnNhdmVkIG9iamVjdHNcbiAgICAgIC8vIEZvciB1bnNhdmVkIG9iamVjdHMsIHRoZSBBQ0wgc2VjdXJpdHkgZG9lcyBub3QgYXBwbHksIHNvIG5vIG5lZWQgdG8gcmVkbyB0aGUgcXVlcnkuXG4gICAgICAvLyBGb3Igc2F2ZWQgb2JqZWN0cywgd2UgbmVlZCB0byByZS1xdWVyeSB0byBlbnN1cmUgcHJvcGVyIEFDTC9DTFAgZW5mb3JjZW1lbnRcbiAgICAgIGlmIChpZHMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCByZWZpbHRlcldoZXJlID0gaXNHZXQgPyB7IG9iamVjdElkOiBpZHNbMF0gfSA6IHsgb2JqZWN0SWQ6IHsgJGluOiBpZHMgfSB9O1xuXG4gICAgICAgIC8vIFJlLXF1ZXJ5IHdpdGggcHJvcGVyIHNlY3VyaXR5OiBubyB0cmlnZ2VycyB0byBhdm9pZCBpbmZpbml0ZSBsb29wc1xuICAgICAgICBjb25zdCByZWZpbHRlclF1ZXJ5ID0gYXdhaXQgUmVzdFF1ZXJ5KHtcbiAgICAgICAgICBtZXRob2Q6IGlzR2V0ID8gUmVzdFF1ZXJ5Lk1ldGhvZC5nZXQgOiBSZXN0UXVlcnkuTWV0aG9kLmZpbmQsXG4gICAgICAgICAgY29uZmlnLFxuICAgICAgICAgIGF1dGgsXG4gICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgIHJlc3RXaGVyZTogcmVmaWx0ZXJXaGVyZSxcbiAgICAgICAgICByZXN0T3B0aW9ucyxcbiAgICAgICAgICBjbGllbnRTREssXG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICBydW5CZWZvcmVGaW5kOiBmYWxzZSxcbiAgICAgICAgICBydW5BZnRlckZpbmQ6IGZhbHNlLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCByZWZpbHRlcmVkID0gYXdhaXQgcmVmaWx0ZXJRdWVyeS5leGVjdXRlKCk7XG4gICAgICAgIG9iamVjdHNGb3JBZnRlckZpbmQgPSAocmVmaWx0ZXJlZCAmJiByZWZpbHRlcmVkLnJlc3VsdHMpIHx8IFtdO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJ1biBhZnRlckZpbmQgdHJpZ2dlciBvbiBzZWN1cml0eS1maWx0ZXJlZCBvYmplY3RzXG4gICAgY29uc3QgYWZ0ZXJGaW5kUHJvY2Vzc2VkT2JqZWN0cyA9IGF3YWl0IHRyaWdnZXJzLm1heWJlUnVuQWZ0ZXJGaW5kVHJpZ2dlcihcbiAgICAgIHRyaWdnZXJzLlR5cGVzLmFmdGVyRmluZCxcbiAgICAgIGF1dGgsXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBvYmplY3RzRm9yQWZ0ZXJGaW5kLFxuICAgICAgY29uZmlnLFxuICAgICAgbmV3IFBhcnNlLlF1ZXJ5KGNsYXNzTmFtZSkud2l0aEpTT04oeyB3aGVyZTogcmVzdFdoZXJlLCAuLi5yZXN0T3B0aW9ucyB9KSxcbiAgICAgIGNvbnRleHQsXG4gICAgICBpc0dldFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcmVzdWx0czogYWZ0ZXJGaW5kUHJvY2Vzc2VkT2JqZWN0cyxcbiAgICB9O1xuICB9XG5cbiAgLy8gTm9ybWFsIHBhdGg6IGV4ZWN1dGUgZGF0YWJhc2UgcXVlcnkgd2l0aCBtb2RpZmllZCBjb25kaXRpb25zXG4gIGNvbnN0IHF1ZXJ5ID0gYXdhaXQgUmVzdFF1ZXJ5KHtcbiAgICBtZXRob2Q6IGlzR2V0ID8gUmVzdFF1ZXJ5Lk1ldGhvZC5nZXQgOiBSZXN0UXVlcnkuTWV0aG9kLmZpbmQsXG4gICAgY29uZmlnLFxuICAgIGF1dGgsXG4gICAgY2xhc3NOYW1lLFxuICAgIHJlc3RXaGVyZSxcbiAgICByZXN0T3B0aW9ucyxcbiAgICBjbGllbnRTREssXG4gICAgY29udGV4dCxcbiAgICBydW5CZWZvcmVGaW5kOiBmYWxzZSxcbiAgfSk7XG5cbiAgcmV0dXJuIHF1ZXJ5LmV4ZWN1dGUoKTtcbn1cblxuLy8gUmV0dXJucyBhIHByb21pc2UgZm9yIGFuIG9iamVjdCB3aXRoIG9wdGlvbmFsIGtleXMgJ3Jlc3VsdHMnIGFuZCAnY291bnQnLlxuY29uc3QgZmluZCA9IGFzeW5jIChjb25maWcsIGF1dGgsIGNsYXNzTmFtZSwgcmVzdFdoZXJlLCByZXN0T3B0aW9ucywgY2xpZW50U0RLLCBjb250ZXh0KSA9PiB7XG4gIGVuZm9yY2VSb2xlU2VjdXJpdHkoJ2ZpbmQnLCBjbGFzc05hbWUsIGF1dGgsIGNvbmZpZyk7XG4gIHJldHVybiBydW5GaW5kVHJpZ2dlcnMoXG4gICAgY29uZmlnLFxuICAgIGF1dGgsXG4gICAgY2xhc3NOYW1lLFxuICAgIHJlc3RXaGVyZSxcbiAgICByZXN0T3B0aW9ucyxcbiAgICBjbGllbnRTREssXG4gICAgY29udGV4dCxcbiAgICB7IGlzR2V0OiBmYWxzZSB9XG4gICk7XG59O1xuXG4vLyBnZXQgaXMganVzdCBsaWtlIGZpbmQgYnV0IG9ubHkgcXVlcmllcyBhbiBvYmplY3RJZC5cbmNvbnN0IGdldCA9IGFzeW5jIChjb25maWcsIGF1dGgsIGNsYXNzTmFtZSwgb2JqZWN0SWQsIHJlc3RPcHRpb25zLCBjbGllbnRTREssIGNvbnRleHQpID0+IHtcbiAgZW5mb3JjZVJvbGVTZWN1cml0eSgnZ2V0JywgY2xhc3NOYW1lLCBhdXRoLCBjb25maWcpO1xuICByZXR1cm4gcnVuRmluZFRyaWdnZXJzKFxuICAgIGNvbmZpZyxcbiAgICBhdXRoLFxuICAgIGNsYXNzTmFtZSxcbiAgICB7IG9iamVjdElkIH0sXG4gICAgcmVzdE9wdGlvbnMsXG4gICAgY2xpZW50U0RLLFxuICAgIGNvbnRleHQsXG4gICAgeyBpc0dldDogdHJ1ZSB9XG4gICk7XG59O1xuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGRvZXNuJ3QgcmVzb2x2ZSB0byBhbnkgdXNlZnVsIHZhbHVlLlxuZnVuY3Rpb24gZGVsKGNvbmZpZywgYXV0aCwgY2xhc3NOYW1lLCBvYmplY3RJZCwgY29udGV4dCkge1xuICBpZiAodHlwZW9mIG9iamVjdElkICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX0pTT04sICdiYWQgb2JqZWN0SWQnKTtcbiAgfVxuXG4gIGlmIChjbGFzc05hbWUgPT09ICdfVXNlcicgJiYgYXV0aC5pc1VuYXV0aGVudGljYXRlZCgpKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLlNFU1NJT05fTUlTU0lORywgJ0luc3VmZmljaWVudCBhdXRoIHRvIGRlbGV0ZSB1c2VyJyk7XG4gIH1cblxuICBlbmZvcmNlUm9sZVNlY3VyaXR5KCdkZWxldGUnLCBjbGFzc05hbWUsIGF1dGgsIGNvbmZpZyk7XG5cbiAgbGV0IGluZmxhdGVkT2JqZWN0O1xuICBsZXQgc2NoZW1hQ29udHJvbGxlcjtcblxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKClcbiAgICAudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBoYXNUcmlnZ2VycyA9IGNoZWNrVHJpZ2dlcnMoY2xhc3NOYW1lLCBjb25maWcsIFsnYmVmb3JlRGVsZXRlJywgJ2FmdGVyRGVsZXRlJ10pO1xuICAgICAgY29uc3QgaGFzTGl2ZVF1ZXJ5ID0gY2hlY2tMaXZlUXVlcnkoY2xhc3NOYW1lLCBjb25maWcpO1xuICAgICAgaWYgKGhhc1RyaWdnZXJzIHx8IGhhc0xpdmVRdWVyeSB8fCBjbGFzc05hbWUgPT0gJ19TZXNzaW9uJykge1xuICAgICAgICBjb25zdCBxdWVyeSA9IGF3YWl0IFJlc3RRdWVyeSh7XG4gICAgICAgICAgbWV0aG9kOiBSZXN0UXVlcnkuTWV0aG9kLmdldCxcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgYXV0aCxcbiAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgcmVzdFdoZXJlOiB7IG9iamVjdElkIH0sXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcXVlcnkuZXhlY3V0ZSh7IG9wOiAnZGVsZXRlJyB9KS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UucmVzdWx0cyAmJiByZXNwb25zZS5yZXN1bHRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgZmlyc3RSZXN1bHQgPSByZXNwb25zZS5yZXN1bHRzWzBdO1xuICAgICAgICAgICAgZmlyc3RSZXN1bHQuY2xhc3NOYW1lID0gY2xhc3NOYW1lO1xuICAgICAgICAgICAgaWYgKGNsYXNzTmFtZSA9PT0gJ19TZXNzaW9uJyAmJiAhYXV0aC5pc01hc3RlciAmJiAhYXV0aC5pc01haW50ZW5hbmNlKSB7XG4gICAgICAgICAgICAgIGlmICghYXV0aC51c2VyIHx8IGZpcnN0UmVzdWx0LnVzZXIub2JqZWN0SWQgIT09IGF1dGgudXNlci5pZCkge1xuICAgICAgICAgICAgICAgIHRocm93IGNyZWF0ZVNhbml0aXplZEVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfU0VTU0lPTl9UT0tFTiwgJ0ludmFsaWQgc2Vzc2lvbiB0b2tlbicsIGNvbmZpZyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBjYWNoZUFkYXB0ZXIgPSBjb25maWcuY2FjaGVDb250cm9sbGVyO1xuICAgICAgICAgICAgY2FjaGVBZGFwdGVyLnVzZXIuZGVsKGZpcnN0UmVzdWx0LnNlc3Npb25Ub2tlbik7XG4gICAgICAgICAgICBpbmZsYXRlZE9iamVjdCA9IFBhcnNlLk9iamVjdC5mcm9tSlNPTihmaXJzdFJlc3VsdCk7XG4gICAgICAgICAgICByZXR1cm4gdHJpZ2dlcnMubWF5YmVSdW5UcmlnZ2VyKFxuICAgICAgICAgICAgICB0cmlnZ2Vycy5UeXBlcy5iZWZvcmVEZWxldGUsXG4gICAgICAgICAgICAgIGF1dGgsXG4gICAgICAgICAgICAgIGluZmxhdGVkT2JqZWN0LFxuICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICAgIGNvbnRleHRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnT2JqZWN0IG5vdCBmb3VuZCBmb3IgZGVsZXRlLicpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO1xuICAgIH0pXG4gICAgLnRoZW4oKCkgPT4ge1xuICAgICAgaWYgKCFhdXRoLmlzTWFzdGVyICYmICFhdXRoLmlzTWFpbnRlbmFuY2UpIHtcbiAgICAgICAgcmV0dXJuIGF1dGguZ2V0VXNlclJvbGVzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSlcbiAgICAudGhlbigoKSA9PiBjb25maWcuZGF0YWJhc2UubG9hZFNjaGVtYSgpKVxuICAgIC50aGVuKHMgPT4ge1xuICAgICAgc2NoZW1hQ29udHJvbGxlciA9IHM7XG4gICAgICBjb25zdCBvcHRpb25zID0ge307XG4gICAgICBpZiAoIWF1dGguaXNNYXN0ZXIgJiYgIWF1dGguaXNNYWludGVuYW5jZSkge1xuICAgICAgICBvcHRpb25zLmFjbCA9IFsnKiddO1xuICAgICAgICBpZiAoYXV0aC51c2VyKSB7XG4gICAgICAgICAgb3B0aW9ucy5hY2wucHVzaChhdXRoLnVzZXIuaWQpO1xuICAgICAgICAgIG9wdGlvbnMuYWNsID0gb3B0aW9ucy5hY2wuY29uY2F0KGF1dGgudXNlclJvbGVzKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29uZmlnLmRhdGFiYXNlLmRlc3Ryb3koXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAge1xuICAgICAgICAgIG9iamVjdElkOiBvYmplY3RJZCxcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgc2NoZW1hQ29udHJvbGxlclxuICAgICAgKTtcbiAgICB9KVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIC8vIE5vdGlmeSBMaXZlUXVlcnkgc2VydmVyIGlmIHBvc3NpYmxlXG4gICAgICBjb25zdCBwZXJtcyA9IHNjaGVtYUNvbnRyb2xsZXIuZ2V0Q2xhc3NMZXZlbFBlcm1pc3Npb25zKGNsYXNzTmFtZSk7XG4gICAgICBjb25maWcubGl2ZVF1ZXJ5Q29udHJvbGxlci5vbkFmdGVyRGVsZXRlKGNsYXNzTmFtZSwgaW5mbGF0ZWRPYmplY3QsIG51bGwsIHBlcm1zKTtcbiAgICAgIHJldHVybiB0cmlnZ2Vycy5tYXliZVJ1blRyaWdnZXIoXG4gICAgICAgIHRyaWdnZXJzLlR5cGVzLmFmdGVyRGVsZXRlLFxuICAgICAgICBhdXRoLFxuICAgICAgICBpbmZsYXRlZE9iamVjdCxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBjb250ZXh0XG4gICAgICApO1xuICAgIH0pXG4gICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgIGhhbmRsZVNlc3Npb25NaXNzaW5nRXJyb3IoZXJyb3IsIGNsYXNzTmFtZSwgYXV0aCwgY29uZmlnKTtcbiAgICB9KTtcbn1cblxuLy8gUmV0dXJucyBhIHByb21pc2UgZm9yIGEge3Jlc3BvbnNlLCBzdGF0dXMsIGxvY2F0aW9ufSBvYmplY3QuXG5mdW5jdGlvbiBjcmVhdGUoY29uZmlnLCBhdXRoLCBjbGFzc05hbWUsIHJlc3RPYmplY3QsIGNsaWVudFNESywgY29udGV4dCkge1xuICBlbmZvcmNlUm9sZVNlY3VyaXR5KCdjcmVhdGUnLCBjbGFzc05hbWUsIGF1dGgsIGNvbmZpZyk7XG4gIHZhciB3cml0ZSA9IG5ldyBSZXN0V3JpdGUoY29uZmlnLCBhdXRoLCBjbGFzc05hbWUsIG51bGwsIHJlc3RPYmplY3QsIG51bGwsIGNsaWVudFNESywgY29udGV4dCk7XG4gIHJldHVybiB3cml0ZS5leGVjdXRlKCk7XG59XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIHRoYXQgY29udGFpbnMgdGhlIGZpZWxkcyBvZiB0aGUgdXBkYXRlIHRoYXQgdGhlXG4vLyBSRVNUIEFQSSBpcyBzdXBwb3NlZCB0byByZXR1cm4uXG4vLyBVc3VhbGx5LCB0aGlzIGlzIGp1c3QgdXBkYXRlZEF0LlxuZnVuY3Rpb24gdXBkYXRlKGNvbmZpZywgYXV0aCwgY2xhc3NOYW1lLCByZXN0V2hlcmUsIHJlc3RPYmplY3QsIGNsaWVudFNESywgY29udGV4dCkge1xuICBlbmZvcmNlUm9sZVNlY3VyaXR5KCd1cGRhdGUnLCBjbGFzc05hbWUsIGF1dGgsIGNvbmZpZyk7XG5cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG4gICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgaGFzVHJpZ2dlcnMgPSBjaGVja1RyaWdnZXJzKGNsYXNzTmFtZSwgY29uZmlnLCBbJ2JlZm9yZVNhdmUnLCAnYWZ0ZXJTYXZlJ10pO1xuICAgICAgY29uc3QgaGFzTGl2ZVF1ZXJ5ID0gY2hlY2tMaXZlUXVlcnkoY2xhc3NOYW1lLCBjb25maWcpO1xuICAgICAgaWYgKGhhc1RyaWdnZXJzIHx8IGhhc0xpdmVRdWVyeSkge1xuICAgICAgICAvLyBEbyBub3QgdXNlIGZpbmQsIGFzIGl0IHJ1bnMgdGhlIGJlZm9yZSBmaW5kc1xuICAgICAgICBjb25zdCBxdWVyeSA9IGF3YWl0IFJlc3RRdWVyeSh7XG4gICAgICAgICAgbWV0aG9kOiBSZXN0UXVlcnkuTWV0aG9kLmdldCxcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgYXV0aCxcbiAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgcmVzdFdoZXJlLFxuICAgICAgICAgIHJ1bkFmdGVyRmluZDogZmFsc2UsXG4gICAgICAgICAgcnVuQmVmb3JlRmluZDogZmFsc2UsXG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBxdWVyeS5leGVjdXRlKHtcbiAgICAgICAgICBvcDogJ3VwZGF0ZScsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7fSk7XG4gICAgfSlcbiAgICAudGhlbigoeyByZXN1bHRzIH0pID0+IHtcbiAgICAgIHZhciBvcmlnaW5hbFJlc3RPYmplY3Q7XG4gICAgICBpZiAocmVzdWx0cyAmJiByZXN1bHRzLmxlbmd0aCkge1xuICAgICAgICBvcmlnaW5hbFJlc3RPYmplY3QgPSByZXN1bHRzWzBdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBSZXN0V3JpdGUoXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgYXV0aCxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICByZXN0V2hlcmUsXG4gICAgICAgIHJlc3RPYmplY3QsXG4gICAgICAgIG9yaWdpbmFsUmVzdE9iamVjdCxcbiAgICAgICAgY2xpZW50U0RLLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICAndXBkYXRlJ1xuICAgICAgKS5leGVjdXRlKCk7XG4gICAgfSlcbiAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgaGFuZGxlU2Vzc2lvbk1pc3NpbmdFcnJvcihlcnJvciwgY2xhc3NOYW1lLCBhdXRoLCBjb25maWcpO1xuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVTZXNzaW9uTWlzc2luZ0Vycm9yKGVycm9yLCBjbGFzc05hbWUsIGF1dGgsIGNvbmZpZykge1xuICAvLyBJZiB3ZSdyZSB0cnlpbmcgdG8gdXBkYXRlIGEgdXNlciB3aXRob3V0IC8gd2l0aCBiYWQgc2Vzc2lvbiB0b2tlblxuICBpZiAoXG4gICAgY2xhc3NOYW1lID09PSAnX1VzZXInICYmXG4gICAgZXJyb3IuY29kZSA9PT0gUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCAmJlxuICAgICFhdXRoLmlzTWFzdGVyICYmXG4gICAgIWF1dGguaXNNYWludGVuYW5jZVxuICApIHtcbiAgICB0aHJvdyBjcmVhdGVTYW5pdGl6ZWRFcnJvcihQYXJzZS5FcnJvci5TRVNTSU9OX01JU1NJTkcsICdJbnN1ZmZpY2llbnQgYXV0aC4nLCBjb25maWcpO1xuICB9XG4gIHRocm93IGVycm9yO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgY3JlYXRlLFxuICBkZWwsXG4gIGZpbmQsXG4gIGdldCxcbiAgdXBkYXRlLFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLElBQUlBLEtBQUssR0FBR0MsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDRCxLQUFLO0FBRXZDLElBQUlFLFNBQVMsR0FBR0QsT0FBTyxDQUFDLGFBQWEsQ0FBQztBQUN0QyxJQUFJRSxTQUFTLEdBQUdGLE9BQU8sQ0FBQyxhQUFhLENBQUM7QUFDdEMsSUFBSUcsUUFBUSxHQUFHSCxPQUFPLENBQUMsWUFBWSxDQUFDO0FBQ3BDLE1BQU07RUFBRUk7QUFBb0IsQ0FBQyxHQUFHSixPQUFPLENBQUMsY0FBYyxDQUFDO0FBQ3ZELE1BQU07RUFBRUs7QUFBcUIsQ0FBQyxHQUFHTCxPQUFPLENBQUMsU0FBUyxDQUFDO0FBRW5ELFNBQVNNLGFBQWFBLENBQUNDLFNBQVMsRUFBRUMsTUFBTSxFQUFFQyxLQUFLLEVBQUU7RUFDL0MsT0FBT0EsS0FBSyxDQUFDQyxJQUFJLENBQUNDLFdB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U0FBUyxDQUFDb0QsTUFBTSxDQUFDQyxHQUFHO1FBQzVCOUMsTUFBTTtRQUNOVyxJQUFJO1FBQ0paLFNBQVM7UUFDVGEsU0FBUztRQUNUcUMsWUFBWSxFQUFFLEtBQUs7UUFDbkJELGFBQWEsRUFBRSxLQUFLO1FBQ3BCakM7TUFDRixDQUFDLENBQUM7TUFDRixPQUFPNEMsS0FBSyxDQUFDUixPQUFPLENBQUM7UUFDbkJtQixFQUFFLEVBQUU7TUFDTixDQUFDLENBQUM7SUFDSjtJQUNBLE9BQU9KLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQzVCLENBQUMsQ0FBQyxDQUNEQyxJQUFJLENBQUMsQ0FBQztJQUFFaEI7RUFBUSxDQUFDLEtBQUs7SUFDckIsSUFBSW1ELGtCQUFrQjtJQUN0QixJQUFJbkQsT0FBTyxJQUFJQSxPQUFPLENBQUNaLE1BQU0sRUFBRTtNQUM3QitELGtCQUFrQixHQUFHbkQsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNqQztJQUNBLE9BQU8sSUFBSTFELFNBQVMsQ0FDbEJNLE1BQU0sRUFDTlcsSUFBSSxFQUNKWixTQUFTLEVBQ1RhLFNBQVMsRUFDVHdGLFVBQVUsRUFDVkcsa0JBQWtCLEVBQ2xCekYsU0FBUyxFQUNUQyxPQUFPLEVBQ1AsUUFDRixDQUFDLENBQUNvQyxPQUFPLENBQUMsQ0FBQztFQUNiLENBQUMsQ0FBQyxDQUNENkMsS0FBSyxDQUFDQyxLQUFLLElBQUk7SUFDZEMseUJBQXlCLENBQUNELEtBQUssRUFBRWxHLFNBQVMsRUFBRVksSUFBSSxFQUFFWCxNQUFNLENBQUM7RUFDM0QsQ0FBQyxDQUFDO0FBQ047QUFFQSxTQUFTa0cseUJBQXlCQSxDQUFDRCxLQUFLLEVBQUVsRyxTQUFTLEVBQUVZLElBQUksRUFBRVgsTUFBTSxFQUFFO0VBQ2pFO0VBQ0EsSUFDRUQsU0FBUyxLQUFLLE9BQU8sSUFDckJrRyxLQUFLLENBQUNPLElBQUksS0FBS2pILEtBQUssQ0FBQytCLEtBQUssQ0FBQzRELGdCQUFnQixJQUMzQyxDQUFDdkUsSUFBSSxDQUFDUSxRQUFRLElBQ2QsQ0FBQ1IsSUFBSSxDQUFDbUIsYUFBYSxFQUNuQjtJQUNBLE1BQU1qQyxvQkFBb0IsQ0FBQ04sS0FBSyxDQUFDK0IsS0FBSyxDQUFDeUMsZUFBZSxFQUFFLG9CQUFvQixFQUFFL0QsTUFBTSxDQUFDO0VBQ3ZGO0VBQ0EsTUFBTWlHLEtBQUs7QUFDYjtBQUVBUSxNQUFNLENBQUNDLE9BQU8sR0FBRztFQUNmUCxNQUFNO0VBQ052QyxHQUFHO0VBQ0hiLElBQUk7RUFDSkQsR0FBRztFQUNId0Q7QUFDRixDQUFDIiwiaWdub3JlTGlzdCI6W119
264
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYXJzZSIsInJlcXVpcmUiLCJSZXN0UXVlcnkiLCJSZXN0V3JpdGUiLCJ0cmlnZ2VycyIsIkF1dGgiLCJlbmZvcmNlUm9sZVNlY3VyaXR5IiwiY3JlYXRlU2FuaXRpemVkRXJyb3IiLCJjaGVja1RyaWdnZXJzIiwiY2xhc3NOYW1lIiwiY29uZmlnIiwidHlwZXMiLCJzb21lIiwidHJpZ2dlclR5cGUiLCJnZXRUcmlnZ2VyIiwiVHlwZXMiLCJhcHBsaWNhdGlvbklkIiwiY2hlY2tMaXZlUXVlcnkiLCJsaXZlUXVlcnlDb250cm9sbGVyIiwiaGFzTGl2ZVF1ZXJ5IiwicnVuRmluZFRyaWdnZXJzIiwiYXV0aCIsInJlc3RXaGVyZSIsInJlc3RPcHRpb25zIiwiY2xpZW50U0RLIiwiY29udGV4dCIsIm9wdGlvbnMiLCJpc0dldCIsImV4cGxhaW4iLCJpc01hc3RlciIsImFsbG93UHVibGljRXhwbGFpbiIsImRhdGFiYXNlT3B0aW9ucyIsIkVycm9yIiwiSU5WQUxJRF9RVUVSWSIsInJlc3VsdCIsIm1heWJlUnVuUXVlcnlUcmlnZ2VyIiwiYmVmb3JlRmluZCIsIm9iamVjdHMiLCJvYmplY3RzRnJvbUJlZm9yZUZpbmQiLCJvYmplY3RzRm9yQWZ0ZXJGaW5kIiwiaXNNYWludGVuYW5jZSIsImlkcyIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsIm8iLCJpZCIsIm9iamVjdElkIiwiZmlsdGVyIiwiQm9vbGVhbiIsImxlbmd0aCIsInJlZmlsdGVyV2hlcmUiLCIkaW4iLCJyZWZpbHRlclF1ZXJ5IiwibWV0aG9kIiwiTWV0aG9kIiwiZ2V0IiwiZmluZCIsInJ1bkJlZm9yZUZpbmQiLCJydW5BZnRlckZpbmQiLCJyZWZpbHRlcmVkIiwiZXhlY3V0ZSIsInJlc3VsdHMiLCJhZnRlckZpbmRQcm9jZXNzZWRPYmplY3RzIiwibWF5YmVSdW5BZnRlckZpbmRUcmlnZ2VyIiwiYWZ0ZXJGaW5kIiwiUXVlcnkiLCJ3aXRoSlNPTiIsIndoZXJlIiwicXVlcnkiLCJkZWwiLCJJTlZBTElEX0pTT04iLCJpc1VuYXV0aGVudGljYXRlZCIsIlNFU1NJT05fTUlTU0lORyIsImluZmxhdGVkT2JqZWN0Iiwic2NoZW1hQ29udHJvbGxlciIsIlByb21pc2UiLCJyZXNvbHZlIiwidGhlbiIsImhhc1RyaWdnZXJzIiwib3AiLCJyZXNwb25zZSIsImZpcnN0UmVzdWx0IiwidXNlciIsIklOVkFMSURfU0VTU0lPTl9UT0tFTiIsImNhY2hlQWRhcHRlciIsImNhY2hlQ29udHJvbGxlciIsInNlc3Npb25Ub2tlbiIsIk9iamVjdCIsImZyb21KU09OIiwibWF5YmVSdW5UcmlnZ2VyIiwiYmVmb3JlRGVsZXRlIiwiT0JKRUNUX05PVF9GT1VORCIsImdldFVzZXJSb2xlcyIsImRhdGFiYXNlIiwibG9hZFNjaGVtYSIsInMiLCJhY2wiLCJwdXNoIiwiY29uY2F0IiwidXNlclJvbGVzIiwiZGVzdHJveSIsInBlcm1zIiwiZ2V0Q2xhc3NMZXZlbFBlcm1pc3Npb25zIiwib25BZnRlckRlbGV0ZSIsImFmdGVyRGVsZXRlIiwiY2F0Y2giLCJlcnJvciIsImhhbmRsZVNlc3Npb25NaXNzaW5nRXJyb3IiLCJjcmVhdGUiLCJyZXN0T2JqZWN0Iiwid3JpdGUiLCJ1cGRhdGUiLCJxdWVyeUF1dGgiLCJwcm90ZWN0ZWRGaWVsZHNUcmlnZ2VyRXhlbXB0IiwibWFzdGVyIiwib3JpZ2luYWxSZXN0T2JqZWN0IiwiY29kZSIsIm1vZHVsZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi9zcmMvcmVzdC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGZpbGUgY29udGFpbnMgaGVscGVycyBmb3IgcnVubmluZyBvcGVyYXRpb25zIGluIFJFU1QgZm9ybWF0LlxuLy8gVGhlIGdvYWwgaXMgdGhhdCBoYW5kbGVycyB0aGF0IGV4cGxpY2l0bHkgaGFuZGxlIGFuIGV4cHJlc3Mgcm91dGVcbi8vIHNob3VsZCBqdXN0IGJlIHNoYWxsb3cgd3JhcHBlcnMgYXJvdW5kIHRoaW5ncyBpbiB0aGlzIGZpbGUsIGJ1dFxuLy8gdGhlc2UgZnVuY3Rpb25zIHNob3VsZCBub3QgZXhwbGljaXRseSBkZXBlbmQgb24gdGhlIHJlcXVlc3Rcbi8vIG9iamVjdC5cbi8vIFRoaXMgbWVhbnMgdGhhdCBvbmUgb2YgdGhlc2UgaGFuZGxlcnMgY2FuIHN1cHBvcnQgbXVsdGlwbGVcbi8vIHJvdXRlcy4gVGhhdCdzIHVzZWZ1bCBmb3IgdGhlIHJvdXRlcyB0aGF0IGRvIHJlYWxseSBzaW1pbGFyXG4vLyB0aGluZ3MuXG5cbnZhciBQYXJzZSA9IHJlcXVpcmUoJ3BhcnNlL25vZGUnKS5QYXJzZTtcblxudmFyIFJlc3RRdWVyeSA9IHJlcXVpcmUoJy4vUmVzdFF1ZXJ5Jyk7XG52YXIgUmVzdFdyaXRlID0gcmVxdWlyZSgnLi9SZXN0V3JpdGUnKTtcbnZhciB0cmlnZ2VycyA9IHJlcXVpcmUoJy4vdHJpZ2dlcnMnKTtcbmNvbnN0IEF1dGggPSByZXF1aXJlKCcuL0F1dGgnKTtcbmNvbnN0IHsgZW5mb3JjZVJvbGVTZWN1cml0eSB9ID0gcmVxdWlyZSgnLi9TaGFyZWRSZXN0Jyk7XG5jb25zdCB7IGNyZWF0ZVNhbml0aXplZEVycm9yIH0gPSByZXF1aXJlKCcuL0Vycm9yJyk7XG5cbmZ1bmN0aW9uIGNoZWNrVHJpZ2dlcnMoY2xhc3NOYW1lLCBjb25maWcsIHR5cGVzKSB7XG4gIHJldHVybiB0eXBlcy5zb21lKHRyaWdnZXJUeXBlID0+IHtcbiAgICByZXR1cm4gdHJpZ2dlcnMuZ2V0VHJpZ2dlcihjbGFzc05hbWUsIHRyaWdnZXJzLlR5cGVzW3RyaWdnZXJUeXBlXSwgY29uZmlnLmFwcGxpY2F0aW9uSWQpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gY2hlY2tMaXZlUXVlcnkoY2xhc3NOYW1lLCBjb25maWcpIHtcbiAgcmV0dXJuIGNvbmZpZy5saXZlUXVlcnlDb250cm9sbGVyICYmIGNvbmZpZy5saXZlUXVlcnlDb250cm9sbGVyLmhhc0xpdmVRdWVyeShjbGFzc05hbWUpO1xufVxuYXN5bmMgZnVuY3Rpb24gcnVuRmluZFRyaWdnZXJzKFxuICBjb25maWcsXG4gIGF1dGgsXG4gIGNsYXNzTmFtZSxcbiAgcmVzdFdoZXJlLFxuICByZXN0T3B0aW9ucyxcbiAgY2xpZW50U0RLLFxuICBjb250ZXh0LFxuICBvcHRpb25zID0ge31cbikge1xuICBjb25zdCB7IGlzR2V0IH0gPSBvcHRpb25zO1xuXG4gIGlmIChyZXN0T3B0aW9ucyAmJiByZXN0T3B0aW9ucy5leHBsYWluICYmICFhdXRoLmlzTWFzdGVyKSB7XG4gICAgY29uc3QgYWxsb3dQdWJsaWNFeHBsYWluID0gY29uZmlnLmRhdGFiYXNlT3B0aW9ucz8uYWxsb3dQdWJsaWNFeHBsYWluID8/IGZhbHNlO1xuXG4gICAgaWYgKCFhbGxvd1B1YmxpY0V4cGxhaW4pIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgICAgUGFyc2UuRXJyb3IuSU5WQUxJRF9RVUVSWSxcbiAgICAgICAgJ1VzaW5nIHRoZSBleHBsYWluIHF1ZXJ5IHBhcmFtZXRlciByZXF1aXJlcyB0aGUgbWFzdGVyIGtleSdcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLy8gUnVuIGJlZm9yZUZpbmQgdHJpZ2dlciAtIG1heSBtb2RpZnkgcXVlcnkgb3IgcmV0dXJuIG9iamVjdHMgZGlyZWN0bHlcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdHJpZ2dlcnMubWF5YmVSdW5RdWVyeVRyaWdnZXIoXG4gICAgdHJpZ2dlcnMuVHlwZXMuYmVmb3JlRmluZCxcbiAgICBjbGFzc05hbWUsXG4gICAgcmVzdFdoZXJlLFxuICAgIHJlc3RPcHRpb25zLFxuICAgIGNvbmZpZyxcbiAgICBhdXRoLFxuICAgIGNvbnRleHQsXG4gICAgaXNHZXRcbiAgKTtcblxuICByZXN0V2hlcmUgPSByZXN1bHQucmVzdFdoZXJlIHx8IHJlc3RXaGVyZTtcbiAgcmVzdE9wdGlvbnMgPSByZXN1bHQucmVzdE9wdGlvbnMgfHwgcmVzdE9wdGlvbnM7XG5cbiAgLy8gU2hvcnQtY2lyY3VpdCBwYXRoOiBiZWZvcmVGaW5kIHJldHVybmVkIG9iamVjdHMgZGlyZWN0bHlcbiAgLy8gU2VjdXJpdHkgcmlzazogVGhlc2Ugb2JqZWN0cyBtYXkgaGF2ZSBiZWVuIGZldGNoZWQgd2l0aCBtYXN0ZXIgcHJpdmlsZWdlc1xuICBpZiAocmVzdWx0Py5vYmplY3RzKSB7XG4gICAgY29uc3Qgb2JqZWN0c0Zyb21CZWZvcmVGaW5kID0gcmVzdWx0Lm9iamVjdHM7XG5cbiAgICBsZXQgb2JqZWN0c0ZvckFmdGVyRmluZCA9IG9iamVjdHNGcm9tQmVmb3JlRmluZDtcblxuICAgIC8vIFNlY3VyaXR5IGNoZWNrOiBSZS1maWx0ZXIgb2JqZWN0cyBpZiBub3QgbWFzdGVyIHRvIGVuc3VyZSBBQ0wvQ0xQIGNvbXBsaWFuY2VcbiAgICBpZiAoIWF1dGg/LmlzTWFzdGVyICYmICFhdXRoPy5pc01haW50ZW5hbmNlKSB7XG4gICAgICBjb25zdCBpZHMgPSAoQXJyYXkuaXNBcnJheShvYmplY3RzRnJvbUJlZm9yZUZpbmQpID8gb2JqZWN0c0Zyb21CZWZvcmVGaW5kIDogW29iamVjdHNGcm9tQmVmb3JlRmluZF0pXG4gICAgICAgIC5tYXAobyA9PiAobyAmJiAoby5pZCB8fCBvLm9iamVjdElkKSkgfHwgbnVsbClcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKTtcblxuICAgICAgLy8gT2JqZWN0cyB3aXRob3V0IElEcyBhcmUobm9ybWFsbHkpIHVuc2F2ZWQgb2JqZWN0c1xuICAgICAgLy8gRm9yIHVuc2F2ZWQgb2JqZWN0cywgdGhlIEFDTCBzZWN1cml0eSBkb2VzIG5vdCBhcHBseSwgc28gbm8gbmVlZCB0byByZWRvIHRoZSBxdWVyeS5cbiAgICAgIC8vIEZvciBzYXZlZCBvYmplY3RzLCB3ZSBuZWVkIHRvIHJlLXF1ZXJ5IHRvIGVuc3VyZSBwcm9wZXIgQUNML0NMUCBlbmZvcmNlbWVudFxuICAgICAgaWYgKGlkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHJlZmlsdGVyV2hlcmUgPSBpc0dldCA/IHsgb2JqZWN0SWQ6IGlkc1swXSB9IDogeyBvYmplY3RJZDogeyAkaW46IGlkcyB9IH07XG5cbiAgICAgICAgLy8gUmUtcXVlcnkgd2l0aCBwcm9wZXIgc2VjdXJpdHk6IG5vIHRyaWdnZXJzIHRvIGF2b2lkIGluZmluaXRlIGxvb3BzXG4gICAgICAgIGNvbnN0IHJlZmlsdGVyUXVlcnkgPSBhd2FpdCBSZXN0UXVlcnkoe1xuICAgICAgICAgIG1ldGhvZDogaXNHZXQgPyBSZXN0UXVlcnkuTWV0aG9kLmdldCA6IFJlc3RRdWVyeS5NZXRob2QuZmluZCxcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgYXV0aCxcbiAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgcmVzdFdoZXJlOiByZWZpbHRlcldoZXJlLFxuICAgICAgICAgIHJlc3RPcHRpb25zLFxuICAgICAgICAgIGNsaWVudFNESyxcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIHJ1bkJlZm9yZUZpbmQ6IGZhbHNlLFxuICAgICAgICAgIHJ1bkFmdGVyRmluZDogZmFsc2UsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHJlZmlsdGVyZWQgPSBhd2FpdCByZWZpbHRlclF1ZXJ5LmV4ZWN1dGUoKTtcbiAgICAgICAgb2JqZWN0c0ZvckFmdGVyRmluZCA9IChyZWZpbHRlcmVkICYmIHJlZmlsdGVyZWQucmVzdWx0cykgfHwgW107XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUnVuIGFmdGVyRmluZCB0cmlnZ2VyIG9uIHNlY3VyaXR5LWZpbHRlcmVkIG9iamVjdHNcbiAgICBjb25zdCBhZnRlckZpbmRQcm9jZXNzZWRPYmplY3RzID0gYXdhaXQgdHJpZ2dlcnMubWF5YmVSdW5BZnRlckZpbmRUcmlnZ2VyKFxuICAgICAgdHJpZ2dlcnMuVHlwZXMuYWZ0ZXJGaW5kLFxuICAgICAgYXV0aCxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIG9iamVjdHNGb3JBZnRlckZpbmQsXG4gICAgICBjb25maWcsXG4gICAgICBuZXcgUGFyc2UuUXVlcnkoY2xhc3NOYW1lKS53aXRoSlNPTih7IHdoZXJlOiByZXN0V2hlcmUsIC4uLnJlc3RPcHRpb25zIH0pLFxuICAgICAgY29udGV4dCxcbiAgICAgIGlzR2V0XG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICByZXN1bHRzOiBhZnRlckZpbmRQcm9jZXNzZWRPYmplY3RzLFxuICAgIH07XG4gIH1cblxuICAvLyBOb3JtYWwgcGF0aDogZXhlY3V0ZSBkYXRhYmFzZSBxdWVyeSB3aXRoIG1vZGlmaWVkIGNvbmRpdGlvbnNcbiAgY29uc3QgcXVlcnkgPSBhd2FpdCBSZXN0UXVlcnkoe1xuICAgIG1ldGhvZDogaXNHZXQgPyBSZXN0UXVlcnkuTWV0aG9kLmdldCA6IFJlc3RRdWVyeS5NZXRob2QuZmluZCxcbiAgICBjb25maWcsXG4gICAgYXV0aCxcbiAgICBjbGFzc05hbWUsXG4gICAgcmVzdFdoZXJlLFxuICAgIHJlc3RPcHRpb25zLFxuICAgIGNsaWVudFNESyxcbiAgICBjb250ZXh0LFxuICAgIHJ1bkJlZm9yZUZpbmQ6IGZhbHNlLFxuICB9KTtcblxuICByZXR1cm4gcXVlcnkuZXhlY3V0ZSgpO1xufVxuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSBmb3IgYW4gb2JqZWN0IHdpdGggb3B0aW9uYWwga2V5cyAncmVzdWx0cycgYW5kICdjb3VudCcuXG5jb25zdCBmaW5kID0gYXN5bmMgKGNvbmZpZywgYXV0aCwgY2xhc3NOYW1lLCByZXN0V2hlcmUsIHJlc3RPcHRpb25zLCBjbGllbnRTREssIGNvbnRleHQpID0+IHtcbiAgZW5mb3JjZVJvbGVTZWN1cml0eSgnZmluZCcsIGNsYXNzTmFtZSwgYXV0aCwgY29uZmlnKTtcbiAgcmV0dXJuIHJ1bkZpbmRUcmlnZ2VycyhcbiAgICBjb25maWcsXG4gICAgYXV0aCxcbiAgICBjbGFzc05hbWUsXG4gICAgcmVzdFdoZXJlLFxuICAgIHJlc3RPcHRpb25zLFxuICAgIGNsaWVudFNESyxcbiAgICBjb250ZXh0LFxuICAgIHsgaXNHZXQ6IGZhbHNlIH1cbiAgKTtcbn07XG5cbi8vIGdldCBpcyBqdXN0IGxpa2UgZmluZCBidXQgb25seSBxdWVyaWVzIGFuIG9iamVjdElkLlxuY29uc3QgZ2V0ID0gYXN5bmMgKGNvbmZpZywgYXV0aCwgY2xhc3NOYW1lLCBvYmplY3RJZCwgcmVzdE9wdGlvbnMsIGNsaWVudFNESywgY29udGV4dCkgPT4ge1xuICBlbmZvcmNlUm9sZVNlY3VyaXR5KCdnZXQnLCBjbGFzc05hbWUsIGF1dGgsIGNvbmZpZyk7XG4gIHJldHVybiBydW5GaW5kVHJpZ2dlcnMoXG4gICAgY29uZmlnLFxuICAgIGF1dGgsXG4gICAgY2xhc3NOYW1lLFxuICAgIHsgb2JqZWN0SWQgfSxcbiAgICByZXN0T3B0aW9ucyxcbiAgICBjbGllbnRTREssXG4gICAgY29udGV4dCxcbiAgICB7IGlzR2V0OiB0cnVlIH1cbiAgKTtcbn07XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIHRoYXQgZG9lc24ndCByZXNvbHZlIHRvIGFueSB1c2VmdWwgdmFsdWUuXG5mdW5jdGlvbiBkZWwoY29uZmlnLCBhdXRoLCBjbGFzc05hbWUsIG9iamVjdElkLCBjb250ZXh0KSB7XG4gIGlmICh0eXBlb2Ygb2JqZWN0SWQgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfSlNPTiwgJ2JhZCBvYmplY3RJZCcpO1xuICB9XG5cbiAgaWYgKGNsYXNzTmFtZSA9PT0gJ19Vc2VyJyAmJiBhdXRoLmlzVW5hdXRoZW50aWNhdGVkKCkpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuU0VTU0lPTl9NSVNTSU5HLCAnSW5zdWZmaWNpZW50IGF1dGggdG8gZGVsZXRlIHVzZXInKTtcbiAgfVxuXG4gIGVuZm9yY2VSb2xlU2VjdXJpdHkoJ2RlbGV0ZScsIGNsYXNzTmFtZSwgYXV0aCwgY29uZmlnKTtcblxuICBsZXQgaW5mbGF0ZWRPYmplY3Q7XG4gIGxldCBzY2hlbWFDb250cm9sbGVyO1xuXG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoKVxuICAgIC50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGhhc1RyaWdnZXJzID0gY2hlY2tUcmlnZ2VycyhjbGFzc05hbWUsIGNvbmZpZywgWydiZWZvcmVEZWxldGUnLCAnYWZ0ZXJEZWxldGUnXSk7XG4gICAgICBjb25zdCBoYXNMaXZlUXVlcnkgPSBjaGVja0xpdmVRdWVyeShjbGFzc05hbWUsIGNvbmZpZyk7XG4gICAgICBpZiAoaGFzVHJpZ2dlcnMgfHwgaGFzTGl2ZVF1ZXJ5IHx8IGNsYXNzTmFtZSA9PSAnX1Nlc3Npb24nKSB7XG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0gYXdhaXQgUmVzdFF1ZXJ5KHtcbiAgICAgICAgICBtZXRob2Q6IFJlc3RRdWVyeS5NZXRob2QuZ2V0LFxuICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICBhdXRoLFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICByZXN0V2hlcmU6IHsgb2JqZWN0SWQgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBxdWVyeS5leGVjdXRlKHsgb3A6ICdkZWxldGUnIH0pLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5yZXN1bHRzICYmIHJlc3BvbnNlLnJlc3VsdHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdFJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdHNbMF07XG4gICAgICAgICAgICBmaXJzdFJlc3VsdC5jbGFzc05hbWUgPSBjbGFzc05hbWU7XG4gICAgICAgICAgICBpZiAoY2xhc3NOYW1lID09PSAnX1Nlc3Npb24nICYmICFhdXRoLmlzTWFzdGVyICYmICFhdXRoLmlzTWFpbnRlbmFuY2UpIHtcbiAgICAgICAgICAgICAgaWYgKCFhdXRoLnVzZXIgfHwgZmlyc3RSZXN1bHQudXNlci5vYmplY3RJZCAhPT0gYXV0aC51c2VyLmlkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgY3JlYXRlU2FuaXRpemVkRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9TRVNTSU9OX1RPS0VOLCAnSW52YWxpZCBzZXNzaW9uIHRva2VuJywgY29uZmlnKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGNhY2hlQWRhcHRlciA9IGNvbmZpZy5jYWNoZUNvbnRyb2xsZXI7XG4gICAgICAgICAgICBjYWNoZUFkYXB0ZXIudXNlci5kZWwoZmlyc3RSZXN1bHQuc2Vzc2lvblRva2VuKTtcbiAgICAgICAgICAgIGluZmxhdGVkT2JqZWN0ID0gUGFyc2UuT2JqZWN0LmZyb21KU09OKGZpcnN0UmVzdWx0KTtcbiAgICAgICAgICAgIHJldHVybiB0cmlnZ2Vycy5tYXliZVJ1blRyaWdnZXIoXG4gICAgICAgICAgICAgIHRyaWdnZXJzLlR5cGVzLmJlZm9yZURlbGV0ZSxcbiAgICAgICAgICAgICAgYXV0aCxcbiAgICAgICAgICAgICAgaW5mbGF0ZWRPYmplY3QsXG4gICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgICAgY29udGV4dFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsICdPYmplY3Qgbm90IGZvdW5kIGZvciBkZWxldGUuJyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7fSk7XG4gICAgfSlcbiAgICAudGhlbigoKSA9PiB7XG4gICAgICBpZiAoIWF1dGguaXNNYXN0ZXIgJiYgIWF1dGguaXNNYWludGVuYW5jZSkge1xuICAgICAgICByZXR1cm4gYXV0aC5nZXRVc2VyUm9sZXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9KVxuICAgIC50aGVuKCgpID0+IGNvbmZpZy5kYXRhYmFzZS5sb2FkU2NoZW1hKCkpXG4gICAgLnRoZW4ocyA9PiB7XG4gICAgICBzY2hlbWFDb250cm9sbGVyID0gcztcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7fTtcbiAgICAgIGlmICghYXV0aC5pc01hc3RlciAmJiAhYXV0aC5pc01haW50ZW5hbmNlKSB7XG4gICAgICAgIG9wdGlvbnMuYWNsID0gWycqJ107XG4gICAgICAgIGlmIChhdXRoLnVzZXIpIHtcbiAgICAgICAgICBvcHRpb25zLmFjbC5wdXNoKGF1dGgudXNlci5pZCk7XG4gICAgICAgICAgb3B0aW9ucy5hY2wgPSBvcHRpb25zLmFjbC5jb25jYXQoYXV0aC51c2VyUm9sZXMpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb25maWcuZGF0YWJhc2UuZGVzdHJveShcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICB7XG4gICAgICAgICAgb2JqZWN0SWQ6IG9iamVjdElkLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICBzY2hlbWFDb250cm9sbGVyXG4gICAgICApO1xuICAgIH0pXG4gICAgLnRoZW4oKCkgPT4ge1xuICAgICAgLy8gTm90aWZ5IExpdmVRdWVyeSBzZXJ2ZXIgaWYgcG9zc2libGVcbiAgICAgIGNvbnN0IHBlcm1zID0gc2NoZW1hQ29udHJvbGxlci5nZXRDbGFzc0xldmVsUGVybWlzc2lvbnMoY2xhc3NOYW1lKTtcbiAgICAgIGNvbmZpZy5saXZlUXVlcnlDb250cm9sbGVyLm9uQWZ0ZXJEZWxldGUoY2xhc3NOYW1lLCBpbmZsYXRlZE9iamVjdCwgbnVsbCwgcGVybXMpO1xuICAgICAgcmV0dXJuIHRyaWdnZXJzLm1heWJlUnVuVHJpZ2dlcihcbiAgICAgICAgdHJpZ2dlcnMuVHlwZXMuYWZ0ZXJEZWxldGUsXG4gICAgICAgIGF1dGgsXG4gICAgICAgIGluZmxhdGVkT2JqZWN0LFxuICAgICAgICBudWxsLFxuICAgICAgICBjb25maWcsXG4gICAgICAgIGNvbnRleHRcbiAgICAgICk7XG4gICAgfSlcbiAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgaGFuZGxlU2Vzc2lvbk1pc3NpbmdFcnJvcihlcnJvciwgY2xhc3NOYW1lLCBhdXRoLCBjb25maWcpO1xuICAgIH0pO1xufVxuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSBmb3IgYSB7cmVzcG9uc2UsIHN0YXR1cywgbG9jYXRpb259IG9iamVjdC5cbmZ1bmN0aW9uIGNyZWF0ZShjb25maWcsIGF1dGgsIGNsYXNzTmFtZSwgcmVzdE9iamVjdCwgY2xpZW50U0RLLCBjb250ZXh0KSB7XG4gIGVuZm9yY2VSb2xlU2VjdXJpdHkoJ2NyZWF0ZScsIGNsYXNzTmFtZSwgYXV0aCwgY29uZmlnKTtcbiAgdmFyIHdyaXRlID0gbmV3IFJlc3RXcml0ZShjb25maWcsIGF1dGgsIGNsYXNzTmFtZSwgbnVsbCwgcmVzdE9iamVjdCwgbnVsbCwgY2xpZW50U0RLLCBjb250ZXh0KTtcbiAgcmV0dXJuIHdyaXRlLmV4ZWN1dGUoKTtcbn1cblxuLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCBjb250YWlucyB0aGUgZmllbGRzIG9mIHRoZSB1cGRhdGUgdGhhdCB0aGVcbi8vIFJFU1QgQVBJIGlzIHN1cHBvc2VkIHRvIHJldHVybi5cbi8vIFVzdWFsbHksIHRoaXMgaXMganVzdCB1cGRhdGVkQXQuXG5mdW5jdGlvbiB1cGRhdGUoY29uZmlnLCBhdXRoLCBjbGFzc05hbWUsIHJlc3RXaGVyZSwgcmVzdE9iamVjdCwgY2xpZW50U0RLLCBjb250ZXh0KSB7XG4gIGVuZm9yY2VSb2xlU2VjdXJpdHkoJ3VwZGF0ZScsIGNsYXNzTmFtZSwgYXV0aCwgY29uZmlnKTtcblxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKClcbiAgICAudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBoYXNUcmlnZ2VycyA9IGNoZWNrVHJpZ2dlcnMoY2xhc3NOYW1lLCBjb25maWcsIFsnYmVmb3JlU2F2ZScsICdhZnRlclNhdmUnXSk7XG4gICAgICBjb25zdCBoYXNMaXZlUXVlcnkgPSBjaGVja0xpdmVRdWVyeShjbGFzc05hbWUsIGNvbmZpZyk7XG4gICAgICBpZiAoaGFzVHJpZ2dlcnMgfHwgaGFzTGl2ZVF1ZXJ5KSB7XG4gICAgICAgIC8vIERvIG5vdCB1c2UgZmluZCwgYXMgaXQgcnVucyB0aGUgYmVmb3JlIGZpbmRzXG4gICAgICAgIC8vIFVzZSBtYXN0ZXIgYXV0aCB3aGVuIHByb3RlY3RlZEZpZWxkc1RyaWdnZXJFeGVtcHQgaXMgdHJ1ZSB0byBieXBhc3NcbiAgICAgICAgLy8gcHJvdGVjdGVkRmllbGRzIGZpbHRlcmluZywgc28gdHJpZ2dlcnMgc2VlIHRoZSBmdWxsIG9yaWdpbmFsIG9iamVjdFxuICAgICAgICBjb25zdCBxdWVyeUF1dGggPSBjb25maWcucHJvdGVjdGVkRmllbGRzVHJpZ2dlckV4ZW1wdCA/IEF1dGgubWFzdGVyKGNvbmZpZykgOiBhdXRoO1xuICAgICAgICBjb25zdCBxdWVyeSA9IGF3YWl0IFJlc3RRdWVyeSh7XG4gICAgICAgICAgbWV0aG9kOiBSZXN0UXVlcnkuTWV0aG9kLmdldCxcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgYXV0aDogcXVlcnlBdXRoLFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICByZXN0V2hlcmUsXG4gICAgICAgICAgcnVuQWZ0ZXJGaW5kOiBmYWxzZSxcbiAgICAgICAgICBydW5CZWZvcmVGaW5kOiBmYWxzZSxcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHF1ZXJ5LmV4ZWN1dGUoe1xuICAgICAgICAgIG9wOiAndXBkYXRlJyxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9KTtcbiAgICB9KVxuICAgIC50aGVuKCh7IHJlc3VsdHMgfSkgPT4ge1xuICAgICAgdmFyIG9yaWdpbmFsUmVzdE9iamVjdDtcbiAgICAgIGlmIChyZXN1bHRzICYmIHJlc3VsdHMubGVuZ3RoKSB7XG4gICAgICAgIG9yaWdpbmFsUmVzdE9iamVjdCA9IHJlc3VsdHNbMF07XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IFJlc3RXcml0ZShcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBhdXRoLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgIHJlc3RXaGVyZSxcbiAgICAgICAgcmVzdE9iamVjdCxcbiAgICAgICAgb3JpZ2luYWxSZXN0T2JqZWN0LFxuICAgICAgICBjbGllbnRTREssXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgICd1cGRhdGUnXG4gICAgICApLmV4ZWN1dGUoKTtcbiAgICB9KVxuICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICBoYW5kbGVTZXNzaW9uTWlzc2luZ0Vycm9yKGVycm9yLCBjbGFzc05hbWUsIGF1dGgsIGNvbmZpZyk7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZVNlc3Npb25NaXNzaW5nRXJyb3IoZXJyb3IsIGNsYXNzTmFtZSwgYXV0aCwgY29uZmlnKSB7XG4gIC8vIElmIHdlJ3JlIHRyeWluZyB0byB1cGRhdGUgYSB1c2VyIHdpdGhvdXQgLyB3aXRoIGJhZCBzZXNzaW9uIHRva2VuXG4gIGlmIChcbiAgICBjbGFzc05hbWUgPT09ICdfVXNlcicgJiZcbiAgICBlcnJvci5jb2RlID09PSBQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5EICYmXG4gICAgIWF1dGguaXNNYXN0ZXIgJiZcbiAgICAhYXV0aC5pc01haW50ZW5hbmNlXG4gICkge1xuICAgIHRocm93IGNyZWF0ZVNhbml0aXplZEVycm9yKFBhcnNlLkVycm9yLlNFU1NJT05fTUlTU0lORywgJ0luc3VmZmljaWVudCBhdXRoLicsIGNvbmZpZyk7XG4gIH1cbiAgdGhyb3cgZXJyb3I7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBjcmVhdGUsXG4gIGRlbCxcbiAgZmluZCxcbiAgZ2V0LFxuICB1cGRhdGUsXG59O1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsSUFBSUEsS0FBSyxHQUFHQyxPQUFP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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "parse-server",
3
- "version": "9.6.1",
3
+ "version": "9.7.0-alpha.2",
4
4
  "description": "An express module providing a Parse-compatible API server",
5
5
  "main": "lib/index.js",
6
6
  "repository": {
@@ -53,7 +53,7 @@
53
53
  "pg-promise": "12.6.0",
54
54
  "pluralize": "8.0.0",
55
55
  "punycode": "2.3.1",
56
- "rate-limit-redis": "4.2.0",
56
+ "rate-limit-redis": "4.3.1",
57
57
  "redis": "5.10.0",
58
58
  "semver": "7.7.2",
59
59
  "tv4": "1.3.0",