@earendil-works/chord 0.85.0 → 0.86.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 +8 -8
- package/dist/delta/index.d.ts +3 -3
- package/dist/delta/index.d.ts.map +1 -1
- package/dist/delta/index.js +1057 -366
- package/dist/delta/index.js.map +1 -1
- package/package.json +2 -2
- package/src/delta/README.md +127 -42
package/dist/delta/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/delta/index.ts"],"names":[],"mappings":"AA6DA,0MAAgF;AAEhF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAe,EAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;AAErE;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAA6B,EAAW,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;AAEvG,wNAAgF;AAEhF;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CAAC,CAAS,EAAE,CAAS,EAAE,IAAY,EAAE,KAAK,GAAG,EAAE,EAAE,aAAa,GAAG,CAAC,EAAU;IAClG,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5D,6EAA2E;IAC3E,0EAA0E;IAC1E,+EAA+E;IAC/E,qEAAqE;IACrE,EAAE;IACF,kFAAgF;IAChF,iFAA+E;IAC/E,qDAAqD;IACrD,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC1E,IAAI,EAAE,KAAK,GAAG,aAAa;gBAAE,MAAM;YACnC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,CAAC,KAAK,CAAC;YAAE,MAAM;IACpB,CAAC;IACD,OAAO,CAAC,CAAC;AAAA,CACT;AAyBD,MAAM,KAAK,GAAG,CAAC,KAAc,EAAmB,EAAE,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;AAC/F,MAAM,SAAS,GAAG,CAAsB,KAAQ,EAAK,EAAE,CAAC;IACvD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAChC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAM,CAAC;IAC3E,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAG3F,CAAC;IACF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAClD,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE;YAClC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC;YACvB,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,IAAI;SAClB,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,MAAW,CAAC;AAAA,CACnB,CAAC;AAEF,MAAM,KAAK,GAAG,kBAAkB,CAAC;AACjC,MAAM,IAAI,GAAG,CAAC,MAAc,EAAE,GAAoB,EAAgB,EAAE,CACnE,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC9F,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;AACjH,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAKlC,MAAM,SAAS,GAAG,GAAc,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;AAE7D,MAAM,WAAW,GAAG,CAAC,MAAiB,EAAE,KAAa,EAAE,MAAc,EAAE,KAAkB,EAAe,EAAE,CAAC;IAC1G,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAgB,CAAC;IAC9F,MAAM,SAAS,GAAG,MAAM,CAAC;IACzB,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,IAAI,SAAS,EAAE,CAAC;QACjE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAChH,CAAC;IACD,OAAO,OAAO,CAAC;AAAA,CACf,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,IAAe,EAAE,KAAgB,EAAW,EAAE,CAAC;IACjE,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAChG,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC/C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YAClD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAE,EAAE,KAAK,CAAC,KAAK,CAAE,CAAC;gBAAE,OAAO,KAAK,CAAC;QAC3D,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IACD,MAAM,UAAU,GAAG,IAAiC,CAAC;IACrD,MAAM,WAAW,GAAG,KAAkC,CAAC;IACvD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3C,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACvD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAE,EAAE,WAAW,CAAC,GAAG,CAAE,CAAC;YAAE,OAAO,KAAK,CAAC;IACvG,CAAC;IACD,OAAO,IAAI,CAAC;AAAA,CACZ,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,KAAgB,EAAE,OAAY,EAAa,EAAE,CAAC;IAC/D,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IACpE,OAAQ,KAAgC,CAAC,OAAO,CAAE,CAAC;AAAA,CACnD,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,IAAU,EAAE,KAAgB,EAAE,GAAS,EAAQ,EAAE,CAAC;IAClE,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;;QAC5C,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAA4B,EAAE,QAAQ,CAAC,CAAC,CAAC;AAAA,CACrE,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,IAAU,EAAE,GAAS,EAAQ,EAAE,CAAC;IACnD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,oCAAoC,CAAC,CAAC;IACjF,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAA4B,CAAC,CAAC,CAAC;AAAA,CACtD,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,KAAa,EAAE,IAAU,EAAE,IAAY,EAAE,GAAS,EAAQ,EAAE,CAAC;IAChG,IAAI,MAAM,KAAK,KAAK;QAAE,OAAO;IAC7B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAC1B,OAAO;IACR,CAAC;IACD,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAA4B,CAAC;IAChD,2EAAyE;IACzE,8EAA4E;IAC5E,wEAAwE;IACxE,6EAA6E;IAC7E,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,MAAM,EAAE,CAAC;QAC9E,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAChD,OAAO;IACR,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC5C,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QAClB,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;QAC3B,OAAO;IACR,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;IAC5C,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM;QAAE,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAAA,CACpE,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,MAAiB,EAAE,KAAgB,EAAE,IAAU,EAAE,IAAY,EAAE,GAAS,EAAQ,EAAE,CAAC;IACrG,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACxB,IAAI,KAAK,KAAK,OAAO;YAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACjD,OAAO;IACR,CAAC;IACD,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACvB,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACtB,OAAO;IACR,CAAC;IACD,IAAI,MAAM,KAAK,KAAK;QAAE,OAAO;IAC7B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC7D,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAC3C,OAAO;IACR,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACnD,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAC1C,OAAO;IACR,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACtF,UAAU,CAAC,MAAmC,EAAE,KAAkC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACrG,OAAO;IACR,CAAC;IACD,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAAA,CAC1B,CAAC;AAEF,SAAS,UAAU,CAClB,MAAiC,EACjC,KAAgC,EAChC,IAAU,EACV,IAAY,EACZ,GAAS,EACF;IACP,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC/F,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAC1B,OAAO;IACR,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACtC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAE,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAE,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACxG,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC;YAAE,UAAU,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IACjE,CAAC;AAAA,CACD;AAED,SAAS,SAAS,CAAC,MAAmB,EAAE,KAAkB,EAAE,IAAU,EAAE,IAAY,EAAE,GAAS,EAAQ;IACtG,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;QACpC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YACnD,SAAS,CAAC,MAAM,CAAC,KAAK,CAAE,EAAE,KAAK,CAAC,KAAK,CAAE,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACvE,CAAC;QACD,OAAO;IACR,CAAC;IAED,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,OAAO,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,CAAE,EAAE,KAAK,CAAC,MAAM,CAAE,CAAC;QAAE,MAAM,EAAE,CAAC;IAC/G,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,OACC,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM;QAC/B,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM;QAC9B,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAE,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAE,CAAC,EAChF,CAAC;QACF,MAAM,EAAE,CAAC;IACV,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtD,IAAI,MAAM,GAAG,MAAM,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;QAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;QACzD,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,MAAM,CAAC,MAAM;YAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;;YACnE,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAClE,OAAO;IACR,CAAC;IAED,uEAAuE;IACvE,0EAA0E;IAC1E,4EAA4E;IAC5E,+DAA+D;IAC/D,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC;QAC9C,SAAS,CAAC,MAAM,CAAC,KAAK,CAAE,EAAE,KAAK,CAAC,KAAK,CAAE,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACrF,CAAC;SAAM,IAAI,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACzC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;;YAC7C,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IACjF,CAAC;AAAA,CACD;AAED,MAAM,SAAS,GAAG,CAAC,MAAiB,EAAE,KAAgB,EAAE,IAAe,EAAE,IAAU,EAAE,IAAY,EAAE,GAAS,EAAQ,EAAE,CAAC;IACtH,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACrB,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAC1C,OAAO;IACR,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC;gBAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YACzD,OAAO;QACR,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACnF,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YAC1C,OAAO;QACR,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC/B,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;YACrD,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YAC1C,OAAO;QACR,CAAC;QACD,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9C,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK;gBAAE,SAAS;YAC9D,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC3C,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACzC,IAAI,QAAQ,KAAK,OAAO,IAAI,OAAO,KAAK,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACrE,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YAC7D,CAAC;iBAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9C,SAAS,CAAC,QAAqB,EAAE,OAAoB,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YAC9F,CAAC;iBAAM,CAAC;gBACP,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YAC7D,CAAC;QACF,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7E,OAAO;IACR,CAAC;IACD,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACzC,IAAI,QAAQ,KAAK,OAAO,IAAI,OAAO,KAAK,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrE,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YAC5D,SAAS;QACV,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACzC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YAC5D,SAAS;QACV,CAAC;QACD,SAAS,CAAC,QAAqB,EAAE,OAAoB,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IAC9F,CAAC;AAAA,CACD,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,YAAY,GAAG,CAAC,QAAmB,EAAE,IAAe,EAAE,IAAe,EAAW,EAAE,CAAC;IACxF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/B,OAAO,IAAI,CAAC;AAAA,CACZ,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,IAAe,EAAW,EAAE,CAAC;IAC7C,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC3E,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;QAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;IAC9E,OAAO,IAAI,CAAC;AAAA,CACZ,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,QAAmB,EAAE,IAAe,EAAE,IAAe,EAAQ,EAAE,CAAC;IACjF,MAAM,MAAM,GAAG,QAA8C,CAAC;IAC9D,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACrF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC/B,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,KAAK;gBAAE,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACvF,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAc,CAAC,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,CAAe,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO;IACR,CAAC;IACD,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ;QAAE,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAAA,CACtF,CAAC;AAEF,MAAM,SAAS,GAAG,CACjB,MAA0C,EAC1C,IAAe,EACf,OAAY,EACZ,KAAgB,EACT,EAAE,CAAC;IACV,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAmB,EAAE,OAAO,CAAC,CAAC;IACxD,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACzB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,MAAM,CAAC,MAAM,CAAC,OAAiB,EAAE,CAAC,CAAC,CAAC;;YAC1D,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO;IACR,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnH,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAoB,CAAC,CAAC,CAAC,CAAE,OAAqB,CAAC;QAC5F,OAAO;IACR,CAAC;IACD,QAAQ,CAAC,QAAqB,EAAE,OAAoB,EAAE,KAAK,CAAC,CAAC;AAAA,CAC7D,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,EAAM,EAAM,EAAE,CAAC;IAC/B,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACf,KAAK,GAAG;YACP,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,KAAK,GAAG;YACP,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,KAAK,GAAG;YACP,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD;YACC,OAAO,EAAE,CAAC;IACZ,CAAC;AAAA,CACD,CAAC;AAEF,MAAM,UAAU,KAAK,CAAmB,IAAO,EAAE,OAAO,GAAmB,EAAE,EAAc;IAC1F,MAAM,IAAI,GAAG,OAAO,CAAC,cAAc,IAAI,MAAM,CAAC;IAC9C,IAAI,OAAO,GAAG,SAAS,EAAE,CAAC;IAC1B,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,QAA+B,CAAC;IACpC,IAAI,SAAS,GAAG,IAAI,CAAC;IAErB,MAAM,YAAY,GAAG,GAAS,EAAE,CAAC;QAChC,OAAO,GAAG,SAAS,EAAE,CAAC;QACtB,UAAU,GAAG,KAAK,CAAC;IAAA,CACnB,CAAC;IAEF,MAAM,UAAU,GAAG,CAAC,IAAU,EAAyB,EAAE,CAAC;QACzD,UAAU,GAAG,IAAI,CAAC;QAClB,IAAI,IAAI,GAAG,OAAO,CAAC;QACnB,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC;YACvG,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACvC,IAAI,KAAK,KAAK,SAAS;gBAAE,KAAK,GAAG,SAAS,EAAE,CAAC;;gBACxC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAClC,IAAI,GAAG,KAAK,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC;IAAA,CACZ,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,IAAU,EAAyB,EAAE,CAAC;QACvD,IAAI,IAAI,GAAG,OAAO,CAAC;QACnB,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACzC,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC;YAC1C,IAAI,GAAG,KAAK,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC;IAAA,CACZ,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,IAAU,EAAQ,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO;QAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IAAA,CACtB,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,IAAU,EAAE,KAAa,EAAQ,EAAE,CAAC;QAC5D,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5G,OAAO;QACR,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAAA,CACrE,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,IAAU,EAAQ,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,KAAK,SAAS;YAAE,OAAO;QACpF,IAAI,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IAAA,CACtB,CAAC;IAEF,MAAM,gBAAgB,GAAG,CAAC,IAAU,EAAQ,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO;QAClD,IAAI,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IAAA,CACtB,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,IAAU,EAAsB,EAAE,CAAC;QACvD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;QACpC,OAAO,KAAK,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAAA,CAC1D,CAAC;IAEF,MAAM,KAAK,GAAG,CAAC,OAAqB,EAAO,EAAE,CAAC;QAC7C,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,MAAM,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5E,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,MAAM,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;QACtG,OAAO,OAAO,CAAC;IAAA,CACf,CAAC;IAEF,MAAM,UAAU,GAAG,CAAC,MAA0B,EAAe,EAAE,CAAC,MAAqB,CAAC;IAEtF,MAAM,OAAO,GAAG,CAAC,KAAc,EAAU,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QACnD,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAAA,CAC7D,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,MAAc,EAAE,IAAwB,EAAqC,EAAE,CAAC;QACpG,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACzF,MAAM,MAAM,GACX,IAAI,CAAC,MAAM,KAAK,CAAC;YAChB,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;gBAClB,CAAC,CAAC,MAAM,GAAG,KAAK;gBAChB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;QAC7D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAA,CACzB,CAAC;IAEF,MAAM,IAAI,GAAG,CAAmB,MAAS,EAAE,IAAU,EAAE,cAAoB,EAAK,EAAE,CAAC;QAClF,MAAM,YAAY,GAAG,IAAI,GAAG,EAAsD,CAAC;QACnF,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE;YAC/B,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE;gBAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC3E,OAAO,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC;wBAC9B,IAAI,cAAc,KAAK,SAAS;4BAAE,MAAM,IAAI,eAAe,CAAC,cAAc,CAAC,CAAC;wBAC5E,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;wBAC7B,IAAI,MAAe,CAAC;wBACpB,QAAQ,GAAG,EAAE,CAAC;4BACb,KAAK,MAAM,EAAE,CAAC;gCACb,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;gCAC/B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;oCAAE,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gCACpD,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;gCACtC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;gCACvB,MAAM;4BACP,CAAC;4BACD,KAAK,SAAS,EAAE,CAAC;gCAChB,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;gCAC/B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;oCAAE,aAAa,CAAC,IAAI,CAAC,CAAC;gCAC1C,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;gCACjC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;gCACvB,MAAM;4BACP,CAAC;4BACD,KAAK,KAAK;gCACT,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;oCAChB,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;oCAChC,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,GAAG,CAAC,GAAG,KAAK;wCAAE,aAAa,CAAC,IAAI,CAAC,CAAC;gCACpE,CAAC;gCACD,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;gCAC1D,MAAM;4BACP,KAAK,OAAO;gCACX,IAAI,MAAM,GAAG,CAAC;oCAAE,aAAa,CAAC,IAAI,CAAC,CAAC;gCACpC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;gCAC5D,MAAM;4BACP,KAAK,QAAQ,EAAE,CAAC;gCACf,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gCACxC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gCACpD,IAAI,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oCACpC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;oCAChC,IAAI,KAAK,KAAK,CAAC,IAAI,MAAM,KAAK,MAAM;wCAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;yCACxD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;wCAChD,oDAAoD;oCACrD,CAAC;yCAAM,IAAI,KAAK,KAAK,MAAM,IAAI,MAAM,KAAK,CAAC;wCAAE,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;;wCACtE,aAAa,CAAC,IAAI,CAAC,CAAC;gCAC1B,CAAC;gCACD,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;gCACnD,MAAM;4BACP,CAAC;4BACD;gCACC,aAAa,CAAC,IAAI,CAAC,CAAC;gCACpB,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAa,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;wBACvE,CAAC;wBACD,IAAI,GAAG,KAAK,KAAK;4BAAE,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;6BACtD,IAAI,GAAG,KAAK,MAAM;4BAAE,YAAY,CAAC,KAAK,EAAE,CAAC;wBAC9C,OAAO,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;oBAAA,CACtG,CAAC;gBACH,CAAC;gBACD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;gBACjD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;oBAAE,OAAO,KAAK,CAAC;gBAChC,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACrC,IAAI,MAAM,EAAE,MAAM,KAAK,KAAK;oBAAE,OAAO,MAAM,CAAC,KAAK,CAAC;gBAClD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBACrC,IAAI,OAAY,CAAC;gBACjB,IAAI,YAAY,GAAG,cAAc,CAAC;gBAClC,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;oBAClC,IAAI,OAAO,UAAU,KAAK,QAAQ;wBAAE,MAAM,IAAI,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;oBAClF,OAAO,GAAG,UAAU,CAAC;gBACtB,CAAC;qBAAM,IACN,OAAO,UAAU,KAAK,QAAQ;oBAC9B,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC;oBACjC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,CAAC;oBACF,OAAO,GAAG,UAAU,CAAC;oBACrB,YAAY,GAAG,UAAU,CAAC;gBAC3B,CAAC;;oBAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;gBACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC;gBAC5D,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;gBACvD,OAAO,KAAK,CAAC;YAAA,CACb;YAED,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE;gBACvB,IAAI,cAAc,KAAK,SAAS;oBAAE,MAAM,IAAI,eAAe,CAAC,cAAc,CAAC,CAAC;gBAC5E,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;oBAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;oBAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC3B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,aAAa,EAAE,CAAC;wBACrE,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;oBACxC,CAAC;oBACD,IAAI,IAAI,GAAG,MAAM,EAAE,CAAC;wBACnB,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;wBAChC,IAAI,IAAI,KAAK,CAAC;4BAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;6BAClC,IAAI,KAAK,KAAK,SAAS,IAAI,IAAI,GAAG,KAAK;4BAAE,aAAa,CAAC,IAAI,CAAC,CAAC;wBAClE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;wBAC/B,YAAY,CAAC,KAAK,EAAE,CAAC;oBACtB,CAAC;yBAAM,IAAI,IAAI,GAAG,MAAM,EAAE,CAAC;wBAC1B,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;wBAC9B,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;wBACrB,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBAC3B,CAAC;oBACD,OAAO,IAAI,CAAC;gBACb,CAAC;gBAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;gBACzC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC3B,IAAI,OAAO,OAAO,KAAK,QAAQ;wBAAE,MAAM,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;oBACpE,IAAI,OAAO,GAAG,MAAM,CAAC,MAAM;wBAAE,MAAM,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;gBACjE,CAAC;gBACD,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,CAA4B,CAAC;gBAEzD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACzB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;wBAC3B,MAAM,IAAI,SAAS,CAAC,2DAA2D,CAAC,CAAC;oBAClF,CAAC;oBACD,SAAS,CAAC,EAAE,CAAC,CAAC;oBACd,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACzB,OAAO,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBAC5C,CAAC;gBAED,MAAM,QAAQ,GAAI,MAA2C,CAAC,GAAG,CAAC,CAAC;gBACnE,IAAI,QAAQ,KAAK,KAAK;oBAAE,OAAO,IAAI,CAAC;gBACpC,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACrC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK;oBAAE,OAAO,IAAI,CAAC;gBAC9F,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC3B,MAAM,KAAK,GAAG,OAAiB,CAAC;oBAChC,IAAI,KAAK,KAAK,MAAM,CAAC,MAAM;wBAAE,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;yBAC7D,CAAC;wBACL,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;wBAChC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,KAAK;4BAAE,SAAS,CAAC,EAAE,CAAC,CAAC;oBACzD,CAAC;gBACF,CAAC;;oBAAM,SAAS,CAAC,EAAE,CAAC,CAAC;gBACrB,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACzB,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YAAA,CACvC;YAED,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE;gBAC3B,IAAI,cAAc,KAAK,SAAS;oBAAE,MAAM,IAAI,eAAe,CAAC,cAAc,CAAC,CAAC;gBAC5E,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;gBACzC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC3B,IAAI,OAAO,OAAO,KAAK,QAAQ;wBAAE,MAAM,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;oBACpE,MAAM,IAAI,SAAS,CAAC,wDAAwD,CAAC,CAAC;gBAC/E,CAAC;gBACD,SAAS,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC9B,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACzB,OAAO,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAAA,CAC3C;YAED,cAAc,GAAG;gBAChB,MAAM,IAAI,SAAS,CAAC,kEAAkE,CAAC,CAAC;YAAA,CACxF;YACD,cAAc,GAAG;gBAChB,MAAM,IAAI,SAAS,CAAC,kDAAkD,CAAC,CAAC;YAAA,CACxE;YACD,iBAAiB,GAAG;gBACnB,MAAM,IAAI,SAAS,CAAC,qDAAqD,CAAC,CAAC;YAAA,CAC3E;SACD,CAAC,CAAC;QAEH,OAAO,KAAU,CAAC;IAAA,CAClB,CAAC;IAEF,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAE3B,OAAO;QACN,IAAI,KAAK,GAAG;YACX,OAAO,KAAK,CAAC;QAAA,CACb;QACD,IAAI,MAAM,GAAG;YACZ,OAAO,IAAI,CAAC;QAAA,CACZ;QACD,IAAI,KAAK,CAAC,IAAO,EAAE;YAClB,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;gBACpB,YAAY,EAAE,CAAC;gBACf,SAAS,GAAG,IAAI,CAAC;gBACjB,OAAO;YACR,CAAC;YACD,YAAY,EAAE,CAAC;YACf,IAAI,GAAG,IAAI,CAAC;YACZ,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACvB,QAAQ,GAAG,SAAS,CAAC;YACrB,SAAS,GAAG,IAAI,CAAC;QAAA,CACjB;QACD,MAAM,GAAG;YACR,YAAY,EAAE,CAAC;YACf,SAAS,GAAG,IAAI,CAAC;QAAA,CACjB;QACD,IAAI,KAAK,GAAG;YACX,OAAO,SAAS,IAAI,UAAU,CAAC;QAAA,CAC/B;QACD,OAAO,GAAG;YACT,QAAQ,GAAG,SAAS,CAAC,IAA4B,CAAC,CAAC;YACnD,YAAY,EAAE,CAAC;QAAA,CACf;QACD,KAAK,GAAG;YACP,IAAI,SAAS,EAAE,CAAC;gBACf,MAAM,KAAK,GAAG,SAAS,CAAC,IAA4B,CAAC,CAAC;gBACtD,QAAQ,GAAG,SAAS,CAAC,IAA4B,CAAC,CAAC;gBACnD,SAAS,GAAG,KAAK,CAAC;gBAClB,YAAY,EAAE,CAAC;gBACf,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;YACvB,CAAC;YACD,IAAI,CAAC,UAAU,IAAI,QAAQ,KAAK,SAAS;gBAAE,OAAO,EAAE,CAAC;YACrD,MAAM,GAAG,GAAS,EAAE,CAAC;YACrB,SAAS,CAAC,QAAQ,EAAE,IAA4B,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YAC1E,qEAAqE;YACrE,yEAAuE;YACvE,yEAAyE;YACzE,oEAAoE;YACpE,wEAAwE;YACxE,sDAAsD;YACtD,IAAI,CAAC,YAAY,CAAC,QAAqB,EAAE,IAA4B,EAAE,OAAO,CAAC,EAAE,CAAC;gBACjF,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;oBAAE,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YAClE,CAAC;YACD,YAAY,EAAE,CAAC;YACf,OAAO,GAAG,CAAC;QAAA,CACX;KACD,CAAC;AAAA,CACF;AAED,gNAAgF;AAEhF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAwB,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;AAEzG,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACzC,6EAA6E;IAC7E,sDAAsD;IAC7C,OAAO,CAAM;IACtB,YAAY,OAAY,EAAE;QACzB,KAAK,CAAC,wBAAwB,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAAA,CAC9B;CACD;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,EAAW,EAAoB;IAC5D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,mBAAmB,CAAC,CAAC;IACpF,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACf,KAAK,GAAG;YACP,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;YACpD,OAAO;QACR,KAAK,GAAG;YACP,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;YACpD,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC3B,OAAO;QACR,KAAK,GAAG;YACP,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;YACpD,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC3B,OAAO;QACR,KAAK,GAAG;YACP,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,QAAQ;gBAAE,MAAM,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;YACjF,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC3B,OAAO;QACR,KAAK,GAAG;YACP,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;YAC7F,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC3B,OAAO;QACR,KAAK,GAAG,EAAE,CAAC;YACV,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;YACpD,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;YAC1E,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC;YAC3E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;YAC1D,OAAO;QACR,CAAC;QACD,2EAA2E;QAC3E;YACC,MAAM,IAAI,SAAS,CAAC,oBAAoB,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3D,CAAC;AAAA,CACD;AAED,SAAS,aAAa,CAAC,CAAU,EAAE,QAAQ,GAAG,KAAK,EAAQ;IAC1D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,sBAAsB,CAAC,CAAC;IACnE,IAAI,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,eAAe,CAAC,CAAC;IACrE,cAAc,CAAC,CAAS,CAAC,CAAC;AAAA,CAC1B;AAED,0EAA0E;AAC1E,MAAM,UAAU,iBAAiB,CAAC,EAAW,EAAwB;IACpE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,mBAAmB,CAAC,CAAC;IACpF,MAAM,CAAC,IAAI,CAAC,GAAG,EAAe,CAAC;IAC/B,MAAM,KAAK,GAAG,CAAC,CAAU,EAAQ,EAAE,CAAC;QACnC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,aAAa,CAAC,CAAC;YACtE,OAAO;QACR,CAAC;QACD,uEAAuE;QACvE,iFAA+E;QAC/E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,sBAAsB,CAAC,CAAC;QACnE,cAAc,CAAC,CAAS,CAAC,CAAC;IAAA,CAC1B,CAAC;IACF,QAAQ,IAAI,EAAE,CAAC;QACd,KAAK,GAAG;YACP,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;YACpD,OAAO;QACR,KAAK,GAAG;YACP,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;gBAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC7B,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;YACzD,OAAO;QACR,KAAK,GAAG;YACP,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;gBAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC7B,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;YACzD,OAAO;QACR,KAAK,GAAG;YACP,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrB,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACb,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,QAAQ;oBAAE,MAAM,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;YAC/D,CAAC;iBAAM,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5B,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,QAAQ;oBAAE,MAAM,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;YAC/D,CAAC;;gBAAM,MAAM,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;YACtC,OAAO;QACR,KAAK,GAAG;YACP,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrB,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAK,EAAE,CAAC,CAAC,CAAY,GAAG,CAAC;oBAAE,MAAM,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;YACvF,CAAC;iBAAM,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAK,EAAE,CAAC,CAAC,CAAY,GAAG,CAAC;oBAAE,MAAM,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;YACvF,CAAC;;gBAAM,MAAM,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;YACtC,OAAO;QACR,KAAK,GAAG,EAAE,CAAC;YACV,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7G,IAAI,KAAK,KAAK,SAAS;gBAAE,MAAM,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;YACxD,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;gBAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAK,CAAY,GAAG,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;YAC9E,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAK,CAAY,GAAG,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC;YAC/E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;YAC1D,OAAO;QACR,CAAC;QACD,KAAK,GAAG,EAAE,CAAC;YACV,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAK,EAAE,CAAC,CAAC,CAAY,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnG,MAAM,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;YAChC,CAAC;YACD,cAAc,CAAC,EAAE,CAAC,CAAC,CAAS,CAAC,CAAC;YAC9B,OAAO;QACR,CAAC;QACD,2EAA2E;QAC3E;YACC,MAAM,IAAI,SAAS,CAAC,oBAAoB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;AAAA,CACD;AAED,MAAM,UAAU,cAAc,CAAC,IAAU,EAAQ;IAChD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC7B,IAAI,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,MAAM,IAAI,eAAe,CAAC,GAAG,CAAC,CAAC;QAChE,CAAC;aAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,eAAe,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;IACF,CAAC;AAAA,CACD;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAS,kBAAkB,CAAC,MAA0B,EAAE,KAAa,EAAQ;IAC5E,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM;QAAE,MAAM,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAAA,CAC5D;AAED,wNAAgF;AAEhF,MAAM,OAAO,SAAU,SAAQ,KAAK;IAC1B,IAAI,CAAgB;IAC7B,YAAY,IAAmB,EAAE;QAChC,KAAK,CAAC,sBAAsB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAAA,CACxB;CACD;AAED;;;;;;GAMG;AACH,MAAM,UAAU,KAAK,CAAI,MAAqB,EAAE,GAAkB,EAAK;IACtE,OAAO,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAAA,CAC7B;AAED,SAAS,QAAQ,CAAI,MAAqB,EAAE,GAAkB,EAAK;IAClE,IAAI,IAAI,GAAG,MAA8B,CAAC;IAE1C,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACtB,aAAa,CAAC,EAAE,CAAC,CAAC;QAClB,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACnB,kEAAkE;YAClE,EAAE;YACF,wEAAwE;YACxE,oEAAoE;YACpE,oEAAoE;YACpE,kEAAkE;YAClE,0DAA0D;YAC1D,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YACb,SAAS;QACV,CAAC;QAED,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACnB,cAAc,CAAC,IAAI,CAAC,CAAC;QAErB,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACnB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC/D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;YACvD,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,SAAS,GAAG,MAAM,CAAC;YACzB,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,IAAI,SAAS,EAAE,CAAC;gBACjE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;YAC/E,CAAC;YACD,SAAS;QACV,CAAC;QAED,6DAA2D;QAC3D,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAA2B,CAAC;QAC1E,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;QACnC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAAE,MAAM,IAAI,eAAe,CAAC,GAAG,CAAC,CAAC;YAC5D,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;QACD,+EAA+E;QAC/E,sCAAsC;QACtC,MAAM,KAAK,GAAG,CAAC,KAAgB,EAAE,EAAE,CAAC;YACnC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QAAA,CACpG,CAAC;QACF,MAAM,IAAI,GAAG,GAAY,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACnF,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACf,KAAK,GAAG;gBACP,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACb,MAAM;YACP,KAAK,GAAG;gBACP,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC3B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,MAAM,CAAC,MAAM;wBAAE,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;oBAC9E,MAAiC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACnD,CAAC;;oBAAM,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC1B,MAAM;YACP,KAAK,GAAG,EAAE,CAAC;gBACV,MAAM,OAAO,GAAG,IAAI,EAAE,CAAC;gBACvB,IAAI,OAAO,OAAO,KAAK,QAAQ;oBAAE,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC3D,KAAK,CAAC,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC5B,MAAM;YACP,CAAC;YACD,KAAK,GAAG,EAAE,CAAC;gBACV,MAAM,OAAO,GAAG,IAAI,EAAE,CAAC;gBACvB,IAAI,OAAO,OAAO,KAAK,QAAQ;oBAAE,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC3D,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5B,MAAM;YACP,CAAC;QACF,CAAC;IACF,CAAC;IACD,OAAO,IAAoB,CAAC;AAAA,CAC5B;AAED,8EAA8E;AAC9E,MAAM,UAAU,cAAc,CAAI,MAAqB,EAAE,GAAkB,EAAK;IAC/E,IAAI,IAAI,GAAG,MAA8B,CAAC;IAC1C,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACtB,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACnB,aAAa,CAAC,EAAE,CAAC,CAAC;YAClB,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YACb,SAAS;QACV,CAAC;QACD,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,IAAoB,CAAC;AAAA,CAC5B;AAED,SAAS,cAAc,CAAC,IAAe,EAAE,IAAU,EAAa;IAC/D,MAAM,IAAI,GAAG,CAAC,KAAgB,EAA2C,EAAE,CAAC;QAC3E,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAG3F,CAAC;QACF,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE;gBAClC,KAAK,EAAG,KAAmC,CAAC,GAAG,CAAC;gBAChD,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE,IAAI;gBAChB,YAAY,EAAE,IAAI;aAClB,CAAC,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC;IAAA,CACd,CAAC;IACF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,IAAI,WAAW,GAAG,UAAU,CAAC;IAC7B,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;QACjF,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,MAAM,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;QAC7F,MAAM,KAAK,GAAI,MAAiC,CAAC,OAAO,CAAE,CAAC;QAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,OAAO,EAAE;YAC3C,KAAK,EAAE,WAAW;YAClB,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,IAAI;SAClB,CAAC,CAAC;QACH,MAAM,GAAG,KAAK,CAAC;QACf,WAAW,GAAG,WAAW,CAAC;IAC3B,CAAC;IACD,OAAO,UAAU,CAAC;AAAA,CAClB;AAED,SAAS,YAAY,CAAC,IAAe,EAAE,IAAU,EAAa;IAC7D,IAAI,IAAI,GAAc,IAAI,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,MAAM,IAAI,eAAe,CAAC,GAAG,CAAC,CAAC;QACnF,6EAA6E;QAC7E,6CAA6C;QAC7C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAkB,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;QACxE,IAAI,GAAI,IAA+B,CAAC,GAAG,CAAE,CAAC;IAC/C,CAAC;IACD,OAAO,IAAI,CAAC;AAAA,CACZ;AAED,SAAS,OAAO,CAAC,IAAe,EAAE,IAAU,EAAa;IACxD,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC;AAAA,CACZ;AAED,4NAAgF;AAChF,EAAE;AACF,6EAA6E;AAC7E,4CAA4C;AAC5C,EAAE;AACF,gFAAgF;AAChF,6EAA6E;AAC7E,8EAA8E;AAC9E,UAAU;AAEV,MAAM,OAAO,GAAG,CAAC,IAAU,EAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAM7D;;;GAGG;AACH,MAAM,UAAU,OAAO,GAAY;IAClC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,QAA4B,CAAC,CAAC,0BAA0B;IAE5D,OAAO;QACN,MAAM,CAAC,GAAG,EAAE;YACX,0EAA0E;YAC1E,0EAA0E;YAC1E,0EAA0E;YAC1E,mEAAmE;YACnE,QAAQ,GAAG,SAAS,CAAC;YACrB,MAAM,GAAG,GAAa,EAAE,CAAC;YACzB,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;gBACtB,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;oBACnB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACb,uEAAuE;oBACvE,uEAAuE;oBACvE,uEAAuE;oBACvE,oEAAkE;oBAClE,IAAI,CAAC,KAAK,EAAE,CAAC;oBACb,GAAG,CAAC,KAAK,EAAE,CAAC;oBACZ,MAAM,GAAG,CAAC,CAAC;oBACX,QAAQ,GAAG,SAAS,CAAC;oBACrB,SAAS;gBACV,CAAC;gBACD,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gBACnB,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;gBAE1B,uDAAuD;gBACvD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;oBACtB,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACf,KAAK,GAAG;4BACP,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4BACvB,MAAM;wBACP,KAAK,GAAG;4BACP,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;4BAChB,MAAM;wBACP,KAAK,GAAG;4BACP,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4BACvB,MAAM;wBACP,KAAK,GAAG;4BACP,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4BACvB,MAAM;wBACP,KAAK,GAAG;4BACP,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4BACrC,MAAM;oBACR,CAAC;oBACD,SAAS;gBACV,CAAC;gBAED,IAAI,GAAG,GAAY,IAAI,CAAC;gBACxB,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC9B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC5B,GAAG,GAAG,QAAQ,CAAC;gBAChB,CAAC;qBAAM,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC1B,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;oBACpB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBACjB,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,qCAAqC;oBAChE,GAAG,GAAG,EAAE,CAAC;gBACV,CAAC;qBAAM,CAAC;oBACP,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,oBAAoB;gBACpC,CAAC;gBAED,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACf,KAAK,GAAG;wBACP,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAA4B,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBACrD,MAAM;oBACP,KAAK,GAAG;wBACP,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAA4B,CAAC,CAAC,CAAC;wBAC9C,MAAM;oBACP,KAAK,GAAG;wBACP,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAA4B,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBACrD,MAAM;oBACP,KAAK,GAAG;wBACP,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAA4B,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBACrD,MAAM;oBACP,KAAK,GAAG;wBACP,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC1C,MAAM;gBACR,CAAC;gBACD,QAAQ,GAAG,GAAG,CAAC;YAChB,CAAC;YACD,OAAO,GAAG,CAAC;QAAA,CACX;KACD,CAAC;AAAA,CACF;AAMD,MAAM,UAAU,OAAO,GAAY;IAClC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgB,CAAC;IAEtC,OAAO;QACN,MAAM,CAAC,IAAI,EAAE;YACZ,IAAI,QAA0B,CAAC,CAAC,oCAAoC;YACpE,MAAM,GAAG,GAAS,EAAE,CAAC;YACrB,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;gBACvB,iBAAiB,CAAC,EAAE,CAAC,CAAC;gBACtB,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;oBACnB,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;oBACtB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;oBACxB,SAAS;gBACV,CAAC;gBACD,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;oBACnB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACb,KAAK,CAAC,KAAK,EAAE,CAAC;oBACd,QAAQ,GAAG,SAAS,CAAC;oBACrB,SAAS;gBACV,CAAC;gBAED,oEAAoE;gBACpE,MAAM,KAAK,GACV,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;oBAClC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;oBACnD,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;gBAEpC,IAAI,IAAU,CAAC;gBACf,IAAI,KAAK,EAAE,CAAC;oBACX,IAAI,QAAQ,KAAK,SAAS;wBAAE,MAAM,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;oBACpD,IAAI,GAAG,QAAQ,CAAC;gBACjB,CAAC;qBAAM,CAAC;oBACP,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAY,CAAC;oBAC7B,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;wBAC7B,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBAChC,IAAI,QAAQ,KAAK,SAAS;4BAAE,MAAM,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;wBACrD,IAAI,GAAG,QAAQ,CAAC;oBACjB,CAAC;yBAAM,CAAC;wBACP,IAAI,GAAG,GAAG,CAAC;oBACZ,CAAC;oBACD,QAAQ,GAAG,IAAI,CAAC;gBACjB,CAAC;gBAED,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;oBAAE,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;gBAClE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACf,KAAK,GAAG;wBACP,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAoB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAc,CAAC,CAAC,CAAC;wBAC5E,MAAM;oBACP,KAAK,GAAG;wBACP,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAoB,CAAC,CAAC,CAAC;wBACtC,MAAM;oBACP,KAAK,GAAG;wBACP,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAoB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAW,CAAC,CAAC,CAAC;wBACzE,MAAM;oBACP,KAAK,GAAG;wBACP,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAoB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAW,CAAC,CAAC,CAAC;wBACzE,MAAM;oBACP,KAAK,GAAG,EAAE,CAAC;wBACV,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK;4BAC1B,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAW,EAAE,EAAE,CAAC,CAAC,CAAW,EAAE,EAAE,CAAC,CAAC,CAAgB,CAAC;4BAC1D,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAW,EAAE,EAAE,CAAC,CAAC,CAAW,EAAE,EAAE,CAAC,CAAC,CAAgB,CAAC,CAAC;wBAC5D,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;wBACnC,MAAM;oBACP,CAAC;gBACF,CAAC;YACF,CAAC;YACD,OAAO,GAAG,CAAC;QAAA,CACX;KACD,CAAC;AAAA,CACF","sourcesContent":["import type { JsonValue } from \"../types.ts\";\n\nexport type { JsonValue } from \"../types.ts\";\n\n// ─────────────────────────────────────────────────────────────────────────────\n// chord/delta — flush-time change tracking over plain JSON.\n//\n// Depends on nothing else in the harness. Session storage, the runtime and the\n// facet host consume it; keep the arrows pointing that way.\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport type Seg = string | number;\nexport type Path = readonly Seg[];\nexport type NonEmptyPath = readonly [Seg, ...Seg[]];\n\n/** A path inline, or an id assigned by the encoder on second use. */\nexport type PathRef<P extends Path = Path> = P | number;\n\n/**\n * Tuples are the form — in memory, on the wire, on disk.\n *\n * `r` is the ONLY op that replaces a whole value. `s`/`d`/`a`/`t` cannot target\n * the root: the type forbids it. `p` may, and only because a tracked value can\n * itself be an array — but a `p` that replaces its entire target is normalised to\n * `r`/`s` at flush time, so a root `p` is always a partial modification.\n *\n * `Op` knows nothing about the path dictionary. Interning, id references and\n * omitted paths live in `WireOp` and exist only between `encode` and `decode`.\n */\nexport type Op =\n\t| readonly [\"r\", JsonValue]\n\t| readonly [\"s\", NonEmptyPath, JsonValue]\n\t| readonly [\"d\", NonEmptyPath]\n\t| readonly [\"a\", NonEmptyPath, string]\n\t| readonly [\"t\", NonEmptyPath, number]\n\t| readonly [\"p\", Path, number, number, JsonValue[]];\n\n/**\n * What crosses a boundary. Adds two compressions and nothing else:\n *\n * [\"#\", id, path] defines an id, emitted on a path's SECOND use\n * a numeric PathRef references a previously defined id\n * a shortened tuple reuses the previous op's path; arity disambiguates\n *\n * [\"r\", value] carries no path, so it encodes to itself — which is why isBase\n * works unchanged on either vocabulary.\n */\nexport type WireOp =\n\t| readonly [\"r\", JsonValue]\n\t| readonly [\"s\", PathRef<NonEmptyPath>, JsonValue]\n\t| readonly [\"s\", JsonValue]\n\t| readonly [\"d\", PathRef<NonEmptyPath>]\n\t| readonly [\"d\"]\n\t| readonly [\"a\", PathRef<NonEmptyPath>, string]\n\t| readonly [\"a\", string]\n\t| readonly [\"t\", PathRef<NonEmptyPath>, number]\n\t| readonly [\"t\", number]\n\t| readonly [\"p\", PathRef, number, number, JsonValue[]]\n\t| readonly [\"p\", number, number, JsonValue[]]\n\t| readonly [\"#\", number, Path];\n\n// ─── Classification ──────────────────────────────────────────────────────────\n\nexport const isReplace = (op: Op | WireOp): boolean => op[0] === \"r\";\n\n/**\n * A batch begins with a replacement. Flush guarantees `r` is at index 0 or absent,\n * so this is exact rather than a heuristic.\n */\nexport const isBase = (ops: readonly (Op | WireOp)[]): boolean => ops.length > 0 && ops[0]![0] === \"r\";\n\n// ─── Overlap ─────────────────────────────────────────────────────────────────\n\n/**\n * Longest suffix of `a` that is a prefix of `b`. Probes with indexOf and verifies\n * exact substring equality, so the hot loops are native. A hand-written KMP is\n * asymptotically equivalent and much slower in practice.\n *\n * Always correct: the returned n satisfies a.slice(a.length - n) === b.slice(0, n).\n */\nexport function overlap(a: string, b: string, scan: number, probe = 64, maxCandidates = 8): number {\n\tif (a.length === 0 || b.length === 0 || scan === 0) return 0;\n\tconst tail = a.length > scan ? a.slice(a.length - scan) : a;\n\n\t// A probe of length h can only find overlaps of at least h — the head must\n\t// actually occur in `a`. So try a long head first (few candidates, and it\n\t// catches the large overlaps a rolling window produces), then fall back to one\n\t// character, which finds any overlap at the cost of more candidates.\n\t//\n\t// Candidates are bounded because repetitive output — a build log, or any run of\n\t// one character — makes a long head match at thousands of positions. Giving up\n\t// returns 0, which emits a set: larger, never wrong.\n\tfor (const h of [Math.min(probe, b.length), 1]) {\n\t\tconst head = b.slice(0, h);\n\t\tlet tried = 0;\n\t\tfor (let k = tail.indexOf(head); k !== -1; k = tail.indexOf(head, k + 1)) {\n\t\t\tif (++tried > maxCandidates) break;\n\t\t\tconst n = tail.length - k;\n\t\t\tif (n <= b.length && tail.slice(k) === b.slice(0, n)) return n;\n\t\t}\n\t\tif (h === 1) break;\n\t}\n\treturn 0;\n}\n\n// ─── Tracker ─────────────────────────────────────────────────────────────────\n\nexport interface TrackerOptions {\n\tmaxOverlapScan?: number;\n}\n\nexport interface Tracker<T extends object> {\n\t/**\n\t * The tracked value. Mutate and read state only through this proxy. Values\n\t * inserted into it are adopted: callers may retain read-only references, but\n\t * must not mutate them outside this proxy.\n\t */\n\tstate: T;\n\t/** The untracked current value. Mutating it bypasses change tracking. */\n\treadonly target: T;\n\tflush(): Op[];\n\t/** Make the next flush a complete base batch without changing the value. */\n\trebase(): void;\n\t/** Accept pending mutations locally without emitting them. */\n\tdiscard(): void;\n\treadonly dirty: boolean;\n}\n\nconst isObj = (value: unknown): value is object => value !== null && typeof value === \"object\";\nconst cloneJson = <T extends JsonValue>(value: T): T => {\n\tif (!isObj(value)) return value;\n\tif (Array.isArray(value)) return value.map((item) => cloneJson(item)) as T;\n\tconst result = Object.create(Object.getPrototypeOf(value) === null ? null : Object.prototype) as Record<\n\t\tstring,\n\t\tJsonValue\n\t>;\n\tfor (const [key, child] of Object.entries(value)) {\n\t\tObject.defineProperty(result, key, {\n\t\t\tvalue: cloneJson(child),\n\t\t\twritable: true,\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t});\n\t}\n\treturn result as T;\n};\n\nconst INDEX = /^(?:0|[1-9]\\d*)$/;\nconst norm = (target: object, key: string | symbol): Seg | symbol =>\n\ttypeof key === \"symbol\" ? key : Array.isArray(target) && INDEX.test(key) ? Number(key) : key;\nconst MUTATORS = new Set([\"push\", \"pop\", \"shift\", \"unshift\", \"splice\", \"sort\", \"reverse\", \"fill\", \"copyWithin\"]);\nconst MISSING = Symbol(\"missing\");\ntype MaybeJson = JsonValue | typeof MISSING;\ntype ArrayDirty = { kind: \"append\"; start: number } | { kind: \"diff\" } | { kind: \"replace\" };\ntype DirtyNode = { valueDirty?: true; array?: ArrayDirty; children: Map<Seg, DirtyNode> };\n\nconst dirtyNode = (): DirtyNode => ({ children: new Map() });\n\nconst spliceItems = (target: unknown[], index: number, remove: number, items: JsonValue[]): JsonValue[] => {\n\tconst removed = Reflect.apply(Array.prototype.splice, target, [index, remove]) as JsonValue[];\n\tconst chunkSize = 10_000;\n\tfor (let offset = 0; offset < items.length; offset += chunkSize) {\n\t\tReflect.apply(Array.prototype.splice, target, [index + offset, 0, ...items.slice(offset, offset + chunkSize)]);\n\t}\n\treturn removed;\n};\n\nconst jsonEqual = (left: JsonValue, right: JsonValue): boolean => {\n\tif (left === right) return true;\n\tif (!isObj(left) || !isObj(right) || Array.isArray(left) !== Array.isArray(right)) return false;\n\tif (Array.isArray(left) && Array.isArray(right)) {\n\t\tif (left.length !== right.length) return false;\n\t\tfor (let index = 0; index < left.length; index++) {\n\t\t\tif (!jsonEqual(left[index]!, right[index]!)) return false;\n\t\t}\n\t\treturn true;\n\t}\n\tconst leftObject = left as Record<string, JsonValue>;\n\tconst rightObject = right as Record<string, JsonValue>;\n\tconst leftKeys = Object.keys(leftObject);\n\tconst rightKeys = Object.keys(rightObject);\n\tif (leftKeys.length !== rightKeys.length) return false;\n\tfor (const key of leftKeys) {\n\t\tif (!Object.hasOwn(rightObject, key) || !jsonEqual(leftObject[key]!, rightObject[key]!)) return false;\n\t}\n\treturn true;\n};\n\nconst ownValue = (value: JsonValue, segment: Seg): MaybeJson => {\n\tif (!isObj(value) || !Object.hasOwn(value, segment)) return MISSING;\n\treturn (value as Record<Seg, JsonValue>)[segment]!;\n};\n\nconst emitSet = (path: Path, value: JsonValue, out: Op[]): void => {\n\tconst snapshot = cloneJson(value);\n\tif (path.length === 0) out.push([\"r\", snapshot]);\n\telse out.push([\"s\", [...path] as unknown as NonEmptyPath, snapshot]);\n};\n\nconst emitDelete = (path: Path, out: Op[]): void => {\n\tif (path.length === 0) throw new TypeError(\"the tracked root cannot be deleted\");\n\tout.push([\"d\", [...path] as unknown as NonEmptyPath]);\n};\n\nconst diffString = (before: string, after: string, path: Path, scan: number, out: Op[]): void => {\n\tif (before === after) return;\n\tif (path.length === 0) {\n\t\temitSet(path, after, out);\n\t\treturn;\n\t}\n\tconst at = [...path] as unknown as NonEmptyPath;\n\t// NOT `after.startsWith(before)`. `after` is usually a cons string — the\n\t// producer just did `s += chunk` — and V8's startsWith walks a cons char by\n\t// char. `slice(...) === before` flattens once and compares with memcmp.\n\t// Measured on a 200 KB string growing by 8 bytes per flush: 845 us -> 42 us.\n\tif (after.length > before.length && after.slice(0, before.length) === before) {\n\t\tout.push([\"a\", at, after.slice(before.length)]);\n\t\treturn;\n\t}\n\tconst shared = overlap(before, after, scan);\n\tif (shared === 0) {\n\t\tout.push([\"s\", at, after]);\n\t\treturn;\n\t}\n\tout.push([\"t\", at, before.length - shared]);\n\tif (after.length > shared) out.push([\"a\", at, after.slice(shared)]);\n};\n\nconst diffValue = (before: MaybeJson, after: MaybeJson, path: Path, scan: number, out: Op[]): void => {\n\tif (before === MISSING) {\n\t\tif (after !== MISSING) emitSet(path, after, out);\n\t\treturn;\n\t}\n\tif (after === MISSING) {\n\t\temitDelete(path, out);\n\t\treturn;\n\t}\n\tif (before === after) return;\n\tif (typeof before === \"string\" && typeof after === \"string\") {\n\t\tdiffString(before, after, path, scan, out);\n\t\treturn;\n\t}\n\tif (Array.isArray(before) && Array.isArray(after)) {\n\t\tdiffArray(before, after, path, scan, out);\n\t\treturn;\n\t}\n\tif (isObj(before) && isObj(after) && !Array.isArray(before) && !Array.isArray(after)) {\n\t\tdiffObject(before as Record<string, JsonValue>, after as Record<string, JsonValue>, path, scan, out);\n\t\treturn;\n\t}\n\temitSet(path, after, out);\n};\n\nfunction diffObject(\n\tbefore: Record<string, JsonValue>,\n\tafter: Record<string, JsonValue>,\n\tpath: Path,\n\tscan: number,\n\tout: Op[],\n): void {\n\tif ([...Object.keys(before), ...Object.keys(after)].some((key) => RESERVED_SEGMENTS.has(key))) {\n\t\temitSet(path, after, out);\n\t\treturn;\n\t}\n\tfor (const key of Object.keys(after)) {\n\t\tdiffValue(Object.hasOwn(before, key) ? before[key]! : MISSING, after[key]!, [...path, key], scan, out);\n\t}\n\tfor (const key of Object.keys(before)) {\n\t\tif (!Object.hasOwn(after, key)) emitDelete([...path, key], out);\n\t}\n}\n\nfunction diffArray(before: JsonValue[], after: JsonValue[], path: Path, scan: number, out: Op[]): void {\n\tif (before.length === after.length) {\n\t\tfor (let index = 0; index < after.length; index++) {\n\t\t\tdiffValue(before[index]!, after[index]!, [...path, index], scan, out);\n\t\t}\n\t\treturn;\n\t}\n\n\tlet prefix = 0;\n\twhile (prefix < before.length && prefix < after.length && jsonEqual(before[prefix]!, after[prefix]!)) prefix++;\n\tlet suffix = 0;\n\twhile (\n\t\tsuffix < before.length - prefix &&\n\t\tsuffix < after.length - prefix &&\n\t\tjsonEqual(before[before.length - 1 - suffix]!, after[after.length - 1 - suffix]!)\n\t) {\n\t\tsuffix++;\n\t}\n\tconst shorter = Math.min(before.length, after.length);\n\tif (prefix + suffix === shorter) {\n\t\tconst remove = before.length - prefix - suffix;\n\t\tconst items = after.slice(prefix, after.length - suffix);\n\t\tif (prefix === 0 && remove === before.length) emitSet(path, after, out);\n\t\telse out.push([\"p\", [...path], prefix, remove, cloneJson(items)]);\n\t\treturn;\n\t}\n\n\t// Structural movement combined with retained-index edits has no unique\n\t// alignment. Preserve the retained index deltas and express only the tail\n\t// length change structurally. It may be broader than the producer's intent,\n\t// but never degrades those edits to a whole-array replacement.\n\tfor (let index = 0; index < shorter; index++) {\n\t\tdiffValue(before[index]!, after[index]!, [...path, index], scan, out);\n\t}\n\tif (after.length > before.length) {\n\t\tout.push([\"p\", [...path], before.length, 0, cloneJson(after.slice(before.length))]);\n\t} else if (before.length > after.length) {\n\t\tif (after.length === 0) emitSet(path, after, out);\n\t\telse out.push([\"p\", [...path], after.length, before.length - after.length, []]);\n\t}\n}\n\nconst walkDirty = (before: JsonValue, after: JsonValue, node: DirtyNode, path: Path, scan: number, out: Op[]): void => {\n\tif (node.valueDirty) {\n\t\tdiffValue(before, after, path, scan, out);\n\t\treturn;\n\t}\n\tif (node.array !== undefined) {\n\t\tif (node.array.kind === \"replace\") {\n\t\t\tif (!jsonEqual(before, after)) emitSet(path, after, out);\n\t\t\treturn;\n\t\t}\n\t\tif (!Array.isArray(before) || !Array.isArray(after) || node.array.kind === \"diff\") {\n\t\t\tdiffValue(before, after, path, scan, out);\n\t\t\treturn;\n\t\t}\n\t\tconst start = node.array.start;\n\t\tif (before.length !== start || after.length < start) {\n\t\t\tdiffValue(before, after, path, scan, out);\n\t\t\treturn;\n\t\t}\n\t\tfor (const [segment, child] of node.children) {\n\t\t\tif (typeof segment !== \"number\" || segment >= start) continue;\n\t\t\tconst previous = ownValue(before, segment);\n\t\t\tconst current = ownValue(after, segment);\n\t\t\tif (previous === MISSING || current === MISSING || child.valueDirty) {\n\t\t\t\tdiffValue(previous, current, [...path, segment], scan, out);\n\t\t\t} else if (isObj(previous) && isObj(current)) {\n\t\t\t\twalkDirty(previous as JsonValue, current as JsonValue, child, [...path, segment], scan, out);\n\t\t\t} else {\n\t\t\t\tdiffValue(previous, current, [...path, segment], scan, out);\n\t\t\t}\n\t\t}\n\t\tconst items = after.slice(start);\n\t\tif (items.length > 0) out.push([\"p\", [...path], start, 0, cloneJson(items)]);\n\t\treturn;\n\t}\n\tfor (const [segment, child] of node.children) {\n\t\tconst previous = ownValue(before, segment);\n\t\tconst current = ownValue(after, segment);\n\t\tif (previous === MISSING || current === MISSING || child.valueDirty) {\n\t\t\tdiffValue(previous, current, [...path, segment], scan, out);\n\t\t\tcontinue;\n\t\t}\n\t\tif (!isObj(previous) || !isObj(current)) {\n\t\t\tdiffValue(previous, current, [...path, segment], scan, out);\n\t\t\tcontinue;\n\t\t}\n\t\twalkDirty(previous as JsonValue, current as JsonValue, child, [...path, segment], scan, out);\n\t}\n};\n\n/**\n * Bring `baseline` up to `root` along the dirty paths by sharing references.\n * Returns false — having changed nothing — if any dirty node is an array\n * change other than a pure append, so the caller can replay ops instead.\n * Cloning a whole array there is O(n) per flush; replay is O(changes).\n *\n * Strings are immutable, so root's `after` is shared outright, and sharing it\n * also means the next flush compares against a flat string rather than a cons.\n * Objects are cloned because root keeps mutating them.\n */\nconst syncBaseline = (baseline: JsonValue, root: JsonValue, node: DirtyNode): boolean => {\n\tif (!canSync(node)) return false;\n\tsyncInto(baseline, root, node);\n\treturn true;\n};\n\nconst canSync = (node: DirtyNode): boolean => {\n\tif (node.array !== undefined && node.array.kind !== \"append\") return false;\n\tfor (const child of node.children.values()) if (!canSync(child)) return false;\n\treturn true;\n};\n\nconst syncInto = (baseline: JsonValue, root: JsonValue, node: DirtyNode): void => {\n\tconst parent = baseline as Record<string | number, JsonValue>;\n\tif (node.array?.kind === \"append\" && Array.isArray(baseline) && Array.isArray(root)) {\n\t\tconst start = node.array.start;\n\t\tfor (const [index, child] of node.children) {\n\t\t\tif (typeof index === \"number\" && index < start) syncChild(parent, root, index, child);\n\t\t}\n\t\tfor (let i = start; i < root.length; i++) {\n\t\t\tbaseline.push(isObj(root[i]) ? cloneJson(root[i] as JsonValue) : (root[i] as JsonValue));\n\t\t}\n\t\treturn;\n\t}\n\tfor (const [segment, child] of node.children) syncChild(parent, root, segment, child);\n};\n\nconst syncChild = (\n\tparent: Record<string | number, JsonValue>,\n\troot: JsonValue,\n\tsegment: Seg,\n\tchild: DirtyNode,\n): void => {\n\tconst current = ownValue(root, segment);\n\tconst previous = ownValue(parent as JsonValue, segment);\n\tif (current === MISSING) {\n\t\tif (Array.isArray(parent)) parent.splice(segment as number, 1);\n\t\telse delete parent[segment];\n\t\treturn;\n\t}\n\tif (child.valueDirty || !isObj(current) || !isObj(previous) || Array.isArray(current) !== Array.isArray(previous)) {\n\t\tparent[segment] = isObj(current) ? cloneJson(current as JsonValue) : (current as JsonValue);\n\t\treturn;\n\t}\n\tsyncInto(previous as JsonValue, current as JsonValue, child);\n};\n\nconst cloneOp = (op: Op): Op => {\n\tswitch (op[0]) {\n\t\tcase \"r\":\n\t\t\treturn [\"r\", cloneJson(op[1])];\n\t\tcase \"s\":\n\t\t\treturn [\"s\", op[1], cloneJson(op[2])];\n\t\tcase \"p\":\n\t\t\treturn [\"p\", op[1], op[2], op[3], cloneJson(op[4])];\n\t\tdefault:\n\t\t\treturn op;\n\t}\n};\n\nexport function track<T extends object>(root: T, options: TrackerOptions = {}): Tracker<T> {\n\tconst scan = options.maxOverlapScan ?? 65_536;\n\tlet pending = dirtyNode();\n\tlet hasPending = false;\n\tlet baseline: JsonValue | undefined;\n\tlet forceBase = true;\n\n\tconst clearPending = (): void => {\n\t\tpending = dirtyNode();\n\t\thasPending = false;\n\t};\n\n\tconst ensureNode = (path: Path): DirtyNode | undefined => {\n\t\thasPending = true;\n\t\tlet node = pending;\n\t\tfor (const segment of path) {\n\t\t\tif (node.valueDirty || node.array?.kind === \"diff\" || node.array?.kind === \"replace\") return undefined;\n\t\t\tlet child = node.children.get(segment);\n\t\t\tif (child === undefined) child = dirtyNode();\n\t\t\telse node.children.delete(segment);\n\t\t\tnode.children.set(segment, child);\n\t\t\tnode = child;\n\t\t}\n\t\treturn node;\n\t};\n\n\tconst findNode = (path: Path): DirtyNode | undefined => {\n\t\tlet node = pending;\n\t\tfor (const segment of path) {\n\t\t\tconst child = node.children.get(segment);\n\t\t\tif (child === undefined) return undefined;\n\t\t\tnode = child;\n\t\t}\n\t\treturn node;\n\t};\n\n\tconst markValue = (path: Path): void => {\n\t\tconst node = ensureNode(path);\n\t\tif (node === undefined) return;\n\t\tnode.valueDirty = true;\n\t\tnode.array = undefined;\n\t\tnode.children.clear();\n\t};\n\n\tconst markArrayAppend = (path: Path, start: number): void => {\n\t\tconst node = ensureNode(path);\n\t\tif (node === undefined || node.valueDirty || node.array?.kind === \"diff\" || node.array?.kind === \"replace\") {\n\t\t\treturn;\n\t\t}\n\t\tif (node.array === undefined) node.array = { kind: \"append\", start };\n\t};\n\n\tconst markArrayDiff = (path: Path): void => {\n\t\tconst node = ensureNode(path);\n\t\tif (node === undefined || node.valueDirty || node.array?.kind === \"replace\") return;\n\t\tnode.array = { kind: \"diff\" };\n\t\tnode.children.clear();\n\t};\n\n\tconst markArrayReplace = (path: Path): void => {\n\t\tconst node = ensureNode(path);\n\t\tif (node === undefined || node.valueDirty) return;\n\t\tnode.array = { kind: \"replace\" };\n\t\tnode.children.clear();\n\t};\n\n\tconst appendStart = (path: Path): number | undefined => {\n\t\tconst array = findNode(path)?.array;\n\t\treturn array?.kind === \"append\" ? array.start : undefined;\n\t};\n\n\tconst guard = (segment: Seg | symbol): Seg => {\n\t\tif (typeof segment === \"symbol\") throw new UnsafePathError(String(segment));\n\t\tif (typeof segment === \"string\" && RESERVED_SEGMENTS.has(segment)) throw new UnsafePathError(segment);\n\t\treturn segment;\n\t};\n\n\tconst adoptItems = (values: readonly unknown[]): JsonValue[] => values as JsonValue[];\n\n\tconst integer = (value: unknown): number => {\n\t\tconst number = Number(value);\n\t\tif (Number.isNaN(number) || number === 0) return 0;\n\t\treturn Number.isFinite(number) ? Math.trunc(number) : number;\n\t};\n\n\tconst spliceRange = (length: number, args: readonly unknown[]): { index: number; remove: number } => {\n\t\tconst rawStart = args.length === 0 ? 0 : integer(args[0]);\n\t\tconst index = rawStart < 0 ? Math.max(0, length + rawStart) : Math.min(rawStart, length);\n\t\tconst remove =\n\t\t\targs.length === 0\n\t\t\t\t? 0\n\t\t\t\t: args.length === 1\n\t\t\t\t\t? length - index\n\t\t\t\t\t: Math.max(0, Math.min(integer(args[1]), length - index));\n\t\treturn { index, remove };\n\t};\n\n\tconst wrap = <V extends object>(object: V, path: Path, blockedSegment?: Seg): V => {\n\t\tconst childProxies = new Map<string | symbol, { target: object; proxy: object }>();\n\t\tconst proxy = new Proxy(object, {\n\t\t\tget(target, key, receiver) {\n\t\t\t\tif (Array.isArray(target) && typeof key === \"string\" && MUTATORS.has(key)) {\n\t\t\t\t\treturn (...args: unknown[]) => {\n\t\t\t\t\t\tif (blockedSegment !== undefined) throw new UnsafePathError(blockedSegment);\n\t\t\t\t\t\tconst before = target.length;\n\t\t\t\t\t\tlet result: unknown;\n\t\t\t\t\t\tswitch (key) {\n\t\t\t\t\t\t\tcase \"push\": {\n\t\t\t\t\t\t\t\tconst items = adoptItems(args);\n\t\t\t\t\t\t\t\tif (items.length > 0) markArrayAppend(path, before);\n\t\t\t\t\t\t\t\tspliceItems(target, before, 0, items);\n\t\t\t\t\t\t\t\tresult = target.length;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcase \"unshift\": {\n\t\t\t\t\t\t\t\tconst items = adoptItems(args);\n\t\t\t\t\t\t\t\tif (items.length > 0) markArrayDiff(path);\n\t\t\t\t\t\t\t\tspliceItems(target, 0, 0, items);\n\t\t\t\t\t\t\t\tresult = target.length;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcase \"pop\":\n\t\t\t\t\t\t\t\tif (before > 0) {\n\t\t\t\t\t\t\t\t\tconst start = appendStart(path);\n\t\t\t\t\t\t\t\t\tif (start === undefined || before - 1 < start) markArrayDiff(path);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tresult = Reflect.apply(Array.prototype.pop, target, args);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase \"shift\":\n\t\t\t\t\t\t\t\tif (before > 0) markArrayDiff(path);\n\t\t\t\t\t\t\t\tresult = Reflect.apply(Array.prototype.shift, target, args);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase \"splice\": {\n\t\t\t\t\t\t\t\tconst items = adoptItems(args.slice(2));\n\t\t\t\t\t\t\t\tconst { index, remove } = spliceRange(before, args);\n\t\t\t\t\t\t\t\tif (remove > 0 || items.length > 0) {\n\t\t\t\t\t\t\t\t\tconst start = appendStart(path);\n\t\t\t\t\t\t\t\t\tif (index === 0 && remove === before) markArrayReplace(path);\n\t\t\t\t\t\t\t\t\telse if (start !== undefined && index >= start) {\n\t\t\t\t\t\t\t\t\t\t// The final append payload includes all tail edits.\n\t\t\t\t\t\t\t\t\t} else if (index === before && remove === 0) markArrayAppend(path, before);\n\t\t\t\t\t\t\t\t\telse markArrayDiff(path);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tresult = spliceItems(target, index, remove, items);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tmarkArrayDiff(path);\n\t\t\t\t\t\t\t\tresult = Reflect.apply(Array.prototype[key as \"sort\"], target, args);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (key === \"pop\") childProxies.delete(String(before - 1));\n\t\t\t\t\t\telse if (key !== \"push\") childProxies.clear();\n\t\t\t\t\t\treturn key === \"sort\" || key === \"reverse\" || key === \"fill\" || key === \"copyWithin\" ? proxy : result;\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst value = Reflect.get(target, key, receiver);\n\t\t\t\tif (!isObj(value)) return value;\n\t\t\t\tconst cached = childProxies.get(key);\n\t\t\t\tif (cached?.target === value) return cached.proxy;\n\t\t\t\tconst rawSegment = norm(target, key);\n\t\t\t\tlet segment: Seg;\n\t\t\t\tlet childBlocked = blockedSegment;\n\t\t\t\tif (blockedSegment !== undefined) {\n\t\t\t\t\tif (typeof rawSegment === \"symbol\") throw new UnsafePathError(String(rawSegment));\n\t\t\t\t\tsegment = rawSegment;\n\t\t\t\t} else if (\n\t\t\t\t\ttypeof rawSegment === \"string\" &&\n\t\t\t\t\tRESERVED_SEGMENTS.has(rawSegment) &&\n\t\t\t\t\tObject.hasOwn(target, key)\n\t\t\t\t) {\n\t\t\t\t\tsegment = rawSegment;\n\t\t\t\t\tchildBlocked = rawSegment;\n\t\t\t\t} else segment = guard(rawSegment);\n\t\t\t\tconst child = wrap(value, [...path, segment], childBlocked);\n\t\t\t\tchildProxies.set(key, { target: value, proxy: child });\n\t\t\t\treturn child;\n\t\t\t},\n\n\t\t\tset(target, key, value) {\n\t\t\t\tif (blockedSegment !== undefined) throw new UnsafePathError(blockedSegment);\n\t\t\t\tif (Array.isArray(target) && key === \"length\") {\n\t\t\t\t\tconst before = target.length;\n\t\t\t\t\tconst next = Number(value);\n\t\t\t\t\tif (!Number.isSafeInteger(next) || next < 0 || next > 4_294_967_295) {\n\t\t\t\t\t\treturn Reflect.set(target, key, value);\n\t\t\t\t\t}\n\t\t\t\t\tif (next < before) {\n\t\t\t\t\t\tconst start = appendStart(path);\n\t\t\t\t\t\tif (next === 0) markArrayReplace(path);\n\t\t\t\t\t\telse if (start === undefined || next < start) markArrayDiff(path);\n\t\t\t\t\t\tReflect.set(target, key, next);\n\t\t\t\t\t\tchildProxies.clear();\n\t\t\t\t\t} else if (next > before) {\n\t\t\t\t\t\tmarkArrayAppend(path, before);\n\t\t\t\t\t\ttarget.length = next;\n\t\t\t\t\t\ttarget.fill(null, before);\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tconst segment = guard(norm(target, key));\n\t\t\t\tif (Array.isArray(target)) {\n\t\t\t\t\tif (typeof segment !== \"number\") throw new UnsafePathError(segment);\n\t\t\t\t\tif (segment > target.length) throw new UnsafePathError(segment);\n\t\t\t\t}\n\t\t\t\tconst at = [...path, segment] as unknown as NonEmptyPath;\n\n\t\t\t\tif (value === undefined) {\n\t\t\t\t\tif (Array.isArray(target)) {\n\t\t\t\t\t\tthrow new TypeError(\"undefined would create a sparse array; use splice instead\");\n\t\t\t\t\t}\n\t\t\t\t\tmarkValue(at);\n\t\t\t\t\tchildProxies.delete(key);\n\t\t\t\t\treturn Reflect.deleteProperty(target, key);\n\t\t\t\t}\n\n\t\t\t\tconst previous = (target as Record<string | symbol, unknown>)[key];\n\t\t\t\tif (previous === value) return true;\n\t\t\t\tconst cached = childProxies.get(key);\n\t\t\t\tif (cached !== undefined && cached.target === previous && cached.proxy === value) return true;\n\t\t\t\tif (Array.isArray(target)) {\n\t\t\t\t\tconst index = segment as number;\n\t\t\t\t\tif (index === target.length) markArrayAppend(path, target.length);\n\t\t\t\t\telse {\n\t\t\t\t\t\tconst start = appendStart(path);\n\t\t\t\t\t\tif (start === undefined || index < start) markValue(at);\n\t\t\t\t\t}\n\t\t\t\t} else markValue(at);\n\t\t\t\tchildProxies.delete(key);\n\t\t\t\treturn Reflect.set(target, key, value);\n\t\t\t},\n\n\t\t\tdeleteProperty(target, key) {\n\t\t\t\tif (blockedSegment !== undefined) throw new UnsafePathError(blockedSegment);\n\t\t\t\tconst segment = guard(norm(target, key));\n\t\t\t\tif (Array.isArray(target)) {\n\t\t\t\t\tif (typeof segment !== \"number\") throw new UnsafePathError(segment);\n\t\t\t\t\tthrow new TypeError(\"delete would create a sparse array; use splice instead\");\n\t\t\t\t}\n\t\t\t\tmarkValue([...path, segment]);\n\t\t\t\tchildProxies.delete(key);\n\t\t\t\treturn Reflect.deleteProperty(target, key);\n\t\t\t},\n\n\t\t\tdefineProperty() {\n\t\t\t\tthrow new TypeError(\"defineProperty is not supported on tracked state; use assignment\");\n\t\t\t},\n\t\t\tsetPrototypeOf() {\n\t\t\t\tthrow new TypeError(\"setPrototypeOf is not supported on tracked state\");\n\t\t\t},\n\t\t\tpreventExtensions() {\n\t\t\t\tthrow new TypeError(\"preventExtensions is not supported on tracked state\");\n\t\t\t},\n\t\t});\n\n\t\treturn proxy as V;\n\t};\n\n\tlet state = wrap(root, []);\n\n\treturn {\n\t\tget state() {\n\t\t\treturn state;\n\t\t},\n\t\tget target() {\n\t\t\treturn root;\n\t\t},\n\t\tset state(next: T) {\n\t\t\tif (next === state) {\n\t\t\t\tclearPending();\n\t\t\t\tforceBase = true;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tclearPending();\n\t\t\troot = next;\n\t\t\tstate = wrap(root, []);\n\t\t\tbaseline = undefined;\n\t\t\tforceBase = true;\n\t\t},\n\t\trebase() {\n\t\t\tclearPending();\n\t\t\tforceBase = true;\n\t\t},\n\t\tget dirty() {\n\t\t\treturn forceBase || hasPending;\n\t\t},\n\t\tdiscard() {\n\t\t\tbaseline = cloneJson(root as unknown as JsonValue);\n\t\t\tclearPending();\n\t\t},\n\t\tflush() {\n\t\t\tif (forceBase) {\n\t\t\t\tconst value = cloneJson(root as unknown as JsonValue);\n\t\t\t\tbaseline = cloneJson(root as unknown as JsonValue);\n\t\t\t\tforceBase = false;\n\t\t\t\tclearPending();\n\t\t\t\treturn [[\"r\", value]];\n\t\t\t}\n\t\t\tif (!hasPending || baseline === undefined) return [];\n\t\t\tconst out: Op[] = [];\n\t\t\twalkDirty(baseline, root as unknown as JsonValue, pending, [], scan, out);\n\t\t\t// Advance the baseline by SHARING references from root where that is\n\t\t\t// cheap and exact — scalars, strings, and array appends. Replaying the\n\t\t\t// ops rebuilds every touched string via slice + concat: two window-sized\n\t\t\t// allocations per flush and a cons the next flush must flatten. For\n\t\t\t// anything the sync cannot express cheaply (a non-append array change),\n\t\t\t// it declines and the original replay runs unchanged.\n\t\t\tif (!syncBaseline(baseline as JsonValue, root as unknown as JsonValue, pending)) {\n\t\t\t\tif (out.length > 0) baseline = apply(baseline, out.map(cloneOp));\n\t\t\t}\n\t\t\tclearPending();\n\t\t\treturn out;\n\t\t},\n\t};\n}\n\n// ─── Path safety ─────────────────────────────────────────────────────────────\n\n/**\n * Segments that reach the prototype chain.\n *\n * `JSON.parse` is safe on its own — it makes `__proto__` an own property. What is\n * not safe is `parent[key] = value`, which is exactly what an applier does, and\n * paths are data: `[\"s\", [\"__proto__\", \"isAdmin\"], true]` pollutes\n * `Object.prototype` for the whole process.\n *\n * Ops arrive from a facet, a plugin compartment, or a tool whose details may echo\n * model output, so none of it is trusted input.\n */\nexport const RESERVED_SEGMENTS: ReadonlySet<string> = new Set([\"__proto__\", \"constructor\", \"prototype\"]);\n\nexport class UnsafePathError extends Error {\n\t// Not a parameter property: Node's --experimental-strip-types rejects those,\n\t// and these files are meant to run under it directly.\n\treadonly segment: Seg;\n\tconstructor(segment: Seg) {\n\t\tsuper(`unsafe path segment: ${String(segment)}`);\n\t\tthis.segment = segment;\n\t\tthis.name = \"UnsafePathError\";\n\t}\n}\n\n/**\n * Verb, arity and payload shape for a **decoded** op: paths inline, no `#`, no\n * short forms. `apply` uses this.\n *\n * Validating `Op` against the wire grammar would be laxer than the type: a\n * two-element `[\"s\", value]` would pass, and `apply` would then read the value as\n * a path. Each vocabulary gets the validator that matches it.\n */\nexport function assertValidOp(op: unknown): asserts op is Op {\n\tif (!Array.isArray(op) || op.length === 0) throw new TypeError(\"op is not a tuple\");\n\tswitch (op[0]) {\n\t\tcase \"r\":\n\t\t\tif (op.length !== 2) throw new TypeError(\"r arity\");\n\t\t\treturn;\n\t\tcase \"s\":\n\t\t\tif (op.length !== 3) throw new TypeError(\"s arity\");\n\t\t\tassertPathArg(op[1], true);\n\t\t\treturn;\n\t\tcase \"d\":\n\t\t\tif (op.length !== 2) throw new TypeError(\"d arity\");\n\t\t\tassertPathArg(op[1], true);\n\t\t\treturn;\n\t\tcase \"a\":\n\t\t\tif (op.length !== 3 || typeof op[2] !== \"string\") throw new TypeError(\"a shape\");\n\t\t\tassertPathArg(op[1], true);\n\t\t\treturn;\n\t\tcase \"t\":\n\t\t\tif (op.length !== 3 || !Number.isInteger(op[2]) || op[2] < 0) throw new TypeError(\"t shape\");\n\t\t\tassertPathArg(op[1], true);\n\t\t\treturn;\n\t\tcase \"p\": {\n\t\t\tif (op.length !== 5) throw new TypeError(\"p arity\");\n\t\t\tassertPathArg(op[1]);\n\t\t\tif (!Number.isInteger(op[2]) || op[2] < 0) throw new TypeError(\"p index\");\n\t\t\tif (!Number.isInteger(op[3]) || op[3] < 0) throw new TypeError(\"p remove\");\n\t\t\tif (!Array.isArray(op[4])) throw new TypeError(\"p items\");\n\t\t\treturn;\n\t\t}\n\t\t// Silently skipping an unknown verb is how a newer producer's op vanishes.\n\t\tdefault:\n\t\t\tthrow new TypeError(`unknown op verb: ${String(op[0])}`);\n\t}\n}\n\nfunction assertPathArg(p: unknown, nonEmpty = false): void {\n\tif (!Array.isArray(p)) throw new TypeError(\"path is not an array\");\n\tif (nonEmpty && p.length === 0) throw new TypeError(\"path is empty\");\n\tassertSafePath(p as Path);\n}\n\n/** The same, for the wire grammar: ids and short forms are legal here. */\nexport function assertValidWireOp(op: unknown): asserts op is WireOp {\n\tif (!Array.isArray(op) || op.length === 0) throw new TypeError(\"op is not a tuple\");\n\tconst [verb] = op as unknown[];\n\tconst okRef = (r: unknown): void => {\n\t\tif (typeof r === \"number\") {\n\t\t\tif (!Number.isInteger(r) || r < 0) throw new TypeError(\"bad path id\");\n\t\t\treturn;\n\t\t}\n\t\t// A string is not a path. Unchecked, `\"a\".slice(0, -1)` is `\"\"`, so it\n\t\t// resolves to the ROOT and writes there — a path that is not a path, accepted.\n\t\tif (!Array.isArray(r)) throw new TypeError(\"path is not an array\");\n\t\tassertSafePath(r as Path);\n\t};\n\tswitch (verb) {\n\t\tcase \"r\":\n\t\t\tif (op.length !== 2) throw new TypeError(\"r arity\");\n\t\t\treturn;\n\t\tcase \"s\":\n\t\t\tif (op.length === 3) okRef(op[1]);\n\t\t\telse if (op.length !== 2) throw new TypeError(\"s arity\");\n\t\t\treturn;\n\t\tcase \"d\":\n\t\t\tif (op.length === 2) okRef(op[1]);\n\t\t\telse if (op.length !== 1) throw new TypeError(\"d arity\");\n\t\t\treturn;\n\t\tcase \"a\":\n\t\t\tif (op.length === 3) {\n\t\t\t\tokRef(op[1]);\n\t\t\t\tif (typeof op[2] !== \"string\") throw new TypeError(\"a value\");\n\t\t\t} else if (op.length === 2) {\n\t\t\t\tif (typeof op[1] !== \"string\") throw new TypeError(\"a value\");\n\t\t\t} else throw new TypeError(\"a arity\");\n\t\t\treturn;\n\t\tcase \"t\":\n\t\t\tif (op.length === 3) {\n\t\t\t\tokRef(op[1]);\n\t\t\t\tif (!Number.isInteger(op[2]) || (op[2] as number) < 0) throw new TypeError(\"t count\");\n\t\t\t} else if (op.length === 2) {\n\t\t\t\tif (!Number.isInteger(op[1]) || (op[1] as number) < 0) throw new TypeError(\"t count\");\n\t\t\t} else throw new TypeError(\"t arity\");\n\t\t\treturn;\n\t\tcase \"p\": {\n\t\t\tconst [i, r, items] = op.length === 5 ? [op[2], op[3], op[4]] : op.length === 4 ? [op[1], op[2], op[3]] : [];\n\t\t\tif (items === undefined) throw new TypeError(\"p arity\");\n\t\t\tif (op.length === 5) okRef(op[1]);\n\t\t\tif (!Number.isInteger(i) || (i as number) < 0) throw new TypeError(\"p index\");\n\t\t\tif (!Number.isInteger(r) || (r as number) < 0) throw new TypeError(\"p remove\");\n\t\t\tif (!Array.isArray(items)) throw new TypeError(\"p items\");\n\t\t\treturn;\n\t\t}\n\t\tcase \"#\": {\n\t\t\tif (op.length !== 3 || !Number.isInteger(op[1]) || (op[1] as number) < 0 || !Array.isArray(op[2])) {\n\t\t\t\tthrow new TypeError(\"# shape\");\n\t\t\t}\n\t\t\tassertSafePath(op[2] as Path);\n\t\t\treturn;\n\t\t}\n\t\t// Silently skipping an unknown verb is how a newer producer's op vanishes.\n\t\tdefault:\n\t\t\tthrow new TypeError(`unknown op verb: ${String(verb)}`);\n\t}\n}\n\nexport function assertSafePath(path: Path): void {\n\tfor (const seg of path) {\n\t\tif (typeof seg === \"string\") {\n\t\t\tif (RESERVED_SEGMENTS.has(seg)) throw new UnsafePathError(seg);\n\t\t} else if (!Number.isInteger(seg) || seg < 0) {\n\t\t\tthrow new UnsafePathError(seg);\n\t\t}\n\t}\n}\n\n/**\n * An index may address an existing element or append exactly one past the end.\n *\n * This is not an arbitrary cap — it is what keeps the value a `JsonValue`. A\n * sparse array does not survive a JSON round trip: holes serialise to `null` and\n * return as real properties, so `arr[7] = x` on a length-3 array already produces\n * state a replica cannot match. Rejecting the write is more honest than silently\n * diverging.\n *\n * It also removes the denial of service it would otherwise permit:\n * `[\"s\", [\"xs\", 4294967290], 1]` allocates a 4.29-billion-entry array from one op.\n * Growth stays possible and stays proportional — the tracker already emits\n * `arr.length = n` as a splice of explicit nulls, whose op size grows with the\n * gap, so a large growth costs a large op rather than a small one.\n */\nfunction assertIndexInRange(parent: readonly unknown[], index: number): void {\n\tif (index > parent.length) throw new UnsafePathError(index);\n}\n\n// ─── Applier ─────────────────────────────────────────────────────────────────\n\nexport class PathError extends Error {\n\treadonly path: Path | number;\n\tconstructor(path: Path | number) {\n\t\tsuper(`unresolvable path: ${JSON.stringify(path)}`);\n\t\tthis.path = path;\n\t\tthis.name = \"PathError\";\n\t}\n}\n\n/**\n * Apply ops to a plain mutable value. Returns the value, because `r` replaces it\n * outright and cannot be done in place.\n *\n * Takes decoded ops. Path ids and omitted paths are a wire concern — run\n * `decode` first if the ops came from a boundary.\n */\nexport function apply<T>(target: T | undefined, ops: readonly Op[]): T {\n\treturn applyOps(target, ops);\n}\n\nfunction applyOps<T>(target: T | undefined, ops: readonly Op[]): T {\n\tlet root = target as unknown as JsonValue;\n\n\tfor (const op of ops) {\n\t\tassertValidOp(op);\n\t\tif (op[0] === \"r\") {\n\t\t\t// Adopted, not copied. The consumer owns the batch it was handed.\n\t\t\t//\n\t\t\t// Fanning one batch out to several consumers in-process therefore makes\n\t\t\t// their replicas alias each other. That is an ownership rule, not a\n\t\t\t// defect: copy the batch at the fan-out point, or let each consumer\n\t\t\t// decode its own. A batch that crosses a real boundary is already\n\t\t\t// distinct, because serialisation produces fresh objects.\n\t\t\troot = op[1];\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst path = op[1];\n\t\tassertSafePath(path);\n\n\t\tif (op[0] === \"p\") {\n\t\t\tconst target_ = path.length === 0 ? root : resolve(root, path);\n\t\t\tif (!Array.isArray(target_)) throw new PathError(path);\n\t\t\ttarget_.splice(op[2], op[3]);\n\t\t\tconst chunkSize = 10_000;\n\t\t\tfor (let offset = 0; offset < op[4].length; offset += chunkSize) {\n\t\t\t\ttarget_.splice(op[2] + offset, 0, ...op[4].slice(offset, offset + chunkSize));\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\t// s/d/a/t can never target the root — the type forbids it.\n\t\tconst parent = resolve(root, path.slice(0, -1)) as Record<Seg, JsonValue>;\n\t\tconst key = path[path.length - 1]!;\n\t\tif (Array.isArray(parent)) {\n\t\t\tif (typeof key !== \"number\") throw new UnsafePathError(key);\n\t\t\tassertIndexInRange(parent, key);\n\t\t}\n\t\t// defineProperty rather than assignment: a setter inherited from the prototype\n\t\t// chain would otherwise run on write.\n\t\tconst write = (value: JsonValue) => {\n\t\t\tObject.defineProperty(parent, key, { value, writable: true, enumerable: true, configurable: true });\n\t\t};\n\t\tconst read = (): unknown => (Object.hasOwn(parent, key) ? parent[key] : undefined);\n\t\tswitch (op[0]) {\n\t\t\tcase \"s\":\n\t\t\t\twrite(op[2]);\n\t\t\t\tbreak;\n\t\t\tcase \"d\":\n\t\t\t\tif (Array.isArray(parent)) {\n\t\t\t\t\tif (typeof key !== \"number\" || key >= parent.length) throw new PathError(path);\n\t\t\t\t\t(parent as unknown as JsonValue[]).splice(key, 1);\n\t\t\t\t} else delete parent[key];\n\t\t\t\tbreak;\n\t\t\tcase \"a\": {\n\t\t\t\tconst current = read();\n\t\t\t\tif (typeof current !== \"string\") throw new PathError(path);\n\t\t\t\twrite(`${current}${op[2]}`);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"t\": {\n\t\t\t\tconst current = read();\n\t\t\t\tif (typeof current !== \"string\") throw new PathError(path);\n\t\t\t\twrite(current.slice(op[2]));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn root as unknown as T;\n}\n\n/** Apply decoded operations without mutating the previous immutable value. */\nexport function applyImmutable<T>(target: T | undefined, ops: readonly Op[]): T {\n\tlet root = target as unknown as JsonValue;\n\tfor (const op of ops) {\n\t\tif (op[0] === \"r\") {\n\t\t\tassertValidOp(op);\n\t\t\troot = op[1];\n\t\t\tcontinue;\n\t\t}\n\t\troot = copyContainers(root, op[0] === \"p\" ? op[1] : op[1].slice(0, -1));\n\t\troot = applyOps(root, [op]);\n\t}\n\treturn root as unknown as T;\n}\n\nfunction copyContainers(root: JsonValue, path: Path): JsonValue {\n\tconst copy = (value: JsonValue): JsonValue[] | Record<string, JsonValue> => {\n\t\tif (Array.isArray(value)) return value.slice();\n\t\tif (!isObj(value)) throw new PathError(path);\n\t\tconst result = Object.create(Object.getPrototypeOf(value) === null ? null : Object.prototype) as Record<\n\t\t\tstring,\n\t\t\tJsonValue\n\t\t>;\n\t\tfor (const key of Object.keys(value)) {\n\t\t\tObject.defineProperty(result, key, {\n\t\t\t\tvalue: (value as Record<string, JsonValue>)[key],\n\t\t\t\twritable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t});\n\t\t}\n\t\treturn result;\n\t};\n\tconst copiedRoot = copy(root);\n\tlet source = root;\n\tlet destination = copiedRoot;\n\tfor (const segment of path) {\n\t\tif (!isObj(source) || !Object.hasOwn(source, segment)) throw new PathError(path);\n\t\tif (Array.isArray(source) && typeof segment !== \"number\") throw new UnsafePathError(segment);\n\t\tconst child = (source as Record<Seg, JsonValue>)[segment]!;\n\t\tconst copiedChild = copy(child);\n\t\tObject.defineProperty(destination, segment, {\n\t\t\tvalue: copiedChild,\n\t\t\twritable: true,\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t});\n\t\tsource = child;\n\t\tdestination = copiedChild;\n\t}\n\treturn copiedRoot;\n}\n\nfunction resolveValue(root: JsonValue, path: Path): JsonValue {\n\tlet node: JsonValue = root;\n\tfor (const seg of path) {\n\t\tif (!isObj(node)) throw new PathError(path);\n\t\tif (Array.isArray(node) && typeof seg !== \"number\") throw new UnsafePathError(seg);\n\t\t// Own properties only: an inherited getter must not run, and a walk must not\n\t\t// escape the value into the prototype chain.\n\t\tif (!Object.hasOwn(node, seg as PropertyKey)) throw new PathError(path);\n\t\tnode = (node as Record<Seg, JsonValue>)[seg]!;\n\t}\n\treturn node;\n}\n\nfunction resolve(root: JsonValue, path: Path): JsonValue {\n\tconst node = resolveValue(root, path);\n\tif (!isObj(node)) throw new PathError(path);\n\treturn node;\n}\n\n// ─── Codec ───────────────────────────────────────────────────────────────────\n//\n// Path interning and arity omission live between the tracker and a boundary;\n// `Op` and `apply` know nothing about them.\n//\n// ONE PAIR PER INDEPENDENT STATE STREAM. Every decoder must observe exactly the\n// batches encoded by its matching encoder, beginning with that state's base.\n// Sharing a transport connection does not make separately hydrated states one\n// stream.\n\nconst pathKey = (path: Path): string => JSON.stringify(path);\n\nexport interface Encoder {\n\tencode(ops: readonly Op[]): WireOp[];\n}\n\n/**\n * Intern on SECOND use. A definition costs more than the path it replaces, so\n * interning on first use loses on the many paths written exactly once.\n */\nexport function encoder(): Encoder {\n\tconst seen = new Set<string>();\n\tconst ids = new Map<string, number>();\n\tlet nextId = 0;\n\tlet previous: string | undefined; // last path in THIS batch\n\n\treturn {\n\t\tencode(ops) {\n\t\t\t// Arity omission is scoped to a batch. Letting it span batches would make\n\t\t\t// a batch's first op depend on the previous batch's last one, so a reader\n\t\t\t// that skips or reorders a batch decodes into the wrong path. Ids are the\n\t\t\t// only cross-batch state, and the dictionary makes those explicit.\n\t\t\tprevious = undefined;\n\t\t\tconst out: WireOp[] = [];\n\t\t\tfor (const op of ops) {\n\t\t\t\tif (op[0] === \"r\") {\n\t\t\t\t\tout.push(op);\n\t\t\t\t\t// A base batch is a RECOVERY POINT: a reader replays from the last one\n\t\t\t\t\t// with a fresh decoder. So everything after it must be self-contained.\n\t\t\t\t\t// Keeping ids across a replacement emits references to definitions the\n\t\t\t\t\t// reader never saw — recovery fails with an unresolvable path id.\n\t\t\t\t\tseen.clear();\n\t\t\t\t\tids.clear();\n\t\t\t\t\tnextId = 0;\n\t\t\t\t\tprevious = undefined;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst path = op[1];\n\t\t\t\tconst key = pathKey(path);\n\n\t\t\t\t// Same path as the previous op: drop the ref entirely.\n\t\t\t\tif (key === previous) {\n\t\t\t\t\tswitch (op[0]) {\n\t\t\t\t\t\tcase \"s\":\n\t\t\t\t\t\t\tout.push([\"s\", op[2]]);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"d\":\n\t\t\t\t\t\t\tout.push([\"d\"]);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"a\":\n\t\t\t\t\t\t\tout.push([\"a\", op[2]]);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"t\":\n\t\t\t\t\t\t\tout.push([\"t\", op[2]]);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"p\":\n\t\t\t\t\t\t\tout.push([\"p\", op[2], op[3], op[4]]);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tlet ref: PathRef = path;\n\t\t\t\tconst existing = ids.get(key);\n\t\t\t\tif (existing !== undefined) {\n\t\t\t\t\tref = existing;\n\t\t\t\t} else if (seen.has(key)) {\n\t\t\t\t\tconst id = nextId++;\n\t\t\t\t\tids.set(key, id);\n\t\t\t\t\tout.push([\"#\", id, path]); // second use: define, then reference\n\t\t\t\t\tref = id;\n\t\t\t\t} else {\n\t\t\t\t\tseen.add(key); // first use: inline\n\t\t\t\t}\n\n\t\t\t\tswitch (op[0]) {\n\t\t\t\t\tcase \"s\":\n\t\t\t\t\t\tout.push([\"s\", ref as PathRef<NonEmptyPath>, op[2]]);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"d\":\n\t\t\t\t\t\tout.push([\"d\", ref as PathRef<NonEmptyPath>]);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"a\":\n\t\t\t\t\t\tout.push([\"a\", ref as PathRef<NonEmptyPath>, op[2]]);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"t\":\n\t\t\t\t\t\tout.push([\"t\", ref as PathRef<NonEmptyPath>, op[2]]);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"p\":\n\t\t\t\t\t\tout.push([\"p\", ref, op[2], op[3], op[4]]);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tprevious = key;\n\t\t\t}\n\t\t\treturn out;\n\t\t},\n\t};\n}\n\nexport interface Decoder {\n\tdecode(wire: readonly WireOp[]): Op[];\n}\n\nexport function decoder(): Decoder {\n\tconst paths = new Map<number, Path>();\n\n\treturn {\n\t\tdecode(wire) {\n\t\t\tlet previous: Path | undefined; // scoped to the batch, as in encode\n\t\t\tconst out: Op[] = [];\n\t\t\tfor (const op of wire) {\n\t\t\t\tassertValidWireOp(op);\n\t\t\t\tif (op[0] === \"#\") {\n\t\t\t\t\tassertSafePath(op[2]);\n\t\t\t\t\tpaths.set(op[1], op[2]);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (op[0] === \"r\") {\n\t\t\t\t\tout.push(op);\n\t\t\t\t\tpaths.clear();\n\t\t\t\t\tprevious = undefined;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Arity tells us whether a ref is present: the short forms omit it.\n\t\t\t\tconst short =\n\t\t\t\t\t(op[0] === \"d\" && op.length === 1) ||\n\t\t\t\t\t(op[0] !== \"d\" && op[0] !== \"p\" && op.length === 2) ||\n\t\t\t\t\t(op[0] === \"p\" && op.length === 4);\n\n\t\t\t\tlet path: Path;\n\t\t\t\tif (short) {\n\t\t\t\t\tif (previous === undefined) throw new PathError([]);\n\t\t\t\t\tpath = previous;\n\t\t\t\t} else {\n\t\t\t\t\tconst ref = op[1] as PathRef;\n\t\t\t\t\tif (typeof ref === \"number\") {\n\t\t\t\t\t\tconst resolved = paths.get(ref);\n\t\t\t\t\t\tif (resolved === undefined) throw new PathError(ref);\n\t\t\t\t\t\tpath = resolved;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpath = ref;\n\t\t\t\t\t}\n\t\t\t\t\tprevious = path;\n\t\t\t\t}\n\n\t\t\t\tif (op[0] !== \"p\" && path.length === 0) throw new PathError(path);\n\t\t\t\tswitch (op[0]) {\n\t\t\t\t\tcase \"s\":\n\t\t\t\t\t\tout.push([\"s\", path as NonEmptyPath, (short ? op[1] : op[2]) as JsonValue]);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"d\":\n\t\t\t\t\t\tout.push([\"d\", path as NonEmptyPath]);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"a\":\n\t\t\t\t\t\tout.push([\"a\", path as NonEmptyPath, (short ? op[1] : op[2]) as string]);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"t\":\n\t\t\t\t\t\tout.push([\"t\", path as NonEmptyPath, (short ? op[1] : op[2]) as number]);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"p\": {\n\t\t\t\t\t\tconst [i, r, items] = short\n\t\t\t\t\t\t\t? [op[1] as number, op[2] as number, op[3] as JsonValue[]]\n\t\t\t\t\t\t\t: [op[2] as number, op[3] as number, op[4] as JsonValue[]];\n\t\t\t\t\t\tout.push([\"p\", path, i, r, items]);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn out;\n\t\t},\n\t};\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/delta/index.ts"],"names":[],"mappings":"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","sourcesContent":["import type { JsonValue } from \"../types.ts\";\n\nexport type { JsonValue } from \"../types.ts\";\n\n// ─────────────────────────────────────────────────────────────────────────────\n// chord/delta — operation-log change tracking over plain JSON.\n//\n// Depends on nothing else in the harness. Session storage, the runtime and the\n// facet host consume it; keep the arrows pointing that way.\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport type Seg = string | number;\nexport type Path = readonly Seg[];\nexport type NonEmptyPath = readonly [Seg, ...Seg[]];\n\n/** A path inline, or an id assigned by the encoder on second use. */\nexport type PathRef<P extends Path = Path> = P | number;\n\n/**\n * Tuples are the form — in memory, on the wire, on disk.\n *\n * `r` is the ONLY op that replaces a whole value. `s`/`d`/`a`/`t` cannot target\n * the root: the type forbids it. `p` may, because a tracked value can itself be\n * an array. Operation shape is not canonical: an array may be emptied by either\n * a replacement or a root splice.\n *\n * `Op` knows nothing about the path dictionary. Interning, id references and\n * omitted paths live in `WireOp` and exist only between `encode` and `decode`.\n */\nexport type Op =\n\t| readonly [\"r\", JsonValue]\n\t| readonly [\"s\", NonEmptyPath, JsonValue]\n\t| readonly [\"d\", NonEmptyPath]\n\t| readonly [\"a\", NonEmptyPath, string]\n\t| readonly [\"t\", NonEmptyPath, number]\n\t| readonly [\"p\", Path, number, number, JsonValue[]];\n\n/**\n * What crosses a boundary. Adds two compressions and nothing else:\n *\n * [\"#\", id, path] defines an id, emitted on a path's SECOND use\n * a numeric PathRef references a previously defined id\n * a shortened tuple reuses the previous op's path; arity disambiguates\n *\n * [\"r\", value] carries no path, so it encodes to itself — which is why isBase\n * works unchanged on either vocabulary.\n */\nexport type WireOp =\n\t| readonly [\"r\", JsonValue]\n\t| readonly [\"s\", PathRef<NonEmptyPath>, JsonValue]\n\t| readonly [\"s\", JsonValue]\n\t| readonly [\"d\", PathRef<NonEmptyPath>]\n\t| readonly [\"d\"]\n\t| readonly [\"a\", PathRef<NonEmptyPath>, string]\n\t| readonly [\"a\", string]\n\t| readonly [\"t\", PathRef<NonEmptyPath>, number]\n\t| readonly [\"t\", number]\n\t| readonly [\"p\", PathRef, number, number, JsonValue[]]\n\t| readonly [\"p\", number, number, JsonValue[]]\n\t| readonly [\"#\", number, Path];\n\n// ─── Classification ──────────────────────────────────────────────────────────\n\nexport const isReplace = (op: Op | WireOp): boolean => op[0] === \"r\";\n\n/**\n * A batch begins with a replacement. Flush guarantees `r` is at index 0 or absent,\n * so this is exact rather than a heuristic.\n */\nexport const isBase = (ops: readonly (Op | WireOp)[]): boolean => ops.length > 0 && ops[0]![0] === \"r\";\n\n// ─── Overlap ─────────────────────────────────────────────────────────────────\n\n/**\n * Longest suffix of `a` that is a prefix of `b`. Probes with indexOf and verifies\n * exact substring equality, so the hot loops are native. A hand-written KMP is\n * asymptotically equivalent and much slower in practice.\n *\n * Always correct: the returned n satisfies a.slice(a.length - n) === b.slice(0, n).\n */\nexport function overlap(a: string, b: string, scan: number, probe = 64, maxCandidates = 8): number {\n\tif (a.length === 0 || b.length === 0 || scan === 0) return 0;\n\tconst tail = a.length > scan ? a.slice(a.length - scan) : a;\n\n\t// A probe of length h can only find overlaps of at least h — the head must\n\t// actually occur in `a`. So try a long head first (few candidates, and it\n\t// catches the large overlaps a rolling window produces), then fall back to one\n\t// character, which finds any overlap at the cost of more candidates.\n\t//\n\t// Candidates are bounded because repetitive output — a build log, or any run of\n\t// one character — makes a long head match at thousands of positions. Giving up\n\t// returns 0, which emits a set: larger, never wrong.\n\tfor (const h of [Math.min(probe, b.length), 1]) {\n\t\tconst head = b.slice(0, h);\n\t\tlet tried = 0;\n\t\tfor (let k = tail.indexOf(head); k !== -1; k = tail.indexOf(head, k + 1)) {\n\t\t\tif (++tried > maxCandidates) break;\n\t\t\tconst n = tail.length - k;\n\t\t\tif (n <= b.length && tail.slice(k) === b.slice(0, n)) return n;\n\t\t}\n\t\tif (h === 1) break;\n\t}\n\treturn 0;\n}\n\n// ─── Tracker ─────────────────────────────────────────────────────────────────\n\nexport interface TrackerOptions {\n\tmaxOverlapScan?: number;\n}\n\nexport interface Tracker<T extends object> {\n\t/**\n\t * The tracked value. Mutate and read state only through this proxy. Values\n\t * inserted into it are adopted: callers may retain read-only references, but\n\t * must not mutate them outside this proxy.\n\t */\n\tstate: T;\n\t/** The untracked current value. Mutating it bypasses change tracking. */\n\treadonly target: T;\n\tflush(): Op[];\n\t/** Make the next flush a complete base batch without changing the value. */\n\trebase(): void;\n\t/** Accept pending mutations locally without emitting them. */\n\tdiscard(): void;\n\treadonly dirty: boolean;\n}\n\nconst isObj = (value: unknown): value is object => value !== null && typeof value === \"object\";\nconst cloneJson = <T extends JsonValue>(value: T): T => {\n\tif (!isObj(value)) return value;\n\tif (Array.isArray(value)) return value.map((item) => cloneJson(item)) as T;\n\t// Spread preserves compact object layouts instead of reserving extra slots\n\t// while growing an empty object. Both branches create own writable properties.\n\tconst result = (\n\t\tObject.getPrototypeOf(value) === null ? Object.assign(Object.create(null), value) : { ...value }\n\t) as Record<string, JsonValue>;\n\tfor (const key of Object.keys(result)) {\n\t\tconst child = result[key]!;\n\t\tif (isObj(child)) result[key] = cloneJson(child);\n\t}\n\treturn result as T;\n};\n\nconst INDEX = /^(?:0|[1-9]\\d*)$/;\nconst norm = (target: object, key: string | symbol): Seg | symbol =>\n\ttypeof key === \"symbol\" ? key : Array.isArray(target) && INDEX.test(key) ? Number(key) : key;\nconst MUTATORS = new Set([\"push\", \"pop\", \"shift\", \"unshift\", \"splice\", \"sort\", \"reverse\", \"fill\", \"copyWithin\"]);\nconst MISSING = Symbol(\"missing\");\ntype MaybeJson = JsonValue | typeof MISSING;\n\nconst spliceItems = (target: unknown[], index: number, remove: number, items: JsonValue[]): JsonValue[] => {\n\tconst removed = Reflect.apply(Array.prototype.splice, target, [index, remove]) as JsonValue[];\n\tconst chunkSize = 10_000;\n\tfor (let offset = 0; offset < items.length; offset += chunkSize) {\n\t\tReflect.apply(Array.prototype.splice, target, [index + offset, 0, ...items.slice(offset, offset + chunkSize)]);\n\t}\n\treturn removed;\n};\n\nconst jsonEqual = (left: JsonValue, right: JsonValue): boolean => {\n\tif (left === right) return true;\n\tif (!isObj(left) || !isObj(right) || Array.isArray(left) !== Array.isArray(right)) return false;\n\tif (Array.isArray(left) && Array.isArray(right)) {\n\t\tif (left.length !== right.length) return false;\n\t\tfor (let index = 0; index < left.length; index++) {\n\t\t\tif (!jsonEqual(left[index]!, right[index]!)) return false;\n\t\t}\n\t\treturn true;\n\t}\n\tconst leftObject = left as Record<string, JsonValue>;\n\tconst rightObject = right as Record<string, JsonValue>;\n\tconst leftKeys = Object.keys(leftObject);\n\tconst rightKeys = Object.keys(rightObject);\n\tif (leftKeys.length !== rightKeys.length) return false;\n\tfor (const key of leftKeys) {\n\t\tif (!Object.hasOwn(rightObject, key) || !jsonEqual(leftObject[key]!, rightObject[key]!)) return false;\n\t}\n\treturn true;\n};\n\nconst emitSet = (path: Path, value: JsonValue, out: Op[]): void => {\n\tconst snapshot = cloneJson(value);\n\tif (path.length === 0) out.push([\"r\", snapshot]);\n\telse out.push([\"s\", [...path] as unknown as NonEmptyPath, snapshot]);\n};\n\nconst emitDelete = (path: Path, out: Op[]): void => {\n\tif (path.length === 0) throw new TypeError(\"the tracked root cannot be deleted\");\n\tout.push([\"d\", [...path] as unknown as NonEmptyPath]);\n};\n\nconst diffString = (before: string, after: string, path: Path, scan: number, out: Op[]): void => {\n\tif (before === after) return;\n\tif (path.length === 0) {\n\t\temitSet(path, after, out);\n\t\treturn;\n\t}\n\tconst at = [...path] as unknown as NonEmptyPath;\n\t// NOT `after.startsWith(before)`. `after` is usually a cons string — the\n\t// producer just did `s += chunk` — and V8's startsWith walks a cons char by\n\t// char. `slice(...) === before` flattens once and compares with memcmp.\n\t// Measured on a 200 KB string growing by 8 bytes per flush: 845 us -> 42 us.\n\tif (after.length > before.length && after.slice(0, before.length) === before) {\n\t\tout.push([\"a\", at, after.slice(before.length)]);\n\t\treturn;\n\t}\n\tconst shared = overlap(before, after, scan);\n\tif (shared === 0) {\n\t\tout.push([\"s\", at, after]);\n\t\treturn;\n\t}\n\tout.push([\"t\", at, before.length - shared]);\n\tif (after.length > shared) out.push([\"a\", at, after.slice(shared)]);\n};\n\nconst diffValue = (before: MaybeJson, after: MaybeJson, path: Path, scan: number, out: Op[]): void => {\n\tif (before === MISSING) {\n\t\tif (after !== MISSING) emitSet(path, after, out);\n\t\treturn;\n\t}\n\tif (after === MISSING) {\n\t\temitDelete(path, out);\n\t\treturn;\n\t}\n\tif (before === after) return;\n\tif (typeof before === \"string\" && typeof after === \"string\") {\n\t\tdiffString(before, after, path, scan, out);\n\t\treturn;\n\t}\n\tif (Array.isArray(before) && Array.isArray(after)) {\n\t\tdiffArray(before, after, path, scan, out);\n\t\treturn;\n\t}\n\tif (isObj(before) && isObj(after) && !Array.isArray(before) && !Array.isArray(after)) {\n\t\tdiffObject(before as Record<string, JsonValue>, after as Record<string, JsonValue>, path, scan, out);\n\t\treturn;\n\t}\n\temitSet(path, after, out);\n};\n\nfunction diffObject(\n\tbefore: Record<string, JsonValue>,\n\tafter: Record<string, JsonValue>,\n\tpath: Path,\n\tscan: number,\n\tout: Op[],\n): void {\n\tif ([...Object.keys(before), ...Object.keys(after)].some((key) => RESERVED_SEGMENTS.has(key))) {\n\t\temitSet(path, after, out);\n\t\treturn;\n\t}\n\tfor (const key of Object.keys(after)) {\n\t\tdiffValue(Object.hasOwn(before, key) ? before[key]! : MISSING, after[key]!, [...path, key], scan, out);\n\t}\n\tfor (const key of Object.keys(before)) {\n\t\tif (!Object.hasOwn(after, key)) emitDelete([...path, key], out);\n\t}\n}\n\nfunction diffArray(before: JsonValue[], after: JsonValue[], path: Path, scan: number, out: Op[]): void {\n\tif (before.length === after.length) {\n\t\tfor (let index = 0; index < after.length; index++) {\n\t\t\tdiffValue(before[index]!, after[index]!, [...path, index], scan, out);\n\t\t}\n\t\treturn;\n\t}\n\n\tlet prefix = 0;\n\twhile (prefix < before.length && prefix < after.length && jsonEqual(before[prefix]!, after[prefix]!)) prefix++;\n\tlet suffix = 0;\n\twhile (\n\t\tsuffix < before.length - prefix &&\n\t\tsuffix < after.length - prefix &&\n\t\tjsonEqual(before[before.length - 1 - suffix]!, after[after.length - 1 - suffix]!)\n\t) {\n\t\tsuffix++;\n\t}\n\tconst shorter = Math.min(before.length, after.length);\n\tif (prefix + suffix === shorter) {\n\t\tconst remove = before.length - prefix - suffix;\n\t\tconst items = after.slice(prefix, after.length - suffix);\n\t\tif (prefix === 0 && remove === before.length) emitSet(path, after, out);\n\t\telse out.push([\"p\", [...path], prefix, remove, cloneJson(items)]);\n\t\treturn;\n\t}\n\n\t// Structural movement combined with retained-index edits has no unique\n\t// alignment. Preserve the retained index deltas and express only the tail\n\t// length change structurally. It may be broader than the producer's intent,\n\t// but never degrades those edits to a whole-array replacement.\n\tfor (let index = 0; index < shorter; index++) {\n\t\tdiffValue(before[index]!, after[index]!, [...path, index], scan, out);\n\t}\n\tif (after.length > before.length) {\n\t\tout.push([\"p\", [...path], before.length, 0, cloneJson(after.slice(before.length))]);\n\t} else if (before.length > after.length) {\n\t\tif (after.length === 0) emitSet(path, after, out);\n\t\telse out.push([\"p\", [...path], after.length, before.length - after.length, []]);\n\t}\n}\n\nexport function track<T extends object>(root: T, options: TrackerOptions = {}): Tracker<T> {\n\tconst scan = options.maxOverlapScan ?? 65_536;\n\t// Mutations are recorded directly. The active trie supports coalescing while\n\t// retired child generations preserve dominance across array reindexing.\n\ttype Slot = {\n\t\top: Op;\n\t\tdead: boolean;\n\t\torder: number;\n\t\tindex: number;\n\t\tstr?: { anchor: string; value: string };\n\t};\n\ttype LogNode = {\n\t\tslots?: Slot[];\n\t\tkids?: Map<Seg, LogNode>;\n\t\tretiredKids?: Map<Seg, LogNode>[];\n\t\tlastOrder?: number;\n\t};\n\n\tlet log: (Slot | undefined)[] = [];\n\tlet trie: LogNode = {};\n\tlet nextOrder = 0;\n\tlet tombstones = 0;\n\tlet liveSlots = 0;\n\tlet nodeCount = 1;\n\tlet lastAddedSlot: Slot | undefined;\n\tlet hasPending = false;\n\tlet forceBase = true;\n\n\tconst clearPending = (): void => {\n\t\tlog = [];\n\t\ttrie = {};\n\t\tnextOrder = 0;\n\t\ttombstones = 0;\n\t\tliveSlots = 0;\n\t\tnodeCount = 1;\n\t\tlastAddedSlot = undefined;\n\t\thasPending = false;\n\t};\n\n\tconst logNode = (path: Path): LogNode => {\n\t\tlet at = trie;\n\t\tfor (const segment of path) {\n\t\t\tif (!at.kids) at.kids = new Map();\n\t\t\tlet next = at.kids.get(segment);\n\t\t\tif (next === undefined) {\n\t\t\t\tnext = {};\n\t\t\t\tat.kids.set(segment, next);\n\t\t\t\tnodeCount++;\n\t\t\t}\n\t\t\tat = next;\n\t\t}\n\t\treturn at;\n\t};\n\n\tconst findLogNode = (path: Path): LogNode | undefined => {\n\t\tlet at = trie;\n\t\tfor (const segment of path) {\n\t\t\tconst next = at.kids?.get(segment);\n\t\t\tif (next === undefined) return undefined;\n\t\t\tat = next;\n\t\t}\n\t\treturn at;\n\t};\n\n\tconst compactLog = (): void => {\n\t\tif (tombstones < 1_024 || tombstones * 2 < log.length) return;\n\t\tconst compacted: Slot[] = [];\n\t\tfor (const slot of log) {\n\t\t\tif (slot === undefined) continue;\n\t\t\tslot.index = compacted.length;\n\t\t\tcompacted.push(slot);\n\t\t}\n\t\tlog = compacted;\n\t\ttombstones = 0;\n\t};\n\n\tconst killSlot = (slot: Slot): void => {\n\t\tif (slot.dead) return;\n\t\tslot.dead = true;\n\t\tliveSlots--;\n\t\tif (log[slot.index] === slot) {\n\t\t\tlog[slot.index] = undefined;\n\t\t\ttombstones++;\n\t\t}\n\t};\n\n\tconst liveSlot = (at: LogNode): Slot | undefined => {\n\t\tconst slots = at.slots;\n\t\tif (slots === undefined) return undefined;\n\t\twhile (slots.length > 0 && slots[slots.length - 1]!.dead) slots.pop();\n\t\tif (slots.length === 0) {\n\t\t\tat.slots = undefined;\n\t\t\treturn undefined;\n\t\t}\n\t\treturn slots[slots.length - 1];\n\t};\n\n\tconst killHere = (at: LogNode): void => {\n\t\tif (at.slots === undefined) return;\n\t\tfor (const slot of at.slots) killSlot(slot);\n\t\tat.slots = undefined;\n\t};\n\n\tconst addSlot = (at: LogNode, slot: Slot): void => {\n\t\tcompactLog();\n\t\tslot.order = nextOrder++;\n\t\tslot.index = log.length;\n\t\tat.lastOrder = slot.order;\n\t\tif (at.slots === undefined) at.slots = [];\n\t\tat.slots.push(slot);\n\t\tlog.push(slot);\n\t\tliveSlots++;\n\t\tlastAddedSlot = slot;\n\t};\n\n\tconst collapsePending = (): void => {\n\t\t// Long mutation windows can otherwise retain operations and retired path\n\t\t// generations indefinitely. Fall back to a complete snapshot once either\n\t\t// history exceeds a bounded coalescing window. Payload bytes and transient\n\t\t// allocation remain workload-dependent.\n\t\tif (forceBase || (liveSlots <= 4_096 && nodeCount <= 4_096)) return;\n\t\tconst value = cloneJson(root as unknown as JsonValue);\n\t\tclearPending();\n\t\thasPending = true;\n\t\taddSlot(trie, { op: [\"r\", value], dead: false, order: 0, index: 0 });\n\t};\n\n\tconst killSubtree = (at: LogNode): void => {\n\t\tkillHere(at);\n\t\tif (at.kids !== undefined) {\n\t\t\tfor (const child of at.kids.values()) killSubtree(child);\n\t\t\tat.kids = undefined;\n\t\t}\n\t\tif (at.retiredKids !== undefined) {\n\t\t\tfor (const generation of at.retiredKids) {\n\t\t\t\tfor (const child of generation.values()) killSubtree(child);\n\t\t\t}\n\t\t\tat.retiredKids = undefined;\n\t\t}\n\t};\n\n\tconst retireKids = (at: LogNode): void => {\n\t\tif (at.kids === undefined) return;\n\t\tif (at.retiredKids === undefined) at.retiredKids = [];\n\t\tat.retiredKids.push(at.kids);\n\t\tat.kids = undefined;\n\t};\n\n\t// Deepest live ancestor op carrying a payload we can fold a later write into.\n\t// `s`/`r` carry the whole subtree; `p` carries the items it inserted, so a\n\t// write to one of those indices belongs inside the payload rather than after it.\n\tconst foldTarget = (path: Path): { slot: Slot; rest: Path; item?: number } | undefined => {\n\t\tlet at = trie;\n\t\tlet found: { slot: Slot; depth: number; item?: number } | undefined;\n\t\tlet ancestorMax = -1;\n\t\tfor (let depth = 0; depth < path.length; depth++) {\n\t\t\tif (found !== undefined && at.lastOrder !== undefined && at.lastOrder > found.slot.order) {\n\t\t\t\tfound = undefined;\n\t\t\t}\n\t\t\tconst slot = liveSlot(at);\n\t\t\t// A fold is sound only if nothing has been recorded at this path or above it\n\t\t\t// since: a later op there (a splice on the same array, a replacement of an\n\t\t\t// ancestor) would have to apply after this write, not before it. Writes to\n\t\t\t// other branches are irrelevant, which is why this is not \"the most recent op\".\n\t\t\tif (slot !== undefined && slot.order >= ancestorMax && at.lastOrder === slot.order) {\n\t\t\t\tif (slot.op[0] === \"s\" || slot.op[0] === \"r\") found = { slot, depth };\n\t\t\t\telse if (slot.op[0] === \"p\") {\n\t\t\t\t\tconst index = path[depth];\n\t\t\t\t\tconst items = slot.op[4] as JsonValue[];\n\t\t\t\t\tif (typeof index === \"number\" && index >= slot.op[2] && index < slot.op[2] + items.length) {\n\t\t\t\t\t\tfound = { slot, depth: depth + 1, item: index - slot.op[2] };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (at.lastOrder !== undefined && at.lastOrder > ancestorMax) ancestorMax = at.lastOrder;\n\t\t\tconst next = at.kids?.get(path[depth]!);\n\t\t\tif (next === undefined) break;\n\t\t\tat = next;\n\t\t}\n\t\tif (found === undefined) return undefined;\n\t\treturn { slot: found.slot, rest: path.slice(found.depth), item: found.item };\n\t};\n\n\tconst foldInto = (container: JsonValue, rest: Path, op: Op): boolean => {\n\t\tif (rest.length === 0) return false;\n\t\tlet target: JsonValue = container;\n\t\tfor (let index = 0; index < rest.length - 1; index++) {\n\t\t\tif (!isObj(target)) return false;\n\t\t\ttarget = (target as Record<Seg, JsonValue>)[rest[index]!]!;\n\t\t}\n\t\tif (!isObj(target)) return false;\n\t\tconst key = rest[rest.length - 1]!;\n\t\tconst holder = target as Record<Seg, JsonValue>;\n\t\tconst write = (value: JsonValue): void => {\n\t\t\tObject.defineProperty(holder, key, { value, writable: true, enumerable: true, configurable: true });\n\t\t};\n\t\tswitch (op[0]) {\n\t\t\tcase \"s\":\n\t\t\t\tif (key === \"__proto__\") return false;\n\t\t\t\twrite(cloneJson(op[2]));\n\t\t\t\treturn true;\n\t\t\tcase \"d\":\n\t\t\t\tdelete holder[key];\n\t\t\t\treturn true;\n\t\t\tcase \"a\": {\n\t\t\t\tconst value = holder[key];\n\t\t\t\tif (typeof value !== \"string\") return false;\n\t\t\t\twrite(value + op[2]);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tcase \"t\": {\n\t\t\t\tconst value = holder[key];\n\t\t\t\tif (typeof value !== \"string\") return false;\n\t\t\t\twrite(value.slice(op[2]));\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tcase \"p\": {\n\t\t\t\tconst value = holder[key];\n\t\t\t\tif (!Array.isArray(value)) return false;\n\t\t\t\tspliceItems(value, op[2], op[3], cloneJson(op[4] as JsonValue[]));\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\t};\n\n\tconst recordString = (path: Path, previous: string, value: string): void => {\n\t\tif (forceBase) return;\n\t\thasPending = true;\n\t\t// a string inside a pending payload belongs in that payload, as for any write\n\t\tconst fold = foldTarget(path);\n\t\tif (fold !== undefined) {\n\t\t\tconst op: Op = [\"s\", path as unknown as NonEmptyPath, value];\n\t\t\tif (fold.item !== undefined) {\n\t\t\t\tconst items = fold.slot.op[4] as JsonValue[];\n\t\t\t\tif (fold.rest.length === 0) {\n\t\t\t\t\titems[fold.item] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (foldInto(items[fold.item]!, fold.rest, op)) return;\n\t\t\t} else {\n\t\t\t\tconst payload = fold.slot.op[0] === \"r\" ? fold.slot.op[1] : fold.slot.op[2];\n\t\t\t\tif (foldInto(payload as JsonValue, fold.rest, op)) return;\n\t\t\t}\n\t\t}\n\t\tconst at = logNode(path);\n\t\tconst live = liveSlot(at);\n\t\tif (live?.str !== undefined) {\n\t\t\tlive.str.value = value;\n\t\t\treturn;\n\t\t}\n\t\tif (live !== undefined) {\n\t\t\t// a pending set or delete at this path already replaced the value; keep that\n\t\t\t// op and carry the new value in it rather than anchoring to it\n\t\t\tif (live.op[0] === \"s\" || live.op[0] === \"r\") {\n\t\t\t\tlive.op = live.op[0] === \"r\" ? [\"r\", value] : [\"s\", live.op[1], value];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (live.op[0] === \"d\") {\n\t\t\t\tkillHere(at);\n\t\t\t\taddSlot(at, {\n\t\t\t\t\top: [\"s\", path as unknown as NonEmptyPath, value],\n\t\t\t\t\tdead: false,\n\t\t\t\t\torder: 0,\n\t\t\t\t\tindex: 0,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// a truncate/append pair from an earlier string diff: both must go\n\t\t\tkillHere(at);\n\t\t}\n\t\tkillSubtree(at);\n\t\taddSlot(at, {\n\t\t\top: [\"s\", path as unknown as NonEmptyPath, value],\n\t\t\tdead: false,\n\t\t\torder: 0,\n\t\t\tindex: 0,\n\t\t\tstr: { anchor: previous, value },\n\t\t});\n\t};\n\n\tconst record = (op: Op): void => {\n\t\tif (forceBase) return;\n\t\thasPending = true;\n\t\tconst path = (op[0] === \"r\" ? [] : (op[1] as Path)) as Path;\n\t\tconst existing = findLogNode(path);\n\t\tconst anchored = existing === undefined ? undefined : liveSlot(existing);\n\t\tif (anchored?.str !== undefined) {\n\t\t\tswitch (op[0]) {\n\t\t\t\tcase \"a\":\n\t\t\t\t\tanchored.str.value += op[2];\n\t\t\t\t\treturn;\n\t\t\t\tcase \"t\":\n\t\t\t\t\tanchored.str.value = anchored.str.value.slice(op[2]);\n\t\t\t\t\treturn;\n\t\t\t\tcase \"s\":\n\t\t\t\t\tif (typeof op[2] === \"string\") {\n\t\t\t\t\t\tanchored.str.value = op[2];\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t}\n\t\t\tif (existing !== undefined) killSubtree(existing);\n\t\t} else if (existing !== undefined && (op[0] === \"s\" || op[0] === \"d\" || op[0] === \"r\")) {\n\t\t\t// A replacement absorbed into an ancestor payload must still invalidate\n\t\t\t// operations already recorded at and below its destination.\n\t\t\tkillSubtree(existing);\n\t\t}\n\n\t\tif (path.length > 0) {\n\t\t\tconst fold = foldTarget(path);\n\t\t\tif (fold !== undefined) {\n\t\t\t\tif (fold.item !== undefined) {\n\t\t\t\t\tconst items = fold.slot.op[4] as JsonValue[];\n\t\t\t\t\tif (fold.rest.length === 0) {\n\t\t\t\t\t\tif (op[0] === \"s\") {\n\t\t\t\t\t\t\titems[fold.item] = cloneJson(op[2]);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (foldInto(items[fold.item]!, fold.rest, op)) return;\n\t\t\t\t} else {\n\t\t\t\t\tconst payload = fold.slot.op[0] === \"r\" ? fold.slot.op[1] : fold.slot.op[2];\n\t\t\t\t\tif (foldInto(payload as JsonValue, fold.rest, op)) return;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst at = logNode(path);\n\t\tconst live = liveSlot(at);\n\t\tif (live !== undefined) {\n\t\t\tconst previous = live.op;\n\t\t\tif (op[0] === \"a\" && previous[0] === \"a\") {\n\t\t\t\tlive.op = [\"a\", previous[1], previous[2] + op[2]];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (op[0] === \"a\" && (previous[0] === \"s\" || previous[0] === \"r\")) {\n\t\t\t\tconst value = previous[0] === \"r\" ? previous[1] : previous[2];\n\t\t\t\tif (typeof value === \"string\") {\n\t\t\t\t\tlive.op = previous[0] === \"r\" ? [\"r\", value + op[2]] : [\"s\", previous[1], value + op[2]];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (op[0] === \"t\" && (previous[0] === \"s\" || previous[0] === \"r\")) {\n\t\t\t\tconst value = previous[0] === \"r\" ? previous[1] : previous[2];\n\t\t\t\tif (typeof value === \"string\") {\n\t\t\t\t\tconst cut = value.slice(op[2]);\n\t\t\t\t\tlive.op = previous[0] === \"r\" ? [\"r\", cut] : [\"s\", previous[1], cut];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (op[0] === \"p\" && previous[0] === \"p\") {\n\t\t\t\tconst previousItems = previous[4] as JsonValue[];\n\t\t\t\t// These rewrites are sound only for adjacent recorded operations. A\n\t\t\t\t// tombstoned operation remains a barrier through lastAddedSlot.\n\t\t\t\tif (\n\t\t\t\t\tprevious[3] === 0 &&\n\t\t\t\t\top[3] === 0 &&\n\t\t\t\t\tprevious[2] + previousItems.length === op[2] &&\n\t\t\t\t\tlastAddedSlot === live\n\t\t\t\t) {\n\t\t\t\t\tconst items = op[4] as JsonValue[];\n\t\t\t\t\tfor (let index = 0; index < items.length; index++) previousItems.push(items[index]!);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\tprevious[3] === 0 &&\n\t\t\t\t\tlastAddedSlot === live &&\n\t\t\t\t\top[2] >= previous[2] &&\n\t\t\t\t\top[2] + op[3] <= previous[2] + previousItems.length\n\t\t\t\t) {\n\t\t\t\t\tspliceItems(previousItems, op[2] - previous[2], op[3], op[4] as JsonValue[]);\n\t\t\t\t\tif (previousItems.length === 0 && previous[3] === 0) killSlot(live);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\top[3] > 0 &&\n\t\t\t\t\t(op[4] as JsonValue[]).length === 0 &&\n\t\t\t\t\tpreviousItems.length > 0 &&\n\t\t\t\t\tlastAddedSlot === live\n\t\t\t\t) {\n\t\t\t\t\tconst from = op[2] - previous[2];\n\t\t\t\t\tif (from >= 0 && from + op[3] === previousItems.length) {\n\t\t\t\t\t\tpreviousItems.length = from;\n\t\t\t\t\t\tif (previousItems.length === 0 && previous[3] === 0) killSlot(live);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (op[0] === \"s\" || op[0] === \"d\" || op[0] === \"r\") killHere(at);\n\t\t}\n\t\tif (op[0] === \"s\" || op[0] === \"r\" || op[0] === \"d\") {\n\t\t\t// Replacements dominate all earlier descendants, including generations\n\t\t\t// detached by array splices.\n\t\t\tkillSubtree(at);\n\t\t} else if (op[0] === \"p\") {\n\t\t\t// Splices preserve earlier writes but form a barrier for later folding.\n\t\t\tretireKids(at);\n\t\t}\n\t\taddSlot(at, { op, dead: false, order: 0, index: 0 });\n\t};\n\n\t// Local diff, used when a whole container is assigned: keeps op quality\n\t// without a baseline by comparing the outgoing value with the incoming one at\n\t// the moment of the write. String leaves go through recordString so every\n\t// string path keeps a single anchored slot; otherwise a later write to the\n\t// same string would have to supersede ops whose starting value it no longer\n\t// knows.\n\tconst diffInto = (before: JsonValue, after: JsonValue, at: Seg[]): void => {\n\t\tif (forceBase) return;\n\t\thasPending = true;\n\t\tif (before === after) return;\n\t\tif (typeof before === \"string\" && typeof after === \"string\") {\n\t\t\trecordString(at.slice() as Path, before, after);\n\t\t\treturn;\n\t\t}\n\t\tif (Array.isArray(before) && Array.isArray(after) && before.length === after.length) {\n\t\t\tfor (let index = 0; index < after.length; index++) {\n\t\t\t\tat.push(index);\n\t\t\t\tdiffInto(before[index]!, after[index]!, at);\n\t\t\t\tat.pop();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (isObj(before) && isObj(after) && !Array.isArray(before) && !Array.isArray(after)) {\n\t\t\tconst beforeObject = before as Record<string, JsonValue>;\n\t\t\tconst afterObject = after as Record<string, JsonValue>;\n\t\t\tconst beforeKeys = Object.keys(beforeObject);\n\t\t\tconst afterKeys = Object.keys(afterObject);\n\t\t\tif ([...beforeKeys, ...afterKeys].some((key) => RESERVED_SEGMENTS.has(key))) {\n\t\t\t\trecord([\"s\", at.slice() as unknown as NonEmptyPath, cloneJson(after)]);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfor (const key of afterKeys) {\n\t\t\t\tat.push(key);\n\t\t\t\tif (Object.hasOwn(beforeObject, key)) diffInto(beforeObject[key]!, afterObject[key]!, at);\n\t\t\t\telse record([\"s\", at.slice() as unknown as NonEmptyPath, cloneJson(afterObject[key]!)]);\n\t\t\t\tat.pop();\n\t\t\t}\n\t\t\tfor (const key of beforeKeys) {\n\t\t\t\tif (!Object.hasOwn(afterObject, key)) record([\"d\", [...at, key] as unknown as NonEmptyPath]);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\t// arrays of differing length, and everything else: chord's own diff\n\t\tconst out: Op[] = [];\n\t\tdiffValue(before, after, at as Path, scan, out);\n\t\tfor (const op of out) record(op);\n\t};\n\n\tconst guard = (segment: Seg | symbol): Seg => {\n\t\tif (typeof segment === \"symbol\") throw new UnsafePathError(String(segment));\n\t\tif (typeof segment === \"string\" && RESERVED_SEGMENTS.has(segment)) throw new UnsafePathError(segment);\n\t\treturn segment;\n\t};\n\n\tconst integer = (value: unknown): number => {\n\t\tconst number = Number(value);\n\t\tif (Number.isNaN(number) || number === 0) return 0;\n\t\treturn Number.isFinite(number) ? Math.trunc(number) : number;\n\t};\n\n\tconst spliceRange = (length: number, args: readonly unknown[]): { index: number; remove: number } => {\n\t\tconst rawStart = args.length === 0 ? 0 : integer(args[0]);\n\t\tconst index = rawStart < 0 ? Math.max(0, length + rawStart) : Math.min(rawStart, length);\n\t\tconst remove =\n\t\t\targs.length === 0\n\t\t\t\t? 0\n\t\t\t\t: args.length === 1\n\t\t\t\t\t? length - index\n\t\t\t\t\t: Math.max(0, Math.min(integer(args[1]), length - index));\n\t\treturn { index, remove };\n\t};\n\n\t// Paths are walked from placement cells rather than baked into proxies. A held\n\t// descendant keeps its cells and their owner entries alive, so an ancestor can\n\t// be re-created after GC without losing array-renumbering metadata. Entries keep\n\t// only weak references to public proxies; parent caches keep only weak cells.\n\tlet shape = 0;\n\ttype Entry = {\n\t\ttarget: object;\n\t\tcells: Set<Cell>;\n\t\tfallback: Cell;\n\t\tblocked: Seg | undefined;\n\t\tproxy: WeakRef<object> | undefined;\n\t\tchildProxies: Map<PropertyKey, WeakRef<Cell>> | undefined;\n\t\tchildCells: Set<WeakRef<Cell>> | undefined;\n\t};\n\ttype Cell = {\n\t\tparent: Cell | undefined;\n\t\towner: Entry | undefined;\n\t\tentry: Entry | undefined;\n\t\ttarget: object | undefined;\n\t\tcleanup?: CellCleanup;\n\t\tseg: Seg;\n\t\tdead: boolean;\n\t\tat?: number;\n\t\tcached?: Path;\n\t};\n\ttype EntrySlot = { ref: WeakRef<Entry>; token: object };\n\ttype EntryCleanup = { target: WeakRef<object>; token: object };\n\ttype CellCleanup = { owner: WeakRef<Entry>; key: PropertyKey | undefined; ref: WeakRef<Cell> };\n\n\t// Ordinary tree entries are weak values. Explicit aliases are sparse and stay\n\t// strong while their raw weak key is alive so alias locations survive a period\n\t// in which no public proxy exists.\n\tconst entries = new WeakMap<object, EntrySlot>();\n\tconst aliases = new WeakMap<object, Entry>();\n\t// A live public proxy retains its entry through this ephemeron. Raw proxy RHS\n\t// values can therefore be unwrapped before they are written into plain targets.\n\tconst proxyEntries = new WeakMap<object, Entry>();\n\t// WeakRef targets already stay alive through the current JavaScript job. These\n\t// strong job-local caches avoid repeated deref bookkeeping without extending\n\t// that lifetime; one microtask drops both maps before the next job.\n\tlet jobCells = new WeakMap<WeakRef<Cell>, Cell>();\n\tlet jobProxies = new WeakMap<Entry, object>();\n\tlet jobCleanupScheduled = false;\n\tconst scheduleJobCleanup = (): void => {\n\t\tif (jobCleanupScheduled) return;\n\t\tjobCleanupScheduled = true;\n\t\tqueueMicrotask(() => {\n\t\t\tjobCells = new WeakMap();\n\t\t\tjobProxies = new WeakMap();\n\t\t\tjobCleanupScheduled = false;\n\t\t});\n\t};\n\tconst keepCellForJob = (ref: WeakRef<Cell>, cell: Cell): void => {\n\t\tjobCells.set(ref, cell);\n\t\tscheduleJobCleanup();\n\t};\n\tconst derefCell = (ref: WeakRef<Cell>): Cell | undefined => {\n\t\tconst cached = jobCells.get(ref);\n\t\tif (cached !== undefined) return cached;\n\t\tconst cell = ref.deref();\n\t\tif (cell !== undefined) keepCellForJob(ref, cell);\n\t\treturn cell;\n\t};\n\tconst entryFinalizer = new FinalizationRegistry<EntryCleanup>(({ target, token }) => {\n\t\tconst raw = target.deref();\n\t\tif (raw !== undefined && entries.get(raw)?.token === token) entries.delete(raw);\n\t});\n\tconst cellFinalizer = new FinalizationRegistry<CellCleanup>(({ owner, key, ref }) => {\n\t\tconst entry = owner.deref();\n\t\tif (entry === undefined) return;\n\t\tif (key !== undefined && entry.childProxies?.get(key) === ref) entry.childProxies.delete(key);\n\t\tentry.childCells?.delete(ref);\n\t});\n\n\t// Almost no document ever puts one object at two positions. Until one does,\n\t// every write has exactly one path, so the per-write cell walk is skipped.\n\tlet aliased = false;\n\tconst isDetached = (cell: Cell): boolean => {\n\t\tfor (let c: Cell | undefined = cell; c !== undefined; c = c.parent) if (c.dead) return true;\n\t\treturn false;\n\t};\n\tconst pathOf = (cell: Cell): Path => {\n\t\tif (cell.at === shape && cell.cached !== undefined) return cell.cached;\n\t\tconst out: Seg[] = [];\n\t\tfor (let c: Cell | undefined = cell; c !== undefined && c.parent !== undefined; c = c.parent) out.push(c.seg);\n\t\tout.reverse();\n\t\tcell.at = shape;\n\t\tcell.cached = out as Path;\n\t\treturn out as Path;\n\t};\n\tconst liveCells = (entry: Entry): Cell[] => {\n\t\tconst out: Cell[] = [];\n\t\tfor (const cell of entry.cells) if (!isDetached(cell)) out.push(cell);\n\t\treturn out;\n\t};\n\tconst primary = (entry: Entry): Cell => (aliased ? (liveCells(entry)[0] ?? entry.fallback) : entry.fallback);\n\tconst pathNow = (entry: Entry): Path => pathOf(primary(entry));\n\tconst findEntry = (target: object): Entry | undefined => {\n\t\tconst alias = aliases.get(target);\n\t\tif (alias !== undefined) return alias;\n\t\tconst slot = entries.get(target);\n\t\tconst entry = slot?.ref.deref();\n\t\tif (slot !== undefined && entry === undefined) entries.delete(target);\n\t\treturn entry;\n\t};\n\tconst indexEntry = (entry: Entry): void => {\n\t\tconst token = {};\n\t\tentries.set(entry.target, { ref: new WeakRef(entry), token });\n\t\tentryFinalizer.register(entry, { target: new WeakRef(entry.target), token });\n\t};\n\tconst addPlacement = (entry: Entry, cell: Cell): void => {\n\t\tif (entry.cells.has(cell)) return;\n\t\tlet hasLive = false;\n\t\tfor (const existing of entry.cells) {\n\t\t\tif (!isDetached(existing)) {\n\t\t\t\thasLive = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tcell.entry = entry;\n\t\tcell.target = entry.target;\n\t\tentry.cells.add(cell);\n\t\tif (!hasLive) {\n\t\t\tconst previous = entry.fallback;\n\t\t\tentry.fallback = cell;\n\t\t\tif (previous !== cell) {\n\t\t\t\tshape++;\n\t\t\t\t// Reattaching a held container moves every known immediate child to\n\t\t\t\t// its new placement. Array registrations survive cache clears.\n\t\t\t\tconst children = new Set<Cell>();\n\t\t\t\tfor (const ref of entry.childProxies?.values() ?? []) {\n\t\t\t\t\tconst child = derefCell(ref);\n\t\t\t\t\tif (child !== undefined) children.add(child);\n\t\t\t\t}\n\t\t\t\tfor (const ref of entry.childCells ?? []) {\n\t\t\t\t\tconst child = derefCell(ref);\n\t\t\t\t\tif (child !== undefined) children.add(child);\n\t\t\t\t}\n\t\t\t\tfor (const child of children) {\n\t\t\t\t\tif (!child.dead && child.parent === previous) child.parent = cell;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (entry.blocked === undefined) {\n\t\t\taliased = true;\n\t\t\taliases.set(entry.target, entry);\n\t\t}\n\t};\n\tconst cachePlacement = (owner: Entry, key: PropertyKey, cell: Cell): void => {\n\t\tlet cleanup = cell.cleanup;\n\t\tif (cleanup === undefined) {\n\t\t\tcleanup = { owner: new WeakRef(owner), key: undefined, ref: new WeakRef(cell) };\n\t\t\tcell.cleanup = cleanup;\n\t\t\tcellFinalizer.register(cell, cleanup);\n\t\t}\n\t\tkeepCellForJob(cleanup.ref, cell);\n\t\tif (cleanup.key !== undefined && cleanup.key !== key && owner.childProxies?.get(cleanup.key) === cleanup.ref) {\n\t\t\towner.childProxies.delete(cleanup.key);\n\t\t}\n\t\tif (owner.childProxies === undefined) owner.childProxies = new Map();\n\t\towner.childProxies.set(key, cleanup.ref);\n\t\tcleanup.key = key;\n\t\tif (Array.isArray(owner.target)) {\n\t\t\tif (owner.childCells === undefined) owner.childCells = new Set();\n\t\t\towner.childCells.add(cleanup.ref);\n\t\t}\n\t};\n\tconst findPlacement = (\n\t\towner: Entry,\n\t\tparent: Cell,\n\t\tsegment: Seg,\n\t\ttarget: object,\n\t\tblocked: Seg | undefined,\n\t): Cell | undefined => {\n\t\tif (blocked === undefined) {\n\t\t\tconst known = findEntry(target);\n\t\t\tif (known !== undefined) {\n\t\t\t\tfor (const cell of known.cells) {\n\t\t\t\t\tif (!cell.dead && cell.owner === owner && cell.parent === parent && cell.seg === segment) return cell;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\t\t// Blocked views are intentionally absent from the ordinary raw-entry index.\n\t\tfor (const ref of owner.childCells ?? []) {\n\t\t\tconst cell = derefCell(ref);\n\t\t\tif (\n\t\t\t\tcell !== undefined &&\n\t\t\t\t!cell.dead &&\n\t\t\t\tcell.target === target &&\n\t\t\t\tcell.entry?.blocked === blocked &&\n\t\t\t\tcell.parent === parent &&\n\t\t\t\tcell.seg === segment\n\t\t\t) {\n\t\t\t\treturn cell;\n\t\t\t}\n\t\t}\n\t\treturn undefined;\n\t};\n\tconst unwrap = (value: unknown): unknown => (isObj(value) ? (proxyEntries.get(value)?.target ?? value) : value);\n\tconst adoptItems = (values: readonly unknown[]): JsonValue[] => values.map(unwrap) as JsonValue[];\n\n\t// Every operation is emitted once per live location of an explicitly aliased\n\t// object. Alias cells are independent of public proxy lifetimes.\n\tconst emit = (entry: Entry, op: Op): void => {\n\t\trecord(op);\n\t\tif (!aliased) return;\n\t\tconst live = liveCells(entry);\n\t\tif (live.length <= 1) return;\n\t\tconst base = pathNow(entry);\n\t\tconst head = primary(entry);\n\t\tfor (const cell of live) {\n\t\t\tif (cell === head || op[0] === \"r\") continue;\n\t\t\tconst rest = (op[1] as Seg[]).slice(base.length);\n\t\t\tconst cloned = [...op] as unknown as Op;\n\t\t\t(cloned as unknown as Seg[][])[1] = [...pathOf(cell), ...rest];\n\t\t\trecord(cloned);\n\t\t}\n\t};\n\n\t// Structural mutation updates every still-live placement cell, including cells\n\t// retained only by held descendants. Dead weak registrations are pruned lazily;\n\t// finalizers keep idle live parents from accumulating them indefinitely.\n\tconst renumber = (\n\t\tentry: Entry,\n\t\tkey: string,\n\t\tbefore: number,\n\t\tafter: number,\n\t\tspliceAt: number,\n\t\tspliceRemove: number,\n\t\tspliceInsert: number,\n\t): void => {\n\t\tshape++;\n\t\tconst childCells = entry.childCells;\n\t\tif (key === \"push\" || !Array.isArray(entry.target) || childCells === undefined || childCells.size === 0) return;\n\t\tlet index: number;\n\t\tlet remove = 0;\n\t\tlet insert = 0;\n\t\tif (key === \"pop\") {\n\t\t\tindex = before - 1;\n\t\t\tremove = before > 0 ? 1 : 0;\n\t\t} else if (key === \"shift\") {\n\t\t\tindex = 0;\n\t\t\tremove = before > 0 ? 1 : 0;\n\t\t} else if (key === \"unshift\") {\n\t\t\tindex = 0;\n\t\t\tinsert = after - before;\n\t\t} else if (key === \"splice\") {\n\t\t\tindex = spliceAt;\n\t\t\tremove = spliceRemove;\n\t\t\tinsert = spliceInsert;\n\t\t} else {\n\t\t\tfor (const ref of [...childCells]) {\n\t\t\t\tconst cell = derefCell(ref);\n\t\t\t\tif (cell === undefined) {\n\t\t\t\t\tchildCells.delete(ref);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst at = (entry.target as unknown[]).indexOf(cell.target);\n\t\t\t\tif (at < 0) {\n\t\t\t\t\tcell.dead = true;\n\t\t\t\t\tchildCells.delete(ref);\n\t\t\t\t} else cell.seg = at;\n\t\t\t}\n\t\t\tentry.childProxies?.clear();\n\t\t\treturn;\n\t\t}\n\t\tconst delta = insert - remove;\n\t\tfor (const ref of [...childCells]) {\n\t\t\tconst cell = derefCell(ref);\n\t\t\tif (cell === undefined) {\n\t\t\t\tchildCells.delete(ref);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst at = cell.seg;\n\t\t\tif (typeof at !== \"number\") continue;\n\t\t\tif (at >= index && at < index + remove) {\n\t\t\t\tcell.dead = true;\n\t\t\t\tchildCells.delete(ref);\n\t\t\t} else if (at >= index + remove) cell.seg = at + delta;\n\t\t}\n\t\tentry.childProxies?.clear();\n\t};\n\n\tconst wrap = <V extends object>(object: V, cell: Cell, blockedSegment?: Seg): V => {\n\t\tconst placed = cell.entry;\n\t\tif (placed !== undefined && placed.target === object && placed.blocked === blockedSegment) {\n\t\t\treturn proxyFor(placed) as V;\n\t\t}\n\t\tconst existing = blockedSegment === undefined ? findEntry(object) : undefined;\n\t\tif (existing !== undefined) {\n\t\t\taddPlacement(existing, cell);\n\t\t\treturn proxyFor(existing) as V;\n\t\t}\n\t\tconst entry: Entry = {\n\t\t\ttarget: object,\n\t\t\tcells: new Set(),\n\t\t\tfallback: cell,\n\t\t\tblocked: blockedSegment,\n\t\t\tproxy: undefined,\n\t\t\tchildProxies: undefined,\n\t\t\tchildCells: undefined,\n\t\t};\n\t\taddPlacement(entry, cell);\n\t\tif (blockedSegment === undefined) indexEntry(entry);\n\t\treturn proxyFor(entry) as V;\n\t};\n\n\ttype EntryHandler = ProxyHandler<object> & { entry: Entry };\n\tconst handlerPrototype: ProxyHandler<object> = {\n\t\tget(this: EntryHandler, target, key, receiver) {\n\t\t\tconst entry = this.entry;\n\t\t\tif (Array.isArray(target) && typeof key === \"string\" && MUTATORS.has(key)) {\n\t\t\t\treturn (...args: unknown[]) => {\n\t\t\t\t\tif (entry.blocked !== undefined) throw new UnsafePathError(entry.blocked);\n\t\t\t\t\tconst detached = aliased ? liveCells(entry).length === 0 : isDetached(entry.fallback);\n\t\t\t\t\tif (detached) {\n\t\t\t\t\t\treturn Reflect.apply(Array.prototype[key as \"push\"], target, args.map(unwrap));\n\t\t\t\t\t}\n\t\t\t\t\tconst before = target.length;\n\t\t\t\t\tlet spliceAt = -1;\n\t\t\t\t\tlet spliceRemove = 0;\n\t\t\t\t\tlet spliceInsert = 0;\n\t\t\t\t\tlet insertAt = -1;\n\t\t\t\t\tlet insertCount = 0;\n\t\t\t\t\tlet result: unknown;\n\t\t\t\t\tswitch (key) {\n\t\t\t\t\t\tcase \"push\": {\n\t\t\t\t\t\t\tconst items = adoptItems(args);\n\t\t\t\t\t\t\tif (items.length > 0) emit(entry, [\"p\", [...pathNow(entry)], before, 0, cloneJson(items)]);\n\t\t\t\t\t\t\tinsertAt = before;\n\t\t\t\t\t\t\tinsertCount = items.length;\n\t\t\t\t\t\t\tspliceItems(target, before, 0, items);\n\t\t\t\t\t\t\tresult = target.length;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase \"unshift\": {\n\t\t\t\t\t\t\tconst items = adoptItems(args);\n\t\t\t\t\t\t\tif (items.length > 0) emit(entry, [\"p\", [...pathNow(entry)], 0, 0, cloneJson(items)]);\n\t\t\t\t\t\t\tinsertAt = 0;\n\t\t\t\t\t\t\tinsertCount = items.length;\n\t\t\t\t\t\t\tspliceItems(target, 0, 0, items);\n\t\t\t\t\t\t\tresult = target.length;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase \"pop\":\n\t\t\t\t\t\t\tif (before > 0) emit(entry, [\"p\", [...pathNow(entry)], before - 1, 1, []]);\n\t\t\t\t\t\t\tresult = Reflect.apply(Array.prototype.pop, target, args);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"shift\":\n\t\t\t\t\t\t\tif (before > 0) emit(entry, [\"p\", [...pathNow(entry)], 0, 1, []]);\n\t\t\t\t\t\t\tresult = Reflect.apply(Array.prototype.shift, target, args);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"splice\": {\n\t\t\t\t\t\t\tconst items = adoptItems(args.slice(2));\n\t\t\t\t\t\t\tconst { index, remove } = spliceRange(before, args);\n\t\t\t\t\t\t\tspliceAt = index;\n\t\t\t\t\t\t\tspliceRemove = remove;\n\t\t\t\t\t\t\tspliceInsert = items.length;\n\t\t\t\t\t\t\tinsertAt = index;\n\t\t\t\t\t\t\tinsertCount = items.length;\n\t\t\t\t\t\t\tif (remove > 0 || items.length > 0) {\n\t\t\t\t\t\t\t\tif (index === 0 && remove === before) {\n\t\t\t\t\t\t\t\t\tif (pathNow(entry).length === 0) emit(entry, [\"r\", cloneJson(items as JsonValue)]);\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\temit(entry, [\n\t\t\t\t\t\t\t\t\t\t\t\"s\",\n\t\t\t\t\t\t\t\t\t\t\t[...pathNow(entry)] as unknown as NonEmptyPath,\n\t\t\t\t\t\t\t\t\t\t\tcloneJson(items as JsonValue),\n\t\t\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t\t} else emit(entry, [\"p\", [...pathNow(entry)], index, remove, cloneJson(items)]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tresult = spliceItems(target, index, remove, items);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\tresult = Reflect.apply(Array.prototype[key as \"sort\"], target, args.map(unwrap));\n\t\t\t\t\t\t\tif (pathNow(entry).length === 0) emit(entry, [\"r\", cloneJson(target as unknown as JsonValue)]);\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\temit(entry, [\n\t\t\t\t\t\t\t\t\t\"s\",\n\t\t\t\t\t\t\t\t\t[...pathNow(entry)] as unknown as NonEmptyPath,\n\t\t\t\t\t\t\t\t\tcloneJson(target as unknown as JsonValue),\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcollapsePending();\n\t\t\t\t\trenumber(entry, key, before, target.length, spliceAt, spliceRemove, spliceInsert);\n\t\t\t\t\tfor (let index = insertAt; insertCount > 0 && index < insertAt + insertCount; index++) {\n\t\t\t\t\t\tconst item = target[index];\n\t\t\t\t\t\tif (!isObj(item)) continue;\n\t\t\t\t\t\tconst known = findEntry(item);\n\t\t\t\t\t\tif (known === undefined || known.target === entry.target) continue;\n\t\t\t\t\t\tconst parent = primary(entry);\n\t\t\t\t\t\tlet seen = false;\n\t\t\t\t\t\tfor (const existingCell of known.cells) {\n\t\t\t\t\t\t\tif (!existingCell.dead && existingCell.parent === parent && existingCell.seg === index)\n\t\t\t\t\t\t\t\tseen = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!seen) {\n\t\t\t\t\t\t\tconst inserted: Cell = {\n\t\t\t\t\t\t\t\tparent,\n\t\t\t\t\t\t\t\towner: entry,\n\t\t\t\t\t\t\t\tentry: undefined,\n\t\t\t\t\t\t\t\ttarget: item,\n\t\t\t\t\t\t\t\tseg: index,\n\t\t\t\t\t\t\t\tdead: false,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\taddPlacement(known, inserted);\n\t\t\t\t\t\t\tcachePlacement(entry, String(index), inserted);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn key === \"sort\" || key === \"reverse\" || key === \"fill\" || key === \"copyWithin\" ? receiver : result;\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst value = Reflect.get(target, key, receiver);\n\t\t\tif (!isObj(value)) return value;\n\t\t\tconst cachedRef = entry.childProxies?.get(key);\n\t\t\tconst cached = cachedRef === undefined ? undefined : derefCell(cachedRef);\n\t\t\tif (cached !== undefined && cached.target === value && cached.entry !== undefined) {\n\t\t\t\treturn proxyFor(cached.entry);\n\t\t\t}\n\t\t\tif (cachedRef !== undefined && cached === undefined && entry.childProxies?.get(key) === cachedRef) {\n\t\t\t\tentry.childProxies?.delete(key);\n\t\t\t}\n\t\t\tconst rawSegment = norm(target, key);\n\t\t\tlet segment: Seg;\n\t\t\tlet childBlocked = entry.blocked;\n\t\t\tif (entry.blocked !== undefined) {\n\t\t\t\tif (typeof rawSegment === \"symbol\") throw new UnsafePathError(String(rawSegment));\n\t\t\t\tsegment = rawSegment;\n\t\t\t} else if (typeof rawSegment === \"string\" && RESERVED_SEGMENTS.has(rawSegment) && Object.hasOwn(target, key)) {\n\t\t\t\tsegment = rawSegment;\n\t\t\t\tchildBlocked = rawSegment;\n\t\t\t} else segment = guard(rawSegment);\n\t\t\tconst parent = primary(entry);\n\t\t\tconst existingCell = findPlacement(entry, parent, segment, value, childBlocked);\n\t\t\tif (existingCell?.entry !== undefined) {\n\t\t\t\tcachePlacement(entry, key, existingCell);\n\t\t\t\treturn proxyFor(existingCell.entry);\n\t\t\t}\n\t\t\tconst childCell: Cell = {\n\t\t\t\tparent,\n\t\t\t\towner: entry,\n\t\t\t\tentry: undefined,\n\t\t\t\ttarget: value,\n\t\t\t\tseg: segment,\n\t\t\t\tdead: false,\n\t\t\t};\n\t\t\tconst child = wrap(value, childCell, childBlocked);\n\t\t\tcachePlacement(entry, key, childCell);\n\t\t\treturn child;\n\t\t},\n\n\t\tset(this: EntryHandler, target, key, value) {\n\t\t\tconst entry = this.entry;\n\t\t\tif (entry.blocked !== undefined) throw new UnsafePathError(entry.blocked);\n\t\t\tconst rawValue = unwrap(value);\n\t\t\tif (aliased ? liveCells(entry).length === 0 : isDetached(entry.fallback)) {\n\t\t\t\treturn Reflect.set(target, key, rawValue);\n\t\t\t}\n\t\t\tif (Array.isArray(target) && key === \"length\") {\n\t\t\t\tconst before = target.length;\n\t\t\t\tconst next = Number(rawValue);\n\t\t\t\tif (!Number.isSafeInteger(next) || next < 0 || next > 4_294_967_295) {\n\t\t\t\t\treturn Reflect.set(target, key, rawValue);\n\t\t\t\t}\n\t\t\t\tif (next < before) {\n\t\t\t\t\tif (next === 0) {\n\t\t\t\t\t\tif (pathNow(entry).length === 0) emit(entry, [\"r\", []]);\n\t\t\t\t\t\telse emit(entry, [\"s\", [...pathNow(entry)] as unknown as NonEmptyPath, []]);\n\t\t\t\t\t} else emit(entry, [\"p\", [...pathNow(entry)], next, before - next, []]);\n\t\t\t\t\tReflect.set(target, key, next);\n\t\t\t\t\trenumber(entry, \"splice\", before, next, next, before - next, 0);\n\t\t\t\t\tentry.childProxies?.clear();\n\t\t\t\t} else if (next > before) {\n\t\t\t\t\ttarget.length = next;\n\t\t\t\t\ttarget.fill(null, before);\n\t\t\t\t\tconst grown = new Array(next - before).fill(null) as JsonValue[];\n\t\t\t\t\temit(entry, [\"p\", [...pathNow(entry)], before, 0, grown]);\n\t\t\t\t}\n\t\t\t\tcollapsePending();\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst segment = guard(norm(target, key));\n\t\t\tif (Array.isArray(target)) {\n\t\t\t\tif (typeof segment !== \"number\") throw new UnsafePathError(segment);\n\t\t\t\tif (segment > target.length) throw new UnsafePathError(segment);\n\t\t\t}\n\t\t\tconst at = [...pathNow(entry), segment] as unknown as NonEmptyPath;\n\n\t\t\tif (rawValue === undefined) {\n\t\t\t\tif (Array.isArray(target)) throw new TypeError(\"undefined would create a sparse array; use splice instead\");\n\t\t\t\tif (Object.hasOwn(target, key)) emit(entry, [\"d\", at]);\n\t\t\t\tentry.childProxies?.delete(key);\n\t\t\t\tconst deleted = Reflect.deleteProperty(target, key);\n\t\t\t\tif (deleted) collapsePending();\n\t\t\t\treturn deleted;\n\t\t\t}\n\n\t\t\tconst previous = (target as Record<string | symbol, unknown>)[key];\n\t\t\tif (previous === rawValue) return true;\n\t\t\tif (Array.isArray(target) && (segment as number) === target.length) {\n\t\t\t\temit(entry, [\"p\", [...pathNow(entry)], target.length, 0, [cloneJson(rawValue as JsonValue)]]);\n\t\t\t} else if (isObj(previous) && isObj(rawValue)) {\n\t\t\t\tdiffInto(previous as JsonValue, rawValue as JsonValue, [...pathNow(entry), segment] as Seg[]);\n\t\t\t} else if (typeof previous === \"string\" && typeof rawValue === \"string\") {\n\t\t\t\tif (!aliased) recordString([...pathNow(entry), segment] as Path, previous, rawValue);\n\t\t\t\telse\n\t\t\t\t\tfor (const cell of liveCells(entry))\n\t\t\t\t\t\trecordString([...pathOf(cell), segment] as Path, previous, rawValue);\n\t\t\t} else {\n\t\t\t\temit(entry, [\"s\", at, cloneJson(rawValue as JsonValue)]);\n\t\t\t}\n\t\t\tentry.childProxies?.delete(key);\n\t\t\tconst updated = Reflect.set(target, key, rawValue);\n\t\t\tif (updated) {\n\t\t\t\tif (isObj(rawValue)) {\n\t\t\t\t\tconst known = findEntry(rawValue);\n\t\t\t\t\tif (known !== undefined) {\n\t\t\t\t\t\tconst placement: Cell = {\n\t\t\t\t\t\t\tparent: primary(entry),\n\t\t\t\t\t\t\towner: entry,\n\t\t\t\t\t\t\tentry: undefined,\n\t\t\t\t\t\t\ttarget: rawValue,\n\t\t\t\t\t\t\tseg: segment,\n\t\t\t\t\t\t\tdead: false,\n\t\t\t\t\t\t};\n\t\t\t\t\t\taddPlacement(known, placement);\n\t\t\t\t\t\tcachePlacement(entry, key, placement);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcollapsePending();\n\t\t\t}\n\t\t\treturn updated;\n\t\t},\n\n\t\tdeleteProperty(this: EntryHandler, target, key) {\n\t\t\tconst entry = this.entry;\n\t\t\tif (entry.blocked !== undefined) throw new UnsafePathError(entry.blocked);\n\t\t\tif (aliased ? liveCells(entry).length === 0 : isDetached(entry.fallback)) {\n\t\t\t\treturn Reflect.deleteProperty(target, key);\n\t\t\t}\n\t\t\tconst segment = guard(norm(target, key));\n\t\t\tif (Array.isArray(target)) {\n\t\t\t\tif (typeof segment !== \"number\") throw new UnsafePathError(segment);\n\t\t\t\tthrow new TypeError(\"delete would create a sparse array; use splice instead\");\n\t\t\t}\n\t\t\tif (Object.hasOwn(target, key)) emit(entry, [\"d\", [...pathNow(entry), segment] as unknown as NonEmptyPath]);\n\t\t\tentry.childProxies?.delete(key);\n\t\t\tconst deleted = Reflect.deleteProperty(target, key);\n\t\t\tif (deleted) collapsePending();\n\t\t\treturn deleted;\n\t\t},\n\n\t\tdefineProperty() {\n\t\t\tthrow new TypeError(\"defineProperty is not supported on tracked state; use assignment\");\n\t\t},\n\t\tsetPrototypeOf() {\n\t\t\tthrow new TypeError(\"setPrototypeOf is not supported on tracked state\");\n\t\t},\n\t\tpreventExtensions() {\n\t\t\tthrow new TypeError(\"preventExtensions is not supported on tracked state\");\n\t\t},\n\t};\n\n\tfunction proxyFor(entry: Entry): object {\n\t\tconst cached = jobProxies.get(entry);\n\t\tif (cached !== undefined) return cached;\n\t\tconst existing = entry.proxy?.deref();\n\t\tif (existing !== undefined) {\n\t\t\tjobProxies.set(entry, existing);\n\t\t\tscheduleJobCleanup();\n\t\t\treturn existing;\n\t\t}\n\t\tconst handler = Object.create(handlerPrototype) as EntryHandler;\n\t\thandler.entry = entry;\n\t\tconst proxy = new Proxy(entry.target, handler);\n\t\tentry.proxy = new WeakRef(proxy);\n\t\tjobProxies.set(entry, proxy);\n\t\tscheduleJobCleanup();\n\t\tproxyEntries.set(proxy, entry);\n\t\treturn proxy;\n\t}\n\n\tconst rootCell: Cell = {\n\t\tparent: undefined,\n\t\towner: undefined,\n\t\tentry: undefined,\n\t\ttarget: root,\n\t\tseg: \"\",\n\t\tdead: false,\n\t};\n\tlet state = wrap(root, rootCell);\n\n\treturn {\n\t\tget state() {\n\t\t\treturn state;\n\t\t},\n\t\tget target() {\n\t\t\treturn root;\n\t\t},\n\t\tset state(next: T) {\n\t\t\tconst rawNext = unwrap(next) as T;\n\t\t\tif (rawNext === root) {\n\t\t\t\tclearPending();\n\t\t\t\tforceBase = true;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tclearPending();\n\t\t\troot = rawNext;\n\t\t\tstate = wrap(root, {\n\t\t\t\tparent: undefined,\n\t\t\t\towner: undefined,\n\t\t\t\tentry: undefined,\n\t\t\t\ttarget: root,\n\t\t\t\tseg: \"\",\n\t\t\t\tdead: false,\n\t\t\t});\n\t\t\tforceBase = true;\n\t\t},\n\t\trebase() {\n\t\t\tclearPending();\n\t\t\tforceBase = true;\n\t\t},\n\t\tget dirty() {\n\t\t\t// conservative: true if anything was written since the last flush, even\n\t\t\t// if the writes cancelled out\n\t\t\treturn forceBase || hasPending;\n\t\t},\n\t\tdiscard() {\n\t\t\tclearPending();\n\t\t},\n\t\tflush() {\n\t\t\tif (forceBase) {\n\t\t\t\tconst value = cloneJson(root as unknown as JsonValue);\n\t\t\t\tforceBase = false;\n\t\t\t\tclearPending();\n\t\t\t\treturn [[\"r\", value]];\n\t\t\t}\n\t\t\tif (!hasPending) return [];\n\t\t\tconst out: Op[] = [];\n\t\t\tfor (const slot of log) {\n\t\t\t\tif (slot === undefined || slot.dead) continue;\n\t\t\t\tif (slot.str !== undefined) {\n\t\t\t\t\tdiffValue(slot.str.anchor, slot.str.value, slot.op[1] as Path, scan, out);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tout.push(slot.op);\n\t\t\t}\n\t\t\tclearPending();\n\t\t\treturn out;\n\t\t},\n\t};\n}\n\n// ─── Path safety ─────────────────────────────────────────────────────────────\n\n/**\n * Segments that reach the prototype chain.\n *\n * `JSON.parse` is safe on its own — it makes `__proto__` an own property. What is\n * not safe is `parent[key] = value`, which is exactly what an applier does, and\n * paths are data: `[\"s\", [\"__proto__\", \"isAdmin\"], true]` pollutes\n * `Object.prototype` for the whole process.\n *\n * Ops arrive from a facet, a plugin compartment, or a tool whose details may echo\n * model output, so none of it is trusted input.\n */\nexport const RESERVED_SEGMENTS: ReadonlySet<string> = new Set([\"__proto__\", \"constructor\", \"prototype\"]);\n\nexport class UnsafePathError extends Error {\n\t// Not a parameter property: Node's --experimental-strip-types rejects those,\n\t// and these files are meant to run under it directly.\n\treadonly segment: Seg;\n\tconstructor(segment: Seg) {\n\t\tsuper(`unsafe path segment: ${String(segment)}`);\n\t\tthis.segment = segment;\n\t\tthis.name = \"UnsafePathError\";\n\t}\n}\n\n/**\n * Verb, arity and payload shape for a **decoded** op: paths inline, no `#`, no\n * short forms. `apply` uses this.\n *\n * Validating `Op` against the wire grammar would be laxer than the type: a\n * two-element `[\"s\", value]` would pass, and `apply` would then read the value as\n * a path. Each vocabulary gets the validator that matches it.\n */\nexport function assertValidOp(op: unknown): asserts op is Op {\n\tif (!Array.isArray(op) || op.length === 0) throw new TypeError(\"op is not a tuple\");\n\tswitch (op[0]) {\n\t\tcase \"r\":\n\t\t\tif (op.length !== 2) throw new TypeError(\"r arity\");\n\t\t\treturn;\n\t\tcase \"s\":\n\t\t\tif (op.length !== 3) throw new TypeError(\"s arity\");\n\t\t\tassertPathArg(op[1], true);\n\t\t\treturn;\n\t\tcase \"d\":\n\t\t\tif (op.length !== 2) throw new TypeError(\"d arity\");\n\t\t\tassertPathArg(op[1], true);\n\t\t\treturn;\n\t\tcase \"a\":\n\t\t\tif (op.length !== 3 || typeof op[2] !== \"string\") throw new TypeError(\"a shape\");\n\t\t\tassertPathArg(op[1], true);\n\t\t\treturn;\n\t\tcase \"t\":\n\t\t\tif (op.length !== 3 || !Number.isInteger(op[2]) || op[2] < 0) throw new TypeError(\"t shape\");\n\t\t\tassertPathArg(op[1], true);\n\t\t\treturn;\n\t\tcase \"p\": {\n\t\t\tif (op.length !== 5) throw new TypeError(\"p arity\");\n\t\t\tassertPathArg(op[1]);\n\t\t\tif (!Number.isInteger(op[2]) || op[2] < 0) throw new TypeError(\"p index\");\n\t\t\tif (!Number.isInteger(op[3]) || op[3] < 0) throw new TypeError(\"p remove\");\n\t\t\tif (!Array.isArray(op[4])) throw new TypeError(\"p items\");\n\t\t\treturn;\n\t\t}\n\t\t// Silently skipping an unknown verb is how a newer producer's op vanishes.\n\t\tdefault:\n\t\t\tthrow new TypeError(`unknown op verb: ${String(op[0])}`);\n\t}\n}\n\nfunction assertPathArg(p: unknown, nonEmpty = false): void {\n\tif (!Array.isArray(p)) throw new TypeError(\"path is not an array\");\n\tif (nonEmpty && p.length === 0) throw new TypeError(\"path is empty\");\n\tassertSafePath(p as Path);\n}\n\n/** The same, for the wire grammar: ids and short forms are legal here. */\nexport function assertValidWireOp(op: unknown): asserts op is WireOp {\n\tif (!Array.isArray(op) || op.length === 0) throw new TypeError(\"op is not a tuple\");\n\tconst [verb] = op as unknown[];\n\tconst okRef = (r: unknown): void => {\n\t\tif (typeof r === \"number\") {\n\t\t\tif (!Number.isInteger(r) || r < 0) throw new TypeError(\"bad path id\");\n\t\t\treturn;\n\t\t}\n\t\t// A string is not a path. Unchecked, `\"a\".slice(0, -1)` is `\"\"`, so it\n\t\t// resolves to the ROOT and writes there — a path that is not a path, accepted.\n\t\tif (!Array.isArray(r)) throw new TypeError(\"path is not an array\");\n\t\tassertSafePath(r as Path);\n\t};\n\tswitch (verb) {\n\t\tcase \"r\":\n\t\t\tif (op.length !== 2) throw new TypeError(\"r arity\");\n\t\t\treturn;\n\t\tcase \"s\":\n\t\t\tif (op.length === 3) okRef(op[1]);\n\t\t\telse if (op.length !== 2) throw new TypeError(\"s arity\");\n\t\t\treturn;\n\t\tcase \"d\":\n\t\t\tif (op.length === 2) okRef(op[1]);\n\t\t\telse if (op.length !== 1) throw new TypeError(\"d arity\");\n\t\t\treturn;\n\t\tcase \"a\":\n\t\t\tif (op.length === 3) {\n\t\t\t\tokRef(op[1]);\n\t\t\t\tif (typeof op[2] !== \"string\") throw new TypeError(\"a value\");\n\t\t\t} else if (op.length === 2) {\n\t\t\t\tif (typeof op[1] !== \"string\") throw new TypeError(\"a value\");\n\t\t\t} else throw new TypeError(\"a arity\");\n\t\t\treturn;\n\t\tcase \"t\":\n\t\t\tif (op.length === 3) {\n\t\t\t\tokRef(op[1]);\n\t\t\t\tif (!Number.isInteger(op[2]) || (op[2] as number) < 0) throw new TypeError(\"t count\");\n\t\t\t} else if (op.length === 2) {\n\t\t\t\tif (!Number.isInteger(op[1]) || (op[1] as number) < 0) throw new TypeError(\"t count\");\n\t\t\t} else throw new TypeError(\"t arity\");\n\t\t\treturn;\n\t\tcase \"p\": {\n\t\t\tconst [i, r, items] = op.length === 5 ? [op[2], op[3], op[4]] : op.length === 4 ? [op[1], op[2], op[3]] : [];\n\t\t\tif (items === undefined) throw new TypeError(\"p arity\");\n\t\t\tif (op.length === 5) okRef(op[1]);\n\t\t\tif (!Number.isInteger(i) || (i as number) < 0) throw new TypeError(\"p index\");\n\t\t\tif (!Number.isInteger(r) || (r as number) < 0) throw new TypeError(\"p remove\");\n\t\t\tif (!Array.isArray(items)) throw new TypeError(\"p items\");\n\t\t\treturn;\n\t\t}\n\t\tcase \"#\": {\n\t\t\tif (op.length !== 3 || !Number.isInteger(op[1]) || (op[1] as number) < 0 || !Array.isArray(op[2])) {\n\t\t\t\tthrow new TypeError(\"# shape\");\n\t\t\t}\n\t\t\tassertSafePath(op[2] as Path);\n\t\t\treturn;\n\t\t}\n\t\t// Silently skipping an unknown verb is how a newer producer's op vanishes.\n\t\tdefault:\n\t\t\tthrow new TypeError(`unknown op verb: ${String(verb)}`);\n\t}\n}\n\nexport function assertSafePath(path: Path): void {\n\tfor (const seg of path) {\n\t\tif (typeof seg === \"string\") {\n\t\t\tif (RESERVED_SEGMENTS.has(seg)) throw new UnsafePathError(seg);\n\t\t} else if (!Number.isInteger(seg) || seg < 0) {\n\t\t\tthrow new UnsafePathError(seg);\n\t\t}\n\t}\n}\n\n/**\n * An index may address an existing element or append exactly one past the end.\n *\n * This is not an arbitrary cap — it is what keeps the value a `JsonValue`. A\n * sparse array does not survive a JSON round trip: holes serialise to `null` and\n * return as real properties, so `arr[7] = x` on a length-3 array already produces\n * state a replica cannot match. Rejecting the write is more honest than silently\n * diverging.\n *\n * It also removes the denial of service it would otherwise permit:\n * `[\"s\", [\"xs\", 4294967290], 1]` allocates a 4.29-billion-entry array from one op.\n * Growth stays possible and stays proportional — the tracker already emits\n * `arr.length = n` as a splice of explicit nulls, whose op size grows with the\n * gap, so a large growth costs a large op rather than a small one.\n */\nfunction assertIndexInRange(parent: readonly unknown[], index: number): void {\n\tif (index > parent.length) throw new UnsafePathError(index);\n}\n\n// ─── Applier ─────────────────────────────────────────────────────────────────\n\nexport class PathError extends Error {\n\treadonly path: Path | number;\n\tconstructor(path: Path | number) {\n\t\tsuper(`unresolvable path: ${JSON.stringify(path)}`);\n\t\tthis.path = path;\n\t\tthis.name = \"PathError\";\n\t}\n}\n\n/**\n * Apply ops to a plain mutable value. Returns the value, because `r` replaces it\n * outright and cannot be done in place.\n *\n * Takes decoded ops. Path ids and omitted paths are a wire concern — run\n * `decode` first if the ops came from a boundary.\n */\nexport function apply<T>(target: T | undefined, ops: readonly Op[]): T {\n\treturn applyOps(target, ops);\n}\n\nfunction applyOps<T>(target: T | undefined, ops: readonly Op[]): T {\n\tlet root = target as unknown as JsonValue;\n\n\tfor (const op of ops) {\n\t\tassertValidOp(op);\n\t\tif (op[0] === \"r\") {\n\t\t\t// Adopted, not copied. The consumer owns the batch it was handed.\n\t\t\t//\n\t\t\t// Fanning one batch out to several consumers in-process therefore makes\n\t\t\t// their replicas alias each other. That is an ownership rule, not a\n\t\t\t// defect: copy the batch at the fan-out point, or let each consumer\n\t\t\t// decode its own. A batch that crosses a real boundary is already\n\t\t\t// distinct, because serialisation produces fresh objects.\n\t\t\troot = op[1];\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst path = op[1];\n\t\tassertSafePath(path);\n\n\t\tif (op[0] === \"p\") {\n\t\t\tconst target_ = path.length === 0 ? root : resolve(root, path);\n\t\t\tif (!Array.isArray(target_)) throw new PathError(path);\n\t\t\ttarget_.splice(op[2], op[3]);\n\t\t\tconst chunkSize = 10_000;\n\t\t\tfor (let offset = 0; offset < op[4].length; offset += chunkSize) {\n\t\t\t\ttarget_.splice(op[2] + offset, 0, ...op[4].slice(offset, offset + chunkSize));\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\t// s/d/a/t can never target the root — the type forbids it.\n\t\tconst parent = resolve(root, path.slice(0, -1)) as Record<Seg, JsonValue>;\n\t\tconst key = path[path.length - 1]!;\n\t\tif (Array.isArray(parent)) {\n\t\t\tif (typeof key !== \"number\") throw new UnsafePathError(key);\n\t\t\tassertIndexInRange(parent, key);\n\t\t}\n\t\t// defineProperty rather than assignment: a setter inherited from the prototype\n\t\t// chain would otherwise run on write.\n\t\tconst write = (value: JsonValue) => {\n\t\t\tObject.defineProperty(parent, key, { value, writable: true, enumerable: true, configurable: true });\n\t\t};\n\t\tconst read = (): unknown => (Object.hasOwn(parent, key) ? parent[key] : undefined);\n\t\tswitch (op[0]) {\n\t\t\tcase \"s\":\n\t\t\t\twrite(op[2]);\n\t\t\t\tbreak;\n\t\t\tcase \"d\":\n\t\t\t\tif (Array.isArray(parent)) {\n\t\t\t\t\tif (typeof key !== \"number\" || key >= parent.length) throw new PathError(path);\n\t\t\t\t\t(parent as unknown as JsonValue[]).splice(key, 1);\n\t\t\t\t} else delete parent[key];\n\t\t\t\tbreak;\n\t\t\tcase \"a\": {\n\t\t\t\tconst current = read();\n\t\t\t\tif (typeof current !== \"string\") throw new PathError(path);\n\t\t\t\twrite(`${current}${op[2]}`);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"t\": {\n\t\t\t\tconst current = read();\n\t\t\t\tif (typeof current !== \"string\") throw new PathError(path);\n\t\t\t\twrite(current.slice(op[2]));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn root as unknown as T;\n}\n\n/** Apply decoded operations without mutating the previous immutable value. */\nexport function applyImmutable<T>(target: T | undefined, ops: readonly Op[]): T {\n\tlet root = target as unknown as JsonValue;\n\tfor (const op of ops) {\n\t\tif (op[0] === \"r\") {\n\t\t\tassertValidOp(op);\n\t\t\troot = op[1];\n\t\t\tcontinue;\n\t\t}\n\t\troot = copyContainers(root, op[0] === \"p\" ? op[1] : op[1].slice(0, -1));\n\t\troot = applyOps(root, [op]);\n\t}\n\treturn root as unknown as T;\n}\n\nfunction copyContainers(root: JsonValue, path: Path): JsonValue {\n\tconst copy = (value: JsonValue): JsonValue[] | Record<string, JsonValue> => {\n\t\tif (Array.isArray(value)) return value.slice();\n\t\tif (!isObj(value)) throw new PathError(path);\n\t\tconst result = Object.create(Object.getPrototypeOf(value) === null ? null : Object.prototype) as Record<\n\t\t\tstring,\n\t\t\tJsonValue\n\t\t>;\n\t\tfor (const key of Object.keys(value)) {\n\t\t\tObject.defineProperty(result, key, {\n\t\t\t\tvalue: (value as Record<string, JsonValue>)[key],\n\t\t\t\twritable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t});\n\t\t}\n\t\treturn result;\n\t};\n\tconst copiedRoot = copy(root);\n\tlet source = root;\n\tlet destination = copiedRoot;\n\tfor (const segment of path) {\n\t\tif (!isObj(source) || !Object.hasOwn(source, segment)) throw new PathError(path);\n\t\tif (Array.isArray(source) && typeof segment !== \"number\") throw new UnsafePathError(segment);\n\t\tconst child = (source as Record<Seg, JsonValue>)[segment]!;\n\t\tconst copiedChild = copy(child);\n\t\tObject.defineProperty(destination, segment, {\n\t\t\tvalue: copiedChild,\n\t\t\twritable: true,\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t});\n\t\tsource = child;\n\t\tdestination = copiedChild;\n\t}\n\treturn copiedRoot;\n}\n\nfunction resolveValue(root: JsonValue, path: Path): JsonValue {\n\tlet node: JsonValue = root;\n\tfor (const seg of path) {\n\t\tif (!isObj(node)) throw new PathError(path);\n\t\tif (Array.isArray(node) && typeof seg !== \"number\") throw new UnsafePathError(seg);\n\t\t// Own properties only: an inherited getter must not run, and a walk must not\n\t\t// escape the value into the prototype chain.\n\t\tif (!Object.hasOwn(node, seg as PropertyKey)) throw new PathError(path);\n\t\tnode = (node as Record<Seg, JsonValue>)[seg]!;\n\t}\n\treturn node;\n}\n\nfunction resolve(root: JsonValue, path: Path): JsonValue {\n\tconst node = resolveValue(root, path);\n\tif (!isObj(node)) throw new PathError(path);\n\treturn node;\n}\n\n// ─── Codec ───────────────────────────────────────────────────────────────────\n//\n// Path interning and arity omission live between the tracker and a boundary;\n// `Op` and `apply` know nothing about them.\n//\n// ONE PAIR PER INDEPENDENT STATE STREAM. Every decoder must observe exactly the\n// batches encoded by its matching encoder, beginning with that state's base.\n// Sharing a transport connection does not make separately hydrated states one\n// stream.\n\nconst pathKey = (path: Path): string => JSON.stringify(path);\n\nexport interface Encoder {\n\tencode(ops: readonly Op[]): WireOp[];\n}\n\n/**\n * Intern on SECOND use. A definition costs more than the path it replaces, so\n * interning on first use loses on the many paths written exactly once.\n */\nexport function encoder(): Encoder {\n\tconst seen = new Set<string>();\n\tconst ids = new Map<string, number>();\n\tlet nextId = 0;\n\tlet previous: string | undefined; // last path in THIS batch\n\n\treturn {\n\t\tencode(ops) {\n\t\t\t// Arity omission is scoped to a batch. Letting it span batches would make\n\t\t\t// a batch's first op depend on the previous batch's last one, so a reader\n\t\t\t// that skips or reorders a batch decodes into the wrong path. Ids are the\n\t\t\t// only cross-batch state, and the dictionary makes those explicit.\n\t\t\tprevious = undefined;\n\t\t\tconst out: WireOp[] = [];\n\t\t\tfor (const op of ops) {\n\t\t\t\tif (op[0] === \"r\") {\n\t\t\t\t\tout.push(op);\n\t\t\t\t\t// A base batch is a RECOVERY POINT: a reader replays from the last one\n\t\t\t\t\t// with a fresh decoder. So everything after it must be self-contained.\n\t\t\t\t\t// Keeping ids across a replacement emits references to definitions the\n\t\t\t\t\t// reader never saw — recovery fails with an unresolvable path id.\n\t\t\t\t\tseen.clear();\n\t\t\t\t\tids.clear();\n\t\t\t\t\tnextId = 0;\n\t\t\t\t\tprevious = undefined;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst path = op[1];\n\t\t\t\tconst key = pathKey(path);\n\n\t\t\t\t// Same path as the previous op: drop the ref entirely.\n\t\t\t\tif (key === previous) {\n\t\t\t\t\tswitch (op[0]) {\n\t\t\t\t\t\tcase \"s\":\n\t\t\t\t\t\t\tout.push([\"s\", op[2]]);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"d\":\n\t\t\t\t\t\t\tout.push([\"d\"]);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"a\":\n\t\t\t\t\t\t\tout.push([\"a\", op[2]]);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"t\":\n\t\t\t\t\t\t\tout.push([\"t\", op[2]]);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"p\":\n\t\t\t\t\t\t\tout.push([\"p\", op[2], op[3], op[4]]);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tlet ref: PathRef = path;\n\t\t\t\tconst existing = ids.get(key);\n\t\t\t\tif (existing !== undefined) {\n\t\t\t\t\tref = existing;\n\t\t\t\t} else if (seen.has(key)) {\n\t\t\t\t\tconst id = nextId++;\n\t\t\t\t\tids.set(key, id);\n\t\t\t\t\tout.push([\"#\", id, path]); // second use: define, then reference\n\t\t\t\t\tref = id;\n\t\t\t\t} else {\n\t\t\t\t\tseen.add(key); // first use: inline\n\t\t\t\t}\n\n\t\t\t\tswitch (op[0]) {\n\t\t\t\t\tcase \"s\":\n\t\t\t\t\t\tout.push([\"s\", ref as PathRef<NonEmptyPath>, op[2]]);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"d\":\n\t\t\t\t\t\tout.push([\"d\", ref as PathRef<NonEmptyPath>]);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"a\":\n\t\t\t\t\t\tout.push([\"a\", ref as PathRef<NonEmptyPath>, op[2]]);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"t\":\n\t\t\t\t\t\tout.push([\"t\", ref as PathRef<NonEmptyPath>, op[2]]);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"p\":\n\t\t\t\t\t\tout.push([\"p\", ref, op[2], op[3], op[4]]);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tprevious = key;\n\t\t\t}\n\t\t\treturn out;\n\t\t},\n\t};\n}\n\nexport interface Decoder {\n\tdecode(wire: readonly WireOp[]): Op[];\n}\n\nexport function decoder(): Decoder {\n\tconst paths = new Map<number, Path>();\n\n\treturn {\n\t\tdecode(wire) {\n\t\t\tlet previous: Path | undefined; // scoped to the batch, as in encode\n\t\t\tconst out: Op[] = [];\n\t\t\tfor (const op of wire) {\n\t\t\t\tassertValidWireOp(op);\n\t\t\t\tif (op[0] === \"#\") {\n\t\t\t\t\tassertSafePath(op[2]);\n\t\t\t\t\tpaths.set(op[1], op[2]);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (op[0] === \"r\") {\n\t\t\t\t\tout.push(op);\n\t\t\t\t\tpaths.clear();\n\t\t\t\t\tprevious = undefined;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Arity tells us whether a ref is present: the short forms omit it.\n\t\t\t\tconst short =\n\t\t\t\t\t(op[0] === \"d\" && op.length === 1) ||\n\t\t\t\t\t(op[0] !== \"d\" && op[0] !== \"p\" && op.length === 2) ||\n\t\t\t\t\t(op[0] === \"p\" && op.length === 4);\n\n\t\t\t\tlet path: Path;\n\t\t\t\tif (short) {\n\t\t\t\t\tif (previous === undefined) throw new PathError([]);\n\t\t\t\t\tpath = previous;\n\t\t\t\t} else {\n\t\t\t\t\tconst ref = op[1] as PathRef;\n\t\t\t\t\tif (typeof ref === \"number\") {\n\t\t\t\t\t\tconst resolved = paths.get(ref);\n\t\t\t\t\t\tif (resolved === undefined) throw new PathError(ref);\n\t\t\t\t\t\tpath = resolved;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpath = ref;\n\t\t\t\t\t}\n\t\t\t\t\tprevious = path;\n\t\t\t\t}\n\n\t\t\t\tif (op[0] !== \"p\" && path.length === 0) throw new PathError(path);\n\t\t\t\tswitch (op[0]) {\n\t\t\t\t\tcase \"s\":\n\t\t\t\t\t\tout.push([\"s\", path as NonEmptyPath, (short ? op[1] : op[2]) as JsonValue]);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"d\":\n\t\t\t\t\t\tout.push([\"d\", path as NonEmptyPath]);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"a\":\n\t\t\t\t\t\tout.push([\"a\", path as NonEmptyPath, (short ? op[1] : op[2]) as string]);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"t\":\n\t\t\t\t\t\tout.push([\"t\", path as NonEmptyPath, (short ? op[1] : op[2]) as number]);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"p\": {\n\t\t\t\t\t\tconst [i, r, items] = short\n\t\t\t\t\t\t\t? [op[1] as number, op[2] as number, op[3] as JsonValue[]]\n\t\t\t\t\t\t\t: [op[2] as number, op[3] as number, op[4] as JsonValue[]];\n\t\t\t\t\t\tout.push([\"p\", path, i, r, items]);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn out;\n\t\t},\n\t};\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@earendil-works/chord",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.86.0",
|
|
4
4
|
"description": "Application composition runtime for services, replicated state, RPC, and plugins",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"node": ">=22.19.0"
|
|
64
64
|
},
|
|
65
65
|
"dependencies": {
|
|
66
|
-
"esbuild": "0.28.
|
|
66
|
+
"esbuild": "0.28.2"
|
|
67
67
|
},
|
|
68
68
|
"devDependencies": {
|
|
69
69
|
"shx": "0.4.0",
|