@weshell/chess.js 0.0.0-stage → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/LICENSE +23 -0
  2. package/README.md +87 -2
  3. package/dist/attack.d.ts +32 -0
  4. package/dist/attack.d.ts.map +1 -0
  5. package/dist/attack.js +103 -0
  6. package/dist/attack.js.map +1 -0
  7. package/dist/board.d.ts +33 -0
  8. package/dist/board.d.ts.map +1 -0
  9. package/dist/board.js +49 -0
  10. package/dist/board.js.map +1 -0
  11. package/dist/chess.d.ts +232 -0
  12. package/dist/chess.d.ts.map +1 -0
  13. package/dist/chess.js +1335 -0
  14. package/dist/chess.js.map +1 -0
  15. package/dist/fen.d.ts +38 -0
  16. package/dist/fen.d.ts.map +1 -0
  17. package/dist/fen.js +308 -0
  18. package/dist/fen.js.map +1 -0
  19. package/dist/hash.d.ts +34 -0
  20. package/dist/hash.d.ts.map +1 -0
  21. package/dist/hash.js +98 -0
  22. package/dist/hash.js.map +1 -0
  23. package/dist/index.d.ts +3 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +2 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/move.d.ts +55 -0
  28. package/dist/move.d.ts.map +1 -0
  29. package/dist/move.js +79 -0
  30. package/dist/move.js.map +1 -0
  31. package/dist/movegen.d.ts +34 -0
  32. package/dist/movegen.d.ts.map +1 -0
  33. package/dist/movegen.js +242 -0
  34. package/dist/movegen.js.map +1 -0
  35. package/dist/node.d.ts +8 -0
  36. package/dist/node.d.ts.map +1 -0
  37. package/dist/node.js +2 -0
  38. package/dist/node.js.map +1 -0
  39. package/dist/notation.d.ts +33 -0
  40. package/dist/notation.d.ts.map +1 -0
  41. package/dist/notation.js +257 -0
  42. package/dist/notation.js.map +1 -0
  43. package/dist/pgn.d.ts +12 -0
  44. package/dist/pgn.d.ts.map +1 -0
  45. package/dist/pgn.js +1347 -0
  46. package/dist/pgn.js.map +1 -0
  47. package/dist/types.d.ts +118 -0
  48. package/dist/types.d.ts.map +1 -0
  49. package/dist/types.js +237 -0
  50. package/dist/types.js.map +1 -0
  51. package/package.json +45 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chess.js","sourceRoot":"","sources":["../src/chess.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAWhC,OAAO,EACL,MAAM,EACN,IAAI,EACJ,KAAK,EACL,gBAAgB,EAChB,KAAK,EACL,eAAe,EACf,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,MAAM,EACN,MAAM,EACN,IAAI,EACJ,gBAAgB,EAChB,KAAK,EACL,YAAY,EACZ,OAAO,EACP,KAAK,GACN,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtE,OAAO,EACL,WAAW,EACX,WAAW,EACX,KAAK,EACL,QAAQ,EACR,QAAQ,GACT,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AACzF,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,gDAAgD;AAEhD,OAAO,EACL,KAAK,EACL,KAAK,EACL,IAAI,EACJ,MAAM,EACN,MAAM,EACN,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,gBAAgB,EAChB,OAAO,EACP,gBAAgB,GACjB,MAAM,YAAY,CAAA;AAInB,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,yBAAyB;AAEzB,MAAM,OAAO,KAAK;IAsBhB,YAAY,GAAG,GAAG,gBAAgB,EAAE,EAAE,cAAc,GAAG,KAAK,EAAE,GAAG,EAAE;QArB3D,WAAM,GAAG,IAAI,KAAK,CAAQ,GAAG,CAAC,CAAA;QAC9B,UAAK,GAAU,KAAK,CAAA;QACpB,YAAO,GAAkC,EAAE,CAAA;QAC3C,WAAM,GAA0B,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAA;QACtD,cAAS,GAAG,CAAC,CAAC,CAAA;QACd,eAAU,GAAG,CAAC,CAAA;QACd,gBAAW,GAAG,CAAC,CAAA;QACf,aAAQ,GAAc,EAAE,CAAA;QACxB,cAAS,GAA2B,EAAE,CAAA;QACtC,cAAS,GAA0B,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;QACzD,oEAAoE;QAC5D,mBAAc,GAAuC;YAC3D,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;YACjC,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;SAClC,CAAA;QAEO,UAAK,GAAG,EAAE,CAAA;QAElB,0EAA0E;QAClE,mBAAc,GAAG,IAAI,GAAG,EAAkB,CAAA;QAGhD,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,CAAC,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,EAAE,eAAe,GAAG,KAAK,EAAE,GAAG,EAAE;QACpC,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,CAAQ,GAAG,CAAC,CAAA;QACnC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAA;QACpC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;QAC/B,IAAI,CAAC,cAAc,GAAG;YACpB,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;YACjC,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;SAClC,CAAA;QACD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;QACtB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;QACnB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAA;QACpB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAA;QAClB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;QACnB,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,eAAe,EAAE,CAAA;QACtE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;QAChC,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAA;QAE/C;;;;WAIG;QACH,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAA;QAC5B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;IAC5B,CAAC;IAED,IAAI,CAAC,GAAW,EAAE,EAAE,cAAc,GAAG,KAAK,EAAE,eAAe,GAAG,KAAK,EAAE,GAAG,EAAE;QACxE,IAAI,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAE7B,qCAAqC;QACrC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;YACxC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACxE,CAAC;QAED,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAEzB,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;YACtC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAA;YACxB,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QAC1B,IAAI,MAAM,GAAG,CAAC,CAAA;QAEd,IAAI,CAAC,KAAK,CAAC,EAAE,eAAe,EAAE,CAAC,CAAA;QAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YAEhC,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;gBAClB,MAAM,IAAI,CAAC,CAAA;YACb,CAAC;iBAAM,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;YAC/B,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAA;gBACzC,IAAI,CAAC,IAAI,CACP,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,EAAiB,EAAE,KAAK,EAAE,EACnD,SAAS,CAAC,MAAM,CAAC,CAClB,CAAA;gBACD,MAAM,EAAE,CAAA;YACV,CAAC;QACH,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAU,CAAA;QAE/B;;;;WAIG;QACH,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QAE7B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAW,CAAC,CAAA;QACtE,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QACzC,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QAE1C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;QAChC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;QACtB,IAAI,CAAC,iBAAiB,EAAE,CAAA;IAC1B,CAAC;IAED;;;;;;;;;;;OAWG;IACK,aAAa,CAAC,QAAgB;QACpC,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QACnE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAA;QAChC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,aAAa,CAAA;IAC5C,CAAC;IAED,GAAG,CAAC,EACF,oBAAoB,GAAG,KAAK,MACU,EAAE;QACxC,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAEvC;;;;;WAKG;QACH,MAAM,QAAQ,GAAG,eAAe,CAC9B,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,cAAc,CACpB,IAAI,GAAG,CAAA;QAER,IAAI,QAAQ,GAAG,GAAG,CAAA;QAClB;;;WAGG;QACH,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;YAC7B,IAAI,oBAAoB,EAAE,CAAC;gBACzB,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACtC,CAAC;iBAAM,CAAC;gBACN,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;gBACxE,MAAM,OAAO,GAAG,CAAC,aAAa,GAAG,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC,CAAA;gBAEtD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;oBAC7B,+BAA+B;oBAC/B,IAAI,MAAM,GAAG,IAAI,EAAE,CAAC;wBAClB,SAAQ;oBACV,CAAC;oBAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;oBAExB,iDAAiD;oBACjD,IACE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,KAAK,KAAK;wBACpC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,KAAK,IAAI,EAClC,CAAC;wBACD,oEAAoE;wBACpE,IAAI,CAAC,SAAS,CAAC;4BACb,KAAK;4BACL,IAAI,EAAE,MAAM;4BACZ,EAAE,EAAE,IAAI,CAAC,SAAS;4BAClB,KAAK,EAAE,IAAI;4BACX,QAAQ,EAAE,IAAI;4BACd,KAAK,EAAE,IAAI,CAAC,UAAU;yBACvB,CAAC,CAAA;wBACF,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;wBAC5C,IAAI,CAAC,SAAS,EAAE,CAAA;wBAEhB,gEAAgE;wBAChE,IAAI,OAAO,EAAE,CAAC;4BACZ,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;4BACpC,MAAK;wBACP,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,GAAG;YACH,IAAI,CAAC,KAAK;YACV,QAAQ;YACR,QAAQ;YACR,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,WAAW;SACjB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACb,CAAC;IAEO,SAAS,CAAC,CAAS;QACzB,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IACjC,CAAC;IAEO,MAAM;QACZ,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC9B,CAAC;IAEO,YAAY;QAClB,OAAO,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACpC,CAAC;IAEO,YAAY;QAClB,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IAC7E,CAAC;IAED;;;;;OAKG;IACK,YAAY,CAAC,GAAW;QAC9B,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,OAAM;QAEpC,IAAI,GAAG,KAAK,gBAAgB,EAAE,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG,CAAA;YAC3B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA;QAC3B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAA;YAC5B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;QAC5B,CAAC;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;IAC7B,CAAC;IAED,GAAG,CAAC,MAAc;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IAClC,CAAC;IAED,SAAS,CAAC,KAAY;QACpB,MAAM,OAAO,GAAa,EAAE,CAAA;QAC5B,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,sCAAsC;YACtC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;gBACb,CAAC,IAAI,CAAC,CAAA;gBACN,SAAQ;YACV,CAAC;YAED,iCAAiC;YACjC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC7D,SAAQ;YACV,CAAC;YAED,+CAA+C;YAC/C,IACE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;gBACpC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAClC,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;YAC5B,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,GAAG,CACD,EAAE,IAAI,EAAE,KAAK,EAAuC,EACpD,MAAc;QAEd,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,qBAAqB,EAAE,CAAA;YAC5B,IAAI,CAAC,sBAAsB,EAAE,CAAA;YAC7B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;YAC7B,OAAO,IAAI,CAAA;QACb,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAEO,IAAI,CAAC,EAAU,EAAE,KAAY;QACnC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QAChC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,CAAA;QACvB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;IAClC,CAAC;IAEO,IAAI,CACV,EAAE,IAAI,EAAE,KAAK,EAAuC,EACpD,MAAc;QAEd,kBAAkB;QAClB,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAC/C,OAAO,KAAK,CAAA;QACd,CAAC;QAED,yBAAyB;QACzB,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE,CAAC;YACtB,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;QAEvB,8CAA8C;QAC9C,IACE,IAAI,IAAI,IAAI;YACZ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAC1D,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAE5C,4GAA4G;QAC5G,IAAI,oBAAoB,IAAI,oBAAoB,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAC/D,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAA;QACjD,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAmB,EAAE,KAAK,EAAE,KAAc,EAAE,CAAC,CAAA;QAEnE,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;QACzB,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAEO,MAAM,CAAC,EAAU;QACvB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QAChC,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACxB,CAAC;IAED,MAAM,CAAC,MAAc;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;QACzB,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAA;QAClC,CAAC;QAED,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAC5B,IAAI,CAAC,sBAAsB,EAAE,CAAA;QAC7B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;QAE7B,OAAO,KAAK,CAAA;IACd,CAAC;IAEO,qBAAqB;QAC3B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE,CAAA;QAEjC;;;;WAIG;QACH,KAAK,MAAM,KAAK,IAAI,CAAC,KAAK,EAAE,KAAK,CAAY,EAAE,CAAC;YAC9C,MAAM,QAAQ,GAAG,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAA;YAClD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACrC,MAAM,MAAM,GACV,UAAU,KAAK,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,QAAQ,CAAA;YAEvD,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC1D,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;oBACpC,SAAQ;gBACV,CAAC;gBAED,MAAM,UAAU,GACd,IAAI,KAAK,IAAI,CAAC,YAAY;oBACxB,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK;oBAClC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,CAAA;gBACtC,MAAM,SAAS,GACb,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;gBAE5D,IACE,CAAC,MAAM;oBACP,SAAS,EAAE,IAAI,KAAK,IAAI;oBACxB,SAAS,CAAC,KAAK,KAAK,KAAK,EACzB,CAAC;oBACD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,CAAA;oBAC7B,IAAI,IAAI,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;wBAC/B,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,KAAK,CAAA;oBAC1C,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,KAAK,CAAA;oBAC1C,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE,CAAA;IACnC,CAAC;IAEO,sBAAsB;QAC5B,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;YAC7B,OAAM;QACR,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QACtE,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QACxE,MAAM,SAAS,GAAG,CAAC,aAAa,GAAG,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC,CAAA;QAExD,IACE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,IAAI;YACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI;YACpC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,KAAK,KAAK,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;YAC3D,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,IAAI,KAAK,IAAI,EACzC,CAAC;YACD,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAA;YAC3B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;YACtB,OAAM;QACR,CAAC;QAED,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,EAAE,CACpC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC,KAAK;YACzC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,KAAK,IAAI,CAAA;QAEpC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAA;YAC3B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;QACxB,CAAC;IACH,CAAC;IAED,SAAS,CAAC,MAAc,EAAE,UAAkB;QAC1C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAA;QAC9D,CAAC;aAAM,CAAC;YACN,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAA;QAC9D,CAAC;IACH,CAAC;IAEO,eAAe,CAAC,KAAY;QAClC,OAAO,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IACxD,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IAChC,CAAC;IAED,UAAU,CAAC,MAAc,EAAE,UAAiB;QAC1C,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IACxD,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACzC,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,OAAO,EAAE,CAAA;IACvB,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,KAAK,CAAC,CAAA;IACrD,CAAC;IAED,WAAW;QACT,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,KAAK,CAAC,CAAA;IACtD,CAAC;IAED,sBAAsB;QACpB;;;;;;WAMG;QACH,MAAM,MAAM,GAAgC;YAC1C,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;SACL,CAAA;QACD,MAAM,OAAO,GAAG,EAAE,CAAA;QAClB,IAAI,SAAS,GAAG,CAAC,CAAA;QACjB,IAAI,WAAW,GAAG,CAAC,CAAA;QAEnB,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,WAAW,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;YACnC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;gBACb,CAAC,IAAI,CAAC,CAAA;gBACN,SAAQ;YACV,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YAC5B,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBACtE,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC1B,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;gBAC3B,CAAC;gBACD,SAAS,EAAE,CAAA;YACb,CAAC;QACH,CAAC;QAED,UAAU;QACV,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;YACpB,OAAO,IAAI,CAAA;QACb,CAAC;aAAM;QACL,iCAAiC;QACjC,SAAS,KAAK,CAAC;YACf,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAC9C,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;aAAM,IAAI,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5C,kEAAkE;YAClE,IAAI,GAAG,GAAG,CAAC,CAAA;YACX,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAA;YAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7B,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,CAAA;YACnB,CAAC;YACD,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;gBAC7B,OAAO,IAAI,CAAA;YACb,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED,qBAAqB;QACnB,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAChD,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,UAAU,IAAI,GAAG,CAAA,CAAC,qCAAqC;IACrE,CAAC;IAED,MAAM;QACJ,OAAO,CACL,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,sBAAsB,EAAE;YAC7B,IAAI,CAAC,qBAAqB,EAAE,CAC7B,CAAA;IACH,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAA;IAC5C,CAAC;IA0DD,KAAK,CAAC,EACJ,OAAO,GAAG,KAAK,EACf,MAAM,GAAG,SAAS,EAClB,KAAK,GAAG,SAAS,MAC8C,EAAE;QACjE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;QAE5C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;QACpD,CAAC;aAAM,CAAC;YACN,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;QAC1D,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,EACb,KAAK,GAAG,IAAI,EACZ,KAAK,GAAG,SAAS,EACjB,MAAM,GAAG,SAAS,MAKhB,EAAE;QACJ,MAAM,KAAK,GAAG,mBAAmB,CAC/B,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,cAAc,EACnB,EAAE,KAAK,EAAE,MAAM,EAAE,CAClB,CAAA;QAED;;;WAGG;QACH,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAC7C,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QAErB,2BAA2B;QAC3B,MAAM,UAAU,GAAG,EAAE,CAAA;QAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;YACxB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC9B,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;YAC3B,CAAC;YACD,IAAI,CAAC,SAAS,EAAE,CAAA;QAClB,CAAC;QAED,OAAO,UAAU,CAAA;IACnB,CAAC;IAED,IAAI,CACF,IAAsE,EACtE,EAAE,MAAM,GAAG,KAAK,KAA2B,EAAE;QAE7C;;;;;;;;;;;;WAYG;QAEH,IAAI,OAAO,GAAG,IAAI,CAAA;QAElB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAC3C,CAAC;aAAM,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;QACnD,CAAC;aAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;YAE3B,wDAAwD;YACxD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;gBACjD,IACE,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBACtC,IAAI,CAAC,EAAE,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAClC,CAAC,CAAC,CAAC,WAAW,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EACrE,CAAC;oBACD,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;oBAClB,MAAK;gBACP,CAAC;YACH,CAAC;YAED;;;;eAIG;YACH,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAY,CAAC,CAAA;gBACxC,IACE,UAAU,KAAK,KAAK;oBACpB,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,CAAC;oBACnC,QAAQ,KAAK,SAAS;oBACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,KAAK,IAAI;oBACpC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC,KAAK,EAC3C,CAAC;oBACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;wBACjD,IACE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;4BACxD,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAC9B,CAAC;4BACD,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;4BAClB,MAAK;wBACP,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,sBAAsB;QACtB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAA;YAC1C,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAC1D,CAAC;QACH,CAAC;QAED,mCAAmC;QACnC,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;QACxD,CAAC;QAED;;;WAGG;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QAE5C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QACvB,IAAI,CAAC,iBAAiB,EAAE,CAAA;QACxB,OAAO,UAAU,CAAA;IACnB,CAAC;IAEO,WAAW,CAAC,QAAsB;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;QACnE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAEzB,uCAAuC;QACvC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACxB,IAAI,CAAC,SAAS,EAAE,CAAA;QAEhB,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;IAC/C,CAAC;IAEO,KAAK,CAAC,IAAkB;QAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACjB,IAAI;YACJ,KAAK,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE;YAC7C,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,QAAQ,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE;YACtD,aAAa,EAAE;gBACb,CAAC,EAAE;oBACD,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK;oBAClC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK;iBACnC;gBACD,CAAC,EAAE;oBACD,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK;oBAClC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK;iBACnC;aACF;YACD,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,UAAU,EAAE,IAAI,CAAC,WAAW;SAC7B,CAAC,CAAA;IACJ,CAAC;IAEO,UAAU,CAAC,IAAY,EAAE,EAAU;QACzC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAElC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACnC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAExB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;IAClC,CAAC;IAEO,SAAS,CAAC,IAAkB;QAClC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QACrB,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,CAAC,CAAA;QAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAEhB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAChC,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC;gBACjB,IAAI,CAAC,WAAW,EAAE,CAAA;YACpB,CAAC;YACD,IAAI,CAAC,UAAU,EAAE,CAAA;YACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;YAEjB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;YAEtB,OAAM;QACR,CAAC;QAED,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAA;QAC3B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE,CAAA;QAEjC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACvC,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACzD,sEAAsE;YACtE,oEAAoE;YACpE,MAAM,IAAI,GACR,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY;gBAC5B,CAAC,CAAC,IAAI,CAAC,YAAY;gBACnB,CAAC,CAAC,IAAI,CAAC,YAAY,CAAA;YACvB,MAAM,QAAQ,GACZ,IAAI,CAAC,QAAQ,KAAK,SAAS;gBACzB,CAAC,CAAC,IAAI,CAAC,QAAQ;gBACf,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY;oBAC1B,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,KAAK;oBAC/B,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,KAAK,CAAA;YACrC,MAAM,MAAM,GACV,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAA;YAE5D,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACxC,MAAM,SAAS,GAAG,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;YAExE,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACvC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC7B,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;gBACnC,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YAC9B,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,SAAS,CAAA;YAChC,IAAI,CAAC,KAAK,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAE/C,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;gBAC/B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;YACtC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;QACrC,CAAC;QAED,0CAA0C;QAC1C,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACjC,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;YAC3B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC;QAED,4CAA4C;QAC5C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACpB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAA;QACzD,CAAC;QAED,uBAAuB;QACvB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAA;YAEzB,oBAAoB;YACpB,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;YACtB,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;QAC1D,CAAC;QAED,sCAAsC;QACtC,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;YACvB,IACE,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,KAAK;gBACvC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,KAAK,EAC3C,CAAC;gBACD,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,YAAY,CAAA;gBACvC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,KAAK,CAAA;YACvC,CAAC;YACD,IACE,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,KAAK;gBACvC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,KAAK,EAC3C,CAAC;gBACD,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,YAAY,CAAA;gBACvC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,KAAK,CAAA;YACvC,CAAC;QACH,CAAC;QAED,yCAAyC;QACzC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,IACE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK;gBACzC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,KAAK,EAC3C,CAAC;gBACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,CAAA;gBACzC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,KAAK,CAAA;YACzC,CAAC;YACD,IACE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK;gBACzC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,KAAK,EAC3C,CAAC;gBACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,CAAA;gBACzC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,KAAK,CAAA;YACzC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE,CAAA;QAEjC,iDAAiD;QACjD,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC/B,IAAI,QAAQ,CAAA;YAEZ,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC;gBACjB,QAAQ,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;YACzB,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;YACzB,CAAC;YAED,IACE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;gBACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI;gBACvC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;gBAC3C,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;oBACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI;oBACvC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC,EAC3C,CAAC;gBACD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;gBACzB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAA;YAC7B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;YACxB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;QACxB,CAAC;QAED,sEAAsE;QACtE,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;QACrB,CAAC;aAAM,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACzD,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;QACrB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,EAAE,CAAA;QACnB,CAAC;QAED,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC;YACjB,IAAI,CAAC,WAAW,EAAE,CAAA;QACpB,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACjB,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAA;IACxB,CAAC;IAED,IAAI;QACF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAA;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;QAC7B,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;YACzC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;YAC5B,OAAO,UAAU,CAAA;QACnB,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAEO,SAAS;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAA;QAC/B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAA;QAC3B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE,CAAA;QAEjC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAA;QAErB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAA;QACvB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAA;QACrB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAA;QAC7B,IAAI,CAAC,cAAc,GAAG;YACpB,CAAC,EAAE;gBACD,KAAK,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK;gBAChC,KAAK,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK;aACjC;YACD,CAAC,EAAE;gBACD,KAAK,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK;gBAChC,KAAK,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK;aACjC;SACF,CAAA;QACD,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAA;QAC7B,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,SAAS,CAAA;QAC/B,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,UAAU,CAAA;QAEjC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAA;QAC3B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE,CAAA;QACjC,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAA;QAEtB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QACrB,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,CAAC,CAAA;QAE1B,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAChC,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACzD,kEAAkE;YAClE,kEAAkE;YAClE,MAAM,IAAI,GACR,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY;gBAC5B,CAAC,CAAC,IAAI,CAAC,YAAY;gBACnB,CAAC,CAAC,IAAI,CAAC,YAAY,CAAA;YACvB,MAAM,QAAQ,GACZ,IAAI,CAAC,QAAQ,KAAK,SAAS;gBACzB,CAAC,CAAC,IAAI,CAAC,QAAQ;gBACf,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY;oBAC1B,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,KAAK;oBAC/B,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,KAAK,CAAA;YACrC,MAAM,MAAM,GACV,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAA;YAE5D,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACtC,MAAM,SAAS,GAAG,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;YAEtE,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACrC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAC3B,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;gBACjC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAC5B,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAA;YAClC,IAAI,CAAC,KAAK,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAEjD,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAA;gBACjC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;YACxC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QACrC,CAAC;QAED,yBAAyB;QACzB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACtB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAA;QACvD,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBACjC,qBAAqB;gBACrB,IAAI,KAAa,CAAA;gBACjB,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC;oBACjB,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;gBACtB,CAAC;qBAAM,CAAC;oBACN,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;gBACtB,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;YAC/C,CAAC;iBAAM,CAAC;gBACN,kBAAkB;gBAClB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;YAC1D,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED,GAAG,CAAC,EACF,OAAO,GAAG,IAAI,EACd,QAAQ,GAAG,CAAC,MAC+B,EAAE;QAC7C;;;WAGG;QAEH,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,IAAI,YAAY,GAAG,KAAK,CAAA;QAExB,oCAAoC;QACpC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7B;;;;;;eAMG;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YACjC,IAAI,SAAS;gBAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,OAAO,CAAC,CAAA;YACnE,YAAY,GAAG,IAAI,CAAA;QACrB,CAAC;QAED,IAAI,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACtB,CAAC;QAED,MAAM,aAAa,GAAG,CAAC,UAAkB,EAAE,EAAE;YAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;YAC1C,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;gBACnC,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;gBAClD,UAAU,GAAG,GAAG,UAAU,GAAG,SAAS,IAAI,OAAO,GAAG,CAAA;YACtD,CAAC;YACD,OAAO,UAAU,CAAA;QACnB,CAAC,CAAA;QAED,2CAA2C;QAC3C,MAAM,eAAe,GAAG,EAAE,CAAA;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;QACxC,CAAC;QAED,MAAM,KAAK,GAAG,EAAE,CAAA;QAChB,IAAI,UAAU,GAAG,EAAE,CAAA;QAEnB,8DAA8D;QAC9D,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAA;QAC/B,CAAC;QAED,iEAAiE;QACjE,OAAO,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;YACtC,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,EAAE,CAAA;YAElC,8DAA8D;YAC9D,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAK;YACP,CAAC;YAED,oEAAoE;YACpE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,GAAG,EAAE,CAAC;gBAChD,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,OAAO,CAAA;gBACzC,+CAA+C;gBAC/C,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAA;YAC9D,CAAC;iBAAM,IAAI,IAAI,CAAC,KAAK,KAAK,GAAG,EAAE,CAAC;gBAC9B,0DAA0D;gBAC1D,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;oBACtB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;gBACxB,CAAC;gBACD,UAAU,GAAG,IAAI,CAAC,WAAW,GAAG,GAAG,CAAA;YACrC,CAAC;YAED,UAAU;gBACR,UAAU,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;YACxE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QACtB,CAAC;QAED,sCAAsC;QACtC,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAA;QACvC,CAAC;QAED,+FAA+F;QAC/F,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,CAAA;QAEtC;;;WAGG;QACH,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC1C,CAAC;QAED,mBAAmB;QACnB,MAAM,KAAK,GAAG;YACZ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBAC3D,MAAM,CAAC,GAAG,EAAE,CAAA;gBACZ,OAAO,IAAI,CAAA;YACb,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC,CAAA;QAED,iDAAiD;QACjD,MAAM,WAAW,GAAG,UAAU,KAAa,EAAE,IAAY;YACvD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpC,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,SAAQ;gBACV,CAAC;gBACD,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;oBACpC,OAAO,KAAK,EAAE,EAAE,CAAC;wBACf,KAAK,EAAE,CAAA;oBACT,CAAC;oBACD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;oBACpB,KAAK,GAAG,CAAC,CAAA;gBACX,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAClB,KAAK,IAAI,KAAK,CAAC,MAAM,CAAA;gBACrB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAChB,KAAK,EAAE,CAAA;YACT,CAAC;YACD,IAAI,KAAK,EAAE,EAAE,CAAC;gBACZ,KAAK,EAAE,CAAA;YACT,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC,CAAA;QAED,mCAAmC;QACnC,IAAI,YAAY,GAAG,CAAC,CAAA;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,IAAI,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;gBAC9C,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC3B,YAAY,GAAG,WAAW,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;oBAClD,SAAQ;gBACV,CAAC;YACH,CAAC;YACD,+CAA+C;YAC/C,IAAI,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,QAAQ,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzD,qCAAqC;gBACrC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;oBACtC,MAAM,CAAC,GAAG,EAAE,CAAA;gBACd,CAAC;gBAED,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBACpB,YAAY,GAAG,CAAC,CAAA;YAClB,CAAC;iBAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACnB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAChB,YAAY,EAAE,CAAA;YAChB,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;YACrB,YAAY,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;QACjC,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACxB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,GAAG,IAAc;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACnE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;YACrC,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,kCAAkC;IAClC,SAAS,CAAC,GAAW,EAAE,KAAa;QAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,IAAI,CAAA;QAC1D,OAAO,IAAI,CAAC,UAAU,EAAE,CAAA;IAC1B,CAAC;IAED,YAAY,CAAC,GAAW;QACtB,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,IAAI,CAAA;YACjD,OAAO,IAAI,CAAA;QACb,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,wDAAwD;IACxD,UAAU;QACR,MAAM,cAAc,GAA2B,EAAE,CAAA;QACjD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACxD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACnB,cAAc,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;YAC7B,CAAC;QACH,CAAC;QACD,OAAO,cAAc,CAAA;IACvB,CAAC;IAED,OAAO,CACL,GAAW,EACX,EACE,MAAM,GAAG,KAAK,EACd,WAAW,GAAG,OAAO,MACyB,EAAE;QAElD,mEAAmE;QACnE,IAAI,WAAW,KAAK,OAAO,EAAE,CAAC;YAC5B,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAA;QACvD,CAAC;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;QAE5B,yCAAyC;QACzC,IAAI,CAAC,KAAK,EAAE,CAAA;QAEZ,mBAAmB;QACnB,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAA;QACjC,IAAI,GAAG,GAAG,EAAE,CAAA;QAEZ,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,oEAAoE;YACpE,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE,CAAC;gBAChC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;YACpB,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;QAChC,CAAC;QAED;;;WAGG;QACH,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,GAAG,EAAE,CAAC;gBACR,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAA;YAC3C,CAAC;QACH,CAAC;aAAM,CAAC;YACN;;;eAGG;YACH,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC;gBAC7B,IAAI,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,EAAE,CAAC;oBACxB,MAAM,IAAI,KAAK,CACb,sDAAsD,CACvD,CAAA;gBACH,CAAC;gBACD,uCAAuC;gBACvC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAA;YACtD,CAAC;QACH,CAAC;QAED,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,CAAA;QAEzB,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;gBAEjD,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;oBACjB,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;gBACtD,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;oBACpB,IAAI,CAAC,iBAAiB,EAAE,CAAA;gBAC1B,CAAC;YACH,CAAC;YAED,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC/B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAA;YAC3C,CAAC;YAED,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QAC3B,CAAC;QAED;;;;WAIG;QAEH,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAA;QAC/B,IACE,MAAM;YACN,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM;YAChC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,MAAM,EACjC,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QAClC,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IAEK,UAAU,CAAC,IAAkB,EAAE,KAAqB;QAC1D,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAChC,OAAO,YAAY,CAAA;QACrB,CAAC;QAED,IAAI,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAEnC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QACpB,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YACnB,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACvB,MAAM,IAAI,GAAG,CAAA;YACf,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,CAAA;YACf,CAAC;QACH,CAAC;QACD,IAAI,CAAC,SAAS,EAAE,CAAA;QAEhB,OAAO,MAAM,CAAA;IACf,CAAC;IAED,4EAA4E;IACpE,YAAY,CAAC,IAAY,EAAE,MAAM,GAAG,KAAK;QAC/C,OAAO,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAA;IAC7D,CAAC;IAED,KAAK;QACH,IAAI,CAAC,GAAG,iCAAiC,CAAA;QACzC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,mBAAmB;YACnB,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClB,CAAC,IAAI,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;YACvC,CAAC;YAED,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;gBACjC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;gBAClC,MAAM,MAAM,GACV,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAA;gBAC7D,CAAC,IAAI,GAAG,GAAG,MAAM,GAAG,GAAG,CAAA;YACzB,CAAC;iBAAM,CAAC;gBACN,CAAC,IAAI,KAAK,CAAA;YACZ,CAAC;YAED,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;gBACnB,CAAC,IAAI,KAAK,CAAA;gBACV,CAAC,IAAI,CAAC,CAAA;YACR,CAAC;QACH,CAAC;QACD,CAAC,IAAI,iCAAiC,CAAA;QACtC,CAAC,IAAI,6BAA6B,CAAA;QAElC,OAAO,CAAC,CAAA;IACV,CAAC;IAED,KAAK,CAAC,KAAa;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;QAC3C,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;YACxB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjC,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAClB,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;gBAChC,CAAC;qBAAM,CAAC;oBACN,KAAK,EAAE,CAAA;gBACT,CAAC;YACH,CAAC;YACD,IAAI,CAAC,SAAS,EAAE,CAAA;QAClB,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,CAAC,KAAY;QAClB,IAAI,IAAI,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC;YACxB,OAAO,KAAK,CAAA;QACd,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACf,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,KAAK;QACH,MAAM,MAAM,GAAG,EAAE,CAAA;QACjB,IAAI,GAAG,GAAG,EAAE,CAAA;QAEZ,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;gBAC3B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAChB,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,IAAI,CAAC;oBACP,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;oBACpB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;oBACzB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK;iBAC5B,CAAC,CAAA;YACJ,CAAC;YACD,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;gBACnB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAChB,GAAG,GAAG,EAAE,CAAA;gBACR,CAAC,IAAI,CAAC,CAAA;YACR,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED,WAAW,CAAC,MAAc;QACxB,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;YACvB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAA;QAC3D,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAMD,OAAO,CAAC,EAAE,OAAO,GAAG,KAAK,KAA4B,EAAE;QACrD,MAAM,eAAe,GAAG,EAAE,CAAA;QAC1B,MAAM,WAAW,GAAG,EAAE,CAAA;QAEtB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;QACxC,CAAC;QAED,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,EAAE,CAAA;YAClC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAK;YACP,CAAC;YAED,IAAI,OAAO,EAAE,CAAC;gBACZ,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;YAC1C,CAAC;iBAAM,CAAC;gBACN,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;YACxD,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QACtB,CAAC;QAED,OAAO,WAAW,CAAA;IACpB,CAAC;IAED;;;OAGG;IACK,iBAAiB,CAAC,IAAY;QACpC,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC3C,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,IAAI,CAAC,KAAK,EACV,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAC/C,CAAA;IACH,CAAC;IAEO,iBAAiB,CAAC,IAAY;QACpC,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEvD,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAClC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,GAAG,CAAC,CAAC,CAAA;QACjD,CAAC;IACH,CAAC;IAEO,cAAc;QACpB,MAAM,eAAe,GAAG,EAAE,CAAA;QAC1B,MAAM,eAAe,GAA2B,EAAE,CAAA;QAElD,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,EAAE;YAClC,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC1B,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;YAC5C,CAAC;QACH,CAAC,CAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;QACxC,CAAC;QAED,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;QAEvB,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,EAAE,CAAA;YAClC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAK;YACP,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;YACpB,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;QACzB,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,eAAe,CAAA;IAClC,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;IACnC,CAAC;IAED,UAAU,CAAC,OAAe;QACxB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IAC1E,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,aAAa,EAAE,CAAA;IAC7B,CAAC;IAED,aAAa;QACX,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;QAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;QACjC,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,WAAW;QACT,IAAI,CAAC,cAAc,EAAE,CAAA;QACrB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAW,EAAE,EAAE;YACrD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAA;QACnD,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,cAAc,EAAE,CAAA;IAC9B,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,cAAc,EAAE,CAAA;QACrB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;YACnC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;YAC1B,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA;QACvC,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,iBAAiB,CACf,KAAY,EACZ,MAA4D;QAE5D,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,CAAU,EAAE,CAAC;YAC1C,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC/B,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAA;gBACtC,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBACvC,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAA;QAE5C,OAAO,CACL,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;YAC7D,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CACjE,CAAA;IACH,CAAC;IAED,iBAAiB,CAAC,KAAY;QAC5B,OAAO;YACL,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACnD,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;SACtD,CAAA;IACH,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;CACF"}
package/dist/fen.d.ts ADDED
@@ -0,0 +1,38 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) 2025, Jeff Hlywa (jhlywa@gmail.com)
4
+ * All rights reserved.
5
+ *
6
+ * Redistribution and use in source and binary forms, with or without
7
+ * modification, are permitted provided that the following conditions are met:
8
+ *
9
+ * 1. Redistributions of source code must retain the above copyright notice,
10
+ * this list of conditions and the following disclaimer.
11
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
12
+ * this list of conditions and the following disclaimer in the documentation
13
+ * and/or other materials provided with the distribution.
14
+ *
15
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
19
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25
+ * POSSIBILITY OF SUCH DAMAGE.
26
+ */
27
+ import type { CastlingRookSquares, Color, Piece } from './types.js';
28
+ export declare function validateFen(fen: string): {
29
+ ok: boolean;
30
+ error?: string;
31
+ };
32
+ export declare function serializeBoard(board: Piece[]): string;
33
+ export declare function parseCastlingFen(castling: string, board: Piece[], kings: Record<Color, number>): {
34
+ castling: Record<Color, number>;
35
+ castlingRooks: Record<Color, CastlingRookSquares>;
36
+ };
37
+ export declare function makeCastlingFen(board: Piece[], kings: Record<Color, number>, castling: Record<Color, number>, castlingRooks: Record<Color, CastlingRookSquares>): string;
38
+ //# sourceMappingURL=fen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fen.d.ts","sourceRoot":"","sources":["../src/fen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAcnE,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CA4HxE;AAGD,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,CAgCrD;AAcD,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,EAAE,EACd,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAC3B;IACD,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAC/B,aAAa,EAAE,MAAM,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAA;CAClD,CAyFA;AAQD,wBAAgB,eAAe,CAC7B,KAAK,EAAE,KAAK,EAAE,EACd,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAC5B,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAC/B,aAAa,EAAE,MAAM,CAAC,KAAK,EAAE,mBAAmB,CAAC,GAChD,MAAM,CAmDR"}
package/dist/fen.js ADDED
@@ -0,0 +1,308 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) 2025, Jeff Hlywa (jhlywa@gmail.com)
4
+ * All rights reserved.
5
+ *
6
+ * Redistribution and use in source and binary forms, with or without
7
+ * modification, are permitted provided that the following conditions are met:
8
+ *
9
+ * 1. Redistributions of source code must retain the above copyright notice,
10
+ * this list of conditions and the following disclaimer.
11
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
12
+ * this list of conditions and the following disclaimer in the documentation
13
+ * and/or other materials provided with the distribution.
14
+ *
15
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
19
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25
+ * POSSIBILITY OF SUCH DAMAGE.
26
+ */
27
+ import { BITS, BLACK, EMPTY, KING, Ox88, RANK_1, RANK_8, ROOK, WHITE, } from './types.js';
28
+ import { file, isDigit, rank } from './board.js';
29
+ export function validateFen(fen) {
30
+ // 1st criterion: 6 space-seperated fields?
31
+ const tokens = fen.split(/\s+/);
32
+ if (tokens.length !== 6) {
33
+ return {
34
+ ok: false,
35
+ error: 'Invalid FEN: must contain six space-delimited fields',
36
+ };
37
+ }
38
+ // 2nd criterion: move number field is a integer value > 0?
39
+ const moveNumber = parseInt(tokens[5], 10);
40
+ if (isNaN(moveNumber) || moveNumber <= 0) {
41
+ return {
42
+ ok: false,
43
+ error: 'Invalid FEN: move number must be a positive integer',
44
+ };
45
+ }
46
+ // 3rd criterion: half move counter is an integer >= 0?
47
+ const halfMoves = parseInt(tokens[4], 10);
48
+ if (isNaN(halfMoves) || halfMoves < 0) {
49
+ return {
50
+ ok: false,
51
+ error: 'Invalid FEN: half move counter number must be a non-negative integer',
52
+ };
53
+ }
54
+ // 4th criterion: 4th field is a valid e.p.-string?
55
+ if (!/^(-|[abcdefgh][36])$/.test(tokens[3])) {
56
+ return { ok: false, error: 'Invalid FEN: en-passant square is invalid' };
57
+ }
58
+ // 5th criterion: 3th field is a valid castle-string?
59
+ // CHESS960: allow X-FEN (KQkq) and Shredder-FEN (HAha) file letters.
60
+ if (/[^KQkqA-Ha-h-]/.test(tokens[2])) {
61
+ return { ok: false, error: 'Invalid FEN: castling availability is invalid' };
62
+ }
63
+ // 6th criterion: 2nd field is "w" (white) or "b" (black)?
64
+ if (!/^(w|b)$/.test(tokens[1])) {
65
+ return { ok: false, error: 'Invalid FEN: side-to-move is invalid' };
66
+ }
67
+ // 7th criterion: 1st field contains 8 rows?
68
+ const rows = tokens[0].split('/');
69
+ if (rows.length !== 8) {
70
+ return {
71
+ ok: false,
72
+ error: "Invalid FEN: piece data does not contain 8 '/'-delimited rows",
73
+ };
74
+ }
75
+ // 8th criterion: every row is valid?
76
+ for (let i = 0; i < rows.length; i++) {
77
+ // check for right sum of fields AND not two numbers in succession
78
+ let sumFields = 0;
79
+ let previousWasNumber = false;
80
+ for (let k = 0; k < rows[i].length; k++) {
81
+ if (isDigit(rows[i][k])) {
82
+ if (previousWasNumber) {
83
+ return {
84
+ ok: false,
85
+ error: 'Invalid FEN: piece data is invalid (consecutive number)',
86
+ };
87
+ }
88
+ sumFields += parseInt(rows[i][k], 10);
89
+ previousWasNumber = true;
90
+ }
91
+ else {
92
+ if (!/^[prnbqkPRNBQK]$/.test(rows[i][k])) {
93
+ return {
94
+ ok: false,
95
+ error: 'Invalid FEN: piece data is invalid (invalid piece)',
96
+ };
97
+ }
98
+ sumFields += 1;
99
+ previousWasNumber = false;
100
+ }
101
+ }
102
+ if (sumFields !== 8) {
103
+ return {
104
+ ok: false,
105
+ error: 'Invalid FEN: piece data is invalid (too many squares in rank)',
106
+ };
107
+ }
108
+ }
109
+ // 9th criterion: is en-passant square legal?
110
+ if ((tokens[3][1] == '3' && tokens[1] == 'w') ||
111
+ (tokens[3][1] == '6' && tokens[1] == 'b')) {
112
+ return { ok: false, error: 'Invalid FEN: illegal en-passant square' };
113
+ }
114
+ // 10th criterion: does chess position contain exact two kings?
115
+ const kings = [
116
+ { color: 'white', regex: /K/g },
117
+ { color: 'black', regex: /k/g },
118
+ ];
119
+ for (const { color, regex } of kings) {
120
+ if (!regex.test(tokens[0])) {
121
+ return { ok: false, error: `Invalid FEN: missing ${color} king` };
122
+ }
123
+ if ((tokens[0].match(regex) || []).length > 1) {
124
+ return { ok: false, error: `Invalid FEN: too many ${color} kings` };
125
+ }
126
+ }
127
+ // 11th criterion: are any pawns on the first or eighth rows?
128
+ if (Array.from(rows[0] + rows[7]).some((char) => char.toUpperCase() === 'P')) {
129
+ return {
130
+ ok: false,
131
+ error: 'Invalid FEN: some pawns are on the edge rows',
132
+ };
133
+ }
134
+ return { ok: true };
135
+ }
136
+ // Serializes the piece placement field (first field) of a FEN string.
137
+ export function serializeBoard(board) {
138
+ let empty = 0;
139
+ let fen = '';
140
+ for (let i = Ox88.a8; i <= Ox88.h1; i++) {
141
+ if (board[i]) {
142
+ if (empty > 0) {
143
+ fen += empty;
144
+ empty = 0;
145
+ }
146
+ const { color, type: piece } = board[i];
147
+ fen += color === WHITE ? piece.toUpperCase() : piece.toLowerCase();
148
+ }
149
+ else {
150
+ empty++;
151
+ }
152
+ if ((i + 1) & 0x88) {
153
+ if (empty > 0) {
154
+ fen += empty;
155
+ }
156
+ if (i !== Ox88.h1) {
157
+ fen += '/';
158
+ }
159
+ empty = 0;
160
+ i += 8;
161
+ }
162
+ }
163
+ return fen;
164
+ }
165
+ /*
166
+ * CHESS960: parse the castling field of a FEN string. Accepts X-FEN
167
+ * (KQkq), Shredder-FEN file letters (HAha), and mixed forms, mirroring
168
+ * chessops parseCastlingFen + Castles.fromSetup:
169
+ *
170
+ * - A file letter marks the rook square directly.
171
+ * - 'K'/'Q' mark the outermost rook-or-king on the backrank (falling back
172
+ * to the h/a file square when that is not a rook).
173
+ * - A right survives only if the king is on the backrank and the marked
174
+ * square holds a rook of the moving color, positioned on the correct
175
+ * side of the king; otherwise it is silently dropped.
176
+ */
177
+ export function parseCastlingFen(castling, board, kings) {
178
+ const rights = { w: 0, b: 0 };
179
+ const rooks = {
180
+ w: { kside: EMPTY, qside: EMPTY },
181
+ b: { kside: EMPTY, qside: EMPTY },
182
+ };
183
+ const rightsSquares = { w: [], b: [] };
184
+ for (const c of castling) {
185
+ const lower = c.toLowerCase();
186
+ const color = c === lower ? BLACK : WHITE;
187
+ const backrank = color === WHITE ? RANK_1 : RANK_8;
188
+ let square = EMPTY;
189
+ if (lower >= 'a' && lower <= 'h') {
190
+ // Shredder-FEN file letter
191
+ square = (backrank << 4) | (lower.charCodeAt(0) - 'a'.charCodeAt(0));
192
+ }
193
+ else if (lower === 'k' || lower === 'q') {
194
+ // X-FEN: outermost rook-or-king on the backrank
195
+ if (lower === 'k') {
196
+ for (let f = 7; f >= 0; f--) {
197
+ const sq = (backrank << 4) | f;
198
+ const piece = board[sq];
199
+ if (piece &&
200
+ piece.color === color &&
201
+ (piece.type === ROOK || piece.type === KING)) {
202
+ square = sq;
203
+ break;
204
+ }
205
+ }
206
+ }
207
+ else {
208
+ for (let f = 0; f <= 7; f++) {
209
+ const sq = (backrank << 4) | f;
210
+ const piece = board[sq];
211
+ if (piece &&
212
+ piece.color === color &&
213
+ (piece.type === ROOK || piece.type === KING)) {
214
+ square = sq;
215
+ break;
216
+ }
217
+ }
218
+ }
219
+ // the candidate must be a rook, otherwise fall back to the edge file
220
+ if (square === EMPTY || board[square]?.type !== ROOK) {
221
+ square = (backrank << 4) | (lower === 'k' ? 7 : 0);
222
+ }
223
+ }
224
+ else {
225
+ // skip separators like '-' (validateFen gates the charset)
226
+ continue;
227
+ }
228
+ rightsSquares[color].push(square);
229
+ }
230
+ // chessops Castles.fromSetup equivalent
231
+ for (const color of [WHITE, BLACK]) {
232
+ const backrank = color === WHITE ? RANK_1 : RANK_8;
233
+ const kingSquare = kings[color];
234
+ if (kingSquare === EMPTY || rank(kingSquare) !== backrank) {
235
+ continue;
236
+ }
237
+ const rookSquares = rightsSquares[color].filter((sq) => {
238
+ const piece = board[sq];
239
+ return piece?.type === ROOK && piece.color === color;
240
+ });
241
+ if (rookSquares.length === 0) {
242
+ continue;
243
+ }
244
+ const aSide = Math.min(...rookSquares);
245
+ const hSide = Math.max(...rookSquares);
246
+ if (aSide < kingSquare) {
247
+ rights[color] |= BITS.QSIDE_CASTLE;
248
+ rooks[color].qside = aSide;
249
+ }
250
+ if (kingSquare < hSide) {
251
+ rights[color] |= BITS.KSIDE_CASTLE;
252
+ rooks[color].kside = hSide;
253
+ }
254
+ }
255
+ return { castling: rights, castlingRooks: rooks };
256
+ }
257
+ /*
258
+ * CHESS960: mirror chessops makeCastlingFen — emit X-FEN letters (K/Q)
259
+ * when the rook is the outermost rook on its side of the king, and
260
+ * Shredder-FEN file letters otherwise. Output order is h-file to a-file,
261
+ * kingside before queenside, which matches standard 'KQkq' byte-for-byte.
262
+ */
263
+ export function makeCastlingFen(board, kings, castling, castlingRooks) {
264
+ let castlingStr = '';
265
+ for (const color of [WHITE, BLACK]) {
266
+ const backrank = color === WHITE ? RANK_1 : RANK_8;
267
+ const kingSquare = kings[color];
268
+ const kingOnBackrank = kingSquare !== EMPTY && rank(kingSquare) === backrank;
269
+ // all rooks of this color on the backrank, ordered a-file to h-file
270
+ const rookSquares = [];
271
+ for (let f = 0; f <= 7; f++) {
272
+ const sq = (backrank << 4) | f;
273
+ const piece = board[sq];
274
+ if (piece && piece.type === ROOK && piece.color === color) {
275
+ rookSquares.push(sq);
276
+ }
277
+ }
278
+ // rooks holding the rights, ordered h-file to a-file
279
+ const rightsRooks = [];
280
+ if (castling[color] & BITS.KSIDE_CASTLE) {
281
+ rightsRooks.push(castlingRooks[color].kside);
282
+ }
283
+ if (castling[color] & BITS.QSIDE_CASTLE) {
284
+ rightsRooks.push(castlingRooks[color].qside);
285
+ }
286
+ rightsRooks.sort((a, b) => b - a);
287
+ for (const rook of rightsRooks) {
288
+ if (kingOnBackrank &&
289
+ rookSquares.length > 0 &&
290
+ rook === rookSquares[0] &&
291
+ rook < kingSquare) {
292
+ castlingStr += color === WHITE ? 'Q' : 'q';
293
+ }
294
+ else if (kingOnBackrank &&
295
+ rookSquares.length > 0 &&
296
+ rook === rookSquares[rookSquares.length - 1] &&
297
+ kingSquare < rook) {
298
+ castlingStr += color === WHITE ? 'K' : 'k';
299
+ }
300
+ else {
301
+ const f = file(rook);
302
+ castlingStr += color === WHITE ? 'ABCDEFGH'[f] : 'abcdefgh'[f];
303
+ }
304
+ }
305
+ }
306
+ return castlingStr;
307
+ }
308
+ //# sourceMappingURL=fen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fen.js","sourceRoot":"","sources":["../src/fen.ts"],"names":[],"mappings":"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"}
package/dist/hash.d.ts ADDED
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) 2025, Jeff Hlywa (jhlywa@gmail.com)
4
+ * All rights reserved.
5
+ *
6
+ * Redistribution and use in source and binary forms, with or without
7
+ * modification, are permitted provided that the following conditions are met:
8
+ *
9
+ * 1. Redistributions of source code must retain the above copyright notice,
10
+ * this list of conditions and the following disclaimer.
11
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
12
+ * this list of conditions and the following disclaimer in the documentation
13
+ * and/or other materials provided with the distribution.
14
+ *
15
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
19
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25
+ * POSSIBILITY OF SUCH DAMAGE.
26
+ */
27
+ import type { Color, Piece } from './types.js';
28
+ export declare function xoroshiro128(state: bigint): () => bigint;
29
+ export declare const SIDE_KEY: bigint;
30
+ export declare function pieceKey(board: Piece[], i: number): bigint;
31
+ export declare function epKey(epSquare: number): bigint;
32
+ export declare function castlingKey(castling: Record<Color, number>): bigint;
33
+ export declare function computeHash(board: Piece[], epSquare: number, castling: Record<Color, number>, turn: Color): bigint;
34
+ //# sourceMappingURL=hash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../src/hash.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAc9C,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,gBAezC;AAYD,eAAO,MAAM,QAAQ,QAAS,CAAA;AAE9B,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAsB1D;AAED,wBAAgB,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,CAGnE;AAED,wBAAgB,WAAW,CACzB,KAAK,EAAE,KAAK,EAAE,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAC/B,IAAI,EAAE,KAAK,GACV,MAAM,CAuBR"}
package/dist/hash.js ADDED
@@ -0,0 +1,98 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) 2025, Jeff Hlywa (jhlywa@gmail.com)
4
+ * All rights reserved.
5
+ *
6
+ * Redistribution and use in source and binary forms, with or without
7
+ * modification, are permitted provided that the following conditions are met:
8
+ *
9
+ * 1. Redistributions of source code must retain the above copyright notice,
10
+ * this list of conditions and the following disclaimer.
11
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
12
+ * this list of conditions and the following disclaimer in the documentation
13
+ * and/or other materials provided with the distribution.
14
+ *
15
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
19
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25
+ * POSSIBILITY OF SUCH DAMAGE.
26
+ */
27
+ import { EMPTY, Ox88 } from './types.js';
28
+ const MASK64 = 0xffffffffffffffffn;
29
+ function rotl(x, k) {
30
+ return ((x << k) | (x >> (64n - k))) & 0xffffffffffffffffn;
31
+ }
32
+ function wrappingMul(x, y) {
33
+ return (x * y) & MASK64;
34
+ }
35
+ // xoroshiro128**
36
+ export function xoroshiro128(state) {
37
+ return function () {
38
+ let s0 = BigInt(state & MASK64);
39
+ let s1 = BigInt((state >> 64n) & MASK64);
40
+ const result = wrappingMul(rotl(wrappingMul(s0, 5n), 7n), 9n);
41
+ s1 ^= s0;
42
+ s0 = (rotl(s0, 24n) ^ s1 ^ (s1 << 16n)) & MASK64;
43
+ s1 = rotl(s1, 37n);
44
+ state = (s1 << 64n) | s0;
45
+ return result;
46
+ };
47
+ }
48
+ const rand = xoroshiro128(0xa187eb39cdcaed8f31c4b365b102e01en);
49
+ const PIECE_KEYS = Array.from({ length: 2 }, () => Array.from({ length: 6 }, () => Array.from({ length: 128 }, () => rand())));
50
+ const EP_KEYS = Array.from({ length: 8 }, () => rand());
51
+ const CASTLING_KEYS = Array.from({ length: 16 }, () => rand());
52
+ export const SIDE_KEY = rand();
53
+ export function pieceKey(board, i) {
54
+ if (!board[i]) {
55
+ return 0n;
56
+ }
57
+ const { color, type } = board[i];
58
+ const colorIndex = {
59
+ w: 0,
60
+ b: 1,
61
+ }[color];
62
+ const typeIndex = {
63
+ p: 0,
64
+ n: 1,
65
+ b: 2,
66
+ r: 3,
67
+ q: 4,
68
+ k: 5,
69
+ }[type];
70
+ return PIECE_KEYS[colorIndex][typeIndex][i];
71
+ }
72
+ export function epKey(epSquare) {
73
+ return epSquare === EMPTY ? 0n : EP_KEYS[epSquare & 7];
74
+ }
75
+ export function castlingKey(castling) {
76
+ const index = (castling.w >> 5) | (castling.b >> 3);
77
+ return CASTLING_KEYS[index];
78
+ }
79
+ export function computeHash(board, epSquare, castling, turn) {
80
+ let hash = 0n;
81
+ for (let i = Ox88.a8; i <= Ox88.h1; i++) {
82
+ // did we run off the end of the board
83
+ if (i & 0x88) {
84
+ i += 7;
85
+ continue;
86
+ }
87
+ if (board[i]) {
88
+ hash ^= pieceKey(board, i);
89
+ }
90
+ }
91
+ hash ^= epKey(epSquare);
92
+ hash ^= castlingKey(castling);
93
+ if (turn === 'b') {
94
+ hash ^= SIDE_KEY;
95
+ }
96
+ return hash;
97
+ }
98
+ //# sourceMappingURL=hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.js","sourceRoot":"","sources":["../src/hash.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './chess.js';
2
+ export type { Node } from './node.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,YAAY,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from './chess.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA"}