@scout9/app 1.0.0-alpha.0.5.0 → 1.0.0-alpha.0.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{dev-5c6f5d76.cjs → dev-be9ba80f.cjs} +37 -41
- package/dist/{index-45f6ee5e.cjs → index-11e312c6.cjs} +6 -6
- package/dist/index.cjs +3 -3
- package/dist/{macros-2f21c706.cjs → macros-57f9b28b.cjs} +2 -1
- package/dist/{multipart-parser-bac8efc8.cjs → multipart-parser-8a217889.cjs} +3 -3
- package/dist/schemas.cjs +1 -1
- package/dist/testing-tools.cjs +2 -2
- package/package.json +4 -3
- package/src/core/config/commands.js +1 -1
- package/src/core/templates/app.js +18 -3
- package/src/runtime/schemas/config.js +3 -2
- package/src/testing-tools/dev.js +14 -14
- package/types/index.d.ts +19 -3
- package/types/index.d.ts.map +1 -1
|
@@ -23,7 +23,7 @@ var Stream = require('node:stream');
|
|
|
23
23
|
var node_string_decoder = require('node:string_decoder');
|
|
24
24
|
var readline = require('node:readline');
|
|
25
25
|
var process$2 = require('node:process');
|
|
26
|
-
var macros = require("./macros-
|
|
26
|
+
var macros = require("./macros-57f9b28b.cjs");
|
|
27
27
|
var node_os = require('node:os');
|
|
28
28
|
var promises = require('fs/promises');
|
|
29
29
|
|
|
@@ -35164,7 +35164,7 @@ function _loadUserPackageJson() {
|
|
|
35164
35164
|
targetPkgUrl = isTest ? packageTestJsonUrl : packageJsonUrl;
|
|
35165
35165
|
_context2.t0 = JSON;
|
|
35166
35166
|
_context2.next = 10;
|
|
35167
|
-
return fs__default["default"].readFile(new URL(targetPkgUrl, (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('dev-
|
|
35167
|
+
return fs__default["default"].readFile(new URL(targetPkgUrl, (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('dev-be9ba80f.js', document.baseURI).href))), 'utf-8');
|
|
35168
35168
|
case 10:
|
|
35169
35169
|
_context2.t1 = _context2.sent;
|
|
35170
35170
|
pkg = _context2.t0.parse.call(_context2.t0, _context2.t1);
|
|
@@ -42619,7 +42619,6 @@ var _mode = /*#__PURE__*/new WeakMap();
|
|
|
42619
42619
|
var _loaded = /*#__PURE__*/new WeakMap();
|
|
42620
42620
|
var _personaId = /*#__PURE__*/new WeakMap();
|
|
42621
42621
|
var _defaultLog = /*#__PURE__*/new WeakMap();
|
|
42622
|
-
var _commandId = /*#__PURE__*/new WeakMap();
|
|
42623
42622
|
var _loadApp = /*#__PURE__*/new WeakSet();
|
|
42624
42623
|
var _loadCommand = /*#__PURE__*/new WeakSet();
|
|
42625
42624
|
var Scout9Test = /*#__PURE__*/function () {
|
|
@@ -42633,7 +42632,6 @@ var Scout9Test = /*#__PURE__*/function () {
|
|
|
42633
42632
|
* @param {string | undefined} [props.cwd]
|
|
42634
42633
|
* @param {string | undefined} [props.src]
|
|
42635
42634
|
* @param {string | undefined} [props.mode]
|
|
42636
|
-
* @param {string | null | undefined} [props.command] - if provided it will use the command runtime instead of the app runtime
|
|
42637
42635
|
* @param {import('@scout9/admin').Scout9Api} [props.api]
|
|
42638
42636
|
* @param {import('@scout9/app').WorkflowFunction} [props.app]
|
|
42639
42637
|
* @param {import('@scout9/app').Scout9ProjectBuildConfig} [props.project]
|
|
@@ -42657,8 +42655,6 @@ var Scout9Test = /*#__PURE__*/function () {
|
|
|
42657
42655
|
mode = _ref$mode === void 0 ? 'production' : _ref$mode,
|
|
42658
42656
|
api = _ref.api,
|
|
42659
42657
|
app = _ref.app,
|
|
42660
|
-
_ref$command = _ref.command,
|
|
42661
|
-
_command2 = _ref$command === void 0 ? null : _ref$command,
|
|
42662
42658
|
project = _ref.project,
|
|
42663
42659
|
_ref$log = _ref.log,
|
|
42664
42660
|
log = _ref$log === void 0 ? false : _ref$log;
|
|
@@ -42729,10 +42725,6 @@ var Scout9Test = /*#__PURE__*/function () {
|
|
|
42729
42725
|
writable: true,
|
|
42730
42726
|
value: void 0
|
|
42731
42727
|
});
|
|
42732
|
-
spirits._classPrivateFieldInitSpec(this, _commandId, {
|
|
42733
|
-
writable: true,
|
|
42734
|
-
value: null
|
|
42735
|
-
});
|
|
42736
42728
|
this.messages = [];
|
|
42737
42729
|
spirits._classPrivateFieldSet(this, _cwd, cwd);
|
|
42738
42730
|
spirits._classPrivateFieldSet(this, _src, src);
|
|
@@ -42750,9 +42742,6 @@ var Scout9Test = /*#__PURE__*/function () {
|
|
|
42750
42742
|
if (project) {
|
|
42751
42743
|
spirits._classPrivateFieldSet(this, _project, project);
|
|
42752
42744
|
}
|
|
42753
|
-
if (_command2) {
|
|
42754
|
-
spirits._classPrivateFieldSet(this, _commandId, _command2);
|
|
42755
|
-
}
|
|
42756
42745
|
if (!customer) {
|
|
42757
42746
|
customer = {
|
|
42758
42747
|
id: 'mock_customer_' + Math.random().toString(36).slice(2, 11),
|
|
@@ -42817,52 +42806,35 @@ var Scout9Test = /*#__PURE__*/function () {
|
|
|
42817
42806
|
_context.t7 = _context.sent;
|
|
42818
42807
|
(0, _context.t4)(_context.t5, _context.t6, _context.t7);
|
|
42819
42808
|
case 17:
|
|
42820
|
-
if (!spirits._classPrivateFieldGet(this, _commandId)) {
|
|
42821
|
-
_context.next = 26;
|
|
42822
|
-
break;
|
|
42823
|
-
}
|
|
42824
|
-
if (!(override || !spirits._classPrivateFieldGet(this, _commandId))) {
|
|
42825
|
-
_context.next = 26;
|
|
42826
|
-
break;
|
|
42827
|
-
}
|
|
42828
|
-
_context.t8 = spirits._classPrivateFieldSet;
|
|
42829
|
-
_context.t9 = this;
|
|
42830
|
-
_context.t10 = _command;
|
|
42831
|
-
_context.next = 24;
|
|
42832
|
-
return spirits._classPrivateMethodGet(this, _loadCommand, _loadCommand2).call(this, spirits._classPrivateFieldGet(this, _commandId));
|
|
42833
|
-
case 24:
|
|
42834
|
-
_context.t11 = _context.sent;
|
|
42835
|
-
(0, _context.t8)(_context.t9, _context.t10, _context.t11);
|
|
42836
|
-
case 26:
|
|
42837
42809
|
if (override || !spirits._classPrivateFieldGet(this, _api)) {
|
|
42838
42810
|
spirits._classPrivateFieldSet(this, _api, new build.Scout9Api(new build.Configuration({
|
|
42839
42811
|
apiKey: process.env.SCOUT9_API_KEY
|
|
42840
42812
|
})));
|
|
42841
42813
|
}
|
|
42842
42814
|
if (spirits._classPrivateFieldGet(this, _personaId)) {
|
|
42843
|
-
_context.next =
|
|
42815
|
+
_context.next = 22;
|
|
42844
42816
|
break;
|
|
42845
42817
|
}
|
|
42846
42818
|
spirits._classPrivateFieldSet(this, _personaId, (_ref2 = spirits._classPrivateFieldGet(this, _project).persona || spirits._classPrivateFieldGet(this, _project).agents) === null || _ref2 === void 0 || (_ref2 = _ref2[0]) === null || _ref2 === void 0 ? void 0 : _ref2.id);
|
|
42847
42819
|
if (spirits._classPrivateFieldGet(this, _personaId)) {
|
|
42848
|
-
_context.next =
|
|
42820
|
+
_context.next = 22;
|
|
42849
42821
|
break;
|
|
42850
42822
|
}
|
|
42851
42823
|
throw new Error("No persona found in config, please specify a persona id");
|
|
42852
|
-
case
|
|
42824
|
+
case 22:
|
|
42853
42825
|
this.conversation.$agent = spirits._classPrivateFieldGet(this, _personaId);
|
|
42854
42826
|
this.persona = (spirits._classPrivateFieldGet(this, _project).persona || spirits._classPrivateFieldGet(this, _project).agents).find(function (p) {
|
|
42855
42827
|
return p.id === spirits._classPrivateFieldGet(_this, _personaId);
|
|
42856
42828
|
});
|
|
42857
42829
|
if (this.persona) {
|
|
42858
|
-
_context.next =
|
|
42830
|
+
_context.next = 26;
|
|
42859
42831
|
break;
|
|
42860
42832
|
}
|
|
42861
42833
|
throw new Error("Could not find persona with id: ".concat(spirits._classPrivateFieldGet(this, _personaId), ", ensure your project is sync'd by running \"scout9 sync\" or you are using the correct persona id"));
|
|
42862
|
-
case
|
|
42834
|
+
case 26:
|
|
42863
42835
|
this.context.agent = this.persona;
|
|
42864
42836
|
spirits._classPrivateFieldSet(this, _loaded, true);
|
|
42865
|
-
case
|
|
42837
|
+
case 28:
|
|
42866
42838
|
case "end":
|
|
42867
42839
|
return _context.stop();
|
|
42868
42840
|
}
|
|
@@ -42898,6 +42870,8 @@ var Scout9Test = /*#__PURE__*/function () {
|
|
|
42898
42870
|
var _send = spirits._asyncToGenerator( /*#__PURE__*/spirits._regeneratorRuntime().mark(function _callee4(message) {
|
|
42899
42871
|
var _this2 = this;
|
|
42900
42872
|
var progress,
|
|
42873
|
+
target,
|
|
42874
|
+
commandToSwitchTo,
|
|
42901
42875
|
defaultProgressLogger,
|
|
42902
42876
|
progressInput,
|
|
42903
42877
|
_message,
|
|
@@ -42916,6 +42890,27 @@ var Scout9Test = /*#__PURE__*/function () {
|
|
|
42916
42890
|
_context4.next = 4;
|
|
42917
42891
|
return this.load();
|
|
42918
42892
|
case 4:
|
|
42893
|
+
// Check if it's a command
|
|
42894
|
+
target = message.toLowerCase().trim();
|
|
42895
|
+
commandToSwitchTo = spirits._classPrivateFieldGet(this, _project).commands.find(function (command) {
|
|
42896
|
+
return command.entity === target;
|
|
42897
|
+
});
|
|
42898
|
+
if (!commandToSwitchTo) {
|
|
42899
|
+
_context4.next = 15;
|
|
42900
|
+
break;
|
|
42901
|
+
}
|
|
42902
|
+
_context4.t0 = spirits._classPrivateFieldSet;
|
|
42903
|
+
_context4.t1 = this;
|
|
42904
|
+
_context4.t2 = _command;
|
|
42905
|
+
_context4.next = 12;
|
|
42906
|
+
return spirits._classPrivateMethodGet(this, _loadCommand, _loadCommand2).call(this, commandToSwitchTo.entity);
|
|
42907
|
+
case 12:
|
|
42908
|
+
_context4.t3 = _context4.sent;
|
|
42909
|
+
(0, _context4.t0)(_context4.t1, _context4.t2, _context4.t3);
|
|
42910
|
+
Object.assign(this.context, {
|
|
42911
|
+
__command: commandToSwitchTo.entity
|
|
42912
|
+
});
|
|
42913
|
+
case 15:
|
|
42919
42914
|
defaultProgressLogger = function defaultProgressLogger(message) {
|
|
42920
42915
|
var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'info';
|
|
42921
42916
|
var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
|
|
@@ -42934,15 +42929,16 @@ var Scout9Test = /*#__PURE__*/function () {
|
|
|
42934
42929
|
|
|
42935
42930
|
/**
|
|
42936
42931
|
* @type {import('@scout9/app').Message}
|
|
42932
|
+
* If we are switching to a command instance, we would want the first message to be system invoke
|
|
42937
42933
|
*/
|
|
42938
42934
|
_message = {
|
|
42939
42935
|
id: 'user_mock_' + Math.random().toString(36).slice(2, 11),
|
|
42940
|
-
role: 'customer',
|
|
42941
|
-
content: message,
|
|
42936
|
+
role: commandToSwitchTo ? 'system' : 'customer',
|
|
42937
|
+
content: commandToSwitchTo ? "Start by gathering/asking the user for relevant \"".concat(commandToSwitchTo.entity, "\" parameters") : message,
|
|
42942
42938
|
time: new Date().toISOString()
|
|
42943
42939
|
};
|
|
42944
42940
|
this.messages.push(_message);
|
|
42945
|
-
_context4.next =
|
|
42941
|
+
_context4.next = 22;
|
|
42946
42942
|
return spirits.Spirits.customer({
|
|
42947
42943
|
customer: this.customer,
|
|
42948
42944
|
config: spirits._classPrivateFieldGet(this, _project),
|
|
@@ -43016,7 +43012,7 @@ var Scout9Test = /*#__PURE__*/function () {
|
|
|
43016
43012
|
messages: this.messages,
|
|
43017
43013
|
conversation: this.conversation
|
|
43018
43014
|
});
|
|
43019
|
-
case
|
|
43015
|
+
case 22:
|
|
43020
43016
|
result = _context4.sent;
|
|
43021
43017
|
this.context = result.context.after;
|
|
43022
43018
|
this.messages = result.messages.after;
|
|
@@ -43044,7 +43040,7 @@ var Scout9Test = /*#__PURE__*/function () {
|
|
|
43044
43040
|
console.error("Message not found in result.messages.after", result.message.after.id);
|
|
43045
43041
|
}
|
|
43046
43042
|
return _context4.abrupt("return", result);
|
|
43047
|
-
case
|
|
43043
|
+
case 29:
|
|
43048
43044
|
case "end":
|
|
43049
43045
|
return _context4.stop();
|
|
43050
43046
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var spirits = require("./spirits-2ab4d673.cjs");
|
|
4
|
-
var dev = require("./dev-
|
|
5
|
-
var macros = require("./macros-
|
|
4
|
+
var dev = require("./dev-be9ba80f.cjs");
|
|
5
|
+
var macros = require("./macros-57f9b28b.cjs");
|
|
6
6
|
var require$$0 = require('fs');
|
|
7
7
|
var require$$2$1 = require('events');
|
|
8
8
|
var require$$1 = require('path');
|
|
@@ -29483,7 +29483,7 @@ class Body {
|
|
|
29483
29483
|
}
|
|
29484
29484
|
const {
|
|
29485
29485
|
toFormData
|
|
29486
|
-
} = await Promise.resolve().then(function () { return require("./multipart-parser-
|
|
29486
|
+
} = await Promise.resolve().then(function () { return require("./multipart-parser-8a217889.cjs"); });
|
|
29487
29487
|
return toFormData(this.body, ct);
|
|
29488
29488
|
}
|
|
29489
29489
|
|
|
@@ -41884,7 +41884,7 @@ function _loadUserPackageJson() {
|
|
|
41884
41884
|
targetPkgUrl = isTest ? packageTestJsonUrl : packageJsonUrl;
|
|
41885
41885
|
_context.t0 = JSON;
|
|
41886
41886
|
_context.next = 10;
|
|
41887
|
-
return fs__default["default"].readFile(new URL(targetPkgUrl, (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('index-
|
|
41887
|
+
return fs__default["default"].readFile(new URL(targetPkgUrl, (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('index-11e312c6.js', document.baseURI).href))), 'utf-8');
|
|
41888
41888
|
case 10:
|
|
41889
41889
|
_context.t1 = _context.sent;
|
|
41890
41890
|
pkg = _context.t0.parse.call(_context.t0, _context.t1);
|
|
@@ -43164,7 +43164,7 @@ var ProjectFiles = /*#__PURE__*/function () {
|
|
|
43164
43164
|
return ProjectFiles;
|
|
43165
43165
|
}();
|
|
43166
43166
|
|
|
43167
|
-
var __filename$1 = node_url.fileURLToPath((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('index-
|
|
43167
|
+
var __filename$1 = node_url.fileURLToPath((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('index-11e312c6.js', document.baseURI).href)));
|
|
43168
43168
|
var __dirname$1 = path__default["default"].dirname(__filename$1);
|
|
43169
43169
|
function zipDirectory(source, out) {
|
|
43170
43170
|
var archive = archiver$1('tar', {
|
|
@@ -43379,7 +43379,7 @@ function _buildApp() {
|
|
|
43379
43379
|
case 11:
|
|
43380
43380
|
_context4.t0 = JSON;
|
|
43381
43381
|
_context4.next = 14;
|
|
43382
|
-
return fs__default["default"].readFile(new URL(templatePackagePath, (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('index-
|
|
43382
|
+
return fs__default["default"].readFile(new URL(templatePackagePath, (typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('index-11e312c6.js', document.baseURI).href))), 'utf-8');
|
|
43383
43383
|
case 14:
|
|
43384
43384
|
_context4.t1 = _context4.sent;
|
|
43385
43385
|
packageTemplate = _context4.t0.parse.call(_context4.t0, _context4.t1);
|
package/dist/index.cjs
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var index = require("./index-
|
|
6
|
-
var dev = require("./dev-
|
|
5
|
+
var index = require("./index-11e312c6.cjs");
|
|
6
|
+
var dev = require("./dev-be9ba80f.cjs");
|
|
7
7
|
require("./spirits-2ab4d673.cjs");
|
|
8
|
-
require("./macros-
|
|
8
|
+
require("./macros-57f9b28b.cjs");
|
|
9
9
|
require('fs');
|
|
10
10
|
require('events');
|
|
11
11
|
require('path');
|
|
@@ -4510,7 +4510,8 @@ var Scout9ProjectConfigSchema = z.object({
|
|
|
4510
4510
|
var Scout9ProjectBuildConfigSchema = Scout9ProjectConfigSchema.extend({
|
|
4511
4511
|
agents: AgentsSchema,
|
|
4512
4512
|
entities: EntitiesRootProjectConfigurationSchema,
|
|
4513
|
-
workflows: WorkflowsConfigurationSchema
|
|
4513
|
+
workflows: WorkflowsConfigurationSchema,
|
|
4514
|
+
commands: CommandsSchema
|
|
4514
4515
|
});
|
|
4515
4516
|
|
|
4516
4517
|
var apiFunctionParamsSchema = z.object({
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
require('node:fs');
|
|
4
4
|
require('node:path');
|
|
5
|
-
var index = require("./index-
|
|
5
|
+
var index = require("./index-11e312c6.cjs");
|
|
6
6
|
require("./spirits-2ab4d673.cjs");
|
|
7
|
-
require("./dev-
|
|
7
|
+
require("./dev-be9ba80f.cjs");
|
|
8
8
|
require('util');
|
|
9
9
|
require('stream');
|
|
10
10
|
require('path');
|
|
@@ -25,7 +25,7 @@ require('node:stream');
|
|
|
25
25
|
require('node:string_decoder');
|
|
26
26
|
require('node:readline');
|
|
27
27
|
require('node:process');
|
|
28
|
-
require("./macros-
|
|
28
|
+
require("./macros-57f9b28b.cjs");
|
|
29
29
|
require('node:os');
|
|
30
30
|
require('fs/promises');
|
|
31
31
|
require('constants');
|
package/dist/schemas.cjs
CHANGED
package/dist/testing-tools.cjs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var dev = require("./dev-
|
|
5
|
+
var dev = require("./dev-be9ba80f.cjs");
|
|
6
6
|
require("./spirits-2ab4d673.cjs");
|
|
7
7
|
require('util');
|
|
8
8
|
require('stream');
|
|
@@ -26,7 +26,7 @@ require('node:stream');
|
|
|
26
26
|
require('node:string_decoder');
|
|
27
27
|
require('node:readline');
|
|
28
28
|
require('node:process');
|
|
29
|
-
require("./macros-
|
|
29
|
+
require("./macros-57f9b28b.cjs");
|
|
30
30
|
require('node:os');
|
|
31
31
|
require('fs/promises');
|
|
32
32
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scout9/app",
|
|
3
|
-
"version": "1.0.0-alpha.0.5.
|
|
3
|
+
"version": "1.0.0-alpha.0.5.3",
|
|
4
4
|
"description": "Build and deploy your Scout9 app for SMS auto replies",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -85,8 +85,6 @@
|
|
|
85
85
|
"zod-to-ts": "^1.2.0"
|
|
86
86
|
},
|
|
87
87
|
"dependencies": {
|
|
88
|
-
"@scout9/admin": "latest",
|
|
89
|
-
"@scout9/crm": "latest",
|
|
90
88
|
"archiver": "^6.0.1",
|
|
91
89
|
"body-parser": "^1.20.2",
|
|
92
90
|
"compression": "^1.7.4",
|
|
@@ -105,6 +103,9 @@
|
|
|
105
103
|
"zod": "^3.22.4",
|
|
106
104
|
"zod-validation-error": "^3.4.0"
|
|
107
105
|
},
|
|
106
|
+
"peerDependencies": {
|
|
107
|
+
"@scout9/admin": ">= 1.0.0-alpha.0.0.51"
|
|
108
|
+
},
|
|
108
109
|
"engines": {
|
|
109
110
|
"node": ">=18.13"
|
|
110
111
|
}
|
|
@@ -223,8 +223,7 @@ if (dev) {
|
|
|
223
223
|
app.use(sirv(path.resolve(__dirname, 'public'), {dev: true}));
|
|
224
224
|
}
|
|
225
225
|
|
|
226
|
-
|
|
227
|
-
app.post(dev ? '/dev/workflow' : '/', async (req, res) => {
|
|
226
|
+
function parseWorkflowEvent(req, res) {
|
|
228
227
|
let workflowEvent;
|
|
229
228
|
|
|
230
229
|
try {
|
|
@@ -252,7 +251,18 @@ app.post(dev ? '/dev/workflow' : '/', async (req, res) => {
|
|
|
252
251
|
|
|
253
252
|
if (!workflowEvent) {
|
|
254
253
|
handleError(new Error('No workflowEvent defined'), res, req.body.event, 'Workflow Template Event No Event');
|
|
254
|
+
} else {
|
|
255
|
+
return workflowEvent;
|
|
255
256
|
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
// Root application POST endpoint will run the scout9 app
|
|
260
|
+
app.post(dev ? '/dev/workflow' : '/', async (req, res) => {
|
|
261
|
+
const workflowEvent = parseWorkflowEvent(req, res);
|
|
262
|
+
if (!workflowEvent) {
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
|
|
256
266
|
let response;
|
|
257
267
|
try {
|
|
258
268
|
response = await projectApp(workflowEvent)
|
|
@@ -488,10 +498,15 @@ async function runCommandApi(req, res) {
|
|
|
488
498
|
return;
|
|
489
499
|
}
|
|
490
500
|
|
|
501
|
+
const workflowEvent = parseWorkflowEvent(req, res);
|
|
502
|
+
if (!workflowEvent) {
|
|
503
|
+
return;
|
|
504
|
+
}
|
|
505
|
+
|
|
491
506
|
let result;
|
|
492
507
|
|
|
493
508
|
try {
|
|
494
|
-
result = await mod.default(
|
|
509
|
+
result = await mod.default(workflowEvent)
|
|
495
510
|
.then((response) => {
|
|
496
511
|
if ('toJSON' in response) {
|
|
497
512
|
return response.toJSON();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { AgentsSchema } from './users.js';
|
|
3
3
|
import { EntitiesRootProjectConfigurationSchema } from './entity.js';
|
|
4
|
-
import { WorkflowsConfigurationSchema } from './workflow.js';
|
|
4
|
+
import { CommandsSchema, WorkflowsConfigurationSchema } from './workflow.js';
|
|
5
5
|
|
|
6
6
|
const LlmModelOptions = z.union([
|
|
7
7
|
z.literal('gpt-4-1106-preview'),
|
|
@@ -95,7 +95,8 @@ export const Scout9ProjectConfigSchema = z.object({
|
|
|
95
95
|
export const Scout9ProjectBuildConfigSchema = Scout9ProjectConfigSchema.extend({
|
|
96
96
|
agents: AgentsSchema,
|
|
97
97
|
entities: EntitiesRootProjectConfigurationSchema,
|
|
98
|
-
workflows: WorkflowsConfigurationSchema
|
|
98
|
+
workflows: WorkflowsConfigurationSchema,
|
|
99
|
+
commands: CommandsSchema
|
|
99
100
|
});
|
|
100
101
|
|
|
101
102
|
|
package/src/testing-tools/dev.js
CHANGED
|
@@ -49,7 +49,6 @@ export class Scout9Test {
|
|
|
49
49
|
#loaded;
|
|
50
50
|
#personaId;
|
|
51
51
|
#defaultLog;
|
|
52
|
-
#commandId = null;
|
|
53
52
|
|
|
54
53
|
|
|
55
54
|
/**
|
|
@@ -62,7 +61,6 @@ export class Scout9Test {
|
|
|
62
61
|
* @param {string | undefined} [props.cwd]
|
|
63
62
|
* @param {string | undefined} [props.src]
|
|
64
63
|
* @param {string | undefined} [props.mode]
|
|
65
|
-
* @param {string | null | undefined} [props.command] - if provided it will use the command runtime instead of the app runtime
|
|
66
64
|
* @param {import('@scout9/admin').Scout9Api} [props.api]
|
|
67
65
|
* @param {import('@scout9/app').WorkflowFunction} [props.app]
|
|
68
66
|
* @param {import('@scout9/app').Scout9ProjectBuildConfig} [props.project]
|
|
@@ -78,7 +76,6 @@ export class Scout9Test {
|
|
|
78
76
|
mode = 'production',
|
|
79
77
|
api,
|
|
80
78
|
app,
|
|
81
|
-
command = null,
|
|
82
79
|
project,
|
|
83
80
|
log = false
|
|
84
81
|
} = {
|
|
@@ -102,9 +99,6 @@ export class Scout9Test {
|
|
|
102
99
|
if (project) {
|
|
103
100
|
this.#project = project;
|
|
104
101
|
}
|
|
105
|
-
if (command) {
|
|
106
|
-
this.#commandId = command;
|
|
107
|
-
}
|
|
108
102
|
if (!customer) {
|
|
109
103
|
customer = {
|
|
110
104
|
id: 'mock_customer_' + Math.random().toString(36).slice(2, 11),
|
|
@@ -139,12 +133,6 @@ export class Scout9Test {
|
|
|
139
133
|
this.#project = await loadConfig({cwd: this.#cwd, src: this.#src, mode: this.#mode});
|
|
140
134
|
}
|
|
141
135
|
|
|
142
|
-
if (this.#commandId) {
|
|
143
|
-
if (override || !this.#commandId) {
|
|
144
|
-
this.#command = await this.#loadCommand(this.#commandId);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
|
|
148
136
|
if (override || !this.#api) {
|
|
149
137
|
this.#api = new Scout9Api(new Configuration({apiKey: process.env.SCOUT9_API_KEY}));
|
|
150
138
|
}
|
|
@@ -181,10 +169,21 @@ export class Scout9Test {
|
|
|
181
169
|
* @returns {Promise<import('@scout9/app/spirits').ConversationEvent>}
|
|
182
170
|
*/
|
|
183
171
|
async send(message, progress = this.#defaultLog) {
|
|
172
|
+
|
|
184
173
|
if (!this.#loaded) {
|
|
185
174
|
await this.load();
|
|
186
175
|
}
|
|
187
176
|
|
|
177
|
+
// Check if it's a command
|
|
178
|
+
const target = message.toLowerCase().trim();
|
|
179
|
+
const commandToSwitchTo = this.#project.commands.find(command => {
|
|
180
|
+
return command.entity === target;
|
|
181
|
+
});
|
|
182
|
+
if (commandToSwitchTo) {
|
|
183
|
+
this.#command = await this.#loadCommand(commandToSwitchTo.entity);
|
|
184
|
+
Object.assign(this.context, {__command: commandToSwitchTo.entity});
|
|
185
|
+
}
|
|
186
|
+
|
|
188
187
|
const defaultProgressLogger = (message, level = 'info', type = '') => {
|
|
189
188
|
const typeStdout = type ? italic(bgWhite(' ' + black(type) + ' ')) : '';
|
|
190
189
|
const messageStdout = grey(message);
|
|
@@ -206,11 +205,12 @@ export class Scout9Test {
|
|
|
206
205
|
|
|
207
206
|
/**
|
|
208
207
|
* @type {import('@scout9/app').Message}
|
|
208
|
+
* If we are switching to a command instance, we would want the first message to be system invoke
|
|
209
209
|
*/
|
|
210
210
|
const _message = {
|
|
211
211
|
id: 'user_mock_' + Math.random().toString(36).slice(2, 11),
|
|
212
|
-
role: 'customer',
|
|
213
|
-
content: message,
|
|
212
|
+
role: commandToSwitchTo ? 'system' : 'customer',
|
|
213
|
+
content: commandToSwitchTo ? `Start by gathering/asking the user for relevant "${commandToSwitchTo.entity}" parameters` : message,
|
|
214
214
|
time: new Date().toISOString()
|
|
215
215
|
};
|
|
216
216
|
this.messages.push(_message);
|
package/types/index.d.ts
CHANGED
|
@@ -698,10 +698,9 @@ declare module '@scout9/app/testing-tools' {
|
|
|
698
698
|
* @param props.context - prior conversation context
|
|
699
699
|
* @param props.persona id to use
|
|
700
700
|
* @param props.conversation - existing conversation
|
|
701
|
-
* @param props.command - if provided it will use the command runtime instead of the app runtime
|
|
702
701
|
*
|
|
703
702
|
*/
|
|
704
|
-
constructor({ persona, customer, context, conversation, cwd, src, mode, api, app,
|
|
703
|
+
constructor({ persona, customer, context, conversation, cwd, src, mode, api, app, project, log }?: {
|
|
705
704
|
cwd?: string;
|
|
706
705
|
src?: string;
|
|
707
706
|
mode?: string;
|
|
@@ -711,7 +710,6 @@ declare module '@scout9/app/testing-tools' {
|
|
|
711
710
|
conversation?: any;
|
|
712
711
|
api: any;
|
|
713
712
|
app: any;
|
|
714
|
-
command?: null | undefined;
|
|
715
713
|
project: any;
|
|
716
714
|
log?: boolean | undefined;
|
|
717
715
|
});
|
|
@@ -2529,6 +2527,16 @@ declare module '@scout9/app/schemas' {
|
|
|
2529
2527
|
entity: string;
|
|
2530
2528
|
entities: string[];
|
|
2531
2529
|
}>, "many">;
|
|
2530
|
+
commands: z.ZodArray<z.ZodObject<{
|
|
2531
|
+
path: z.ZodString;
|
|
2532
|
+
entity: z.ZodString;
|
|
2533
|
+
}, "strip", z.ZodTypeAny, {
|
|
2534
|
+
path: string;
|
|
2535
|
+
entity: string;
|
|
2536
|
+
}, {
|
|
2537
|
+
path: string;
|
|
2538
|
+
entity: string;
|
|
2539
|
+
}>, "many">;
|
|
2532
2540
|
}, "strip", z.ZodTypeAny, {
|
|
2533
2541
|
agents: {
|
|
2534
2542
|
title: string;
|
|
@@ -2612,6 +2620,10 @@ declare module '@scout9/app/schemas' {
|
|
|
2612
2620
|
entity: string;
|
|
2613
2621
|
entities: string[];
|
|
2614
2622
|
}[];
|
|
2623
|
+
commands: {
|
|
2624
|
+
path: string;
|
|
2625
|
+
entity: string;
|
|
2626
|
+
}[];
|
|
2615
2627
|
organization?: {
|
|
2616
2628
|
name: string;
|
|
2617
2629
|
description: string;
|
|
@@ -2708,6 +2720,10 @@ declare module '@scout9/app/schemas' {
|
|
|
2708
2720
|
entity: string;
|
|
2709
2721
|
entities: string[];
|
|
2710
2722
|
}[];
|
|
2723
|
+
commands: {
|
|
2724
|
+
path: string;
|
|
2725
|
+
entity: string;
|
|
2726
|
+
}[];
|
|
2711
2727
|
organization?: {
|
|
2712
2728
|
name: string;
|
|
2713
2729
|
description: string;
|
package/types/index.d.ts.map
CHANGED
|
@@ -153,5 +153,5 @@
|
|
|
153
153
|
null,
|
|
154
154
|
null
|
|
155
155
|
],
|
|
156
|
-
"mappings": "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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAgB1BC,sBAAsBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAKtBC,sBAAsBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cCnLtBC,iBAAiBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAIjBC,sBAAsBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAEtBC,oBAAoBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAEpBC,qBAAqBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAOrBC,oBAAoBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAOpBC,sBAAsBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAMtBC,uBAAuBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cCtCvBrG,mBAAmBA;cAanBsG,4BAA4BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAU5BC,kBAAkBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cCxBlBC,oCAAoCA;;;;;;;;;;cAKpCC,oBAAoBA"
|
|
156
|
+
"mappings": "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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAgB1BC,sBAAsBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAKtBC,sBAAsBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cCnLtBC,iBAAiBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAIjBC,sBAAsBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAEtBC,oBAAoBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAEpBC,qBAAqBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAOrBC,oBAAoBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAOpBC,sBAAsBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAMtBC,uBAAuBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cCtCvBrG,mBAAmBA;cAanBsG,4BAA4BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAU5BC,kBAAkBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cCxBlBC,oCAAoCA;;;;;;;;;;cAKpCC,oBAAoBA"
|
|
157
157
|
}
|