@cloudbase/storage 2.0.0-alpha.4 → 2.0.1-alpha.0

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/dist/cjs/index.js CHANGED
@@ -1,4 +1,15 @@
1
1
  "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
2
13
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
14
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
15
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -56,25 +67,54 @@ var CloudbaseStorage = (function () {
56
67
  }
57
68
  CloudbaseStorage.prototype.uploadFile = function (params, callback) {
58
69
  return __awaiter(this, void 0, void 0, function () {
59
- var cloudPath, filePath, onUploadProgress, action, request, metaData, _a, url, authorization, token, fileId, cosFileId, download_url, requestId, data, res;
60
- return __generator(this, function (_b) {
61
- switch (_b.label) {
70
+ var cloudPath, filePath, onUploadProgress, _a, method, _b, headers, uploadMethod, action, request, metaDataParam, metaData, _c, url, authorization, token, fileId, cosFileId, download_url, requestId, res, data, res;
71
+ return __generator(this, function (_d) {
72
+ switch (_d.label) {
62
73
  case 0:
63
- cloudPath = params.cloudPath, filePath = params.filePath, onUploadProgress = params.onUploadProgress;
74
+ cloudPath = params.cloudPath, filePath = params.filePath, onUploadProgress = params.onUploadProgress, _a = params.method, method = _a === void 0 ? 'put' : _a, _b = params.headers, headers = _b === void 0 ? {} : _b;
64
75
  if (!isString(cloudPath) || !filePath) {
65
76
  throw new Error(JSON.stringify({
66
77
  code: ERRORS.INVALID_PARAMS,
67
78
  msg: "[" + COMPONENT_NAME + ".uploadFile] invalid params"
68
79
  }));
69
80
  }
81
+ uploadMethod = { put: 'put', post: 'post' }[method.toLocaleLowerCase()] || 'put';
70
82
  action = 'storage.getUploadMetadata';
71
83
  request = this.request;
72
- return [4, request.send(action, {
73
- path: cloudPath
74
- })];
84
+ metaDataParam = {
85
+ path: cloudPath,
86
+ method: uploadMethod,
87
+ };
88
+ if (uploadMethod === 'put') {
89
+ metaDataParam["headers"] = headers;
90
+ }
91
+ return [4, request.send(action, metaDataParam)];
75
92
  case 1:
76
- metaData = _b.sent();
77
- _a = metaData.data, url = _a.url, authorization = _a.authorization, token = _a.token, fileId = _a.fileId, cosFileId = _a.cosFileId, download_url = _a.download_url, requestId = metaData.requestId;
93
+ metaData = _d.sent();
94
+ _c = metaData.data, url = _c.url, authorization = _c.authorization, token = _c.token, fileId = _c.fileId, cosFileId = _c.cosFileId, download_url = _c.download_url, requestId = metaData.requestId;
95
+ if (!(uploadMethod === 'put')) return [3, 3];
96
+ return [4, request.upload({
97
+ url: url,
98
+ method: 'put',
99
+ headers: __assign(__assign({}, headers), { authorization: authorization, 'x-cos-meta-fileid': cosFileId, 'x-cos-security-token': token }),
100
+ file: filePath,
101
+ name: cloudPath,
102
+ onUploadProgress: onUploadProgress
103
+ })];
104
+ case 2:
105
+ res = _d.sent();
106
+ if (res.statusCode === 200) {
107
+ return [2, execCallback(callback, null, {
108
+ fileID: fileId,
109
+ download_url: download_url,
110
+ requestId: requestId
111
+ })];
112
+ }
113
+ else {
114
+ return [2, execCallback(callback, new Error("[" + getSdkName() + "][" + ERRORS.OPERATION_FAIL + "][" + COMPONENT_NAME + "]:" + res.data))];
115
+ }
116
+ return [3, 5];
117
+ case 3:
78
118
  data = {
79
119
  key: cloudPath,
80
120
  signature: authorization,
@@ -89,8 +129,8 @@ var CloudbaseStorage = (function () {
89
129
  name: cloudPath,
90
130
  onUploadProgress: onUploadProgress
91
131
  })];
92
- case 2:
93
- res = _b.sent();
132
+ case 4:
133
+ res = _d.sent();
94
134
  if (res.statusCode === 201) {
95
135
  return [2, execCallback(callback, null, {
96
136
  fileID: fileId,
@@ -101,7 +141,8 @@ var CloudbaseStorage = (function () {
101
141
  else {
102
142
  return [2, execCallback(callback, new Error("[" + getSdkName() + "][" + ERRORS.OPERATION_FAIL + "][" + COMPONENT_NAME + "]:" + res.data))];
103
143
  }
104
- return [2];
144
+ _d.label = 5;
145
+ case 5: return [2];
105
146
  }
106
147
  });
107
148
  });
@@ -391,4 +432,4 @@ function registerStorage(app) {
391
432
  }
392
433
  }
393
434
  exports.registerStorage = registerStorage;
394
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsa0RBQWlFO0FBbUJ6RCxJQUFBLFVBQVUsR0FBaUMscUJBQVMsV0FBMUMsRUFBRSxNQUFNLEdBQXlCLHFCQUFTLE9BQWxDLEVBQUUsa0JBQWtCLEdBQUsscUJBQVMsbUJBQWQsQ0FBZTtBQUNyRCxJQUFBLE9BQU8sR0FBNEMsaUJBQUssUUFBakQsRUFBRSxRQUFRLEdBQWtDLGlCQUFLLFNBQXZDLEVBQUUsYUFBYSxHQUFtQixpQkFBSyxjQUF4QixFQUFFLFlBQVksR0FBSyxpQkFBSyxhQUFWLENBQVc7QUFDekQsSUFBQSxvQkFBb0IsR0FBSyxtQkFBTyxxQkFBWixDQUFhO0FBRXpDLElBQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQztBQUVqQztJQUFBO0lBOFFBLENBQUM7SUEvUGMscUNBQVUsR0FBdkIsVUFDRSxNQUFrQyxFQUNsQyxRQUFtQjs7Ozs7O3dCQUVYLFNBQVMsR0FBaUMsTUFBTSxVQUF2QyxFQUFFLFFBQVEsR0FBdUIsTUFBTSxTQUE3QixFQUFFLGdCQUFnQixHQUFLLE1BQU0saUJBQVgsQ0FBWTt3QkFDekQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTs0QkFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO2dDQUM3QixJQUFJLEVBQUUsTUFBTSxDQUFDLGNBQWM7Z0NBQzNCLEdBQUcsRUFBRSxNQUFJLGNBQWMsZ0NBQTZCOzZCQUNyRCxDQUFDLENBQUMsQ0FBQzt5QkFDTDt3QkFDSyxNQUFNLEdBQUcsMkJBQTJCLENBQUM7d0JBRXJDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO3dCQUNlLFdBQU0sT0FBTyxDQUFDLElBQUksQ0FB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QUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2pCO0FBQ0gsQ0FBQztBQU5ELDBDQU1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29uc3RhbnRzLCB1dGlscywgaGVscGVycyB9IGZyb20gJ0BjbG91ZGJhc2UvdXRpbGl0aWVzJztcbmltcG9ydCB7IElDbG91ZGJhc2UgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzJztcbmltcG9ydCB7IElDbG91ZGJhc2VDb21wb25lbnQgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzL2NvbXBvbmVudCc7XG5pbXBvcnQge1xuICBJQ2xvdWRiYXNlRmlsZU1ldGFEYXRhUmVzLFxuICBJQ2xvdWRiYXNlRmlsZUluZm8sXG4gIElDbG91ZGJhc2VVcGxvYWRGaWxlUGFyYW1zLFxuICBJQ2xvdWRiYXNlVXBsb2FkRmlsZVJlc3VsdCxcbiAgSUNsb3VkYmFzZUdldFVwbG9hZE1ldGFkYXRhUGFyYW1zLFxuICBJQ2xvdWRiYXNlRGVsZXRlRmlsZVBhcmFtcyxcbiAgSUNsb3VkYmFzZURlbGV0ZUZpbGVSZXN1bHQsXG4gIElDbG91ZGJhc2VHZXRUZW1wRmlsZVVSTFJlc3VsdCxcbiAgSUNsb3VkYmFzZUdldFRlbXBGaWxlVVJMUGFyYW1zLFxuICBJQ2xvdWRiYXNlRG93bmxvYWRGaWxlUmVzdWx0LFxuICBJQ2xvdWRiYXNlRG93bmxvYWRGaWxlUGFyYW1zXG59IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMvc3RvcmFnZSc7XG5cbmRlY2xhcmUgY29uc3QgY2xvdWRiYXNlOiBJQ2xvdWRiYXNlO1xuXG5jb25zdCB7IGdldFNka05hbWUsIEVSUk9SUywgQ09NTVVOSVRZX1NJVEVfVVJMIH0gPSBjb25zdGFudHM7XG5jb25zdCB7IGlzQXJyYXksIGlzU3RyaW5nLCBpc1BhbGluT2JqZWN0LCBleGVjQ2FsbGJhY2sgfSA9IHV0aWxzO1xuY29uc3QgeyBjYXRjaEVycm9yc0RlY29yYXRvciB9ID0gaGVscGVycztcblxuY29uc3QgQ09NUE9ORU5UX05BTUUgPSAnc3RvcmFnZSc7XG5cbmNsYXNzIENsb3VkYmFzZVN0b3JhZ2Uge1xuICBAY2F0Y2hFcnJvcnNEZWNvcmF0b3Ioe1xuICAgIGN1c3RvbUluZm86IHtcbiAgICAgIGNsYXNzTmFtZTogJ0Nsb3VkYmFzZScsXG4gICAgICBtZXRob2ROYW1lOiAndXBsb2FkRmlsZSdcbiAgICB9LFxuICAgIHRpdGxlOiAn5LiK5Lyg5paH5Lu25aSx6LSlJyxcbiAgICBtZXNzYWdlczogW1xuICAgICAgJ+ivt+ehruiupOS7peS4i+WQhOmhue+8micsXG4gICAgICAnICAxIC0g6LCD55SoIHVwbG9hZEZpbGUoKSDnmoTor63ms5XmiJblj4LmlbDmmK/lkKbmraPnoa4nLFxuICAgICAgJyAgMiAtIOW9k+WJjeWfn+WQjeaYr+WQpuWcqOWuieWFqOWfn+WQjeWIl+ihqOS4re+8mmh0dHBzOi8vY29uc29sZS5jbG91ZC50ZW5jZW50LmNvbS90Y2IvZW52L3NhZmV0eScsXG4gICAgICAnICAzIC0g5LqR5a2Y5YKo5a6J5YWo6KeE5YiZ5piv5ZCm6ZmQ5Yi25LqG5b2T5YmN55m75b2V54q25oCB6K6/6ZeuJyxcbiAgICAgIGDlpoLmnpzpl67popjkvp3nhLblrZjlnKjvvIzlu7rorq7liLDlrpjmlrnpl67nrZTnpL7ljLrmj5Dpl67miJblr7vmib7luK7liqnvvJoke0NPTU1VTklUWV9TSVRFX1VSTH1gXG4gICAgXVxuICB9KVxuICBwdWJsaWMgYXN5bmMgdXBsb2FkRmlsZShcbiAgICBwYXJhbXM6IElDbG91ZGJhc2VVcGxvYWRGaWxlUGFyYW1zLFxuICAgIGNhbGxiYWNrPzogRnVuY3Rpb25cbiAgKTogUHJvbWlzZTxJQ2xvdWRiYXNlVXBsb2FkRmlsZVJlc3VsdD4ge1xuICAgIGNvbnN0IHsgY2xvdWRQYXRoLCBmaWxlUGF0aCwgb25VcGxvYWRQcm9ncmVzcyB9ID0gcGFyYW1zO1xuICAgIGlmICghaXNTdHJpbmcoY2xvdWRQYXRoKSB8fCAhZmlsZVBhdGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGNvZGU6IEVSUk9SUy5JTlZBTElEX1BBUkFNUyxcbiAgICAgICAgbXNnOiBgWyR7Q09NUE9ORU5UX05BTUV9LnVwbG9hZEZpbGVdIGludmFsaWQgcGFyYW1zYFxuICAgICAgfSkpO1xuICAgIH1cbiAgICBjb25zdCBhY3Rpb24gPSAnc3RvcmFnZS5nZXRVcGxvYWRNZXRhZGF0YSc7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLnJlcXVlc3Q7XG4gICAgY29uc3QgbWV0YURhdGE6IElDbG91ZGJhc2VGaWxlTWV0YURhdGFSZXMgPSBhd2FpdCByZXF1ZXN0LnNlbmQoYWN0aW9uLCB7XG4gICAgICBwYXRoOiBjbG91ZFBhdGhcbiAgICB9KTtcblxuICAgIGNvbnN0IHtcbiAgICAgIGRhdGE6IHsgdXJsLCBhdXRob3JpemF0aW9uLCB0b2tlbiwgZmlsZUlkLCBjb3NGaWxlSWQsIGRvd25sb2FkX3VybCB9LFxuICAgICAgcmVxdWVzdElkXG4gICAgfSA9IG1ldGFEYXRhO1xuXG5cbiAgICAvLyDkvb/nlKjkuLTml7blr4bljJnkuIrkvKDmlofku7ZcbiAgICAvLyBAc2VlIGh0dHBzOi8vY2xvdWQudGVuY2VudC5jb20vZG9jdW1lbnQvcHJvZHVjdC80MzYvMTQwNDhcbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAga2V5OiBjbG91ZFBhdGgsXG4gICAgICBzaWduYXR1cmU6IGF1dGhvcml6YXRpb24sXG4gICAgICAneC1jb3MtbWV0YS1maWxlaWQnOiBjb3NGaWxlSWQsXG4gICAgICAnc3VjY2Vzc19hY3Rpb25fc3RhdHVzJzogJzIwMScsXG4gICAgICAneC1jb3Mtc2VjdXJpdHktdG9rZW4nOiB0b2tlblxuICAgIH07XG4gICAgY29uc3QgcmVzID0gYXdhaXQgcmVxdWVzdC51cGxvYWQoe1xuICAgICAgdXJsLFxuICAgICAgZGF0YSxcbiAgICAgIGZpbGU6IGZpbGVQYXRoLFxuICAgICAgbmFtZTogY2xvdWRQYXRoLFxuICAgICAgb25VcGxvYWRQcm9ncmVzc1xuICAgIH0pO1xuXG4gICAgaWYgKHJlcy5zdGF0dXNDb2RlID09PSAyMDEpIHtcbiAgICAgIHJldHVybiBleGVjQ2FsbGJhY2soY2FsbGJhY2ssIG51bGwsIHtcbiAgICAgICAgZmlsZUlEOiBmaWxlSWQsXG4gICAgICAgIGRvd25sb2FkX3VybCxcbiAgICAgICAgcmVxdWVzdElkXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGV4ZWNDYWxsYmFjayhjYWxsYmFjaywgbmV3IEVycm9yKGBbJHtnZXRTZGtOYW1lKCl9XVske0VSUk9SUy5PUEVSQVRJT05fRkFJTH1dWyR7Q09NUE9ORU5UX05BTUV9XToke3Jlcy5kYXRhfWApKTtcbiAgICB9XG4gIH1cbiAgQGNhdGNoRXJyb3JzRGVjb3JhdG9yKHtcbiAgICBjdXN0b21JbmZvOiB7XG4gICAgICBjbGFzc05hbWU6ICdDbG91ZGJhc2UnLFxuICAgICAgbWV0aG9kTmFtZTogJ2dldFVwbG9hZE1ldGFkYXRhJ1xuICAgIH0sXG4gICAgdGl0bGU6ICfojrflj5bkuIrkvKDlhYPkv6Hmga/lpLHotKUnLFxuICAgIG1lc3NhZ2VzOiBbXG4gICAgICAn6K+356Gu6K6k5Lul5LiL5ZCE6aG577yaJyxcbiAgICAgICcgIDEgLSDosIPnlKggZ2V0VXBsb2FkTWV0YWRhdGEoKSDnmoTor63ms5XmiJblj4LmlbDmmK/lkKbmraPnoa4nLFxuICAgICAgJyAgMiAtIOW9k+WJjeWfn+WQjeaYr+WQpuWcqOWuieWFqOWfn+WQjeWIl+ihqOS4re+8mmh0dHBzOi8vY29uc29sZS5jbG91ZC50ZW5jZW50LmNvbS90Y2IvZW52L3NhZmV0eScsXG4gICAgICAnICAzIC0g5LqR5a2Y5YKo5a6J5YWo6KeE5YiZ5piv5ZCm6ZmQ5Yi25LqG5b2T5YmN55m75b2V54q25oCB6K6/6ZeuJyxcbiAgICAgIGDlpoLmnpzpl67popjkvp3nhLblrZjlnKjvvIzlu7rorq7liLDlrpjmlrnpl67nrZTnpL7ljLrmj5Dpl67miJblr7vmib7luK7liqnvvJoke0NPTU1VTklUWV9TSVRFX1VSTH1gXG4gICAgXVxuICB9KVxuICBwdWJsaWMgYXN5bmMgZ2V0VXBsb2FkTWV0YWRhdGEoXG4gICAgcGFyYW1zOiBJQ2xvdWRiYXNlR2V0VXBsb2FkTWV0YWRhdGFQYXJhbXMsXG4gICAgY2FsbGJhY2s/OiBGdW5jdGlvblxuICApOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHsgY2xvdWRQYXRoIH0gPSBwYXJhbXM7XG4gICAgaWYgKCFpc1N0cmluZyhjbG91ZFBhdGgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBjb2RlOiBFUlJPUlMuSU5WQUxJRF9QQVJBTVMsXG4gICAgICAgIG1zZzogYFske0NPTVBPTkVOVF9OQU1FfS5nZXRVcGxvYWRNZXRhZGF0YV0gaW52YWxpZCBjbG91ZFBhdGhgXG4gICAgICB9KSk7XG4gICAgfVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5yZXF1ZXN0O1xuICAgIGNvbnN0IGFjdGlvbiA9ICdzdG9yYWdlLmdldFVwbG9hZE1ldGFkYXRhJztcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBtZXRhRGF0YSA9IGF3YWl0IHJlcXVlc3Quc2VuZChhY3Rpb24sIHtcbiAgICAgICAgcGF0aDogY2xvdWRQYXRoXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBleGVjQ2FsbGJhY2soY2FsbGJhY2ssIG51bGwsIG1ldGFEYXRhKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiBleGVjQ2FsbGJhY2soY2FsbGJhY2ssIGVycik7XG4gICAgfVxuICB9XG4gIEBjYXRjaEVycm9yc0RlY29yYXRvcih7XG4gICAgY3VzdG9tSW5mbzoge1xuICAgICAgY2xhc3NOYW1lOiAnQ2xvdWRiYXNlJyxcbiAgICAgIG1ldGhvZE5hbWU6ICdkZWxldGVGaWxlJ1xuICAgIH0sXG4gICAgdGl0bGU6ICfliKDpmaTmlofku7blpLHotKUnLFxuICAgIG1lc3NhZ2VzOiBbXG4gICAgICAn6K+356Gu6K6k5Lul5LiL5ZCE6aG577yaJyxcbiAgICAgICcgIDEgLSDosIPnlKggZGVsZXRlRmlsZSgpIOeahOivreazleaIluWPguaVsOaYr+WQpuato+ehricsXG4gICAgICAnICAyIC0g5b2T5YmN5Z+f5ZCN5piv5ZCm5Zyo5a6J5YWo5Z+f5ZCN5YiX6KGo5Lit77yaaHR0cHM6Ly9jb25zb2xlLmNsb3VkLnRlbmNlbnQuY29tL3RjYi9lbnYvc2FmZXR5JyxcbiAgICAgICcgIDMgLSDkupHlrZjlgqjlronlhajop4TliJnmmK/lkKbpmZDliLbkuoblvZPliY3nmbvlvZXnirbmgIHorr/pl64nLFxuICAgICAgYOWmguaenOmXrumimOS+neeEtuWtmOWcqO+8jOW7uuiuruWIsOWumOaWuemXruetlOekvuWMuuaPkOmXruaIluWvu+aJvuW4ruWKqe+8miR7Q09NTVVOSVRZX1NJVEVfVVJMfWBcbiAgICBdXG4gIH0pXG4gIHB1YmxpYyBhc3luYyBkZWxldGVGaWxlKFxuICAgIHBhcmFtczogSUNsb3VkYmFzZURlbGV0ZUZpbGVQYXJhbXMsXG4gICAgY2FsbGJhY2s/OiBGdW5jdGlvblxuICApOiBQcm9taXNlPElDbG91ZGJhc2VEZWxldGVGaWxlUmVzdWx0PiB7XG4gICAgY29uc3QgeyBmaWxlTGlzdCB9ID0gcGFyYW1zO1xuXG4gICAgaWYgKCFmaWxlTGlzdCB8fCAhaXNBcnJheShmaWxlTGlzdCkgfHwgZmlsZUxpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBjb2RlOiBFUlJPUlMuSU5WQUxJRF9QQVJBTVMsXG4gICAgICAgIG1zZzogYFske0NPTVBPTkVOVF9OQU1FfS5kZWxldGVGaWxlXSBmaWxlTGlzdCBtdXN0IG5vdCBiZSBlbXB0eWBcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGZpbGVJZCBvZiBmaWxlTGlzdCkge1xuICAgICAgaWYgKCFmaWxlSWQgfHwgIWlzU3RyaW5nKGZpbGVJZCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICBjb2RlOiBFUlJPUlMuSU5WQUxJRF9QQVJBTVMsXG4gICAgICAgICAgbXNnOiBgWyR7Q09NUE9ORU5UX05BTUV9LmRlbGV0ZUZpbGVdIGZpbGVJRCBtdXN0IGJlIHN0cmluZ2BcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGFjdGlvbiA9ICdzdG9yYWdlLmJhdGNoRGVsZXRlRmlsZSc7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLnJlcXVlc3Q7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgcmVxdWVzdC5zZW5kKGFjdGlvbiwge1xuICAgICAgZmlsZWlkX2xpc3Q6IGZpbGVMaXN0XG4gICAgfSk7XG5cbiAgICBpZiAocmVzLmNvZGUpIHtcbiAgICAgIHJldHVybiBleGVjQ2FsbGJhY2soY2FsbGJhY2ssIG51bGwsIHJlcyk7XG4gICAgfVxuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBmaWxlTGlzdDogcmVzLmRhdGEuZGVsZXRlX2xpc3QsXG4gICAgICByZXF1ZXN0SWQ6IHJlcy5yZXF1ZXN0SWRcbiAgICB9O1xuICAgIHJldHVybiBleGVjQ2FsbGJhY2soY2FsbGJhY2ssIG51bGwsIGRhdGEpOztcbiAgfVxuICBAY2F0Y2hFcnJvcnNEZWNvcmF0b3Ioe1xuICAgIGN1c3RvbUluZm86IHtcbiAgICAgIGNsYXNzTmFtZTogJ0Nsb3VkYmFzZScsXG4gICAgICBtZXRob2ROYW1lOiAnZ2V0VGVtcEZpbGVVUkwnXG4gICAgfSxcbiAgICB0aXRsZTogJ+iOt+WPluaWh+S7tuS4i+i9vemTvuaOpScsXG4gICAgbWVzc2FnZXM6IFtcbiAgICAgICfor7fnoa7orqTku6XkuIvlkITpobnvvJonLFxuICAgICAgJyAgMSAtIOiwg+eUqCBnZXRUZW1wRmlsZVVSTCgpIOeahOivreazleaIluWPguaVsOaYr+WQpuato+ehricsXG4gICAgICAnICAyIC0g5b2T5YmN5Z+f5ZCN5piv5ZCm5Zyo5a6J5YWo5Z+f5ZCN5YiX6KGo5Lit77yaaHR0cHM6Ly9jb25zb2xlLmNsb3VkLnRlbmNlbnQuY29tL3RjYi9lbnYvc2FmZXR5JyxcbiAgICAgICcgIDMgLSDkupHlrZjlgqjlronlhajop4TliJnmmK/lkKbpmZDliLbkuoblvZPliY3nmbvlvZXnirbmgIHorr/pl64nLFxuICAgICAgYOWmguaenOmXrumimOS+neeEtuWtmOWcqO+8jOW7uuiuruWIsOWumOaWuemXruetlOekvuWMuuaPkOmXruaIluWvu+aJvuW4ruWKqe+8miR7Q09NTVVOSVRZX1NJVEVfVVJMfWBcbiAgICBdXG4gIH0pXG4gIHB1YmxpYyBhc3luYyBnZXRUZW1wRmlsZVVSTChcbiAgICBwYXJhbXM6IElDbG91ZGJhc2VHZXRUZW1wRmlsZVVSTFBhcmFtcyxcbiAgICBjYWxsYmFjaz86IEZ1bmN0aW9uXG4gICk6IFByb21pc2U8SUNsb3VkYmFzZUdldFRlbXBGaWxlVVJMUmVzdWx0PiB7XG4gICAgY29uc3QgeyBmaWxlTGlzdCB9ID0gcGFyYW1zO1xuXG4gICAgaWYgKCFmaWxlTGlzdCB8fCAhaXNBcnJheShmaWxlTGlzdCkgfHwgZmlsZUxpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBjb2RlOiBFUlJPUlMuSU5WQUxJRF9QQVJBTVMsXG4gICAgICAgIG1zZzogYFske0NPTVBPTkVOVF9OQU1FfS5nZXRUZW1wRmlsZVVSTF0gZmlsZUxpc3QgbXVzdCBub3QgYmUgZW1wdHlgXG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgY29uc3QgZmlsZV9saXN0ID0gW107XG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVMaXN0KSB7XG4gICAgICBpZiAoaXNQYWxpbk9iamVjdChmaWxlKSkge1xuICAgICAgICBpZiAoIWZpbGUuaGFzT3duUHJvcGVydHkoJ2ZpbGVJRCcpIHx8ICFmaWxlLmhhc093blByb3BlcnR5KCdtYXhBZ2UnKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBjb2RlOiBFUlJPUlMuSU5WQUxJRF9QQVJBTVMsXG4gICAgICAgICAgICBtc2c6IGBbJHtDT01QT05FTlRfTkFNRX0uZ2V0VGVtcEZpbGVVUkxdIGZpbGUgaW5mbyBtdXN0IGluY2x1ZGUgZmlsZUlEIGFuZCBtYXhBZ2VgXG4gICAgICAgICAgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZmlsZV9saXN0LnB1c2goe1xuICAgICAgICAgIGZpbGVpZDogKGZpbGUgYXMgSUNsb3VkYmFzZUZpbGVJbmZvKS5maWxlSUQsXG4gICAgICAgICAgbWF4X2FnZTogKGZpbGUgYXMgSUNsb3VkYmFzZUZpbGVJbmZvKS5tYXhBZ2VcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGlzU3RyaW5nKGZpbGUpKSB7XG4gICAgICAgIGZpbGVfbGlzdC5wdXNoKHtcbiAgICAgICAgICBmaWxlaWQ6IGZpbGVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGNvZGU6IEVSUk9SUy5JTlZBTElEX1BBUkFNUyxcbiAgICAgICAgICBtc2c6IGBbJHtDT01QT05FTlRfTkFNRX0uZ2V0VGVtcEZpbGVVUkxdIGludmFsaWQgZmlsZUxpc3RgXG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBhY3Rpb24gPSAnc3RvcmFnZS5iYXRjaEdldERvd25sb2FkVXJsJztcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgcmVxdWVzdCA9IHRoaXMucmVxdWVzdDtcblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHJlcXVlc3Quc2VuZChhY3Rpb24sIHsgZmlsZV9saXN0IH0pO1xuXG4gICAgaWYgKHJlcy5jb2RlKSB7XG4gICAgICByZXR1cm4gZXhlY0NhbGxiYWNrKGNhbGxiYWNrLCBudWxsLCByZXMpO1xuICAgIH1cblxuICAgIHJldHVybiBleGVjQ2FsbGJhY2soY2FsbGJhY2ssIG51bGwsIHtcbiAgICAgIGZpbGVMaXN0OiByZXMuZGF0YS5kb3dubG9hZF9saXN0LFxuICAgICAgcmVxdWVzdElkOiByZXMucmVxdWVzdElkXG4gICAgfSk7XG4gIH1cbiAgQGNhdGNoRXJyb3JzRGVjb3JhdG9yKHtcbiAgICBjdXN0b21JbmZvOiB7XG4gICAgICBjbGFzc05hbWU6ICdDbG91ZGJhc2UnLFxuICAgICAgbWV0aG9kTmFtZTogJ2Rvd25sb2FkRmlsZSdcbiAgICB9LFxuICAgIHRpdGxlOiAn5LiL6L295paH5Lu25aSx6LSlJyxcbiAgICBtZXNzYWdlczogW1xuICAgICAgJ+ivt+ehruiupOS7peS4i+WQhOmhue+8micsXG4gICAgICAnICAxIC0g6LCD55SoIGRvd25sb2FkRmlsZSgpIOeahOivreazleaIluWPguaVsOaYr+WQpuato+ehricsXG4gICAgICAnICAyIC0g5b2T5YmN5Z+f5ZCN5piv5ZCm5Zyo5a6J5YWo5Z+f5ZCN5YiX6KGo5Lit77yaaHR0cHM6Ly9jb25zb2xlLmNsb3VkLnRlbmNlbnQuY29tL3RjYi9lbnYvc2FmZXR5JyxcbiAgICAgICcgIDMgLSDkupHlrZjlgqjlronlhajop4TliJnmmK/lkKbpmZDliLbkuoblvZPliY3nmbvlvZXnirbmgIHorr/pl64nLFxuICAgICAgYOWmguaenOmXrumimOS+neeEtuWtmOWcqO+8jOW7uuiuruWIsOWumOaWuemXruetlOekvuWMuuaPkOmXruaIluWvu+aJvuW4ruWKqe+8miR7Q09NTVVOSVRZX1NJVEVfVVJMfWBcbiAgICBdXG4gIH0pXG4gIHB1YmxpYyBhc3luYyBkb3dubG9hZEZpbGUoXG4gICAgcGFyYW1zOiBJQ2xvdWRiYXNlRG93bmxvYWRGaWxlUGFyYW1zLFxuICAgIGNhbGxiYWNrPzogRnVuY3Rpb25cbiAgKTogUHJvbWlzZTxJQ2xvdWRiYXNlRG93bmxvYWRGaWxlUmVzdWx0PiB7XG4gICAgY29uc3QgeyBmaWxlSUQgfSA9IHBhcmFtcztcbiAgICBpZiAoIWlzU3RyaW5nKGZpbGVJRCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGNvZGU6IEVSUk9SUy5JTlZBTElEX1BBUkFNUyxcbiAgICAgICAgbXNnOiBgWyR7Q09NUE9ORU5UX05BTUV9LmdldFRlbXBGaWxlVVJMXSBmaWxlSUQgbXVzdCBiZSBzdHJpbmdgXG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgY29uc3QgdG1wVXJsUmVzID0gYXdhaXQgdGhpcy5nZXRUZW1wRmlsZVVSTC5jYWxsKHRoaXMsIHtcbiAgICAgIGZpbGVMaXN0OiBbe1xuICAgICAgICBmaWxlSUQsXG4gICAgICAgIG1heEFnZTogNjAwXG4gICAgICB9XVxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzID0gdG1wVXJsUmVzLmZpbGVMaXN0WzBdO1xuXG4gICAgaWYgKHJlcy5jb2RlICE9PSAnU1VDQ0VTUycpIHtcbiAgICAgIHJldHVybiBleGVjQ2FsbGJhY2soY2FsbGJhY2ssIHJlcyk7XG4gICAgfVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5yZXF1ZXN0O1xuXG4gICAgY29uc3QgdG1wVXJsID0gZW5jb2RlVVJJKHJlcy5kb3dubG9hZF91cmwpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVxdWVzdC5kb3dubG9hZCh7IHVybDogdG1wVXJsIH0pO1xuICAgIHJldHVybiBleGVjQ2FsbGJhY2soY2FsbGJhY2ssIG51bGwsIHJlc3VsdCk7XG4gIH1cbn1cblxuY29uc3QgY2xvdWRiYXNlU3RvcmFnZSA9IG5ldyBDbG91ZGJhc2VTdG9yYWdlKCk7XG5jb25zdCBjb21wb25lbnQ6IElDbG91ZGJhc2VDb21wb25lbnQgPSB7XG4gIG5hbWU6IENPTVBPTkVOVF9OQU1FLFxuICBlbnRpdHk6IHtcbiAgICB1cGxvYWRGaWxlOiBjbG91ZGJhc2VTdG9yYWdlLnVwbG9hZEZpbGUsXG4gICAgZGVsZXRlRmlsZTogY2xvdWRiYXNlU3RvcmFnZS5kZWxldGVGaWxlLFxuICAgIGdldFRlbXBGaWxlVVJMOiBjbG91ZGJhc2VTdG9yYWdlLmdldFRlbXBGaWxlVVJMLFxuICAgIGRvd25sb2FkRmlsZTogY2xvdWRiYXNlU3RvcmFnZS5kb3dubG9hZEZpbGUsXG4gICAgZ2V0VXBsb2FkTWV0YWRhdGE6IGNsb3VkYmFzZVN0b3JhZ2UuZ2V0VXBsb2FkTWV0YWRhdGFcbiAgfVxufVxuXG50cnkge1xuICBjbG91ZGJhc2UucmVnaXN0ZXJDb21wb25lbnQoY29tcG9uZW50KTtcbn0gY2F0Y2ggKGUpIHsgfVxuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJTdG9yYWdlKGFwcDogUGljazxJQ2xvdWRiYXNlLCAncmVnaXN0ZXJDb21wb25lbnQnPikge1xuICB0cnkge1xuICAgIGFwcC5yZWdpc3RlckNvbXBvbmVudChjb21wb25lbnQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS53YXJuKGUpO1xuICB9XG59Il19
435
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxrREFBaUU7QUFtQnpELElBQUEsVUFBVSxHQUFpQyxxQkFBUyxXQUExQyxFQUFFLE1BQU0sR0FBeUIscUJBQVMsT0FBbEMsRUFBRSxrQkFBa0IsR0FBSyxxQkFBUyxtQkFBZCxDQUFlO0FBQ3JELElBQUEsT0FBTyxHQUE0QyxpQkFBSyxRQUFqRCxFQUFFLFFBQVEsR0FBa0MsaUJBQUssU0FBdkMsRUFBRSxhQUFhLEdBQW1CLGlCQUFLLGNBQXhCLEVBQUUsWUFBWSxHQUFLLGlCQUFLLGFBQVYsQ0FBVztBQUN6RCxJQUFBLG9CQUFvQixHQUFLLG1CQUFPLHFCQUFaLENBQWE7QUFFekMsSUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDO0FBRWpDO0lBQUE7SUE4U0EsQ0FBQztJQS9SYyxxQ0FBVSxHQUF2QixVQUNFLE1BQWtDLEVBQ2xDLFFBQW1COzs7Ozs7d0JBRVgsU0FBUyxHQUErRCxNQUFNLFVBQXJFLEVBQUUsUUFBUSxHQUFxRCxNQUFNLFNBQTNELEVBQUUsZ0JBQWdCLEdBQW1DLE1BQU0saUJBQXpDLEVBQUUsS0FBaUMsTUFBTSxPQUF6QixFQUFkLE1BQU0sbUJBQUcsS0FBSyxLQUFBLEVBQUUsS0FBaUIsTUFBTSxRQUFYLEVBQVosT0FBTyxtQkFBRyxFQUFFLEtBQUEsQ0FBWTt3QkFDdkYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTs0QkFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO2dDQUM3QixJQUFJLEVBQUUsTUFBTSxDQUFDLGNBQWM7Z0NBQzNCLEdBQUcsRUFBRSxNQUFJLGNBQWMsZ0NBQTZCOzZCQUNyRCxDQUFDLENB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LENBQUMsQ0FBQztLQUNsQztJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNqQjtBQUNILENBQUM7QUFORCwwQ0FNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbnN0YW50cywgdXRpbHMsIGhlbHBlcnMgfSBmcm9tICdAY2xvdWRiYXNlL3V0aWxpdGllcyc7XG5pbXBvcnQgeyBJQ2xvdWRiYXNlIH0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcyc7XG5pbXBvcnQgeyBJQ2xvdWRiYXNlQ29tcG9uZW50IH0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcy9jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgSUNsb3VkYmFzZUZpbGVNZXRhRGF0YVJlcyxcbiAgSUNsb3VkYmFzZUZpbGVJbmZvLFxuICBJQ2xvdWRiYXNlVXBsb2FkRmlsZVBhcmFtcyxcbiAgSUNsb3VkYmFzZVVwbG9hZEZpbGVSZXN1bHQsXG4gIElDbG91ZGJhc2VHZXRVcGxvYWRNZXRhZGF0YVBhcmFtcyxcbiAgSUNsb3VkYmFzZURlbGV0ZUZpbGVQYXJhbXMsXG4gIElDbG91ZGJhc2VEZWxldGVGaWxlUmVzdWx0LFxuICBJQ2xvdWRiYXNlR2V0VGVtcEZpbGVVUkxSZXN1bHQsXG4gIElDbG91ZGJhc2VHZXRUZW1wRmlsZVVSTFBhcmFtcyxcbiAgSUNsb3VkYmFzZURvd25sb2FkRmlsZVJlc3VsdCxcbiAgSUNsb3VkYmFzZURvd25sb2FkRmlsZVBhcmFtc1xufSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzL3N0b3JhZ2UnO1xuXG5kZWNsYXJlIGNvbnN0IGNsb3VkYmFzZTogSUNsb3VkYmFzZTtcblxuY29uc3QgeyBnZXRTZGtOYW1lLCBFUlJPUlMsIENPTU1VTklUWV9TSVRFX1VSTCB9ID0gY29uc3RhbnRzO1xuY29uc3QgeyBpc0FycmF5LCBpc1N0cmluZywgaXNQYWxpbk9iamVjdCwgZXhlY0NhbGxiYWNrIH0gPSB1dGlscztcbmNvbnN0IHsgY2F0Y2hFcnJvcnNEZWNvcmF0b3IgfSA9IGhlbHBlcnM7XG5cbmNvbnN0IENPTVBPTkVOVF9OQU1FID0gJ3N0b3JhZ2UnO1xuXG5jbGFzcyBDbG91ZGJhc2VTdG9yYWdlIHtcbiAgQGNhdGNoRXJyb3JzRGVjb3JhdG9yKHtcbiAgICBjdXN0b21JbmZvOiB7XG4gICAgICBjbGFzc05hbWU6ICdDbG91ZGJhc2UnLFxuICAgICAgbWV0aG9kTmFtZTogJ3VwbG9hZEZpbGUnXG4gICAgfSxcbiAgICB0aXRsZTogJ+S4iuS8oOaWh+S7tuWksei0pScsXG4gICAgbWVzc2FnZXM6IFtcbiAgICAgICfor7fnoa7orqTku6XkuIvlkITpobnvvJonLFxuICAgICAgJyAgMSAtIOiwg+eUqCB1cGxvYWRGaWxlKCkg55qE6K+t5rOV5oiW5Y+C5pWw5piv5ZCm5q2j56GuJyxcbiAgICAgICcgIDIgLSDlvZPliY3ln5/lkI3mmK/lkKblnKjlronlhajln5/lkI3liJfooajkuK3vvJpodHRwczovL2NvbnNvbGUuY2xvdWQudGVuY2VudC5jb20vdGNiL2Vudi9zYWZldHknLFxuICAgICAgJyAgMyAtIOS6keWtmOWCqOWuieWFqOinhOWImeaYr+WQpumZkOWItuS6huW9k+WJjeeZu+W9leeKtuaAgeiuv+mXricsXG4gICAgICBg5aaC5p6c6Zeu6aKY5L6d54S25a2Y5Zyo77yM5bu66K6u5Yiw5a6Y5pa56Zeu562U56S+5Yy65o+Q6Zeu5oiW5a+75om+5biu5Yqp77yaJHtDT01NVU5JVFlfU0lURV9VUkx9YFxuICAgIF1cbiAgfSlcbiAgcHVibGljIGFzeW5jIHVwbG9hZEZpbGUoXG4gICAgcGFyYW1zOiBJQ2xvdWRiYXNlVXBsb2FkRmlsZVBhcmFtcyxcbiAgICBjYWxsYmFjaz86IEZ1bmN0aW9uXG4gICk6IFByb21pc2U8SUNsb3VkYmFzZVVwbG9hZEZpbGVSZXN1bHQ+IHtcbiAgICBjb25zdCB7IGNsb3VkUGF0aCwgZmlsZVBhdGgsIG9uVXBsb2FkUHJvZ3Jlc3MsIG1ldGhvZCA9ICdwdXQnLCBoZWFkZXJzID0ge30gfSA9IHBhcmFtcztcbiAgICBpZiAoIWlzU3RyaW5nKGNsb3VkUGF0aCkgfHwgIWZpbGVQYXRoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBjb2RlOiBFUlJPUlMuSU5WQUxJRF9QQVJBTVMsXG4gICAgICAgIG1zZzogYFske0NPTVBPTkVOVF9OQU1FfS51cGxvYWRGaWxlXSBpbnZhbGlkIHBhcmFtc2BcbiAgICAgIH0pKTtcbiAgICB9XG4gICAgY29uc3QgdXBsb2FkTWV0aG9kID0ge3B1dDogJ3B1dCcsIHBvc3Q6ICdwb3N0J31bbWV0aG9kLnRvTG9jYWxlTG93ZXJDYXNlKCldIHx8ICdwdXQnO1xuXG4gICAgY29uc3QgYWN0aW9uID0gJ3N0b3JhZ2UuZ2V0VXBsb2FkTWV0YWRhdGEnO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5yZXF1ZXN0O1xuICAgIGNvbnN0IG1ldGFEYXRhUGFyYW0gPSB7XG4gICAgICBwYXRoOiBjbG91ZFBhdGgsXG4gICAgICBtZXRob2Q6IHVwbG9hZE1ldGhvZCxcbiAgICB9XG4gICAgaWYodXBsb2FkTWV0aG9kID09PSAncHV0Jykge1xuICAgICAgbWV0YURhdGFQYXJhbVtcImhlYWRlcnNcIl0gPSBoZWFkZXJzO1xuICAgIH1cbiAgICBjb25zdCBtZXRhRGF0YTogSUNsb3VkYmFzZUZpbGVNZXRhRGF0YVJlcyA9IGF3YWl0IHJlcXVlc3Quc2VuZChhY3Rpb24sIG1ldGFEYXRhUGFyYW0pO1xuXG4gICAgY29uc3Qge1xuICAgICAgZGF0YTogeyB1cmwsIGF1dGhvcml6YXRpb24sIHRva2VuLCBmaWxlSWQsIGNvc0ZpbGVJZCwgZG93bmxvYWRfdXJsIH0sXG4gICAgICByZXF1ZXN0SWRcbiAgICB9ID0gbWV0YURhdGE7XG5cbiAgICBpZih1cGxvYWRNZXRob2QgPT09ICdwdXQnKSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCByZXF1ZXN0LnVwbG9hZCh7XG4gICAgICAgIHVybCxcbiAgICAgICAgbWV0aG9kOiAncHV0JyxcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIC4uLmhlYWRlcnMsXG4gICAgICAgICAgYXV0aG9yaXphdGlvbixcbiAgICAgICAgICAneC1jb3MtbWV0YS1maWxlaWQnOiBjb3NGaWxlSWQsXG4gICAgICAgICAgJ3gtY29zLXNlY3VyaXR5LXRva2VuJzogdG9rZW4sXG4gICAgICAgIH0sXG4gICAgICAgIGZpbGU6IGZpbGVQYXRoLFxuICAgICAgICBuYW1lOiBjbG91ZFBhdGgsXG4gICAgICAgIG9uVXBsb2FkUHJvZ3Jlc3NcbiAgICAgIH0pXG4gIFxuICAgICAgaWYgKHJlcy5zdGF0dXNDb2RlID09PSAyMDApIHtcbiAgICAgICAgcmV0dXJuIGV4ZWNDYWxsYmFjayhjYWxsYmFjaywgbnVsbCwge1xuICAgICAgICAgIGZpbGVJRDogZmlsZUlkLFxuICAgICAgICAgIGRvd25sb2FkX3VybCxcbiAgICAgICAgICByZXF1ZXN0SWRcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZXhlY0NhbGxiYWNrKGNhbGxiYWNrLCBuZXcgRXJyb3IoYFske2dldFNka05hbWUoKX1dWyR7RVJST1JTLk9QRVJBVElPTl9GQUlMfV1bJHtDT01QT05FTlRfTkFNRX1dOiR7cmVzLmRhdGF9YCkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyDkvb/nlKjkuLTml7blr4bljJnkuIrkvKDmlofku7ZcbiAgICAgIC8vIEBzZWUgaHR0cHM6Ly9jbG91ZC50ZW5jZW50LmNvbS9kb2N1bWVudC9wcm9kdWN0LzQzNi8xNDA0OFxuICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAga2V5OiBjbG91ZFBhdGgsXG4gICAgICAgIHNpZ25hdHVyZTogYXV0aG9yaXphdGlvbixcbiAgICAgICAgJ3gtY29zLW1ldGEtZmlsZWlkJzogY29zRmlsZUlkLFxuICAgICAgICAnc3VjY2Vzc19hY3Rpb25fc3RhdHVzJzogJzIwMScsXG4gICAgICAgICd4LWNvcy1zZWN1cml0eS10b2tlbic6IHRva2VuXG4gICAgICB9O1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgcmVxdWVzdC51cGxvYWQoe1xuICAgICAgICB1cmwsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIGZpbGU6IGZpbGVQYXRoLFxuICAgICAgICBuYW1lOiBjbG91ZFBhdGgsXG4gICAgICAgIG9uVXBsb2FkUHJvZ3Jlc3NcbiAgICAgIH0pO1xuICBcbiAgICAgIGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gMjAxKSB7XG4gICAgICAgIHJldHVybiBleGVjQ2FsbGJhY2soY2FsbGJhY2ssIG51bGwsIHtcbiAgICAgICAgICBmaWxlSUQ6IGZpbGVJZCxcbiAgICAgICAgICBkb3dubG9hZF91cmwsXG4gICAgICAgICAgcmVxdWVzdElkXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGV4ZWNDYWxsYmFjayhjYWxsYmFjaywgbmV3IEVycm9yKGBbJHtnZXRTZGtOYW1lKCl9XVske0VSUk9SUy5PUEVSQVRJT05fRkFJTH1dWyR7Q09NUE9ORU5UX05BTUV9XToke3Jlcy5kYXRhfWApKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGNhdGNoRXJyb3JzRGVjb3JhdG9yKHtcbiAgICBjdXN0b21JbmZvOiB7XG4gICAgICBjbGFzc05hbWU6ICdDbG91ZGJhc2UnLFxuICAgICAgbWV0aG9kTmFtZTogJ2dldFVwbG9hZE1ldGFkYXRhJ1xuICAgIH0sXG4gICAgdGl0bGU6ICfojrflj5bkuIrkvKDlhYPkv6Hmga/lpLHotKUnLFxuICAgIG1lc3NhZ2VzOiBbXG4gICAgICAn6K+356Gu6K6k5Lul5LiL5ZCE6aG577yaJyxcbiAgICAgICcgIDEgLSDosIPnlKggZ2V0VXBsb2FkTWV0YWRhdGEoKSDnmoTor63ms5XmiJblj4LmlbDmmK/lkKbmraPnoa4nLFxuICAgICAgJyAgMiAtIOW9k+WJjeWfn+WQjeaYr+WQpuWcqOWuieWFqOWfn+WQjeWIl+ihqOS4re+8mmh0dHBzOi8vY29uc29sZS5jbG91ZC50ZW5jZW50LmNvbS90Y2IvZW52L3NhZmV0eScsXG4gICAgICAnICAzIC0g5LqR5a2Y5YKo5a6J5YWo6KeE5YiZ5piv5ZCm6ZmQ5Yi25LqG5b2T5YmN55m75b2V54q25oCB6K6/6ZeuJyxcbiAgICAgIGDlpoLmnpzpl67popjkvp3nhLblrZjlnKjvvIzlu7rorq7liLDlrpjmlrnpl67nrZTnpL7ljLrmj5Dpl67miJblr7vmib7luK7liqnvvJoke0NPTU1VTklUWV9TSVRFX1VSTH1gXG4gICAgXVxuICB9KVxuICBwdWJsaWMgYXN5bmMgZ2V0VXBsb2FkTWV0YWRhdGEoXG4gICAgcGFyYW1zOiBJQ2xvdWRiYXNlR2V0VXBsb2FkTWV0YWRhdGFQYXJhbXMsXG4gICAgY2FsbGJhY2s/OiBGdW5jdGlvblxuICApOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHsgY2xvdWRQYXRoIH0gPSBwYXJhbXM7XG4gICAgaWYgKCFpc1N0cmluZyhjbG91ZFBhdGgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBjb2RlOiBFUlJPUlMuSU5WQUxJRF9QQVJBTVMsXG4gICAgICAgIG1zZzogYFske0NPTVBPTkVOVF9OQU1FfS5nZXRVcGxvYWRNZXRhZGF0YV0gaW52YWxpZCBjbG91ZFBhdGhgXG4gICAgICB9KSk7XG4gICAgfVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5yZXF1ZXN0O1xuICAgIGNvbnN0IGFjdGlvbiA9ICdzdG9yYWdlLmdldFVwbG9hZE1ldGFkYXRhJztcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBtZXRhRGF0YSA9IGF3YWl0IHJlcXVlc3Quc2VuZChhY3Rpb24sIHtcbiAgICAgICAgcGF0aDogY2xvdWRQYXRoXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBleGVjQ2FsbGJhY2soY2FsbGJhY2ssIG51bGwsIG1ldGFEYXRhKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiBleGVjQ2FsbGJhY2soY2FsbGJhY2ssIGVycik7XG4gICAgfVxuICB9XG4gIEBjYXRjaEVycm9yc0RlY29yYXRvcih7XG4gICAgY3VzdG9tSW5mbzoge1xuICAgICAgY2xhc3NOYW1lOiAnQ2xvdWRiYXNlJyxcbiAgICAgIG1ldGhvZE5hbWU6ICdkZWxldGVGaWxlJ1xuICAgIH0sXG4gICAgdGl0bGU6ICfliKDpmaTmlofku7blpLHotKUnLFxuICAgIG1lc3NhZ2VzOiBbXG4gICAgICAn6K+356Gu6K6k5Lul5LiL5ZCE6aG577yaJyxcbiAgICAgICcgIDEgLSDosIPnlKggZGVsZXRlRmlsZSgpIOeahOivreazleaIluWPguaVsOaYr+WQpuato+ehricsXG4gICAgICAnICAyIC0g5b2T5YmN5Z+f5ZCN5piv5ZCm5Zyo5a6J5YWo5Z+f5ZCN5YiX6KGo5Lit77yaaHR0cHM6Ly9jb25zb2xlLmNsb3VkLnRlbmNlbnQuY29tL3RjYi9lbnYvc2FmZXR5JyxcbiAgICAgICcgIDMgLSDkupHlrZjlgqjlronlhajop4TliJnmmK/lkKbpmZDliLbkuoblvZPliY3nmbvlvZXnirbmgIHorr/pl64nLFxuICAgICAgYOWmguaenOmXrumimOS+neeEtuWtmOWcqO+8jOW7uuiuruWIsOWumOaWuemXruetlOekvuWMuuaPkOmXruaIluWvu+aJvuW4ruWKqe+8miR7Q09NTVVOSVRZX1NJVEVfVVJMfWBcbiAgICBdXG4gIH0pXG4gIHB1YmxpYyBhc3luYyBkZWxldGVGaWxlKFxuICAgIHBhcmFtczogSUNsb3VkYmFzZURlbGV0ZUZpbGVQYXJhbXMsXG4gICAgY2FsbGJhY2s/OiBGdW5jdGlvblxuICApOiBQcm9taXNlPElDbG91ZGJhc2VEZWxldGVGaWxlUmVzdWx0PiB7XG4gICAgY29uc3QgeyBmaWxlTGlzdCB9ID0gcGFyYW1zO1xuXG4gICAgaWYgKCFmaWxlTGlzdCB8fCAhaXNBcnJheShmaWxlTGlzdCkgfHwgZmlsZUxpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBjb2RlOiBFUlJPUlMuSU5WQUxJRF9QQVJBTVMsXG4gICAgICAgIG1zZzogYFske0NPTVBPTkVOVF9OQU1FfS5kZWxldGVGaWxlXSBmaWxlTGlzdCBtdXN0IG5vdCBiZSBlbXB0eWBcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGZpbGVJZCBvZiBmaWxlTGlzdCkge1xuICAgICAgaWYgKCFmaWxlSWQgfHwgIWlzU3RyaW5nKGZpbGVJZCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICBjb2RlOiBFUlJPUlMuSU5WQUxJRF9QQVJBTVMsXG4gICAgICAgICAgbXNnOiBgWyR7Q09NUE9ORU5UX05BTUV9LmRlbGV0ZUZpbGVdIGZpbGVJRCBtdXN0IGJlIHN0cmluZ2BcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGFjdGlvbiA9ICdzdG9yYWdlLmJhdGNoRGVsZXRlRmlsZSc7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLnJlcXVlc3Q7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgcmVxdWVzdC5zZW5kKGFjdGlvbiwge1xuICAgICAgZmlsZWlkX2xpc3Q6IGZpbGVMaXN0XG4gICAgfSk7XG5cbiAgICBpZiAocmVzLmNvZGUpIHtcbiAgICAgIHJldHVybiBleGVjQ2FsbGJhY2soY2FsbGJhY2ssIG51bGwsIHJlcyk7XG4gICAgfVxuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBmaWxlTGlzdDogcmVzLmRhdGEuZGVsZXRlX2xpc3QsXG4gICAgICByZXF1ZXN0SWQ6IHJlcy5yZXF1ZXN0SWRcbiAgICB9O1xuICAgIHJldHVybiBleGVjQ2FsbGJhY2soY2FsbGJhY2ssIG51bGwsIGRhdGEpOztcbiAgfVxuICBAY2F0Y2hFcnJvcnNEZWNvcmF0b3Ioe1xuICAgIGN1c3RvbUluZm86IHtcbiAgICAgIGNsYXNzTmFtZTogJ0Nsb3VkYmFzZScsXG4gICAgICBtZXRob2ROYW1lOiAnZ2V0VGVtcEZpbGVVUkwnXG4gICAgfSxcbiAgICB0aXRsZTogJ+iOt+WPluaWh+S7tuS4i+i9vemTvuaOpScsXG4gICAgbWVzc2FnZXM6IFtcbiAgICAgICfor7fnoa7orqTku6XkuIvlkITpobnvvJonLFxuICAgICAgJyAgMSAtIOiwg+eUqCBnZXRUZW1wRmlsZVVSTCgpIOeahOivreazleaIluWPguaVsOaYr+WQpuato+ehricsXG4gICAgICAnICAyIC0g5b2T5YmN5Z+f5ZCN5piv5ZCm5Zyo5a6J5YWo5Z+f5ZCN5YiX6KGo5Lit77yaaHR0cHM6Ly9jb25zb2xlLmNsb3VkLnRlbmNlbnQuY29tL3RjYi9lbnYvc2FmZXR5JyxcbiAgICAgICcgIDMgLSDkupHlrZjlgqjlronlhajop4TliJnmmK/lkKbpmZDliLbkuoblvZPliY3nmbvlvZXnirbmgIHorr/pl64nLFxuICAgICAgYOWmguaenOmXrumimOS+neeEtuWtmOWcqO+8jOW7uuiuruWIsOWumOaWuemXruetlOekvuWMuuaPkOmXruaIluWvu+aJvuW4ruWKqe+8miR7Q09NTVVOSVRZX1NJVEVfVVJMfWBcbiAgICBdXG4gIH0pXG4gIHB1YmxpYyBhc3luYyBnZXRUZW1wRmlsZVVSTChcbiAgICBwYXJhbXM6IElDbG91ZGJhc2VHZXRUZW1wRmlsZVVSTFBhcmFtcyxcbiAgICBjYWxsYmFjaz86IEZ1bmN0aW9uXG4gICk6IFByb21pc2U8SUNsb3VkYmFzZUdldFRlbXBGaWxlVVJMUmVzdWx0PiB7XG4gICAgY29uc3QgeyBmaWxlTGlzdCB9ID0gcGFyYW1zO1xuXG4gICAgaWYgKCFmaWxlTGlzdCB8fCAhaXNBcnJheShmaWxlTGlzdCkgfHwgZmlsZUxpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBjb2RlOiBFUlJPUlMuSU5WQUxJRF9QQVJBTVMsXG4gICAgICAgIG1zZzogYFske0NPTVBPTkVOVF9OQU1FfS5nZXRUZW1wRmlsZVVSTF0gZmlsZUxpc3QgbXVzdCBub3QgYmUgZW1wdHlgXG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgY29uc3QgZmlsZV9saXN0ID0gW107XG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVMaXN0KSB7XG4gICAgICBpZiAoaXNQYWxpbk9iamVjdChmaWxlKSkge1xuICAgICAgICBpZiAoIWZpbGUuaGFzT3duUHJvcGVydHkoJ2ZpbGVJRCcpIHx8ICFmaWxlLmhhc093blByb3BlcnR5KCdtYXhBZ2UnKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBjb2RlOiBFUlJPUlMuSU5WQUxJRF9QQVJBTVMsXG4gICAgICAgICAgICBtc2c6IGBbJHtDT01QT05FTlRfTkFNRX0uZ2V0VGVtcEZpbGVVUkxdIGZpbGUgaW5mbyBtdXN0IGluY2x1ZGUgZmlsZUlEIGFuZCBtYXhBZ2VgXG4gICAgICAgICAgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZmlsZV9saXN0LnB1c2goe1xuICAgICAgICAgIGZpbGVpZDogKGZpbGUgYXMgSUNsb3VkYmFzZUZpbGVJbmZvKS5maWxlSUQsXG4gICAgICAgICAgbWF4X2FnZTogKGZpbGUgYXMgSUNsb3VkYmFzZUZpbGVJbmZvKS5tYXhBZ2VcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGlzU3RyaW5nKGZpbGUpKSB7XG4gICAgICAgIGZpbGVfbGlzdC5wdXNoKHtcbiAgICAgICAgICBmaWxlaWQ6IGZpbGVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGNvZGU6IEVSUk9SUy5JTlZBTElEX1BBUkFNUyxcbiAgICAgICAgICBtc2c6IGBbJHtDT01QT05FTlRfTkFNRX0uZ2V0VGVtcEZpbGVVUkxdIGludmFsaWQgZmlsZUxpc3RgXG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBhY3Rpb24gPSAnc3RvcmFnZS5iYXRjaEdldERvd25sb2FkVXJsJztcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgcmVxdWVzdCA9IHRoaXMucmVxdWVzdDtcblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHJlcXVlc3Quc2VuZChhY3Rpb24sIHsgZmlsZV9saXN0IH0pO1xuXG4gICAgaWYgKHJlcy5jb2RlKSB7XG4gICAgICByZXR1cm4gZXhlY0NhbGxiYWNrKGNhbGxiYWNrLCBudWxsLCByZXMpO1xuICAgIH1cblxuICAgIHJldHVybiBleGVjQ2FsbGJhY2soY2FsbGJhY2ssIG51bGwsIHtcbiAgICAgIGZpbGVMaXN0OiByZXMuZGF0YS5kb3dubG9hZF9saXN0LFxuICAgICAgcmVxdWVzdElkOiByZXMucmVxdWVzdElkXG4gICAgfSk7XG4gIH1cbiAgQGNhdGNoRXJyb3JzRGVjb3JhdG9yKHtcbiAgICBjdXN0b21JbmZvOiB7XG4gICAgICBjbGFzc05hbWU6ICdDbG91ZGJhc2UnLFxuICAgICAgbWV0aG9kTmFtZTogJ2Rvd25sb2FkRmlsZSdcbiAgICB9LFxuICAgIHRpdGxlOiAn5LiL6L295paH5Lu25aSx6LSlJyxcbiAgICBtZXNzYWdlczogW1xuICAgICAgJ+ivt+ehruiupOS7peS4i+WQhOmhue+8micsXG4gICAgICAnICAxIC0g6LCD55SoIGRvd25sb2FkRmlsZSgpIOeahOivreazleaIluWPguaVsOaYr+WQpuato+ehricsXG4gICAgICAnICAyIC0g5b2T5YmN5Z+f5ZCN5piv5ZCm5Zyo5a6J5YWo5Z+f5ZCN5YiX6KGo5Lit77yaaHR0cHM6Ly9jb25zb2xlLmNsb3VkLnRlbmNlbnQuY29tL3RjYi9lbnYvc2FmZXR5JyxcbiAgICAgICcgIDMgLSDkupHlrZjlgqjlronlhajop4TliJnmmK/lkKbpmZDliLbkuoblvZPliY3nmbvlvZXnirbmgIHorr/pl64nLFxuICAgICAgYOWmguaenOmXrumimOS+neeEtuWtmOWcqO+8jOW7uuiuruWIsOWumOaWuemXruetlOekvuWMuuaPkOmXruaIluWvu+aJvuW4ruWKqe+8miR7Q09NTVVOSVRZX1NJVEVfVVJMfWBcbiAgICBdXG4gIH0pXG4gIHB1YmxpYyBhc3luYyBkb3dubG9hZEZpbGUoXG4gICAgcGFyYW1zOiBJQ2xvdWRiYXNlRG93bmxvYWRGaWxlUGFyYW1zLFxuICAgIGNhbGxiYWNrPzogRnVuY3Rpb25cbiAgKTogUHJvbWlzZTxJQ2xvdWRiYXNlRG93bmxvYWRGaWxlUmVzdWx0PiB7XG4gICAgY29uc3QgeyBmaWxlSUQgfSA9IHBhcmFtcztcbiAgICBpZiAoIWlzU3RyaW5nKGZpbGVJRCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGNvZGU6IEVSUk9SUy5JTlZBTElEX1BBUkFNUyxcbiAgICAgICAgbXNnOiBgWyR7Q09NUE9ORU5UX05BTUV9LmdldFRlbXBGaWxlVVJMXSBmaWxlSUQgbXVzdCBiZSBzdHJpbmdgXG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgY29uc3QgdG1wVXJsUmVzID0gYXdhaXQgdGhpcy5nZXRUZW1wRmlsZVVSTC5jYWxsKHRoaXMsIHtcbiAgICAgIGZpbGVMaXN0OiBbe1xuICAgICAgICBmaWxlSUQsXG4gICAgICAgIG1heEFnZTogNjAwXG4gICAgICB9XVxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzID0gdG1wVXJsUmVzLmZpbGVMaXN0WzBdO1xuXG4gICAgaWYgKHJlcy5jb2RlICE9PSAnU1VDQ0VTUycpIHtcbiAgICAgIHJldHVybiBleGVjQ2FsbGJhY2soY2FsbGJhY2ssIHJlcyk7XG4gICAgfVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5yZXF1ZXN0O1xuXG4gICAgY29uc3QgdG1wVXJsID0gZW5jb2RlVVJJKHJlcy5kb3dubG9hZF91cmwpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVxdWVzdC5kb3dubG9hZCh7IHVybDogdG1wVXJsIH0pO1xuICAgIHJldHVybiBleGVjQ2FsbGJhY2soY2FsbGJhY2ssIG51bGwsIHJlc3VsdCk7XG4gIH1cbn1cblxuY29uc3QgY2xvdWRiYXNlU3RvcmFnZSA9IG5ldyBDbG91ZGJhc2VTdG9yYWdlKCk7XG5jb25zdCBjb21wb25lbnQ6IElDbG91ZGJhc2VDb21wb25lbnQgPSB7XG4gIG5hbWU6IENPTVBPTkVOVF9OQU1FLFxuICBlbnRpdHk6IHtcbiAgICB1cGxvYWRGaWxlOiBjbG91ZGJhc2VTdG9yYWdlLnVwbG9hZEZpbGUsXG4gICAgZGVsZXRlRmlsZTogY2xvdWRiYXNlU3RvcmFnZS5kZWxldGVGaWxlLFxuICAgIGdldFRlbXBGaWxlVVJMOiBjbG91ZGJhc2VTdG9yYWdlLmdldFRlbXBGaWxlVVJMLFxuICAgIGRvd25sb2FkRmlsZTogY2xvdWRiYXNlU3RvcmFnZS5kb3dubG9hZEZpbGUsXG4gICAgZ2V0VXBsb2FkTWV0YWRhdGE6IGNsb3VkYmFzZVN0b3JhZ2UuZ2V0VXBsb2FkTWV0YWRhdGFcbiAgfVxufVxuXG50cnkge1xuICBjbG91ZGJhc2UucmVnaXN0ZXJDb21wb25lbnQoY29tcG9uZW50KTtcbn0gY2F0Y2ggKGUpIHsgfVxuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJTdG9yYWdlKGFwcDogUGljazxJQ2xvdWRiYXNlLCAncmVnaXN0ZXJDb21wb25lbnQnPikge1xuICB0cnkge1xuICAgIGFwcC5yZWdpc3RlckNvbXBvbmVudChjb21wb25lbnQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS53YXJuKGUpO1xuICB9XG59Il19
package/dist/esm/index.js CHANGED
@@ -1,3 +1,14 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
1
12
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
13
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
14
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -53,25 +64,54 @@ var CloudbaseStorage = (function () {
53
64
  }
54
65
  CloudbaseStorage.prototype.uploadFile = function (params, callback) {
55
66
  return __awaiter(this, void 0, void 0, function () {
56
- var cloudPath, filePath, onUploadProgress, action, request, metaData, _a, url, authorization, token, fileId, cosFileId, download_url, requestId, data, res;
57
- return __generator(this, function (_b) {
58
- switch (_b.label) {
67
+ var cloudPath, filePath, onUploadProgress, _a, method, _b, headers, uploadMethod, action, request, metaDataParam, metaData, _c, url, authorization, token, fileId, cosFileId, download_url, requestId, res, data, res;
68
+ return __generator(this, function (_d) {
69
+ switch (_d.label) {
59
70
  case 0:
60
- cloudPath = params.cloudPath, filePath = params.filePath, onUploadProgress = params.onUploadProgress;
71
+ cloudPath = params.cloudPath, filePath = params.filePath, onUploadProgress = params.onUploadProgress, _a = params.method, method = _a === void 0 ? 'put' : _a, _b = params.headers, headers = _b === void 0 ? {} : _b;
61
72
  if (!isString(cloudPath) || !filePath) {
62
73
  throw new Error(JSON.stringify({
63
74
  code: ERRORS.INVALID_PARAMS,
64
75
  msg: "[" + COMPONENT_NAME + ".uploadFile] invalid params"
65
76
  }));
66
77
  }
78
+ uploadMethod = { put: 'put', post: 'post' }[method.toLocaleLowerCase()] || 'put';
67
79
  action = 'storage.getUploadMetadata';
68
80
  request = this.request;
69
- return [4, request.send(action, {
70
- path: cloudPath
71
- })];
81
+ metaDataParam = {
82
+ path: cloudPath,
83
+ method: uploadMethod,
84
+ };
85
+ if (uploadMethod === 'put') {
86
+ metaDataParam["headers"] = headers;
87
+ }
88
+ return [4, request.send(action, metaDataParam)];
72
89
  case 1:
73
- metaData = _b.sent();
74
- _a = metaData.data, url = _a.url, authorization = _a.authorization, token = _a.token, fileId = _a.fileId, cosFileId = _a.cosFileId, download_url = _a.download_url, requestId = metaData.requestId;
90
+ metaData = _d.sent();
91
+ _c = metaData.data, url = _c.url, authorization = _c.authorization, token = _c.token, fileId = _c.fileId, cosFileId = _c.cosFileId, download_url = _c.download_url, requestId = metaData.requestId;
92
+ if (!(uploadMethod === 'put')) return [3, 3];
93
+ return [4, request.upload({
94
+ url: url,
95
+ method: 'put',
96
+ headers: __assign(__assign({}, headers), { authorization: authorization, 'x-cos-meta-fileid': cosFileId, 'x-cos-security-token': token }),
97
+ file: filePath,
98
+ name: cloudPath,
99
+ onUploadProgress: onUploadProgress
100
+ })];
101
+ case 2:
102
+ res = _d.sent();
103
+ if (res.statusCode === 200) {
104
+ return [2, execCallback(callback, null, {
105
+ fileID: fileId,
106
+ download_url: download_url,
107
+ requestId: requestId
108
+ })];
109
+ }
110
+ else {
111
+ return [2, execCallback(callback, new Error("[" + getSdkName() + "][" + ERRORS.OPERATION_FAIL + "][" + COMPONENT_NAME + "]:" + res.data))];
112
+ }
113
+ return [3, 5];
114
+ case 3:
75
115
  data = {
76
116
  key: cloudPath,
77
117
  signature: authorization,
@@ -86,8 +126,8 @@ var CloudbaseStorage = (function () {
86
126
  name: cloudPath,
87
127
  onUploadProgress: onUploadProgress
88
128
  })];
89
- case 2:
90
- res = _b.sent();
129
+ case 4:
130
+ res = _d.sent();
91
131
  if (res.statusCode === 201) {
92
132
  return [2, execCallback(callback, null, {
93
133
  fileID: fileId,
@@ -98,7 +138,8 @@ var CloudbaseStorage = (function () {
98
138
  else {
99
139
  return [2, execCallback(callback, new Error("[" + getSdkName() + "][" + ERRORS.OPERATION_FAIL + "][" + COMPONENT_NAME + "]:" + res.data))];
100
140
  }
101
- return [2];
141
+ _d.label = 5;
142
+ case 5: return [2];
102
143
  }
103
144
  });
104
145
  });
@@ -387,4 +428,4 @@ export function registerStorage(app) {
387
428
  console.warn(e);
388
429
  }
389
430
  }
390
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFtQnpELElBQUEsVUFBVSxHQUFpQyxTQUFTLFdBQTFDLEVBQUUsTUFBTSxHQUF5QixTQUFTLE9BQWxDLEVBQUUsa0JBQWtCLEdBQUssU0FBUyxtQkFBZCxDQUFlO0FBQ3JELElBQUEsT0FBTyxHQUE0QyxLQUFLLFFBQWpELEVBQUUsUUFBUSxHQUFrQyxLQUFLLFNBQXZDLEVBQUUsYUFBYSxHQUFtQixLQUFLLGNBQXhCLEVBQUUsWUFBWSxHQUFLLEtBQUssYUFBVixDQUFXO0FBQ3pELElBQUEsb0JBQW9CLEdBQUssT0FBTyxxQkFBWixDQUFhO0FBRXpDLElBQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQztBQUVqQztJQUFBO0lBOFFBLENBQUM7SUEvUGMscUNBQVUsR0FBdkIsVUFDRSxNQUFrQyxFQUNsQyxRQUFtQjs7Ozs7O3dCQUVYLFNBQVMsR0FBaUMsTUFBTSxVQUF2QyxFQUFFLFFBQVEsR0FBdUIsTUFBTSxTQUE3QixFQUFFLGdCQUFnQixHQUFLLE1BQU0saUJBQVgsQ0FBWTt3QkFDekQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTs0QkFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO2dDQUM3QixJQUFJLEVBQUUsTUFBTSxDQUFDLGNBQWM7Z0NBQzNCLEdBQUcsRUFBRSxNQUFJLGNBQWMsZ0NBQTZCOzZCQUNyRCxDQUFDLENBQUMsQ0FBQzt5QkFDTDt3QkFDSyxNQUFNLEdBQUcsMkJBQTJCLENBQUM7d0JBRXJDLE9BQU8sR0FBRyxJQUFJLENBQUMs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Q0FBQztLQUNsQztJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNqQjtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb25zdGFudHMsIHV0aWxzLCBoZWxwZXJzIH0gZnJvbSAnQGNsb3VkYmFzZS91dGlsaXRpZXMnO1xuaW1wb3J0IHsgSUNsb3VkYmFzZSB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMnO1xuaW1wb3J0IHsgSUNsb3VkYmFzZUNvbXBvbmVudCB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMvY29tcG9uZW50JztcbmltcG9ydCB7XG4gIElDbG91ZGJhc2VGaWxlTWV0YURhdGFSZXMsXG4gIElDbG91ZGJhc2VGaWxlSW5mbyxcbiAgSUNsb3VkYmFzZVVwbG9hZEZpbGVQYXJhbXMsXG4gIElDbG91ZGJhc2VVcGxvYWRGaWxlUmVzdWx0LFxuICBJQ2xvdWRiYXNlR2V0VXBsb2FkTWV0YWRhdGFQYXJhbXMsXG4gIElDbG91ZGJhc2VEZWxldGVGaWxlUGFyYW1zLFxuICBJQ2xvdWRiYXNlRGVsZXRlRmlsZVJlc3VsdCxcbiAgSUNsb3VkYmFzZUdldFRlbXBGaWxlVVJMUmVzdWx0LFxuICBJQ2xvdWRiYXNlR2V0VGVtcEZpbGVVUkxQYXJhbXMsXG4gIElDbG91ZGJhc2VEb3dubG9hZEZpbGVSZXN1bHQsXG4gIElDbG91ZGJhc2VEb3dubG9hZEZpbGVQYXJhbXNcbn0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcy9zdG9yYWdlJztcblxuZGVjbGFyZSBjb25zdCBjbG91ZGJhc2U6IElDbG91ZGJhc2U7XG5cbmNvbnN0IHsgZ2V0U2RrTmFtZSwgRVJST1JTLCBDT01NVU5JVFlfU0lURV9VUkwgfSA9IGNvbnN0YW50cztcbmNvbnN0IHsgaXNBcnJheSwgaXNTdHJpbmcsIGlzUGFsaW5PYmplY3QsIGV4ZWNDYWxsYmFjayB9ID0gdXRpbHM7XG5jb25zdCB7IGNhdGNoRXJyb3JzRGVjb3JhdG9yIH0gPSBoZWxwZXJzO1xuXG5jb25zdCBDT01QT05FTlRfTkFNRSA9ICdzdG9yYWdlJztcblxuY2xhc3MgQ2xvdWRiYXNlU3RvcmFnZSB7XG4gIEBjYXRjaEVycm9yc0RlY29yYXRvcih7XG4gICAgY3VzdG9tSW5mbzoge1xuICAgICAgY2xhc3NOYW1lOiAnQ2xvdWRiYXNlJyxcbiAgICAgIG1ldGhvZE5hbWU6ICd1cGxvYWRGaWxlJ1xuICAgIH0sXG4gICAgdGl0bGU6ICfkuIrkvKDmlofku7blpLHotKUnLFxuICAgIG1lc3NhZ2VzOiBbXG4gICAgICAn6K+356Gu6K6k5Lul5LiL5ZCE6aG577yaJyxcbiAgICAgICcgIDEgLSDosIPnlKggdXBsb2FkRmlsZSgpIOeahOivreazleaIluWPguaVsOaYr+WQpuato+ehricsXG4gICAgICAnICAyIC0g5b2T5YmN5Z+f5ZCN5piv5ZCm5Zyo5a6J5YWo5Z+f5ZCN5YiX6KGo5Lit77yaaHR0cHM6Ly9jb25zb2xlLmNsb3VkLnRlbmNlbnQuY29tL3RjYi9lbnYvc2FmZXR5JyxcbiAgICAgICcgIDMgLSDkupHlrZjlgqjlronlhajop4TliJnmmK/lkKbpmZDliLbkuoblvZPliY3nmbvlvZXnirbmgIHorr/pl64nLFxuICAgICAgYOWmguaenOmXrumimOS+neeEtuWtmOWcqO+8jOW7uuiuruWIsOWumOaWuemXruetlOekvuWMuuaPkOmXruaIluWvu+aJvuW4ruWKqe+8miR7Q09NTVVOSVRZX1NJVEVfVVJMfWBcbiAgICBdXG4gIH0pXG4gIHB1YmxpYyBhc3luYyB1cGxvYWRGaWxlKFxuICAgIHBhcmFtczogSUNsb3VkYmFzZVVwbG9hZEZpbGVQYXJhbXMsXG4gICAgY2FsbGJhY2s/OiBGdW5jdGlvblxuICApOiBQcm9taXNlPElDbG91ZGJhc2VVcGxvYWRGaWxlUmVzdWx0PiB7XG4gICAgY29uc3QgeyBjbG91ZFBhdGgsIGZpbGVQYXRoLCBvblVwbG9hZFByb2dyZXNzIH0gPSBwYXJhbXM7XG4gICAgaWYgKCFpc1N0cmluZyhjbG91ZFBhdGgpIHx8ICFmaWxlUGF0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgY29kZTogRVJST1JTLklOVkFMSURfUEFSQU1TLFxuICAgICAgICBtc2c6IGBbJHtDT01QT05FTlRfTkFNRX0udXBsb2FkRmlsZV0gaW52YWxpZCBwYXJhbXNgXG4gICAgICB9KSk7XG4gICAgfVxuICAgIGNvbnN0IGFjdGlvbiA9ICdzdG9yYWdlLmdldFVwbG9hZE1ldGFkYXRhJztcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgcmVxdWVzdCA9IHRoaXMucmVxdWVzdDtcbiAgICBjb25zdCBtZXRhRGF0YTogSUNsb3VkYmFzZUZpbGVNZXRhRGF0YVJlcyA9IGF3YWl0IHJlcXVlc3Quc2VuZChhY3Rpb24sIHtcbiAgICAgIHBhdGg6IGNsb3VkUGF0aFxuICAgIH0pO1xuXG4gICAgY29uc3Qge1xuICAgICAgZGF0YTogeyB1cmwsIGF1dGhvcml6YXRpb24sIHRva2VuLCBmaWxlSWQsIGNvc0ZpbGVJZCwgZG93bmxvYWRfdXJsIH0sXG4gICAgICByZXF1ZXN0SWRcbiAgICB9ID0gbWV0YURhdGE7XG5cblxuICAgIC8vIOS9v+eUqOS4tOaXtuWvhuWMmeS4iuS8oOaWh+S7tlxuICAgIC8vIEBzZWUgaHR0cHM6Ly9jbG91ZC50ZW5jZW50LmNvbS9kb2N1bWVudC9wcm9kdWN0LzQzNi8xNDA0OFxuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBrZXk6IGNsb3VkUGF0aCxcbiAgICAgIHNpZ25hdHVyZTogYXV0aG9yaXphdGlvbixcbiAgICAgICd4LWNvcy1tZXRhLWZpbGVpZCc6IGNvc0ZpbGVJZCxcbiAgICAgICdzdWNjZXNzX2FjdGlvbl9zdGF0dXMnOiAnMjAxJyxcbiAgICAgICd4LWNvcy1zZWN1cml0eS10b2tlbic6IHRva2VuXG4gICAgfTtcbiAgICBjb25zdCByZXMgPSBhd2FpdCByZXF1ZXN0LnVwbG9hZCh7XG4gICAgICB1cmwsXG4gICAgICBkYXRhLFxuICAgICAgZmlsZTogZmlsZVBhdGgsXG4gICAgICBuYW1lOiBjbG91ZFBhdGgsXG4gICAgICBvblVwbG9hZFByb2dyZXNzXG4gICAgfSk7XG5cbiAgICBpZiAocmVzLnN0YXR1c0NvZGUgPT09IDIwMSkge1xuICAgICAgcmV0dXJuIGV4ZWNDYWxsYmFjayhjYWxsYmFjaywgbnVsbCwge1xuICAgICAgICBmaWxlSUQ6IGZpbGVJZCxcbiAgICAgICAgZG93bmxvYWRfdXJsLFxuICAgICAgICByZXF1ZXN0SWRcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZXhlY0NhbGxiYWNrKGNhbGxiYWNrLCBuZXcgRXJyb3IoYFske2dldFNka05hbWUoKX1dWyR7RVJST1JTLk9QRVJBVElPTl9GQUlMfV1bJHtDT01QT05FTlRfTkFNRX1dOiR7cmVzLmRhdGF9YCkpO1xuICAgIH1cbiAgfVxuICBAY2F0Y2hFcnJvcnNEZWNvcmF0b3Ioe1xuICAgIGN1c3RvbUluZm86IHtcbiAgICAgIGNsYXNzTmFtZTogJ0Nsb3VkYmFzZScsXG4gICAgICBtZXRob2ROYW1lOiAnZ2V0VXBsb2FkTWV0YWRhdGEnXG4gICAgfSxcbiAgICB0aXRsZTogJ+iOt+WPluS4iuS8oOWFg+S/oeaBr+Wksei0pScsXG4gICAgbWVzc2FnZXM6IFtcbiAgICAgICfor7fnoa7orqTku6XkuIvlkITpobnvvJonLFxuICAgICAgJyAgMSAtIOiwg+eUqCBnZXRVcGxvYWRNZXRhZGF0YSgpIOeahOivreazleaIluWPguaVsOaYr+WQpuato+ehricsXG4gICAgICAnICAyIC0g5b2T5YmN5Z+f5ZCN5piv5ZCm5Zyo5a6J5YWo5Z+f5ZCN5YiX6KGo5Lit77yaaHR0cHM6Ly9jb25zb2xlLmNsb3VkLnRlbmNlbnQuY29tL3RjYi9lbnYvc2FmZXR5JyxcbiAgICAgICcgIDMgLSDkupHlrZjlgqjlronlhajop4TliJnmmK/lkKbpmZDliLbkuoblvZPliY3nmbvlvZXnirbmgIHorr/pl64nLFxuICAgICAgYOWmguaenOmXrumimOS+neeEtuWtmOWcqO+8jOW7uuiuruWIsOWumOaWuemXruetlOekvuWMuuaPkOmXruaIluWvu+aJvuW4ruWKqe+8miR7Q09NTVVOSVRZX1NJVEVfVVJMfWBcbiAgICBdXG4gIH0pXG4gIHB1YmxpYyBhc3luYyBnZXRVcGxvYWRNZXRhZGF0YShcbiAgICBwYXJhbXM6IElDbG91ZGJhc2VHZXRVcGxvYWRNZXRhZGF0YVBhcmFtcyxcbiAgICBjYWxsYmFjaz86IEZ1bmN0aW9uXG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgeyBjbG91ZFBhdGggfSA9IHBhcmFtcztcbiAgICBpZiAoIWlzU3RyaW5nKGNsb3VkUGF0aCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGNvZGU6IEVSUk9SUy5JTlZBTElEX1BBUkFNUyxcbiAgICAgICAgbXNnOiBgWyR7Q09NUE9ORU5UX05BTUV9LmdldFVwbG9hZE1ldGFkYXRhXSBpbnZhbGlkIGNsb3VkUGF0aGBcbiAgICAgIH0pKTtcbiAgICB9XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLnJlcXVlc3Q7XG4gICAgY29uc3QgYWN0aW9uID0gJ3N0b3JhZ2UuZ2V0VXBsb2FkTWV0YWRhdGEnO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG1ldGFEYXRhID0gYXdhaXQgcmVxdWVzdC5zZW5kKGFjdGlvbiwge1xuICAgICAgICBwYXRoOiBjbG91ZFBhdGhcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGV4ZWNDYWxsYmFjayhjYWxsYmFjaywgbnVsbCwgbWV0YURhdGEpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIGV4ZWNDYWxsYmFjayhjYWxsYmFjaywgZXJyKTtcbiAgICB9XG4gIH1cbiAgQGNhdGNoRXJyb3JzRGVjb3JhdG9yKHtcbiAgICBjdXN0b21JbmZvOiB7XG4gICAgICBjbGFzc05hbWU6ICdDbG91ZGJhc2UnLFxuICAgICAgbWV0aG9kTmFtZTogJ2RlbGV0ZUZpbGUnXG4gICAgfSxcbiAgICB0aXRsZTogJ+WIoOmZpOaWh+S7tuWksei0pScsXG4gICAgbWVzc2FnZXM6IFtcbiAgICAgICfor7fnoa7orqTku6XkuIvlkITpobnvvJonLFxuICAgICAgJyAgMSAtIOiwg+eUqCBkZWxldGVGaWxlKCkg55qE6K+t5rOV5oiW5Y+C5pWw5piv5ZCm5q2j56GuJyxcbiAgICAgICcgIDIgLSDlvZPliY3ln5/lkI3mmK/lkKblnKjlronlhajln5/lkI3liJfooajkuK3vvJpodHRwczovL2NvbnNvbGUuY2xvdWQudGVuY2VudC5jb20vdGNiL2Vudi9zYWZldHknLFxuICAgICAgJyAgMyAtIOS6keWtmOWCqOWuieWFqOinhOWImeaYr+WQpumZkOWItuS6huW9k+WJjeeZu+W9leeKtuaAgeiuv+mXricsXG4gICAgICBg5aaC5p6c6Zeu6aKY5L6d54S25a2Y5Zyo77yM5bu66K6u5Yiw5a6Y5pa56Zeu562U56S+5Yy65o+Q6Zeu5oiW5a+75om+5biu5Yqp77yaJHtDT01NVU5JVFlfU0lURV9VUkx9YFxuICAgIF1cbiAgfSlcbiAgcHVibGljIGFzeW5jIGRlbGV0ZUZpbGUoXG4gICAgcGFyYW1zOiBJQ2xvdWRiYXNlRGVsZXRlRmlsZVBhcmFtcyxcbiAgICBjYWxsYmFjaz86IEZ1bmN0aW9uXG4gICk6IFByb21pc2U8SUNsb3VkYmFzZURlbGV0ZUZpbGVSZXN1bHQ+IHtcbiAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSBwYXJhbXM7XG5cbiAgICBpZiAoIWZpbGVMaXN0IHx8ICFpc0FycmF5KGZpbGVMaXN0KSB8fCBmaWxlTGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGNvZGU6IEVSUk9SUy5JTlZBTElEX1BBUkFNUyxcbiAgICAgICAgbXNnOiBgWyR7Q09NUE9ORU5UX05BTUV9LmRlbGV0ZUZpbGVdIGZpbGVMaXN0IG11c3Qgbm90IGJlIGVtcHR5YFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgZmlsZUlkIG9mIGZpbGVMaXN0KSB7XG4gICAgICBpZiAoIWZpbGVJZCB8fCAhaXNTdHJpbmcoZmlsZUlkKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGNvZGU6IEVSUk9SUy5JTlZBTElEX1BBUkFNUyxcbiAgICAgICAgICBtc2c6IGBbJHtDT01QT05FTlRfTkFNRX0uZGVsZXRlRmlsZV0gZmlsZUlEIG11c3QgYmUgc3RyaW5nYFxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgYWN0aW9uID0gJ3N0b3JhZ2UuYmF0Y2hEZWxldGVGaWxlJztcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgcmVxdWVzdCA9IHRoaXMucmVxdWVzdDtcbiAgICBjb25zdCByZXMgPSBhd2FpdCByZXF1ZXN0LnNlbmQoYWN0aW9uLCB7XG4gICAgICBmaWxlaWRfbGlzdDogZmlsZUxpc3RcbiAgICB9KTtcblxuICAgIGlmIChyZXMuY29kZSkge1xuICAgICAgcmV0dXJuIGV4ZWNDYWxsYmFjayhjYWxsYmFjaywgbnVsbCwgcmVzKTtcbiAgICB9XG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIGZpbGVMaXN0OiByZXMuZGF0YS5kZWxldGVfbGlzdCxcbiAgICAgIHJlcXVlc3RJZDogcmVzLnJlcXVlc3RJZFxuICAgIH07XG4gICAgcmV0dXJuIGV4ZWNDYWxsYmFjayhjYWxsYmFjaywgbnVsbCwgZGF0YSk7O1xuICB9XG4gIEBjYXRjaEVycm9yc0RlY29yYXRvcih7XG4gICAgY3VzdG9tSW5mbzoge1xuICAgICAgY2xhc3NOYW1lOiAnQ2xvdWRiYXNlJyxcbiAgICAgIG1ldGhvZE5hbWU6ICdnZXRUZW1wRmlsZVVSTCdcbiAgICB9LFxuICAgIHRpdGxlOiAn6I635Y+W5paH5Lu25LiL6L296ZO+5o6lJyxcbiAgICBtZXNzYWdlczogW1xuICAgICAgJ+ivt+ehruiupOS7peS4i+WQhOmhue+8micsXG4gICAgICAnICAxIC0g6LCD55SoIGdldFRlbXBGaWxlVVJMKCkg55qE6K+t5rOV5oiW5Y+C5pWw5piv5ZCm5q2j56GuJyxcbiAgICAgICcgIDIgLSDlvZPliY3ln5/lkI3mmK/lkKblnKjlronlhajln5/lkI3liJfooajkuK3vvJpodHRwczovL2NvbnNvbGUuY2xvdWQudGVuY2VudC5jb20vdGNiL2Vudi9zYWZldHknLFxuICAgICAgJyAgMyAtIOS6keWtmOWCqOWuieWFqOinhOWImeaYr+WQpumZkOWItuS6huW9k+WJjeeZu+W9leeKtuaAgeiuv+mXricsXG4gICAgICBg5aaC5p6c6Zeu6aKY5L6d54S25a2Y5Zyo77yM5bu66K6u5Yiw5a6Y5pa56Zeu562U56S+5Yy65o+Q6Zeu5oiW5a+75om+5biu5Yqp77yaJHtDT01NVU5JVFlfU0lURV9VUkx9YFxuICAgIF1cbiAgfSlcbiAgcHVibGljIGFzeW5jIGdldFRlbXBGaWxlVVJMKFxuICAgIHBhcmFtczogSUNsb3VkYmFzZUdldFRlbXBGaWxlVVJMUGFyYW1zLFxuICAgIGNhbGxiYWNrPzogRnVuY3Rpb25cbiAgKTogUHJvbWlzZTxJQ2xvdWRiYXNlR2V0VGVtcEZpbGVVUkxSZXN1bHQ+IHtcbiAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSBwYXJhbXM7XG5cbiAgICBpZiAoIWZpbGVMaXN0IHx8ICFpc0FycmF5KGZpbGVMaXN0KSB8fCBmaWxlTGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGNvZGU6IEVSUk9SUy5JTlZBTElEX1BBUkFNUyxcbiAgICAgICAgbXNnOiBgWyR7Q09NUE9ORU5UX05BTUV9LmdldFRlbXBGaWxlVVJMXSBmaWxlTGlzdCBtdXN0IG5vdCBiZSBlbXB0eWBcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBjb25zdCBmaWxlX2xpc3QgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZUxpc3QpIHtcbiAgICAgIGlmIChpc1BhbGluT2JqZWN0KGZpbGUpKSB7XG4gICAgICAgIGlmICghZmlsZS5oYXNPd25Qcm9wZXJ0eSgnZmlsZUlEJykgfHwgIWZpbGUuaGFzT3duUHJvcGVydHkoJ21heEFnZScpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIGNvZGU6IEVSUk9SUy5JTlZBTElEX1BBUkFNUyxcbiAgICAgICAgICAgIG1zZzogYFske0NPTVBPTkVOVF9OQU1FfS5nZXRUZW1wRmlsZVVSTF0gZmlsZSBpbmZvIG11c3QgaW5jbHVkZSBmaWxlSUQgYW5kIG1heEFnZWBcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH1cblxuICAgICAgICBmaWxlX2xpc3QucHVzaCh7XG4gICAgICAgICAgZmlsZWlkOiAoZmlsZSBhcyBJQ2xvdWRiYXNlRmlsZUluZm8pLmZpbGVJRCxcbiAgICAgICAgICBtYXhfYWdlOiAoZmlsZSBhcyBJQ2xvdWRiYXNlRmlsZUluZm8pLm1heEFnZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoaXNTdHJpbmcoZmlsZSkpIHtcbiAgICAgICAgZmlsZV9saXN0LnB1c2goe1xuICAgICAgICAgIGZpbGVpZDogZmlsZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgY29kZTogRVJST1JTLklOVkFMSURfUEFSQU1TLFxuICAgICAgICAgIG1zZzogYFske0NPTVBPTkVOVF9OQU1FfS5nZXRUZW1wRmlsZVVSTF0gaW52YWxpZCBmaWxlTGlzdGBcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGFjdGlvbiA9ICdzdG9yYWdlLmJhdGNoR2V0RG93bmxvYWRVcmwnO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5yZXF1ZXN0O1xuXG4gICAgY29uc3QgcmVzID0gYXdhaXQgcmVxdWVzdC5zZW5kKGFjdGlvbiwgeyBmaWxlX2xpc3QgfSk7XG5cbiAgICBpZiAocmVzLmNvZGUpIHtcbiAgICAgIHJldHVybiBleGVjQ2FsbGJhY2soY2FsbGJhY2ssIG51bGwsIHJlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV4ZWNDYWxsYmFjayhjYWxsYmFjaywgbnVsbCwge1xuICAgICAgZmlsZUxpc3Q6IHJlcy5kYXRhLmRvd25sb2FkX2xpc3QsXG4gICAgICByZXF1ZXN0SWQ6IHJlcy5yZXF1ZXN0SWRcbiAgICB9KTtcbiAgfVxuICBAY2F0Y2hFcnJvcnNEZWNvcmF0b3Ioe1xuICAgIGN1c3RvbUluZm86IHtcbiAgICAgIGNsYXNzTmFtZTogJ0Nsb3VkYmFzZScsXG4gICAgICBtZXRob2ROYW1lOiAnZG93bmxvYWRGaWxlJ1xuICAgIH0sXG4gICAgdGl0bGU6ICfkuIvovb3mlofku7blpLHotKUnLFxuICAgIG1lc3NhZ2VzOiBbXG4gICAgICAn6K+356Gu6K6k5Lul5LiL5ZCE6aG577yaJyxcbiAgICAgICcgIDEgLSDosIPnlKggZG93bmxvYWRGaWxlKCkg55qE6K+t5rOV5oiW5Y+C5pWw5piv5ZCm5q2j56GuJyxcbiAgICAgICcgIDIgLSDlvZPliY3ln5/lkI3mmK/lkKblnKjlronlhajln5/lkI3liJfooajkuK3vvJpodHRwczovL2NvbnNvbGUuY2xvdWQudGVuY2VudC5jb20vdGNiL2Vudi9zYWZldHknLFxuICAgICAgJyAgMyAtIOS6keWtmOWCqOWuieWFqOinhOWImeaYr+WQpumZkOWItuS6huW9k+WJjeeZu+W9leeKtuaAgeiuv+mXricsXG4gICAgICBg5aaC5p6c6Zeu6aKY5L6d54S25a2Y5Zyo77yM5bu66K6u5Yiw5a6Y5pa56Zeu562U56S+5Yy65o+Q6Zeu5oiW5a+75om+5biu5Yqp77yaJHtDT01NVU5JVFlfU0lURV9VUkx9YFxuICAgIF1cbiAgfSlcbiAgcHVibGljIGFzeW5jIGRvd25sb2FkRmlsZShcbiAgICBwYXJhbXM6IElDbG91ZGJhc2VEb3dubG9hZEZpbGVQYXJhbXMsXG4gICAgY2FsbGJhY2s/OiBGdW5jdGlvblxuICApOiBQcm9taXNlPElDbG91ZGJhc2VEb3dubG9hZEZpbGVSZXN1bHQ+IHtcbiAgICBjb25zdCB7IGZpbGVJRCB9ID0gcGFyYW1zO1xuICAgIGlmICghaXNTdHJpbmcoZmlsZUlEKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgY29kZTogRVJST1JTLklOVkFMSURfUEFSQU1TLFxuICAgICAgICBtc2c6IGBbJHtDT01QT05FTlRfTkFNRX0uZ2V0VGVtcEZpbGVVUkxdIGZpbGVJRCBtdXN0IGJlIHN0cmluZ2BcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBjb25zdCB0bXBVcmxSZXMgPSBhd2FpdCB0aGlzLmdldFRlbXBGaWxlVVJMLmNhbGwodGhpcywge1xuICAgICAgZmlsZUxpc3Q6IFt7XG4gICAgICAgIGZpbGVJRCxcbiAgICAgICAgbWF4QWdlOiA2MDBcbiAgICAgIH1dXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXMgPSB0bXBVcmxSZXMuZmlsZUxpc3RbMF07XG5cbiAgICBpZiAocmVzLmNvZGUgIT09ICdTVUNDRVNTJykge1xuICAgICAgcmV0dXJuIGV4ZWNDYWxsYmFjayhjYWxsYmFjaywgcmVzKTtcbiAgICB9XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLnJlcXVlc3Q7XG5cbiAgICBjb25zdCB0bXBVcmwgPSBlbmNvZGVVUkkocmVzLmRvd25sb2FkX3VybCk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXF1ZXN0LmRvd25sb2FkKHsgdXJsOiB0bXBVcmwgfSk7XG4gICAgcmV0dXJuIGV4ZWNDYWxsYmFjayhjYWxsYmFjaywgbnVsbCwgcmVzdWx0KTtcbiAgfVxufVxuXG5jb25zdCBjbG91ZGJhc2VTdG9yYWdlID0gbmV3IENsb3VkYmFzZVN0b3JhZ2UoKTtcbmNvbnN0IGNvbXBvbmVudDogSUNsb3VkYmFzZUNvbXBvbmVudCA9IHtcbiAgbmFtZTogQ09NUE9ORU5UX05BTUUsXG4gIGVudGl0eToge1xuICAgIHVwbG9hZEZpbGU6IGNsb3VkYmFzZVN0b3JhZ2UudXBsb2FkRmlsZSxcbiAgICBkZWxldGVGaWxlOiBjbG91ZGJhc2VTdG9yYWdlLmRlbGV0ZUZpbGUsXG4gICAgZ2V0VGVtcEZpbGVVUkw6IGNsb3VkYmFzZVN0b3JhZ2UuZ2V0VGVtcEZpbGVVUkwsXG4gICAgZG93bmxvYWRGaWxlOiBjbG91ZGJhc2VTdG9yYWdlLmRvd25sb2FkRmlsZSxcbiAgICBnZXRVcGxvYWRNZXRhZGF0YTogY2xvdWRiYXNlU3RvcmFnZS5nZXRVcGxvYWRNZXRhZGF0YVxuICB9XG59XG5cbnRyeSB7XG4gIGNsb3VkYmFzZS5yZWdpc3RlckNvbXBvbmVudChjb21wb25lbnQpO1xufSBjYXRjaCAoZSkgeyB9XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlclN0b3JhZ2UoYXBwOiBQaWNrPElDbG91ZGJhc2UsICdyZWdpc3RlckNvbXBvbmVudCc+KSB7XG4gIHRyeSB7XG4gICAgYXBwLnJlZ2lzdGVyQ29tcG9uZW50KGNvbXBvbmVudCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLndhcm4oZSk7XG4gIH1cbn0iXX0=
431
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQW1CekQsSUFBQSxVQUFVLEdBQWlDLFNBQVMsV0FBMUMsRUFBRSxNQUFNLEdBQXlCLFNBQVMsT0FBbEMsRUFBRSxrQkFBa0IsR0FBSyxTQUFTLG1CQUFkLENBQWU7QUFDckQsSUFBQSxPQUFPLEdBQTRDLEtBQUssUUFBakQsRUFBRSxRQUFRLEdBQWtDLEtBQUssU0FBdkMsRUFBRSxhQUFhLEdBQW1CLEtBQUssY0FBeEIsRUFBRSxZQUFZLEdBQUssS0FBSyxhQUFWLENBQVc7QUFDekQsSUFBQSxvQkFBb0IsR0FBSyxPQUFPLHFCQUFaLENBQWE7QUFFekMsSUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDO0FBRWpDO0lBQUE7SUE4U0EsQ0FBQztJQS9SYyxxQ0FBVSxHQUF2QixVQUNFLE1BQWtDLEVBQ2xDLFFBQW1COzs7Ozs7d0JBRVgsU0FBUyxHQUErRCxNQUFNLFVBQXJFLEVBQUUsUUFBUSxHQUFxRCxNQUFNLFNBQTNELEVBQUUsZ0JBQWdCLEdBQW1DLE1BQU0saUJBQXpDLEVBQUUsS0FBaUMsTUFBTSxPQUF6QixFQUFkLE1BQU0sbUJBQUcsS0FBSyxLQUFBLEVBQUUsS0FBaUIsTUFBTSxRQUFYLEVBQVosT0FBTyxtQkFBRyxFQUFFLEtBQUEsQ0FBWTt3QkFDdkYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTs0QkFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO2dDQUM3QixJQUFJLEVBQUUsTUFBTSxDQUFDLGNBQWM7Z0NBQzNCLEdB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O0lBQ3hFLElBQUk7UUFDRixHQUFHLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDbEM7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDakI7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29uc3RhbnRzLCB1dGlscywgaGVscGVycyB9IGZyb20gJ0BjbG91ZGJhc2UvdXRpbGl0aWVzJztcbmltcG9ydCB7IElDbG91ZGJhc2UgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzJztcbmltcG9ydCB7IElDbG91ZGJhc2VDb21wb25lbnQgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzL2NvbXBvbmVudCc7XG5pbXBvcnQge1xuICBJQ2xvdWRiYXNlRmlsZU1ldGFEYXRhUmVzLFxuICBJQ2xvdWRiYXNlRmlsZUluZm8sXG4gIElDbG91ZGJhc2VVcGxvYWRGaWxlUGFyYW1zLFxuICBJQ2xvdWRiYXNlVXBsb2FkRmlsZVJlc3VsdCxcbiAgSUNsb3VkYmFzZUdldFVwbG9hZE1ldGFkYXRhUGFyYW1zLFxuICBJQ2xvdWRiYXNlRGVsZXRlRmlsZVBhcmFtcyxcbiAgSUNsb3VkYmFzZURlbGV0ZUZpbGVSZXN1bHQsXG4gIElDbG91ZGJhc2VHZXRUZW1wRmlsZVVSTFJlc3VsdCxcbiAgSUNsb3VkYmFzZUdldFRlbXBGaWxlVVJMUGFyYW1zLFxuICBJQ2xvdWRiYXNlRG93bmxvYWRGaWxlUmVzdWx0LFxuICBJQ2xvdWRiYXNlRG93bmxvYWRGaWxlUGFyYW1zXG59IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMvc3RvcmFnZSc7XG5cbmRlY2xhcmUgY29uc3QgY2xvdWRiYXNlOiBJQ2xvdWRiYXNlO1xuXG5jb25zdCB7IGdldFNka05hbWUsIEVSUk9SUywgQ09NTVVOSVRZX1NJVEVfVVJMIH0gPSBjb25zdGFudHM7XG5jb25zdCB7IGlzQXJyYXksIGlzU3RyaW5nLCBpc1BhbGluT2JqZWN0LCBleGVjQ2FsbGJhY2sgfSA9IHV0aWxzO1xuY29uc3QgeyBjYXRjaEVycm9yc0RlY29yYXRvciB9ID0gaGVscGVycztcblxuY29uc3QgQ09NUE9ORU5UX05BTUUgPSAnc3RvcmFnZSc7XG5cbmNsYXNzIENsb3VkYmFzZVN0b3JhZ2Uge1xuICBAY2F0Y2hFcnJvcnNEZWNvcmF0b3Ioe1xuICAgIGN1c3RvbUluZm86IHtcbiAgICAgIGNsYXNzTmFtZTogJ0Nsb3VkYmFzZScsXG4gICAgICBtZXRob2ROYW1lOiAndXBsb2FkRmlsZSdcbiAgICB9LFxuICAgIHRpdGxlOiAn5LiK5Lyg5paH5Lu25aSx6LSlJyxcbiAgICBtZXNzYWdlczogW1xuICAgICAgJ+ivt+ehruiupOS7peS4i+WQhOmhue+8micsXG4gICAgICAnICAxIC0g6LCD55SoIHVwbG9hZEZpbGUoKSDnmoTor63ms5XmiJblj4LmlbDmmK/lkKbmraPnoa4nLFxuICAgICAgJyAgMiAtIOW9k+WJjeWfn+WQjeaYr+WQpuWcqOWuieWFqOWfn+WQjeWIl+ihqOS4re+8mmh0dHBzOi8vY29uc29sZS5jbG91ZC50ZW5jZW50LmNvbS90Y2IvZW52L3NhZmV0eScsXG4gICAgICAnICAzIC0g5LqR5a2Y5YKo5a6J5YWo6KeE5YiZ5piv5ZCm6ZmQ5Yi25LqG5b2T5YmN55m75b2V54q25oCB6K6/6ZeuJyxcbiAgICAgIGDlpoLmnpzpl67popjkvp3nhLblrZjlnKjvvIzlu7rorq7liLDlrpjmlrnpl67nrZTnpL7ljLrmj5Dpl67miJblr7vmib7luK7liqnvvJoke0NPTU1VTklUWV9TSVRFX1VSTH1gXG4gICAgXVxuICB9KVxuICBwdWJsaWMgYXN5bmMgdXBsb2FkRmlsZShcbiAgICBwYXJhbXM6IElDbG91ZGJhc2VVcGxvYWRGaWxlUGFyYW1zLFxuICAgIGNhbGxiYWNrPzogRnVuY3Rpb25cbiAgKTogUHJvbWlzZTxJQ2xvdWRiYXNlVXBsb2FkRmlsZVJlc3VsdD4ge1xuICAgIGNvbnN0IHsgY2xvdWRQYXRoLCBmaWxlUGF0aCwgb25VcGxvYWRQcm9ncmVzcywgbWV0aG9kID0gJ3B1dCcsIGhlYWRlcnMgPSB7fSB9ID0gcGFyYW1zO1xuICAgIGlmICghaXNTdHJpbmcoY2xvdWRQYXRoKSB8fCAhZmlsZVBhdGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGNvZGU6IEVSUk9SUy5JTlZBTElEX1BBUkFNUyxcbiAgICAgICAgbXNnOiBgWyR7Q09NUE9ORU5UX05BTUV9LnVwbG9hZEZpbGVdIGludmFsaWQgcGFyYW1zYFxuICAgICAgfSkpO1xuICAgIH1cbiAgICBjb25zdCB1cGxvYWRNZXRob2QgPSB7cHV0OiAncHV0JywgcG9zdDogJ3Bvc3QnfVttZXRob2QudG9Mb2NhbGVMb3dlckNhc2UoKV0gfHwgJ3B1dCc7XG5cbiAgICBjb25zdCBhY3Rpb24gPSAnc3RvcmFnZS5nZXRVcGxvYWRNZXRhZGF0YSc7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLnJlcXVlc3Q7XG4gICAgY29uc3QgbWV0YURhdGFQYXJhbSA9IHtcbiAgICAgIHBhdGg6IGNsb3VkUGF0aCxcbiAgICAgIG1ldGhvZDogdXBsb2FkTWV0aG9kLFxuICAgIH1cbiAgICBpZih1cGxvYWRNZXRob2QgPT09ICdwdXQnKSB7XG4gICAgICBtZXRhRGF0YVBhcmFtW1wiaGVhZGVyc1wiXSA9IGhlYWRlcnM7XG4gICAgfVxuICAgIGNvbnN0IG1ldGFEYXRhOiBJQ2xvdWRiYXNlRmlsZU1ldGFEYXRhUmVzID0gYXdhaXQgcmVxdWVzdC5zZW5kKGFjdGlvbiwgbWV0YURhdGFQYXJhbSk7XG5cbiAgICBjb25zdCB7XG4gICAgICBkYXRhOiB7IHVybCwgYXV0aG9yaXphdGlvbiwgdG9rZW4sIGZpbGVJZCwgY29zRmlsZUlkLCBkb3dubG9hZF91cmwgfSxcbiAgICAgIHJlcXVlc3RJZFxuICAgIH0gPSBtZXRhRGF0YTtcblxuICAgIGlmKHVwbG9hZE1ldGhvZCA9PT0gJ3B1dCcpIHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHJlcXVlc3QudXBsb2FkKHtcbiAgICAgICAgdXJsLFxuICAgICAgICBtZXRob2Q6ICdwdXQnLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgLi4uaGVhZGVycyxcbiAgICAgICAgICBhdXRob3JpemF0aW9uLFxuICAgICAgICAgICd4LWNvcy1tZXRhLWZpbGVpZCc6IGNvc0ZpbGVJZCxcbiAgICAgICAgICAneC1jb3Mtc2VjdXJpdHktdG9rZW4nOiB0b2tlbixcbiAgICAgICAgfSxcbiAgICAgICAgZmlsZTogZmlsZVBhdGgsXG4gICAgICAgIG5hbWU6IGNsb3VkUGF0aCxcbiAgICAgICAgb25VcGxvYWRQcm9ncmVzc1xuICAgICAgfSlcbiAgXG4gICAgICBpZiAocmVzLnN0YXR1c0NvZGUgPT09IDIwMCkge1xuICAgICAgICByZXR1cm4gZXhlY0NhbGxiYWNrKGNhbGxiYWNrLCBudWxsLCB7XG4gICAgICAgICAgZmlsZUlEOiBmaWxlSWQsXG4gICAgICAgICAgZG93bmxvYWRfdXJsLFxuICAgICAgICAgIHJlcXVlc3RJZFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBleGVjQ2FsbGJhY2soY2FsbGJhY2ssIG5ldyBFcnJvcihgWyR7Z2V0U2RrTmFtZSgpfV1bJHtFUlJPUlMuT1BFUkFUSU9OX0ZBSUx9XVske0NPTVBPTkVOVF9OQU1FfV06JHtyZXMuZGF0YX1gKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIOS9v+eUqOS4tOaXtuWvhuWMmeS4iuS8oOaWh+S7tlxuICAgICAgLy8gQHNlZSBodHRwczovL2Nsb3VkLnRlbmNlbnQuY29tL2RvY3VtZW50L3Byb2R1Y3QvNDM2LzE0MDQ4XG4gICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICBrZXk6IGNsb3VkUGF0aCxcbiAgICAgICAgc2lnbmF0dXJlOiBhdXRob3JpemF0aW9uLFxuICAgICAgICAneC1jb3MtbWV0YS1maWxlaWQnOiBjb3NGaWxlSWQsXG4gICAgICAgICdzdWNjZXNzX2FjdGlvbl9zdGF0dXMnOiAnMjAxJyxcbiAgICAgICAgJ3gtY29zLXNlY3VyaXR5LXRva2VuJzogdG9rZW5cbiAgICAgIH07XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCByZXF1ZXN0LnVwbG9hZCh7XG4gICAgICAgIHVybCxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgZmlsZTogZmlsZVBhdGgsXG4gICAgICAgIG5hbWU6IGNsb3VkUGF0aCxcbiAgICAgICAgb25VcGxvYWRQcm9ncmVzc1xuICAgICAgfSk7XG4gIFxuICAgICAgaWYgKHJlcy5zdGF0dXNDb2RlID09PSAyMDEpIHtcbiAgICAgICAgcmV0dXJuIGV4ZWNDYWxsYmFjayhjYWxsYmFjaywgbnVsbCwge1xuICAgICAgICAgIGZpbGVJRDogZmlsZUlkLFxuICAgICAgICAgIGRvd25sb2FkX3VybCxcbiAgICAgICAgICByZXF1ZXN0SWRcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZXhlY0NhbGxiYWNrKGNhbGxiYWNrLCBuZXcgRXJyb3IoYFske2dldFNka05hbWUoKX1dWyR7RVJST1JTLk9QRVJBVElPTl9GQUlMfV1bJHtDT01QT05FTlRfTkFNRX1dOiR7cmVzLmRhdGF9YCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAY2F0Y2hFcnJvcnNEZWNvcmF0b3Ioe1xuICAgIGN1c3RvbUluZm86IHtcbiAgICAgIGNsYXNzTmFtZTogJ0Nsb3VkYmFzZScsXG4gICAgICBtZXRob2ROYW1lOiAnZ2V0VXBsb2FkTWV0YWRhdGEnXG4gICAgfSxcbiAgICB0aXRsZTogJ+iOt+WPluS4iuS8oOWFg+S/oeaBr+Wksei0pScsXG4gICAgbWVzc2FnZXM6IFtcbiAgICAgICfor7fnoa7orqTku6XkuIvlkITpobnvvJonLFxuICAgICAgJyAgMSAtIOiwg+eUqCBnZXRVcGxvYWRNZXRhZGF0YSgpIOeahOivreazleaIluWPguaVsOaYr+WQpuato+ehricsXG4gICAgICAnICAyIC0g5b2T5YmN5Z+f5ZCN5piv5ZCm5Zyo5a6J5YWo5Z+f5ZCN5YiX6KGo5Lit77yaaHR0cHM6Ly9jb25zb2xlLmNsb3VkLnRlbmNlbnQuY29tL3RjYi9lbnYvc2FmZXR5JyxcbiAgICAgICcgIDMgLSDkupHlrZjlgqjlronlhajop4TliJnmmK/lkKbpmZDliLbkuoblvZPliY3nmbvlvZXnirbmgIHorr/pl64nLFxuICAgICAgYOWmguaenOmXrumimOS+neeEtuWtmOWcqO+8jOW7uuiuruWIsOWumOaWuemXruetlOekvuWMuuaPkOmXruaIluWvu+aJvuW4ruWKqe+8miR7Q09NTVVOSVRZX1NJVEVfVVJMfWBcbiAgICBdXG4gIH0pXG4gIHB1YmxpYyBhc3luYyBnZXRVcGxvYWRNZXRhZGF0YShcbiAgICBwYXJhbXM6IElDbG91ZGJhc2VHZXRVcGxvYWRNZXRhZGF0YVBhcmFtcyxcbiAgICBjYWxsYmFjaz86IEZ1bmN0aW9uXG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgeyBjbG91ZFBhdGggfSA9IHBhcmFtcztcbiAgICBpZiAoIWlzU3RyaW5nKGNsb3VkUGF0aCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGNvZGU6IEVSUk9SUy5JTlZBTElEX1BBUkFNUyxcbiAgICAgICAgbXNnOiBgWyR7Q09NUE9ORU5UX05BTUV9LmdldFVwbG9hZE1ldGFkYXRhXSBpbnZhbGlkIGNsb3VkUGF0aGBcbiAgICAgIH0pKTtcbiAgICB9XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLnJlcXVlc3Q7XG4gICAgY29uc3QgYWN0aW9uID0gJ3N0b3JhZ2UuZ2V0VXBsb2FkTWV0YWRhdGEnO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG1ldGFEYXRhID0gYXdhaXQgcmVxdWVzdC5zZW5kKGFjdGlvbiwge1xuICAgICAgICBwYXRoOiBjbG91ZFBhdGhcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGV4ZWNDYWxsYmFjayhjYWxsYmFjaywgbnVsbCwgbWV0YURhdGEpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIGV4ZWNDYWxsYmFjayhjYWxsYmFjaywgZXJyKTtcbiAgICB9XG4gIH1cbiAgQGNhdGNoRXJyb3JzRGVjb3JhdG9yKHtcbiAgICBjdXN0b21JbmZvOiB7XG4gICAgICBjbGFzc05hbWU6ICdDbG91ZGJhc2UnLFxuICAgICAgbWV0aG9kTmFtZTogJ2RlbGV0ZUZpbGUnXG4gICAgfSxcbiAgICB0aXRsZTogJ+WIoOmZpOaWh+S7tuWksei0pScsXG4gICAgbWVzc2FnZXM6IFtcbiAgICAgICfor7fnoa7orqTku6XkuIvlkITpobnvvJonLFxuICAgICAgJyAgMSAtIOiwg+eUqCBkZWxldGVGaWxlKCkg55qE6K+t5rOV5oiW5Y+C5pWw5piv5ZCm5q2j56GuJyxcbiAgICAgICcgIDIgLSDlvZPliY3ln5/lkI3mmK/lkKblnKjlronlhajln5/lkI3liJfooajkuK3vvJpodHRwczovL2NvbnNvbGUuY2xvdWQudGVuY2VudC5jb20vdGNiL2Vudi9zYWZldHknLFxuICAgICAgJyAgMyAtIOS6keWtmOWCqOWuieWFqOinhOWImeaYr+WQpumZkOWItuS6huW9k+WJjeeZu+W9leeKtuaAgeiuv+mXricsXG4gICAgICBg5aaC5p6c6Zeu6aKY5L6d54S25a2Y5Zyo77yM5bu66K6u5Yiw5a6Y5pa56Zeu562U56S+5Yy65o+Q6Zeu5oiW5a+75om+5biu5Yqp77yaJHtDT01NVU5JVFlfU0lURV9VUkx9YFxuICAgIF1cbiAgfSlcbiAgcHVibGljIGFzeW5jIGRlbGV0ZUZpbGUoXG4gICAgcGFyYW1zOiBJQ2xvdWRiYXNlRGVsZXRlRmlsZVBhcmFtcyxcbiAgICBjYWxsYmFjaz86IEZ1bmN0aW9uXG4gICk6IFByb21pc2U8SUNsb3VkYmFzZURlbGV0ZUZpbGVSZXN1bHQ+IHtcbiAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSBwYXJhbXM7XG5cbiAgICBpZiAoIWZpbGVMaXN0IHx8ICFpc0FycmF5KGZpbGVMaXN0KSB8fCBmaWxlTGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGNvZGU6IEVSUk9SUy5JTlZBTElEX1BBUkFNUyxcbiAgICAgICAgbXNnOiBgWyR7Q09NUE9ORU5UX05BTUV9LmRlbGV0ZUZpbGVdIGZpbGVMaXN0IG11c3Qgbm90IGJlIGVtcHR5YFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgZmlsZUlkIG9mIGZpbGVMaXN0KSB7XG4gICAgICBpZiAoIWZpbGVJZCB8fCAhaXNTdHJpbmcoZmlsZUlkKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGNvZGU6IEVSUk9SUy5JTlZBTElEX1BBUkFNUyxcbiAgICAgICAgICBtc2c6IGBbJHtDT01QT05FTlRfTkFNRX0uZGVsZXRlRmlsZV0gZmlsZUlEIG11c3QgYmUgc3RyaW5nYFxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgYWN0aW9uID0gJ3N0b3JhZ2UuYmF0Y2hEZWxldGVGaWxlJztcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgcmVxdWVzdCA9IHRoaXMucmVxdWVzdDtcbiAgICBjb25zdCByZXMgPSBhd2FpdCByZXF1ZXN0LnNlbmQoYWN0aW9uLCB7XG4gICAgICBmaWxlaWRfbGlzdDogZmlsZUxpc3RcbiAgICB9KTtcblxuICAgIGlmIChyZXMuY29kZSkge1xuICAgICAgcmV0dXJuIGV4ZWNDYWxsYmFjayhjYWxsYmFjaywgbnVsbCwgcmVzKTtcbiAgICB9XG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIGZpbGVMaXN0OiByZXMuZGF0YS5kZWxldGVfbGlzdCxcbiAgICAgIHJlcXVlc3RJZDogcmVzLnJlcXVlc3RJZFxuICAgIH07XG4gICAgcmV0dXJuIGV4ZWNDYWxsYmFjayhjYWxsYmFjaywgbnVsbCwgZGF0YSk7O1xuICB9XG4gIEBjYXRjaEVycm9yc0RlY29yYXRvcih7XG4gICAgY3VzdG9tSW5mbzoge1xuICAgICAgY2xhc3NOYW1lOiAnQ2xvdWRiYXNlJyxcbiAgICAgIG1ldGhvZE5hbWU6ICdnZXRUZW1wRmlsZVVSTCdcbiAgICB9LFxuICAgIHRpdGxlOiAn6I635Y+W5paH5Lu25LiL6L296ZO+5o6lJyxcbiAgICBtZXNzYWdlczogW1xuICAgICAgJ+ivt+ehruiupOS7peS4i+WQhOmhue+8micsXG4gICAgICAnICAxIC0g6LCD55SoIGdldFRlbXBGaWxlVVJMKCkg55qE6K+t5rOV5oiW5Y+C5pWw5piv5ZCm5q2j56GuJyxcbiAgICAgICcgIDIgLSDlvZPliY3ln5/lkI3mmK/lkKblnKjlronlhajln5/lkI3liJfooajkuK3vvJpodHRwczovL2NvbnNvbGUuY2xvdWQudGVuY2VudC5jb20vdGNiL2Vudi9zYWZldHknLFxuICAgICAgJyAgMyAtIOS6keWtmOWCqOWuieWFqOinhOWImeaYr+WQpumZkOWItuS6huW9k+WJjeeZu+W9leeKtuaAgeiuv+mXricsXG4gICAgICBg5aaC5p6c6Zeu6aKY5L6d54S25a2Y5Zyo77yM5bu66K6u5Yiw5a6Y5pa56Zeu562U56S+5Yy65o+Q6Zeu5oiW5a+75om+5biu5Yqp77yaJHtDT01NVU5JVFlfU0lURV9VUkx9YFxuICAgIF1cbiAgfSlcbiAgcHVibGljIGFzeW5jIGdldFRlbXBGaWxlVVJMKFxuICAgIHBhcmFtczogSUNsb3VkYmFzZUdldFRlbXBGaWxlVVJMUGFyYW1zLFxuICAgIGNhbGxiYWNrPzogRnVuY3Rpb25cbiAgKTogUHJvbWlzZTxJQ2xvdWRiYXNlR2V0VGVtcEZpbGVVUkxSZXN1bHQ+IHtcbiAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSBwYXJhbXM7XG5cbiAgICBpZiAoIWZpbGVMaXN0IHx8ICFpc0FycmF5KGZpbGVMaXN0KSB8fCBmaWxlTGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGNvZGU6IEVSUk9SUy5JTlZBTElEX1BBUkFNUyxcbiAgICAgICAgbXNnOiBgWyR7Q09NUE9ORU5UX05BTUV9LmdldFRlbXBGaWxlVVJMXSBmaWxlTGlzdCBtdXN0IG5vdCBiZSBlbXB0eWBcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBjb25zdCBmaWxlX2xpc3QgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZUxpc3QpIHtcbiAgICAgIGlmIChpc1BhbGluT2JqZWN0KGZpbGUpKSB7XG4gICAgICAgIGlmICghZmlsZS5oYXNPd25Qcm9wZXJ0eSgnZmlsZUlEJykgfHwgIWZpbGUuaGFzT3duUHJvcGVydHkoJ21heEFnZScpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIGNvZGU6IEVSUk9SUy5JTlZBTElEX1BBUkFNUyxcbiAgICAgICAgICAgIG1zZzogYFske0NPTVBPTkVOVF9OQU1FfS5nZXRUZW1wRmlsZVVSTF0gZmlsZSBpbmZvIG11c3QgaW5jbHVkZSBmaWxlSUQgYW5kIG1heEFnZWBcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH1cblxuICAgICAgICBmaWxlX2xpc3QucHVzaCh7XG4gICAgICAgICAgZmlsZWlkOiAoZmlsZSBhcyBJQ2xvdWRiYXNlRmlsZUluZm8pLmZpbGVJRCxcbiAgICAgICAgICBtYXhfYWdlOiAoZmlsZSBhcyBJQ2xvdWRiYXNlRmlsZUluZm8pLm1heEFnZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoaXNTdHJpbmcoZmlsZSkpIHtcbiAgICAgICAgZmlsZV9saXN0LnB1c2goe1xuICAgICAgICAgIGZpbGVpZDogZmlsZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgY29kZTogRVJST1JTLklOVkFMSURfUEFSQU1TLFxuICAgICAgICAgIG1zZzogYFske0NPTVBPTkVOVF9OQU1FfS5nZXRUZW1wRmlsZVVSTF0gaW52YWxpZCBmaWxlTGlzdGBcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGFjdGlvbiA9ICdzdG9yYWdlLmJhdGNoR2V0RG93bmxvYWRVcmwnO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5yZXF1ZXN0O1xuXG4gICAgY29uc3QgcmVzID0gYXdhaXQgcmVxdWVzdC5zZW5kKGFjdGlvbiwgeyBmaWxlX2xpc3QgfSk7XG5cbiAgICBpZiAocmVzLmNvZGUpIHtcbiAgICAgIHJldHVybiBleGVjQ2FsbGJhY2soY2FsbGJhY2ssIG51bGwsIHJlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV4ZWNDYWxsYmFjayhjYWxsYmFjaywgbnVsbCwge1xuICAgICAgZmlsZUxpc3Q6IHJlcy5kYXRhLmRvd25sb2FkX2xpc3QsXG4gICAgICByZXF1ZXN0SWQ6IHJlcy5yZXF1ZXN0SWRcbiAgICB9KTtcbiAgfVxuICBAY2F0Y2hFcnJvcnNEZWNvcmF0b3Ioe1xuICAgIGN1c3RvbUluZm86IHtcbiAgICAgIGNsYXNzTmFtZTogJ0Nsb3VkYmFzZScsXG4gICAgICBtZXRob2ROYW1lOiAnZG93bmxvYWRGaWxlJ1xuICAgIH0sXG4gICAgdGl0bGU6ICfkuIvovb3mlofku7blpLHotKUnLFxuICAgIG1lc3NhZ2VzOiBbXG4gICAgICAn6K+356Gu6K6k5Lul5LiL5ZCE6aG577yaJyxcbiAgICAgICcgIDEgLSDosIPnlKggZG93bmxvYWRGaWxlKCkg55qE6K+t5rOV5oiW5Y+C5pWw5piv5ZCm5q2j56GuJyxcbiAgICAgICcgIDIgLSDlvZPliY3ln5/lkI3mmK/lkKblnKjlronlhajln5/lkI3liJfooajkuK3vvJpodHRwczovL2NvbnNvbGUuY2xvdWQudGVuY2VudC5jb20vdGNiL2Vudi9zYWZldHknLFxuICAgICAgJyAgMyAtIOS6keWtmOWCqOWuieWFqOinhOWImeaYr+WQpumZkOWItuS6huW9k+WJjeeZu+W9leeKtuaAgeiuv+mXricsXG4gICAgICBg5aaC5p6c6Zeu6aKY5L6d54S25a2Y5Zyo77yM5bu66K6u5Yiw5a6Y5pa56Zeu562U56S+5Yy65o+Q6Zeu5oiW5a+75om+5biu5Yqp77yaJHtDT01NVU5JVFlfU0lURV9VUkx9YFxuICAgIF1cbiAgfSlcbiAgcHVibGljIGFzeW5jIGRvd25sb2FkRmlsZShcbiAgICBwYXJhbXM6IElDbG91ZGJhc2VEb3dubG9hZEZpbGVQYXJhbXMsXG4gICAgY2FsbGJhY2s/OiBGdW5jdGlvblxuICApOiBQcm9taXNlPElDbG91ZGJhc2VEb3dubG9hZEZpbGVSZXN1bHQ+IHtcbiAgICBjb25zdCB7IGZpbGVJRCB9ID0gcGFyYW1zO1xuICAgIGlmICghaXNTdHJpbmcoZmlsZUlEKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgY29kZTogRVJST1JTLklOVkFMSURfUEFSQU1TLFxuICAgICAgICBtc2c6IGBbJHtDT01QT05FTlRfTkFNRX0uZ2V0VGVtcEZpbGVVUkxdIGZpbGVJRCBtdXN0IGJlIHN0cmluZ2BcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBjb25zdCB0bXBVcmxSZXMgPSBhd2FpdCB0aGlzLmdldFRlbXBGaWxlVVJMLmNhbGwodGhpcywge1xuICAgICAgZmlsZUxpc3Q6IFt7XG4gICAgICAgIGZpbGVJRCxcbiAgICAgICAgbWF4QWdlOiA2MDBcbiAgICAgIH1dXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXMgPSB0bXBVcmxSZXMuZmlsZUxpc3RbMF07XG5cbiAgICBpZiAocmVzLmNvZGUgIT09ICdTVUNDRVNTJykge1xuICAgICAgcmV0dXJuIGV4ZWNDYWxsYmFjayhjYWxsYmFjaywgcmVzKTtcbiAgICB9XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLnJlcXVlc3Q7XG5cbiAgICBjb25zdCB0bXBVcmwgPSBlbmNvZGVVUkkocmVzLmRvd25sb2FkX3VybCk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXF1ZXN0LmRvd25sb2FkKHsgdXJsOiB0bXBVcmwgfSk7XG4gICAgcmV0dXJuIGV4ZWNDYWxsYmFjayhjYWxsYmFjaywgbnVsbCwgcmVzdWx0KTtcbiAgfVxufVxuXG5jb25zdCBjbG91ZGJhc2VTdG9yYWdlID0gbmV3IENsb3VkYmFzZVN0b3JhZ2UoKTtcbmNvbnN0IGNvbXBvbmVudDogSUNsb3VkYmFzZUNvbXBvbmVudCA9IHtcbiAgbmFtZTogQ09NUE9ORU5UX05BTUUsXG4gIGVudGl0eToge1xuICAgIHVwbG9hZEZpbGU6IGNsb3VkYmFzZVN0b3JhZ2UudXBsb2FkRmlsZSxcbiAgICBkZWxldGVGaWxlOiBjbG91ZGJhc2VTdG9yYWdlLmRlbGV0ZUZpbGUsXG4gICAgZ2V0VGVtcEZpbGVVUkw6IGNsb3VkYmFzZVN0b3JhZ2UuZ2V0VGVtcEZpbGVVUkwsXG4gICAgZG93bmxvYWRGaWxlOiBjbG91ZGJhc2VTdG9yYWdlLmRvd25sb2FkRmlsZSxcbiAgICBnZXRVcGxvYWRNZXRhZGF0YTogY2xvdWRiYXNlU3RvcmFnZS5nZXRVcGxvYWRNZXRhZGF0YVxuICB9XG59XG5cbnRyeSB7XG4gIGNsb3VkYmFzZS5yZWdpc3RlckNvbXBvbmVudChjb21wb25lbnQpO1xufSBjYXRjaCAoZSkgeyB9XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlclN0b3JhZ2UoYXBwOiBQaWNrPElDbG91ZGJhc2UsICdyZWdpc3RlckNvbXBvbmVudCc+KSB7XG4gIHRyeSB7XG4gICAgYXBwLnJlZ2lzdGVyQ29tcG9uZW50KGNvbXBvbmVudCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLndhcm4oZSk7XG4gIH1cbn0iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudbase/storage",
3
- "version": "2.0.0-alpha.4",
3
+ "version": "2.0.1-alpha.0",
4
4
  "description": "cloudbase js sdk storage module",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -26,8 +26,8 @@
26
26
  "author": "",
27
27
  "license": "ISC",
28
28
  "dependencies": {
29
- "@cloudbase/types": "^2.0.0-alpha.2",
30
- "@cloudbase/utilities": "^2.0.0-alpha.4"
29
+ "@cloudbase/types": "^2.0.1-alpha.0",
30
+ "@cloudbase/utilities": "^2.0.1-alpha.0"
31
31
  },
32
32
  "husky": {
33
33
  "hooks": {
@@ -48,5 +48,5 @@
48
48
  "lint-staged": "^10.1.7",
49
49
  "typescript": "^3.8.3"
50
50
  },
51
- "gitHead": "c462902b6702463670d27acb88ebccf93dbd51cd"
51
+ "gitHead": "a1ff9c147bb221fc003d46533e6134ddb76df0ca"
52
52
  }
package/src/index.ts CHANGED
@@ -42,51 +42,83 @@ class CloudbaseStorage {
42
42
  params: ICloudbaseUploadFileParams,
43
43
  callback?: Function
44
44
  ): Promise<ICloudbaseUploadFileResult> {
45
- const { cloudPath, filePath, onUploadProgress } = params;
45
+ const { cloudPath, filePath, onUploadProgress, method = 'put', headers = {} } = params;
46
46
  if (!isString(cloudPath) || !filePath) {
47
47
  throw new Error(JSON.stringify({
48
48
  code: ERRORS.INVALID_PARAMS,
49
49
  msg: `[${COMPONENT_NAME}.uploadFile] invalid params`
50
50
  }));
51
51
  }
52
+ const uploadMethod = {put: 'put', post: 'post'}[method.toLocaleLowerCase()] || 'put';
53
+
52
54
  const action = 'storage.getUploadMetadata';
53
55
  // @ts-ignore
54
56
  const request = this.request;
55
- const metaData: ICloudbaseFileMetaDataRes = await request.send(action, {
56
- path: cloudPath
57
- });
57
+ const metaDataParam = {
58
+ path: cloudPath,
59
+ method: uploadMethod,
60
+ }
61
+ if(uploadMethod === 'put') {
62
+ metaDataParam["headers"] = headers;
63
+ }
64
+ const metaData: ICloudbaseFileMetaDataRes = await request.send(action, metaDataParam);
58
65
 
59
66
  const {
60
67
  data: { url, authorization, token, fileId, cosFileId, download_url },
61
68
  requestId
62
69
  } = metaData;
63
70
 
64
-
65
- // 使用临时密匙上传文件
66
- // @see https://cloud.tencent.com/document/product/436/14048
67
- const data = {
68
- key: cloudPath,
69
- signature: authorization,
70
- 'x-cos-meta-fileid': cosFileId,
71
- 'success_action_status': '201',
72
- 'x-cos-security-token': token
73
- };
74
- const res = await request.upload({
75
- url,
76
- data,
77
- file: filePath,
78
- name: cloudPath,
79
- onUploadProgress
80
- });
81
-
82
- if (res.statusCode === 201) {
83
- return execCallback(callback, null, {
84
- fileID: fileId,
85
- download_url,
86
- requestId
87
- });
71
+ if(uploadMethod === 'put') {
72
+ const res = await request.upload({
73
+ url,
74
+ method: 'put',
75
+ headers: {
76
+ ...headers,
77
+ authorization,
78
+ 'x-cos-meta-fileid': cosFileId,
79
+ 'x-cos-security-token': token,
80
+ },
81
+ file: filePath,
82
+ name: cloudPath,
83
+ onUploadProgress
84
+ })
85
+
86
+ if (res.statusCode === 200) {
87
+ return execCallback(callback, null, {
88
+ fileID: fileId,
89
+ download_url,
90
+ requestId
91
+ });
92
+ } else {
93
+ return execCallback(callback, new Error(`[${getSdkName()}][${ERRORS.OPERATION_FAIL}][${COMPONENT_NAME}]:${res.data}`));
94
+ }
88
95
  } else {
89
- return execCallback(callback, new Error(`[${getSdkName()}][${ERRORS.OPERATION_FAIL}][${COMPONENT_NAME}]:${res.data}`));
96
+ // 使用临时密匙上传文件
97
+ // @see https://cloud.tencent.com/document/product/436/14048
98
+ const data = {
99
+ key: cloudPath,
100
+ signature: authorization,
101
+ 'x-cos-meta-fileid': cosFileId,
102
+ 'success_action_status': '201',
103
+ 'x-cos-security-token': token
104
+ };
105
+ const res = await request.upload({
106
+ url,
107
+ data,
108
+ file: filePath,
109
+ name: cloudPath,
110
+ onUploadProgress
111
+ });
112
+
113
+ if (res.statusCode === 201) {
114
+ return execCallback(callback, null, {
115
+ fileID: fileId,
116
+ download_url,
117
+ requestId
118
+ });
119
+ } else {
120
+ return execCallback(callback, new Error(`[${getSdkName()}][${ERRORS.OPERATION_FAIL}][${COMPONENT_NAME}]:${res.data}`));
121
+ }
90
122
  }
91
123
  }
92
124
  @catchErrorsDecorator({