@serverless-devs/s 2.0.92 → 2.0.93-beta.4
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/CONTRIBUTORS.md +2 -0
- package/bin/s-component +2 -0
- package/bin/s-set-workspace +2 -0
- package/docs/readme.md +94 -0
- package/docs/zh/awesome.md +296 -0
- package/docs/zh/cicd.md +200 -0
- package/docs/zh/cli_design.md +100 -0
- package/docs/zh/command/clean.md +63 -0
- package/docs/zh/command/cli.md +92 -0
- package/docs/zh/command/component.md +76 -0
- package/docs/zh/command/config.md +278 -0
- package/docs/zh/command/custom.md +73 -0
- package/docs/zh/command/init.md +148 -0
- package/docs/zh/command/readme.md +76 -0
- package/docs/zh/command/set.md +195 -0
- package/docs/zh/default_provider_config/alibabacloud.md +82 -0
- package/docs/zh/default_provider_config/aws.md +12 -0
- package/docs/zh/default_provider_config/azure.md +9 -0
- package/docs/zh/default_provider_config/baiducloud.md +8 -0
- package/docs/zh/default_provider_config/gcp.md +21 -0
- package/docs/zh/default_provider_config/huaweicloud.md +52 -0
- package/docs/zh/default_provider_config/readme.md +9 -0
- package/docs/zh/default_provider_config/tencentcloud.md +41 -0
- package/docs/zh/install.md +52 -0
- package/docs/zh/package_dev.md +142 -0
- package/docs/zh/quick_start.md +297 -0
- package/docs/zh/readme.md +90 -0
- package/docs/zh/tool.md +80 -0
- package/docs/zh/yaml.md +203 -0
- package/docs/zh/yaml_and_cli.md +67 -0
- package/lib/clean/index.js +43 -35
- package/lib/cli/cli-manager.js +33 -22
- package/lib/cli/index.js +60 -62
- package/lib/component/index.d.ts +1 -0
- package/lib/component/index.js +161 -0
- package/lib/config/add/index.js +39 -39
- package/lib/config/delete/index.js +49 -59
- package/lib/config/get/index.d.ts +0 -1
- package/lib/config/get/index.js +46 -51
- package/lib/config/index.js +36 -35
- package/lib/constants/index.d.ts +0 -1
- package/lib/constants/index.js +1 -5
- package/lib/core/command/command-manager.js +36 -43
- package/lib/core/component/index.d.ts +14 -7
- package/lib/core/component/index.js +78 -52
- package/lib/core/plugin/index.js +4 -3
- package/lib/daemon/template.js +2 -4
- package/lib/error/human-error.d.ts +12 -2
- package/lib/error/human-error.js +63 -28
- package/lib/error/human-warning.d.ts +8 -0
- package/lib/error/human-warning.js +19 -0
- package/lib/error/index.d.ts +10 -1
- package/lib/error/index.js +74 -27
- package/lib/index.js +89 -94
- package/lib/init/index.js +76 -79
- package/lib/init/init-config.js +3 -5
- package/lib/init/init-manager.js +3 -4
- package/lib/init/update-template.js +3 -5
- package/lib/onboarding/index.js +5 -5
- package/lib/set/analysis/index.js +41 -37
- package/lib/set/index.js +34 -33
- package/lib/set/locale/index.js +54 -53
- package/lib/set/registry/index.js +52 -52
- package/lib/set/workspace/index.d.ts +1 -0
- package/lib/set/workspace/index.js +61 -0
- package/lib/specification/parse.js +9 -6
- package/lib/update-notifier/index.js +10 -10
- package/lib/utils/command-util.d.ts +0 -2
- package/lib/utils/command-util.js +2 -42
- package/lib/utils/common.d.ts +1 -0
- package/lib/utils/common.js +100 -20
- package/lib/utils/core.js +3 -3
- package/lib/utils/handler-set-config.d.ts +1 -1
- package/lib/utils/handler-set-config.js +6 -7
- package/lib/utils/i18n/en.js +4 -4
- package/lib/utils/i18n/index.js +3 -3
- package/lib/utils/i18n/zh.js +3 -3
- package/lib/utils/storage.js +3 -4
- package/package.json +2 -2
- package/readme.md +64 -38
- package/shell/postbuild.sh +2 -0
- package/spec/readme.md +59 -0
- package/spec/zh/0.0.1/readme.md +47 -0
- package/spec/zh/0.0.1/serverless_pacakge_model/1.purpose_and_goals.md +3 -0
- package/spec/zh/0.0.1/serverless_pacakge_model/2.overview_and_terminology.md +14 -0
- package/spec/zh/0.0.1/serverless_pacakge_model/3.package_model.md +434 -0
- package/spec/zh/0.0.1/serverless_pacakge_model/4.application_scopes.md +3 -0
- package/spec/zh/0.0.1/serverless_pacakge_model/5.design_principles.md +3 -0
- package/spec/zh/0.0.1/serverless_pacakge_model/readme.md +12 -0
- package/spec/zh/0.0.1/serverless_registry_model/1.purpose_and_goals.md +18 -0
- package/spec/zh/0.0.1/serverless_registry_model/2.overview_and_terminology.md +18 -0
- package/spec/zh/0.0.1/serverless_registry_model/3.registry_model.md +61 -0
- package/spec/zh/0.0.1/serverless_registry_model/4.application_scopes.md +6 -0
- package/spec/zh/0.0.1/serverless_registry_model/5.design_principles.md +3 -0
- package/spec/zh/0.0.1/serverless_registry_model/readme.md +12 -0
- package/spec/zh/0.0.1/serverless_user_model/1.purpose_and_goals.md +3 -0
- package/spec/zh/0.0.1/serverless_user_model/2.overview_and_terminology.md +16 -0
- package/spec/zh/0.0.1/serverless_user_model/3.user_model.md +218 -0
- package/spec/zh/0.0.1/serverless_user_model/4.application_scopes.md +4 -0
- package/spec/zh/0.0.1/serverless_user_model/5.design_principles.md +3 -0
- package/spec/zh/0.0.1/serverless_user_model/readme.md +12 -0
- package/bin/s-set-locale +0 -2
- package/readme_zh.md +0 -72
package/lib/cli/cli-manager.js
CHANGED
|
@@ -42,12 +42,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
42
42
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
43
|
var utils_1 = require("../utils");
|
|
44
44
|
var path_1 = __importDefault(require("path"));
|
|
45
|
-
var os_1 = __importDefault(require("os"));
|
|
46
45
|
var fs_1 = __importDefault(require("fs"));
|
|
47
46
|
var common_1 = require("../utils/common");
|
|
48
47
|
var error_1 = require("../error");
|
|
49
48
|
var core_1 = __importDefault(require("../utils/core"));
|
|
50
|
-
var getCredential = core_1.default.getCredential, loadComponent = core_1.default.loadComponent, colors = core_1.default.colors, yaml = core_1.default.jsyaml;
|
|
49
|
+
var getCredential = core_1.default.getCredential, loadComponent = core_1.default.loadComponent, colors = core_1.default.colors, yaml = core_1.default.jsyaml, getRootHome = core_1.default.getRootHome;
|
|
51
50
|
var CliManager = /** @class */ (function () {
|
|
52
51
|
function CliManager(inputs) {
|
|
53
52
|
this.inputs = inputs;
|
|
@@ -59,20 +58,20 @@ var CliManager = /** @class */ (function () {
|
|
|
59
58
|
};
|
|
60
59
|
CliManager.prototype.init = function () {
|
|
61
60
|
return __awaiter(this, void 0, void 0, function () {
|
|
62
|
-
var result, _a, component, command, access, props, credentials, accessFile, accessFileInfo, e_1, componentInstance, docResult, componentPathYaml, publishYamlInfor, tempLength, item, item, e_2, tempProp, outResult,
|
|
61
|
+
var result, _a, component, command, access, props, credentials, accessFile, accessFileInfo, e_1, componentInstance, docResult, componentPathYaml, publishYamlInfor, tempLength, item, item, e_2, tempProp, outResult, error_2, error_3;
|
|
63
62
|
return __generator(this, function (_b) {
|
|
64
63
|
switch (_b.label) {
|
|
65
64
|
case 0:
|
|
66
65
|
result = '';
|
|
67
66
|
_b.label = 1;
|
|
68
67
|
case 1:
|
|
69
|
-
_b.trys.push([1,
|
|
68
|
+
_b.trys.push([1, 21, , 23]);
|
|
70
69
|
_a = this.inputs, component = _a.component, command = _a.command, access = _a.access, props = _a.props;
|
|
71
70
|
credentials = {};
|
|
72
71
|
_b.label = 2;
|
|
73
72
|
case 2:
|
|
74
73
|
_b.trys.push([2, 5, , 6]);
|
|
75
|
-
accessFile = path_1.default.join(
|
|
74
|
+
accessFile = path_1.default.join(getRootHome(), 'access.yaml');
|
|
76
75
|
accessFileInfo = yaml.load(fs_1.default.readFileSync(accessFile, 'utf8') || '{}');
|
|
77
76
|
if (!accessFileInfo[access]) return [3 /*break*/, 4];
|
|
78
77
|
return [4 /*yield*/, getCredential(access)];
|
|
@@ -87,7 +86,7 @@ var CliManager = /** @class */ (function () {
|
|
|
87
86
|
case 6: return [4 /*yield*/, loadComponent(component, null, { access: access })];
|
|
88
87
|
case 7:
|
|
89
88
|
componentInstance = _b.sent();
|
|
90
|
-
if (!componentInstance) return [3 /*break*/,
|
|
89
|
+
if (!componentInstance) return [3 /*break*/, 20];
|
|
91
90
|
if (!command) {
|
|
92
91
|
if (componentInstance['index']) {
|
|
93
92
|
command = 'index';
|
|
@@ -134,7 +133,7 @@ var CliManager = /** @class */ (function () {
|
|
|
134
133
|
return [3 /*break*/, 12];
|
|
135
134
|
case 12: return [2 /*return*/, 'help'];
|
|
136
135
|
case 13:
|
|
137
|
-
if (!componentInstance[command]) return [3 /*break*/,
|
|
136
|
+
if (!componentInstance[command]) return [3 /*break*/, 19];
|
|
138
137
|
tempProp = {};
|
|
139
138
|
try {
|
|
140
139
|
tempProp = JSON.parse(props || '{}');
|
|
@@ -144,7 +143,7 @@ var CliManager = /** @class */ (function () {
|
|
|
144
143
|
}
|
|
145
144
|
_b.label = 14;
|
|
146
145
|
case 14:
|
|
147
|
-
_b.trys.push([14, 16, ,
|
|
146
|
+
_b.trys.push([14, 16, , 18]);
|
|
148
147
|
return [4 /*yield*/, componentInstance[command]({
|
|
149
148
|
props: tempProp,
|
|
150
149
|
Properties: tempProp,
|
|
@@ -184,22 +183,34 @@ var CliManager = /** @class */ (function () {
|
|
|
184
183
|
(_b.sent()) || {};
|
|
185
184
|
outResult = yaml.dump(JSON.parse(JSON.stringify(result)));
|
|
186
185
|
utils_1.logger.success(Object.keys(result).length === 0 ? "End of method: " + command : outResult);
|
|
187
|
-
return [3 /*break*/,
|
|
186
|
+
return [3 /*break*/, 18];
|
|
188
187
|
case 16:
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
188
|
+
error_2 = _b.sent();
|
|
189
|
+
return [4 /*yield*/, new error_1.HandleError({
|
|
190
|
+
error: error_2,
|
|
191
|
+
prefix: 'Failed to execute:',
|
|
192
|
+
}).report(error_2)];
|
|
193
|
+
case 17:
|
|
194
|
+
_b.sent();
|
|
195
|
+
process.exit(1);
|
|
196
|
+
return [3 /*break*/, 18];
|
|
197
|
+
case 18: return [3 /*break*/, 20];
|
|
198
|
+
case 19:
|
|
194
199
|
utils_1.logger.error("Failed to execute:\n\n " + (0, common_1.emoji)('❌') + " Message: Component " + component + " does not include [" + command + "] method\n " + (0, common_1.emoji)('🧭') + " You can get help for this component by [s cli " + component + " -h]\n " + (0, common_1.emoji)('😈') + " If you have questions, please tell us: " + colors.underline('https://github.com/Serverless-Devs/Serverless-Devs/issues') + "\n");
|
|
195
200
|
process.exit(1);
|
|
196
|
-
_b.label =
|
|
197
|
-
case
|
|
198
|
-
case
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
201
|
+
_b.label = 20;
|
|
202
|
+
case 20: return [3 /*break*/, 23];
|
|
203
|
+
case 21:
|
|
204
|
+
error_3 = _b.sent();
|
|
205
|
+
return [4 /*yield*/, new error_1.HandleError({
|
|
206
|
+
error: error_3,
|
|
207
|
+
prefix: 'Failed to execute:',
|
|
208
|
+
}).report(error_3)];
|
|
209
|
+
case 22:
|
|
210
|
+
_b.sent();
|
|
211
|
+
process.exit(1);
|
|
212
|
+
return [3 /*break*/, 23];
|
|
213
|
+
case 23: return [2 /*return*/, result];
|
|
203
214
|
}
|
|
204
215
|
});
|
|
205
216
|
});
|
|
@@ -207,4 +218,4 @@ var CliManager = /** @class */ (function () {
|
|
|
207
218
|
return CliManager;
|
|
208
219
|
}());
|
|
209
220
|
exports.default = CliManager;
|
|
210
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
221
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLW1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpL2NsaS1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxjQUFjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVkLGtDQUFrQztBQUNsQyw4Q0FBd0I7QUFDeEIsMENBQW9CO0FBQ3BCLDBDQUF3QztBQUN4QyxrQ0FBdUM7QUFDdkMsdURBQWlDO0FBQ3pCLElBQUEsYUFBYSxHQUF1RCxjQUFJLGNBQTNELEVBQUUsYUFBYSxHQUF3QyxjQUFJLGNBQTVDLEVBQUUsTUFBTSxHQUFnQyxjQUFJLE9BQXBDLEVBQVUsSUFBSSxHQUFrQixjQUFJLE9BQXRCLEVBQUUsV0FBVyxHQUFLLGNBQUksWUFBVCxDQUFVO0FBUWpGO0lBR0Usb0JBQVksTUFBaUI7UUFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELHNDQUFpQixHQUFqQixVQUFrQixRQUFnQixFQUFFLE1BQWM7UUFDaEQsSUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUN2QyxJQUFNLFNBQVMsR0FBRyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9ELE9BQU8sS0FBRyxRQUFRLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBSyxDQUFDO0lBQy9DLENBQUM7SUFFSyx5QkFBSSxHQUFWOzs7Ozs7d0JBQ00sTUFBTSxHQUFHLEVBQUUsQ0FBQzs7Ozt3QkFFVixLQUF3QyxJQUFJLENBQUMsTUFBTSxFQUFqRCxTQUFTLGVBQUEsRUFBRSxPQUFPLGFBQUEsRUFBRSxNQUFNLFlBQUEsRUFBRSxLQUFLLFdBQUEsQ0FBaUI7d0JBRXBELFdBQVcsR0FBRyxFQUFFLENBQUM7Ozs7d0JBRWIsVUFBVSxHQUFHLGNBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUM7d0JBQ3JELGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDOzZCQUMxRSxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQXRCLHdCQUFzQjt3QkFDVixxQkFBTSxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUE7O3dCQUF6QyxXQUFXLEdBQUcsU0FBMkIsQ0FBQzs7Ozs7d0JBRzVDLFdBQVcsR0FBRyxFQUFFLENBQUM7OzRCQUVPLHFCQUFNLGFBQWEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEVBQUUsTUFBTSxRQUFBLEVBQUUsQ0FBQyxFQUFBOzt3QkFBcEUsaUJBQWlCLEdBQUcsU0FBZ0Q7NkJBQ3RFLGlCQUFpQixFQUFqQix5QkFBaUI7d0JBQ25CLElBQUksQ0FBQyxPQUFPLEVBQUU7NEJBQ1osSUFBSSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQ0FDOUIsT0FBTyxHQUFHLE9BQU8sQ0FBQzs2QkFDbkI7aUNBQU07Z0NBQ0wsT0FBTyxHQUFHLGtCQUFrQixDQUFDOzZCQUM5Qjt5QkFDRjs2QkFDRyxDQUFBLE9BQU8sS0FBSyxrQkFBa0IsQ0FBQSxFQUE5Qix5QkFBOEI7NkJBQzVCLENBQUEsaUJBQWlCLENBQUMsS0FBSyxJQUFJLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUEsRUFBbEUsd0JBQWtFO3dCQUM5RCxTQUFTLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUM7d0JBQzVDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBRyxTQUFXLENBQUMsQ0FBQzs7Ozt3QkFHdEIsaUJBQWlCLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7d0JBQ3JFLHFCQUFNLFlBQUUsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsRUFBQTs7d0JBQTVDLElBQUksQ0FBQyxDQUFDLFNBQXNDLENBQUMsRUFBRTs0QkFDN0MsaUJBQWlCLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7eUJBQ3pFO3dCQUN3QixxQkFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQUUsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBQTs7d0JBQTlFLGdCQUFnQixHQUFHLFNBQTJEO3dCQUNwRixPQUFPLENBQUMsR0FBRyxDQUNULFNBQU8sZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFNBQUksZ0JBQWdCLENBQUMsU0FBUyxDQUFDLFVBQUssZ0JBQWdCLENBQUMsYUFBYSxDQUFDLE9BQUksQ0FDdkcsQ0FBQzt3QkFDRSxVQUFVLEdBQUcsQ0FBQyxDQUFDO3dCQUNuQixJQUFJLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxFQUFFOzRCQUNoQyxLQUFXLElBQUksSUFBSSxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsRUFBRTtnQ0FDL0MsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsRUFBRTtvQ0FDNUIsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7aUNBQzFCOzZCQUNGOzRCQUNELEtBQVcsSUFBSSxJQUFJLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxFQUFFO2dDQUMvQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsU0FBSSxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUcsQ0FBQyxDQUFDOzZCQUN0Rzs0QkFDRCxPQUFPLENBQUMsR0FBRyxDQUNULFVBQ0UsZ0JBQWdCLENBQUMsVUFBVSxDQUFDO2dDQUMxQixDQUFDLENBQUksSUFBQSxjQUFLLEVBQUMsSUFBSSxDQUFDLHdCQUFxQixHQUFHLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUk7Z0NBQzNFLENBQUMsQ0FBQyxFQUFFLENBQ04sQ0FDSCxDQUFDO3lCQUNIOzs7O3dCQUVELGNBQU0sQ0FBQyxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQzs7NkJBR3hELHNCQUFPLE1BQU0sRUFBQzs7NkJBRVosaUJBQWlCLENBQUMsT0FBTyxDQUFDLEVBQTFCLHlCQUEwQjt3QkFDeEIsUUFBUSxHQUFHLEVBQUUsQ0FBQzt3QkFDbEIsSUFBSTs0QkFDRixRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUM7eUJBQ3RDO3dCQUFDLE9BQU8sQ0FBQyxFQUFFOzRCQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQzt5QkFDckQ7Ozs7d0JBR0kscUJBQU0saUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7Z0NBQ2hDLEtBQUssRUFBRSxRQUFRO2dDQUNmLFVBQVUsRUFBRSxRQUFRO2dDQUNwQixXQUFXLEVBQUUsV0FBVztnQ0FDeEIsV0FBVyxFQUFFLFdBQVc7Z0NBQ3hCLE9BQU8sRUFBRSxTQUFTO2dDQUNsQixPQUFPLEVBQUU7b0NBQ1AsV0FBVyxFQUFFLFNBQVM7b0NBQ3RCLFdBQVcsRUFBRSxTQUFTO29DQUN0QixTQUFTLEVBQUUsU0FBUztvQ0FDcEIsU0FBUyxFQUFFLFNBQVM7b0NBQ3BCLFFBQVEsRUFBRSxTQUFTO29DQUNuQixRQUFRLEVBQUUsU0FBUztvQ0FDbkIsV0FBVyxFQUFFLE1BQU0sSUFBSSxTQUFTO29DQUNoQyxXQUFXLEVBQUUsTUFBTSxJQUFJLFNBQVM7aUNBQ2pDO2dDQUNELE9BQU8sRUFBRTtvQ0FDUCxTQUFTLEVBQUUsRUFBRTtvQ0FDYixNQUFNLEVBQUUsTUFBTSxJQUFJLFNBQVM7b0NBQzNCLFdBQVcsRUFBRSxFQUFFO2lDQUNoQjtnQ0FDRCxPQUFPLEVBQUUsT0FBTztnQ0FDaEIsT0FBTyxFQUFFLE9BQU87Z0NBQ2hCLElBQUksRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVc7Z0NBQzdCLE9BQU8sRUFBRSxPQUFPLENBQUMsYUFBYSxDQUFDO2dDQUMvQixJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXO2dDQUM3QixPQUFPLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQztnQ0FDL0IsSUFBSSxFQUFFO29DQUNKLFVBQVUsRUFBRSxFQUFFO2lDQUNmO2dDQUNELElBQUksRUFBRTtvQ0FDSixVQUFVLEVBQUUsRUFBRTtpQ0FDZjs2QkFDRixDQUFDLEVBQUE7O3dCQWxDSixNQUFNOzRCQUNKLENBQUMsU0FpQ0MsQ0FBQyxJQUFJLEVBQUUsQ0FBQzt3QkFFUixTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUU5RCxjQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQWtCLE9BQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7Ozs7d0JBRTNGLHFCQUFNLElBQUksbUJBQVcsQ0FBQztnQ0FDcEIsS0FBSyxTQUFBO2dDQUNMLE1BQU0sRUFBRSxvQkFBb0I7NkJBQzdCLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBSyxDQUFDLEVBQUE7O3dCQUhoQixTQUdnQixDQUFDO3dCQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDOzs7O3dCQUdsQixjQUFNLENBQUMsS0FBSyxDQUFDLDZCQUNuQixJQUFBLGNBQUssRUFBQyxHQUFHLENBQUMsNEJBQXVCLFNBQVMsMkJBQXNCLE9BQU8sb0JBQ3ZFLElBQUEsY0FBSyxFQUFDLElBQUksQ0FBQyx1REFBa0QsU0FBUyxnQkFDdEUsSUFBQSxjQUFLLEVBQUMsSUFBSSxDQUFDLGdEQUEyQyxNQUFNLENBQUMsU0FBUyxDQUM5RCwyREFBMkQsQ0FDNUQsT0FBSSxDQUFDLENBQUM7d0JBQ1AsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzs7Ozs7d0JBSXBCLHFCQUFNLElBQUksbUJBQVcsQ0FBQztnQ0FDcEIsS0FBSyxTQUFBO2dDQUNMLE1BQU0sRUFBRSxvQkFBb0I7NkJBQzdCLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBSyxDQUFDLEVBQUE7O3dCQUhoQixTQUdnQixDQUFDO3dCQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDOzs2QkFFbEIsc0JBQU8sTUFBTSxFQUFDOzs7O0tBQ2Y7SUFDSCxpQkFBQztBQUFELENBQUMsQUFwSkQsSUFvSkMifQ==
|