aontu 0.61.0 → 0.63.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/dist/agentsmd.d.ts +1 -0
- package/dist/agentsmd.js +7 -28
- package/dist/agentsmd.js.map +1 -1
- package/dist/alias.js.map +1 -1
- package/dist/allow.d.ts +23 -0
- package/dist/allow.js +138 -0
- package/dist/allow.js.map +1 -0
- package/dist/aontu.d.ts +4 -2
- package/dist/aontu.js +4 -80
- package/dist/aontu.js.map +1 -1
- package/dist/aontumodel.d.ts +4 -0
- package/dist/aontumodel.js +33 -0
- package/dist/aontumodel.js.map +1 -0
- package/dist/cli.d.ts +10 -1
- package/dist/cli.js +877 -479
- package/dist/cli.js.map +1 -1
- package/dist/ctx.js +0 -48
- package/dist/ctx.js.map +1 -1
- package/dist/diff.js +0 -32
- package/dist/diff.js.map +1 -1
- package/dist/err.js +0 -40
- package/dist/err.js.map +1 -1
- package/dist/escape.js +0 -45
- package/dist/escape.js.map +1 -1
- package/dist/exactjson.d.ts +0 -35
- package/dist/exactjson.js +0 -131
- package/dist/exactjson.js.map +1 -1
- package/dist/format.js +55 -189
- package/dist/format.js.map +1 -1
- package/dist/grammar.d.ts +9 -0
- package/dist/grammar.js +54 -0
- package/dist/grammar.js.map +1 -0
- package/dist/graph.js +0 -26
- package/dist/graph.js.map +1 -1
- package/dist/hcanon.js +0 -82
- package/dist/hcanon.js.map +1 -1
- package/dist/helpdoc.d.ts +16 -0
- package/dist/helpdoc.js +59 -0
- package/dist/helpdoc.js.map +1 -0
- package/dist/hints.d.ts +0 -6
- package/dist/hints.js +59 -47
- package/dist/hints.js.map +1 -1
- package/dist/jsonschema.js +0 -114
- package/dist/jsonschema.js.map +1 -1
- package/dist/keyorder.d.ts +0 -7
- package/dist/keyorder.js +0 -41
- package/dist/keyorder.js.map +1 -1
- package/dist/lang.js +32 -877
- package/dist/lang.js.map +1 -1
- package/dist/lower.d.ts +3 -0
- package/dist/lower.js +14 -61
- package/dist/lower.js.map +1 -1
- package/dist/lsp-server.js +0 -16
- package/dist/lsp-server.js.map +1 -1
- package/dist/lsp.d.ts +1 -1
- package/dist/lsp.js +12 -159
- package/dist/lsp.js.map +1 -1
- package/dist/mcp-server.js +0 -26
- package/dist/mcp-server.js.map +1 -1
- package/dist/mcp.js +0 -113
- package/dist/mcp.js.map +1 -1
- package/dist/mod-tool.js +0 -130
- package/dist/mod-tool.js.map +1 -1
- package/dist/mod.js +0 -162
- package/dist/mod.js.map +1 -1
- package/dist/patch.js +0 -217
- package/dist/patch.js.map +1 -1
- package/dist/provenance.js +0 -140
- package/dist/provenance.js.map +1 -1
- package/dist/query.js +0 -75
- package/dist/query.js.map +1 -1
- package/dist/reach.js +0 -43
- package/dist/reach.js.map +1 -1
- package/dist/relation.d.ts +2 -0
- package/dist/relation.js +3 -58
- package/dist/relation.js.map +1 -1
- package/dist/render.js +33 -143
- package/dist/render.js.map +1 -1
- package/dist/report-sarif.d.ts +0 -11
- package/dist/report-sarif.js +0 -28
- package/dist/report-sarif.js.map +1 -1
- package/dist/sig.js +0 -35
- package/dist/sig.js.map +1 -1
- package/dist/sigdecl.js +1 -1
- package/dist/sigdecl.js.map +1 -1
- package/dist/siggate.js +0 -4
- package/dist/siggate.js.map +1 -1
- package/dist/site.js +3 -29
- package/dist/site.js.map +1 -1
- package/dist/subsume.d.ts +0 -10
- package/dist/subsume.js +0 -137
- package/dist/subsume.js.map +1 -1
- package/dist/template.d.ts +2 -1
- package/dist/template.js +58 -138
- package/dist/template.js.map +1 -1
- package/dist/trim.js +0 -41
- package/dist/trim.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/type.js.map +1 -1
- package/dist/unify.js +12 -242
- package/dist/unify.js.map +1 -1
- package/dist/utility.js +0 -22
- package/dist/utility.js.map +1 -1
- package/dist/val/AbnfFuncVal.d.ts +18 -0
- package/dist/val/AbnfFuncVal.js +132 -0
- package/dist/val/AbnfFuncVal.js.map +1 -0
- package/dist/val/AbsentVal.d.ts +11 -0
- package/dist/val/AbsentVal.js +30 -0
- package/dist/val/AbsentVal.js.map +1 -0
- package/dist/val/AggFuncVal.d.ts +10 -1
- package/dist/val/AggFuncVal.js +104 -116
- package/dist/val/AggFuncVal.js.map +1 -1
- package/dist/val/ArithFuncVal.js +0 -12
- package/dist/val/ArithFuncVal.js.map +1 -1
- package/dist/val/BagVal.js +1 -78
- package/dist/val/BagVal.js.map +1 -1
- package/dist/val/BigDecimalVal.js +0 -16
- package/dist/val/BigDecimalVal.js.map +1 -1
- package/dist/val/BigIntegerVal.js +0 -16
- package/dist/val/BigIntegerVal.js.map +1 -1
- package/dist/val/CloseFuncVal.js +0 -9
- package/dist/val/CloseFuncVal.js.map +1 -1
- package/dist/val/CmpFuncVal.d.ts +20 -0
- package/dist/val/CmpFuncVal.js +188 -0
- package/dist/val/CmpFuncVal.js.map +1 -0
- package/dist/val/ConjunctVal.js +0 -29
- package/dist/val/ConjunctVal.js.map +1 -1
- package/dist/val/ConstraintVal.js +0 -500
- package/dist/val/ConstraintVal.js.map +1 -1
- package/dist/val/ContainerKindVal.js +0 -2
- package/dist/val/ContainerKindVal.js.map +1 -1
- package/dist/val/CopyFuncVal.js +0 -3
- package/dist/val/CopyFuncVal.js.map +1 -1
- package/dist/val/Decimal.js +0 -179
- package/dist/val/Decimal.js.map +1 -1
- package/dist/val/DeprecateFuncVal.js.map +1 -1
- package/dist/val/DisjunctVal.js +0 -152
- package/dist/val/DisjunctVal.js.map +1 -1
- package/dist/val/EachFuncVal.d.ts +1 -2
- package/dist/val/EachFuncVal.js +12 -29
- package/dist/val/EachFuncVal.js.map +1 -1
- package/dist/val/EmitFuncVal.d.ts +1 -1
- package/dist/val/EmitFuncVal.js +6 -119
- package/dist/val/EmitFuncVal.js.map +1 -1
- package/dist/val/ExpectVal.js +0 -62
- package/dist/val/ExpectVal.js.map +1 -1
- package/dist/val/FilterFuncVal.js +0 -25
- package/dist/val/FilterFuncVal.js.map +1 -1
- package/dist/val/FuncBaseVal.d.ts +1 -0
- package/dist/val/FuncBaseVal.js +7 -127
- package/dist/val/FuncBaseVal.js.map +1 -1
- package/dist/val/GraphAtomVal.js +0 -15
- package/dist/val/GraphAtomVal.js.map +1 -1
- package/dist/val/HideFuncVal.js +0 -13
- package/dist/val/HideFuncVal.js.map +1 -1
- package/dist/val/IntegerVal.js +0 -61
- package/dist/val/IntegerVal.js.map +1 -1
- package/dist/val/JunctionVal.js +0 -20
- package/dist/val/JunctionVal.js.map +1 -1
- package/dist/val/KeyFuncVal.js +0 -46
- package/dist/val/KeyFuncVal.js.map +1 -1
- package/dist/val/ListVal.js +0 -57
- package/dist/val/ListVal.js.map +1 -1
- package/dist/val/LowerFuncVal.js +11 -6
- package/dist/val/LowerFuncVal.js.map +1 -1
- package/dist/val/MapVal.js +0 -151
- package/dist/val/MapVal.js.map +1 -1
- package/dist/val/MatchFuncVal.js +0 -27
- package/dist/val/MatchFuncVal.js.map +1 -1
- package/dist/val/{FormFuncVal.d.ts → MaybeFuncVal.d.ts} +5 -5
- package/dist/val/MaybeFuncVal.js +50 -0
- package/dist/val/MaybeFuncVal.js.map +1 -0
- package/dist/val/MoveFuncVal.js +0 -18
- package/dist/val/MoveFuncVal.js.map +1 -1
- package/dist/val/NilVal.js +2 -36
- package/dist/val/NilVal.js.map +1 -1
- package/dist/val/NomFuncVal.d.ts +12 -0
- package/dist/val/NomFuncVal.js +153 -0
- package/dist/val/NomFuncVal.js.map +1 -0
- package/dist/val/NumberVal.js +0 -15
- package/dist/val/NumberVal.js.map +1 -1
- package/dist/val/OpBaseVal.d.ts +1 -0
- package/dist/val/OpBaseVal.js +3 -15
- package/dist/val/OpBaseVal.js.map +1 -1
- package/dist/val/PackFuncVal.js +0 -34
- package/dist/val/PackFuncVal.js.map +1 -1
- package/dist/val/PathFuncVal.js +0 -6
- package/dist/val/PathFuncVal.js.map +1 -1
- package/dist/val/PathVal.js +0 -41
- package/dist/val/PathVal.js.map +1 -1
- package/dist/val/PlaceVal.js +0 -25
- package/dist/val/PlaceVal.js.map +1 -1
- package/dist/val/PlusOpVal.d.ts +1 -7
- package/dist/val/PlusOpVal.js +13 -74
- package/dist/val/PlusOpVal.js.map +1 -1
- package/dist/val/PrefFuncVal.js +0 -1
- package/dist/val/PrefFuncVal.js.map +1 -1
- package/dist/val/PrefVal.js +0 -167
- package/dist/val/PrefVal.js.map +1 -1
- package/dist/val/RecurseVal.js +0 -55
- package/dist/val/RecurseVal.js.map +1 -1
- package/dist/val/RefVal.js +0 -282
- package/dist/val/RefVal.js.map +1 -1
- package/dist/val/ReferFuncVal.js +0 -232
- package/dist/val/ReferFuncVal.js.map +1 -1
- package/dist/val/ScalarKindVal.js +0 -49
- package/dist/val/ScalarKindVal.js.map +1 -1
- package/dist/val/ScalarVal.js +0 -11
- package/dist/val/ScalarVal.js.map +1 -1
- package/dist/val/StrFuncVal.js +0 -18
- package/dist/val/StrFuncVal.js.map +1 -1
- package/dist/val/SuperFuncVal.js +0 -32
- package/dist/val/SuperFuncVal.js.map +1 -1
- package/dist/val/TopVal.js +0 -1
- package/dist/val/TopVal.js.map +1 -1
- package/dist/val/TranslateFuncVal.d.ts +12 -0
- package/dist/val/TranslateFuncVal.js +99 -0
- package/dist/val/TranslateFuncVal.js.map +1 -0
- package/dist/val/UpperFuncVal.js +11 -6
- package/dist/val/UpperFuncVal.js.map +1 -1
- package/dist/val/Val.d.ts +1 -0
- package/dist/val/Val.js +2 -133
- package/dist/val/Val.js.map +1 -1
- package/dist/val/VarVal.js +0 -12
- package/dist/val/VarVal.js.map +1 -1
- package/dist/val/arith.js +0 -37
- package/dist/val/arith.js.map +1 -1
- package/dist/val/caserange.d.ts +3 -0
- package/dist/val/caserange.js +49 -0
- package/dist/val/caserange.js.map +1 -0
- package/dist/val/members.js +0 -6
- package/dist/val/members.js.map +1 -1
- package/dist/val/numcmp.js +0 -11
- package/dist/val/numcmp.js.map +1 -1
- package/dist/val/numkind.js +0 -145
- package/dist/val/numkind.js.map +1 -1
- package/dist/val/valutil.js +0 -16
- package/dist/val/valutil.js.map +1 -1
- package/dist/vet.d.ts +12 -0
- package/dist/vet.js +159 -412
- package/dist/vet.js.map +1 -1
- package/dist/view.js +0 -414
- package/dist/view.js.map +1 -1
- package/dist/walk.js +0 -41
- package/dist/walk.js.map +1 -1
- package/grammar/aontu.abnf +9 -7
- package/grammar/aontu.gbnf +5 -5
- package/grammar/aontu.lark +5 -5
- package/grammar/aontu.tmLanguage.json +1 -1
- package/package.json +4 -2
- package/skill/SKILL.md +8 -0
- package/skill/init/check.sh +28 -0
- package/skill/init/data.aon +12 -0
- package/skill/init/model.aon +19 -0
- package/skill/tasks.md +151 -0
- package/src/agentsmd.ts +8 -32
- package/src/alias.ts +0 -39
- package/src/allow.ts +221 -0
- package/src/aontu.ts +10 -108
- package/src/aontumodel.ts +32 -0
- package/src/cli.ts +1009 -540
- package/src/ctx.ts +0 -103
- package/src/diff.ts +0 -40
- package/src/err.ts +0 -40
- package/src/escape.ts +0 -46
- package/src/exactjson.ts +0 -131
- package/src/format.ts +63 -234
- package/src/grammar.ts +72 -0
- package/src/graph.ts +0 -61
- package/src/hcanon.ts +0 -82
- package/src/helpdoc.ts +77 -0
- package/src/hints.ts +72 -49
- package/src/jsonschema.ts +0 -123
- package/src/keyorder.ts +0 -42
- package/src/lang.ts +39 -895
- package/src/lower.ts +15 -65
- package/src/lsp-server.ts +0 -16
- package/src/lsp.ts +12 -180
- package/src/mcp-server.ts +0 -31
- package/src/mcp.ts +0 -130
- package/src/mod-tool.ts +0 -158
- package/src/mod.ts +0 -178
- package/src/patch.ts +0 -232
- package/src/provenance.ts +0 -183
- package/src/query.ts +0 -84
- package/src/reach.ts +0 -53
- package/src/relation.ts +7 -71
- package/src/render.ts +33 -180
- package/src/report-sarif.ts +0 -48
- package/src/sig.ts +0 -35
- package/src/sigdecl.ts +1 -1
- package/src/siggate.ts +0 -30
- package/src/site.ts +3 -29
- package/src/subsume.ts +1 -161
- package/src/template.ts +69 -140
- package/src/trim.ts +0 -53
- package/src/type.ts +2 -45
- package/src/unify.ts +13 -251
- package/src/utility.ts +0 -31
- package/src/val/AbnfFuncVal.ts +181 -0
- package/src/val/AbsentVal.ts +54 -0
- package/src/val/AggFuncVal.ts +152 -188
- package/src/val/ArithFuncVal.ts +0 -20
- package/src/val/BagVal.ts +1 -78
- package/src/val/BigDecimalVal.ts +0 -16
- package/src/val/BigIntegerVal.ts +0 -16
- package/src/val/CloseFuncVal.ts +0 -9
- package/src/val/CmpFuncVal.ts +249 -0
- package/src/val/ConjunctVal.ts +0 -33
- package/src/val/ConstraintVal.ts +2 -537
- package/src/val/ContainerKindVal.ts +0 -18
- package/src/val/CopyFuncVal.ts +0 -5
- package/src/val/Decimal.ts +1 -185
- package/src/val/DeprecateFuncVal.ts +0 -10
- package/src/val/DisjunctVal.ts +0 -157
- package/src/val/EachFuncVal.ts +12 -53
- package/src/val/EmitFuncVal.ts +8 -208
- package/src/val/ExpectVal.ts +0 -62
- package/src/val/FilterFuncVal.ts +0 -55
- package/src/val/FuncBaseVal.ts +9 -130
- package/src/val/GraphAtomVal.ts +0 -42
- package/src/val/HideFuncVal.ts +0 -15
- package/src/val/IntegerVal.ts +0 -61
- package/src/val/JunctionVal.ts +0 -20
- package/src/val/KeyFuncVal.ts +0 -48
- package/src/val/ListVal.ts +0 -59
- package/src/val/LowerFuncVal.ts +12 -7
- package/src/val/MapVal.ts +0 -151
- package/src/val/MatchFuncVal.ts +0 -59
- package/src/val/MaybeFuncVal.ts +86 -0
- package/src/val/MoveFuncVal.ts +0 -20
- package/src/val/NilVal.ts +2 -36
- package/src/val/NomFuncVal.ts +200 -0
- package/src/val/NumberVal.ts +0 -16
- package/src/val/OpBaseVal.ts +4 -17
- package/src/val/PackFuncVal.ts +0 -63
- package/src/val/PathFuncVal.ts +0 -32
- package/src/val/PathVal.ts +0 -66
- package/src/val/PlaceVal.ts +0 -45
- package/src/val/PlusOpVal.ts +18 -75
- package/src/val/PrefFuncVal.ts +0 -1
- package/src/val/PrefVal.ts +0 -179
- package/src/val/RecurseVal.ts +0 -81
- package/src/val/RefVal.ts +1 -285
- package/src/val/ReferFuncVal.ts +0 -255
- package/src/val/ScalarKindVal.ts +0 -50
- package/src/val/ScalarVal.ts +0 -12
- package/src/val/StrFuncVal.ts +0 -44
- package/src/val/SuperFuncVal.ts +0 -42
- package/src/val/TopVal.ts +0 -1
- package/src/val/TranslateFuncVal.ts +132 -0
- package/src/val/UpperFuncVal.ts +12 -7
- package/src/val/Val.ts +3 -192
- package/src/val/VarVal.ts +0 -15
- package/src/val/arith.ts +0 -92
- package/src/val/caserange.ts +53 -0
- package/src/val/members.ts +0 -23
- package/src/val/numcmp.ts +1 -27
- package/src/val/numkind.ts +0 -149
- package/src/val/valutil.ts +0 -16
- package/src/vet.ts +209 -504
- package/src/view.ts +0 -507
- package/src/walk.ts +0 -41
- package/dist/std.d.ts +0 -3
- package/dist/std.js +0 -637
- package/dist/std.js.map +0 -1
- package/dist/val/FormFuncVal.js +0 -55
- package/dist/val/FormFuncVal.js.map +0 -1
- package/src/std.ts +0 -648
- package/src/val/FormFuncVal.ts +0 -119
package/dist/val/PrefVal.js
CHANGED
|
@@ -11,11 +11,6 @@ const top_1 = require("./top");
|
|
|
11
11
|
const FeatureVal_1 = require("./FeatureVal");
|
|
12
12
|
const FuncBaseVal_1 = require("./FuncBaseVal");
|
|
13
13
|
const SuperFuncVal_1 = require("./SuperFuncVal");
|
|
14
|
-
// The innermost preferred value under every pref layer: the value a
|
|
15
|
-
// preference of ANY rank ultimately defends, and the one generation
|
|
16
|
-
// emits for it. Shared by the disjunct admission gate (DisjunctVal),
|
|
17
|
-
// the defaulted-scrutinee rule (MatchFuncVal) and the effective-default
|
|
18
|
-
// walk (subsume.ts) so "the default's value" cannot mean three things.
|
|
19
14
|
function prefInnerPeg(v) {
|
|
20
15
|
let out = v;
|
|
21
16
|
while (true === out?.isPref) {
|
|
@@ -23,85 +18,19 @@ function prefInnerPeg(v) {
|
|
|
23
18
|
}
|
|
24
19
|
return out;
|
|
25
20
|
}
|
|
26
|
-
// A CONTAINER DEFAULT IS LEAFWISE (ADR-011 R3,
|
|
27
|
-
// docs/design/DEFAULTS.0.md): `*{p:1}` MEANS `{p: *1}` and `*[1]`
|
|
28
|
-
// means `[*1]`, so there is no such thing as a preference whose
|
|
29
|
-
// preferred value is a bag. Shape is not a value and takes no star --
|
|
30
|
-
// key optionality, closedness and a `&:` spread template ride through
|
|
31
|
-
// untouched; only the values a reader could override are defaulted.
|
|
32
|
-
//
|
|
33
|
-
// This is the rule `pref()` already had (its resolve walked and
|
|
34
|
-
// wrapped every scalar child) and the star prefix did not, so the two
|
|
35
|
-
// spellings of one operator disagreed: `pref({p:1}) & {q:2}` kept the
|
|
36
|
-
// `p` default and `*{p:1} & {q:2}` dropped it. Both spellings and the
|
|
37
|
-
// resolve-time case (`*$.shape`) come through here now, so they
|
|
38
|
-
// cannot drift apart again. Wrapping the non-bag arm rather than
|
|
39
|
-
// walking for scalars also closes the other half of that gap:
|
|
40
|
-
// `pref(integer)` and `pref(min(3))` used to answer the bare value,
|
|
41
|
-
// losing the preference outright.
|
|
42
21
|
class PrefVal extends FeatureVal_1.FeatureVal {
|
|
43
22
|
constructor(spec, ctx) {
|
|
44
23
|
super(spec, ctx);
|
|
45
24
|
this.isPref = true;
|
|
46
25
|
this.isGenable = true;
|
|
47
26
|
this.cjo = 30000;
|
|
48
|
-
// THE GATE AN OVERRIDING PEER MUST PASS IS `superpeg` ITSELF — the
|
|
49
|
-
// preferred value's own KIND, not its family.
|
|
50
|
-
//
|
|
51
|
-
// A preference is a DEFAULT, so a concrete peer replaces it, but only
|
|
52
|
-
// where the peer is the same kind of thing: `*lower(1.1) & a` is a
|
|
53
|
-
// conflict, not an override. The number tower made `integer` and
|
|
54
|
-
// `float` disjoint siblings under `number`, and this gate used to
|
|
55
|
-
// widen to that family — so `*2.2 & 3` worked, and so did
|
|
56
|
-
// `*8080 & 3.5`. Those are ONE rule in two directions; no kind-based
|
|
57
|
-
// gate can keep the first and refuse the second.
|
|
58
|
-
//
|
|
59
|
-
// Refusing both is the choice, because the second is the documented
|
|
60
|
-
// default idiom: `port: *8080 | integer` accepted 3.5 in both ports,
|
|
61
|
-
// silently widening every key written that way from integer to
|
|
62
|
-
// number — the finding §6 of the 2026-08-21 status report calls the
|
|
63
|
-
// most consequential, precisely because docs/skill/examples.md
|
|
64
|
-
// teaches the idiom to agents.
|
|
65
|
-
//
|
|
66
|
-
// What the tightening costs is named rather than hidden: mixing the
|
|
67
|
-
// numeric leaves around a preference is now an error instead of a
|
|
68
|
-
// silent widening. `*1.5 & integer` used to answer `integer` and
|
|
69
|
-
// DISCARD a default that could never apply; it now says so.
|
|
70
27
|
this.rank = 0;
|
|
71
|
-
// this.pref = spec.pref || spec.peg
|
|
72
|
-
// this.superpeg = makeSuper(spec.peg)
|
|
73
28
|
if (spec.peg instanceof PrefVal) {
|
|
74
29
|
this.rank = 1 + spec.peg.rank;
|
|
75
30
|
}
|
|
76
31
|
this.resuper(ctx);
|
|
77
|
-
// console.log('PVC', this.peg.canon, this.superpeg.canon)
|
|
78
32
|
}
|
|
79
|
-
// Recompute the type yardstick and the override gate from the current
|
|
80
|
-
// peg. Called again whenever the peg resolves (e.g. a ref).
|
|
81
|
-
//
|
|
82
|
-
// THE GATE IS super() (ADR-011 R4, docs/design/DEFAULTS.0.md). `*x`
|
|
83
|
-
// is sugar for `*x | super(x)`, so the type an overriding peer must
|
|
84
|
-
// pass is the one the long form spells out loud -- one function, not
|
|
85
|
-
// a second implementation that agrees with it on the common case.
|
|
86
|
-
// Two special cases retired with the switch: a KIND peg gated
|
|
87
|
-
// nothing (`*integer` was overridden by `"s"`) and a CONSTRAINT peg
|
|
88
|
-
// had no gate at all, both written when a kind's superior was top.
|
|
89
|
-
// `super(integer)` is `number`, so `7` still wins and `"s"` refuses.
|
|
90
33
|
resuper(ctx) {
|
|
91
|
-
// THE RANK-UNIFORM MEET (ADR-004). The yardstick is the INNERMOST
|
|
92
|
-
// preferred value's kind, whatever the preference's rank: `**1.5`
|
|
93
|
-
// defends `float` exactly as `*1.5` does. The old rule read the
|
|
94
|
-
// immediate peg, and a rank>=2 peg is itself a PrefVal whose
|
|
95
|
-
// superior is top -- so ANY conjunct overrode a ranked default
|
|
96
|
-
// (`**1.5 & float` dropped the default and died as mapval_no_gen;
|
|
97
|
-
// `**2|integer` met by a bare `integer` lost the default the
|
|
98
|
-
// spelling exists to carry -- use-cases/BUGS.md §3), while the
|
|
99
|
-
// rank-1 spelling of the same document kept it. One rule, every
|
|
100
|
-
// rank. Pinned by test/spec/pref.tsv (pref-rank2-* rows, and the
|
|
101
|
-
// flipped pref-nested-concrete-wins).
|
|
102
|
-
// THE RANK-UNIFORM MEET (ADR-004) is unchanged: the yardstick is
|
|
103
|
-
// the INNERMOST preferred value, whatever the rank, so `**1.5`
|
|
104
|
-
// defends `float` exactly as `*1.5` does.
|
|
105
34
|
let peg = this.peg;
|
|
106
35
|
while (true === peg?.isPref) {
|
|
107
36
|
peg = peg.peg;
|
|
@@ -112,14 +41,6 @@ class PrefVal extends FeatureVal_1.FeatureVal {
|
|
|
112
41
|
this.superpeg = null == this.narrowed ? base
|
|
113
42
|
: (0, unify_1.unite)(ctx, base, this.narrowed, 'pref-narrow/' + this.id);
|
|
114
43
|
}
|
|
115
|
-
// The default, standing but NARROWED: `*integer & 7` is `*7`, which
|
|
116
|
-
// is what the long form answers (`(integer&7) | (number&7)` keeps
|
|
117
|
-
// the star on the arm that survived). The rank rides across -- a
|
|
118
|
-
// ladder rung that narrows is still that rung.
|
|
119
|
-
// The rank is REBUILT as nesting rather than stamped: canon renders
|
|
120
|
-
// one star per layer (`'*' + peg.canon`), so a rank set directly on
|
|
121
|
-
// a single layer would print `*x` for a rank-2 default and the
|
|
122
|
-
// document would no longer round-trip.
|
|
123
44
|
restand(met, ctx) {
|
|
124
45
|
let out = met;
|
|
125
46
|
for (let rI = 0; rI <= this.rank; rI++) {
|
|
@@ -136,27 +57,9 @@ class PrefVal extends FeatureVal_1.FeatureVal {
|
|
|
136
57
|
let why = '';
|
|
137
58
|
if (!this.peg.done) {
|
|
138
59
|
const resolved = (0, unify_1.unite)(te ? ctx.clone({ explain: (0, utility_1.ec)(te, 'RES') }) : ctx, this.peg, (0, top_1.top)(), 'pref/resolve');
|
|
139
|
-
// console.log('PREF-RESOLVED', this.peg.canon, '->', resolved)
|
|
140
60
|
this.peg = resolved;
|
|
141
61
|
this.resuper(ctx);
|
|
142
62
|
}
|
|
143
|
-
// A CONTAINER DEFAULT IS LEAFWISE IN EFFECT (ADR-011 R3), and it
|
|
144
|
-
// gets there through the meet above rather than through a rewrite.
|
|
145
|
-
// `*{p:1}` keeps its written shape -- canon prints `*{"p":1}` and
|
|
146
|
-
// reparses to itself, which a rewrite to `{p:*1}` would break, and
|
|
147
|
-
// an alternative still has a star for a disjunction to choose by.
|
|
148
|
-
// What makes it leafwise is that the two arms decide:
|
|
149
|
-
//
|
|
150
|
-
// `& {q:2}` the preferred value ITSELF admits the peer (maps
|
|
151
|
-
// merge), so the default stands as `*{p:1,q:2}` and
|
|
152
|
-
// `p` survives -- it used to be REPLACED outright.
|
|
153
|
-
// `& {p:2}` the preferred value refuses, so the gate answers:
|
|
154
|
-
// `super({p:1})` is `{p:integer}`, which admits it.
|
|
155
|
-
// `& "s"` both arms are empty, so the whole default is --
|
|
156
|
-
// a string used to override a map default silently.
|
|
157
|
-
//
|
|
158
|
-
// Which is every rule R3 asks for, with no bag ever standing where
|
|
159
|
-
// the author wrote a scalar and no canon that fails to round-trip.
|
|
160
63
|
if (peer instanceof PrefVal) {
|
|
161
64
|
why += 'pref-';
|
|
162
65
|
if (this.id === peer.id) {
|
|
@@ -177,69 +80,17 @@ class PrefVal extends FeatureVal_1.FeatureVal {
|
|
|
177
80
|
why += 'rank-lose';
|
|
178
81
|
}
|
|
179
82
|
else {
|
|
180
|
-
// console.log('PREF-PEER',
|
|
181
|
-
// this.peg.id, this.peg, this.peg.done,
|
|
182
|
-
// peer.peg.id, peer.peg, peer.peg.done,
|
|
183
|
-
// )
|
|
184
83
|
const peg = (0, FuncBaseVal_1.trialUnify)(ctx, prefInnerPeg(this).clone(ctx), prefInnerPeg(peer));
|
|
185
|
-
// TWO DEFAULTS OF EQUAL RANK THAT CANNOT AGREE (ADR-011 R2):
|
|
186
|
-
// the refusal is about the DEFAULTS, not about the values they
|
|
187
|
-
// happen to hold, and its hint names the fix -- rank one of
|
|
188
|
-
// them. Compatible pegs still fold (`*1 & *integer` is `*1`),
|
|
189
|
-
// and identical ones collapse, so only a real disagreement
|
|
190
|
-
// reaches this arm. The three spellings of it -- `*1 & *7`,
|
|
191
|
-
// `(*1|integer) & *7` and `*1|*7` -- used to answer a value
|
|
192
|
-
// conflict, the newcomer, and the newcomer again.
|
|
193
84
|
out = undefined === peg
|
|
194
85
|
? (0, err_1.makeNilErr)(ctx, 'pref_rank_clash', this, peer, 'unify')
|
|
195
86
|
: this.restand(peg, ctx);
|
|
196
|
-
// console.log('PREF-RANK-SAME-OUT', peg, peg.done, out, out.done)
|
|
197
87
|
why += 'rank-same';
|
|
198
88
|
}
|
|
199
89
|
}
|
|
200
90
|
else if (!peer.isTop) {
|
|
201
91
|
why += 'super-';
|
|
202
|
-
// THE MEET IS THE DESUGARING, DISTRIBUTED (ADR-011 R1,
|
|
203
|
-
// docs/design/DEFAULTS.0.md). `*x` stands for `*x | super(x)`,
|
|
204
|
-
// and a peer meets a disjunction arm by arm:
|
|
205
|
-
//
|
|
206
|
-
// (x & peer) | (super(x) & peer)
|
|
207
|
-
//
|
|
208
|
-
// THE FIRST ARM DECIDES. When the preferred value itself still
|
|
209
|
-
// satisfies the peer the default STANDS -- `*1 & integer`,
|
|
210
|
-
// `*8080 & min(1024)`, `**2 & neq(1)`: the peer narrowed the
|
|
211
|
-
// type without ruling the default out, which is the whole point
|
|
212
|
-
// of writing one. Only when that arm is empty does the second
|
|
213
|
-
// answer, and that is the override. When BOTH are empty nothing
|
|
214
|
-
// remains of the disjunction the star stands for -- `empty`,
|
|
215
|
-
// the same refusal the written-out long form gives.
|
|
216
|
-
//
|
|
217
|
-
// The old rule asked instead whether the peer resolved to
|
|
218
|
-
// exactly `super(x)`, so any narrowing at all counted as an
|
|
219
|
-
// override: `*1 & integer` stood (the peer WAS the gate) but
|
|
220
|
-
// `*8080 & min(1024)` silently dropped the default and answered
|
|
221
|
-
// the bare constraint, and a rank ladder lost its weaker arm to
|
|
222
|
-
// the same rule the moment anything narrowed it.
|
|
223
|
-
//
|
|
224
|
-
// Trialled against a CLONE, on the innermost value (the
|
|
225
|
-
// rank-uniform meet): the preferred value must stay pristine for
|
|
226
|
-
// the arm that stands, and a failed trial must not leave its
|
|
227
|
-
// errors on the context -- the DisjunctVal admission gate's own
|
|
228
|
-
// precedent, and its mechanism.
|
|
229
92
|
const met = (0, FuncBaseVal_1.trialUnify)(ctx, prefInnerPeg(this).clone(ctx), peer);
|
|
230
93
|
if (undefined !== met) {
|
|
231
|
-
// THE SECOND ARM IS CARRIED FORWARD, not discarded. It is the
|
|
232
|
-
// override space -- everything the peer would still admit
|
|
233
|
-
// INSTEAD of the default -- and meeting a peer narrows it just
|
|
234
|
-
// as it narrows the default: two successive meets compose to
|
|
235
|
-
// `(x & p1 & p2) | (super(x) & p1 & p2)`, which is the
|
|
236
|
-
// distribution over both. Dropping it let a constraint that
|
|
237
|
-
// arrived beside a default vanish: `r:*2` with `r:max(20)`
|
|
238
|
-
// stood as a bare `*2`, and `r:40` then overrode it through a
|
|
239
|
-
// gate that no longer remembered the bound.
|
|
240
|
-
//
|
|
241
|
-
// It cannot fail: the first arm succeeded, so `x & peer` has a
|
|
242
|
-
// value, and that value satisfies `super(x)` and `peer` both.
|
|
243
94
|
const gate = (0, unify_1.unite)(te ? ctx.clone({ explain: (0, utility_1.ec)(te, 'GATE') }) : ctx, this.superpeg.clone(ctx), peer, 'pref-gate/' + this.id);
|
|
244
95
|
// Unchanged on both counts is the SAME preference, returned as
|
|
245
96
|
// itself: minting a new one every pass would keep the fixpoint
|
|
@@ -276,7 +127,6 @@ class PrefVal extends FeatureVal_1.FeatureVal {
|
|
|
276
127
|
// Every pref result is DONE, including a stuck conjunct from the
|
|
277
128
|
// superior-unify (mirrored by PrefVal.Unify in go/pref.go).
|
|
278
129
|
out.dc = type_1.DONE;
|
|
279
|
-
// console.log('PREFVAL-OUT', why, this.canon, peer.canon, '->', out.canon, out.done)
|
|
280
130
|
ctx.explain && (0, utility_1.explainClose)(te, out);
|
|
281
131
|
return out;
|
|
282
132
|
}
|
|
@@ -290,27 +140,10 @@ class PrefVal extends FeatureVal_1.FeatureVal {
|
|
|
290
140
|
}
|
|
291
141
|
clone(ctx, spec) {
|
|
292
142
|
let out = super.clone(ctx, spec);
|
|
293
|
-
// THE NARROWED OVERRIDE SPACE TRAVELS WITH THE COPY (ADR-011 R1).
|
|
294
|
-
// A default a meet has pinned stays pinned through a reference:
|
|
295
|
-
// without this, `T:{e:***false & false}` copied by `f:$.T` handed
|
|
296
|
-
// back a default whose gate had widened again to `boolean`, and
|
|
297
|
-
// `f:{e:true}` overrode a value the author had pinned. The Go
|
|
298
|
-
// twin carries the same two fields explicitly (clone.go).
|
|
299
143
|
if (null != this.narrowed) {
|
|
300
144
|
out.narrowed = this.narrowed;
|
|
301
145
|
out.superpeg = this.superpeg;
|
|
302
146
|
}
|
|
303
|
-
// THE PER-DESTINATION INSTANTIATION RULE (ADR-005). The default
|
|
304
|
-
// clone shares the preferred value (`peg: this.peg` in Val.clone)
|
|
305
|
-
// — a cloned pref spread template resolves its inner value at the
|
|
306
|
-
// template's own location, pinned behaviour. But a template
|
|
307
|
-
// INSTANCE must own it: with the peg shared, a rank-2 default
|
|
308
|
-
// (`**key(1) | string`) in a pack template resolved its one
|
|
309
|
-
// shared inner key() at the first destination and every child got
|
|
310
|
-
// the first child's key (use-cases/BUGS.md §9 — rank 1 escaped
|
|
311
|
-
// only because its unify builds a fresh PrefVal per meet). The
|
|
312
|
-
// superpeg yardstick from the shared peg still holds: the clone's
|
|
313
|
-
// innermost value is the same kind.
|
|
314
147
|
if (true === spec?.dup && true === this.peg?.isVal) {
|
|
315
148
|
out.peg = this.peg.clone(ctx, { dup: true });
|
|
316
149
|
}
|
package/dist/val/PrefVal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PrefVal.js","sourceRoot":"","sources":["../../src/val/PrefVal.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;
|
|
1
|
+
{"version":3,"file":"PrefVal.js","sourceRoot":"","sources":["../../src/val/PrefVal.ts"],"names":[],"mappings":"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"}
|
package/dist/val/RecurseVal.js
CHANGED
|
@@ -30,21 +30,12 @@ class RecurseVal extends FeatureVal_1.FeatureVal {
|
|
|
30
30
|
out.xc = this.xc;
|
|
31
31
|
return out;
|
|
32
32
|
}
|
|
33
|
-
// The schema body the target names, from the ROOT: the fixpoint is
|
|
34
|
-
// over the finished definition, and the definition's own residual
|
|
35
|
-
// keeps it finite. When the root does not contain the target -- the
|
|
36
|
-
// residual was LIFTED out of its defining tree, as vet's anchored
|
|
37
|
-
// meet does -- fall back to ctx._fixroot, the settled tree the
|
|
38
|
-
// lifter kept for exactly this walk.
|
|
39
33
|
body(ctx) {
|
|
40
34
|
return walkTarget(ctx.root, this.target)
|
|
41
35
|
?? walkTarget(ctx._fixroot, this.target);
|
|
42
36
|
}
|
|
43
37
|
unify(peer, ctx) {
|
|
44
38
|
const p = peer;
|
|
45
|
-
// The self-drive: nothing to advance -- the residual waits for
|
|
46
|
-
// structure. (A null/nil peer never arrives; unite's ladder
|
|
47
|
-
// absorbs both.)
|
|
48
39
|
if (null == peer || true === p.isTop) {
|
|
49
40
|
return this;
|
|
50
41
|
}
|
|
@@ -54,9 +45,6 @@ class RecurseVal extends FeatureVal_1.FeatureVal {
|
|
|
54
45
|
&& this.target.every((s, i) => s === p.target[i])) {
|
|
55
46
|
return this;
|
|
56
47
|
}
|
|
57
|
-
// Different targets -- mutual recursion meeting -- are BOTH
|
|
58
|
-
// held: each expands as data arrives, through the fold that
|
|
59
|
-
// keeps a conjunct's members separate.
|
|
60
48
|
const out = new ConjunctVal_1.ConjunctVal({ peg: [this, peer] }, ctx);
|
|
61
49
|
(0, utility_1.propagateMarks)(this, out);
|
|
62
50
|
out.path = this.path;
|
|
@@ -76,25 +64,6 @@ class RecurseVal extends FeatureVal_1.FeatureVal {
|
|
|
76
64
|
out.path = this.path;
|
|
77
65
|
return out;
|
|
78
66
|
}
|
|
79
|
-
// ADR-005's clone discipline: the expansion is a per-destination
|
|
80
|
-
// instantiation, so the definition itself is never written
|
|
81
|
-
// into. The clone's type/hide marks are CLEARED at every depth,
|
|
82
|
-
// exactly as a plain reference copy clears them (concreteFlow's
|
|
83
|
-
// rule): the schema is hidden, the instances it expands into
|
|
84
|
-
// are the output.
|
|
85
|
-
// The clone is REBASED to the DRIVE path explicitly (spec.path;
|
|
86
|
-
// the Go twin passes cp(r.path), whose stored paths its clone
|
|
87
|
-
// arms keep clean): the default rebase slices the definition's
|
|
88
|
-
// path by the destination's length, which leaks definition
|
|
89
|
-
// segments into instance paths whenever the destination is
|
|
90
|
-
// shallower -- a residual carried inside a copied definition
|
|
91
|
-
// body (`chain: $.spec.Step` inside Policy, copied to a slot
|
|
92
|
-
// shallower than the definition) reported
|
|
93
|
-
// `$.payments_policy.Policy.chain.then.approver` for the
|
|
94
|
-
// finding Go placed at `$.payments_policy.chain.then.approver`.
|
|
95
|
-
// The drive path is also right under vet's anchored meet, which
|
|
96
|
-
// drives AT the anchor's own path (see vet.ts), so anchored
|
|
97
|
-
// findings land in the schema's namespace in both ports.
|
|
98
67
|
const level = body.clone(ctx, {
|
|
99
68
|
dup: true, path: [...ctx.path],
|
|
100
69
|
});
|
|
@@ -117,9 +86,6 @@ class RecurseVal extends FeatureVal_1.FeatureVal {
|
|
|
117
86
|
return '$.' + this.target.join('.');
|
|
118
87
|
}
|
|
119
88
|
gen(ctx) {
|
|
120
|
-
// An unexpanded residual in a demanded position refuses;
|
|
121
|
-
// guardedness is emergent -- under an optional key the bag's
|
|
122
|
-
// isolated context swallows this and drops the key.
|
|
123
89
|
(0, err_1.makeNilErr)(ctx, 'recursion_unexpanded', this, undefined, 'recurse', { target: '$.' + this.target.join('.') });
|
|
124
90
|
return undefined;
|
|
125
91
|
}
|
|
@@ -144,13 +110,6 @@ function bumpRecurse(v, xc) {
|
|
|
144
110
|
v.xc = Math.max(v.xc, xc);
|
|
145
111
|
return;
|
|
146
112
|
}
|
|
147
|
-
// A RAW REFERENCE TO A RECURSIVE TARGET IS THE RECURSION, minted or
|
|
148
|
-
// not -- the same reading containsRecurseOf already takes, and the
|
|
149
|
-
// reason bound 2 was inert. A freshly cloned level holds the
|
|
150
|
-
// definition's references UNRESOLVED, so this walk found no
|
|
151
|
-
// residual to stamp and `xc` read 0 at every expansion, in the
|
|
152
|
-
// healthy form too. The seed rides on the reference and the
|
|
153
|
-
// residual minted from it starts there (ts/src/val/RefVal.ts).
|
|
154
113
|
if (true === v.isRef) {
|
|
155
114
|
v.rxc = Math.max(v.rxc ?? 0, xc);
|
|
156
115
|
return;
|
|
@@ -175,12 +134,6 @@ function bumpRecurse(v, xc) {
|
|
|
175
134
|
bumpRecurse(v.spread.cj, xc);
|
|
176
135
|
}
|
|
177
136
|
}
|
|
178
|
-
// containsRecurseOf answers whether a definition holds a residual of
|
|
179
|
-
// the given target -- i.e. the definition is (transitively) the
|
|
180
|
-
// fixpoint that target names. A reference RESOLVING to such a
|
|
181
|
-
// definition must itself answer the residual: cloned instead, every
|
|
182
|
-
// reparse of a canon unrolled the schema one more level and canon
|
|
183
|
-
// never converged.
|
|
184
137
|
function containsRecurseOf(v, target, depth) {
|
|
185
138
|
const d = depth ?? 0;
|
|
186
139
|
if (null == v || true !== v.isVal || 8 < d) {
|
|
@@ -190,14 +143,6 @@ function containsRecurseOf(v, target, depth) {
|
|
|
190
143
|
return v.target.length === target.length
|
|
191
144
|
&& v.target.every((s, i) => s === target[i]);
|
|
192
145
|
}
|
|
193
|
-
// A RAW REFERENCE to the target IS the recursion, minted or not:
|
|
194
|
-
// the answer must not depend on whether the definition's own
|
|
195
|
-
// prefix position has been visited yet. Without this arm the
|
|
196
|
-
// answer was ORDER-DEPENDENT -- reparsing a generated canon puts
|
|
197
|
-
// the instance before the definition, its trailing `$.spec.Step`
|
|
198
|
-
// leaves resolved before `Step.then` had minted, and each resolve
|
|
199
|
-
// cloned one more unrolled level until the unify depth guard
|
|
200
|
-
// (unify_cycle) killed the document.
|
|
201
146
|
if (true === v.isRef && Array.isArray(v.peg)) {
|
|
202
147
|
if (v.peg.length === target.length
|
|
203
148
|
&& v.peg.every((s, i) => s === target[i])) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecurseVal.js","sourceRoot":"","sources":["../../src/val/RecurseVal.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;
|
|
1
|
+
{"version":3,"file":"RecurseVal.js","sourceRoot":"","sources":["../../src/val/RecurseVal.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;QAoNlD,WAAW;QACX,iBAAiB;AA7MnB,kCAEgB;AAMhB,gCAAmC;AAEnC,6CAAyC;AACzC,+CAA2C;AAC3C,oCAAgC;AAChC,wCAAiD;AAGjD,MAAM,UAAW,SAAQ,uBAAU;IAcjC,YAAY,IAAa,EAAE,GAAkB;QAC3C,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAdlB,cAAS,GAAG,IAAI,CAAA;QAChB,cAAS,GAAG,IAAI,CAAA;QAChB,oEAAoE;QACpE,oEAAoE;QACpE,QAAG,GAAG,KAAK,CAAA;QAWT,IAAI,CAAC,MAAM,GAAI,IAAY,CAAC,MAAM,IAAI,EAAE,CAAA;QACxC,IAAI,CAAC,EAAE,GAAI,IAAY,CAAC,EAAE,IAAI,CAAC,CAAA;QAC/B,kEAAkE;QAClE,0DAA0D;QAC1D,IAAI,CAAC,EAAE,GAAG,WAAI,CAAA;IAChB,CAAC;IAED,KAAK,CAAC,GAAiB,EAAE,IAAc;QACrC,MAAM,GAAG,GAAQ,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACvC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QACxB,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAA;QAChB,OAAO,GAAG,CAAA;IACZ,CAAC;IAEO,IAAI,CAAC,GAAiB;QAC5B,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;eACnC,UAAU,CAAE,GAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACrD,CAAC;IAED,KAAK,CAAC,IAAS,EAAE,GAAiB;QAChC,MAAM,CAAC,GAAQ,IAAI,CAAA;QAEnB,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;YACrC,OAAO,IAAI,CAAA;QACb,CAAC;QAED,2CAA2C;QAC3C,IAAI,IAAI,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM;mBACrC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpD,OAAO,IAAI,CAAA;YACb,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,yBAAW,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;YACvD,IAAA,wBAAc,EAAC,IAAI,EAAE,GAAG,CAAC,CAAA;YACzB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;YACpB,OAAO,GAAG,CAAA;QACZ,CAAC;QAED,mDAAmD;QACnD,IAAI,IAAI,KAAK,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,MAAM,IAAI,IAAI,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;YACjE,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;gBAChC,OAAO,IAAA,gBAAU,EAAC,GAAG,EAAE,kBAAkB,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAC9D,EAAE,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAC7C,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC3B,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;gBACvB,6DAA6D;gBAC7D,0DAA0D;gBAC1D,MAAM,GAAG,GAAG,IAAI,yBAAW,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;gBACvD,IAAA,wBAAc,EAAC,IAAI,EAAE,GAAG,CAAC,CAAA;gBACzB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;gBACpB,OAAO,GAAG,CAAA;YACZ,CAAC;YACD,MAAM,KAAK,GAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;gBACjC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;aACxB,CAAC,CAAA;YACT,IAAA,cAAI,EAAC,KAAK,EAAE,CAAC,IAAiC,EAAE,CAAM,EAAE,EAAE;gBACxD,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAA;gBACnB,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAA;gBACnB,OAAO,CAAC,CAAA;YACV,CAAC,CAAC,CAAA;YACF,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;YAC/B,OAAO,IAAA,aAAK,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAA;QAClD,CAAC;QAED,0DAA0D;QAC1D,2CAA2C;QAC3C,MAAM,GAAG,GAAG,IAAI,yBAAW,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;QACvD,IAAA,wBAAc,EAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACzB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACpB,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACrC,CAAC;IAED,GAAG,CAAC,GAAiB;QACnB,IAAA,gBAAU,EAAC,GAAG,EAAE,sBAAsB,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAChE,EAAE,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC3C,OAAO,SAAS,CAAA;IAClB,CAAC;CACF;QAyFC,UAAU;AAtFZ,qEAAqE;AACrE,8CAA8C;AAC9C,SAAS,UAAU,CAAC,IAAS,EAAE,MAAgB;IAC7C,IAAI,IAAI,GAAQ,IAAI,CAAA;IACpB,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,IAAI,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC;IACD,OAAO,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;AAC/D,CAAC;AAGD,sEAAsE;AACtE,+DAA+D;AAC/D,SAAS,WAAW,CAAC,CAAM,EAAE,EAAU;IACrC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QAClC,OAAM;IACR,CAAC;IACD,IAAI,IAAI,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC;QACzB,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;QACzB,OAAM;IACR,CAAC;IACD,IAAI,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;QAChC,OAAM;IACR,CAAC;IACD,MAAM,GAAG,GAAQ,CAAC,CAAC,GAAG,CAAA;IACtB,IAAI,IAAI,KAAK,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;QACpC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QACzB,CAAC;IACH,CAAC;SACI,IAAI,IAAI,KAAK,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACjD,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;YACpB,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QACpB,CAAC;IACH,CAAC;SACI,IAAI,IAAI,KAAK,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACrD,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;YACpB,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QACpB,CAAC;IACH,CAAC;IACD,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC;QACzB,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC9B,CAAC;AACH,CAAC;AAGD,SAAS,iBAAiB,CAAC,CAAM,EAAE,MAAgB,EAAE,KAAc;IACjE,MAAM,CAAC,GAAG,KAAK,IAAI,CAAC,CAAA;IACpB,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAA;IACd,CAAC;IACD,IAAI,IAAI,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC;QACzB,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;eACnC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IAChE,CAAC;IACD,IAAI,IAAI,KAAK,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7C,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;eAC7B,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAM,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IACD,MAAM,GAAG,GAAQ,CAAC,CAAC,GAAG,CAAA;IACtB,IAAI,IAAI,KAAK,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;QACpC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC7C,OAAO,IAAI,CAAA;YACb,CAAC;QACH,CAAC;IACH,CAAC;SACI,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,IAAI,IAAI,KAAK,CAAC,CAAC,UAAU,IAAI,IAAI,KAAK,CAAC,CAAC,UAAU,CAAC;WACzE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;YACpB,IAAI,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACxC,OAAO,IAAI,CAAA;YACb,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC1E,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAC,iCAAiC"}
|