@legendapp/state 0.9.2-alpha.9 → 0.10.0-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.cjs +634 -0
- package/index.cjs.map +1 -0
- package/index.d.ts +10 -6
- package/index.esm.mjs +613 -0
- package/index.esm.mjs.map +1 -0
- package/index.js +633 -42
- package/index.js.map +1 -1
- package/internal.cjs +26 -0
- package/internal.cjs.map +1 -0
- package/internal.d.ts +2 -3
- package/internal.esm.mjs +3 -0
- package/internal.esm.mjs.map +1 -0
- package/internal.js +26 -12
- package/internal.js.map +1 -1
- package/{src/persist/local-storage.js → local-storage.cjs} +6 -4
- package/local-storage.cjs.map +1 -0
- package/local-storage.esm.mjs +36 -0
- package/local-storage.esm.mjs.map +1 -0
- package/local-storage.js +39 -17
- package/local-storage.js.map +1 -1
- package/{src/persist/mmkv.js → mmkv.cjs} +9 -6
- package/mmkv.cjs.map +1 -0
- package/mmkv.esm.mjs +50 -0
- package/mmkv.esm.mjs.map +1 -0
- package/mmkv.js +53 -17
- package/mmkv.js.map +1 -1
- package/package.json +34 -10
- package/persist.cjs +195 -0
- package/persist.cjs.map +1 -0
- package/persist.d.ts +6 -0
- package/persist.esm.mjs +188 -0
- package/persist.esm.mjs.map +1 -0
- package/persist.js +195 -0
- package/persist.js.map +1 -0
- package/react.cjs +124 -0
- package/react.cjs.map +1 -0
- package/react.d.ts +1 -3
- package/react.esm.mjs +119 -0
- package/react.esm.mjs.map +1 -0
- package/react.js +123 -20
- package/react.js.map +1 -1
- package/src/globals.d.ts +12 -7
- package/src/helpers.d.ts +5 -0
- package/src/is.d.ts +7 -0
- package/src/observable.d.ts +6 -8
- package/src/observableBatcher.d.ts +11 -2
- package/src/observableComputed.d.ts +2 -2
- package/src/observableInterfaces.d.ts +156 -49
- package/src/on.d.ts +7 -0
- package/src/{configureObservable.d.ts → persist/configureObservablePersistence.d.ts} +2 -3
- package/src/persist/persistHelpers.d.ts +3 -0
- package/src/persist/persistObservable.d.ts +3 -0
- package/src/react/useNewObservable.d.ts +2 -3
- package/src/react/useObservables.d.ts +2 -2
- package/src/state.d.ts +13 -0
- package/src/configureObservable.js +0 -13
- package/src/configureObservable.js.map +0 -1
- package/src/globals.js +0 -71
- package/src/globals.js.map +0 -1
- package/src/observable.js +0 -347
- package/src/observable.js.map +0 -1
- package/src/observableBatcher.js +0 -61
- package/src/observableBatcher.js.map +0 -1
- package/src/observableComputed.js +0 -28
- package/src/observableComputed.js.map +0 -1
- package/src/observableEvent.js +0 -28
- package/src/observableEvent.js.map +0 -1
- package/src/observableFns.d.ts +0 -36
- package/src/observableFns.js +0 -231
- package/src/observableFns.js.map +0 -1
- package/src/observableInterfaces.js +0 -3
- package/src/observableInterfaces.js.map +0 -1
- package/src/observableState.d.ts +0 -29
- package/src/observableState.js +0 -32
- package/src/observableState.js.map +0 -1
- package/src/persist/local-storage.js.map +0 -1
- package/src/persist/mmkv.js.map +0 -1
- package/src/persistObservable.d.ts +0 -3
- package/src/persistObservable.js +0 -120
- package/src/persistObservable.js.map +0 -1
- package/src/primitivePrototypes.d.ts +0 -1
- package/src/primitivePrototypes.js +0 -22
- package/src/primitivePrototypes.js.map +0 -1
- package/src/react/useComputed.d.ts +0 -2
- package/src/react/useComputed.js +0 -16
- package/src/react/useComputed.js.map +0 -1
- package/src/react/useNewObservable.js +0 -33
- package/src/react/useNewObservable.js.map +0 -1
- package/src/react/useObservables.js +0 -114
- package/src/react/useObservables.js.map +0 -1
- package/src/react/usePrimitiveFunctions.d.ts +0 -4
- package/src/react/usePrimitiveFunctions.js +0 -21
- package/src/react/usePrimitiveFunctions.js.map +0 -1
package/index.cjs
ADDED
|
@@ -0,0 +1,634 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
const tracking = {
|
|
6
|
+
is: false,
|
|
7
|
+
shallow: false,
|
|
8
|
+
should: undefined,
|
|
9
|
+
};
|
|
10
|
+
const trackedNodes = [];
|
|
11
|
+
function updateTracking(node, value) {
|
|
12
|
+
trackedNodes.push({
|
|
13
|
+
node,
|
|
14
|
+
shallow: tracking.shallow,
|
|
15
|
+
shouldRender: tracking.should,
|
|
16
|
+
value,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function isArray(obj) {
|
|
21
|
+
return Array.isArray(obj);
|
|
22
|
+
}
|
|
23
|
+
function isObject(obj) {
|
|
24
|
+
return typeof obj === 'object' && obj !== null && !isArray(obj);
|
|
25
|
+
}
|
|
26
|
+
function isFunction(obj) {
|
|
27
|
+
return typeof obj === 'function';
|
|
28
|
+
}
|
|
29
|
+
function isPrimitive(arg) {
|
|
30
|
+
var type = typeof arg;
|
|
31
|
+
return arg == null || (type != 'object' && type != 'function');
|
|
32
|
+
}
|
|
33
|
+
function isObjectEmpty(obj) {
|
|
34
|
+
return obj && isObject(obj) && Object.keys(obj).length === 0;
|
|
35
|
+
}
|
|
36
|
+
function isSymbol(obj) {
|
|
37
|
+
return typeof obj === 'symbol';
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const delim = '\uFEFF';
|
|
41
|
+
const symbolDateModified = Symbol(process.env.NODE_ENV === 'development' && 'dateModified');
|
|
42
|
+
const symbolShallow = Symbol(process.env.NODE_ENV === 'development' && 'shallow');
|
|
43
|
+
const symbolShouldRender = Symbol(process.env.NODE_ENV === 'development' && 'shouldRender');
|
|
44
|
+
const symbolGet = Symbol(process.env.NODE_ENV === 'development' && 'get');
|
|
45
|
+
const symbolIsObservable = Symbol(process.env.NODE_ENV === 'development' && 'isObservable');
|
|
46
|
+
function getNodeValue(node) {
|
|
47
|
+
let child = node.root;
|
|
48
|
+
const arr = node.path.split(delim);
|
|
49
|
+
for (let i = 0; i < arr.length; i++) {
|
|
50
|
+
if (arr[i] !== undefined && child) {
|
|
51
|
+
child = child[arr[i]];
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return child;
|
|
55
|
+
}
|
|
56
|
+
function getParentNode(node) {
|
|
57
|
+
if (node.path === '_')
|
|
58
|
+
return { parent: node, key: undefined };
|
|
59
|
+
const parent = node.root.proxyValues.get(node.pathParent);
|
|
60
|
+
return { parent, key: node.key };
|
|
61
|
+
}
|
|
62
|
+
function getChildNode(node, key) {
|
|
63
|
+
const path = node.path + delim + key;
|
|
64
|
+
let child = node.root.proxyValues.get(path);
|
|
65
|
+
if (!child) {
|
|
66
|
+
// console.log('creating child', node.path, key);
|
|
67
|
+
child = {
|
|
68
|
+
root: node.root,
|
|
69
|
+
path: node.path + delim + key,
|
|
70
|
+
// arr: node.arr.concat(key),
|
|
71
|
+
// arrParent: node.arr,
|
|
72
|
+
pathParent: node.path,
|
|
73
|
+
key,
|
|
74
|
+
};
|
|
75
|
+
node.root.proxyValues.set(path, child);
|
|
76
|
+
}
|
|
77
|
+
return child;
|
|
78
|
+
}
|
|
79
|
+
function getObservableRawValue(obs) {
|
|
80
|
+
if (!obs || isPrimitive(obs))
|
|
81
|
+
return obs;
|
|
82
|
+
const should = obs[symbolShouldRender];
|
|
83
|
+
if (should) {
|
|
84
|
+
tracking.should = should.fn;
|
|
85
|
+
obs = should.obs;
|
|
86
|
+
}
|
|
87
|
+
const shallow = obs[symbolShallow];
|
|
88
|
+
if (shallow) {
|
|
89
|
+
tracking.shallow = true;
|
|
90
|
+
obs = shallow;
|
|
91
|
+
}
|
|
92
|
+
let ret = obs[symbolGet];
|
|
93
|
+
tracking.should = undefined;
|
|
94
|
+
tracking.shallow = false;
|
|
95
|
+
return ret;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
function shallow(obs) {
|
|
99
|
+
return {
|
|
100
|
+
[symbolShallow]: obs,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
function shouldRender(obs, fn) {
|
|
104
|
+
return {
|
|
105
|
+
[symbolShouldRender]: { obs, fn },
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
function mergeIntoObservable(target, ...sources) {
|
|
109
|
+
if (!sources.length)
|
|
110
|
+
return target;
|
|
111
|
+
const source = sources.shift();
|
|
112
|
+
if (isObject(target) && isObject(source)) {
|
|
113
|
+
if (source[symbolDateModified]) {
|
|
114
|
+
target.set(symbolDateModified, source[symbolDateModified]);
|
|
115
|
+
}
|
|
116
|
+
for (const key in source) {
|
|
117
|
+
if (isObject(source[key])) {
|
|
118
|
+
if (!target[key] || !isObject(target[key])) {
|
|
119
|
+
target.set(key, {});
|
|
120
|
+
}
|
|
121
|
+
mergeIntoObservable(target[key], source[key]);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
target.set(key, source[key]);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return mergeIntoObservable(target, ...sources);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
let timeout;
|
|
132
|
+
let numInBatch = 0;
|
|
133
|
+
let _batch = [];
|
|
134
|
+
// Use a WeakMap of callbacks for fast lookups to update the BatchItem
|
|
135
|
+
let _batchMap = new WeakMap();
|
|
136
|
+
function onActionTimeout() {
|
|
137
|
+
if (_batch.length > 0) {
|
|
138
|
+
if (process.env.NODE_ENV === 'development') {
|
|
139
|
+
console.error('Forcibly completing observableBatcher because end() was never called. This may be due to an uncaught error between begin() and end().');
|
|
140
|
+
}
|
|
141
|
+
exports.observableBatcher.end(/*force*/ true);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
function observableBatcherNotify(b) {
|
|
145
|
+
if (numInBatch > 0) {
|
|
146
|
+
const existing = _batchMap.get(b.cb);
|
|
147
|
+
// If this callback already exists, make sure it has the latest value but do not add it
|
|
148
|
+
if (existing) {
|
|
149
|
+
_batchMap.set(b.cb, b);
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
_batch.push(b);
|
|
153
|
+
_batchMap.set(b.cb, b);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
b.cb(b.value, b.getPrevious, b.path, b.valueAtPath, b.prevAtPath);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
exports.observableBatcher = void 0;
|
|
161
|
+
(function (observableBatcher) {
|
|
162
|
+
function batch(fn) {
|
|
163
|
+
begin();
|
|
164
|
+
fn();
|
|
165
|
+
end();
|
|
166
|
+
}
|
|
167
|
+
observableBatcher.batch = batch;
|
|
168
|
+
function begin() {
|
|
169
|
+
numInBatch++;
|
|
170
|
+
// Set a timeout to call end() in case end() is never called or there's an uncaught error
|
|
171
|
+
timeout = setTimeout(onActionTimeout, 0);
|
|
172
|
+
}
|
|
173
|
+
observableBatcher.begin = begin;
|
|
174
|
+
function end(force) {
|
|
175
|
+
numInBatch--;
|
|
176
|
+
if (numInBatch <= 0 || force) {
|
|
177
|
+
clearTimeout(timeout);
|
|
178
|
+
numInBatch = 0;
|
|
179
|
+
// Save batch locally and reset _batch first because a new batch could begin while looping over callbacks.
|
|
180
|
+
// This can happen with observableComputed for example.
|
|
181
|
+
const batch = _batch;
|
|
182
|
+
_batch = [];
|
|
183
|
+
_batchMap = new WeakMap();
|
|
184
|
+
for (let i = 0; i < batch.length; i++) {
|
|
185
|
+
const { cb, value, getPrevious: prev, path, valueAtPath, prevAtPath } = batch[i];
|
|
186
|
+
cb(value, prev, path, valueAtPath, prevAtPath);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
observableBatcher.end = end;
|
|
191
|
+
})(exports.observableBatcher || (exports.observableBatcher = {}));
|
|
192
|
+
|
|
193
|
+
const symbolHasValue = Symbol('__hasValue');
|
|
194
|
+
function disposeListener(listener) {
|
|
195
|
+
if (listener && !listener.isDisposed) {
|
|
196
|
+
listener.isDisposed = true;
|
|
197
|
+
const listeners = listener.node.root.listenerMap.get(listener.node.path);
|
|
198
|
+
if (listeners) {
|
|
199
|
+
listeners.delete(listener);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
function onEquals(node, value, callback) {
|
|
204
|
+
let listener;
|
|
205
|
+
const promise = new Promise((resolve) => {
|
|
206
|
+
let isDone = false;
|
|
207
|
+
function check(newValue) {
|
|
208
|
+
if (!isDone &&
|
|
209
|
+
(value === symbolHasValue
|
|
210
|
+
? // If value param is symbolHasValue, then this is from onHasValue so resolve if newValue is anything but undefined or empty object
|
|
211
|
+
newValue !== undefined && newValue !== null && !isObjectEmpty(newValue)
|
|
212
|
+
: newValue === value)) {
|
|
213
|
+
isDone = true;
|
|
214
|
+
callback === null || callback === void 0 ? void 0 : callback(newValue);
|
|
215
|
+
resolve(newValue);
|
|
216
|
+
disposeListener(listener);
|
|
217
|
+
}
|
|
218
|
+
return isDone;
|
|
219
|
+
}
|
|
220
|
+
if (!check(getNodeValue(node))) {
|
|
221
|
+
listener = onChange(node, check, /*shallow*/ true);
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
return {
|
|
225
|
+
promise,
|
|
226
|
+
listener,
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
function onHasValue(node, callback) {
|
|
230
|
+
return onEquals(node, symbolHasValue, callback);
|
|
231
|
+
}
|
|
232
|
+
function onTrue(node, callback) {
|
|
233
|
+
return onEquals(node, true, callback);
|
|
234
|
+
}
|
|
235
|
+
function onChange(node, callback, shallow) {
|
|
236
|
+
const listener = {
|
|
237
|
+
node,
|
|
238
|
+
callback,
|
|
239
|
+
shallow,
|
|
240
|
+
// function, not () => {} to preserve this
|
|
241
|
+
dispose: function () {
|
|
242
|
+
disposeListener(this);
|
|
243
|
+
},
|
|
244
|
+
};
|
|
245
|
+
const map = node.root.listenerMap;
|
|
246
|
+
let listeners = map.get(node.path);
|
|
247
|
+
if (!listeners) {
|
|
248
|
+
listeners = new Set();
|
|
249
|
+
map.set(node.path, listeners);
|
|
250
|
+
}
|
|
251
|
+
listeners.add(listener);
|
|
252
|
+
return listener;
|
|
253
|
+
}
|
|
254
|
+
function onChangeShallow(node, callback) {
|
|
255
|
+
return onChange(node, callback, /*shallow*/ true);
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
let lastAccessedNode;
|
|
259
|
+
let lastAccessedPrimitive;
|
|
260
|
+
let inSetFn = false;
|
|
261
|
+
const ArrayModifiers = new Set([
|
|
262
|
+
'copyWithin',
|
|
263
|
+
'fill',
|
|
264
|
+
'from',
|
|
265
|
+
'pop',
|
|
266
|
+
'push',
|
|
267
|
+
'reverse',
|
|
268
|
+
'shift',
|
|
269
|
+
'sort',
|
|
270
|
+
'splice',
|
|
271
|
+
'unshift',
|
|
272
|
+
]);
|
|
273
|
+
const ArrayLoopers = new Set(['every', 'some', 'filter', 'reduce', 'reduceRight', 'forEach', 'map']);
|
|
274
|
+
const objectFnsProxy = new Map([
|
|
275
|
+
['get', getNodeValue],
|
|
276
|
+
['set', set],
|
|
277
|
+
['onChange', onChange],
|
|
278
|
+
['onChangeShallow', onChangeShallow],
|
|
279
|
+
['onEquals', onEquals],
|
|
280
|
+
['onHasValue', onHasValue],
|
|
281
|
+
['onTrue', onTrue],
|
|
282
|
+
['prop', getProxy],
|
|
283
|
+
['assign', assign],
|
|
284
|
+
['delete', deleteFn],
|
|
285
|
+
]);
|
|
286
|
+
// Override primitives
|
|
287
|
+
const wrapFn = (fn) => function (...args) {
|
|
288
|
+
if (lastAccessedNode && lastAccessedPrimitive) {
|
|
289
|
+
const node = getChildNode(lastAccessedNode, lastAccessedPrimitive);
|
|
290
|
+
if (getNodeValue(node) === this) {
|
|
291
|
+
return fn(node, ...args);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
};
|
|
295
|
+
const toOverride = [Number, Boolean, String];
|
|
296
|
+
objectFnsProxy.forEach((fn, key) => {
|
|
297
|
+
for (let i = 0; i < toOverride.length; i++) {
|
|
298
|
+
toOverride[i].prototype[key] = wrapFn(fn);
|
|
299
|
+
}
|
|
300
|
+
});
|
|
301
|
+
function collectionSetter(node, target, prop, ...args) {
|
|
302
|
+
const prevValue = (isArray(target) && target.slice()) || target;
|
|
303
|
+
const ret = target[prop].apply(target, args);
|
|
304
|
+
if (node) {
|
|
305
|
+
const { parent, key } = getParentNode(node);
|
|
306
|
+
if (parent) {
|
|
307
|
+
const parentValue = getNodeValue(parent);
|
|
308
|
+
// Set the object to the previous value first
|
|
309
|
+
parentValue[key] = prevValue;
|
|
310
|
+
// Then set with the new value so it notifies with the correct prevValue
|
|
311
|
+
setProp(parent, key, target);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
// Return the original value
|
|
315
|
+
return ret;
|
|
316
|
+
}
|
|
317
|
+
function updateNodes(parent, obj, prevValue) {
|
|
318
|
+
const isArr = isArray(obj);
|
|
319
|
+
// If array it's faster to just use the array
|
|
320
|
+
const keys = isArr ? obj : Object.keys(obj);
|
|
321
|
+
const length = keys.length;
|
|
322
|
+
let hasADiff = false;
|
|
323
|
+
for (let i = 0; i < length; i++) {
|
|
324
|
+
const key = isArr ? i : keys[i];
|
|
325
|
+
const value = obj[key];
|
|
326
|
+
const prev = prevValue === null || prevValue === void 0 ? void 0 : prevValue[key];
|
|
327
|
+
if (!isArr && prevValue && value !== prev) {
|
|
328
|
+
const isObj = !isPrimitive(value);
|
|
329
|
+
const child = getChildNode(parent, key);
|
|
330
|
+
// If object iterate through its children
|
|
331
|
+
if (isObj) {
|
|
332
|
+
updateNodes(child, value, prev);
|
|
333
|
+
}
|
|
334
|
+
// Notify for this child if this element is different and it has listeners
|
|
335
|
+
// But do not notify child if the parent is an array - the array's listener will cover it
|
|
336
|
+
const doNotify = child.root.listenerMap.has(child.path);
|
|
337
|
+
if (doNotify) {
|
|
338
|
+
hasADiff = true;
|
|
339
|
+
_notify(child, value, [], value, prev, 0);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
return hasADiff;
|
|
344
|
+
}
|
|
345
|
+
function getProxy(node, p) {
|
|
346
|
+
// Create a proxy if not already cached and return it
|
|
347
|
+
if (p !== undefined)
|
|
348
|
+
node = getChildNode(node, p);
|
|
349
|
+
let proxy = node.root.proxies.get(node.path);
|
|
350
|
+
if (!proxy) {
|
|
351
|
+
proxy = new Proxy(node, proxyHandler);
|
|
352
|
+
node.root.proxies.set(node.path, proxy);
|
|
353
|
+
}
|
|
354
|
+
return proxy;
|
|
355
|
+
}
|
|
356
|
+
const proxyHandler = {
|
|
357
|
+
get(target, p) {
|
|
358
|
+
// Return true is called by isObservable()
|
|
359
|
+
if (p === symbolIsObservable) {
|
|
360
|
+
return true;
|
|
361
|
+
}
|
|
362
|
+
const node = target;
|
|
363
|
+
const fn = objectFnsProxy.get(p);
|
|
364
|
+
// If this is an observable function, call it
|
|
365
|
+
if (p !== 'get' && fn) {
|
|
366
|
+
return function (a, b, c) {
|
|
367
|
+
const l = arguments.length;
|
|
368
|
+
return l > 2 ? fn(node, a, b, c) : l > 1 ? fn(node, a, b) : fn(node, a);
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
let value = getNodeValue(node);
|
|
372
|
+
const vProp = value === null || value === void 0 ? void 0 : value[p];
|
|
373
|
+
// The get() function as well as the internal obs[symbolGet]
|
|
374
|
+
if (p === symbolGet || p === 'get') {
|
|
375
|
+
// Primitives are { current } so return the current value
|
|
376
|
+
if (node.root.isPrimitive) {
|
|
377
|
+
value = value.current;
|
|
378
|
+
}
|
|
379
|
+
// Update that this node was accessed for useObservables and useComputed
|
|
380
|
+
if (tracking.is) {
|
|
381
|
+
updateTracking(node, value);
|
|
382
|
+
}
|
|
383
|
+
return p === 'get' ? () => value : value;
|
|
384
|
+
}
|
|
385
|
+
// Accessing undefined/null/symbols passes straight through if this value has a property for it
|
|
386
|
+
// If it's never been defined assume it's a proxy to a future object
|
|
387
|
+
if (isSymbol(p) || vProp === null || (vProp === undefined && value && Object.hasOwn(value, p))) {
|
|
388
|
+
return vProp;
|
|
389
|
+
}
|
|
390
|
+
// Handle function calls
|
|
391
|
+
if (isFunction(vProp)) {
|
|
392
|
+
if (isArray(value)) {
|
|
393
|
+
if (ArrayModifiers.has(p)) {
|
|
394
|
+
// Call the wrapped modifier function
|
|
395
|
+
return (...args) => collectionSetter(node, value, p, ...args);
|
|
396
|
+
}
|
|
397
|
+
else if (ArrayLoopers.has(p)) {
|
|
398
|
+
// Bind this looping function to an array of proxies
|
|
399
|
+
const arr = [];
|
|
400
|
+
for (let i = 0; i < value.length; i++) {
|
|
401
|
+
arr.push(getProxy(node, i));
|
|
402
|
+
}
|
|
403
|
+
return vProp.bind(arr);
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
// Return the function bound to the value
|
|
407
|
+
return vProp.bind(value);
|
|
408
|
+
}
|
|
409
|
+
// Accessing primitives tracks and returns
|
|
410
|
+
if (vProp !== undefined && isPrimitive(vProp)) {
|
|
411
|
+
// Accessing a primitive saves the last accessed so that the observable functions
|
|
412
|
+
// bound to primitives can know which node was accessed
|
|
413
|
+
lastAccessedNode = node;
|
|
414
|
+
lastAccessedPrimitive = p;
|
|
415
|
+
// Update that this node was accessed for useObservables and useComputed
|
|
416
|
+
if (tracking.is) {
|
|
417
|
+
updateTracking(getChildNode(node, p), value);
|
|
418
|
+
}
|
|
419
|
+
return vProp;
|
|
420
|
+
}
|
|
421
|
+
return getProxy(target, p);
|
|
422
|
+
},
|
|
423
|
+
// Forward all proxy properties to the target's value
|
|
424
|
+
getPrototypeOf(target) {
|
|
425
|
+
const value = getNodeValue(target);
|
|
426
|
+
return Reflect.getPrototypeOf(value);
|
|
427
|
+
},
|
|
428
|
+
ownKeys(target) {
|
|
429
|
+
const value = getNodeValue(target);
|
|
430
|
+
const keys = Reflect.ownKeys(value);
|
|
431
|
+
if (isArray(value)) {
|
|
432
|
+
if (keys[keys.length - 1] === 'length') {
|
|
433
|
+
keys.splice(keys.length - 1, 1);
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
return keys;
|
|
437
|
+
},
|
|
438
|
+
getOwnPropertyDescriptor(target, p) {
|
|
439
|
+
const value = getNodeValue(target);
|
|
440
|
+
return Reflect.getOwnPropertyDescriptor(value, p);
|
|
441
|
+
},
|
|
442
|
+
set(target, prop, value) {
|
|
443
|
+
// If this assignment comes from within an observable function it's allowed
|
|
444
|
+
if (inSetFn) {
|
|
445
|
+
Reflect.set(target, prop, value);
|
|
446
|
+
return true;
|
|
447
|
+
}
|
|
448
|
+
else {
|
|
449
|
+
return false;
|
|
450
|
+
}
|
|
451
|
+
},
|
|
452
|
+
deleteProperty(target, prop) {
|
|
453
|
+
// If this delete comes from within an observable function it's allowed
|
|
454
|
+
if (inSetFn) {
|
|
455
|
+
Reflect.deleteProperty(target, prop);
|
|
456
|
+
return true;
|
|
457
|
+
}
|
|
458
|
+
else {
|
|
459
|
+
return false;
|
|
460
|
+
}
|
|
461
|
+
},
|
|
462
|
+
has(target, prop) {
|
|
463
|
+
const value = getNodeValue(target);
|
|
464
|
+
return Reflect.has(value, prop);
|
|
465
|
+
},
|
|
466
|
+
};
|
|
467
|
+
function set(node, keyOrNewValue, newValue) {
|
|
468
|
+
if (arguments.length > 2) {
|
|
469
|
+
return setProp(node, keyOrNewValue, newValue);
|
|
470
|
+
}
|
|
471
|
+
else if (node.root.isPrimitive) {
|
|
472
|
+
return setProp(node, 'current', keyOrNewValue);
|
|
473
|
+
}
|
|
474
|
+
else {
|
|
475
|
+
const { parent, key } = getParentNode(node);
|
|
476
|
+
return setProp(parent, key, keyOrNewValue);
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
function setProp(node, key, newValue, level) {
|
|
480
|
+
newValue = (newValue === null || newValue === void 0 ? void 0 : newValue[symbolIsObservable]) ? newValue[symbolGet] : newValue;
|
|
481
|
+
const isPrim = isPrimitive(newValue);
|
|
482
|
+
if (!key && !node.path.includes(delim)) {
|
|
483
|
+
return assign(node, newValue);
|
|
484
|
+
}
|
|
485
|
+
inSetFn = true;
|
|
486
|
+
// Get the child node for updating and notifying
|
|
487
|
+
const childNode = getChildNode(node, key);
|
|
488
|
+
// Get the value of the parent
|
|
489
|
+
let parentValue = getNodeValue(node);
|
|
490
|
+
// Save the previous value first
|
|
491
|
+
const prevValue = parentValue[key];
|
|
492
|
+
// Save the new value
|
|
493
|
+
parentValue[key] = newValue;
|
|
494
|
+
// If new value is an object or array update notify down the tree
|
|
495
|
+
if (!isPrim) {
|
|
496
|
+
updateNodes(childNode, newValue, prevValue);
|
|
497
|
+
}
|
|
498
|
+
// Notify for this element if it's an object or it's changed
|
|
499
|
+
if (!isPrim || newValue !== prevValue) {
|
|
500
|
+
notify(node.root.isPrimitive ? node : childNode, newValue, prevValue, (level !== null && level !== void 0 ? level : prevValue === undefined) ? -1 : 0);
|
|
501
|
+
}
|
|
502
|
+
inSetFn = false;
|
|
503
|
+
return getProxy(node, key);
|
|
504
|
+
}
|
|
505
|
+
function createPreviousHandler(value, path, prevAtPath) {
|
|
506
|
+
// Create a function that clones the current state and injects the previous data at the changed path
|
|
507
|
+
return function () {
|
|
508
|
+
let clone = value ? JSON.parse(JSON.stringify(value)) : path.length > 0 ? {} : value;
|
|
509
|
+
let o = clone;
|
|
510
|
+
if (path.length > 0) {
|
|
511
|
+
let i;
|
|
512
|
+
for (i = 0; i < path.length - 1; i++) {
|
|
513
|
+
o = o[path[i]];
|
|
514
|
+
}
|
|
515
|
+
o[path[i]] = prevAtPath;
|
|
516
|
+
}
|
|
517
|
+
else {
|
|
518
|
+
clone = prevAtPath;
|
|
519
|
+
}
|
|
520
|
+
return clone;
|
|
521
|
+
};
|
|
522
|
+
}
|
|
523
|
+
function _notify(node, value, path, valueAtPath, prevAtPath, level) {
|
|
524
|
+
const listeners = node.root.listenerMap.get(node.path);
|
|
525
|
+
// Notify all listeners
|
|
526
|
+
if (listeners) {
|
|
527
|
+
let getPrevious;
|
|
528
|
+
for (let listener of listeners) {
|
|
529
|
+
// Notify if listener is not shallow or if this is the first level
|
|
530
|
+
if (!listener.shallow || level <= 0) {
|
|
531
|
+
// Create a function to get the previous data. Computing a clone of previous data can be expensive if doing
|
|
532
|
+
// it often, so leave it up to the user.
|
|
533
|
+
if (!getPrevious) {
|
|
534
|
+
getPrevious = createPreviousHandler(value, path, prevAtPath);
|
|
535
|
+
}
|
|
536
|
+
observableBatcherNotify({ cb: listener.callback, value, getPrevious, path, valueAtPath, prevAtPath });
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
function _notifyParents(node, value, path, valueAtPath, prevAtPath, level) {
|
|
542
|
+
// Do the notify
|
|
543
|
+
_notify(node, value, path, valueAtPath, prevAtPath, level);
|
|
544
|
+
// If not root notify up through parents
|
|
545
|
+
if (node.path !== '_') {
|
|
546
|
+
const { parent, key } = getParentNode(node);
|
|
547
|
+
if (parent) {
|
|
548
|
+
const parentValue = getNodeValue(parent);
|
|
549
|
+
_notifyParents(parent, parentValue, [key].concat(path), valueAtPath, prevAtPath, level + 1);
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
function notify(node, value, prev, level) {
|
|
554
|
+
// Start notifying up through parents with the listenerInfo
|
|
555
|
+
_notifyParents(node, value, [], value, prev, level);
|
|
556
|
+
}
|
|
557
|
+
function assign(node, value) {
|
|
558
|
+
exports.observableBatcher.begin();
|
|
559
|
+
// Assign calls set with all assigned properties
|
|
560
|
+
const keys = Object.keys(value);
|
|
561
|
+
const length = keys.length;
|
|
562
|
+
for (let i = 0; i < length; i++) {
|
|
563
|
+
setProp(node, keys[i], value[keys[i]]);
|
|
564
|
+
}
|
|
565
|
+
const ret = getNodeValue(node);
|
|
566
|
+
exports.observableBatcher.end();
|
|
567
|
+
return ret;
|
|
568
|
+
}
|
|
569
|
+
function deleteFn(node, key) {
|
|
570
|
+
// If called without a key, delete by key from the parent node
|
|
571
|
+
if (key !== undefined) {
|
|
572
|
+
return deleteFnByKey(node, key);
|
|
573
|
+
}
|
|
574
|
+
else {
|
|
575
|
+
const { parent, key } = getParentNode(node);
|
|
576
|
+
return deleteFnByKey(parent, key);
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
function deleteFnByKey(node, key) {
|
|
580
|
+
if (!node.root.isPrimitive) {
|
|
581
|
+
// delete sets to undefined first to cleanup children
|
|
582
|
+
setProp(node, key, undefined, /*level*/ -1);
|
|
583
|
+
}
|
|
584
|
+
inSetFn = true;
|
|
585
|
+
// Then delete the key from the object
|
|
586
|
+
let child = getNodeValue(node);
|
|
587
|
+
delete child[key];
|
|
588
|
+
inSetFn = false;
|
|
589
|
+
}
|
|
590
|
+
function observable(obj) {
|
|
591
|
+
const isPrim = isPrimitive(obj);
|
|
592
|
+
// Primitives wrap in current
|
|
593
|
+
if (isPrim) {
|
|
594
|
+
obj = { current: obj };
|
|
595
|
+
}
|
|
596
|
+
const obs = {
|
|
597
|
+
_: obj,
|
|
598
|
+
isPrimitive: isPrim,
|
|
599
|
+
listenerMap: new Map(),
|
|
600
|
+
proxies: new Map(),
|
|
601
|
+
proxyValues: new Map(),
|
|
602
|
+
};
|
|
603
|
+
const node = {
|
|
604
|
+
root: obs,
|
|
605
|
+
path: '_',
|
|
606
|
+
pathParent: '',
|
|
607
|
+
key: '_',
|
|
608
|
+
};
|
|
609
|
+
obs.proxyValues.set(node.path, node);
|
|
610
|
+
updateNodes(node, obs._);
|
|
611
|
+
const proxy = getProxy(node);
|
|
612
|
+
// @ts-ignore
|
|
613
|
+
return proxy;
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
exports.getObservableRawValue = getObservableRawValue;
|
|
617
|
+
exports.isArray = isArray;
|
|
618
|
+
exports.isFunction = isFunction;
|
|
619
|
+
exports.isObject = isObject;
|
|
620
|
+
exports.isPrimitive = isPrimitive;
|
|
621
|
+
exports.mergeIntoObservable = mergeIntoObservable;
|
|
622
|
+
exports.observable = observable;
|
|
623
|
+
exports.onChange = onChange;
|
|
624
|
+
exports.onChangeShallow = onChangeShallow;
|
|
625
|
+
exports.shallow = shallow;
|
|
626
|
+
exports.shouldRender = shouldRender;
|
|
627
|
+
exports.symbolDateModified = symbolDateModified;
|
|
628
|
+
exports.symbolGet = symbolGet;
|
|
629
|
+
exports.symbolIsObservable = symbolIsObservable;
|
|
630
|
+
exports.symbolShallow = symbolShallow;
|
|
631
|
+
exports.symbolShouldRender = symbolShouldRender;
|
|
632
|
+
exports.trackedNodes = trackedNodes;
|
|
633
|
+
exports.tracking = tracking;
|
|
634
|
+
//# sourceMappingURL=index.cjs.map
|
package/index.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../src/state.ts","../../src/is.ts","../../src/globals.ts","../../src/helpers.ts","../../src/observableBatcher.ts","../../src/on.ts","../../src/observable.ts"],"sourcesContent":[null,null,null,null,null,null,null],"names":["observableBatcher"],"mappings":";;;;AAEa,MAAA,QAAQ,GAAG;AACpB,IAAA,EAAE,EAAE,KAAK;AACT,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,MAAM,EAAE,SAA4C;EACtD;AACK,MAAM,YAAY,GAAG,GAKxB;AACY,SAAA,cAAc,CAAC,IAAgB,EAAE,KAAU,EAAA;IACvD,YAAY,CAAC,IAAI,CAAC;QACd,IAAI;QACJ,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,YAAY,EAAE,QAAQ,CAAC,MAAM;QAC7B,KAAK;AACR,KAAA,CAAC,CAAC;AACP;;ACpBM,SAAU,OAAO,CAAC,GAAY,EAAA;AAChC,IAAA,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC;AAIK,SAAU,QAAQ,CAAC,GAAY,EAAA;AACjC,IAAA,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACpE,CAAC;AACK,SAAU,UAAU,CAAC,GAAY,EAAA;AACnC,IAAA,OAAO,OAAO,GAAG,KAAK,UAAU,CAAC;AACrC,CAAC;AACK,SAAU,WAAW,CAAC,GAAG,EAAA;AAC3B,IAAA,IAAI,IAAI,GAAG,OAAO,GAAG,CAAC;AACtB,IAAA,OAAO,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,UAAU,CAAC,CAAC;AACnE,CAAC;AACK,SAAU,aAAa,CAAC,GAAW,EAAA;AACrC,IAAA,OAAO,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AACjE,CAAC;AACK,SAAU,QAAQ,CAAC,GAAY,EAAA;AACjC,IAAA,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC;AACnC;;ACjBO,MAAM,KAAK,GAAG,QAAQ,CAAC;AAEjB,MAAA,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,IAAI,cAAc,EAAE;AACtF,MAAA,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,IAAI,SAAS,EAAE;AAC5E,MAAA,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,IAAI,cAAc,EAAE;AACtF,MAAA,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,IAAI,KAAK,EAAE;AACpE,MAAA,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,IAAI,cAAc,EAAE;AAE7F,SAAU,YAAY,CAAC,IAAgB,EAAA;AACzC,IAAA,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;IACtB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACnC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACjC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,KAAK,EAAE;YAC/B,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,SAAA;AACJ,KAAA;AACD,IAAA,OAAO,KAAK,CAAC;AACjB,CAAC;AAEK,SAAU,aAAa,CAAC,IAAgB,EAAA;AAC1C,IAAA,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG;QAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AAC/D,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1D,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACrC,CAAC;AAEe,SAAA,YAAY,CAAC,IAAgB,EAAE,GAAoB,EAAA;IAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK,GAAG,GAAG,CAAC;AACrC,IAAA,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,CAAC,KAAK,EAAE;;AAER,QAAA,KAAK,GAAG;YACJ,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,KAAK,GAAG,GAAG;;;YAG7B,UAAU,EAAE,IAAI,CAAC,IAAI;YACrB,GAAG;SACN,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC1C,KAAA;AAED,IAAA,OAAO,KAAK,CAAC;AACjB,CAAC;AAEK,SAAU,qBAAqB,CAAI,GAA+B,EAAA;AACpE,IAAA,IAAI,CAAC,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC;AAAE,QAAA,OAAO,GAAQ,CAAC;AAE9C,IAAA,MAAM,MAAM,GAAG,GAAG,CAAC,kBAAkB,CAAC,CAAC;AACvC,IAAA,IAAI,MAAM,EAAE;AACR,QAAA,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;AAC5B,QAAA,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;AACpB,KAAA;AACD,IAAA,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC;AACnC,IAAA,IAAI,OAAO,EAAE;AACT,QAAA,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;QACxB,GAAG,GAAG,OAAO,CAAC;AACjB,KAAA;AACD,IAAA,IAAI,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;AAEzB,IAAA,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC;AAC5B,IAAA,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;AAEzB,IAAA,OAAO,GAAG,CAAC;AACf;;AC/DM,SAAU,OAAO,CAAC,GAAe,EAAA;IACnC,OAAO;QACH,CAAC,aAAa,GAAG,GAAG;KACvB,CAAC;AACN,CAAC;AACe,SAAA,YAAY,CAAI,GAAkB,EAAE,EAA8B,EAAA;IAC9E,OAAO;AACH,QAAA,CAAC,kBAAkB,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE;KACpC,CAAC;AACN,CAAC;SAMe,mBAAmB,CAAC,MAAkB,EAAE,GAAG,OAAc,EAAA;IACrE,IAAI,CAAC,OAAO,CAAC,MAAM;AAAE,QAAA,OAAO,MAAM,CAAC;AACnC,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAE/B,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;AACtC,QAAA,IAAI,MAAM,CAAC,kBAAyB,CAAC,EAAE;YACnC,MAAM,CAAC,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,kBAAyB,CAAC,CAAC,CAAC;AACrE,SAAA;AACD,QAAA,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;AACtB,YAAA,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;AACvB,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;AACxC,oBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACvB,iBAAA;gBACD,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACjD,aAAA;AAAM,iBAAA;gBACH,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAChC,aAAA;AACJ,SAAA;AACJ,KAAA;AACD,IAAA,OAAO,mBAAmB,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC;AACnD;;AC7BA,IAAI,OAAO,CAAC;AACZ,IAAI,UAAU,GAAG,CAAC,CAAC;AACnB,IAAI,MAAM,GAAgB,EAAE,CAAC;AAC7B;AACA,IAAI,SAAS,GAAG,IAAI,OAAO,EAAyB,CAAC;AAErD,SAAS,eAAe,GAAA;AACpB,IAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACnB,QAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE;AACxC,YAAA,OAAO,CAAC,KAAK,CACT,uIAAuI,CAC1I,CAAC;AACL,SAAA;AACD,QAAAA,yBAAiB,CAAC,GAAG,WAAW,IAAI,CAAC,CAAC;AACzC,KAAA;AACL,CAAC;AAEK,SAAU,uBAAuB,CAAC,CAAY,EAAA;IAChD,IAAI,UAAU,GAAG,CAAC,EAAE;QAChB,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;AAErC,QAAA,IAAI,QAAQ,EAAE;YACV,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1B,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACf,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1B,SAAA;AACJ,KAAA;AAAM,SAAA;QACH,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;AACrE,KAAA;AACL,CAAC;AAEgBA,mCA2BhB;AA3BD,CAAA,UAAiB,iBAAiB,EAAA;IAC9B,SAAgB,KAAK,CAAC,EAAc,EAAA;AAChC,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,GAAG,EAAE,CAAC;KACT;AAJe,IAAA,iBAAA,CAAA,KAAK,QAIpB,CAAA;AACD,IAAA,SAAgB,KAAK,GAAA;AACjB,QAAA,UAAU,EAAE,CAAC;;AAEb,QAAA,OAAO,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;KAC5C;AAJe,IAAA,iBAAA,CAAA,KAAK,QAIpB,CAAA;IACD,SAAgB,GAAG,CAAC,KAAe,EAAA;AAC/B,QAAA,UAAU,EAAE,CAAC;AACb,QAAA,IAAI,UAAU,IAAI,CAAC,IAAI,KAAK,EAAE;YAC1B,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,UAAU,GAAG,CAAC,CAAC;;;YAGf,MAAM,KAAK,GAAG,MAAM,CAAC;YACrB,MAAM,GAAG,EAAE,CAAC;AACZ,YAAA,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC;AAC1B,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACnC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACjF,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;AAClD,aAAA;AACJ,SAAA;KACJ;AAfe,IAAA,iBAAA,CAAA,GAAG,MAelB,CAAA;AACL,CAAC,EA3BgBA,yBAAiB,KAAjBA,yBAAiB,GA2BjC,EAAA,CAAA,CAAA;;ACjED,MAAM,cAAc,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAEtC,SAAU,eAAe,CAAC,QAA4B,EAAA;AACxD,IAAA,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;AAClC,QAAA,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B,QAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzE,QAAA,IAAI,SAAS,EAAE;AACX,YAAA,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC9B,SAAA;AACJ,KAAA;AACL,CAAC;SAEe,QAAQ,CAAI,IAAgB,EAAE,KAAQ,EAAE,QAA4B,EAAA;AAChF,IAAA,IAAI,QAA+B,CAAC;IAEpC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAM,CAAC,OAAO,KAAI;QACzC,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,SAAS,KAAK,CAAC,QAAQ,EAAA;AACnB,YAAA,IACI,CAAC,MAAM;iBACN,KAAK,KAAM,cAAsB;AAC9B;wBACE,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;AACzE,sBAAE,QAAQ,KAAK,KAAK,CAAC,EAC3B;gBACE,MAAM,GAAG,IAAI,CAAC;AACb,gBAAA,QAA+B,aAA/B,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAA0B,QAAQ,CAAC,CAAC;gBAC7C,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAElB,eAAe,CAAC,QAAQ,CAAC,CAAC;AAC7B,aAAA;AACD,YAAA,OAAO,MAAM,CAAC;SACjB;QACD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE;YAC5B,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,cAAc,IAAI,CAAC,CAAC;AACtD,SAAA;AACL,KAAC,CAAC,CAAC;IAEH,OAAO;QACH,OAAO;QACP,QAAQ;KACX,CAAC;AACN,CAAC;AAEe,SAAA,UAAU,CAAI,IAAgB,EAAE,QAA4B,EAAA;IACxE,OAAO,QAAQ,CAAC,IAAI,EAAE,cAAqB,EAAE,QAAQ,CAAC,CAAC;AAC3D,CAAC;AAEe,SAAA,MAAM,CAAoB,IAAgB,EAAE,QAAqB,EAAA;IAC7E,OAAO,QAAQ,CAAC,IAAI,EAAE,IAAS,EAAE,QAAQ,CAAC,CAAC;AAC/C,CAAC;SAEe,QAAQ,CAAC,IAAgB,EAAE,QAAyB,EAAE,OAAiB,EAAA;AACnF,IAAA,MAAM,QAAQ,GAAuB;QACjC,IAAI;QACJ,QAAQ;QACR,OAAO;;AAEP,QAAA,OAAO,EAAE,YAAA;YACL,eAAe,CAAC,IAAI,CAAC,CAAC;SACzB;KACJ,CAAC;AAEF,IAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;IAClC,IAAI,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,SAAS,EAAE;AACZ,QAAA,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACjC,KAAA;AACD,IAAA,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAExB,IAAA,OAAO,QAAQ,CAAC;AACpB,CAAC;AAEe,SAAA,eAAe,CAAC,IAAgB,EAAE,QAAyB,EAAA;IACvE,OAAO,QAAQ,CAAC,IAAI,EAAE,QAAQ,cAAc,IAAI,CAAC,CAAC;AACtD;;ACnEA,IAAI,gBAA4B,CAAC;AACjC,IAAI,qBAA6B,CAAC;AAClC,IAAI,OAAO,GAAG,KAAK,CAAC;AAEpB,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IAC3B,YAAY;IACZ,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,SAAS;IACT,OAAO;IACP,MAAM;IACN,QAAQ;IACR,SAAS;AACZ,CAAA,CAAC,CAAC;AACH,MAAM,YAAY,GAAG,IAAI,GAAG,CAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;AAEvH,MAAM,cAAc,GAAG,IAAI,GAAG,CAAmB;IAC7C,CAAC,KAAK,EAAE,YAAY,CAAC;IACrB,CAAC,KAAK,EAAE,GAAG,CAAC;IACZ,CAAC,UAAU,EAAE,QAAQ,CAAC;IACtB,CAAC,iBAAiB,EAAE,eAAe,CAAC;IACpC,CAAC,UAAU,EAAE,QAAQ,CAAC;IACtB,CAAC,YAAY,EAAE,UAAU,CAAC;IAC1B,CAAC,QAAQ,EAAE,MAAM,CAAC;IAClB,CAAC,MAAM,EAAE,QAAQ,CAAC;IAClB,CAAC,QAAQ,EAAE,MAAM,CAAC;IAClB,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACvB,CAAA,CAAC,CAAC;AAEH;AACA,MAAM,MAAM,GAAG,CAAC,EAAY,KACxB,UAAU,GAAG,IAAS,EAAA;IAClB,IAAI,gBAAgB,IAAI,qBAAqB,EAAE;QAC3C,MAAM,IAAI,GAAe,YAAY,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;AAC/E,QAAA,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;AAC7B,YAAA,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;AAC5B,SAAA;AACJ,KAAA;AACL,CAAC,CAAC;AAEN,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAC7C,cAAc,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,GAAG,KAAI;AAC/B,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxC,QAAA,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;AAC7C,KAAA;AACL,CAAC,CAAC,CAAC;AAEH,SAAS,gBAAgB,CAAC,IAAgB,EAAE,MAAW,EAAE,IAAY,EAAE,GAAG,IAAW,EAAA;AACjF,IAAA,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,KAAK,MAAM,CAAC;AAEhE,IAAA,MAAM,GAAG,GAAI,MAAM,CAAC,IAAI,CAAc,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAE3D,IAAA,IAAI,IAAI,EAAE;QACN,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;AAC5C,QAAA,IAAI,MAAM,EAAE;AACR,YAAA,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;;AAGzC,YAAA,WAAW,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;;AAG7B,YAAA,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AAChC,SAAA;AACJ,KAAA;;AAGD,IAAA,OAAO,GAAG,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAAC,MAAkB,EAAE,GAAkC,EAAE,SAAe,EAAA;AACxF,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;;AAE3B,IAAA,MAAM,IAAI,GAAG,KAAK,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5C,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAE3B,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7B,QAAA,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAChC,QAAA,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,MAAM,IAAI,GAAG,SAAS,KAAT,IAAA,IAAA,SAAS,uBAAT,SAAS,CAAG,GAAG,CAAC,CAAC;QAE9B,IAAI,CAAC,KAAK,IAAI,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;AACvC,YAAA,MAAM,KAAK,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAElC,MAAM,KAAK,GAAe,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;;AAEpD,YAAA,IAAI,KAAK,EAAE;AACP,gBAAA,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACnC,aAAA;;;AAID,YAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACxD,YAAA,IAAI,QAAQ,EAAE;gBACV,QAAQ,GAAG,IAAI,CAAC;AAChB,gBAAA,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC7C,aAAA;AACJ,SAAA;AACJ,KAAA;AAED,IAAA,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,SAAS,QAAQ,CAAC,IAAgB,EAAE,CAAmB,EAAA;;IAEnD,IAAI,CAAC,KAAK,SAAS;AAAE,QAAA,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAClD,IAAA,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,CAAC,KAAK,EAAE;QACR,KAAK,GAAG,IAAI,KAAK,CAAa,IAAI,EAAE,YAAY,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC3C,KAAA;AACD,IAAA,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,MAAM,YAAY,GAAsB;IACpC,GAAG,CAAC,MAAkB,EAAE,CAAM,EAAA;;QAE1B,IAAI,CAAC,KAAK,kBAAkB,EAAE;AAC1B,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QAED,MAAM,IAAI,GAAG,MAAM,CAAC;QACpB,MAAM,EAAE,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;AAEjC,QAAA,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,EAAE;AACnB,YAAA,OAAO,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAA;AACpB,gBAAA,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;AAC3B,gBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC5E,aAAC,CAAC;AACL,SAAA;AAED,QAAA,IAAI,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,KAAK,KAAL,IAAA,IAAA,KAAK,uBAAL,KAAK,CAAG,CAAC,CAAC,CAAC;;AAEzB,QAAA,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,KAAK,EAAE;;AAEhC,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACvB,gBAAA,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;AACzB,aAAA;;YAED,IAAI,QAAQ,CAAC,EAAE,EAAE;AACb,gBAAA,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC/B,aAAA;AACD,YAAA,OAAO,CAAC,KAAK,KAAK,GAAG,MAAM,KAAK,GAAG,KAAK,CAAC;AAC5C,SAAA;;;QAGD,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,SAAS,IAAI,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE;AAC5F,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;;AAED,QAAA,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;AACnB,YAAA,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;AAChB,gBAAA,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;;AAEvB,oBAAA,OAAO,CAAC,GAAG,IAAI,KAAK,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;AACjE,iBAAA;AAAM,qBAAA,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;;oBAE5B,MAAM,GAAG,GAAG,EAAE,CAAC;AACf,oBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBACnC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/B,qBAAA;AACD,oBAAA,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,iBAAA;AACJ,aAAA;;AAED,YAAA,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5B,SAAA;;QAED,IAAI,KAAK,KAAK,SAAS,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;;;YAG3C,gBAAgB,GAAG,IAAI,CAAC;YACxB,qBAAqB,GAAG,CAAC,CAAC;;YAE1B,IAAI,QAAQ,CAAC,EAAE,EAAE;gBACb,cAAc,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAChD,aAAA;AACD,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AAED,QAAA,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;KAC9B;;AAED,IAAA,cAAc,CAAC,MAAM,EAAA;AACjB,QAAA,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;AACnC,QAAA,OAAO,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;KACxC;AACD,IAAA,OAAO,CAAC,MAAM,EAAA;AACV,QAAA,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACpC,QAAA,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;YAChB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,QAAQ,EAAE;gBACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACnC,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;IACD,wBAAwB,CAAC,MAAM,EAAE,CAAC,EAAA;AAC9B,QAAA,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACnC,OAAO,OAAO,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;KACrD;AACD,IAAA,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAA;;AAEnB,QAAA,IAAI,OAAO,EAAE;YACT,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACjC,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;KACJ;IACD,cAAc,CAAC,MAAM,EAAE,IAAI,EAAA;;AAEvB,QAAA,IAAI,OAAO,EAAE;AACT,YAAA,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACrC,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;KACJ;IACD,GAAG,CAAC,MAAM,EAAE,IAAI,EAAA;AACZ,QAAA,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACnC,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KACnC;CACJ,CAAC;AAEF,SAAS,GAAG,CAAC,IAAgB,EAAE,aAAkB,EAAE,QAAc,EAAA;AAC7D,IAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;QACtB,OAAO,OAAO,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;AACjD,KAAA;AAAM,SAAA,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;QAC9B,OAAO,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;AAClD,KAAA;AAAM,SAAA;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAC5C,OAAO,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;AAC9C,KAAA;AACL,CAAC;AAED,SAAS,OAAO,CAAC,IAAgB,EAAE,GAAoB,EAAE,QAAc,EAAE,KAAc,EAAA;IACnF,QAAQ,GAAG,CAAA,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAG,kBAAkB,CAAC,IAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;AAE3E,IAAA,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;AAErC,IAAA,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACpC,QAAA,OAAO,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjC,KAAA;IAED,OAAO,GAAG,IAAI,CAAC;;IAGf,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;;AAG1C,IAAA,IAAI,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;;AAGrC,IAAA,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;;AAGnC,IAAA,WAAW,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;;IAI5B,IAAI,CAAC,MAAM,EAAE;QACE,WAAW,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC1D,KAAA;;AAGD,IAAA,IAAI,CAAC,MAAM,IAAI,QAAQ,KAAK,SAAS,EAAE;AACnC,QAAA,MAAM,CACF,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,SAAS,EACxC,QAAQ,EACR,SAAS,EACT,CAAA,KAAK,aAAL,KAAK,KAAA,KAAA,CAAA,GAAL,KAAK,GAAI,SAAS,KAAK,SAAS,IAAG,CAAC,CAAC,GAAG,CAAC,CAC5C,CAAC;AACL,KAAA;IAED,OAAO,GAAG,KAAK,CAAC;AAEhB,IAAA,OAAO,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAU,EAAE,IAAyB,EAAE,UAAe,EAAA;;IAEjF,OAAO,YAAA;AACH,QAAA,IAAI,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QACrF,IAAI,CAAC,GAAG,KAAK,CAAC;AACd,QAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACjB,YAAA,IAAI,CAAS,CAAC;AACd,YAAA,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAClC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAClB,aAAA;YACD,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;AAC3B,SAAA;AAAM,aAAA;YACH,KAAK,GAAG,UAAU,CAAC;AACtB,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;AACjB,KAAC,CAAC;AACN,CAAC;AAED,SAAS,OAAO,CACZ,IAAgB,EAChB,KAAU,EACV,IAAyB,EACzB,WAAgB,EAChB,UAAe,EACf,KAAa,EAAA;AAEb,IAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;AAEvD,IAAA,IAAI,SAAS,EAAE;AACX,QAAA,IAAI,WAAW,CAAC;AAChB,QAAA,KAAK,IAAI,QAAQ,IAAI,SAAS,EAAE;;YAE5B,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,KAAK,IAAI,CAAC,EAAE;;;gBAGjC,IAAI,CAAC,WAAW,EAAE;oBACd,WAAW,GAAG,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AAChE,iBAAA;AACD,gBAAA,uBAAuB,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC;AACzG,aAAA;AACJ,SAAA;AACJ,KAAA;AACL,CAAC;AAED,SAAS,cAAc,CACnB,IAAgB,EAChB,KAAU,EACV,IAAyB,EACzB,WAAgB,EAChB,UAAe,EACf,KAAa,EAAA;;AAGb,IAAA,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;;AAE3D,IAAA,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,EAAE;QACnB,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;AAC5C,QAAA,IAAI,MAAM,EAAE;AACR,YAAA,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;YACzC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AAC/F,SAAA;AACJ,KAAA;AACL,CAAC;AACD,SAAS,MAAM,CAAC,IAAgB,EAAE,KAAU,EAAE,IAAS,EAAE,KAAa,EAAA;;AAElE,IAAA,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,MAAM,CAAC,IAAgB,EAAE,KAAU,EAAA;IACxCA,yBAAiB,CAAC,KAAK,EAAE,CAAC;;IAG1B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7B,QAAA,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,KAAA;AAED,IAAA,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC/BA,yBAAiB,CAAC,GAAG,EAAE,CAAC;AAExB,IAAA,OAAO,GAAG,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,IAAgB,EAAE,GAAqB,EAAA;;IAErD,IAAI,GAAG,KAAK,SAAS,EAAE;AACnB,QAAA,OAAO,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACnC,KAAA;AAAM,SAAA;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;AAC5C,QAAA,OAAO,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACrC,KAAA;AACL,CAAC;AACD,SAAS,aAAa,CAAC,IAAgB,EAAE,GAAoB,EAAA;AACzD,IAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;;AAExB,QAAA,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,YAAY,CAAC,CAAC,CAAC,CAAC;AAC/C,KAAA;IAED,OAAO,GAAG,IAAI,CAAC;;AAEf,IAAA,IAAI,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAA,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;IAElB,OAAO,GAAG,KAAK,CAAC;AACpB,CAAC;AAOK,SAAU,UAAU,CAAI,GAAM,EAAA;AAChC,IAAA,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;;AAEhC,IAAA,IAAI,MAAM,EAAE;AACR,QAAA,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAS,CAAC;AACjC,KAAA;AAED,IAAA,MAAM,GAAG,GAAG;AACR,QAAA,CAAC,EAAE,GAAiB;AACpB,QAAA,WAAW,EAAE,MAAM;QACnB,WAAW,EAAE,IAAI,GAAG,EAAE;QACtB,OAAO,EAAE,IAAI,GAAG,EAAE;QAClB,WAAW,EAAE,IAAI,GAAG,EAAE;KACJ,CAAC;AAEvB,IAAA,MAAM,IAAI,GAAe;AACrB,QAAA,IAAI,EAAE,GAAG;AACT,QAAA,IAAI,EAAE,GAAG;AACT,QAAA,UAAU,EAAE,EAAE;AACd,QAAA,GAAG,EAAE,GAAG;KACX,CAAC;IAEF,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAErC,IAAA,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAEzB,IAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;;AAG7B,IAAA,OAAO,KAAK,CAAC;AACjB;;;;;;;;;;;;;;;;;;;;;"}
|