capacity-attest 0.7.0 → 0.9.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.
Files changed (43) hide show
  1. package/README.md +36 -1
  2. package/README.nl.md +2 -1
  3. package/dist/bazaar-discovery.d.ts +3 -0
  4. package/dist/bazaar-discovery.d.ts.map +1 -0
  5. package/dist/bazaar-discovery.js +110 -0
  6. package/dist/bazaar-discovery.js.map +1 -0
  7. package/dist/eas.d.ts +1 -1
  8. package/dist/eas.d.ts.map +1 -1
  9. package/dist/eas.js +8 -1
  10. package/dist/eas.js.map +1 -1
  11. package/dist/erc8004-reputation.d.ts +7 -2
  12. package/dist/erc8004-reputation.d.ts.map +1 -1
  13. package/dist/erc8004-reputation.js +7 -2
  14. package/dist/erc8004-reputation.js.map +1 -1
  15. package/dist/erc8004.d.ts +2 -0
  16. package/dist/erc8004.d.ts.map +1 -1
  17. package/dist/erc8004.js +14 -0
  18. package/dist/erc8004.js.map +1 -1
  19. package/dist/http-server-bin.d.ts +3 -0
  20. package/dist/http-server-bin.d.ts.map +1 -0
  21. package/dist/http-server-bin.js +8 -0
  22. package/dist/http-server-bin.js.map +1 -0
  23. package/dist/http-server.d.ts +41 -0
  24. package/dist/http-server.d.ts.map +1 -0
  25. package/dist/http-server.js +976 -0
  26. package/dist/http-server.js.map +1 -0
  27. package/dist/receipt-authorization.d.ts +77 -0
  28. package/dist/receipt-authorization.d.ts.map +1 -0
  29. package/dist/receipt-authorization.js +128 -0
  30. package/dist/receipt-authorization.js.map +1 -0
  31. package/dist/receipt-check.d.ts +58 -0
  32. package/dist/receipt-check.d.ts.map +1 -0
  33. package/dist/receipt-check.js +88 -0
  34. package/dist/receipt-check.js.map +1 -0
  35. package/dist/receipt-issue.d.ts +181 -0
  36. package/dist/receipt-issue.d.ts.map +1 -0
  37. package/dist/receipt-issue.js +177 -0
  38. package/dist/receipt-issue.js.map +1 -0
  39. package/dist/schema.d.ts +6 -0
  40. package/dist/schema.d.ts.map +1 -1
  41. package/dist/schema.js +50 -0
  42. package/dist/schema.js.map +1 -1
  43. package/package.json +13 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-server.js","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":";AACA,wEAAwE;AACxE,sEAAsE;AACtE,yEAAyE;AACzE,0DAA0D;AAC1D,EAAE;AACF,wEAAwE;AACxE,2EAA2E;AAC3E,6EAA6E;AAC7E,2EAA2E;AAC3E,6EAA6E;AAC7E,6EAA6E;AAC7E,oDAAoD;AACpD,EAAE;AACF,wEAAwE;AACxE,8EAA8E;AAC9E,4EAA4E;AAC5E,wEAAwE;AACxE,uEAAuE;AACvE,2EAA2E;AAC3E,0EAA0E;AAC1E,2EAA2E;AAC3E,oEAAoE;AACpE,4EAA4E;AAC5E,0EAA0E;AAC1E,sEAAsE;AACtE,0EAA0E;AAC1E,0EAA0E;AAC1E,uEAAuE;AACvE,oEAAoE;AACpE,uEAAuE;AACvE,uEAAuE;AACvE,0EAA0E;AAC1E,uEAAuE;AACvE,uEAAuE;AACvE,sEAAsE;AACtE,sCAAsC;AACtC,4EAA4E;AAC5E,4EAA4E;AAC5E,4CAA4C;AAC5C,EAAE;AACF,+EAA+E;AAC/E,6EAA6E;AAC7E,6BAA6B;AAC7B,0EAA0E;AAC1E,0EAA0E;AAC1E,6EAA6E;AAC7E,yEAAyE;AACzE,yEAAyE;AACzE,0EAA0E;AAC1E,uEAAuE;AACvE,iFAAiF;AACjF,qEAAqE;AACrE,0EAA0E;AAC1E,4EAA4E;AAC5E,0CAA0C;AAC1C,4EAA4E;AAC5E,2EAA2E;AAC3E,uEAAuE;AACvE,sEAAsE;AACtE,iDAAiD;AACjD,2EAA2E;AAC3E,4EAA4E;AAC5E,uEAAuE;AACvE,wEAAwE;AACxE,6EAA6E;AAC7E,yEAAyE;AACzE,2EAA2E;AAC3E,2DAA2D;AAC3D,EAAE;AACF,0EAA0E;AAC1E,uEAAuE;AACvE,0EAA0E;AAC1E,6EAA6E;AAC7E,kEAAkE;AAClE,uEAAuE;AACvE,yEAAyE;AACzE,oBAAoB;AACpB,EAAE;AACF,4EAA4E;AAC5E,6EAA6E;AAC7E,0EAA0E;AAC1E,yEAAyE;AACzE,0EAA0E;AAC1E,0EAA0E;AAC1E,sEAAsE;AACtE,yEAAyE;AACzE,qEAAqE;AACrE,yEAAyE;AACzE,SAAS;AACT,EAAE;AACF,4EAA4E;AAC5E,sEAAsE;AACtE,sEAAsE;AACtE,2EAA2E;AAC3E,2EAA2E;AAC3E,yEAAyE;AACzE,0EAA0E;AAC1E,yEAAyE;AACzE,2EAA2E;AAC3E,kCAAkC;AAElC,OAAO,EAAE,YAAY,EAA6C,MAAM,WAAW,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,oCAAoC,EAAE,+CAA+C,EAAE,MAAM,uBAAuB,CAAC;AAC9H,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,yBAAyB,EAAsB,MAAM,aAAa,CAAC;AAC1I,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,+BAA+B,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACpI,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,eAAe,GAAY,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAyB,CAAC,OAAO,CAAC;AACnH,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC/F,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,oCAAoC,EAAE,MAAM,yBAAyB,CAAC;AAC1G,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAE9E,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;AAC9C,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,8EAA8E;AAEhH,6EAA6E;AAC7E,2EAA2E;AAC3E,+CAA+C;AAC/C,MAAM,sBAAsB,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;AAClE,MAAM,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,OAAO,CAAC;AAC3E,MAAM,uBAAuB,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,aAAa,CAAC;AACrF,MAAM,+BAA+B,GAAG,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,mCAAmC,CAAC;AAC3H,6EAA6E;AAC7E,6EAA6E;AAC7E,yEAAyE;AACzE,0EAA0E;AAC1E,0EAA0E;AAC1E,6EAA6E;AAC7E,wCAAwC;AACxC,MAAM,sBAAsB,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,KAAK,GAAG,CAAC;AAE1E,wEAAwE;AACxE,2EAA2E;AAC3E,sEAAsE;AACtE,0EAA0E;AAC1E,oEAAoE;AACpE,IAAI,kBAAkB,GAAmD,IAAI,CAAC;AAC9E,IAAI,sBAAsB,EAAE,CAAC;IAC3B,6EAA6E;IAC7E,0EAA0E;IAC1E,uEAAuE;IACvE,0EAA0E;IAC1E,MAAM,OAAO,GAAG,uBAAgD,CAAC;IACjE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,wEAAwE,uBAAuB,EAAE,CAAC,CAAC;IACrH,CAAC;IACD,MAAM,iBAAiB,GAAG,IAAI,qBAAqB,CAAC,EAAE,GAAG,EAAE,+BAA+B,EAAE,CAAC,CAAC;IAC9F,MAAM,cAAc,GAAG,IAAI,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;IACjE,cAAc,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,cAAc,EAAE,CAAC,CAAC;IACvD,IAAI,sBAAsB;QAAE,cAAc,CAAC,iBAAiB,CAAC,6BAAsC,CAAC,CAAC;IACrG,MAAM,cAAc,CAAC,UAAU,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,wBAAwB,CAAC;QAC5D,MAAM,EAAE,OAAO;QACf,OAAO;QACP,KAAK,EAAE,sBAAsB;QAC7B,KAAK,EAAE,qBAAqB;KAC7B,CAAC,CAAC;IACH,kBAAkB,GAAG,oBAAoB,CAAC,cAAc,EAAE;QACxD,OAAO;QACP,UAAU,EAAE,sBAAsB,CAAC,CAAC,CAAC,oCAAoC,EAAE,CAAC,CAAC,CAAC,SAAS;QACvF,QAAQ,EAAE;YACR,qEAAqE;YACrE,+DAA+D;YAC/D,uDAAuD;YACvD,kEAAkE;YAClE,mDAAmD;YACnD,kEAAkE;YAClE,gEAAgE;YAChE,qEAAqE;YACrE,qEAAqE;YACrE,qEAAqE;YACrE,WAAW,EAAE,0BAA0B;YACvC,WAAW,EACT,yGAAyG;gBACzG,wGAAwG;gBACxG,8BAA8B;SACjC;QACD,KAAK,EAAE;YACL,yEAAyE;YACzE,kEAAkE;YAClE,oEAAoE;YACpE,8DAA8D;YAC9D,oEAAoE;YACpE,mEAAmE;YACnE,oEAAoE;YACpE,kEAAkE;YAClE,qEAAqE;YACrE,oEAAoE;YACpE,oEAAoE;YACpE,qEAAqE;YACrE,yDAAyD;YACzD,EAAE;YACF,kEAAkE;YAClE,oEAAoE;YACpE,oEAAoE;YACpE,uEAAuE;YACvE,sEAAsE;YACtE,gEAAgE;YAChE,qEAAqE;YACrE,gDAAgD;YAChD,EAAE;YACF,sEAAsE;YACtE,sEAAsE;YACtE,uEAAuE;YACvE,sEAAsE;YACtE,oEAAoE;YACpE,uEAAuE;YACvE,+CAA+C;YAC/C,EAAE;YACF,kEAAkE;YAClE,oEAAoE;YACpE,qEAAqE;YACrE,oEAAoE;YACpE,iEAAiE;YACjE,qEAAqE;YACrE,iEAAiE;YACjE,qCAAqC;YACrC,iBAAiB,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE;gBACpD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC/C,IAAI,CAAC,MAAM,CAAC,EAAE;oBAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjD,CAAC;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAED,6EAA6E;AAC7E,yEAAyE;AACzE,0EAA0E;AAC1E,wEAAwE;AACxE,yEAAyE;AACzE,2EAA2E;AAC3E,4EAA4E;AAC5E,6EAA6E;AAC7E,8BAA8B;AAC9B,EAAE;AACF,yEAAyE;AACzE,wEAAwE;AACxE,0EAA0E;AAC1E,6EAA6E;AAC7E,2EAA2E;AAC3E,wEAAwE;AACxE,0EAA0E;AAC1E,wEAAwE;AACxE,2EAA2E;AAC3E,wEAAwE;AACxE,2EAA2E;AAC3E,yEAAyE;AACzE,4EAA4E;AAC5E,yEAAyE;AACzE,gDAAgD;AAChD,4EAA4E;AAC5E,gFAAgF;AAChF,oDAAoD;AACpD,wEAAwE;AACxE,4EAA4E;AAC5E,sEAAsE;AACtE,2EAA2E;AAC3E,yEAAyE;AACzE,4EAA4E;AAC5E,wEAAwE;AACxE,4EAA4E;AAC5E,yEAAyE;AACzE,gCAAgC;AAChC,MAAM,gCAAgC,GAAG,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC;AACtF,MAAM,uBAAuB,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;AACpE,MAAM,sBAAsB,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,OAAO,CAAC;AAC7E,0EAA0E;AAC1E,wEAAwE;AACxE,uEAAuE;AACvE,yEAAyE;AACzE,4EAA4E;AAC5E,2EAA2E;AAC3E,sEAAsE;AACtE,6CAA6C;AAC7C,MAAM,6BAA6B,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,IAAI,CAAC,CAAC;AAChG,0EAA0E;AAC1E,2EAA2E;AAC3E,uEAAuE;AACvE,qEAAqE;AACrE,MAAM,4BAA4B,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,0BAA0B,CAAC;AAE5G,sIAAsI;AACtI,yIAAyI;AACzI,sIAAsI;AACtI,uIAAuI;AACvI,uIAAuI;AACvI,iDAAiD;AACjD,MAAM,SAAS,GAAG,CAAC,CAAS,EAAY,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC3G,MAAM,CAAC,MAAM,sCAAsC,GAAG,SAAS,CAC7D,OAAO,CAAC,GAAG,CAAC,sCAAsC,IAAI,wDAAwD,CAC/G,CAAC;AACF,MAAM,CAAC,MAAM,oCAAoC,GAAG,SAAS,CAC3D,OAAO,CAAC,GAAG,CAAC,oCAAoC,IAAI,wDAAwD,CAC7G,CAAC;AACF,MAAM,0BAA0B,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,QAAQ,CAAC,CAAC;AAE9F,8HAA8H;AAC9H,MAAM,UAAU,8BAA8B,CAAC,KAAkE;IAC/G,IAAI,CAAC,sCAAsC,CAAC,QAAQ,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QACvG,OAAO,6FAA6F,sCAAsC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1J,CAAC;IACD,IAAI,CAAC,oCAAoC,CAAC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QAChG,OAAO,4GAA4G,oCAAoC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACvK,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,sEAAsE;AACtE,yEAAyE;AACzE,qEAAqE;AACrE,oEAAoE;AACpE,sEAAsE;AACtE,yEAAyE;AACzE,wEAAwE;AACxE,0EAA0E;AAC1E,MAAM,UAAU,8BAA8B,CAAC,UAAkB,EAAE,SAAiB,4BAA4B;IAC9G,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,gBAAgB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACxC,IAAI,yBAAyB,GAAa,EAAE,CAAC;AAE7C,2EAA2E;AAC3E,4EAA4E;AAC5E,kEAAkE;AAClE,4EAA4E;AAE5E,uJAAuJ;AACvJ,MAAM,UAAU,qBAAqB;IACnC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,gBAAgB,CAAC;IAC7C,OAAO,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,GAAG,6BAA6B,CAAC;AACpG,CAAC;AAED,uHAAuH;AACvH,MAAM,UAAU,0BAA0B;IACxC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,gBAAgB,CAAC;IAC7C,yBAAyB,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;IAChF,IAAI,yBAAyB,CAAC,MAAM,IAAI,6BAA6B;QAAE,OAAO,KAAK,CAAC;IACpF,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,IAAI,mBAAmB,GAAmD,IAAI,CAAC;AAC/E,IAAI,gCAAgC,IAAI,uBAAuB,EAAE,CAAC;IAChE,2EAA2E;IAC3E,kEAAkE;IAClE,qEAAqE;IACrE,MAAM,MAAM,GAAG,8BAA8B,CAAC,gCAAgC,CAAC,CAAC;IAChF,MAAM,OAAO,GAAG,uBAAgD,CAAC;IACjE,MAAM,iBAAiB,GAAG,IAAI,qBAAqB,CAAC,EAAE,GAAG,EAAE,+BAA+B,EAAE,CAAC,CAAC;IAC9F,MAAM,cAAc,GAAG,IAAI,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;IACjE,cAAc,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,cAAc,EAAE,CAAC,CAAC;IACvD,IAAI,sBAAsB;QAAE,cAAc,CAAC,iBAAiB,CAAC,6BAAsC,CAAC,CAAC;IACrG,MAAM,cAAc,CAAC,UAAU,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,wBAAwB,CAAC;QAC5D,MAAM,EAAE,OAAO;QACf,OAAO;QACP,KAAK,EAAE,uBAAuB;QAC9B,KAAK,EAAE,sBAAsB;KAC9B,CAAC,CAAC;IACH,mBAAmB,GAAG,oBAAoB,CAAC,cAAc,EAAE;QACzD,OAAO;QACP,UAAU,EAAE,sBAAsB,CAAC,CAAC,CAAC,+CAA+C,EAAE,CAAC,CAAC,CAAC,SAAS;QAClG,QAAQ,EAAE;YACR,qEAAqE;YACrE,4DAA4D;YAC5D,WAAW,EAAE,4BAA4B;YACzC,WAAW,EACT,uGAAuG;gBACvG,sGAAsG;gBACtG,iFAAiF;SACpF;QACD,KAAK,EAAE;YACL,iBAAiB,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE;gBAClD,2DAA2D;gBAC3D,oEAAoE;gBACpE,8DAA8D;gBAC9D,2DAA2D;gBAC3D,+DAA+D;gBAC/D,oDAAoD;gBACpD,MAAM,MAAM,GAAG,oCAAoC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACvE,IAAI,CAAC,MAAM,CAAC,OAAO;oBAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC/G,MAAM,eAAe,GAAG,8BAA8B,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACpE,IAAI,eAAe;oBAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;gBACtD,IAAI,CAAC,0BAA0B,EAAE,EAAE,CAAC;oBAClC,MAAM,IAAI,KAAK,CACb,sDAAsD,6BAA6B,oBAAoB;wBACrG,kHAAkH,CACrH,CAAC;gBACJ,CAAC;gBACD,6GAA6G;gBAC7G,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAC5C,MAAM,EACN,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,4BAA4B,EAAE,EACxD,SAAS,EACT,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,EAAE,sBAAsB,EAAE,qBAAqB,CAAC,EAC7E,EAAE,QAAQ,EAAE,0BAA0B,EAAE,CACzC,CAAC;gBACF,IAAI,CAAC,MAAM,CAAC,EAAE;oBAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjD,CAAC;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAChF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAC/C,CAAC;AAED,SAAS,WAAW,CAAC,OAAe;IAClC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACnF,CAAC;AAED,qEAAqE;AACrE,2EAA2E;AAC3E,wEAAwE;AACxE,yEAAyE;AAEzE,mGAAmG;AACnG,SAAS,mBAAmB,CAAC,MAAuB;IAClD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,WAAW,IAAI,CAAC,CAAC,SAAS,KAAK,aAAa,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;AAC1H,CAAC;AAED,wIAAwI;AACxI,SAAS,4BAA4B,CAAC,MAAuB;IAC3D,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,MAAM;QAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACpG,MAAM,cAAc,GAAG,WAAW,CAAC,IAAI,CAAC;IACxC,MAAM,aAAa,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjF,OAAO;QACL,WAAW,EAAE,MAAM,CAAC,MAAM;QAC1B,cAAc;QACd,aAAa,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;KAC7F,CAAC;AACJ,CAAC;AAED,SAAS,WAAW;IAClB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;IAEzF,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,KAAK,EAAE,mEAAmE;QAC1E,WAAW,EACT,yGAAyG;YACzG,wGAAwG;YACxG,0GAA0G;YAC1G,yGAAyG;YACzG,wBAAwB;QAC1B,WAAW,EAAE,EAAE,aAAa,EAAE,kBAAkB,CAAC,KAAK,CAAC,aAAa,EAAE;KACvE,EACD,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE;QAC1B,IAAI,CAAC;YACH,OAAO,UAAU,CAAC,MAAM,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,WAAW,CAAE,CAAW,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,0BAA0B,EAC1B;QACE,KAAK,EAAE,+EAA+E;QACtF,WAAW,EACT,2GAA2G;YAC3G,4GAA4G;YAC5G,sGAAsG;YACtG,0GAA0G;YAC1G,wGAAwG;YACxG,yGAAyG;YACzG,0GAA0G;YAC1G,wGAAwG;YACxG,UAAU;QACZ,WAAW,EAAE,EAAE,aAAa,EAAE,kBAAkB,CAAC,KAAK,CAAC,aAAa,EAAE;KACvE,EACD,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE;QAC1B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,aAAa,CAAC,CAAC;YACrD,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAChD,OAAO,UAAU,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,mEAAmE,EAAE,CAAC,CAAC;QAC3I,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,WAAW,CAAE,CAAW,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,yBAAyB,EACzB;QACE,KAAK,EAAE,0FAA0F;QACjG,WAAW,EACT,uGAAuG;YACvG,sGAAsG;YACtG,2GAA2G;YAC3G,sGAAsG;YACtG,yGAAyG;YACzG,uGAAuG;YACvG,yGAAyG;YACzG,yGAAyG;YACzG,sGAAsG;YACtG,UAAU;QACZ,WAAW,EAAE,EAAE,aAAa,EAAE,kBAAkB,CAAC,KAAK,CAAC,aAAa,EAAE;KACvE,EACD,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE;QAC1B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,aAAa,CAAC,CAAC;YACrD,OAAO,UAAU,CAAC;gBAChB,aAAa;gBACb,KAAK,EAAE,wEAAwE;gBAC/E,GAAG,4BAA4B,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC5C,IAAI,EACF,gGAAgG;oBAChG,kGAAkG;aACrG,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,WAAW,CAAE,CAAW,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,KAAK,EAAE,kGAAkG;QACzG,WAAW,EACT,sGAAsG;YACtG,yGAAyG;YACzG,yGAAyG;YACzG,0GAA0G;YAC1G,2GAA2G;YAC3G,uGAAuG;YACvG,yGAAyG;YACzG,sGAAsG;YACtG,qCAAqC;QACvC,WAAW,EAAE;YACX,eAAe,EAAE,CAAC;iBACf,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,aAAa,CAAC;iBAC7C,GAAG,CAAC,CAAC,EAAE,wCAAwC,CAAC;iBAChD,GAAG,CAAC,EAAE,EAAE,2DAA2D,CAAC;SACxE;KACF,EACD,KAAK,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE;QAC5B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE;YAC1C,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,aAAa,CAAC,CAAC;gBACrD,OAAO;oBACL,aAAa;oBACb,iBAAiB,EAAE,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM;oBAC1D,GAAG,4BAA4B,CAAC,IAAI,CAAC,MAAM,CAAC;iBAC7C,CAAC;YACJ,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,EAAE,aAAa,EAAE,KAAK,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC;YACxD,CAAC;QACH,CAAC,CAAC,CACH,CAAC;QACF,OAAO,UAAU,CAAC,EAAE,KAAK,EAAE,4DAA4D,EAAE,OAAO,EAAE,CAAC,CAAC;IACtG,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,2BAA2B,EAC3B;QACE,KAAK,EAAE,kHAAkH;QACzH,WAAW,EACT,oGAAoG;YACpG,wGAAwG;YACxG,uGAAuG;YACvG,uGAAuG;YACvG,uGAAuG;YACvG,oGAAoG;YACpG,sGAAsG;YACtG,kGAAkG;YAClG,0GAA0G;YAC1G,wGAAwG;YACxG,kGAAkG;YAClG,wGAAwG;YACxG,wGAAwG;YACxG,wGAAwG;YACxG,yGAAyG;YACzG,oFAAoF;QACtF,WAAW,EAAE;YACX,aAAa,EAAE,kBAAkB,CAAC,KAAK,CAAC,aAAa;YACrD,UAAU,EAAE,CAAC;iBACV,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;gBACP,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,8DAA8D,CAAC;gBAClG,OAAO,EAAE,CAAC;qBACP,MAAM,EAAE;qBACR,GAAG,EAAE;qBACL,QAAQ,EAAE;qBACV,QAAQ,CAAC,4IAA4I,CAAC;gBACzJ,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0EAA0E,CAAC;gBACtH,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sFAAsF,CAAC;aAClI,CAAC,CACH;iBACA,GAAG,CAAC,CAAC,EAAE,gCAAgC,CAAC;iBACxC,QAAQ,EAAE;iBACV,QAAQ,CAAC,wDAAwD,CAAC;YACrE,WAAW,EAAE,CAAC;iBACX,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;iBACxB,GAAG,CAAC,CAAC,EAAE,iCAAiC,CAAC;iBACzC,QAAQ,EAAE;iBACV,QAAQ,CAAC,mGAAmG,CAAC;SACjH;KACF,EACD,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,EAAE;QACnD,MAAM,OAAO,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACtC,KAAK,MAAM,CAAC,IAAI,UAAU,IAAI,EAAE,EAAE,CAAC;YACjC,MAAM,UAAU,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAClH,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO,WAAW,CAChB,8DAA8D,CAAC,CAAC,OAAO,uEAAuE,CAC/I,CAAC;YACJ,CAAC;YACD,qEAAqE;YACrE,oEAAoE;YACpE,mEAAmE;YACnE,OAAO,CAAC,IAAI,CACV,SAAS,CAAC,oBAAoB,CAAC,yBAAyB,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,OAAO,IAAI,UAAU,EAAE,CAAC,CAC/I,CAAC;QACJ,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,WAAW,IAAI,EAAE,EAAE,CAAC;YACpC,qEAAqE;YACrE,sBAAsB;YACtB,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,GAAG,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;QACvF,CAAC;QACD,IAAI,CAAC;YACH,qEAAqE;YACrE,kEAAkE;YAClE,oDAAoD;YACpD,OAAO,UAAU,CAAC,MAAM,uBAAuB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC;QAC3E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,WAAW,CAAE,CAAW,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,KAAK,EAAE,mGAAmG;QAC1G,WAAW,EACT,sGAAsG;YACtG,uGAAuG;YACvG,oGAAoG;YACpG,0GAA0G;YAC1G,yGAAyG;YACzG,0GAA0G;YAC1G,2GAA2G;YAC3G,yGAAyG;YACzG,2GAA2G;YAC3G,mGAAmG;YACnG,uGAAuG;YACvG,uGAAuG;YACvG,sGAAsG;YACtG,uGAAuG;YACvG,2GAA2G;YAC3G,oGAAoG;YACpG,uGAAuG;YACvG,uGAAuG;YACvG,uDAAuD;QACzD,WAAW,EAAE;YACX,sEAAsE;YACtE,sEAAsE;YACtE,sEAAsE;YACtE,sEAAsE;YACtE,mEAAmE;YACnE,yDAAyD;YACzD,mEAAmE;YACnE,eAAe,EAAE,CAAC;iBACf,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,EAAE,6BAA6B,CAAC;iBACrC,GAAG,CAAC,MAAM,EAAE,yFAAyF,CAAC;YACzG,KAAK,EAAE,mBAAmB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC5C,mGAAmG;gBACjG,kGAAkG,CACrG;SACF;KACF,EACD,KAAK,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,EAAE,EAAE;QACnC,IAAI,SAAkD,CAAC;QACvD,IAAI,CAAC;YACH,SAAS,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,WAAW,CAAE,CAAW,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;YAClB,OAAO,UAAU,CAAC;gBAChB,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,SAAS,CAAC,MAAM;gBACxB,IAAI,EAAE,8GAA8G;aACrH,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAG,aAAa,CAAC,eAAe,CAAC,CAAC;QAC9C,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC;QAC5D,MAAM,aAAa,GAAG,CAAC,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;QAC9F,IAAI,aAAa,KAAK,IAAI;YAAE,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAChE,MAAM,UAAU,GAAG;YACjB,YAAY,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK;YACrC,GAAG,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpD,gBAAgB,EAAE,MAAM;YACxB,aAAa;YACb,IAAI,EACF,aAAa,KAAK,IAAI;gBACpB,CAAC,CAAC,gGAAgG;oBAChG,yFAAyF;oBACzF,qGAAqG;oBACrG,sGAAsG;oBACtG,oFAAoF;oBACpF,iGAAiG;oBACjG,4FAA4F;gBAC9F,CAAC,CAAC,oGAAoG;oBACpG,mGAAmG;oBACnG,oDAAoD;SAC3D,CAAC;QAEF,IAAI,OAAO,GAAkD,IAAI,CAAC;QAClE,IAAI,UAAU,GAAoD,IAAI,CAAC;QACvE,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACpD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,WAAW,CAAC,kBAAkB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/F,CAAC;YACD,IAAI,OAAuC,CAAC;YAC5C,IAAI,CAAC;gBACH,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACrC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,WAAW,CAAC,kBAAmB,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/D,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,EAAE;gBAAE,OAAO,WAAW,CAAC,sBAAsB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5E,OAAO,GAAG,mBAAmB,CAAC,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;YAC5D,UAAU,GAAG,qBAAqB,CAAC,MAAM,CAAC,IAAI,EAAE;gBAC9C,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK;gBAC9B,WAAW,EAAE,SAAS,CAAC,OAAO,CAAC,WAAW;gBAC1C,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,QAAQ;aACrC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,UAAU,CAAC;YAChB,EAAE,EAAE,IAAI;YACR,eAAe,EAAE,SAAS,CAAC,MAAM;YACjC,uBAAuB,EACrB,sGAAsG;gBACtG,8DAA8D;YAChE,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,MAAM;YACN,UAAU;YACV,OAAO;YACP,UAAU;SACX,CAAC,CAAC;IACL,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,KAAK,EAAE,6GAA6G;QACpH,WAAW,EACT,sGAAsG;YACtG,wGAAwG;YACxG,wGAAwG;YACxG,6FAA6F;YAC7F,yGAAyG;YACzG,mGAAmG;YACnG,sGAAsG;YACtG,wGAAwG;YACxG,yGAAyG;YACzG,8EAA8E;QAChF,WAAW,EAAE,+BAA+B,CAAC,KAAK;KACnD,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE,sBAAsB,EAAE,qBAAqB,CAAC,CAAC;QACjG,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,CAAC;YACH,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACjE,OAAO,UAAU,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,WAAW,CAAE,CAAW,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;QACE,KAAK,EAAE,gFAAgF;QACvF,WAAW,EACT,4GAA4G;YAC5G,oGAAoG;YACpG,oDAAoD;QACtD,WAAW,EAAE,+BAA+B,CAAC,KAAK;KACnD,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE,sBAAsB,EAAE,qBAAqB,CAAC,CAAC;QAC/F,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAClD,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC,CACF,CAAC;IAEF,IAAI,kBAAkB,EAAE,CAAC;QACvB,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;YACE,KAAK,EAAE,sDAAsD;YAC7D,WAAW,EACT,uGAAuG;gBACvG,oGAAoG;gBACpG,wGAAwG;gBACxG,oGAAoG;gBACpG,gGAAgG;gBAChG,oGAAoG;gBACpG,uGAAuG;gBACvG,uGAAuG;gBACvG,uGAAuG;gBACvG,gGAAgG;gBAChG,qCAAqC;YACvC,WAAW,EAAE,mBAAmB,CAAC,KAAK;SACvC,EACD,kBAAkB,CAAC,KAAK,EAAE,IAAa,EAAE,EAAE;YACzC,iEAAiE;YACjE,oEAAoE;YACpE,6DAA6D;YAC7D,kEAAkE;YAClE,0DAA0D;YAC1D,MAAM,MAAM,GAAG,yBAAyB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACzD,IAAI,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO,WAAW,CAAC,kBAAkB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClH,IAAI,OAAuC,CAAC;YAC5C,IAAI,CAAC;gBACH,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACrC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,WAAW,CAAC,kBAAmB,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/D,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,EAAE;gBAAE,OAAO,WAAW,CAAC,sBAAsB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5E,OAAO,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,+BAA+B,EAAE,CAAC,CAAC;QACvG,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,IAAI,mBAAmB,EAAE,CAAC;QACxB,MAAM,CAAC,YAAY,CACjB,6BAA6B,EAC7B;YACE,KAAK,EAAE,iGAAiG;YACxG,WAAW,EACT,uGAAuG;gBACvG,uGAAuG;gBACvG,sGAAsG;gBACtG,uGAAuG;gBACvG,oGAAoG;gBACpG,kIAAkI;gBAClI,2GAA2G;gBAC3G,wFAAwF;gBACxF,cAAc,6BAA6B,6DAA6D;gBACxG,8FAA8F;gBAC9F,uGAAuG;gBACvG,qGAAqG;gBACrG,uGAAuG;gBACvG,oGAAoG;gBACpG,wBAAwB;YAC1B,WAAW,EAAE,oCAAoC,CAAC,KAAK;SACxD,EACD,mBAAmB,CAAC,KAAK,EAAE,IAAa,EAAE,EAAE;YAC1C,+DAA+D;YAC/D,kEAAkE;YAClE,+DAA+D;YAC/D,oEAAoE;YACpE,oDAAoD;YACpD,MAAM,MAAM,GAAG,oCAAoC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACpE,IAAI,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO,WAAW,CAAC,kBAAkB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClH,IAAI,OAAuC,CAAC;YAC5C,IAAI,CAAC;gBACH,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3C,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,WAAW,CAAC,kBAAmB,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/D,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,EAAE;gBAAE,OAAO,WAAW,CAAC,sBAAsB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5E,MAAM,eAAe,GAAG,8BAA8B,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACpE,IAAI,eAAe;gBAAE,OAAO,WAAW,CAAC,eAAe,CAAC,CAAC;YACzD,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC;gBAC7B,OAAO,WAAW,CAChB,sDAAsD,6BAA6B,oBAAoB;oBACrG,wDAAwD,CAC3D,CAAC;YACJ,CAAC;YACD,OAAO,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,0DAA0D,EAAE,CAAC,CAAC;QACpG,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,yEAAyE;AACzE,2EAA2E;AAC3E,2EAA2E;AAC3E,4EAA4E;AAC5E,wEAAwE;AACxE,6EAA6E;AAC7E,yEAAyE;AACzE,kEAAkE;AAClE,MAAM,oBAAoB,GAAG,MAAM,CAAC;AACpC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AACnC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkD,CAAC;AAE9E,SAAS,aAAa,CAAC,EAAU;IAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,WAAW,IAAI,oBAAoB,EAAE,CAAC;QAChE,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;QACpD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;IAClB,OAAO,MAAM,CAAC,KAAK,GAAG,uBAAuB,CAAC;AAChD,CAAC;AAED,wEAAwE;AACxE,kDAAkD;AAClD,WAAW,CACT,GAAG,EAAE;IACH,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QACvC,IAAI,GAAG,GAAG,MAAM,CAAC,WAAW,IAAI,oBAAoB;YAAE,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC,EACD,oBAAoB,CACrB,CAAC,KAAK,EAAE,CAAC;AAEV,SAAS,QAAQ,CAAC,GAAoB;IACpC,oEAAoE;IACpE,wEAAwE;IACxE,sEAAsE;IACtE,gDAAgD;IAChD,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,GAAG,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QACvE,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;IAC1B,CAAC;IACD,OAAO,GAAG,CAAC,MAAM,CAAC,aAAa,IAAI,SAAS,CAAC;AAC/C,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,GAAoB,EAAE,QAAgB;IACnE,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;QAC9B,KAAK,IAAK,KAAgB,CAAC,MAAM,CAAC;QAClC,IAAI,KAAK,GAAG,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,QAAQ,CAAC,CAAC;QACjF,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACjD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,KAAK,EAAE,GAAoB,EAAE,GAAmB,EAAE,EAAE;QACzD,yEAAyE;QACzE,uEAAuE;QACvE,qEAAqE;QACrE,+EAA+E;QAC/E,GAAG,CAAC,SAAS,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;QAClD,GAAG,CAAC,SAAS,CAAC,8BAA8B,EAAE,oBAAoB,CAAC,CAAC;QACpE,GAAG,CAAC,SAAS,CAAC,8BAA8B,EAAE,8BAA8B,CAAC,CAAC;QAC9E,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC7B,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,GAAG,KAAK,MAAM,EAAE,CAAC;YACvB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;YACvG,OAAO;QACT,CAAC;QAED,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC;YACtB,GAAG;iBACA,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;iBAC3E,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,iDAAiD,EAAE,CAAC,CAAC,CAAC;YACrF,OAAO;QACT,CAAC;QAED,IAAI,UAAmB,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YACvD,UAAU,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,iEAAiE;YACjE,kEAAkE;YAClE,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC;YAClH,OAAO;QACT,CAAC;QAED,oEAAoE;QACpE,kEAAkE;QAClE,mEAAmE;QACnE,mEAAmE;QACnE,6BAA6B;QAC7B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,WAAW,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,IAAI,6BAA6B,CAAC,EAAE,kBAAkB,EAAE,SAAS,EAAE,CAAC,CAAC;YACvF,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACnB,SAAS,CAAC,KAAK,EAAE,CAAC;gBAClB,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,CAAC,CAAC,CAAC;YACH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAChC,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,kFAAkF;YAClF,OAAO,CAAC,KAAK,CAAC,iCAAiC,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;YAC1E,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBACrB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;YAC9G,CAAC;QACH,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,UAAU,GAAG,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC;IAC7C,MAAM,aAAa,GACjB,4FAA4F;QAC5F,4FAA4F,CAAC;IAC/F,MAAM,SAAS,GAAG;QAChB,kBAAkB,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,IAAI;QAC9D,mBAAmB,CAAC,CAAC,CAAC,iDAAiD,6BAA6B,YAAY,CAAC,CAAC,CAAC,IAAI;KACxH,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClB,MAAM,KAAK,GACT,SAAS,CAAC,MAAM,GAAG,CAAC;QAClB,CAAC,CAAC,GAAG,aAAa,iBAAiB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACzD,CAAC,CAAC,GAAG,aAAa,mIAAmI,CAAC;IAC1J,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QAC3B,OAAO,CAAC,GAAG,CAAC,sCAAsC,IAAI,uBAAuB,KAAK,GAAG,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * §5.6.2's table. Each method fixes the byte length of `asset` and `authorizer`;
3
+ * `identifier` and `salt` are 32 bytes for every method. Fixed lengths are what
4
+ * make the preimage unambiguous without any separators, so they are enforced
5
+ * rather than assumed: a field of the wrong length would hash to a commitment
6
+ * that opens to nothing, and would do so silently.
7
+ */
8
+ export declare const AUTHORIZATION_METHODS: {
9
+ readonly eip3009: {
10
+ readonly asset: 20;
11
+ readonly authorizer: 20;
12
+ };
13
+ };
14
+ export type AuthorizationMethod = keyof typeof AUTHORIZATION_METHODS;
15
+ export interface CommitmentInput {
16
+ /** Currently only "eip3009". Equals the receipt's `authorizationMethod`. */
17
+ method: AuthorizationMethod;
18
+ /** Token contract of the accepts entry that was paid. Not carried by the receipt. */
19
+ asset: string;
20
+ /** `from` of the authorization. §5.6.4 step 1 takes this from the receipt's signed payer. */
21
+ authorizer: string;
22
+ /** The ERC-3009 nonce, 32 bytes. */
23
+ identifier: string;
24
+ /** 32 bytes of CSPRNG output, per payment. Never signed, never in the receipt. */
25
+ salt: string;
26
+ }
27
+ /** §5.6.3: 32 bytes from a CSPRNG, independent per payment, never derived from anything. */
28
+ export declare function generateAuthorizationSalt(): string;
29
+ /** §5.6.2, the whole construction. Hex inputs are case-insensitive; bytes are hashed. */
30
+ export declare function computeAuthorizationCommitment(input: CommitmentInput): string;
31
+ export type OpenResult = {
32
+ linked: true;
33
+ identifier: string;
34
+ } | {
35
+ linked: false;
36
+ reason: string;
37
+ };
38
+ export interface OpenInput {
39
+ /** The signed receipt payload. `payer` is the authorizer; nothing else is trusted. */
40
+ payload: {
41
+ payer: string;
42
+ authorizationMethod?: string;
43
+ authorizationCommitment?: string;
44
+ };
45
+ salt: string;
46
+ /** The asset of the accepts entry that was paid. §5.6.4: salt alone cannot link. */
47
+ asset: string;
48
+ /** Nonces from AuthorizationUsed(authorizer, nonce) logs on that asset. */
49
+ candidateIdentifiers: readonly string[];
50
+ }
51
+ /**
52
+ * §5.6.4 steps 1 and 3. Fails closed on both nothing and ambiguity.
53
+ *
54
+ * Two matches is not "probably the first one": if an identifier can repeat across
55
+ * settlements the commitment genuinely opens to several, and the spec says that
56
+ * case does not link. Reporting a guess there would turn a fail-closed design into
57
+ * a false link, which is the one outcome the whole construction exists to avoid.
58
+ */
59
+ export declare function openAuthorizationCommitment(input: OpenInput): OpenResult;
60
+ /**
61
+ * The vector published with the spec, kept here so our own test has an external
62
+ * anchor. The independent verifier in agent-receipt-verify asserts the same
63
+ * constant from its own implementation: two implementations anchored to the same
64
+ * published number cannot drift silently, two anchored to each other can.
65
+ */
66
+ export declare const SPEC_VECTOR: {
67
+ readonly source: "x402-foundation/x402 PR #3827, specs/extensions/extension-offer-and-receipt.md §5.6.2, commit 0e492d6730bef14b9c722428386c114f3475a914";
68
+ readonly input: {
69
+ readonly method: "eip3009";
70
+ readonly asset: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913";
71
+ readonly authorizer: "0x857b06519E91e3A54538791bDbb0E22373e36b66";
72
+ readonly identifier: "0x5135a00b531830a13a751f3c48944d7a5fdfde7a3b87f73493591cd77efdef4f";
73
+ readonly salt: "0x10d2ae5f0c8536e82d882bf3d2c31a663597e890ca6c3fede0d278fd2a78f655";
74
+ };
75
+ readonly expected: "0x5d905bbf08a97e04ab551d276d8e94b1abaff7d0737324d360e983c2796af23b";
76
+ };
77
+ //# sourceMappingURL=receipt-authorization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receipt-authorization.d.ts","sourceRoot":"","sources":["../src/receipt-authorization.ts"],"names":[],"mappings":"AA0BA;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB;;;;;CAExB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,qBAAqB,CAAC;AAErE,MAAM,WAAW,eAAe;IAC9B,4EAA4E;IAC5E,MAAM,EAAE,mBAAmB,CAAC;IAC5B,qFAAqF;IACrF,KAAK,EAAE,MAAM,CAAC;IACd,6FAA6F;IAC7F,UAAU,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,IAAI,EAAE,MAAM,CAAC;CACd;AAaD,4FAA4F;AAC5F,wBAAgB,yBAAyB,IAAI,MAAM,CAElD;AAED,yFAAyF;AACzF,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAc7E;AAED,MAAM,MAAM,UAAU,GAClB;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtC,MAAM,WAAW,SAAS;IACxB,sFAAsF;IACtF,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAAC,uBAAuB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3F,IAAI,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,oBAAoB,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,SAAS,GAAG,UAAU,CAgCxE;AAED;;;;;GAKG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;CAWd,CAAC"}
@@ -0,0 +1,128 @@
1
+ // receipt-authorization.ts — the salted commitment that ties a receipt to one settlement.
2
+ //
3
+ // Written against specs/extensions/extension-offer-and-receipt.md §5.6 at commit
4
+ // 0e492d6730bef14b9c722428386c114f3475a914 of the receipt-authorization-commitment
5
+ // branch. That PR is open, so the preimage can still change: the commit is pinned
6
+ // here on purpose, and the test asserts the vector published with it. If the spec
7
+ // moves, the test fails rather than the signature quietly changing meaning.
8
+ //
9
+ // WHY A COMMITMENT AND NOT THE TRANSACTION HASH. A receipt with an empty
10
+ // `transaction` can be matched to a settlement only by payer, payee, amount and
11
+ // time. Two payments with the same terms in the same block cannot be ordered at
12
+ // all. The ERC-3009 authorization already carries a nonce that is unique per
13
+ // settlement and that the server holds before settlement runs, so a salted hash of
14
+ // it lets whoever holds the salt recompute the link to exactly one settlement, and
15
+ // tells everyone else nothing.
16
+ //
17
+ // AND WHY IT MATTERS TO US SPECIFICALLY: §5.6.5 says a consumer that counts
18
+ // settlements MUST count opened commitments only. A receipt whose commitment
19
+ // nobody can open does not count. That is the category our own receipts were in.
20
+ import { createHash, randomBytes } from "node:crypto";
21
+ /** §5.6.2. ASCII, and the trailing /0 is the preimage version, not the payload version. */
22
+ const DOMAIN_TAG = Buffer.from("x402-receipt-authorization/0", "ascii");
23
+ const NUL = Buffer.from([0]);
24
+ /**
25
+ * §5.6.2's table. Each method fixes the byte length of `asset` and `authorizer`;
26
+ * `identifier` and `salt` are 32 bytes for every method. Fixed lengths are what
27
+ * make the preimage unambiguous without any separators, so they are enforced
28
+ * rather than assumed: a field of the wrong length would hash to a commitment
29
+ * that opens to nothing, and would do so silently.
30
+ */
31
+ export const AUTHORIZATION_METHODS = {
32
+ eip3009: { asset: 20, authorizer: 20 },
33
+ };
34
+ function fixedBytes(value, name, expected) {
35
+ if (typeof value !== "string")
36
+ throw new Error(`${name} must be a hex string`);
37
+ const hex = value.startsWith("0x") || value.startsWith("0X") ? value.slice(2) : value;
38
+ if (!/^[0-9a-fA-F]*$/.test(hex))
39
+ throw new Error(`${name} is not hex: ${JSON.stringify(value)}`);
40
+ const buf = Buffer.from(hex, "hex");
41
+ if (buf.length !== expected) {
42
+ throw new Error(`${name} must be ${expected} bytes per section 5.6.2, got ${buf.length}`);
43
+ }
44
+ return buf;
45
+ }
46
+ /** §5.6.3: 32 bytes from a CSPRNG, independent per payment, never derived from anything. */
47
+ export function generateAuthorizationSalt() {
48
+ return "0x" + randomBytes(32).toString("hex");
49
+ }
50
+ /** §5.6.2, the whole construction. Hex inputs are case-insensitive; bytes are hashed. */
51
+ export function computeAuthorizationCommitment(input) {
52
+ const lengths = AUTHORIZATION_METHODS[input.method];
53
+ if (!lengths)
54
+ throw new Error(`unknown authorizationMethod: ${String(input.method)}`);
55
+ const preimage = Buffer.concat([
56
+ DOMAIN_TAG,
57
+ NUL,
58
+ Buffer.from(input.method, "ascii"),
59
+ NUL,
60
+ fixedBytes(input.asset, "asset", lengths.asset),
61
+ fixedBytes(input.authorizer, "authorizer", lengths.authorizer),
62
+ fixedBytes(input.identifier, "identifier", 32),
63
+ fixedBytes(input.salt, "salt", 32),
64
+ ]);
65
+ return "0x" + createHash("sha256").update(preimage).digest("hex");
66
+ }
67
+ /**
68
+ * §5.6.4 steps 1 and 3. Fails closed on both nothing and ambiguity.
69
+ *
70
+ * Two matches is not "probably the first one": if an identifier can repeat across
71
+ * settlements the commitment genuinely opens to several, and the spec says that
72
+ * case does not link. Reporting a guess there would turn a fail-closed design into
73
+ * a false link, which is the one outcome the whole construction exists to avoid.
74
+ */
75
+ export function openAuthorizationCommitment(input) {
76
+ const { payload, salt, asset, candidateIdentifiers } = input;
77
+ const method = payload?.authorizationMethod;
78
+ const commitment = payload?.authorizationCommitment;
79
+ if (!method || !commitment)
80
+ return { linked: false, reason: "receipt carries no commitment" };
81
+ if (!(method in AUTHORIZATION_METHODS)) {
82
+ return { linked: false, reason: `unknown authorizationMethod: ${method}` };
83
+ }
84
+ const hits = [];
85
+ for (const identifier of candidateIdentifiers ?? []) {
86
+ let computed;
87
+ try {
88
+ computed = computeAuthorizationCommitment({
89
+ method: method,
90
+ asset,
91
+ // §5.6.4 step 1: the authorizer comes from the SIGNED payer field, never
92
+ // from a value handed over next to the salt. Otherwise a commitment can be
93
+ // opened against someone else's settlement.
94
+ authorizer: payload.payer,
95
+ identifier,
96
+ salt,
97
+ });
98
+ }
99
+ catch {
100
+ continue;
101
+ }
102
+ if (computed.toLowerCase() === String(commitment).toLowerCase())
103
+ hits.push(identifier);
104
+ }
105
+ if (hits.length === 1)
106
+ return { linked: true, identifier: hits[0] };
107
+ if (hits.length === 0)
108
+ return { linked: false, reason: "no candidate opens this commitment" };
109
+ return { linked: false, reason: `${hits.length} candidates open the same commitment, ambiguous` };
110
+ }
111
+ /**
112
+ * The vector published with the spec, kept here so our own test has an external
113
+ * anchor. The independent verifier in agent-receipt-verify asserts the same
114
+ * constant from its own implementation: two implementations anchored to the same
115
+ * published number cannot drift silently, two anchored to each other can.
116
+ */
117
+ export const SPEC_VECTOR = {
118
+ source: "x402-foundation/x402 PR #3827, specs/extensions/extension-offer-and-receipt.md §5.6.2, commit 0e492d6730bef14b9c722428386c114f3475a914",
119
+ input: {
120
+ method: "eip3009",
121
+ asset: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
122
+ authorizer: "0x857b06519E91e3A54538791bDbb0E22373e36b66",
123
+ identifier: "0x5135a00b531830a13a751f3c48944d7a5fdfde7a3b87f73493591cd77efdef4f",
124
+ salt: "0x10d2ae5f0c8536e82d882bf3d2c31a663597e890ca6c3fede0d278fd2a78f655",
125
+ },
126
+ expected: "0x5d905bbf08a97e04ab551d276d8e94b1abaff7d0737324d360e983c2796af23b",
127
+ };
128
+ //# sourceMappingURL=receipt-authorization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receipt-authorization.js","sourceRoot":"","sources":["../src/receipt-authorization.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /** Fields the caller extracted from a receipt payload. Every one is optional: a comparison is skipped rather than guessed. */
2
+ export interface ReceiptFields {
3
+ /** The paying party, per the receipt. Compared case-insensitively against the claim's buyerAddress. */
4
+ payer?: string;
5
+ /** The settlement this receipt is about. Compared case-insensitively against the claim's settlementRef. */
6
+ transaction?: string;
7
+ /**
8
+ * When the seller issued the receipt. The x402 offer-and-receipt extension defines this as a
9
+ * unix timestamp in SECONDS (§5.2), which is why a number is accepted and treated as such.
10
+ * A string is accepted too, parsed as a date, because a caller may already have normalised it.
11
+ * A receipt issued after the buyer's claim is a disagreement about ordering.
12
+ */
13
+ issuedAt?: string | number;
14
+ }
15
+ export interface ClaimSide {
16
+ buyerAddress: string;
17
+ settlementRef: string;
18
+ timestamp: string;
19
+ offerReceiptHash?: string | undefined;
20
+ }
21
+ export type BindingResult = {
22
+ bound: true;
23
+ digest: string;
24
+ } | {
25
+ bound: false;
26
+ reason: "claim_names_no_receipt";
27
+ digest: string;
28
+ } | {
29
+ bound: false;
30
+ reason: "digest_mismatch";
31
+ digest: string;
32
+ named: string;
33
+ };
34
+ /** sha256 of the artifact exactly as given, lower-case hex, no prefix. No normalisation of any kind. */
35
+ export declare function receiptDigest(artifact: string | Uint8Array): string;
36
+ /** Does this claim actually name this artifact? Recomputes the digest rather than trusting the field. */
37
+ export declare function checkReceiptBinding(claim: ClaimSide, artifact: string | Uint8Array): BindingResult;
38
+ export interface Disagreement {
39
+ field: "payer" | "transaction" | "issuedAt";
40
+ claim: string;
41
+ receipt: string;
42
+ note: string;
43
+ }
44
+ export interface ComparisonResult {
45
+ /** True only when at least one field was comparable and none disagreed. */
46
+ agrees: boolean;
47
+ /** Fields present on both sides that tell different stories. */
48
+ disagreements: Disagreement[];
49
+ /** Fields that could not be compared because the receipt side was absent. Never counted as agreement. */
50
+ notCompared: Array<"payer" | "transaction" | "issuedAt">;
51
+ }
52
+ /**
53
+ * Compare the two accounts field by field. Only fields both sides describe are
54
+ * compared; a missing receipt field is reported as not compared, never as
55
+ * agreement.
56
+ */
57
+ export declare function compareClaimToReceipt(claim: ClaimSide, receipt: ReceiptFields): ComparisonResult;
58
+ //# sourceMappingURL=receipt-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receipt-check.d.ts","sourceRoot":"","sources":["../src/receipt-check.ts"],"names":[],"mappings":"AAwBA,8HAA8H;AAC9H,MAAM,WAAW,aAAa;IAC5B,uGAAuG;IACvG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2GAA2G;IAC3G,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,wBAAwB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAClE;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/E,wGAAwG;AACxG,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAEnE;AAED,yGAAyG;AACzG,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,aAAa,CAOlG;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,OAAO,GAAG,aAAa,GAAG,UAAU,CAAC;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,2EAA2E;IAC3E,MAAM,EAAE,OAAO,CAAC;IAChB,gEAAgE;IAChE,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,yGAAyG;IACzG,WAAW,EAAE,KAAK,CAAC,OAAO,GAAG,aAAa,GAAG,UAAU,CAAC,CAAC;CAC1D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,GAAG,gBAAgB,CA6ChG"}
@@ -0,0 +1,88 @@
1
+ // receipt-check.ts — compute whether a buyer's claim and the seller's receipt
2
+ // it names actually agree.
3
+ //
4
+ // The claim already carries `offerReceiptHash`, the sha256 of the seller's
5
+ // x402 offer-receipt artifact exactly as transmitted. That binds the two halves
6
+ // by name. It does not say whether they tell the same story: nothing here or
7
+ // anywhere else recomputed the digest against a real artifact, or compared the
8
+ // fields the two sides both describe. Until it does, a contradiction between a
9
+ // buyer's account and the seller's own receipt stays a matter of reading rather
10
+ // than of arithmetic.
11
+ //
12
+ // Deliberately NOT in here: any verdict about who is right. A disagreement is
13
+ // reported as a disagreement. Adjudication belongs to whatever protocol the
14
+ // claim's `externalRefs.disputeContext` names, exactly as that field already
15
+ // states.
16
+ //
17
+ // The receipt is never re-canonicalised, parsed, or re-serialised by us. The
18
+ // caller passes the raw artifact for the digest, and separately passes whatever
19
+ // fields it extracted with its own x402 tooling. That split is the point: this
20
+ // module cannot silently disagree with the spec about wire shape, because it
21
+ // never interprets the wire shape.
22
+ import { createHash } from "node:crypto";
23
+ /** sha256 of the artifact exactly as given, lower-case hex, no prefix. No normalisation of any kind. */
24
+ export function receiptDigest(artifact) {
25
+ return createHash("sha256").update(artifact).digest("hex");
26
+ }
27
+ /** Does this claim actually name this artifact? Recomputes the digest rather than trusting the field. */
28
+ export function checkReceiptBinding(claim, artifact) {
29
+ const digest = receiptDigest(artifact);
30
+ if (claim.offerReceiptHash === undefined)
31
+ return { bound: false, reason: "claim_names_no_receipt", digest };
32
+ if (claim.offerReceiptHash !== digest) {
33
+ return { bound: false, reason: "digest_mismatch", digest, named: claim.offerReceiptHash };
34
+ }
35
+ return { bound: true, digest };
36
+ }
37
+ /**
38
+ * Compare the two accounts field by field. Only fields both sides describe are
39
+ * compared; a missing receipt field is reported as not compared, never as
40
+ * agreement.
41
+ */
42
+ export function compareClaimToReceipt(claim, receipt) {
43
+ const disagreements = [];
44
+ const notCompared = [];
45
+ if (receipt.payer === undefined) {
46
+ notCompared.push("payer");
47
+ }
48
+ else if (receipt.payer.toLowerCase() !== claim.buyerAddress.toLowerCase()) {
49
+ disagreements.push({
50
+ field: "payer",
51
+ claim: claim.buyerAddress,
52
+ receipt: receipt.payer,
53
+ note: "the receipt names a different paying party than the claim was signed for",
54
+ });
55
+ }
56
+ if (receipt.transaction === undefined) {
57
+ notCompared.push("transaction");
58
+ }
59
+ else if (receipt.transaction.toLowerCase() !== claim.settlementRef.toLowerCase()) {
60
+ disagreements.push({
61
+ field: "transaction",
62
+ claim: claim.settlementRef,
63
+ receipt: receipt.transaction,
64
+ note: "the two halves are about different settlements",
65
+ });
66
+ }
67
+ if (receipt.issuedAt === undefined) {
68
+ notCompared.push("issuedAt");
69
+ }
70
+ else {
71
+ const r = typeof receipt.issuedAt === "number" ? receipt.issuedAt * 1000 : Date.parse(receipt.issuedAt);
72
+ const c = Date.parse(claim.timestamp);
73
+ if (!Number.isFinite(r) || Number.isNaN(c)) {
74
+ notCompared.push("issuedAt");
75
+ }
76
+ else if (r > c) {
77
+ disagreements.push({
78
+ field: "issuedAt",
79
+ claim: claim.timestamp,
80
+ receipt: String(receipt.issuedAt),
81
+ note: "the seller issued the receipt after the buyer signed the claim about it",
82
+ });
83
+ }
84
+ }
85
+ const compared = 3 - notCompared.length;
86
+ return { agrees: compared > 0 && disagreements.length === 0, disagreements, notCompared };
87
+ }
88
+ //# sourceMappingURL=receipt-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receipt-check.js","sourceRoot":"","sources":["../src/receipt-check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,181 @@
1
+ /** §5.3, normative. EIP712Domain is omitted on purpose: ethers derives it from the domain object. */
2
+ export declare const RECEIPT_EIP712_TYPES: {
3
+ readonly Receipt: readonly [{
4
+ readonly name: "version";
5
+ readonly type: "uint256";
6
+ }, {
7
+ readonly name: "network";
8
+ readonly type: "string";
9
+ }, {
10
+ readonly name: "resourceUrl";
11
+ readonly type: "string";
12
+ }, {
13
+ readonly name: "payer";
14
+ readonly type: "string";
15
+ }, {
16
+ readonly name: "issuedAt";
17
+ readonly type: "uint256";
18
+ }, {
19
+ readonly name: "transaction";
20
+ readonly type: "string";
21
+ }];
22
+ };
23
+ /** §5.5 step 3. chainId is 1 for every network: it identifies the signing domain, not the settlement chain. */
24
+ export declare const RECEIPT_EIP712_DOMAIN: {
25
+ readonly name: "x402 receipt";
26
+ readonly version: "1";
27
+ readonly chainId: 1;
28
+ };
29
+ /** Only version 1 is defined (§5.2). */
30
+ export declare const RECEIPT_PAYLOAD_VERSION = 1;
31
+ /**
32
+ * Section 5.3, receipt payload version 2: the same type with two fields appended.
33
+ *
34
+ * A SEPARATE constant, not an edit of the one above, and that is the whole point.
35
+ * EIP-712 hashes the field list into the signature, so appending to the v1 type
36
+ * would invalidate every v1 receipt ever signed. Section 5.5 step 2 says a verifier
37
+ * picks the types by payload.version, which only works if both lists still exist.
38
+ *
39
+ * Written against commit 0e492d6730bef14b9c722428386c114f3475a914 of the open
40
+ * receipt-authorization-commitment branch. Pinned because that PR can still move.
41
+ */
42
+ export declare const RECEIPT_EIP712_TYPES_V2: {
43
+ readonly Receipt: readonly [{
44
+ readonly name: "version";
45
+ readonly type: "uint256";
46
+ }, {
47
+ readonly name: "network";
48
+ readonly type: "string";
49
+ }, {
50
+ readonly name: "resourceUrl";
51
+ readonly type: "string";
52
+ }, {
53
+ readonly name: "payer";
54
+ readonly type: "string";
55
+ }, {
56
+ readonly name: "issuedAt";
57
+ readonly type: "uint256";
58
+ }, {
59
+ readonly name: "transaction";
60
+ readonly type: "string";
61
+ }, {
62
+ readonly name: "authorizationMethod";
63
+ readonly type: "string";
64
+ }, {
65
+ readonly name: "authorizationCommitment";
66
+ readonly type: "string";
67
+ }];
68
+ };
69
+ /** Section 5.2. Opt in by passing a commitment; v2 is never chosen for a caller. */
70
+ export declare const RECEIPT_PAYLOAD_VERSION_V2 = 2;
71
+ /** Pick the schema the way section 5.5 step 2 requires: by the version in the payload. */
72
+ export declare function receiptTypesForVersion(version: number): {
73
+ readonly Receipt: readonly [{
74
+ readonly name: "version";
75
+ readonly type: "uint256";
76
+ }, {
77
+ readonly name: "network";
78
+ readonly type: "string";
79
+ }, {
80
+ readonly name: "resourceUrl";
81
+ readonly type: "string";
82
+ }, {
83
+ readonly name: "payer";
84
+ readonly type: "string";
85
+ }, {
86
+ readonly name: "issuedAt";
87
+ readonly type: "uint256";
88
+ }, {
89
+ readonly name: "transaction";
90
+ readonly type: "string";
91
+ }];
92
+ } | {
93
+ readonly Receipt: readonly [{
94
+ readonly name: "version";
95
+ readonly type: "uint256";
96
+ }, {
97
+ readonly name: "network";
98
+ readonly type: "string";
99
+ }, {
100
+ readonly name: "resourceUrl";
101
+ readonly type: "string";
102
+ }, {
103
+ readonly name: "payer";
104
+ readonly type: "string";
105
+ }, {
106
+ readonly name: "issuedAt";
107
+ readonly type: "uint256";
108
+ }, {
109
+ readonly name: "transaction";
110
+ readonly type: "string";
111
+ }, {
112
+ readonly name: "authorizationMethod";
113
+ readonly type: "string";
114
+ }, {
115
+ readonly name: "authorizationCommitment";
116
+ readonly type: "string";
117
+ }];
118
+ } | null;
119
+ export interface ReceiptPayload {
120
+ version: number;
121
+ network: string;
122
+ resourceUrl: string;
123
+ payer: string;
124
+ issuedAt: number;
125
+ /** §5.3: absent means the empty string, because a fixed EIP-712 schema has no absent. */
126
+ transaction: string;
127
+ /** Version 2 only. Both present together, empty strings when unused (section 5.3). */
128
+ authorizationMethod?: string;
129
+ authorizationCommitment?: string;
130
+ }
131
+ export interface ReceiptInput {
132
+ /** CAIP-2, e.g. "eip155:8453". A v1 name such as "base" is rejected rather than guessed at. */
133
+ network: string;
134
+ /** The paid resource. A verifier checks signer authorization against this host (§4.5.1). */
135
+ resourceUrl: string;
136
+ /** Who paid. Commonly an address. */
137
+ payer: string;
138
+ /** Unix seconds. Not milliseconds: a millisecond value would date the receipt to the year 56000. */
139
+ issuedAt: number;
140
+ /** Omit for the privacy-minimal default that §5.4 describes. */
141
+ transaction?: string | undefined;
142
+ /**
143
+ * Section 5.6. Supplying either of these makes the payload version 2. The salt
144
+ * that opens the commitment is deliberately NOT an input here: it must never
145
+ * reach the signed payload (5.6.3), so it travels beside the receipt instead.
146
+ */
147
+ authorizationMethod?: string | undefined;
148
+ authorizationCommitment?: string | undefined;
149
+ }
150
+ export declare function buildReceiptPayload(input: ReceiptInput): ReceiptPayload;
151
+ /** What a signer has to be able to do. An ethers Wallet satisfies it, and so does a remote signer. */
152
+ export interface TypedDataSigner {
153
+ signTypedData(domain: typeof RECEIPT_EIP712_DOMAIN, types: typeof RECEIPT_EIP712_TYPES, value: ReceiptPayload): Promise<string>;
154
+ }
155
+ /**
156
+ * Sign a payload and return the wire artifact as a JSON string.
157
+ *
158
+ * The string is what gets transmitted and what a buyer's `offerReceiptHash`
159
+ * digests, so it is returned already serialised. Handing back an object would
160
+ * invite the caller to re-serialise it, and a different key order is a different
161
+ * digest.
162
+ */
163
+ export declare function issueReceipt(payload: ReceiptPayload, signer: TypedDataSigner): Promise<string>;
164
+ export type RecoveredSigner = {
165
+ ok: true;
166
+ signer: string;
167
+ payload: ReceiptPayload;
168
+ } | {
169
+ ok: false;
170
+ reason: "unparseable" | "unsupported_format" | "malformed" | "bad_signature";
171
+ };
172
+ /**
173
+ * Recover who signed an artifact. This answers signature validity only.
174
+ *
175
+ * §4.5.1 is explicit that validity is not authorization: anyone can sign a
176
+ * receipt for any resourceUrl. Confirming the recovered signer is allowed to
177
+ * speak for that host is a separate step, against a DNS TXT record, a did:web
178
+ * document, or the payTo address, and is not done here.
179
+ */
180
+ export declare function recoverReceiptSigner(artifact: string): RecoveredSigner;
181
+ //# sourceMappingURL=receipt-issue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receipt-issue.d.ts","sourceRoot":"","sources":["../src/receipt-issue.ts"],"names":[],"mappings":"AAoBA,qGAAqG;AACrG,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;CASvB,CAAC;AAEX,+GAA+G;AAC/G,eAAO,MAAM,qBAAqB;;;;CAA8D,CAAC;AAEjG,wCAAwC;AACxC,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;CAM1B,CAAC;AAEX,oFAAoF;AACpF,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C,0FAA0F;AAC1F,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAIrD;AAKD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,yFAAyF;IACzF,WAAW,EAAE,MAAM,CAAC;IACpB,sFAAsF;IACtF,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,YAAY;IAC3B,+FAA+F;IAC/F,OAAO,EAAE,MAAM,CAAC;IAChB,4FAA4F;IAC5F,WAAW,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,oGAAoG;IACpG,QAAQ,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,uBAAuB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9C;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,cAAc,CAgDvE;AAED,sGAAsG;AACtG,MAAM,WAAW,eAAe;IAC9B,aAAa,CACX,MAAM,EAAE,OAAO,qBAAqB,EACpC,KAAK,EAAE,OAAO,oBAAoB,EAClC,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,MAAM,CAAC,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CASpG;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,GACrD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,aAAa,GAAG,oBAAoB,GAAG,WAAW,GAAG,eAAe,CAAA;CAAE,CAAC;AAEhG;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CA4CtE"}