@farm.js/react 0.1.0-beta.3 → 0.1.0-beta.4
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 +120 -37
- package/dist/compiler-runtime.cjs +1925 -156
- package/dist/compiler-runtime.cjs.map +1 -1
- package/dist/compiler-runtime.d.mts +76 -1
- package/dist/compiler-runtime.d.ts +76 -1
- package/dist/compiler-runtime.mjs +1925 -156
- package/dist/compiler-runtime.mjs.map +1 -1
- package/dist/index.cjs +5 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +8 -1
- package/dist/index.d.ts +8 -1
- package/dist/index.mjs +5 -1
- package/dist/index.mjs.map +1 -1
- package/dist/list.cjs +18 -1
- package/dist/list.cjs.map +1 -1
- package/dist/list.mjs +18 -1
- package/dist/list.mjs.map +1 -1
- package/dist/vite.cjs +1168 -85
- package/dist/vite.cjs.map +1 -1
- package/dist/vite.mjs +1168 -85
- package/dist/vite.mjs.map +1 -1
- package/package.json +4 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/compiler-runtime.tsx"],"names":["React","flushSync","index"],"mappings":";;;;;;;;;;AA8OA,IAAM,qBAAA,mBAAwB,MAAA,CAAO,GAAA,CAAI,sCAAsC,CAAA;AAE/E,SAAS,sBAAA,GAA8C;AACrD,EAAA,MAAM,YAAA,GAAe,UAAA;AACrB,EAAA,MAAM,QAAA,GAAW,aAAa,qBAAqB,CAAA;AACnD,EAAA,IAAI,QAAA,YAAoB,KAAK,OAAO,QAAA;AACpC,EAAA,MAAM,QAAA,uBAAoC,GAAA,EAAI;AAC9C,EAAA,YAAA,CAAa,qBAAqB,CAAA,GAAI,QAAA;AACtC,EAAA,OAAO,QAAA;AACT;AAEA,SAAS,gBAAgB,KAAA,EAAwB;AAC/C,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG,OAAO,MAAM,GAAA,CAAI,eAAe,CAAA,CAAE,IAAA,CAAK,EAAE,CAAA;AACnE,EAAA,IAAI,UAAU,IAAA,IAAQ,KAAA,KAAU,UAAa,OAAO,KAAA,KAAU,WAAW,OAAO,EAAA;AAChF,EAAA,OAAO,OAAO,KAAK,CAAA;AACrB;AAEA,SAAS,iBAAA,CACP,IAAA,EACA,IAAA,EACA,UAAA,EACgB;AAChB,EAAA,IAAI,OAAA,GAA0B,IAAA;AAC9B,EAAA,KAAA,MAAW,SAAS,IAAA,EAAM;AACxB,IAAA,IAAI,CAAC,SAAS,OAAO,IAAA;AACrB,IAAA,OAAA,GAAU,CAAC,GAAG,OAAA,CAAQ,QAAQ,EAAE,MAAA,CAAO,CAAC,KAAA,KAAU,CAAC,WAAW,GAAA,CAAI,KAAK,CAAC,CAAA,CAAE,KAAK,CAAA,IAAK,IAAA;AAAA,EACtF;AACA,EAAA,OAAO,OAAA;AACT;AAEA,IAAM,yBAAA,uBAAgC,GAAA,CAAI;AAAA,EACxC,yBAAA;AAAA,EACA,aAAA;AAAA,EACA,mBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAA;AAAA,EACA,iBAAA;AAAA,EACA,aAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA,cAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,UAAA;AAAA,EACA,YAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,iBAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA;AAAA,EACA,iBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF,CAAC,CAAA;AAED,SAAS,oBAAoB,IAAA,EAAsB;AACjD,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,OAAA,CAAQ,+BAAA,EAAiC,EAAE,CAAA;AACnE,EAAA,OAAO,UAAA,GAAa,WAAW,CAAC,CAAA,CAAE,aAAY,GAAI,UAAA,CAAW,KAAA,CAAM,CAAC,CAAA,GAAI,IAAA;AAC1E;AAEA,SAAS,mBAAmB,OAAA,EAAuD;AACjF,EAAA,MAAM,IAAA,GAAO,QAAQ,aAAA,CAAc,WAAA;AACnC,EAAA,OAAO,OAAA;AAAA,IACL,IAAA,KAAS,OAAA,YAAmB,IAAA,CAAK,WAAA,IAAe,mBAAmB,IAAA,CAAK,UAAA;AAAA,GAC1E;AACF;AAEA,SAAS,eAAe,OAAA,EAA+C;AACrE,EAAA,MAAM,IAAA,GAAO,QAAQ,aAAA,CAAc,WAAA;AACnC,EAAA,OAAO,OAAA,CAAQ,IAAA,IAAQ,OAAA,YAAmB,IAAA,CAAK,gBAAgB,CAAA;AACjE;AAEA,SAAS,kBAAkB,OAAA,EAAkD;AAC3E,EAAA,MAAM,IAAA,GAAO,QAAQ,aAAA,CAAc,WAAA;AACnC,EAAA,OAAO,OAAA,CAAQ,IAAA,IAAQ,OAAA,YAAmB,IAAA,CAAK,mBAAmB,CAAA;AACpE;AAEA,SAAS,gBAAgB,OAAA,EAAgD;AACvE,EAAA,MAAM,IAAA,GAAO,QAAQ,aAAA,CAAc,WAAA;AACnC,EAAA,OAAO,OAAA,CAAQ,IAAA,IAAQ,OAAA,YAAmB,IAAA,CAAK,iBAAiB,CAAA;AAClE;AAEA,SAAS,gBAAgB,OAAA,EAAgD;AACvE,EAAA,MAAM,IAAA,GAAO,QAAQ,aAAA,CAAc,WAAA;AACnC,EAAA,OAAO,OAAA,CAAQ,IAAA,IAAQ,OAAA,YAAmB,IAAA,CAAK,iBAAiB,CAAA;AAClE;AAEA,SAAS,wBACP,OAAA,EACkC;AAClC,EAAA,OAAO,QAAQ,OAAA,KAAY,cAAA,CAAe,OAAO,CAAA,IAAK,iBAAA,CAAkB,OAAO,CAAA,CAAE,CAAA;AACnF;AAEA,SAAS,WAAA,CAAY,OAAA,EAAkB,IAAA,EAAc,KAAA,EAAsB;AACzE,EAAA,IAAI,CAAC,kBAAA,CAAmB,OAAO,CAAA,EAAG;AAClC,EAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,UAAA,CAAW,IAAI,CAAA;AAC3C,EAAA,IAAI,SAAA,GAAY,EAAA;AAChB,EAAA,IAAI,KAAA,KAAU,QAAQ,KAAA,KAAU,MAAA,IAAa,OAAO,KAAA,KAAU,SAAA,IAAa,UAAU,EAAA,EAAI;AACvF,IAAA,SAAA,GACE,OAAO,UAAU,QAAA,IACjB,KAAA,KAAU,KACV,CAAC,cAAA,IACD,CAAC,yBAAA,CAA0B,GAAA,CAAI,oBAAoB,IAAI,CAAC,IACpD,CAAA,EAAG,KAAK,OACR,MAAA,CAAO,KAAK,EAAE,IAAA,EAAK;AAAA,EAC3B;AAEA,EAAA,IAAI,cAAA,IAAkB,IAAA,CAAK,QAAA,CAAS,GAAG,CAAA,EAAG;AACxC,IAAA,OAAA,CAAQ,KAAA,CAAM,WAAA,CAAY,IAAA,EAAM,SAAS,CAAA;AAAA,EAC3C,CAAA,MAAO;AACL,IAAC,OAAA,CAAQ,KAAA,CAA4C,IAAI,CAAA,GAAI,SAAA;AAAA,EAC/D;AACF;AAEA,SAAS,iBAAA,CAAkB,SAA4B,KAAA,EAAsB;AAC3E,EAAA,MAAM,OAAA,GAAU,CAAC,GAAG,OAAA,CAAQ,OAAO,CAAA;AACnC,EAAA,IAAI,QAAQ,QAAA,EAAU;AACpB,IAAA,MAAM,WAAW,IAAI,GAAA;AAAA,MAAA,CAClB,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,KAAA,GAAQ,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,GAAY,EAAC,GAAI,CAAC,KAAK,CAAA,EAAG,GAAA;AAAA,QACpF;AAAA;AACF,KACF;AACA,IAAA,KAAA,MAAW,UAAU,OAAA,EAAS,MAAA,CAAO,WAAW,QAAA,CAAS,GAAA,CAAI,OAAO,KAAK,CAAA;AACzE,IAAA;AAAA,EACF;AAEA,EAAA,MAAM,gBAAgB,KAAA,KAAU,IAAA,IAAQ,UAAU,MAAA,GAAY,EAAA,GAAK,OAAO,KAAK,CAAA;AAC/E,EAAA,IAAI,QAAA;AACJ,EAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,IAAA,IAAI,CAAC,MAAA,CAAO,QAAA,IAAY,CAAC,UAAU,QAAA,GAAW,MAAA;AAC9C,IAAA,IAAI,MAAA,CAAO,UAAU,aAAA,EAAe;AAClC,MAAA,MAAA,CAAO,QAAA,GAAW,IAAA;AAClB,MAAA;AAAA,IACF;AAAA,EACF;AACA,EAAA,IAAI,QAAA,WAAmB,QAAA,GAAW,IAAA;AACpC;AAEA,SAAS,eAAA,CAAgB,OAAA,EAAkB,IAAA,EAAc,KAAA,EAAsB;AAC7E,EAAA,MAAM,gBAAgB,IAAA,KAAS,WAAA,GAAc,OAAA,GAAU,IAAA,KAAS,YAAY,KAAA,GAAQ,IAAA;AACpF,EAAA,MAAM,qBAAqB,aAAA,CAAc,UAAA,CAAW,OAAO,CAAA,IAAK,aAAA,CAAc,WAAW,OAAO,CAAA;AAEhG,EAAA,IAAI,SAAS,OAAA,KAAY,cAAA,CAAe,OAAO,CAAA,IAAK,iBAAA,CAAkB,OAAO,CAAA,CAAA,EAAI;AAC/E,IAAA,MAAM,YAAY,KAAA,KAAU,IAAA,IAAQ,UAAU,MAAA,GAAY,EAAA,GAAK,OAAO,KAAK,CAAA;AAC3E,IAAA,IAAI,OAAA,CAAQ,KAAA,KAAU,SAAA,EAAW,OAAA,CAAQ,KAAA,GAAQ,SAAA;AACjD,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,IAAA,KAAS,OAAA,IAAW,eAAA,CAAgB,OAAO,CAAA,EAAG;AAChD,IAAA,iBAAA,CAAkB,SAAS,KAAK,CAAA;AAChC,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,IAAA,KAAS,SAAA,IAAa,cAAA,CAAe,OAAO,CAAA,EAAG;AACjD,IAAA,OAAA,CAAQ,OAAA,GAAU,QAAQ,KAAK,CAAA;AAC/B,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,IAAA,KAAS,UAAA,IAAc,eAAA,CAAgB,OAAO,CAAA,EAAG;AACnD,IAAA,OAAA,CAAQ,QAAA,GAAW,QAAQ,KAAK,CAAA;AAChC,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,IAAA,KAAS,UAAA,IAAc,UAAA,IAAc,OAAA,EAAS;AAChD,IAAC,OAAA,CAA8B,QAAA,GAAW,OAAA,CAAQ,KAAK,CAAA;AACvD,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,UAAU,IAAA,IAAQ,KAAA,KAAU,UAAc,KAAA,KAAU,KAAA,IAAS,CAAC,kBAAA,EAAqB;AACrF,IAAA,OAAA,CAAQ,gBAAgB,aAAa,CAAA;AAAA,EACvC,CAAA,MAAA,IAAW,KAAA,KAAU,IAAA,IAAQ,CAAC,kBAAA,EAAoB;AAChD,IAAA,OAAA,CAAQ,YAAA,CAAa,eAAe,EAAE,CAAA;AAAA,EACxC,CAAA,MAAO;AACL,IAAA,OAAA,CAAQ,YAAA,CAAa,aAAA,EAAe,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,EACnD;AACF;AAOA,SAAS,gCACP,KAAA,EACoD;AAAA,EACpD,MAAM,oBAAA,SAA6BA,sBAAA,CAAM,SAAA,CAAyC;AAAA,IAAlF,WAAA,GAAA;AAAA,MAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AAKE,MAAA,IAAA,CAAQ,WAAA,GAAc,CAAC,IAAA,KAAyB;AAC9C,QAAA,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,KAAA,CAAM,EAAA,EAAI,IAAI,CAAA;AAAA,MACnC,CAAA;AAEA,MAAA,IAAA,CAAQ,OAAA,GAAU,CAAC,WAAA,KAA6B;AAC9C,QAAA,IAAA,CAAK,YAAY,WAAW,CAAA;AAAA,MAC9B,CAAA;AAAA,IAAA;AAAA,IAEQ,SAAA,GAAkB;AACxB,MAAA,IAAA,CAAK,cAAc,KAAA,CAAM,SAAA,CAAU,KAAK,KAAA,CAAM,EAAA,EAAI,KAAK,OAAO,CAAA;AAAA,IAChE;AAAA,IAEA,iBAAA,GAA0B;AACxB,MAAA,IAAA,CAAK,SAAA,EAAU;AAAA,IACjB;AAAA,IAEA,mBAAmB,QAAA,EAA+C;AAChE,MAAA,IAAI,QAAA,CAAS,EAAA,KAAO,IAAA,CAAK,KAAA,CAAM,EAAA,EAAI;AACnC,MAAA,IAAA,CAAK,WAAA,IAAc;AACnB,MAAA,KAAA,CAAM,OAAA,CAAQ,QAAA,CAAS,EAAA,EAAI,IAAI,CAAA;AAC/B,MAAA,IAAA,CAAK,SAAA,EAAU;AAAA,IACjB;AAAA,IAEA,oBAAA,GAA6B;AAC3B,MAAA,IAAA,CAAK,WAAA,IAAc;AACnB,MAAA,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,KAAA,CAAM,EAAA,EAAI,IAAI,CAAA;AAAA,IACnC;AAAA,IAEA,MAAA,GAA0B;AACxB,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,MAAA,EAAO;AAC/B,MAAA,IAAI,CAACA,sBAAA,CAAM,cAAA,CAAe,IAAI,CAAA,EAAG;AAC/B,QAAA,IACE,IAAA,KAAS,IAAA,IACT,IAAA,KAAS,MAAA,IACT,OAAO,IAAA,KAAS,SAAA,IAChB,OAAO,IAAA,KAAS,YAChB,OAAO,IAAA,KAAS,QAAA,IAChB,OAAO,SAAS,QAAA,EAChB;AACA,UAAA,OAAO,IAAA;AAAA,QACT;AACA,QAAA,MAAM,IAAI,SAAA;AAAA,UACR,CAAA,2BAAA,EAA8B,IAAA,CAAK,KAAA,CAAM,EAAE,CAAA,gDAAA;AAAA,SAC7C;AAAA,MACF;AACA,MAAA,IAAI,OAAO,IAAA,CAAK,IAAA,KAAS,QAAA,EAAU;AACjC,QAAA,MAAM,IAAI,SAAA;AAAA,UACR,CAAA,2BAAA,EAA8B,IAAA,CAAK,KAAA,CAAM,EAAE,CAAA,8BAAA;AAAA,SAC7C;AAAA,MACF;AACA,MAAA,OAAOA,sBAAA,CAAM,aAAa,IAAA,EAAM;AAAA,QAC9B,KAAK,IAAA,CAAK;AAAA,OACS,CAAA;AAAA,IACvB;AAAA;AAzDA,EADI,qBACG,WAAA,GAAc,8BAAA;AA4DvB,EAAA,OAAO,oBAAA;AACT;AAEA,SAAS,8BACP,KAAA,EACkD;AAAA,EAClD,MAAM,kBAAA,SAA2BA,sBAAA,CAAM,SAAA,CAAuC;AAAA,IAA9E,WAAA,GAAA;AAAA,MAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AAKE,MAAA,IAAA,CAAQ,OAAA,GAAU,CAAC,WAAA,KAA6B;AAC9C,QAAA,IAAA,CAAK,YAAY,WAAW,CAAA;AAAA,MAC9B,CAAA;AAAA,IAAA;AAAA,IAEQ,SAAA,GAAkB;AACxB,MAAA,IAAA,CAAK,cAAc,KAAA,CAAM,SAAA,CAAU,KAAK,KAAA,CAAM,EAAA,EAAI,KAAK,OAAO,CAAA;AAAA,IAChE;AAAA,IAEA,iBAAA,GAA0B;AACxB,MAAA,IAAA,CAAK,SAAA,EAAU;AAAA,IACjB;AAAA,IAEA,mBAAmB,QAAA,EAA6C;AAC9D,MAAA,IAAI,QAAA,CAAS,EAAA,KAAO,IAAA,CAAK,KAAA,CAAM,EAAA,EAAI;AACnC,MAAA,IAAA,CAAK,WAAA,IAAc;AACnB,MAAA,IAAA,CAAK,SAAA,EAAU;AAAA,IACjB;AAAA,IAEA,oBAAA,GAA6B;AAC3B,MAAA,IAAA,CAAK,WAAA,IAAc;AAAA,IACrB;AAAA,IAEA,MAAA,GAA0B;AACxB,MAAA,OAAO,IAAA,CAAK,MAAM,MAAA,EAAO;AAAA,IAC3B;AAAA;AA5BA,EADI,mBACG,WAAA,GAAc,4BAAA;AA+BvB,EAAA,OAAO,kBAAA;AACT;AAOA,SAAS,sBAAsB,KAAA,EAA8C;AAC3E,EAAA,OACE,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,IAAA,IAAS,MAA6B,IAAA,KAAS,SAAA;AAE1F;AAEA,SAAS,yBAAA,CAA0B,UAAoB,UAAA,EAA0C;AAC/F,EAAA,MAAM,OAAA,GAAU,QAAA,CAAS,aAAA,CAAc,UAAA,CAAW,GAAG,CAAA;AACrD,EAAA,KAAA,MAAW,SAAA,IAAa,WAAW,UAAA,EAAY;AAC7C,IAAA,eAAA,CAAgB,OAAA,EAAS,SAAA,CAAU,IAAA,EAAM,SAAA,CAAU,KAAK,CAAA;AAAA,EAC1D;AACA,EAAA,KAAA,MAAW,KAAA,IAAS,WAAW,MAAA,EAAQ,WAAA,CAAY,SAAS,KAAA,CAAM,IAAA,EAAM,MAAM,KAAK,CAAA;AACnF,EAAA,KAAA,MAAW,KAAA,IAAS,WAAW,QAAA,EAAU;AACvC,IAAA,IAAI,qBAAA,CAAsB,KAAK,CAAA,EAAG;AAChC,MAAA,OAAA,CAAQ,MAAA,CAAO,yBAAA,CAA0B,QAAA,EAAU,KAAK,CAAC,CAAA;AACzD,MAAA;AAAA,IACF;AACA,IAAA,MAAM,IAAA,GAAO,gBAAgB,KAAK,CAAA;AAClC,IAAA,IAAI,MAAM,OAAA,CAAQ,MAAA,CAAO,QAAA,CAAS,cAAA,CAAe,IAAI,CAAC,CAAA;AAAA,EACxD;AAIA,EAAA,KAAA,MAAW,SAAA,IAAa,WAAW,UAAA,EAAY;AAC7C,IAAA,IAAI,SAAA,CAAU,SAAS,OAAA,KAAY,eAAA,CAAgB,OAAO,CAAA,IAAK,iBAAA,CAAkB,OAAO,CAAA,CAAA,EAAI;AAC1F,MAAA,eAAA,CAAgB,OAAA,EAAS,SAAA,CAAU,IAAA,EAAM,SAAA,CAAU,KAAK,CAAA;AAAA,IAC1D;AAAA,EACF;AACA,EAAA,OAAO,OAAA;AACT;AAEA,SAAS,0BAAA,CACP,SACA,UAAA,EACA,WAAA,uBAAuC,GAAA,EAAI,EAC3C,IAAA,GAA0B,EAAC,EAClB;AACT,EAAA,IAAI,OAAA,CAAQ,QAAQ,WAAA,EAAY,KAAM,WAAW,GAAA,CAAI,WAAA,IAAe,OAAO,KAAA;AAC3E,EAAA,IAAI,YAAY,GAAA,CAAI,IAAA,CAAK,KAAK,GAAG,CAAC,GAAG,OAAO,IAAA;AAC5C,EAAA,MAAM,gBAAA,GAAmB,UAAA,CAAW,QAAA,CAAS,MAAA,CAAO,qBAAqB,CAAA;AACzE,EAAA,IAAI,OAAA,CAAQ,QAAA,CAAS,MAAA,KAAW,gBAAA,CAAiB,QAAQ,OAAO,KAAA;AAChE,EAAA,OAAO,gBAAA,CAAiB,KAAA;AAAA,IAAM,CAAC,KAAA,EAAO,KAAA,KACpC,0BAAA,CAA2B,QAAQ,QAAA,CAAS,KAAK,CAAA,EAAG,KAAA,EAAO,WAAA,EAAa,CAAC,GAAG,IAAA,EAAM,KAAK,CAAC;AAAA,GAC1F;AACF;AAEA,SAAS,sBAAA,CAAuB,MAAe,IAAA,EAAyC;AACtF,EAAA,IAAI,OAAA,GAA0B,IAAA;AAC9B,EAAA,KAAA,MAAW,SAAS,IAAA,EAAM,OAAA,GAAU,OAAA,EAAS,QAAA,CAAS,KAAK,CAAA,IAAK,IAAA;AAChE,EAAA,OAAO,OAAA;AACT;AASA,IAAM,uBAAA,0BAAiC,qCAAqC,CAAA;AAE5E,SAAS,iBAAiB,GAAA,EAAwB;AAChD,EAAA,OAAO,OAAO,GAAG,CAAA;AACnB;AAEA,SAAS,8BAAA,CAA+B,SAAkC,KAAA,EAAyB;AACjG,EAAA,OAAO,OAAA,CAAQ,IAAA,KAAS,MAAA,GAAS,eAAA,CAAgB,KAAK,CAAA,GAAI,KAAA;AAC5D;AAIA,SAAS,yBAAA,CACP,KAAA,EACA,IAAA,EACA,KAAA,EACW;AACX,EAAA,OAAO,MAAM,QAAA,CAAS,GAAA;AAAA,IAAI,CAAC,YACzB,8BAAA,CAA+B,OAAA,EAAS,QAAQ,IAAA,CAAK,IAAA,EAAM,KAAK,CAAC;AAAA,GACnE;AACF;AAEA,SAAS,qBAAA,CACP,KAAA,EACA,QAAA,EACA,IAAA,EACA,KAAA,EACM;AACN,EAAA,KAAA,IAAS,eAAe,CAAA,EAAG,YAAA,GAAe,MAAM,QAAA,CAAS,MAAA,EAAQ,gBAAgB,CAAA,EAAG;AAClF,IAAA,MAAM,OAAA,GAAU,KAAA,CAAM,QAAA,CAAS,YAAY,CAAA;AAC3C,IAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,IAAA,CAAK,IAAA,EAAM,KAAK,CAAA;AACzC,IAAA,MAAM,KAAA,GAAQ,8BAAA,CAA+B,OAAA,EAAS,QAAQ,CAAA;AAC9D,IAAA,IAAI,OAAO,EAAA,CAAG,QAAA,CAAS,OAAO,YAAY,CAAA,EAAG,KAAK,CAAA,EAAG;AACrD,IAAA,QAAA,CAAS,MAAA,CAAO,YAAY,CAAA,GAAI,KAAA;AAChC,IAAA,MAAM,MAAA,GAAS,sBAAA,CAAuB,QAAA,CAAS,OAAA,EAAS,QAAQ,IAAI,CAAA;AACpE,IAAA,IAAI,CAAC,MAAA,EAAQ;AACb,IAAA,IAAI,OAAA,CAAQ,SAAS,MAAA,EAAQ;AAC3B,MAAA,MAAA,CAAO,WAAA,GAAc,KAAA;AAAA,IACvB,CAAA,MAAA,IAAW,OAAA,CAAQ,IAAA,KAAS,OAAA,IAAW,QAAQ,IAAA,EAAM;AACnD,MAAA,WAAA,CAAY,MAAA,EAAQ,OAAA,CAAQ,IAAA,EAAM,QAAQ,CAAA;AAAA,IAC5C,CAAA,MAAA,IAAW,OAAA,CAAQ,IAAA,KAAS,WAAA,IAAe,QAAQ,IAAA,EAAM;AACvD,MAAA,eAAA,CAAgB,MAAA,EAAQ,OAAA,CAAQ,IAAA,EAAM,QAAQ,CAAA;AAAA,IAChD;AAAA,EACF;AACF;AAEA,SAAS,2BAAA,CACP,WAAA,EACA,IAAA,EACA,KAAA,EACoB;AACpB,EAAA,MAAM,IAAA,GAAO,WAAA,CAAY,IAAA,CAAK,IAAA,EAAM,KAAK,CAAA;AACzC,EAAA,IAAI,WAAA,CAAY,OAAA,IAAW,CAAC,IAAA,EAAM;AAChC,IAAA,OAAO,OAAO,IAAA,KAAS,QAAA,IAAY,OAAO,IAAA,KAAS,QAAA,GAAW,CAAC,WAAA,EAAa,IAAI,CAAA,GAAI,CAAC,OAAO,CAAA;AAAA,EAC9F;AACA,EAAA,MAAM,GAAA,GAAM,OAAO,QAAA,GAAW,OAAA;AAC9B,EAAA,MAAM,MAAA,GAAS,GAAA,KAAQ,QAAA,GAAW,WAAA,CAAY,SAAS,WAAA,CAAY,KAAA;AACnE,EAAA,IAAI,CAAC,MAAA,EAAQ,OAAO,CAAC,OAAO,CAAA;AAC5B,EAAA,OAAO;AAAA,IACL,GAAA;AAAA,IACA,GAAG,OAAO,QAAA,CAAS,GAAA;AAAA,MAAI,CAAC,YACtB,8BAAA,CAA+B,OAAA,EAAS,QAAQ,IAAA,CAAK,IAAA,EAAM,KAAK,CAAC;AAAA;AACnE,GACF;AACF;AAEA,SAAS,6BAAA,CACP,KAAA,EACA,IAAA,EACA,KAAA,EACiC;AACjC,EAAA,OAAO,IAAI,GAAA;AAAA,IAAA,CACR,MAAM,YAAA,IAAgB,EAAC,EAAG,GAAA,CAAI,CAAC,WAAA,KAAgB;AAAA,MAC9C,WAAA,CAAY,EAAA;AAAA,MACZ,2BAAA,CAA4B,WAAA,EAAa,IAAA,EAAM,KAAK;AAAA,KACrD;AAAA,GACH;AACF;AAEA,SAAS,0BAAA,CACP,UACA,IAAA,EACS;AACT,EAAA,OACE,CAAC,QAAA,IACD,QAAA,CAAS,WAAW,IAAA,CAAK,MAAA,IACzB,KAAK,IAAA,CAAK,CAAC,KAAA,EAAO,KAAA,KAAU,CAAC,MAAA,CAAO,EAAA,CAAG,OAAO,QAAA,CAAS,KAAK,CAAC,CAAC,CAAA;AAElE;AAWA,SAAS,yBACP,KAAA,EACkC;AAClC,EAAA,MAAM,IAAA,GAAO,MAAM,IAAA,EAAK;AACxB,EAAA,IAAI,KAAA,CAAM,OAAA,IAAW,CAAC,IAAA,EAAM;AAI1B,IAAA,IAAI,OAAO,SAAS,QAAA,IAAY,OAAO,SAAS,QAAA,EAAU,OAAO,EAAE,IAAA,EAAM,UAAA,EAAW;AACpF,IAAA,OAAO,EAAE,MAAM,OAAA,EAAQ;AAAA,EACzB;AACA,EAAA,MAAM,GAAA,GAAM,OAAO,QAAA,GAAW,OAAA;AAC9B,EAAA,MAAM,MAAA,GAAS,GAAA,KAAQ,QAAA,GAAW,KAAA,CAAM,SAAS,KAAA,CAAM,KAAA;AACvD,EAAA,OAAO,MAAA,GAAS,EAAE,IAAA,EAAM,QAAA,EAAU,KAAK,MAAA,EAAO,GAAI,EAAE,IAAA,EAAM,OAAA,EAAQ;AACpE;AAEA,SAAS,qCAAA,CACP,SACA,KAAA,EACS;AACT,EAAA,OAAO,OAAA,CAAQ,IAAA,KAAS,MAAA,GAAS,eAAA,CAAgB,KAAK,CAAA,GAAI,KAAA;AAC5D;AAEA,SAAS,iCAAiC,MAAA,EAAkD;AAC1F,EAAA,OAAO,OAAO,QAAA,CAAS,GAAA;AAAA,IAAI,CAAC,OAAA,KAC1B,qCAAA,CAAsC,OAAA,EAAS,OAAA,CAAQ,MAAM;AAAA,GAC/D;AACF;AAEA,SAAS,4BAAA,CACP,QACA,QAAA,EACM;AACN,EAAA,KAAA,IAAS,eAAe,CAAA,EAAG,YAAA,GAAe,OAAO,QAAA,CAAS,MAAA,EAAQ,gBAAgB,CAAA,EAAG;AACnF,IAAA,MAAM,OAAA,GAAU,MAAA,CAAO,QAAA,CAAS,YAAY,CAAA;AAC5C,IAAA,MAAM,QAAA,GAAW,QAAQ,IAAA,EAAK;AAC9B,IAAA,MAAM,KAAA,GAAQ,qCAAA,CAAsC,OAAA,EAAS,QAAQ,CAAA;AACrE,IAAA,IAAI,OAAO,EAAA,CAAG,QAAA,CAAS,OAAO,YAAY,CAAA,EAAG,KAAK,CAAA,EAAG;AACrD,IAAA,QAAA,CAAS,MAAA,CAAO,YAAY,CAAA,GAAI,KAAA;AAChC,IAAA,MAAM,MAAA,GAAS,sBAAA,CAAuB,QAAA,CAAS,OAAA,EAAS,QAAQ,IAAI,CAAA;AACpE,IAAA,IAAI,CAAC,MAAA,EAAQ;AACb,IAAA,IAAI,OAAA,CAAQ,SAAS,MAAA,EAAQ;AAC3B,MAAA,MAAA,CAAO,WAAA,GAAc,KAAA;AAAA,IACvB,CAAA,MAAA,IAAW,OAAA,CAAQ,IAAA,KAAS,OAAA,IAAW,QAAQ,IAAA,EAAM;AACnD,MAAA,WAAA,CAAY,MAAA,EAAQ,OAAA,CAAQ,IAAA,EAAM,QAAQ,CAAA;AAAA,IAC5C,CAAA,MAAA,IAAW,OAAA,CAAQ,IAAA,KAAS,WAAA,IAAe,QAAQ,IAAA,EAAM;AACvD,MAAA,eAAA,CAAgB,MAAA,EAAQ,OAAA,CAAQ,IAAA,EAAM,QAAQ,CAAA;AAAA,IAChD;AAAA,EACF;AACF;AAEA,SAAS,oCACP,KAAA,EACwD;AAAA,EAKxD,MAAM,wBAAA,SAAiCA,sBAAA,CAAM,SAAA,CAAoD;AAAA,IAAjG,WAAA,GAAA;AAAA,MAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AAGE,MAAA,IAAA,CAAA,KAAA,GAAe,EAAE,UAAU,KAAA,EAAM;AACjC,MAAA,IAAA,CAAQ,IAAA,GAAuB,IAAA;AAC/B,MAAA,IAAA,CAAQ,OAAA,GAAU,KAAA;AAClB,MAAA,IAAA,CAAQ,iBAAA,GAAoB,KAAA;AAC5B,MAAA,IAAA,CAAQ,eAAA,GAAkB,CAAA;AAC1B,MAAA,IAAA,CAAQ,cAAA,GAAiB,KAAA;AACzB,MAAA,IAAA,CAAQ,eAAe,IAAA,CAAK,KAAA;AAE5B,MAAA,IAAA,CAAQ,YAAA,GAA0C,IAAA;AAClD,MAAA,IAAA,CAAQ,QAAA,GAAwC,IAAA;AAEhD,MAAA,IAAA,CAAQ,WAAA,GAAc,CAAC,IAAA,KAAyB;AAC9C,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AAAA,MACd,CAAA;AAmFA,MAAA,IAAA,CAAQ,OAAA,GAAU,CAAC,WAAA,KAA6B;AAC9C,QAAA,IAAA,CAAK,UAAU,WAAW,CAAA;AAAA,MAC5B,CAAA;AAAA,IAAA;AAAA,IAnFQ,KAAA,GAAiB;AACvB,MAAA,IAAI,CAAC,IAAA,CAAK,IAAA,EAAM,OAAO,KAAA;AACvB,MAAA,MAAM,SAAA,GAAY,wBAAA,CAAyB,IAAA,CAAK,YAAY,CAAA;AAC5D,MAAA,IAAI,SAAA,CAAU,IAAA,KAAS,UAAA,EAAY,OAAO,KAAA;AAC1C,MAAA,IAAI,SAAA,CAAU,SAAS,OAAA,EAAS;AAC9B,QAAA,IAAI,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,MAAA,KAAW,GAAG,OAAO,KAAA;AAC9C,QAAA,IAAA,CAAK,YAAA,GAAe,IAAA;AACpB,QAAA,IAAA,CAAK,QAAA,GAAW,IAAA;AAChB,QAAA,OAAO,IAAA;AAAA,MACT;AACA,MAAA,IACE,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,MAAA,KAAW,KAChC,IAAA,CAAK,IAAA,CAAK,iBAAA,KAAsB,IAAA,IAChC,IAAA,CAAK,IAAA,CAAK,iBAAA,KAAsB,IAAA,CAAK,KAAK,UAAA,EAC1C;AACA,QAAA,OAAO,KAAA;AAAA,MACT;AACA,MAAA,MAAM,UAAA,GAAa,SAAA,CAAU,MAAA,CAAO,MAAA,EAAO;AAC3C,MAAA,MAAM,OAAA,GAAU,KAAK,IAAA,CAAK,iBAAA;AAC1B,MAAA,IAAI,CAAC,0BAAA,CAA2B,OAAA,EAAS,UAAU,GAAG,OAAO,KAAA;AAC7D,MAAA,IAAA,CAAK,eAAe,SAAA,CAAU,GAAA;AAC9B,MAAA,IAAA,CAAK,QAAA,GAAW;AAAA,QACd,OAAA;AAAA,QACA,MAAA,EAAQ,gCAAA,CAAiC,SAAA,CAAU,MAAM;AAAA,OAC3D;AACA,MAAA,OAAO,IAAA;AAAA,IACT;AAAA,IAEQ,iBAAiB,WAAA,EAAgC;AACvD,MAAA,IAAI,CAAC,IAAA,CAAK,OAAA,IAAW,KAAK,KAAA,CAAM,QAAA,IAAY,KAAK,iBAAA,EAAmB;AAClE,QAAA,WAAA,IAAc;AACd,QAAA;AAAA,MACF;AACA,MAAA,IAAA,CAAK,iBAAA,GAAoB,IAAA;AAGzB,MAAA,IAAA,CAAK,eAAA,IAAmB,CAAA;AACxB,MAAA,IAAA,CAAK,QAAA,CAAS,EAAE,QAAA,EAAU,IAAA,IAAQ,WAAW,CAAA;AAAA,IAC/C;AAAA,IAEQ,UAAU,WAAA,EAAgC;AAChD,MAAA,IAAI,CAAC,IAAA,CAAK,OAAA,IAAW,CAAC,KAAK,IAAA,EAAM;AAC/B,QAAA,WAAA,IAAc;AACd,QAAA;AAAA,MACF;AACA,MAAA,IAAI,IAAA,CAAK,MAAM,QAAA,EAAU;AAIvB,QAAA,IAAA,CAAK,YAAY,WAAW,CAAA;AAC5B,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,SAAA,GAAY,wBAAA,CAAyB,IAAA,CAAK,YAAY,CAAA;AAC5D,MAAA,IAAI,SAAA,CAAU,SAAS,UAAA,EAAY;AACjC,QAAA,IAAA,CAAK,iBAAiB,WAAW,CAAA;AACjC,QAAA;AAAA,MACF;AACA,MAAA,IAAI,SAAA,CAAU,SAAS,OAAA,EAAS;AAC9B,QAAA,IAAI,IAAA,CAAK,QAAA,EAAU,IAAA,CAAK,QAAA,CAAS,QAAQ,MAAA,EAAO;AAChD,QAAA,IAAA,CAAK,YAAA,GAAe,IAAA;AACpB,QAAA,IAAA,CAAK,QAAA,GAAW,IAAA;AAChB,QAAA,WAAA,IAAc;AACd,QAAA;AAAA,MACF;AACA,MAAA,IAAI,IAAA,CAAK,YAAA,KAAiB,SAAA,CAAU,GAAA,IAAO,KAAK,QAAA,EAAU;AACxD,QAAA,4BAAA,CAA6B,SAAA,CAAU,MAAA,EAAQ,IAAA,CAAK,QAAQ,CAAA;AAC5D,QAAA,WAAA,IAAc;AACd,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,OAAA,GAAU,0BAA0B,IAAA,CAAK,IAAA,CAAK,eAAe,SAAA,CAAU,MAAA,CAAO,QAAQ,CAAA;AAC5F,MAAA,IAAA,CAAK,IAAA,CAAK,gBAAgB,OAAO,CAAA;AACjC,MAAA,IAAA,CAAK,eAAe,SAAA,CAAU,GAAA;AAC9B,MAAA,IAAA,CAAK,QAAA,GAAW;AAAA,QACd,OAAA;AAAA,QACA,MAAA,EAAQ,gCAAA,CAAiC,SAAA,CAAU,MAAM;AAAA,OAC3D;AACA,MAAA,WAAA,IAAc;AAAA,IAChB;AAAA,IAMQ,gBAAA,GAAyB;AAC/B,MAAA,IAAI,KAAK,cAAA,EAAgB;AACzB,MAAA,IAAA,CAAK,cAAA,GAAiB,IAAA;AACtB,MAAA,cAAA,CAAe,MAAM;AACnB,QAAA,IAAA,CAAK,cAAA,GAAiB,KAAA;AACtB,QAAA,IAAI,KAAK,OAAA,IAAW,CAAC,KAAK,KAAA,CAAM,QAAA,OAAe,SAAA,EAAU;AAAA,MAC3D,CAAC,CAAA;AAAA,IACH;AAAA,IAEA,qBAAA,CAAsB,WAA8C,SAAA,EAA2B;AAC7F,MAAA,IAAA,CAAK,YAAA,GAAe,SAAA;AACpB,MAAA,IAAI,SAAA,CAAU,QAAA,IAAY,IAAA,CAAK,KAAA,CAAM,UAAU,OAAO,IAAA;AACtD,MAAA,IAAA,CAAK,gBAAA,EAAiB;AACtB,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,IAEA,iBAAA,GAA0B;AACxB,MAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AACf,MAAA,IAAA,CAAK,cAAc,KAAA,CAAM,SAAA,CAAU,KAAK,KAAA,CAAM,EAAA,EAAI,KAAK,OAAO,CAAA;AAC9D,MAAA,IAAI,CAAC,IAAA,CAAK,KAAA,EAAM,OAAQ,gBAAA,EAAiB;AAAA,IAC3C;AAAA,IAEA,oBAAA,GAA6B;AAC3B,MAAA,IAAA,CAAK,OAAA,GAAU,KAAA;AACf,MAAA,IAAA,CAAK,WAAA,IAAc;AACnB,MAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,MAAA,IAAA,CAAK,YAAA,GAAe,IAAA;AACpB,MAAA,IAAA,CAAK,QAAA,GAAW,IAAA;AAAA,IAClB;AAAA,IAEA,MAAA,GAA0B;AACxB,MAAA,MAAM,SAAA,GAAY,IAAA,CAAK,YAAA,CAAa,MAAA,EAAO;AAC3C,MAAA,IAAI,CAACA,uBAAM,cAAA,CAAe,SAAS,KAAK,OAAO,SAAA,CAAU,SAAS,QAAA,EAAU;AAC1E,QAAA,MAAM,IAAI,SAAA;AAAA,UACR,CAAA,0BAAA,EAA6B,IAAA,CAAK,YAAA,CAAa,EAAE,CAAA,6BAAA;AAAA,SACnD;AAAA,MACF;AACA,MAAA,OAAOA,sBAAA,CAAM,aAAa,SAAA,EAAW;AAAA,QACnC,KAAK,IAAA,CAAK,KAAA,CAAM,WAAW,CAAA,MAAA,EAAS,IAAA,CAAK,eAAe,CAAA,CAAA,GAAK,UAAA;AAAA,QAC7D,KAAK,IAAA,CAAK;AAAA,OACS,CAAA;AAAA,IACvB;AAAA;AA/IA,EADI,yBACG,WAAA,GAAc,6BAAA;AAkJvB,EAAA,OAAO,wBAAA;AACT;AAEA,SAAS,sCACP,KAAA,EAC0D;AAAA,EAU1D,MAAM,0BAAA,SAAmCA,sBAAA,CAAM,SAAA,CAG7C;AAAA,IAHF,WAAA,GAAA;AAAA,MAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AAME,MAAA,IAAA,CAAA,KAAA,GAAe,EAAE,UAAU,KAAA,EAAM;AACjC,MAAA,IAAA,CAAQ,IAAA,GAAuB,IAAA;AAC/B,MAAA,IAAA,CAAQ,OAAA,GAAU,KAAA;AAClB,MAAA,IAAA,CAAQ,iBAAA,GAAoB,KAAA;AAC5B,MAAA,IAAA,CAAQ,eAAA,GAAkB,CAAA;AAC1B,MAAA,IAAA,CAAQ,kBAAA,GAAqB,KAAA;AAC7B,MAAA,IAAA,CAAQ,eAAe,IAAA,CAAK,KAAA;AAE5B,MAAA,IAAA,CAAQ,iBAAyD,EAAC;AAClE,MAAA,IAAA,CAAQ,iBAA8B,EAAC;AAEvC,MAAA,IAAA,CAAQ,WAAA,GAAc,CAAC,IAAA,KAAyB;AAC9C,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,QAAA,IAAA,CAAK,YAAA,CAAa,UAAU,IAAI,CAAA;AAAA,MAClC,CAAA;AAyHA,MAAA,IAAA,CAAQ,OAAA,GAAU,CAAC,WAAA,KAA6B;AAC9C,QAAA,IAAA,CAAK,UAAU,WAAW,CAAA;AAAA,MAC5B,CAAA;AAAA,IAAA;AAAA,IAzHQ,eACN,KAAA,EACmD;AACnD,MAAA,MAAM,aAAyD,EAAC;AAChE,MAAA,KAAA,MAAW,KAAA,IAAS,MAAM,MAAA,EAAQ;AAChC,QAAA,MAAM,SAAA,GAAY,yBAAyB,KAAK,CAAA;AAChD,QAAA,IAAI,SAAA,CAAU,IAAA,KAAS,UAAA,EAAY,OAAO,IAAA;AAC1C,QAAA,UAAA,CAAW,KAAK,SAAS,CAAA;AAAA,MAC3B;AACA,MAAA,OAAO,UAAA;AAAA,IACT;AAAA,IAEQ,KAAA,CAAM,KAAA,GAA6C,IAAA,CAAK,YAAA,EAAuB;AACrF,MAAA,IAAI,CAAC,IAAA,CAAK,IAAA,IAAQ,CAAC,MAAA,CAAO,aAAA,CAAc,KAAA,CAAM,QAAQ,CAAA,IAAK,KAAA,CAAM,QAAA,GAAW,CAAA,EAAG,OAAO,KAAA;AACtF,MAAA,MAAM,UAAA,GAAa,IAAA,CAAK,cAAA,CAAe,KAAK,CAAA;AAC5C,MAAA,IAAI,CAAC,YAAY,OAAO,KAAA;AACxB,MAAA,MAAM,QAAA,GAAW,CAAC,GAAG,IAAA,CAAK,KAAK,QAAQ,CAAA;AACvC,MAAA,MAAM,iBAA8B,EAAC;AACrC,MAAA,MAAM,YAAoD,EAAC;AAC3D,MAAA,IAAI,MAAA,GAAS,CAAA;AAEb,MAAA,KAAA,IAAS,aAAa,CAAA,EAAG,UAAA,GAAa,MAAM,MAAA,CAAO,MAAA,EAAQ,cAAc,CAAA,EAAG;AAC1E,QAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,MAAA,CAAO,UAAU,CAAA;AACrC,QAAA,IAAI,CAAC,OAAO,aAAA,CAAc,KAAA,CAAM,MAAM,CAAA,IAAK,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG,OAAO,KAAA;AACpE,QAAA,MAAM,SAAA,GAAY,SAAS,KAAA,CAAM,MAAA;AACjC,QAAA,IAAI,SAAA,GAAY,QAAA,CAAS,MAAA,EAAQ,OAAO,KAAA;AACxC,QAAA,cAAA,CAAe,IAAA,CAAK,QAAA,CAAS,KAAA,CAAM,MAAA,EAAQ,SAAS,CAAC,CAAA;AACrD,QAAA,MAAA,GAAS,SAAA;AAET,QAAA,MAAM,SAAA,GAAY,WAAW,UAAU,CAAA;AACvC,QAAA,IAAI,SAAA,CAAU,SAAS,OAAA,EAAS;AAC9B,UAAA,SAAA,CAAU,KAAK,IAAI,CAAA;AACnB,UAAA;AAAA,QACF;AACA,QAAA,MAAM,OAAA,GAAU,SAAS,MAAM,CAAA;AAC/B,QAAA,IAAI,CAAC,SAAS,OAAO,KAAA;AACrB,QAAA,MAAM,UAAA,GAAa,SAAA,CAAU,MAAA,CAAO,MAAA,EAAO;AAC3C,QAAA,IAAI,CAAC,0BAAA,CAA2B,OAAA,EAAS,UAAU,GAAG,OAAO,KAAA;AAC7D,QAAA,SAAA,CAAU,IAAA,CAAK;AAAA,UACb,KAAK,SAAA,CAAU,GAAA;AAAA,UACf,IAAA,EAAM;AAAA,YACJ,OAAA;AAAA,YACA,MAAA,EAAQ,gCAAA,CAAiC,SAAA,CAAU,MAAM;AAAA;AAC3D,SACD,CAAA;AACD,QAAA,MAAA,IAAU,CAAA;AAAA,MACZ;AAEA,MAAA,IAAI,MAAA,GAAS,KAAA,CAAM,QAAA,KAAa,QAAA,CAAS,QAAQ,OAAO,KAAA;AACxD,MAAA,cAAA,CAAe,IAAA,CAAK,QAAA,CAAS,KAAA,CAAM,MAAM,CAAC,CAAA;AAC1C,MAAA,IAAA,CAAK,cAAA,GAAiB,cAAA;AACtB,MAAA,IAAA,CAAK,cAAA,GAAiB,SAAA;AACtB,MAAA,OAAO,IAAA;AAAA,IACT;AAAA,IAEQ,YAAY,UAAA,EAAsC;AACxD,MAAA,KAAA,IAAS,IAAA,GAAO,aAAa,CAAA,EAAG,IAAA,GAAO,KAAK,cAAA,CAAe,MAAA,EAAQ,QAAQ,CAAA,EAAG;AAC5E,QAAA,MAAM,YAAA,GAAe,IAAA,CAAK,cAAA,CAAe,IAAI,IAAI,CAAC,CAAA;AAClD,QAAA,IAAI,cAAc,OAAO,YAAA;AACzB,QAAA,MAAM,WAAA,GAAc,IAAA,CAAK,cAAA,CAAe,IAAI,GAAG,IAAA,CAAK,OAAA;AACpD,QAAA,IAAI,aAAa,OAAO,WAAA;AAAA,MAC1B;AACA,MAAA,OAAO,KAAK,cAAA,CAAe,IAAA,CAAK,eAAe,MAAM,CAAA,GAAI,CAAC,CAAA,IAAK,IAAA;AAAA,IACjE;AAAA,IAEQ,cAAA,CACN,YACA,SAAA,EACM;AACN,MAAA,IAAI,CAAC,KAAK,IAAA,EAAM;AAChB,MAAA,MAAM,QAAA,GAAW,IAAA,CAAK,cAAA,CAAe,UAAU,CAAA;AAC/C,MAAA,IAAI,SAAA,CAAU,SAAS,OAAA,EAAS;AAC9B,QAAA,QAAA,EAAU,IAAA,CAAK,QAAQ,MAAA,EAAO;AAC9B,QAAA,IAAA,CAAK,cAAA,CAAe,UAAU,CAAA,GAAI,IAAA;AAClC,QAAA;AAAA,MACF;AACA,MAAA,IAAI,QAAA,EAAU,GAAA,KAAQ,SAAA,CAAU,GAAA,EAAK;AACnC,QAAA,4BAAA,CAA6B,SAAA,CAAU,MAAA,EAAQ,QAAA,CAAS,IAAI,CAAA;AAC5D,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,OAAA,GAAU,0BAA0B,IAAA,CAAK,IAAA,CAAK,eAAe,SAAA,CAAU,MAAA,CAAO,QAAQ,CAAA;AAC5F,MAAA,IAAI,QAAA,EAAU,QAAA,CAAS,IAAA,CAAK,OAAA,CAAQ,YAAY,OAAO,CAAA;AAAA,gBAC7C,IAAA,CAAK,YAAA,CAAa,SAAS,IAAA,CAAK,WAAA,CAAY,UAAU,CAAC,CAAA;AACjE,MAAA,IAAA,CAAK,cAAA,CAAe,UAAU,CAAA,GAAI;AAAA,QAChC,KAAK,SAAA,CAAU,GAAA;AAAA,QACf,IAAA,EAAM;AAAA,UACJ,OAAA;AAAA,UACA,MAAA,EAAQ,gCAAA,CAAiC,SAAA,CAAU,MAAM;AAAA;AAC3D,OACF;AAAA,IACF;AAAA,IAEQ,UAAU,WAAA,EAAgC;AAChD,MAAA,IAAI,CAAC,IAAA,CAAK,OAAA,IAAW,CAAC,KAAK,IAAA,EAAM;AAC/B,QAAA,WAAA,IAAc;AACd,QAAA;AAAA,MACF;AACA,MAAA,IAAI,IAAA,CAAK,MAAM,QAAA,EAAU;AACvB,QAAA,IAAA,CAAK,eAAA,IAAmB,CAAA;AACxB,QAAA,IAAA,CAAK,YAAY,WAAW,CAAA;AAC5B,QAAA;AAAA,MACF;AACA,MAAA,IAAI,KAAK,YAAA,CAAa,MAAA,CAAO,MAAA,KAAW,IAAA,CAAK,eAAe,MAAA,EAAQ;AAClE,QAAA,IAAA,CAAK,iBAAiB,WAAW,CAAA;AACjC,QAAA;AAAA,MACF;AACA,MAAA,MAAM,UAAA,GAAa,IAAA,CAAK,cAAA,CAAe,IAAA,CAAK,YAAY,CAAA;AACxD,MAAA,IAAI,CAAC,UAAA,EAAY;AACf,QAAA,IAAA,CAAK,iBAAiB,WAAW,CAAA;AACjC,QAAA;AAAA,MACF;AAEA,MAAA,KAAA,IAAS,UAAA,GAAa,KAAK,cAAA,CAAe,MAAA,GAAS,GAAG,UAAA,IAAc,CAAA,EAAG,cAAc,CAAA,EAAG;AACtF,QAAA,IAAA,CAAK,cAAA,CAAe,UAAA,EAAY,UAAA,CAAW,UAAU,CAAC,CAAA;AAAA,MACxD;AACA,MAAA,WAAA,IAAc;AAAA,IAChB;AAAA,IAMQ,iBAAiB,WAAA,EAAgC;AACvD,MAAA,IAAI,CAAC,IAAA,CAAK,OAAA,IAAW,KAAK,KAAA,CAAM,QAAA,IAAY,KAAK,iBAAA,EAAmB;AAClE,QAAA,WAAA,IAAc;AACd,QAAA;AAAA,MACF;AACA,MAAA,IAAA,CAAK,iBAAA,GAAoB,IAAA;AACzB,MAAA,IAAA,CAAK,QAAA,CAAS,EAAE,QAAA,EAAU,IAAA,IAAQ,WAAW,CAAA;AAAA,IAC/C;AAAA,IAEQ,oBAAA,GAA6B;AACnC,MAAA,IAAI,KAAK,kBAAA,EAAoB;AAC7B,MAAA,IAAA,CAAK,kBAAA,GAAqB,IAAA;AAC1B,MAAA,cAAA,CAAe,MAAM;AACnB,QAAA,IAAA,CAAK,kBAAA,GAAqB,KAAA;AAC1B,QAAA,IAAI,KAAK,OAAA,IAAW,CAAC,KAAK,KAAA,CAAM,QAAA,OAAe,gBAAA,EAAiB;AAAA,MAClE,CAAC,CAAA;AAAA,IACH;AAAA,IAEA,qBAAA,CACE,WACA,SAAA,EACS;AACT,MAAA,IAAA,CAAK,YAAA,GAAe,SAAA;AACpB,MAAA,IAAI,SAAA,CAAU,QAAA,IAAY,IAAA,CAAK,KAAA,CAAM,UAAU,OAAO,IAAA;AACtD,MAAA,IAAA,CAAK,oBAAA,EAAqB;AAC1B,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,IAEA,iBAAA,GAA0B;AACxB,MAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AACf,MAAA,IAAA,CAAK,cAAc,KAAA,CAAM,SAAA,CAAU,KAAK,KAAA,CAAM,EAAA,EAAI,KAAK,OAAO,CAAA;AAC9D,MAAA,IAAI,CAAC,IAAA,CAAK,KAAA,EAAM,OAAQ,gBAAA,EAAiB;AAAA,IAC3C;AAAA,IAEA,oBAAA,GAA6B;AAC3B,MAAA,IAAA,CAAK,OAAA,GAAU,KAAA;AACf,MAAA,IAAA,CAAK,WAAA,IAAc;AACnB,MAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,MAAA,IAAA,CAAK,iBAAiB,EAAC;AACvB,MAAA,IAAA,CAAK,iBAAiB,EAAC;AAAA,IACzB;AAAA,IAEA,MAAA,GAA0B;AACxB,MAAA,MAAM,SAAA,GAAY,IAAA,CAAK,YAAA,CAAa,MAAA,EAAO;AAC3C,MAAA,IAAI,CAACA,uBAAM,cAAA,CAAe,SAAS,KAAK,OAAO,SAAA,CAAU,SAAS,QAAA,EAAU;AAC1E,QAAA,MAAM,IAAI,SAAA;AAAA,UACR,CAAA,4BAAA,EAA+B,IAAA,CAAK,YAAA,CAAa,EAAE,CAAA,6BAAA;AAAA,SACrD;AAAA,MACF;AACA,MAAA,OAAOA,sBAAA,CAAM,aAAa,SAAA,EAAW;AAAA,QACnC,KAAK,IAAA,CAAK,KAAA,CAAM,WAAW,CAAA,MAAA,EAAS,IAAA,CAAK,eAAe,CAAA,CAAA,GAAK,UAAA;AAAA,QAC7D,KAAK,IAAA,CAAK;AAAA,OACS,CAAA;AAAA,IACvB;AAAA;AAlMA,EAJI,2BAIG,WAAA,GAAc,+BAAA;AAqMvB,EAAA,OAAO,0BAAA;AACT;AAGA,SAAS,sCAAsC,QAAA,EAA0C;AACvF,EAAA,MAAM,QAAkB,EAAC;AACzB,EAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,EAAE,QAAQ,QAAA,CAAS,MAAA,EAAO,EAAG,MAAM,EAAE,CAAA;AAEjE,EAAA,KAAA,IAAS,QAAQ,CAAA,EAAG,KAAA,GAAQ,QAAA,CAAS,MAAA,EAAQ,SAAS,CAAA,EAAG;AACvD,IAAA,IAAI,QAAA,CAAS,KAAK,CAAA,GAAI,CAAA,EAAG;AACzB,IAAA,IAAI,GAAA,GAAM,CAAA;AACV,IAAA,IAAI,OAAO,KAAA,CAAM,MAAA;AACjB,IAAA,OAAO,MAAM,IAAA,EAAM;AACjB,MAAA,MAAM,MAAA,GAAU,MAAM,IAAA,IAAS,CAAA;AAC/B,MAAA,IAAI,QAAA,CAAS,MAAM,MAAM,CAAC,IAAI,QAAA,CAAS,KAAK,CAAA,EAAG,GAAA,GAAM,MAAA,GAAS,CAAA;AAAA,WACzD,IAAA,GAAO,MAAA;AAAA,IACd;AACA,IAAA,IAAI,MAAM,CAAA,EAAG,QAAA,CAAS,KAAK,CAAA,GAAI,KAAA,CAAM,MAAM,CAAC,CAAA;AAC5C,IAAA,KAAA,CAAM,GAAG,CAAA,GAAI,KAAA;AAAA,EACf;AAEA,EAAA,MAAM,SAAA,uBAAgB,GAAA,EAAY;AAClC,EAAA,IAAI,MAAA,GAAS,KAAA,CAAM,EAAA,CAAG,EAAE,CAAA,IAAK,EAAA;AAC7B,EAAA,OAAO,UAAU,CAAA,EAAG;AAClB,IAAA,SAAA,CAAU,IAAI,MAAM,CAAA;AACpB,IAAA,MAAA,GAAS,SAAS,MAAM,CAAA;AAAA,EAC1B;AACA,EAAA,OAAO,SAAA;AACT;AAEA,SAAS,8BACP,KAAA,EACkD;AAAA,EA2BlD,MAAM,uBAAA,SAAgCA,sBAAA,CAAM,SAAA,CAAoD;AAAA,IAAhG,WAAA,GAAA;AAAA,MAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AAGE,MAAA,IAAA,CAAA,KAAA,GAA6B;AAAA,QAC3B,aAAA,EAAe,KAAK,KAAA,CAAM,aAAA;AAAA,QAC1B,IAAA,EAAM,KAAK,KAAA,CAAM,IAAA;AAAA,QACjB,KAAA,EAAO,KAAK,KAAA,CAAM;AAAA,OACpB;AAeA,MAAA,IAAA,CAAQ,OAAA,GAAiC,CAAC,IAAA,EAAM,KAAA,EAAO,WAAA,KAAgB;AACrE,QAAA,IAAA,CAAK,QAAA,CAAS,EAAE,IAAA,EAAM,KAAA,IAAS,WAAW,CAAA;AAAA,MAC5C,CAAA;AAAA,IAAA;AAAA,IAdA,OAAO,wBAAA,CACL,KAAA,EACA,KAAA,EACqC;AACrC,MAAA,IAAI,KAAA,CAAM,aAAA,KAAkB,KAAA,CAAM,aAAA,EAAe,OAAO,IAAA;AACxD,MAAA,OAAO;AAAA,QACL,eAAe,KAAA,CAAM,aAAA;AAAA,QACrB,MAAM,KAAA,CAAM,IAAA;AAAA,QACZ,OAAO,KAAA,CAAM;AAAA,OACf;AAAA,IACF;AAAA,IAMQ,SAAA,GAAkB;AACxB,MAAA,IAAA,CAAK,WAAA,GAAc,IAAA,CAAK,KAAA,CAAM,KAAA,CAAM,SAAA,CAAU,IAAA,CAAK,KAAA,CAAM,MAAA,EAAQ,IAAA,CAAK,KAAA,CAAM,EAAA,EAAI,IAAA,CAAK,OAAO,CAAA;AAAA,IAC9F;AAAA,IAEA,iBAAA,GAA0B;AACxB,MAAA,IAAA,CAAK,SAAA,EAAU;AAAA,IACjB;AAAA,IAEA,mBAAmB,QAAA,EAAqC;AACtD,MAAA,IACE,QAAA,CAAS,KAAA,KAAU,IAAA,CAAK,KAAA,CAAM,SAC9B,QAAA,CAAS,MAAA,KAAW,IAAA,CAAK,KAAA,CAAM,MAAA,IAC/B,QAAA,CAAS,EAAA,KAAO,IAAA,CAAK,MAAM,EAAA,EAC3B;AACA,QAAA;AAAA,MACF;AACA,MAAA,IAAA,CAAK,WAAA,IAAc;AACnB,MAAA,IAAA,CAAK,SAAA,EAAU;AAAA,IACjB;AAAA,IAEA,oBAAA,GAA6B;AAC3B,MAAA,IAAA,CAAK,WAAA,IAAc;AAAA,IACrB;AAAA,IAEA,MAAA,GAA0B;AACxB,MAAA,OAAO,IAAA,CAAK,MAAM,MAAA,CAAO,IAAA,CAAK,MAAM,IAAA,EAAM,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA,IAC5D;AAAA;AAnDA,EADI,wBACG,WAAA,GAAc,iCAAA;AAAA,EAsDvB,MAAM,kBAAA,SAA2BA,sBAAA,CAAM,SAAA,CAA8C;AAAA,IAArF,WAAA,GAAA;AAAA,MAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AAGE,MAAA,IAAA,CAAA,KAAA,GAAe,EAAE,UAAU,KAAA,EAAM;AACjC,MAAA,IAAA,CAAQ,IAAA,GAAuB,IAAA;AAC/B,MAAA,IAAA,CAAQ,OAAA,GAAU,KAAA;AAClB,MAAA,IAAA,CAAQ,iBAAA,GAAoB,KAAA;AAC5B,MAAA,IAAA,CAAQ,eAAA,GAAkB,CAAA;AAC1B,MAAA,IAAA,CAAQ,sBAAA,GAAyB,KAAA;AACjC,MAAA,IAAA,CAAQ,cAAA,GAAiB,KAAA;AACzB,MAAA,IAAA,CAAQ,eAAe,IAAA,CAAK,KAAA;AAE5B,MAAA,IAAA,CAAQ,SAAA,uBAAgB,GAAA,EAAsC;AAC9D,MAAA,IAAA,CAAQ,aAAA,GAAgB,CAAA;AACxB,MAAA,IAAA,CAAiB,aAAA,uBAAoB,GAAA,EAGnC;AACF,MAAA,IAAA,CAAiB,oBAAA,uBAA2B,GAAA,EAAgD;AAC5F,MAAA,IAAA,CAAiB,gBAAA,GAAwC;AAAA,QACvD,SAAA,EAAW,CAAC,GAAA,EAAK,EAAA,EAAI,YAAY,IAAA,CAAK,yBAAA,CAA0B,GAAA,EAAK,EAAA,EAAI,OAAO;AAAA,OAClF;AAEA,MAAA,IAAA,CAAQ,WAAA,GAAc,CAAC,IAAA,KAAyB;AAC9C,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AAAA,MACd,CAAA;AAYA,MAAA,IAAA,CAAQ,QAAA,GAAW,CACjB,IAAA,EACA,KAAA,EACA,OAAA,KAC6C;AAC7C,QAAA,IAAI,IAAA,CAAK,MAAM,QAAA,EAAU;AACvB,UAAA,OAAO,CAAC,KAAA,KAAU,IAAA,CAAK,YAAA,CAAa,MAAA,GAAS,OAAO,CAAA,EAAG,MAAA,CAAO,IAAA,EAAM,KAAA,EAAO,KAAK,CAAA;AAAA,QAClF;AACA,QAAA,MAAM,MAAM,gBAAA,CAAiB,IAAA,CAAK,aAAa,MAAA,CAAO,IAAA,EAAM,KAAK,CAAC,CAAA;AAClE,QAAA,IAAI,QAAA,GAAW,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,GAAG,CAAA;AACzC,QAAA,IAAI,CAAC,QAAA,EAAU;AACb,UAAA,QAAA,uBAAe,GAAA,EAAI;AACnB,UAAA,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,GAAA,EAAK,QAAQ,CAAA;AAAA,QACtC;AACA,QAAA,MAAM,QAAA,GAAW,QAAA,CAAS,GAAA,CAAI,OAAO,CAAA;AACrC,QAAA,IAAI,UAAU,OAAO,QAAA;AACrB,QAAA,MAAM,OAAA,GAAoD,CAAC,KAAA,KAAU;AACnE,UAAA,MAAM,QAAA,GAAW,IAAA,CAAK,SAAA,CAAU,GAAA,CAAI,GAAG,CAAA;AACvC,UAAA,MAAM,UAAA,GAAa,IAAA,CAAK,YAAA,CAAa,MAAA,GAAS,OAAO,CAAA;AACrD,UAAA,IAAI,CAAC,QAAA,IAAY,CAAC,UAAA,EAAY;AAC9B,UAAA,OAAO,WAAW,MAAA,CAAO,QAAA,CAAS,IAAA,EAAM,QAAA,CAAS,OAAO,KAAK,CAAA;AAAA,QAC/D,CAAA;AACA,QAAA,QAAA,CAAS,GAAA,CAAI,SAAS,OAAO,CAAA;AAC7B,QAAA,OAAO,OAAA;AAAA,MACT,CAAA;AAEA,MAAA,IAAA,CAAQ,cAAA,GAAiB,CACvB,IAAA,EACA,KAAA,EACA,eACA,MAAA,KACoB;AACpB,QAAA,IAAI,KAAK,KAAA,CAAM,QAAA,EAAU,OAAO,MAAA,CAAO,MAAM,KAAK,CAAA;AAClD,QAAA,MAAM,MAAM,gBAAA,CAAiB,IAAA,CAAK,aAAa,MAAA,CAAO,IAAA,EAAM,KAAK,CAAC,CAAA;AAClE,QAAA,OAAOA,sBAAA,CAAM,cAAc,uBAAA,EAAyB;AAAA,UAClD,GAAA,EAAK,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,aAAa,CAAA,CAAA;AAAA,UAC5B,OAAO,IAAA,CAAK,gBAAA;AAAA,UACZ,MAAA,EAAQ,GAAA;AAAA,UACR,EAAA,EAAI,aAAA;AAAA,UACJ,eAAe,IAAA,CAAK,aAAA;AAAA,UACpB,IAAA;AAAA,UACA,KAAA;AAAA,UACA;AAAA,SACD,CAAA;AAAA,MACH,CAAA;AA+QA,MAAA,IAAA,CAAQ,OAAA,GAAU,CAAC,WAAA,KAA6B;AAC9C,QAAA,IAAA,CAAK,UAAU,WAAW,CAAA;AAAA,MAC5B,CAAA;AAAA,IAAA;AAAA,IAvUQ,SACN,KAAA,EAC6C;AAC7C,MAAA,MAAM,MAAA,GAAS,MAAM,KAAA,EAAM;AAC3B,MAAA,MAAM,QAAQ,MAAA,GAAS,KAAA,CAAM,IAAA,CAAK,MAAM,IAAI,EAAC;AAC7C,MAAA,MAAM,IAAA,GAAO,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU,gBAAA,CAAiB,KAAA,CAAM,MAAA,CAAO,IAAA,EAAM,KAAK,CAAC,CAAC,CAAA;AACnF,MAAA,IAAI,IAAI,GAAA,CAAI,IAAI,EAAE,IAAA,KAAS,IAAA,CAAK,QAAQ,OAAO,IAAA;AAC/C,MAAA,OAAO,EAAE,OAAO,IAAA,EAAK;AAAA,IACvB;AAAA,IAgDQ,yBAAA,CACN,GAAA,EACA,EAAA,EACA,OAAA,EACY;AACZ,MAAA,IAAI,SAAA,GAAY,IAAA,CAAK,oBAAA,CAAqB,GAAA,CAAI,GAAG,CAAA;AACjD,MAAA,IAAI,CAAC,SAAA,EAAW;AACd,QAAA,SAAA,uBAAgB,GAAA,EAAI;AACpB,QAAA,IAAA,CAAK,oBAAA,CAAqB,GAAA,CAAI,GAAA,EAAK,SAAS,CAAA;AAAA,MAC9C;AACA,MAAA,SAAA,CAAU,GAAA,CAAI,IAAI,OAAO,CAAA;AACzB,MAAA,OAAO,MAAM;AACX,QAAA,MAAM,OAAA,GAAU,IAAA,CAAK,oBAAA,CAAqB,GAAA,CAAI,GAAG,CAAA;AACjD,QAAA,IAAI,OAAA,EAAS,GAAA,CAAI,EAAE,CAAA,KAAM,OAAA,EAAS;AAClC,QAAA,OAAA,CAAQ,OAAO,EAAE,CAAA;AACjB,QAAA,IAAI,QAAQ,IAAA,KAAS,CAAA,EAAG,IAAA,CAAK,oBAAA,CAAqB,OAAO,GAAG,CAAA;AAAA,MAC9D,CAAA;AAAA,IACF;AAAA,IAEQ,iBAAA,CAAkB,KAAA,GAAqC,IAAA,CAAK,YAAA,EAAuB;AACzF,MAAA,OAAO,QAAQ,KAAA,CAAM,MAAA,EAAQ,MAAA,IAAU,KAAA,CAAM,cAAc,MAAM,CAAA;AAAA,IACnE;AAAA,IAEQ,mBAAmB,IAAA,EAA+B;AACxD,MAAA,MAAM,MAAA,GAAS,IAAI,GAAA,CAAI,IAAI,CAAA;AAC3B,MAAA,KAAA,MAAW,GAAA,IAAO,IAAA,CAAK,aAAA,CAAc,IAAA,EAAK,EAAG;AAC3C,QAAA,IAAI,CAAC,OAAO,GAAA,CAAI,GAAG,GAAG,IAAA,CAAK,aAAA,CAAc,OAAO,GAAG,CAAA;AAAA,MACrD;AAAA,IACF;AAAA,IAEQ,0BAA0B,IAAA,EAA+B;AAC/D,MAAA,MAAM,MAAA,GAAS,IAAI,GAAA,CAAI,IAAI,CAAA;AAC3B,MAAA,KAAA,MAAW,GAAA,IAAO,IAAA,CAAK,oBAAA,CAAqB,IAAA,EAAK,EAAG;AAClD,QAAA,IAAI,CAAC,OAAO,GAAA,CAAI,GAAG,GAAG,IAAA,CAAK,oBAAA,CAAqB,OAAO,GAAG,CAAA;AAAA,MAC5D;AAAA,IACF;AAAA,IAEQ,KAAA,GAAiB;AACvB,MAAA,IAAI,CAAC,IAAA,CAAK,IAAA,EAAM,OAAO,KAAA;AACvB,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,YAAY,CAAA;AAC5C,MAAA,MAAM,QAAA,GAAW,CAAC,GAAG,IAAA,CAAK,KAAK,QAAQ,CAAA;AACvC,MAAA,IAAI,CAAC,IAAA,IAAQ,IAAA,CAAK,MAAM,MAAA,KAAW,QAAA,CAAS,QAAQ,OAAO,KAAA;AAC3D,MAAA,MAAM,yBAAyB,IAAI,GAAA;AAAA,QAAA,CAChC,IAAA,CAAK,YAAA,CAAa,YAAA,IAAgB,EAAC,EAAG,GAAA,CAAI,CAAC,WAAA,KAAgB,WAAA,CAAY,IAAA,CAAK,IAAA,CAAK,GAAG,CAAC;AAAA,OACxF;AACA,MAAA,MAAM,SAAA,uBAAgB,GAAA,EAAsC;AAC5D,MAAA,KAAA,IAAS,QAAQ,CAAA,EAAG,KAAA,GAAQ,KAAK,KAAA,CAAM,MAAA,EAAQ,SAAS,CAAA,EAAG;AACzD,QAAA,IACE,IAAA,CAAK,iBAAA,EAAkB,IACvB,CAAC,0BAAA;AAAA,UACC,SAAS,KAAK,CAAA;AAAA,UACd,KAAK,YAAA,CAAa,MAAA,CAAO,KAAK,KAAA,CAAM,KAAK,GAAG,KAAK,CAAA;AAAA,UACjD;AAAA,SACF,EACA;AACA,UAAA,OAAO,KAAA;AAAA,QACT;AACA,QAAA,MAAM,QAAA,GAAqC;AAAA,UACzC,GAAA,EAAK,IAAA,CAAK,IAAA,CAAK,KAAK,CAAA;AAAA,UACpB,OAAA,EAAS,SAAS,KAAK,CAAA;AAAA,UACvB,QAAQ,IAAA,CAAK,iBAAA,KACT,IAAA,CAAK,YAAA,CAAa,SAAS,GAAA,CAAI,MAAM,uBAAuB,CAAA,GAC5D,0BAA0B,IAAA,CAAK,YAAA,EAAc,KAAK,KAAA,CAAM,KAAK,GAAG,KAAK,CAAA;AAAA,UACzE,IAAA,EAAM,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA;AAAA,UACtB,KAAA;AAAA,UACA,iBAAA,EAAmB,6BAAA;AAAA,YACjB,IAAA,CAAK,YAAA;AAAA,YACL,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA,YAChB;AAAA;AACF,SACF;AACA,QAAA,IAAI,IAAA,CAAK,mBAAkB,EAAG;AAK5B,UAAA,qBAAA,CAAsB,KAAK,YAAA,EAAc,QAAA,EAAU,KAAK,KAAA,CAAM,KAAK,GAAG,KAAK,CAAA;AAAA,QAC7E;AACA,QAAA,SAAA,CAAU,GAAA,CAAI,IAAA,CAAK,IAAA,CAAK,KAAK,GAAG,QAAQ,CAAA;AAAA,MAC1C;AACA,MAAA,IAAA,CAAK,SAAA,GAAY,SAAA;AACjB,MAAA,IAAA,CAAK,kBAAA,CAAmB,KAAK,IAAI,CAAA;AACjC,MAAA,IAAA,CAAK,yBAAA,CAA0B,KAAK,IAAI,CAAA;AACxC,MAAA,OAAO,IAAA;AAAA,IACT;AAAA,IAEQ,qBAAA,GAAiC;AACvC,MAAA,IAAI;AACF,QAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,YAAY,CAAA,KAAM,IAAA;AAAA,MAC9C,CAAA,CAAA,MAAQ;AACN,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,IACF;AAAA,IAEQ,iBAAiB,WAAA,EAAgC;AACvD,MAAA,IAAI,CAAC,IAAA,CAAK,OAAA,IAAW,KAAK,KAAA,CAAM,QAAA,IAAY,KAAK,iBAAA,EAAmB;AAClE,QAAA,WAAA,IAAc;AACd,QAAA;AAAA,MACF;AACA,MAAA,IAAA,CAAK,iBAAA,GAAoB,IAAA;AACzB,MAAA,IAAA,CAAK,sBAAA,GAAyB,KAAK,qBAAA,EAAsB;AAGzD,MAAA,IAAA,CAAK,eAAA,IAAmB,CAAA;AACxB,MAAA,IAAA,CAAK,QAAA,CAAS,EAAE,QAAA,EAAU,IAAA,IAAQ,WAAW,CAAA;AAAA,IAC/C;AAAA,IAEQ,0BAA0B,WAAA,EAAgC;AAChE,MAAA,IAAA,CAAK,YAAY,MAAM;AACrB,QAAA,IAAI,CAAC,KAAK,OAAA,EAAS;AACjB,UAAA,WAAA,IAAc;AACd,UAAA;AAAA,QACF;AACA,QAAA,IAAI,CAAC,IAAA,CAAK,KAAA,EAAM,EAAG;AACjB,UAAA,IAAA,CAAK,iBAAiB,WAAW,CAAA;AACjC,UAAA;AAAA,QACF;AACA,QAAA,WAAA,IAAc;AAAA,MAChB,CAAC,CAAA;AAAA,IACH;AAAA,IAEQ,wBAAA,CACN,SAMA,WAAA,EACM;AACN,MAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AACxB,QAAA,WAAA,IAAc;AACd,QAAA;AAAA,MACF;AACA,MAAA,IAAI,UAAU,OAAA,CAAQ,MAAA;AACtB,MAAA,MAAM,YAAY,MAAM;AACtB,QAAA,OAAA,IAAW,CAAA;AACX,QAAA,IAAI,OAAA,KAAY,GAAG,WAAA,IAAc;AAAA,MACnC,CAAA;AAIA,MAAAC,kBAAA,CAAU,MAAM;AACd,QAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,UAAA,MAAM,OAAA,GAAU,KAAK,oBAAA,CAAqB,GAAA,CAAI,OAAO,GAAG,CAAA,EAAG,GAAA,CAAI,MAAA,CAAO,EAAE,CAAA;AACxE,UAAA,IAAI,SAAS,OAAA,CAAQ,MAAA,CAAO,IAAA,EAAM,MAAA,CAAO,OAAO,SAAS,CAAA;AAAA,eACpD,SAAA,EAAU;AAAA,QACjB;AAAA,MACF,CAAC,CAAA;AAAA,IACH;AAAA,IAEQ,UAAU,WAAA,EAAgC;AAChD,MAAA,IAAI,CAAC,IAAA,CAAK,OAAA,IAAW,CAAC,KAAK,IAAA,EAAM;AAC/B,QAAA,WAAA,IAAc;AACd,QAAA;AAAA,MACF;AACA,MAAA,IAAI,IAAA,CAAK,MAAM,QAAA,EAAU;AAOvB,QAAA,MAAM,UAAA,GAAa,KAAK,qBAAA,EAAsB;AAC9C,QAAA,IAAI,UAAA,IAAc,KAAK,sBAAA,EAAwB;AAC7C,UAAA,IAAA,CAAK,eAAA,IAAmB,CAAA;AAAA,QAC1B;AACA,QAAA,IAAA,CAAK,sBAAA,GAAyB,UAAA;AAC9B,QAAA,IAAA,CAAK,YAAY,WAAW,CAAA;AAC5B,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,YAAY,CAAA;AAC5C,MAAA,IAAI,CAAC,IAAA,EAAM;AACT,QAAA,IAAA,CAAK,iBAAiB,WAAW,CAAA;AACjC,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,eAAe,CAAC,GAAG,IAAA,CAAK,SAAA,CAAU,MAAM,CAAA;AAC9C,MAAA,IACE,KAAK,iBAAA,EAAkB,KACtB,KAAK,IAAA,CAAK,MAAA,KAAW,aAAa,MAAA,IACjC,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,CAAC,GAAA,EAAK,KAAA,KAAU,QAAQ,YAAA,CAAa,KAAK,CAAC,CAAA,CAAA,EAC5D;AACA,QAAA,IAAA,CAAK,0BAA0B,WAAW,CAAA;AAC1C,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,UAAA,uBAAiB,GAAA,EAAoB;AAC3C,MAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,IAAA,CAAK,aAAA,CAAc,aAAA;AAC9C,MAAA,MAAM,eAAe,OAAA,CAAQ,aAAA,IAAiB,KAAK,IAAA,CAAK,QAAA,CAAS,aAAa,CAAC,CAAA;AAC/E,MAAA,CAAC,GAAG,IAAA,CAAK,SAAS,CAAA,CAAE,QAAQ,CAAC,CAAC,GAAG,CAAA,EAAG,KAAA,KAAU,UAAA,CAAW,GAAA,CAAI,GAAA,EAAK,KAAK,CAAC,CAAA;AACxE,MAAA,MAAM,QAAA,GAAW,IAAI,GAAA,CAAI,IAAA,CAAK,IAAI,CAAA;AAClC,MAAA,KAAA,MAAW,CAAC,GAAA,EAAK,QAAQ,CAAA,IAAK,KAAK,SAAA,EAAW;AAC5C,QAAA,IAAI,CAAC,QAAA,CAAS,GAAA,CAAI,GAAG,CAAA,EAAG,QAAA,CAAS,QAAQ,MAAA,EAAO;AAAA,MAClD;AAEA,MAAA,MAAM,QAAA,GAAW,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,CAAC,QAAQ,UAAA,CAAW,GAAA,CAAI,GAAG,CAAA,IAAK,EAAE,CAAA;AACjE,MAAA,MAAM,eAAA,GAAkB,sCAAsC,QAAQ,CAAA;AACtE,MAAA,MAAM,gBAA4C,EAAC;AACnD,MAAA,MAAM,qBAKD,EAAC;AACN,MAAA,KAAA,IAAS,QAAQ,CAAA,EAAG,KAAA,GAAQ,KAAK,KAAA,CAAM,MAAA,EAAQ,SAAS,CAAA,EAAG;AACzD,QAAA,MAAM,GAAA,GAAM,IAAA,CAAK,IAAA,CAAK,KAAK,CAAA;AAC3B,QAAA,MAAM,QAAA,GAAW,IAAA,CAAK,SAAA,CAAU,GAAA,CAAI,GAAG,CAAA;AACvC,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,qBAAA,CAAsB,KAAK,YAAA,EAAc,QAAA,EAAU,KAAK,KAAA,CAAM,KAAK,GAAG,KAAK,CAAA;AAC3E,UAAA,MAAM,iBAAA,GAAoB,6BAAA;AAAA,YACxB,IAAA,CAAK,YAAA;AAAA,YACL,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA,YAChB;AAAA,WACF;AACA,UAAA,KAAA,MAAW,CAAC,EAAA,EAAI,MAAM,CAAA,IAAK,iBAAA,EAAmB;AAC5C,YAAA,IAAI,2BAA2B,QAAA,CAAS,iBAAA,CAAkB,IAAI,EAAE,CAAA,EAAG,MAAM,CAAA,EAAG;AAC1E,cAAA,kBAAA,CAAmB,IAAA,CAAK,EAAE,GAAA,EAAK,EAAA,EAAI,IAAA,EAAM,KAAK,KAAA,CAAM,KAAK,CAAA,EAAG,KAAA,EAAO,CAAA;AAAA,YACrE;AAAA,UACF;AACA,UAAA,QAAA,CAAS,iBAAA,GAAoB,iBAAA;AAC7B,UAAA,QAAA,CAAS,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA;AAChC,UAAA,QAAA,CAAS,KAAA,GAAQ,KAAA;AACjB,UAAA,aAAA,CAAc,KAAK,QAAQ,CAAA;AAC3B,UAAA;AAAA,QACF;AACA,QAAA,MAAM,OAAA,GAAU,yBAAA;AAAA,UACd,KAAK,IAAA,CAAK,aAAA;AAAA,UACV,KAAK,YAAA,CAAa,MAAA,CAAO,KAAK,KAAA,CAAM,KAAK,GAAG,KAAK;AAAA,SACnD;AACA,QAAA,aAAA,CAAc,IAAA,CAAK;AAAA,UACjB,GAAA;AAAA,UACA,OAAA;AAAA,UACA,MAAA,EAAQ,0BAA0B,IAAA,CAAK,YAAA,EAAc,KAAK,KAAA,CAAM,KAAK,GAAG,KAAK,CAAA;AAAA,UAC7E,IAAA,EAAM,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA;AAAA,UACtB,KAAA;AAAA,UACA,iBAAA,EAAmB,6BAAA;AAAA,YACjB,IAAA,CAAK,YAAA;AAAA,YACL,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA,YAChB;AAAA;AACF,SACD,CAAA;AAAA,MACH;AAEA,MAAA,IAAI,MAAA,GAA2B,IAAA;AAC/B,MAAA,KAAA,IAAS,QAAQ,aAAA,CAAc,MAAA,GAAS,GAAG,KAAA,IAAS,CAAA,EAAG,SAAS,CAAA,EAAG;AACjE,QAAA,MAAM,QAAA,GAAW,cAAc,KAAK,CAAA;AACpC,QAAA,IAAI,QAAA,CAAS,KAAK,CAAA,GAAI,CAAA,EAAG;AACvB,UAAA,IAAA,CAAK,IAAA,CAAK,YAAA,CAAa,QAAA,CAAS,OAAA,EAAS,MAAM,CAAA;AAAA,QACjD,CAAA,MAAA,IAAW,CAAC,eAAA,CAAgB,GAAA,CAAI,KAAK,CAAA,IAAK,QAAA,CAAS,OAAA,CAAQ,WAAA,KAAgB,MAAA,EAAQ;AACjF,UAAA,IAAA,CAAK,IAAA,CAAK,YAAA,CAAa,QAAA,CAAS,OAAA,EAAS,MAAM,CAAA;AAAA,QACjD;AACA,QAAA,MAAA,GAAS,QAAA,CAAS,OAAA;AAAA,MACpB;AACA,MAAA,IAAA,CAAK,SAAA,GAAY,IAAI,GAAA,CAAI,aAAA,CAAc,GAAA,CAAI,CAAC,QAAA,KAAa,CAAC,QAAA,CAAS,GAAA,EAAK,QAAQ,CAAC,CAAC,CAAA;AAClF,MAAA,IAAA,CAAK,kBAAA,CAAmB,KAAK,IAAI,CAAA;AACjC,MAAA,IAAA,CAAK,yBAAA,CAA0B,KAAK,IAAI,CAAA;AACxC,MAAA,IACE,YAAA,IACA,eAAe,WAAA,IACf,aAAA,CAAc,cAAc,aAAA,KAAkB,aAAA,IAC9C,WAAW,aAAA,EACX;AACA,QAAC,aAAA,CAA8B,KAAA,CAAM,EAAE,aAAA,EAAe,MAAM,CAAA;AAAA,MAC9D;AACA,MAAA,IAAA,CAAK,wBAAA,CAAyB,oBAAoB,WAAW,CAAA;AAAA,IAC/D;AAAA,IAMQ,gBAAA,GAAyB;AAC/B,MAAA,IAAI,KAAK,cAAA,EAAgB;AACzB,MAAA,IAAA,CAAK,cAAA,GAAiB,IAAA;AACtB,MAAA,cAAA,CAAe,MAAM;AACnB,QAAA,IAAA,CAAK,cAAA,GAAiB,KAAA;AACtB,QAAA,IAAI,KAAK,OAAA,IAAW,CAAC,KAAK,KAAA,CAAM,QAAA,OAAe,SAAA,EAAU;AAAA,MAC3D,CAAC,CAAA;AAAA,IACH;AAAA,IAEA,qBAAA,CAAsB,WAAwC,SAAA,EAA2B;AACvF,MAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,iBAAA,CAAkB,IAAA,CAAK,YAAY,CAAA;AAC9D,MAAA,MAAM,gBAAA,GAAmB,IAAA,CAAK,iBAAA,CAAkB,SAAS,CAAA;AACzD,MAAA,IAAA,CAAK,YAAA,GAAe,SAAA;AACpB,MAAA,IAAI,SAAA,CAAU,QAAA,IAAY,IAAA,CAAK,KAAA,CAAM,UAAU,OAAO,IAAA;AACtD,MAAA,IAAI,iBAAiB,gBAAA,EAAkB;AAIrC,QAAA,IAAA,CAAK,cAAc,KAAA,EAAM;AACzB,QAAA,OAAO,IAAA;AAAA,MACT;AACA,MAAA,IAAA,CAAK,gBAAA,EAAiB;AACtB,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,IAEA,mBAAmB,aAAA,EAAkD;AACnE,MAAA,IACE,KAAK,KAAA,CAAM,QAAA,IACX,kBAAkB,IAAA,CAAK,KAAA,IACtB,CAAC,IAAA,CAAK,iBAAA,CAAkB,aAAa,CAAA,IAAK,CAAC,KAAK,iBAAA,CAAkB,IAAA,CAAK,KAAK,CAAA,IAC7E,IAAA,CAAK,OAAM,EACX;AACA,QAAA;AAAA,MACF;AACA,MAAA,IAAA,CAAK,gBAAA,EAAiB;AAAA,IACxB;AAAA,IAEA,iBAAA,GAA0B;AACxB,MAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AACf,MAAA,IAAA,CAAK,cAAc,KAAA,CAAM,SAAA,CAAU,KAAK,KAAA,CAAM,EAAA,EAAI,KAAK,OAAO,CAAA;AAC9D,MAAA,IAAI,CAAC,IAAA,CAAK,KAAA,EAAM,OAAQ,gBAAA,EAAiB;AAAA,IAC3C;AAAA,IAEA,oBAAA,GAA6B;AAC3B,MAAA,IAAA,CAAK,OAAA,GAAU,KAAA;AACf,MAAA,IAAA,CAAK,WAAA,IAAc;AACnB,MAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,MAAA,IAAA,CAAK,UAAU,KAAA,EAAM;AACrB,MAAA,IAAA,CAAK,cAAc,KAAA,EAAM;AACzB,MAAA,IAAA,CAAK,qBAAqB,KAAA,EAAM;AAAA,IAClC;AAAA,IAEA,MAAA,GAA0B;AACxB,MAAA,IAAA,CAAK,aAAA,IAAiB,CAAA;AACtB,MAAA,MAAM,YAAY,IAAA,CAAK,YAAA,CAAa,OAAO,IAAA,CAAK,QAAA,EAAU,KAAK,cAAc,CAAA;AAC7E,MAAA,IAAI,CAACD,uBAAM,cAAA,CAAe,SAAS,KAAK,OAAO,SAAA,CAAU,SAAS,QAAA,EAAU;AAC1E,QAAA,MAAM,IAAI,SAAA;AAAA,UACR,CAAA,oBAAA,EAAuB,IAAA,CAAK,YAAA,CAAa,EAAE,CAAA,6BAAA;AAAA,SAC7C;AAAA,MACF;AACA,MAAA,OAAOA,sBAAA,CAAM,aAAa,SAAA,EAAW;AAAA,QACnC,KAAK,IAAA,CAAK,KAAA,CAAM,WAAW,CAAA,MAAA,EAAS,IAAA,CAAK,eAAe,CAAA,CAAA,GAAK,UAAA;AAAA,QAC7D,KAAK,IAAA,CAAK;AAAA,OACS,CAAA;AAAA,IACvB;AAAA;AAnaA,EADI,mBACG,WAAA,GAAc,uBAAA;AAsavB,EAAA,OAAO,kBAAA;AACT;AAEA,SAAS,gCACP,KAAA,EACoD;AAAA,EAUpD,MAAM,oBAAA,SAA6BA,sBAAA,CAAM,SAAA,CAAgD;AAAA,IAAzF,WAAA,GAAA;AAAA,MAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AAGE,MAAA,IAAA,CAAA,KAAA,GAAe,EAAE,UAAU,KAAA,EAAM;AACjC,MAAA,IAAA,CAAQ,IAAA,GAAuB,IAAA;AAC/B,MAAA,IAAA,CAAQ,OAAA,GAAU,KAAA;AAClB,MAAA,IAAA,CAAQ,iBAAA,GAAoB,KAAA;AAC5B,MAAA,IAAA,CAAQ,eAAA,GAAkB,CAAA;AAC1B,MAAA,IAAA,CAAQ,kBAAA,GAAqB,KAAA;AAC7B,MAAA,IAAA,CAAQ,eAAe,IAAA,CAAK,KAAA;AAE5B,MAAA,IAAA,CAAQ,iBAA+D,EAAC;AACxE,MAAA,IAAA,CAAQ,iBAA8B,EAAC;AAEvC,MAAA,IAAA,CAAQ,WAAA,GAAc,CAAC,IAAA,KAAyB;AAC9C,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,QAAA,IAAA,CAAK,YAAA,CAAa,UAAU,IAAI,CAAA;AAAA,MAClC,CAAA;AAiKA,MAAA,IAAA,CAAQ,OAAA,GAAU,CAAC,WAAA,KAA6B;AAC9C,QAAA,IAAA,CAAK,UAAU,WAAW,CAAA;AAAA,MAC5B,CAAA;AAAA,IAAA;AAAA,IAjKQ,UAAU,KAAA,EAA6C;AAC7D,MAAA,MAAM,MAAA,GAAS,MAAM,KAAA,EAAM;AAC3B,MAAA,MAAM,QAAQ,MAAA,GAAS,KAAA,CAAM,IAAA,CAAK,MAAM,IAAI,EAAC;AAC7C,MAAA,MAAM,IAAA,GAAO,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU,gBAAA,CAAiB,KAAA,CAAM,MAAA,CAAO,IAAA,EAAM,KAAK,CAAC,CAAC,CAAA;AACnF,MAAA,IAAI,IAAI,GAAA,CAAI,IAAI,EAAE,IAAA,KAAS,IAAA,CAAK,QAAQ,OAAO,IAAA;AAC/C,MAAA,OAAO,EAAE,OAAO,IAAA,EAAK;AAAA,IACvB;AAAA,IAEQ,WAAW,KAAA,EAA0D;AAC3E,MAAA,MAAM,SAAsB,EAAC;AAC7B,MAAA,KAAA,MAAW,KAAA,IAAS,MAAM,MAAA,EAAQ;AAChC,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,KAAK,CAAA;AACjC,QAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAClB,QAAA,MAAA,CAAO,KAAK,IAAI,CAAA;AAAA,MAClB;AACA,MAAA,OAAO,MAAA;AAAA,IACT;AAAA,IAEQ,KAAA,CAAM,KAAA,GAAuC,IAAA,CAAK,YAAA,EAAuB;AAC/E,MAAA,IAAI,CAAC,IAAA,CAAK,IAAA,IAAQ,CAAC,MAAA,CAAO,aAAA,CAAc,KAAA,CAAM,QAAQ,CAAA,IAAK,KAAA,CAAM,QAAA,GAAW,CAAA,EAAG,OAAO,KAAA;AACtF,MAAA,MAAM,WAAA,GAAc,IAAA,CAAK,UAAA,CAAW,KAAK,CAAA;AACzC,MAAA,IAAI,CAAC,aAAa,OAAO,KAAA;AACzB,MAAA,MAAM,QAAA,GAAW,CAAC,GAAG,IAAA,CAAK,KAAK,QAAQ,CAAA;AACvC,MAAA,MAAM,iBAA8B,EAAC;AACrC,MAAA,MAAM,mBAAiE,EAAC;AACxE,MAAA,IAAI,MAAA,GAAS,CAAA;AAEb,MAAA,KAAA,IAAS,aAAa,CAAA,EAAG,UAAA,GAAa,MAAM,MAAA,CAAO,MAAA,EAAQ,cAAc,CAAA,EAAG;AAC1E,QAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,MAAA,CAAO,UAAU,CAAA;AACrC,QAAA,MAAM,IAAA,GAAO,YAAY,UAAU,CAAA;AACnC,QAAA,IAAI,CAAC,OAAO,aAAA,CAAc,KAAA,CAAM,MAAM,CAAA,IAAK,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG,OAAO,KAAA;AACpE,QAAA,MAAM,SAAA,GAAY,SAAS,KAAA,CAAM,MAAA;AACjC,QAAA,IAAI,SAAA,GAAY,QAAA,CAAS,MAAA,EAAQ,OAAO,KAAA;AACxC,QAAA,cAAA,CAAe,IAAA,CAAK,QAAA,CAAS,KAAA,CAAM,MAAA,EAAQ,SAAS,CAAC,CAAA;AACrD,QAAA,MAAA,GAAS,SAAA;AAET,QAAA,MAAM,MAAA,GAAS,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,MAAA;AACnC,QAAA,IAAI,MAAA,GAAS,QAAA,CAAS,MAAA,EAAQ,OAAO,KAAA;AACrC,QAAA,MAAM,SAAA,uBAAgB,GAAA,EAAsC;AAC5D,QAAA,KAAA,IAAS,QAAQ,CAAA,EAAG,KAAA,GAAQ,KAAK,KAAA,CAAM,MAAA,EAAQ,SAAS,CAAA,EAAG;AACzD,UAAA,MAAM,OAAA,GAAU,QAAA,CAAS,MAAA,GAAS,KAAK,CAAA;AACvC,UAAA,IAAI,CAAC,0BAAA,CAA2B,OAAA,EAAS,KAAA,CAAM,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA,EAAG,KAAK,CAAC,CAAA,EAAG;AAChF,YAAA,OAAO,KAAA;AAAA,UACT;AACA,UAAA,SAAA,CAAU,GAAA,CAAI,IAAA,CAAK,IAAA,CAAK,KAAK,CAAA,EAAG;AAAA,YAC9B,GAAA,EAAK,IAAA,CAAK,IAAA,CAAK,KAAK,CAAA;AAAA,YACpB,OAAA;AAAA,YACA,QAAQ,yBAAA,CAA0B,KAAA,EAAO,KAAK,KAAA,CAAM,KAAK,GAAG,KAAK,CAAA;AAAA,YACjE,IAAA,EAAM,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA;AAAA,YACtB,KAAA;AAAA,YACA,iBAAA,sBAAuB,GAAA;AAAI,WAC5B,CAAA;AAAA,QACH;AACA,QAAA,gBAAA,CAAiB,KAAK,SAAS,CAAA;AAC/B,QAAA,MAAA,GAAS,MAAA;AAAA,MACX;AAEA,MAAA,IAAI,MAAA,GAAS,KAAA,CAAM,QAAA,KAAa,QAAA,CAAS,QAAQ,OAAO,KAAA;AACxD,MAAA,cAAA,CAAe,IAAA,CAAK,QAAA,CAAS,KAAA,CAAM,MAAM,CAAC,CAAA;AAC1C,MAAA,IAAA,CAAK,cAAA,GAAiB,cAAA;AACtB,MAAA,IAAA,CAAK,cAAA,GAAiB,gBAAA;AACtB,MAAA,OAAO,IAAA;AAAA,IACT;AAAA,IAEQ,YAAY,UAAA,EAAsC;AACxD,MAAA,KAAA,IAAS,IAAA,GAAO,aAAa,CAAA,EAAG,IAAA,GAAO,KAAK,cAAA,CAAe,MAAA,EAAQ,QAAQ,CAAA,EAAG;AAC5E,QAAA,MAAM,YAAA,GAAe,IAAA,CAAK,cAAA,CAAe,IAAI,IAAI,CAAC,CAAA;AAClD,QAAA,IAAI,cAAc,OAAO,YAAA;AACzB,QAAA,MAAM,SAAA,GAAY,KAAK,cAAA,CAAe,IAAI,EAAE,MAAA,EAAO,CAAE,IAAA,EAAK,CAAE,KAAA,EAAO,OAAA;AACnE,QAAA,IAAI,WAAW,OAAO,SAAA;AAAA,MACxB;AACA,MAAA,OAAO,KAAK,cAAA,CAAe,IAAA,CAAK,eAAe,MAAM,CAAA,GAAI,CAAC,CAAA,IAAK,IAAA;AAAA,IACjE;AAAA,IAEQ,cAAA,CAAe,YAAoB,IAAA,EAAuB;AAChE,MAAA,IAAI,CAAC,KAAK,IAAA,EAAM;AAChB,MAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,YAAA,CAAa,MAAA,CAAO,UAAU,CAAA;AACjD,MAAA,MAAM,QAAA,GAAW,IAAA,CAAK,cAAA,CAAe,UAAU,CAAA;AAC/C,MAAA,MAAM,UAAA,uBAAiB,GAAA,EAAoB;AAC3C,MAAA,CAAC,GAAG,QAAA,CAAS,IAAA,EAAM,CAAA,CAAE,OAAA,CAAQ,CAAC,GAAA,EAAK,KAAA,KAAU,UAAA,CAAW,GAAA,CAAI,GAAA,EAAK,KAAK,CAAC,CAAA;AACvE,MAAA,MAAM,QAAA,GAAW,IAAI,GAAA,CAAI,IAAA,CAAK,IAAI,CAAA;AAClC,MAAA,KAAA,MAAW,CAAC,GAAA,EAAK,QAAQ,CAAA,IAAK,QAAA,EAAU;AACtC,QAAA,IAAI,CAAC,QAAA,CAAS,GAAA,CAAI,GAAG,CAAA,EAAG,QAAA,CAAS,QAAQ,MAAA,EAAO;AAAA,MAClD;AAEA,MAAA,MAAM,QAAA,GAAW,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,CAAC,QAAQ,UAAA,CAAW,GAAA,CAAI,GAAG,CAAA,IAAK,EAAE,CAAA;AACjE,MAAA,MAAM,eAAA,GAAkB,sCAAsC,QAAQ,CAAA;AACtE,MAAA,MAAM,gBAA4C,EAAC;AACnD,MAAA,KAAA,IAAS,QAAQ,CAAA,EAAG,KAAA,GAAQ,KAAK,KAAA,CAAM,MAAA,EAAQ,SAAS,CAAA,EAAG;AACzD,QAAA,MAAM,GAAA,GAAM,IAAA,CAAK,IAAA,CAAK,KAAK,CAAA;AAC3B,QAAA,MAAM,QAAA,GAAW,QAAA,CAAS,GAAA,CAAI,GAAG,CAAA;AACjC,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,qBAAA,CAAsB,OAAO,QAAA,EAAU,IAAA,CAAK,KAAA,CAAM,KAAK,GAAG,KAAK,CAAA;AAC/D,UAAA,QAAA,CAAS,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA;AAChC,UAAA,QAAA,CAAS,KAAA,GAAQ,KAAA;AACjB,UAAA,aAAA,CAAc,KAAK,QAAQ,CAAA;AAC3B,UAAA;AAAA,QACF;AACA,QAAA,MAAM,OAAA,GAAU,yBAAA;AAAA,UACd,KAAK,IAAA,CAAK,aAAA;AAAA,UACV,MAAM,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,KAAK,GAAG,KAAK;AAAA,SACvC;AACA,QAAA,aAAA,CAAc,IAAA,CAAK;AAAA,UACjB,GAAA;AAAA,UACA,OAAA;AAAA,UACA,QAAQ,yBAAA,CAA0B,KAAA,EAAO,KAAK,KAAA,CAAM,KAAK,GAAG,KAAK,CAAA;AAAA,UACjE,IAAA,EAAM,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA;AAAA,UACtB,KAAA;AAAA,UACA,iBAAA,sBAAuB,GAAA;AAAI,SAC5B,CAAA;AAAA,MACH;AAEA,MAAA,IAAI,MAAA,GAAS,IAAA,CAAK,WAAA,CAAY,UAAU,CAAA;AACxC,MAAA,KAAA,IAAS,QAAQ,aAAA,CAAc,MAAA,GAAS,GAAG,KAAA,IAAS,CAAA,EAAG,SAAS,CAAA,EAAG;AACjE,QAAA,MAAM,QAAA,GAAW,cAAc,KAAK,CAAA;AACpC,QAAA,IAAI,QAAA,CAAS,KAAK,CAAA,GAAI,CAAA,EAAG;AACvB,UAAA,IAAA,CAAK,IAAA,CAAK,YAAA,CAAa,QAAA,CAAS,OAAA,EAAS,MAAM,CAAA;AAAA,QACjD,CAAA,MAAA,IAAW,CAAC,eAAA,CAAgB,GAAA,CAAI,KAAK,CAAA,IAAK,QAAA,CAAS,OAAA,CAAQ,WAAA,KAAgB,MAAA,EAAQ;AACjF,UAAA,IAAA,CAAK,IAAA,CAAK,YAAA,CAAa,QAAA,CAAS,OAAA,EAAS,MAAM,CAAA;AAAA,QACjD;AACA,QAAA,MAAA,GAAS,QAAA,CAAS,OAAA;AAAA,MACpB;AACA,MAAA,IAAA,CAAK,cAAA,CAAe,UAAU,CAAA,GAAI,IAAI,GAAA;AAAA,QACpC,aAAA,CAAc,IAAI,CAAC,QAAA,KAAa,CAAC,QAAA,CAAS,GAAA,EAAK,QAAQ,CAAC;AAAA,OAC1D;AAAA,IACF;AAAA,IAEQ,UAAU,WAAA,EAAgC;AAChD,MAAA,IAAI,CAAC,IAAA,CAAK,OAAA,IAAW,CAAC,KAAK,IAAA,EAAM;AAC/B,QAAA,WAAA,IAAc;AACd,QAAA;AAAA,MACF;AACA,MAAA,IAAI,IAAA,CAAK,MAAM,QAAA,EAAU;AACvB,QAAA,IAAA,CAAK,eAAA,IAAmB,CAAA;AACxB,QAAA,IAAA,CAAK,YAAY,WAAW,CAAA;AAC5B,QAAA;AAAA,MACF;AACA,MAAA,MAAM,WAAA,GAAc,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,YAAY,CAAA;AACrD,MAAA,IAAI,CAAC,WAAA,IAAe,WAAA,CAAY,MAAA,KAAW,IAAA,CAAK,eAAe,MAAA,EAAQ;AACrE,QAAA,IAAA,CAAK,iBAAiB,WAAW,CAAA;AACjC,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,IAAA,CAAK,aAAA,CAAc,aAAA;AAC9C,MAAA,MAAM,eAAe,OAAA,CAAQ,aAAA,IAAiB,KAAK,IAAA,CAAK,QAAA,CAAS,aAAa,CAAC,CAAA;AAC/E,MAAA,KAAA,IAAS,aAAa,WAAA,CAAY,MAAA,GAAS,GAAG,UAAA,IAAc,CAAA,EAAG,cAAc,CAAA,EAAG;AAC9E,QAAA,IAAA,CAAK,cAAA,CAAe,UAAA,EAAY,WAAA,CAAY,UAAU,CAAC,CAAA;AAAA,MACzD;AACA,MAAA,IACE,YAAA,IACA,eAAe,WAAA,IACf,aAAA,CAAc,cAAc,aAAA,KAAkB,aAAA,IAC9C,WAAW,aAAA,EACX;AACA,QAAC,aAAA,CAA8B,KAAA,CAAM,EAAE,aAAA,EAAe,MAAM,CAAA;AAAA,MAC9D;AACA,MAAA,WAAA,IAAc;AAAA,IAChB;AAAA,IAMQ,iBAAiB,WAAA,EAAgC;AACvD,MAAA,IAAI,CAAC,IAAA,CAAK,OAAA,IAAW,KAAK,KAAA,CAAM,QAAA,IAAY,KAAK,iBAAA,EAAmB;AAClE,QAAA,WAAA,IAAc;AACd,QAAA;AAAA,MACF;AACA,MAAA,IAAA,CAAK,iBAAA,GAAoB,IAAA;AACzB,MAAA,IAAA,CAAK,QAAA,CAAS,EAAE,QAAA,EAAU,IAAA,IAAQ,WAAW,CAAA;AAAA,IAC/C;AAAA,IAEQ,oBAAA,GAA6B;AACnC,MAAA,IAAI,KAAK,kBAAA,EAAoB;AAC7B,MAAA,IAAA,CAAK,kBAAA,GAAqB,IAAA;AAC1B,MAAA,cAAA,CAAe,MAAM;AACnB,QAAA,IAAA,CAAK,kBAAA,GAAqB,KAAA;AAC1B,QAAA,IAAI,KAAK,OAAA,IAAW,CAAC,KAAK,KAAA,CAAM,QAAA,OAAe,gBAAA,EAAiB;AAAA,MAClE,CAAC,CAAA;AAAA,IACH;AAAA,IAEA,qBAAA,CAAsB,WAA0C,SAAA,EAA2B;AACzF,MAAA,IAAA,CAAK,YAAA,GAAe,SAAA;AACpB,MAAA,IAAI,SAAA,CAAU,QAAA,IAAY,IAAA,CAAK,KAAA,CAAM,UAAU,OAAO,IAAA;AAItD,MAAA,IAAA,CAAK,oBAAA,EAAqB;AAC1B,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,IAEA,iBAAA,GAA0B;AACxB,MAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AACf,MAAA,IAAA,CAAK,cAAc,KAAA,CAAM,SAAA,CAAU,KAAK,KAAA,CAAM,EAAA,EAAI,KAAK,OAAO,CAAA;AAC9D,MAAA,IAAI,CAAC,IAAA,CAAK,KAAA,EAAM,OAAQ,gBAAA,EAAiB;AAAA,IAC3C;AAAA,IAEA,oBAAA,GAA6B;AAC3B,MAAA,IAAA,CAAK,OAAA,GAAU,KAAA;AACf,MAAA,IAAA,CAAK,WAAA,IAAc;AACnB,MAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,MAAA,IAAA,CAAK,iBAAiB,EAAC;AACvB,MAAA,IAAA,CAAK,iBAAiB,EAAC;AAAA,IACzB;AAAA,IAEA,MAAA,GAA0B;AACxB,MAAA,MAAM,SAAA,GAAY,IAAA,CAAK,YAAA,CAAa,MAAA,EAAO;AAC3C,MAAA,IAAI,CAACA,uBAAM,cAAA,CAAe,SAAS,KAAK,OAAO,SAAA,CAAU,SAAS,QAAA,EAAU;AAC1E,QAAA,MAAM,IAAI,SAAA;AAAA,UACR,CAAA,sBAAA,EAAyB,IAAA,CAAK,YAAA,CAAa,EAAE,CAAA,6BAAA;AAAA,SAC/C;AAAA,MACF;AACA,MAAA,OAAOA,sBAAA,CAAM,aAAa,SAAA,EAAW;AAAA,QACnC,KAAK,IAAA,CAAK,KAAA,CAAM,WAAW,CAAA,MAAA,EAAS,IAAA,CAAK,eAAe,CAAA,CAAA,GAAK,UAAA;AAAA,QAC7D,KAAK,IAAA,CAAK;AAAA,OACS,CAAA;AAAA,IACvB;AAAA;AA1OA,EADI,qBACG,WAAA,GAAc,yBAAA;AA6OvB,EAAA,OAAO,oBAAA;AACT;AAEA,SAAS,8BACP,KAAA,EACkD;AAAA,EAClD,MAAM,kBAAA,SAA2BA,sBAAA,CAAM,SAAA,CAAuC;AAAA,IAA9E,WAAA,GAAA;AAAA,MAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AAKE,MAAA,IAAA,CAAQ,OAAA,GAAU,CAAC,WAAA,KAA6B;AAC9C,QAAA,IAAA,CAAK,YAAY,WAAW,CAAA;AAAA,MAC9B,CAAA;AAAA,IAAA;AAAA,IAEQ,SAAA,GAAkB;AACxB,MAAA,IAAA,CAAK,cAAc,KAAA,CAAM,SAAA,CAAU,KAAK,KAAA,CAAM,EAAA,EAAI,KAAK,OAAO,CAAA;AAAA,IAChE;AAAA,IAEA,iBAAA,GAA0B;AACxB,MAAA,IAAA,CAAK,SAAA,EAAU;AAAA,IACjB;AAAA,IAEA,mBAAmB,QAAA,EAA6C;AAC9D,MAAA,IAAI,QAAA,CAAS,EAAA,KAAO,IAAA,CAAK,KAAA,CAAM,EAAA,EAAI;AACnC,MAAA,IAAA,CAAK,WAAA,IAAc;AACnB,MAAA,IAAA,CAAK,SAAA,EAAU;AAAA,IACjB;AAAA,IAEA,oBAAA,GAA6B;AAC3B,MAAA,IAAA,CAAK,WAAA,IAAc;AAAA,IACrB;AAAA,IAEA,MAAA,GAA0B;AACxB,MAAA,OAAO,IAAA,CAAK,MAAM,MAAA,EAAO;AAAA,IAC3B;AAAA;AA5BA,EADI,mBACG,WAAA,GAAc,6BAAA;AA+BvB,EAAA,OAAO,kBAAA;AACT;AASO,SAAS,wBACd,UAAA,EAC4B;AAC5B,EAAA,MAAM,iBAAiB,UAAA,CAAW,cAAA,IAAkB,MAAA,CAAO,UAAA,CAAW,WAAW,MAAM,CAAA;AACvF,EAAA,IAAI,WAAW,KAAA,EAAO;AACpB,IAAA,MAAM,WAAW,sBAAA,EAAuB;AACxC,IAAA,MAAM,QAAA,GAAW,QAAA,CAAS,GAAA,CAAI,UAAA,CAAW,KAAK,CAAA;AAC9C,IAAA,IAAI,QAAA,EAAU,mBAAmB,cAAA,EAAgB;AAC/C,MAAA,QAAA,CAAS,WAAW,OAAA,GAAU,UAAA;AAC9B,MAAA,QAAA,CAAS,SAAA,CAAU,WAAA,GAAc,CAAA,aAAA,EAAgB,UAAA,CAAW,WAAW,CAAA,CAAA,CAAA;AACvE,MAAA,KAAA,MAAW,OAAA,IAAW,QAAA,CAAS,gBAAA,EAAkB,OAAA,EAAQ;AACzD,MAAA,OAAO,QAAA,CAAS,SAAA;AAAA,IAClB;AAAA,EACF;AAEA,EAAA,MAAM,mBAAA,GAA0D,EAAE,OAAA,EAAS,UAAA,EAAW;AACtF,EAAA,MAAM,gBAAA,uBAAuB,GAAA,EAAgB;AAAA,EAE7C,MAAM,qBAAA,SAA8BA,sBAAA,CAAM,SAAA,CAAiB;AAAA,IAgBzD,YAAY,KAAA,EAAc;AACxB,MAAA,KAAA,CAAM,KAAK,CAAA;AAhBb,MAAA,IAAA,CAAQ,IAAA,GAAuB,IAAA;AAC/B,MAAA,IAAA,CAAQ,OAAA,GAAU,KAAA;AAClB,MAAA,IAAA,CAAQ,WAAA,GAAc,KAAA;AAEtB,MAAA,IAAA,CAAQ,eAAA,GAAkB,KAAA;AAC1B,MAAA,IAAA,CAAQ,cAAA,GAAgD,IAAA;AACxD,MAAA,IAAA,CAAiB,UAAA,uBAAiB,GAAA,EAAY;AAE9C,MAAA,IAAA,CAAiB,qBAAA,uBAA4B,GAAA,EAAgD;AAC7F,MAAA,IAAA,CAAiB,UAAA,uBAAiB,GAAA,EAAqB;AACvD,MAAA,IAAA,CAAiB,iBAAA,uBAAwB,GAAA,EAAa;AACtD,MAAA,IAAA,CAAiB,cAAA,uBAAqB,GAAA,EAAqB;AAC3D,MAAA,IAAA,CAAiB,iBAAA,uBAAwB,GAAA,EAAwC;AAmDjF,MAAA,IAAA,CAAQ,WAAA,GAAc,CAAC,IAAA,KAAyB;AAC9C,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AAAA,MACd,CAAA;AAEA,MAAA,IAAA,CAAQ,oBAAoB,MAAM;AAChC,QAAA,IAAI,IAAA,CAAK,OAAA,EAAS,IAAA,CAAK,WAAA,EAAY;AAAA,MACrC,CAAA;AApDE,MAAA,IAAA,CAAK,KAAA,GAAQ,oBAAoB,OAAA,CAAQ,UAAA,CAAW,KAAK,CAAA,CAAE,GAAA,CAAI,CAAC,YAAA,EAAc,KAAA,KAAU;AACtF,QAAA,IAAI,KAAA,GAAQ,YAAA;AACZ,QAAA,MAAM,UAAkC,EAAC;AACzC,QAAA,OAAO;AAAA,UACL,KAAK,MAAM,KAAA;AAAA,UACX,GAAA,EAAK,CAAC,IAAA,KAAS;AACb,YAAA,OAAA,CAAQ,KAAK,IAAI,CAAA;AACjB,YAAA,IAAA,CAAK,qBAAqB,KAAK,CAAA;AAAA,UACjC,CAAA;AAAA,UACA,OAAO,MAAM;AACX,YAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,CAAA,EAAG,OAAO,KAAA;AACjC,YAAA,MAAM,QAAA,GAAW,KAAA;AACjB,YAAA,KAAA,MAAW,IAAA,IAAQ,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,EAAG;AACpC,cAAA,KAAA,GAAQ,OAAO,IAAA,KAAS,UAAA,GAAa,IAAA,CAAK,KAAK,CAAA,GAAI,IAAA;AAAA,YACrD;AACA,YAAA,OAAO,CAAC,MAAA,CAAO,EAAA,CAAG,QAAA,EAAU,KAAK,CAAA;AAAA,UACnC;AAAA,SACF;AAAA,MACF,CAAC,CAAA;AACD,MAAA,IAAA,CAAK,YAAA,GAAe;AAAA,QAClB,aAAa,+BAAA,CAAgC;AAAA,UAC3C,SAAS,CAAC,EAAA,EAAI,SAAS,IAAA,CAAK,YAAA,CAAa,IAAI,IAAI,CAAA;AAAA,UACjD,WAAW,CAAC,EAAA,EAAI,YAAY,IAAA,CAAK,gBAAA,CAAiB,IAAI,OAAO;AAAA,SAC9D,CAAA;AAAA,QACD,iBAAiB,mCAAA,CAAoC;AAAA,UACnD,WAAW,CAAC,EAAA,EAAI,YAAY,IAAA,CAAK,gBAAA,CAAiB,IAAI,OAAO;AAAA,SAC9D,CAAA;AAAA,QACD,mBAAmB,qCAAA,CAAsC;AAAA,UACvD,WAAW,CAAC,EAAA,EAAI,YAAY,IAAA,CAAK,gBAAA,CAAiB,IAAI,OAAO;AAAA,SAC9D,CAAA;AAAA,QACD,WAAW,6BAAA,CAA8B;AAAA,UACvC,WAAW,CAAC,EAAA,EAAI,YAAY,IAAA,CAAK,gBAAA,CAAiB,IAAI,OAAO;AAAA,SAC9D,CAAA;AAAA,QACD,WAAW,6BAAA,CAA8B;AAAA,UACvC,WAAW,CAAC,EAAA,EAAI,YAAY,IAAA,CAAK,gBAAA,CAAiB,IAAI,OAAO;AAAA,SAC9D,CAAA;AAAA,QACD,aAAa,+BAAA,CAAgC;AAAA,UAC3C,WAAW,CAAC,EAAA,EAAI,YAAY,IAAA,CAAK,gBAAA,CAAiB,IAAI,OAAO;AAAA,SAC9D,CAAA;AAAA,QACD,WAAW,6BAAA,CAA8B;AAAA,UACvC,WAAW,CAAC,EAAA,EAAI,YAAY,IAAA,CAAK,gBAAA,CAAiB,IAAI,OAAO;AAAA,SAC9D,CAAA;AAAA,QACD,MAAA,EAAQ,CAAC,EAAA,KAAO,IAAA,CAAK,cAAc,EAAE;AAAA,OACvC;AAAA,IACF;AAAA,IAUQ,cAAc,EAAA,EAAwC;AAC5D,MAAA,MAAM,QAAA,GAAW,IAAA,CAAK,iBAAA,CAAkB,GAAA,CAAI,EAAE,CAAA;AAC9C,MAAA,IAAI,UAAU,OAAO,QAAA;AACrB,MAAA,MAAM,OAAA,GAAsC,CAAC,OAAA,KAAY;AACvD,QAAA,IAAI,OAAA,EAAS;AACX,UAAA,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,EAAA,EAAI,OAAO,CAAA;AAAA,QACrC,CAAA,MAAO;AACL,UAAA,IAAA,CAAK,cAAA,CAAe,OAAO,EAAE,CAAA;AAAA,QAC/B;AAAA,MACF,CAAA;AACA,MAAA,IAAA,CAAK,iBAAA,CAAkB,GAAA,CAAI,EAAA,EAAI,OAAO,CAAA;AACtC,MAAA,OAAO,OAAA;AAAA,IACT;AAAA,IAEQ,qBAAA,GAA8B;AACpC,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,IAAA,EAAM,aAAA,CAAc,aAAA;AACxC,MAAA,IACE,CAAC,uBAAA,CAAwB,MAAM,CAAA,IAC/B,CAAC,IAAA,CAAK,IAAA,EAAM,QAAA,CAAS,MAAM,KAC3B,MAAA,CAAO,cAAA,KAAmB,IAAA,IAC1B,MAAA,CAAO,iBAAiB,IAAA,EACxB;AACA,QAAA;AAAA,MACF;AACA,MAAA,IAAA,CAAK,cAAA,GAAiB;AAAA,QACpB,OAAA,EAAS,MAAA;AAAA,QACT,OAAO,MAAA,CAAO,cAAA;AAAA,QACd,KAAK,MAAA,CAAO,YAAA;AAAA,QACZ,SAAA,EAAW,OAAO,kBAAA,IAAsB;AAAA,OAC1C;AAAA,IACF;AAAA,IAEQ,sBAAsB,QAAA,EAA+C;AAC3E,MAAA,IACE,CAAC,QAAA,IACD,CAAC,QAAA,CAAS,OAAA,CAAQ,WAAA,IAClB,QAAA,CAAS,OAAA,CAAQ,aAAA,CAAc,aAAA,KAAkB,QAAA,CAAS,OAAA,EAC1D;AACA,QAAA;AAAA,MACF;AACA,MAAA,QAAA,CAAS,QAAQ,iBAAA,CAAkB,QAAA,CAAS,OAAO,QAAA,CAAS,GAAA,EAAK,SAAS,SAAS,CAAA;AAAA,IACrF;AAAA,IAEQ,YAAA,CAAa,IAAY,IAAA,EAA4B;AAC3D,MAAA,MAAM,QAAA,GAAW,IAAA,CAAK,UAAA,CAAW,GAAA,CAAI,EAAE,CAAA;AACvC,MAAA,IAAI,QAAA,EAAU,IAAA,CAAK,iBAAA,CAAkB,MAAA,CAAO,QAAQ,CAAA;AACpD,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,IAAA,CAAK,UAAA,CAAW,GAAA,CAAI,EAAA,EAAI,IAAI,CAAA;AAC5B,QAAA,IAAA,CAAK,iBAAA,CAAkB,IAAI,IAAI,CAAA;AAAA,MACjC,CAAA,MAAO;AACL,QAAA,IAAA,CAAK,UAAA,CAAW,OAAO,EAAE,CAAA;AAAA,MAC3B;AAAA,IACF;AAAA,IAEQ,gBAAA,CAAiB,IAAY,OAAA,EAAyD;AAC5F,MAAA,IAAA,CAAK,qBAAA,CAAsB,GAAA,CAAI,EAAA,EAAI,OAAO,CAAA;AAC1C,MAAA,OAAO,MAAM;AACX,QAAA,IAAI,IAAA,CAAK,qBAAA,CAAsB,GAAA,CAAI,EAAE,MAAM,OAAA,EAAS;AAClD,UAAA,IAAA,CAAK,qBAAA,CAAsB,OAAO,EAAE,CAAA;AAAA,QACtC;AAAA,MACF,CAAA;AAAA,IACF;AAAA,IAEQ,qBAAqB,KAAA,EAAqB;AAChD,MAAA,IAAA,CAAK,UAAA,CAAW,IAAI,KAAK,CAAA;AACzB,MAAA,IAAA,CAAK,qBAAA,EAAsB;AAC3B,MAAA,IAAI,CAAC,IAAA,CAAK,OAAA,IAAW,IAAA,CAAK,WAAA,EAAa;AACvC,MAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,MAAA,cAAA,CAAe,MAAM;AACnB,QAAA,IAAA,CAAK,WAAA,GAAc,KAAA;AACnB,QAAA,MAAM,iBAAiB,IAAA,CAAK,cAAA;AAC5B,QAAA,IAAA,CAAK,cAAA,GAAiB,IAAA;AACtB,QAAA,IAAI,CAAC,KAAK,OAAA,EAAS;AACnB,QAAA,MAAM,KAAA,uBAAY,GAAA,EAAY;AAC9B,QAAA,KAAA,MAAWE,MAAAA,IAAS,KAAK,UAAA,EAAY;AACnC,UAAA,IAAI,IAAA,CAAK,MAAMA,MAAK,CAAA,EAAG,OAAM,EAAG,KAAA,CAAM,IAAIA,MAAK,CAAA;AAAA,QACjD;AACA,QAAA,IAAA,CAAK,WAAW,KAAA,EAAM;AACtB,QAAA,IAAI,KAAA,CAAM,SAAS,CAAA,EAAG;AACtB,QAAA,IAAI;AACF,UAAA,MAAM,QAAA,GAAW,oBAAoB,OAAA,CAAQ,QAAA;AAC7C,UAAA,MAAM,aAAA,uBAAoB,GAAA,EAA6C;AACvE,UAAA,MAAM,gBAAA,uBAAuB,GAAA,EAAY;AAEzC,UAAA,KAAA,MAAW,WAAW,QAAA,EAAU;AAC9B,YAAA,IAAI,OAAA,CAAQ,SAAS,OAAA,EAAS;AAC9B,YAAA,aAAA,CAAc,GAAA,CAAI,OAAA,CAAQ,EAAA,EAAI,OAAO,CAAA;AACrC,YAAA,IAAI,OAAA,CAAQ,aAAa,IAAA,CAAK,CAAC,eAAe,KAAA,CAAM,GAAA,CAAI,UAAU,CAAC,CAAA,EAAG;AACpE,cAAA,gBAAA,CAAiB,GAAA,CAAI,QAAQ,EAAE,CAAA;AAAA,YACjC;AAAA,UACF;AAEA,UAAA,MAAM,0BAAA,GAA6B,CACjC,OAAA,KACY;AACZ,YAAA,IAAI,SAAS,OAAA,CAAQ,MAAA;AACrB,YAAA,OAAO,WAAW,KAAA,CAAA,EAAW;AAC3B,cAAA,IAAI,gBAAA,CAAiB,IAAI,MAAM,CAAA,IAAK,KAAK,qBAAA,CAAsB,GAAA,CAAI,MAAM,CAAA,EAAG;AAC1E,gBAAA,OAAO,IAAA;AAAA,cACT;AACA,cAAA,MAAA,GAAS,aAAA,CAAc,GAAA,CAAI,MAAM,CAAA,EAAG,MAAA;AAAA,YACtC;AACA,YAAA,OAAO,KAAA;AAAA,UACT,CAAA;AAEA,UAAA,MAAM,iBAAiB,CAAC,GAAG,gBAAgB,CAAA,CACxC,GAAA,CAAI,CAAC,EAAA,KAAO;AACX,YAAA,MAAM,OAAA,GAAU,aAAA,CAAc,GAAA,CAAI,EAAE,CAAA;AACpC,YAAA,MAAM,OAAA,GAAU,IAAA,CAAK,qBAAA,CAAsB,GAAA,CAAI,EAAE,CAAA;AACjD,YAAA,OAAO,WAAW,OAAA,IAAW,CAAC,0BAAA,CAA2B,OAAO,IAC5D,OAAA,GACA,KAAA,CAAA;AAAA,UACN,CAAC,CAAA,CACA,MAAA;AAAA,YACC,CAAC,YAA2D,OAAA,KAAY,KAAA;AAAA,WAC1E;AAEF,UAAA,KAAA,MAAW,WAAW,QAAA,EAAU;AAC9B,YAAA,IACE,OAAA,CAAQ,IAAA,KAAS,OAAA,IACjB,OAAA,CAAQ,YAAA,CAAa,IAAA,CAAK,CAAC,UAAA,KAAe,KAAA,CAAM,GAAA,CAAI,UAAU,CAAC,CAAA,EAC/D;AACA,cAAA,IAAA,CAAK,aAAa,OAAO,CAAA;AAAA,YAC3B;AAAA,UACF;AAEA,UAAA,IAAI,sBAAsB,cAAA,CAAe,MAAA;AACzC,UAAA,KAAA,MAAW,WAAW,cAAA,EAAgB;AACpC,YAAA,OAAA,CAAQ,MAAM;AACZ,cAAA,mBAAA,IAAuB,CAAA;AACvB,cAAA,IAAI,mBAAA,KAAwB,CAAA,EAAG,IAAA,CAAK,qBAAA,CAAsB,cAAc,CAAA;AAAA,YAC1E,CAAC,CAAA;AAAA,UACH;AACA,UAAA,IAAI,cAAA,CAAe,MAAA,KAAW,CAAA,EAAG,IAAA,CAAK,sBAAsB,cAAc,CAAA;AAAA,QAC5E,SAAS,KAAA,EAAO;AACd,UAAA,IAAA,CAAK,YAAA,GAAe,KAAA;AACpB,UAAA,IAAA,CAAK,eAAA,GAAkB,IAAA;AACvB,UAAA,IAAA,CAAK,WAAA,EAAY;AAAA,QACnB;AAAA,MACF,CAAC,CAAA;AAAA,IACH;AAAA,IAEQ,aAAa,OAAA,EAAuC;AAC1D,MAAA,IAAI,CAAC,IAAA,CAAK,IAAA,IAAQ,OAAA,CAAQ,SAAS,OAAA,EAAS;AAC5C,MAAA,MAAM,MAAA,GACJ,QAAQ,MAAA,KAAW,MAAA,GACf,kBAAkB,IAAA,CAAK,IAAA,EAAM,OAAA,CAAQ,IAAA,EAAM,IAAA,CAAK,iBAAiB,IACjE,OAAA,CAAQ,IAAA,CAAK,MAAA,KAAW,CAAA,GACtB,IAAA,CAAK,IAAA,GACL,KAAK,cAAA,CAAe,GAAA,CAAI,OAAA,CAAQ,MAAM,CAAA,IAAK,IAAA;AACnD,MAAA,IAAI,CAAC,MAAA,EAAQ;AACb,MAAA,MAAM,QAAQ,OAAA,CAAQ,IAAA,CAAK,IAAA,CAAK,KAAA,EAAO,KAAK,KAAK,CAAA;AACjD,MAAA,IAAI,OAAA,CAAQ,SAAS,MAAA,EAAQ;AAC3B,QAAA,MAAA,CAAO,WAAA,GAAc,gBAAgB,KAAK,CAAA;AAAA,MAC5C,CAAA,MAAA,IAAW,OAAA,CAAQ,IAAA,KAAS,OAAA,EAAS;AACnC,QAAA,WAAA,CAAY,MAAA,EAAQ,OAAA,CAAQ,IAAA,EAAM,KAAK,CAAA;AAAA,MACzC,CAAA,MAAO;AACL,QAAA,eAAA,CAAgB,MAAA,EAAQ,OAAA,CAAQ,IAAA,EAAM,KAAK,CAAA;AAAA,MAC7C;AAAA,IACF;AAAA,IAEA,iBAAA,GAA0B;AACxB,MAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AACf,MAAA,gBAAA,CAAiB,GAAA,CAAI,KAAK,iBAAiB,CAAA;AAAA,IAC7C;AAAA,IAEA,kBAAA,GAA2B;AAIzB,MAAA,KAAA,MAAW,OAAA,IAAW,mBAAA,CAAoB,OAAA,CAAQ,QAAA,EAAU;AAC1D,QAAA,IAAI,OAAA,CAAQ,IAAA,KAAS,OAAA,EAAS,IAAA,CAAK,aAAa,OAAO,CAAA;AAAA,MACzD;AAAA,IACF;AAAA,IAEA,oBAAA,GAA6B;AAC3B,MAAA,IAAA,CAAK,OAAA,GAAU,KAAA;AACf,MAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,MAAA,IAAA,CAAK,WAAW,KAAA,EAAM;AACtB,MAAA,IAAA,CAAK,cAAA,GAAiB,IAAA;AACtB,MAAA,IAAA,CAAK,sBAAsB,KAAA,EAAM;AACjC,MAAA,IAAA,CAAK,WAAW,KAAA,EAAM;AACtB,MAAA,IAAA,CAAK,kBAAkB,KAAA,EAAM;AAC7B,MAAA,IAAA,CAAK,eAAe,KAAA,EAAM;AAC1B,MAAA,IAAA,CAAK,kBAAkB,KAAA,EAAM;AAC7B,MAAA,gBAAA,CAAiB,MAAA,CAAO,KAAK,iBAAiB,CAAA;AAAA,IAChD;AAAA,IAEA,MAAA,GAA0B;AACxB,MAAA,IAAI,IAAA,CAAK,eAAA,EAAiB,MAAM,IAAA,CAAK,YAAA;AACrC,MAAA,MAAM,oBAAoB,mBAAA,CAAoB,OAAA;AAC9C,MAAA,MAAM,OAAA,GAAU,kBAAkB,MAAA,CAAO,IAAA,CAAK,OAAO,IAAA,CAAK,KAAA,EAAO,KAAK,YAAY,CAAA;AAClF,MAAA,IAAI,CAACF,sBAAA,CAAM,cAAA,CAAe,OAAO,CAAA,EAAG;AAClC,QAAA,MAAM,IAAI,SAAA;AAAA,UACR,CAAA,mBAAA,EAAsB,kBAAkB,WAAW,CAAA,8BAAA;AAAA,SACrD;AAAA,MACF;AACA,MAAA,IAAI,OAAA,CAAQ,IAAA,KAAS,IAAA,CAAK,YAAA,CAAa,WAAA,EAAa;AAClD,QAAA,OAAOA,sBAAA,CAAM,aAAa,OAAA,EAA8D;AAAA,UACtF,SAAS,IAAA,CAAK;AAAA,SACf,CAAA;AAAA,MACH;AACA,MAAA,IAAI,OAAA,CAAQ,IAAA,KAAS,IAAA,CAAK,YAAA,CAAa,iBAAA,EAAmB;AACxD,QAAA,OAAOA,sBAAA,CAAM,YAAA;AAAA,UACX,OAAA;AAAA,UACA,EAAE,OAAA,EAAS,IAAA,CAAK,WAAA;AAAY,SAC9B;AAAA,MACF;AACA,MAAA,IAAI,OAAO,OAAA,CAAQ,IAAA,KAAS,QAAA,EAAU;AACpC,QAAA,MAAM,IAAI,SAAA;AAAA,UACR,CAAA,mBAAA,EAAsB,kBAAkB,WAAW,CAAA,8BAAA;AAAA,SACrD;AAAA,MACF;AACA,MAAA,OAAOA,sBAAA,CAAM,aAAa,OAAA,EAAS;AAAA,QACjC,KAAK,IAAA,CAAK;AAAA,OACS,CAAA;AAAA,IACvB;AAAA;AAGF,EAAC,qBAAA,CAAqD,WAAA,GACpD,CAAA,aAAA,EAAgB,UAAA,CAAW,WAAW,CAAA,CAAA,CAAA;AACxC,EAAA,MAAM,SAAA,GAAY,qBAAA;AAElB,EAAA,IAAI,WAAW,KAAA,EAAO;AACpB,IAAA,sBAAA,EAAuB,CAAE,GAAA,CAAI,UAAA,CAAW,KAAA,EAAO;AAAA,MAC7C,SAAA;AAAA,MACA,UAAA,EAAY,mBAAA;AAAA,MACZ,gBAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,EACH;AAEA,EAAA,OAAO,SAAA;AACT","file":"compiler-runtime.cjs","sourcesContent":["import React from \"react\";\nimport { flushSync } from \"react-dom\";\n\nexport type CompilerStateUpdater = unknown | ((previous: unknown) => unknown);\n\nexport interface CompilerCell {\n get(): unknown;\n set(next: CompilerStateUpdater): void;\n}\n\ninterface RuntimeCell extends CompilerCell {\n flush(): boolean;\n}\n\ntype SelectableTextControl = HTMLInputElement | HTMLTextAreaElement;\n\ninterface InputSelectionSnapshot {\n element: SelectableTextControl;\n start: number;\n end: number;\n direction: \"forward\" | \"backward\" | \"none\";\n}\n\nexport interface CompilerTextBinding<Props> {\n kind: \"text\";\n path: readonly number[];\n /** Stable ref target emitted by newer compiler versions. */\n target?: number;\n dependencies: readonly number[];\n read(props: Props, state: readonly CompilerCell[]): unknown;\n}\n\nexport interface CompilerAttributeBinding<Props> {\n kind: \"attribute\";\n path: readonly number[];\n /** Stable ref target emitted by newer compiler versions. */\n target?: number;\n dependencies: readonly number[];\n name: string;\n read(props: Props, state: readonly CompilerCell[]): unknown;\n}\n\nexport interface CompilerStyleBinding<Props> {\n kind: \"style\";\n path: readonly number[];\n /** Stable ref target emitted by newer compiler versions. */\n target?: number;\n dependencies: readonly number[];\n name: string;\n read(props: Props, state: readonly CompilerCell[]): unknown;\n}\n\nexport interface CompilerConditionalBlockBinding {\n kind: \"block\";\n id: number;\n /** Nearest conditional boundary that owns this block, when nested. */\n parent?: number;\n dependencies: readonly number[];\n}\n\nexport interface CompilerConditionalBlockProps {\n id: number;\n render(): React.ReactNode;\n}\n\nexport interface CompilerKeyedListBlockProps {\n id: number;\n render(): React.ReactNode;\n}\n\nexport interface CompilerHostElement {\n kind: \"element\";\n tag: string;\n attributes: readonly { name: string; value: unknown }[];\n styles: readonly { name: string; value: unknown }[];\n children: readonly (CompilerHostElement | unknown)[];\n}\n\nexport type CompilerKeyedRowElement = CompilerHostElement;\n\nexport interface CompilerKeyedRowEvent {\n name: string;\n invoke(item: unknown, index: number, event: React.SyntheticEvent): unknown;\n}\n\nexport interface CompilerKeyedRowConditionalBranch {\n bindings: readonly CompilerKeyedRowBinding[];\n}\n\nexport interface CompilerKeyedRowConditional {\n id: number;\n /** Host-container path relative to the keyed row root. */\n path: readonly number[];\n test(item: unknown, index: number): unknown;\n logical: boolean;\n truthy?: CompilerKeyedRowConditionalBranch;\n falsy?: CompilerKeyedRowConditionalBranch;\n}\n\nexport interface CompilerHostConditionalBinding {\n kind: \"text\" | \"attribute\" | \"style\";\n path: readonly number[];\n name?: string;\n read(): unknown;\n}\n\nexport interface CompilerHostConditionalBranch {\n create(): CompilerHostElement;\n bindings: readonly CompilerHostConditionalBinding[];\n}\n\nexport interface CompilerHostConditionalBlockProps {\n id: number;\n render(): React.ReactElement;\n test(): unknown;\n /** Logical && can produce a visible number instead of an empty branch. */\n logical?: boolean;\n truthy?: CompilerHostConditionalBranch;\n falsy?: CompilerHostConditionalBranch;\n}\n\nexport interface CompilerConditionalRange {\n /** Number of static direct host siblings between this slot and the previous slot. */\n before: number;\n test(): unknown;\n /** Logical && can produce a visible number instead of an empty branch. */\n logical?: boolean;\n truthy?: CompilerHostConditionalBranch;\n falsy?: CompilerHostConditionalBranch;\n}\n\nexport interface CompilerConditionalRangesBlockProps {\n id: number;\n render(): React.ReactElement;\n rootRef?: React.RefCallback<Element>;\n ranges: readonly CompilerConditionalRange[];\n /** Number of static direct host siblings after the final conditional slot. */\n trailing: number;\n}\n\nexport interface CompilerKeyedRowBinding {\n kind: \"text\" | \"attribute\" | \"style\";\n path: readonly number[];\n name?: string;\n read(item: unknown, index: number): unknown;\n}\n\nexport interface CompilerKeyedRowsBlockProps {\n id: number;\n render(\n event: (\n item: unknown,\n index: number,\n eventId: number,\n ) => React.EventHandler<React.SyntheticEvent>,\n conditional: (\n item: unknown,\n index: number,\n conditionalId: number,\n render: (item: unknown, index: number) => React.ReactNode,\n ) => React.ReactNode,\n ): React.ReactElement;\n items(): Iterable<unknown> | null | undefined;\n rowKey(item: unknown, index: number): React.Key;\n create(item: unknown, index: number): CompilerKeyedRowElement;\n bindings: readonly CompilerKeyedRowBinding[];\n events?: readonly CompilerKeyedRowEvent[];\n conditionals?: readonly CompilerKeyedRowConditional[];\n}\n\nexport interface CompilerKeyedRange {\n /** Number of static direct host siblings between this range and the previous range. */\n before: number;\n items(): Iterable<unknown> | null | undefined;\n rowKey(item: unknown, index: number): React.Key;\n create(item: unknown, index: number): CompilerKeyedRowElement;\n bindings: readonly CompilerKeyedRowBinding[];\n}\n\nexport interface CompilerKeyedRangesBlockProps {\n id: number;\n render(): React.ReactElement;\n rootRef?: React.RefCallback<Element>;\n ranges: readonly CompilerKeyedRange[];\n /** Number of static direct host siblings after the final keyed range. */\n trailing: number;\n}\n\nexport interface CompilerComponentBlockProps {\n id: number;\n render(): React.ReactNode;\n}\n\nexport interface CompilerBlockRuntime {\n Conditional: React.ComponentType<CompilerConditionalBlockProps>;\n HostConditional: React.ComponentType<CompilerHostConditionalBlockProps>;\n ConditionalRanges: React.ComponentType<CompilerConditionalRangesBlockProps>;\n KeyedList: React.ComponentType<CompilerKeyedListBlockProps>;\n KeyedRows: React.ComponentType<CompilerKeyedRowsBlockProps>;\n KeyedRanges: React.ComponentType<CompilerKeyedRangesBlockProps>;\n Component: React.ComponentType<CompilerComponentBlockProps>;\n target(id: number): React.RefCallback<Element>;\n}\n\nexport type CompilerBinding<Props> =\n | CompilerTextBinding<Props>\n | CompilerAttributeBinding<Props>\n | CompilerStyleBinding<Props>\n | CompilerConditionalBlockBinding;\n\nexport interface CompiledComponentDefinition<Props> {\n displayName: string;\n /** Stable development-only identity used to preserve state across compatible refreshes. */\n hmrId?: string;\n /** Changes when the compiler-owned state layout is no longer refresh-compatible. */\n stateSignature?: string;\n initialize(props: Props): readonly unknown[];\n render(\n props: Props,\n state: readonly CompilerCell[],\n blocks: CompilerBlockRuntime,\n ): React.ReactElement;\n bindings: readonly CompilerBinding<Props>[];\n}\n\ninterface CompiledDefinitionReference<Props> {\n current: CompiledComponentDefinition<Props>;\n}\n\ninterface CompilerHmrRegistryEntry {\n component: React.ComponentType<unknown>;\n definition: CompiledDefinitionReference<unknown>;\n refreshListeners: Set<() => void>;\n stateSignature: string;\n}\n\ntype CompilerHmrRegistry = Map<string, CompilerHmrRegistryEntry>;\n\nconst COMPILER_HMR_REGISTRY = Symbol.for(\"@farm.js/react/compiler-hmr-registry\");\n\nfunction getCompilerHmrRegistry(): CompilerHmrRegistry {\n const globalTarget = globalThis as typeof globalThis & Record<symbol, unknown>;\n const existing = globalTarget[COMPILER_HMR_REGISTRY];\n if (existing instanceof Map) return existing as CompilerHmrRegistry;\n const registry: CompilerHmrRegistry = new Map();\n globalTarget[COMPILER_HMR_REGISTRY] = registry;\n return registry;\n}\n\nfunction renderTextValue(value: unknown): string {\n if (Array.isArray(value)) return value.map(renderTextValue).join(\"\");\n if (value === null || value === undefined || typeof value === \"boolean\") return \"\";\n return String(value);\n}\n\nfunction findBindingTarget(\n root: Element,\n path: readonly number[],\n blockRoots: ReadonlySet<Element>,\n): Element | null {\n let current: Element | null = root;\n for (const index of path) {\n if (!current) return null;\n current = [...current.children].filter((child) => !blockRoots.has(child))[index] || null;\n }\n return current;\n}\n\nconst UNITLESS_STYLE_PROPERTIES = new Set([\n \"animationIterationCount\",\n \"aspectRatio\",\n \"borderImageOutset\",\n \"borderImageSlice\",\n \"borderImageWidth\",\n \"boxFlex\",\n \"boxFlexGroup\",\n \"boxOrdinalGroup\",\n \"columnCount\",\n \"columns\",\n \"flex\",\n \"flexGrow\",\n \"flexNegative\",\n \"flexOrder\",\n \"flexPositive\",\n \"flexShrink\",\n \"fontWeight\",\n \"gridArea\",\n \"gridColumn\",\n \"gridColumnEnd\",\n \"gridColumnSpan\",\n \"gridColumnStart\",\n \"gridRow\",\n \"gridRowEnd\",\n \"gridRowSpan\",\n \"gridRowStart\",\n \"lineClamp\",\n \"lineHeight\",\n \"opacity\",\n \"order\",\n \"orphans\",\n \"scale\",\n \"tabSize\",\n \"widows\",\n \"zIndex\",\n \"zoom\",\n \"fillOpacity\",\n \"floodOpacity\",\n \"stopOpacity\",\n \"strokeDasharray\",\n \"strokeDashoffset\",\n \"strokeMiterlimit\",\n \"strokeOpacity\",\n \"strokeWidth\",\n]);\n\nfunction unprefixedStyleName(name: string): string {\n const unprefixed = name.replace(/^(?:Webkit|Moz|ms|O)(?=[A-Z])/, \"\");\n return unprefixed ? unprefixed[0].toLowerCase() + unprefixed.slice(1) : name;\n}\n\nfunction isHtmlOrSvgElement(element: Element): element is HTMLElement | SVGElement {\n const view = element.ownerDocument.defaultView;\n return Boolean(\n view && (element instanceof view.HTMLElement || element instanceof view.SVGElement),\n );\n}\n\nfunction isInputElement(element: Element): element is HTMLInputElement {\n const view = element.ownerDocument.defaultView;\n return Boolean(view && element instanceof view.HTMLInputElement);\n}\n\nfunction isTextAreaElement(element: Element): element is HTMLTextAreaElement {\n const view = element.ownerDocument.defaultView;\n return Boolean(view && element instanceof view.HTMLTextAreaElement);\n}\n\nfunction isSelectElement(element: Element): element is HTMLSelectElement {\n const view = element.ownerDocument.defaultView;\n return Boolean(view && element instanceof view.HTMLSelectElement);\n}\n\nfunction isOptionElement(element: Element): element is HTMLOptionElement {\n const view = element.ownerDocument.defaultView;\n return Boolean(view && element instanceof view.HTMLOptionElement);\n}\n\nfunction isSelectableTextControl(\n element: Element | null | undefined,\n): element is SelectableTextControl {\n return Boolean(element && (isInputElement(element) || isTextAreaElement(element)));\n}\n\nfunction updateStyle(element: Element, name: string, value: unknown): void {\n if (!isHtmlOrSvgElement(element)) return;\n const customProperty = name.startsWith(\"--\");\n let nextValue = \"\";\n if (value !== null && value !== undefined && typeof value !== \"boolean\" && value !== \"\") {\n nextValue =\n typeof value === \"number\" &&\n value !== 0 &&\n !customProperty &&\n !UNITLESS_STYLE_PROPERTIES.has(unprefixedStyleName(name))\n ? `${value}px`\n : String(value).trim();\n }\n\n if (customProperty || name.includes(\"-\")) {\n element.style.setProperty(name, nextValue);\n } else {\n (element.style as unknown as Record<string, string>)[name] = nextValue;\n }\n}\n\nfunction updateSelectValue(element: HTMLSelectElement, value: unknown): void {\n const options = [...element.options];\n if (element.multiple) {\n const selected = new Set(\n (Array.isArray(value) ? value : value === null || value === undefined ? [] : [value]).map(\n String,\n ),\n );\n for (const option of options) option.selected = selected.has(option.value);\n return;\n }\n\n const selectedValue = value === null || value === undefined ? \"\" : String(value);\n let fallback: HTMLOptionElement | undefined;\n for (const option of options) {\n if (!option.disabled && !fallback) fallback = option;\n if (option.value === selectedValue) {\n option.selected = true;\n return;\n }\n }\n if (fallback) fallback.selected = true;\n}\n\nfunction updateAttribute(element: Element, name: string, value: unknown): void {\n const attributeName = name === \"className\" ? \"class\" : name === \"htmlFor\" ? \"for\" : name;\n const stringifiesBoolean = attributeName.startsWith(\"data-\") || attributeName.startsWith(\"aria-\");\n\n if (name === \"value\" && (isInputElement(element) || isTextAreaElement(element))) {\n const nextValue = value === null || value === undefined ? \"\" : String(value);\n if (element.value !== nextValue) element.value = nextValue;\n return;\n }\n\n if (name === \"value\" && isSelectElement(element)) {\n updateSelectValue(element, value);\n return;\n }\n\n if (name === \"checked\" && isInputElement(element)) {\n element.checked = Boolean(value);\n return;\n }\n\n if (name === \"selected\" && isOptionElement(element)) {\n element.selected = Boolean(value);\n return;\n }\n\n if (name === \"disabled\" && \"disabled\" in element) {\n (element as HTMLButtonElement).disabled = Boolean(value);\n return;\n }\n\n if (value === null || value === undefined || (value === false && !stringifiesBoolean)) {\n element.removeAttribute(attributeName);\n } else if (value === true && !stringifiesBoolean) {\n element.setAttribute(attributeName, \"\");\n } else {\n element.setAttribute(attributeName, String(value));\n }\n}\n\ninterface ConditionalBlockOwner {\n setRoot(id: number, root: Element | null): void;\n subscribe(id: number, refresh: (afterCommit?: () => void) => void): () => void;\n}\n\nfunction createConditionalBlockComponent(\n owner: ConditionalBlockOwner,\n): React.ComponentType<CompilerConditionalBlockProps> {\n class FarmConditionalBlock extends React.Component<CompilerConditionalBlockProps> {\n static displayName = \"FarmCompiledConditionalBlock\";\n\n private unsubscribe: (() => void) | undefined;\n\n private captureRoot = (root: Element | null) => {\n owner.setRoot(this.props.id, root);\n };\n\n private refresh = (afterCommit?: () => void) => {\n this.forceUpdate(afterCommit);\n };\n\n private subscribe(): void {\n this.unsubscribe = owner.subscribe(this.props.id, this.refresh);\n }\n\n componentDidMount(): void {\n this.subscribe();\n }\n\n componentDidUpdate(previous: CompilerConditionalBlockProps): void {\n if (previous.id === this.props.id) return;\n this.unsubscribe?.();\n owner.setRoot(previous.id, null);\n this.subscribe();\n }\n\n componentWillUnmount(): void {\n this.unsubscribe?.();\n owner.setRoot(this.props.id, null);\n }\n\n render(): React.ReactNode {\n const node = this.props.render();\n if (!React.isValidElement(node)) {\n if (\n node === null ||\n node === undefined ||\n typeof node === \"boolean\" ||\n typeof node === \"string\" ||\n typeof node === \"number\" ||\n typeof node === \"bigint\"\n ) {\n return node;\n }\n throw new TypeError(\n `Compiled conditional block ${this.props.id} must return one host element or an empty value.`,\n );\n }\n if (typeof node.type !== \"string\") {\n throw new TypeError(\n `Compiled conditional block ${this.props.id} must return one host element.`,\n );\n }\n return React.cloneElement(node, {\n ref: this.captureRoot,\n } as React.Attributes);\n }\n }\n\n return FarmConditionalBlock;\n}\n\nfunction createKeyedListBlockComponent(\n owner: Pick<ConditionalBlockOwner, \"subscribe\">,\n): React.ComponentType<CompilerKeyedListBlockProps> {\n class FarmKeyedListBlock extends React.Component<CompilerKeyedListBlockProps> {\n static displayName = \"FarmCompiledKeyedListBlock\";\n\n private unsubscribe: (() => void) | undefined;\n\n private refresh = (afterCommit?: () => void) => {\n this.forceUpdate(afterCommit);\n };\n\n private subscribe(): void {\n this.unsubscribe = owner.subscribe(this.props.id, this.refresh);\n }\n\n componentDidMount(): void {\n this.subscribe();\n }\n\n componentDidUpdate(previous: CompilerKeyedListBlockProps): void {\n if (previous.id === this.props.id) return;\n this.unsubscribe?.();\n this.subscribe();\n }\n\n componentWillUnmount(): void {\n this.unsubscribe?.();\n }\n\n render(): React.ReactNode {\n return this.props.render();\n }\n }\n\n return FarmKeyedListBlock;\n}\n\ninterface CompilerHostInstance {\n element: Element;\n values: unknown[];\n}\n\nfunction isCompilerHostElement(value: unknown): value is CompilerHostElement {\n return (\n typeof value === \"object\" && value !== null && (value as { kind?: unknown }).kind === \"element\"\n );\n}\n\nfunction createCompilerHostElement(document: Document, descriptor: CompilerHostElement): Element {\n const element = document.createElement(descriptor.tag);\n for (const attribute of descriptor.attributes) {\n updateAttribute(element, attribute.name, attribute.value);\n }\n for (const style of descriptor.styles) updateStyle(element, style.name, style.value);\n for (const child of descriptor.children) {\n if (isCompilerHostElement(child)) {\n element.append(createCompilerHostElement(document, child));\n continue;\n }\n const text = renderTextValue(child);\n if (text) element.append(document.createTextNode(text));\n }\n // Select options and textarea text must exist before their controlled value\n // is finalized. Reapplying is harmless for other attributes and avoids a\n // transient/default selection becoming the compiled branch's final state.\n for (const attribute of descriptor.attributes) {\n if (attribute.name === \"value\" && (isSelectElement(element) || isTextAreaElement(element))) {\n updateAttribute(element, attribute.name, attribute.value);\n }\n }\n return element;\n}\n\nfunction matchesCompilerHostElement(\n element: Element,\n descriptor: CompilerHostElement,\n opaquePaths: ReadonlySet<string> = new Set(),\n path: readonly number[] = [],\n): boolean {\n if (element.tagName.toLowerCase() !== descriptor.tag.toLowerCase()) return false;\n if (opaquePaths.has(path.join(\".\"))) return true;\n const expectedChildren = descriptor.children.filter(isCompilerHostElement);\n if (element.children.length !== expectedChildren.length) return false;\n return expectedChildren.every((child, index) =>\n matchesCompilerHostElement(element.children[index], child, opaquePaths, [...path, index]),\n );\n}\n\nfunction findCompilerHostTarget(root: Element, path: readonly number[]): Element | null {\n let current: Element | null = root;\n for (const index of path) current = current?.children[index] || null;\n return current;\n}\n\ninterface CompilerKeyedRowInstance extends CompilerHostInstance {\n key: string;\n item: unknown;\n index: number;\n conditionalValues: Map<number, readonly unknown[]>;\n}\n\nconst UNSET_KEYED_ROW_BINDING = Symbol(\"unset interactive keyed-row binding\");\n\nfunction keyedRowIdentity(key: React.Key): string {\n return String(key);\n}\n\nfunction normalizedKeyedRowBindingValue(binding: CompilerKeyedRowBinding, value: unknown): unknown {\n return binding.kind === \"text\" ? renderTextValue(value) : value;\n}\n\ntype CompilerKeyedRowBindingSource = Pick<CompilerKeyedRowsBlockProps, \"bindings\">;\n\nfunction readKeyedRowBindingValues(\n props: CompilerKeyedRowBindingSource,\n item: unknown,\n index: number,\n): unknown[] {\n return props.bindings.map((binding) =>\n normalizedKeyedRowBindingValue(binding, binding.read(item, index)),\n );\n}\n\nfunction applyKeyedRowBindings(\n props: CompilerKeyedRowBindingSource,\n instance: CompilerKeyedRowInstance,\n item: unknown,\n index: number,\n): void {\n for (let bindingIndex = 0; bindingIndex < props.bindings.length; bindingIndex += 1) {\n const binding = props.bindings[bindingIndex];\n const rawValue = binding.read(item, index);\n const value = normalizedKeyedRowBindingValue(binding, rawValue);\n if (Object.is(instance.values[bindingIndex], value)) continue;\n instance.values[bindingIndex] = value;\n const target = findCompilerHostTarget(instance.element, binding.path);\n if (!target) continue;\n if (binding.kind === \"text\") {\n target.textContent = value as string;\n } else if (binding.kind === \"style\" && binding.name) {\n updateStyle(target, binding.name, rawValue);\n } else if (binding.kind === \"attribute\" && binding.name) {\n updateAttribute(target, binding.name, rawValue);\n }\n }\n}\n\nfunction keyedRowConditionalSnapshot(\n conditional: CompilerKeyedRowConditional,\n item: unknown,\n index: number,\n): readonly unknown[] {\n const test = conditional.test(item, index);\n if (conditional.logical && !test) {\n return typeof test === \"number\" || typeof test === \"bigint\" ? [\"primitive\", test] : [\"empty\"];\n }\n const key = test ? \"truthy\" : \"falsy\";\n const branch = key === \"truthy\" ? conditional.truthy : conditional.falsy;\n if (!branch) return [\"empty\"];\n return [\n key,\n ...branch.bindings.map((binding) =>\n normalizedKeyedRowBindingValue(binding, binding.read(item, index)),\n ),\n ];\n}\n\nfunction readKeyedRowConditionalValues(\n props: CompilerKeyedRowsBlockProps,\n item: unknown,\n index: number,\n): Map<number, readonly unknown[]> {\n return new Map(\n (props.conditionals || []).map((conditional) => [\n conditional.id,\n keyedRowConditionalSnapshot(conditional, item, index),\n ]),\n );\n}\n\nfunction keyedRowConditionalChanged(\n previous: readonly unknown[] | undefined,\n next: readonly unknown[],\n): boolean {\n return (\n !previous ||\n previous.length !== next.length ||\n next.some((value, index) => !Object.is(value, previous[index]))\n );\n}\n\ntype CompilerHostConditionalSelection =\n | { kind: \"branch\"; key: \"truthy\" | \"falsy\"; branch: CompilerHostConditionalBranch }\n | { kind: \"empty\" }\n | { kind: \"fallback\" };\ntype CompilerHostConditionalPreparedSelection = Exclude<\n CompilerHostConditionalSelection,\n { kind: \"fallback\" }\n>;\n\nfunction hostConditionalSelection(\n props: Pick<CompilerHostConditionalBlockProps, \"test\" | \"logical\" | \"truthy\" | \"falsy\">,\n): CompilerHostConditionalSelection {\n const test = props.test();\n if (props.logical && !test) {\n // React renders 0, NaN, and (where supported) 0n from `value && <Element />`.\n // The host-only fast path cannot represent that primitive branch, so retain\n // React's exact behavior rather than coercing it to an empty branch.\n if (typeof test === \"number\" || typeof test === \"bigint\") return { kind: \"fallback\" };\n return { kind: \"empty\" };\n }\n const key = test ? \"truthy\" : \"falsy\";\n const branch = key === \"truthy\" ? props.truthy : props.falsy;\n return branch ? { kind: \"branch\", key, branch } : { kind: \"empty\" };\n}\n\nfunction normalizedHostConditionalBindingValue(\n binding: CompilerHostConditionalBinding,\n value: unknown,\n): unknown {\n return binding.kind === \"text\" ? renderTextValue(value) : value;\n}\n\nfunction readHostConditionalBindingValues(branch: CompilerHostConditionalBranch): unknown[] {\n return branch.bindings.map((binding) =>\n normalizedHostConditionalBindingValue(binding, binding.read()),\n );\n}\n\nfunction applyHostConditionalBindings(\n branch: CompilerHostConditionalBranch,\n instance: CompilerHostInstance,\n): void {\n for (let bindingIndex = 0; bindingIndex < branch.bindings.length; bindingIndex += 1) {\n const binding = branch.bindings[bindingIndex];\n const rawValue = binding.read();\n const value = normalizedHostConditionalBindingValue(binding, rawValue);\n if (Object.is(instance.values[bindingIndex], value)) continue;\n instance.values[bindingIndex] = value;\n const target = findCompilerHostTarget(instance.element, binding.path);\n if (!target) continue;\n if (binding.kind === \"text\") {\n target.textContent = value as string;\n } else if (binding.kind === \"style\" && binding.name) {\n updateStyle(target, binding.name, rawValue);\n } else if (binding.kind === \"attribute\" && binding.name) {\n updateAttribute(target, binding.name, rawValue);\n }\n }\n}\n\nfunction createHostConditionalBlockComponent(\n owner: Pick<ConditionalBlockOwner, \"subscribe\">,\n): React.ComponentType<CompilerHostConditionalBlockProps> {\n interface State {\n fallback: boolean;\n }\n\n class FarmHostConditionalBlock extends React.Component<CompilerHostConditionalBlockProps, State> {\n static displayName = \"FarmCompiledHostConditional\";\n\n state: State = { fallback: false };\n private root: Element | null = null;\n private mounted = false;\n private fallbackRequested = false;\n private fallbackVersion = 0;\n private propSyncQueued = false;\n private currentProps = this.props;\n private unsubscribe: (() => void) | undefined;\n private activeBranch: \"truthy\" | \"falsy\" | null = null;\n private instance: CompilerHostInstance | null = null;\n\n private captureRoot = (root: Element | null) => {\n this.root = root;\n };\n\n private adopt(): boolean {\n if (!this.root) return false;\n const selection = hostConditionalSelection(this.currentProps);\n if (selection.kind === \"fallback\") return false;\n if (selection.kind === \"empty\") {\n if (this.root.childNodes.length !== 0) return false;\n this.activeBranch = null;\n this.instance = null;\n return true;\n }\n if (\n this.root.childNodes.length !== 1 ||\n this.root.firstElementChild === null ||\n this.root.firstElementChild !== this.root.firstChild\n ) {\n return false;\n }\n const descriptor = selection.branch.create();\n const element = this.root.firstElementChild;\n if (!matchesCompilerHostElement(element, descriptor)) return false;\n this.activeBranch = selection.key;\n this.instance = {\n element,\n values: readHostConditionalBindingValues(selection.branch),\n };\n return true;\n }\n\n private activateFallback(afterCommit?: () => void): void {\n if (!this.mounted || this.state.fallback || this.fallbackRequested) {\n afterCommit?.();\n return;\n }\n this.fallbackRequested = true;\n // One key change on entry: the compiled path mutated the DOM behind\n // React's back, so the first fallback render must rebuild the subtree.\n this.fallbackVersion += 1;\n this.setState({ fallback: true }, afterCommit);\n }\n\n private reconcile(afterCommit?: () => void): void {\n if (!this.mounted || !this.root) {\n afterCommit?.();\n return;\n }\n if (this.state.fallback) {\n // React owns the container while in fallback; re-render with the\n // stable key so updates reconcile in place instead of remounting the\n // subtree (which would wipe uncontrolled inputs, focus, and scroll).\n this.forceUpdate(afterCommit);\n return;\n }\n\n const selection = hostConditionalSelection(this.currentProps);\n if (selection.kind === \"fallback\") {\n this.activateFallback(afterCommit);\n return;\n }\n if (selection.kind === \"empty\") {\n if (this.instance) this.instance.element.remove();\n this.activeBranch = null;\n this.instance = null;\n afterCommit?.();\n return;\n }\n if (this.activeBranch === selection.key && this.instance) {\n applyHostConditionalBindings(selection.branch, this.instance);\n afterCommit?.();\n return;\n }\n\n const element = createCompilerHostElement(this.root.ownerDocument, selection.branch.create());\n this.root.replaceChildren(element);\n this.activeBranch = selection.key;\n this.instance = {\n element,\n values: readHostConditionalBindingValues(selection.branch),\n };\n afterCommit?.();\n }\n\n private refresh = (afterCommit?: () => void) => {\n this.reconcile(afterCommit);\n };\n\n private schedulePropSync(): void {\n if (this.propSyncQueued) return;\n this.propSyncQueued = true;\n queueMicrotask(() => {\n this.propSyncQueued = false;\n if (this.mounted && !this.state.fallback) this.reconcile();\n });\n }\n\n shouldComponentUpdate(nextProps: CompilerHostConditionalBlockProps, nextState: State): boolean {\n this.currentProps = nextProps;\n if (nextState.fallback || this.state.fallback) return true;\n this.schedulePropSync();\n return false;\n }\n\n componentDidMount(): void {\n this.mounted = true;\n this.unsubscribe = owner.subscribe(this.props.id, this.refresh);\n if (!this.adopt()) this.activateFallback();\n }\n\n componentWillUnmount(): void {\n this.mounted = false;\n this.unsubscribe?.();\n this.root = null;\n this.activeBranch = null;\n this.instance = null;\n }\n\n render(): React.ReactNode {\n const container = this.currentProps.render();\n if (!React.isValidElement(container) || typeof container.type !== \"string\") {\n throw new TypeError(\n `Compiled host conditional ${this.currentProps.id} must own one host container.`,\n );\n }\n return React.cloneElement(container, {\n key: this.state.fallback ? `react-${this.fallbackVersion}` : \"compiled\",\n ref: this.captureRoot,\n } as React.Attributes);\n }\n }\n\n return FarmHostConditionalBlock;\n}\n\nfunction createConditionalRangesBlockComponent(\n owner: Pick<ConditionalBlockOwner, \"subscribe\">,\n): React.ComponentType<CompilerConditionalRangesBlockProps> {\n interface State {\n fallback: boolean;\n }\n\n interface ConditionalRangeInstance {\n key: \"truthy\" | \"falsy\";\n host: CompilerHostInstance;\n }\n\n class FarmConditionalRangesBlock extends React.Component<\n CompilerConditionalRangesBlockProps,\n State\n > {\n static displayName = \"FarmCompiledConditionalRanges\";\n\n state: State = { fallback: false };\n private root: Element | null = null;\n private mounted = false;\n private fallbackRequested = false;\n private fallbackVersion = 0;\n private propFallbackQueued = false;\n private currentProps = this.props;\n private unsubscribe: (() => void) | undefined;\n private rangeInstances: Array<ConditionalRangeInstance | null> = [];\n private staticSegments: Element[][] = [];\n\n private captureRoot = (root: Element | null) => {\n this.root = root;\n this.currentProps.rootRef?.(root);\n };\n\n private readSelections(\n props: CompilerConditionalRangesBlockProps,\n ): CompilerHostConditionalPreparedSelection[] | null {\n const selections: CompilerHostConditionalPreparedSelection[] = [];\n for (const range of props.ranges) {\n const selection = hostConditionalSelection(range);\n if (selection.kind === \"fallback\") return null;\n selections.push(selection);\n }\n return selections;\n }\n\n private adopt(props: CompilerConditionalRangesBlockProps = this.currentProps): boolean {\n if (!this.root || !Number.isSafeInteger(props.trailing) || props.trailing < 0) return false;\n const selections = this.readSelections(props);\n if (!selections) return false;\n const elements = [...this.root.children];\n const staticSegments: Element[][] = [];\n const instances: Array<ConditionalRangeInstance | null> = [];\n let cursor = 0;\n\n for (let rangeIndex = 0; rangeIndex < props.ranges.length; rangeIndex += 1) {\n const range = props.ranges[rangeIndex];\n if (!Number.isSafeInteger(range.before) || range.before < 0) return false;\n const staticEnd = cursor + range.before;\n if (staticEnd > elements.length) return false;\n staticSegments.push(elements.slice(cursor, staticEnd));\n cursor = staticEnd;\n\n const selection = selections[rangeIndex];\n if (selection.kind === \"empty\") {\n instances.push(null);\n continue;\n }\n const element = elements[cursor];\n if (!element) return false;\n const descriptor = selection.branch.create();\n if (!matchesCompilerHostElement(element, descriptor)) return false;\n instances.push({\n key: selection.key,\n host: {\n element,\n values: readHostConditionalBindingValues(selection.branch),\n },\n });\n cursor += 1;\n }\n\n if (cursor + props.trailing !== elements.length) return false;\n staticSegments.push(elements.slice(cursor));\n this.staticSegments = staticSegments;\n this.rangeInstances = instances;\n return true;\n }\n\n private anchorAfter(rangeIndex: number): ChildNode | null {\n for (let next = rangeIndex + 1; next < this.rangeInstances.length; next += 1) {\n const staticAnchor = this.staticSegments[next]?.[0];\n if (staticAnchor) return staticAnchor;\n const rangeAnchor = this.rangeInstances[next]?.host.element;\n if (rangeAnchor) return rangeAnchor;\n }\n return this.staticSegments[this.rangeInstances.length]?.[0] || null;\n }\n\n private reconcileRange(\n rangeIndex: number,\n selection: CompilerHostConditionalPreparedSelection,\n ): void {\n if (!this.root) return;\n const previous = this.rangeInstances[rangeIndex];\n if (selection.kind === \"empty\") {\n previous?.host.element.remove();\n this.rangeInstances[rangeIndex] = null;\n return;\n }\n if (previous?.key === selection.key) {\n applyHostConditionalBindings(selection.branch, previous.host);\n return;\n }\n\n const element = createCompilerHostElement(this.root.ownerDocument, selection.branch.create());\n if (previous) previous.host.element.replaceWith(element);\n else this.root.insertBefore(element, this.anchorAfter(rangeIndex));\n this.rangeInstances[rangeIndex] = {\n key: selection.key,\n host: {\n element,\n values: readHostConditionalBindingValues(selection.branch),\n },\n };\n }\n\n private reconcile(afterCommit?: () => void): void {\n if (!this.mounted || !this.root) {\n afterCommit?.();\n return;\n }\n if (this.state.fallback) {\n this.fallbackVersion += 1;\n this.forceUpdate(afterCommit);\n return;\n }\n if (this.currentProps.ranges.length !== this.rangeInstances.length) {\n this.activateFallback(afterCommit);\n return;\n }\n const selections = this.readSelections(this.currentProps);\n if (!selections) {\n this.activateFallback(afterCommit);\n return;\n }\n\n for (let rangeIndex = this.rangeInstances.length - 1; rangeIndex >= 0; rangeIndex -= 1) {\n this.reconcileRange(rangeIndex, selections[rangeIndex]);\n }\n afterCommit?.();\n }\n\n private refresh = (afterCommit?: () => void) => {\n this.reconcile(afterCommit);\n };\n\n private activateFallback(afterCommit?: () => void): void {\n if (!this.mounted || this.state.fallback || this.fallbackRequested) {\n afterCommit?.();\n return;\n }\n this.fallbackRequested = true;\n this.setState({ fallback: true }, afterCommit);\n }\n\n private schedulePropFallback(): void {\n if (this.propFallbackQueued) return;\n this.propFallbackQueued = true;\n queueMicrotask(() => {\n this.propFallbackQueued = false;\n if (this.mounted && !this.state.fallback) this.activateFallback();\n });\n }\n\n shouldComponentUpdate(\n nextProps: CompilerConditionalRangesBlockProps,\n nextState: State,\n ): boolean {\n this.currentProps = nextProps;\n if (nextState.fallback || this.state.fallback) return true;\n this.schedulePropFallback();\n return false;\n }\n\n componentDidMount(): void {\n this.mounted = true;\n this.unsubscribe = owner.subscribe(this.props.id, this.refresh);\n if (!this.adopt()) this.activateFallback();\n }\n\n componentWillUnmount(): void {\n this.mounted = false;\n this.unsubscribe?.();\n this.root = null;\n this.rangeInstances = [];\n this.staticSegments = [];\n }\n\n render(): React.ReactNode {\n const container = this.currentProps.render();\n if (!React.isValidElement(container) || typeof container.type !== \"string\") {\n throw new TypeError(\n `Compiled conditional ranges ${this.currentProps.id} must own one host container.`,\n );\n }\n return React.cloneElement(container, {\n key: this.state.fallback ? `react-${this.fallbackVersion}` : \"compiled\",\n ref: this.captureRoot,\n } as React.Attributes);\n }\n }\n\n return FarmConditionalRangesBlock;\n}\n\n/** Returns positions forming the LIS while ignoring newly inserted (-1) entries. */\nfunction longestIncreasingSubsequencePositions(sequence: readonly number[]): Set<number> {\n const tails: number[] = [];\n const previous = Array.from({ length: sequence.length }, () => -1);\n\n for (let index = 0; index < sequence.length; index += 1) {\n if (sequence[index] < 0) continue;\n let low = 0;\n let high = tails.length;\n while (low < high) {\n const middle = (low + high) >> 1;\n if (sequence[tails[middle]] < sequence[index]) low = middle + 1;\n else high = middle;\n }\n if (low > 0) previous[index] = tails[low - 1];\n tails[low] = index;\n }\n\n const positions = new Set<number>();\n let cursor = tails.at(-1) ?? -1;\n while (cursor >= 0) {\n positions.add(cursor);\n cursor = previous[cursor];\n }\n return positions;\n}\n\nfunction createKeyedRowsBlockComponent(\n owner: Pick<ConditionalBlockOwner, \"subscribe\">,\n): React.ComponentType<CompilerKeyedRowsBlockProps> {\n interface State {\n fallback: boolean;\n }\n\n type RowConditionalRefresh = (item: unknown, index: number, afterCommit?: () => void) => void;\n\n interface RowConditionalOwner {\n subscribe(key: string, id: number, refresh: RowConditionalRefresh): () => void;\n }\n\n interface RowConditionalProps {\n owner: RowConditionalOwner;\n rowKey: string;\n id: number;\n renderVersion: number;\n item: unknown;\n index: number;\n render(item: unknown, index: number): React.ReactNode;\n }\n\n interface RowConditionalState {\n renderVersion: number;\n item: unknown;\n index: number;\n }\n\n class FarmKeyedRowConditional extends React.Component<RowConditionalProps, RowConditionalState> {\n static displayName = \"FarmCompiledKeyedRowConditional\";\n\n state: RowConditionalState = {\n renderVersion: this.props.renderVersion,\n item: this.props.item,\n index: this.props.index,\n };\n private unsubscribe: (() => void) | undefined;\n\n static getDerivedStateFromProps(\n props: RowConditionalProps,\n state: RowConditionalState,\n ): Partial<RowConditionalState> | null {\n if (props.renderVersion === state.renderVersion) return null;\n return {\n renderVersion: props.renderVersion,\n item: props.item,\n index: props.index,\n };\n }\n\n private refresh: RowConditionalRefresh = (item, index, afterCommit) => {\n this.setState({ item, index }, afterCommit);\n };\n\n private subscribe(): void {\n this.unsubscribe = this.props.owner.subscribe(this.props.rowKey, this.props.id, this.refresh);\n }\n\n componentDidMount(): void {\n this.subscribe();\n }\n\n componentDidUpdate(previous: RowConditionalProps): void {\n if (\n previous.owner === this.props.owner &&\n previous.rowKey === this.props.rowKey &&\n previous.id === this.props.id\n ) {\n return;\n }\n this.unsubscribe?.();\n this.subscribe();\n }\n\n componentWillUnmount(): void {\n this.unsubscribe?.();\n }\n\n render(): React.ReactNode {\n return this.props.render(this.state.item, this.state.index);\n }\n }\n\n class FarmKeyedRowsBlock extends React.Component<CompilerKeyedRowsBlockProps, State> {\n static displayName = \"FarmCompiledKeyedRows\";\n\n state: State = { fallback: false };\n private root: Element | null = null;\n private mounted = false;\n private fallbackRequested = false;\n private fallbackVersion = 0;\n private fallbackKeysWereUnsafe = false;\n private propSyncQueued = false;\n private currentProps = this.props;\n private unsubscribe: (() => void) | undefined;\n private instances = new Map<string, CompilerKeyedRowInstance>();\n private renderVersion = 0;\n private readonly eventHandlers = new Map<\n string,\n Map<number, React.EventHandler<React.SyntheticEvent>>\n >();\n private readonly conditionalListeners = new Map<string, Map<number, RowConditionalRefresh>>();\n private readonly conditionalOwner: RowConditionalOwner = {\n subscribe: (key, id, refresh) => this.subscribeToRowConditional(key, id, refresh),\n };\n\n private captureRoot = (root: Element | null) => {\n this.root = root;\n };\n\n private readRows(\n props: CompilerKeyedRowsBlockProps,\n ): { items: unknown[]; keys: string[] } | null {\n const source = props.items();\n const items = source ? Array.from(source) : [];\n const keys = items.map((item, index) => keyedRowIdentity(props.rowKey(item, index)));\n if (new Set(keys).size !== keys.length) return null;\n return { items, keys };\n }\n\n private rowEvent = (\n item: unknown,\n index: number,\n eventId: number,\n ): React.EventHandler<React.SyntheticEvent> => {\n if (this.state.fallback) {\n return (event) => this.currentProps.events?.[eventId]?.invoke(item, index, event);\n }\n const key = keyedRowIdentity(this.currentProps.rowKey(item, index));\n let handlers = this.eventHandlers.get(key);\n if (!handlers) {\n handlers = new Map();\n this.eventHandlers.set(key, handlers);\n }\n const existing = handlers.get(eventId);\n if (existing) return existing;\n const handler: React.EventHandler<React.SyntheticEvent> = (event) => {\n const instance = this.instances.get(key);\n const descriptor = this.currentProps.events?.[eventId];\n if (!instance || !descriptor) return;\n return descriptor.invoke(instance.item, instance.index, event);\n };\n handlers.set(eventId, handler);\n return handler;\n };\n\n private rowConditional = (\n item: unknown,\n index: number,\n conditionalId: number,\n render: (item: unknown, index: number) => React.ReactNode,\n ): React.ReactNode => {\n if (this.state.fallback) return render(item, index);\n const key = keyedRowIdentity(this.currentProps.rowKey(item, index));\n return React.createElement(FarmKeyedRowConditional, {\n key: `${key}:${conditionalId}`,\n owner: this.conditionalOwner,\n rowKey: key,\n id: conditionalId,\n renderVersion: this.renderVersion,\n item,\n index,\n render,\n });\n };\n\n private subscribeToRowConditional(\n key: string,\n id: number,\n refresh: RowConditionalRefresh,\n ): () => void {\n let listeners = this.conditionalListeners.get(key);\n if (!listeners) {\n listeners = new Map();\n this.conditionalListeners.set(key, listeners);\n }\n listeners.set(id, refresh);\n return () => {\n const current = this.conditionalListeners.get(key);\n if (current?.get(id) !== refresh) return;\n current.delete(id);\n if (current.size === 0) this.conditionalListeners.delete(key);\n };\n }\n\n private hasReactOwnedRows(props: CompilerKeyedRowsBlockProps = this.currentProps): boolean {\n return Boolean(props.events?.length || props.conditionals?.length);\n }\n\n private pruneEventHandlers(keys: readonly string[]): void {\n const active = new Set(keys);\n for (const key of this.eventHandlers.keys()) {\n if (!active.has(key)) this.eventHandlers.delete(key);\n }\n }\n\n private pruneConditionalListeners(keys: readonly string[]): void {\n const active = new Set(keys);\n for (const key of this.conditionalListeners.keys()) {\n if (!active.has(key)) this.conditionalListeners.delete(key);\n }\n }\n\n private adopt(): boolean {\n if (!this.root) return false;\n const rows = this.readRows(this.currentProps);\n const elements = [...this.root.children];\n if (!rows || rows.items.length !== elements.length) return false;\n const opaqueConditionalPaths = new Set(\n (this.currentProps.conditionals || []).map((conditional) => conditional.path.join(\".\")),\n );\n const instances = new Map<string, CompilerKeyedRowInstance>();\n for (let index = 0; index < rows.items.length; index += 1) {\n if (\n this.hasReactOwnedRows() &&\n !matchesCompilerHostElement(\n elements[index],\n this.currentProps.create(rows.items[index], index),\n opaqueConditionalPaths,\n )\n ) {\n return false;\n }\n const instance: CompilerKeyedRowInstance = {\n key: rows.keys[index],\n element: elements[index],\n values: this.hasReactOwnedRows()\n ? this.currentProps.bindings.map(() => UNSET_KEYED_ROW_BINDING)\n : readKeyedRowBindingValues(this.currentProps, rows.items[index], index),\n item: rows.items[index],\n index,\n conditionalValues: readKeyedRowConditionalValues(\n this.currentProps,\n rows.items[index],\n index,\n ),\n };\n if (this.hasReactOwnedRows()) {\n // React compares the next row against its previous virtual props, not\n // against DOM values patched by Farm between commits. Reapply every\n // binding after a structural React commit so both views converge\n // before direct same-key patches resume.\n applyKeyedRowBindings(this.currentProps, instance, rows.items[index], index);\n }\n instances.set(rows.keys[index], instance);\n }\n this.instances = instances;\n this.pruneEventHandlers(rows.keys);\n this.pruneConditionalListeners(rows.keys);\n return true;\n }\n\n private hasUnsafeFallbackKeys(): boolean {\n try {\n return this.readRows(this.currentProps) === null;\n } catch {\n return true;\n }\n }\n\n private activateFallback(afterCommit?: () => void): void {\n if (!this.mounted || this.state.fallback || this.fallbackRequested) {\n afterCommit?.();\n return;\n }\n this.fallbackRequested = true;\n this.fallbackKeysWereUnsafe = this.hasUnsafeFallbackKeys();\n // One key change on entry: the compiled path mutated the DOM behind\n // React's back, so the first fallback render must rebuild the subtree.\n this.fallbackVersion += 1;\n this.setState({ fallback: true }, afterCommit);\n }\n\n private synchronizeReactOwnedRows(afterCommit?: () => void): void {\n this.forceUpdate(() => {\n if (!this.mounted) {\n afterCommit?.();\n return;\n }\n if (!this.adopt()) {\n this.activateFallback(afterCommit);\n return;\n }\n afterCommit?.();\n });\n }\n\n private notifyConditionalChanges(\n changes: readonly {\n key: string;\n id: number;\n item: unknown;\n index: number;\n }[],\n afterCommit?: () => void,\n ): void {\n if (changes.length === 0) {\n afterCommit?.();\n return;\n }\n let pending = changes.length;\n const committed = () => {\n pending -= 1;\n if (pending === 0) afterCommit?.();\n };\n // The normal row bindings above are patched synchronously. Flush the\n // React-owned conditional boundaries in the same turn as well so React\n // 18 cannot expose a transient row where text and branch disagree.\n flushSync(() => {\n for (const change of changes) {\n const refresh = this.conditionalListeners.get(change.key)?.get(change.id);\n if (refresh) refresh(change.item, change.index, committed);\n else committed();\n }\n });\n }\n\n private reconcile(afterCommit?: () => void): void {\n if (!this.mounted || !this.root) {\n afterCommit?.();\n return;\n }\n if (this.state.fallback) {\n // React owns the container while in fallback; keep the key stable so\n // updates reconcile in place instead of remounting the subtree (which\n // would wipe uncontrolled inputs, focus, and scroll). The exception\n // is duplicate runtime keys: React's reconciliation of a keyed list\n // with duplicates is unreliable, so any render touched by them (this\n // one, or the previously committed one) still remounts.\n const unsafeKeys = this.hasUnsafeFallbackKeys();\n if (unsafeKeys || this.fallbackKeysWereUnsafe) {\n this.fallbackVersion += 1;\n }\n this.fallbackKeysWereUnsafe = unsafeKeys;\n this.forceUpdate(afterCommit);\n return;\n }\n\n const rows = this.readRows(this.currentProps);\n if (!rows) {\n this.activateFallback(afterCommit);\n return;\n }\n\n const previousKeys = [...this.instances.keys()];\n if (\n this.hasReactOwnedRows() &&\n (rows.keys.length !== previousKeys.length ||\n rows.keys.some((key, index) => key !== previousKeys[index]))\n ) {\n this.synchronizeReactOwnedRows(afterCommit);\n return;\n }\n\n const oldIndices = new Map<string, number>();\n const activeElement = this.root.ownerDocument.activeElement;\n const restoreFocus = Boolean(activeElement && this.root.contains(activeElement));\n [...this.instances].forEach(([key], index) => oldIndices.set(key, index));\n const nextKeys = new Set(rows.keys);\n for (const [key, instance] of this.instances) {\n if (!nextKeys.has(key)) instance.element.remove();\n }\n\n const sequence = rows.keys.map((key) => oldIndices.get(key) ?? -1);\n const stablePositions = longestIncreasingSubsequencePositions(sequence);\n const nextInstances: CompilerKeyedRowInstance[] = [];\n const conditionalChanges: Array<{\n key: string;\n id: number;\n item: unknown;\n index: number;\n }> = [];\n for (let index = 0; index < rows.items.length; index += 1) {\n const key = rows.keys[index];\n const existing = this.instances.get(key);\n if (existing) {\n applyKeyedRowBindings(this.currentProps, existing, rows.items[index], index);\n const conditionalValues = readKeyedRowConditionalValues(\n this.currentProps,\n rows.items[index],\n index,\n );\n for (const [id, values] of conditionalValues) {\n if (keyedRowConditionalChanged(existing.conditionalValues.get(id), values)) {\n conditionalChanges.push({ key, id, item: rows.items[index], index });\n }\n }\n existing.conditionalValues = conditionalValues;\n existing.item = rows.items[index];\n existing.index = index;\n nextInstances.push(existing);\n continue;\n }\n const element = createCompilerHostElement(\n this.root.ownerDocument,\n this.currentProps.create(rows.items[index], index),\n );\n nextInstances.push({\n key,\n element,\n values: readKeyedRowBindingValues(this.currentProps, rows.items[index], index),\n item: rows.items[index],\n index,\n conditionalValues: readKeyedRowConditionalValues(\n this.currentProps,\n rows.items[index],\n index,\n ),\n });\n }\n\n let anchor: ChildNode | null = null;\n for (let index = nextInstances.length - 1; index >= 0; index -= 1) {\n const instance = nextInstances[index];\n if (sequence[index] < 0) {\n this.root.insertBefore(instance.element, anchor);\n } else if (!stablePositions.has(index) && instance.element.nextSibling !== anchor) {\n this.root.insertBefore(instance.element, anchor);\n }\n anchor = instance.element;\n }\n this.instances = new Map(nextInstances.map((instance) => [instance.key, instance]));\n this.pruneEventHandlers(rows.keys);\n this.pruneConditionalListeners(rows.keys);\n if (\n restoreFocus &&\n activeElement?.isConnected &&\n activeElement.ownerDocument.activeElement !== activeElement &&\n \"focus\" in activeElement\n ) {\n (activeElement as HTMLElement).focus({ preventScroll: true });\n }\n this.notifyConditionalChanges(conditionalChanges, afterCommit);\n }\n\n private refresh = (afterCommit?: () => void) => {\n this.reconcile(afterCommit);\n };\n\n private schedulePropSync(): void {\n if (this.propSyncQueued) return;\n this.propSyncQueued = true;\n queueMicrotask(() => {\n this.propSyncQueued = false;\n if (this.mounted && !this.state.fallback) this.reconcile();\n });\n }\n\n shouldComponentUpdate(nextProps: CompilerKeyedRowsBlockProps, nextState: State): boolean {\n const wasReactOwned = this.hasReactOwnedRows(this.currentProps);\n const willBeReactOwned = this.hasReactOwnedRows(nextProps);\n this.currentProps = nextProps;\n if (nextState.fallback || this.state.fallback) return true;\n if (wasReactOwned || willBeReactOwned) {\n // Parent prop updates and Fast Refresh definitions must pass through\n // React so event locations, static row markup, and proxy identities\n // cannot remain tied to an older render definition.\n this.eventHandlers.clear();\n return true;\n }\n this.schedulePropSync();\n return false;\n }\n\n componentDidUpdate(previousProps: CompilerKeyedRowsBlockProps): void {\n if (\n this.state.fallback ||\n previousProps === this.props ||\n (!this.hasReactOwnedRows(previousProps) && !this.hasReactOwnedRows(this.props)) ||\n this.adopt()\n ) {\n return;\n }\n this.activateFallback();\n }\n\n componentDidMount(): void {\n this.mounted = true;\n this.unsubscribe = owner.subscribe(this.props.id, this.refresh);\n if (!this.adopt()) this.activateFallback();\n }\n\n componentWillUnmount(): void {\n this.mounted = false;\n this.unsubscribe?.();\n this.root = null;\n this.instances.clear();\n this.eventHandlers.clear();\n this.conditionalListeners.clear();\n }\n\n render(): React.ReactNode {\n this.renderVersion += 1;\n const container = this.currentProps.render(this.rowEvent, this.rowConditional);\n if (!React.isValidElement(container) || typeof container.type !== \"string\") {\n throw new TypeError(\n `Compiled keyed rows ${this.currentProps.id} must own one host container.`,\n );\n }\n return React.cloneElement(container, {\n key: this.state.fallback ? `react-${this.fallbackVersion}` : \"compiled\",\n ref: this.captureRoot,\n } as React.Attributes);\n }\n }\n\n return FarmKeyedRowsBlock;\n}\n\nfunction createKeyedRangesBlockComponent(\n owner: Pick<ConditionalBlockOwner, \"subscribe\">,\n): React.ComponentType<CompilerKeyedRangesBlockProps> {\n interface State {\n fallback: boolean;\n }\n\n interface ReadRange {\n items: unknown[];\n keys: string[];\n }\n\n class FarmKeyedRangesBlock extends React.Component<CompilerKeyedRangesBlockProps, State> {\n static displayName = \"FarmCompiledKeyedRanges\";\n\n state: State = { fallback: false };\n private root: Element | null = null;\n private mounted = false;\n private fallbackRequested = false;\n private fallbackVersion = 0;\n private propFallbackQueued = false;\n private currentProps = this.props;\n private unsubscribe: (() => void) | undefined;\n private rangeInstances: Array<Map<string, CompilerKeyedRowInstance>> = [];\n private staticSegments: Element[][] = [];\n\n private captureRoot = (root: Element | null) => {\n this.root = root;\n this.currentProps.rootRef?.(root);\n };\n\n private readRange(range: CompilerKeyedRange): ReadRange | null {\n const source = range.items();\n const items = source ? Array.from(source) : [];\n const keys = items.map((item, index) => keyedRowIdentity(range.rowKey(item, index)));\n if (new Set(keys).size !== keys.length) return null;\n return { items, keys };\n }\n\n private readRanges(props: CompilerKeyedRangesBlockProps): ReadRange[] | null {\n const ranges: ReadRange[] = [];\n for (const range of props.ranges) {\n const rows = this.readRange(range);\n if (!rows) return null;\n ranges.push(rows);\n }\n return ranges;\n }\n\n private adopt(props: CompilerKeyedRangesBlockProps = this.currentProps): boolean {\n if (!this.root || !Number.isSafeInteger(props.trailing) || props.trailing < 0) return false;\n const rowsByRange = this.readRanges(props);\n if (!rowsByRange) return false;\n const elements = [...this.root.children];\n const staticSegments: Element[][] = [];\n const instancesByRange: Array<Map<string, CompilerKeyedRowInstance>> = [];\n let cursor = 0;\n\n for (let rangeIndex = 0; rangeIndex < props.ranges.length; rangeIndex += 1) {\n const range = props.ranges[rangeIndex];\n const rows = rowsByRange[rangeIndex];\n if (!Number.isSafeInteger(range.before) || range.before < 0) return false;\n const staticEnd = cursor + range.before;\n if (staticEnd > elements.length) return false;\n staticSegments.push(elements.slice(cursor, staticEnd));\n cursor = staticEnd;\n\n const rowEnd = cursor + rows.items.length;\n if (rowEnd > elements.length) return false;\n const instances = new Map<string, CompilerKeyedRowInstance>();\n for (let index = 0; index < rows.items.length; index += 1) {\n const element = elements[cursor + index];\n if (!matchesCompilerHostElement(element, range.create(rows.items[index], index))) {\n return false;\n }\n instances.set(rows.keys[index], {\n key: rows.keys[index],\n element,\n values: readKeyedRowBindingValues(range, rows.items[index], index),\n item: rows.items[index],\n index,\n conditionalValues: new Map(),\n });\n }\n instancesByRange.push(instances);\n cursor = rowEnd;\n }\n\n if (cursor + props.trailing !== elements.length) return false;\n staticSegments.push(elements.slice(cursor));\n this.staticSegments = staticSegments;\n this.rangeInstances = instancesByRange;\n return true;\n }\n\n private anchorAfter(rangeIndex: number): ChildNode | null {\n for (let next = rangeIndex + 1; next < this.rangeInstances.length; next += 1) {\n const staticAnchor = this.staticSegments[next]?.[0];\n if (staticAnchor) return staticAnchor;\n const rowAnchor = this.rangeInstances[next].values().next().value?.element;\n if (rowAnchor) return rowAnchor;\n }\n return this.staticSegments[this.rangeInstances.length]?.[0] || null;\n }\n\n private reconcileRange(rangeIndex: number, rows: ReadRange): void {\n if (!this.root) return;\n const range = this.currentProps.ranges[rangeIndex];\n const previous = this.rangeInstances[rangeIndex];\n const oldIndices = new Map<string, number>();\n [...previous.keys()].forEach((key, index) => oldIndices.set(key, index));\n const nextKeys = new Set(rows.keys);\n for (const [key, instance] of previous) {\n if (!nextKeys.has(key)) instance.element.remove();\n }\n\n const sequence = rows.keys.map((key) => oldIndices.get(key) ?? -1);\n const stablePositions = longestIncreasingSubsequencePositions(sequence);\n const nextInstances: CompilerKeyedRowInstance[] = [];\n for (let index = 0; index < rows.items.length; index += 1) {\n const key = rows.keys[index];\n const existing = previous.get(key);\n if (existing) {\n applyKeyedRowBindings(range, existing, rows.items[index], index);\n existing.item = rows.items[index];\n existing.index = index;\n nextInstances.push(existing);\n continue;\n }\n const element = createCompilerHostElement(\n this.root.ownerDocument,\n range.create(rows.items[index], index),\n );\n nextInstances.push({\n key,\n element,\n values: readKeyedRowBindingValues(range, rows.items[index], index),\n item: rows.items[index],\n index,\n conditionalValues: new Map(),\n });\n }\n\n let anchor = this.anchorAfter(rangeIndex);\n for (let index = nextInstances.length - 1; index >= 0; index -= 1) {\n const instance = nextInstances[index];\n if (sequence[index] < 0) {\n this.root.insertBefore(instance.element, anchor);\n } else if (!stablePositions.has(index) && instance.element.nextSibling !== anchor) {\n this.root.insertBefore(instance.element, anchor);\n }\n anchor = instance.element;\n }\n this.rangeInstances[rangeIndex] = new Map(\n nextInstances.map((instance) => [instance.key, instance]),\n );\n }\n\n private reconcile(afterCommit?: () => void): void {\n if (!this.mounted || !this.root) {\n afterCommit?.();\n return;\n }\n if (this.state.fallback) {\n this.fallbackVersion += 1;\n this.forceUpdate(afterCommit);\n return;\n }\n const rowsByRange = this.readRanges(this.currentProps);\n if (!rowsByRange || rowsByRange.length !== this.rangeInstances.length) {\n this.activateFallback(afterCommit);\n return;\n }\n\n const activeElement = this.root.ownerDocument.activeElement;\n const restoreFocus = Boolean(activeElement && this.root.contains(activeElement));\n for (let rangeIndex = rowsByRange.length - 1; rangeIndex >= 0; rangeIndex -= 1) {\n this.reconcileRange(rangeIndex, rowsByRange[rangeIndex]);\n }\n if (\n restoreFocus &&\n activeElement?.isConnected &&\n activeElement.ownerDocument.activeElement !== activeElement &&\n \"focus\" in activeElement\n ) {\n (activeElement as HTMLElement).focus({ preventScroll: true });\n }\n afterCommit?.();\n }\n\n private refresh = (afterCommit?: () => void) => {\n this.reconcile(afterCommit);\n };\n\n private activateFallback(afterCommit?: () => void): void {\n if (!this.mounted || this.state.fallback || this.fallbackRequested) {\n afterCommit?.();\n return;\n }\n this.fallbackRequested = true;\n this.setState({ fallback: true }, afterCommit);\n }\n\n private schedulePropFallback(): void {\n if (this.propFallbackQueued) return;\n this.propFallbackQueued = true;\n queueMicrotask(() => {\n this.propFallbackQueued = false;\n if (this.mounted && !this.state.fallback) this.activateFallback();\n });\n }\n\n shouldComponentUpdate(nextProps: CompilerKeyedRangesBlockProps, nextState: State): boolean {\n this.currentProps = nextProps;\n if (nextState.fallback || this.state.fallback) return true;\n // Parent props and compatible Fast Refresh definitions can change static\n // siblings that are deliberately outside the range descriptors. Remount\n // this one container through React instead of retaining stale markup.\n this.schedulePropFallback();\n return false;\n }\n\n componentDidMount(): void {\n this.mounted = true;\n this.unsubscribe = owner.subscribe(this.props.id, this.refresh);\n if (!this.adopt()) this.activateFallback();\n }\n\n componentWillUnmount(): void {\n this.mounted = false;\n this.unsubscribe?.();\n this.root = null;\n this.rangeInstances = [];\n this.staticSegments = [];\n }\n\n render(): React.ReactNode {\n const container = this.currentProps.render();\n if (!React.isValidElement(container) || typeof container.type !== \"string\") {\n throw new TypeError(\n `Compiled keyed ranges ${this.currentProps.id} must own one host container.`,\n );\n }\n return React.cloneElement(container, {\n key: this.state.fallback ? `react-${this.fallbackVersion}` : \"compiled\",\n ref: this.captureRoot,\n } as React.Attributes);\n }\n }\n\n return FarmKeyedRangesBlock;\n}\n\nfunction createComponentBlockComponent(\n owner: Pick<ConditionalBlockOwner, \"subscribe\">,\n): React.ComponentType<CompilerComponentBlockProps> {\n class FarmComponentBlock extends React.Component<CompilerComponentBlockProps> {\n static displayName = \"FarmCompiledComponentIsland\";\n\n private unsubscribe: (() => void) | undefined;\n\n private refresh = (afterCommit?: () => void) => {\n this.forceUpdate(afterCommit);\n };\n\n private subscribe(): void {\n this.unsubscribe = owner.subscribe(this.props.id, this.refresh);\n }\n\n componentDidMount(): void {\n this.subscribe();\n }\n\n componentDidUpdate(previous: CompilerComponentBlockProps): void {\n if (previous.id === this.props.id) return;\n this.unsubscribe?.();\n this.subscribe();\n }\n\n componentWillUnmount(): void {\n this.unsubscribe?.();\n }\n\n render(): React.ReactNode {\n return this.props.render();\n }\n }\n\n return FarmComponentBlock;\n}\n\n/**\n * Runtime target emitted by the AOT transform.\n *\n * React owns initial placement, SSR, hydration, props, and event semantics.\n * Compiler cells own local updates and precomputed DOM paths. A proven host-only\n * keyed container may transfer its child-row ownership after mount.\n */\nexport function createCompiledComponent<Props>(\n definition: CompiledComponentDefinition<Props>,\n): React.ComponentType<Props> {\n const stateSignature = definition.stateSignature || String(definition.initialize.length);\n if (definition.hmrId) {\n const registry = getCompilerHmrRegistry();\n const existing = registry.get(definition.hmrId);\n if (existing?.stateSignature === stateSignature) {\n existing.definition.current = definition as CompiledComponentDefinition<unknown>;\n existing.component.displayName = `FarmCompiled(${definition.displayName})`;\n for (const refresh of existing.refreshListeners) refresh();\n return existing.component as React.ComponentType<Props>;\n }\n }\n\n const definitionReference: CompiledDefinitionReference<Props> = { current: definition };\n const refreshListeners = new Set<() => void>();\n\n class FarmCompiledComponent extends React.Component<Props> {\n private root: Element | null = null;\n private mounted = false;\n private flushQueued = false;\n private bindingError: unknown;\n private hasBindingError = false;\n private inputSelection: InputSelectionSnapshot | null = null;\n private readonly dirtyState = new Set<number>();\n private readonly cells: RuntimeCell[];\n private readonly blockRefreshListeners = new Map<number, (afterCommit?: () => void) => void>();\n private readonly blockRoots = new Map<number, Element>();\n private readonly blockRootElements = new Set<Element>();\n private readonly bindingTargets = new Map<number, Element>();\n private readonly bindingTargetRefs = new Map<number, React.RefCallback<Element>>();\n private readonly blockRuntime: CompilerBlockRuntime;\n\n constructor(props: Props) {\n super(props);\n this.cells = definitionReference.current.initialize(props).map((initialValue, index) => {\n let value = initialValue;\n const pending: CompilerStateUpdater[] = [];\n return {\n get: () => value,\n set: (next) => {\n pending.push(next);\n this.scheduleBindingFlush(index);\n },\n flush: () => {\n if (pending.length === 0) return false;\n const previous = value;\n for (const next of pending.splice(0)) {\n value = typeof next === \"function\" ? next(value) : next;\n }\n return !Object.is(previous, value);\n },\n };\n });\n this.blockRuntime = {\n Conditional: createConditionalBlockComponent({\n setRoot: (id, root) => this.setBlockRoot(id, root),\n subscribe: (id, refresh) => this.subscribeToBlock(id, refresh),\n }),\n HostConditional: createHostConditionalBlockComponent({\n subscribe: (id, refresh) => this.subscribeToBlock(id, refresh),\n }),\n ConditionalRanges: createConditionalRangesBlockComponent({\n subscribe: (id, refresh) => this.subscribeToBlock(id, refresh),\n }),\n KeyedList: createKeyedListBlockComponent({\n subscribe: (id, refresh) => this.subscribeToBlock(id, refresh),\n }),\n KeyedRows: createKeyedRowsBlockComponent({\n subscribe: (id, refresh) => this.subscribeToBlock(id, refresh),\n }),\n KeyedRanges: createKeyedRangesBlockComponent({\n subscribe: (id, refresh) => this.subscribeToBlock(id, refresh),\n }),\n Component: createComponentBlockComponent({\n subscribe: (id, refresh) => this.subscribeToBlock(id, refresh),\n }),\n target: (id) => this.bindingTarget(id),\n };\n }\n\n private captureRoot = (root: Element | null) => {\n this.root = root;\n };\n\n private refreshDefinition = () => {\n if (this.mounted) this.forceUpdate();\n };\n\n private bindingTarget(id: number): React.RefCallback<Element> {\n const existing = this.bindingTargetRefs.get(id);\n if (existing) return existing;\n const capture: React.RefCallback<Element> = (element) => {\n if (element) {\n this.bindingTargets.set(id, element);\n } else {\n this.bindingTargets.delete(id);\n }\n };\n this.bindingTargetRefs.set(id, capture);\n return capture;\n }\n\n private captureInputSelection(): void {\n const active = this.root?.ownerDocument.activeElement;\n if (\n !isSelectableTextControl(active) ||\n !this.root?.contains(active) ||\n active.selectionStart === null ||\n active.selectionEnd === null\n ) {\n return;\n }\n this.inputSelection = {\n element: active,\n start: active.selectionStart,\n end: active.selectionEnd,\n direction: active.selectionDirection || \"none\",\n };\n }\n\n private restoreInputSelection(snapshot: InputSelectionSnapshot | null): void {\n if (\n !snapshot ||\n !snapshot.element.isConnected ||\n snapshot.element.ownerDocument.activeElement !== snapshot.element\n ) {\n return;\n }\n snapshot.element.setSelectionRange(snapshot.start, snapshot.end, snapshot.direction);\n }\n\n private setBlockRoot(id: number, root: Element | null): void {\n const previous = this.blockRoots.get(id);\n if (previous) this.blockRootElements.delete(previous);\n if (root) {\n this.blockRoots.set(id, root);\n this.blockRootElements.add(root);\n } else {\n this.blockRoots.delete(id);\n }\n }\n\n private subscribeToBlock(id: number, refresh: (afterCommit?: () => void) => void): () => void {\n this.blockRefreshListeners.set(id, refresh);\n return () => {\n if (this.blockRefreshListeners.get(id) === refresh) {\n this.blockRefreshListeners.delete(id);\n }\n };\n }\n\n private scheduleBindingFlush(index: number): void {\n this.dirtyState.add(index);\n this.captureInputSelection();\n if (!this.mounted || this.flushQueued) return;\n this.flushQueued = true;\n queueMicrotask(() => {\n this.flushQueued = false;\n const inputSelection = this.inputSelection;\n this.inputSelection = null;\n if (!this.mounted) return;\n const dirty = new Set<number>();\n for (const index of this.dirtyState) {\n if (this.cells[index]?.flush()) dirty.add(index);\n }\n this.dirtyState.clear();\n if (dirty.size === 0) return;\n try {\n const bindings = definitionReference.current.bindings;\n const blockBindings = new Map<number, CompilerConditionalBlockBinding>();\n const affectedBlockIds = new Set<number>();\n\n for (const binding of bindings) {\n if (binding.kind !== \"block\") continue;\n blockBindings.set(binding.id, binding);\n if (binding.dependencies.some((dependency) => dirty.has(dependency))) {\n affectedBlockIds.add(binding.id);\n }\n }\n\n const hasAffectedMountedAncestor = (\n binding: CompilerConditionalBlockBinding,\n ): boolean => {\n let parent = binding.parent;\n while (parent !== undefined) {\n if (affectedBlockIds.has(parent) && this.blockRefreshListeners.has(parent)) {\n return true;\n }\n parent = blockBindings.get(parent)?.parent;\n }\n return false;\n };\n\n const blockRefreshes = [...affectedBlockIds]\n .map((id) => {\n const binding = blockBindings.get(id);\n const refresh = this.blockRefreshListeners.get(id);\n return binding && refresh && !hasAffectedMountedAncestor(binding)\n ? refresh\n : undefined;\n })\n .filter(\n (refresh): refresh is (afterCommit?: () => void) => void => refresh !== undefined,\n );\n\n for (const binding of bindings) {\n if (\n binding.kind !== \"block\" &&\n binding.dependencies.some((dependency) => dirty.has(dependency))\n ) {\n this.applyBinding(binding);\n }\n }\n\n let pendingBlockCommits = blockRefreshes.length;\n for (const refresh of blockRefreshes) {\n refresh(() => {\n pendingBlockCommits -= 1;\n if (pendingBlockCommits === 0) this.restoreInputSelection(inputSelection);\n });\n }\n if (blockRefreshes.length === 0) this.restoreInputSelection(inputSelection);\n } catch (error) {\n this.bindingError = error;\n this.hasBindingError = true;\n this.forceUpdate();\n }\n });\n }\n\n private applyBinding(binding: CompilerBinding<Props>): void {\n if (!this.root || binding.kind === \"block\") return;\n const target =\n binding.target === undefined\n ? findBindingTarget(this.root, binding.path, this.blockRootElements)\n : binding.path.length === 0\n ? this.root\n : this.bindingTargets.get(binding.target) || null;\n if (!target) return;\n const value = binding.read(this.props, this.cells);\n if (binding.kind === \"text\") {\n target.textContent = renderTextValue(value);\n } else if (binding.kind === \"style\") {\n updateStyle(target, binding.name, value);\n } else {\n updateAttribute(target, binding.name, value);\n }\n }\n\n componentDidMount(): void {\n this.mounted = true;\n refreshListeners.add(this.refreshDefinition);\n }\n\n componentDidUpdate(): void {\n // React has reconciled a parent-driven prop update. Reapply compiled\n // bindings from the current cells so React and the imperative state stay\n // coherent even when both change in the same turn.\n for (const binding of definitionReference.current.bindings) {\n if (binding.kind !== \"block\") this.applyBinding(binding);\n }\n }\n\n componentWillUnmount(): void {\n this.mounted = false;\n this.root = null;\n this.dirtyState.clear();\n this.inputSelection = null;\n this.blockRefreshListeners.clear();\n this.blockRoots.clear();\n this.blockRootElements.clear();\n this.bindingTargets.clear();\n this.bindingTargetRefs.clear();\n refreshListeners.delete(this.refreshDefinition);\n }\n\n render(): React.ReactNode {\n if (this.hasBindingError) throw this.bindingError;\n const currentDefinition = definitionReference.current;\n const element = currentDefinition.render(this.props, this.cells, this.blockRuntime);\n if (!React.isValidElement(element)) {\n throw new TypeError(\n `Compiled component ${currentDefinition.displayName} must return one host element.`,\n );\n }\n if (element.type === this.blockRuntime.KeyedRanges) {\n return React.cloneElement(element as React.ReactElement<CompilerKeyedRangesBlockProps>, {\n rootRef: this.captureRoot,\n });\n }\n if (element.type === this.blockRuntime.ConditionalRanges) {\n return React.cloneElement(\n element as React.ReactElement<CompilerConditionalRangesBlockProps>,\n { rootRef: this.captureRoot },\n );\n }\n if (typeof element.type !== \"string\") {\n throw new TypeError(\n `Compiled component ${currentDefinition.displayName} must return one host element.`,\n );\n }\n return React.cloneElement(element, {\n ref: this.captureRoot,\n } as React.Attributes);\n }\n }\n\n (FarmCompiledComponent as React.ComponentType<Props>).displayName =\n `FarmCompiled(${definition.displayName})`;\n const component = FarmCompiledComponent as React.ComponentType<Props>;\n\n if (definition.hmrId) {\n getCompilerHmrRegistry().set(definition.hmrId, {\n component: component as React.ComponentType<unknown>,\n definition: definitionReference as CompiledDefinitionReference<unknown>,\n refreshListeners,\n stateSignature,\n });\n }\n\n return component;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/iterable.ts","../src/compiler-runtime.tsx"],"names":["React","descriptor","flushSync"],"mappings":"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","file":"compiler-runtime.cjs","sourcesContent":["const oneShotSnapshots = new WeakMap<object, readonly unknown[]>();\n\n/** Materialize an iterable without consuming a one-shot iterator more than once. */\nexport function materializeIterable<Item>(source: Iterable<Item> | null | undefined): Item[] {\n if (source == null) return [];\n\n const iterator = source[Symbol.iterator]();\n const oneShot =\n iterator === (source as unknown) &&\n (typeof source === \"object\" || typeof source === \"function\");\n if (oneShot) {\n const cached = oneShotSnapshots.get(source as object);\n if (cached) return cached as Item[];\n }\n\n const items = Array.from({ [Symbol.iterator]: () => iterator });\n if (oneShot) oneShotSnapshots.set(source as object, items);\n return items;\n}\n","import React from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { materializeIterable } from \"./iterable\";\n\nexport type CompilerStateUpdater = unknown | ((previous: unknown) => unknown);\nexport type CompilerRuntimeReactivity = \"static\" | \"hybrid\";\n\nexport interface CompilerCell {\n get(): unknown;\n set(next: CompilerStateUpdater): void;\n}\n\ninterface RuntimeCell extends CompilerCell {\n flush(): boolean;\n replace(next: unknown): void;\n}\n\ntype PendingCellUpdate =\n | { kind: \"state\"; update: CompilerStateUpdater }\n | { kind: \"value\"; value: unknown };\n\ntype SelectableTextControl = HTMLInputElement | HTMLTextAreaElement;\n\ninterface InputSelectionSnapshot {\n element: SelectableTextControl;\n start: number;\n end: number;\n direction: \"forward\" | \"backward\" | \"none\";\n}\n\nexport interface CompilerTextBinding<Props> {\n kind: \"text\";\n /** Runtime tracking is useful only for compiler-proven short-circuiting readers. */\n tracking?: \"dynamic\";\n path: readonly number[];\n /** Stable ref target emitted by newer compiler versions. */\n target?: number;\n dependencies: readonly number[];\n read(props: Props, state: readonly CompilerCell[]): unknown;\n}\n\nexport interface CompilerAttributeBinding<Props> {\n kind: \"attribute\";\n /** Runtime tracking is useful only for compiler-proven short-circuiting readers. */\n tracking?: \"dynamic\";\n path: readonly number[];\n /** Stable ref target emitted by newer compiler versions. */\n target?: number;\n dependencies: readonly number[];\n name: string;\n read(props: Props, state: readonly CompilerCell[]): unknown;\n}\n\nexport interface CompilerStyleBinding<Props> {\n kind: \"style\";\n /** Runtime tracking is useful only for compiler-proven short-circuiting readers. */\n tracking?: \"dynamic\";\n path: readonly number[];\n /** Stable ref target emitted by newer compiler versions. */\n target?: number;\n dependencies: readonly number[];\n name: string;\n read(props: Props, state: readonly CompilerCell[]): unknown;\n}\n\nexport interface CompilerConditionalBlockBinding {\n kind: \"block\";\n id: number;\n /** Nearest conditional boundary that owns this block, when nested. */\n parent?: number;\n dependencies: readonly number[];\n}\n\nexport interface CompilerConditionalBlockProps {\n id: number;\n render(): React.ReactNode;\n}\n\nexport interface CompilerKeyedListBlockProps {\n id: number;\n render(): React.ReactNode;\n}\n\nexport interface CompilerHostElement {\n kind: \"element\";\n tag: string;\n attributes: readonly { name: string; value: unknown }[];\n styles: readonly { name: string; value: unknown }[];\n children: readonly (CompilerHostElement | unknown)[];\n /** Direct-child structure owned without creating another React fiber. */\n block?: CompilerHostBlock;\n}\n\nexport type CompilerKeyedRowElement = CompilerHostElement;\n\nexport interface CompilerKeyedRowEvent {\n name: string;\n /** Host-element path relative to the keyed row root. */\n path?: readonly number[];\n invoke(item: unknown, index: number, event: React.SyntheticEvent): unknown;\n}\n\nexport interface CompilerKeyedRowConditionalBranch {\n bindings: readonly CompilerKeyedRowBinding[];\n}\n\nexport interface CompilerKeyedRowConditional {\n id: number;\n /** Host-container path relative to the keyed row root. */\n path: readonly number[];\n test(item: unknown, index: number): unknown;\n logical: boolean;\n truthy?: CompilerKeyedRowConditionalBranch;\n falsy?: CompilerKeyedRowConditionalBranch;\n}\n\nexport interface CompilerHostConditionalBinding {\n kind: \"text\" | \"attribute\" | \"style\";\n path: readonly number[];\n name?: string;\n read(): unknown;\n}\n\nexport interface CompilerStaticRangeBinding {\n kind: \"text\" | \"attribute\" | \"style\";\n /** Static segment before range N, or the trailing segment at ranges.length. */\n segment: number;\n /** Direct host sibling inside that static segment. */\n sibling: number;\n /** Host-element path relative to the selected static sibling. */\n path: readonly number[];\n name?: string;\n read(): unknown;\n}\n\nexport interface CompilerHostConditionalBranch {\n create(): CompilerHostElement;\n bindings: readonly CompilerHostConditionalBinding[];\n}\n\nexport interface CompilerHostConditionalRanges {\n kind: \"conditional-ranges\";\n id: number;\n ranges: readonly CompilerConditionalRange[];\n trailing: number;\n bindings?: readonly CompilerStaticRangeBinding[];\n}\n\nexport interface CompilerHostKeyedRanges {\n kind: \"keyed-ranges\";\n id: number;\n ranges: readonly CompilerKeyedRange[];\n trailing: number;\n bindings?: readonly CompilerStaticRangeBinding[];\n /** Compiler output may store only static direct children and materialize rows from the ranges. */\n staticChildrenOnly?: boolean;\n}\n\nexport interface CompilerHostMixedRanges {\n kind: \"mixed-ranges\";\n id: number;\n ranges: readonly CompilerMixedRange[];\n trailing: number;\n bindings?: readonly CompilerStaticRangeBinding[];\n}\n\nexport type CompilerHostBlock =\n | CompilerHostConditionalRanges\n | CompilerHostKeyedRanges\n | CompilerHostMixedRanges;\n\nexport interface CompilerHostConditionalBlockProps {\n id: number;\n render(): React.ReactElement;\n test(): unknown;\n /** Logical && can produce a visible number instead of an empty branch. */\n logical?: boolean;\n truthy?: CompilerHostConditionalBranch;\n falsy?: CompilerHostConditionalBranch;\n}\n\nexport interface CompilerConditionalRange {\n /** Number of static direct host siblings between this slot and the previous slot. */\n before: number;\n test(): unknown;\n /** Logical && can produce a visible number instead of an empty branch. */\n logical?: boolean;\n truthy?: CompilerHostConditionalBranch;\n falsy?: CompilerHostConditionalBranch;\n}\n\nexport interface CompilerConditionalRangesBlockProps {\n id: number;\n render(): React.ReactElement;\n rootRef?: React.RefCallback<Element>;\n ranges: readonly CompilerConditionalRange[];\n /** Number of static direct host siblings after the final conditional slot. */\n trailing: number;\n bindings?: readonly CompilerStaticRangeBinding[];\n}\n\nexport interface CompilerKeyedRowBinding {\n kind: \"text\" | \"attribute\" | \"style\";\n path: readonly number[];\n name?: string;\n /** Component state cells read by this binding, when emitted by the compiler. */\n dependencies?: readonly number[];\n read(item: unknown, index: number): unknown;\n}\n\nexport interface CompilerKeyedRowsBlockProps {\n id: number;\n render(\n event: (\n item: unknown,\n index: number,\n eventId: number,\n ) => React.EventHandler<React.SyntheticEvent>,\n conditional: (\n item: unknown,\n index: number,\n conditionalId: number,\n render: (item: unknown, index: number) => React.ReactNode,\n ) => React.ReactNode,\n ): React.ReactElement;\n items(): Iterable<unknown> | null | undefined;\n /** State cells that can change the row collection or its key projection. */\n structureDependencies?: readonly number[];\n rowKey(item: unknown, index: number): React.Key;\n create(item: unknown, index: number): CompilerKeyedRowElement;\n bindings: readonly CompilerKeyedRowBinding[];\n events?: readonly CompilerKeyedRowEvent[];\n /** Route compiler-proven bubbling row events through the stable React container. */\n delegateEvents?: boolean;\n conditionals?: readonly CompilerKeyedRowConditional[];\n /** Row descriptors contain compiler-owned nested host scopes. */\n hostBlocks?: boolean;\n}\n\nexport interface CompilerKeyedRange {\n /** Number of static direct host siblings between this range and the previous range. */\n before: number;\n items(): Iterable<unknown> | null | undefined;\n rowKey(item: unknown, index: number): React.Key;\n create(item: unknown, index: number): CompilerKeyedRowElement;\n bindings: readonly CompilerKeyedRowBinding[];\n}\n\nexport type CompilerMixedRange =\n | ({ kind: \"conditional\" } & CompilerConditionalRange)\n | ({ kind: \"keyed\" } & CompilerKeyedRange);\n\nexport interface CompilerMixedRangesBlockProps {\n id: number;\n render(): React.ReactElement;\n create(): CompilerHostElement;\n rootRef?: React.RefCallback<Element>;\n}\n\nexport interface CompilerKeyedRangesBlockProps {\n id: number;\n render(): React.ReactElement;\n rootRef?: React.RefCallback<Element>;\n ranges: readonly CompilerKeyedRange[];\n /** Number of static direct host siblings after the final keyed range. */\n trailing: number;\n bindings?: readonly CompilerStaticRangeBinding[];\n}\n\nexport interface CompilerComponentBlockProps {\n id: number;\n render(): React.ReactNode;\n}\n\nexport interface CompilerBlockRuntime {\n Conditional: React.ComponentType<CompilerConditionalBlockProps>;\n HostConditional: React.ComponentType<CompilerHostConditionalBlockProps>;\n ConditionalRanges: React.ComponentType<CompilerConditionalRangesBlockProps>;\n KeyedList: React.ComponentType<CompilerKeyedListBlockProps>;\n KeyedRows: React.ComponentType<CompilerKeyedRowsBlockProps>;\n KeyedRanges: React.ComponentType<CompilerKeyedRangesBlockProps>;\n MixedRanges: React.ComponentType<CompilerMixedRangesBlockProps>;\n Component: React.ComponentType<CompilerComponentBlockProps>;\n target(id: number): React.RefCallback<Element>;\n}\n\nexport type CompilerBinding<Props> =\n | CompilerTextBinding<Props>\n | CompilerAttributeBinding<Props>\n | CompilerStyleBinding<Props>\n | CompilerConditionalBlockBinding;\n\nexport interface CompiledComponentDefinition<Props> {\n displayName: string;\n /** Scheduler selected by the compiler. Hand-authored definitions default to `static`. */\n reactivity?: CompilerRuntimeReactivity;\n /** Stable development-only identity used to preserve state across compatible refreshes. */\n hmrId?: string;\n /** Changes when the compiler-owned state layout is no longer refresh-compatible. */\n stateSignature?: string;\n initialize(props: Props): readonly unknown[];\n /**\n * Compiler-emitted flat prop reads. Primitive values can share the local\n * dependency graph; identity-bearing values retain normal React rendering.\n */\n readProps?(props: Props): readonly unknown[];\n render(\n props: Props,\n state: readonly CompilerCell[],\n blocks: CompilerBlockRuntime,\n ): React.ReactElement;\n bindings: readonly CompilerBinding<Props>[];\n}\n\ninterface CompiledDefinitionReference<Props> {\n current: CompiledComponentDefinition<Props>;\n}\n\ninterface CompilerHmrRegistryEntry {\n component: React.ComponentType<unknown>;\n definition: CompiledDefinitionReference<unknown>;\n refreshListeners: Set<() => void>;\n stateSignature: string;\n}\n\ntype CompilerHmrRegistry = Map<string, CompilerHmrRegistryEntry>;\n\nconst COMPILER_HMR_REGISTRY = Symbol.for(\"@farm.js/react/compiler-hmr-registry\");\n\nfunction getCompilerHmrRegistry(): CompilerHmrRegistry {\n const globalTarget = globalThis as typeof globalThis & Record<symbol, unknown>;\n const existing = globalTarget[COMPILER_HMR_REGISTRY];\n if (existing instanceof Map) return existing as CompilerHmrRegistry;\n const registry: CompilerHmrRegistry = new Map();\n globalTarget[COMPILER_HMR_REGISTRY] = registry;\n return registry;\n}\n\nfunction renderTextValue(value: unknown): string {\n if (Array.isArray(value)) return value.map(renderTextValue).join(\"\");\n if (value === null || value === undefined || typeof value === \"boolean\") return \"\";\n return String(value);\n}\n\nfunction isCompilerPrimitive(value: unknown): boolean {\n if (value === null) return true;\n const kind = typeof value;\n return (\n kind === \"string\" ||\n kind === \"number\" ||\n kind === \"boolean\" ||\n kind === \"bigint\" ||\n kind === \"undefined\"\n );\n}\n\nfunction findBindingTarget(\n root: Element,\n path: readonly number[],\n blockRoots: ReadonlySet<Element>,\n): Element | null {\n let current: Element | null = root;\n for (const index of path) {\n if (!current) return null;\n current = [...current.children].filter((child) => !blockRoots.has(child))[index] || null;\n }\n return current;\n}\n\nconst UNITLESS_STYLE_PROPERTIES = new Set([\n \"animationIterationCount\",\n \"aspectRatio\",\n \"borderImageOutset\",\n \"borderImageSlice\",\n \"borderImageWidth\",\n \"boxFlex\",\n \"boxFlexGroup\",\n \"boxOrdinalGroup\",\n \"columnCount\",\n \"columns\",\n \"flex\",\n \"flexGrow\",\n \"flexNegative\",\n \"flexOrder\",\n \"flexPositive\",\n \"flexShrink\",\n \"fontWeight\",\n \"gridArea\",\n \"gridColumn\",\n \"gridColumnEnd\",\n \"gridColumnSpan\",\n \"gridColumnStart\",\n \"gridRow\",\n \"gridRowEnd\",\n \"gridRowSpan\",\n \"gridRowStart\",\n \"lineClamp\",\n \"lineHeight\",\n \"opacity\",\n \"order\",\n \"orphans\",\n \"scale\",\n \"tabSize\",\n \"widows\",\n \"zIndex\",\n \"zoom\",\n \"fillOpacity\",\n \"floodOpacity\",\n \"stopOpacity\",\n \"strokeDasharray\",\n \"strokeDashoffset\",\n \"strokeMiterlimit\",\n \"strokeOpacity\",\n \"strokeWidth\",\n]);\n\nfunction unprefixedStyleName(name: string): string {\n const unprefixed = name.replace(/^(?:Webkit|Moz|ms|O)(?=[A-Z])/, \"\");\n return unprefixed ? unprefixed[0].toLowerCase() + unprefixed.slice(1) : name;\n}\n\nfunction isHtmlOrSvgElement(element: Element): element is HTMLElement | SVGElement {\n const view = element.ownerDocument.defaultView;\n return Boolean(\n view && (element instanceof view.HTMLElement || element instanceof view.SVGElement),\n );\n}\n\nfunction isInputElement(element: Element): element is HTMLInputElement {\n const view = element.ownerDocument.defaultView;\n return Boolean(view && element instanceof view.HTMLInputElement);\n}\n\nfunction isTextAreaElement(element: Element): element is HTMLTextAreaElement {\n const view = element.ownerDocument.defaultView;\n return Boolean(view && element instanceof view.HTMLTextAreaElement);\n}\n\nfunction isSelectElement(element: Element): element is HTMLSelectElement {\n const view = element.ownerDocument.defaultView;\n return Boolean(view && element instanceof view.HTMLSelectElement);\n}\n\nfunction isOptionElement(element: Element): element is HTMLOptionElement {\n const view = element.ownerDocument.defaultView;\n return Boolean(view && element instanceof view.HTMLOptionElement);\n}\n\nfunction isSelectableTextControl(\n element: Element | null | undefined,\n): element is SelectableTextControl {\n return Boolean(element && (isInputElement(element) || isTextAreaElement(element)));\n}\n\nfunction updateStyle(element: Element, name: string, value: unknown): void {\n if (!isHtmlOrSvgElement(element)) return;\n const customProperty = name.startsWith(\"--\");\n let nextValue = \"\";\n if (value !== null && value !== undefined && typeof value !== \"boolean\" && value !== \"\") {\n nextValue =\n typeof value === \"number\" &&\n value !== 0 &&\n !customProperty &&\n !UNITLESS_STYLE_PROPERTIES.has(unprefixedStyleName(name))\n ? `${value}px`\n : String(value).trim();\n }\n\n if (customProperty || name.includes(\"-\")) {\n element.style.setProperty(name, nextValue);\n } else {\n (element.style as unknown as Record<string, string>)[name] = nextValue;\n }\n}\n\nfunction updateSelectValue(element: HTMLSelectElement, value: unknown): void {\n const options = [...element.options];\n if (element.multiple) {\n const selected = new Set(\n (Array.isArray(value) ? value : value === null || value === undefined ? [] : [value]).map(\n String,\n ),\n );\n for (const option of options) option.selected = selected.has(option.value);\n return;\n }\n\n const selectedValue = value === null || value === undefined ? \"\" : String(value);\n let fallback: HTMLOptionElement | undefined;\n for (const option of options) {\n if (!option.disabled && !fallback) fallback = option;\n if (option.value === selectedValue) {\n option.selected = true;\n return;\n }\n }\n if (fallback) fallback.selected = true;\n}\n\nfunction updateAttribute(element: Element, name: string, value: unknown): void {\n const attributeName = name === \"className\" ? \"class\" : name === \"htmlFor\" ? \"for\" : name;\n const stringifiesBoolean = attributeName.startsWith(\"data-\") || attributeName.startsWith(\"aria-\");\n\n if (name === \"value\" && (isInputElement(element) || isTextAreaElement(element))) {\n const nextValue = value === null || value === undefined ? \"\" : String(value);\n if (element.value !== nextValue) element.value = nextValue;\n return;\n }\n\n if (name === \"value\" && isSelectElement(element)) {\n updateSelectValue(element, value);\n return;\n }\n\n if (name === \"checked\" && isInputElement(element)) {\n element.checked = Boolean(value);\n return;\n }\n\n if (name === \"selected\" && isOptionElement(element)) {\n element.selected = Boolean(value);\n return;\n }\n\n if (name === \"disabled\" && \"disabled\" in element) {\n (element as HTMLButtonElement).disabled = Boolean(value);\n return;\n }\n\n if (value === null || value === undefined || (value === false && !stringifiesBoolean)) {\n element.removeAttribute(attributeName);\n } else if (value === true && !stringifiesBoolean) {\n element.setAttribute(attributeName, \"\");\n } else {\n element.setAttribute(attributeName, String(value));\n }\n}\n\ntype CompilerBlockRefresh = (afterCommit?: () => void, dirtyState?: ReadonlySet<number>) => void;\n\ninterface ConditionalBlockOwner {\n setRoot(id: number, root: Element | null): void;\n subscribe(id: number, refresh: CompilerBlockRefresh): () => void;\n}\n\nfunction createConditionalBlockComponent(\n owner: ConditionalBlockOwner,\n): React.ComponentType<CompilerConditionalBlockProps> {\n class FarmConditionalBlock extends React.Component<CompilerConditionalBlockProps> {\n static displayName = \"FarmCompiledConditionalBlock\";\n\n private unsubscribe: (() => void) | undefined;\n\n private captureRoot = (root: Element | null) => {\n owner.setRoot(this.props.id, root);\n };\n\n private refresh = (afterCommit?: () => void) => {\n this.forceUpdate(afterCommit);\n };\n\n private subscribe(): void {\n this.unsubscribe = owner.subscribe(this.props.id, this.refresh);\n }\n\n componentDidMount(): void {\n this.subscribe();\n }\n\n componentDidUpdate(previous: CompilerConditionalBlockProps): void {\n if (previous.id === this.props.id) return;\n this.unsubscribe?.();\n owner.setRoot(previous.id, null);\n this.subscribe();\n }\n\n componentWillUnmount(): void {\n this.unsubscribe?.();\n owner.setRoot(this.props.id, null);\n }\n\n render(): React.ReactNode {\n const node = this.props.render();\n if (!React.isValidElement(node)) {\n if (\n node === null ||\n node === undefined ||\n typeof node === \"boolean\" ||\n typeof node === \"string\" ||\n typeof node === \"number\" ||\n typeof node === \"bigint\"\n ) {\n return node;\n }\n throw new TypeError(\n `Compiled conditional block ${this.props.id} must return one host element or an empty value.`,\n );\n }\n if (typeof node.type !== \"string\") {\n throw new TypeError(\n `Compiled conditional block ${this.props.id} must return one host element.`,\n );\n }\n return React.cloneElement(node, {\n ref: this.captureRoot,\n } as React.Attributes);\n }\n }\n\n return FarmConditionalBlock;\n}\n\nfunction createKeyedListBlockComponent(\n owner: Pick<ConditionalBlockOwner, \"subscribe\">,\n): React.ComponentType<CompilerKeyedListBlockProps> {\n class FarmKeyedListBlock extends React.Component<CompilerKeyedListBlockProps> {\n static displayName = \"FarmCompiledKeyedListBlock\";\n\n private unsubscribe: (() => void) | undefined;\n\n private refresh = (afterCommit?: () => void) => {\n this.forceUpdate(afterCommit);\n };\n\n private subscribe(): void {\n this.unsubscribe = owner.subscribe(this.props.id, this.refresh);\n }\n\n componentDidMount(): void {\n this.subscribe();\n }\n\n componentDidUpdate(previous: CompilerKeyedListBlockProps): void {\n if (previous.id === this.props.id) return;\n this.unsubscribe?.();\n this.subscribe();\n }\n\n componentWillUnmount(): void {\n this.unsubscribe?.();\n }\n\n render(): React.ReactNode {\n return this.props.render();\n }\n }\n\n return FarmKeyedListBlock;\n}\n\ninterface CompilerHostInstance {\n element: Element;\n values: unknown[];\n scope?: CompilerHostTreeScope;\n}\n\nfunction isCompilerHostElement(value: unknown): value is CompilerHostElement {\n return (\n typeof value === \"object\" && value !== null && (value as { kind?: unknown }).kind === \"element\"\n );\n}\n\nfunction createCompilerHostElement(document: Document, descriptor: CompilerHostElement): Element {\n const element = document.createElement(descriptor.tag);\n for (const attribute of descriptor.attributes) {\n updateAttribute(element, attribute.name, attribute.value);\n }\n for (const style of descriptor.styles) updateStyle(element, style.name, style.value);\n const appendChild = (child: unknown): void => {\n if (Array.isArray(child)) {\n for (const nested of child) appendChild(nested);\n return;\n }\n if (isCompilerHostElement(child)) {\n element.append(createCompilerHostElement(document, child));\n return;\n }\n const text = renderTextValue(child);\n if (text) element.append(document.createTextNode(text));\n };\n for (const child of materializeCompilerHostChildren(descriptor)) appendChild(child);\n // Select options and textarea text must exist before their controlled value\n // is finalized. Reapplying is harmless for other attributes and avoids a\n // transient/default selection becoming the compiled branch's final state.\n for (const attribute of descriptor.attributes) {\n if (attribute.name === \"value\" && (isSelectElement(element) || isTextAreaElement(element))) {\n updateAttribute(element, attribute.name, attribute.value);\n }\n }\n return element;\n}\n\nfunction matchesCompilerHostElement(\n element: Element,\n descriptor: CompilerHostElement,\n opaquePaths: ReadonlySet<string> = new Set(),\n path: readonly number[] = [],\n): boolean {\n if (element.tagName.toLowerCase() !== descriptor.tag.toLowerCase()) return false;\n if (opaquePaths.has(path.join(\".\")) || descriptor.block) return true;\n const expectedChildren = flattenCompilerHostElements(descriptor.children);\n if (element.children.length !== expectedChildren.length) return false;\n return expectedChildren.every((child, index) =>\n matchesCompilerHostElement(element.children[index], child, opaquePaths, [...path, index]),\n );\n}\n\nfunction flattenCompilerHostElements(children: readonly unknown[]): CompilerHostElement[] {\n const elements: CompilerHostElement[] = [];\n const visit = (child: unknown): void => {\n if (Array.isArray(child)) {\n for (const nested of child) visit(nested);\n } else if (isCompilerHostElement(child)) {\n elements.push(child);\n }\n };\n for (const child of children) visit(child);\n return elements;\n}\n\nfunction materializeCompilerHostChildren(descriptor: CompilerHostElement): readonly unknown[] {\n const block = descriptor.block;\n if (block?.kind !== \"keyed-ranges\" || !block.staticChildrenOnly) {\n return descriptor.children;\n }\n const staticChildren = flattenCompilerHostElements(descriptor.children);\n const children: CompilerHostElement[] = [];\n let cursor = 0;\n for (const range of block.ranges) {\n children.push(...staticChildren.slice(cursor, cursor + range.before));\n cursor += range.before;\n const items = materializeIterable(range.items());\n children.push(...items.map((item, index) => range.create(item, index)));\n }\n children.push(...staticChildren.slice(cursor, cursor + block.trailing));\n return children;\n}\n\nfunction collectCompilerHostBlockIds(descriptor: CompilerHostElement, ids: Set<number>): void {\n for (const child of flattenCompilerHostElements(descriptor.children)) {\n collectCompilerHostBlockIds(child, ids);\n }\n const block = descriptor.block;\n if (!block || ids.has(block.id)) return;\n ids.add(block.id);\n if (block.kind === \"conditional-ranges\") {\n for (const range of block.ranges) {\n if (range.truthy) collectCompilerHostBlockIds(range.truthy.create(), ids);\n if (range.falsy) collectCompilerHostBlockIds(range.falsy.create(), ids);\n }\n } else if (block.kind === \"keyed-ranges\") {\n for (const range of block.ranges) {\n const first = materializeIterable(range.items())[0];\n if (first !== undefined) collectCompilerHostBlockIds(range.create(first, 0), ids);\n }\n } else {\n for (const range of block.ranges) {\n if (range.kind === \"conditional\") {\n if (range.truthy) collectCompilerHostBlockIds(range.truthy.create(), ids);\n if (range.falsy) collectCompilerHostBlockIds(range.falsy.create(), ids);\n } else {\n const first = materializeIterable(range.items())[0];\n if (first !== undefined) collectCompilerHostBlockIds(range.create(first, 0), ids);\n }\n }\n }\n}\n\nfunction findCompilerHostTarget(root: Element, path: readonly number[]): Element | null {\n let current: Element | null = root;\n for (const index of path) current = current?.children[index] || null;\n return current;\n}\n\nconst UNSET_STATIC_RANGE_BINDING = Symbol(\"unset static range binding\");\n\nfunction normalizedStaticRangeBindingValue(\n binding: CompilerStaticRangeBinding,\n value: unknown,\n): unknown {\n return binding.kind === \"text\" ? renderTextValue(value) : value;\n}\n\nfunction applyStaticRangeBindings(\n bindings: readonly CompilerStaticRangeBinding[] | undefined,\n segments: readonly (readonly Element[])[],\n values: unknown[],\n): boolean {\n const activeBindings = bindings || [];\n if (values.length === 0 && activeBindings.length > 0) {\n values.push(...activeBindings.map(() => UNSET_STATIC_RANGE_BINDING));\n }\n if (values.length !== activeBindings.length) return false;\n\n for (let index = 0; index < activeBindings.length; index += 1) {\n const binding = activeBindings[index];\n if (\n !Number.isSafeInteger(binding.segment) ||\n binding.segment < 0 ||\n !Number.isSafeInteger(binding.sibling) ||\n binding.sibling < 0\n ) {\n return false;\n }\n const sibling = segments[binding.segment]?.[binding.sibling];\n const target = sibling && findCompilerHostTarget(sibling, binding.path);\n if (!target) return false;\n const rawValue = binding.read();\n const value = normalizedStaticRangeBindingValue(binding, rawValue);\n if (Object.is(values[index], value)) continue;\n values[index] = value;\n if (binding.kind === \"text\") {\n target.textContent = value as string;\n } else if (binding.kind === \"style\" && binding.name) {\n updateStyle(target, binding.name, rawValue);\n } else if (binding.kind === \"attribute\" && binding.name) {\n updateAttribute(target, binding.name, rawValue);\n } else {\n return false;\n }\n }\n return true;\n}\n\ninterface CompilerKeyedRowInstance extends CompilerHostInstance {\n key: string;\n item: unknown;\n index: number;\n conditionalValues: ReadonlyMap<number, readonly unknown[]>;\n}\n\nconst UNSET_KEYED_ROW_BINDING = Symbol(\"unset interactive keyed-row binding\");\n\nfunction keyedRowIdentity(key: React.Key): string {\n return String(key);\n}\n\nfunction normalizedKeyedRowBindingValue(binding: CompilerKeyedRowBinding, value: unknown): unknown {\n return binding.kind === \"text\" ? renderTextValue(value) : value;\n}\n\ntype CompilerKeyedRowBindingSource = Pick<CompilerKeyedRowsBlockProps, \"bindings\">;\n\nfunction readKeyedRowBindingValues(\n props: CompilerKeyedRowBindingSource,\n item: unknown,\n index: number,\n): unknown[] {\n return props.bindings.map((binding) =>\n normalizedKeyedRowBindingValue(binding, binding.read(item, index)),\n );\n}\n\nfunction applyKeyedRowBindings(\n props: CompilerKeyedRowBindingSource,\n instance: CompilerKeyedRowInstance,\n item: unknown,\n index: number,\n): void {\n for (let bindingIndex = 0; bindingIndex < props.bindings.length; bindingIndex += 1) {\n applyKeyedRowBinding(props, instance, item, index, bindingIndex);\n }\n}\n\nfunction applyKeyedRowBinding(\n props: CompilerKeyedRowBindingSource,\n instance: CompilerKeyedRowInstance,\n item: unknown,\n index: number,\n bindingIndex: number,\n): void {\n const binding = props.bindings[bindingIndex];\n const rawValue = binding.read(item, index);\n const value = normalizedKeyedRowBindingValue(binding, rawValue);\n if (Object.is(instance.values[bindingIndex], value)) return;\n instance.values[bindingIndex] = value;\n const target = findCompilerHostTarget(instance.element, binding.path);\n if (!target) return;\n if (binding.kind === \"text\") {\n target.textContent = value as string;\n } else if (binding.kind === \"style\" && binding.name) {\n updateStyle(target, binding.name, rawValue);\n } else if (binding.kind === \"attribute\" && binding.name) {\n updateAttribute(target, binding.name, rawValue);\n }\n}\n\nfunction keyedRowConditionalSnapshot(\n conditional: CompilerKeyedRowConditional,\n item: unknown,\n index: number,\n): readonly unknown[] {\n const test = conditional.test(item, index);\n if (conditional.logical && !test) {\n return typeof test === \"number\" || typeof test === \"bigint\" ? [\"primitive\", test] : [\"empty\"];\n }\n const key = test ? \"truthy\" : \"falsy\";\n const branch = key === \"truthy\" ? conditional.truthy : conditional.falsy;\n if (!branch) return [\"empty\"];\n return [\n key,\n ...branch.bindings.map((binding) =>\n normalizedKeyedRowBindingValue(binding, binding.read(item, index)),\n ),\n ];\n}\n\nfunction readKeyedRowConditionalValues(\n props: CompilerKeyedRowsBlockProps,\n item: unknown,\n index: number,\n): ReadonlyMap<number, readonly unknown[]> {\n if (!props.conditionals?.length) return EMPTY_KEYED_ROW_CONDITIONAL_VALUES;\n return new Map(\n props.conditionals.map((conditional) => [\n conditional.id,\n keyedRowConditionalSnapshot(conditional, item, index),\n ]),\n );\n}\n\nconst EMPTY_KEYED_ROW_CONDITIONAL_VALUES: ReadonlyMap<number, readonly unknown[]> = new Map();\n\nfunction keyedRowConditionalChanged(\n previous: readonly unknown[] | undefined,\n next: readonly unknown[],\n): boolean {\n return (\n !previous ||\n previous.length !== next.length ||\n next.some((value, index) => !Object.is(value, previous[index]))\n );\n}\n\ntype CompilerHostConditionalSelection =\n | { kind: \"branch\"; key: \"truthy\" | \"falsy\"; branch: CompilerHostConditionalBranch }\n | { kind: \"empty\" }\n | { kind: \"fallback\" };\ntype CompilerHostConditionalPreparedSelection = Exclude<\n CompilerHostConditionalSelection,\n { kind: \"fallback\" }\n>;\n\nfunction hostConditionalSelection(\n props: Pick<CompilerHostConditionalBlockProps, \"test\" | \"logical\" | \"truthy\" | \"falsy\">,\n): CompilerHostConditionalSelection {\n const test = props.test();\n if (props.logical && !test) {\n // React renders 0, NaN, and (where supported) 0n from `value && <Element />`.\n // The host-only fast path cannot represent that primitive branch, so retain\n // React's exact behavior rather than coercing it to an empty branch.\n if (typeof test === \"number\" || typeof test === \"bigint\") return { kind: \"fallback\" };\n return { kind: \"empty\" };\n }\n const key = test ? \"truthy\" : \"falsy\";\n const branch = key === \"truthy\" ? props.truthy : props.falsy;\n return branch ? { kind: \"branch\", key, branch } : { kind: \"empty\" };\n}\n\nfunction normalizedHostConditionalBindingValue(\n binding: CompilerHostConditionalBinding,\n value: unknown,\n): unknown {\n return binding.kind === \"text\" ? renderTextValue(value) : value;\n}\n\nfunction applyHostConditionalBindings(\n branch: CompilerHostConditionalBranch,\n instance: CompilerHostInstance,\n): void {\n for (let bindingIndex = 0; bindingIndex < branch.bindings.length; bindingIndex += 1) {\n const binding = branch.bindings[bindingIndex];\n const rawValue = binding.read();\n const value = normalizedHostConditionalBindingValue(binding, rawValue);\n if (Object.is(instance.values[bindingIndex], value)) continue;\n instance.values[bindingIndex] = value;\n const target = findCompilerHostTarget(instance.element, binding.path);\n if (!target) continue;\n if (binding.kind === \"text\") {\n target.textContent = value as string;\n } else if (binding.kind === \"style\" && binding.name) {\n updateStyle(target, binding.name, rawValue);\n } else if (binding.kind === \"attribute\" && binding.name) {\n updateAttribute(target, binding.name, rawValue);\n }\n }\n}\n\ninterface CompilerHostTreeScope {\n cleanup(): void;\n update(descriptor: CompilerHostElement): boolean;\n}\n\nconst UNSET_HOST_CONDITIONAL_BINDING = Symbol(\"unset host conditional binding\");\n\nfunction mountCompilerHostTree(\n owner: Pick<ConditionalBlockOwner, \"subscribe\">,\n element: Element,\n descriptor: CompilerHostElement,\n onFallback: () => void,\n): CompilerHostTreeScope | null {\n if (!matchesCompilerHostElement(element, descriptor)) return null;\n if (descriptor.block?.kind === \"conditional-ranges\") {\n const controller = new CompilerNestedConditionalRanges(\n owner,\n element,\n descriptor,\n descriptor.block,\n onFallback,\n );\n try {\n if (controller.adopt()) return controller;\n controller.cleanup();\n return null;\n } catch (error) {\n controller.cleanup();\n throw error;\n }\n }\n if (descriptor.block?.kind === \"keyed-ranges\") {\n const controller = new CompilerNestedKeyedRanges(\n owner,\n element,\n descriptor,\n descriptor.block,\n onFallback,\n );\n try {\n if (controller.adopt()) return controller;\n controller.cleanup();\n return null;\n } catch (error) {\n controller.cleanup();\n throw error;\n }\n }\n if (descriptor.block?.kind === \"mixed-ranges\") {\n const controller = new CompilerNestedMixedRanges(\n owner,\n element,\n descriptor,\n descriptor.block,\n onFallback,\n );\n try {\n if (controller.adopt()) return controller;\n controller.cleanup();\n return null;\n } catch (error) {\n controller.cleanup();\n throw error;\n }\n }\n\n const descriptors = flattenCompilerHostElements(descriptor.children);\n if (descriptors.length !== element.children.length) return null;\n const scopes: CompilerHostTreeScope[] = [];\n for (let index = 0; index < descriptors.length; index += 1) {\n const scope = mountCompilerHostTree(\n owner,\n element.children[index],\n descriptors[index],\n onFallback,\n );\n if (!scope) {\n for (const mounted of scopes) mounted.cleanup();\n return null;\n }\n scopes.push(scope);\n }\n let active = true;\n return {\n update(nextDescriptor) {\n if (!active || nextDescriptor.block || !matchesCompilerHostElement(element, nextDescriptor)) {\n return false;\n }\n const nextChildren = flattenCompilerHostElements(nextDescriptor.children);\n if (nextChildren.length !== scopes.length) return false;\n return scopes.every((scope, index) => scope.update(nextChildren[index]));\n },\n cleanup() {\n if (!active) return;\n active = false;\n for (const scope of scopes) scope.cleanup();\n },\n };\n}\n\nfunction mountCompilerHostInstance(\n owner: Pick<ConditionalBlockOwner, \"subscribe\">,\n element: Element,\n descriptor: CompilerHostElement,\n branch: Pick<CompilerHostConditionalBranch, \"bindings\">,\n onFallback: () => void,\n): CompilerHostInstance | null {\n const scope = mountCompilerHostTree(owner, element, descriptor, onFallback);\n if (!scope) return null;\n const instance: CompilerHostInstance = {\n element,\n scope,\n values: branch.bindings.map(() => UNSET_HOST_CONDITIONAL_BINDING),\n };\n try {\n applyHostConditionalBindings(branch as CompilerHostConditionalBranch, instance);\n } catch (error) {\n scope.cleanup();\n throw error;\n }\n return instance;\n}\n\ninterface NestedConditionalRangeInstance {\n key: \"truthy\" | \"falsy\";\n host: CompilerHostInstance;\n}\n\nclass CompilerNestedConditionalRanges implements CompilerHostTreeScope {\n private readonly instances: Array<NestedConditionalRangeInstance | null> = [];\n private readonly staticSegments: Element[][] = [];\n private readonly staticScopes: CompilerHostTreeScope[] = [];\n private readonly staticValues: unknown[] = [];\n private unsubscribe: (() => void) | undefined;\n private active = true;\n\n constructor(\n private readonly owner: Pick<ConditionalBlockOwner, \"subscribe\">,\n private readonly root: Element,\n private host: CompilerHostElement,\n private block: CompilerHostConditionalRanges,\n private readonly onFallback: () => void,\n ) {}\n\n private readSelections(): CompilerHostConditionalPreparedSelection[] | null {\n const selections: CompilerHostConditionalPreparedSelection[] = [];\n for (const range of this.block.ranges) {\n const selection = hostConditionalSelection(range);\n if (selection.kind === \"fallback\") return null;\n selections.push(selection);\n }\n return selections;\n }\n\n private mountStatic(\n elements: readonly Element[],\n descriptors: readonly CompilerHostElement[],\n ): boolean {\n if (elements.length !== descriptors.length) return false;\n for (let index = 0; index < elements.length; index += 1) {\n const scope = mountCompilerHostTree(\n this.owner,\n elements[index],\n descriptors[index],\n this.onFallback,\n );\n if (!scope) return false;\n this.staticScopes.push(scope);\n }\n return true;\n }\n\n adopt(): boolean {\n if (!Number.isSafeInteger(this.block.trailing) || this.block.trailing < 0) return false;\n const selections = this.readSelections();\n if (!selections) return false;\n const elements = [...this.root.children];\n const descriptors = flattenCompilerHostElements(this.host.children);\n if (elements.length !== descriptors.length) return false;\n let cursor = 0;\n\n for (let index = 0; index < this.block.ranges.length; index += 1) {\n const range = this.block.ranges[index];\n if (!Number.isSafeInteger(range.before) || range.before < 0) {\n this.cleanup();\n return false;\n }\n const staticEnd = cursor + range.before;\n if (\n staticEnd > elements.length ||\n !this.mountStatic(elements.slice(cursor, staticEnd), descriptors.slice(cursor, staticEnd))\n ) {\n this.cleanup();\n return false;\n }\n this.staticSegments.push(elements.slice(cursor, staticEnd));\n cursor = staticEnd;\n\n const selection = selections[index];\n if (selection.kind === \"empty\") {\n this.instances.push(null);\n continue;\n }\n const element = elements[cursor];\n if (!element) {\n this.cleanup();\n return false;\n }\n const descriptor = selection.branch.create();\n const host = mountCompilerHostInstance(\n this.owner,\n element,\n descriptor,\n selection.branch,\n this.onFallback,\n );\n if (!host) {\n this.cleanup();\n return false;\n }\n this.instances.push({ key: selection.key, host });\n cursor += 1;\n }\n\n const trailingEnd = cursor + this.block.trailing;\n if (\n trailingEnd !== elements.length ||\n !this.mountStatic(elements.slice(cursor), descriptors.slice(cursor))\n ) {\n this.cleanup();\n return false;\n }\n this.staticSegments.push(elements.slice(cursor));\n if (!applyStaticRangeBindings(this.block.bindings, this.staticSegments, this.staticValues)) {\n this.cleanup();\n return false;\n }\n this.unsubscribe = this.owner.subscribe(this.block.id, this.refresh);\n return true;\n }\n\n private anchorAfter(rangeIndex: number): ChildNode | null {\n for (let next = rangeIndex + 1; next < this.instances.length; next += 1) {\n const staticAnchor = this.staticSegments[next]?.[0];\n if (staticAnchor) return staticAnchor;\n const rangeAnchor = this.instances[next]?.host.element;\n if (rangeAnchor) return rangeAnchor;\n }\n return this.staticSegments[this.instances.length]?.[0] || null;\n }\n\n private reconcileRange(\n rangeIndex: number,\n selection: CompilerHostConditionalPreparedSelection,\n ): boolean {\n const previous = this.instances[rangeIndex];\n if (selection.kind === \"empty\") {\n previous?.host.scope?.cleanup();\n previous?.host.element.remove();\n this.instances[rangeIndex] = null;\n return true;\n }\n if (previous?.key === selection.key) {\n const descriptor = selection.branch.create();\n if (!previous.host.scope?.update(descriptor)) return false;\n applyHostConditionalBindings(selection.branch, previous.host);\n return true;\n }\n\n const descriptor = selection.branch.create();\n const element = createCompilerHostElement(this.root.ownerDocument, descriptor);\n const host = mountCompilerHostInstance(\n this.owner,\n element,\n descriptor,\n selection.branch,\n this.onFallback,\n );\n if (!host) return false;\n previous?.host.scope?.cleanup();\n if (previous) previous.host.element.replaceWith(element);\n else this.root.insertBefore(element, this.anchorAfter(rangeIndex));\n this.instances[rangeIndex] = { key: selection.key, host };\n return true;\n }\n\n private refresh = (afterCommit?: () => void) => {\n if (!this.active) {\n afterCommit?.();\n return;\n }\n const selections = this.readSelections();\n if (!selections || selections.length !== this.instances.length) {\n this.onFallback();\n afterCommit?.();\n return;\n }\n if (!applyStaticRangeBindings(this.block.bindings, this.staticSegments, this.staticValues)) {\n this.onFallback();\n afterCommit?.();\n return;\n }\n for (let index = this.instances.length - 1; index >= 0; index -= 1) {\n if (!this.reconcileRange(index, selections[index])) {\n this.onFallback();\n afterCommit?.();\n return;\n }\n }\n afterCommit?.();\n };\n\n private updateStaticScopes(\n descriptor: CompilerHostElement,\n selections: readonly CompilerHostConditionalPreparedSelection[],\n ): boolean {\n const descriptors = flattenCompilerHostElements(descriptor.children);\n let descriptorIndex = 0;\n let scopeIndex = 0;\n for (let rangeIndex = 0; rangeIndex < this.block.ranges.length; rangeIndex += 1) {\n const range = this.block.ranges[rangeIndex];\n for (let index = 0; index < range.before; index += 1) {\n const scope = this.staticScopes[scopeIndex++];\n const child = descriptors[descriptorIndex++];\n if (!scope || !child || !scope.update(child)) return false;\n }\n if (selections[rangeIndex].kind === \"branch\") descriptorIndex += 1;\n }\n for (let index = 0; index < this.block.trailing; index += 1) {\n const scope = this.staticScopes[scopeIndex++];\n const child = descriptors[descriptorIndex++];\n if (!scope || !child || !scope.update(child)) return false;\n }\n return scopeIndex === this.staticScopes.length && descriptorIndex === descriptors.length;\n }\n\n update(descriptor: CompilerHostElement): boolean {\n const block = descriptor.block;\n if (\n !this.active ||\n block?.kind !== \"conditional-ranges\" ||\n block.id !== this.block.id ||\n block.ranges.length !== this.block.ranges.length ||\n block.trailing !== this.block.trailing ||\n block.ranges.some((range, index) => range.before !== this.block.ranges[index].before)\n ) {\n return false;\n }\n this.host = descriptor;\n this.block = block;\n const selections = this.readSelections();\n if (\n !selections ||\n !this.updateStaticScopes(descriptor, selections) ||\n !applyStaticRangeBindings(this.block.bindings, this.staticSegments, this.staticValues)\n ) {\n return false;\n }\n for (let index = this.instances.length - 1; index >= 0; index -= 1) {\n if (!this.reconcileRange(index, selections[index])) return false;\n }\n return true;\n }\n\n cleanup(): void {\n if (!this.active) return;\n this.active = false;\n this.unsubscribe?.();\n for (const instance of this.instances) instance?.host.scope?.cleanup();\n for (const scope of this.staticScopes) scope.cleanup();\n this.instances.length = 0;\n this.staticSegments.length = 0;\n this.staticScopes.length = 0;\n this.staticValues.length = 0;\n }\n}\n\ninterface NestedReadKeyedRange {\n items: unknown[];\n keys: string[];\n}\n\nclass CompilerNestedKeyedRanges implements CompilerHostTreeScope {\n private readonly instances: Array<Map<string, CompilerKeyedRowInstance>> = [];\n private readonly staticSegments: Element[][] = [];\n private readonly staticScopes: CompilerHostTreeScope[] = [];\n private readonly staticValues: unknown[] = [];\n private unsubscribe: (() => void) | undefined;\n private active = true;\n\n constructor(\n private readonly owner: Pick<ConditionalBlockOwner, \"subscribe\">,\n private readonly root: Element,\n private host: CompilerHostElement,\n private block: CompilerHostKeyedRanges,\n private readonly onFallback: () => void,\n ) {}\n\n private readRange(range: CompilerKeyedRange): NestedReadKeyedRange | null {\n const items = materializeIterable(range.items());\n const keys = items.map((item, index) => keyedRowIdentity(range.rowKey(item, index)));\n return new Set(keys).size === keys.length ? { items, keys } : null;\n }\n\n private readRanges(): NestedReadKeyedRange[] | null {\n const ranges: NestedReadKeyedRange[] = [];\n for (const range of this.block.ranges) {\n const rows = this.readRange(range);\n if (!rows) return null;\n ranges.push(rows);\n }\n return ranges;\n }\n\n private mountStatic(\n elements: readonly Element[],\n descriptors: readonly CompilerHostElement[],\n ): boolean {\n if (elements.length !== descriptors.length) return false;\n for (let index = 0; index < elements.length; index += 1) {\n const scope = mountCompilerHostTree(\n this.owner,\n elements[index],\n descriptors[index],\n this.onFallback,\n );\n if (!scope) return false;\n this.staticScopes.push(scope);\n }\n return true;\n }\n\n adopt(): boolean {\n if (!Number.isSafeInteger(this.block.trailing) || this.block.trailing < 0) return false;\n const rowsByRange = this.readRanges();\n if (!rowsByRange) return false;\n const elements = [...this.root.children];\n const descriptors = flattenCompilerHostElements(materializeCompilerHostChildren(this.host));\n if (elements.length !== descriptors.length) return false;\n let cursor = 0;\n\n for (let rangeIndex = 0; rangeIndex < this.block.ranges.length; rangeIndex += 1) {\n const range = this.block.ranges[rangeIndex];\n const rows = rowsByRange[rangeIndex];\n if (!Number.isSafeInteger(range.before) || range.before < 0) {\n this.cleanup();\n return false;\n }\n const staticEnd = cursor + range.before;\n if (\n staticEnd > elements.length ||\n !this.mountStatic(elements.slice(cursor, staticEnd), descriptors.slice(cursor, staticEnd))\n ) {\n this.cleanup();\n return false;\n }\n this.staticSegments.push(elements.slice(cursor, staticEnd));\n cursor = staticEnd;\n\n const instances = new Map<string, CompilerKeyedRowInstance>();\n for (let index = 0; index < rows.items.length; index += 1) {\n const element = elements[cursor + index];\n if (!element) {\n this.cleanup();\n return false;\n }\n const descriptor = range.create(rows.items[index], index);\n const scope = mountCompilerHostTree(this.owner, element, descriptor, this.onFallback);\n if (!scope) {\n this.cleanup();\n return false;\n }\n instances.set(rows.keys[index], {\n key: rows.keys[index],\n element,\n scope,\n values: range.bindings.map(() => UNSET_KEYED_ROW_BINDING),\n item: rows.items[index],\n index,\n conditionalValues: new Map(),\n });\n applyKeyedRowBindings(range, instances.get(rows.keys[index])!, rows.items[index], index);\n }\n this.instances.push(instances);\n cursor += rows.items.length;\n }\n\n const trailingEnd = cursor + this.block.trailing;\n if (\n trailingEnd !== elements.length ||\n !this.mountStatic(elements.slice(cursor), descriptors.slice(cursor))\n ) {\n this.cleanup();\n return false;\n }\n this.staticSegments.push(elements.slice(cursor));\n if (!applyStaticRangeBindings(this.block.bindings, this.staticSegments, this.staticValues)) {\n this.cleanup();\n return false;\n }\n this.unsubscribe = this.owner.subscribe(this.block.id, this.refresh);\n return true;\n }\n\n private anchorAfter(rangeIndex: number): ChildNode | null {\n for (let next = rangeIndex + 1; next < this.instances.length; next += 1) {\n const staticAnchor = this.staticSegments[next]?.[0];\n if (staticAnchor) return staticAnchor;\n const rowAnchor = this.instances[next].values().next().value?.element;\n if (rowAnchor) return rowAnchor;\n }\n return this.staticSegments[this.instances.length]?.[0] || null;\n }\n\n private reconcileRange(rangeIndex: number, rows: NestedReadKeyedRange): boolean {\n const range = this.block.ranges[rangeIndex];\n const previous = this.instances[rangeIndex];\n const oldIndices = new Map<string, number>();\n [...previous.keys()].forEach((key, index) => oldIndices.set(key, index));\n const nextKeys = new Set(rows.keys);\n for (const [key, instance] of previous) {\n if (nextKeys.has(key)) continue;\n instance.scope?.cleanup();\n instance.element.remove();\n }\n\n const sequence = rows.keys.map((key) => oldIndices.get(key) ?? -1);\n const stablePositions = longestIncreasingSubsequencePositions(sequence);\n const nextInstances: CompilerKeyedRowInstance[] = [];\n for (let index = 0; index < rows.items.length; index += 1) {\n const key = rows.keys[index];\n const existing = previous.get(key);\n if (existing) {\n const descriptor = range.create(rows.items[index], index);\n if (!existing.scope?.update(descriptor)) return false;\n applyKeyedRowBindings(range, existing, rows.items[index], index);\n existing.item = rows.items[index];\n existing.index = index;\n nextInstances.push(existing);\n continue;\n }\n const descriptor = range.create(rows.items[index], index);\n const element = createCompilerHostElement(this.root.ownerDocument, descriptor);\n const scope = mountCompilerHostTree(this.owner, element, descriptor, this.onFallback);\n if (!scope) return false;\n nextInstances.push({\n key,\n element,\n scope,\n values: readKeyedRowBindingValues(range, rows.items[index], index),\n item: rows.items[index],\n index,\n conditionalValues: new Map(),\n });\n }\n\n let anchor = this.anchorAfter(rangeIndex);\n for (let index = nextInstances.length - 1; index >= 0; index -= 1) {\n const instance = nextInstances[index];\n if (\n sequence[index] < 0 ||\n (!stablePositions.has(index) && instance.element.nextSibling !== anchor)\n ) {\n this.root.insertBefore(instance.element, anchor);\n }\n anchor = instance.element;\n }\n this.instances[rangeIndex] = new Map(nextInstances.map((instance) => [instance.key, instance]));\n return true;\n }\n\n private refresh = (afterCommit?: () => void) => {\n if (!this.active) {\n afterCommit?.();\n return;\n }\n const rowsByRange = this.readRanges();\n if (!rowsByRange || rowsByRange.length !== this.instances.length) {\n this.onFallback();\n afterCommit?.();\n return;\n }\n if (!applyStaticRangeBindings(this.block.bindings, this.staticSegments, this.staticValues)) {\n this.onFallback();\n afterCommit?.();\n return;\n }\n const activeElement = this.root.ownerDocument.activeElement;\n const restoreFocus = Boolean(activeElement && this.root.contains(activeElement));\n for (let index = rowsByRange.length - 1; index >= 0; index -= 1) {\n if (!this.reconcileRange(index, rowsByRange[index])) {\n this.onFallback();\n afterCommit?.();\n return;\n }\n }\n if (\n restoreFocus &&\n activeElement?.isConnected &&\n activeElement.ownerDocument.activeElement !== activeElement &&\n \"focus\" in activeElement\n ) {\n (activeElement as HTMLElement).focus({ preventScroll: true });\n }\n afterCommit?.();\n };\n\n private updateStaticScopes(\n descriptor: CompilerHostElement,\n rowsByRange: readonly NestedReadKeyedRange[],\n ): boolean {\n const descriptors = flattenCompilerHostElements(materializeCompilerHostChildren(descriptor));\n let descriptorIndex = 0;\n let scopeIndex = 0;\n for (let rangeIndex = 0; rangeIndex < this.block.ranges.length; rangeIndex += 1) {\n const range = this.block.ranges[rangeIndex];\n for (let index = 0; index < range.before; index += 1) {\n const scope = this.staticScopes[scopeIndex++];\n const child = descriptors[descriptorIndex++];\n if (!scope || !child || !scope.update(child)) return false;\n }\n descriptorIndex += rowsByRange[rangeIndex].items.length;\n }\n for (let index = 0; index < this.block.trailing; index += 1) {\n const scope = this.staticScopes[scopeIndex++];\n const child = descriptors[descriptorIndex++];\n if (!scope || !child || !scope.update(child)) return false;\n }\n return scopeIndex === this.staticScopes.length && descriptorIndex === descriptors.length;\n }\n\n update(descriptor: CompilerHostElement): boolean {\n const block = descriptor.block;\n if (\n !this.active ||\n block?.kind !== \"keyed-ranges\" ||\n block.id !== this.block.id ||\n block.ranges.length !== this.block.ranges.length ||\n block.trailing !== this.block.trailing ||\n block.ranges.some((range, index) => range.before !== this.block.ranges[index].before)\n ) {\n return false;\n }\n this.host = descriptor;\n this.block = block;\n const rowsByRange = this.readRanges();\n if (\n !rowsByRange ||\n rowsByRange.length !== this.instances.length ||\n !this.updateStaticScopes(descriptor, rowsByRange) ||\n !applyStaticRangeBindings(this.block.bindings, this.staticSegments, this.staticValues)\n ) {\n return false;\n }\n for (let index = rowsByRange.length - 1; index >= 0; index -= 1) {\n if (!this.reconcileRange(index, rowsByRange[index])) return false;\n }\n return true;\n }\n\n cleanup(): void {\n if (!this.active) return;\n this.active = false;\n this.unsubscribe?.();\n for (const instances of this.instances) {\n for (const instance of instances.values()) instance.scope?.cleanup();\n }\n for (const scope of this.staticScopes) scope.cleanup();\n this.instances.length = 0;\n this.staticSegments.length = 0;\n this.staticScopes.length = 0;\n this.staticValues.length = 0;\n }\n}\n\ntype NestedMixedRangeSnapshot =\n | { kind: \"conditional\"; selection: CompilerHostConditionalPreparedSelection }\n | { kind: \"keyed\"; rows: NestedReadKeyedRange };\n\ntype NestedMixedRangeInstance =\n | { kind: \"conditional\"; value: NestedConditionalRangeInstance | null }\n | { kind: \"keyed\"; value: Map<string, CompilerKeyedRowInstance> };\n\nclass CompilerNestedMixedRanges implements CompilerHostTreeScope {\n private readonly instances: NestedMixedRangeInstance[] = [];\n private readonly staticSegments: Element[][] = [];\n private readonly staticScopes: CompilerHostTreeScope[] = [];\n private readonly staticValues: unknown[] = [];\n private unsubscribe: (() => void) | undefined;\n private active = true;\n\n constructor(\n private readonly owner: Pick<ConditionalBlockOwner, \"subscribe\">,\n private readonly root: Element,\n private host: CompilerHostElement,\n private block: CompilerHostMixedRanges,\n private readonly onFallback: () => void,\n ) {}\n\n private readSnapshots(): NestedMixedRangeSnapshot[] | null {\n const snapshots: NestedMixedRangeSnapshot[] = [];\n for (const range of this.block.ranges) {\n if (range.kind === \"conditional\") {\n const selection = hostConditionalSelection(range);\n if (selection.kind === \"fallback\") return null;\n snapshots.push({ kind: \"conditional\", selection });\n continue;\n }\n const items = materializeIterable(range.items());\n const keys = items.map((item, index) => keyedRowIdentity(range.rowKey(item, index)));\n if (new Set(keys).size !== keys.length) return null;\n snapshots.push({ kind: \"keyed\", rows: { items, keys } });\n }\n return snapshots;\n }\n\n private mountStatic(\n elements: readonly Element[],\n descriptors: readonly CompilerHostElement[],\n ): boolean {\n if (elements.length !== descriptors.length) return false;\n for (let index = 0; index < elements.length; index += 1) {\n const scope = mountCompilerHostTree(\n this.owner,\n elements[index],\n descriptors[index],\n this.onFallback,\n );\n if (!scope) return false;\n this.staticScopes.push(scope);\n }\n return true;\n }\n\n adopt(): boolean {\n if (!Number.isSafeInteger(this.block.trailing) || this.block.trailing < 0) return false;\n const snapshots = this.readSnapshots();\n if (!snapshots) return false;\n const elements = [...this.root.children];\n const descriptors = flattenCompilerHostElements(this.host.children);\n if (elements.length !== descriptors.length) return false;\n let cursor = 0;\n\n for (let rangeIndex = 0; rangeIndex < this.block.ranges.length; rangeIndex += 1) {\n const range = this.block.ranges[rangeIndex];\n const snapshot = snapshots[rangeIndex];\n if (!Number.isSafeInteger(range.before) || range.before < 0 || range.kind !== snapshot.kind) {\n this.cleanup();\n return false;\n }\n const staticEnd = cursor + range.before;\n if (\n staticEnd > elements.length ||\n !this.mountStatic(elements.slice(cursor, staticEnd), descriptors.slice(cursor, staticEnd))\n ) {\n this.cleanup();\n return false;\n }\n this.staticSegments.push(elements.slice(cursor, staticEnd));\n cursor = staticEnd;\n\n if (range.kind === \"conditional\" && snapshot.kind === \"conditional\") {\n if (snapshot.selection.kind === \"empty\") {\n this.instances.push({ kind: \"conditional\", value: null });\n continue;\n }\n const element = elements[cursor];\n if (!element) {\n this.cleanup();\n return false;\n }\n const descriptor = snapshot.selection.branch.create();\n const host = mountCompilerHostInstance(\n this.owner,\n element,\n descriptor,\n snapshot.selection.branch,\n this.onFallback,\n );\n if (!host) {\n this.cleanup();\n return false;\n }\n this.instances.push({\n kind: \"conditional\",\n value: { key: snapshot.selection.key, host },\n });\n cursor += 1;\n continue;\n }\n\n if (range.kind !== \"keyed\" || snapshot.kind !== \"keyed\") {\n this.cleanup();\n return false;\n }\n const keyedInstances = new Map<string, CompilerKeyedRowInstance>();\n for (let index = 0; index < snapshot.rows.items.length; index += 1) {\n const element = elements[cursor + index];\n if (!element) {\n this.cleanup();\n return false;\n }\n const descriptor = range.create(snapshot.rows.items[index], index);\n const scope = mountCompilerHostTree(this.owner, element, descriptor, this.onFallback);\n if (!scope) {\n this.cleanup();\n return false;\n }\n const instance: CompilerKeyedRowInstance = {\n key: snapshot.rows.keys[index],\n element,\n scope,\n values: range.bindings.map(() => UNSET_KEYED_ROW_BINDING),\n item: snapshot.rows.items[index],\n index,\n conditionalValues: new Map(),\n };\n try {\n applyKeyedRowBindings(range, instance, snapshot.rows.items[index], index);\n } catch (error) {\n scope.cleanup();\n throw error;\n }\n keyedInstances.set(snapshot.rows.keys[index], instance);\n }\n this.instances.push({ kind: \"keyed\", value: keyedInstances });\n cursor += snapshot.rows.items.length;\n }\n\n const trailingEnd = cursor + this.block.trailing;\n if (\n trailingEnd !== elements.length ||\n !this.mountStatic(elements.slice(cursor), descriptors.slice(cursor))\n ) {\n this.cleanup();\n return false;\n }\n this.staticSegments.push(elements.slice(cursor));\n if (!applyStaticRangeBindings(this.block.bindings, this.staticSegments, this.staticValues)) {\n this.cleanup();\n return false;\n }\n this.unsubscribe = this.owner.subscribe(this.block.id, this.refresh);\n return true;\n }\n\n private firstInstanceElement(instance: NestedMixedRangeInstance): Element | null {\n if (instance.kind === \"conditional\") return instance.value?.host.element || null;\n return instance.value.values().next().value?.element || null;\n }\n\n private anchorAfter(rangeIndex: number): ChildNode | null {\n for (let next = rangeIndex + 1; next < this.instances.length; next += 1) {\n const staticAnchor = this.staticSegments[next]?.[0];\n if (staticAnchor) return staticAnchor;\n const rangeAnchor = this.firstInstanceElement(this.instances[next]);\n if (rangeAnchor) return rangeAnchor;\n }\n return this.staticSegments[this.instances.length]?.[0] || null;\n }\n\n private reconcileConditional(\n rangeIndex: number,\n range: CompilerMixedRange & { kind: \"conditional\" },\n selection: CompilerHostConditionalPreparedSelection,\n ): boolean {\n const instance = this.instances[rangeIndex];\n if (instance.kind !== \"conditional\") return false;\n const previous = instance.value;\n if (selection.kind === \"empty\") {\n previous?.host.scope?.cleanup();\n previous?.host.element.remove();\n instance.value = null;\n return true;\n }\n if (previous?.key === selection.key) {\n const descriptor = selection.branch.create();\n if (!previous.host.scope?.update(descriptor)) return false;\n applyHostConditionalBindings(selection.branch, previous.host);\n return true;\n }\n const descriptor = selection.branch.create();\n const element = createCompilerHostElement(this.root.ownerDocument, descriptor);\n const host = mountCompilerHostInstance(\n this.owner,\n element,\n descriptor,\n selection.branch,\n this.onFallback,\n );\n if (!host) return false;\n previous?.host.scope?.cleanup();\n if (previous) previous.host.element.replaceWith(element);\n else this.root.insertBefore(element, this.anchorAfter(rangeIndex));\n instance.value = { key: selection.key, host };\n return true;\n }\n\n private reconcileKeyed(\n rangeIndex: number,\n range: CompilerMixedRange & { kind: \"keyed\" },\n rows: NestedReadKeyedRange,\n ): boolean {\n const instance = this.instances[rangeIndex];\n if (instance.kind !== \"keyed\") return false;\n const previous = instance.value;\n const oldIndices = new Map<string, number>();\n [...previous.keys()].forEach((key, index) => oldIndices.set(key, index));\n const nextKeys = new Set(rows.keys);\n for (const [key, row] of previous) {\n if (nextKeys.has(key)) continue;\n row.scope?.cleanup();\n row.element.remove();\n }\n\n const sequence = rows.keys.map((key) => oldIndices.get(key) ?? -1);\n const stablePositions = longestIncreasingSubsequencePositions(sequence);\n const nextInstances: CompilerKeyedRowInstance[] = [];\n for (let index = 0; index < rows.items.length; index += 1) {\n const key = rows.keys[index];\n const existing = previous.get(key);\n if (existing) {\n const descriptor = range.create(rows.items[index], index);\n if (!existing.scope?.update(descriptor)) return false;\n applyKeyedRowBindings(range, existing, rows.items[index], index);\n existing.item = rows.items[index];\n existing.index = index;\n nextInstances.push(existing);\n continue;\n }\n const descriptor = range.create(rows.items[index], index);\n const element = createCompilerHostElement(this.root.ownerDocument, descriptor);\n const scope = mountCompilerHostTree(this.owner, element, descriptor, this.onFallback);\n if (!scope) return false;\n let values: unknown[];\n try {\n values = readKeyedRowBindingValues(range, rows.items[index], index);\n } catch (error) {\n scope.cleanup();\n throw error;\n }\n nextInstances.push({\n key,\n element,\n scope,\n values,\n item: rows.items[index],\n index,\n conditionalValues: new Map(),\n });\n }\n\n let anchor = this.anchorAfter(rangeIndex);\n for (let index = nextInstances.length - 1; index >= 0; index -= 1) {\n const row = nextInstances[index];\n if (\n sequence[index] < 0 ||\n (!stablePositions.has(index) && row.element.nextSibling !== anchor)\n ) {\n this.root.insertBefore(row.element, anchor);\n }\n anchor = row.element;\n }\n instance.value = new Map(nextInstances.map((row) => [row.key, row]));\n return true;\n }\n\n private reconcileRange(rangeIndex: number, snapshot: NestedMixedRangeSnapshot): boolean {\n const range = this.block.ranges[rangeIndex];\n if (range.kind !== snapshot.kind) return false;\n return range.kind === \"conditional\" && snapshot.kind === \"conditional\"\n ? this.reconcileConditional(rangeIndex, range, snapshot.selection)\n : range.kind === \"keyed\" && snapshot.kind === \"keyed\"\n ? this.reconcileKeyed(rangeIndex, range, snapshot.rows)\n : false;\n }\n\n private refresh = (afterCommit?: () => void) => {\n if (!this.active) {\n afterCommit?.();\n return;\n }\n const snapshots = this.readSnapshots();\n if (!snapshots || snapshots.length !== this.instances.length) {\n this.onFallback();\n afterCommit?.();\n return;\n }\n if (!applyStaticRangeBindings(this.block.bindings, this.staticSegments, this.staticValues)) {\n this.onFallback();\n afterCommit?.();\n return;\n }\n const activeElement = this.root.ownerDocument.activeElement;\n const restoreFocus = Boolean(activeElement && this.root.contains(activeElement));\n for (let index = snapshots.length - 1; index >= 0; index -= 1) {\n if (!this.reconcileRange(index, snapshots[index])) {\n this.onFallback();\n afterCommit?.();\n return;\n }\n }\n if (\n restoreFocus &&\n activeElement?.isConnected &&\n activeElement.ownerDocument.activeElement !== activeElement &&\n \"focus\" in activeElement\n ) {\n (activeElement as HTMLElement).focus({ preventScroll: true });\n }\n afterCommit?.();\n };\n\n private updateStaticScopes(\n descriptor: CompilerHostElement,\n snapshots: readonly NestedMixedRangeSnapshot[],\n ): boolean {\n const descriptors = flattenCompilerHostElements(descriptor.children);\n let descriptorIndex = 0;\n let scopeIndex = 0;\n for (let rangeIndex = 0; rangeIndex < this.block.ranges.length; rangeIndex += 1) {\n const range = this.block.ranges[rangeIndex];\n for (let index = 0; index < range.before; index += 1) {\n const scope = this.staticScopes[scopeIndex++];\n const child = descriptors[descriptorIndex++];\n if (!scope || !child || !scope.update(child)) return false;\n }\n const snapshot = snapshots[rangeIndex];\n if (snapshot.kind === \"conditional\") {\n if (snapshot.selection.kind === \"branch\") descriptorIndex += 1;\n } else {\n descriptorIndex += snapshot.rows.items.length;\n }\n }\n for (let index = 0; index < this.block.trailing; index += 1) {\n const scope = this.staticScopes[scopeIndex++];\n const child = descriptors[descriptorIndex++];\n if (!scope || !child || !scope.update(child)) return false;\n }\n return scopeIndex === this.staticScopes.length && descriptorIndex === descriptors.length;\n }\n\n update(descriptor: CompilerHostElement): boolean {\n const block = descriptor.block;\n if (\n !this.active ||\n block?.kind !== \"mixed-ranges\" ||\n block.id !== this.block.id ||\n block.ranges.length !== this.block.ranges.length ||\n block.trailing !== this.block.trailing ||\n block.ranges.some(\n (range, index) =>\n range.kind !== this.block.ranges[index].kind ||\n range.before !== this.block.ranges[index].before,\n )\n ) {\n return false;\n }\n this.host = descriptor;\n this.block = block;\n const snapshots = this.readSnapshots();\n if (\n !snapshots ||\n snapshots.length !== this.instances.length ||\n !this.updateStaticScopes(descriptor, snapshots) ||\n !applyStaticRangeBindings(this.block.bindings, this.staticSegments, this.staticValues)\n ) {\n return false;\n }\n for (let index = snapshots.length - 1; index >= 0; index -= 1) {\n if (!this.reconcileRange(index, snapshots[index])) return false;\n }\n return true;\n }\n\n cleanup(): void {\n if (!this.active) return;\n this.active = false;\n this.unsubscribe?.();\n for (const instance of this.instances) {\n if (instance.kind === \"conditional\") {\n instance.value?.host.scope?.cleanup();\n } else {\n for (const row of instance.value.values()) row.scope?.cleanup();\n }\n }\n for (const scope of this.staticScopes) scope.cleanup();\n this.instances.length = 0;\n this.staticSegments.length = 0;\n this.staticScopes.length = 0;\n this.staticValues.length = 0;\n }\n}\n\nfunction createHostConditionalBlockComponent(\n owner: Pick<ConditionalBlockOwner, \"subscribe\">,\n): React.ComponentType<CompilerHostConditionalBlockProps> {\n interface State {\n fallback: boolean;\n }\n\n class FarmHostConditionalBlock extends React.Component<CompilerHostConditionalBlockProps, State> {\n static displayName = \"FarmCompiledHostConditional\";\n\n state: State = { fallback: false };\n private root: Element | null = null;\n private mounted = false;\n private fallbackRequested = false;\n private fallbackVersion = 0;\n private propSyncQueued = false;\n private currentProps = this.props;\n private unsubscribe: (() => void) | undefined;\n private fallbackUnsubscribers: Array<() => void> = [];\n private activeBranch: \"truthy\" | \"falsy\" | null = null;\n private instance: CompilerHostInstance | null = null;\n\n private requestNestedFallback = () => {\n this.instance?.scope?.cleanup();\n this.activateFallback();\n };\n\n private subscribeFallbackDescendants(): void {\n for (const unsubscribe of this.fallbackUnsubscribers) unsubscribe();\n this.fallbackUnsubscribers = [];\n const ids = new Set<number>();\n if (this.currentProps.truthy) {\n collectCompilerHostBlockIds(this.currentProps.truthy.create(), ids);\n }\n if (this.currentProps.falsy) {\n collectCompilerHostBlockIds(this.currentProps.falsy.create(), ids);\n }\n ids.delete(this.currentProps.id);\n for (const id of ids) {\n this.fallbackUnsubscribers.push(\n owner.subscribe(id, (afterCommit) => {\n this.fallbackVersion += 1;\n this.forceUpdate(afterCommit);\n }),\n );\n }\n }\n\n private captureRoot = (root: Element | null) => {\n this.root = root;\n };\n\n private adopt(): boolean {\n if (!this.root) return false;\n const selection = hostConditionalSelection(this.currentProps);\n if (selection.kind === \"fallback\") return false;\n if (selection.kind === \"empty\") {\n if (this.root.childNodes.length !== 0) return false;\n this.activeBranch = null;\n this.instance = null;\n return true;\n }\n if (\n this.root.childNodes.length !== 1 ||\n this.root.firstElementChild === null ||\n this.root.firstElementChild !== this.root.firstChild\n ) {\n return false;\n }\n const descriptor = selection.branch.create();\n const element = this.root.firstElementChild;\n if (!matchesCompilerHostElement(element, descriptor)) return false;\n const instance = mountCompilerHostInstance(\n owner,\n element,\n descriptor,\n selection.branch,\n this.requestNestedFallback,\n );\n if (!instance) return false;\n this.activeBranch = selection.key;\n this.instance = instance;\n return true;\n }\n\n private activateFallback(afterCommit?: () => void): void {\n if (!this.mounted || this.state.fallback || this.fallbackRequested) {\n afterCommit?.();\n return;\n }\n this.fallbackRequested = true;\n this.instance?.scope?.cleanup();\n this.instance = null;\n this.activeBranch = null;\n this.subscribeFallbackDescendants();\n // One key change on entry: the compiled path mutated the DOM behind\n // React's back, so the first fallback render must rebuild the subtree.\n this.fallbackVersion += 1;\n this.setState({ fallback: true }, afterCommit);\n }\n\n private reconcile(afterCommit?: () => void): void {\n if (!this.mounted || !this.root) {\n afterCommit?.();\n return;\n }\n if (this.state.fallback) {\n // React owns the container while in fallback; re-render with the\n // stable key so updates reconcile in place instead of remounting the\n // subtree (which would wipe uncontrolled inputs, focus, and scroll).\n this.forceUpdate(afterCommit);\n return;\n }\n\n const selection = hostConditionalSelection(this.currentProps);\n if (selection.kind === \"fallback\") {\n this.activateFallback(afterCommit);\n return;\n }\n if (selection.kind === \"empty\") {\n this.instance?.scope?.cleanup();\n if (this.instance) this.instance.element.remove();\n this.activeBranch = null;\n this.instance = null;\n afterCommit?.();\n return;\n }\n if (this.activeBranch === selection.key && this.instance) {\n const descriptor = selection.branch.create();\n const scope = mountCompilerHostTree(\n owner,\n this.instance.element,\n descriptor,\n this.requestNestedFallback,\n );\n if (!scope) {\n this.activateFallback(afterCommit);\n return;\n }\n this.instance.scope?.cleanup();\n this.instance.scope = scope;\n applyHostConditionalBindings(selection.branch, this.instance);\n afterCommit?.();\n return;\n }\n\n const descriptor = selection.branch.create();\n const element = createCompilerHostElement(this.root.ownerDocument, descriptor);\n const instance = mountCompilerHostInstance(\n owner,\n element,\n descriptor,\n selection.branch,\n this.requestNestedFallback,\n );\n if (!instance) {\n this.activateFallback(afterCommit);\n return;\n }\n this.instance?.scope?.cleanup();\n this.root.replaceChildren(element);\n this.activeBranch = selection.key;\n this.instance = instance;\n afterCommit?.();\n }\n\n private refresh = (afterCommit?: () => void) => {\n this.reconcile(afterCommit);\n };\n\n private schedulePropSync(): void {\n if (this.propSyncQueued) return;\n this.propSyncQueued = true;\n queueMicrotask(() => {\n this.propSyncQueued = false;\n if (this.mounted && !this.state.fallback) this.reconcile();\n });\n }\n\n shouldComponentUpdate(nextProps: CompilerHostConditionalBlockProps, nextState: State): boolean {\n this.currentProps = nextProps;\n if (nextState.fallback || this.state.fallback) return true;\n this.schedulePropSync();\n return false;\n }\n\n componentDidMount(): void {\n this.mounted = true;\n this.unsubscribe = owner.subscribe(this.props.id, this.refresh);\n if (!this.adopt()) this.activateFallback();\n }\n\n componentWillUnmount(): void {\n this.mounted = false;\n this.unsubscribe?.();\n for (const unsubscribe of this.fallbackUnsubscribers) unsubscribe();\n this.fallbackUnsubscribers = [];\n this.instance?.scope?.cleanup();\n this.root = null;\n this.activeBranch = null;\n this.instance = null;\n }\n\n render(): React.ReactNode {\n const container = this.currentProps.render();\n if (!React.isValidElement(container) || typeof container.type !== \"string\") {\n throw new TypeError(\n `Compiled host conditional ${this.currentProps.id} must own one host container.`,\n );\n }\n return React.cloneElement(container, {\n key: this.state.fallback ? `react-${this.fallbackVersion}` : \"compiled\",\n ref: this.captureRoot,\n } as React.Attributes);\n }\n }\n\n return FarmHostConditionalBlock;\n}\n\nfunction createConditionalRangesBlockComponent(\n owner: Pick<ConditionalBlockOwner, \"subscribe\">,\n): React.ComponentType<CompilerConditionalRangesBlockProps> {\n interface State {\n fallback: boolean;\n }\n\n interface ConditionalRangeInstance {\n key: \"truthy\" | \"falsy\";\n host: CompilerHostInstance;\n }\n\n class FarmConditionalRangesBlock extends React.Component<\n CompilerConditionalRangesBlockProps,\n State\n > {\n static displayName = \"FarmCompiledConditionalRanges\";\n\n state: State = { fallback: false };\n private root: Element | null = null;\n private mounted = false;\n private fallbackRequested = false;\n private fallbackVersion = 0;\n private propFallbackQueued = false;\n private currentProps = this.props;\n private unsubscribe: (() => void) | undefined;\n private fallbackUnsubscribers: Array<() => void> = [];\n private rangeInstances: Array<ConditionalRangeInstance | null> = [];\n private staticSegments: Element[][] = [];\n private readonly staticValues: unknown[] = [];\n\n private requestNestedFallback = () => {\n for (const instance of this.rangeInstances) instance?.host.scope?.cleanup();\n this.activateFallback();\n };\n\n private subscribeFallbackDescendants(): void {\n for (const unsubscribe of this.fallbackUnsubscribers) unsubscribe();\n this.fallbackUnsubscribers = [];\n const ids = new Set<number>();\n for (const range of this.currentProps.ranges) {\n if (range.truthy) collectCompilerHostBlockIds(range.truthy.create(), ids);\n if (range.falsy) collectCompilerHostBlockIds(range.falsy.create(), ids);\n }\n ids.delete(this.currentProps.id);\n for (const id of ids) {\n this.fallbackUnsubscribers.push(\n owner.subscribe(id, (afterCommit) => {\n this.fallbackVersion += 1;\n this.forceUpdate(afterCommit);\n }),\n );\n }\n }\n\n private captureRoot = (root: Element | null) => {\n this.root = root;\n this.currentProps.rootRef?.(root);\n };\n\n private readSelections(\n props: CompilerConditionalRangesBlockProps,\n ): CompilerHostConditionalPreparedSelection[] | null {\n const selections: CompilerHostConditionalPreparedSelection[] = [];\n for (const range of props.ranges) {\n const selection = hostConditionalSelection(range);\n if (selection.kind === \"fallback\") return null;\n selections.push(selection);\n }\n return selections;\n }\n\n private adopt(props: CompilerConditionalRangesBlockProps = this.currentProps): boolean {\n if (!this.root || !Number.isSafeInteger(props.trailing) || props.trailing < 0) return false;\n const selections = this.readSelections(props);\n if (!selections) return false;\n const elements = [...this.root.children];\n const staticSegments: Element[][] = [];\n const instances: Array<ConditionalRangeInstance | null> = [];\n const cleanupInstances = () => {\n for (const instance of instances) instance?.host.scope?.cleanup();\n };\n let cursor = 0;\n\n for (let rangeIndex = 0; rangeIndex < props.ranges.length; rangeIndex += 1) {\n const range = props.ranges[rangeIndex];\n if (!Number.isSafeInteger(range.before) || range.before < 0) {\n cleanupInstances();\n return false;\n }\n const staticEnd = cursor + range.before;\n if (staticEnd > elements.length) {\n cleanupInstances();\n return false;\n }\n staticSegments.push(elements.slice(cursor, staticEnd));\n cursor = staticEnd;\n\n const selection = selections[rangeIndex];\n if (selection.kind === \"empty\") {\n instances.push(null);\n continue;\n }\n const element = elements[cursor];\n if (!element) {\n cleanupInstances();\n return false;\n }\n const descriptor = selection.branch.create();\n if (!matchesCompilerHostElement(element, descriptor)) {\n cleanupInstances();\n return false;\n }\n const host = mountCompilerHostInstance(\n owner,\n element,\n descriptor,\n selection.branch,\n this.requestNestedFallback,\n );\n if (!host) {\n cleanupInstances();\n return false;\n }\n instances.push({\n key: selection.key,\n host,\n });\n cursor += 1;\n }\n\n if (cursor + props.trailing !== elements.length) {\n cleanupInstances();\n return false;\n }\n staticSegments.push(elements.slice(cursor));\n this.staticSegments = staticSegments;\n this.rangeInstances = instances;\n if (!applyStaticRangeBindings(props.bindings, this.staticSegments, this.staticValues)) {\n cleanupInstances();\n this.rangeInstances = [];\n this.staticSegments = [];\n return false;\n }\n return true;\n }\n\n private anchorAfter(rangeIndex: number): ChildNode | null {\n for (let next = rangeIndex + 1; next < this.rangeInstances.length; next += 1) {\n const staticAnchor = this.staticSegments[next]?.[0];\n if (staticAnchor) return staticAnchor;\n const rangeAnchor = this.rangeInstances[next]?.host.element;\n if (rangeAnchor) return rangeAnchor;\n }\n return this.staticSegments[this.rangeInstances.length]?.[0] || null;\n }\n\n private reconcileRange(\n rangeIndex: number,\n selection: CompilerHostConditionalPreparedSelection,\n ): boolean {\n if (!this.root) return false;\n const previous = this.rangeInstances[rangeIndex];\n if (selection.kind === \"empty\") {\n previous?.host.scope?.cleanup();\n previous?.host.element.remove();\n this.rangeInstances[rangeIndex] = null;\n return true;\n }\n if (previous?.key === selection.key) {\n const descriptor = selection.branch.create();\n const scope = mountCompilerHostTree(\n owner,\n previous.host.element,\n descriptor,\n this.requestNestedFallback,\n );\n if (!scope) {\n this.requestNestedFallback();\n return false;\n }\n previous.host.scope?.cleanup();\n previous.host.scope = scope;\n applyHostConditionalBindings(selection.branch, previous.host);\n return true;\n }\n\n const descriptor = selection.branch.create();\n const element = createCompilerHostElement(this.root.ownerDocument, descriptor);\n const host = mountCompilerHostInstance(\n owner,\n element,\n descriptor,\n selection.branch,\n this.requestNestedFallback,\n );\n if (!host) {\n this.requestNestedFallback();\n return false;\n }\n previous?.host.scope?.cleanup();\n if (previous) previous.host.element.replaceWith(element);\n else this.root.insertBefore(element, this.anchorAfter(rangeIndex));\n this.rangeInstances[rangeIndex] = {\n key: selection.key,\n host,\n };\n return true;\n }\n\n private reconcile(afterCommit?: () => void): void {\n if (!this.mounted || !this.root) {\n afterCommit?.();\n return;\n }\n if (this.state.fallback) {\n this.fallbackVersion += 1;\n this.forceUpdate(afterCommit);\n return;\n }\n if (this.currentProps.ranges.length !== this.rangeInstances.length) {\n this.activateFallback(afterCommit);\n return;\n }\n const selections = this.readSelections(this.currentProps);\n if (!selections) {\n this.activateFallback(afterCommit);\n return;\n }\n if (\n !applyStaticRangeBindings(\n this.currentProps.bindings,\n this.staticSegments,\n this.staticValues,\n )\n ) {\n this.activateFallback(afterCommit);\n return;\n }\n\n for (let rangeIndex = this.rangeInstances.length - 1; rangeIndex >= 0; rangeIndex -= 1) {\n if (!this.reconcileRange(rangeIndex, selections[rangeIndex])) {\n afterCommit?.();\n return;\n }\n }\n afterCommit?.();\n }\n\n private refresh = (afterCommit?: () => void) => {\n this.reconcile(afterCommit);\n };\n\n private activateFallback(afterCommit?: () => void): void {\n if (!this.mounted || this.state.fallback || this.fallbackRequested) {\n afterCommit?.();\n return;\n }\n this.fallbackRequested = true;\n for (const instance of this.rangeInstances) instance?.host.scope?.cleanup();\n this.subscribeFallbackDescendants();\n this.setState({ fallback: true }, afterCommit);\n }\n\n private schedulePropFallback(): void {\n if (this.propFallbackQueued) return;\n this.propFallbackQueued = true;\n queueMicrotask(() => {\n this.propFallbackQueued = false;\n if (this.mounted && !this.state.fallback) this.activateFallback();\n });\n }\n\n shouldComponentUpdate(\n nextProps: CompilerConditionalRangesBlockProps,\n nextState: State,\n ): boolean {\n this.currentProps = nextProps;\n if (nextState.fallback || this.state.fallback) return true;\n this.schedulePropFallback();\n return false;\n }\n\n componentDidMount(): void {\n this.mounted = true;\n this.unsubscribe = owner.subscribe(this.props.id, this.refresh);\n if (!this.adopt()) this.activateFallback();\n }\n\n componentWillUnmount(): void {\n this.mounted = false;\n this.unsubscribe?.();\n for (const unsubscribe of this.fallbackUnsubscribers) unsubscribe();\n this.fallbackUnsubscribers = [];\n for (const instance of this.rangeInstances) instance?.host.scope?.cleanup();\n this.root = null;\n this.rangeInstances = [];\n this.staticSegments = [];\n this.staticValues.length = 0;\n }\n\n render(): React.ReactNode {\n const container = this.currentProps.render();\n if (!React.isValidElement(container) || typeof container.type !== \"string\") {\n throw new TypeError(\n `Compiled conditional ranges ${this.currentProps.id} must own one host container.`,\n );\n }\n return React.cloneElement(container, {\n key: this.state.fallback ? `react-${this.fallbackVersion}` : \"compiled\",\n ref: this.captureRoot,\n } as React.Attributes);\n }\n }\n\n return FarmConditionalRangesBlock;\n}\n\n/** Returns positions forming the LIS while ignoring newly inserted (-1) entries. */\nfunction longestIncreasingSubsequencePositions(sequence: readonly number[]): Set<number> {\n const tails: number[] = [];\n const previous = Array.from({ length: sequence.length }, () => -1);\n\n for (let index = 0; index < sequence.length; index += 1) {\n if (sequence[index] < 0) continue;\n let low = 0;\n let high = tails.length;\n while (low < high) {\n const middle = (low + high) >> 1;\n if (sequence[tails[middle]] < sequence[index]) low = middle + 1;\n else high = middle;\n }\n if (low > 0) previous[index] = tails[low - 1];\n tails[low] = index;\n }\n\n const positions = new Set<number>();\n let cursor = tails.at(-1) ?? -1;\n while (cursor >= 0) {\n positions.add(cursor);\n cursor = previous[cursor];\n }\n return positions;\n}\n\nfunction createKeyedRowsBlockComponent(\n owner: Pick<ConditionalBlockOwner, \"subscribe\">,\n): React.ComponentType<CompilerKeyedRowsBlockProps> {\n interface State {\n fallback: boolean;\n }\n\n const rowHostScopeOwner: Pick<ConditionalBlockOwner, \"subscribe\"> = {\n subscribe: () => () => {},\n };\n\n type RowConditionalRefresh = (item: unknown, index: number, afterCommit?: () => void) => void;\n\n interface RowConditionalOwner {\n subscribe(key: string, id: number, refresh: RowConditionalRefresh): () => void;\n }\n\n interface RowConditionalProps {\n owner: RowConditionalOwner;\n rowKey: string;\n id: number;\n renderVersion: number;\n item: unknown;\n index: number;\n render(item: unknown, index: number): React.ReactNode;\n }\n\n interface RowConditionalState {\n renderVersion: number;\n item: unknown;\n index: number;\n }\n\n class FarmKeyedRowConditional extends React.Component<RowConditionalProps, RowConditionalState> {\n static displayName = \"FarmCompiledKeyedRowConditional\";\n\n state: RowConditionalState = {\n renderVersion: this.props.renderVersion,\n item: this.props.item,\n index: this.props.index,\n };\n private unsubscribe: (() => void) | undefined;\n\n static getDerivedStateFromProps(\n props: RowConditionalProps,\n state: RowConditionalState,\n ): Partial<RowConditionalState> | null {\n if (props.renderVersion === state.renderVersion) return null;\n return {\n renderVersion: props.renderVersion,\n item: props.item,\n index: props.index,\n };\n }\n\n private refresh: RowConditionalRefresh = (item, index, afterCommit) => {\n this.setState({ item, index }, afterCommit);\n };\n\n private subscribe(): void {\n this.unsubscribe = this.props.owner.subscribe(this.props.rowKey, this.props.id, this.refresh);\n }\n\n componentDidMount(): void {\n this.subscribe();\n }\n\n componentDidUpdate(previous: RowConditionalProps): void {\n if (\n previous.owner === this.props.owner &&\n previous.rowKey === this.props.rowKey &&\n previous.id === this.props.id\n ) {\n return;\n }\n this.unsubscribe?.();\n this.subscribe();\n }\n\n componentWillUnmount(): void {\n this.unsubscribe?.();\n }\n\n render(): React.ReactNode {\n return this.props.render(this.state.item, this.state.index);\n }\n }\n\n class FarmKeyedRowsBlock extends React.Component<CompilerKeyedRowsBlockProps, State> {\n static displayName = \"FarmCompiledKeyedRows\";\n\n state: State = { fallback: false };\n private root: Element | null = null;\n private mounted = false;\n private fallbackRequested = false;\n private fallbackVersion = 0;\n private fallbackKeysWereUnsafe = false;\n private propSyncQueued = false;\n private currentProps = this.props;\n private unsubscribe: (() => void) | undefined;\n private instances = new Map<string, CompilerKeyedRowInstance>();\n private renderVersion = 0;\n private readonly eventHandlers = new Map<\n string,\n Map<number, React.EventHandler<React.SyntheticEvent>>\n >();\n private readonly conditionalListeners = new Map<string, Map<number, RowConditionalRefresh>>();\n private instancesByElement = new WeakMap<Element, CompilerKeyedRowInstance>();\n private readonly conditionalOwner: RowConditionalOwner = {\n subscribe: (key, id, refresh) => this.subscribeToRowConditional(key, id, refresh),\n };\n\n private captureRoot = (root: Element | null) => {\n this.root = root;\n };\n\n private requestHostScopeFallback = () => {\n this.activateFallback();\n };\n\n private readRows(\n props: CompilerKeyedRowsBlockProps,\n ): { items: unknown[]; keys: string[] } | null {\n const items = materializeIterable(props.items());\n const keys = items.map((item, index) => keyedRowIdentity(props.rowKey(item, index)));\n if (new Set(keys).size !== keys.length) return null;\n return { items, keys };\n }\n\n private rowEvent = (\n item: unknown,\n index: number,\n eventId: number,\n ): React.EventHandler<React.SyntheticEvent> => {\n if (this.state.fallback) {\n return (event) => this.currentProps.events?.[eventId]?.invoke(item, index, event);\n }\n if (this.usesDelegatedEvents()) {\n return undefined as unknown as React.EventHandler<React.SyntheticEvent>;\n }\n const key = keyedRowIdentity(this.currentProps.rowKey(item, index));\n let handlers = this.eventHandlers.get(key);\n if (!handlers) {\n handlers = new Map();\n this.eventHandlers.set(key, handlers);\n }\n const existing = handlers.get(eventId);\n if (existing) return existing;\n const handler: React.EventHandler<React.SyntheticEvent> = (event) => {\n const instance = this.instances.get(key);\n const descriptor = this.currentProps.events?.[eventId];\n if (!instance || !descriptor) return;\n return descriptor.invoke(instance.item, instance.index, event);\n };\n handlers.set(eventId, handler);\n return handler;\n };\n\n private usesDelegatedEvents(props: CompilerKeyedRowsBlockProps = this.currentProps): boolean {\n return Boolean(\n props.delegateEvents &&\n props.events?.length &&\n props.events.every((event) => event.path !== undefined),\n );\n }\n\n private rebuildElementIndex(instances: ReadonlyMap<string, CompilerKeyedRowInstance>): void {\n this.instancesByElement = new WeakMap();\n for (const instance of instances.values()) {\n this.instancesByElement.set(instance.element, instance);\n }\n }\n\n private eventRowInstance(event: React.SyntheticEvent): CompilerKeyedRowInstance | undefined {\n if (!this.root) return undefined;\n const target = event.target as Node | null;\n if (!target) return undefined;\n let element =\n target.nodeType === 1 ? (target as Element) : (target.parentElement as Element | null);\n while (element && element.parentElement !== this.root) element = element.parentElement;\n return element?.parentElement === this.root\n ? this.instancesByElement.get(element)\n : undefined;\n }\n\n private invokeDelegatedEvent(\n descriptor: CompilerKeyedRowEvent,\n instance: CompilerKeyedRowInstance,\n event: React.SyntheticEvent,\n currentTarget: Element,\n ): void {\n const ownCurrentTarget = Object.getOwnPropertyDescriptor(event, \"currentTarget\");\n try {\n Object.defineProperty(event, \"currentTarget\", {\n configurable: true,\n value: currentTarget,\n });\n descriptor.invoke(instance.item, instance.index, event);\n } finally {\n if (ownCurrentTarget) Object.defineProperty(event, \"currentTarget\", ownCurrentTarget);\n else Reflect.deleteProperty(event, \"currentTarget\");\n }\n }\n\n private dispatchDelegatedEvent = (name: string, event: React.SyntheticEvent): void => {\n const instance = this.eventRowInstance(event);\n const eventTarget = event.target as Node | null;\n if (!instance || !eventTarget) return;\n const capture = name.endsWith(\"Capture\");\n const matches = (this.currentProps.events || [])\n .filter((descriptor) => descriptor.name === name && descriptor.path !== undefined)\n .map((descriptor) => ({\n descriptor,\n target: findCompilerHostTarget(instance.element, descriptor.path || []),\n }))\n .filter((match): match is { descriptor: CompilerKeyedRowEvent; target: Element } =>\n Boolean(\n match.target && (match.target === eventTarget || match.target.contains(eventTarget)),\n ),\n )\n .sort((left, right) =>\n capture\n ? (left.descriptor.path?.length || 0) - (right.descriptor.path?.length || 0)\n : (right.descriptor.path?.length || 0) - (left.descriptor.path?.length || 0),\n );\n\n for (const match of matches) {\n this.invokeDelegatedEvent(match.descriptor, instance, event, match.target);\n if (event.isPropagationStopped()) break;\n }\n };\n\n private delegatedContainerProps(container: React.ReactElement): Record<string, unknown> {\n if (this.state.fallback || !this.usesDelegatedEvents()) return {};\n const props = container.props as Record<string, unknown>;\n return Object.fromEntries(\n [...new Set((this.currentProps.events || []).map((event) => event.name))].map((name) => {\n const existing = props[name] as React.EventHandler<React.SyntheticEvent> | undefined;\n const capture = name.endsWith(\"Capture\");\n const handler: React.EventHandler<React.SyntheticEvent> = (event) => {\n if (capture) existing?.(event);\n if (!event.isPropagationStopped()) this.dispatchDelegatedEvent(name, event);\n if (!capture && !event.isPropagationStopped()) existing?.(event);\n };\n return [name, handler];\n }),\n );\n }\n\n private rowConditional = (\n item: unknown,\n index: number,\n conditionalId: number,\n render: (item: unknown, index: number) => React.ReactNode,\n ): React.ReactNode => {\n if (this.state.fallback) return render(item, index);\n const key = keyedRowIdentity(this.currentProps.rowKey(item, index));\n return React.createElement(FarmKeyedRowConditional, {\n key: `${key}:${conditionalId}`,\n owner: this.conditionalOwner,\n rowKey: key,\n id: conditionalId,\n renderVersion: this.renderVersion,\n item,\n index,\n render,\n });\n };\n\n private subscribeToRowConditional(\n key: string,\n id: number,\n refresh: RowConditionalRefresh,\n ): () => void {\n let listeners = this.conditionalListeners.get(key);\n if (!listeners) {\n listeners = new Map();\n this.conditionalListeners.set(key, listeners);\n }\n listeners.set(id, refresh);\n return () => {\n const current = this.conditionalListeners.get(key);\n if (current?.get(id) !== refresh) return;\n current.delete(id);\n if (current.size === 0) this.conditionalListeners.delete(key);\n };\n }\n\n private hasReactOwnedRows(props: CompilerKeyedRowsBlockProps = this.currentProps): boolean {\n return Boolean(\n props.conditionals?.length || (props.events?.length && !this.usesDelegatedEvents(props)),\n );\n }\n\n private cleanupHostScopes(\n instances: ReadonlyMap<string, CompilerKeyedRowInstance> = this.instances,\n ): void {\n for (const instance of instances.values()) instance.scope?.cleanup();\n }\n\n private mountRowHostScope(\n element: Element,\n descriptor: CompilerHostElement,\n props: CompilerKeyedRowsBlockProps = this.currentProps,\n ): CompilerHostTreeScope | null | undefined {\n if (!props.hostBlocks) return undefined;\n return mountCompilerHostTree(\n rowHostScopeOwner,\n element,\n descriptor,\n this.requestHostScopeFallback,\n );\n }\n\n private pruneEventHandlers(keys: readonly string[]): void {\n const active = new Set(keys);\n for (const key of this.eventHandlers.keys()) {\n if (!active.has(key)) this.eventHandlers.delete(key);\n }\n }\n\n private pruneConditionalListeners(keys: readonly string[]): void {\n const active = new Set(keys);\n for (const key of this.conditionalListeners.keys()) {\n if (!active.has(key)) this.conditionalListeners.delete(key);\n }\n }\n\n private adopt(): boolean {\n if (!this.root) return false;\n const rows = this.readRows(this.currentProps);\n const elements = [...this.root.children];\n if (!rows || rows.items.length !== elements.length) return false;\n const opaqueConditionalPaths = new Set(\n (this.currentProps.conditionals || []).map((conditional) => conditional.path.join(\".\")),\n );\n const instances = new Map<string, CompilerKeyedRowInstance>();\n for (let index = 0; index < rows.items.length; index += 1) {\n const descriptor = this.currentProps.create(rows.items[index], index);\n if (\n this.hasReactOwnedRows() &&\n !matchesCompilerHostElement(elements[index], descriptor, opaqueConditionalPaths)\n ) {\n this.cleanupHostScopes(instances);\n return false;\n }\n const scope = this.mountRowHostScope(elements[index], descriptor);\n if (this.currentProps.hostBlocks && !scope) {\n this.cleanupHostScopes(instances);\n return false;\n }\n const instance: CompilerKeyedRowInstance = {\n key: rows.keys[index],\n element: elements[index],\n scope: scope || undefined,\n values: this.hasReactOwnedRows()\n ? this.currentProps.bindings.map(() => UNSET_KEYED_ROW_BINDING)\n : readKeyedRowBindingValues(this.currentProps, rows.items[index], index),\n item: rows.items[index],\n index,\n conditionalValues: readKeyedRowConditionalValues(\n this.currentProps,\n rows.items[index],\n index,\n ),\n };\n if (this.hasReactOwnedRows()) {\n // React compares the next row against its previous virtual props, not\n // against DOM values patched by Farm between commits. Reapply every\n // binding after a structural React commit so both views converge\n // before direct same-key patches resume.\n applyKeyedRowBindings(this.currentProps, instance, rows.items[index], index);\n }\n instances.set(rows.keys[index], instance);\n }\n this.cleanupHostScopes();\n this.instances = instances;\n this.rebuildElementIndex(instances);\n this.pruneEventHandlers(rows.keys);\n this.pruneConditionalListeners(rows.keys);\n return true;\n }\n\n private hasUnsafeFallbackKeys(): boolean {\n try {\n return this.readRows(this.currentProps) === null;\n } catch {\n return true;\n }\n }\n\n private activateFallback(afterCommit?: () => void): void {\n if (!this.mounted || this.state.fallback || this.fallbackRequested) {\n afterCommit?.();\n return;\n }\n this.fallbackRequested = true;\n this.fallbackKeysWereUnsafe = this.hasUnsafeFallbackKeys();\n // One key change on entry: the compiled path mutated the DOM behind\n // React's back, so the first fallback render must rebuild the subtree.\n this.cleanupHostScopes();\n this.fallbackVersion += 1;\n this.setState({ fallback: true }, afterCommit);\n }\n\n private synchronizeReactOwnedRows(afterCommit?: () => void): void {\n this.forceUpdate(() => {\n if (!this.mounted) {\n afterCommit?.();\n return;\n }\n if (!this.adopt()) {\n this.activateFallback(afterCommit);\n return;\n }\n afterCommit?.();\n });\n }\n\n private notifyConditionalChanges(\n changes: readonly {\n key: string;\n id: number;\n item: unknown;\n index: number;\n }[],\n afterCommit?: () => void,\n ): void {\n if (changes.length === 0) {\n afterCommit?.();\n return;\n }\n let pending = changes.length;\n const committed = () => {\n pending -= 1;\n if (pending === 0) afterCommit?.();\n };\n // The normal row bindings above are patched synchronously. Flush the\n // React-owned conditional boundaries in the same turn as well so React\n // 18 cannot expose a transient row where text and branch disagree.\n flushSync(() => {\n for (const change of changes) {\n const refresh = this.conditionalListeners.get(change.key)?.get(change.id);\n if (refresh) refresh(change.item, change.index, committed);\n else committed();\n }\n });\n }\n\n private refreshDirtyBindings(\n dirtyState: ReadonlySet<number>,\n afterCommit?: () => void,\n ): boolean {\n if (\n !this.mounted ||\n !this.root ||\n this.state.fallback ||\n this.hasReactOwnedRows() ||\n this.currentProps.hostBlocks ||\n !this.currentProps.structureDependencies ||\n this.currentProps.structureDependencies.some((dependency) => dirtyState.has(dependency)) ||\n this.currentProps.bindings.some((binding) => binding.dependencies === undefined)\n ) {\n return false;\n }\n\n const affectedBindingIndices: number[] = [];\n for (\n let bindingIndex = 0;\n bindingIndex < this.currentProps.bindings.length;\n bindingIndex += 1\n ) {\n const dependencies = this.currentProps.bindings[bindingIndex].dependencies || [];\n if (dependencies.some((dependency) => dirtyState.has(dependency))) {\n affectedBindingIndices.push(bindingIndex);\n }\n }\n\n for (const instance of this.instances.values()) {\n for (const bindingIndex of affectedBindingIndices) {\n applyKeyedRowBinding(\n this.currentProps,\n instance,\n instance.item,\n instance.index,\n bindingIndex,\n );\n }\n }\n afterCommit?.();\n return true;\n }\n\n private reconcileStableRows(\n rows: { items: unknown[]; keys: string[] },\n afterCommit?: () => void,\n ): boolean {\n if (rows.keys.length !== this.instances.size) return false;\n let index = 0;\n for (const key of this.instances.keys()) {\n if (rows.keys[index] !== key) return false;\n index += 1;\n }\n\n const conditionalChanges: Array<{\n key: string;\n id: number;\n item: unknown;\n index: number;\n }> = [];\n for (index = 0; index < rows.items.length; index += 1) {\n const key = rows.keys[index];\n const existing = this.instances.get(key);\n if (!existing) return false;\n if (this.currentProps.hostBlocks) {\n const descriptor = this.currentProps.create(rows.items[index], index);\n if (!existing.scope?.update(descriptor)) {\n this.activateFallback(afterCommit);\n return true;\n }\n }\n applyKeyedRowBindings(this.currentProps, existing, rows.items[index], index);\n const conditionalValues = readKeyedRowConditionalValues(\n this.currentProps,\n rows.items[index],\n index,\n );\n for (const [id, values] of conditionalValues) {\n if (keyedRowConditionalChanged(existing.conditionalValues.get(id), values)) {\n conditionalChanges.push({ key, id, item: rows.items[index], index });\n }\n }\n existing.conditionalValues = conditionalValues;\n existing.item = rows.items[index];\n existing.index = index;\n }\n this.notifyConditionalChanges(conditionalChanges, afterCommit);\n return true;\n }\n\n private reconcileSingleRemoval(\n rows: { items: unknown[]; keys: string[] },\n afterCommit?: () => void,\n ): boolean {\n if (this.hasReactOwnedRows() || rows.keys.length + 1 !== this.instances.size) return false;\n const previousKeys = [...this.instances.keys()];\n let removedIndex = 0;\n while (\n removedIndex < rows.keys.length &&\n previousKeys[removedIndex] === rows.keys[removedIndex]\n ) {\n removedIndex += 1;\n }\n for (let index = removedIndex; index < rows.keys.length; index += 1) {\n if (previousKeys[index + 1] !== rows.keys[index]) return false;\n }\n\n const removedKey = previousKeys[removedIndex];\n const removed = this.instances.get(removedKey);\n if (!removed) return false;\n const conditionalChanges: Array<{\n key: string;\n id: number;\n item: unknown;\n index: number;\n }> = [];\n for (let index = 0; index < rows.items.length; index += 1) {\n const key = rows.keys[index];\n const existing = this.instances.get(key);\n if (!existing) return false;\n if (this.currentProps.hostBlocks) {\n const descriptor = this.currentProps.create(rows.items[index], index);\n if (!existing.scope?.update(descriptor)) {\n this.activateFallback(afterCommit);\n return true;\n }\n }\n applyKeyedRowBindings(this.currentProps, existing, rows.items[index], index);\n const conditionalValues = readKeyedRowConditionalValues(\n this.currentProps,\n rows.items[index],\n index,\n );\n for (const [id, values] of conditionalValues) {\n if (keyedRowConditionalChanged(existing.conditionalValues.get(id), values)) {\n conditionalChanges.push({ key, id, item: rows.items[index], index });\n }\n }\n existing.conditionalValues = conditionalValues;\n existing.item = rows.items[index];\n existing.index = index;\n }\n\n removed.scope?.cleanup();\n removed.element.remove();\n this.instances.delete(removedKey);\n this.eventHandlers.delete(removedKey);\n this.conditionalListeners.delete(removedKey);\n this.notifyConditionalChanges(conditionalChanges, afterCommit);\n return true;\n }\n\n private reconcile(afterCommit?: () => void): void {\n if (!this.mounted || !this.root) {\n afterCommit?.();\n return;\n }\n if (this.state.fallback) {\n // React owns the container while in fallback; keep the key stable so\n // updates reconcile in place instead of remounting the subtree (which\n // would wipe uncontrolled inputs, focus, and scroll). The exception\n // is duplicate runtime keys: React's reconciliation of a keyed list\n // with duplicates is unreliable, so any render touched by them (this\n // one, or the previously committed one) still remounts.\n const unsafeKeys = this.hasUnsafeFallbackKeys();\n if (unsafeKeys || this.fallbackKeysWereUnsafe) {\n this.fallbackVersion += 1;\n }\n this.fallbackKeysWereUnsafe = unsafeKeys;\n this.forceUpdate(afterCommit);\n return;\n }\n\n const rows = this.readRows(this.currentProps);\n if (!rows) {\n this.activateFallback(afterCommit);\n return;\n }\n\n if (this.hasReactOwnedRows()) {\n const previousKeys = [...this.instances.keys()];\n if (\n rows.keys.length !== previousKeys.length ||\n rows.keys.some((key, index) => key !== previousKeys[index])\n ) {\n this.synchronizeReactOwnedRows(afterCommit);\n return;\n }\n }\n\n if (rows.items.length === 0) {\n this.cleanupHostScopes();\n this.root.replaceChildren();\n this.instances = new Map();\n this.instancesByElement = new WeakMap();\n this.eventHandlers.clear();\n this.conditionalListeners.clear();\n afterCommit?.();\n return;\n }\n\n if (this.reconcileStableRows(rows, afterCommit)) return;\n if (this.reconcileSingleRemoval(rows, afterCommit)) return;\n\n const activeElement = this.root.ownerDocument.activeElement;\n const restoreFocus = Boolean(activeElement && this.root.contains(activeElement));\n const nextKeys = new Set(rows.keys);\n const hasSurvivingRows = rows.keys.some((key) => this.instances.has(key));\n const oldIndices = new Map<string, number>();\n if (hasSurvivingRows) {\n [...this.instances].forEach(([key], index) => oldIndices.set(key, index));\n }\n for (const [key, instance] of this.instances) {\n if (!nextKeys.has(key)) {\n instance.scope?.cleanup();\n if (hasSurvivingRows) instance.element.remove();\n }\n }\n\n const sequence = hasSurvivingRows\n ? rows.keys.map((key) => oldIndices.get(key) ?? -1)\n : rows.keys.map(() => -1);\n const stablePositions = hasSurvivingRows\n ? longestIncreasingSubsequencePositions(sequence)\n : new Set<number>();\n const nextInstances: CompilerKeyedRowInstance[] = [];\n const conditionalChanges: Array<{\n key: string;\n id: number;\n item: unknown;\n index: number;\n }> = [];\n for (let index = 0; index < rows.items.length; index += 1) {\n const key = rows.keys[index];\n const existing = this.instances.get(key);\n if (existing) {\n if (this.currentProps.hostBlocks) {\n const descriptor = this.currentProps.create(rows.items[index], index);\n if (!existing.scope?.update(descriptor)) {\n this.activateFallback(afterCommit);\n return;\n }\n }\n applyKeyedRowBindings(this.currentProps, existing, rows.items[index], index);\n const conditionalValues = readKeyedRowConditionalValues(\n this.currentProps,\n rows.items[index],\n index,\n );\n for (const [id, values] of conditionalValues) {\n if (keyedRowConditionalChanged(existing.conditionalValues.get(id), values)) {\n conditionalChanges.push({ key, id, item: rows.items[index], index });\n }\n }\n existing.conditionalValues = conditionalValues;\n existing.item = rows.items[index];\n existing.index = index;\n nextInstances.push(existing);\n continue;\n }\n const descriptor = this.currentProps.create(rows.items[index], index);\n const element = createCompilerHostElement(this.root.ownerDocument, descriptor);\n const scope = this.mountRowHostScope(element, descriptor);\n if (this.currentProps.hostBlocks && !scope) {\n for (const instance of nextInstances) {\n if (!this.instances.has(instance.key)) instance.scope?.cleanup();\n }\n this.activateFallback(afterCommit);\n return;\n }\n nextInstances.push({\n key,\n element,\n scope: scope || undefined,\n values: readKeyedRowBindingValues(this.currentProps, rows.items[index], index),\n item: rows.items[index],\n index,\n conditionalValues: readKeyedRowConditionalValues(\n this.currentProps,\n rows.items[index],\n index,\n ),\n });\n }\n\n if (!hasSurvivingRows) {\n const fragment = this.root.ownerDocument.createDocumentFragment();\n for (const instance of nextInstances) fragment.append(instance.element);\n this.root.replaceChildren(fragment);\n } else {\n let anchor: ChildNode | null = null;\n for (let index = nextInstances.length - 1; index >= 0; index -= 1) {\n const instance = nextInstances[index];\n if (sequence[index] < 0) {\n let start = index;\n while (start > 0 && sequence[start - 1] < 0) start -= 1;\n const fragment = this.root.ownerDocument.createDocumentFragment();\n for (let itemIndex = start; itemIndex <= index; itemIndex += 1) {\n fragment.append(nextInstances[itemIndex].element);\n }\n this.root.insertBefore(fragment, anchor);\n anchor = nextInstances[start].element;\n index = start;\n } else {\n if (!stablePositions.has(index) && instance.element.nextSibling !== anchor) {\n this.root.insertBefore(instance.element, anchor);\n }\n anchor = instance.element;\n }\n }\n }\n this.instances = new Map(nextInstances.map((instance) => [instance.key, instance]));\n this.rebuildElementIndex(this.instances);\n this.pruneEventHandlers(rows.keys);\n this.pruneConditionalListeners(rows.keys);\n if (\n restoreFocus &&\n activeElement?.isConnected &&\n activeElement.ownerDocument.activeElement !== activeElement &&\n \"focus\" in activeElement\n ) {\n (activeElement as HTMLElement).focus({ preventScroll: true });\n }\n this.notifyConditionalChanges(conditionalChanges, afterCommit);\n }\n\n private refresh: CompilerBlockRefresh = (afterCommit, dirtyState) => {\n if (dirtyState && this.refreshDirtyBindings(dirtyState, afterCommit)) return;\n this.reconcile(afterCommit);\n };\n\n private schedulePropSync(): void {\n if (this.propSyncQueued) return;\n this.propSyncQueued = true;\n queueMicrotask(() => {\n this.propSyncQueued = false;\n if (this.mounted && !this.state.fallback) this.reconcile();\n });\n }\n\n shouldComponentUpdate(nextProps: CompilerKeyedRowsBlockProps, nextState: State): boolean {\n const wasReactOwned = this.hasReactOwnedRows(this.currentProps);\n const willBeReactOwned = this.hasReactOwnedRows(nextProps);\n this.currentProps = nextProps;\n if (nextState.fallback || this.state.fallback) return true;\n if (wasReactOwned || willBeReactOwned) {\n // Parent prop updates and Fast Refresh definitions must pass through\n // React so event locations, static row markup, and proxy identities\n // cannot remain tied to an older render definition.\n this.eventHandlers.clear();\n return true;\n }\n this.schedulePropSync();\n return false;\n }\n\n componentDidUpdate(previousProps: CompilerKeyedRowsBlockProps): void {\n if (\n this.state.fallback ||\n previousProps === this.props ||\n (!this.hasReactOwnedRows(previousProps) && !this.hasReactOwnedRows(this.props)) ||\n this.adopt()\n ) {\n return;\n }\n this.activateFallback();\n }\n\n componentDidMount(): void {\n this.mounted = true;\n this.unsubscribe = owner.subscribe(this.props.id, this.refresh);\n if (!this.adopt()) this.activateFallback();\n }\n\n componentWillUnmount(): void {\n this.mounted = false;\n this.unsubscribe?.();\n this.root = null;\n this.cleanupHostScopes();\n this.instances.clear();\n this.instancesByElement = new WeakMap();\n this.eventHandlers.clear();\n this.conditionalListeners.clear();\n }\n\n render(): React.ReactNode {\n this.renderVersion += 1;\n const container = this.currentProps.render(this.rowEvent, this.rowConditional);\n if (!React.isValidElement(container) || typeof container.type !== \"string\") {\n throw new TypeError(\n `Compiled keyed rows ${this.currentProps.id} must own one host container.`,\n );\n }\n return React.cloneElement(container, {\n ...this.delegatedContainerProps(container),\n key: this.state.fallback ? `react-${this.fallbackVersion}` : \"compiled\",\n ref: this.captureRoot,\n } as React.Attributes);\n }\n }\n\n return FarmKeyedRowsBlock;\n}\n\nfunction createKeyedRangesBlockComponent(\n owner: Pick<ConditionalBlockOwner, \"subscribe\">,\n): React.ComponentType<CompilerKeyedRangesBlockProps> {\n interface State {\n fallback: boolean;\n }\n\n interface ReadRange {\n items: unknown[];\n keys: string[];\n }\n\n class FarmKeyedRangesBlock extends React.Component<CompilerKeyedRangesBlockProps, State> {\n static displayName = \"FarmCompiledKeyedRanges\";\n\n state: State = { fallback: false };\n private root: Element | null = null;\n private mounted = false;\n private fallbackRequested = false;\n private fallbackVersion = 0;\n private propFallbackQueued = false;\n private currentProps = this.props;\n private unsubscribe: (() => void) | undefined;\n private rangeInstances: Array<Map<string, CompilerKeyedRowInstance>> = [];\n private staticSegments: Element[][] = [];\n private readonly staticValues: unknown[] = [];\n\n private captureRoot = (root: Element | null) => {\n this.root = root;\n this.currentProps.rootRef?.(root);\n };\n\n private readRange(range: CompilerKeyedRange): ReadRange | null {\n const items = materializeIterable(range.items());\n const keys = items.map((item, index) => keyedRowIdentity(range.rowKey(item, index)));\n if (new Set(keys).size !== keys.length) return null;\n return { items, keys };\n }\n\n private readRanges(props: CompilerKeyedRangesBlockProps): ReadRange[] | null {\n const ranges: ReadRange[] = [];\n for (const range of props.ranges) {\n const rows = this.readRange(range);\n if (!rows) return null;\n ranges.push(rows);\n }\n return ranges;\n }\n\n private adopt(props: CompilerKeyedRangesBlockProps = this.currentProps): boolean {\n if (!this.root || !Number.isSafeInteger(props.trailing) || props.trailing < 0) return false;\n const rowsByRange = this.readRanges(props);\n if (!rowsByRange) return false;\n const elements = [...this.root.children];\n const staticSegments: Element[][] = [];\n const instancesByRange: Array<Map<string, CompilerKeyedRowInstance>> = [];\n let cursor = 0;\n\n for (let rangeIndex = 0; rangeIndex < props.ranges.length; rangeIndex += 1) {\n const range = props.ranges[rangeIndex];\n const rows = rowsByRange[rangeIndex];\n if (!Number.isSafeInteger(range.before) || range.before < 0) return false;\n const staticEnd = cursor + range.before;\n if (staticEnd > elements.length) return false;\n staticSegments.push(elements.slice(cursor, staticEnd));\n cursor = staticEnd;\n\n const rowEnd = cursor + rows.items.length;\n if (rowEnd > elements.length) return false;\n const instances = new Map<string, CompilerKeyedRowInstance>();\n for (let index = 0; index < rows.items.length; index += 1) {\n const element = elements[cursor + index];\n if (!matchesCompilerHostElement(element, range.create(rows.items[index], index))) {\n return false;\n }\n instances.set(rows.keys[index], {\n key: rows.keys[index],\n element,\n values: readKeyedRowBindingValues(range, rows.items[index], index),\n item: rows.items[index],\n index,\n conditionalValues: new Map(),\n });\n }\n instancesByRange.push(instances);\n cursor = rowEnd;\n }\n\n if (cursor + props.trailing !== elements.length) return false;\n staticSegments.push(elements.slice(cursor));\n this.staticSegments = staticSegments;\n this.rangeInstances = instancesByRange;\n if (!applyStaticRangeBindings(props.bindings, this.staticSegments, this.staticValues)) {\n this.rangeInstances = [];\n this.staticSegments = [];\n return false;\n }\n return true;\n }\n\n private anchorAfter(rangeIndex: number): ChildNode | null {\n for (let next = rangeIndex + 1; next < this.rangeInstances.length; next += 1) {\n const staticAnchor = this.staticSegments[next]?.[0];\n if (staticAnchor) return staticAnchor;\n const rowAnchor = this.rangeInstances[next].values().next().value?.element;\n if (rowAnchor) return rowAnchor;\n }\n return this.staticSegments[this.rangeInstances.length]?.[0] || null;\n }\n\n private reconcileRange(rangeIndex: number, rows: ReadRange): void {\n if (!this.root) return;\n const range = this.currentProps.ranges[rangeIndex];\n const previous = this.rangeInstances[rangeIndex];\n const oldIndices = new Map<string, number>();\n [...previous.keys()].forEach((key, index) => oldIndices.set(key, index));\n const nextKeys = new Set(rows.keys);\n for (const [key, instance] of previous) {\n if (!nextKeys.has(key)) instance.element.remove();\n }\n\n const sequence = rows.keys.map((key) => oldIndices.get(key) ?? -1);\n const stablePositions = longestIncreasingSubsequencePositions(sequence);\n const nextInstances: CompilerKeyedRowInstance[] = [];\n for (let index = 0; index < rows.items.length; index += 1) {\n const key = rows.keys[index];\n const existing = previous.get(key);\n if (existing) {\n applyKeyedRowBindings(range, existing, rows.items[index], index);\n existing.item = rows.items[index];\n existing.index = index;\n nextInstances.push(existing);\n continue;\n }\n const element = createCompilerHostElement(\n this.root.ownerDocument,\n range.create(rows.items[index], index),\n );\n nextInstances.push({\n key,\n element,\n values: readKeyedRowBindingValues(range, rows.items[index], index),\n item: rows.items[index],\n index,\n conditionalValues: new Map(),\n });\n }\n\n let anchor = this.anchorAfter(rangeIndex);\n for (let index = nextInstances.length - 1; index >= 0; index -= 1) {\n const instance = nextInstances[index];\n if (sequence[index] < 0) {\n this.root.insertBefore(instance.element, anchor);\n } else if (!stablePositions.has(index) && instance.element.nextSibling !== anchor) {\n this.root.insertBefore(instance.element, anchor);\n }\n anchor = instance.element;\n }\n this.rangeInstances[rangeIndex] = new Map(\n nextInstances.map((instance) => [instance.key, instance]),\n );\n }\n\n private reconcile(afterCommit?: () => void): void {\n if (!this.mounted || !this.root) {\n afterCommit?.();\n return;\n }\n if (this.state.fallback) {\n this.fallbackVersion += 1;\n this.forceUpdate(afterCommit);\n return;\n }\n const rowsByRange = this.readRanges(this.currentProps);\n if (!rowsByRange || rowsByRange.length !== this.rangeInstances.length) {\n this.activateFallback(afterCommit);\n return;\n }\n if (\n !applyStaticRangeBindings(\n this.currentProps.bindings,\n this.staticSegments,\n this.staticValues,\n )\n ) {\n this.activateFallback(afterCommit);\n return;\n }\n\n const activeElement = this.root.ownerDocument.activeElement;\n const restoreFocus = Boolean(activeElement && this.root.contains(activeElement));\n for (let rangeIndex = rowsByRange.length - 1; rangeIndex >= 0; rangeIndex -= 1) {\n this.reconcileRange(rangeIndex, rowsByRange[rangeIndex]);\n }\n if (\n restoreFocus &&\n activeElement?.isConnected &&\n activeElement.ownerDocument.activeElement !== activeElement &&\n \"focus\" in activeElement\n ) {\n (activeElement as HTMLElement).focus({ preventScroll: true });\n }\n afterCommit?.();\n }\n\n private refresh = (afterCommit?: () => void) => {\n this.reconcile(afterCommit);\n };\n\n private activateFallback(afterCommit?: () => void): void {\n if (!this.mounted || this.state.fallback || this.fallbackRequested) {\n afterCommit?.();\n return;\n }\n this.fallbackRequested = true;\n this.setState({ fallback: true }, afterCommit);\n }\n\n private schedulePropFallback(): void {\n if (this.propFallbackQueued) return;\n this.propFallbackQueued = true;\n queueMicrotask(() => {\n this.propFallbackQueued = false;\n if (this.mounted && !this.state.fallback) this.activateFallback();\n });\n }\n\n shouldComponentUpdate(nextProps: CompilerKeyedRangesBlockProps, nextState: State): boolean {\n this.currentProps = nextProps;\n if (nextState.fallback || this.state.fallback) return true;\n // Parent props and compatible Fast Refresh definitions can change static\n // siblings that are deliberately outside the range descriptors. Remount\n // this one container through React instead of retaining stale markup.\n this.schedulePropFallback();\n return false;\n }\n\n componentDidMount(): void {\n this.mounted = true;\n this.unsubscribe = owner.subscribe(this.props.id, this.refresh);\n if (!this.adopt()) this.activateFallback();\n }\n\n componentWillUnmount(): void {\n this.mounted = false;\n this.unsubscribe?.();\n this.root = null;\n this.rangeInstances = [];\n this.staticSegments = [];\n this.staticValues.length = 0;\n }\n\n render(): React.ReactNode {\n const container = this.currentProps.render();\n if (!React.isValidElement(container) || typeof container.type !== \"string\") {\n throw new TypeError(\n `Compiled keyed ranges ${this.currentProps.id} must own one host container.`,\n );\n }\n return React.cloneElement(container, {\n key: this.state.fallback ? `react-${this.fallbackVersion}` : \"compiled\",\n ref: this.captureRoot,\n } as React.Attributes);\n }\n }\n\n return FarmKeyedRangesBlock;\n}\n\nfunction createMixedRangesBlockComponent(\n owner: Pick<ConditionalBlockOwner, \"subscribe\">,\n): React.ComponentType<CompilerMixedRangesBlockProps> {\n interface State {\n fallback: boolean;\n }\n\n class FarmMixedRangesBlock extends React.Component<CompilerMixedRangesBlockProps, State> {\n static displayName = \"FarmCompiledMixedRanges\";\n\n state: State = { fallback: false };\n private root: Element | null = null;\n private mounted = false;\n private fallbackRequested = false;\n private fallbackVersion = 0;\n private propFallbackQueued = false;\n private currentProps = this.props;\n private controller: CompilerNestedMixedRanges | null = null;\n private fallbackUnsubscribers: Array<() => void> = [];\n\n private captureRoot = (root: Element | null) => {\n this.root = root;\n this.currentProps.rootRef?.(root);\n };\n\n private clearFallbackSubscriptions(): void {\n for (const unsubscribe of this.fallbackUnsubscribers) unsubscribe();\n this.fallbackUnsubscribers = [];\n }\n\n private subscribeFallbackBlocks(): void {\n this.clearFallbackSubscriptions();\n const descriptor = this.currentProps.create();\n const ids = new Set<number>();\n collectCompilerHostBlockIds(descriptor, ids);\n for (const id of ids) {\n this.fallbackUnsubscribers.push(\n owner.subscribe(id, (afterCommit) => {\n if (!this.mounted || !this.state.fallback) {\n afterCommit?.();\n return;\n }\n this.fallbackVersion += 1;\n this.forceUpdate(afterCommit);\n }),\n );\n }\n }\n\n private adopt(): boolean {\n if (!this.root) return false;\n const descriptor = this.currentProps.create();\n const block = descriptor.block;\n if (block?.kind !== \"mixed-ranges\" || block.id !== this.currentProps.id) return false;\n const controller = new CompilerNestedMixedRanges(\n owner,\n this.root,\n descriptor,\n block,\n this.activateFallback,\n );\n try {\n if (!controller.adopt()) {\n controller.cleanup();\n return false;\n }\n } catch (error) {\n controller.cleanup();\n throw error;\n }\n this.controller = controller;\n return true;\n }\n\n private activateFallback = (afterCommit?: () => void): void => {\n if (!this.mounted || this.state.fallback || this.fallbackRequested) {\n afterCommit?.();\n return;\n }\n this.fallbackRequested = true;\n this.controller?.cleanup();\n this.controller = null;\n this.fallbackVersion += 1;\n this.setState({ fallback: true }, () => {\n this.subscribeFallbackBlocks();\n afterCommit?.();\n });\n };\n\n private schedulePropFallback(): void {\n if (this.propFallbackQueued) return;\n this.propFallbackQueued = true;\n queueMicrotask(() => {\n this.propFallbackQueued = false;\n if (this.mounted && !this.state.fallback) this.activateFallback();\n });\n }\n\n shouldComponentUpdate(nextProps: CompilerMixedRangesBlockProps, nextState: State): boolean {\n this.currentProps = nextProps;\n if (nextState.fallback || this.state.fallback) return true;\n this.schedulePropFallback();\n return false;\n }\n\n componentDidMount(): void {\n this.mounted = true;\n if (!this.adopt()) this.activateFallback();\n }\n\n componentDidUpdate(): void {\n if (this.state.fallback) this.subscribeFallbackBlocks();\n }\n\n componentWillUnmount(): void {\n this.mounted = false;\n this.controller?.cleanup();\n this.controller = null;\n this.clearFallbackSubscriptions();\n this.root = null;\n }\n\n render(): React.ReactNode {\n const container = this.currentProps.render();\n if (!React.isValidElement(container) || typeof container.type !== \"string\") {\n throw new TypeError(\n `Compiled mixed ranges ${this.currentProps.id} must own one host container.`,\n );\n }\n return React.cloneElement(container, {\n key: this.state.fallback ? `react-${this.fallbackVersion}` : \"compiled\",\n ref: this.captureRoot,\n } as React.Attributes);\n }\n }\n\n return FarmMixedRangesBlock;\n}\n\nfunction createComponentBlockComponent(\n owner: Pick<ConditionalBlockOwner, \"subscribe\">,\n): React.ComponentType<CompilerComponentBlockProps> {\n class FarmComponentBlock extends React.Component<CompilerComponentBlockProps> {\n static displayName = \"FarmCompiledComponentIsland\";\n\n private unsubscribe: (() => void) | undefined;\n\n private refresh = (afterCommit?: () => void) => {\n this.forceUpdate(afterCommit);\n };\n\n private subscribe(): void {\n this.unsubscribe = owner.subscribe(this.props.id, this.refresh);\n }\n\n componentDidMount(): void {\n this.subscribe();\n }\n\n componentDidUpdate(previous: CompilerComponentBlockProps): void {\n if (previous.id === this.props.id) return;\n this.unsubscribe?.();\n this.subscribe();\n }\n\n componentWillUnmount(): void {\n this.unsubscribe?.();\n }\n\n render(): React.ReactNode {\n return this.props.render();\n }\n }\n\n return FarmComponentBlock;\n}\n\n/**\n * Runtime target emitted by the AOT transform.\n *\n * React owns initial placement, SSR, hydration, props, and event semantics.\n * Compiler cells own local updates and precomputed DOM paths. A proven host-only\n * keyed container may transfer its child-row ownership after mount.\n */\nexport function createCompiledComponent<Props>(\n definition: CompiledComponentDefinition<Props>,\n): React.ComponentType<Props> {\n const stateSignature = definition.stateSignature || String(definition.initialize.length);\n if (definition.hmrId) {\n const registry = getCompilerHmrRegistry();\n const existing = registry.get(definition.hmrId);\n if (existing?.stateSignature === stateSignature) {\n existing.definition.current = definition as CompiledComponentDefinition<unknown>;\n existing.component.displayName = `FarmCompiled(${definition.displayName})`;\n for (const refresh of existing.refreshListeners) refresh();\n return existing.component as React.ComponentType<Props>;\n }\n }\n\n const definitionReference: CompiledDefinitionReference<Props> = { current: definition };\n const refreshListeners = new Set<() => void>();\n\n class FarmCompiledComponent extends React.Component<Props, Record<string, never>, boolean> {\n private root: Element | null = null;\n private mounted = false;\n private flushQueued = false;\n private bindingError: unknown;\n private hasBindingError = false;\n private inputSelection: InputSelectionSnapshot | null = null;\n private readonly dirtyState = new Set<number>();\n private indexedDefinition: CompiledComponentDefinition<Props> | null = null;\n private staticBindingsByDependency: CompilerBinding<Props>[][] = [];\n private blockBindingsByDependency: CompilerConditionalBlockBinding[][] = [];\n private readonly blockBindings = new Map<number, CompilerConditionalBlockBinding>();\n private trackedBindingsByDependency: Set<CompilerBinding<Props>>[] = [];\n private readonly trackedDependenciesByBinding = new Map<CompilerBinding<Props>, Set<number>>();\n private readonly bindingValues = new Map<CompilerBinding<Props>, unknown>();\n private activeBinding: CompilerBinding<Props> | null = null;\n private activeDependencies: Set<number> | null = null;\n private readonly cells: RuntimeCell[];\n private readonly propCellOffset: number;\n private renderedDefinition: CompiledComponentDefinition<Props> | null = null;\n private renderedElement: React.ReactElement | null = null;\n private readonly blockRefreshListeners = new Map<number, CompilerBlockRefresh>();\n private readonly blockRoots = new Map<number, Element>();\n private readonly blockRootElements = new Set<Element>();\n private readonly bindingTargets = new Map<number, Element>();\n private readonly bindingTargetRefs = new Map<number, React.RefCallback<Element>>();\n private readonly blockRuntime: CompilerBlockRuntime;\n\n constructor(props: Props) {\n super(props);\n const initialState = definitionReference.current.initialize(props);\n const initialProps = definitionReference.current.readProps?.(props) || [];\n this.propCellOffset = initialState.length;\n this.cells = [...initialState, ...initialProps].map((initialValue, index) => {\n let value = initialValue;\n const pending: PendingCellUpdate[] = [];\n return {\n get: () => {\n if (this.activeBinding && this.activeDependencies) {\n this.activeDependencies.add(index);\n }\n return value;\n },\n set: (next) => {\n pending.push({ kind: \"state\", update: next });\n this.scheduleBindingFlush(index);\n },\n replace: (next) => {\n pending.push({ kind: \"value\", value: next });\n },\n flush: () => {\n if (pending.length === 0) return false;\n const previous = value;\n for (const next of pending.splice(0)) {\n if (next.kind === \"value\") {\n value = next.value;\n } else {\n value = typeof next.update === \"function\" ? next.update(value) : next.update;\n }\n }\n return !Object.is(previous, value);\n },\n };\n });\n this.blockRuntime = {\n Conditional: createConditionalBlockComponent({\n setRoot: (id, root) => this.setBlockRoot(id, root),\n subscribe: (id, refresh) => this.subscribeToBlock(id, refresh),\n }),\n HostConditional: createHostConditionalBlockComponent({\n subscribe: (id, refresh) => this.subscribeToBlock(id, refresh),\n }),\n ConditionalRanges: createConditionalRangesBlockComponent({\n subscribe: (id, refresh) => this.subscribeToBlock(id, refresh),\n }),\n KeyedList: createKeyedListBlockComponent({\n subscribe: (id, refresh) => this.subscribeToBlock(id, refresh),\n }),\n KeyedRows: createKeyedRowsBlockComponent({\n subscribe: (id, refresh) => this.subscribeToBlock(id, refresh),\n }),\n KeyedRanges: createKeyedRangesBlockComponent({\n subscribe: (id, refresh) => this.subscribeToBlock(id, refresh),\n }),\n MixedRanges: createMixedRangesBlockComponent({\n subscribe: (id, refresh) => this.subscribeToBlock(id, refresh),\n }),\n Component: createComponentBlockComponent({\n subscribe: (id, refresh) => this.subscribeToBlock(id, refresh),\n }),\n target: (id) => this.bindingTarget(id),\n };\n }\n\n private usesHybridReactivity(): boolean {\n return definitionReference.current.reactivity === \"hybrid\";\n }\n\n private canReuseRenderedElement(\n currentDefinition: CompiledComponentDefinition<Props>,\n propValues: readonly unknown[] | null,\n ): boolean {\n return Boolean(\n this.mounted &&\n propValues &&\n propValues.every(isCompilerPrimitive) &&\n this.renderedDefinition === currentDefinition &&\n this.renderedElement,\n );\n }\n\n private renderCellsForProps(propValues: readonly unknown[] | null): {\n cells: readonly CompilerCell[];\n commit(): void;\n } {\n if (!propValues) return { cells: this.cells, commit: () => undefined };\n // A full React render must see its own prop snapshot, including inside\n // nested block render callbacks. The view switches to committed cells\n // only when its root ref is attached, so an abandoned render cannot\n // publish values or replace the reusable element.\n let committed = false;\n const cells: CompilerCell[] = this.cells.slice(0, this.propCellOffset);\n for (let propIndex = 0; propIndex < propValues.length; propIndex += 1) {\n const cell = this.cells[this.propCellOffset + propIndex];\n if (!cell) continue;\n cells.push({\n get: () => (committed ? cell.get() : propValues[propIndex]),\n set: (next) => cell.set(next),\n });\n }\n return {\n cells,\n commit: () => {\n committed = true;\n },\n };\n }\n\n private tracksBinding(\n binding: Exclude<CompilerBinding<Props>, CompilerConditionalBlockBinding>,\n ): boolean {\n return this.usesHybridReactivity() && binding.tracking === \"dynamic\";\n }\n\n private ensureBindingIndex(): void {\n const currentDefinition = definitionReference.current;\n if (this.indexedDefinition === currentDefinition) return;\n\n this.indexedDefinition = currentDefinition;\n this.staticBindingsByDependency = Array.from({ length: this.cells.length }, () => []);\n this.blockBindingsByDependency = Array.from({ length: this.cells.length }, () => []);\n this.trackedBindingsByDependency = Array.from(\n { length: this.cells.length },\n () => new Set<CompilerBinding<Props>>(),\n );\n this.blockBindings.clear();\n this.trackedDependenciesByBinding.clear();\n this.bindingValues.clear();\n\n for (const binding of currentDefinition.bindings) {\n if (binding.kind === \"block\") this.blockBindings.set(binding.id, binding);\n for (const dependency of binding.dependencies) {\n if (dependency < 0 || dependency >= this.cells.length) continue;\n if (binding.kind === \"block\") {\n this.blockBindingsByDependency[dependency].push(binding);\n } else if (!this.tracksBinding(binding)) {\n this.staticBindingsByDependency[dependency].push(binding);\n }\n }\n }\n }\n\n private updateTrackedDependencies(\n binding: CompilerBinding<Props>,\n nextDependencies: Set<number>,\n ): void {\n const previousDependencies = this.trackedDependenciesByBinding.get(binding);\n if (previousDependencies) {\n for (const dependency of previousDependencies) {\n if (!nextDependencies.has(dependency)) {\n this.trackedBindingsByDependency[dependency]?.delete(binding);\n }\n }\n }\n for (const dependency of nextDependencies) {\n if (!previousDependencies?.has(dependency)) {\n this.trackedBindingsByDependency[dependency]?.add(binding);\n }\n }\n this.trackedDependenciesByBinding.set(binding, nextDependencies);\n }\n\n private readBinding(binding: Exclude<CompilerBinding<Props>, CompilerConditionalBlockBinding>) {\n if (!this.tracksBinding(binding)) return binding.read(this.props, this.cells);\n\n const previousBinding = this.activeBinding;\n const previousDependencies = this.activeDependencies;\n const nextDependencies = new Set<number>();\n this.activeBinding = binding;\n this.activeDependencies = nextDependencies;\n try {\n return binding.read(this.props, this.cells);\n } finally {\n this.activeBinding = previousBinding;\n this.activeDependencies = previousDependencies;\n this.updateTrackedDependencies(binding, nextDependencies);\n }\n }\n\n private bindingValue(\n binding: Exclude<CompilerBinding<Props>, CompilerConditionalBlockBinding>,\n value: unknown,\n ): unknown {\n return binding.kind === \"text\" ? renderTextValue(value) : value;\n }\n\n private primeHybridBindings(): void {\n if (!this.usesHybridReactivity()) return;\n for (const binding of definitionReference.current.bindings) {\n if (binding.kind === \"block\") continue;\n if (!this.tracksBinding(binding)) continue;\n const value = this.readBinding(binding);\n this.bindingValues.set(binding, this.bindingValue(binding, value));\n }\n }\n\n private captureRoot = (root: Element | null) => {\n this.root = root;\n };\n\n private refreshDefinition = () => {\n if (this.mounted) this.forceUpdate();\n };\n\n private bindingTarget(id: number): React.RefCallback<Element> {\n const existing = this.bindingTargetRefs.get(id);\n if (existing) return existing;\n const capture: React.RefCallback<Element> = (element) => {\n if (element) {\n this.bindingTargets.set(id, element);\n } else {\n this.bindingTargets.delete(id);\n }\n };\n this.bindingTargetRefs.set(id, capture);\n return capture;\n }\n\n private captureInputSelection(): void {\n const active = this.root?.ownerDocument.activeElement;\n if (\n !isSelectableTextControl(active) ||\n !this.root?.contains(active) ||\n active.selectionStart === null ||\n active.selectionEnd === null\n ) {\n return;\n }\n this.inputSelection = {\n element: active,\n start: active.selectionStart,\n end: active.selectionEnd,\n direction: active.selectionDirection || \"none\",\n };\n }\n\n private restoreInputSelection(snapshot: InputSelectionSnapshot | null): void {\n if (\n !snapshot ||\n !snapshot.element.isConnected ||\n snapshot.element.ownerDocument.activeElement !== snapshot.element\n ) {\n return;\n }\n snapshot.element.setSelectionRange(snapshot.start, snapshot.end, snapshot.direction);\n }\n\n private setBlockRoot(id: number, root: Element | null): void {\n const previous = this.blockRoots.get(id);\n if (previous) this.blockRootElements.delete(previous);\n if (root) {\n this.blockRoots.set(id, root);\n this.blockRootElements.add(root);\n } else {\n this.blockRoots.delete(id);\n }\n }\n\n private subscribeToBlock(id: number, refresh: CompilerBlockRefresh): () => void {\n this.blockRefreshListeners.set(id, refresh);\n return () => {\n if (this.blockRefreshListeners.get(id) === refresh) {\n this.blockRefreshListeners.delete(id);\n }\n };\n }\n\n private scheduleBindingFlush(index: number): void {\n this.dirtyState.add(index);\n this.captureInputSelection();\n if (!this.mounted || this.flushQueued) return;\n this.flushQueued = true;\n queueMicrotask(() => {\n this.flushQueued = false;\n this.flushBindingUpdates();\n });\n }\n\n private flushBindingUpdates(): void {\n const inputSelection = this.inputSelection;\n this.inputSelection = null;\n if (!this.mounted) return;\n const dirty = new Set<number>();\n for (const index of this.dirtyState) {\n if (this.cells[index]?.flush()) dirty.add(index);\n }\n this.dirtyState.clear();\n if (dirty.size === 0) return;\n try {\n this.ensureBindingIndex();\n const affectedBlockIds = new Set<number>();\n const affectedBindings = new Set<CompilerBinding<Props>>();\n\n for (const dependency of dirty) {\n for (const binding of this.blockBindingsByDependency[dependency] || []) {\n affectedBlockIds.add(binding.id);\n }\n for (const binding of this.staticBindingsByDependency[dependency] || []) {\n affectedBindings.add(binding);\n }\n if (this.usesHybridReactivity()) {\n for (const binding of this.trackedBindingsByDependency[dependency] || []) {\n affectedBindings.add(binding);\n }\n }\n }\n\n const hasAffectedMountedAncestor = (binding: CompilerConditionalBlockBinding): boolean => {\n let parent = binding.parent;\n while (parent !== undefined) {\n if (affectedBlockIds.has(parent) && this.blockRefreshListeners.has(parent)) {\n return true;\n }\n parent = this.blockBindings.get(parent)?.parent;\n }\n return false;\n };\n\n const blockRefreshes = [...affectedBlockIds]\n .map((id) => {\n const binding = this.blockBindings.get(id);\n const refresh = this.blockRefreshListeners.get(id);\n return binding && refresh && !hasAffectedMountedAncestor(binding) ? refresh : undefined;\n })\n .filter((refresh): refresh is CompilerBlockRefresh => refresh !== undefined);\n\n for (const binding of affectedBindings) {\n if (binding.kind !== \"block\") this.applyBinding(binding);\n }\n\n let pendingBlockCommits = blockRefreshes.length;\n for (const refresh of blockRefreshes) {\n refresh(() => {\n pendingBlockCommits -= 1;\n if (pendingBlockCommits === 0) this.restoreInputSelection(inputSelection);\n }, dirty);\n }\n if (blockRefreshes.length === 0) this.restoreInputSelection(inputSelection);\n } catch (error) {\n this.bindingError = error;\n this.hasBindingError = true;\n this.forceUpdate();\n }\n }\n\n private applyBinding(binding: CompilerBinding<Props>, force = false): void {\n if (!this.root || binding.kind === \"block\") return;\n const target =\n binding.target === undefined\n ? findBindingTarget(this.root, binding.path, this.blockRootElements)\n : binding.path.length === 0\n ? this.root\n : this.bindingTargets.get(binding.target) || null;\n if (!target) return;\n const value = this.readBinding(binding);\n const comparableValue = this.bindingValue(binding, value);\n if (!force && this.bindingValues.has(binding)) {\n if (Object.is(this.bindingValues.get(binding), comparableValue)) return;\n }\n if (binding.kind === \"text\") {\n target.textContent = comparableValue as string;\n } else if (binding.kind === \"style\") {\n updateStyle(target, binding.name, value);\n } else {\n updateAttribute(target, binding.name, value);\n }\n this.bindingValues.set(binding, comparableValue);\n }\n\n componentDidMount(): void {\n this.mounted = true;\n refreshListeners.add(this.refreshDefinition);\n this.ensureBindingIndex();\n this.primeHybridBindings();\n }\n\n getSnapshotBeforeUpdate(): boolean {\n const currentDefinition = definitionReference.current;\n const propValues = currentDefinition.readProps?.(this.props) || null;\n return this.canReuseRenderedElement(currentDefinition, propValues);\n }\n\n componentDidUpdate(\n _previousProps: Readonly<Props>,\n _previousState: Readonly<Record<string, never>>,\n reusedRenderedElement = false,\n ): void {\n const propValues = definitionReference.current.readProps?.(this.props) || null;\n if (propValues) {\n if (reusedRenderedElement) this.captureInputSelection();\n for (let propIndex = 0; propIndex < propValues.length; propIndex += 1) {\n const cellIndex = this.propCellOffset + propIndex;\n const cell = this.cells[cellIndex];\n if (!cell) continue;\n cell.replace(propValues[propIndex]);\n if (reusedRenderedElement) {\n this.dirtyState.add(cellIndex);\n } else {\n // React already reconciled a full render using the pending prop\n // snapshot. Commit the cell without scheduling duplicate work.\n cell.flush();\n }\n }\n this.flushBindingUpdates();\n return;\n }\n\n // Hand-authored definitions without prop cells retain the original\n // React-owned prop reconciliation behavior.\n this.ensureBindingIndex();\n for (const binding of definitionReference.current.bindings) {\n if (binding.kind !== \"block\") this.applyBinding(binding, true);\n }\n }\n\n componentWillUnmount(): void {\n this.mounted = false;\n this.root = null;\n this.dirtyState.clear();\n this.inputSelection = null;\n this.blockRefreshListeners.clear();\n this.blockRoots.clear();\n this.blockRootElements.clear();\n this.bindingTargets.clear();\n this.bindingTargetRefs.clear();\n this.indexedDefinition = null;\n this.staticBindingsByDependency = [];\n this.blockBindingsByDependency = [];\n this.blockBindings.clear();\n this.trackedBindingsByDependency = [];\n this.trackedDependenciesByBinding.clear();\n this.bindingValues.clear();\n this.activeBinding = null;\n this.activeDependencies = null;\n refreshListeners.delete(this.refreshDefinition);\n }\n\n render(): React.ReactNode {\n if (this.hasBindingError) throw this.bindingError;\n const currentDefinition = definitionReference.current;\n const propValues = currentDefinition.readProps?.(this.props) || null;\n if (this.canReuseRenderedElement(currentDefinition, propValues)) {\n return this.renderedElement;\n }\n\n const renderCells = this.renderCellsForProps(propValues);\n const element = currentDefinition.render(this.props, renderCells.cells, this.blockRuntime);\n if (!React.isValidElement(element)) {\n throw new TypeError(\n `Compiled component ${currentDefinition.displayName} must return one host element.`,\n );\n }\n let renderedElement: React.ReactElement;\n const captureCommittedRoot = (root: Element | null) => {\n this.captureRoot(root);\n if (!root) return;\n renderCells.commit();\n this.renderedDefinition = currentDefinition;\n this.renderedElement = renderedElement;\n };\n if (element.type === this.blockRuntime.KeyedRanges) {\n renderedElement = React.cloneElement(\n element as React.ReactElement<CompilerKeyedRangesBlockProps>,\n {\n rootRef: captureCommittedRoot,\n },\n );\n } else if (element.type === this.blockRuntime.ConditionalRanges) {\n renderedElement = React.cloneElement(\n element as React.ReactElement<CompilerConditionalRangesBlockProps>,\n { rootRef: captureCommittedRoot },\n );\n } else if (element.type === this.blockRuntime.MixedRanges) {\n renderedElement = React.cloneElement(\n element as React.ReactElement<CompilerMixedRangesBlockProps>,\n {\n rootRef: captureCommittedRoot,\n },\n );\n } else if (typeof element.type !== \"string\") {\n throw new TypeError(\n `Compiled component ${currentDefinition.displayName} must return one host element.`,\n );\n } else {\n renderedElement = React.cloneElement(element, {\n ref: captureCommittedRoot,\n } as React.Attributes);\n }\n return renderedElement;\n }\n }\n\n (FarmCompiledComponent as React.ComponentType<Props>).displayName =\n `FarmCompiled(${definition.displayName})`;\n const component = FarmCompiledComponent as React.ComponentType<Props>;\n\n if (definition.hmrId) {\n getCompilerHmrRegistry().set(definition.hmrId, {\n component: component as React.ComponentType<unknown>,\n definition: definitionReference as CompiledDefinitionReference<unknown>,\n refreshListeners,\n stateSignature,\n });\n }\n\n return component;\n}\n"]}
|