@norskvideo/norsk-studio-built-ins 1.27.0-2025-05-09-832c7b88 → 1.27.0-2025-05-14-7d3dbd14
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/client/info.js +39762 -1235
- package/client/processor.smartSourceSwitch/extra.css +0 -0
- package/lib/info.js +10 -8
- package/lib/info.js.map +1 -1
- package/lib/input.srt-listener/info.js +2 -0
- package/lib/input.srt-listener/info.js.map +1 -1
- package/lib/processor.smartSingleMediaSwitch/info.d.ts +3 -0
- package/lib/{processor.cascadingSwitch → processor.smartSingleMediaSwitch}/info.js +45 -40
- package/lib/processor.smartSingleMediaSwitch/info.js.map +1 -0
- package/lib/processor.smartSingleMediaSwitch/inline-view.d.ts +6 -0
- package/lib/processor.smartSingleMediaSwitch/inline-view.js +15 -0
- package/lib/processor.smartSingleMediaSwitch/inline-view.js.map +1 -0
- package/lib/processor.smartSingleMediaSwitch/runtime.d.ts +64 -0
- package/lib/processor.smartSingleMediaSwitch/runtime.js +135 -0
- package/lib/processor.smartSingleMediaSwitch/runtime.js.map +1 -0
- package/lib/processor.smartSingleMediaSwitch/source-selection.d.ts +8 -0
- package/lib/processor.smartSingleMediaSwitch/source-selection.js +36 -0
- package/lib/processor.smartSingleMediaSwitch/source-selection.js.map +1 -0
- package/lib/processor.smartSourceSwitch/info.d.ts +3 -0
- package/lib/processor.smartSourceSwitch/info.js +155 -0
- package/lib/processor.smartSourceSwitch/info.js.map +1 -0
- package/lib/processor.smartSourceSwitch/inline-view.d.ts +6 -0
- package/lib/processor.smartSourceSwitch/inline-view.js.map +1 -0
- package/lib/{processor.cascadingSwitch → processor.smartSourceSwitch}/runtime.d.ts +16 -13
- package/lib/{processor.cascadingSwitch → processor.smartSourceSwitch}/runtime.js +17 -13
- package/lib/processor.smartSourceSwitch/runtime.js.map +1 -0
- package/lib/processor.smartSourceSwitch/source-selection.js.map +1 -0
- package/lib/processor.videoDecoder/info.js +1 -1
- package/lib/processor.videoDecoder/info.js.map +1 -1
- package/lib/shared/whep.js +2 -1
- package/lib/shared/whep.js.map +1 -1
- package/lib/test/smart-single-media-switch.js +288 -0
- package/lib/test/smart-single-media-switch.js.map +1 -0
- package/lib/test/smart-source-switch.d.ts +1 -0
- package/lib/test/{cascading-switch.js → smart-source-switch.js} +41 -49
- package/lib/test/smart-source-switch.js.map +1 -0
- package/package.json +3 -3
- package/lib/processor.cascadingSwitch/info.d.ts +0 -3
- package/lib/processor.cascadingSwitch/info.js.map +0 -1
- package/lib/processor.cascadingSwitch/inline-view.d.ts +0 -6
- package/lib/processor.cascadingSwitch/inline-view.js.map +0 -1
- package/lib/processor.cascadingSwitch/runtime.js.map +0 -1
- package/lib/processor.cascadingSwitch/source-selection.js.map +0 -1
- package/lib/test/cascading-switch.js.map +0 -1
- /package/client/{processor.cascadingSwitch → processor.smartSingleMediaSwitch}/extra.css +0 -0
- /package/lib/{processor.cascadingSwitch → processor.smartSourceSwitch}/inline-view.js +0 -0
- /package/lib/{processor.cascadingSwitch → processor.smartSourceSwitch}/source-selection.d.ts +0 -0
- /package/lib/{processor.cascadingSwitch → processor.smartSourceSwitch}/source-selection.js +0 -0
- /package/lib/test/{cascading-switch.d.ts → smart-single-media-switch.d.ts} +0 -0
@@ -0,0 +1,288 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
15
|
+
}) : function(o, v) {
|
16
|
+
o["default"] = v;
|
17
|
+
});
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
19
|
+
if (mod && mod.__esModule) return mod;
|
20
|
+
var result = {};
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
22
|
+
__setModuleDefault(result, mod);
|
23
|
+
return result;
|
24
|
+
};
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
27
|
+
};
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
29
|
+
const norsk_sdk_1 = require("@norskvideo/norsk-sdk");
|
30
|
+
const builder_1 = require("@norskvideo/norsk-studio/lib/test/_util/builder");
|
31
|
+
const document = __importStar(require("@norskvideo/norsk-studio/lib/runtime/document"));
|
32
|
+
const yaml_1 = __importDefault(require("yaml"));
|
33
|
+
const execution_1 = __importDefault(require("@norskvideo/norsk-studio/lib/runtime/execution"));
|
34
|
+
const sinks_1 = require("@norskvideo/norsk-studio/lib/test/_util/sinks");
|
35
|
+
const info_1 = __importDefault(require("../processor.smartSingleMediaSwitch/info"));
|
36
|
+
const chai_1 = require("chai");
|
37
|
+
const runtime_1 = require("@norskvideo/norsk-studio/lib/test/_util/runtime");
|
38
|
+
const session_1 = __importDefault(require("@norskvideo/norsk-studio/lib/client/session"));
|
39
|
+
const client_types_1 = require("@norskvideo/norsk-studio/lib/extension/client-types");
|
40
|
+
const document_1 = require("@norskvideo/norsk-studio/lib/shared/document");
|
41
|
+
const __1 = __importDefault(require(".."));
|
42
|
+
const SmartSingleMediaInfo = (0, info_1.default)(client_types_1.RegistrationConsts);
|
43
|
+
async function createRuntime() {
|
44
|
+
const runtime = await (0, runtime_1.testRuntime)();
|
45
|
+
await (0, __1.default)(runtime);
|
46
|
+
return runtime;
|
47
|
+
}
|
48
|
+
async function createLibrary() {
|
49
|
+
const runtime = await createRuntime();
|
50
|
+
return (0, runtime_1.extractLibraryFromRuntime)(runtime);
|
51
|
+
}
|
52
|
+
describe("SmartSingleMedia Switch", () => {
|
53
|
+
describe("SmartSingleMedia Design time", () => {
|
54
|
+
const yaml = new builder_1.YamlBuilder().reify();
|
55
|
+
let session = undefined;
|
56
|
+
const initialConfig = {
|
57
|
+
id: "switch",
|
58
|
+
displayName: "Switch",
|
59
|
+
resolution: {
|
60
|
+
width: 1920,
|
61
|
+
height: 1080
|
62
|
+
},
|
63
|
+
frameRate: {
|
64
|
+
frames: 25,
|
65
|
+
seconds: 1
|
66
|
+
},
|
67
|
+
sampleRate: 48000,
|
68
|
+
channelLayout: "mono",
|
69
|
+
sources: []
|
70
|
+
};
|
71
|
+
function getSwitch() {
|
72
|
+
return session?.description.findNode(initialConfig.id);
|
73
|
+
}
|
74
|
+
beforeEach(async () => {
|
75
|
+
const library = await createLibrary();
|
76
|
+
session = new session_1.default(library, new document_1.DocumentDescription(library, yaml), {});
|
77
|
+
session.addNode(SmartSingleMediaInfo.identifier);
|
78
|
+
session.finishEditingNode("", { config: initialConfig });
|
79
|
+
});
|
80
|
+
describe("Adding the first source", () => {
|
81
|
+
beforeEach(async () => {
|
82
|
+
const source = session.addNode(runtime_1.AudioInput.info.identifier);
|
83
|
+
session?.finishEditingNode("", { config: { id: 'source1', sourceName: true } });
|
84
|
+
session?.addSubscription(source, getSwitch());
|
85
|
+
});
|
86
|
+
it("Adds the source to the config", () => {
|
87
|
+
(0, chai_1.expect)(getSwitch().config.sources).lengthOf(1);
|
88
|
+
(0, chai_1.expect)(getSwitch().config.sources[0].sourceName).equals('source1');
|
89
|
+
});
|
90
|
+
});
|
91
|
+
describe("Adding two sources", () => {
|
92
|
+
beforeEach(async () => {
|
93
|
+
const source1 = session.addNode(runtime_1.AudioInput.info.identifier);
|
94
|
+
session.finishEditingNode("", { config: { id: 'source1', sourceName: true } });
|
95
|
+
const source2 = session.addNode(runtime_1.AudioInput.info.identifier);
|
96
|
+
session.finishEditingNode("", { config: { id: 'source2', sourceName: true } });
|
97
|
+
session.addSubscription(source1, getSwitch());
|
98
|
+
session.addSubscription(source2, getSwitch());
|
99
|
+
});
|
100
|
+
it("Adds the sources to the config in order", () => {
|
101
|
+
(0, chai_1.expect)(getSwitch().config.sources).lengthOf(2);
|
102
|
+
(0, chai_1.expect)(getSwitch().config.sources[0].sourceName).equals('source1');
|
103
|
+
(0, chai_1.expect)(getSwitch().config.sources[1].sourceName).equals('source2');
|
104
|
+
});
|
105
|
+
});
|
106
|
+
describe("Removing a source", () => {
|
107
|
+
beforeEach(async () => {
|
108
|
+
const source1 = session.addNode(runtime_1.AudioInput.info.identifier);
|
109
|
+
session.finishEditingNode("", { config: { id: 'source1', sourceName: true } });
|
110
|
+
const source2 = session.addNode(runtime_1.AudioInput.info.identifier);
|
111
|
+
session.finishEditingNode("", { config: { id: 'source2', sourceName: true } });
|
112
|
+
session.addSubscription(source1, getSwitch());
|
113
|
+
session.addSubscription(source2, getSwitch());
|
114
|
+
session.removeSubscription(source1.id, getSwitch().id);
|
115
|
+
});
|
116
|
+
it("Removes the source from config", () => {
|
117
|
+
(0, chai_1.expect)(getSwitch().config.sources).lengthOf(1);
|
118
|
+
(0, chai_1.expect)(getSwitch().config.sources[0].sourceName).equals('source2');
|
119
|
+
});
|
120
|
+
});
|
121
|
+
describe("Source is renamed", () => {
|
122
|
+
beforeEach(async () => {
|
123
|
+
const source1 = session.addNode(runtime_1.AudioInput.info.identifier);
|
124
|
+
session.finishEditingNode("", { config: { id: 'source1', sourceName: true } });
|
125
|
+
const source2 = session.addNode(runtime_1.AudioInput.info.identifier);
|
126
|
+
session.finishEditingNode("", { config: { id: 'source2', sourceName: true } });
|
127
|
+
session.addSubscription(source1, getSwitch());
|
128
|
+
session.addSubscription(source2, getSwitch());
|
129
|
+
const testConfig = { ...source1.config };
|
130
|
+
testConfig.id = 'renamed';
|
131
|
+
session.finishEditingNode("source1", { config: testConfig });
|
132
|
+
});
|
133
|
+
it("re-adds the source", () => {
|
134
|
+
(0, chai_1.expect)(getSwitch().config.sources).lengthOf(2);
|
135
|
+
(0, chai_1.expect)(getSwitch().config.sources[0].sourceName).equals('source2');
|
136
|
+
(0, chai_1.expect)(getSwitch().config.sources[1].sourceName).equals('renamed');
|
137
|
+
});
|
138
|
+
});
|
139
|
+
describe("Source is deleted", () => {
|
140
|
+
beforeEach(async () => {
|
141
|
+
const source1 = session.addNode(runtime_1.AudioInput.info.identifier);
|
142
|
+
session.finishEditingNode("", { config: { id: 'source1', sourceName: true } });
|
143
|
+
const source2 = session.addNode(runtime_1.AudioInput.info.identifier);
|
144
|
+
session.finishEditingNode("", { config: { id: 'source2', sourceName: true } });
|
145
|
+
const source3 = session.addNode(runtime_1.AudioInput.info.identifier);
|
146
|
+
session.finishEditingNode("", { config: { id: 'source3', sourceName: true } });
|
147
|
+
session.addSubscription(source1, getSwitch());
|
148
|
+
session.addSubscription(source2, getSwitch());
|
149
|
+
session.addSubscription(source3, getSwitch());
|
150
|
+
session.removeNode("source2");
|
151
|
+
});
|
152
|
+
it("Removes the source in place", () => {
|
153
|
+
(0, chai_1.expect)(getSwitch().config.sources).lengthOf(2);
|
154
|
+
(0, chai_1.expect)(getSwitch().config.sources[0].sourceName).equals('source1');
|
155
|
+
(0, chai_1.expect)(getSwitch().config.sources[1].sourceName).equals('source3');
|
156
|
+
});
|
157
|
+
});
|
158
|
+
});
|
159
|
+
describe("Runtime", () => {
|
160
|
+
async function testDocument(media, cb) {
|
161
|
+
const config = {
|
162
|
+
id: 'foo',
|
163
|
+
displayName: 'Foo',
|
164
|
+
resolution: { width: 640, height: 360 },
|
165
|
+
frameRate: { frames: 25, seconds: 1 },
|
166
|
+
sampleRate: 48000,
|
167
|
+
channelLayout: 'stereo',
|
168
|
+
sources: [
|
169
|
+
{ displayName: "Primary", sourceName: "primary", media },
|
170
|
+
{ displayName: "Backup", sourceName: "backup", media }
|
171
|
+
]
|
172
|
+
};
|
173
|
+
const runtime = await createRuntime();
|
174
|
+
const yaml = new builder_1.YamlBuilder();
|
175
|
+
const ss = new builder_1.YamlNodeBuilder('switch', SmartSingleMediaInfo, config);
|
176
|
+
yaml.addNode((new builder_1.YamlNodeBuilder('primary', runtime_1.AvInput.info, { sourceName: true })).reify());
|
177
|
+
yaml.addNode((new builder_1.YamlNodeBuilder('backup', runtime_1.AvInput.info, { sourceName: true })).reify());
|
178
|
+
ss.subscribe("primary", [media]);
|
179
|
+
ss.subscribe("backup", [media]);
|
180
|
+
cb?.(yaml, ss);
|
181
|
+
yaml.addNode(ss.reify());
|
182
|
+
const compiled = document.load(__filename, runtime, yaml_1.default.stringify(yaml.reify()));
|
183
|
+
return compiled;
|
184
|
+
}
|
185
|
+
let norsk = undefined;
|
186
|
+
let result = undefined;
|
187
|
+
afterEach(async () => {
|
188
|
+
await norsk?.close();
|
189
|
+
await new Promise((r) => {
|
190
|
+
setTimeout(() => {
|
191
|
+
r();
|
192
|
+
}, 10.0);
|
193
|
+
});
|
194
|
+
norsk = undefined;
|
195
|
+
result = undefined;
|
196
|
+
});
|
197
|
+
const latestState = () => {
|
198
|
+
return result?.runtimeState.getNodeState('switch');
|
199
|
+
};
|
200
|
+
sharedTests("audio");
|
201
|
+
sharedTests("video");
|
202
|
+
function sharedTests(media) {
|
203
|
+
describe("No active inputs", () => {
|
204
|
+
it(`Should output ${media} from the fallback source`, async () => {
|
205
|
+
const compiled = await testDocument(media);
|
206
|
+
norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
|
207
|
+
result = await (0, execution_1.default)(norsk, compiled);
|
208
|
+
const switcher = result.components['switch'];
|
209
|
+
const primary = result.components['primary'];
|
210
|
+
const backup = result.components['backup'];
|
211
|
+
await primary.close();
|
212
|
+
await backup.close();
|
213
|
+
await Promise.all([
|
214
|
+
media == "audio" ? (0, sinks_1.assertNodeOutputsAudioFrames)(norsk, result, 'switch')
|
215
|
+
: (0, sinks_1.assertNodeOutputsVideoFrames)(norsk, result, 'switch'),
|
216
|
+
(0, sinks_1.waitForAssert)(() => switcher.activeSource == 'fallback', () => (0, chai_1.expect)(switcher.activeSource).equals('fallback'), 10000.0, 10.0)
|
217
|
+
]);
|
218
|
+
});
|
219
|
+
});
|
220
|
+
describe("primary source is active only", () => {
|
221
|
+
it(`Should output ${media} from the primary source`, async () => {
|
222
|
+
const compiled = await testDocument(media);
|
223
|
+
norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
|
224
|
+
result = await (0, execution_1.default)(norsk, compiled);
|
225
|
+
const switcher = result.components['switch'];
|
226
|
+
const backup = result.components['backup'];
|
227
|
+
await backup.close();
|
228
|
+
console.log('here');
|
229
|
+
await Promise.all([
|
230
|
+
media == "audio" ? (0, sinks_1.assertNodeOutputsAudioFrames)(norsk, result, 'switch')
|
231
|
+
: (0, sinks_1.assertNodeOutputsVideoFrames)(norsk, result, 'switch'),
|
232
|
+
(0, sinks_1.waitForAssert)(() => switcher.activeSource == `${media}-primary`, () => (0, chai_1.expect)(switcher.activeSource).equals(`${media}-primary`), 10000.0, 10.0),
|
233
|
+
(0, sinks_1.waitForAssert)(() => (latestState())?.activeSource == 0, () => (0, chai_1.expect)(latestState()?.activeSource).equals(0), 10000.0, 10.0)
|
234
|
+
]);
|
235
|
+
});
|
236
|
+
});
|
237
|
+
describe("backup source is active only", () => {
|
238
|
+
it(`Should output ${media} from the backup source`, async () => {
|
239
|
+
norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
|
240
|
+
const compiled = await testDocument(media);
|
241
|
+
result = await (0, execution_1.default)(norsk, compiled);
|
242
|
+
const switcher = result.components['switch'];
|
243
|
+
const primary = result.components['primary'];
|
244
|
+
await primary.close();
|
245
|
+
await Promise.all([
|
246
|
+
media == "audio" ? (0, sinks_1.assertNodeOutputsAudioFrames)(norsk, result, 'switch')
|
247
|
+
: (0, sinks_1.assertNodeOutputsVideoFrames)(norsk, result, 'switch'),
|
248
|
+
(0, sinks_1.waitForAssert)(() => switcher.activeSource == `${media}-backup`, () => (0, chai_1.expect)(switcher.activeSource).equals(`${media}-backup`), 10000.0, 10.0),
|
249
|
+
(0, sinks_1.waitForAssert)(() => (latestState())?.activeSource == 1, () => (0, chai_1.expect)(latestState()?.activeSource).equals(1), 10000.0, 10.0)
|
250
|
+
]);
|
251
|
+
});
|
252
|
+
});
|
253
|
+
describe("primary and backup sources are active", () => {
|
254
|
+
it(`Should output ${media} from the primary source`, async () => {
|
255
|
+
norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
|
256
|
+
const compiled = await testDocument(media);
|
257
|
+
result = await (0, execution_1.default)(norsk, compiled);
|
258
|
+
const switcher = result.components['switch'];
|
259
|
+
await Promise.all([
|
260
|
+
media == "audio" ? (0, sinks_1.assertNodeOutputsAudioFrames)(norsk, result, 'switch')
|
261
|
+
: (0, sinks_1.assertNodeOutputsVideoFrames)(norsk, result, 'switch'),
|
262
|
+
(0, sinks_1.waitForAssert)(() => switcher.activeSource == `${media}-primary`, () => (0, chai_1.expect)(switcher.activeSource).equals(`${media}-primary`), 10000.0, 10.0),
|
263
|
+
(0, sinks_1.waitForAssert)(() => (latestState())?.activeSource == 0, () => (0, chai_1.expect)(latestState()?.activeSource).equals(0), 10000.0, 10.0)
|
264
|
+
]);
|
265
|
+
});
|
266
|
+
});
|
267
|
+
describe("Switch from backup to primary", () => {
|
268
|
+
it(`Should output ${media} from the primary source`, async () => {
|
269
|
+
norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
|
270
|
+
const compiled = await testDocument(media);
|
271
|
+
result = await (0, execution_1.default)(norsk, compiled);
|
272
|
+
const switcher = result.components['switch'];
|
273
|
+
const primary = result.components['primary'];
|
274
|
+
primary.pause();
|
275
|
+
await (0, sinks_1.waitForAssert)(() => switcher.activeSource == `${media}-backup`, () => (0, chai_1.expect)(switcher.activeSource).equals(`${media}-backup`), 10000.0, 10.0);
|
276
|
+
primary.start();
|
277
|
+
await Promise.all([
|
278
|
+
media == "audio" ? (0, sinks_1.assertNodeOutputsAudioFrames)(norsk, result, 'switch')
|
279
|
+
: (0, sinks_1.assertNodeOutputsVideoFrames)(norsk, result, 'switch'),
|
280
|
+
(0, sinks_1.waitForAssert)(() => switcher.activeSource == `${media}-primary`, () => (0, chai_1.expect)(switcher.activeSource).equals(`${media}-primary`), 10000.0, 10.0),
|
281
|
+
(0, sinks_1.waitForAssert)(() => (latestState())?.activeSource == 0, () => (0, chai_1.expect)(latestState()?.activeSource).equals(0), 10000.0, 10.0)
|
282
|
+
]);
|
283
|
+
});
|
284
|
+
});
|
285
|
+
}
|
286
|
+
});
|
287
|
+
});
|
288
|
+
//# sourceMappingURL=smart-single-media-switch.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"smart-single-media-switch.js","sourceRoot":"","sources":["../../src/test/smart-single-media-switch.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAA8C;AAC9C,6EAA8F;AAC9F,wFAA0E;AAC1E,gDAAwB;AACxB,+FAA+E;AAC/E,yEAA0I;AAE1I,oFAA8D;AAC9D,+BAA8B;AAC9B,6EAAqJ;AACrJ,0FAAkE;AAClE,sFAAiH;AACjH,2EAAoG;AACpG,2CAA6B;AAG7B,MAAM,oBAAoB,GAAG,IAAA,cAAM,EAAC,iCAAkB,CAAC,CAAC;AAExD,KAAK,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,MAAM,IAAA,qBAAW,GAAE,CAAC;IACpC,MAAM,IAAA,WAAW,EAAC,OAAO,CAAC,CAAC;IAC3B,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,MAAM,aAAa,EAAE,CAAC;IACtC,OAAO,IAAA,mCAAyB,EAAC,OAAO,CAAC,CAAC;AAC3C,CAAC;AAED,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACxC,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;QAC7C,MAAM,IAAI,GAAG,IAAI,qBAAW,EAAE,CAAC,KAAK,EAAE,CAAC;QACvC,IAAI,OAAO,GAAY,SAA+B,CAAC;QACvD,MAAM,aAAa,GAAiC;YACnD,EAAE,EAAE,QAAQ;YACZ,WAAW,EAAE,QAAQ;YACrB,UAAU,EAAE;gBACX,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,IAAI;aACZ;YACD,SAAS,EAAE;gBACV,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,CAAC;aACV;YACD,UAAU,EAAE,KAAK;YACjB,aAAa,EAAE,MAAM;YACrB,OAAO,EAAE,EAAE;SACX,CAAC;QAEF,SAAS,SAAS;YACjB,OAAO,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAA6D,CAAA;QACnH,CAAC;QAED,UAAU,CAAC,KAAK,IAAI,EAAE;YACrB,MAAM,OAAO,GAAG,MAAM,aAAa,EAAE,CAAC;YACtC,OAAO,GAAG,IAAI,iBAAO,CAAC,OAAO,EAAE,IAAI,8BAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAoB,CAAC,CAAC;YAE7F,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;YACjD,OAAO,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAA;QAKF,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACxC,UAAU,CAAC,KAAK,IAAI,EAAE;gBACrB,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC3D,OAAO,EAAE,iBAAiB,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;gBAChF,OAAO,EAAE,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;gBACxC,IAAA,aAAM,EAAC,SAAS,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC/C,IAAA,aAAM,EAAC,SAAS,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACpE,CAAC,CAAC,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;YACnC,UAAU,CAAC,KAAK,IAAI,EAAE;gBACrB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC5D,OAAO,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC/E,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC5D,OAAO,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC/E,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC9C,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;gBAClD,IAAA,aAAM,EAAC,SAAS,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC/C,IAAA,aAAM,EAAC,SAAS,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACnE,IAAA,aAAM,EAAC,SAAS,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACpE,CAAC,CAAC,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;YAClC,UAAU,CAAC,KAAK,IAAI,EAAE;gBACrB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC5D,OAAO,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC/E,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC5D,OAAO,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC/E,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC9C,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC9C,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;gBACzC,IAAA,aAAM,EAAC,SAAS,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC/C,IAAA,aAAM,EAAC,SAAS,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACpE,CAAC,CAAC,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;YAClC,UAAU,CAAC,KAAK,IAAI,EAAE;gBACrB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC5D,OAAO,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC/E,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC5D,OAAO,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC/E,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC9C,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;gBAE9C,MAAM,UAAU,GAAG,EAAE,GAAG,OAAO,CAAC,MAAoB,EAAE,CAAC;gBACvD,UAAU,CAAC,EAAE,GAAG,SAAS,CAAC;gBAC1B,OAAO,CAAC,iBAAiB,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAA;YAC7D,CAAC,CAAC,CAAC;YAIH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;gBAC7B,IAAA,aAAM,EAAC,SAAS,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC/C,IAAA,aAAM,EAAC,SAAS,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACnE,IAAA,aAAM,EAAC,SAAS,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACpE,CAAC,CAAC,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;YAClC,UAAU,CAAC,KAAK,IAAI,EAAE;gBACrB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC5D,OAAO,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC/E,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC5D,OAAO,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC/E,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC5D,OAAO,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC/E,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC9C,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC9C,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC9C,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;gBACtC,IAAA,aAAM,EAAC,SAAS,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC/C,IAAA,aAAM,EAAC,SAAS,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACnE,IAAA,aAAM,EAAC,SAAS,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACpE,CAAC,CAAC,CAAA;QACH,CAAC,CAAC,CAAA;IAEH,CAAC,CAAC,CAAA;IAGF,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACxB,KAAK,UAAU,YAAY,CAAC,KAAwB,EAAE,EAA4K;YACjO,MAAM,MAAM,GAAG;gBACd,EAAE,EAAE,KAAK;gBACT,WAAW,EAAE,KAAK;gBAClB,UAAU,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;gBACvC,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;gBACrC,UAAU,EAAE,KAAK;gBACjB,aAAa,EAAE,QAAQ;gBACvB,OAAO,EAAE;oBACR,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE;oBACxD,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE;iBAC1B;aACpB,CAAC;YAEX,MAAM,OAAO,GAAG,MAAM,aAAa,EAAE,CAAC;YAEtC,MAAM,IAAI,GAAG,IAAI,qBAAW,EAAE,CAAC;YAC/B,MAAM,EAAE,GAAG,IAAI,yBAAe,CAC5B,QAAQ,EACR,oBAAoB,EACpB,MAAM,CACN,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,yBAAe,CAAC,SAAS,EAAE,iBAAO,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YAC3F,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,yBAAe,CAAC,QAAQ,EAAE,iBAAO,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YAC1F,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;YAChC,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;YAC/B,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;YACzB,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,cAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAClF,OAAO,QAAQ,CAAC;QACjB,CAAC;QAED,IAAI,KAAK,GAAsB,SAAS,CAAC;QACzC,IAAI,MAAM,GAA0B,SAAS,CAAC;QAE9C,SAAS,CAAC,KAAK,IAAI,EAAE;YACpB,MAAM,KAAK,EAAE,KAAK,EAAE,CAAC;YACrB,MAAM,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,EAAE;gBAC7B,UAAU,CAAC,GAAG,EAAE;oBACf,CAAC,EAAE,CAAC;gBACL,CAAC,EAAE,IAAI,CAAC,CAAA;YACT,CAAC,CAAC,CAAA;YACF,KAAK,GAAG,SAAS,CAAC;YAClB,MAAM,GAAG,SAAS,CAAC;QACpB,CAAC,CAAC,CAAA;QAEF,MAAM,WAAW,GAAG,GAAG,EAAE;YACxB,OAAO,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,QAAQ,CAA8C,CAAA;QAChG,CAAC,CAAA;QAED,WAAW,CAAC,OAAO,CAAC,CAAC;QACrB,WAAW,CAAC,OAAO,CAAC,CAAC;QAErB,SAAS,WAAW,CAAC,KAAwB;YAC5C,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;gBAEjC,EAAE,CAAC,iBAAiB,KAAK,2BAA2B,EAAE,KAAK,IAAI,EAAE;oBAChE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;oBAC3C,KAAK,GAAG,MAAM,iBAAK,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;oBACvD,MAAM,GAAG,MAAM,IAAA,mBAAE,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;oBACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAA2B,CAAC;oBACvE,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAc,CAAC;oBAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAc,CAAC;oBACxD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;oBACtB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;oBACrB,MAAM,OAAO,CAAC,GAAG,CAAC;wBACjB,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,IAAA,oCAA4B,EAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC;4BACvE,CAAC,CAAC,IAAA,oCAA4B,EAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC;wBACxD,IAAA,qBAAa,EACZ,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,IAAI,UAAU,EACzC,GAAG,EAAE,CAAC,IAAA,aAAM,EAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,EACtD,OAAO,EACP,IAAI,CACJ;qBACD,CAAC,CAAC;gBACJ,CAAC,CAAC,CAAA;YACH,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;gBAC9C,EAAE,CAAC,iBAAiB,KAAK,0BAA0B,EAAE,KAAK,IAAI,EAAE;oBAC/D,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;oBAC3C,KAAK,GAAG,MAAM,iBAAK,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;oBAEvD,MAAM,GAAG,MAAM,IAAA,mBAAE,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;oBACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAA2B,CAAC;oBACvE,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAc,CAAC;oBACxD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;oBACrB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACpB,MAAM,OAAO,CAAC,GAAG,CAAC;wBACjB,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,IAAA,oCAA4B,EAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC;4BACvE,CAAC,CAAC,IAAA,oCAA4B,EAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC;wBACxD,IAAA,qBAAa,EACZ,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,IAAI,GAAG,KAAK,UAAU,EACjD,GAAG,EAAE,CAAC,IAAA,aAAM,EAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,GAAG,KAAK,UAAU,CAAC,EAC9D,OAAO,EACP,IAAI,CACJ;wBACD,IAAA,qBAAa,EACZ,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,YAAY,IAAI,CAAC,EACxC,GAAG,EAAE,CAAC,IAAA,aAAM,EAAC,WAAW,EAAE,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EACnD,OAAO,EACP,IAAI,CACJ;qBACD,CAAC,CAAC;gBACJ,CAAC,CAAC,CAAA;YACH,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;gBAC7C,EAAE,CAAC,iBAAiB,KAAK,yBAAyB,EAAE,KAAK,IAAI,EAAE;oBAC9D,KAAK,GAAG,MAAM,iBAAK,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;oBACvD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;oBAC3C,MAAM,GAAG,MAAM,IAAA,mBAAE,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;oBACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAA2B,CAAC;oBACvE,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAc,CAAC;oBAC1D,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;oBACtB,MAAM,OAAO,CAAC,GAAG,CAAC;wBACjB,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,IAAA,oCAA4B,EAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC;4BACvE,CAAC,CAAC,IAAA,oCAA4B,EAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC;wBACxD,IAAA,qBAAa,EACZ,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,IAAI,GAAG,KAAK,SAAS,EAChD,GAAG,EAAE,CAAC,IAAA,aAAM,EAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,GAAG,KAAK,SAAS,CAAC,EAC7D,OAAO,EACP,IAAI,CACJ;wBACD,IAAA,qBAAa,EACZ,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,YAAY,IAAI,CAAC,EACxC,GAAG,EAAE,CAAC,IAAA,aAAM,EAAC,WAAW,EAAE,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EACnD,OAAO,EACP,IAAI,CACJ;qBACD,CAAC,CAAC;gBACJ,CAAC,CAAC,CAAA;YACH,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;gBACtD,EAAE,CAAC,iBAAiB,KAAK,0BAA0B,EAAE,KAAK,IAAI,EAAE;oBAC/D,KAAK,GAAG,MAAM,iBAAK,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;oBACvD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;oBAC3C,MAAM,GAAG,MAAM,IAAA,mBAAE,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;oBACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAA2B,CAAC;oBACvE,MAAM,OAAO,CAAC,GAAG,CAAC;wBACjB,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,IAAA,oCAA4B,EAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC;4BACvE,CAAC,CAAC,IAAA,oCAA4B,EAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC;wBACxD,IAAA,qBAAa,EACZ,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,IAAI,GAAG,KAAK,UAAU,EACjD,GAAG,EAAE,CAAC,IAAA,aAAM,EAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,GAAG,KAAK,UAAU,CAAC,EAC9D,OAAO,EACP,IAAI,CACJ;wBACD,IAAA,qBAAa,EACZ,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,YAAY,IAAI,CAAC,EACxC,GAAG,EAAE,CAAC,IAAA,aAAM,EAAC,WAAW,EAAE,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EACnD,OAAO,EACP,IAAI,CACJ;qBACD,CAAC,CAAC;gBACJ,CAAC,CAAC,CAAA;YACH,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;gBAC9C,EAAE,CAAC,iBAAiB,KAAK,0BAA0B,EAAE,KAAK,IAAI,EAAE;oBAC/D,KAAK,GAAG,MAAM,iBAAK,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;oBACvD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;oBAC3C,MAAM,GAAG,MAAM,IAAA,mBAAE,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;oBACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAA2B,CAAC;oBACvE,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAc,CAAC;oBAE1D,OAAO,CAAC,KAAK,EAAE,CAAC;oBAEhB,MAAM,IAAA,qBAAa,EAClB,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,IAAI,GAAG,KAAK,SAAS,EAChD,GAAG,EAAE,CAAC,IAAA,aAAM,EAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,GAAG,KAAK,SAAS,CAAC,EAC7D,OAAO,EACP,IAAI,CACJ,CAAA;oBAED,OAAO,CAAC,KAAK,EAAE,CAAC;oBAEhB,MAAM,OAAO,CAAC,GAAG,CAAC;wBACjB,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,IAAA,oCAA4B,EAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC;4BACvE,CAAC,CAAC,IAAA,oCAA4B,EAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC;wBACxD,IAAA,qBAAa,EACZ,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,IAAI,GAAG,KAAK,UAAU,EACjD,GAAG,EAAE,CAAC,IAAA,aAAM,EAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,GAAG,KAAK,UAAU,CAAC,EAC9D,OAAO,EACP,IAAI,CACJ;wBACD,IAAA,qBAAa,EACZ,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,YAAY,IAAI,CAAC,EACxC,GAAG,EAAE,CAAC,IAAA,aAAM,EAAC,WAAW,EAAE,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EACnD,OAAO,EACP,IAAI,CACJ;qBACD,CAAC,CAAC;gBACJ,CAAC,CAAC,CAAA;YACH,CAAC,CAAC,CAAC;QACJ,CAAC;IACF,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -30,17 +30,16 @@ const norsk_sdk_1 = require("@norskvideo/norsk-sdk");
|
|
30
30
|
const builder_1 = require("@norskvideo/norsk-studio/lib/test/_util/builder");
|
31
31
|
const document = __importStar(require("@norskvideo/norsk-studio/lib/runtime/document"));
|
32
32
|
const yaml_1 = __importDefault(require("yaml"));
|
33
|
-
const execution_1 =
|
33
|
+
const execution_1 = __importDefault(require("@norskvideo/norsk-studio/lib/runtime/execution"));
|
34
34
|
const sinks_1 = require("@norskvideo/norsk-studio/lib/test/_util/sinks");
|
35
|
-
const info_1 = __importDefault(require("../processor.
|
35
|
+
const info_1 = __importDefault(require("../processor.smartSourceSwitch/info"));
|
36
36
|
const chai_1 = require("chai");
|
37
|
-
const sources_1 = require("@norskvideo/norsk-studio/lib/test/_util/sources");
|
38
37
|
const runtime_1 = require("@norskvideo/norsk-studio/lib/test/_util/runtime");
|
39
38
|
const session_1 = __importDefault(require("@norskvideo/norsk-studio/lib/client/session"));
|
40
39
|
const client_types_1 = require("@norskvideo/norsk-studio/lib/extension/client-types");
|
41
40
|
const document_1 = require("@norskvideo/norsk-studio/lib/shared/document");
|
42
41
|
const __1 = __importDefault(require(".."));
|
43
|
-
const
|
42
|
+
const SmartSourceInfo = (0, info_1.default)(client_types_1.RegistrationConsts);
|
44
43
|
async function createRuntime() {
|
45
44
|
const runtime = await (0, runtime_1.testRuntime)();
|
46
45
|
await (0, __1.default)(runtime);
|
@@ -50,7 +49,7 @@ async function createLibrary() {
|
|
50
49
|
const runtime = await createRuntime();
|
51
50
|
return (0, runtime_1.extractLibraryFromRuntime)(runtime);
|
52
51
|
}
|
53
|
-
describe("
|
52
|
+
describe("SmartSource Switch", () => {
|
54
53
|
describe("Design time", () => {
|
55
54
|
const yaml = new builder_1.YamlBuilder().reify();
|
56
55
|
let session = undefined;
|
@@ -75,13 +74,13 @@ describe("Cascading Switch", () => {
|
|
75
74
|
beforeEach(async () => {
|
76
75
|
const library = await createLibrary();
|
77
76
|
session = new session_1.default(library, new document_1.DocumentDescription(library, yaml), {});
|
78
|
-
session.addNode(
|
77
|
+
session.addNode(SmartSourceInfo.identifier);
|
79
78
|
session.finishEditingNode("", { config: initialConfig });
|
80
79
|
});
|
81
80
|
describe("Adding the first source", () => {
|
82
81
|
beforeEach(async () => {
|
83
82
|
const source = session.addNode(runtime_1.AvInput.info.identifier);
|
84
|
-
session?.finishEditingNode("", { config: { id: 'source1' } });
|
83
|
+
session?.finishEditingNode("", { config: { id: 'source1', sourceName: true } });
|
85
84
|
session?.addSubscription(source, getSwitch());
|
86
85
|
});
|
87
86
|
it("Adds the source to the config", () => {
|
@@ -92,9 +91,9 @@ describe("Cascading Switch", () => {
|
|
92
91
|
describe("Adding two sources", () => {
|
93
92
|
beforeEach(async () => {
|
94
93
|
const source1 = session.addNode(runtime_1.AvInput.info.identifier);
|
95
|
-
session.finishEditingNode("", { config: { id: 'source1' } });
|
94
|
+
session.finishEditingNode("", { config: { id: 'source1', sourceName: true } });
|
96
95
|
const source2 = session.addNode(runtime_1.AvInput.info.identifier);
|
97
|
-
session.finishEditingNode("", { config: { id: 'source2' } });
|
96
|
+
session.finishEditingNode("", { config: { id: 'source2', sourceName: true } });
|
98
97
|
session.addSubscription(source1, getSwitch());
|
99
98
|
session.addSubscription(source2, getSwitch());
|
100
99
|
});
|
@@ -107,9 +106,9 @@ describe("Cascading Switch", () => {
|
|
107
106
|
describe("Removing a source", () => {
|
108
107
|
beforeEach(async () => {
|
109
108
|
const source1 = session.addNode(runtime_1.AvInput.info.identifier);
|
110
|
-
session.finishEditingNode("", { config: { id: 'source1' } });
|
109
|
+
session.finishEditingNode("", { config: { id: 'source1', sourceName: true } });
|
111
110
|
const source2 = session.addNode(runtime_1.AvInput.info.identifier);
|
112
|
-
session.finishEditingNode("", { config: { id: 'source2' } });
|
111
|
+
session.finishEditingNode("", { config: { id: 'source2', sourceName: true } });
|
113
112
|
session.addSubscription(source1, getSwitch());
|
114
113
|
session.addSubscription(source2, getSwitch());
|
115
114
|
session.removeSubscription(source1.id, getSwitch().id);
|
@@ -122,29 +121,29 @@ describe("Cascading Switch", () => {
|
|
122
121
|
describe("Source is renamed", () => {
|
123
122
|
beforeEach(async () => {
|
124
123
|
const source1 = session.addNode(runtime_1.AvInput.info.identifier);
|
125
|
-
session.finishEditingNode("", { config: { id: 'source1' } });
|
124
|
+
session.finishEditingNode("", { config: { id: 'source1', sourceName: true } });
|
126
125
|
const source2 = session.addNode(runtime_1.AvInput.info.identifier);
|
127
|
-
session.finishEditingNode("", { config: { id: 'source2' } });
|
126
|
+
session.finishEditingNode("", { config: { id: 'source2', sourceName: true } });
|
128
127
|
session.addSubscription(source1, getSwitch());
|
129
128
|
session.addSubscription(source2, getSwitch());
|
130
129
|
const testConfig = { ...source1.config };
|
131
130
|
testConfig.id = 'renamed';
|
132
131
|
session.finishEditingNode("source1", { config: testConfig });
|
133
132
|
});
|
134
|
-
it("
|
133
|
+
it("re-adds the source", () => {
|
135
134
|
(0, chai_1.expect)(getSwitch().config.sources).lengthOf(2);
|
136
|
-
(0, chai_1.expect)(getSwitch().config.sources[0]).equals('
|
137
|
-
(0, chai_1.expect)(getSwitch().config.sources[1]).equals('
|
135
|
+
(0, chai_1.expect)(getSwitch().config.sources[0]).equals('source2');
|
136
|
+
(0, chai_1.expect)(getSwitch().config.sources[1]).equals('renamed');
|
138
137
|
});
|
139
138
|
});
|
140
139
|
describe("Source is deleted", () => {
|
141
140
|
beforeEach(async () => {
|
142
141
|
const source1 = session.addNode(runtime_1.AvInput.info.identifier);
|
143
|
-
session.finishEditingNode("", { config: { id: 'source1' } });
|
142
|
+
session.finishEditingNode("", { config: { id: 'source1', sourceName: true } });
|
144
143
|
const source2 = session.addNode(runtime_1.AvInput.info.identifier);
|
145
|
-
session.finishEditingNode("", { config: { id: 'source2' } });
|
144
|
+
session.finishEditingNode("", { config: { id: 'source2', sourceName: true } });
|
146
145
|
const source3 = session.addNode(runtime_1.AvInput.info.identifier);
|
147
|
-
session.finishEditingNode("", { config: { id: 'source3' } });
|
146
|
+
session.finishEditingNode("", { config: { id: 'source3', sourceName: true } });
|
148
147
|
session.addSubscription(source1, getSwitch());
|
149
148
|
session.addSubscription(source2, getSwitch());
|
150
149
|
session.addSubscription(source3, getSwitch());
|
@@ -170,12 +169,17 @@ describe("Cascading Switch", () => {
|
|
170
169
|
]
|
171
170
|
};
|
172
171
|
describe("Runtime", () => {
|
173
|
-
async function testDocument() {
|
172
|
+
async function testDocument(cb) {
|
174
173
|
const runtime = await createRuntime();
|
175
|
-
const yaml = new builder_1.YamlBuilder()
|
176
|
-
|
177
|
-
|
178
|
-
|
174
|
+
const yaml = new builder_1.YamlBuilder();
|
175
|
+
const ss = new builder_1.YamlNodeBuilder('switch', SmartSourceInfo, config);
|
176
|
+
yaml.addNode((new builder_1.YamlNodeBuilder('primary', runtime_1.AvInput.info, { sourceName: true })).reify());
|
177
|
+
yaml.addNode((new builder_1.YamlNodeBuilder('backup', runtime_1.AvInput.info, { sourceName: true })).reify());
|
178
|
+
ss.subscribe("primary", ["video", "audio"]);
|
179
|
+
ss.subscribe("backup", ["video", "audio"]);
|
180
|
+
cb?.(yaml, ss);
|
181
|
+
yaml.addNode(ss.reify());
|
182
|
+
const compiled = document.load(__filename, runtime, yaml_1.default.stringify(yaml.reify()));
|
179
183
|
return compiled;
|
180
184
|
}
|
181
185
|
let norsk = undefined;
|
@@ -193,12 +197,16 @@ describe("Cascading Switch", () => {
|
|
193
197
|
const latestState = () => {
|
194
198
|
return result?.runtimeState.getNodeState('switch');
|
195
199
|
};
|
196
|
-
describe("No inputs", () => {
|
200
|
+
describe("No active inputs", () => {
|
197
201
|
it("Should output A/V from the fallback source", async () => {
|
198
202
|
const compiled = await testDocument();
|
199
203
|
norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
|
200
204
|
result = await (0, execution_1.default)(norsk, compiled);
|
201
205
|
const switcher = result.components['switch'];
|
206
|
+
const primary = result.components['primary'];
|
207
|
+
const backup = result.components['backup'];
|
208
|
+
await primary.close();
|
209
|
+
await backup.close();
|
202
210
|
await Promise.all([
|
203
211
|
(0, sinks_1.assertNodeOutputsAudioFrames)(norsk, result, 'switch'),
|
204
212
|
(0, sinks_1.assertNodeOutputsVideoFrames)(norsk, result, 'switch'),
|
@@ -210,11 +218,10 @@ describe("Cascading Switch", () => {
|
|
210
218
|
it("Should output A/V from the primary source", async () => {
|
211
219
|
const compiled = await testDocument();
|
212
220
|
norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
|
213
|
-
const source = await (0, sources_1.videoAndAudio)(norsk, "primary");
|
214
221
|
result = await (0, execution_1.default)(norsk, compiled);
|
215
222
|
const switcher = result.components['switch'];
|
216
|
-
const
|
217
|
-
|
223
|
+
const backup = result.components['backup'];
|
224
|
+
await backup.close();
|
218
225
|
await Promise.all([
|
219
226
|
(0, sinks_1.assertNodeOutputsAudioFrames)(norsk, result, 'switch'),
|
220
227
|
(0, sinks_1.assertNodeOutputsVideoFrames)(norsk, result, 'switch'),
|
@@ -227,11 +234,10 @@ describe("Cascading Switch", () => {
|
|
227
234
|
it("Should output A/V from the backup source", async () => {
|
228
235
|
norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
|
229
236
|
const compiled = await testDocument();
|
230
|
-
const source = await (0, sources_1.videoAndAudio)(norsk, "backup");
|
231
237
|
result = await (0, execution_1.default)(norsk, compiled);
|
232
238
|
const switcher = result.components['switch'];
|
233
|
-
const
|
234
|
-
|
239
|
+
const primary = result.components['primary'];
|
240
|
+
await primary.close();
|
235
241
|
await Promise.all([
|
236
242
|
(0, sinks_1.assertNodeOutputsAudioFrames)(norsk, result, 'switch'),
|
237
243
|
(0, sinks_1.assertNodeOutputsVideoFrames)(norsk, result, 'switch'),
|
@@ -244,15 +250,8 @@ describe("Cascading Switch", () => {
|
|
244
250
|
it("Should output A/V from the primary source", async () => {
|
245
251
|
norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
|
246
252
|
const compiled = await testDocument();
|
247
|
-
const primary = await (0, sources_1.videoAndAudio)(norsk, "primary");
|
248
|
-
const backup = await (0, sources_1.videoAndAudio)(norsk, "backup");
|
249
253
|
result = await (0, execution_1.default)(norsk, compiled);
|
250
254
|
const switcher = result.components['switch'];
|
251
|
-
const sub = new execution_1.ComponentSubscriptions(norsk, switcher);
|
252
|
-
sub.setSources([
|
253
|
-
new execution_1.StudioNodeSubscriptionSource(backup, (0, sources_1.testSourceDescription)(), { type: "take-all-streams", filter: [{ media: "audio" }, { media: 'video' }] }),
|
254
|
-
new execution_1.StudioNodeSubscriptionSource(primary, (0, sources_1.testSourceDescription)(), { type: "take-all-streams", filter: [{ media: "audio" }, { media: 'video' }] }),
|
255
|
-
]);
|
256
255
|
await Promise.all([
|
257
256
|
(0, sinks_1.assertNodeOutputsAudioFrames)(norsk, result, 'switch'),
|
258
257
|
(0, sinks_1.assertNodeOutputsVideoFrames)(norsk, result, 'switch'),
|
@@ -264,19 +263,12 @@ describe("Cascading Switch", () => {
|
|
264
263
|
it("Should output A/V from the primary source", async () => {
|
265
264
|
norsk = await norsk_sdk_1.Norsk.connect({ onShutdown: () => { } });
|
266
265
|
const compiled = await testDocument();
|
267
|
-
const primary = await (0, sources_1.videoAndAudio)(norsk, "primary");
|
268
|
-
const backup = await (0, sources_1.videoAndAudio)(norsk, "backup");
|
269
266
|
result = await (0, execution_1.default)(norsk, compiled);
|
270
267
|
const switcher = result.components['switch'];
|
271
|
-
const
|
272
|
-
|
273
|
-
new execution_1.StudioNodeSubscriptionSource(backup, (0, sources_1.testSourceDescription)(), { type: "take-all-streams", filter: [{ media: "audio" }, { media: 'video' }] }),
|
274
|
-
]);
|
268
|
+
const primary = result.components['primary'];
|
269
|
+
primary.pause();
|
275
270
|
await (0, sinks_1.waitForAssert)(() => switcher.activeSource == 'backup', () => (0, chai_1.expect)(switcher.activeSource).equals('backup'), 10000.0, 10.0);
|
276
|
-
|
277
|
-
new execution_1.StudioNodeSubscriptionSource(backup, (0, sources_1.testSourceDescription)(), { type: "take-all-streams", filter: [{ media: "audio" }, { media: 'video' }] }),
|
278
|
-
new execution_1.StudioNodeSubscriptionSource(primary, (0, sources_1.testSourceDescription)(), { type: "take-all-streams", filter: [{ media: "audio" }, { media: 'video' }] }),
|
279
|
-
]);
|
271
|
+
primary.start();
|
280
272
|
await Promise.all([
|
281
273
|
(0, sinks_1.assertNodeOutputsAudioFrames)(norsk, result, 'switch'),
|
282
274
|
(0, sinks_1.assertNodeOutputsVideoFrames)(norsk, result, 'switch'),
|
@@ -286,4 +278,4 @@ describe("Cascading Switch", () => {
|
|
286
278
|
});
|
287
279
|
});
|
288
280
|
});
|
289
|
-
//# sourceMappingURL=
|
281
|
+
//# sourceMappingURL=smart-source-switch.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"smart-source-switch.js","sourceRoot":"","sources":["../../src/test/smart-source-switch.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@norskvideo/norsk-studio-built-ins",
|
3
|
-
"version": "1.27.0-2025-05-
|
3
|
+
"version": "1.27.0-2025-05-14-7d3dbd14",
|
4
4
|
"description": "",
|
5
5
|
"scripts": {
|
6
6
|
"clean": "rm -rf lib client build",
|
@@ -22,8 +22,8 @@
|
|
22
22
|
"license": "MIT",
|
23
23
|
"dependencies": {
|
24
24
|
"@apidevtools/json-schema-ref-parser": "^12.0.1",
|
25
|
-
"@norskvideo/norsk-sdk": "^1.0.402-2025-05-
|
26
|
-
"@norskvideo/norsk-studio": "1.27.0-2025-05-
|
25
|
+
"@norskvideo/norsk-sdk": "^1.0.402-2025-05-14-5b471ee6",
|
26
|
+
"@norskvideo/norsk-studio": "1.27.0-2025-05-14-7d3dbd14",
|
27
27
|
"@norskvideo/webrtc-client": "^0.1.2",
|
28
28
|
"@react-icons/all-files": "^4.1.0",
|
29
29
|
"body-parser": "^1.20.2",
|
@@ -1,3 +0,0 @@
|
|
1
|
-
import type Registration from "@norskvideo/norsk-studio/lib/extension/registration";
|
2
|
-
import type { CascadingSwitchConfig, CascadingSwitchEvent, CascadingSwitchState } from "./runtime";
|
3
|
-
export default function ({ defineComponent, Av, common: { Resolutions, FrameRates }, }: Registration): import("@norskvideo/norsk-studio/lib/extension/client-types").NodeInfo<CascadingSwitchConfig, CascadingSwitchState, object, CascadingSwitchEvent>;
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/processor.cascadingSwitch/info.ts"],"names":[],"mappings":"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"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"inline-view.js","sourceRoot":"","sources":["../../src/processor.cascadingSwitch/inline-view.tsx"],"names":[],"mappings":";;;AAEA,MAAM,aAAa,GAAG,2CAA2C,CAAC;AAClE,MAAM,gBAAgB,GAAG,8CAA8C,CAAC;AACxE,MAAM,eAAe,GAAG,+CAA+C,CAAC;AAOxE,SAAS,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAkE;IACnG,OAAO,6DACL,qDAAgB,EAChB,2CACG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC3B,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;wBACvB,gCAAY,SAAS,EAAE,aAAa,aAAG,CAAC,aAA/B,CAAC,CAA2C;wBACrD,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;4BAClC,CAAC,CAAC,gCAAY,SAAS,EAAE,gBAAgB,aAAG,CAAC,qBAAlC,CAAC,CAAmD;4BAC/D,CAAC,CAAC,gCAAY,SAAS,EAAE,eAAe,aAAG,CAAC,oBAAjC,CAAC,CAAiD,CAClE,EACD,+BAAmB,SAAS,EAAE,KAAK,CAAC,YAAY,IAAI,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,0BAAzF,UAAU,CAA8F,IAC7G,IACJ,CAAA;AACL,CAAC;AAED,kBAAe,UAAU,CAAC"}
|