cotomy 1.0.5 → 2.0.1
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 +14 -1
- package/dist/browser/cotomy.js +803 -127
- package/dist/browser/cotomy.js.map +1 -1
- package/dist/browser/cotomy.min.js +2 -1
- package/dist/browser/cotomy.min.js.LICENSE.txt +1 -0
- package/dist/browser/cotomy.min.js.map +1 -1
- package/dist/cjs/index.cjs +2 -1
- package/dist/cjs/index.cjs.LICENSE.txt +1 -0
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/esm/view.js +4 -4
- package/dist/esm/view.js.map +1 -1
- package/package.json +12 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cotomy.js","mappings":"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CA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wFAAwF;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kCAAkC;;;ACnWnC,IAAY,kBAQX;AARD,WAAY,kBAAkB;IAC1B,iCAAW;IACX,mCAAa;IACb,mCAAa;IACb,2CAAqB;IACrB,mCAAa;IACb,mCAAa;IACb,2CAAqB;AACzB,CAAC,EARW,kBAAkB,KAAlB,kBAAkB,QAQ7B;AAEM,MAAM,mBAAmB;IAGrB,MAAM,CAAC,SAAS,CAAC,GAAiC;QACrD,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,GAAG,EAAE,CAAC;YACN,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACvE,OAAO,QAAQ,KAAK,MAAM,IAAI,MAAM,KAAK,MAAM,CAAC;QACpD,CAAC;QACD,OAAO,MAAM,KAAK,MAAM,CAAC;IAC7B,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,GAAgC;QACjD,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAClE,CAAC;IAEM,MAAM,CAAC,OAAO,CAAC,GAAgC;QAClD,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC;IAEM,MAAM,CAAC,SAAS;QACnB,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAEM,MAAM,CAAC,UAAU;QACpB,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,GAAiC;QACjD,IAAI,GAAG,EAAE,CAAC;YACN,YAAY,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACJ,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC;IACL,CAAC;;AAjCuB,0BAAM,GAAG,cAAc,CAAC;;;;;;ACb5B;AAC0C;AAYlE,MAAM,YAAY;IACd,YAAmC,MAAoB,EAAkB,OAAsB,EAAkB,OAAiC;QAA/G,WAAM,GAAN,MAAM,CAAc;QAAkB,YAAO,GAAP,OAAO,CAAe;QAAkB,YAAO,GAAP,OAAO,CAA0B;IAClJ,CAAC;IAED,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC;IACvC,CAAC;IASM,MAAM,CAAC,aAA0C,EAAE,aAA6D,EAAE,OAAsB,EAAE,IAA0B;QACvK,IAAI,YAA0B,CAAC;QAC/B,IAAI,aAAuC,CAAC;QAC5C,IAAI,aAAkD,CAAC;QACvD,IAAI,WAAW,GAAwB,QAAQ,CAAC;QAEhD,IAAI,aAAa,YAAY,YAAY,EAAE,CAAC;YACxC,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC;YACpC,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC;YACtC,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC;YACtC,WAAW,GAAI,aAAqC,IAAI,QAAQ,CAAC;QAErE,CAAC;aAAM,CAAC;YACJ,YAAY,GAAG,aAAa,CAAC;YAE7B,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;gBACpC,WAAW,GAAG,aAAa,CAAC;gBAC5B,aAAa,GAAG,OAAO,CAAC;gBACxB,aAAa,GAAG,SAAS,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACJ,aAAa,GAAG,aAAa,CAAC;gBAC9B,aAAa,GAAG,OAAO,CAAC;gBACxB,WAAW,GAAG,IAAI,IAAI,QAAQ,CAAC;YACnC,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,WAAW,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,KAAK,aAAa,EAAE,CAAC;YAC7D,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,OAAO,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACnE,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,IAA8B,EAAE,KAA+B;QACvF,MAAM,UAAU,GAAG,CAAC,OAA4C,EAAE,GAAmC,EAAW,EAAE,CAC9G,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;QAC5B,MAAM,SAAS,GAAG,CAAC,OAA4C,EAA2B,EAAE,CACxF,OAAO,EAAE,MAAM,CAAC;QAEpB,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAErC,MAAM,YAAY,GAAG,UAAU,KAAK,WAAW,CAAC;QAEhD,OAAO,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC;eAC5D,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC;eACtD,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC;eAC5D,YAAY,CAAC;IACxB,CAAC;CACJ;AAED,MAAM,gBAAgB;IAGlB,YAAoC,MAAoB;QAApB,WAAM,GAAN,MAAM,CAAc;QAFhD,eAAU,GAAgC,IAAI,GAAG,EAAE,CAAC;IAG5D,CAAC;IAEO,MAAM,CAAC,KAAa;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;IACpF,CAAC;IAEO,IAAI,CAAC,KAAa,EAAE,KAAmB;QAC3C,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,SAAS,CAAC;IAC/E,CAAC;IAEM,GAAG,CAAC,KAAa,EAAE,KAAmB;QACzC,IAAI,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9E,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,KAAa,EAAE,KAAoB;QAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACxC,IAAI,CAAC,IAAI;gBAAE,OAAO;YAClB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC;YAC1G,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9B,OAAO;QACX,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,IAAI,EAAE,CAAC;YACP,MAAM,SAAS,GAAmB,EAAE,CAAC;YACrC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBACnB,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC;oBAC5B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,IAAI,KAAK,CAAC,CAAC;gBAC3F,CAAC;qBAAM,CAAC;oBACJ,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACtB,CAAC;YACL,CAAC;YACD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAC1C,CAAC;QACL,CAAC;IACL,CAAC;IAED,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,CAAC;IACtC,CAAC;CACJ;AAED,MAAM,aAAa;IAAnB;QAEY,cAAS,GAAkC,IAAI,GAAG,EAAE,CAAC;IAqCjE,CAAC;IAnCU,MAAM,KAAK,QAAQ;QACtB,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC,CAAC;IACpE,CAAC;IAEO,GAAG,CAAC,MAAoB;QAC5B,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACrC,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,QAAQ,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACxC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAEM,EAAE,CAAC,KAAa,EAAE,MAAoB,EAAE,KAAmB;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;IAEM,GAAG,CAAC,KAAa,EAAE,MAAoB,EAAE,KAAoB;QAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,IAAI,KAAK,EAAE,CAAC;YACR,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACJ,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC7C,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,MAAoB;QAC7B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC;CACJ;AAOM,MAAM,mBAAmB;IAM5B,YAAmB,OAAqC,EAAE;QALnD,aAAQ,GAAmB,QAAQ,CAAC;QACpC,iBAAY,GAAY,IAAI,CAAC;QAC7B,UAAK,GAA0B,SAAS,CAAC;QACzC,WAAM,GAA0B,SAAS,CAAC;QAG7C,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;YAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/D,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;YAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QAC3E,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACtD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC7D,CAAC;IAED,IAAW,eAAe;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAEM,MAAM,CAAC,IAAI,CAAC,OAA4D;QAC3E,IAAI,OAAO,YAAY,mBAAmB;YAAE,OAAO,OAAO,CAAC;QAC3D,OAAO,IAAI,mBAAmB,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;CACJ;AAEM,MAAM,aAAa;IAGf,MAAM,CAAC,UAAU,CAAC,IAAY;QACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1C,GAAG,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;QAC7B,OAAO,GAAG,CAAC,SAAS,CAAC;IACzB,CAAC;IAEO,MAAM,CAAC,iBAAiB,CAAC,IAAY;QACzC,MAAM,UAAU,GAAuD;YACnE,IAAI,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,kBAAkB,EAAE;YAC9D,IAAI,EAAE,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,uBAAuB,EAAE;YACvE,IAAI,EAAE,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,uBAAuB,EAAE;YACvE,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE;YAClD,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE;YAClD,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE;YAClD,SAAS,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE;YACpD,UAAU,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE;YACrD,KAAK,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,qBAAqB,EAAE;YACrE,QAAQ,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE;YACrD,UAAU,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE;YACvD,QAAQ,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE;YACzD,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;SAC5C,CAAC;QAEF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,0CAA0C,IAAI,GAAG,CAAC,CAAC;QACvE,CAAC;QACD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAEnC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAExE,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAChD,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,OAAO,IAAI,GAAG,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,yDAAyD,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1G,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,eAAe,GAAG,yBAAyB,IAAI,GAAG,CAAC,CAAC;QACxE,CAAC;QAED,OAAO,OAAsB,CAAC;IAClC,CAAC;IAEM,MAAM,CAAC,KAAK,CAA0C,QAAgB,EAAE,IAAiC;QAC5G,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAC/B,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,aAAa,CAA+B,CAAC;QACnE,OAAO,IAAI,IAAI,CAAc,OAAO,CAAC,CAAC;IAC1C,CAAC;IAEM,MAAM,CAAC,IAAI,CAA0C,QAAgB,EAAE,IAAiC;QAC3G,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAI,QAAQ,EAAE,IAAI,CAAC,CAAC;QACvD,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAC,IAAI,CAA0C,QAAgB,EAAE,IAAiC;QAC3G,MAAM,QAAQ,GAAG,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,aAAa,CAA+B,CAAC;QACnE,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAc,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,QAAgB;QACnC,OAAO,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;IACrD,CAAC;IAEM,MAAM,CAAC,IAAI,CAA0C,EAAU,EAAE,IAAiC;QACrG,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,aAAa,CAA+B,CAAC;QACnE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAc,OAAO,CAAC,CAAC;IACjE,CAAC;IAEM,MAAM,CAAC,YAAY,CAAC,EAAU;QACjC,OAAO,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC;IAChD,CAAC;IAEM,MAAM,CAAC,KAAK,CAA0C,IAAiC;QAC1F,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,aAAa,CAA+B,CAAC;QACnE,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC/G,CAAC;IAUD,YAAmB,OAAiH;QAH5H,mBAAc,GAAyB,IAAI,CAAC;QAIhD,IAAI,OAAO,YAAY,WAAW,EAAE,CAAC;YACjC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QAC5B,CAAC;aAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YACrC,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,iBAAiB,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,MAAM,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;YAChI,IAAI,SAAS,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACvC,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;YAC7C,CAAC;YACD,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACnC,CAAC;YACD,IAAI,mBAAmB,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzD,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;oBACpB,OAAO,CAAC,KAAK,CAAC,yBAAyB,OAAO,CAAC,IAAI,gBAAgB,CAAC,CAAC;gBACzE,CAAC;gBACD,IAAI,SAAS,IAAI,OAAO,EAAE,CAAC;oBACvB,OAAO,CAAC,KAAK,CAAC,4BAA4B,OAAO,CAAC,OAAO,aAAa,OAAO,CAAC,IAAI,IAAI,EAAE,eAAe,CAAC,CAAC;gBAC7G,CAAC;gBACD,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;oBACd,OAAO,CAAC,KAAK,CAAC,wBAAwB,OAAO,CAAC,GAAG,gBAAgB,CAAC,CAAC;gBACvE,CAAC;YACL,CAAC;QACL,CAAC;QACD,IAAI,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;IAMO,aAAa;QACjB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE,cAAI,EAAE,CAAC,CAAC;YAC/C,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,iBAAiB,CAAY,4DAA4D,CAAC,CAAC;gBACzH,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;gBAChC,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;gBACzC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC,CAAC;YAC5F,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;gBAC9B,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;gBAC3C,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC,CAAC;YAC9F,CAAC,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED,IAAW,UAAU;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAE,CAAC;IACnD,CAAC;IAED,IAAW,OAAO;QACd,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,cAAI,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAE,CAAC;IAClD,CAAC;IAQD,IAAW,QAAQ;QACf,OAAO,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvE,CAAC;IAED,IAAY,kBAAkB;QAC1B,OAAO,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACjC,CAAC;IAEO,YAAY,CAAC,GAAW;QAC5B,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACvB,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;YACtB,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC;YACtC,aAAa,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACzD,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrC,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,GAAG,EAAE,CAAC;YACtD,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,yBAAyB,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;YAC/F,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC/C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC1B,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC;YACnB,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC;mBAC7B,IAAI,aAAa,CAAC,EAAE,IAAI,EAAa,eAAe,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;YAC1H,IAAI,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAExC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;gBACd,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,yBAAyB,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC;gBAChG,IAAI,CAAC,YAAY,EAAE,CAAC;oBAChB,aAAa,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC7D,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,eAAe;QACnB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvC,CAAC;IACL,CAAC;IAUM,kBAAkB;QACrB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,8BAA8B,EAAE,EAAE,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IAChB,CAAC;IAQD,IAAW,EAAE;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAEM,UAAU,CAAC,SAAiB,iBAAiB;QAChD,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACX,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,MAAM,GAAG,cAAI,EAAE,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAEM,KAAK,CAA0C,IAAiC;QACnF,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,aAAa,CAA+B,CAAC;QACnE,MAAM,mBAAmB,GAAG,CAAC,sBAAsB,EAAE,oBAAoB,CAAC,CAAC;QAC3E,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAgB,CAAC;QAElE,IAAI,aAAa,CAAC,YAAY,CAAC,yBAAyB,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAClE,CAAC;QAED,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC/B,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACpC,aAAa,CAAC,gBAAgB,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;QACxF,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC;QACtC,MAAmC,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClE,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IAC9C,CAAC;IAMM,EAAE,CAAC,QAAgB;QACtB,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC/D,IAAI,OAAO,GAAuB,IAAI,CAAC,OAAO,CAAC;QAE/C,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,IAAI,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACtC,IAAI,WAAW,GAAG,KAAK,CAAC;YAExB,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9B,WAAW,GAAG,IAAI,CAAC;gBACnB,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9C,CAAC;YAED,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC5C,OAAO,KAAK,CAAC;YACjB,CAAC;YAED,IAAI,WAAW,EAAE,CAAC;gBACd,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBACR,OAAO,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;wBAC1D,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;oBACpC,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,QAAgB;QACzB,IAAI,CAAC;YACD,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED,IAAW,KAAK;QACZ,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;YACzB,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI;YAClE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK;YACtE,MAAM,EAAE,MAAM,EAAE,MAAM;SACzB,CAAC,CAAC;QAEH,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;eAC1B,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,mBAAmB,CAAC;eAC/C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;IACrD,CAAC;IAQD,IAAW,QAAQ;QACf,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;IACpC,CAAC;IAED,IAAW,QAAQ;QACf,IAAI,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7B,OAAgB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC1C,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QACjD,CAAC;IACL,CAAC;IAED,IAAW,QAAQ,CAAC,QAAiB;QACjC,IAAI,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACrC,CAAC;aAAM,CAAC;YACJ,IAAI,QAAQ,EAAE,CAAC;gBACX,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YACrC,CAAC;QACL,CAAC;IACL,CAAC;IAED,IAAW,KAAK;QACZ,IAAI,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC1B,OAAe,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACtC,CAAC;aAAM,CAAC;YAEJ,OAAO,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;QACrD,CAAC;IACL,CAAC;IAED,IAAW,KAAK,CAAC,GAAW;QACxB,IAAI,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC;QAC7B,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QAC7C,CAAC;IACL,CAAC;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED,IAAW,IAAI,CAAC,IAAY;QACxB,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;IAClC,CAAC;IAED,IAAW,IAAI,CAAC,IAAY;QACxB,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAClC,CAAC;IAQM,QAAQ;QACX,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAW,OAAO;QACd,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC/C,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAClD,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtC,OAAO,KAAK,CAAC,OAAO,KAAK,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,KAAK,UAAU,CAAC;QACxG,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAW,QAAQ;QACf,IAAI,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;gBAAE,OAAO,IAAI,CAAC;YACzC,OAAgB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC1C,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IAED,IAAW,QAAQ,CAAC,KAAc;QAC9B,IAAI,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;YAC9B,OAAO;QACX,CAAC;QACD,IAAI,KAAK,EAAE,CAAC;YACR,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACrC,CAAC;IACL,CAAC;IAED,IAAW,OAAO;QACd,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC1B,CAAC;IAED,IAAW,OAAO,CAAC,KAAc;QAC7B,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC;IAC3B,CAAC;IAED,IAAY,WAAW;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,yBAAyB,CAAC,CAAC;IAChE,CAAC;IAEM,MAAM;QACT,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACpB,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC3B,CAAC;IACL,CAAC;IAEM,KAAK;QACR,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IAChB,CAAC;IAQD,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;IACpC,CAAC;IAED,IAAW,KAAK,CAAC,KAAa;QAC1B,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;IACrC,CAAC;IAED,IAAW,MAAM,CAAC,MAAc;QAC5B,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED,IAAW,UAAU;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;IACpC,CAAC;IAED,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;IACrC,CAAC;IAED,IAAW,UAAU;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC;IAC7C,CAAC;IAED,IAAW,WAAW;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC;IAC9C,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;IACrC,CAAC;IAED,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;IACpC,CAAC;IAED,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;IAClC,CAAC;IAED,IAAW,QAAQ;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAClD,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IAC9C,CAAC;IAED,IAAW,gBAAgB;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAClD,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IAChF,CAAC;IAED,IAAW,cAAc;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAClD,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IAC9C,CAAC;IAED,IAAW,IAAI;QACX,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAClD,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IACtF,CAAC;IAED,IAAW,SAAS;QAChB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG;YACZ,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC;YACjC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC;YACrC,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC;YACvC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC;SACtC,CAAC;QACF,OAAO;YACH,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG;YAC3B,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI;YAC9B,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK;YAChD,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM;SACrD,CAAC;IACN,CAAC;IAED,IAAW,SAAS;QAChB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG;YACX,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC;YAChC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC;YACpC,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC;YACtC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC;SACrC,CAAC;QACF,OAAO;YACH,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG;YAC1B,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI;YAC7B,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK;YAC9C,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM;SACnD,CAAC;IACN,CAAC;IAEO,MAAM,CAAC,YAAY,CACvB,IAAkE,EAClE,KAAmE;QAEnE,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC/E,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACzC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;QAC5C,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;QAE7C,OAAO,IAAI,CAAC,IAAI,GAAG,UAAU;eAClB,SAAS,GAAG,KAAK,CAAC,IAAI;eACtB,IAAI,CAAC,GAAG,GAAG,WAAW;eACtB,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC;IACtC,CAAC;IAEM,QAAQ,CAAC,MAAqB;QACjC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrC,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC;YAClC,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC;IAED,IAAW,eAAe;QACtB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjB,OAAO,EAAE,CAAC;QACd,CAAC;QACD,OAAO,aAAa,CAAC,IAAI,CAAC,wBAAwB,CAAC;aAC9C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC;aACvC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IAGD,IAAW,OAAO;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtC,OAAO;YACH,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC;YACjC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC;YACrC,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC;YACvC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC;SACtC,CAAC;IACN,CAAC;IAED,IAAW,MAAM;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtC,OAAO;YACH,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC;YAChC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC;YACpC,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC;YACtC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC;SACrC,CAAC;IACN,CAAC;IAED,IAAW,UAAU;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAClD,OAAO,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5D,CAAC;IAED,IAAW,eAAe;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3D,CAAC;IAED,IAAW,eAAe;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC;IACzE,CAAC;IAED,IAAW,cAAc;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;IAC1D,CAAC;IAED,IAAW,eAAe;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;IACzE,CAAC;IAEO,MAAM,CAAC,oBAAoB,CAAC,KAAa;QAC7C,MAAM,QAAQ,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7C,OAAO,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,QAAQ,CAAC;IACxD,CAAC;IAEO,MAAM,CAAC,6BAA6B,CAAC,OAAoB;QAC7D,IAAI,OAAO,GAAuB,OAAO,CAAC,aAAa,CAAC;QACxD,OAAO,OAAO,EAAE,CAAC;YACb,IAAI,OAAO,KAAK,QAAQ,CAAC,IAAI,IAAI,OAAO,KAAK,QAAQ,CAAC,eAAe,EAAE,CAAC;gBACpE,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAC/C,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;YAClC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;YAElC,MAAM,UAAU,GAAG,aAAa,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;YAChH,MAAM,UAAU,GAAG,aAAa,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;YAE9G,IAAI,UAAU,IAAI,UAAU,EAAE,CAAC;gBAC3B,OAAO,OAAO,CAAC;YACnB,CAAC;YACD,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;QACpC,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,MAAM,CAAC,oBAAoB,CAC/B,SAAiB,EACjB,QAAgB,EAChB,YAAoB,EACpB,UAAkB,EAClB,KAA4B,EAC5B,YAAqB;QAErB,MAAM,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;QAGrC,IAAI,YAAY,IAAI,YAAY,IAAI,SAAS,IAAI,UAAU,IAAI,OAAO,EAAE,CAAC;YACrE,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;YACpB,OAAO,YAAY,CAAC;QACxB,CAAC;QACD,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YAClB,OAAO,UAAU,GAAG,QAAQ,CAAC;QACjC,CAAC;QACD,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrB,MAAM,WAAW,GAAG,UAAU,GAAG,YAAY,CAAC;YAC9C,OAAO,YAAY,GAAG,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QACvD,CAAC;QAGD,IAAI,YAAY,GAAG,SAAS,EAAE,CAAC;YAC3B,OAAO,YAAY,CAAC;QACxB,CAAC;QACD,IAAI,UAAU,GAAG,OAAO,EAAE,CAAC;YACvB,OAAO,UAAU,GAAG,QAAQ,CAAC;QACjC,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,QAAQ,CAAC,UAA8D,EAAE;QAC5E,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAEhC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,CAAC;QAC1C,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC7B,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAE/B,MAAM,UAAU,GAAG,aAAa,CAAC,6BAA6B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7E,IAAI,UAAU,EAAE,CAAC;YACb,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;YACzD,MAAM,aAAa,GAAG,UAAU,CAAC,qBAAqB,EAAE,CAAC;YAEzD,MAAM,qBAAqB,GAAG,WAAW,CAAC,GAAG,GAAG,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,SAAS,CAAC;YACzF,MAAM,wBAAwB,GAAG,WAAW,CAAC,MAAM,GAAG,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,SAAS,CAAC;YAC/F,MAAM,sBAAsB,GAAG,WAAW,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC;YAC7F,MAAM,uBAAuB,GAAG,WAAW,CAAC,KAAK,GAAG,aAAa,CAAC,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC;YAE/F,MAAM,SAAS,GAAG,aAAa,CAAC,oBAAoB,CAChD,UAAU,CAAC,SAAS,EACpB,UAAU,CAAC,YAAY,EACvB,qBAAqB,EACrB,wBAAwB,EACxB,KAAK,EACL,YAAY,CACf,CAAC;YACF,MAAM,UAAU,GAAG,aAAa,CAAC,oBAAoB,CACjD,UAAU,CAAC,UAAU,EACrB,UAAU,CAAC,WAAW,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,MAAM,EACN,YAAY,CACf,CAAC;YAEF,IAAI,CAAC,YAAY,IAAI,SAAS,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;gBAC7D,MAAM,OAAO,GAAG,SAAS,IAAI,UAAU,CAAC,SAAS,CAAC;gBAClD,MAAM,QAAQ,GAAG,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC;gBACpD,UAAkB,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC3E,IAAI,CAAE,UAAkB,CAAC,QAAQ,EAAE,CAAC;oBAChC,UAAU,CAAC,SAAS,GAAG,OAAO,CAAC;oBAC/B,UAAU,CAAC,UAAU,GAAG,QAAQ,CAAC;gBACrC,CAAC;YACL,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAClD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,IAAI,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC;QACxE,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,IAAI,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC;QAE1E,MAAM,UAAU,GAAG,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC;QACzC,MAAM,aAAa,GAAG,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;QAC/C,MAAM,WAAW,GAAG,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;QAC5C,MAAM,YAAY,GAAG,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;QAE9C,MAAM,SAAS,GAAG,aAAa,CAAC,oBAAoB,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;QACrI,MAAM,UAAU,GAAG,aAAa,CAAC,oBAAoB,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QAEvI,IAAI,CAAC,YAAY,IAAI,SAAS,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YAC7D,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,SAAS,IAAI,UAAU,EAAE,IAAI,EAAE,UAAU,IAAI,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjG,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,QAAQ,CAAC,MAA4C,EAAE,UAA8D,EAAE;QAC1H,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACnC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC3B,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,MAAM,YAAY,aAAa,EAAE,CAAC;YAClC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACzB,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,WAAW,CAAC,MAAqB;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACjE,IAAI,GAAG,GAAG,IAAI,CAAC,8BAA8B;YAAE,OAAO,KAAK,CAAC;QAC5D,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;IAC1D,CAAC;IAEM,UAAU,CAAC,MAAqB;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACjE,IAAI,GAAG,GAAG,IAAI,CAAC,8BAA8B;YAAE,OAAO,KAAK,CAAC;QAC5D,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;IAC1D,CAAC;IAQM,YAAY,CAAC,IAAY;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAIM,SAAS,CAAC,IAAY,EAAE,KAA0C;QACrE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAEzB,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzF,CAAC;aAAM,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAEvB,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACnC,OAAO,IAAI,CAAC;QAChB,CAAC;aAAM,CAAC;YAEJ,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAEM,QAAQ,CAAC,IAAY;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;IAEM,QAAQ,CAAC,IAAY;QACxB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,WAAW,CAAC,IAAY;QAC3B,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,WAAW,CAAC,IAAY,EAAE,KAAe;QAC5C,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC;IAChB,CAAC;IAIM,KAAK,CAAC,IAAY,EAAE,KAAiC;QACxD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAEzB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACrD,CAAC;aAAM,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAEvB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC;QAChB,CAAC;aAAM,CAAC;YAEJ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC5C,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAES,gBAAgB;QACtB,OAAO,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;IAEM,aAAa,CAAC,IAAY;QAC7B,OAAO,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC;IAQD,IAAW,MAAM;QACb,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;YACrE,IAAI,CAAC,cAAc,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;IACxD,CAAC;IAED,IAAW,OAAO;QACd,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QAChD,OAAO,cAAc,KAAK,IAAI,EAAE,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC;YAChD,cAAc,GAAG,cAAc,CAAC,aAAa,CAAC;QAClD,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAEM,WAAW,CAAC,WAAmB,GAAG;QACrC,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;IACzD,CAAC;IACM,QAAQ,CAA0C,WAAmB,GAAG,EAAE,IAAiC;QAC9G,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrE,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC;QACtF,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,aAAa,CAA+B,CAAC;QACnE,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAoB,EAAE,CAAC,CAAC,YAAY,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1G,CAAC;IAEM,UAAU,CAA0C,WAAmB,GAAG,EAAE,IAAiC;QAChH,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAI,QAAQ,EAAE,IAAI,CAAC,CAAC;QAClD,OAAO,QAAQ,CAAC,KAAK,EAAE,IAAI,SAAS,CAAC;IACzC,CAAC;IAEM,SAAS,CAA0C,WAAmB,GAAG,EAAE,IAAiC;QAC/G,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAI,QAAQ,EAAE,IAAI,CAAC,CAAC;QAClD,OAAO,QAAQ,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC;IACvC,CAAC;IAEM,OAAO,CAA0C,QAAgB,EAAE,IAAiC;QACvG,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACtD,IAAI,cAAc,KAAK,IAAI,IAAI,cAAc,YAAY,WAAW,EAAE,CAAC;YACnE,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,aAAa,CAA+B,CAAC;YACnE,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACJ,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;IAEM,eAAe,CAA0C,WAAmB,GAAG,EAAE,IAAiC;QACrH,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC;QACpD,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,YAAY,WAAW,EAAE,CAAC;YACrD,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,aAAa,CAA+B,CAAC;YACnE,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7B,OAAO,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAI,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACJ,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;IAEM,WAAW,CAA0C,WAAmB,GAAG,EAAE,IAAiC;QACjH,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAChD,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,YAAY,WAAW,EAAE,CAAC;YACrD,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,aAAa,CAA+B,CAAC;YACnE,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7B,OAAO,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAI,QAAQ,EAAE,IAAI,CAAC,CAAC;QACvE,CAAC;aAAM,CAAC;YACJ,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;IAEM,QAAQ,CAA0C,WAAmB,GAAG,EAAE,IAAiC;QAC9G,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QAC1C,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,aAAa,CAA+B,CAAC;QACnE,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAoB,EAAE,CAAC,CAAC,YAAY,WAAW;eAChF,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxF,CAAC;IAQM,IAAI,CAA0C,QAAgB,EAAE,IAAiC;QACpG,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAkB,CAAC;QACtF,OAAY,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IAEM,KAAK,CAA0C,WAAmB,GAAG,EAAE,IAAiC;QAC3G,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC3C,OAAU,QAAQ,CAAC,KAAK,EAAE,IAAI,SAAS,CAAC;IAC5C,CAAC;IAEM,IAAI,CAA0C,WAAmB,GAAG,EAAE,IAAiC;QAC1G,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC3C,OAAU,QAAQ,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC;IAC1C,CAAC;IAEM,QAAQ,CAAC,QAAgB;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1C,CAAC;IAEO,MAAM,CAAC,iBAAiB,CAAC,MAAqB,EAAE,SAAqB;QACzE,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QACtC,IAAI,CAAC;YACD,SAAS,EAAE,CAAC;QAChB,CAAC;gBAAS,CAAC;YACP,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACxC,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,SAAS,CAAC,MAA+D;QACpF,OAAO,MAAM,YAAY,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;IAChF,CAAC;IAEM,OAAO,CAAC,OAAgE;QAC3E,MAAM,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC3C,aAAa,CAAC,iBAAiB,CAAC,CAAC,EAAE,GAAG,EAAE;YACpC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,MAAM,CAAC,MAA+D;QACzE,MAAM,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC1C,aAAa,CAAC,iBAAiB,CAAC,CAAC,EAAE,GAAG,EAAE;YACpC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,SAAS,CAAC,OAAuE;QACpF,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,YAAY,CAAC,MAA+D;QAC/E,MAAM,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC1C,aAAa,CAAC,iBAAiB,CAAC,CAAC,EAAE,GAAG,EAAE;YACpC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,WAAW,CAAC,MAA+D;QAC9E,MAAM,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC1C,aAAa,CAAC,iBAAiB,CAAC,CAAC,EAAE,GAAG,EAAE;YACpC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,QAAQ,CAAC,MAAqB;QACjC,aAAa,CAAC,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE;YACvC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,SAAS,CAAC,MAAqB;QAClC,aAAa,CAAC,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE;YACvC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IAYM,OAAO,CAAC,KAAqB,EAAE,CAAS;QAC3C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAClC,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC;IAChB,CAAC;IAIM,EAAE,CAAC,KAAwB,EAAE,MAA0C,EAAE,OAAiC;QAC7G,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACtD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YACvB,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YAC3D,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IAChB,CAAC;IAIM,SAAS,CAAC,KAAwB,EAAE,QAAgB,EAAE,MAA0C,EAAE,OAAiC;QACtI,MAAM,QAAQ,GAAiB,CAAC,CAAQ,EAAE,EAAE;YACxC,MAAM,MAAM,GAAG,CAAC,CAAC,MAA4B,CAAC;YAC9C,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACrC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;YACrB,CAAC;QACL,CAAC,CAAC;QACF,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACtD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YACvB,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC1D,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IAChB,CAAC;IAIM,IAAI,CAAC,KAAwB,EAAE,MAA0C,EAAE,OAAiC;QAC/G,MAAM,aAAa,GAA4B,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAClF,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACtD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YACvB,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;YACjE,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IAChB,CAAC;IAKM,GAAG,CAAC,KAAwB,EAAE,MAA2C,EAAE,OAAiC;QAC/G,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACtD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YACvB,IAAI,MAAM,EAAE,CAAC;gBACT,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;gBAC3D,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACJ,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAChD,CAAC;QACL,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IAChB,CAAC;IAMM,KAAK,CAAC,MAAgD;QACzD,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,MAAM,MAAM,CAAC,CAAe,CAAC,CAAC,CAAC;QACrF,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAIM,QAAQ,CAAC,MAAgD;QAC5D,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,MAAM,MAAM,CAAC,CAAe,CAAC,CAAC,CAAC;QACxF,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAIM,SAAS,CAAC,MAAgD;QAC7D,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,MAAM,MAAM,CAAC,CAAe,CAAC,CAAC,CAAC;QACzF,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAIM,QAAQ,CAAC,MAAgD;QAC5D,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,MAAM,MAAM,CAAC,CAAe,CAAC,CAAC,CAAC;QACxF,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAIM,SAAS,CAAC,MAAgD;QAC7D,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,MAAM,MAAM,CAAC,CAAe,CAAC,CAAC,CAAC;QACzF,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAIM,OAAO,CAAC,MAAgD;QAC3D,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,MAAM,MAAM,CAAC,CAAe,CAAC,CAAC,CAAC;QACvF,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAIM,SAAS,CAAC,MAAgD;QAC7D,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,MAAM,MAAM,CAAC,CAAe,CAAC,CAAC,CAAC;QACzF,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAIM,UAAU,CAAC,MAAgD;QAC9D,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,YAAY,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,MAAM,MAAM,CAAC,CAAe,CAAC,CAAC,CAAC;QAC1F,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAIM,UAAU,CAAC,MAAgD;QAC9D,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,YAAY,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,MAAM,MAAM,CAAC,CAAe,CAAC,CAAC,CAAC;QAC1F,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAIM,SAAS,CAAC,MAA+C;QAC5D,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,MAAM,MAAM,CAAC,CAAc,CAAC,CAAC,CAAC;QACxF,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAIM,OAAO,CAAC,MAA+C;QAC1D,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,MAAM,MAAM,CAAC,CAAc,CAAC,CAAC,CAAC;QACtF,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAIM,QAAQ,CAAC,MAA+C;QAC3D,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,MAAM,MAAM,CAAC,CAAc,CAAC,CAAC,CAAC;QACvF,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAIM,SAAS,CAAC,MAA+C;QAC5D,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,MAAM,MAAM,CAAC,CAAc,CAAC,CAAC,CAAC;QACxF,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAIM,SAAS,CAAC,MAA+C;QAC5D,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,MAAM,MAAM,CAAC,CAAc,CAAC,CAAC,CAAC;QACxF,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAIM,IAAI,CAAC,MAA+C;QACvD,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,MAAM,MAAM,CAAC,CAAc,CAAC,CAAC,CAAC;QACnF,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAIM,IAAI,CAAC,MAA+C;QACvD,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,MAAM,MAAM,CAAC,CAAc,CAAC,CAAC,CAAC;QACnF,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,OAAO,CAAC,MAA4C;QACvD,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC;IAChB,CAAC;IAUM,OAAO,CAAC,MAAmD;QAC9D,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,MAAM,MAAM,CAAC,CAAkB,CAAC,CAAC,CAAC;QAC1F,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAIM,KAAK,CAAC,MAAmD;QAC5D,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,MAAM,MAAM,CAAC,CAAkB,CAAC,CAAC,CAAC;QACxF,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAIM,QAAQ,CAAC,MAAmD;QAC/D,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,MAAM,MAAM,CAAC,CAAkB,CAAC,CAAC,CAAC;QAC3F,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IASM,MAAM,CAAC,MAA2C;QACrD,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAIM,KAAK,CAAC,MAA2C;QACpD,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAQM,MAAM,KAAK,oBAAoB;QAClC,OAAO,aAAa,CAAC,qBAAqB,GAAG,aAAa,CAAC,qBAAqB;eACrE,IAAI,oBAAoB,CAAC,OAAO,CAAC,EAAE;gBAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,OAAO,CAC7C,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAClE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,OAAO,CAC9C,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACvE,CAAC,CAAC,CAAC;IACf,CAAC;IAIM,MAAM,CAAC,MAA2C;QACrD,IAAI,MAAM,EAAE,CAAC;YACT,aAAa,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzD,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAIM,OAAO,CAAC,MAA2C;QACtD,IAAI,MAAM,EAAE,CAAC;YACT,aAAa,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzD,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAIM,KAAK,CAAC,MAAgD;QACzD,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,MAAM,MAAM,CAAC,CAAe,CAAC,CAAC,CAAC;QACrF,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAIM,IAAI,CAAC,MAAgD;QACxD,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,MAAM,MAAM,CAAC,CAAe,CAAC,CAAC,CAAC;QACpF,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAIM,OAAO,CAAC,MAAgD;QAC3D,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,MAAM,MAAM,CAAC,CAAe,CAAC,CAAC,CAAC;QACvF,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAIM,QAAQ,CAAC,MAAgD;QAC5D,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,MAAM,MAAM,CAAC,CAAe,CAAC,CAAC,CAAC;QACxF,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,QAAQ,CAAC,MAA+C;QAC3D,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;YAC5C,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,MAAM,EAAE,GAAG,CAAC,CAAC,YAAY,CAAC;YAC1B,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;gBACjB,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;YACvC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IAChB,CAAC;IASM,MAAM,CAAC,MAA2C;QACrD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,eAAe,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/E,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAIM,MAAM,CAAC,MAA2C;QACrD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,eAAe,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/E,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAIM,YAAY,CAAC,MAA2C;QAC3D,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACrF,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;;AAlxCsB,4CAA8B,GAAW,oBAAoB,CAAC;AAipCtE,mCAAqB,GAAgC,IAAI,CAAC;AAsItE,MAAM,iBAAkB,SAAQ,aAAa;IACzC,MAAM,CAAC,GAAG,CAAC,IAAY;QAC1B,OAAO,aAAa,CAAC,KAAK,CAAoB,cAAc,IAAI,MAAM,EAAE,iBAAiB,CAAC;eAC/E,aAAa,CAAC,KAAK,CAAoB,iBAAiB,CAAC,CAAC;IACzE,CAAC;IAED,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAC3C,CAAC;CACJ;AAKM,MAAM,YAAY;IAAzB;QAQY,UAAK,GAAkB,aAAa,CAAC,KAAK,EAAE,CAAC;QAC7C,sBAAiB,GAA4B,IAAI,CAAC;QAClD,eAAU,GAAY,KAAK,CAAC;QAC5B,mBAAc,GAAmE,EAAE,CAAC;IA2OhG,CAAC;IAnPU,MAAM,KAAK,QAAQ;QACtB,OAAO,YAAY,CAAC,SAAS,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,YAAY,EAAE,CAAC,CAAC;IACnF,CAAC;IAQD,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC/B,CAAC;IAEM,UAAU;QACb,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACvE,CAAC;YACD,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,CAAE,CAAC;YAE1C,MAAM,kBAAkB,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,cAAc,CAAC,CAAC;YACzG,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAC3B,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,EAAE;oBAC5B,MAAM,iBAAiB,GAAG,IAAI,WAAW,CAAC,qBAAqB,CAAC,CAAC;oBACjE,MAAM,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;gBAC5C,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1B,CAAC,CAAC,CAAC;YAGH,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE;gBACtC,CAAC,CAAC,eAAe,EAAE,CAAC;gBACpB,CAAC,CAAC,cAAc,EAAE,CAAC;YACvB,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;gBACb,QAAQ,CAAC,gBAAgB,CAAC,IAAI,aAAa,CAAC,8BAA8B,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBACvF,CAAC,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC;gBACtD,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;gBACb,QAAQ,CAAC,gBAAgB,CAAC,IAAI,aAAa,CAAC,8BAA8B,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBACvF,CAAC,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC;gBACtD,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE;gBACnB,QAAQ,CAAC,gBAAgB,CAAC,IAAI,aAAa,CAAC,8BAA8B,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBACvF,CAAC,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,qBAAqB,CAAC,CAAC,CAAC;gBAC5D,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAIH,IAAI,CAAC,iBAAiB,GAAG,IAAI,gBAAgB,CAAC,SAAS,CAAC,EAAE;gBACtD,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;oBACzB,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;wBACjC,IAAI,OAAO,WAAW,KAAK,WAAW,IAAI,IAAI,YAAY,WAAW,EAAE,CAAC;4BACpE,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;4BACxC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;gCACnE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;4BAC/B,CAAC;wBACL,CAAC;oBACL,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAEM,MAAM;QACT,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,QAAQ,CAAC,MAAM,EAAE,CAAC;IACtB,CAAC;IAID,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAEM,MAAM,CAAC,CAA0D;QACpE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,QAAQ,CAAC,OAAsB,EAAE,QAAiB,KAAK;QAC1D,MAAM,QAAQ,GAAG,oCAAoC,CAAC;QACtD,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;aACzE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,aAAa,CAAc,CAAC,CAAC,CAAC;aAC3C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;QAE3G,MAAM,YAAY,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAEpF,IAAI,SAAS,GAAG,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,IAAI,SAAS,IAAI,iBAAiB,CAAC,MAAM,EAAE,CAAC;YACxC,SAAS,GAAG,CAAC,CAAC;QAClB,CAAC;aAAM,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YACvB,SAAS,GAAG,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;QAC7C,CAAC;QAGD,IAAI,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/B,iBAAiB,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5C,CAAC;IACL,CAAC;IAKM,OAAO,CAAC,KAAqB,EAAE,CAAS;QAC3C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YACzB,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,EAAE,CAAC,KAAwB,EAAE,MAA0C;QAC1E,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACtD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YACvB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;gBAAE,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;YACzE,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,GAAG,CAAC,KAAwB,EAAE,MAA2C;QAC5E,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACtD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YACvB,IAAI,MAAM,EAAE,CAAC;gBACT,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;gBACjF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtB,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;gBAC9C,CAAC;qBAAM,CAAC;oBACJ,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC1C,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;oBACnD,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;gBAC7C,CAAC;gBACD,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YAC1C,CAAC;QACL,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,IAAI,CAAC,MAA0C;QAClD,OAAO,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAEM,KAAK,CAAC,MAA4C;QACrD,OAAO,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAIM,MAAM,CAAC,MAA+C;QACzD,IAAI,MAAM,EAAE,CAAC;YACT,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;IACL,CAAC;IAIM,MAAM,CAAC,MAA+C;QACzD,IAAI,MAAM,EAAE,CAAC;YACT,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;IACL,CAAC;IAEM,QAAQ,CAAC,MAA4C,EAAE,UAA8D,EAAE;QAC1H,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC5C,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC3B,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,MAAM,YAAY,aAAa,EAAE,CAAC;YAClC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACzB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IAChB,CAAC;IAIM,YAAY,CAAC,MAA+C;QAC/D,IAAI,MAAM,EAAE,CAAC;YACT,OAAO,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QAC/C,CAAC;IACL,CAAC;IAIM,QAAQ,CAAC,MAA6D;QACzE,IAAI,MAAM,EAAE,CAAC;YACT,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,MAA4C,CAAC,CAAC;QAC7E,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC;IACL,CAAC;IAED,IAAW,SAAS;QAChB,OAAO,MAAM,CAAC,OAAO,IAAI,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC;IAChE,CAAC;IAED,IAAW,UAAU;QACjB,OAAO,MAAM,CAAC,OAAO,IAAI,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC;IACjE,CAAC;IAED,IAAW,KAAK;QACZ,OAAO,MAAM,CAAC,UAAU,CAAC;IAC7B,CAAC;IAED,IAAW,MAAM;QACb,OAAO,MAAM,CAAC,WAAW,CAAC;IAC9B,CAAC;IAED,IAAW,aAAa;QACpB,OAAO,QAAQ,CAAC,eAAe,CAAC,WAAW,CAAC;IAChD,CAAC;IAED,IAAW,cAAc;QACrB,OAAO,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC;IACjD,CAAC;;AApPc,sBAAS,GAAwB,IAAI,CAAC;;;AC1sD/B;AACmB;AACV;AACa;AACkB;AAC3B;AAEvC,0BAAY,CAAC,eAAG,CAAC,CAAC;AAClB,0BAAY,CAAC,oBAAQ,CAAC,CAAC;AAMhB,MAAM,kBAAmB,SAAQ,KAAK;IACzC,YACoB,MAAc,EACd,OAAe,EACf,QAA2B,EAC3B,WAAmB,EAAE;QAErC,KAAK,CAAC,OAAO,CAAC,CAAC;QALC,WAAM,GAAN,MAAM,CAAQ;QACd,YAAO,GAAP,OAAO,CAAQ;QACf,aAAQ,GAAR,QAAQ,CAAmB;QAC3B,aAAQ,GAAR,QAAQ,CAAa;QAGrC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACrC,CAAC;CACJ;AAGM,MAAM,qBAAsB,SAAQ,kBAAkB;IACzD,YAAY,MAAc,EAAE,OAAe,EAAE,QAA2B,EAAE,IAAI,GAAG,EAAE;QAC/E,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACxC,CAAC;CACJ;AACM,MAAM,2BAA4B,SAAQ,qBAAqB;IAClE,YAAY,MAAc,EAAE,OAAe,EAAE,QAA2B,EAAE,IAAI,GAAG,EAAE;QAC/E,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAC9C,CAAC;CACJ;AACM,MAAM,wBAAyB,SAAQ,qBAAqB;IAC/D,YAAY,MAAc,EAAE,OAAe,EAAE,QAA2B,EAAE,IAAI,GAAG,EAAE;QAC/E,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IAC3C,CAAC;CACJ;AACM,MAAM,uBAAwB,SAAQ,qBAAqB;IAC9D,YAAY,MAAc,EAAE,OAAe,EAAE,QAA2B,EAAE,IAAI,GAAG,EAAE;QAC/E,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IAC1C,CAAC;CACJ;AACM,MAAM,uBAAwB,SAAQ,qBAAqB;IAC9D,YAAY,MAAc,EAAE,OAAe,EAAE,QAA2B,EAAE,IAAI,GAAG,EAAE;QAC/E,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IAC1C,CAAC;CACJ;AAEM,MAAM,6BAA8B,SAAQ,qBAAqB;IACpE,YAAY,MAAc,EAAE,OAAe,EAAE,QAA2B,EAAE,IAAI,GAAG,EAAE;QAC/E,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAC;IAChD,CAAC;CACJ;AAEM,MAAM,8BAA+B,SAAQ,qBAAqB;IACrE,YAAY,MAAc,EAAE,OAAe,EAAE,QAA2B,EAAE,IAAI,GAAG,EAAE;QAC/E,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,gCAAgC,CAAC;IACjD,CAAC;CACJ;AAEM,MAAM,qBAAsB,SAAQ,kBAAkB;IACzD,YAAY,MAAc,EAAE,OAAe,EAAE,QAA2B,EAAE,IAAI,GAAG,EAAE;QAC/E,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACxC,CAAC;CACJ;AAEM,MAAM,gCAAiC,SAAQ,KAAK;IACvD,YAAY,UAAkB,gCAAgC;QAC1D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kCAAkC,CAAC;IACnD,CAAC;CACJ;AACM,MAAM,kCAAmC,SAAQ,KAAK;IACzD,YAAY,UAAkB,uCAAuC;QACjE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oCAAoC,CAAC;IACrD,CAAC;CACJ;AAOD,MAAM,OAAO;;AACc,WAAG,GAAG,KAAK,CAAC;AACZ,YAAI,GAAG,MAAM,CAAC;AACd,WAAG,GAAG,KAAK,CAAC;AACZ,aAAK,GAAG,OAAO,CAAC;AAChB,cAAM,GAAG,QAAQ,CAAC;AAClB,YAAI,GAAG,MAAM,CAAC;AACd,eAAO,GAAG,SAAS,CAAC;AACpB,aAAK,GAAG,OAAO,CAAC;AAChB,eAAO,GAAG,SAAS,CAAC;AAG/C,MAAM,gBAAgB;IAwCX,MAAM,CAAC,UAAU,CAAC,MAAc;QACnC,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,qBAAqB,MAAM,EAAE,CAAC;IAC3E,CAAC;;AAzCuB,kCAAiB,GAA8B;IACnE,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,6DAA6D;IACxF,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,iDAAiD;IAC7E,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,iGAAiG;IAC1H,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,yHAAyH;IAClJ,CAAC,WAAW,CAAC,kBAAkB,CAAC,EAAE,uDAAuD;IACzF,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,8DAA8D;IAC5F,CAAC,WAAW,CAAC,6BAA6B,CAAC,EAAE,uDAAuD;IACpG,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,0CAA0C;IACzE,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,mGAAmG;IAC3H,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE,uDAAuD;IACvF,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,gDAAgD;IACpE,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,8DAA8D;IAC7F,CAAC,WAAW,CAAC,mBAAmB,CAAC,EAAE,0DAA0D;IAC7F,CAAC,WAAW,CAAC,sBAAsB,CAAC,EAAE,4CAA4C;IAClF,CAAC,WAAW,CAAC,kBAAkB,CAAC,EAAE,0DAA0D;IAC5F,CAAC,WAAW,CAAC,mBAAmB,CAAC,EAAE,uDAAuD;IAC1F,CAAC,WAAW,CAAC,oBAAoB,CAAC,EAAE,2CAA2C;IAC/E,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,mCAAmC;IACzD,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE,oEAAoE;IACrG,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE,2DAA2D;IAC3F,CAAC,WAAW,CAAC,qBAAqB,CAAC,EAAE,uCAAuC;IAC5E,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE,8EAA8E;IAC/G,CAAC,WAAW,CAAC,+BAA+B,CAAC,EAAE,oCAAoC;IACnF,CAAC,WAAW,CAAC,qBAAqB,CAAC,EAAE,uDAAuD;IAC5F,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,sEAAsE;IACjG,CAAC,WAAW,CAAC,mBAAmB,CAAC,EAAE,iEAAiE;IACpG,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,gDAAgD;IAC/E,CAAC,WAAW,CAAC,0BAA0B,CAAC,EAAE,oDAAoD;IAC9F,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,0DAA0D;IACzF,CAAC,WAAW,CAAC,oBAAoB,CAAC,EAAE,sCAAsC;IAC1E,CAAC,WAAW,CAAC,+BAA+B,CAAC,EAAE,qCAAqC;IACpF,GAAG,EAAE,iEAAiE;IACtE,GAAG,EAAE,8BAA8B;IACnC,GAAG,EAAE,iCAAiC;IACtC,GAAG,EAAE,6BAA6B;IAClC,GAAG,EAAE,uDAAuD;CAC/D,CAAC;AAiBC,MAAM,iBAAiB;IAI1B,YAAoC,SAA2B;QAA3B,cAAS,GAAT,SAAS,CAAkB;QAHvD,YAAO,GAAe,IAAI,CAAC;QAC3B,UAAK,GAAkB,IAAI,CAAC;IAGpC,CAAC;IAED,IAAW,SAAS;QAChB,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;IAC5B,CAAC;IAED,IAAW,KAAK;QACZ,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC;IAC1D,CAAC;IAED,IAAW,EAAE;QACT,OAAO,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,KAAK,CAAC;IACvC,CAAC;IAED,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,IAAW,UAAU;QACjB,OAAO,IAAI,CAAC,SAAS,EAAE,UAAU,IAAI,EAAE,CAAC;IAC5C,CAAC;IAED,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,SAAS,EAAE,OAAO,IAAI,IAAI,OAAO,EAAE,CAAC;IACpD,CAAC;IAEM,KAAK,CAAC,SAAS;QAClB,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrE,CAAC;IAKO,KAAK,CAAC,sBAAsB,CAAC,YAAiB;QAClD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAC1C,IAAI,CAAC;gBACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;gBACpC,IAAI,CAAC,IAAI,EAAE,CAAC;oBACR,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC;gBAChC,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACpC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,IAAI,gCAAgC,CACtC,kCAAkC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC7F,CAAC;YACN,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,IAAI,YAAY,CAAC;IACxC,CAAC;IAEM,KAAK,CAAC,WAAW,CAAU,eAAkB,EAAO;QACvD,OAAO,MAAM,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;IAC3D,CAAC;IAEM,KAAK,CAAC,UAAU,CAAU,eAAoB,EAAE;QACnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;QAC/D,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC;IACzD,CAAC;CACJ;AAcM,MAAM,8BAA8B;IACvC,MAAM,CAAC,IAAY,EAAE,MAAe;QAChC,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAChD,CAAC;IAED,WAAW,CAAC,MAA0B,EAAE,KAAa;QACjD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;CACJ;AAEM,MAAM,0BAA0B;IACnC,MAAM,CAAC,IAAY,EAAE,MAAe;QAChC,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/C,CAAC;IAED,WAAW,CAAC,MAA0B,EAAE,KAAa;QACjD,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC;IACzD,CAAC;CACJ;AAEM,MAAM,kBAAkB;IAEpB,MAAM,KAAK,wBAAwB;QACtC,OAAO,IAAI,CAAC,yBAAyB,IAAI,IAAI,8BAA8B,EAAE,CAAC;IAClF,CAAC;IACM,MAAM,KAAK,wBAAwB,CAAC,SAAmC;QAC1E,IAAI,CAAC,yBAAyB,GAAG,SAAS,CAAC;IAC/C,CAAC;IACM,MAAM,CAAC,6BAA6B;QACvC,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;IAC1C,CAAC;IAGD,YACoB,OAAsB,EACtB,oBAA8C,kBAAkB,CAAC,wBAAwB;QADzF,YAAO,GAAP,OAAO,CAAe;QACtB,sBAAiB,GAAjB,iBAAiB,CAAwE;QAIrG,eAAU,GAAoE,EAAE,CAAC;QAUjF,iBAAY,GAAY,KAAK,CAAC;IAZtC,CAAC;IAGM,QAAQ,CAAC,IAAY,EAAE,QAAsD;QAChF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;QACjC,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAc,SAAS;QACnB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAGD,IAAc,WAAW;QACrB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAES,UAAU;QAChB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACpB,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;gBACrC,IAAI,KAAK,EAAE,CAAC;oBACR,IAAI,aAAa,CAAW,mBAAmB,KAAK,KAAK,KAAK,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAC5F,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;gBACpC,IAAI,KAAK,EAAE,CAAC;oBACR,IAAI,aAAa,CAAW,gBAAgB,KAAK,KAAK,KAAK,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACzF,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;gBACpC,IAAI,KAAK,EAAE,CAAC;oBACR,IAAI,aAAa,CAAW,YAAY,KAAK,qBAAqB,KAAK,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACrG,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;gBACvC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBAExC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,sBAAsB,CAAC;2BAC/C,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC,EAAE,SAAS,CAAC,sBAAsB,CAAC,CAAC;oBACxF,MAAM,uBAAuB,GAAG,OAAO,CAAC,SAAS,CAAC,6BAA6B,CAAC;2BACrE,OAAO,CAAC,OAAO,CAAC,+BAA+B,CAAC,EAAE,SAAS,CAAC,6BAA6B,CAAC,CAAC;oBACtG,MAAM,cAAc,GAAG,uBAAuB,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;oBAC1G,MAAM,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC;2BAC9C,cAAc,IAAI,cAAc,IAAI,CAAC,IAAI,cAAc,IAAI,EAAE,CAAC;oBAEzE,MAAM,OAAO,GAA6B;wBACtC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACpD,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,cAAc,EAAE,qBAAqB,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACjH,CAAC;oBAEF,MAAM,SAAS,GAAG,CAAC,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBACnI,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAC;2BACpD,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,SAAS,CAAC,oBAAoB,CAAC;2BACxE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAC;2BAC5C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,SAAS,CAAC,oBAAoB,CAAC;2BAC7E,SAAS,CAAC,CAAC,CAAC;2BACZ,OAAO,CAAC;oBACnB,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;oBAE/F,OAAO,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACxE,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;gBACpC,IAAI,KAAK,EAAE,CAAC;oBACR,MAAM,SAAS,GAAG,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACrD,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;oBACjE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;wBACzB,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,kBAAkB,CAAC;wBAC7E,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,sBAAsB,CAAC;+BAC/C,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC,EAAE,SAAS,CAAC,sBAAsB,CAAC,CAAC;wBACxF,MAAM,EAAE,GAAG,mBAAK,CAAC,IAAI,CAAC,CAAC;wBACvB,OAAO,CAAC,IAAI,GAAG,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC3G,CAAC;gBACL,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;gBACrC,IAAI,KAAK,EAAE,CAAC;oBACR,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;wBACzB,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,YAAY,CAAC;wBACvE,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,sBAAsB,CAAC;+BAC/C,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC,EAAE,SAAS,CAAC,sBAAsB,CAAC,CAAC;wBACxF,MAAM,EAAE,GAAG,mBAAK,CAAC,IAAI,CAAC,CAAC;wBACvB,OAAO,CAAC,IAAI,GAAG,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC3G,CAAC;gBACL,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC7B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAES,kBAAkB,CAAC,YAAoB,EAAE,KAAU;QACzD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,YAAY,MAAM,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC1E,IAAI,mBAAmB,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzD,OAAO,CAAC,KAAK,CAAC,8CAA8C,YAAY,KAAK,EAAE,KAAK,CAAC,CAAC;YAC1F,CAAC;YACD,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,sBAAsB,CAAC,EAAE,WAAW,EAAE,CAAC;YACtE,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YACvC,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAES,KAAK,CAAC,eAAe,CAAC,MAAa,EAAE,YAAoB;QAC/D,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YACjD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YACzE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtB,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAC3C,SAAS;YACb,CAAC;YACD,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACnC,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAC5C,SAAS;YACb,CAAC;YACD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC;IACL,CAAC;IAES,KAAK,CAAC,gBAAgB,CAAC,MAAW,EAAE,eAAmC,SAAS;QACtF,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,MAAM,CAAC,EAAE,CAAC;YACtD,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YAC/D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvB,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBACzC,SAAS;YACb,CAAC;YACD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACrC,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC1C,SAAS;YACb,CAAC;YACD,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,OAA0B;QAC9C,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC;IAChB,CAAC;;AAzKc,4CAAyB,GAAoC,IAAI,CAAC;AAyM9E,MAAM,SAAS;IAGlB,YAAoC,WAA8B;QAC1D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI;QAC/D,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI;QAC9D,SAAS,EAAE,EAAE;KAAG;QAHY,aAAQ,GAAR,QAAQ,CAGpB;QALP,qBAAgB,GAAoB,IAAI,eAAe,EAAE,CAAC;IAM3E,CAAC;IAED,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;IACvC,CAAC;IAED,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;IACvC,CAAC;IAED,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,aAAa,CAAC;IACtD,CAAC;IAED,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC;IAC9C,CAAC;IAED,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,UAAU,CAAC;IAC7C,CAAC;IAED,IAAW,cAAc;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,IAAI,aAAa,CAAC;IACzD,CAAC;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,MAAM,CAAC;IACxC,CAAC;IAED,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC;IAC3C,CAAC;IAED,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC;IACzC,CAAC;IAED,IAAW,eAAe;QACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IAGO,KAAK,CAAC,YAAY,CAAkD,MAAc,EAAE,IAAY,EAAE,IAAyD,EAAE,MAAoB,EAAE,YAAoD;QAC3O,IAAI,mBAAmB,CAAC,SAAS,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;YACxD,OAAO,CAAC,KAAK,CAAC,gBAAgB,MAAM,IAAI,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACrF,CAAC;QAID,MAAM,gBAAgB,GAAyF;YAC3G,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAClD,mCAAmC,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC1C,IAAI,IAAI,YAAY,UAAU,CAAC,QAAQ,EAAE,CAAC;oBACtC,IAAI,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;oBACnC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;wBACxB,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;oBACtC,CAAC,CAAC,CAAC;oBACH,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAC7B,CAAC;qBAAM,CAAC;oBACJ,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAChD,CAAC;YACL,CAAC;YACD,qBAAqB,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC5B,IAAI,IAAI,YAAY,UAAU,CAAC,QAAQ,EAAE,CAAC;oBACtC,OAAO,IAAI,CAAC;gBAChB,CAAC;gBACD,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;gBAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC9C,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBACxC,CAAC;gBACD,OAAO,QAAQ,CAAC;YACpB,CAAC;SACJ,CAAC;QAOF,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;YACjC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC;QAClF,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE1C,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAK,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,qBAAqB,EAAE,CAAC;YAExF,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,qBAAqB,CAAC;QAChE,IAAI,EAAE,KAAK,qBAAqB,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,YAAY,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjF,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClD,MAAM,IAAI,kCAAkC,CACxC,yEAAyE,CAC5E,CAAC;YACN,CAAC;QACL,CAAC;QAED,MAAM,aAAa,GAAG,YAAY,IAAI,iBAA0D,CAAC;QACjG,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,GAAG,EAAE;YAChD,MAAM;YACN,OAAO;YACP,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;YACnF,MAAM,EAAE,MAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM;YAC9C,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC5B,CAAC,CAAC,CAAC;QAEJ,IAAI,mBAAmB,CAAC,SAAS,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;YACxD,OAAO,CAAC,KAAK,CAAC,kBAAkB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,EAAE,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;QAC1G,CAAC;QAGD,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YAClD,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,4BAA4B,CAAC,CAAC;YACvF,MAAM,YAAY,GAAG,QAAQ,CAAC,UAAU,IAAI,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,qBAAqB,QAAQ,CAAC,MAAM,EAAE,CAAC;YACnI,IAAI,mBAAmB,CAAC,SAAS,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxD,OAAO,CAAC,KAAK,CAAC,uBAAuB,YAAY,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC9E,CAAC;YACD,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACtB,KAAK,WAAW,CAAC,WAAW,CAAC;gBAC7B,KAAK,WAAW,CAAC,oBAAoB;oBACjC,MAAM,IAAI,6BAA6B,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;gBAChG,KAAK,WAAW,CAAC,YAAY;oBACzB,MAAM,IAAI,2BAA2B,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;gBAC9F,KAAK,WAAW,CAAC,SAAS;oBACtB,MAAM,IAAI,wBAAwB,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;gBAC3F,KAAK,WAAW,CAAC,SAAS;oBACtB,MAAM,IAAI,uBAAuB,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;gBAC1F,KAAK,WAAW,CAAC,QAAQ,CAAC;gBAC1B,KAAK,WAAW,CAAC,IAAI;oBACjB,MAAM,IAAI,uBAAuB,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;gBAC1F,KAAK,WAAW,CAAC,iBAAiB;oBAC9B,MAAM,IAAI,8BAA8B,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;gBACjG;oBACI,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;wBACxB,MAAM,IAAI,qBAAqB,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;oBACxF,CAAC;yBAAM,CAAC;wBACJ,MAAM,IAAI,qBAAqB,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;oBACxF,CAAC;YACT,CAAC;QACL,CAAC;QAED,OAAO,QAAa,CAAC;IACzB,CAAC;IAKM,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,UAAkE;QAClG,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,UAAU,YAAY,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC5C,IAAI,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;YACnC,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBAC9B,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;YACH,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpC,CAAC;aAAM,IAAI,UAAU,EAAE,CAAC;YACpB,WAAW,GAAG,IAAI,eAAe,CAC7B,MAAM,CAAC,WAAW,CACd,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CACzE,CACJ,CAAC,QAAQ,EAAE,CAAC;QACjB,CAAC;QACD,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9D,IAAI,mBAAmB,CAAC,SAAS,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;YACxD,OAAO,CAAC,KAAK,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,IAAiE;QAClG,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,IAAiE;QACjG,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,IAAiE;QACnG,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACxD,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,IAAY;QACjC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,IAAY;QAC/B,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,IAAY;QAClC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,IAAY;QAChC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,IAAY;QAClC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,IAA2B;QAChD,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;YAChF,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACnF,CAAC;CAGJ;;;AC9qByB;AACsB;AACgG;AAC9E;AACb;AAK9C,MAAe,UAAW,SAAQ,aAAa;IAClC,UAAU,CAAC,SAAiB,iBAAiB;QACzD,OAAO,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAKD,IAAc,MAAM;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;IAC7C,CAAC;IAED,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC3E,CAAC;IAQM,KAAK,CAAC,WAAW;QACpB,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IACnC,CAAC;IAED,IAAW,UAAU;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,KAAK,OAAO,CAAC;IAChE,CAAC;IAED,IAAW,UAAU,CAAC,KAAc;QAChC,IAAI,KAAK,EAAE,CAAC;YACR,IAAI,CAAC,SAAS,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,SAAS,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC;QACtD,CAAC;IACL,CAAC;IAQD,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC,yBAAyB,CAAC,CAAC;IACxD,CAAC;IAEM,UAAU;QACb,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACpB,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;gBACxB,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,CAAC,CAAC,eAAe,EAAE,CAAC;gBACpB,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YAC7B,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,SAAS,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CAWJ;AAIM,MAAM,eAAgB,SAAQ,UAAU;IAC3C,IAAuB,MAAM;QACzB,OAAO,KAAK,CAAC;IACjB,CAAC;IAGe,KAAK,CAAC,WAAW;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;QAG3B,MAAM,WAAW,GAA8B,EAAE,CAAC;QAClD,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,WAAW,EAAE,CAAC;YACd,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACnC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACtC,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;oBACf,WAAW,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBACjD,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC;QAGD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAChC,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,IAAI,EAAE,CAAC;gBACP,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC1B,IAAI,KAAK,EAAE,CAAC;oBACR,WAAW,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAClD,CAAC;qBAAM,CAAC;oBACJ,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC7B,CAAC;YACL,CAAC;QACL,CAAC,CAAC,CAAC;QAGH,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;aAC7C,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;aACxC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEf,QAAQ,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,cAAc,EAAE,CAAC;IAC7D,CAAC;CACJ;AAGM,MAAM,oBAAqB,SAAQ,KAAK;IAC3C,YAA2B,SAA4B,EAAE,YAAoB,kBAAkB;QAC3F,KAAK,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAD/B,cAAS,GAAT,SAAS,CAAmB;IAEvD,CAAC;IAED,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;CACJ;AAGM,MAAM,aAAc,SAAQ,UAAU;IAClC,SAAS;QACZ,OAAO,IAAI,SAAS,EAAE,CAAC;IAC3B,CAAC;IAED,IAAoB,SAAS;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAE,CAAC;IACrC,CAAC;IAMM,SAAS,CAAC,MAA+D;QAC5E,IAAI,CAAC,EAAE,CAAC,kBAAkB,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;YAClC,MAAM,MAAM,CAAC,CAAyB,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IAChB,CAAC;IAES,qBAAqB,CAAC,QAA2B;QACvD,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrE,IAAI,mBAAmB,CAAC,SAAS,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;YACxD,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;QACnD,CAAC;IACL,CAAC;IAEM,YAAY,CAAC,MAA+D;QAC/E,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;YACrC,MAAM,MAAM,CAAC,CAAyB,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IAChB,CAAC;IAES,wBAAwB,CAAC,QAA2B;QAC1D,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,IAAI,oBAAoB,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC,CAAC;QAC/F,IAAI,mBAAmB,CAAC,SAAS,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;YACxD,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QAC9C,CAAC;IACL,CAAC;IAED,IAAuB,MAAM;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC;IAC9C,CAAC;IAEM,QAAQ;QACX,MAAM,WAAW,GAAoB,IAAI,CAAC,OAAO,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC;QAE3C,IAAI,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC1E,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC;YAClC,IAAI,aAAa,EAAE,CAAC;gBAChB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC;gBACrC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;oBACzB,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAE,EAAE,mBAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC;gBACpF,CAAC;YACL,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,mBAAmB,CAAC,SAAS,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7D,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAAA,CAAC;IAEc,KAAK,CAAC,WAAW;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACjC,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAES,KAAK,CAAC,gBAAgB,CAAC,QAAkB;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAE7B,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC;gBACnC,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,MAAM,EAAE,IAAI,CAAC,SAAS;gBACtB,IAAI,EAAE,QAAQ;aACjB,CAAC,CAAC;YAEH,OAAO,QAAQ,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,KAAK,YAAY,kBAAkB,EAAE,CAAC;gBACtC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC3C,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAClD,CAAC;YACD,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;CAGJ;AAIM,MAAM,mBAAoB,SAAQ,aAAa;IAElD,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,IAAI,SAAS,CAAC;IACjE,CAAC;IAED,IAAc,iBAAiB;QAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,KAAK,OAAO,CAAC;IAC9D,CAAC;IAED,IAAc,YAAY;QACtB,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;IAC5B,CAAC;IAED,IAAoB,SAAS;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAE,CAAC;QACzC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAE9C,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAClB,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC;QAC5D,CAAC;QAED,OAAO,GAAG,UAAU,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;IACjE,CAAC;IAED,IAAuB,MAAM;QACzB,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;YACjE,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAE,CAAC;QACrC,CAAC;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9C,CAAC;IAKS,YAAY,CAAC,QAA2B;QAC9C,IAAI,IAAI,CAAC,iBAAiB,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,CAAC,OAAO,EAAE,CAAC;YACpE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,mBAAmB,CAAC,SAAS,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC7D,OAAO,CAAC,IAAI,CAAC,4FAA4F,CAAC,CAAC;gBAC/G,CAAC;gBACD,OAAO;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAClD,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAEtB,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,EAAE;gBAC9B,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;gBACrC,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChD,CAAC,CAAC;YAEF,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE;gBACzB,IAAI,CAAC;oBAAC,OAAO,IAAI,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC;oBAAC,OAAO,CAAC,CAAC;gBAAC,CAAC;YACrE,CAAC,CAAC;YAEF,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAE,CAAC,CAAC,CAAC;YAChE,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC5C,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC1C,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACzC,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YACnH,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,0DAA0D,UAAU,gBAAgB,OAAO,GAAG,CAAC,CAAC;YACpH,CAAC;YAED,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC3E,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3C,IAAI,CAAC,SAAS,CAAC,wBAAwB,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,CAAC;iBAAM,CAAC;gBACJ,MAAM,GAAG,GAAG;0BACF,UAAU,gBAAgB,OAAO,cAAc,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBACpF,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC;QACL,CAAC;IACL,CAAC;IAEkB,KAAK,CAAC,gBAAgB,CAAC,QAAkB;QACxD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAGxD,IAAI,IAAI,CAAC,iBAAiB,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,CAAC,OAAO,EAAE,CAAC;YACpE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;CAGJ;AAIM,MAAM,uBAAwB,SAAQ,mBAAmB;IAAhE;;QACY,aAAQ,GAAkE,EAAE,CAAC;IA4JzF,CAAC;IA1JU,MAAM,CAAC,IAAY,EAAE,IAAgD;QACxE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QAC3B,OAAO,IAAI,CAAC;IAChB,CAAC;IAEe,UAAU;QACtB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACpB,KAAK,CAAC,UAAU,EAAE,CAAC;YAEnB,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBAC3C,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACjD,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;gBACjE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;oBACzB,KAAK,CAAC,KAAK,GAAG,mBAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;gBACzD,CAAC;qBAAM,CAAC;oBACJ,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;gBACrB,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBACrC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBACjC,IAAI,KAAK,EAAE,CAAC;oBACR,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;gBACnC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBAClC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBACjC,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;oBACxB,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;gBACnC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;gBACnC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YAC3B,CAAC,CAAC,CAAC;QACP,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAMe,KAAK,CAAC,WAAW;QAC7B,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;IAC3B,CAAC;IAED,IAAc,aAAa;QACvB,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAES,iBAAiB;QACvB,OAAO,kBAAkB,CAAC,wBAAwB,CAAC;IACvD,CAAC;IAEM,QAAQ;QACX,OAAO,IAAI,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,IAAc,OAAO;QACjB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAES,KAAK,CAAC,SAAS;QACrB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACnC,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACxD,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC/B,OAAO,QAAQ,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,KAAK,YAAY,kBAAkB,EAAE,CAAC;gBACtC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC/C,CAAC;YACD,IAAI,KAAK,YAAY,uBAAuB,EAAE,CAAC;gBAC3C,OAAO,KAAK,CAAC,QAAQ,CAAC;YAC1B,CAAC;YACD,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAES,kBAAkB,CAAC,KAAa,EAAE,KAAU;QAClD,IAAI,CAAC,IAAI,CAAC,eAAe,KAAK;iCACL,KAAK;+BACP,KAAK,sDAAsD,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAChG,IAAI,mBAAmB,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzD,OAAO,CAAC,KAAK,CAAC,uBAAuB,KAAK,gBAAgB,EAAE,KAAK,CAAC,CAAC;YACvE,CAAC;YACD,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;YACpD,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACJ,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YACtC,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAES,KAAK,CAAC,cAAc,CAAC,iBAA2C,EAAE,MAAa,EAAE,YAAoB;QAC3G,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YACjD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC3B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,WAAW,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YACpE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtB,MAAM,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAC7D,SAAS;YACb,CAAC;YACD,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACnC,MAAM,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAC9D,SAAS;YACb,CAAC;YACD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC;IACL,CAAC;IAES,KAAK,CAAC,eAAe,CAAC,iBAA2C,EAAE,MAAW,EAAE,eAAmC,SAAS;QAClI,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAChD,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrB,SAAS;YACb,CAAC;YAED,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YAC1D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvB,MAAM,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC3D,SAAS;YACb,CAAC;YACD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACrC,MAAM,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC5D,SAAS;YACb,CAAC;YAED,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC;IACL,CAAC;IAES,KAAK,CAAC,SAAS,CAAC,QAA2B;QACjD,IAAI,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YACpC,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;YACnF,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC/C,CAAC;QAGD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IAClD,CAAC;IAEkB,KAAK,CAAC,gBAAgB,CAAC,QAA6B;QACnE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YACd,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;CACJ;;;ACpeyB;AACmB;AACV;AACkC;AACH;AAEb;AAErD,0BAAY,CAAC,eAAG,CAAC,CAAC;AAClB,0BAAY,CAAC,oBAAQ,CAAC,CAAC;AAGhB,MAAM,SAAS;IACX,MAAM,CAAC,QAAQ;QAClB,OAAO,IAAI,SAAS,EAAE,CAAC;IAC3B,CAAC;IAID,YAAmB,MAAqB,IAAI;QACxC,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACvF,CAAC;IAED,IAAW,GAAG;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IACjD,CAAC;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC9B,CAAC;IAED,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,IAAW,UAAU;QACjB,MAAM,IAAI,GAA2B,EAAE,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,QAAQ;QACX,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;IACpC,CAAC;IAEM,OAAO;QACV,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAEM,YAAY,CAAC,QAAa,IAAI,EAAE,QAAgB,EAAE;QACrD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACxD,CAAC;CACJ;AAMM,MAAM,oBAAoB;IAAjC;QA2BY,WAAM,GAAkC,EAAE,CAAC;IAsFvD,CAAC;IA9GU,MAAM,CAAC,GAAG,CAAwD,IAAiB;QACtF,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC5B,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YAClC,IAAI,mBAAmB,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzD,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACtD,CAAC;YACD,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YACnC,MAAM,oBAAoB,CAAC,SAAU,CAAC,eAAe,EAAE,CAAC;YACxD,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,SAAc,CAAC;IAC/B,CAAC;IAEM,MAAM,CAAC,GAAG;QACb,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,YAAY,oBAAoB,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,qFAAqF,CAAC,CAAC;QAC3G,CAAC;QACD,OAAO,IAAI,CAAC,SAAc,CAAC;IAC/B,CAAC;IAKD,IAAc,wBAAwB;QAClC,OAAO,kBAAkB,CAAC,wBAAwB,CAAC;IACvD,CAAC;IAED,IAAc,wBAAwB,CAAC,KAA+B;QAClE,kBAAkB,CAAC,wBAAwB,GAAG,KAAK,CAAC;IACxD,CAAC;IAES,OAAO,CAAoC,IAAO;QACxD,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACX,IAAI,CAAC,UAAU,EAAE,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAG,CAAC,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YACd,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAG,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAC7B,CAAC;IAES,OAAO,CAAoC,EAAU,EAAE,IAAiC;QAC9F,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAE5B,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,SAAS,EAAE,qCAAqC,CAAC,CAAC;QACtE,CAAC;QAED,OAAO,IAAS,CAAC;IACrB,CAAC;IAED,IAAc,KAAK;QACf,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAES,KAAK,CAAC,YAAY;QACxB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACzB,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;gBAClC,MAAM;YACV,CAAC;YACD,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;gBACf,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAC1B,CAAC;QACL,CAAC;IACL,CAAC;IAEO,oBAAoB,CAAC,KAAa;QACtC,OAAO,mBAAK,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7F,CAAC;IAEO,0BAA0B;QAC9B,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAC/F,IAAI,mBAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC1B,MAAM,QAAQ,GAAG,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC;uBACzC,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC,EAAE,SAAS,CAAC,sBAAsB,CAAC,CAAC;gBAClF,MAAM,MAAM,GAAW,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,kBAAkB,CAAC;gBAC/E,MAAM,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,mBAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,mBAAK,CAAC,GAAG,mBAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;gBACxH,MAAM,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;gBAC3E,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACnG,CAAC,CAAC,SAAS,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;YAC7C,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAGS,KAAK,CAAC,eAAe;QAC3B,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAElC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAC,CAAC,EAAC,EAAE;YACrC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;gBACd,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC1B,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;oBAClC,CAAC,CAAC,wBAAwB,EAAE,CAAC;gBACjC,CAAC;YACL,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,IAAW,IAAI;QACX,OAAO,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;IACtC,CAAC;IAED,IAAc,GAAG;QACb,OAAO,IAAI,SAAS,EAAE,CAAC;IAC3B,CAAC;;AA/Gc,8BAAS,GAAgC,IAAI,CAAC;;;AChDlD;AAIE;AAKD;AAIA;AAKA","sources":["webpack://Cotomy/webpack/universalModuleDefinition","webpack://Cotomy/./node_modules/cuid/lib/getRandomValue.browser.js","webpack://Cotomy/./node_modules/cuid/lib/fingerprint.browser.js","webpack://Cotomy/./node_modules/dayjs/dayjs.min.js","webpack://Cotomy/./node_modules/cuid/lib/pad.js","webpack://Cotomy/./node_modules/dayjs/plugin/timezone.js","webpack://Cotomy/./node_modules/cuid/index.js","webpack://Cotomy/./node_modules/dayjs/plugin/utc.js","webpack://Cotomy/webpack/bootstrap","webpack://Cotomy/webpack/runtime/compat get default export","webpack://Cotomy/webpack/runtime/define property getters","webpack://Cotomy/webpack/runtime/hasOwnProperty shorthand","webpack://Cotomy/webpack/runtime/make namespace object","webpack://Cotomy/./node_modules/http-status-codes/build/es/status-codes.js","webpack://Cotomy/./src/debug.ts","webpack://Cotomy/./src/view.ts","webpack://Cotomy/./src/api.ts","webpack://Cotomy/./src/form.ts","webpack://Cotomy/./src/page.ts","webpack://Cotomy/./src/index.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Cotomy\"] = factory();\n\telse\n\t\troot[\"Cotomy\"] = factory();\n})(this, () => {\nreturn ","\nvar getRandomValue;\n\nvar crypto = typeof window !== 'undefined' &&\n (window.crypto || window.msCrypto) ||\n typeof self !== 'undefined' &&\n self.crypto;\n\nif (crypto) {\n var lim = Math.pow(2, 32) - 1;\n getRandomValue = function () {\n return Math.abs(crypto.getRandomValues(new Uint32Array(1))[0] / lim);\n };\n} else {\n getRandomValue = Math.random;\n}\n\nmodule.exports = getRandomValue;\n","var pad = require('./pad.js');\n\nvar env = typeof window === 'object' ? window : self;\nvar globalCount = Object.keys(env).length;\nvar mimeTypesLength = navigator.mimeTypes ? navigator.mimeTypes.length : 0;\nvar clientId = pad((mimeTypesLength +\n navigator.userAgent.length).toString(36) +\n globalCount.toString(36), 4);\n\nmodule.exports = function fingerprint () {\n return clientId;\n};\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","module.exports = function pad (num, size) {\n var s = '000000000' + num;\n return s.substr(s.length - size);\n};\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_timezone=e()}(this,(function(){\"use strict\";var t={year:0,month:1,day:2,hour:3,minute:4,second:5},e={};return function(n,i,o){var r,a=function(t,n,i){void 0===i&&(i={});var o=new Date(t),r=function(t,n){void 0===n&&(n={});var i=n.timeZoneName||\"short\",o=t+\"|\"+i,r=e[o];return r||(r=new Intl.DateTimeFormat(\"en-US\",{hour12:!1,timeZone:t,year:\"numeric\",month:\"2-digit\",day:\"2-digit\",hour:\"2-digit\",minute:\"2-digit\",second:\"2-digit\",timeZoneName:i}),e[o]=r),r}(n,i);return r.formatToParts(o)},u=function(e,n){for(var i=a(e,n),r=[],u=0;u<i.length;u+=1){var f=i[u],s=f.type,m=f.value,c=t[s];c>=0&&(r[c]=parseInt(m,10))}var d=r[3],l=24===d?0:d,h=r[0]+\"-\"+r[1]+\"-\"+r[2]+\" \"+l+\":\"+r[4]+\":\"+r[5]+\":000\",v=+e;return(o.utc(h).valueOf()-(v-=v%1e3))/6e4},f=i.prototype;f.tz=function(t,e){void 0===t&&(t=r);var n,i=this.utcOffset(),a=this.toDate(),u=a.toLocaleString(\"en-US\",{timeZone:t}),f=Math.round((a-new Date(u))/1e3/60),s=15*-Math.round(a.getTimezoneOffset()/15)-f;if(!Number(s))n=this.utcOffset(0,e);else if(n=o(u,{locale:this.$L}).$set(\"millisecond\",this.$ms).utcOffset(s,!0),e){var m=n.utcOffset();n=n.add(i-m,\"minute\")}return n.$x.$timezone=t,n},f.offsetName=function(t){var e=this.$x.$timezone||o.tz.guess(),n=a(this.valueOf(),e,{timeZoneName:t}).find((function(t){return\"timezonename\"===t.type.toLowerCase()}));return n&&n.value};var s=f.startOf;f.startOf=function(t,e){if(!this.$x||!this.$x.$timezone)return s.call(this,t,e);var n=o(this.format(\"YYYY-MM-DD HH:mm:ss:SSS\"),{locale:this.$L});return s.call(n,t,e).tz(this.$x.$timezone,!0)},o.tz=function(t,e,n){var i=n&&e,a=n||e||r,f=u(+o(),a);if(\"string\"!=typeof t)return o(t).tz(a);var s=function(t,e,n){var i=t-60*e*1e3,o=u(i,n);if(e===o)return[i,e];var r=u(i-=60*(o-e)*1e3,n);return o===r?[i,o]:[t-60*Math.min(o,r)*1e3,Math.max(o,r)]}(o.utc(t,i).valueOf(),f,a),m=s[0],c=s[1],d=o(m).utcOffset(c);return d.$x.$timezone=a,d},o.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},o.tz.setDefault=function(t){r=t}}}));","/**\n * cuid.js\n * Collision-resistant UID generator for browsers and node.\n * Sequential for fast db lookups and recency sorting.\n * Safe for element IDs and server-side lookups.\n *\n * Extracted from CLCTR\n *\n * Copyright (c) Eric Elliott 2012\n * MIT License\n */\n\nvar fingerprint = require('./lib/fingerprint.js');\nvar pad = require('./lib/pad.js');\nvar getRandomValue = require('./lib/getRandomValue.js');\n\nvar c = 0,\n blockSize = 4,\n base = 36,\n discreteValues = Math.pow(base, blockSize);\n\nfunction randomBlock () {\n return pad((getRandomValue() *\n discreteValues << 0)\n .toString(base), blockSize);\n}\n\nfunction safeCounter () {\n c = c < discreteValues ? c : 0;\n c++; // this is not subliminal\n return c - 1;\n}\n\nfunction cuid () {\n // Starting with a lowercase letter makes\n // it HTML element ID friendly.\n var letter = 'c', // hard-coded allows for sequential access\n\n // timestamp\n // warning: this exposes the exact date and time\n // that the uid was created.\n timestamp = (new Date().getTime()).toString(base),\n\n // Prevent same-machine collisions.\n counter = pad(safeCounter().toString(base), blockSize),\n\n // A few chars to generate distinct ids for different\n // clients (so different computers are far less\n // likely to generate the same id)\n print = fingerprint(),\n\n // Grab some more chars from Math.random()\n random = randomBlock() + randomBlock();\n\n return letter + timestamp + counter + print + random;\n}\n\ncuid.slug = function slug () {\n var date = new Date().getTime().toString(36),\n counter = safeCounter().toString(36).slice(-4),\n print = fingerprint().slice(0, 1) +\n fingerprint().slice(-1),\n random = randomBlock().slice(-2);\n\n return date.slice(-2) +\n counter + print + random;\n};\n\ncuid.isCuid = function isCuid (stringToCheck) {\n if (typeof stringToCheck !== 'string') return false;\n if (stringToCheck.startsWith('c')) return true;\n return false;\n};\n\ncuid.isSlug = function isSlug (stringToCheck) {\n if (typeof stringToCheck !== 'string') return false;\n var stringLength = stringToCheck.length;\n if (stringLength >= 7 && stringLength <= 10) return true;\n return false;\n};\n\ncuid.fingerprint = fingerprint;\n\nmodule.exports = cuid;\n","!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_utc=i()}(this,(function(){\"use strict\";var t=\"minute\",i=/[+-]\\d\\d(?::?\\d\\d)?/g,e=/([+-]|\\d\\d)/g;return function(s,f,n){var u=f.prototype;n.utc=function(t){var i={date:t,utc:!0,args:arguments};return new f(i)},u.utc=function(i){var e=n(this.toDate(),{locale:this.$L,utc:!0});return i?e.add(this.utcOffset(),t):e},u.local=function(){return n(this.toDate(),{locale:this.$L,utc:!1})};var o=u.parse;u.parse=function(t){t.utc&&(this.$u=!0),this.$utils().u(t.$offset)||(this.$offset=t.$offset),o.call(this,t)};var r=u.init;u.init=function(){if(this.$u){var t=this.$d;this.$y=t.getUTCFullYear(),this.$M=t.getUTCMonth(),this.$D=t.getUTCDate(),this.$W=t.getUTCDay(),this.$H=t.getUTCHours(),this.$m=t.getUTCMinutes(),this.$s=t.getUTCSeconds(),this.$ms=t.getUTCMilliseconds()}else r.call(this)};var a=u.utcOffset;u.utcOffset=function(s,f){var n=this.$utils().u;if(n(s))return this.$u?0:n(this.$offset)?a.call(this):this.$offset;if(\"string\"==typeof s&&(s=function(t){void 0===t&&(t=\"\");var s=t.match(i);if(!s)return null;var f=(\"\"+s[0]).match(e)||[\"-\",0,0],n=f[0],u=60*+f[1]+ +f[2];return 0===u?0:\"+\"===n?u:-u}(s),null===s))return this;var u=Math.abs(s)<=16?60*s:s,o=this;if(f)return o.$offset=u,o.$u=0===s,o;if(0!==s){var r=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(o=this.local().add(u+r,t)).$offset=u,o.$x.$localOffset=r}else o=this.utc();return o};var h=u.format;u.format=function(t){var i=t||(this.$u?\"YYYY-MM-DDTHH:mm:ss[Z]\":\"\");return h.call(this,i)},u.valueOf=function(){var t=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*t},u.isUTC=function(){return!!this.$u},u.toISOString=function(){return this.toDate().toISOString()},u.toString=function(){return this.toDate().toUTCString()};var l=u.toDate;u.toDate=function(t){return\"s\"===t&&this.$offset?n(this.format(\"YYYY-MM-DD HH:mm:ss:SSS\")).toDate():l.call(this)};var c=u.diff;u.diff=function(t,i,e){if(t&&this.$u===t.$u)return c.call(this,t,i,e);var s=this.local(),f=n(t).local();return c.call(s,f,i,e)}}}));","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// Generated file. Do not edit\nexport var StatusCodes;\n(function (StatusCodes) {\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.2.1\n *\n * This interim response indicates that everything so far is OK and that the client should continue with the request or ignore it if it is already finished.\n */\n StatusCodes[StatusCodes[\"CONTINUE\"] = 100] = \"CONTINUE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.2.2\n *\n * This code is sent in response to an Upgrade request header by the client, and indicates the protocol the server is switching too.\n */\n StatusCodes[StatusCodes[\"SWITCHING_PROTOCOLS\"] = 101] = \"SWITCHING_PROTOCOLS\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.1\n *\n * This code indicates that the server has received and is processing the request, but no response is available yet.\n */\n StatusCodes[StatusCodes[\"PROCESSING\"] = 102] = \"PROCESSING\";\n /**\n * Official Documentation @ https://www.rfc-editor.org/rfc/rfc8297#page-3\n *\n * This code indicates to the client that the server is likely to send a final response with the header fields included in the informational response.\n */\n StatusCodes[StatusCodes[\"EARLY_HINTS\"] = 103] = \"EARLY_HINTS\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.1\n *\n * The request has succeeded. The meaning of a success varies depending on the HTTP method:\n * GET: The resource has been fetched and is transmitted in the message body.\n * HEAD: The entity headers are in the message body.\n * POST: The resource describing the result of the action is transmitted in the message body.\n * TRACE: The message body contains the request message as received by the server\n */\n StatusCodes[StatusCodes[\"OK\"] = 200] = \"OK\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.2\n *\n * The request has succeeded and a new resource has been created as a result of it. This is typically the response sent after a PUT request.\n */\n StatusCodes[StatusCodes[\"CREATED\"] = 201] = \"CREATED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.3\n *\n * The request has been received but not yet acted upon. It is non-committal, meaning that there is no way in HTTP to later send an asynchronous response indicating the outcome of processing the request. It is intended for cases where another process or server handles the request, or for batch processing.\n */\n StatusCodes[StatusCodes[\"ACCEPTED\"] = 202] = \"ACCEPTED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.4\n *\n * This response code means returned meta-information set is not exact set as available from the origin server, but collected from a local or a third party copy. Except this condition, 200 OK response should be preferred instead of this response.\n */\n StatusCodes[StatusCodes[\"NON_AUTHORITATIVE_INFORMATION\"] = 203] = \"NON_AUTHORITATIVE_INFORMATION\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.5\n *\n * There is no content to send for this request, but the headers may be useful. The user-agent may update its cached headers for this resource with the new ones.\n */\n StatusCodes[StatusCodes[\"NO_CONTENT\"] = 204] = \"NO_CONTENT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.6\n *\n * This response code is sent after accomplishing request to tell user agent reset document view which sent this request.\n */\n StatusCodes[StatusCodes[\"RESET_CONTENT\"] = 205] = \"RESET_CONTENT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7233#section-4.1\n *\n * This response code is used because of range header sent by the client to separate download into multiple streams.\n */\n StatusCodes[StatusCodes[\"PARTIAL_CONTENT\"] = 206] = \"PARTIAL_CONTENT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.2\n *\n * A Multi-Status response conveys information about multiple resources in situations where multiple status codes might be appropriate.\n */\n StatusCodes[StatusCodes[\"MULTI_STATUS\"] = 207] = \"MULTI_STATUS\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.1\n *\n * The request has more than one possible responses. User-agent or user should choose one of them. There is no standardized way to choose one of the responses.\n */\n StatusCodes[StatusCodes[\"MULTIPLE_CHOICES\"] = 300] = \"MULTIPLE_CHOICES\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.2\n *\n * This response code means that URI of requested resource has been changed. Probably, new URI would be given in the response.\n */\n StatusCodes[StatusCodes[\"MOVED_PERMANENTLY\"] = 301] = \"MOVED_PERMANENTLY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.3\n *\n * This response code means that URI of requested resource has been changed temporarily. New changes in the URI might be made in the future. Therefore, this same URI should be used by the client in future requests.\n */\n StatusCodes[StatusCodes[\"MOVED_TEMPORARILY\"] = 302] = \"MOVED_TEMPORARILY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.4\n *\n * Server sent this response to directing client to get requested resource to another URI with an GET request.\n */\n StatusCodes[StatusCodes[\"SEE_OTHER\"] = 303] = \"SEE_OTHER\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7232#section-4.1\n *\n * This is used for caching purposes. It is telling to client that response has not been modified. So, client can continue to use same cached version of response.\n */\n StatusCodes[StatusCodes[\"NOT_MODIFIED\"] = 304] = \"NOT_MODIFIED\";\n /**\n * @deprecated\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.6\n *\n * Was defined in a previous version of the HTTP specification to indicate that a requested response must be accessed by a proxy. It has been deprecated due to security concerns regarding in-band configuration of a proxy.\n */\n StatusCodes[StatusCodes[\"USE_PROXY\"] = 305] = \"USE_PROXY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.7\n *\n * Server sent this response to directing client to get requested resource to another URI with same method that used prior request. This has the same semantic than the 302 Found HTTP response code, with the exception that the user agent must not change the HTTP method used: if a POST was used in the first request, a POST must be used in the second request.\n */\n StatusCodes[StatusCodes[\"TEMPORARY_REDIRECT\"] = 307] = \"TEMPORARY_REDIRECT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7538#section-3\n *\n * This means that the resource is now permanently located at another URI, specified by the Location: HTTP Response header. This has the same semantics as the 301 Moved Permanently HTTP response code, with the exception that the user agent must not change the HTTP method used: if a POST was used in the first request, a POST must be used in the second request.\n */\n StatusCodes[StatusCodes[\"PERMANENT_REDIRECT\"] = 308] = \"PERMANENT_REDIRECT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.1\n *\n * This response means that server could not understand the request due to invalid syntax.\n */\n StatusCodes[StatusCodes[\"BAD_REQUEST\"] = 400] = \"BAD_REQUEST\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7235#section-3.1\n *\n * Although the HTTP standard specifies \"unauthorized\", semantically this response means \"unauthenticated\". That is, the client must authenticate itself to get the requested response.\n */\n StatusCodes[StatusCodes[\"UNAUTHORIZED\"] = 401] = \"UNAUTHORIZED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.2\n *\n * This response code is reserved for future use. Initial aim for creating this code was using it for digital payment systems however this is not used currently.\n */\n StatusCodes[StatusCodes[\"PAYMENT_REQUIRED\"] = 402] = \"PAYMENT_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.3\n *\n * The client does not have access rights to the content, i.e. they are unauthorized, so server is rejecting to give proper response. Unlike 401, the client's identity is known to the server.\n */\n StatusCodes[StatusCodes[\"FORBIDDEN\"] = 403] = \"FORBIDDEN\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.4\n *\n * The server can not find requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 to hide the existence of a resource from an unauthorized client. This response code is probably the most famous one due to its frequent occurence on the web.\n */\n StatusCodes[StatusCodes[\"NOT_FOUND\"] = 404] = \"NOT_FOUND\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.5\n *\n * The request method is known by the server but has been disabled and cannot be used. For example, an API may forbid DELETE-ing a resource. The two mandatory methods, GET and HEAD, must never be disabled and should not return this error code.\n */\n StatusCodes[StatusCodes[\"METHOD_NOT_ALLOWED\"] = 405] = \"METHOD_NOT_ALLOWED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.6\n *\n * This response is sent when the web server, after performing server-driven content negotiation, doesn't find any content following the criteria given by the user agent.\n */\n StatusCodes[StatusCodes[\"NOT_ACCEPTABLE\"] = 406] = \"NOT_ACCEPTABLE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7235#section-3.2\n *\n * This is similar to 401 but authentication is needed to be done by a proxy.\n */\n StatusCodes[StatusCodes[\"PROXY_AUTHENTICATION_REQUIRED\"] = 407] = \"PROXY_AUTHENTICATION_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.7\n *\n * This response is sent on an idle connection by some servers, even without any previous request by the client. It means that the server would like to shut down this unused connection. This response is used much more since some browsers, like Chrome, Firefox 27+, or IE9, use HTTP pre-connection mechanisms to speed up surfing. Also note that some servers merely shut down the connection without sending this message.\n */\n StatusCodes[StatusCodes[\"REQUEST_TIMEOUT\"] = 408] = \"REQUEST_TIMEOUT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.8\n *\n * This response is sent when a request conflicts with the current state of the server.\n */\n StatusCodes[StatusCodes[\"CONFLICT\"] = 409] = \"CONFLICT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.9\n *\n * This response would be sent when the requested content has been permenantly deleted from server, with no forwarding address. Clients are expected to remove their caches and links to the resource. The HTTP specification intends this status code to be used for \"limited-time, promotional services\". APIs should not feel compelled to indicate resources that have been deleted with this status code.\n */\n StatusCodes[StatusCodes[\"GONE\"] = 410] = \"GONE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.10\n *\n * The server rejected the request because the Content-Length header field is not defined and the server requires it.\n */\n StatusCodes[StatusCodes[\"LENGTH_REQUIRED\"] = 411] = \"LENGTH_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7232#section-4.2\n *\n * The client has indicated preconditions in its headers which the server does not meet.\n */\n StatusCodes[StatusCodes[\"PRECONDITION_FAILED\"] = 412] = \"PRECONDITION_FAILED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.11\n *\n * Request entity is larger than limits defined by server; the server might close the connection or return an Retry-After header field.\n */\n StatusCodes[StatusCodes[\"REQUEST_TOO_LONG\"] = 413] = \"REQUEST_TOO_LONG\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.12\n *\n * The URI requested by the client is longer than the server is willing to interpret.\n */\n StatusCodes[StatusCodes[\"REQUEST_URI_TOO_LONG\"] = 414] = \"REQUEST_URI_TOO_LONG\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.13\n *\n * The media format of the requested data is not supported by the server, so the server is rejecting the request.\n */\n StatusCodes[StatusCodes[\"UNSUPPORTED_MEDIA_TYPE\"] = 415] = \"UNSUPPORTED_MEDIA_TYPE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7233#section-4.4\n *\n * The range specified by the Range header field in the request can't be fulfilled; it's possible that the range is outside the size of the target URI's data.\n */\n StatusCodes[StatusCodes[\"REQUESTED_RANGE_NOT_SATISFIABLE\"] = 416] = \"REQUESTED_RANGE_NOT_SATISFIABLE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.14\n *\n * This response code means the expectation indicated by the Expect request header field can't be met by the server.\n */\n StatusCodes[StatusCodes[\"EXPECTATION_FAILED\"] = 417] = \"EXPECTATION_FAILED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2324#section-2.3.2\n *\n * Any attempt to brew coffee with a teapot should result in the error code \"418 I'm a teapot\". The resulting entity body MAY be short and stout.\n */\n StatusCodes[StatusCodes[\"IM_A_TEAPOT\"] = 418] = \"IM_A_TEAPOT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.6\n *\n * The 507 (Insufficient Storage) status code means the method could not be performed on the resource because the server is unable to store the representation needed to successfully complete the request. This condition is considered to be temporary. If the request which received this status code was the result of a user action, the request MUST NOT be repeated until it is requested by a separate user action.\n */\n StatusCodes[StatusCodes[\"INSUFFICIENT_SPACE_ON_RESOURCE\"] = 419] = \"INSUFFICIENT_SPACE_ON_RESOURCE\";\n /**\n * @deprecated\n * Official Documentation @ https://tools.ietf.org/rfcdiff?difftype=--hwdiff&url2=draft-ietf-webdav-protocol-06.txt\n *\n * A deprecated response used by the Spring Framework when a method has failed.\n */\n StatusCodes[StatusCodes[\"METHOD_FAILURE\"] = 420] = \"METHOD_FAILURE\";\n /**\n * Official Documentation @ https://datatracker.ietf.org/doc/html/rfc7540#section-9.1.2\n *\n * Defined in the specification of HTTP/2 to indicate that a server is not able to produce a response for the combination of scheme and authority that are included in the request URI.\n */\n StatusCodes[StatusCodes[\"MISDIRECTED_REQUEST\"] = 421] = \"MISDIRECTED_REQUEST\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.3\n *\n * The request was well-formed but was unable to be followed due to semantic errors.\n */\n StatusCodes[StatusCodes[\"UNPROCESSABLE_ENTITY\"] = 422] = \"UNPROCESSABLE_ENTITY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.4\n *\n * The resource that is being accessed is locked.\n */\n StatusCodes[StatusCodes[\"LOCKED\"] = 423] = \"LOCKED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.5\n *\n * The request failed due to failure of a previous request.\n */\n StatusCodes[StatusCodes[\"FAILED_DEPENDENCY\"] = 424] = \"FAILED_DEPENDENCY\";\n /**\n * Official Documentation @ https://datatracker.ietf.org/doc/html/rfc7231#section-6.5.15\n *\n * The server refuses to perform the request using the current protocol but might be willing to do so after the client upgrades to a different protocol.\n */\n StatusCodes[StatusCodes[\"UPGRADE_REQUIRED\"] = 426] = \"UPGRADE_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc6585#section-3\n *\n * The origin server requires the request to be conditional. Intended to prevent the 'lost update' problem, where a client GETs a resource's state, modifies it, and PUTs it back to the server, when meanwhile a third party has modified the state on the server, leading to a conflict.\n */\n StatusCodes[StatusCodes[\"PRECONDITION_REQUIRED\"] = 428] = \"PRECONDITION_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc6585#section-4\n *\n * The user has sent too many requests in a given amount of time (\"rate limiting\").\n */\n StatusCodes[StatusCodes[\"TOO_MANY_REQUESTS\"] = 429] = \"TOO_MANY_REQUESTS\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc6585#section-5\n *\n * The server is unwilling to process the request because its header fields are too large. The request MAY be resubmitted after reducing the size of the request header fields.\n */\n StatusCodes[StatusCodes[\"REQUEST_HEADER_FIELDS_TOO_LARGE\"] = 431] = \"REQUEST_HEADER_FIELDS_TOO_LARGE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7725\n *\n * The user-agent requested a resource that cannot legally be provided, such as a web page censored by a government.\n */\n StatusCodes[StatusCodes[\"UNAVAILABLE_FOR_LEGAL_REASONS\"] = 451] = \"UNAVAILABLE_FOR_LEGAL_REASONS\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.1\n *\n * The server encountered an unexpected condition that prevented it from fulfilling the request.\n */\n StatusCodes[StatusCodes[\"INTERNAL_SERVER_ERROR\"] = 500] = \"INTERNAL_SERVER_ERROR\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.2\n *\n * The request method is not supported by the server and cannot be handled. The only methods that servers are required to support (and therefore that must not return this code) are GET and HEAD.\n */\n StatusCodes[StatusCodes[\"NOT_IMPLEMENTED\"] = 501] = \"NOT_IMPLEMENTED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.3\n *\n * This error response means that the server, while working as a gateway to get a response needed to handle the request, got an invalid response.\n */\n StatusCodes[StatusCodes[\"BAD_GATEWAY\"] = 502] = \"BAD_GATEWAY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.4\n *\n * The server is not ready to handle the request. Common causes are a server that is down for maintenance or that is overloaded. Note that together with this response, a user-friendly page explaining the problem should be sent. This responses should be used for temporary conditions and the Retry-After: HTTP header should, if possible, contain the estimated time before the recovery of the service. The webmaster must also take care about the caching-related headers that are sent along with this response, as these temporary condition responses should usually not be cached.\n */\n StatusCodes[StatusCodes[\"SERVICE_UNAVAILABLE\"] = 503] = \"SERVICE_UNAVAILABLE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.5\n *\n * This error response is given when the server is acting as a gateway and cannot get a response in time.\n */\n StatusCodes[StatusCodes[\"GATEWAY_TIMEOUT\"] = 504] = \"GATEWAY_TIMEOUT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.6\n *\n * The HTTP version used in the request is not supported by the server.\n */\n StatusCodes[StatusCodes[\"HTTP_VERSION_NOT_SUPPORTED\"] = 505] = \"HTTP_VERSION_NOT_SUPPORTED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.6\n *\n * The server has an internal configuration error: the chosen variant resource is configured to engage in transparent content negotiation itself, and is therefore not a proper end point in the negotiation process.\n */\n StatusCodes[StatusCodes[\"INSUFFICIENT_STORAGE\"] = 507] = \"INSUFFICIENT_STORAGE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc6585#section-6\n *\n * The 511 status code indicates that the client needs to authenticate to gain network access.\n */\n StatusCodes[StatusCodes[\"NETWORK_AUTHENTICATION_REQUIRED\"] = 511] = \"NETWORK_AUTHENTICATION_REQUIRED\";\n})(StatusCodes || (StatusCodes = {}));\n","\n\nexport enum CotomyDebugFeature {\n Api = \"api\",\n Fill = \"fill\",\n Bind = \"bind\",\n FormData = \"formdata\",\n Html = \"html\",\n Page = \"page\",\n FormLoad = \"formload\",\n}\n\nexport class CotomyDebugSettings {\n private static readonly PREFIX = \"cotomy:debug\";\n\n public static isEnabled(key?: string | CotomyDebugFeature): boolean {\n const global = localStorage.getItem(this.PREFIX);\n if (key) {\n const specific = localStorage.getItem(`${this.PREFIX}:${String(key)}`);\n return specific === \"true\" || global === \"true\";\n }\n return global === \"true\";\n }\n\n public static enable(key: string | CotomyDebugFeature): void {\n localStorage.setItem(`${this.PREFIX}:${String(key)}`, \"true\");\n }\n\n public static disable(key: string | CotomyDebugFeature): void {\n localStorage.setItem(`${this.PREFIX}:${String(key)}`, \"false\");\n }\n\n public static enableAll(): void {\n localStorage.setItem(this.PREFIX, \"true\");\n }\n\n public static disableAll(): void {\n localStorage.setItem(this.PREFIX, \"false\");\n }\n\n public static clear(key?: string | CotomyDebugFeature): void {\n if (key) {\n localStorage.removeItem(`${this.PREFIX}:${String(key)}`);\n } else {\n localStorage.removeItem(this.PREFIX);\n }\n }\n}","import cuid from \"cuid\";\nimport { CotomyDebugFeature, CotomyDebugSettings } from \"./debug\";\n\n\n\n//#region イベントハンドラ管理要\n\ninterface IEventTarget {\n get instanceId(): string;\n element: HTMLElement;\n}\n\ntype EventHandler = (e: Event) => void | Promise<void>;\nclass HandlerEntry {\n public constructor(public readonly handle: EventHandler, public readonly wrapper?: EventHandler, public readonly options?: AddEventListenerOptions) {\n }\n\n public get current(): EventHandler {\n return this.wrapper ?? this.handle;\n }\n\n /**\n * Comparison mode\n * “strict”: Exact match (matches including wrapper)\n * “remove”: For deletion (ignores wrapper = treats as wildcard)\n */\n public equals(entry: HandlerEntry, mode?: \"strict\" | \"remove\"): boolean;\n public equals(handle: EventHandler, options?: AddEventListenerOptions, wrapper?: EventHandler, mode?: \"strict\" | \"remove\"): boolean;\n public equals(entryOrHandle: HandlerEntry | EventHandler, optionsOrMode?: AddEventListenerOptions | \"strict\" | \"remove\", wrapper?: EventHandler, mode?: \"strict\" | \"remove\"): boolean {\n let targetHandle: EventHandler;\n let targetWrapper: EventHandler | undefined;\n let targetOptions: AddEventListenerOptions | undefined;\n let compareMode: \"strict\" | \"remove\" = \"strict\";\n\n if (entryOrHandle instanceof HandlerEntry) {\n targetHandle = entryOrHandle.handle;\n targetWrapper = entryOrHandle.wrapper;\n targetOptions = entryOrHandle.options;\n compareMode = (optionsOrMode as \"strict\" | \"remove\") ?? \"strict\";\n\n } else {\n targetHandle = entryOrHandle;\n\n if (typeof optionsOrMode === \"string\") {\n compareMode = optionsOrMode;\n targetWrapper = wrapper;\n targetOptions = undefined;\n } else {\n targetOptions = optionsOrMode;\n targetWrapper = wrapper;\n compareMode = mode ?? \"strict\";\n }\n }\n\n if (this.handle !== targetHandle) {\n return false;\n }\n\n if (compareMode === \"strict\" && this.wrapper !== targetWrapper) {\n return false;\n }\n\n return HandlerEntry.optionsEquals(this.options, targetOptions);\n }\n\n public static optionsEquals(left?: AddEventListenerOptions, right?: AddEventListenerOptions): boolean {\n const getBoolean = (options: AddEventListenerOptions | undefined, key: \"capture\" | \"once\" | \"passive\"): boolean =>\n options?.[key] ?? false;\n const getSignal = (options: AddEventListenerOptions | undefined): AbortSignal | undefined =>\n options?.signal;\n\n const leftSignal = getSignal(left);\n const rightSignal = getSignal(right);\n // 厳格一致: === のみ\n const signalsEqual = leftSignal === rightSignal;\n\n return getBoolean(left, \"capture\") === getBoolean(right, \"capture\")\n && getBoolean(left, \"once\") === getBoolean(right, \"once\")\n && getBoolean(left, \"passive\") === getBoolean(right, \"passive\")\n && signalsEqual;\n }\n}\n\nclass HandlerRegistory {\n private _registory: Map<string, HandlerEntry[]> = new Map();\n\n public constructor(private readonly target: IEventTarget) {\n }\n\n private ensure(event: string): HandlerEntry[] {\n return this._registory.get(event) ?? this._registory.set(event, []).get(event)!;\n }\n\n private find(event: string, entry: HandlerEntry): HandlerEntry | undefined {\n return this._registory.get(event)?.find(e => e.equals(entry)) ?? undefined;\n }\n\n public add(event: string, entry: HandlerEntry): void {\n if (entry.options?.once) {\n this.remove(event, entry);\n }\n if (!this.find(event, entry)) {\n this.ensure(event).push(entry);\n this.target.element.addEventListener(event, entry.current, entry.options);\n }\n }\n\n public remove(event: string, entry?: HandlerEntry): void {\n if (!entry) {\n const list = this._registory.get(event);\n if (!list) return;\n list.forEach(e => this.target.element.removeEventListener(event, e.current, e.options?.capture ?? false));\n this._registory.delete(event);\n return;\n }\n const list = this._registory.get(event);\n if (list) {\n const remaining: HandlerEntry[] = [];\n for (const e of list) {\n if (e.equals(entry, \"remove\")) {\n this.target.element.removeEventListener(event, e.current, e.options?.capture ?? false);\n } else {\n remaining.push(e);\n }\n }\n if (remaining.length === 0) {\n this._registory.delete(event);\n } else {\n this._registory.set(event, remaining);\n }\n }\n }\n\n public get empty(): boolean {\n return this._registory.size === 0;\n }\n}\n\nclass EventRegistry {\n private static _instance: EventRegistry;\n private _registry: Map<string, HandlerRegistory> = new Map();\n\n public static get instance(): EventRegistry {\n return this._instance ?? (this._instance = new EventRegistry());\n }\n\n private map(target: IEventTarget): HandlerRegistory {\n const instanceId = target.instanceId;\n let registry = this._registry.get(instanceId);\n if (!registry) {\n registry = new HandlerRegistory(target);\n this._registry.set(instanceId, registry);\n }\n return registry;\n }\n\n public on(event: string, target: IEventTarget, entry: HandlerEntry): void {\n const registry = this.map(target);\n registry.add(event, entry);\n }\n\n public off(event: string, target: IEventTarget, entry?: HandlerEntry): void {\n const registry = this._registry.get(target.instanceId);\n if (!registry) return;\n if (entry) {\n registry.remove(event, entry);\n } else {\n registry.remove(event);\n }\n if (registry.empty) {\n this._registry.delete(target.instanceId);\n }\n }\n\n public clear(target: IEventTarget): void {\n this._registry.delete(target.instanceId);\n }\n}\n\n//#endregion\n\n\n\n\nexport class CotomyScrollOptions {\n public behavior: ScrollBehavior = \"smooth\";\n public onlyIfNeeded: boolean = true;\n public block: ScrollLogicalPosition = \"nearest\";\n public inline: ScrollLogicalPosition = \"nearest\";\n\n public constructor(init: Partial<CotomyScrollOptions> = {}) {\n if (init.behavior !== undefined) this.behavior = init.behavior;\n if (init.onlyIfNeeded !== undefined) this.onlyIfNeeded = init.onlyIfNeeded;\n if (init.block !== undefined) this.block = init.block;\n if (init.inline !== undefined) this.inline = init.inline;\n }\n\n public get resolveBehavior(): ScrollBehavior {\n return this.behavior;\n }\n\n public static from(options?: CotomyScrollOptions | Partial<CotomyScrollOptions>): CotomyScrollOptions {\n if (options instanceof CotomyScrollOptions) return options;\n return new CotomyScrollOptions(options ?? {});\n }\n}\n\nexport class CotomyElement implements IEventTarget {\n //#region Factory and Finder\n\n public static encodeHtml(text: string): string {\n const div = document.createElement(\"div\");\n div.textContent = text ?? \"\";\n return div.innerHTML;\n }\n\n private static createHTMLElement(html: string): HTMLElement {\n const wrapperMap: Record<string, { prefix: string, suffix: string }> = {\n \"tr\": { prefix: \"<table><tbody>\", suffix: \"</tbody></table>\" },\n \"td\": { prefix: \"<table><tbody><tr>\", suffix: \"</tr></tbody></table>\" },\n \"th\": { prefix: \"<table><tbody><tr>\", suffix: \"</tr></tbody></table>\" },\n \"thead\": { prefix: \"<table>\", suffix: \"</table>\" },\n \"tbody\": { prefix: \"<table>\", suffix: \"</table>\" },\n \"tfoot\": { prefix: \"<table>\", suffix: \"</table>\" },\n \"caption\": { prefix: \"<table>\", suffix: \"</table>\" },\n \"colgroup\": { prefix: \"<table>\", suffix: \"</table>\" },\n \"col\": { prefix: \"<table><colgroup>\", suffix: \"</colgroup></table>\" },\n \"option\": { prefix: \"<select>\", suffix: \"</select>\" },\n \"optgroup\": { prefix: \"<select>\", suffix: \"</select>\" },\n \"legend\": { prefix: \"<fieldset>\", suffix: \"</fieldset>\" },\n \"li\": { prefix: \"<ul>\", suffix: \"</ul>\" }\n };\n\n const match = html.match(/<\\s*([a-z0-9]+)/i);\n if (!match) {\n throw new Error(`Invalid HTML: cannot extract tag from \"${html}\"`);\n }\n const tag = match[1].toLowerCase();\n\n const wrap = wrapperMap[tag];\n const wrappedHtml = wrap ? `${wrap.prefix}${html}${wrap.suffix}` : html;\n\n const parser = new DOMParser();\n const doc = parser.parseFromString(wrappedHtml, \"text/html\");\n const errors = doc.querySelector(\"parsererror\");\n if (errors) {\n throw new Error(`HTML parsing failed for tag <${tag}>: \"${html}\"`);\n }\n if (doc.body.children.length !== 1) {\n throw new Error(`CotomyElement requires a single root element, but got ${doc.body.children.length}.`);\n }\n\n const element = doc.body.querySelector(tag);\n if (!element) {\n throw new Error(`Parsed but <${tag}> element not found: \"${html}\"`);\n }\n\n return element as HTMLElement;\n }\n\n public static first<T extends CotomyElement = CotomyElement>(selector: string, type?: new (el: HTMLElement) => T): T | undefined {\n const element = document.querySelector(selector);\n if (!element) return undefined;\n const ctor = (type ?? CotomyElement) as new (el: HTMLElement) => T;\n return new ctor(<HTMLElement>element);\n }\n\n public static last<T extends CotomyElement = CotomyElement>(selector: string, type?: new (el: HTMLElement) => T): T | undefined {\n const elements = CotomyElement.find<T>(selector, type);\n return elements.pop();\n }\n\n public static find<T extends CotomyElement = CotomyElement>(selector: string, type?: new (el: HTMLElement) => T): T[] {\n const elements = document.querySelectorAll(selector);\n const ctor = (type ?? CotomyElement) as new (el: HTMLElement) => T;\n return Array.from(elements).map(e => new ctor(<HTMLElement>e));\n }\n\n public static contains(selector: string): boolean {\n return document.querySelector(selector) !== null;\n }\n\n public static byId<T extends CotomyElement = CotomyElement>(id: string, type?: new (el: HTMLElement) => T): T | undefined {\n const element = document.getElementById(id);\n const ctor = (type ?? CotomyElement) as new (el: HTMLElement) => T;\n return !element ? undefined : new ctor(<HTMLElement>element);\n }\n\n public static containsById(id: string): boolean {\n return document.getElementById(id) !== null;\n }\n\n public static empty<T extends CotomyElement = CotomyElement>(type?: new (el: HTMLElement) => T): T {\n const ctor = (type ?? CotomyElement) as new (el: HTMLElement) => T;\n return new ctor(document.createElement(\"div\")).attribute(\"data-cotomy-empty\", \"\").style(\"display\", \"none\");\n }\n\n //#endregion\n\n\n\n private _element: HTMLElement;\n private _parentElement: CotomyElement | null = null;\n private _scopedCss?: string;\n\n public constructor(element: HTMLElement | { html: string, css?: string } | { tagname: string, text?: string, css?: string } | string) {\n if (element instanceof HTMLElement) {\n this._element = element;\n } else if (typeof element === \"string\") {\n this._element = CotomyElement.createHTMLElement(element);\n } else {\n this._element = CotomyElement.createHTMLElement(\"html\" in element ? element.html : `<${element.tagname}></${element.tagname}>`);\n if (\"tagname\" in element && element.text) {\n this._element.textContent = element.text;\n }\n if (element.css) {\n this.useScopedCss(element.css);\n }\n if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.Html)) {\n if (\"html\" in element) {\n console.debug(`CotomyElement {html: \"${element.html}\" } is created`);\n }\n if (\"tagname\" in element) {\n console.debug(`CotomyElement {tagname: \"${element.tagname}\", text: \"${element.text ?? \"\"}\"} is created`);\n }\n if (element.css) {\n console.debug(`CotomyElement {css: \"${element.css}\" } is applied`);\n }\n }\n }\n this.setInstanceId();\n }\n\n\n\n //#region tag identifier\n\n private setInstanceId() {\n if (!this.hasAttribute(\"data-cotomy-instance\")) {\n this.attribute(\"data-cotomy-instance\", cuid());\n this.removed(() => {\n this._element = CotomyElement.createHTMLElement(/* html */ `<div data-cotomy-invalidated style=\"display: none;\"></div>`);\n EventRegistry.instance.clear(this);\n });\n this.on(\"cotomy:transitstart\", () => {\n this.attribute(\"data-cotomy-moving\", \"\");\n this.find(\"[data-cotomy-instance]\").forEach(e => e.attribute(\"data-cotomy-moving\", \"\"));\n });\n this.on(\"cotomy:transitend\", () => {\n this.attribute(\"data-cotomy-moving\", null);\n this.find(\"[data-cotomy-instance]\").forEach(e => e.attribute(\"data-cotomy-moving\", null));\n });\n }\n }\n\n public get instanceId(): string {\n return this.attribute(\"data-cotomy-instance\")!;\n }\n\n public get scopeId(): string {\n if (!this.hasAttribute(\"data-cotomy-scopeid\")) {\n this.attribute(\"data-cotomy-scopeid\", cuid());\n }\n return this.attribute(\"data-cotomy-scopeid\")!;\n }\n\n //#endregion\n\n\n\n //#region Scoped CSS\n\n public get stylable(): boolean {\n return ![\"script\", \"style\", \"link\", \"meta\"].includes(this.tagname);\n }\n\n private get scopedCssElementId(): string {\n return `css-${this.scopeId}`;\n }\n\n private useScopedCss(css: string): this {\n if (css && this.stylable) {\n this._scopedCss = css;\n const cssid = this.scopedCssElementId;\n CotomyElement.find(`#${cssid}`).forEach(e => e.remove());\n const element = document.createElement(\"style\");\n const hasRoot = /\\[root\\]/.test(css);\n const normalizedCss = hasRoot ? css : `[root] ${css}`;\n const writeCss = normalizedCss.replace(/\\[root\\]/g, `[data-cotomy-scopeid=\"${this.scopeId}\"]`);\n const node = document.createTextNode(writeCss);\n element.appendChild(node);\n element.id = cssid;\n const head = CotomyElement.first(\"head\")\n || new CotomyElement({ html: /* html */ `<head></head>` }).prependTo(new CotomyElement(document.documentElement));\n head.append(new CotomyElement(element));\n\n this.removed(() => {\n const hasSameScope = document.querySelector(`[data-cotomy-scopeid=\"${this.scopeId}\"]`) !== null;\n if (!hasSameScope) {\n CotomyElement.find(`#${cssid}`).forEach(e => e.remove());\n }\n });\n }\n return this;\n }\n\n private ensureScopedCss(): void {\n if (!this._scopedCss || !this.stylable) return;\n const cssid = this.scopedCssElementId;\n if (!document.getElementById(cssid)) {\n this.useScopedCss(this._scopedCss);\n }\n }\n\n //#endregion\n\n\n\n //#region Layout Event Listener\n\n public static readonly LISTEN_LAYOUT_EVENTS_ATTRIBUTE: string = \"data-cotomy-layout\";\n\n public listenLayoutEvents(): this {\n this.attribute(CotomyElement.LISTEN_LAYOUT_EVENTS_ATTRIBUTE, \"\");\n return this;\n }\n\n //#endregion\n\n\n\n //#region Elementの基本情報\n\n public get id(): string | null | undefined {\n return this.attribute(\"id\");\n }\n\n public generateId(prefix: string = \"__cotomy_elem__\"): this {\n if (!this.id) {\n this.attribute(\"id\", `${prefix}${cuid()}`);\n }\n return this;\n }\n\n public get element(): HTMLElement {\n return this._element;\n }\n\n public clone<T extends CotomyElement = CotomyElement>(type?: new (el: HTMLElement) => T): T {\n const ctor = (type ?? CotomyElement) as new (el: HTMLElement) => T;\n const ATTRIBUTES_TO_STRIP = [\"data-cotomy-instance\", \"data-cotomy-moving\"];\n const clonedElement = this.element.cloneNode(true) as HTMLElement;\n\n if (clonedElement.hasAttribute(\"data-cotomy-invalidated\")) {\n throw new Error(\"Cannot clone an invalidated CotomyElement.\");\n }\n\n ATTRIBUTES_TO_STRIP.forEach(attr => {\n clonedElement.removeAttribute(attr);\n clonedElement.querySelectorAll(`[${attr}]`).forEach(el => el.removeAttribute(attr));\n });\n\n const cloned = new ctor(clonedElement);\n (cloned as unknown as CotomyElement)._scopedCss = this._scopedCss;\n return cloned;\n }\n\n public get tagname(): string {\n return this.element.tagName.toLowerCase();\n }\n\n /// <summary>\n /// 指定したセレクタにマッチする要素が存在するかどうかを判定\n /// ・標準の判定だと親要素を辿って判定しないため、セレクタを精査して親要素から判定する\n /// </summary>\n public is(selector: string): boolean {\n const selectors = selector.split(/\\s+(?![^\\[]*\\])|(?<=\\>)\\s+/);\n let element: HTMLElement | null = this.element;\n\n for (let i = selectors.length - 1; i >= 0; i--) {\n let subSelector = selectors[i].trim();\n let directChild = false;\n\n if (subSelector.startsWith(\">\")) {\n directChild = true;\n subSelector = subSelector.slice(1).trim();\n }\n\n if (!element || !element.matches(subSelector)) {\n return false;\n }\n\n if (directChild) {\n element = element.parentElement;\n } else {\n if (i > 0) {\n while (element && !element.matches(selectors[i - 1].trim())) {\n element = element.parentElement;\n }\n }\n }\n }\n\n return true;\n }\n\n public match(selector: string): boolean {\n try {\n return this.element.matches(selector);\n } catch {\n return false;\n }\n }\n\n public get empty(): boolean {\n const nonEmptyTags = new Set([\n \"input\", \"select\", \"textarea\", \"img\", \"video\", \"audio\", \"br\", \"hr\",\n \"iframe\", \"embed\", \"canvas\", \"object\", \"svg\", \"source\", \"track\", \"col\",\n \"link\", \"meta\", \"base\"\n ]);\n\n return nonEmptyTags.has(this.tagname)\n || this._element.hasAttribute(\"data-cotomy-empty\")\n || this._element.innerHTML.trim() === \"\";\n }\n\n //#endregion\n\n\n\n //#region Elementの状態及び値\n\n public get attached(): boolean {\n return document.contains(this.element);\n }\n\n public get isConnected(): boolean {\n return this.element.isConnected;\n }\n\n public get readonly(): boolean {\n if (\"readOnly\" in this.element) {\n return <boolean>this.element.readOnly;\n } else {\n return this.element.hasAttribute(\"readonly\");\n }\n }\n\n public set readonly(readonly: boolean) {\n if (\"readOnly\" in this.element) {\n this.element.readOnly = readonly;\n } else {\n if (readonly) {\n this.attribute(\"readonly\", \"readonly\");\n } else {\n this.attribute(\"readonly\", null);\n }\n }\n }\n\n public get value(): string {\n if (\"value\" in this.element) {\n return <string>this.element.value;\n } else {\n // \"value\" プロパティが存在しない場合、空文字列を返す\n return this.attribute(\"data-cotomy-value\") ?? \"\";\n }\n }\n\n public set value(val: string) {\n if (\"value\" in this.element) {\n this.element.value = val;\n } else {\n this.attribute(\"data-cotomy-value\", val);\n }\n }\n\n public get text(): string {\n return this.element.textContent ?? \"\";\n }\n\n public set text(text: string) {\n this.element.textContent = text ?? \"\";\n }\n\n public get html(): string {\n return this.element.innerHTML;\n }\n\n public set html(html: string) {\n this.element.innerHTML = html;\n }\n\n //#endregion\n\n\n\n //#region Elementの操作\n\n public setFocus(): this {\n this.element.focus();\n return this;\n }\n\n public get visible(): boolean {\n if (!this.attached) {\n return false;\n }\n\n if (!this.element.offsetParent && !this.attached) {\n return false;\n }\n\n const rect = this.element.getBoundingClientRect();\n if (rect.width > 0 && rect.height > 0) {\n const style = this.getComputedStyle();\n return style.display !== \"none\" && style.visibility !== \"hidden\" && style.visibility !== \"collapse\";\n }\n\n return false;\n }\n\n public get disabled(): boolean {\n if (\"disabled\" in this.element) {\n if (this.match(\":disabled\")) return true;\n return <boolean>this.element.disabled;\n }\n return this.element.hasAttribute(\"disabled\");\n }\n\n public set disabled(value: boolean) {\n if (\"disabled\" in this.element) {\n this.element.disabled = value;\n return;\n }\n if (value) {\n this.attribute(\"disabled\", \"\");\n } else {\n this.attribute(\"disabled\", null);\n }\n }\n\n public get enabled(): boolean {\n return !this.disabled;\n }\n\n public set enabled(value: boolean) {\n this.disabled = !value;\n }\n\n private get invalidated(): boolean {\n return this.element.hasAttribute(\"data-cotomy-invalidated\");\n }\n\n public remove(): void {\n if (!this.invalidated) {\n this._element.remove();\n }\n }\n\n public clear(): this {\n this.find(\"*\").forEach(e => e.remove());\n this.text = \"\";\n return this;\n }\n\n //#endregion\n\n\n\n //#region Elementのサイズ及び位置\n\n public get width(): number {\n return this.element.offsetWidth;\n }\n\n public set width(width: number) {\n let w = width.toString() + \"px\";\n this.style(\"width\", w);\n }\n\n public get height(): number {\n return this.element.offsetHeight;\n }\n\n public set height(height: number) {\n let h = height.toString() + \"px\";\n this.style(\"height\", h);\n }\n\n public get innerWidth(): number {\n return this.element.clientWidth;\n }\n\n public get innerHeight(): number {\n return this.element.clientHeight;\n }\n\n public get outerWidth(): number {\n const style = this.getComputedStyle();\n const margin = parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n return this.element.offsetWidth + margin;\n }\n\n public get outerHeight(): number {\n const style = this.getComputedStyle();\n const margin = parseFloat(style.marginTop) + parseFloat(style.marginBottom);\n return this.element.offsetHeight + margin;\n }\n\n public get scrollHeight(): number {\n return this.element.scrollHeight;\n }\n\n public get scrollWidth(): number {\n return this.element.scrollWidth;\n }\n\n public get scrollTop(): number {\n return this.element.scrollTop;\n }\n\n public get position(): { top: number; left: number } {\n const rect = this.element.getBoundingClientRect();\n return { top: rect.top, left: rect.left };\n }\n\n public get absolutePosition(): { top: number; left: number } {\n const rect = this.element.getBoundingClientRect();\n return { top: rect.top + window.scrollY, left: rect.left + window.scrollX };\n }\n\n public get screenPosition(): { top: number; left: number } {\n const rect = this.element.getBoundingClientRect();\n return { top: rect.top, left: rect.left };\n }\n\n public get rect(): { top: number; left: number; width: number; height: number } {\n const rect = this.element.getBoundingClientRect();\n return { top: rect.top, left: rect.left, width: rect.width, height: rect.height };\n }\n\n public get innerRect(): { top: number; left: number; width: number; height: number } {\n const rect = this.element.getBoundingClientRect();\n const style = this.getComputedStyle();\n const padding = {\n top: parseFloat(style.paddingTop),\n right: parseFloat(style.paddingRight),\n bottom: parseFloat(style.paddingBottom),\n left: parseFloat(style.paddingLeft)\n };\n return {\n top: rect.top + padding.top,\n left: rect.left + padding.left,\n width: rect.width - padding.left - padding.right,\n height: rect.height - padding.top - padding.bottom\n };\n }\n\n public get outerRect(): { top: number; left: number; width: number; height: number } {\n const rect = this.element.getBoundingClientRect();\n const style = this.getComputedStyle();\n const margin = {\n top: parseFloat(style.marginTop),\n right: parseFloat(style.marginRight),\n bottom: parseFloat(style.marginBottom),\n left: parseFloat(style.marginLeft)\n };\n return {\n top: rect.top - margin.top,\n left: rect.left - margin.left,\n width: rect.width + margin.left + margin.right,\n height: rect.height + margin.top + margin.bottom\n };\n }\n\n private static overlapsRect(\n left: { top: number; left: number; width: number; height: number },\n right: { top: number; left: number; width: number; height: number }\n ): boolean {\n if (left.width <= 0 || left.height <= 0 || right.width <= 0 || right.height <= 0) {\n return false;\n }\n const leftRight = left.left + left.width;\n const leftBottom = left.top + left.height;\n const rightRight = right.left + right.width;\n const rightBottom = right.top + right.height;\n\n return left.left < rightRight\n && leftRight > right.left\n && left.top < rightBottom\n && leftBottom > right.top;\n }\n\n public overlaps(target: CotomyElement): boolean {\n if (!this.attached || !target.attached) {\n return false;\n }\n if (this.element === target.element) {\n return false;\n }\n return CotomyElement.overlapsRect(this.rect, target.rect);\n }\n\n public get overlapElements(): CotomyElement[] {\n if (!this.attached) {\n return [];\n }\n return CotomyElement.find(\"[data-cotomy-instance]\")\n .filter(e => e.element !== this.element)\n .filter(e => this.overlaps(e));\n }\n\n\n public get padding(): { top: number; right: number; bottom: number; left: number } {\n const style = this.getComputedStyle();\n return {\n top: parseFloat(style.paddingTop),\n right: parseFloat(style.paddingRight),\n bottom: parseFloat(style.paddingBottom),\n left: parseFloat(style.paddingLeft)\n };\n }\n\n public get margin(): { top: number; right: number; bottom: number; left: number } {\n const style = this.getComputedStyle();\n return {\n top: parseFloat(style.marginTop),\n right: parseFloat(style.marginRight),\n bottom: parseFloat(style.marginBottom),\n left: parseFloat(style.marginLeft)\n };\n }\n\n public get inViewport(): boolean {\n const rect = this.element.getBoundingClientRect();\n return rect.top < window.innerHeight && rect.bottom > 0;\n }\n\n public get isAboveViewport(): boolean {\n return this.element.getBoundingClientRect().bottom < 0;\n }\n\n public get isBelowViewport(): boolean {\n return this.element.getBoundingClientRect().top > window.innerHeight;\n }\n\n public get isLeftViewport(): boolean {\n return this.element.getBoundingClientRect().right < 0;\n }\n\n public get isRightViewport(): boolean {\n return this.element.getBoundingClientRect().left > window.innerWidth;\n }\n\n private static isScrollableOverflow(value: string): boolean {\n const overflow = (value ?? \"\").toLowerCase();\n return overflow === \"auto\" || overflow === \"scroll\";\n }\n\n private static findNearestScrollableAncestor(element: HTMLElement): HTMLElement | null {\n let current: HTMLElement | null = element.parentElement;\n while (current) {\n if (current === document.body || current === document.documentElement) {\n return null;\n }\n\n const style = window.getComputedStyle(current);\n const overflowY = style.overflowY;\n const overflowX = style.overflowX;\n\n const canScrollY = CotomyElement.isScrollableOverflow(overflowY) && current.scrollHeight > current.clientHeight;\n const canScrollX = CotomyElement.isScrollableOverflow(overflowX) && current.scrollWidth > current.clientWidth;\n\n if (canScrollY || canScrollX) {\n return current;\n }\n current = current.parentElement;\n }\n return null;\n }\n\n private static computeAlignedScroll(\n viewStart: number,\n viewSize: number,\n elementStart: number,\n elementEnd: number,\n align: ScrollLogicalPosition,\n onlyIfNeeded: boolean\n ): number | null {\n const viewEnd = viewStart + viewSize;\n\n // 既に完全に表示範囲内ならスクロール不要\n if (onlyIfNeeded && elementStart >= viewStart && elementEnd <= viewEnd) {\n return null;\n }\n\n if (align === \"start\") {\n return elementStart;\n }\n if (align === \"end\") {\n return elementEnd - viewSize;\n }\n if (align === \"center\") {\n const elementSize = elementEnd - elementStart;\n return elementStart - (viewSize - elementSize) / 2;\n }\n\n // nearest\n if (elementStart < viewStart) {\n return elementStart;\n }\n if (elementEnd > viewEnd) {\n return elementEnd - viewSize;\n }\n return null;\n }\n\n public scrollIn(options: CotomyScrollOptions | Partial<CotomyScrollOptions> = {}): this {\n if (!this.attached) return this;\n\n const resolved = CotomyScrollOptions.from(options);\n const behavior = resolved.resolveBehavior;\n const onlyIfNeeded = resolved.onlyIfNeeded;\n const block = resolved.block;\n const inline = resolved.inline;\n\n const scrollable = CotomyElement.findNearestScrollableAncestor(this.element);\n if (scrollable) {\n const elementRect = this.element.getBoundingClientRect();\n const containerRect = scrollable.getBoundingClientRect();\n\n const elementTopInContainer = elementRect.top - containerRect.top + scrollable.scrollTop;\n const elementBottomInContainer = elementRect.bottom - containerRect.top + scrollable.scrollTop;\n const elementLeftInContainer = elementRect.left - containerRect.left + scrollable.scrollLeft;\n const elementRightInContainer = elementRect.right - containerRect.left + scrollable.scrollLeft;\n\n const targetTop = CotomyElement.computeAlignedScroll(\n scrollable.scrollTop,\n scrollable.clientHeight,\n elementTopInContainer,\n elementBottomInContainer,\n block,\n onlyIfNeeded\n );\n const targetLeft = CotomyElement.computeAlignedScroll(\n scrollable.scrollLeft,\n scrollable.clientWidth,\n elementLeftInContainer,\n elementRightInContainer,\n inline,\n onlyIfNeeded\n );\n\n if (!onlyIfNeeded || targetTop !== null || targetLeft !== null) {\n const nextTop = targetTop ?? scrollable.scrollTop;\n const nextLeft = targetLeft ?? scrollable.scrollLeft;\n (scrollable as any).scrollTo?.({ top: nextTop, left: nextLeft, behavior });\n if (!(scrollable as any).scrollTo) {\n scrollable.scrollTop = nextTop;\n scrollable.scrollLeft = nextLeft;\n }\n }\n return this;\n }\n\n const rect = this.element.getBoundingClientRect();\n const currentTop = window.scrollY || document.documentElement.scrollTop;\n const currentLeft = window.scrollX || document.documentElement.scrollLeft;\n\n const elementTop = currentTop + rect.top;\n const elementBottom = currentTop + rect.bottom;\n const elementLeft = currentLeft + rect.left;\n const elementRight = currentLeft + rect.right;\n\n const targetTop = CotomyElement.computeAlignedScroll(currentTop, window.innerHeight, elementTop, elementBottom, block, onlyIfNeeded);\n const targetLeft = CotomyElement.computeAlignedScroll(currentLeft, window.innerWidth, elementLeft, elementRight, inline, onlyIfNeeded);\n\n if (!onlyIfNeeded || targetTop !== null || targetLeft !== null) {\n window.scrollTo({ top: targetTop ?? currentTop, left: targetLeft ?? currentLeft, behavior });\n }\n return this;\n }\n\n public scrollTo(target: string | CotomyElement | HTMLElement, options: CotomyScrollOptions | Partial<CotomyScrollOptions> = {}): this {\n if (typeof target === \"string\") {\n const element = this.first(target);\n element?.scrollIn(options);\n return this;\n }\n if (target instanceof CotomyElement) {\n target.scrollIn(options);\n return this;\n }\n new CotomyElement(target).scrollIn(options);\n return this;\n }\n\n public comesBefore(target: CotomyElement): boolean {\n const pos = this.element.compareDocumentPosition(target.element);\n if (pos & Node.DOCUMENT_POSITION_DISCONNECTED) return false;\n return (pos & Node.DOCUMENT_POSITION_FOLLOWING) !== 0;\n }\n\n public comesAfter(target: CotomyElement): boolean {\n const pos = this.element.compareDocumentPosition(target.element);\n if (pos & Node.DOCUMENT_POSITION_DISCONNECTED) return false;\n return (pos & Node.DOCUMENT_POSITION_PRECEDING) !== 0;\n }\n\n //#endregion\n\n\n\n //#region Elementの属性\n\n public hasAttribute(name: string): boolean {\n return this.element.hasAttribute(name);\n }\n\n public attribute(name: string): string | null | undefined;\n public attribute(name: string, value: string | number | null | undefined): this;\n public attribute(name: string, value?: string | number | null | undefined): string | null | undefined | this {\n if (arguments.length === 1) {\n // getter\n return this.element.hasAttribute(name) ? this.element.getAttribute(name) : undefined;\n } else if (value == null) {\n // remove\n this.element.removeAttribute(name);\n return this;\n } else {\n // setter\n this.element.setAttribute(name, value?.toString() ?? \"\");\n return this;\n }\n }\n\n public hasClass(name: string): boolean {\n return this.element.classList.contains(name);\n }\n\n public addClass(name: string): this {\n this.element.classList.add(name);\n return this;\n }\n\n public removeClass(name: string): this {\n this.element.classList.remove(name);\n return this;\n }\n\n public toggleClass(name: string, force?: boolean): this {\n this.element.classList.toggle(name, force);\n return this;\n }\n\n public style(name: string): string;\n public style(name: string, value: string | null | undefined): this;\n public style(name: string, value?: string | null | undefined): string | this {\n if (arguments.length === 1) {\n // getter\n return this.element.style.getPropertyValue(name);\n } else if (value == null) {\n // remove\n this.element.style.removeProperty(name);\n return this;\n } else {\n // setter\n this.element.style.setProperty(name, value);\n return this;\n }\n }\n\n protected getComputedStyle(): CSSStyleDeclaration {\n return window.getComputedStyle(this.element);\n }\n\n public computedStyle(name: string): string {\n return window.getComputedStyle(this.element).getPropertyValue(name);\n }\n\n //#endregion\n\n\n\n //#region Elementの親子関係\n\n public get parent(): CotomyElement {\n if (this._parentElement == null && this.element.parentElement !== null) {\n this._parentElement = new CotomyElement(this.element.parentElement);\n }\n return this._parentElement ?? CotomyElement.empty();\n }\n\n public get parents(): CotomyElement[] {\n let parents = [];\n let currentElement = this.element.parentElement;\n while (currentElement !== null) {\n parents.push(new CotomyElement(currentElement));\n currentElement = currentElement.parentElement;\n }\n return parents;\n }\n\n public hasChildren(selector: string = \"*\"): boolean {\n return this.element.querySelector(selector) !== null;\n }\n public children<T extends CotomyElement = CotomyElement>(selector: string = \"*\", type?: new (el: HTMLElement) => T): T[] {\n const children = Array.from(this.element.querySelectorAll(selector));\n const directChildren = children.filter(child => child.parentElement === this.element);\n const ctor = (type ?? CotomyElement) as new (el: HTMLElement) => T;\n return directChildren.filter((e): e is HTMLElement => e instanceof HTMLElement).map(e => new ctor(e));\n }\n\n public firstChild<T extends CotomyElement = CotomyElement>(selector: string = \"*\", type?: new (el: HTMLElement) => T): T | undefined {\n const elements = this.children<T>(selector, type);\n return elements.shift() ?? undefined;\n }\n\n public lastChild<T extends CotomyElement = CotomyElement>(selector: string = \"*\", type?: new (el: HTMLElement) => T): T | undefined {\n const elements = this.children<T>(selector, type);\n return elements.pop() ?? undefined;\n }\n\n public closest<T extends CotomyElement = CotomyElement>(selector: string, type?: new (el: HTMLElement) => T): T | undefined {\n const closestElement = this.element.closest(selector);\n if (closestElement !== null && closestElement instanceof HTMLElement) {\n const ctor = (type ?? CotomyElement) as new (el: HTMLElement) => T;\n return new ctor(closestElement);\n } else {\n return undefined;\n }\n }\n\n public previousSibling<T extends CotomyElement = CotomyElement>(selector: string = \"*\", type?: new (el: HTMLElement) => T): T | undefined {\n const element = this.element.previousElementSibling;\n if (element !== null && element instanceof HTMLElement) {\n const ctor = (type ?? CotomyElement) as new (el: HTMLElement) => T;\n const ce = new ctor(element);\n return ce.match(selector) ? ce : ce.previousSibling<T>(selector, type);\n } else {\n return undefined;\n }\n }\n\n public nextSibling<T extends CotomyElement = CotomyElement>(selector: string = \"*\", type?: new (el: HTMLElement) => T): T | undefined {\n const element = this.element.nextElementSibling;\n if (element !== null && element instanceof HTMLElement) {\n const ctor = (type ?? CotomyElement) as new (el: HTMLElement) => T;\n const ce = new ctor(element);\n return ce.match(selector) ? ce : ce.nextSibling<T>(selector, type);\n } else {\n return undefined;\n }\n }\n\n public siblings<T extends CotomyElement = CotomyElement>(selector: string = \"*\", type?: new (el: HTMLElement) => T): T[] {\n const parent = this.element.parentElement;\n if (!parent) return [];\n const ctor = (type ?? CotomyElement) as new (el: HTMLElement) => T;\n return Array.from(parent.children).filter((e): e is HTMLElement => e instanceof HTMLElement\n && e !== this.element).map(e => new ctor(e)).filter(e => e.match(selector));\n }\n\n //#endregion\n\n\n\n //#region 内包するElement\n\n public find<T extends CotomyElement = CotomyElement>(selector: string, type?: new (el: HTMLElement) => T): T[] {\n const elements = Array.from(this.element.querySelectorAll(selector)) as HTMLElement[];\n return <T[]>elements.map(e => new (type ?? CotomyElement)(e));\n }\n\n public first<T extends CotomyElement = CotomyElement>(selector: string = \"*\", type?: new (el: HTMLElement) => T): T | undefined {\n const elements = this.find(selector, type);\n return <T>elements.shift() ?? undefined;\n }\n\n public last<T extends CotomyElement = CotomyElement>(selector: string = \"*\", type?: new (el: HTMLElement) => T): T | undefined {\n const elements = this.find(selector, type);\n return <T>elements.pop() ?? undefined;\n }\n\n public contains(selector: string): boolean {\n return this.find(selector).length > 0;\n }\n\n private static runWithMoveEvents(target: CotomyElement, operation: () => void): void {\n target.trigger(\"cotomy:transitstart\");\n try {\n operation();\n } finally {\n target.trigger(\"cotomy:transitend\");\n }\n }\n\n private static toElement(target: CotomyElement | string | { html: string, css?: string }): CotomyElement {\n return target instanceof CotomyElement ? target : new CotomyElement(target);\n }\n\n public prepend(prepend: CotomyElement | string | { html: string, css?: string }): this {\n const e = CotomyElement.toElement(prepend);\n CotomyElement.runWithMoveEvents(e, () => {\n this.element.prepend(e.element);\n });\n e.ensureScopedCss();\n return this;\n }\n\n public append(target: CotomyElement | string | { html: string, css?: string }): this {\n const e = CotomyElement.toElement(target);\n CotomyElement.runWithMoveEvents(e, () => {\n this.element.append(e.element);\n });\n e.ensureScopedCss();\n return this;\n }\n\n public appendAll(targets: Array<CotomyElement | string | { html: string, css?: string }>): this {\n targets.forEach(e => this.append(e));\n return this;\n }\n\n public insertBefore(append: CotomyElement | string | { html: string, css?: string }): this {\n const e = CotomyElement.toElement(append);\n CotomyElement.runWithMoveEvents(e, () => {\n this.element.before(e.element);\n });\n e.ensureScopedCss();\n return this;\n }\n\n public insertAfter(append: CotomyElement | string | { html: string, css?: string }): this {\n const e = CotomyElement.toElement(append);\n CotomyElement.runWithMoveEvents(e, () => {\n this.element.after(e.element);\n });\n e.ensureScopedCss();\n return this;\n }\n\n public appendTo(target: CotomyElement): this {\n CotomyElement.runWithMoveEvents(this, () => {\n target.element.append(this.element);\n });\n this.ensureScopedCss();\n return this;\n }\n\n public prependTo(target: CotomyElement): this {\n CotomyElement.runWithMoveEvents(this, () => {\n target.element.prepend(this.element);\n });\n this.ensureScopedCss();\n return this;\n }\n\n //#endregion\n\n\n\n\n //#region Event\n\n public trigger(event: string): this;\n public trigger(event: string, e: Event): this;\n public trigger(event: Event): this;\n public trigger(event: string | Event, e?: Event): this {\n if (event instanceof Event) {\n this.element.dispatchEvent(event);\n return this;\n }\n this.element.dispatchEvent(e ?? new Event(event, { bubbles: true }));\n return this;\n }\n\n public on(event: string | string[], handle: (e: Event) => void | Promise<void>): this;\n public on(event: string | string[], handle: (e: Event) => void | Promise<void>, options: AddEventListenerOptions): this;\n public on(event: string | string[], handle: (e: Event) => void | Promise<void>, options?: AddEventListenerOptions): this {\n const events = Array.isArray(event) ? event : [event];\n events.forEach(eventName => {\n const entry = new HandlerEntry(handle, undefined, options);\n EventRegistry.instance.on(eventName, this, entry);\n });\n return this;\n }\n\n public onSubTree(event: string | string[], selector: string, handle: (e: Event) => void | Promise<void>): this;\n public onSubTree(event: string | string[], selector: string, handle: (e: Event) => void | Promise<void>, options: AddEventListenerOptions): this;\n public onSubTree(event: string | string[], selector: string, handle: (e: Event) => void | Promise<void>, options?: AddEventListenerOptions): this {\n const delegate: EventHandler = (e: Event) => {\n const target = e.target as HTMLElement | null;\n if (target && target.closest(selector)) {\n return handle(e);\n }\n };\n const events = Array.isArray(event) ? event : [event];\n events.forEach(eventName => {\n const entry = new HandlerEntry(handle, delegate, options);\n EventRegistry.instance.on(eventName, this, entry);\n });\n return this;\n }\n\n public once(event: string | string[], handle: (e: Event) => void | Promise<void>): this;\n public once(event: string | string[], handle: (e: Event) => void | Promise<void>, options: AddEventListenerOptions): this;\n public once(event: string | string[], handle: (e: Event) => void | Promise<void>, options?: AddEventListenerOptions): this {\n const mergedOptions: AddEventListenerOptions = { ...(options ?? {}), once: true };\n this.off(event, handle, mergedOptions);\n const events = Array.isArray(event) ? event : [event];\n events.forEach(eventName => {\n const entry = new HandlerEntry(handle, undefined, mergedOptions);\n EventRegistry.instance.on(eventName, this, entry);\n });\n return this;\n }\n\n public off(event: string | string[]): this;\n public off(event: string | string[], handle: (e: Event) => void | Promise<void>): this;\n public off(event: string | string[], handle: (e: Event) => void | Promise<void>, options: AddEventListenerOptions): this;\n public off(event: string | string[], handle?: (e: Event) => void | Promise<void>, options?: AddEventListenerOptions): this {\n const events = Array.isArray(event) ? event : [event];\n events.forEach(eventName => {\n if (handle) {\n const entry = new HandlerEntry(handle, undefined, options);\n EventRegistry.instance.off(eventName, this, entry);\n } else {\n EventRegistry.instance.off(eventName, this);\n }\n });\n return this;\n }\n\n //#region Mouse Events\n\n public click(): this;\n public click(handle: (e: MouseEvent) => void | Promise<void>): this;\n public click(handle?: (e: MouseEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"click\", async e => await handle(e as MouseEvent));\n } else {\n this.trigger(\"click\");\n }\n return this;\n }\n\n public dblclick(): this;\n public dblclick(handle: (e: MouseEvent) => void | Promise<void>): this;\n public dblclick(handle?: (e: MouseEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"dblclick\", async e => await handle(e as MouseEvent));\n } else {\n this.trigger(\"dblclick\");\n }\n return this;\n }\n\n public mouseover(): this;\n public mouseover(handle: (e: MouseEvent) => void | Promise<void>): this;\n public mouseover(handle?: (e: MouseEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"mouseover\", async e => await handle(e as MouseEvent));\n } else {\n this.trigger(\"mouseover\");\n }\n return this;\n }\n\n public mouseout(): this;\n public mouseout(handle: (e: MouseEvent) => void | Promise<void>): this;\n public mouseout(handle?: (e: MouseEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"mouseout\", async e => await handle(e as MouseEvent));\n } else {\n this.trigger(\"mouseout\");\n }\n return this;\n }\n\n public mousedown(): this;\n public mousedown(handle: (e: MouseEvent) => void | Promise<void>): this;\n public mousedown(handle?: (e: MouseEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"mousedown\", async e => await handle(e as MouseEvent));\n } else {\n this.trigger(\"mousedown\");\n }\n return this;\n }\n\n public mouseup(): this;\n public mouseup(handle: (e: MouseEvent) => void | Promise<void>): this;\n public mouseup(handle?: (e: MouseEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"mouseup\", async e => await handle(e as MouseEvent));\n } else {\n this.trigger(\"mouseup\");\n }\n return this;\n }\n\n public mousemove(): this;\n public mousemove(handle: (e: MouseEvent) => void | Promise<void>): this;\n public mousemove(handle?: (e: MouseEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"mousemove\", async e => await handle(e as MouseEvent));\n } else {\n this.trigger(\"mousemove\");\n }\n return this;\n }\n\n public mouseenter(): this;\n public mouseenter(handle: (e: MouseEvent) => void | Promise<void>): this;\n public mouseenter(handle?: (e: MouseEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"mouseenter\", async e => await handle(e as MouseEvent));\n } else {\n this.trigger(\"mouseenter\");\n }\n return this;\n }\n\n public mouseleave(): this;\n public mouseleave(handle: (e: MouseEvent) => void | Promise<void>): this;\n public mouseleave(handle?: (e: MouseEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"mouseleave\", async e => await handle(e as MouseEvent));\n } else {\n this.trigger(\"mouseleave\");\n }\n return this;\n }\n\n public dragstart(): this;\n public dragstart(handle: (e: DragEvent) => void | Promise<void>): this;\n public dragstart(handle?: (e: DragEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"dragstart\", async e => await handle(e as DragEvent));\n } else {\n this.trigger(\"dragstart\");\n }\n return this;\n }\n\n public dragend(): this;\n public dragend(handle: (e: DragEvent) => void | Promise<void>): this;\n public dragend(handle?: (e: DragEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"dragend\", async e => await handle(e as DragEvent));\n } else {\n this.trigger(\"dragend\");\n }\n return this;\n }\n\n public dragover(): this;\n public dragover(handle: (e: DragEvent) => void | Promise<void>): this;\n public dragover(handle?: (e: DragEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"dragover\", async e => await handle(e as DragEvent));\n } else {\n this.trigger(\"dragover\");\n }\n return this;\n }\n\n public dragenter(): this;\n public dragenter(handle: (e: DragEvent) => void | Promise<void>): this;\n public dragenter(handle?: (e: DragEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"dragenter\", async e => await handle(e as DragEvent));\n } else {\n this.trigger(\"dragenter\");\n }\n return this;\n }\n\n public dragleave(): this;\n public dragleave(handle: (e: DragEvent) => void | Promise<void>): this;\n public dragleave(handle?: (e: DragEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"dragleave\", async e => await handle(e as DragEvent));\n } else {\n this.trigger(\"dragleave\");\n }\n return this;\n }\n\n public drop(): this;\n public drop(handle: (e: DragEvent) => void | Promise<void>): this;\n public drop(handle?: (e: DragEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"drop\", async e => await handle(e as DragEvent));\n } else {\n this.trigger(\"drop\");\n }\n return this;\n }\n\n public drag(): this;\n public drag(handle: (e: DragEvent) => void | Promise<void>): this;\n public drag(handle?: (e: DragEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"drag\", async e => await handle(e as DragEvent));\n } else {\n this.trigger(\"drag\");\n }\n return this;\n }\n\n public removed(handle: ((e: Event) => void | Promise<void>)): this {\n this.element.addEventListener(\"removed\", async e => await handle(e));\n return this;\n }\n\n //#endregion\n\n\n\n //#region Keyboard Events\n\n public keydown(): this;\n public keydown(handle: (e: KeyboardEvent) => void | Promise<void>): this;\n public keydown(handle?: (e: KeyboardEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"keydown\", async e => await handle(e as KeyboardEvent));\n } else {\n this.trigger(\"keydown\");\n }\n return this;\n }\n\n public keyup(): this;\n public keyup(handle: (e: KeyboardEvent) => void | Promise<void>): this;\n public keyup(handle?: (e: KeyboardEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"keyup\", async e => await handle(e as KeyboardEvent));\n } else {\n this.trigger(\"keyup\");\n }\n return this;\n }\n\n public keypress(): this;\n public keypress(handle: (e: KeyboardEvent) => void | Promise<void>): this;\n public keypress(handle?: (e: KeyboardEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"keypress\", async e => await handle(e as KeyboardEvent));\n } else {\n this.trigger(\"keypress\");\n }\n return this;\n }\n\n //#endregion\n\n\n //#region Input Control Events\n\n public change(): this;\n public change(handle: (e: Event) => void | Promise<void>): this;\n public change(handle?: (e: Event) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"change\", async e => await handle(e));\n } else {\n this.trigger(\"change\");\n }\n return this;\n }\n\n public input(): this;\n public input(handle: (e: Event) => void | Promise<void>): this;\n public input(handle?: (e: Event) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"input\", async e => await handle(e));\n } else {\n this.trigger(\"input\");\n }\n return this;\n }\n\n //#endregion\n\n\n //#region View and Control Evnet\n\n private static _intersectionObserver: IntersectionObserver | null = null;\n public static get intersectionObserver(): IntersectionObserver {\n return CotomyElement._intersectionObserver = CotomyElement._intersectionObserver\n ?? new IntersectionObserver(entries => {\n entries.filter(entry => entry.isIntersecting).forEach(\n entry => entry.target.dispatchEvent(new Event(\"inview\")));\n entries.filter(entry => !entry.isIntersecting).forEach(\n entry => entry.target.dispatchEvent(new Event(\"outview\")));\n });\n }\n\n public inview(): this;\n public inview(handle: (e: Event) => void | Promise<void>): this;\n public inview(handle?: (e: Event) => void | Promise<void>): this {\n if (handle) {\n CotomyElement.intersectionObserver.observe(this.element);\n this.element.addEventListener(\"inview\", async e => await handle(e));\n } else {\n this.trigger(\"inview\");\n }\n return this;\n }\n\n public outview(): this;\n public outview(handle: (e: Event) => void | Promise<void>): this;\n public outview(handle?: (e: Event) => void | Promise<void>): this {\n if (handle) {\n CotomyElement.intersectionObserver.observe(this.element);\n this.element.addEventListener(\"outview\", async e => await handle(e));\n } else {\n this.trigger(\"outview\");\n }\n return this;\n }\n\n public focus(): this;\n public focus(handle: (e: FocusEvent) => void | Promise<void>): this;\n public focus(handle?: (e: FocusEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"focus\", async e => await handle(e as FocusEvent));\n } else {\n this.trigger(\"focus\");\n }\n return this;\n }\n\n public blur(): this;\n public blur(handle: (e: FocusEvent) => void | Promise<void>): this;\n public blur(handle?: (e: FocusEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"blur\", async e => await handle(e as FocusEvent));\n } else {\n this.trigger(\"blur\");\n }\n return this;\n }\n\n public focusin(): this;\n public focusin(handle: (e: FocusEvent) => void | Promise<void>): this;\n public focusin(handle?: (e: FocusEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"focusin\", async e => await handle(e as FocusEvent));\n } else {\n this.trigger(\"focusin\");\n }\n return this;\n }\n\n public focusout(): this;\n public focusout(handle: (e: FocusEvent) => void | Promise<void>): this;\n public focusout(handle?: (e: FocusEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"focusout\", async e => await handle(e as FocusEvent));\n } else {\n this.trigger(\"focusout\");\n }\n return this;\n }\n\n public filedrop(handle: (files: File[]) => void | Promise<void>): this {\n this.element.addEventListener(\"drop\", async e => {\n e.preventDefault();\n const dt = e.dataTransfer;\n if (dt && dt.files) {\n await handle(Array.from(dt.files));\n }\n });\n return this;\n }\n\n //#endregion\n\n\n\n //#region Layout Events\n public resize(): this;\n public resize(handle: (e: Event) => void | Promise<void>): this;\n public resize(handle?: (e: Event) => void | Promise<void>): this {\n this.listenLayoutEvents();\n if (handle) {\n this.element.addEventListener(\"cotomy:resize\", async e => await handle(e));\n } else {\n this.trigger(\"cotomy:resize\");\n }\n return this;\n }\n\n public scroll(): this;\n public scroll(handle: (e: Event) => void | Promise<void>): this;\n public scroll(handle?: (e: Event) => void | Promise<void>): this {\n this.listenLayoutEvents();\n if (handle) {\n this.element.addEventListener(\"cotomy:scroll\", async e => await handle(e));\n } else {\n this.trigger(\"cotomy:scroll\");\n }\n return this;\n }\n\n public changeLayout(): this;\n public changeLayout(handle: (e: Event) => void | Promise<void>): this;\n public changeLayout(handle?: (e: Event) => void | Promise<void>): this {\n this.listenLayoutEvents();\n if (handle) {\n this.element.addEventListener(\"cotomy:changelayout\", async e => await handle(e));\n } else {\n this.trigger(\"cotomy:changelayout\");\n }\n return this;\n }\n //#endregion\n //#endregion\n}\n\nexport class CotomyMetaElement extends CotomyElement {\n public static get(name: string): CotomyMetaElement {\n return CotomyElement.first<CotomyMetaElement>(`meta[name=\"${name}\" i]`, CotomyMetaElement)\n ?? CotomyElement.empty<CotomyMetaElement>(CotomyMetaElement);\n }\n\n public get content(): string {\n return this.attribute(\"content\") ?? \"\";\n }\n}\n\n\n\n\nexport class CotomyWindow {\n private static _instance: CotomyWindow | null = null;\n\n public static get instance(): CotomyWindow {\n return CotomyWindow._instance ?? (CotomyWindow._instance = new CotomyWindow());\n }\n\n\n private _body: CotomyElement = CotomyElement.empty();\n private _mutationObserver: MutationObserver | null = null;\n private _reloading: boolean = false;\n private _eventHandlers: { [event: string]: Array<(e: Event) => void | Promise<void>> } = {};\n\n public get initialized(): boolean {\n return this._body.attached;\n }\n\n public initialize(): this {\n if (!this.initialized) {\n if (!document.body) {\n throw new Error(\"<body> element not found. DOM may not be ready.\");\n }\n this._body = CotomyElement.first(\"body\")!;\n\n const changeLayoutEvents = [\"resize\", \"scroll\", \"orientationchange\", \"fullscreenchange\", \"cotomy:ready\"];\n changeLayoutEvents.forEach(e => {\n window.addEventListener(e, () => {\n const changeLayoutEvent = new CustomEvent(\"cotomy:changelayout\");\n window.dispatchEvent(changeLayoutEvent);\n }, { passive: true });\n });\n\n // documentにファイルがドラッグされた場合、開いてしまうことを防ぐ\n document.addEventListener(\"dragover\", e => {\n e.stopPropagation();\n e.preventDefault();\n });\n\n this.resize(() => {\n document.querySelectorAll(`[${CotomyElement.LISTEN_LAYOUT_EVENTS_ATTRIBUTE}]`).forEach(e => {\n e.dispatchEvent(new CustomEvent(\"cotomy:resize\"));\n });\n });\n\n this.scroll(() => {\n document.querySelectorAll(`[${CotomyElement.LISTEN_LAYOUT_EVENTS_ATTRIBUTE}]`).forEach(e => {\n e.dispatchEvent(new CustomEvent(\"cotomy:scroll\"));\n });\n });\n\n this.changeLayout(() => {\n document.querySelectorAll(`[${CotomyElement.LISTEN_LAYOUT_EVENTS_ATTRIBUTE}]`).forEach(e => {\n e.dispatchEvent(new CustomEvent(\"cotomy:changelayout\"));\n });\n });\n\n\n // DOM要素の削除をトラップして、removedイベントを発生させる\n this._mutationObserver = new MutationObserver(mutations => {\n mutations.forEach(mutation => {\n mutation.removedNodes.forEach(node => {\n if (typeof HTMLElement !== \"undefined\" && node instanceof HTMLElement) {\n const element = new CotomyElement(node);\n if (!element.hasAttribute(\"data-cotomy-moving\") && !element.attached) {\n element.trigger(\"removed\");\n }\n }\n });\n });\n });\n this._mutationObserver.observe(this.body.element, { childList: true, subtree: true });\n }\n return this;\n }\n\n public get reloading(): boolean {\n return this._reloading;\n }\n\n public reload() {\n this._reloading = true;\n location.reload();\n }\n\n\n\n public get body(): CotomyElement {\n return this._body;\n }\n\n public append(e: CotomyElement | string | { html: string, css?: string }): this {\n this._body.append(e);\n return this;\n }\n\n public moveNext(focused: CotomyElement, shift: boolean = false) {\n const selector = \"input, a, select, button, textarea\";\n const focusableElements = Array.from(this.body.element.querySelectorAll(selector))\n .map(e => new CotomyElement(<HTMLElement>e))\n .filter(e => e.width > 0 && e.height > 0 && e.visible && e.enabled && !e.hasAttribute(\"readonly\"));\n\n const focusedIndex = focusableElements.map(e => e.element).indexOf(focused.element);\n\n let nextIndex = focusedIndex + (shift ? -1 : 1);\n if (nextIndex >= focusableElements.length) {\n nextIndex = 0;\n } else if (nextIndex < 0) {\n nextIndex = focusableElements.length - 1;\n }\n\n // 次の要素が存在する場合、フォーカスを移動\n if (focusableElements[nextIndex]) {\n focusableElements[nextIndex].setFocus();\n }\n }\n\n public trigger(event: string): this;\n public trigger(event: string, e: Event): this;\n public trigger(event: Event): this;\n public trigger(event: string | Event, e?: Event): this {\n if (event instanceof Event) {\n window.dispatchEvent(event);\n return this;\n }\n window.dispatchEvent(e ?? new Event(event, { bubbles: true }));\n return this;\n }\n\n public on(event: string | string[], handle: (e: Event) => void | Promise<void>): this {\n const events = Array.isArray(event) ? event : [event];\n events.forEach(eventName => {\n if (!this._eventHandlers[eventName]) this._eventHandlers[eventName] = [];\n this._eventHandlers[eventName].push(handle);\n window.addEventListener(eventName, handle);\n });\n return this;\n }\n\n public off(event: string | string[], handle?: (e: Event) => void | Promise<void>): this {\n const events = Array.isArray(event) ? event : [event];\n events.forEach(eventName => {\n if (handle) {\n window.removeEventListener(eventName, handle);\n const handlers = this._eventHandlers[eventName]?.filter(h => h !== handle) ?? [];\n if (handlers.length > 0) {\n this._eventHandlers[eventName] = handlers;\n } else {\n delete this._eventHandlers[eventName];\n }\n } else {\n for (const h of this._eventHandlers[eventName] ?? []) {\n window.removeEventListener(eventName, h);\n }\n delete this._eventHandlers[eventName];\n }\n });\n return this;\n }\n\n public load(handle: (e: Event) => void | Promise<void>): this {\n return this.on(\"load\", handle);\n }\n\n public ready(handle: ((e: Event) => void | Promise<void>)): this {\n return this.on(\"cotomy:ready\", handle);\n }\n\n public resize(): this;\n public resize(handle: (event: Event) => void | Promise<void>): this;\n public resize(handle?: (event: Event) => void | Promise<void>): this {\n if (handle) {\n return this.on(\"resize\", handle);\n } else {\n return this.trigger(\"resize\");\n }\n }\n\n public scroll(): this;\n public scroll(handle: (event: Event) => void | Promise<void>): this;\n public scroll(handle?: (event: Event) => void | Promise<void>): this {\n if (handle) {\n return this.on(\"scroll\", handle);\n } else {\n return this.trigger(\"scroll\");\n }\n }\n\n public scrollTo(target: string | CotomyElement | HTMLElement, options: CotomyScrollOptions | Partial<CotomyScrollOptions> = {}): this {\n if (typeof target === \"string\") {\n const element = CotomyElement.first(target);\n element?.scrollIn(options);\n return this;\n }\n\n if (target instanceof CotomyElement) {\n target.scrollIn(options);\n return this;\n }\n\n new CotomyElement(target).scrollIn(options);\n return this;\n }\n\n public changeLayout(): this;\n public changeLayout(handle: (event: Event) => void | Promise<void>): this;\n public changeLayout(handle?: (event: Event) => void | Promise<void>): this {\n if (handle) {\n return this.on(\"cotomy:changelayout\", handle);\n } else {\n return this.trigger(\"cotomy:changelayout\");\n }\n }\n\n public pageshow(): this;\n public pageshow(handle: (event: PageTransitionEvent) => void | Promise<void>): this;\n public pageshow(handle?: (event: PageTransitionEvent) => void | Promise<void>): this {\n if (handle) {\n return this.on(\"pageshow\", handle as (e: Event) => void | Promise<void>);\n } else {\n return this.trigger(\"pageshow\");\n }\n }\n\n public get scrollTop(): number {\n return window.scrollY || document.documentElement.scrollTop;\n }\n\n public get scrollLeft(): number {\n return window.scrollX || document.documentElement.scrollLeft;\n }\n\n public get width(): number {\n return window.innerWidth;\n }\n\n public get height(): number {\n return window.innerHeight;\n }\n\n public get documentWidth(): number {\n return document.documentElement.scrollWidth;\n }\n\n public get documentHeight(): number {\n return document.documentElement.scrollHeight;\n }\n}\n","import dayjs from 'dayjs';\nimport timezone from 'dayjs/plugin/timezone';\nimport utc from 'dayjs/plugin/utc';\nimport { StatusCodes } from \"http-status-codes\";\nimport { CotomyDebugFeature, CotomyDebugSettings } from './debug';\nimport { CotomyElement } from \"./view\";\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\n\n\n//#region 例外クラス\n// 共通基底例外\nexport class CotomyApiException extends Error {\n constructor(\n public readonly status: number,\n public readonly message: string,\n public readonly response: CotomyApiResponse,\n public readonly bodyText: string = \"\"\n ) {\n super(message);\n this.name = \"CotomyApiException\";\n }\n}\n\n// クライアントエラー系\nexport class CotomyHttpClientError extends CotomyApiException {\n constructor(status: number, message: string, response: CotomyApiResponse, body = \"\") {\n super(status, message, response, body);\n this.name = \"CotomyHttpClientError\";\n }\n}\nexport class CotomyUnauthorizedException extends CotomyHttpClientError {\n constructor(status: number, message: string, response: CotomyApiResponse, body = \"\") {\n super(status, message, response, body);\n this.name = \"CotomyUnauthorizedException\";\n }\n}\nexport class CotomyForbiddenException extends CotomyHttpClientError {\n constructor(status: number, message: string, response: CotomyApiResponse, body = \"\") {\n super(status, message, response, body);\n this.name = \"CotomyForbiddenException\";\n }\n}\nexport class CotomyNotFoundException extends CotomyHttpClientError {\n constructor(status: number, message: string, response: CotomyApiResponse, body = \"\") {\n super(status, message, response, body);\n this.name = \"CotomyNotFoundException\";\n }\n}\nexport class CotomyConflictException extends CotomyHttpClientError {\n constructor(status: number, message: string, response: CotomyApiResponse, body = \"\") {\n super(status, message, response, body);\n this.name = \"CotomyConflictException\";\n }\n}\n\nexport class CotomyRequestInvalidException extends CotomyHttpClientError {\n constructor(status: number, message: string, response: CotomyApiResponse, body = \"\") {\n super(status, message, response, body);\n this.name = \"CotomyRequestInvalidException\";\n }\n}\n\nexport class CotomyTooManyRequestsException extends CotomyHttpClientError {\n constructor(status: number, message: string, response: CotomyApiResponse, body = \"\") {\n super(status, message, response, body);\n this.name = \"CotomyTooManyRequestsException\";\n }\n}\n\nexport class CotomyHttpServerError extends CotomyApiException {\n constructor(status: number, message: string, response: CotomyApiResponse, body = \"\") {\n super(status, message, response, body);\n this.name = \"CotomyHttpServerError\";\n }\n}\n\nexport class CotomyResponseJsonParseException extends Error {\n constructor(message: string = \"Failed to parse JSON response.\") {\n super(message);\n this.name = \"CotomyResponseJsonParseException\";\n }\n}\nexport class CotomyInvalidFormDataBodyException extends Error {\n constructor(message: string = \"Body must be an instance of FormData.\") {\n super(message);\n this.name = \"CotomyInvalidFormDataBodyException\";\n }\n}\n\n//#endregion 例外クラス\n\n\n//#region 定数定義\n\nclass Methods {\n public static readonly GET = 'GET';\n public static readonly POST = 'POST';\n public static readonly PUT = 'PUT';\n public static readonly PATCH = 'PATCH';\n public static readonly DELETE = 'DELETE';\n public static readonly HEAD = 'HEAD';\n public static readonly OPTIONS = 'OPTIONS';\n public static readonly TRACE = 'TRACE';\n public static readonly CONNECT = 'CONNECT';\n}\n\nclass ResponseMessages {\n private static readonly _responseMessages: { [key: number]: string } = {\n [StatusCodes.BAD_REQUEST]: \"There is an error in the input. Please check and try again.\",\n [StatusCodes.UNAUTHORIZED]: \"You are not authenticated. Please log in again.\",\n [StatusCodes.FORBIDDEN]: \"You do not have permission to use this feature. If necessary, please contact the administrator.\",\n [StatusCodes.NOT_FOUND]: \"The specified information could not be found. It may have been deleted. Please start over or contact the administrator.\",\n [StatusCodes.METHOD_NOT_ALLOWED]: \"This operation is currently prohibited on the server.\",\n [StatusCodes.NOT_ACCEPTABLE]: \"The request cannot be accepted. Processing has been stopped.\",\n [StatusCodes.PROXY_AUTHENTICATION_REQUIRED]: \"Proxy authentication is required for internet access.\",\n [StatusCodes.REQUEST_TIMEOUT]: \"The request timed out. Please try again.\",\n [StatusCodes.CONFLICT]: \"The identifier you are trying to register already exists. Please check the content and try again.\",\n [StatusCodes.PAYMENT_REQUIRED]: \"Payment is required for this operation. Please check.\",\n [StatusCodes.GONE]: \"The requested resource is no longer available.\",\n [StatusCodes.LENGTH_REQUIRED]: \"The Content-Length header field is required for the request.\",\n [StatusCodes.PRECONDITION_FAILED]: \"The request failed because the precondition was not met.\",\n [StatusCodes.UNSUPPORTED_MEDIA_TYPE]: \"The requested media type is not supported.\",\n [StatusCodes.EXPECTATION_FAILED]: \"The server cannot meet the Expect header of the request.\",\n [StatusCodes.MISDIRECTED_REQUEST]: \"The server cannot appropriately process this request.\",\n [StatusCodes.UNPROCESSABLE_ENTITY]: \"There is an error in the request content.\",\n [StatusCodes.LOCKED]: \"The requested resource is locked.\",\n [StatusCodes.FAILED_DEPENDENCY]: \"The request failed due to dependency on a previous failed request.\",\n [StatusCodes.UPGRADE_REQUIRED]: \"A protocol upgrade is required to perform this operation.\",\n [StatusCodes.PRECONDITION_REQUIRED]: \"This request requires a precondition.\",\n [StatusCodes.TOO_MANY_REQUESTS]: \"Too many requests have been sent in a short time. Please wait and try again.\",\n [StatusCodes.REQUEST_HEADER_FIELDS_TOO_LARGE]: \"The request headers are too large.\",\n [StatusCodes.INTERNAL_SERVER_ERROR]: \"An unexpected error occurred. Please try again later.\",\n [StatusCodes.BAD_GATEWAY]: \"The server is currently overloaded. Please wait and try again later.\",\n [StatusCodes.SERVICE_UNAVAILABLE]: \"The service is temporarily unavailable. Please try again later.\",\n [StatusCodes.GATEWAY_TIMEOUT]: \"The communication timed out. Please try again.\",\n [StatusCodes.HTTP_VERSION_NOT_SUPPORTED]: \"The current communication method is not supported.\",\n [StatusCodes.NOT_IMPLEMENTED]: \"The server does not support the requested functionality.\",\n [StatusCodes.INSUFFICIENT_STORAGE]: \"The server has insufficient storage.\",\n [StatusCodes.NETWORK_AUTHENTICATION_REQUIRED]: \"Network authentication is required.\",\n 413: \"The payload of the request is too large. Please check the size.\", // PAYLOAD_TOO_LARGE\n 414: \"The request URI is too long.\", // URI_TOO_LONG\n 416: \"The requested range is invalid.\", // RANGE_NOT_SATISFIABLE\n 508: \"The server detected a loop.\", // LOOP_DETECTED\n 510: \"The request does not include the required extensions.\", // NOT_EXTENDED\n };\n\n public static getMessage(status: number): string {\n return this._responseMessages[status] || `Unexpected error: ${status}`;\n }\n}\n\n//#endregion 定数定義\n\n\n\n\n\n\n\n//#region APIレスポンスクラス\n\nexport class CotomyApiResponse {\n private _object: any | null = null;\n private _text: string | null = null;\n\n public constructor(private readonly _response?: Response | null) {\n }\n\n public get available(): boolean {\n return !!this._response;\n }\n\n public get empty(): boolean {\n return !this._response || this._response.status === 0;\n }\n\n public get ok(): boolean {\n return this._response?.ok ?? false;\n }\n\n public get status(): number {\n return this._response?.status ?? 0;\n }\n\n public get statusText(): string {\n return this._response?.statusText ?? '';\n }\n\n public get headers(): Headers {\n return this._response?.headers ?? new Headers();\n }\n\n public async textAsync(): Promise<string> {\n if (!this._response) return \"\";\n return this._text ?? (this._text = await this._response?.text());\n }\n\n /**\n * Centralized helper to ensure response JSON is parsed exactly once.\n */\n private async _ensureJsonParsedAsync(defaultValue: any): Promise<any> {\n if (this._response && this._object === null) {\n try {\n const text = await this.textAsync();\n if (!text) {\n this._object = defaultValue;\n } else {\n this._object = JSON.parse(text);\n }\n } catch (error) {\n throw new CotomyResponseJsonParseException(\n `Failed to parse JSON response: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n }\n return this._object ?? defaultValue;\n }\n\n public async objectAsync<T = any>(defaultValue: T = {} as T): Promise<T> {\n return await this._ensureJsonParsedAsync(defaultValue);\n }\n\n public async arrayAsync<T = any>(defaultValue: T[] = []): Promise<T[]> {\n const parsed = await this._ensureJsonParsedAsync(defaultValue);\n return Array.isArray(parsed) ? parsed : defaultValue;\n }\n}\n\n//#endregion APIレスポンスクラス\n\n\n\n\n//#region APIから取得したデータの展開\n\nexport interface ICotomyBindNameGenerator {\n create(name: string, parent?: string): string;\n createIndex(parent: string | undefined, index: number): string;\n}\n\nexport class CotomyBracketBindNameGenerator implements ICotomyBindNameGenerator {\n create(name: string, parent?: string): string {\n return parent ? `${parent}[${name}]` : name;\n }\n\n createIndex(parent: string | undefined, index: number): string {\n return this.create(String(index), parent);\n }\n}\n\nexport class CotomyDotBindNameGenerator implements ICotomyBindNameGenerator {\n create(name: string, parent?: string): string {\n return parent ? `${parent}.${name}` : name;\n }\n\n createIndex(parent: string | undefined, index: number): string {\n return parent ? `${parent}[${index}]` : `[${index}]`;\n }\n}\n\nexport class CotomyViewRenderer {\n private static _defaultBindNameGenerator: ICotomyBindNameGenerator | null = null;\n public static get defaultBindNameGenerator(): ICotomyBindNameGenerator {\n return this._defaultBindNameGenerator ?? new CotomyBracketBindNameGenerator(); \n }\n public static set defaultBindNameGenerator(generator: ICotomyBindNameGenerator) {\n this._defaultBindNameGenerator = generator;\n }\n public static resetDefaultBindNameGenerator(): void {\n this._defaultBindNameGenerator = null;\n }\n\n \n public constructor(\n public readonly element: CotomyElement,\n public readonly bindNameGenerator: ICotomyBindNameGenerator = CotomyViewRenderer.defaultBindNameGenerator\n ) {\n }\n\n private _renderers: { [key: string]: (element: CotomyElement, value: any) => void } = {};\n public renderer(type: string, callback: (element: CotomyElement, value: any) => void): this {\n this._renderers[type] = callback;\n return this;\n }\n protected get renderers(): { [key: string]: (element: CotomyElement, value: any) => void } {\n this.initialize();\n return this._renderers;\n }\n\n private _initialized: boolean = false;\n protected get initialized(): boolean {\n return this._initialized;\n }\n\n protected initialize(): this {\n if (!this.initialized) {\n this.renderer(\"mail\", (element, value) => {\n if (value) {\n new CotomyElement(/* html */`<a href=\"mailto:${value}\">${value}</a>`).appendTo(element);\n }\n });\n\n this.renderer(\"tel\", (element, value) => {\n if (value) {\n new CotomyElement(/* html */`<a href=\"tel:${value}\">${value}</a>`).appendTo(element);\n }\n });\n \n this.renderer(\"url\", (element, value) => {\n if (value) {\n new CotomyElement(/* html */`<a href=\"${value}\" target=\"_blank\">${value}</a>`).appendTo(element);\n }\n });\n\n this.renderer(\"number\", (element, value) => {\n if (value !== undefined && value !== null) {\n // ISO 4217 通貨コード\n const currency = element.attribute(\"data-cotomy-currency\")\n || element.closest(\"[data-cotomy-currency]\")?.attribute(\"data-cotomy-currency\");\n const fractionDigitsAttribute = element.attribute(\"data-cotomy-fraction-digits\")\n || element.closest(\"[data-cotomy-fraction-digits]\")?.attribute(\"data-cotomy-fraction-digits\");\n const fractionDigits = fractionDigitsAttribute ? Number.parseInt(fractionDigitsAttribute, 10) : undefined;\n const hasFractionDigits = Number.isFinite(fractionDigits)\n && fractionDigits && fractionDigits >= 0 && fractionDigits <= 20;\n\n const options: Intl.NumberFormatOptions = {\n ...(currency ? { style: \"currency\", currency } : {}),\n ...(hasFractionDigits ? { minimumFractionDigits: fractionDigits, maximumFractionDigits: fractionDigits } : {}),\n };\n\n const languages = (navigator.languages && navigator.languages.length ? navigator.languages : [navigator.language]).filter(Boolean);\n const localeAttribute = element.attribute(\"data-cotomy-locale\")\n || element.closest(\"[data-cotomy-locale]\")?.attribute(\"data-cotomy-locale\")\n || this.element.attribute(\"data-cotomy-locale\")\n || this.element.closest(\"[data-cotomy-locale]\")?.attribute(\"data-cotomy-locale\")\n || languages[0]\n || \"en-US\";\n const locale = localeAttribute.includes(\"-\") ? localeAttribute.split(\"-\")[0] : localeAttribute;\n\n element.text = new Intl.NumberFormat(locale, options).format(value);\n }\n });\n\n this.renderer(\"utc\", (element, value) => {\n if (value) {\n const hasOffset = /([+-]\\d{2}:\\d{2}|Z)$/.test(value);\n const date = hasOffset ? new Date(value) : new Date(`${value}Z`);\n if (!isNaN(date.getTime())) {\n const format = element.attribute(\"data-cotomy-format\") ?? \"YYYY/MM/DD HH:mm\";\n const timezone = element.attribute(\"data-cotomy-timezone\")\n || element.closest(\"[data-cotomy-timezone]\")?.attribute(\"data-cotomy-timezone\");\n const dt = dayjs(date);\n element.text = timezone && timezone.trim() !== \"\" ? dt.tz(timezone).format(format) : dt.format(format);\n }\n }\n });\n\n this.renderer(\"date\", (element, value) => {\n if (value) {\n const date = new Date(value);\n if (!isNaN(date.getTime())) {\n const format = element.attribute(\"data-cotomy-format\") ?? \"YYYY/MM/DD\";\n const timezone = element.attribute(\"data-cotomy-timezone\")\n || element.closest(\"[data-cotomy-timezone]\")?.attribute(\"data-cotomy-timezone\");\n const dt = dayjs(date);\n element.text = timezone && timezone.trim() !== \"\" ? dt.tz(timezone).format(format) : dt.format(format);\n }\n }\n });\n\n this._initialized = true;\n }\n return this;\n }\n\n protected bindPrimitiveValue(propertyName: string, value: any): void {\n this.element.find(`[data-cotomy-bind=\"${propertyName}\" i]`).forEach(element => {\n if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.Bind)) {\n console.debug(`Binding data to element [data-cotomy-bind=\"${propertyName}\"]:`, value);\n }\n const type = element.attribute(\"data-cotomy-bindtype\")?.toLowerCase();\n if (type && this.renderers[type]) {\n this.renderers[type](element, value);\n } else {\n element.text = String(value ?? \"\");\n }\n });\n }\n\n protected async applyArrayAsync(values: any[], propertyName: string): Promise<void> {\n for (let index = 0; index < values.length; index++) {\n const item = values[index];\n const itemName = this.bindNameGenerator.createIndex(propertyName, index);\n if (Array.isArray(item)) {\n await this.applyArrayAsync(item, itemName);\n continue;\n }\n if (item && typeof item === \"object\") {\n await this.applyObjectAsync(item, itemName);\n continue;\n }\n this.bindPrimitiveValue(itemName, item);\n }\n }\n\n protected async applyObjectAsync(target: any, propertyName: string | undefined = undefined): Promise<void> {\n if (!propertyName) {\n this.element.find(\"[data-cotomy-bind]\").forEach(e => e.clear());\n }\n for (const [key, value] of Object.entries(await target)) {\n const pname = this.bindNameGenerator.create(key, propertyName);\n if (Array.isArray(value)) {\n await this.applyArrayAsync(value, pname);\n continue;\n }\n if (value && typeof value === \"object\") {\n await this.applyObjectAsync(value, pname);\n continue;\n }\n this.bindPrimitiveValue(pname, value);\n }\n }\n\n public async applyAsync(respose: CotomyApiResponse): Promise<this> {\n if (!respose.available) {\n throw new Error(\"Response is not available.\");\n }\n\n await this.applyObjectAsync(await respose.objectAsync());\n return this;\n }\n}\n\n//#endregion\n\n\n\n//#region インターフェース定義\n\nexport interface ICotomyApiOptions {\n baseUrl?: string | null;\n headers?: Record<string, string> | null;\n credentials?: RequestCredentials | null;\n redirect?: RequestRedirect | null;\n cache?: RequestCache | null;\n referrerPolicy?: ReferrerPolicy | null;\n mode?: RequestMode | null;\n keepalive?: boolean | null;\n integrity?: string | null;\n}\n\nexport interface ICotomyRestSubmitForm {\n method: string;\n action: string;\n body: globalThis.FormData | Record<string, string> | any;\n}\n\n//#endregion インターフェース定義\n\n\n\n\nexport class CotomyApi {\n private readonly _abortController: AbortController = new AbortController();\n\n public constructor(private readonly _options: ICotomyApiOptions = {\n baseUrl: null, headers: null, credentials: null, redirect: null,\n cache: null, referrerPolicy: null, mode: null, keepalive: true,\n integrity: '', }) {\n }\n\n public get baseUrl(): string {\n return this._options.baseUrl || '';\n }\n\n public get headers(): Record<string, string> {\n return this._options.headers || {};\n }\n\n public get credentials(): RequestCredentials {\n return this._options.credentials || 'same-origin';\n }\n\n public get redirect(): RequestRedirect {\n return this._options.redirect || 'follow';\n }\n\n public get cache(): RequestCache {\n return this._options.cache || 'no-cache';\n }\n\n public get referrerPolicy(): ReferrerPolicy {\n return this._options.referrerPolicy || 'no-referrer';\n }\n\n public get mode(): RequestMode {\n return this._options.mode || 'cors';\n }\n\n public get keepalive(): boolean {\n return this._options.keepalive ?? true;\n }\n\n public get integrity(): string {\n return this._options.integrity || '';\n }\n\n public get abortController(): AbortController {\n return this._abortController;\n }\n\n\n private async requestAsync<T extends CotomyApiResponse = CotomyApiResponse>(method: string, path: string, body?: globalThis.FormData | Record<string, string> | any, signal?: AbortSignal, responseType?: new (response?: Response | null) => T): Promise<T> {\n if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.Api)) {\n console.debug(`API request: ${method} ${path}`, { body, headers: this.headers });\n }\n\n //#region Content-Type毎のbody変換処理\n\n const bodyTransformers: { [key: string]: (body: globalThis.FormData | Record<string, string> | any) => any } = {\n \"application/json\": (body) => JSON.stringify(body),\n \"application/x-www-form-urlencoded\": (body) => {\n if (body instanceof globalThis.FormData) {\n let params = new URLSearchParams();\n body.forEach((value, key) => {\n params.append(key, String(value));\n });\n return params.toString();\n } else {\n return new URLSearchParams(body).toString();\n }\n },\n \"multipart/form-data\": (body) => {\n if (body instanceof globalThis.FormData) {\n return body;\n }\n const formData = new globalThis.FormData();\n for (const [key, value] of Object.entries(body)) {\n formData.append(key, String(value));\n }\n return formData;\n } \n };\n\n //#endregion\n\n\n // 先頭がアルファベットの場合は絶対または相対URLとみなす\n // それ以外はベースURLを使用して組み立てる\n const url = /^[a-zA-Z]/.test(path) ? path\n : `${(this.baseUrl || '').replace(/\\/$/, '')}/${path.replace(/^\\//, '')}`;\n const headers = new Headers(this.headers);\n\n if (headers.has('Content-Type') && headers.get(\"Content-Type\") === \"multipart/form-data\") {\n // multipart/form-dataの場合はbodyをFormDataとして送信するため、Content-Typeヘッダーを削除する\n headers.delete('Content-Type');\n }\n\n const ct = headers.get('Content-Type') || \"multipart/form-data\";\n if (ct === 'multipart/form-data' && body && !(body instanceof globalThis.FormData)) {\n if (typeof body !== 'object' || Array.isArray(body)) {\n throw new CotomyInvalidFormDataBodyException(\n 'Body must be FormData or a plain object when using multipart/form-data.'\n );\n }\n }\n \n const responseClass = responseType ?? CotomyApiResponse as new (response?: Response | null) => T;\n const response = new responseClass(await fetch(url, {\n method,\n headers,\n credentials: this.credentials,\n body: body ? (bodyTransformers[ct] ? bodyTransformers[ct](body) : body) : undefined,\n signal: signal ?? this._abortController.signal,\n redirect: this.redirect,\n cache: this.cache,\n referrerPolicy: this.referrerPolicy,\n mode: this.mode,\n keepalive: this.keepalive,\n integrity: this.integrity,\n }));\n\n if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.Api)) {\n console.debug(`response body: ${response.status} ${response.statusText}`, await response.textAsync());\n }\n\n // 400番台と500番台のエラーハンドリング\n if (response.status >= 400 && response.status < 600) {\n const errorBody = await response.textAsync().catch(() => 'No response body available');\n const errorMessage = response.statusText || ResponseMessages.getMessage(response.status) || `Unexpected error: ${response.status}`;\n if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.Api)) {\n console.error(`API request failed: ${errorMessage}`, response, errorBody);\n }\n switch (response.status) {\n case StatusCodes.BAD_REQUEST:\n case StatusCodes.UNPROCESSABLE_ENTITY:\n throw new CotomyRequestInvalidException(response.status, errorMessage, response, errorBody);\n case StatusCodes.UNAUTHORIZED:\n throw new CotomyUnauthorizedException(response.status, errorMessage, response, errorBody);\n case StatusCodes.FORBIDDEN:\n throw new CotomyForbiddenException(response.status, errorMessage, response, errorBody);\n case StatusCodes.NOT_FOUND:\n throw new CotomyNotFoundException(response.status, errorMessage, response, errorBody);\n case StatusCodes.CONFLICT:\n case StatusCodes.GONE:\n throw new CotomyConflictException(response.status, errorMessage, response, errorBody);\n case StatusCodes.TOO_MANY_REQUESTS:\n throw new CotomyTooManyRequestsException(response.status, errorMessage, response, errorBody);\n default:\n if (response.status < 500) {\n throw new CotomyHttpClientError(response.status, errorMessage, response, errorBody);\n } else {\n throw new CotomyHttpServerError(response.status, errorMessage, response, errorBody);\n }\n }\n }\n\n return response as T;\n }\n\n\n //#region HTTPメソッド\n\n public async getAsync(path: string, parameters?: globalThis.FormData | Record<string, string | number>): Promise<CotomyApiResponse> {\n let queryString = '';\n if (parameters instanceof globalThis.FormData) {\n let params = new URLSearchParams();\n parameters.forEach((value, key) => {\n params.append(key, String(value));\n });\n queryString = params.toString();\n } else if (parameters) {\n queryString = new URLSearchParams(\n Object.fromEntries(\n Object.entries(parameters).map(([key, value]) => [key, String(value)])\n )\n ).toString();\n }\n const fullUrl = queryString ? `${path}?${queryString}` : path;\n if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.Api)) {\n console.debug(`GET request to: ${fullUrl}`);\n }\n return this.requestAsync(Methods.GET, fullUrl);\n }\n\n public async postAsync(path: string, body: globalThis.FormData | Record<string, string | number> | any): Promise<CotomyApiResponse> {\n return this.requestAsync(Methods.POST, path, body);\n }\n\n public async putAsync(path: string, body: globalThis.FormData | Record<string, string | number> | any): Promise<CotomyApiResponse> {\n return this.requestAsync(Methods.PUT, path, body);\n }\n\n public async patchAsync(path: string, body: globalThis.FormData | Record<string, string | number> | any): Promise<CotomyApiResponse> {\n return this.requestAsync(Methods.PATCH, path, body);\n }\n\n public async deleteAsync(path: string): Promise<CotomyApiResponse> {\n return this.requestAsync(Methods.DELETE, path);\n }\n\n public async headAsync(path: string): Promise<CotomyApiResponse> {\n return this.requestAsync(Methods.HEAD, path);\n }\n\n public async optionsAsync(path: string): Promise<CotomyApiResponse> {\n return this.requestAsync(Methods.OPTIONS, path);\n }\n\n public async traceAsync(path: string): Promise<CotomyApiResponse> {\n return this.requestAsync(Methods.TRACE, path);\n }\n\n public async connectAsync(path: string): Promise<CotomyApiResponse> {\n return this.requestAsync(Methods.CONNECT, path);\n }\n\n public async submitAsync(form: ICotomyRestSubmitForm): Promise<CotomyApiResponse> {\n return form.method.toUpperCase() === Methods.GET ? this.getAsync(form.action, form.body)\n : this.requestAsync(form.method.toUpperCase(), form.action, form.body);\n }\n\n //#endregion HTTPメソッド\n}\n","import dayjs from \"dayjs\";\nimport { StatusCodes } from \"http-status-codes\";\nimport { CotomyApi, CotomyApiException, CotomyApiResponse, CotomyNotFoundException, CotomyViewRenderer, ICotomyBindNameGenerator } from \"./api\";\nimport { CotomyDebugFeature, CotomyDebugSettings } from \"./debug\";\nimport { CotomyElement, CotomyWindow } from \"./view\";\n\n\n\n\nexport abstract class CotomyForm extends CotomyElement {\n public override generateId(prefix: string = \"__cotomy_form__\"): this {\n return super.generateId(prefix);\n }\n\n\n //#region フォームの基本情報\n\n protected get method(): string {\n return this.attribute(\"method\") ?? \"get\";\n }\n\n public get actionUrl(): string {\n return this.attribute(\"action\") ?? location.pathname + location.search;\n }\n\n //#endregion\n\n\n\n //#region フォームの再読み込み\n\n public async reloadAsync(): Promise<void> {\n CotomyWindow.instance.reload();\n }\n\n public get autoReload(): boolean {\n return this.attribute(\"data-cotomy-autoreload\") !== \"false\";\n }\n\n public set autoReload(value: boolean) {\n if (value) {\n this.attribute(\"data-cotomy-autoreload\", null);\n } else {\n this.attribute(\"data-cotomy-autoreload\", \"false\");\n }\n }\n\n //#endregion\n\n\n\n //#region フォームの構築\n\n public get initialized(): boolean {\n return this.hasAttribute(\"data-cotomy-initialized\");\n }\n\n public initialize(): this {\n if (!this.initialized) {\n this.on(\"submit\", async e => {\n e.preventDefault();\n e.stopPropagation();\n await this.submitAsync();\n });\n\n this.attribute(\"data-cotomy-initialized\", \"\");\n }\n return this;\n }\n\n //#endregion\n\n\n\n //#region Submit\n\n public abstract submitAsync(): Promise<void>;\n\n //#endregion\n}\n\n\n\nexport class CotomyQueryForm extends CotomyForm {\n protected override get method(): string {\n return \"get\"; // QueryFormはGETメソッドを使用することが前提\n }\n\n\n public override async submitAsync(): Promise<void> {\n const url = this.actionUrl;\n\n // クエリパラメータを連想配列にする\n const queryParams: { [key: string]: string } = {};\n const queryString = url.split(\"?\")[1];\n if (queryString) {\n queryString.split(\"&\").forEach(param => {\n const [key, value] = param.split(\"=\");\n if (key && value) {\n queryParams[key] = decodeURIComponent(value);\n }\n });\n }\n\n // フォームの入力値をクエリパラメータに追加\n this.find(\"[name]\").forEach(input => {\n const name = input.attribute(\"name\");\n if (name) {\n const value = input.value;\n if (value) {\n queryParams[name] = encodeURIComponent(value);\n } else {\n delete queryParams[name]; // 空の値は削除\n }\n }\n });\n\n // クエリパラメータを再構築\n const newQueryString = Object.entries(queryParams)\n .map(([key, value]) => `${key}=${value}`)\n .join(\"&\");\n\n location.href = `${url.split(\"?\")[0]}?${newQueryString}`;\n }\n}\n\n\nexport class CotomyApiFailedEvent extends Event {\n public constructor(private _response: CotomyApiResponse, eventName: string = \"cotomy:apifailed\") {\n super(eventName, { bubbles: true, cancelable: true });\n }\n\n public get response(): CotomyApiResponse {\n return this._response;\n }\n}\n\n\nexport class CotomyApiForm extends CotomyForm {\n public apiClient(): CotomyApi {\n return new CotomyApi();\n }\n\n public override get actionUrl(): string {\n return this.attribute(\"action\")!;\n }\n\n\n\n //#region API Submit\n\n public apiFailed(handle: ((event: CotomyApiFailedEvent) => void | Promise<void>)): this {\n this.on(\"cotomy:apifailed\", async e => {\n await handle(e as CotomyApiFailedEvent);\n });\n return this;\n }\n\n protected triggerApiFailedEvent(response: CotomyApiResponse): void {\n this.trigger(\"cotomy:apifailed\", new CotomyApiFailedEvent(response));\n if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.Api)) {\n console.error(\"API request failed:\", response);\n }\n }\n\n public submitFailed(handle: ((event: CotomyApiFailedEvent) => void | Promise<void>)): this {\n this.on(\"cotomy:submitfailed\", async e => {\n await handle(e as CotomyApiFailedEvent);\n });\n return this;\n }\n\n protected triggerSubmitFailedEvent(response: CotomyApiResponse): void {\n this.trigger(\"cotomy:submitfailed\", new CotomyApiFailedEvent(response, \"cotomy:submitfailed\"));\n if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.Api)) {\n console.error(\"Submit failed:\", response);\n }\n }\n\n protected override get method(): string {\n return this.attribute(\"method\") ?? \"post\";\n }\n\n public formData(): FormData {\n const formElement = <HTMLFormElement>this.element;\n const formData = new FormData(formElement);\n\n this.find(\"input[type=datetime-local][name]:not([disabled])\").forEach(input => {\n const localDateTime = input.value;\n if (localDateTime) {\n const date = new Date(localDateTime);\n if (!isNaN(date.getTime())) {\n formData.set(input.attribute(\"name\")!, dayjs(date).format(\"YYYY-MM-DDTHH:mmZ\"));\n }\n }\n });\n\n if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.FormData)) {\n console.debug(\"FormData:\", Array.from(formData.entries()));\n }\n\n return formData;\n };\n\n public override async submitAsync(): Promise<void> {\n const formData = this.formData();\n await this.submitToApiAsync(formData);\n }\n\n protected async submitToApiAsync(formData: FormData): Promise<CotomyApiResponse> {\n const api = this.apiClient();\n\n try {\n const response = await api.submitAsync({\n method: this.method,\n action: this.actionUrl,\n body: formData,\n });\n\n return response;\n } catch (error) {\n if (error instanceof CotomyApiException) {\n this.triggerApiFailedEvent(error.response);\n this.triggerSubmitFailedEvent(error.response);\n }\n throw error;\n }\n }\n\n //#endregion\n}\n\n\n\nexport class CotomyEntityApiForm extends CotomyApiForm {\n\n public get entityKey(): string | undefined {\n return this.attribute(\"data-cotomy-entity-key\") || undefined;\n }\n\n protected get requiresEntityKey(): boolean {\n return this.attribute(\"data-cotomy-identify\") !== \"false\";\n }\n\n protected get hasEntityKey(): boolean {\n return !!this.entityKey;\n }\n\n public override get actionUrl(): string {\n const action = this.attribute(\"action\")!;\n const normalized = action.replace(/\\/+$/, \"\");\n\n if (!this.entityKey) {\n return action.endsWith(\"/\") ? action : `${normalized}/`;\n }\n\n return `${normalized}/${encodeURIComponent(this.entityKey)}`;\n }\n\n protected override get method(): string {\n if (this.hasAttribute(\"method\") && this.attribute(\"method\") !== \"\") {\n return this.attribute(\"method\")!;\n }\n\n return this.hasEntityKey ? \"put\" : \"post\";\n }\n\n\n //#region データ識別\n\n protected setEntityKey(response: CotomyApiResponse) {\n if (this.requiresEntityKey && response.status === StatusCodes.CREATED) {\n if (this.hasEntityKey) {\n if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.FormLoad)) {\n console.warn(\"Entity key already exists, but server responded with 201 Created. Possible duplicate POST.\");\n }\n return;\n }\n\n const location = response.headers.get(\"Location\");\n if (!location) return;\n\n const normalize = (url: string) => {\n const s = url.replace(/[?#].*$/, \"\");\n return s.endsWith(\"/\") ? s.slice(0, -1) : s;\n };\n\n const toPath = (u: string) => {\n try { return new URL(u, location).pathname; } catch { return u; }\n };\n\n const baseAction = normalize(toPath(this.attribute(\"action\")!));\n const locPath = normalize(toPath(location));\n const actionParts = baseAction.split(\"/\");\n const locationParts = locPath.split(\"/\");\n const isPrefix = locationParts.length >= actionParts.length && actionParts.every((p, i) => p === locationParts[i]);\n if (!isPrefix) {\n throw new Error(`Location path does not start with action path. action=\"${baseAction}\", location=\"${locPath}\"`);\n }\n\n const addedParts = locationParts.slice(actionParts.length).filter(Boolean);\n if (addedParts.length === 1 && addedParts[0]) {\n this.attribute(\"data-cotomy-entity-key\", addedParts[0]);\n } else {\n const msg = `Location does not contain a single entity key segment.\n action=\"${baseAction}\", location=\"${locPath}\", added=[\"${addedParts.join('\",\"')}\"]`;\n throw new Error(msg);\n }\n }\n }\n\n protected override async submitToApiAsync(formData: FormData): Promise<CotomyApiResponse> {\n const response = await super.submitToApiAsync(formData);\n\n // APIのレスポンスからidを設定\n if (this.requiresEntityKey && response.status === StatusCodes.CREATED) {\n this.setEntityKey(response);\n }\n\n return response;\n }\n\n //#endregion\n}\n\n\n\nexport class CotomyEntityFillApiForm extends CotomyEntityApiForm {\n private _fillers: { [key: string]: (input: CotomyElement, value: any) => void } = {};\n\n public filler(type: string, func: (input: CotomyElement, value: any) => void): this {\n this._fillers[type] = func;\n return this;\n }\n\n public override initialize(): this {\n if (!this.initialized) {\n super.initialize();\n\n this.filler(\"datetime-local\", (input, value) => {\n const hasOffset = /[+-]\\d{2}:\\d{2}$/.test(value);\n const date = hasOffset ? new Date(value) : new Date(`${value}Z`);\n if (!isNaN(date.getTime())) {\n input.value = dayjs(date).format(\"YYYY-MM-DDTHH:mm\");\n } else {\n input.value = \"\";\n }\n });\n\n this.filler(\"checkbox\", (input, value) => {\n input.attribute(\"checked\", null);\n if (value) {\n input.attribute(\"checked\", \"\");\n }\n });\n\n this.filler(\"radio\", (input, value) => {\n input.attribute(\"checked\", null);\n if (input.value === value) {\n input.attribute(\"checked\", \"\");\n }\n });\n\n CotomyWindow.instance.ready(async () => {\n await this.loadAsync();\n });\n }\n return this;\n }\n\n\n\n\n\n public override async reloadAsync(): Promise<void> {\n await this.loadAsync();\n }\n\n protected get loadActionUrl(): string {\n return this.actionUrl;\n }\n\n protected bindNameGenerator(): ICotomyBindNameGenerator {\n return CotomyViewRenderer.defaultBindNameGenerator;\n }\n\n public renderer(): CotomyViewRenderer {\n return new CotomyViewRenderer(this, this.bindNameGenerator());\n }\n\n protected get canLoad(): boolean {\n return this.hasEntityKey;\n }\n\n protected async loadAsync(): Promise<CotomyApiResponse> {\n if (!this.canLoad) {\n return new CotomyApiResponse();\n }\n\n const api = this.apiClient();\n try {\n const response = await api.getAsync(this.loadActionUrl);\n await this.fillAsync(response);\n return response;\n } catch (error) {\n if (error instanceof CotomyApiException) {\n this.triggerApiFailedEvent(error.response);\n }\n if (error instanceof CotomyNotFoundException) {\n return error.response;\n }\n throw error;\n }\n }\n\n protected applyValueToInputs(pname: string, value: any): void {\n this.find(`input[name=\"${pname}\" i]:not([data-cotomy-fill=\"false\"]):not([multiple]),\n textarea[name=\"${pname}\" i]:not([data-cotomy-fill=\"false\"]), \n select[name=\"${pname}\" i]:not([data-cotomy-fill=\"false\"]):not([multiple])`).forEach(input => {\n if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.Fill)) {\n console.debug(`Filling input[name=\"${pname}\"] with value:`, value);\n }\n const type = input.attribute(\"type\")?.toLowerCase();\n if (type && this._fillers[type]) {\n this._fillers[type](input, value);\n } else {\n input.value = String(value || \"\");\n }\n });\n }\n\n protected async fillArrayAsync(bindNameGenerator: ICotomyBindNameGenerator, values: any[], propertyName: string): Promise<void> {\n for (let index = 0; index < values.length; index++) {\n const item = values[index];\n const itemName = bindNameGenerator.createIndex(propertyName, index);\n if (Array.isArray(item)) {\n await this.fillArrayAsync(bindNameGenerator, item, itemName);\n continue;\n }\n if (item && typeof item === \"object\") {\n await this.fillObjectAsync(bindNameGenerator, item, itemName);\n continue;\n }\n this.applyValueToInputs(itemName, item);\n }\n }\n\n protected async fillObjectAsync(bindNameGenerator: ICotomyBindNameGenerator, target: any, propertyName: string | undefined = undefined): Promise<void> {\n for (const [key, value] of Object.entries(target)) {\n if (key.endsWith('[]')) {\n continue;\n }\n\n const pname = bindNameGenerator.create(key, propertyName);\n if (Array.isArray(value)) {\n await this.fillArrayAsync(bindNameGenerator, value, pname);\n continue;\n }\n if (value && typeof value === \"object\") {\n await this.fillObjectAsync(bindNameGenerator, value, pname);\n continue;\n }\n\n this.applyValueToInputs(pname, value);\n }\n }\n\n protected async fillAsync(response: CotomyApiResponse): Promise<void> {\n if (response.ok && response.available) {\n await this.fillObjectAsync(this.bindNameGenerator(), await response.objectAsync());\n await this.renderer().applyAsync(response);\n }\n\n // textareaを自動リサイズ\n this.find(\"textarea\").forEach(e => e.input());\n }\n\n protected override async submitToApiAsync(formData: globalThis.FormData): Promise<CotomyApiResponse> {\n const response = await super.submitToApiAsync(formData);\n if (response.ok) {\n await this.fillAsync(response);\n }\n return response;\n }\n}\n","import dayjs from \"dayjs\";\nimport timezone from 'dayjs/plugin/timezone';\nimport utc from 'dayjs/plugin/utc';\nimport { ICotomyBindNameGenerator, CotomyViewRenderer } from \"./api\";\nimport { CotomyDebugFeature, CotomyDebugSettings } from \"./debug\";\nimport { CotomyForm } from \"./form\";\nimport { CotomyElement, CotomyWindow } from \"./view\";\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\n\nexport class CotomyUrl {\n public static location() {\n return new CotomyUrl();\n }\n\n private _url: URL;\n\n public constructor(url: string | null = null) {\n this._url = new URL(url ?? (location.pathname + location.search), location.origin);\n }\n\n public get url(): string {\n return this._url.pathname + this._url.search;\n }\n\n public get path(): string {\n return this._url.pathname;\n }\n\n public get segments(): string[] {\n return this._url.pathname.split(\"/\").filter(s => s.length > 0);\n }\n\n public get query(): string {\n return this._url.search.replace(/^\\?/, \"\");\n }\n\n public get parameters(): { [key: string]: string } {\n const dict: Record<string, string> = {};\n this._url.searchParams.forEach((value, key) => { dict[key] = value; });\n return dict;\n }\n\n public redirect() {\n window.location.href = this.url;\n }\n\n public replace(): void {\n window.location.replace(this.url);\n }\n\n public replaceState(state: any = null, title: string = \"\"): void {\n window.history.replaceState(state, title, this.url);\n }\n}\n\n\n\n\n\nexport class CotomyPageController {\n private static _instance: CotomyPageController | null = null;\n\n public static set<T extends CotomyPageController = CotomyPageController>(type: new () => T): T {\n if (this._instance) {\n throw new Error(\"PageController is already initialized.\");\n }\n this._instance = new type();\n CotomyWindow.instance.load(async () => {\n if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.Page)) {\n console.debug(\"CotomyPageController initialize.\");\n }\n CotomyWindow.instance.initialize();\n await CotomyPageController._instance!.initializeAsync();\n CotomyWindow.instance.trigger(\"cotomy:ready\");\n });\n return this._instance as T;\n }\n\n public static get<T extends CotomyPageController = CotomyPageController>(): T {\n if (!(this._instance instanceof CotomyPageController)) {\n throw new Error(\"PageController is not initialized. Use CotomyPageController.set() to initialize it.\");\n }\n return this._instance as T;\n }\n\n\n private _forms: { [key: string]: CotomyForm } = {};\n\n protected get defaultBindNameGenerator(): ICotomyBindNameGenerator {\n return CotomyViewRenderer.defaultBindNameGenerator;\n }\n\n protected set defaultBindNameGenerator(value: ICotomyBindNameGenerator) {\n CotomyViewRenderer.defaultBindNameGenerator = value;\n }\n\n protected setForm<T extends CotomyForm = CotomyForm>(form: T): T {\n if (!form.id) {\n form.generateId();\n }\n this._forms[form.id!] = form;\n form.removed(() => {\n delete this._forms[form.id!];\n });\n return form.initialize();\n }\n\n protected getForm<T extends CotomyForm = CotomyForm>(id: string, type?: { new(...args: any[]): T }): T | undefined {\n const form = this._forms[id];\n if (!form) return undefined;\n\n if (type && !(form instanceof type)) {\n throw new Error(`Form \"${id}\" is not instance of expected type.`);\n }\n\n return form as T;\n }\n\n protected get forms(): CotomyForm[] {\n return Object.values(this._forms);\n }\n\n protected async restoreAsync(): Promise<void> {\n for (const f of this.forms) {\n if (CotomyWindow.instance.reloading) {\n break;\n }\n if (f.autoReload) {\n await f.reloadAsync();\n }\n }\n }\n\n private isValidUtcDateString(value: string): boolean {\n return dayjs(value).isValid() && (value.endsWith(\"Z\") || /[+-]\\d{2}:\\d{2}$/.test(value));\n }\n\n private initializeDateTimeElements() {\n CotomyWindow.instance.body.find(\"[data-cotomy-datetime]:not([data-cotomy-formatted])\").forEach(e => {\n if (dayjs(e.text).isValid()) {\n const timezone = e.attribute(\"data-cotomy-timezone\")\n || e.closest(\"[data-cotomy-timezone]\")?.attribute(\"data-cotomy-timezone\");\n const format: string = e.attribute(\"data-cotomy-format\") ?? \"YYYY-MM-DD HH:mm\";\n const lt = this.isValidUtcDateString(e.text) ? dayjs(e.text) : dayjs(`${dayjs(e.text).format(\"YYYY-MM-DDTHH:mm:ss\")}Z`);\n const dt = e.attribute(\"data-cotomy-datetime\") === \"local\" ? lt : lt.utc();\n e.text = (timezone && timezone.trim() !== \"\") ? dt.tz(timezone).format(format) : dt.format(format);\n e.attribute(\"data-cotomy-formatted\", \"\");\n }\n });\n }\n\n\n protected async initializeAsync(): Promise<void> {\n this.initializeDateTimeElements();\n\n CotomyWindow.instance.pageshow(async e => {\n if (e.persisted) {\n await this.restoreAsync();\n if (CotomyWindow.instance.reloading) {\n e.stopImmediatePropagation();\n }\n }\n });\n }\n\n public get body(): CotomyElement {\n return CotomyWindow.instance.body;\n }\n\n protected get url(): CotomyUrl {\n return new CotomyUrl();\n }\n}\n","export {\n CotomyApi,\n CotomyApiException,\n CotomyApiResponse,\n CotomyBracketBindNameGenerator,\n CotomyConflictException,\n CotomyDotBindNameGenerator,\n CotomyForbiddenException,\n CotomyHttpClientError,\n CotomyHttpServerError,\n CotomyInvalidFormDataBodyException,\n CotomyNotFoundException,\n CotomyRequestInvalidException, CotomyResponseJsonParseException, CotomyTooManyRequestsException, CotomyUnauthorizedException,\n CotomyViewRenderer,\n ICotomyBindNameGenerator\n} from \"./api\";\nexport {\n CotomyDebugFeature,\n CotomyDebugSettings\n} from \"./debug\";\nexport {\n CotomyApiFailedEvent, CotomyApiForm, CotomyEntityApiForm, CotomyEntityFillApiForm,\n CotomyForm,\n CotomyQueryForm\n} from \"./form\";\nexport {\n CotomyPageController,\n CotomyUrl\n} from \"./page\";\nexport {\n CotomyElement,\n CotomyMetaElement,\n CotomyWindow\n} from \"./view\";\n\n"],"names":[],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"cotomy.js","mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;;;;;;ACVa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,aAAa,GAAG,aAAa,GAAG,aAAa,GAAG,cAAc,GAAG,cAAc,GAAG,cAAc,GAAG,cAAc,GAAG,eAAe,GAAG,eAAe,GAAG,cAAc,GAAG,cAAc,GAAG,cAAc,GAAG,cAAc,GAAG,aAAa,GAAG,aAAa,GAAG,aAAa,GAAG,aAAa,GAAG,aAAa,GAAG,aAAa;AACzT,WAAW;AACX,eAAe;AACf,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,oBAAoB,SAAS;AAC7B,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,eAAe;AACf;AACA,eAAe;AACf;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAe;AACf,gC;;;;;;;;ACzFa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,cAAc;AACd,cAAc;AACd,kC;;;;;;;;ACJa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,gBAAgB,GAAG,gBAAgB,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,cAAc;AACpN,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,mBAAO,CAAC,GAAW;AACrC;AACA,mBAAmB,mBAAO,CAAC,GAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,YAAY;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,YAAY;AAC9C;AACA,wBAAwB,QAAQ;AAChC;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,QAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC,4BAA4B,QAAQ;AACpC;AACA,4BAA4B,QAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB;AAClC;AACA,0BAA0B,UAAU;AACpC;AACA,4BAA4B,UAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,+BAA+B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,WAAW;AAC3B,4CAA4C,UAAU;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iDAAiD;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,gBAAgB;AAChB;AACA,gBAAgB;AAChB;AACA,gBAAgB;AAChB;AACA,gBAAgB;AAChB;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB,wFAAwF;AACxF;AACA,gBAAgB;AAChB;AACA,gBAAgB;AAChB,gC;;;;;;;;AC9Oa;AACb;AACA;AACA;AACA;AACA;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D,kCAAkC,GAAG,+BAA+B,GAAG,uBAAuB,GAAG,YAAY,GAAG,gBAAgB,GAAG,kBAAkB,GAAG,oBAAoB,GAAG,iBAAiB,GAAG,YAAY;AAC/M,eAAe;AACf,eAAe;AACf,cAAc;AACd,aAAa;AACb,eAAe;AACf,eAAe;AACf,UAAU;AACV,WAAW;AACX,aAAa;AACb,kBAAkB;AAClB,YAAY;AACZ,YAAY;AACZ,gBAAgB;AAChB,kBAAkB;AAClB,kBAAkB;AAClB,kBAAkB;AAClB,iBAAiB;AACjB,mBAAmB;AACnB,mBAAmB;AACnB,eAAe;AACf,uBAAuB;AACvB,mBAAmB;AACnB,iBAAiB;AACjB,oBAAoB;AACpB,uBAAuB;AACvB,mBAAmB;AACnB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,GAAsB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,aAAa;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,+BAA+B;AAC/B;AACA,qCAAqC;AACrC;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,SAAS;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,oBAAoB,WAAW;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA;AACA;AACA,6BAA6B,mBAAmB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,+BAA+B;AAC/B,kCAAkC;AAClC;AACA;AACA;AACA;A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;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA,E;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA,E;;;;;WCPA,wF;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wFAAwF;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kCAAkC;;;ACnWnC,IAAY,kBAQX;AARD,WAAY,kBAAkB;IAC1B,iCAAW;IACX,mCAAa;IACb,mCAAa;IACb,2CAAqB;IACrB,mCAAa;IACb,mCAAa;IACb,2CAAqB;AACzB,CAAC,EARW,kBAAkB,KAAlB,kBAAkB,QAQ7B;AAEM,MAAM,mBAAmB;IAGrB,MAAM,CAAC,SAAS,CAAC,GAAiC;QACrD,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO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","sources":["webpack://Cotomy/webpack/universalModuleDefinition","webpack://Cotomy/./node_modules/@noble/hashes/_u64.js","webpack://Cotomy/./node_modules/@noble/hashes/crypto.js","webpack://Cotomy/./node_modules/@noble/hashes/sha3.js","webpack://Cotomy/./node_modules/@noble/hashes/utils.js","webpack://Cotomy/./node_modules/@paralleldrive/cuid2/index.js","webpack://Cotomy/./node_modules/@paralleldrive/cuid2/src/index.js","webpack://Cotomy/./node_modules/dayjs/dayjs.min.js","webpack://Cotomy/./node_modules/dayjs/plugin/timezone.js","webpack://Cotomy/./node_modules/dayjs/plugin/utc.js","webpack://Cotomy/webpack/bootstrap","webpack://Cotomy/webpack/runtime/compat get default export","webpack://Cotomy/webpack/runtime/define property getters","webpack://Cotomy/webpack/runtime/hasOwnProperty shorthand","webpack://Cotomy/webpack/runtime/make namespace object","webpack://Cotomy/./node_modules/http-status-codes/build/es/status-codes.js","webpack://Cotomy/./src/debug.ts","webpack://Cotomy/./src/view.ts","webpack://Cotomy/./src/api.ts","webpack://Cotomy/./src/form.ts","webpack://Cotomy/./src/page.ts","webpack://Cotomy/./src/index.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Cotomy\"] = factory();\n\telse\n\t\troot[\"Cotomy\"] = factory();\n})(this, () => {\nreturn ","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toBig = exports.shrSL = exports.shrSH = exports.rotrSL = exports.rotrSH = exports.rotrBL = exports.rotrBH = exports.rotr32L = exports.rotr32H = exports.rotlSL = exports.rotlSH = exports.rotlBL = exports.rotlBH = exports.add5L = exports.add5H = exports.add4L = exports.add4H = exports.add3L = exports.add3H = void 0;\nexports.add = add;\nexports.fromBig = fromBig;\nexports.split = split;\n/**\n * Internal helpers for u64. BigUint64Array is too slow as per 2025, so we implement it using Uint32Array.\n * @todo re-check https://issues.chromium.org/issues/42212588\n * @module\n */\nconst U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\nfunction fromBig(n, le = false) {\n if (le)\n return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nfunction split(lst, le = false) {\n const len = lst.length;\n let Ah = new Uint32Array(len);\n let Al = new Uint32Array(len);\n for (let i = 0; i < len; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\nexports.toBig = toBig;\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nexports.shrSH = shrSH;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\nexports.shrSL = shrSL;\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nexports.rotrSH = rotrSH;\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\nexports.rotrSL = rotrSL;\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nexports.rotrBH = rotrBH;\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\nexports.rotrBL = rotrBL;\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nexports.rotr32H = rotr32H;\nconst rotr32L = (h, _l) => h;\nexports.rotr32L = rotr32L;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nexports.rotlSH = rotlSH;\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\nexports.rotlSL = rotlSL;\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nexports.rotlBH = rotlBH;\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\nexports.rotlBL = rotlBL;\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nexports.add3L = add3L;\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nexports.add3H = add3H;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nexports.add4L = add4L;\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nexports.add4H = add4H;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nexports.add5L = add5L;\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\nexports.add5H = add5H;\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexports.default = u64;\n//# sourceMappingURL=_u64.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.crypto = void 0;\nexports.crypto = typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n//# sourceMappingURL=crypto.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.shake256 = exports.shake128 = exports.keccak_512 = exports.keccak_384 = exports.keccak_256 = exports.keccak_224 = exports.sha3_512 = exports.sha3_384 = exports.sha3_256 = exports.sha3_224 = exports.Keccak = void 0;\nexports.keccakP = keccakP;\n/**\n * SHA3 (keccak) hash function, based on a new \"Sponge function\" design.\n * Different from older hashes, the internal state is bigger than output size.\n *\n * Check out [FIPS-202](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf),\n * [Website](https://keccak.team/keccak.html),\n * [the differences between SHA-3 and Keccak](https://crypto.stackexchange.com/questions/15727/what-are-the-key-differences-between-the-draft-sha-3-standard-and-the-keccak-sub).\n *\n * Check out `sha3-addons` module for cSHAKE, k12, and others.\n * @module\n */\nconst _u64_ts_1 = require(\"./_u64.js\");\n// prettier-ignore\nconst utils_ts_1 = require(\"./utils.js\");\n// No __PURE__ annotations in sha3 header:\n// EVERYTHING is in fact used on every export.\n// Various per round constants calculations\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _7n = BigInt(7);\nconst _256n = BigInt(256);\nconst _0x71n = BigInt(0x71);\nconst SHA3_PI = [];\nconst SHA3_ROTL = [];\nconst _SHA3_IOTA = [];\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n if (R & _2n)\n t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst IOTAS = (0, _u64_ts_1.split)(_SHA3_IOTA, true);\nconst SHA3_IOTA_H = IOTAS[0];\nconst SHA3_IOTA_L = IOTAS[1];\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h, l, s) => (s > 32 ? (0, _u64_ts_1.rotlBH)(h, l, s) : (0, _u64_ts_1.rotlSH)(h, l, s));\nconst rotlL = (h, l, s) => (s > 32 ? (0, _u64_ts_1.rotlBL)(h, l, s) : (0, _u64_ts_1.rotlSL)(h, l, s));\n/** `keccakf1600` internal function, additionally allows to adjust round count. */\nfunction keccakP(s, rounds = 24) {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta θ\n for (let x = 0; x < 10; x++)\n B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (ρ) and Pi (π)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++)\n B[x] = s[y + x];\n for (let x = 0; x < 10; x++)\n s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n (0, utils_ts_1.clean)(B);\n}\n/** Keccak sponge function. */\nclass Keccak extends utils_ts_1.Hash {\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {\n super();\n this.pos = 0;\n this.posOut = 0;\n this.finished = false;\n this.destroyed = false;\n this.enableXOF = false;\n this.blockLen = blockLen;\n this.suffix = suffix;\n this.outputLen = outputLen;\n this.enableXOF = enableXOF;\n this.rounds = rounds;\n // Can be passed from user as dkLen\n (0, utils_ts_1.anumber)(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n // 0 < blockLen < 200\n if (!(0 < blockLen && blockLen < 200))\n throw new Error('only keccak-f1600 function is supported');\n this.state = new Uint8Array(200);\n this.state32 = (0, utils_ts_1.u32)(this.state);\n }\n clone() {\n return this._cloneInto();\n }\n keccak() {\n (0, utils_ts_1.swap32IfBE)(this.state32);\n keccakP(this.state32, this.rounds);\n (0, utils_ts_1.swap32IfBE)(this.state32);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data) {\n (0, utils_ts_1.aexists)(this);\n data = (0, utils_ts_1.toBytes)(data);\n (0, utils_ts_1.abytes)(data);\n const { blockLen, state } = this;\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++)\n state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen)\n this.keccak();\n }\n return this;\n }\n finish() {\n if (this.finished)\n return;\n this.finished = true;\n const { state, suffix, pos, blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1)\n this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n writeInto(out) {\n (0, utils_ts_1.aexists)(this, false);\n (0, utils_ts_1.abytes)(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen } = this;\n for (let pos = 0, len = out.length; pos < len;) {\n if (this.posOut >= blockLen)\n this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out) {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF)\n throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes) {\n (0, utils_ts_1.anumber)(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out) {\n (0, utils_ts_1.aoutput)(out, this);\n if (this.finished)\n throw new Error('digest() was already called');\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest() {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy() {\n this.destroyed = true;\n (0, utils_ts_1.clean)(this.state);\n }\n _cloneInto(to) {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds));\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\nexports.Keccak = Keccak;\nconst gen = (suffix, blockLen, outputLen) => (0, utils_ts_1.createHasher)(() => new Keccak(blockLen, suffix, outputLen));\n/** SHA3-224 hash function. */\nexports.sha3_224 = (() => gen(0x06, 144, 224 / 8))();\n/** SHA3-256 hash function. Different from keccak-256. */\nexports.sha3_256 = (() => gen(0x06, 136, 256 / 8))();\n/** SHA3-384 hash function. */\nexports.sha3_384 = (() => gen(0x06, 104, 384 / 8))();\n/** SHA3-512 hash function. */\nexports.sha3_512 = (() => gen(0x06, 72, 512 / 8))();\n/** keccak-224 hash function. */\nexports.keccak_224 = (() => gen(0x01, 144, 224 / 8))();\n/** keccak-256 hash function. Different from SHA3-256. */\nexports.keccak_256 = (() => gen(0x01, 136, 256 / 8))();\n/** keccak-384 hash function. */\nexports.keccak_384 = (() => gen(0x01, 104, 384 / 8))();\n/** keccak-512 hash function. */\nexports.keccak_512 = (() => gen(0x01, 72, 512 / 8))();\nconst genShake = (suffix, blockLen, outputLen) => (0, utils_ts_1.createXOFer)((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true));\n/** SHAKE128 XOF with 128-bit security. */\nexports.shake128 = (() => genShake(0x1f, 168, 128 / 8))();\n/** SHAKE256 XOF with 256-bit security. */\nexports.shake256 = (() => genShake(0x1f, 136, 256 / 8))();\n//# sourceMappingURL=sha3.js.map","\"use strict\";\n/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.wrapXOFConstructorWithOpts = exports.wrapConstructorWithOpts = exports.wrapConstructor = exports.Hash = exports.nextTick = exports.swap32IfBE = exports.byteSwapIfBE = exports.swap8IfBE = exports.isLE = void 0;\nexports.isBytes = isBytes;\nexports.anumber = anumber;\nexports.abytes = abytes;\nexports.ahash = ahash;\nexports.aexists = aexists;\nexports.aoutput = aoutput;\nexports.u8 = u8;\nexports.u32 = u32;\nexports.clean = clean;\nexports.createView = createView;\nexports.rotr = rotr;\nexports.rotl = rotl;\nexports.byteSwap = byteSwap;\nexports.byteSwap32 = byteSwap32;\nexports.bytesToHex = bytesToHex;\nexports.hexToBytes = hexToBytes;\nexports.asyncLoop = asyncLoop;\nexports.utf8ToBytes = utf8ToBytes;\nexports.bytesToUtf8 = bytesToUtf8;\nexports.toBytes = toBytes;\nexports.kdfInputToBytes = kdfInputToBytes;\nexports.concatBytes = concatBytes;\nexports.checkOpts = checkOpts;\nexports.createHasher = createHasher;\nexports.createOptHasher = createOptHasher;\nexports.createXOFer = createXOFer;\nexports.randomBytes = randomBytes;\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nconst crypto_1 = require(\"@noble/hashes/crypto\");\n/** Checks if something is Uint8Array. Be careful: nodejs Buffer will return true. */\nfunction isBytes(a) {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n/** Asserts something is positive integer. */\nfunction anumber(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error('positive integer expected, got ' + n);\n}\n/** Asserts something is Uint8Array. */\nfunction abytes(b, ...lengths) {\n if (!isBytes(b))\n throw new Error('Uint8Array expected');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);\n}\n/** Asserts something is hash */\nfunction ahash(h) {\n if (typeof h !== 'function' || typeof h.create !== 'function')\n throw new Error('Hash should be wrapped by utils.createHasher');\n anumber(h.outputLen);\n anumber(h.blockLen);\n}\n/** Asserts a hash instance has not been destroyed / finished */\nfunction aexists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\n/** Asserts output is properly-sized byte array */\nfunction aoutput(out, instance) {\n abytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error('digestInto() expects output buffer of length at least ' + min);\n }\n}\n/** Cast u8 / u16 / u32 to u8. */\nfunction u8(arr) {\n return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n/** Cast u8 / u16 / u32 to u32. */\nfunction u32(arr) {\n return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n}\n/** Zeroize a byte array. Warning: JS provides no guarantees. */\nfunction clean(...arrays) {\n for (let i = 0; i < arrays.length; i++) {\n arrays[i].fill(0);\n }\n}\n/** Create DataView of an array for easy byte-level manipulation. */\nfunction createView(arr) {\n return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n/** The rotate right (circular right shift) operation for uint32 */\nfunction rotr(word, shift) {\n return (word << (32 - shift)) | (word >>> shift);\n}\n/** The rotate left (circular left shift) operation for uint32 */\nfunction rotl(word, shift) {\n return (word << shift) | ((word >>> (32 - shift)) >>> 0);\n}\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexports.isLE = (() => new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n/** The byte swap operation for uint32 */\nfunction byteSwap(word) {\n return (((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff));\n}\n/** Conditionally byte swap if on a big-endian platform */\nexports.swap8IfBE = exports.isLE\n ? (n) => n\n : (n) => byteSwap(n);\n/** @deprecated */\nexports.byteSwapIfBE = exports.swap8IfBE;\n/** In place byte swap for Uint32Array */\nfunction byteSwap32(arr) {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = byteSwap(arr[i]);\n }\n return arr;\n}\nexports.swap32IfBE = exports.isLE\n ? (u) => u\n : byteSwap32;\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\nconst hasHexBuiltin = /* @__PURE__ */ (() => \n// @ts-ignore\ntypeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function')();\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * Convert byte array to hex string. Uses built-in function, when available.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nfunction bytesToHex(bytes) {\n abytes(bytes);\n // @ts-ignore\n if (hasHexBuiltin)\n return bytes.toHex();\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 };\nfunction asciiToBase16(ch) {\n if (ch >= asciis._0 && ch <= asciis._9)\n return ch - asciis._0; // '2' => 50-48\n if (ch >= asciis.A && ch <= asciis.F)\n return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n if (ch >= asciis.a && ch <= asciis.f)\n return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n return;\n}\n/**\n * Convert hex string to byte array. Uses built-in function, when available.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nfunction hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n // @ts-ignore\n if (hasHexBuiltin)\n return Uint8Array.fromHex(hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n throw new Error('hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n }\n return array;\n}\n/**\n * There is no setImmediate in browser and setTimeout is slow.\n * Call of async fn will return Promise, which will be fullfiled only on\n * next scheduler queue processing step and this is exactly what we need.\n */\nconst nextTick = async () => { };\nexports.nextTick = nextTick;\n/** Returns control to thread each 'tick' ms to avoid blocking. */\nasync function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await (0, exports.nextTick)();\n ts += diff;\n }\n}\n/**\n * Converts string to bytes using UTF8 encoding.\n * @example utf8ToBytes('abc') // Uint8Array.from([97, 98, 99])\n */\nfunction utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error('string expected');\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Converts bytes to string using UTF8 encoding.\n * @example bytesToUtf8(Uint8Array.from([97, 98, 99])) // 'abc'\n */\nfunction bytesToUtf8(bytes) {\n return new TextDecoder().decode(bytes);\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nfunction toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n abytes(data);\n return data;\n}\n/**\n * Helper for KDFs: consumes uint8array or string.\n * When string is passed, does utf8 decoding, using TextDecoder.\n */\nfunction kdfInputToBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n abytes(data);\n return data;\n}\n/** Copies several Uint8Arrays into one. */\nfunction concatBytes(...arrays) {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\nfunction checkOpts(defaults, opts) {\n if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n throw new Error('options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\n/** For runtime check if class implements interface */\nclass Hash {\n}\nexports.Hash = Hash;\n/** Wraps hash function, creating an interface on top of it */\nfunction createHasher(hashCons) {\n const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\nfunction createOptHasher(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nfunction createXOFer(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexports.wrapConstructor = createHasher;\nexports.wrapConstructorWithOpts = createOptHasher;\nexports.wrapXOFConstructorWithOpts = createXOFer;\n/** Cryptographically secure PRNG. Uses internal OS-level `crypto.getRandomValues`. */\nfunction randomBytes(bytesLength = 32) {\n if (crypto_1.crypto && typeof crypto_1.crypto.getRandomValues === 'function') {\n return crypto_1.crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n // Legacy Node.js compatibility\n if (crypto_1.crypto && typeof crypto_1.crypto.randomBytes === 'function') {\n return Uint8Array.from(crypto_1.crypto.randomBytes(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","const { createId, init, getConstants, isCuid } = require(\"./src/index\");\n\nmodule.exports.createId = createId;\nmodule.exports.init = init;\nmodule.exports.getConstants = getConstants;\nmodule.exports.isCuid = isCuid;\n","/* global global, window, module */\nconst { sha3_512: sha3 } = require(\"@noble/hashes/sha3\");\n\nconst defaultLength = 24;\nconst bigLength = 32;\n\nconst createEntropy = (length = 4, random = Math.random) => {\n let entropy = \"\";\n\n while (entropy.length < length) {\n entropy = entropy + Math.floor(random() * 36).toString(36);\n }\n return entropy;\n};\n\n/*\n * Adapted from https://github.com/juanelas/bigint-conversion\n * MIT License Copyright (c) 2018 Juan Hernández Serrano\n */\nfunction bufToBigInt(buf) {\n let bits = 8n;\n\n let value = 0n;\n for (const i of buf.values()) {\n const bi = BigInt(i);\n value = (value << bits) + bi;\n }\n return value;\n}\n\nconst hash = (input = \"\") => {\n // Drop the first character because it will bias the histogram\n // to the left.\n return bufToBigInt(sha3(input)).toString(36).slice(1);\n};\n\nconst alphabet = Array.from({ length: 26 }, (x, i) =>\n String.fromCharCode(i + 97)\n);\n\nconst randomLetter = (random) =>\n alphabet[Math.floor(random() * alphabet.length)];\n\n/*\nThis is a fingerprint of the host environment. It is used to help\nprevent collisions when generating ids in a distributed system.\nIf no global object is available, you can pass in your own, or fall back\non a random string.\n*/\nconst createFingerprint = ({\n globalObj = typeof global !== \"undefined\"\n ? global\n : typeof window !== \"undefined\"\n ? window\n : {},\n random = Math.random,\n} = {}) => {\n const globals = Object.keys(globalObj).toString();\n const sourceString = globals.length\n ? globals + createEntropy(bigLength, random)\n : createEntropy(bigLength, random);\n\n return hash(sourceString).substring(0, bigLength);\n};\n\nconst createCounter = (count) => () => {\n return count++;\n};\n\n// ~22k hosts before 50% chance of initial counter collision\n// with a remaining counter range of 9.0e+15 in JavaScript.\nconst initialCountMax = 476782367;\n\nconst init = ({\n // Fallback if the user does not pass in a CSPRNG. This should be OK\n // because we don't rely solely on the random number generator for entropy.\n // We also use the host fingerprint, current time, and a session counter.\n random = Math.random,\n counter = createCounter(Math.floor(random() * initialCountMax)),\n length = defaultLength,\n fingerprint = createFingerprint({ random }),\n} = {}) => {\n return function cuid2() {\n const firstLetter = randomLetter(random);\n\n // If we're lucky, the `.toString(36)` calls may reduce hashing rounds\n // by shortening the input to the hash function a little.\n const time = Date.now().toString(36);\n const count = counter().toString(36);\n\n // The salt should be long enough to be globally unique across the full\n // length of the hash. For simplicity, we use the same length as the\n // intended id output.\n const salt = createEntropy(length, random);\n const hashInput = `${time + salt + count + fingerprint}`;\n\n return `${firstLetter + hash(hashInput).substring(1, length)}`;\n };\n};\n\nconst createId = init();\n\nconst isCuid = (id, { minLength = 2, maxLength = bigLength } = {}) => {\n const length = id.length;\n const regex = /^[0-9a-z]+$/;\n\n try {\n if (\n typeof id === \"string\" &&\n length >= minLength &&\n length <= maxLength &&\n regex.test(id)\n )\n return true;\n } finally {\n }\n\n return false;\n};\n\nmodule.exports.getConstants = () => ({ defaultLength, bigLength });\nmodule.exports.init = init;\nmodule.exports.createId = createId;\nmodule.exports.bufToBigInt = bufToBigInt;\nmodule.exports.createCounter = createCounter;\nmodule.exports.createFingerprint = createFingerprint;\nmodule.exports.isCuid = isCuid;\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_timezone=e()}(this,(function(){\"use strict\";var t={year:0,month:1,day:2,hour:3,minute:4,second:5},e={};return function(n,i,o){var r,a=function(t,n,i){void 0===i&&(i={});var o=new Date(t),r=function(t,n){void 0===n&&(n={});var i=n.timeZoneName||\"short\",o=t+\"|\"+i,r=e[o];return r||(r=new Intl.DateTimeFormat(\"en-US\",{hour12:!1,timeZone:t,year:\"numeric\",month:\"2-digit\",day:\"2-digit\",hour:\"2-digit\",minute:\"2-digit\",second:\"2-digit\",timeZoneName:i}),e[o]=r),r}(n,i);return r.formatToParts(o)},u=function(e,n){for(var i=a(e,n),r=[],u=0;u<i.length;u+=1){var f=i[u],s=f.type,m=f.value,c=t[s];c>=0&&(r[c]=parseInt(m,10))}var d=r[3],l=24===d?0:d,h=r[0]+\"-\"+r[1]+\"-\"+r[2]+\" \"+l+\":\"+r[4]+\":\"+r[5]+\":000\",v=+e;return(o.utc(h).valueOf()-(v-=v%1e3))/6e4},f=i.prototype;f.tz=function(t,e){void 0===t&&(t=r);var n,i=this.utcOffset(),a=this.toDate(),u=a.toLocaleString(\"en-US\",{timeZone:t}),f=Math.round((a-new Date(u))/1e3/60),s=15*-Math.round(a.getTimezoneOffset()/15)-f;if(!Number(s))n=this.utcOffset(0,e);else if(n=o(u,{locale:this.$L}).$set(\"millisecond\",this.$ms).utcOffset(s,!0),e){var m=n.utcOffset();n=n.add(i-m,\"minute\")}return n.$x.$timezone=t,n},f.offsetName=function(t){var e=this.$x.$timezone||o.tz.guess(),n=a(this.valueOf(),e,{timeZoneName:t}).find((function(t){return\"timezonename\"===t.type.toLowerCase()}));return n&&n.value};var s=f.startOf;f.startOf=function(t,e){if(!this.$x||!this.$x.$timezone)return s.call(this,t,e);var n=o(this.format(\"YYYY-MM-DD HH:mm:ss:SSS\"),{locale:this.$L});return s.call(n,t,e).tz(this.$x.$timezone,!0)},o.tz=function(t,e,n){var i=n&&e,a=n||e||r,f=u(+o(),a);if(\"string\"!=typeof t)return o(t).tz(a);var s=function(t,e,n){var i=t-60*e*1e3,o=u(i,n);if(e===o)return[i,e];var r=u(i-=60*(o-e)*1e3,n);return o===r?[i,o]:[t-60*Math.min(o,r)*1e3,Math.max(o,r)]}(o.utc(t,i).valueOf(),f,a),m=s[0],c=s[1],d=o(m).utcOffset(c);return d.$x.$timezone=a,d},o.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},o.tz.setDefault=function(t){r=t}}}));","!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_utc=i()}(this,(function(){\"use strict\";var t=\"minute\",i=/[+-]\\d\\d(?::?\\d\\d)?/g,e=/([+-]|\\d\\d)/g;return function(s,f,n){var u=f.prototype;n.utc=function(t){var i={date:t,utc:!0,args:arguments};return new f(i)},u.utc=function(i){var e=n(this.toDate(),{locale:this.$L,utc:!0});return i?e.add(this.utcOffset(),t):e},u.local=function(){return n(this.toDate(),{locale:this.$L,utc:!1})};var r=u.parse;u.parse=function(t){t.utc&&(this.$u=!0),this.$utils().u(t.$offset)||(this.$offset=t.$offset),r.call(this,t)};var o=u.init;u.init=function(){if(this.$u){var t=this.$d;this.$y=t.getUTCFullYear(),this.$M=t.getUTCMonth(),this.$D=t.getUTCDate(),this.$W=t.getUTCDay(),this.$H=t.getUTCHours(),this.$m=t.getUTCMinutes(),this.$s=t.getUTCSeconds(),this.$ms=t.getUTCMilliseconds()}else o.call(this)};var a=u.utcOffset;u.utcOffset=function(s,f){var n=this.$utils().u;if(n(s))return this.$u?0:n(this.$offset)?a.call(this):this.$offset;if(\"string\"==typeof s&&(s=function(t){void 0===t&&(t=\"\");var s=t.match(i);if(!s)return null;var f=(\"\"+s[0]).match(e)||[\"-\",0,0],n=f[0],u=60*+f[1]+ +f[2];return 0===u?0:\"+\"===n?u:-u}(s),null===s))return this;var u=Math.abs(s)<=16?60*s:s;if(0===u)return this.utc(f);var r=this.clone();if(f)return r.$offset=u,r.$u=!1,r;var o=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();return(r=this.local().add(u+o,t)).$offset=u,r.$x.$localOffset=o,r};var h=u.format;u.format=function(t){var i=t||(this.$u?\"YYYY-MM-DDTHH:mm:ss[Z]\":\"\");return h.call(this,i)},u.valueOf=function(){var t=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*t},u.isUTC=function(){return!!this.$u},u.toISOString=function(){return this.toDate().toISOString()},u.toString=function(){return this.toDate().toUTCString()};var l=u.toDate;u.toDate=function(t){return\"s\"===t&&this.$offset?n(this.format(\"YYYY-MM-DD HH:mm:ss:SSS\")).toDate():l.call(this)};var c=u.diff;u.diff=function(t,i,e){if(t&&this.$u===t.$u)return c.call(this,t,i,e);var s=this.local(),f=n(t).local();return c.call(s,f,i,e)}}}));","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// Generated file. Do not edit\nexport var StatusCodes;\n(function (StatusCodes) {\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.2.1\n *\n * This interim response indicates that everything so far is OK and that the client should continue with the request or ignore it if it is already finished.\n */\n StatusCodes[StatusCodes[\"CONTINUE\"] = 100] = \"CONTINUE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.2.2\n *\n * This code is sent in response to an Upgrade request header by the client, and indicates the protocol the server is switching too.\n */\n StatusCodes[StatusCodes[\"SWITCHING_PROTOCOLS\"] = 101] = \"SWITCHING_PROTOCOLS\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.1\n *\n * This code indicates that the server has received and is processing the request, but no response is available yet.\n */\n StatusCodes[StatusCodes[\"PROCESSING\"] = 102] = \"PROCESSING\";\n /**\n * Official Documentation @ https://www.rfc-editor.org/rfc/rfc8297#page-3\n *\n * This code indicates to the client that the server is likely to send a final response with the header fields included in the informational response.\n */\n StatusCodes[StatusCodes[\"EARLY_HINTS\"] = 103] = \"EARLY_HINTS\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.1\n *\n * The request has succeeded. The meaning of a success varies depending on the HTTP method:\n * GET: The resource has been fetched and is transmitted in the message body.\n * HEAD: The entity headers are in the message body.\n * POST: The resource describing the result of the action is transmitted in the message body.\n * TRACE: The message body contains the request message as received by the server\n */\n StatusCodes[StatusCodes[\"OK\"] = 200] = \"OK\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.2\n *\n * The request has succeeded and a new resource has been created as a result of it. This is typically the response sent after a PUT request.\n */\n StatusCodes[StatusCodes[\"CREATED\"] = 201] = \"CREATED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.3\n *\n * The request has been received but not yet acted upon. It is non-committal, meaning that there is no way in HTTP to later send an asynchronous response indicating the outcome of processing the request. It is intended for cases where another process or server handles the request, or for batch processing.\n */\n StatusCodes[StatusCodes[\"ACCEPTED\"] = 202] = \"ACCEPTED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.4\n *\n * This response code means returned meta-information set is not exact set as available from the origin server, but collected from a local or a third party copy. Except this condition, 200 OK response should be preferred instead of this response.\n */\n StatusCodes[StatusCodes[\"NON_AUTHORITATIVE_INFORMATION\"] = 203] = \"NON_AUTHORITATIVE_INFORMATION\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.5\n *\n * There is no content to send for this request, but the headers may be useful. The user-agent may update its cached headers for this resource with the new ones.\n */\n StatusCodes[StatusCodes[\"NO_CONTENT\"] = 204] = \"NO_CONTENT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.6\n *\n * This response code is sent after accomplishing request to tell user agent reset document view which sent this request.\n */\n StatusCodes[StatusCodes[\"RESET_CONTENT\"] = 205] = \"RESET_CONTENT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7233#section-4.1\n *\n * This response code is used because of range header sent by the client to separate download into multiple streams.\n */\n StatusCodes[StatusCodes[\"PARTIAL_CONTENT\"] = 206] = \"PARTIAL_CONTENT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.2\n *\n * A Multi-Status response conveys information about multiple resources in situations where multiple status codes might be appropriate.\n */\n StatusCodes[StatusCodes[\"MULTI_STATUS\"] = 207] = \"MULTI_STATUS\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.1\n *\n * The request has more than one possible responses. User-agent or user should choose one of them. There is no standardized way to choose one of the responses.\n */\n StatusCodes[StatusCodes[\"MULTIPLE_CHOICES\"] = 300] = \"MULTIPLE_CHOICES\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.2\n *\n * This response code means that URI of requested resource has been changed. Probably, new URI would be given in the response.\n */\n StatusCodes[StatusCodes[\"MOVED_PERMANENTLY\"] = 301] = \"MOVED_PERMANENTLY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.3\n *\n * This response code means that URI of requested resource has been changed temporarily. New changes in the URI might be made in the future. Therefore, this same URI should be used by the client in future requests.\n */\n StatusCodes[StatusCodes[\"MOVED_TEMPORARILY\"] = 302] = \"MOVED_TEMPORARILY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.4\n *\n * Server sent this response to directing client to get requested resource to another URI with an GET request.\n */\n StatusCodes[StatusCodes[\"SEE_OTHER\"] = 303] = \"SEE_OTHER\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7232#section-4.1\n *\n * This is used for caching purposes. It is telling to client that response has not been modified. So, client can continue to use same cached version of response.\n */\n StatusCodes[StatusCodes[\"NOT_MODIFIED\"] = 304] = \"NOT_MODIFIED\";\n /**\n * @deprecated\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.6\n *\n * Was defined in a previous version of the HTTP specification to indicate that a requested response must be accessed by a proxy. It has been deprecated due to security concerns regarding in-band configuration of a proxy.\n */\n StatusCodes[StatusCodes[\"USE_PROXY\"] = 305] = \"USE_PROXY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.7\n *\n * Server sent this response to directing client to get requested resource to another URI with same method that used prior request. This has the same semantic than the 302 Found HTTP response code, with the exception that the user agent must not change the HTTP method used: if a POST was used in the first request, a POST must be used in the second request.\n */\n StatusCodes[StatusCodes[\"TEMPORARY_REDIRECT\"] = 307] = \"TEMPORARY_REDIRECT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7538#section-3\n *\n * This means that the resource is now permanently located at another URI, specified by the Location: HTTP Response header. This has the same semantics as the 301 Moved Permanently HTTP response code, with the exception that the user agent must not change the HTTP method used: if a POST was used in the first request, a POST must be used in the second request.\n */\n StatusCodes[StatusCodes[\"PERMANENT_REDIRECT\"] = 308] = \"PERMANENT_REDIRECT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.1\n *\n * This response means that server could not understand the request due to invalid syntax.\n */\n StatusCodes[StatusCodes[\"BAD_REQUEST\"] = 400] = \"BAD_REQUEST\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7235#section-3.1\n *\n * Although the HTTP standard specifies \"unauthorized\", semantically this response means \"unauthenticated\". That is, the client must authenticate itself to get the requested response.\n */\n StatusCodes[StatusCodes[\"UNAUTHORIZED\"] = 401] = \"UNAUTHORIZED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.2\n *\n * This response code is reserved for future use. Initial aim for creating this code was using it for digital payment systems however this is not used currently.\n */\n StatusCodes[StatusCodes[\"PAYMENT_REQUIRED\"] = 402] = \"PAYMENT_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.3\n *\n * The client does not have access rights to the content, i.e. they are unauthorized, so server is rejecting to give proper response. Unlike 401, the client's identity is known to the server.\n */\n StatusCodes[StatusCodes[\"FORBIDDEN\"] = 403] = \"FORBIDDEN\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.4\n *\n * The server can not find requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 to hide the existence of a resource from an unauthorized client. This response code is probably the most famous one due to its frequent occurence on the web.\n */\n StatusCodes[StatusCodes[\"NOT_FOUND\"] = 404] = \"NOT_FOUND\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.5\n *\n * The request method is known by the server but has been disabled and cannot be used. For example, an API may forbid DELETE-ing a resource. The two mandatory methods, GET and HEAD, must never be disabled and should not return this error code.\n */\n StatusCodes[StatusCodes[\"METHOD_NOT_ALLOWED\"] = 405] = \"METHOD_NOT_ALLOWED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.6\n *\n * This response is sent when the web server, after performing server-driven content negotiation, doesn't find any content following the criteria given by the user agent.\n */\n StatusCodes[StatusCodes[\"NOT_ACCEPTABLE\"] = 406] = \"NOT_ACCEPTABLE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7235#section-3.2\n *\n * This is similar to 401 but authentication is needed to be done by a proxy.\n */\n StatusCodes[StatusCodes[\"PROXY_AUTHENTICATION_REQUIRED\"] = 407] = \"PROXY_AUTHENTICATION_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.7\n *\n * This response is sent on an idle connection by some servers, even without any previous request by the client. It means that the server would like to shut down this unused connection. This response is used much more since some browsers, like Chrome, Firefox 27+, or IE9, use HTTP pre-connection mechanisms to speed up surfing. Also note that some servers merely shut down the connection without sending this message.\n */\n StatusCodes[StatusCodes[\"REQUEST_TIMEOUT\"] = 408] = \"REQUEST_TIMEOUT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.8\n *\n * This response is sent when a request conflicts with the current state of the server.\n */\n StatusCodes[StatusCodes[\"CONFLICT\"] = 409] = \"CONFLICT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.9\n *\n * This response would be sent when the requested content has been permenantly deleted from server, with no forwarding address. Clients are expected to remove their caches and links to the resource. The HTTP specification intends this status code to be used for \"limited-time, promotional services\". APIs should not feel compelled to indicate resources that have been deleted with this status code.\n */\n StatusCodes[StatusCodes[\"GONE\"] = 410] = \"GONE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.10\n *\n * The server rejected the request because the Content-Length header field is not defined and the server requires it.\n */\n StatusCodes[StatusCodes[\"LENGTH_REQUIRED\"] = 411] = \"LENGTH_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7232#section-4.2\n *\n * The client has indicated preconditions in its headers which the server does not meet.\n */\n StatusCodes[StatusCodes[\"PRECONDITION_FAILED\"] = 412] = \"PRECONDITION_FAILED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.11\n *\n * Request entity is larger than limits defined by server; the server might close the connection or return an Retry-After header field.\n */\n StatusCodes[StatusCodes[\"REQUEST_TOO_LONG\"] = 413] = \"REQUEST_TOO_LONG\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.12\n *\n * The URI requested by the client is longer than the server is willing to interpret.\n */\n StatusCodes[StatusCodes[\"REQUEST_URI_TOO_LONG\"] = 414] = \"REQUEST_URI_TOO_LONG\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.13\n *\n * The media format of the requested data is not supported by the server, so the server is rejecting the request.\n */\n StatusCodes[StatusCodes[\"UNSUPPORTED_MEDIA_TYPE\"] = 415] = \"UNSUPPORTED_MEDIA_TYPE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7233#section-4.4\n *\n * The range specified by the Range header field in the request can't be fulfilled; it's possible that the range is outside the size of the target URI's data.\n */\n StatusCodes[StatusCodes[\"REQUESTED_RANGE_NOT_SATISFIABLE\"] = 416] = \"REQUESTED_RANGE_NOT_SATISFIABLE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.14\n *\n * This response code means the expectation indicated by the Expect request header field can't be met by the server.\n */\n StatusCodes[StatusCodes[\"EXPECTATION_FAILED\"] = 417] = \"EXPECTATION_FAILED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2324#section-2.3.2\n *\n * Any attempt to brew coffee with a teapot should result in the error code \"418 I'm a teapot\". The resulting entity body MAY be short and stout.\n */\n StatusCodes[StatusCodes[\"IM_A_TEAPOT\"] = 418] = \"IM_A_TEAPOT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.6\n *\n * The 507 (Insufficient Storage) status code means the method could not be performed on the resource because the server is unable to store the representation needed to successfully complete the request. This condition is considered to be temporary. If the request which received this status code was the result of a user action, the request MUST NOT be repeated until it is requested by a separate user action.\n */\n StatusCodes[StatusCodes[\"INSUFFICIENT_SPACE_ON_RESOURCE\"] = 419] = \"INSUFFICIENT_SPACE_ON_RESOURCE\";\n /**\n * @deprecated\n * Official Documentation @ https://tools.ietf.org/rfcdiff?difftype=--hwdiff&url2=draft-ietf-webdav-protocol-06.txt\n *\n * A deprecated response used by the Spring Framework when a method has failed.\n */\n StatusCodes[StatusCodes[\"METHOD_FAILURE\"] = 420] = \"METHOD_FAILURE\";\n /**\n * Official Documentation @ https://datatracker.ietf.org/doc/html/rfc7540#section-9.1.2\n *\n * Defined in the specification of HTTP/2 to indicate that a server is not able to produce a response for the combination of scheme and authority that are included in the request URI.\n */\n StatusCodes[StatusCodes[\"MISDIRECTED_REQUEST\"] = 421] = \"MISDIRECTED_REQUEST\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.3\n *\n * The request was well-formed but was unable to be followed due to semantic errors.\n */\n StatusCodes[StatusCodes[\"UNPROCESSABLE_ENTITY\"] = 422] = \"UNPROCESSABLE_ENTITY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.4\n *\n * The resource that is being accessed is locked.\n */\n StatusCodes[StatusCodes[\"LOCKED\"] = 423] = \"LOCKED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.5\n *\n * The request failed due to failure of a previous request.\n */\n StatusCodes[StatusCodes[\"FAILED_DEPENDENCY\"] = 424] = \"FAILED_DEPENDENCY\";\n /**\n * Official Documentation @ https://datatracker.ietf.org/doc/html/rfc7231#section-6.5.15\n *\n * The server refuses to perform the request using the current protocol but might be willing to do so after the client upgrades to a different protocol.\n */\n StatusCodes[StatusCodes[\"UPGRADE_REQUIRED\"] = 426] = \"UPGRADE_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc6585#section-3\n *\n * The origin server requires the request to be conditional. Intended to prevent the 'lost update' problem, where a client GETs a resource's state, modifies it, and PUTs it back to the server, when meanwhile a third party has modified the state on the server, leading to a conflict.\n */\n StatusCodes[StatusCodes[\"PRECONDITION_REQUIRED\"] = 428] = \"PRECONDITION_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc6585#section-4\n *\n * The user has sent too many requests in a given amount of time (\"rate limiting\").\n */\n StatusCodes[StatusCodes[\"TOO_MANY_REQUESTS\"] = 429] = \"TOO_MANY_REQUESTS\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc6585#section-5\n *\n * The server is unwilling to process the request because its header fields are too large. The request MAY be resubmitted after reducing the size of the request header fields.\n */\n StatusCodes[StatusCodes[\"REQUEST_HEADER_FIELDS_TOO_LARGE\"] = 431] = \"REQUEST_HEADER_FIELDS_TOO_LARGE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7725\n *\n * The user-agent requested a resource that cannot legally be provided, such as a web page censored by a government.\n */\n StatusCodes[StatusCodes[\"UNAVAILABLE_FOR_LEGAL_REASONS\"] = 451] = \"UNAVAILABLE_FOR_LEGAL_REASONS\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.1\n *\n * The server encountered an unexpected condition that prevented it from fulfilling the request.\n */\n StatusCodes[StatusCodes[\"INTERNAL_SERVER_ERROR\"] = 500] = \"INTERNAL_SERVER_ERROR\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.2\n *\n * The request method is not supported by the server and cannot be handled. The only methods that servers are required to support (and therefore that must not return this code) are GET and HEAD.\n */\n StatusCodes[StatusCodes[\"NOT_IMPLEMENTED\"] = 501] = \"NOT_IMPLEMENTED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.3\n *\n * This error response means that the server, while working as a gateway to get a response needed to handle the request, got an invalid response.\n */\n StatusCodes[StatusCodes[\"BAD_GATEWAY\"] = 502] = \"BAD_GATEWAY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.4\n *\n * The server is not ready to handle the request. Common causes are a server that is down for maintenance or that is overloaded. Note that together with this response, a user-friendly page explaining the problem should be sent. This responses should be used for temporary conditions and the Retry-After: HTTP header should, if possible, contain the estimated time before the recovery of the service. The webmaster must also take care about the caching-related headers that are sent along with this response, as these temporary condition responses should usually not be cached.\n */\n StatusCodes[StatusCodes[\"SERVICE_UNAVAILABLE\"] = 503] = \"SERVICE_UNAVAILABLE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.5\n *\n * This error response is given when the server is acting as a gateway and cannot get a response in time.\n */\n StatusCodes[StatusCodes[\"GATEWAY_TIMEOUT\"] = 504] = \"GATEWAY_TIMEOUT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.6\n *\n * The HTTP version used in the request is not supported by the server.\n */\n StatusCodes[StatusCodes[\"HTTP_VERSION_NOT_SUPPORTED\"] = 505] = \"HTTP_VERSION_NOT_SUPPORTED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.6\n *\n * The server has an internal configuration error: the chosen variant resource is configured to engage in transparent content negotiation itself, and is therefore not a proper end point in the negotiation process.\n */\n StatusCodes[StatusCodes[\"INSUFFICIENT_STORAGE\"] = 507] = \"INSUFFICIENT_STORAGE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc6585#section-6\n *\n * The 511 status code indicates that the client needs to authenticate to gain network access.\n */\n StatusCodes[StatusCodes[\"NETWORK_AUTHENTICATION_REQUIRED\"] = 511] = \"NETWORK_AUTHENTICATION_REQUIRED\";\n})(StatusCodes || (StatusCodes = {}));\n","\n\nexport enum CotomyDebugFeature {\n Api = \"api\",\n Fill = \"fill\",\n Bind = \"bind\",\n FormData = \"formdata\",\n Html = \"html\",\n Page = \"page\",\n FormLoad = \"formload\",\n}\n\nexport class CotomyDebugSettings {\n private static readonly PREFIX = \"cotomy:debug\";\n\n public static isEnabled(key?: string | CotomyDebugFeature): boolean {\n const global = localStorage.getItem(this.PREFIX);\n if (key) {\n const specific = localStorage.getItem(`${this.PREFIX}:${String(key)}`);\n return specific === \"true\" || global === \"true\";\n }\n return global === \"true\";\n }\n\n public static enable(key: string | CotomyDebugFeature): void {\n localStorage.setItem(`${this.PREFIX}:${String(key)}`, \"true\");\n }\n\n public static disable(key: string | CotomyDebugFeature): void {\n localStorage.setItem(`${this.PREFIX}:${String(key)}`, \"false\");\n }\n\n public static enableAll(): void {\n localStorage.setItem(this.PREFIX, \"true\");\n }\n\n public static disableAll(): void {\n localStorage.setItem(this.PREFIX, \"false\");\n }\n\n public static clear(key?: string | CotomyDebugFeature): void {\n if (key) {\n localStorage.removeItem(`${this.PREFIX}:${String(key)}`);\n } else {\n localStorage.removeItem(this.PREFIX);\n }\n }\n}","import { createId } from \"@paralleldrive/cuid2\";\nimport { CotomyDebugFeature, CotomyDebugSettings } from \"./debug\";\n\n\n\n//#region イベントハンドラ管理要\n\ninterface IEventTarget {\n get instanceId(): string;\n element: HTMLElement;\n}\n\ntype EventHandler = (e: Event) => void | Promise<void>;\nclass HandlerEntry {\n public constructor(public readonly handle: EventHandler, public readonly wrapper?: EventHandler, public readonly options?: AddEventListenerOptions) {\n }\n\n public get current(): EventHandler {\n return this.wrapper ?? this.handle;\n }\n\n /**\n * Comparison mode\n * “strict”: Exact match (matches including wrapper)\n * “remove”: For deletion (ignores wrapper = treats as wildcard)\n */\n public equals(entry: HandlerEntry, mode?: \"strict\" | \"remove\"): boolean;\n public equals(handle: EventHandler, options?: AddEventListenerOptions, wrapper?: EventHandler, mode?: \"strict\" | \"remove\"): boolean;\n public equals(entryOrHandle: HandlerEntry | EventHandler, optionsOrMode?: AddEventListenerOptions | \"strict\" | \"remove\", wrapper?: EventHandler, mode?: \"strict\" | \"remove\"): boolean {\n let targetHandle: EventHandler;\n let targetWrapper: EventHandler | undefined;\n let targetOptions: AddEventListenerOptions | undefined;\n let compareMode: \"strict\" | \"remove\" = \"strict\";\n\n if (entryOrHandle instanceof HandlerEntry) {\n targetHandle = entryOrHandle.handle;\n targetWrapper = entryOrHandle.wrapper;\n targetOptions = entryOrHandle.options;\n compareMode = (optionsOrMode as \"strict\" | \"remove\") ?? \"strict\";\n\n } else {\n targetHandle = entryOrHandle;\n\n if (typeof optionsOrMode === \"string\") {\n compareMode = optionsOrMode;\n targetWrapper = wrapper;\n targetOptions = undefined;\n } else {\n targetOptions = optionsOrMode;\n targetWrapper = wrapper;\n compareMode = mode ?? \"strict\";\n }\n }\n\n if (this.handle !== targetHandle) {\n return false;\n }\n\n if (compareMode === \"strict\" && this.wrapper !== targetWrapper) {\n return false;\n }\n\n return HandlerEntry.optionsEquals(this.options, targetOptions);\n }\n\n public static optionsEquals(left?: AddEventListenerOptions, right?: AddEventListenerOptions): boolean {\n const getBoolean = (options: AddEventListenerOptions | undefined, key: \"capture\" | \"once\" | \"passive\"): boolean =>\n options?.[key] ?? false;\n const getSignal = (options: AddEventListenerOptions | undefined): AbortSignal | undefined =>\n options?.signal;\n\n const leftSignal = getSignal(left);\n const rightSignal = getSignal(right);\n // 厳格一致: === のみ\n const signalsEqual = leftSignal === rightSignal;\n\n return getBoolean(left, \"capture\") === getBoolean(right, \"capture\")\n && getBoolean(left, \"once\") === getBoolean(right, \"once\")\n && getBoolean(left, \"passive\") === getBoolean(right, \"passive\")\n && signalsEqual;\n }\n}\n\nclass HandlerRegistory {\n private _registory: Map<string, HandlerEntry[]> = new Map();\n\n public constructor(private readonly target: IEventTarget) {\n }\n\n private ensure(event: string): HandlerEntry[] {\n return this._registory.get(event) ?? this._registory.set(event, []).get(event)!;\n }\n\n private find(event: string, entry: HandlerEntry): HandlerEntry | undefined {\n return this._registory.get(event)?.find(e => e.equals(entry)) ?? undefined;\n }\n\n public add(event: string, entry: HandlerEntry): void {\n if (entry.options?.once) {\n this.remove(event, entry);\n }\n if (!this.find(event, entry)) {\n this.ensure(event).push(entry);\n this.target.element.addEventListener(event, entry.current, entry.options);\n }\n }\n\n public remove(event: string, entry?: HandlerEntry): void {\n if (!entry) {\n const list = this._registory.get(event);\n if (!list) return;\n list.forEach(e => this.target.element.removeEventListener(event, e.current, e.options?.capture ?? false));\n this._registory.delete(event);\n return;\n }\n const list = this._registory.get(event);\n if (list) {\n const remaining: HandlerEntry[] = [];\n for (const e of list) {\n if (e.equals(entry, \"remove\")) {\n this.target.element.removeEventListener(event, e.current, e.options?.capture ?? false);\n } else {\n remaining.push(e);\n }\n }\n if (remaining.length === 0) {\n this._registory.delete(event);\n } else {\n this._registory.set(event, remaining);\n }\n }\n }\n\n public get empty(): boolean {\n return this._registory.size === 0;\n }\n}\n\nclass EventRegistry {\n private static _instance: EventRegistry;\n private _registry: Map<string, HandlerRegistory> = new Map();\n\n public static get instance(): EventRegistry {\n return this._instance ?? (this._instance = new EventRegistry());\n }\n\n private map(target: IEventTarget): HandlerRegistory {\n const instanceId = target.instanceId;\n let registry = this._registry.get(instanceId);\n if (!registry) {\n registry = new HandlerRegistory(target);\n this._registry.set(instanceId, registry);\n }\n return registry;\n }\n\n public on(event: string, target: IEventTarget, entry: HandlerEntry): void {\n const registry = this.map(target);\n registry.add(event, entry);\n }\n\n public off(event: string, target: IEventTarget, entry?: HandlerEntry): void {\n const registry = this._registry.get(target.instanceId);\n if (!registry) return;\n if (entry) {\n registry.remove(event, entry);\n } else {\n registry.remove(event);\n }\n if (registry.empty) {\n this._registry.delete(target.instanceId);\n }\n }\n\n public clear(target: IEventTarget): void {\n this._registry.delete(target.instanceId);\n }\n}\n\n//#endregion\n\n\n\n\nexport class CotomyScrollOptions {\n public behavior: ScrollBehavior = \"smooth\";\n public onlyIfNeeded: boolean = true;\n public block: ScrollLogicalPosition = \"nearest\";\n public inline: ScrollLogicalPosition = \"nearest\";\n\n public constructor(init: Partial<CotomyScrollOptions> = {}) {\n if (init.behavior !== undefined) this.behavior = init.behavior;\n if (init.onlyIfNeeded !== undefined) this.onlyIfNeeded = init.onlyIfNeeded;\n if (init.block !== undefined) this.block = init.block;\n if (init.inline !== undefined) this.inline = init.inline;\n }\n\n public get resolveBehavior(): ScrollBehavior {\n return this.behavior;\n }\n\n public static from(options?: CotomyScrollOptions | Partial<CotomyScrollOptions>): CotomyScrollOptions {\n if (options instanceof CotomyScrollOptions) return options;\n return new CotomyScrollOptions(options ?? {});\n }\n}\n\nexport class CotomyElement implements IEventTarget {\n //#region Factory and Finder\n\n public static encodeHtml(text: string): string {\n const div = document.createElement(\"div\");\n div.textContent = text ?? \"\";\n return div.innerHTML;\n }\n\n private static createHTMLElement(html: string): HTMLElement {\n const wrapperMap: Record<string, { prefix: string, suffix: string }> = {\n \"tr\": { prefix: \"<table><tbody>\", suffix: \"</tbody></table>\" },\n \"td\": { prefix: \"<table><tbody><tr>\", suffix: \"</tr></tbody></table>\" },\n \"th\": { prefix: \"<table><tbody><tr>\", suffix: \"</tr></tbody></table>\" },\n \"thead\": { prefix: \"<table>\", suffix: \"</table>\" },\n \"tbody\": { prefix: \"<table>\", suffix: \"</table>\" },\n \"tfoot\": { prefix: \"<table>\", suffix: \"</table>\" },\n \"caption\": { prefix: \"<table>\", suffix: \"</table>\" },\n \"colgroup\": { prefix: \"<table>\", suffix: \"</table>\" },\n \"col\": { prefix: \"<table><colgroup>\", suffix: \"</colgroup></table>\" },\n \"option\": { prefix: \"<select>\", suffix: \"</select>\" },\n \"optgroup\": { prefix: \"<select>\", suffix: \"</select>\" },\n \"legend\": { prefix: \"<fieldset>\", suffix: \"</fieldset>\" },\n \"li\": { prefix: \"<ul>\", suffix: \"</ul>\" }\n };\n\n const match = html.match(/<\\s*([a-z0-9]+)/i);\n if (!match) {\n throw new Error(`Invalid HTML: cannot extract tag from \"${html}\"`);\n }\n const tag = match[1].toLowerCase();\n\n const wrap = wrapperMap[tag];\n const wrappedHtml = wrap ? `${wrap.prefix}${html}${wrap.suffix}` : html;\n\n const parser = new DOMParser();\n const doc = parser.parseFromString(wrappedHtml, \"text/html\");\n const errors = doc.querySelector(\"parsererror\");\n if (errors) {\n throw new Error(`HTML parsing failed for tag <${tag}>: \"${html}\"`);\n }\n if (doc.body.children.length !== 1) {\n throw new Error(`CotomyElement requires a single root element, but got ${doc.body.children.length}.`);\n }\n\n const element = doc.body.querySelector(tag);\n if (!element) {\n throw new Error(`Parsed but <${tag}> element not found: \"${html}\"`);\n }\n\n return element as HTMLElement;\n }\n\n public static first<T extends CotomyElement = CotomyElement>(selector: string, type?: new (el: HTMLElement) => T): T | undefined {\n const element = document.querySelector(selector);\n if (!element) return undefined;\n const ctor = (type ?? CotomyElement) as new (el: HTMLElement) => T;\n return new ctor(<HTMLElement>element);\n }\n\n public static last<T extends CotomyElement = CotomyElement>(selector: string, type?: new (el: HTMLElement) => T): T | undefined {\n const elements = CotomyElement.find<T>(selector, type);\n return elements.pop();\n }\n\n public static find<T extends CotomyElement = CotomyElement>(selector: string, type?: new (el: HTMLElement) => T): T[] {\n const elements = document.querySelectorAll(selector);\n const ctor = (type ?? CotomyElement) as new (el: HTMLElement) => T;\n return Array.from(elements).map(e => new ctor(<HTMLElement>e));\n }\n\n public static contains(selector: string): boolean {\n return document.querySelector(selector) !== null;\n }\n\n public static byId<T extends CotomyElement = CotomyElement>(id: string, type?: new (el: HTMLElement) => T): T | undefined {\n const element = document.getElementById(id);\n const ctor = (type ?? CotomyElement) as new (el: HTMLElement) => T;\n return !element ? undefined : new ctor(<HTMLElement>element);\n }\n\n public static containsById(id: string): boolean {\n return document.getElementById(id) !== null;\n }\n\n public static empty<T extends CotomyElement = CotomyElement>(type?: new (el: HTMLElement) => T): T {\n const ctor = (type ?? CotomyElement) as new (el: HTMLElement) => T;\n return new ctor(document.createElement(\"div\")).attribute(\"data-cotomy-empty\", \"\").style(\"display\", \"none\");\n }\n\n //#endregion\n\n\n\n private _element: HTMLElement;\n private _parentElement: CotomyElement | null = null;\n private _scopedCss?: string;\n\n public constructor(element: HTMLElement | { html: string, css?: string } | { tagname: string, text?: string, css?: string } | string) {\n if (element instanceof HTMLElement) {\n this._element = element;\n } else if (typeof element === \"string\") {\n this._element = CotomyElement.createHTMLElement(element);\n } else {\n this._element = CotomyElement.createHTMLElement(\"html\" in element ? element.html : `<${element.tagname}></${element.tagname}>`);\n if (\"tagname\" in element && element.text) {\n this._element.textContent = element.text;\n }\n if (element.css) {\n this.useScopedCss(element.css);\n }\n if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.Html)) {\n if (\"html\" in element) {\n console.debug(`CotomyElement {html: \"${element.html}\" } is created`);\n }\n if (\"tagname\" in element) {\n console.debug(`CotomyElement {tagname: \"${element.tagname}\", text: \"${element.text ?? \"\"}\"} is created`);\n }\n if (element.css) {\n console.debug(`CotomyElement {css: \"${element.css}\" } is applied`);\n }\n }\n }\n this.setInstanceId();\n }\n\n\n\n //#region tag identifier\n\n private setInstanceId() {\n if (!this.hasAttribute(\"data-cotomy-instance\")) {\n this.attribute(\"data-cotomy-instance\", createId());\n this.removed(() => {\n this._element = CotomyElement.createHTMLElement(/* html */ `<div data-cotomy-invalidated style=\"display: none;\"></div>`);\n EventRegistry.instance.clear(this);\n });\n this.on(\"cotomy:transitstart\", () => {\n this.attribute(\"data-cotomy-moving\", \"\");\n this.find(\"[data-cotomy-instance]\").forEach(e => e.attribute(\"data-cotomy-moving\", \"\"));\n });\n this.on(\"cotomy:transitend\", () => {\n this.attribute(\"data-cotomy-moving\", null);\n this.find(\"[data-cotomy-instance]\").forEach(e => e.attribute(\"data-cotomy-moving\", null));\n });\n }\n }\n\n public get instanceId(): string {\n return this.attribute(\"data-cotomy-instance\")!;\n }\n\n public get scopeId(): string {\n if (!this.hasAttribute(\"data-cotomy-scopeid\")) {\n this.attribute(\"data-cotomy-scopeid\", createId());\n }\n return this.attribute(\"data-cotomy-scopeid\")!;\n }\n\n //#endregion\n\n\n\n //#region Scoped CSS\n\n public get stylable(): boolean {\n return ![\"script\", \"style\", \"link\", \"meta\"].includes(this.tagname);\n }\n\n private get scopedCssElementId(): string {\n return `css-${this.scopeId}`;\n }\n\n private useScopedCss(css: string): this {\n if (css && this.stylable) {\n this._scopedCss = css;\n const cssid = this.scopedCssElementId;\n CotomyElement.find(`#${cssid}`).forEach(e => e.remove());\n const element = document.createElement(\"style\");\n const hasRoot = /\\[root\\]/.test(css);\n const normalizedCss = hasRoot ? css : `[root] ${css}`;\n const writeCss = normalizedCss.replace(/\\[root\\]/g, `[data-cotomy-scopeid=\"${this.scopeId}\"]`);\n const node = document.createTextNode(writeCss);\n element.appendChild(node);\n element.id = cssid;\n const head = CotomyElement.first(\"head\")\n || new CotomyElement({ html: /* html */ `<head></head>` }).prependTo(new CotomyElement(document.documentElement));\n head.append(new CotomyElement(element));\n\n this.removed(() => {\n const hasSameScope = document.querySelector(`[data-cotomy-scopeid=\"${this.scopeId}\"]`) !== null;\n if (!hasSameScope) {\n CotomyElement.find(`#${cssid}`).forEach(e => e.remove());\n }\n });\n }\n return this;\n }\n\n private ensureScopedCss(): void {\n if (!this._scopedCss || !this.stylable) return;\n const cssid = this.scopedCssElementId;\n if (!document.getElementById(cssid)) {\n this.useScopedCss(this._scopedCss);\n }\n }\n\n //#endregion\n\n\n\n //#region Layout Event Listener\n\n public static readonly LISTEN_LAYOUT_EVENTS_ATTRIBUTE: string = \"data-cotomy-layout\";\n\n public listenLayoutEvents(): this {\n this.attribute(CotomyElement.LISTEN_LAYOUT_EVENTS_ATTRIBUTE, \"\");\n return this;\n }\n\n //#endregion\n\n\n\n //#region Elementの基本情報\n\n public get id(): string | null | undefined {\n return this.attribute(\"id\");\n }\n\n public generateId(prefix: string = \"__cotomy_elem__\"): this {\n if (!this.id) {\n this.attribute(\"id\", `${prefix}${createId()}`);\n }\n return this;\n }\n\n public get element(): HTMLElement {\n return this._element;\n }\n\n public clone<T extends CotomyElement = CotomyElement>(type?: new (el: HTMLElement) => T): T {\n const ctor = (type ?? CotomyElement) as new (el: HTMLElement) => T;\n const ATTRIBUTES_TO_STRIP = [\"data-cotomy-instance\", \"data-cotomy-moving\"];\n const clonedElement = this.element.cloneNode(true) as HTMLElement;\n\n if (clonedElement.hasAttribute(\"data-cotomy-invalidated\")) {\n throw new Error(\"Cannot clone an invalidated CotomyElement.\");\n }\n\n ATTRIBUTES_TO_STRIP.forEach(attr => {\n clonedElement.removeAttribute(attr);\n clonedElement.querySelectorAll(`[${attr}]`).forEach(el => el.removeAttribute(attr));\n });\n\n const cloned = new ctor(clonedElement);\n (cloned as unknown as CotomyElement)._scopedCss = this._scopedCss;\n return cloned;\n }\n\n public get tagname(): string {\n return this.element.tagName.toLowerCase();\n }\n\n /// <summary>\n /// 指定したセレクタにマッチする要素が存在するかどうかを判定\n /// ・標準の判定だと親要素を辿って判定しないため、セレクタを精査して親要素から判定する\n /// </summary>\n public is(selector: string): boolean {\n const selectors = selector.split(/\\s+(?![^\\[]*\\])|(?<=\\>)\\s+/);\n let element: HTMLElement | null = this.element;\n\n for (let i = selectors.length - 1; i >= 0; i--) {\n let subSelector = selectors[i].trim();\n let directChild = false;\n\n if (subSelector.startsWith(\">\")) {\n directChild = true;\n subSelector = subSelector.slice(1).trim();\n }\n\n if (!element || !element.matches(subSelector)) {\n return false;\n }\n\n if (directChild) {\n element = element.parentElement;\n } else {\n if (i > 0) {\n while (element && !element.matches(selectors[i - 1].trim())) {\n element = element.parentElement;\n }\n }\n }\n }\n\n return true;\n }\n\n public match(selector: string): boolean {\n try {\n return this.element.matches(selector);\n } catch {\n return false;\n }\n }\n\n public get empty(): boolean {\n const nonEmptyTags = new Set([\n \"input\", \"select\", \"textarea\", \"img\", \"video\", \"audio\", \"br\", \"hr\",\n \"iframe\", \"embed\", \"canvas\", \"object\", \"svg\", \"source\", \"track\", \"col\",\n \"link\", \"meta\", \"base\"\n ]);\n\n return nonEmptyTags.has(this.tagname)\n || this._element.hasAttribute(\"data-cotomy-empty\")\n || this._element.innerHTML.trim() === \"\";\n }\n\n //#endregion\n\n\n\n //#region Elementの状態及び値\n\n public get attached(): boolean {\n return document.contains(this.element);\n }\n\n public get isConnected(): boolean {\n return this.element.isConnected;\n }\n\n public get readonly(): boolean {\n if (\"readOnly\" in this.element) {\n return <boolean>this.element.readOnly;\n } else {\n return this.element.hasAttribute(\"readonly\");\n }\n }\n\n public set readonly(readonly: boolean) {\n if (\"readOnly\" in this.element) {\n this.element.readOnly = readonly;\n } else {\n if (readonly) {\n this.attribute(\"readonly\", \"readonly\");\n } else {\n this.attribute(\"readonly\", null);\n }\n }\n }\n\n public get value(): string {\n if (\"value\" in this.element) {\n return <string>this.element.value;\n } else {\n // \"value\" プロパティが存在しない場合、空文字列を返す\n return this.attribute(\"data-cotomy-value\") ?? \"\";\n }\n }\n\n public set value(val: string) {\n if (\"value\" in this.element) {\n this.element.value = val;\n } else {\n this.attribute(\"data-cotomy-value\", val);\n }\n }\n\n public get text(): string {\n return this.element.textContent ?? \"\";\n }\n\n public set text(text: string) {\n this.element.textContent = text ?? \"\";\n }\n\n public get html(): string {\n return this.element.innerHTML;\n }\n\n public set html(html: string) {\n this.element.innerHTML = html;\n }\n\n //#endregion\n\n\n\n //#region Elementの操作\n\n public setFocus(): this {\n this.element.focus();\n return this;\n }\n\n public get visible(): boolean {\n if (!this.attached) {\n return false;\n }\n\n if (!this.element.offsetParent && !this.attached) {\n return false;\n }\n\n const rect = this.element.getBoundingClientRect();\n if (rect.width > 0 && rect.height > 0) {\n const style = this.getComputedStyle();\n return style.display !== \"none\" && style.visibility !== \"hidden\" && style.visibility !== \"collapse\";\n }\n\n return false;\n }\n\n public get disabled(): boolean {\n if (\"disabled\" in this.element) {\n if (this.match(\":disabled\")) return true;\n return <boolean>this.element.disabled;\n }\n return this.element.hasAttribute(\"disabled\");\n }\n\n public set disabled(value: boolean) {\n if (\"disabled\" in this.element) {\n this.element.disabled = value;\n return;\n }\n if (value) {\n this.attribute(\"disabled\", \"\");\n } else {\n this.attribute(\"disabled\", null);\n }\n }\n\n public get enabled(): boolean {\n return !this.disabled;\n }\n\n public set enabled(value: boolean) {\n this.disabled = !value;\n }\n\n private get invalidated(): boolean {\n return this.element.hasAttribute(\"data-cotomy-invalidated\");\n }\n\n public remove(): void {\n if (!this.invalidated) {\n this._element.remove();\n }\n }\n\n public clear(): this {\n this.find(\"*\").forEach(e => e.remove());\n this.text = \"\";\n return this;\n }\n\n //#endregion\n\n\n\n //#region Elementのサイズ及び位置\n\n public get width(): number {\n return this.element.offsetWidth;\n }\n\n public set width(width: number) {\n let w = width.toString() + \"px\";\n this.style(\"width\", w);\n }\n\n public get height(): number {\n return this.element.offsetHeight;\n }\n\n public set height(height: number) {\n let h = height.toString() + \"px\";\n this.style(\"height\", h);\n }\n\n public get innerWidth(): number {\n return this.element.clientWidth;\n }\n\n public get innerHeight(): number {\n return this.element.clientHeight;\n }\n\n public get outerWidth(): number {\n const style = this.getComputedStyle();\n const margin = parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n return this.element.offsetWidth + margin;\n }\n\n public get outerHeight(): number {\n const style = this.getComputedStyle();\n const margin = parseFloat(style.marginTop) + parseFloat(style.marginBottom);\n return this.element.offsetHeight + margin;\n }\n\n public get scrollHeight(): number {\n return this.element.scrollHeight;\n }\n\n public get scrollWidth(): number {\n return this.element.scrollWidth;\n }\n\n public get scrollTop(): number {\n return this.element.scrollTop;\n }\n\n public get position(): { top: number; left: number } {\n const rect = this.element.getBoundingClientRect();\n return { top: rect.top, left: rect.left };\n }\n\n public get absolutePosition(): { top: number; left: number } {\n const rect = this.element.getBoundingClientRect();\n return { top: rect.top + window.scrollY, left: rect.left + window.scrollX };\n }\n\n public get screenPosition(): { top: number; left: number } {\n const rect = this.element.getBoundingClientRect();\n return { top: rect.top, left: rect.left };\n }\n\n public get rect(): { top: number; left: number; width: number; height: number } {\n const rect = this.element.getBoundingClientRect();\n return { top: rect.top, left: rect.left, width: rect.width, height: rect.height };\n }\n\n public get innerRect(): { top: number; left: number; width: number; height: number } {\n const rect = this.element.getBoundingClientRect();\n const style = this.getComputedStyle();\n const padding = {\n top: parseFloat(style.paddingTop),\n right: parseFloat(style.paddingRight),\n bottom: parseFloat(style.paddingBottom),\n left: parseFloat(style.paddingLeft)\n };\n return {\n top: rect.top + padding.top,\n left: rect.left + padding.left,\n width: rect.width - padding.left - padding.right,\n height: rect.height - padding.top - padding.bottom\n };\n }\n\n public get outerRect(): { top: number; left: number; width: number; height: number } {\n const rect = this.element.getBoundingClientRect();\n const style = this.getComputedStyle();\n const margin = {\n top: parseFloat(style.marginTop),\n right: parseFloat(style.marginRight),\n bottom: parseFloat(style.marginBottom),\n left: parseFloat(style.marginLeft)\n };\n return {\n top: rect.top - margin.top,\n left: rect.left - margin.left,\n width: rect.width + margin.left + margin.right,\n height: rect.height + margin.top + margin.bottom\n };\n }\n\n private static overlapsRect(\n left: { top: number; left: number; width: number; height: number },\n right: { top: number; left: number; width: number; height: number }\n ): boolean {\n if (left.width <= 0 || left.height <= 0 || right.width <= 0 || right.height <= 0) {\n return false;\n }\n const leftRight = left.left + left.width;\n const leftBottom = left.top + left.height;\n const rightRight = right.left + right.width;\n const rightBottom = right.top + right.height;\n\n return left.left < rightRight\n && leftRight > right.left\n && left.top < rightBottom\n && leftBottom > right.top;\n }\n\n public overlaps(target: CotomyElement): boolean {\n if (!this.attached || !target.attached) {\n return false;\n }\n if (this.element === target.element) {\n return false;\n }\n return CotomyElement.overlapsRect(this.rect, target.rect);\n }\n\n public get overlapElements(): CotomyElement[] {\n if (!this.attached) {\n return [];\n }\n return CotomyElement.find(\"[data-cotomy-instance]\")\n .filter(e => e.element !== this.element)\n .filter(e => this.overlaps(e));\n }\n\n\n public get padding(): { top: number; right: number; bottom: number; left: number } {\n const style = this.getComputedStyle();\n return {\n top: parseFloat(style.paddingTop),\n right: parseFloat(style.paddingRight),\n bottom: parseFloat(style.paddingBottom),\n left: parseFloat(style.paddingLeft)\n };\n }\n\n public get margin(): { top: number; right: number; bottom: number; left: number } {\n const style = this.getComputedStyle();\n return {\n top: parseFloat(style.marginTop),\n right: parseFloat(style.marginRight),\n bottom: parseFloat(style.marginBottom),\n left: parseFloat(style.marginLeft)\n };\n }\n\n public get inViewport(): boolean {\n const rect = this.element.getBoundingClientRect();\n return rect.top < window.innerHeight && rect.bottom > 0;\n }\n\n public get isAboveViewport(): boolean {\n return this.element.getBoundingClientRect().bottom < 0;\n }\n\n public get isBelowViewport(): boolean {\n return this.element.getBoundingClientRect().top > window.innerHeight;\n }\n\n public get isLeftViewport(): boolean {\n return this.element.getBoundingClientRect().right < 0;\n }\n\n public get isRightViewport(): boolean {\n return this.element.getBoundingClientRect().left > window.innerWidth;\n }\n\n private static isScrollableOverflow(value: string): boolean {\n const overflow = (value ?? \"\").toLowerCase();\n return overflow === \"auto\" || overflow === \"scroll\";\n }\n\n private static findNearestScrollableAncestor(element: HTMLElement): HTMLElement | null {\n let current: HTMLElement | null = element.parentElement;\n while (current) {\n if (current === document.body || current === document.documentElement) {\n return null;\n }\n\n const style = window.getComputedStyle(current);\n const overflowY = style.overflowY;\n const overflowX = style.overflowX;\n\n const canScrollY = CotomyElement.isScrollableOverflow(overflowY) && current.scrollHeight > current.clientHeight;\n const canScrollX = CotomyElement.isScrollableOverflow(overflowX) && current.scrollWidth > current.clientWidth;\n\n if (canScrollY || canScrollX) {\n return current;\n }\n current = current.parentElement;\n }\n return null;\n }\n\n private static computeAlignedScroll(\n viewStart: number,\n viewSize: number,\n elementStart: number,\n elementEnd: number,\n align: ScrollLogicalPosition,\n onlyIfNeeded: boolean\n ): number | null {\n const viewEnd = viewStart + viewSize;\n\n // 既に完全に表示範囲内ならスクロール不要\n if (onlyIfNeeded && elementStart >= viewStart && elementEnd <= viewEnd) {\n return null;\n }\n\n if (align === \"start\") {\n return elementStart;\n }\n if (align === \"end\") {\n return elementEnd - viewSize;\n }\n if (align === \"center\") {\n const elementSize = elementEnd - elementStart;\n return elementStart - (viewSize - elementSize) / 2;\n }\n\n // nearest\n if (elementStart < viewStart) {\n return elementStart;\n }\n if (elementEnd > viewEnd) {\n return elementEnd - viewSize;\n }\n return null;\n }\n\n public scrollIn(options: CotomyScrollOptions | Partial<CotomyScrollOptions> = {}): this {\n if (!this.attached) return this;\n\n const resolved = CotomyScrollOptions.from(options);\n const behavior = resolved.resolveBehavior;\n const onlyIfNeeded = resolved.onlyIfNeeded;\n const block = resolved.block;\n const inline = resolved.inline;\n\n const scrollable = CotomyElement.findNearestScrollableAncestor(this.element);\n if (scrollable) {\n const elementRect = this.element.getBoundingClientRect();\n const containerRect = scrollable.getBoundingClientRect();\n\n const elementTopInContainer = elementRect.top - containerRect.top + scrollable.scrollTop;\n const elementBottomInContainer = elementRect.bottom - containerRect.top + scrollable.scrollTop;\n const elementLeftInContainer = elementRect.left - containerRect.left + scrollable.scrollLeft;\n const elementRightInContainer = elementRect.right - containerRect.left + scrollable.scrollLeft;\n\n const targetTop = CotomyElement.computeAlignedScroll(\n scrollable.scrollTop,\n scrollable.clientHeight,\n elementTopInContainer,\n elementBottomInContainer,\n block,\n onlyIfNeeded\n );\n const targetLeft = CotomyElement.computeAlignedScroll(\n scrollable.scrollLeft,\n scrollable.clientWidth,\n elementLeftInContainer,\n elementRightInContainer,\n inline,\n onlyIfNeeded\n );\n\n if (!onlyIfNeeded || targetTop !== null || targetLeft !== null) {\n const nextTop = targetTop ?? scrollable.scrollTop;\n const nextLeft = targetLeft ?? scrollable.scrollLeft;\n (scrollable as any).scrollTo?.({ top: nextTop, left: nextLeft, behavior });\n if (!(scrollable as any).scrollTo) {\n scrollable.scrollTop = nextTop;\n scrollable.scrollLeft = nextLeft;\n }\n }\n return this;\n }\n\n const rect = this.element.getBoundingClientRect();\n const currentTop = window.scrollY || document.documentElement.scrollTop;\n const currentLeft = window.scrollX || document.documentElement.scrollLeft;\n\n const elementTop = currentTop + rect.top;\n const elementBottom = currentTop + rect.bottom;\n const elementLeft = currentLeft + rect.left;\n const elementRight = currentLeft + rect.right;\n\n const targetTop = CotomyElement.computeAlignedScroll(currentTop, window.innerHeight, elementTop, elementBottom, block, onlyIfNeeded);\n const targetLeft = CotomyElement.computeAlignedScroll(currentLeft, window.innerWidth, elementLeft, elementRight, inline, onlyIfNeeded);\n\n if (!onlyIfNeeded || targetTop !== null || targetLeft !== null) {\n window.scrollTo({ top: targetTop ?? currentTop, left: targetLeft ?? currentLeft, behavior });\n }\n return this;\n }\n\n public scrollTo(target: string | CotomyElement | HTMLElement, options: CotomyScrollOptions | Partial<CotomyScrollOptions> = {}): this {\n if (typeof target === \"string\") {\n const element = this.first(target);\n element?.scrollIn(options);\n return this;\n }\n if (target instanceof CotomyElement) {\n target.scrollIn(options);\n return this;\n }\n new CotomyElement(target).scrollIn(options);\n return this;\n }\n\n public comesBefore(target: CotomyElement): boolean {\n const pos = this.element.compareDocumentPosition(target.element);\n if (pos & Node.DOCUMENT_POSITION_DISCONNECTED) return false;\n return (pos & Node.DOCUMENT_POSITION_FOLLOWING) !== 0;\n }\n\n public comesAfter(target: CotomyElement): boolean {\n const pos = this.element.compareDocumentPosition(target.element);\n if (pos & Node.DOCUMENT_POSITION_DISCONNECTED) return false;\n return (pos & Node.DOCUMENT_POSITION_PRECEDING) !== 0;\n }\n\n //#endregion\n\n\n\n //#region Elementの属性\n\n public hasAttribute(name: string): boolean {\n return this.element.hasAttribute(name);\n }\n\n public attribute(name: string): string | null | undefined;\n public attribute(name: string, value: string | number | null | undefined): this;\n public attribute(name: string, value?: string | number | null | undefined): string | null | undefined | this {\n if (arguments.length === 1) {\n // getter\n return this.element.hasAttribute(name) ? this.element.getAttribute(name) : undefined;\n } else if (value == null) {\n // remove\n this.element.removeAttribute(name);\n return this;\n } else {\n // setter\n this.element.setAttribute(name, value?.toString() ?? \"\");\n return this;\n }\n }\n\n public hasClass(name: string): boolean {\n return this.element.classList.contains(name);\n }\n\n public addClass(name: string): this {\n this.element.classList.add(name);\n return this;\n }\n\n public removeClass(name: string): this {\n this.element.classList.remove(name);\n return this;\n }\n\n public toggleClass(name: string, force?: boolean): this {\n this.element.classList.toggle(name, force);\n return this;\n }\n\n public style(name: string): string;\n public style(name: string, value: string | null | undefined): this;\n public style(name: string, value?: string | null | undefined): string | this {\n if (arguments.length === 1) {\n // getter\n return this.element.style.getPropertyValue(name);\n } else if (value == null) {\n // remove\n this.element.style.removeProperty(name);\n return this;\n } else {\n // setter\n this.element.style.setProperty(name, value);\n return this;\n }\n }\n\n protected getComputedStyle(): CSSStyleDeclaration {\n return window.getComputedStyle(this.element);\n }\n\n public computedStyle(name: string): string {\n return window.getComputedStyle(this.element).getPropertyValue(name);\n }\n\n //#endregion\n\n\n\n //#region Elementの親子関係\n\n public get parent(): CotomyElement {\n if (this._parentElement == null && this.element.parentElement !== null) {\n this._parentElement = new CotomyElement(this.element.parentElement);\n }\n return this._parentElement ?? CotomyElement.empty();\n }\n\n public get parents(): CotomyElement[] {\n let parents = [];\n let currentElement = this.element.parentElement;\n while (currentElement !== null) {\n parents.push(new CotomyElement(currentElement));\n currentElement = currentElement.parentElement;\n }\n return parents;\n }\n\n public hasChildren(selector: string = \"*\"): boolean {\n return this.element.querySelector(selector) !== null;\n }\n public children<T extends CotomyElement = CotomyElement>(selector: string = \"*\", type?: new (el: HTMLElement) => T): T[] {\n const children = Array.from(this.element.querySelectorAll(selector));\n const directChildren = children.filter(child => child.parentElement === this.element);\n const ctor = (type ?? CotomyElement) as new (el: HTMLElement) => T;\n return directChildren.filter((e): e is HTMLElement => e instanceof HTMLElement).map(e => new ctor(e));\n }\n\n public firstChild<T extends CotomyElement = CotomyElement>(selector: string = \"*\", type?: new (el: HTMLElement) => T): T | undefined {\n const elements = this.children<T>(selector, type);\n return elements.shift() ?? undefined;\n }\n\n public lastChild<T extends CotomyElement = CotomyElement>(selector: string = \"*\", type?: new (el: HTMLElement) => T): T | undefined {\n const elements = this.children<T>(selector, type);\n return elements.pop() ?? undefined;\n }\n\n public closest<T extends CotomyElement = CotomyElement>(selector: string, type?: new (el: HTMLElement) => T): T | undefined {\n const closestElement = this.element.closest(selector);\n if (closestElement !== null && closestElement instanceof HTMLElement) {\n const ctor = (type ?? CotomyElement) as new (el: HTMLElement) => T;\n return new ctor(closestElement);\n } else {\n return undefined;\n }\n }\n\n public previousSibling<T extends CotomyElement = CotomyElement>(selector: string = \"*\", type?: new (el: HTMLElement) => T): T | undefined {\n const element = this.element.previousElementSibling;\n if (element !== null && element instanceof HTMLElement) {\n const ctor = (type ?? CotomyElement) as new (el: HTMLElement) => T;\n const ce = new ctor(element);\n return ce.match(selector) ? ce : ce.previousSibling<T>(selector, type);\n } else {\n return undefined;\n }\n }\n\n public nextSibling<T extends CotomyElement = CotomyElement>(selector: string = \"*\", type?: new (el: HTMLElement) => T): T | undefined {\n const element = this.element.nextElementSibling;\n if (element !== null && element instanceof HTMLElement) {\n const ctor = (type ?? CotomyElement) as new (el: HTMLElement) => T;\n const ce = new ctor(element);\n return ce.match(selector) ? ce : ce.nextSibling<T>(selector, type);\n } else {\n return undefined;\n }\n }\n\n public siblings<T extends CotomyElement = CotomyElement>(selector: string = \"*\", type?: new (el: HTMLElement) => T): T[] {\n const parent = this.element.parentElement;\n if (!parent) return [];\n const ctor = (type ?? CotomyElement) as new (el: HTMLElement) => T;\n return Array.from(parent.children).filter((e): e is HTMLElement => e instanceof HTMLElement\n && e !== this.element).map(e => new ctor(e)).filter(e => e.match(selector));\n }\n\n //#endregion\n\n\n\n //#region 内包するElement\n\n public find<T extends CotomyElement = CotomyElement>(selector: string, type?: new (el: HTMLElement) => T): T[] {\n const elements = Array.from(this.element.querySelectorAll(selector)) as HTMLElement[];\n return <T[]>elements.map(e => new (type ?? CotomyElement)(e));\n }\n\n public first<T extends CotomyElement = CotomyElement>(selector: string = \"*\", type?: new (el: HTMLElement) => T): T | undefined {\n const elements = this.find(selector, type);\n return <T>elements.shift() ?? undefined;\n }\n\n public last<T extends CotomyElement = CotomyElement>(selector: string = \"*\", type?: new (el: HTMLElement) => T): T | undefined {\n const elements = this.find(selector, type);\n return <T>elements.pop() ?? undefined;\n }\n\n public contains(selector: string): boolean {\n return this.find(selector).length > 0;\n }\n\n private static runWithMoveEvents(target: CotomyElement, operation: () => void): void {\n target.trigger(\"cotomy:transitstart\");\n try {\n operation();\n } finally {\n target.trigger(\"cotomy:transitend\");\n }\n }\n\n private static toElement(target: CotomyElement | string | { html: string, css?: string }): CotomyElement {\n return target instanceof CotomyElement ? target : new CotomyElement(target);\n }\n\n public prepend(prepend: CotomyElement | string | { html: string, css?: string }): this {\n const e = CotomyElement.toElement(prepend);\n CotomyElement.runWithMoveEvents(e, () => {\n this.element.prepend(e.element);\n });\n e.ensureScopedCss();\n return this;\n }\n\n public append(target: CotomyElement | string | { html: string, css?: string }): this {\n const e = CotomyElement.toElement(target);\n CotomyElement.runWithMoveEvents(e, () => {\n this.element.append(e.element);\n });\n e.ensureScopedCss();\n return this;\n }\n\n public appendAll(targets: Array<CotomyElement | string | { html: string, css?: string }>): this {\n targets.forEach(e => this.append(e));\n return this;\n }\n\n public insertBefore(append: CotomyElement | string | { html: string, css?: string }): this {\n const e = CotomyElement.toElement(append);\n CotomyElement.runWithMoveEvents(e, () => {\n this.element.before(e.element);\n });\n e.ensureScopedCss();\n return this;\n }\n\n public insertAfter(append: CotomyElement | string | { html: string, css?: string }): this {\n const e = CotomyElement.toElement(append);\n CotomyElement.runWithMoveEvents(e, () => {\n this.element.after(e.element);\n });\n e.ensureScopedCss();\n return this;\n }\n\n public appendTo(target: CotomyElement): this {\n CotomyElement.runWithMoveEvents(this, () => {\n target.element.append(this.element);\n });\n this.ensureScopedCss();\n return this;\n }\n\n public prependTo(target: CotomyElement): this {\n CotomyElement.runWithMoveEvents(this, () => {\n target.element.prepend(this.element);\n });\n this.ensureScopedCss();\n return this;\n }\n\n //#endregion\n\n\n\n\n //#region Event\n\n public trigger(event: string): this;\n public trigger(event: string, e: Event): this;\n public trigger(event: Event): this;\n public trigger(event: string | Event, e?: Event): this {\n if (event instanceof Event) {\n this.element.dispatchEvent(event);\n return this;\n }\n this.element.dispatchEvent(e ?? new Event(event, { bubbles: true }));\n return this;\n }\n\n public on(event: string | string[], handle: (e: Event) => void | Promise<void>): this;\n public on(event: string | string[], handle: (e: Event) => void | Promise<void>, options: AddEventListenerOptions): this;\n public on(event: string | string[], handle: (e: Event) => void | Promise<void>, options?: AddEventListenerOptions): this {\n const events = Array.isArray(event) ? event : [event];\n events.forEach(eventName => {\n const entry = new HandlerEntry(handle, undefined, options);\n EventRegistry.instance.on(eventName, this, entry);\n });\n return this;\n }\n\n public onSubTree(event: string | string[], selector: string, handle: (e: Event) => void | Promise<void>): this;\n public onSubTree(event: string | string[], selector: string, handle: (e: Event) => void | Promise<void>, options: AddEventListenerOptions): this;\n public onSubTree(event: string | string[], selector: string, handle: (e: Event) => void | Promise<void>, options?: AddEventListenerOptions): this {\n const delegate: EventHandler = (e: Event) => {\n const target = e.target as HTMLElement | null;\n if (target && target.closest(selector)) {\n return handle(e);\n }\n };\n const events = Array.isArray(event) ? event : [event];\n events.forEach(eventName => {\n const entry = new HandlerEntry(handle, delegate, options);\n EventRegistry.instance.on(eventName, this, entry);\n });\n return this;\n }\n\n public once(event: string | string[], handle: (e: Event) => void | Promise<void>): this;\n public once(event: string | string[], handle: (e: Event) => void | Promise<void>, options: AddEventListenerOptions): this;\n public once(event: string | string[], handle: (e: Event) => void | Promise<void>, options?: AddEventListenerOptions): this {\n const mergedOptions: AddEventListenerOptions = { ...(options ?? {}), once: true };\n this.off(event, handle, mergedOptions);\n const events = Array.isArray(event) ? event : [event];\n events.forEach(eventName => {\n const entry = new HandlerEntry(handle, undefined, mergedOptions);\n EventRegistry.instance.on(eventName, this, entry);\n });\n return this;\n }\n\n public off(event: string | string[]): this;\n public off(event: string | string[], handle: (e: Event) => void | Promise<void>): this;\n public off(event: string | string[], handle: (e: Event) => void | Promise<void>, options: AddEventListenerOptions): this;\n public off(event: string | string[], handle?: (e: Event) => void | Promise<void>, options?: AddEventListenerOptions): this {\n const events = Array.isArray(event) ? event : [event];\n events.forEach(eventName => {\n if (handle) {\n const entry = new HandlerEntry(handle, undefined, options);\n EventRegistry.instance.off(eventName, this, entry);\n } else {\n EventRegistry.instance.off(eventName, this);\n }\n });\n return this;\n }\n\n //#region Mouse Events\n\n public click(): this;\n public click(handle: (e: MouseEvent) => void | Promise<void>): this;\n public click(handle?: (e: MouseEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"click\", async e => await handle(e as MouseEvent));\n } else {\n this.trigger(\"click\");\n }\n return this;\n }\n\n public dblclick(): this;\n public dblclick(handle: (e: MouseEvent) => void | Promise<void>): this;\n public dblclick(handle?: (e: MouseEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"dblclick\", async e => await handle(e as MouseEvent));\n } else {\n this.trigger(\"dblclick\");\n }\n return this;\n }\n\n public mouseover(): this;\n public mouseover(handle: (e: MouseEvent) => void | Promise<void>): this;\n public mouseover(handle?: (e: MouseEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"mouseover\", async e => await handle(e as MouseEvent));\n } else {\n this.trigger(\"mouseover\");\n }\n return this;\n }\n\n public mouseout(): this;\n public mouseout(handle: (e: MouseEvent) => void | Promise<void>): this;\n public mouseout(handle?: (e: MouseEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"mouseout\", async e => await handle(e as MouseEvent));\n } else {\n this.trigger(\"mouseout\");\n }\n return this;\n }\n\n public mousedown(): this;\n public mousedown(handle: (e: MouseEvent) => void | Promise<void>): this;\n public mousedown(handle?: (e: MouseEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"mousedown\", async e => await handle(e as MouseEvent));\n } else {\n this.trigger(\"mousedown\");\n }\n return this;\n }\n\n public mouseup(): this;\n public mouseup(handle: (e: MouseEvent) => void | Promise<void>): this;\n public mouseup(handle?: (e: MouseEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"mouseup\", async e => await handle(e as MouseEvent));\n } else {\n this.trigger(\"mouseup\");\n }\n return this;\n }\n\n public mousemove(): this;\n public mousemove(handle: (e: MouseEvent) => void | Promise<void>): this;\n public mousemove(handle?: (e: MouseEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"mousemove\", async e => await handle(e as MouseEvent));\n } else {\n this.trigger(\"mousemove\");\n }\n return this;\n }\n\n public mouseenter(): this;\n public mouseenter(handle: (e: MouseEvent) => void | Promise<void>): this;\n public mouseenter(handle?: (e: MouseEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"mouseenter\", async e => await handle(e as MouseEvent));\n } else {\n this.trigger(\"mouseenter\");\n }\n return this;\n }\n\n public mouseleave(): this;\n public mouseleave(handle: (e: MouseEvent) => void | Promise<void>): this;\n public mouseleave(handle?: (e: MouseEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"mouseleave\", async e => await handle(e as MouseEvent));\n } else {\n this.trigger(\"mouseleave\");\n }\n return this;\n }\n\n public dragstart(): this;\n public dragstart(handle: (e: DragEvent) => void | Promise<void>): this;\n public dragstart(handle?: (e: DragEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"dragstart\", async e => await handle(e as DragEvent));\n } else {\n this.trigger(\"dragstart\");\n }\n return this;\n }\n\n public dragend(): this;\n public dragend(handle: (e: DragEvent) => void | Promise<void>): this;\n public dragend(handle?: (e: DragEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"dragend\", async e => await handle(e as DragEvent));\n } else {\n this.trigger(\"dragend\");\n }\n return this;\n }\n\n public dragover(): this;\n public dragover(handle: (e: DragEvent) => void | Promise<void>): this;\n public dragover(handle?: (e: DragEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"dragover\", async e => await handle(e as DragEvent));\n } else {\n this.trigger(\"dragover\");\n }\n return this;\n }\n\n public dragenter(): this;\n public dragenter(handle: (e: DragEvent) => void | Promise<void>): this;\n public dragenter(handle?: (e: DragEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"dragenter\", async e => await handle(e as DragEvent));\n } else {\n this.trigger(\"dragenter\");\n }\n return this;\n }\n\n public dragleave(): this;\n public dragleave(handle: (e: DragEvent) => void | Promise<void>): this;\n public dragleave(handle?: (e: DragEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"dragleave\", async e => await handle(e as DragEvent));\n } else {\n this.trigger(\"dragleave\");\n }\n return this;\n }\n\n public drop(): this;\n public drop(handle: (e: DragEvent) => void | Promise<void>): this;\n public drop(handle?: (e: DragEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"drop\", async e => await handle(e as DragEvent));\n } else {\n this.trigger(\"drop\");\n }\n return this;\n }\n\n public drag(): this;\n public drag(handle: (e: DragEvent) => void | Promise<void>): this;\n public drag(handle?: (e: DragEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"drag\", async e => await handle(e as DragEvent));\n } else {\n this.trigger(\"drag\");\n }\n return this;\n }\n\n public removed(handle: ((e: Event) => void | Promise<void>)): this {\n this.element.addEventListener(\"removed\", async e => await handle(e));\n return this;\n }\n\n //#endregion\n\n\n\n //#region Keyboard Events\n\n public keydown(): this;\n public keydown(handle: (e: KeyboardEvent) => void | Promise<void>): this;\n public keydown(handle?: (e: KeyboardEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"keydown\", async e => await handle(e as KeyboardEvent));\n } else {\n this.trigger(\"keydown\");\n }\n return this;\n }\n\n public keyup(): this;\n public keyup(handle: (e: KeyboardEvent) => void | Promise<void>): this;\n public keyup(handle?: (e: KeyboardEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"keyup\", async e => await handle(e as KeyboardEvent));\n } else {\n this.trigger(\"keyup\");\n }\n return this;\n }\n\n public keypress(): this;\n public keypress(handle: (e: KeyboardEvent) => void | Promise<void>): this;\n public keypress(handle?: (e: KeyboardEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"keypress\", async e => await handle(e as KeyboardEvent));\n } else {\n this.trigger(\"keypress\");\n }\n return this;\n }\n\n //#endregion\n\n\n //#region Input Control Events\n\n public change(): this;\n public change(handle: (e: Event) => void | Promise<void>): this;\n public change(handle?: (e: Event) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"change\", async e => await handle(e));\n } else {\n this.trigger(\"change\");\n }\n return this;\n }\n\n public input(): this;\n public input(handle: (e: Event) => void | Promise<void>): this;\n public input(handle?: (e: Event) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"input\", async e => await handle(e));\n } else {\n this.trigger(\"input\");\n }\n return this;\n }\n\n //#endregion\n\n\n //#region View and Control Evnet\n\n private static _intersectionObserver: IntersectionObserver | null = null;\n public static get intersectionObserver(): IntersectionObserver {\n return CotomyElement._intersectionObserver = CotomyElement._intersectionObserver\n ?? new IntersectionObserver(entries => {\n entries.filter(entry => entry.isIntersecting).forEach(\n entry => entry.target.dispatchEvent(new Event(\"inview\")));\n entries.filter(entry => !entry.isIntersecting).forEach(\n entry => entry.target.dispatchEvent(new Event(\"outview\")));\n });\n }\n\n public inview(): this;\n public inview(handle: (e: Event) => void | Promise<void>): this;\n public inview(handle?: (e: Event) => void | Promise<void>): this {\n if (handle) {\n CotomyElement.intersectionObserver.observe(this.element);\n this.element.addEventListener(\"inview\", async e => await handle(e));\n } else {\n this.trigger(\"inview\");\n }\n return this;\n }\n\n public outview(): this;\n public outview(handle: (e: Event) => void | Promise<void>): this;\n public outview(handle?: (e: Event) => void | Promise<void>): this {\n if (handle) {\n CotomyElement.intersectionObserver.observe(this.element);\n this.element.addEventListener(\"outview\", async e => await handle(e));\n } else {\n this.trigger(\"outview\");\n }\n return this;\n }\n\n public focus(): this;\n public focus(handle: (e: FocusEvent) => void | Promise<void>): this;\n public focus(handle?: (e: FocusEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"focus\", async e => await handle(e as FocusEvent));\n } else {\n this.trigger(\"focus\");\n }\n return this;\n }\n\n public blur(): this;\n public blur(handle: (e: FocusEvent) => void | Promise<void>): this;\n public blur(handle?: (e: FocusEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"blur\", async e => await handle(e as FocusEvent));\n } else {\n this.trigger(\"blur\");\n }\n return this;\n }\n\n public focusin(): this;\n public focusin(handle: (e: FocusEvent) => void | Promise<void>): this;\n public focusin(handle?: (e: FocusEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"focusin\", async e => await handle(e as FocusEvent));\n } else {\n this.trigger(\"focusin\");\n }\n return this;\n }\n\n public focusout(): this;\n public focusout(handle: (e: FocusEvent) => void | Promise<void>): this;\n public focusout(handle?: (e: FocusEvent) => void | Promise<void>): this {\n if (handle) {\n this.element.addEventListener(\"focusout\", async e => await handle(e as FocusEvent));\n } else {\n this.trigger(\"focusout\");\n }\n return this;\n }\n\n public filedrop(handle: (files: File[]) => void | Promise<void>): this {\n this.element.addEventListener(\"drop\", async e => {\n e.preventDefault();\n const dt = e.dataTransfer;\n if (dt && dt.files) {\n await handle(Array.from(dt.files));\n }\n });\n return this;\n }\n\n //#endregion\n\n\n\n //#region Layout Events\n public resize(): this;\n public resize(handle: (e: Event) => void | Promise<void>): this;\n public resize(handle?: (e: Event) => void | Promise<void>): this {\n this.listenLayoutEvents();\n if (handle) {\n this.element.addEventListener(\"cotomy:resize\", async e => await handle(e));\n } else {\n this.trigger(\"cotomy:resize\");\n }\n return this;\n }\n\n public scroll(): this;\n public scroll(handle: (e: Event) => void | Promise<void>): this;\n public scroll(handle?: (e: Event) => void | Promise<void>): this {\n this.listenLayoutEvents();\n if (handle) {\n this.element.addEventListener(\"cotomy:scroll\", async e => await handle(e));\n } else {\n this.trigger(\"cotomy:scroll\");\n }\n return this;\n }\n\n public changeLayout(): this;\n public changeLayout(handle: (e: Event) => void | Promise<void>): this;\n public changeLayout(handle?: (e: Event) => void | Promise<void>): this {\n this.listenLayoutEvents();\n if (handle) {\n this.element.addEventListener(\"cotomy:changelayout\", async e => await handle(e));\n } else {\n this.trigger(\"cotomy:changelayout\");\n }\n return this;\n }\n //#endregion\n //#endregion\n}\n\nexport class CotomyMetaElement extends CotomyElement {\n public static get(name: string): CotomyMetaElement {\n return CotomyElement.first<CotomyMetaElement>(`meta[name=\"${name}\" i]`, CotomyMetaElement)\n ?? CotomyElement.empty<CotomyMetaElement>(CotomyMetaElement);\n }\n\n public get content(): string {\n return this.attribute(\"content\") ?? \"\";\n }\n}\n\n\n\n\nexport class CotomyWindow {\n private static _instance: CotomyWindow | null = null;\n\n public static get instance(): CotomyWindow {\n return CotomyWindow._instance ?? (CotomyWindow._instance = new CotomyWindow());\n }\n\n\n private _body: CotomyElement = CotomyElement.empty();\n private _mutationObserver: MutationObserver | null = null;\n private _reloading: boolean = false;\n private _eventHandlers: { [event: string]: Array<(e: Event) => void | Promise<void>> } = {};\n\n public get initialized(): boolean {\n return this._body.attached;\n }\n\n public initialize(): this {\n if (!this.initialized) {\n if (!document.body) {\n throw new Error(\"<body> element not found. DOM may not be ready.\");\n }\n this._body = CotomyElement.first(\"body\")!;\n\n const changeLayoutEvents = [\"resize\", \"scroll\", \"orientationchange\", \"fullscreenchange\", \"cotomy:ready\"];\n changeLayoutEvents.forEach(e => {\n window.addEventListener(e, () => {\n const changeLayoutEvent = new CustomEvent(\"cotomy:changelayout\");\n window.dispatchEvent(changeLayoutEvent);\n }, { passive: true });\n });\n\n // documentにファイルがドラッグされた場合、開いてしまうことを防ぐ\n document.addEventListener(\"dragover\", e => {\n e.stopPropagation();\n e.preventDefault();\n });\n\n this.resize(() => {\n document.querySelectorAll(`[${CotomyElement.LISTEN_LAYOUT_EVENTS_ATTRIBUTE}]`).forEach(e => {\n e.dispatchEvent(new CustomEvent(\"cotomy:resize\"));\n });\n });\n\n this.scroll(() => {\n document.querySelectorAll(`[${CotomyElement.LISTEN_LAYOUT_EVENTS_ATTRIBUTE}]`).forEach(e => {\n e.dispatchEvent(new CustomEvent(\"cotomy:scroll\"));\n });\n });\n\n this.changeLayout(() => {\n document.querySelectorAll(`[${CotomyElement.LISTEN_LAYOUT_EVENTS_ATTRIBUTE}]`).forEach(e => {\n e.dispatchEvent(new CustomEvent(\"cotomy:changelayout\"));\n });\n });\n\n\n // DOM要素の削除をトラップして、removedイベントを発生させる\n this._mutationObserver = new MutationObserver(mutations => {\n mutations.forEach(mutation => {\n mutation.removedNodes.forEach(node => {\n if (typeof HTMLElement !== \"undefined\" && node instanceof HTMLElement) {\n const element = new CotomyElement(node);\n if (!element.hasAttribute(\"data-cotomy-moving\") && !element.attached) {\n element.trigger(\"removed\");\n }\n }\n });\n });\n });\n this._mutationObserver.observe(this.body.element, { childList: true, subtree: true });\n }\n return this;\n }\n\n public get reloading(): boolean {\n return this._reloading;\n }\n\n public reload() {\n this._reloading = true;\n location.reload();\n }\n\n\n\n public get body(): CotomyElement {\n return this._body;\n }\n\n public append(e: CotomyElement | string | { html: string, css?: string }): this {\n this._body.append(e);\n return this;\n }\n\n public moveNext(focused: CotomyElement, shift: boolean = false) {\n const selector = \"input, a, select, button, textarea\";\n const focusableElements = Array.from(this.body.element.querySelectorAll(selector))\n .map(e => new CotomyElement(<HTMLElement>e))\n .filter(e => e.width > 0 && e.height > 0 && e.visible && e.enabled && !e.hasAttribute(\"readonly\"));\n\n const focusedIndex = focusableElements.map(e => e.element).indexOf(focused.element);\n\n let nextIndex = focusedIndex + (shift ? -1 : 1);\n if (nextIndex >= focusableElements.length) {\n nextIndex = 0;\n } else if (nextIndex < 0) {\n nextIndex = focusableElements.length - 1;\n }\n\n // 次の要素が存在する場合、フォーカスを移動\n if (focusableElements[nextIndex]) {\n focusableElements[nextIndex].setFocus();\n }\n }\n\n public trigger(event: string): this;\n public trigger(event: string, e: Event): this;\n public trigger(event: Event): this;\n public trigger(event: string | Event, e?: Event): this {\n if (event instanceof Event) {\n window.dispatchEvent(event);\n return this;\n }\n window.dispatchEvent(e ?? new Event(event, { bubbles: true }));\n return this;\n }\n\n public on(event: string | string[], handle: (e: Event) => void | Promise<void>): this {\n const events = Array.isArray(event) ? event : [event];\n events.forEach(eventName => {\n if (!this._eventHandlers[eventName]) this._eventHandlers[eventName] = [];\n this._eventHandlers[eventName].push(handle);\n window.addEventListener(eventName, handle);\n });\n return this;\n }\n\n public off(event: string | string[], handle?: (e: Event) => void | Promise<void>): this {\n const events = Array.isArray(event) ? event : [event];\n events.forEach(eventName => {\n if (handle) {\n window.removeEventListener(eventName, handle);\n const handlers = this._eventHandlers[eventName]?.filter(h => h !== handle) ?? [];\n if (handlers.length > 0) {\n this._eventHandlers[eventName] = handlers;\n } else {\n delete this._eventHandlers[eventName];\n }\n } else {\n for (const h of this._eventHandlers[eventName] ?? []) {\n window.removeEventListener(eventName, h);\n }\n delete this._eventHandlers[eventName];\n }\n });\n return this;\n }\n\n public load(handle: (e: Event) => void | Promise<void>): this {\n return this.on(\"load\", handle);\n }\n\n public ready(handle: ((e: Event) => void | Promise<void>)): this {\n return this.on(\"cotomy:ready\", handle);\n }\n\n public resize(): this;\n public resize(handle: (event: Event) => void | Promise<void>): this;\n public resize(handle?: (event: Event) => void | Promise<void>): this {\n if (handle) {\n return this.on(\"resize\", handle);\n } else {\n return this.trigger(\"resize\");\n }\n }\n\n public scroll(): this;\n public scroll(handle: (event: Event) => void | Promise<void>): this;\n public scroll(handle?: (event: Event) => void | Promise<void>): this {\n if (handle) {\n return this.on(\"scroll\", handle);\n } else {\n return this.trigger(\"scroll\");\n }\n }\n\n public scrollTo(target: string | CotomyElement | HTMLElement, options: CotomyScrollOptions | Partial<CotomyScrollOptions> = {}): this {\n if (typeof target === \"string\") {\n const element = CotomyElement.first(target);\n element?.scrollIn(options);\n return this;\n }\n\n if (target instanceof CotomyElement) {\n target.scrollIn(options);\n return this;\n }\n\n new CotomyElement(target).scrollIn(options);\n return this;\n }\n\n public changeLayout(): this;\n public changeLayout(handle: (event: Event) => void | Promise<void>): this;\n public changeLayout(handle?: (event: Event) => void | Promise<void>): this {\n if (handle) {\n return this.on(\"cotomy:changelayout\", handle);\n } else {\n return this.trigger(\"cotomy:changelayout\");\n }\n }\n\n public pageshow(): this;\n public pageshow(handle: (event: PageTransitionEvent) => void | Promise<void>): this;\n public pageshow(handle?: (event: PageTransitionEvent) => void | Promise<void>): this {\n if (handle) {\n return this.on(\"pageshow\", handle as (e: Event) => void | Promise<void>);\n } else {\n return this.trigger(\"pageshow\");\n }\n }\n\n public get scrollTop(): number {\n return window.scrollY || document.documentElement.scrollTop;\n }\n\n public get scrollLeft(): number {\n return window.scrollX || document.documentElement.scrollLeft;\n }\n\n public get width(): number {\n return window.innerWidth;\n }\n\n public get height(): number {\n return window.innerHeight;\n }\n\n public get documentWidth(): number {\n return document.documentElement.scrollWidth;\n }\n\n public get documentHeight(): number {\n return document.documentElement.scrollHeight;\n }\n}\n","import dayjs from 'dayjs';\nimport timezone from 'dayjs/plugin/timezone';\nimport utc from 'dayjs/plugin/utc';\nimport { StatusCodes } from \"http-status-codes\";\nimport { CotomyDebugFeature, CotomyDebugSettings } from './debug';\nimport { CotomyElement } from \"./view\";\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\n\n\n//#region 例外クラス\n// 共通基底例外\nexport class CotomyApiException extends Error {\n constructor(\n public readonly status: number,\n public readonly message: string,\n public readonly response: CotomyApiResponse,\n public readonly bodyText: string = \"\"\n ) {\n super(message);\n this.name = \"CotomyApiException\";\n }\n}\n\n// クライアントエラー系\nexport class CotomyHttpClientError extends CotomyApiException {\n constructor(status: number, message: string, response: CotomyApiResponse, body = \"\") {\n super(status, message, response, body);\n this.name = \"CotomyHttpClientError\";\n }\n}\nexport class CotomyUnauthorizedException extends CotomyHttpClientError {\n constructor(status: number, message: string, response: CotomyApiResponse, body = \"\") {\n super(status, message, response, body);\n this.name = \"CotomyUnauthorizedException\";\n }\n}\nexport class CotomyForbiddenException extends CotomyHttpClientError {\n constructor(status: number, message: string, response: CotomyApiResponse, body = \"\") {\n super(status, message, response, body);\n this.name = \"CotomyForbiddenException\";\n }\n}\nexport class CotomyNotFoundException extends CotomyHttpClientError {\n constructor(status: number, message: string, response: CotomyApiResponse, body = \"\") {\n super(status, message, response, body);\n this.name = \"CotomyNotFoundException\";\n }\n}\nexport class CotomyConflictException extends CotomyHttpClientError {\n constructor(status: number, message: string, response: CotomyApiResponse, body = \"\") {\n super(status, message, response, body);\n this.name = \"CotomyConflictException\";\n }\n}\n\nexport class CotomyRequestInvalidException extends CotomyHttpClientError {\n constructor(status: number, message: string, response: CotomyApiResponse, body = \"\") {\n super(status, message, response, body);\n this.name = \"CotomyRequestInvalidException\";\n }\n}\n\nexport class CotomyTooManyRequestsException extends CotomyHttpClientError {\n constructor(status: number, message: string, response: CotomyApiResponse, body = \"\") {\n super(status, message, response, body);\n this.name = \"CotomyTooManyRequestsException\";\n }\n}\n\nexport class CotomyHttpServerError extends CotomyApiException {\n constructor(status: number, message: string, response: CotomyApiResponse, body = \"\") {\n super(status, message, response, body);\n this.name = \"CotomyHttpServerError\";\n }\n}\n\nexport class CotomyResponseJsonParseException extends Error {\n constructor(message: string = \"Failed to parse JSON response.\") {\n super(message);\n this.name = \"CotomyResponseJsonParseException\";\n }\n}\nexport class CotomyInvalidFormDataBodyException extends Error {\n constructor(message: string = \"Body must be an instance of FormData.\") {\n super(message);\n this.name = \"CotomyInvalidFormDataBodyException\";\n }\n}\n\n//#endregion 例外クラス\n\n\n//#region 定数定義\n\nclass Methods {\n public static readonly GET = 'GET';\n public static readonly POST = 'POST';\n public static readonly PUT = 'PUT';\n public static readonly PATCH = 'PATCH';\n public static readonly DELETE = 'DELETE';\n public static readonly HEAD = 'HEAD';\n public static readonly OPTIONS = 'OPTIONS';\n public static readonly TRACE = 'TRACE';\n public static readonly CONNECT = 'CONNECT';\n}\n\nclass ResponseMessages {\n private static readonly _responseMessages: { [key: number]: string } = {\n [StatusCodes.BAD_REQUEST]: \"There is an error in the input. Please check and try again.\",\n [StatusCodes.UNAUTHORIZED]: \"You are not authenticated. Please log in again.\",\n [StatusCodes.FORBIDDEN]: \"You do not have permission to use this feature. If necessary, please contact the administrator.\",\n [StatusCodes.NOT_FOUND]: \"The specified information could not be found. It may have been deleted. Please start over or contact the administrator.\",\n [StatusCodes.METHOD_NOT_ALLOWED]: \"This operation is currently prohibited on the server.\",\n [StatusCodes.NOT_ACCEPTABLE]: \"The request cannot be accepted. Processing has been stopped.\",\n [StatusCodes.PROXY_AUTHENTICATION_REQUIRED]: \"Proxy authentication is required for internet access.\",\n [StatusCodes.REQUEST_TIMEOUT]: \"The request timed out. Please try again.\",\n [StatusCodes.CONFLICT]: \"The identifier you are trying to register already exists. Please check the content and try again.\",\n [StatusCodes.PAYMENT_REQUIRED]: \"Payment is required for this operation. Please check.\",\n [StatusCodes.GONE]: \"The requested resource is no longer available.\",\n [StatusCodes.LENGTH_REQUIRED]: \"The Content-Length header field is required for the request.\",\n [StatusCodes.PRECONDITION_FAILED]: \"The request failed because the precondition was not met.\",\n [StatusCodes.UNSUPPORTED_MEDIA_TYPE]: \"The requested media type is not supported.\",\n [StatusCodes.EXPECTATION_FAILED]: \"The server cannot meet the Expect header of the request.\",\n [StatusCodes.MISDIRECTED_REQUEST]: \"The server cannot appropriately process this request.\",\n [StatusCodes.UNPROCESSABLE_ENTITY]: \"There is an error in the request content.\",\n [StatusCodes.LOCKED]: \"The requested resource is locked.\",\n [StatusCodes.FAILED_DEPENDENCY]: \"The request failed due to dependency on a previous failed request.\",\n [StatusCodes.UPGRADE_REQUIRED]: \"A protocol upgrade is required to perform this operation.\",\n [StatusCodes.PRECONDITION_REQUIRED]: \"This request requires a precondition.\",\n [StatusCodes.TOO_MANY_REQUESTS]: \"Too many requests have been sent in a short time. Please wait and try again.\",\n [StatusCodes.REQUEST_HEADER_FIELDS_TOO_LARGE]: \"The request headers are too large.\",\n [StatusCodes.INTERNAL_SERVER_ERROR]: \"An unexpected error occurred. Please try again later.\",\n [StatusCodes.BAD_GATEWAY]: \"The server is currently overloaded. Please wait and try again later.\",\n [StatusCodes.SERVICE_UNAVAILABLE]: \"The service is temporarily unavailable. Please try again later.\",\n [StatusCodes.GATEWAY_TIMEOUT]: \"The communication timed out. Please try again.\",\n [StatusCodes.HTTP_VERSION_NOT_SUPPORTED]: \"The current communication method is not supported.\",\n [StatusCodes.NOT_IMPLEMENTED]: \"The server does not support the requested functionality.\",\n [StatusCodes.INSUFFICIENT_STORAGE]: \"The server has insufficient storage.\",\n [StatusCodes.NETWORK_AUTHENTICATION_REQUIRED]: \"Network authentication is required.\",\n 413: \"The payload of the request is too large. Please check the size.\", // PAYLOAD_TOO_LARGE\n 414: \"The request URI is too long.\", // URI_TOO_LONG\n 416: \"The requested range is invalid.\", // RANGE_NOT_SATISFIABLE\n 508: \"The server detected a loop.\", // LOOP_DETECTED\n 510: \"The request does not include the required extensions.\", // NOT_EXTENDED\n };\n\n public static getMessage(status: number): string {\n return this._responseMessages[status] || `Unexpected error: ${status}`;\n }\n}\n\n//#endregion 定数定義\n\n\n\n\n\n\n\n//#region APIレスポンスクラス\n\nexport class CotomyApiResponse {\n private _object: any | null = null;\n private _text: string | null = null;\n\n public constructor(private readonly _response?: Response | null) {\n }\n\n public get available(): boolean {\n return !!this._response;\n }\n\n public get empty(): boolean {\n return !this._response || this._response.status === 0;\n }\n\n public get ok(): boolean {\n return this._response?.ok ?? false;\n }\n\n public get status(): number {\n return this._response?.status ?? 0;\n }\n\n public get statusText(): string {\n return this._response?.statusText ?? '';\n }\n\n public get headers(): Headers {\n return this._response?.headers ?? new Headers();\n }\n\n public async textAsync(): Promise<string> {\n if (!this._response) return \"\";\n return this._text ?? (this._text = await this._response?.text());\n }\n\n /**\n * Centralized helper to ensure response JSON is parsed exactly once.\n */\n private async _ensureJsonParsedAsync(defaultValue: any): Promise<any> {\n if (this._response && this._object === null) {\n try {\n const text = await this.textAsync();\n if (!text) {\n this._object = defaultValue;\n } else {\n this._object = JSON.parse(text);\n }\n } catch (error) {\n throw new CotomyResponseJsonParseException(\n `Failed to parse JSON response: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n }\n return this._object ?? defaultValue;\n }\n\n public async objectAsync<T = any>(defaultValue: T = {} as T): Promise<T> {\n return await this._ensureJsonParsedAsync(defaultValue);\n }\n\n public async arrayAsync<T = any>(defaultValue: T[] = []): Promise<T[]> {\n const parsed = await this._ensureJsonParsedAsync(defaultValue);\n return Array.isArray(parsed) ? parsed : defaultValue;\n }\n}\n\n//#endregion APIレスポンスクラス\n\n\n\n\n//#region APIから取得したデータの展開\n\nexport interface ICotomyBindNameGenerator {\n create(name: string, parent?: string): string;\n createIndex(parent: string | undefined, index: number): string;\n}\n\nexport class CotomyBracketBindNameGenerator implements ICotomyBindNameGenerator {\n create(name: string, parent?: string): string {\n return parent ? `${parent}[${name}]` : name;\n }\n\n createIndex(parent: string | undefined, index: number): string {\n return this.create(String(index), parent);\n }\n}\n\nexport class CotomyDotBindNameGenerator implements ICotomyBindNameGenerator {\n create(name: string, parent?: string): string {\n return parent ? `${parent}.${name}` : name;\n }\n\n createIndex(parent: string | undefined, index: number): string {\n return parent ? `${parent}[${index}]` : `[${index}]`;\n }\n}\n\nexport class CotomyViewRenderer {\n private static _defaultBindNameGenerator: ICotomyBindNameGenerator | null = null;\n public static get defaultBindNameGenerator(): ICotomyBindNameGenerator {\n return this._defaultBindNameGenerator ?? new CotomyBracketBindNameGenerator(); \n }\n public static set defaultBindNameGenerator(generator: ICotomyBindNameGenerator) {\n this._defaultBindNameGenerator = generator;\n }\n public static resetDefaultBindNameGenerator(): void {\n this._defaultBindNameGenerator = null;\n }\n\n \n public constructor(\n public readonly element: CotomyElement,\n public readonly bindNameGenerator: ICotomyBindNameGenerator = CotomyViewRenderer.defaultBindNameGenerator\n ) {\n }\n\n private _renderers: { [key: string]: (element: CotomyElement, value: any) => void } = {};\n public renderer(type: string, callback: (element: CotomyElement, value: any) => void): this {\n this._renderers[type] = callback;\n return this;\n }\n protected get renderers(): { [key: string]: (element: CotomyElement, value: any) => void } {\n this.initialize();\n return this._renderers;\n }\n\n private _initialized: boolean = false;\n protected get initialized(): boolean {\n return this._initialized;\n }\n\n protected initialize(): this {\n if (!this.initialized) {\n this.renderer(\"mail\", (element, value) => {\n if (value) {\n new CotomyElement(/* html */`<a href=\"mailto:${value}\">${value}</a>`).appendTo(element);\n }\n });\n\n this.renderer(\"tel\", (element, value) => {\n if (value) {\n new CotomyElement(/* html */`<a href=\"tel:${value}\">${value}</a>`).appendTo(element);\n }\n });\n \n this.renderer(\"url\", (element, value) => {\n if (value) {\n new CotomyElement(/* html */`<a href=\"${value}\" target=\"_blank\">${value}</a>`).appendTo(element);\n }\n });\n\n this.renderer(\"number\", (element, value) => {\n if (value !== undefined && value !== null) {\n // ISO 4217 通貨コード\n const currency = element.attribute(\"data-cotomy-currency\")\n || element.closest(\"[data-cotomy-currency]\")?.attribute(\"data-cotomy-currency\");\n const fractionDigitsAttribute = element.attribute(\"data-cotomy-fraction-digits\")\n || element.closest(\"[data-cotomy-fraction-digits]\")?.attribute(\"data-cotomy-fraction-digits\");\n const fractionDigits = fractionDigitsAttribute ? Number.parseInt(fractionDigitsAttribute, 10) : undefined;\n const hasFractionDigits = Number.isFinite(fractionDigits)\n && fractionDigits && fractionDigits >= 0 && fractionDigits <= 20;\n\n const options: Intl.NumberFormatOptions = {\n ...(currency ? { style: \"currency\", currency } : {}),\n ...(hasFractionDigits ? { minimumFractionDigits: fractionDigits, maximumFractionDigits: fractionDigits } : {}),\n };\n\n const languages = (navigator.languages && navigator.languages.length ? navigator.languages : [navigator.language]).filter(Boolean);\n const localeAttribute = element.attribute(\"data-cotomy-locale\")\n || element.closest(\"[data-cotomy-locale]\")?.attribute(\"data-cotomy-locale\")\n || this.element.attribute(\"data-cotomy-locale\")\n || this.element.closest(\"[data-cotomy-locale]\")?.attribute(\"data-cotomy-locale\")\n || languages[0]\n || \"en-US\";\n const locale = localeAttribute.includes(\"-\") ? localeAttribute.split(\"-\")[0] : localeAttribute;\n\n element.text = new Intl.NumberFormat(locale, options).format(value);\n }\n });\n\n this.renderer(\"utc\", (element, value) => {\n if (value) {\n const hasOffset = /([+-]\\d{2}:\\d{2}|Z)$/.test(value);\n const date = hasOffset ? new Date(value) : new Date(`${value}Z`);\n if (!isNaN(date.getTime())) {\n const format = element.attribute(\"data-cotomy-format\") ?? \"YYYY/MM/DD HH:mm\";\n const timezone = element.attribute(\"data-cotomy-timezone\")\n || element.closest(\"[data-cotomy-timezone]\")?.attribute(\"data-cotomy-timezone\");\n const dt = dayjs(date);\n element.text = timezone && timezone.trim() !== \"\" ? dt.tz(timezone).format(format) : dt.format(format);\n }\n }\n });\n\n this.renderer(\"date\", (element, value) => {\n if (value) {\n const date = new Date(value);\n if (!isNaN(date.getTime())) {\n const format = element.attribute(\"data-cotomy-format\") ?? \"YYYY/MM/DD\";\n const timezone = element.attribute(\"data-cotomy-timezone\")\n || element.closest(\"[data-cotomy-timezone]\")?.attribute(\"data-cotomy-timezone\");\n const dt = dayjs(date);\n element.text = timezone && timezone.trim() !== \"\" ? dt.tz(timezone).format(format) : dt.format(format);\n }\n }\n });\n\n this._initialized = true;\n }\n return this;\n }\n\n protected bindPrimitiveValue(propertyName: string, value: any): void {\n this.element.find(`[data-cotomy-bind=\"${propertyName}\" i]`).forEach(element => {\n if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.Bind)) {\n console.debug(`Binding data to element [data-cotomy-bind=\"${propertyName}\"]:`, value);\n }\n const type = element.attribute(\"data-cotomy-bindtype\")?.toLowerCase();\n if (type && this.renderers[type]) {\n this.renderers[type](element, value);\n } else {\n element.text = String(value ?? \"\");\n }\n });\n }\n\n protected async applyArrayAsync(values: any[], propertyName: string): Promise<void> {\n for (let index = 0; index < values.length; index++) {\n const item = values[index];\n const itemName = this.bindNameGenerator.createIndex(propertyName, index);\n if (Array.isArray(item)) {\n await this.applyArrayAsync(item, itemName);\n continue;\n }\n if (item && typeof item === \"object\") {\n await this.applyObjectAsync(item, itemName);\n continue;\n }\n this.bindPrimitiveValue(itemName, item);\n }\n }\n\n protected async applyObjectAsync(target: any, propertyName: string | undefined = undefined): Promise<void> {\n if (!propertyName) {\n this.element.find(\"[data-cotomy-bind]\").forEach(e => e.clear());\n }\n for (const [key, value] of Object.entries(await target)) {\n const pname = this.bindNameGenerator.create(key, propertyName);\n if (Array.isArray(value)) {\n await this.applyArrayAsync(value, pname);\n continue;\n }\n if (value && typeof value === \"object\") {\n await this.applyObjectAsync(value, pname);\n continue;\n }\n this.bindPrimitiveValue(pname, value);\n }\n }\n\n public async applyAsync(respose: CotomyApiResponse): Promise<this> {\n if (!respose.available) {\n throw new Error(\"Response is not available.\");\n }\n\n await this.applyObjectAsync(await respose.objectAsync());\n return this;\n }\n}\n\n//#endregion\n\n\n\n//#region インターフェース定義\n\nexport interface ICotomyApiOptions {\n baseUrl?: string | null;\n headers?: Record<string, string> | null;\n credentials?: RequestCredentials | null;\n redirect?: RequestRedirect | null;\n cache?: RequestCache | null;\n referrerPolicy?: ReferrerPolicy | null;\n mode?: RequestMode | null;\n keepalive?: boolean | null;\n integrity?: string | null;\n}\n\nexport interface ICotomyRestSubmitForm {\n method: string;\n action: string;\n body: globalThis.FormData | Record<string, string> | any;\n}\n\n//#endregion インターフェース定義\n\n\n\n\nexport class CotomyApi {\n private readonly _abortController: AbortController = new AbortController();\n\n public constructor(private readonly _options: ICotomyApiOptions = {\n baseUrl: null, headers: null, credentials: null, redirect: null,\n cache: null, referrerPolicy: null, mode: null, keepalive: true,\n integrity: '', }) {\n }\n\n public get baseUrl(): string {\n return this._options.baseUrl || '';\n }\n\n public get headers(): Record<string, string> {\n return this._options.headers || {};\n }\n\n public get credentials(): RequestCredentials {\n return this._options.credentials || 'same-origin';\n }\n\n public get redirect(): RequestRedirect {\n return this._options.redirect || 'follow';\n }\n\n public get cache(): RequestCache {\n return this._options.cache || 'no-cache';\n }\n\n public get referrerPolicy(): ReferrerPolicy {\n return this._options.referrerPolicy || 'no-referrer';\n }\n\n public get mode(): RequestMode {\n return this._options.mode || 'cors';\n }\n\n public get keepalive(): boolean {\n return this._options.keepalive ?? true;\n }\n\n public get integrity(): string {\n return this._options.integrity || '';\n }\n\n public get abortController(): AbortController {\n return this._abortController;\n }\n\n\n private async requestAsync<T extends CotomyApiResponse = CotomyApiResponse>(method: string, path: string, body?: globalThis.FormData | Record<string, string> | any, signal?: AbortSignal, responseType?: new (response?: Response | null) => T): Promise<T> {\n if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.Api)) {\n console.debug(`API request: ${method} ${path}`, { body, headers: this.headers });\n }\n\n //#region Content-Type毎のbody変換処理\n\n const bodyTransformers: { [key: string]: (body: globalThis.FormData | Record<string, string> | any) => any } = {\n \"application/json\": (body) => JSON.stringify(body),\n \"application/x-www-form-urlencoded\": (body) => {\n if (body instanceof globalThis.FormData) {\n let params = new URLSearchParams();\n body.forEach((value, key) => {\n params.append(key, String(value));\n });\n return params.toString();\n } else {\n return new URLSearchParams(body).toString();\n }\n },\n \"multipart/form-data\": (body) => {\n if (body instanceof globalThis.FormData) {\n return body;\n }\n const formData = new globalThis.FormData();\n for (const [key, value] of Object.entries(body)) {\n formData.append(key, String(value));\n }\n return formData;\n } \n };\n\n //#endregion\n\n\n // 先頭がアルファベットの場合は絶対または相対URLとみなす\n // それ以外はベースURLを使用して組み立てる\n const url = /^[a-zA-Z]/.test(path) ? path\n : `${(this.baseUrl || '').replace(/\\/$/, '')}/${path.replace(/^\\//, '')}`;\n const headers = new Headers(this.headers);\n\n if (headers.has('Content-Type') && headers.get(\"Content-Type\") === \"multipart/form-data\") {\n // multipart/form-dataの場合はbodyをFormDataとして送信するため、Content-Typeヘッダーを削除する\n headers.delete('Content-Type');\n }\n\n const ct = headers.get('Content-Type') || \"multipart/form-data\";\n if (ct === 'multipart/form-data' && body && !(body instanceof globalThis.FormData)) {\n if (typeof body !== 'object' || Array.isArray(body)) {\n throw new CotomyInvalidFormDataBodyException(\n 'Body must be FormData or a plain object when using multipart/form-data.'\n );\n }\n }\n \n const responseClass = responseType ?? CotomyApiResponse as new (response?: Response | null) => T;\n const response = new responseClass(await fetch(url, {\n method,\n headers,\n credentials: this.credentials,\n body: body ? (bodyTransformers[ct] ? bodyTransformers[ct](body) : body) : undefined,\n signal: signal ?? this._abortController.signal,\n redirect: this.redirect,\n cache: this.cache,\n referrerPolicy: this.referrerPolicy,\n mode: this.mode,\n keepalive: this.keepalive,\n integrity: this.integrity,\n }));\n\n if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.Api)) {\n console.debug(`response body: ${response.status} ${response.statusText}`, await response.textAsync());\n }\n\n // 400番台と500番台のエラーハンドリング\n if (response.status >= 400 && response.status < 600) {\n const errorBody = await response.textAsync().catch(() => 'No response body available');\n const errorMessage = response.statusText || ResponseMessages.getMessage(response.status) || `Unexpected error: ${response.status}`;\n if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.Api)) {\n console.error(`API request failed: ${errorMessage}`, response, errorBody);\n }\n switch (response.status) {\n case StatusCodes.BAD_REQUEST:\n case StatusCodes.UNPROCESSABLE_ENTITY:\n throw new CotomyRequestInvalidException(response.status, errorMessage, response, errorBody);\n case StatusCodes.UNAUTHORIZED:\n throw new CotomyUnauthorizedException(response.status, errorMessage, response, errorBody);\n case StatusCodes.FORBIDDEN:\n throw new CotomyForbiddenException(response.status, errorMessage, response, errorBody);\n case StatusCodes.NOT_FOUND:\n throw new CotomyNotFoundException(response.status, errorMessage, response, errorBody);\n case StatusCodes.CONFLICT:\n case StatusCodes.GONE:\n throw new CotomyConflictException(response.status, errorMessage, response, errorBody);\n case StatusCodes.TOO_MANY_REQUESTS:\n throw new CotomyTooManyRequestsException(response.status, errorMessage, response, errorBody);\n default:\n if (response.status < 500) {\n throw new CotomyHttpClientError(response.status, errorMessage, response, errorBody);\n } else {\n throw new CotomyHttpServerError(response.status, errorMessage, response, errorBody);\n }\n }\n }\n\n return response as T;\n }\n\n\n //#region HTTPメソッド\n\n public async getAsync(path: string, parameters?: globalThis.FormData | Record<string, string | number>): Promise<CotomyApiResponse> {\n let queryString = '';\n if (parameters instanceof globalThis.FormData) {\n let params = new URLSearchParams();\n parameters.forEach((value, key) => {\n params.append(key, String(value));\n });\n queryString = params.toString();\n } else if (parameters) {\n queryString = new URLSearchParams(\n Object.fromEntries(\n Object.entries(parameters).map(([key, value]) => [key, String(value)])\n )\n ).toString();\n }\n const fullUrl = queryString ? `${path}?${queryString}` : path;\n if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.Api)) {\n console.debug(`GET request to: ${fullUrl}`);\n }\n return this.requestAsync(Methods.GET, fullUrl);\n }\n\n public async postAsync(path: string, body: globalThis.FormData | Record<string, string | number> | any): Promise<CotomyApiResponse> {\n return this.requestAsync(Methods.POST, path, body);\n }\n\n public async putAsync(path: string, body: globalThis.FormData | Record<string, string | number> | any): Promise<CotomyApiResponse> {\n return this.requestAsync(Methods.PUT, path, body);\n }\n\n public async patchAsync(path: string, body: globalThis.FormData | Record<string, string | number> | any): Promise<CotomyApiResponse> {\n return this.requestAsync(Methods.PATCH, path, body);\n }\n\n public async deleteAsync(path: string): Promise<CotomyApiResponse> {\n return this.requestAsync(Methods.DELETE, path);\n }\n\n public async headAsync(path: string): Promise<CotomyApiResponse> {\n return this.requestAsync(Methods.HEAD, path);\n }\n\n public async optionsAsync(path: string): Promise<CotomyApiResponse> {\n return this.requestAsync(Methods.OPTIONS, path);\n }\n\n public async traceAsync(path: string): Promise<CotomyApiResponse> {\n return this.requestAsync(Methods.TRACE, path);\n }\n\n public async connectAsync(path: string): Promise<CotomyApiResponse> {\n return this.requestAsync(Methods.CONNECT, path);\n }\n\n public async submitAsync(form: ICotomyRestSubmitForm): Promise<CotomyApiResponse> {\n return form.method.toUpperCase() === Methods.GET ? this.getAsync(form.action, form.body)\n : this.requestAsync(form.method.toUpperCase(), form.action, form.body);\n }\n\n //#endregion HTTPメソッド\n}\n","import dayjs from \"dayjs\";\nimport { StatusCodes } from \"http-status-codes\";\nimport { CotomyApi, CotomyApiException, CotomyApiResponse, CotomyNotFoundException, CotomyViewRenderer, ICotomyBindNameGenerator } from \"./api\";\nimport { CotomyDebugFeature, CotomyDebugSettings } from \"./debug\";\nimport { CotomyElement, CotomyWindow } from \"./view\";\n\n\n\n\nexport abstract class CotomyForm extends CotomyElement {\n public override generateId(prefix: string = \"__cotomy_form__\"): this {\n return super.generateId(prefix);\n }\n\n\n //#region フォームの基本情報\n\n protected get method(): string {\n return this.attribute(\"method\") ?? \"get\";\n }\n\n public get actionUrl(): string {\n return this.attribute(\"action\") ?? location.pathname + location.search;\n }\n\n //#endregion\n\n\n\n //#region フォームの再読み込み\n\n public async reloadAsync(): Promise<void> {\n CotomyWindow.instance.reload();\n }\n\n public get autoReload(): boolean {\n return this.attribute(\"data-cotomy-autoreload\") !== \"false\";\n }\n\n public set autoReload(value: boolean) {\n if (value) {\n this.attribute(\"data-cotomy-autoreload\", null);\n } else {\n this.attribute(\"data-cotomy-autoreload\", \"false\");\n }\n }\n\n //#endregion\n\n\n\n //#region フォームの構築\n\n public get initialized(): boolean {\n return this.hasAttribute(\"data-cotomy-initialized\");\n }\n\n public initialize(): this {\n if (!this.initialized) {\n this.on(\"submit\", async e => {\n e.preventDefault();\n e.stopPropagation();\n await this.submitAsync();\n });\n\n this.attribute(\"data-cotomy-initialized\", \"\");\n }\n return this;\n }\n\n //#endregion\n\n\n\n //#region Submit\n\n public abstract submitAsync(): Promise<void>;\n\n //#endregion\n}\n\n\n\nexport class CotomyQueryForm extends CotomyForm {\n protected override get method(): string {\n return \"get\"; // QueryFormはGETメソッドを使用することが前提\n }\n\n\n public override async submitAsync(): Promise<void> {\n const url = this.actionUrl;\n\n // クエリパラメータを連想配列にする\n const queryParams: { [key: string]: string } = {};\n const queryString = url.split(\"?\")[1];\n if (queryString) {\n queryString.split(\"&\").forEach(param => {\n const [key, value] = param.split(\"=\");\n if (key && value) {\n queryParams[key] = decodeURIComponent(value);\n }\n });\n }\n\n // フォームの入力値をクエリパラメータに追加\n this.find(\"[name]\").forEach(input => {\n const name = input.attribute(\"name\");\n if (name) {\n const value = input.value;\n if (value) {\n queryParams[name] = encodeURIComponent(value);\n } else {\n delete queryParams[name]; // 空の値は削除\n }\n }\n });\n\n // クエリパラメータを再構築\n const newQueryString = Object.entries(queryParams)\n .map(([key, value]) => `${key}=${value}`)\n .join(\"&\");\n\n location.href = `${url.split(\"?\")[0]}?${newQueryString}`;\n }\n}\n\n\nexport class CotomyApiFailedEvent extends Event {\n public constructor(private _response: CotomyApiResponse, eventName: string = \"cotomy:apifailed\") {\n super(eventName, { bubbles: true, cancelable: true });\n }\n\n public get response(): CotomyApiResponse {\n return this._response;\n }\n}\n\n\nexport class CotomyApiForm extends CotomyForm {\n public apiClient(): CotomyApi {\n return new CotomyApi();\n }\n\n public override get actionUrl(): string {\n return this.attribute(\"action\")!;\n }\n\n\n\n //#region API Submit\n\n public apiFailed(handle: ((event: CotomyApiFailedEvent) => void | Promise<void>)): this {\n this.on(\"cotomy:apifailed\", async e => {\n await handle(e as CotomyApiFailedEvent);\n });\n return this;\n }\n\n protected triggerApiFailedEvent(response: CotomyApiResponse): void {\n this.trigger(\"cotomy:apifailed\", new CotomyApiFailedEvent(response));\n if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.Api)) {\n console.error(\"API request failed:\", response);\n }\n }\n\n public submitFailed(handle: ((event: CotomyApiFailedEvent) => void | Promise<void>)): this {\n this.on(\"cotomy:submitfailed\", async e => {\n await handle(e as CotomyApiFailedEvent);\n });\n return this;\n }\n\n protected triggerSubmitFailedEvent(response: CotomyApiResponse): void {\n this.trigger(\"cotomy:submitfailed\", new CotomyApiFailedEvent(response, \"cotomy:submitfailed\"));\n if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.Api)) {\n console.error(\"Submit failed:\", response);\n }\n }\n\n protected override get method(): string {\n return this.attribute(\"method\") ?? \"post\";\n }\n\n public formData(): FormData {\n const formElement = <HTMLFormElement>this.element;\n const formData = new FormData(formElement);\n\n this.find(\"input[type=datetime-local][name]:not([disabled])\").forEach(input => {\n const localDateTime = input.value;\n if (localDateTime) {\n const date = new Date(localDateTime);\n if (!isNaN(date.getTime())) {\n formData.set(input.attribute(\"name\")!, dayjs(date).format(\"YYYY-MM-DDTHH:mmZ\"));\n }\n }\n });\n\n if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.FormData)) {\n console.debug(\"FormData:\", Array.from(formData.entries()));\n }\n\n return formData;\n };\n\n public override async submitAsync(): Promise<void> {\n const formData = this.formData();\n await this.submitToApiAsync(formData);\n }\n\n protected async submitToApiAsync(formData: FormData): Promise<CotomyApiResponse> {\n const api = this.apiClient();\n\n try {\n const response = await api.submitAsync({\n method: this.method,\n action: this.actionUrl,\n body: formData,\n });\n\n return response;\n } catch (error) {\n if (error instanceof CotomyApiException) {\n this.triggerApiFailedEvent(error.response);\n this.triggerSubmitFailedEvent(error.response);\n }\n throw error;\n }\n }\n\n //#endregion\n}\n\n\n\nexport class CotomyEntityApiForm extends CotomyApiForm {\n\n public get entityKey(): string | undefined {\n return this.attribute(\"data-cotomy-entity-key\") || undefined;\n }\n\n protected get requiresEntityKey(): boolean {\n return this.attribute(\"data-cotomy-identify\") !== \"false\";\n }\n\n protected get hasEntityKey(): boolean {\n return !!this.entityKey;\n }\n\n public override get actionUrl(): string {\n const action = this.attribute(\"action\")!;\n const normalized = action.replace(/\\/+$/, \"\");\n\n if (!this.entityKey) {\n return action.endsWith(\"/\") ? action : `${normalized}/`;\n }\n\n return `${normalized}/${encodeURIComponent(this.entityKey)}`;\n }\n\n protected override get method(): string {\n if (this.hasAttribute(\"method\") && this.attribute(\"method\") !== \"\") {\n return this.attribute(\"method\")!;\n }\n\n return this.hasEntityKey ? \"put\" : \"post\";\n }\n\n\n //#region データ識別\n\n protected setEntityKey(response: CotomyApiResponse) {\n if (this.requiresEntityKey && response.status === StatusCodes.CREATED) {\n if (this.hasEntityKey) {\n if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.FormLoad)) {\n console.warn(\"Entity key already exists, but server responded with 201 Created. Possible duplicate POST.\");\n }\n return;\n }\n\n const location = response.headers.get(\"Location\");\n if (!location) return;\n\n const normalize = (url: string) => {\n const s = url.replace(/[?#].*$/, \"\");\n return s.endsWith(\"/\") ? s.slice(0, -1) : s;\n };\n\n const toPath = (u: string) => {\n try { return new URL(u, location).pathname; } catch { return u; }\n };\n\n const baseAction = normalize(toPath(this.attribute(\"action\")!));\n const locPath = normalize(toPath(location));\n const actionParts = baseAction.split(\"/\");\n const locationParts = locPath.split(\"/\");\n const isPrefix = locationParts.length >= actionParts.length && actionParts.every((p, i) => p === locationParts[i]);\n if (!isPrefix) {\n throw new Error(`Location path does not start with action path. action=\"${baseAction}\", location=\"${locPath}\"`);\n }\n\n const addedParts = locationParts.slice(actionParts.length).filter(Boolean);\n if (addedParts.length === 1 && addedParts[0]) {\n this.attribute(\"data-cotomy-entity-key\", addedParts[0]);\n } else {\n const msg = `Location does not contain a single entity key segment.\n action=\"${baseAction}\", location=\"${locPath}\", added=[\"${addedParts.join('\",\"')}\"]`;\n throw new Error(msg);\n }\n }\n }\n\n protected override async submitToApiAsync(formData: FormData): Promise<CotomyApiResponse> {\n const response = await super.submitToApiAsync(formData);\n\n // APIのレスポンスからidを設定\n if (this.requiresEntityKey && response.status === StatusCodes.CREATED) {\n this.setEntityKey(response);\n }\n\n return response;\n }\n\n //#endregion\n}\n\n\n\nexport class CotomyEntityFillApiForm extends CotomyEntityApiForm {\n private _fillers: { [key: string]: (input: CotomyElement, value: any) => void } = {};\n\n public filler(type: string, func: (input: CotomyElement, value: any) => void): this {\n this._fillers[type] = func;\n return this;\n }\n\n public override initialize(): this {\n if (!this.initialized) {\n super.initialize();\n\n this.filler(\"datetime-local\", (input, value) => {\n const hasOffset = /[+-]\\d{2}:\\d{2}$/.test(value);\n const date = hasOffset ? new Date(value) : new Date(`${value}Z`);\n if (!isNaN(date.getTime())) {\n input.value = dayjs(date).format(\"YYYY-MM-DDTHH:mm\");\n } else {\n input.value = \"\";\n }\n });\n\n this.filler(\"checkbox\", (input, value) => {\n input.attribute(\"checked\", null);\n if (value) {\n input.attribute(\"checked\", \"\");\n }\n });\n\n this.filler(\"radio\", (input, value) => {\n input.attribute(\"checked\", null);\n if (input.value === value) {\n input.attribute(\"checked\", \"\");\n }\n });\n\n CotomyWindow.instance.ready(async () => {\n await this.loadAsync();\n });\n }\n return this;\n }\n\n\n\n\n\n public override async reloadAsync(): Promise<void> {\n await this.loadAsync();\n }\n\n protected get loadActionUrl(): string {\n return this.actionUrl;\n }\n\n protected bindNameGenerator(): ICotomyBindNameGenerator {\n return CotomyViewRenderer.defaultBindNameGenerator;\n }\n\n public renderer(): CotomyViewRenderer {\n return new CotomyViewRenderer(this, this.bindNameGenerator());\n }\n\n protected get canLoad(): boolean {\n return this.hasEntityKey;\n }\n\n protected async loadAsync(): Promise<CotomyApiResponse> {\n if (!this.canLoad) {\n return new CotomyApiResponse();\n }\n\n const api = this.apiClient();\n try {\n const response = await api.getAsync(this.loadActionUrl);\n await this.fillAsync(response);\n return response;\n } catch (error) {\n if (error instanceof CotomyApiException) {\n this.triggerApiFailedEvent(error.response);\n }\n if (error instanceof CotomyNotFoundException) {\n return error.response;\n }\n throw error;\n }\n }\n\n protected applyValueToInputs(pname: string, value: any): void {\n this.find(`input[name=\"${pname}\" i]:not([data-cotomy-fill=\"false\"]):not([multiple]),\n textarea[name=\"${pname}\" i]:not([data-cotomy-fill=\"false\"]), \n select[name=\"${pname}\" i]:not([data-cotomy-fill=\"false\"]):not([multiple])`).forEach(input => {\n if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.Fill)) {\n console.debug(`Filling input[name=\"${pname}\"] with value:`, value);\n }\n const type = input.attribute(\"type\")?.toLowerCase();\n if (type && this._fillers[type]) {\n this._fillers[type](input, value);\n } else {\n input.value = String(value || \"\");\n }\n });\n }\n\n protected async fillArrayAsync(bindNameGenerator: ICotomyBindNameGenerator, values: any[], propertyName: string): Promise<void> {\n for (let index = 0; index < values.length; index++) {\n const item = values[index];\n const itemName = bindNameGenerator.createIndex(propertyName, index);\n if (Array.isArray(item)) {\n await this.fillArrayAsync(bindNameGenerator, item, itemName);\n continue;\n }\n if (item && typeof item === \"object\") {\n await this.fillObjectAsync(bindNameGenerator, item, itemName);\n continue;\n }\n this.applyValueToInputs(itemName, item);\n }\n }\n\n protected async fillObjectAsync(bindNameGenerator: ICotomyBindNameGenerator, target: any, propertyName: string | undefined = undefined): Promise<void> {\n for (const [key, value] of Object.entries(target)) {\n if (key.endsWith('[]')) {\n continue;\n }\n\n const pname = bindNameGenerator.create(key, propertyName);\n if (Array.isArray(value)) {\n await this.fillArrayAsync(bindNameGenerator, value, pname);\n continue;\n }\n if (value && typeof value === \"object\") {\n await this.fillObjectAsync(bindNameGenerator, value, pname);\n continue;\n }\n\n this.applyValueToInputs(pname, value);\n }\n }\n\n protected async fillAsync(response: CotomyApiResponse): Promise<void> {\n if (response.ok && response.available) {\n await this.fillObjectAsync(this.bindNameGenerator(), await response.objectAsync());\n await this.renderer().applyAsync(response);\n }\n\n // textareaを自動リサイズ\n this.find(\"textarea\").forEach(e => e.input());\n }\n\n protected override async submitToApiAsync(formData: globalThis.FormData): Promise<CotomyApiResponse> {\n const response = await super.submitToApiAsync(formData);\n if (response.ok) {\n await this.fillAsync(response);\n }\n return response;\n }\n}\n","import dayjs from \"dayjs\";\nimport timezone from 'dayjs/plugin/timezone';\nimport utc from 'dayjs/plugin/utc';\nimport { ICotomyBindNameGenerator, CotomyViewRenderer } from \"./api\";\nimport { CotomyDebugFeature, CotomyDebugSettings } from \"./debug\";\nimport { CotomyForm } from \"./form\";\nimport { CotomyElement, CotomyWindow } from \"./view\";\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\n\nexport class CotomyUrl {\n public static location() {\n return new CotomyUrl();\n }\n\n private _url: URL;\n\n public constructor(url: string | null = null) {\n this._url = new URL(url ?? (location.pathname + location.search), location.origin);\n }\n\n public get url(): string {\n return this._url.pathname + this._url.search;\n }\n\n public get path(): string {\n return this._url.pathname;\n }\n\n public get segments(): string[] {\n return this._url.pathname.split(\"/\").filter(s => s.length > 0);\n }\n\n public get query(): string {\n return this._url.search.replace(/^\\?/, \"\");\n }\n\n public get parameters(): { [key: string]: string } {\n const dict: Record<string, string> = {};\n this._url.searchParams.forEach((value, key) => { dict[key] = value; });\n return dict;\n }\n\n public redirect() {\n window.location.href = this.url;\n }\n\n public replace(): void {\n window.location.replace(this.url);\n }\n\n public replaceState(state: any = null, title: string = \"\"): void {\n window.history.replaceState(state, title, this.url);\n }\n}\n\n\n\n\n\nexport class CotomyPageController {\n private static _instance: CotomyPageController | null = null;\n\n public static set<T extends CotomyPageController = CotomyPageController>(type: new () => T): T {\n if (this._instance) {\n throw new Error(\"PageController is already initialized.\");\n }\n this._instance = new type();\n CotomyWindow.instance.load(async () => {\n if (CotomyDebugSettings.isEnabled(CotomyDebugFeature.Page)) {\n console.debug(\"CotomyPageController initialize.\");\n }\n CotomyWindow.instance.initialize();\n await CotomyPageController._instance!.initializeAsync();\n CotomyWindow.instance.trigger(\"cotomy:ready\");\n });\n return this._instance as T;\n }\n\n public static get<T extends CotomyPageController = CotomyPageController>(): T {\n if (!(this._instance instanceof CotomyPageController)) {\n throw new Error(\"PageController is not initialized. Use CotomyPageController.set() to initialize it.\");\n }\n return this._instance as T;\n }\n\n\n private _forms: { [key: string]: CotomyForm } = {};\n\n protected get defaultBindNameGenerator(): ICotomyBindNameGenerator {\n return CotomyViewRenderer.defaultBindNameGenerator;\n }\n\n protected set defaultBindNameGenerator(value: ICotomyBindNameGenerator) {\n CotomyViewRenderer.defaultBindNameGenerator = value;\n }\n\n protected setForm<T extends CotomyForm = CotomyForm>(form: T): T {\n if (!form.id) {\n form.generateId();\n }\n this._forms[form.id!] = form;\n form.removed(() => {\n delete this._forms[form.id!];\n });\n return form.initialize();\n }\n\n protected getForm<T extends CotomyForm = CotomyForm>(id: string, type?: { new(...args: any[]): T }): T | undefined {\n const form = this._forms[id];\n if (!form) return undefined;\n\n if (type && !(form instanceof type)) {\n throw new Error(`Form \"${id}\" is not instance of expected type.`);\n }\n\n return form as T;\n }\n\n protected get forms(): CotomyForm[] {\n return Object.values(this._forms);\n }\n\n protected async restoreAsync(): Promise<void> {\n for (const f of this.forms) {\n if (CotomyWindow.instance.reloading) {\n break;\n }\n if (f.autoReload) {\n await f.reloadAsync();\n }\n }\n }\n\n private isValidUtcDateString(value: string): boolean {\n return dayjs(value).isValid() && (value.endsWith(\"Z\") || /[+-]\\d{2}:\\d{2}$/.test(value));\n }\n\n private initializeDateTimeElements() {\n CotomyWindow.instance.body.find(\"[data-cotomy-datetime]:not([data-cotomy-formatted])\").forEach(e => {\n if (dayjs(e.text).isValid()) {\n const timezone = e.attribute(\"data-cotomy-timezone\")\n || e.closest(\"[data-cotomy-timezone]\")?.attribute(\"data-cotomy-timezone\");\n const format: string = e.attribute(\"data-cotomy-format\") ?? \"YYYY-MM-DD HH:mm\";\n const lt = this.isValidUtcDateString(e.text) ? dayjs(e.text) : dayjs(`${dayjs(e.text).format(\"YYYY-MM-DDTHH:mm:ss\")}Z`);\n const dt = e.attribute(\"data-cotomy-datetime\") === \"local\" ? lt : lt.utc();\n e.text = (timezone && timezone.trim() !== \"\") ? dt.tz(timezone).format(format) : dt.format(format);\n e.attribute(\"data-cotomy-formatted\", \"\");\n }\n });\n }\n\n\n protected async initializeAsync(): Promise<void> {\n this.initializeDateTimeElements();\n\n CotomyWindow.instance.pageshow(async e => {\n if (e.persisted) {\n await this.restoreAsync();\n if (CotomyWindow.instance.reloading) {\n e.stopImmediatePropagation();\n }\n }\n });\n }\n\n public get body(): CotomyElement {\n return CotomyWindow.instance.body;\n }\n\n protected get url(): CotomyUrl {\n return new CotomyUrl();\n }\n}\n","export {\n CotomyApi,\n CotomyApiException,\n CotomyApiResponse,\n CotomyBracketBindNameGenerator,\n CotomyConflictException,\n CotomyDotBindNameGenerator,\n CotomyForbiddenException,\n CotomyHttpClientError,\n CotomyHttpServerError,\n CotomyInvalidFormDataBodyException,\n CotomyNotFoundException,\n CotomyRequestInvalidException, CotomyResponseJsonParseException, CotomyTooManyRequestsException, CotomyUnauthorizedException,\n CotomyViewRenderer,\n ICotomyBindNameGenerator\n} from \"./api\";\nexport {\n CotomyDebugFeature,\n CotomyDebugSettings\n} from \"./debug\";\nexport {\n CotomyApiFailedEvent, CotomyApiForm, CotomyEntityApiForm, CotomyEntityFillApiForm,\n CotomyForm,\n CotomyQueryForm\n} from \"./form\";\nexport {\n CotomyPageController,\n CotomyUrl\n} from \"./page\";\nexport {\n CotomyElement,\n CotomyMetaElement,\n CotomyWindow\n} from \"./view\";\n\n"],"names":[],"sourceRoot":""}
|